ブラインド署名のソースを表示
←
ブラインド署名
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[暗号理論]]において、'''ブラインド署名'''は[[デジタル署名]]の一種であり、[[:en:David_Chaum|デビッド・チャウム(英語版)]]によって導入された<ref>{{cite journal |first=David |last=Chaum |title=Blind signatures for untraceable payments |journal=Advances in Cryptology Proceedings of Crypto |year=1983 |volume=82 |issue=3 |pages=199?203 |url=http://www.hit.bme.hu/~buttyan/courses/BMEVIHIM219/2009/Chaum.BlindSigForPayment.1982.PDF }}</ref>。 ブラインド署名は、〈署名者〉と〈署名されるメッセージの作成者〉が異なる状況で使われる。メッセージの作成者は、署名者に署名処理の依頼をする際に、メッセージに何らかの秘匿化を行う。このため、署名者は自分がどのようなメッセージに署名したのかを知ることができないという性質を持つ。メッセージ作成者は、署名者から得た〈秘匿化されたメッセージに対する署名〉から、本来のメッセージに対する署名を生成できる。 典型的な利用例は、オンライン匿名投票システムや[[電子マネー]]など、プライバシーを考慮したプロトコルである。 ブラインド署名は、内側が[[カーボン紙]]になっている封筒の上からサインすることに例えられる。例えば、アリスがある手紙を書いたとして、アリスはその手紙にボブのサインをもらいたいが、ボブには手紙の内容を見せたくない、という状況を考えよう。この場合、次のようにすればよい。 # アリスは手紙を〈カーボン紙付き封筒〉に入れてボブに渡す。 # ボブは封筒を開けずに封筒の上からサインをしてアリスに返す。 # アリスが封筒を開けて中の手紙を取り出す。 カーボン紙のおかげで、取り出した手紙には、ボブの署名がされている。 ブラインド署名では、次のようにして〈カーボン紙付き封筒〉を電子的に実現している。 * 〈封筒に入れる〉: メッセージ作成者アリスは、メッセージに乱数を乗算するなどの秘匿処理をする。 * 〈封筒の上からサインする〉: 署名者ボブは、署名鍵(秘密鍵)を使って、秘匿化されたメッセージに対して何らかの署名処理をして、秘匿化メッセージに対する署名を生成する。 * 〈封筒から出す〉: 秘匿化メッセージに対する署名から、メッセージの秘匿化に用いられた乱数部分を除くことで、元のメッセージに対する正当な署名を得る。 このような操作は、[[RSA署名]]や[[Digital Signature Algorithm|DSA]]など、多くのメジャーな[[デジタル署名]]方式に対して実行することができる。 〈カーボン紙付き封筒〉と同様に、ブラインド署名はいくつかの有用な性質を持つ。まず、署名者は署名処理の実行時に、どのようなメッセージにサインしているのか全く分からない(ブラインド性, blindness)。また、通常のディジタル署名と同様に、アリスは署名者に署名処理を依頼することなしに、正当な署名を得ることができない(偽造不可能性)。さらに、署名者が複数回の署名処理を行ったならば、後から署名付きメッセージが公開されたとしても、それが何度目の署名処理で作成した署名なのか、すなわち、誰からの依頼で作成した署名であるのかを判別することができない(リンク不可能性, unlinkability)。 ==利用例== ブラインド署名は、暗号技術を利用した電子マネーやオンライン匿名投票システムなど、送信者のプライバシーが重要であるアプリケーションにおいて多く利用される。 例えば、オンライン匿名投票は次のように実現できる。 # 投票者は、メッセージ(投票内容)を乱数で秘匿化して、自分の身分を証明する情報とともに投票管理センターに送り、署名を依頼する。 # センターは、投票者が投票権を持つことを確認したのち、秘匿化されたメッセージに対して署名処理を行って、その結果を返す。 # 投票者は、署名から乱数部分の取り除くことで、元のメッセージ(投票内容)に対する署名を得る。メッセージと署名を匿名通信路を使って投票サイトに送る。 # 投票サイトでは、センターの正しい署名のついたメッセージだけを有効票として集計する。 ブラインド性により、署名者である投票管理センターは投票者の投票内容を知ることがない。偽造不可能性により、投票権を持たない者による投票は無効になる。投票管理センターが、署名処理の際に有権者名簿に「投票済み」のマークを付ければ、有権権が2回投票しようとすることも防ぐことができる。さらに、リンク不可能性により、投票管理センターが投票サイトへ送られた情報を見たとしても、どの投票内容を誰が投票したのか、判別することができない。これらの性質により、不正な投票を防ぎ、投票管理センターに対しても完全に匿名性を持たせることができる。 ==ブラインド署名方式== 厳密なモデルにおいて、ブラインド署名方式は鍵生成アルゴリズム・署名プロトコル・検証アルゴリズムの3つで構成される。通常、鍵生成アルゴリズムと検証アルゴリズムはベースとなる普通の署名方式と共通である。一方、署名プロトコルは、署名したいメッセージ <math>m</math> を持つユーザアリスと、署名者ボブの2者間で実行される[[暗号プロトコル]]である.プロトコルの終わりで、アリスは <math>m</math> へのボブの署名を得るが、ボブには <math>m</math> について何も教えない。この「何も教えない」という直感を数学的にとらえることは難しい。良く用いられるアプローチでは、悪意を持った任意の署名者に対し、署名者が得るのと同じ情報を出力できるシミュレータが存在することを示す。このアプローチは、[[ゼロ知識証明]]におけるゼロ知識性の定義に似ている。 ===ブラインド RSA署名=== 最も簡単なブラインド署名は、[[RSA署名]]をベースとした方式である。<ref name=GoldwasserBellare>[[Shafi Goldwasser|Goldwasser, S.]]、[[Mihir Bellare|Bellare, M.]] [http://cseweb.ucsd.edu/~mihir/papers/gb.html "Lecture Notes on Cryptography"]. Summer course on cryptography, MIT, 1996-2001</ref> 通常のRSA署名では,メッセージ <math>m</math> の署名 <math>s</math> は、 : <math> s = H(m)^d\ (\mathrm{mod}\ N) </math> と計算される。ここで、 <math>H( )</math> は暗号学的に安全な[[ハッシュ関数]]、<math>d</math> は署名者(ボブ)の秘密鍵、<math>N</math> はボブの公開鍵(の片方)である。 ブラインド署名の署名プロトコルでは、<math>N</math> と[[互いに素 (整数論)|互いに素]]であるような乱数 <math>r</math>(つまり,<math>gcd(r,N)=1</math> であるような<math>r</math>)が使われる。<math>r</math> をボブの公開鍵(のもう片方)<math>e</math> でべき乗した値 <math>r^e\bmod N</math> が,メッセージの秘匿化に用いられるblinding factorである。アリスが署名したいメッセージ <math>m</math> を持っているとき、アリスはまず <math>m</math> のハッシュ値 <math>H(m)</math> とblinding factorを掛け算して、秘匿化メッセージ <math>m'</math> を計算する。 : <math> m' \equiv H(m) r^e\ (\mathrm{mod}\ N) </math> そして、<math>m'</math> を署名者ボブに送る。<math>m'</math> を受け取ったボブは、ブラインド署名 <math>s'</math> を次式で計算する. : <math> s' \equiv (m')^d\ (\mathrm{mod}\ N). </math> そして <math>s'</math> をアリスに送り返す。アリスは blinding factor を取り除くことで,本来のメッセージ <math>m</math> に対するボブのRSA署名 <math>s</math> を,次式により得ることができる. : <math> s \equiv s' \cdot r^{-1} \equiv (m')^d r^{-1} \equiv H(m)^d r^{ed} r^{-1} \equiv H(m)^d r r^{-1} \equiv H(m)^d\pmod{N},</math> <math>r</math> はランダムな値であり、写像 <math>r\mapsto r^e\bmod N</math> は置換であるから、<math>r^e \bmod N</math> は <math>m</math> によらずランダムである。したがって <math>m'</math> はメッセージ <math>m</math> に対する情報を全く漏らさない。 通常のRSA署名で暗号学的に安全なハッシュ関数を使う必要があるのと同様に、ブラインド署名においても、ハッシュ関数は重要である。暗号学的に安全なハッシュ関数を使うことによって、このブラインド署名が「一回の署名プロトコルの実行によって,高々一つの正当な署名しか得られない」という性質を持つことが証明されている。<ref>[http://eprint.iacr.org/2001/002.pdf The One-More-RSA-Inversion Problems and the Security of Chaum's Blind Signature Scheme]</ref> この性質を持つことで、例えば投票システムにおいて,各有権者が1回しか投票できないようにすることができる。 <!-- ==関連項目== *[[Dining cryptographers protocol]] *[[Electronic money]] --> ==参考文献== {{reflist}} ==外部リンク== * {{Cite patent | country = EP | number = 1571777 | status = application | pridate = 2004-03-02 | pubdate = 2005-09-07 | title = Electronic voting process using fair blind signatures | inventors = Canard, S., Gaud, M., Traore, J. | assign1 = France Telecom }} *[https://web.archive.org/web/20110718231432/http://www.dominique-schroeder.de/data/publications/conference/security-blind-signature-abort.pdf Security of Blind Signatures Under Aborts] *[https://archive.is/20130416090835/http://www.maniora.pl/?p=101&lang=en Implementation of Blind Signature in Java] {{デフォルトソート:ふらいんとしよめい}} [[カテゴリ:暗号技術]]
このページで使用されているテンプレート:
テンプレート:Cite journal
(
ソースを閲覧
)
テンプレート:Cite patent
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
ブラインド署名
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報