设$m_1 =\底括号{ {0,1}^n \x {0,1}^n }__{L\text{times}$是空间$\mathcal{M}^L$的消息,其中$\mathcal{M} = {0,1}^n$。
让$c_1$是使用CBC模式对$m_1$进行加密。
设$x \in \mathcal{K}$是二进制字符串。
最后,让$m_2$成为另一个消息,这样:
如何将$c_1$修改为$c_2$,即$m_2$的加密?
我不知道如何直接修改$c_1$,我只能考虑一些类似于$\oplus$ing (带有$x$的初始化向量)这样的东西,这样$c_2$就可以在其计算的第一个块中同时使用$m$和$x$。
发布于 2018-05-01 19:06:17
是的,您可以修改初始化向量以实现您的目标(如注释初始化向量是密码文本的第一个块。中提到的那样)。因此,通过计算新的初始化向量$IV_2 = IV_1 \oplus x$,cipertext/IV对$(c_1,IV_2)$是具有CBC模式的$m_2$的有效加密。这是因为$m_2 = m_1 \oplus x$,所以$$m_2 \oplus IV_2 = (m_1 \oplus x) \oplus (IV_1 \oplus x) = m_1 \oplus IV_1$$ --这样,分块密码的第一个输入块对于两个消息都是相同的($\oplus$d及其各自的IVs),加密的输出对这两个消息都有效。
https://crypto.stackexchange.com/questions/58845
复制相似问题