【密碼學】4. 分組密碼

目錄

  • 分組密碼
    • 分組密碼概述
    • Feistel 密碼結構
    • 數據加密標準(DES)
    • 差分密碼分析與線性密碼分析
    • 分組密碼的運行模式
    • 國際數據加密算法(IDEA)
    • 高級加密標準(AES,Rijndael)
    • 中國商用密碼 SM4
    • 祖沖之密碼(ZUC)

分組密碼

分組密碼概述

  1. 基本定義
    分組密碼是將明文消息編碼后的數字序列劃分為長度為nnn的組(nnn維矢量),在密鑰控制下變換為等長的輸出數字序列(mmm維矢量),加密函數為E:Vn×K→VmE: V_n \times K \to V_mE:Vn?×KVm?,其中VnV_nVn?VmV_mVm?nnn維、mmm維矢量空間,KKK為密鑰空間。
  2. 核心概念
    • 代換:明文分組到密文分組的可逆變換。對于nnn比特分組,有2n2^n2n個可能取值,可逆變換的總數為(2n)!(2^n)!(2n)!(所有可能置換)。例如n=4n=4n=4時,4 比特輸入(16 種狀態)通過代換表映射為 4 比特輸出,加密與解密可通過代換表定義。
    • 擴散與混淆(Shannon 提出,抗統計分析的核心):
      • 擴散:將明文的統計特性(如字母頻率)散布到密文,使密文統計特性更均勻(例如通過多輪置換 + 函數變換實現)。
      • 混淆:使密文與密鑰的統計關系復雜化,避免敵手通過密文統計特性推導密鑰(通過復雜非線性代換實現)。

Feistel 密碼結構

  1. 基本原理
    • 采用 “乘積密碼” 思想,將分組分為左右兩半(L0,R0L_0, R_0L0?,R0?),經多輪迭代變換:
      • iii輪:Li=Ri?1L_i = R_{i-1}Li?=Ri?1?Ri=Li?1⊕F(Ri?1,Ki)R_i = L_{i-1} \oplus F(R_{i-1}, K_i)Ri?=Li?1?F(Ri?1?,Ki?),其中FFF為輪函數,KiK_iKi?為子密鑰。
      • 解密:與加密算法相同,但子密鑰使用順序相反(第 1 輪用KnK_nKn?,最后一輪用K1K_1K1?)。
  2. 關鍵參數
    • 分組大小:越大安全性越高,但速度越慢;
    • 密鑰大小:越長安全性越高,但速度越慢;
    • 輪數:多輪可提升安全性(單輪不足以抗攻擊);
    • 子密鑰產生算法:復雜度越高,密碼分析越難;
    • 輪函數:復雜度越高,安全性越強。

數據加密標準(DES)

  1. 基本參數
    • 分組長度:64 比特;密鑰長度:56 比特(含 8 位奇偶校驗位);輪數:16 輪。
    • 結構:Feistel 網絡,包含初始置換、16 輪迭代、逆初始置換。
  2. 加密流程
    • 初始置換(IP):重排 64 比特明文,輸出 32 比特左半(L0L_0L0?)和 32 比特右半(R0R_0R0?)。
    • 輪變換
      1. 擴展置換(E):將 32 比特Ri?1R_{i-1}Ri?1?擴展為 48 比特(重復 16 個比特);
      2. 與 48 位子密鑰KiK_iKi?異或;
      3. S 盒代換:8 個 S 盒(每個 6 輸入 4 輸出),將 48 比特壓縮為 32 比特;
      4. 置換(P):重排 32 比特輸出,作為輪函數FFF的結果;
      5. 迭代:Li=Ri?1L_i = R_{i-1}Li?=Ri?1?Ri=Li?1⊕F(Ri?1,Ki)R_i = L_{i-1} \oplus F(R_{i-1}, K_i)Ri?=Li?1?F(Ri?1?,Ki?)
    • 逆初始置換(IP?1):16 輪后交換左右兩半,經 IP?1 輸出 64 比特密文。
  3. 密鑰產生
    • 56 比特密鑰經置換選擇 1(PC1)分為 28 比特C0C_0C0?和 28 比特D0D_0D0?
    • 每輪左移(1 或 2 位,依輪數而定),經置換選擇 2(PC2)產生 48 位子密鑰KiK_iKi?
  4. 變種
    • 二重 DES:用兩個 56 比特密鑰(總 112 比特),易受 “中途相遇攻擊”(需2562^{56}256存儲和計算);
    • 三重 DES
      • 兩個密鑰(EDE 模式):C=EK1(DK2(EK1(P)))C = E_{K1}(D_{K2}(E_{K1}(P)))C=EK1?(DK2?(EK1?(P))),密鑰長 112 比特;
      • 三個密鑰:C=EK3(DK2(EK1(P)))C = E_{K3}(D_{K2}(E_{K1}(P)))C=EK3?(DK2?(EK1?(P))),密鑰長 168 比特,安全性更高。

