Libsodium
libsodium 密封盒是否提供前向保密?
我正在使用氧化鈉,這是一種與 libsodium 綁定的 Rust,它提供了一個名為sealbox的函式,該函式需要接收者的公鑰。但是,他們還提到該消息是使用臨時公鑰加密的。
這是否意味著密封盒提供前向保密,還是我需要自己實施前向保密?
基本上,如果所有使用的密鑰對都是臨時的並且私鑰(NaCl 將這些“秘密密鑰”)在(一次性)使用後被盡職地銷毀,那麼您就具有前向保密性。在 NaCl 的情況下,發送方和接收方都使用密鑰對(因為這基本上是密鑰協議/ECIES)。接收者的密鑰對通常是靜態的,而發送者的密鑰對是短暫的。
如果您使用接收者的一個靜態公鑰,則您沒有前向安全性,因為接收者可能會洩漏私鑰。不幸的是,這是大多數加密常式的標準操作模式,包括 NaCl / libsodium。
當然,訣竅是事先建立對接收者公鑰的信任——否則,您可能會使用對手的密鑰。如果您想獲得前向安全性,那麼您可以在每次使用後共享並簽署一個新的公鑰,並且最好讓密鑰對保持活動的時間盡可能短。但是,現在您更接近於開發傳輸安全性而不是應用程序級消息加密。