分組密碼(一) — 密碼學復習(四)


  講完古典密碼之后,接下來將介紹現代密碼。

  引入

  古典密碼——對稱密碼算法的雛形

古典密碼的特色:

  ① 共享同一個密鑰:加解密密鑰相同,或者由加密密鑰很容易得到解密密鑰。

  ② 信息的“攪拌”:攪亂明文26各字母信息,使得明文、密文、密鑰之間的統計關系變的混亂。

  現代對稱密碼算法設計核心

  現代對稱密碼體制的加解密算法是可以公開的,只要密鑰不泄露就行。現代對稱密碼又可以分為分組密碼和序列(流)密碼。下面主要是對分組密碼進行介紹。

  4.1 分組密碼

  分組密碼的定義:

  分組密碼是將明文數據序列按照固定長度進行分組,讓后在同一密鑰控制下用同一算法逐組進行加密,從而將各個明文分組變成一個長度固定的密文分組的密碼。

分組密碼的主要特點:

 

  同一密鑰

  同一加密算法

  分組加密

  分組長度固定

  加密:ci=E(mi),i=1,2,...,c=c1c2...,m=m1m2...

  分組密碼的數學描述:

  將明文消息分組逐組加密

  將明文消息編碼表示后的數學序列x0,x1,...,xi,...划分成長為n的組x=(x0,x1,...,xn-1).

  各組(長為n的矢量)分別在密鑰k=(k0,k1,...,kt-1).控制變換成輸出序列y=(y0,y1,...,ym-1)(長為m的矢量)。

  其加密函數E:Vn×K->Vm,Vn和Vm分別是n維和m維矢量空間,K為密鑰空間。

 

  明文分組長度為n,密文分組長度為m.

  ① 若n>m,則稱其為有數據壓縮的分組密碼。

  ② 若n<m,則稱其為有數據擴展的分組密碼。

  通常取n=m,在二元情況下,明文x和密文y均為二元數字序列。它們的每個分量xi,yi∈GF(2).

  常用的分組密碼算法:

國際一些現行的標准:DES、3DES、IDEA、AES

中國分組密碼算法標准(國密算法、商用算法):SM4

  分組密碼設計原則:

① 安全原則

  安全性是分組密碼設計時應考慮的最重要因素,人們一般將Shannon提出的混淆原則擴散原則作為保證分組密碼安全性的兩個基本設計原則。

② 實現原則

  硬件實現原則 & 軟件實現原則

  “雪崩效應”

  在密碼學中雪崩效應是指加密算法(尤其是塊密碼和加密散列函數)的一種理想屬性。

  雪崩效應是指當輸入發生最微小的改變(例如:反轉一個二進制位)時,也會導致輸出的不可區分性改變(輸出中每個二進制位50%的概率發生反轉)。

  合格塊密碼中,無論密鑰或明文的任何細微變化都必須引起密文的不可區分性改變。

  目的是抗擊敵手對密碼系統的統計分析。

  擴散的實現方法

  擴散:就是將明文的統計特性分布到密文中去。

  實現方式是使得明文的每一位影響密文中多位的值,等價於說密文中每一位均受明文中多位影響。這時明文的統計特性將被散布到密文中。

  因而每一字母在密文中出現的頻率比在明文中出現的頻率更接近於相等,雙字母及多字母出現的頻率也更接近於相等。

  在二元分組密碼中,可對數據重復執行某個置換,再對這一置換作用於某一函數(代換),可獲得擴散。(置換+代換)

  擴散的目的:使明文和密文之間的統計關系變得盡可能復雜,以使敵手無法得到密鑰。

  混淆的實現方法

  混淆:是是密文和密鑰之間的統計關系變得盡可能復雜,以使敵手無法得到密鑰。

  即使敵手能得到密文的一些統計關系,由於密鑰和密文之間的統計關系復雜化,敵手也無法獲得密鑰。

  使用復雜的代換算法可以得到預期的混淆效果。簡單的線性代換函數得到的混淆效果則不夠理想,一般采用非線性代換

   擴散和混淆成功地實現分組密碼本質屬性,因而成為設計現代分組密碼的基礎。

  分組密碼的設計方法

  ① 乘積密碼  ② 迭代密碼

① 乘積密碼

  Shannon提出乘積密碼的思想。乘積密碼的基本思想是:通過將一個易於實現的具有一定混亂和擴散結構的較弱的密碼函數進行多次迭代來產生一個強的密碼函數。

  主要思想:通過簡單密碼的乘積來組合密碼體制。

 

(1)乘法密碼

  設M=C=Z26,K={a∈Z26;gcd(a,26)=1},對於a∈K,明文x,密文y,定義:

Ea(x)=ax (mod 26)

Da(y)=a-1y (mod 26)

(2)移位密碼

  對於k∈K,明文x,密文y,定義:

 

Ek(x)=(x+k) (mod 26)

 

Dk(y)=(y-k) (mod 26)

  假設S1是乘法密碼,S2是移位密碼,很容易看出S1×S2是仿射密碼。

  對於S1×S2,其密鑰形式為(a,k)

E(a,k)(x)=(ax+k) (mod 26)

  對於S2×S1,其密鑰形式為(k,a)

E(k,a)(x)=(ax+ak) (mod 26)

