JP2004328449A - サービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体 - Google Patents
サービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体 Download PDFInfo
- Publication number
- JP2004328449A JP2004328449A JP2003121541A JP2003121541A JP2004328449A JP 2004328449 A JP2004328449 A JP 2004328449A JP 2003121541 A JP2003121541 A JP 2003121541A JP 2003121541 A JP2003121541 A JP 2003121541A JP 2004328449 A JP2004328449 A JP 2004328449A
- Authority
- JP
- Japan
- Prior art keywords
- digital certificate
- cert
- certificate cert
- certificate
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】匿名性が実効的に確保されるタイミングを、新規に証明書を使用するユーザへ知らしめる。
【解決手段】匿名認証により得られた電子証明書Certが初回使用の場合にはカウンタ装置300の状態管理部340から匿名性が確保可能か否かを示す匿名性確保可否データを受信し、この受信データから匿名性が確保できることを知った場合には証明書検証部350に電子証明書Certを送信して検証を要求し、2回目以降の使用の場合にはサービス提供者装置200に電子証明書Certを送信して検証及びサービスの提供を要求する。
【選択図】 図5
【解決手段】匿名認証により得られた電子証明書Certが初回使用の場合にはカウンタ装置300の状態管理部340から匿名性が確保可能か否かを示す匿名性確保可否データを受信し、この受信データから匿名性が確保できることを知った場合には証明書検証部350に電子証明書Certを送信して検証を要求し、2回目以降の使用の場合にはサービス提供者装置200に電子証明書Certを送信して検証及びサービスの提供を要求する。
【選択図】 図5
Description
【0001】
【発明の属する技術分野】
本発明は、ユーザの匿名性を確保したままユーザが保有する情報を認証する匿名認証を利用したサービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体に関する。
【0002】
【従来の技術】
被認証主体であるホスト(計算機端末)やユーザを認証するために用いられる電子的な証明書の枠組みとして、「公開鍵証明書」、「属性証明書」、「権利証明書」などが提案、運用されている(非特許文献1,非特許文献3を参照)。これらの証明書を利用した認証は、現在広く普及しているIDやパスワードを用いた認証に比較して、ユーザのなりすましやネットワーク上の盗聴などの不正な攻撃に対して強い。従って、医療分野や電子自治体などの外部からの不正な攻撃の排除が強く求められる分野への応用に適しているといえる。
【0003】
しかしながら、上記のような認証方法は、ユーザ、すなわち電子証明書の所有者のプライバシーを考慮したものではなく、証明書からその所有者であるユーザを特定できるものであった。直接ユーザの個人情報が知られないにしても、電子証明書から個人情報を間接的に追跡し得た。
【0004】
これに対して、近年、ユーザのプライバシーの保護を考慮し、電子証明書からはユーザが誰かを特定できず、ユーザの有する権利のみが確認できるような認証方法が提案されている(非特許文献4を参照)。この方法では、ユーザの個人情報、権利、属性などを保証するその方法独自の電子証明書を使用し、この証明書を発行する主体(以下、発行者と呼ぶ)と、証明書の正当性を確認してサービスを提供する主体(以下、検証者と呼ぶ)を明確に分離させ、両者が結託しないという前提の下にユーザのプライバシーを確保するものである。発行者は、予めユーザの個人情報、権利、属性などの情報を取得し、審査の上でユーザへ当該方法独自の電子証明書を発行する。一方、電子証明書の検証者は、ユーザから提示された匿名の電子証明書を検証することで、ユーザが誰かを知らなくても、すなわちユーザの個人情報、権利、属性などの情報を知らなくても、電子証明書の正当性を確認することでユーザにサービスを提供する。
【0005】
これに対して、ユーザのプライバシーをより強く保護するものとして、暗号理論を応用した特許文献1,2,3、非特許文献5に記載された方法がある。この方法では、証明書の検証者だけでなく、発行者に対しても、証明書とその所有者であるユーザの関連づけを暗号理論上困難にしている。また、この方法では、ユーザの個人情報、権利、属性などの情報を記憶している証明書の発行者が同時に証明書の検証者となった場合でも、証明書を検証する段階では、証明書を所有するユーザが誰なのか知り得ないという、一見相反する事情を両立させている。以下ではこの方法を「匿名認証方式」と呼ぶ。
【0006】
匿名認証方式では、証明書を発行する発行者装置と、証明書を検証する検証者装置はそれぞれを異なる主体が保有してもよく、また1つの同じ主体が2つの装置を保有してもよい。
【0007】
証明書の発行者は、ユーザの個人情報、権利、属性などを知っており、証明内容(ユーザの個人情報、権利、属性など)に対してブラインド署名によって証明内容を保証した証明書をユーザに発行する。ブラインド署名の詳細は非特許文献2に記載されている。
【0008】
匿名認証方式による匿名性の確保の具体的な仕組みを説明する。
【0009】
なお、前提として、証明書発行前に、予め、郵送等のオフライン、あるいはユーザ装置と発行者装置、検証者装置との間のオンライン処理により、ユーザの個人情報などのメッセージMがユーザから発行者装置に提供されている。
【0010】
まず、ユーザ装置は、乱数rj,wjおよび公開鍵Puと秘密鍵Suのペアを生成し、以下の式(1)で示される関数値Zjを演算し、発行者装置にこの関数値Zjを送信する。
【0011】
Zj=Psp(rj)gB(gA(Pu||wj)||M) for 1≦j≦N …(1)
ここで、“||”はビット結合を、gA(・),gB(・)は公開されている衝突困難な一方向ハッシュ関数を表す。これら衝突困難な一方向ハッシュ関数gA(・)とgB(・)は、ともに同じ関数(同じアルゴリズム)であってもよい。また、Pspは発行者が広く公開している公開鍵を、Mは特定のメッセージをそれぞれ表す。
【0012】
なお、ここでの公開鍵Puは証明書の発行段階では誰にも公開しない。
【0013】
発行者装置は、受信したZjのうち、任意のR個を決定し、これに対応した{Zk}(1≦k≦R)に含まれ、Zkを算出するのに必要な乱数rk、関数値gA(Pu||wk)からなるZパラメータの開示をすべての値kについてユーザ装置に要求する。
【0014】
ユーザ装置は、発行者装置から要求のあったZk(1≦k≦R)についてのZパラメータ(乱数rk及び関数値gA(Pu||wk))を送信する。
【0015】
発行者装置は、Zパラメータに基づき以下の式(2)で示される値Zkを計算し、前記受信したZjと一致するか否かを検証する。
【0016】
Zk=Psp(rk)gB(gA(Pu||wk)||M) for 1≦k≦R …(2)
一致していない場合には発行できないと判定し、証明書発行手順を終了する。一致している場合には、開示されていないZi(1≦i≦N−R)について以下の式(3)に示すZiへの仮ブラインド署名を実行する。
【0017】
pre−SIGSP=Ssp(ΠiZi) …(3)
ここで、Sspは発行者装置の秘密鍵を表す。また、“Πi”は、すべてのiについて乗算(ここではZ1×Z2×…×ZN−R)することを表す。
【0018】
得られた仮ブラインド署名pre−SIGSPはユーザ装置に送信される。
【0019】
ユーザ装置は、受信した仮ブラインド署名pre−SIGSPを利用して以下の式(4)に示される計算を実行するブラインド署名の抽出処理を行う。
【0020】
SIGSP=pre−SIGSP/Πiri for all i (Πiri=r1×r2×…×rN−R) …(4)
また、以下をひとまとまりとして証明書として保存する。
【0021】
Cert=[M,{wi},Pu,SIGSP] for all i
ここで、{wi}={w1,w2,…,wN−R}である。
【0022】
以上により証明書の発行処理が終了する。
【0023】
次に、証明書の使用手順を説明する。
ユーザ装置は電子証明書Certを検証者装置に送信する。
【0024】
検証者装置は、ユーザ装置から受信したCertに含まれるM,{wi},Puを用いて以下の式(5)
Yi=gB(gA(Pu||wi)||M) for 1≦i≦N …(5)
を計算した後、以下の式(6)が成立するか否かを判定する。
【0025】
ΠiYi=Psp(SIGSP) …(6)
成立すると判定される場合には、ユーザが発行者装置から証明書を発行された者であることが証明されるため、検証者装置からユーザ装置に各種サービスの提供がなされる。成立しないと判定される場合には、ユーザが発行者装置から証明書を発行された者であることが証明されないため、ユーザ装置にサービスが提供されることなく終了する。
【0026】
図1はこの匿名認証方式の仕組みの概念図である。図1に示すように、ユーザA、ユーザBおよびユーザCがそれぞれ電子証明書Cert of A、Cert of B、Cert of Cを使用する場合、証明書の発行時には、ユーザの個人情報とユーザに発行したブラインド署名の元情報としての仮ブラインド署名Ssp(ΠiZi)を関連づけて記憶することができる。これは、仮ブラインド署名Ssp(ΠiZi)の生成に必要なユーザから提供されるZiやZi算出に必要なZパラメータには、ユーザ固有の情報が含まれているからである。
【0027】
しかしながら、証明書の検証時においては、上記電子証明書Cert of A、Cert of B、Cert of Cとユーザの個人情報の対応づけが無いため、戻ってくる証明書はいずれも区別はつくが、初めて見るデータということとなる。
【0028】
このように、この匿名認証方式の注目すべき点は、証明書の発行段階で誰にどんな証明書を発行したかを発行者であるサービス提供者が記憶していたとしても(発行者が証明書の発行時に記憶できるデータはSsp(ΠiZi)である)、証明書が使用され発行者自身のもとへ戻ってきた際には、この証明書(証明書が戻ってきた際はSIGSPというデータになっている)が誰に発行したものかを知り得ないことである。ただし、証明書には発行者自身による仮ブラインド署名が含まれているため、発行者はこの証明書は自分が発行したものであることを認めざるを得ない。
【0029】
以上説明したように、この匿名認証方式によれば、ユーザへの証明書の発行とその検証を例えばサービス提供者などの同一の主体が実施しても、ユーザのプライバシーが守られるという利点を有する。例えばサービス提供者のどの会員がサービスを利用したかをサービス提供者は知り得ず、自身の会員であることを確認できる。
【0030】
【特許文献1】
特開2000−231331号公報
【特許文献2】
特開2001−134182号公報
【特許文献3】
特開2001−188757号公報
【非特許文献1】
小松文子著「PKIハンドブック」、株式会社ソフト・リサーチ・センター、2000年11月25日発行、p.41−68「第3章 3.1 公開鍵証明書」、p.82−83「3.3.1属性証明書」
【非特許文献2】
岡本龍明、山本博資著、「現代暗号」、産業図書、p.184、1998年6月30日発行
【非特許文献3】
Carl Ellison著、「SPKI Certificate Theory, RFC2693 3.3 SPKI Certificates, 6.1.5 5−tuple Defined」、〔online〕、1999年9月掲載、〔2003年2月27日検索〕、インターネット<http://www.faqs.org/rfcs/rfc2693.html>
【非特許文献4】
斎藤孝道、梅澤健太郎、奥野博著、「プライバシを重視するアクセス制御システムの一方式」、電子情報通信学会誌、D−I, Vol.J84−D−I, no.11, p.1553−1562, 2001年11月
【非特許文献5】
佐藤直之、鈴木英明著、「匿名のまま権利行使を可能とした認証方式」、情報処理学会論文誌、Vol.41, No.8, p.2138−2147, 2000年8月
【0031】
【発明が解決しようとする課題】
以上説明したように、匿名認証方式とは、「予めユーザを特定できる情報を証明書の発行者が知っていても、発行者がユーザへ発行した証明書が発行者自身へ戻ってきたとき、その証明書がどのユーザのものであるかを識別できない」という認証方式の枠組みを提供するものである。
【0032】
従って、証明書の発行と検証を同一の主体が実施するような場合にも、ユーザの匿名性が維持できるという特徴がある。この特徴を考慮すると、既存のインターネットサービスプロバイダ(ISP)が実施しているように、ユーザをその会員として登録し、サービスの提供を行うようなサービス提供者に対しても、匿名認証方式を適用することができるといえる。この場合、例えばサービス提供者は、ユーザを会員として登録する際に証明書を発行しておき、ユーザの要求に応じてサービスを提供する際には、ユーザから提示される証明書を検証することで認証するといった運用が考えられる。
【0033】
ところが、上記のような運用においては、証明書の発行および検証はユーザの要求に応じて実施されるものであるため、証明書の発行および検証は任意の時系列で実施されることが予想される。任意の時系列で証明書の発行と検証が実施されるとき、同じ証明内容(即ちユーザ情報)を保有するユーザであっても、匿名性が実効的に保証されなくなるユーザが存在するという状況が発生しうる。
【0034】
図2はこの匿名認証方式の問題点を説明するための図である。以下では、証明書の発行および検証をともに「サービス提供者」が実施し、ユーザはすべて同じ証明内容(即ちユーザ情報)を保有することを前提としている。以下ではサービス提供者、ユーザA、B及びCがやりとりする記載としているが、実質的にはネットワークを介したサービス提供サーバと各ユーザ装置間のデータ通信により実現される。
【0035】
まず、サービス提供者がユーザAに証明書を発行し(s501)、ユーザAはブラインド署名の抽出を実行する(s501a)。具体的には、受信した仮ブラインド署名を乱数rAで除算する。なお、実際にはサービス提供者が発行するのは仮ブラインド署名pre−SIGSPであって、この仮ブラインド署名pre−SIGSPからユーザ側がブラインド署名SIGSPを抽出し、このブラインド署名SIGSPを証明の対象とするメッセージM,乱数wk,公開鍵Puに付加して電子証明書Certが出来上がる。
【0036】
次に、サービス提供者はユーザBに証明書を発行し(s502)、ユーザBは前述したブラインド署名の抽出を実行する(s502a)。具体的には、受信した仮ブラインド署名を乱数rBで除算する。次に、ユーザAが証明書を使用する、すなわち、サービス提供者に対して電子証明書Cert of Aを送信する。サービス提供者から見ると、この証明書がユーザAのものである確率は1/2、ユーザBのものである確率は1/2となる。このとき、ユーザAは、証明書から自分を特定されないため、匿名性は確保できる。そして、次にユーザBが証明書を使用する。この場合も、ユーザAの場合と同様に匿名性を確保できる。ところが、次でサービス提供者がユーザCに証明書を発行し(s521)、次に他のユーザに証明書を発行する前にユーザCが証明書を使用すると(s522)、サービス提供者は、ユーザCから受信した証明書が確率1でユーザCのものと分かってしまう。少なくとも、ユーザAとユーザBは既に証明書を使用したことをサービス提供者は記憶しているからである。
【0037】
上記の説明からも明らかなように、ユーザにとっては、自分以外のユーザが複数存在していたとしても自分と識別不能な対象、すなわち他のユーザが少なくとも1人はいない限り、自分の匿名性をサービス提供者に対して確保できない。この問題点は自分と識別不能なユーザが1人もいないことに起因する。逆に、ユーザAおよびユーザBは、それぞれ互いが自分と識別不能なユーザとなっているため、サービス提供者に対して匿名性を確保できるのである。
【0038】
ユーザが1枚の証明書の発行を受け、この1枚の証明書を使用するという匿名認証方式のモデルでは、サービス提供者は戻ってくる証明書の枚数から、何人にユーザが証明書を使用しているのかを記憶できる。そして、「証明書を発行したすべてのユーザが既に証明書を使用した」ことを記憶されてしまうと、新たに証明書を発行されるユーザの匿名性は保証されなくなる。
【0039】
本発明は上記課題を解決するためになされたもので、その目的とするところは、匿名性が実効的に確保されるタイミングを、新規に証明書を使用するユーザへ知らしめることができるサービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体を提供することにある。
【0040】
【課題を解決するための手段】
本発明の骨子は以下の通りである。
【0041】
本発明では、上記課題を解決するため、「匿名認証方式」による証明書を取得したユーザが、証明書を使用しても実効的に匿名性が保証されるタイミングを知るための方法に関する。
【0042】
匿名性保証のタイミングを知るため、証明書を利用するユーザ装置と、当該ユーザの情報を登録しユーザへサービスを提供するサービス提供者装置の他に、証明書の内容を保証し個々のメッセージMに対応する署名の発行枚数と証明書の使用枚数を計数するカウンタ装置をネットワークで接続する。
【0043】
ユーザ装置がサービス提供者装置からメッセージMの証明書を取得する際、署名の発行はサービス提供者装置ではなくカウンタ装置に依頼するようにする。このときカウンタ装置は「メッセージMに対する発行済み証明書カウンタ」A2を1つカウントアップする。また、ユーザ装置がメッセージMの証明書を使用してサービス提供者装置のサービスを利用する際は、証明書の検証をカウンタ装置へ依頼するようにする。このとき、カウンタ装置は「メッセージMに対する使用済み証明書カウンタ」A1を1つカウントアップする。
【0044】
ユーザは、カウンタA1及びA2のインクリメント/デクリメントの時系列関係によって、証明書を使用してもユーザの匿名性を実効的に確保できるかどうかを知ることができる。
【0045】
本発明の一つの観点によれば、以上に示した方法を実現するために、ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いたサービス利用方法であって、証明書発行段階では、証明書管理装置は、ユーザ装置の秘密の乱数群rを用いて作成された前記電子証明書Certの元情報群Z及び前記証明書管理装置の秘密鍵Scに基づき仮ブラインド署名pre−SIGCを生成して前記ユーザ装置に送信し、前記生成された仮ブラインド署名pre−SIGCの発行部数を計数し、前記ユーザ装置は、前記仮ブラインド署名pre−SIGCから前記秘密の乱数群rを用いてブラインド署名SIGCを抽出し、前記ブラインド署名SIGCを含む前記電子証明書Certを作成し記憶装置に格納し、サービス利用段階では、前記ユーザ装置は、前記電子証明書Certが既使用か否かを判定し、前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを前記証明書管理装置から受信し、前記電子証明書Certが既使用と判定された場合には前記電子証明書Certを前記記憶装置から読み出し前記証明書管理装置に送信し、前記電子証明書Certが既使用でないと判定された場合には前記電子証明書Certを前記記憶装置から読み出し検証者装置に送信し、前記証明書管理装置は、前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行うとともに前記電子証明書Certの初回使用部数を計数し、前記検証が成功した場合には、検証成功通知を前記検証者装置に送信し、前記仮ブラインド署名pre−SIGCの発行部数及び前記電子証明書Certの初回使用部数に応じて前記匿名性確保可能データを前記ユーザ装置に送信し、前記検証者装置は、前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行うことを特徴とするサービス利用方法を提供する。
【0046】
また、本発明の別の観点によれば、上記サービス利用方法を実現するためのユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体としても成立する。
【0047】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
【0048】
図3は本発明の一実施形態に係るサービス提供方法が適用されるサービス提供システムの全体構成を示す図である。400はインターネットなどの電子ネットワークを示す。このネットワーク400に、サービスを提供するサービス提供者が使用するサービス提供者装置200、サービスを利用し、認証を受けるユーザの使用する複数のユーザ装置100、及び電子証明書を匿名認証方式により発行し、また電子証明書の発行部数や使用部数を管理するカウンタ装置300が接続されている。匿名認証とは、被認証者であるユーザの属性情報を提供することなく電子証明書の認証を行う方式をいう。発行される電子証明書は、特定の情報とユーザの公開鍵との結びつきを証明する。
【0049】
ユーザ装置100は、証明書元情報作成部110、検証結果送信部120、署名抽出部130、証明書作成部140、証明書判別部150、状態取得部160、証明書使用部170及び記憶装置180とを備える。
【0050】
例えばユーザ装置100に設けられた記憶装置180から読み出されたプログラムがユーザ装置100のCPUなどで実行されることにより、ユーザ装置100が各構成要素110〜170として機能する。
【0051】
証明書元情報作成部110、検証結果送信部120、署名抽出部130及び証明書作成部140は、証明書を作成する段階で以下の機能を有する。
【0052】
証明書元情報作成部110は、公開鍵Puと秘密鍵Suを作成し、秘密鍵Suを秘密に所有する処理を実施する。秘密に所有する処理とは、記憶装置180等に格納して読み出し不能に設定する処理等が該当する。また、証明書元情報作成部110は、後述するカウンタ装置300が広く公開している公開鍵Pcを用いて、証明書の元情報としての関数値{Zj}を生成し、後述するサービス提供者装置200に送信する。検証結果送信部120は、サービス提供者装置200と情報のやりとりを行い、後述する関数値{Zj}及び{Zj}’をカウンタ装置300に送信する。
【0053】
署名抽出部130は、カウンタ装置300から署名の元情報として仮ブラインド署名pre−SIGCを受信し、ブラインド署名SIGCを抽出する。証明書作成部140は、署名抽出部130で抽出した署名SIGCと、証明書元情報作成部110で作成された乱数wj、公開鍵Pu及びメッセージMにより電子証明書Certを作成し、記憶装置180に保存する。メッセージMは、証明内容であるユーザの属性情報からなる。
【0054】
証明書判別部150、状態取得部160及び証明書使用部170は、証明書を使用する段階で以下の機能を有する。
【0055】
証明書判別部150は、証明書が初めての使用か、2回目以降の使用か、すなわち既使用か否かを判別する。状態取得部160は、初めて電子証明書Certを使用する際、この電子証明書Certを使用することで実効的に匿名性が確保できるかどうかを示す状態をカウンタ装置300から取得する。
【0056】
証明書使用部170は、初回の使用か、2回目以降の使用かにより、電子証明書Certの送付先をそれぞれカウンタ装置300及びサービス提供者装置200に設定した上で当該送付先に電子証明書Certを送信する。送付先の設定は、この送付処理の呼出元により判定する。具体的には、初めて電子証明書Certを使用する場合で匿名性を確保することができることをカウンタ装置300から通知された場合には、カウンタ装置300に電子証明書Certを送信する。また、証明書使用部170は、電子証明書Certを2回目以降に使用する場合には、サービス提供者装置200に電子証明書Certを送信する。状態取得部160の動作は、例えばユーザ装置100からカウンタ装置300に問い合わせることにより実行してもよく、逆にカウンタ装置300からユーザ装置100に通知することにより実行してもよい。
【0057】
記憶装置180は、各種電子証明書や鍵などのデータを格納することができる。この記憶装置180は、ユーザ装置100本体に接続された磁気ディスクや光ディスクなどの記憶装置のみならず、例えばカード書込/読取装置とその装置により書込及び読取可能なICカードにより実現されてもよい。
【0058】
サービス提供者装置200は、証明書元情報検証部210、検証結果作成部220、証明書検証部230及びサービス管理部240とを備える。
【0059】
例えばサービス提供者装置200に設けられた記憶装置から読み出されたプログラムがサービス提供者装置200のCPUなどで実行されることにより、サービス提供者装置200が各構成要素210〜240として機能する。
【0060】
証明書元情報検証部210及び検証結果作成部220は、証明書を作成する段階で以下の機能を有する。
【0061】
証明書元情報検証部210は、ユーザ装置100から受信した電子証明書Certの元情報としての関数値{Zj}を検証する。検証結果作成部220は、証明書元情報検証部210で検証された関数値{Zj}に、例えばサービス提供者装置200の秘密鍵Sspを用いた署名を付与することで、改ざん不能な形式である関数値{Zj}’を生成し、関数値{Zj}とともに検証結果としてユーザ装置100に送信する。なお、関数値{Zj}は送信しなくてもよい。
【0062】
証明書検証部230及びサービス管理部240は、証明書を使用する段階で以下の機能を有する。
【0063】
証明書検証部230は、ユーザ装置100から電子証明書Certを受信し、その電子証明書Certを検証する。サービス管理部240は、カウンタ装置300からの電子証明書Certの検証成功通知、もしくは証明書検証部230におけるユーザ装置100からの証明書の検証成功を得た場合に、ユーザ装置100に対してサービスを提供したり、サービスを管理する。
【0064】
カウンタ装置300は、検証結果検証部310、署名元情報作成部320、第1の計数部330、状態管理部340、証明書検証部350及び第2の計数部360とを備える。
【0065】
例えばカウンタ装置300に設けられた記憶装置から読み出されたプログラムがカウンタ装置300のCPUなどで実行されることにより、カウンタ装置300が各構成要素310〜360として機能する。
【0066】
検証結果検証部310、署名元情報作成部320及び第1の計数部330は、証明書を作成する段階で以下の機能を有する。
【0067】
検証結果検証部310は、ユーザ装置100から受信した関数値{Zj}’の検証を行う。署名元情報作成部320は、検証結果検証部310における検証が成功した場合に、関数値{Zj}を用いてカウンタ装置300の秘密鍵Scを用いて署名の元情報としての仮ブラインド署名pre−SIGCを作成し、ユーザ装置100に送信する。第1の計数部330は、仮ブラインド署名pre−SIGCを生成あるいは送信する毎にメッセージMに対して発行した仮ブラインド署名pre−SIGCの初回使用部数を計数する。
【0068】
状態管理部340、証明書検証部350及び第2の計数部360は、証明書を使用する段階で以下の機能を有する。
【0069】
状態管理部340は、あるメッセージMを他の証明書と共有する任意の証明書が匿名性を失うことなく使用可能か否かの状態を把握してユーザ装置100に通知する。証明書検証部350は、ユーザ装置100から受信した証明書を検証し、検証が成功すればサービス提供者装置200に証明書の検証成功を通知する。第2の計数部360は、証明書検証部350で証明書の検証が成功した場合に、メッセージMに対する証明書の使用部数を計数及び管理する。
【0070】
次に、図4を用いて証明書の作成処理シーケンスを説明する。
【0071】
なお、電子証明書作成前に、予め、郵送等のオフライン、あるいはユーザ装置100とサービス提供者装置200との間のオンライン処理により、ユーザの個人情報などのメッセージMがユーザからサービス提供者に提供されている。
【0072】
まず、ユーザ装置100の証明書元情報作成部110は、乱数rj,wjおよび公開鍵Puと秘密鍵Suのペアを生成し、以下の式(11)で示される関数値Zjを演算し、電子証明書Certの元情報として{Zj}をサービス提供者装置200に送信する(s1)。
【0073】
Zj=Pc(rj)gB(gA(Pu||wj)||M) for 1≦j≦N …(11)
ここで、“||”はビット結合を、gA(・),gB(・)は公開されている衝突困難な一方向ハッシュ関数を表す。jは1≦j≦Nのすべての自然数である。これら衝突困難な一方向ハッシュ関数gA(・)とgB(・)は、ともに同じ関数(同じアルゴリズム)であってもよい。また、Pcはカウンタ装置300が広く公開している公開鍵を、Mは特定のメッセージをそれぞれ表す。
【0074】
なお、ここでの公開鍵Puは証明書の発行段階では誰にも公開しない。
【0075】
サービス提供者装置200の証明書元情報検証部210は、受信した{Zj}のうち、任意のR個を決定し、これに対応した{Zk}(1≦k≦R)に含まれ、Zkを算出するのに必要な乱数rk、関数値gA(Pu||wk)からなるZパラメータの開示をすべての値kについてユーザ装置100に要求する(s2)。
【0076】
ユーザ装置100の証明書元情報作成部110は、要求のあったZk(1≦k≦R)についてのZパラメータ(乱数rk及び関数値gA(Pu||wk))をサービス提供者装置200に送信する(s3)。
【0077】
サービス提供者装置200の証明書元情報検証部210は、Zパラメータに基づき以下の式(12)で示される値Zkを計算し、前記受信したZjと一致するか否かを検証する(s4)。
【0078】
Zk=Pc(rk)gB(gA(Pu||wk)||M) for 1≦k≦R …(12)
一致していない場合には証明書を発行できないと判定し、証明書発行手順を終了する。一致している場合には、検証に成功したと判定する。検証が成功した場合、検証結果作成部220は、関数値{Zj}の集合のうち、検証の対象としなかった部分集合{Zi}(1≦i≦N−R)に対して改ざん不能な演算を実施して関数値{Zi}’を作成して関数値{Zi}とともにユーザ装置100に送信する(s5)。ここで、改ざん不能な演算とは、例えばサービス提供者装置200の秘密鍵Sspを用いた署名を関数値{Zi}に付加する演算等が該当する。なお、関数値{Zi}は既にユーザ装置100にあるため送信しなくてもよい。もちろん、検証の対象とした関数値{Zk}(1≦k≦R)についても改ざん不能な演算及びデータ送信を実施してもよい。
【0079】
ユーザ装置100の検証結果送信部120は、関数値{Zi}及び{Zi}’を受信すると、これらをカウンタ装置300に送信する(s6)。カウンタ装置300の検証結果検証部310は、受信した関数値{Zi}’を検証する(s7)。検証は、例えば関数値{Zi}及び{Zi}’に基づきサービス提供者装置200の公開鍵Pspを用いた演算を行う。これにより、改ざんの有無を確認できる。検証に成功すると、カウンタ装置300の署名元情報作成部320は、関数値{Zi}に対する仮ブラインド署名pre−SIGCを作成する(s8)。具体的には、Zパラメータが開示されていないZi(1≦i≦N−R)について以下の式(13)に示すZiへの仮ブラインド署名を実行する。
【0080】
pre−SIGC=Sc(ΠiZi) …(13)
ここで、Scはカウンタ装置300の秘密鍵を表す。また、“Πi”は、すべてのiについて乗算(ここではZ1×Z2×…×ZN−R)することを表す。
【0081】
仮ブラインド署名pre−SIGCが作成されると、カウンタ装置300の第1の計数部330は、「発行済み署名が1部増加」したことを示す後述の共有メモリ600の所定の値をインクリメントする(s9)。また、仮ブラインド署名pre−SIGCが作成されると、署名元情報作成部320は、仮ブラインド署名pre−SIGCをユーザ装置100に送信する(s10)。ユーザ装置100の署名抽出部130は、受信した仮ブラインド署名pre−SIGCから以下の式(14)に示される計算を実行するブラインド署名の抽出処理を行う(s11)。
【0082】
SIGC=pre−SIGC/Πiri for all i (Πiri=r1×r2×…×rN−R) …(14)
また、署名抽出部130は、以下をひとまとまりとして電子証明書Certとして記憶装置180に保存する(s12)。
【0083】
Cert=[M,{wi},Pu,SIGC] for all i
ここで、{wi}={w1,w2,…,wN−R}である。
【0084】
以上により証明書の発行処理が終了する。
【0085】
次に、図5を用いて証明書の使用処理シーケンスの一例を説明する。
まず、ユーザ装置100の証明書判別部150は、証明書を使用する際に、使用する電子証明書Certが初回に使用されるものか否かを判定する(s21)。この初回判定処理は、予め各電子証明書Certに関連づけて記憶された証明書使用回数や初回/2回目以降の別を示すフラグを読み取ることで判定可能である。より具体的には、例えばユーザ装置100のメモリや磁気ディスク、あるいは記憶装置180などの記憶部に、電子証明書Cert毎の証明書使用回数や初回/2回目以降の別(既使用か否か)を示すフラグを記録しておく記憶領域を論理的に設けるなど、既存の技術で実現可能である。この判定結果により、初回の場合には状態取得部160による状態取得処理、初回ではない2回目以降の場合には証明書使用部170による証明書使用処理に処理が分岐する。なお、この(s21)の処理は、必ずしも(s12)証明書格納処理の直後に実行される必要はなく、(s12)から所定の時間経過した所定の時刻(例えば毎日12:00)に実施されるようにしてもよい。
【0086】
記憶装置180で電子証明書Certの使用が初回であると判定された場合、状態取得部160はカウンタ装置300に、判定対象の電子証明書Certを使用しても匿名性が失われないか否かを問い合わせる(s22a)。カウンタ装置300の状態管理部340は、問い合わせのあった電子証明書Certが匿名性を確保できるか否かを判定する匿名性判定処理を実行し(s23a)、確保できると判定した場合、匿名性が確保可能であることを示す匿名性確保可能データをユーザ装置100に送信する(s24a)。匿名性が確保できないと判定した場合には、状態管理部340は匿名性が確保不能であることを示す匿名性確保不能データをユーザ装置100に送信する。この場合はユーザ装置100は電子証明書Certを使用する処理を行わない。匿名性判定処理の詳細は後述する。
【0087】
匿名性確保可能データを受信したユーザ装置100の証明書使用部170は、その受信データから、問い合わせの電子証明書Certの使用が初回の使用であると判定し、その電子証明書Certをカウンタ装置300に送信し、検証を要求する(s25a)。カウンタ装置300の証明書検証部350は、ユーザ装置100から受信した電子証明書Certの検証を行う(s26a)。この検証は、具体的には電子証明書Certに含まれるM,{wi},Puを用いて以下の式(15)
Yi=gB(gA(Pu||wi)||M) for 1≦i≦N …(15)
を計算した後、以下の式(16)が成立するか否かを判定する。
【0088】
ΠiYi=Pc(SIGC) …(16)
成立すると判定した場合、検証に成功したものと判断され、証明書検証部350はサービス提供者装置200に検証成功通知を送信する(s27a)。また、検証に成功した場合、第2の計数部360は「使用済み証明書が1部増加」したことを示す後述の共有メモリ600の所定の値をインクリメントする(s28a)。
【0089】
検証成功通知を受信したサービス提供者装置200のサービス管理部240は、ユーザ装置100にサービスを提供する(s30)。
【0090】
(s21)で電子証明書Certの使用が2回目以降と判定された場合、証明書使用部170は、対象とする電子証明書Certをサービス提供者装置200に送信する(s25b)。サービス提供者装置200の証明書検証部230は、受信した電子証明書Certの検証を行う(s26b)。この検証は、前述したカウンタ装置300の証明書検証部350における(s26a)の処理と共通する。すなわち、証明書検証部230は、電子証明書Certに含まれるM,{wi},Puを用いて前述の式(15)に示す関数値Yiを計算した後、前述の式(16)が成立するか否かを判定する。
【0091】
式(16)が成立すると判定した場合、検証に成功したものと判断される。検証に成功した場合、サービス提供者装置200のサービス管理部240は、ユーザ装置100にサービスを提供する(s30)。検証に成功しないとユーザ装置100にサービスは提供されない。
【0092】
なお、上述した説明では、カウンタ装置300は1つのみを示したが、複数存在していてもよい。カウンタ装置300が複数存在する場合、電子証明書Certの作成段階で、カウンタ装置300を識別する識別子などのカウンタ装置識別情報Icを電子証明書Certに含めておくのが望ましい。この場合、Cert=[M,{wi},Pu,SIGC,Ic]となる。このカウンタ装置識別情報Icは、いかなる段階でカウンタ装置300から取得してもよいが、例えば(s10)のpre−SIGCとともに取得しておけばよい。この場合、前述の(s25b)の段階で、このカウンタ装置識別情報Icを電子証明書Certに含めて送信することで、サービス提供者装置200はどの公開鍵Pcを用いてΠiYi=Pc(SIGC)で示される式(16)の成立性の判定を行えばよいのかを、受信したカウンタ装置識別情報Icに基づき知ることができる。
【0093】
図6は、第1の計数部330及び第2の計数部360における計数処理(s9)、(s28a)及び状態管理部340における状態管理処理(s23a)の動作の一例を示す図である。共有メモリ600は、整数値を格納する2つのメモリi[0]及びi[1]を有する。
【0094】
第1の計数部330における第1の計数処理(s9)の詳細は次の通りである。署名元情報作成部320から第1の計数処理指令を受ける毎に、第1の計数部330は(s91)及び(s92)の処理を実行する。まず、第1の計数部330はメモリi[0]の値をメモリi[1]にコピーする(s91)。次に、第1の計数部330はメモリi[0]をインクリメントする(s92)。
【0095】
第2の計数部360における第2の計数処理(s28a)の詳細は次の通りである。証明書検証部350から第2の計数処理指令を受ける毎に、第2の計数部360は(s281)及び(s282)の処理を実行する。まず、第2の計数部360はメモリi[0]の値をメモリi[1]にコピーする(s281)。次に、第2の計数部360はメモリi[0]をデクリメントする(s282)。
【0096】
状態管理処理(s23a)は、具体的には(s231)及び(s232)の処理からなる。まず、ユーザ装置100から(s22a)の問い合わせを受信した共有メモリ600のメモリi[0]及びi[1]の値を参照する(s231)。そして、得られた値がi[0]=1かつi[1]=0を満たすか否かを判定する(s232)。i[0]=1かつi[1]=0の場合、新たに電子証明書Certを取得したユーザが1人しかいないことを意味する。すなわち、特定のメッセージMに対する仮ブラインド署名pre−SIGCの発行数が電子証明書Certの使用済み数よりも一枚しか多くない。この場合、当該電子証明書Certを使用するユーザの実効的な匿名性は確保されないため、ユーザ装置100に匿名性が確保不能であることを示す匿名性確保不能データを送信する。i[0]=1かつi[1]=0でない場合、ユーザ装置100に匿名性が確保可能であることを示す匿名性確保可能データを送信する(s24a)。
【0097】
このように、メモリの値がi[0]=1かつi[1]=0であるか否かで処理を分岐することで、匿名性確保の可否に対応した状態通知が可能となる。
【0098】
図9は上記共有メモリ600の値の遷移の一例を示す図である。
【0099】
図9に示すように、初期状態では、i[0]及びi[1]ともに値が0である。署名発行によりi[0]がインクリメントされた後にすぐに証明書が使用しようとすると、i[0]=1、i[1]=0となっており、特定のメッセージMに対する仮ブラインド署名pre−SIGCの発行数が電子証明書Certの使用済み数より1枚しか多くないため、匿名性が確保されない。従って、この状態では電子証明書Certの使用はできないように匿名性確保不能データを送信する。
【0100】
その後、仮ブラインド署名pre−SIGCが3回連続して発行され、それに応じてi[0]及びi[1]の値がそれぞれ(1,0)、(2,1)、(3,2)になる。さらに電子証明書Certを使用していくと、3回の使用は匿名性が確保されるが、3回使用した段階でi[0]及びi[1]の値が(0,1)となり、さらにその次に署名発行することによりi[0]及びi[1]の値が(1,0)となり、次の証明書利用では匿名性が確保されなくなる。
【0101】
次に、図7を用いて証明書の使用処理シーケンスの別の一例を説明する。
【0102】
図5の例の場合、ユーザ装置100からカウンタ装置300に問い合わせることにより匿名性確保の可否を示す通知がユーザ装置100になされる場合を示したが、図7の例の場合、証明書の匿名性が確保される段階になった段階で、カウンタ装置300からすべてのユーザ装置100に匿名性確保の通知を行う例を示す。なお、このシーケンスでは、ユーザ装置100を状態取得部160として機能させる必要はない。
【0103】
図7の使用処理シーケンスの場合、予めユーザ装置100の所有者であるユーザが、ユーザ装置100にメールアドレスを通知しておく。もちろん、メールアドレス以外の通知先を通知しておいてもよい。
【0104】
カウンタ装置300の状態管理部340は、電子証明書Certが匿名性を確保できるか否かを判定する匿名性判定処理を実行する(s31)。この匿名性判定処理は、前述の(s23a)と共通するが、異なるのは、ユーザ装置100からの問い合わせの有無にかかわらず実行されることである。匿名性が確保できると判定された場合には、匿名性確保可能データを含む電子メールをユーザ装置100に送信する(s32)。
【0105】
電子メールを受信したユーザ装置100のユーザは、電子メールにより、電子証明書Certが匿名性を確保した上で使用可能であることを知ることになる。使用可能であることを知ったユーザは、その電子証明書Certを例えばユーザ装置100の入力装置を用いて選択し、ユーザ装置100に使用要求がなされる。この使用要求により、ユーザ装置100の証明書判別部150は、その電子証明書Certについての初回判定処理を実行する(s33)。この初回判定処理は前述の(s21)と共通する。すなわち、予め各電子証明書Certに関連づけて記憶された証明書使用回数や初回/2回目以降の別を示すフラグを読み取ることで判定可能である。より具体的には、例えばユーザ装置100のメモリや磁気ディスク、あるいは記憶装置180などの記憶部に、電子証明書Cert毎の証明書使用回数や初回/2回目以降の別を示すフラグを記録しておく記憶領域を論理的に設けるなど、既存の技術で実現可能である。
【0106】
証明書使用部170は、証明書判別部150の判定結果が初回使用の場合に、電子証明書Certをカウンタ装置300に送信し(s34a)、2回目以降の使用の場合に、電子証明書Certをサービス提供者装置200に送信する(s34b)。
【0107】
(s34a)でカウンタ装置300が電子証明書Certを受信した後は、図5で示した(s26a)、(s27a)、(s28a)及び(s30)と共通する処理が実行される。
【0108】
(s34b)でサービス提供者装置200が電子証明書Certを受信した後は、図5に示す(s26b)及び(s30)と共通する処理が実行される。
【0109】
図8は図7に示す使用処理シーケンスに対応した計数処理(s9)、(s28a)及び状態管理部340における状態管理処理(s31)の動作の一例を示す図である。
【0110】
共有メモリ600が整数値を格納する2つのメモリi[0]及びi[1]を有する点、第1の計数処理(s9)が(s91)及び(s92)の処理からなり、第2の計数処理(s28a)が(s281)及び(s282)の処理からなる点は、図6の処理シーケンスと共通するので詳細な説明は省略する。
【0111】
この図8の状態管理処理(s31)は、具体的には(s311)及び(s312)の処理からなる。状態管理部340は、予め定められたスケジュールに従って、バッチ処理により、所定の時間毎(例えば30秒毎)に、共有メモリ600の値を参照する(s311)。そして、得られた値がi[0]=1かつi[1]=0を満たすか否かを判定する(s312)。i[0]=1かつi[1]=0の場合は、図6の場合と同様に、当該電子証明書Certを使用するユーザの実効的な匿名性は確保されないため、処理を終了させる。i[0]=1かつi[1]=0でない場合、ユーザ装置100に匿名性が確保可能であることを示す匿名性確保可能データを含む電子メールを送信する(s32)。
【0112】
このように、ユーザ装置100からの問い合わせにかかわらずに予め定められたスケジュールに従って状態管理処理を実行することにより、ユーザは匿名性を確保したまま証明書を使用できるタイミングをほぼリアルタイムに知ることができる。
【0113】
従来の匿名認証方式では、複数のユーザは電子証明書の発行を受け、この電子証明書を各ユーザが使用するモデルであった。この場合、任意の時系列で証明書の発行、使用が起こる際は、その時系列関係によってはユーザの匿名性が実効的に確保できなくなる場合があった。これに対して本実施形態によれば、サービス提供者やユーザから中立のカウンタ装置で仮ブラインド署名の発行部数と電子証明書の使用部数を計数管理することにより、電子証明書の取得と使用において、任意の時系列にて電子証明書の取得と使用が発生し得る運用を考慮しても、ユーザは実効的に匿名性が確保されないタイミングを知ることができ、証明書使用時にユーザの匿名性が剥奪されるという従来の匿名認証方式の運用上の欠点を回避することが可能となる。すなわち、当該認証方式を用いる唯一のユーザでなければ、いかなるタイミングで証明書の発行を受けても、いかなるタイミングで証明書を利用しても、ユーザのプライバシーが確保できる。
【0114】
図4の証明書発行手順、図5や図7の証明書検証手順ともに、サービス提供者装置200が元情報{Zj}の検証及び電子証明書Certの検証を行う場合を例に説明したが、元情報{Zj}の検証と電子証明書Certの検証を行う装置がそれぞれ別途設けられ、各装置がそれぞれ元情報検証及び証明書検証を実行してもよい。また、元情報検証、電子証明書検証とサービスの提供は別の装置が提供してもよいことはもちろんである。
【0115】
また、上記実施形態の図4を用いて説明した匿名認証手法はほんの一例にすぎず、被認証者の属性情報を提供せずに電子証明書の認証を行ういかなる匿名認証方式にも本発明を適用可能であることはもちろんである。
【0116】
また、秘密鍵と他の証明書等のデータを同一の記憶装置に格納する例として示したが、秘密鍵は秘密に所有すべく別の記憶装置に格納してもよい。
【0117】
また、ユーザ装置100、サービス提供者装置200及びカウンタ装置300に設けられた記憶装置からプログラムが読み出されることにより、これら各装置100,200及び300が各構成要素110,120,130,140,150,160,170,210,220,230,240,310,320,330,340,350,360等として機能する場合を示したが、これに限定されない。各構成要素110,120,130,140,150,160,170,210,220,230,240,310,320,330,340,350,360等として機能させるため、各装置100,200及び300のコンピュータに指令を与えるプログラムコードを記録した記録媒体を予め作成しておき、この記録媒体から各装置100,200及び300に記録媒体読取装置によりプログラムを読み出すことにより、上記構成要素として各装置100,200及び300を機能させるようにしてもよい。
【0118】
カウンタ装置300は1台のみネットワーク400に接続される例を示したが、これに限定されず、複数のカウンタ装置300が接続されてもよい。
【0119】
図6及び図8に示したカウンタ装置300の初回発行部数、証明書使用部数のカウント手法はほんの一例にすぎない。初回発行部数と証明書使用部数がカウントでき、各部数が一致するか否かを状態管理部340が判定できれば他の手法を適用することもできる。
【0120】
また、異なるメッセージMごとに、別の共有メモリ600を設けて計数することにより、複数のメッセージMについての証明書ごとに匿名性を確保することができる。
【0121】
また、サービス提供者装置200における改ざん不能な演算をサービス提供者装置200の秘密鍵Sspを用いた演算により行い、その改ざん不能な演算結果である関数値{Zj}’の正当性の検証を公開鍵Pspを用いた演算により行う例を示したが、これに限定されない。例えば、サービス提供者装置200とカウンタ装置300の双方が秘密に保持する共通鍵Sを用いた演算をサービス提供者装置200及びカウンタ装置300の双方でそれぞれ行うことにより改ざん不能な演算及び正当性の検証を行ってもよい。
【0122】
また、上記実施形態では証明書の作成処理シーケンスをユーザ装置100、サービス提供者装置200及びカウンタ装置300の3者間で行う場合を示したが、これに限定されない。図10は証明書の作成処理シーケンスをユーザ装置100及びカウンタ装置300の2者間で実行する例を示す。図10に示すように、この処理シーケンスの場合、カウンタ装置300には証明書元情報検証部370が設けられている。この証明書元情報検証部370は図4の証明書元情報検証部210と共通する処理を実行する。また、図4の例とは異なり、カウンタ装置300は検証結果検証部310として機能する必要はなく、ユーザ装置100は検証結果送信部120として機能する必要はなく、サービス提供者装置200は証明書元情報検証部210及び検証結果作成部220として機能する必要はない。
【0123】
図10のシーケンス例では、ユーザ装置100の証明書元情報作成部110は関数値{Zj}をカウンタ装置300の証明書元情報検証部370に送信する(s1’)。証明書元情報検証部370は、任意のR個のZパラメータの開示をユーザ装置100に要求する(s2’)。ユーザ装置100の証明書元情報作成部110は要求のあったZk(1≦k≦R)についてのZパラメータを証明書元情報検証部370に送信する(s3’)。証明書元情報検証部370は、受信したZパラメータに基づき前述の式(12)で示される値Zkを計算し、既に受信しているZjと一致するか否かを検証する(s4’)。検証に成功した場合、検証結果の作成、送信及び検証を行うことなく仮ブラインド署名pre−SIGCを作成する処理(s8)に進む。その後の(s9)〜(s12)の処理シーケンスは図4と共通する。なお、図10に示すユーザ装置100とカウンタ装置300との間の証明書作成処理シーケンスは、ユーザ装置100とサービス提供者装置200との間の証明書作成処理シーケンスに置換可能である。
【0124】
また、図10の例では証明書の作成処理シーケンスのみユーザ装置200とカウンタ装置300との間の2者間で実行する例を示したが、これに限定されない。証明書使用処理シーケンスも含めてユーザ装置200とカウンタ装置300との間の2者間で実行してもよい。この場合、カウンタ装置300の主体はサービス提供者となり、カウンタ装置300とサービス提供者装置200と同一装置となる。
【0125】
図11は2者間の証明書利用シーケンスの一例を示す図である。使用される証明書が初回使用と判別された場合の(s21)、(s22a)、(s23a)、(s24a)の処理は図5と共通する。図5と異なるのは、証明書使用部170の処理シーケンスからである。証明書使用部170は、初回使用、2回目以降の使用ともに、カウンタ装置300に証明書Certを送信する。カウンタ装置300の証明書検証部350は、図5の(s26a)と同様に式(15)により証明書Certの検証を行う(s26a’)。検証に成功した場合、証明書Certが初回使用の場合に限り、第2の計数部360における計数処理(s28a)を実行した上で、サービス管理部380はユーザ装置100にサービスを提供する(s30’)。検証に成功した場合であって証明書Certが2回目以降の使用の場合には、第2の計数部360における計数処理を実行することなくサービス管理部380はユーザ装置100にサービスを提供する(s30’)。
【0126】
なお、図11は図5の証明書使用処理の変形例を示したが、図7に示す処理シーケンスもユーザ装置100とカウンタ装置300との2者間で実行することができる。この場合、図7に示す(s34b)の処理は、カウンタ装置300へ証明書Certを送信処理に置換される。
【0127】
【発明の効果】
以上詳述したように本発明によれば、匿名性が実効的に確保されるタイミングを、新規に証明書を使用するユーザへ知らしめることができる。
【図面の簡単な説明】
【図1】匿名認証方式の仕組みの概念図。
【図2】匿名認証方式の問題点を説明するための図。
【図3】本発明の一実施形態に係るサービス提供方法が適用されるサービス提供システムの全体構成を示す図。
【図4】同実施形態に係る証明書の作成処理シーケンスを示す図。
【図5】同実施形態に係る証明書の使用処理シーケンスの一例を示す図。
【図6】同実施形態に係る計数処理、及び状態管理処理の動作の一例を示す図。
【図7】同実施形態に係る証明書の使用処理シーケンスの別の一例を示す図。
【図8】同実施形態に係る計数処理、及び状態管理処理の動作の一例を示す図。
【図9】同実施形態に係る計数処理の遷移の一例を示す図。
【図10】同実施形態の証明書の作成処理シーケンスを2者間で実行する変形例を示す図。
【図11】同実施形態の証明書の使用処理シーケンスを2者間で実行する変形例を示す図。
【符号の説明】
100…ユーザ装置、110…証明書元情報作成部、120…検証結果送信部、130…署名抽出部、140…証明書作成部、150…証明書判別部、160…状態取得部、170…証明書使用部、180…記憶装置、200…サービス提供者装置、210…証明書元情報検証部、220…検証結果作成部、230…証明書検証部、240…サービス管理部、300…カウンタ装置、310…検証結果検証部、320…署名元情報作成部、330…第1の計数部、340…状態管理部、350…証明書検証部、360…第2の計数部
【発明の属する技術分野】
本発明は、ユーザの匿名性を確保したままユーザが保有する情報を認証する匿名認証を利用したサービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体に関する。
【0002】
【従来の技術】
被認証主体であるホスト(計算機端末)やユーザを認証するために用いられる電子的な証明書の枠組みとして、「公開鍵証明書」、「属性証明書」、「権利証明書」などが提案、運用されている(非特許文献1,非特許文献3を参照)。これらの証明書を利用した認証は、現在広く普及しているIDやパスワードを用いた認証に比較して、ユーザのなりすましやネットワーク上の盗聴などの不正な攻撃に対して強い。従って、医療分野や電子自治体などの外部からの不正な攻撃の排除が強く求められる分野への応用に適しているといえる。
【0003】
しかしながら、上記のような認証方法は、ユーザ、すなわち電子証明書の所有者のプライバシーを考慮したものではなく、証明書からその所有者であるユーザを特定できるものであった。直接ユーザの個人情報が知られないにしても、電子証明書から個人情報を間接的に追跡し得た。
【0004】
これに対して、近年、ユーザのプライバシーの保護を考慮し、電子証明書からはユーザが誰かを特定できず、ユーザの有する権利のみが確認できるような認証方法が提案されている(非特許文献4を参照)。この方法では、ユーザの個人情報、権利、属性などを保証するその方法独自の電子証明書を使用し、この証明書を発行する主体(以下、発行者と呼ぶ)と、証明書の正当性を確認してサービスを提供する主体(以下、検証者と呼ぶ)を明確に分離させ、両者が結託しないという前提の下にユーザのプライバシーを確保するものである。発行者は、予めユーザの個人情報、権利、属性などの情報を取得し、審査の上でユーザへ当該方法独自の電子証明書を発行する。一方、電子証明書の検証者は、ユーザから提示された匿名の電子証明書を検証することで、ユーザが誰かを知らなくても、すなわちユーザの個人情報、権利、属性などの情報を知らなくても、電子証明書の正当性を確認することでユーザにサービスを提供する。
【0005】
これに対して、ユーザのプライバシーをより強く保護するものとして、暗号理論を応用した特許文献1,2,3、非特許文献5に記載された方法がある。この方法では、証明書の検証者だけでなく、発行者に対しても、証明書とその所有者であるユーザの関連づけを暗号理論上困難にしている。また、この方法では、ユーザの個人情報、権利、属性などの情報を記憶している証明書の発行者が同時に証明書の検証者となった場合でも、証明書を検証する段階では、証明書を所有するユーザが誰なのか知り得ないという、一見相反する事情を両立させている。以下ではこの方法を「匿名認証方式」と呼ぶ。
【0006】
匿名認証方式では、証明書を発行する発行者装置と、証明書を検証する検証者装置はそれぞれを異なる主体が保有してもよく、また1つの同じ主体が2つの装置を保有してもよい。
【0007】
証明書の発行者は、ユーザの個人情報、権利、属性などを知っており、証明内容(ユーザの個人情報、権利、属性など)に対してブラインド署名によって証明内容を保証した証明書をユーザに発行する。ブラインド署名の詳細は非特許文献2に記載されている。
【0008】
匿名認証方式による匿名性の確保の具体的な仕組みを説明する。
【0009】
なお、前提として、証明書発行前に、予め、郵送等のオフライン、あるいはユーザ装置と発行者装置、検証者装置との間のオンライン処理により、ユーザの個人情報などのメッセージMがユーザから発行者装置に提供されている。
【0010】
まず、ユーザ装置は、乱数rj,wjおよび公開鍵Puと秘密鍵Suのペアを生成し、以下の式(1)で示される関数値Zjを演算し、発行者装置にこの関数値Zjを送信する。
【0011】
Zj=Psp(rj)gB(gA(Pu||wj)||M) for 1≦j≦N …(1)
ここで、“||”はビット結合を、gA(・),gB(・)は公開されている衝突困難な一方向ハッシュ関数を表す。これら衝突困難な一方向ハッシュ関数gA(・)とgB(・)は、ともに同じ関数(同じアルゴリズム)であってもよい。また、Pspは発行者が広く公開している公開鍵を、Mは特定のメッセージをそれぞれ表す。
【0012】
なお、ここでの公開鍵Puは証明書の発行段階では誰にも公開しない。
【0013】
発行者装置は、受信したZjのうち、任意のR個を決定し、これに対応した{Zk}(1≦k≦R)に含まれ、Zkを算出するのに必要な乱数rk、関数値gA(Pu||wk)からなるZパラメータの開示をすべての値kについてユーザ装置に要求する。
【0014】
ユーザ装置は、発行者装置から要求のあったZk(1≦k≦R)についてのZパラメータ(乱数rk及び関数値gA(Pu||wk))を送信する。
【0015】
発行者装置は、Zパラメータに基づき以下の式(2)で示される値Zkを計算し、前記受信したZjと一致するか否かを検証する。
【0016】
Zk=Psp(rk)gB(gA(Pu||wk)||M) for 1≦k≦R …(2)
一致していない場合には発行できないと判定し、証明書発行手順を終了する。一致している場合には、開示されていないZi(1≦i≦N−R)について以下の式(3)に示すZiへの仮ブラインド署名を実行する。
【0017】
pre−SIGSP=Ssp(ΠiZi) …(3)
ここで、Sspは発行者装置の秘密鍵を表す。また、“Πi”は、すべてのiについて乗算(ここではZ1×Z2×…×ZN−R)することを表す。
【0018】
得られた仮ブラインド署名pre−SIGSPはユーザ装置に送信される。
【0019】
ユーザ装置は、受信した仮ブラインド署名pre−SIGSPを利用して以下の式(4)に示される計算を実行するブラインド署名の抽出処理を行う。
【0020】
SIGSP=pre−SIGSP/Πiri for all i (Πiri=r1×r2×…×rN−R) …(4)
また、以下をひとまとまりとして証明書として保存する。
【0021】
Cert=[M,{wi},Pu,SIGSP] for all i
ここで、{wi}={w1,w2,…,wN−R}である。
【0022】
以上により証明書の発行処理が終了する。
【0023】
次に、証明書の使用手順を説明する。
ユーザ装置は電子証明書Certを検証者装置に送信する。
【0024】
検証者装置は、ユーザ装置から受信したCertに含まれるM,{wi},Puを用いて以下の式(5)
Yi=gB(gA(Pu||wi)||M) for 1≦i≦N …(5)
を計算した後、以下の式(6)が成立するか否かを判定する。
【0025】
ΠiYi=Psp(SIGSP) …(6)
成立すると判定される場合には、ユーザが発行者装置から証明書を発行された者であることが証明されるため、検証者装置からユーザ装置に各種サービスの提供がなされる。成立しないと判定される場合には、ユーザが発行者装置から証明書を発行された者であることが証明されないため、ユーザ装置にサービスが提供されることなく終了する。
【0026】
図1はこの匿名認証方式の仕組みの概念図である。図1に示すように、ユーザA、ユーザBおよびユーザCがそれぞれ電子証明書Cert of A、Cert of B、Cert of Cを使用する場合、証明書の発行時には、ユーザの個人情報とユーザに発行したブラインド署名の元情報としての仮ブラインド署名Ssp(ΠiZi)を関連づけて記憶することができる。これは、仮ブラインド署名Ssp(ΠiZi)の生成に必要なユーザから提供されるZiやZi算出に必要なZパラメータには、ユーザ固有の情報が含まれているからである。
【0027】
しかしながら、証明書の検証時においては、上記電子証明書Cert of A、Cert of B、Cert of Cとユーザの個人情報の対応づけが無いため、戻ってくる証明書はいずれも区別はつくが、初めて見るデータということとなる。
【0028】
このように、この匿名認証方式の注目すべき点は、証明書の発行段階で誰にどんな証明書を発行したかを発行者であるサービス提供者が記憶していたとしても(発行者が証明書の発行時に記憶できるデータはSsp(ΠiZi)である)、証明書が使用され発行者自身のもとへ戻ってきた際には、この証明書(証明書が戻ってきた際はSIGSPというデータになっている)が誰に発行したものかを知り得ないことである。ただし、証明書には発行者自身による仮ブラインド署名が含まれているため、発行者はこの証明書は自分が発行したものであることを認めざるを得ない。
【0029】
以上説明したように、この匿名認証方式によれば、ユーザへの証明書の発行とその検証を例えばサービス提供者などの同一の主体が実施しても、ユーザのプライバシーが守られるという利点を有する。例えばサービス提供者のどの会員がサービスを利用したかをサービス提供者は知り得ず、自身の会員であることを確認できる。
【0030】
【特許文献1】
特開2000−231331号公報
【特許文献2】
特開2001−134182号公報
【特許文献3】
特開2001−188757号公報
【非特許文献1】
小松文子著「PKIハンドブック」、株式会社ソフト・リサーチ・センター、2000年11月25日発行、p.41−68「第3章 3.1 公開鍵証明書」、p.82−83「3.3.1属性証明書」
【非特許文献2】
岡本龍明、山本博資著、「現代暗号」、産業図書、p.184、1998年6月30日発行
【非特許文献3】
Carl Ellison著、「SPKI Certificate Theory, RFC2693 3.3 SPKI Certificates, 6.1.5 5−tuple Defined」、〔online〕、1999年9月掲載、〔2003年2月27日検索〕、インターネット<http://www.faqs.org/rfcs/rfc2693.html>
【非特許文献4】
斎藤孝道、梅澤健太郎、奥野博著、「プライバシを重視するアクセス制御システムの一方式」、電子情報通信学会誌、D−I, Vol.J84−D−I, no.11, p.1553−1562, 2001年11月
【非特許文献5】
佐藤直之、鈴木英明著、「匿名のまま権利行使を可能とした認証方式」、情報処理学会論文誌、Vol.41, No.8, p.2138−2147, 2000年8月
【0031】
【発明が解決しようとする課題】
以上説明したように、匿名認証方式とは、「予めユーザを特定できる情報を証明書の発行者が知っていても、発行者がユーザへ発行した証明書が発行者自身へ戻ってきたとき、その証明書がどのユーザのものであるかを識別できない」という認証方式の枠組みを提供するものである。
【0032】
従って、証明書の発行と検証を同一の主体が実施するような場合にも、ユーザの匿名性が維持できるという特徴がある。この特徴を考慮すると、既存のインターネットサービスプロバイダ(ISP)が実施しているように、ユーザをその会員として登録し、サービスの提供を行うようなサービス提供者に対しても、匿名認証方式を適用することができるといえる。この場合、例えばサービス提供者は、ユーザを会員として登録する際に証明書を発行しておき、ユーザの要求に応じてサービスを提供する際には、ユーザから提示される証明書を検証することで認証するといった運用が考えられる。
【0033】
ところが、上記のような運用においては、証明書の発行および検証はユーザの要求に応じて実施されるものであるため、証明書の発行および検証は任意の時系列で実施されることが予想される。任意の時系列で証明書の発行と検証が実施されるとき、同じ証明内容(即ちユーザ情報)を保有するユーザであっても、匿名性が実効的に保証されなくなるユーザが存在するという状況が発生しうる。
【0034】
図2はこの匿名認証方式の問題点を説明するための図である。以下では、証明書の発行および検証をともに「サービス提供者」が実施し、ユーザはすべて同じ証明内容(即ちユーザ情報)を保有することを前提としている。以下ではサービス提供者、ユーザA、B及びCがやりとりする記載としているが、実質的にはネットワークを介したサービス提供サーバと各ユーザ装置間のデータ通信により実現される。
【0035】
まず、サービス提供者がユーザAに証明書を発行し(s501)、ユーザAはブラインド署名の抽出を実行する(s501a)。具体的には、受信した仮ブラインド署名を乱数rAで除算する。なお、実際にはサービス提供者が発行するのは仮ブラインド署名pre−SIGSPであって、この仮ブラインド署名pre−SIGSPからユーザ側がブラインド署名SIGSPを抽出し、このブラインド署名SIGSPを証明の対象とするメッセージM,乱数wk,公開鍵Puに付加して電子証明書Certが出来上がる。
【0036】
次に、サービス提供者はユーザBに証明書を発行し(s502)、ユーザBは前述したブラインド署名の抽出を実行する(s502a)。具体的には、受信した仮ブラインド署名を乱数rBで除算する。次に、ユーザAが証明書を使用する、すなわち、サービス提供者に対して電子証明書Cert of Aを送信する。サービス提供者から見ると、この証明書がユーザAのものである確率は1/2、ユーザBのものである確率は1/2となる。このとき、ユーザAは、証明書から自分を特定されないため、匿名性は確保できる。そして、次にユーザBが証明書を使用する。この場合も、ユーザAの場合と同様に匿名性を確保できる。ところが、次でサービス提供者がユーザCに証明書を発行し(s521)、次に他のユーザに証明書を発行する前にユーザCが証明書を使用すると(s522)、サービス提供者は、ユーザCから受信した証明書が確率1でユーザCのものと分かってしまう。少なくとも、ユーザAとユーザBは既に証明書を使用したことをサービス提供者は記憶しているからである。
【0037】
上記の説明からも明らかなように、ユーザにとっては、自分以外のユーザが複数存在していたとしても自分と識別不能な対象、すなわち他のユーザが少なくとも1人はいない限り、自分の匿名性をサービス提供者に対して確保できない。この問題点は自分と識別不能なユーザが1人もいないことに起因する。逆に、ユーザAおよびユーザBは、それぞれ互いが自分と識別不能なユーザとなっているため、サービス提供者に対して匿名性を確保できるのである。
【0038】
ユーザが1枚の証明書の発行を受け、この1枚の証明書を使用するという匿名認証方式のモデルでは、サービス提供者は戻ってくる証明書の枚数から、何人にユーザが証明書を使用しているのかを記憶できる。そして、「証明書を発行したすべてのユーザが既に証明書を使用した」ことを記憶されてしまうと、新たに証明書を発行されるユーザの匿名性は保証されなくなる。
【0039】
本発明は上記課題を解決するためになされたもので、その目的とするところは、匿名性が実効的に確保されるタイミングを、新規に証明書を使用するユーザへ知らしめることができるサービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体を提供することにある。
【0040】
【課題を解決するための手段】
本発明の骨子は以下の通りである。
【0041】
本発明では、上記課題を解決するため、「匿名認証方式」による証明書を取得したユーザが、証明書を使用しても実効的に匿名性が保証されるタイミングを知るための方法に関する。
【0042】
匿名性保証のタイミングを知るため、証明書を利用するユーザ装置と、当該ユーザの情報を登録しユーザへサービスを提供するサービス提供者装置の他に、証明書の内容を保証し個々のメッセージMに対応する署名の発行枚数と証明書の使用枚数を計数するカウンタ装置をネットワークで接続する。
【0043】
ユーザ装置がサービス提供者装置からメッセージMの証明書を取得する際、署名の発行はサービス提供者装置ではなくカウンタ装置に依頼するようにする。このときカウンタ装置は「メッセージMに対する発行済み証明書カウンタ」A2を1つカウントアップする。また、ユーザ装置がメッセージMの証明書を使用してサービス提供者装置のサービスを利用する際は、証明書の検証をカウンタ装置へ依頼するようにする。このとき、カウンタ装置は「メッセージMに対する使用済み証明書カウンタ」A1を1つカウントアップする。
【0044】
ユーザは、カウンタA1及びA2のインクリメント/デクリメントの時系列関係によって、証明書を使用してもユーザの匿名性を実効的に確保できるかどうかを知ることができる。
【0045】
本発明の一つの観点によれば、以上に示した方法を実現するために、ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いたサービス利用方法であって、証明書発行段階では、証明書管理装置は、ユーザ装置の秘密の乱数群rを用いて作成された前記電子証明書Certの元情報群Z及び前記証明書管理装置の秘密鍵Scに基づき仮ブラインド署名pre−SIGCを生成して前記ユーザ装置に送信し、前記生成された仮ブラインド署名pre−SIGCの発行部数を計数し、前記ユーザ装置は、前記仮ブラインド署名pre−SIGCから前記秘密の乱数群rを用いてブラインド署名SIGCを抽出し、前記ブラインド署名SIGCを含む前記電子証明書Certを作成し記憶装置に格納し、サービス利用段階では、前記ユーザ装置は、前記電子証明書Certが既使用か否かを判定し、前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを前記証明書管理装置から受信し、前記電子証明書Certが既使用と判定された場合には前記電子証明書Certを前記記憶装置から読み出し前記証明書管理装置に送信し、前記電子証明書Certが既使用でないと判定された場合には前記電子証明書Certを前記記憶装置から読み出し検証者装置に送信し、前記証明書管理装置は、前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行うとともに前記電子証明書Certの初回使用部数を計数し、前記検証が成功した場合には、検証成功通知を前記検証者装置に送信し、前記仮ブラインド署名pre−SIGCの発行部数及び前記電子証明書Certの初回使用部数に応じて前記匿名性確保可能データを前記ユーザ装置に送信し、前記検証者装置は、前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行うことを特徴とするサービス利用方法を提供する。
【0046】
また、本発明の別の観点によれば、上記サービス利用方法を実現するためのユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体としても成立する。
【0047】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
【0048】
図3は本発明の一実施形態に係るサービス提供方法が適用されるサービス提供システムの全体構成を示す図である。400はインターネットなどの電子ネットワークを示す。このネットワーク400に、サービスを提供するサービス提供者が使用するサービス提供者装置200、サービスを利用し、認証を受けるユーザの使用する複数のユーザ装置100、及び電子証明書を匿名認証方式により発行し、また電子証明書の発行部数や使用部数を管理するカウンタ装置300が接続されている。匿名認証とは、被認証者であるユーザの属性情報を提供することなく電子証明書の認証を行う方式をいう。発行される電子証明書は、特定の情報とユーザの公開鍵との結びつきを証明する。
【0049】
ユーザ装置100は、証明書元情報作成部110、検証結果送信部120、署名抽出部130、証明書作成部140、証明書判別部150、状態取得部160、証明書使用部170及び記憶装置180とを備える。
【0050】
例えばユーザ装置100に設けられた記憶装置180から読み出されたプログラムがユーザ装置100のCPUなどで実行されることにより、ユーザ装置100が各構成要素110〜170として機能する。
【0051】
証明書元情報作成部110、検証結果送信部120、署名抽出部130及び証明書作成部140は、証明書を作成する段階で以下の機能を有する。
【0052】
証明書元情報作成部110は、公開鍵Puと秘密鍵Suを作成し、秘密鍵Suを秘密に所有する処理を実施する。秘密に所有する処理とは、記憶装置180等に格納して読み出し不能に設定する処理等が該当する。また、証明書元情報作成部110は、後述するカウンタ装置300が広く公開している公開鍵Pcを用いて、証明書の元情報としての関数値{Zj}を生成し、後述するサービス提供者装置200に送信する。検証結果送信部120は、サービス提供者装置200と情報のやりとりを行い、後述する関数値{Zj}及び{Zj}’をカウンタ装置300に送信する。
【0053】
署名抽出部130は、カウンタ装置300から署名の元情報として仮ブラインド署名pre−SIGCを受信し、ブラインド署名SIGCを抽出する。証明書作成部140は、署名抽出部130で抽出した署名SIGCと、証明書元情報作成部110で作成された乱数wj、公開鍵Pu及びメッセージMにより電子証明書Certを作成し、記憶装置180に保存する。メッセージMは、証明内容であるユーザの属性情報からなる。
【0054】
証明書判別部150、状態取得部160及び証明書使用部170は、証明書を使用する段階で以下の機能を有する。
【0055】
証明書判別部150は、証明書が初めての使用か、2回目以降の使用か、すなわち既使用か否かを判別する。状態取得部160は、初めて電子証明書Certを使用する際、この電子証明書Certを使用することで実効的に匿名性が確保できるかどうかを示す状態をカウンタ装置300から取得する。
【0056】
証明書使用部170は、初回の使用か、2回目以降の使用かにより、電子証明書Certの送付先をそれぞれカウンタ装置300及びサービス提供者装置200に設定した上で当該送付先に電子証明書Certを送信する。送付先の設定は、この送付処理の呼出元により判定する。具体的には、初めて電子証明書Certを使用する場合で匿名性を確保することができることをカウンタ装置300から通知された場合には、カウンタ装置300に電子証明書Certを送信する。また、証明書使用部170は、電子証明書Certを2回目以降に使用する場合には、サービス提供者装置200に電子証明書Certを送信する。状態取得部160の動作は、例えばユーザ装置100からカウンタ装置300に問い合わせることにより実行してもよく、逆にカウンタ装置300からユーザ装置100に通知することにより実行してもよい。
【0057】
記憶装置180は、各種電子証明書や鍵などのデータを格納することができる。この記憶装置180は、ユーザ装置100本体に接続された磁気ディスクや光ディスクなどの記憶装置のみならず、例えばカード書込/読取装置とその装置により書込及び読取可能なICカードにより実現されてもよい。
【0058】
サービス提供者装置200は、証明書元情報検証部210、検証結果作成部220、証明書検証部230及びサービス管理部240とを備える。
【0059】
例えばサービス提供者装置200に設けられた記憶装置から読み出されたプログラムがサービス提供者装置200のCPUなどで実行されることにより、サービス提供者装置200が各構成要素210〜240として機能する。
【0060】
証明書元情報検証部210及び検証結果作成部220は、証明書を作成する段階で以下の機能を有する。
【0061】
証明書元情報検証部210は、ユーザ装置100から受信した電子証明書Certの元情報としての関数値{Zj}を検証する。検証結果作成部220は、証明書元情報検証部210で検証された関数値{Zj}に、例えばサービス提供者装置200の秘密鍵Sspを用いた署名を付与することで、改ざん不能な形式である関数値{Zj}’を生成し、関数値{Zj}とともに検証結果としてユーザ装置100に送信する。なお、関数値{Zj}は送信しなくてもよい。
【0062】
証明書検証部230及びサービス管理部240は、証明書を使用する段階で以下の機能を有する。
【0063】
証明書検証部230は、ユーザ装置100から電子証明書Certを受信し、その電子証明書Certを検証する。サービス管理部240は、カウンタ装置300からの電子証明書Certの検証成功通知、もしくは証明書検証部230におけるユーザ装置100からの証明書の検証成功を得た場合に、ユーザ装置100に対してサービスを提供したり、サービスを管理する。
【0064】
カウンタ装置300は、検証結果検証部310、署名元情報作成部320、第1の計数部330、状態管理部340、証明書検証部350及び第2の計数部360とを備える。
【0065】
例えばカウンタ装置300に設けられた記憶装置から読み出されたプログラムがカウンタ装置300のCPUなどで実行されることにより、カウンタ装置300が各構成要素310〜360として機能する。
【0066】
検証結果検証部310、署名元情報作成部320及び第1の計数部330は、証明書を作成する段階で以下の機能を有する。
【0067】
検証結果検証部310は、ユーザ装置100から受信した関数値{Zj}’の検証を行う。署名元情報作成部320は、検証結果検証部310における検証が成功した場合に、関数値{Zj}を用いてカウンタ装置300の秘密鍵Scを用いて署名の元情報としての仮ブラインド署名pre−SIGCを作成し、ユーザ装置100に送信する。第1の計数部330は、仮ブラインド署名pre−SIGCを生成あるいは送信する毎にメッセージMに対して発行した仮ブラインド署名pre−SIGCの初回使用部数を計数する。
【0068】
状態管理部340、証明書検証部350及び第2の計数部360は、証明書を使用する段階で以下の機能を有する。
【0069】
状態管理部340は、あるメッセージMを他の証明書と共有する任意の証明書が匿名性を失うことなく使用可能か否かの状態を把握してユーザ装置100に通知する。証明書検証部350は、ユーザ装置100から受信した証明書を検証し、検証が成功すればサービス提供者装置200に証明書の検証成功を通知する。第2の計数部360は、証明書検証部350で証明書の検証が成功した場合に、メッセージMに対する証明書の使用部数を計数及び管理する。
【0070】
次に、図4を用いて証明書の作成処理シーケンスを説明する。
【0071】
なお、電子証明書作成前に、予め、郵送等のオフライン、あるいはユーザ装置100とサービス提供者装置200との間のオンライン処理により、ユーザの個人情報などのメッセージMがユーザからサービス提供者に提供されている。
【0072】
まず、ユーザ装置100の証明書元情報作成部110は、乱数rj,wjおよび公開鍵Puと秘密鍵Suのペアを生成し、以下の式(11)で示される関数値Zjを演算し、電子証明書Certの元情報として{Zj}をサービス提供者装置200に送信する(s1)。
【0073】
Zj=Pc(rj)gB(gA(Pu||wj)||M) for 1≦j≦N …(11)
ここで、“||”はビット結合を、gA(・),gB(・)は公開されている衝突困難な一方向ハッシュ関数を表す。jは1≦j≦Nのすべての自然数である。これら衝突困難な一方向ハッシュ関数gA(・)とgB(・)は、ともに同じ関数(同じアルゴリズム)であってもよい。また、Pcはカウンタ装置300が広く公開している公開鍵を、Mは特定のメッセージをそれぞれ表す。
【0074】
なお、ここでの公開鍵Puは証明書の発行段階では誰にも公開しない。
【0075】
サービス提供者装置200の証明書元情報検証部210は、受信した{Zj}のうち、任意のR個を決定し、これに対応した{Zk}(1≦k≦R)に含まれ、Zkを算出するのに必要な乱数rk、関数値gA(Pu||wk)からなるZパラメータの開示をすべての値kについてユーザ装置100に要求する(s2)。
【0076】
ユーザ装置100の証明書元情報作成部110は、要求のあったZk(1≦k≦R)についてのZパラメータ(乱数rk及び関数値gA(Pu||wk))をサービス提供者装置200に送信する(s3)。
【0077】
サービス提供者装置200の証明書元情報検証部210は、Zパラメータに基づき以下の式(12)で示される値Zkを計算し、前記受信したZjと一致するか否かを検証する(s4)。
【0078】
Zk=Pc(rk)gB(gA(Pu||wk)||M) for 1≦k≦R …(12)
一致していない場合には証明書を発行できないと判定し、証明書発行手順を終了する。一致している場合には、検証に成功したと判定する。検証が成功した場合、検証結果作成部220は、関数値{Zj}の集合のうち、検証の対象としなかった部分集合{Zi}(1≦i≦N−R)に対して改ざん不能な演算を実施して関数値{Zi}’を作成して関数値{Zi}とともにユーザ装置100に送信する(s5)。ここで、改ざん不能な演算とは、例えばサービス提供者装置200の秘密鍵Sspを用いた署名を関数値{Zi}に付加する演算等が該当する。なお、関数値{Zi}は既にユーザ装置100にあるため送信しなくてもよい。もちろん、検証の対象とした関数値{Zk}(1≦k≦R)についても改ざん不能な演算及びデータ送信を実施してもよい。
【0079】
ユーザ装置100の検証結果送信部120は、関数値{Zi}及び{Zi}’を受信すると、これらをカウンタ装置300に送信する(s6)。カウンタ装置300の検証結果検証部310は、受信した関数値{Zi}’を検証する(s7)。検証は、例えば関数値{Zi}及び{Zi}’に基づきサービス提供者装置200の公開鍵Pspを用いた演算を行う。これにより、改ざんの有無を確認できる。検証に成功すると、カウンタ装置300の署名元情報作成部320は、関数値{Zi}に対する仮ブラインド署名pre−SIGCを作成する(s8)。具体的には、Zパラメータが開示されていないZi(1≦i≦N−R)について以下の式(13)に示すZiへの仮ブラインド署名を実行する。
【0080】
pre−SIGC=Sc(ΠiZi) …(13)
ここで、Scはカウンタ装置300の秘密鍵を表す。また、“Πi”は、すべてのiについて乗算(ここではZ1×Z2×…×ZN−R)することを表す。
【0081】
仮ブラインド署名pre−SIGCが作成されると、カウンタ装置300の第1の計数部330は、「発行済み署名が1部増加」したことを示す後述の共有メモリ600の所定の値をインクリメントする(s9)。また、仮ブラインド署名pre−SIGCが作成されると、署名元情報作成部320は、仮ブラインド署名pre−SIGCをユーザ装置100に送信する(s10)。ユーザ装置100の署名抽出部130は、受信した仮ブラインド署名pre−SIGCから以下の式(14)に示される計算を実行するブラインド署名の抽出処理を行う(s11)。
【0082】
SIGC=pre−SIGC/Πiri for all i (Πiri=r1×r2×…×rN−R) …(14)
また、署名抽出部130は、以下をひとまとまりとして電子証明書Certとして記憶装置180に保存する(s12)。
【0083】
Cert=[M,{wi},Pu,SIGC] for all i
ここで、{wi}={w1,w2,…,wN−R}である。
【0084】
以上により証明書の発行処理が終了する。
【0085】
次に、図5を用いて証明書の使用処理シーケンスの一例を説明する。
まず、ユーザ装置100の証明書判別部150は、証明書を使用する際に、使用する電子証明書Certが初回に使用されるものか否かを判定する(s21)。この初回判定処理は、予め各電子証明書Certに関連づけて記憶された証明書使用回数や初回/2回目以降の別を示すフラグを読み取ることで判定可能である。より具体的には、例えばユーザ装置100のメモリや磁気ディスク、あるいは記憶装置180などの記憶部に、電子証明書Cert毎の証明書使用回数や初回/2回目以降の別(既使用か否か)を示すフラグを記録しておく記憶領域を論理的に設けるなど、既存の技術で実現可能である。この判定結果により、初回の場合には状態取得部160による状態取得処理、初回ではない2回目以降の場合には証明書使用部170による証明書使用処理に処理が分岐する。なお、この(s21)の処理は、必ずしも(s12)証明書格納処理の直後に実行される必要はなく、(s12)から所定の時間経過した所定の時刻(例えば毎日12:00)に実施されるようにしてもよい。
【0086】
記憶装置180で電子証明書Certの使用が初回であると判定された場合、状態取得部160はカウンタ装置300に、判定対象の電子証明書Certを使用しても匿名性が失われないか否かを問い合わせる(s22a)。カウンタ装置300の状態管理部340は、問い合わせのあった電子証明書Certが匿名性を確保できるか否かを判定する匿名性判定処理を実行し(s23a)、確保できると判定した場合、匿名性が確保可能であることを示す匿名性確保可能データをユーザ装置100に送信する(s24a)。匿名性が確保できないと判定した場合には、状態管理部340は匿名性が確保不能であることを示す匿名性確保不能データをユーザ装置100に送信する。この場合はユーザ装置100は電子証明書Certを使用する処理を行わない。匿名性判定処理の詳細は後述する。
【0087】
匿名性確保可能データを受信したユーザ装置100の証明書使用部170は、その受信データから、問い合わせの電子証明書Certの使用が初回の使用であると判定し、その電子証明書Certをカウンタ装置300に送信し、検証を要求する(s25a)。カウンタ装置300の証明書検証部350は、ユーザ装置100から受信した電子証明書Certの検証を行う(s26a)。この検証は、具体的には電子証明書Certに含まれるM,{wi},Puを用いて以下の式(15)
Yi=gB(gA(Pu||wi)||M) for 1≦i≦N …(15)
を計算した後、以下の式(16)が成立するか否かを判定する。
【0088】
ΠiYi=Pc(SIGC) …(16)
成立すると判定した場合、検証に成功したものと判断され、証明書検証部350はサービス提供者装置200に検証成功通知を送信する(s27a)。また、検証に成功した場合、第2の計数部360は「使用済み証明書が1部増加」したことを示す後述の共有メモリ600の所定の値をインクリメントする(s28a)。
【0089】
検証成功通知を受信したサービス提供者装置200のサービス管理部240は、ユーザ装置100にサービスを提供する(s30)。
【0090】
(s21)で電子証明書Certの使用が2回目以降と判定された場合、証明書使用部170は、対象とする電子証明書Certをサービス提供者装置200に送信する(s25b)。サービス提供者装置200の証明書検証部230は、受信した電子証明書Certの検証を行う(s26b)。この検証は、前述したカウンタ装置300の証明書検証部350における(s26a)の処理と共通する。すなわち、証明書検証部230は、電子証明書Certに含まれるM,{wi},Puを用いて前述の式(15)に示す関数値Yiを計算した後、前述の式(16)が成立するか否かを判定する。
【0091】
式(16)が成立すると判定した場合、検証に成功したものと判断される。検証に成功した場合、サービス提供者装置200のサービス管理部240は、ユーザ装置100にサービスを提供する(s30)。検証に成功しないとユーザ装置100にサービスは提供されない。
【0092】
なお、上述した説明では、カウンタ装置300は1つのみを示したが、複数存在していてもよい。カウンタ装置300が複数存在する場合、電子証明書Certの作成段階で、カウンタ装置300を識別する識別子などのカウンタ装置識別情報Icを電子証明書Certに含めておくのが望ましい。この場合、Cert=[M,{wi},Pu,SIGC,Ic]となる。このカウンタ装置識別情報Icは、いかなる段階でカウンタ装置300から取得してもよいが、例えば(s10)のpre−SIGCとともに取得しておけばよい。この場合、前述の(s25b)の段階で、このカウンタ装置識別情報Icを電子証明書Certに含めて送信することで、サービス提供者装置200はどの公開鍵Pcを用いてΠiYi=Pc(SIGC)で示される式(16)の成立性の判定を行えばよいのかを、受信したカウンタ装置識別情報Icに基づき知ることができる。
【0093】
図6は、第1の計数部330及び第2の計数部360における計数処理(s9)、(s28a)及び状態管理部340における状態管理処理(s23a)の動作の一例を示す図である。共有メモリ600は、整数値を格納する2つのメモリi[0]及びi[1]を有する。
【0094】
第1の計数部330における第1の計数処理(s9)の詳細は次の通りである。署名元情報作成部320から第1の計数処理指令を受ける毎に、第1の計数部330は(s91)及び(s92)の処理を実行する。まず、第1の計数部330はメモリi[0]の値をメモリi[1]にコピーする(s91)。次に、第1の計数部330はメモリi[0]をインクリメントする(s92)。
【0095】
第2の計数部360における第2の計数処理(s28a)の詳細は次の通りである。証明書検証部350から第2の計数処理指令を受ける毎に、第2の計数部360は(s281)及び(s282)の処理を実行する。まず、第2の計数部360はメモリi[0]の値をメモリi[1]にコピーする(s281)。次に、第2の計数部360はメモリi[0]をデクリメントする(s282)。
【0096】
状態管理処理(s23a)は、具体的には(s231)及び(s232)の処理からなる。まず、ユーザ装置100から(s22a)の問い合わせを受信した共有メモリ600のメモリi[0]及びi[1]の値を参照する(s231)。そして、得られた値がi[0]=1かつi[1]=0を満たすか否かを判定する(s232)。i[0]=1かつi[1]=0の場合、新たに電子証明書Certを取得したユーザが1人しかいないことを意味する。すなわち、特定のメッセージMに対する仮ブラインド署名pre−SIGCの発行数が電子証明書Certの使用済み数よりも一枚しか多くない。この場合、当該電子証明書Certを使用するユーザの実効的な匿名性は確保されないため、ユーザ装置100に匿名性が確保不能であることを示す匿名性確保不能データを送信する。i[0]=1かつi[1]=0でない場合、ユーザ装置100に匿名性が確保可能であることを示す匿名性確保可能データを送信する(s24a)。
【0097】
このように、メモリの値がi[0]=1かつi[1]=0であるか否かで処理を分岐することで、匿名性確保の可否に対応した状態通知が可能となる。
【0098】
図9は上記共有メモリ600の値の遷移の一例を示す図である。
【0099】
図9に示すように、初期状態では、i[0]及びi[1]ともに値が0である。署名発行によりi[0]がインクリメントされた後にすぐに証明書が使用しようとすると、i[0]=1、i[1]=0となっており、特定のメッセージMに対する仮ブラインド署名pre−SIGCの発行数が電子証明書Certの使用済み数より1枚しか多くないため、匿名性が確保されない。従って、この状態では電子証明書Certの使用はできないように匿名性確保不能データを送信する。
【0100】
その後、仮ブラインド署名pre−SIGCが3回連続して発行され、それに応じてi[0]及びi[1]の値がそれぞれ(1,0)、(2,1)、(3,2)になる。さらに電子証明書Certを使用していくと、3回の使用は匿名性が確保されるが、3回使用した段階でi[0]及びi[1]の値が(0,1)となり、さらにその次に署名発行することによりi[0]及びi[1]の値が(1,0)となり、次の証明書利用では匿名性が確保されなくなる。
【0101】
次に、図7を用いて証明書の使用処理シーケンスの別の一例を説明する。
【0102】
図5の例の場合、ユーザ装置100からカウンタ装置300に問い合わせることにより匿名性確保の可否を示す通知がユーザ装置100になされる場合を示したが、図7の例の場合、証明書の匿名性が確保される段階になった段階で、カウンタ装置300からすべてのユーザ装置100に匿名性確保の通知を行う例を示す。なお、このシーケンスでは、ユーザ装置100を状態取得部160として機能させる必要はない。
【0103】
図7の使用処理シーケンスの場合、予めユーザ装置100の所有者であるユーザが、ユーザ装置100にメールアドレスを通知しておく。もちろん、メールアドレス以外の通知先を通知しておいてもよい。
【0104】
カウンタ装置300の状態管理部340は、電子証明書Certが匿名性を確保できるか否かを判定する匿名性判定処理を実行する(s31)。この匿名性判定処理は、前述の(s23a)と共通するが、異なるのは、ユーザ装置100からの問い合わせの有無にかかわらず実行されることである。匿名性が確保できると判定された場合には、匿名性確保可能データを含む電子メールをユーザ装置100に送信する(s32)。
【0105】
電子メールを受信したユーザ装置100のユーザは、電子メールにより、電子証明書Certが匿名性を確保した上で使用可能であることを知ることになる。使用可能であることを知ったユーザは、その電子証明書Certを例えばユーザ装置100の入力装置を用いて選択し、ユーザ装置100に使用要求がなされる。この使用要求により、ユーザ装置100の証明書判別部150は、その電子証明書Certについての初回判定処理を実行する(s33)。この初回判定処理は前述の(s21)と共通する。すなわち、予め各電子証明書Certに関連づけて記憶された証明書使用回数や初回/2回目以降の別を示すフラグを読み取ることで判定可能である。より具体的には、例えばユーザ装置100のメモリや磁気ディスク、あるいは記憶装置180などの記憶部に、電子証明書Cert毎の証明書使用回数や初回/2回目以降の別を示すフラグを記録しておく記憶領域を論理的に設けるなど、既存の技術で実現可能である。
【0106】
証明書使用部170は、証明書判別部150の判定結果が初回使用の場合に、電子証明書Certをカウンタ装置300に送信し(s34a)、2回目以降の使用の場合に、電子証明書Certをサービス提供者装置200に送信する(s34b)。
【0107】
(s34a)でカウンタ装置300が電子証明書Certを受信した後は、図5で示した(s26a)、(s27a)、(s28a)及び(s30)と共通する処理が実行される。
【0108】
(s34b)でサービス提供者装置200が電子証明書Certを受信した後は、図5に示す(s26b)及び(s30)と共通する処理が実行される。
【0109】
図8は図7に示す使用処理シーケンスに対応した計数処理(s9)、(s28a)及び状態管理部340における状態管理処理(s31)の動作の一例を示す図である。
【0110】
共有メモリ600が整数値を格納する2つのメモリi[0]及びi[1]を有する点、第1の計数処理(s9)が(s91)及び(s92)の処理からなり、第2の計数処理(s28a)が(s281)及び(s282)の処理からなる点は、図6の処理シーケンスと共通するので詳細な説明は省略する。
【0111】
この図8の状態管理処理(s31)は、具体的には(s311)及び(s312)の処理からなる。状態管理部340は、予め定められたスケジュールに従って、バッチ処理により、所定の時間毎(例えば30秒毎)に、共有メモリ600の値を参照する(s311)。そして、得られた値がi[0]=1かつi[1]=0を満たすか否かを判定する(s312)。i[0]=1かつi[1]=0の場合は、図6の場合と同様に、当該電子証明書Certを使用するユーザの実効的な匿名性は確保されないため、処理を終了させる。i[0]=1かつi[1]=0でない場合、ユーザ装置100に匿名性が確保可能であることを示す匿名性確保可能データを含む電子メールを送信する(s32)。
【0112】
このように、ユーザ装置100からの問い合わせにかかわらずに予め定められたスケジュールに従って状態管理処理を実行することにより、ユーザは匿名性を確保したまま証明書を使用できるタイミングをほぼリアルタイムに知ることができる。
【0113】
従来の匿名認証方式では、複数のユーザは電子証明書の発行を受け、この電子証明書を各ユーザが使用するモデルであった。この場合、任意の時系列で証明書の発行、使用が起こる際は、その時系列関係によってはユーザの匿名性が実効的に確保できなくなる場合があった。これに対して本実施形態によれば、サービス提供者やユーザから中立のカウンタ装置で仮ブラインド署名の発行部数と電子証明書の使用部数を計数管理することにより、電子証明書の取得と使用において、任意の時系列にて電子証明書の取得と使用が発生し得る運用を考慮しても、ユーザは実効的に匿名性が確保されないタイミングを知ることができ、証明書使用時にユーザの匿名性が剥奪されるという従来の匿名認証方式の運用上の欠点を回避することが可能となる。すなわち、当該認証方式を用いる唯一のユーザでなければ、いかなるタイミングで証明書の発行を受けても、いかなるタイミングで証明書を利用しても、ユーザのプライバシーが確保できる。
【0114】
図4の証明書発行手順、図5や図7の証明書検証手順ともに、サービス提供者装置200が元情報{Zj}の検証及び電子証明書Certの検証を行う場合を例に説明したが、元情報{Zj}の検証と電子証明書Certの検証を行う装置がそれぞれ別途設けられ、各装置がそれぞれ元情報検証及び証明書検証を実行してもよい。また、元情報検証、電子証明書検証とサービスの提供は別の装置が提供してもよいことはもちろんである。
【0115】
また、上記実施形態の図4を用いて説明した匿名認証手法はほんの一例にすぎず、被認証者の属性情報を提供せずに電子証明書の認証を行ういかなる匿名認証方式にも本発明を適用可能であることはもちろんである。
【0116】
また、秘密鍵と他の証明書等のデータを同一の記憶装置に格納する例として示したが、秘密鍵は秘密に所有すべく別の記憶装置に格納してもよい。
【0117】
また、ユーザ装置100、サービス提供者装置200及びカウンタ装置300に設けられた記憶装置からプログラムが読み出されることにより、これら各装置100,200及び300が各構成要素110,120,130,140,150,160,170,210,220,230,240,310,320,330,340,350,360等として機能する場合を示したが、これに限定されない。各構成要素110,120,130,140,150,160,170,210,220,230,240,310,320,330,340,350,360等として機能させるため、各装置100,200及び300のコンピュータに指令を与えるプログラムコードを記録した記録媒体を予め作成しておき、この記録媒体から各装置100,200及び300に記録媒体読取装置によりプログラムを読み出すことにより、上記構成要素として各装置100,200及び300を機能させるようにしてもよい。
【0118】
カウンタ装置300は1台のみネットワーク400に接続される例を示したが、これに限定されず、複数のカウンタ装置300が接続されてもよい。
【0119】
図6及び図8に示したカウンタ装置300の初回発行部数、証明書使用部数のカウント手法はほんの一例にすぎない。初回発行部数と証明書使用部数がカウントでき、各部数が一致するか否かを状態管理部340が判定できれば他の手法を適用することもできる。
【0120】
また、異なるメッセージMごとに、別の共有メモリ600を設けて計数することにより、複数のメッセージMについての証明書ごとに匿名性を確保することができる。
【0121】
また、サービス提供者装置200における改ざん不能な演算をサービス提供者装置200の秘密鍵Sspを用いた演算により行い、その改ざん不能な演算結果である関数値{Zj}’の正当性の検証を公開鍵Pspを用いた演算により行う例を示したが、これに限定されない。例えば、サービス提供者装置200とカウンタ装置300の双方が秘密に保持する共通鍵Sを用いた演算をサービス提供者装置200及びカウンタ装置300の双方でそれぞれ行うことにより改ざん不能な演算及び正当性の検証を行ってもよい。
【0122】
また、上記実施形態では証明書の作成処理シーケンスをユーザ装置100、サービス提供者装置200及びカウンタ装置300の3者間で行う場合を示したが、これに限定されない。図10は証明書の作成処理シーケンスをユーザ装置100及びカウンタ装置300の2者間で実行する例を示す。図10に示すように、この処理シーケンスの場合、カウンタ装置300には証明書元情報検証部370が設けられている。この証明書元情報検証部370は図4の証明書元情報検証部210と共通する処理を実行する。また、図4の例とは異なり、カウンタ装置300は検証結果検証部310として機能する必要はなく、ユーザ装置100は検証結果送信部120として機能する必要はなく、サービス提供者装置200は証明書元情報検証部210及び検証結果作成部220として機能する必要はない。
【0123】
図10のシーケンス例では、ユーザ装置100の証明書元情報作成部110は関数値{Zj}をカウンタ装置300の証明書元情報検証部370に送信する(s1’)。証明書元情報検証部370は、任意のR個のZパラメータの開示をユーザ装置100に要求する(s2’)。ユーザ装置100の証明書元情報作成部110は要求のあったZk(1≦k≦R)についてのZパラメータを証明書元情報検証部370に送信する(s3’)。証明書元情報検証部370は、受信したZパラメータに基づき前述の式(12)で示される値Zkを計算し、既に受信しているZjと一致するか否かを検証する(s4’)。検証に成功した場合、検証結果の作成、送信及び検証を行うことなく仮ブラインド署名pre−SIGCを作成する処理(s8)に進む。その後の(s9)〜(s12)の処理シーケンスは図4と共通する。なお、図10に示すユーザ装置100とカウンタ装置300との間の証明書作成処理シーケンスは、ユーザ装置100とサービス提供者装置200との間の証明書作成処理シーケンスに置換可能である。
【0124】
また、図10の例では証明書の作成処理シーケンスのみユーザ装置200とカウンタ装置300との間の2者間で実行する例を示したが、これに限定されない。証明書使用処理シーケンスも含めてユーザ装置200とカウンタ装置300との間の2者間で実行してもよい。この場合、カウンタ装置300の主体はサービス提供者となり、カウンタ装置300とサービス提供者装置200と同一装置となる。
【0125】
図11は2者間の証明書利用シーケンスの一例を示す図である。使用される証明書が初回使用と判別された場合の(s21)、(s22a)、(s23a)、(s24a)の処理は図5と共通する。図5と異なるのは、証明書使用部170の処理シーケンスからである。証明書使用部170は、初回使用、2回目以降の使用ともに、カウンタ装置300に証明書Certを送信する。カウンタ装置300の証明書検証部350は、図5の(s26a)と同様に式(15)により証明書Certの検証を行う(s26a’)。検証に成功した場合、証明書Certが初回使用の場合に限り、第2の計数部360における計数処理(s28a)を実行した上で、サービス管理部380はユーザ装置100にサービスを提供する(s30’)。検証に成功した場合であって証明書Certが2回目以降の使用の場合には、第2の計数部360における計数処理を実行することなくサービス管理部380はユーザ装置100にサービスを提供する(s30’)。
【0126】
なお、図11は図5の証明書使用処理の変形例を示したが、図7に示す処理シーケンスもユーザ装置100とカウンタ装置300との2者間で実行することができる。この場合、図7に示す(s34b)の処理は、カウンタ装置300へ証明書Certを送信処理に置換される。
【0127】
【発明の効果】
以上詳述したように本発明によれば、匿名性が実効的に確保されるタイミングを、新規に証明書を使用するユーザへ知らしめることができる。
【図面の簡単な説明】
【図1】匿名認証方式の仕組みの概念図。
【図2】匿名認証方式の問題点を説明するための図。
【図3】本発明の一実施形態に係るサービス提供方法が適用されるサービス提供システムの全体構成を示す図。
【図4】同実施形態に係る証明書の作成処理シーケンスを示す図。
【図5】同実施形態に係る証明書の使用処理シーケンスの一例を示す図。
【図6】同実施形態に係る計数処理、及び状態管理処理の動作の一例を示す図。
【図7】同実施形態に係る証明書の使用処理シーケンスの別の一例を示す図。
【図8】同実施形態に係る計数処理、及び状態管理処理の動作の一例を示す図。
【図9】同実施形態に係る計数処理の遷移の一例を示す図。
【図10】同実施形態の証明書の作成処理シーケンスを2者間で実行する変形例を示す図。
【図11】同実施形態の証明書の使用処理シーケンスを2者間で実行する変形例を示す図。
【符号の説明】
100…ユーザ装置、110…証明書元情報作成部、120…検証結果送信部、130…署名抽出部、140…証明書作成部、150…証明書判別部、160…状態取得部、170…証明書使用部、180…記憶装置、200…サービス提供者装置、210…証明書元情報検証部、220…検証結果作成部、230…証明書検証部、240…サービス管理部、300…カウンタ装置、310…検証結果検証部、320…署名元情報作成部、330…第1の計数部、340…状態管理部、350…証明書検証部、360…第2の計数部
Claims (20)
- ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いたサービス利用方法であって、
証明書発行段階では、
証明書管理装置は、ユーザ装置の秘密の乱数群rを用いて作成された前記電子証明書Certの元情報群Z及び前記証明書管理装置の秘密鍵Scに基づき仮ブラインド署名pre−SIGCを生成して前記ユーザ装置に送信し、
前記生成された仮ブラインド署名pre−SIGCの発行部数を計数し、
前記ユーザ装置は、
前記仮ブラインド署名pre−SIGCから前記秘密の乱数群rを用いてブラインド署名SIGCを抽出し、
前記ブラインド署名SIGCを含む前記電子証明書Certを作成し記憶装置に格納し、
サービス利用段階では、
前記ユーザ装置は、
前記電子証明書Certが既使用か否かを判定し、
前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを前記証明書管理装置から受信し、
前記電子証明書Certが既使用と判定された場合には前記電子証明書Certを前記記憶装置から読み出し前記証明書管理装置に送信し、前記電子証明書Certが既使用でないと判定された場合には前記電子証明書Certを前記記憶装置から読み出し検証者装置に送信し、
前記証明書管理装置は、
前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行うとともに前記電子証明書Certの初回使用部数を計数し、
前記検証が成功した場合には、検証成功通知を前記検証者装置に送信し、
前記仮ブラインド署名pre−SIGCの発行部数及び前記電子証明書Certの初回使用部数に応じて前記匿名性確保可能データを前記ユーザ装置に送信し、
前記検証者装置は、
前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行う
ことを特徴とするサービス利用方法。 - 前記証明書発行段階では、
前記ユーザ装置が、
前記秘密の乱数群rを用いて前記電子証明書Certの元情報群Zを作成して発行者装置に送信し、
前記発行者装置は、
前記電子証明書Certの元情報群Zを検証し、前記電子証明書Certの元情報群Zの部分集合に改ざん不能な演算を行った検証結果Z’を前記ユーザ装置に送信し、
前記ユーザ装置は、
前記電子証明書Certの元情報群Zの部分集合及び前記検証結果Z’を証明書管理装置に送信し、
前記証明書管理装置は、
前記電子証明書Certの元情報群Zの部分集合及び前記検証結果Z’に基づき前記検証結果Z’の正当性を検証し、
前記正当性の検証が成功した場合には、前記仮ブラインド署名pre−SIGCを生成する
ことを特徴とする請求項1に記載のサービス利用方法。 - 前記発行者装置は前記検証者装置と同一の装置であることを特徴とする請求項2に記載のサービス利用方法。
- ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いてサービスを利用するユーザ装置であって、
秘密の乱数群rを用いて作成された前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成された仮ブラインド署名pre−SIGCを受信し、前記仮ブラインド署名pre−SIGCから前記秘密の乱数群rを用いてブラインド署名SIGCを抽出する署名抽出部と、
前記ブラインド署名SIGCを含む前記電子証明書Certを作成し記憶装置に格納する証明書作成部と、
前記電子証明書Certが既使用か否かを判定する証明書判別部と、
前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを受信し、前記電子証明書Certが既使用と判定された場合には前記電子証明書Certを前記記憶装置から読み出し送信して前記電子証明書の検証を要求し、前記電子証明書Certが既使用でないと判定された場合には前記電子証明書Certを前記記憶装置から読み出し送信して前記電子証明書の検証及びサービスの提供を要求する証明書使用部と
を具備してなることを特徴とするユーザ装置。 - 前記秘密の乱数群rを用いて前記電子証明書Certの元情報群Zを作成して送信する証明書元情報作成部と、
前記元情報群Zの部分集合に対する改ざん不能な演算により得られた検証結果Z’を受信し、前記電子証明書Certの元情報群Zとともに送信する検証結果送信部と
をさらに備えることを特徴とする請求項4に記載のユーザ装置。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いてサービスを利用するサービス利用処理を実行するためのプログラムであって、コンピュータに、
秘密の乱数群rを用いて作成された前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成された仮ブラインド署名pre−SIGCを受信し、前記仮ブラインド署名pre−SIGCから前記秘密の乱数群rを用いてブラインド署名SIGCを抽出する処理と、
前記ブラインド署名SIGCを含む前記電子証明書Certを作成し記憶装置に格納する処理と、
前記電子証明書Certが既使用か否かを判定する処理と、
前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを受信し、前記電子証明書Certが既使用と判定された場合には前記電子証明書Certを前記記憶装置から読み出し送信して前記電子証明書の検証を要求し、前記電子証明書Certが既使用でないと判定された場合には前記電子証明書Certを前記記憶装置から読み出し送信して前記電子証明書の検証及びサービスの提供を要求する処理と
を実行させるためのサービス利用処理プログラム。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いてサービスを提供するサービス提供者装置であって、
前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成されたブラインド署名SIGCを含む前記電子証明書Certを受信した場合には、前記証明書管理装置の公開鍵Pcを用いて前記電子証明書Certの検証を行う証明書検証部と、
前記電子証明書Certの検証が成功した場合、及び前記電子証明書Certの検証が成功したことを通知する前記検証成功通知を受信した場合には、サービスの提供をするサービス管理部と
を具備してなることを特徴とするサービス提供者装置。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いてサービスを提供するサービス提供処理を実行するためのプログラムであって、コンピュータに、
前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成されたブラインド署名SIGCを含む前記電子証明書Certを受信した場合には、前記証明書管理装置の公開鍵Pcを用いて前記電子証明書Certの検証を行う処理と、
前記電子証明書Certの検証が成功した場合、及び前記電子証明書Certの検証が成功したことを通知する前記検証成功通知を受信した場合には、サービスの提供をする処理と
を実行させるためのサービス提供処理プログラム。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて検証を行う検証者装置であって、
ユーザの秘密の乱数群rを用いて生成された前記電子証明書Certの元情報群Zを受信し、該元情報群Zの部分集合を検証し、前記電子証明書Certの元情報群Zに改ざん不能な演算を行った検証結果Z’を送信する証明書元情報検証部と、
前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成されたブラインド署名SIGCを含む前記電子証明書Certを受信した場合には、前記証明書管理装置の公開鍵Pcを用いて前記電子証明書Certの検証を行う証明書検証部と、
を具備してなることを特徴とする検証者装置。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて検証を行う検証処理を実行するためのプログラムであって、コンピュータに、
ユーザの秘密の乱数群rを用いて生成された前記電子証明書Certの元情報群Zを受信し、該元情報群Zの部分集合を検証し、前記電子証明書Certの元情報群Zに改ざん不能な演算を行った検証結果Z’を送信する処理と、
前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成されたブラインド署名SIGCを含む前記電子証明書Certを受信した場合には、前記証明書管理装置の公開鍵Pcを用いて前記電子証明書Certの検証を行う処理と、
を実行させるための検証処理プログラム。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて生成される前記電子証明書Certを登録する証明書管理装置であって、
前記電子証明書Certの元情報群Z及び前記証明書管理装置の秘密鍵Scに基づき仮ブラインド署名pre−SIGCを生成して送信する署名元情報作成部と、
前記生成された仮ブラインド署名pre−SIGCの発行部数を計数する計数部と
を具備してなることを特徴とする証明書管理装置。 - 前記秘密の乱数群rを用いて生成された前記電子証明書Certの元情報群Zの部分集合と、前記元情報群Zに改ざん不能な演算を行った検証結果Z’を受信し、前記検証結果Z’の正当性を検証する検証結果検証部をさらに備え、前記正当性の検証に成功した場合に、前記署名元情報作成部は前記仮ブラインド署名pre−SIGCを生成することを特徴とする請求項11に記載の証明書管理装置。
- ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて生成される前記電子証明書Certを登録する処理を実行するためのプログラムであって、コンピュータに、
前記電子証明書Certの元情報群Z及び前記証明書管理装置の秘密鍵Scに基づき仮ブラインド署名pre−SIGCを生成して送信する処理と、
前記生成された仮ブラインド署名pre−SIGCの発行部数を計数する処理と
を実行させるための証明書管理プログラム。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて生成される前記電子証明書Certを計数する証明書管理装置であって、
前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行い、前記検証が成功した場合には、検証成功通知を送信する証明書検証部と、
前記検証が成功した場合には、前記電子証明書Certの初回使用部数を計数する計数部と、
前記電子証明書Certを作成するために秘密鍵Sc及び電子証明書の元情報群Zに基づき生成された仮ブラインド署名pre−SIGCの発行部数と、前記電子証明書Certの初回使用部数とに応じて前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを前記ユーザ装置に送信する状態管理部と
を具備してなることを特徴とする証明書管理装置。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて生成される前記電子証明書Certを計数する処理を実行するためのプログラムであって、コンピュータに、
前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行い、前記検証が成功した場合には、検証成功通知を送信する処理と、
前記検証が成功した場合には、前記電子証明書Certの初回使用部数を計数する処理と、
前記電子証明書Certを作成するために秘密鍵Sc及び電子証明書の元情報群Zに基づき生成された仮ブラインド署名pre−SIGCの発行部数と、前記電子証明書Certの初回使用部数とに応じて前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを前記ユーザ装置に送信する処理と
を実行させるための証明書管理プログラム。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いてサービスを利用するサービス利用処理を実行するためのプログラムを記録した記録媒体であって、コンピュータに、
秘密の乱数群rを用いて作成された前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成された仮ブラインド署名pre−SIGCを受信し、前記仮ブラインド署名pre−SIGCから前記秘密の乱数群rを用いてブラインド署名SIGCを抽出する処理と、
前記ブラインド署名SIGCを含む前記電子証明書Certを作成し記憶装置に格納する処理と、
前記電子証明書Certが既使用か否かを判定する処理と、
前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを受信し、前記電子証明書Certが既使用と判定された場合には前記電子証明書Certを前記記憶装置から読み出し送信して前記電子証明書の検証を要求し、前記電子証明書Certが既使用でないと判定された場合には前記電子証明書Certを前記記憶装置から読み出し送信して前記電子証明書の検証及びサービスの提供を要求する処理と
を実行させるためのサービス利用処理プログラムを記録した記録媒体。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いてサービスを提供するサービス提供処理を実行するためのプログラムを記録した記録媒体であって、コンピュータに、
前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成されたブラインド署名SIGCを含む前記電子証明書Certを受信した場合には、前記証明書管理装置の公開鍵Pcを用いて前記電子証明書Certの検証を行う処理と、
前記電子証明書Certの検証が成功した場合、及び前記電子証明書Certの検証が成功したことを通知する前記検証成功通知を受信した場合には、サービスの提供をする処理と
を実行させるためのサービス提供処理プログラムを記録した記録媒体。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて検証を行う検証処理を実行するためのプログラムを記録した記録媒体であって、コンピュータに、
ユーザの秘密の乱数群rを用いて生成された前記電子証明書Certの元情報群Zを受信し、該元情報群Zの部分集合を検証し、前記電子証明書Certの元情報群Zに改ざん不能な演算を行った検証結果Z’を送信する処理と、
前記電子証明書Certの元情報群Z及び証明書管理装置の秘密鍵Scに基づき生成されたブラインド署名SIGCを含む前記電子証明書Certを受信した場合には、前記証明書管理装置の公開鍵Pcを用いて前記電子証明書Certの検証を行う処理と、
を実行させるための検証処理プログラムを記録した記録媒体。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて生成される前記電子証明書Certを登録する処理を実行するためのプログラムを記録した記録媒体であって、コンピュータに、
前記電子証明書Certの元情報群Z及び前記証明書管理装置の秘密鍵Scに基づき仮ブラインド署名pre−SIGCを生成して送信する処理と、
前記生成された仮ブラインド署名pre−SIGCの発行部数を計数する処理と
を実行させるための証明書管理プログラムを記録した記録媒体。 - ユーザの属性情報を提供せずに電子証明書Certの認証を行う匿名認証を用いて生成される前記電子証明書Certを計数する処理を実行するためのプログラムを記録した記録媒体であって、コンピュータに、
前記電子証明書Certを受信した場合には、前記電子証明書Certの検証を行い、前記検証が成功した場合には、検証成功通知を送信する処理と、
前記検証が成功した場合には、前記電子証明書Certの初回使用部数を計数する処理と、
前記電子証明書Certを作成するために秘密鍵Sc及び電子証明書の元情報群Zに基づき生成された仮ブラインド署名pre−SIGCの発行部数と、前記電子証明書Certの初回使用部数とに応じて前記電子証明書Certが匿名性を確保できることを示す匿名性確保可能データを前記ユーザ装置に送信する処理と
を実行させるための証明書管理プログラムを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121541A JP2004328449A (ja) | 2003-04-25 | 2003-04-25 | サービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003121541A JP2004328449A (ja) | 2003-04-25 | 2003-04-25 | サービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004328449A true JP2004328449A (ja) | 2004-11-18 |
Family
ID=33500079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003121541A Pending JP2004328449A (ja) | 2003-04-25 | 2003-04-25 | サービス利用方法、ユーザ装置、サービス利用処理プログラム、サービス提供者装置、サービス提供処理プログラム、検証者装置、検証処理プログラム、証明書管理装置、証明書管理プログラム及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004328449A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007524317A (ja) * | 2004-02-27 | 2007-08-23 | ジェムプリュス | デジタル証明書の作成方法、関連するデジタル証明書およびその使用方法 |
-
2003
- 2003-04-25 JP JP2003121541A patent/JP2004328449A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007524317A (ja) * | 2004-02-27 | 2007-08-23 | ジェムプリュス | デジタル証明書の作成方法、関連するデジタル証明書およびその使用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10284379B1 (en) | Public key infrastructure based on the public certificates ledger | |
WO2020062668A1 (zh) | 一种身份认证方法、身份认证装置及计算机可读介质 | |
US6148404A (en) | Authentication system using authentication information valid one-time | |
TWI497336B (zh) | 用於資料安全之裝置及電腦程式 | |
CN109963282B (zh) | 在ip支持的无线传感网络中的隐私保护访问控制方法 | |
WO2020010279A1 (en) | Systems and methods for blockchain addresses and owner verification | |
EP3376708B1 (en) | Anonymous communication system and method for subscribing to said communication system | |
CN1989731A (zh) | 使用一次性私钥执行数字签名的系统和方法 | |
US20050105735A1 (en) | Information processing system and method, information processing device and method, recording medium, and program | |
WO2020051710A1 (en) | System and process for managing digitized security tokens | |
JPWO2008050792A1 (ja) | 個人情報を含む電子証明書を用いて通信相手を認証するためのシステム、装置、方法、及びプログラム | |
GB2434724A (en) | Secure transactions using authentication tokens based on a device "fingerprint" derived from its physical parameters | |
US20130019093A1 (en) | Certificate authority | |
JP2011082662A (ja) | 通信装置及び情報処理方法及びプログラム | |
JP2009503967A (ja) | 単一の物理デバイスを用いた保護されたトランザクションの制御方法、それに対応する物理デバイス、システム及びコンピュータプログラム | |
CN112396421B (zh) | 一种基于区块链通证的身份认证系统及方法 | |
WO2008031301A1 (fr) | Procédé d'authentification d'identité en ligne point à point | |
CN108833373A (zh) | 面向关系隐私保护社交网络的即时通信与匿名访问方法 | |
JP2023503607A (ja) | 自動デジタル証明書検証のための方法およびデバイス | |
JP2000049766A (ja) | 鍵管理サーバシステム | |
Boontaetae et al. | RDI: Real digital identity based on decentralized PKI | |
EP3485600B1 (en) | Method for providing secure digital signatures | |
JP2015516616A (ja) | 認証方法、装置及びシステム | |
JP3791169B2 (ja) | 認証装置および方法 | |
JP2023540739A (ja) | 分散型台帳上の、匿名性取消を伴う、セキュアな、トレース可能な、および、プライバシー保護の、デジタル通貨送金のための方法 |