楼主: 4679

[密码学习] 详解维热纳尔密码

简洁模式
发表于 2009-7-23 22:08:13 | 显示全部楼层
本帖最后由 侦铭の印 于 2009-7-24 11:52 编辑

写在前面:本文所有的密码资料不是原创,但为了更加简洁的介绍此密码,本人用自己的语言对密码进行了解释,这样能让大家更好的掌握。以下内容全部为本人亲手输入。

本文介绍的是维热纳尔密码,这是由意大利佛罗伦萨的里昂巴蒂斯特•阿尔伯特提出的一种多字母的替换式密码,关键是,用两个或两个以上的密码表交替使用来进行加密,经过后人的努力,最终维热纳尔密码成型。其主要构成是维热纳尔方阵:


它的明码表后有26个密码表,每个表相对前一个发生一次移动。简单说,如果只用其中一个密码表进行加密,那就是凯撒密码!但是,如果用方阵中不用的几个字母同时加密,它就变得很强大了。本人来举个例子,用关键词FOREST来加密Better to do well than to say well.


(看维热纳尔方阵第5行,是F开头,明文是b,所以用G来加密;同理,第14行,O开头,明文是e,所以用S来加密,如此类推……)


大家会想,维热纳尔密码既客服了频率分析,又具有数目众多的密钥,发送者和接受者可以使用字典任何一个单词,或词组,甚至是虚构的单词作为关键词来加密,那如此复杂的密码,我们怎么去破解呢?此密码流行于19世纪,不过,也正是在19世纪,查尔斯•巴比奇,一个性格古怪的天才将其破解了。

让我们来看看解密的过程。

首先,看看刚才那段被加密的文字。


认真观察可以看到,to两次被加密为YC,因为它两次都是用FO来进行加密的,关键词正好轮回了2此,而这种重复,就是解开维热纳尔密码的突破点。

导致这种重复,有两种可能。

1、明文中的相同字母序列(如上面的to),被相同的关键词加密(如FO);
2、明文中不同的字母序列,刚好被不同的关键词加密成同样的密文,纯属巧合。
但是,假如我们限制在长序列的范围内考虑的话,那第二种可能性就大大的降低了,这种情况下,我们多数考虑4个字母或者4个以上的重复序列。如下面的密文:

I S W Z P N Q C K M Y Y Y J K A Y Y E Z F F S W E E S S P G Z X Q A H F
I S W Z P N Q C K M T V Y J O A C V E H A E S A Z R L T P Q I Z M X O T
Q S W M C V U D S I J G G D E U W A Z R S F X W I L K U E J Q L D A C B
G D L Y J X M Y L M D Q K Z M P L D I L Q E M W F S W D P A Z E Z Q N W
D Y W D Z X F S A E E A Z J D U E L V P T M C E K W S E E F U R Z F S W
D P X A C Q A F K M X W A W V E Z F S D B G D L A Y U Q X G D P E K W S
E E F U R Z F S W D P O U E Z K Z M Y L Q N P Q Q D E M J T Q Y G U V A
Z O G R W A W P V U E Q A F J Q J G G C O M J Z A H Q A F K T J D K A D
M N W P J G G C W K P K A Y E Q Z Z P T V K Z M Q G W D V F A H L T L L
U S S P X A Z P G Z J G G O S D W A Z R K A E Z Q C W K Z M M C W I T L
T E Z M E D A Z C A Y Q A F J R L U Q L K U Q Q A F J Q Y W H P J T F J
F L K U Q Q A F J Q Y W H P J P Z O Z D Z M W D U M W F S W A Y W R Z J
K Z M I S G B T F O S E E J G G D G R E D K M M F D M D P A R Q J A H F
U D K T Z O Z E Z Q Y A I T D X V F A H L T L L K Z M M C W Z Z V D P S Y P J

在这里面,重复的长序列有ISWZPNQCKM,BGDL,SEEFURZFSWDP,JGGC,LKUQQAFJQYWHPJ,VFAHLTLL等。

破译的第二个关键在于,确定关键词的长度。说到这,让我们先看看最开始那个短的加密文字:


第一个YC出现后到第二个YC的结尾一共有12个字母(U S O X Q Z K L S G Y C),那么密钥的长度就是12的约数!即1、2、3、4、6、12之中的一个(其中1可以排除,因为如果关键词的长度是1个字母的话,那就成了简单的凯撒密码了)。

OK,让我们再次回到长的这段文字。ISWZPNQCKM间隔是36个字母,BGDL间隔是93个字母,SEEFURZFSWDP间隔是45个字母,JGGC间隔是24个字母,LKUQQAFJQYWHPJ间隔是18个字母等。

很显然,每个重复的间隔都能被3整除,所以关键词应该有3个字母。

下一步,频率分析,但是因为关键词有3个字母,所以我们把整个长的密文分成3组。把第1、4、7、10、13……个字母分为一组,暂且称之为L1,把第2、5、8、11、14……个字母分为第二组,称之为L2,余下的自然就是第三组,称之为L3。数数每组的字母个数,每组169个字母。

接下来,需要先做一个标准频率的分布表,我们用169乘以每个字母的标准百分比,如字母A,169*8.2%=14(结果四舍五入)。

那么由各个字母的标准频率(单位:%):

