理论学了,数学也啃了,协议也看了,前沿也眺望了。现在,是时候动手了。
如果你是一位开发者,或者正在学习如何把密码学用到真实系统中,那么这一部分是专门为你准备的。因为密码学有一个残酷的真相:理论安全不等于工程安全。一个算法再强大,如果实现时犯了错,它依然脆弱不堪。历史上无数数据泄露事件,不是输在算法,而是输在实现。
- 有人用 ECB 模式加密图片,结果轮廓清晰可见。
- 有人用固定盐值存密码,结果彩虹表轻松破解。
- 有人用不安全的随机数生成密钥,结果私钥被猜出。
- 有人忽略了侧信道攻击,结果一个功耗波形就让密钥暴露。
这些都是“自己发明轮子”的代价。所以,这一部分的第一条铁律就是:永远不要自己发明密码。
但仅仅知道“不要做什么”还不够。你还需要知道“应该怎么做”。如何选择正确的算法?如何管理密钥?如何调用成熟的密码学库?如何防范时序攻击、随机数漏洞?这一章会给你答案。我们还准备了 Python、Go、Java 的代码示例,让你可以直接复制、修改、运行。
除了工程实践,密码学还触及更深层的问题:它不仅是技术,更是社会博弈。当苹果拒绝为 FBI 解锁恐怖分子的 iPhone,当政府要求“后门”访问加密通信,当隐私与安全发生冲突,我们该如何选择?密码学家又该承担怎样的伦理责任?第 14 章将带你走进这些没有标准答案的讨论。
这一部分不是枯燥的规则列表,而是一份来自经验的“避坑指南”。读完它,你不仅能写出更安全的代码,也能理解密码学在真实世界中的重量。
准备好了吗?让我们从第一条铁律开始:永远不要自己发明密码。