Blind signature

提供: tezos-wiki
2018年4月13日 (金) 02:12時点における2400:2652:6c0:5c00:80bd:f56a:7a78:c203 (トーク)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

cryptographyでは、David Chaumによって導入された「盲目の署名」は、メッセージの内容が偽装されている blinded)に署名します。結果として得られるブラインド署名は、通常のデジタル署名と同様に、元の盲目的でないメッセージに対して公的に検証することができる。ブラインド署名は、通常、署名者とメッセージの作成者が異なる当事者であるプライバシー関連のプロトコルに採用されています。例には、暗号の選挙システムと現金スキームが含まれます。

よく使われている暗号の盲目のアナロジーは、完成した匿名の投票用紙を封筒に入れて、外部にあらかじめ印刷された有権者の資格を持つ有権者の物理的行為です。公式は資格証明を確認し、封筒に署名し、それによって彼の署名をカーボン紙を介して投票用紙に転送する。署名されると、パッケージは投票者に返され、投票者は今署名された投票用紙を新しいマークされていない通常の封筒に移します。したがって、署名者はメッセージの内容を見ることはできませんが、後で第三者が署名を検証し、その署名が基礎となる署名方式の制限内で有効であることを知ることができます。

ブラインド署名は、署名者が盲目的なメッセージにそれが署名することができる後の盲目的でないバージョンに署名するのを防ぐ「リンク不能性」を提供するためにも使用することができる。この場合、署名者の応答は、署名が非盲検メッセージに対して有効なままであるように、確認の前に最初に「盲目にされない」。これは、匿名性が必要なスキームで役に立ちます。

ブラインド署名方式は、 RSAや[[デジタル署名アルゴリズム| DSA]など、いくつかの一般的な[公開鍵暗号|公開鍵]署名方式を使用して実装できます。そのような署名を実行するために、メッセージは、最初に「ブラインド」され、通常は何らかの方法でランダムな「盲目的要因」と組み合わせられます。ブラインドされたメッセージは署名者に渡され、署名者は標準の署名アルゴリズムを使用して署名します。結果として得られるメッセージは、盲目的要因とともに、後で署名者の公開鍵と照合することができます。 RSAなどの一部のブラインド署名スキームでは、署名が検証される前に署名からブラインディング係数を削除することも可能です。これらのスキームでは、ブラインド署名方式の最終出力(メッセージ/署名)は、通常の署名方式と同じです。

用途[編集]

盲目の署名スキームは、送信者のプライバシーが重要なアプリケーションで多くの用途が見られます。これにはさまざまな "[ecash | digital cash]"スキームと[エンドツーエンド監査可能な投票システム|投票プロトコル]が含まれます。

例えば、いくつかの電子投票システムの完全性は、計数のために受け入れられる前に、各投票が選挙当局によって認定されることを要求することがある。これにより、当局は、有権者の信任状をチェックして、投票が許可されていること、および複数の投票を提出していないことを確認することができます。同時に、この権限が有権者の選択を学ばないことが重要です。リンクできない盲目の署名は、それが署名した任意の投票の内容を見ることができず、盲目的な投票にリンクすることができないため、この保証を提供する。


3049/5000

ブラインド署名方式[編集]

多くの公開鍵署名プロトコルでは、ブラインド署名方式が存在します。いくつかの例を以下に示します。各例では、署名されるメッセージは値 m に含まれています。 m は、署名関数への正当な入力とみなされます。同様に、Aliceには、権限(Bobと言う)が署名する必要のある手紙がありますが、Aliceはその手紙の内容をBobに知らせたくありません。彼女はカーボンペーパーの入った封筒に手紙を置き、それをボブに送ることができます。ボブはカーボン・エンベロープの外にそれを開かずに署名し、それをアリスに送り返す。アリスはそれを開いてボブが署名した文字を見つけることができますが、ボブはその内容を見ていません。

より正式には、ブラインド署名方式は、メッセージの署名を取得したいユーザAliceと、秘密の署名鍵を所有している署名者Bobという2つの関係者を含む暗号プロトコルです。プロトコルの終わりに、アリスはボブがメッセージについて何も学ばずに「m」の署名を得る。何も学んでいないというこの直感は、数学的な言葉で取り込むのは難しいです。通常のアプローチは、すべての(敵対的な)署名者に対して、署名者と同じ情報を出力できるシミュレータが存在することを示すことです。これは、zero-knowledgeがzero-knowledge proofシステムで定義される方法に似ています。

ブラインドRSA署名[編集]

最も単純なブラインド署名スキームの1つは、RSA署名に基づいています。伝統的なRSA署名は、メッセージ「m」を公開係数「N」を法とする秘密指数「d」に上げることによって計算される。ブラインド版では、 r が '[N]'(すなわち gcd r N ' )= 1)。 「r」は公開指数「e」modulo「N」に上げられ、結果値は次のようになる。ブラインドファクターとして使用されます。メッセージの作成者は、メッセージとブラインドファクタとの積、すなわち、

:<数学> m '\ equiv m r ^ e \(\ mathrm {mod} \ N)< / math>

その結果得られた値m 'm' 'を計算する。署名する当局に。 「r」はランダムな値であり、マッピングは以下の通りである。は、以下のような順列である:【数1】は、【数2】である。ランダムでもあります。これは、<math> m '</ math> m に関する情報は漏れません。次に、署名機関は、盲検の署名 'を次のように計算します。

:&lt;数学&gt; s '\ equiv(m')^ d \(\ mathrm {mod} \ N)である。 &lt; / math&gt;

メッセージの作成者に返信されます。メッセージの作成者は、 m の有効なRSA署名である s を明らかにするために、

:&lt;数学&gt; s \ equiv s '\ cdot r ^ { - 1} \(\ mathrm {mod} \ N)&lt; / math&gt;

これは、RSA鍵が以下の方程式を満たすために働く。【数1】【数2】【数3】【数4】したがって

:&lt;数学&gt; s ^ \ equiv s '\ cdot r ^ { - 1} \ equiv(m')^ dr ^ { - 1} \ equiv m ^ dr ^ {ed} r ^ { - 1} \ equiv m ^ drr ^ { - 1 } \ equiv m ^ d \ pmod {N}、&lt; / math&gt;

