密码学补完计划 · 开篇
本文档为社团内部学习资料,系统讲解密码学相关内容。
1. 为什么要学密码学?
无论是 CTF 比赛中的解谜,还是理解 HTTPS、数字证书、电子支付这些日常技术,背后都是密码学的影子。密码学不是数学家的专利,它是连接理论与现实攻防的桥梁。
本系列将从零开始,带你从古典密码,一路走到现代密码的数学根基,最终在 CTF 实战中能够独立分析、拆解各类密码学问题。
2. 什么是密码学
密码学(英语:Cryptography)可分为古典密码学和现代密码学。在西方语文中,密码学一词源于希腊语 kryptós“隐藏的”,和 gráphein“书写”。古典密码学主要关注资讯的保密书写和传递,以及与其相对应的破译方法。而现代密码学不只关注资讯保密问题,还同时涉及资讯完整性验证(消息验证码)、资讯发布的不可抵赖性(数码签名)、以及在分布式计算中产生的来源于内部和外部的攻击的所有信息安全问题。
—— 维基 · 密码学
3. 密码学的两大分支
3.1 古典密码学 —— 隐藏与欺骗的艺术
古典密码学作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰的定义。古典密码学主要包含以下几个方面:
- 单表替换加密:如凯撒密码、仿射密码,一个明文字母固定替换为另一个密文字母
- 多表替换加密:如维吉尼亚密码,使用多个替换表轮换加密,抵抗频率分析
- 奇奇怪怪的加密方式:如猪圈密码、舞动的小人、键盘布局密码等
古典密码的核心思想至今仍在某些场景沿用,但面对现代计算能力,几乎全部可以被暴力或统计方法攻破。
3.2 现代密码学 —— 数学与计算的博弈
现代密码学起源于 20 世纪中后期出现的大量相关理论。1949 年香农(C. E. Shannon)发表了题为《保密系统的通信理论》的经典论文,标志着现代密码学的开始。现代密码学主要包含以下几个方面:
| 分类 | 代表算法 | 核心用途 |
|---|---|---|
| 对称加密 | DES、AES、RC4 | 高效加密大量数据 |
| 非对称加密 | RSA、ElGamal、ECC | 密钥协商、数字签名 |
| 哈希函数 | MD5、SHA-1、SHA-256 | 完整性校验、口令存储 |
| 数字签名 | RSA签名、DSA、ECDSA | 不可否认性、身份认证 |
其中,对称加密体制主要分为两种方式: - 分组密码(Block Cipher):将数据分块加密,如 AES - 序列密码(Stream Cipher):逐字节/逐位加密,如 RC4
4. 信息安全的核心目标
密码设计者的根本目标是保障信息及信息系统的以下特性。前三者被称为 CIA 三要素,是所有安全体系的基石。
| 目标 | 含义 | 现实场景举例 |
|---|---|---|
| 机密性 | 信息不被未授权者获取 | 微信“端到端加密”聊天、HTTPS 传输 |
| 完整性 | 信息未被篡改 | 软件下载页提供 SHA256 校验值 |
| 可用性 | 系统与服务可正常访问 | 防止 DDoS 攻击导致网站瘫痪 |
| 认证性 | 确认通信双方的身份 | 登录时验证用户名与密码 |
| 不可否认性 | 操作者无法否认自己的行为 | 电子合同、数字签名 |
5. 攻击者模型
在密码学中,我们通常假设攻击者已知待破解的密码体制(柯克霍夫原则),只不知道密钥。攻击类型通常分为以下四种,难度依次降低:
| 攻击类型 | 攻击者掌握的信息 | 难度 |
|---|---|---|
| 唯密文攻击 | 仅拥有若干密文 | 最难,现实中较少单独出现 |
| 已知明文攻击 | 拥有若干“明文-密文对” | 较难,如部分已知文件格式的加密数据 |
| 选择明文攻击 | 可对任意明文加密获得密文 | 中等,如可控制输入的加密API |
| 选择密文攻击 | 可对任意密文解密获得明文 | 攻击能力最强,常见于侧信道或协议漏洞 |
在 CTF 密码学题目中,常需要根据题目提供的接口判断攻击类型,并选择合适的攻击手段。
6. 系列路线图
本系列将按照以下路线展开,逐步深入:
| 阶段 | 核心内容 | 目标 |
|---|---|---|
| 第一阶段:古典密码 | 替换、置换、编码及典型攻击方法(频率分析、爆破) | 掌握手工分析能力,理解密码设计思想 |
| 第二阶段:数学基础 | 数论(模运算、欧拉定理)、有限域、概率论 | 为现代密码算法打底 |
| 第三阶段:对称密码 | AES、DES、RC4 原理,分组密码模式(ECB/CBC等) | 理解加解密流程与常见误区 |
| 第四阶段:非对称密码 | RSA、ECC、ElGamal 原理与参数安全性 | 掌握密钥生成、加解密、签名逻辑 |
| 第五阶段:后量子密码 | 格密码等更高难度的类型 |
7. 学习资源推荐
7.1 在线文档(入门介绍)
- CTF-Wiki 密码学板块 —— 中文 CTF 知识库,体系完整
- Hello-CTF 密码学篇 —— 面向新手的入门教程,例题丰富
- Practical Cryptography —— 英文站,古典密码工具与经典算法实现很全
7.2 书籍
- 《初等数论》 —— 离散数学是现代密码学的理论基础,各类现代密码算法都离不开数论的支持
- 《Understanding Cryptography》 —— 这是大二应用密码学课程的教材(纯英)
- 《离散数学》——就是你们现在手里的教材就可以
7.3 视频课程
- B站《密码学补完计划》,适合有一定了解后再去review,我为数不多不敢开倍速的视频
- 英语好的去YouTube上去搜搜看吧,感觉国内一堆臭卖课的还讲不好(哭泣)
8. 写在前面的话
密码学是一门既古老又年轻的学科。从凯撒的军令到比特币的私钥,从恩尼格玛的破解到量子安全的挑战,每一次技术的跃迁都在重塑我们对“秘密”的认知。
这个系列不会要求你成为数学家,但会带你读懂数学的语言;不会让你背诵所有算法,但会帮你建立分析问题的框架。每篇文章都会尽量配合 CTF 例题或用例场景,让你“用完即走,走完还能回来翻”。