Algorand 系列一:VRF 密碼學抽籤原理及其在 Algorand 中的應用

YOUChain Research

YOUChain 研究團隊,成員畢業於國內外頂級名校,有長期的工業界經驗。我們持續跟蹤的區塊鏈學界和業界的前沿發展,致力於深入區塊鏈本質,推動學術和技術發展。團隊誠邀加密、算法、區塊鏈、工程人才加入!

本文來自 Darlzan@YOUChainResearch

1 VRF介紹

隨着Algorand項目的發起,原來越多的人對其所應用到的密碼學抽籤技術產生了興趣並探索相關的應用。目前,隨着Algorand項目的主網上線,該技術也開始了接受大規模的正式實踐檢驗,我們拭目以待。

目前雖然國內已經有大量文章對VRF技術進行了一些介紹,但是目前看都不夠全面深入。因此我們「YOUChainResarch」打算重新梳理,希望能儘可能全面地介紹該技術,作爲我們「Algorand 技術解析系列」系列文章的開篇,與大家分享及交流探討。

1.1 簡介

VRF全稱爲 Verifiable Random Functions,翻譯爲“可驗證隨機函數”,由Silvio Micali,Michael Rabiny,Salil Vadhan於1999年提出,是一種基於公私鑰的密碼學哈希函數。(關注過Algorand的人一眼就可以看出來,第一作者正是Algorand創始人Silvio Micali)。只有擁有VRF私鑰才能計算哈希,但任何擁有對應公鑰的人都可以驗證該哈希的正確性。

VRF的一個關鍵應用就是,提供對存儲在基於散列的數據結構中的數據的隱私保護,防止離線枚舉(例如字典攻擊)。在這種應用中,證明人持有VRF私鑰,並使用VRF哈希在輸入數據上構造基於散列的數據結構。由於VRF的性質,只有證明人才能回答關於數據結構中是否存儲了某些數據的查詢。任何知道VRF公鑰的人都可以驗證證明人正確地回答了查詢。但是,不能對數據結構中存儲的數據進行脫機推斷(即不查詢驗證器的推斷)。

簡單來說,可驗證隨機函數可以基於私鑰 對一個輸入,產生一個唯一的固定長度的_輸出_,以及一個對應的證明。其他人在知道了公鑰、輸出、證明 之後就一定能驗證這三者的正確性,並且也只有在知道了這三者之後才能驗證其正確性。

上面提及的這個過程以及相關的數據,是符合若干安全特性的,接下來會具體描述。

在VRF論文發出來後,到目前已有不同的團隊(個人、組織、機構)做出了不同的實現。而IETF(Internet Engineering Task Force)目前正在爲VRF的實現制定標準,目前還處於草案階段,並於 2019-2-8已發佈第四版草案。鏈接見文後參考部分。

1.2 基本算法表述

從一個概要邏輯來說,VRF總共涉及到幾個相關函數,聯合起來完成一個證明和驗證的閉環。

首先簡單定義一下標識符:

  • SK:VRF的私鑰
  • PK:VRF的公鑰
  • alpha: VRF的輸入,將對其進行哈希
  • beta: VRF哈希輸出
  • pi: VRF證明
  • Prover: 持有VRF公私鑰的人就可以稱爲證明人
  • Verifier: 只持有VRF公鑰的人,可以稱爲驗證人

VRF的基本算法,是很簡單清晰的,如下:

  1. 前提是有一個祕鑰對生成算法,來生成VRF需要用到的公私鑰對;
  2. 證明人計算輸入的哈希:beta = VRF_hash(SK,alpha); > 注意,VRF_hash算法是確定性的,對於相同的私鑰及相同的輸入,必定生成一個相同的輸出。
  3. 證明人還需要用私鑰及輸入計算一個證明: pi = VRF_prove(SK, alpha)
  4. 驗證人通過對應的公鑰可以驗證結果的正確性:VRF_verify(PK, alpha, pi)

