美文网首页密码学
密码学原理-篇1:重合指数

密码学原理-篇1:重合指数

作者: SukFortune | 来源:发表于2018-09-05 19:46 被阅读186次

古典密码学之所以被称为古典,是因为区别于现代密码学,这些密码理论虽然很有价值,但是现在很少使用。因此,学习古典密码学,主要是学习前人设计密码的思路,和他们成功或失败的历史。


多表替换密码(Poly-alphabetic Shift Cipher,Vigenère Cipher)

为了较好地为信息加密,古人发明了加密算法:维吉尼亚密码(Vigenère Cipher)。其特点就是选用某一段字符串作为其密钥,并将密钥重复若干次直到长度与明文相同。

例如,用密钥“THINK”加密明文"ATTACKATONCE",就要将密钥重复并得到密钥排列"THINKTHINKTH"。密钥排列得到的一串字符,每个字符都代表将该位置的明文字母向后移动某位,从而得到密文。对于上述的"THINKTHINKTH"而言,用所需移位的数字表示就是“19,7,8,13,10,19,7,8,13,10,19,7”。

明文第一位(A)对应密钥排列的第一位(T),而T在字母表中排第19位(A是第0位),就将明文的第一位字母(A)向字母表排序的后面移动19位,由于A在字母表中排第0位,移动完是第19位T,因此得到密文第一位字母(T);

明文的第二位(T)对应密钥排列的第二位(H),而H在字母表中排第7位,就将明文的第二位字母(T)向字母表排序的后面移动7位,由于T是第19位,19向后7位是第26位,而字母表中最后一位字母Z是第25位,因此得到新的循环中的字母表第0位,于是得到密文的第二位字母(A);

第三位同理能够得到字母表中第27位,也就是B。以此类推,最终将会得到密文"TABNMDHBBXVL"。

相较于逻辑推演生成密码,维吉尼亚密码还可以使用表格法生成密码。

如下图,对于明文的第三个字母T,对应密钥的第三个字母I,于是使用表格中I行字母表进行加密,得到密文第三个字母B。类似地,明文第六个字母为K,对应密钥的第六个字母T,在表格中使用对应的T行进行加密,得到密文第二个字母D。以此类推,可以得到密文“TABNMDHBBXVL”。

加密表,图片来自百度百科

可以看出,使用表格法无论是加密还是解密,都有着更低的学习成本以及更高的效率。这种密码的高易用性和不错的强度让它声名显赫。

维吉尼亚密码以其简单易用而著称,同时初学者通常难以破解,因而又被称为“不可破译的密码”(法语:le chiffre indéchiffrable)。这也让很多人使用维吉尼亚密码来加密的目的就是为了将其破解。维吉尼亚密码足够地易于使用使其能够作为战地密码。例如,美国南北战争期间,南军就使用黄铜密码盘生成维吉尼亚密码。北军则经常能够破译南军的密码。战争自始至终,南军主要使用三个密钥,分别为“Manchester Bluff(曼彻斯特的虚张声势)”、“Complete Victory(完全的胜利)”以及战争后期的“Come Retribution(报应来临)”。

对包括维吉尼亚密码在内的所有多表密码的破译,都是以字母的出现频率为基础的,但直接的频率分析却并不适用。例如,如果’P‘是密文中出现次数最多的字母,则’P‘所代表的明文很有可能是’E‘(在明文为英文的前提下),其原因在本文的第二章已经论述。由于在维吉尼亚密码中,同一个明文字母可以被加密成不同的密文,因而简单的频率分析在这里并没有用。


然而,维吉尼亚密码也有着很明显的漏洞。如果我们知道了密钥的长度,那密文就可以被看作是交织在一起的恺撒密码,而其中每一个都可以单独破解。例如,上个例子中以”THINKTHINKTH“作为密钥排列,这种情况下明文的第一位和第六位都将以密钥字母’T‘加密,它们的偏移量就是相同的。倘若明文足够长,就可以选取所有模5同余的位上得到字母来组成一组恺撒密码。

