Introduction to hash & generic birthday attack
这里讲的是 Hash 函数的一个基本性质..我就不写了.
用hash保证integrity的好处主要在于,我们不需要一个密钥
Birthday Attack
在生日悖论中,平均分布是最坏的结果;而每个值的独立性也是证明中非常重要的性质
Merkle-Damgard Paradigm
本小节目标:给定针对于短消息的C.R.函数,我们要构建针对于长消息的C.R.函数.
有理论支撑,只要h满足collision resistance,那么H也会满足collision resistance的条件。
Constructing Compression Functions
本章节的目标是构建压缩函数 .
我们可以从blockcipher来构建压缩函数(Compression Function).
除了上述的构建方法,我们还可以构建出可证明的压缩函数。虽然函数的正确性可以通过证明来解决,但是主要的问题在于构建的速度过慢,在实际中无法得到应用。
HMAC:a MAC from SHA-256
直接由MD Hash Function生成的MAC是有问题的,我们是可以在结尾附加上任何 ,然后直接生成对应的 . 具体的原理见下面的框图:
Timing attacks on MAC verification
这里主要的讲的是一个经典的时序攻击。即服务器在验证的时候,是按照一位一位bit的顺序去进行验证的,一旦出现错误的信息,就会停止检查。这个操作的逻辑没有任何问题,但是会被攻击者所利用。攻击者可以观察服务器的检查时间,判断自己前信息是否正确。然后一位一位地去检测。
防御的方法有两个:
固定检查时间,让攻击者无法进行攻击;缺点在于,优化过的编译器可能会忽略这个过程,还是会有运行时间的差距;
不对两个目标值进行进行比较,而是通过间接的方式..比如,再hash一次
所以说,这里Dan又一次劝我们不要自己试图实现复杂的密码学过程,因为可能会出现各种各样的问题...