柚子快報(bào)邀請(qǐng)碼778899分享:基于代理的分布式身份管理方案
目的是使用分布式的聯(lián)合計(jì)算分發(fā)去替換掉區(qū)塊鏈中原有的類第三方可信中心的證書機(jī)制,更加去中心化。
GS-TBK Group Signatures with Time-bound Keys.
CS-TBK 算法 Complete subtree With Time-bound Keys,該算法是用來(lái)輔助檢測(cè)用戶的簽名是否有效,是否在有效期內(nèi)。
一些基本定義 + $ T $:整個(gè)算法的最大的時(shí)間。 + $ BT $:一個(gè)完全二叉樹 + $ t $ :當(dāng)前的時(shí)間。 + $ \tau $:有效時(shí)間,如果$ \tau
算法概述 首先每個(gè)葉子節(jié)點(diǎn)代表一個(gè)時(shí)間$ t $,可以理解為一個(gè)節(jié)點(diǎn)就是一個(gè)時(shí)間段。
算法輸入是一個(gè)二叉樹$ BT
和當(dāng)前的時(shí)間
和當(dāng)前的時(shí)間
和當(dāng)前的時(shí)間 t
,首先定義了兩個(gè)空集合
,首先定義了兩個(gè)空集合
,首先定義了兩個(gè)空集合 X,Y
,選取
,選取
,選取 t-1
這個(gè)葉子節(jié)點(diǎn)(如果
這個(gè)葉子節(jié)點(diǎn)(如果
這個(gè)葉子節(jié)點(diǎn)(如果 t
是第一個(gè)節(jié)點(diǎn),那么就選取
是第一個(gè)節(jié)點(diǎn),那么就選取
是第一個(gè)節(jié)點(diǎn),那么就選取 t
這個(gè)節(jié)點(diǎn)),將對(duì)應(yīng)的
這個(gè)節(jié)點(diǎn)),將對(duì)應(yīng)的
這個(gè)節(jié)點(diǎn)),將對(duì)應(yīng)的 Path(\eta)
存到
存到
存到 X
中,然后對(duì)于每個(gè)
中,然后對(duì)于每個(gè)
中,然后對(duì)于每個(gè) X
中的節(jié)點(diǎn),將其不屬于
中的節(jié)點(diǎn),將其不屬于
中的節(jié)點(diǎn),將其不屬于 X
的右子節(jié)點(diǎn)存入
的右子節(jié)點(diǎn)存入
的右子節(jié)點(diǎn)存入 Y
中,如果
中,如果
中,如果 Y
為空,那么放入根節(jié)點(diǎn),最后輸出
為空,那么放入根節(jié)點(diǎn),最后輸出
為空,那么放入根節(jié)點(diǎn),最后輸出 Y $。
那么這個(gè)算法相當(dāng)于對(duì)于當(dāng)前的時(shí)間$ t
節(jié)點(diǎn),會(huì)存在一個(gè)集合
節(jié)點(diǎn),會(huì)存在一個(gè)集合
節(jié)點(diǎn),會(huì)存在一個(gè)集合 Y
,其中包括了不含
,其中包括了不含
,其中包括了不含 Path(\eta) $的右子樹節(jié)點(diǎn)。如下圖,
若葉子節(jié)點(diǎn)8為例,那么$ X=Path(8)={1,2,4,8}
,
,
, Y={1} $(第一個(gè)節(jié)點(diǎn))
若葉子節(jié)點(diǎn)10為例,那么$ X=Path(9)={1,2,4,9}
,
,
, Y={3,5} $
若葉子節(jié)點(diǎn)11為例,那么$ X=Path(10)={1,2,5,10}
,
,
, Y={3,11} $
若葉子節(jié)點(diǎn)12為例,那么$ X=Path(11)={1,2,5,11}
,
,
, Y={3} $
每個(gè)時(shí)間$ t
都將被分配到一個(gè)葉子節(jié)點(diǎn)(每個(gè)葉子節(jié)點(diǎn)代表一個(gè)時(shí)間),同樣一個(gè)有效時(shí)間
都將被分配到一個(gè)葉子節(jié)點(diǎn)(每個(gè)葉子節(jié)點(diǎn)代表一個(gè)時(shí)間),同樣一個(gè)有效時(shí)間
都將被分配到一個(gè)葉子節(jié)點(diǎn)(每個(gè)葉子節(jié)點(diǎn)代表一個(gè)時(shí)間),同樣一個(gè)有效時(shí)間 \tau
也會(huì)被分配到一個(gè)葉子節(jié)點(diǎn)。而一個(gè)用戶會(huì)被分配到一個(gè)有效期
也會(huì)被分配到一個(gè)葉子節(jié)點(diǎn)。而一個(gè)用戶會(huì)被分配到一個(gè)有效期
也會(huì)被分配到一個(gè)葉子節(jié)點(diǎn)。而一個(gè)用戶會(huì)被分配到一個(gè)有效期 \tau
。那么意味著,如果多個(gè)用戶的
。那么意味著,如果多個(gè)用戶的
。那么意味著,如果多個(gè)用戶的 \tau $是相同的話,那么他們將會(huì)同時(shí)被分配到同一個(gè)葉節(jié)點(diǎn)。
在GS-TBK的應(yīng)用-用戶撤銷管理 主要是管理用戶的撤銷。
$ GS-TBK
中所有的時(shí)間信息都交給一顆擁有最大數(shù)量
中所有的時(shí)間信息都交給一顆擁有最大數(shù)量
中所有的時(shí)間信息都交給一顆擁有最大數(shù)量 T
葉節(jié)點(diǎn)的二叉樹管理,有效期
葉節(jié)點(diǎn)的二叉樹管理,有效期
葉節(jié)點(diǎn)的二叉樹管理,有效期 \tau
和當(dāng)前時(shí)間
和當(dāng)前時(shí)間
和當(dāng)前時(shí)間 t $都會(huì)和一個(gè)葉子節(jié)點(diǎn)綁定在一起。
如果$ \tau
分配到了節(jié)點(diǎn)
分配到了節(jié)點(diǎn)
分配到了節(jié)點(diǎn) \eta
,那么管理員將生成包含所有
,那么管理員將生成包含所有
,那么管理員將生成包含所有 Path(\eta)
節(jié)點(diǎn)的簽名,這些簽名會(huì)發(fā)送給有效期是
節(jié)點(diǎn)的簽名,這些簽名會(huì)發(fā)送給有效期是
節(jié)點(diǎn)的簽名,這些簽名會(huì)發(fā)送給有效期是 \tau
的用戶(
B
T
W
,每個(gè)用戶拿到的是不一樣的,即便是同一個(gè)
的用戶(BTW,每個(gè)用戶拿到的是不一樣的,即便是同一個(gè)
的用戶(BTW,每個(gè)用戶拿到的是不一樣的,即便是同一個(gè) \tau $下的用戶,但都包含同樣的節(jié)點(diǎn)的信息)。
我們說(shuō),當(dāng)$ \tau ,那么代表和 ,那么代表和 ,那么代表和 \tau 綁定的所有用戶都被撤銷了,失效了, i . e . ,葉子節(jié)點(diǎn)左邊的葉子節(jié)點(diǎn)都被撤銷了,以右上圖的 綁定的所有用戶都被撤銷了,失效了,i.e.,葉子節(jié)點(diǎn)左邊的葉子節(jié)點(diǎn)都被撤銷了,以右上圖的 綁定的所有用戶都被撤銷了,失效了,i.e.,葉子節(jié)點(diǎn)左邊的葉子節(jié)點(diǎn)都被撤銷了,以右上圖的 12 節(jié)點(diǎn)為例,那么 節(jié)點(diǎn)為例,那么 節(jié)點(diǎn)為例,那么 8,9,10,12 $都被撤銷了。 接著管理員將生成$ CS-TBK 算法的輸出節(jié)點(diǎn)集合(也就是集合 算法的輸出節(jié)點(diǎn)集合(也就是集合 算法的輸出節(jié)點(diǎn)集合(也就是集合 Y )的一系列簽名信息,并廣播,這些信息稱為 )的一系列簽名信息,并廣播,這些信息稱為 )的一系列簽名信息,并廣播,這些信息稱為 ei_t ( E x p i r e I n f o r m a t i o n ) ,用于后續(xù)的用戶驗(yàn)證。如果 (Expire Information),用于后續(xù)的用戶驗(yàn)證。如果 (ExpireInformation),用于后續(xù)的用戶驗(yàn)證。如果 \tau>t ,那么相關(guān)聯(lián)的用戶前面拿到的簽名里應(yīng)該持有和 ,那么相關(guān)聯(lián)的用戶前面拿到的簽名里應(yīng)該持有和 ,那么相關(guān)聯(lián)的用戶前面拿到的簽名里應(yīng)該持有和 ei_t $中至少一個(gè)相同的節(jié)點(diǎn)的信息。那么如何檢測(cè)是否過(guò)期呢? 還是以上面的圖為例,假設(shè)$ \tau = 11 $,左邊的圖為用戶沒(méi)有過(guò)期,右邊的圖則為過(guò)期。 先看未過(guò)期的圖,首先假設(shè)$ T=10 ,首先那么關(guān)聯(lián)到 11 節(jié)點(diǎn)的用戶將收到來(lái)自管理員的 ,首先那么關(guān)聯(lián)到11節(jié)點(diǎn)的用戶將收到來(lái)自管理員的 ,首先那么關(guān)聯(lián)到11節(jié)點(diǎn)的用戶將收到來(lái)自管理員的 Path(11)={1,2,5,11} 四個(gè)節(jié)點(diǎn)的簽名。在左邊圖里,當(dāng)前時(shí)間為 四個(gè)節(jié)點(diǎn)的簽名。在左邊圖里,當(dāng)前時(shí)間為 四個(gè)節(jié)點(diǎn)的簽名。在左邊圖里,當(dāng)前時(shí)間為 t=10 ,所以 8 和 9 節(jié)點(diǎn)被自然撤銷了,根據(jù) ,所以8和9節(jié)點(diǎn)被自然撤銷了,根據(jù) ,所以8和9節(jié)點(diǎn)被自然撤銷了,根據(jù) CS-TBK 算法, 算法, 算法, 3、5 將被選擇為 將被選擇為 將被選擇為 Y 集合元素輸出,所以 集合元素輸出,所以 集合元素輸出,所以 ei_t 里會(huì)包括 里會(huì)包括 里會(huì)包括 3、5 的簽名信息。此時(shí),用戶自己持有節(jié)點(diǎn) 的簽名信息。此時(shí),用戶自己持有節(jié)點(diǎn) 的簽名信息。此時(shí),用戶自己持有節(jié)點(diǎn) 5 $的簽名即可證明自己的簽名有效,沒(méi)有過(guò)期。再看右邊的圖,當(dāng)前時(shí)間變?yōu)? t=12 ,那么 ,那么 ,那么 ei_t 里將只包括節(jié)點(diǎn) 里將只包括節(jié)點(diǎn) 里將只包括節(jié)點(diǎn) 3 的簽名,而節(jié)點(diǎn) 的簽名,而節(jié)點(diǎn) 的簽名,而節(jié)點(diǎn) 11 關(guān)聯(lián)的用戶并不持有 關(guān)聯(lián)的用戶并不持有 關(guān)聯(lián)的用戶并不持有 3 $節(jié)點(diǎn)的簽名,故,用戶已經(jīng)被撤銷。 GS-TBK 方案 算法組成 1. $ GKeyGen(\lambda) $:輸入安全參數(shù),輸出群公鑰$ gpk $和私鑰$ msk $。設(shè)定一個(gè)注冊(cè)表$ reg $,最大有效期為$ T $(包含在gpk中)。 2. $ Join/Issue() $:用戶與管理員之間的交互算法,用于給新加入的用戶分發(fā)密鑰和設(shè)置有效期。 + $ Join(gpk) $:輸出用戶的簽名密鑰$ gsk_i $,有效期$ \tau_i $,用戶私鑰$ usk_i $。 + $ Issue(msk,reg,\tau_i) $:輸出$ reg $表,表中的每個(gè)元素都會(huì)存儲(chǔ)$ grt_i $ (revocation token) 和有效期$ \tau_i $即,$ reg[i]=(grt_i,\tau_i) $。 3. $ Revoke(gpk,msk,t,reg,RU_t) $:$ RU_t $代表將要被撤銷的用戶集合,$ RL_t $(revocation list),設(shè)定其為空集合,如果$ \tau_i $過(guò)期了被提前撤銷了,那么將對(duì)應(yīng)的$ grt_{i,t} $存儲(chǔ)到$ RL_t $中。然后算法計(jì)算$ ei_t $。最后輸出$ RL_t $和$ ei_t $。 4. $ Sign(gpk,gsk_i,usk_i,m,t,ei_t) $:$ m $代表待簽名的信息,最終輸出簽名$ \sigma $。 5. $ Verify(gpk,t,\sigma,m,RL_t) $:輸出 valid or invalid 。 6. $ Open(gpk,msk,t,reg,\sigma,m,RL_t) $:輸出用戶的身份。 撤銷方案 前面已經(jīng)簡(jiǎn)單提過(guò)一下,現(xiàn)在具體描述一下。撤銷主要分為自然撤銷和提前撤銷,前面描述的主要是自然撤銷的一思路。 首先時(shí)間管理還是根據(jù)一顆二叉樹,每一個(gè)節(jié)點(diǎn)都會(huì)跟一個(gè)域中的元素綁定,方便計(jì)算。 (這里不需要理解參數(shù)具體含義,知道有這個(gè)東西就好) 自然撤銷 假定$ Path(\eta)=(u_!,\dots,u_l),u_l=\eta $,集合中的每個(gè)元素都是一個(gè)節(jié)點(diǎn),它與一個(gè)域中的元素綁定在一起。 分發(fā)簽名:前面說(shuō)過(guò),在用戶分配到有效期$ \tau 之后,管理員會(huì)生成所有 之后,管理員會(huì)生成所有 之后,管理員會(huì)生成所有 Path(\eta) 節(jié)點(diǎn)的簽名并發(fā)送給用戶,這個(gè)簽名就是 節(jié)點(diǎn)的簽名并發(fā)送給用戶,這個(gè)簽名就是 節(jié)點(diǎn)的簽名并發(fā)送給用戶,這個(gè)簽名就是 gsk_i = \left(\left{\left(A_{j}, \xi_{j}, \zeta_{j}\right), u_{i}\right}_{j \in[1, \ell]}\right) , , , Path(\eta) 中有多少個(gè)節(jié)點(diǎn)就會(huì)有多少個(gè) 中有多少個(gè)節(jié)點(diǎn)就會(huì)有多少個(gè) 中有多少個(gè)節(jié)點(diǎn)就會(huì)有多少個(gè) A_j ,每個(gè) ,每個(gè) ,每個(gè) A_j 都存儲(chǔ)了兩個(gè)重要信息,即節(jié)點(diǎn) 都存儲(chǔ)了兩個(gè)重要信息,即節(jié)點(diǎn) 都存儲(chǔ)了兩個(gè)重要信息,即節(jié)點(diǎn) u 和用戶自選的 和用戶自選的 和用戶自選的 x (包含在 (包含在 (包含在 X $中)。分發(fā)過(guò)期信息:在到達(dá)一個(gè)當(dāng)前時(shí)間$ t 的時(shí)候,管理員會(huì)執(zhí)行 的時(shí)候,管理員會(huì)執(zhí)行 的時(shí)候,管理員會(huì)執(zhí)行 CS-TBK ,然后對(duì)結(jié)果計(jì)算簽名,也就是過(guò)期信息 ,然后對(duì)結(jié)果計(jì)算簽名,也就是過(guò)期信息 ,然后對(duì)結(jié)果計(jì)算簽名,也就是過(guò)期信息 ei_t 。假設(shè) 。假設(shè) 。假設(shè) CS-TBK 結(jié)果為 結(jié)果為 結(jié)果為 Y = (v_1,\dots,v_{num}) ,那么計(jì)算的 ,那么計(jì)算的 ,那么計(jì)算的 ei_t = \left{\left(B_{i, t}, \xi_{i}^{\prime}, \zeta_{i}^{\prime}\right)\right}_{i \in[1, \text { num }]} ,同樣, ,同樣, ,同樣, Y 有多少個(gè)節(jié)點(diǎn)就會(huì)有多少個(gè) 有多少個(gè)節(jié)點(diǎn)就會(huì)有多少個(gè) 有多少個(gè)節(jié)點(diǎn)就會(huì)有多少個(gè) A_j ,每個(gè) ,每個(gè) ,每個(gè) A_j 都存儲(chǔ)了兩個(gè)重要信息,即節(jié)點(diǎn)信息 都存儲(chǔ)了兩個(gè)重要信息,即節(jié)點(diǎn)信息 都存儲(chǔ)了兩個(gè)重要信息,即節(jié)點(diǎn)信息 v 和時(shí)間 和時(shí)間 和時(shí)間 t $。驗(yàn)證:在前面$ CS-TBK 的描述中已經(jīng)說(shuō)明,如果用戶沒(méi)有過(guò)期,也就是 的描述中已經(jīng)說(shuō)明,如果用戶沒(méi)有過(guò)期,也就是 的描述中已經(jīng)說(shuō)明,如果用戶沒(méi)有過(guò)期,也就是 \tau>t , , , \tau 在 在 在 t 的右邊,那么此時(shí)會(huì)存在一個(gè)節(jié)點(diǎn) 的右邊,那么此時(shí)會(huì)存在一個(gè)節(jié)點(diǎn) 的右邊,那么此時(shí)會(huì)存在一個(gè)節(jié)點(diǎn) u \in Path(\eta) \cap Y ,這個(gè)時(shí)候用戶就可以通過(guò)零知識(shí)證明,證明自己的 ,這個(gè)時(shí)候用戶就可以通過(guò)零知識(shí)證明,證明自己的 ,這個(gè)時(shí)候用戶就可以通過(guò)零知識(shí)證明,證明自己的 gsk_i 和 和 和 ei_t $中存在相同節(jié)點(diǎn)。 提前撤銷 實(shí)質(zhì)是給被撤銷的用戶做了一個(gè)標(biāo)識(shí),后續(xù)通過(guò)驗(yàn)證簽名來(lái)判定是否有效。 這里會(huì)涉及到一個(gè)橢圓雙曲線映射,有如下圖基本性質(zhì), 有三個(gè)群$ \mathbb{G}_1,\mathbb{G_2},\mathbb{G_t} ,滿足 ,滿足 ,滿足 \mathbb{G}_1 \times \mathbb{G_2} \rightarrow \mathbb{G_T} ,映射函數(shù)為 ,映射函數(shù)為 ,映射函數(shù)為 e() , , , \widetilde{g},\widehat{g} 分別取自是 分別取自是 分別取自是 \mathbb{G}_1,\mathbb{G_2} $。 提前撤銷的用戶將被提前存儲(chǔ)在$ RU_t 中。然后會(huì)計(jì)算對(duì)應(yīng)用戶的 中。然后會(huì)計(jì)算對(duì)應(yīng)用戶的 中。然后會(huì)計(jì)算對(duì)應(yīng)用戶的 grt_{i,t} 并放入 并放入 并放入 RL_t 中,驗(yàn)證者通過(guò)依此檢測(cè) 中,驗(yàn)證者通過(guò)依此檢測(cè) 中,驗(yàn)證者通過(guò)依此檢測(cè) RL_t 中的 中的 中的 grt_{i,t} $是否滿足映射關(guān)系來(lái)判定是否提前過(guò)期。具體如下, 在$ Join/Issue \ phase $ ,管理員存儲(chǔ)了$ grt_i = \widetilde{X}_i = \widetilde{g}^{x_i=usk_i} \in \mathbb{G}_1 ,在到達(dá)時(shí)間 ,在到達(dá)時(shí)間 ,在到達(dá)時(shí)間 t 的時(shí)候,管理員會(huì)計(jì)算一個(gè) 的時(shí)候,管理員會(huì)計(jì)算一個(gè) 的時(shí)候,管理員會(huì)計(jì)算一個(gè) \widetilde{h}_t = \widetilde{g}^{y_t} \in \mathbb{G}_1 和 和 和 \widehat{h}_t = \widehat{g}^{y_t}\in \mathbb{G}_2 $,此時(shí)會(huì)存在一個(gè)映射關(guān)系,即 $ e\left(\widetilde{h}{t}, \widehat{g}\right)=e\left(\widetilde{g}^{y{t}}, \widehat{g}\right)=e\left(\widetilde{g}, \widehat{g}^{y_{t}}\right)=e\left(\widetilde{g}, \widehat{h}_{t}\right) $。滿足了,即可代表被撤銷了。 在$ Sign \ phase ,產(chǎn)生的群簽名 ,產(chǎn)生的群簽名 ,產(chǎn)生的群簽名 \sigma 會(huì)包含 會(huì)包含 會(huì)包含 \widetilde{h}t\beta,\widetilde{g}{d(x_i+\beta)} ,假設(shè)某用戶被提前撤銷了,那么群管理員會(huì)計(jì)算 ,假設(shè)某用戶被提前撤銷了,那么群管理員會(huì)計(jì)算 ,假設(shè)某用戶被提前撤銷了,那么群管理員會(huì)計(jì)算 grt{i,t} = grt_i{y_t}=\widetilde{h}_t{x_i} ,然后將它存到 ,然后將它存到 ,然后將它存到 RL_t 中,此時(shí)的 中,此時(shí)的 中,此時(shí)的 grt_{i,t} $會(huì)滿足一個(gè)映射關(guān)系,即 $ e(grt_{i,t}\widetilde{h}{t}{\beta},\widehat{g}3ih7pjjnjzpn)=e(\widetilde{h}{t}{x_{i}+\beta},\widehat{g}3ih7pjjnjzpn)=e(\widetilde{g}{y_{t}(x_{i}+\beta)},\widehat{g}3ih7pjjnjzpn)=e(\widetilde{g}{d(x_i+\beta)},\widehat{g}{y_t})=e(\widetilde{g}^{d(x_i+\beta)},\widehat{h}_t) $ 驗(yàn)證者通過(guò)檢測(cè)是否滿足上面等式來(lái)判定該用戶的簽名是否過(guò)期,滿足則用戶存在于撤銷名單中,則簽名無(wú)效。 分布式GS-TBK 思路 方案中加入了一個(gè)代理節(jié)點(diǎn),用于減少通信的開(kāi)銷。 (以下表述中,委員會(huì) = 管理員= Node,代理 = Proxy, 用戶 = User) Setup Phase 方案思路 這個(gè)階段主要是信息的初始化以及連接的建立。 代理 Proxy 代理節(jié)點(diǎn)初始化自己的信息(門限信息,通信連接信息等),生成樹。 委員會(huì) Node 委員會(huì)節(jié)點(diǎn)初始化自己的信息(包含生成 CL 同態(tài)密鑰對(duì),通信連接信息,門限信息等等),接著所有委員會(huì)節(jié)點(diǎn)會(huì)將自己的同態(tài)公鑰P2P發(fā)給代理服務(wù)器,然后代理服務(wù)器會(huì)對(duì)其進(jìn)行排序,然后返回給委員會(huì)公鑰集合以及相應(yīng)的序號(hào),便于節(jié)點(diǎn)建立連接 代碼思路 1. Proxy 加載自己的配置完成初始化,生成樹,并為葉子節(jié)點(diǎn)分配時(shí)間,設(shè)定有效期,開(kāi)啟監(jiān)聽(tīng),等待節(jié)點(diǎn)連接。 2. 所有 Nodes 加載自己的配置完成初始化,然后與 Proxy 建立連接,連接后**P2P**發(fā)送自己的PK和監(jiān)聽(tīng)地址給Proxy。 3. Proxy 收到所有的 PK 后,對(duì)其排序,然后返回一個(gè) NodeInfo list,包含參與的Node id,監(jiān)聽(tīng)地址和PK,同時(shí)還將發(fā)送生成好的tree信息,廣播給所有的 Nodes。 4. 所有Nodes根據(jù)收到的NodeInfo list 和對(duì)應(yīng)的 Node 建立 p2p 連接,完成信道搭建。信道搭建好后將句柄和對(duì)應(yīng)id號(hào)存儲(chǔ)下來(lái),便于消息的發(fā)送。 5. 所有Nodes發(fā)送階段結(jié)束Flag,Proxy收到后也發(fā)送一個(gè)結(jié)束Flag。 GKeyGen Phase 方案思路 這個(gè)階段主要需要生成公鑰和四把私鑰。 上面的圖片是非分布式的方案原型,接下來(lái)將其拆解為分布式包含代理的版本。 主要的不同來(lái)自于四把私鑰$ \gamma_A,\gamma_B,\gamma_O,\gamma_C 的生成,不是隨機(jī)選取,而是通過(guò)分布式密鑰生成( D K G )。最終的結(jié)果是每個(gè)委員會(huì)節(jié)點(diǎn)將持有四把私鑰的分各自一部分碎片( 的生成,不是隨機(jī)選取,而是通過(guò)分布式密鑰生成( DKG )。最終的結(jié)果是每個(gè)委員會(huì)節(jié)點(diǎn)將持有四把私鑰的分各自一部分碎片( 的生成,不是隨機(jī)選取,而是通過(guò)分布式密鑰生成(DKG)。最終的結(jié)果是每個(gè)委員會(huì)節(jié)點(diǎn)將持有四把私鑰的分各自一部分碎片( (t,n) $share )。 另外需要再加一把密鑰$ \gamma_C $,此密鑰和前面的三把密鑰生成一樣的,用于后面的 Open Phase 中公開(kāi)用戶的身份 公共參數(shù):$ pp = ((G_1,G_2,G_T,e,g, \hat{g}),f, \tilde g, g_2, h_0, h_1, h_2 \leftarrow \mathbb{Z}_q,H,H’) $ 聯(lián)合計(jì)算參數(shù): $ (\gamma_A, \gamma_B, \gamma_O, \gamma_C) \leftarrow DKG(pp, n, t, CL_{PK}, s) $ Phase one 代理 Proxy 廣播發(fā)送給委員會(huì)節(jié)點(diǎn)階段開(kāi)始flag信息。計(jì)算出$ GPK 中除了 中除了 中除了 vk_A = \hat g^{\gamma_A},vk_B = \hat g{\gamma_B},g_1=f{\gamma_O} $的部分,并選擇出參與節(jié)點(diǎn)。然后一并廣播發(fā)送給委員會(huì)節(jié)點(diǎn) 委員會(huì) Node 收到flag后,也P2P對(duì)代理發(fā)送一個(gè)階段開(kāi)始Flag信息。每個(gè)委員會(huì)節(jié)點(diǎn)自選隨機(jī)數(shù)作為私鑰$ u_i ,然后計(jì)算自己的公鑰 ,然后計(jì)算自己的公鑰 ,然后計(jì)算自己的公鑰 y_i=g^{u_i} $,并對(duì)該公鑰做一個(gè)哈希承諾,在整個(gè)委員會(huì)集體里進(jìn)行廣播該承諾。 Phase two 委員會(huì) Node 每個(gè)委員會(huì)節(jié)點(diǎn)會(huì)收集上一輪所有的廣播信息,進(jìn)行承諾驗(yàn)證計(jì)算出整體多項(xiàng)式的公鑰$ y=\prod y_i $接著根據(jù)自己自選的$ a_0 = u_i 進(jìn)行 F e l d m a n V s s ,生成多項(xiàng)式 進(jìn)行 Feldman Vss,生成多項(xiàng)式 進(jìn)行FeldmanVss,生成多項(xiàng)式 f_i(x)=a_o+a_1x+\dots a_{t-1}x^{t-1} $, 計(jì)算出多項(xiàng)式系數(shù)承諾$ c_{i_0}=g{a_0},c_{i_1}=g{a_1},\cdots,c_{i_{t-1}}=g^{a_{t-1}} $計(jì)算出對(duì)應(yīng)節(jié)點(diǎn)的 $ (t,n) $share $ x_{ij}=f_i(j) $。對(duì)委員會(huì)節(jié)點(diǎn)的share使用對(duì)應(yīng)的 CL 公鑰進(jìn)行可驗(yàn)證加密得到$ CL_{Enc}(x_{ij},pk_j) ,然后做零知識(shí)證明得到 C L D L P r o o f ,該證明目的是證明 C L 密文中的 ,然后做零知識(shí)證明得到 CLDLProof,該證明目的是證明CL 密文中的 ,然后做零知識(shí)證明得到CLDLProof,該證明目的是證明CL密文中的 x_{ij} 就是 就是 就是 g^{x{ij}} 中的 中的 中的 x_{ij} $。然后將 CL 密文和對(duì)應(yīng)的 CLDLProof 發(fā)送給代理節(jié)點(diǎn)。P2P發(fā)給代理節(jié)點(diǎn)加密的 share,CLDLProof 和 多項(xiàng)式系數(shù)承諾。 Phase three 代理 Proxy 代理節(jié)點(diǎn)對(duì)收到的 CLDLProof 進(jìn)行驗(yàn)證。代理節(jié)點(diǎn)首先將收集到的多項(xiàng)式系數(shù)承諾進(jìn)行合成,$ \prod c_{i_0},\prod c_{i_1},\dots \prod c_{i_{t-1}} ,得到整體多項(xiàng)式的系數(shù)承諾 ,得到整體多項(xiàng)式的系數(shù)承諾 ,得到整體多項(xiàng)式的系數(shù)承諾 c_o,c_1,\dots,c_{t-1} $。代理節(jié)點(diǎn)將收到的每個(gè)委員會(huì)節(jié)點(diǎn)的$ CL_{Enc}(x_{ij},pk_j) 合成 合成 合成 Enc(x_j)=CL_{Enc}(x_{j},pk_j) = \sum CL_{Enc}(x_{ij},pk_j) $.P2P發(fā)送給對(duì)應(yīng)的委員會(huì)節(jié)點(diǎn) 合成的加密share 以及 合成的多項(xiàng)式承諾。 Phase four 委員會(huì) Node 委員會(huì)節(jié)點(diǎn)解密收到的 $ x_j = CL_{Dec}(Enc(x_j),sk_j) $委員會(huì)節(jié)點(diǎn)收到的$ x_j 的一致性進(jìn)行驗(yàn)證,即 的一致性進(jìn)行驗(yàn)證,即 的一致性進(jìn)行驗(yàn)證,即 g{x_j}=g{S+a_1j+a_2{j^2} \cdots+a_t{j^{t-1}}} =c_0c_1jc_2{j^2}\cdots c_t{j{t-1}} $,將最后的$ x_j $存儲(chǔ)下來(lái)。 以上四個(gè)階段稱為一把密鑰的分布式密鑰生成(DKG)。 由于 **Gkeygen **有四把密鑰所有,上述過(guò)程需要并行的執(zhí)行四次,四次后每個(gè)節(jié)點(diǎn)得到私鑰碎片$ \gamma_{A_i},\gamma_{B_i},\gamma_{O_i},\gamma_{C_i} $。 接下來(lái)是計(jì)算公鑰 ****$ GPK $ Phase five 委員會(huì) Node 委員會(huì)節(jié)點(diǎn)使用零知識(shí)證明,證明$ \hat g^{\gamma_{A_i}},\hat g{\gamma_{B_i}},f{\gamma_{O_i}} 它們?nèi)齻€(gè)中的 它們?nèi)齻€(gè)中的 它們?nèi)齻€(gè)中的 \gamma_{A_i},\gamma_{B_i},\gamma_{O_i} 和在前面的 P h a s e o n e 中,委員會(huì)節(jié)點(diǎn)公開(kāi)過(guò)三個(gè) 和在前面的 Phase one 中,委員會(huì)節(jié)點(diǎn)公開(kāi)過(guò)三個(gè) 和在前面的Phaseone中,委員會(huì)節(jié)點(diǎn)公開(kāi)過(guò)三個(gè) g{\gamma_{A_i}},g{\gamma_{B_i}},g^{\gamma_{O_i}} $中的三個(gè)相同 1. 具體方法是 委員會(huì)節(jié)點(diǎn)(Prover,P)和代理節(jié)點(diǎn)(Verifier,V)之間 1. P 發(fā)送給 V $ \hat g^{\gamma_{A_i}},\hat g^{\gamma_{B_i}},f^{\gamma_{O_i}} $ 2. P 從域中任意選擇一個(gè)$ t\in \mathbb{Z}_p $,計(jì)算$ g^t,\hat g^t,f^t $ 3. P 計(jì)算挑戰(zhàn)$ e = Hash\{g,\hat g,f,g^{\gamma_{A_i}},g^{\gamma_{B_i}},g^{\gamma_{O_i}},\hat g^{\gamma_{A_i}},\hat g^{\gamma_{B_i}},f^{\gamma_{O_i}},g^t,\hat g^t,f^t\} $ 4. P 計(jì)算$ \begin{aligned} z_{\gamma_{A_i}}=t+e\gamma_{A_i}\ z_{\gamma_{B_i}}=t+e\gamma_{B_i}\ z_{\gamma_{O_i}}=t+e\gamma_{O_i} \end{aligned} $ 5. P 發(fā)送給 V,proof: $ {g^t,\hat gt,ft,e,z_{\gamma_{A_i}},z_{\gamma_{B_i}},z_{\gamma_{O_i}}} $ 6. V 驗(yàn)證$ \begin{aligned} g^z\stackrel{?}= g^t \cdot (g{\gamma_{A_i}})e \ \hat g ^z\stackrel{?}= \hat g^t \cdot (\hat g{\gamma_{A_i}})e \end{aligned} , , , \begin{aligned} g^z\stackrel{?}= g^t \cdot (g{\gamma_{B_i}})e \ \hat g ^z\stackrel{?}= \hat g^t \cdot (\hat g{\gamma_{B_i}})e \end{aligned} , , , \begin{aligned} g^z\stackrel{?}= g^t \cdot (g{\gamma_{O_i}})e \ f ^z\stackrel{?}= f^t \cdot (f{\gamma_{O_i}})e \end{aligned} $ P2P發(fā)送給代理 proof 和$ \hat g^{\gamma_{A_i}},\hat g{\gamma_{B_i}},f{\gamma_{O_i}} $。 代理 Proxy 驗(yàn)證ZKP,也就是前面的 f 步驟,然后聚合計(jì)算出$ \hat g^{\gamma_{A}}=\prod \hat g^{\gamma_{A_i}},\hat g^{\gamma_{B}}=\prod \hat g{\gamma_{B_i}},f{\gamma_{O}}=\prod f^{\gamma_{O_i}} , ? ? 廣播 ? ? 發(fā)送給委員會(huì),然后自行組合出完整的 ,**廣播**發(fā)送給委員會(huì),然后自行組合出完整的 ,??廣播??發(fā)送給委員會(huì),然后自行組合出完整的 GPK $。廣播給委員會(huì) Phase six 委員會(huì) Node 接收組合出完整的$ GPK $。 Join/Issue Phase  signer 對(duì)應(yīng)的就是用戶 User。這里需要計(jì)算出每個(gè)用戶的$ gsk_i $由一組BBS簽名和相關(guān)參數(shù),然后管理員需要存儲(chǔ) Reg。 代碼的demo實(shí)現(xiàn)里,達(dá)到了可以并發(fā)多個(gè)用戶。 方案思路 **Phase one** 用戶與代理建立連接,發(fā)送一個(gè)開(kāi)始flag+自身ip代理P2P發(fā)送公鑰給用戶 Phase two 用戶 User 收到公鑰后,用戶初始化自己的信息(CL 同態(tài)密鑰對(duì),自選的私鑰$ x_i ,和計(jì)算的公鑰 ,和計(jì)算的公鑰 ,和計(jì)算的公鑰 X_i,\tilde X_i $等等)向代理節(jié)點(diǎn)提出申請(qǐng),也就是P2P發(fā)送身份信息$ (pk,X_i,\tilde X) $和承諾信息 代理 Proxy 驗(yàn)證用戶的承諾,如果通過(guò),則再將承諾和身份信息$ \tau_i,grt_i $廣播轉(zhuǎn)發(fā)給參與委員會(huì)。對(duì)每一個(gè) Path 算法算出的樹節(jié)點(diǎn)都計(jì)算出一個(gè)簽名的底數(shù)$ Base = gh_{0}{\zeta_j}h_{1}{u_j}X_i $然后保存。 參與委員會(huì) Node 驗(yàn)證用戶的承諾。每個(gè)委員會(huì)參與節(jié)點(diǎn)之間開(kāi)始初始化參數(shù)(選擇隨機(jī)數(shù)$ k_i,\xi_{j_i} , 生成 M T A 參數(shù) ,生成 MTA 參數(shù) ,生成MTA參數(shù) a,b $等) 進(jìn)行 MTA 兩兩計(jì)算,最終每個(gè)節(jié)點(diǎn)將得到$ ni_{share}=(\xi_{j}+\gamma_A)k $ 的一部分(三輪)。使用用戶的CL公鑰對(duì)$ k_i 進(jìn)行加密得到 進(jìn)行加密得到 進(jìn)行加密得到 C_{k_i}=CL_{Enc}(k_i,pk) $P2P發(fā)送給代理節(jié)點(diǎn)$ C_{k_i},pi_{share},\xi _{j_i} $ 這里采用的是并行發(fā)送多個(gè)消息,避免多輪通信,后面的簽名計(jì)算都是。 Phase three 代理 Proxy 合出$ (\xi_j+\gamma_A)k ,計(jì)算出 ,計(jì)算出 ,計(jì)算出 A_j^{\frac 1 k}=Base^{\frac 1{(\xi_j+\gamma_A)k}} = gh_{0}{\zeta_j}h_{1}{u_j}X_i {{\frac 1{(\xi_j+\gamma_A)k}}} $,合出$ C_k = \sum C_{k_i} $合出$ \xi_j = \sum \xi_{j_i} , 然后 ? ? P 2 P ? ? 發(fā)送給用戶 ,然后**P2P**發(fā)送給用戶 ,然后??P2P??發(fā)送給用戶 A_j^{\frac 1 k},C_k,\xi_j,\zeta_j,u_j,\tau_i $。廣播給參與委員會(huì)$ A_j^{\frac 1 k} $ 同樣這里也不是一個(gè)而是多個(gè),一組簽名。 用戶 User 解密$ k = CL_{Dec}(C_{k},sk) ,此時(shí)就可以計(jì)算出自己的簽名 ,此時(shí)就可以計(jì)算出自己的簽名 ,此時(shí)就可以計(jì)算出自己的簽名 A_j = (A_j^{\frac 1 k})^k ,然后合出自己的 ,然后合出自己的 ,然后合出自己的 gsk_i $ 參與委員會(huì) Node 計(jì)算出$ A_j^{\frac {\gamma_{C_i}} k} $,然后P2P發(fā)送給代理。(一組) Phase four 代理 Proxy 聚合出$ A_j^{\frac {\gamma_C} k}= \prod A_j^{\frac {\gamma_{C_i}} k} $,然后廣播給參與委員會(huì)。(一組) Phase five 參與委員會(huì) Node 計(jì)算$ A_j^{\frac {\gamma_C \cdot k_i} k}=(A_j^{\frac {\gamma_C} k})k_i $(一組) 代理 Proxy 聚合出$ A_j^{\gamma_C}=\prod A_j^{\frac {\gamma_C \cdot k_i} k} $,然后廣播發(fā)送給委員會(huì)。(一組) Phase six 委員會(huì) Node 存儲(chǔ)下來(lái)到 Reg 中P2P 發(fā)送成功收下的flag給代理 Revoke Phase 方案思路  此步驟和 Join/Issue Phase 類似,但由于是公開(kāi)的,所以無(wú)需加密。 $ ei_t :這個(gè)是根據(jù)當(dāng)前時(shí)間 :這個(gè)是根據(jù)當(dāng)前時(shí)間 :這個(gè)是根據(jù)當(dāng)前時(shí)間 t $計(jì)算出來(lái)的一個(gè)用于后面校驗(yàn)簽名有效性的信息。 $ RU_t :存儲(chǔ)的是在需要提前在 :存儲(chǔ)的是在需要提前在 :存儲(chǔ)的是在需要提前在 t $時(shí)刻被撤銷的用戶列表,需要作為輸入,提前生成。 $ RL_t :存儲(chǔ)的是 :存儲(chǔ)的是 :存儲(chǔ)的是 grt_i ,表示的是在 ,表示的是在 ,表示的是在 t $時(shí)刻被撤銷的用戶的信息,也需要提前置空。 Phase one 用戶 User P2P發(fā)送給代理Revoke 的開(kāi)始flag() 代理 Proxy 收到用戶flag和節(jié)點(diǎn)flag(需要收到這兩個(gè)信息,這是為了保證多個(gè)用戶同時(shí)執(zhí)行的時(shí)候,消息異步到達(dá)引發(fā)的問(wèn)題)后開(kāi)始選擇$ y_t ,計(jì)算 ,計(jì)算 ,計(jì)算 \tilde h_t,\hat h_t $選擇當(dāng)前時(shí)間$ t 和隨機(jī)數(shù) 和隨機(jī)數(shù) 和隨機(jī)數(shù) \zeta_i’ ,對(duì)每一個(gè) C S T B K 算法的樹節(jié)點(diǎn)都計(jì)算出一個(gè) ,對(duì)每一個(gè)CSTBK算法的樹節(jié)點(diǎn)都計(jì)算出一個(gè) ,對(duì)每一個(gè)CSTBK算法的樹節(jié)點(diǎn)都計(jì)算出一個(gè) Base’ = gh_{0}{\zeta_i’}h_{1}{v_i}h_2^t $,廣播發(fā)送這兩個(gè)信息給參與委員會(huì)節(jié)點(diǎn)。 委員會(huì) Node 每個(gè)委員會(huì)參與節(jié)點(diǎn)之間開(kāi)始初始化參數(shù)(選擇隨機(jī)數(shù)$ k_i’,\xi_{i_j}’ , 生成 M T A 參數(shù) ,生成 MTA 參數(shù) ,生成MTA參數(shù) a,b $等) 進(jìn)行 MTA 兩兩計(jì)算,最終每個(gè)節(jié)點(diǎn)將得到$ ni_{share}=(\xi_{i}'+\gamma_B)k $ 的一部分。P2P發(fā)送給代理節(jié)點(diǎn)$ ni_{share},k_i’,\xi_{i_j}’ $ Phase two 代理 Proxy 代理聚合出$ (\xi_i’+\gamma_B)k’ = \sum ni_{share} $, $ k’ = \sum k_i’ $, $ \xi_i’=\sum \xi_{i_j}’ $然后計(jì)算出$ B_i = (Base’^{\frac 1 {(\xi_i’+\gamma_B)k’}})^{k’} = {gh_{0}{\zeta_i’}h_{1}{v_i}h_2t} {\frac 1 {(\xi_i’+\gamma_B)}} $選出$ RU 并計(jì)算出 并計(jì)算出 并計(jì)算出 RL $廣播給委員會(huì)節(jié)點(diǎn) 委員會(huì) Node 存下$ ei_t,RL $P2P 發(fā)送成功收下的flag給代理 用戶User 存下$ ei_t $ Sign Phase 方案思路  簽名階段就是用戶拿著自己聚合出來(lái)的$ A_j 和 和 和 Bi $對(duì)消息進(jìn)行簽名計(jì)算 主要就是幾個(gè)式子的計(jì)算,和原方案一樣。 保存下來(lái), 然后上鏈。 結(jié)束后P2P發(fā)送簽名結(jié)束的 flag 給代理 Verify Phase 方案思路  這里的驗(yàn)證也和原方案類似,校驗(yàn)的是密鑰是否過(guò)期(自然撤銷,主動(dòng)撤銷,密鑰) 不用代理驗(yàn)證,僅讓代理轉(zhuǎn)發(fā)消息,然后驗(yàn)證交給管理員節(jié)點(diǎn),不通過(guò)則需要啟動(dòng) Open Phase 來(lái)揭示用戶身份。 代碼demo里,流程是代理收到,用戶發(fā)送自己已經(jīng)簽名完成的flag,結(jié)合node發(fā)送過(guò)來(lái)的revoke flag,這兩個(gè)flag,然后發(fā)送開(kāi)始驗(yàn)證的flag給委員會(huì)節(jié)點(diǎn),此時(shí)委員會(huì)節(jié)點(diǎn)就會(huì)去鏈上讀取用戶的上鏈信息。 Open Phase 方案思路  這個(gè)階段的改動(dòng)比較大,主要是因?yàn)樵桨咐锏?Open 是讓委員會(huì)直接拿到的用戶的簽名$ A_j 的,修改的方案里是不能讓其拿到,而是持有 的,修改的方案里是不能讓其拿到,而是持有 的,修改的方案里是不能讓其拿到,而是持有 A_j^{\frac 1 k} 和 和 和 A_j^{\gamma_C} $。 Phase one 委員會(huì) Node 解析 Verify Phase 的結(jié)果,然后計(jì)算$ \psi_1^{\gamma_{O_i}} $,P2P發(fā)送給代理。 代理 Proxy 代理聚合$ \psi_1{\gamma_O}=\prod\psi_1{\gamma_{O_i}} ,然后可以計(jì)算出 ,然后可以計(jì)算出 ,然后可以計(jì)算出 A_j = \frac {\psi_2} {\psi_1^{\gamma_O}} $,然后廣播給委員會(huì)節(jié)點(diǎn) Phase two 委員會(huì) Node 計(jì)算$ A_j^{\gamma_{C_i}} $,然后P2P發(fā)送給代理 代理 Proxy 代理聚合$ A_j^{\gamma_C}=\prod A_j^{\gamma_{C_i}} $,然后廣播給委員會(huì) Phase three 委員會(huì) Node 尋找比對(duì)代理發(fā)送的$ A_j^{\gamma_C} 和自己的 和自己的 和自己的 Reg $表中的信息,揭示出用戶的身份信息。 Key manage Phase 方案思路 **轉(zhuǎn)加法共享** $ t $個(gè)委員會(huì)節(jié)點(diǎn)的 share,乘以對(duì)應(yīng)的拉格朗日系數(shù)即可。 密鑰恢復(fù) $ t $個(gè)委員會(huì)節(jié)點(diǎn)聯(lián)合進(jìn)行恢復(fù)算法即可。實(shí)際上的方案是不需要恢復(fù)這個(gè)功能的,這里只是為了對(duì)生成的密鑰進(jìn)行驗(yàn)證 委員會(huì) Node 將四把密鑰的信息P2P發(fā)送給代理 代理 Proxy 對(duì)收到的信息進(jìn)行聚合,然后運(yùn)行恢復(fù)算法,再進(jìn)行校驗(yàn) 密鑰刷新 每個(gè)委員會(huì)節(jié)點(diǎn)將自選私鑰設(shè)置為 0 ,然后重新生成多項(xiàng)式再次 Vss Share,最后累加到原來(lái)的$ (t,n) $share上即可 。過(guò)程類似 Keygen 的 Phase 2 ~ Phase 4 Phase one 代理 Proxy 發(fā)送給節(jié)點(diǎn)開(kāi)始flag 委員會(huì) Node 根據(jù)自己自選的$ a_0 = 0 進(jìn)行 F e l d m a n V s s ,生成多項(xiàng)式 進(jìn)行 Feldman Vss,生成多項(xiàng)式 進(jìn)行FeldmanVss,生成多項(xiàng)式 f_i(x)=a_o+a_1x+\dots a_{t-1}x^{t-1} $ 計(jì)算出多項(xiàng)式系數(shù)承諾$ c_{i_0}=g{a_0},c_{i_1}=g{a_1},\cdots,c_{i_{t-1}}=g^{a_{t-1}} $計(jì)算出對(duì)應(yīng)節(jié)點(diǎn)的 $ (t,n) $share $ x_{ij}=f_i(j) $。對(duì)委員會(huì)節(jié)點(diǎn)的share使用對(duì)應(yīng)的 CL 公鑰進(jìn)行可驗(yàn)證加密得到$ CL_{Enc}(x_{ij},pk_j) ,然后做零知識(shí)證明得到 C L D L P r o o f ,該證明目的是證明 C L 密文中的 ,然后做零知識(shí)證明得到 CLDLProof,該證明目的是證明CL 密文中的 ,然后做零知識(shí)證明得到CLDLProof,該證明目的是證明CL密文中的 x_{ij} 就是 就是 就是 g^{x{ij}} 中的 中的 中的 x_{ij} $。然后將 CL 密文和對(duì)應(yīng)的 CLDLProof 發(fā)送給代理節(jié)點(diǎn)。P2P發(fā)給代理節(jié)點(diǎn)加密的 share,CLDLProof 和 多項(xiàng)式系數(shù)承諾。 一共四個(gè) Phase two 代理 Proxy 代理節(jié)點(diǎn)對(duì)收到的 CLDLProof 進(jìn)行驗(yàn)證。代理節(jié)點(diǎn)首先將收集到的多項(xiàng)式系數(shù)承諾進(jìn)行合成,$ \prod c_{i_0},\prod c_{i_1},\dots \prod c_{i_{t-1}} ,得到整體多項(xiàng)式的系數(shù)承諾 ,得到整體多項(xiàng)式的系數(shù)承諾 ,得到整體多項(xiàng)式的系數(shù)承諾 c_o,c_1,\dots,c_{t-1} $。代理節(jié)點(diǎn)將收到的每個(gè)委員會(huì)節(jié)點(diǎn)的$ CL_{Enc}(x_{ij},pk_j) 合成 合成 合成 Enc(x_j)=CL_{Enc}(x_{j},pk_j) = \sum CL_{Enc}(x_{ij},pk_j) $.P2P發(fā)送給對(duì)應(yīng)的委員會(huì)節(jié)點(diǎn) 合成的加密share 以及 合成的多項(xiàng)式承諾。 Phase three 委員會(huì) Node 委員會(huì)節(jié)點(diǎn)解密收到的 $ x_j = CL_{Dec}(Enc(x_j),sk_j) $委員會(huì)節(jié)點(diǎn)收到的$ x_j 的一致性進(jìn)行驗(yàn)證,即 的一致性進(jìn)行驗(yàn)證,即 的一致性進(jìn)行驗(yàn)證,即 g{x_j}=g{S+a_1j+a_2{j^2} \cdots+a_t{j^{t-1}}} =c_0c_1jc_2{j^2}\cdots c_t{j{t-1}} $將最后的$ x_j $疊加到原來(lái)的 $ xj $上即可。 柚子快報(bào)邀請(qǐng)碼778899分享:基于代理的分布式身份管理方案 推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。