十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
mt4的otp密碼是(OTP,One-Time Password)又稱(chēng)一次性密碼,是使用密碼技術(shù)實(shí)現(xiàn)的在客戶(hù)端和服務(wù)器之間通過(guò)共享秘密的一種認(rèn)證技術(shù)
創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營(yíng)銷(xiāo),產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿(mǎn)足企業(yè)的營(yíng)銷(xiāo)需求!創(chuàng)新互聯(lián)公司具備承接各種類(lèi)型的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作項(xiàng)目的能力。經(jīng)過(guò)10多年的努力的開(kāi)拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶(hù)的一致好評(píng)。
目前,國(guó)際上動(dòng)態(tài)口令OTP有2大主流算法,一個(gè)是RSA SecurID ,一個(gè)是OATH組織的OTP算法。如果在國(guó)內(nèi)來(lái)說(shuō)的話(huà),另一個(gè)是國(guó)密的OTP密碼算法。RSA SecurID使用AES對(duì)稱(chēng)算法,OATH使用HMAC算法,國(guó)密算法使用的國(guó)密SM1(對(duì)稱(chēng))和SM3(HASH)算法。
隨著智能手機(jī)普及率越來(lái)越高,雖然目前國(guó)內(nèi)智能手機(jī)市場(chǎng)已經(jīng)出現(xiàn)飽和,但并不代表智能手機(jī)產(chǎn)品本身就已經(jīng)無(wú)懈可擊,事實(shí)上,目前主流智能手機(jī)產(chǎn)品仍存在很多問(wèn)題有待解決,對(duì)用戶(hù)隱私信息安全的保護(hù)問(wèn)題就是其中之一。但是,金立手機(jī)即將發(fā)布的“安全手機(jī)”,就可以達(dá)到硬件信息加密的目的。在這款手機(jī)的使用的技術(shù)中,有提到過(guò)一個(gè)技術(shù):硬件加密
?
國(guó)密算法硬件加密到底是什么?今天,小編就給大家進(jìn)行一下簡(jiǎn)單的科普!
國(guó)密算法由國(guó)家密碼局發(fā)布的一系列算法、其中包括了對(duì)稱(chēng)加密算法,橢圓曲線(xiàn)非對(duì)稱(chēng)加密算法,雜湊算法。這里以某款手機(jī)為例:這款手機(jī)加密芯片具體包含SM1、SM2、SM3、SM4、SSF33等主流國(guó)密算法。
其中,SM1為對(duì)稱(chēng)分組加密算法,分組長(zhǎng)度和密鑰長(zhǎng)度都為128位,算法安全保密強(qiáng)度及相關(guān)軟硬件實(shí)現(xiàn)性能與美國(guó)AES加密標(biāo)準(zhǔn)相當(dāng),該算法不公開(kāi),僅以IP核的形式存在于芯片中。
SM2是國(guó)家密碼管理局于2010年12月17日發(fā)布的橢圓曲線(xiàn)公鑰密碼算法,也是非對(duì)稱(chēng)算法,加密解密一對(duì)密鑰,即一個(gè)密鑰加密,另一個(gè)密鑰解密。密鑰長(zhǎng)度256位。目前算法已公開(kāi),使用著名的ECC,即橢圓曲線(xiàn)算法。靠的就是計(jì)算橢圓曲線(xiàn)的復(fù)雜度來(lái)保障安全性。
SM3密碼摘要算法是中國(guó)國(guó)家密碼管理局2010年公布的中國(guó)商用密碼雜湊算法標(biāo)準(zhǔn),也就是密碼雜湊算法,雜湊值長(zhǎng)度為32字節(jié),此算法適用于商用密碼應(yīng)用中的數(shù)字簽名和驗(yàn)證,消息認(rèn)證碼的生成與驗(yàn)證以及隨機(jī)數(shù)的生成,可滿(mǎn)足多種密碼應(yīng)用的安全需求。該算法中,對(duì)輸入長(zhǎng)度小于2的64次方的比特消息,經(jīng)過(guò)填充和迭代壓縮,生成雜湊值,雜湊值長(zhǎng)度為256比特。
SM7算法也是一種分組密碼算法,分組長(zhǎng)度為128比特,密鑰長(zhǎng)度為128比特。SM7的算法文本目前沒(méi)有公開(kāi)發(fā)布。SM7適用于非接IC卡應(yīng)用包括門(mén)禁卡等身份識(shí)別類(lèi)應(yīng)用,票務(wù)類(lèi)應(yīng)用,支付與通卡類(lèi)應(yīng)用,如校園一卡通等。
SSF33算法是以128位分組為單位進(jìn)行運(yùn)算,密鑰長(zhǎng)度為16字節(jié),該算法也可以用于安全報(bào)文傳送,和MAC機(jī)制密文運(yùn)算。使用SSF33算法和基于3-DES(三重?cái)?shù)據(jù)加密算法)的對(duì)稱(chēng)加密機(jī)制使用相同長(zhǎng)度的密鑰,能夠同原有的基于3-DES的密鑰管理兼容,其區(qū)別在于分組長(zhǎng)度不同。SSF33的具體算法機(jī)制并未公開(kāi)。
對(duì)于這些高大上的知識(shí),相信大多數(shù)的讀者還是看得云里霧里。總而言之,如果你是一位偏向于商務(wù)的用戶(hù),或許對(duì)智能手機(jī)的安全性能有著很高的需求,或者對(duì)個(gè)人隱私信息的安全非常在意,選用一款配備硬件加密技術(shù)的手機(jī)就顯得十分重要了,現(xiàn)階段,手機(jī)硬件加密是有所欠缺的,但小編也相信,以后會(huì)有更多的手機(jī)廠(chǎng)商會(huì)采用這種硬件加密技術(shù),我們的隱私也會(huì)越來(lái)越安全!
##
密碼技術(shù)在網(wǎng)絡(luò)傳輸安全上的應(yīng)用
隨著互聯(lián)網(wǎng)電子商務(wù)和網(wǎng)絡(luò)支付的飛速發(fā)展,互聯(lián)網(wǎng)安全已經(jīng)是當(dāng)前最重要的因素之一。作為一名合格的軟件開(kāi)發(fā)工程師,有必要了解整個(gè)互聯(lián)網(wǎng)是如何來(lái)保證數(shù)據(jù)的安全傳輸?shù)?,本篇文章?duì)網(wǎng)絡(luò)傳輸安全體系以及涉及到的算法知識(shí)做了一個(gè)簡(jiǎn)要的介紹,希望大家能夠有一個(gè)初步的了解。
###密碼技術(shù)定義
簡(jiǎn)單的理解,密碼技術(shù)就是編制密碼和破譯密碼的一門(mén)技術(shù),也即是我們常說(shuō)的加密和解密。常見(jiàn)的結(jié)構(gòu)如圖:
其中涉及到的專(zhuān)業(yè)術(shù)語(yǔ):
1.秘鑰:分為加密秘鑰和解密秘鑰,兩者相同的加密算法稱(chēng)為對(duì)稱(chēng)加密,不同的稱(chēng)為非對(duì)稱(chēng)加密;
2.明文:未加密過(guò)的原文信息,不可以被泄露;
3.密文:經(jīng)過(guò)加密處理后的信息,無(wú)法從中獲取有效的明文信息;
4.加密:明文轉(zhuǎn)成密文的過(guò)程,密文的長(zhǎng)度根據(jù)不同的加密算法也會(huì)有不同的增量;
5.解密:密文轉(zhuǎn)成明文的過(guò)程;
6.加密/解密算法:密碼系統(tǒng)使用的加密方法和解密方法;
7.攻擊:通過(guò)截獲數(shù)據(jù)流、釣魚(yú)、木馬、窮舉等方式最終獲取秘鑰和明文的手段。
###密碼技術(shù)和我們的工作生活息息相關(guān)
在我們的日常生活和工作中,密碼技術(shù)的應(yīng)用隨處可見(jiàn),尤其是在互聯(lián)網(wǎng)系統(tǒng)上。下面列舉幾張比較有代表性的圖片,所涉及到的知識(shí)點(diǎn)后面都會(huì)一一講解到。
1.12306舊版網(wǎng)站每次訪(fǎng)問(wèn)時(shí),瀏覽器一般會(huì)提示一個(gè)警告,是什么原因?qū)е碌模?這樣有什么風(fēng)險(xiǎn)呢?
2.360瀏覽器瀏覽HTTPS網(wǎng)站時(shí),點(diǎn)開(kāi)地址欄的小鎖圖標(biāo)會(huì)顯示加密的詳細(xì)信息,比如百度的話(huà)會(huì)顯示```AES_128_GCM、ECDHE_RSA```,這些是什么意思?
3.在Mac系統(tǒng)的鑰匙串里有很多的系統(tǒng)根證書(shū),展開(kāi)后有非常多的信息,這些是做什么用的?
4.去銀行開(kāi)通網(wǎng)上支付都會(huì)附贈(zèng)一個(gè)U盾,那U盾有什么用呢?
##如何確保網(wǎng)絡(luò)數(shù)據(jù)的傳輸安全
接下來(lái)我們從實(shí)際場(chǎng)景出發(fā),以最常見(jiàn)的客戶(hù)端Client和服務(wù)端Server傳輸文件為例來(lái)一步步了解整個(gè)安全體系。
####1. 保密性
首先客戶(hù)端要把文件送到服務(wù)端,不能以明文形式發(fā)送,否則被黑客截獲了數(shù)據(jù)流很容易就獲取到了整個(gè)文件。也就是文件必須要確保保密性,這就需要用到對(duì)稱(chēng)加密算法。?
** 對(duì)稱(chēng)加密: **加密和解密所使用的秘鑰相同稱(chēng)為對(duì)稱(chēng)加密。其特點(diǎn)是速度快、效率高,適用于對(duì)較大量的數(shù)據(jù)進(jìn)行加密。常見(jiàn)的對(duì)稱(chēng)加密算法有DES、3DES、AES、TDEA、RC5等,讓我們了解下最常見(jiàn)的3DES和AES算法:
** DES(Data Encryption Standard): **1972年由美國(guó)IBM研制,數(shù)學(xué)原理是將明文以8字節(jié)分組(不足8位可以有不同模式的填充補(bǔ)位),通過(guò)數(shù)學(xué)置換和逆置換得到加密結(jié)果,密文和明文長(zhǎng)度基本相同。秘鑰長(zhǎng)度為8個(gè)字節(jié),后有了更安全的一個(gè)變形,使用3條秘鑰進(jìn)行三次加密,也就是3DES加密。
**3DES:**可以理解為對(duì)明文進(jìn)行了三次DES加密,增強(qiáng)了安全程度。
** AES(Advanced Encryption Standard): **2001年由美國(guó)發(fā)布,2002年成為有效標(biāo)準(zhǔn),2006年成為最流行的對(duì)稱(chēng)加密算法之一。由于安全程度更高,正在逐步替代3DES算法。其明文分組長(zhǎng)度為16字節(jié),秘鑰長(zhǎng)度可以為16、24、32(128、192、256位)字節(jié),根據(jù)秘鑰長(zhǎng)度,算法被稱(chēng)為AES-128、AES-192和AES-256。
對(duì)稱(chēng)加密算法的入?yún)⒒绢?lèi)似,都是明文、秘鑰和模式三個(gè)參數(shù)??梢酝ㄟ^(guò)網(wǎng)站進(jìn)行模擬測(cè)試:[]()。其中的模式我們主要了解下ECB和CBC兩種簡(jiǎn)單模式,其它有興趣可自行查閱。
** ECB模式(Electronic Codebook Book): **這種模式是將明文分成若干小段,然后對(duì)每一段進(jìn)行單獨(dú)的加密,每一段之間不受影響,可以單獨(dú)的對(duì)某幾段密文進(jìn)行解密。
** CBC模式(Cipher Block Chaining): **這種模式是將明文分成若干小段,然后每一段都會(huì)和初始向量(上圖的iv偏移量)或者上一段的密文進(jìn)行異或運(yùn)算后再進(jìn)行加密,不可以單獨(dú)解密某一斷密文。
** 填充補(bǔ)位: **常用為PKCS5Padding,規(guī)則為缺幾位就在后面補(bǔ)幾位的所缺位數(shù)。,比如明文數(shù)據(jù)為```/x01/x01/x01/x01/x01/x01```6個(gè)字節(jié),缺2位補(bǔ)```/x02```,補(bǔ)完位```/x01/x01/x01/x01/x01/x01/x02/x02```。解密后也會(huì)按照這個(gè)規(guī)則進(jìn)行逆處理。需要注意的是:明文為8位時(shí)也需要在后面補(bǔ)充8個(gè)```/x08```。
####2. 真實(shí)性
客戶(hù)端有了對(duì)稱(chēng)秘鑰,就需要考慮如何將秘鑰送到服務(wù)端,問(wèn)題跟上面一樣:不能以明文形式直接傳輸,否則還是會(huì)被黑客截獲到。這里就需要用到非對(duì)稱(chēng)加密算法。
** 非對(duì)稱(chēng)加密: **加密和解密秘鑰不同,分別稱(chēng)為公開(kāi)秘鑰(publicKey)和私有秘鑰(privateKey)。兩者成對(duì)出現(xiàn),公鑰加密只能用私鑰解密,而私鑰加密也只能用公鑰加密。兩者不同的是:公鑰是公開(kāi)的,可以隨意提供給任何人,而私鑰必須保密。特點(diǎn)是保密性好,但是加密速度慢。常見(jiàn)的非對(duì)稱(chēng)加密算法有RSA、ECC等;我們了解下常見(jiàn)的RSA算法:
** RSA(Ron Rivest、Adi Shamir、Leonard Adleman): **1977年由麻省理工學(xué)院三人提出,RSA就是他們?nèi)齻€(gè)人的姓氏開(kāi)頭字母拼在一起組成的。數(shù)學(xué)原理是基于大數(shù)分解。類(lèi)似于```100=20x5```,如果只知道100的話(huà),需要多次計(jì)算才可以試出20和5兩個(gè)因子。如果100改為極大的一個(gè)數(shù),就非常難去試出真正的結(jié)果了。下面是隨機(jī)生成的一對(duì)公私鑰:
這是使用公鑰加密后結(jié)果:
RSA的這種特性就可以保證私鑰持有者的真實(shí)性,客戶(hù)端使用公鑰加密文件后,黑客就算截獲到數(shù)據(jù)因?yàn)闆](méi)有私鑰也是無(wú)法解密的。
** Tips: **
+** 不使用對(duì)稱(chēng)加密,直接用RSA公私鑰進(jìn)行加密和解密可以嗎? **
答案:不可以,第一是因?yàn)镽SA加密速度比對(duì)稱(chēng)加密要慢幾十倍甚至幾百倍以上,第二是因?yàn)镽SA加密后的數(shù)據(jù)量會(huì)變大很多。
+** 由服務(wù)端生成對(duì)稱(chēng)秘鑰,然后用私鑰加密,客戶(hù)端用公鑰解密這樣來(lái)保證對(duì)稱(chēng)秘鑰安全可行嗎? **
答案:不可行,因?yàn)楣€是公開(kāi)的,任何一個(gè)人都可以拿到公鑰解密獲取對(duì)稱(chēng)秘鑰。
####3. 完整性
當(dāng)客戶(hù)端向服務(wù)端發(fā)送對(duì)稱(chēng)秘鑰加密后的文件時(shí),如果被黑客截獲,雖然無(wú)法解密得到對(duì)稱(chēng)秘鑰。但是黑客可以用服務(wù)端公鑰加密一個(gè)假的對(duì)稱(chēng)秘鑰,并用假的對(duì)稱(chēng)秘鑰加密一份假文件發(fā)給服務(wù)端,這樣服務(wù)端會(huì)仍然認(rèn)為是真的客戶(hù)端發(fā)送來(lái)的,而并不知道閱讀的文件都已經(jīng)是掉包的了。
這個(gè)問(wèn)題就需要用到散列算法,也可以譯為Hash。常見(jiàn)的比如MD4、MD5、SHA-1、SHA-2等。
** 散列算法(哈希算法): **簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。而且該過(guò)程是不可逆的,無(wú)法通過(guò)摘要獲得原文。
** SHA-1(Secure Hash Algorithm 1): **由美國(guó)提出,可以生成一個(gè)20字節(jié)長(zhǎng)度的消息摘要。05年被發(fā)現(xiàn)了針對(duì)SHA-1的有效攻擊方法,已經(jīng)不再安全。2010年以后建議使用SHA-2和SHA-3替代SHA-1。
** SHA-2(Secure Hash Algorithm 2): **其下又分為六個(gè)不同算法標(biāo)準(zhǔn):SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA512/256。其后面數(shù)字為摘要結(jié)果的長(zhǎng)度,越長(zhǎng)的話(huà)碰撞幾率越小。SHA-224的使用如下圖:
客戶(hù)端通過(guò)上面的散列算法可以獲取文件的摘要消息,然后用客戶(hù)端私鑰加密后連同加密的文件發(fā)給服務(wù)端。黑客截獲到數(shù)據(jù)后,他沒(méi)有服務(wù)端私鑰無(wú)法獲取到對(duì)稱(chēng)秘鑰,也沒(méi)有客戶(hù)端私鑰無(wú)法偽造摘要消息。如果再像上面一樣去掉包文件,服務(wù)端收到解密得到摘要消息一對(duì)比就可以知道文件已經(jīng)被掉包篡改過(guò)了。
這種用私鑰對(duì)摘要消息進(jìn)行加密的過(guò)程稱(chēng)之為數(shù)字簽名,它就解決了文件是否被篡改問(wèn)題,也同時(shí)可以確定發(fā)送者身份。通常這么定義:
** 加密: **用公鑰加密數(shù)據(jù)時(shí)稱(chēng)為加密。
** 簽名: **用私鑰加密數(shù)據(jù)時(shí)稱(chēng)為簽名。
####4. 信任性
我們通過(guò)對(duì)稱(chēng)加密算法加密文件,通過(guò)非對(duì)稱(chēng)加密傳輸對(duì)稱(chēng)秘鑰,再通過(guò)散列算法保證文件沒(méi)被篡改過(guò)和發(fā)送者身份。這樣就安全了嗎?
答案是否定的,因?yàn)楣€是要通過(guò)網(wǎng)絡(luò)送到對(duì)方的。在這期間如果出現(xiàn)問(wèn)題會(huì)導(dǎo)致客戶(hù)端收到的公鑰并不一定是服務(wù)端的真實(shí)公鑰。常見(jiàn)的** 中間人攻擊 **就是例子:
** 中間人攻擊MITM(Man-in-the-MiddleAttack): **攻擊者偽裝成代理服務(wù)器,在服務(wù)端發(fā)送公鑰證書(shū)時(shí),篡改成攻擊者的。然后收到客戶(hù)端數(shù)據(jù)后使用攻擊者私鑰解密,再篡改后使用攻擊者私鑰簽名并且將攻擊者的公鑰證書(shū)發(fā)送給服務(wù)器。這樣攻擊者就可以同時(shí)欺騙雙方獲取到明文。
這個(gè)風(fēng)險(xiǎn)就需要通過(guò)CA機(jī)構(gòu)對(duì)公鑰證書(shū)進(jìn)行數(shù)字簽名綁定公鑰和公鑰所屬人,也就是PKI體系。
** PKI(Privilege Management Infrastructure): **支持公鑰管理并能支持認(rèn)證、加密、完整性和可追究性的基礎(chǔ)設(shè)施??梢哉f(shuō)整個(gè)互聯(lián)網(wǎng)數(shù)據(jù)傳輸都是通過(guò)PKI體系進(jìn)行安全保證的。
** CA(Certificate Authority): **CA機(jī)構(gòu)就是負(fù)責(zé)頒發(fā)證書(shū)的,是一個(gè)比較公認(rèn)的權(quán)威的證書(shū)發(fā)布機(jī)構(gòu)。CA有一個(gè)管理標(biāo)準(zhǔn):WebTrust。只有通過(guò)WebTrust國(guó)際安全審計(jì)認(rèn)證,根證書(shū)才能預(yù)裝到主流的瀏覽器而成為一個(gè)全球可信的認(rèn)證機(jī)構(gòu)。比如美國(guó)的GlobalSign、VeriSign、DigiCert,加拿大的Entrust。我國(guó)的CA金融方面由中國(guó)人民銀行管理CFCA,非金融CA方面最初由中國(guó)電信負(fù)責(zé)建設(shè)。
CA證書(shū)申請(qǐng)流程:公司提交相應(yīng)材料后,CA機(jī)構(gòu)會(huì)提供給公司一張證書(shū)和其私鑰。會(huì)把Issuer,Public key,Subject,Valid from,Valid to等信息以明文的形式寫(xiě)到證書(shū)里面,然后用一個(gè)指紋算法計(jì)算出這些數(shù)字證書(shū)內(nèi)容的一個(gè)指紋,并把指紋和指紋算法用自己的私鑰進(jìn)行加密。由于瀏覽器基本都內(nèi)置了CA機(jī)構(gòu)的根證書(shū),所以可以正確的驗(yàn)證公司證書(shū)指紋(驗(yàn)簽),就不會(huì)有安全警告了。
但是:所有的公司其實(shí)都可以發(fā)布證書(shū),甚至我們個(gè)人都可以隨意的去發(fā)布證書(shū)。但是由于瀏覽器沒(méi)有內(nèi)置我們的根證書(shū),當(dāng)客戶(hù)端瀏覽器收到我們個(gè)人發(fā)布的證書(shū)后,找不到根證書(shū)進(jìn)行驗(yàn)簽,瀏覽器就會(huì)直接警告提示,這就是之前12306打開(kāi)會(huì)有警告的原因。這種個(gè)人發(fā)布的證書(shū),其實(shí)可以通過(guò)系統(tǒng)設(shè)置為受信任的證書(shū)去消除這個(gè)警告。但是由于這種證書(shū)機(jī)構(gòu)的權(quán)威性和安全性難以信任,大家最好不要這么做。
我們看一下百度HTTPS的證書(shū)信息:
其中比較重要的信息:
簽發(fā)機(jī)構(gòu):GlobalSign Root CA;
有效日期:2018-04-03到2019-05-26之間可用;
公鑰信息:RSA加密,2048位;
數(shù)字簽名:帶 RSA 加密的 SHA-256 ( 1.2.840.113549.1.1.11 )
綁定域名:再進(jìn)行HTTPS驗(yàn)證時(shí),如果當(dāng)前域名和證書(shū)綁定域名不一致,也會(huì)出現(xiàn)警告;
URI:在線(xiàn)管理地址。如果當(dāng)前私鑰出現(xiàn)了風(fēng)險(xiǎn),CA機(jī)構(gòu)可以在線(xiàn)吊銷(xiāo)該證書(shū)。
####5. 不可抵賴(lài)性
看起來(lái)整個(gè)過(guò)程都很安全了,但是仍存在一種風(fēng)險(xiǎn):服務(wù)端簽名后拒不承認(rèn),歸咎于故障不履行合同怎么辦。
解決方法是采用數(shù)字時(shí)間戳服務(wù):DTS。
** DTS(digital time-stamp): **作用就是對(duì)于成功的電子商務(wù)應(yīng)用,要求參與交易各方不能否認(rèn)其行為。一般來(lái)說(shuō),數(shù)字時(shí)間戳產(chǎn)生的過(guò)程為:用戶(hù)首先將需要加時(shí)間戳的文件用Hash算法運(yùn)算形成摘要,然后將該摘要發(fā)送到DTS。DTS在加入了收到文件摘要的日期和事件信息后再對(duì)該文件進(jìn)行數(shù)字簽名,然后送達(dá)用戶(hù)。
####6. 再次認(rèn)證
我們有了數(shù)字證書(shū)保證了身份的真實(shí)性,又有了DTS提供的不可抵賴(lài)性。但是還是不能百分百確定使用私鑰的就是合法持有者。有可能出現(xiàn)被別人盜用私鑰進(jìn)行交易的風(fēng)險(xiǎn)。
解決這個(gè)就需要用到強(qiáng)口令、認(rèn)證令牌OTP、智能卡、U盾或生物特征等技術(shù)對(duì)使用私鑰的當(dāng)前用戶(hù)進(jìn)行認(rèn)證,已確定其合法性。我們簡(jiǎn)單了解下很常見(jiàn)的U盾。
** USB Key(U盾): **剛出現(xiàn)時(shí)外形比較像U盤(pán),安全性能像一面盾牌,取名U盾。其內(nèi)部有一個(gè)只可寫(xiě)不可讀的區(qū)域存儲(chǔ)著用戶(hù)的私鑰(也有公鑰證書(shū)),銀行同樣也擁有一份。當(dāng)進(jìn)行交易時(shí),所有涉及到私鑰的運(yùn)算都在U盾內(nèi)部進(jìn)行,私鑰不會(huì)泄露。當(dāng)交易確認(rèn)時(shí),交易的詳細(xì)數(shù)據(jù)會(huì)顯示到U盾屏幕上,確認(rèn)無(wú)誤后通過(guò)物理按鍵確認(rèn)就可以成功交易了。就算出現(xiàn)問(wèn)題黑客也是無(wú)法控制U盾的物理按鍵的,用戶(hù)可以及時(shí)取消避免損失。有的U盾里面還有多份證書(shū),來(lái)支持國(guó)密算法。
** 國(guó)密算法: **國(guó)家密碼局針對(duì)各種算法制定了一些列國(guó)產(chǎn)密碼算法。具體包括:SM1對(duì)稱(chēng)加密算法、SM2公鑰算法、SM3摘要算法、SM4對(duì)稱(chēng)加密算法、ZUC祖沖之算法等。這樣可以對(duì)國(guó)產(chǎn)固件安全和數(shù)據(jù)安全進(jìn)行進(jìn)一步的安全控制。
## HTTPS分析
有了上面的知識(shí),我們可以嘗試去分析下HTTPS的整個(gè)過(guò)程,用Wireshark截取一次HTTPS報(bào)文:
Client Hello: 客戶(hù)端發(fā)送Hello到服務(wù)端443端口,里面包含了隨機(jī)數(shù)、客戶(hù)端支持的加密算法、客戶(hù)端的TLS版本號(hào)等;
Server Hello: 服務(wù)端回應(yīng)Hello到客戶(hù)端,里面包含了服務(wù)端選擇的加密套件、隨機(jī)數(shù)等;
Certificate: 服務(wù)端向客戶(hù)端發(fā)送證書(shū)
服務(wù)端計(jì)算對(duì)稱(chēng)秘鑰:通過(guò)ECDH算法得到對(duì)稱(chēng)秘鑰
客戶(hù)端計(jì)算對(duì)稱(chēng)秘鑰:通過(guò)ECDH算法得到對(duì)稱(chēng)秘鑰
開(kāi)始用對(duì)稱(chēng)秘鑰進(jìn)行加密傳輸數(shù)據(jù)
其中我們又遇到了新的算法:DH算法
** DH(Diffie-Hellman): **1976年由Whitefield與Martin Hellman提出的一個(gè)奇妙的秘鑰交換協(xié)議。這個(gè)機(jī)制的巧妙在于可以通過(guò)安全的方式使雙方獲得一個(gè)相同的秘鑰。數(shù)學(xué)原理是基于原根的性質(zhì),如圖:
*** DH算法的用處不是為了加密或解密消息,而是用于通信雙方安全的交換一個(gè)相同的秘鑰。 ***
** ECDH: **基于ECC(橢圓曲線(xiàn)密碼體制)的DH秘鑰交換算法,數(shù)學(xué)原理是基于橢圓曲線(xiàn)上的離散對(duì)數(shù)問(wèn)題。
** ECDHE: **字面少了一個(gè)E,E代表了臨時(shí)。在握手流程中,作為服務(wù)器端,ECDH使用證書(shū)公鑰代替Pb,使用自身私鑰代替Xb。這個(gè)算法時(shí)服務(wù)器不發(fā)送server key exchange報(bào)文,因?yàn)榘l(fā)送certificate報(bào)文時(shí),證書(shū)本身就包含了Pb信息。
##總結(jié)
| 算法名稱(chēng)? | 特點(diǎn) | 用處 | 常用算法名 |
| --- | :--- | :---: | ---: |
| 對(duì)稱(chēng)加密? | 速度快,效率高| 用于直接加密文件 | 3DES、AES、RC4 |
| 非對(duì)稱(chēng)加密? | 速度相對(duì)慢,但是確保安全 | 構(gòu)建CA體系 | RSA、ECC |
| 散列算法 | 算出的摘要長(zhǎng)度固定,不可逆 | 防止文件篡改 | SHA-1、SHA-2 |
| DH算法 | 安全的推導(dǎo)出對(duì)稱(chēng)秘鑰 | 交換對(duì)稱(chēng)秘鑰 | ECDH |
----
國(guó)密SSL產(chǎn)生背景
隨著互聯(lián)網(wǎng)技術(shù)的興盛和網(wǎng)絡(luò)應(yīng)用的普及,網(wǎng)絡(luò)安全問(wèn)題日益突出,大量的數(shù)據(jù)在網(wǎng)絡(luò)上傳遞并遭受攻擊和威脅,數(shù)據(jù)的安全性受到越來(lái)越多人的重視,因此產(chǎn)生了多種安全協(xié)議和相關(guān)規(guī)范。SSL協(xié)議就是在這種背景下由Netscape提出的,其中SSLv3.0自1996提出并得到大規(guī)模應(yīng)用成為了業(yè)界標(biāo)準(zhǔn),在2015年才被棄用。1999年,IETF收納了SSLv3.0并以此為基礎(chǔ)提出TLS規(guī)范,版本已由TLS1.0發(fā)展到如今的TLS3.0,是被應(yīng)用最廣泛的安全協(xié)議之一。
安全協(xié)議的核心和基礎(chǔ)就是密碼算法,為了確保我國(guó)的信息安全,國(guó)內(nèi)的相關(guān)安全產(chǎn)品以及協(xié)議如HTTPS、SSL VPN、STMPS等就不能直接使用TLS標(biāo)準(zhǔn)規(guī)范和密碼算法,因此必須要有一個(gè)屬于中國(guó)的密碼算法和傳輸層安全協(xié)議,國(guó)密SSL協(xié)議順勢(shì)產(chǎn)生。
國(guó)密SSL協(xié)議概述
目前TLS版本包含TLS1.0、TLS1.1、TLS1.2、TLS1.3以及GMTLS1.1。
國(guó)密 SSL協(xié)議在GM/T中不是一個(gè)獨(dú)立的協(xié)議標(biāo)準(zhǔn)[1],而是按照相關(guān)密碼政策、法規(guī)結(jié)合我國(guó)實(shí)際情況并參照RFC4346 TLS1.1規(guī)范,在GM/T 0024-2014《SSLVPN技術(shù)規(guī)范》中對(duì)其進(jìn)行了相關(guān)定義。主要不同體現(xiàn)在以下幾方面:
注[1]:隨著國(guó)家越發(fā)重視信息安全,在2020年11月1日正式實(shí)施了《GB/T38636-2020信息安全技術(shù)傳輸層密碼協(xié)議(TLCP)》,現(xiàn)階段使用者相對(duì)較少,因此本文依舊按照《SSL VPN技術(shù)規(guī)范》進(jìn)行介紹。
國(guó)密SSL協(xié)議包括記錄層協(xié)議、握手協(xié)議族(握手協(xié)議、密碼規(guī)格變更協(xié)議、報(bào)警協(xié)議)和網(wǎng)關(guān)到網(wǎng)關(guān)協(xié)議。
記錄層協(xié)議是分層次的,每一層都包括長(zhǎng)度字段、描述字段和內(nèi)容字段;其會(huì)接收將要被傳輸?shù)南ⅲ瑢?shù)據(jù)分段、壓縮(可選)、計(jì)算HMAC、加密,然后傳輸,接收到的數(shù)據(jù)經(jīng)過(guò)解密、驗(yàn)證、解壓縮(可選)、重新封裝然后傳送給高層應(yīng)用。
國(guó)密SSL握手協(xié)議族由密碼規(guī)格變更協(xié)議、握手協(xié)議和報(bào)警協(xié)議3個(gè)子協(xié)議組成,用于通信雙方協(xié)商出供記錄層使用的安全參數(shù),進(jìn)行身份驗(yàn)證以及向?qū)Ψ綀?bào)告錯(cuò)誤等。
密碼規(guī)格變更協(xié)議用于通知密碼規(guī)格的改變,即通知對(duì)方使用剛協(xié)商好的安全參數(shù)來(lái)保護(hù)揭曉了的數(shù)據(jù)??蛻?hù)端和服務(wù)端都要在安全參數(shù)協(xié)商完畢之后、握手結(jié)束消息之前發(fā)送此消息。
報(bào)警協(xié)議用于關(guān)閉連接的通知以及對(duì)整個(gè)連接過(guò)程中出現(xiàn)的錯(cuò)誤行為進(jìn)行報(bào)警,其中關(guān)閉通知由發(fā)起者發(fā)送,錯(cuò)誤報(bào)警由錯(cuò)誤的發(fā)現(xiàn)者發(fā)送。報(bào)警消息的長(zhǎng)度為兩個(gè)字節(jié),分別為報(bào)警級(jí)別和報(bào)警內(nèi)容。
握手協(xié)議是在記錄層協(xié)議之上的協(xié)議,用于協(xié)商安全參數(shù),是通過(guò)記錄層協(xié)議傳輸?shù)?。握手消息?yīng)當(dāng)按照規(guī)定流程順序進(jìn)行發(fā)送,否則將會(huì)導(dǎo)致致命錯(cuò)誤,不需要的握手消息可以被接收方忽略。
在Client支持的密碼套件列表中,Client會(huì)按照密碼套件使用的優(yōu)先級(jí)順序進(jìn)行排列,優(yōu)先級(jí)最高的密碼套件會(huì)排在首位。國(guó)密SSL支持的密碼套件列表如下所示:
在國(guó)密SSL標(biāo)準(zhǔn)中實(shí)現(xiàn)ECC和ECDHE的算法是SM2,實(shí)現(xiàn)IBC和IBSDH的算法是SM9,RSA算法的使用需要符合國(guó)家密碼管理主管部門(mén)的要求。
注[2]:在《GB/T38636-2020信息安全技術(shù)傳輸層密碼協(xié)議(TLCP)》標(biāo)準(zhǔn)中增加了GCM的密碼套件,并且刪除了涉及SM1和RSA的密碼套件。
網(wǎng)關(guān)到網(wǎng)關(guān)協(xié)議定義了SSL VPN之間建立網(wǎng)關(guān)到網(wǎng)關(guān)的傳輸層隧道,對(duì)IP數(shù)據(jù)報(bào)文進(jìn)行安全傳輸時(shí)所采用的報(bào)文格式(包括控制報(bào)文與數(shù)據(jù)報(bào)文)以及控制報(bào)文交換過(guò)程和數(shù)據(jù)報(bào)文封裝過(guò)程。
國(guó)密SSL測(cè)試的需求
為了保障數(shù)據(jù)安全,國(guó)家密碼管理局要求相關(guān)系統(tǒng)均要進(jìn)行國(guó)密改造,改用國(guó)密的密碼算法,目前國(guó)密算法已經(jīng)成為了數(shù)據(jù)安全保障的基礎(chǔ)。因此國(guó)密設(shè)備在實(shí)驗(yàn)室的概念設(shè)計(jì)、研發(fā)設(shè)計(jì)、生產(chǎn)、部署驗(yàn)收都有測(cè)試的必要。
在概念設(shè)計(jì)和研發(fā)階段需要確定設(shè)備是否符合相關(guān)要求,能否正常的進(jìn)行國(guó)密SSL加密以對(duì)數(shù)據(jù)進(jìn)行保護(hù);設(shè)備研發(fā)成型階段還需要進(jìn)行整機(jī)測(cè)試,驗(yàn)證設(shè)備各項(xiàng)功能和性能是否滿(mǎn)足實(shí)際應(yīng)用;在部署驗(yàn)收階段也需要進(jìn)行整體測(cè)試,驗(yàn)證國(guó)密設(shè)備在真實(shí)網(wǎng)絡(luò)環(huán)境中能否正常對(duì)數(shù)據(jù)進(jìn)行傳輸以及與整網(wǎng)的兼容適配。
國(guó)密測(cè)試分為功能測(cè)試和性能測(cè)試,目前市場(chǎng)上針對(duì)功能測(cè)試主要采用的是利用具備同樣國(guó)密功能的設(shè)備與被測(cè)設(shè)備對(duì)接測(cè)試,而性能測(cè)試則是采用自研類(lèi)軟件模擬多終端進(jìn)行測(cè)試,測(cè)試能力相對(duì)較弱且操作復(fù)雜,因此專(zhuān)業(yè)的測(cè)試工具在國(guó)密SSL的研發(fā)和推廣過(guò)程中就愈發(fā)重要。
信而泰國(guó)密SSL測(cè)試方案
信而泰經(jīng)過(guò)多年潛心研制,推出了基于PCT架構(gòu)的新一代B/S架構(gòu)測(cè)試平臺(tái)ALPS,該平臺(tái)支持真實(shí)的應(yīng)用層流量仿真。HTTPS /SMTPS Application Simulator是一個(gè)7層測(cè)試組件,可基于國(guó)密SSL模擬現(xiàn)實(shí)網(wǎng)絡(luò)環(huán)境中的HTTPS/SMTPS協(xié)議流量,進(jìn)而測(cè)試設(shè)備處理客戶(hù)端應(yīng)用層流量的能力。該平臺(tái)可以針對(duì)防火墻、負(fù)載均衡、VPN、網(wǎng)關(guān)等應(yīng)用層安全設(shè)備進(jìn)行相關(guān)測(cè)試,測(cè)試拓?fù)淙缦聢D所示:
信而泰國(guó)密SSL支持以下測(cè)試功能和特性:
HTTPS/SMTPS應(yīng)用流配置界面:
SSL Client Session統(tǒng)計(jì)界面:
SSL Server Session統(tǒng)計(jì)界面:
https國(guó)秘承認(rèn)的,自去年2月24日俄羅斯正式開(kāi)始對(duì)烏克蘭實(shí)施特別軍事行動(dòng),一場(chǎng)看不見(jiàn)硝煙的網(wǎng)絡(luò)戰(zhàn)也悄然上演。不論是俄羅斯還是烏克蘭均遭到多起網(wǎng)絡(luò)攻擊,其中主要涉及外交部、教育部、內(nèi)政部、能源部、安全局等政府部門(mén)和國(guó)防部、武裝部隊(duì)等多個(gè)軍方網(wǎng)站以及銀行、電信、電力、交通等關(guān)鍵基礎(chǔ)設(shè)施。隨著國(guó)際和民間黑客組織的加入,兩方的戰(zhàn)爭(zhēng)快速蔓延成一場(chǎng)全球化的網(wǎng)絡(luò)信息戰(zhàn)。此外,相關(guān)利益方發(fā)起了對(duì)俄羅斯的制裁:國(guó)際上主流CA機(jī)構(gòu)不再為俄羅斯提供數(shù)字證書(shū)服務(wù),甚至吊銷(xiāo)俄羅斯相關(guān)的一些國(guó)家基礎(chǔ)設(shè)施網(wǎng)站的證書(shū)。這讓俄羅斯不得不開(kāi)始建立國(guó)家CA機(jī)構(gòu),尋求自主可控的國(guó)家化網(wǎng)絡(luò)安全解決方案。(部分俄羅斯金融銀行機(jī)構(gòu)的SSL證書(shū)被吊銷(xiāo)列表)我國(guó)政府其實(shí)早在10年前已經(jīng)對(duì)網(wǎng)絡(luò)安全引起高度重視,并隨之相繼出臺(tái)了《密碼法》、《網(wǎng)絡(luò)安全法》、《數(shù)據(jù)安全法》、《關(guān)鍵信息基礎(chǔ)設(shè)施保護(hù)條例》等重要法規(guī),這些法規(guī)從不同層面強(qiáng)調(diào)了實(shí)現(xiàn)網(wǎng)絡(luò)安全技術(shù)自主可控的重要性,明確了對(duì)關(guān)鍵信息基礎(chǔ)設(shè)施的保護(hù)是世界各國(guó)網(wǎng)絡(luò)空間博弈的重要戰(zhàn)場(chǎng)。國(guó)密算法就是我國(guó)在密碼核心領(lǐng)域自主研發(fā)的一套數(shù)據(jù)加密處理系列算法,主要有SM1,SM2,SM3,SM4,密鑰長(zhǎng)度和分組長(zhǎng)度均為128位,是國(guó)家密碼局認(rèn)定的國(guó)產(chǎn)密碼算法。在應(yīng)用環(huán)境不可控的情況下,使用自主可控的國(guó)產(chǎn)密碼技術(shù)加密網(wǎng)絡(luò)重要信息數(shù)據(jù),對(duì)提升我國(guó)網(wǎng)絡(luò)信息安全與自主可控水平,具有重要戰(zhàn)略意義。隨著國(guó)家相關(guān)監(jiān)管機(jī)構(gòu)出臺(tái)多項(xiàng)措施推廣國(guó)密算法應(yīng)用,我國(guó)金融銀行、電子政務(wù)、教育、交通運(yùn)輸、民生保障等關(guān)鍵設(shè)施領(lǐng)域的企事業(yè)單位對(duì)國(guó)密算法的HTTPS應(yīng)用需求也與日俱增。
先介紹一下HASH吧
Hash,一般翻譯做散列、雜湊,或音譯為哈希,是把任意長(zhǎng)度的輸入(又叫做預(yù)映射pre-image)通過(guò)散列算法變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,所以不可能從散列值來(lái)確定唯一的輸入值。簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。(來(lái)自百度百科)
哈希函數(shù)由于其特性,在密碼學(xué)中占有重要地位
由于具有前圖像抗性和抗碰撞性,因此哈希函數(shù)非常適合用于存儲(chǔ)密碼。 因此,存儲(chǔ)在數(shù)據(jù)庫(kù)中的值是原始形式的用戶(hù)ID和密碼的哈希值。 因此,每當(dāng)您將Id和密碼輸入系統(tǒng)時(shí),它都會(huì)搜索user-Id(如果可用),它將與輸入密碼的哈希值和數(shù)據(jù)庫(kù)中已經(jīng)存在的密碼匹配。 如果兩者相同,則授予訪(fǎng)問(wèn)權(quán)限。
為了保持?jǐn)?shù)據(jù)完整性,發(fā)送方將消息及其哈希值發(fā)送給用戶(hù)。 然后,接收方檢查消息的哈希值是否與發(fā)送方發(fā)送的哈希值相同。 這樣可以確保在發(fā)送時(shí)未對(duì)數(shù)據(jù)進(jìn)行任何修改。 完整性檢查過(guò)程可以在電子郵件系統(tǒng),消息傳遞應(yīng)用程序等中看到。但是,由于一切都在后端進(jìn)行,因此用戶(hù)無(wú)法識(shí)別此過(guò)程。
簽名通常用于將簽名者綁定到消息。 因此,數(shù)字簽名是將個(gè)人或?qū)嶓w綁定到數(shù)字?jǐn)?shù)據(jù)的技術(shù)。 此綁定確保發(fā)送數(shù)據(jù)的人對(duì)此負(fù)全責(zé),并且此綁定可以由接收方和第三方驗(yàn)證。 此數(shù)字簽名也使用哈希函數(shù)存儲(chǔ),因此任何人的簽名都不會(huì)被盜用或?yàn)E用。
SM3算法大致過(guò)程
簡(jiǎn)單來(lái)說(shuō)就是:填充-迭代壓縮-輸出選裁,之后生成長(zhǎng)度為256bit的雜湊值。
以下SM3算法過(guò)程來(lái)源于GMT 0004-2012 SM3密碼雜湊算法.pdf
1、填充
2、迭代壓縮
其中CF壓縮函數(shù)內(nèi)容比較復(fù)雜,也是SM3算法的主題內(nèi)容之一。下面為CF函數(shù)的實(shí)現(xiàn)過(guò)程。
GMSSL中SM3算法的實(shí)現(xiàn)
GMSSL中在實(shí)現(xiàn)了SM3散列函數(shù)的同時(shí),也把SM3算法集成進(jìn)了MAC即消息認(rèn)證碼中實(shí)現(xiàn)了基于SM3的HMAC函數(shù)。
\GmSSL-master\crypto\sm3\sm3.c文件定義了算法中的一系列函數(shù),用于壓縮函數(shù)的實(shí)現(xiàn)與計(jì)算。
經(jīng)過(guò)一層層封裝調(diào)用,最后集成了一個(gè)void sm3函數(shù),其中實(shí)現(xiàn)了對(duì)消息塊進(jìn)行壓縮的函數(shù)、CF函數(shù)的實(shí)現(xiàn)等底層函數(shù),不再在此贅述。
void sm3(const unsigned char *msg, size_t msglen,
unsigned char dgst[SM3_DIGEST_LENGTH])
{
sm3_ctx_t ctx;
sm3_init(ctx);
sm3_update(ctx, msg, msglen);
sm3_final(ctx, dgst);
memset(ctx, 0, sizeof(sm3_ctx_t));
}
登錄后復(fù)制
?
簡(jiǎn)單介紹一下消息認(rèn)證碼
消息認(rèn)證碼MAC可以簡(jiǎn)單的理解成帶有密鑰的哈希函數(shù):密碼學(xué)中,通信實(shí)體雙方使用的一種驗(yàn)證機(jī)制,保證消息數(shù)據(jù)完整性的一種工具。構(gòu)造方法由M.Bellare提出,安全性依賴(lài)于Hash函數(shù),故也稱(chēng)帶密鑰的Hash函數(shù)。消息認(rèn)證碼是基于密鑰和消息摘要所獲得的一個(gè)值,可用于數(shù)據(jù)源發(fā)認(rèn)證和完整性校驗(yàn)。
在發(fā)送數(shù)據(jù)之前,發(fā)送方首先使用通信雙方協(xié)商好的散列函數(shù)計(jì)算其摘要值。在雙方共享的會(huì)話(huà)密鑰作用下,由摘要值獲得消息驗(yàn)證碼。之后,它和數(shù)據(jù)一起被發(fā)送。接收方收到報(bào)文后,首先利用會(huì)話(huà)密鑰還原摘要值,同時(shí)利用散列函數(shù)在本地計(jì)算所收到數(shù)據(jù)的摘要值,并將這兩個(gè)數(shù)據(jù)進(jìn)行比對(duì)。若兩者相等,則報(bào)文通過(guò)認(rèn)證。
一般的HMAC函數(shù)是基于MD5、SHA-1等國(guó)際主流HASH函數(shù),王小云院士破解了MD5算法之后,基于MD5的MAC函數(shù)、簽名等便不再安全。于是以王小云、李錚為主設(shè)計(jì)了SM3哈希算法,并基于SM3構(gòu)造了SM3-HMAC函數(shù),作為國(guó)密的MAC函數(shù)。
下面為HMAC的偽代碼:
HMAC_k(m) = H((k ^ opad), H((k ^ ipad), m))
function hmac(key, message)
opad = [0x5c * blocksize]
ipad = [0x36 * blocksize]
if (length(key) blocksize) then
key = hash(key)
end if
for i from 0 to length(key) - 1 step 1
ipad[i] = ipad[i] XOR key[i]
opad[i] = opad[i] XOR key[i]
end for
return hash(opad || hash(ipad || message))
end function
與SM3算法的實(shí)現(xiàn)差不多,也是由init update final三個(gè)主要函數(shù)構(gòu)成。整體架構(gòu)并沒(méi)有與國(guó)際上通用的HMAC函數(shù)有比較大的差別,就是把國(guó)際上的MD5和SHA-1算法換成了SM3算法,并嵌入了GMSSL中,可以與OPENSSL通用。
小結(jié)
由于MD5和SHA-1的破解,對(duì)新型更加安全的密碼雜湊算法的需求更加迫切。美國(guó)在2010年之前逐步替換MD5和SHA-1,改用新型的SHA-224、SHA-256、SHA-384及SHA-512函數(shù),而我國(guó),經(jīng)過(guò)王小云院士的努力,SM3應(yīng)運(yùn)而生。
SM3是我國(guó)自主研發(fā)的一種新型的哈希算法,打破了西方國(guó)家在哈希密碼上的壟斷。2018年11月22日,國(guó)家密碼管理局公布我國(guó)的SM3雜湊密碼算法已經(jīng)進(jìn)入到國(guó)際標(biāo)準(zhǔn)中,我國(guó)SM2/3/9密碼算法正式成為ISO/IEC國(guó)際標(biāo)準(zhǔn)。
SM3算法適用于商用密碼應(yīng)用中的數(shù)字簽名和驗(yàn)證,是在SHA-256基礎(chǔ)上改進(jìn)實(shí)現(xiàn)的一種算法。SM3算法采用Merkle-Damgard結(jié)構(gòu),消息分組長(zhǎng)度為512位,摘要值長(zhǎng)度為256位。SM3算法的壓縮函數(shù)與SHA-256的壓縮函數(shù)具有相似的結(jié)構(gòu),但是SM3算法的設(shè)計(jì)更加復(fù)雜,比如壓縮函數(shù)的每一輪都使用2個(gè)消息字?,F(xiàn)今為止,SM3算法的安全性相對(duì)較高。
哈希函數(shù)在密碼學(xué)中的地位不必多說(shuō),而純國(guó)產(chǎn)哈希函數(shù)SM3對(duì)于我國(guó)密碼行業(yè)更是非常重要。在對(duì)GMSSL中SM3實(shí)現(xiàn)的源代碼的分析以及上網(wǎng)搜集資料并學(xué)習(xí)的過(guò)程中,使我對(duì)SM3有了初步的認(rèn)識(shí),對(duì)于以后基于GMSSL編程的學(xué)習(xí)有一定的幫助。