差分密碼分析與線性密碼分析

  1. 差分密碼分析
    • 原理:通過分析明文對的差值(ΔX=X1⊕X2\Delta X = X_1 \oplus X_2ΔX=X1?X2?)對密文對差值(ΔY=Y1⊕Y2\Delta Y = Y_1 \oplus Y_2ΔY=Y1?Y2?)的影響,恢復密鑰。
    • 核心概念:
      • rrr輪特征:差分序列(α0,α1,...,αr)(\alpha_0, \alpha_1, ..., \alpha_r)(α0?,α1?,...,αr?),其中α0\alpha_0α0?為明文差分,αi\alpha_iαi?為第iii輪輸出差分;
      • 概率:rrr輪特征的概率為各輪函數差分概率的乘積。
  2. 線性密碼分析
    • 原理:利用 “不平衡線性逼近”,尋找明文(PPP)、密文(CCC)、密鑰(KKK)的線性方程P[i1,...,ia]⊕C[j1,...,jb]=K[k1,...,kc]P[i_1,...,i_a] \oplus C[j_1,...,j_b] = K[k_1,...,k_c]P[i1?,...,ia?]C[j1?,...,jb?]=K[k1?,...,kc?],通過已知明文對的統計偏差(概率≠1/2)確定密鑰。
  3. 改進方法
    • 包括高階差分分析、不可能差分分析、多重線性分析、能量分析(針對硬件)等。

分組密碼的運行模式

  1. 電碼本模式(ECB)
    • 特點:每個 64 比特明文分組獨立用同一密鑰加密,密文與明文一一對應(類似 “電碼本”)。
    • 優缺點:簡單快速,但重復明文產生重復密文,易暴露統計特性,適合短數據(如密鑰傳輸)。
  2. 密碼分組鏈接模式(CBC)
    • 特點:當前明文分組與前一密文分組異或后加密,即Ci=EK(Pi⊕Ci?1)C_i = E_K(P_i \oplus C_{i-1})Ci?=EK?(Pi?Ci?1?),首組需初始向量(IV):C0=EK(P0⊕IV)C_0 = E_K(P_0 \oplus IV)C0?=EK?(P0?IV)
    • 優缺點:隱藏重復明文,安全性高于 ECB;IV 需保密(防止首組被篡改)。
  3. 密碼反饋模式(CFB)
    • 特點:將分組密碼轉為流密碼,64 比特移位寄存器初始為 IV,加密輸出的前jjj比特與明文單元異或得密文,密文單元移入移位寄存器。
    • 優缺點:實時加密(無需填充),密文與明文等長;錯誤會傳播(影響后續解密)。
  4. 輸出反饋模式(OFB)
    • 特點:移位寄存器反饋加密算法的輸出(而非密文),即Si=EK(Si?1)S_i = E_K(S_{i-1})Si?=EK?(Si?1?),密文Ci=Pi⊕SiC_i = P_i \oplus S_iCi?=Pi?Si?
    • 優缺點:錯誤不傳播(僅影響當前單元),但易受篡改(密文比特翻轉會導致明文對應比特翻轉)。

國際數據加密算法(IDEA)

  1. 基本參數
    • 分組長度:64 比特;密鑰長度:128 比特;輪數:8 輪迭代 + 1 輪輸出變換。
  2. 核心運算
    • 三種非線性運算(確保混淆與擴散):
      • 逐比特異或(⊕\oplus);
      • 2162^{16}216加法(+++);
      • 216+12^{16}+1216+1乘法(⊙\odot,0 視為2162^{16}216)。
  3. 加密流程
    • 明文分為 4 個 16 比特子段(X1,X2,X3,X4)(X_1, X_2, X_3, X_4)(X1?,X2?,X3?,X4?)
    • 每輪用 6 個子密鑰,通過 “乘加(MA)結構” 處理,輸出 4 個子段;
    • 輸出變換:用 4 個子密鑰,調整子段順序以抵消最后一輪的交換。
  4. 解密
    • 子密鑰為加密子密鑰的逆元(模216+12^{16}+1216+1乘法逆元、模2162^{16}216加法逆元),輪密鑰順序相反。