實際實現中,上面2和3可以放在一起,得到如 beta,pi = VRF(SK,alpha) 這樣的函數。

1.3 所需滿足的安全特性

基於上一節的內容,還不能理解VRF的本質。如果不考慮相關的安全特性,那上面的實現是沒有意義的。那麼,VRF需要滿足哪些安全特性呢?

總結起來,主要包括3種安全特性:唯一、防碰撞、僞隨機。另外,對於IETF的實現標準,即使在祕鑰對生成不夠可信的情況下,也可以保持“不可預測性”。

1.3.1 完全唯一 和 可信唯一

唯一是指對於任意固定的VRF公鑰以及任意的輸入alpha,都存在唯一的可被證明有效的輸出beta。

完全唯一full uniqueness)指在可計算範圍內對手不可能找到一個公鑰pk,一個輸入alpha,以及兩個證明 pi1 和 pi2 使得 VRF_verify(pk,alpha,pi1) 輸出 (VALID,beta1),VRF_verify(pk,alpha,pi2) 輸出 (VALID,beta2),而 beta1不等於beta2。

一個相對弱一點的安全特性叫可信唯一trusted uniqueness),對很多應用來說這就夠了。可信唯一隻在VRF公私鑰是以一種值得信任的方式生成的情況下,才滿足唯一性,其他就和完全唯一一樣。換句話說,如果祕鑰對生成方式有問題或者使用了不好的隨機數,則唯一性可能無法保證。

直白來說,就是(1)對於特定的一對公私鑰(sk,pk),任意一個alpha都有並且只有一對 (beta,pi),不存在說對於某個或某些輸出無法生成證明的情況;(2)對於任意特定的 alpha,系統中的任何一對公私鑰(sk,pk),都能生成唯一的與其他人不相同的 (beta,pi),不存在說對於某些輸入有些私鑰能構造有效證明但有些私鑰卻不能構造有效證明的情況。

其中可信唯一相對弱一點是在於,對於只滿足這個特性的系統來說,可以特意構造某個公鑰 PK(它可能沒有對應的有效的私鑰),對於某個輸入alpha,可以構造兩個或多個不同的證明pi,用該PK都能驗證通過。

嚴格來說,世界上沒有絕對的事,上面的表述都是基於密碼學安全的意義之上的,就是說只要概率足夠小,我們就認爲它不會發生,比如概率小於2-256

由上面表述可以看到,一個好的祕鑰對生成算法,對VRF實現的唯一特性的保障是很重要的,這在我們選擇某種VRF實現的時候,應該要加以考量。

1.3.2 完全防碰撞 和 可信防碰撞

完全防碰撞是指,對手要找到具有相同輸出的兩個不同的輸入alpha1和alpha2,在計算上是不可能的,即使他知道私鑰也是如此。

相對弱一點的安全特性是 可信防碰撞,這指的是防碰撞特性需要基於一種可信的生成公私鑰的方式。

1.3.3 完全僞隨機 和 選擇性僞隨機

僞隨機性確保對手在知道輸出beta但是不知道證據pi的情況下,beta是隨機的,不可能將其跟一個隨機值進行辨別。

更精確地說,假設公私鑰(pk,sk)是以一種可信方式生成的。僞隨機性確保了即使輸入是由對手仔細選擇的,對於計算能力有限的對手,只要他不知道私鑰,那麼輸出beta對他而言也是隨機不可分辨的。甚至在對手有意選擇多個輸入並觀察對應輸出及證明的情況下,也是如此。

簡單舉個例子就是,分別對一組有規律的輸入 [alpha1,alpha2,…,alphan] 計算其對應的輸出[(beta1,pi1),(beta2,pi2),…,(betan,pin)],你去觀察研究這些輸出,不可能找出某種確定的規律。

