锂钠和完善正向保密

时间:2018-12-31 00:23:22

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

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

但是,在网上阅读了很多书后,我发现公钥-私钥算法的主要缺陷之一是,一旦收件人的私钥泄露,记录的数据就可以解密。

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

也许有人可以指导我了解PFS和Libsodiums函数之间的区别(如果有的话),或者通过阐明现时与PFS的关系来帮助我。

1 个答案:

答案 0 :(得分:0)

没有前瞻性保密。

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

但是,如果收件人的密钥被泄露,仍可以对录制的消息进行解密。

由于这些原因,libhydrogen中没有box构造。取而代之的是,有一些基于Noise的协议实现可用于安全密钥交换,并且都具有前向保密性。这些API有时会被反向移植到libsodium。

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