環簽名 開啟匿名的大門

2022-04-30 16:15:15 字數 2532 閱讀 3364

**布萌

一般我們對於支付匿名性的需要滿足以下兩個要求:

1.交易不可追蹤:對於任何交易,無法追蹤其付款方是誰

2.交易不可關聯:對於向外傳送的兩筆交易,其他人無法證明其是否發給同乙個收款人

在位元幣的設計中,賬本資訊是完全公開的。由於交易間輸入輸出的關聯關係,以及輸出位址的確定性,可以通過圖形分析等方法獲得賬戶間的關係,從而獲取使用者的隱私資訊。

而基於群簽名(group signatures)基礎上環簽名(ring signatures)技術,提供了可行的匿名性解決辦法。

環簽名簡介

2023年,rivest,shamir和tauman三位密碼學家首次提出了環簽名。環簽名是一種簡化的群簽名,環簽名中只有環成員沒有管理者,不需要環成員間的合作。

環簽名同群簽名一樣也是一種簽名者模糊的簽名方案。在環簽名中不需要建立環,改變或者刪除環,也不需要分配指定的金鑰,無法撤銷簽名者的匿名性,除非簽名者自己想暴露身份。環簽名方案中簽名者首先選定乙個臨時的簽名者集合,集合中包括簽名者。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的成員可能並不知道自己被包含在其中。

環簽名沒有可信中心,沒有群的建立過程,對於驗證者來說,簽名人是完全正確匿名的。環簽名提供了一種匿名洩露秘密的巧妙方法。環簽名的這種無條件匿名性在對資訊需要長期保護的一些特殊環境中非常有用。例如,即使rsa被攻破也必須保護匿名性的場合。

由rivest等人提出的環簽名演算法示意圖

通常環簽名由以下幾部分構成:

1、金鑰生成。為環中每個成員產生乙個金鑰對(公鑰pki,私鑰ski)。

2、簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為訊息m生成簽名a。

3、簽名驗證。驗證者根據環簽名。和訊息m,驗證簽名是否為環中成員所簽,如果有效就接收,否則丟棄。

同時環簽名必須滿足以下特性:

1、無條件匿名性:攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不超過1/n。

2、正確性:簽名必需能被所有其他人驗證。

3、不可偽造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為訊息m偽造乙個簽名。

環簽名過程

與一般數字簽名方案類似,環簽名主要包含兩個基本的處理過程:

1.環簽名產生(ring-sign):對於訊息m,使用者s使用一組公開資訊(p1,p2,…,pr)以及其個人的私有資訊ss,生成簽名σ。

2.環簽名驗證(ring-verify):對於驗證者,當其獲得訊息m和簽名σ時,判斷這個簽名是否有效。

環簽名產生過程如下:

1.生成對稱加密演算法的金鑰k = h(m),h是乙個雜湊演算法(例如sha),m是需簽名的訊息。

2.在z∈[0, 2^b]範圍內隨機選擇乙個v值。

3.選擇一組隨機值xi作為簽名環中單向陷門函式的輸入,計算yi = gi(xi)

4.計算ck,v(y1,y2,…yr)= v,計算簽名者的陷門函式輸入xs,令ys= gs(xs)。由於簽名者控制自己的私鑰,所以可以很方便地求得xs= gs-1(ys)。此時,計算的輸入和輸出形成乙個「環」。

5.組成最終的環簽名:(p1,p2,…,pr;v;x1,x2,…,xr)

當驗證者獲取到環簽名的時候,驗證過程如下:

1.根據x1,x2,…,xr,以及陷門函式g1,g2,…,gr(通過公鑰來推導),計算yi = gi(xi)。

2.計算對稱加密的金鑰k = h(m)。

3.計算ck,v(y1,y2,…yr),並驗證其結果是否等於v。

環簽名應用案例

1、以太坊平台增加乙個類cryptonote環簽名,這樣使得以太坊使用者擁有類似於cryptonote驅動的,如monero那樣的匿名能力。

2、darknetcoin的環簽名使用了區塊鏈上的混幣服務,這種混幣具有相同金額的輸入,並且使用了多個別人的公鑰,只知道是從這一群人中的乙個傳送的,但無法判斷是哪乙個,也無法通過金額分析來判斷輸入輸出對。同時darknetcoin還支援tor和trr技術,引入了隱身位址。

3、bytecoin是最早引入環簽名和隱身位址的加密貨幣。darknetcoin就是在bytecoin基礎之上進行開發和創新的。bytecoin不支援tor,通訊未加密,無法隱匿上網位址,容易被協議監聽,從而分析錢包位址和ip位址的對應關係。

4、其他幾個電子貨幣:moreno,與bytecoin一樣支援環簽名和隱身位址,並在bytecoin基礎上發展了gpu挖礦。boolberry來自bytecoin,一樣支援環簽名和隱身位址,但不支援tor和trr,沒有任何匿名應用。stealthcoin:通過stealthsend採用環簽名。xcurrency:通訊加密,支援環簽名,不支援隱身位址。

最後要專門提一下zcash,雖然環簽名可以很有效的實現匿名性,但是環簽名也有乙個缺點,就是環簽名中依舊需要與其他使用者的公鑰進行混合,因此可能會遭遇惡意使用者從而暴露隱私。而zcash利用零知識證明避免了這個問題,在zcash的設計中,就採用了一種叫做zk-snark的非互動式的零知識證明方式,所以zcash是目前所有密碼學貨幣中匿名性最好的,因此受到過市場狂熱的追捧。

群簽名和環簽名的區別 環簽名,聚合簽名

本文主要對當下的一些密碼學技術的簡單闡述 環簽名環簽名 ring signature 是一種數字簽名方案,最初由rivest等人提出,環簽名是一種簡化的群簽名,環簽名中只有環成員沒有管理者,不需要環成員間的合作。既然環簽名是一種簡化的群簽名,那我們就先來看一下群簽名是什麼 群簽名 group sig...

群簽名和環簽名的區別 環簽名,聚合簽名

本文主要對當下的一些密碼學技術的簡單闡述 1 環簽名研究進展 環簽名 ring signature 是一種數字簽名方案,最初由rivest等人提出,環簽名是一種簡化的群簽名,環簽名中只有環成員沒有管理者,不需要環成員間的合作。既然環簽名是一種簡化的群簽名,那我們就先來看一下群簽名是什麼 群簽名 gr...

開啟神秘程式設計世界的大門

從 2000 年畢業,我做這行已經超過十二年了。最初接觸電腦程式,還是 dos 下的 qbasic 那已經離現在有接近二十年了。最初,我只是會照貓畫虎,按照老師的程式抄個素數數列,或者列印個三角形什麼的。初步理解程式的結構和意義,要等到讀大學以後了。那個時候在老師的鼓勵下,自己買書學習 delphi...