任何機率散列算法是否具有加性同態?
我正在尋找的是滿足以下條件的功能:
- 對於每個可能的輸入(假設整數來自
$$ 0, 255 $$),必須有數万億個可能的輸出,以防止原像攻擊,因此是機率性的。
- 該函式必須是單向散列,因此給定輸出,無法推斷出輸入。
- 輸出必須表現出加性同態性,使得對 f(a) 和 f(b) 的某些操作等於 f(a+b)。
這樣的方案可能嗎?我已經閱讀了許多已經開發出接近此方法的論文,但沒有一篇我理解的完全符合我的標準。
Paillier展示了這些屬性,除了它是一種加密方案而不是雜湊,這意味著它需要公鑰和私鑰。在這個方案中,應該沒有可行的方法來“解密”輸出。
我發現了幾種同態散列方案,但每一種似乎都在某些方面有所不足:
- LtHash很有趣,但不是機率性的,因為輸入只映射到一個輸出,並且一個小的輸入集應該很容易預成像。
- 本文中提出的密碼系統似乎很合適,但我並不完全理解全域與每個發布者的雜湊是如何工作的。
- 這篇部落格文章概述了一個類似的機制,但我不確定它是否仍然容易受到預成像的影響並始終保持它的同態屬性。
我已經通讀了 StackExchange,在過去幾年中我只看到了一些與該問題相關的文章,包括這個,但我不知道如何將 Merkle 或雜湊樹用作這些標準的解決方案.
這個函式的目的是混淆分佈式賬本中的值,同時仍然允許對它們進行算術運算。如果只分發公鑰,Paillier 將完美執行,但私鑰的潛在存在不適用於這種情況,因為它允許一方讀取所有數據。
如果這些解決方案中的一個確實符合所概述的標準,那麼將不勝感激快速解釋如何。謝謝。
滿足上述要求的一種解決方案是Pedersen 承諾。Pedersen 是一種計算綁定的同態承諾方案。
輸出必須表現出加性同態性,這樣一些操作 $ f(a) $ 和 $ f(b) $ 將等於 $ f(a+b) $ .
因為 $ f $ 被要求是非確定性的,我假設要求是 $ f(a) \odot f(b) $ 是一些可能的輸出 $ f(a+b) $ (對於一些可計算的操作 $ \odot $ ).
如果是這樣,必須有一些進一步的要求;這是一個 $ f $ 以非常無用的方式滿足上述要求的功能:
$ f(x) $ 是一個忽略輸入的非確定性函式 $ x $ 並生成一個隨機長度的位串 $ n $ (對於適當大的值 $ n $ ).
然後:
- 對於任何輸入,有 $ 2^n $ 可能的輸出;如果 $ n $ 足夠大,這很容易滿足“數万億個可能的輸出”
- 檢查輸出不允許推斷輸入 - 顯然是正確的。
- 必須有一個操作 $ f(a) $ 和 $ f(b) $ 產生一個可能的輸出 $ f(a+b) $ - 為此,我們可以選擇任意操作 $ \odot $ 映射兩個 $ n $ 位輸入到 $ n $ 位輸出,然後我們有 $ f(a) \odot f(b) $ 是一個可能的輸出 $ f(a+b) $ .
顯然,這個函式 $ f $ 不太可能解決您心目中的具體問題——還有哪些額外要求?