最終回となる第8回では、匿名認証などに用いられるデジタル署名である「ブラインド署名」や「グループ署名」、相手に情報を与えずに自分が情報を持っていることを証明する「ゼロ知識証明」を紹介します。
最終回となる今回は、狭い意味での暗号ではないのですが、暗号プロトコルを作るときに重要な「デジタル署名」(以下、署名)や「ゼロ知識証明」について紹介します。これらは、ある情報が正しいかどうかを確認するために使われます。
署名とは、「あるメッセージを作ったのが、確かに自分であること」をメッセージの受領者に確認してもらうための技術です。他人が自分になりすまして署名を行ったり、偽の署名を作ったりすることはできません。また、署名を検証することで、そのメッセージが改ざんされていないことも確認できます。
署名は大きく三つのステップで行われます。
全員で使うためのパラメーターの初期設定をする。ユーザーそれぞれが秘密にする署名鍵K′と、みんなに教える検証鍵Kを作る。
Aさんはメッセージmと署名鍵K′Aを使って署名sを作る。
Aさんの検証鍵KAを知っている人は、メッセージmを使って署名sの検証を行い、受理か拒否を行う。
現在よく使われている署名については他を参照していただくことにして、ここでは変わった機能を持つ署名をいくつか紹介しましょう。
「ブラインド署名」とは、署名者にメッセージの内容を見せることなく署名をしてもらう方式です。例えるなら、署名欄のところだけ穴を空けた封筒に契約書を入れて、外側から署名をしてもらうようなものです。
現実にそんなことをするのは非常に怖いかもしれませんが、電子投票や電子マネーにおいて匿名性を確保するなどの応用例が考えられています。例えば電子投票では、選挙管理委員にブラインド署名を行ってもらうことで、投票内容を教えることなく、投票用紙の正当性を保証してもらうことができます。
「グループ署名」とは、あるグループXに属している人がした署名から、グループXへの所属のみを確認できるようにして、誰が署名したかは特定できないようにする署名方式です。
グループ署名は、「あるグループに所属している」という属性を用いた匿名認証に利用できます。
例えば、あるグループの会員になると、さまざまな店舗などでサービスが受けられるとします。このとき、会員の情報が多くのサービス提供者に渡るため、個人情報の取り扱いが問題になる場合があります。
そこでグループ署名を使うと、会員の個人情報をサービス提供者に渡すことなく、サービス提供者が「利用者が会員であること」を検証できるようになります。そのため、プライバシーを保護したサービス提供が可能になります。
グループ署名では、仮にAさんが2回続けて署名をしたとしても、検証側で「前回署名をした人と今回の人が、同じ人だと分からないこと(unlinkability)」が求められます。これにより、サービス提供者は行動追跡をしにくくなります。
グループ署名は、第5回で紹介した「ペアリング」や、後述する「非対話ゼロ知識証明」を用いて構成されます。
グループ署名を用いた匿名認証においては、「AとBのグループ(属性)に属していたら受理」のような属性の論理式を受け付ける拡張も考えられています。この方式は第6回で紹介した属性ベース暗号に似ていますね。
Copyright © ITmedia, Inc. All Rights Reserved.