(57)【特許請求の範囲】
【請求項１】
第１の記憶手段、第２の記憶手段、特徴情報復元手段および検証手段を用いてユーザのアクセス資格を認証するアクセス資格認証方法において、
上記第１の記憶手段にユーザの固有情報を記憶するステップと、
上記ユーザの固有情報と、アクセス資格認証の特徴情報とに対して、証明用補助情報を生成するために予め定められた第１の所定に計算を実行した実行結果である証明用補助情報を、上記第２の記憶手段に記憶するステップと、
上記特徴情報復元手段により、上記第１の記憶手段に記憶されている上記ユーザの固有情報と、上記第２の記憶手段に記憶されている上記証明用補助情報とに、アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算を施してアクセス資格認証の特徴情報を生成するステップと、
上記アクセス資格認証の特徴情報を生成できたことを上記検証手段により検証するステップとを有し、
上記証明用補助情報を生成するために予め定められた第１の所定の計算と、上記アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算とを、上記ユーザの固有情報、上記アクセス資格認証の特徴情報および上記証明用補助情報が対応する場合に上記特徴情報復元手段が正当なアクセス資格認証の特徴情報を生成するように選定したことを特徴とするアクセス資格認証方法。
【請求項２】
ユーザのアクセス資格を認証するアクセス資格認証装置において、
ユーザの固有情報を記憶する第１の記憶手段と、
上記ユーザの固有情報と、アクセス資格認証の特徴情報とに対して、証明用補助情報を生成するために予め定められた第１の所定の計算を実行した実行結果である証明用補助情報を記憶する第２の記憶手段と、
上記ユーザの固有情報と、上記証明用補助情報とに、アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算を施してアクセス資格認証の特徴情報を計算する特徴情報生成手段と、
上記特徴情報生成手段によってアクセス資格認証の特徴情報が正しく生成されたことを検証する検証手段とを有し、
上記証明用補助情報を生成するために予め定められた第１の所定の計算と、上記アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算とを、上記ユーザの固有情報、上記アクセス資格認証の特徴情報および上記証明用補助情報が対応する場合に上記特徴情報復元手段が正当なアクセス資格認証の特徴情報を生成するように選定したことを特徴とするアクセス資格認証装置。
【請求項３】
請求項１記載のアクセス資格認証方法において第３の記憶手段、第４の記憶手段および演算手段を用いユーザのアクセス資格を証明するために使われる証明用補助情報を作成する方法であって、
上記第３の記憶手段にユーザの固有情報を記憶するステップと、
上記第４の記憶手段にアクセス資格認証の特徴情報を記憶するステップと、
上記演算手段により、上記第３の記憶手段に記憶されている上記ユーザの固有情報と、上記第４の記憶手段に記憶されている上記アクセス資格認証の特徴情報に、証明用補助情報を生成するために予め定められた第１の所定の計算を実行して上記証明用補助情報を作成するステップとを有し、
上記証明用補助情報を生成するために予め定められた第１の所定の計算と、請求項１記載のアクセス資格認証方法の、上記アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算とを、上記ユーザの固有情報、上記アクセス資格認証の特徴情報および上記証明用補助情報が対応する場合に請求項１記載のアクセス資格認証方法の上記特徴情報復元手段が正当なアクセス資格認証の特徴情報を生成するように選定したことを特徴とする証明用補助情報作成方法。
【請求項４】
請求項２記載のアクセス資格認証装置においてユーザのアクセス資格を証明するために使われる証明用補助情報を作成する装置であって、
ユーザの固有情報を記憶する第３の記憶手段と、
アクセス資格認証の特徴情報を記憶する第４の記憶手段と、
上記ユーザの固有情報と、上記アクセス資格認証の特徴情報に、証明用補助情報を生成するために予め定められた第１の所定の計算を実行して上記証明用補助情報を作成する演算手段とを有し、
上記証明用補助情報を生成するために予め定められた第１の所定の計算と、請求項２記載のアクセス資格認証装置の、上記アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算とを、上記ユーザの固有情報、上記アクセス資格認証の特徴情報および上記証明用補助情報が対応する場合に、請求項２記載のアクセス資格認証装置の上記特徴情報復元手段が正当なアクセス資格認証の特徴情報を生成するように選定することを特徴とする証明用補助情報作成装置。
【請求項５】
請求項２記載のアクセス資格認証装置においてアクセス資格を証明するために使われる証明用補助情報に対するユーザからの発行依頼を受け取り、証明用補助情報を作成し、ユーザに発行する装置であって、
発行を依頼したユーザの固有情報を記憶する第３の記憶手段と、
アクセス資格認証の特徴情報を記憶する第４の記憶手段と、
上記ユーザの固有情報と、上記アクセス資格認証の特徴情報に、証明用補助情報を生成するために予め定められた第１の所定の計算を実行して上記証明用補助情報を作成する演算手段とを有し、
上記証明用補助情報を生成するために予め定められた第１の所定の計算と、請求項２記載のアクセス資格認証装置の、上記アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算とを、上記ユーザの固有情報、上記アクセス資格認証の特徴情報および上記証明用補助情報が対応する場合に、請求項２記載のアクセス資格認証装置の上記特徴情報復元手段が正当なアクセス資格認証の特徴情報を生成するように選定したことを特徴とする証明用補助情報発行装置。
【請求項６】
第１の記憶手段、第２の記憶手段および演算手段を用いてユーザのアクセス資格を証明するためのアクセス資格認証の特徴情報を復元するための特徴情報復元方法であって、
上記第１の記憶手段にユーザの固有情報を記憶するステップと、
上記第２の記憶手段に、上記ユーザの固有情報と、アクセス資格認証の特徴情報とに対して、証明用補助情報を生成するために予め定められた第１の所定の計算を実行した実行結果である証明用補助情報を記憶するステップと、
上記演算手段により、上記第１の記憶手段に記憶されている上記ユーザの固有情報と、上記第２の記憶手段に記憶されている上記証明用補助情報とに、アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算を施して、アクセス資格認証の特徴情報を復元するステップとを有し、
上記証明用補助情報を生成するために予め定められた第１の所定の計算と、上記アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算とを、上記ユーザの固有情報、上記アクセス資格認証の特徴情報および上記証明用補助情報が対応する場合に上記演算手段が正当なアクセス資格認証の特徴情報を生成するように選定したことを特徴とする特徴情報復元方法。
【請求項７】
ユーザのアクセス資格を証明するためのアクセス資格認証の特徴情報を復元するための特徴情報復元装置であって、
ユーザの固有情報を記憶する第１の記憶手段と、
上記ユーザの固有情報と、アクセス資格認証の特徴情報とに対して、証明用補助情報を生成するために予め定められた第１の所定の計算を実行した実行結果である証明用補助情報を記憶する第２の記憶手段と、
上記ユーザの固有情報と、上記証明用補助情報とに、アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算を施して、アクセス資格認証の特徴情報を算出する演算手段とを有し、
上記証明用補助情報を生成するために予め定められた第１の所定の計算と、上記アクセス資格認証の特徴情報を復元するために予め定められた第２の所定の計算とを、上記ユーザの固有情報、上記アクセス資格認証の特徴情報および上記証明用補助情報が対応する場合に上記演算手段が正当なアクセス資格認証の特徴情報を生成するように選定したことを特徴とする特徴情報復元装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はユーザのアクセス資格を認証するアクセス資格認証技術ならびにアクセス資格認証に用いる証明用補助情報に関する。
【０００２】
【従来の技術】
［関連技術］
この発明と同分野に属する先行技術としてプログラムの実行制御技術が知られている。プログラム実行制御技術は、
１．アプリケーションプログラム中に、ユーザのアクセス資格認証のためのルーチンを埋め込み、
２．該ルーチンはアプリケーションの実行を試みているユーザが正規の認証用の鍵を保有していることを検査し、
３．上記認証用の鍵の存在が確認された場合に限りプログラムを続行し、それ以外の場合にはプログラムの実行を停止する
技術である。当技術を利用することにより、認証鍵を保有する正規のユーザにのみアプリケーションプログラムの実行を可能ならしめることが出来る。当技術はソフトウェア頒布事業において実用化されており、製品として、例えばＲａｉｎｂｏｗ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｉｎｃ．社のＳｅｎｔｉｎｅｌ  ＳｕｐｅｒＰｒｏ（商標）や、Ａｌａｄｄｉｎ  Ｋｎｏｗｌｅｄｇｅ  ＳｙｓｔｅｍｓｓＬｔｄ．社のＨＡＳＰ（商標）等がある。
【０００３】
以下にプログラム実行制御技術についてより詳細に説明する。
【０００４】
１．ソフトウェアの実行を行なうユーザはユーザ固有情報として認証鍵を保有する。認証鍵は暗号化のための鍵であり、ソフトウェアの利用を許可する者、例えばソフトウェアベンダがユーザに配布する。認証鍵は複製を防ぐためにハードウェア中のメモリ等に厳重に封入され、郵便等の物理的手段を用いてユーザに配送される。
【０００５】
２．ユーザは認証鍵を内蔵したハードウェアを指定された方法で所有のパソコン・ワークステーションに装着する。ハードウェアは、例えばプリンタポートに装着される。
【０００６】
３．ユーザがアプリケーションプログラムを起動し、プログラムの実行が上記アクセス資格認証ルーチンに及ぶと、プログラムはユーザの認証鍵を内蔵したハードウェアと通信する。通信の結果に基づいてプログラムは認証鍵を識別し、正しい認証鍵の存在が確認されると次のステップへ実行を移す。通信が失敗し認証鍵の存在が確認できない場合は、プログラムは自らを停止し以降の実行ができないようにする。
【０００７】
アクセス資格認証ルーチンによる認証鍵の識別は、例えば、次のようなプロトコルに従って行なわれる。
【０００８】
１．アクセス資格認証ルーチンは適当な数を生成し鍵内蔵ハードウェアに送信する。
【０００９】
２．鍵内蔵ハードウェアは内蔵する認証鍵を用いて送られた数を暗号化し、上記アクセス資格認証ルーチンに返信する。
【００１０】
３．認証ルーチンは、返信された数が予め予想された数、即ちハードウェアに送信した数を正しい認証鍵で暗号化して得られる数であるか否かを判定する。
【００１１】
４．返信された数が予想された数と一致する場合にはプログラムの実行を続行し、一致しない場合には停止する。
【００１２】
この際、アプリケーションプログラムと認証鍵内蔵ハードウェア間の通信は、たとえ同じアプリケーションプログラム中の同じ箇所において同じハードウェアとの間で交換されるものであろうとも、実行のたびに異ならなければならない。さもなければ、正常な実行過程における通信内容を一度記録し、以後プログラムを実行する度に記録した通りにアプリケーションプログラムへの返信を行なうことにより、正しい認証鍵を保有しないユーザでもプログラムを実行することが可能となってしまう。このような通信内容の再現によるアプリケーションプログラムの不正実行をリプレイアタック（ｒｅｐｌａｙ  ａｔｔａｃｋ）と呼ぶ。
【００１３】
リプレイアタックを防ぐために、通常、鍵内蔵ハードウェアに送られる数は通信の度に新たに生成される乱数を用いる。
【００１４】
［従来技術の問題点］
従来技術の問題点は、アプリケーションプログラムを作成する際に、プログラム作成者がユーザが持つ認証鍵を予め想定した上で、該認証鍵に基づいてプログラムの保護処理を行なわなければならないという性質に由来する。
【００１５】
つまり、プログラム作成者は、鍵内蔵ハードウェアからの正しい返信をプログラム作成時に予測して、正しい返信を受けた場合にのみプログラムが正常に実行されるようにプログラムの作成を行なわなければならない。
【００１６】
上記特徴を有する従来技術の利用形態は基本的に二通りとなるが、いずれの場合も以下に述べる問題を有する。
【００１７】
１．第一の方法ではユーザの認証鍵をユーザ毎に異なるように用意する。即ち、ユーザ甲には認証鍵甲、ユーザ乙には認証鍵乙というように、ユーザ毎に異なる認証鍵を一つずつ用意する。
【００１８】
この場合、プログラム作成者は、プログラム中の認証ルーチンをユーザ毎に適切に変えてプログラムを作成する必要がある。つまり、ユーザ毎に認証鍵が異なるので、プログラム中の認証ルーチンは該プログラムを利用するユーザ固有の認証鍵を識別するように作成されなければならず、プログラム作成者は利用ユーザの数だけ異なるプログラムを作成する必要がある。
【００１９】
対象となるユーザが多数の場合、プログラムをユーザ毎に個別化する作業はプログラム作成者にとって耐えがたい労力を要求し、管理しなければならないユーザ認証鍵のリストも膨大なものとなる。
【００２０】
２．第二の方法では、プログラム作成者はアプリケーション毎にそれぞれ異なる認証鍵を用意する。即ち、アプリケーション甲には認証鍵甲、アプリケーション乙には認証鍵乙というように、アプリケーション毎に異なる認証鍵を一つずつ用意し、固有の認証鍵を識別するように各アプリケーションプログラムを作成する。
【００２１】
この方法では、第一の方法の場合のようにユーザ毎にプログラムを個別的に作成する必要は無くなるが、逆に、ユーザは利用するアプリケーションの数だけ認証鍵を保持しなければならないこととなる。
【００２２】
この制約はプログラム作成者およびユーザそれぞれに以下のような問題を惹起する。
【００２３】
前述のように、認証鍵はハードウェアに厳重に封入した状態でユーザに配布する必要がある。従って、プログラム自身はネットワークを介して簡便に配布することができるのに対し、認証鍵を内蔵するハードウェアの配布は郵便等の物理手段に頼らざるを得ない。プログラム作成者はユーザからアプリケーションの使用許諾以来を受ける度に、このアプリケーションに対応する認証鍵が封入されたハードウェアを郵送する必要があり、コスト、時間、梱包の手間いずれをとっても、プログラム作成者とって大きな負担となる。
【００２４】
プログラム作成者は、ユーザの要求に応えるべく、アプリケーション毎に異なるハードウェアを一定個数ストックしておかなければならず、在庫管理のコストを必要とする。
【００２５】
また、ユーザは利用するアプリケーションを変更する度にハードウェアを交換しなければならないという煩雑さに甘んじなければならない。
【００２６】
ユーザがあるアプリケーションを使いたいとしても、認証鍵が封入されたハードウェアが郵送されるまで待たねばならず即座に利用できないという不便もある。
【００２７】
この負担を軽減するため、ハードウェア中に複数の認証鍵を予め封入しておき、新しいアプリケーションの利用をユーザに許可する度に、ハードウェア中の未使用の認証鍵を利用可能とするためのパスワードをユーザに教えるといった方法が用いられる。しかしながら、この方法を用いたとしても、上記の問題点は原理的に解決されないことは明らかである。実際、商品化に際しては、ハードウェアは連接して複数結合することが可能となるように設計され、上記問題点に起因する不便さを緩和するようにしてある。
【００２８】
このように、上記二つのいずれの方法をとったとしても、プログラム作成者およびユーザの利便に問題が存在する。
【００２９】
なお、実行制御の外的な特質を考えると、メールのプライバシー保護やファイルや計算機資源のアクセス制御にも適用可能であると想像できる。しかしながら、従来技術をこれらの分野に適用しようとしても、上記の問題点により不可能である。
【００３０】
【発明が解決しようとする課題】
この発明は、以上の事情を考慮してなされたものであり、多数の認証鍵等の固有情報を取り扱うことから派生する不具合から、ユーザ側およびアプリケーション作成者等のプロテクト側の双方を解消し、もってプログラムの実行制御、メールのプライバシ保護、ファイルや計算機資源のアクセス制御等を行う際にユーザのアクセス資格を簡易に認証することができるようにしたアクセス資格認証技術を提供することを目的としている。
【００３１】
【課題を解決する手段】
この発明によれば上述の目的を達成するために、特許請求の範囲に記載のとおりの構成を採用している。以下、この記載を補充して説明する。
【００３２】
この発明によれば上述の目的を達成するために、ユーザのアクセス資格を認証するアクセス資格認証方法において、ユーザの固有情報を記憶するステップと、上記ユーザの固有情報と、アクセス資格認証の特徴情報とに対して、所定に計算を実行した実行結果である証明用補助情報を記憶するステップと、上記ユーザの固有情報と、上記証明用補助情報とに所定の計算を施してアクセス資格認証の特徴情報を生成するステップと、上記アクセス資格認証の特徴情報を生成できたことを検証するステップとを実行するようにしている。
【００３３】
この構成においては、証明用補助データ（アクセスチケット）を導入することにより、プロテクト側で付与されるアクセス資格認証用の特徴情報とユーザ側に付与されるユーザ固有情報とを独立させることができる。ユーザはあらかじめユーザ固有情報を所持し、プログラム作成者等のプロテクト者はユーザが所持するユーザ固有情報とは独立にアクセス資格認証の特徴情報を用意し、アクセスチケットをユーザの固有情報とアプリケーションプログラムの作成等に使用したアクセス資格認証の特徴情報とに応じて作成し、配布することにより、実行制御等のユーザのアクセス資格の認証を行なうことができる。このようにして、ユーザもプロテクト側も同一の情報を用いて認証を行う場合に生じる煩雑さを回避できる。
【００３４】
また、この発明によれば、ユーザのアクセス資格を証明するために使われる証明用補助情報を作成する方法において、ユーザの固有情報を記憶するステップと、アクセス資格認証の特徴情報を記憶するステップと、上記ユーザの固有情報と、上記アクセス資格の特徴情報に所定の演算を実行して上記証明用補助情報を作成するステップとを実行するようにしている。
【００３５】
また、ユーザのアクセス資格を証明するために使われる証明用補助情報を記憶する記憶装置において、上記証明用補助情報が、ユーザの固有情報と、アクセス資格認証の特徴情報とに所定の演算を実行して生成されるようにしている。
【００３６】
また、アクセス資格を証明するために使われる証明用補助情報に対するユーザからの発行依頼を受け取り、証明用補助情報を作成し、ユーザに発行する装置において、発行を依頼したユーザの固有情報を記憶する第１の記憶手段と、アクセス資格の特徴情報を記憶する第２の記憶手段と、上記ユーザの固有情報と、上記アクセス資格の特徴情報に所定の演算を実行して上記証明用補助情報を作成する演算手段とを有するように構成している。
【００３７】
また、ユーザのアクセス資格を証明するためのアクセス資格認証の特徴情報を復元するための特徴情報復元方法において、ユーザの固有情報を記憶するステップと、上記ユーザの固有情報と、アクセス資格認証の特徴情報とに対して、所定の計算を実行した実行結果である証明用補助情報を記憶するステップと、上記ユーザの固有情報と、上記証明用補助情報とに所定の計算を施して、アクセス資格認証の特徴情報を復元するステップとを実行するようにしている。
【００３８】
以上の証明用補助情報を作成し、記憶し、発行する技術により、また上述証明用補助情報から特徴情報を復元する技術により、上述のアクセス資格の認証を確実に行うことができる。
【００３９】
なお、この発明は、装置、方法のいずれの形態でも実現可能である。また、少なくともその一部をコンピュータソフトウェアとして実現することもできる。
【００４０】
【発明の実施の態様】
まず、この発明の原理的な構成例について説明する。この構成例のユーザ認証システムは、アプリケーションの実行制御のみでなくメールのプライバシー保護やファイルや計算機資源等のアクセス制御にも適用できる。
【００４１】
図１において、ユーザ認証システムは証明データ検証装置１０および証明データ生成装置１１からなっており、証明データ生成装置１１はアクセスチケット生成装置１２からアクセスチケット（証明用補助データ）１３を受領するようになっている。証明データ検証装置１０は検証ルーチン１５を実行する。証明データ生成装置１１はユーザ固有情報１６およびアクセスチケット１３を保持し、証明データ生成プログラム１７を実行する。
【００４２】
アクセスチケット生成装置１２はアプリケーション作成者等のプロテクト側或は信頼できる第三者に設けられている。アクセスチケット生成装置１２はアクセス資格認証の特徴情報１４およびユーザ固有情報１６に基づいてアクセスチケット１３を生成し、このアクセスチケット１３が通信またはフロッピーディスケット等の送付を介してユーザに送られ、ユーザの証明データ生成装置１１に保持される。この後、証明データ検証装置１０は認証用データ１８を証明データ生成装置１１に送出する。証明データ生成装置１１はアクセスチケット１３およびユーザ固有情報１６を用いて証明データ１９を生成し、これを証明データ検証装置１０に返信する。証明データ検証装置１０は認証用データに基づいて証明データの正当性を検証する。すなわち、証明データが、認証用データとアクセス資格認証の特徴情報とに基づいて生成されたデータであることを検証する。
【００４３】
証明データの正当性が検証されれば、ユーザのアクセス資格が認証され、これに応じて、プログラムの実行継続、ファイルへのアクセス等が許される。
【００４４】
以上の構成について、アプリケーションプログラムの実行制御を例にとってさらに説明する。
【００４５】
このような構成において、まず、アプリケーションプログラムのユーザはユーザ固有情報１６をただ一つ保持する。ユーザ固有情報は、パスワード認証におけるパスワードに相当するものであり、ユーザの身許を証明する唯一の重要な情報である。ユーザがユーザ固有情報１６をコピーして配布することができると、正当な利用権をもたないユーザにもアプリケーションプログラムの使用等を許すこととなるので、ユーザ固有情報１６はその正当な保持者であるユーザもこれを窃取することができないように、防御手段によって保護される。この防御手段は、プローブによる内部状態の窃取への防御力を有するハードウェア（以下、耐タンパーハードウェアと呼ぶ）により構成することができる。耐タンパーハードウェアの実現手法については後述する。
【００４６】
また、ユーザには、上記ユーザ固有情報１６に加えて、所定の計算手続きを実行する証明データ生成プログラム１７が与えられる。このプログラム１７は、アプリケーション中のユーザ認証ルーチン（証明データ検証ルーチン１５）と通信を行なうためのものであり、ユーザ固有情報１６およびアクセスチケット１３のふたつのパラメータが与えられると、任意の入力値に対して計算を行ないユーザの身元を証明する証明データ１９を生成する。この計算の過程でユーザ固有情報１６が用いられるが、前に述べた理由によりユーザ固有情報１６が外部に漏洩すると問題があるため、上記プログラムの少なくとも一部は上記防御手段によって保護される必要がある。
【００４７】
以下、上記防御手段によって保護されているユーザ固有情報記憶手段およびプログラムの一部と、該プログラム部分を実行するための装置（例えばメモリとＭＰＵにより構成される）と、上記防御手段とを併せてトークン（図１の符号２０で示す）と呼ぶこととする。トークンはＩＣカードのような可搬性を有する構成とすることもできる。
【００４８】
一方、従来の実行制御技術と同様に、アプリケーションプログラム中には証明データ検証ルーチン１５が組み込まれる。証明データ検証ルーチン１５は、ユーザが保持する上記証明データ生成プログラム１７と通信し、返信結果（証明データ１９）が正しい場合に限りプログラムの実行を続行するように作成される点において、従来技術と同様である。従って、プログラム作成者は、送信データ（認証用データ１８）とそれに対する正しい返信データ（証明データ１９）の組合せを計算する方法を知っている必要がある。
【００４９】
証明データ検証ルーチン１５の作用を以下に数例述べる。
【００５０】
１．証明データ検証ルーチン１５中には、送信するべきデータ（認証用データ１８）と期待される返信データ（期待値）が埋入されている。証明データ検証ルーチン１５は上記送信データを取り出してユーザに送信し、ユーザから返信を受け取る。次いで、ユーザからの返信データと上記期待値とを比較し、両者が一致した場合はプログラムの次のステップを実行し、一致しない場合はプログラムの実行を停止する。
【００５１】
ここで、返信データが送信データの所定の暗号化アルゴリズムに従う暗号化の結果であるとした場合には、アクセス資格認証の特徴情報は暗号化鍵となる。
【００５２】
２．証明データ検証ルーチン１５中には、送信するべきデータと、期待される返信データに一方向関数を施したデータ（期待値）が埋入されている。証明データ検証ルーチン１５は上記送信データを取り出してユーザに送信し、ユーザから返信を受け取る。次いで、ユーザからの返信データに上記一方向関数を施した値を、上記期待値と比較し、両者が一致した場合はプログラムの次のステップを実行し、一致しない場合はプログラムの実行を停止する。
【００５３】
ここで、返信データが送信データの所定の暗号化アルゴリズムに従う暗号化の結果であるとした場合には、アクセス資格認証の特徴情報は暗号化鍵となる。
【００５４】
３．アプリケーションプログラムのコードの一部を予め定められた暗号化アルゴリズムに従って暗号化しておくことにより、該プログラムの実行が不可能となるようにするプロテクトを施す。証明データ検証ルーチン１５は、上記暗号化されたコードをユーザに送信し、その返信として受け取った値を暗号化以前のコードと置き換える手続きを行なう。
【００５５】
以上の構成によると、返信データが暗号化されたコードの正しい復号である場合に限り、該プログラムの実行が可能となる。この場合のアクセス資格認証の特徴情報は暗号化されたコードを復号するための復号鍵となる。
【００５６】
４．アプリケーションプログラムのコードの一部を予め定められた暗号化アルゴリズムに従って暗号化しておくことにより、該プログラムの実行が不可能となるようにするプロテクトを施す。更に、上記コードの暗号化に用いた暗号化鍵と対をなす復号鍵を別途暗号化したデータを送信データとして証明データ検証ルーチン１５中に埋入しておく。証明データ検証ルーチン１５は、上記暗号化された復号鍵をユーザに送信し、その返信として受け取った値を復号鍵として、上記暗号化されたコードを復号する。
【００５７】
以上の構成によると、返信データが正しく復号された復号鍵である場合にかぎって、上記暗号化されたコードは正しく復号され、該プログラムの実行が可能となる。この場合のアクセス資格認証の特徴情報は暗号化された復号鍵を復号するための復号鍵となる。
【００５８】
さて、従来の実行制御技術では、ユーザ固有情報（ユーザの認証鍵）がアクセス資格認証の特徴情報と同一である。従来の証明データ生成ルーチンはアクセス資格認証の特徴情報と証明データ検証ルーチンから送信されたデータとを入力として、返信データを計算する。
【００５９】
これに対し、この発明の特徴は、ユーザ固有情報１６とアクセス資格認証の特徴情報１４とが互いに独立である点にある。この構成例でも、証明データ生成プログラム１７は、ユーザ固有情報１６と証明データ検証ルーチン１５から送信されたデータ（認証用データ１８）に加えて、アクセスチケット１３を入力として、返信データ（証明データ１９）を計算する。この構成は以下の性質をもつ。
【００６０】
１．アクセスチケット１３は特定のユーザ固有情報１６とアクセス資格認証の特徴情報１４とに基づいて計算されるデータである。
【００６１】
２．ユーザ固有情報１６を知らずにアクセスチケット１３からアクセス資格認証の特徴情報１４を計算することは少なくとも計算量的に不可能である。
【００６２】
３．証明データ生成プログラム１７はユーザ固有情報１６とアクセスチケット１３との正しい組合せ、即ち、ユーザ固有情報１６と該ユーザ固有情報１６に基づいて計算されたアクセスチケット１３の組合せが入力された場合に限って、正しい返信データを計算する。
【００６３】
以上により、ユーザはあらかじめユーザ固有情報１６を所持し、プログラム作成者はユーザが所持するユーザ固有情報１６とは独立にアプリケーションプログラムを作成し、アクセスチケット１３をユーザ固有情報１６とアプリケーションプログラムの作成に使用したアクセス資格認証の特徴情報１４とに応じて作成し、配布することにより、実行制御を行なうことができる。
【００６４】
また、ユーザ固有情報１６を二つの固有情報からなるものとし、アクセスチケット１３の作成に際して用いる固有情報と、ユーザが通信プログラムにおいて用いる固有情報とを区別して用いることもできる。最も典型的な例は、ユーザ固有情報１６を公開鍵ペアとし、公開鍵を公開してアクセスチケット作成に用い、個人鍵をユーザ個人の秘密情報としてトークン２０中に封入しておく方法である。この場合は、アクセスチケット１３をアクセス資格認証の特徴情報１４と上記公開鍵ペアの公開鍵から計算できるようにすることにより、ユーザ固有情報１６を秘密に保ったままアクセスチケット１３を計算することが可能となる。
【００６５】
【実施例】
つぎにより具体的な構成について実施例に即して説明する。
【００６６】
［全体構成］
具体的な個別の実施例を述べる前に、この発明の実施形態の全体像を以下に述べる。
【００６７】
まず、この発明を、ユーザのＰＣあるいはワークステーション上で動作するアプリケーションプログラムの実行制御に用いる場合について述べる。図２はこの実施形態における装置の全体構成を示す。なお、図２において図１と対応する箇所には対応する符号を付して詳細な説明は繰り返さない。
【００６８】
この実施形態においては、証明データ生成装置１１はユーザが用いる計算機３１上の証明用プログラム３２として実現することができる。この際、ユーザを識別するための固有情報（ユーザ固有情報）の安全性を高めるために、該計算機３１に装着され、耐タンパー特性を有する証明用ハードウェア３３（ＩＣカード、ボードなど）を併用することも可能である。この際、ＩＣカードのような携帯性のあるハードウェアを用いれば、ユーザが複数のＰＣあるいはワークステーション上で作業をする場合に便利である。
【００６９】
証明データ検証装置１０は該ユーザが利用するアプリケーションプログラム３４の一部として構成される。即ち、ユーザが該アプリケーションプログラム３４をＰＣあるいはワークステーション上で起動すると、該アプリケーションプログラム３４中にプログラムとして記述された証明データ検証装置１０が起動され、証明データ生成装置１１と通信してユーザ認証を行ない、通信が正しく終了した場合に限って該アプリケーションプログラムの実行を可能とする。
【００７０】
ユーザが、証明データ検証装置１０が埋めこまれた前記アプリケーションプログラム３４を利用するためには、ユーザ本人宛に発行され、前記アプリケーションプログラムに対応する証明用補助情報（アクセスチケット）を取得する必要がある。ユーザは、前記ＰＣあるいはワークステーション上にインストールされた証明用プログラム３２に、取得したアクセスチケットを登録するとともに、例えば、ユーザ固有情報がＩＣカードに封入されている場合には、ＩＣカードを前記ＰＣあるいはワークステーションに装着する。
【００７１】
証明データ生成装置１１（ＰＣあるいはワークステーション上のプログラムとＩＣカードによって構成される）は、ユーザ固有情報とアクセスチケットに基づいて計算を行い、その計算に基づいて証明データ検証装置１０と通信を行う。
【００７２】
通信の結果、証明データ検証装置１０による認証が成功するのは、ユーザ固有情報と、アクセスチケットと、証明データ検証装置１０が埋めこまれた前記アプリケーションプログラム３４の三つが正しく対応している場合に限る。
【００７３】
ユーザ固有情報あるいはアクセスチケットの一方が欠けていた場合には、認証は成功しない。
【００７４】
アクセスチケットは特定のユーザ宛に発行される。即ち、アクセスチケットの生成に際して、特定のユーザのユーザ固有情報が使用される。アクセスチケット生成時に使用されるユーザ固有情報と、証明データ生成装置１１によって使用される前記ユーザ固有情報とが一致していない場合、やはり、認証は成功しない。
【００７５】
また、アクセスチケットは、特定のアクセス資格認証の特徴情報に基づいて生成され、証明データ検証装置１０はこのアクセス資格認証の特徴情報を認証するように構成される。従って、アクセスチケットの生成のもととなった特徴情報と、アプリケーションプログラム３４に埋めこまれている証明データ検証装置１０が認証しようとする特徴情報とが互いに対応していなかった場合にも、認証は成功しない。
【００７６】
なお、図２において、３５はオペレーティング・システム等の制御プログラムであり、３６はハードウェア全般を示す。
【００７７】
また、アプリケーションプログラム３４がネットワークによって結合された別の計算機上で実行され、実行結果がネットワークを介してユーザが用いる計算機に通信されるものとしてもよい。この場合、いわゆるサーバ・クライアントモデルに基づく構成となる。先に述べた、ユーザのＰＣあるいはワークステーション上で実行されるアプリケーションプログラムの実行制御の場合では、証明データ生成装置１１と証明データ検証装置１０との通信がいわゆるプロセス間通信として実行されるのに対し、サーバ・クライアント・モデルに従った場合、証明データ生成装置１１と証明データ検証装置１０との通信はＴＣＰ／ＩＰなどのネットワークプロトコルに従った通信として実行される。
【００７８】
また、アプリケーションプログラムが専用装置上に構成されている場合にも、この発明を適用することが可能である。例えば、証明データ生成装置全体をＩＣカード内に実装し、取得したアクセスチケットもＩＣカードに登録するものとする。証明データ検証装置は前記専用装置上に実装されるが、該専用装置はＩＣカードを挿入するためのスロットを備え、ユーザは該スロットに所有するＩＣカードを挿入することで認証を行う。
【００７９】
このような専用装置による構成は、銀行のＡＴＭ機や、ゲームセンターにおけるゲーム機などに適用することができる。
【００８０】
ユーザによるアクセスチケットの取得に関しては、共通のセンターがユーザからの発行依頼に応じて生成して配布する方法と、アプリケーションプログラムの作成者が、アクセスチケット発行プログラムやアクセスチケット生成装置の助けを借りて個別に生成する方法がある。
【００８１】
生成されたアクセスチケットは、フロッピーディスク等の可搬型記憶媒体を介してユーザに配送されるものとしてもよいが、アクセスチケットが十分な安全性を備えていることから、電子メールなどを用いてネットワークを介して配送されるように構成してもよい。
【００８２】
アクセスチケットの安全性とは、以下の二つの性質である。
【００８３】
アクセスチケットは記名式であり、即ち、アクセスチケットが発行されたユーザ本人（正確には、アクセスチケット生成時に用いられたユーザ固有情報の保持者）だけが該アクセスチケットを用いて証明データ生成装置を正しく作動させることができる。従って、悪意の第三者がネットワークを盗聴し、他のユーザのアクセスチケットを不正に手に入れたとしても、この第三者がアクセスチケットの発行先である正規のユーザのユーザ固有情報を手に入れないかぎり、このアクセスチケットを利用することは不可能である。
【００８４】
アクセスチケットはさらに厳密な安全性を保持している。即ち、悪意の第三者が任意個数のアクセスチケットを集めて、いかなる解析を行ったとしても、得られた情報をもとに別のアクセスチケットを偽造したり、証明データ生成装置の動作を模倣して認証を成立させるような装置を構成することは不可能である。
【００８５】
以下では、より具体的な構成について実施例に即して説明する。
【００８６】
［第一の実施例］
この発明における第一の実施例では、アクセスチケットｔは次の式１に基づいて生成されるデータである。
【００８７】
【数１】
（１）          ｔ  ＝  Ｄ−ｅ＋ωφ（ｎ）
上式中の各記号は以下を表す。
ｎはＲＳＡ法数、即ち、十分大きな二つの素数ｐ、ｑの積である（ｎ＝ｐｑ）。φ（ｎ）はｎのオイラー数、即ち、ｐ−１とｑ−１の積である（φ（ｎ）＝（ｐ−１）（ｑ−１））。
ユーザ固有情報ｅは、ユーザ毎に異なる数であり、ユーザを識別するために用いられる。
アクセスチケット秘密鍵Ｄは、法数ｎのもとでのＲＳＡ秘密鍵であり、式２を満たす。
【００８８】
【数２】
（２）          ｇｃｄ（Ｄ，φ（ｎ））＝１
ここで、ｇｃｄ（ｘ，ｙ）は二数ｘ、ｙの最大公約数を表す。式（２）によって表現される性質は、式３を満たす数Ｅが存在することを保証する。
【００８９】
【数３】
（３）          ＥＤ  ｍｏｄ  φ（ｎ）  ＝  １
Ｅをアクセスチケット公開鍵と呼ぶ。
ωは、ｎ及びｅに依存して定まる数であり、ｎあるいはｅのいずれか一方が異なる場合、その値が容易に一致しない（衝突しない）ように定める。ωの定め方の一例として、一方向ハッシュ関数ｈを利用して、式４のようにωを定める方法もある。
【００９０】
【数４】
（４）          ω＝ｈ（ｎ｜ｅ）
ただし、記号｜はビット列の接合を表す。
一方向ハッシュ関数とは、ｈ（ｘ）＝ｈ（ｙ）を満たす相異なるｘ、ｙを算出することが著しく困難であるという性質をもつ関数である。一方向ハッシュ関数の例として、ＲＳＡ  Ｄａｔａ  Ｓｅｃｕｒｉｔｙ  Ｉｎｃ．によるＭＤ２、ＭＤ４、ＭＤ５、米国連邦政府による規格ＳＨＳ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ｓｔａｎｄａｒｄ）が知られている。
上記の説明中に現れた数において、ｔ、Ｅ、ｎは公開可能であり、残りのＤ、ｅ、ω、ｐ、ｑ、φ（ｎ）はチケットを作成する権利を有する者以外には秘密である必要がある。
【００９１】
図を参照してさらに第一の実施例について詳細に説明する。図３は、この発明における第一の実施例の構成を示し、図４は図３におけるデータのフローを示している。図３において、証明データ検証装置１０は、アクセスチケット公開鍵記憶部１０１、乱数発生部１０２、乱数記憶部１０３、受信データ記憶部１０５、検証部１０６、実行部１０７およびエラー処理部１０８を含んで構成されている。また、証明データ生成装置１１は、受信データ記憶部１１１、第１演算部１１２、アクセスチケット記憶部１１３、第２演算部１１４、ユーザ固有情報記憶部１１５および証明データ生成部１１６を含んで構成されている。
【００９２】
つぎに動作について説明する。
【００９３】
１．ユーザがアクセスすることによって、証明データ検証装置１０１が起動される。証明データ検証装置１０の起動に関しては以下のような形態が考えられる。
【００９４】
証明データ検証装置１０がユーザのＰＣあるいはワークステーション上で動作するアプリケーションプログラムの一部として構成されている場合、ユーザがキーボードあるいはマウスなどの指示装置を用いた通常の方法で、該アプリケーションプログラムを起動する。アプリケーションプログラムの実行が証明データ検証装置１０を構成しているプログラムに到達することによりことにより、証明データ検証装置１０が起動される。
【００９５】
証明データ検証装置１０がネットワークで結ばれた他のＰＣあるいはワークステーション（サーバと呼ぶ）上に構成されてい場合、ユーザは自分のＰＣあるいはワークステーション上の通信プログラムを起動し、該通信プログラムが所定の手続きに従って前記サーバに通信の開設要求を行うことにより、証明データ検証装置１０が起動される。例えば、ユーザの通信プログラムがサーバと通信する際にＴＣＰ／ＩＰと呼ばれる手続きに従うとすると、証明データ検証装置をサーバの特定のポートに予め対応づけておき、更に、ユーザの通信プログラムが該ポートを指定してＴＣＰ接続要求をサーバに要求するように設定しておくことにより、サーバ上のデーモン（ｉｎｅｔｄ）がＴＣＰ接続要求に応じて証明データ検証装置１０を起動することが可能となる。このような実現方法は、インターネットなどのネットワークにおいて広く利用されているものである。
【００９６】
証明データ検証装置１０を専用目的の装置とすることも可能である。例えば、証明データ検証装置１０をＩＣカード・リーダ・ライター内のＲＯＭに焼きつけられたプログラムあるいはＥＥＰＲＯＭに書き込まれたプログラムとして構成し、証明データ生成装置１１をＩＣカードのマイクロコントローラーに実装されたプログラムとすることができる。この場合、ユーザがＩＣカードをリーダ・ライターに挿入することにより、証明データ検証装置１０が起動される。
【００９７】
２．証明データ検証装置１０は、認証用データＣとアクセスチケット公開鍵記憶部１０１に記憶されているＲＳＡ暗号の法数ｎとを、証明データ生成装置１１中の受信データ記憶部１１１に書き込むが、この認証用データＣは以下の方法で生成される。
【００９８】
証明データ検証装置中の乱数発生部１０２によって，乱数ｒを、アクセスチケット公開鍵記憶部１０１に保持されているＲＳＡ法数ｎと互いに素になるように生成し、乱数記憶部１０３に記録する。更に、この乱数ｒを認証用データＣとする。後述するように、この場合、証明データ生成装置１１が返す証明データは、Ｃを法数ｎののもとでＲＳＡ暗号を用いて暗号化したものとなる。
【００９９】
Ｃの値は乱数ｒそのものであることから、通信の度に異なる値となり、リプレイアタックを防止する効果をもつ。
【０１００】
３．証明データ生成装置１１中の第１演算部１１２は、アクセスチケット記憶部１１３に記憶されているアクセスチケットｔを取得し、受信データ記憶部１１１に書き込まれたＲＳＡ法数ｎのもとで、式５を実行し中間情報Ｒ’を得る。
【０１０１】
【数５】
（５）    Ｒ’＝Ｃｔ  ｍｏｄ  ｎ
４．証明データ生成装置１１中の第２演算部１１４は、ユーザ固有情報記憶部１１５に記憶されているユーザの固有情報ｅを取得し、式６の計算を実行し差分情報Ｓを得る。
【０１０２】
【数６】
（６）    Ｓ＝Ｃｅ  ｍｏｄ  ｎ
５．証明データ生成装置１１中の証明データ生成部１１６は、第１および第２演算部１１２、１１４からＲ’およびＳを得て、式７の計算を行ないＲを得る。
【０１０３】
【数７】
（７）    Ｒ＝Ｒ’Ｓ  ｍｏｄ  ｎ
６．証明データ生成装置１１はＲを証明データ検証装置１０の受信データ記憶部１０５に返送する。
【０１０４】
７．証明データ検証装置１０中の検証部１０６は、まず、受信データ記憶部１０５に返された証明データＲと、アクセスチケット公開鍵記憶部１０１に保持されている公開指数ＥおよびＲＳＡ法数ｎをもとに式８の計算を行なう。
【０１０５】
【数８】
（８）    ＲＥ  ｍｏｄ  ｎ
次いで、この計算結果と、乱数記憶部１０３中に保持されている乱数Ｃ（＝ｒ）とを比較することにより、式９が成り立つことを確かめる。
【０１０６】
【数９】
（９）  Ｃ  ｍｏｄ  ｎ  ＝  ＲＥ  ｍｏｄ  ｎ
式（９）が成立する場合は実行部１０７を起動して処理を継続し、成立しない場合はエラー処理部１０８を起動してエラー処理を行う。
【０１０７】
［第二の実施例］
この発明の第二の実施例における、アクセスチケットｔの構成、証明データ証明装置の作用は、前記第一の実施例におけるそれと同一である。第一の実施例においては証明データは認証用データの暗号化であったのに対し、第二の実施例においては証明データ検証装置１０が生成する認証用データは証明データの（乱数効果付）暗号化であり、証明データ生成装置１１は認証用データを復号して（乱数効果を維持したまま）証明データを生成する。
【０１０８】
図を参照してさらに第二の実施例について詳細に説明する。図５は、この発明における第二の実施例の構成を示し、図６は図５におけるデータのフローを示している。図５において、証明データ検証装置１０は、アクセスチケット公開鍵記憶部１０１、乱数発生部１０２、乱数記憶部１０３、受信データ記憶部１０５、乱数化部１２１、認証用素データ記憶部１２２、乱数効果除去部１２３、および実行手段３１０を含んで構成されている。また、証明データ生成装置１１は、受信データ記憶部１１１、第１演算部１１２、アクセスチケット記憶部１１３、第２演算部１１４、ユーザ固有情報記憶部１１５および証明データ生成部１１６を含んで構成されている。
【０１０９】
つぎに動作について説明する。
【０１１０】
１．ユーザがアクセスすることによって、証明データ検証装置１０が起動される。
【０１１１】
証明データ検証装置の実現方法として、ユーザのＰＣやワークステーション上で動作するアプリケーションプログラム、ユーザのＰＣやワークステーションとネットワークを介して接続されたサーバ上のサーバプログラム、あるいは、ＩＣカード・リーダ・ライターのような専用の装置のいずれも可能であることは、第一の実施例の場合と変わらない。
【０１１２】
２．証明データ検証装置１０は、認証用データＣと、アクセスチケット公開鍵記憶部１０１に保持されているＲＳＡ暗号の法数ｎとの組を証明データ生成装置１１中の受信データ記憶部１１１に書き込むが、認証用データＣは以下の方法で生成される。
【０１１３】
証明データ検証装置中の乱数発生部１０２によって、乱数ｒをアクセスチケット公開鍵記憶部１０１に保持されているＲＳＡ法数ｎと互いに素になるように生成し、乱数記憶部１０３に記録する。乱数化部１２１は、アクセスチケット公開鍵記憶部１０１に格納されている公開指数Ｅと法数ｎを取得し、さらに認証用素データ記憶部１２２に記憶されているデータＣ’を取得して、式１０の計算を行なう。
【０１１４】
【数１０】
（１０）      Ｃ＝ｒＥＣ’  ｍｏｄ  ｎ
ここで、認証用素データＣ’はデータＫに対して関係式１１を満たすように生成され、認証用素データ記憶部１２２に格納された値である。
【０１１５】
【数１１】
（１１）      Ｃ’＝ＫＥ  ｍｏｄ  ｎ
ここで、データＫを証明データ検証装置に保持せず、代わりに、その暗号化の結果であるＣ’のみを保持するように証明データ検証装置１０を構成すれば、証明データ検証装置１０からデータＫが漏洩する危険を回避することができる。
【０１１６】
基本的に見れば、認証用データＣは法数ｎのもとでＲＳＡ暗号を用いてデータＫを暗号化したものであり、証明データ生成装置１１はＣを法数ｎのもとでＲＳＡ暗号を用いて復号することによりデータＫを再現する。しかし、このままでは、証明データ検証装置１０と証明データ生成装置１１の間の通信は常に同一のものとなり、いわゆるリプレイアタックが可能となることから、乱数ｒを用いて認証用データに乱数効果を与え、証明データ生成装置１１が返すデータを検証する際に乱数効果を除去するように構成される。
【０１１７】
３．証明データ生成装置１１中の第１演算部１１２は、アクセスチケット記憶部１１３に記憶されているアクセスチケットｔを取得し、受信データ記憶部１１１に書き込まれたＲＳＡ法数ｎのもとで式１２を実行し中間情報Ｒ’を得る。
【０１１８】
【数１２】
（１２）    Ｒ’＝Ｃｔ  ｍｏｄ  ｎ
４．証明データ生成装置１１中の第２演算部１１４は、ユーザ固有情報記憶部１１５に記憶されているユーザの固有情報ｅを取得し、式１３の計算を実行し差分情報Ｓを得る。
【０１１９】
【数１３】
（１３）    Ｓ＝Ｃｅ  ｍｏｄ  ｎ
５．証明データ生成装置１１中の証明データ生成部１１６は、第１および第２演算部１１２、１１４からＲ’およびＳを得て、式１４の計算を行ないＲを得る。
【０１２０】
【数１４】
（１４）    Ｒ＝Ｒ’Ｓ  ｍｏｄ  ｎ
６．証明データ生成装置１１はＲを証明データ検証装置１０の受信データ記憶部１０５に返送する。
【０１２１】
７．証明データ検証装置１０中の乱数効果除去部１２３は、乱数記憶部１０３中から先に生成した乱数ｒと、受信データ記憶部１０６から証明データＲとを取り出し、式１５の計算を行なう。
【０１２２】
【数１５】
（１５）    Ｋ’＝ｒ−１Ｒ  ｍｏｄ  ｎ
証明データ生成装置１１において用いられるアクセスチケットｔとユーザの固有情報ｅの組合せが正しい場合に限り、計算の結果得られたＫ’とＫが一致することに注意せよ。
【０１２３】
計算されたＫ’は、証明データ検証装置１０中の実行手段３１０に引き渡されるが、実行手段３１０はＫ’＝Ｋが成立する場合に限り正規の処理を実行するように構成される。
【０１２４】
以下に、証明データ検証装置１０中の実行手段３１０の構成法を数例述べる。
【０１２５】
１．図７の構成例
実行手段３１０中の記憶部３１０ａに予めデータＫを記憶しておく。実行部３１０中の比較部３１０ｂは、このＫと証明データ生成装置１１から送られた証明データＲから乱数効果を除去して得られるＫ’とを直接比較し、Ｋ’＝Ｋが成立する場合に限り正規の処理を実行し、成立しない場合には処理を中止するなどのエラー処理を実行する（図８）。
【０１２６】
この構成例には、検証に用いるデータＫが装置中に現れるという安全上の弱点がある。例えば、証明データ検証装置１０、特に、実行手段３１０が、ユーザのＰＣあるいはワークステーション上で動作するプログラムとして構成されている場合、プログラムを解析してＫを窃取することは、困難であっても、必ずしも不可能ではない。Ｋの値がユーザの知るところとなり、更に、証明データ検証装置で生成される乱数が予想可能であると、証明データ生成装置の動作を模倣する装置を構成することが可能となり、なりすましによる不正アクセスが可能となる。
【０１２７】
２．図９の構成例
上記の欠点を改善するため、記憶部３１０ａに記憶されるデータをＫそのものではなく、Ｋに前述の一方向ハッシュ関数ｈを施して得られるデータｈ（Ｋ）とすることもできる。一方向ハッシュ関数の性質から、記憶部３１０ａに記憶されるデータｙから、ｙ＝ｈ（ｘ）を満たすｘを算出することは著しく困難である。
【０１２８】
実行部３１０は、入力データに対し一方向ハッシュ関数を施した結果を返す変換部３１０ｃを有する。比較部３１０ｂは、上記変換部３１０ｃの出力ｈ（Ｋ’）と、記憶部３１０ａに記憶されたデータ（＝ｈ（Ｋ））とを比較する（図１０）。
【０１２９】
この方法例では、検証に用いるデータＫがプログラム中に現れることがなく、また、記憶部３１０ａに記憶されたｈ（Ｋ）からＫを計算することが著しく困難であることから、図７の例より安全であるといえる。
【０１３０】
この構成では、図１０に示すようにプログラムの実行を制御する。
【０１３１】
しかしながら、比較部３１０ｂはプログラム中では条件文として構成され、証明データ検証装置１０、特に、実行手段３１０がユーザのＰＣあるいはワークステーション上で動作するプログラムであるような場合、即ち、プログラムの分析・改竄が比較的容易であるような構成では、該条件文をスキップするようにプログラムを改竄することが可能である点で、なお弱点を有している。
【０１３２】
３．図１１の構成例
第３の構成例では、証明データ検証装置１０の実行部３１０のプログラムのコードの一部或は全部を暗号化したデータを認証用素データＣ’として、認証用素データ記憶部１２２に保持する。即ち、Ｋは実行部プログラムのコードの一部或は全部である。
【０１３３】
実行手段３１０は、証明データ生成装置１１からの返信データから乱数効果を除去して得られるデータＫ’を、プログラム中の予め定められた位置に埋め込む。すなわち実行手段３１０は、コードとしてのデータＫ’を記憶するコード記憶部３１０ｄとこのコードをプログラム中に取り込むコード取り込み部３１０ｅと、プログラムを実行するコード実行部３１０ｆとを有している。証明データ生成装置１１が正しいデータを返信した場合、即ち、Ｋ’＝Ｋである場合に限ってプログラムは実行可能となる（図１２）。
【０１３４】
この構成例では、プログラムの実行に不可欠なコードの一部或は全部が暗号化されているため、実行手段３１０がユーザのＰＣあるいはワークステーション上で動作するアプリケーションプログラムとして構成されているような比較的安全性の低い場合でも、不正実行を防止することができる。
【０１３５】
実行手段３１０がユーザのＰＣあるいはワークステーション上で動作するアプリケーションプログラムとして構成されている場合を例にとって、更に詳細な構成を述べる。
【０１３６】
証明データが書き込まれるコード記憶部３１０ｄは、計算機中の指定された記憶領域である。
【０１３７】
コード実行部３１０ｆは計算機のＣＰＵ及びＯＳである。ＣＰＵとＯＳとは協力して、計算機のプログラム領域に記憶されている実行命令を順に実行する。特定の機能を提供する一連の実行命令をプログラムコードと呼ぶ。
【０１３８】
コード取込み部３１０ｅの実体は、実行手段３１０中で最初に実行されるプログラムコードである。コード取込み部３１０ｅは、直接・間接にコード記憶部３１０ｄのアドレスをコード実行部３１０ｆに指示することが可能である。例えば、コード取込み部３１０ｅはコード記憶部３１０ｄの物理アドレスを直接コード実行部３１０ｆに指示してもよいし、計算機のＯＳが仮想アドレッシングを実行する場合には、コード取込み部３１０ｅはコード記憶部３１０ｄの仮想アドレスを指示し、ＯＳがＣＰＵ経由で受け取った仮想アドレスを物理アドレスに変換する方法でもよい。
【０１３９】
コード記憶部３１０ｄに証明データが書き込まれた状態で、プログラムであるコード取込み部３１０ｅが起動されると、コード取込み部３１０ｅは、コード記憶部３１０ｄのアドレスに記憶されている内容を計算機上のプログラム領域の特定のアドレスに書き出すよう、コード実行部３１０ｆに命令し、実行させる。
【０１４０】
次いで、コード取込み部３１０ｅは、コード実行部３１０ｆに命令してコード記憶部３１０ｄの記憶内容を書き出させた、プログラム領域中の特定のアドレスの実行命令を実行するよう、ＪＭＰ命令等を用いてコード実行部３１０ｆに命令する。
【０１４１】
この構成例では、証明データが証明データ生成装置１１によって正しく生成されたならば、乱数効果を取り除いた後のデータはプログラムコード、即ち、コード実行部３１０ｆへの一連の実行命令である。従って、上記構成では、コード取込み部３１０ｅのプログラムコードに引続き、証明データ生成手段１１によって復号されたプログラムコードが実行されることとなる。
【０１４２】
４．図１３の構成例
第３の構成例において、暗号化したコードを復号するために必要な復号鍵を、Ｋとすることもできる。この構成によると、暗号化するコードのサイズに関わらず、Ｋのサイズ、すなわち認証用素データＣ’のサイズを一定の小さい値に抑えることが可能となり、通信のオーバヘッドを減少させることができる。
【０１４３】
実行部３１０は、証明データ生成装置１１からの返信データから乱数効果を除去して得られるデータＫ’を用いて、プログラム中の予め定められた領域のコードを復号する。すなわち実行部３１０は暗号化されたプログラムを記憶するプログラム記憶部３１０ｇと、暗号化されたプログラムを読み出しデータＫ’を利用して復号する復号部３１０ｈと、復号されたコードを取り出すコード取り出し部３１０ｉと、取り出されたコードを実行するコード実行部３１０ｆとを有する。
【０１４４】
実行手段３１０がユーザのＰＣあるいはワークステーション上で動作するアプリケーションプログラムとして構成されている場合を例にとって、更に詳細な構成を述べる。
【０１４５】
暗号化されたプログラムコードが記憶されているプログラム記憶部３１０ｇは、計算機中の指定された記憶領域である。
【０１４６】
コード実行部３１０ｆは計算機のＣＰＵ及びＯＳである。
【０１４７】
プログラム記憶部３１０ｇは、ハードディスク等、補助記憶装置上のファイル領域であるとすることができる。即ち、暗号化されたプログラムコードは、ファイルとして記憶されている。
【０１４８】
復号部３１０ｈの実体は、実行手段３１０中で最初に実行されるプログラムコードである。復号部３１０ｈは、直接・間接に、プログラム記憶部３１０ｇのアドレスを、コード実行部３１０ｆに指示することが可能である。
【０１４９】
Ｋ’が与えられた状態で、プログラムである復号部３１０ｈが起動されると、復号部３１０ｈは、プログラム記憶部３１０ｇに記憶されているデータを順に、あるいは定められた長さのブロック毎に読み出し、そのデータにＫ’を復号鍵とした所定の復号処理を実行し、その復号結果を計算機上のプログラム領域の特定のアドレスに書き出すよう、コード実行部３１０ｆに命令し、実行させる。この処理により、プログラム記憶部３１０ｇに記憶されていた暗号化データに対し、Ｋ’を復号鍵として、所定の復号アルゴリズムを実行した結果を、プログラム領域中の特定の位置に書き込んだこととなる。
【０１５０】
次いで、復号部３１０ｈは、コード実行部３１０ｆに命令して復号したプログラムコードを書き出させた、プログラム領域中の特定のアドレスの実行命令を実行するよう、ＪＭＰ命令等を用いてコード実行部３１０ｆに命令する。
【０１５１】
この構成例では、証明データが証明データ生成装置１１によって正しく生成されたならば、乱数効果を取り除いたのちの値はプログラム記憶部３１０ｇに記憶されている暗号化されたプログラムコードを正しく復号するための復号鍵となる。復号部３１０ｈは、この復号鍵を用いて、前記暗号化プログラムコードを復号し、復号結果であるプログラムコードをプログラム領域にロードし、ロードされた前記プログラムコードを実行するようコード実行部３１０ｆに命令する。従って、上記構成では、復号部３１０ｈのプログラムコードに引続き、証明データ生成手段１１によって復号された復号鍵を用いて復号されたプログラムコードが実行されることとなる（図１４）。
【０１５２】
［第三の実施例］
この発明における第三の実施例では、アクセスチケットｔは次の式１６に基づいて生成されるデータである。
【０１５３】
【数１６】
（１６）                ｔ  ＝  Ｄ＋Ｆ（ｎ，ｅ）
上式中の各記号は以下を表す。
ｎはＲＳＡ法数、即ち、十分大きな二つの素数ｐ、ｑの積である（ｎ＝ｐｑ）。ユーザ固有情報ｅはユーザ毎に異なる数であり、ユーザを識別するために用いられる。
φ（ｎ）はｎのオイラー数、即ち、ｐ−１とｑ−１の積である（φ（ｎ）＝（ｐ−１）（ｑ−１））。
アクセスチケット秘密鍵Ｄは、法数ｎのもとでのＲＳＡ秘密鍵であり、式１７を満たす。
【０１５４】
【数１７】
（１７）                ｇｃｄ（Ｄ，φ（ｎ））＝１
ここで、ｇｃｄ（ｘ，ｙ）は二数ｘ、ｙの最大公約数を表す。式（１７）によって表現される性質は、式１８を満たす数Ｅが存在することを保証する。
【０１５５】
【数１８】
（１８）                ＥＤ  ｍｏｄ  φ（ｎ）  ＝  １
Ｅをアクセスチケット公開鍵と呼ぶ。
二変数関数Ｆ（ｘ，ｙ）は関数値が衝突しにくい二変数関数であり、例えば、前述の一方向ハッシュ関数ｈを利用して、式１９のように定めることができる。
【０１５６】
【数１９】
（１９）                Ｆ（ｘ，ｙ）＝ｈ（ｘ｜ｙ）
図を参照してさらに第二の実施例について詳細に説明する。図１５は、この発明における第三の実施例の構成を示し、図１６は図１５におけるデータのフローを示している。図１５において、証明データ生成装置１１は、受信データ記憶部１１１、第１演算部１１２、アクセスチケット記憶部１１３、第２演算部１１４、ユーザ固有情報記憶部１１５、証明データ生成部１１６および指数生成部１３０を含んで構成されている。証明データ検証装置１０は第一の実施例（図３）や第二の実施例（図５）の構成を採用することができる。ここでは説明を繰り返さない。
【０１５７】
つぎにこの構成における動作について説明する。
【０１５８】
１．ユーザがアクセスすることによって、証明データ検証装置１０が起動される。
【０１５９】
証明データ検証装置１０の実現方法として、ユーザのＰＣやワークステーション上で動作するアプリケーションプログラム、ユーザのＰＣやワークステーションとネットワークを介して接続されたサーバ上のサーバプログラム、あるいは、ＩＣカード・リーダ・ライターのような専用の装置のいずれも可能であることは、第一および第二の実施例の場合と変わらない。
【０１６０】
２．証明データ検証装置１０は、認証用データＣとアクセスチケット公開鍵記憶部１０１に記憶されているＲＳＡ暗号の法数ｎとの組を証明データ生成装置１１中の受信データ記憶部１１１に書き込む。
【０１６１】
Ｃの生成方法としては、第一の実施例で述べた方法、第二の実施例で述べた方法のいずれも適用可能であるので、ここでは特に限定しない。前記いずれかの方法で生成されたＣが証明データ生成装置１１中の受信データ記憶部１１１に書き込まれるものとする。
【０１６２】
３．証明データ生成装置１１中の第１演算部１１２は、アクセスチケット記憶部１１３に記憶されているアクセスチケットｔを取得し、受信データ記憶部１１１に書き込まれたＲＳＡ法数ｎのもとで式２０を実行し中間情報Ｒ’を得る。
【０１６３】
【数２０】
（２０）    Ｒ’＝Ｃｔ  ｍｏｄ  ｎ
４．証明データ生成装置１１中の指数生成部１３０は、ユーザ固有情報記憶部１１５に記憶されているユーザの固有情報ｅを取得し、式２１の計算を実行する。
【０１６４】
【数２１】
（２１）        Ｆ（ｎ，ｅ）
５．証明データ生成装置１１中の第２演算部１１４は、指数生成部１３０で生成されたデータを用いて、式２２の計算を実行し差分情報Ｓを得る。
【０１６５】
【数２２】
（２２）    Ｓ＝ＣＦ（ｎ，ｅ）  ｍｏｄ  ｎ
６．証明データ生成装置１１中の証明データ生成部１１６は、第１および第２演算部１１２、１１４からＲ’およびＳを得て、式２３の計算を行ないＲを得る。
【０１６６】
【数２３】
（２３）    Ｒ＝Ｒ’Ｓ−１  ｍｏｄ  ｎ
ただし、Ｓ−１は法ｎのもとでのＳの逆数、即ち、式２４を満たす数を表す。
【０１６７】
【数２４】
（２４）    Ｓ・Ｓ−１  ｍｏｄ  ｎ＝１
７．証明データ生成装置１１はＲを証明データ検証装置１０の受信データ記憶部１０５に返送する。
【０１６８】
８．証明データ検証装置１０では、証明データ生成装置１１から受け取った証明データの検証を行うが、その検証方法は、認証用データの一部であるＣの生成方法によって異なる。
【０１６９】
Ｃが第一の実施例の方法に基づいて生成されたものであれば、その検証は第一の実施例に述べられた方法に従って行われる。
【０１７０】
Ｃが第二の実施例の方法に基づいて生成されたものであれば、その検証は第二の実施例に述べられた方法に従って行われる。
【０１７１】
［第四の実施例］
第四の実施例では、第一乃至第三の実施例において、証明データ生成装置がユーザのＰＣあるいはワークステーション上のプログラムと、前記ＰＣあるいはワークステーションに装着されるＩＣカード、あるいはＰＣカード（ＰＣＭＣＩＡカード）などの携帯可能な演算手段によって構成される場合について述べる。
【０１７２】
第一乃至第三の実施例の証明データ生成装置１１において、ユーザ固有情報ｅは秘密情報であり、外部に漏洩しないよう注意を払わなければならない。また、ユーザ固有情報ｅを用いた計算を実行する第２演算部１１４の動作が観測されるとユーザ固有情報ｅが漏洩する危険がある。第三の実施例における関数Ｆ（ｘ，ｙ）の計算過程が観測された場合も同様である。即ち、ユーザ固有情報ｅの漏洩を防ぐためには、ユーザ固有情報記憶部１１５、第２演算部１１４及び指数生成部１３０の内部が外部から観測されることを防止しなければならない。
【０１７３】
この目的を達成するためには、証明データ生成装置１１の一部をハードウェアとして構成すると有効である。
【０１７４】
このようなハードウェアとして、ＩＣカード・ＰＣカードのような携帯性のある手段を用いることにすれば、更にユーザの利便性を高めることができる。証明データ生成装置の内、ユーザに固有な部分は、ユーザ固有情報記憶部とアクセスチケット記憶部のみである。従って、例えば、ユーザ固有情報記憶部１１５と、アクセスチケット記憶部１１３と、第２演算部１１４と、指数生成部１３０とをＩＣカード・ＰＣカード中に構成し、証明データ生成装置の残りの部分をユーザが使用するＰＣあるいはワークステーション上で動作するプログラムとして構成することにすれば、証明データ生成装置１１のうち各ユーザに固有な部分は、それぞれのユーザが携帯可能なＩＣカード・ＰＣカードとして実現され、ユーザに依存しない共通部分はプログラムとして任意のＰＣあるいはワークステーションに共通に構成されることとなる。このような構成によって、どのユーザでも、自分のＩＣカード・ＰＣカードを、前記プログラムがインストールされた任意のＰＣあるいはワークステーションに装着するだけで、該ＰＣあるいはワークステーションを自分用の証明データ生成装置として利用することが可能となる。
【０１７５】
さて、内部メモリーに格納されたデータやプログラムが外部から観測されたり、改竄されたりすることを防止するための特殊な構成を持つハードウェアを、耐タンパーハードウェア（タンパーレジスタントハードウェア）と呼ぶ。耐タンパーハードウェアの構成法としては、例えば、特許第１８６３９５３号、特許第１８６０４６３号、特開平３−１００７５３号公報等が知られている。
【０１７６】
特許第１８６３９５３号においては、情報記憶媒体の周囲に、各種の導体パターンを持つ複数のカードからなる包囲体を設ける。検出される導体パターンが予測されるパターンと異なる時に記憶情報を破壊する。
【０１７７】
特許第１８６０４６３号においては、情報記憶媒体の周囲に導体巻線を形成するとともに積分回路等からなる検知回路を設けることで、電子回路領域への侵入があった場合には電磁エネルギーの変動を検知し記憶情報を破壊する。
【０１７８】
特開平３−１００７５３号公報においては、ハードウェア内部に光検知器を設け、ハードウェアに力が加えられて破壊された場合や穿孔されたときに入る外光を光検知器が検知し、記憶破壊装置が記憶情報をリセットする。
【０１７９】
これらの耐タンパーハードウェアを、ＩＣカードやＰＣカード（ＰＣＭＣＩＡカード）のような携帯可能な演算装置として実現することにより、ユーザに対する更なる利便を提供することができる。
【０１８０】
また、ＩＣカードに実装されるマイクロコントローラーは、高密度実装ゆえに、それ自体で相当の耐タンパー特性を有しているとされている。
【０１８１】
図１７は、第一および第二の実施例において、ユーザ固有情報ｅを保持するユーザ固有情報記憶手段１１５と、差分情報を生成する第二演算手段１１４とが、ＩＣカードのような耐タンパーハードウェア１６０に封入されている構成を示している。
【０１８２】
図１８は、第三の実施例において、ユーザ固有情報ｅを保持するユーザ固有情報記憶部１１５と、差分情報を生成する第２演算部１１４に加えて、指数生成部１３０も耐タンパーハードウェア１６１に封入されている構成を示している。
【０１８３】
ＩＣカード側Ｉ／Ｆ部１４１は、ホストとＩＣカードの通信を司るＩＣカード側インターフェースであり、具体的には、通信用バッファと通信プログラムから構成される。証明データ生成装置の内の残りの部分は、ユーザのＰＣあるいはワークステーション上で動作するプログラムとして構成される。耐タンパーハードウェア１６１中の各手段の作用は第一乃至第三の実施例に述べた通りであるので、以下では、その部分の作用については解説しない。また、説明を簡略にする目的で耐タンパーハードウェアをＩＣカードであるものと仮定するが、この仮定はこの発明の一般性をなんら束縛するものではない。
【０１８４】
図１９は、図１７および図１８におけるデータのフローを示している。
【０１８５】
つぎに、動作について説明する。
【０１８６】
１．ユーザがアクセスすることによって、証明データ検証装置１０が起動される。
【０１８７】
２．証明データ検証装置１０は、認証用データＣとアクセスチケット公開鍵記憶部１０１に記憶されているＲＳＡ暗号の法数ｎとの組を証明データ生成装置１１中の受信データ記憶部１１１に書き込む。
【０１８８】
３．証明データ生成装置１１中のホスト側インターフェース部１４０は、受信データ記憶部１１１に書き込まれた認証用データＣとｎを、ＩＣカード側インターフェース部１４１に引き渡す。ホスト側インターフェース部１４０は、ＩＣカード中に設けられたＩＣカード側インターフェース部１４１と協調して、ホスト・ＩＣカード間のデータ通信を司る。
【０１８９】
４．アクセスチケット検索部１４２は、ＲＳＡ法数ｎを検索のキーとして、アクセスチケット記憶部１１３に記憶されているアクセスチケットｔを検索・取得する。
【０１９０】
５．第１演算部１１２は、受信データ記憶部１１１に書き込まれたＲＳＡ法数ｎのもとで式２５を実行し中間情報Ｒ’を得る。
【０１９１】
【数２５】
（２５）    Ｒ’＝Ｃｔ  ｍｏｄ  ｎ
６．次いで、ホスト側インターフェース部１４０は、ＩＣカード側インターフェース部１４１にコマンドを発行し、その返り値として差分情報Ｓを得る。
【０１９２】
アクセスチケット及びＩＣカード中の手段が第一あるいは第二の実施例に即して構成されている場合には、差分情報Ｓは式２６によって計算される値である。
【０１９３】
【数２６】
（２６）    Ｓ＝Ｃｅ  ｍｏｄ  ｎ
アクセスチケット及びＩＣカード中の手段が第三の実施例に即して構成されている場合には、差分情報Ｓは式２７によって計算される値である。
【０１９４】
【数２７】
（２７）    Ｓ＝ＣＦ（ｎ，ｅ）  ｍｏｄ  ｎ
７．証明データ生成装置１１中の証明データ生成部１１６は、第１および第２演算部１１２、１１４からＲ’およびＳを得て、第一および第二の実施例に即している場合は式２８、第三の実施例に即している場合には式２９の計算を行ないＲを得る。
【０１９５】
【数２８】
（２８）      Ｒ＝Ｒ’Ｓ  ｍｏｄ  ｎ
【０１９６】
【数２９】
（２９）      Ｒ＝Ｒ’Ｓ−１  ｍｏｄ  ｎ
８．証明データ生成装置１１はＲを証明データ検証装置１０の受信データ記憶部１０５に返送する。
【０１９７】
上記の作用において、中間情報Ｒ’と差分情報Ｓの計算が、ユーザのＰＣあるいはワークステーションであるホスト側と、演算機能を内蔵するＩＣカード側で並列に実行されるため、証明データ生成手段１１が認証用データＣ及び法数ｎを受け取ってから、証明データＲを計算するまでの実行時間を短縮することができ、よって処理効率を向上させている。
【０１９８】
この実施例では、アクセスチケット記憶部１１３には複数のアクセスチケットが記憶されるが、アクセスチケットが異なればそのＲＳＡ法数ｎが異なるので、アクセスチケットは、ｎをキーとして検索ができるようにｎと対応づけて記憶される。
【０１９９】
また、アプリケーションやサーバがアクセス制御のために利用するＲＳＡ法数ｎは、アプリケーションやサーバ毎に異なるのが基本である。
【０２００】
アクセスチケット検索部１４２は、証明データ検証装置１０から与えられるＲＳＡ法数ｎをキーとして、適切なアクセスチケットを検索し、以後の証明データの生成に供する。この検索機能により、証明データ生成装置１１は、ユーザになんら負担を強いることなく、アクセスしている対象（個別のアプリケーションや個別のサーバ）に応じて適切な証明データを計算し、返送することが可能となる。
【０２０１】
［第五の実施例］
この発明における第五の実施例では、第三の実施例で用いたＲＳＡ公開鍵暗号の代わりに、Ｐｏｈｌｉｇ−Ｈｅｌｌｍａｎ非対称鍵暗号を用いる。
【０２０２】
Ｐｏｈｌｉｇ−Ｈｅｌｌｍａｎ非対称鍵暗号は、法数として大きな素数ｐを用いる点で，法数として２つの素数の積ｎ（＝ｐｑ）を用いるＲＳＡ公開鍵暗号と異なる外は、ＲＳＡ公開鍵暗号と同一の暗号方式である。しかし、ＲＳＡ公開鍵暗号では、一方の鍵Ｅと法数ｎから、もう一方の鍵Ｄを計算することが非常に困難であったため、Ｅ及びｎを公開鍵として用い、Ｄを個人の秘密として用いることが可能であった。一方、Ｐｏｈｌｉｇ−Ｈｅｌｌｍａｎ非対称鍵暗号暗号では、Ｅとｐとから、容易にＤが計算できるため、Ｅとｐとを公開鍵として用いることはできない。即ち、ＥとＤとの両方を当事者間の秘密としておく必要があり、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）のような共通鍵暗号と同様の利用形態を採らざるを得ない。
【０２０３】
この実施例では、アクセスチケットｔは次の式３０に基づいて生成されるデータである。
【０２０４】
【数３０】
（３０）                ｔ  ＝  Ｄ＋Ｆ（ｐ，ｅ）
上式中の各記号は以下を表す。
ｐは十分大きな素数である。
ユーザ固有情報ｅはユーザ毎に異なる数であり、ユーザを識別するために用いられる。
アクセスチケット秘密鍵Ｄは、法数ｐのもとでのＰｏｈｌｉｇ−Ｈｅｌｌｍａｎ暗号の鍵の一方であり、式３１を満たす。
【０２０５】
【数３１】
（３１）                ｇｃｄ（Ｄ，ｐ−１）＝１
ここで、ｇｃｄ（ｘ，ｙ）は二数ｘ、ｙの最大公約数を表す。
【０２０６】
式３１によって表現される性質は、式３２を満たす数Ｅが存在することを保証する。
【０２０７】
【数３２】
（３２）                ＥＤ  ｍｏｄ  ｐ−１  ＝  １
二変数関数Ｆ（ｘ，ｙ）は関数値が衝突しにくい二変数関数であり、例えば、前述の一方向ハッシュ関数ｈを利用して、式３３のように定めることができる。
【０２０８】
【数３３】
（３３）                Ｆ（ｘ，ｙ）＝ｈ（ｘ｜ｙ）
つぎに、図２０および図２１を参照して第五の実施例についてさらに詳細に説明する。図２０は第五の実施例の構成を示し、図２１は図２０におけるデータのフローを示している。図２０において、証明データ検証装置２０は、鍵記憶部４０１、乱数発生部４０２、乱数記憶部４０３、受信データ記憶部４０５、乱数化部４２１、認証用素データ記憶部４２２、乱数効果除去部４２３および実行手段３１０を含んで構成されている。また、証明データ生成部４１は、受信データ記憶部４１１、第１演算部４１２、アクセスチケット記憶部４１３、第２演算部４１４、ユーザ固有情報記憶部４１５、証明データ生成部４１６、および指数生成部４３０を含んで構成されている。
【０２０９】
つぎに、動作について説明する。
【０２１０】
１．ユーザがアクセスすることによって、証明データ検証装置４０が起動される。
【０２１１】
２．証明データ検証装置４０は、認証用データＣと鍵記憶部４０１に記憶されている法数ｐとの組を証明データ生成装置４１中の受信データ記憶部４１１に書き込む。
【０２１２】
この実施例では、Ｃの生成方法としては、第二の実施例で述べた方法に準じた方法によるものとするが、第一の実施例で述べた方法に準じた方法を構成することも難しくない。
【０２１３】
証明データ検証装置中４０の乱数発生部４０２によって、乱数ｒを鍵記憶部４０１に保持されている法数ｐと互いに素になるように生成し、乱数記憶部４０３に記録する。
【０２１４】
乱数化部４２１は、鍵記憶部４０１に格納されてい指数Ｅと法数ｐを取得し、さらに認証用素データ記憶部４２２に記憶されているデータＣ’を取得して、式３４の計算を行なう。
【０２１５】
【数３４】
（３４）      Ｃ＝ｒＥＣ’  ｍｏｄ  ｐ
ここで、認証用素データＣ’はデータＫに対して関係式３５を満たすように生成され、認証用素データ記憶部３０５に格納された値である。
【０２１６】
【数３５】
（３５）      Ｃ’＝ＫＥ  ｍｏｄ  ｐ
３．証明データ生成装置４１中の第１演算部４１２は、アクセスチケット記憶部４１３に記憶されているアクセスチケットｔを取得し、受信データ記憶部４１１に書き込まれたＲＳＡ法数ｐのもとで式３６を実行し中間情報Ｒ’を得る。
【０２１７】
【数３６】
（３６）    Ｒ’＝Ｃｔ  ｍｏｄ  ｐ
４．証明データ生成装置４１中の指数生成部４３０は、ユーザ固有情報記憶部４１５に記憶されているユーザの固有情報ｅを取得し、式３７の計算を実行する。
【０２１８】
【数３７】
（３７）        Ｆ（ｐ，ｅ）
５．証明データ生成装置１１中の第２演算部４１４は、指数生成部４３０で生成されたデータを用いて、式３８の計算を実行し差分情報Ｓを得る。
【０２１９】
【数３８】
（３８）    Ｓ＝ＣＦ（ｐ，ｅ）  ｍｏｄ  ｐ
６．証明データ生成装置４１中の証明データ生成部４１６は、第１および第２演算部４１２、４１４からＲ’およびＳを得て、式３９の計算を行ないＲを得る。
【０２２０】
【数３９】
（３９）    Ｒ＝Ｒ’Ｓ−１  ｍｏｄ  ｐただし、Ｓ−１は法ｐのもとでのＳの逆数、即ち、式４０を満たす数を表す。
【０２２１】
【数４０】
（４０）    ＳＳ−１  ｍｏｄ  ｐ  ＝  １
７．証明データ生成装置４１はＲを証明データ検証装置４０の受信データ記憶部４０５に返送する。
【０２２２】
８．証明データ検証装置１０中の乱数効果除去部４２３は、乱数記憶部４０３中から先に生成した乱数ｒを取り出し、式４１の計算を行なう。
【０２２３】
【数４１】
（４１）    Ｋ’＝ｒ−１Ｒ  ｍｏｄ  ｐ
証明データ生成装置４１において用いられるアクセスチケットｔとユーザの第一の固有情報ｅの組合せが正しい場合に限り、計算の結果得られたＫ’とＫが一致することに注意せよ。
【０２２４】
［第六の実施例］
この発明の第六の実施例では、第三の実施例におけるＲＳＡ公開鍵暗号の代わりに、ＥｌＧａｍａｌ公開鍵暗号を用いた構成例を示す。
【０２２５】
この発明における第六の実施例では、アクセスチケットｔは次の式４２に基づいて生成されるデータである。
【０２２６】
【数４２】
（４２）                ｔ  ＝  Ｘ＋Ｆ（ｐ，ｅ）
上式中の各記号は以下を表す。
ｐは十分大きな素数である。
ユーザ固有情報ｅはユーザ毎に異なる数であり、ユーザを識別するために用いられる。
アクセスチケット秘密鍵Ｘは、法数ｐのもとでのＥｌＧａｍａｌ暗号の秘密鍵であり、Ｙを対応する公開鍵であるとする。即ち、式４３を満たす。
【０２２７】
【数４３】
（４３）        Ｙ  ＝  ａＸ  ｍｏｄ  ｐ
ここで、ａは位数ｐの有限体の乗法群の生成元、即ち、式４４及び４５を満たす。
【０２２８】
【数４４】
（４４）    ａ  ≠  ０
【０２２９】
【数４５】
（４５）    ｍｉｎ｛ｘ＞０｜ａｘ＝１  ｍｏｄ  ｐ｝  ＝  ｐ−１
また、Ｙをアクセスチケット公開鍵と呼ぶ。
【０２３０】
二変数関数Ｆ（ｘ，ｙ）は関数値が衝突しにくい二変数関数であり、例えば、前述の一方向ハッシュ関数ｈを利用して、式４６のように定めることができる。
【０２３１】
【数４６】
（４６）        Ｆ（ｘ，ｙ）＝ｈ（ｘ｜ｙ）
つぎに、図２２および図２３を参照して第六の実施例をさらに説明する。図２２は第六の実施例の構成を示し、図２３は第六の実施例におけるデータのフローを示している。図２２において、証明データ検証装置５０は、アクセスチケット公開鍵記憶部５０１、乱数発生部５０２、乱数記憶部５０３、受信データ記憶部５０５、乱数化部５２１、認証用素データ記憶部５２２、乱数効果除去部５２３および実行手段３１０を含んで構成されている。証明データ生成部５１は、受信データ記憶部５１１、第１演算部５１２、アクセスチケット記憶部５１３、第２演算部５１４、ユーザ固有情報記憶部５１５、証明データ生成部５１６、および指数生成部５３０を含んで構成されている。
【０２３２】
つぎに動作について説明する。
【０２３３】
１．ユーザがアクセスすることによって、証明データ検証装置５０が起動される。
【０２３４】
２．証明データ検証装置５０は、認証用データの組ｕ、Ｃと、アクセスチケット公開鍵記憶部５０１に記憶されている法数ｐとを、証明データ生成装置５１中の受信データ記憶部５１１に書き込む。
【０２３５】
認証用素データ記憶部５２２には、認証用素データとしてｕ，Ｃ’が記憶されているが、それらは次の性質を満たす。
【０２３６】
ｕは、上記ａを法ｐのもとで適当な乱数ｚを指数としてべき乗した数であり、即ち、式４７を満たす。
【０２３７】
【数４７】
（４７）    ｕ  ＝  ａｚ  ｍｏｄ  ｐ
Ｃ’は、アクセスチケット公開鍵Ｙを、法ｐのもとで、上記乱数ｚを指数としてべき乗した数と、適当なデータＫとの積であり、式４８を満たす。
【０２３８】
【数４８】
（４８）    Ｃ’＝ＹｚＫ  ｍｏｄ  ｐ
認証用データＣは、次のように生成される。
【０２３９】
証明データ検証装置５０は、乱数発生部５０２によって、乱数ｒをアクセスチケット公開鍵記憶部５０１に保持されている法数ｐと互いに素になるように生成し、乱数記憶部５０３に記録する。
【０２４０】
次いで、乱数化部５２１は、認証用素データ記憶部５２２に記憶されているデータＣ’を取得して、式４９の計算を行なう。
【０２４１】
【数４９】
（４９）      Ｃ＝ｒＣ’  ｍｏｄ  ｐ
３．証明データ生成装置５１中の第１演算部５１２は、アクセスチケット記憶部５１３に記憶されているアクセスチケットｔを取得し、受信データ記憶部５１１に書き込まれた法数ｐのもとで式５０を実行し中間情報Ｓを得る。
【０２４２】
【数５０】
（５０）    Ｓ  ＝  ｕｔ  ｍｏｄ  ｐ
４．証明データ生成装置５１中の指数生成部５３０は、ユーザ固有情報記憶部５１５に記憶されているユーザの固有情報ｅを取得し、式５１の計算を実行する。
【０２４３】
【数５１】
（５１）                        Ｆ（ｐ，ｅ）
５．証明データ生成装置５１中の第２演算部５１４は、指数生成部５３０で生成されたデータを用いて、式５２の計算を実行し差分情報Ｓ’を得る。
【０２４４】
【数５２】
（５２）    Ｓ’  ＝  ｕＦ（ｐ，ｅ）  ｍｏｄ  ｐ
６．証明データ生成装置５１中の証明データ生成部５１６は、第１および第２演算部５１２、５１４からＳおよびＳ’を得て、式５３の計算を行ないＲを得る。
【０２４５】
【数５３】
（５３）    Ｒ  ＝  Ｓ−１Ｓ’Ｃ  ｍｏｄ  ｐ
ただし、Ｓ−１は法ｐのもとでのＳの逆数、即ち、式５４を満たす数を表す。
【０２４６】
【数５４】
（５４）    ＳＳ−１  ｍｏｄ  ｐ  ＝  １
７．証明データ生成装置５１はＲを証明データ検証装置５０の受信データ記憶部５０５に返送する。
【０２４７】
８．証明データ検証装置１０中の乱数効果除去部５２３は、乱数記憶部５０３中から先に生成した乱数ｒを取り出し、式５５の計算を行なう。
【０２４８】
【数５５】
（５５）    Ｋ’＝ｒ−１Ｒ  ｍｏｄ  ｐ
証明データ生成装置５１において用いられるアクセスチケットｔとユーザの固有情報ｅの組合せが正しい場合に限り、計算の結果得られたＫ’とＫが一致することに注意せよ。
【０２４９】
さて、上記の形態を直接実施した場合、次のような問題が生じる。即ち、同一の認証用素データｕ，Ｃ’を、複数回のアクセス資格認証手続きに適用することにより、ユーザ固有情報やアクセスチケットなしに証明データ生成装置１１の作用を模倣する装置を構成することが可能となる。まず、初回の認証手続きにおいて、証明データ検証装置１０から発行される認証用素データＣと証明データ生成装置１１が生成する証明データＲから、Ｈ＝ＲＣ−１
ｍｏｄ  ｐを計算する。模倣装置には、ユーザ固有情報及びアクセスチケットの代わりにこのＨを記録しておく。証明データ検証装置１０が発行する任意の認証用素データ（ｕ，Ｃ）に対し、模倣装置が式Ｒ＝ＨＣ  ｍｏｄ  ｐに従って証明データＲを生成し、証明データ検証装置１０に返すようにすればよい。
【０２５０】
この攻撃に対処する方法として、認証用素データ記憶部５２２に認証用素データの組ｕ，Ｃ’を必要な数だけ記憶しておいて、認証手続きの都度使い捨てにする方法が考えられる。ここで、相異なる認証用素データでは、その生成のために用いられる乱数ｚが互いに相違するようにする。ｕは、ｕ＝ａｋ
ｍｏｄｐで定義されるが、ｋは乱数であったことに留意されたい。
【０２５１】
［第七の実施例］
この発明の第七の実施例においては、アクセス資格認証の特徴情報としてＥｌＧａｍａｌ署名の署名鍵を用いる構成例を述べる。
【０２５２】
この発明における第七の実施例では、アクセスチケットｔは式５６に基づいて生成されるデータである。
【０２５３】
【数５６】
（５６）                ｔ  ＝  Ｘ＋Ｆ（ｐ，ｅ）
上式中の各記号は以下を表す。
ｐは十分大きな素数である。
ユーザ固有情報ｅはユーザ毎に異なる数であり、ユーザを識別するために用いられる。
アクセスチケット秘密鍵Ｘは、法数ｐのもとでのＥｌＧａｍａｌ署名の署名鍵であり、Ｙを対応する公開鍵であるとする。即ち、式５７を満たす。
【０２５４】
【数５７】
（５７）                Ｙ  ＝  ａＸ  ｍｏｄ  ｐ
ここで、ａは位数ｐの有限体の乗法群の生成元、即ち、式５８及び５９を満たす。
【０２５５】
【数５８】
（５８）    ａ  ≠  ０
【０２５６】
【数５９】
（５９）    ｍｉｎ｛ｘ＞０｜ａｘ＝１  ｍｏｄ  ｐ｝  ＝  ｐ−１
また、Ｙをアクセスチケット公開鍵と呼ぶ。
【０２５７】
二変数関数Ｆ（ｘ，ｙ）は関数値が衝突しにくい二変数関数であり、例えば、前述の一方向ハッシュ関数ｈを利用して、式６０のように定めることができる。
【０２５８】
【数６０】
（６０）        Ｆ（ｘ，ｙ）＝ｈ（ｘ｜ｙ）
つぎに図２４および図２５を参照してさらに第七の実施例について説明する。図２４は第七の実施例の構成を示し、図２５は第七の実施例におけるデータのフローを示している。図２４において、証明データ検証装置６０は、アクセスチケット公開鍵記憶部６０１、乱数発生部６０２、乱数記憶部６０３、受信データ記憶部６０５、検証部６０６、実行部６０７およびエラー処理部６０８を含んで構成されている。また、証明データ生成装置６１は、受信データ記憶部６１１、乱数発生部６１２、第１演算部６１３、第２演算部６１４、アクセスチケット記憶部６１５、およびユーザ固有情報記憶部６１６を含んで構成されている。
【０２５９】
つぎに動作について説明する。
【０２６０】
１．ユーザがアクセスすることによって、証明データ検証装置６０が起動される。
【０２６１】
２．証明データ検証装置６０は、認証用データＣと、アクセスチケット公開鍵記憶部６０１に記憶されている法数ｐと、生成元ａとを、証明データ生成装置６１中の受信データ記憶部６１１に書き込む。認証用データＣは、次のように生成される。
【０２６２】
証明データ検証装置６０は、乱数発生部６０２によって、乱数ｒをアクセスチケット公開鍵記憶部６０１に保持されている法数ｐと互いに素になるように生成し、前記ｒを乱数記憶部６０３に記録するとともに、認証用データＣとする（Ｃ＝ｒ）。
【０２６３】
３．証明データ生成装置６１中の乱数生成部６１２は、法数ｐ−１と互いに素であるような乱数ｋを生成する。
【０２６４】
第１演算部６１３は、前記乱数ｋと、受信データ記憶部６１１に書き込まれた法数ｐと、生成元ａとから、第一の証明データＲを式６１に従って計算する。
【０２６５】
【数６１】
（６１）    Ｒ  ＝  ａｋ  ｍｏｄ  ｐ
第２演算部６１４は、アクセスチケット記憶部６１５に記憶されているアクセスチケットｔと、ユーザ固有情報記憶部６１６に記憶されているユーザ固有情報ｅと、前記乱数ｋと、前記第一の証明データＲと、受信データ記憶部６１１に書き込まれた認証用データＣと、法数ｐとから、第二の証明データＳを式６２に従って計算する。
【０２６６】
【数６２】
（６２）    Ｓ  ＝  （Ｃ−Ｒ（ｔ−Ｆ（ｐ，ｅ）））ｋ−１  ｍｏｄ  ｐ−１４．証明データ生成装置６１は第一および第二の証明データであるＲ及びＳを証明データ検証装置６０の受信データ記憶部６０５に返送する。
【０２６７】
５．証明データ検証装置６０中の検証部６０６は、乱数記憶部６０３に記憶されている乱数ｒ（＝Ｃ）と、アクセスチケット公開鍵記憶部６０１に記憶されているＹ及びｐとを取り出し、式６３によって、証明データＲ及びＳを検証する。
【０２６８】
【数６３】
（６３）    ａｒ  ＝  ＹＲＲＳ  ｍｏｄ  ｐ
【０２６９】
［第八の実施例］
この発明の第八の実施例では、アクセスチケットの生成方法について述べる。
【０２７０】
第一乃至第七の実施例におけるアクセスチケットの生成には、秘密数に基づく計算が必要である。従って、アクセスチケットの生成は、計算に用いる秘密数が漏洩したり、計算の中間結果が露呈する心配のない安全な装置で実行される必要がある。
【０２７１】
このような安全な装置を構成するための最も容易な方法は、アクセスチケット発行サービスをユーザに提供するサーバを、ユーザが使用するＰＣあるいはワークステーションから独立な計算機上に構築することである。サーバは、ユーザからの要求に応じてアクセスチケットを生成する。サーバの構成に当たっては、外部からの侵入を遮断するように構成することにより、秘密数およびアクセスチケットの計算手順を守る。
【０２７２】
例えば、アクセスチケット発行サーバを、施錠され、出入りが厳重に管理される個室内の計算機上に構成することにより、外部からの侵入を遮断することが可能となる。
【０２７３】
また、ユーザの利便を向上させるために、前記アクセスチケット発行サーバをネットワークに接続し、ユーザからのアクセスチケット発行要求をネットワークを介して受け取り、生成したアクセスチケットをやはりネットワークを介してユーザに配送するように構成することも可能である。
【０２７４】
このように、アクセスチケット発行サーバをネットワークに接続する場合には、ファイアウォール技術（Ｄ．  Ｂｒｅｎｔ  Ｃｈａｐｍａｎ  ＆  Ｅｌｉｚａｂｅｔｈ  Ｄ．  Ｚｗｉｃｋｙ，  Ｂｕｉｌｄｉｎｇ  Ｉｎｔｅｒｎｅｔ  Ｆｉｒｅｗａｌｌｓ，  Ｏ’Ｒｅｉｌｌｙ  ＆  Ａｓｓｏｃｉａｔｅｓ，  Ｉｎｃ．あるいは邦訳、ファイアウォール構築、オライリー・ジャパンを参照）を利用して、ネットワークを介した外部からの侵入に対しても十分に安全性が保たれるよう構築される必要がある。
【０２７５】
第一乃至第七の実施例におけるアクセスチケットは、その正当な使用者（アクセスチケットを計算する際に用いたユーザ固有情報ｅを保持するユーザ）以外には利用できない形式で生成されている。
【０２７６】
第一乃至第七の実施例におけるアクセスチケットは、更に厳密な安全基準のもとに生成されている。即ち、不正なアクセスを試みるユーザが、本人向けあるいは他人向けを問わず、任意個数のアクセスチケットを集めたとしても、そこから、別のアクセスチケットを偽造したり、第一乃至第五の実施例で述べた証明データ生成装置の動作を模倣する装置を構成することは不可能である。
【０２７７】
上記のようなアクセスチケットの安全性から、アクセスチケット発行サーバが生成したアクセスチケットを、電子メールのような比較的安全性の低い配送手段を利用してユーザに配送することも可能となる。
【０２７８】
［第九の実施例］
この実施例では、第一乃至第七の実施例とは異なるユーザの固有情報およびアクセスチケットの構成法を述べる。この構成方法の特徴は、アクセスチケットの生成に秘密情報を必要としない点にある。
【０２７９】
従って、アクセスチケット生成に際して、第八の実施例で述べたような、外部からの侵入に対して安全に構築されたアクセスチケット発行サーバは必要ない。ユーザは、所有するＰＣあるいはワークステーション上で動作するプログラムによって自由にアクセスチケットを生成することができる。プログラム中には、秘密の定数や秘密の手続きは存在せず、プログラムを解析したとしても不正アクセスを可能とするいかなる情報も取り出すことはできない。
【０２８０】
ユーザＵの固有情報はＲＳＡ公開鍵ペアの個人鍵ｄである。このユーザの固有情報に対応する公開鍵を（ｅＵ，ｎＵ）とする。即ち、異なる２つの大きい素数ｐＵとｑＵに対しｎＵ＝ｐＵｑＵであり、ｄＵ及びｅＵは関係式６４を満たすように決定された整数である。
【０２８１】
【数６４】
0003614057.tif 000002
ここで、ｎＵは全てのユーザに共有される定数Ｎ以上であるという条件を付け加える。
【０２８２】
ユーザＵへのアクセスチケットは以下のように構成される。
【０２８３】
ＲＳＡ公開鍵ペアの公開鍵（Ｅ，ｎ）をアクセスチケットの公開鍵とし、該公開鍵と対をなす秘密鍵をＤとする。ｎの素因数分解をｎ＝ｐｑとする時、関係式６５が成り立つ。
【０２８４】
【数６５】
0003614057.tif 000003
アクセスチケットｔＵは式６６で定義される
【０２８５】
【数６６】
（６６）    ｔＵ＝ＤｅＵ  ｍｏｄ  ｎＵ
この実施例におけるアクセス資格認証の特徴情報は、前記ＲＳＡ公開鍵ペアの個人鍵Ｄである。
【０２８６】
第一乃至第七の実施例の場合と同様、この実施例における証明データ生成装置１１は、アクセス資格認証の特徴情報を知りえること、即ち、与えられた認証用データに対応して、正しい証明データを計算し得ることを、証明データ検証装置１０との通信を介して証明する。
【０２８７】
この実施例の特徴は、アクセス資格認証の特徴情報であるＤを暗号化して得られるデータがアクセスチケットであり、ユーザの固有情報がこの暗号化を解くための唯一の復号鍵である点にある。更にいえば、ユーザの固有情報をＲＳＡ公開鍵暗号の個人鍵としている所から、対応する公開鍵を知りえる何人でもアクセスチケットを生成しえる点にある。
【０２８８】
以下に、本実施例における作用を図２６を参照して述べる。
【０２８９】
１．証明データ検証装置１０は、認証用データＣを証明データ生成装置１０の受信データ記憶部７１１に書き込む。
【０２９０】
２．証明データ生成装置１１の復号鍵生成部７１２は、ユーザ固有情報記憶部７１５中に記憶されたユーザの固有情報ｄＵと、アクセスチケット記憶部７１３中に記憶されたアクセスチケットｔＵを取得し、式６７に基づきＤ’を計算する。
【０２９１】
【数６７】
（６７）      Ｄ’＝ｔＵ ｄＵ  ｍｏｄ  ｎＵ
３．証明データ生成部７１４は、復号鍵生成部７１２によって生成された前記Ｄ’と、受信データ記憶部７１１に記憶されている認証用データＣを入力として式６８の計算を行ない、Ｒを求める。証明データ生成部７１４は、計算結果を返信データとして証明データ検証装置に送信する。
【０２９２】
【数６８】
（６８）      Ｒ＝  ＣＤ’  ｍｏｄ  ｎ
４．証明データ検証装置は、証明データＲの正当性を検証する。
【０２９３】
アクセスチケットｔＵ＝ＤｅＵ  ｍｏｄ  ｎＵにおけるアクセスチケットの秘密鍵Ｄは、ユーザＵに対しても秘密に保たれなければならないので、上記証明データ生成装置１１の装置構成のうち、ユーザ固有情報記憶部７１３、復号鍵生成部７１２および証明データ生成部７１４は耐タンパー特性を有する防御手段７６０中に封入される。
【０２９４】
第１乃至第七の実施例の場合と同様、証明データ生成装置１１によってユーザの第一の固有情報とアクセスチケットの正しい組合せが用いられた場合に限り、証明データ生成装置によって生成される証明データＲは、証明データ検証装置によって正しく検証される。
【０２９５】
［第十の実施例］
この発明の第十の実施例は、証明データ生成装置における証明データの計算に公開鍵暗号（ＲＳＡ暗号）の代わりに対称鍵暗号が利用され、アクセスチケットが、前記対称鍵暗号の復号鍵（暗号化鍵と同一）Ｄをユーザ固有情報であるＲＳＡ公開鍵ペアの個人鍵に対応する公開鍵（ｅＵ，ｎＵ）で暗号化して得られるデータである点を除いては、第九の実施例とほぼ同じである。
【０２９６】
即ち、対称鍵暗号の暗号化関数をＥｎｃｒｙｐｔ（鍵，平文）（出力は暗号文）、復号関数をＤｅｃｒｙｐｔ（鍵，暗号文）（出力は平文）と表す時、プロテクトされた証明データＣは式６９で定義される。
【０２９７】
【数６９】
（６９）        Ｃ＝Ｅｎｃｒｙｐｔ（Ｄ，Ｋ）
更に、アクセスチケットｔＵは式７０で定義される。
【０２９８】
【数７０】
（７０）        ｔＵ＝ＤｅＵ  ｍｏｄ  ｎＵ
以下、証明データ生成装置の装置構成および作用を図２６に基づいて説明する。
【０２９９】
１．証明データ検証装置１０は、認証用データＣを証明データ生成装置１０の受信データ記憶部７１１に書き込む。
【０３００】
２．証明データ生成装置１１の復号鍵生成部７１２は、ユーザ固有情報記憶部７１５中に記憶されたユーザの固有情報ｄＵと、アクセスチケット記憶部７１３中に記憶されたアクセスチケットｔＵを取得し、式７１によりＤ’を計算する。計算結果は証明データ生成部７１４に出力される。
【０３０１】
【数７１】
（７１）      Ｄ’＝ｔＵ ｄＵ  ｍｏｄ  ｎＵ
３．証明データ生成部７１４は、復号鍵生成部７１２から得たＤ’と、受信データ記憶部７１１に記憶されている認証用データＣを入力として式７２の計算を行ない、Ｒを求める。計算結果は、返信データとして証明データ検証装置１０に送信される。
【０３０２】
【数７２】
（７２）      Ｒ＝Ｄｅｃｒｙｐｔ（Ｄ’，Ｃ）
４．証明データ検証装置１１中はＲの検証を行い、正規の処理を続行するか、エラー処理を実行するかを決定する。
【０３０３】
［実施例の効果］
以上の説明から明らかなように、ユーザのＰＣあるいはワークステーション上で実行されるアプリケーションプログラムへのアクセス制御（実行制御）を目的として、上記の実施例を実施した場合、次に述べる効果を提供することができる。
【０３０４】
１．ユーザはユーザ固有情報を固有にただ一つ保持すればよい。
【０３０５】
２．アプリケーション作成時にはユーザ固有情報と無関係な方法でプログラムに保護処理を施す。
【０３０６】
３．アプリケーションの実行を許可されたユーザにはアクセスチケットが発行され、該ユーザは自らのユーザ固有情報とアクセスチケットを保持することによってのみアプリケーションの実行が可能となる。
【０３０７】
４．アクセスチケットは、正規の持ち主ではないユーザがそれを保持していたとしても、それによってアプリケーションの実行が可能ならないような方法で、安全に生成される。
【０３０８】
これらの特徴により、ユーザ固有情報を内蔵したハードウェアをユーザに配布する場合でも、配布は各ユーザ毎に一回で済み、また、プログラム作成者は、作成する所のプログラムがだれによって利用されるかに関わりなく、一つのアプリケーションの保護処理を一通りの方法で行なえばよいこととなる。従って、従来技術の問題点であった、
◎ユーザ毎に異なるユーザ固有情報を識別するように、プログラムの保護方法をユーザ毎に変えなければならない、
◎ユーザ固有情報をアプリケーション毎に設定し、そのためアプリケーション毎にハードウェアをユーザに郵送しなければならない、
といった問題点が解決され、コストの低減と利便性の向上に大幅に寄与する。
【０３０９】
上述の実施例によれば、アプリケーションプログラムの実行にはアクセスチケットが必要となるが、アクセスチケットは正規のユーザにのみ利用可能な安全なディジタル情報であるため、ネットワーク等を介して簡便にユーザに配送することが出来る。
【０３１０】
また、ユーザは利用するアプリケーションプログラムを変更する度にアクセスチケットを取り替える必要があるが、前述のようにアクセスチケットはディジタル情報であるため取り替え操作は計算機中のプログラムによって容易に行なうことができる。即ち、アプリケーションプログラムを変更する度にユーザがハードウェアを取り替えなければならないといった従来の煩雑さが解消される。
【０３１１】
更に、上述実施例では、異なる証明データに基づく証明データ検証装置（プロシージャ）を、アプリケーションプログラム中の任意の位置に自由に配置することが可能であるため、
◎アプリケーションプログラムの部分毎に異なる実行権を設定する
◎特定の組合せのアクセスチケットを全て保持している時に限り実行権を与えるといった、
きめの細かいアクセス制御を実行制御によって実現することが出来る。
【０３１２】
なおこの発明はプログラムの実行制御に限定されるものではなく、メールのプライバシー保護やファイルおよび計算機資源へのアクセス制御にこの発明を適用することができることは明らかである。すなわちファイルやメールや計算機資源を管理する機構にこの発明の認証技術を適用すれば、ファイル等のアクセスを制御することができる。
【０３１３】
【発明の効果】
以上説明したように、この発明によれば、証明用補助データ（アクセスチケット）を導入することにより、アクセス資格認証の特徴情報とユーザ固有情報とを独立させることができ、従って、プロテクト側も、ユーザ側も１つの固有情報を準備しておけば済む。アクセスチケットは、特定のユーザ固有情報とアクセス資格認証の特徴情報とに基づいて計算されるデータであり、またユーザ固有情報を知らずにアクセスチケットからアクセス資格認証の特徴情報を計算することは少なくとも計算量的に不可能である。そしてユーザ固有情報とアクセスチケットとの正しい組合せ、即ち、ユーザ固有情報と該ユーザ固有情報に基づいて計算されたアクセスチケットの組合せが入力された場合に限って、正しい証明用データがを計算される。従って、ユーザはあらかじめユーザ固有情報を所持し、プログラム作成者等のプロテクト者はユーザが所持するユーザ固有情報とは独立にアクセス資格認証の特徴情報を用意し、アクセスチケットをユーザの固有情報とアプリケーションプログラムの作成等に使用したアクセス資格認証の特徴情報とに応じて作成し、配布することにより、実行制御等のユーザのアクセス資格の認証を行なうことができる。
【図面の簡単な説明】
【図１】この発明の原理的な構成例を示すブロック図である。
【図２】この発明の第一の実施例の構成を示すブロック図である。
【図３】第一の実施例の証明データ検証装置及び証明データ生成装置の構成を示すブロック図である。
【図４】第一の実施例の動作を説明するフロー図である。
【図５】第二の実施例の証明データ検証装置及び証明データ生成装置の構成を示すブロック図である。
【図６】第二の実施例の証明データ検証装置の動作を説明するフロー図である。
【図７】第二の実施例の証明データ検証装置の実行部の構成例を示すブロック図である。
【図８】図７の実行部の構成例の動作を説明するフロー図である。
【図９】第二の実施例の証明データ検証装置の実行部の他の構成例を示すブロック図である。
【図１０】図９の実行部の構成例の動作を説明するフロー図である。
【図１１】第二の実施例の証明データ検証装置の実行部の他の構成例を示すブロック図である。
【図１２】図１１の実行部の構成例の動作を説明するフロー図である。
【図１３】第二の実施例の証明データ検証装置の実行部の他の構成例を示すブロック図である。
【図１４】図１３の実行部の構成例の動作を説明するフロー図である。
【図１５】この発明の第三の実施例の証明データ生成装置の構成を示すブロック図である。
【図１６】第三の実施例の証明データ生成装置の動作を説明するフロー図である。
【図１７】この発明の第四の実施例の構成例を示すブロック図である。
【図１８】この発明の第四の実施例の他の構成例を示すブロック図である。
【図１９】図１７の動作を説明するフロー図である。
【図２０】この発明の第五の実施例の構成を示すブロック図である。
【図２１】第五の実施例のデータ検証装置の動作を説明するフロー図である。
【図２２】この発明の第六の実施例の構成を示すブロック図である。
【図２３】第六の実施例の動作を説明するフロー図である。
【図２４】この発明の第七の実施例の構成を示すブロック図である。
【図２５】第七の実施例の動作を説明するフロー図である。
認証プロトコルを説明する図である。
【図２６】第九の実施例および第十の実施例のアクセスチケットを用いた認証を説明するブロック図である。
【符号の説明】
１０    証明データ検証装置
１１    証明データ生成装置
１２    アクセスチケット生成装置
１３    アクセスチケット
１４    アクセス資格認証の特徴情報
１５    検証ルーチン
１６    ユーザ固有情報
１７    証明データ生成プログラム
２０    トークン（防護手段）
１０１    アクセスチケット公開鍵記憶部１０１
１０２    乱数発生部
１０３    乱数記憶部
１０５    受信データ記憶部
１０６    検証部
１０７    実行部
１０８    エラー処理部
１１１    受信データ記憶部
１１２    第１演算部
１１３    アクセスチケット記憶部
１１４    第２演算部
１１５    ユーザ固有情報記憶部
１１６    証明データ生成部
【図１】
0003614057.tif 000004
【図２】
0003614057.tif 000005
【図３】
0003614057.tif 000006
【図４】
0003614057.tif 000007
【図５】
0003614057.tif 000008
【図６】
0003614057.tif 000009
【図７】
0003614057.tif 000010
【図８】
0003614057.tif 000011
【図９】
0003614057.tif 000012
【図１０】
0003614057.tif 000013
【図１１】
0003614057.tif 000014
【図１２】
0003614057.tif 000015
【図１３】
0003614057.tif 000016
【図１４】
0003614057.tif 000017
【図１５】
0003614057.tif 000018
【図１６】
0003614057.tif 000019
【図１７】
0003614057.tif 000020
【図１８】
0003614057.tif 000021
【図１９】
0003614057.tif 000022
【図２０】
0003614057.tif 000023
【図２１】
0003614057.tif 000024
【図２２】
0003614057.tif 000025
【図２３】
0003614057.tif 000026
【図２４】
0003614057.tif 000027
【図２５】
0003614057.tif 000028
【図２６】
0003614057.tif 000029