Zero-Knowledge-Proofs

什麼是密鑰假設(KOSK)的知識

  • June 3, 2019

從我讀過的內容來看,這似乎是一個實體必須證明他們擁有密鑰的地方。這是通過M使用所述密鑰簽署消息來完成的。

這與為密鑰進行知識證明不同嗎?這與對密鑰進行零知識證明有什麼不同?

根據您在評論中連結到的論文:

該安全模型對密鑰知識(KOSK)進行了假設。沒有專門的密鑰生成,但是,當攻擊者發起流氓密鑰攻擊,為組成員提供其選擇的公鑰時,在模型中還需要提供匹配的密鑰。當然,“真正的”對手不會做任何這樣的事情,那麼這是什麼意思呢?作者將其解釋為對以下假設進行建模:在 CA 驗證相應的公鑰之前,使用者向證書頒發機構 (CA) 提供其密鑰的知識證明。

上面所說的是,KOSK 並不是真正意義上的密碼學假設(如 RSA,或離散對數),而更像是對特定安全模型的假設。也就是說,KOSK 只是假設當對手通過送出一些公鑰來對系統發起攻擊時,他也會提供匹配的密鑰。

現在,讓我們解釋為什麼它在這裡很重要。直覺地說,在密碼學中有這樣的情況,我們可以證明,如果攻擊者知道一些特定的資訊,例如與他送出的公鑰相關聯的密鑰,他就不能破壞我們方案的安全屬性。乍一看這可能看起來很奇怪,但如果換個角度看,它就很有意義:如果允許攻擊者送出他知道相應密鑰的公鑰,那麼他在攻擊類型方面受到嚴格限制。可以掛載(例如,他不能將他偷來的公鑰提供給某個誠實的一方,以試圖冒充他)。

當然,有一個問題:在現實生活中,任何使用者都不會不提供密鑰和公鑰,這會徹底破壞他們的系統。相反,訣竅是要求他們對密鑰執行零知識證明(ZKPoK),這表明他們知道與送出的公鑰相關聯的密鑰,而不會洩露任何進一步的資訊。

然後,Bellare 和 Neuven 繼續確定以下問題:在協議的實際實現中,這種知識證明被簽名取代,使用密鑰作為簽名密鑰。當然,直覺地能夠使用密鑰簽署文件表明您知道它。但這並不能證明這一點,這就是問題的全部。證明一個算法是什麼意思 $ A $ 知道些什麼?在密碼學中,它意味著非常精確的東西:它意味著,給定 $ A $ ,可以在多項式時間內提取該值。根據定義,這可以通過 ZKPoK 實現,但不能通過簽名實現。在方案的安全性分析中,這個提取過程通常是至關重要的:為了證明系統在某些假設下是安全的,安全性降低將利用恢復這個密鑰的提取器的存在,並使用提取的密鑰關鍵是為了從成功的對手那裡得出與某些安全假設的矛盾。如果不存在這種有效的提取過程,安全分析就會失敗。

這只是一個理論問題嗎?這可能是實施該設計的人的希望。可以說,應該很難對使用簽名而不是 ZKPoK 的真實係統發起攻擊,因為成功的攻擊至少需要對手在不知道密鑰的情況下設法在某些文件上找到簽名。但他不能嗎?也許對手可以欺騙密鑰的真正所有者為他簽署文件,從而發動中間人攻擊。或者可能有一些更複雜的攻擊:我可以輕鬆地為自己設計一個(人為的)系統,該系統使用 ZKPoK 可證明是安全的,但一旦替換 ZKPoK bs 簽名,它就會變得完全不安全。關鍵是,如果不降低安全性,就無法 100% 確定不存在這樣的完全中斷。

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