Public-Key

證明同一個人知道兩個不同私鑰的最便宜方法?

  • December 15, 2021

假設有兩個不相關的 ECC 密鑰對 ( $ Pub_1 $ , $ Priv_1 $ ) 和 ( $ Pub_2 $ , $ Priv_2 $ )。愛麗絲聲稱她都知道 $ Priv_1 $ 和 $ Priv_2 $ ,但鮑勃不信任她,並認為 $ Priv_2 $ 只有愛麗絲的朋友夏娃知道。

Bob 要求 Alice 證明她控制了兩個私鑰。現在,鮑勃知道如果夏娃真的控制了 $ Priv_2 $ ,她願意與愛麗絲串通以生成愛麗絲控制兩者的證據。但他也知道夏娃的信任是有限的——夏娃實際上不會願意告訴愛麗絲私鑰 $ Priv_2 $ .

愛麗絲可以向鮑勃提供什麼證據證明她(或至少是同一個人)兩者都知道 $ Priv_1 $ 和 $ Priv_2 $ ? 請注意,例如。嵌套簽名,例如。 $ Sig_1(Sig_2(msg)) $ 是不夠的,因為 Eve 可以生成 $ Sig_2(msg) $ 並把它交給愛麗絲包裹起來 $ Sig_1 $ 從來沒有透露 $ Priv_2 $ .

另一個複雜因素:證明需要在 secp256k1 曲線上有效工作。(我已經研究過為此使用 zkSNARK,但我見過的 SNARK 庫在該曲線上執行效率不高。)

這在理論上似乎是不可能的。據我所知,知道之間沒有區別 $ priv_2 $ 和知道的人勾結 $ priv_2 $ .

假設一些證明協議 $ \Pi $ 存在於證明者(A)和驗證者(B)之間,滿足所描述的要求。總有辦法 $ A(priv_1) $ 和 $ E(priv_2) $ 串通執行 $ \Pi $ 以某種方式 $ A $ 什麼都不知道 $ priv_2 $ . $ A $ 和 $ E $ 只需執行一些 MPC 協議來計算下一個響應 $ B $ .

MPC 協議的安全性保證了 $ A $ 只學到自己的輸入 $ priv_1 $ 和輸出,它們是對 $ B $ ,反正每個人都能看到。而如果 $ \Pi $ 是零知識 $ B $ (通常需要),然後 $ A $ 從響應中什麼也沒學到。

免責聲明:我沒有此方案的安全證明。歡迎批評。

為了簡化符號,我稱這兩個(私有、公共)密鑰對 $ (a, A = a\cdot G) $ 和 $ (b, B = b\cdot G) $ 在基點上 $ G $ . 小寫字母是標量,大寫字母是EC點。 $ H_s() $ 表示散列和減少(mod 的順序 $ G $ ) 為一個標量。標量之間的所有運算(例如減法和乘法)都是 mod 的順序 $ G $ .

一、聲明 $ D = a\cdot b\cdot G $ .

讓 $ m = H_s(\text{“message being signed”}) $ 作為一次性消息,將阻止跨上下文重用此簽名。

證明 $ D $ 確實構造正確,請使用擴展的 Schnorr 簽名:

簽名是 $ (D, c, r) $ 在哪裡 $ k $ 是一個隨機標量, $ c = H_s(m \mathbin| k\cdot G \mathbin| k\cdot B) $ 和 $ r = k - c\cdot a $ .

通過檢查驗證簽名 $ c \overset{?}{=} H_s(m \mathbin| r\cdot G + c\cdot A \mathbin| r\cdot B + c\cdot D) $ 並通過檢查 $ D $ 是一個有效點,而不是無窮遠點。

這既證明了 $ a $ 是已知的,並且 $ a $ 都是點的私鑰 $ A $ 在發電機點 $ G $ , 也是該點的私鑰 $ D $ 在發電機點 $ B $ . 所以 $ D $ 被證明是 $ a\cdot b\cdot G $ .

最後,我們需要產生第二個簽名,證明有人知道這兩者 $ a $ 和 $ b $ . 我們可以通過證明點的私鑰的知識來做到這一點 $ D $ 在基點上 $ G $ (從而證明知識 $ a\cdot b $ ).

簽名是 $ (c’, r’) $ 在哪裡 $ k’ $ 是一個隨機標量, $ c’ = H_s(m \mathbin| k’\cdot G) $ 和 $ r’ = k’ - c’\cdot a\cdot b $ .

通過檢查驗證簽名 $ c’ \overset{?}{=} H_s(m \mathbin| r’\cdot G + c’\cdot D) $ .

如果愛麗絲與夏娃勾結而不透露夏娃 $ b $ , Alice 必須公開她的私鑰 $ a $ 給夏娃。的知識 $ k’ $ 任何一個共謀者都將允許該共謀者計算另一個共謀者的私鑰。該方案的安全性取決於 Alice 在數學上不可能以某種方式與 Eve 勾結來建構 $ r’ $ 這樣 Alice 或 Eve 就可以在數學上確定對方的私鑰。

因此,整體簽名是 $ (D, c, r, c’, r’) $ 並且是 $ 5\cdot 32 = 160 $ 字節。

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