Elliptic-Curves

我將如何轉換送出的座標Xxx和是yy承諾 EC 點而不透露點(在零知識中),反之亦然?

  • February 4, 2018

我正在使用 secp256k1 橢圓曲線,儘管我懷疑這適用於任何橢圓曲線。我有一個 Pedersen 承諾 $ x $ 和 $ y $ 與生成器在一些離散對數方案中的座標 $ g $ 和 $ h $ . 所描述的點 $ x $ 和 $ y $ 等於 $ G^n $ , 在哪裡 $ G $ 公共發電機和 $ n $ 是一個秘密(使用冪來表示橢圓曲線上的點標量乘法)。有沒有辦法從 $ g^x h^{r_1} $ 和 $ g^y h^{r_2} $ 至 $ G^n H^{r_3} $ , 在哪裡 $ H $ 是曲線中的第二個生成器,所有 $ r $ 值是秘密隨機數,在需要時使用零知識證明?另一個方向的方法,從承諾出發 $ n $ 對兩個座標的承諾 $ x $ 和 $ y $ 也將適用。我無法在我的研究中找到這樣的證據,我也無法思考如何創建一個。

我的目標是設計與已散列(使用比特幣地址散列)的公鑰相關聯的私鑰的零知識證明,使得唯一的公共資訊是環境(生成器、設置等)和雜湊函式的結果,以及所有相關函式,如比特幣雜湊。該證明可用於證明非支出比特幣帳戶的所有權,而無需透露公鑰。如果有人這樣做了,那麼我想這個問題沒有實際意義,我將參考適用的論文而不是自己設計它,因此指向任何此類論文的連結也是這個問題的可接受答案。不幸的是,我自己在研究中還沒有看到這樣的論文。

編輯:

我還應該指出,在座標的承諾以形式出現之前 $ g^x h^{r_1} $ 和 $ g^y h^{r_2} $ ,它們是兩個按位承諾列表,它們同態組合成 $ g^x h^{r_1} $ 和 $ g^y h^{r_2} $ . 我沒有失去這些承諾,所以它們是可用的。建議將它們組合起來可能是一個錯誤,因為由於組之間的順序不同,這可能會在對它們執行操作時引入問題。

在問題中包含您的實際目標非常有用,以避免 XY 問題。

我的目標是設計與已散列(使用比特幣地址散列)的公鑰相關聯的私鑰的零知識證明,使得唯一的公共資訊是環境(生成器、設置等)和雜湊函式的結果,以及所有相關函式,如比特幣雜湊。

如果我們假設每個人都知道公共參數,那麼您只給驗證者一條資訊:公鑰的雜湊值。在這裡,使用什麼樣的公鑰完全無關緊要——在相應的雜湊函式下,你需要一個原像的 ZK 證明。

我不確定您對“所有相關功能,如比特幣雜湊”的意思。但是這裡的目標似乎是對比特幣賬戶的身份保密,所以我猜額外的資訊也不會洩露公鑰。

該證明可用於證明非支出比特幣帳戶的所有權,而無需透露公鑰。

實際上,這可能是錯誤的。這樣做的原因是,雜湊函式下的原像知識並不能保證原像實際上是一個有效的比特幣賬戶。為此,您需要一個不同的 ZK 證明,其中驗證者實際上需要相應的公鑰。

在比特幣的設置中,我認為你的目標是無法實現的。您實際上需要的是一個組成員資格的證明,例如有效帳戶的所有者組,我可以想像這是可能的——如果系統是這樣設計的。這類似於組簽名等。但是如果沒有相應的設置,我看不出有任何方法可以實現您的目標。


關於您對承諾和 EC 公鑰的想法:

你有兩個 Pedersen 承諾 $ a = g^xh^{r_1}, b = g^yh^{r_2} $ 接著 $ c = G^nH^{r_3} $ ,這類似於 Pedersen 承諾,但不是在素數階群中,而是在橢圓曲線中。

現在,無論什麼 $ x $ 和 $ y $ 實際上是, $ a $ 和 $ b $ 可能是該組的任何元素,因為 Pedersen 的承諾完全隱藏。所以也許你可以生成 $ G^nH^{r_3} $ 不知何故從 $ a $ 和 $ b $ ,但這肯定會揭示 $ n $ 本身,它實際上與 $ x $ 或者 $ y $ .

我的目標是設計與已散列(使用比特幣地址散列)的公鑰相關聯的私鑰的零知識證明,使得唯一的公共資訊是環境(生成器、設置等)和雜湊函式的結果,以及所有相關函式,如比特幣雜湊。

這是我試圖協調已經陳述的點點滴滴,並提出一些已知的結果。這不是一個完整的答案。這個問題顯示了觀點的多樣性,表明了有趣的研究的潛力。

雜湊會破壞公鑰中的資訊。

遵循定義並參考一般定理會很棒:Oded Goldreich、Silvio Micali、Avi Wigderson,“NP 中所有語言的有效性僅產生零知識證明系統的證明”。在這種特殊情況下,雜湊是一個實例,私鑰是證明語言成員資格的見證人。提取器算法在 Mihir Bellare, Oded Goldreich, “On Defining Proofs of Knowledge” 中介紹。

有兩個關係,公鑰可以被認為是一個中介:雜湊的原像和雙加算法的結果。

我認為這行不通,因為 EC 標量乘法(通常使用加倍)揭示了 n。

特別是,雙精度後跟“1”位私鑰相加。可以將此循環表示為

$$ \begin{equation} (PrivKeyBit == 0 \land pointX == DoubleX \land pointY == DoubleY) \lor (PrivKeyBit == 1 \land pointX == DoubleAddX \land pointY == DoubleAddY) \end{equation} $$ 可以將其實現為 $ \Sigma $ - 具有挑戰和響應的協議,遵循 Ronald Cramer、Ivan Damgard、Berry Schoenmakers,“部分知識證明和證人隱藏協議的簡化設計”用於 OR 證明。或者,可以在驗證者的挑戰中使用多項式二次方來完成這部分,如相關問題證明哈密頓循環的協議所示。讓 $ B(z) $ 是一個線性多項式,使得一階係數是私鑰的位。然後佩德森承諾 $ x $ -座標將通過多項式的 2 次係數進行驗證 $$ \begin{gather} (z - B(z)) D(z) + B(z) A(z) \end{gather} $$ 在哪裡 $ D(z) $ 和 $ A(z) $ 是具有 1 次係數的線性多項式(類似 Schnorr 的響應) $ DoubleX $ 和 $ DoubleAddX $ . 對於一個有效的 $ B() $ 一個需要 $ B(z)(B(z) - z) $ 是一個線性(零度 2 係數)多項式。可以用方程式來補充這一點,以驗證 $ DoubleX $ 和 $ DoubleAddX $ 對照上一次循環執行的座標。可以產生對應於所有 256 個週期的方程的線性組合,以降低驗證成本。 可以使用snarkfront或相關工具證明雜湊原像的知識:libsnark、pinocchio、pepper。這種技術可能是另一種替代上述驗證的替代方法。請注意“指數知識”假設不會導致任何顯式提取器算法。

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