首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES CBC (CTF) IV的发现

AES CBC (CTF) IV的发现
EN

Cryptography用户
提问于 2021-02-26 11:39:06
回答 1查看 2.1K关注 0票数 1

我们有一个python程序,它使用AES CBC加密/解密以十六进制形式给出的明文。我们知道IV是相同的,并且不会改变(它存储在一个文件中)。我们怎么可能找到IV,如果发现这将是旗子。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2021-02-26 12:54:39

请求三个块的解密(2个就足够了);

\begin{align} P_1 =& Dec_k(C_0) \oplus IV\\ P_2 =& Dec_k(C_1) \oplus C_{0}\\ P_3 =& Dec_k(C_2) \oplus C_{1}\\ \end{align}

现在删除第一个密文,并请求解密;

\begin{align} P'_2 =& Dec_k(C_1) \oplus IV\\ P_3 =& Dec_k(C_2) \oplus C_{1}\\ \end{align}

现在使用P_2P'_2的方程

\begin{align} P_2 \oplus P'_2 &= Dec_k(C_1) \oplus C_{0} \oplus Dec_k(C_1) \oplus IV\\ & = C_{0} \oplus IV \\ P_2 \oplus P'_2 \oplus C_{0} &= IV \\ \end{align}

在程序员方面

代码语言:javascript
复制
defn CBCDecryptionOracle(c[]):
   return Dec(c[])

c = (c0,c1)

(p1,p2) = CBCDecryptionOracle(c)


p2' = CBCDecryptionOracle(c1)

print( p2 ^ p2' ^ c[0])

注意:您可能需要找到c1的大小(这意味着在AES-CBC模式中使用的块的大小)。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/88494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档