【问题标题】:Libsodium and Perfect Forward SecrecyLibsodium 和完美的前向保密
【发布时间】:2019-05-27 16:42:37
【问题描述】:

我正在考虑创建一个使用 Libsodium 的 crypto_box_easy 加密和解密聊天消息的移动应用程序。

但是,在网上查阅了很多资料后,我发现公私钥算法的一大缺陷是,一旦接收者的私钥泄露,记录的数据就会被解密。

为避免这种情况,建议使用完美前向保密 (PFS),我想知道 Libsodium 是否已经在前面提到的函数中支持 PFS,因为每个加密都使用单独的 nonces

也许有人可以指导我 PFS 和 Libsodiums 函数之间的区别(如果有的话),或者通过澄清 nonces 和 PFS 的关系来帮助我。

【问题讨论】:

  • 可以查看 libsodium.gitbook.io/doc/key_exchange 并注意完美前向保密 = 前向保密
  • 虽然可能没有隐式前向保密,但您可以使用临时/临时 crypto_box 密钥对在 libsodium 中实现前向保密,您只需根据每个会话的临时密钥对生成新的共享密钥。跨度>

标签: encryption public-key-encryption encryption-asymmetric nonce libsodium


【解决方案1】:

没有前向保密。

crypto_box_seal() 稍微好一点,因为发件人使用临时密钥。可以使用长期密钥对这些消息进行签名,以检查它们是否来自预期的一方,但该密钥被泄露将不允许解密以前的消息。

但是,如果收件人的密钥被泄露,记录的消息仍然可以被解密。

由于这些原因,box 构造在 libhydrogen 中不存在。相反,有基于Noise 的安全密钥交换协议实现,所有这些都具有前向保密性。这些 API 将在某个时候向后移植到 libsodium。

但构建安全聊天应用程序绝非易事。 signal 库是一个更好的起点,即使许可证可能与您的期望不兼容。

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 2013-12-28
    • 2019-02-20
    • 2013-06-22
    • 2017-06-11
    • 2022-07-12
    • 2017-05-05
    • 2013-12-25
    • 2015-02-28
    相关资源
    最近更新 更多