(57)【特許請求の範囲】
【請求項１】
送信手段、受信手段、秘密情報記憶手段、ポイント演算手段、検証手段、データベース、スコア更新手段を有するポイント発行装置が行うポイント発行方法であって、
ユーザ装置からのポイント請求時において、
上記受信手段が、ポイント値Ｓｃｏｒｅが１以上の場合は、上記ユーザ装置から前回までのポイント値Ｓｃｏｒｅと、そのＳｃｏｒｅに対応するポイント攪拌値ＰＮＴとの組み合わせを受信し、ポイント値Ｓｃｏｒｅが０の場合は、ポイント値Ｓｃｏｒｅと、ユーザ装置のユーザ秘密情報ＳＶＵに一方向性関数ｈを適用した値であるポイント攪拌値ＰＮＴとの組み合わせを受信し、
上記ポイント演算手段が、上記秘密情報記憶手段に格納された発行機関秘密情報ＳＶｓと上記受信したＰＮＴとに上記一方向性関数ｈをｂ（ｂは１以上の整数）回適用して新しいＰＮＴを作成し、
上記スコア更新手段が、上記受信したＳｃｏｒｅに上記ｂを加算し、
上記送信手段が、上記作成した新しいＰＮＴと上記加算した値Ｓｃｏｒｅとを上記ユーザ装置に送信し、
上記ユーザ装置からの満額到達通知時において、
上記受信手段が、上記ユーザ装置からＰＮＴとＳｃｏｒｅとＳＶuとを含む満額到達通知情報を受信し、
上記検証手段が、ＰＮＴが、ＳＶu，ＳＶsに上記満額到達通知情報中のＳｃｏｒｅ回、上記一方向性関数ｈを適用して作成されたことを検証し、この満額到達通知情報中のＳＶuが上記データベースに登録されていないことを確認し、そのＳＶuを上記データベースに追加登録する、ことを特徴とするポイント発行装置が行うポイント発行方法。
【請求項２】
送信手段、受信手段、秘密情報記憶手段、ポイント演算手段、検証手段、データベース、ポイント次数算出手段、判定手段を有するポイント発行装置が行うポイント発行方法であって、
上記ユーザ装置からの初回ポイント請求時において、
上記受信手段が、上記ユーザ装置からユーザ秘密情報ＳＶuに一方向性関数ｈを適用し
たＲｅｑ（＝ｈ（ＳＶu））をポイント請求として受信し、
上記ポイント演算手段が、上記受信したＲｅｑと上記秘密情報記憶手段に格納された  第１の発行機関秘密情報ＳＶsとに一方向性関数ｈをｎ（ｎは２以上の整数）回適用して
ＰＮＴ（＝ｈn（ＳＶs，ｈ（ＳＶu））を作成し、
上記送信手段が、上記作成したＰＮＴを上記ユーザ装置に送信し、
上記ユーザ装置からの次回以後のポイント請求時において、
上記受信手段が、前回のＰＮＴとｈ（ＳＶu）とを上記ユーザ装置から受信し、
上記ポイント次数算出手段が、上記受信した前回のＰＮＴの次数（一方向性関数ｈが施された回数）ｔを算出し、
上記判定手段が、上記算出したｔがｔ＞ｂ（ｂは１以上の整数）であるか否かを判定し、
上記ポイント演算手段が、上記判定結果がｔ＞ｂであればＳＶsとｈ（ＳＶu）に一方向性関数ｈをｔ−ｂ回適用して新しいＰＮＴを作成し、上記判定結果がｔ≦ｂであれば上記秘密情報記憶手段に格納された第２の発行機関秘密情報ＳＶs′とｈ（ＳＶu）に一方向性関数ｈをｎ−（ｔ−ｂ）回適用して新しいＰＮＴを作成し、
前記送信手段が、上記作成された新しいＰＮＴを上記ユーザ装置に送信し、
上記ユーザ装置からの満額到達通知時において、
上記受信手段が、上記ユーザ装置からＰＮＴとＳＶuを含む満額到達通知情報を受信し
、
上記検証手段が、上記受信したＳＶuが上記データベースに登録されていないことを確
認し、上記受信したＳＶuに対して一方向性関数ｈを適用してｈ（ＳＶu）を作成し、作成したｈ（ＳＶu）とＳＶsとＳＶs′に一方向性関数ｈをｎ回適用してｈn（ＳＶs，ｈ（Ｓ
Ｖu）），ｈn（ＳＶs′，ｈ（ＳＶu））を作成し、これらの値が先にユーザ装置に送信したものと一致すればそのＳＶuを上記データベースに追加登録する、
ことを特徴とするポイント発行装置が行うポイント発行方法。
【請求項３】
送信手段、受信手段、秘密情報記憶手段、ポイント演算手段、検証手段、データベース、ポイント次数算出手段、判定手段を有するポイント発行装置が行うポイント発行方法であって、
上記ユーザ装置からの初回ポイント請求時において、
上記受信手段が、上記ユーザ装置からユーザ秘密情報ＳＶuに一方向性関数ｈを適用し
たＲｅｑ（＝ｈ（ＳＶu））をポイント請求として受信し、
上記ポイント演算手段が、上記受信したＲｅｑと上記秘密情報記憶手段に格納された  第１の発行機関秘密情報ＳＶsとに一方向性関数ｈをｎ（ｎは２以上の整数）回適用して
ＰＮＴ（＝ｈn（ＳＶs，ｈ（ＳＶu））を作成し、
上記送信手段が、上記作成したＰＮＴを上記ユーザ装置に送信し、
上記ユーザ装置からの次回以後のポイント請求時において、
上記受信手段が、前回のＰＮＴとｈ（ＳＶu）とを上記ユーザ装置から受信し、
上記ポイント次数算出手段が、上記受信した前回のＰＮＴの次数（一方向性関数ｈが施された回数）ｔを算出し、
上記判定手段が、上記算出したｔがｔ＞ｂ（ｂは１以上の整数）であるか否かを判定し、
上記ポイント演算手段が、上記判定結果がｔ＞ｂであればＳＶsとｈ（ＳＶu）に一方向性関数ｈをｔ−ｂ回適用して新しいＰＮＴを作成し、上記判定結果がｔ≦ｂであれば上記秘密情報記憶手段に格納された第２の発行機関秘密情報ＳＶs′とｈ（ＳＶu）に一方向性関数ｈをｎ−（ｔ−ｂ）回適用して新しいＰＮＴを作成し、
前記送信手段が、上記作成された新しいＰＮＴを上記ユーザ装置に送信し、  上記ユーザ装置からの満額到達通知時において、
上記受信手段が、上記ユーザ装置からＰＮＴとＳＶuを含む満額到達通知情報を受信し
、
上記検証手段が、上記受信したＳＶuが上記データベースに登録されていないことを確
認し、受信したＰＮＴのポイント数ｄが満額ポイント数ｅよりも大であれば、ｒ＝ｄ−ｅを計算し、第２のユーザ秘密情報ＳＶu′に対して一方向性関数ｈを適用してｈ（ＳＶu′）を作成し、作成したｈ（ＳＶu′）とＳＶsとに一方向性関数ｈをｎ回適用してｈn-r（
ＳＶs，ｈ（ＳＶu′）），ｈn（ＳＶs，ｈ（ＳＶu′））を作成し、これらの作成したｈn-r（ＳＶs，ｈ（ＳＶu′）），ｈn（ＳＶs，ｈ（ＳＶu′））をユーザ装置に送信する、
ことを特徴とするポイント発行装置が行うポイント発行方法。
【請求項４】
請求項１乃至３のいずれかに記載の方法の各過程をコンピュータに実行させるプログラム。
【請求項５】
請求項４に記載したプログラム記載したプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は利用金額や利用回数などに応じてポイントを発行してもらい、そのポイントの積算数に応じて様々なサービスが受けられる仕組を、インターネットなどによるオンラインで、あるいはオフラインでアクセス可能な多数のユーザが存在する状況下で、電子的に実現する電子ポイントカードの方法に関するものである。
【０００２】
【従来の技術】
従来のこの種の電子ポイントカードの方法では、予めポイント発行機関にユーザ登録をし、ポイント発行機関がその時点での積算ポイントを管理する手法を取っており、以下が挙げられる。
・特開平１０−７８９８９、仮想商店街におけるポイントカードサービスシステム
・特開平２０００−２６８０９４、商品ポイント管理システム
この手法に一方向性関数を利用する方法が考えられる。一方向性関数とは、ｘが与えられたとき、ｘからｙ＝ｈ（ｘ）を求めることは容易であるが、逆にｙが与えられたとき、ｙ＝ｈ（ｘ）となるようなｘを求めるのは困難である関数である。この一方向性関数ｈを用いた電子ポイントカードの方法として、次のものが考えられる。つまりポイント発行機関は秘密情報ＳＶs を保持し、このＳＶs に対し、一方向性関数をｍ回適用し、
ｈm(ＳＶs)＝ｈ（ｈ（…ｈ(ＳＶs)）…）    （ｈの数はｍ）
を計算し、この値ｈm(ＳＶs)をユーザに、デジタル署名などの安全な方法を施して、つまりこの値がＳＶsに対してｍ回一方向性関数ｈを施したことを保証して渡す。これが図１２に示すように、ユーザではポイント数１のポイントカードが渡されたことになる。ここでｈm(ＳＶs)におけるｍはＳＶs に対して一方向性関数ｈを施した回数であり、これを次数と呼ぶ。
【０００３】
その後、ユーザがポイント数ｗのポイント申請をする際にはＰＮＴ＝ｈm(ＳＶs)をポイント発行機関へ送り、ポイント発行機関はＳＶs に対し、一方向性関数ｈを適用し、送られたＰＮＴと一致する、ＰＮＴの一方向性関数の適用回数（次数）ｔを求め（２回目の申請ではｔ＝ｍ）、ｔ−ｗを計算し、ＳＶs に対し、ｔ−ｗ回、一方向性関数を適用した値ｈt-w(ＳＶs)を計算して、これをポイント数ｗがそれまでのポイントに対して加算された新たなポイントＰＮＴとしてユーザに返送する。
【０００４】
ユーザはこのＰＮＴを受信し、このＰＮＴに対し一方向性関数ｈをｗ回適用してｈw(ＰＮＴ)を求め、この値が前回のＰＮＴ（この場合はｈm(ＳＶs)）と一致することを検証して、ポイントが正しく、ポイント発行機関により発行されたことを確認することができる。
このようにして図１２に示すように、一方向性関数ｈの適用回数がポイントの積算数に応じて減少する値がユーザにポイント積算数として与えられる。このようにポイント発行機関ではその申請されたポイント数に応じた次数の一方向性関数を発生してポイントとしてユーザへ送ればよく、ユーザでは送られたポイントが正しいものであるかを確認することができる。
【０００５】
【発明が解決しようとする課題】
しかし、一方向性関数を利用する方法では、ユーザからポイント申請があるごとに、その申請中のポイントと対応するＰＮＴと、ＳＶs に対する一方向性関数ｈの適用回数とから、それまでのポイント積算値を確認し、その積算値から新たに積算するポイント数に応じた一方向性関数の適用回数を求めて、その一方向性関数適用値を求めてポイントＰＮＴとしてユーザに送るため、ポイント発行機関での計算量が多いという問題がある。
【０００６】
【課題を解決するための手段】
第１発明によれば、ユーザは初回のポイント請求を、ユーザの秘密情報ＳＶu に一方向性関数ｈを適用した値Ｒｅｑ＝ｈ（ＳＶu）とＳｃｏｒｅ（＝０）をポイント発行機関に送付して行い、ポイント発行機関はポイント請求を受けると、ポイント発行機関の秘密情報ＳＶs とＲｅｑに対して一方向性関数ｈを適用した値ＰＮＴ＝ｈ（ＳＶs ,Ｒｅｑ）と、Ｓｃｏｒｅを＋１したＳｃｏｒｅをユーザに送付する。ユーザは２回目以後のポイント請求を、前回のポイント請求に対して送付されたＰＮＴをＲｅｑとし、これとＳｃｏｒｅをポイント発行機関に送付して行い、ポイント発行機関は同様に処理する。
【０００７】
ポイント発行機関が、一度にｂ（ｂは２以上の整数）を発行する際は、Ｒｅｑに対し、ＳＶs を用いて一方向性関数ｈを適用することをｂ回行い、その際に１回ごとにＳＶs を用いて
ＰＮＴ＝ｈ（ＳＶs ,ｈ（ＳＶs ,…,ｈ（ＳＶs ,Ｒｅｑ）…））（ｈの数ｂ）
を計算してＰＮＴを作成し、Ｓｃｏｒｅを＋ｂして更新して、ＰＮＴとＳｃｏｒｅをユーザへ送付する。
【０００８】
第２発明によれば、ＳＶs から作られるＳＶs ，ｈ（ＳＶs）,ｈ2(ＳＶs）,…をＳＶs の系列と呼ぶこととし、ｈa(ＳＶs）はＳＶs に対し一方向性関数ｈをａ回適用した値であり、ａを次数と呼ぶこととし、ユーザは、初回のポイント請求を、Ｒｅｑ＝ｈ（ＳＶu）を作成してポイント発行機関に送付して行い、ポイント発行機関はＰＮＴ＝ｈn(ＳＶs ,ｈ(ＳＶu）)を作成し、これをポイントとして安全性処理を施してユーザへ送付し、次回からはポイント請求を、ユーザはＲｅｑ＝（前回のＰＮＴ，ｈ(ＳＶu）)をポイント発行機関へ送って行い、ポイント発行機関は、Ｒｅｑ中の前回のＰＮＴの次数ｔを算出し、ｔ＞１であれば、ＰＮＴ＝ｈt-1(ＳＶs ,ｈ(ＳＶu）)を、ｔ＜１であれば、系列を乗り換えてＰＮＴ＝ｈn(ＳＶs′ ,ｈ(ＳＶu）)を安全性処理を施してユーザへ送る。
【０００９】
ポイント発行機関は一度にｂ点（ｂは２以上の整数）のポイントを発行する場合は受け取った前回のＰＮＴの次数ｔに対しｔ＞ｂならＰＮＴ＝ｈt-b(ＳＶs ,ｈ(ＳＶu）)をユーザへ送り、ｔ＜ｂならば系列を乗り換えて、ｈn(ＳＶs′ ,ｈ(ＳＶu）)とＰＮＴ＝ｈn-(b-t)(ＳＶs′ ,ｈ(ＳＶu）)を少くとも前者には安全性処理を施してユーザへ送る。
又、次の方法が考えられる。ポイント発行機関は、予めユーザから受け取ったｈ（ＳＶu）を用いてｈn+1(ＳＶs ,ｈ(ＳＶu）),ｈn+1(ＳＶs′,ｈ(ＳＶu）),ｈn+1(ＳＶs″,ｈ(ＳＶu）),…を一括して安全性処理を施してユーザへ送り、ユーザはポイント請求を初回はＲｅｑ＝ｈn+1(ＳＶs ,ｈ(ＳＶu）)を、２回目以降はＲｅｑ＝（前回のＰＮＴ、ｈ(ＳＶu）)をポイント発行機関に送り、ポイント発行機関は、Ｒｅｑ中に前回のＰＮＴが含まれていなければ、ＰＮＴ＝ｈn(ＳＶs ,ｈ(ＳＶu）)を、前回のＰＮＴが含まれていれば、そのＰＮＴの次数ｔを求め、ｔ＞１であればＰＮＴ＝ｈt-1(ＳＶs ,ｈ(ＳＶu）)を、ｔ＜１ならばｈn(ＳＶs′,ｈ(ＳＶu）)をユーザへ送る。ポイント発行機関が１度にｂ点（ｂは２以上の整数）のポイントで発行する場合の処理は、ｔ＞ｂならＰＮＴ＝ｈt-b(ＳＶs ,ｈ(ＳＶu）)を、ｔ＜ｂなら系列を乗り換えてＰＮＴ＝ｈn-(b-t)(ＳＶs′,ｈ(ＳＶu）)をユーザへ送る。
【００１０】
【発明の実施の形態】
以下のこの発明の実施形態では図１に示すように複数のユーザ装置１００とポイント発行機関装置２００とがデータをネットワーク３００を経由で送受信するものとして記述するが、両者は必ずしもネットワークで接続される必要はなく、両者間のデータは例えばユーザ装置がＩＣカードのような携帯端末であって、ポイント発行機関装置が店頭に設置され、両者がデータを直接やりとりするようなものであってもよい。
第一実施形態
ユーザ装置１００を図２に、ポイント発行機関装置２００を図３にそれぞれ示すように、ユーザ装置１００の記憶部１０１にユーザ情報ＩＤu 、秘密情報ＳＶu が記憶されてあり、ポイント発行機関装置２００の記憶部２０１に秘密情報ＳＶs が記憶されている。
【００１１】
図４に示すようにユーザ装置１００は初回ポイント請求時にＩＤu とＳＶu を一方向性関数演算部１０２に入力して一方向性関数ｈを適用してＲｅｑ＝ｈ（ＩＤu ,ＳＶu）を計算し、このＲｅｑとＳｃｏｒｅ（＝０）を、ポイント要求作成部１０３でポイント請求としてポイント発行機関装置２００に送付部１０４により送信する。
これらを受信部２０２で受信したポイント発行機関装置２００は、そのＲｅｑとＳＶs を一方向性関数演算部２０３に入力して一方向性関数ｈを適用してＰＮＴ＝ｈ(ＳＶs ,Ｒｅｑ)（＝ｈ（ＳＶs ,ｈ（ＩＤu ,ＳＶu）)）を作成し、さらにスコア更新部２０４でＳｃｏｒｅを１加算して更新しこれらをＰＮＴとＳｃｏｒｅポイントとしてユーザ装置１００に送信部２０５より返送する。ユーザ装置１００は受信部１０５でポイントＰＮＴ，Ｓｃｏｒｅを受信すると記憶部１０１に格納しておく。
【００１２】
２回目以降のポイント請求では、ユーザ装置１００は前回ポイント発行機関装置２００より受信したＰＮＴとＳｃｏｒｅを用い、ポイント要求作成部１０３でＲｅｑ（＝ＰＮＴ）とＳｃｏｒｅをポイント請求として送信部１０４よりポイント発行機関装置２００に送信する。ポイント発行機関装置２００は受信したポイント請求に対し初回の時と同様の処理をする。
Ｓｃｏｒｅが満額規定ポイント数に達した時、ユーザ装置１００はその時のＰＮＴ，ＳｃｏｒｅとＩＤu ,ＳＶu を満額通知として送信部１０４よりポイント発行機関装置２００に送信する。ポイント発行機関装置２００はユーザ装置１００から受信したこれらのデータと、ＳＶs を検証部２０６に入力して、ＰＮＴがＳｃｏｒｅ回一方向性関数が施されて作成されたこと、つまり、ＳＶu ,ＩＤu に対し一方向性関数ｈを適用してｈ（ＳＶu ,ＩＤu）を計算し、ｈ（ＳＶu ,ＩＤu）に対しＳＶs を用いてＳｃｏｒｅ回（例えばｍ回）一方向性関数を適用することを各適用ごとにＳＶs を用いて
ｈ（ＳＶs ,ｈ（ＳＶs ,ｈ（ＳＶs ,…,ｈ（ＳＶs ,ｈ（ＳＶu ,ＩＤu） ））））
ｈ（ＳＶu ,ＩＤu）以外のｈの数はｍ
を計算し、この計算結果とＰＮＴが一致することを確認し、また受信したＳＶu ,ＩＤu と同一のものがデータベース２０７に登録されていないことを確認して、そのＳＶu ,ＩＤu を満額到達者としてデータベース２０７に追加登録する。これによりポイントが満額になったことにもとづく例えばサービスをユーザは受けることができる。ユーザ装置１００より新たにポイント請求を行う場合は、今までに使用していない秘密情報ＳＶu′を用いて、図４に示した手順を行う。満額通知を受信し、そのＳＶu ,ＩＤu がデータベース２０７に既に登録されていれば、その満額通知に対するポイントサービスは既に済まされたものであり、２重使用が防止される。
【００１３】
この実施形態では、各ポイント請求ごとにポイント発行機関装置２００は、１回一方向性関数を適用すればよく、演算量が少なくて済む。また、満額通知までは、ユーザを明かす必要がなく、それまでは秘匿性が保持される。
なおこの場合のポイント発行機関装置２００の処理手順は図５に示すようになる。つまり入力が有り（Ｓ１）、ポイント請求であれば（Ｓ２）、Ｓｃｏｒｅを＋１して更新し（Ｓ３）か、ｈ（ＳＶs ，Ｒｅｑ）を計算してＰＮＴを求め（Ｓ４）、ＰＮＴとＳｃｏｒｅをユーザ装置１００へ送る（Ｓ５）。
【００１４】
ステップＳ２で満額通知であれば（ポイント請求でなければ）、Ｒｅｑ←ｈ（ＳＶu ，ＩＤu ）を計算し、Ｒｅｑ←ｈ（ＳＶs ，Ｒｅｑ）をＳｃｏｒｅ回数計算し（Ｓ６）、その計算結果がＰＮＴと等しければ（Ｓ７）、ＳＶu ，ＩＤu がデータベースに登録されているかを調べ（Ｓ８）、登録されていなければ、そのＳＶu ，ＩＤu をデータベースに追加登録する（Ｓ９）。ステップＳ６，Ｓ７より先にステップＳ８を行ってもよい。ステップＳ７で一致しない場合、ステップＳ８で二重使用の場合は、その満額通知に対し、受付拒否通知をする（Ｓ１０）。
第一提案形態
この第一提案形態は前記第一実施形態に加えて、お釣りポイントを発行する方法である。つまり満額通知があった際にそのＳｃｏｒｅが満額ポイント数ｍより大である場合にその超過した分について新たなポイントカードを発行する。ポイントの請求、ポイントの発行は第一実施形態と同様である。
【００１５】
Ｓｃｏｒｅが満額規定ポイント数に達し、かつＳｃｏｒｅが満額規定ポイント数を上回った時、ユーザ装置１００はその時のＰＮＴ，ＳｃｏｒｅとＩＤu ,ＳＶu およびＳＶu とは異なるＳＶu′を用いて作成したｈ（ＩＤu ,ＳＶu′）をポイント発行機関装置２００に送信する。ポイント発行機関装置２００はユーザから受信したこれらのデータと、ＳＶs を用いて、ＰＮＴがＳｃｏｒｅ回一方向性関数が施されて作成されたこと、およびデータベース２０７からこれが二重使用されたものではないことを確認して、ＳＶu ,ＩＤu を満額到達者としてデータベース２０７に追加登録する。これらの操作は第一実施形態と同様である。
【００１６】
ポイント発行機関装置２００は更に満額規定ポイント数ｍよりＳｃｏｒｅが超過した値Ｓｃｏｒｅ−ｍ＝αを求め、受領したｈ（ＩＤu ,ＳＶu′）とＳＶs を用いてｈ（ＩＤu ,ＳＶu′）に対しＳＶs を用いて一方向性関数ｈをα回繰返し適用し、その１回の適用ごとにＳＶs を用いて
ＰＮＴ＝ｈ（ＳＶs ,ｈ（ＳＶs ,…,ｈ（ＳＶs ,ｈ（ＩＤu ,ＳＶu′））…））
ｈ（ＩＤu ,ＳＶu′）を除くｈの数はαである
を計算して、この値をＰＮＴとし、これとＳｃｏｒｅ＝αをお釣りポイントとしてユーザ装置１００に返送する。ユーザ装置１００はこれをＳｃｏｒｅ＝αであるポイントとして新たに利用が可能である。このお釣りポイントの発行手順は図５中に破線で示すようにＳｃｏｒｅが満額ポイントｍより大であれば（Ｓ１１）、その差αを求め（Ｓ１２）、Ｒｅｑ←ｈ（ＳＶu′，ＩＤu）を求め、Ｒｅｑ←ｈ（ＳＶs，Ｒｅｑ）をα回行ってＰＮＴを求め（Ｓ１３）、このＰＮＴとＳｃｏｒｅ＝αをお釣りポイントとしてユーザ装置１００へ送付する（Ｓ１４）。
【００１７】
この例ではＳｃｏｒｅが満額規定ポイント数ｍを超えた場合の満額通知時にユーザ装置１００はそれまで使用したＳＶu の他にこれと異なるユーザの秘密情報ＳＶu′を送信したがｈ（ＳＶu′）として送信してもよい。ＳＶu′又はｈ（ＳＶu′）の送信はポイント発行機関装置２００で受信したＳｃｏｒｅが満額ポイントを上回っていることを確認して、ポイント発行機関装置２００がユーザ装置１００に新たなユーザ秘密情報の送信を要求して受信するようにしてもよい。
第二実施形態
第一実施形態ではポイント請求ごとにＳｃｏｒｅを１加算したが、１乃至複数のポイントを加算するようにしてもよい。この場合はポイント発行機関装置２００はユーザ装置１００から受信したＲｅｑに対し、ＳＶs を用いて一方向性関数ｈを適用することをその適用ごとにＳＶs を用いてｂ回行い、
ＰＮＴ＝ｈ（ＳＶs ,ｈ（ＳＶs ,…,ｈ（ＳＶs ,Ｒｅｑ）…））
ｈの数はｂ
を計算し、またＳｃｏｒｅをｂだけ加算し、その加算したＳｃｏｒｅとＰＮＴをユーザ装置１００へ送信する。ここでｂは１以上の整数であり、ユーザ装置１００からＲｅｑ,Ｓｃｏｒｅと共にｂ又はｂと対応する値あるいはデータなどがポイント発行機関装置２００に送られ、ポイント発行機関装置２００ではｂと対応する値あるいはデータなどが送られて来た場合は、これらをｂに換算して処理することになる。
【００１８】
上述した各実施形態において、ポイント発行機関装置２００で、その秘密情報ＳＶs を用いて一方向性関数演算する場合に、その都度、異なる秘密情報ＳＶs1,ＳＶs2,ＳＶs3,…を順次用いてもよい。
第三実施形態
ポイント発行機関装置２００はＳＶs ，ＳＶs′,ＳＶs″,…を、ユーザ装置１００はＳＶu ，ＳＶu′,ＳＶu″,…を各々秘密情報として持っている。またユーザ装置１００のユーザ情報をＩＤu とする。
【００１９】
ユーザ装置１００は初回ポイント請求時に、Ｒｅｑ＝ｈ（ＳＶu）をポイント発行機関装置２００に渡す。図６に示すようにポイント発行機関装置２００はこれらを受信すると（Ｓ１）、ＰＮＴ＝ｈn(ＳＶs ,ｈ（ＳＶu）)を演算し（Ｓ２）、このＰＮＴに対しディジタル署名などにより安全性処理を施して（Ｓ３）、ユーザ装置１００へ送信する（Ｓ４）。
次回からのポイント請求ではユーザ装置１００はＲｅｑ＝（前回のＰＮＴ，ｈ（ＳＶu）)としてＲｅｑをポイント発行機関装置に送信する。ポイント発行機関装置２００はこれを受領すると（Ｓ５）、そのＲｅｑに含まれる（前回のＰＮＴ）の次数（ｈが施されている回数）ｔを算出し（Ｓ６）、つまり前回のＰＮＴに対し、何回一方向性関数を適用すると初期値ｈn(ＳＶs ,ｈ（ＳＶu）)と等しくなるかを確認し、その時の適用回数をｎから引算した値が次数ｔであり、その次数ｔがｔ＞１であれば（Ｓ７）、ＰＮＴ＝ｈt-1(ＳＶs ,ｈ（ＳＶu）)を計算し（Ｓ８）、そのＰＮＴをユーザ装置１００に送信する（Ｓ９）。ｔがｔ＜１であればＳＶs 系列から次のＳＶs′系列へ乗り換えてＰＮＴ＝ｈn(ＳＶs′,ｈ（ＳＶu）)を計算し（Ｓ１０）、そのＰＮＴにディジタル署名などの安全性処理を施して（Ｓ１１）、ユーザ装置１００へ送信する。
【００２０】
つまり例えば図７に示すように先ずＳＶs の系列としてｈn(ＳＶs ,ｈ（ＳＶu）)１ポイント目にユーザ装置１００へ安全性処理を施して送信し、よってユーザ装置１００は受信したｈn(ＳＶs ,ｈ（ＳＶu）)が１ポイント目であることを検証でき、あるいは、１ポイント目であることが保証される。ポイント請求を行うごとにｈt(ＳＶs ,ｈ（ＳＶu）)の一方向性関数の次数ｔが順次１つずつ減少される。ユーザ装置１００は受信したＰＮＴに対し、一方向性関数ｈを繰返し適用して、最初に受信したｈn(ＳＶs ,ｈ（ＳＶu）)と一致した時の適用回数から、受信したＰＮＴのポイント数に誤りがないことを確認することができる。
【００２１】
ポイント請求が繰返され、ｈ(ＳＶs ,ｈ（ＳＶu）)、つまりｎポイントまで請求した次のポイント請求、つまりｎ＋１点に対しては別なＳＶs 系列の一方向性関数ｈn(ＳＶs ,ｈ（ＳＶu）)に乗り換えられ、同様にしてポイント請求ごとにその一方向性関数ｈの適用回数が１つずつ減少されたＰＮＴが生成され、ポイント数が２ｎになり、つまりＰＮＴ＝ｈ(ＳＶs′ ,ｈ（ＳＶu）)になり、次のポイント請求、つまり２ｎ＋１ポイント目の請求が行われると、更に別なＳＶs 系列の一方向性関数ｈn(ＳＶs″,ｈ（ＳＶu）)に乗り換えられ、このＰＮＴ＝ｈn(ＳＶs″,ｈ（ＳＶu）)が安全性処理を施されてユーザ装置１００へ送信される。
【００２２】
例えば３ｎポイントで満額になるとされると、図１２に示した場合と比較してＳＶs 系列が１本の所が３本に分割されたことになり、各ＳＶs 系列におけるＰＮＴ発行時の一方向性関数の繰返し回数が少なくて済む。
ユーザ装置１００においてポイント数ＰＮＴが満額になると満額通知と共にＰＮＴ，ＳＶu 、必要に応じてｈ(ＳＶu′)をポイント発行機関装置２００へ送信する。図８に示すようにポイント発行機関装置２００はこれらを受信すると（Ｓ１）、受信したＳＶu がデータベース２０７に登録されている、つまり二重使用かを調べ（Ｓ２）、二重使用でなければ受信したＳＶu に対し一方向性関数ｈを適用してｈ(ＳＶu)を求め、更にこれとＳＶs を用いてｎ回一方向性関数ｈを適用してｈn(ＳＶs ,ｈ（ＳＶu）)を計算し、この値が先にユーザ装置１００へ送信したｈn(ＳＶs ,ｈ（ＳＶu）)と一致するかを調べ、同様にｈn(ＳＶs′,ｈ（ＳＶu）),ｈn(ＳＶs″,ｈ（ＳＶu）)を計算し、これらが先に送信したものと一致しているか調べ、また受信したＰＮＴがｈ(ＳＶs″,ｈ（ＳＶu）)と一致するかを調べる（Ｓ３）。なおこの確認は例えばｈn(ＳＶs″,ｈ（ＳＶu）)と、ｈ(ＳＶs″,ｈ（ＳＶu）)とだけでもよい。これらの一致が確認されればそのＳＶu をデータベース２０７に追加登録する（Ｓ４）。受信したｈ(ＳＶu′)は次のポイントカード発行に利用する。
【００２３】
次にポイント機関装置２００で一度に加算するポイント数が１に限らない場合を、図７に示した複数一方向性関数系列に適用した場合を説明する。ポイント機関装置２００で加算するポイント数ｂは１以上の整数であり、このｂはユーザ装置１００から送られる場合と、対応する値やデータなどを受信して、これをポイント数ｂに変換する場合がある。この場合の処理は図６に示した処理においてステップＳ１〜Ｓ６までは同様である。ステップＳ６で前回のＰＮＴの次数ｔを算出した後、図７に示すようにｔ＞ｂかを調べ（Ｓ７）、ｔ＞ｂであればｈt-b(ＳＶs ,ｈ（ＳＶu）)を計算して計算結果をＰＮＴとして（Ｓ８）、そのＰＮＴをユーザ装置１００へ送信する（Ｓ９）。
【００２４】
ステップＳ７でｔ＞ｂでなければ、ＳＶs 系列を乗り換え、この例ではｈn-(b-t)(ＳＶs′,ｈ（ＳＶu）)を計算しこれをＰＮＴとし、更にｈn(ＳＶs′,ｈ（ＳＶu）)を計算する（Ｓ１０）。ｈn(ＳＶs′,ｈ（ＳＶu）)に対し、ディジタル署名などの安全性処理を施し（Ｓ１１）、その安全性処理を施したＳｉｇb(ｈn(ＳＶs′,ｈ（ＳＶu）))とＰＮＴをユーザ装置１００へ送信する（Ｓ１２）。なお最初のポイント請求時にｂが複数であればｈn(ＳＶs,ｈ（ＳＶu）)を安全性処理を施して送ると共にＰＮＴ＝ｈn-b-1(ＳＶs ,ｈ（ＳＶu）)をユーザ装置へ送ればよい。
【００２５】
図７に示したＳＶs の複数系列を使用する場合における満額通知処理においてお釣りポイント発行を行うには受信したＰＮＴの正当性を確認した後、図８に破線で示すようにＰＮＴのポイント数ｄが満額ポイントｅより大であれば（Ｓ５）ｄ−ｅ＝ｒを求め（Ｓ６）、それまでのユーザ秘密情報ＳＶu と異なる秘密情報ＳＶu′に対して一方向性関数ｈを施したｈ（ＳＶu′）を用い、複数のＳＶs 系列の最初から用いて、ｈn-r(ＳＶs ,ｈ（ＳＶu′）)を計算し、これをお釣りポイントＰＮＴとし、またｈn(ＳＶs ,ｈ（ＳＶu′）)を計算し（Ｓ７）、ｈn(ＳＶs ,ｈ（ＳＶu′）)に安全性処理を施し（Ｓ８）、これとお釣りポイントＰＮＴをユーザ装置１００へ送信する（Ｓ９）。なおこの例ではポイント数３ｎはこのシステムが表現できるポイント数の上限であって、満額ポイントｅは３ｎ未満の値である。
第二提案形態
複数のＳＶs 系列を使用する場合の他の例である。予めユーザ装置はｈ(ＳＶu)をポイント発行機関装置２００に渡しておき、ポイント発行機関装置２００は図１０に示すようにｈ(ＳＶu)を受信すると（Ｓ１）、ｈk+1(ＳＶs ,ｈ（ＳＶu）),ｈk(ＳＶs′,ｈ（ＳＶu）),ｈk(ＳＶs″,ｈ（ＳＶu）),…演算し（Ｓ２）、これらに対して一括して安全性処理を施して（Ｓ３）、ユーザ装置１００に渡しておく（Ｓ４）。この段階では０ポイントである。
【００２６】
ポイント請求時にユーザ装置１００は、初回の場合はＲｅｑ＝ｈn+1(ＳＶs ,ｈ（ＳＶu）)を送信する。ポイント発行機関装置２００は、ポイント請求Ｒｅｑを受信すると（Ｓ５）、それが最初のものか、つまりそのＲｅｑがｈn+1(ＳＶs ,ｈ（ＳＶu）)と等しいかを調べ（Ｓ６）、等しければ、ＰＮＴ＝ｈn(ＳＶs ,ｈ（ＳＶu）)を計算し（Ｓ７）、その計算結果をＰＮＴとしてユーザ装置１００へ送信する（Ｓ８）。
ユーザ装置１００は２回目以降のポイント請求の場合は、Ｒｅｑ＝（前回のＰＮＴ,ｈ（ＳＶu）)を、ポイント発行機関装置２００に渡す。ポイント発行機関装置２００は受信したＲｅｑがステップＳ６でｈn+1(ＳＶs ,ｈ（ＳＶu）)と一致しない場合は受信したＲｅｑ中の前回のＰＮＴの次数（ｈが施されている回数）ｔを算出し（Ｓ９）、そのｔがｔ＞１であれば（Ｓ１０）、ＰＮＴ＝ｈt-1(ＳＶs ,ｈ（ＳＶu）)を計算し（Ｓ１１）、その結果をＰＮＴとしてユーザ装置１００へ送信する（Ｓ８）。算出したｔがｔ＜１であればＳＶs 系列からＳＶs′系列に乗り換えてｈk(ＳＶs′,ｈ（ＳＶu）)を計算し（Ｓ１２）、その計算結果をＰＮＴとしてユーザ装置１００に返す。
【００２７】
つまりこの場合は図１１に示すように、ＳＶs 系列が３つの場合は、図７と比較して理解されるように、最初に各系列ＳＶs ,ＳＶs′, ＳＶs″のｎ＋１次の一方向性関数値が安全性処理が施されてユーザ装置へ送られているため、ＳＶs 系列を乗り換える際に、乗り換えた系列の最初の値（最高次数）に対して安全性処理を施す必要はない。与えるポイント数とＰＮＴの値は図７と図１１は同一値となる。ユーザ装置１００で各系列についてｎ＋１次数の値が安全に送られているので、ＰＮＴが正しいものであるかの確認は図７の場合と同様に行うことができる。
【００２８】
この第三提案形態においても、ポイント発行機関装置２００で一度に複数ポイントを加算することもできる。この場合の処理は図１０中のステップＳ１〜Ｓ６と同様の処理を行い、ステップＳ７では加算ポイント数をｂとするとＰＮＴ＝ｈn-b+1(ＳＶs ,ｈ（ＳＶu）)を計算し、ステップＳ１０ではｔ＞ｂかを調べ、ｔ＞ｂであればステップＳ１１でＰＮＴ＝ｈt-b(ＳＶs ,ｈ（ＳＶu）)を計算し、ｔ＞ｂでなければ、ステップＳ１２でＰＮＴ＝ｈn-(b-t)(ＳＶs′,ｈ（ＳＶu）)を計算すればよい。
【００２９】
この図１１に示した方法においても満額通知はＰＮＴ，ＳＶu 、必要に応じてｈ(ＳＶu′)をポイント発行機関装置２００へ送り、ポイント発行機関装置２００において図８に示したと同様に行えばよい、ただしこの場合は図８中のステップＳ３で一方向性関数ｈをｎ＋１回施して一致するかの確認をとる。お釣りポイントの発行も同様に行うことができ、この場合図８中のステップＳ７でＰＮＴ＝ｈn-r(ＳＶs ,ｈ（ＳＶu′）)の他に、ｈn+1(ＳＶs ,ｈ（ＳＶu′）),ｈn+1(ＳＶs′ ,ｈ（ＳＶu′）),…も計算し、この次数ｎ＋１の一方向性関数値に対して一括して安全性処理を施してユーザ装置へ送ることになる。
【００３０】
上述した各実施形態において、ポイント発行機関装置２００の秘密情報ＳＶs1,ＳＶs2,ＳＶs3,…としてｈx(ＳＶs),ｈx-1(ＳＶs),ｈx-2(ＳＶs),…を用いれば、ＳＶs のみを保持しておき、必要な秘密情報をＳＶs から計算して用いることができ、ポイント発行機関装置２００の秘密情報の格納記憶容量を小とすることができる。同様にユーザ装置１００の秘密情報ＳＶu ,ＳＶu′,ＳＶu″,…としてｈy(ＳＶu),ｈy-1(ＳＶu),ｈy-2(ＳＶu),…を用いてもよい。このようにすればデータベース２０７に追加登録する際に、それまでの秘密情報を消去して、今回受信した秘密情報、例えばｈy-2(ＳＶu)を登録する。つまりｈy-2(ＳＶu)に対し、１回一方向性関数ｈを適用すればｈy-1(ＳＶu)となり、この値がデータベース２０７に登録されていれば、そのｈy-2(ＳＶu)は２重使用のものでないことを確認できる。従って満額通知があり、正当なものについてユーザ秘密情報の全てをデータベース２０７に格納しておく必要がなく、最新の１つの秘密情報のみを登録しておけばよく、記憶容量を小さくすることができる。
【００３１】
上述において、例えばｈ（ＩＤu ,ＳＶu）はＩＤu ,ＳＶu のビット連結に対し一方向性関数ｈを適用することを、念頭においたが、例えばＩＤu とＳＶu の排他的論理和に対し一方向性関数ｈを適用するなど、ＩＤu とＳＶu を含むものであればよい。更に上述において、ＩＤu を用いたが、これを省略してもよい。また逆に図７、図１１に示した実施形態において、ｈ（ＳＶu）の代りにｈ（ＳＶu ,ＩＤu）を用いてもよい。
一方向性関数ｈの１回の計算量を１とし、その時の安全性処理関数Ｆ（例えばディジタル署名）を１回施すための計算量をＣ（Ｆ）とし、図１２に示した方法における一方向性関数の最大値をｍとすると、ポイント発行機関装置における初回からｍ回目までの合計の計算量Ｃ（Ｐ） はＣ（Ｐ） ＝（ｍ（ｍ＋１）／２）＋Ｃ（Ｆ）となる。
【００３２】
一方、図７に示した方法において、全体ＳＶs 系列の一方向性関数の適用長を図１２の場合と同様にｍとすると、合計の計算量は、
0003986261.tif 000002
図１１に示した方法においては合計の計算量は
0003986261.tif 000003
Ｃ（Ｉ１）,Ｃ（Ｉ２）の各極小値Ｃ（Ｉ１）min,Ｃ（Ｉ２）minは
ｎ＝√Ｃ２・Ｃ（Ｆ）の時でＣ（Ｉ１）min＝ｎ｛（１／２）＋√（２・Ｃ（Ｆ））｝
ｎ＝√２の時でＣ（Ｉ２）min＝ｍ（（３／２）＋√２）＋Ｃ（Ｆ）
となる。
【００３３】
これらとＣ（Ｐ）との差は
Ｃ（Ｐ）−Ｃ（Ｉ１）min＝（１／２）（ｍ−√（２・Ｃ（Ｆ））2 ＞０
となり、ｍ＞ｎ＝√（２・Ｃ（Ｆ）であればＣ（Ｆ）によらず、図７に示した方法は図１２に示した方法よりも計算量が下回っている。一般的に関数ｈの計算量を１とし、Ｆをディジタル署名とすると、Ｃ（Ｆ）＝１００００程度とされているので、図７に示す方法は現存する一般的なポイントカードシステムへの適用においても十分効果が期待できる。
【００３４】
Ｃ（Ｐ）−Ｃ（Ｉ２）min＝（ｍ／２）（ｍ−２−２√２）
となり、ｍ＞２＋２√２かつｎ＝√２ならばＣ（Ｆ）によらず、図１１に示した方法は図１２に示した方法よりも計算量が下回る。現在のポイントカードシステムではｍ＝１００〜１００００００程度であると想定され、図１１に示した方法も現存する一般的なポイントカードシステムへ適用して十分な効果が期待できる。
上述した各実施形態において、ユーザ装置１００、ポイント発行機関装置２００はそれぞれコンピュータによりプログラムを実行させて機能させるようにすることもできる。
【００３５】
【発明の効果】
上記各実施形態によれば、安全性が高く、電子署名よりも処理速度の速い一方向性関数を用いることで電子ポイントカードシステムを構築することができる。
積算ポイント数が満額に達するまでは、ユーザ情報ＩＤu は一方向性関数ｈで守られているため、満額までは匿名で参加可能である。
また、ポイント発行機関装置ではＳＶs を用いてＰＮＴを発行していることが、自分が発行したことの証拠となるため、ユーザのポイント獲得状況をデータベース等で逐一管理する必要はない。これにより、インターネット上など数多くのユーザが存在する環境に対してもポイント発行機関が大規模なデータベースなどを用意する必要はない。さらに満額到達通知の際に送られてくるＩＤu とＳＶu を管理しておくことにより、ポイントの二重使用が避けられる。
【図面の簡単な説明】
【図１】この発明が適用されるシステム構成の例を示す図。
【図２】第一実施形態におけるユーザ装置の機能構成例を示す図。
【図３】第一実施形態におけるポイント発行機関装置の機能構成例を示す図。
【図４】単発発行におけるポイント請求・発行の手順を示す図。
【図５】図３のポイント発行機関装置の処理手順の例を示す図。
【図６】第四実施形態におけるポイント発行機関装置の処理手順の例を示す流れ図。
【図７】第四実施形態におけるＳＶs の系列とその乗り換えとポイントの関係例を示す図。
【図８】第四実施形態における満額通知処理の手順とお釣りポイント発行手順の例を示す図。
【図９】第四実施形態における一度に発行するポイント数を一般化した処理手順例の一部を示す流れ図。
【図１０】第五実施形態におけるポイント発行機関装置の処理手順の例を示す流れ図。
【図１１】第五実施形態におけるＳＶs の系列とその乗り換えとポイントの関係例を示す図。
【図１２】改善されたポイント発行の手順を説明するための図。
【図１】
0003986261.tif 000004
【図２】
0003986261.tif 000005
【図３】
0003986261.tif 000006
【図４】
0003986261.tif 000007
【図５】
0003986261.tif 000008
【図６】
0003986261.tif 000009
【図７】
0003986261.tif 000010
【図８】
0003986261.tif 000011
【図９】
0003986261.tif 000012
【図１０】
0003986261.tif 000013
【図１１】
0003986261.tif 000014
【図１２】
0003986261.tif 000015