您的位置:首頁 > 軟件教程 > 教程 > 門羅幣隱私保護之環(huán)簽名

門羅幣隱私保護之環(huán)簽名

來源:好特整理 | 時間:2024-10-23 10:11:26 | 閱讀:82 |  標簽: 門羅幣 隱私保護 隱私   | 分享到:

主頁 微信公眾號:密碼應用技術(shù)實戰(zhàn) 博客園首頁:https://www.cnblogs.com/informatics/ GIT地址:https://github.com/warm3snow 簡介 在《門羅幣隱私保護之隱形地址》文章中,我們重點介紹了門羅幣Monero的隱形地址技術(shù),門羅幣通過隱形地

主頁

微信公眾號:密碼應用技術(shù)實戰(zhàn)
博客園首頁: https://www.cnblogs.com/informatics/
GIT地址: https://github.com/warm3snow

簡介

在 《門羅幣隱私保護之隱形地址》 文章中,我們重點介紹了門羅幣Monero的隱形地址技術(shù),門羅幣通過隱形地址保證了交易的不可鏈接性,并實現(xiàn)了用戶的隱私保護和監(jiān)管需求。

本文將繼續(xù)介紹門羅幣的另一個核心技術(shù)——環(huán)簽名技術(shù),Monero通過環(huán)簽名技術(shù),實現(xiàn)了交易的不可追蹤性。

  • 不可鏈接性 (Unlinkability):對于任何兩筆outgoing交易,無法證明它們是發(fā)送給同一個人的。即對于任何兩個 outgoing 交易,無法證明它們是由同一個人收款的。
  • 不可追蹤性 (Untraceability):對于每一筆incoming交易,所有可能的發(fā)送者都是等概率的。這意味著,對于任何兩個incoming交易,無法證明它們是由同一個人發(fā)送的。

注:incoming和outgoing交易分別表示用戶的收款和支出交易。

基礎(chǔ)知識

術(shù)語定義

  • \(\mathbb{Z}_l\) :有限域, \(l\) 是一個大素數(shù),如: \(l = 2^{252} + 27742317777372353535851937790883648493\)
  • \(P_i\) :公鑰,在環(huán)簽名中表示環(huán)中第 \(i\) 個公鑰, 當 \(i = s\) 時, \(P_s\) 是簽名者的公鑰
  • \(R\) :環(huán)簽名的環(huán),一組公鑰的集合, \(R = {P_1, P_2, ..., P_n}\) ,包含 \(P_s\)
  • \(x_s\) 或者 x_s :環(huán)簽名中簽名者的私鑰, 私鑰范圍在 \(\mathbb{Z}_l\) 內(nèi)
  • \(\sigma\) :環(huán)簽名的簽名結(jié)果
  • \(m\) :待簽名的消息。在簽名時,通常會先對消息進行哈希處理。
  • \(H_s\) :特性哈希函數(shù), 將輸入映射到 \(\mathbb{Z}_l\) ,如: \(H_s: \{0, 1\}^* \rightarrow \mathbb{Z}_l\)
  • \(H_p\) :特性哈希函數(shù), 將輸入映射到橢圓曲線上的點,如: \(H_p: \{0, 1\}^* \rightarrow E(\mathbb{F}_q)\)
  • \(I\) :密鑰鏡像,在門羅幣中使用,用于防止雙花攻擊

環(huán)簽名

環(huán)簽名 ( Ring Signature )是一種數(shù)字簽名方案,允許一組用戶中的任何一個用戶為某個消息生成簽名,而不需要透露具體是哪個用戶生成的簽名。環(huán)簽名的主要特點是它提供了 簽名 匿名性 可驗證性 ,確保簽名者的身份在簽名過程中保持隱私。

環(huán)簽名的基本概念

  • 環(huán) :環(huán)簽名的“環(huán)”指的是一組公鑰,這些公鑰代表了可能的簽名者。簽名者在生成簽名時,會選擇一個環(huán)中的公鑰作為自己的身份,但外部觀察者無法確定具體是哪個公鑰對應的用戶。
  • 簽名 :簽名者使用自己的私鑰和環(huán)中其他用戶的公鑰生成簽名。這個簽名可以被任何人驗證,但無法確定簽名者的身份。
  • 驗證 :任何人都可以使用環(huán)來驗證簽名的有效性,確保簽名確實是由環(huán)中的某個用戶生成的。

環(huán)的大小是環(huán)簽名方案的一個重要參數(shù),環(huán)越大,簽名者的身份越難以確定,簽名的匿名性越高。但是環(huán)的大小也會影響簽名的計算和驗證性能,因此需要在匿名性和性能之間進行權(quán)衡。

環(huán)簽名構(gòu)造和驗證流程

