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