作者:买提,Annchain核心开发成员,中科大毕业。负责annchain高性能p2p网络、通信与编码、基于DAG的高效交易同步、交易执行逻辑、wasm虚拟机智能合约平台、rpc等模块的研发以及系统优化。
RLPx为基于TCP 的传输协议,用于以太坊节点之间的安全加密通信。
以太坊p2p网络可以分为三层,从下到上依次分别为:基于udp的邻居发现层、基于tcp的加密通信层和核心协议层。基于udp的邻居发现层使用Kad (Kademlia p2p网络协议)节点发现机制,与网络中的其他节点进行ping pong握手、交换邻居的方式发现邻居,计算节点之间的距离,动态维护邻居表。基于tcp的加密通信层与节点发现层发现的节点进行握手建立安全加密连接,负责对核心层协议提供的数据进行编解码与加解密、安全传输,rlpx为该层实际使用的协议。核心协议层负责将需要发送的业务数据传入加密通信层,并处理从加密通信层收到的业务数据。
RLPx使用了完全前向保密技术(perfect forward secrecy),通信双方生成随机公私钥对,交换各自的公钥,使用自己的随机私钥和对方的公钥生成共享秘密(shared-secret)。后续使用这个共享秘密对称加密传输的数据,即使一方的私钥被泄露,过去的通信还是安全的。
完全前向保密
完全前向保密(perfect forward secrecy)技术是一种秘钥协商协议,保证即使服务器的私钥被泄露,会话秘钥也不会被泄露。前向保密保护过去的会话抵抗秘钥或密码在未来泄露的威胁。为每一次会话产生唯一的会话秘钥,一个会话秘钥的泄露不会影响其它会话中传输的数据安全性。
Diffie-Hellman秘钥交换协议
Diffie-Hellman 秘钥交换 是一种在公共信道中安全交换秘钥的方法,由Whitfield Diffie 与Martin Hellman 在1976年提出。 双方在没有对方任何预先信息的情况下,能够在不安全的信道上建立共享的私钥。该私钥作为对称秘钥用于加密后续的通信数据。Diffie-Hellman 秘钥交换是一种非认证 秘钥交换协议,但为很多认证协议提供了基础,在传输层临时安全中用于前向保密。
ECDH :Elliptic Curve Diffie-Hellman 椭圆曲线Diffie-Hellman 秘钥交换协议
ECDHE:(Ephemeral Elliptic Curve Diffie-Hellman)临时椭圆曲线Diffie-Hellman 秘钥交换协议
ECIES加密
ECIES(Elliptic Curve Integrated Encryption Scheme,椭圆曲线综合加密方案) 作为非对称秘钥 用于RLPx协议握手。在RLPx协议中用到EXIES的以下几个点:
1. 高级加密标准 (Advanced Encryption Standard)AES-128 CTR模式
2.:基于SHA-256哈希函数的哈希消息认证码(Hashed Message Authentication Code)
3.:NIST SP 800-56 级联秘钥导出函数 (Concatenation Key Derivation Function)
4.椭圆曲线 secp256k1 生成元 G。所有椭圆曲线密码学操作都基于secp256k1椭圆曲线。
Alice 想发送一份只有Bob能通过静态私钥