證明雜湊與加密文件匹配
假設 Alice 有一個文件 $ F $ 她將以加密形式發送給 Bob。愛麗絲擁有 $ F $ 和一個加密密鑰 $ K $ . 她向 Bob 發送加密 $ F $ 使用 $ K $ , $ E(F,K) $ 以及一個緊湊的消息驗證碼,它可以是文件的雜湊 $ H = {\rm hash}(F) $ ,用作文件的唯一盲標識符。假設多個使用者可能擁有相同的文件,使用不同的密鑰加密,我們希望通過以下方式檢測它們是否相同 $ H $ 是一樣的,但鮑勃需要知道 $ H $ 火柴 $ F $ 沒有 $ F $ 未加密。
是否存在任何證明雜湊 $ H $ (或其他緊湊型 MAC)對應的文件 $ F $ ? 散列/MAC 算法和加密算法(對稱、非對稱、同態)是次要的能夠證明這一點。
如果您使用一次性密碼本作為您的加密功能,那麼這將簡化為 Alice 知道一些資訊的證明 $ F $ 雜湊到 $ H $ . $ K $ 可以簡單地從 $ F $ 和 $ E(K, F) $ 通過異或。
這個更簡單問題的互動式零知識證明——愛麗絲證明她知道 $ H(F) $ - 會是這樣的:
您需要使用部分同態雜湊,這樣 $ H(A+B) = H(A) \oplus H(B) $ 對於每個域上的一些組合操作。一個範例可能是添加/異或原圖像並使用橢圓曲線基點的標量乘法作為散列函式 - 儘管注意任意長度的消息,這將比傳統的加密散列函式慢很多。
在證明中的單次試驗中,Alice 生成了一個一次性便箋 - $ P $ - 並承諾 $ H(P) $ . 鮑勃計算 $ H(F+P) = H(F) \oplus H(P) $ . 他可以挑戰愛麗絲透露 $ P $ 或者 $ F+P $ . 每次試驗都會將 Alice 作弊的機率減半。
您可以將其變成 Fiat-Shamir 的非互動式證明。然而,它不是很簡潔,證明最終比 $ F $ .
我想使用同態 DRBG,您可以擴展證明以表明 Alice 知道流密碼密鑰 $ K $ 定義轉換 $ F \rightarrow E(K, F) $ . 這將提高證明的簡潔性,並與您的要求更接近。
您是否允許 Bob 詢問所有擁有 $ F $ 加密,然後使用來自的相同密鑰上傳文件 $ F $ ?
這將是調整協議的原則:所有使用者必須使用取決於文件的相同密鑰加密文件(通過另一個雜湊計算)。密鑰將是一種共享密鑰,但只能解密文件 $ F $ . Bob 會計算他收到的第一個文件的雜湊值,儲存它,然後計算所有新收到的加密文件的雜湊值,以檢查它們是否與初始雜湊值匹配。
派生對稱密鑰的範例: $ H(F | 1) $ (“一”位添加在文件末尾)。在這種結構中,文件的唯一標識符將是唯一加密文件的雜湊值。