1 对称加密模型
对称加密防范的五个基本成分:
- 明文:原始的消息或是数据,是算法的输入
- 加密算法:加密算法对明文进行各种代替和变化
- 密钥:加密算法的输入,密钥独立于明文和算法,算法根据所用的特定密钥产生不同的输出
- 密文:算法的输入
- 解密算法:是加密算法的逆运算。输入密文和密钥,输出原始明文。
传统密码的安全使用满足如下两个要求:
- 机密算法必须足够强:即使对方拥有一定数量的密文和产生这些秘文的明文,他也不能破译密文或是发现密钥
- 发送者和接受者必须在某种安全模式下获得密钥并且必须保护密钥的安全。
对称加密的算法可以公开。
因此采用对称加密,首要的安全问题是密钥的保密性。
密码编码学的撒个独立特征:
- 转换明文为密文的运算类型:所有加密算法都给予两个原理:代替和置换。
大题是明文中的每个元素印社成为另一个元素。置换是将明文中的元素重新排列。
- 所用的密钥数:如果发送方和接收方使用相同的密钥,这种密码称为对称密码,单密钥密码或是传统密码。如果发送方和接收方使用不同的密钥,这种密码称为非对称密码,双钥或是公钥密码
- 处理铭文的方式:分组密码每次处理输入的一组元素,相应的输出一组元素。流密码则是连续的处理输入的元素,每次输出一个元素。
密码分析学和穷举攻击
攻击密码系统的典型目标是恢复使用的密钥(获取密钥)而不是仅仅会付出单个密文对应的明文。攻击密码系统的两种通用方法是:
- 密码分析学:密码分析学攻击依赖于算法的性质、明文的一般特征或是某些明密文对。这种攻击方式企图利用算法特征来推导出特定的明文或使用的密钥
- 穷举攻击:攻击者对一条密文尝试所有可能的密钥知道把它转化为可读的有意义的明文。
攻击类型:
攻击类型 | 攻击者已知信息 |
---|---|
唯密文攻击 | 加密算法、密文 |
已知明文攻击 | 加密算法、密文、用同一密钥加密的一个或是多个明密文对 |
选择明文攻击 | 加密算法、密文、分析者选择明文以及对应的密文 |
选择密文攻击 | 加密算法、密文、分析者选择的密文和对应的明文 |
选择文本公积 | 加密算法、密文、分析者选择明文以及对应的密文、、选择密文以及对应的明文 |
2 代替技术
2.1 caesar密码
最早的密码Caesar发明的。就是简单的对子目标中每个字母的顺序替换。
因此穷举攻击很容易实现破解。只有25组破解出来的密文。
- 已知加密和解密算法
- 密钥只有25个
- 明文所用语言已知。含义容易识别
2.2 单表代替密码
caesar的替换只能是26个字母顺序替换,而单表代替密码,则是首先对$a \dots z$进行随机替换,这样子出现了$26!$种可能。然后再进行替换。
破解方式:
将单词中字母使用顺序统计出来,与英文字母的市永平率分布进行比较,如果一直新校足够长。那么就可以破解。
同时采用统计双字母组合的频率也是十分有效的工具,英文中$th$,等双字母出现的频率很高。因此密文中,该出现频率高的双字母自合极有可能是$th$
2.3 playfair密码
多字母代替密码playfair面,把明文中的双字母音节作为一个单元将其转化成密文的双字母音节。、
其过程是:首先选择一个单词作为密钥,然后取一个$5 \times 5$的表格存储26个字母($I$和$J$放在同一个单元格内),然后首先将单词填充在单元格的前面几个格中,如果密钥单词中出现重复单词,则去掉重复的。然后再将剩余没有出现在单词中的字母依次填充在剩余的单元格内。
然后对明文进行处理,将明文的单词两两分组,如果遇到一组中的两个字母相同,那么变化原有单词,在相同字母之间加上$x$填充。例如:$balloon$拆分为$ba,ll,oo,n$那么第二组$ll$是相同的字母,因此对单词进行处理$balxloon$再拆分(貌似这样需要是偶数个数字母,因此最后还会填充一个字母,补成偶数长度吧?)
然后得到两两的字母对去$5 \times 5$的表格中,进行替换:
- 如果字母对两个字母落在同一行,那么每个字母使用其右边的字母替代.(同一行轮转)
- 如果字母落在同一列,那么每个字母使用其上面一个字母进行替代(同一列轮转)
- 如果不同行和列,那么由这两个字母组成的一个矩阵,取另两个顶点,同行代替。
也就是说例如$A,B$,那么$A$代替的字母为在密钥表中:$A$所在行,$B$所在列的那个字母代替。
playfair密码在二战中大量使用。
但是仍然可以破解。
2.4 hill密码
hill密码利用了矩阵的知识:$APA^{-1} = P$
因此两个密钥就是$A^{-1}$和$A$
2.5 多表代替加密
对简单单表代替密码的改进方法是在明文消息中采用不同的单表代替。这一种方法称之为多表代替密码。特征为:
- 采用相关的单表代替规则集
- 密钥决定给顶变化的具体规则
多表代替密码中最著名也最简单的是Vigenere密码:
代替规则集是26Caesar密码,然后每个代替表示对$a \dots z$位移$0~25$次得来的。例如$a$对应0次。
然后在加密的时候,从明文序列开始,每个字母使用一个代替规则集中的一个。而密钥则是一串字母,表示规则集中每个规则的起始字母
这种密码的强度在于,每个明文字母对应着多个密文字母(因为使用不同的规则集),且每个密文字母使用位移的密钥字母,因此字母出现的频率信息就被隐蔽了。
另外,当明文的长度是密钥长度的整数倍,并且对应的明文也相同,那么产生的密文将是相同的。
因此解决方法是使用周期很大的循环密钥。但是如果有足够的明密文对,仍然可以破解出密钥。
2.6 一次一密
是一种对Vernam密码的改进:使用与消息一样长并且无重复的随机密钥来加密消息。密钥值对一个消息进行加解密,之后丢弃不用。
但是密钥的传递是存在问题的。
3 置换技术
代替使用其他字母替换明文中的字母。
而置换技术则是通过对明文进行重新排列组合。
最简单的是栅栏技术,也就是单词中的每个字母,轮流的写在第一行和第二行,然后,每行组成一个新的单词。
单纯的置换技术容易被识别出来,因此采用多次置换。
4 轮转机
5 隐写术
一种简单却好事的隐写术可由一段无上大眼的文本字词重新排列组合。然后将真是的信息隐藏在其中。例如单词的首字母,或是其他。
相同的还有:
- 字符标记:对有实际意义的字符进行特殊的标记
- 不可见墨水
- 针刺
- 特殊颜色
原文地址:https://www.cnblogs.com/perfy576/p/8976727.html