希尔密码如何容易受到选择明文攻击?


希尔密码是由莱斯特·S·希尔发明的一种多字母多表密码。希尔密码是一种编码系统,它结合了矩阵的概念和线性同余的方法,用于将明文加密成密文,以及将密文解密成明文。

希尔密码不会将明文中相同的字母都映射到密文中相同的字母,因为它利用矩阵乘法进行加密和解密。希尔密码是一种多表密码,可以归类为分组密码,因为要处理的文本将被分成特定大小的块。

一个块中的每个字符都会影响加密和解密过程中块中的其他字符,从而确保相同的字符不会映射到相同的字符。

希尔密码属于经典的密码算法,如果仅根据密文文件来破解,对于密码分析师来说非常复杂。然而,如果密码分析师同时拥有密文文件和明文文件的一部分,那么破解它就相对简单了。这种密码分析技术称为已知明文攻击。

希尔密码的基础需要矩阵乘法和矩阵求逆技术。希尔密码的关键是n x n矩阵,其中n是块的大小。

成为密钥的K矩阵应该是一个可逆矩阵,它具有逆矩阵K-1,因此密钥必须具有逆矩阵,因为K-1矩阵是用于解密的密钥。

希尔密码的阶段如下:

  • 在希尔密码中,明文被分成相同大小的块。

  • 这些块逐个加密,使得块中的每个字符都参与到块中新字符的加密中。

  • 在希尔密码中,密钥是一个大小为m x m的方阵,其中m定义了块的大小。如果称密钥矩阵为K,则表示为:

    $$\mathrm{K=\begin{bmatrix} K_{11} & K_{12} & K_{1m} \ K_{21}& K_{22}& K_{2m}\ K_{31} & K_{32}& K_{3m}\ \end{bmatrix}}$$

  • 如果明文块中有m个字符,即P1、P2…Pm,则密文块中相应的字符C1、C2…Cm将由以下等式定义:

    $$\mathrm{C_{1}=P_{1}\, K_{11}+P_{2}\, K_{12}+P_{3}\, K_{13}\: mod\: 26}$$

    $$\mathrm{C_{2}=P_{1}\, K_{21}+P_{2}\, K_{22}+P_{3}\, K_{23}\: mod\: 26}$$

    $$\mathrm{C_{3}=P_{1}\, K_{31}+P_{2}\, K_{32}+P_{3}\, K_{33}\: mod\: 26}$$

  • 这些等式可以用列矩阵的形式表示为:

    $$\mathrm{\begin{pmatrix} C_{1} \ C_{2} \ C_{3} \end{pmatrix}=\begin{pmatrix} K_{11} &K_{12} & K_{13} \ K_{21} & K_{22} & K_{23} \ K_{31} & K_{32} & K_{33} \ \end{pmatrix} \begin{pmatrix} P_{1} \ P_{2} \ P_{3} \end{pmatrix} \: mod\: 26}$$

  • 一般情况下,希尔密码的等式可以定义为:

    $$\mathrm{C\: =\: K\, P\: mod\: 26}$$

    $$\mathrm{P\: =\: K^{-1}\, C\: mod\: 26}$$

  • 希尔密码很容易被已知明文攻击破解。假设有m个明文-密文对,每个长度为m,使得

    $$\mathrm{C_{i}\, =\, K\, P_{i}\: for\: 1\leq i\leq m}$$

  • 未知密钥矩阵K可以计算为:

    $$\mathrm{K=C_{i}\: P_{i}^{-1}}$$

    一旦计算出密钥,就可以轻松地破解密码。

更新于: 2022年3月14日

浏览量 1K+

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告