Zero-Knowledge-Proofs

HMAC 摘要的零知識證明

  • December 12, 2021

我正在閱讀HMAC的 Wikipedia ,我感到有點失落。

我想知道是否存在…

$$ digest = \operatorname{HMAC}(msg, key) $$

是否可以證明 $ digest $ 計算自 $ msg $ ,在不知道的情況下 $ key $ ?

是的。我假設您的意思是“是否有可能讓某人相信摘要是使用公開消息計算的,同時保持密鑰保密?”

所有 NP 都存在零知識證明系統。我們可以將此特定問題視為以下 NP 關係:

$$ R_{\text{HMAC}}={(\text{digest}, \text{msg}; \text{key}): \text{HMAC}(\text{msg}, \text{key})=\text{digest}} $$

其中 NP 見證人是關鍵。

因此,ZK 證明不會揭示底層見證人(密鑰),而是讓驗證者相信可以從消息中計算出摘要。如果證明也是 a Proof of Knowledge,那麼驗證者也可以確信證明者“知道”適當的密鑰。

不。

根據RFC2104,HMAC 函式定義如下:

HMAC(K, text) = H(K XOR opad, H(K XOR ipad, text))

如您所見,HMAC 函式由兩個嵌套的散列函式組成,其中每個散列函式的輸入(部分)包括鍵 (K) 的函式。

因此,proving that the HMAC digest is computed from msg, without knowing the key類似於證明給定的雜湊是從輸入字元串中計算出來的,只給定輸入字元串的一部分。簡而言之,這將需要反轉(或暴力破解)雜湊,以找到字元串的未知部分——這樣,當與字元串的已知部分結合時,會產生給定的雜湊。這種類型的反轉正是雜湊函式被設計為具有彈性的。

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