舉個例子,僞隨機特性可以保證,你想要生成一個小於某個值的哈希(比如按16進制輸出後前面有10個0,0x0000000000…),然後希望能快速推斷出一個輸入x使其滿足你的要求,這是做不到的。除了按窮舉法計算VRF哈希之外,別無捷徑。

擁有完全僞隨機特性,則允許對手在任意時刻選擇輸入。直白但可能不夠準確地說,就是不管你什麼時候給一個什麼樣的輸入給我,你都無法知道我對該輸入產生的輸出哈希是大於還是小於某個值。

選擇性僞隨機是一個弱一點的安全特性,對於很多應用來說這也是足夠的。這時,對手選擇目標輸入需要獨立於VRF公鑰,並且要在他觀察到他選擇的alpha’所對應的beta’和pi’之前。直白但可能不夠準確地說,就是你知道了我的公鑰以及我曾經的一些(alpha,beta,pi)信息,然後你特意構造一個新的輸入,這時你可能可以知道我對該輸入的VRF輸出將會大於或小於某個值,而不用等我真正告訴你結果。

需要記住,VRF的輸出beta對證明人(或任何知道了私鑰的人)來說,是不隨機的。他們只要將beta和VRF_hash(sk, alpha)的結果進行比較,就可以輕易地將beta和一個隨機值區分出來。

同時,對於任何知道了對應pi的人,beta看起來也是不隨機的。只要檢查VRF_verify(PK, alpha, pi)是否返回 (VALID, beta),就可以將beta跟一個隨機值區別開。

還有,如果VRF祕鑰對不是用可信方式生成的(例如,如果VRF祕鑰對使用不好的隨機數生成的),那麼beta也可能看上去不是隨機的。

1.3.4 一個 “類隨機預言機”的不可預測特性

上面提到的僞隨機性,在祕鑰是由對手特意生成的情況下,是不滿足的。例如,如果對手輸出的祕鑰是確定地生成的(或硬編碼的並且是公開的),那麼任何人都很容易獲得VRF的輸出。

然而,在一些VRF應用中,存在一種不同類型的不可預測性。這種特性類似於由一種(普通的,不基於祕鑰對的)密碼學哈希函數所提供的不可預測性:如果輸入具有足夠的熵(如:不可能被預測到),那麼正確的輸出也是均勻不可辨別的。

雖然關於此特性在密碼學文獻中既沒有正式的定義,也沒有證明,但在IETF中呈現的VRF實現方案中,只要公鑰是以一種可信任的方式生成的,那麼就可以相信滿足了這個特性。額外地,如果公鑰滿足一些特定驗證過程,那麼即使公鑰不是可信方式生成的,ECVRF也滿足此特性。

1.4 幾種實現方式概述及選擇考量

VRF都是基於非對稱加密技術來構建的,當前主流的非對稱加密技術,有RSA和橢圓曲線密碼學這兩種。這兩種技術都可以用於構建VRF實現。

具體實現就不做詳細介紹了,感興趣的還是以參考IETF的標準爲主。

一般而言,一個基於RSA的VRF實現,能滿足可信唯一可信防碰撞完全僞隨機特性。不過,RSA方案的一個問題是,要起到足夠的安全性,則RSA的祕鑰長度需要比較長,這在很多應用場景下都不是很理想。

而目前,在非對稱加密領域,橢圓曲線加密是越來越被重視、越來越成爲主流的非對稱加密技術。因此,對於VRF的實現也應該儘量選用基於橢圓曲線的實現方案,這種方案可簡稱爲 ECVRF

ECVRF在具體實現時,可以有很多細分方案,包括選用不同的橢圓曲線、選用不同的將消息映射到曲線上的點的算法(需要注意,橢圓曲線密碼學是基於有限域的,密碼學中所說的橢圓曲線上的點是離散的、不連續的)、選用不同的隨機數生成算法等等。

