一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

信息安全 比爾·蓋茨 移動支付 Mac 物聯網那些事 2017-06-13

信息安全是近年來的熱門話題,特別是最近隨著物聯網的全民化,安全已經成為移動支付,智能家居等領域發展的核心議題,而安全的本質是算法和安全系統。讀完本文,就可以讓你成為安全算法領域的專家。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

密碼安全

1.對稱密碼(現在最常用的基礎密碼算法)

對稱密碼是一種用相同的密鑰進行加密和解密的技術,用於確保消息的機密性。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

對稱密碼

對稱算法有幾大類:

DES算法(你的門禁用的就是這個算法哦)

DES(Data Encryption Standard)是1977年美國聯邦信息處理標準中所採用的一種對稱碼。

DES是一種將64比特的明文加密成64比特的密文的對稱密碼算法,它的密鑰長度是56比特。儘管從規格上來說,DES的密鑰長度是64比特,但由於每隔7比特會設置一個用於錯誤檢查的比特,因此實質上其實密鑰長度是56比特。由於DES的密文可以在短時間內被破譯,因此除了用它來解密以前的密文以外,現在我們不應該使用DES了。

三重DES(3DES)

三重DES是為了增加DES的強度,將DES重複3次所得到的一種密碼算法,也稱為TDEA,通常縮寫為3DES。儘管三重DES目前還被銀行等機構使用,但其處理速度不高,除了特別重視向下兼容性的情況以外,很少被用於新的用途。

AES

AES(Advanced Encryption Standard)是取代其前任標準(DES)而成為新標準的一種對稱密碼算法(Rijndael)。Rijndael是由比利時密碼學家Joan Daemen和Vincent Rijmen設計的分組密碼算法,於2000年被選為新一代的標準密碼算法——AES。Rijndael的分組長度和密鑰長度可以分別以32比特為單位在128比特到256比特的範圍內進行選擇。不過在AES的規格中,分組長度固定為128比特,密鑰長度只有128、192、和256比特三種。

2. 公鑰密碼(非對稱密碼算法,安全度更高的算法,銀行卡取錢的時候會用到哦)

公鑰密碼(非對稱密碼)中,密鑰分為加密密鑰和解密密鑰兩種。發送者用加密密鑰對消息進行加密,接收者用解密密鑰對密文進行解密。公鑰算法主要用於身份認證領域。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

非對稱算法

RSA

RSA是一種公鑰密碼算法,它的名字是由它的三位開發者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母組成的(Rivest-Shamir-Adleman)。RSA的加密是求“E次方的 mod N”,而解密則是求“D次方的 mod N”

密文 = 明文^E mod N明文 = 密文^D mod N

橢圓曲線密碼(ECC)

橢圓曲線密碼(Elliptic Curve Cryptography,ECC)是最近備受關注的一種公鑰密碼算法。它的特點是所需的密鑰長度比RSA短。橢圓曲線密碼是通過將橢圓曲線上的特定點進行特殊的乘法運算來實現的,它利用了這種乘法運算的逆運算非常困難這一特性。使用公鑰密碼能夠解決密鑰配送問題。公鑰密碼是密碼學界的一項革命性發明,現代計算機和互聯網所使用的密碼技術都得益於公鑰密碼。

儘管公鑰密碼能夠解決對稱密碼中的密鑰交換問題,但存在通過中間人攻擊被偽裝的風險,因此需要對帶有數字簽名的公鑰進行認證。即使已經有了公鑰密碼,對稱密碼也不會消失。公鑰密碼的運行速度遠遠低於對稱密碼,因此在一般的通信過程中,往往會配合使用這兩種密碼,即用對稱密碼提高處理速度,用公鑰密碼解決密鑰配送問題。這樣的方式稱為混合密碼系統。

3.單向散列函數(HASH)

