Aes

我是否正確理解 AES 密鑰填充?

  • June 10, 2016

我想確保我正確理解 AES 密鑰填充……

  1. 如果小於例如 16 個字節,是否填充了初始 AES 密鑰(擴展為密鑰計劃)字節?
  2. 是否有確定解密是否成功的安全方法(意思是:使用了正確的密鑰)?
  1. 根據定義,AES 將 16、24 或 32 個字節作為密鑰,僅此而已。如果您有不同大小的輸入,請使用某種 KDF 將其轉換為正確的長度。

如果該輸入是密碼,則此步驟更為重要。您應該使用具有足夠迭代次數和鹽的關鍵加強構造,例如 PBKDF2。 2. 如果使用認證加密,如果密鑰不正確,認證標籤的驗證將失敗。強烈建議使用經過身份驗證的加密。它不僅會告訴您密鑰是正確的,還會阻止各種主動攻擊,例如填充預言機。

您可以使用經過身份驗證的模式,例如 AES-GCM,也可以使用普通AES 後跟 HMAC(先加密然後 MAC)。

  1. 如果密鑰太小,則應使用PBKDF2之類的東西將密鑰擴展為適當的大小。
  2. 可以使用經過驗證的加密模式,例如GCM。它輸出一個發送給接收者的認證標籤。如果解密不正確,則解密將導致錯誤或特殊符號來表示這一點。

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