本协议提供了一种基于公钥密码学的方法,用于确保信息传输的安全性和可靠性。协议的核心流程包括:
-
密钥生成与助记词获取:
- 参与者通过生成私钥和公钥进行身份验证。
- 使用 Bip39 标准获取私钥助记词,以确保私钥的安全生成和存储。
-
建立联系请求与确认:
- 发起方向接收方发送建立联系的请求。
- 接收方确认与发起方建立安全联系。
-
公钥交换与共享密钥获取:
- 参与者使用各自的私钥创建公钥。
- 通过 Diffie-Hellman(DH)协议交换公钥,获得共享密钥。
- 考虑 Light 协议的实现,使用确定性私钥获得确定性公钥,并通过 DH 协议得到共享密钥。
-
消息加密与广播:
- 发起方创建明文信息并生成用于加密的对称密钥。
- 使用对称密钥将消息加密得到消息密文,并广播到 IPFS 网络。
-
密钥密文的安全传输:
- 发起方将对称密钥通过接收方的公钥加密得到密钥密文,并广播到 IPFS 网络。
- 发起方也可以使用自己的公钥对消息密钥加密一个备份。
-
消息签名与验证:
- 发起方接收方使用私钥对消息密钥签名后将密钥密文后广播。
- 接收方收集广播中的信息并使用共享密钥验证消息密文的真实性。
-
消息解密:
- 接收方使用私钥解密密钥密文得到消息密钥。
- 使用消息密钥解密消息密文,获取消息明文。
该协议通过以上步骤,确保了信息的机密性和完整性,同时在保证安全性的基础上考虑了通信效率和备份机制。
-
密钥生成与助记词获取
- Alice 和 Bob 分别生成各自的私钥和公钥。
- 利用 Bip39 标准,Alice 和 Bob 获取私钥助记词以确保安全。
-
建立联系请求与确认
- Alice 向 Bob 发起建立联系的请求。
- Bob 确认与 Alice 建立安全联系。
-
公钥交换与共享密钥获取
- Alice 和 Bob 使用各自的私钥创建公钥。
- Alice 和 Bob 通过 DH 协议交换公钥,获得共享密钥。
- 实现 Light 协议:使用确定性私钥获得确定性公钥,并通过 DH 协议得到共享密钥。
-
消息加密与广播
- Alice 创建消息明文信息,并生成用于加密的对称密钥。
- Alice 使用对称密钥加密消息,生成消息密文。
- Alice 将消息密文广播到 IPFS 网络。
-
密钥密文的安全传输
- Alice 使用 Bob 的公钥加密对消息的对称密钥,生成密钥密文。
- Alice 使用自己的公钥对消息的密钥加密备份。
- Alice 将密钥密文广播到 IPFS 网络。
-
消息签名与验证
- Alice 使用共享密钥签名消息密文后广播。
- Bob 收集广播信息,并使用共享密钥验证消息密文的真实性。
-
消息解密
- Bob 使用共享密钥验证消息为双方通讯的密钥密文。
- Bob 使用私钥解密密钥密文,获取消息密钥。
- Bob 使用消息密钥解密消息密文,得到消息明文。
-
消息上下文
- 基于 Merkle DAG 实现消息上下文关联
密钥安全性: 确保生成的私钥是足够随机且安全的,没有被泄露或破解的风险。可以通过评估生成私钥的方法(比如使用 Bip39)和存储私钥的安全性来验证。
公钥交换安全性: DH 协议确保了 Alice 和 Bob 交换的公钥在传输过程中是加密的,防止了窃听和篡改。验证 DH 协议的安全性,确保生成的共享密钥只有 Alice 和 Bob 可以获得。
消息加密和解密: 验证对称密钥的生成和使用,以及消息的加密和解密过程。确保对称密钥经过通讯双方的公钥加密,明文仅为加密密钥后的密文信息。
消息签名和验证: 确认消息签名使用了共享密钥,以及 Bob 能够正确验证消息是否来自 Alice,保证消息的完整性和真实性。
IPFS广播的安全性: 确保消息密文和密钥密文在广播到 IPFS 网络时没有被篡改或者被未授权的人访问。可以考虑 IPFS 提供的安全特性或者加密传输来验证广播的安全性。
备份机制的有效性: 验证 Alice 的消息密钥备份机制,确保即使一份密钥丢失,她仍能够访问消息。
漏洞和攻击面的评估: 对于可能的攻击方式进行分析,比如中间人攻击、重放攻击等,并确认该协议是否具备防范这些攻击的机制。
加密算法和协议的选择: 确认使用的加密算法和协议是当前安全可靠的,没有已知的弱点或漏洞。
- 消息发送方生成对称密钥,使用该密钥对消息进行加密。
- 使用通讯双方的公钥对消息密钥再次加密,确保只有授权的接收方能解密。
- 消息发送方将消息加密得到消息密文,再使用公钥加密得到密钥的密文。
- 将两份密文生成CID,并推送到IPFS网络,确保数据的持久性和可访问性。
- 发送方将两份密文和CID作为信息明文发送给接收方。
- 消息转发服务方和接收方通过异步推送将密文和CID保存到IPFS网络。
- 在通讯过程中,发送方、转发方、接收方分别将密文保存到IPFS网络。
- 产生的「消息密文」、「密钥密文」、「信息明文」至少有两份副本,分别保存在发送方和接收方,可根据网络情况复制到IPFS网络。
- 为防止信息伪造,消息内容通过计算哈希值生成消息ID。
- 每条消息包含当前消息ID和上一条消息的ID。
- 发送方使用私钥对哈希值和接收方的公钥进行签名,确保消息的真实性。
Message {
content: "hello world",
previous_cid: "<previous_message_cid>",
current_hash: "<hash_of_current_content>",
cid: "<IPFS_CID_of_current_message>",
sign: {
previous_cid: "<previous_message_cid>",
current_hash: "<hash_of_current_content>",
recipient_public_key: "<recipient_public_key>",
option: "other_infomation"
},
sender_public_key: "<sender_public_key>"
}
resource: