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