主頁 > 後端開發 > CRYPTO 2019-論文閱讀:Two-Party ECDSA from Hash Proof Systems and Efficient Instantiations(1)

CRYPTO 2019-論文閱讀:Two-Party ECDSA from Hash Proof Systems and Efficient Instantiations(1)

2020-10-05 22:29:22 後端開發

Two-Party ECDSA from Hash Proof Systems and Efficient Instantiations
譯:基于安全多方計算的兩方橢圓曲線數字簽名

  • 摘要部分
    • 引言
    • 總結


論文地址:https://eprint.iacr.org/2019/503.pdf
因為該篇文章太長,所以將分兩次進行介紹,該篇博文只介紹背景知識、結論等,核心部分推導我將會在下一篇博文中進行介紹,如果翻譯與理解有不對的地方,還請讀者大大們指摘,(部分翻譯內容也會進行增加補充)>-<

摘要部分

ECDSA is a widely adopted digital signature standard. Unfortunately, efficient distributed variants of this primitive are notoriously hard to achieve and known solutions often require expensive zero knowledge proofs to deal with malicious adversaries. For the two party case, Lindell [Lin17] recently managed to get an efficient solution which, to achieve simulation-based security, relies on an interactive, non standard, assumption on Paillier’s cryptosystem. In this paper we generalize Lindell’s solution using hash proof systems. The main advantage of our generic method is that it results in a simulation-based security proof without resorting to any interactive assumptions.
Moving to concrete constructions, we show how to instantiate our framework using class groups of imaginary quadratic fields. Our implementations show that the practical impact of dropping such interactive assumptions is minimal. Indeed, while for 128-bit security our scheme is marginally slower than Lindell’s, for 256-bit security it turns out to be better both in key generation and signing time. Moreover, in terms of communication cost, our implementation significantly reduces both the number of rounds and the transmitted bits without exception.

譯: ECDSA(橢圓曲線數字簽名)是一個被廣泛采用的資料簽名標準,但不幸的是ECDSA的密碼學原語卻很難實作高效的分布式變種方案,且經常需要高昂的零知識證明去處理惡意攻擊,從現有兩方的案例上看,Lindell最近有做出了一個有效的解決方案去實作基于模擬的安全1,該方案依賴于一個互動式非標準的Paillier密碼體制的假設,本論文中我們歸納了Lindell使用hash證明體制的解決方案,而我們的泛用方法的主要優勢在于它無需進行任何互動式的假設即可實作基于模擬的安全,在具體的構造上,我們用虛二次域類群2來展示我們怎么實體化方案架構的,我們的實作表明(在Lindell方案上)洗掉此類的互動式假設的實際影響較小,事實而言,在128-bit安全等級下我們的方案比Lindell的要慢一些,但是在256-bit安全等級下,它在密鑰生成和簽名時間上都比Lindell的方案要好,此外,在通信開銷上,我們的方案顯著減少了輪換次數并且沒有遺漏任何傳輸位元,

引言

