(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-04
(54)【発明の名称】ネストされた閾値署名
(51)【国際特許分類】
H04L 9/32 20060101AFI20240328BHJP
H04L 9/08 20060101ALI20240328BHJP
【FI】
H04L9/32 200B
H04L9/08 A
H04L9/08 F
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023564082
(86)(22)【出願日】2022-03-28
(85)【翻訳文提出日】2023-10-19
(86)【国際出願番号】 EP2022058085
(87)【国際公開番号】W WO2022228799
(87)【国際公開日】2022-11-03
(32)【優先日】2021-04-27
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ペティット,ミカエラ
(57)【要約】
参加者のグループのサブグループのうちの少なくとも1つが閾値最適署名方式に寄与することを要求するコンピュータ実装方法であって、有効な署名は、第1の署名構成要素および第2の署名構成要素を含み、各参加者は、共有秘密鍵のそれぞれの秘密鍵シェア、共有エフェメラル秘密鍵のそれぞれのエフェメラル秘密鍵シェア、および第1の署名構成要素を有し、共有秘密鍵は、少なくとも第1の閾値数のそれぞれの秘密鍵シェアを用いてのみ生成することができる、コンピュータ実装方法。
【特許請求の範囲】
【請求項1】
参加者のグループのサブグループのうちの少なくとも1つが閾値最適署名方式に寄与することを要求するコンピュータ実装方法であって、前記有効な署名は、第1の署名構成要素および第2の署名構成要素を含み、各参加者は、共有秘密鍵のそれぞれの秘密鍵シェア、共有エフェメラル秘密鍵のそれぞれのエフェメラル秘密鍵シェア、および前記第1の署名構成要素を有し、前記共有秘密鍵は、少なくとも第1の閾値数のそれぞれの秘密鍵シェアを用いてのみ生成することができ、前記方法は、前記サブグループに属する第1の参加者によって、
前記第2の署名構成要素のメッセージ非依存構成要素(MIC)の少なくとも第2の閾値数のそれぞれのシェアを取得するステップであって、前記MICの各それぞれのシェアは、それぞれのエフェメラル秘密鍵シェアと、それぞれの秘密鍵シェアと、前記第1の署名構成要素とに基づいてそれぞれの参加者によって生成され、前記MICは、前記MICの少なくとも前記第2の閾値数のそれぞれのシェアを用いてのみ生成することができ、前記MICの第1のシェアは、前記第1の参加者によって生成され、前記MICの前記それぞれのシェアは、前記サブグループの1人以上の参加者のみが利用可能である、ステップと、
前記取得された第2の閾値数のそれぞれのシェアに基づいて前記MICを生成するステップと、
a)前記MICと、前記第2の署名構成要素のメッセージ依存構成要素(MDC)の前記第2の閾値数のそれぞれのシェアとに基づいて前記第2の署名構成要素を生成するためにコーディネータが前記MICを利用できるようにするステップであって、前記MDCの各それぞれのシェアは、それぞれのエフェメラル秘密鍵シェアと前記メッセージのハッシュとに基づいて生成される、ステップ、および/または
b)前記MICを複数の二次MICシェアに分割し、ここで、前記MICを生成するためには第3の閾値数の前記二次MICシェアが必要であり、前記MICを生成するために前記第3の閾値数の参加者について前記グループのそれぞれの参加者に1つまたは複数のそれぞれの二次MICシェアを分散し、前記第2の署名構成要素を生成するためにコーディネータが前記MICを利用できるようにするステップと
を含む方法。
【請求項2】
前記MDCの第1のシェアを生成するステップと、
前記署名の前記第2の構成要素を生成するために前記コーディネータが前記MDCの前記第1のシェアを利用できるようにするステップと
を含む、請求項1に記載の方法。
【請求項3】
前記第1の参加者は、前記コーディネータを含み、前記方法は、前記第2の署名構成要素を生成するステップを含む、請求項1または2に記載の方法。
【請求項4】
前記コーディネータは、前記参加者のうちの異なる1人またはサードパーティである、請求項1または2に記載の方法。
【請求項5】
各参加者は、ブラインド鍵のそれぞれのブラインド鍵シェアを有し、前記MICの各それぞれのシェアは、前記それぞれのブラインド鍵シェアに基づいて生成され、前記MDCの各それぞれのシェアは、前記それぞれのブラインド鍵シェアに基づく、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記サブグループは、複数の参加者を含み、a)は、前記サブグループ内の他の参加者のうちの1人、一部、または全員が前記MICの前記第1のシェアを利用できるようにすることを含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記サブグループは、複数の参加者を含み、前記サブグループ内の各参加者は、前記MICの各それぞれのシェアを受信する、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記サブグループは、前記第1の参加者から構成される、請求項1から5のいずれか一項に記載の方法。
【請求項9】
前記メッセージは、ブロックチェーントランザクションの少なくとも一部を含む、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記グループのサイズは、N≧2t+1であり、前記サブグループのサイズは、N-(t+1)であり、tは、各参加者の前記それぞれの秘密鍵シェアを導出するために使用される多項式の次数であり、2t+1は、前記第1の閾値数であり、t+1は、前記第2の閾値数である、請求項1から9のいずれか一項に記載の方法。
【請求項11】
各参加者は、JVRSS(joint verifiable random secret sharing scheme)を使用して、前記それぞれの秘密鍵シェアおよび前記それぞれのエフェメラル秘密鍵シェアを生成する、請求項1から10のいずれか一項に記載の方法。
【請求項12】
各参加者は、JVRSSを使用して前記それぞれのブラインド鍵シェアを生成する、請求項5またはそれに従属する任意の請求項に記載の方法。
【請求項13】
前記方法は、前記MICを前記複数の二次MICシェアに分割する前記ステップを含み、前記MICを分割する前記ステップは、シャミアの秘密分散法を使用して実行される、請求項1から12のいずれか一項に記載の方法。
【請求項14】
前記署名は、楕円曲線デジタル署名アルゴリズム(ECDSA)署名である、請求項1から13のいずれか一項に記載の方法。
【請求項15】
前記MICの各シェアは、
【数1】
として生成され、ここで、kiは、それぞれのエフェメラル秘密鍵シェアであり、aiは、それぞれの秘密鍵シェアであり、βiは、それぞれのブラインド鍵シェアであり、rは、前記第1の署名構成要素であり、前記MDCの各シェアは、
【数2】
として生成され、ここで、rは、前記メッセージの前記ハッシュである、請求項5および14に記載の方法。
【請求項16】
コンピュータ機器であって、
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、前記メモリは、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードは、前記処理装置上にあるときに、請求項1から15のいずれか一項に記載の方法を実行するように構成される、コンピュータ機器。
【請求項17】
コンピュータ可読ストレージ上に具現化され、コンピュータ機器上で実行されると、請求項1から15のいずれか一項に記載の方法を実行するように構成されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、閾値デジタル署名に関し、具体的には、閾値デジタル署名を生成するために少なくとも1人の特定の参加者が閾値署名方式に寄与することを要求する(すなわち、確実にする)方法に関する。
【背景技術】
【0002】
公開鍵暗号法は、鍵のペア、すなわち、秘密鍵の所有者のみに知られている秘密鍵と、対応する秘密鍵に基づいて生成され、秘密鍵のセキュリティを損なうことなく分散され得る公開鍵とを使用する暗号システムの一種である。
【0003】
公開鍵暗号法は、送信者が受信者の公開鍵(すなわち、受信者のみに知られている秘密鍵に対応する公開鍵)を使用してメッセージを暗号化することを可能にする。そのため、暗号化されたメッセージは、受信者の秘密鍵を使用してのみ復号することができる。
【0004】
同様に、送信者は、例えば、メッセージが送信者によって送信されていることを証明するために、および/または、送信者がメッセージに同意することを示すために、自身の秘密鍵を使用してメッセージに署名することができる。署名者(すなわち、署名を生成する当事者)は、自身の秘密鍵を使用して、メッセージに基づいてデジタル署名を作成する。メッセージに基づいてデジタル署名を作成することは、メッセージおよび秘密鍵の両方に基づいて署名を生成する関数に、メッセージおよび秘密鍵を供給することを意味する。署名は、メッセージに追加される(例えば、タグ付けされる)か、または他の方法でメッセージに関連付けられる。署名者の対応する公開鍵を有する者であれば、同じメッセージおよびメッセージ上のデジタル署名を使用して、署名が有効に作成されたかどうか、すなわち、署名が実際に署名者の秘密鍵を使用して作成されたかどうかを検証することができる。デジタル署名は、メッセージの真正性を保証するだけでなく、メッセージの完全性および否認防止も保証する。すなわち、デジタル署名は、メッセージが署名で署名されてから変更されていないこと、および署名の作成者が署名を作成したことを将来否定することができないことを証明するために使用することができる。
【0005】
デジタル署名方式は、典型的に、3つの手順、すなわちアルゴリズムを含む。鍵生成アルゴリズムは、ランダムな秘密鍵および対応する公開鍵を生成するために使用される。署名アルゴリズムは、メッセージと秘密鍵とに基づいて署名を生成するために使用される。検証アルゴリズムは、公開鍵およびメッセージが与えられた場合に、署名が、対応する秘密鍵を使用して、および、署名アルゴリズムにしたがって生成されたかどうかを検証するために使用される。
【0006】
一般に、共有シークレットは、参加者のグループの間で分散されるデータ項目を共有するために使用され得る。各参加者は、シークレットの異なるシェアを有する。通常、シークレットは、特定の数(「閾値」と呼ばれる)の参加者が、それぞれのシェアを、例えば、シークレットを計算するために一緒に組み合わすことができるようにしたときにのみ再構成が可能である。共有シークレットの一般的な用途は、秘密-公開鍵ペアの共有秘密鍵としてである。すなわち、秘密鍵は、参加者一人では、秘密鍵にアクセスできないように参加者のグループの間で分散され得る。したがって、参加者一人ではメッセージの有効な署名を生成することはできない。代わりに、署名が生成されるためには、参加者の一部または全部が一緒に秘密鍵を生成しなければならない。
【0007】
署名を生成するために参加者が自身の秘密鍵シェアを共有する代わりに、参加者は、閾値署名方式を使用してもよい。閾値署名方式は、任意の1人の参加者が秘密鍵を利用できるようにすることなく、グループ内の閾値数の参加者が、共有秘密鍵の個々のシェアを使用して、メッセージに基づいてデジタル署名を作成することを可能にする。ここで、デジタル署名とは、署名されるべきメッセージに基づいて生成される署名である。そのような方式では、署名は、閾値数の参加者がメッセージに署名を生成することに合意した場合にのみ作成することができる。より少数の参加者を使用して署名を生成しようとしても、有効な署名は生成されない。したがって、グループによる有効な署名(すなわち、メッセージおよび共有秘密鍵を使用して生成される署名)とは、閾値数の人が署名を生成することに合意していることを証明するものである。これはまた、任意の敵対者が、秘密鍵を用いて署名を偽造するためにはその秘密鍵の閾値数のシェアを取得する必要があることを意味する。
【0008】
閾値署名方式は、有効な署名を生成するための閾値が共有秘密鍵の閾値と同じである場合、閾値最適(threshold-optimal)であると言われる。
【発明の概要】
【0009】
閾値署名方式は、有効な署名を生成するために、閾値数の参加者が寄与すること、すなわち参加することを要求する。例えば、閾値数の署名シェアは、参加者のグループによって寄与されなければならない。閾値数の参加者が寄与することを要求するだけでなく、閾値数の特定の参加者が寄与することを要求することが望ましいシナリオが存在する。例えば、3-of-5署名方式では、単に任意の3人の参加者が寄与することを要求するのではなく、3人の参加者のうちの1人が特定の参加者であることを要求し、それにより、その参加者が寄与しない限り、残りの4人の参加者が有効な署名を生成することができないようにすることが望ましい場合がある。
【0010】
本明細書で開示される一態様によれば、参加者のグループのサブグループのうちの少なくとも1つが閾値最適署名方式に寄与することを要求するコンピュータ実装方法であって、有効な署名は、第1の署名構成要素および第2の署名構成要素を含み、各参加者は、共有秘密鍵のそれぞれの秘密鍵シェア、共有エフェメラル秘密鍵のそれぞれのエフェメラル秘密鍵シェア、および第1の署名構成要素を有し、共有秘密鍵は、少なくとも第1の閾値数のそれぞれの秘密鍵シェアを用いてのみ生成することができ、方法は、サブグループに属する第1の参加者によって、第2の署名構成要素のメッセージ非依存構成要素(MIC)の少なくとも第2の閾値数のそれぞれのシェアを取得するステップであって、MICの各それぞれのシェアは、それぞれのエフェメラル秘密鍵シェアと、それぞれの秘密鍵シェアと、第1の署名構成要素とに基づいてそれぞれの参加者によって生成され、MICは、MICの少なくとも第2の閾値数のそれぞれのシェアを用いてのみ生成することができ、MICの第1のシェアは、第1の参加者によって生成され、MICのそれぞれのシェアは、サブグループの1人以上の参加者のみが利用可能である、ステップと、取得された第2の閾値数のそれぞれのシェアに基づいてMICを生成するステップと、a)MICと、第2の署名構成要素のメッセージ依存構成要素(MDC)の第2の閾値数のそれぞれのシェアとに基づいて第2の署名構成要素を生成するためにコーディネータがMICを利用できるようにするステップであって、MDCの各それぞれのシェアは、それぞれのエフェメラル秘密鍵シェアとメッセージのハッシュとに基づいて生成される、ステップ、および/またはb)MICを複数の二次MICシェアに分割し、ここで、MICを生成するためには第3の閾値数の二次MICシェアが必要であり、MICを生成するために第3の閾値数の参加者についてグループのそれぞれの参加者に1つまたは複数のそれぞれの二次MICシェアを分散し、第2の署名構成要素を生成するためにコーディネータがMICを利用できるようにするステップとを含む方法が提供される。
【0011】
本方式は、閾値最適署名方式の署名プロトコル中に参加者の特定の集合が存在することを要求するために使用される。この方式では、有効な署名は、r構成要素と呼ばれることもある第1の署名構成要素と、s構成要素と呼ばれることもある第2の署名構成要素という2つの構成要素で構成される。次に、s構成要素は、メッセージ非依存構成要素(MIC)とメッセージ依存構成要素(MDC)とに基づく。この方式によれば、有効な署名(具体的には、有効な第2の署名構成要素)には、閾値数の参加者によって寄与されるMDCの閾値数のシェアと、有効なMICとが必要である。MICの生成を参加者のサブグループに制限することによって、参加者のサブグループの少なくとも1つがこの方式に寄与しなければならないことが保証されることが認識されている。サブグループがいずれも参加しない場合、有効なMICを生成することができないので、有効な署名を生成することができない。逆に、有効な署名が生成された場合(メッセージおよび共有秘密鍵に対応する公開鍵を使用してチェックすることができる)、サブグループのうちの少なくとも1つが寄与したに違いないということになる。
【0012】
本方式は、閾値署名方式内の参加者の「ネストされた閾値」を作成する。すなわち、それぞれのMDCシェアを生成することができる参加者のグループ内には、MICを生成することができ、したがって、有効な署名を生成することが要求される参加者のサブグループが存在する。
【0013】
上述した3-of-5の例に続いて、例えば、契約書などの重要な文書の署名を生成するために本方式を会社内で使用することができる。2人の参加者はマネージャであり得、そのマネージャらのみがMICの知識を有するので、署名を作成する3人の参加者のうちの少なくとも1人はマネージャでなければならない。MICを持たない3人の参加者では署名を作成することができない。一方、3人の参加者がMICの知識を有する場合、知識を有していない者は2人だけである。署名を作成するために、3人の参加者の任意の部分集合は、MICの知識を有する参加者を必ず含み、したがって、この例では、誰が署名することができるかについての制限はない。
【0014】
いくつかの実施形態では、MICが第1の参加者によって計算されると、次に、例えば、シャミアの秘密分散法(SSSS)を使用して、複数の「二次シェア」に分割される。これらの二次シェアは、他の参加者から受信されたMICのシェアとは区別され、MICを生成するために第1の参加者によって使用される。明確にするために、MICのシェアは、参加者によって生成され、次いで、(例えば、MICのシェアにわたって補間することによって)MICを生成するために使用される。次いで、結果として得られるMICが二次シェアに分割される。MICの再構成には、MICの閾値数の二次シェアが必要である。その後、シェアは参加者に分散される。この場合、第1の参加者がMICに寄与することを要求する代わりに、MICは、MICの閾値数の2次シェアを使用して再構成され、次いでコーディネータに提供され得る。このようにして、複数の階層を作成することができる。例えば、会社の所有者は、CEO、CTO、およびCSOの間でMICを分散し、署名には3人全員が揃っていなければならないようにすることができる。彼らはまた、別個のSSSSアルゴリズムでそれを分割し、二次シェアを7人の異なるマネージャに与えることができ、そのうちの少なくとも5人が、経営幹部レベルのマネージャのうちの3人の代わりに存在しなければならない。
【図面の簡単な説明】
【0015】
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、単なる例として添付の図面を参照する。
【
図1】閾値署名のメッセージ非依存構成要素を生成するための例示的なシステムを概略的に示す。
【
図2】閾値署名のメッセージ非依存構成要素を生成するための別の例示的なシステムを概略的に示す。
【
図3】閾値署名のメッセージ非依存構成要素を生成するための例示的な方法を概略的に示す。
【発明を実施するための形態】
【0016】
1.暗号の概念
以下の例は、楕円曲線暗号法に関して説明されるが、本発明は、任意の1つの特定の暗号方式に限定されず、一般に、任意の暗号方式、例えば、RSAまたは他の公開鍵暗号方式に適用され得る。
【0017】
楕円曲線群
楕円曲線Eは、下記式を満たす:
y
2=x
3+ax+b mod p
ここで、
【数1】
であり、a,bは、4a
3+27b
2≠0を満たす定数である。この楕円曲線上の群は、単位元(identity element)である無限遠点Oとともにこの式を満たす要素(x,y)の集合と定義される。この群内の要素に対する群演算は、楕円曲線点加算と呼ばれ、+で表される。この群は、
【数2】
で表され、その次数はnで表される。
【0018】
この群演算は、・で表される点乗算と呼ばれる要素に対する別の演算を定義するために使用することができる。
【数3】
について、点k・Gは、点Gをそれ自身にk回足したものであると定義される。
【0019】
楕円曲線暗号法では、秘密鍵は、
【数4】
であると定義され、ここで、
【数5】
は、集合{1,...,n-1}に対する表記であり、対応する公開鍵は、楕円曲線上の点k・Gである。例えば、いくつかのブロックチェーンプロトコルでは、楕円曲線は、secp256k1楕円曲線となるように選択され、値a、b、pは、この曲線によって完全に特定される。これらの値が与えられると、この群の次数nが計算され(この曲線の場合には素数である)、secp256k1規格は、この群の生成子として使用されることとなる点Gも指定する。
【0020】
楕円曲線デジタル署名アルゴリズム
秘密鍵aを用いてメッセージmsgに署名を作成するために、以下のステップが行われる:
1.ここでは、任意のハッシュ関数であり得るメッセージダイジェストe=hash(msg)を計算する。例えば、いくつかの例では、hash(msg)=SHA256(SHA256(msg))であり、ここで、
【数6】
は、SHA-256ハッシュ関数である。代わりに、メッセージは、1回だけハッシュされてもよいし、同じまたは異なるハッシュ関数を用いて2回以上ハッシュされてもよいことに留意されたい。
2.ランダムな整数k∈{1,...,n-1}を選択し、ここで、nは、楕円曲線、例えば、secp256k1曲線、の次数である。以下において、kは、エフェメラル秘密鍵と呼ばれる。
3.このエフェメラル秘密鍵に対応するエフェメラル公開鍵を計算するk・G=(R
x,R
y)。
4.r=R
x 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)である。
【0021】
エフェメラル鍵は秘密に保たれなければならず、そうしないと、メッセージおよび署名が与えられた場合に、秘密鍵を計算することができてしまう。追加的に、署名が生成されるたびに、異なるエフェメラル鍵が使用されなければならない。そうでない場合、2つの異なる署名およびそれらの対応するメッセージが与えられれば、秘密鍵aを導出することが可能になる。
【0022】
メッセージmsg、公開鍵P=a・Gおよび対応する署名(r,s)が与えられた場合、以下のステップを完了することで署名を検証することができる:
1.メッセージダイジェストe=hash(msg)を計算する、例えば、e=SHA256(SHA256(msg))。
2.sの逆数s
-1をモジュロnで計算する。
3.j
1=es
-1 mod nおよびj
2=rs
-1 mod nを計算する。
4.点Q=j
1・G+j
2・Pを計算する。
5.Q=O(無限遠点)の場合、署名は無効である。
6.Q≠Oの場合、
【数7】
とし、u=Q
x mod nを計算する。u=rの場合、署名は有効である。
【0023】
閾値署名方式では、この秘密鍵aは、閾値方式グループ内の参加者の間で分散される鍵シェアに分割される。
【0024】
共同検証可能なランダムシークレット分散
N人の参加者が、本方式の参加者のうちの少なくとも(t+1)人によってのみ再生成が可能である共同シークレットの作成を望むと仮定する。共有シークレットを作成するために、下のステップが行われる。
1.参加者は、各参加者について一意のラベルiに合意する。各参加者iは、(t+1)個の乱数
【数8】
を生成し、ここで、∈
Rは、集合
【数9】
のランダムに生成された要素を意味し、
【数10】
は、集合{1,...,n-1}に対する表記である。次いで、各参加者は、i=1,...,Nについて、次数tのシークレット多項式
f
i(x)=a
i0+a
i1x+…+a
itx
t mod n
を有する。これ以降mod nの表記は省略され、整数に対するすべての算術演算はモジュロnで行われると仮定されることに留意されたい。
2.各参加者iは、例えば、参加者jのみとのセキュアな通信チャネルを使用して、値f
i(j)を参加者jに送信する。
3.各参加者iは、共有シークレット多項式の自身の秘密シークレットシェアを次のように計算する:
【数11】
【0025】
共有シークレットシェアは、形式(i,ai)を有する点であり、ここで、iは、方式における参加者ラベルである。aのシークレットシェアを作成するための方法は、ステップ1~3に記載されているように、本明細書では、参加者iについてai=JVRSS(i)と表される。「JVRSS」は、典型的には、「共同検証ランダムシークレット共有」を表し、ステップ4および5も含むことに留意されたい。しかしながら、本文書全体を通して、JVRSSは、少なくともステップ1~3を実行するという意味に解釈され、ステップ4および5は任意選択のステップである。
【0026】
参加者が共有多項式を生成しているので、参加者はそれぞれ、他の参加者がすべての参加者に正しい情報を共有したこと、およびすべての参加者が同じ共有多項式を有することを検証することができる。これは次のようにして行われる。
4.各参加者iは、k=0,...,tについて、難読化された係数
a
ik・G
をすべての参加者にブロードキャストする。
5.各参加者iは、f
j(i)・Gを計算し、以下を検証することによって、各参加者jが多項式点f
j(i)を正しく計算したことをチェックする:
【数12】
【0027】
この式が各多項式に対して成り立つことをすべての参加者が見出した場合、この群は、彼らがすべて同じ共有多項式を作成したことを集合的に確信することができる。
【0028】
共有シークレットの再構成
参加者が、共有多項式のゼロ次である共有シークレットaの再構成を望むと仮定する。形式
【数13】
のこの多項式上の(t+1)個の点が与えられたと仮定すると、共有シークレットaを求めるために、「ラグランジュ補間」として知られている一般式から導出される
【数14】
を計算する。
【0029】
公開鍵の計算
JVRSSのステップ4で共有された、i=1,...,NについてのN個のゼロ次秘密多項式係数公開鍵a
i0・Gが与えられた場合、各参加者は、共有シークレットaに対応する
【数15】
を使用して共有公開鍵Pを計算する。
【0030】
共有シークレットの追加
どのエンティティにも個々のシークレットが知られることなく、N人の参加者のグループの間で共有される2つの共有シークレットの追加を計算するためには(ここで、各シークレット多項式は次数tを有する)、以下のステップが行われる。
1.第1の共有シークレットaを生成する。ここで、参加者iのシェアは、(t+1)の閾値で、i=1,...,Nについてai=JVRSS(i)によって与えられる。
2.第2の共有シークレットbを生成する。ここで、参加者iのシェアは、(t+1)の閾値で、bi=JVRSS(i)によって与えられる。
3.各参加者iは、参加者自身の加法シェアを計算する:
νi=ai+bi mod n
4.すべての参加者は、参加者自身の加法シェアνiを他のすべての参加者にブロードキャストする。
5.各参加者は、以下を計算するために、シェアνiのうちの少なくとも(t+1)にわたって補間する:
ν=interpolate(ν1,...,νt+1)=a+b
【0031】
共有シークレットの追加のためのこの方法は、参加者iについてADDSS(i)で表され、これにより、各参加者iは、ν=(a+b)を知ることになる。
【0032】
共有シークレットの積
N人の参加者のグループの間で共有された2つの共有シークレットの積を計算する(ここで、各シークレット多項式は次数tを有する)ために、グループは、以下のステップを行う:
1.第1の共有シークレットaを生成する。ここで、参加者iのシェアは、i=1,...,Nについてai=JVRSS(i)によって与えられる。共有シークレット多項式は、次数tを有し、これは、再作成のためには(t+1)人の参加者が必要であることを意味する。
2.第2の共有シークレットbを生成する。ここで、参加者iのシェアは、bi=JVRSS(i)によって与えられ、共有シークレット多項式は、この場合も次数tを有する。
3.各参加者は、以下を使用して自身の乗法シェアμiを計算する。
μi=aibi
4.すべての参加者が、自身の乗法シェアμiを他のすべての参加者にブロードキャストする。
5.各参加者は、以下を計算するために、0におけるシェアμiのうちの少なくとも(2t+1)個にわたって補間する:
μ=interpolate(μ1,...,μ2t+1)=ab
【0033】
2つの共有シークレットの積を計算するためのこの方法は、本明細書では、参加者iについてμ=ab=PROSS(i)と表される。
【0034】
共有シークレットの逆数
共有シークレットaの逆数を計算するために、以下のステップが行われる:
1.すべての参加者が、共有シークレットの積PROSS(i)を計算し、その結果はμ=ab mod nとなる。
2.各参加者は、結果として以下となるμのモジュラ逆数を計算する:
μ
-1=(ab)
-1 mod n
3.各参加者iは、以下を計算することによって、自身の逆シークレットシェアを計算する:
【数16】
【0035】
共有シークレットの逆数を計算するためのこの方法は、参加者iについて以下で表される:
【数17】
【0036】
共有秘密鍵の生成および検証
N≧2t+1人(そのうちのt+1人が署名の作成に必要である)の参加者間の共有秘密鍵aを計算するためには、参加者は、t+1の閾値でJVRSSを実行し、上で説明したような公開鍵計算を実行する。その結果、すべての参加者i=1,...,Nが秘密鍵シェアaiおよび対応する共有公開鍵P=(a・G)を有することになる。
【0037】
エフェメラル鍵シェアの生成
署名で必要なように、エフェメラル鍵シェアおよび対応するrを生成するためには、閾値(t+1)の共有秘密鍵aを有するサイズNのグループが、以下のステップを実行する:
1.共有シークレット
【数18】
の逆シェアを生成する。ここで、再作成には(t+1)個のシェアが必要である。
2.各参加者は、k
iの検証において共有された難読化された係数を使用して、
【数19】
を計算し、次に、以下を計算する:
r=x mod n
3.各参加者iは、(r,k
i
-1)を記憶する。
【0038】
異なる閾値を有するシークレットの追加
次数tおよびt´のシークレットを追加する場合、2つのシークレットの追加には、それを計算するためにmax(t,t´)+1個のシェアが必要である。この背後にある理由は、共有シークレットのシェアの追加ステップが、新しい多項式のシェアを作成するからである。この新たな加法多項式は、2つの共有シークレットの個々の多項式を加算した結果と等価である。2つの多項式を加算することは、xの各次数で対応する係数を加算することである。したがって、加法多項式の次数は、2つの多項式の最高次数と同じ次数でなければならない。これは、2つよりも多い多項式の加算に一般化することができ、ここでは、結果として得られる多項式の次数は、最高次の個々の多項式の次数と同じである。
【0039】
異なる閾値を有する2つのシークレットの加算が計算されると、より高い閾値のシークレットのセキュリティが低下する。というのも、それぞれの閾値t、t´での結果(a+b)を知っており、t<t´と仮定した場合、t個のシェアを用いてaを計算し、次いで、(a+b)-a=bを計算することができるので、たったt個のシェアを用いて値bを計算することができるからである。この低い方の閾値は、以下では、bの「関連閾値(implicated threshold)」と呼ばれる。
【0040】
異なる閾値でのシークレットの乗算
閾値tおよびt´での2つのシークレットの乗算の場合、乗算の計算には、t+t´+1個のシェアが必要である。この場合、2つの多項式のシェアの乗算は、新しい多項式上のシェアをもたらす。この新しい多項式は、2つの個々の多項式を乗算した結果であり、したがって、結果の次数は、2つの個々の多項式の次数の加算である。
【0041】
乗算はまた、任意の数の共有シークレットに一般化することができ、結果として得られる閾値は、個々の閾値の和に1を加えたものΣρtρ+1となり、ここで、ρは、個々の共有シークレットにわたって実行される。
【0042】
加算と同様に、異なる閾値での2つのシークレットの乗算は、より高い閾値のシークレットの関連閾値をもたらす。前と同様に、abが既知であり(aはtの閾値を有し、bはt´の閾値を有する)、t<t´である場合、t個のシェアでaおよびbの両方を計算することができる。まず、aを計算することができ、(ab)a-1を使用して、シークレットのt個のみのシェアでbを求めることができる。
【0043】
共有シークレットの加算と乗算を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個のシェアにわたって補間する。
【0044】
これは、以下のいくつかの実施形態による共有署名の計算において行われる。すなわち、si=ki
-1(e+air)にわたって補間がある。これは、本質的に、aibi=ki
-1airおよびci=ki
-1eを有する上記の場合である。この場合、ta+tb=2tおよびtc=tであり、補間は、max(ta+tb,tc)+1=2t+1個のシェアにわたる。
【0045】
2.ネストされた閾値
図1は、閾値署名、より具体的には、閾値署名の構成要素のメッセージ非依存構成要素(MIC)を生成するための例示的なシステム100を示す。図示のように、システム100は、複数の(すなわち、グループの)参加者(例えば、ユーザ、マシンなど)102を含む。参加者は、当事者またはエンティティと呼ばれることもある。参加者102の各々は、それぞれのコンピューティング機器を操作する。
【0046】
それぞれの参加者102のそれぞれのコンピューティング機器の各々は、1つまたは複数のプロセッサ、例えば、1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ(GPU)、特定用途向けプロセッサ、および/またはフィールドプログラマブルゲートアレイ(FPGA)を備えるそれぞれの処理装置を備える。それぞれのコンピューティング機器は、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージも備え得る。メモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリ、もしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を採用する1つまたは複数のメモリユニットを備え得る。それぞれのコンピューティング機器は、少なくとも1つのユーザ端末、例えば、デスクトップまたはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを備え得る。代替的または追加的に、それぞれのコンピューティング機器は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなどの1つまたは複数の他のネットワーク化されたリソースを備え得る(クラウドコンピューティングリソースは、1つまたは複数のサイトにおいて実装された1つまたは複数の物理サーバデバイスのリソースを含む)。システム100の当事者によって実行されるものとして説明される任意の行為は、その当事者によって操作されるそれぞれのコンピューティング装置によって実行され得ることが理解されよう。
【0047】
参加者102の各々は、LANもしくはWAN接続を使用してインターネットを介して、または代替のワイヤードもしくはワイヤレス通信手段を介して、他の参加者102のうちの1人、一部、またはすべてにデータを送信するように構成される。文脈上他の意味に解すべき場合を除き、参加者102がデータを送信することへの言及は、例えば、両参加者間のセキュアな通信チャネルを介して、他の参加者102にデータを個々に送信すること、または例えば、電子メールもしくは他の手段を介してグループ全体にブロードキャストすることとして理解され得る。この場合も、文脈上他の意味に解すべき場合を除き、各参加者102は、データを生の形態でまたは暗号化された形態で送信し得る。例えば、データは、受信側参加者に送信される前に、その受信側参加者の公開鍵を使用して暗号化され得る。
【0048】
図1では、参加者のグループは、5人の参加者を含む。これは単に例示のためであり、一般に、グループは任意の数の参加者を含み得ることが理解されよう。
図1には、参加者のグループのサブグループ(点線で囲まれている)も示されている。この例では、サブグループは、第1および第2の参加者から構成されるが、これも単に例示のためのものである。文脈上他の意味に解すべき場合を除き、「第1の」、「第2の」などは、単に区別用のラベルとして使用され、必ずしも順序、階層などを意味するものではないことに留意されたい。
【0049】
システム100は、コーディネータ101も含む。コーディネータは、参加者のサブグループの1つ、例えば、第1の参加者であり得る。代替的に、コーディネータ101は、別個のエンティティであってもよい。コーディネータは、参加者102に関して上で説明したように、それぞれのコンピュータ機器を操作する。
【0050】
コーディネータ101は、参加者102のグループ(後述)の各参加者によって生成された閾値数の署名シェアを使用して署名を開始する当事者である。すなわち、コーディネータ101は、署名されるべきメッセージに(すなわちメッセージのための)署名を生成する。この場合も、メッセージに署名を生成することは、署名が署名されるべきメッセージに依存すること、または別の言い方をすれば、署名が署名されるべきメッセージの関数であることを意味すると解釈されることに留意されたい。コーディネータ101はまた、署名と、任意選択でメッセージとをサードパーティ103に送信するか、または他の方法で署名を出力する当事者であり得る。例えば、サードパーティ103は、認証局もしくは他の形態の当局、または別のユーザであり得る。他の例では、署名は、例えば、データベースまたは他の文書に記録されてもよい。いくつかの例では、署名は、一般に公開され、例えば、ウェブサイトまたは他の公的にアクセス可能な媒体に記録され得る。
【0051】
コーディネータ101は、署名されるべきメッセージを参加者102に送信し得る。メッセージは、参加者102のすべてに、または参加者の部分集合、例えば、閾値数の参加者に送信され得る。コーディネータ101は、1人の参加者にメッセージを送信し得、その後、その1人の参加者は、他の参加者のうちの1人、一部、またはすべてにメッセージを転送する。メッセージは、LANもしくはWAN接続を使用してインターネットを介して、または代替のワイヤードもしくはワイヤレス通信手段を介して、送信され得る。メッセージは、例えば、コーディネータ101と各参加者102との間のセキュアな通信チャネルを介して、各参加者102に個別に送信されてもよいし、例えば、電子メールもしくは他の手段を介してグループ全体にブロードキャストされてもよい。メッセージは、生の形態でまたは暗号化された形態で送信され得る。例えば、メッセージは、1回以上ハッシュされ得る。
【0052】
参加者102のうちの1人以上が、代替手段を介して、すなわち、コーディネータ101以外から、メッセージを取得し得る。例えば、メッセージは、参加者102のうちの1人によって生成されてもよいし、別の方法で利用可能、例えば、公的に入手可能であってもよい。1人以上の参加者102は、サードパーティ103からメッセージを受信し得る。メッセージを取得する参加者102は、メッセージを(生でまたは暗号化された形態で)1人以上の他の参加者102に送信し得る。例えば、第1の参加者102は、メッセージを他の参加者に送信し得る。
【0053】
参加者のグループの各々は、共有秘密鍵のそれぞれのシェアを有する(例えば、メモリに記憶する)。共有秘密鍵は、実際にはデータ項目である。
【0054】
秘密鍵のシェアを生成するための技法は、当業者によく知られている。例示的な例として、各参加者は、共有秘密鍵のそれぞれのシェアを生成するために、JVRSS(joint verifiable secret sharing scheme)に参加し得る。例えば、第1の参加者102aは、上で説明したJVRSS技術を使用して、秘密鍵aの第1の秘密鍵シェアa1を生成するように構成され得る。すなわち、第1の参加者102aは、1のインデックスを有し、参加者1についてa1=JVRSS(1)を使用して第1の秘密鍵シェアを生成し得、ここで、秘密鍵はaで表される。各参加者102は、それぞれの秘密鍵シェアaiを生成し得る。例えば、第2の参加者102bは、参加者2についてa2=JVRSS(2)を使用して第2の秘密鍵シェアを生成し得、以下同様である。
【0055】
共同シークレットシェア方式を使用して第1の秘密鍵シェアa
1を生成することは、数値集合
【数20】
を生成し、次いで、第1の多項式f
1(x)=a
10+a
11x+…+a
1tx
t mod nを生成することを含み得、ここで、数値集合は多項式の係数である。他の参加者102の各々は、それぞれの数値集合を使用してそれぞれの多項式を生成し得る。例えば、第2の参加者102bは、第2の多項式f
2(x)=a
20+a
21x+…+a
2tx
t mod nを生成する。参加者102は、次いで、他の各参加者に、他の参加者のインデックスにおいて評価されたそれぞれの関数の値を送信する。例えば、第1の参加者102aは、第2の参加者102bについてf
1(2)を評価して、その値を第2の参加者102bに送信し、第3の参加者102cについてf
1(3)を評価して、その値を第3の参加者102cに送信し、以下同様である。第1の参加者102aは、第1の参加者のインデックスの関数として、他の参加者102によって生成されたそれぞれの値を取得する。値は、インターネットを介して、または他の手段を介して送信され得る。値は、参加者のそれぞれのペア間のそれぞれのセキュアな通信チャネルを介して送信され得る。直接送信する代わりに、1人以上の参加者102(例えば、第1の参加者102a)は、それぞれの値をブロードキャストし得る。少なくとも閾値数の参加者から少なくとも閾値数の値を取得した後、第1の参加者102aは、第1の値と、例えば、f
2(1)、f
3(1)などの他の取得された各データ値とに基づいて第1の秘密鍵シェアを生成する。
【0056】
第1の参加者102aは、難読化された係数の集合に基づいて、対応する公開鍵a・Gを計算し得、ここで、係数は、各参加者102のそれぞれの秘密鍵シェアa
iを生成するために使用される。すなわち、エフェメラル秘密鍵シェアk
iを生成するとき、各参加者102は、難読化された係数a
ij・Gを他の各参加者102と共有し得る。係数は、選択された楕円曲線上の共通の生成点Gによって難読化される。これらの難読化された係数は、参加者102間で直接送信されてのよいし、グループにブロードキャストされてもよい。例えば、第1の参加者102aは、難読化された係数a
10・G、a
11・G、a
12・Gなどをブロードキャストし得る。次いで、秘密鍵に対応する公開鍵が次のように計算され得る:
【数21】
【0057】
秘密鍵シェアaiを生成するために、対応する公開鍵が生成される必要はなく、したがって、これは、参加者102が、選択すれば実装することができる任意選択の特徴であることが理解されよう。
【0058】
秘密鍵シェアaiは、代替の方法を使用して、すなわち、上で説明したJVRSS法を使用せずに生成され得ることに留意されたい。秘密鍵のシェアを生成する方法は、それ自体、当技術分野で知られている。同様に、秘密鍵(または、他のそのようなデータ)のシェアを分散するための方法は、それ自体、当技術分野で知られている。そうは言っても、秘密鍵シェアaiは、いくつかの方法で生成され得る。例えば、ディーラ(例えば、参加者102のうちの信頼できる1人または独立した当事者)を使用して、例えば、シャミアの秘密分散法を使用して、秘密鍵シェアaiのうちの1つ、一部、またはすべてを生成して分散し得る。秘密鍵シェアaiを生成して分散するために使用され得る1つのそのような方式は、WO2017145010A1に記載されている。
【0059】
秘密鍵シェアを生成するために使用される特定の方法にかかわらず、第1の参加者102のグループの各々は、秘密鍵aのそれぞれの秘密鍵シェアaiを有する(例えば、記憶する)。
【0060】
参加者のグループの各々はまた、共有エフェメラル鍵kのそれぞれのシェアkiを有する(例えば、メモリに記憶する)。例えば、第1の参加者は、第1のエフェメラル鍵シェアk1を有し、第2の参加者は、第2のエフェメラル鍵シェアk2を有し、以下同様である。共有エフェメラル鍵のシェアは、JVRSS、シャミアの秘密分散法、または代替技法を使用して生成され得る。
【0061】
それぞれの秘密鍵シェアおよびそれぞれのエフェメラル鍵シェアと同様に、参加者のグループの各々は、閾値署名の第1の構成要素(「第1の署名構成要素」)も有する(例えば、メモリに記憶する)。これは、r値として知られることがある。完全を期すために、第2の署名構成要素は、s値として知られることがあり、以下で詳細に説明する。第1の署名構成要素は、共有エフェメラル鍵に対応する公開鍵に基づき、より具体的には、共有エフェメラル鍵に対応する公開鍵のx構成要素に基づく。例えば、第1の署名構成要素は、プレリミナリ(Preliminaries)セクションにおいて上で説明したように、r=x mod nとして計算され得る。
【0062】
共有エフェメラル鍵のそれぞれのシェアを記憶することに加えて、参加者のグループの一部または全部は、共有エフェメラル鍵の逆シェアki
-1を記憶し得ることに留意されたい。いくつかの例では、これは、ki
-1=INVSS(i)として計算される。
【0063】
次に、第2の署名構成要素に戻る。閾値署名方式によれば、第2の署名構成要素は、メッセージ非依存構成要素(MIC)とメッセージ依存構成要素(MDC)とに基づく。MDCの閾値数のシェアが利用可能である場合にのみ、有効な署名を生成することができ、ここで、閾値数は、方式の閾値最適性質により、共有秘密鍵の閾値数と同じである。したがって、MDCのそれぞれのシェアを生成し、コーディネータ101がそれらのそれぞれのシェアを利用できるようにするためには、グループの少なくとも閾値数の参加者が必要である。それぞれの参加者によって生成されたMDCの各シェアは、少なくともそれぞれのエフェメラル鍵シェアと署名されるべきメッセージのハッシュとに基づく。参加者の各々が、必要なデータ(すなわち、エフェメラル鍵シェアおよび署名されるべきメッセージ、またはそのハッシュ)を有するので、参加者のグループのいずれも、MDCの有効なシェアを生成することができる。いくつかの例では、各参加者は、si=ki
-1eとしてMDCのシェアを生成し得、ここで、eは、ハッシュされたメッセージである。次いで、コーディネータは、少なくともMDCの閾値数のシェアに基づいて、例えば、MDCのシェアにわたって補間することによって、MDCを生成し得る。
【0064】
したがって、どの参加者(複数可)が署名方式に寄与しなければならないか、すなわち署名方式の参加者に制限を課すために、どの参加者がMICを生成することができるかに関して制限が課される(有効な署名を生成するためにはMICが必要であることを想起されたい)。具体的には、サブグループ(「ネストされた閾値」)内の参加者のみがMICを生成することができる。以下では、第1の参加者102aがMICを生成することに関して説明するが、一般に、サブグループ内の任意の参加者(例えば、第2の参加者102b)は、同じ方法でMICを生成し得る。
【0065】
第1の参加者102aは、第1のエフェメラル鍵シェアk1と、第1の秘密鍵シェアa1と、第1の署名構成要素rとに基づいてMICのシェアを生成する。例えば、第1の参加者は、λ1=k1
-1a1rとしてMICの第1のシェアを生成し得、ここで、一般に、各参加者(グループの各参加者を含む)は、λi=ki
-1airとしてMICのそれぞれのシェアを生成し得る。
【0066】
MICのそれぞれのシェアが2つの閾値シェア(すなわち、エフェメラル鍵シェアと秘密鍵シェア)に基づいているので、MICは、第2の閾値数のシェアを計算する必要があり、第2の閾値は、秘密鍵シェアの閾値とは異なる。したがって、第1の参加者102aは、第1の参加者102aによって生成されたMICの第1のシェアを含めて、少なくとも第2の閾値数のMICのシェアを第1の参加者102aが取得するまで、他の参加者からMICのそれぞれのシェアを受信する。次いで、取得されたMICのシェアを使用して、第1の参加者102aは、例えば、MICの少なくとも第2の閾値数のシェアにわたって補間することによって、MICを生成する。
【0067】
サブグループの参加者のみがMICのそれぞれのシェアを受信することができることを要求することによって、誰がMICを生成することができるかについて制限が課される。すなわち、サブグループ(すなわち、ネストされた閾値)に属さないグループの参加者は、MICのそれぞれのシェアをサブグループ内の参加者のみに送信する。いくつかの例では、それらの参加者は、それぞれのシェアを第1の参加者102aのみに送信する。これは、第1の参加者がサブグループ内の唯一の参加者であるか否かにかかわらず当てはまる場合がある。サブグループが複数の参加者を含む場合、第1の参加者102aは、MICのそのシェア(MICの第1のシェア)をサブグループの1人以上の他の参加者に送信することを選択し得る。サブグループ内の各参加者がMICを生成することができるように、サブグループの各参加者がMICのシェアのすべてを受信することが好ましい場合がある。これは、単一故障点を防止するように働く。
【0068】
MICはメッセージの知識を必要としないので、MICを事前に計算することができることに留意されたい。言い換えると、MICは、メッセージを取得する前に生成することができる。したがって、複数の異なるMICを事前に計算することができ、それぞれが、異なるメッセージに署名するための異なるそれぞれの署名シェアs1´を生成する際に使用され、ここで、プライム(´)は、それが第1の署名シェアの異なるインスタンスであることを示す。
【0069】
いくつかの例では、各参加者102は、共有ブラインド鍵のそれぞれのシェアを有し得る(例えば、メモリに記憶し得る)。ブラインド鍵シェアは、別の鍵シェアまたはデータ項目を難読化すために、または別の方法で「ブラインド」もしくは「隠す」ために使用される。すなわち、ブラインド鍵シェアは、第1の鍵シェアを隠すために第1の鍵シェアに適用され得、第1の鍵シェアを明らかにすることなく、結果として得られる鍵シェアを共有することができるようにする。単純な例では、第1の鍵シェアが100であり得、ブラインド鍵シェアが74であり得、これにより、数値174を共有することができる。ここで、受信者は、ブラインド鍵シェアが74であることを知らなければ、第1の鍵シェアを確実に知ることができない。実際には、鍵シェアは、はるかに大きい数であり得ることが理解されよう。ブラインド鍵シェアは、JVRSSまたは代替技法を使用して生成され得る。これらの例では、MICの各シェアおよびMDCの各シェアは、共有ブラインド鍵のそれぞれのシェアに基づいて生成される。例えば、第1の参加者102aは、λ1=k1
-1a1r+β1としてMICの第1のシェアを生成し、s1=k1
-1e-β1としてMDCの第1のシェアを生成し得る。ブラインド鍵シェアがどのように機能するかを見るために、MDCの第1のシェアを例に挙げる。コーディネータがメッセージまたはそのハッシュへのアクセスを有すると仮定すると、ブラインド鍵シェアが使用されない場合に、コーディネータがMDCの第1の共有を受信すると、コーディネータは、逆エフェメラル鍵シェアを導出することができる。これが問題となるシナリオが存在し得る。逆に、これが問題とならず、よって、ブラインド鍵シェアの使用が必要ではないシナリオが存在し得る。
【0070】
いくつかの実施形態では、第1の参加者102aは、MDCおよびMICに基づいて第2の署名構成要素を生成するために、MICをコーディネータ101に送信する。第1の参加者102aがコーディネータ101の役割を果たす可能性も除外されず、その場合、MICは異なるエンティティに送られる必要はない。次いで、完全な有効な署名は、第1および第2の署名構成要素(r,s)を使用して生成され、例えば、(r,s=interpolate(s1,...,st+1)+λ)、この場合、第1の閾値はt+1である。
【0071】
次いで、コーディネータ101は、署名を1つまたは複数の他のエンティティにブロードキャストまたは送信し得る。追加的または代替的に、コーディネータは、署名を格納してもよく、および/または署名をデジタル記録の一部として、例えば、電子メールまたは他の文書に記録してもよい。例えば、メッセージは、ブロックチェーントランザクションの一部または全部であり得る。署名は、そのブロックチェーントランザクションに(メッセージがブロックチェーントランザクションの一部のみである場合)、または異なるブロックチェーントランザクションに含まれ得る。
【0072】
他の実施形態では、
図2に示すように、MICをコーディネータ101に送信する(または第2の署名構成要素を生成する)代わりに、第1の参加者102aは、MICを複数の二次MICシェアに分割する。二次MICシェアは、それぞれの参加者によって生成されたMICのシェア(これは、第1の参加者102aによって生成された二次MICシェアと区別するために一次MICシェアと呼ばれることがある)とは異なることに留意されたい。二次MICシェアは、シャミアの秘密分散法などの(鍵)分割方式を使用して分割され得る。代わりに代替的な方式が使用されてもよい。MICは、少なくとも第3の閾値数の二次MICシェアがMICの再構成に必要となるように分割される。
【0073】
MICを複数の二次MICシェアに分割した後、第1の参加者102aは、それぞれの二次MICシェアの一部またはすべてを第2のサブグループのそれぞれの参加者に送信する。いくつかの例では、第1の参加者102aは、少なくとも1つの二次MICシェアを保持する。いくつかの例では、第1の参加者は、第1の参加者102aが保持し得るものとは別に、二次MICシェアの一部またはすべてを削除し得る。
【0074】
これらの実施形態では、第2のサブグループが作成され、それによって、MICは、第2のサブグループ内の第3の閾値数の参加者によって作成され得る。第2のサブグループは(
図2に示されるような)第1のサブグループとは別個であってもよいし、第1のサブグループの1人以上の参加者が第2のサブグループに属していてもよい。第2のサブグループの少なくとも第3の閾値数の参加者は、上で説明したように、MICを一緒に再構成し、第2の署名構成要素を生成するためにコーディネータ101がMICを利用できるようにすることができる。第2のサブグループは、必要数の二次MICシェアを集めるためにリーダーを指名し得る。
【0075】
図3は、閾値署名のメッセージ非依存構成要素を生成するための例示的な方法300を示す。ステップS301において、第1の参加者102aは、MICのシェアを生成する。ステップS301において、第1の参加者102aは、第1の参加者102aがMICの生成に十分なシェアを取得するまで、グループのそれぞれの参加者からMICのそれぞれのシェアを受信する。ステップS303において、第1の参加者102aは、MICを生成する。ステップS304において、第1の参加者102aは、MICをコーディネータ101に送信する。別の選択肢として、ステップS305において、第1の参加者102aは、MICを二次MICシェアに分割する。次いで、ステップS306において、第1の参加者102aは、二次シェアを第2のサブグループの参加者に分散する。
【0076】
ここから、GB2005953.1に開示されている閾値最適ECDSA署名方式を参照して、説明された実施形態の特定の例を説明し、ここでは、N≧2t+1人の参加者のグループのうち閾値t+1人の参加者が署名の作成に必要である。最適性は、署名がメッセージ依存構成要素とメッセージ非依存構成要素とに分割することができるという事実を利用することによって達成される。メッセージ非依存項は事前に計算され、その結果、署名の作成には参加者の秘密鍵数と同じ閾値だけが必要となり、したがって、最適性が達成される。この方式の1つのバージョンでは、メッセージ非依存構成要素は事前に計算され、有効な署名を作成するために補間されるメッセージ依存構成要素(MDC)を含む個々の署名シェアに追加され得る。代替的に、MICの追加は、署名シェア自体の補間の後に行われてもよい。明示的に、MICは、λ=k-1ar+βであり、これは、し、λi=ki
-1air+βiの2t+1個のシェアおよびsi=ki
-1e-βiと定義される署名シェアにわたって補間することによって計算される。その場合、署名は、以下である:
(r,s=interpolate(s1,...,st+1)+λ)
【0077】
この方式は、誰がMICを知っているかを記述しておらず、署名に使用されることのみを記述している。N人のうちのt+1人が署名することができる通常の署名方式を作成するために、このMICはすべての参加者で共有されると仮定した。しかしながら、このMICを特定の方法で共有することで、署名時に特定の参加者が存在するという要件を作成することができる。以下のシナリオでは、参加者がシェアを受信し、結果λを計算するので、常に少なくとも1人の参加者がMICの知識を有している。
【0078】
その目的は、参加者の部分集合を作成することであり、そのうちの少なくとも1人は署名時に存在しなければならない。部分集合のサイズは、方式のネストされた閾値と呼ばれ、この部分集合のサイズは、最大でもN-(t+1)であると仮定され、そうしなければ、すべての部分集合にこれらの必要な参加者のうちの1つを含まれることになる。参加者のこのネストされた部分集合を達成するために、すべての参加者が自身のシェアλiをネストされた部分集合にのみ送信する。次いで、部分集合の各参加者は、シェアにわたって補間を明示的に使用してMICλを計算することができる。次いで、署名を作成するために、参加者のネストされた部分集合のうちの少なくとも1つが、署名プロトコル内に存在しなければならず、以下を使用して署名を計算することができる署名のコーディネータと値λを共有することができる:
(r,s=interpolate(s1,...,st+1)+λ)、ここで、si=ki
-1e-βiである。
【0079】
このネストされたサブグループのサイズは、わずか参加者1人程度であってもよい。しかしながら、この場合、方式における単一障害点が生じることに注意しなければならず、この値λが失われると、λを再作成するためにプロトコルを繰り返す必要がある。
【0080】
このネストされた閾値の考え方を説明するために、会社内で使用される3-of-5方式の例を取り上げる。2人の参加者がマネージャであり得、その2人の参加者のみがMICの知識を有することで、署名を作成する際には3人の参加者のうち少なくとも1人はマネージャが出席しなければならないようにする。参加者が3人いてもMICを持っていなければ署名を作成することはできない。一方、3人の参加者がMICの知識を有する場合、知識を有していない者は2人だけである。署名を作成するためには、3人の参加者の任意の部分集合は、MICの知識を有する参加者を必ず含むことになる。したがって、すべての参加者がMICの知識を有している通常の方法と同じように、誰が署名することができるかについての制限はない。
【0081】
参加者の複数のネストされた部分集合が作成され得る。上述したように、常に少なくとも1人の参加者が完全なMICの知識を有している。MICの知識を有する者は誰でも、シャミアの秘密分散法(SSSS)を使用して、MICをいくつかのシェアに分割し、他の参加者の間で分散することができる。この場合、完全なMICを有する参加者が署名内に存在しなければならないか、少なくともSSSS方式の閾値が下位階層に存在しなければならないかのいずれかである。このようにして、複数の階層を作成することができる。これは、共同決定を行うための多数決を導入することによって、当局への依存性を低減する。例えば、会社の所有者は、CEO、CTO、およびCSOの間でMICを分散し、署名には3人全員が揃っていなければならないようにすることができる。彼らはまた、別個のSSSSアルゴリズムでそれを分割し、7人の異なるマネージャに与えることができ、そのうちの5人が、経営幹部レベルのマネージャのうちの2人の代わりに存在しなければならない。
【0082】
以下では、メッセージのための署名を生成するための例示的な方法を説明し、本発明の実施形態にしたがって、特定の参加者に参加を要求するようにそれをどのように適合させることができるかを説明する。ステップS401~S408は、この例では閾値数の参加者102(第1の参加者102aを含む)の各々によって実行される。ステップS409は、コーディネータ101によって実行され、コーディネータは、ステップS401~S408を実行する参加者のうちの1人であってもよい。ステップのうちのいくつかは、省略されてもよいし、異なる順序で行われてもよいことを理解されたい。
【0083】
例示的な方法400は、N≧2t+1人の参加者のグループにおいて閾値(t+1)の共有シークレットの作成を可能にし、ここでは、署名閾値も(t+1)である。
【0084】
セットアップ:
ステップS401において、各参加者102は、共有秘密鍵シェアai
′および対応する公開鍵を計算する。秘密鍵シェアai
′の生成は上で説明されている。この時点で、各参加者iは、シークレット鍵シェアおよび公開鍵(ai
′,P)を有し、ここで、Pは、共有秘密鍵に対応する公開鍵の表記である。共有秘密鍵は、(t+1)の閾値を有する。
【0085】
事前計算:
ステップS402において、各参加者102は、共有エフェメラル鍵シェアおよび対応する公開鍵を計算する。例えば、各参加者102は、JVRSSおよびプレリミナリで与えられた公開鍵の計算を使用して、共有エフェメラル鍵を計算し得る。次いで、各参加者102は、エフェメラル秘密鍵に基づいて逆シェアを計算し得る。この結果、各参加者は、閾値(t+1)を有する、逆シェア(ki
-1,r)を有することになる。
【0086】
ステップS403において、各参加者102は、2つの異なる共有ブラインド鍵シェアを作成する。例えば、各参加者102は、参加者102iが、シェアαi=JVRSS(i)およびβi=JVRSS(i)を有するように、2つの共有シークレットを作成し得、各共有シークレットは閾値(t+1)を有する。いくつかの例では、共有シークレットのすべてが同じ閾値を有する必要はないことに留意されたい。
【0087】
ステップS404において、参加者102は、中間シェアを計算し、それらの中間シェアを他の参加者にブロードキャストする。例えば、各参加者iは、中間シェアλi=ki
-1ai
′r+βiを計算し得る。この値は、(2t+1)の閾値を有する。
【0088】
ステップS405において、第1の参加者102aは、少なくとも中間シェアに基づいて中間値を計算する。例えば、第1の参加者102aは、(2t+1)個のシェアλ=interpolate(λ1,...,λ2t+1)=k-1ar+βにわたって補間を使用して中間値を計算し得る。
【0089】
ステップS406において、第1の参加者102aは、(r,ki
-1,λ,βi)の知識を有し、これを秘密鍵シェアおよび対応する公開鍵(ai,P)とともに記憶する。
【0090】
署名ごとに異なるエフェメラル鍵が使用されるので、複数のエフェメラル鍵を一度にセットアップすること、すなわち、ステップS402からS406を繰り返して、事前計算時に複数のエフェメラル鍵を作成し、後の使用のために記憶しておくことができることに留意されたい。これらは同時に実行することができるので、通信の追加のラウンドは発生しない。好ましくは、αおよびβの異なる値が各署名に使用されるべきであることに留意されたい。
【0091】
署名生成:
メッセージmsgに署名するために、少なくとも(t+1)人の参加者が、ステップS407およびS408を実行しなければならない。ステップS407において、少なくとも閾値数の参加者102が、署名されるべきメッセージを取得し、メッセージダイジェストを計算する。例えば、コーディネータ101は、メッセージmsgに署名シェアを作成するよう、(t+1)人の参加者に要求を送信し得る。各参加者iは、メッセージダイジェストe=hash(msg)を計算し得る。いくつかの例では、このハッシュ関数は、ダブルSHA-256ハッシュ関数である。代替のハッシュ関数が使用されてもよい。
【0092】
ステップS408において、少なくとも閾値数の参加者102が、署名シェアを計算し、それをコーディネータ101に送信する。例えば、各参加者iは、それらの署名シェアsi=ki
-1e-βiを計算し、次いで、この署名シェア(r,si)をコーディネータに送信し得る。値rは、すべての参加者によって送信されなくてもよいことに留意された。
【0093】
ステップS409において、コーディネータ101は、署名を計算する。例えば、コーディネータ101は、s=interpolate(s1,...,st+1)+λ=k-1e+k-1arを計算し、最後に、署名(r,s)を計算し得る。この結果、β項がキャンセルされるので、予期される署名シェアが得られる。(kα)-1およびrが計算に含まれる場合、上述したように、このプロトコルの同様の変形を行うことができる。
【0094】
シークレットの閾値は異なり得ることに留意されたい。すなわち、署名生成方式を実行するために、a,k,α,βの閾値はそれら自体が必ずしも同じである必要はない。例えば、6人のグループが存在し、署名および/または秘密鍵の作成に3人が必要である場合、厳密に言えば、kの閾値を4、他の共有シークレットの閾値を3として計算を行うことができ、依然として閾値最適方式を有することになる。
【0095】
本発明は、任意の閾値署名方式(最適であるか否かにかかわらず)に適用され得、上で説明した
図4の例に限定されないことに留意されたい。
【0096】
一般に、本発明の実施形態は、任意のメッセージに署名を生成するために使用することができる。特定の例示的なユースケースとして、メッセージは、ブロックチェーントランザクションの一部または全部であり得る。すなわち、署名は、ブロックチェーントランザクションの1つまたは複数の入力および/または1つまたは複数の出力に署名するために使用され得る。例えば、生成された署名は、ブロックチェーントランザクションの出力をロック解除するために少なくとも部分的に使用され得る。特定の例として、前のトランザクションの出力は、公開鍵のハッシュにロックされたP2PKH(pay-to-public-key-hash)出力であり得る。ロック解除のためには、P2PKH出力を参照する後のトランザクションの入力は、(ハッシュされていない)公開鍵と、公開鍵に対応する秘密鍵に基づいて生成された署名とを含む必要がある。
【0097】
スクリプトで表現すると、「locking script(ロックスクリプト)」および「unlocking script(ロック解除スクリプト)」は、以下の形態をとり得る:
【0098】
Locking script = OP_DUP OP_HASH160 <Public KeyHash> OP_EQUAL OP_CHECKSIG
Unlocking script = <Signature> <Public Key>
【0099】
上述した実施形態を参照すると、<Public Key>は、P=a・Gに等しくてもよく、<Signature>は、閾値署名sを含み、ここで、前のトランザクションは、署名されるべきメッセージである。上記のように、ECDSA署名は、(r,s)の形式であることに留意されたい。
【0100】
説明される署名生成方法は、いかなる特定のユースケースにも限定されず、一般に、任意のメッセージに基づいて署名を生成するために使用され得ることに留意されたい。ブロックチェーントランザクションの全部または一部に署名することは、1つの例示的な例に過ぎない。説明される方法は、例えば、法的文書(例えば、遺言、証書、または他の契約)、1つまたは複数の当事者間の通信、デジタル証明書(例えば、認証局によって発行されたもの)、医療処方箋、銀行振込みまたは金融商品、抵当またはローン申請などに署名および/または認可するために使用され得る。
【0101】
特定の例として、参加者のグループ(例えば、合計5人の参加者)は、会社の役員会を形成し得る。会社の投票事項には、役員会の過半数(すなわち、少なくとも3人の参加者)が特定の投票に合意することが必要であり得る。役員会は、説明された署名生成方法を使用して、少なくとも3人の役員会メンバーが特定の結果に賛成票を投じることに合意したことを証明し得る。この例では、署名生成方式の閾値は3である。すなわち、コーディネータが署名の生成に成功するためには、役員会メンバーのうちの少なくとも3人が、それぞれの署名シェアを提供しなければならない。署名の生成に成功した場合、少なくとも閾値数(すなわち3人)の役員会メンバーが、その結果に賛成票を投じることに合意していなければならない。したがって、署名の生成の成功は、投票の記録として働き、役員会の過半数が特定の方法で投票したことを証明する。
【0102】
本発明の別のユースケースは、デジタル証明書、例えば、X.509規格によって発行されるデジタル証明書の分野にある。デジタル証明書には、一部のデータに署名する署名が含まれる。データは、一般に、どのようなデータであってもよいが、デジタル証明書に含まれるデータの1つの特定の例は公開鍵である。デジタル証明書内の公開鍵は、「証明された公開鍵(certified public key)」と呼ばれることが多い。デジタル証明書の発行者(「認証局」)は、公開鍵の所有者に対して1つまたは複数のチェック(例えば、know-your-customerチェック)を実行することができ、チェックが成功した場合、認証局は、証明された公開鍵を含むデジタル証明書を発行する。ユーザは、証明された公開鍵を使用して、例えば、その証明された公開鍵に対応する秘密鍵を用いてメッセージに署名することによって、自分が本人であることを証明することができる。
【0103】
認証局の1つの特定の用途は、インターネット上でのセキュアなブラウジングのためにHTTPSで使用される証明書に署名することである。別の一般的な用途は、電子的に文書に署名する際に使用するために、各国政府が身分証明書を発行することである。認証局は、秘密鍵を使用して公開鍵(または証明されるべき任意の他のデータ)に署名する。
【0104】
3.結論
上記の実施形態は、単なる例として説明されていることが理解されよう。より一般的には、以下のステートメントのうちのいずれか1つまたは複数による方法、装置、またはプログラムが提供され得る。
【0105】
ステートメント1.参加者のグループのサブグループのうちの少なくとも1つが閾値最適署名方式に寄与することを要求するコンピュータ実装方法であって、有効な署名は、第1の署名構成要素および第2の署名構成要素を含み、各参加者は、共有秘密鍵のそれぞれの秘密鍵シェア、共有エフェメラル秘密鍵のそれぞれのエフェメラル秘密鍵シェア、および第1の署名構成要素を有し、共有秘密鍵は、少なくとも第1の閾値数のそれぞれの秘密鍵シェアを用いてのみ生成することができ、方法は、サブグループに属する第1の参加者によって、
第2の署名構成要素のメッセージ非依存構成要素(MIC)の少なくとも第2の閾値数のそれぞれのシェアを取得するステップであって、MICの各それぞれのシェアは、それぞれのエフェメラル秘密鍵シェアと、それぞれの秘密鍵シェアと、第1の署名構成要素とに基づいてそれぞれの参加者によって生成され、MICは、MICの少なくとも第2の閾値数のそれぞれのシェアを用いてのみ生成することができ、MICの第1のシェアは、第1の参加者によって生成され、MICのそれぞれのシェアは、サブグループの1人以上の参加者のみが利用可能である、ステップと、
取得された第2の閾値数のそれぞれのシェアに基づいてMICを生成するステップと、
a)MICと、第2の署名構成要素のメッセージ依存構成要素(MDC)の第2の閾値数のそれぞれのシェアとに基づいて第2の署名構成要素を生成するためにコーディネータがMICを利用できるようにするステップであって、MDCの各それぞれのシェアは、それぞれのエフェメラル秘密鍵シェアとメッセージのハッシュとに基づいて生成される、ステップ、および/または
b)MICを複数の二次MICシェアに分割し、ここで、MICを生成するためには第3の閾値数の二次MICシェアが必要であり、MICを生成するために第3の閾値数の参加者についてグループのそれぞれの参加者に1つまたは複数のそれぞれの二次MICシェアを分散し、第2の署名構成要素を生成するためにコーディネータがMICを利用できるようにするステップと
を含む方法。
【0106】
ステートメント2.
MDCの第1のシェアを生成するステップと、
署名の第2の構成要素を生成するためにコーディネータがMDCの第1のシェアを利用できるようにするステップと
を含む、ステートメント1の方法。
【0107】
ステートメント3.第1の参加者は、コーディネータを含み、方法は、第2の署名構成要素を生成するステップを含む、ステートメント1またはステートメント2の方法。
【0108】
ステートメント4.コーディネータは、参加者のうちの異なる1人またはサードパーティである、ステートメント1またはステートメント2の方法。
【0109】
ステートメント5.各参加者は、ブラインド鍵のそれぞれのブラインド鍵シェアを有し、MICの各それぞれのシェアは、それぞれのブラインド鍵シェアに基づいて生成され、MDCの各それぞれのシェアは、それぞれのブラインド鍵シェアに基づく、いずれかの先行ステートメントの方法。
【0110】
ステートメント6.サブグループは、複数の参加者を含み、a)は、サブグループ内の他の参加者のうちの1人、一部、または全員がMICの第1のシェアを利用できるようにすることを含む、いずれかの先行ステートメントの方法。
【0111】
ステートメント7.サブグループは、複数の参加者を含み、サブグループ内の各参加者は、MICの各それぞれのシェアを受信する、いずれかの先行ステートメントの方法。
【0112】
ステートメント8.サブグループは、第1の参加者から構成される、ステートメント1~5のいずれかの方法。
【0113】
ステートメント9.メッセージは、ブロックチェーントランザクションの少なくとも一部を含む、いずれかの先行ステートメントの方法。
【0114】
ステートメント10.グループのサイズは、N≧2t+1であり、サブグループのサイズは、N-(t+1)であり、tは、各参加者のそれぞれの秘密鍵シェアを導出するために使用される多項式の次数であり、2t+1は、第1の閾値数であり、t+1は、第2の閾値数である、いずれかの先行ステートメントの方法。
【0115】
ステートメント11.各参加者は、JVRSS(joint verifiable random secret sharing scheme)を使用して、それぞれの秘密鍵シェアおよびそれぞれのエフェメラル秘密鍵シェアを生成する、いずれかの先行ステートメントの方法。
【0116】
ステートメント12.各参加者は、JVRSSを使用してそれぞれのブラインド鍵シェアを生成する、ステートメント5またはそれに従属する任意のステートメントの方法。
【0117】
ステートメント13.方法は、MICを複数の二次MICシェアに分割するステップを含み、MICを分割するステップは、シャミアの秘密分散法を使用して実行される、いずれかの先行ステートメントの方法。
【0118】
ステートメント14.署名は、楕円曲線デジタル署名アルゴリズム(ECDSA)署名である、いずれかの先行ステートメントの方法。
【0119】
ステートメント15.MICの各シェアは、
【数22】
として生成され、ここで、k
iは、それぞれのエフェメラル秘密鍵シェアであり、a
iは、それぞれの秘密鍵シェアであり、β
iは、それぞれのブラインド鍵シェアであり、rは、第1の署名構成要素であり、MDCの各シェアは、
【数23】
として生成され、ここで、rは、メッセージのハッシュである、ステートメント5およびステートメント14の方法。
【0120】
ステートメント16.コンピュータ機器であって、
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、メモリは、処理装置上で実行されるように構成されたコードを記憶し、コードは、処理装置上にあるときに、いずれかの先行ステートメントの方法を実行するように構成される、コンピュータ機器。
【0121】
ステートメント17.コンピュータ可読ストレージ上に具現化され、コンピュータ機器上で実行されると、ステートメント1~15のいずれかの方法を実行するように構成されたコンピュータプログラム。
【0122】
本明細書で開示される別の態様によれば、第1の参加者およびコーディネータのアクションを含む方法が提供され得る。
【0123】
本明細書で開示される別の態様によれば、第1の参加者のコンピュータ機器とコーディネータとを備えるシステムが提供され得る。
【0124】
本明細書で開示される別の態様によれば、各参加者のアクションを含む方法が提供され得る。
【0125】
本明細書で開示される別の態様によれば、各参加者のコンピュータ機器を備えるシステムが提供され得る。
【0126】
開示される技法の他の変形形態またはユースケースは、本明細書の開示が与えられた場合、当業者には明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
【国際調査報告】