單向散列函數有一個輸入和一個輸出,其中輸入稱為消息(message),輸出稱為散列值(hash code)。單向散列函數可以根據消息的內容計算出散列值,而散列值就可以被用來檢查消息的完整性。散列值的長度和消息的長度無關。無論消息是1比特,還是100MB,甚至是100GB,單向散列函數都會計算出固定長度的散列值。以SHA-256單向散列函數為例,它所計算出的散列值的長度永遠是256比特(32字節)。為了能夠確認完整性,消息中哪怕只有1比特的改變,也會產生不同的散列值。

單向散列函數輸出的散列值也稱為消息摘要(message digest)或者指紋(fingerprint)

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

HASH

乾貨分享時間:如果想進一步瞭解移動設備安全方案資料,請關注本今日頭條號 “物聯網那些事 ”並私信索取即可免費獲得獨有資料哦。

MD4、MD5(記不記得電影和文件下載的MD5校驗?)

MD(Messge Digest)4是由Rivest於1990年設計的單向散列函數,能夠產生128比特的散列值。現在它已經不安全了。MD(Messge Digest)5是由Rivest於1991年設計的單向散列函數,能夠產生128比特的散列值。MD5的強抗碰撞性已經被攻破。也就是說,現在已經能夠產生具備相同散列值的兩條不同的消息,因此它也不安全了。

SHA-1、SHA-256、SHA-384、SHA512

SHA-1是由NIST(美國國家標準技術研究所)設計的一種能夠產生160比特的散列值的單向散列函數。現在已不推薦使用。SHA-256、SHA-384、SHA512都是由NIST設計的單向散列函數,它們的散列值長度分別為256比特、384比特、和512比特。這些單向散列函數合起來統稱SHA-2。

SHA-1的強抗碰撞性已於2005年被攻破,不過,SHA-2還尚未被攻破。

單向散列函數能夠辨別出“篡改”,但無法辨別出“偽裝”,這時就需要進行認證。

4. 消息認證碼

消息認證碼(Message Authentication Code)是一種確認完整性並進行認證的技術,簡稱為MAC。

消息認證指的是“消息來自正確的發送者”這一性質。消息認證碼的輸入包括任意長度的消息和一個發送者與接受者之間共享的密鑰,它可以輸出固定長度的數據,這個數據成為MAC值。

要計算MAC必須持有共享密鑰,沒有共享密鑰的人就無法計算MAC值,消息認證碼正是利用這一性質來完成認證的。此外,和單向散列函數的散列值一樣,哪怕消息中發生1比特的變化,MAC值也會產生變化,消息認證碼正是利用這一性質來確認完整性的。消息認證碼可以說是一種與密鑰相關聯的單向散列函數。

消息認證碼可以使用單向散列函數和對稱密碼等技術來實現。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

MAC與HASH比較

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

MAC流程

HMAC

HMAC是一種使用單向散列函數來構造消息認證碼的方法,其中HMAC的H就是Hash的意思。

消息認證碼也不能解決所有的問題,例如“對第三方證明”,和“防止否認”,這兩個問題就無法通過消息認證碼來解決。

5. 數字簽名

消息認證碼之所以無法防止否認,是因為消息認證碼需要在發送者和接收者兩者之間共享一個密鑰。

數字簽名是一種能夠對第三方進行消息認證,並能夠防止通信對象作出否認的認證技術。

數字簽名中也同樣會使用公鑰和私鑰組成的密鑰對,不過這兩個密鑰的用法和公鑰密碼是相反的,即用私鑰加密相當於生成簽名,而用公鑰解密則相當於驗證簽名。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

生成簽名和驗證簽名

實現數字簽名使用的算法如下:

RSA

RSA是一種公鑰密碼算法,它的名字是由它的三位開發者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母組成的(Rivest-Shamir-Adleman)。

用RSA生成簽名和驗證簽名的過程可用下列公式來表述:

簽名 = 消息^D mod N由簽名得到的消息 = 密文^E mod N

EIGamal

EIGamal方式是由Taher EIGamal設計的公鑰算法。利用了mod N 下求離散對數的困難度。EIGamal方式可以被用於公鑰密碼和數字簽名。

DSA

DSA(Digital Signature Algorithm)是一種數字簽名算法,是由NIST於1991年制定的數字簽名規範。

DSA是Scnorr算法與EIGammal方式的變體,只能被用於數字簽名。

