目录
- [2. 古典密码](#2. 古典密码)
-
- [2.1 经典加密技术基础](#2.1 经典加密技术基础)
- [2.2 代换技术](#2.2 代换技术)
-
- [2.2.1 算术密码](#2.2.1 算术密码)
- [2.2.2 代换密码(Substitution Cipher)](#2.2.2 代换密码(Substitution Cipher))
- [2.3 置换技术](#2.3 置换技术)
- [2.4 乘积密码](#2.4 乘积密码)
- [2.5 历史上的教训](#2.5 历史上的教训)
2. 古典密码
2.1 经典加密技术基础
- 分类
- 代换(Substitution):明文内容的表示形式改变(元素被替换),但元素相对位置不变(如明文字母被密文字母替代)。
- 置换(Transposition/Permutation):明文元素的相对位置改变,但内容表示形式不变(仅重排顺序)。
- 乘积密码(Product Ciphers):多个加密技术的叠加使用。
- 约定
- 小写字母表示明文,大写字母表示密文。
- 加密时通常舍弃标点、空格(因普通文本中空格占比 17%-18%,频率过高易泄露信息)。
2.2 代换技术
2.2.1 算术密码
- 移位密码(凯撒密码,Caesar Cipher)
- 原理:由 Julius Caesar 提出,每个字母用字母表中其后第 k 个字母替代。
- 加密: C = E ( k , p ) = ( p + k ) m o d 26 C=E(k,p)=(p+k)mod26 C=E(k,p)=(p+k)mod26
- 解密: p = D ( k , C ) = ( C − k ) m o d 26 p=D(k,C)=(C−k)mod26 p=D(k,C)=(C−k)mod26
- 部分文献中凯撒密码固定使用 k=3。
- 示例:明文 "meet me after the toga party",k=3 时,密文为 "PHHW PH DIWHU WKH WRJD SDUWB"。
- 安全性:
- 密钥空间:26 个可能密钥,仅 25 个可用(k=0 时密文与明文一致,无效)。
- 易被穷举攻击:最坏需尝试 25 次,平均 12.5 次。
- 原理:由 Julius Caesar 提出,每个字母用字母表中其后第 k 个字母替代。
- 仿射密码(Affine Cipher)
- 目的:扩大密钥空间,映射关系简单。
- 原理:
- 密钥:(a,b)
- 加密: C = E ( [ a , b ] , p ) = ( a p + b ) m o d 26 C=E([a,b],p)=(ap+b)mod26 C=E([a,b],p)=(ap+b)mod26
- 解密: p = D ( [ a , b ] , C ) = ( ( C − b ) × a − 1 ) m o d 26 ( a − 1 为 a 在模 26 下的逆元) p=D([a,b],C)=((C−b)×a^{−1})mod26(a^{−1}为a在模26下的逆元) p=D([a,b],C)=((C−b)×a−1)mod26(a−1为a在模26下的逆元)。
- 密钥选取:
- a ≠ 1 a ≠ 1 a=1(否则退化为凯撒密码),且需满足 g c d ( a , 26 ) = 1 gcd(a,26)=1 gcd(a,26)=1(保证一一映射,否则不同明文可能对应同一密文)。
- 有效 a 值:3,5,7,9,11,15,17,19,21,23,25(共 11 个)。
- 密钥空间:11×26=286。
2.2.2 代换密码(Substitution Cipher)
- 单表代换密码(Monoalphabetic Cipher)
- 原理:每个明文字母按固定密钥(26 个字母的置换)替换为唯一密文字母。
- 示例:
- 明文:a b c d e f g h i j k l m n o p q r s t u v w x y z
- 密钥:D K V Q F I B J W P E S C X H T M Y A U O L R G Z N
- 明文 "ifwewishtoreplaceletters" 加密后为 "WIRFRWAJUHYFTSDVFSFUUFYA"(忽略空格)。
- 密钥空间:26!≈4×1026(部分密钥含不动点,不可用)。
- 辅助工具:惠斯通(Wheatstone)密码,一种钟表形式设备,1867 年巴黎世纪博览会首次出现,通过旋转指针和圆盘实现加密。
- 安全性:
- 短信息(长度小于密钥)可能被穷举攻击;长信息因字母频率不变(单表替换不改变字母出现频率),易被频率统计攻击。
- 英语字母频率特征(密码破译关键)
- 单字母频率:e 频率最高(12.702%),其次为 t(9.056%)、a(8.167%)等;z、q、x、j 频率接近 0。
- 双字母组合:最常见为 th、he、in、er、an 等。
- 三字母组合:最常见为 the、ing、and、her 等。
- 经典密码破译三要素:频率特征(字母使用次数差异)、连接特征(前后字母关联性,如 q 后几乎必接 u)、重复特征(多字符字符串重复出现,如 th、tion)。
- 多表代换加密(Polyalphabetic Cipher)
- 原理:使用多个单表代换,明文不同位置的字母用不同单表加密,以抵抗频率统计攻击。
- 维吉尼亚密码(Vigenère Cipher)
- 原理:最简单的多表替换密码,由多个凯撒替换表循环构成。
- 密钥: k = k 0 k 1 ... k d − 1 (长度为 d ) k=k_0k_1...k_{d−1}(长度为 d) k=k0k1...kd−1(长度为d),第 i 位密钥 k i k_i ki 对应凯撒替换表 k = k i k=k_i k=ki,密钥重复使用。
- 加密: C i = E ( k , p i ) = ( p i + k i m o d d ) m o d 26 C_i=E(k,p_i)=(p_i+k_{i\ mod\ d})mod26 Ci=E(k,pi)=(pi+ki mod d)mod26
- 解密: p i = D ( k , C i ) = ( C i − k i m o d d ) m o d 26 p_i=D(k,C_i)=(C_i−k_{i\ mod\ d})mod26 pi=D(k,Ci)=(Ci−ki mod d)mod26
- 示例:密钥 "deceptive"(d=9),明文 "wearediscoveredsaveyourself",密文为 "ZICVTWQNGRZGVTWAVZHCQYGLMGJ"。
- 安全性:字母频率被模糊但未完全消失,可通过分组统计破解。
- 破解方法:
- 第一步确定密钥长度 d:使用 Kasiski 方法,通过寻找密文中重复字段,计算其间距的最大公约数,即为 d(重复字段间距为 d 的整数倍)。
- 第二步分组攻击:将密文按位置 i、i+d、i+2d... 分组,每组对应同一单表,再用频率统计攻击破解各分组密钥。
- 原理:最简单的多表替换密码,由多个凯撒替换表循环构成。
2.3 置换技术
- 核心特点:通过重排字母顺序隐藏信息,不改变字母表示形式(与代换技术的本质区别:代换改字母,置换改位置)。
- 栅栏技术(Rail Fence Cipher)
- 原理:将明文按对角线方向写成若干行,再按行输出作为密文。
- 示例:明文 "meet me after the toga party",写成两行(m e m a t r h t g p r y 和 e t e f e t e o a a t),密文为 "MEMATRHTGPRYETEFETEOAAT"。
- 纵行换位(Row Transposition Cipher)
- 原理:将明文按密钥位数写为若干列,再按密钥顺序输出各列。
- 示例:明文 "attack postponed until two am",密钥 "4 3 1 2 5 6 7"(7 位),明文按列排列后,按密钥顺序输出列,密文为 "TTNAAPTMTSUOAODWCOIXKNLYPETZ"。
2.4 乘积密码
- 原理:单纯代换或置换安全性不足,连续使用多种加密技术(如交替代换和置换)可大幅提高安全性,是现代密码构造的基本技术之一。
- 转轮机(Rotor Machines)
- 本质:机械时代最复杂的密码机,核心是复杂的多表代换系统,通过多个转轮实现,二战广泛应用(如德国 Enigma、盟军 Hagelin、日本 Purple)。
- 原理:包含多个圆柱体(转轮),每个圆柱体代表一个代换表;每个字母加密后,转轮旋转,改变代换表。
- 密钥空间:3 个转轮可提供263=17576个代换表。
- Enigma(谜)密码机
- 发展历程:1918 年由德国 Arthur Scherbius 提出专利,1923 年带反射板的 Enigma-A 问世,1926 年德国海军开始采购,后发展出多种型号。
- 结构:包含键盘、指示灯板、密钥轮、反射板、接插板等,需 3 人操作(输入明文、读指示灯、记录密文)。
- 破译关键:
- 波兰贡献:1928 年获得商业型 Enigma,1931 年通过 "灰烬先生"(汉斯・蒂洛・施密特)获得操作手册等;马里安・雷耶夫斯基利用指标组(随机 3 字母连续加密两遍)构造字母循环圈,开发 "循环测定机" 和 "炸弹机"(Bomba),1939 年向英、法赠送仿制 Enigma 及技术。
- 英国贡献:1938 年布莱奇利庄园成为国家破译中心,阿兰・图灵 1940 年设计 Bombe 机,针对指标组不再重复加密的情况,通过密文全文寻找明文 - 密文关联破解。
- 美国贡献:1942 年 Joseph Desch 设计可破解四转轮 Enigma 的机器,1943 年起交付海军,最终 121 台 Bombe 机每日破译德国 Enigma 密钥。
- 教训:军民混用、叛徒与间谍影响、使用规则错误(主密钥更新周期长、转轮进位点固定)、对安全性过于自负(未及时销毁设备、低估对手)等。
2.5 历史上的教训
- Kerckhoff 原则:密码安全性不应依赖算法保密,而应依赖密钥;敌方可能知晓算法,需假设算法公开下仍安全。
- 不可低估对手能力:"不可能被攻破" 的密码常被破译(如 DES,1973 年预计需数十年破译,1999 年 22.25 小时即可破解)。
- 密码安全性评估:
- 仅靠密钥组合数评估安全性是片面的(上限为穷举攻击难度),需公开接受全球研究和攻击检验。
- 表面复杂性可能降低安全性(如禁止字母加密为自身,反而减少攻击者工作量)。
- 随机数重要性:随机数生成是密码关键,二战日军曾用编织篮抽纸条(写四位数字)产生随机数。