(57)【特許請求の範囲】
【請求項１】
電子現金で、支払額を支払う支払マシンと、
支払マシンと通信可能であり、更に互いに通信可能な第１及び第２の受領マシンと、を有する電子現金システムにおいて、
前記第１の受領マシンは、
自分の受領額の電子現金を格納する記憶装置と、
前記支払マシンと通信して、前記支払マシンから前記第１及び第２の受領マシンの受領額の合計額に等しい支払額と、この支払額分の電子現金と、ライセンスとを受信し、第１の受領マシンの受領額と予め用意された乱数からハッシュ関数を用いてチャレンジを作成して前記第１の受領マシンの受領額、前記乱数、前記支払額、前記電子現金、前記ライセンスと共に第２の受領マシンに送信し、前記第２の受領マシンから受信した受領額と自分の受領額との合計額が前記支払額と等しいかチェックし、正しければ作成した前記チャレンジと前記第２の受領マシンから受信したチャレンジとからハッシュ関数を用いて前記支払額の正当な受領権限を示すチャレンジを作成し、前記支払額と共に前記支払マシンへ送信し、次に前記支払額の正当な受領権限を示すチャレンジと前記支払額との全体に対し前記支払マシンの秘密鍵で作成された電子署名を前記支払マシンから受信し、前記ライセンスに含まれている公開鍵を用いて元のデータを復元することで前記電子署名を検証し前記電子署名が正当である場合は前記電子現金の中から自分の受領額を前記記憶装置に格納させると共に、前記電子署名を前記第２の受領マシンへ送信する計算機とを備え、
前記第２の受領マシンは、
前記第２の受領マシンの受領額の電子現金を記憶する記憶装置と、
前記第１の受領マシンから受信した前記支払額から前記第１の受領マシンの受領額を差し引いて自分の受領額と等しいかチェックし、等しければ前記自分の受領額と予め用意された乱数からハッシュ関数を用いてチャレンジを作成し、前記自分の受領額と前記乱数と共に前記第１の受領マシンに送信し、前記第１の受領マシンから受信したチャレンジ及び作成したチャレンジから前記支払額の正当な受領権限を示すチャレンジを作成し、前記第１の受領マシンから受信した電子署名を前記ライセンスに含まれている公開鍵を用いて元のデータを復元することで検証し電子署名が正当である場合は前記電子現金の中から自分の受領額の電子現金を前記記憶装置に格納させる計算機とを備えることを特徴とする電子現金システム。
【請求項２】
電子現金で、支払額を支払う支払マシンと、
支払マシンと通信可能であり、更に互いに通信可能なｎ台（ｎは２以上の整数）の受領マシンと、を有する電子現金システムにおいて、
最初の受領マシンは、
自分の受領額の電子現金を格納する記憶装置と、
前記支払マシンと通信して、前記支払マシンから前記複数の受領マシンの受領額の合計額に等しい支払額とこの支払額分の電子現金とライセンスを受信し、前記支払額が自己の受領額を超えているかチェックし、超えているならば前記支払額から受領額を引いて残額を求め、前記残額と予め用意された乱数からハッシュ関数を用いてチャレンジを作成して前記電子現金と前記ライセンス、前記残額、前記乱数とともに２番目の受領マシンに送信し、
前記２番目の受領マシンから受信した受領額の合計額と自分の受領額との合計額が前記支払額と等しいかチェックし正しければ自己が作成したチャレンジと受信した全てのチャレンジとからハッシュ関数を用いて前記支払額の正当な受領権限を示すチャレンジを作成して前記支払額と共に前記支払マシンへ送信し、
次に前記支払額の正当な受領権限を示すチャレンジと前記支払額に対し前記支払マシンの秘密鍵で作成した電子署名を前記支払マシンから受信し、
前記ライセンスに含まれている公開鍵を用いて前記電子署名から元のデータを復元して検証し、前記電子署名が正当であれば、自己の受領額分の電子現金を前記記憶装置に格納させ、前記電子署名を前記２番目の受領マシンに送信する計算機とを備え、
ｉ番目（ｉは２≦ｉ≦ｎ−１なる整数）の受領マシンは、
自分の受領額の電子現金を格納する記憶装置と、
ｉ−１番目の受領マシンから受信した残額が自分の受領額を超えているかチェックし、超えていれば前記受信した残額から自分の受領額を差し引き、差し引き後の残額と予め用意された乱数とからハッシュ関数を用いてチャレンジを作成し、前記電子現金と前記ライセンス、受信したチャレンジ、前記差し引き後の残額と前記乱数とともにｉ＋１番目の受領マシンに送信し、
ｉ＋１番目の受領マシンから受信した受領額と自分の受領額との合計額がすでに受領済みの残額と等しいかチェックし、正しければ前記ｉ＋１番目の受領マシンから受領したチャレンジと自己が作成した前記チャレンジと前記合計額をｉ−１番目の受領マシンに送信し、
受信したすべてのチャレンジ及び自己が作成した前記チャレンジとからハッシュ関数を用いてチャレンジを作成し、前記ｉ−１番目の受領マシンから受信した前記電子署名を前記ライセンスに含まれている公開鍵を用いて元のデータを復元することで検証し、前記電子署名が正当である場合は、前記電子現金の中から自分の受領額の電子現金を前記記憶装置に格納させ、前記電子署名を前記ｉ＋１番目の受領マシンに送信する計算機とを備える、ことを特徴とする電子現金システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子現金で支払を行う電子現金方式に関し、特に、複数の受領者へ支払うための改良に関する。
【０００２】
【従来の技術】
従来の電子現金方式として、例えば、森畠、赤鹿、、菅沼、高橋「階層型電子現金方式」電子情報通信学会、情報とセキュリティシンポジウム、１９９８年、に記載されたものが知られている。図１は、この従来の電子現金方式の支払プロトコルを示す。
【０００３】
支払者と受領者間で支払金額ｘの合意が成立した後、まず、支払者側のマシン１（以下、単に「支払マシン」という）が、支払い金額ｘ分の電子現金Ｃと、支払者の公開鍵に電子現金発行機関の秘密鍵の電子署名が付加されたライセンスＬと、支払金額ｘとを、受領者側のマシン３（以下、単に「受領マシン」という）に送付する（ステップＳ１）。受領マシン３は、受領した支払金額ｘと電子現金Ｃとをチェックした後、受領者の利用者番号ＩｄＵと適当な乱数とからチェレンジＣｈａｌｌを生成し（Ｓ２）、このチャレンジＣｈａｌｌを支払マシン１へ送信する（Ｓ３）。このチャレンジＣｈａｌｌは、正当な受領者であることを示すための識別データとしての役割をもつものである。支払マシン１は、チャレンジＣｈａｌｌを受信すると、そのチャレンジＣｈａｌｌと支払金額ｘと電子現金Ｃから支払者の公開鍵を用いて電子署名Ｓを作成し（Ｓ４）、電子署名Ｓを受領マシン３へ送信する（Ｓ５）。この電子署名Ｓは、電子現金ＣがチャレンジＣｈａｌｌの作成者（つまり受領者）宛てのものであることを、支払者が認めたことを示すデータである。受領マシン３は、受信した電子署名Ｓが正しいことを検証し、検証が完了すると、電子現金Ｃを記憶媒体に格納する。
【０００４】
【発明が解決しようとする課題】
上述した従来の電子現金方式では、チャレンジは、１回の支払について、一人の受領者から一人の支払者へ送信される。つまり、チャレンジは、１回の支払について、一人の受領者と一人の支払者について唯一のものである。従って、一人の支払者が複数の受領者に支払いを行う場合、その受領者の数だけチャレンジが存在しなくてはならないから、支払者は個々の受領者に対し別々に上記の支払プロトコルを実行しなければならない。
【０００５】
その結果、例えば、複数の業者が品物を販売している電子モール上で、客が販売業者の異なる複数の品物を購入した場合、客は各業者に対して別個に支払いを実行しなくてはならない。この面倒を無くすため、客がどの業者から何の品物を何個購入しても、それらの代金を纏めて１回で代表業者に支払えば済むよう電子モールを運用することもできるが、そうすると、電子モール側で代金分配のために各業者間で１対１の支払プロトコルを行わなくてはならない。また、売上金だけでなく、例えば、電信モールの出店業者と、電子モールの経営業者との間にテナント料の支払なども、やはり業者間で１対１で行わなくてはならない。
【０００６】
そこで、もし、客が１回で支払った電子現金が、各業者にそれぞれの取り分に従って自動的に分配されれば、上記の問題は解決される。
【０００７】
また、従来の電子現金方式では、支払者は予め受領者の受領金額を知っていなければ支払いができない。しかし、もし、支払者が何も意識しなくても、支払われた電子現金が複数の受領者間で正しく自動分配されるならば、余計な面倒が無く且つ自由度の高い商売の運用が可能となる。
【０００８】
従って、本発明の目的は、１回の支払行為で複数の受領者へ電子現金を支払うことができる電子現金方式を提供することにある。
【０００９】
本発明の第２の目的は、支払者が特に意識しなくても、支払われた電子現金が複数の受領者に正しく自動分配される電子現金方式を提供することにある。
【００１０】
【課題を解決するための手段】
本発明の電子現金方式は、複数の受領額をそれぞれ割り当てられた複数の受領マシンと、一つの支払マシンと通信して、この支払マシンから上記複数の受領額の合計額に等しい支払額とこの支払額分の電子現金とを受信し、次に、その支払額の正当な受領権限を示すチャレンジを作成して支払いマシンへ送信し、次に、支払マシンから上記チャレンジに対する電子署名を受信する支払マシンインタフェースとを備える。各受領マシンは、支払マシンインタフェースが受けた支払額から自分の受領額を取ることができるかチェックし、取ることができれば、自分の受領額の正当な受領権限を示すチャレンジ要素を作成する手段と、支払マシンインタフェースが受けた電子署名を検証して、この電子署名が正当であれば、支払マシンインタフェースが受けた電子現金の中から自分の受領額分の電子現金を受領する手段とを有する。また、支払マシンインタフェースは、複数の受領マシンが作成したチャレンジ要素を集めて、これらのチャレンジ要素から前記チャレンジを作成する。
【００１１】
この電子現金方式によれば、複数の受領マシンが、支払マシンから送られてきた支払額と自分たちの受領額との数的関係が正しいかをチェックし、正しければ、それぞれの受領マシンが、各々の受領額の正当受領権限を示すチャレンジ要素を作成する。そして、支払マシンインタフェースが、全ての受領マシンの作成したチャレンジ要素を集め、それらに基づき支払者向けの一つのチャレンジを作成して、支払マシンへ送る。そのため、支払マシンとしては、複数の受領額の合計額を支払額として１回の支払プロトコルを実行するだけで支払が完了する。しかも、支払者は個々の受領者の受領額を知る必要がないので、受領者側は、支払者に関係なしに、支払額を自分たちの都合に従って分配できる。
【００１２】
好適な実施形態では、支払者向けのチャレンジを作成する際、全ての受領マシンからのチャレンジ要素にハッシュ関数のような圧縮型暗号処理を施して、一定のデータ長をもったチャレンジを作成する。従って、支払マシンが署名するチャレンジは、受領者の人数に関わらず一定のデータ長をもつ。よって、支払マシンの処理は、従来の一対一で支払を行うときのものと同じでよい。
【００１３】
好適な実施形態では、複数の受領マシンの中の１つの代表マシンが支払マシンインタフェースを有している。そして、その代表マシンを先頭に、複数の受領マシンが数珠繋ぎに通信接続される。支払マシンから支払額や電子現金は、代表マシンから最後の受領マシンまで各マシンにより順次にリレーされ、また、各受領マシンが作成したチャレンジ要素も順次に代表マシンまでリレーされる。このリレーの過程で、各受領マシンは、支払額から他の受領マシンの受領額を差し引いた残額、又は、他の受領マシンの受領額の合計額を、隣の受領マシンから受け取ることになる。この残額又は合計額から、各受領マシンは、支払額から自分の受取額を取れるかどうかを判断することができる。従って、代表マシンに全ての受領マシンのチャレンジ要素が集まった段階で、支払額と受取額との数的関係が正しいことが確認されたことになる。しかも、各受領マシンの受領額は、他の受領マシンに知られない。
【００１４】
本発明は典型的にはコンピュータにより実施することができるが、そのためのコンピュータプログラムは、ディスク型ストレージ、半導体メモリおよび通信ネットワークなどの各種の媒体を通じてコンピュータにインストールまたはロードすることができる。
【００１５】
【発明の実施の形態】
図２は、本発明の一実施形態にかかる電子現金方式の支払プロトコルを示す。図２に示す支払プロトコルは、二人の受領者がいる場合の例示である。
【００１６】
支払者は、電子現金を格納し且つ支払プロトコルの実行に必要な演算が可能な支払マシン１１を持つ。支払マシン１１としては、例えばＩＣカードのように耐タンパ性をもった装置が適しているが、勿論、他のタイプの計算機であってもよい。個々の受領者は、支払プロトコルの実行に必要な計算機と、受領した電子現金を格納することができる記憶装置とのセット（以下、「受領マシン」という）１３、１５を持っている。支払マシン１１と少なくとも一つの受領マシン１３とは通信することができる。受領マシン１３、１５同士も通信することができる。
【００１７】
ここで、一方の受領者の受領額がｘ１、他方の受領者の受領額がｘ２、支払者の支払金額がｘ（＝ｘ１＋ｘ２）であるとする。但し、支払者は支払額ｘは知っているが、個々の受領者の受領額ｘ１、ｘ２は知らない。
【００１８】
支払者が支払金額ｘに合意した後、支払マシン１１は、ステップＳ１１に示すように、格納されている電子現金のうち支払金額ｘ円に相当する電子現金Ｃと、支払者が電子現金の正当な利用者であることを示すライセンスＬと、支払金額ｘとを、最初の受領者の受領マシン１３に送信する。
【００１９】
この最初の受領マシン１３は、ステップＳ１２で示すように、２つの乱数Ｒ１１、Ｒ２１を用意し、そして、第１の乱数Ｒ１１と自分の受領額ｘ１とに一方向性関数、例えばハッシュ関数、を施して、受領額ｘ１に関するチャレンジ要素Ｆ１１を作成し、また、第１の受領者の利用者番号ＩｄＵ１と、この受領者側で当該取引に割り当てた識別番号Ｇｂ１と、上記の第２の乱数Ｒ２１とに、同様にハッシュ関数を施して、利用者番号ＩｄＵ１に関するチャレンジ要素Ｆ２１を作成する。その後、この最初の受領マシン１３は、ステップＳ１３で示すように、支払マシン１１から受け取った電子現金ＣとライセンスＬと支払金額ｘと共に、自分の作成した２つのチャレンジ要素Ｆ１１、Ｆ２１と、自分の受領額ｘ１に関するチャレンジ要素Ｆ１１の作成元となった受領額ｘ１と乱数Ｒ１１とを、次の（最後の）の受領マシン１５へ送信する。
【００２０】
この最後の受領マシン１５は、ステップＳ１４で示すように、２つの乱数Ｒ１２、Ｒ２２を用意し、そして、まず、最初の受領マシン１３から受け取った受領額ｘ１と乱数Ｒ１１と、その受領額ｘ１に関するチャレンジ要素Ｆ１１とから、その受領額ｘ１が正しいことを確認する。次に、この最後の受領マシン１５は、正しいと確認された最初の受領者の受領額ｘ１を支払額ｘから差し引いて残額を求め、その残額（＝ｘ−ｘ１）が自分の受領額ｘ２に等しいかをチェックし、正しければ、予め用意していた２つの乱数Ｒ１２、Ｒ２２のうちの一方の乱数Ｒ１２と自分の受取額ｘ２とから、同様にハッシュ関数を用いて自分の受取額ｘ２に関するチャレンジ要素Ｆ１２を作成し、また、最後の受領者の利用者番号ＩｄＵ２と、この受領者側で当該取引に割り当てた識別番号Ｇｂ２と、もう一方の乱数Ｒ２２とから、同様にハッシュ関数を用いて、利用者番号ＩｄＵ２に関するチャンレンジ要素Ｆ２２を作成する。更に、この受領マシン１５は、タイムスタンプＴｓと、署名用の乱数Ｒｓとを発生する。その後、この最後の受領マシン１５は、ステップＳ１５で示すように、タイムスタンプＴｓと、署名用の乱数Ｒｓと、自分の作成したチャレンジ要素Ｆ１２、Ｆ２２と、自分の受領額ｘ２に関するチャレンジ要素Ｆ１２の作成元となった受領額ｘ２と乱数Ｒ２１とを、最初の受領マシン１３に送る。
【００２１】
最初の受領マシン１３は、ステップＳ１６に示すように、支払額ｘと自分の受領額ｘ１と最後の受領マシン１５から受け取った受領額ｘ２との間の数的関係が正しいかをチェックし、正しければ、自分の作成したチャレンジ要素Ｆ１１、Ｆ２１と、最後の受領マシン１３から受け取ったチャレンジ要素Ｆ１２、Ｆ２２とに、ハッシュ関数を施して、支払者向けの１つのチャレンジＦを作成する。その後、この最初の受領マシン１３は、今作成したチャレンジＦと、最後の受領マシン１５から受け取ったタイムスタンプＴｓと著名用乱数Ｒｓと、支払額ｘとを支払マシン１３へ送る。
【００２２】
支払マシン１３は、ステップＳ１８に示すように、受領マシン１３から受信した支払額ｘが正しいかチェックし、正しければ、受信したデータＴｓ、Ｒｓ、Ｆ、ｘ全体に対して、自分の秘密鍵を用いて電子署名Ｓを作成し、そして、ステップＳ１９で示すように、その電子署名Ｓを最初の受領マシン１３へ送る。最初の受領マシン１３は、ステップＳ２１で示すように、その電子署名３を最後の受領マシン１５へも送る。
【００２３】
そして、最初の受領マシン１３は、ステップＳ２０で示すように、支払マシン１１から受信した電子署名Ｓを、既に受信済みの支払者のライセンスＬに含まれている公開鍵を用いて検証する。すなわち、支払者の公開鍵を用いて、受信した電子署名Ｓから、その電子署名Ｓの作成の元となったデータを復元し、その復元したデータが真の元データＴｓ、Ｒｓ、Ｆ、ｘに一致するかをチェックする。その結果、電子署名Ｓが正当であれば、受領マシン１３は、自分の受領金額ｘ１分の電子現金を、支払者のライセンスＬ、チャレンジＦ、及びチャレンジ要素Ｆ１１、Ｆ２１、Ｆ１２、Ｆ２２と共に記憶装置に格納する。
【００２４】
同様に、最後の受領マシン１５も、ステップＳ２２で示すように、受信又は作成済みのチャレンジ要素Ｆ１１、Ｆ２１、Ｆ１２、Ｆ２２からチャレンジＦを計算した上で、支払者からの電子署名ＳをライセンスＬに含まれている支払者の公開鍵を用いて検証し、その結果、電子署名Ｓが正当であれば、自分の受領金額ｘ２分の電子現金を、支払者のライセンスＬ、チャレンジＦ、及びチャレンジ要素Ｆ１１、Ｆ２１、Ｆ１２、Ｆ２２と共に記憶装置に格納する。
【００２５】
以上の手順で支払を行うことにより、支払者は受領者が複数か単数かを意識することなく１回の支払プロトコルを行うだけで、複数の受領者に支払を行うことができ、支払者の手間及び通信費用負担が軽減する。受領者側では、支払者に余計な面倒をかけることなく、受領金を自分たちの商売事情に応じて分配することができる。例えば、電子モールの出店業者が売上金の一部を自動的にテナント料として電子モール経営者へ支払ったりすることができる。また、支払者が署名するチャレンジＦは、複数の受領者が作成したチャレンジ要素をハッシュ関数のような圧縮型暗号処理で処理して所定のデータ長にしたものであるため、受領者が何人いても、支払者は同じ演算で署名を行うことができる。
【００２６】
図３と図４は、両図を繋ぐことで、本発明の別の実施形態にかかる支払プロトコルを示している。図３では、受領者がｎ人いる場合を例示している（ｎは２以上の任意の整数）。ここで、ｉ番目（ｉ＝１、２、…、ｎ−１、ｎ）の受領者の受領額をｘｉとし、支払金額をｘ（＝ｘ１＋ｘ２＋…＋ｘｎ−１＋ｘｎ）とする。
【００２７】
最初の受領者の受領マシン２１は、ステップＳ３１で示すように、支払者（図示せず）からライセンスＬ、支払額ｘ分の電子現金Ｃ及び支払額を受信すると、ステップＳ３２で示すように、受信した支払額ｘが自分の受領額ｘ１を超えいているかチェックし、超えているならば、支払額ｘから自分の受領額ｘ１を差し引き、その残額とｘ−ｘ１予め用意してある乱数Ｒ１１から、ハッシュ関数を用いて残額ｘ−ｘ１に関するチャレンジ要素Ｃｈａｌｌ１１を作成し、また、自分の利用者番号ＩｄＵ１と予め用意してある乱数Ｒ２１から同様に利用者番号ＩｄＵ１に関するチャレンジ要素Ｃｈａｌｌ２１を作成する。その後、最初の受領マシン２１は、ステップＳ３３で示すように、支払者からのデータＬ、Ｃ、ｘと共に、自分の作成したチャレンジＣｈａｌｌ１１、Ｃｈａｌｌ２１と、残額ｘ−ｘ１と乱数Ｒ１１とを２番目の受領マシン２３へ送る。
【００２８】
２番目の受領マシン２３は、ステップ３４で示すように、最初の受領マシン２１から受信した残額ｘ−ｘ１と乱数Ｒ１１と残額用のチャレンジ要素Ｃｈａｌｌ１１から、その受け取った残額ｘ−ｘ１が正しいことを確認した後、その残額ｘ−ｘ１が自分の受領額ｘ２を超えているかチェックし、超えていれば、その残額ｘ−ｘ１から自分の受領額ｘ２を差し引き、その残額ｘ−ｘ１−ｘ２と予め用意してある乱数Ｒ１２から残額ｘ−ｘ１−ｘ２に関するチャレンジ要素Ｃｈａｌｌ１２を作成し、また、自分の利用者番号ＩｄＵ２と予め用意してある乱数Ｒ２２から同様に利用者番号ＩｄＵ２に関するチャレンジ要素Ｃｈａｌｌ２２を作成する（Ｓ３４）。そして、この２番目の受領マシン２３は、ステップＳ３５で示すように、支払者からのデータＬ、Ｃ、ｘと、最初の受領マシン２３からのチャレンジ要素Ｃｈｌｌ１１、Ｃｈａｌｌ２１と、自分の作成したチャレンジＣｈａｌｌ１２、Ｃｈａｌｌ２２と、残額ｘ−ｘ１−ｘ２と乱数Ｒ１２とを、図示しない３番目の受領マシン２３へ送る。
【００２９】
このようにして、２番目からｎ−１番目までの各受領マシン（一般的に、ｉ番目の受領マシン）は、１つ前の受領マシンから受け取った残額ｘ−ｘ１−…−ｘｉ−１と乱数Ｒ１ｉ−１と残額用のチャレンジＣｈａｌｌ１ｉ−１とから、その残額ｘ−ｘ１−…−ｘｉ−１が正しいことを確認した後、その残額ｘ−ｘ１−…−ｘｉ−１が自分の受領額ｘｉを超えているかチェックし、超えていれば、その残額ｘ−ｘ１−…−ｘｉ−１から自分の受領額ｘｉを差し引く。そして、その差し引きの結果の残額ｘ−ｘ１−ｘ２−…−ｘｉ−１−ｘｉと予め用意してある乱数Ｒ１ｉから、その残額ｘ−ｘ１−ｘ２−…−ｘｉ−１−ｘｉに関するチャレンジ要素Ｃｈａｌｌ１ｉを作成する。また、自分の利用者番号ＩｄＵｉと予め用意してある乱数Ｒ２ｉから、利用者番号ＩｄＵｉに関するチャレンジ要素Ｃｈａｌｌ２ｉを作成する。そして、支払者からのデータＬ、Ｃ、ｘと、前の全ての受領マシンからのチャレンジ要素Ｃｈｌｌ１１、Ｃｈａｌｌ２１、…、Ｃｈａｌｌ１ｉ−１、Ｃｈａｌｌ２ｉ−１と、自分の作成したチャレンジＣｈａｌｌ１ｉ、Ｃｈａｌｌ２ｉと、残額ｘ−ｘ１−…−ｘｉと乱数Ｒ２ｉとを、１つ後の受領マシンへ送る。
【００３０】
最後のｎ番目の受領マシン２７は、ステップＳ３９で示すように、１つ前の受領マシン２５から受け取った残額ｘ−ｘ１−…−ｘｎ−１と乱数Ｒ１ｎ−１と残額用のチャレンジＣｈａｌｌ１ｎ−１とから、その残額ｘ−ｘ１−…−ｘｎ−１が正しいことを確認した後、その残額ｘ−ｘ１−…−ｘｎ−１が自分の受領額ｘｎと一致しているかをチェックし、一致していれば、自分の受領額ｘｎと予め用意してある乱数Ｒ１ｎから、その受領額ｘｎに関するチャレンジ要素Ｃｈａｌｌ１２を作成する。また、自分の利用者番号ＩｄＵｎと予め用意してある乱数Ｒ２ｎから、利用者番号ＩｄＵｎに関するチャレンジ要素Ｃｈａｌｌ２ｎを作成する。更に、タイムスタンプＴｓと、署名用の乱数Ｒｓを発生させる。また更に、後の署名チェックの準備として、前の全ての受領マシンからのチャレンジ要素Ｃｈａｌｌ１１、Ｃｈａｌｌ２１、…、Ｃｈａｌｌ１ｎ−１、Ｃｈａｌｌ２ｎ−１と、自分の作成したチャレンジＣｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎとから、ハッシュ関数を用いて、支払者向けのチャレンジＣｈａｌｌを計算する。そして、ステップＳ４０で示すように、タイムスタンプＴｓと署名用乱数Ｒｓと、自分の作成したチャレンジ要素Ｃｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎと、自分の受領額ｘｎと乱数Ｒ１ｎとを、１つ前のｎ−１番目の受領マシン２５へ送る。
【００３１】
ｎ−１番目の受領マシン２５は、ステップＳ４１で示すように、最後の受領マシン２７から受け取った受領額ｘｎと自分の受領額ｘｎ−１との合計額ｘｎ＋ｘｎ−１が、１つ前の受領マシンから既に受信済みの残額ｘ−ｘ１−…−ｘｎ−２と等しいかチェックし、正しければ、ステップＳ４２で示すように、最後の受領マシン２７から受け取ったタイムスタンプＴｓと著名用乱数Ｒｓとチャレンジ要素Ｃｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎと、自分の作成したチャレンジ要素Ｃｈａｌｌ１ｎ−１、Ｃｈａｌｌ２ｎ−１と、上記受領額の和ｘｎ＋ｘｎ−１と、乱数Ｒ１ｎ、Ｒ１ｎ−１とを、１つ前の受領マシンへ送信する。更に、後の署名チェックの準備として、既に受信または自分で作成した全てのチャレンジ要素Ｃｈｌｌ１１、Ｃｈａｌｌ２１、…、Ｃｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎから、支払者向けのチャレンジＣｈａｌｌを計算する。
【００３２】
このようにして、ｎ−１番目から２番目までの各受領マシン（一般的に、ｉ番目の受領マシン）は、１つ後の受領マシンから受け取った受領額の合計額ｘｎ＋ｘｎ−１＋…＋ｘｉ＋１と自分の受領額ｘｉとの合計額ｘｎ＋ｘｎ−１＋…＋ｘｉ＋１＋ｘｉが、１つ前の受領マシンから既に受信済みの残額ｘ−ｘ１−…−ｘｉ−１と等しいかチェックし、正しければ、一つ後の受領マシンから受け取ったタイムスタンプＴｓと著名用乱数Ｒｓとチャレンジ要素Ｃｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎ、…、Ｃｈａｌｌ１ｉ＋１、Ｃｈａｌｌ２ｉ＋１と、自分の作成したチャレンジ要素Ｃｈａｌｌ１ｉ、Ｃｈａｌｌ２ｉと、上記受領額の合計額ｘｎ＋ｘｎ−１＋…＋ｘｉと、乱数Ｒ１ｎ、Ｒ１ｎ−１、…、Ｒｉとを、１つ前の受領マシンへ送信する。更に、後の署名チェックの準備として、既に受信または自分で作成した全てのチャレンジ要素Ｃｈｌｌ１１、Ｃｈａｌｌ２１、…、Ｃｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎから、支払者向けのチャレンジＣｈａｌｌを計算する。
【００３３】
最初の受領マシン２１は、ステップＳ４６で示すように、２番目の受領マシン２３から受け取った受領額の合計額ｘｎ＋ｘｎ−１＋…＋ｘ２と自分の受領額ｘ１との合計額ｘｎ＋ｘｎ−１＋…＋ｘ２＋ｘ１が、支払額ｘと等しいかチェックし、正しければ、既に受信または自分で作成した全てのチャレンジ要素Ｃｈｌｌ１１、Ｃｈａｌｌ２１、…、Ｃｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎから、支払者向けのチャレンジＣｈａｌｌを計算する。そして、ステップＳ４７に示すように、２番目の受領マシン２３から受け取ったタイムスタンプＴｓと著名用乱数Ｒｓと、支払額ｘと、自分の作成したチャレンジＣｈａｌｌとを、支払マシンに送信する。
【００３４】
支払マシンは、図示してないが、図２の実施形態と同様に、受領マシン２１から受信した支払額ｘが正しいかチェックし、正しければ、受信したデータＴｓ、Ｒｓ、ｘ、Ｃｈａｌｌに対する電子署名を作成して、この電子署名を最初の受領マシン２１へ送る。この電子署名は、最初の受領マシン２１から最後の受領マシン２７まで全ての受領マシンへ送られる。各受領マシン（一般には、ｉ番目の受領マシン）は、図２の実施形態と同様に、受信した電子署名を検証し、その電子署名が正当であれば、自分の受領金額ｘｉ分の電子現金を、支払者のライセンスＬ、チャレンジＣｈａｌｌ、及びチャレンジ要素Ｃｈａｌｌ１１、Ｃｈａｌｌ２１、Ｃｈａｌｌ１２、Ｃｈａｌｌ２２、…、Ｃｈａｌｌ１ｎ、Ｃｈａｌｌ２ｎと共に記憶装置に格納する。
【００３５】
この実施形態によれば、図２の実施形態と同様の利点だけでなく、各受領者の受領額が他の受領者に知られないという利点も得られる。すなわち、各受領マシンは、その前段の受領マシンからは、その前段マシンの受領額ではなくて支払額からの残額を受け、また、後段の受領マシンからは、その後段マシンの受領額ではなくて受領額の合計額を受けるから、他の受領マシンの受領額を知ることはできない。
【００３６】
以上、本発明の実施形態を説明したが、上記の実施形態はあくまで本発明の説明のための例示であり、本発明を上記実施形態にのみ限定する趣旨ではない。従って、本発明は、上記実施形態以外の様々な形態でも実施することができるものである。例えば、上記の実施形態では、支払マシンや受領マシンなどの個々のマシンを別個の計算機ハードウェアとして説明したが、必ずしもそうである必要は無く、同一の計算機ハードウェア上で実行される別個のプロセスとして実装することもできる。例えば、１番目の受領者の受領マシンと２番目の受領者の受領マシンが、実際には１台の計算機の中で多重に実行されている２つの受領プロセスである、というようにである。
【図面の簡単な説明】
【図１】従来の電子現金方式の支払プロトコルを示すブロック図。
【図２】本発明の一実施形態にかかる電子現金方式の支払プロトコルを示すブロック図。
【図３】図４と繋ぐことで、本発明の第２の実施形態にかかる電子現金方式の支払プロトコルを示すブロック図。
【図４】図３と繋ぐことで、第２の実施形態にかかる電子現金方式の支払プロトコルを示すブロック図。
【符号の説明】
１１、２１  支払マシン
３、２３〜２７  受領マシン
【図１】
0003558544.tif 000002
【図２】
0003558544.tif 000003
【図３】
0003558544.tif 000004
【図４】
0003558544.tif 000005