(57)【要約】  Bitcoinブロックチェーンにおけるトランザクションのようなブロックチェーントランザクションを実行するための、コンピュータにより実施される投票処理(2)が開示される。当該処理は、複数の参加者（4）の間で第1共通シークレットのシェア（6）を分配するステップであって、前記第1共通シークレットは前記参加者による自動投票処理（14）を実施し、第1閾数のシェアにアクセス可能であり、前記第1閾数より少ないシェアにアクセス不可能である。当該処理は、第1閾数のシェアを提供するために、複数の参加者により保持される前記第1共通シークレットの異なる数の前記シェアに基づき、複数の参加者により保持されるシェアの少なくとも1つの組み合わせを決定するステップ（10，12）を更に含む。
2021515271.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される投票処理であって、
複数の参加者の間に、第1共通シークレットの複数のシェアを分配するステップであって、前記第1共通シークレットは、前記参加者による自動投票処理を実施し、第1閾数の前記シェアにアクセス可能であり、前記第1閾数より少ないシェアによりアクセス不可能である、ステップと、
前記第1閾数のシェアを提供するために、複数の前記参加者により保持される前記第1共通シークレットの前記シェアの異なる数に基づき、複数の前記参加者により保持さえる前記シェアの少なくとも1つの組み合わせを決定するステップと、
を含む処理。
【請求項２】
少なくとも1つの前記組み合わせを決定する前記ステップは、複数の前記参加者により保持されるそれぞれのシェアの数を表す情報を含むデータに、ナップサックアルゴリズムを適用するステップを含む、請求項1に記載の処理。
【請求項３】
前記データは、複数の前記参加者の推定投票動作を表す情報を更に含む、請求項2に記載の処理。
【請求項４】
推定投票動作を表す前記情報は、係数を含み、該係数により、複数の前記参加者により保持されるそれぞれのシェアの数を表す前記情報が乗算される、請求項3に記載の処理。
【請求項５】
前記ナップサックアルゴリズムは、第1の複数の前記参加者により保持されるシェアの少なくとも1つの第1の前記組み合わせを、第2の複数の前記参加者により保持されるシェアの少なくとも1つの第2の前記組み合わせに基づき、決定し、前記第2の複数は前記第1の複数と異なる、請求項2乃至5のいずれか一項に記載の処理。
【請求項６】
複数の参加者により保持されるシェアの数は、前記データを複数の所定の値と比較することにより、推定される、請求項1乃至5のいずれか一項に記載の処理。
【請求項７】
前記所定の値は、少なくとも1つのSternシリーズに基づく、請求項6に記載の処理。
【請求項８】
複数の前記所定の値は、他の前記所定の値に基づき決定される、請求項6または7に記載の処理。
【請求項９】
前記第1共通シークレットはデジタル署名である、請求項1乃至8のいずれか一項に記載の処理。
【請求項１０】
各々の前記シェアは、秘密鍵のそれぞれのシェアおよび一時的な鍵のそれぞれのシェアにより署名された部分署名であり、前記方法は、
前記複数の参加者の間に前記秘密鍵の複数のシェアを分配するステップであって、前記第1秘密鍵は、第2閾数のシェアにアクセス可能であり、前記第2閾数より少ないシェアにアクセス不可能である、ステップと、
前記複数の参加者の間に前記一時的な鍵の複数のシェアを分配するステップであって、前記一時的な鍵は、第3閾数のシェアにアクセス可能であり、前記第3閾数より少ないシェアにアクセス不可能である、ステップと、
を更に含む請求項9に記載の処理。
【請求項１１】
前記デジタル署名はブロックチェーントランザクションに適用される、請求項9または10に記載の処理。
【請求項１２】
システムであって、
プロセッサと、
前記プロセッサによる実行の結果として、前記システムに請求項1乃至11のいずれか一項に記載のコンピュータにより実施される処理のいずれかの実施形態を実行させる実行可能命令を含むメモリと、
を含むシステム。
【請求項１３】
実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、請求項1乃至11のいずれか一項に記載のコンピュータにより実施される処理の実施形態を実行させる、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【発明の概要】
【０００１】
本発明は、概して、自動投票処理に関し、特に閾値署名方式に関する。本発明は、特に、ブロックチェーントランザクションのために閾値署名方式で使用することに適するが、これに限定されない。
【０００２】
本願明細書では、私たちは、全ての形式の電子的、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本発明はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本発明の範囲に包含されることに留意すべきである。用語「ユーザ」は、ここでは、人間またはプロセッサに基づくリソースを表してよい。
【０００３】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード（マイナー）は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション（unspent  transaction,  UTXO）のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真（TRUE）と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、（ｉ）トランザクションを受信した第1ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、（ｉｉ）マイナーにより構築された新しいブロックに追加される、（ｉｉｉ）マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
【０００５】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Bitcoinの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益（例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等）を利用しながら、それらの用途をより多様化し得る。
【０００６】
自動投票処理は、例えば複数の参加者により投じられた投票に基づき多数決を利用して、または複数の署名を要求する閾値署名方式を利用して、ブロックチェーントランザクションを実行するために使用できる。既存の自動投票処理は、多数のパーティが変化する数の投票を有し、動議を通過させるために、またはブロックチェーントランザクションのようなトランザクションに署名させるために、その部分集合がサポートまたは同意を提供する必要があるとき、欠点を有する。
【０００７】
したがって、パーティの最適な組み合わせを見付ける計算要求が増大するので、これを達成するための構成を提供することが望ましい。
【０００８】
このような改良されたソリューションがここで考案される。
【発明が解決しようとする課題】
【０００９】
したがって、本発明によると、添付の請求項において定められる処理が提供される。
【課題を解決するための手段】
【００１０】
本発明によると、コンピュータにより実施される投票処理であって、
複数の参加者の間に、第1共通シークレットの複数のシェアを分配するステップであって、前記第1共通シークレットは、前記参加者による自動投票処理を実施し、第1閾数の前記シェアにアクセス可能であり、前記第1閾数より少ないシェアによりアクセス不可能である、ステップと、
前記第1閾数のシェアを提供するために、複数の前記参加者により保持される前記第1共通シークレットの前記シェアの異なる数に基づき、複数の前記参加者により保持さえる前記シェアの少なくとも1つの組み合わせを決定するステップと、
を含む処理が提供され得る。
【００１１】
複数の前記参加者により保持される前記第1共通シークレットの異なる数のシェアに基づき、少なくとも1つの組み合わせを決定して、前記第1閾数のシェアを提供することにより、これは、第1閾数のシェアが、種々の参加者により保持されるシェアの数が変化するとき、動的に決定できるという利点を提供し、それにより、投票処理の効率を向上する。
【００１２】
本発明の文脈で、用語「投票」は、参加者の大多数により行われる共同決定の意味における投票だけでなく、例えばコンピュータまたは他のマシンを制御するための、またはブロックチェーントランザクションを実行可能にするためのブロックチェーントランザクションの署名を可能にするために、これらの投じられた投票の大多数に基づき、自動決定が行われることを可能にする投票処理も含む。
【００１３】
少なくとも1つの前記組み合わせを決定する前記ステップは、複数の前記参加者により保持されるそれぞれのシェアの数を表す情報を含むデータに、ナップサックアルゴリズムを適用するステップを含んでよい。
【００１４】
これは、処理の計算効率を向上するという利点を提供する。
【００１５】
前記データは、複数の前記参加者の推定投票動作を表す情報を更に含んでよい。
【００１６】
これは、参加者の期待投票動作を考慮できるという利点を提供し、それにより投票処理の効率を向上する。
【００１７】
推定投票動作を表す前記情報は、係数を含んでよく、該係数により、複数の前記参加者により保持されるそれぞれのシェアの数を表す前記情報が乗算される。
【００１８】
前記ナップサックアルゴリズムは、第1の複数の前記参加者により保持されるシェアの少なくとも1つの第1の前記組み合わせを、第2の複数の前記参加者により保持されるシェアの少なくとも1つの第2の前記組み合わせに基づき、決定してよく、前記第2の複数は前記第1の複数と異なる。
【００１９】
これは、前記組み合わせを繰り返し決定できるという利点を提供し、それにより、処理の計算効率を向上する。
【００２０】
複数の参加者により保持されるシェアの数は、前記データを複数の所定の値と比較することにより、推定されてよい。
【００２１】
これは、適切な数のシェアの一層迅速な決定を可能にするという利点を提供する。
【００２２】
前記所定の値は、少なくとも1つのSternシリーズに基づいてよい。
【００２３】
これは、所定の値の繰り返し決定を可能にすることにより、所定の値が計算的に効率のよい方法で生成できるという利点を提供する。
【００２４】
複数の前記所定の値は、他の前記所定の値に基づき決定されてよい。
【００２５】
これは、所定の値の繰り返し決定を可能にすることにより計算効率を向上するという利点を提供する。
【００２６】
第1共通シークレットはデジタル署名であってよい。
【００２７】
各々の前記シェアは、秘密鍵のそれぞれのシェアおよび一時的な鍵のそれぞれのシェアにより署名された部分署名であってよく、前記方法は、
前記複数の参加者の間に前記秘密鍵の複数のシェアを分配するステップであって、前記第1秘密鍵は、第2閾数のシェアにアクセス可能であり、前記第2閾数より少ないシェアにアクセス不可能である、ステップと、
前記複数の参加者の間に前記一時的な鍵の複数のシェアを分配するステップであって、前記一時的な鍵は、第3閾数のシェアにアクセス可能であり、前記第3閾数より少ないシェアにアクセス不可能である、ステップと、を更に含んでよい。
【００２８】
前記デジタル署名はブロックチェーントランザクションに適用されてよい。
【００２９】
本発明は、プロセッサと、プロセッサによる実行の結果として、システムに本願明細書に記載のコンピュータにより実施される処理のいずれかの実施形態を実行させる実行可能命令を含むメモリと、  を含むシステムも提供する。
【００３０】
本発明は、実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、本願明細書に記載のコンピュータにより実施される処理を実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【００３１】
本発明の上述の及び他の態様は、本願明細書に記載の実施形態から明らかであり、及びそれを参照して教示される。本発明の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【００３２】
【図１】本発明を実施する自動投票処理の概略表現を示す。
【図２】種々の実施形態が実装できるコンピューティング環境を示す概略図である。
【発明を実施するための形態】
【００３３】
署名済みブロックチェーントランザクションのシェアを生成するメカニズムを先ず説明する。
【００３４】
最初に、セキュア通信チャネルが、国際特許出願WO2017/145016に詳細に記載された方法で、参加者間に確立される。その結果、データは、他の参加者に利用可能にされることなく、参加者間で交換できる。
【００３５】
セキュア通信チャネルが参加者間に確立されると、第1秘密鍵dAのシェアdA(i)は、以下に記載する方法を用いて第1参加者のグループの間に分配される。
【００３６】
アルゴリズム1：鍵生成
ドメインパラメータ(CURVE,  Cardinality  n,  Generator  G)
インプット：  N/A
アウトプット：  鍵シェアdA1、dA2、．．．、dAN
アルゴリズム1の方法は以下の通りである。
【００３７】
1)  (N)のうちの各参加者p(i)は、ECC公開鍵(または本実装ではBitcoinアドレス)を全ての他の参加者と交換し、ここで1≦i≦Nである。このアドレスは、グループアイデンティティアドレスであり、任意の他の目的で使用される必要がない。
【００３８】
留意すべきことに、これは、例えば国際特許出願WO2017/145016に開示されるように導出されたアドレス、および該出願に開示された処理から参加者の各々の間の共有された値に基づく鍵である。
【００３９】
2)  各参加者p(i)は、全ての他のパーティから秘密である方法で、ランダムな係数を有する次数(k−1)の多項式fi(x)を選択する。
【００４０】
この関数は、多項式の自由項として選択された参加者のシークレットa0(i)の影響を受ける。この値は共有されない。この値は、導出された秘密鍵を用いて計算される。
【００４１】
fi(h)は、参加者p(i)により選択された関数f(x)の点(x=h)における値の結果として定められ、参加者p(i)の基本式は、以下の関数として定められる：
i(h)は、参加者p(i)により選択された関数f(x)の点(x=h)における値の結果として定められ、参加者p(i)の基本式は、以下の関数として定められる：
f(x)＝Σp=0(k−1)  apxp  mod  n
この式で、a0は各参加者p(i)のシークレットであり、共有されない。
【００４２】
したがって、各参加者p(i)は、該参加者のシークレットとして定義される自由項a0(i)を有する次数(k−1)の多項式として表される秘密に保たれた以下の関数fi(x)を有する：
fi(x)＝Σγ=0(k−1)  aγxγ  mod  n
【００４３】
3)  各参加者p(i)は、上述のようにP(h)の公開鍵を用いて参加者P(h)∀h={1,...,(i−1),(i+1),...,N}へのfi(h)を暗号化し、復号するためにP(h)の値を交換する。
【００４４】
Znがフィールド(field)であり、ECC秘密鍵として選択された値に対してnを法としてラグランジュ補間を有効に実行できる場合、シャミアのシークレット共有方式SSSS(Shamir’s  Secret  Sharing  Scheme)[5]がZnに対して実施できるという結論に至る条件が存在する。
【００４５】
4)  各参加者P(i)は、全ての参加者に以下の値をブロードキャストする。
a)  ak(i)G∀k={0,...,(k−1)}
b)  fi(h)G∀h={1,...,N}
【００４６】
上式の変数hに関連付けられた値は、参加者P(h)の位置であり得る。その結果、参加者P(h)が方式の中で第3参加者を表す場合、h=3、または等価に、参加者により使用されるECC公開鍵の値を整数として表してよい。いずれの実装についても使用例およびシナリオが存在する。後者の実装では、値h={1,…,N}は、個々の参加者の利用した公開鍵にマッピングされた値の配列により置き換えられ得る。
【００４７】
5)  各参加者P(h≠i)は、各他の参加者から受信したシェアとの、受信したシェアの一貫性を検証する。つまり：
Σk=o(k−1)hk  ak(i)  G  =  fi(h)G
そして、fi(h)Gは、参加者のシェアと一致する。
【００４８】
6)  各参加者P(h≠i)は、該参加者(P(h≠i))により所有され且つ受信されたシェアが他の受信されたシェアと一致するかを検証する：
a0(i)G=Σh∈Bβjfi(h)G  ∀P(h≠i)
【００４９】
実際に、これは、参加者が、受信したシェアから共有シークレットを復元し得るが、代わりに、Gにより乗算されたシェアから、基準点Gにより乗算された共有シークレットを復元する処理を実行することを意味する。これが一致しない場合、参加者はプロトコルを拒否し、再び開始する。
【００５０】
7)  参加者p(i)は彼らのシェアdA(i)を次のように計算する：
SHARE(p(i))=dA(i)=Σh=1jfh(i)  mod  n
ここで、SHARE(p(i))∈Zn
及び
ここで、
【数１】
2021515271.tif 000003
【００５１】
ここで、演算「Exp−Interpolate(f1,...,fN)」は、シェアf1,...,fNから共有シークレットdAを復元するために通常使用される方法で、例えばシャミア秘密共有方式の場合にはラグランジュ係数を用いる補間により、シェアf1×G,...,fN×Gから共有シークレット値G×dAを復元する演算を実行することを意味する。
【００５２】
戻り値：  (dA(i),QA)
参加者p(i)は、署名を計算する際にシェアを使用する。この役割は、任意の参加者により、または署名を集める処理において調整者(coordinator)として機能するパーティp(c)により、行うことができる。参加者p(c)は、変化し、トランザクションに署名するために十分なシェアを集めようとする度に同じパーティである必要はない。
【００５３】
したがって、秘密鍵シェアdA(i)∈Zn*は、他の参加者のシェアを知らずに、生成される。
【００５４】
アルゴリズム2：秘密鍵を更新する
インプット：  秘密鍵dAの参加者Piのシェアを示すdA(i)
アウトプット：  参加者Piの、新しい秘密鍵シェアdA(i)‘
アルゴリズム2は、秘密鍵を更新するため、およびプロトコルにランダム性を追加するために使用できる。
【００５５】
1)  各参加者は、ゼロ(0)を自由項とする次数(k−1)のランダム多項式を選択する。これは、アルゴリズム1と類似するが、参加者は全ての他の参加者の選択されたシークレットがゼロであることを検証しなければならない。
【００５６】
以下に留意すべきである。
【数２】
2021515271.tif 000004
ここで、0は楕円曲線上の無限遠における点である。
【００５７】
この式を用いて、全てのアクティブな参加者は以下の関数を検証する：
【数３】
2021515271.tif 000005
ゼロシェアを生成する：  zi∈Zn*
【００５８】
2)  dA(i)’=dA(i)+zi
【００５９】
3)  戻り値：  dA(i)’
【００６０】
参加者の集合は、アルゴリズム1に従い秘密鍵シェアdA1,dA2,...,dANを構成する。新しい鍵シェアDk1,Dk2,...,DkNは、集合の中の各参加者に導入される。これらのシェアは、上述のアルゴリズム1を用いて構成されてよい。アルゴリズム1では、参加者の閾シェアが、予め知られていない共有シークレットDkを構成可能であってよい。代替として、Dkは予め知られていてよく(例えば決定性鍵)、シェアは、アルゴリズムと同様の方法で構成されてよいが、予め知られているDkは多項式の中の自由項として選択される。いずれの場合にも、集合の中の各参加者にはスライスDk1,Dk2,...,DkNだけが知られているが、以下は全員に知られている：
【数４】
2021515271.tif 000006
【００６１】
全ての参加者は以下の第1公開鍵を知っているので：
【数５】
2021515271.tif 000007
【００６２】
彼らは以下を計算できる：
【数６】
2021515271.tif 000008
【００６３】
ここで、第1V1Sおよび第2V2S秘密鍵はV2S=V1S+Dkにより関連付けられるので、彼らはdAの彼らのスライスまたはDkをブロードキャストしない。個々のシェアdA1,...,dAN、およびDk1,...,DkNは、各々の個々の参加者にだけに知られたままである。
【００６４】
新しいアドレスP2Sが生成され、誰が主な資金を制御するかを変更するトランザクションtxがこれに署名する。つまり、P1SからP2Sへの支払いは、アドレスP1Sを用いて署名できる。
【００６５】
Dk集合は、P1S集合からのグループとして(または閾数または全メンバのいずれかとして)、または新しいグループ、のいずれかとして設定できる。Dkの各閾スライスは、別個に割り当てることができるが、P1SおよびDkが別個に制御される場合、これは二重署名構造を作り出し、P1SおよびDkの両方がトランザクションtxに署名するためにそれぞれの閾レートで要求されることに留意すべきである。更に、P1SおよびDkは同じメンバまたは同じ割合を必要としないことに留意すべきである。
【００６６】
アルゴリズム3：署名生成
インプット：
署名されるべきメッセージ：  e=H(m)
秘密鍵シェア：  dA1,...,dAN、ここで、dA(i)∈Zn*
決定性鍵：  Dk1,...,DkN、ここで、Dki∈Zn*
秘密鍵シェアdA1,dA2,...,dANは、アルゴリズム1を用いて生成される。決定性鍵シェアDk1,Dk2,...,DkNは、アルゴリズム1を用いて、多項式の中の自由項としてランダムな定数を用いて、または、自由項として予め知られている決定性鍵Dkを用いて、生成される。
【００６７】
アウトプット：
署名：  (r,s)  ここで、r,s∈Zn*
署名は、秘密鍵のシェアdAおよび決定性鍵のシェアDkの両方を署名に組み込む方法を用いて生成される。これは以下のように詳細に説明される。
【００６８】
先ず、各参加者は、アルゴリズム1を用いて一時的な(emphemeral)鍵シェアを生成する：
ki∈Zn*
【００６９】
新しいマスクシェアが上述のアルゴリズム1を用いて生成される：
αi∈Zn*
【００７０】
ゼロマスクシェアが上述のアルゴリズム2を用いて生成される：
βi∈Zn、  ci∈Zn
【００７１】
各参加者はαi、βi、  ciを知っており、それらは他のだれにも知られていない。
【００７２】
1)  e=H(m)メッセージ(署名されるべきトランザクション)を分配する。
【００７３】
以下をブロードキャストする：
【数７】
2021515271.tif 000009
【００７４】
2)  以下を計算する：
【数８】
2021515271.tif 000010
【００７５】
ここで、αはマスクシェアαiに対応する秘密鍵であり、演算「Interpolate(ν1,...,νN)」は、例えばラグランジュ補間係数を用いて、シェアν1,...,νNから共有シークレットμを取得することを意味する。
【００７６】
3)  以下を計算する：
【数９】
2021515271.tif 000011
【００７７】
4)  (Rx,Ry)を計算する。ここで、
【数１０】
2021515271.tif 000012
【００７８】
5)  r:=rx=Rx  mod  nを定める。
【００７９】
r=0ならば、やり直す。
【００８０】
6)  以下をブロードキャストする：
Si:=ki(e+[dAi+Dki]r)+ci  mod  n
dAiおよびDkiが参加者の異なる集合を表す場合、各集合からの2人の参加者は各々の個々のSiをブロードキャストするために通信しなければならないことに留意する。
【００８１】
7)
【数１１】
2021515271.tif 000013
【００８２】
S=0ならば、やり直す。
【００８３】
8)  戻り値：  (r,s)
【００８４】
9)  次式に由来するトランザクションを構成する：
【数１２】
2021515271.tif 000014
【００８５】
これは、(r,s)署名を有する標準的なBitcoinトランザクションである。どの点もdAを有しない、または、(Dkが既存の知られている値と分離されてない限り)Dkが再構成される。
【００８６】
＜投票の最適化のためのメカニズム  −  ソリューションの実施形態＞
図1を参照すると、本発明を実施する、複数の参加者4のための、コンピュータにより実施される投票処理2が開示される。各参加者4は、署名済みブロックチェーントランザクションのシェアの形式で、投票の多数のシェア6を保持する。その結果、ブロックチェーントランザクションに署名するため、したがって実行14するためには閾数のシェア6が要求される。参加者4は、変化する数のシェア6を保持できる。したがって、参加者4は、それぞれ、シェア6の合計数のうちの変化する割合を保持できる。信頼性8の確率は、各参加者4に割り当てることができる。信頼性8の確率は、参加者4が所与の投票決定に対して期待されたように（または要求されたように）投票する推定確率を指定する。投票者の信頼性reliability値は、以下の詳述するナップサックアルゴリズム10の中の項（item）のコストの指標として使用できる。例えば、cost=1−reliabilityである。
【００８７】
トランザクションに署名させるために、閾数のシェアが達成される必要がある。シェアの割合は、昇順に収集できる。閾値には、必要な投票数の安全なマージンを含むことができる。つまり、組み合わせが計算される。これは、信頼性8の確率が低すぎると推定される場合に、閾数より多くのシェアを提供する。次に、計算「ビン（bin）」の集合が構成され、以下に詳述するStern−Brocot木に従い順序付けられた有理数に従いサイズを決定される。Stern−Brocot木は、有理数を生成するために、Sternの近隣項を分割することにより、構成できる。代替として、Stern−Brocot木は、後述する行列乗算手順に従うことにより計算できる。この構成では各有理数は1回だけ生じるので、無限深さまでの木は、有理数の完全な集合をリストする。明らかに、この集合は無限集合である。実装では、Stern−Brocot木の深さは、計算ビンの粒度を調整するために較正できる。必要なビンの数が増加するにつれ、並べ替え手順の計算コストが増大する。
【００８８】
値が0と1との間にある有理数のみが考慮され、これらの値は、計算ビンの上側境界値および下側境界値として、値12により順序づけられる。これらのビンは、投票者が問題となっている「動議」、例えばブロックチェーントランザクションを実行するための提案、に賛成を投じる、合計投票の比率を保つ。
【００８９】
彼らの信頼性（上述した）により乗算されたシェア比率は、値の単位数量未満の順序、および値の最も近い（しかし大きい）有理数ビンの中にあるシェア比率と比較される。これは、シェア6の比率の順序づけ、並べ替えを提供する。シェア比率が有理数と値において正確に一致しないので、必然的に差が生じるが、それらは、上述のような側境界および下側境界を有する計算ビンに含まれる。
【００９０】
これを説明するために、以下の表に一例が示される。
【００９１】
【表１】
2021515271.tif 000015
【００９２】
貢献は、投票者の有する合計シェア比率とそれらの投票の信頼性との積である。貢献は、投票者の貢献する「期待」投票数として考えられる。
【００９３】
投票者の最適な集合は、次に、ナップサックアルゴリズム（例えば、動的計画法、または汎用アルゴリズム）に対する解法を用いて計算できる。これは、「Different  Approaches  to  Solve  the  0/1  Knapsack  Problem」、Maya  Hristakeva  Computer  Science  Department,  Simpson  College,  Indianola,  IA  50125に詳細に記載されている。
【００９４】
更なる利点は、投票者の投票プロファイルが変化した場合、または投票者の信頼性プロファイルが変化した場合に、順序および最適化が、同じ計算を再実行することにより、再計算できることである。これは、非常に動的に変化する環境で本技術の使用を可能にする。これは、また、本技術を、膨大な数の投票者が存在するシナリオへと拡大できる。
【００９５】
＜大規模な投票方式へのアルゴリズム的アプローチ＞
＜アルゴリズム1＞
ステップ1。投票者および投票者の有するシェア数に関する情報を収集する。
【００９６】
ステップ2。各投票者の有する合計シェアの比率を計算する。投票習慣における投票者の信頼性度を評価する。上述のように、投票されている課題について、投票者に「コスト」を割り当てる。Stern−Brocot木により記述される、単位数量未満の値の有理数に従いサイズの決められた計算「ビン」のシリーズを生成する。
【００９７】
ステップ3。シェアの比率を、Stern−Brocot木により列挙されるような単位数未満の有理数の値と比較する。これは、1未満の値の有理分数に基づき値を並べ替える効率的な方法である。この手順は、計算ビンの上側境界および加減境界の両方を定める。関連付けられたビンに、シェアの期待比率を置く。各ビンの中の各エントリを追跡する。各ビンの中に何個のエントリが存在するかを追跡する。これは、ナップサック最適化処理のために、シェアの比率に関する情報を準備する。
【００９８】
ステップ4。ナップサックアルゴリズムの標準的な解法を実行する。これは、例えば「Different  Approaches  to  Solve  the  0/1  Knapsack  Problem」、Maya  Hristakeva  Computer  Science  Department,  Simpson  College,  Indianola,  IA  50125に記載されており、定数としての閾値を有する。ナップサックに対する「動的計画法」アプローチの一例を以下に詳述する。
【００９９】
ステップ5。投票方式を確認する。
【０１００】
＜ナップサックアルゴリズムの詳細な定義＞
ナップサックに価値ある項目（valuable  item）を提出することと、多数の投票者からの期待される貢献により閾値投票を達成することとの間の類似性は上述のように示すことができる。
【０１０１】
ナップサック問題に対する解法は、Hristakevaの上述の参考文献に記載されている。以下に一例を詳述する。
【０１０２】
ナップサック問題の仕様は以下の通りである。
【０１０３】
Xiはアイテムiの何個のコピーがナップサックに入れられるかを示す。最大化のための目的関数：
Maximize
Σi−1NBiXi
【０１０４】
ここで、Xiは項目型（item  type）の終了であり、iはナップサックに詰め込まれる項目のインデックスであり、Bは利益であり（したがって、B=1は良好を示し、B=0は粗悪を示す）、Biは上述のように投票者iの期待利益であり、Xiは投票者iの有する合計シェアの比率であり、制約：Σi−1NViXi≦Vを受け、ここで、Viはオブジェクトインデックスiの量であり、Vは合計投票数であり、0≦Xi≦Qi、ここで、Qは項目型iの最大数である。
【０１０５】
Qiの1つ以上が無限ならば、KPは無限であり、その他の場合、KPは有限である。これは、Chen  T.S.  Huang  G.S.  Liu  T.P.,  Chung  Y.F  (2002),  ‘Digital  Signature  Scheme  Resulted  from  Identification  Protocol  for  Elliptic  Curve  Cryptosystem’,  Proceedings  of  IEEE  TENCON’02.  pp.  192−195に更に詳細に記載されている。
【０１０６】
＜ナップサック問題に対する解法の実装＞
動的計画法アプローチの解法を以下に記載する。
【０１０７】
動的計画法（Dynamic  Programming）は、重複するサブ問題との反復関係を満たす解を有する問題を解く。
【０１０８】
動的計画法は、小さなサブ問題の各々を1回だけ解き、結果を表に記録する。これは、解法全体の計算効率を向上する。
【０１０９】
表は、次に、元の問題の解を得るために使用される。動的計画法アプローチは、例えばHsu  C.L,  Wu  T.  C.  (1998),  Authenticated  Encryption  Scheme  with  (t,n)  Shared  Verification’,  IEEE  Proceedings−Computers  and  Digital  Techniques,  Vol.  145,  no.  2,  pp.  117−120に記載されているようにボトムアップで動作するが、本技術はトップダウンにも適用できる。
【０１１０】
0/1ナップサック問題のための動的計画法アルゴリズムを設計するために、先ず、解の項目の中でナップサック問題のインスタンスに対する解を、そのより小さなインスタンスへと表現する反復関係を導出する必要がある。
【０１１１】
最初のi個の項目、1≦i≦N、のインスタンスを考える：
weights    w1,...,wN,
values    v1,...,vN,
ナップサック容量j,  1≦j≦V
【０１１２】
Table[i,j]がこのインスタンスの最適解であるとする（つまり、jのナップサック容量に適合する最初のi個の項目の最も価値ある部分集合の値）。
【０１１３】
jのナップサック容量に適合する最初のi個の項目の全ての部分集合は、i番目の項目を含まない2つの部分集合、およびi番目の項目を含む部分集合に分けられる。
【０１１４】
これは、反復関係を生じる。
【０１１５】
j＜wi  ならば、Table[i,j]←Table[i−1,j]    i番目の項目に適合しない。
その他の場合、Table[i,j]←maximum{表[i−1,j]    i番目の項目を使用しない。
および、vi+Table[i−1,j−vi,]    i番目の項目を使用する。
【０１１６】
このコンテキストでは、シンボル←は、データ構造への値の割り当てを示す。
【０１１７】
目的は、Table[N,Capacity]、ナップサックの部分集合の最大値、を見付けることである。
【０１１８】
ナップサック問題の2つの境界条件は：
・ナップサックは、それに含まれる項目が存在しないとき、値を有しない（つまり、i=0）。
Table[0,j]=0  for  j≧0
・ナップサックは、その容量がゼロのとき、その中に項目を含むことができないので、値を有しない（つまり、j=0）。
Table[i,0]=0  for  i≧0
【０１１９】
＜アルゴリズム＞
Dynamic  Programming(Weights  [1…N],  Values[1…N],  table  [0…N,0…Capacity])
【０１２０】
インプット：配列Weightsは全ての項目の重みを含む。配列Valuesは全ての項目の値を含む。配列Tableは0により初期化される。これは、動的計画法アルゴリズムからの結果を格納するために使用される。
【０１２１】
アウトプット：配列Table(Table[N,Capacity])の最後の値は、所与の容量（Capacity）について、問題の最適解を含む。
【０１２２】
for  i=0  to  N  do
for  j=0  to  Capacity
if<Weights[i]  then
Table[i,j]←Table[i−1,j]
else
Table[i,j]←maximum{table[i−1,j]
AND
Values[i]+table[i−1,j−Weights[i[]
Return  Table[N,Capacity]
【０１２３】
このアルゴリズムインスタンスでは、私たちは、項目の重みおよび値のために使用される2つの別個の配列、型項目（type  item）の1つの更なる配列Itemsを使用し、ここで項奥は2つのフィールド重み（weight）および値（value）を有する構造である。
【０１２４】
どの項目が最適解に含まれるかを見付けるために、以下のアルゴリズムが使用される：
n←Nc←Capacity
【０１２５】
位置Table[n,c]で開始する。
【０１２６】
残り容量が0より大きいならば、以下を行う
If  Table[n,c]=Table[n−1,c]  then  
項目nが最適解に含まれていない。
その他の場合、
項目nが最適解に含まれている。
【０１２７】
項目（Item）nを処理する。
【０１２８】
1行上にn−1へと移動する。
【０１２９】
列c−weight(n)へと移動する。
【０１３０】
＜Stern−Brocot木の定義＞
【数１３】
2021515271.tif 000016
【０１３１】
上図から、Sternシリーズから導出されることは、有理数が木の形式に配置できることであることが分かる。木の中の葉の間の関係は、それらが全て最上位要素、つまり（1/1）から導出されることである。
【０１３２】
この値をベクトルとして考え、これを左の行列Lまたは右の行列Rにより乗算することにより、木の上の連続する葉が生成できる。行列LおよびＲは以下のように定められる。
【０１３３】
I=1  0
0  1
L=1  0
1  1
R=1  1
0  1
【０１３４】
出現する構造は以下の通りである：
【数１４】
2021515271.tif 000017
【０１３５】
行列RおよびLを繰り返し適用することにより、木の更なる枝が生成できることが分かる。木の任意の所与のレベルにある項目は、次に左から右へと読み出され、有理数の順序が生成できる。（行列Iに揃えられた）中心線の左までの数値は、0と単位数（unity）との間の値を有する。中心線の右までの数値は、単位数より大きい値を有する。
図2を参照すると、本開示の少なくとも一実施形態を実施するために使用され得るコンピューティング装置2600の説明のための簡略ブロック図が提供される。種々の実施形態で、コンピューティング装置2600は、上述の図示のシステムのうちのいずれかを実装するために使用されてよい。例えば、コンピューティング装置2600は、データサーバ、ウェブサーバ、ポータブルコンピューティング装置、パーソナルコンピュータ、又は任意の電子コンピューティング装置として使用するために構成されてよい。図2に示すように、コンピューティング装置2600は、主メモリ2608及び永久記憶装置2610を含む記憶サブシステム2606と通信するよう構成され得る1つ以上のレベルのキャッシュメモリ及びメモリ制御部(集合的に2602とラベル付けされる)を備える1つ以上のプロセッサを含んでよい。主メモリ2608は、図示のように、動的ランダムアクセスメモリ(ＤＲＡＭ)2618及び読み出し専用メモリ(ＲＯＭ)2620を含み得る。記憶サブシステム2606及びキャッシュメモリ2602は、本開示で説明されたようなトランザクション及びブロックに関連付けられた詳細事項のような情報の記憶のために使用されてよい。プロセッサ2602は、本開示で説明されたような任意の実施形態のステップ又は機能を提供するために利用されてよい。
【０１３６】
プロセッサ2602は、1つ以上のユーザインタフェース入力装置2612、1つ以上のユーザインタフェース出力装置2614、及びネットワークインタフェースサブシステム2616とも通信できる。
【０１３７】
バスサブシステム2604は、コンピューティング装置2600の種々のコンポーネント及びサブシステムが意図した通りに互いに通信できるようにするメカニズムを提供してよい。バスサブシステム2604は、単一のバスとして概略的に示されるが、バスサブシステムの代替の実施形態は、複数のバスを利用してよい。
【０１３８】
ネットワークインタフェースサブシステム2616は、他のコンピューティング装置及びネットワークへのインタフェースを提供してよい。ネットワークインタフェースサブシステム2616は、幾つかの実施形態では、コンピューティング装置2600の他のシステムからデータを受信し及びそれへデータを送信するインタフェースとして機能してよい。例えば、ネットワークインタフェースサブシステム2616は、データ技術者が、装置をネットワークに接続することを可能にする。その結果、データ技術者は、データセンタのような遠隔地にいがなら、データを装置へ送信し、データを装置から受信できる。
【０１３９】
ユーザインタフェース入力装置2612は、キーボード、統合型マウス、トラックボール、タッチパッド、又はグラフィックタブレットのような指示装置、スキャナ、バーコードスキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンのようなオーディオ入力装置、及び他の種類の入力装置のような、1つ以上のユーザ入力装置を含んでよい。通常、用語「入力装置」の使用は、コンピューティング装置2600に情報を入力する全ての可能な種類の装置及びメカニズムを含むことを意図する。
【０１４０】
1つ以上のユーザインタフェース出力装置2614は、ディスプレイサブシステム、プリンタ、または音声出力装置のような非視覚的ディスプレイ、等を含んでよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、又はプロジェクションのような平面装置、又は他のディスプレイ装置を含んでよい。通常、用語「出力装置」の使用は、コンピューティング装置2600から情報を出力する全ての可能な種類の装置及びメカニズムを含むことを意図する。1つ以上のユーザインタフェース出力装置2614は、例えば、ユーザインタフェースを提示して、ここに記載したプロセス及び変形を実行するアプリケーションとのユーザ相互作用が適切であるとき、そのような相互作用を実現するために使用されてよい。
【０１４１】
記憶サブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供する基本プログラミング及びデータ構造を記憶するコンピュータ可読記憶媒体を提供してよい。アプリケーション(例えば、プログラム、コードモジュール、命令)は、1つ以上のプロセッサにより実行されると、本開示の1つ以上の実施形態の機能を提供し、記憶サブシステム2606に格納されてよい。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ2602により実行されてよい。記憶サブシステム2606は、更に、本開示に従い使用されるデータを格納するレポジトリを提供する。例えば、主メモリ2608及びキャッシュメモリ2602は、プログラム及びデータのための揮発性記憶を提供できる。永久記憶装置2610は、プログラム及びデータの永久(不揮発性)記憶を提供でき、磁気ハードディスクドライブ、取り外し可能媒体に関連付けられた1つ以上のフロッピディスクドライブ、取り外し可能媒体に関連付けられた1つ以上の光ドライブ(例えば、ＣＤ−ＲＯＭ、又はＤＶＤ、又はＢｌｕｅ−Ｒａｙ)ドライブ、及び他の同様の記憶媒体を含んでよい。このようなプログラム及びデータは、本開示に記載した1つ以上の実施形態のステップを実行するためのプログラム、及び本開示に記載したトランザクション及びブロックに関連付けられたデータを含み得る。
【０１４２】
コンピューティング装置2600は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は後述する任意の他の装置を含む種々のタイプのものであってよい。さらに、コンピューティング装置2600は、1つ以上のポート(例えば、USB、ヘッドフォンジャック、光コネクタ、等)を通じてコンピューティング装置2600に接続可能な別の装置を含み得る。コンピューティング装置2600に接続され得る装置は、光ファイバコネクタを受けるよう構成される複数のポートを含んでよい。したがって、この装置は、光信号を、処理のために装置を接続するポートを通じてコンピューティング装置2600に送信される電気信号に変換するよう構成されてよい。コンピュータ及びネットワークの絶えず変化する特性により、図2に示したコンピューティング装置2600の説明は、装置の好適な実施形態を説明する目的の特定の例としてのみ意図される。図2に示したシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
【０１４３】
上述の実施形態は、本発明を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本発明の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」(comprising、comprises)等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本発明は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、1つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
＜参考文献＞
1.  Chen  T.S.  Huang  G.S.  Liu  T.P.  and  Chung  Y.F  (2002),  ‘Digital  Signature  Scheme  Resulted  from  Identification  Protocol  for  Elliptic  Curve  Cryptosystem’,  Proceedings  of  IEEE  TENCON’02.  pp.  192−195
2.  Hsu  C.L  and  Wu  T.  C.  (1998),  Authenticated  Encryption  Scheme  with  (t,  n)  Shared  Verification’,  IEEE  Proceedings  −  Computers  and  Digital  Techniques,  Vol.  145,  no.  2,  pp.  117−120.
3.  Graham,  R.  L.;  Knuth,  D.  E.;  and  Patashnik,  O.  Concrete  Mathematics:  A  Foundation  for  Computer  Science,  2nd  ed.  Reading,  MA:  Addison−Wesley,  pp.  116−117,  1994.
4.  Koblitz  N.  (1987),  ‘Elliptic  Curve  Cryptosystems’,  Mathematics  of  Computation,  pp  203−209.
4a.  Padma  Bh  et.  al.  /  (IJCSE)  International  Journal  on  Computer  Science  and  Engineering  Vol.  02,  No.  05,  2010,  1904−1907  Encoding  And  Decoding  of  a  Message  in  the  Implementation  of  Elliptic  Curve  Cryptography  using  Koblitz’s  Method
5.  Nyberg  K.  and  Rueppel  R.A.  (1993),  ‘A  New  Signature  Scheme  Based  on  DSA  giving  message  Recovery’,  ACM  Computer  and  Communications  Security,  Vol.1,pp.58−61.
6.  Rajaram  Ramasamy  R,  Prabakar  M.A,  Devi  M.I,  and  Suguna  M(2009),  ‘Knapsack  Based  ECC  Encryption  and  Decryption’,  International  Journal  of  Network  Security,  Vol.9,  no.3,  pp.  218−226.
7.  Rajaram  Ramasamy  R.  and  Amutha  Prabakar  M.  (2011),  ‘Digital  Signature  Scheme  with  message  Recovery  Using  Knapsack  −based  ECC’,  International  Journal  of  Network  Security,  Vol.12,  no.1,pp.15,20.
8.  Reznick  (2008),  ‘Regularity  Properties  of  the  Stern  Enumeration  of  the  Rationals’,  Journal  of  Integer  Sequence.
9.  Stern,  M.  A.  "Uber  eine  zahlentheoretische  Funktion."  J.  reine  angew.  Math.  55,  193−220,  1858.
10.  Different  Approaches  to  Solve  the  0/1  Knapsack  Problem  Maya  Hristakeva  Computer  Science  Department  Simpson  College  Indianola,  IA  50125  hristake@simpson.edu
【図１】
2021515271.tif 000018
【図２】
2021515271.tif 000019
【国際調査報告】
2021515271.tif 000020
2021515271.tif 000021