Encryption
使用 AES-256-GCM 密鑰作為 SHA-256 的鹽
假設 256 位密鑰是隨機生成的,並且數據在發送到伺服器之前使用 AES-GCM-256 進行加密。
目標是使伺服器能夠確定它接收到的數據的唯一性,而無需實際洩露明文數據。
除了明文數據之外,在雜湊函式的輸入是密鑰的情況下使用 SHA-256 是否安全 - 所以 SHA-256(密鑰 + 明文)?所謂安全,我的意思是這樣做會大大降低鑰匙的安全性能嗎?
如果不安全,需要多大的隨機字節串才能使 SHA 足夠難以暴力破解?
我會使用 HKDF 將密鑰拆分為兩個 256 位密鑰,並將一個密鑰用於 GCM 模式,另一個用於明文上的雜湊。但是,我會使用 HMAC 而不是 SHA-256,因為它接受並將密鑰作為應用程序中的單獨實體。
HKDF密鑰派生函式的優點是用於認證加密的密鑰和散列函式之間有更多的“距離”。也就是說,僅重用密鑰不太可能引入直接漏洞。使用 KDF 從單個共享密鑰派生用於其他目的的其他密鑰也更加“整潔”。
使用 HMAC 的優點是可以防止長度擴展攻擊。此外,HMAC 明確接受密鑰而不僅僅是數據,因此密鑰可以更好地防止攻擊,當然這取決於使用它的系統。
否則,是的,可以使用共享密鑰和數據的散列來確定唯一性(當然,在加密散列的情況下具有高度確定性),假設密鑰在此期間不會更改該屬性是必需的。所以,是的,我不明白這怎麼行(但請不要將其視為科學證據)。