一般而言,ECVRF能滿足可信唯一可信防碰撞完全僞隨機特性,並且,如果在接收到一個VRF公鑰時,做一些額外驗證以驗證公鑰的有效性,那麼ECVRF就能滿足完全唯一完全防碰撞特性。

1.4.1 額外討論:關於橢圓曲線的選擇

橢圓曲線是由如下形式方程式所定義的曲線:y2=ax3+bx2+cx+d

其中,可用於密碼學用途的橢圓曲線有很多,曾幾何時,最主流的曲線及相關算法都是由NIST(美國國家標準與技術研究院)選定和推薦的,稱爲NIST-P系列,比如廣泛使用的 P-256 曲線。這種情況持續到了2013年,那一年,一個叫“愛德華·斯諾登”(Edward Snowden)的牛人曝光了NSA的棱鏡計劃,其中曝光了NIST標準中一個基於橢圓雙曲線的隨機數生成器,叫 Dual_EC_DRBG,包含後門,這可以使掌握該後門的NSA只根據生成器過去所產生的隨機數樣本,就可以預測後續的隨機數輸出,這樣的隨機數,對我們來說是僞隨機的,對NSA來說是可預測的。這個事件引起了人們對NIST的信任危機,雖然這個Dual_EC_DRBGNIST-P的加密算法沒有直接聯繫,人們可以使用其他的僞隨機數生成算法,但是人們發現NIST-P曲線中都存在一些來歷不明的沒有任何說明的隨機數種子,比如下面的常數(參見:Nothing-up-my-sleeve_number):

  • P-224: bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5

  • P-256: c49d3608 86e70493 6a6678e1 139d26b7 819f7e90

  • P-384: a335926a a319a27a 1d00896a 6773a482 7acdac73

這時,一個新的曲線就閃亮登場了:Curve25519。Curve25519/Ed25519/X25519 是著名密碼學家 Daniel J.Bernstein 在 2006 年獨立設計的橢圓曲線加密/簽名/密鑰交換算法,和現有的任何橢圓曲線算法都完全獨立。這些算法在開始的時候乏人問津,但在2013年之後一下子變得炙手可熱,成爲絕對的主流已是大勢所趨了。

這一方面是因爲這套算法完全開放設計,沒有任何祕密,沒有任何可疑的參數;同時,這套算法確實足夠優秀,足夠安全。此外,還有點題外話,這位Bernstein之前還曾因爲將自己設計的加密算法Snuffle發佈到網上而遭到美國政府起訴,他抗爭了6年,最後還是美國政府撤銷了指控(跟全球大環境變化也有關係),但之後他還反訴政府,直到2003年底法院駁回他的訴訟,要他在政府製造了“具體威脅”之後再來。

關於算法的安全性,Bernstein進行了全面的考察,結果見下面截圖,具體參見這裏safecurvessafecurves

目前Curve25519/Ed25519已得到廣泛應用,人們正在全面拋棄NIST,擁抱Curve25519,應用情況可參見:https://ianix.com/pub/curve25519-deployment.htmlhttps://ianix.com/pub/ed25519-deployment.html

1.5 VRF與數字簽名算法方案的區別

對於剛接觸VRF的人來說,可能很容易產生一個疑問:非對稱數字簽名算法,跟VRF有什麼區別?或者說,非對稱數字簽名算法起不到VRF的作用嗎?

在非對稱加密領域,存在數字簽名算法,對於一對祕鑰 (pk,sk)來說,可以計算消息 m 的簽名 s = SIG(sk,m),然後知道公鑰的人可以驗證 s 是否確實是簽名者用私鑰對m的簽名:Verify(pk,m,s)。另外,通過密碼學哈希算法,也能得到消息m的哈希值。

因此,這就跟VRF比較像了:

  1. 私鑰擁有者可以聲明自己的簽名結果s,其他人通過公開信息(pk,m,s)可以驗證該聲明;

  2. s是不可預測的,這具有密碼學上的安全性;可以再通過對s進行密碼學哈希,得到一個不可預測的哈希值。

