Encryption
ID-秘密計劃
我有一個 ID-Secret 方案,我想知道是否存在任何漏洞。
第 1 方和第 2 方持有一些憑證、一個 ID 和一個 Secret。
第 1 方創建此消息:
HMAC(ID, SECRET) IV + ENCRYPT(MESSAGE, SECRET, IV)
使用:SHA-256 和 AES-CBC-256
然後,第 2 方可以驗證使用者並解密消息。
是否存在我可能遺漏的任何漏洞?
我不確定 HMAC 中的哪個輸入是您的密鑰,哪個是消息。秘密應該在這裡的關鍵位置。
此外,您可能希望在 MAC 中包含消息(明文或密文)本身 - 否則您很容易受到可以更改數據的攻擊者的攻擊(即使他無法讀取數據,並且不完全知道他的內容)在改變)。
關於您的評論:
也許我沒有明確說明 HMAC 僅作為第 2 方的辨識方法,而沒有透露實際 ID 或 SECRET(我試圖隱藏的值)。
關鍵是,如果您的身份驗證僅依賴於
HMAC(secret, ID)
,則此值是有效密碼,因為它不會在消息之間更改。這些不綁定到消息,這意味著無論如何都會接受更改的消息。
為什麼包含密文的 MAC 會更好?密文是加密的,因此需要 SECRET(密鑰)才能成功更改底層輸入。如果攻擊者試圖更改密文(不知道密鑰),則消息的預期接收者將在解密密文時遇到錯誤,或者無法驗證底層消息。
從這個角度來看,您根本不需要辨識消息的第一部分。
解密更改的消息不會出錯 - 只是結果將是垃圾。這取決於您在此處傳輸的消息類型,是否可以實際辨識這些垃圾。使用類似的東西
MAC(ID + ciphertext, secret)
確保接收者甚至不會嘗試解密偽造的消息。