引言圖片1
門限密碼學中允許 n n n個使用者以某種方式去共享一個通用密鑰,任何 t t t方( t t t為門限閾值)的子集都可以使用這個通用密鑰去解密或者簽名,這個而任何小于t的聯盟都無能為力去解密或簽名,這個范例的關鍵特征在于它允許使用無需重構的共享密鑰,這意味著每當密鑰被使用(去簽名/解密)時, t t t方子集中人員就必須積極參與,
門限密碼學應用范圍比較廣,從多個簽名者需要簽署同一份檔案到分布式場景下敏感檔案需要被定額人數授權,這種多用途引發了對門限密碼學研究的熱潮,主要表征在1990年早期到2000年早期,產生了最廣泛被使用的門限密碼學方案,因為如下的原因近些年可以看出在這個領域的研究興趣又一次高漲:首先,很多初創公司正在使用這種技術去保護現實生活中的應用程式,此外,對于使用ECDSA作為基礎簽名方案的位元幣和其他加密貨幣,即有安全漏洞就會導致實際的金融損失的數字貨幣類,雖說基于多重簽名的對策已經內置到位元幣中,但它們提供的靈活性較差并且在匿名以及可伸縮性上產生了問題(見[GGN16]),最后,一些20年前被開發出的方案并不能滿足當前應用程式所希望的那樣高效,像ECDSA/DSA簽名就是如此,事實上,對于許多其他方案,快速門限變種(例如RSA解密/簽名和ECIES解密)是已知的構造其簽名的有效門限變種比證明它們要困難得多,這種不對等的原因似乎是需要從一個未知 k k k中反推計算出 k ? 1 m o d q k^{-1}mod q k?1modq的結果困難造成的(這邊意譯),為了解釋為何如此,讓我們首先簡單回顧一下ECDSA是如何實際運作的,公鑰是一個橢圓曲線上的點 Q Q Q并且簽名密鑰是 x x x,像 Q ← x P Q\leftarrow xP QxP,其中 P P P是一個橢圓曲線上基于 q q q階的生成的點,為了簽名訊息 m m m首先要用一些合適的hah函式 H H H對其進行hash處理,然后根據以下演算法步驟進行處理:

  1. Z / q Z Z/qZ Z/qZ中選擇亂數 k k k
  2. 計算 R ← k P R\leftarrow kP RkP
  3. r ← r x m o d q r\leftarrow r_{x}\ mod\ q rrx? mod q 其中 R = { r x , r y } R=\{r_{x},\ r_{y}\} R={rx?, ry?}
  4. 設定 s ← k ? 1 ( H ( m ) + r x ) m o d q s\leftarrow k^{-1}(H(m) + rx)\ mod\ q sk?1(H(m)+rx) mod q
  5. 輸出 ( r , s ) (r, s) (r,s)
    引言圖片2
    現在,最自然實作以上演算法分配步驟應是在參與方之間分享并累加 x x x,然后開始用一個多方計算協議去產生簽名,在兩方案例中,這意味著參與方需開始共享 x 1 x_1 x1? x 2 x_2 x2?使得 Q = ( x 1 + x 2 ) P Q=(x_1+x_2)P Q=(x1?+x2?)P,參與方可以繼續產生亂數 k 1 k_1 k1? k 2 k_2 k2?進行共享,使得 R = ( k 1 + k 2 ) P R=(k_1+k_2)P R=(k1?+k2?)P,然而在這一點上如何有效地計算 k 1 ′ , k 2 ′ k^{'}_1,k^{'}_2 k1?,k2?使得 k 1 ′ + k 2 ′ = k ? 1 m o d q k^{'}_1+k^{'}_2=k^{-1}\ mod\ q k1?+k2?=k?1 mod q并不是很清晰,
    從論文[MR04]開始,兩方ECDSA簽名協議開始在 x x x k k k間采用共通乘法方式共享,構建的基本思路是非常簡單的,參與方起初持有 x 1 x_1 x1? x 2 x_2 x2?使得 Q = x 1 x 2 P = x P Q=x_1x_2P=xP Q=x1?x2?P=xP,每當新簽名產生時,他們產生亂數 k 1 , k 2 k_1,k_2 k1?k2?使得 R = k 1 k 2 P = k P R=k_1k_2P=kP R=k1?k2?P=kP,顯然,這樣的方式將允許獲得反置 k ′ k^{'} k,即 ( k 1 ′ ) ? 1 ( k 2 ′ ) ? 1 = ( k 1 k 2 ) ? 1 m o d q (k^{'}_1)^{-1}(k^{'}_2)^{-1}=(k_1k_2)^{-1}\ mod\ q (k1?)?1(k2?)?1=(k1?k2?)?1 mod q,最后他們將會用Paillier的同態加密方案去秘密添加他們自己秘密并完成簽名,舉例而言,就是參與方 P 1 P_1 P1?計算 c 1 ← E n c ( ( k 1 ) ? 1 H ( m ) ) c_1\leftarrow Enc((k_1)^{-1}H(m)) c1?Enc((k1?)?1H(m)) c 2 ← E n c ( ( k 1 ) ? 1 x 1 r ) c_2\leftarrow Enc((k_1)^{-1}x_1r) c2?Enc((k1?)?1x1?r),然后 P 2 P_2 P2?可以利用方案中的同態特性完成簽名,如下:
    c ← c 1 k 2 ? 1 c 2 k 2 ? 1 x 2 = E n c ( ( k 1 ) ? 1 H ( m ) ) E n c ( ( k 1 ) ? 1 x 1 r ) = E n c ( k ? 1 ( H ( m ) + x r ) ) c\leftarrow c_1^{k_2^{-1}}c_2^{k_2^{-1}x_2 }= Enc((k_1)^{-1}H(m))Enc((k_1)^{-1}x_1r)=Enc(k^{-1}(H(m)+xr)) cc1k2?1??c2k2?1?x2??=Enc((k1?)?1H(m))Enc((k1?)?1x1?r)=Enc(k?1(H(m)+xr))
    引言圖片3
    P 2 P_2 P2?通過將 c c c發回給 P 1 P_1 P1?來結束協議,現在,如果 P 1 P_1 P1?也知道解密密鑰,那么他就能夠從 c c c中提取簽名 s ← k ? 1 ( H ( m ) + x r ) s\leftarrow k^{-1}(H(m)+xr) sk?1(H(m)+xr)
    但是,證明各方都正確遵守了協議是很難的,最初的嘗試[MR04]通過高昂的零知識證明解決了這一問題,此外最近Lindell在[Lin17]中提供了一個更加簡便和有效的協議,Lindell的協議的關鍵思路是有觀察到在上述兩方ECDSA簽名協議中,不誠實方能制造非常小的麻煩,但事實上,如果在準備階段, P 2 P_2 P2?同時收到了Paillier方案中要用的加密密鑰和 P 1 P_1 P1?的簽名密鑰的加密 E n c ( x 1 ) Enc(x_1) Enc(x1?),那么根本上來說,一個不誠實的 P 1 P_1 P1?能做的就是參與 R ← k 1 k 2 P R\leftarrow k_1k_2P Rk1?k2?P的產生,但需要注意后者建立在DH協議基礎之上,是非常有效且魯棒性的協議,
    引言圖片4
    另一方面,如果 P 2 P_2 P2?不誠實,那么她能做的就是(除了再次產生一個R)去構造一個有損害的 c c c作為最終反饋給 P 1 P_1 P1?的結果,但是,當 P 2 P_2 P2?真的嘗試那樣做的話,那么通過簡單驗證結果簽名的合法性將很容易檢測到它的惡意行為,
    但是實際證明的話將會引發一些問題,首先第一個問題是由Paillier的明文空間是 Z / N Z Z/NZ Z/NZ N N N是一個大合數)而ECDSA簽名依賴于 Z / q Z Z/qZ Z/qZ q q q是素數),因此為了避免這個不一致的問題,需要確保將 N N N取得足夠大,以便在整個簽名程序中不會發生wrap-around情形3,這也意味著將 E n c ( x 1 ) Enc(x_1) Enc(x1?)發送給 P 2 P_2 P2?時, P 1 P_1 P1?需要證明明文 x 1 x_1 x1?在正確的范圍內(即足夠小),
    在此證明中使用Paillier加密會產生一個微小的問題,事實上,如果要使用該方案在實際和模擬的執行中分辨敵手的不可區分性,似乎有必要設定一個關于Paillier密碼體系不可區分性的規約, 這意味著必須設計一種證明技術,該技術可以成功使用Paillier加密方案而無需知道相應的密鑰, 根據Lindell的協議,在設計基于模擬的安全策略來應對有惡意參與方 P 2 P_2 P2?時會出現問題, 在這種情形下, P 2 P_2 P2?確實可能會發送一個錯誤的密文 c c c(即不對簽名進行加密)而模擬器根本無法將其識別為錯誤的密文,
    Lindell [Lin17]提出了兩種可替代的證明來克服這一問題, 第一個依靠一個基于博弈的定義,并通過允許仿真模擬器例外終止來避免該問題,概率取決于已提出簽名 q s q_s qs?的數量, 但這似乎導致了不緊密的安全性證明(因為規約減少了一個 q s q_s qs?因子), 第二個證明是基于模擬的定義避免例外終止,但需要引入有關Paillier加密案的新的互動式的非標準假設,
    因此,可以說,盡管該領域最近有取得了進展,但仍然存在以下公開的問題:
    是否有可能設計出一種實用的兩方ECDSA簽名協議(兩者都就計算效率和帶寬消耗而言)不需要互動性假設并允許一個嚴密的安全規約?

