您的位置:首頁>科技>正文

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

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

密碼安全

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

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,也是一樣的道理。

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

物聯網那些事

這樣的方式稱為混合密碼系統。

3.單向散列函數(HASH)

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

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

HASH

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,也是一樣的道理。

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

物聯網那些事

Next Article
喜欢就按个赞吧!!!
点击关闭提示