門羅幣用來保障匿名性的隱蔽位址,是如何產生的?
曲速未來安全區 / 鍾佩慈編譯
2018-10-15 14:09

隱蔽位址(Stealth Address)是門羅幣用來提供匿名性保障的關鍵技術之一。

 

 

比特幣的帳戶位址只有一對公鑰與私鑰,而門羅幣有兩對密鑰,一對用來支付交易,一對用來查看交易。

 

用來支付的是spend key,這對密鑰中的公鑰,被用來參與後面的環形交易,並對key image進行簽名驗證,而私鑰則被用來創建key image。

 

用來查看的則是view key,這對密鑰中的公鑰,就是被用來生成我們的一次性隱蔽位址,而私鑰則是被接收者用來掃描區塊鏈,以查看發送給他的交易。

 

門羅幣的位址主要是由上述兩對密鑰的公鑰所組成,基本結構大致如下:

 

 

這樣得到的位址是138位,進行hex轉換後將得到95位的標準位址。

 

隱蔽位址的中心思想很簡單,就是利用接受者view key的公鑰,計算出一個一次性的隱蔽位址,並將資金發送到這個位址,接收者在掃描區塊鏈後,就可以利用自己的view key來取走資金,且網路上的其他人並不能知道這筆交易是發送給誰的,從而保證了交易的匿名性。

 

隱蔽位址的公鑰計算方式如下:

 

 

H()是門羅幣所使用的hash算法,r是發送者選取的一個隨機數,G是橢圓曲線的基點。

 

公式中的A和B則分別表示接收者的public view key和public send key。

 

如果不瞭解的話最好還是先去看一下ECC,畢竟這也算是區塊鏈中的基礎密碼學。

 

得到公鑰P後,再由它得到一個門羅幣的位址,這就是一次性的隱蔽位址了。

 

接下來,發送者再計算一個R=rG,然後將R也打包到以P為目標的交易中,將這筆交易廣播到鏈上。

 

接收者再掃描鏈上的交易,計算每筆交易:

 

 

a為接收者的private view key,由於在橢圓曲線對應的公私鑰關係中,A=aG,所以rA=raG=aR。

 

當接收者發現P=P1時,他就知道這筆交易是發送給自己的,因為對應的P1只有接收者自己可以計算出來,所以除了他以外,別人並不知道該交易的目標位址。

 

要使用這筆交易,接收者只需要計算出對應的私鑰:

 

 

使用該私鑰即可簽名這筆交易中的資金,以進行使用。

 

我們可以看到,這個方式對接收方來說壓力是比較大的,需要掃描整個鏈上的交易,而這也是目前門羅幣性能的一大瓶頸。

 

因此開發人員又對門羅幣實施了硬分叉、整合RingCT環形保密交易技術 (RCT),並透過密碼學原理,將門羅幣的交易數額進行加密。

 

這意味著,除了交易雙方,沒有人能夠透過區塊鏈來追蹤到他們具體的位址訊息和交易金額。

 

本次升級成功後,RCT位址將成為門羅幣唯一的位址格式。

 

本文為火星財經授權刊登,原文標題為「解讀:如何運用區塊鏈隱私保護技術——以門羅幣為例」