我們都要堅信,道路越是曲折,前途越是光明。
---------------------------------------------------------------------------------------------------------------------------------
現代密碼學 第五版 楊波
第一章? 引言
1.1三大主動攻擊
1.中斷
2.篡改
3.偽造
1.2 五大安全業務
1.保密業務
2.認證業務
3.完整性業務
4.不可否認業務
5.訪問控制
1.3 安全的網絡通信考慮四個方面
1.加密算法
2.用于加密算法的秘密信息
3.秘密信息的分布和共享
4.使用加密算法和秘密信息以獲得安全服務所需的協議
1.4 信息安全包括三個層次
1.系統安全(數據庫、操作系統)
2.數據安全(數據的存儲、傳輸)
3.內容安全(病毒的防護、不良內容的過濾)
1.5 保密通信系統構成
明文消息空間M、密文消息空間C、密鑰空間K1和K2,在單鑰體制下K1=K2=K,此時密鑰K需經安全的密鑰信道由發送方傳給接收方,加密變換E(K1):M---->C,由加密器完成,解密變換D(K2):C----->M由解密器實現。總體(M,C,K1,K2,E,D)為保密通信系統。
1.6 保密通信系統應該滿足的要求
1)系統即達不到理論上是不可破的,也就是說,從截獲的密文或已知的明文,去決定密鑰在計算上是不可行的。
2)系統的保密性不依賴于對加密體制或算法的保密,而依賴于密鑰。
3)加密算法和解密算法適用于密鑰空間中的所有元素。
4)系統便于實現和使用。
1.7 單鑰體制對明文加密的兩種方式
1)明文消息按字符逐位加密,稱為流密碼
2)明文消息分組(含多個字符),逐組地進行加密,稱為分組密碼。
單鑰體制不僅可以用于數據加密,也可用于消息認證
1.8 對密碼系統的攻擊類型
唯密文攻擊
已知明文攻擊
選擇明文攻擊
選擇密文攻擊
1.9 幾種古典密碼
1.9.1 愷撒密碼(填空題)
公式:
加密:c=E3(m)=m+3? ? ,0<=m<=25
解密:m=D3(c)=c-3? ? ? ? ,0<=c<=25
1.9.2 移位變換(凱撒密碼的推廣)
公式的寫法只不過將密鑰寫成了K
c=Ek(m)=m+k? ? ?,0<=m,k<=25
m=Dk(c)=c-k? ? ? ,0<=c,k<=25
1.9.3 仿射變換(大題出現,十分左右)
相比前面的公式出現了兩個密鑰
c=Ea,b(m)=am+b(mod26)?
m=Da,b(c)=a的逆運算(c-b)(mod26)
求乘法逆元,簡單的我們很快就能出結果,但是稍微數值大的,還是需要掌握歐幾里得去計算乘法逆元。這里我私下問豆包進行了練習。乘法結合律小學數學不過關嗚嗚嗚。
但是我找到了一個規律就是余數是幾,就消除幾。我們可以拼拼湊湊。去有意消除某一個余數。
書上的兩道習題可以鞏固我們對仿射加密算法的理解,P11
設仿射變換的加密是:
E11,23(m)=11m+23(mod26)
對明文THE NATIONAL SECURITY AGENCY加密,并使用解密變換
解密變換使用公式:
D11,23(c)=11^-1(c-23)(mod26)
首先求出乘法逆元
11^-1mod26
11在模26下的乘法逆元為為19,計算過程不再贅述。
要強調的是c-23為負數時,先正常計算乘法,最后把得到的負數結果通過加上合適的模數倍數,轉化為到之間的非負整數,也就是模運算的標準結果。
比如m為12,加密結果應該是k
k為10,10-23=-13
-13*19/26=9....13那么余數是13,即為n
第二章 流密碼
2.1 流密碼的基本概念
流密碼的基本思想是利用密鑰k產生一個密鑰流z=z0z1...,并使用如下規則對明文串x=x0x1x2...進行加密:y=y0y1y2...=Ez0(x0)Ez1(x1)Ez2(x2).......
這里?Ez0(x0)
?代表使用密鑰流中的第 0 個元素?z0
?對明文的第 0 個元素?x0
?執行加密變換。
第三章 分組密碼體制
3.1.什么叫分組密碼?
分組密碼是將明文消息編碼表示后的數字序列,x0,x1,xi...劃分成長n的組x=(x0,x1......xn-1),各組(長為n的矢量)分別在密鑰k=(k0,k1,ki-1)控制下變換成等長的輸出數字序列y=(y0,y1...ym-1),其加密函數E:Vn*K---->Vm,Vn和Vm是n維和m維矢量空間,k為密鑰空間。
3.2 分組密碼設計算法應該滿足什么要求? P書本33
1)分組長度n要足夠大
2)密鑰量要足夠大,但密鑰又不能過長
3)密鑰確定置換的算法要足夠復雜
4)加密和解密運算要簡單
5)數據擴展盡可能小
6)差錯傳播盡可能小
3.3 為什么DES不安全?
答:密鑰長度短,DES 使用 56 位的密鑰長度,在計算能力飛速發展的當下,通過窮舉密鑰進行暴力破解的難度已經大幅降低。(就是老師說的的窮苦攻擊)
(談二重DES,三重DES)
? 二重 DES:使用了兩個密鑰,?但實際上,存在一種中間相遇攻擊法。安全性和普通的DES差不多。
??三重DES運算速度相對較慢,但是在 AES 正式廣泛推行前,三重 DES 是一種被廣泛認可且應用的對稱加密標準。
??
3.4 為什么現在還要使用DES(好處談一談)
DES 加密算法雖然安全性有所欠缺,但在加解密速度與層級特性上,仍有值得一提的優勢:
- 加解密速度快
- 運算邏輯簡單:DES 的加密和解密過程基于固定的置換、代換操作,并且按輪次依次開展。每一輪內部的變換都是預先定義好的簡單位運算,像是異或、移位、替換等基礎操作,現代處理器能夠極為高效地執行這類底層指令,無需復雜的浮點運算或高耗時的矩陣操作,使得單次加密或解密的運算速度非常可觀。
- 成熟優化:作為問世多年的經典算法,DES 積累了海量的優化經驗與代碼實現范例。無論是軟件層面,程序員們通過匯編語言、C 語言對關鍵運算步驟精細調優;還是硬件層面,芯片廠商將 DES 運算模塊集成進專用電路,都使得 DES 在實際應用場景下,能實現高速的加解密吞吐,快速處理輸入數據。
- 層級不高
- 易于集成:相較于一些新興的高級加密算法,DES 層級架構簡單。它沒有多層嵌套的復雜加密模式,對于很多小型設備、簡易系統而言,這種低層級加密方案更容易嵌入。舉例來說,智能家居里的一些基礎傳感器,只需簡單幾步就能把 DES 加密模塊整合進其有限的固件當中,不涉及復雜的架構適配與多層加密協同難題。
- 便于理解與維護:低層級意味著其加密原理清晰直白,技術人員不需要深厚的密碼學專業知識儲備,就能明白 DES 的加密、解密流程走向。當出現問題或者需要對加密過程微調時,運維、開發人員能夠快速定位故障、做出調整,降低了運維成本與系統的故障風險。
3.5 混淆和擴散? ? ?P34
答:擴散和混淆是由Shannon提出的設計密碼系統的兩個基本方法,目的是抗擊敵手對密碼系統的統計分析。
擴散的目的是使明文和密文之間的統計關系盡可能復雜,使敵手無法得到密鑰。混淆是使密鑰和密文關系盡可能復雜,使敵手無法得到密鑰。
擴散和混淆成功實現了分組密碼的本質特性,因而成為設計現代分組密碼的基礎。
3.6 S盒的輸入輸出模式? ? P42
答:具體原理我沒懂。我只能用自己的話說了。
在 DES(數據加密標準)算法中,S 盒是極為關鍵的組件
輸入?6 位二進制數據。將這6位二進制數據放入S盒中處理一次就得到四位二進制數,一共處理8次,經過內部查表后,輸出32位的二進制數。
3.7 分組密碼的4種模式? ? ? ? ? ? ? ? p47
電碼本模式
密碼分組鏈接模式
密碼反饋模式
輸出反饋模式
3.8 IDEA 通過哪兩種來實現算法
可以非常方便的通過軟件和硬件實現
1.軟件:采用16比特子段處理,可通過使用容易編程的加法、移位等運算實現算法的三個運算
2.硬件:由于加解密相似,差別僅為使用密鑰的方式,因此可以使用同一器件實現。
3.9? AES算法? ? ? ? P59
它的設計策略是寬軌跡策略,是針對差分分析和線性分析提出的,它最大的優點是可以給出算法的最佳差分特征的概率及最佳線性逼近的偏差的界,因此,可以分析算法抵抗差分密碼分析及線性密碼的分析能力。
多項式的表示 :填空題出現
四位二進制代表一個十六進制數。
比如57就是 5和7
0101 0111
最后應該表示為 x+x^2+x^4+x^6+1
57+83=D4
記住我們是需要把十進制拆成兩位數,去表示十六進制的
也就是5和7,8和3
0101 0111? ? ? ?1000 0011
x+x^2+x^4+x^6+1+(x^7+x+1)=x^7+x^6+x^4+x^2
結果我們會發現常數項被約掉了,這是因為在有限域 GF (2) 當中,系數只有 0 和 1,做加法遵循異或規則。
所以結果是:11010100
字節的乘法? ? ? ? 大題出現
書上的例題是
57 * 83 =C1
老子真的是學得要瘋了,最討厭算算術了。這個我根本算不出,算不懂。
昨天去問了一班學委,告訴我字節的乘法是,移位相加減。異或。
第四章 公鑰密碼
4.1 群、環、域概念? ? ? ? ? ? ? ? P84
群、環、域都是代數結構,代數系統是對要研究的現象或過程建立起的一種數學模型,模型中包括要處理的數學對象的集合以及集合上的關系或運算,運算可以是一元的也可以是多元的,可以是一個也可以有多個。
懂都不懂,我感覺,不重要,因為不懂。哈哈哈哈哈哈哈哈哈哈哈哈哈哈。》
---------------------------------------------------------------------------------------------------------------------------------
群:封閉性、結合性、存在單元、存在逆元? (二元運算)? 例如:非零有理數
有理數是:整數和分數的統稱。
環:有兩個二元運算,通常記為加法 “+” 和乘法 “*” ,構成環的集合??滿足:
- 關于加法 “” 構成一個阿貝爾群,也就是加法滿足封閉性、結合律、有單位元、每個元素有加法逆元,還滿足交換律。
- 關于乘法 “” 滿足封閉性和結合律。
- 例如:整數集Z
域:特殊的環,滿足環的所有特點。實數R。
4.2 模運算
模逆運算,學會仿射加密的解密就應該會這個才對!
一些簡單的我們不必進行歐幾里得計算,比如5^-1mod13
遇到簡單的我們只需要想簡單的定義就好,5乘以多少去mod13=1,五八四十,三*13=39,也就是8,有時候進行歐幾里得去算,反而顯得我們很呆知道嗎?難能可貴的是我可能去算,算的可能是錯的。
模運算有以下性質:
[ ( a mod n ) + ( b mod n ) ]mod n = (a + b)mod n
[ ( a mod n ) - ( b mod n ) ]mod n = (a -?b)mod n
[ ( a mod n ) * ( b mod n ) ]mod n = (a * b)mod n
4.3 歐拉定理
在密碼學的 RSA 加密算法里,歐拉定理起到了核心作用。RSA 算法利用大整數分解難題以及歐拉定理來實現加密和解密過程,保障信息傳輸的安全性。例如,公鑰和私鑰的生成、加密消息與解密消息的數學變換,背后的理論依據都離不開歐拉定理構建的同余關系體系。
計算邏輯一般是,這個數的因子里如果有平方,那么就 這個數乘以(1-1/p)乘以(1-1/q)
這是一種情況
還有一種情況是這樣的
比較簡單
有時候我們想要計算4^12=4^4+4^8=(4^2)^2+((4^2)^2)^2
4.4 歐幾里得算法
用來求最大公因式的,也叫輾轉相除法
(108,386)=(62,108)=(46,62)=(16,46)=(14,16)=(2,14)
所以最大公因數是2
用大的除以小的,余數作為下一個小的.
4.5 陷門單向函數? ? ? ?
研究公鑰密碼算法就是要找出合適的陷們單向函數。
稱一個函數是陷門單向函數,是指該函數是易于計算的,但求它的逆是不可行的,除非再已知某些附加信息。當附加信息給定后,求逆可在多項式時間完成。總結為:陷門單向函數是一族可逆函數。
老師給我們舉的例子是,已知大素數P,Q? 求N=P*Q
在計算上是可行的,反過來已知N,但是求PQ是不可行的。這也反映了陷門單向函數的一種思想。
4.6 公鑰密碼算法要滿足的六點要求? ? ? ?
1.產生的公鑰和私鑰在計算上是容易的。
2.發送方使用公鑰加密產生密文在計算上是容易的。
3.收方B用自己的秘密鑰解密,在計算上是容易的。
4.敵手使用公鑰求密鑰是不可行的。
5.敵手由知道密文和公鑰,是恢復不出明文的。
6.加解密次序可以互換。(不對所有做要求)
4.7 公鑰加密過程四步? ? ? ?
書上懂都不懂 還是豆包好
- 密鑰生成:
- 接收方利用特定的加密算法生成一對密鑰,分別是公鑰和私鑰。這兩個密鑰在數學上存在緊密關聯,但通過公鑰很難推算出私鑰。例如在 RSA 算法中,會挑選兩個大質數,經過一系列復雜的數論運算得出公鑰和私鑰。公鑰會被公開分享,可隨意發布在網絡等渠道,供任何想要給接收方發送加密信息的人獲取;而私鑰則被嚴格保密,只有接收方自己持有 。
- 明文加密:
- 發送方獲取接收方的公鑰后,使用公鑰對原始的明文消息進行加密。加密算法會依據公鑰的參數,將明文中的每一個字符、數據塊,通過復雜的函數運算,轉化為一串看似毫無規律的密文。這一過程保證了只有對應的私鑰才能逆向還原出原始信息,即便其他人截獲密文,由于沒有私鑰,也難以解讀內容。
- 密文傳輸:
- 經過加密生成的密文,會通過不安全的公開通信渠道, 如互聯網,從發送方傳輸至接收方。因為密文已經經過加密處理,所以即使傳輸過程中被第三方監聽、竊取,第三方也無法直接知曉其中的含義。
- 密文解密:
- 接收方拿到傳輸過來的密文后,使用自己一直秘密保存的私鑰對密文進行解密。解密算法利用私鑰的特性,逆轉加密時的運算過程,將密文重新還原成原始的明文消息,至此,接收方成功獲取發送方發來的真實信息。
4.8 掌握RSA加解密
要死啊什么都是重點,掛科算了。
其實不難,也就是是一個計算順序的問題,首先求出大素數歐拉值,之后選一個整數必須小于歐拉值也必須與歐拉值互為質數,使用公鑰加密,使用私秘鑰,解密。
不像人類學的東西一樣。哈哈。
這里的三個橫線(≡)是同余符號,表示兩個數在除以某個特定數(模數)時余數相同。
首先密鑰生成選兩個保密的大素數 p q
計算歐拉值,也就是 =(p-1)(q-1)? n=pq
選取整數e,小于歐拉值,必須與剛剛計算的歐拉值互質。作為公鑰的一部分。
計算私鑰d:找到一個整數d,使得(e*d)mod歐拉值=1
d=e^-1modn
4.9? ? ? ? ?P114? 4-26
計算RSA算法的題目
選p=7,q=17,求n=p*q=119,歐拉值為96,取e=5
d=e^-1mod(歐拉值)
d=19
c=m^5mod119
m=c^19mod119
在書中,明文是自己設置的。m=19,在進行計算時,我們可以將次方拆解后進行計算
算術題一共有三道:1.仿射加密 2.多項式乘法 3.RSA加解密
4.10 RSA的安全性問題和密碼分析問題(與分組密碼對應著)
答:RSA算法的安全性主要依賴于大數分解的困難性。給定一個非常大的合數(即兩個或多個質數的乘積),目前沒有已知的高效算法能夠在合理的時間內分解出它的質因數。這使得RSA算法在合理選擇密鑰長度和參數的情況下具有很高的安全性。
RSA是非對稱密碼,分組密碼是對稱密碼。
分組密碼的安全性依賴于密鑰,而RSA的安全性不僅依賴于密鑰而且依賴于算法。
對稱密碼適用于需要高速處理大量數據的場景,如文件傳輸。非對稱密碼適用于需要高安全性的場景,如網絡傳輸和數字簽名。?
4.11? 簡答題出現 :共模攻擊和低指數攻擊? ? ? P118
答: 只有徹底弄懂RSA,才可以理解
4.12?IFP問題和DLP問題分析。
答:
4.13 AES移位相加法
第五章 密鑰分配與密鑰管理
5.1 密鑰交換的問題(如何進行的安全性問題)P143
該算法的唯一目的是使得兩個用戶能夠安全地交換密鑰,得到一個共享的會話密鑰,算法本身不能用于加解密。
BBS產生器(談安全性,算法,分析題)P149
安全性:密碼強度最強的偽隨機數產生器。安全性較高
秘密分割? ? ?P150
有三個門限方案,名字真高級,字太多了,我不學?
秘密分割門限方案
Shanmir門限方案
基于中國剩余定理的門限方案
第六章 消息認證和哈希函數
P157? 消息認證
消息認證碼是指消息被一個密鑰控制的公開函數作用后產生的,用作認證符的、固定長度的數值,也稱密碼校驗和。
哈希函數(公開函數)
性質:
1.函數的輸入可以是任意長
2.函數的輸出是固定長
3.已知x,求H(x)較為容易,可用硬件或軟件實現。
.................................看書吧其實都不懂。P162
MD5哈希算法
如果不懂的話,其實不如不記
處理過程:
1.對消息的填充
2.附加消息的長度
3.對MD緩沖區的初始化
4.以分組為單位對消息進行處理
第七章 數字簽名和認證協議
????????
數字簽名的性質:
1.能夠驗證簽名產生者的身份,以及產生簽名的日期和時間
2.能用于證實被簽消息的內容
3.數字簽名可由第三方驗證,從而能夠解決通信雙方的爭議。
數字簽名的要求:
1.簽名的產生必須使用發方獨有的一些信息以防偽造和否認
2.簽名的產生較為容易
3.簽名的識別和驗證較為容易
4.構造假冒的數字簽名是不可行的,無論是對于新的消息還是已知的消息。
數字簽名產生的方式:P183
加密算法和簽名算法產生.
時間戳、時間和應答
第一次聽到時間戳還是python課上面,下面是豆包的回答。
可以稍微多看兩眼,考試知道怎么多寫點字就好了。老師,菜菜撈撈。
時間戳:
在數字簽名場景下,時間戳常被添加到待簽名的消息當中。這樣做可以防止重放攻擊,因為帶有時間戳的消息,接收方能夠核查消息生成的時間是否合理,拒絕接收過時的、可能是攻擊者重放的消息。在區塊鏈技術里,時間戳更是關鍵要素,每一個區塊都帶有生成時的時間戳,用于確定交易的先后順序,維持區塊鏈賬本的時序性與不可篡改性。
時間:
在分布式系統中,多個節點的時間同步至關重要。不同節點如果時間不一致,會引發一系列問題,例如在加密協議里,若雙方時間偏差過大,可能導致密鑰交換、認證流程出錯。網絡時間協議(NTP)就是常用的用于同步計算機網絡中各個設備時間的協議,它讓設備能夠與權威時間源(如原子鐘服務器)保持精確同步,誤差可控制在毫秒級。
應答:
在安全協議中,應答也融入了安全考量。如身份認證環節,服務端收到客戶端的認證請求后,返回的應答可能攜帶驗證碼、加密挑戰等信息,客戶端需正確回應才能完成認證;數字簽名驗證時,接收方驗簽后的應答會明確告知簽名是否有效,發送方借此判斷后續操作流程。
RSA與數字簽名的安全性問題
寫在最后
大家一起備考復習,如果有錯,請在評論區或私信指正,互相學習,共同進步。🌹🌹