A:8.2   B:1.5   C:2.8   D:4.3   E:12.7   F:2.2
G:2.0   H:6.1   I:7.0   J:0.2   K:0.8    L:4.0
M:2.4   N:6.7   O:7.5   P:1.9   Q:0.1    R:6.0
S:6.3   T:9.1   U:2.8   V:1.0   W:2.4    X:0.2
Y:2.0   Z:0.1
计算得到标准字母个数(单位:个):

A:14   B:3   C:5   D:7   E:21   F:4
G:3    H:10  I:12  J:0   K:1    L:7
M:4    N:11  O:13  P:3   Q:0    R:10
S:11   T:15  U:5   V:2   W:4    X:0
Y:3    Z:0
根据上面得到的数据,用26字母作横坐标,个数作为纵坐标,做散点图。见下图:


然后,让我们先统计L1中169个字母出现的次数:

A:22   B:1   C:0   D:10  E:10   F:9
G:7    H:2   I:9   J:0   K:11   L:0
M:14   N:1   O:1   P:5   Q:16   R:5
S:2    T:7   U:14  V:1   W:1    X:2
Y:5    Z:14
同理,做出L1的散点图:


与标准图对比一下:


我们发现,标准频率和L1的频率都有峰值、平稳期和低谷。他们之间的区别在于相互错开了一些位置,比较两者应该可以找到最显著地特征。

例如,L1图表中A-F这一段,A的峰值过后是低谷,特别是C没有出现,然后是一段平稳期,这与标准频率中的O-T段比较吻合。

再看,标准频率中,O的前面I-N这段和L1中U-Z的这段也大致吻合。(说的是大致,不是非得一模一样,请注意。)

又看看,L1曲线中,J和L得缺失,可以与标准曲线中X和Z得缺失相对应,L1曲线中M-O这段应该就是标准曲线中A-E这段。

这就暗示着L1的密码表是有M、N、O、P……开始的,把L1的图形向左平移12个单位再去标准频率曲线对比:

位移后的L1曲线。
标准字母曲线。
由此而知,关键词的第一个字母是M!(备注:一些误差是在所难免的,比如说K替换Y,两者在图标上比较起来好像很不符合,但整体趋势差不多,所以我们要懂得忽略。)


继续,我们来统计L2中的169个字母出现的次数:

A:1    B:0   C:12  D:11  E:14   F:7
G:1    H:6   I:0   J:12  K:0    L:10
M:3    N:2   O:3   P:18  Q:3    R:5
S:13   T:5   U:1   V:2   W:7    X:5
Y:12   Z:16
画出L2的曲线:


大家应该留意到F-K,L-P,Z-A-E这些连续段的特助,考虑把图标左移11位,得:

位移后的L2曲线。
我们再次贴出标准频率图,让大家对照下。

标准字母曲线。
所以,我们可以确定关键词的第二个字母是L!

最后,我们用同样的方法可以确定关键词的第三个字母是S,至此,我们得到整个关键词——MLS。

得到关键词就一切都解开了,反向套用维热纳尔方阵,得到明文,如下:


Whenever sang my songs
On the stage on my own
Whenever said my words
Wishing they would be heard
I saw you smiling at me
Was it real or just my fantasy
You'd always be there in the corner
Of this tiny little bar
My last night here for you
Same old songs just once more
My last night here with you
Maybe yes maybe no
I kind of liked it you're your way
How you shyly placed your eyes on me
Oh did you ever know
That I had mine on you
Darling so there you are
With that look on your face
As if you're never hurt
As if you're never down
Shall I be the one for you
Who pinches you softly but sure
If frown is shown then
I will know that you are no dreamer
本帖子中包含更多图片或附件资源

您需要 登录 才可以下载或查看,没有帐号?加入学院

本主题帖为【历史主题】,仅楼主发布内容可以浏览。
| 楼主| 发表于 2009-7-24 14:24:01 | 显示全部楼层
想当年,我写过一篇全是密码的小说,里面有一段长的文字,就是用维热纳尔密码来加密的,加密花了我几个小时,然后自己去破译又花了几个小时。
登录帐号可查看完整回帖内容
| 楼主| 发表于 2009-7-25 21:01:09 | 显示全部楼层
  9#  冷月夕静


你哪里看不明白?
我可以详细解释下。
| 楼主| 发表于 2009-7-25 21:11:09 | 显示全部楼层
我写的那篇关于密码的小说,用了四种密码,分别是:凯撒密码、栅栏密码、维热纳尔密码和比尔密码。

看完后,他们都说感觉像教科书……
登录帐号可查看完整回帖内容
| 楼主| 发表于 2009-7-26 23:47:04 | 显示全部楼层
那篇短小说没有电子版的,等以后有空传上来也行。
| 楼主| 发表于 2009-7-27 09:55:08 | 显示全部楼层
LZ说的可是量子密码……?
| 楼主| 发表于 2009-8-5 23:51:14 | 显示全部楼层
Vigenère 恩,正确的说应该是法文的英文拼写……
Blaise de Vigenère 发明的。

我现在也弄明白了,维吉尼亚密码和维热纳尔密码就是翻译不同罢了。
尚未登录
您需要登录后才可以回帖 登录 | 加入学院