(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-18
(54)【発明の名称】共有暗号キーを生成すること
(51)【国際特許分類】
H04L 9/08 20060101AFI20240910BHJP
H04L 9/32 20060101ALI20240910BHJP
【FI】
H04L9/08 A
H04L9/32 200B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024514696
(86)(22)【出願日】2022-08-08
(85)【翻訳文提出日】2024-04-12
(86)【国際出願番号】 EP2022072210
(87)【国際公開番号】W WO2023036528
(87)【国際公開日】2023-03-16
(32)【優先日】2021-09-07
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ミカエラ・ペティット
(72)【発明者】
【氏名】アレクサンドル・パウノイウ
(72)【発明者】
【氏名】クレイグ・スティーヴン・ライト
(57)【要約】
共有秘密キーの共有を生成するコンピュータ実装方法であって、参加者のグループの各参加者がマスタ秘密キーのそれぞれの共有を有し、方法はグループの第1の参加者によって実行され、第1の共有秘密の第1の共有を生成するステップであって、グループのそれぞれの他の参加者が第1の共有秘密のそれぞれの共有を生成するステップと、マスタ秘密キーの第1の共有および第1の共有秘密の第1の共有に基づいて、第1の共有秘密キーの第1の共有を生成するステップとを備える、コンピュータ実装方法。
【特許請求の範囲】
【請求項1】
共有秘密キーの共有を生成するコンピュータ実装方法であって、参加者のグループの各参加者がマスタ秘密キーのそれぞれの共有を有し、前記方法が前記グループの第1の参加者によって実行され、
第1の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第1の共有秘密のそれぞれの共有を生成するステップと、
前記マスタ秘密キーの第1の共有および前記第1の共有秘密の前記第1の共有に基づいて、第1の共有秘密キーの第1の共有を生成するステップと
を備える、コンピュータ実装方法。
【請求項2】
各参加者が前記マスタ秘密キーに対応するマスタ公開キーを有し、
前記第1の共有秘密に対応する公開キーを生成するステップと、
前記マスタ公開キーと前記第1の共有秘密に対応する前記公開キーとに基づいて、前記第1の共有秘密キーに対応する第1の公開キーを生成するステップと
を備える、請求項1に記載の方法。
【請求項3】
第2の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第2の共有秘密のそれぞれの共有を生成する、ステップと、
前記マスタ秘密キーの前記第1の共有と前記第2の共有秘密の前記第1の共有とに基づいて、第2の共有秘密キーの第1の共有を生成するステップと
を備える、請求項1または2に記載の方法。
【請求項4】
第3の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第3の共有秘密のそれぞれの共有を生成する、ステップと、
第1の秘密キーの前記第1の共有と前記第3の共有秘密の前記第1の共有とに基づいて、第3の共有秘密キーの第1の共有を生成するステップと
を備える、請求項1から3のいずれか一項に記載の方法。
【請求項5】
第3の共有秘密に対応する公開キーを生成するステップと、
第1の公開キーと、前記第3の共有秘密に対応する前記公開キーとに基づいて、第3の共有秘密キーに対応する第3の公開キーを生成するステップと
を備える、請求項2または4に記載の方法。
【請求項6】
前記第1の共有秘密キーの前記第1の共有が、前記マスタ秘密キーの前記第1の共有と前記第1の共有秘密の前記第1の共有との加算に基づいて生成される、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記第1の共有秘密キーの前記第1の共有が、前記マスタ秘密キーの前記第1の共有と前記第1の共有秘密の前記第1の共有との乗算に基づいて生成される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記マスタ秘密キーのそれぞれのしきい値が、前記第1の共有秘密のそれぞれのしきい値と同じである、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記マスタ秘密キーのそれぞれのしきい値が、前記第1の共有秘密のそれぞれのしきい値よりも高い、請求項1から7のいずれか一項に記載の方法。
【請求項10】
前記マスタ秘密キーのそれぞれのしきい値が、前記第1の共有秘密のそれぞれのしきい値よりも小さい、請求項1から7のいずれか一項に記載の方法。
【請求項11】
メッセージを取得するステップと、
前記第1の共有秘密キーの前記第1の共有と前記メッセージとに基づいて、デジタル署名の第1の共有を生成するステップと
を備える、請求項1から10のいずれか一項に記載の方法。
【請求項12】
第4の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第4の共有秘密のそれぞれの共有を生成し、前記第1の共有秘密キーが中間秘密キーであり、前記中間秘密キーの前記第1の共有が、前記第4の共有秘密の前記第1の共有にさらに基づく、ステップと、
前記中間秘密キーの前記第1の共有を前記グループのそれぞれの他の参加者が利用できるようにするステップと、
それぞれの他の参加者から前記中間秘密キーのそれぞれの共有を受信するステップと、
前記中間秘密キーの前記第1の共有と、前記中間秘密キーの前記受信したそれぞれの共有とに基づいて、前記中間秘密キーを生成するステップと、
前記中間秘密キーと前記第4の共有秘密の前記第1の共有とに基づいて、第4の秘密キーの第1の共有を生成するステップと
を備える、請求項1に記載の方法。
【請求項13】
前記マスタ秘密キー、前記第1の共有秘密、および前記第4の共有秘密の各々のしきい値が同じである、請求項12に記載の方法。
【請求項14】
前記中間秘密キーの前記第1の共有が、前記マスタ秘密キーの前記第1の共有と前記第1の共有秘密の前記第1の共有との乗算に基づいて生成され、したがって前記中間秘密キーのしきい値が前記マスタ秘密キーよりも高くなる、請求項12または13に記載の方法。
【請求項15】
メッセージを取得するステップと、
第4の共有秘密キーの前記第1の共有と前記メッセージとに基づいて、デジタル署名の第1の共有を生成するステップと
を備える、請求項1から14のいずれか一項に記載の方法。
【請求項16】
メッセージがブロックチェーントランザクションの少なくとも一部を備える、請求項10または14に記載の方法。
【請求項17】
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、前記メモリが、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードが、前記処理装置上で請求項1から16のいずれか一項に記載の方法を実行するように構成される、コンピュータ機器。
【請求項18】
コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、請求項1から16のいずれか一項に記載の方法を実行するように構成された、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、共有秘密キーの共有を生成する方法に関する。共有は、デジタル署名の共有を生成するために、たとえばブロックチェーントランザクションに署名するために使用され得る。
【背景技術】
【0002】
一般に、共有秘密は、参加者のグループ間で分配されるデータ項目を共有するために使用され得る。各参加者は秘密の異なる共有を有する。通常、秘密は、特定の数(「しきい値」と呼ばれる)の参加者がそれぞれの共有を利用可能にした場合にのみ、たとえば、秘密を計算するために組み合わせるために再構築することができる。
【0003】
公開キー暗号化は、秘密キーの所有者のみが知っている秘密キーと、対応する秘密キーとに基づいて生成され、秘密キーのセキュリティを侵害することなく配布される公開キーとの、キーのペアを使用する暗号システムの一種である。
【0004】
公開キー暗号化を使用すると、送信者は受信者の公開キー(すなわち、受信者のみが知っている秘密キーに対応する公開キー)を使用してメッセージを暗号化することができる。次いで、暗号化されたメッセージは、受信者の秘密キーを使用してのみ復号化することができる。
【0005】
同様に、送信者は、メッセージに署名するために、たとえば、メッセージが送信者によって送信されたことを証明するため、および/または送信者がメッセージに同意していることを示すために、自分自身の秘密キーを使用することができる。署名者(すなわち、署名を生成する関係者)は、メッセージに基づいてデジタル署名を作成するために秘密キーを使用する。メッセージに基づいてデジタル署名を作成するということは、メッセージと秘密キーとの両方に基づいて署名を生成する関数にメッセージと秘密キーを供給することを意味する。署名はメッセージに追加される(たとえば、タグ付けされる)か、またはメッセージに関連付けられる。署名者の対応する公開キーを持っている人は誰でも、署名が有効に作成されたかどうか、すなわち、その署名が実際に署名者の秘密キーを使用して作成されたかどうかを検証するために、同じメッセージとそのメッセージのデジタル署名を使用することができる。デジタル署名は、メッセージの信頼性を保証するだけでなく、メッセージの完全性と否認防止も保証する。すなわち、メッセージが署名で署名されてから変更されていないこと、および署名の作成者が署名を作成したことを将来的に否定できないことを証明するために、デジタル署名を使用することができる。
【0006】
デジタル署名スキームには通常、3つの手順、すなわちアルゴリズムを含む。ランダムな秘密キーと対応する公開キーを生成するために、キー生成アルゴリズムが使用される。署名アルゴリズムは、メッセージと秘密キーとに基づいて署名を生成するために使用される。検証アルゴリズムは、公開キーとメッセージを指定して、署名が、対応する秘密キーを使用して、また署名アルゴリズムに従って生成されたかどうかを検証するために使用される。
【0007】
共有秘密の一般的な使用法は、秘密キーと公開キーのペアの共有秘密キーとしての使用である。すなわち、秘密キーは、単一の参加者が秘密キーにアクセスできないように、参加者のグループ間で分配され得る。したがって、単一の参加者がメッセージの有効な署名を生成することはできない。代わりに、署名を生成するために、参加者の一部または全員が共同で秘密キーを生成する必要がある。
【0008】
参加者が、署名を生成するために秘密キーの共有を共有する代わりに、しきい値署名スキームを使用し得る。しきい値署名スキームを使用すると、グループ内のしきい値数の参加者が、秘密キーを任意の1人の参加者が利用できるようにすることなく、共有秘密キーの個別の共有を使用してメッセージに基づいてデジタル署名を作成できるようになる。ここで、デジタル署名とは、署名対象のメッセージに基づいて生成される署名である。そのようなスキームでは、しきい値数の参加者がメッセージに署名を生成することに同意した場合にのみ署名を作成することができる。より少ない数の参加者を使用して署名を生成しようとすると、有効な署名は生成されない。したがって、グループによる有効な署名(すなわち、メッセージと共有秘密キーを使用して生成された署名)は、しきい値に達した人数が署名の生成に同意したことを証明する。これはまた、攻撃者が秘密キーを使用して署名を偽造するためには、秘密キーのしきい値数の共有を取得する必要があることを意味する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】国際特許出願WO2017/145016
【発明の概要】
【発明が解決しようとする課題】
【0010】
暗号キーは通常、認証、認可、暗号化に使用される。たとえば、2者間で安全な通信チャネルを作成するために、または、ブロックチェーントランザクションなどのメッセージを認可するために、暗号キーを使用することができる。いずれの場合も、プロトコル遂行ごとに、たとえば、認可される(すなわち、署名される)メッセージごとに新しいキーを生成することが有益である。同様に、セキュリティとプライバシ上の理由から、ブロックチェーンなどの公開台帳においてキーの再利用を避けることが推奨される。したがって、関係者は多くのキーを必要とする場合がある。キーを導出するための技法の1つは、ビットコイン改善提案(bitcoin improvement proposal、BIP)32標準において説明されており、これにより、決定論的非対称キーの導出が可能になる。決定論的キーを生成するための別の技法は、国際特許出願WO2017/145016に記載されている。
【0011】
どちらの技法もマスタ秘密キーからキーを導出する。しかしながら、マスタキーから決定論的キーを導出することによって、マスタキーの喪失または盗難が、キーによって制御されているデジタル資産へのアクセスの喪失などの壊滅的な結果につながる可能性がある。この単一の障害点を軽減する1つの方法は、しきい値署名を使用することである。これにより、しきい値数の正直な参加者が関与している限り、複数の参加者にわたって署名を生成できるようになる。
【0012】
とりわけ、しきい値署名の生成に使用され得る、共有秘密キーの共有を生成するための新規な技法を提供することが望ましい。共有秘密キーはしきい値を有し、少なくともしきい値の数の参加者がそれぞれの署名共有を提供すれば秘密キーを生成できることを意味する。同じことがしきい値署名にも当てはまる。これにより、単一の障害点の問題が解消される。
【課題を解決するための手段】
【0013】
本明細書で開示される一態様によれば、共有秘密キーの共有を生成するコンピュータ実装方法であって、参加者のグループの各参加者はマスタ秘密キーのそれぞれの共有を有し、方法はグループの第1の参加者によって実行され、第1の共有秘密の第1の共有を生成するステップであって、グループのそれぞれの他の参加者が第1の共有秘密のそれぞれの共有を生成するステップと、マスタ秘密キーの第1の共有および第1の共有秘密の第1の共有に基づいて、第1の共有秘密キーの第1の共有を生成するステップとを備える、コンピュータ実装方法が提供される。
【0014】
参加者(たとえば、ユーザなど)のグループはそれぞれ、マスタ秘密キーのそれぞれの共有を有する。マスタ秘密キーは、個々の参加者がマスタ秘密キーにアクセスできないという意味で、グループ内で共有されるが、十分な数の参加者がそれぞれの共有を提供すればマスタ秘密キーを生成することが可能である。マスタ秘密キーを生成するために必要な参加者の数は、キーのしきい値と呼ばれる。
【0015】
マスタ秘密キーは、メッセージを暗号化(たとえば、しきい値暗号化を介して)をするために、および署名(すなわち、しきい値署名)を生成するために使用され得る。しかしながら、暗号化、署名生成などにマスタ秘密キーを使用しないことが望ましいシナリオがある。したがって、マスタ秘密キーに基づいて追加の秘密キーを導出することが好ましい。これらの導出されたキーは、子キーと呼ばれることが多い。第1の子キーを生成するために、参加者は共有秘密(すなわち、整数などの秘密データ)を生成する。すなわち、各参加者は共有秘密のそれぞれの共有を生成する。次いで、各参加者は、マスタ秘密キーのそれぞれの共有と共有秘密のそれぞれの共有に応じて、子秘密キーのそれぞれの共有を生成する。多くの追加の子キーも同様の方法で導出され得る。
【0016】
したがって、本開示は、共有秘密キーの構造を生成する方法を提供し、各共有秘密キーは共有マスタ秘密キーから決定論的に導出され、共有マスタ秘密キーとノンス値のみから共有秘密キーを再生成できるようにする。したがって、単一の障害点の問題は回避される。
【0017】
本開示の実施形態の理解を助け、そのような実施形態がどのように実施されるかを示すために、単なる例として添付の図面が参照される。
【図面の簡単な説明】
【0018】
【
図1】本発明の実施形態を実装するためのシステムの概略ブロック図である。
【
図2】決定論的キー導出技法によって取得される公開キーの例示的な階層を概略的に示す図である。
【発明を実施するための形態】
【0019】
1.暗号に関する準備(CRYPTOGRAPHIC PRELIMINARIES)
以下の例は楕円曲線暗号に関して説明されているが、本発明はいかなる特定の暗号スキームにも限定されるものではなく、一般に、任意の暗号スキーム、たとえば、RSAまたは他の公開キー暗号化スキームに適用することができる。
【0020】
1.1 楕円曲線グループ
楕円曲線Eは次の方程式を満たす。
y2=x3+ax+b mod p
上式で、
【0021】
【0022】
およびa、bは4a3+27b2≠0を満たす定数である。この楕円曲線上のグループは、識別要素である無限大Oにおける点とともに、この方程式を満たす要素(x,y)の集合として定義される。このグループ内の要素に対するグループ演算は楕円曲線点加算と呼ばれ、+によって表される。このグループは
【0023】
【0024】
によって示され、その次数はnによって示される。
【0025】
・によって示される点乗算と呼ばれる要素に対する別の演算を定義するために、このグループ演算を使用することができる。点
【0026】
【0027】
およびスカラ
【0028】
【0029】
の場合、点k・Gは、点Gをそれ自身にk回加算したものとして定義される。
【0030】
楕円曲線暗号では、秘密キーはスカラ
【0031】
【0032】
として定義され、上式で、
【0033】
【0034】
は集合{1,...,n-1}の表記であり、対応する公開キーは楕円曲線上の点k・Gである。たとえば、いくつかのブロックチェーンプロトコルでは、楕円曲線がsecp256k1楕円曲線として選択され、値a、b、およびpはこの曲線によって完全に指定される。このグループの次数nは、これらの値を基に計算されており、この曲線の場合は素数であり、secp256k1標準は、このグループの生成元として使用される点Gも指定する。
【0035】
1.2 楕円曲線デジタル署名アルゴリズム
秘密キーaを使用してメッセージmsgに署名を作成するために、次のステップが実行される。
1.メッセージダイジェストe=hash(msg)を計算し、ここに任意のハッシュ関数があり得る。たとえば、いくつかの例では、hash(msg)=SHA256(SHA256(msg))であり、SHA256(■)はSHA-256ハッシュ関数である。代わりに、メッセージは1回だけハッシュ化されてもよく、同じまたは異なるハッシュ関数を使用して2回以上ハッシュ化されてもよい点に留意されたい。
2.ランダムな整数k∈{1,...,n-1}を選択し、ここで、nは楕円曲線の次数、たとえばsecp256k1曲線である。以下では、kはエフェメラル(ephemeral)秘密キーと呼ばれる。
3.このエフェメラル秘密キーに対応するエフェメラル公開キーk・G=(Rx,Ry)を計算する。
4.r=Rx mod nを計算する。r=0の場合、ステップ2に戻る。
5.エフェメラルキーk-1 mod nの逆乗を計算する。
6.s=k-1(e+ar) mod nを計算する。s=0の場合、ステップ2に戻る。
7.メッセージmsgの署名は(r,s)である。
【0036】
エフェメラルキーは秘密にしておかなければならず、そうしないと、メッセージと署名が与えられると秘密キーが計算されてしまう。さらに、署名が生成されるたびに、異なるエフェメラルキーが使用されなければならない。そうでない場合、2つの異なる署名とそれらに対応するメッセージが与えられると秘密キーを導出することが可能になってしまう。
【0037】
メッセージmsg、公開キーP=a・G、および対応する署名(r,s)が与えられると、次のステップを完了することによって署名を検証することができる。
1.メッセージダイジェストe=hash(msg)を計算し、たとえばe=SHA256(SHA256(msg))である。
2.nを法とするsの逆乗s-1を計算する。
3.j1=es-1 mod nおよびj2=rs-1 mod nを計算する。
4.点Q=j1・G+j2・Pを計算する。
5.Q=Oの場合、無限遠点の場合、署名は無効である。
6.Q≠Oの場合、Q:=(Qx,Qy)とし、u=Qx mod nを計算する。u=rの場合、署名は有効である。
【0038】
しきい値署名スキームでは、この秘密キーaは、しきい値スキームグループにおける参加者間で分配されるキー共有に分割される。
【0039】
1.3 共同検証可能なランダム秘密共有
N人の参加者が、スキーム内の少なくとも(t+1)人の参加者によってのみ再生成することができる共同秘密を作成したいと仮定する。共有秘密を作成するために、次のステップが実行される。
1.参加者は、参加者ごとに固有のラベルiについて同意する。各参加者iは(t+1)個の乱数を生成する。
【0040】
【0041】
上式で、∈Rは、集合のランダムに生成された要素
【0042】
【0043】
を意味し、上式で、
【0044】
【0045】
は、集合{1,...,n-1}の表記法である。次いで、各参加者は、i=1,...,Nの場合の次数tの秘密多項式を有する。
fi(x)=ai0+ai1x+...+aitxt mod n
今後、mod n表記を省略し、整数に対するすべての算術演算がnを法として実行されると仮定している点に留意されたい。
2.各参加者iは、たとえば参加者jのみとの安全な通信チャネルを使用して、値fi(j)を参加者jに送信する。
3.各参加者iは、共有秘密多項式の独自のプライベートな秘密共有(private secret share)を次のように計算する。
【0046】
【0047】
共有秘密共有は、形式(i,ai)の点であり、ここで、iはスキーム内の参加者ラベルである。ステップ1~3において説明したように、aの秘密共有を作成するためのこの方法は、本明細書では、参加者iについてai=JVRSS(i)によって示される。「JVRSS」は通常、「共同検証ランダム秘密共有(Joint verification random secret sharing)」の略であり、ステップ4と5も含む点に留意されたい。しかしながら、本明細書全体を通じて、JVRSSは少なくともステップ1から3を実行することを意味し、ステップ4と5は任意のステップである。
【0048】
参加者は共有多項式を生成したので、他の参加者がすべての参加者に正しい情報を共有していること、およびすべての参加者が同じ共有多項式を有していることをそれぞれ検証することができる。これは次の方法で行われる。
4.各参加者iは、k=0,...,tの場合の難読化された係数
aik・G
をすべての参加者にブロードキャストする。
5.各参加者iは、fj(i)・Gを計算することによって、各参加者jが多項式点fj(i)を正しく計算したかどうかを確認し、
【0049】
【0050】
を検証する。
【0051】
すべての参加者が多項式ごとにこの方程式が成り立つことがわかった場合、グループは、全員が同じ共有多項式を作成したことを集合的に確信することができる。
【0052】
1.4 共有秘密の再構築
参加者が共有多項式の0次である共有秘密aを再構築したいと仮定する。
(1,a1),...,((t+1),at+1)
という形式のこの多項式上の(t+1)個の点が与えられると、共有秘密aを見つけるために、
【0053】
【0054】
を計算し、これは「ラグランジュ補間」として知られる一般式から導出される。
【0055】
1.5 公開キーの計算
JVRSSのステップにおいて共有された、j=1,...,Nの場合のN個の0次秘密多項式係数公開キーai0・Gが与えられると、各参加者は、共有秘密aに対応する
【0056】
【0057】
を使用して共有公開キーPを計算する。
【0058】
1.6 共有秘密の追加
各秘密多項式の次数がtであるN人の参加者のグループ間で共有される2つの共有秘密の加算を、エンティティが個々の秘密を知ることなく計算するために、次のステップが実行される。
1.第1の共有秘密aを生成し、ここで、参加者iの共有は、しきい値(t+1)の、i=1,...,Nの場合のai=JVRSS(i)によって与えられる。
2.第2の共有秘密bを生成し、ここで、参加者iの共有は、しきい値(t+1)の、bi=JVRSS(i)によって与えられる。
3.各参加者iは独自の追加共有を計算する。
vi=ai+bi mod n
4.すべての参加者は、追加の共有viを他のすべての参加者にブロードキャストする。
5.各参加者は、
v=補間(v1,...,vt+1)=a+b
を計算するために、少なくとも(t+1)個の共有viを補間する。
【0059】
共有秘密を追加するこの方法は、参加者iのADDSS(i)によって示され、各参加者iがv=(a+b)を知るという結果をもたらす。
【0060】
1.7 共有秘密の積
各秘密多項式の次数はtである、両方ともN人の参加者のグループ間で共有される2つの共有秘密の積を計算するために、グループは次のステップを実行する。
1.第1の共有秘密aを生成し、ここで、参加者iの共有はi=1,...,Nの場合のai=JVRSS(i)によって与えられる。共有秘密多項式の次数はtであり、(t+1)人の参加者がそれを再作成する必要があることを意味する。
2.第2の共有秘密bを生成し、ここで、参加者iの共有はbi=JVRSS(i)によって与えられ、共有秘密多項式の次数はやはりtである。
3.各参加者は、
μi=aibi
を使用して独自の乗算共有μiを計算する。
4.すべての参加者は、それらの乗算共有μiを他のすべての参加者にブロードキャストする。
5.各参加者は、
μ=補間(μi,...,μ2t+1)=ab
を計算するために、0における共有μiの少なくとも(2t+1)にわたって補間する。
【0061】
2つの共有秘密の積を計算するためのこの方法は、ここでは、参加者iに対してμ=ab=PROSS(i)によって表される。
【0062】
1.8 共有秘密の逆数
共有秘密aの逆数を計算するために、次のステップが実行される。
1.すべての参加者は共有秘密の積PROSS(i)を計算し、その結果はμ=ab mod nとなる。
2.各参加者はμの逆モジュラを計算し、その結果は次のようになる。
μ-1=(ab)-1 mod n
3.各参加者iは、
【0063】
【0064】
を計算することによって、独自の逆秘密共有を計算する。
【0065】
共有秘密の逆数を計算するためのこの方法は、参加者iに対して、
【0066】
【0067】
によって表される。
【0068】
1.9 共有秘密キーの生成と検証
N≧2t+1人の参加者の間で共有秘密キーaを計算するためには、署名を作成するためにそのうちt+1人が必要であり、参加者は、上で説明したように、t+1のしきい値と公開キー計算を使用してJVRSSを遂行する。その結果、すべての参加者i=1,...,Nは秘密キー共有aiと、対応する共有公開キーP=(a・G)を有する。
【0069】
1.10 エフェメラルキー共有の生成
署名において必要とされるエフェメラルキー共有と対応するrを生成するために、しきい値(t+1)の共有秘密キーaを有するサイズNのグループが次のステップを遂行する。
1.共有秘密
【0070】
【0071】
の逆共有を生成し、上式で、再作成するために(t+1)個の共有が必要である。
2.各参加者が、kiの検証において共有された難読化された係数を使用して
【0072】
【0073】
を計算し、次いで、
r=x mod n
を計算する。
3.各参加者iが
【0074】
【0075】
を記憶する。
【0076】
1.11 最適ではない署名の生成
少なくとも2t+1人の参加者がメッセージに署名を作成したいと考えており、参加者のうちの1人がこれを調整することを選択したと仮定する。共有秘密キーaを使用してグループによって署名を作成するために、次のステップが実行される。
1.コーディネータは、少なくとも2t+1人の参加者からのメッセージへの署名を要求する。
2.各参加者iは、前のセクションにおいて計算されたエフェメラルキー
【0077】
【0078】
を回復する。すべてのユーザは、同じエフェメラルキーに対応する共有を使用する必要がある。
3.各参加者は、メッセージダイジェストe=SHA-256(SHA-256(メッセージ))を計算する。
4.各参加者iは自分自身の署名共有si
【0079】
【0080】
を計算し、上式で、aiはそれら秘密キー共有である。
5.各参加者は、自分の署名共有(r,si)をコーディネータに送信する。
6.コーディネータが2t+1個の署名共有を受信すると、
s=補間(s1,....,s2t+1)
を計算し、署名を(r, s)として出力する。
7.コーディネータは、標準のECDSA検証を使用して署名を検証する。これが失敗した場合、共有のうちの少なくとも1つが正しくないため、署名生成アルゴリズムを再度実行する必要がある。
【0081】
1.12 しきい値の異なる秘密の追加
次数tとt'の秘密を加算する場合、2つの秘密の加算を計算するために、max(t,t')+1の共有数を必要とする。この背後にある理由は、共有秘密の共有の加算ステップが、新しい多項式の共有を作成するためである。この新しい加法多項式は、2つの共有秘密の個々の多項式を加算した結果と等価である。2つの多項式を加算することは、xの各次数で対応する係数を加算することである。したがって、加法多項式の次数は、2つの多項式の最高次数と同じ次数でなければならない。これは、3つ以上の多項式の加算に一般化することができ、結果として得られる多項式の次数は、最高次数の個々の多項式の次数と同じである。
【0082】
異なるしきい値を有する2つの秘密の加算が計算されると、しきい値がより高い方の秘密のセキュリティが低下する。これは、それぞれのしきい値t、t'を用いた結果(a+b)がわかっており、t<t'であると仮定すると、t個の共有を用いてaを計算することができ、次いで(a+b)-a=bを計算することができるためであり、したがって、値bはt個の共有のみで計算される。この下限しきい値は、以下ではbの「暗黙のしきい値」と呼ばれる。
【0083】
1.13 異なるしきい値を有する秘密の乗算
tとt'のしきい値を使用して2つの秘密を乗算する場合、乗算の計算はt+t'+1個の共有を必要とする。この場合、2つの多項式の共有を乗算すると、新しい多項式の共有が得られる。この新しい多項式は2つの個別の多項式を乗算した結果であるため、結果の次数は2つの個別の多項式の次数を加算したものになる。
【0084】
乗算はまた、任意の数の共有秘密に一般化することができ、結果のしきい値は、個々のしきい値に1を加えた合計、すなわちΣρtρ+1になり、ここで、ρは個々の共有秘密にわたって実行される。
【0085】
加算と同様に、異なるしきい値を有する2つの秘密を乗算すると、より高いしきい値の秘密に関係するしきい値がもたらされる。前と同様に、aのしきい値がt、bのしきい値がt'であり、t<'であるabが知られている場合、aとbとの両方をt個の共有を用いて計算することができる。まず、aを計算し、(ab)a-1を使用して、秘密のt個の共有だけを有するbを見つけることができる。
【0086】
1.14 1つのステップにおける、共有秘密の加算と乗算の結合
加算と乗算の任意の組合せを1ステップで計算するために、上記を一般化することが可能である。N人の参加者のグループが結果ab+cを計算したいと仮定し、ここで、a、b、cはしきい値(ta+1)、(tb+1)、(tc+1)をそれぞれ有する共有秘密である。max(ta+tb,tc)<Nという条件があり、すなわち、スキームの参加者の数は、秘密cの次数と、秘密aとbとの乗算の結果の次数との間の最大値よりも大きくなければならない。
1.各参加者iは、それぞれしきい値(ta+1)、(tb+1)、(tc+1)を使用して秘密共有ai=JVRSS(i)、bi=JVRSS(i)、ci=JVRSS(i)を計算する。
2.各参加者iは、共有λi=aibi+ciを計算する
3.各参加者iは、結果λiを他の参加者と共有する。
4.各参加者は、結果λ=int(λ1,....,λi,...)=ab+cを求めるために、max(ta+tb,tc)+1共有にわたって補間する。
【0087】
これは、以下のいくつかの実施形態による共有署名の計算において行われる。すなわち、
【0088】
【0089】
にわたる補間がある。これは基本的に上記の
【0090】
【0091】
と
【0092】
【0093】
の場合に当てはまる。この場合、ta+tb=2tおよびtc=tであり、補間はmax(ta+tb,tc)+1=2t+1共有にわたる。
【0094】
1.15 シャミールの秘密共有スキーム(SSSS)
SSSSは、秘密のしきい値がtになるように、データai0をN個の共有に分割する方法であり、秘密ai0を再作成するためにt+1個の共有が必要である。ディーラiは、t個の整数ai1,...,aitをランダムに生成し、次数tの多項式を定義する。
fi(x)=ai0+ai1x+...+aitxt mod p
各j番目の共有は(j,aj=fi(j))として定義され、j=1,...,Nである。
【0095】
1.16 決定論的キーの導出
WO2017/145016は、対称暗号化に使用され得る非対称キーから2者間で複数の共通秘密を生成する方法を説明している。キー導出方法は、対称暗号キーの生成または署名の作成など、必要に応じて使用される非対称キー導出に焦点を当てている。
【0096】
アリスがマスタ秘密キーmと対応する公開キーPMを有していると仮定する。子キーを導出するために、彼女はノンス値nonceを選択し、子秘密キーを次のように導出する。
a(1)=m+ハッシュ(ノンス)
上式で、hashは暗号化ハッシュ関数であり、対応する公開キーは、
【0097】
【0098】
である。
【0099】
アリスは、対応する公開キー
【0100】
【0101】
を使用して、子秘密キーa
(2)=m+hash(hash(nonce))をさらに導出することができ、また、さらにキーを生成するために前のハッシュダイジェストを連続的にハッシュすることによって続行することができる。アリスは、導出されたキーのツリー状構造を有効にすることができる。例が
図2に示されている。
【0102】
ツリーの各分岐は様々な目的に使用することができる。
図2の例では、アリスは、
【0103】
【0104】
などの分岐を導出するために、子キーを親として使用する。アリスは、
【0105】
【0106】
の兄弟を
【0107】
【0108】
をマスタ分岐として使用することによって構築する。
【0109】
【0110】
WO2017/145016では、通信用の対称キーを導出するために、これらのキーはボブのキーと結合される。
【0111】
2.共有秘密キーの生成
図1は、本発明の実施形態を実装するための例示的なシステム100を示している。図示されるように、システム100は、複数の関係者(本明細書では「参加者」とも呼ばれる)102を備える。
図1には3人の参加者102a、102b、102cのみが示されているが、一般に、システムは任意の数の参加者を備え得ることが理解されるであろう。システム100はまた、参加者102の1人であってもなくてもよい調整関係者104(または単に「コーディネータ」)を備え得る。参加者102および調整関係者104の各々は、それぞれのコンピューティング機器を動作する。
【0112】
それぞれのコンピューティング機器の各々は、1つまたは複数のプロセッサ、たとえば、1つまたは複数の中央処理装置(CPU)、グラフィックス処理装置(GPU)などのアクセラレータプロセッサ、他の特定用途向けプロセッサ、暗号プロセッサ、デジタルシグナルプロセッサ(DSP)、および/またはフィールドプログラマブルゲートアレイ(FPGA)を備えるそれぞれの処理装置を備える。それぞれのコンピューティング機器はまた、メモリ、すなわち、非一時的なコンピュータ可読媒体の形態のコンピュータ可読ストレージを備え得る。メモリは、1つまたは複数のメモリ媒体、たとえば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリ、EEPROMなどの電子媒体、および/または光ディスクドライブなどの光媒体を使用する1つまたは複数のメモリユニットを備え得る。それぞれのコンピューティング機器は、少なくとも1つのユーザ端末、たとえば、デスクトップまたはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを備え得る。代替的または追加的に、それぞれのコンピューティング機器は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソース(1つまたは複数のサイトに実装される1つまたは複数の物理サーバデバイスのリソースを備えるクラウドコンピューティングリソース)などの、1つまたは複数の他のネットワーク化されたリソースを備え得る。システム100の関係者によって実行されるものとして説明された任意の動作は、その関係者によって動作されるそれぞれのコンピューティング装置によって実行され得ることが理解されるであろう。
【0113】
参加者102の各々は、LANまたはWAN接続を使用して、あるいは代替のワイヤードまたはワイヤレス通信手段を介して、インターネットなどのネットワークを介して、他の参加者102の1人、一部、または全員にデータを伝送するように構成され得る。文脈上別段の要求がない限り、データを伝送する参加者102への言及は、他の参加者102に、たとえば、第1の参加者102aと第2の参加者102bとの間の安全な通信チャネルを介して個別にデータを伝送すること、あるいは、電子メールまたは他の手段を介してグループ全体にブロードキャストすることとして理解され得る。再び、コンテキストが別段の要求をしない限り、各参加者102は、生の形式、または暗号化された形式でデータを伝送し得る。たとえば、データは、受信側参加者に送信される前に、受信側参加者の公開キーを使用して暗号化され得る。同じことが、コーディネータ104が参加者102の1人、一部、またはすべてにデータを伝送および受信する場合にも当てはまる。
【0114】
本発明の実施形態は、主に、第1の参加者102aの観点から説明される。しかしながら、説明された方法の一般的なステップにおいて、他の参加者、たとえば第2の参加者102bまたは第3の参加者102cによって同様に実行され得ることが理解されるであろう。また、「第1」、「第2」、「第3」などの用語は、本明細書では単に区別するラベルとして使用されており、用語が使用される特定の文脈で別途の必要がない限り、必ずしも順序を含意するものではないことが理解されよう。
【0115】
本発明は、参加者102のグループの各参加者102が共有秘密キーのそれぞれの共有を生成できるようにする。各共有秘密キーは共有マスタ秘密キーにリンクされており、各参加者102は共有マスタ秘密キーのそれぞれの共有を有する。すなわち、各参加者102は、共有マスタ秘密キーのそれぞれの共有にアクセスする(たとえば、それぞれのコンピューティング機器のメモリに記憶する)ことができる。これらの秘密キー共有は、たとえば、JVRSS(上述)またはシャミールの秘密共有スキーム(SSSS)などの秘密共有スキームを使用して生成され得る。共有秘密キーの共有を生成するための代替スキームが使用され得る。共有マスタ秘密キーにはしきい値を有しすなわち、秘密キーは少なくともしきい値の数の異なる秘密キー共有に基づいてのみ正常に生成される。
【0116】
本開示は、マスタ秘密キー共有に基づいて子秘密キー共有(すなわち、子秘密キーの共有)を生成するための技法を提供する。これを行うために、参加者は第1の共有秘密を導出する。すなわち、各参加者102は、第1の共有秘密のそれぞれの共有を計算する。第1の共有秘密(すなわち、その共有)は、JVRSS、SSSS、または秘密共有を生成するための同様のスキームを使用して生成され得る。次いで、第1の子秘密キーの共有が、マスタ秘密キーの共有と第1の共有秘密の共有とに基づいて(すなわち、関数として)生成される。すなわち、第1の参加者102aは、マスタ秘密キーの第1の共有および第1の共有秘密の第1の共有に基づいて第1の子秘密キーの第1の共有を生成し、第2の参加者102bは、マスタ秘密キーの第2の共有および第1の共有秘密の第2の共有に基づいて、第1の子秘密キーの第2の共有を生成するなどである。
【0117】
いくつかの例では、第1の参加者102aは、第1のマスタ秘密キー共有と第1の共有秘密の第1の共有との加算に基づいて、第1の子秘密キーの第1の共有を生成する。第1の共有秘密のしきい値がマスタ秘密キーのしきい値と同じになるように選択された場合、第1の子秘密キーのしきい値はマスタ秘密キーのしきい値と同じになる。第1の共有秘密のしきい値がマスタ秘密キーのしきい値よりも大きくなるように選択された場合、第1の子秘密キーのしきい値がマスタ秘密キーのしきい値よりも大きくなる。
【0118】
他の例では、第1の参加者102aは、第1のマスタ秘密キー共有と第1共有秘密の第1の共有との乗算に基づいて、第1の子秘密キーの第1共有を生成する。演算が加算、乗算、またはその他であるかどうかに関わらず、各参加者によって同じ演算が使用される。第1の共有秘密のしきい値がマスタ秘密キーのしきい値と同じになるように選択された場合、第1の子秘密キーのしきい値がマスタ秘密キーのしきい値よりも大きくなる。第1の共有秘密のしきい値がマスタ秘密キーのしきい値よりも大きくなるように選択された場合、第1の子秘密キーのしきい値もマスタ秘密キーのしきい値よりも大きくなる。
【0119】
参加者102は、第1の子秘密キーに対応する公開キーを生成し得る。1人の参加者が他の参加者に代わってこれを行ってもよく、公開キーを生成するために他の参加者が協力してもよい。各参加者102は、共有マスタ秘密キーに対応するマスタ公開キーにアクセスする(たとえば、メモリに記憶する)ことができる。参加者は、第1の共有秘密に対応する公開キー(「第1の公開キー」)を生成する。第1の共有秘密がJVRSSを使用して生成される場合、公開キーは上記のセクション1.15において説明したように生成され得る。共有秘密がSSSSを使用して生成される場合、コーディネータ104は各参加者に公開キーを提供し得る。共有秘密に対応する公開キーを生成することは、当業者の権限の範囲内である。次いで、第1の子秘密キーに対応する第1の子公開キーが、マスタ公開キーと第1の公開キーとに基づいて、たとえば、マスタ公開キーと第1の公開キーとの楕円曲線加算に基づいて生成される。
【0120】
参加者102は、第2の子秘密キーの共有、すなわち、第2の子秘密キーの自分自身の共有を生成し得る。第2の子秘密キーの共有は、マスタ秘密キー共有および第2の共有秘密の共有に基づいて生成され得る。各参加者102は、秘密共有を生成するために、たとえば、JVRSS、SSSS、または別のスキームを使用して第2の共有秘密のそれぞれの共有を生成する。第2の共有秘密は第1の共有秘密とは異なるため、第1の子秘密キーと第2の子秘密キーは確実に異なる。参加者102は、マスタ公開キーおよび第2の共有秘密に対応する公開キーに基づいて、第2の子秘密キーに対応する第2の公開キーを生成し得る。
【0121】
参加者102は、第3の子秘密キーの共有、すなわち、第3の子秘密キーの自分自身の共有を生成し得る。第3の子秘密キーの共有は、異なる子秘密キーの秘密共有(たとえば、第1の子秘密キーまたは第2の子秘密キーの共有)および第3の共有秘密に基づいて生成され得る。前と同様に、各参加者102は、たとえばJVRSSを使用して、第3の共有秘密のそれぞれの共有を生成する。しかしながら、この場合、第3の子秘密キーのそれぞれの共有は、マスタ秘密キーに直接基づいているのではなく、別の子秘密キーに基づいている。第3の共有秘密は、第1の共有秘密または第2の共有秘密と同じであってもよく、第1の共有秘密および第2の共有秘密の両方と異なっていてもよい。参加者102は、第3の子秘密キーに対応する第3の公開キーを生成し得る。第3の公開キーは、第3の子キーが基づく子キー、たとえば、第1の子キーに対応する公開キー、また第3の共有秘密に対応する公開キーにも基づいている。
【0122】
以前に導出された子秘密キー共有に基づいて子秘密キー共有を導出することによって、
図2に示されるようなツリー状のキー構造が生成され得る。たとえば、孫キー共有(P
A(1,1))は、子キー共有(P
A(1))に基づいて生成され得る。同様に、別の孫キー共有(P
A(1,2))は、キーを導出するために異なる共有秘密を使用することによって、同じ子キー共有(P
A(1))に基づいて生成され得る。この方法では、さらに多くのレベルのツリーが生成され得る。
【0123】
いくつかの実施形態では、第1の子秘密キーは、たとえば、署名の生成、データの暗号化などのために使用され得る。他の実施形態では、第1の子秘密キーは、別の子秘密キーを導出するために使用される中間秘密キーであり、他の子秘密キーは、署名生成、暗号化などのために使用される。これらの例では、この中間秘密キーの共有は、上で説明したように、マスタ秘密キーの共有と第1の共有秘密の共有とに基づいて生成される。さらに、第1の子中間キーの共有は、別の共有秘密(「第4の共有秘密」と呼ばれる)に基づいて生成される。たとえば、第1の参加者は、マスタ秘密キーの第1の共有、第1の共有秘密の第1の共有、および第4の共有秘密の第1の共有に基づいて、中間秘密キーの第1の共有を生成する。特定の例として、マスタ秘密キーの第1の共有と第1の共有秘密の第1の共有が乗算によって結合され得、その結果に第4の共有秘密の第1の共有が追加される。次いで、各参加者102は、中間秘密キーのそれぞれの共有を他の参加者102に送信する。このようにして、中間秘密キーが再構築され得、これが、これらの実施形態では中間秘密キーが署名などのために使用されない理由である。参加者は、中間秘密キーの共有を使用して、たとえば、少なくともしきい値の共有数を補間することによって、中間秘密キーを再構築する。次いで、各参加者は、中間秘密キーと第4の共有秘密のそれぞれの共有とに基づいて、第4の子秘密キーのそれぞれの共有を生成する。第4の共有秘密は参加者には知られていない点に留意されたい。一例として、第4の秘密キーの第1の共有は、中間秘密キーと第4の共有秘密の第1の共有との間の減算であり得る。次いで、第4の子秘密キーは、署名の生成などのために使用され得る。
【0124】
第1の共有秘密と第4の共有秘密のしきい値がマスタ秘密キーのしきい値と同じになるように選択された場合、その結果、中間秘密キーのしきい値が、マスタ秘密キーと結果として得られる第4の子秘密キーのしきい値よりも大きくなる。これは、第4の子秘密キーの共有を導出するために、第4の子秘密キーを使用して署名を生成するために必要な参加者よりも多くの参加者が必要であることを意味する。言い換えれば、署名をするために必要な参加者は、署名キーを導出するために必要な参加者よりも少なくなる。使用例として、これは、複数(たとえば、3人)のユーザ間で共同銀行口座を設定するために使用され得、この場合、トランザクションを認可するために必要なのはユーザのサブセット(たとえば、1人または2人)だけである。別の例として、1つの会社の取締役会に4人のユーザが就任し得る。4人の取締役会メンバ全員が署名キーを設定する必要がある場合があるが、たとえば、文書に署名することによってのみ決定できる場合、取締役会メンバのいずれか2人のみが決定を行う必要がある場合がある。
【0125】
しきい値署名については上で簡単に説明した。参加者は、しきい値署名、たとえばしきい値ECDSA署名のそれぞれの共有を生成するために、導出された子秘密キー(たとえば、第1、第2、第3、または第4の子秘密キー)のいずれかを使用し得る。しきい値の署名は最適な場合もあれば、最適でない場合もあり、これは、署名のしきい値が子秘密キーと同じである場合もあれば、異なる場合もあることを意味する。たとえば、各参加者(または、少なくともしきい値数)は、第1の子秘密キーのそれぞれの共有を使用して、第1の署名のそれぞれの共有を生成し得る。同様に、第2の署名のそれぞれの共有は、第2の子秘密キーのそれぞれの共有を使用して生成され得る。これらの例では、少なくともしきい値数の参加者102が、コーディネータ104が署名を生成するためにそれぞれの署名を利用できるようにする。参加者102は、署名対象のメッセージにアクセスしてもよく、コーディネータ104からメッセージを受信してもよい。以下でさらに説明するように、署名対象のメッセージのうちの1つまたは複数はブロックチェーントランザクションであり得る。
【0126】
各参加者は、子秘密キーの少なくともそれぞれの共有、たとえば、第1の子秘密キーの第1の共有に基づいて(すなわち、その関数である)、それぞれの署名共有を生成し得る。いくつかの実施形態では、署名共有はまた、第1のエフェメラルキー共有(または、より具体的にはその逆)、エフェメラル公開キーの第1の座標(または、より具体的には、第1の座標mod n、ここで、nは楕円曲線の次数)に基づいて生成される。
【0127】
以下では、しきい値署名を生成するために参加者102によって使用され得る例示的な方法を提供する。ステップS401からS408は、この例では、しきい値数の参加者102の各々(第1の参加者102aを含む)によって実行される。ステップS409は、コーディネータ101によって実行され、コーディネータ101は、ステップS401からS408を実行する参加者のうちの1人でもあり得る。ステップのうちのいくつかは省略されてもよく、異なる順序で実行されてもよいことが理解されるであろう。
【0128】
例示的な方法は、N≧2t+1人の参加者のグループ内でしきい値(t+1)の共有秘密の作成を可能にし、ここで、署名しきい値も(t+1)である。
【0129】
設定:
ステップS401において、各参加者102は、共有秘密キー共有ai(たとえば、第1、第2、第3、または第4の子秘密キー)および対応する公開キーを計算する。秘密キー共有は上記のように生成される。この時点で、各参加者iは秘密キー共有と公開キー(ai,P)を有しており、ここで、Pは共有秘密キーに対応する公開キーの表記である。共有秘密キーのしきい値は(t+1)である。
【0130】
事前計算:
ステップS402において、各参加者102は、共有エフェメラルキー共有および対応する公開キーを計算する。たとえば、各参加者102は、JVRSSおよび準備において与えられた公開キーの計算を使用して共有エフェメラルキーを計算し得る。次いで、各参加者102は、エフェメラル秘密キーに基づいて逆共有を計算し得る。これにより、各参加者は、しきい値(t+1)の逆共有
【0131】
【0132】
を有することになる。
【0133】
ステップS403において、各参加者102は、2つの異なる共有ブラインディングキー共有を作成する。たとえば、各参加者102は、参加者iが共有αi=JVRSS(i)およびβi=JVRSS(i)を有するように、2つの共有秘密を作成し得、各共有秘密はしきい値(t+1)を有する。いくつかの例では、すべての共有秘密が同じしきい値を有する必要はない点に留意されたい。
【0134】
ステップS404において、各参加者102は、中間共有を計算し、それらの中間共有を他の参加者にブロードキャストする。たとえば、各参加者iは中間共有
【0135】
【0136】
を計算し得る。この値のしきい値は(2t+1)である。
【0137】
ステップS405において、第1の参加者102aは、少なくとも中間共有に基づいて中間価値を計算する。たとえば、第1の参加者102aは、(2t+1)共有にわたる補間λ=補間(λ1,...,λ2t+1)=k-1ar+βを使用して中間値を計算し得る。
【0138】
ステップS406において、第1の参加者102aは
【0139】
【0140】
についての知識を有しており、これを秘密キー共有および対応する公開キー(ai,P)とともに記憶する。
【0141】
署名ごとに異なるエフェメラルキーが使用されるため、複数のエフェメラルキーを一度に設定することができる、すなわち、事前計算中に複数のエフェメラルキーを作成して、後で使用するために記憶するために、ステップS402からS406を繰り返すことができる点に留意されたい。これらは同時に遂行できるため、追加の一連の通信は発生しない。好ましくは、αとβの異なる値を署名ごとに使用する必要がある点に留意されたい。
【0142】
署名の生成:
メッセージmsgに署名するために、少なくとも(t+1)人の参加者がステップS407およびS408を実行する必要がある。ステップS407において、少なくともしきい値数の参加者102が署名対象のメッセージを取得し、メッセージダイジェストを計算する。たとえば、コーディネータ101は、(t+1)人の参加者に、メッセージmsg上で署名共有を作成する要求を送信し得る。各参加者iはメッセージダイジェストe=hash(msg)を計算し得る。いくつかの例では、このハッシュ関数はダブルSHA-256ハッシュ関数である。代替のハッシュ関数も使用され得る。
【0143】
ステップS408において、少なくともしきい値数の参加者102が署名共有を計算し、それをコーディネータ101に送信する。たとえば、各参加者iは署名共有
【0144】
【0145】
を計算し、次いで、この署名共有(r,si)をコーディネータに送信し得る。値rはすべての参加者によって送信されるわけではない点に留意されたい。
【0146】
ステップS409において、コーディネータ101は署名を計算する。たとえば、コーディネータ101は、s=補間(s1,...,st+1)+λ=k-1e+k-1arを計算し、最後に署名(r,s)を計算し得る。これにより、β項がキャンセルされるため、期待される署名共有が得られる。(kα)-1およびrが計算に含まれる場合、上記で説明したように、このプロトコルの同様の変形を行うことができる。
【0147】
秘密のしきい値は異なる場合がある点に留意されたい。すなわち、署名生成スキームを遂行するために、a、k、α、β自体のしきい値が必ずしも同じである必要はない。たとえば、6人のグループがあり、署名および/または秘密キーの作成に3人が必要である場合、技術的には、kのしきい値を4、他の共有秘密のしきい値を3として計算を行うことができる、しきい値最適化スキームが引き続き使用される。
【0148】
本発明のいくつかの実施形態は、任意のメッセージに対して署名を生成するために使用することができる。特定の使用例として、
図1に示されるように、メッセージはブロックチェーントランザクションの一部またはすべてであり得る。すなわち、署名は、ブロックチェーントランザクションの1つまたは複数の入力および/または1つまたは複数の出力に署名するために使用され得る。たとえば、生成された署名は、ブロックチェーントランザクションの出力のロックを解除するために、少なくとも部分的に使用され得る。特定の例として、前のトランザクションの出力は、公開キーのハッシュにロックされている公開キーハッシュへの支払い(pay-to-public-key-hash、P2PKH)出力であり得る。ロックを解除するために、P2PKH出力を参照する後のトランザクションの入力は、(ハッシュ化されていない)公開キーと、公開キーに対応する秘密キーに基づいて生成された署名とを含む必要がある。コーディネータ104は、ブロックチェーントランザクションに署名し、署名されたトランザクションをブロックチェーンネットワーク106の1つまたは複数のブロックチェーンノードに提出し得る。
【0149】
スクリプトで表すと、「ロックスクリプト」と「ロック解除スクリプト」は次の形式をとり得る。
【0150】
ロックスクリプト=OP_DUP OP_HASH160<Public KeyHash>OP_EQUAL OP_CHECKSIG
ロック解除スクリプト=<Signature><Public Key>
【0151】
上述の実施形態を参照すると、<Public Key>はP=achild・Gと同等であり得、<Signature>はしきい値署名sを備え、前のトランザクションは署名対象のメッセージである。上で述べたように、ECDSA署名は(r,s)の形式である点に留意されたい。
【0152】
説明した署名生成方法は任意の特定の使用例に限定されず、一般に任意のメッセージに基づいて署名を生成するために使用され得る点に留意されたい。ブロックチェーントランザクションのすべてまたは一部への署名は、単なる一例にすぎない。説明された方法は、たとえば、法的文書(たとえば、遺言書、証書、または他の契約書)、1人または複数の関係者間の通信、デジタル証明書(たとえば、認証局によって発行されたもの)、医療処方箋、銀行振込または金融商品、住宅ローンまたはローンの申請などに署名および/または認可するために使用され得る。
【0153】
特定の例として、参加者のグループ(合計5人の参加者など)が会社の取締役会を構成し得る。会社の議決事項については、取締役会の過半数(すなわち、少なくとも3人の参加者)が特定の投票に同意することを必要とし得る。取締役会は、少なくとも3人の取締役会メンバが特定の結果に賛成票を投じることに同意したことを証明するために、説明した署名生成方法を使用し得る。この例では、署名生成スキームのしきい値は3である。すなわち、コーディネータが署名を正常に生成するために、少なくとも3人の取締役会メンバがそれぞれの署名共有を提供する必要がある。署名が正常に生成された場合、少なくともしきい値数(すなわち、3人)の取締役会メンバがその結果に賛成票を投じることに同意している必要がある。したがって、署名の正常な生成は投票の記録として機能し、取締役会の過半数が特定の方法で投票したことを証明する。
【0154】
本発明の別の使用例は、デジタル証明書の分野、たとえば、X.509標準によって発行されたデジタル証明書にある。デジタル証明書は、いくつかのデータに署名する署名を含む。データは一般に任意のデータとすることができるが、デジタル証明書に含まれるデータの1つの特定の例は公開キーである。デジタル証明書内の公開キーは、「認証済み公開キー」と呼ばれることがよくある。デジタル証明書の発行者(「認証局」)は、公開キーの所有者に対して1つまたは複数のチェック(たとえば、顧客確認チェック)を実行し得、チェックが成功した場合、認証局は認証済み公開キーを含むデジタル証明書を発行する。ユーザは、自分が誰であるかを証明するために、たとえば、認証済み公開キーに対応する秘密キーを用いてメッセージに署名することによって、認証済み公開キーを使用することができる。認証局の特定の用途の1つは、インターネット上で安全に閲覧するために、HTTPSにおいて使用される証明書に署名することである。もう1つの一般的な用途は、文書に電子署名する際に使用するために各国政府によってIDカードを発行することである。認証局は、秘密キーを使用して公開キー(または、証明される任意の他のデータ)に署名する。
【0155】
上述のように、本発明の実施形態は、秘密キー共有に対応する公開キーを用いてメッセージを暗号化し、同様に秘密キー共有を用いてメッセージを復号化することを含み得る。その場合、第1の参加者102aは、別の関係者によって暗号化されたメッセージを復号化し得る。別のオプションとして、完全な秘密キー、たとえば、完全な子キーに対応する公開キーを用いてメッセージを暗号化し得る。その場合、少なくともしきい値数の参加者は、メッセージを復号化するために子秘密キーのそれぞれの共有を利用可能にし得る。暗号化されたメッセージは、ブロックチェーントランザクションの一部またはすべてを備えてよく、たとえば、ブロックチェーンに記録されるトランザクションに、暗号化されたデータが含まれ得る。
【0156】
3.使用例
以下に、説明される実施形態の特定の例を提供する。
【0157】
しきい値tで共有秘密を設定したいN人の関係者がいると仮定する。すべての参加者はJVRSSを使用してグループマスタキーmを設定し、結果として各関係者iが共有miを有することになる。関連付けられる公開キーはPM=mGである。関係者は、少なくともt+1個の秘密共有の補間を通じてmを構築することができる。
【0158】
開示された子キー導出方法のうちの1つは、ランダムに生成された第2の値を親キーに追加することであり、これにより、後述するように、子キーのしきい値における柔軟性が容易に可能になる。N人の参加者が、共有秘密mを作成するためにセットアッププロトコルを遂行したと仮定する。共有秘密mから第1の子秘密キーを導出するステップは次のとおりである。
1.関係者は、関連付けられる公開キーPα=αGを使用して、しきい値tのJVRSSプロトコルを通じて共有秘密αを生成する。各関係者は、JVRSSから導出された秘密共有αiについての知識を有している。
2.各関係者iは、ai=mi+αiを計算する。
【0159】
次いで、第1の子秘密キーは共有秘密a=m+αとなり、各関係者iは、共有ai=mi+αiの知識を有している。aに関連付けられる公開キーは、
PA=aG=PM+Pα
である。
【0160】
次の子秘密キーを生成するために、関連付けられる公開キーPβ=βGを用いて新しい共有秘密βを取得するためにステップ1に従う。これに続いて、親キーとしてmまたはa=m+αを使用し、ツリー状のキー導出構造を形成するオプションを提供する。
・親キーとしてmを選択した場合、別の子秘密キーはb:=m+βとなり、公開キーはPB=PM+Pβとなる。
・親キーとしてaを選択した場合、その子秘密キーは秘密a'=a+βとなり、対応する公開キーは
PA'=PA+Pβ
となる。
【0161】
このプロトコルは単一の障害点を排除し、個別のアカウントなど、様々な目的に合わせて複数の分岐を導出するために、ツリー状の導出を使用することができる。
【0162】
次の子キー導出プロトコルを使用すると、参加者は、マスタキーとは異なるしきい値を用いて子キーを導出できるようになる。派生キーを使用するためにより少数の参加者が通信する必要がある、様々なセキュリティレベルまたはより低いしきい値を確立するために、これを使用することができる。
【0163】
このプロトコルは、上記のJVRSS導出プロトコルを拡張し、しきい値tの共有秘密からしきい値t'の新しい共有秘密を導出する方法を示し、t'>tである。マスタキーmから第1の子キーを生成するために、次のステップが遂行される。
1.関係者は、しきい値t'のJVRSSプロトコルを通じて共有秘密αを生成する。それに関連付けられる公開キーはPα=αGである。各関係者は、JVRSSから導出された秘密共有αiについての知識を有している。
2.各関係者iは、この値を表すmi+αiをaiによって計算する。
【0164】
次いで、第1の子秘密キーは、しきい値t'>tの共有秘密a=m+αになる。後続の子キーの導出は、ステップ1において生成された秘密のしきい値を変更して、上記のように行うことができる。最大しきい値は参加者の数によって制限され、参加者は子キーを導出する際に、t'を無制限に増やすことはできない。参加者はまた、セクション3.2において説明したように、いくつかの子キーを導出するために同じしきい値t'=tを使用し得る。しかしながら、t'<tの場合、導出された子秘密キーのしきい値は、上記のプロトコルを使用して変更されない。
【0165】
次のキー導出プロトコルは、乗算共有によってしきい値が増加するという事実を使用する。マスタキーmから第1の子秘密キーを導出するステップは次のとおりである。
1.関係者は、しきい値tのJVRSSプロトコルを通じて共有秘密αを生成する。各関係者iは、自分たちの共有αiについての知識を有している。
2.各関係者iはmiαiを計算し、この値をaiで表す。
【0166】
次いで、第1の子秘密キーは、しきい値2tの共有秘密a=mαになり、各関係者iは共有ai=miαiについての知識を有している。aに関連付けられる公開キーは次のとおりである。
PA=aG=αPM
【0167】
ステップ2において計算された乗算共有miαiにより、このプロトコルではしきい値がtから2tに増加する。同様に、b=aβとなるようにaからさらに子秘密キーbを導出することができ、ここで、βは、しきい値tのJVRSSプロトコルを通じて生成された共有秘密である。次いで、bのしきい値は3tである。このプロセスを繰り返すことによって、導出することができる子キーの数は参加者の数によって制限される。
【0168】
次のプロトコルにより、しきい値tのキーを導出するために、2t+1人の参加者が協力するように要求できるようになる。プロトコルのステップは次のとおりである。
1.関係者は、しきい値tのJVRSSプロトコルを通じて共有秘密αおよびβを生成する。各関係者iは、秘密分散αiとβiを計算する。
2.各関係者iは、しきい値2tの秘密mα+βに対応するmiαi+βiを計算する。
3.関係者iは、他のすべての関係者にmiαi+βiをブロードキャストする。
4.各関係者は、mα+β=補間(m1α1+β1,...,m2t+1α2t+1+β2t+1)を計算する。
5.関係者iはai=(mα+β)-βiを計算する。
【0169】
秘密共有aiは、しきい値tの共有秘密の子秘密キーa=mαに対応し、関連付けられる公開キーは、
PA=aG=αPM
である。
【0170】
子キーaはマスタキーmと同じしきい値tであるため、しきい値は増加せず、必要なだけ後続のキーを導出することができる。さらに子キーを生成するために、参加者は、mを親キーとして使用し、子秘密キーbを構築するためにステップ1~5を繰り返すか、aを親キーとして使用することによってツリー状態構造を有効にし、子秘密キーa’=aδを取得するためにステップ1~5を適用するかを選することができ、ここで、δは新しいJVRSS共有秘密である。
【0171】
4.他の注意事項
開示された技法の他の変形例または使用例は、本明細書の開示を読めば当業者には明らかになるであろう。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
【0172】
上記の実施形態は、単なる例として説明されたものであることが理解されよう。より一般的には、以下の記述のうちのいずれか1つまたは複数に従って、方法、装置、またはプログラムが提供され得る。
【0173】
ステートメント1.
共有秘密キーの共有を生成するコンピュータ実装方法であって、参加者のグループの各参加者がマスタ秘密キーのそれぞれの共有を有し、方法はグループの第1の参加者によって実行され、
第1の共有秘密の第1の共有を生成するステップであって、グループのそれぞれの他の参加者が第1の共有秘密のそれぞれの共有を生成するステップと、
マスタ秘密キーの第1の共有および第1の共有秘密の第1の共有に基づいて、第1の共有秘密キーの第1の共有を生成するステップとを備える、コンピュータ実装方法。
【0174】
ステートメント2.
各参加者がマスタ秘密キーに対応するマスタ公開キーを有し、
第1の共有秘密に対応する公開キーを生成するステップと、
マスタ公開キーと第1の共有秘密に対応する公開キーとに基づいて、第1の共有秘密キーに対応する第1の公開キーを生成するステップとを備える、ステートメント1に記載の方法。
【0175】
ステートメント3.
第2の共有秘密の第1の共有を生成するステップであって、グループのそれぞれの他の参加者が第2の共有秘密のそれぞれの共有を生成する、ステップと、
マスタ秘密キーの第1の共有と第2の共有秘密の第1の共有とに基づいて、第2の共有秘密キーの第1の共有を生成するステップとを備える、ステートメント1またはステートメント2のいずれか1つに記載の方法。
【0176】
ステートメント4.
第3の共有秘密の第1の共有を生成するステップであって、グループのそれぞれの他の参加者が第3の共有秘密のそれぞれの共有を生成する、ステップと、
第1の秘密キーの第1の共有と第3の共有秘密の第1の共有とに基づいて、第3の共有秘密の第1の共有を生成するステップとを備える、ステートメント1から3のいずれか1つに記載の方法。
【0177】
ステートメント5.
第3の共有秘密に対応する公開キーを生成するステップと、
第1の公開キーと、第3の共有秘密に対応する公開キーとに基づいて、第3の共有秘密キーに対応する第3の公開キーを生成するステップとを備える、ステートメント2から4のいずれか1つに記載の方法。
【0178】
ステートメント6.
第1の共有秘密キーの第1の共有が、マスタ秘密キーの第1の共有と第1の共有秘密の第1の共有との加算に基づいて生成される、ステートメント1から5のいずれか1つに記載の方法。
【0179】
ステートメント7.
第1の共有秘密キーの第1の共有が、マスタ秘密キーの第1の共有と第1の共有秘密の第1の共有との乗算に基づいて生成される、ステートメント1から6のいずれか1つに記載の方法。
【0180】
ステートメント8.
マスタ秘密キーのそれぞれのしきい値が、第1の共有秘密のそれぞれのしきい値と同じである、ステートメント1から7のいずれか1つに記載の方法。
【0181】
ステートメント9.
マスタ秘密キーのそれぞれのしきい値が、第1の共有秘密のそれぞれのしきい値よりも高い、ステートメント1から7のいずれか1つに記載の方法。
【0182】
ステートメント10.
マスタ秘密キーのそれぞれのしきい値が、第1の共有秘密のそれぞれのしきい値よりも小さい、ステートメント1から7のいずれか1つに記載の方法。
【0183】
ステートメント11.
メッセージを取得するステップと、
第1の共有秘密キーの第1の共有とメッセージとに基づいて、デジタル署名の第1の共有を生成するステップとを備える、ステートメント1から10のいずれか1つに記載の方法。
【0184】
ステートメント12.
第4の共有秘密の第1の共有を生成するステップであって、グループのそれぞれの他の参加者が第4の共有秘密のそれぞれの共有を生成し、第1の共有秘密キーが中間秘密キーであり、中間秘密キーの第1の共有が、第4の共有秘密の第1の共有にさらに基づく、ステップと、
中間秘密キーの第1の共有をグループのそれぞれの他の参加者が利用できるようにするステップと、
それぞれの他の参加者から中間秘密キーのそれぞれの共有を受信するステップと、
中間秘密キーの第1の共有と、中間秘密キーの受信したそれぞれの共有とに基づいて、中間秘密キーを生成するステップと、
中間秘密キーと第4の共有秘密の第1の共有とに基づいて、第4の秘密キーの第1の共有を生成するステップとを備える、ステートメント1に記載の方法。
【0185】
ステートメント13.
マスタ秘密キー、第1の共有秘密、および第4の共有秘密の各々のしきい値が同じである、ステートメント12に記載の方法。
【0186】
ステートメント14.
中間秘密キーの第1の共有が、マスタ秘密キーの第1の共有と第1の共有秘密の第1の共有との乗算に基づいて生成され、したがって中間秘密キーのしきい値がマスタ秘密キーよりも高くなる、ステートメント12および13に記載の方法。
【0187】
ステートメント15.
メッセージを取得するステップと、
第4の共有秘密キーの第1の共有とメッセージとに基づいて、デジタル署名の第1の共有を生成するステップとを備える、ステートメント1から14のいずれか1つに記載の方法。
【0188】
ステートメント16.
メッセージがブロックチェーントランザクションの少なくとも一部を備える、ステートメント10または14のいずれか1つに記載の方法。
【0189】
ステートメント17.
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、メモリが、処理装置上で実行されるように構成されたコードを記憶し、コードが、処理装置上でステートメント1から16のいずれか1つに記載の方法を実行するように構成される、コンピュータ機器。
【0190】
ステートメント18.
コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、ステートメント1から16のいずれか1つに記載の方法を実行するように構成された、コンピュータプログラム。
【0191】
本明細書で開示される別の態様によれば、調整関係者と第1の参加者のアクションを備える方法が提供され得る。
【0192】
本明細書で開示される別の態様によれば、調整関係者および第1の参加者のコンピュータ機器を備えるシステムが提供され得る。
【符号の説明】
【0193】
100 システム
101 コーディネータ
102 関係者、参加者
102a 第1の参加者
102b 第2の参加者
102c 第3の参加者
104 調整関係者
104 コーディネータ
106 ブロックチェーンネットワーク
【手続補正書】
【提出日】2024-05-08
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
共有秘密キーの共有を生成するコンピュータ実装方法であって、参加者のグループの各参加者がマスタ秘密キーのそれぞれの共有を有し、前記方法が前記グループの第1の参加者によって実行され、
第1の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第1の共有秘密のそれぞれの共有を生成するステップと、
前記マスタ秘密キーの第1の共有および前記第1の共有秘密の前記第1の共有に基づいて、第1の共有秘密キーの第1の共有を生成するステップと
を備える、コンピュータ実装方法。
【請求項2】
各参加者が前記マスタ秘密キーに対応するマスタ公開キーを有し、
前記第1の共有秘密に対応する公開キーを生成するステップと、
前記マスタ公開キーと前記第1の共有秘密に対応する前記公開キーとに基づいて、前記第1の共有秘密キーに対応する第1の公開キーを生成するステップと
を備える、請求項1に記載の方法。
【請求項3】
第2の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第2の共有秘密のそれぞれの共有を生成する、ステップと、
前記マスタ秘密キーの前記第1の共有と前記第2の共有秘密の前記第1の共有とに基づいて、第2の共有秘密キーの第1の共有を生成するステップと
を備える、請求項1または2に記載の方法。
【請求項4】
第3の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第3の共有秘密のそれぞれの共有を生成する、ステップと、
第1の秘密キーの前記第1の共有と前記第3の共有秘密の前記第1の共有とに基づいて、第3の共有秘密キーの第1の共有を生成するステップと
を備える、請求項
1に記載の方法。
【請求項5】
第3の共有秘密に対応する公開キーを生成するステップと、
第1の公開キーと、前記第3の共有秘密に対応する前記公開キーとに基づいて、第3の共有秘密キーに対応する第3の公開キーを生成するステップと
を備える、請求項2または4に記載の方法。
【請求項6】
前記第1の共有秘密キーの前記第1の共有が、前記マスタ秘密キーの前記第1の共有と前記第1の共有秘密の前記第1の共有との加算に基づいて生成される、請求項
1に記載の方法。
【請求項7】
前記第1の共有秘密キーの前記第1の共有が、前記マスタ秘密キーの前記第1の共有と前記第1の共有秘密の前記第1の共有との乗算に基づいて生成される、請求項
1に記載の方法。
【請求項8】
前記マスタ秘密キーのそれぞれのしきい値が、前記第1の共有秘密のそれぞれのしきい値と同じである、請求項
1に記載の方法。
【請求項9】
前記マスタ秘密キーのそれぞれのしきい値が、前記第1の共有秘密のそれぞれのしきい値よりも高い、請求項
1に記載の方法。
【請求項10】
前記マスタ秘密キーのそれぞれのしきい値が、前記第1の共有秘密のそれぞれのしきい値よりも小さい、請求項
1に記載の方法。
【請求項11】
メッセージを取得するステップと、
前記第1の共有秘密キーの前記第1の共有と前記メッセージとに基づいて、デジタル署名の第1の共有を生成するステップと
を備える、請求項
1に記載の方法。
【請求項12】
第4の共有秘密の第1の共有を生成するステップであって、前記グループのそれぞれの他の参加者が前記第4の共有秘密のそれぞれの共有を生成し、前記第1の共有秘密キーが中間秘密キーであり、前記中間秘密キーの前記第1の共有が、前記第4の共有秘密の前記第1の共有にさらに基づく、ステップと、
前記中間秘密キーの前記第1の共有を前記グループのそれぞれの他の参加者が利用できるようにするステップと、
それぞれの他の参加者から前記中間秘密キーのそれぞれの共有を受信するステップと、
前記中間秘密キーの前記第1の共有と、前記中間秘密キーの前記受信したそれぞれの共有とに基づいて、前記中間秘密キーを生成するステップと、
前記中間秘密キーと前記第4の共有秘密の前記第1の共有とに基づいて、第4の秘密キーの第1の共有を生成するステップと
を備える、請求項1に記載の方法。
【請求項13】
前記マスタ秘密キー、前記第1の共有秘密、および前記第4の共有秘密の各々のしきい値が同じである、請求項12に記載の方法。
【請求項14】
前記中間秘密キーの前記第1の共有が、前記マスタ秘密キーの前記第1の共有と前記第1の共有秘密の前記第1の共有との乗算に基づいて生成され、したがって前記中間秘密キーのしきい値が前記マスタ秘密キーよりも高くなる、請求項12または13に記載の方法。
【請求項15】
メッセージを取得するステップと、
第4の共有秘密キーの前記第1の共有と前記メッセージとに基づいて、デジタル署名の第1の共有を生成するステップと
を備える、請求項1から14のいずれか一項に記載の方法。
【請求項16】
メッセージがブロックチェーントランザクションの少なくとも一部を備える、請求項
10に記載の方法。
【請求項17】
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、前記メモリが、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードが、前記処理装置上で請求項
1に記載の方法を実行するように構成される、コンピュータ機器。
【請求項18】
コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、請求項
1に記載の方法を実行するように構成された、コンピュータプログラム。
【国際調査報告】