破译美国国安局加密推特

5月5日,美国国安局负责招聘的Twitter帐户发表了一条内容看似错乱无章的推特[1]

tpfccdlfdtte pcaccplircdt dklpcfrp?qeiq lhpqlipqeodf gpwafopwprti izxndkiqpkii krirrifcapnc dxkdciqcafmd vkfpcadf. #MissionMonday #NSA #news

该推特很快就被破解了:

Want to know what it takes to work at NSA? Check back each Monday in May as we explore careers essential to protecting our nation.

这条密文使用的是简单的置换加密方式,简单地说,就是把26个字母相互映射,产生常人所不能理解的密文。例如,密文中的T对应原文中的WP对应AF对应NC对应T,则上述密文的前4个字母TPFC解密为Want。置换加密是古典密码中的一种,但由于英文字母具有特定的频率分布,这些密码都有一个致命弱点:不能对抗词频统计。

使用python编程对big.txt[2]进行英文字母的频率统计,如下所示:

letter_frequency
从上图可以看到,字母e的出现频率最高,大概在12%~13%之间,而字母z的出现频率最低,不足1%。因此,为了破解使用简单置换加密方法进行加密的密文,首先对密文中的字母频率进行统计,并与上述字母分布规律进行对比,密文中出现最多的字母很可能对应于et或者a,而密文中没出现或者出现极少的字母很可能对应于xjq或者z

一种在线的解密方法和解密置换密码python程序在[3]中提及。

参考:
[1] http://goo.gl/hZJkfu
[2] http://norvig.com/spell-correct.html
[3] http://goo.gl/HTXeP4

Speak Your Mind

*