密碼學基礎——SM4算法

?博客主頁:christine-rr-CSDN博客

?????專欄主頁:密碼學?

📌 【今日更新】📌

對稱密碼算法——SM4

目錄

一、國密SM系列算法概述

二、SM4算法

2.1算法背景

2.2算法特點

2.3?基本部件

2.3.1 S盒

2.3.2??非線性變換 ??編輯?

2.3.3 線性變換部件L

2.3.4合成變換 T

2.3.5輪函數

2.3.6 加密算法

2.3.7 解密算法

2.3.8 密鑰擴展算法

2.4算法流程

?2.4.1 密鑰擴展:

?2.4.2 輪函數(F函數):

2.4.3 加密過程:

?2.4.4 解密過程:

2.5 算法模式

2.6 安全性分析

2.7 應用場景


一、國密SM系列算法概述

????????國密算法(SM系列)是由中國國家密碼管理局制定的一系列密碼算法標準,旨在保障信息安全,推動密碼技術的自主可控。涵蓋對稱加密、非對稱加密、哈希算法及身份認證等領域,廣泛應用于金融、政務、通信等關鍵領域。以下是主要SM算法的分類及簡介:

  • SM1、SM4、SM5、SM6、SM7、SM8、ZUC祖沖之密碼:對稱密碼,
  • SM2、SM9:公鑰密碼 (非對稱加密)
  • SM3:屬于單向散列函數。
  • SM9:基于身份基加密(IBE)或叫標識密碼的算法

目前我國主要使用公開的SM2、SM3、SM4作為商用密碼算法。

其中SM1、SM7算法不公開,調用該算法時,需要通過加密芯片的接口進行調用

二、SM4算法

2.1算法背景

????????SM4算法是用于WAPI的分組密碼算法,是2006年我國國家密碼管理局公布的國內第一個商用密碼算法,原名SMS4,2012年正式成為國家標準(GB/T 32907-2016),2021年成為國際標準(ISO/IEC 18033-3:2021/AMD1:2021)。

????????SM4算法的設計目標是替代國際通用的AES算法,適用于無線局域網、金融支付、物聯網等場景的數據加密。

2.2算法特點

  • 分組長度和密鑰長度:SM4算法的分組長度和密鑰長度均為128位(16字節)
  • 迭代輪數加密算法與密鑰擴展算法都采用32輪非線性迭代結構,每輪使用一個輪密鑰。
  • 算法結構:基于Feistel網絡結構,但采用了非平衡的Feistel變體,結合了S盒替換、線性變換和密鑰混合等操作。
  • 單位:以字節(8位)和字(32位)為單位進行數據處理。
  • 安全性:SM4算法的安全性經過嚴格評估,能夠抵御差分攻擊、線性攻擊等常見密碼分析方法。

2.3?基本部件

SM4密碼算法的基本運算有模2加和循環移位。
? ① 模2加:記為,為32位逐比特異或運算。
? ② 循環移位:i,把32位字循環左移i位。

2.3.1 S盒

????????S盒是以字節為單位的非線性替換,其密碼學作用是混淆,它的輸入和輸出都是8位的字節。設輸入字節為 ?,輸出字節為, 則S盒的運算可表示為:?? ? ? ?

????????S盒的替換規則如下,例如輸入為EF,則輸出為第E行與第F列交叉處的值84,即?S(EF)=84? ?。

?SM4密碼算法的S盒?

SM4密碼算法的S盒

2.3.2??非線性變換 ??

????????非線性變換 ??是以字為單位的非線性替換,它由4個S盒并置構成。設輸入為 ???(4個32位的字),輸出為 ??(4個32位的字),則

???(3-1)

2.3.3 線性變換部件L

????????線性變換部件L是以字為處理單位的線性變換,其輸入輸出都是32位的字,它的密碼學作用是擴散。 設 L的輸入為字B,輸出為字C,則

(3-2)

2.3.4合成變換 T

????????合成變換T由非線性變換和線性變換L復合而成,數據處理的單位是字。設輸入為字 X,則先對 X進行非線性變換,再進行線性L變換。記為

?(3-3)

????????由于合成變換 是非線性變換 和線性變換 的復合,所以它綜合起到混淆和擴散的作用,從而可提高密碼的安全性。

