日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Shamir 秘密共享方案和Feldman可验证的秘密共享方案

發(fā)布時間:2023/12/1 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 Shamir 秘密共享方案和Feldman可验证的秘密共享方案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

常用的秘密共享方案

        • 首先提出問題——平均工資問題
        • 什么是秘密共享?
        • Shamir秘密共享分案 算法流程
        • 可驗證秘密共享的提出
        • 什么是計算安全?什么是無條件安全?
        • Feldman可驗證的秘密共享

安全多方計算的研究主要是針對無可信第三方的情況下,如何保證各方數(shù)據(jù)安全的同時利用多方數(shù)據(jù)進(jìn)行計算,得到預(yù)期結(jié)果。
安全多方計算不是指某一單獨的協(xié)議, 而是一些關(guān)鍵技術(shù)集合,比如:秘密共享、混淆電路、不經(jīng)意傳輸?shù)鹊取?/p>

今天來記錄一下學(xué)習(xí)Shamir 秘密共享方案 和Feldman可驗證的秘密共享方案的筆記。

首先提出問題——平均工資問題

A、B、C、D 如果在不暴露自己工資的情況下,求得四人的平均工資?

最簡單的方案如下:
1,A生成一個隨機(jī)數(shù),將其與自己的工資相加,用B的公鑰加密發(fā)送給B
2,B用自己的私鑰解密,加進(jìn)自己的工資,然后用C的公鑰加密發(fā)送給C
3,C用自己的私鑰解密,加進(jìn)自己的工資,然后用D的公鑰加密發(fā)送給D
4,D用自己的私鑰解密,加進(jìn)自己的工資,然后用A的公鑰加密發(fā)送給A
5,A用自己的私鑰解密,減去原來的隨機(jī)數(shù)得到工資總和
6,A將工資總和除以人數(shù)得到平均工資,宣布結(jié)果

存在問題:

該協(xié)議假定所有參與者都是誠實的不會謊報工資,A不謊報結(jié)果。

如何保證節(jié)點誠實?且A不謊報結(jié)果?
一般的解決方案是運用比特承諾協(xié)議讓A向B傳送他的隨機(jī)數(shù)但這種方案會導(dǎo)致協(xié)議結(jié)束后,B知道了A的工資。

其他還有什么更好的方案嗎?
秘密分享!

什么是秘密共享?

秘密共享是信息安全和數(shù)據(jù)保密中的重要手段,它在重要信息和秘密數(shù)據(jù)的安全保存、傳輸及合法利用中起著非常關(guān)鍵的作用。
秘密共享由兩個算法——秘密份額的分配算法和秘密的恢復(fù)算法構(gòu)成。
在執(zhí)行秘密份額的分配算法時,分發(fā)者將秘密分割成若干份額在一組參與者中進(jìn)行分配,使得每個參與者都得到關(guān)于該秘密的一個秘密份額;
秘密的恢復(fù)算法保證只有參與者的一些特定的子集才能有效的恢復(fù)秘密,其他子集不能有效地恢復(fù)秘密,甚至得不到關(guān)于秘密任何有用信息[1]。

最早被提出的秘密共享模型是門限類的秘密共享模型,Shamir 秘密共享方案就是一種門限秘密共享模型。
在 (t,n)\ (t,n)?(t,n) 門限秘密共享體制中,秘密的持有者,把秘密分割成n\ n?n 個份額,分別分配于n\ n?n 個參與者,使得只要獲得這n\ n?n 個份額中的至少t\ t?t個才可能有效地恢復(fù)出原來的秘密,而任何少于t\ t?t 個的份額集合都不能恢復(fù)出原來的秘密,得不到關(guān)于原秘密任何有用的信息。

Shamir秘密共享分案 算法流程

一共n\ n?n個節(jié)點(p1\ p_1?p1?,p2\ p_2?p2?,…,pn\ p_n?pn?)擁有自己的秘密值(vi\ v_i?vi? ),如何計算這n\ n?n個節(jié)點秘密的和,即求v1\ v_1?v1?+v2\ v_2?v2?+v3\ v_3?v3?+…+vn\ v_n?vn? ?

基本思路: n個節(jié)點,各自將秘密分成n分,發(fā)給參與計算的其余n-1個節(jié)點,隨后,節(jié)點收到來自其他節(jié)點的秘密碎片,加上自己的共n個,計算碎片的和,將所得的和再次發(fā)給其他參與計算的節(jié)點,等待收到t個來自其他節(jié)點的和之后即可得出最后結(jié)論。