したがって、 s は実際に m の署名です。

実際には、1つのブラインドメッセージに署名するプロパティは、多くの場合、有効な署名付きメッセージを1つしか生成しません。これは、例えば選挙で署名された投票あたり1票を意味する。このプロパティは、上記の単純なスキームでは保持されません。元のメッセージとアンブラインドされていないシグネチャは有効ですが、盲目のメッセージと盲目のシグネチャがあります。これに対する解決策は、メッセージ自体ではなく、メッセージの暗号化ハッシュにブラインド署名することです。

ブラインド署名の危険性[編集]

RSAは、RSAブラインド攻撃の対象となり、別のメッセージに盲目的に署名することでメッセージを解読することができます。署名プロセスは、署名者の秘密鍵を用いた復号化と同等であるので、攻撃者は、メッセージ<math> m </ math>の盲検バージョンを提供することができる。署名者の公開鍵で暗号化された<math> m '</ math>彼らが署名するために。暗号化されたメッセージは通常、攻撃者がより多くのことを知りたい署名者の公開鍵の下で暗号化されて送信されたことを監視した何らかの秘密情報です。攻撃者が署名されたバージョンの失明を取り除くと、クリアテキストが表示されます。

:&lt;数学&gt; \ begin {align} m &= m 'r ^ e \ pmod n \\  &=(m ^ e \ pmod \ cdot r ^ e)\ pmod n \\  &=(mr)^ e \ pmod n \\ \ end {align} &lt; / math&gt;

ここで、<math> m '</ math>メッセージの暗号化されたバージョンです。メッセージが署名されている場合、クリアテキスト<math> m </ math>簡単に抽出されます:

:&lt;数学&gt; \ begin {align} s '&= m' '^ d \ pmod n \\  &=((mr)^ e \ pmod)^ d \ pmod n \\  &=(mr)^ {ed} \ pmod n \\  &= m \ cdot r \ pmod n \ mbox {、以降} \ equiv 1 \ pmod {\ phi(n)} \\ \ end {align} &lt; / math&gt;

なお、&lt; math&gt; \ phi(n)&lt; / math&gt; オイラーのトータル関数を参照してください。メッセージはすぐに得られます。

:&lt;数学&gt; \ begin {align} m = s '\ cdot r ^ { - 1} \ pmod {n} \ end {align} &lt; / math&gt;

この盲目の署名方式では、署名者はメッセージに直接署名するため、この攻撃は機能します。対照的に、非ブラインド署名方式では、署名者は通常、パディングスキームを使用します(たとえば、メッセージ自体に署名するのではなく、メッセージに適用された暗号ハッシュ関数の結果に署名する)。実際のメッセージが分からない場合、パディング・スキームはアンブラインドされていないと間違った値を生成します。 RSAのこのような乗法特性により、暗号化と署名の両方の目的で同じ鍵を決して使用するべきではありません。

関連項目[編集]

ソース[編集]

http://wikipedia.org/