Encryption

使用 AES-GCM 加密靜態數據,我應該在哪裡儲存 MAC(消息驗證碼)

  • February 13, 2017

我正在嘗試保護數據庫中的使用者配置文件(靜態數據)。該使用者的配置文件只有在伺服器成功驗證後才會下載(基於使用者輸入的密碼和使用者名)。

使用者的個人資料使用 AES-GCM 加密

  1. PBKDF2 派生對稱密鑰(從輸入的密碼派生)
  2. 隨機鹽
  3. 隨機數

該操作將加密數據和 MAC(消息驗證碼)返回給我

我需要解密數據而不使用相同的輸入密碼從伺服器進行身份驗證

  1. 新的 PBKDF2 派生對稱密鑰
  2. 與用於加密的鹽相同
  3. 與用於加密的隨機數相同
  4. 與加密生成的 MAC 相同

我的問題是我應該在哪裡(以及加密數據?在其他地方?)以及如何(加密?散列?)我應該將 MAC 儲存在數據庫中嗎?

我的問題是在哪裡(連同加密數據?在其他地方?)

$$ … $$我應該將 MAC 儲存在數據庫中嗎?

從理論上講,您可以將 MAC 儲存在您想要的任何位置,只要您儲存它並獲得 MAC 和密文之間的正確關聯即可。

但實際上,將標籤附加到密文中是最聰明的。這可以最大限度地減少您在某處搞砸關聯的機會,並且它將使您的實現與大多數庫兼容,這些庫通常不僅僅是附加標籤並且不明確地為您提供它。

$$ H $$ow(加密?散列?)我應該將MAC儲存在數據庫中嗎?

通常 MAC 以明文形式儲存,這實際上包含在通常的安全遊戲和縮減中。因此,如果 MAC 標記是明文可用的,則攻擊者甚至無法破壞方案的安全性(即解密任何攻擊模型中的消息或偽造消息)。因此,無需進一步加密或散列。

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