門羅幣隱私保護之環(huán)簽名

  1. 初始化:簽名者Bob選擇環(huán)R中的公鑰,如{ \({P_1, P_2, ..., P_i, ..., P_n}\) },其中Bob自身的公鑰 \(P_s\) 也在放入環(huán)R中
  2. 生成簽名:Bob基于環(huán)R中的公鑰和自己的私鑰 \(x_s\) 以及待簽名消息 \(m\) ,生成環(huán)簽名 \(\sigma\)
  3. 驗證簽名:任何人都可以基于環(huán)R,消息m對簽名 \(\sigma\) 進行驗證

環(huán)簽名方案 涉及一個三元組 \((KeyGen, Sign, Verify)\) ,其中:

  • \(KeyGen\) :密鑰生成算法,簽名者使用 \(KeyGen\) 生成公私鑰對 \((P_s, x_s)\)
  • \(Sign(m, R, x_s)\) :簽名算法,簽名者使用 \(Sign\) 生成環(huán)簽名 \(\sigma\) , 其中 \(m\) 是消息, \(R\) 是環(huán), \(x_s\) 是簽名者的私鑰
  • \(Verify(m, R, \sigma)\) :驗證算法,任何人都可以使用 \(Verify\) 驗證簽名的有效性。算法結(jié)果為布爾值, \(true\) 表示簽名有效, \(false\) 表示簽名無效。

門羅幣之環(huán)簽名

回顧在 《門羅幣隱私保護之隱形地址》 介紹的交易模型,Bob作為收款方,能夠驗證每一筆相關(guān)交易的有效性。

門羅幣隱私保護之環(huán)簽名

