國密演算法 密碼學

2021-10-13 12:50:30 字數 3029 閱讀 5981

國密演算法是我國自主研發創新的一套資料加密處理系列演算法。從sm1-sm4分別實現了對稱、非對稱、摘要等演算法功能。特別適合應用於嵌入式物聯網等相關領域,完成身份認證和資料加解密等功能。當然,預設的前提條件是演算法金鑰必須保證安全性,因此要將國密演算法嵌入到硬體加密晶元中結合使用。

國密即國家密碼局認定的國產密碼演算法。主要有sm1,sm2,sm3,sm4。金鑰長度和分組長度均為128位。

sm1 為對稱加密。其加密強度與aes相當。該演算法不公開,呼叫該演算法時,需要通過加密晶元的介面進行呼叫。

sm2為非對稱加密,基於ecc。該演算法已公開。由於該演算法基於ecc,故其簽名速度與秘鑰生成速度都快於rsa。ecc 256位(sm2採用的就是ecc 256位的一種)安全強度比rsa 2048位高,但運算速度快於rsa。

sm3 訊息摘要。可以用md5作為對比理解。該演算法已公開。校驗結果為256位。

sm4 無線區域網標準的分組資料演算法。對稱加密,金鑰長度和分組長度均為128位。

由於sm1、sm4加解密的分組大小為128bit,故對訊息進行加解密時,若訊息長度過長,需要進行分組,要訊息長度不足,則要進行填充。

sm2橢圓曲線公鑰密碼演算法是我國自主設計的公鑰密碼演算法,包括sm2-1橢圓曲線數字簽名演算法,sm2-2橢圓曲線金鑰交換協議,sm2-3橢圓曲線公鑰加密演算法,分別用於實現數字簽名金鑰協商和資料加密等功能。sm2演算法與rsa演算法不同的是,sm2演算法是基於橢圓曲線上點群離散對數難題,相對於rsa演算法,256位的sm2密碼強度已經比2048位的rsa密碼強度要高。

sm2演算法就是ecc橢圓曲線密碼機制,但在簽名、金鑰交換方面不同於ecdsa、ecdh等國際標準,而是採取了更為安全的機制。另外,sm2推薦了一條256位的曲線作為標準曲線。

sm2標準包括總則,數字簽名演算法,金鑰交換協議,公鑰加密演算法四個部分,並在每個部分的附錄詳細說明了實現的相關細節及示例。

sm2演算法主要考慮素域fp和f2m上的橢圓曲線,分別介紹了這兩類域的表示,運算,以及域上的橢圓曲線的點的表示,運算和多倍點計算演算法。然後介紹了程式語言中的資料轉換,包括整數和位元組串,位元組串和位元串,域元素和位元串,域元素和整數,點和位元組串之間的資料轉換規則。

詳細說明了有限域上橢圓曲線的引數生成以及驗證,橢圓曲線的引數包括有限域的選取,橢圓曲線方程引數,橢圓曲線群基點的選取等,並給出了選取的標準以便於驗證。最後給橢圓曲線上金鑰對的生成以及公鑰的驗證,使用者的金鑰對為(s,sp),其中s為使用者的私鑰,sp為使用者的公鑰,由於離散對數問題從sp難以得到s,並針對素域和二元擴域給出了金鑰對生成細節和驗證方式。總則中的知識也適用於sm9演算法。

在總則的基礎上給出了數字簽名演算法(包括數字簽名生成演算法和驗證演算法),金鑰交換協議以及公鑰加密演算法(包括加密演算法和解密演算法),並在每個部分給出了演算法描述,演算法流程和相關示例。

數字簽名演算法,金鑰交換協議以及公鑰加密演算法都使用了國家密管理局批准的sm3密碼雜湊演算法和隨機數發生器。數字簽名演算法,金鑰交換協議以及公鑰加密演算法根據總則來選取有限域和橢圓曲線,並生成金鑰對。

sm2演算法在很多方面都優於rsa演算法

sm3雜湊演算法是我國自主設計的密碼雜湊演算法,適用於商用密碼應用中的數字簽名和驗證訊息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。為了保證雜湊演算法的安全性,其產生的雜湊值的長度不應太短,例如md5輸出128位元雜湊值,輸出長度太短,影響其安全性。sha-1演算法的輸出長度為160位元,sm3演算法的輸出長度為256位元,因此sm3演算法的安全性要高於md5演算法和sha-1演算法。

