讲师强调,密码学能实现四个基本能力,对应密码学家的"工具箱":
| 目标 | 实现方式 | 对抗的威胁 |
|---|---|---|
| 机密性 Confidentiality | 对称/公钥加密 | 窃听 |
| 完整性 Integrity | 哈希/单向散列函数 | 篡改 |
| 认证性 Authentication | 数字证书 | 伪装 |
| 不可否认性 Non-Repudiation | 数字签名 | 否认 |
讲师举例:从微软官网下载文件,官网给出文件的哈希值。你下载后自己算一遍哈希,两个值一样→文件没被改过。这就是哈希做完整性校验。
| 术语 | 含义 |
|---|---|
| 明文 Plaintext | 未加密、可理解的数据 |
| 密文 Ciphertext | 加密后、无法理解的数据 |
| 加密/编码 Encryption | 明文 → 密文 |
| 解密/解码 Decryption | 密文 → 明文 |
| 密钥 Key | 加解密用的关键信息 |
| 初始向量 IV | 加密用的随机数,增加随机性 |
对称加密快但密钥难分发;公钥加密能安全分发密钥但慢。想兼得?用混合加密(数字信封)——拿公钥加密把对称密钥安全送过去,再用快速的对称加密传数据。
科克霍夫原则(Kerckhoffs's Principle):密码系统的安全应该只依赖密钥的保密,而不是算法的保密。即使算法完全公开,只要密钥不泄露,系统就是安全的。
跟开源软件思想一样:我把源代码公开,所有人都找不出漏洞,才证明它真的安全。"通过隐藏来获得安全"(Security by Obscurity)是不可靠的。
对称加密:加密和解密用同一把密钥。优点是速度极快,适合海量数据加密(如硬盘加密 BitLocker 用 AES)。
爱丽丝想把加密的信和密钥都寄给鲍勃。但密钥在路上可能被窃听者截获——窃听者拿到密钥就能解密。这就是对称加密最大的痛点,也是公钥加密要解决的问题。
分组密码(块密码)把明文切成固定大小的块(如 64/128 位)逐块加密。怎么处理这些块,就有了不同的加密模式:
| 模式 | 原理 | 特点 |
|---|---|---|
| ECB 电子密码本 | 每块独立加密 | 最简单,最不安全(相同明文→相同密文) |
| CBC 密文分组链接 | 先和前一块密文异或,再加密 | 相同明文→不同密文;错误会传播 |
| CFB 密文反馈 | 先加密再异或(流密码) | 处理流数据 |
| OFB 输出反馈 | 反复加密初始向量 | 错误不传播 |
| CTR 计数器 | 用递增计数器代替 IV | 可并行,效率高 |
ECB 模式下,相同的明文块永远产生相同的密文块。攻击者就算不解密,也能通过"哪些密文块相同"推断出明文规律。所以引入 CBC——用初始向量(IV)和异或,让相同明文也产生不同密文。
讲师反复强调:教材里这张"对称密码熟记表"是 CISSP 必考内容,务必熟记于心。重点记块大小和密钥长度。
| 算法 | 块大小 | 密钥长度 | 状态 |
|---|---|---|---|
| DES | 64 位 | 56 位(+8 校验) | ❌ 已不安全 |
| 3DES | 64 位 | 112/168 位 | ⚠️ 过渡用 |
| AES | 128 位 | 128/192/256 位 | ✅ 当前主流 |
| IDEA | 64 位 | 128 位 | 用于早期 PGP |
| Blowfish | 64 位 | 32–448 位 | 开放 |
| Skipjack | 64 位 | 80 位 | 美政府/含密钥托管 |
| RC4 | 流密码 | 40–2048 位 | ❌ 用于 WEP/WPA(不安全) |
| RC5 | 块密码 | 0–2040 位 | — |
密钥也有生命周期:创建 → 分发 → 存储 → 销毁 → 恢复 → 托管。
公钥加密(非对称加密)用一对密钥:公钥和私钥。从公钥推不出私钥,反之亦然。
公钥像一个谁都能用的"投信口"(公开),私钥是只有你有的"信箱钥匙"。别人用你的投信口(公钥)把信塞进来,只有你能用钥匙(私钥)打开。所以公钥到处发都没事。
"加密用接收者公钥,解密用接收者私钥"——记住这个方向。公钥加密慢,所以实际中常用混合加密。详细的 RSA、数字签名、PKI 在后续章节展开。