【密码学笔记】代替技术
代替技术
代替技术是将明文字母替换成其他字母、数字或符号的方法。
Caesar密码(由Julius Caesar发明)
-
定义:将字母表中的每个字母,有它之后的第 3 个字母来代替。
例如:
明文: meet me after the toga party
密文: PHHW PH DIWHU WKH WRJD SDUWB
我们通产用一个数字来代替每一个字母,因此,得到下表:
a | b | c | d | e | f | g | h |
---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
i | j | k | l | m | n | o | p |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
q | r | s | t | u | v | w | x |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
y | z | ||||||
24 | 25 |
则加密算法可以如下表达。对每个明文字母p,代替成密文字母C:
C = E(3,p)= (p + 3)mod 26
移位可以是任意整数k,这样就得到了一般的Caesar算法:
C = E(k,p)= (p + k)mod 26
k ∈ [1,25]
-
解决手段:穷举攻击
可以采用穷举攻击的手段,主要是因为:
- 已知加密和解密的算法
- 需测试的**只有25个
- 明文所用的语言已知,且其意义易于识别
单表代替密码
-
定义:每条信息用一个字母表(给出从明文字母到密文字母的映射)加密。
这种方法大大增大了**空间的数量级,如果密文行是26个字母的任意置换,那么就有26!或大于4×10^26^ 种可能的**。
置换是有限元素的集合S的所有元素的有序排列,且每个元素只出现一次。
例如:如果S = {a,b,c},则S有6个置换:abc,acb,bac,bca,cab,cba
-
这种方法看似可以抵挡穷举攻击,但启示如果把字母使用的相对评论统计出来,与英文字母的使用评论分布进行比较,就很可能分析出明文了。
所以其解决手段:字母频率分析(基于明文与密文字母频率相同)
-
改进方法:在明文信息中采用不同的单表代替,既多表代替密码,下面也会介绍。
所有这些方法都有以下的共同特征:
- 采用相关的单表代替规则集。
- **决定给定变换的具体规矩。
Playfair密码
-
定义:把明文中的双字母迎接作为一个单元并将其转换成密文的“双字母音节”。
该算法基于一个由**词构成的5×5字母矩阵。
-
加密规则:
假设**词为monarchy。填充矩阵的方法是:首先将**词(去掉重复字母)从左至右、从上至下填在矩阵格子里,再将剩余的字母按字母表的顺序从左到右、从上至下填在矩阵剩下的格子李。字母I和J暂且当成一个字母。对明文按如下规则一次加密两个字母:
- 如果该字母对的两个字母是相同的,那么在它们之间加一个填充字母,比如x。例如:balloon先把它变成ba lx lo on这样4个字母对。
- 落在矩阵同一行的明文字母对中的字母由其右边的字母代替,每行中最右边的一个字母就用该列中最左边的第一个字母来代替,比如ar变成RM。
- 落在矩阵同一列的明文字母对中的字母由其下面的字母代替,每行中最下面的一个字母就用该列中最上面的第一个字母来代替,例如mu变成CM。
- 其他的每组明文字母对文中的字母则:该字母所在行为密文所在行,另一字母所在列为密文所在列。比如hs变成BP,ea变成IM。
M | O | N | A | R |
---|---|---|---|---|
C | H | Y | B | D |
E | F | G | I/J | K |
L | P | Q | S | T |
U | V | W | X | Z |
- 解决手段:字母频率分析
多表代替加密
定义:多表代替密码中最著名和最简单的是Vignerere密码。它的代替规则集由26个Caesar密码的代替表组成,其中每一个代替表是对明文字母表移位0-25次后得到的代替单表。
假设明文序列为P = p~0~,p~1~,p~2~,…,p~n-1~,**由序列K = k~0~,k~1~,k~2~,…,k~m-1~ 构成,其中典型的m
Vernam密码
- 定义: 1918年AT&T公司的工程师Gilbert Vernam首先引入了这种体制,其运算基于二进制数据而非字母,可以简单表示为:C~i~ = p~i~ ⊕ k~i~
其中:
p~i~ 是明文第i个二进制位
k~i~ 是**第i个二进制位
c~i~ 是密文第i个二进制位
⊕是异或运算符
其解密过程为:p~i~ = c~i~ ⊕ k~i~
这种技术的本质在于构造**的方式。Vernam提出使用连续的磁带,其最终也将循环。所以事实上该体制是使用周期很大的循环**。尽管周期很长对于密码分析增添了相当大的难度,但是如果有足够的密文,使用已知或可能的明文序列,或者联合使用两者,该方案是可以被**的。
一次一密(Vernam密码的改进方案)
- 定义:使用与消息一样长度且无重复的随机**来加密信息
优点:如果用穷举法搜索所有可能的**,就会得到大量可读、清楚的明文,但是没法确定哪一个是真正所需要的,因此这种密码不可破。
-
缺点:
- 产生大规模随机**由实际困难
- **的分配和保护也是问题