高級加密標準(AES,Rijndael)

  1. 基本參數
    • 分組長度(NbN_bNb?):128/192/256 比特(對應列數 4/6/8);
    • 密鑰長度(NkN_kNk?):128/192/256 比特(對應列數 4/6/8);
    • 輪數(NrN_rNr?):10/12/14 輪(依分組和密鑰長度而定)。
  2. 數學基礎
    • 基于有限域GF(28)GF(2^8)GF(28),元素表示為 8 次多項式(系數為 0/1),加法為異或,乘法模不可約多項式m(x)=x8+x4+x3+x+1m(x) = x^8 + x^4 + x^3 + x + 1m(x)=x8+x4+x3+x+1(十六進制 “11B”)。
  3. 輪函數
    • 字節代換(SubBytes):通過 S 盒(非線性變換,先求GF(28)GF(2^8)GF(28)逆元,再仿射變換)替換每個字節;
    • 行移位(ShiftRow):第 0 行不動,第 1 行左移 1 位,第 2 行左移 2 位,第 3 行左移 3 位(依NbN_bNb?調整);
    • 列混合(MixColumn):每列視為GF(28)GF(2^8)GF(28)上多項式,與固定多項式c(x)=03x3+01x2+01x+02c(x) = 03x^3 + 01x^2 + 01x + 02c(x)=03x3+01x2+01x+02x4+1x^4+1x4+1相乘;
    • 密鑰加(AddRoundKey):狀態與輪密鑰逐比特異或。
    • 最后一輪無 “列混合”。
  4. 密鑰擴展
    • 種子密鑰擴展為Nb×(Nr+1)N_b \times (N_r + 1)Nb?×(Nr?+1)個字(4 字節),通過循環移位、S 盒代換、輪常量異或生成子密鑰。
  5. 解密
    • 用逆變換(逆字節代換、逆行移位、逆列混合),輪密鑰為加密輪密鑰的逆序(最后一輪密鑰不變,其余經逆列混合處理)。

