feat: init books
This commit is contained in:
31
cryptopal_book/src/challenge_31.md
Normal file
31
cryptopal_book/src/challenge_31.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# 挑战三十一:实现并破解带有人工时序泄露的HMAC-SHA1
|
||||
|
||||
## 题目描述
|
||||
|
||||
Wikipedia上的伪代码应该就足够了。HMAC非常简单。
|
||||
|
||||
使用你选择的Web框架(Sinatra、web.py等),编写一个小应用程序,它有一个URL,接受"file"参数和"signature"参数,如下所示:
|
||||
|
||||
```
|
||||
http://localhost:9000/test?file=foo&signature=46b4ec586117154dacd49d664e5d63fdc88efb51
|
||||
```
|
||||
|
||||
让服务器生成HMAC密钥,然后验证传入请求的"signature"对"file"是否有效,使用"=="运算符比较文件的有效MAC与"signature"参数(换句话说,按任何普通程序员验证HMAC的方式验证它)。
|
||||
|
||||
## 实现要求
|
||||
|
||||
编写一个函数,称之为"insecure_compare",通过逐字节比较和早期退出来实现==操作(即,在第一个不匹配的字节处返回false)。
|
||||
|
||||
在"insecure_compare"的循环中,添加50ms睡眠(每个字节后睡眠50ms)。
|
||||
|
||||
使用你的"insecure_compare"函数验证传入请求的HMAC,并测试整个装置是否工作。如果MAC无效则返回500,如果正常则返回200。
|
||||
|
||||
## 攻击任务
|
||||
|
||||
使用此应用程序中的时序泄露,编写一个程序来发现任何文件的有效MAC。
|
||||
|
||||
## 为什么使用人工延迟?
|
||||
|
||||
**为什么是人工延迟?**
|
||||
|
||||
早期退出字符串比较可能是密码学时序泄露最常见的来源,但它们并不特别容易利用。事实上,许多时序泄露(例如,C、C++、Ruby或Python中的任何泄露)可能根本无法在广域网上利用。要玩攻击现实世界的时序泄露,你必须开始编写低级时序代码。我们在这些挑战中保持密码学性。
|
||||
Reference in New Issue
Block a user