Terminology

“crypto_box”在 libsodium 和 NaCl 中的實際含義是什麼?

  • March 9, 2020

我找不到“crypto_box”的實際含義。一般來說,在特定情況下,“盒子”有什麼作用?我知道 libsodium 是經過身份驗證的加密,但 GPG 不是。“盒子”讓我覺得加密和簽名以某種方式被密封和保護。

libsodium 和 NaCl 中的“crypto_box”是什麼意思?

Libsodium 和 NaCl 中的“cryptobox”是什麼意思?一般來說,在特定情況下,“盒子”有什麼作用?

cryptobox或者正確crypto_box的是box. 在發送方和接收方之間使用共享密鑰進行box_easy呼叫,每個方向都是唯一的。使用隨機發送方密鑰呼叫,並在密文前面加上相應的公鑰。進行對稱認證加密。secretbox``box_seal``box_easy``secretbox

crypto_box_easy(ciphertext, MESSAGE, MESSAGE_LEN, nonce,
                   bob_publickey, alice_secretkey) 
crypto_box_seal(ciphertext, MESSAGE, MESSAGE_LEN, recipient_pk);
crypto_secretbox_easy(ciphertext, MESSAGE, MESSAGE_LEN, nonce, key);

我知道 libsodium 是經過身份驗證的加密,但 gpg 不是。“盒子”讓我覺得加密和簽名以某種方式被密封和保護。

和 GPG/PGP都secretbox使用經過身份驗證的加密。box(可否認)在沒有簽名的情況下驗證發件人。box使用 Diffie-Hellman 導出一個密鑰,該密鑰需要發送者或接收者的密鑰進行計算。因此,如果對手竊取了 Alice 的密鑰,他們可能會冒充 Bob 給 Alice;這種攻擊稱為 Key Compromise Impersonation。

PGP 容易受到使用先簽名後加密的相關攻擊。即,如果 Alice 為 Bob 簽署消息並對其加密,Bob 可以為 Carol 解密並加密它。當 Carol 解密消息時,她可能相信 Alice 向她發送了消息,因為 Alice 實際上確實簽署了它。

Libsodiumbox比 PGP 的簽名後加密要好,但是當雙方都可以向對方發送消息時,我們可以做得更好。即Signal 中使用的 Triple-DH(忽略預密鑰擴展)。編輯:雖然我寧願避免簽名,但我應該包括這個。可以通過對元組進行簽名來適當地組合簽名(message, recipient public key);這樣與不正確的收件人的簽名驗證無法驗證。

引用自:https://crypto.stackexchange.com/questions/78071