首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于节点间通信的RLPx协议.加密中的缺陷

用于节点间通信的RLPx协议.加密中的缺陷
EN

Cryptography用户
提问于 2018-10-11 21:05:56
回答 1查看 385关注 0票数 1

使用RLPx/devp2p进行节点间通信.该协议是使用椭圆曲线集成加密方案加密的(参见参考)

已知-问题下,我找到了这一段:

RLPx握手被认为是“破坏密码”,因为aes-机密和mac-机密被重复用于读写。RLPx连接的两边从相同的密钥生成两个CTR流,即现在和IV。如果攻击者知道一个明文,他们可以解密重复使用的密钥流的未知明文。

问:请有人解释一下这意味着什么,以及如何被能够观察到两个节点之间加密通信的第三方利用。

相关:https://ethereum.stackexchange.com/questions/59549/geth-inter-node-communication-devp2p-rlpx-encryption

EN

回答 1

Cryptography用户

回答已采纳

发布于 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,所以我可以恢复这个块的密钥流:

E_{k}(IV||i)\oplus m_i\oplus m_i=E_{k}(IV||i)

然后,给定另一个流中的密文c_i' =E_{k}(IV||i)\oplus m_i',我可以恢复m_i',因为加密中使用的密钥流是相同的:

E_{k}(IV||i)\oplus m_i'\oplus E_{k}(IV||i)=m_i'
票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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