文章目錄
寫在前面
由於老師後來給畫了重點,本篇博客後半部分主要記錄的是老師畫的重點。個人複習使用,僅供參考
對於河南大學的學弟學妹們,如果你們任課老師是袁老師的話,他會給複習要點,跟着複習要點有針對性的複習就行。
1.引言
知識點
1.在本書中,c指密文,m指明文,E()表示加密函數,D()表示解密函數
2.仿射變換:加密和解密中a,b爲祕鑰 (屬於單表變換)
c=Ea,b(m)=am+b(mod 26)
m=Da,b(m)=a-1(c-b)(mod 26)
注意a-1*a≡1 mod 26
3.多表代換密碼:其中A爲n*n的矩陣,n等於幾代表明文每幾個分成一組。一般N爲26。
Ci≡AMi+B(mod N),i=1,2,3…
Mi≡A-1(Ci-B)(mod N),i=1,2,3…
4.人爲攻擊分爲
- 被動攻擊 就是竊聽,是對系統保密性的攻擊
- 獲取信息的內容
- 業務流分析 敵收無法獲得消息但可能獲得通信雙方身份、次數…
- 主動攻擊 對數據流的篡改或產生假數據流
- 中斷 如破壞硬件、系統是對系統可用性的攻擊
- 篡改 修改數據是對系統完整性的攻擊
- 僞造 如插入僞造消息或記錄,是對系統真實性的攻擊
被動攻擊不改變消息而主動攻擊改變消息內容
抵抗被動攻擊:預防 抵抗主動攻擊:檢測修復
5.密碼算法的安全性包括哪兩類??(暫時沒找到)
6.密鑰管理:密鑰產生、分配、存儲、銷燬等問題
7.密碼體質從原理上可分爲兩類
- 對稱(單鑰)密碼體制 (可用於數據加密和消息認證)
- 流密碼 逐位加密
- 分組密碼 消息分組,逐組加密
- 非對稱(雙鑰)密碼體制 兩密鑰,一公開一私密
8.對密碼系統的攻擊按攻擊者可獲取的信息量可分爲
- 唯密文攻擊 僅知道一些密文
- 已知明文攻擊 知道一些密文和相應的明文
- 選擇明文攻擊 密碼分析者可以選擇一些明文並得到相應的密文
- 選擇密文攻擊 密碼分析者可以選擇一些密文,並得到相應的明文
以上攻擊都建立在已知算法的基礎之上,且攻擊強度依次增加
9.單向陷門函數就是有一個陷門的一類特殊單向函數。
若y=f(x),已知x很容易計算y,但已知y很難計算x(單向性)。特別的是存在一個z使得知道了z那麼就很容易由y計算出x,那麼z則稱爲陷門(有陷門也稱後門)
10.加密算法滿足下列兩點則認爲是計算上安全的
- 破譯密文的代價超過被加密信息的價值
- 破譯密文所花的時間超過信息的有用期
11.攻擊密碼體制的常用方法
- 窮舉攻擊 (解決方法 : 增大密鑰量)
- 統計分析攻擊 (解決方法:使明文的統計特性與密文的統計特性不一樣)
- 數學分析攻擊 (解決方法:選用足夠複雜的加密算法)
12.密鑰體制組成部分(加密系統的五元組):明文,密文,密鑰,加密算法,解密算法。
13.一個好密鑰體制至少應滿足的兩個條件:
- 已知明文和加密密鑰計算密文容易,已知密文和解密密鑰計算明文容易
- 在不知解密密鑰的情況下,不可能由密文 c 推出明文
14.清楚信息安全專業學習密碼學的原因 (非標準答案)(必考!)
答:信息在社會中的地位和作用越來越重要,則其安全愈發重要,而密碼學是保障信息安全的核心技術。可以說沒有密碼學就沒有信息安全。
習題
1.設由仿射變換對一個明文加密得到的密文爲edsgickxhuklzveqzvkxwkzukvcuh,又已知明文的前兩個字符是“if",對該密文解密。
答:e=4 d=3 i=8 f=5 (26個字母下標從0開始)Ea,b(m)=am+b(mod 26)
E(i)=e,4≡8*a+b(mod 26)
E(f)=d,3≡5*a+b(mod 26)
由上述兩個式子可推出a=9,b=10,所以m=9-1(c-10)(mod 26)
2.設多表代換密碼C≡AMi+ B(mod26)中,A是2X2矩陣,B是0矩陣,又知明文“dont”被加密爲“elni”,求矩陣A。
注意矩陣相乘的結果要模26,上式求b的時候算得125b=13,其實應是125b≡13(mod 26),即爲21b≡13(mod 26),解得b=13,其他類似
2.流密碼
知識點
1.流密碼的基本思想: (必考!)
2.流密碼中密鑰流就等於明文串和密文串異或
3.移位寄存器是流密碼產生密鑰流的一個重要組成部分
4.m序列密碼的破譯就是求密鑰流的遞推關係即am+i=cmai⊕cm-1ai+1⊕…⊕c1am+i-1
(公式中的m即題目說多少級級線性反饋移位寄存器就是多少)
比如是3級,我們求得是ai+3,當i=1,i+3=4即第四個這樣根據前三個就可知道後面所有的數
習題
1.求矩陣的逆(這章習題會用到,複習下)
核心公式:A-1=A*/|A|
若是三階矩陣:Aij=(-1)i+jMij,Mij爲除去aij所在那一行和那一列得到的二階矩陣
2.已知流密碼的密文串1010110110和相應的明文串0100010001,而且還已知密鑰流是使用3級線性反饋移位寄存器產生的,試破譯該密碼系統。(和P65例2-6類似)
答:由已知可得密鑰流爲1010110110⊕0100010001=1110100111,因爲是3級線性反饋
按照上面矩陣:a4=c3*a1+c2*a2+c1*a3正是密鑰流遞推關係(m=3,i=1然後是m=3,i=2…)
記住c從高到低,a從低到高
3.如圖是一個3級反饋移位寄存器,其初始狀態爲(a1,a2,a3)=(1,0,1),求輸出序列
從圖中可看到a1、a2、a3經f函數送至左邊形成一個循環,比如f(a1,a2,a3)=b,那麼b將代替a3的位置,a3~a1均右移,所以a1輸出,以此類推。
答:f(a1,a2,a3)=f(1,0,1)=1*0⊕1=1,然後f(1,1,0)
可總結規律,右邊的3爲參與f函數生成的數放在左邊,然後以左邊這個數向右數3個數分別當做a3,a2,a1參與f生成的又放在最左邊…最後輸出是從右到左
即輸出序列爲10111011101…,週期爲4
3.分組密碼
知識點
1.分組密碼:將明文劃分爲長爲n的組x(x0,x1,…,xn-1),各組在密鑰k=(k0,k1,…kt-1)控制下變換成等長的數字序列y=(y0,y1,…ym-1)。實質是對字長爲n的數字序列的代換密碼 (一般m=n)
2.擴散和混淆是Shannon提出的設計密碼系統的兩個基本方法(分組密碼安全設計性原則) (瞭解)
- 擴散:使明文與密文之間的統計關係變得儘可能複雜,以使敵手無法得到密鑰
- 明文每一比特變換儘量多的影響密文序列的變化,以隱蔽明文的統計特性(雪崩效應)
- P盒(置換)用於擴散
- 混淆:使密文與密鑰之間的統計關係變得儘可能複雜,以使敵手無法得到密鑰
- S盒(代換)用於混淆
3.很多分組密碼結構本質都基於Feistel結構
將每組明文分爲左右兩半L0和R0,n輪迭代後再合在一起產生密文分組
第i輪迭代(代換): Li=Ri-1 (左等右上) Ri=Li-1⊕F(Ri-1,Ki) (右等左上異或F即右上和K)
最後一輪交換左右兩半數據(置換)
解密和加密本質過程一樣,密文作爲輸入,但使用子密鑰Ki的次序和加密相反(這一特性保證了加密和解密可用同一算法)
4.DES加密過程可分爲三個階段 (64比特明文,64比特密鑰(每個第8位設置奇偶校驗位實際56位))
- 初始置換IP,用於重排明文分組的64比特 (由IP置換表實現)
- 生成子密鑰
- 迭代過程即16輪變換(代換和置換)然後交換左右次序
- 逆初始置換IP-1
2️⃣ 生成子密鑰過程 參考:算法科普:神祕的 DES 加密算法 ,下同
56比特密鑰經PC-1置換後分爲左右C0和D0,然後由表左循環經PC-2產生48比特的本輪密鑰
3️⃣ 迭代過程等同於Feistel結構(左等右上,右等左上異或F),而其中用到的F函數爲:
5.分組密碼的運行模式
- ECB(電話本)模式 各明文組以同一密鑰加密
- CBC(密碼分組鏈接)模式 加密的輸入是當前明文組和前一密文組的異或
- CFB(密碼反饋)模式 每次處理j位輸入,上次密文加密產生僞隨機再與當前明文異或
- OFB(輸出反饋)模式 與CFB不同的是加密的輸入是前一次加密的輸出(與明文異或的那個)
2️⃣ CBC模式加解密示意圖 (必考!)
加密: Ci= Ek[Pi⊕Ci-1] (可認爲C0=IV) 解密:Pi= DK[Ci]⊕Ci-1
IV初始向量與第一個明文分組異或,應像密鑰一樣被保護。該模式能夠獲得保密性也可認證,適合加密64比特的消息
工作模式爲:它一次對一個明文分組加密,每次加密使用同一密鑰,加密算法的輸入是當前明文分組和前一次密文分組的異或,因此加密算法的輸入不會顯示出這次的明文分組之間的固定關係,所以重複的明文分組不會在密文中暴露出這種重複關係 (必須背會!)
6.AES是DES的替代者,也是當今最流行的對稱加密算法之一
AES輪函數包括字節代換、行移位、列混合、密鑰加
1️⃣ 字節代換:根據S盒把明文塊的每一個字節都替代成另外一個字節
2️⃣ 行移位:如第1行不變,第2行循環左移C1個字節,第3行左移C2個字節,第4行移C3 要根據表
3️⃣ 列混合:輸入數組每一列和修補矩陣的二維常量數組做矩陣相乘,得到對應的輸出列。
4️⃣ 密鑰加:輸入數組的每個字節a[i,j]與密鑰對應位置的字節k[i,j]異或一次,就生成了輸出值b[i,j]
7.SM4算法,數據和密碼分組均爲128比特
加密:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)(i=0,1,2…31)
後經反序R處理:(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)=R(X32,X33,X34,X35)
解密算法和加密算法相同,輪密鑰使用順序相反
8.GF(28)中 a*a-1=1(mod x8+x4+x5+x+1)
GF(2)上的可逆的仿射變換 (x是題目中a的逆)
習題
1.對字節a=1011 0110字節替代變換,設a的逆爲a-1 ( 必考!)
答:先求a的逆,再用仿射變換即可
1️⃣ 由a得(x7+x5+x4+x2+x)a-1 ≡ 1(mod x8+x4+x3+x+1)
所以a-1=x6+x5+x4+x3 即0111 1000 (二進制對應位數有1就代表有x的那一次方)
根據老師給的考試要點,仿射變換和m(x)題目會給出,a的逆試試就出來了
2️⃣ 使用仿射變換 (注意要用a的逆而且注意x的順序從下往上讀)
即(0100 1110)2=(4E)16 注意也是從下開始讀 因爲最下面的是字節高位即最前面的01…
2.利用DES算法和全0密鑰對輸入(1000 0001 1960 0000)進行一圈加密的結果 (需要查表P39)
答:1️⃣ 輸入的右半部分是1960 0000 = 0001 1001 0110 0000 0000 0000 0000 0000
2️⃣ 經E盒擴展後爲:000011 110010 101100 000000 000000 000000 000000 000000
3️⃣ 與全0密鑰對異或後爲:000011 110010 101100 000000 000000 000000 000000 000000
4️⃣ 經S盒後變爲:15 8 3 7 2 12 4 13 即1111 1000 0011 0111 0010 1100 0100 1101
5️⃣ 經P盒後變爲 1001 1100 1101 1000 1001 1010 1010 1110
6️⃣ 輸出的左半部分即輸入的右半部分爲1960 0000,輸出的右半部分爲F函數輸出和左半部分輸入異或即8cd8 9aaf,最終輸出爲 1960 0000 8cd8 9aaf
這題主要是加深對DES迭代過程的理解,由於要查表,考試應該不會考
3.在DES的ECB模式中,如果在密文分組中有一個錯誤,解密後僅相應的明文分組受到影響。然而在CBC模式中,將有錯誤傳播。加密解密圖中C1中的一個錯誤明顯地將影響到P1和P2的結果。
(1) P2後的分組是否受到影響?
(2)設加密前的明文分組P1中有1比特的錯誤,問這一錯誤將在多少個密文分組中傳播?
對接收者產生什麼影響?
答:1️⃣ CBC的加密: Ci= Ek[Pi⊕Ci-1],i≥2 解密:Pi= DK[Ci]⊕Ci-1,i≥1
若C1有錯誤,P2=DK[C2]⊕C1所以P2也會受影響,但i≥3時,Pi= DK[Ci]⊕Ci-1與C1無關因此不會受到影響
本題由於C1錯誤事實上C2、C3、C4…都會和原來不一樣,但即使它是錯的經密鑰解密後還是可以得到原明文(可理解爲是明文的另一種加密結果),所以說P2後不受影響
2️⃣ 若P1出錯,則C1會是錯的,由Ci= Ek[Pi⊕Ci-1]得,Ci≥2也都是錯誤的,因此會傳遞到每一個分組
由加密解密方式可知,若只是P1出錯,解密後得到的還是原來的輸入。即接收者解密後的P1和原來輸入的一樣會有1比特的錯誤,而其他的可以解密得到正確的明文
4.公鑰密碼
知識點
1.RSA加密解密 (必考!)
選倆素數p,q n=p*q φ(n)=(p-1)*(q-1) d*e ≡ 1 mod φ(n)
加密:c ≡ me mod n (e和n會給出)
解密:m ≡ cd mod n (一般d要自己求)
2.可能會用到的公式:a*b (mod q) = a (mod q) * b (mod q)
推測是RSA中me或cd可以拆成兩個乘積的形式
習題
1.RSA加密體制中,接收方的公開鑰是(e,n)=(5,35),接收到的密文是C=10,求明文M (必考!)
答:( m ≡ cd mod n 所以得先算出d -----> d*e ≡ 1 mod φ(n) )
n=35 所以 p=5,q=7
φ(35) = (p-1)*(q-1) =4*6=24
因爲 d*e ≡ 1 mod φ(n) 所以d=5 (這個到時候一個一個試就行)
m ≡ cd mod n ≡ 105 mod 35 ≡ 5 (注意不是等號)
2.假設明文m=5,e=7,p=11,q=13,給出RSA的加密解密過程 (必考!)
答:n=p*q=11*13=143 φ(143) = (p-1)*(q-1) = 10*12=120
因爲d*e ≡ 1 mod φ(n) 即d*7 ≡ 1 mod 120 所以 d=103
加密:c ≡ me mod n ≡ 57 ≡ 47 mod 143
解密:m ≡ cd mod n ≡ 47103 ≡ 5 mod 143
5.數字簽名
知識點
1.ElGamal簽名體制: (必考!)
用戶A的公鑰:y ≡ gx (mod p) x爲用戶A的私鑰
簽名的產生過程:
- 計算 r ≡ gk (mod p)
- 計算 s ≡ (H(m)-xr)k-1 (mod p-1) H(m)爲m的哈希值,計算取H(m)=m,注意是p-1
- (r,s)即爲簽名
簽名的驗證過程
- 計算yrrs ≡ gH(m) (mod p)
- 就是驗證 yrrs(mod p)是不是等於 gH(m) (mod p)
習題
1.ElGamal簽名體制中,假設p=19,g=13。簽名者A的私鑰爲x = 10,試計算公鑰。設消息M=15,k=11,求籤名過程並驗證。 (必考!)
答:公鑰:y ≡ gx mod p ≡ 1310 mod 19 = 6
簽名:r ≡ gk (mod p) ≡ 1311 mod 19 =2
s ≡ (H(m)-xr)k-1 (mod p-1) ≡ (m-xr)k-1 (mod p-1) ≡ (15-10*2)*11-1 mod 18 = 11
所以(r,s)=(2,11)
驗證:yrrs ≡ 62*211 mod 19 ≡ 8 ≡ gm (mod p) ≡ 1315 ≡ 8 mod 19
根據老師的重點中給出的a*b (mod q) = a (mod q) * b (mod q)應該是用在比如這題求62*211 mod 19就等同於求62 mod 19 * 211 mod 19 ≡ 17 *15 ≡ 8 mod 19
6.哈希函數
知識點
1.單向函數:已知h,求使得H(x)=h的x在計算上是不可行的。
2.弱單向哈希函數和強單向哈希函數 (必考!)
已知x,找出y (y≠x) 使得H(y)=H(x)在計算上是不可行的,若單向函數滿足這種性質則稱其爲弱單向哈希函數 (必須會背!)
找出任意兩個不同的輸入x、y,使得H(x)=H(y)在計算上是不可行的,若單向函數滿足這種性質則稱其爲強單向哈希函數 (必須會背!)
已知一個另找一個使得H函數相等是弱單向,任意給倆使其H函數相等是強單向(看誰單的很)
3.如果哈希函數對不同的輸入可產生相同的輸出,則稱該函數具有碰撞性。
4.抗弱碰撞哈希函數:對於任意給定的x,找到滿組足y≠x且H(x)=H(y)的y在計算上是不可行的
抗強碰撞哈希函數:找到任何滿足H(x)=H(y)的x,y在計算上是不可行的
7.認證技術
知識點
1.消息認證是一個過程,用於驗證接收消息的真實性(確實是它聲稱的實體發來的)和完整性(未被篡改、插入、刪除),同時還用於驗證消息的順序性和時間性(未重排、重放、延遲)以及消息的不可否認性。
8.密鑰分配與密鑰管理
知識點
1.Diffie-Hellman密鑰交換簡稱D-H密鑰交換的目的是使得兩個用戶能夠安全的交換密鑰,得到一個共享的會話密鑰,算法本身不能用於加密解密。
2.D-H密鑰交換協議: (必考!)
已知私鑰爲X,公鑰爲Y,p是一大素數,a是p的本原根,a和p公開,K爲共享密鑰
用戶A:計算YA=aXA mod p發送給B 共享密鑰K=YBXA mod p
用戶B:計算YB=aXB mod p發送給A 共享密鑰K=YAXB mod p
通過上述操作求得的兩個K值相等,這樣就安全的求得了一個公共的密鑰
習題
1.在Diffie- Hellman密鑰交換過程中,設大素數p=11,a=2是p的本原根。 (必考!)
(1) 用戶A的公開鑰YA=9,求其祕密鑰XA。
(2)設用戶B的公開鑰YB=3,求A和B的共享密鑰K。
答:1️⃣ YA=aXA mod p = aXA mod p 即 9=2XA mod 11 所以 XA=6 (考試時一個一個試就行)
2️⃣ K=YBXA mod p = 36 mod 11 =3
9.密碼協議
知識點
1.密碼協議是指利用密碼工具實現與安全相關的協議或函數的計算
10.可證明安全
知識點
1.可證明安全性:將密碼系統的安全性歸結爲某個經過深入研究的數學難題(如大整數素因子分解、計算離散對數等),數學難題被證明求解困難。這種評估方法存在的問題是它只說明瞭這個密碼方法的安全性與某個困難問題相關,沒有完全證明問題本身的安全性。
11.密碼學新方向
知識點
1.寫出5中密碼學新方向或新技術 (必考!)
答:身份基加密(IBE)、屬性基加密(ABE)、全同態加密、動態加密