攻擊的類型:
唯密文攻擊(COA):攻擊者只知道密文
已知明文攻擊(KPA):攻擊者知道同一密鑰下密文對應的明文。
選擇明文攻擊(CPA):攻擊者可以事先任意選擇一定數量的明文,讓被攻擊的加密算法加密,並得到相應的密文。
選擇密文攻擊(CCA):攻擊者事先知道任意一定數量的密文,讓被攻擊的解密算法解密,並得到對應的明文。
被動攻擊:COA、KPA
主動攻擊:CPA、CCA
補充(來源:https://www.zhihu.com/question/34624915):


古典密碼學
凱撒密碼:使用移位處理
維吉尼亞密碼:確定密鑰后,多次使用凱撒密碼
破解維吉尼亞密碼:關鍵在於確定密鑰的長度t
方法一 Kasiski方法:
在密文中出現相同的子串之間的距離可能是t的倍數,找出所有的相同的子串的距離,尤其出現次數較多的(避免巧合),t是這些距離的最大公約數。
方法二 Friedman試驗:
以下內容推薦博客:https://blog.csdn.net/white_idiot/article/details/61201864
重合因子Index of Coincidence(IC):任意取兩個字母(取后放回),使之結果相同的概率
英語中的重合因子定義如下:
,由每個字母出現的概率,可算得其結果為0.065
破解維吉尼亞密碼的兩個步驟:
1、確定密鑰長度。
遍歷密鑰長度,使得某一個密鑰長度下的分組算得的重合因子其結果接近0.065,可用以下公式:
,其中,i為英文字母順序表中的第i個字母,ni為其在密文分組中出現的頻數,N為該分組的長度。如果該密鑰長度下的各個分組算得的平均重合因子的結果接近0.065,則找到正確的密鑰長度。否則,換下一個密鑰長度測試。
2、進行頻率分析。
密文確定密鑰長度后,可將密文划分成相應的分組。在划分出來的任一分組中,明文和密文都是通過同一個字母實現移位加密的,此時,只需將密文相對於明文進行移位測試,找出具有重合因子接近0.065的位移,即可確定該分組的偏移量,其他分組同理。可用以下公式:
(j的取值為[0,25],即我們需要求的偏移量)。可理解成:明文中出現的第i個字母可能映射成了密文中的第i+j個字母(兩個"字母"都已經按順序排好,但出現的頻數不一定相同)
單字母替換(Mono-Alphabetic Substitution):將明文中的字母進行隨機替換,密鑰空間為26!
Kerckhoffs’s principle :
The cipher method must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience.
Sufficient Key Space Principle:
Any secure encryption scheme must have a key space that is not vulnerable to exhaustive search
Arbitrary Adversary Principle :
Security must be guaranteed for any adversary within the class of adversaries having the specified power
現代密碼學的三個主要規則
Principle 1: Formulation of Exact Definitions
No adversary can derive any meaningful information about the plaintext from the ciphertext.
Principle 2 – Reliance on Precise Assumptions
Principle 3 – Rigorous Proofs of Security
