Collision-Resistance

是否有確定性的單向無衝突加密算法?

  • April 19, 2018

我使用使用函式f加密的使用者名作為記錄的 id。使用者查看由f(使用者名)標識的記錄。我一定不知道真實的使用者名。

當具有使用者名u1並且知道f的對手生成另一個使用者名u2使得f (u1) = f (u2),使用此使用者名登錄並查看使用者名u1的使用者數據時,我希望得到保護免受攻擊。

所以,f必須是:

  • 確定性:我使用f (x) 作為標識符。它通過丟棄密鑰來拒絕 RSA 加密。
  • 單向:我一定無法從加密值中獲得真實值。
  • 無碰撞以防止上述攻擊。它拒絕 md5/sha,因為據我了解它們很容易破解,特別是因為我不使用鹽(不可避免的技術原因)。
  • 快速計算:我必須每秒處理數万條消息。它拒絕 b/crypt。

請注意,我不關心輸出的長度(它可能是固定的或可變的)。

我正在查看 MAC 和數字簽名算法,但無法弄清楚它們中的哪些具有必需的屬性。

在 SEJPM 中指出,MD5 和 SHA-1 可能具有足夠的抵抗力,讓您永遠不會發生衝突。但是,這並不意味著它們中的任何一個都是安全的。SHA-2 或 SHA-3 都不是。也就是說,鑑於使用者名沒有特殊的結構,難以猜測。

問題是使用者名通常很容易被猜到。所以無論你對它們做什麼,確定性算法都會暴露它們。您可以執行字典攻擊並在儲存的使用者名集中找到結果值。這樣就可以輕鬆找到大多數使用者名。

如果您想保護它們,您可能需要第二個系統(受信任的第三方,使用者或服務提供商以外的實體)執行使用者名加密/解密或密碼散列與胡椒- 一個秘密值,就像一個密鑰。

但總的來說,最好確保知道使用者名會給對手帶來很少的優勢(如果有的話)。在大多數情況下都是這種情況,儘管系統可能不會指示使用者名密碼是否不正確——這使得猜測兩者的組合有點困難。

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