🗒️现代密码学
00 分钟
2024-10-20
2024-12-14
type
status
date
slug
summary
tags
category
icon
password

单表古典密码的统计分析

单表古典密码(如凯撒密码、加法密码、乘法密码和仿射密码)的统计分析依赖于明文和密文的字母频率分布。
  1. 特点
      • 单表密码的密文字母表是明文字母表的一个排列,因此,明文字母的统计特性在密文中能够反映出来
      • 当密文足够长时,可以通过统计密文字母的出现频率来推测明文字母与密文字母之间的对应关系。
  1. 具体分析方法
      • 频率分析法:由于每个明文字母在密文中总是映射到同一个密文字母,因此通过统计密文中各字母的频率分布,并与典型明文的字母频率分布(如英语字母频率)进行比较,可以破译出密钥。
      • 举例说明:英语文本中,字母 E 的频率最高,因此在密文中频率最高的字母通常对应明文字母 E。依此类推,可以推测出其他字母的对应关系。
  1. 破解方法
      • 加法密码和乘法密码:只需找到一个密文字母与明文字母的对应关系,就可以确定密钥。
      • 仿射密码:需要找到两个密文字母与明文字母的对应关系,利用仿射密码的公式可以推算出密钥。
  1. 攻击方式
      • 穷举攻击:由于加法密码和乘法密码的密钥量较小,可以通过穷举所有密钥来找到正确的密钥。
      • 双字母频率分析:对于较复杂的单表密码,可以使用双字母(digraph)或三字母(trigraph)频率分析来提高破译的准确性。

多表古典密码的统计分析

