博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密码学原理学习笔记
阅读量:6236 次
发布时间:2019-06-22

本文共 1720 字,大约阅读时间需要 5 分钟。

攻击的类型:

唯密文攻击(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

 

转载于:https://www.cnblogs.com/cellphone7/p/9595373.html

你可能感兴趣的文章
SpannableString富文本
查看>>
类的组合
查看>>
oracle权限管理应用,判断A字段中是否包含B字段的值
查看>>
gcc的基本用法
查看>>
迭代器和生成器
查看>>
阅读书单(陆续更新中)
查看>>
分布式锁的三种实现方式
查看>>
跨域文件上传解决方案
查看>>
2018.09.17python作业
查看>>
centos的用户的基本操作
查看>>
正则表达式
查看>>
laravel Event执行顺序
查看>>
ubuntu17 设置python3为默认及一些库的安装
查看>>
十步完全理解SQL(转)
查看>>
Hibernate4.3.9Final常见问题汇总
查看>>
程序员学习网站:
查看>>
【Coursera课程笔记】Web智能和大数据Week3_MapReduce
查看>>
StringSequences
查看>>
Android渲染器Shader:环状放射渐变渲染器RadialGradient(三)
查看>>
java语言基础
查看>>