Encryption
geth 節點間通信(devp2p/rlpx)加密
我目前正在分析 geth 中使用的加密機制。
目前我從原始碼(https://github.com/ethereum/go-ethereum/blob/master/p2p/rlpx.go)收集了以下資訊:
- 通信被加密
- 沒有像 TLS 中那樣的伺服器證書/CA 鏈
- 密鑰交換通過:ECDSA / secp256k1
- ECDSA 公鑰長度:256 位
- SharedSecretKeyLength:16 字節
到目前為止這是正確的嗎?
有人知道節點間協議中是否有任何關於加密的文件?
從https://github.com/ethereum/devp2p/blob/master/rlpx.md更新(感謝 Richard Horrocks 指出):
RLPx 握手被認為是“破解加密”,因為 aes-secret 和 mac-secret 被重複用於讀取和寫入。RLPx 連接的兩端從相同的密鑰、nonce 和 IV 生成兩個 CTR 流。如果攻擊者知道一個明文,他們可以解密重用密鑰流的未知明文。
更新在 crypto.stackexchange.com 上詢問上述加密缺陷 - > https://crypto.stackexchange.com/questions/63047/ethereum-rlpx-protocol-for-inter-node-communication-flaws-in-the-encryption
有人知道節點間協議中是否有任何關於加密的文件?
您可能已經找到了這些,但這裡有一些我過去使用過的資源:
- https://github.com/ethereum/devp2p/blob/master/rlpx.md(RLPx傳輸協議)
- https://github.com/ethereum/devp2p/blob/master/devp2p.md(devp2p應用協議)
Gitter 頻道:https ://gitter.im/ethereum/devp2p
Consensys 的用於 devp2p 的 Wireshark 解剖器:https ://github.com/ConsenSys/ethereum-dissectors