(57)【特許請求の範囲】
【請求項１】
電子コインを発行する機関（以下、銀行と記す）の装置（以下、銀行装置と記す）と、電子コインを発行される者（以下、利用者と記す）の装置（以下、利用者装置と記す）とによる番号登録式電子現金方法において、
銀行装置は公開情報ＤおよびＤに対する銀行署名ＳＤを利用者装置に送信し、利用者装置は銀行署名ＳＤを検証した後、公開情報Ｄ、銀行署名ＳＤおよびランダムな引換番号Ｒｃを用いて署名対象Ｃを計算し、署名対象Ｃを秘密情報Ｒｂにより攪乱し、その攪乱された署名対象Ｚおよび引き下ろし額ｗｉを銀行装置へ送付し、
銀行装置は攪乱された署名対象Ｚに対して引き下ろし額面ｗｉ相当の署名Ｑを付けて利用者装置へ返送し、
利用者装置は秘密情報Ｒｂを用いて署名Ｑから署名対象Ｃに対する引換署名ＳＣを計算し、ｗｉ，Ｄ，ＳＤ，Ｒｃ，ＳＣを引換情報として記憶し、引換処理時に、ｗｉ，Ｄ，ＳＤ，Ｒｃ，ＳＣを銀行装置へ送付し、
銀行装置はその引換署名ＳＣが有効であることを確認し、引換番号Ｒｃが既に引換履歴ＨＣに記憶されていないことを確認した後、署名ＳＤおよび署名ＳＣを検証し、この署名検証結果が正しければ、引換番号Ｒｃを引換履歴ＨＣに記憶すると共にコイン番号Ｒｆを生成し、このコイン番号Ｒｆを発行履歴ＨＦに記憶し、このコイン番号Ｒｆに基づく電子コインＦを生成し、これらの電子コインＦ及びコイン番号Ｒｆを利用者装置に返送し、
決済時に、銀行装置はこれに入金された電子コインＦが有効であることを確認した後、そのコイン番号Ｒｆに関する記憶を発行履歴ＨＦから削除することを特徴とする番号登録式電子現金方法。
【請求項２】
請求項１記載の番号登録式電子現金方法において、
銀行装置は秘密情報Ｓ１，Ｓ２とそれぞれ対応した公開情報Ｐ１，Ｐ２を公開し、額面ｗｉ（ｉ＝１…ｎ）に対する秘密情報Ｓwiと対応する公開情報Ｐwiを公開し、ＳＤは秘密情報Ｓ１による公開情報Ｄに対するディジタル署名とし、
上記利用者装置によるＳＤの検証を、上記公開情報Ｐ１を用いて行い、上記署名対象Ｃの計算をハッシュ演算により行い、上記攪乱された署名対象Ｚを、Ｒｂで攪乱されたＣをＰwiでブラインド署名前処理を行って得、
上記引換署名ＳＣを得る計算はブラインド署名後処理により行い、上記銀行装置の上記署名ＳＤの検証は受信したＤ，ＳＤと記憶していたＤ，ＳＤとの比較により行い、上記署名ＳＣの検証はブラインド署名における検証により行い、
上記電子コインＦの発行はＲｆに対しｗｉを対として発行履歴ＨＦに記憶し、ｗｉ，ＲｆをＳ２により署名することにより行い上記電子コインＦが有効であることの確認は電子コインＦと共に送られて来たＲｆが発行履歴ＨＦに記憶されていることと、電子コインＦと共に送られて来たｗｉとＦ，ＲｆをＰ２により署名検証して行うことを特徴とする番号登録式電子現金方法。
【請求項３】
請求項２記載の番号登録式電子現金方法において、
銀行装置の秘密情報Ｓ１は２つの大きな素数ｐ１，ｑ１および整数ｄ１であり、公開情報Ｐ１はｅ１およびＮ１であり、Ｎ１とｐ１，ｑ１はＮ１＝ｐ１×ｑ１の関係にあり、ｄ１とｅ１はｄ１＝１／ｅｌmod lcm（ｐ１−１，ｑ１−１）なる関係にあり、（ lcm（ａ，ｂ）はａとｂとの最小公約数を示す）、秘密情報Ｓ２はｐ２，ｑ２および整数ｄ２であり、公開情報Ｐ２はｅ２およびＮ２であり、Ｎ２とｐ２，ｑ２はＮ２＝ｐ２×ｑ２の関係にあり、ｄ２とｅ２はｄ２＝１／ｅ２mod lcm（ｐ２−１，ｑ２−１）なる関係にあり、秘密情報Ｓwiはｐwi，ｑwiおよび整数ｄwiであり、公開情報ＰwiはｅwiおよびＮwiであり、Ｎwiとｐwi，ｑwiはＮwi＝ｐwi×ｑwiの関係にあり、ｄwiとｅwiはｄwi＝１／ｅwi mod lcm（ｐwi−１，ｑwi−１）なる関係にあり、公開情報Ｄは日付であり、ＳＤはＳＤ＝Ｄd1mod Ｎ１の関係を満たすＤに対する署名であり、
上記利用者装置のＳＤに対する検証を
Ｄ＝ＳＤe1mod Ｎ１
が成り立つことかを確認することにより行い、上記署名対象Ｃを得るハッシュ演算をｇ（）を一方向性関数としてＣ＝ｇ（Ｄ，ＳＤ，Ｒｃ）により行い、上記乱数Ｒｂとして乱数を用い、上記ブラインド署名前処理を、
Ｚ＝Ｃ×Ｒｂewi mod Ｎwi
の計算により行い、
銀行装置は上記署名ＱをＺdwi mod Ｎwiの計算により求め、
利用者装置の上記ブラインド署名後処理を、
ＳＣ＝Ｑ／Ｒｂ mod Ｎwiの計算により行い、
銀行装置の上記ブラインド署名における検証は
ｇ（Ｄ，ＳＤ，Ｒｃ）＝ＳＣewi mod Ｎwi
を満たすかにより行い、上記電子コインＦの発行署名を、
Ｆ＝ｇ（ｗｉ，Ｒｆ）d2mod Ｎ２
の計算により行い、
上記決済時のＰ２による署名検証を、
ｇ（ｗｉ，Ｒｆ）＝Ｆe2mod Ｎ２
の計算を満すかにより行うことを特徴とする番号登録式電子現金方法。
【請求項４】
番号登録式電子現金方法において、
信託機関装置が、秘密鍵ｄｊ，Ｎｊおよび、公開鍵ｅｊ，Ｎｊを保持し、利用者装置が秘密鍵ｄｕ，Ｎｕと公開鍵ｅｕ，Ｎｕを持ち、
銀行装置が、発行する電子コインの金額ｗｉに対応する秘密鍵ｄwi及び公開鍵ｅwiの対と、金額に共通の法Ｎｗを作成し、ｗｉとｅwiの対応を公開し、法Ｎｗに対し、登録用の秘密鍵ｄ２と公開鍵ｅ２を保持し、
利用者装置が、匿名公開情報Ｎｕを信託機関装置に送信し、
信託機関装置が、有効期限相当の情報Ｉを生成し、Ｎｕおよび、Ｉに対する署名Ｂを生成し、この署名ＢとＩを利用者装置に送信し、
利用者装置が、受信したＢ、Ｉと匿名公開情報Ｎｕとを利用許可証（Ｂ，Ｉ，Ｎｕ）として記憶し、
利用者装置が、銀行装置より、日付情報Ｄおよび署名ＳＤを入手し、秘密情報として乱数Ｒｃを生成し、これを記憶し、その乱数Ｒｃと読みだしたＢおよび日付情報Ｄと署名ＳＤよりｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）を計算し、乱数ｒを生成し、発行を希望する額ｗｉと対応する公開鍵ｅwiおよび、金額共通の公開鍵Ｎｗとともにブラインド署名前処理器に入力して、
Ｚ＝ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）ｒewi mod Ｎｗ
の処理を行い、この処理結果Ｚを電子コインの金額ｗｉと共に銀行装置に送信し、
銀行装置が、電子コインの金額ｗｉに対応する秘密鍵ｄwiと公開鍵Ｎｗを署名生成器へ入力し、受信情報Ｚに対して
Ｑ＝Ｚdwi mod Ｎｗ
の処理を行い、このＱを利用者装置に送信し、
利用者装置が、乱数ｒ、公開鍵Ｎｗと受信情報Ｑとをブラインド署名後処理器に入力して
ＳＣ＝Ｑ／ｒmod Ｎｗ
の処理を行って指定した金額の引換署名ＳＣを求め、
引換処理時、利用者装置が、銀行装置へｗｉ，Ｂ，Ｄ，ＳＤ，ＲｃおよびＳＣを送信し、
銀行装置が、受信したＤ，ＳＤおよび、記憶装置内のＤ，ＳＤを比較器へ入力して両Ｄ，ＳＤが一致することを確認し、Ｄ，ＳＤが一致した場合は、Ｒｃを検索器へ入力してＲｃが引換履歴ＨＣに記録されていないことを確認し、Ｒｃが過去に使用されていない場合は、Ｂ，Ｄ，ＳＤ，Ｒｃ，ＳＣ，ｅwi，Ｎｗを署名検証器へ入力して、
ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）＝ＳＣewi mod Ｎｗ
を満たすことを確認し、この署名検証結果が正しければ、Ｒｃを引換履歴ＨＣへ記憶し、更に、ｗｉ，Ｒｃを発行履歴ＨＦへ記憶し、ＳＣおよびｄ２を署名生成器へ入力して、
Ｆ＝ＳＣd2mod Ｎｗ
を計算し、このＦを利用者装置へ返送し、
利用者装置が、受信したＦおよび、ｗｉ，Ｒｃ，Ｄ，ＳＤを電子コイン情報として格納し、
電子コインによる支払い時、利用者装置が、Ｉ，Ｎｕ，Ｂ，Ｄ，ＳＤ，Ｒｃ，Ｆ，ｗｉを受領者装置に送り、
受領者装置が、受信したＩ，Ｎｕおよび、読み出したｅｊ，Ｎｊを署名検証器へ入力し、Ｉ，Ｎｕに対する署名Ｂの正当性を、
Ｂej≡ｇ（Ｎｕ‖Ｉ）mod Ｎｊ
を検証することにより確認し、受信したＢ，Ｄ，ＳＤ，Ｒｃおよび、読み出したｅwi，Ｎｗ，ｅ２を署名検証器へ入力し、
Ｆewixe2≡ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）mod Ｎｗ
を満たすことを確認し、これらの両検査に合格する場合、受領者装置は乱数Ｅ′を生成し、それを受領者装置の識別子ＩＤｖ及び、時刻印Ｔと共に利用者装置に送り、
利用者装置が、署名生成器へ金額ｘと受信情報Ｔ，Ｅ′，ＩＤｖを入力し、
Ｓ＝ｇ（ｘ‖ｈ（ＩＤｖ‖Ｔ‖Ｅ′））dumod Ｎｕ
により署名Ｓを生成し、この署名Ｓ、公開鍵ｅｕ、およびｘを受領者装置に送り、
受領者装置が、署名検証器へＳ，ｅｕ，Ｎｕ，Ｔ，Ｅ′，ＩＤｖを入力し、
Ｓeu≡ｇ（ｘ‖ｈ（ＩＤｖ‖Ｔ‖Ｅ′））mod Ｎ
が成り立つことを検証し、この検証に合格すれば、受領者装置は、利用者装置のｘに該当する金額の支払いを正当なものとみなして受領し、
決済時、受領者装置が、利用者装置との電子コイン使用時の交換履歴Ｈ、すなわちＸ，Ｓ，Ｔ，Ｅ′，ＩＤｖ，ｅｕ，Ｉ，Ｎｕ，Ｂ，Ｄ，ＳＤ，Ｒｃ，Ｆ，ｗｉを銀行装置に送信し、
銀行装置が、Ｈの正当性を検査し、
Ｂej≡ｇ（Ｎｕ‖Ｉ）mod Ｎｊ
Ｆewixe2≡ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）mod Ｎｗ
Ｓeu≡ｇ（ｘ‖ｈ（ＩＤｖ‖Ｔ‖Ｅ′））mod Ｎ
の各検証を行い、検証結果が正常ならばＲｃを元に発行履歴ＨＦを検索し、Ｒｃに関する情報を削除する、
ことを特徴とする番号登録式電子現金方法。
【請求項５】
請求項１乃至３の何れかに記載の番号登録式電子現金方法において、
銀行装置は外部記憶装置を備え、
決済時に発行履歴ＨＦから削除したＲｆに関する記憶を外部記憶装置へ記憶することを特徴とする番号登録式電子現金方法。
【請求項６】
請求項１乃至５の何れかに記載の番号登録式電子現金方法において、
銀行装置は一定期間後に公開情報ＤをＤ′へ更新し、以前のＤに関連して登録されたＲｃに関する情報を引換履歴ＨＣから削除することを特徴とする番号登録式電子現金方法。
【請求項７】
電子現金を発行する機関（以下、銀行と記す）の装置（以下銀行装置）と、電子現金を発行してもらうもの（以下、利用者と記す）と、信託機関の装置（以下、信託機関装置と記す）と、電子現金を受け取るもの（以下、受領者と記す）の装置（以下、受領者装置と記す）とよりなり、電子現金を実施する番号登録式電子現金方法において、
利用者装置は匿名公開情報Ｎｕを信託機関装置へ送り、
信託機関装置はＮｕと利用者との対応を秘密に管理し、かつＮｕに対する信託機関の署名Ｂを生成して利用者装置へ送り、
銀行装置は公開情報Ｄ及びＤに対する銀行署名ＳＤを利用者装置へ送り、
利用者装置は署名ＳＤを検証した後、Ｂ、Ｄ、ＳＤ、及びランダムな引換番号Ｒｃを用いて署名対象Ｃを計算し、
署名対象Ｃを乱数ｒで攪乱し、攪乱された署名Ｚ及び額面ｗｉを銀行装置へ送り、
銀行装置はＺに対し、額面ｗｉ相当の署名Ｑを付けて利用者装置へ送り、
利用者装置は乱数ｒを用いて署名Ｑから署名対象Ｃに対する署名ＳＣを引換え証として計算し、ｗｉ、Ｄ、ＳＤ、Ｒｃ、ＳＣ、Ｂを保持し、
その後、利用者装置は引換情報を銀行装置へ送り、
銀行装置はＤ、ＳＤが記憶されているものと一致することを確認し、かつＲｃが引換履歴ＨＣにないことを確認し、署名対象Ｃを受信情報から計算し、署名ＳＣを検証し、これらに合格すればＲｃを引換履歴ＨＣに記憶し、かつ発行履歴ＨＦにｗｉ、Ｒｃを記憶し、
ＳＣに対する銀行署名Ｆを生成し、これを電子コインＦとして利用者装置へ送り、
利用者装置はＦとｗｉを保持し、
利用者装置はＮｕ、Ｂ、Ｄ、ＳＤ、Ｒｃ、Ｆ、ｗｉを受領者装置へ送り、
受領者装置は署名Ｂを検証し、かつ署名Ｆを検証し、共に合格の場合は、受領者の識別子ＩＤｖ、時刻印Ｔ、乱数Ｅを利用者装置へ送り、
利用者装置は電子コインＦの額面ｗｉ中の使用額ｘとＴ、Ｅ、ＩＤｖに対する署名Ｓを生成し、そのＳとｘを受領者装置へ送り、
受領者装置は署名Ｓを検証し、合格すれば利用者によるｘの支払いを正当なものとして受領し、
受領者装置は利用者装置による電子現金支払い時に使用された交信履歴Ｈを銀行装置へ送り、
銀行装置はＨの正当性を、前記受領者装置で行った各検証と同様のことを行って確認し、正しければＲｃに関する情報を発行履歴ＨＦから削除し、かつ受領者へ金額ｘの支払いを行う、
ことを特徴とする番号登録式電子現金方法。
【請求項８】
銀行装置の公開情報Ｐ１，Ｐ２、額面ｗｉ（ｉ＝１…ｎ）に対応する銀行の公開情報Ｐwiと金額との対応表を記憶した記憶装置と、
銀行装置より受信した日付情報Ｄとその署名ＳＤと上記Ｐ１を入力してＤが所定の日付でありかつＳＤが正しい署名であることを検証する第１署名検証手段と、
ランダムな引換番号Ｒｃを生成する引換番号生成手段と、
検証済みの上記Ｄ，ＳＤとＲｃが入力され、署名対象Ｃを演算するハッシュ演算手段と、
乱数Ｒｂを発生する乱数発生手段と、
額面ｗｉと対応する公開情報Ｐwiと、上記Ｒｂ、Ｃが入力されてブラインド署名前処理を演算して結果Ｚを出力するブラインド署名前処理手段と、
銀行装置より受信した署名Ｑと上記ＲｂとＰwiが入力され、ブラインド署名後処理を演算して引換証ＳＣを出力するブラインド署名後処理手段と、
銀行装置より受信した電子コインＦ、コイン番号Ｒｆとｗｉを入力してＦ，Ｒｆの署名検証を行う第２署名検証手段と、
上記ハッシュ演算手段に入力したＲｃ，Ｄ，ＳＤ、これと対応するブラインド署名前処理に用いたＰwiと対応するｗｉ、また対応するＳＣを引換情報として、また第２署名検証手段で正当と認められたＦ，Ｒｆおよびその検証に用いたｗｉをコイン情報として、支払により受信したコイン情報ｗｉ，Ｆ，Ｒｆを記憶する手段と、
上記ブラインド署名前処理結果Ｚと対応するｗｉ、上記引換情報、上記支払として受信したコイン情報ｗｉ，Ｆ，Ｒｆを、それぞれ銀行装置へ送信する手段と、
支払のために上記コイン情報を受領者装置へ送付する手段と、
を具備する利用者装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電気通信システムやＩＣカードを利用してディジタル情報の授受により電子的な現金を実現する電子現金方法に関する。
【０００２】
【従来の技術】
電子現金はＩＣカードを電子現金の財布（電子財布）とするような形で広く使われるようになる。その際には、電子現金はいかなる物理媒体にも依存しないで、情報そのものが電子現金となるような形で電子財布に格納される形態が望ましい。
【０００３】
電子現金の一つの実現策は、物理的な手段によって安全性を保証する方法である。例えば、テレホンカード等の磁気カードによるプリペイドカードは、カード上の磁気状態を他のカードに物理的にコピーすることが困難であるということを安全性の要として成り立っている。しかしながら、この安全性の前提は世の中の製造技術レベルの推移により大きく変化する。さらに、この方式は、常に物理媒体（磁気カード等）と一体で実現されるため、情報の形の電子現金のように通信回線で転送するようなことはできない。
【０００４】
別の実現策は、クレジットカードのような電子的ＩＤカード（電子クレジットカードもしくは電子小切手）を用いて、後日決済する方法である。電子クレジットカードでは、手書きの署名の代わりにディジタル署名を用いることにより、処理の完全電子化（情報化）を実現でき、その決済用情報を通信回線で転送できる。しかし、この方式の欠点は、利用者のプライバシを保証できない点である（これは、現行のクレジットカードや小切手においても同様である）。つまり、クレジットカードを発行・決済する機関は、自由に利用者の購買履歴を入手できるのはもとより、また、小売店までも利用者のクレジットカード番号や署名を知ることができる。
【０００５】
一方、ブラインド署名（詳細は後述する）と支払い時でのオンラインチェック（小売店が、利用者の提示した情報が二重／不正使用されていないかを、管理センタにオンラインで問い合わせること）を組み合わせることにより、上述した情報化、安全性、プライバシの問題を解決できる。しかし、各小売店が各利用者の購買時に必ずセンタにアクセスすることは、処理時間（利用者の待ち時間）、通信コスト、管理センタでのオンライン処理コスト及びデータベース維持管理コスト等を考えると、現実的な解とは言えない。従って、現金支払い時の処理はオフラインで処理できることが望ましい。
【０００６】
プライバシを重視し、オフライン処理可能な電子現金方式としては、例えば、Ｄ．Ｃｈａｕｍ，  Ａ．Ｆｉａｔ  ａｎｄ  Ｍ．Ｎａｏｒ，  “Ｕｎｔｒａｃｅａｂｌｅ  Ｅｌｅｃｔｒｏｎｉｃ  Ｃａｓｈ，”Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−Ｃｒｙｐｔｏ’８８，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ４０３，  ｐｐ．３１９−３２７，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  Ｂｅｒｌｉｎ（１９８８）やＴ．Ｏｋａｍｏｔｏ  ｅｔａｌ．  “Ｄｉｓｐｏｓａｂｌｅ  Ｚｅｒｏ−Ｋｎｏｗｌｅｄｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎｓ  ａｎｄ  Ｔｈｅｉｒ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｔｏ  Ｕｎｔｒａｃｅａｂｌｅ  Ｅｌｅｃｔｒｏｎｉｃ  Ｃａｓｈ，”Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−Ｃｒｙｔｏ’８９，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ４３５，  ｐｐ．４８１−４９６，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  Ｂｅｒｌｉｎ（１９８９）、特願平２−８８８３８号「電子現金実施方法及びその装置」などがある。
【０００７】
まず、利用者のプライバシを保証するための基本技術であるブラインド署名について説明する。ブラインド署名では、署名者に文書の内容を秘密にしたままで署名を付けてもらう。ＲＳＡ法に基づいた方式が文献  Ｄ．Ｃｈａｕｍ，  “Ｓｅｃｕｒｉｔｙ  ｗｉｔｈｏｕｔ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ：  Ｔｒａｎｓａｃｔｉｏｎ  Ｓｙｓｔｅｍｓ  ｔｏ  Ｍａｋｅ  Ｂｉｇ  Ｂｒｏｔｈｅｒ  Ｏｂｓｏｌｅｔｅ，”Ｃｏｍｍ．  ｏｆ  ｔｈｅ  ＡＣＭ，  ２８，  １０，  ｐｐ．１０３０−１０４４（１９８５）で、ゼロ知識対話証明に基づいたブラインド署名が文献Ｔ．Ｏｋａｍｏｔｏ  ｅｔａｌ．  “Ｄｉｖｅｒｔｉｂｌｅ  Ｚｅｒｏ−Ｋｎｏｗｌｅｄｇｅ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｐｒｏｏｆｓ  ａｎｄ  Ｃｏｍｍｕｔａｔｉｖｅ  Ｒａｎｄｏｍ  Ｓｅｌｆ−Ｒｅｄｕｃｉｂｌｅ，  ”Ｔｈｅ  Ｐｒｏｃ．  ｏｆ  Ｅｕｒｏｃｒｙｐｔ’８９（１９８９）  で示されている。
【０００８】
署名の要求者は、ブラインド署名前処理によって文書（ｍ）を乱数（ｒ）で攪乱してブラインドメッセージ（ｘ）を生成する。署名者は、秘密鍵を用いてｘに対応する仮の署名（ｙ）を計算する。このとき、ｍはｒによって攪乱されているので、署名者は文書（ｍ）を知ることはできない。要求者は、ブラインド署名後処理によってｙから乱数（ｒ）の影響を除去して、本来の文書（ｍ）に対する真の署名（ｙ′）を求めて、ｍとｙ′の組を検証者に送信する。検証者は、署名者の公開鍵を用いてｙ′がｍの署名であることを確認する。ここで、検証者はｙとｙ′の対応関係を知ることはできない。
ブラインド署名の手順
Ａを署名者、Ｐを署名要求者、ｅＡ  を署名者Ａの公開情報とする。Ｆをブラインド署名前処理アルゴリズム、Ｄを多重ブラインド署名アルゴリズム、Ｇをブラインド署名後処理アルゴリズムとする。これらの関数の使用法は、ＦｅＡとＤｅＡから作成した仮の署名Ω（＝ＤｅＡ（ＦｅＡ（ｍ１  ），…，ＦｅＡ（ｍｋ  ）））  にＧｅＡを施して、ｋ個のメッセージｍ１  ，…，ｍｋ  に対するＡの真の署名Ｂ＝ＤｅＡ（ｍ１  ，…，ｍｋ  ）を算出する。署名者Ａと要求者Ｐは以下の手順に従って多重ブラインド署名を作成する。
【０００９】
ステップ１：Ｐはブラインド署名前処理により、ｋ個のメッセージ｛ｍｉ  ｜ｉ＝１，２，…，ｋ｝からｋ個のブラインドメッセージｘｉ  ＝｛ＦｅＡ（ｍｉ  ）｜ｉ＝１，２，…，ｋ｝を生成して、Ａに送信する。ここで、それぞれのｘｉ  ＝ＦｅＡ（ｍｉ  ）は独立に計算されており、関数ＦｅＡは乱数を使用してｍｉ  を隠す。
ステップ２：Ａは仮の署名Ω＝ＤｅＡ（ＦｅＡ（ｍ１  ），…，ＦｅＡ（ｍｋ  ））をｋ個のブラインドメッセージＦｅＡ（ｍ１  ），…，ＦｅＡ（ｍｋ  ）から生成して、Ｐに送信する。
【００１０】
ステップ３：Ｐは、ＧｅＡを用いたブラインド署名後処理により、ｍ１  ，…，ｍｋ  に対応したＡの真のディジタル署名Ｂ＝ＤｅＡ（ｍ１  ，…，ｍｋ  ）を算出する。（ブラインド署名の手順終わり）
ＲＳＡ法をブラインド署名に使用する場合には、ブラインドメッセージ（ブラインド署名前処理）を、ｘｉ  ＝ＦｅＡ（ｍｉ  ）＝ｒｉ  ｅＡ×ｍｉ  ｍｏｄ  ｎ、ここでｒｉ  は攪乱するための乱数、仮の署名を、
【００１１】
【数１】
0003599492.tif 000002
ブラインド署名後処理を、
【００１２】
【数２】
0003599492.tif 000003
とそれぞれおいて、署名は、
【００１３】
【数３】
0003599492.tif 000004
となる。このとき、検証式ＶｅＡ（ｍ１  ，…，ｍｋ  ，Ｂ）は
【００１４】
【数４】
0003599492.tif 000005
のとき合格（ＯＫ）を出力する。ここで、（ｅＡ  ，ｎ）はＡの使用するＲＳＡ法の公開鍵であり、次の式をみたす。
ｎ＝Ｐ×Ｑ
ｅＡ  ×ｄＡ  ≡１（ｍｏｄ  Ｌ）
ただしＬ＝ＬＣＭ｛（Ｐ−１），（Ｑ−１）｝
ここで、Ｌ＝ＬＣＭ｛ａ，ｂ｝はａとｂの最小公倍数を、ａ≡ｂ（ｍｏｄ  ｎ）は（ａ−ｂ）がｎの倍数であることを表す。以降ではｄＡ  を１／ｅＡ  と表すこともある。以下の  Ｃｈａｕｍ・Ｆｉａｔ・Ｎａｏｒ法ではｋ＞１の場合を、後述する実施例では、ｋ＝１の場合を想定する。
【００１５】
ＲＳＡ暗号の構成例は、文献  Ｒｉｖｅｓｔ，  Ｒ．Ｌ．  ｅｔａｌ．  “Ａ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｏｂｔａｉｎｉｎｇ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅｓ  ａｎｄ  Ｐｕｂｌｉｃ−Ｋｅｙ  Ｃｒｙｐｔｏｓｙｓｔｅｍｓ”，Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，  Ｖｏｌ．  ２１，  Ｎｏ．２，  ｐｐ．１２０−１２６，（１９７８）に示されている。
ブラインド署名の構成法は、例えば、Ｃｈａｕｍ，  Ｄ．  “Ｂｌｉｎｄ  Ｓｉｇｎａｔｕｒｅ  Ｓｙｓｔｅｍｓ  ”，ＵＳ  Ｐａｔｅｎｔ  Ｎｏ．：４，７５９，０６３  や  Ｏｈｔａ，  Ｋ．  ｅｔａｌ．  “Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｓｙｓｔｅｍ  ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｔｈｅｒｅｆｏｒ”，ＵＳ  ｐａｔｅｎｔ  Ｎｏ．：４，９６９，１８９  に示されている。
【００１６】
ところで、利用者のブライバシーは、ブラインド署名を用いることで、利用者だけの責任において保証できる。すなわち、攪乱用の乱数ｒの付加と除去を利用者が実行するので、ｒを秘密にする限りは、誰もがｙ＝Ωとｙ′＝Ｂの対応関係を知ることはできないことに注意しよう。
ここで、代表的な電子現金方式である  Ｃｈａｕｍ・Ｆｉａｔ・Ｎａｏｒ法での、銀行と利用者間での電子現金の発行処理、利用者の小売店での電子現金の支払い、小売店と銀行間の決裁処理について述べる。
電子現金の発行処理
利用者Ｐが、銀行Ａから電子現金Ｃを発行してもらう手順を示す。ここで、ＩＤは利用者Ｐの識別情報、ｅＡ  は、利用者が指定する電子現金の金額（例えば１万円）に対応する銀行のディジタル署名用の公開鍵とする。利用者が銀行から電子現金を発行してもらう手順は、以下の通りである。
【００１７】
ステップ１：利用者Ｐは、乱数ａｉ  （ただし、ｉ＝１，…，Ｋ）を生成して、公開された一方向関数ｇを用いて、
ｘｉ  ＝ｇ（ａｉ  ）
ｙｉ  ＝ｇ（ａｉ  （＋）ＩＤ）
を求める。（＋）は排他的論理和を示す。
【００１８】
ステップ２：Ｐは、公開された一方向関数ｆとブラインド署名前処理関数ＦｅＡを用いて、
Ｗｉ  ＝ＦｅＡ（ｆ（ｘｉ  ，ｙｉ  ））
を計算して、銀行に提示する。
ステップ３：銀行Ａは、１からＫの中からランダムにＫ／２個の部分集合Ｕ＝｛ｉｊ  ｝、（ただし１＜ｊ＜Ｋ／２に対して１＜ｉｊ  ＜Ｋ）を選び、それを開示要求として利用者に送信する。（以下では、表記を簡単にするために、Ｕ＝｛Ｋ／２＋１，Ｋ／２＋２，…，Ｋ）｝が開示要求として指定されたと仮定して説明する。）Ｋ個の中からランダムにＫ／２個の部分集合の開示を要求する手順を「抜き打ち検査」とよぶ。
【００１９】
ステップ４：利用者Ｐは、銀行Ａから開示要求を受信すると、指定されたＫ／２個のａｉ  とＷｉ  を作成するために関数ＦｅＡの中で用いた乱数を銀行Ａに開示する。
ステップ５：銀行Ａは、開示されたＫ／２組のすべてについて正当性の検証を行ない、いずれかの検査に不合格のときには、以降の処理を中止する。すべての検査に合格のときには、銀行Ａは開示対象でないｉ（ここでは、ｉ＝１，２，…，Ｋ／２）に対して、次の手順を行なう。
【００２０】
ステップ６：銀行Ａは、
Ω＝ＤｅＡ（Ｗ１  ，…，ＷＫ／２  ）
を計算して、利用者Ｐに送信する。
ステップ７：利用者Ｐは、銀行からの受信データΩから電子現金Ｃを以下のように計算する。
【００２１】
Ｃ＝ＧｅＡ（Ω）＝ＤｅＡ（ｆ（ｘ１  ，ｙ１  ），…，ｆ（ｘＫ／２，ｙＫ／２  ））
電子現金による支払
つぎに、利用者Ｐが銀行Ａより発行された電子現金Ｃを用いて小売店Ｖで支払をする場合について説明する。それぞれのｉ（ただしｉ＝１，２，…，Ｋ／２）に対して、次の処理を実行する。
【００２２】
ステップ１：利用者Ｐは、電子現金（Ｃ）を小売店Ｖへ送信する。
ステップ２：小売店Ｖは乱数ビットｅｉ  を生成して、利用者Ｐへ送信する。
ステップ３：利用者Ｐは、ｅｉ  ＝１のときａｉ  とｙｉ  を、ｅｉ  ＝０のときｘｉ  とａｉ  （＋）ＩＤを小売店Ｖへ送信する。
ステップ４：小売店Ｖは、銀行Ａの公開鍵ｅＡ  を用いて、Ｃがメッセージｆ（ｘ１  ，ｙ１  ），…，ｆ（ｘＫ／２  ，ｙＫ／２  ）の正しい署名であることを検査する。決済
最後に、小売店Ｖと銀行Ａの間の決済方法について説明する。小売店Ｖは、利用者との電子現金使用時の交信履歴Ｈを銀行に提出する。銀行はＨの正当性を検査し、検査に合格すれば、Ｈを記憶しておくと共に小売店の口座に該当する金額を払い込む（もしくは、何らかの手段で該当する金額を小売店に支払う）。銀行は、電子現金の不正使用を見つけると、Ｈとすでに記憶している交信履歴からＣに対応して記憶しているａｉ  とａｉ  （＋）ＩＤを探し出して、不正者の識別情報ＩＤを確定する。
【００２３】
以上が  Ｃｈａｕｍ・Ｆｉａｔ・Ｎａｏｒ法であるが利用者が不正にＣを２回使用すると、ｅｉ  ＝１のときａｉ  ，ｅｉ  ＝０のときａｉ  （＋）ＩＤが銀行に記憶されているので、１回目と２回目のｅｉ  が異なる場合には、ａｉ  （＋）（ａｉ  （＋）ＩＤ）＝ＩＤが成り立つので、銀行はこれを計算してＩＤを検出できる。銀行は、Ｋ／２ビットを問い合わせるので、Ｃの二重使用を検出できない確率は２−Ｋ／２となる（通常、Ｋ＝２０程度が推奨されている）。
【００２４】
【発明が解決しようとする課題】
従来の電子現金方法は、不正にコピーされた電子現金の使用者を特定する目的で、過去に使用された全ての電子現金の使用履歴を銀行が保持しなければならず、かつ決済時にはこれら全ての使用履歴を検索する必要があり、即時決済を行うには大容量かつ高速なデータベースが必要になるという問題がある。
【００２５】
銀行が保持すべき電子コインの履歴を削減する基本的な方法は、電子コイン発行時にコイン番号を記憶しておき、決済終了後に使用済コインの番号情報を削除することである。しかしながら、電子コインの引き下ろし時にコインの番号を記憶することは、決済時にコインの使用者を特定できることになり、利用者のプライバシーを侵害する。
【００２６】
コイン履歴を削減するもう一つの方法は、電子コインに有効期限を組み込み、有効期限を過ぎたものは使用できないようにすれば、有効期限の切れたコインの使用履歴は削除することができる。しかしながら、電子コイン発行時にブラインド署名を用いる場合、発行日時あるいは使用期限を示す情報がブラインド署名対象の中に正しく埋め込まれていることを銀行は確認することができない。このため、電子コインの使用期限は銀行の公開鍵を更新することで実施することになる。しかし、その場合には全利用者が保持する銀行の公開情報を更新する必要があり、公開情報を安全に入手する手間をユーザが負担することになると同時に、複数の銀行公開鍵をユーザが管理する必要が生じてしまう。
【００２７】
この発明の目的は、利用者のプライバシーを保ちつつ、銀行が保持すべきデータを削減し、即時決済が容易であると共に、使用期限管理の容易な電子現金方法を提供することにある。
【００２８】
【課題を解決するための手段】
この発明の一例によれば、まず、利用者Ｕは銀行署名ＳＤのついた公開情報Ｄと引換番号Ｒｃから署名対象Ｃを作成し、ブラインド署名を用いてこの署名対象Ｃに対する銀行署名ＳＣを入手し、このＳＣは引換予定として記憶する。
その後、一定期間内に、利用者ＵはＤ，ＳＤ，ＲｃおよびＳＣを銀行Ａへ送付する。銀行Ａは公開情報Ｄに基づき、ＳＣが発行されてから一定期間内にあること、ＳＤがＤに対する銀行署名であること、引換番号Ｒｃが記憶されていないことを確認する。更に、利用者Ｕと同じ手順でＤ，ＳＤ，ＲｃよりＣを計算し、ＳＣがＣに対する銀行署名であることを確認し、その後、コイン番号Ｒｆを発行し、Ｒｆに基づいて電子コインＦを発行し、引換番号Ｒｃおよびコイン番号Ｒｆに関する情報を記憶装置へ記憶する。前記確認のいずれかを満たさなかった場合は電子コインの発行を中止する。
【００２９】
支払に使用された電子コインＦは決済時に銀行Ａへ送信され、銀行Ａはコイン番号Ｒｆが記憶されていることを確認した後、Ｒｆに関する情報を記憶装置から削除する。
また、公開情報Ｄの発行から一定期間の後、Ｄに基づくＲｃに関する情報を記憶装置から削除する。
【００３０】
必要に応じて削除したＲｆ，Ｒｃに関する情報を外部記憶装置へ移動して保存する。
【００３１】
【発明の実施の形態】
以下では、この発明の一実施例の形態について説明する。この発明の方法を実施するために、図１に示すように電子現金の発行決済を行う銀行Ａの装置（以下銀行装置と記す）１００と、電子コインを発行してもらったり、その電子コインによる支払いなどに利用する利用者Ｕの装置（以下利用者装置と記す）２００と、電子コインによる支払いなど電子コインを受領する受領者Ｍの装置（以下受領者装置と記す）３００とが用いられる。これら銀行装置１００、利用者装置２００、受領者装置３００は通信回線で接続されたり、ＩＣカードを介して接続され、またそれぞれの装置は専用のハードウエアで構成されてもよいし、電子計算機とソフトウエアとにより構成してもよい。
【００３２】
この実施例ではまず、利用者Ｕの利用者装置２００と銀行Ａの銀行装置１００との間で引換署名発行処理を行い、利用者装置２００は銀行Ａの公開情報Ｄおよび引換番号Ｒｃに基づく銀行署名ＳＣを得る。引換署名発行処理から一定の期間内に、利用者装置２００と銀行装置１００は引換処理を行い、利用者装置２００は引換番号Ｒｃの登録と引換に電子コインＦを得る。
【００３３】
支払時に利用者Ｕは利用者装置２００により受領者Ｍの装置３００に電子コインＦを送信し、受領者装置３００は電子コインＦが正統なものであることを確認する。
決済時に、受領者Ｍは受領者装置３００により銀行装置１００に電子コインＦを送信し、銀行装置１００は電子コインＦが正統なものであることおよび、登録済であることを確認した後、電子コインＦのコイン番号Ｒｆに関する記憶を消去する。
【００３４】
また銀行装置１００は公開情報Ｄの公開から一定期間後に、公開情報Ｄと関連して登録された引換番号Ｒｃの記憶を消去する。
実施例１
準備
引換発行処理に必要な銀行装置１００および利用者装置２００の機能構成を図２に示す。
【００３５】
まず、銀行装置１００には署名アルゴリズムＤ１および、この署名アルゴリズムＤ１に対応する秘密情報Ｓ１および公開情報Ｐ１を記憶装置１０１に保持し、秘密情報Ｓ１を用いて公開情報、例えば本日の日付Ｄに対する署名ＳＤを生成する。例えば、署名アルゴリズムＤ１がＲＳＡの場合、秘密情報Ｓ１は２つの大きな素数ｐ１，ｑ１および整数ｄ１であり、公開情報Ｐ１はｅ１およびＮ１であり、Ｎ１とｐ１，ｑ１はＮ１＝ｐ１×ｑ１の関係にあり、ｄ１とｅ１はｄ１＝１／ｅ１  ｍｏｄ  ｌｃｍ（ｐ１−１，ｑ１−１）なる関係を満たす。  ｌｃｍ（ｐ１−１，ｑ１−１）はｐ１−１とｑ１−１との最小公倍数を示す。また、署名ＳＤはＳＤ＝Ｄｄｌ  ｍｏｄ  Ｎ１を実行する署名生成器１０２によって生成し、検証式Ｖ１は
Ｄ＝ＳＤｅ１ｍｏｄ  Ｎ１
が成立することを検証する署名検証器によって検証する。
【００３６】
また、銀行装置１００は電子コインの額面ｗｉ（ｉ＝１，…，ｎ）毎に異なる公開情報Ｐｗｉと秘密情報Ｓｗｉを保持し、金額対鍵対応表１０１ａとして記憶しているものとする。ここで、秘密情報Ｓｗｉは２つの大きな素数ｐｗｉ、ｑｗｉおよび整数ｄｗｉであり、公開情報ＰｗｉはｅｗｉおよびＮｗｉであり、Ｎｗｉとｐｗｉ，ｑｗｉはＮｗｉ＝ｐｗｉ×ｑｗｉの関係にあり、ｄｗｉとｅｗｉはｄｗｉ＝１／ｅｗｉ  ｍｏｄ  ｌｃｍ（ｐｗｉ−１，ｑｗｉ−１）なる関係を満たす。
【００３７】
さらに、銀行装置１００は署名アルゴリズムＤ２および、この署名アルゴリズムに対応する秘密情報Ｓ２および公開情報Ｐ２を保持する。例えば、署名アルゴリズムＤ２がＲＳＡの場合、秘密情報Ｓ２は２つの大きな素数ｐ２，ｑ２および整数ｄ２であり、公開情報Ｐ２はｅ２およびＮ２であり、Ｎ２とｐ２，ｑ２はＮ２＝ｐ２×ｑ２の関係にあり、ｄ２とｅ２はｄ２＝１／ｅ２  ｍｏｄ  ｌｃｍ（ｐ２−１，ｑ２−１）なる関係を満たす。また、署名アルゴリズムＤ２は署名対象Ｘに対してＹ＝Ｘｄ２ｍｏｄ  Ｎ２を計算する署名生成器によって実行し、検証式Ｖ２は
Ｘ＝Ｙｅ２ｍｏｄ  Ｎ２
が成立することを検証する署名検証器によって検証する。
【００３８】
利用者装置２００は、銀行装置１００が公開した公開情報Ｐ１，Ｐ２および、金額対鍵対応表２０１ａの額面ｗｉ対公開情報Ｐｗｉを記憶装置２０１に保持する。
引換署名発行処理
引換署名発行処理の利用者装置２００の動作手順を図３に、銀行装置１００の動作手順を図４に示し、これらと図２を参照して引換署名発行処理を説明する。
【００３９】
利用者装置２００は銀行装置１００よりＤおよびＳＤを入手する（Ｓ１）。
利用者装置２００はＤ，ＳＤおよび公開情報Ｐ１を署名検証器２０２へ入力する。署名検証器２０２は入力Ｄが本日の日付であることを確認した後、署名アルゴリズムＤ１に基づく検証式Ｖ１が成り立つことを検証する（Ｓ２）。
この検証が正しければ、引換番号生成器２０３を駆動して引換番号Ｒｃを生成し、Ｄ，ＳＤ、および引換番号Ｒｃをハッシュ演算器２０４へ入力する。ハッシュ演算器２０４はｇ（）を一方向性関数として
Ｃ＝ｇ（Ｄ，ＳＤ，Ｒｃ）
を計算する。ハッシュ演算器２０４の出力を署名対象Ｃとする。続いて、乱数生成器２０５を駆動して乱数Ｒｂを生成し、引き下ろし金額ｗｉに対応する公開情報Ｐｗｉを記憶装置２０１内の金額対鍵対応表２０１ａより読み出し、Ｐｗｉ（ｅｗｉおよびＮｗｉ）、Ｃ、およびＲｂをブラインド署名前処理器２０６へ入力する。ブラインド署名前処理器２０６は
Ｚ＝Ｃ×Ｒｂｅｗｉ  ｍｏｄ  Ｎｗｉ
を計算する（Ｓ３）。ブラインド署名前処理器２０６の出力をＺとし、Ｚおよび引き下ろし金額情報ｗｉを銀行装置１００に送付する（Ｓ４）。
【００４０】
銀行装置１００は受信したｗｉに対応する秘密情報Ｓｗｉを記憶装置１０１内の金額対鍵対応表１０１ａより読み出し、Ｓｗｉ中のｄｗｉおよびＺを署名生成器１０２へ入力して
Ｑ＝Ｚｄｗｉ  ｍｏｄ  Ｎｗｉ
を計算する（Ｓ５）。署名生成器１０２の出力をＱとして、利用者装置２００へＱを返信する（Ｓ６）。
【００４１】
利用者装置２００はＺ＝Ｑｅｗｉ  ｍｏｄ  Ｎｗｉを満すかによりＱを検証し（Ｓ７）、正しければ、ブラインド署名後処理器２０７へＲｂ、公開鍵情報Ｐｗｉおよび受信したＱを入力し、
ＳＣ＝Ｑ／Ｒｂ  ｍｏｄ  Ｎｗｉ
を計算する（Ｓ８）。ブラインド署名後処理器２０７の出力を引換署名ＳＣとし、記憶装置２０１へ引換情報としてｗｉ，Ｄ，ＳＤ，Ｒｃ，ＳＣを記憶する（Ｓ９）。なお、銀行は引換署名ＳＣを実行する際に、その利用者の預金引き下ろしなどの会計処理を行う。
引換処理
利用者は引換情報を用いて銀行から電子コインを得るが、その引換処理における銀行装置１００の動作手順を図５に利用者装置２００の動作手順を図６にそれぞれ示し、その場合に用いる銀行装置１００および利用者装置２００の機能構成を図７に示す。
【００４２】
適当な時間の後、利用者は利用者装置２００を用いて電子コインの引換のために、銀行装置１００へ引換情報ｗｉ，Ｄ，ＳＤ，Ｒｃ，およびＳＣを送信する。銀行装置１００は受信したＤ，ＳＤおよび、記憶装置１０１内のＤ，ＳＤを比較器１０３へ入力してＤ，ＳＤが一致することを確認する（Ｓ１０）。
Ｄ，ＳＤが一致した場合は、Ｒｃを検索器１０４へ入力して記憶装置１０１から引換履歴ＨＣを読み出し、Ｒｃが過去に使用されていないことを確認する（Ｓ１１）。Ｒｃが過去に使用されていない場合は、Ｄ，ＳＤ，Ｒｃ，ＳＣ，Ｐｗｉ中のｅｗｉを署名検証器１０５へ入力して、
ｇ（Ｄ，ＳＤ，Ｒｃ）＝ＳＣｅｗｉ  ｍｏｄ  Ｎｗｉ
を満たすことを確認する（Ｓ１２）。この署名検証結果が正しければ、Ｒｃを記憶装置１０１中の引換履歴ＨＣに記憶（Ｓ１３）すると共に、コイン番号生成器１０６を駆動してコイン番号Ｒｆを生成し、ｗｉ，Ｒｆを記憶装置１０１の発行履歴ＨＦへ記憶する（Ｓ１４）。
【００４３】
その後、ｗｉ，ＲｆおよびＳ２を署名生成器１０７へ入力して、アルゴリズムＤ２により、署名を生成する（Ｓ１５）。署名生成器１０７の出力をＦとして、ＦおよびＲｆを利用者装置２００へ返送する（Ｓ１６）。
利用者装置２００は受信したＦ，Ｒｆおよびｗｉ，Ｐ２を署名検証器２０８へ入力し、アルゴリズムＤ２に基づく検証式Ｖ２が成り立つことを検証する（Ｓ１７）。検証結果が正しければ、ｗｉ，Ｆ，Ｒｆを電子コイン情報として記憶装置２０１へ格納する（Ｓ１８）。
決済処理
支払時に利用者装置２００より受領者装置３００へＦ，ｗｉ，Ｒｆが送付され、支払いが終了した状態では、受領者装置３００の記憶装置３０１にＦ，ｗｉ，Ｒｆが格納されているものとする。受領者Ｍが電子コイン情報Ｆ，ｗｉ，Ｒｆを銀行Ａで決済してもらうに必要な銀行装置１００、受領者装置３００の機能構成を図８に示す。
【００４４】
受領者Ｍは決済時に受領者装置３００より銀行装置１００へＦ，ｗｉ，Ｒｆを送付する。銀行装置１００は記憶装置１０１から発行履歴ＨＦを読み出し、Ｒｆと共に検索器１０８へ入力してＲｆが記憶されていることを確認する。続いて署名検証器１０９へＦ，Ｒｆ，ｗｉおよびＰ２を入力し、アルゴリズムＤ２に基づく検証式Ｖ２が成り立つことを検証する。検証が正しければ、発行履歴ＨＦからＲｆ，ｗｉに関する情報を削除する、または、外部記憶装置１１０へ移動する。
引換履歴更新処理
銀行装置１００は一定期間の後、以前の日付情報Ｄに基づいて発行した引換署名ＳＣは期限切れになるものとし、これを図９に示すように検査し（Ｓ２０）、Ｄ′，ＳＤ′を生成し、つまり署名ＳＤをＳＤ′へ更新する（Ｓ２１）。期限切れになった日付情報Ｄと署名ＳＤを記憶装置１０１から削除する。続いて、以前の日付情報Ｄに基づく引換履歴ＨＣ中の引換番号Ｒｃを削除する、または、図１０に示すように以前の日付情報Ｄにもとづく、Ｒｃ，Ｒｆ，ｗｉを外部記憶装置１１０へ移動する。これ以降、引換処理において、以前の日付情報Ｄが利用者装置２００から送付されてきた場合、対応する日付情報を記憶装置１０１から読み出せないため、比較器１０３での比較結果が不良となり、引換処理は中断される。
【００４５】
利用者装置２００中の引換番号生成器２０３の具体例を図１１に示す。この例では乱数生成器２０９から生成した乱数と、その利用者装置２００の利用者固有情報ＩｄＵとをハッシュ演算器２１０に入力して、その演算結果として引換番号Ｒｃを得る。
また銀行装置１００中のコイン番号生成器１０６は例えば図１２に示すように、コイン番号初期値を記憶装置１１１に格納し、記憶装置１１１よりコイン番号Ｒｆを出力すると共に、加算器１１２でＲｆ＝Ｒｆ＋１を演算し、つまり出力しているコイン番号Ｒｆを＋１して記憶装置１１１に格納する。
【００４６】
実施例２
ここでは、特願平７−２８７４５７「信託機関付き電子現金方法」に基づく、この発明の実施例を示す。図１３にこの実施例の原理機能構成例を示す。
この実施例では、電子現金の利用者は、まず最初に、信託機関と呼ぶ機関により、利用許可証を発行してもらう。銀行（ここでは、電子現金の発行・決済者を銀行と呼ぶが、実際は、どのような機関でも良い）は、利用者の要求に従い、利用者にある金額の引換券を発行する。この引換券は、発行日を含み、利用者は一定期間内に、銀行へ引換券を送付して電子現金の発行を受ける。利用者は、その電子コインを額面金額になるまで何回でも各種小売店（受領者）の支払いに用いる。最後に、各小売店は、利用者の各支払い毎に銀行で決済を行う。
【００４７】
この実施例では、信託機関の装置（以下信託機関装置と記す）４００、銀行装置６００、利用者装置５００の各署名アルゴリズムは全てＲＳＡ方式とする。信託機関装置４００は、秘密鍵ｄｊ，Ｎｊおよび、公開鍵ｅｊ，Ｎｊを保持し、利用者装置５００は秘密鍵ｄｕ，Ｎｕと公開鍵ｅｕ，Ｎｕを持つ。銀行装置６００は、発行する電子コインの金額ｗｉに対応する秘密鍵ｄｗｉ及び公開鍵ｅｗｉの対と、金額に共通の法Ｎｗを作成し、ｗｉとｅｗｉの対応を公開する。また、法Ｎｗに対し、登録用の秘密鍵ｄ２と公開鍵ｅ２をもつ。
利用許可証の発行処理
利用者は、利用許可証を信託機関装置４００から発行してもらう。この手順は、それぞれの利用者が、匿名公開情報Ｎｕの登録時に１度だけ行う。
【００４８】
ステップ１  利用者装置５００はＮｕを信託機関装置４００に送信する。
ステップ２  信託機関装置４００は、利用者装置５００の利用者の身元を何らかの方法で確認をしたのちに、有効期限相当の情報Ｉを生成し、Ｎｕおよび、Ｉに対する署名Ｂを生成する。この署名ＢとＩを利用者装置５００に送信する。
ステップ３  利用者装置５００は、信託機関装置４００からの受信データＢ、Ｉと匿名公開情報Ｎｕとを利用許可証（Ｂ，Ｉ，Ｎｕ）として、記憶装置５０１に記憶する。
引換署名発行処理
つぎに、利用者装置５００が銀行装置６００から引換署名を発行してもらう手順を説明する（図１４参照）。
【００４９】
ステップ１  利用者装置５００は、銀行装置６００より、日付情報Ｄおよび署名ＳＤを入手する。続いて、乱数発生器５０２を用いて乱数Ｒｃを生成して、記憶装置５０１に記憶する。一方、その乱数Ｒｃと記憶装置５０１から読みだしたＢおよび、日付情報Ｄと署名ＳＤより、ハッシュ演算器５０３を用いてｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）を計算する。続いて乱数生成器５０２を駆動して乱数ｒを生成し、発行して欲しい利用限度額ｗｉ（金額情報：例えば１万円）と対応する公開鍵ｅｗｉおよび、金額共通の公開鍵Ｎｗとともにブラインド署名前処理器５０４へ入力し、次式の処理を行う。
【００５０】
Ｚ＝ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）ｒｅｗｉ  ｍｏｄ  Ｎｗ            （１）
この処理結果Ｚを電子コインの金額情報ｗｉと共に銀行装置６００に送信する。
ステップ２  銀行装置６００は、電子コインの金額ｗｉに対応する秘密鍵ｄｗｉと公開鍵Ｎｗを署名生成器６０２へ入力し、受信情報Ｚに対して次の処理を行う。
【００５１】
Ｑ＝Ｚｄｗｉ  ｍｏｄ  Ｎｗ                                  （２）
このＱを利用者装置５００に送信する。
ステップ３  利用者装置５００は、乱数ｒ、公開鍵Ｎｗと受信情報Ｑとをブラインド署名後処理５０５へ入力し、次式の処理を行って指定した金額の引換署名ＳＣを得る。
【００５２】
ＳＣ＝Ｑ／ｒｍｏｄ  Ｎｗ                                （３）
ここで、ＳＣ＝ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）ｄｗｉ  ｍｏｄ  Ｎｗとなる。
引換処理
適当な時間の後、利用者は引換署名を電子コインに引き換える。以下では、この引換処理の手順を説明する（図１５参照）。
【００５３】
ステップ１  利用者装置５００は、銀行装置６００へｗｉ，Ｂ，Ｄ，ＳＤ，ＲｃおよびＳＣを送信する。
ステップ２  銀行装置６００は受信したＤ，ＳＤおよび、記憶装置６０１内のＤ，ＳＤを比較器６０３へ入力して両Ｄ，ＳＤが一致することを確認する。
Ｄ，ＳＤが一致した場合は、Ｒｃを検索器６０４へ入力してＲｃが引換履歴ＨＣに記録されていないことを確認する。Ｒｃが過去に使用されていない場合は、Ｂ，Ｄ，ＳＤ，Ｒｃ，ＳＣ，ｅｗｉ，Ｎｗを署名検証器６０５へ入力して、
ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）＝ＳＣｅｗｉ  ｍｏｄ  Ｎｗ
を満たすことを確認する。
【００５４】
この署名検証結果が正しければ、Ｒｃを引換履歴ＨＣへ記憶し、更に、ｗｉ，Ｒｃを発行履歴ＨＦへ記憶する。その後、ＳＣおよびｄ２を署名生成器６０６へ入力して、
Ｆ＝ＳＣd2mod Ｎｗ
を計算する。署名生成器６０６の出力をＦとして、Ｆを利用者装置５００へ返送する。
【００５５】
ステップ３  利用者装置５００は受信したＦおよび、ｗｉ，Ｒｃ，Ｄ，ＳＤを電子コイン情報として記憶装置５０１へ格納する。
ここで、Ｆ＝ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）ｄｗｉｘｄ２ｍｏｄ  Ｎｗとなる。
電子コインによる支払
つぎに、利用者装置５００が銀行装置６００により発行された電子コインＦを用いて、受領者装置７００に支払いを行う場合について説明する（図１６参照）。
【００５６】
ステップ１  利用者装置５００は、Ｉ，Ｎｕ，Ｂ，Ｄ，ＳＤ，Ｒｃ，Ｆ，ｗｉを受領者装置７００に送る。
ステップ２  受領者装置７００は、受信したＩ，Ｎｕおよび、記憶装置７０１から読み出したｅｊ，Ｎｊを署名検証器７０２へ入力し、Ｉ，Ｎｕに対する署名Ｂの正当性を、次式を検証することにより確認する。
【００５７】
Ｂｅｊ≡ｇ（Ｎｕ‖Ｉ）ｍｏｄ  Ｎｊ          （４）
続いて、Ｂ，Ｄ，ＳＤ，Ｒｃに対する署名Ｆの正当性、つまり電子コインＦの正当性を検証するため、受信したＢ，Ｄ，ＳＤ，Ｒｃおよび、記憶装置７０１から読み出したｅｗｉ，Ｎｗ，ｅ２を署名検証器７０３へ入力し、次式を満たすことを確認する。
【００５８】
Ｆｅｗｉｘｅ２≡ｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）ｍｏｄ  Ｎｗ      （５）
この検査の何れかが不合格のときは以降の処理を中止する。
ステップ３  この両検査に合格する場合、受領者装置７００は乱数生成器７０４を用いて乱数Ｅ′を生成し、それを受領者装置７００の識別子ＩＤｖ及び、タイマー７０５が出力する時刻印Ｔと共に利用者装置５００に送る。
【００５９】
ステップ４  利用者装置５００は、電子コインＦのうち金額ｘを使用することを決め、署名生成器５０６へｘと受信情報Ｔ，Ｅ′，ＩＤｖを入力し、次式により署名を行う。
Ｓ＝ｇ（ｘ‖ｈ（ＩＤｖ‖Ｔ‖Ｅ′））ｄｕｍｏｄ  Ｎｕ      （６）
この署名Ｓ、公開鍵ｅｕ、およびｘを受領者装置７００に送る。
【００６０】
ステップ５  受領者装置７００は、署名検証器７０６へＳ，ｅｕ，Ｎｕ，Ｔ，Ｅ′，ＩＤｖを入力し、次式が成り立つことを検証する。
Ｓｅｕ≡ｇ（ｘ‖ｈ（ＩＤｖ‖Ｔ‖Ｅ′））ｍｏｄ  Ｎ          （７）
この検証に合格すれば、受領者装置７００は、利用者装置５００のｘに該当する金額の支払いを正当なものとみなして受領する。
決済
受領者装置７００と銀行装置６００の間の決済方法について説明する（図１７参照）。簡単のため、支払額Ｘと引き下ろし額ｗｉは同じ値である、すなわち、一つの電子コインＦが一度に使い切られる場合について説明する。
【００６１】
ステップ１  受領者装置７００は、利用者装置５００との電子コイン使用時の交換履歴Ｈ、すなわちＸ，Ｓ，Ｔ，Ｅ′，ＩＤｖ，ｅｕ，Ｉ，Ｎｕ，Ｂ，Ｄ，ＳＤ，Ｒｃ，Ｆ，ｗｉを銀行装置６００に提出する。
ステップ２  銀行装置６００は、Ｈの正当性を検査し、電子コインによる支払時の検査と同様に、つまり、式（４），（５），（７）の各検証を行う。検証結果が異常ならば、Ｆを不正コインとみなし、処理を中断する。
【００６２】
正常ならばＲｃを元に発行履歴ＨＦを検索し、Ｒｃに関する情報を削除する。引換履歴更新処理
日付情報Ｄの更新は実施例１と同様に行う。
利用許可証Ｂを利用する手法としては、実施例１において、署名対象Ｃの作成にｇ（Ｂ‖Ｄ‖ＳＤ‖Ｒｃ）とし、その他は実施例１の通りとしてもよい。実施例１において法Ｎｗｉは共通の法Ｎｗとしてもよい。更に利用許可証Ｂを用いない場合は、実施例２で説明したように、Ｒｃ＝Ｒｆとし、かつ電子現金の支払いを乱数Ｅ、時刻印Ｔ、ＩＤｖなどを用い、金額ｘの分割払いを同様の手法で行うこともできる。
【００６３】
以上の説明から理解されるように、この発明の利用者装置は例えば実施例１について見ると、図２，図７中の記憶装置２０１、署名検証器２０２，２０８、引換番号生成器２０３、ハッシュ演算器２０４、乱数生成器２０５、ブラインド署名前処理器２０６、ブラインド署名後処理器２０７を具備し、この利用者装置は当然受領もできるようにされるわけであるから、更に図８の受領者装置中の記憶装置３０１を備えることになる。
【００６４】
【発明の効果】
電子コインＦに関する情報がコインの使用以前に銀行に記憶されているため、決済時に、銀行はコインＦに関する記憶を削除することができ、コイン検証のための公開情報Ｐ２の更新なしに、履歴情報が無制限に増大することを防ぐことができる。
【００６５】
引き下ろし時に公開情報Ｄと署名ＳＤを引換署名の対象に含め、一定期間毎にＤ，ＳＤを更新することにより、公開情報Ｐ１を更新することなしに、引換期限を設定することができる。また、公開情報Ｄが日付の場合に、利用者はＤが個人を特定することができない情報であることを確認することができるため、利用者のプライバシーを保ち、かつ公開情報Ｐ１を更新することなしに引換署名に引換期限を設定することができる。そのため、引換期限を過ぎた公開情報Ｄに基づく引換履歴は削除することができ、履歴情報が無制限に増大することを防止することができる。
【００６６】
引換署名発行処理と引換処理は別々に行われ、公開情報Ｄはなんら利用者を特定する情報を含まないため、引換処理は匿名で実行でき、利用者のプライバシーを犯すことなく電子コインＦに関する情報を銀行に記憶することができる。
決済時に、銀行は電子コインＦに関する情報が記憶されていることを確認するが、この検索の対象は、未決済のコインに対してのみ行われ、従来法のように、決済の済んだすべてのコイン履歴を検索する必要はない。このため、コインの正当性検査を高速に実行することができる。
【００６７】
削除した履歴情報を外部記憶装置へ移動する場合は、不正なコイン（即ち、記憶装置内にコイン番号が記憶されていないコイン）が使用された場合に、外部記憶装置へ移動したデータを参照することによって、これが銀行の記憶装置のデータ欠落あるいは銀行の不正によるものでないことを第三者へ証明することができる。
【図面の簡単な説明】
【図１】この発明の方法が適用されるシステムの原理構成を示すブロック図。
【図２】実施例一の利用者装置と銀行装置の引換署名発行処理における機能構成例を示すブロック図。
【図３】実施例一の引換署名発行処理における利用者装置の動作手順を示す流れ図。
【図４】実施例一の引換署名発行処理における銀行装置の動作手順を示す流れ図。
【図５】実施例一の引換処理における利用者装置の動作手順を示す流れ図。
【図６】実施例一の引換処理における銀行装置の動作手順を示す流れ図。
【図７】実施例一の利用者装置と銀行装置の引換処理における機能構成例を示すブロック図。
【図８】実施例一の受領者装置と銀行装置の決済処理における機能構成例を示すブロック図。
【図９】実施例一の銀行の引換履歴削除処理を示すフロー図。
【図１０】実施例一の銀行装置の履歴情報更新処理における機能構成例を示すブロック図。
【図１１】図２中の引換番号生成器２０３の構成例を示すブロック図。
【図１２】図７中のコイン番号生成器１０６の構成例を示すブロック図。
【図１３】実施例二が適用されるシステムの原理構成例を示すブロック図。
【図１４】実施例二の引換署名の発行処理に必要な機能構成例を示すブロック図。
【図１５】実施例二の引換処理に必要な機能構成例を示すブロック図。
【図１６】実施例二の電子コインによる支払に必要な機能構成例を示すブロック図。
【図１７】実施例二の決済に必要な機能構成例を示すブロック図。
【図１】
0003599492.tif 000006
【図２】
0003599492.tif 000007
【図３】
0003599492.tif 000008
【図４】
0003599492.tif 000009
【図５】
0003599492.tif 000010
【図６】
0003599492.tif 000011
【図７】
0003599492.tif 000012
【図８】
0003599492.tif 000013
【図９】
0003599492.tif 000014
【図１０】
0003599492.tif 000015
【図１１】
0003599492.tif 000016
【図１２】
0003599492.tif 000017
【図１３】
0003599492.tif 000018
【図１４】
0003599492.tif 000019
【図１５】
0003599492.tif 000020
【図１６】
0003599492.tif 000021
【図１７】
0003599492.tif 000022