因此,对于一个明文足够长、密钥长度为t的维吉尼亚密码,至多需要将其按照模t同余的原则分解为t组平移密码即可破译。于是,破译过程的核心便落在了如何取得t值上。

五、卡西斯基试验(Kasiski’s Method)、弗里德曼试验和重合指数(Index of Coincidence)

为了求出密钥长度t,可以利用卡西斯基实验和重合指数。卡西斯基实验的内容很容易理解,不多做赘述。这里引用百度百科中的例子。

卡西斯基试验是基于类似the这样的常用单词有可能被同样的密钥字母进行加密,从而在密文中重复出现。例如,明文中不同的CRYPTO可能被密钥ABCDEF加密成不同的密文:

        密钥:ABCDEF AB CDEFA BCD EFABCDEFABCD

        明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY

        密文:CSASXT IT UKSWT GQU GWYQVRKWAQJB

此时明文中重复的元素在密文中并不重复。然而,如果密钥相同的话,结果可能便为(使用密钥ABCD):

        密钥:ABCDAB CD ABCDA BCD ABCDABCDABCD

        明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY

        密文:CSASTP KV SIQUT GQU CSASTPIUAQJB

此时卡西斯基试验就能产生效果。对于更长的段落此方法更为有效,因为通常密文中重复的片段会更多。如通过下面的密文就能破译出密钥的长度:

        密文:DYDUXRMHTVDVNQDQNWDYDUXRMHARTJGWNQD

其中,两个DYDUXRMH的出现相隔了18个字母。因此,可以假定密钥的长度是18的约数,即长度为18、9、6、3或2。而两个NQD则相距20个字母,意味着密钥长度应为20、10、5、4或2。取两者的交集,则可以基本确定密钥长度为2。  

除了卡西斯基实验,我们也可以使用别的参数来描述猜测的t值是否准确。当计算某个密文的重合指数(又名:重合概率Index of Coincidence)时,即相当于求在某个密文中随机无放回地抽取其中的两位,这两位的字母相同的概率。

对于一个由任意字母表所构成的密文字母串而言,其重合指数可以表示下图:

图片源自维基百科

其中c是归一化系数,用于对不同字母表进行归一化处理(英语为26),n 下标a是字母“a”出现在文本中的次数,N是文本的长度。重合指数也可以用求和的形式来表示:

图片源自维基百科

我们已经知道,维吉尼亚密码可以被分解为若干组平移密码来破译,而一个明文足够长的平移密码的重合指数接近0.0687。换言之,如果我们选取某个t值,使得分组后的密文的重合指数接近0.065,则说明选取的t值与密钥的长度是一致的。 

在一串无规律的字母中,我们随意抽取两个字母,由于每个字母被抽到的概率相同,因此抽取的两个字母相同的概率为26*(1/26)^2=0.0385。如果是从一篇文章或者一句完整的话中抽取,此时的概率为P(a)^2+P(b)^2+….+p(z)^2=0.067。这种特性是破译密码的一大关键,正常的单表替换,其重合指数更接近于0.067,而像维吉尼亚密码这类周期性多表替换,其重合指数更接近于0.0385。

这里引用维基百科中的例子进一步阐述,为简化描述,下文中“重合指数”全部指明文为英文时的情况:


作为使用IC的实际例子,假设我们截获了以下密文消息:

QPWKA LVRXC QZIKG RBPFA EOMFL JMSDZ VDHXC XJYEB IMTRQ WNMEA IZRVK CVKVL XNEIC FZPZC ZZHKM LVZVZ IZRRQ WDKEC HOSNY XXLSP MYKVQ XJTDC IOMEE XDQVS RXLRL KZHOV

(分为五个字符只是一个电报惯例,与实际字长无关。)我们怀疑这是一个使用Vigenère密码加密的英文密文,其中包含普通的A-Z分量和一个短的重复关键字,我们可以考虑密文“堆叠”成若干列,例如7列:

Q    P    W    K    A    L    V

R    X    C    Q    Z    I    K

G    R    B    P    F    A    E

O    M    F    L    J    M    S

D    Z    V    D    H    X    C