步驟一:隨機(jī)值的共享 ,每個節(jié)點擁有均需一份相同的X\ X?X={x1\ x_1?x1?,x2\ x_2?x2?,…,xn\ x_n?xn?}
步驟二:各節(jié)點pi\ p_i?pi?分別隨機(jī)選擇一個t?1\ t-1?t?1 次的多項式fi\ f_i?fi? ( fi(x)\ f_i(x)?fi?(x) = ai\ a_i?ai? xt?1\ x^{t-1}?xt?1 + bi\ b_i?bi?xt?2\ x^{t-2}?xt?2 + ci\ c_i?ci?xt?3\ x^{t-3}?xt?3 +…+vi\ v_i?vi? ),因此這里加上vi\ v_i?vi? 在內(nèi)一共產(chǎn)生了t\ t?t 個未知數(shù)(ai,bi\ a_i, b_i?ai?,bi?,…),這 t\ t?t 個數(shù)是只有當(dāng)前節(jié)點才會知道的,且每個節(jié)點都會隨機(jī)產(chǎn)生不同的t\ t?t 個未知數(shù),其中t?1\ t-1?t?1 個隨機(jī)數(shù),1個秘密值。
步驟三:各節(jié)點pi\ p_i?pi?根據(jù)自己的多項式fi\ f_i?fi? 和隨機(jī)值X\ X?X確定一組共享值fi(x1)\ f_i(x_1)?fi?(x1?) ,fi(x2)\ f_i(x_2)?fi?(x2?) ,fi(x3)\ f_i(x_3)?fi?(x3?) ,…,fi(xn)\ f_i(x_n)?fi?(xn?) ,分別發(fā)給節(jié)點p1\ p_1?p1?,p2\ p_2?p2?,…,pn\ p_n?pn?。
步驟四:各節(jié)點pi\ p_i?pi?將自己收到的結(jié)果(f1(xi)\ f_1(x_i)?f1?(xi?)、f2(xi)\ f_2(x_i)?f2?(xi?)、f3(xi)\ f_3(x_i)?f3?(xi?)、…、fn(xi)\ f_n(x_i)?fn?(xi?))相加得到 Ri\ R_i?Ri?=(a1\ a_1?a1? +a2\ a_2?a2? + a3\ a_3?a3?+… +an\ a_{n}?an?)xit?1\ x^{t-1}_i?xit?1?+ (b1\ b_1?b1? +b2\ b_2?b2? + b3\ b_3?b3?+… +bn\ b_{n}?bn?)xit?2\ x^{t-2}_i?xit?2? + … + ( v1\ v_1?v1? +v2\ v_2?v2? + v3\ v_3?v3?+… +vn\ v_{n}?vn?) ,并將結(jié)果發(fā)送給其他節(jié)點。
步驟五:節(jié)點收到的Ri(i=0,1,...,t)\ R_i(i=0,1,...,t)?Ri?(i=0,1,...,t) 放在一起就是一個t\ t?t 元 [ (a1\ a_1?a1? +a2\ a_2?a2? + a3\ a_3?a3?+… +an\ a_{n}?an?)、(b1\ b_1?b1? +b2\ b_2?b2? + b3\ b_3?b3?+… +bn\ b_{n}?bn?) 、…、 ( v1\ v_1?v1? +v2\ v_2?v2? + v3\ v_3?v3?+… +vn\ v_{n}?vn?) ]的方程組,節(jié)點收到多于等于t\ t?t 個節(jié)點的R\ R?R結(jié)果就能解出 ( v1\ v_1?v1? +v2\ v_2?v2? + v3\ v_3?v3?+… +vn\ v_{n}?vn?)。

通過分析算法流程可得:
這種方式攻擊者只有同時獲取了步驟一中的共享的隨機(jī)值X\ X?X 及大于等于t\ t?t 個步驟四中的R\ R?R 才能得到原密碼值。

不足:
Shamir秘密共享其實是包含了一些可能不切實際的假設(shè)的——秘密的分發(fā)者和參與者都是誠實的,然而, 在現(xiàn)實生活中, 參與者可能是不誠實, 他可能會故意或是由于一些非主觀因素(如網(wǎng)絡(luò)傳輸錯誤 )提供了錯誤的份額, 這樣會導(dǎo)致也無法正確地恢復(fù)秘密[2]。

可驗證秘密共享的提出

為了檢驗共享的正確性,出現(xiàn)了可驗證的秘密共享方案。 一個正常執(zhí)行的可驗證秘密共享方案能夠保證:在秘密分發(fā)階段, 分發(fā)者發(fā)送給參與者的共享是正確的;在秘密恢復(fù)階段, 參與者提交的共享也是正確的[2]。

Feldman可驗證的秘密共享方案和pederson可驗證秘密共享方案是最早出現(xiàn)的也是現(xiàn)在應(yīng)用最多的兩個秘密共享方案,其中Feldman可驗證秘密共享方案是最早提出的不需要可信機(jī)構(gòu)的計算安全的秘密共享方案,而pederson是最早提出的無條件安全的秘密共享方案[1]。

本文只介紹Feldman。

什么是計算安全?什么是無條件安全?

評估密碼系統(tǒng)安全性主要有三種方法:
(1)無條件安全性
這種評價方法考慮的是假定攻擊者擁有無限的計算資源,但仍然無法破譯該密碼系統(tǒng)。
(2)計算安全性
這種方法是指使用目前最好的方法攻破它所需要的計算遠(yuǎn)遠(yuǎn)超出攻擊者的計算資源水平,則可以定義這個密碼體制是安全的。
(3)可證明安全性
這種方法是將密碼系統(tǒng)的安全性歸結(jié)為某個經(jīng)過深入研究的數(shù)學(xué)難題(如大整數(shù)素因子分解、計算離散對數(shù)等),數(shù)學(xué)難題被證明求解困難。這種評估方法存在的問題是它只說明了這個密碼方法的安全性與某個困難問題相關(guān),沒有完全證明問題本身的安全性,并給出它們的等價性證明[3]。

