Encryption

這個方案有漏洞嗎?

  • January 4, 2020

我們想設計一個對稱加密方案。請注意,以下情況適用於我們的系統:

  1. 對於給定的使用者,明文 P 每次都會改變。
  2. 使用者將選擇一個可能在其一生中保持不變的密碼
  3. 通過散列使用者密碼(使用 SHA256)導出 256 位密鑰 K。
  4. 我們將需要多次加密明文。但是保證每次明文都不一樣
  5. 明文保證為 256 位。
  6. 明文將在系統內部生成,任何人都無法訪問。
  7. 密文將在公共領域。因此擁有密碼的使用者可以導出明文。

如果我們使用XOR-Cipher (C = P ^ KP = C ^ K),這個系統是否安全。我們的替代方法是使用 AES 或 chacha20-poly1305。這些中的任何一個都比 XOR-Cipher 方案有什麼優勢嗎?

PS。我們將在基於異或的系統中使用校驗和(明文的 SHA)來保證完整性(因為 chacha-poly 具有 MAC)。

這似乎是一次性密碼,變成了多次密碼,因為對於輸入的每個不同的明文,密鑰都是相同的。那麼這是一個損壞的結構 - 查看您的 wiki 連結的“使用和安全”選項卡。

例如,如果使用 AES,例如 CTR 模式,使用計數器,那麼它是安全的,只要計數器從不重複 - 基本上再次變成多墊。

對於完整性檢查,使用 HMAC 或類似的密鑰作為 AES 密鑰的雜湊,或者使用一些 HKDF 提取和擴展系統。僅使用散列的問題是,如果有人更改密文,那麼他們可以重新計算散列並更改它,因此完整性被破壞。

系統要麼不安全,要麼非常不安全。

使用異或時,具有兩個密文的攻擊者可以對它們進行異或,消除密鑰並獲得兩個明文的異或。

您說明文都是不同的,並且是 256 位,如果它們是隨機均勻選擇的,那麼對它們中的兩個進行 XOR 顯然是不可取的,但不會立即顯示明文。

如果即使一個明文被洩露,它也會顯示相同密鑰的所有其他明文,如果一個明文的一部分被洩露,它會顯示所有其他明文的匹配部分。

如果明文是低熵的,可猜測的,有一些結構。例如,部分是人類語言。明文對的異或可以簡單地揭示明文和密鑰。

即使您使用強密碼,例如 AES CTR。您的密鑰派生很弱,並且允許有效地暴力破解密碼。通用雜湊函式會導致基於密碼的密鑰派生效果不佳。使用合適的東西,例如:PBKDF2、bcrypt、scrypt 或 argon2 這些可以減緩暴力破解。記住使用者選擇的密碼熵不高。

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