一、密码学概述:从古典到量子,我们到底在保护什么?

各位同学好,我是这门课的主讲。在正式开始之前,我想先聊聊一个基础问题:密码学到底是什么?

说白了,密码学就是一门「藏」与「验」的艺术。藏,是把信息藏起来不让别人看懂;验,是确保信息没被篡改、确实是本人发的。我做了十几年安全架构,见过太多「以为加密了就万事大吉」的项目,结果往往在签名验签环节翻车。嗯,这节课我们就先把地基打牢。

1.1 密码学发展史:一场攻防博弈的进化论

密码学的发展,其实就是一部加密与破译的对抗史。我把它分成四个阶段,这样好记:

阶段 时期 代表算法 核心特点
古典密码 古代 – 19 世纪末 凯撒密码、维吉尼亚密码 基于字符替换或置换,依赖算法保密
近代密码 20 世纪初 – 1940 年代 恩尼格玛机 机械/电子设备辅助,密钥空间扩大
现代密码 1970 年代 – 至今 DES、RSA、AES、ECC 基于数学难题,算法公开,密钥保密
量子密码 21 世纪 – 未来 量子密钥分发 (QKD)、后量子密码 利用量子力学原理,理论上可证明安全

一个关键转折点:1976 年 Diffie 和 Hellman 发表了《密码学的新方向》,提出了公钥密码的概念。这彻底改变了密码学的面貌——以前加密和解密必须用同一个密钥,现在你可以把加密密钥公开,全世界都能给你发密文,只有你能解密。我在做金融系统时,这个特性简直是救星。

为什么会从古典走到量子?你想想看,古典密码的凯撒密码,就是把字母往后移三位。这在罗马时代够用,但到了计算机时代,穷举 26 种可能连一秒都不需要。所以密码学一直在「道高一尺,魔高一丈」地进化。

我记得有一次帮客户审计一个老旧系统,他们还在用自己魔改的古典密码——把字符串反转再 XOR 一个固定值。我当场就演示了如何用 5 行 Python 脚本破解。嗯,那个客户的脸都绿了。

1.2 密码学的四大核心目标

很多初学者以为密码学就是「加密」,其实远不止如此。我习惯用 CIA+N 来记:

  • C - 机密性 (Confidentiality):确保信息不被未授权的人获取。加密是实现机密性的主要手段。
  • I - 完整性 (Integrity):确保信息在传输或存储过程中没有被篡改。哈希函数、消息认证码 (MAC) 是常用工具。
  • A - 可用性 (Availability):确保授权用户在需要时能够访问信息。这更多是系统层面的保障,但密码学中的密钥管理直接影响可用性——密钥丢了,数据就废了。
  • N - 不可否认性 (Non-repudiation):确保发送方不能否认自己发送过某条消息。数字签名是实现不可否认性的核心机制。

我的经验之谈:在项目里,很多人只关注机密性,觉得「加密了就安全了」。我曾经遇到一个案例,某公司用 AES-256 加密了所有数据库字段,但没做完整性校验。结果攻击者通过篡改密文,把转账金额从 100 元改成了 100 万。加密保证了机密性,但没保证完整性。所以四大目标缺一不可。

1.3 密码学在现代互联网中的应用场景

密码学不是实验室里的理论,它就在你每天用的每一个互联网服务里。我列几个最常见的场景:

  1. HTTPS / TLS 协议:你访问任何 https 网站,背后都在进行证书验证、密钥协商、对称加密通信。这是密码学最广泛的应用。
  2. 数字签名与电子合同:你在网上签的电子合同,背后是 RSA 或 ECDSA 签名。我参与过某电子签章平台的设计,签名验签的流程必须严格遵循标准,否则法律上不认。
  3. 区块链与加密货币:比特币、以太坊的核心就是哈希函数和椭圆曲线签名。没有密码学,区块链就是个公开账本,谁都能伪造交易。
  4. 身份认证与单点登录:OAuth 2.0、JWT 令牌都依赖签名技术。你登录一个网站后,服务器给你发一个签名的 token,下次请求带上它,服务器验签通过就知道是你。
  5. 安全邮件与即时通讯:PGP 加密邮件、Signal 的端到端加密,都是密码学的实战案例。

避坑指南:我曾经见过一个团队自己实现了一套「签名算法」,把用户密码的 MD5 值当作签名。这完全不对!签名必须使用非对称密钥对,私钥签名、公钥验签。自己造轮子搞签名,十有八九会出安全问题。记住:永远不要自己实现密码学算法,用成熟的库。

1.4 本章知识体系总览

下面这张图,是我画的本课程知识体系框架。你可以把它当作一张地图,后面每学一章,都可以回来对照一下,看看自己走到了哪里。

密码学知识体系框架图 密码学知识体系框架 密码学 古典密码 现代密码 量子密码 对称加密 非对称加密 哈希函数 机密性 完整性 可用性 不可否认性 HTTPS/TLS 数字签名 区块链 身份认证 本课程将沿着这条路径,从古典到量子,从理论到实战

这张图把密码学的发展脉络、核心目标和应用场景串在了一起。你会发现,现代密码的三个分支——对称加密、非对称加密、哈希函数——最终都是为了实现那四个核心目标。而所有的应用场景,都是这四个目标的具体落地。

我个人习惯在开始一个新项目时,先画这样一张图。它能帮你快速定位:当前要解决的问题,属于哪个分支?要达成哪个目标?用什么算法最合适?