(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-06-01
(54)【発明の名称】ブロックチェーントランザクションにおける知識証明のためのコンピュータにより実施される方法及びシステム
(51)【国際特許分類】
H04L 9/32 20060101AFI20220525BHJP
【FI】
H04L9/32 200C
H04L9/32 200E
H04L9/32 200Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021559185
(86)(22)【出願日】2020-04-03
(85)【翻訳文提出日】2021-10-04
(86)【国際出願番号】 IB2020053214
(87)【国際公開番号】W WO2020208491
(87)【国際公開日】2020-10-15
(32)【優先日】2019-04-12
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ホールディングス リミテッド
【氏名又は名称原語表記】NCHAIN HOLDINGS LIMITED
【住所又は居所原語表記】Fitzgerald House, 44 Church Street, St. John’s, Antigua and Barbuda (AG)
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(72)【発明者】
【氏名】マッケイ,アレグザンダー テニスン
(72)【発明者】
【氏名】ジャーン,ウェイ
(57)【要約】
ブロックチェーントランザクションにおける知識証明を可能にする方法が開示される。前記方法は、検証者から証明者へ、(i)一時鍵(r)と第2データ(c)と暗号システムの公開-秘密鍵ペアの秘密鍵との結合に基づく、第1データ(y)であって、前記公開鍵(ν)は第1の乗数で累乗された整数ジェネレータに基づき、前記第1の乗数は前記秘密鍵に基づき、前記秘密鍵の知識は前記第1データから前記一時鍵を決定するために必要とされる、第1データ、及び(ii)第2の乗数で累乗された前記整数ジェネレータに基づく第3データ(x)であって、前記第2の乗数は前記一時鍵に基づく、第3データ、を含むデータにより償還可能なブロックチェーントランザクションを送信するステップを含む。
【特許請求の範囲】
【請求項1】
ブロックチェーントランザクションにおける知識証明を可能にする方法であって、前記方法は、
検証者から証明者へ、(i)一時鍵と第2データと暗号システムの公開-秘密鍵ペアの秘密鍵との結合に基づく、第1データであって、公開鍵は第1の乗数で累乗された整数ジェネレータに基づき、前記第1の乗数は前記秘密鍵に基づき、前記秘密鍵の知識は前記第1データから前記一時鍵を決定するために必要とされる、第1データ、及び(ii)第2の乗数で累乗された前記整数ジェネレータに基づく第3データであって、前記第2の乗数は前記一時鍵に基づく、第3データ、を含むデータにより償還可能なブロックチェーントランザクションを送信するステップを含む方法。
【請求項2】
前記整数ジェネレータは2である、請求項1に記載の方法。
【請求項3】
前記第2データは前記検証者により選択される、請求項1又は2に記載の方法。
【請求項4】
前記検証者から前記証明者へ、前記ブロックチェーントランザクションと別個に、前記第2データを送信するステップ、を更に含む請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記第1データは次式の形式であり、
【数37】
yは前記第1データであり、rは前記一時鍵であり、sは前記秘密鍵であり、cは前記第2データであり、qは素数である、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記第2データはメッセージに基づく、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記メッセージはスマートコントラクトを実施するためのデータを含む、請求項6に記載の方法。
【請求項8】
前記第2データは次式の形式であり、
【数38】
cは前記第2データであり、xは前記第3データであり、mは前記メッセージであり、qは素数であり、Hはハッシュ関数である、請求項6又は7に記載の方法。
【請求項9】
前記検証者において前記メッセージを受信するステップ、を更に含む請求項6~8のいずれか一項に記載の方法。
【請求項10】
前記検証者と前記証明者との間で、少なくとも1つの一時鍵を共有するステップ、を更に含む請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記検証者において前記公開鍵を受信するステップ、を更に含む請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記検証者において前記第1データ及び前記第2データを受信するステップ、を更に含む請求項1~11のいずれか一項に記載の方法。
【請求項13】
2を整数の乗数で累乗した値を決定する、コンピュータにより実施される方法であって、前記方法は、
2のべき級数の項の係数を決定するステップであって、前記級数の各項は、それぞれの前記係数により乗算されたそれぞれの2の累乗を含み、それぞれの前記項のそれぞれの前記係数は0又は1であり、前記項の和は前記整数に等しい、ステップと、
前記係数が1であるそれぞれの値を有すると決定するステップと、
複数の値の積を決定するステップであって、それぞれの前記値は、対応する前記係数が1の値を有する前記級数の各項に対応する、2をそれぞれの2の乗数で累乗したものである、ステップと、
を含む方法。
【請求項14】
前記値は予め計算され格納される、請求項13に記載の方法。
【請求項15】
前記方法は、ブロックチェーントランザクションにより実施される、請求項13又は14に記載の方法。
【請求項16】
前記方法は、2
y mod pの値を決定し、yは前記整数である、請求項13~15のいずれか一項に記載の方法。
【請求項17】
前記方法は、請求項1~12のいずれか一項に記載の方法において、ブロックチェーントランザクションを提供するために使用される、請求項13~16のいずれか一項に記載の方法。
【請求項18】
ブロックチェーントランザクションの中の2つの整数を加算する、コンピュータにより実施される方法であって、前記方法は、
バイナリビット列のペアとして前記整数を表すステップと、
入力としての前記バイナリビット列のペアに対して、(i)前記入力の対応するそれぞれのビットのペアをXOR結合して、第1出力バイナリビット列を生成すること、及び(ii)前記入力の対応するそれぞれのビットのペアをAND結合して、更なるビット列を生成し、最下位ビットとして値0のビットを前記更なるビット列に連結して、第2出力バイナリビット列を生成すること、を含む結合ステップを実行するステップと、
前記第2出力バイナリビット列が値1のビットを含む場合、前の前記結合ステップの出力を入力として用いて、値0のビットのみを含む前記第2出力バイナリビット列が生成されるまで、前記結合ステップを繰り返すステップと、
を含む方法。
【請求項19】
ブロックチェーントランザクションの中の2つの整数の積を決定する方法であって、前記方法は、
第1及び第2整数をそれぞれ第1及び第2バイナリビット列として表すステップと、
1の値を有する前記第1整数の各ビットについて、前記第2整数を表すビット列を含むそれぞれの格納されたビット列と、最下位ビットとしてそれに追加される値0のビットの数と、を提供するステップであって、該数は、1の値を有する前記第1整数の対応するビットにより表される2の累乗に等しい、ステップと、
請求項18に記載の少なくとも1つの方法により前記格納されたビットを一緒に加算するステップと、
を含む方法。
【請求項20】
モジュラ計算における整数を決定するステップであって、前記方法は、
2(mod p)のべき級数の項の係数を決定するステップであって、前記級数の各項は、それぞれの前記係数により乗算されたそれぞれの2(mod p)の累乗であり、それぞれの前記項のそれぞれの前記係数は0又は1であり、前記項の和は前記整数(mod p)に等しい、ステップと、
複数の値を格納するステップであって、それぞれの前記値は2を、対応する前記係数が1の値を有する前記級数の各項に対応する、それぞれの2(mod p)で累乗したものである、ステップと、
請求項18に記載の少なくとも1つの方法により、前記複数の値を一緒に加算するステップと、
を含む方法。
【請求項21】
コンピュータにより実装されるシステムであって、
プロセッサと、
前記プロセッサによる実行の結果として、前記システムに請求項1~20のいずれかに記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含むメモリと、
を含むシステム。
【請求項22】
実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、請求項1~20のいずれかに記載の方法の実施形態を実行させる、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、ブロックチェーントランザクションのための知識証明システムに関し、特に、知識証明システムのオンチェーン非対話型の実施に関する。本開示は、限定ではなく、任意のデータ認証のための署名方式で使用することに特に適する。
【背景技術】
【0002】
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本開示はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本開示の範囲に包含されることに留意すべきである。用語「ユーザ」は、ここでは、人間またはプロセッサに基づくリソースを表してよい。
【0003】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード(マイナー)は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション(unspent transaction, UTXO)のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真(TRUE)と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。従って、トランザクションがブロックチェーンに書き込まれるためには、(i)トランザクションを受信した第1ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、(ii)マイナーにより構築された新しいブロックに追加される、(iii)マイニングされる、つまり過去のトランザクションの公開台帳に追加される、ことが必要である。
【0005】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Bitcoinの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益(例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等)を利用しながら、それらの用途をより多様化し得る。
【0006】
現在の研究の一分野は、「スマートコントラクト」の実装のためのブロックチェーンに基づくコンピュータプログラムの使用である。これらは、機械可読コントラクト又は合意の条項の実行を自動化するよう設計されたコンピュータプログラムである。自然言語で記述される伝統的なコントラクトと異なり、スマートコントラクトは、結果を生成するためにインプットを処理できるルールを含む機械実行可能プログラムであり、これは次に該結果に依存して動作を実行させる。
【0007】
別の領域のロックチェーンに関連する関心事項は、ブロックチェーンを介して現実世界のエンティティを表現し及び移転するための、「トークン」(又は「カラードコイン(coloured coin)」)の使用である。潜在的に極秘の又は秘密のアイテムは、識別可能な意味又は値を有しないトークンにより表すことができる。したがって、トークンは、現実世界のアイテムがブロックチェーンから参照されることを可能にする識別子として機能する。
【0008】
知識証明(Knowledge proof)は、あるパーティが別のパーティに、彼又は彼女が、シークレットに関する任意の情報を開示することなく、該シークレットを知っていることを証明することを可能にする暗号システムである。知識証明システムの多くの具体化がある。しかしながら、それらの大部分は計算上、高コストである。
【0009】
従って、既存の知識証明システムより計算効率のよい、ブロックチェーントランザクションのための知識証明システムを提供することが望ましい。
【0010】
このような改良されたソリューションがここで考案された。
【発明の概要】
【0011】
添付の請求の範囲に定められる方法が提供される。
【0012】
ブロックチェーントランザクションにおける知識証明を可能にする方法であって、前記方法は、
検証者から証明者へ、(i)一時鍵と第2データと暗号システムの公開-秘密鍵ペアの秘密鍵との結合に基づく、第1データであって、前記公開鍵は第1の乗数で累乗された整数ジェネレータに基づき、前記第1の乗数は前記秘密鍵に基づき、前記秘密鍵の知識は前記第1データから前記一時鍵を決定するために必要とされる、第1データ、及び(ii)第2の乗数で累乗された前記整数ジェネレータに基づく第3データであって、前記第2の乗数は前記一時鍵に基づく、第3データ、を含むデータにより償還可能なブロックチェーントランザクションを送信するステップを含む方法が提供され得る。
【0013】
2を整数の乗数で累乗した値を決定する、コンピュータにより実施される方法であって、前記方法は、
2のべき級数の項の係数を決定するステップであって、前記級数の各項は、それぞれの前記係数により乗算されたそれぞれの2の累乗を含み、それぞれの前記項のそれぞれの前記係数は0又は1であり、前記項の和は前記整数に等しい、ステップと、
前記係数が1であるそれぞれの値を有すると決定するステップと、
複数の値の積を決定するステップであって、それぞれの前記値は、対応する前記係数が1の値を有する前記級数の各項に対応する、2をそれぞれの2の乗数で累乗したものである、ステップと、
を含む方法が提供され得る。
【0014】
ブロックチェーントランザクションの中の2つの整数を加算する、コンピュータにより実施される方法であって、前記方法は、
バイナリビット列のペアとして前記整数を表すステップと、
入力としての前記バイナリビット列のペアに対して、(i)前記入力の対応するそれぞれのビットのペアをXOR結合して、第1出力バイナリビット列を生成すること、及び(ii)前記入力の対応するそれぞれのビットのペアをAND結合して、更なるビット列を生成し、最下位ビットとして値0のビットを前記更なるビット列に連結して、第2出力バイナリビット列を生成すること、を含む結合ステップを実行するステップと、
前記第2出力バイナリビット列が値1のビットを含む場合、前の前記結合ステップの前記出力を入力として用いて、値0のビットのみを含む前記第2出力バイナリビット列が生成されるまで、前記結合ステップを繰り返すステップと、
を含む方法が提供され得る。
【0015】
ブロックチェーントランザクションの中の2つの整数の積を決定する方法であって、前記方法は、
第1及び第2整数をそれぞれ第1及び第2バイナリビット列として表すステップと、
1の値を有する前記第1整数の各ビットについて、前記第2整数を表すビット列を含むそれぞれの格納されたビット列と、最下位ビットとしてそれに追加される値0のビットの数と、を提供するステップであって、該数は、1の値を有する前記第1整数の対応するビットにより表される2の累乗に等しい、ステップと、
以上に記載の少なくとも1つの方法により前記格納されたビットを一緒に加算するステップと、
を含む方法が提供され得る。
【0016】
モジュラ計算における整数を決定するステップであって、前記方法は、
2(mod p)のべき級数の項の係数を決定するステップであって、前記級数の各項は、それぞれの前記係数により乗算されたそれぞれの2(mod p)の累乗であり、それぞれの前記項のそれぞれの前記係数は0又は1であり、前記項の和は前記整数(mod p)に等しい、ステップと、
複数の値を格納するステップであって、それぞれの前記値は2を、対応する前記係数が1の値を有する前記級数の各項に対応する、それぞれの2(mod p)で累乗したものである、ステップと、
以上に記載の少なくとも1つの方法により、前記複数の値を一緒に加算するステップと、
を含む方法が提供され得る。
【0017】
プロセッサと、プロセッサによる実行の結果として、システムに本願明細書に記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含むメモリと、を含むシステムが提供され得る。
【0018】
実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、本願明細書に記載のコンピュータにより実施される方法を実行させる、非一時的コンピュータ可読記憶媒体が提供され得る。
【図面の簡単な説明】
【0019】
本開示による種々の実施形態は、図面を参照して説明される。
【
図1】知識証明を実行するためのブロックチェーントランザクションのスクリプトの実行を示す。
【
図2】2の大きな累乗を決定するためのブロックチェーントランザクションのスクリプトの実行を示す。
【
図3】
図2に示したスクリプトの特定の例のブロックチェーントランザクションのスクリプトの実行を示す。
【
図4】2つの大きな整数の和を決定するためのブロックチェーントランザクションのスクリプトの実行を示す。
【
図5】2つの大きな整数の積を決定するためのブロックチェーントランザクションのスクリプトの実行を示す。
【
図6】モジュラ計算において大きな整数を決定するためのブロックチェーントランザクションのスクリプトの実行を示す。
【
図7】種々の実施形態が実装できるコンピューティング環境を示す概略図である。
【発明を実施するための形態】
【0020】
本開示の知識証明システムは、Schnorrの識別スキーム[C.P. Schnorr (1990). ‘Efficient Identification and Signatures for Cards’ in G. Brassard ed. Adv. In Cryptology-Crypt 239-252. Springer Verlag (1990) Lecture Notes in Computer Science nr 435]の実施である。このスキームは、概念的に簡単なだけでなく、元のBitcoinプロトコルで定義されたOPコードのみを使用する。結果として、トランザクション内のスクリプトに容易に埋め込むことができる。知識証明システムのオンチェーン非対話型実装は、任意のデータ認証のための証明スキームへの変換を含む2つの他の実装と共に説明される。
【0021】
本開示の以下の注釈及び使用例に注意する必要がある。知識証明システムは、公開検証鍵が他のどこかで利用可能ならば、僅か1つのトランザクションに埋め込むことができる。また、受信側がシークレット値を知っている場合にのみ、支払いが使用可能である。特に、公開鍵(検証鍵)は、公衆に見える又はトランザクションに含まれる必要がない。これは、受信者の完全なプライバシ保護を提供する。また、異なる素数を選択することにより、セキュリティが調整できる。これは、効率とセキュリティとの間のトレードオフに柔軟性を提供する。
【0022】
知識の証明が所有権の証明を意味するとき、ソリューションは、受信者が何らかのアセットの所有権を証明できる場合にのみ資金が解放されることを表すスマートコントラクトになる。例として、土地登記所は、財産の所有権を記録するために、同じ知識証明システムを実施できる。土地登記所は、各所有者が彼らの対応するシークレット値を与えられる認証済み検証鍵リストを有することができる。財産の所有権を証明するために、所有者は、チャレンジ(challenge)を与えられた場合に、知識証明を簡単に構成できる。重要なことに、検証鍵はトランザクションに含まれる必要がないことに留意する。それは、計算中に隠され得る。
【0023】
別の例は、知識証明システムを実施する任意のトークンシステムであり得る。同様に、上述のように、幾つかのトークンの所有権は、シークレット値の知識証明を構成することにより証明できる。ソリューションは、貸し出される財産を解錠するための鍵が、同じチャレンジを含むトランザクションを開始することにより取得できる知識証明である、レンタルサービスでも使用できる。例えば、貸し出された車又は家にアクセスするために、貸し出し側は、施錠されたドアから知識証明を提供するためにチャレンジを受信する。借りる側は、次に、チャレンジを含むトランザクションを構成する。財産の所有者は、支払いを受け入れる際の知識証明を開示し、従って、車又は家へのドアを解錠するために必要な知識証明を開示する。
【0024】
本開示は、第三者を含む、アセット移転のためのソリューションでもあり得る。例えば、弁護士(第三者)が、彼のクライアントの意思により、シークレット値を知っている人物にのみ、資金を解放するよう指示される。
【0025】
本開示の特定の実施形態の概要を説明する前に、ここでSchnorrの識別スキーム[C.P. Schnorr (1990). ‘Efficient Identification and Signatures for Cards’ in G. Brassard ed. Adv. In Cryptology-Crypt 239-252. Springer Verlag (1990) Lecture Notes in Computer Science nr 435]が開示される。
【数1】
【0026】
公開パラメータについて、彼らは、以下の乗法群の位数qの部分群を提示している:
【数2】
【0027】
条件は、次式が部分群ジェネレータとして2を有しなければならない:
【数3】
【0028】
これは、べき乗の効率を大幅に向上する。
【0029】
スキームのセキュリティは、離散対数問題に基づく。サイズNの群について、セキュリティは約√Nである。例えば、qが256ビットである場合、スキームのセキュリティは、約128ビットである。つまり、攻撃者がシステムに侵入するためには約2128回の演算を要する。
【0030】
参考のために、フィアット-シャミア変換(Fiat-Shamir Transform)により取得される署名スキームは、以下のように表される:
【数4】
【0031】
留意すべきことに、知識証明と署名スキームとの間の主な違いは、チャレンジcを次式で置き換えることである:
【数5】
【0032】
トランザクションにおける知識証明
非対話型トランザクション
BobからAliceへのトランザクションが説明される。この場合、Aliceが知識証明を提供する場合にのみ、Aliceは支払いを使用できる。
【0033】
Bobは、公開パラメータ(p,q)のコピー、Alice自身から又は検証可能なソースからのAliceの証明鍵ν、を有するとする。
【0034】
Bobは、単にトランザクションを構成して、以下のアウトプットを含めることができる:
【数6】
【0035】
νc mod pがBobによりオフブロックで計算され、値エントリは任意であるとする。完全なプライバシ保護を達成するために、BobはAliceへチャレンジcをオフチェーンで送信するか、又は彼らは何らかの共有されたランダム性をチャレンジとして有する。
【0036】
Aliceが支払いを使用するために、彼女は、単に、プロトコルで指示されたようにx及びyを計算し、以下のようにアンロックスクリプトを有するトランザクションを構成する。
【数7】
【0037】
トランザクションを検証するために、スクリプトは
図1に示すように実行される。
【数8】
【0038】
留意すべきことに、νc mod pは、予め計算され、スクリプトに入れられることができる。これは、スクリプト内検証を可能にするための計算を節約するだけでなく、公開検証鍵を隠す。
【0039】
Aliceが生成したトランザクションのアウトプットの完全性を保護するために、ECDSA署名は、Bobのトランザクション内のロックスクリプトに添付されたidを要求する。つまり、
【数9】
【0040】
これに応答して、Aliceが該トランザクションを使用するとき、彼女は彼女のECDSA署名により新しいトランザクションに署名する。つまり、
【数10】
【0041】
yが大きな数である場合、2
y mod pを計算するために、ビット毎の計算を含む更に複雑なスクリプトを実施する必要がある。オペコードの最大数の現在の上限が大幅に引き上げられるならば、実装は可能になるだろう。スクリプトは、
図2に詳細に示される。
【0042】
使用される算術オペコードは大きな整数ライブラリを備えられると仮定された。これは、Bitcoinの元のプロトコルの場合であった。しかしながら、
図4~6に、ストリング演算を用いて大きな整数の算術演算をシミュレートする他の実施形態が示される。
【0043】
2y mod pを計算する:
【0044】
図2に示したスクリプトは、以下のステップを実施することにより実行される:
【数11】
【0045】
ここで、スタックの一番上が2y mod pを有する。
【0046】
留意すべきことに、現在の最大スタック深さは1000である。128ビットのセキュリティが達成されるべきである場合、yは256ビットになるだろう。従って、現在の上限のスタック深さは問題ではない。
【0047】
図2に示したスクリプトの実行の例が、
図3に詳細に示される。
【0048】
【0049】
図2のスクリプトは、次に、
図3に示されるように実行される。
【0050】
1ラウンドトランザクション
オンチェーン通信の要求がある場合、Aliceにとっては、Bobにトランザクションを送信することにより通信を開始し公開検証鍵を渡すことが直接的である。
【数13】
【0051】
留意すべきことに、アウトプット(Output)1は、単にマイナーのためのトランザクション手数料をカバーするためにある。アウトプット(Output)2は、「<ν> OP_DROP」を用いてアウトプット1に含めることもできる。
【0052】
ラウンドの第2の区画(leg)は、非対話型の場合に説明されるトランザクション、及びロックスクリプトに埋め込まれたチャレンジcである。これは、OP_RETURNにより新しいアウトプットを用いて、又は既存のロックスクリプトに「<c> PO_DROP」を追加することにより、可能である。
【0053】
署名スキームとしての実装
Schnorrスキームは、任意のデータタイプのソース検証のための方法、言い換えるとデジタル署名スキームとしても使用できる。現在、大きな整数のべき乗を含む任意のデジタル署名スキームは、その重大な計算コストのためにBitcoinでは回避される。高コストなべき乗をオフチェーンで予め計算することが可能なので、上述のSchnorr署名スキームは、Bitcoinスクリプト内で実施できる。知識証明とデジタル署名との間の重要な技術的相違点は、デジタル署名では、検証者により発行されるチャレンジが署名で使用されるメッセージ又はデータ及び一時公開鍵のハッシュであることである(上記を参照)。
【0054】
ここで、困難なことは、Bobが、署名の前に一時公開鍵を知らないことである。これを克服する1つの方法は、Bobがトランザクションを生成する前に、署名者が一時公開鍵を送信することである。よりよい方法は、署名者とBobとの間で共有された一時公開鍵のセットを有することであり得る。
【0055】
例えば、Bobは、Aliceに幾らかのBitcoinを送信したいと望む。該Bitcoinは、彼女が、Bobにより信頼される、公開鍵νを有する署名者によるメッセージmに対する有効な署名(x,y)を提供した場合にのみ、彼女が使用できる。彼は、以下のトランザクションを構成できる:
【数14】
ν
c mod pは、Bobによりオフチェーンで計算されるとする。
【0056】
Bobからの支払いを使用するために、Aliceは、先ず、メッセージm上の署名者からの署名(x,y)を取得する。
【0057】
留意すべきことに、x及びmは両方とも次式によりロックスクリプト内で固定される:
【数15】
【0058】
yの値は、認証を提供するための鍵になる。
【0059】
Aliceは、次に、以下のアンロックスクリプトを有するトランザクションを構成できる:
【数16】
【0060】
留意すべきことに、このスクリプトは、Aliceがmのために署名を生成することを要求せず、公開鍵νを有する署名者により生成された署名を提供するだけである。上述のロックスクリプトの最後の4個のオペコード(OP_DUPからOP_CHECKSIGまで)は、Aliceの秘密鍵がトランザクションを使用するためにも要求されることを保証する。
【0061】
署名スキームの実装は、チャレンジcがνc mod pと一緒にロックスクリプトに含まれなければならないので、知識証明システム実装と同じレベルのプライバシ保護を提供しない。c及びνc mod pからνを導出することは、計算上難しくない。
【0062】
署名されているメッセージは、ロックスクリプト内で以下の両方を提供する検証者に知られている必要もある:
【数17】
【0063】
一方で、これは、不確定なデータの検証のための方法を提供するた実装の能力を制限し、メッセージ空間が小さい場合に、検証者は、先ずメッセージを決定し、次に認証するSchnorrスキームのために、フロー制御オペコードを使用できる。
【0064】
例えば、Bobは、Aliceが使用したいと望む場合に、第三者(Carol)の認可を要求するトランザクションを生成する。この場合、署名されているメッセージは、ブール値である。つまり、
【数18】
【0065】
Bobは、どのメッセージがアンロックスクリプトの部分として含まれるかを知らないが、それが公開鍵νを有するCarolにより署名されていることを検証したいと望む。Carolからのメッセージが「Yes」である場合、Aliceは使用でき、「No」である場合、Bobに返される。
【0066】
m
1及びm
2に対応するチャレンジは、それぞれ以下である:
【数19】
【0067】
Bobは、以下のロックスクリプトを生成する:
【数20】
【0068】
ロックスクリプトは、先ず、メッセージがm1又はm2であることをチェックし、Carolにより署名されていることを検証し、最後に、権利のある使用者がトランザクションをアンロックすることをチェックする。
【0069】
例えば、Carolが署名したいと望むメッセージがm1=「Yes」である場合、彼女は、彼女の選択したメッセージに対応する署名(x,y)を生成し、メッセージ/署名をAliceへ送信できる。Aliceは、次に、トランザクションを使用するために、以下のアンロックスクリプトを生成できる:
【数21】
このデータスキームは、Bitcoinスクリプトを使用するセキュアデータソース検証のための基礎を築く。Bobが、(例えば、スマートコントラクト内の)メッセージ/データに依存する追加使用基準を付加したい場合、追加スクリプトは、トランザクション2に含まれることができる。
【0070】
x+yの計算
図4に、2つの大きな整数を一緒に加算するためのスクリプトが詳細に示される。整数(x,y)は2つのバイナリストリングとしてスタックにプッシュされるとする。このスクリプトは、更なる実施形態においてFUNC_STRINGADDと示される。
【0071】
加算の背後にある理論
a
0及びb
0が長さtの2つのバイナリストリングであるとする。以下を定義する:
【数22】
【0072】
処理が、0のストリング、bk=00...0である、十分な回数だけ繰り返されるとき、akは、a0+b0を表すバイナリストリングである。
【0073】
証明(Proof):
留意すべきことに、XORは、全てのキャリー(carries)が考慮されないという意味で、ビット毎の加算をシミュレートする。
【数23】
【0074】
問題は、1+1が0ではないことだけである。しかしながら、∧は、1によりフラグを立てることにより、この問題がどの位置で生じたかを示すので、∧演算は、このシナリオを識別するために使用できる。留意すべきことに、結果の中のこれらの1は、加算の部分であるキャリーを示す。結果を0と連結することにより、私たちは、全てのキャリーをキャプチャする数を効率的に生成する。この処理は、加算の中にキャリーがなくなるまで、繰り返すことができる。
【0075】
帰納法による証明(Proof by induction):
私たちは、次式を証明したい:
【数24】
先ず、私たちは次式を証明したい:
【数25】
【0076】
以下の表1に示されるように、a
00及びb
00の全ての可能な値を通ることにより、私たちは、t=1について、ステートメントが真であると結論付けることができる。
表1
【表1】
【0077】
あるk≧1のt=kについて、ステートメントが真であるとする。私たちは、t=k+1についてステートメントが真であることを証明したい。
【数26】
【0078】
留意すべきことに、t=kについてステートメントが真であるという事実が使用されている。つまり:
【数27】
【0079】
【0080】
2による乗算は、ビットストリングを1つの位置だけ左へシフトし、最後に0を付加することと同じである。
【0081】
推論の最後の式は、再び上述の表1から得られる。
【0082】
ステートメントがt=kについて真であるならば、t=k+1について真であることが証明されたので、帰納法により、次式が結論づけられる:
【数29】
【0083】
留意すべきことに、a
1及びb
1は、2つの数をa
0及びb
0として表すたった2つのバイナリストリングである。一般性を失うことなく、上述の証明を繰り返すことにより、次式が結論づけられる:
【数30】
【0084】
従って、アウトプットのうちの1つが値0を有するビットで完全に構成されるまで、処理が反復されるとき、他のアウトプットは2つの初期インプットの和を表すと結論づけられる。
【0085】
x・yの計算:
図5に、2つの大きな整数を一緒に乗算するためのスクリプトが詳細に示される。
【0086】
整数のうちの1つ、yは、以下のように記述される:
【数31】
【0087】
yは次式のようにスタックにプッシュされるとする:
【数32】
【0088】
ここで、y0はスタックの一番上にある。
【0089】
スクリプトは、次に、他の整数xの値を、最下位ビットとして付加されるy
iのそれぞれのゼロではない値により表される2のべき乗に対応する値0のビット数と共に、保存する。これらの値は、次に、
図4を参照して上述したFUNC_STRINGADD処理により、互いに加算される。
【0090】
y mod pの計算:
図6に、大きな整数をモジュラ計算において計算するスクリプトが詳細に示される。以下の値は、先ず、i=k-1,...,t、kはpのビット長、について予め計算される:
【数33】
【0091】
yは次式のようにスタックにプッシュされるとする:
【数34】
【0092】
ここで、ytはスタックの一番上にある。
【0093】
最後に、バイナリストリングの入力を取り入れ、各ビットをスタックに縦方向に入れるよう、FUNC_SPLITSTRINGTOBITが定義される。これは、OP_SUBSTRを用いて達成できる。
【0094】
<結論>
Aliceがシークレット値を知っている場合にのみ使用可能な、BobからAliceへの支払いを可能にするプロトコル実装が説明された。本開示の利点はその簡単さ、セキュリティ、有用性、及び最もセキュア且つ信頼できるBitcoinの元のプロトコルと互換性があることからもたらされる。
【0095】
楕円曲線表現の代わりに整数表現を使用するという選択は、実装及び理解を遙かに簡単にする。乱数の累乗の公開鍵が公開される必要があるだけであるという事実は、受信者のプライバシ保護の観点でセキュリティを提供する。更に、値は、オンチェーン検証を可能にし計算を節約するために、予め計算できる。
【0096】
素数を法とするべき乗の新規且つ効率的な実装も説明された。これは、知識証明システムが、Bitcoinネットワーク内のマイナーにより受け入れられ得る標準的なトランザクションの中のスクリプトに埋め込まれることを可能にする。副産物として、スクリプト内で任意のデータ認証及び検証を可能にする、署名スキームの実装も提供される。更に、Schnorrの全ての標準的特性及び拡張に署名スキームが適用される。例えば、バッチ検証は、複数の署名に対する検証を、先ずそれらを集約することにより1つのステップで可能にする。別の例は、BitcoinにおけるMULTISIGの代替である、閾署名への拡張である。
【0097】
図7を参照すると、本開示の少なくとも一実施形態を実施するために使用され得るコンピューティング装置2600の説明のための簡略ブロック図が提供される。種々の実施形態で、コンピューティング装置2600は、上述の図示のシステムのうちのいずれかを実装するために使用されてよい。例えば、コンピューティング装置2600は、データサーバ、ウェブサーバ、ポータブルコンピューティング装置、パーソナルコンピュータ、又は任意の電子コンピューティング装置として使用するために構成されてよい。
図7に示すように、コンピューティング装置2600は、主メモリ2608及び永久記憶装置2610を含む記憶サブシステム2606と通信するよう構成され得る1つ以上のレベルのキャッシュメモリ及びメモリ制御部(集合的に2602とラベル付けされる)を備える1つ以上のプロセッサを含んでよい。主メモリ2608は、図示のように、動的ランダムアクセスメモリ(DRAM)2618及び読み出し専用メモリ(ROM)2620を含み得る。記憶サブシステム2606及びキャッシュメモリ2602は、本開示で説明されたようなトランザクション及びブロックに関連付けられた詳細事項のような情報の記憶のために使用されてよい。プロセッサ2602は、本開示で説明されたような任意の実施形態のステップ又は機能を提供するために利用されてよい。
【0098】
プロセッサ2602は、1つ以上のユーザインタフェース入力装置2612、1つ以上のユーザインタフェース出力装置2614、及びネットワークインタフェースサブシステム2616とも通信できる。
【0099】
バスサブシステム2604は、コンピューティング装置2600の種々のコンポーネント及びサブシステムが意図した通りに互いに通信できるようにするメカニズムを提供してよい。バスサブシステム2604は、単一のバスとして概略的に示されるが、バスサブシステムの代替の実施形態は、複数のバスを利用してよい。
【0100】
ネットワークインタフェースサブシステム2616は、他のコンピューティング装置及びネットワークへのインタフェースを提供してよい。ネットワークインタフェースサブシステム2616は、幾つかの実施形態では、コンピューティング装置2600の他のシステムからデータを受信し及びそれへデータを送信するインタフェースとして機能してよい。例えば、ネットワークインタフェースサブシステム2616は、データ技術者が、装置をネットワークに接続することを可能にする。その結果、データ技術者は、データセンタのような遠隔地にいがなら、データを装置へ送信し、データを装置から受信できる。
【0101】
ユーザインタフェース入力装置2612は、キーボード、統合型マウス、トラックボール、タッチパッド、又はグラフィックタブレットのような指示装置、スキャナ、バーコードスキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンのようなオーディオ入力装置、及び他の種類の入力装置のような、1つ以上のユーザ入力装置を含んでよい。通常、用語「入力装置」の使用は、コンピューティング装置2600に情報を入力する全ての可能な種類の装置及びメカニズムを含むことを意図する。
【0102】
1つ以上のユーザインタフェース出力装置2614は、ディスプレイサブシステム、プリンタ、又は音声出力装置のような非視覚ディスプレイ、等を含んでよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、又はプロジェクションのような平面装置、又は他のディスプレイ装置を含んでよい。通常、用語「出力装置」の使用は、コンピューティング装置2600から情報を出力する全ての可能な種類の装置及びメカニズムを含むことを意図する。1つ以上のユーザインタフェース出力装置2614は、例えば、ユーザインタフェースを提示して、ここに記載したプロセス及び変形を実行するアプリケーションとのユーザ相互作用が適切であるとき、そのような相互作用を実現するために使用されてよい。
【0103】
記憶サブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供する基本プログラミング及びデータ構造を記憶するコンピュータ可読記憶媒体を提供してよい。アプリケーション(例えば、プログラム、コードモジュール、命令)は、1つ以上のプロセッサにより実行されると、本開示の1つ以上の実施形態の機能を提供し、記憶サブシステム2606に格納されてよい。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ2602により実行されてよい。記憶サブシステム2606は、更に、本開示に従い使用されるデータを格納するレポジトリを提供する。例えば、主メモリ2608及びキャッシュメモリ2602は、プログラム及びデータのための揮発性記憶を提供できる。永久記憶装置2610は、プログラム及びデータの永久(不揮発性)記憶を提供でき、磁気ハードディスクドライブ、取り外し可能媒体に関連付けられた1つ以上のフロッピディスクドライブ、取り外し可能媒体に関連付けられた1つ以上の光ドライブ(例えば、CD-ROM、又はDVD、又はBlue-Ray)ドライブ、及び他の同様の記憶媒体を含んでよい。このようなプログラム及びデータは、本開示に記載した1つ以上の実施形態のステップを実行するためのプログラム、及び本開示に記載したトランザクション及びブロックに関連付けられたデータを含み得る。
【0104】
コンピューティング装置2600は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は後述する任意の他の装置を含む種々のタイプのものであってよい。さらに、コンピューティング装置2600は、1つ以上のポート(例えば、USB、ヘッドフォンジャック、光コネクタ、等)を通じてコンピューティング装置2600に接続可能な別の装置を含み得る。コンピューティング装置2600に接続され得る装置は、光ファイバコネクタを受けるよう構成される複数のポートを含んでよい。従って、この装置は、光信号を、処理のために装置を接続するポートを通じてコンピューティング装置2600に送信される電気信号に変換するよう構成されてよい。コンピュータ及びネットワークの絶えず変化する特性により、
図7に示したコンピューティング装置2600の説明は、装置の好適な実施形態を説明する目的の特定の例としてのみ意図される。
図7に示したシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
【0105】
<列挙される例示的な実施形態>
本開示の実施形態の例は、以下の項の観点で記載できる。
【0106】
[項1]ブロックチェーントランザクションにおける知識証明を可能にする方法であって、前記方法は、
検証者から証明者へ、(i)一時鍵と第2データと暗号システムの公開-秘密鍵ペアの秘密鍵との結合に基づく、第1データであって、前記公開鍵は第1の乗数で累乗された整数ジェネレータに基づき、前記第1の乗数は前記秘密鍵に基づき、前記秘密鍵の知識は前記第1データから前記一時鍵を決定するために必要とされる、第1データ、及び(ii)第2の乗数で累乗された前記整数ジェネレータに基づく第3データであって、前記第2の乗数は前記一時鍵に基づく、第3データ、を含むデータにより償還可能なブロックチェーントランザクションを送信するステップを含む方法。
【0107】
公開鍵が第1の乗数で累乗された整数ジェネレータに基づき、第1の乗数が秘密鍵に基づく、暗号システムに基づくデータにより償還可能なブロックチェーントランザクションを提供することにより、これは、計算上簡単であり効率的である、従って、楕円曲線暗号法のような他の暗号システムほど計算上高価ではないという利点を提供すうr。トランザクションを償還するために必要なデータに、一時鍵と、第2データ及び公開-秘密鍵ペアの秘密鍵であって、該秘密鍵の知識は第1データから一時鍵を決定するために必要である秘密鍵と、第2の乗数で累乗された整数ジェネレータに基づく第3データであって、第2の乗数は一時鍵に基づく、第3データと、を含めることにより、これは、秘密鍵を開示することなく、第1データが秘密鍵を含むことの検証が行われることを可能にするという利点を提供する。第2データを決定することにより、これは、第1及び第3データを構成するパーティが、秘密鍵を所有していなければならないことを示す。
【0108】
[項2]前記整数ジェネレータは2である、項1に記載の方法。
【0109】
これは、より計算的効率がよいという利点を提供する。
【0110】
[項3]前記第2データは前記検証者により選択される、項1又は2に記載の方法。
【0111】
これは、前記第1データを構成するパーティが前記秘密鍵を所有していることを保証するという利点を提供する。
【0112】
[項4]前記検証者から前記証明者へ、前記ブロックチェーントランザクションと別個に、前記第2データを送信するステップ、を更に含む項1~3のいずれか一項に記載の方法。
【0113】
これは、プライバシ保護の向上という利点を提供する。
【0114】
[項5]前記第1データは次式の形式であり、
【数35】
yは前記第1データであり、rは前記一時鍵であり、sは前記秘密鍵であり、cは前記第2データであり、qは素数である、項1~4のいずれか一項に記載の方法。
【0115】
[項6]前記第2データはメッセージに基づく、項1~5のいずれか一項に記載の方法。
【0116】
[項7]前記メッセージはスマートコントラクトを実施するためのデータを含む、項6に記載の方法。
【0117】
[項8]前記第2データは次式の形式であり、
【数36】
cは前記第2データであり、xは前記第3データであり、mは前記メッセージであり、qは素数であり、Hはハッシュ関数である、項6又は7に記載の方法。
【0118】
[項9]前記検証者において前記メッセージを受信するステップ、を更に含む項6~8のいずれか一項に記載の方法。
【0119】
[項10]前記検証者と前記証明者との間で、少なくとも1つの一時鍵を共有するステップ、を更に含む項1~9のいずれか一項に記載の方法。
【0120】
[項11]前記検証者において前記公開鍵を受信するステップ、を更に含む項1~10のいずれか一項に記載の方法。
【0121】
[項12]前記検証者において前記第1データ及び前記第2データを受信するステップ、を更に含む項1~11のいずれか一項に記載の方法。
【0122】
[項13]2を整数の乗数で累乗した値を決定する、コンピュータにより実施される方法であって、前記方法は、
2のべき級数の項の係数を決定するステップであって、前記級数の各項は、それぞれの前記係数により乗算されたそれぞれの2の累乗を含み、それぞれの前記項のそれぞれの前記係数は0又は1であり、前記項の和は前記整数に等しい、ステップと、
前記係数が1であるそれぞれの値を有すると決定するステップと、
複数の値の積を決定するステップであって、それぞれの前記値は、対応する前記係数が1の値を有する前記級数の各項に対応する、2をそれぞれの2の乗数で累乗したものである、ステップと、
を含む方法。
【0123】
これは、バイナリビット列により係数を表すことを可能にすることにより、計算的に効率がよいという利点を提供する。
【0124】
[項14]前記値は予め計算され格納される、項13に記載の方法。
【0125】
[項15]前記方法は、ブロックチェーントランザクションにより実施される、項13又は14に記載の方法。
【0126】
[項16]前記方法は、2y mod pの値を決定し、yは前記整数である、項13~15のいずれか一項に記載の方法。
【0127】
[項17]前記方法は、項1~12のいずれか一項に記載の方法において、ブロックチェーントランザクションを提供するために使用される、項13~16のいずれか一項に記載の方法。
【0128】
[項18]ブロックチェーントランザクションの中の2つの整数を加算する、コンピュータにより実施される方法であって、前記方法は、
バイナリビット列のペアとして前記整数を表すステップと、
入力としての前記バイナリビット列のペアに対して、(i)前記入力の対応するそれぞれのビットのペアをXOR結合して、第1出力バイナリビット列を生成すること、及び(ii)前記入力の対応するそれぞれのビットのペアをAND結合して、更なるビット列を生成し、最下位ビットとして値0のビットを前記更なるビット列に連結して、第2出力バイナリビット列を生成すること、を含む結合ステップを実行するステップと、
前記第2出力バイナリビット列が値1のビットを含む場合、前の前記結合ステップの前記出力を入力として用いて、値0のビットのみを含む前記第2出力バイナリビット列が生成されるまで、前記結合ステップを繰り返すステップと、
を含む方法。
【0129】
これは、計算的に効率的な大きな整数の加算をブロックチェーントランザクションにおいて実行可能にするという利点を提供する。
【0130】
[項19]ブロックチェーントランザクションの中の2つの整数の積を決定する方法であって、前記方法は、
第1及び第2整数をそれぞれ第1及び第2バイナリビット列として表すステップと、
1の値を有する前記第1整数の各ビットについて、前記第2整数を表すビット列を含むそれぞれの格納されたビット列と、最下位ビットとしてそれに追加される値0のビットの数と、を提供するステップであって、該数は、1の値を有する前記第1整数の対応するビットにより表される2の累乗に等しい、ステップと、
項18に記載の少なくとも1つの方法により前記格納されたビットを一緒に加算するステップと、
を含む方法。
【0131】
[項20]モジュラ計算における整数を決定するステップであって、前記方法は、
2(mod p)のべき級数の項の係数を決定するステップであって、前記級数の各項は、それぞれの前記係数により乗算されたそれぞれの2(mod p)の累乗であり、それぞれの前記項のそれぞれの前記係数は0又は1であり、前記項の和は前記整数(mod p)に等しい、ステップと、
複数の値を格納するステップであって、それぞれの前記値は2を、対応する前記係数が1の値を有する前記級数の各項に対応する、それぞれの2(mod p)で累乗したものである、ステップと、
項18に記載の少なくとも1つの方法により、前記複数の値を一緒に加算するステップと、
を含む方法。
【0132】
[項21]コンピュータにより実装されるシステムであって、
プロセッサと、
前記プロセッサによる実行の結果として、前記システムに項1~20のいずれかに記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含むメモリと、
を含むシステム。
【0133】
[項22]実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、項1~20のいずれかに記載の方法の実施形態を実行させる、非一時的コンピュータ可読記憶媒体。
【0134】
上述の実施形態は、本開示を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本開示の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。請求項において、括弧内の任意の参照符号は、請求項を限定すると考えられるべきではない。用語「有する」及び「含む」(comprising、comprises)等は、任意の請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、そのような要素の複数の参照を排除しない。逆も同様である。本開示は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、1つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
【0135】
参考文献
[1] C.P. Schnorr (1990). ‘Efficient Identification and Signatures for Cards’ in G. Brassard ed. Adv. In Cryptology-Crypt 239-252. Springer verlag (1990) lecture notes in Computer Science nr 435.
【国際調査報告】