2.3.5輪函數

輪函數由上述基本密碼部件構成。設輪函數 ?的輸入為4個32位字共128位,輪密鑰為一個32位的字?? 。輸出也是一個32位的字,由下式給出:

根據式(3-3),有

記?,根據式(3-1)和式(3-2),有

?

輪函數的結構如圖所示

?SM4算法的加密算法和輪函數結構圖

2.3.6 加密算法

????????加密算法采用32輪迭代結構,每輪使用一個輪密鑰。
????????設輸入的明文為四個字(128比特長),輸入的輪密鑰為,共32個字。輸出的密文為四個字(128比特長)。加密算法可描述如下:
? ?
???????
??? 為了與解密算法需要的順序一致,同時也與人們的習慣順序一致,在加密算法之后還需要一個反序處理:

3-4)????

2.3.7 解密算法

??? 解密算法與加密算法相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
??? 算法的輸入為密文 和輪密鑰,輸出為明文。根據式。為了便于與加密算法對照,解密算法中仍然用表示密文。于是可得到如下的解密算法。

解密算法:
? ?
???? ?
??? 與加密算法之后需要一個反序處理同樣的道理,在解密算法之后也需要一個反序處理?? :

2.3.8 密鑰擴展算法

????????SM4算法加密時輸入128位的密鑰,采用32輪迭代結構,每一輪使用一個32位的輪密鑰,共使用32個輪密鑰。使用密鑰擴展算法,從加密密鑰產生出32個輪密鑰。

(1)常數FK
???? 在密鑰擴展中使用如下的常數:


(2)固定參數
?? 共使用32個固定參數,每個是一個字,其產生規則如下:
?? 設的第字節,即,則? ?

這32個固定參數如下(16進制):

??? 設輸入的加密密鑰為? ,輸出輪密鑰為? ,密鑰擴展算法可描述如下,其中為中間數據:

??? 其中的變換與加密算法輪函數中的基本相同,只將其中的線性變化? 修改為以下的? :


??? 密鑰擴展算法的結構與加密算法的結構類似,也是采用了32輪的迭代處理。

2.4算法流程

SM4算法的加密過程主要包括以下幾個步驟:

?2.4.1 密鑰擴展

  • 將128位的初始密鑰通過密鑰擴展算法生成32個32位的輪密鑰。
  • 密鑰擴展過程中使用了固定參數(CK)和系統參數(FK),確保密鑰與輪函數之間的強關聯性。

?2.4.2 輪函數(F函數)

  • 每輪迭代使用一個輪密鑰,通過非線性變換(S盒)和線性變換(L函數)對數據進行處理。
  • S盒替換:將8位輸入通過復合域S盒進行非線性替換,增強抗差分攻擊能力。?
  • 線性變換:包括循環左移和異或操作,實現數據的高分支數擴散

2.4.3 加密過程

  • 將128位的明文分組分為4個32位的字(X?, X?, X?, X?)。
  • 通過32輪迭代,每輪使用一個輪密鑰,生成新的中間狀態。
  • 最后一輪后,將4個字逆序拼接,得到128位的密文。

?2.4.4 解密過程

  • 解密過程與加密過程相同,只是輪密鑰的使用順序相反。

2.5 算法模式

SM4算法支持多種工作模式,常見的有:

  • ECB(電子密碼本模式):每個分組獨立加密,安全性較低,不推薦用于加密大量數據。
  • CBC(密碼分組鏈接模式):使用初始化向量(IV),每個分組的加密依賴于前一個分組的密文,安全性較高。
  • CTR(計數器模式):將塊加密算法轉換為流加密算法,適合并行加密,安全性高。

2.6 安全性分析

  • 密鑰空間:128位的密鑰長度提供了足夠大的密鑰空間,理論上可抵御暴力破解。
  • 抗攻擊能力:SM4算法的S盒設計和線性變換結構能夠有效抵御差分攻擊、線性攻擊等常見密碼分析方法。
  • 國際認可:SM4算法已成為國際標準,表明其設計通過了國際密碼學界的審查。

