Hmac

HMAC-SHA256 摘要的密鑰必須保持安全嗎?

  • June 9, 2017

我需要檢查高安全系統價值的完整性——在這種情況下是加密密鑰

我想創建HMAC這個使用者加密密鑰的摘要(密鑰在應用程序中用作密碼的AES-256密鑰)來檢查它的完整性。在每個使用者登錄到應用程序之後,加密密鑰是從他的密碼和 salt 中使用 KDF 派生的。HMAC-SHA256使用者註冊後,我為使用者的加密密鑰創建了一個完整性摘要。恕我直言,此摘要不應保密,並將與其他使用者數據一起保存。當使用者登錄時,我創建摘要並將其與摘要的保存值進行比較。如果兩個摘要相同,則認可完整性。

-這讓我問:是否需要保留用於HMAC-SHA256安全的密鑰,或者我可以將其與其他使用者數據一起保留(非安全,“公開”)?當假設的對手獲得密鑰時,對手是否有可能從HMAC-SHA256摘要中恢復加密密鑰的原始值?

編輯

我不確定,因為我在想;當對手不知道“秘密值”(應用程序加密密鑰)時,即使對手知道密鑰,也無法創建相同的摘要HMAC-SHA256。這是一個正確的假設嗎?

我的問題:是否需要保持 HMAC-SHA256 的密鑰安全,或者我可以將其與其他使用者數據一起保留為不安全的嗎?

如果您的目標是完整性並且您使用 HMAC,則必須對密鑰保密。HMAC 中的公鑰意味著任何人都可以為任何消息創建有效的標籤 - 並且完整性消失了。

當假設的對手得到密鑰時,是否有可能從 HMAC-SHA256 摘要恢復原始加密密鑰?

不,應該不可能從任何 HMAC 值中找到密鑰(這與安全定義相矛盾)。

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