写给开发者的密码学
写给会编程但没有系统学过安全的开发者的密码学实用指南。
这个 23 章系列涵盖对称加密、非对称密码学、哈希、数字签名、真实世界协议以及安全思维。
Published: Sat Feb 01 2025
加密本身并不能保证安全。理解威胁模型以及「已加密」与「安全」之间的差距,是构建真正受保护系统的第一步。
Published: Sat Feb 01 2025
密码学恰好解决四个问题:机密性、完整性、认证和不可否认性。用错误的算法解决错误的问题就是灾难的配方。
Published: Sat Feb 01 2025
对称加密快但有密钥分发问题。非对称加密解决了密钥分发但很慢。真实系统在混合方案中同时使用两者。
Published: Sat Feb 01 2025
哈希是设计上单向的。你无法"解密"哈希,因为根本没有东西被加密过。理解这个区别对于密码存储和数据完整性至关重要。
Published: Sat Feb 01 2025
大多数加密失败不是因为算法被破解,而是因为随机数不够随机。理解真随机与伪随机的区别,以及为什么 rand() 会害死人。
Published: Sat Feb 01 2025
为什么加密要分组?Feistel 结构是什么?DES 为什么会失败?理解这些历史能帮助你更好地理解现代加密。
Published: Sat Feb 01 2025
AES 是现代加密的基石,但它的内部运作并不神秘。理解 SPN 结构、轮函数的四个步骤,以及为什么是 128 位块,能帮助你更好地使用它。
Published: Sat Feb 01 2025
AES 本身是安全的,但选错工作模式可能导致灾难。ECB 会泄漏模式,CBC 需要正确的 IV,而 GCM 提供加密和认证。选择正确的模式比选择密钥长度更重要。
Published: Sat Feb 01 2025
理论是一回事,实践是另一回事。HTTPS 中的对称加密如何工作?如何正确加密文件?数据库加密有哪些陷阱?这篇文章带你看真实系统中的对称加密。
Published: Sat Feb 01 2025
RSA 的安全性建立在一个简单的数学事实上:把两个大质数相乘很容易,但把结果分解回去极其困难。理解这个核心思想,你就理解了非对称加密的基础。
Published: Sat Feb 01 2025
RSA 在现代系统中已不再用于直接加密。TLS 1.3 完全移除了 RSA 密钥交换。理解 RSA 今天的真实角色、它的安全陷阱,以及为什么世界正在转向椭圆曲线。
Published: Sat Feb 01 2025
椭圆曲线密码学用比 RSA 小 10 倍的密钥达到同等安全性。理解曲线上的点如何创建单向函数,以及为什么 ECC 主导着现代密码学。
Published: Sat Feb 01 2025
Diffie-Hellman 解决了一个听起来不可能的问题:两个从未见面的人可以在公开信道上创建共享密钥。理解这个让安全互联网成为可能的基础协议。
Published: Sat Feb 01 2025
数字签名像手写签名一样证明作者身份和完整性,但具有数学保证。理解它们如何工作、保证什么,以及如何正确使用它们。
Published: Sat Feb 01 2025
数字签名证明某个密钥签署了某些东西,但你怎么知道那是谁的密钥?证书和 PKI 解决了身份问题。理解信任是如何从根 CA 建立到你浏览器的锁标志的。
Published: Sat Feb 01 2025
数字签名需要非对称密钥。但当双方已经共享密钥时,HMAC 提供了更快的方式来验证数据没有被篡改。理解 MAC、HMAC 构造以及何时使用它们。
Published: Sat Feb 01 2025
每个 HTTPS 连接都使用 TLS,但当你访问网站时实际发生了什么?逐步分析 TLS 1.3 握手,理解所有密码学原语如何协同工作。
Published: Sat Feb 01 2025
加密密码是错误的。用 SHA-256 哈希也是错误的。了解为什么密码存储需要像 bcrypt、Argon2 和 scrypt 这样的专用算法,以及如何正确实现它们。
Published: Sat Feb 01 2025
加密算法从来不是弱点——密钥管理才是。学习如何生成、存储、分发、轮换和销毁密码学密钥,而不使你的加密变得毫无意义。
Published: Sat Feb 01 2025
你知道这些原语:加密、哈希、签名、TLS。现在学习如何将它们组合成安全系统。端到端加密、安全 API、纵深防御,以及避免常见的架构错误。
Published: Sat Feb 01 2025
"我就简单实现一个加密……" 这是著名的临终遗言。即使是专家也会犯错。从历史上最灾难性的密码学失败中学习,理解为什么实现细节可以破坏数学上完美的算法。
Published: Sat Feb 01 2025
加密是完美的。系统仍然被攻破了。从真实世界的案例中学习,那些强大的密码学毫无意义的情况——因为明文泄露、运维失误和根本性的设计缺陷。
Published: Sat Feb 01 2025
如何判断什么时候"足够安全"?学习威胁建模,像攻击者一样思考,培养做出正确安全决策的能力——即使没有完美答案。