密码学入门:对称加密、非对称加密与哈希
摘要
用最小必要概念讲清对称加密、非对称加密与哈希三类密码学原语,并以 TLS 握手说明三者如何协作,补充密钥交换、HMAC、密钥管理与量子威胁。
密码学入门:对称加密、非对称加密与哈希
引言
密码学听起来高深,但底层就三块拼图:对称加密、非对称加密、哈希。理解它们,就理解了 HTTPS、数字签名、密码存储的原理。
一、对称加密:同一把钥匙
加密和解密用同一把密钥。快、适合加密大量数据。代表算法:AES(推荐 AES-256-GCM,兼具加密与完整性)。
难点:密钥怎么安全传给对方?这就是“密钥分发问题”。
二、非对称加密:公钥与私钥
一对密钥:公钥可公开,私钥自己留。用公钥加密,只有私钥能解;用私钥签名,公钥可验。代表算法:RSA、ECC(更短密钥、更高效率)。
加密:别人用你的公钥加密,只有你能用私钥解开。
签名:你用私钥签名,别人用公钥验证“确实是你发的、且未被篡改”。
密钥交换(解决分发问题)
Diffie-Hellman / ECDHE 让双方在不安全信道上协商出一把临时对称密钥,即使被窃听也无法推导出密钥。这是 HTTPS 握手的关键。
三、哈希:不可逆的“指纹”
把任意数据映射成固定长度摘要,单向不可逆。代表算法:SHA-256。用于完整性校验、密码存储(加盐)。
HMAC:用密钥参与哈希,既验证完整性又验证来源,常用于接口签名。
四、它们如何协作(以 HTTPS/TLS 为例)
握手:用非对称加密 / ECDHE 安全地协商出临时对称密钥(且前向安全)。
传输:之后用这把对称密钥对称加密数据(快)。
完整性:用 MAC/HMAC 防篡改。
身份:服务器用数字证书(PKI) 证明自己不是冒充者。
TLS 1.3 进一步简化为单次往返,并禁用了不安全的旧套件。
五、密码存储:别自己发明
用 argon2 / bcrypt / PBKDF2 等慢哈希 + 随机盐。
盐防止彩虹表;慢因子对抗暴力破解。
永远不要明文、不要用纯 MD5/SHA(太快)。
六、密钥管理
再强的算法,密钥泄露就归零。要点:密钥分环境存储、定期轮换、用 KMS/密钥库、不要把密钥写进代码仓库。
七、常见误区
“Base64 是加密”——它只是编码,可逆且无密钥。
“MD5 加盐就安全”——MD5 太快,仍易被暴力。
“自己写加密算法”——除非你是密码学专家,否则千万别。
忽视前向安全:固定密钥被破解会牵连历史通信。
八、量子威胁(前瞻)
Shor 算法可攻破 RSA/ECC,Grover 可加速暴力破解。抗量子密码(PQC)正在标准化,长生命周期系统应开始关注。
小结
三句话记住:对称快、非对称解决密钥分发、哈希做指纹。三者 + PKI 组合,撑起了现代互联网的安全。下一篇聊身份与访问控制。
延伸
《Cryptography Engineering》
下一篇:《身份认证与访问控制:从密码到 MFA》
