Hash

低熵輸入的單向確定性雜湊?

  • May 21, 2015

我的問題如下:我們有一個稱為 ID 的低熵數據。(個人 id 的 10 位十進制數字加上一個總和,它包含一個日期)我們想要創建一個數據 (H),它對於相同的 id 是相同的,但是 id 既不能計算也不能通過嘗試所有組合來暴力破解. 應該證明,即使我們既不使用計算也不使用蠻力也無法從 H 重建 ID

我的解決方案:使用 k:= 一個駐留在慢速硬體令牌中的 RSA1024 密鑰,無法提取的原因是為了提高熵

H:=SHA512SUM(RSA(k,SHA512SUM(ID))) 我們將第三方限制為每分鐘 1 次操作。

請評論此解決方案是否足夠健全,或者是否有更好的解決方案。我們可以使用哪些措施來表達解決方案的合理性?

我不認為這個問題可以按規定解決。

對於較小的消息空間和確定性散列(或加密),一般攻擊涉及窮舉搜尋所有可能的消息以找到與已知散列/密文相對應的消息。

如果 ID 號的所有數字都是隨機的,那麼詳盡的搜尋將需要大約 $ 10^{10} \approx 2^{33} $ 迭代,並且使用密鑰拉伸和/或速率限制硬體來減慢散列速度以使這種搜尋不可行可能是可行的。

不幸的是,您說某些數字對日期進行了編碼。如果這些 ID 號類似於這裡的當地政府 ID,我假設類似 6 位編碼的生日(以 DDMMYY 格式或類似格式)加上一個四位序列號。這顯著減少了必要的搜尋空間:

  • 只是日期格式大大減少了搜尋空間:由於一年中只有 356 個有效日期(或閏年為 366 個),因此有效 ID 的實際數量僅約為 $ 10^{8.4} \approx 2^{28} $ .
  • 如果攻擊者針對特定的人,他們可能會知道目標的年齡至少在十年左右。這會將搜尋空間進一步縮小(至少)10 倍。
  • 在最壞的情況下,攻擊者已經知道目標的年齡和出生日期,只需要確定 ID 的最後四位即可。因此,他們只需要搜尋 $ 10^4 \approx 2^{13} $ 身份證號碼!
  • 更糟糕的是,最後四位數字也可能不是隨機的。如果它們是按順序分配的,則較小的數字將更常見,因此順序詳盡的搜尋可能比隨機分配時預期的更快找到正確的 ID。

基本上,在上述最壞的情況下(實際上,這根本不是那麼牽強),再多的密鑰拉伸也無濟於事:如果您的組織希望每分鐘能夠合法處理多個 ID 然後一個確定的攻擊者可以訪問相同的資源(這是一個合理的假設,如果內部攻擊是一個問題)並且知道 ID 的日期部分能夠在不到一周的時間內對 ID 進行去散列(= 10,080 分鐘)。如果您需要能夠*每秒處理一個 ID,*那麼攻擊者最多只需要三個小時。無論您使用的散列或加密方法,或者您用來實現它的工具,這都是成立的。

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