古典密码学入门

约 6 分钟读完

古典密码学入门

概述

古典密码学是指在计算机出现之前,人类为保护通信机密而发明的各种加密方法。这些密码虽然在现代已不再具有实际的安全价值,但它们蕴含的思想和分析方法是理解现代密码学的重要基础。许多 CTF 竞赛的 Crypto 类题目也以古典密码为考察内容,掌握这些密码的原理和破解方法是解题的基本功。

古典密码主要分为替换密码(Substitution Cipher)和置换密码(Transposition Cipher)两大类。替换密码将明文中的字符替换为其他字符,但保持字符的位置不变;置换密码则改变字符的位置,但不改变字符本身。许多古典密码同时使用两种操作来增强安全性。

对古典密码的分析催生了密码分析学(Cryptanalysis),即在不完全知道密钥的情况下试图恢复明文的科学。频率分析是破解替换密码的核心技术,这一方法的发明被认为是密码学历史上的重要里程碑。

核心概念

凯撒密码

凯撒密码(Caesar Cipher)是最古老的密码之一,相传由古罗马统帅尤利乌斯·凯撒使用。其原理非常简单:将明文中的每个字母在字母表上向后移动固定的位数(密钥),超出字母表范围时循环回到开头。例如密钥为 3 时,A 加密为 D,B 加密为 E,Z 加密为 C。

凯撒密码的密钥空间极其有限(英语中只有 25 种可能的移位),因此可以轻松地通过穷举所有密钥来破解。在 CTF 中,凯撒密码的变种 ROT13(移位 13 位)非常常见,它有一个有趣的性质:加密和解密是相同的操作。凯撒密码也常作为更复杂密码系统的组成部分出现。

维吉尼亚密码

维吉尼亚密码(Vigenere Cipher)由法国密码学家 Blaise de Vigenere 在 16 世纪推广(实际发明者可能更早),它使用一个关键词作为密钥,将明文中第 i 个字母按密钥中第 (i mod 密钥长度) 个字母对应的位移量进行凯撒加密。维吉尼亚密码是多表替换密码,同一明文字母在不同位置可能被加密为不同的密文字母,这使得简单的频率分析变得困难。

维吉尼亚密码的破解需要两个步骤:首先确定密钥长度,可以使用 Kasiski 检验法或重合指数法(Index of Coincidence);然后对每个位置分别进行频率分析。弗里德曼检验(Friedman Test)提供了一种通过统计方法估算密钥长度的公式。在 CTF 中,当密文较长且使用了较短的关键词时,维吉尼亚密码通常可以被成功破解。

栅栏密码

栅栏密码(Rail Fence Cipher)是一种置换密码,将明文按 W 形排列在指定行数的"栅栏"上,然后按行读取生成密文。例如使用 2 行栅栏加密 "HELLO WORLD":第一行放 H L O O L,第二行放 E L W R D,密文为 "HLOOLELWRD"。

栅栏密码的破解相对简单——密钥就是行数,通常不会太大(2-10),可以穷举所有可能的行数并检查解密结果是否是可读文本。在 CTF 中,栅栏密码常常与其他加密方式组合使用,增加了分析的复杂度。ZigZag 加密是栅栏密码的一种常见称呼。

单表替换密码

单表替换密码(Monoalphabetic Substitution Cipher)将字母表中的每个字母固定地替换为另一个字母,形成一个一对一的映射关系。这种密码的密钥空间非常大(26! 种可能的映射),无法通过穷举来破解,但频率分析是其致命弱点。

由于自然语言中字母的出现频率是相对稳定的(英语中 E 是出现频率最高的字母,其次是 T、A、O 等),通过分析密文中字母的出现频率并与标准频率分布比对,可以逐步推断出替换映射。更高级的分析方法还包括双字母频率(Digraph Frequency)分析和基于词典的候选词匹配。

仿射密码

仿射密码(Affine Cipher)是一种特殊的单表替换密码,其加密函数为 E(x) = (ax + b) mod 26,其中 a 必须与 26 互质。仿射密码结合了乘法密码和凯撒密码,密钥空间为 12 * 26 = 312(有 12 个与 26 互质的数),可以通过穷举破解。

在 CTF 中,仿射密码的破解通常需要先确定 a 的值——可以利用已知明文攻击(如已知某个字母的映射关系)建立方程组来求解,或直接穷举所有可能的 (a, b) 组合并检查解密结果。

实战要点

  1. 使用在线工具辅助:dCode.fr 是最全面的古典密码在线破解工具,支持数百种密码类型的自动识别和破解。
  2. 频率分析是核心技能:掌握英语字母、双字母、三字母的频率分布规律,是破解替换类密码的关键。
  3. 注意组合加密:CTF 题目中常将多种古典密码组合使用(如先栅栏再凯撒),需要考虑多种解密顺序。
  4. 观察密文特征:如果密文只有 26 个不同字符,很可能是替换密码;如果字符频率与明文语言一致,可能是置换密码。
  5. 结合上下文猜测:如果知道明文的语言和大致内容(如 flag 格式),可以利用已知明文大幅加速破解过程。

总结

古典密码虽然在安全性上已被现代密码算法远远超越,但它们所体现的密码学思想——替换、置换、密钥空间、频率分析——是整个密码学大厦的基础。对古典密码的学习不仅有助于理解密码学的发展脉络,也能培养密码分析的基本直觉。

在 CTF 竞赛中,古典密码题目是 Crypto 类别的入门级内容,但也是最考验基础知识和分析能力的方向。熟练掌握各类古典密码的识别特征和破解方法,是进一步学习现代密码学的必经之路。

← 后门排查完全指南 取证报告撰写规范 →