目 錄
移位密碼,替換密碼,放射密碼,希爾密碼,維吉尼亞密碼
DES,AES,RSA
1 基本概念(*)
密碼學又分爲密碼編碼學(Cryptography)和密碼分析學(Cryptanalysis)。
在密碼學中,一個密碼體制或密碼系統是指由明文、密文、密鑰、加密算法和解密算法所組成的五元組。
明文是指未經過任何變換處理的原始消息,通常用m(message)或p( plaintext)表示。所有可能的明文有限集組成明文空間,通常用M或P表示。
密文是指明文加密後的消息,通常用c(ciphertext)表示。所有可能的密文有限集組成密文空間.通常用C表示。
密鑰是指進行加密或解密操作所需的祕密/公開參數或關鍵信息,通常用k(key)表示。所有可能的密鑰有限集組成密鑰空間,通常用K表示。
加密算法是指在密鑰的作用下將明文消息從明文空間映射到密文空間的一種變換方法,該變換過程稱爲加密,通常用字母E表示,即c= EK(m)。
解密算法是指在密鑰的作用下將密文消息從密文空間映射到明文空間的一種變換方法,該變換過程稱爲解密,通常用字母D表示,即m= DK(c)。
2 密碼分析學
(1)唯密文攻擊(Ciphertext only Attack)
(2)已知明文攻擊(Known Plaintext Attack)
(3)選擇明文攻擊(Chosen Plaintext Attack)
(4)選擇密文攻擊(Chosen Ciphertext Attack)
(5)選擇文本攻擊(Chosen Text Attack)
3 密碼分類
3.1 置換密碼
1)列變位法
I n f o r
m a t i o
n S e c u
r i t y T
e c h n o
l o g y
密文是:ImnrelnaSicoftethgoicynyrouTo
2)矩陣變位加密
1 2 3 4 5 6
N e t w o r
k S e c u
r i t y 按5、2、6、4、1、3的列序重新排列,
密文爲:oerwNtc uekS i yrt
3.2 代換密碼
1)單表代換
(1)移位密碼
K = 3 是凱撒密碼
(2)替換密碼
(3)仿射密碼(*)
2)多表代換
(1)希爾密碼(*)
解密方法
KM = C => K'KM = K'C 即M = K'C
所以要求出E的逆矩陣,根據AA' = E求。
(2)維吉尼亞密碼(*)
3.3 分組密碼
(1)對稱密碼體制:
K1=K2 或K2=f(K1)
優點:
(a)加密和解密的速度都比較快,具有較高的數據吞吐率;
(b)對稱密碼體制中所使用的密鑰相對較短;
(c)密文的長度往往與明文長度相同。
缺點:
(a)密鑰分發需要安全通道,需要付出的代價較高;
(b)密鑰量大,難於管理。
(2)非對稱密碼體制:
K1和K2不相同,且不能從公鑰推出私鑰,或者說從公鑰推出私鑰在計算上是不可行的 。
優點:
(a)密鑰的分發相對容易。
(b)密鑰管理簡單。
(c)可以有效地實現數字簽名。
缺點:
(a)與對稱密碼體制相比,非對稱密碼體制加解密速度較慢;
(b)同等安全強度下,非對稱密碼體制要求的密鑰長度要長一些;
(c)密文的長度往往大於明文長度。
1)DES(*)
(1)基本算法
DES是對數據分組加密的分組密碼算法,分組長度爲64位。每64位明文加密成64位密文,沒有數據壓縮和擴展。
密鑰長度爲56位,若輸入64位,則8,16,32,40,48,56,64位爲奇偶校驗位。
(2)流程描述
首先對輸入的64爲明文進行初始置換。
然後進行16次迭代
最後進行逆置換
迭代運算 初始置換
(3)迭代運算描述
對置換後的數據X0分爲左右兩部分,左邊L0,右邊R0.
對R0進行f變換,結果爲f(R0,K1),得到的32位輸出再與L0逐位異或。
異或結果爲下一輪R1,原R0變爲下一輪L1.
循環16次,最終爲R16,L16
f變換
f函數可以記爲f(A,J),其中A是32位輸入,J爲48位輸入。第i輪的A = Ri-1,J = Ki, f(A,J)輸出爲32位。(k位子密鑰)
s變換
將32位的A經過擴展運算變爲48位,記作E(A)。與J運算,E(A)⊕J=B,對B實行代換S。此代換由8個盒組成,S-盒。
每個S-盒有6位輸入,記作Bi;4位輸出,記作Ci。將B分爲8組,每組6位:記爲b0b1b2b3b4b5b6;取x = b0b5,y=b1b2b3b4;則找到座標(x,y)=( b0b5, b1b2b3b4),查找S表,進行壓縮運算。
(4)子密鑰產生運算
p變換
64位的密鑰——剔除8個校驗位->56的初始密鑰——置換1後分爲左右兩個28位的,進行左移,置換2操作後又變爲48位。
置換1是64變56,置換2是56變48。
工作模式
補充:DES先按64位分組,稱爲區塊,不足64位的叫短塊。短塊的處理方法:填充法、序列密碼加密法、密文挪用技術。
根據加密區塊之間的聯繫方式可以分爲:ECB、CBC、CFB、OFB
ECB:基本工作模式,加密區塊依次獨立加密,互不影響。加密完後再連起來。
CBC:第一個加密區塊先於初始向量異或再加密,其他每個加密區塊必須與前一個加密區塊的密文異或之後再加密。
CFB:流密碼加密器一樣,按照需要,每次加密的區塊大小自定;每個加密區塊必須與前一個加密區塊的密文異或之後再加密。
OFB:類似CFB,不同的是之前區塊加密後的結果爲獨立產生,不受之前區塊的影響。
DES的安全性
(1) DES的密鑰長度(56位)可能太短;
(2) DES的迭代次數可能太少;
(3) S-盒中可能有不安全因素;
(4) DES的一些關鍵部分不應當保密
2)AES
AES的密鑰長度可以是128、192、256位三種情況。
AES的輸入數據都是128位。
加密解密過程:
首先對明文、密文進行一次密鑰加變換,接下來進行多輪循環運算。(循環輪數由密鑰長度決定,依次爲10、12、14輪)
AES採用替代/置換(SP)網絡結構,各輪AES加密循環(除最後一輪外)均包含4個步驟:
(1) 輪密鑰加運算(AddRoundKey)
在每次的加密循環中,都會由主密鑰產生一把輪密鑰,這把密鑰大小會跟原矩陣一樣,然後與原矩陣中每個對應的字節作異或(⊕)加法。
(2) 字節代換(SubBytes)
矩陣中的各字節通過一個8位的S-box進行轉換。S-box與有限域GF(28)上的乘法逆有關。
(3)行位移變換(ShiftRows)
將矩陣中的每個橫列進行循環式移位。
(4)列混合變換(MixColumns)
爲了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每內聯的四個字節。
3)RSA(*)
加密模型算法描述:
(1) 選擇一對不同的、足夠大的素數p,q,計算n=pq;
(2)計算Φ(n)=(p-1)(q-1) ;
(3) 找一個與Φ(n)互素的數e,且1<e<Φ(n)(令sk=e);
(4) 計算pk,使得pk*sk≡1 mod Φ(n)。
(5) 得到公開密鑰KU = {pk,n},私人密鑰KP = {sk,n}
RSA算法的安全性完全取決於 P、Q的保密性以及分解大數的難度