【密码学】2. 古典密码

目录

  • [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 经典加密技术基础

  1. 分类
    • 代换(Substitution):明文内容的表示形式改变(元素被替换),但元素相对位置不变(如明文字母被密文字母替代)。
    • 置换(Transposition/Permutation):明文元素的相对位置改变,但内容表示形式不变(仅重排顺序)。
    • 乘积密码(Product Ciphers):多个加密技术的叠加使用。
  2. 约定
    • 小写字母表示明文,大写字母表示密文。
    • 加密时通常舍弃标点、空格(因普通文本中空格占比 17%-18%,频率过高易泄露信息)。

2.2 代换技术

2.2.1 算术密码

  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 次。
  2. 仿射密码(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)

  1. 单表代换密码(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 年巴黎世纪博览会首次出现,通过旋转指针和圆盘实现加密。
    • 安全性:
      • 短信息(长度小于密钥)可能被穷举攻击;长信息因字母频率不变(单表替换不改变字母出现频率),易被频率统计攻击。
  2. 英语字母频率特征(密码破译关键)
    • 单字母频率: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)。
  3. 多表代换加密(Polyalphabetic Cipher)
    • 原理:使用多个单表代换,明文不同位置的字母用不同单表加密,以抵抗频率统计攻击。
  4. 维吉尼亚密码(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 置换技术

  • 核心特点:通过重排字母顺序隐藏信息,不改变字母表示形式(与代换技术的本质区别:代换改字母,置换改位置)。
  1. 栅栏技术(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"。
  2. 纵行换位(Row Transposition Cipher)
    • 原理:将明文按密钥位数写为若干列,再按密钥顺序输出各列。
    • 示例:明文 "attack postponed until two am",密钥 "4 3 1 2 5 6 7"(7 位),明文按列排列后,按密钥顺序输出列,密文为 "TTNAAPTMTSUOAODWCOIXKNLYPETZ"。

2.4 乘积密码

  1. 原理:单纯代换或置换安全性不足,连续使用多种加密技术(如交替代换和置换)可大幅提高安全性,是现代密码构造的基本技术之一。
  2. 转轮机(Rotor Machines)
    • 本质:机械时代最复杂的密码机,核心是复杂的多表代换系统,通过多个转轮实现,二战广泛应用(如德国 Enigma、盟军 Hagelin、日本 Purple)。
    • 原理:包含多个圆柱体(转轮),每个圆柱体代表一个代换表;每个字母加密后,转轮旋转,改变代换表。
    • 密钥空间:3 个转轮可提供263=17576个代换表。
  3. 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 历史上的教训

  1. Kerckhoff 原则:密码安全性不应依赖算法保密,而应依赖密钥;敌方可能知晓算法,需假设算法公开下仍安全。
  2. 不可低估对手能力:"不可能被攻破" 的密码常被破译(如 DES,1973 年预计需数十年破译,1999 年 22.25 小时即可破解)。
  3. 密码安全性评估:
    • 仅靠密钥组合数评估安全性是片面的(上限为穷举攻击难度),需公开接受全球研究和攻击检验。
    • 表面复杂性可能降低安全性(如禁止字母加密为自身,反而减少攻击者工作量)。
  4. 随机数重要性:随机数生成是密码关键,二战日军曾用编织篮抽纸条(写四位数字)产生随机数。
相关推荐
用户9623779544818 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机21 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全