總結

總結圖片
受到Lindell方案的啟發,我們提出了第一個哈希證明系統的兩方ECDSA簽名的通用構造,系統構造是基于同質模數的,理論上來說,由于底層語意安全的同態加密方案的結構,我們的構造可以實作基于模擬的安全性證明,該證明即嚴格且無需互動性假設,事實上而言,我們使用CL框架從虛數二次域類組提供詳細的實體化案并用C實作,與Lindell的基于Paillier的方案相比,在高級別的安全性方面,它產生了更好的性能;在標準級別上(128bit),它具有同樣數量級,我們的解決方案在192bit以后的安全等級上比Lindell的運算要快,虛二次域中理想4算術的進步可能會帶來改進(見[IJS10]實體)基于類組的可驗證延遲功能也應激發該領域的最新研究(例如Chia 網路[Chi]也為此展開了競爭),


這一段有點翻譯和理解有些困難,后續進行更新改進,


最后,我們的作業聚焦在兩方案例下,我們相信我們構造方案的想法將引發門限ECDSA簽名案例的改善,我們留至下一步作業,


  1. 密碼學證明安全性有兩種方式:一種是基于博弈的安全 [Game-based Security],另一種是基于模擬的安全 [Simulation-based Security] ,關于兩者的區別分析請移至以下連接參考; ??

  2. 代數數論中的一個常見概念,在代數數論中,二次域是在有理數域 Q \mathbb{Q} Q上次數為二的數域,二次域可以唯一地表成 Q ( d ) \displaystyle \mathbb {Q} ({\sqrt {d}}) Q(d ?),其中 d d d無平方數約數,若 d > 0 d>0 d>0,稱之為實二次域;否則稱為虛二次域或復二次域,虛實之分在于 Q ( d ) \mathbb {Q} ({\sqrt {d}}) Q(d ?)是否為全實域,wiki百科地址; ??

  3. 當乘法轉換為密文時,稱為warp-around情形(此點后續進行擴充描述) ??

  4. 環論概念 ??

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/158139.html

標籤:java

上一篇:Mac OS 區塊鏈hyperledger環境搭建、環境架構介紹、環境如何用、部署 Chaincode、智能合約的呼叫

下一篇:為什么unordered_map桶的大小是8?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more