Public-Key
NaCl 的完美前向保密
我想使用 NaCl 密碼庫(或 TweetNaCl),但我非常想為我的應用程序提供完美的前向保密。
據我了解,Bob 使用 NaCl 的crypto_box_open解密來自 Alice 的消息所需要的只是 Alice的公鑰和他的私鑰。因此,如果竊聽的對手儲存了所有消息並隨後獲得了 Bob 的私鑰的訪問權限,他就可以解密所有先前儲存的通信。
- 我在這件事上是對的嗎?
- 如何最好地解決這個問題?(最好只使用在 NaCl 中實現的算法)
是的,你是對的。
不離開 NaCl 的最簡單方法是創建一個臨時的、隨機的 crypto_box_keypair,然後使用它們的長期密鑰交換公鑰。進一步的通信將在該會話期間將新密鑰對用於 crypto_box。完成會話後,從記憶體中刪除這些臨時密鑰。
私鑰只存在於會話中,因此後來入侵其中一台電腦的攻擊者將無法解密使用這些密鑰加密的任何消息,並且只能從儲存的通信中找到他們的公鑰。