用於非共享加密的 ECIES
我正在使用 ECIES(如雨披指出的 Cryptobox)在 Alice 和 Bob 之間使用 ECC 進行公鑰加密,並使用密鑰/公鑰 $ (a,A) $ 和 $ (b,B) $ 分別。所以 Alice 用
$$ Encrypt(aB,Message) $$ 此外,我想加密愛麗絲的一些數據,這樣只有她才能解密。使用 ECIES 從 Alice 的秘密和公鑰計算共享秘密是否安全,如
$$ Encrypt(aA,Message) $$ 我知道我可以隨機生成一個公鑰,但是我必須將這個密鑰儲存在我想避免的地方。
是的,但是我相信原因比 fgrieu 給出的要微妙一些。
從您的問題來看,我不相信您實際上是在做標準的 ECIES,而是在做諸如 NaCl 的密碼箱(這是一個變體)之類的東西。
使用標準 ECIES,加密到公鑰 $ A $ ,加密器選擇一個隨機值 $ r $ ,並生成密文:
$$ rG, \text{Encrypt}( rA, \text{Message} ) $$ 相比之下,在 Cryptobox 中,Bob 不會選擇隨機值,而是使用自己的私鑰。也就是加密到愛麗絲的公鑰 $ A $ , 他會拿走他的私鑰 $ b $ , 並產生
$$ 1 $$: $$ \text{Encrypt}( bA, \text{Message} ) $$ 這實際上是 ECIES(與 $ bG $ 價值隱含;那是 Bob 的公鑰)。由於 Bob 的私鑰是隨機的(獨立於 Alice 的密鑰),只要標準 ECIES 是安全的,這就是安全的
$$ 2 $$. 然而,這提出了一個問題:如果愛麗絲對自己加密怎麼辦?這會保持安全嗎?這不會立即從 ECIES 的安全性中得出,因為 Alice 的私鑰不是獨立於 Alice 的公鑰的隨機值。
在這種特定情況下,事實證明它是安全的。具體來說,“給定”的問題 $ G, aG $ , 計算 $ (a^2)G $ ”(需要解密 Alice 給她自己的消息)與“給定的一般問題”一樣難 $ G, aG, bG $ , 計算 $ (ab)G $ ”。也就是說,給定一種方法來解決一個,你可以解決另一個。
$$ 1 $$:實際上,我相信 Bob 包含一個 nonce 來使加密變得不確定;這對於這個解釋並不重要 $$ 2 $$:實際上,我們需要假設這種構造不會洩露 Bob 的私鑰資訊,並且即使重複相同的隨機值,ECIES 也是安全的;實際上就是這樣。