中國商用密碼 SM4

  1. 基本參數
    • 分組長度:128 比特;密鑰長度:128 比特;輪數:32 輪。
  2. 核心部件
    • S 盒:8 輸入 8 輸出非線性替換,基于固定表;
    • 非線性變換(τ\tauτ:4 個 S 盒并行處理 4 字節;
    • 線性變換(LLLL(B)=B⊕(B?2)⊕(B?10)⊕(B?18)⊕(B?24)L(B) = B \oplus (B \ll 2) \oplus (B \ll 10) \oplus (B \ll 18) \oplus (B \ll 24)L(B)=B(B?2)(B?10)(B?18)(B?24),實現擴散;
    • 合成變換(TTTT(X)=L(τ(X))T(X) = L(\tau(X))T(X)=L(τ(X)),結合混淆與擴散。
  3. 加密流程
    • 明文分為 4 個 32 比特子段(X0,X1,X2,X3)(X_0, X_1, X_2, X_3)(X0?,X1?,X2?,X3?)
    • 32 輪迭代:Xi+4=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)X_{i+4} = X_i \oplus T(X_{i+1} \oplus X_{i+2} \oplus X_{i+3} \oplus rk_i)Xi+4?=Xi?T(Xi+1?Xi+2?Xi+3?rki?)rkirk_irki?為輪密鑰;
    • 反序處理:(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)(Y_0, Y_1, Y_2, Y_3) = (X_{35}, X_{34}, X_{33}, X_{32})(Y0?,Y1?,Y2?,Y3?)=(X35?,X34?,X33?,X32?)
  4. 密鑰擴展
    • 由 128 比特密鑰生成 32 個輪密鑰,使用固定常數FKFKFK和參數CKCKCK,通過T′T'T變換(線性變換L′L'L替代LLL)生成。

祖沖之密碼(ZUC)

  1. 結構
    • 三層邏輯:16 級線性反饋移位寄存器(LFSR)、比特重組(BR)、非線性函數(F)。
    • LFSR:16 個 31 比特寄存器,特征多項式為GF(231?1)GF(2^{31}-1)GF(231?1)上的本原多項式,支持初始化(引入非線性函數輸出)和工作模式。
    • 比特重組:從 LFSR 抽取 128 比特,組成 4 個 32 比特字(X0,X1,X2,X3)(X_0, X_1, X_2, X_3)(X0?,X1?,X2?,X3?)
    • 非線性函數:壓縮 96 比特(X0,X1,X2X_0, X_1, X_2X0?,X1?,X2?)為 32 比特,含 S 盒(4 個 8×8 S 盒并行)和線性變換。
  2. 應用
    • 用于 4G 移動通信加密(128-EEA3 算法),基于初始密鑰和向量生成密鑰流,與消息異或實現加解密。

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

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

相關文章

單片機(STM32-WIFI模塊)

一、WIFI模塊介紹 1. ESP12-F模組介紹 1.1 簡介 ESP12-F模組(安信可(Ai-Thinker)ESP8266系列模組)是一款基于樂鑫(Espressif)公司ESP8266芯片的Wi-Fi無線通信模塊,廣泛應用于物聯網&#xff0…

PyTorch 數據類型和使用

關于PyTorch的數據類型和使用的學習筆記 系統介紹了PyTorch的核心數據類型Tensor及其應用。Tensor作為多維矩陣數據容器,支持0-4維數據結構(標量到批量圖像),并提供了多種數值類型(float32/int64等)。通過…

[python刷題模板] LogTrick

[python刷題模板] LogTrick 一、 算法&數據結構1. 描述2. 復雜度分析3. 常見應用4. 常用優化二、 模板代碼1. 特定或值的最短子數組2. 找特定值3. 找位置j的最后一次被誰更新4. 問某個或和的數量三、其他四、更多例題五、參考鏈接一、 算法&數據結構 1. 描述 LogTric…

Vim與VS Code

Vim is a clone, with additions, of Bill Joys vi text editor program for Unix. It was written by Bram Moolenaar based on source for a port of the Stevie editor to the Amiga and first released publicly in 1991.其實這個本身不是 IDE (只有在加入和配置…

[2025CVPR-圖象分類方向]CATANet:用于輕量級圖像超分辨率的高效內容感知標記聚合

?1. 研究背景與動機? ?問題?:Transformer在圖像超分辨率(SR)中計算復雜度隨空間分辨率呈二次增長,現有方法(如局部窗口、軸向條紋)因內容無關性無法有效捕獲長距離依賴。?現有局限?: SPI…

課題學習筆記3——SBERT

1 引言在構建基于知識庫的問答系統時,"語義匹配" 是核心難題 —— 如何讓系統準確識別 "表述不同但含義相同" 的問題?比如用戶問 "對親人的期待是不是欲?",系統能匹配到知識庫中 "追名逐利是欲…

在Word和WPS文字中把全角數字全部改為半角

大部分情況下我們在Word或WPS文字中使用的數字或標點符號都是半角,但是有時不小心按錯了快捷鍵或者點到了輸入法的全角半角切換圖標,就輸入了全角符號和數字。不用擔心,使用它們自帶的全角、半角轉換功能即可快速全部轉換回來。一、為什么會輸…

數據結構的基本知識

一、集合框架1、什么是集合框架Java集合框架(Java Collection Framework),又被稱為容器(container),是定義在java.util包下的一組接口(interfaces)和其實現類(classes).主要表現為把多個元素(element)放在一個單元中,用于對這些元素進行快速、便捷的存儲(store&…

WebStack-Hugo | 一個靜態響應式導航主題

WebStack-Hugo | 一個靜態響應式導航主題 #10 shenweiyan announced in 1.3-折騰 WebStack-Hugo | 一個靜態響應式導航主題#10 ?編輯shenweiyan on Oct 23, 2023 6 comments 7 replies Return to top shenweiyan on Oct 23, 2023 Maintainer Via:我給自己…

01 基于sklearn的機械學習-機械學習的分類、sklearn的安裝、sklearn數據集、數據集的劃分、特征工程中特征提取與無量綱化

文章目錄機械學習機械學習分類1. 監督學習2. 半監督學習3. 無監督學習4. 強化學習機械學習的項目開發步驟scikit-learn1 scikit-learn安裝2 sklearn數據集1. sklearn 玩具數據集鳶尾花數據集糖尿病數據集葡萄酒數據集2. sklearn現實世界數據集20 新聞組數據集3. 數據集的劃分特…

攜全雙工語音通話大模型亮相WAIC,Soul重塑人機互動新范式

近日,WAIC 2025在上海隆重開幕。作為全球人工智能領域的頂級盛會,本屆WAIC展覽聚焦底層能力的演進與具體垂類場景的融合落地。堅持“模應一體”方向、立足“AI社交”的具體場景,Soul App此次攜最新升級的自研端到端全雙工語音通話大模型亮相&…

第2章 cmd命令基礎:常用基礎命令(1)

Hi~ 我是李小咖,主要從事網絡安全技術開發和研究。 本文取自《李小咖網安技術庫》,歡迎一起交流學習🫡:https://imbyter.com 本節介紹的命令有目錄操作(cd)、清屏操作(cls)、設置顏色…

Java 10 新特性解析

Java 10 新特性解析 文章目錄Java 10 新特性解析1. 引言2. 本地變量類型推斷(JEP 286)2.1. 概述2.2. 使用場景2.3. 限制2.4. 與之前版本的對比2.5. 風格指南2.6. 示例代碼2.7. 優點與注意事項3. 應用程序類數據共享(JEP 310)3.1. …

【WRF工具】服務器中安裝編譯GrADS

目錄 安裝編譯 GrADS 所需的依賴庫 conda下載庫包 安裝編譯 GrADS 編譯前檢查依賴可用性 安裝編譯 GrADS 參考 安裝編譯 GrADS 所需的依賴庫 以統一方式在 $HOME/WRFDA_LIBS/grads_deps 下安裝所有依賴: # 選擇一個目錄用于安裝所有依賴庫 export DIR=$HOME/WRFDA_LIBS庫包1…

數據結構之隊列(C語言)

1.隊列的定義: 隊列(Queue)是一種基礎且重要的線性數據結構,遵循先進先出(FIFO)?? 原則,即最早入隊的元素最先出隊,與棧不同的是出隊列的順序是固定的。隊列具有以下特點&#xff…

C#開發基礎之深入理解“集合遍歷時不可修改”的異常背后的設計

前言 歡迎關注【dotnet研習社】&#xff0c;今天我們聊聊一個基礎問題“集合已修改&#xff1a;可能無法執行枚舉操作”背后的設計。 在日常 C# 開發中&#xff0c;我們常常會操作集合&#xff08;如 List<T>、Dictionary<K,V> 等&#xff09;。一個新手開發者極…

【工具】圖床完全指南:從選擇到搭建的全方位解決方案

前言 在數字化內容創作的時代&#xff0c;圖片已經成為博客、文檔、社交媒體等平臺不可或缺的元素。然而&#xff0c;如何高效、穩定地存儲和分發圖片資源&#xff0c;一直是內容創作者面臨的重要問題。圖床&#xff08;Image Hosting&#xff09;作為專門的圖片存儲和分發服務…

深度學習篇---PaddleDetection模型選擇

PaddleDetection 是百度飛槳推出的目標檢測開發套件&#xff0c;提供了豐富的模型庫和工具鏈&#xff0c;覆蓋從輕量級移動端到高性能服務器的全場景需求。以下是核心模型分類、適用場景及大小選擇建議&#xff08;通俗易懂版&#xff09;&#xff1a;一、主流模型分類及適用場…

cmseasy靶機密碼爆破通關教程

靶場安裝1.首先我們需要下載一個cms靶場CmsEasy_7.6.3.2_UTF-8_20200422,下載后解壓在phpstudy_pro的網站根目錄下。2.然后我們去訪問一下安裝好的網站&#xff0c;然后注冊和鏈接數據庫3.不知道自己數據庫密碼的可以去小皮面板里面查看4.安裝好后就可以了來到后臺就可以了。練…

【C語言】指針深度剖析(一)

文章目錄一、內存和地址1.1 內存的基本概念1.2 編址的原理二、指針變量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指針變量和解引用操作符&#xff08;*&#xff09;2.2.1 指針變量2.2.2 指針類型的解讀2.2.3 解引用操作符2.3 指針變量的大小三、指針變量類型的…