那麼爲什麼還需要VRF呢,直接用數字簽名的方案不行嗎? 關於此問題,主要原因是,VRF相比於數字簽名方案,具有前面所描述的更多安全特性。對於數字簽名方案,有以下主要缺陷:

  1. 簽名結果s不是唯一的!對於很多數字簽名方案,同一個私鑰對同一個消息,可以給出不同的簽名。比如對於EdDSA,如果 s = SIG(sk,m),那麼 s+ℓs+\ells+ 也會是一個有效的簽名,其中ℓ\ell 是對應橢圓曲線基點(即生成元)的階。

  2. s是不可預測的,但是s不一定是僞隨機的。也就是說,s在取值範圍內的分佈可能不是均勻的。

對於上面第1點,當然存在一些特定的數字簽名實現,比如將[GMR88]中的數字簽名方案中的隨機數,使用[GMR89]中的GGM僞隨機預言機代替之後,數字簽名可以是唯一的。但是人們沒辦法確認簽名者是否採用了這麼一種方案,因此也就是說唯一性是無法保證的。

無法保證唯一性的數字簽名方案,可以認爲是一種“可驗證不可預測函數”,但不是“可驗證(僞)隨機函數”。

2 Algorand VRF密碼學抽籤算法及應用

2.1 抽籤算法原理剖析

2.1.1 抽籤原理

基於VRF的密碼學抽籤算法用於根據每個用戶的權重,隨機選出用戶的一個子集。整個抽籤過程中,需要保證:

  1. 不存在上帝角色操縱整個抽籤;
  2. 每個參與者獨立做自己的抽籤,在主動公佈自己的抽籤結果之前,其他任何人都不可能知道該抽籤結果;
  3. 參與者公佈自己的抽籤結果後,系統中的其他參與者都可以驗證該結果,參與者不需要泄漏自己的私鑰;
  4. 在一輪抽籤開始之前,任何參與者都不能預先計算自己的抽籤結果;
  5. 抽籤對所有參與者都是公平公正的;
  6. 防女巫攻擊。

具體做法就是,假設參與者 iii 的權重是ω ii,所有參與者的權重總和W=∑ iiω ii,對於具體的抽籤目的,我們設置一個期望值ttt,表示在所有的權重當中,希望抽出ttt份權重。這樣,我們基於“伯努利試驗”的抽籤方式,按 p=tW\frac{t}{W}的概率, i讓每個參與者 iii 依據自己的權ω ii做ω ii次抽籤,這樣所有參與者就總共做了WWW次抽籤,抽籤結果將是符合二項分佈的。

接下來,需要做的就是構造這個“伯努利試驗”,這就用到了VRF。首先,要求每個參與者都擁有一對公私鑰,(pkik_{i},skik_{i}),然後,爲了滿足前面提到的要求,還需要定義一個種子seed,以及標識抽籤階段的一些數據,比如round。其中,需要儘可能讓參與者在開始某一輪抽籤的時候,才知道所用到的seed,這個根據具體的應用場景來定。

這時,就可以基於VRF構建我們的“伯努利試驗”了。

x 是由seed、round等組成的抽籤參數,則參與者先計算 x 的VRF哈希及證明:hash,pi=VRFskiF_{ski}。這時得到的哈希的長度是固定的,比如32字節,由VRF的安全特性,我們知道hash是在區間 [0,22562^{256}]內均勻分佈的,將該哈希值變爲一個小數,即 d = hash2256\frac{hash}{ 2^{256}},這時 ddd 就在區間 [0,1][0,1][0,1] 之間均勻分佈。

另外,已知以概率 p 做 n 次伯努利試驗,實際成功次數爲 k 次的概率,計算公式如下:
在這裏插入圖片描述
將 k=0…j 所對應的概率加起來,假設用 Sum(j) 表示,我們找到一個j值,使其滿足式子 Sum(j)≤d<Sum(j+1)Sum(j)\le d \lt Sum(j+1)Sum(j)d<Sum(j+1) ,這時,jjj 就是參與者的抽籤結果了。j=0j=0j=0時表示沒抽中,j>0j>0j>0時表示抽中了jjj份權重。

