Zero-Knowledge-Proofs
HMAC 摘要的零知識證明
我正在閱讀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
類似於證明給定的雜湊是從輸入字元串中計算出來的,只給定輸入字元串的一部分。簡而言之,這將需要反轉(或暴力破解)雜湊,以找到字元串的未知部分——這樣,當與字元串的已知部分結合時,會產生給定的雜湊。這種類型的反轉正是雜湊函式被設計為具有彈性的。