我正在考虑创建一个移动应用程序,使用messages的crypto_box_easy对聊天消息进行加密和解密。
然而,在网上阅读了大量资料后,我发现公钥-私钥算法的一个主要缺陷是,一旦接收者私钥泄露,记录的数据就会被解密。
为了避免这种情况,建议使用完全前向保密( PFS ),我想知道,Libsodium是否已经在前面提到的函数中支持PFS,因为每个加密都使用单独的nonces。
也许有人可以指导我PFS和Libsodium函数之间的区别(如果有的话),或者通过澄清nonces和PFS之间的关系来帮助我。
发布于 2019-01-14 04:47:48
不存在前向保密。
crypto_box_seal()稍好一些,因为发送方使用临时密钥。可以使用长期密钥对这些消息进行签名,以便检查它们是否来自预期的一方,但是被泄露的密钥将不允许对先前的消息进行解密。
但是,如果接收者的密钥被泄露,录制的消息仍然可以被解密。
由于这些原因,libhydrogen中不存在box结构。相反,有用于安全密钥交换的Noise-based协议实现,所有这些都具有前向保密性。这些API将在某一时刻被反向移植到point。
但是,构建安全聊天应用远非易事。signal库是一个更好的起点,即使许可证可能与您的期望不兼容。
https://stackoverflow.com/questions/53982539
复制相似问题