1. 密码学导论:从古至今的安全基石
各位同学好,我是这门课的主讲人。在安全领域摸爬滚打十几年,我越来越觉得,密码学就像数字世界的「钢筋混凝土」——平时看不见,但少了它,整个大厦都得塌。
今天咱们聊第一章:密码学导论。说白了,就是搞清楚三件事——密码学从哪来、核心概念是什么、现在用在哪儿。
1.1 密码学发展史:三个关键阶段
密码学不是新鲜事。我最早接触它,是在大学图书馆翻到一本讲古罗马密码的书。那时候我就觉得,这东西有意思——几千年前的人就在琢磨怎么藏住秘密。
古典密码时期(公元前 - 19 世纪)
- 凯撒密码:把字母往后挪三位。比如 A→D,B→E。简单吧?但当时确实管用。
- 维吉尼亚密码:用关键词做多表替换。比凯撒难破多了。
- 特点:靠算法保密,一旦算法泄露,全完蛋。
我的经验: 古典密码虽然简单,但它的「替换-置换」思想,至今还在现代密码里用。我教新人时,经常让他们先手写一个凯撒密码,感受一下「加密」到底是怎么回事。
近代密码时期(20 世纪初 - 1970 年代)
- 恩尼格玛机:二战时德军用的转子密码机。理论上破不了,但盟军硬是把它破了。
- 一次一密:理论上绝对安全。但密钥长度等于明文长度,实际用起来太麻烦。
- 特点:从手工走向机械,但密钥分发还是老大难。
避坑指南: 我曾经见过一个团队,自己设计了一套「类似恩尼格玛」的加密算法,觉得没人能破。结果上线三天就被安全研究员打穿了。记住:不要自己造密码,除非你是世界级专家。
现代密码时期(1976 年至今)
- 1976 年:Diffie 和 Hellman 提出公钥密码思想。这是革命性的——加密和解密用不同的钥匙。
- 1977 年:RSA 算法诞生。至今还在用。
- 2000 年代以后:椭圆曲线密码(ECC)、量子密码、同态加密……越来越强。
- 特点:算法公开,密钥保密。安全建立在数学难题上。
你想想看,从凯撒到 RSA,核心问题其实没变——怎么让两个人安全地通信,即使中间有人偷听。但方法已经天差地别了。
1.2 核心概念:机密性、完整性、可用性
这三个词,我几乎每天都会念叨。它们合起来叫 CIA 三元组(不是美国那个 CIA)。
| 概念 | 英文 | 一句话解释 | 我遇到过的坑 |
|---|---|---|---|
| 机密性 | Confidentiality | 只有授权的人能看 | 有人把密钥硬编码在代码里,结果代码泄露,数据全裸奔 |
| 完整性 | Integrity | 数据没被改过 | 传输过程中被篡改,接收方浑然不知,直到业务对不上账 |
| 可用性 | Availability | 需要时能用上 | DDoS 攻击打瘫了认证服务器,合法用户登不进去 |
重点: 很多人以为密码学只解决机密性。其实不对。完整性靠哈希和数字签名,可用性靠冗余和抗攻击设计。三者缺一不可。
机密性:加密是核心手段
加密就是把明文变成密文。只有持有密钥的人才能解密。我习惯把加密分为两类:
- 对称加密:加密和解密用同一把钥匙。快,但钥匙怎么安全地给对方?
- 非对称加密:公钥加密,私钥解密。慢,但解决了钥匙分发问题。
实际项目中,我经常两者混用——用非对称加密传对称密钥,然后用对称密钥加密大量数据。这叫「混合加密」,HTTPS 就是这么干的。
完整性:哈希函数与数字签名
光加密还不够。你怎么知道收到的密文没被人改过?
- 哈希函数:把任意长度的数据,变成固定长度的「指纹」。改一个比特,指纹就变了。
- 数字签名:用私钥对哈希值签名。别人用公钥验证。既能保证完整性,又能防抵赖。
我的习惯: 每次下载软件,我都会校验它的 SHA-256 哈希值。别嫌麻烦——我曾经因为没校验,装了个被篡改的安装包,结果机器被挖矿程序占了。
可用性:容易被忽视的一环
可用性听起来不像密码学的事。但你想想,如果认证服务器被攻击,所有人都登不进去,那加密再强也没用。
- 密钥备份:密钥丢了,数据就永远打不开了。
- 抗 DDoS:别让攻击者把认证接口打瘫。
- 容灾设计:主节点挂了,备用节点能顶上。
1.3 密码学在现代安全中的应用
密码学不是实验室里的理论。它就在你身边。我随便举几个例子:
- HTTPS:你正在看的这个页面,就是通过 TLS 加密传输的。没有它,你的密码、信用卡号都在裸奔。
- 数字证书:网站的身份证明。我每次看到浏览器地址栏的小锁,都会下意识点一下,看看证书是不是真的。
- 区块链:比特币、以太坊,核心就是哈希、数字签名、共识算法。
- 全盘加密:电脑硬盘、手机存储,现在默认都加密。丢了也不怕数据泄露。
- 安全存储:密码不能明文存。我见过太多数据库泄露事件,就是因为密码只做了 MD5(不推荐)甚至明文存储。
注意: 密码学不是银弹。算法再强,如果实现有漏洞、密钥管理混乱、用户乱设密码,照样被攻破。安全是一个系统工程,密码学只是其中一块砖。
本章知识体系
下面这张图,是我自己梳理的本章知识结构。你可以把它当一张地图,随时回来对照。
好了,第一章就到这里。记住:密码学不是背公式,而是理解「为什么」。后面我们会一步步深入,从对称加密到哈希函数,从数字签名到安全协议。每一步,我都会把我在项目里踩过的坑、总结的经验,原原本本告诉你。