進一步說明:

  • Bob作為收款人,在驗證每筆交易時,Bob只需對每個輸出執(zhí)行兩次橢圓曲線乘法和一次加法(即生成 \(P'\) ),以檢查該交易是否屬于他。
  • 對于每個屬于Bob的UTXO,Bob恢復一個密鑰對 \((x, P)\) 并將其存儲在錢包中。
  • 只有Bob可以生成地址 \(P\) 的私鑰 \(x\) ,因此只有Bob能夠花費這筆收入。

值得注意的是, \((P, x)\) 一次性密鑰 ,當Bob花費這筆收入時,會使用該密鑰參與環(huán)簽名,之后可以丟棄。

門羅幣環(huán)簽名

門羅幣使用環(huán)簽名技術(shù),實現(xiàn)了交易的不可追蹤性。門羅幣的環(huán)簽名方案基于CryptoNote協(xié)議。在CryptoNode協(xié)議中,環(huán)簽名交易模型如下:

門羅幣隱私保護之環(huán)簽名

  • 加入環(huán):Bob從門羅幣公開賬本中隨機選擇UTXO,以及自己待花費的UTXO,放入到新創(chuàng)建的UTXO中,作為交易的 Tx input , 所有UTXO的收款方地址{ \({P_1, ..., P_s, ..., P_n}\) }構(gòu)成環(huán) \(R\)
  • 生成密鑰鏡像:Bob使用自己的簽名私鑰 \(x_s\) 和公鑰 \(P_s\) , 生成密鑰鏡像 \(I\) ,區(qū)塊鏈礦工在驗證交易時,會驗證 \(I\) 是否已經(jīng)被使用過,以防止雙花攻擊
  • 生成簽名:Bob使用環(huán) \(R\) 和自己的私鑰 \(x_s\) ,對交易進行簽名,生成環(huán)簽名 \(\sigma\)

門羅幣環(huán)簽名方案

門羅幣環(huán)簽名方案涉及一個四元組 \((KeyGen, Sign, Verify, Link)\) ,其中:

  • \(KeyGen, Sign, Verify\) 與一般的環(huán)簽名方案功能類似
  • \(Link\) :區(qū)塊鏈礦工通過 \(Link\) 算法驗證對應的密鑰鏡像 \(I\) 是否已經(jīng)被使用過,以防止雙花攻擊

密鑰生成KeyGen

門羅幣的KeyGen算法與一般的環(huán)簽名方案類似,目的都是生成公私鑰對 \((P_s, x_s)\) ,其中 \(P_s\) 是簽名者的公鑰, \(x_s\) 是簽名者的私鑰。
不同的是:

  • 門羅幣的公鑰來自于隱形地址技術(shù),即 \(P_s = H_s(aR)G + B\) , 對應的私鑰 \(x_s = H_s(aR) + b\)
  • 門羅幣的KeyGen算法還會生成密鑰鏡像 \(I\) ,用于防止雙花攻擊。其中, \(I = x_s \cdot H_p(P_s)\)

簽名算法Sign

在門羅幣中,由于簽名公私鑰對 \((P_s, x_s)\) 是由隱形地址技術(shù)生成的,并且僅用于一次性簽名,因此門羅幣環(huán)簽名我們也稱為 一次性環(huán)簽名 。

門羅幣的Sign算法如下:

  1. 初始化:

    • 隨機選取其他用戶的公鑰 \(P_i\) ,結(jié)合自己的公私鑰對 \((x_s, P_s)\) ,構(gòu)成環(huán) \(R = {P_1, P_2, ..., P_s, ..., P_n}\)
    • 選擇兩個隨機數(shù)集合 \(Q\) \(W\) ,如下
      • \(Q = \{q_i\}\) , \(i = 1, 2, ..., n \And q_i \in \mathbb{Z}_l\)
      • \(W = \{w_i\}\) , \(i = 1, 2, ..., n \And i \neq s \And w_i \in \mathbb{Z}_l\)
  2. 計算環(huán)簽名(類似零知識承諾:承諾-挑戰(zhàn)-響應,可以參考之前的文章 《零知識證明之承諾方案》

    • 計算承諾,承諾由兩個集合組成 \(L\) \(R\) ,集合元素計算如下:

    • 計算挑戰(zhàn)(實際上是前面已有知識的哈希值)

      其中, \(m\) 是待簽名的消息,在這里表示交易信息(簽名除外,因為簽名還未生成)

    • 計算響應

    其中, \(\sigma\) 就是環(huán)簽名的簽名值, \(\sigma\)

驗證算法Verify

門羅幣隱私保護之環(huán)簽名

區(qū)塊鏈礦工在收到交易后,會對交易進行簽名驗證。礦工已知 \(R = {P_1, P_2, ..., P_n}\) ,以及環(huán)簽名 \(\sigma = (I, c_1, ..., c_n, r_1, ..., r_n)\) , 簽名驗證Verify算法如下:

  • \(L^{'}\) \(R^{'}\) 為兩個集合, \(\forall i \in [0, n]\)

  • 簽名驗證等式

如果上述等式成立,則簽名有效,否則簽名無效,交易被拒絕。

正確性驗證

  • 計算 \(L^{'}\)

在上述推導中,由于 \(P_s = x_s \cdot G\) ,所以: \(-c_s \cdot x_s \cdot G + c_s \cdot P_s = -c_s \cdot P_s + c_s \cdot P_s = 0\)

  • 計算 \(R^{'}\)

在上述推導中,由于 \(I = x_s \cdot H_p(P_s)\) ,所以: \(-c_s \cdot x_s \cdot H_p(P_s) + c_s \cdot I = -c_s \cdot I + c_s \cdot I = 0\)

  • 計算 \(\sum_{i=0}^{n} c_i\)

由于 \(L^{'} = L\) \(R^{'} = R\) ,所以:

因此,簽名驗證等式成立,簽名有效。

雙花驗證Link

,密鑰鏡像和密鑰對之間的關(guān)系如下:

密鑰鏡像 \(I\) 的計算方式,反映了用戶密鑰和密鑰鏡像之間存在一一對應關(guān)系,而用戶密鑰(x, P)基于隱形地址技術(shù),只使用一次,且與交易綁定。
礦工會記錄所有交易的密鑰鏡像列表,在收到新交易時,會檢查交易中的 \(I\) 是否已存在于列表中,如果存在,則說明該交易的(x, P)已經(jīng)被使用過,是一筆雙花交易,交易被拒絕。

結(jié)語

環(huán)簽名是門羅幣的另一個核心技術(shù),通過環(huán)簽名技術(shù),實現(xiàn)了交易的不可追蹤性。本文簡單介紹了環(huán)簽名的基本概念,并詳細介紹了門羅幣的環(huán)簽名方案,包括密鑰生成、簽名、驗證和雙花驗證等算法。希望通過本文的介紹,讀者對隱私幣的匿名技術(shù)有更進一步的了解。

門羅幣隱私保護使用了多種技術(shù),包括隱形地址、環(huán)簽名、機密交易等,這些技術(shù)共同構(gòu)成了門羅幣的隱私保護體系。在接下來的文章中,我們將繼續(xù)介紹門羅幣的其他隱私保護技術(shù)。

參考文獻

  • 【1】 CryptoNote wiki
  • 【2】 Monero wiki
  • 【3】 Home | Monero - secure, private, untraceable
  • 【4】 Elliptic-curve cryptography
  • 【5】 CryptoNote whitepaper v2.0
  • 【6】 《零知識證明之承諾方案》
小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認同期限觀點或證實其描述。

相關(guān)視頻攻略

更多

掃二維碼進入好特網(wǎng)手機版本!

掃二維碼進入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2024 haote.com 好特網(wǎng)