IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハーの特許一覧

<>
  • 特表-高速なポスト量子暗号抽選 図1
  • 特表-高速なポスト量子暗号抽選 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-26
(54)【発明の名称】高速なポスト量子暗号抽選
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240719BHJP
【FI】
H04L9/32 200Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024508518
(86)(22)【出願日】2021-08-20
(85)【翻訳文提出日】2024-02-09
(86)【国際出願番号】 EP2021073178
(87)【国際公開番号】W WO2023016665
(87)【国際公開日】2023-02-16
(31)【優先権主張番号】21191370.2
(32)【優先日】2021-08-13
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】517451940
【氏名又は名称】エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】クラウディオ・ソリエンテ
(72)【発明者】
【氏名】ダリオ・フィオレ
(57)【要約】
本発明は、当事者(210、220)のグループの間での暗号抽選の実行のためのコンピュータにより実施される方法に関する。本発明のある実施形態によれば、方法は、グループの第1の当事者(210)によって、ブロック暗号Eのためのn個の当事者固有の秘密鍵k1、…、knの集合にコミットするステップと、グループの第1の当事者(210)および少なくとも第2の当事者(220)によって、共通の入力xおよびインデックスrを取得するステップと、第1の当事者(210)によって、コミットされた鍵k1、…、knのr番目の鍵krを用いて入力xを暗号化し、それによりブロック暗号Eの出力y1を生成し、暗号化のために使用される鍵krと一緒に出力y1をパブリッシュするステップと、第2の当事者(220)によって、第1の当事者(210)によってパブリッシュされた鍵krを用いて共通の入力xを暗号化し、それによりブロック暗号Eの出力y1'を生成し、生成された出力y1'を第1の当事者(210)によってパブリッシュされた出力y1と比較するステップとを備える。
【特許請求の範囲】
【請求項1】
当事者(210、220)のグループの間での暗号抽選の実行のためのコンピュータにより実施される方法であって、
前記グループの第1の当事者(210)によって、ブロック暗号Eのためのn個の当事者固有の秘密鍵k1、…、knの集合にコミットするステップと、
前記グループの前記第1の当事者(210)および少なくとも第2の当事者(220)によって、共通の入力xおよびインデックスrを取得するステップと、
前記第1の当事者(210)によって、前記コミットされた鍵k1、…、knのr番目の鍵krを用いて前記入力xを暗号化し、それにより前記ブロック暗号Eの出力y1を生成し、暗号化のために使用される前記鍵krと一緒に前記出力y1をパブリッシュするステップと、
前記第2の当事者(220)によって、前記第1の当事者(210)によりパブリッシュされた前記鍵krを用いて前記共通の入力xを暗号化し、それにより前記ブロック暗号Eの出力y1'を生成し、前記生成された出力y1'を前記第1の当事者(210)によりパブリッシュされた前記出力y1と比較するステップと
を備える、方法。
【請求項2】
前記暗号抽選が、proof-of-stakeベースのブロックチェーンのリーダー選出方式のそれぞれの選出ラウンドにおいて実行され、
インデックスrが前記それぞれの選出ラウンドのカウンタの値を決定する、請求項1に記載の方法。
【請求項3】
出力y1があらかじめ定められた公開の選出規則に適合すると決定され、かつ、前記第1の当事者(210)によってパブリッシュされた前記出力y1との前記生成された出力y1'の前記比較が、出力y1'とy1の両方が一致することを示した場合、前記第2の当事者(220)によって、選ばれたリーダーの集合に前記第1の当事者(210)を追加するステップをさらに備える、請求項1または2に記載の方法。
【請求項4】
前記入力xがラウンド固有であり、
当事者の前記グループの前記当事者(210、220)が、前記ラウンド固有の入力xのいずれかが利用可能になる前に、当事者固有の秘密鍵k1、…、knの前記集合にコミットする、請求項1から3のいずれかに記載の方法。
【請求項5】
前記入力xがラウンド固有であり、
当事者の前記グループの前記当事者(210、220)が、前記ラウンド固有の入力xが利用可能になった後、それらの当事者固有の秘密鍵kを明らかにする、請求項1から4のいずれかに記載の方法。
【請求項6】
前記共通の入力xおよび前記インデックスrが、ブロックチェーンまたは信用される当事者から取得される、請求項1から5のいずれかに記載の方法。
【請求項7】
前記共通の入力xおよび前記インデックスrが、決定的関数をブロックチェーンの最後のブロックに適用することによって導出される、請求項1から6のいずれかに記載の方法。
【請求項8】
前記グループの前記第1の当事者(210)によって、n個の当事者固有の秘密鍵k1、…、knの前記集合にコミットするステップが、
葉ノード(110i)のための入力バイナリ列(120i)として前記鍵k1、…、knを使用することによって、およびハッシュ関数Hを使用することによって、マークル木(100)を構築するステップと、
前記第1の当事者(210)の公開鍵として、得られた前記マークル木(100)の根(130)のラベルRをパブリッシュするステップと
を備える、請求項1から7のいずれかに記載の方法。
【請求項9】
前記グループの前記第1の当事者(210)によって、前記秘密鍵k1、…、kn、前記共通の入力x、および前記インデックスrを入力として取り込むように構成される、検証可能乱数関数(VRF)の決定的関数Eval()を実行するステップをさらに備え、
前記インデックスrが、前記秘密鍵k1、…、knのいずれが前記入力xにわたって前記関数を評価するために使用されるかを決定するために、かつ前記出力y1および証明π1を生み出すために使用される、請求項8に記載の方法。
【請求項10】
前記グループの前記第1の当事者(210)によって、
前記マークル木(100)のr番目の葉ノード(110r)から前記根(130)へのノードラベルの共経路Cを計算するステップと、
ブロック暗号Eを使用して前記鍵krを用いて前記入力xを暗号化することによって前記出力y1を決定するステップと、
タプル[kr,C]からなる証明π1を生成するステップと
を含む、前記決定的関数Eval()を実行するステップと、
前記グループの前記第1の当事者(210)によって、前記証明π1と一緒に前記出力y1をパブリッシュするステップと
をさらに備える、請求項9に記載の方法。
【請求項11】
前記グループの前記第2の当事者(220)によって、前記第1の当事者(210)から受信された前記第1の当事者(210)の公開鍵pk1、前記入力x、前記出力y1、および前記証明π1、ならびに前記インデックスrに対して、検証可能乱数関数(VRF)の関数Verify()を実行するステップをさらに備え、前記関数Verify()が、
前記マークル木(100)の前記根(130)の前記ラベルRとして前記第1の当事者(210)の前記公開鍵pk1を解析するステップと、
[kr,C]として前記証明π1を解析するステップと、
入力xが、ラベルRによって特定される前記マークル木(100)の前記r番目の葉ノード(110r)への入力列(120r)であることを検証するために、共経路Cを使用するステップと、
両方の検証が成功する場合、1を出力し、それ以外の場合、0を出力するステップと
を含む、請求項9または10に記載の方法。
【請求項12】
前記ブロック暗号Eが、AES(Advanced Encryption Standard)ブロック暗号である、請求項1から11のいずれかに記載の方法。
【請求項13】
前記ハッシュ関数Hが、SHA(Secure Hash Algorithm)ハッシュ関数のグループから選択される、請求項8から12のいずれかに記載の方法。
【請求項14】
当事者(210、220)のグループの間での暗号抽出の実行について、請求項1から13のいずれかに記載の方法の実行のための、当事者(210、220)の前記グループの当事者(220)のホスト処理システムであって、前記ホスト処理システムがプロセッサおよびメモリを備え、前記メモリが、前記プロセッサによって実行されると、
共通の入力xおよびインデックスrを取得すること、
当事者(210、220)の前記グループの別の当事者(210)から、鍵krと一緒に出力y1を受信することであって、前記出力y1が、前記別の当事者(210)がコミットしたブロック暗号Eのためのn個の当事者固有の秘密鍵k1、…、knの集合のr番目の鍵krを用いて前記入力xを暗号化することによって、前記別の当事者(210)によって生成された、受信すること、および
前記別の当事者(210)から受信された前記鍵krを用いて前記共通の入力xを暗号化し、それにより前記ブロック暗号Eの出力y1'を生成し、前記生成された出力y1'を前記別の当事者(210)から受信された前記出力y1と比較すること
を前記プロセッサに実施させるプロセッサ実行可能命令を備える、ホスト処理システム。
【請求項15】
当事者(210、220)のグループの間での暗号抽出の実行について、請求項1から13のいずれかに記載の方法の実行のための、非一時的コンピュータ可読記録媒体であって、前記非一時的コンピュータ可読記録媒体が、
共通の入力xおよびインデックスrを取得すること、
当事者(210、220)の前記グループの別の当事者(210)から、鍵krと一緒に出力y1を受信することであって、前記出力y1が、前記別の当事者(210)がコミットしたブロック暗号Eのためのn個の当事者固有の秘密鍵k1、…、knの集合のr番目の鍵krを用いて前記入力xを暗号化することによって、前記別の当事者(210)によって生成された、受信すること、および
前記別の当事者(210)から受信された前記鍵krを用いて前記共通の入力xを暗号化し、それにより前記ブロック暗号Eの出力y1'を生成し、前記生成された出力y1'を前記別の当事者(210)から受信された前記出力y1と比較すること
を行うように、当事者(210、220)の前記グループの当事者(220)のホスト処理システムを構成するためのプログラムコードを備える、非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は暗号学の分野に関する。より具体的には、本発明は、当事者のグループの間での暗号抽選(cryptographic sortition)の実行のためのコンピュータにより実施される方法に関する。
【背景技術】
【0002】
検証可能乱数関数(VRF: Verifiable Random Function)は基本的に、任意の入力について、鍵を入手できない第三の当事者には疑似乱数に見える値を出力する鍵付き関数である。さらに、関数の各々の評価は、出力とは別に、その関数が正しく計算されたことを第三の当事者が検証することを可能にする検証トークンを提供する。
【0003】
proof-of-stakeに基づくブロックチェーンなどの分散型の適用例は、VRFを使用して抽選を行う(Yossi Gilad他:「Algorand: Scaling Byzantine Agreements for Cryptocurrencies」、SOSP '17: Proceedings of the 26th Symposium on Operating Systems Principles、2017年10月、p. 51~68、https://doi.org/10.1145/3132747.3132757を参照)。たとえば、proof-of-stakeブロックチェーンでは、各ノードは、秘密鍵を固定することによってその固有のVRFを定義する。次に、共通の入力xのもとで、各ノードは、xについて評価されたそのVRFの出力を、評価が正しく行われたことの証明とともにブロードキャストする。正しい出力をブロードキャストしたすべてのノードの中で、何らかのあらかじめ定められた公開の規則に従って、リーダーが選ばれる。たとえば、正しい出力をブロードキャストしたすべてのノードの中で最大の出力をブロードキャストしたノードが、リーダーとして選ばれる。
【0004】
最新のVRFは楕円曲線または双線型写像に基づく。したがって、それらは計算するのに高価であり、ポスト量子安全性を提供しない(上記の参考文献において説明されるように)。ポスト量子安全性をもつ最近提案されたVRFは格子に基づく。しかしながら、それらは、ポスト量子安全性をもたない代替物よりも計算的に高価である(Muhammed F. Esgin他:「Practical Post-Quantum Few-Time Verifiable Random Function with Applications to Algorand」、Cryptology ePrint Archive、Report 2020/1222、https://eprint.iacr.org/2020/1222を参照)。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Yossi Gilad他:「Algorand: Scaling Byzantine Agreements for Cryptocurrencies」、SOSP '17: Proceedings of the 26th Symposium on Operating Systems Principles、2017年10月、p. 51~68
【非特許文献2】Muhammed F. Esgin他:「Practical Post-Quantum Few-Time Verifiable Random Function with Applications to Algorand」、Cryptology ePrint Archive、Report 2020/1222
【発明の概要】
【発明が解決しようとする課題】
【0006】
したがって、本発明の目的は、ポスト量子安全性を提供すると同時に、これまでに既存の方策より計算的に安価で高速となるように、当事者のグループの間での暗号抽選の、最初に説明されたタイプの実行の方法を、改善してさらに発展させることである。
【課題を解決するための手段】
【0007】
本発明によれば、前述の目的は、当事者のグループの間での暗号抽選の実行のためのコンピュータにより実施される方法によって達成され、この方法は、グループの第1の当事者によって、ブロック暗号Eのためのn個の当事者固有の秘密鍵k1、…、knの集合にコミットするステップと、グループの第1の当事者および少なくとも第2の当事者によって、共通の入力xおよびインデックスrを取得するステップと、第1の当事者によって、コミットされた鍵k1、…、knのr番目の鍵krを用いて入力xを暗号化し、それによりブロック暗号Eの出力y1を生成し、暗号化のために使用される鍵krと一緒に出力y1をパブリッシュするステップと、第2の当事者によって、第1の当事者によりパブリッシュされた鍵krを用いて共通の入力xを暗号化し、それによりブロック暗号Eの出力y1'を生成し、生成された出力y1'を第1の当事者によりパブリッシュされた出力y1と比較するステップとを備える。
【0008】
さらに、上記で言及された目的は、独立請求項においてそれぞれ規定されるような、当事者のグループの間での暗号抽選の実行のための、当事者のグループのある当事者の対応するホスト処理システム、および、当事者のグループの間での暗号抽選の実行のための非一時的コンピュータ可読媒体によって達成される。
【0009】
本発明の実施形態は、対称鍵プリミティブだけに基づくn回セキュアVRFを導入する。「n回セキュア」という用語は、VRFが最大でn個の別個の点について評価され得るという事実を指し、nはシステムパラメータである。したがって、提案されるVRFは、現在使用されているVRFより高速であり、またポスト量子安全性がある。一度定義されると任意の数の入力にわたって評価され得る最新のVRFと比較すると、提案されるVRFは、所与の数の入力について評価される場合にのみセキュアであり、nと表記されるこのパラメータは、関数が生成されるときに設定されなければならない。それでも、本発明の実施形態によれば、抽選プロトコルを構築するにはn回セキュアVRFで十分であることが認識されている。本発明の実施形態によれば、抽選プロトコルは、抽選の結果を決定するための疑似乱数値として、ラウンド固有の入力についてクライアント固有の秘密鍵を用いて評価されたブロック暗号の出力を使用する。
【0010】
ある実施形態によれば、本発明は、対称鍵暗号プリミティブだけを使用することによって暗号抽選を実施するための方法を提供し、この方法は、
1)クライアントによって、ブロック暗号のためのn個の秘密鍵k1、…、knの集合にコミットするステップと、
2)ブロックチェーンまたは信用される当事者から、入力xおよびインデックスrを取得するステップと、
3)クライアントによって、ステップ1)においてコミットされたr番目の鍵krを用いてステップ2)の入力xを暗号化するステップと、
4)クライアントによって、ブロック暗号yの出力およびステップ3)の間に使用された鍵krをパブリッシュするステップと、
5)第2のクライアントによって、ステップ4)において受信された鍵krを用いてステップ2)において受信された入力xを暗号化するときのブロック暗号の出力を、ステップ4)において受信された値yと比較するステップとを備える。
【0011】
ある実施形態によれば、暗号抽選は、proof-of-stakeベースのブロックチェーンのリーダー選出方式の各選出ラウンドにおいて実行され得る。この文脈では、インデックスrはそれぞれの選出ラウンドのためのカウンタの値を決定し得る。proof-of-stakeベースのブロックチェーンにおけるリーダー選出プロトコルのために暗号抽選を使用することによって、ブロックチェーンアプリケーションのスループットを大幅に高めることができる。
【0012】
ある実施形態によれば、i)出力y1があらかじめ定められた公開の選出規則に適合すると決定され、かつii)生成された出力y1'が第1の当事者によってパブリッシュされた出力y1と同一である場合に、第2の当事者が第1の当事者を選出されたリーダーの集合に加えることが規定され得る。たとえば、選出規則は、そのVRF出力があらかじめ定められた間隔にある場合、またはあらかじめ定められた閾値を超える場合に、リーダーの1つとしてある当事者を指定する、ブール関数を用いてモデル化され得る。
【0013】
ある実施形態によれば、入力xはラウンド固有であってもよく、参加する当事者は、ラウンド固有の入力xのいずれかが利用可能になる前に、当事者固有の秘密鍵k1、…、knの集合にコミットし得る。このことは、入力xをすでに知っている当事者が、その当事者の選出を保証する値をVRF(k,x)が出力するような方法で簡単にkを選べないようにするために、プロトコルにとって重要である。
【0014】
ある実施形態によれば、入力xはラウンド固有であってもよく、参加する当事者は、ラウンド固有の入力xが利用可能になった後にのみ、それらの当事者固有の秘密鍵kを明らかにし得る。この文脈では、当事者がy=VRF(k,x)およびkをパブリッシュしない限り、yが正しく計算されたことを他の当事者が検証できないことに留意することが重要である。
【0015】
ある実施形態によれば、共通の入力xと、1とnの間で循環し次の選出ラウンドを記録するインデックスrとが、ブロックチェーンから取得され得る。たとえば、xとrの両方が、ブロックチェーンの最後のブロックに決定的関数を適用することによって導出され得る。代替として、パラメータは信用される当事者から取得され得る。
【0016】
ある実施形態によれば、n個の当事者固有の秘密鍵k1、…、knの集合へのコミットメントは、マークル木の助けにより実現され得る。より具体的には、それぞれの当事者は、木の葉ノードのための入力バイナリ列として鍵k1、…、knを使用することによって、およびハッシュ関数Hを使用することによって、マークル木を構築し得る。次いで、それぞれの当事者は、得られたマークル木の根のラベルRをその公開鍵としてパブリッシュし得る。
【0017】
本発明の実施形態に従って提案されるVRFは、さらなる入力を用いて評価アルゴリズムEval()を拡張する。具体的には、Eval()は秘密鍵k1、…、kn、共通の入力x、およびインデックスrを入力として取り込んでもよく、インデックスrは、入力xにわたって関数を評価するために秘密鍵k1、…、knのいずれが使用されるかを決定するために、かつ出力y1および証明π1を生み出すために使用される。ある実施形態によれば、参加する当事者によって関数Eval()を実行することは、
- マークル木のr番目の葉ノードから根までのノードラベルの共経路(co-path)Cを計算するステップであって、共経路が、i番目の葉から根までの巡回を仮定すると、巡回に沿ったノードのすべての兄弟のラベルのセットである、ステップと、
- ブロック暗号Eを使用して鍵krを用いて入力xを暗号化することによって出力y1を決定するステップと、
- タプル[kr,C]からなる証明π1を生成するステップとを含み得る。
【0018】
最後に、それぞれの当事者は、証明π1と一緒に出力y1をパブリッシュし得る。
【0019】
本発明の実施形態に従って提案されるVRFは検証アルゴリズムVerify()を含み、これは、公開鍵pk、バイナリ列xおよびy、ならびに証明πという入力について、0(無効)または1(有効)のいずれかを出力する決定的アルゴリズムの形態で実装され得る。具体的には、ある実施形態によれば、第1の当事者から受信された第1の当事者の公開鍵pk1、入力x、出力y1、および証明π1、ならびにインデックスrに基づいて、第2の当事者によって関数Verify()を実行するステップは、
- マークル木の根のラベルRとして第1の当事者の公開鍵pk1を解析するステップと、
- [kr,C]として証明π1を解析するステップと、
- 入力xがラベルRによって特定されるマークル木のr番目の葉ノードへの入力列であることを検証するために共経路Cを使用するステップと、
- 両方の検証が成功する場合、1を出力し、それ以外の場合、0を出力するステップとを含み得る。
【0020】
すでに上記で言及されたように、本発明の実施形態は、対称鍵プリミティブのみを使用する。したがって、本発明の実施形態による抽選プロトコルは、他の抽選プロトコルより高速であり、ポスト量子安全性を達成する。たとえば、AES(Advanced Encryption Standard)ブロック暗号がブロック暗号Eとして使用され得る。ハッシュ関数Hに関して、この関数はSHA(Secure Hash Algorithm)ハッシュ関数のグループから選出されることが規定され得る。
【0021】
本発明の教示を都合よく設計してさらに発展させるいくつかの方法がある。この目標を達成するために、一方では従属請求項を参照し、他方では例として図により示される本発明の好ましい実施形態の以下の説明を参照されたい。図面の助けにより、本発明の好ましい実施形態の説明に関連して、本教示の全般に好ましい実施形態およびさらなる発展が説明される。図面において、
【図面の簡単な説明】
【0022】
図1】本発明のある実施形態の文脈において使用されるいくつかの関数によって操作されるマークル木を示す図である。
図2】本発明のある実施形態による2名の当事者から選ぶための暗号抽選を示す図である。
【発明を実施するための形態】
【0023】
proof-of-stakeに基づくブロックチェーンなどの分散型の適用例は、検証可能乱数関数(VRF)を使用することによって抽選を行う。本発明の実施形態は、最新の方策よりも高速で、かつポスト量子安全性を達成する、n回セキュアVRFに基づく抽選プロトコルを提供する。
【0024】
本発明の実施形態を詳しく説明する前に、本発明を理解するために必要とされる程度に、VRFの概念が説明される。一般に、VRFは、次のように定義されるアルゴリズムParamGen、KeyGen、Eval、Verifyのタプルである。
・ParamGenは、セキュリティパラメータλという入力について、いくつかのグローバルパラメータppを出力する確率的アルゴリズムである。本発明の実施形態によれば、後者は以下のアルゴリズムのすべてへの暗黙的な入力であると考えられる。
・KeyGenは、秘密鍵skおよび公開鍵pkを出力する確率的アルゴリズムである。
・Evalは、バイナリ列xおよび秘密鍵skという入力について、バイナリ列yおよび証明πを出力する決定的アルゴリズムである。
・Verifyは、公開鍵pk、バイナリ列xおよびy、ならびに証明πについて、0(無効)または1(有効)のいずれかを出力する決定的アルゴリズムである。
【0025】
VRFは、アルゴリズムParamGenおよびKeyGenが善良に実行されると仮定して、任意のバイナリ列xに対して、Eval(sk,x)が[y,π]を出力する場合に、Verify(pk,x,y,π)が1を出力すれば、非公式に正しい。
【0026】
さらに、VRFは疑似ランダムであるべきである。すなわち、敵対者が、その選出xの入力についてのVRFの出力を、そのVRF出力と同じ長さのランダム列と効率的に区別することが可能であるべきではない。xとは異なる敵対者の選出の入力に対して、敵対者がVRF出力値およびそれらの証明を入手できるという事実にもかかわらず、疑似ランダム性が保たれなければならない。
【0027】
最後に、VRFは一意であるべきであり、すなわち、公開鍵pkおよび入力値xが与えられると、Verify(pk,x,y11)=Verify(pk,x,y22)=1である場合、y1=y2である。
【0028】
本発明の実施形態に従って提案されるn回セキュアVRFは、さらなる入力を用いて評価アルゴリズムEvalを拡張する。具体的には、Evalは、秘密鍵sk、入力値x、および追加で、インデックスiを入力として取り込み得る。秘密鍵skは実際には秘密鍵のベクトルであり、インデックスiは、入力値xにわたって関数を評価するためにベクトルの秘密鍵skのいずれが使用されるかを決定するために使用され得る。各鍵は一度だけ使用され得る。
【0029】
本発明の実施形態によれば、VRFのアルゴリズムのいくつかは、マークル木を固有の方法で操作するいくつかの特定の関数を使用し得る。本明細書においてMTCommit、MTOpenおよびMTVerifyと表記されるこれらの特定の関数、ならびにマークル木に関連したそれらの使用法が、図1を参照して以下で詳しく説明される。
【0030】
暗号学的ハッシュ関数Hが与えられると、マークル木100は、各葉ノード110iがバイナリ列120iにわたって計算されたHの出力を用いてラベリングされ、一方、各非葉ノードがその子ノードのラベルにわたって計算されたHの出力を用いてラベリングされるような、バイナリ木である。したがって、マークル木Tは、葉ノード110iのラベルを計算するために使用されるn個の入力バイナリ列120iによって、ならびにその根130のラベルによって決定される。具体的には、図1は、8個の入力列x1、…、x8を伴うマークル木100の例を示す。2つのノードの間の線は、親ノードのラベルが子ノードのラベルをハッシュすることによって計算されることを示す。
【0031】
特に、根130のラベルが入力バイナリ列120iへのコミットメントとして使用され得る。具体的には、n個のバイナリ列x1、…、xnのリストにコミットするために、当事者は、x1、…、xnを入力として使用してマークル木Tを構築し、得られた木の根ラベルRをパブリッシュすることができる。一方では、木の根ラベルは入力列120iを完全に決定する。他方では、Hの一方向性の性質、すなわちHの出力が与えられても元の入力を復元することが難しいという事実は、根ラベルが入力列120iについての情報を漏洩しないことを確実にする。
【0032】
バイナリ列xがi番目のコミットされた入力であることを証明するために、同じ当事者が、Tのi番目の葉110iから根130へのノードラベルの「共経路」をパブリッシュすることができる。i番目の葉110iから根130への巡回を仮定すると、その共経路は、巡回に沿ったノードのすべての兄弟のラベルのセットである。たとえば、図1の木におけるx2の共経路は{l7,l4,l2}である。根ラベルR、共経路C、入力x、およびインデックスiが与えられると、あらゆる当事者が、xが根ラベルRをもつマークル木100のi番目の葉110iへの入力であったかどうかを確認することができる。そうするためには、xおよびCを使用して、i番目の葉110iから根130までのすべてのノードラベルを計算し、得られた根ラベルをRと比較することで十分である。2つのラベルが等しい(それぞれ異なる)場合、xは根ラベルRをもつマークル木100へのi番目の入力として受け入れられる(それぞれ拒絶される)。
【0033】
図1の例について続けると、根ラベルR、共経路{l7,l4,l2}、および入力xが与えられると、xがRにより決定される木の第2の葉1102への入力であるかどうかを検証するために、当事者は、l'8=H(x)、l'3=H(l7,l'8)、l'1=(l'3,l4)、R'=H(l'1,l2)を計算し、R'がRと一致するかどうかを確認する。共経路における要素の数はn(すなわち、入力列120iの数)に比例することに留意されたい。
【0034】
本開示の文脈では、以下の定義および表記が使用される。
・T:=MTCommit(H,x1,…xn)は、ハッシュ関数Hを使用することによって入力列x1,…xnのリストからマークル木を計算するアルゴリズムを表す。
・[x,C]:=MTOpen(H,T,x,i)は、xがTのi番目の葉への入力列であることの証明として共経路Cを出力するアルゴリズムを表す。表記の便宜上、MTOpenは入力列xも出力すると本明細書では仮定される。
・MTVerify(H,R,x,i,C)は、xがラベルRによって特定される木のi番目の葉への入力列であるかどうかを検証するために共経路Cを使用するアルゴリズムを表す。
【0035】
ここで、本発明の実施形態に従って提供されるn回セキュアVRFに戻ると、マークル木の操作のための上記のアルゴリズムは、VRFアルゴリズムとともに利用され得る。たとえば、Eをブロック暗号とし、E(k,m)は秘密鍵kを用いたメッセージmの暗号化を表す。また、MTCommit(H,x1,…xn)、MTOpen(H,T,x,i)、およびMTVerify(H,R,x,i,C)を、上記で定義されたようなマークル木を操作するためのアルゴリズムを表すものとする。
【0036】
ある実施形態によれば、VRFの必要とされるパラメータは、VRFのアルゴリズムParamGenによって次のように生成され得る。ParamGenは、マークル木を操作するアルゴリズムによって使用されるべきブロック暗号E(たとえばAES-128)の記述およびハッシュ関数H(たとえばSHA-256)の記述を含む、グローバルに有効な公開パラメータppを出力するように設計され得る。さらに、ParamGenは、関数評価の回数nの上限を出力し得る。公開パラメータppは、以下のアルゴリズムのすべてに対する暗黙的な入力であると考えられ得る。
【0037】
ある実施形態によれば、VRFによって使用される鍵のペア、すなわち秘密鍵skおよび公開鍵pkは、VRFのアルゴリズムKeyGenによって次のように生成され得る。
- ブロック暗号Eのためのn個のランダムな鍵k1、…、knを選び、
- T:=MTCommit(H,k1,…,kn)を計算し、
- sk:=(k1,…kn)およびpk:=Rと設定し、RはTの根ラベルである。
【0038】
ある実施形態によれば、VRFによって使用される評価アルゴリズムEval()は、秘密鍵sk、入力値x、および現在の従来技術の手法に加えてインデックスiを入力として取り込んでもよく、すなわちEval(sk,x,i)である。上記で説明されたように、秘密鍵skは秘密鍵のベクトルであり(すなわち、sk:=(k1,…kn))、インデックスiは、入力値xにわたって関数を評価するためにベクトルskの秘密鍵のいずれが使用されるかを決定するために使用される。各鍵は一度だけ使用され得る。評価アルゴリズムは、以下の処理ステップを実行し得る。
- k1,…knとしてskを解析し、
- [ki,C]:=MTOpen(H,T,ki,i)を計算し、
- y=E(ki,x)およびπ:=[ki,C]と設定する。
【0039】
ある実施形態によれば、VRFによって使用される検証アルゴリズムVerify()は、公開鍵pk、入力値x、出力値y、インデックスi、および証明πを入力として取り込んでもよく、すなわちVerify(pk,x,y,i,π)である。検証アルゴリズムは、以下の処理ステップを実行し得る。
- Rとしてpkを解析し、
- [k,C]としてπを解析し、
- E(k,x)がyに等しく、MTVerify(H,R,x,i,C)が1を出力する場合、1を出力し、それ以外の場合0を出力する。
【0040】
本発明の実施形態によれば、上記のVRFは、ある数の当事者、特にブロックチェーンに参加する特定の当事者の間で抽選を行うために使用される。この文脈では、ブロックチェーンが、VRFの評価のための共通の入力x、および1とnの間で循環して次の選出ラウンドを記録するラウンドカウンタrを提供すると考えられる。たとえば、xとrの両方が、決定的関数をブロックチェーンのそれぞれの最後のブロックに適用することによって導出され得る。
【0041】
一般性を失うことなく、参加する当事者の各々が、あるVRF出力を使用して、その出力を提供した当事者がリーダーの1つとして選ばれるかどうかを判別できるとさらに考えられる。たとえば、選出プロトコルは、ある当事者のVRF出力があらかじめ定められた間隔にある場合、その当事者をリーダーの1つとして指定し得る。本発明のある実施形態によれば、そのようなリーダー指定方式は、ブール関数Leader()を用いてモデル化され得る。
【0042】
P1、…、Pmをプロトコルに参加する当事者とする。選出が開始できる前に、当事者のすべてがこの方式の公開パラメータについて合意する。代替として、公開パラメータは、信用される第三の当事者によって選ばれてもよい。xを共通の入力とし、rを次の選出ラウンドのためのカウンタの値とする。当事者Pjは次のことを行う。
・r=1である場合
○[skj,pkj]:=KeyGen()を実行する
○pkjをブロードキャストする
○i∈{1,…,m}およびi≠jについてpkiを受信するのを待つ
【0043】
【数1】
【0044】
と設定する
・[yjj]:=Eval(skj,x,r)を実行する
・Leader(yi)=1である場合
○L:=L∪{Pj}
○[yjj]をブロードキャストする
・i∈{1,…,m}かつi≠jであるPiから[yii]を受信すると
○[ki,Ci]としてπiを解析する
○Verify(pki,x,yi,r,πi)=1かつyi=E(ki,x)かつLeader(yi)=1である場合
・L:=L∪{Pi}
【0045】
図2は、本発明のある実施形態による、第1の当事者210(P1と表記される)と第2の当事者220(P2と表記される)との間での簡単な選出方式200を示す。この例では、理解を簡単にすることのみを目的に、当事者の数は2名の当事者に限定されている。しかしながら、たとえばブロックチェーンにおけるproof-of-stakeプロトコルの実行に関連する実際の展開シナリオでは、典型的にはより多くの参加する当事者が関わることを当業者により理解されるだろう。
【0046】
最初に、図2のS_2.1に示されるように、ラウンドカウンタrが1に設定され、入力パラメータxが決定される。
【0047】
次に、S_2.2に示されるように、当事者210、220の各々が、鍵のペアski、pkiを作成し、S_2.3に示されるように、公開鍵pkiを分配する。ある実施形態によれば、上記で詳しく説明されたように、鍵のペアは、VRFのKeyGen()アルゴリズムを実行することによって生成され得る。
【0048】
公開鍵pkiの交換の後、S_2.4に示されるように、両方の当事者210、220が、現在の選出に対するリーダーLのローカル集合を空集合に初期化する(すなわち、
【0049】
【数2】
【0050】
)。
【0051】
次に、S_2.5に示されるように、両方の当事者210、220が、それらの秘密鍵skiを使用して入力xに対してVRFのEval()関数を実行して、出力値yiおよび証明πiを取得する。
【0052】
一般性を失うことなく、図2の例は、y1がP1の選出を決定し、一方でP2が選出されないことをy2が規定すると仮定する。したがって、S_2.6に示されるように、当事者210は、選ばれたリーダーLの集合に自身を追加し、すなわち、L:=L∪{P1}、S_2.7に示されるように、y1、π1を分配する。
【0053】
y1、π1を受信すると、S_2.8に示されるように、当事者P2は、必要な確認を行い、P1を選ばれたリーダーのその集合に追加する。当事者P2によって行われる確認は、受信された証明π1をk1、C1へとまず解析することを含む。次に、当事者P2は、当事者P1から受信されるような、当事者P1の公開鍵pk1、入力パラメータx、バイナリ列y1、および証明π1という入力に対して検証アルゴリズムVerify()を実行する。結果が0(すなわち、無効)である場合、当事者P2はプロセスを中止することができ、選ばれたリーダーLの集合は変わらないままである。
【0054】
一方、結果が1(すなわち、有効)である場合、当事者P2は、当事者P1から受信されたパラメータy1の正しさをさらに確認する。そうするために、当事者P2は、ブロック暗号Eを使用して、解析された鍵k1を用いて入力パラメータxを暗号化し、結果がy1に対応するかどうかを確認する。
【0055】
これが正しい場合、最後に、当事者P2は、ある当事者のVRF出力に基づいてその当事者がリーダーとして指定されるかどうかを決定するブール関数Leader()を、当事者P1のVRF出力y1に適用する。結果が1である場合、当事者P2は、当事者P1を追加することによって、選ばれたリーダーLの集合を修正する、すなわち、L:=L∪{P1}。
【0056】
上記で説明されたプロセスは、n回、すなわちr=nになるまでセキュアに繰り返され得る。n回の抽選の後、参加する当事者P1およびP2は、すなわち鍵生成アルゴリズムKeyGen()を実行することによって、それらの秘密鍵および公開鍵を新しくしなければならない。
【0057】
前述の説明および関連する図面において提示される教示の恩恵を受ける、本発明に関係する分野の当業者には、本明細書に記載される本発明の多くの修正および他の実施形態が想起されるだろう。したがって、本発明が開示される特定の実施形態に限定されるべきではないこと、およびその修正と他の実施形態が添付の特許請求の範囲内に含まれることが意図されることとが理解されるべきである。特定の用語が本明細書で利用されるが、それらは、限定のためではなく、包括的、記述的意味を意図してのみ使用される。
【符号の説明】
【0058】
100 マークル木
110 葉ノード
120 バイナリ列
130 根
200 簡単な選出方式
210 第1の当事者
220 第2の当事者
図1
図2
【国際調査報告】