介紹Feldman可驗證的秘密共享方案前,先介紹一些 涉及到的密碼學(xué)的基本符號和概念:
a|b:表示a能整除b
群:(截圖來自百度百科)

mod運算:模運算,a mod n是a除以n的余數(shù),模運算支持一些算術(shù)運算,本文會用到的是: (a mod p * b mod p) mod p = (a * b) mod p

Feldman可驗證的秘密共享

算法參數(shù)設(shè)置 : p、q是大素數(shù)、且有q | (p-1)、g是 乘法群 Zq?\Z^{*}_qZq?? 中的一個 p階元素,這些參數(shù)都是公開的。
具體協(xié)議如下(在Shamir秘密共享分案的基礎(chǔ)上):

  1. 份額分發(fā)階段:每個節(jié)點pi\ p_i?pi?分發(fā)份額之后,計算并廣播承諾 {αi=gparami\alpha_i = g^{param_i}αi?=gparami? mod q } (g\ g?g 的次數(shù)parami\ param_i?parami?為步驟二中所選的多項式的參數(shù), ai\ a_{i}?ai?,bi\ b_{i}?bi?,ci\ c_{i}?ci? ,…,一共t\ t?t個值)。

  2. 共享驗證:每個節(jié)點 pi\ p_i?pi?檢驗它所接受的fj(xi)(j=0,1,...,n)f_j(x_i) (j=0,1,...,n)fj?(xi?)(j=0,1,...,n)是否滿足等式:gfj(xi)=∏j=0t?1αjxi\ g^{f_j(x_i)} =\prod^{t-1}_{j=0}\alpha_j^{x_i}?gfj?(xi?)=∏j=0t?1?αjxi?? mod q 。如果等式不成立, 那么節(jié)點 pi\ p_i?pi? 所收到的共享fj(xi)\ f_j(x_i)?fj?(xi?)是無效的。
    等式為什么會成立:
    ∏j=0t?1αjximodq=(gparam0xit?1gparam1xit?2gparam3xit?3?gvj)modq=g(ajxit?1+bjxit?2+cjxit?3+vj)modq=gfj(xi)modq\prod^{t-1}_{j=0}\alpha_j^{x_i} mod q =(g^{param_0x^{t-1}_i} g^{param_1x^{t-2}_i} g^{param_3x^{t-3}_i} \cdots g^{v_j}) mod q = g^{(a_jx^{t-1}_i+b_jx^{t-2}_i+c_jx^{t-3}_i+v_j)} mod q = g^{f_j(x_i)} mod q j=0∏t?1?αjxi??modq=(gparam0?xit?1?gparam1?xit?2?gparam3?xit?3??gvj?)modq=g(aj?xit?1?+bj?xit?2?+cj?xit?3?+vj?)modq=gfj?(xi?)modq

  3. 秘密恢復(fù):每一參與者 pi\ p_i?pi?向其他參與者廣播自己的共享Ri\ R_i?Ri?,當(dāng)接受到的R\ R?R 值大于t\ t?t 個,且均被驗證為有效時
    (∏j=0t?1αjxiβjxiγjxi?modq=gRi\prod^{t-1}_{j=0}\alpha_j^{x_i} \beta_j^{x_i} \gamma_j^{x_i} \cdots mod q =g^{R_i}∏j=0t?1?αjxi??βjxi??γjxi???modq=gRi?,α,β,γ,...\alpha,\beta,\gamma,...α,β,γ,...分別為節(jié)點p\ p?p 在份額分發(fā)階段廣播的承諾), 計算出秘密。

這一方案可抵抗 (n-1) /2個惡意的參與者, 由于 αi\alpha_{i}αi?被公開, 所以該方案只是計算安全的(根據(jù)密碼學(xué)中的計算離散對數(shù)的困難性可得 αi=gai\alpha_{i} = g^{a_i}αi?=gai? mod q 中已知g、αi\alpha_{i}αi? 和 q 是很難算出來 ai\ a_i?ai? 的。[2]

博主之前沒接觸過密碼學(xué),這只是我的學(xué)習(xí)筆記,有不對的地方煩請指出,不勝感激!

參考資料:
[1]張福泰, 趙福祥, 王育民. 可驗證秘密分享及其應(yīng)用[J]. 電子學(xué)報, 2002, 30(10):1519-1525.
[2]石潤華, 黃劉生. 一種簡單的可驗證秘密共享方案[J]. 計算機(jī)應(yīng)用, 2006(08):77-79.
[3]https://blog.csdn.net/wangtingyao1990/article/details/79475842

總結(jié)

以上是生活随笔為你收集整理的Shamir 秘密共享方案和Feldman可验证的秘密共享方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。