説明

方法、電子決済システム、コンピュータ・プログラム、発行者、アクセプタ、バリデータ、エミッタ(取引を自動的に妥当性検査する方法、電子支払いシステム、およびコンピュータ・プログラム)

【課題】改善されたセキュアで匿名の取引システムおよび取引方法を提供すること。
【解決手段】本発明は、署名鍵(pk,sk)を有する発行者と、エミッタ鍵(pk,sk)を有するエミッタと、一意のアイデンティティ(id)および取引に対する限度(N)を有するアクセプタと、バリデータとの間の取引を自動的に妥当性検査する方法に関する。本発明は、さらに、銀行コンピュータ・システム(101)、ユーザ・コンピュータ・システム(102)、商店コンピュータ・システム(103)、およびバリデータ・コンピュータ・システム(101)を含む電子決済システム(100)と、コンピュータ・プログラムと、コンピュータ・プログラム製品とに関する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、署名鍵を有する発行者と、エミッタ(emitter)鍵を有するエミッタと、一意のアイデンティティおよび取引に対する限度を有するアクセプタと、バリデータとの間の取引を自動的に妥当性検査する方法に関する。本発明は、さらに、銀行コンピュータ・システムと、ユーザ・コンピュータ・システムと、商店コンピュータ・システムと、バリデータ・コンピュータ・システムとを含む電子決済システム、コンピュータ・プログラム、ならびにコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
取引を実行し、妥当性検査する方法およびシステムは、さまざまな競合する目的に直面する。一方では、これらの方法およびシステムは、ある取引に参加する誰もが、たとえば偽のアイデンティティを装うことまたは故意に取引額を変更することによって不相応な利益を得ることができなくなるように、証明可能に正しく、セキュアであらねばならないが、他方では、参加者のアイデンティティおよび参加者の正確な対話は、しばしば、匿名のままにならなければならない。それと同時に、取引プロトコルを実施する動作dは、計算的に効率的であり、標準的な手順に従わなければならない。
【0003】
商品およびサービスについてオンラインで、特にインターネットを介して支払うための電子決済システムは、電子商取引システムの特に重要な例である。高速、セキュア、匿名、かつ実施しやすい電子決済システムがなければ、電子商取引の成長が危険にさらされる可能性がある。その結果、複数の電子決済システムが、研究者と金融機関の両方によって開発されてきた。そのようなシステムの一例が、参照によって本明細書に組み込まれ、CHLシステムと呼ばれる、J. Camenisch, S. Hohenberger and A. Lysyanskayaによる論文"CompactE-Cash" published in EUROCRYPT, Vol. 3494 of LNCS, pages 302-321, 2005に記載されている。CHLシステムは、証明可能にセキュアかつ匿名である、すなわち、硬貨をこのシステム内で再利用することはできないが、銀行または硬貨発行者は、硬貨が銀行にもう一度預けられる時に、商店またはアクセプタでその硬貨を使ったユーザまたはエミッタのアイデンティティを回復することができない。
【0004】
しかし、このシステムおよび類似するシステムは、1つの不利益を有する。これらは、電子マネー・ロンダリングを受けやすい。さまざまなシナリオで、たとえば任意の2つの当事者の間の大量のキャッシュ・フローを含み、表す大量の取引が、検出されるか、防がれるか、報告されなければならない。応用例に、たとえば脱税、汚職、および大がかりな詐欺の防止が含まれる。M. Stadler, J.-M. Piveteau and J. Camenischによる論文"Fair BlindSignatures" at EUROCRYPT '95, Vol. 921 of LNCS, pages 209-219, 1995に記載のシステムでは、sが、マネー・ロンダリングを防ぐためにいつでもユーザの匿名性を取り消すことができる信頼のおける第三者機関を有する。しかし、第三者を有することは、電子決済システムに関する主要な欠点である。というのは、このシステムのユーザが、どの情況の下でも、彼らの匿名性が取り消され得ることを絶対に確信できないからである。他のシステム、たとえば、T.Okamoto and K. Ohtaによる論文"Disposable Zero-Knowledge Authentications andtheir Applications to Untraceable Electronic Cash" in CRYPTO, Vol. 435 ofLNCS, pages 481-496, 1990に記載の電子決済システムは、不正使用を防ぐために、限られた形の匿名性だけをユーザに提供する。このシステムでは、ユーザの硬貨は、匿名であるが、互いにリンクされ得る。これは、電子決済システムの匿名性を厳しく制限する。
【非特許文献1】J. Camenisch, S. Hohenberger and A.Lysyanskayaによる論文"Compact E-Cash" published in EUROCRYPT, Vol. 3494 ofLNCS, pages 302-321, 2005
【非特許文献2】M. Stadler, J.-M. Piveteau and J.Camenischによる論文"Fair Blind Signatures" at EUROCRYPT '95, Vol. 921 ofLNCS, pages 209-219, 1995
【非特許文献3】T. Okamoto and K. Ohtaによる論文"DisposableZero-Knowledge Authentications and their Applications to Untraceable ElectronicCash" in CRYPTO, Vol. 435 of LNCS, pages 481-496, 1990
【非特許文献4】"Jan Camenisch and IvanDamgard. Verifable encryption, group encryption, and their applications togroup signatures and signature sharing schemes. In Tatsuaki Okamoto, editor,Advances in Cryptology | ASIACRYPT '00, volume 1976 of LNCS, pages 331-345.Springer Verlag, 2000"
【非特許文献5】"Dan Boneh and MatthewFranklin. Identity-based encryption from the Weil pairing. In Joe Kilian,editor, Advances in Cryptology | CRYPTO '01, volume 2139 of LNCS, pages213-229. Springer Verlag, 2001"
【非特許文献6】"Jan Camenisch and AnnaLysyanskaya. A signature scheme with ecient protocols. In Stelvio Cimato,Clemente Galdi, and Giuseppe Persiano, editors, Security in CommunicationNetworks '02, volume 2576 of LNCS, pages 268{289. Springer Verlag, 2002"
【非特許文献7】"Jan Camenisch, SusanHohenberger, and Anna Lysyanskaya. Compact E-Cash. In Ronald Cramer, editor,Advances in Cryptology { EUROCRYPT '05, volume 3494 of LNCS, pages 302-321,2005"
【非特許文献8】Stefan Brandsによる論文、"UntraceableOff-Line Cash in Wallets with Observers", published in CRYPTO '93, Vol.773 of LNCS, page 302, 1994
【発明の開示】
【発明が解決しようとする課題】
【0005】
その結果、改善されたセキュアで匿名の取引システムおよび取引方法の必要が存在する。電子マネー・ロンダリングを防ぐのを助けることができる電子決済システムを考案することが、特定の課題である。
【課題を解決するための手段】
【0006】
本発明の一態様によれば、署名鍵を有する発行者と、エミッタ鍵を有するエミッタと、一意のアイデンティティおよび取引に対する限度を有するアクセプタと、バリデータとの間の取引を自動的に妥当性検査する方法が提供される。この方法は、
−エミッタによって発行者から証明書を回収するステップであって、証明書が、発行者の署名鍵およびエミッタのエミッタ鍵に基づいて発行者とエミッタとの間の第1の2当事者プロトコルを使用して計算される、ステップと、
−エミッタによってアクセプタで証明書を使うステップであって、マネー・ロンダリング検査値が、証明書、エミッタとアクセプタとの間の取引番号、アクセプタによって生成される取引チャレンジ値、およびアクセプタの一意のアイデンティティに基づいてエミッタとアクセプタとの間の第2の2当事者プロトコルを使用して計算される、ステップと、
−アクセプタによってバリデータに証明書、取引チャレンジ値、およびマネー・ロンダリング検査値を預けるステップと、
−マネー・ロンダリング検査値をより以前の取引でバリデータに既に預けられたマネー・ロンダリング検査値と比較することによって、エミッタとアクセプタとの間の取引の回数がアクセプタの取引に対する限度未満であることを検証することによって、バリデータによって取引を妥当性検査するステップと、
を含む。
【0007】
エミッタとアクセプタとの間の取引の回数がアクセプタの取引に対する限度未満であることを検証することによって、任意の1つのエミッタとアクセプタとの間の異常に大量の取引を検出することができる。
【0008】
第1の態様の改善された実施形態によれば、使うステップで、知識の証明が、エミッタによって計算され、アクセプタに送信され、預けるステップで、証明が、バリデータに預けられ、妥当性検査するステップが、さらに、証明が、アクセプタの一意のアイデンティティ、証明書、およびマネー・ロンダリング検査値に関して有効であることを検証するステップを含む。知識の証明を計算し、検証することによって、この方法の完全性を実施することができる。
【0009】
第1の態様のさらなる改善された実施形態によれば、妥当性検査するステップで、バリデータが、証明がアクセプタの取引に対する限度に基づいて計算されたことを検証する。証明がアクセプタの取引に対する限度に基づいて計算されたことを検証することによって、バリデータは、アクセプタが証明の計算中に取引に対する偽の限度を使用することを試みていたかどうかを検出することができる。
【0010】
第1の態様のさらなる改善された実施形態によれば、バリデータが、より以前の取引でバリデータに預けられたマネー・ロンダリング検査値が現在の取引のマネー・ロンダリング検査値と等しいことを検出する場合に、妥当性検査するステップが、さらに、証明書を拒否するステップと、より以前の取引で使用された取引チャレンジ値および証明書を取り出すステップとを含み、より以前の取引で使用された取引チャレンジ値と取引チャレンジ値とが異なる場合に、エミッタのアイデンティティが、より以前の取引および現在の取引で使用される証明書に基づいてバリデータによって計算される。マネー・ロンダリング検査値および取引チャレンジ値を、以前の取引のこれらの値を用いて検証することによって、取引に対する限度を超えることを試みる当事者を、識別し、罰することができる。
【0011】
第1の態様のさらなる改善された実施形態によれば、妥当性検査するステップで、バリデータが、証明書をより以前の取引で預けられた証明書と比較し、バリデータが、より以前の取引でバリデータに預けられた証明書が現在の取引の証明書と等しいことを検出する場合に、妥当性検査するステップが、さらに、より以前の取引で使用された取引チャレンジ値を取り出すステップと、より以前の取引で使用された取引チャレンジ値と取引チャレンジ値とが等しい場合に、証明書がバリデータによって拒否されるステップと、より以前の取引で使用された取引チャレンジ値と取引チャレンジ値とが異なる場合に、エミッタのアイデンティティが、より以前の取引および現在の取引で使用される証明書に基づいてバリデータによって計算されるステップとを含む。証明書および取引チャレンジ値を、より以前の取引のこれらの値を用いて検証することによって、超過して使うことを試みる当事者を、識別し、罰することができる。
【0012】
第1の態様のさらなる改善された実施形態によれば、回収するステップで、エミッタが、ウォレット秘密の知識の証明を発行者に提供し、証明書が、ウォレット秘密に基づき、使うステップで、ウォレット検査値が、計算され、アクセプタに転送され、預けるステップで、ウォレット検査値が、バリデータに預けられ、妥当性検査するステップで、証明書またはマネー・ロンダリング検査値がより以前の取引でバリデータに預けられ、現在の取引の取引チャレンジ値がより以前の取引で使用された取引チャレンジ値と等しいことをバリデータが検出する場合に、現在の取引およびより以前の取引のウォレット検査値に基づいて、エミッタのウォレット秘密が、バリデータによって計算される。エミッタのウォレットが超過して使われるか取引の限度を超える場合にエミッタのウォレット秘密を計算することによって、エミッタのすべての証明書を識別することができる。
【0013】
第1の態様のさらなる改善された実施形態によれば、使うステップで、アクセプタが、取引番号が取引に対する限度未満であることを検証し、取引番号が取引に対する限度を超える場合に取引を中止する。特定の取引の取引番号がアクセプタの取引に対する限度未満であることを検証することによって、アクセプタ自体が、その所定の取引限度を超える取引を防ぐことができる。
【0014】
本発明の第2の態様によれば、電子決済システムが開示される。この電子決済システムは、硬貨を妥当性検査するために、所定の額面金額の硬貨を発行する銀行コンピュータ・システムと、硬貨を発するユーザ・コンピュータ・システムと、硬貨を受け入れる商店コンピュータ・システムと、バリデータ・コンピュータ・システムとを含み、銀行コンピュータ・システムと、ユーザ・コンピュータ・システムと、商店コンピュータ・システムと、バリデータ・コンピュータ・システムとが、データ・ネットワークによって機能的に接続される。硬貨は、第1の態様による方法に従って引き出され、発せられ、預けられ、妥当性検査される。銀行コンピュータ・システム、ユーザ・コンピュータ・システム、商店コンピュータ・システム、およびバリデータ・コンピュータ・システムを有する電子決済システムを提供することによって、これらの実体の間の取引を、電子マネー・ロンダリングの危険を導入せずに、セキュアに、匿名で、効率的にオンラインで実行することができる。
【0015】
本発明の第3および第4の態様によれば、コンピュータ・プログラムおよびコンピュータ・プログラム製品が開示される。これらは、コンピュータ・システムの少なくとも1つのプロセッサによって実行可能なプログラム命令を含み、少なくとも1つのプロセッサによるプログラム命令の実行時に、本発明の第1の態様による発行者、エミッタ、アクセプタ、またはバリデータのすべてのステップが実行される。コンピュータ・プログラムまたはコンピュータ・プログラム製品を提供することによって、第1の態様による方法による動作を、簡単に提供し、コンピュータ・システムに配布することができる。
【0016】
本発明およびその実施形態は、添付図面と共に解釈される時に、本発明による現在好ましいがそれでも例示的な実施形態の次の詳細な説明を参照することによってより十分に諒解されるであろう。
【発明を実施するための最良の形態】
【0017】
図1に、組み合わされた銀行およびバリデータ・コンピュータ・システム101と、ユーザ・コンピュータ・システム102と、商店コンピュータ・システム103とを含む電子決済システム100を示す。組み合わされた銀行およびバリデータ・コンピュータ・システム101と、ユーザ・コンピュータ・システム102と、商店コンピュータ・システム103とは、データ・ネットワーク104によって接続される。
【0018】
組み合わされた銀行およびバリデータ・コンピュータ・システム101は、次で発行者またはバリデータとも称する銀行Bに属する。電子決済システムの規約に従って、組み合わされた銀行およびバリデータ・コンピュータ・システム101が、電子決済システム100の硬貨の発行と受入の両方の責任を負うと仮定する。その結果、単一の実体だけが、図1に示され、次で説明される。しかし、両方の役割すなわち、下でさらに説明する、硬貨を発行する役割および硬貨を妥当性検査する役割を、別々の実体すなわち、別々の発行者およびバリデータによって実行できることは、当業者に明白であろう。
【0019】
銀行Bは、次で証明書Sとも称する所定の額面金額の硬貨を、次でエミッタとも称するユーザUに、組み合わされた銀行およびバリデータ・コンピュータ・システム101とユーザ・コンピュータ・システム102との間の第1の2当事者プロトコルによって発行することができる。組み合わされた銀行およびバリデータ・コンピュータ・システム101によって発行された証明書Sを認証するために、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、署名鍵(pk,sk)を含む。署名鍵(pk,sk)は、2部分非対称署名鍵であり、その第1部分は、公開鍵pkであり、その第2部分は、セキュア鍵または秘密鍵skである。
【0020】
署名鍵(pk,sk)は、証明書Sの生成中に組み合わされた銀行およびバリデータ・コンピュータ・システム101によって使用される。これは、署名アルゴリズムを使用して、ユーザ・コンピュータ・システム102によって供給される値に署名することによって行うことができる。代替案では、署名鍵(pk,sk)を、証明書Sを計算するために第1の2当事者プロトコルでの組み合わされた銀行およびバリデータ・コンピュータ・システム101の入力として使用することができ、ここで、署名鍵(pk,sk)の秘密鍵skは、明らかにされない。
【0021】
ユーザ・コンピュータ・システム102は、エミッタ鍵(pk,sk)を含み、このエミッタ鍵(pk,sk)も、公開鍵pkおよび秘密鍵skを有する2部分鍵である。さらに、ユーザ・コンピュータ・システム102は、ウォレット秘密sを含み、このウォレット秘密sは、組み合わされた銀行およびバリデータ・コンピュータ・システム101によって発行された証明書Sを表す通し番号Sを生成するのに使用される。やはり、エミッタ鍵の秘密鍵sk、ウォレット秘密s、および導出される通し番号Sは、組み合わされた銀行およびバリデータ・コンピュータ・システム101に開示されない。その代わりに、ユーザ・コンピュータ・システム102だけが、これらおよびさらなるパラメータの知識を、第1の2当事者プロトコルで組み合わされた銀行およびバリデータ・コンピュータ・システム101に証明する。
【0022】
商店コンピュータ・システム103は、一意のアイデンティティidによって識別される。さらに、商店コンピュータ・システム103は、取引に対する限度Nに関連し、取引に対する限度Nは、組み合わされた銀行およびバリデータ・コンピュータ・システム101とユーザ・コンピュータ・システム102の両方に既知である。取引に対する限度Nは、たとえば、任意の単一のユーザ・コンピュータ・システム102と商店コンピュータ・システム103との間で所与のコンテキストで実行されることを許可される取引の回数を制限することができる。
【0023】
証明書Sの性質に応じて、証明書Sは、取引額に対する限度を表すこともできる。たとえば、各証明書Sが、1ドルという所定の額を有する場合に、取引に対する限度Nに100がセットされているならば、ユーザは、商店コンピュータ・システム103に関連する商店Mで100ドルだけを使うことができる。取引に対する限度Nおよび証明書Sの他の定義を設け、電子決済システム100または他の証明書発行システムおよび証明書償還システムと共に使用することができる。電子決済システム100には、たとえば、異なる額を有する証明書S、たとえば、1セント、10セント、1ドル、10ドル、および100ドルの関連する額を有する証明書が存在することができる。同様に、取引に対する限度Nは、単一の購入について、固定された時間期間、たとえば1週間、1ヵ月、または1年について有効とすることができ、あるいは、証明書S、署名鍵(pk,sk)、エミッタ鍵(pk,sk)、または商店コンピュータ・システム103の一意のアイデンティティidの寿命全体にわたって有効とすることができる。
【0024】
第2の2当事者プロトコルでは、ユーザ・コンピュータ・システム102は、組み合わされた銀行およびバリデータ・コンピュータ・システム101によって前に発行された証明書Sをそのユーザ・コンピュータ・システム102が所有することを商店コンピュータ・システム103に証明する。このために、証明πが、ユーザ・コンピュータ・システム102によって計算される。さらに、ユーザ・コンピュータ・システム102は、商店コンピュータ103によって生成された取引チャレンジ値rに基づいて、マネー・ロンダリング検査値Vを計算する。マネー・ロンダリング検査値Vは、商店MとユーザUとの間の取引に対する限度Nを超えないことを実施する。
【0025】
ユーザ・コンピュータ・システム102が、商店コンピュータ・システム103と共に第2の2当事者プロトコルを使用する取引にかかわる前に、ユーザ・コンピュータ・システム102は、その商店コンピュータ・システム103と共に既に実行された取引の回数を検査する。正直なユーザ・コンピュータ・システム102は、取引に対する限度Nを超えている場合には取引にかかわらない。同様に、商店コンピュータ・システム103は、取引に対する限度Nを超えている場合には取引にかかわらない。この正直を実施するために、基礎になる数学的プロパティは、商店コンピュータ・システム103が、公開鍵pkごとに、取引に対する限度Nが許容するのと同一の個数の異なる取引チャレンジ値rだけを生成することができる。その結果、両方の当事者が、特定のユーザ・コンピュータ・システム102との取引に対する限度Nを超える回数の取引が行われることを許可しない。しかし、ユーザ・コンピュータ・システム102と商店コンピュータ・システム103の両方が不正直である場合には、これらは、前に、より以前の取引で使用された取引チャレンジ値rを再利用するか、偽の証明πを生成することを強いられる。
【0026】
第3の2当事者プロトコルでは、商店コンピュータ・システム103は、ユーザ・コンピュータ・システム102から入手した証明書Sを、組み合わされた銀行およびバリデータ・コンピュータ・システム101に預ける。証明書Sの他に、商店コンピュータ・システム103は、ユーザ・コンピュータ・システム102との第2の2当事者プロトコルで計算された取引チャレンジ値r、マネー・ロンダリング検査値V、および証明πも預ける。次に、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、証明πが、証明書Sを預けることを試みている商店コンピュータ・システム103の証明書S、取引チャレンジ値r、一意のアイデンティティid、および取引に対する限度Nに関して実際に有効であることを検証する。証明πが無効である場合には、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、預かりを拒否する。これは、特に、証明書Sに関連する額が、商店Mの貸方に記入されないことを意味する。
【0027】
さらに、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、証明書Sが、より以前の取引で預けられたかどうかを検査する。そうである場合には、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、違反者を識別するために取引チャレンジ値rを調査する。同一の取引チャレンジ値r’がより以前の取引で使用されたことが検出される場合には、商店Mに、証明書Sを2回預けることを試みたことの責任がある。その結果、証明書Sは、拒否され、任意選択として、商店Mの一意のアイデンティティidを、公表することができる。取引チャレンジ値rとr’とが異なる場合には、ユーザUに責任がある。この場合に、現在の取引および前の取引に基づいて、ユーザUの公開鍵pkを判定することができる。その結果、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、詐欺的なユーザ・コンピュータ・システム102のアイデンティティを暴露することができ、あるいは、エミッタ鍵(pk,sk)に関連するウォレット秘密sを暴露することができる。この場合に、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、ユーザ・コンピュータ・システム102に発行されたすべての証明書Sを識別でき、したがって、そのユーザ・コンピュータ・システム102を含む取引を識別することができる。
【0028】
もう1つのステップで、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、マネー・ロンダリング検査値Vをより以前の取引のマネー・ロンダリング検査値と比較することによって、取引の限度を超えていないことをも検証する。組み合わされた銀行およびバリデータ・コンピュータ・システム101は、商店コンピュータ・システム103が、組み合わされた銀行およびバリデータ・コンピュータ・システム101に前に預けられたマネー・ロンダリング検査値Vを預けることを試みていることを検出する場合に、1つまたは複数の違反者を識別するために、取引チャレンジ値rをも調査する。より以前の取引が、現在の取引と同一の取引チャレンジ値rに基づく場合には、商店コンピュータ・システム103だけに責任がある。電子決済システム100のセキュリティ・セッティングに応じて、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、証明書Sの預かりを拒否するか、詐欺的な商店Mの一意のアイデンティティidを公表するか、その両方を行うことができる。取引チャレンジ値が異なる場合には、ユーザ・コンピュータ・システムも、故意に取引に対する限度Nを超えており、上で説明したようにこれを罰することができる。
【0029】
発行者兼バリデータである銀行Bの役割、エミッタであるユーザUの役割、およびアクセプタである商店Mの役割は、たとえば専用のコンピュータ・システムである組み合わされた銀行およびバリデータ・コンピュータ・システム101、ユーザ・コンピュータ・システム102、ならびに商店コンピュータ・システム103による、または汎用コンピュータ・システムである組み合わされた銀行およびバリデータ・コンピュータ・システム101、ユーザ・コンピュータ・システム102、ならびに商店コンピュータ・システム103で稼動するソフトウェア・モジュールによる、あるいはその組合せによるなど、ハードまたはソフトウェアで実施することができる。コンピュータ可読媒体を、組み合わされた銀行およびバリデータ・コンピュータ・システム101、ユーザ・コンピュータ・システム102、または商店コンピュータ・システム103に含め、たとえば組み合わされた銀行およびバリデータ・コンピュータ・システム101、ユーザ・コンピュータ・システム102、または商店コンピュータ・システム103に含まれるプロセッサによって実行可能なプログラムのプログラム命令を実施することができる。コンピュータ可読媒体は、たとえば、CD−ROM、フラッシュ・メモリ・カード、ハード・ディスク、または任意の他の適切なコンピュータ可読媒体とすることができる。
【0030】
図2から図5に、本発明の実施形態による方法の流れ図を示す。
【0031】
図2に、組み合わされた銀行およびバリデータ・コンピュータ・システム101とユーザ・コンピュータ・システム102との間で実行される第1の2当事者プロトコル200を示す。第1の2当事者プロトコル200は、電子決済システム100内で取引を実行するためのシステム・パラメータと、ユーザ・コンピュータ・システム102によって組み合わされた銀行およびバリデータ・コンピュータ・システム101から硬貨を引き出すためのシステム・パラメータとをセット・アップするように働く。
【0032】
ステップ201で、電子決済システム100の重要なシステム・パラメータをセット・アップする。具体的に言うと、セキュリティ・パラメータk、双一次写像e、ウォレット・サイズl、および双一次写像e上のハッシュ関数HおよびHが、定義される。これらのパラメータは、ユーザ・コンピュータ・システム102がそのウォレットに保管できる証明書Sの個数のシステム境界をセットする。
【0033】
ステップ202で、発行者である銀行Bは、公開鍵pkおよび秘密鍵skを含む非対称の署名鍵(pk,sk)を生成する。
【0034】
ステップ203で、エミッタであるユーザUも、ユーザ・コンピュータ・システム102の公開鍵pkおよび秘密鍵skを含む非対称のエミッタ鍵(pk,sk)を生成する。
【0035】
ステップ204で、ユーザ・コンピュータ・システム102は、ランダムな値、具体的にはウォレット秘密sおよびtを生成し、このウォレット秘密sおよびtは、組み合わされた銀行およびバリデータ・コンピュータ・システム101から引き出される証明書Sまたは硬貨のそれぞれの一意の通し番号Sを生成するのに使用される。生成されたランダムな値すなわちウォレット秘密sおよびtは、ユーザ・コンピュータ・システム102によって秘密に保たれる。
【0036】
ステップ205で、ユーザ・コンピュータ・システム102は、秘密鍵skとランダムな値すなわちウォレット秘密sおよびtとの知識を組み合わされた銀行およびバリデータ・コンピュータ・システム101に証明する。さらに、ユーザ・コンピュータ・システム102は、その秘密鍵skとウォレット秘密sに対する署名σを入手する。その結果、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、ウォレット秘密sの検証可能な暗号化を、この暗号化に対するユーザ署名と共に入手する。組み合わされた銀行およびバリデータ・コンピュータ・システム101は、エミッタ鍵の秘密鍵skまたはウォレット秘密sに関して何も知るようにならない。
【0037】
ステップ206で、ユーザ・コンピュータ・システム102は、組み合わされた銀行およびバリデータ・コンピュータ・システム101から引き出された証明書Sを保管する。実際には、2個の証明書を含む証明書の組全体を、一緒に引き出し、保管することができ、各証明書Sは、通し番号Sによって表される。証明書は、CHLシステムによれば、サイズO(l+k)の特にコンパクトな形で保管することができ、ここで、kは、システムのセキュリティ・パラメータである。
【0038】
図3に、ユーザ・コンピュータ・システム102に発行された証明書Sを使うためにユーザ・コンピュータ・システム102と商店コンピュータ・システム103との間で実行される第2の2当事者プロトコル210を示す。
【0039】
ステップ211で、ユーザ・コンピュータ・システム102は、特定の商店コンピュータ・システム103との取引に対する限度Nを検査する。正直なユーザ・コンピュータ・システム102は、取引に対する限度Nに既に達している場合には、商店コンピュータ・システム103との取引にかかわらない。この検査に基づいて、ユーザ・コンピュータ・システム102は、ユーザ・コンピュータ・システム102と商店コンピュータ・システム103との間の前の取引の番号jをも計算する。ユーザ・コンピュータ・システム102は、通常は次の未使用の証明書Sに関連する、現在の取引に使用される通し番号Sのインデックスiをも判定する。同様に、商店コンピュータ・システム103は、ユーザ・コンピュータ・システム102との取引に対する限度N未満であるかどうかを判定する。
【0040】
ステップ212で、商店コンピュータ・システム103は、たとえば取引チャレンジ値rおよびrを含む、取引チャレンジ値を生成する。次に、取引チャレンジ値rおよびrは、ユーザ・コンピュータ・システム102に転送される。
【0041】
ステップ213で、ユーザ・コンピュータ・システム102は、通し番号Sを有する証明書Sと取引チャレンジ値rおよびrとに基づいて、ウォレット検査値Tを計算する。ユーザ・コンピュータ・システム102は、ユーザ・コンピュータ・システム102と商店コンピュータ・システム103との間のj番目の取引のマネー・ロンダリング検査値Vをも計算する。
【0042】
ステップ214で、使用される証明書Sが、i番目の通し番号Sとそれに関連するウォレット検査値Tおよびマネー・ロンダリング検査値Vとを商店コンピュータ・システム103に送信することによって、商店コンピュータ・システム103に送られる。
【0043】
ステップ215で、値i、j、sk、s、およびσの知識の証明πが、商店コンピュータ・システム103のためにユーザ・コンピュータ・システム102によって生成される。この証明πは、ユーザ・コンピュータ・システム102と商店コンピュータ・システム103との間で対話的にまたはFiat−Shamirヒューリスティックを使用して非対話的に実行することができる。
【0044】
ステップ216で、商店コンピュータ・システム103が、証明πを検証する。証明πが、この取引で使用される通し番号Sに関して有効である場合には、商店コンピュータ・システム103は、たとえば支払いに関して、通し番号Sおよび証明πに関連する証明書Sを受け入れる。
【0045】
図4に、証明書Sがより以前の取引で既に使われているかどうかを判定するのに使用される、組み合わされた銀行およびバリデータ・コンピュータ・システム101によって実行される妥当性検査手順の第1部分220を示す。
【0046】
ステップ221で、商店コンピュータ・システム103は、取引チャレンジ値rおよびrと、証明書Sの通し番号Sと、ウォレット検査値Tと、マネー・ロンダリング検査値Vとを含む証明書S、ならびに証明πをサブミットする。この形で、商店コンピュータ・システム103は、たとえば関連する金額が組み合わされた銀行およびバリデータ・コンピュータ・システム101によって貸方記入されることを要求することによって、証明書Sに関連する額を償還することを試みる。
【0047】
ステップ222で、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、証明πが通し番号Sと取引チャレンジ値rおよびrとに関して有効であることを検証する。証明πが有効でない場合には、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、即座にその取引の受入を拒否する。
【0048】
ステップ223で、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、通し番号Sに関連する証明書Sが、組み合わされた銀行およびバリデータ・コンピュータ・システム101に前に預けられたことがないことを検証する。
【0049】
証明書Sが、組み合わされた銀行およびバリデータ・コンピュータ・システム101に前に預けられたことがある場合には、ステップ224で、さらなる検査を実行し、同一の取引チャレンジ値rがより以前の取引で使用されたかどうかを検証する。
【0050】
そうである場合には、商店コンピュータ・システム103が、証明書Sの2回目の預け入れを試みている。その結果、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、ステップ225でこの証明書を拒否する。
【0051】
そうでない場合には、ユーザが、二重に使っており、銀行Bによって罰せられなければならない。この場合に、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、商店コンピュータ・システム103からの証明書を受け入れるが、ステップ226で、公開鍵pkに関連するユーザ・コンピュータ・システム102を識別する。
【0052】
任意選択のステップ227では、図2に示された引出プロトコル中に使用される電子決済システム100のセキュリティ・セッティングに応じて、組み合わされた銀行およびバリデータ・コンピュータ・システム101が、現在の取引と、同一の通し番号Sが使用されたより以前の取引とに基づいて、ユーザ・コンピュータ・システム102のウォレット秘密sを計算することができる。
【0053】
その結果、ステップ228で、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、ウォレット秘密sまたは公開鍵pkに基づいて、ユーザ・コンピュータ・システム102に発行された証明書Sの他のすべての通し番号Sを識別することができる。
【0054】
ステップ223でテストされた通し番号Sが一意である場合には、妥当性検査は、図5に示された第2部分230で継続され、この第2部分230は、現在の取引が取引に対する限度Nを超えないことを検証するのに使用される。
【0055】
ステップ231で、この取引について計算されたマネー・ロンダリング検査値Vを検証する。これは、現在のマネー・ロンダリング検査値Vを、より以前の取引でステップ232で組み合わされた銀行およびバリデータ・コンピュータ・システム101に既にサブミットされている以前のマネー・ロンダリング検査値Vと比較することによって行われる。
【0056】
マネー・ロンダリング検査値Vが一意である場合には、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、ステップ233で、サブミットされた証明書Sを受け入れ、この方法は終了する。
【0057】
そうでない場合には、さらなるステップ234で、組み合わされた銀行およびバリデータ・コンピュータ・システム101は、同一の取引チャレンジ値rが現在の取引およびより以前の取引で使用されたかどうかを検証する。
【0058】
同一の取引チャレンジ値rが使用された場合には、商店コンピュータ・システム103だけに責任がある。この場合には、ステップ235で、証明書を拒否し、この取引に関連する額は、商店コンピュータ・システム103に貸方記入されなくなる。
【0059】
そうでない場合には、ユーザにも責任がある。その結果、ステップ236、237、および238で、上で説明したように、組み合わされた銀行およびバリデータ・コンピュータ・システム101によって、公開鍵pkに関連するユーザ・コンピュータ・システム102が識別され、そのウォレット秘密sが暗号化解除され、この情報に基づいて、このユーザの証明書Sの他の通し番号Sが、計算される。さらに、商店Mも、ステップ235で現在の証明書を拒否することによって罰せられる。
【0060】
基礎になる問題の数学的複雑さに起因して、図2から図5に提示された流れ図は、電子決済システム100の情報フローの高水準の概要を提示することしかできない。組み合わされた銀行およびバリデータ・コンピュータ・システム101と、ユーザ・コンピュータ・システム102と、商店コンピュータ・システム103との間のプロトコルを実施するために行われる詳細な動作は、次の数学的説明で詳細に示す。
【0061】
セキュリティの定義
CHLシステムの定義は、二重使用を超える違反を処理するために一般化される。本明細書のオフライン電子マネー・シナリオは、アルゴリズムBKeygen、UKeygen、Withdraw、Spend、Deposit、{DetectViolation(i)、IdentifyViolator(i)、VerifyViolation(i)}、Trace、およびVerifyOwnershipと一緒に、3つの通常のプレイヤすなわち、ユーザ、銀行、および商店からなる。形式ばらずに言うと、BKeygenおよびUKeygenは、それぞれ銀行およびユーザの鍵生成アルゴリズムである。ユーザは、2個の硬貨のウォレットを入手するためにWithdraw中に銀行と対話し、銀行は、任意選択のトレーシング情報をデータベースDに保管する。Spendでは、ユーザは、そのユーザのウォレットからの1つの硬貨を商店で使い、その結果、この商店は、その硬貨の通し番号Sを入手し、商店Mは、硬貨のロケータすなわちマネー・ロンダリング検査値Vおよび有効性の証明πを記録する。Depositでは、正直な商店Mがユーザから硬貨C=(S,V,π)を受け入れる時に、必ず、銀行が預け入れについてこの硬貨を受け入れることの保証がある。銀行は、C=(S,V,π)をデータベースLに保管する。しかし、この点で、銀行は、Cがシステム条件のいずれかに違反するかどうかを判定する必要がある。
【0062】
違反iのそれぞれについて、アルゴリズムのタプル{DetectViolation(i),IdentifyViolator(i),VerifyViolation(i)}が定義される。ここでは、2つの違反がある。
【0063】
違反1(二重使用):DetectViolation(1)で、銀行が、L内の2つの硬貨C=(S,V,π)およびC=(S,V,π)が、同一の通し番号S=Sを有するかどうかをテストする。そうである場合には、銀行は、(C,C)に対してIdentifyViolator(1)アルゴリズムを実行し、違反者の公開鍵pkおよび有罪の証明Πを入手する。誰もが、公開鍵pkを有するユーザが通し番号Sを有する硬貨を二重に使ったことを確信するために、(pk,S,V,Π)に対してVerifyViolation(1)を実行することができる。
【0064】
違反2(マネー・ロンダリング):DetectViolation(2)で、銀行が、L内の2つの硬貨C=(S,V,π)およびC=(S,V,π)が、同一の商店レコード・ロケータすなわちマネー・ロンダリング検査値V=Vを有するかどうかをテストする。そうである場合には、銀行は、(C,C)に対してIdentifyViolator(2)アルゴリズムを実行し、違反者の公開鍵pkおよび有罪の証明Πを入手する。誰もが、公開鍵pkを有するユーザが商店レコード・ロケータすなわちマネー・ロンダリング検査値Vを有する硬貨に関する限界のある匿名性ビジネス限度を超えたことを確信するために、(pk,S,V,Π)に対してVerifyViolation(2)を実行することができる。
【0065】
任意選択として、すべての違反の後に、銀行は、有効な有罪の証明Πに対してTraceアルゴリズムを実行して、所有権の証明Γと一緒に、公開鍵pkを有する不正を働くユーザによってこれまでに使われたすべての通し番号Sのリストを入手することもできる。誰もが、公開鍵pkを有するユーザが通し番号Sを有する硬貨の所有者であったことを確信するために、(pk,S,Γ)に対してVerifyOwnershipを実行することができる。
【0066】
さらに、CHLシステムのセキュリティ定義は、電子マネー用に一般化される。正しさ、バランス、およびユーザの匿名性の、CHLシステムの形式化は、変更されないままである。おおまかに言って、バランスは、正直な銀行が、ユーザが引き出したものより多くの硬貨の預け入れを受け入れる必要が絶対になくなることを保証し、ユーザの匿名性は、ユーザが、既知のシステム条件の1つに違反しない限り、完全に匿名のままであることをユーザに保証する。次では、3つの追加のプロパティを説明する。これらのプロパティは、任意の指定された違反、具体的には上記の違反に適用するための、二重使用者およびその無罪証明可能性(exculpability)のCHLの識別およびトレーシングの一般化である。paramsは、ウォレットあたりの硬貨の個数および商店ごとの使用限度を含む、グローバル・パラメータであるものとする。
【0067】
違反者の識別:正直な商店(または、おそらくは複数の正直な商店)が、敵対者と共にSpendプロトコルを2回実行し、出力がC=(S,V,π)およびC=(S,V,π)であったと仮定する。このプロパティは、あるiについてDetectViolation(i)(params,C,C)が受け入れる場合に、IdentifyViolator(i)(params,C,C)が、鍵pkおよび証明Πを出力し、VerifyViolation(i)(params,pk,S,V,Π)が受け入れることを、高い確率で保証する。
【0068】
違反者のトレース:VerifyViolation(i)(params,pk,S,V,Π)が、硬貨C,Cから導出されたある違反iについて受け入れると仮定する。このプロパティは、Trace(params,pk,C,C,Π,D)が、所有権の証明Γ,…,Γと一緒にpkのユーザに属するすべての硬貨の通し番号S,…,Sを出力し、すべてのjについて、VerifyOwnership(params,pk,S,Γ)が受け入れることを、高い確率で保証する。
【0069】
無罪証明可能性:敵対者が、鍵pkを有する正直なユーザと共にWithdrawプロトコルに任意の回数だけ参加し、その後、その同一ユーザと共に違反しないSpendプロトコルに任意の回数だけ参加すると仮定する。次に、この敵対者は、整数iと、硬貨通し番号Sと、鍵pkを有するユーザが違反iを犯し、硬貨Sを所有すると主張する証明Γとを出力する。弱い無罪証明可能性プロパティは、すべての敵対者について、VerifyO(params,pk,S,Γ)が受け入れる確率を無視できることを述べる。
【0070】
さらに、敵対者は、このユーザをSpendプロトコルにかかわらせ続け、このユーザにシステム条件を違反することを強制することができる。次に、この敵対者は、(i,S,V,Π)を出力する。強い無罪証明可能性プロパティは、すべての敵対者について、(1)Sが、pkのユーザに属さない硬貨通し番号であるときに、弱い無罪証明可能性が成り立ち、(2)pkのユーザが違反iを犯さなかったときに、VerifyViolation(i)(params,pk,S,V,Π)が受け入れる確率は、無視できることを述べる。
【0071】
技術的予備行為
電子マネー・システムは、さまざまな既知のプロトコルを基本構成要素として使用するが、これらのプロトコルをこれから短く再検討する。これらのプロトコルの多くは、複数の異なる複雑さの仮定の下でセキュアであることを示すことができ、これが、本発明人の電子マネー・システムに拡張される柔軟性である。表記:本明細書では、gが群Gを生成することを示すために、G=〈g〉と書く。
【0072】
双一次写像
Bilinear_Setupが、セキュリティ・パラメータlの入力時に、双一次写像のパラメータを、γ=(q,g,h,G,g,h,G,G,e)として出力するアルゴリズムであるものとする。各群G=〈g〉=〈h〉、G=〈g〉=〈h〉、およびGは、素数位数q=Θ(2)の群である。効率的に計算可能な写像e:G×G→Gは、(双一次)すべてのg∈G、g∈G、およびa,b∈Zについて、
【0073】
【数1】