多表古典密码(如维吉尼亚密码、Beaufort密码、Hill密码等)的统计分析主要使用以下方法:
  1. 特点
      • 多表密码的密文字母表不再是明文字母表的简单排列。明文中相同的字母在密文中会映射为不同的密文字母
      • 因此,传统的单字母频率分析在多表密码中效果较差,需要使用更高级的统计分析方法
  1. 具体分析方法(03 破解维吉尼亚密码 - 知乎)
      • Kasiski 测试法
        • 用于推测密钥长度。寻找密文中重复的字母序列(长度至少为 3),记录每对重复序列之间的距离。
        • 这些距离的最大公因数很可能是密钥的长度。
      • 重合指数法(Index of Coincidence, IC)
        • 先猜测一个密钥长度 ,然后将密文按密钥长度 进行分组(如密文 LXFOPVEFRNHR,若 ( m = 3 ),则分为 LFP, XOV, FRH 三组)。
        • 分别计算每组的重合指数 ,其定义为: 如果某个 值接近英语明文的重合指数(约为 0.068),则表明该密钥长度是合理的。
      • 交互重合指数法(Mutual Index of Coincidence, MIC)
        • 用于确定具体的密钥内容。先将密文按猜测的密钥长度进行分组,然后计算不同分组之间的交互重合指数:
        • 如果某个相对位移下的交互重合指数最大,则表明两组字符之间存在某种偏移关系,对应的偏移量就是密钥字母的差值。
  1. 破解方法
      • 先使用 Kasiski 测试法重合指数法 推测密钥长度。
      • 再使用 交互重合指数法频率分析法 推测每组的密钥字母。(具体如何找可以问GPT)
  1. 举例说明
      • 设明文为 THIS IS A SECRET,使用密钥 KEY 进行维吉尼亚加密后,得到密文 DLGCMU MF GQIHHV
      • 使用 Kasiski 测试法和重合指数法,可以确定密钥长度为 3。
      • 将密文按密钥长度分组:DLG, CMU, MF, GQI, HHV
      • 分析各组与标准英语字母频率的匹配程度,确定密钥 KEY
       
  1. 具体示例
    1. 找到最大匹配平移量的过程其实就是将密文中每个字符向前或向后“平移”,然后对每个平移结果进行频率分析,并与标准明文字母频率分布进行比较,找到与标准分布最接近的平移量。这里的“最大匹配平移量”是指:经过某个平移后,这一组密文字母的分布与明文字母的分布相匹配程度最高。
      为了更好理解,我们来看具体的操作步骤:

      步骤 1: 获取标准明文字母的频率分布

      先明确标准英语明文中各个字母的频率分布,以下是常用的英语字母频率表(约数值):
      字母
      频率
      A
      8.2%
      B
      1.5%
      C
      2.8%
      D
      4.3%
      E
      13.0%
      F
      2.2%
      G
      2.0%
      H
      6.1%
      I
      7.0%
      J
      0.15%
      K
      0.77%
      L
      4.0%
      M
      2.4%
      N
      6.7%
      O
      7.5%
      P
      1.9%
      Q
      0.095%
      R
      6.0%
      S
      6.3%
      T
      9.1%
      U
      2.8%
      V
      1.0%
      W
      2.4%
      X
      0.15%
      Y
      2.0%
      Z
      0.074%
      可以看到字母 E 的频率最高,其次是 TAOIN 等。

      步骤 2: 将密文分组

      假设我们已经确定了密钥长度 ,将密文 LXFOPVEFRNHR 分成三组:
      • 第一组:L F P
      • 第二组:X O V
      • 第三组:F R H
      我们现在以第一组 L F P 为例,来说明如何找到最大匹配平移量。

      步骤 3: 计算各字母的出现频率

      统计第一组 L F P 中每个字母的出现频率:
      • L: 1 次
      • F: 1 次
      • P: 1 次
      因为总共有 3 个字母,因此它们各自的出现频率为:
      • L: 1 / 3 = 0.3333
      • F: 1 / 3 = 0.3333
      • P: 1 / 3 = 0.3333

      步骤 4: 平移字母,并计算平移后的交互重合指数

      我们将第一组字母 L F P 向前或向后平移(取模 26),从 AZ 进行 26 次平移。每次平移后,统计新组字母的频率分布,并与标准明文频率分布比较,计算交互重合指数(MIC)

      交互重合指数计算公式

      交互重合指数 的计算公式如下:
      其中:
      • 是密文组中第 个字母的频率(例如:L F PL 的频率)。
      • 是标准英语明文字母 的频率(例如 E 的标准频率是 13.0%)。
      • 是组中总字符数(这里是 3)。
      举例说明:
    2. 第 0 次平移(无偏移):
        • 平移后的字母仍为:L F P
        • 计算它们的频率与标准明文字母频率的交互重合指数:
        • 查表得:
          • L 的标准频率为 4.0%
          • F 的标准频率为 2.2%
          • P 的标准频率为 1.9%
    3. 第 1 次平移:
        • L F P 各自向后平移 1 个字母位置,得到 M G Q
        • 重新计算 M G Q 的交互重合指数。
        • 查表得:
          • M 的标准频率为 2.4%
          • G 的标准频率为 2.0%
          • Q 的标准频率为 0.095%
    4. 继续平移:
        • 继续向后平移 26 次,每次都计算交互重合指数。

      步骤 5: 找到最大匹配平移量

      经过 26 次平移,我们可以得到一个交互重合指数的列表,表示每次平移后密文字母与标准明文频率的匹配程度。
      例如:
      平移量
      平移后的字母
      交互重合指数
      0
      L F P
      0.027
      1
      M G Q
      0.015
      2
      N H R
      0.020
      ...
      ...
      ...
      24
      J D N
      0.068
      假设当平移量为 24 时,交互重合指数达到最大值(如 0.068),说明平移 24 位后,密文字母与明文字母频率的匹配程度最高。

      步骤 6: 得到对应密钥字母

      如果平移量为 24 时匹配程度最高,那么这个平移量对应的密钥字母为:
      • A 向右移动 24 位得到 Y
      因此,第一组 L F P 对应的密钥字母为 Y

      步骤 7: 对其他组进行相同操作

      对第二组和第三组重复上述步骤,分别找到它们的最大匹配平移量和对应的密钥字母。
      例如:
      • 第二组平移 4 位时匹配程度最高,则第二组对应密钥字母为 E
      • 第三组平移 3 位时匹配程度最高,则第三组对应密钥字母为 D
      最终,我们得到密钥为 YED

      步骤 8: 解密密文

      将密文 LXFOPVEFRNHR 使用密钥 YED 解密,逐个字母恢复明文:
      • L 使用 Y 解密为 I
      • X 使用 E 解密为 T
      • F 使用 D 解密为 C
      最终明文为:

      总结

      通过逐步平移每个分组的字母,并计算平移后与标准明文分布的交互重合指数,可以找到与标准分布最匹配的平移量。这个平移量对应的密钥字母就是我们需要的密钥的一部分。最终我们可以利用所有分组得到的密钥字母组合成完整的密钥,进一步解密密文。
总结来说,单表古典密码的统计分析主要基于单字母和双字母频率分布,而多表古典密码的统计分析则依赖于 Kasiski 测试法、重合指数法和交互重合指数法等更复杂的统计方法来确定密钥长度和内容.
 
上一篇
V2Board搭建教程
下一篇
前端3件套学习

评论
Loading...