《商密知識》第2期:說說商用密碼的安全性
一、密碼算法安全性的含義 密碼乃國之重器,是保護國家利益的戰略性資源,是網絡安全的核心技術和基礎支撐。根據2017年4月《密碼法》(草案),我國密碼分為核心密碼、普通密碼和商用密碼。核心密碼、普通密碼用于保護國家秘密信息;而商用密碼用于保護不屬于國家秘密的信息。 這樣看來,是不是商用密碼的安全性相對來說比較差呢?不少人有這樣的疑惑。為了弄明白說清楚這個問題,讓我們先從密碼算法安全性的含義本身說起。
關于算法的安全性,密碼學研究中主要采用以下三個術語:
1、無條件安全性(unconditionallysecure) 即使密碼分析者擁有無限的計算資源和密文,都沒有足夠的信息恢復出明文,那么這個算法就具有無條件安全性。 事實上,只有一次一密亂碼本,才是不可破的。對于實際應用的密碼算法都是可破的,只要簡單的一個接一個的去嘗試每種可能的密鑰,并檢查所得明文是否有意義。這種方法稱為蠻力攻擊(brute-force attack)。 香農(Shannon,沒錯,就是那個提出信息熵的“信息論之父”,也是1949年發表現代密碼學奠基之作《保密系統的通信理論》的作者,將保密通信由傳統藝術演變成一門現代科學的大神,以后有空單獨聊)曾經證明了一次一密亂碼本(one-timepad)是不可破解的,此種情形下,密鑰流是完全隨機的、與明文相同長度的比特串,即使給出無限多的資源仍然不可破。雖然其具有理論上的絕對安全性,但考慮到密鑰傳輸的代價,它又是不實用的。想想是不是這個理:既然能夠安全地傳輸同等長度的密鑰,何不直接安全地傳輸明文呢?所以,也可以這么說,實際上不存在不可破譯的密碼。 目前也有觀點提出,采用量子保密通信來傳輸密鑰,可以實現絕對安全的一次一密的密碼系統,這個話題太大,暫且不表。本文的粗暴結論是這僅僅是又一個理論上的可能,實用性上還非常非常非常漫長。
2、計算安全性(computationallysecure) 在實際中,無條件安全的系統是不存在額,我們通常所說的算法安全性,就是指算法的計算安全性。如果算法用現在或者將來的可用資源都不能破譯,那么,這個算法被認為是計算安全的。也就是說,算法的計算安全性是可以通過計算復雜性(或者說攻擊復雜性)來衡量, 通常來講,可以用三種方式來衡量對算法的計算復雜性: 1)數據復雜性:用于攻擊算法所需要輸入的數據量。 2)時間復雜性:以執行某特定的基本步驟所需時間為單元,完成攻擊過程所需要的總時間單元數。 3)空間復雜性:以某特定的基本存儲空間為單元,完成攻擊過程所需要的總存儲單元數。 拿時間復雜性舉例。如果某算法的時間復雜性是2的128次方,那么破譯這個算法也需要2的128次方次運算(這些運算可能非常復雜和耗時)。假設攻擊者擁有足夠的計算速度去完成每秒100萬次的運算,并且用100萬個并行處理器完成這個任務,那么仍然需要花費10的19次方年以上才能找到密鑰,(而這是宇宙年齡的10億倍)。因此,可認為該算法目前具有計算安全性。 某些時候,這三種復雜度是相關聯的,比如,存儲空間越大時,攻擊所需的時間可能越快。由于計算能力在不斷發展,因此,幾年前安全的密碼算法,可能會在多少年之后變得不再安全。因此,對算法定期進行安全性評估是非常有必要的。 在實際應用系統中,當破譯某個密碼算法的所需的計算時間或成本費用遠遠超過信息有用的生命周期或者信息本身的價值時,那算法破譯本身就沒有意義了。這時也可以認為該算法具有計算安全性。
3、可證明安全性(Provable security) 算法的安全性可規約為某個經過深入研究的數學難題(如大整數素因子分解、計算離散對數等),數學難題被證明求解困難。這個話題也比較復雜,盡管自己多次學習,但仍未能深明要義,只記得這些困難問題雖然本身的安全性并沒有得到完全證明,但多數目前仍然是計算安全的,可以作為算法或協議涉及的基礎,感興趣的可以查閱“P問題、NP問題、NP-hard問題、NPC問題”等文章。 不過,當量子計算出現之后,針對目前使用的RSA、DH和ECC等公鑰算法的計算安全性不再有理論保證,因此,密碼界正在開展抗量子密碼研究,以期在量子計算機成為現實攻擊工具之前找到新的出路。 從上述分析可以看出,無論核心密碼、普通密碼和商用密碼,其采用的密碼算法的安全性都是客觀的科學問題,不存在哪類算法更加安全的說法。 既然如此,為什么包括我們國家在內的很多國家都要對密碼系統進行分類管理呢?其實,一個密碼系統的安全性,除了密碼算法的安全性之外,還涉及密鑰管理、密碼工程實現等諸多方面的問題。歡迎持續關注,也歡迎把你的問題、意見或建議留下來,一起來探討。
二、商密產品的安全性 前面我們已經對商密算法的安全性有了一定的了解,不少人還有這樣的疑問,既然商密算法都公開了,那為什么商密產品跟普通的網絡安全產品不一樣,需要獲得專門的產品型號證書才能銷售使用呢?從技術層面分析,密碼設備自身的安全性對于信息系統安全來說至關重要,商密產品型號檢測是確保密碼設備安全性符合要求的基礎手段。下面我們就來看看密碼設備的安全性都有哪些要求吧。
1、密碼產品的分級標準 商用密碼產品按形態可以劃分為軟件、芯片、模塊、板卡、整機和系統等六大類。 目前,密碼芯片的安全性要求及檢測遵循《GM/T 0008-2012 安全芯片密碼檢測準則》,其中將密碼芯片的安全等級從低到高分為一級、二級和三級。 密碼芯片之外的其它各類產品均遵循《GM/T 0028-2014 密碼模塊安全技術要求》和《GM/T 0039-2014 密碼模塊安全檢測要求》,將密碼模塊的安全等級從低到高分為一級、二級、三級和四級。0028標準中所謂的“密碼模塊”是一個專有詞匯,特指實現了密碼功能的硬件、軟件和/或固件的集合,包含在明確的密碼邊界以內,不是僅僅以背板形態出現、不具備完整密碼功能的產品。也就是說,六大類商密產品中,除芯片和系統之外的其它四類產品均可視為“密碼模塊”,其安全性可劃分為四級。
2、安全等級的含義 密碼產品的安全等級越高,其自身的安全防護能力就越強,密碼產品的安全性就越高。那么密碼產品的安全性是如何度量和區分出來的呢?國密0028標準明確指出,“安全要求從安全目標的最低等級開始,隨著安全目標等級的遞增而增加”。也就是說,密碼產品的安全等級,表明了密碼產品達到以下安全目標的能力水平。等級越高,滿足安全目標的能力越強: 安全功能:使用并正確實現核準的安全功能,以保護敏感信息。核準的安全功能包括分組密碼、序列密碼、非對稱密碼、消息鑒別碼、雜湊函數、實體鑒別、密鑰建立和隨機比特生成器。 授權控制:防止非授權地操作或使用密碼模塊;防止非授權地泄露密碼模塊的內容,其中包括關鍵安全參數; 非授權訪問的檢測:防止對密碼模塊和密碼算法進行非授權或檢測不到的修改,包括非授權地修改、替換、插入和刪除敏感安全參數; 運行狀態指示:提供密碼模塊運行狀態的指示; 核準的工作模式:保證密碼模塊在核準的工作模式下能夠正確運行; 錯誤檢測:檢測出密碼模塊運行中的錯誤,防止這些錯誤非授權地公開、修改、替換或使用關鍵安全參數,或者非授權地修改或替換公開安全參數; 設計分發和實現:保證正確地設計、分配和實現密碼模塊。
3、分級要求 國密0028標準具體從十一個域分別提出了四個等級的安全要求,包括: 密碼模塊規格:密碼模塊的類型(硬件模塊、軟件模塊、固件模塊、混合軟件模塊、混合固件模塊)、邊界、工作模式; 密碼模塊接口:接口類型、定義(數據、控制、狀態、電源)、可信信道 角色、服務和鑒別:角色(密碼主管、用戶、維護員)、服務(顯示版本、狀態、自測試、安全功能、置零)、旁路能力(繞開密碼功能)、自啟動密碼服務能力、鑒別(角色、身份、多因素) 軟件/固件安全:完整性保護、加載安全 運行環境:密碼模塊運行所依賴的軟件、固件、硬件等;運行環境類型(不可修改、收限制、可修改) 物理安全:三類物理實體(單芯片、多芯片嵌入式、多芯片獨立式);外殼、抗探測、環境失效 非入侵式安全:能量分析、計時分析、電磁泄露 敏感安全參數管理:生成、建立、輸入輸出、存儲、置零 自測試:運行前自測試、條件自測試、周期性自測試 生命周期保障:版本配置管理、設計一致性、有限狀態模型、開發、廠商測試、配送與操作、生命終止、指南文檔 以及對其他攻擊的緩解:能量分析、計時分析、電磁泄露 感興趣的請參閱標準文稿,所有已發布的國密標準均可以在密標委網站上訪問到。 綜上,密碼算法、協議和機制的安全性與可靠性直接取決于實現它們的密碼產品。關于密碼產品的安全性,目前已經有了比較系統的級別劃分,也有相對明確的安全技術要求和檢測要求。 密碼產品的安全等級越高,其自身的安全防護能力就越強。不過值得注意得是,安全級別越高,其防護成本也越高,目前,我國絕大部分密碼產品的安全級別在二級的水平。關于信息系統如何選擇相應級別的密碼產品,在《GM/T 0054-2018 信息系統密碼應用基本要求》中已經有了相應的規定,此處暫不贅述。歡迎后續共同探討。
三、密碼系統的安全性 看了前兩篇文章,大家對我國商密算法和商密產品的安全性是不是很有信心了!下面我們來說說一個安全有效的商用密碼系統應該包括哪些內容。 本文所謂“密碼系統”,特指國家《密碼法》(草案征求意見稿)中提到的“密碼保障系統”。(第十二條關鍵信息基礎設施應當依照法律、法規的規定和密碼相關國家標準的強制性要求使用密碼進行保護,同步規劃、同步建設、同步運行密碼保障系統。) 密碼保障系統能否有效抵御網絡攻擊,能否有效保護數據和信息安全,關鍵在于密碼的使用是否合規、正確、有效。密碼使用的合規性、正確性、有效性,涉及密碼算法、密碼協議、密碼產品、密鑰體系、密碼技術體系設計、密碼與應用的結合、物理環境與管理手段等諸多方面。(此段摘抄自《商用密碼知識與政策干部讀本》) 因此,由專業人員結合業務應用實際情況進行密碼保障系統的設計,是確保系統安全性的前提。通常,一個完整的密碼保障系統的至少應包括以下內容:
1、密碼保障需求分析 分析網絡和業務信息系統的現狀和安全需求,結合系統安全目標,提出需要基于密碼技術實現的安全功能需求和相關性能要求。
2、密碼保障系統總體設計 在密碼需求分析的基礎上,首先應明確密碼保障系統的設計目標、設計原則和設計依據。然后可分別從技術體系、邏輯框架、系統組成、部署結構等維度分別對保障系統的頂層設計思路進行闡述,以確保系統整體設計安全合規,且滿足使用需求。
3、密碼保障系統技術方案 對密碼保障系統提供的密碼功能或服務,以及如何安全可靠地提供這些功能服務進行具體設計。應包括如下要點: 密碼應用設計 對系統提供的密碼功能(比如:身份認證、簽名驗簽、數據加解密、數據完整性、實體行為不可否認性等基礎密碼功能)具體應用場景和方式進行設計,必要時畫出相應的密碼功能應用流程。某些應用安全功能(比如數據隔離、實體防偽等)看似與密碼無關,實際上也可以基于基礎密碼機制進行組合設計而實現。 主要密碼協議設計 對系統中涉及的主要密碼協議過程進行描述。原則上盡量采用已有標準密碼協議,如果為系統定制密碼協議,則必須由專業人員進行設計,并通過專門的安全性評估。 算法配用 明確每個密碼功能配用的算法種類,包括SM1、SM2、SM3、SM4、SM7、SM9等。特殊情況也可以設計專用的算法。 密鑰配用與管理 通常以表格形式闡述密鑰種類及相互關系,并對密鑰全生命周期管理進行設計(產生、分發、存儲、使用、更新、銷毀、恢復、歸檔等)。 密碼產品設計 對密碼保障系統中采用的密碼產品或服務進行設計,原則上盡量選用已有商密型號的密碼產品,如需采用新的密碼產品,仍需要研制后提交檢測獲取型號。
4、密碼管理措施 提出密碼保障系統安全可靠運行所需的管理措施,包括相關人員、制度、業務等方面的管理措施。 至此,從密碼算法、密碼產品到密碼系統,我們有了一個基礎的認識,那當前各個重要領域正在如火如荼推進的密碼應用,又是什么情況呢?敬請期待下篇小作。
四、密碼應用的安全性 近年來,“密碼應用”成為了高頻詞,常見于網絡新聞、政策文件、技術標準等各個場合,今天我們就來扒一扒這幾個字。
(一)“密碼應用”的上下文 首先,是不是有個看似明白卻又含糊的問題,究竟什么是密碼應用呢?“密碼應用”跟“密碼系統”是什么關系呢?查遍資料,也沒有個定義和說法。不過沒關系,我們先從網上搜幾個上下文感受一下。 國辦發〔2014〕6號文 國務院辦公廳轉發密碼局等部門關于《金融領域密碼應用指導意見》的通知 廳字[2018]36號關于印發《金融和重要領域密碼應用與創新發展工作規劃(2018-2022年)》的通知 《GM/T 0054-2018 信息系統密碼應用基本要求》本標準規定了信息系統商用密碼應用的基本要求。本標準適用于指導、規范和評估系統中的商用密碼應用。物理和環境安全密碼應用總則如下:采用密碼技術實施對重要場所、監控設備等的物理訪問控制…… 《商用密碼應用安全性評估管理辦法(評估)》本辦法所稱商用密碼應用安全性評估,是指在采用密碼技術、產品和服務集成建設的網絡和信息系統中,對其密碼應用的合規性、正確性和有效性等進行評估。……重要領域網絡和信息系統規劃階段,責任單位應當依據商用密碼應用安全性有關標準,制定商用密碼應用建設方案……
(二)“密碼應用”與“密碼系統”的涵義比較 從上述主要上下文,我們大致能提煉出以下幾個意思: 多數情況下,商用密碼應用=密碼應用 多數情況下,密碼應用≠密碼系統。也就是說,盡管“應用”常常被認為是“應用系統”的簡稱,但“密碼應用”很多時候并不是“密碼應用系統”的簡稱。 如果說密碼系統(即密碼保障系統,參見本號前文)是一個基于密碼技術和產品,提供真實性、完整性、機密性、不可抵賴性等安全功能的系統;那么密碼應用則可以看作是在網絡和信息系統中采用密碼技術、產品和服務提供相應安全功能的過程和行動。 特別需要說明的是,以上僅僅是密小白基于當前商用密碼應用的大背景,對密碼應用和密碼系統的簡要辨析。在具體文獻和應用場景中,它們的確切含義,可能有差異。
(三)密碼應用安全性 基于上述對“密碼應用”涵義的認識,我們就可以認為, “密碼應用安全性”指的是在采用密碼技術、產品和服務為網絡和信息系統提供相應安全功能的過程和行動中,如何確保密碼的使用合規、正確、有效。關于密碼應用安全性,已有如下規定需要遵循: 《GM/T0054-2018 信息系統密碼應用基本要求》,是關于不同等保級別中如何應用密碼技術的標準.本號前面有專文簡述,后續會擇機對部分內容進行具體分析。 《商用密碼應用安全性評估管理辦法(試行)》,要求重要領域網絡和信息系統的責任單位應當在系統規劃、建設和運行階段,組織開展商用密碼應用安全性評估工作,并對評估程序和監督管理辦法做出了具體規定。 簡單小結一下,通過幾篇文章的簡要介紹,我們已經知道了,在我國重要領域網絡和信息系統的建設、使用和管理中,需要采用國家批準的密碼算法,選用經過核準的密碼產品,設計安全的密碼應用方案,并通過商用密碼應用安全性評估。 相信經過大家的共同努力,“用上密碼、用對密碼、用好密碼”將成為重要領域的安全共識,密碼在保障網絡安全中的核心支撐作用也將得到更加充分的體現!