【0074】
であり、(非縮重)gがGの生成元であり、gがGの生成元である場合に、e(g,g)はGを生成する、の両方である。
【0075】
複雑さの仮定
本方式のセキュリティは、次の、CHLと同一の仮定に頼る。
【0076】
強いRSA仮定:RSAの法nおよびランダム要素
【0077】
【数2】

【0078】
を与えられて、h≡g mod nになる
【0079】
【数3】

【0080】
および整数e>1を計算することは困難である。法nは、特殊な形pqであり、ここで、p=2p’+1およびq=2q’+1は、安全な素数である。
【0081】
y−Decisional Diffie−Hellman Inversion仮定(y−DDHI):ランダムな生成元g∈G(ただし、Gは素数位数qを有する)と、ランダムなx∈Zの値
【0082】
【数4】

【0083】
と、値R∈Gとを与えられて、R=g1/xであるか否かを判断することは困難である。
【0084】
External Diffie−Hellman仮定(XDH):Bilinear_Setup(l)が、双一次写像e:G×G→Gのパラメータを作ると仮定する。XDH仮定は、Decisional Diffie−Hellman(DDH)問題がGで困難であることを述べる。これは、効率的に計算可能な同形写像ψ’:G→Gが存在しないことを暗示する。
【0085】
Sum−Free Decisional Diffie−Hellman仮定(SF−DDH):g∈Gが、位数qのランダム生成元であると仮定する。Lが、|q|の任意の多項式関数であるものとする。
【0086】
【数5】

【0087】
が、部分集合I⊂eq{1,…,L}の入力時に、値
【0088】
【数6】

【0089】
を出力するオラクルであるものとするが、ここで、いくつかの
【0090】
【数7】

【0091】
について
【0092】
【数8】

【0093】
である。さらに、Rは、J⊆{1,…,L}がIからDDH独立である場合に限ってR(J,I,…,I)=1になる述部であるものとする。すなわち、v(I)が、j∈Iの場合に限って位置jに1を有し、それ以外の場合に0を有する長さLのベクトルであるときに、v(J)+v(I)=v(I)+v(I)(加算は整数に対してビット単位である)になる3つの集合I、I、およびIはない。
【0094】
次に、すべての確率的多項式時間敵対者A(・)について、
【0095】
【数9】

【0096】
である。ただし、Qは、Aが
【0097】
【数10】

【0098】
に対して行ったクエリの集合である。
【0099】
鍵作成ブロック
1)既知の離散対数ベースのゼロ知識証明
一般的なパラメータ・モデルでは、(1)素数または合成数による離散対数の剰余の知識の証明、(2)2つの(おそらくは異なる)素数または合成数を法とする表現剰余の同等性の知識の証明、(3)あるコミットメントが2つの他のコミットされた値の積を表すことの証明、(4)コミットされた値が所与の整数区間内にあることの証明、および(5)前の4つのうちのいずれか2つの論理和または論理積の証明など、離散対数に関するステートメントを提供する複数の前から既知の結果が使用される。これらのプロトコルでは、合成数による剰余は、強いRSA仮定の下でセキュアであり、素数による剰余は、離散対数仮定の下でセキュアである。Fiat−Shamirヒューリスティックを適用して、そのような知識の証明を、あるメッセージmに対するsignature proof of knowledgeにすることができる。
【0100】
2)CL署名
Pedersenコミットメント方式によれば、公開パラメータは、素数位数qおよび生成元(g,…,g)の群Gである。値(v,…,v)∈をコミットするために、ランダムなr∈を選択し、
【0101】
【数11】

【0102】
をセットする。
【0103】
次の2つのプロトコルを有するセキュアな署名方式が存在する。(1)ユーザと鍵(pk,sk)を有する署名者との間の効率的なプロトコル。共通の入力は、pkおよびCすなわちPedersenコミットメントからなる。ユーザの秘密入力は、C=PedCom(v,…,v;r)になる値(v,…,v,r)の集合である。このプロトコルの結果として、ユーザは、そのユーザがコミットした値に対する署名
【0104】
【数12】

【0105】
を入手するが、署名者は、それらについて何も知るようにならない。署名は、サイズO(l log q)を有する。(2)ユーザと検証者との間の署名プロトコルの効率的な知識の証明。共通の入力は、pkおよびコミットメントCである。ユーザの秘密入力は、C=PedCom(v,…,v;r)になる値(v,…,v,r)および
【0106】
【数13】

【0107】
である。これらの署名は、強いRSA仮定の下でセキュアである。この説明において、CL署名が実際にどのように働くかは問題ではない。
【0108】
後続の電子マネー・システムは、CL署名と独立に、強いRSA仮定を使用する。双一次写像を使用することによって、実際により短い署名を作るために他の署名方式を使用することができる。
【0109】
3)検証可能な暗号化
検証可能な暗号化方式では、暗号化する側/証明する側は、既知の公開鍵の下での暗号化の平文が、Pedersenコミットメントで隠される値と同等であることを検証者に確信させる。"Jan Camenisch and Ivan Damgard. Verifable encryption, groupencryption, and their applications to group signatures and signature sharingschemes. In Tatsuaki Okamoto, editor, Advances in Cryptology | ASIACRYPT '00,volume 1976 of LNCS, pages 331-345. Springer Verlag, 2000"に、すべての意味論的にセキュアな暗号化方式を検証可能な暗号化方式にする技法が記載されている。
【0110】
この技法は、すべての意味論的にセキュアな暗号化方式を検証可能な暗号化方式にするのに使用することができる。検証可能な暗号化方式とは、証明する側兼暗号化する側Pと検証者兼受信側Vとの間の2当事者プロトコルである。
【0111】
おおまかに言って、PおよびVの共通の入力は、公開暗号化鍵pkおよびコミットメントAである。このプロトコルの結果として、Vは、Aの冒頭の暗号化cの拒否または入手のいずれかを行う。このプロトコルは、Vが、無視できる確率でのみ不正な暗号化を受け入れることと、VがAの冒頭について意味のあることを何も知るようにならないこととを保証する。対応する秘密鍵skと一緒に、トランスクリプトcは、Aの冒頭を効率的に回復するのに十分な情報を含む。本発明人は、ここではいくつかの詳細を隠し、十分な議論についてはCamenischおよびDamgardを参照する。
【0112】
4)双一次Elgamal暗号化
が、暗号化解除に十分であり、公開鍵が、ある関数fについてf(g)である暗号方式が、探されている。"Dan Boneh and Matthew Franklin. Identity-based encryption fromthe Weil pairing. In Joe Kilian, editor, Advances in Cryptology | CRYPTO '01,volume 2139 of LNCS, pages 213-229. Springer Verlag, 2001"で、アイデンティティベースのコンテキストでの1つの例が提供されている。ここでは、Sum−Free DDHによって暗示される仮定の下で意味論的にセキュアであるAteniese他の双一次Elgamal暗号化方式を使用する。
【0113】
具体的に言うと、Elgamal暗号化の次の双一次変形への上の検証可能な暗号化技法が、適用される。lに対してBilinear_Setupを実行してγ=(q,g,h,G,g,h,G,G,e)を入手し、ここで、双一次写像e:G×G→Gを有すると仮定する。(G,E,D)が、標準的な鍵生成アルゴリズム、暗号化アルゴリズム、および暗号化解除アルゴリズムを表すものとする。(l,γ)の入力の際に、鍵生成アルゴリズムGは、ランダムなu∈Zについて鍵対
【0114】
【数14】

【0115】
を出力する。主な発想は、値
【0116】
【数15】

【0117】
が、暗号化解除に十分であるということである。
【0118】
pkの下でメッセージm∈Gを暗号化するためには、ランダムなk∈Zを選択し、暗号文
【0119】
【数16】

【0120】
を出力する。次に、値
【0121】
【数17】

【0122】
を用いてc=(c,c)を暗号化解除するためには、単純に
【0123】
【数18】

【0124】
を計算する。この暗号化方式は、Decisional Bilinear Diffie−Hellman(DBDH)仮定の下で意味論的にセキュアであることがわかっている、すなわち、ランダムなa,b,c∈ZおよびX∈Gについて
【0125】
【数19】

【0126】
を与えられて、X=e(g,gabcであるかどうかを判断することは困難である。
【0127】
5)DY擬似ランダム関数(PRF)
G=〈g〉が、素数位数qの群であるものとする。sが、Zのランダムな要素であるものとする。DodisおよびYampolskiyは、最近、入力
【0128】
【数20】

【0129】
に関する擬似ランダム関数
【0130】
【数21】

【0131】
を提案した。この構成は、y−DDHIの下でセキュアである。上で説明した構成では、本発明のウォレットをO(l+k)ビットからO(l・k)ビットに大きくするという犠牲を払って、DY PRFをNaor−Reingold PRFに置換し、y−DDHI仮定をより標準的なDDH仮定に置換することができる。
【0132】
限界のある匿名性モデルでのコンパクト電子マネー
CHLコンパクト電子マネー方式と同様に、ユーザは、銀行から2個の硬貨のウォレットを引き出し、これらを1つずつ使う。また、CHL方式と同様に、擬似ランダム関数F(・)(・)が使用され、この関数の範囲は、大きい素数位数qの、ある群Gである。
【0133】
高水準で、ユーザは、後で説明する適当な領域から5つの値(x,s,t,v,w)を選択することと、これらの値に対する銀行の署名σを入手するために銀行と共に適当なセキュア・プロトコルを実行することによって、2=N個の硬貨のウォレットを形成する。
【0134】
次では、ユーザが、商店Mから商品を買うことによって硬貨番号iを使うことを望み、この商店とのK回までの取引だけを匿名にすることができると仮定する。さらに、これが、このユーザのMとのj回目の取引であり、j≦Kであると仮定する。ウォレット内のi番目の硬貨に関連するのが、その通し番号S=F(i)である。商店Mとのj番目の取引に関連するのが、その商店のレコード・ロケータV=F(M,j)である。
【0135】
本発明の実施形態によれば、Spendプロトコルで、ユーザが、値(S,V)を、これらの値が(s,i,v,M,j)の関数として計算されることの(非対話的ゼロ知識)証明と一緒に商店に与えなければならないことが規定され、ここで、1≦i≦Nであり、1≦j≦Kであり、(s,v)は、銀行によって署名されたウォレットに対応する。SおよびVは、擬似ランダムであり、したがって、計算的に情報を漏らさず、証明は、ゼロ知識なので情報を漏らさない。あるユーザが、N個を超える硬貨を使うと仮定する。その場合に、このユーザは、いくつかの通し番号を複数回使用している。というのは、形F(i)、ただし1≦i≦Nの可能な値SがN個しかないからである。同様に、あるユーザが、MとのK回を超える取引を行ったと仮定する。その場合に、このユーザは、いくつかの商店レコード・ロケータを複数回使用している。というのは、固定されたMについて、異なる値V=F(M,j)、ただし1≦j≦KがK個しかないからである。したがって、二重使用および限界のある匿名性ビジネス・モデルの違反を検出することができる。
【0136】
次では、任意のSまたはVの複数回の使用が識別につながることをどのように提供するかを説明する。sおよびvの他に、ウォレットには、x、t、およびwも含まれる。値x∈は、gが、ユーザのアイデンティティに公開してリンクできる値になるような値である(ただし、gは、群Gの生成元である)。たとえば、ある計算可能関数fについて、f(g)をユーザの公開鍵とすることができる。取引の一部として、商店が、ランダム値r≠0を与え、ユーザが、T=g(i)およびW=g(M,j)を、TおよびWがまさに同一のウォレットならびに同一のiおよびjに対応する(r,x,t,i,w,M,j)の関数として適当に計算されることの証明と一緒に明らかにすると仮定する。やはり、TおよびWは、擬似ランダムであり、したがって、情報を一切漏らさない。
【0137】
ユーザが、同一の通し番号S=F(i)を2回使用し、qが適度に大きい場合に、高い確率で、2つの異なる取引で、そのユーザは、異なるrを受け取り、これらをrおよびrと呼び、したがって、
【0138】
【数22】

【0139】
を用いて応答しなければならない。値gを、その後に次にように計算できることは、簡単にわかる。
【0140】
【数23】

【0141】
ユーザが、同一の商店のレコード・ロケータ番号Vを2回使用する場合に、gを正確に同一の形で見つけることができることも、そうであることが示される。この2つの取引で、商店が同一のrを使用すると仮定する。その場合に、銀行は、単純にこのe−coinの預け入れを拒否することができる(商店が同一なので、この商店が、適当なランダム化のその商店自体の欠如の責任を負う)。この商店が2つの異なるrすなわちrおよびrを使用し、WおよびWを生じたと推定される場合に、
【0142】
【数24】

【0143】
であることがわかる。
【0144】
したがって、二重使用または限界のあるビジネス・モデルの違反は、識別につながる。唯一の残っている疑問は、同一ユーザの他の取引をトレースするために、これをどのように適合させることができるかである。gは、必ずしも公開値ではなく、f(g)だけが公開される場合もありえるが、gの知識は、sを検証可能に暗号化することによって形成された暗号文を暗号化解除する能力を与える(たとえば、BonehおよびFranklinの暗号方式は、gが暗号化解除に十分であるというプロパティを有する)。ウォレットを引き出すときに、ユーザは、そのような暗号文を銀行に与える。sの知識は、このウォレットからのすべての硬貨の通し番号を発見することを可能にし、それらがどのように使われたかを調べることを可能にする。
【0145】
最後に、値(x,v,w)は、特定のウォレットではなく、ユーザのアイデンティティに結び付けられなければならない。この形では、ユーザが特定の商店で異なるウォレットから多すぎる金銭を使うことを試みる場合であっても、それが検出および識別につながる。
【0146】
本プロトコルの詳細な説明
本方式は、CHL電子マネー方式の拡張なので、Dodis−Yampolskiy擬似ランダム関数すなわち、
【0147】
【数25】

【0148】
が使用され、ここで、gは、適切な群の生成元であり、CL署名および関連するプロトコルが、署名を発行し、署名の知識を証明するのに使用され、双一次Elgamal暗号方式が、Camenisch−Damgard検証可能暗号化技法と共に使用される。
【0149】
表記:
【0150】
【数26】

【0151】
であるものとし、Hが、その範囲が適当な群であるハッシュ関数であるときに、
【0152】
【数27】

【0153】
であるものとする。
【0154】
これから、本システムのプロトコルすなわち、Setup、Withdraw、Spend、およびDeposit(違反に応答するプロトコルを含む)を説明する。
【0155】
Setupプロトコル
kが、セキュリティ・パラメータであると仮定する。共通のシステム・パラメータは、Bilinear_Setup(l)→(q,g,G,g,h,G,G,e)、ウォレット・サイズl、ならびに2つのハッシュ関数H:{0,1}→GおよびH:{0,1}→Gである。銀行は、CL署名鍵(pk,sk)を生成する。
【0156】
各ユーザは、形sk=(x,v,w)およびpk=(e(g,h,e(g,h,e(g,h)の鍵対を生成し、ここで、x、v、およびwは、Zからランダムに選択される。各ユーザは、任意のセキュア署名方式用の署名鍵も生成する。各商店は、一意のアイデンティティ・ストリングidも公開する。また、各ユーザが商店idで使うことのできる硬貨の個数の上限Nが決定される。
【0157】
Withdrawプロトコル
ユーザUは、次のように銀行Bから2個の硬貨を引き出す。このユーザおよび銀行は、対話型プロトコルにかかわり、両方がエラーを報告しない場合に、最後に、
1.Uは、(s,t,σ)を入手し、ここで、s、tは、Z内のランダムな値であり、σは、(sk,s,t)に対する銀行の署名すなわち(x,v,w,s,t)である。
2.Bは、e(g,hの下でのsの検証可能な暗号化すなわち、ユーザの公開鍵pkの最初の要素を、この暗号化に対するユーザの署名と一緒に入手する。
3.Bは、sk、s、またはtに関して何も知るようにならない。
【0158】
ステップ1は、文献"Jan Camenisch and AnnaLysyanskaya. A signature scheme with ecient protocols. In Stelvio Cimato,Clemente Galdi, and Giuseppe Persiano, editors, Security in Communication Networks'02, volume 2576 of LNCS, pages 268{289. Springer Verlag, 2002"に記載のように、署名および関連するプロトコルを使用して実現することができる。ステップ2は、Camenisch−Damgard検証可能暗号化技法を双一次Elgamal暗号方式に適用することによって実現することができる。ステップ3は、他の2つから得られる。これらのステップのすべてが、本質的にCHL電子マネー方式と同一であり、例外は、ここではxのほかにvおよびwをも含む署名された秘密鍵である。
【0159】
Spendプロトコル
ユーザUは、次のように、N個の硬貨という使用限度を伴って、商店Mで1つの硬貨を使う。CHLと同様に、このユーザは、このユーザのウォレット内で使われる硬貨の個数の、1から2までの秘密カウンタiを保持する。さらに、このユーザは、現在、このユーザが各商店で使った硬貨の個数を表す、商店Mごとのカウンタjも保持する。
1.Uは、商店Mに関するUの使用限度未満である、すなわち、j<Nであることを検査する。そうでない場合には、Uは、打ち切る。
2.Mは、ランダムな
【0160】
【数28】

【0161】
をUに送信する。
3.Uは、Mとのj番目の取引で、Uのウォレット内のi番目の硬貨をMに送信する。sk=(x,v,w)であることを想起されたい。この硬貨は、通し番号Sおよびウォレット検査T、ただし
【0162】
【数29】

【0163】
と、2つのマネー・ロンダリング検査値VおよびW、ただし
【0164】
【数30】

【0165】
と、(i,j,sk=(x,v,w),s,t,σ)の知識のゼロ知識証明(ZKPOK)πとからなり、
(a)1≦i≦2
(b)1≦j≦N
(c)
【0166】
【数31】

【0167】
、すなわち、S=e(g,h1/(S+i)
(d)
【0168】
【数32】

【0169】
(e)
【0170】
【数33】

【0171】
(f)
【0172】
【数34】

【0173】
(g) VerifySig(pk,(sk=(x,v,w),s,t),σ)=true
になる。証明πは、Fiat−Shamirヒューリスティックを使用して非対話的にすることができる。
4.πが検証され、値Vが前にMによって一度も見られていない場合に、Mは、硬貨(r,r,S,T,V,W,π)を受け入れ、保存する。値Vが、前に硬貨(r,r,S’,T’,V,W’,π’)で以前に見られた場合に、Mは、Open(W’,W,r,r)を返す。Mが、Spendプロトコルを正直に実行する(すなわち、各プロトコルの始めに新しいランダムな値を選択する)場合に、高い確率で、r≠rであり、
【0174】
【数35】

【0175】
である。したがって、この商店は、Uの公開鍵の一部である
【0176】
【数36】

【0177】
を計算することによって、このユーザを識別することができる。これは、正直な商店が、その商店で超過して使うことを試みる顧客からその商店自体を保護することを可能にする(その商店が正直でない場合には、銀行が、預け入れの時に超過使用を把握する)。
【0178】
ステップ3(a)、3(c)、および3(d)は、CHL方式と同一であるが、ステップ3(b)、3(e)、および3(f)は、新規であるがステップ3(a)、3(c)、および3(d)に類似する。最後に、ステップ3(g)は、正しく適合される必要がある。その結果、ステップ3(a)および3(b)は、標準技法を使用して行うことができる。ステップ3(c)から3(f)は、"Jan Camenisch, Susan Hohenberger, and Anna Lysyanskaya.Compact E-Cash. In Ronald Cramer, editor, Advances in Cryptology { EUROCRYPT'05, volume 3494 of LNCS, pages 302-321, 2005"に記載のCamenisch、Hohenberger、およびLysyanskayaの技法を使用して行うことができる。ステップ3(g)は、Camenisch署名およびLysyanskaya署名を使用して行うことができる。
【0179】
Depositプロトコル
商店Mは、硬貨(r,r,S,T,V,W,π)をサブミットすることによって、銀行Bに硬貨を預ける。銀行は、証明πを検査し、これが検証されない場合には、銀行は、即座に拒否する。ここで、銀行は、2つの追加検査を行う。
【0180】
第1に、Bは、硬貨の使用者がその使用者のウォレットを超過して使っていないことを検査する、すなわち、銀行は、同一の通し番号Sを有する前に受け入れられたすべての硬貨を検索する。そのような硬貨(r,r,S,T’,V’,W’,π’)が見つかると仮定する。r=rである場合には、Bは、その硬貨を受け入れることを拒否する。そうでない場合には、Bは、商店からの硬貨を受け入れるが、ここで、二重に使ったユーザを罰しなければならない。
1.Bは、
【0181】
【数37】

【0182】
を実行する。
2.Bは、
【0183】
【数38】

【0184】
を含む公開鍵を有する人としてユーザを識別する。
3.Bは、
【0185】
【数39】

【0186】
を使用して、引き出しプロトコル中に銀行に渡されたsの暗号化を暗号化解除する。次に、Bは、sを使用して、そのユーザのウォレット内のすべての硬貨の各硬貨j=1 to 2の通し番号
【0187】
【数40】

【0188】
を計算する。実際に、銀行は、
【0189】
【数41】

【0190】
を使用して、同一の形ですべてのユーザのウォレットの秘密を暗号化解除し、これらの取引をトレースすることができる。
【0191】
第2に、Bは、硬貨の使用者が、商店Mに関する使用限度を超えていないことを検査する。すなわち、この銀行は、同一のマネー・ロンダリング検査値Vを有する、以前に受け入れられたすべての硬貨を検索する。そのような硬貨(r,r,S’,T’,V,W’,π’)が見つかると仮定する。この銀行は、預け入れを受け入れるのを拒否し、その商店を罰する。この銀行は、ここで、使用者に責任があるかどうかを判定する。r=rである場合に、Bは、商店だけを罰する。そうでない場合には、Bは、マネー・ロンダリングを試みたユーザも罰する。
1.Bは、
【0192】
【数42】

【0193】
を実行する。
2.Bは、
【0194】
【数43】

【0195】
を含む公開鍵を有する人としてユーザを識別する。
3.Bは、
【0196】
【数44】

【0197】
を使用して、引き出しプロトコル中に銀行に渡されたsの暗号化を暗号化解除する。次に、Bは、sを使用して、そのユーザのウォレット内のすべての硬貨の各硬貨j=1 to 2の通し番号
【0198】
【数45】

【0199】
を計算する(実際に、銀行は、
【0200】
【数46】

【0201】
を使用して、同一の形ですべてのユーザのウォレットの秘密を暗号化解除し、これらの取引をトレースすることができる。
すべての検査に合格する場合に、Bは、Mの口座内の預け入れに関してこの硬貨を受け入れる。
【0202】
預け入れプロトコルは、CHL方式の預け入れプロトコルに類似する、すなわち、二重使用の検査だけではなく、銀行は、現在、マネー・ロンダリングについても検査する。したがって、ユーザが正直である場合に、銀行は、前のように1つではなく、2つのデータベース・ルックアップを実行する。
【0203】
次では、Open()アルゴリズムを説明するが、これは、CHLシステムと同一である。
【0204】
【数47】

【0205】
したがって、いくつかの要素h∈Gおよび
【0206】
【数48】

【0207】
について
【0208】
【数49】

【0209】
である場合に、Open(W,W,r,r)=gが得られる。
【0210】
次では、違反関連プロトコルがどのように働くかを説明する。C=(r,r,S,T,V,W,π)およびC=(r,r,S’,T’,V’,W’,π’)が、一方は既存の通貨であり、他方は新に預けられる硬貨であるものとする。二重検出またはマネー・ロンダリングの検出には、それぞれS=SまたはV=Vの検査が用いられる。識別アルゴリズムは、適当な入力に対してOpenを実行し、結果の有罪の証明は、Π=(C,C)である。違反の検証は、硬貨の妥当性を成功して検査することと、損害賠償を請求された違反を検出することと、Openを実行して
【0211】
【数50】

【0212】
を入手することと、そのpkに対する関係を検査することとが含まれる。1つの違反の漏洩を使用して、そのユーザの硬貨を使うことまたは別の違反を捏造することはできない)。トレース・アルゴリズムには、Withdraw中にユーザによって署名された暗号化Eからsを回復することと、すべての通し番号を計算することとが含まれる。所有権の証明は、
【0213】
【数51】

【0214】
であり、ここで、σは、Eに対するユーザの署名である。ある通し番号Sに関する所有権の検証は、署名σを検証することと、
【0215】
【数52】

【0216】
であることを検査することと、sを回復するためにEを暗号化解除することと、すべての通し番号Sを計算することと、すべてのiについてS=Sであるかどうかをテストすることとが含まれる。
【0217】
システム違反者に関する処罰の軽減
システム違反者に関する処罰をより寛大にするために、または単にシステムをより効率的にするために、2つの他のオプションが使用可能である。
オプション(1):違反が検出され、ユーザのアイデンティティが明らかにされる。このシステムは、Withdrawプロトコル中に、ユーザがウォレット秘密sの検証可能な暗号化を銀行に与えないことを除いて、上と同様に動作する。次に、後に、Depositプロトコル中に、銀行は、それでも、違反を検出し、ユーザを識別することができるが、このユーザを含む他の取引の通し番号を計算することはできない。
オプション(2):違反が検出される。このシステムは、Spendプロトコル中に、ユーザが商店にマネー・ロンダリング検査値Vを与えないことを除いて、オプション(1)のシステムと同様に動作する。次に、後に、Depositプロトコル中に、銀行は、それでも、違反を検出することができるが、ユーザを識別することはできない。
【0218】
効率の考慮事項
プロトコル効率の表示として、いくつかの数字を述べる。たとえば、ユーザが、コミットメントを作るために14回の複数の底の指数を計算しなければならず、証明のためにさらに20回計算しなければならなくなるようにSpendを構成することができる。この例では、商店および銀行は、硬貨が有効であることを検査するために、20回の複数の底の指数を行う必要がある。本プロトコルは、ユーザと商店との間の2ラウンドの通信、ならびに銀行と商店との間の1ラウンドの通信をもたらす。上のオプション(2)を採用する場合に、コミットメントを作るために13回の複数の底の指数と、証明のためにさらに18回になる。銀行および商店による検証は、8回の複数の底の指数を要する。
【0219】
セキュリティの証明
限界のある匿名性ビジネス・モデルでは、本方式は、ランダム・オラクル・モデルでの強いRSA仮定、y−DDHI仮定、およびXDH仮定またはSum−Free DDH仮定のいずれかの下で、正しさ、バランス、ユーザの匿名性、違反者の識別、違反者のトレース、および強い無罪証明可能性を達成する。
【0220】
スペースの制限に起因して、いくつかの高水準直観を、証明の梗概と一緒に提供する。CHLの3つの主な観察がある。これらは、二重使用を超えた違反を防ぐために、特にPRFの出力を商店にリンクするためのPRFの注意深い使用を介して拡張することができる。
【0221】
バランス:ウォレットごとに、sは、硬貨の有効な通し番号とすることができる正確にN個の値を決定論的に定義する。ウォレットを超過して使うために、ユーザは、1つの通し番号を2回使用することができるが、その場合に、このユーザは、識別可能であり、あるいは、ユーザは、CL署名を偽造するか、ZK証明を捏造することができる。
【0222】
ユーザの匿名性:硬貨は、ゼロ知識なので何も漏らさない妥当性の(非対話的ゼロ知識)証明と一緒に、擬似ランダムであり、したがって、やはりユーザに関する情報を漏らさない4つの値(S、T、V、W)からなる。
【0223】
ここでの唯一の異常は、VおよびWを計算する時に、PRFに使用される底が、商店のアイデンティティのハッシュである(SおよびTの計算に使用される固定された底ではなく)ことである。ハッシュHをランダム・オラクルとして扱うことによって、
【0224】
【数53】

【0225】
を与えられれば、すべての他の入力に対する
【0226】
【数54】

【0227】
、特にid≠id
【0228】
【数55】

【0229】
の出力が、ランダムから区別不能であることがわかる。具体的に言うと、
【0230】
【数56】

【0231】
を与えられた敵対者が、H(id1/(v+j)を、あるランダムな固定されたH(id)およびH(id)についてランダムから区別できる場合に、これは、DDHを解いている。
【0232】
無罪証明可能性:第1に、正直なユーザを、そのユーザが犯していない犯罪について有罪と証明することはできない。というのは、有罪の証明に、ユーザの秘密値
【0233】
【数57】

【0234】
が含まれるからである。ユーザが正直である場合には、そのユーザだけがこの値を知っている。第2に、不正を働くユーザであっても、そのユーザが犯していない犯罪について有罪と証明することはできない。たとえば、1つの硬貨の二重使用は、20個の硬貨のマネー・ロンダリングの偽の証明を可能にしない。というのは、(1)罪が、硬貨自体から公に検証可能であり、(2)xの知識が硬貨を作成するためのdであるからである。違反によって漏らされる値
【0235】
【数58】

【0236】
の値は、そのユーザのウォレットから硬貨を使うのには十分でない。
【0237】
下では、証明の概要を、上で輪郭を示した定義に基づいて示す。
【0238】
正しさ:正直な当事者が本プロトコルに従う場合に、誰もエラー・メッセージを出力しないことを検証することができる。
【0239】
バランス:Aが、銀行として働くエクストラクタEとのn回のWithdrawプロトコルを実行する敵対者であるものとする。各Withdraw中に、Eは、Aが(x,s,t,v,w)の知識の証明を与える時にEがこれらの値を抽出することを除いて、正確に、正直な銀行が行う通りに動作する。sから、Eは、Aがそのウォレットについて計算できるすべての正当な通し番号を特定の確率で計算することができる。Lが、すべてのウォレットからのすべての通し番号の集合を表すものとする。ここで、Aが、通し番号
【0240】
【数59】

【0241】
を有する硬貨を正直な銀行に受け入れさせることができると仮定する。その場合に、Aは、妥当性の偽の証明をでっち上げたことになるが、これは、無視できる確率で発生する。
【0242】
ユーザの匿名性:匿名性のCHL定義は、ユーザのウォレット、秘密鍵、またはユーザの公開鍵にさえアクセスせずにSpendプロトコルのユーザの側を成功して実行できるシミュレータSをもたらす。Sが商店Mで硬貨を使うことを望み、ウォレット・サイズがNであり、Mの匿名使用限度がMであると仮定する。Sは、ランダムな値(x,s,t,v,w)を選択し、1≦i≦Nであり、1≦j≦Mである。次に、Sは、正直なユーザが行うのと正確に同一に、硬貨通し番号
【0243】
【数60】

【0244】
と、商店レコード・ロケータ
【0245】
【数61】

【0246】
と、検査値
【0247】
【数62】

【0248】
とを作成する。これらの値は、擬似ランダムなので、実際の通貨から区別不能である。Sは、(S、T、V、W)がきちんと形成されていることと、iおよびjが適当な範囲内にあることを証明することができる。Sが捏造する可能性がある証明の唯一の部分は、Sが(x,s,t,v,w)に対する銀行からの署名を有することである。ここで、Sは、このステップに関する適当なCLシミュレータを呼び出し、このCLシミュレータは、ランダム・オラクルの制御を要求する。
【0249】
違反者の識別:バランスで説明したように、エクストラクタEは、敵対者Aと複数回のSpendプロトコルを実行し、高い確率で(x,s,t,v,w)を抽出する。ウォレットごとに、Eは、1≦i≦Nのすべての有効な硬貨通し番号
【0250】
【数63】

【0251】
と、1≦j≦Mおよびいくつかの商店Mについてすべての有効な商店レコード・ロケータ
【0252】
【数64】

【0253】
とを計算することができる。ここで、Aが、同一の通し番号S=Sを有する2つの硬貨C=(S,T,V,W,π,r,r)およびC=(S,T,V,W,π,r,r)または同一の商店レコード・ロケータV=Vを有する2つの硬貨を正直な銀行に受け入れさせることができると仮定する。これらの衝突が発生するために、硬貨は、同一のウォレット(x,s,t,v,w)から発し、同一のiまたは同一の(id,j)のいずれかを有し、きちんと形成される。そうでなければ、ユーザが、妥当性の証明を偽造している。その場合に、特定の確率で
【0254】
【数65】

【0255】
または
【0256】
【数66】

【0257】
のいずれかであり、これによって、ユーザのアイデンティティが明らかにされる。
【0258】
違反i=1(二重使用)の有罪の証明Πは、有効な硬貨(C,C)である。誰もが、
【0259】
【数67】

【0260】
であることと、pk
【0261】
【数68】

【0262】
に対応する
【0263】
【数69】

【0264】
とを検査することができる。同様に、違反i=2(特定の商店に関する匿名ビジネス限界を超えること)の有罪の証明は、V=Vであり、
【0265】
【数70】

【0266】
であり、
【0267】
【数71】

【0268】
がpkに対応する、有効な硬貨(C,C)である。
【0269】
1つの専門事項は、2つのウォレット種s、s’が、|s−s’|<2=Nになっており、したがって、これらのウォレットが、少なくとも1つの通し番号でオーバーラップする場合に何が起きるかである。同一の通し番号が、両方のウォレットから使われる場合に、銀行は、二重に使われたものとしてこれらにフラグを立てるが、それでも、識別アルゴリズムは動作しない。というのは、二重使用が実際には発生していないからである。これは銀行を混乱させる可能性があるので、この問題を、銀行にウォレットごとのsの選択にランダムさを与えさせることによって回避することができる。s、s’がZからランダムに引き出されるときに、それらがオーバーラップする可能性は、2l+1/qである。
【0270】
違反者のトレース:Withdraw中に、各ユーザは、そのユーザ自身の鍵
【0271】
【数72】

【0272】
が暗号化解除に十分になるように、そのユーザのウォレット秘密sの検証可能な暗号化Eを銀行に渡すように求められる。ユーザは、この暗号化に署名するようにも求められる。違反者の識別プロパティによって、システム違反は、銀行が
【0273】
【数73】

【0274】
を回復することを可能にすると推論することができる。検証可能な暗号化の完全性によって、不正を働くユーザに属する各ウォレットを、
【0275】
【数74】

【0276】
を使用して、高い確率で開いて、ウォレット種sを回復し、1≦i≦Nのすべての通し番号
【0277】
【数75】

【0278】
を計算することができる。
【0279】
通し番号Sを有するある硬貨の所有権の証明Γは、暗号化E、暗号化解除鍵
【0280】
【数76】

【0281】
、およびEに対する署名からなる。検証者は、まず、
【0282】
【数77】

【0283】
がpkに対応することと、Eに対する署名が有効であることを検査しなければならない。次に、検証者は、Eを暗号化解除してsを回復し、1≦i≦Nのすべての通し番号
【0284】
【数78】

【0285】
を計算し、いくつかのiについてS=Sであることをテストすることができる。
【0286】
強い無罪証明可能性:強い無罪証明可能性は、2つの部分を有する。第1に、正直なユーザと対話する敵対者は、pkを有するユーザが違反iについて有罪でない限り、VerifyViolation(i)(params,S,V,Π)が受け入れるように値(i,S,V,Π)を作ることはできない。
【0287】
証明Πは、
【0288】
【数79】

【0289】
を明らかにする2つの有効な硬貨(C,C)からなる。
【0290】
【数80】

【0291】
は秘密情報なので、これを公開することは、そのユーザがある違反を犯したことを知らせる。そのユーザが間近な特定の違反(以前の違反ではなく)の責任がある理由は、x(単純に
【0292】
【数81】

【0293】
ではなく)の知識が、有効な硬貨を作成するのに必要になることである。
【0294】
第2部分は、敵対者が、ユーザにシステム条件を違反することを強制した後であっても、通し番号Sを有する通貨がpkを有するユーザに実際に属さない限り、VerifyOwnership(params,pk,S,Γ)が受け入れるように(i,S,Γ)を作ることができないことである。証明Γは、暗号化E、ユーザの署名σ、および暗号化解除鍵
【0295】
【数82】

【0296】
からなる。ユーザによって署名されたすべての暗号化は、ある平文sに高い確率で対応し、この平文sは、そのユーザに属するすべての通し番号を計算することを可能にする。したがって、敵対者は、勝つためにはある新しい暗号化に対するユーザの署名を偽造しなければならないはずであり、これは、無視できる確率で発生すると考えられる。
【0297】
上で提示した詳細な説明は、電子決済システムに言及するが、限界のある匿名性に関連する類似する問題は、本発明的方法によって対処し、解決することができる。具体的に言うと、エミッタに、証明書ベースのシステム上の異なるアクセプタへの限られた回数の匿名アクセスを許可するすべてのシステムを、本発明的方法に基づいて実施することができる。そのようなシステムの例に、プリンタ・クォータ・システム、電子投票システム、および他の電子政府サービスを含めることができるが、これらに限定はされない。
【0298】
CHLシステムのほかに、電子マネー・ロンダリングを防ぐために、他の基礎になる電子決済システムを機能強化することができる。類似する形で拡張できるもう1つの電子決済システムの例が、Stefan Brandsによる論文、"Untraceable Off-Line Cash in Wallets withObservers", published in CRYPTO '93, Vol. 773 of LNCS, page 302, 1994に記載されている。
【図面の簡単な説明】
【0299】
【図1】本発明の実施形態による、組み合わされた銀行およびバリデータ・コンピュータ・システムと、ユーザ・コンピュータ・システムと、商店コンピュータ・システムとを含む電子決済システムを示す図である。
【図2】本発明の実施形態による方法を示す流れ図の一部である。
【図3】本発明の実施形態による方法を示す流れ図の一部である。
【図4】本発明の実施形態による方法を示す流れ図の一部である。
【図5】本発明の実施形態による方法を示す流れ図の一部である。
【符号の説明】
【0300】
100 電子決済システム
101 組み合わされた銀行およびバリデータ・コンピュータ・システム
102 ユーザ・コンピュータ・システム
103 商店コンピュータ・システム
104 データ・ネットワーク
200 第1の2当事者プロトコル
201 パラメータをセット・アップするステップ
202 発行者鍵(pk,sk)を生成するステップ
203 エミッタ鍵(pk,sk)を生成するステップ
204 ランダムな値s、tを生成するステップ
205 (sk,s,t)に対する署名σを生成するステップ
206 証明書S(s,t,s)を保管するステップ
210 第2の2当事者プロトコル
211 取引限度Nを検査し、i,jを判定するステップ
212 取引チャレンジ値(r,r)を生成するステップ
213 ウォレット検査Tおよび検査値Vを計算するステップ
214 証明書Sおよび検査値T,Vを送信するステップ
215 (i,j,sk,s,σ)の知識の証明πを生成するステップ
216 証明πを検証するステップ
220 妥当性検査手順の第1部分
221 証明書r,r,S,T,V、および証明πをサブミットするステップ
222 証明πを検証するステップ
223 Sが一意であるかどうかを判定するステップ
225 証明書Sを拒否するステップ
226 エミッタpkを識別するステップ
227 エミッタpkのウォレット秘密sを暗号化解除するステップ
228 sに基づいて他のSを計算するステップ
230 第2部分
231 検査値Vを検証するステップ
232 Vが一意かどうかを判定するステップ
233 証明書Sを受け入れるステップ
234 r=r’かどうかを判定するステップ
235 証明書Sを拒否するステップ
236 エミッタpkを識別するステップ
237 エミッタpkのウォレット秘密sを暗号化解除するステップ
238 sに基づいて他のSを計算するステップ
B 銀行
D データベース
e 双一次写像
ハッシュ関数
ハッシュ関数
id 一意のアイデンティティ
k セキュリティ・パラメータ
l ウォレット・サイズ
L データベース
M 商店
取引に対する限度
pk 署名鍵
pk エミッタ鍵
取引チャレンジ値
取引チャレンジ値
S 証明書
通し番号
sk エミッタ鍵
sk 署名鍵
s ウォレット秘密
t ウォレット秘密
U ユーザ
マネー・ロンダリング検査値
ウォレット検査値
σ 署名
π 証明

【特許請求の範囲】
【請求項1】
署名鍵(pk,sk)を有する発行者と、エミッタ鍵(pk,sk)を有するエミッタと、一意のアイデンティティ(id)および取引に対する限度(N)を有するアクセプタと、バリデータとの間の取引を自動的に妥当性検査する方法であって、
前記エミッタによって前記発行者から証明書(S)を回収するステップであって、前記証明書(S)が、前記発行者の前記署名鍵(pk,sk)および前記エミッタの前記エミッタ鍵(pk,sk)に基づいて前記発行者と前記エミッタとの間の第1の2当事者プロトコルを使用して計算される、ステップと、
前記エミッタによって前記アクセプタで前記証明書(S)を使うステップであって、マネー・ロンダリング検査値(V)が、前記証明書(S)、前記エミッタと前記アクセプタとの間の取引番号(j)、前記アクセプタによって生成される取引チャレンジ値(r,r)、および前記アクセプタの前記一意のアイデンティティ(id)に基づいて前記エミッタと前記アクセプタとの間の第2の2当事者プロトコルを使用して計算される、ステップと、
前記アクセプタによって前記バリデータに前記証明書(S)、前記取引チャレンジ値(r,r)、および前記マネー・ロンダリング検査値(V)を預けるステップと、
前記マネー・ロンダリング検査値(V)をより以前の取引で前記バリデータに既に預けられたマネー・ロンダリング検査値(V’)と比較することによって、前記エミッタと前記アクセプタとの間の取引の回数が前記アクセプタの取引に対する前記限度(N)未満であることを検証することによって、前記バリデータによって前記取引を妥当性検査するステップと、
を含む方法。
【請求項2】
使う前記ステップで、知識の証明(π)が、前記エミッタによって計算され、前記アクセプタに送信され、
預ける前記ステップで、前記証明(π)が、前記バリデータに預けられ、
妥当性検査する前記ステップが、さらに、前記証明(π)が、前記アクセプタの前記一意のアイデンティティ(id)、前記証明書(S)、および前記マネー・ロンダリング検査値(V)に関して有効であることを検証するステップを含む
請求項1に記載の方法。
【請求項3】
妥当性検査する前記ステップで、前記バリデータが、証明(π)が前記アクセプタの取引に対する前記限度(N)に基づいて計算されたことを検証する
請求項2に記載の方法。
【請求項4】
前記バリデータが、より以前の取引で前記バリデータに預けられたマネー・ロンダリング検査値(V’)が現在の取引の前記マネー・ロンダリング検査値(V)と等しいことを検出する場合に、妥当性検査する前記ステップが、さらに、
前記証明書(S)を拒否するステップと、
前記より以前の取引で使用された取引チャレンジ値(r’)および証明書(S’)を取り出すステップと
を含み、前記より以前の取引で使用された取引チャレンジ値(r’)と前記取引チャレンジ値(r)とが異なる場合に、前記エミッタのアイデンティティ(pk)が、前記より以前の取引および前記現在の取引で使用される前記証明書(S,S’)に基づいて前記バリデータによって計算される
請求項1ないし3のいずれか一項に記載の方法。
【請求項5】
妥当性検査する前記ステップで、前記バリデータが、前記証明書(S)をより以前の取引で預けられた証明書(S’)と比較し、
前記発行者が、より以前の取引で前記バリデータに預けられた証明書(S’)が現在の取引の前記証明書(S)と等しいことを検出する場合に、妥当性検査する前記ステップが、さらに、
前記より以前の取引で使用された取引チャレンジ値(r’)を取り出すステップと、
前記より以前の取引で使用された前記取引チャレンジ値(r’)と前記取引チャレンジ値(r)とが等しい場合に、前記証明書(S)が前記バリデータによって拒否されるステップと、
前記より以前の取引で使用された前記取引チャレンジ値(r’)と前記取引チャレンジ値(r)とが異なる場合に、前記エミッタのアイデンティティ(pk)が、前記より以前の取引および現在の取引で使用される証明書(S,S’)に基づいて前記バリデータによって計算されるステップと
を含む、請求項1ないし4のいずれか一項に記載の方法。
【請求項6】
回収する前記ステップで、前記エミッタが、ウォレット秘密(s)の知識の証明を前記発行者に提供し、前記証明書(S)が、前記ウォレット秘密(s)に基づき、
使う前記ステップで、ウォレット検査値(T)が、計算され、前記アクセプタに転送され、
預ける前記ステップで、ウォレット検査値(T)が、前記バリデータに預けられ、
妥当性検査する前記ステップで、前記証明書(S)または前記マネー・ロンダリング検査値(V)がより以前の取引で前記バリデータに預けられ、現在の取引の前記取引チャレンジ値(r,r)が前記より以前の取引で使用された前記取引チャレンジ値(r’,r’)と等しいことを前記発行者が検出する場合に、現在の取引およびより以前の取引のウォレット検査値(T,T’)に基づいて、前記エミッタの前記ウォレット秘密(s)が、前記バリデータによって計算される
請求項4または5に記載の方法。
【請求項7】
使う前記ステップで、前記アクセプタが、前記取引番号(j)が取引に対する前記限度(N)未満であることを検証し、前記取引番号(j)が取引に対する前記限度(N)を超える場合に前記取引を中止する
請求項1ないし6のいずれか一項に記載の方法。
【請求項8】
所定の額面金額の硬貨を発行する銀行コンピュータ・システムと、前記硬貨を発するユーザ・コンピュータ・システムと、前記硬貨を受け入れる商店コンピュータ・システムと、バリデータ・コンピュータ・システムとを含む、前記硬貨を妥当性検査する電子決済システムであって、前記銀行コンピュータ・システムと、前記ユーザ・コンピュータ・システムと、前記商店コンピュータ・システムと、前記バリデータ・コンピュータ・システムとが、データ・ネットワークによって機能的に接続され、前記硬貨が、請求項1ないし7のいずれか一項に記載の方法に従って引き出され、発せられ、預けられ、妥当性検査される、電子決済システム。
【請求項9】
コンピュータ・システムの少なくとも1つのプロセッサによって実行可能なプログラム命令を含むコンピュータ・プログラムであって、前記少なくとも1つのプロセッサによる前記プログラム命令の実行時に、請求項1ないし7のいずれか一項に記載の方法による前記発行者、前記エミッタ、前記アクセプタ、または前記バリデータのすべてのステップが実行される、コンピュータ・プログラム。
【請求項10】
コンピュータ・システムの少なくとも1つのプロセッサによって実行可能なプログラム命令を含むコンピュータ可読媒体を含むコンピュータ・プログラム製品であって、前記少なくとも1つのプロセッサによる前記プログラム命令の実行時に、請求項1ないし7のいずれか一項に記載の方法による前記発行者、前記エミッタ、前記アクセプタ、または前記バリデータのすべてのステップが実行される、コンピュータ・プログラム製品。
【請求項11】
証明書(S)、具体的には硬貨をエミッタに発行する発行システムであって、
前記発行者の署名鍵(pk,sk)および前記エミッタのエミッタ鍵(pk,sk)に基づいて前記発行者と前記エミッタとの間の第1の2当事者プロトコルを使用して前記証明書(S)を計算する
ために提供される、発行システム。
【請求項12】
証明書(S)、具体的には硬貨をエミッタから受け入れるアクセプタであって、前記証明書(S)が、発行者の署名鍵(pk,sk)および前記エミッタのエミッタ鍵(pk,sk)に基づいて前記発行者と前記エミッタとの間の第1の2当事者プロトコルを使用して計算され、
前記証明書(S)、前記エミッタと前記アクセプタとの間の取引番号(j)、前記アクセプタによって生成される取引チャレンジ値(r,r)、および前記アクセプタの一意のアイデンティティ(id)に基づいて、前記エミッタと前記アクセプタとの間の第2の2当事者プロトコルを使用してマネー・ロンダリング検査値(V)を計算し、
前記証明書(S)、前記取引チャレンジ値(r,r)、および前記マネー・ロンダリング検査値(V)をバリデータに預ける
ために設けられる、アクセプタ。
【請求項13】
署名鍵(pk,sk)を有する発行者と、エミッタ鍵(pk,sk)を有するエミッタと、一意のアイデンティティ(id)および取引に対する限度(N)を有するアクセプタと、バリデータとの間の取引を妥当性検査するバリデータであって、
マネー・ロンダリング検査値(V)をより以前の取引で前記バリデータに既に預けられたマネー・ロンダリング検査値(V’)と比較することによって、前記エミッタと前記アクセプタとの間の取引の回数が前記アクセプタの取引に対する前記限度(N)未満であることを検証する
ために設けられる、バリデータ。
【請求項14】
エミッタであって、
−発行者から証明書(S)を回収するためであって、前記証明書(S)が、前記発行者の署名鍵(pk,sk)および前記エミッタのエミッタ鍵(pk,sk)に基づいて前記発行者と前記エミッタとの間の第1の2当事者プロトコルを使用して計算される、回収するため、および
アクセプタで前記証明書(S)を使うためであって、マネー・ロンダリング検査値(V)が、前記証明書(S)、前記エミッタと前記アクセプタとの間の取引番号(j)、前記アクセプタによって生成される取引チャレンジ値(r,r)、およびアクセプタの一意のアイデンティティ(id)に基づいてエミッタとアクセプタとの間の第2の2当事者プロトコルを使用して計算される、使うため
に設けられる、エミッタ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2007−317200(P2007−317200A)
【公開日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願番号】特願2007−137279(P2007−137279)
【出願日】平成19年5月23日(2007.5.23)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】