feat: init books
This commit is contained in:
33
cryptopal_book/src/challenge_27.md
Normal file
33
cryptopal_book/src/challenge_27.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 挑战二十七:从IV=Key的CBC中恢复密钥
|
||||
|
||||
## 题目描述
|
||||
|
||||
取用你在[CBC练习](../../2/challenges/16.html)中的代码并修改它,使其将CBC加密的密钥重新用作IV。
|
||||
|
||||
应用程序有时会将密钥用作IV,理由是发送方和接收方都必须知道密钥,通过同时用作密钥和IV可以节省一些空间。
|
||||
|
||||
将密钥用作IV是不安全的;能够修改传输中密文的攻击者可以让接收方解密一个值,该值将泄露密钥。
|
||||
|
||||
## 攻击步骤
|
||||
|
||||
练习16中的CBC代码加密一个URL字符串。验证明文的每个字节是否符合ASCII标准(即,查找高ASCII值)。不符合标准的消息应该引发异常或返回包含解密明文的错误(在现实系统中这种情况经常发生)。
|
||||
|
||||
使用你的代码加密至少3个块长的消息:
|
||||
|
||||
```
|
||||
AES-CBC(P_1, P_2, P_3) -> C_1, C_2, C_3
|
||||
```
|
||||
|
||||
修改消息(你现在是攻击者):
|
||||
|
||||
```
|
||||
C_1, C_2, C_3 -> C_1, 0, C_1
|
||||
```
|
||||
|
||||
解密消息(你现在是接收方)并在发现高ASCII时引发适当的错误。
|
||||
|
||||
作为攻击者,从错误中恢复明文,提取密钥:
|
||||
|
||||
```
|
||||
P'_1 XOR P'_3
|
||||
```
|
||||
Reference in New Issue
Block a user