凯撒密码
原理
- 凯撒密码的实现方式就是对字母进行平移,加密向右平移的话,解密就向左平移
- 凯撒密码的算法就是平移,密钥就是平移的长度
破解
- 凯撒密码是可以被暴力破解的。原因是如果是26个英文字母的话,字母的便宜最多也就是26种,把这些都尝试一遍是不需要花太多时间和成本的
简单替换密码
原理
- 这个算法也很简单,实质上就是一张字母对照表。例如,字母A对应字母H,以此类推。
- 这个算法里的密钥就是这张字母对照表
破解
- 暴力破解此算法很难。因为密钥空间会有 252423...*1 = 4兆的1000兆倍,破解需要花费的时间太长了
- 此算法仍旧可以破解。对照表的特点是,相同字母每次加密后的值不是随机的,而是固定的。如果一篇文章很长,会导致相同的明文字母会重复出现多次,而相同的密文也就重复多次。完全可以根据英文字母在单词的出现频率的多少,来猜测对应的字母代表什么。
- 相同明文每次加密后变成固定值的密码算法是不安全的
Enigma
原理
- Enigma的密码原理还是非常先进和现代的,体现在下面几个地方。
1、出现了密钥加密密钥,即针对加密密钥进行加密。现在的加密算法还在进行加密。
2、对于相同的明文,每次加密后生成的密文不相同,这点根据上面简单替换密码的破解,就知道其重要性
3、具备简单的容错。对于加密密钥,通过重复两次,进行容错的校验。虽然这给破解带来了便利。
4、不依赖于加密算法本身来实现加密。由于存在加密密钥,所以哪怕即使拿到了Enigma机器,也没办法破解密文。 - Enigma的机械结构:
由接线板、三个转子组成。当输入一个字符时,电流通过由接线板和转子同时确定的线路,会产生到一个新的对应字符上。这个类似现在由软件实现的加密算法了。 - Enigma加解密的步骤:
1、加密加密密钥。用于加密明文的密钥,是由发送者想出来的三个字母。这个由于需要用于解密,要发送给接收方,所以需要针对此加密密钥进行加密。
针对加密密钥进行加密,使用的密钥是国防军发布的"每日密码本"的当日密码。
首先根据当日密码设置Enigma机器,然后发送者想一个加密密钥,在机器上输入2次。每输入一个字符,第一个转子就旋转一下,保证了每个字符加密后的结果都不同。
最终得到的是加密后的6个字符,也就是2遍的加密密码。
2、加密发送明文。发送者想出的加密密钥是三个字符的,其实是表示三个转子的初始位置设置。
所以,首先根据加密密钥设置三个转子的初始位置,然后再逐个输入正文的字符。
由于每输入一个字符后,三个转子都会根据之前的规定旋转,所以即使是相同的明文,加密后的结果也不相同。
3、合并发送。将加密后的加密密钥 和 加密后的密文 合并后,一起发送给接收者。
4、解密加密密钥。接收者拿到发送后的全文后,先取前6个字符,再依据每日密码设置机器进行解密。
如果解密后的6个字符是重复两次的相同字符时,证明发送过程没有问题。
5、解密正文。根据解密后的加密密钥设置机器,然后输入正文,完整正文的解密。
破解
-
弱点
1、用于加密密钥的密钥不是随机的。这个是指的每日密码本是固定的,而且是预先设定发布的,其安全性大大降低。
2、加密密钥是头6个字符且重复2次。相当于所有人都知道密钥存放的地方,而且很有规律,这样可以方便猜测极为关键的加密密钥。
3、加密密钥的加密强度较弱。相对于正文的加密是三个转子都旋转,加密加密密钥时只有一个转子旋转,强度自然减弱。
4、加密密钥是人为想出的。是的,人才是所有保密手段中最薄弱的环节。人可能想到的加密密钥是aaa之类的简单密钥,这样破解的人可以猜测,即使不能直接猜测出来,也大大方便了推导。 -
破解
突破口还是在加密密钥的特性上,就是上面弱点的第2点上。
再加上,用于加密加密密钥的每日密码一天内是没法变化的,这就导致一个结果是一天之内有大量的样本用于解密。
转子总共才3个,每个转子的位置只有26个,所以也就有262626种可能性。使用机器暴力是可以找到每日密码做相关破解。 -
趣事
德国人为了测试机器,发布了一条全l(小写L)的消息,这条用于测试的消息给了盟军以破解的方便。
因为加密后不可能加密成原来的字符,所以可以通过密文推测明文就是全l,因为通篇没有出现l这个字符。
根据大量的样本进行排列组合,就推测初接线板和转子状态的线索。
密码算法和密钥分开
原因也很简单,密码算法是需要重用的,但是密钥不能重用,因为重用会带来破解风险。