奇妙的安全旅行之国密算法
hi,大家好,我是開發者FTD。今天我們來介紹一下我們國家密碼局制定的加密算法 — 國密算法。
為什么要制定國密算法?
密碼算法是保障信息安全的核心技術,尤其是我國最關鍵的銀行業核心領域長期以來都是沿用MD5、3DES、SHA-256、RSA等這些國際通用的密碼算法體系及相關標準。
隨著金融安全上升到國家安全高度,近年來國家有關機關和監管機構站在國家安全和長遠戰略的高度提出了推動國密算法應用實施、加強行業安全可控的要求。擺脫對國外技術和產品的過度依賴,建設行業網絡安全環境,增強我國行業信息系統的“安全可控”能力顯得尤為必要和迫切。
2010年底,國家密碼管理局公布了我國自主研制的“橢圓曲線公鑰密碼算法”(SM2算法)。為保障重要經濟系統密碼應用安全,國家密碼管理局于2011年發布了《關于做好公鑰密碼算法升級工作的通知》,要求“自2011年3月1日起,在建和擬建公鑰密碼基礎設施電子認證系統和密鑰管理系統應使用SM2算法。自2011年7月1日起,投入運行并使用公鑰密碼的信息系統,應使用SM2算法。”
國密算法簡介
國產密碼算法(國密算法)是指國家密碼局認定的國產商用密碼算法,主要有SM1,SM2,SM3,SM4,密鑰長度和分組長度均為128位。在金融領域目前主要使用公開的SM2、SM3、SM4三類算法,分別是非對稱加密算法、哈希算法和對稱加密算法。
SM1 算法
SM1 為對稱加密算法,其加密強度與AES相當。該算法不公開,調用該算法時,需要通過加密芯片的接口進行調用。
采用該算法已經研制了系列芯片、智能IC卡、智能密碼鑰匙、加密卡、加密機等安全產品,廣泛應用于電子政務、電子商務及國民經濟的各個應用領域(包括國家政務通、警務通等重要領域)。
SM2 算法
SM2 為非對稱加密,基于ECC。該算法已公開。由于該算法基于ECC,故其簽名速度與秘鑰生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一種)安全強度比RSA 2048位高,但運算速度快于RSA。
SM2橢圓曲線公鑰密碼算法是我國自主設計的公鑰密碼算法,包括SM2-1橢圓曲線數字簽名算法,SM2-2橢圓曲線密鑰交換協議,SM2-3橢圓曲線公鑰加密算法,分別用于實現數字簽名密鑰協商和數據加密等功能。SM2算法與RSA算法不同的是,SM2算法是基于橢圓曲線上點群離散對數難題,相對于RSA算法,256位的SM2密碼強度已經比2048位的RSA密碼強度要高。
SM3 算法
SM3雜湊算法是我國自主設計的密碼雜湊算法,適用于商用密碼應用中的數字簽名和驗證消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。為了保證雜湊算法的安全性,其產生的雜湊值的長度不應太短,例如MD5輸出128比特雜湊值,輸出長度太短,影響其安全性。SHA-1算法的輸出長度為160比特,SM3算法的輸出長度為256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
SM4 算法
SM4 無線局域網標準的分組數據算法。
SM4分組密碼算法是我國自主設計的分組對稱密碼算法,用于實現數據的加密/解密運算,以保證數據和信息的機密性。要保證一個對稱密碼算法的安全性的基本條件是其具備足夠的密鑰長度,SM4算法與AES算法具有相同的密鑰長度分組長度128比特,因此在安全性上高于3DES算法。
由于SM1、SM4加解密的分組大小為128bit,故對消息進行加解密時,若消息長度過長,需要進行分組,要消息長度不足,則要進行填充。
國際算法和國密算法的區別
分組密碼算法——國際DES,國產SM4
分組密碼就是將明文數據按固定長度進行分組,然后在同一密鑰控制下逐組進行加密,從而將各個明文分組變換成一個等長的密文分組的密碼。其中二進制明文分組的長度稱為該分組密碼的分組規模。
分組密碼的實現原則如下:
分組密碼的設計基本遵循混淆原則和擴散原則。
混淆原則就是將密文、明文、密鑰三者之間的統計關系和代數關系變得盡可能復雜,使得破解人即使獲得了密文和明文,也無法求出密鑰的任何信息;即使獲得了密文和明文的統計規律,也無法求出明文的任何信息。
擴散原則就是應將明文的統計規律和結構規律散射到相當長的一段統計中去。也就是說讓明文中的每一位影響密文中的盡可能多的位,或者說讓密文中的每一位都受到明文中的盡可能多位的影響。
- DES 算法
DES算法是在美國NSA(國家安全局)資助下由IBM公司開發的密碼算法,其初衷是為政府非機密的敏感信息提供較強的加密保護。它是美國政府擔保的第一種加密算法,并在1977年被正式作為美國聯邦信息處理標準。DES主要提供非軍事性質的聯邦政府機構和私營部門使用,并迅速成為名聲最大,使用最廣的商用密碼算法。
- SM4 算法
2006年我國公布了無限局域網產品使用的SM4密碼算法。這是我國第一次公布自己的商用密碼算法。
國際的DES算法和國產的SM4算法的目的都是為了加密保護靜態儲存和傳輸信道中的數據,主要特性如下:
| 計算基礎 | 二進制 | 二進制 |
| 算法結構 | 使用標準的算術和邏輯運算,先替代后置換,不含非線性變換 | 基本輪函數加迭代,含非線性變換 |
| 加解密算法是否相同 | 是 | 是 |
| 計算輪數 | 16輪(3DES 為 16輪 * 3) | 32輪 |
| 分組長度 | 64位 | 128位 |
| 密鑰長度 | 64位(3DES 為128位) | 128位 |
| 有效密鑰長度 | 56位(3DES 為112位) | 128位 |
| 實現難度 | 易于實現 | 易于實現 |
| 實現性能 | 軟件實現滿,硬件實現快 | 軟件實現和硬件實現都快 |
| 安全性 | 較低(3DES 較高) | 算法較新,還未經過現實檢驗 |
從算法上看,國產SM4算法在計算過程中增加非線性變換,理論上能大大提高其算法的安全性,并且由專業機構進行了密碼分析,民間也對21輪SM4進行了差分密碼分析,結論均為安全性較高。
公鑰密碼算法——國際RSA,國產SM2
公鑰密碼學與其他密碼學完全不同,使用這種方法的加密系統,不僅公開加密算法本身,也公開了加密用的密鑰。
公鑰密碼系統與只使用一個密鑰的對稱傳統密碼不同,算法是基于數學函數而不是基于替換和置換。公鑰密碼學是非對稱的,它使用兩個獨立的密鑰,即密鑰分為公鑰和私鑰,因此稱雙密鑰體制。雙鑰體制的公鑰可以公開,因此稱為公鑰算法。
公鑰算法的出現,給密碼的發展開辟了新的方向。公鑰算法雖然已經歷了20多年的發展,但仍具有強勁的發展勢頭,在鑒別系統和密鑰交換等安全技術領域起著關鍵的作用。
公鑰算法的加密與解密由不同的密鑰完成,并且從加密密鑰得到解密密鑰在計算上是不可行的。通常,公鑰算法的兩個密鑰中任何一個都可以作為加密而另一個用作解密,但不是所有的公鑰算法都是如此。
- RSA 算法
RSA算法由Rivest、Shamir、Adleman于1978年首次發表,是迄今為止最容易理解和實現的公鑰算法,已經受住了多年深入的攻擊,其理論基礎是一種特殊的可逆模冪運算,其安全性基于分解大整數的困難性。
RSA算法既可用于加密,又可用于數字簽名,已得到廣泛采用,并被許多標準化組織(如ISO、ITU、IETF和SWIFT等)接納。目前許多國家標準仍采用RSA算法或它的變型。
- SM2 算法
SM2算法由國家密碼管理局于2010年12月17日發布,全稱為橢圓曲線算法。 橢圓曲線并不是橢圓,之所以稱為橢圓曲線是因為它們是用三次方程來表示的,并且該方程與計算橢圓周長的方程相似。
現今對橢圓曲線研究的時間短,經過許多優秀的數學家的努力,至今一直沒有找到亞指數級算法。正是由于目前所知求解ECDLP的最好方法是指數級的,這使得我們選用SM2算法作加解密及數字簽名時,所要求的密鑰長度比RSA要短得多。
國際的RSA算法和國產的SM2算法的主要特性對比如下:
| 計算結構 | 基于特殊的可逆模冪運算 | 基于橢圓曲線 |
| 計算復雜度 | 亞指數級 | 完全指數級 |
| 相同的安全性能下所需公鑰位數 | 較多 | 較少,160位的SM2與1024位的RSA具有相同的安全等級 |
| 密鑰生成速度 | 慢 | 較RSA算法快百倍以上 |
| 加解密速度 | 一般 | 較快 |
| 安全性難度 | 基于分解大整數的難度 | 基于離散對數問題,ECDLP數學難題 |
摘要算法——國際MD5、SHA256,國產SM3
摘要函數在密碼學中具有重要的地位,被廣泛應用在數字簽名,消息認證,數據完整性檢測等領域。摘要函數通常被認為需要滿足三個基本特性:碰撞穩固性,原根穩固性和第二原根穩固性。
2005年,Wang等人給出了MD5算法和SHA-1算法的碰撞攻擊方法,現今被廣泛應用的MD5算法和SHA-1算法不再是安全的算法。
SM3密碼摘要算法是中國國家密碼管理局2010年公布的中國商用密碼雜湊算法標準。SM3算法適用于商用密碼應用中的數字簽名和驗證,是在SHA-256基礎上改進實現的一種算法。SM3算法采用Merkle-Damgard結構,消息分組長度為512位,摘要值長度為256位。
SM3算法的壓縮函數與SHA-256的壓縮函數具有相似的結構,但是SM3算法的設計更加復雜,比如壓縮函數的每一輪都使用2個消息字。
現今為止,SM3算法的安全性相對較高。
國密算法的應用
商用密碼的應用領域十分廣泛,主要用于對不涉及國家秘密內容但又具有敏感性的內部信息、行政事務信息、經濟信息等進行加密保護。比如:商用密碼可用于企業門禁管理、企業內部的各類敏感信息的傳輸加密、存儲加密,防止非法第三方獲取信息內容;也可用于各種安全認證、網上銀行、數字簽名等。
例如:在門禁應用中,采用SM1算法進行身份鑒別和數據加密通訊,實現卡片合法性的驗證,保證身份識別的真實性。 安全是關系國家、城市信息、行業用戶、百姓利益的關鍵問題。國家密碼管理局針對現有重要門禁系統建設和升級改造應用也提出指導意見,加強芯片、卡片、系統的標準化建設。截止目前,國密門禁系統的升級的案例也逐漸增多,基于自主國產知識產權的CPU卡、CPU卡讀寫設備及密鑰管理系統廣泛受到關注。一些廠商如同方銳安在2009年推出CPU卡安全門禁系列產品,在2010年北京安博會上,該公司再次向業界展示出“御”系列CPU卡門禁系統、TF-DF6000系列安全門禁讀卡器以及基于CPU卡技術的一卡通系統等主流產品和系統。這些廠商是全國推廣的國密門禁產品的先驅者,使“御”系列CPU卡門禁系統廣泛應用于政府、監獄、司法、軍工企業和大型公共智能建筑等高安全領域。
總結
由于國密算法是國家密碼局欽定的加密算法,目前已經逐漸在金融行業開始廣泛使用了,相信在以后的應用中,我們會越來越經常的看到國密算法的身影。大家在以后的學習工作中也需要對國密算法有一定的了解,才能在需要用到的時候能快速的掌握它。
參考
1,國密算法概述
2,關于國密算法 SM1,SM2,SM3,SM4 的筆記
技術人,技術魂,每天肝一篇技術文,ヾ(?°?°?)ノ゙哈哈~
關于作者
-
GitHub:https://github.com/ForTheDevelopers
-
掘金:https://juejin.cn/user/1204720472953022/posts
-
CSDN:https://blog.csdn.net/ForTheDevelopers
-
segmentfault:https://segmentfault.com/u/for_the_developers
聯系作者
-
微信號:ForTheDeveloper
-
公眾號:ForTheDevelopers
總結
以上是生活随笔為你收集整理的奇妙的安全旅行之国密算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟网页行为之实践四
- 下一篇: java response.write_