ECDSA

ECDSA(Elliptic Curve Digital Signature Algorithm)是一種利用橢圓曲線密碼來實現的數字簽名算法。

Rabin方式

Rabin方式是由M.O.Rabin設計的公鑰算法。利用了在mod N下求平方根的困難度。Rabin方式可以被用於公鑰密碼和數字簽名。

用數字簽名既可以識別出篡改和偽裝,還可以防止否認,但是無法確認用於驗證簽名的公鑰屬於真正的發送者的。

要確認公鑰是否合法,可以對公鑰施加數字簽名,這就是證書。

6.證書

公鑰證書(Public-Key Certificate,PKC)其實和駕照很相似,裡面記有姓名、組織、郵箱、地址等個人信息,以及屬於此人的公鑰,並由認證機構(Certification Authority,CA)施加數字簽名。只要看到公鑰證書,我們就可以知道認證機構認定該公鑰的確屬於此人。公鑰證書也簡稱為證書。

認證機構就是能夠認定“公鑰確實屬於此人”並能夠生成數字簽名的個人或者組織。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

消息發送者利用認證機構向消息接收者發送密文

X.509

X.509是一種證書生成和交換的標準規範。

7.PKI(身份認證,銀行U盾就是這個體系啦)

PKI(Public-Key Infrastructure)是為了能夠更有效地運用公鑰而制定的一系列規範和規格的總稱。X.509也是PKI的一種。

密鑰

各種不同的密鑰

1.對稱密碼的密鑰與公鑰密碼的密鑰

2.消息認證碼的密鑰與數字簽名的密鑰

3.用於確保機密性的密鑰與用於認證的密鑰

4.會話密鑰與主密鑰

當我們訪問以 https:// 開頭的網頁時,Web服務器和瀏覽器之間會進行基於SSL/TLS的加密通信。在這樣的通信中所使用的密鑰是僅限於本次通信的一次性密鑰,下次通信時就不能使用了。像這樣每次通信只能使用一次的密鑰稱為會話密鑰(session key)。

相對於每次通信都更換的會話密鑰,一直被重複使用的密鑰稱為主密鑰(master key)。

5.用於加密內容的密鑰與用於加密密鑰的密鑰

一般來說,加密的對象是用戶直接使用的消息(內容),這樣的情況下所使用的密鑰稱為CEK(Contents Encrypting Key);相對地,用於加密密鑰的密鑰則稱為KEK(Key Encrypting Key)。

上面提到的會話密鑰都是被作為CEK使用的,而主密鑰則是被作為KEK使用的。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

CEK與KEK

CEK與KEK.png

Diffe-Hellman密鑰交換

Diffe-Hellman密鑰交換是1976年由Whitfield Diffe和Martin Hellman共同發明的一種算法。使用這種算法,通信雙方通過交換一些可以公開的信息就能夠生成出共享的祕密數字,而這一祕密數字就可以被用作對稱密碼的密鑰。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

Diffee-Hellman密鑰交換

8. 隨機數(比特幣錢包的最愛)

隨機數的用處

  • 生成密鑰:用於對稱密碼和消息認證碼。

  • 生成密鑰對:用於公鑰密碼和數字簽名。

  • 生成初始化向量(IV):用於分組密碼的CBC、CFB和OFB模式。

  • 生成nonce:用於防禦重放攻擊以及分組密碼的CTR模式等。

  • 生成鹽:用於基於口令的密碼等。

隨機數的性質

  • 隨機性(弱偽隨機數)

  • 不可預測性(強偽隨機數)

  • 不可重現性(真隨機數)

真隨機數生成器

通過硬件生成的隨機數列,是根據傳感器收集的熱量、聲音的變化等事實上無法預測和重現的自然現象信息來生成的。像這樣的硬件設備就稱為隨機數生成器。

偽隨機數生成器

而可以生成隨機數的軟件則稱為偽隨機數生成器。因為僅靠軟件無法生成真隨機數,因此要加上一個“偽”字。

9. 國密算法:中國自主的密碼算法標準(國家金融安全的核心,要強烈支持)