由於用戶的權重越大,即w越大,其抽籤次數就越多,從而基於相同的概率p,得到 j>0j>0j>0 的概率也就會越大,因此,用戶被選中的概率是跟他們的權重是成比例的。另外,當 j>0j>0j>0,我們可以想象成用戶有 jjj 個子用戶被抽中了,如果是投票,就可以投jjj票。這樣一來,w個權重爲1的用戶,有j個被抽中的概率,跟1個權重爲w的用戶,有j個子用戶被抽中的概率,是一樣的。也就是說,這種抽籤是防女巫攻擊的。

最後,對於驗證者來說,他可以基於VRF驗證機制,驗證抽籤參與者的哈希及證明,驗證通過之後,執行相同的抽籤計算,看結果 j′j’jjjj 是否一致。

2.1.2 抽籤算法

對應前面的描述,抽籤算法如下:
在這裏插入圖片描述
其中,sksksk爲用戶私鑰,rolerolerole 參數和 roundroundround 參數用於區分共識過程中的角色與階段,一個閾值 t 用於確定本次抽籤所期望選中的用戶數。hash,πhash,\pihash,π 分別爲VRF哈希值及證明。

3.2 抽籤驗證算法

驗證過程算法描述如下:
在這裏插入圖片描述
驗證過程先驗證 π\piπ 是否合法有效,然後依據與抽籤類似的過程獲得用戶被選中的子用戶數(0表示根本沒被抽中),從而與用戶隨消息廣播出來的j值做比較以驗證其正確性。

2.2 抽籤結果的概率分佈

根據前面的描述,我們知道整個VRF密碼學抽籤算法,是概率性的,概率符合二項分佈。也就是說,給定期望值 t ,實際結果 k 是不固定的。在這種情況下,密碼學抽籤怎麼應用與具體的場景,那就得具體情況具體分析了。

在這裏,我們先看一下如何計算抽籤結果的概率分佈。 如果總權重 W 是比較小的,從而概率 p 是比較大的,那這時直接用二項分佈公式進行計算就可以了。

但如果 W 很大,那就要考慮別的方式了。 首先,再列一下二項分佈概率公式(爲了和Algorand保持一致,下面用 U 代替 W):
在這裏插入圖片描述
將其展開得如下式子:
在這裏插入圖片描述
由於K是個比較小的值,當U很大時,下面的等式是可以接受的;或者換個方式說,當U大到我們可以接受如下式子的時候,U就足夠大了:
在這裏插入圖片描述
另外,U足夠大時,我們肯定還能接受如下等式。其中分子轉換成常數e的指數,這是根據指數函數的定義來的。
在這裏插入圖片描述
綜合起來就得到當U很大,且期望爲t時,實際抽籤結果爲K的概率爲:
在這裏插入圖片描述

2.3 在區塊鏈中的應用及要解決的問題

Algorand項目開創了密碼學抽籤算法在區塊鏈中的應用,主要用在兩種場景下:(1)通過抽籤獲得區塊提議者;(2)通過抽籤獲得區塊驗證委員會。

對於第一種場景,期望值 t 應該是比較小的,主要需要考慮的是,實際抽籤結果 k 應該以很高的概率大於0,同時k又不應該很大。Algorand給出了一個值 t = 26,這時k在1到70之間的概率爲:

對於第二種場景,就比較複雜了。除了單純抽籤概率上的考慮,還要考慮網絡中惡意用戶或者說拜占庭節點的影響,以及投票通過的閾值。

