使用RLPx/devp2p进行节点间通信.该协议是使用椭圆曲线集成加密方案加密的(参见参考)
在已知-问题下,我找到了这一段:
RLPx握手被认为是“破坏密码”,因为aes-机密和mac-机密被重复用于读写。RLPx连接的两边从相同的密钥生成两个CTR流,即现在和IV。如果攻击者知道一个明文,他们可以解密重复使用的密钥流的未知明文。
问:请有人解释一下这意味着什么,以及如何被能够观察到两个节点之间加密通信的第三方利用。
发布于 2018-10-12 09:11:27
第一,CTR模式。这是一种允许分组密码(这里的AES)作为流密码工作的流模式。
给定(k,IV),其中k是随机加密密钥,IV是初始化向量,CTR模式就是这样工作的:
对于ith消息m_i (小于块大小):
加密:计算c_i=E_{k}(IV||i)\oplus m_i;
解密:计算m_i=E_{k}(IV||i)\oplus c_i;
现在,这两个流使用相同的密钥和IV,因此如果攻击者知道一个流中的m_i明文(例如,这是一个固定的字段,比如头或什么的),则攻击者可以在另一个流中恢复明文m_i'。
流1:c_i=E_{k}(IV||i)\oplus m_i;
我知道m_i,所以我可以恢复这个块的密钥流:
然后,给定另一个流中的密文c_i' =E_{k}(IV||i)\oplus m_i',我可以恢复m_i',因为加密中使用的密钥流是相同的:
https://crypto.stackexchange.com/questions/63047
复制相似问题