X    J    Y     E    B     I     M

T    R    Q   W    N    ...    ...

如果密钥大小恰好与假定的列数相同,那么单个列中的所有字母都将使用相同的密钥字母加密,实际上是一个简单的恺撒密码,应用于随机选择的英文明文字符。与它们相应的密文字母组,尽管每个字母已被置换(移位对应于密钥字母的量,参考本文第四节),也应具有类似于英语的频率分布的粗糙度。

因此,如果我们计算每列重合指数IC,它应该在0.067左右;另一方面,如果我们猜错了密钥大小(也就是选错了列数),则其重合指数IC应该在0.0385左右。因此,我们分别计算当密钥大小从1到10时的 IC:

t取5或10的时候IC最接近0.067

从上图可以看出,密钥长度t很可能是5.如果实际长度是5,那么当长度取10的时候也会有较高的IC,原因是此时它的每列也对应一个简单的恺撒加密。

在求得密钥长度之后,通过穷举密钥字母的每一种可能取值(A到Z总共26种),并且针对每一行求其在某一取值下重合指数,重合指数最高的情况下该行最有可能为明文原文,此时的穷举结果即为密钥字母。以下是经过解密后得到的明文:

MUSTC HANGE MEETI NGLOC ATION FROMB RIDGE TOUND ERPAS SSINC EENEM YAGEN TSARE BELIE VEDTO HAVEB EENAS SIGNE DTOWA TCHBR IDGES TOPME ETING TIMEU NCHAN GEDXX

从中可以读出明文想要发送的信息为:

是否必须将会议地点从桥改到地下通道,因为据信敌方特工已被派去观看桥头会议.时间不变XX

在明显的位置恢复了单词划分。“ XX”显然是“空”字符,用于填充最后一组进行传输。

整个过程可以很容易地打包成自动算法来破解这些密码。由于正常的统计波动,这种算法偶尔会做出错误的选择,特别是在分析短密文时。


以上内容仅代表本人大学学习思考内容,如有侵权及时删除,欢迎讨论和指教!

相关文章

  • 密码学原理-篇1:重合指数

    古典密码学之所以被称为古典,是因为区别于现代密码学,这些密码理论虽然很有价值,但是现在很少使用。因此,学习古典密码...

  • 2.传统密码学技术

    重点密码学发展每个阶段的特点现代密码学的两次飞跃及里程碑事件学习传统密码技术的意义转轮密码成功的启示重合指数法 0...

  • 密码学

    《密码学知识入门:一文说透密码学历史、工作原理、零知识证明及潜在影响》 这是一篇讲述了密码学的历史、工作原理、零知...

  • 椭圆曲线密码学原理分析

    之前写过一篇文章分析过 RSA 算法原理后,想了解下更复杂点的椭圆曲线密码学原理(Elliptic Curve C...

  • 自学区块链(一)

    咱先了解下比特币的密码学原理 主要用到了密码学中的哈希和签名, 这个哈希函数(密码学中要求)的主要性质是 1、首先...

  • 非对称加密算法

    扩展欧几里得算法 DH密钥交换 ECC椭圆曲线加密原理参考1 椭圆曲线密码学简介 椭圆曲线密码学的简单介绍 RSA...

  • 手机密码怎么设置更安全?

    最近,订阅了桌客的密码学课,课程全面而系统的介绍了密码学的发展历史,以及密码学的加密原理。 对于密码,大家一定都非...

  • 什么是BTC?

    BTC——基于密码学原理的电子货币 BTC总量:2100万 区块时间:10分钟 发布日期:2009/1/9 ...

  • 零知识证明学习

    学习区块链过程中突然发现密码学的原理在里面起到了非常关键的作用,这里就谈谈其中最重要的一条密码学原理:零知识证明。...

  • 1.BTC-密码学原理

    一.写在前面 本文内容主要是自己的学习笔记以及一些理解加上一些网上的资料整理而成。 本文主要介绍两部分Hash和签...

网友评论

本文标题:密码学原理-篇1:重合指数

本文链接:https://www.haomeiwen.com/subject/moaowftx.html