2.7 應用場景

  • 無線局域網(WLAN):SM4算法是中國無線局域網標準(WAPI)中推薦的加密算法。
  • 金融支付:在移動支付、網上銀行等場景中,SM4算法用于保護敏感數據。
  • 物聯網(IoT):SM4算法適用于資源受限的物聯網設備,提供高效的數據加密。
  • 政務和電信:在政府機密數據傳輸、電信通信加密等領域廣泛應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83973.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83973.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83973.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

練習:對象數組 4

定義數組存儲 4 個女朋友的對象。女朋友的屬性:姓名、年齡、性別、愛好;要求1:計算出四個女朋友的平均年齡;要求2:統計年齡比平均值低的女朋友有幾個?并把他們的所有信息打印出來。 代碼: //對…

React Hooks 基礎指南

React Hooks 是 React 16.8 引入的重要特性,它允許開發者在函數組件中使用狀態和其他 React 特性。本文將詳細介紹 6 個最常用的 React Hooks。 1. useState useState 是最常用的 Hook,用于在函數組件中添加 state。 import React, { useState } from…

【Python 算法零基礎 4.排序 ⑥ 快速排序】

既有錦繡前程可奔赴,亦有往日歲月可回首 —— 25.5.25 選擇排序回顧 ① 遍歷數組:從索引 0 到 n-1(n 為數組長度)。 ② 每輪確定最小值:假設當前索引 i 為最小值索引 min_index。從 i1 到 n-1 遍歷,若找到…

處理git沒做修改,但是文件顯示變更的情況

使用 TortoiseGit(小烏龜 Git) 時遇到 “文件內容沒改,但顯示為變更,提示有 n 行刪除、n 行添加”,你可以按照以下步驟操作來排查并解決問題: ? 一、定位問題根源(是否為行尾差異)…

智慧貨運飛船多維度可視化管控系統

圖撲搭建智慧貨運飛船可視化系統,借數字孿生技術,高精度復刻貨運飛船外觀、結構與運行場景。整合多維度數據,實時呈現飛行狀態、設備參數等信息,助力直觀洞察貨運飛船運行邏輯,為航天運維、任務推演及決策提供數字化支…

maven微服務${revision}依賴打包無法識別

1、場景描述 我現在又一個微服務項目&#xff0c;父pom的版本&#xff0c;使用<properties>定義好&#xff0c;如下所示&#xff1a; <name>ypsx-finance-center</name> <artifactId>ypsx-finance</artifactId> <packaging>pom</pack…

詳解代理型RAG與MCP服務器集成

檢索增強型生成(RAG)將語言模型與外部知識檢索相結合,讓模型的回答基于最新的事實,而不僅僅是其訓練數據呢。 RAG(高級別) 在 RAG 流程中,用戶查詢用于搜索知識庫(通常通過向量數據庫中的嵌入來實現),并將檢索到的最相關文檔“增強”到模型的提示中,以幫助生成事實…

智能倉儲的未來:自動化、AI與數據分析如何重塑物流中心

當倉庫學會“思考”&#xff0c;物流的終極形態正在誕生 想象這樣的場景&#xff1a; 凌晨3點&#xff0c;某物流中心燈火通明卻空無一人。AGV機器人集群根據實時訂單動態規劃路徑&#xff1b;AI視覺系統在0.1秒內掃描包裹信息&#xff1b;數字孿生平臺正模擬次日峰值流量壓力…

如何防止服務器被用于僵尸網絡(Botnet)攻擊 ?

防止服務器被用于僵尸網絡&#xff08;Botnet&#xff09;攻擊是關鍵的網絡安全措施之一。僵尸網絡是黑客利用大量被感染的計算機、服務器或物聯網設備來發起攻擊的網絡。以下是關于如何防止服務器被用于僵尸網絡攻擊的技術文章&#xff1a; 防止服務器被用于僵尸網絡&#xff…

貪心算法應用:硬幣找零問題詳解

貪心算法與硬幣找零問題詳解 貪心算法&#xff08;Greedy Algorithm&#xff09;在解決優化問題時表現出簡潔高效的特點&#xff0c;尤其適用于特定結構的組合優化問題。本文將用2萬字篇幅&#xff0c;深入探討貪心算法在硬幣找零問題中的應用&#xff0c;覆蓋算法原理、正確性…

