コミットメントスキームは、選択した値(または選択したステートメント)を他の人には隠したままコミットし、後でコミットした値を明らかにできる暗号プリミティブです。 [1]コミットメントスキームは、当事者がコミットした後で値やステートメントを変更できないように設計されています。つまり、コミットメントスキームは拘束力があります。コミットメントスキームは、安全なコイン投げ、ゼロ知識証明、安全な計算など、多くの暗号化プロトコルで重要なアプリケーションを持っています。
コミットメント スキームを視覚的に表すには、送信者が鍵のかかった箱にメッセージを入れ、その箱を受信者に渡すと考えると分かりやすいでしょう。箱の中のメッセージは受信者には隠されており、受信者は自分で鍵を開けることはできません。受信者が箱を持っているため、中のメッセージは変更できません。送信者が後で鍵を渡した場合にだけ、メッセージが公開されます。
コミットメント スキームにおけるやり取りは、次の 2 つのフェーズで行われます。
- コミットフェーズでは値が選択されコミットされます
- 送信者が値を明らかにし、受信者がその真正性を検証する公開フェーズ
上記の比喩では、コミット フェーズは送信者がメッセージを箱に入れてロックすることです。公開フェーズは送信者が受信者にキーを渡し、受信者がそのキーを使用して箱を開けて内容を確認することです。ロックされた箱はコミットメントであり、キーは証明です。
単純なプロトコルでは、コミット フェーズは送信者から受信者への単一のメッセージで構成されます。このメッセージはコミットメントと呼ばれます。選択された特定の値がその時点で受信者によってメッセージから抽出できないことが重要です (これは隠蔽特性と呼ばれます)。単純な公開フェーズは、送信者から受信者への単一のメッセージ (オープニング) と、それに続く受信者によるチェックで構成されます。コミット フェーズで選択された値は、送信者が計算でき、公開フェーズで検証できる唯一の値である必要があります (これはバインディング特性と呼ばれます)。
コミットメント方式の概念は、おそらく1988 年にGilles Brassard、David Chaum、Claude Crépeauによって初めて形式化されました[2] 。NPのさまざまなゼロ知識プロトコルの一部として、さまざまな種類のコミットメント方式に基づいています[3] [4] 。しかし、この概念はそれ以前にも正式に扱われることなく使用されていました。[5] [6]コミットメントの概念は、Manuel Blum、[7] Shimon Even、[8] Adi Shamirらの著作で最初に登場しました。[9]この用語は Blum によって考案されたようですが[6]、コミットメント方式はビットコミットメント方式とも呼ばれ、コミットされた値がビットである特殊なケースのために予約されていることもあります。それ以前は、一方向ハッシュ関数によるコミットメントが、たとえば、元の 1 回限りの 1 ビット署名方式 であるLamport 署名の一部として考えられていました。
アプリケーション
コイン投げ
アリスとボブがコイン投げで何らかの紛争を解決したいとします。彼らが物理的に同じ場所にいる場合、典型的な手順は次のようになります。
- アリスはコイン投げを「コール」し、
- ボブはコインを投げ、
- アリスの予測が正しければアリスが勝ち、そうでなければボブが勝ちます。
アリスとボブが同じ場所にいない場合、問題が発生します。アリスがコイン投げを「コール」すると、ボブはコイン投げの「結果」が自分にとって最も望ましいものになるように規定できます。同様に、アリスがボブに「コール」をアナウンスしない場合、ボブがコインを投げて結果を発表した後、アリスは自分にとって最も望ましい結果をコールしたと報告できます。アリスとボブは、両者が結果を信頼できるようにするための手順でコミットメントを使用できます。
- アリスはコイントスを「コール」しますが、ボブにはコールの約束だけを伝えます。
- ボブはコインを投げて結果を報告します。
- アリスは自分が何を約束したのかを明かす。
- ボブはアリスの電話が約束と一致していることを確認し、
- アリスの発見がボブが報告したコインの結果と一致した場合、アリスが勝ちます。
ボブが結果を有利に傾けるには、アリスのコミットメントに隠された呼び出しを理解できなければなりません。コミットメント スキームが適切であれば、ボブは結果を歪めることはできません。同様に、アリスはコミットする値を変更できない場合、結果に影響を与えることはできません。
この問題の現実世界での応用は、人々(多くの場合メディア関係者)が「封印された封筒」で決定を約束したり、回答をしたりして、後でそれを開封する場合です。たとえばゲーム番組での「候補者が本当にそう答えたかどうか見てみましょう」は、このシステムのモデルとして役立ちます。
ゼロ知識証明
1 つの具体的な動機付けとなる例は、ゼロ知識証明におけるコミットメント スキームの使用です。コミットメントは、ゼロ知識証明で主に 2 つの目的で使用されます。1 つ目は、証明者が「カット アンド チョイス」証明に参加できるようにすることです。この証明では、検証者に学習する内容の選択肢が提示され、証明者は検証者の選択に対応する情報のみを明らかにします。コミットメント スキームを使用すると、証明者はすべての情報を事前に指定し、証明の後半で明らかにする必要がある情報のみを明らかにすることができます。[10] 2 つ目は、コミットメントは、多くの場合、コミットメントで事前に選択を指定する検証者によってもゼロ知識証明で使用されます。これにより、証明者に追加情報を明らかにすることなく、ゼロ知識証明を並行して作成できます。[11]
署名スキーム
ランポート署名方式は、 2 セットの秘密データ パケットを維持し、データ パケットの検証可能なハッシュを公開し、署名するデータに特に準拠した方法で部分的な秘密データ パケットを選択的に公開するデジタル署名システムです。このように、秘密値に対する事前の公開コミットメントは、システムの機能の重要な部分になります。
Lamport 署名システムは複数回使用できないため、多数の Lamport キー セットを単一の公開値にまとめ、個人に結び付けて他の人が検証できるようにするシステムが開発されました。このシステムはハッシュ ツリーを使用して、公開されている多数の Lamport キー コミットメント セットを単一のハッシュ値に圧縮し、後で検証されるデータの将来の作成者に関連付けることができます。
検証可能な秘密共有
コミットメントのもう 1 つの重要な応用は、検証可能な秘密共有です。これは、安全なマルチパーティ計算の重要な構成要素です。秘密共有スキームでは、複数のパーティのそれぞれが、誰にも知られないようにする値の「シェア」を受け取ります。十分な数のパーティが集まると、そのシェアを使用して秘密を再構築できますが、十分な規模ではない悪意のある集団でさえ何も知りません。秘密共有は、安全な計算のための多くのプロトコルの根幹にあります。共有された入力の関数を安全に計算するために、代わりに秘密のシェアが操作されます。ただし、悪意のあるパーティによってシェアが生成されると、それらのシェアが正しいかどうかをチェックできることが重要になる場合があります。検証可能な秘密共有スキームでは、秘密の配布に個々のシェアへのコミットメントが伴います。コミットメントは、不正な集団に役立つ情報を何も明らかにしませんが、シェアにより、各パーティが自分のシェアが正しいかどうかをチェックできます。[12]
セキュリティの定義
コミットメント スキームの正式な定義は、表記法とフレーバーが大きく異なります。最初のフレーバーは、コミットメント スキームが、隠蔽または結合プロパティに関して完全なセキュリティまたは計算セキュリティを提供するかどうかです。もう 1 つのフレーバーは、コミットメントが対話型であるかどうか、つまり、コミット フェーズと公開フェーズの両方が暗号化プロトコルによって実行されていると見なせるかどうか、またはそれらが非対話型で、 Commit と CheckReveal の 2 つのアルゴリズムで構成されるかどうかです。後者の場合、CheckReveal はCommitの非ランダム化バージョンと見なすことができ、 Commitによって使用されるランダム性が開始情報となります。
値xへのコミットメントCがC:=Commit(x,open)として計算され、 openがコミットメントの計算に使用されるランダム性である場合、CheckReveal (C,x,open) は単純に方程式C=Commit (x,open)を検証することになります。
この表記法と数学関数および確率論に関する知識を使用して、コミットメントの結合特性と隠蔽特性のさまざまなバージョンを形式化します。これらの特性の最も重要な 2 つの組み合わせは、完全に結合し計算的に隠蔽するコミットメント スキームと、計算的に結合し完全に隠蔽するコミットメント スキームです。コミットメント スキームは、完全に結合し完全に隠蔽することはできないことに注意してください。計算的に無制限の攻撃者は、C を出力するペアが見つかるまで、 xとopenのすべての値に対してCommit(x,open) を生成するだけでよく、完全に結合したスキームでは、これによってx が一意に識別されます。
計算バインディング
open をサイズ のセットから選択するとします。つまり、これはkビットの文字列として表すことができます。また、 は対応するコミットメント スキームです。kのサイズによってコミットメント スキームのセキュリティが決まるため、これはセキュリティ パラメータと呼ばれます。
次に、増加する長さkのおよび を出力するすべての非一様 確率多項式時間アルゴリズムについて、および の確率はkにおいて無視できる関数です。
これは漸近解析の形式です。具体的なセキュリティを使用して同じ要件を述べることもできます。コミットメント スキームCommit は、時間tで実行され、および の確率が最大でを出力するすべてのアルゴリズムに対して安全です。
完璧な統計的計算による隠蔽
をセキュリティパラメータkの開始値にわたる一様分布とします。すべての確率集団に対して と が等しい、統計的に近い、または計算上区別がつかない場合、コミットメント方式はそれぞれ完全、統計的、または計算上の隠蔽です。
普遍的に構成可能なコミットメントスキームの不可能性
ユニバーサルコンポーザビリティ(UC)フレームワークではコミットメントスキームを実現することは不可能である 。その理由は、CanettiとFischlin [13]が示し、以下で説明するように、UCコミットメントは抽出可能でなければならないためである。
ここでFで示される理想的なコミットメント機能は、おおよそ次のように動作します。コミッターC は値m をFに送信し、 F はそれを保存して「受領」を受信者Rに送信します。その後、C は「オープン」を Fに送信し、 F はm をRに送信します。
ここで、この機能を実現するプロトコルπ があると仮定します。コミッターCが破損していると仮定します。UC フレームワークでは、これは基本的にCが環境によって制御されることを意味します。環境は、プロトコルの実行を理想的なプロセスと区別しようとします。メッセージm を選択し、mにコミットしたかのように、πで規定されたとおりに動作するようにCに指示する環境を考えてみましょう。ここで、 F を実現するために、受信者はコミットメントを受け取った後、メッセージ「receipt」を出力する必要があることに注意してください。環境はこのメッセージを確認すると、コミットメントを開くように C に指示します。
このシナリオが、機能がシミュレータSと対話する理想的なケースと区別がつかない場合にのみ、プロトコルは安全です。ここでは、S はCを制御します。特に、R が「受領書」を出力するたびに、F も同様に行う必要があります。これを行う唯一の方法は、S がCにFに値を送信するように指示することです。ただし、この時点では、m はSに認識されていないことに注意してください。したがって、プロトコル実行中にコミットメントが開かれると、 R が受領書を出力する 前にS が環境から受信したメッセージからm を抽出できない限り、 F がmに対して開かれる可能性は低くなります。
しかし、この意味で抽出可能なプロトコルは、統計的に隠蔽することはできません。そのようなシミュレータS が存在すると仮定します。ここで、 C を破壊する代わりにR を破壊する環境を考えてみましょう。さらに、 Sのコピーを実行します。Cから受信したメッセージはSに送られ、Sからの応答はCに転送されます。
環境は最初にC にメッセージmをコミットするように指示します。対話のどこかの時点で、S は値m′をコミットします。このメッセージはRに渡され、 R はm′ を出力します。仮定により、高い確率でm' = mになることに注意してください。ここで、理想的なプロセスでは、シミュレーターはmを導き出す必要があります。しかし、この時点ではコミットメントがまだ開かれていないため、これは不可能であり、理想的なプロセスでRが受信できる唯一のメッセージは「受信」メッセージです。したがって、矛盾が生じます。
工事
コミットメントスキームは、完全に拘束力を持つ(アリスが無制限の計算リソースを持っていても、一度行ったコミットメントを変更することは不可能である)、または完全に隠蔽する(ボブが無制限の計算リソースを持っていても、アリスに明らかにされない限り、ボブがコミットメントを見つけることはできない)、またはインスタンス依存のコミットメントスキームとして定式化される(別の問題の解決方法に応じて、隠蔽または拘束のいずれかになる)。[14] [15]コミットメントスキームは、完全に隠蔽し、同時に完全に拘束力を持つことはできない。
ランダムオラクルモデルにおけるビットコミットメント
ビットコミットメント方式は、ランダムオラクルモデルで簡単に構築できます。3 kビットの出力を持つハッシュ関数H が与えられた場合、kビットのメッセージm をコミットするために、アリスはランダムなkビットの文字列R を生成し、ボブに H( R || m )を送信します。m′ ≠ mであるR′、m′ が存在し、 H( R′ || m′ ) = H( R || m )となる確率は ≈ 2 − kですが、メッセージmの推測をテストするには、ボブはランダムオラクルに 2 k回(推測が間違っている場合) または 2 k -1回 (平均して、正しい推測の場合) のクエリを実行する必要があります。 [16]ハッシュ関数に基づく以前の方式は、本質的には、これらのハッシュ関数をランダムオラクルとして理想化することに基づく方式であると考えられることに注意してください。
任意の一方向順列からのビットコミットメント
任意の単方向関数からビットコミットメント スキームを作成できます。このスキームは、すべての単方向関数が (ゴールドライヒ-レビンの定理を介して) 計算的にハードコアな述語を持つように変更できる(単方向プロパティを保持したまま) という事実に依存しています。
fを単方向の単射関数とし、hをハードコア述語とする。ビットbにコミットするために、アリスはランダムな入力xを選び、トリプルを送信する。
をボブに送信します。ここで、 はXOR、つまり2 を法とするビット加算を表します。デコミットするには、アリスはx をボブに送信するだけです。ボブはf ( x )を計算し、コミットされた値と比較して検証します。この方式は、ボブがb を復元するにはh ( x )を復元する必要があるため、隠蔽的です。hは計算的にハードコアな述語であるため、確率が 1/2 を超えるf ( x )から h ( x ) を復元することは、 f を反転するのと同じくらい困難です。完全結合は、 fが単射であり、したがってf ( x ) には正確に 1 つの原像があるという事実から生じます。
疑似乱数生成器からのビットコミットメント
任意の一方向関数から一方向順列を構築する方法がわからないため、このセクションでは、ビットコミットメント プロトコルを構築するために必要な暗号化仮定の強度が低下することに注意してください。
1991年にモニ・ナオールは暗号的に安全な疑似乱数生成器からビットコミットメント方式を作成する方法を示した。[17]構成は以下のとおり。Gがnビットから3nビットを取る疑似乱数生成器である場合、アリスがビットbにコミットしたい場合:
- ボブはランダムな3nビットのベクトルRを選択し、Rをアリスに送信します。
- アリスはランダムなnビットのベクトルYを選択し、3nビットのベクトルG ( Y )を計算します。
- b = 1の場合、アリスはG ( Y ) をボブに送信し、それ以外の場合はG ( Y ) とRのビットごとの排他的論理和をボブに送信します。
コミットを解除するために、アリスはボブにY を送信します。ボブは最初にG ( Y ) を受信したのか、それともG ( Y ) R を受信したのかを確認できます。
この方式は統計的に拘束力があり、つまり、アリスが計算上無制限であっても、 2 − n を超える確率で不正行為を行うことはできません。アリスが不正行為を行うには、 G ( Y' ) = G ( Y ) RとなるY' を見つける必要があります。アリスがそのような値を見つけることができれば、真実とY を送ることでデコミットするか、反対の答えとY' を送ることができます。しかし、G ( Y ) とG ( Y' ) はそれぞれ 2 n通りの値 (つまり 2 2 n )しか生成できませんが、 Rは 2 3 n通りの値から選ばれます。アリスはR を選ばないため、不正行為に必要な式を満たすY' が存在する確率は2 2 n /2 3 n = 2 − nです。
隠蔽特性は標準的な還元から得られ、ボブがアリスが 0 と 1 のどちらをコミットしたかを判断できる場合、ボブは疑似乱数ジェネレータGの出力を真の乱数と区別することもできますが、これはGの暗号セキュリティと矛盾します。
離散対数問題に基づく完全結合スキームとそれ以降
アリスは乗法生成子gを持つ素数位数pの環を選択します。
アリスは、コミットする秘密の値x を0からp − 1までランダムに選択し、 c = g x を計算してc を公開します。離散対数問題では、 cからx を計算することは計算上不可能であるため、この仮定の下ではボブはx を計算できません。一方、アリスは、g x ′ = cとなるようなx ′ <> x を計算できないため、この方式は拘束力があります。
この方式は、離散対数問題を解くことができればコミットメントを見つけることができるため、完全に隠蔽されているわけではありません。実際、この方式は、IND-CPA ゲームと同様に、攻撃者が選択した 2 つのメッセージのうちどちらにコミットされているかを推測できない標準的な隠蔽ゲームに関して、まったく隠蔽されていません。この結果の 1 つは、 xの可能な値の空間が小さい場合、攻撃者はそれらをすべて試すだけで、コミットメントが隠蔽されないことです。
完全に拘束力のあるコミットメント方式のより良い例は、コミットメントが意味的に安全な完全な完全性を持つ公開鍵暗号化方式によるxの暗号化であり、デコミットメントがx の暗号化に使用されるランダムビットの文字列である場合です。情報理論的に隠蔽されたコミットメント方式の例は、離散対数仮定の下で計算的に拘束力のある ペダーセンコミットメント方式です。 [19]上記 の方式に加えて、素数群の別のジェネレータhと乱数rを使用します。コミットメントは に設定されます。[20]
これらの構成は、基になる群の代数的性質と密接に関連し、それに基づいており、その概念はもともと代数と非常に関連しているように思われた。しかし、一般的な複雑性仮定(具体的には、元々は任意の一方向の順列に基づく)からのコミットメントに対するインタラクティブハッシュの概念を介して、一般的な非構造化仮定に基づく統計的に拘束力のあるコミットメントスキームを構築することが可能であることが示された。[21]
RSAに基づく完全な隠蔽コミットメント方式
アリスはとなるような素数 を選択する。ここでとは大きな秘密の素数である。さらに、およびとなるような素数を選択する。次にアリスは、群の最大位数の元として公開数を計算する。[22]最後に、アリスは最初にから乱数を生成し、次に を計算することで秘密を守る。
上記のコミットメントの安全性はRSA問題の難しさに依存しており、完全な隠蔽と計算結合を備えています。[23]
コミットメントの加法準同型性と乗法準同型性
Pedersen コミットメント スキームは、2 つのコミットメント間の加算を可能にする興味深い準同型特性を導入します。より具体的には、2 つのメッセージとランダム性、およびがそれぞれ与えられた場合、次のような新しいコミットメントを生成することができます。正式には、
上記の Pedersen コミットメントを新しいメッセージに開くには、ランダム性とを追加する必要があります。
同様に、上記の RSA ベースのコミットメントは、乗算演算に関して準同型特性を持ちます。ランダム性 と を持つ2つのメッセージ が与えられている場合、次を計算できます。正式には、次です 。
上記のコミットメントを新しいメッセージに公開するには、ランダム性とを追加する必要があります。この新しく生成されたコミットメントは、への新しいコミットメントと同様に配布されます。
一部公開
一部のコミットメント スキームでは、コミットされた値の一部のみの証明が許可されます。これらのスキームでは、秘密の値は、個別に分離可能な多数の値のベクトルです。
コミットメントはコミットフェーズでから計算されます。通常、明らかにするフェーズでは、証明者は のすべてといくつかの追加の証明データ(単純なビットコミットメントなど)を明らかにします。代わりに、証明者はベクトルから任意の単一の値を明らかにし、それがコミットメントを作成した元のベクトルの の真正な要素であるという効率的な証明を作成できます。証明では以外の値を明らかにする必要はなく、 のいずれかに真の値とは異なる値を明らかにする有効な証明を作成することは不可能です。 [24]
ベクトルハッシュ
ベクトルハッシュは、ビットコミットメントに基づく単純なベクトルコミットメント部分公開方式である。値はランダムに選択される。個々のコミットメントはハッシュによって作成される。全体のコミットメントは次のように計算される。
ベクトルの1つの要素を証明するために、証明者は値を明らかにする。
検証者は、とからを計算し、すべての値のハッシュがコミットメント であることを検証できます。残念ながら、証明はサイズと検証時間の点で問題があります。あるいは、 がすべての値のセットである場合、コミットメントはサイズであり、証明はサイズと検証時間の点で問題があります。いずれにしても、コミットメントまたは証明は に比例しますが、これは最適ではありません。
マークルツリー
実用的な部分公開方式の一般的な例は、 の要素のバイナリハッシュツリーが作成されるMerkle ツリーです。この方式は、サイズ のコミットメントと、サイズおよび検証時間 の証明を作成します。ツリーのルートハッシュはコミットメント です。公開されたが元のツリーの一部であることを証明するには、ツリーの各レベルから 1 つずつハッシュ値のみを証明として公開する必要があります。検証者は、要求されたリーフノードからルートまでのパスをたどり、各レベルの兄弟ノードをハッシュし、最終的に に等しいルートノード値に到達できます。[25]
KZGの取り組み
Kate-Zaverucha-Goldberg コミットメントは、ペアリングベースの暗号化を使用して、コミットメント サイズ、証明サイズ、証明検証時間で部分公開スキームを構築します。言い換えると、の値の数が増えても、コミットメントと証明は大きくならず、証明の検証にそれ以上の労力はかかりません。
KZG コミットメントでは、ペアリングと信頼されたトラップドア要素を作成するための事前に決定されたパラメータ セットが必要です。たとえば、Tate ペアリングを使用できます。 が加法群であり、 がペアリング の乗法群であると仮定します。言い換えると、ペアリングはマップ です。がトラップドア要素 ( がおよびの素数位数である場合) とし、 および がそれぞれ および の生成元であるとします。パラメータ設定の一部として、 およびはの任意の数の正の整数値に対して既知で共有される値であると仮定しますが、トラップドア値自体は破棄され、誰にも知られません。
専念
KZGコミットメントは、コミットされる値のベクトルを多項式として再定式化する。まず、ベクトルのすべての値に対して多項式を計算する。ラグランジュ補間により、その多項式を計算できる。
この定式化では、多項式はベクトル をエンコードします。ここでは の係数で、となります。コミットメントは次のように計算されます。
これは、あらかじめ決められた値と多項式係数とのドット積として単純に計算されます。は結合法則と可換法則を持つ加法群なので、のすべての加算と乗算は評価から分散できるため、 は単に に等しくなります。 トラップドア値は不明なので、コミットメントは本質的には誰にも知られていない数値で評価された多項式であり、結果は の不透明な要素に難読化されます。
明らかにする
KZG 証明では、明らかにされたデータが が計算されたときの の真正な値であることを証明する必要があります。 を証明しなければならない明らかにされた値とします。 のベクトルは多項式に再定式化されたので、多項式が で評価されたときに値 をとることを証明する必要があります。簡単に言えば、 を証明すればよいのです。から を引くと で根が得られることを証明することでこれを行います。多項式を次のように 定義します。
この多項式はそれ自体が の証明です。なぜなら が存在する場合、 はで割り切れる、つまり に根を持つため、(つまり、)となるからです。KZG 証明は が存在し、この特性を持つことを実証します。
証明者は上記の多項式除算を計算し、KZG証明値を計算する。
これは、上記のように と等しくなります。言い換えると、証明値はの生成器に隠されたトラップドア値 で再度評価された多項式です。
この計算は、上記の多項式が割り切れる場合にのみ可能です。その場合、商は有理関数ではなく多項式 だからです。トラップドアの構造上、トラップドア値で有理関数を評価することはできず、事前に計算された の既知の定数の線形結合を使用して多項式を評価することしかできません。これが、 の誤った値に対する証明を作成することが不可能な理由です。
確認する
証明を検証するために、ペアリングの双線型写像を使用して、証明値が、 が で均等に分割されるという望ましい特性を示す実多項式を要約していることを示します。検証計算では、等式をチェックします。
ここで、は上記の双線形写像関数です。は事前に計算された定数で、に基づいて計算されます。
ペアリング群 の計算を書き直し、とを代入し、 をペアリング群に持ち上げるヘルパー関数とすることで、証明の検証がより明確になります。
双線形写像が有効に構築されていると仮定すると、これは、検証者が または が何であるかを知らなくても であることが証明されます。の場合、多項式は落とし戸値 で同じ出力に評価されるため、検証者はこれを確信できます。 これは、多項式が同一であることを示しています。なぜなら、パラメータが有効に構築されている場合、落とし戸値は誰にも知られておらず、落とし戸で特定の値を持つように多項式を設計することは不可能であるからです (シュワルツ–ジッペルの補題による)。が真であることが検証された場合、 が存在することが検証されるため、 は で多項式割り切れるはずであり、因数定理により となります。これは、コミットされたベクトルの 番目の値が に等しかったに違いないことを証明します。これは、コミットされた多項式を で評価した出力だからです。
双線形写像ペアリングの有用性は、によるの乗算を安全に実行できるようにすることです。これらの値は、実際には に含まれ、ここで除算は計算上困難であると想定されます。たとえば、は、楕円曲線暗号で一般的であるように、有限体上の楕円曲線である可能性があります。次に、除算仮定は楕円曲線離散対数問題[ broken anchor ]と呼ばれ、この仮定は、トラップドア値が計算されるのを防ぐものでもあり、KZG コミットメントの基礎にもなっています。その場合、 かどうかを確認します。これはペアリングなしでは実行できません。 および の曲線上の値では、 を計算できないためです。これは、楕円曲線暗号の基本的仮定である計算 Diffie-Hellman 仮定に違反します。代わりに、この問題を回避するためにペアリングを使用します。を取得するために を乗算することは変わりませんが、乗算のもう一方の側はペアリング グループ で行われるため、 となります。を計算します。これは、マップの双線型性により、 と等しくなります。この出力グループでは、離散対数の問題がまだ残っているため、値と がわかっていても、指数 を抽出できず、先ほどの離散対数との矛盾を防ぐことができません。ただし、この値は と比較でき、の実際の値がわからなくても、 であると結論付けることができれば、 は言うまでもありません。
さらに、KZGコミットメントは、 (1つの値だけではなく)任意の の値を証明するように拡張することができ、証明サイズは のままですが、証明検証時間は に比例します。証明は同じですが、定数 を引く代わりに、証明したいすべての場所で多重根を生成する多項式を引き、 で割る代わりに、同じ場所でで割ります。 [26]
量子ビットコミットメント
量子暗号において、無条件に安全なビットコミットメントプロトコル、つまり計算リソースに制限がない場合でも(少なくとも漸近的に)拘束力と秘匿性を持つプロトコルが量子レベルに存在するかどうかは興味深い問題です。無条件に安全な鍵配布プロトコルのように、量子力学の本質的な特性を利用する方法があるかもしれないと期待できます。
しかし、これは不可能であり、ドミニク・メイヤーズが1996年に示した(元の証明については[27]を参照)。そのようなプロトコルはどれも、アリスがコミットしたいビットに応じて、システムがコミットメントフェーズ後に2つの純粋な状態のいずれかにあるプロトコルに還元できる。プロトコルが無条件に隠蔽されている場合、アリスはシュミット分解の特性を使用してこれらの状態を互いにユニタリ変換することができ、結合特性を効果的に無効にすることができる。
証明の微妙な仮定の1つは、コミットフェーズはある時点で終了しなければならないということである。これにより、ビットが公開されるかプロトコルがキャンセルされるまで継続的な情報フローを必要とするプロトコルの余地が残され、その場合、プロトコルはもはや拘束力を持たない。[28]より一般的には、マイヤーズの証明は量子物理学を利用するプロトコルにのみ適用され、特殊相対性理論には適用されない。ケントは、情報は光より速く移動できないという特殊相対性理論の原理を利用する、ビットコミットメントのための無条件に安全なプロトコルが存在することを示した。[29]
物理的に複製不可能な機能に基づくコミットメント
物理的に複製不可能な関数(PUF)は、複製やエミュレートが困難な内部ランダム性を持つ物理キーの使用に依存しています。電子式、光学式、その他のタイプのPUF [30]は、コミットメントスキームを含む潜在的な暗号化アプリケーションに関連して、文献で広く議論されています。[31] [32]
参照
参考文献
- ^ Oded Goldreich ( 2001).暗号の基礎: 第1巻、基本ツール。ケンブリッジ大学出版局。ISBN 0-521-79172-3 . : 224
- ^ Gilles Brassard、David Chaum、Claude Crépeau、「Minimum Disclosure Proofs of Knowledge」、Journal of Computer and System Sciences、vol. 37、pp. 156–189、1988年。
- ^ Goldreich, Oded; Micali, Silvio; Wigderson, Avi (1991). 「有効性以外の何も生み出さない証明」Journal of the ACM . 38 (3): 690–728. CiteSeerX 10.1.1.420.1478 . doi : 10.1145/116825.116852 . S2CID 2389804.
- ^ ラッセル・インパグリアッツォ、モティ・ヤング:直接最小知識計算。CRYPTO 1987:40-51
- ^ Naor, Moni (1991). 「疑似乱数を用いたビットコミットメント」. Journal of Cryptology . 4 (2): 151–158. doi : 10.1007/BF00196774 . S2CID 15002247.
- ^ ab Claude Crépeau、コミットメント、暗号化および量子情報ラボ、マギル大学コンピュータサイエンス学部、2008 年 4 月 11 日アクセス
- ^ Manuel Blum、「電話によるコイン投げ」、CRYPTO 1981 の議事録、pp. 11–15、1981 年、SIGACT News vol. 15、pp. 23–27、1983 年、カーネギーメロン大学コンピュータサイエンス学部に再掲載。
- ^ Shimon Even. 契約に署名するためのプロトコル。Allen Gersho 編『Advances in Cryptography (proceedings of CRYPTO '82)』、pp. 148–153、サンタバーバラ、カリフォルニア州、米国、1982 年。
- ^ A. Shamir、RL Rivest、L. Adleman、「Mental Poker」。David A. Klarner 編『The Mathematical Gardner』(ISBN 978-1-4684-6686-7)、pp. 37–43。Wadsworth、カリフォルニア州ベルモント、1981年。
- ^ Oded Goldreich、Silvio Micali、Avi Wigderson、「証明は妥当性以外には何も生み出さない、またはNPのすべての言語はゼロ知識証明システムを持つ」、 Journal of the ACM、38: 3、pp. 690–728、1991
- ^ Oded Goldreich とHugo Krawczyk、「ゼロ知識証明システムの構成について」、SIAM Journal on Computing、25: 1、pp. 169–192、1996 年
- ^ Gennaro、Rosario、Rabin、Michael O.、Rabin、Tal。「簡易 VSS および高速マルチパーティ計算としきい値暗号化への応用」。分散コンピューティングの原理に関する第 17 回 ACM シンポジウムの議事録。1998 年 6 月。
- ^ R. Canetti と M. Fischlin。ユニバーサルに構成可能なコミットメント。
- ^ Shien Hin Ong および Salil Vadhan (1990)。定数ラウンドでの完全なゼロ知識、Proc. STOC、p. 482–493、Shien Hin Ong および Salil Vadhan (2008)。ゼロ知識とコミットメントの等価性、暗号理論で引用。
- ^ 伊藤俊也、太田宜二、静谷弘樹 (1997).言語依存暗号プリミティブ、In J. Cryptol.、10(1):37-49、Shien Hin Ong および Salil Vadhan (2008) で引用。ゼロ知識とコミットメントの等価性、暗号理論。
- ^ Wagner, David (2006)、Midterm Solution、p. 2 、2015年10月26日閲覧
- ^ 「引用: 疑似乱数ジェネレータを使用したビットコミットメント - Naor (ResearchIndex)」。Citeseer.ist.psu.edu 。 2014年6月7日閲覧。
- ^ Pedersen, Torben Pryds (1992)。「非対話型で情報理論的に安全な検証可能な秘密共有」。暗号学の進歩 - CRYPTO '91。コンピュータサイエンスの講義ノート。第 576 巻。ベルリン、ハイデルベルク: Springer Berlin Heidelberg。pp. 129–140。doi : 10.1007/3-540-46766-1_9。ISBN 978-3-540-55188-1。
- ^ Metere, Roberto; Dong, Changyu (2017). 「Pedersen コミットメント スキームの自動暗号解析」。コンピュータ ネットワーク セキュリティの数学的手法、モデル、アーキテクチャに関する国際会議。Springer。pp. 275–287。
- ^ Tang, Chunming; Pei, Dingyi; Liu, Zhuojun; He, Yong (2004年8月16日). 「Pedersen: 非対話型で情報理論的に安全な検証可能な秘密共有」(PDF) . Cryptology ePrint Archive . Advances in Cryptology CRYPTO 1991 Springer. 2017年8月11日時点のオリジナル(PDF)からアーカイブ。 2019年2月2日閲覧。
- ^ モニ・ナオール、ラファイル・オストロフスキー、ラマラトナム・ベンカテサン、モティ・ユン:任意の一方向順列を用いたNPの完全なゼロ知識証明。J.暗号学11(2):87–108 (1998)[1]
- ^ Menezes, Alfred J; Van Oorschot, Paul C; Vanstone, Scott A (2018).応用暗号ハンドブック。CRC プレス。
- ^ Mouris, Dimitris; Tsoutsos, Nektarios Georgios (2022年1月26日). 「Masquerade: 安全な乗算コミットメントによる検証可能なマルチパーティ集約」(PDF) . Cryptology ePrint Archive .
- ^ Catalano , Dario; Fiore, Dario (2013). 「ベクトルコミットメントとその応用」。公開鍵暗号 - PKC 2013。コンピュータサイエンスの講義ノート。第 7778 巻。Springer Berlin Heidelberg。pp. 55–72。doi :10.1007/ 978-3-642-36362-7_5。ISBN 978-3-642-36362-7。 Catalano, Dario; Fiore, Dario (2013). 「ベクトルコミットメントとその応用」(PDF) .国際暗号研究協会.
- ^ ベッカー、ゲオルグ (2008-07-18)。 「マークル署名スキーム、マークル ツリー、およびその暗号解析」(PDF)。ルール大学ボーフム校。 p. 16. 2014 年 12 月 22 日にオリジナル(PDF)からアーカイブされました。2013 年 11 月 20 日に取得。
- ^ Kate, Aniket; Zaverucha, Gregory; Goldberg, Ian (2010). 「多項式に対する定数サイズのコミットメントとその応用」(PDF)。暗号学と情報セキュリティの理論と応用に関する国際会議。
- ^ Brassard、Crépeau、Mayers、Salvail: 量子ビットコミットメントの不可能性に関する簡単なレビュー
- ^ A. Kent: 固定容量通信チャネルを使用した安全な古典的ビットコミットメント
- ^ Kent, A. (1999). 「無条件に安全なビットコミットメント」. Phys. Rev. Lett . 83 (7): 1447–1450. arXiv : quant-ph/9810068 . Bibcode :1999PhRvL..83.1447K. doi :10.1103/PhysRevLett.83.1447. S2CID 8823466.
- ^ McGrath, Thomas; Bagci, Ibrahim E.; Wang, Zhiming M.; Roedig, Utz; Young, Robert J. (2019-02-12). 「PUF分類法」.応用物理学レビュー. 6 (1): 011303. Bibcode :2019ApPRv...6a1303M. doi : 10.1063/1.5079407 .
- ^ Rührmair , Ulrich; van Dijk, Marten (2013-04-01). 「オブリビアス転送およびビットコミットメントプロトコルにおける物理的に複製不可能な関数の実用的使用について」。Journal of Cryptographic Engineering。3 ( 1): 17–28。doi : 10.1007 /s13389-013-0052-8。hdl : 1721.1/ 103985。ISSN 2190-8516。S2CID 15713318 。
- ^ Nikolopoulos, Georgios M. (2019-09-30). 「物理的に複製不可能な鍵による暗号化コミットメントの光学的スキーム」. Optics Express . 27 (20): 29367–29379. arXiv : 1909.13094 . Bibcode :2019OExpr..2729367N. doi :10.1364/OE.27.029367. ISSN 1094-4087. PMID 31684673. S2CID 203593129.
外部リンク
- arxiv.org における量子ビットコミットメント
- Kate-Zaverucha-Goldberg (KZG) 定数サイズの多項式コミットメント - Alin Tomescu
- ケイト多項式コミットメント