sm3密碼雜湊(雜湊、雜湊)演算法給出了雜湊函式演算法的計算方法和計算步驟,並給出了運算示例。此演算法適用於商用密碼應用中的數字簽名和驗證,訊息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需求。在sm2,sm9標準中使用。

此演算法對輸入長度小於2的64次方的位元訊息,經過填充和迭代壓縮,生成長度為256位元的雜湊值,其中使用了異或,模,模加,移位,與,或,非運算,由填充,迭代過程,訊息擴充套件和壓縮函式所構成

sm4分組密碼演算法是我國自主設計的分組對稱密碼演算法,用於實現資料的加密/解密運算,以保證資料和資訊的機密性。要保證乙個對稱密碼演算法的安全性的基本條件是其具備足夠的金鑰長度,sm4演算法與aes演算法具有相同的金鑰長度分組長度128位元,因此在安全性上高於3des演算法。

此演算法是乙個分組演算法,用於無線區域網產品。該演算法的分組長度為128位元,金鑰長度為128位元。加密演算法與金鑰擴充套件演算法都採用32輪非線性迭代結構。解密演算法與加密演算法的結構相同,只是輪金鑰的使用順序相反,解密輪金鑰是加密輪金鑰的逆序。

此演算法採用非線性迭代結構,每次迭代由乙個輪函式給出,其中輪函式由乙個非線性變換和線性變換復合而成,非線性變換由s盒所給出。其中rki為輪金鑰,合成置換t組成輪函式。輪金鑰的產生與上圖流程類似,由加密金鑰作為輸入生成,輪函式中的線性變換不同,還有些引數的區別。sm4演算法的具體描述和示例見sm4標準。

sm7演算法是一種分組密碼演算法,分組長度為128位元,金鑰長度為128位元。sm7適用於非接觸式ic卡,應用包括身份識別類應用(門禁卡、工作證、參賽證),票務類應用(大型賽事門票、展會門票),支付與通卡類應用(積分消費卡、校園一**、企業一**等)。

為了降低公開金鑰系統中金鑰和證書管理的複雜性,以色列科學家、rsa演算法發明人之一adi shamir在2023年提出了標識密碼(identity-based cryptography)的理念。標識密碼將使用者的標識(如郵件位址、手機號碼、qq號碼等)作為公鑰,省略了交換數字證書和公鑰過程,使得安全系統變得易於部署和管理,非常適合端對端離線安全通訊、雲端資料加密、基於屬性加密、基於策略加密的各種場合。2023年標識密碼演算法正式獲得國家密碼管理局頒發的商密演算法型號:sm9(商密九號演算法),為我國標識密碼技術的應用奠定了堅實的基礎。

sm9演算法不需要申請數字證書,適用於網際網路應用的各種新興應用的安全保障。如基於雲技術的密碼服務、電子郵件安全、智慧型終端保護、物聯網安全、雲儲存安全等等。這些安全應用可採用手機號碼或郵件位址作為公鑰,實現資料加密、身份認證、通話加密、通道加密等安全應用,並具有使用方便,易於部署的特點,從而開啟了普及密碼演算法的大門。

祖沖之序列密碼演算法是中國自主研究的流密碼演算法,是運用於移動通訊4g網路中的國際標準密碼演算法,該演算法包括祖沖之演算法(zuc)、加密演算法(128-eea3)和完整性演算法(128-eia3)三個部分。目前已有對zuc演算法的優化實現,有專門針對128-eea3和128-eia3的硬體實現與優化。

密碼學演算法

密碼學概述 公開相對安全 攻擊方法多樣 應用標準 不比具備很強數學知識 解決特定問題 目標機密性 完整性不可抵賴性 身份驗證 常用密碼庫 miracl cryptoapi openssl 密碼學演算法分類 隨機數偽隨機數生成器 密碼學偽隨機數生成器 工作原理 生成器內部維護乙個狀態 internal...

密碼學之密匙交換

最近在學習網易公開課上可汗學院現代密碼學的課程,整理了一下自己的筆記2 迪菲.赫爾曼密匙交換 迪菲.赫爾曼密匙交換利用了單向函式正向求解很簡單,反向求解很複雜的特性。n x mod m s,已知n x m求s簡單,已知n m s求x很難。此時也可以求,用窮舉遍曆法,但是當數字很大時,耗時很長代價很大...

密碼學 密碼學基礎

密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...