根據Algorand的分析,假設網絡中誠實用戶所佔的權重比例爲 h,委員會期望權重爲 t ,由上面的公式(1),可以得到最終誠實權重爲k的概率爲:
在這裏插入圖片描述
在一個存在拜占庭節點的投票委員會中,設投票通過的閾值(比例)爲 r(也就是說票數超過 t * r 就通過),則要保證系統的活性即能完成投票,需要滿足下面的條件1

條件1#good>t∗r#good > t * r#good>tr

> #good#good#good 表示誠實票數

通過上面的概率公式,這個條件不滿足的概率是可以計算出來的,不滿足的概率爲:
在這裏插入圖片描述

另外,考慮拜占庭節點,要保證系統的安全性,假設 #bad 表示不誠實的票數,那麼要保證安全性就要滿足下面的條件:

條件212#good+#bad≤t∗r \frac{1}{2}#good + #bad\le t * r ,21#good+#badtr

對於條件2,抽取 #good = K 並且 #bad = L 的概率如下:
在這裏插入圖片描述
條件2不滿足的概率是不大好算的,實際評估時,我們可以先計算條件2滿足的概率,公式爲: 在這裏插入圖片描述

用 1.0 減去計算結果,可得到條件2被違背的概率。 > 當然,先計算概率大的情況時,計算精度會降低。

上面兩個條件均不滿足的概率需要極小極小,纔可以認爲不會影響系統的活性和安全性。舉個淺顯的例子就是:假設定下來 t = 100, r = 0.7, h = 0.8。那麼投票閾值就是70,但是由於抽籤結果的概率性,那麼如果抽籤結果不足70,那就完不成投票了,如果抽籤結果大於140,那在網絡不好的情況下是不是可能出現分歧(分叉)呢?另外,由於總體誠實比例只有0.8,那也有可能抽籤結果中不誠實數直接就超過70,那也可能搞亂整個投票,這時,確切地說就是條件2的情況。

綜上,理論上來說,活性和安全性都是無法絕對保障的,但是可以考慮一個很小的概率 F(如F=101810^{-18}),當兩個條件被違背的概率均小於F時,我們可以認爲這樣的事件基本不會發生。

這個 F 跟 t,r,h都有一定的負相關關係,就是t,r,h中任意兩個值不變的情況下,第三個值越大,F就越小。例如,r,h不變時,t越大,F越小。

還有一個問題,t也不是越大越好的。t很大時,雖然可以使F很小,但是在一個分佈式網絡中,t越大則完成投票所需要的通信量也就越大,所以這需要權衡考慮。

以上,就是本文分享的所有內容了。至於Algorand項目中是如何權衡相關問題的,敬請關注後續分享。

參考

  1. Verifiable Random Functions

  2. https://www.odaily.com/post/5133096

  3. https://tools.ietf.org/pdf/draft-irtf-cfrg-vrf-04.pdf

  4. https://datatracker.ietf.org/doc/draft-irtf-cfrg-vrf/

  5. [GMR88] Shafi Goldwasser, Silvio Micali, and Ronald L. Rivest. A digital signature scheme secure against adaptive chosen-message attacks. SIAM Journal on Computing, 17(2):281–308, April 1988.

  6. [GMR89] Shafi Goldwasser, Silvio Micali, and Charles Rack- off. The knowledge complexity of interactive proof systems. SIAM Journal on Computing, 18(1):186– 208, February 1989.

  7. curve25519

  8. https://en.wikipedia.org/wiki/Daniel_J._Bernstein

  9. https://en.wikipedia.org/wiki/Bernstein_v._United_States

  10. https://en.wikipedia.org/wiki/Nothing-up-my-sleeve_number

  11. http://cr.yp.to/djb.html

  12. http://cr.yp.to/ecdh.html

  13. https://safecurves.cr.yp.to/

  14. https://ianix.com/pub/curve25519-deployment.html

  15. https://en.wikipedia.org/wiki/Dual_EC_DRBG

  16. Algorand- Scaling Byzantine Agreements for Cryptocurrencies

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章