Java高級 | 【實驗一】Springboot安裝及測試 |最新

隸屬文章&#xff1a;Java高級 | &#xff08;二十二&#xff09;Java常用類庫-CSDN博客 目錄 一、SpringBoot的特點 二、Spring Boot安裝及測試 &#xff08;一&#xff09;安裝Intellij IDEA &#xff08;二&#xff09;安裝MySQL &#xff08;三&#xff09;安裝postma…

C# WPF 左右布局實現學習筆記(1)

開發流程視頻&#xff1a; https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源碼&#xff1a; GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF應用&#xff08;.NET Framework) 2.…

從零開始,學會上傳,更新,維護github倉庫

以下是一份從頭到尾、覆蓋安裝、配置、創建倉庫、上傳項目到 GitHub 的完整教程。全程使用通用示例&#xff0c;不包含任何具體的倉庫鏈接&#xff0c;僅供參考。 一、準備工作 1. 注冊 GitHub 賬號 打開瀏覽器&#xff0c;訪問 GitHub 官網&#xff08;輸入 “GitHub” 即可找…

使用 Docker Compose 從零部署 TeamCity + PostgreSQL(詳細新手教程)

JetBrains TeamCity 是一款專業的持續集成&#xff08;CI&#xff09;服務器工具&#xff0c;支持各種編程語言和構建流程。本文將一步一步帶你用 Docker 和 Docker Compose 快速部署 TeamCity&#xff0c;搭配 PostgreSQL 數據庫&#xff0c;并確保 所有操作新手可跟著做。 一…

微軟推出SQL Server 2025技術預覽版,深化人工智能應用集成

在Build 2025 大會上&#xff0c;微軟向開發者社區開放了SQL Server 2025的測試版本。該版本的技術改進主要涵蓋人工智能功能集成、系統性能優化與開發工具鏈升級三個維度&#xff0c;展示了數據庫管理系統在智能化演進方向上的重要進展。 智能數據處理功能更新 新版本的技術亮…

企業管理中,商業智能BI主要做哪些事情?

開門見山的告訴大家&#xff0c;在企業管理中商業智能BI 主要就做三件事&#xff1a;拉通數據、整合數據、數據可視化展現。 技術角度的商業智能BI 從技術的角度來講&#xff0c;商業智能BI是一套完整的由數據倉庫、查詢報表、數據分析等組成的數據類技術解決方案。它有一個非…

openharmony5.0.0中kernel子系統編譯構建流程概覽(rk3568)

概述 在梳理openharmony對linux內核做了哪些更改時&#xff0c;簡單梳理了下kernel部分的編譯構建流程&#xff0c;并根據源碼做了簡單論證。分享出來&#xff0c;希望對大家有所幫助。 系統版本:openharmony5.0.0 開發板:dayu200 編譯環境:ubuntu22 執行流程 在kernel\l…

考研系列—操作系統:沖刺筆記(4-5章)

目錄 第四章 文件管理 1.真題總結文件管理方式 (1)目錄文件的FCB就是“目錄名-目錄地址” (2)普通文件的FCB (3)區分索引文件、順序文件、索引分配 (4)文件的物理結構 ①連續分配方式 ②鏈接分配 ③索引分配-使用索引表(一個文件對應一張索引表!!!) 計算考點:超級…

配置URDF模型,調整模型中部件的形狀/尺寸,以及在ROS2的Rviz2中進行可視化。

配置URDF模型&#xff0c;調整模型中部件的形狀/尺寸&#xff0c;以及在ROS2的Rviz2中進行可視化。 提問 在 ROS2 的rviz2 里面&#xff0c;urdf模型哪些部分選擇可視化&#xff0c;哪些部分暫時不呈現在界面上&#xff0c;怎么在rviz2中操作&#xff1f; 回答 在 ROS2 的 …

基于SpringBoot+Vue2的租房售房二手房小程序

角色&#xff1a; 管理員、房東、租客/買家 技術&#xff1a; springbootvue2mysqlmybatispagehelper 核心功能&#xff1a; 租房售房小程序是一個專注于房屋租賃和銷售的綜合性平臺&#xff0c;基于SpringBootVue2MySQLMyBatisPageHelper技術棧開發&#xff0c;為用戶提供…