攻击的类型:
唯密文攻击(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