Encryption
使用 AES-GCM 加密靜態數據,我應該在哪裡儲存 MAC(消息驗證碼)
我正在嘗試保護數據庫中的使用者配置文件(靜態數據)。該使用者的配置文件只有在伺服器成功驗證後才會下載(基於使用者輸入的密碼和使用者名)。
使用者的個人資料使用 AES-GCM 加密
- PBKDF2 派生對稱密鑰(從輸入的密碼派生)
- 隨機鹽
- 隨機數
該操作將加密數據和 MAC(消息驗證碼)返回給我
我需要解密數據而不使用相同的輸入密碼從伺服器進行身份驗證
- 新的 PBKDF2 派生對稱密鑰
- 與用於加密的鹽相同
- 與用於加密的隨機數相同
- 與加密生成的 MAC 相同
我的問題是我應該在哪裡(以及加密數據?在其他地方?)以及如何(加密?散列?)我應該將 MAC 儲存在數據庫中嗎?
我的問題是在哪裡(連同加密數據?在其他地方?)
$$ … $$我應該將 MAC 儲存在數據庫中嗎?
從理論上講,您可以將 MAC 儲存在您想要的任何位置,只要您儲存它並獲得 MAC 和密文之間的正確關聯即可。
但實際上,將標籤附加到密文中是最聰明的。這可以最大限度地減少您在某處搞砸關聯的機會,並且它將使您的實現與大多數庫兼容,這些庫通常不僅僅是附加標籤並且不明確地為您提供它。
$$ H $$ow(加密?散列?)我應該將MAC儲存在數據庫中嗎?
通常 MAC 以明文形式儲存,這實際上包含在通常的安全遊戲和縮減中。因此,如果 MAC 標記是明文可用的,則攻擊者甚至無法破壞方案的安全性(即解密任何攻擊模型中的消息或偽造消息)。因此,無需進一步加密或散列。