Skip to content

Instantly share code, notes, and snippets.

@dravenk
Last active January 11, 2024 12:51
Show Gist options
  • Save dravenk/093fab89d1f24613822bdb1d70e7b0de to your computer and use it in GitHub Desktop.
Save dravenk/093fab89d1f24613822bdb1d70e7b0de to your computer and use it in GitHub Desktop.
Light协议介绍

协议概述:

Light 公钥密码学安全通信协议概述

本协议提供了一种基于公钥密码学的方法,用于确保信息传输的安全性和可靠性。协议的核心流程包括:

  1. 密钥生成与助记词获取:

    • 参与者通过生成私钥和公钥进行身份验证。
    • 使用 Bip39 标准获取私钥助记词,以确保私钥的安全生成和存储。
  2. 建立联系请求与确认:

    • 发起方向接收方发送建立联系的请求。
    • 接收方确认与发起方建立安全联系。
  3. 公钥交换与共享密钥获取:

    • 参与者使用各自的私钥创建公钥。
    • 通过 Diffie-Hellman(DH)协议交换公钥,获得共享密钥。
    • 考虑 Light 协议的实现,使用确定性私钥获得确定性公钥,并通过 DH 协议得到共享密钥。
  4. 消息加密与广播:

    • 发起方创建明文信息并生成用于加密的对称密钥。
    • 使用对称密钥将消息加密得到消息密文,并广播到 IPFS 网络。
  5. 密钥密文的安全传输:

    • 发起方将对称密钥通过接收方的公钥加密得到密钥密文,并广播到 IPFS 网络。
    • 发起方也可以使用自己的公钥对消息密钥加密一个备份。
  6. 消息签名与验证:

    • 发起方接收方使用私钥对消息密钥签名后将密钥密文后广播。
    • 接收方收集广播中的信息并使用共享密钥验证消息密文的真实性。
  7. 消息解密:

    • 接收方使用私钥解密密钥密文得到消息密钥。
    • 使用消息密钥解密消息密文,获取消息明文。

该协议通过以上步骤,确保了信息的机密性和完整性,同时在保证安全性的基础上考虑了通信效率和备份机制。


安全通信协议流程

  1. 密钥生成与助记词获取

    • Alice 和 Bob 分别生成各自的私钥和公钥。
    • 利用 Bip39 标准,Alice 和 Bob 获取私钥助记词以确保安全。
  2. 建立联系请求与确认

    • Alice 向 Bob 发起建立联系的请求。
    • Bob 确认与 Alice 建立安全联系。
  3. 公钥交换与共享密钥获取

  4. 消息加密与广播

    • Alice 创建消息明文信息,并生成用于加密的对称密钥。
    • Alice 使用对称密钥加密消息,生成消息密文。
    • Alice 将消息密文广播到 IPFS 网络。
  5. 密钥密文的安全传输

    • Alice 使用 Bob 的公钥加密对消息的对称密钥,生成密钥密文。
    • Alice 使用自己的公钥对消息的密钥加密备份。
    • Alice 将密钥密文广播到 IPFS 网络。
  6. 消息签名与验证

    • Alice 使用共享密钥签名消息密文后广播。
    • Bob 收集广播信息,并使用共享密钥验证消息密文的真实性。
  7. 消息解密

    • Bob 使用共享密钥验证消息为双方通讯的密钥密文。
    • Bob 使用私钥解密密钥密文,获取消息密钥。
    • Bob 使用消息密钥解密消息密文,得到消息明文。
  8. 消息上下文

    • 基于 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:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment