Hash

E_k(M)||H(m) 形式的 MAC 是否安全?

  • January 27, 2021

這種加密和簽名方案會被認為是防篡改的嗎?

plaintext = "hello world"
password = "secret key"
hash = sha3_512(plaintext)
ciphertext = encrypt(plaintext,password)
output = ciphertext+hash

我正在計算明文的雜湊值,然後將其添加到密文輸出的末尾。我知道這不完全是 MAC 或 HMAC,但這種情況有效嗎?它安全嗎?從我的角度來看,偽造明文的唯一方法是知道密鑰。否則,任何更改都將反映在雜湊中。這安全嗎?假設密碼是不可延展的。我相信這是 Mcrypt 用於文件加密的方案。謝謝。

這不是重複的,因為如可能的重複問題場景 3 中所述,從雜湊中暴力破解明文是不可行的。

重點((另請參閱此答案))是散列計算對每個人都是免費的,我們假設您的方法已被Kerckhoffs 的原則所熟知。任何人都可以計算任何資訊的雜湊值,這可能會洩露加密的消息。

在密碼學中,我們認為攻擊者在計算上是有界的,但不限於根據他們的優勢採用任何方法。

如果可能的攻擊者是三字機構之一,那我們可以假設他們收集了所有可用的公共資訊,包括您的個人資訊、您的網路、您的習慣等。然後他們可以將每個資訊的雜湊值保存在他們的龐大的數據庫(例如猶他州數據中心),一旦他們看到一條消息就通過 $ E_k(m)||H(m) $ 然後他們會檢查是否存在 $ H(m) $ . 今天的點擊將揭示您發送的資訊。如果他們失敗了,他們不會停在這裡。他們將儲存此消息並定期使用更新的數據庫檢查雜湊。

因此,這不是驗證消息的好方法。在現代密碼學中,我們有 AES-GCM 和 ChaCha20-Poly1305 等身份驗證加密 (AE) 模式,它們在捆綁包中提供機密性、完整性和身份驗證。請記住,沒有什麼是完美的,並保持像AES-GCM這樣的義務是安全的。

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