散列 关于哈希函数你应该知道的东西( 二 )

抗碰撞性 和 抗次原像性 也许听上去是同样的性质,但它们具有细微而显著的不同 。抗次原像性 说的是如果 已经 有了一个消息,你也很难得到另一个与之哈希值相匹配的消息 。抗碰撞性 使你很难找到两个可以生成相同哈希值的消息,并且要在哈希函数中实现这一性质则更加困难 。
让我回到黑客试图替换文件(可以通过哈希值进行校验)的场景 。现在,要在“外面”使用加密哈希算法(除了使用那些在现实世界中由独角兽公司开发的完全无 Bug 且安全的实现之外),还有一些重要且困难的附加条件需要满足 。认真的读者可能已经想到了其中一些,特别需要指出的是:

  1. 你必须确保自己所拥有的哈希值副本也没有被篡改 。
  2. 你必须确保执行哈希算法的实体能够正确执行并报告了结果 。
  3. 你必须确保对比两个哈希值的实体确实报告了这个对比的正确结果 。
【散列 关于哈希函数你应该知道的东西】确保你能满足这些条件绝对不是一件容易的事 。这就是 可信平台模块(Trusted Platform Modules)(TPM)成为许多计算系统一部分的原因之一 。它们扮演着信任的硬件基础,可以为验证重要二进制数据真实性的加密工具提供保证 。TPM 对于现实中的系统来说是有用且重要的工具,我也打算将来写一篇关于 TPM 的文章 。


推荐阅读