保證安全最根本的方法是基礎軟件和基礎硬件都是自己控制,目前我國無法短期國產化的情況下,數據加密是最好的方式。如果加密算法以及實現都是外國提供的,安全性從何說起,所以我國國家密碼局發佈了自主可控的國密算法,包含SM1\ SM2\ SM3\ SM4算法

SM1算法

分組密碼算法是分組對稱加解密算法,分組長度為128位,密鑰長度都為128 比特,算法安全保密強度及相關軟硬件實現性能與AES 相當,算法不公開,僅以IP 核的形式存在於芯片中。採用該算法已經研製了系列芯片、智能IC 卡、智能密碼鑰匙、加密卡、加密機等安全產品,廣泛應用於電子政務、電子商務及國民經濟的各個應用領域(包括國家政務通、警務通等重要領域)。

SM4分組密碼算法

是用於無線局域網和可信計算系統的專用分組密碼算法,該算法的分組長度為128比特,密鑰長度為128比特。SM4算法是我國制定WAPI標準的組成部分,同時也可以用於其它環境下的數據加密保護。

SM1算法和SM4算法是我國自主設計的分組對稱密碼算法,用於實現數據的加密/解密運算,以保證數據和信息的機密性。SM1算法和SM4算法均可以用於網絡數據的加密保護,以及存儲數據或文件的加密保護。

SM1算法和SM4算法還能夠抵抗針對分組密碼算法的各種攻擊方法,包括窮舉搜索攻擊、差分攻擊、線性攻擊等,在實際應用中能夠抵抗這些攻擊手段。國際上常見的分組密碼算法,包括國際上的DES算法、AES算法、IDEA算法等。

SM2算法

由國家密碼管理局於2010年12月17日發佈,全稱為橢圓曲線算法。橢圓曲線並不是橢圓,之所以稱為橢圓曲線是因為它們是用三次方程來表示的,並且該方程與計算橢圓周長的方程相似。

摘要算法——國產SM3

摘要函數在密碼學中具有重要的地位,被廣泛應用在數字簽名,消息認證,數據完整性檢測等領域。摘要函數通常被認為需要滿足三個基本特性:碰撞穩固性,原根穩固性和第二原根穩固性。SM3密碼摘要算法是中國國家密碼管理局2010年公佈的中國商用密碼雜湊算法標準。SM3算法適用於商用密碼應用中的數字簽名和驗證,是在SHA-256基礎上改進實現的一種算法。SM3算法採用Merkle-Damgard結構,消息分組長度為512位,摘要值長度為256位。

SM3算法的壓縮函數與SHA-256的壓縮函數具有相似的結構,但是SM3算法的設計更加複雜,比如壓縮函數的每一輪都使用2個消息字。

現今為止,SM3算法的安全性相對較高。

當然,算法本身安全了,並不表示就安全了。 在很多流程中,都有可能出現漏洞。舉個例子,保險箱雖然很牛逼,但是,保險箱的鑰匙如果被偷走,那保險箱就沒什麼安全性了。

因此,無論算法的數學理論有多牛逼,如果運行算法的過程不是安全的,就容易洩露祕鑰。

對算法的攻擊,一種常見的手段是SCA(side channel attack)。可以很容易的攻擊得到算法的密鑰。RSA/AES/DES都可以被攻破。作為follow國際算法的國密算法SM2、SM4,也是一樣的道理。

所以,金融領域的產品,都要求必須經過算法的安全認證,在這裡,帶獨立算法引擎的安全硬件就非常重要了。認證過程就是要多算法實現的安全性進行認證。具體的,就是做各種各樣的攻擊,看是否能得到密鑰。同樣的,國密局要求,內置了國密算法的安全產品,要想過國密的認證,就必須要做到算法實現的安全性。

如果想進一步瞭解移動設備安全和算法安全資料,請關注本頭條號 “物聯網那些事 ”並私信索取即可免費獲得獨有資料哦。

一圖文讓你成為密碼算法安全專家:國密算法與國際算法揭祕

物聯網那些事

相關推薦

推薦中...