② 迭代密碼 

  當今大多數分組密碼都是乘積密碼,乘積密碼通常伴隨一系列置換與代替操作,常見的乘積密碼是迭代密碼。

  迭代密碼通過講一個弱的密碼函數(稱為圈函數、輪函數等)迭代若干次,產生一個強的密碼函數,既能快速、有效地實現,又能使明文和密鑰得到必要的混淆和擴散。

  g稱為圈變換、圈函數或輪函數。Nr稱為迭代次數、圈數或輪數。(K1,K2,...,KNr)是r個圈子秘鑰。

  在設計圈函數時,要充分利用代換密碼置換密碼各自的優點,抵消各自的缺點,保證通過多次迭代,形成一個強的分組密碼算法。

 

典型的迭代密碼:

  明確定義一個輪函數和一個密鑰編排方案,一個明文的加密將通過Nr輪類似過程。

  K——確定長度的隨機二元密鑰

  用K生成Nr個輪密鑰(也稱為子密鑰)K1,K2,...,KNr,其列表(K1,K2,...,KNr)即為密鑰編排方案,它是由K經過一個固定的、公開的算法生成的。

  輪函數g

  輪函數g以輪密鑰Kr和當前狀態Wr-1作為它的兩個輸入,下一個狀態定義為Wr,初態W0被定義為明文x,密文y定義為經過Nr輪后的狀態。有

Wr=g(Wr-1,Kr)

  加密過程:

W<- x       初態

W<- g(W0,K1)  第1輪

W<- g(W1,K2)  第2輪

...

WNr-1 <- g(WNr-2,KNr-1)  第Nr-2輪

WNr <- g(WNr-1,KNr)    第Nr-1輪

y <- WNr          第Nr

  為解密,g在第二個變量固定的情況下,必須是單射,即等價於存在g-1,g-1(g(w,k),k)=w.

  解密過程:

WNr <- y

WNr-1 <- g-1(WNr,KNr)

...

W<- g-1(W2,K2)

W0 <- g-1(W1,K1)

x <- W0

迭代密碼常見的模型有S-P網絡(代替-置換網絡)Feistel網絡等。

代替-置換網絡(S-PN)Substitution-Permutation

  一個S-PN就是一類特殊的迭代密碼,設l和m都是正整數,明密文都是長為lm的二元向量。一個S-PN包含兩個變換,分別記為∏s和∏p.

  ∏s:{0,1}l -> {0,1}l 實現l比特的代替,即S盒。

  ∏p:{1,2,...,lm} -> {1,2,...,lm},實現lm比特的置換,即P盒。 

  x=(x1,x2,...,xm)=x<1>||x<2>||...||x<m>.

  x<i>=(x(i-1)l+1,x(i-1)l+2,...,xil),1≤i≤m.

S-PN特點:

  由Nr輪組成,在每一輪(最后一輪稍有不同),先用異或操作混入該輪的輪密鑰,再用∏s進行m次代換,然后用∏p進行一次置換

密碼體制 3.1 代換-置換網絡

 

 

 

 

 

算法 3.1

① 對密鑰編排方案適當修改並用S盒的逆代替S盒,該算法也能用於解密。

② 第一個和最后一個異或輪密鑰(白化)使得一個不知道密鑰的攻擊者,無法開始進行一個加密或解密操作。

  非線性替換S一般稱為混亂層,主要起混亂的作用;線性置換P一般稱為擴散層,主要起擴散的作用。

  優點:

 ① 結構清晰、容易分析和把握每層密碼學指標,從而把握密碼學的安全性;

② 擴散較Feistel結構快。

  缺點:

不容易得到對合的密碼算法。

  Fristel體制

  ① 單輪Feistel

  Feistel模型將輸入(2w位)分成相同長度的兩部分Li和Ri,按如下方式進行變換。

  

  ② Feistel模型的特點

  (1)每輪的輸入(明文分組或上輪的輸出)被分成左右兩半;

  (2)右邊一半數據直接作為輸出的左邊一半;

  (3)輸出的右邊一半由輸入的左邊一半異或右邊一半輸入在一個函數F作用下的結果而得到的;

  (4)F函數是輪變換的核心,它被稱為輪函數。輪函數F有兩個輸入:本輪的右邊一半輸入和本輪的輪(子)密鑰;

  (5)輪函數F得到結構式固定不變的,這是各輪的輸入不斷變化;

  (6)輪函數中包含了代換、置換以及換入子密鑰的操作;

  (7)加解密算法的結構相同,只是子密鑰的使用出相反。 

  ③ Feistel模型的設計要求

分組大小:

  分組越大,安全性越高,但速度也就越慢。

密鑰大小:

  密鑰越長,安全性越高,但速度也就越慢。

循環次數:

  循環越多,安全性越高。

圈函數:

  復雜性越高則抗擊密碼分析的能力就越強。

子密鑰產生算法:

  復雜性越高,則密碼分析的難度就越大。

  此外還要考慮算法的執行速度,設計算法便於分析。

  ④ 優點:

(1)不管f是什么函數,基本函數都可逆,進而確保輪函數可逆以及整個密碼算法可逆;

(2)由於基本函數是對合的,進而確保輪函數是對合的,以及整個密碼算法是對合的。

這使得密碼算法的設計變得比較容易。

  ⑤ 缺點:

擴散速度慢,算法迭代2輪才能改變輸入的每一位。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM