(57)【特許請求の範囲】
【請求項１】
ユーザの権限を証明するために生成された署名の正当性を検証することによりユーザのアクセス資格を認証するアクセス資格認証装置において、
ユーザの固有情報ｅを記憶する第１の記憶手段と、
上記ユーザの固有情報ｅおよび署名鍵ｘに対して予め定められた所定の演算を実行して得られた補助情報ｔを記憶する第２の記憶手段と、
上記第１の記憶手段に保持された上記ユーザの固有情報ｅを用い、署名対象のメッセージを用いることのない署名用の第１の部分演算を実行して署名用部分演算結果を生成する第１の生成手段と、
上記第２の記憶手段に保持された上記補助情報ｔと上記署名用部分演算結果と上記署名対象のメッセージとを用いて署名用の第２の部分演算を実行して最終演算結果を生成する第２の生成手段と、
上記第２の生成手段で生成した上記最終演算結果が正当な署名であるかどうかを検証する検証手段とを有し、
上記第１の生成手段による上記署名用の第１の部分演算と上記第２の生成手段による上記署名用の第２の部分演算とは協調して上記署名を生成するように選定され、さらに、上記所定の演算は、上記ユーザの固有情報ｅ、上記署名鍵ｘおよび上記補助情報が対応する場合に上記最終演算結果が正当な署名となるように選定されたことを特徴とするアクセス資格認証装置。
【請求項２】
少なくとも、上記第１の記憶手段と上記第１の生成手段とが、内部のデータ及び処理手続きを外部から観測することを困難ならしめる防御手段中に保護されることを特徴とする請求項１記載のアクセス資格認証装置。
【請求項３】
少なくとも、上記第１の記憶手段と上記第１の生成手段とが、ＩＣカード等の携帯可能な小型演算装置として構成されることを特徴とする請求項１記載のアクセス資格認証装置。
【請求項４】
上記第１の生成手段が、
補助署名鍵ｋと第１の署名用部分演算結果ｒ’とを生成する第３の生成手段と、
上記補助署名鍵ｋを記憶する第３の記憶手段と、
第２の署名用部分演算結果ｓ’を生成する第４の生成手段とから構成され、
第２の生成手段が、
第１の署名ｒを生成する第５の生成手段と、
第２の署名ｓを生成する第６の生成手段とから構成され、
上記第１の署名ｒは、認証用データｍと上記第１の署名用部分演算結果ｒ’とより計算され、
上記第２の署名用部分演算結果ｓ’は、上記補助署名鍵ｋと上記第１の署名ｒと上記ユーザの固有情報ｅと検証鍵ｙとより計算され、
上記第２の署名ｓは、上記第２の署名用部分演算結果ｓ’と上記第１の署名ｒと上記補助情報ｔとより計算されることを特徴とする請求項１、２または３記載のアクセス資格認証装置。
【請求項５】
署名鍵ｘは、有理整数環の法ｎによる剰余類環Ｚ／ｎＺの元であり、検証鍵ｙは、離散対数問題を定める有限群Ｇと位数ｎの元ｇに対してｙ＝ｇｘを満たす有限群の元であることを特徴とする請求項４記載のアクセス資格認証装置。
【請求項６】
有限群Ｇが有限体の乗法群であることを特徴とする請求項５記載のアクセス資格認証装置。
【請求項７】
上記検証手段は、認証用データｍと第１の署名ｒと第２の署名ｓとが、２変数関数Ｈと有限群の底ｇと検証鍵ｙに対してｒ＝Ｈ（ｇｒｙｓ，ｍ）と等価な関係を満たすときに署名が正当であると判定することを特徴とする請求項５記載のアクセス資格認証装置。
【請求項８】
上記２変数関数が、有限群の元から決まるデータと認証用データとを連結したものを入力とした非衝突性関数の値であることを特徴とする請求項７記載のアクセス資格認証装置。
【請求項９】
上記２変数関数が、有限群の元から決まる有理整数環の法ｎによる剰余類環Ｚ／ｎＺの元と認証用データとを加えた値であることを特徴とする請求項７記載のアクセス資格認証装置。
【請求項１０】
上記第２の記憶手段に保持される上記補助情報は、上記署名鍵と上記検証鍵と上記ユーザの固有情報と非衝突性関数より
【数１】
ｔ≡ｘ−ｆ（ｅ，ｙ）  （ｍｏｄ  Ｎ）
（ただしＮはｎの任意の倍元）を満たすように定められたことを特徴とする請求項１、２、３、４、５、６または７記載のアクセス資格認証装置。
【請求項１１】
上記第１の生成手段と上記検証手段とは、有限群Ｇの算法を実行可能であることを特徴とする請求項１、２、３、４、５、６または７記載のアクセス資格認証装置。
【請求項１２】
上記第２の生成手段と上記検証手段とは、２変数関数Ｈを計算することができることを特徴とする請求項１、２、３、４、５、６または７記載のアクセス資格認証装置。
【請求項１３】
上記第３の生成手段は、補助署名鍵として乱数ｋを生成して第３の記憶手段に記憶し、群Ｇにおける底ｇを補助署名鍵ｋでｋ乗して第１の署名用部分演算結果ｒ’＝ｇｋを計算し、
上記第５の生成手段は、上記認証用データｍと上記第１の署名用部分演算結果ｒ’を入力として上記２変数関数Ｈにより上記第１の署名ｒ＝Ｈ（ｍ，ｒ’）を計算し、
上記第４の生成手段は、上記第１の署名ｒと上記ユーザの固有情報ｅおよび上記検証鍵ｙの非衝突性関数値とを掛けたものを上記補助署名鍵から引いて上記第２の署名用部分演算結果ｓ’＝ｋ−ｒｆ（ｅ，ｙ）を計算し、
上記第６の生成手段は、上記第１の署名ｒと上記補助情報ｔとを掛けたものを上記第２の署名用部分演算結果ｓ’から引いて第２の署名ｓ＝ｓ’−ｒｔを計算することを特徴とする請求項４〜請求項１２のいずれかに記載のアクセス資格認証装置。
【請求項１４】
上記検証手段が乱数生成手段を備え、乱数生成手段は生成した乱数を認証用データとして第４の記憶手段に書き込むことを特徴とする請求項１〜請求項１３のいずれかに記載のアクセス資格認証装置。
【請求項１５】
上記検証手段は、上記乱数である認証用データに対して署名を検証することを特徴とする請求項１４に記載のアクセス資格認証装置。
【請求項１６】
上記認証用データは、上記乱数生成手段が生成した乱数ｍ’を非衝突性関数Ｇに対する入力としたときの出力Ｇ（ｍ’）であることを特徴とする請求項１４または１５記載のアクセス資格認証装置。
【請求項１７】
証明データ生成装置が、少なくとも、上記第１の記憶手段と、上記第２の記憶手段と、上記第１の生成手段と、上記第２の生成手段とを有し、証明データ検証装置が、少なくとも、上記証明データ検証手段と、認証用データを記憶する第４の記憶手段と、証明データを記憶する第５の記憶手段とを有し、上記証明データ生成装置と上記証明データ検証装置とが、互いに通信することによりユーザのアクセス資格を認証するアクセス資格認証装置において、
上記証明データ検証装置は、第４の記憶手段に記憶された認証用データを上記証明データ生成装置の第６の記憶手段に書き出し、
上記証明データ生成装置は、上記第２の生成手段によって上記第６の記憶手段に書き込まれた上記認証用データを元に生成した署名を上記証明データ検証装置中の上記第５の記憶手段に書き出し、
上記証明データ検証装置は上記第５の記憶手段に書き込まれた上記署名を用いてユーザのアクセス資格を認証することを特徴とする請求項１〜１６のいずれかに記載のアクセス資格認証装置。
【請求項１８】
ユーザの権限を証明するために生成された署名の正当性を検証することによりユーザのアクセス資格を認証するアクセス資格認証方法において、
第１の記憶手段が、ユーザの固有情報ｅを記憶する第１の記憶ステップと、
第２の記憶手段が、上記ユーザの固有情報ｅおよび署名鍵ｘに対して予め定められた所定の演算を実行して得られた補助情報ｔを記憶する第２の記憶ステップと、
第１の生成手段が、上記第１の記憶ステップにより保持された上記ユーザの固有情報ｅを用い、署名対象のメッセージを用いることのない署名用の第１の部分演算を実行して署名用部分演算結果を生成する第１の生成ステップと、
第２の生成手段が、上記第２の記憶ステップにより保持された上記補助情報ｔと上記署名用部分演算結果と上記署名対象のメッセージとを用いて署名用の第２の部分演算を実行して最終演算結果を生成する第２の生成ステップと、
検証手段が、上記第２の生成ステップで生成した上記最終演算結果が正当な署名であるかどうかを検証する検証ステップとを有し、
上記第１の生成ステップによる上記署名用の第１の部分演算と上記第２の生成ステップによる上記署名用の第２の部分演算とは協調して上記署名を生成するように選定され、さらに上記所定の演算は、上記ユーザの固有情報ｅ、上記署名鍵ｘおよび上記補助情報が対応する場合に上記最終演算結果が正当な署名となるように選定されたことを特徴とするアクセス資格認証方法。
【請求項１９】
ユーザの固有情報ｅを記憶する第１の記憶手段と、
上記ユーザの固有情報ｅおよび署名鍵ｘに対して予め定められた所定の演算を実行して得られた補助情報ｔを記憶する第２の記憶手段と、
上記第１の記憶手段に保持された上記ユーザの固有情報ｅを用い、署名対象のメッセージを用いることのない署名用の第１の部分演算を実行して署名用部分演算結果を生成する第１の生成手段と、
上記第２の記憶手段に保持された上記補助情報ｔと上記署名用部分演算結果と上記署名対象のメッセージとを用いて署名用の第２の部分演算を実行して最終演算結果を生成する第２の生成手段とを有し、
上記第１の生成手段による上記署名用の第１の部分演算と上記第２の生成手段による上記署名用の第２の部分演算とは協調して上記署名を生成するように選定され、さらに、さらに上記所定の演算は、上記ユーザの固有情報ｅ、上記署名鍵ｘおよび上記補助情報が対応する場合に上記最終演算結果が正当な署名となるように選定されたことを特徴とする署名装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はユーザのアクセス資格を認証するアクセス資格認証技術に関する。
【０００２】
【従来技術】
本発明と同分野に属する先行技術としてプログラムの実行制御技術が知られている。プログラム実行制御技術は、
▲１▼アプリケーションプログラム中にユーザ認証のためのルーチンを埋め込み、▲２▼該ルーチンはアプリケーションの実行を試みているユーザが正規の認証用の鍵を保有していることを検査し、
▲３▼前記認証用の鍵の存在が確認された場合に限りプログラムを続行し、それ以外の場合にはプログラムの実行を停止する
技術である。当技術を利用することにより、認証鍵を保有する正規のユーザにのみアプリケーションプログラムの実行を可能ならしめることが出来る。当技術はソフトウェア頒布事業において実用化されており、製品として、例えばＲａｉｎｂｏｗ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｉｎｃ．社のＳｅｎｔｉｎｅｌＳｕｐｅｒＰｒｏ（商標）や、Ａｌａｄｄｉｎ  Ｋｎｏｗｌｅｄｇｅ  Ｓｙｓｔｅｍｓ  Ｌｔｄ．社のＨＡＳＰ（商標）等がある。
【０００３】
以下にプログラム実行制御技術について、より詳細に説明する。
▲１▼ソフトウェアの実行を行うユーザはユーザ識別情報として認証鍵を保有する。認証鍵は暗号化のための鍵であり、ソフトウェアの利用を許可する者、例えばソフトウェアベンダがユーザに配布する。認証鍵は複製を防ぐためにハードウェア中のメモリ等に厳重に封入され、郵便等の物理的手段を用いてユーザに配送される。
▲２▼ユーザは認証鍵を内蔵したハードウェアを指定された方法で所有のパソコン・ワークステーションに装着する。ハードウェアは、例えばプリンタポートに装着される。
▲３▼ユーザがアプリケーションプログラムを起動し、プログラムの実行が前記ユーザ認証ルーチンに及ぶと、プログラムはユーザの認証鍵を内蔵したハードウェアと通信する。通信の結果に基づいてプログラムは認証鍵を識別し、正しい認証鍵の存在が確認されると次のステップへ実行を移す。通信が失敗し認証鍵の存在が確認できない場合は、プログラムは自らを停止し以降の実行ができないようにする。
【０００４】
アクセス資格認証ルーチンによる認証鍵の識別は、例えば、次のようなプロトコルに従って行われる。
▲１▼アクセス資格認証ルーチンは適当な数を生成し鍵内蔵ハードウェアに送信する。
▲２▼鍵内蔵ハードウェアは内蔵する認証鍵を用いて送られた数を暗号化し、前記認証ルーチンに返信する。
▲３▼認証ルーチンは、返信された数が予め予想された数、即ちハードウェアに送信した数を正しい認証鍵で暗号化して得られる数であるか否かを判定する。
▲４▼返信された数が予想された数と一致する場合にはプログラムの実行を続行し、一致しない場合には停止する。
【０００５】
この際、アプリケーションプログラムと認証鍵内蔵ハードウェア間の通信は、たとえ同じアプリケーションプログラム中の同じ箇所において同じハードウェアとの間で交換されるものであろうとも、実行のたびに異ならなければならない。さもなければ、正常な実行過程における通信内容を一度記録し、以後プログラムを実行する度に記録した通りにアプリケーションプログラムへの返信を行うことにより、正しい認証鍵を保有しないユーザでもプログラムを実行することが可能となってしまう。このような通信内容の再現によるアプリケーションプログラムの不正実行をリプレイアタック（ｒｅｐｌａｙ  ａｔｔａｃｋ）と呼ぶ。
【０００６】
リプレイアタックを防ぐために、通常、鍵内蔵ハードウェアに送られる数は通信の度に新たに生成される乱数を用いる。
【０００７】
［従来技術の問題点］
従来技術の問題点は、アプリケーションプログラムを作成する際に、プログラム作成者がユーザが持つ認証鍵を予め想定した上で、該認証鍵に基づいてプログラムの保護処理を行わなければならないという性質に由来する。
【０００８】
つまり、プログラム作成者は、鍵内蔵ハードウェアからの正しい返信をプログラム作成時に予測して、正しい返信を受けた場合にのみプログラムが正常に実行されるようにプログラムの作成を行わなければならない。
【０００９】
上記特徴を有する従来技術の利用形態は基本的に２通りとなるが、いずれの場合も以下に述べる問題を有する。
【００１０】
▲１▼第一の方法ではユーザの認証鍵をユーザ毎に異なるように用意する。即ち、ユーザ甲には認証鍵甲、ユーザ乙には認証鍵乙というように、ユーザ毎に異なる認証鍵を一つずつ用意する。
【００１１】
この場合、プログラム作成者は、プログラム中の認証ルーチンをユーザ毎に適切に変えてプログラムを作成する必要がある。つまり、ユーザ毎に認証鍵が異なるので、プログラム中の認証ルーチンは該プログラムを利用するユーザ固有の認証鍵を識別するように作成されなければならず、プログラム作成者は利用ユーザの数だけ異なるプログラムを作成する必要がある。
【００１２】
対象となるユーザが多数の場合、プログラムをユーザ毎に個別化する作業はプログラム作成者にとって耐えがたい労力を要求し、管理しなければならないユーザ認証鍵のリストも膨大なものとなる。
【００１３】
▲２▼第二の方法では、プログラム作成者はアプリケーション毎にそれぞれ異なる認証鍵を用意する。即ち、アプリケーション甲には認証鍵甲、アプリケーション乙には認証鍵乙というように、アプリケーション毎に異なる認証鍵を一つずつ用意し、固有の認証鍵を識別するように各アプリケーションプログラムを作成する。
【００１４】
この方法では、第一の方法の場合のようにユーザ毎にプログラムを個別的に作成する必要は無くなるが、逆に、ユーザは利用するアプリケーションの数だけ認証鍵を保持しなければならないこととなる。
【００１５】
この制約はプログラム作成者及びユーザそれぞれに以下のような問題を惹起する。
【００１６】
前述のように、認証鍵はハードウェアに厳重に封入した状態でユーザに配布する必要がある。従って、プログラム自身はネットワークを介して簡便に配布することができるのと対照的に、認証鍵を内蔵するハードウェアの配布は郵便等の物理手段に頼らざるを得ない。この制限は、コスト、時間、梱包の手間いずれをとっても、プログラム作成者とって大きな負担となる。
【００１７】
プログラム作成者は、ユーザの要求に応えるべく、アプリケーション毎に異なるハードウェアを一定個数ストックしておかなければならず、在庫管理のコストを必要とする。
【００１８】
また、ユーザは利用するアプリケーションを変更する度にハードウェアを交換しなければならないという煩雑さに甘んじなければならない。
【００１９】
ユーザがあるアプリケーションを使いたいとしても、認証鍵が封入されたハードウェアが届くまで待たねばならず、即座に利用できないという点での不便さも生ずる。
【００２０】
この負担を軽減するため、ハードウェア中に複数の認証鍵を予め封入しておき、新しいアプリケーションの利用をユーザに許可する度に、ハードウェア中の未使用の認証鍵を利用可能とするためのパスワードをユーザに教えるといった方法が用いられる。しかしながら、この方法を用いたとしても、前記の問題点は原理的に解決されないことは明らかである。実際、商品化に際しては、上記問題点に起因する不便さを緩和するために、ハードウェアは連接して複数結合することが可能となるように設計される。
【００２１】
このように、上記二つのいずれの方法をとったとしても、プログラム作成者及びユーザの利便に問題が存在する。
【００２２】
なお、実行制御の外的な特質を考えると、メールのプライバシー保護やファイルや計算機資源のアクセス制御、その他一般のデジタルコンテンツアクセス制御にも適用可能であると想像できる。しかしながら、従来技術をこれらの分野に適用しようとしても、前記の問題点により不可能である。
【００２３】
【発明が解決しようとする課題】
本発明は、以上の事情を考慮してなされたものであり、ユーザ側及びアプリケーション作成者等のプロテクト側の双方に生ずる、多数の認証鍵等の固有情報を取り扱うことによって派生する不具合を解消し、プログラムの実行制御、デジタルコンテンツ（静止画・動画・音声等）のアクセス権保護、メールのプライバシー保護、ファイルや計算機資源のアクセス制御等を行う際に、ユーザのアクセス資格を簡易に認証する事ができるようにした、アクセス資格認証技術を提供することを目的とする。
【００２４】
【課題を解決する手段】
本発明によれば、上述の目的を達成するために、ユーザの権限を証明するために生成された署名の正当性を検証することにより上記ユーザのアクセス資格を認証するアクセス資格認証装置に、ユーザの固有情報を記憶する第１の記憶手段と、上記ユーザの固有情報と、署名鍵より計算された固有署名鍵を記憶する第２の記憶手段と、上記第１の記憶手段に保持されたユーザの固有情報を用いてプレ署名を生成する第１の生成手段と、上記第２の記憶手段に保持されたユーザの固有署名鍵を用いて署名を生成する第２の生成手段と、第２の生成手段の生成した署名の正当性を検証する検証手段とを設け、第１の生成手段と第２の生成手段が協調して署名を生成するようにしている。
【００２５】
この構成においては、固有署名鍵（アクセスチケット）を導入することにより、アクセス資格認証の特徴情報とユーザ固有情報とを独立させることができ、したがってプロテクト側もユーザ側も、１つの固有情報を準備しておくだけですむ。
【００２６】
アクセスチケットは、特定のユーザの固有情報とアクセス資格認証の特徴情報とに基づいて計算されるデータであり、また、ユーザ固有情報を知らずに、アクセスチケットからアクセス資格認証の特徴情報を計算することは困難である。そして、ユーザ固有情報とアクセスチケットとの正しい組み合わせ、すなわち、ユーザ固有情報と該ユーザ固有情報に基づいて計算されたアクセスチケットの組み合わせが入力された場合に限って、正しい証明用データが計算される。したがってユーザはあらかじめ固有情報を保持し、プログラム作成者等のプロテクト者はユーザが所持する固有情報とは独立にアクセス資格認証の特徴情報を用意し、アクセスチケットをユーザの固有情報とアプリケーションプログラムの作成等に使用したアクセス資格認証の特徴情報とに応じて作成し、配布することにより、実行制御等のユーザのアクセス資格の認証を行う事ができる。
【００２７】
なお、本発明は、方法としても実現可能である。さらに本発明の少なくとも一部をプログラム製品として実現することもできる。
【００２８】
【発明の実施の態様】
［全体の構成］
以下、本発明を詳細に説明する。具体的な個別の実施例を述べる前に、本発明の実施形態の全体像を以下に述べる。
【００２９】
まず、本発明を、ユーザのＰＣあるいはワークステーション上で動作するアプリケーションプログラムの実行制御に用いる場合について述べる。図１にこの実施形態における装置の構成を示す。
【００３０】
図１において、プログラム実行制御装置（ユーザ認証装置）は、証明データ検証装置１０、証明データ生成装置１１およびアクセスチケット生成装置１２を含んで構成されている。証明データ検証装置１０は検証手段１３を具備し、また認証用データ１４を保持している。証明データ生成装置１１は、署名データ生成手段１５およびプレ署名データ生成手段１６を具備し、またユーザ固有情報１７および固有署名鍵（アクセスチケット）１８を保持している。アクセスチケット生成装置１２はアクセスチケット１８を生成して証明データ生成装置１１に供給する。アクセスチケット１８については後に詳述する。
【００３１】
証明データ検証装置１０は認証用データ１４を証明データ生成装置１１に送出する。証明データ生成装置１１の署名データ生成手段１５およびプレ署名データ生成手段１６は、受け取った認証用データ１４と、保持しているユーザ固有情報（ユーザを識別するための固有情報）１７とアクセスチケット１８とから証明データ（署名）を生成し、証明データ検証装置１０に返す。証明データ検証装置１０の検証手段１３は、署名を検証し、検証が成功すればプログラムの実行が許容される。
【００３２】
この実施例では、証明データ生成装置１１はユーザが用いる計算機上の証明用プログラムとして実現することができる。この際、ユーザを識別するための固有情報（ユーザ固有情報）１７を、ユーザがコピーして配布することができると、正当な利用権をもたないユーザにもアプリケーションプログラムの使用を許すこととなる。そこで、ユーザ固有情報１７はその正当な保持者であるユーザであってもこれを窃取することができないように、該計算機に装着され、耐タンパー特性を有する証明用ハードウェア（ＩＣカード、ボードなど）を併用することが好ましい。この際、ＩＣカードのような携帯性のあるハードウェアを用いれば、ユーザが複数のＰＣあるいはワークステーション上で作業をする場合に便利である。
【００３３】
証明データ検証装置１０はユーザが利用するアプリケーションプログラムの一部として構成される。即ち、ユーザがアプリケーションプログラムをＰＣあるいはワークステーション上で起動すると、アプリケーションプログラム中にプログラムとして記述された証明データ検証装置１０が起動され、証明データ生成装置１１と通信してユーザ認証を行い、通信が正しく終了した場合に限って該アプリケーションプログラムの実行を可能とする。
【００３４】
ユーザが、証明データ検証装置１０が埋めこまれた前記アプリケーションプログラムを利用するためには、ユーザ本人宛に発行され、前記アプリケーションプログラムに対応する固有署名鍵（アクセスチケット）を取得する必要がある。ユーザは、前記ＰＣあるいはワークステーション上にインストールされた証明データ生成プログラムに、取得したアクセスチケットを登録するとともに、例えば、ユーザ固有情報がＩＣカードに封入されている場合には、ＩＣカードを前記ＰＣあるいはワークステーションに装着する。アクセスチケットは、前記ＰＣあるいはワークステーション上に置く構成にしてもよいし、ＩＣカード中に置いてもよい。
【００３５】
証明データ生成装置１１（ＰＣあるいはワークステーション上のプログラムとＩＣカードによって構成される）は、ユーザ固有情報１７とアクセスチケット１８に基づいて計算を行い、その計算に基づいて証明データ検証装置１０と通信を行う。この計算の過程でユーザ固有情報１７が用いられるが、ユーザ固有情報１７が外部に漏洩すると問題があるため、前記プログラムの少なくとも一部はＩＣカード等の防御手段によって保護される必要がある。
【００３６】
通信の結果、証明データ検証装置１０による認証が成功するのは、ユーザ固有情報１７と、アクセスチケット１８と、証明データ検証装置１０が検証するアクセス資格認証の特徴情報の三つが正しく対応している場合に限られる。
【００３７】
ユーザ固有情報１７あるいはアクセスチケット１８の一方が欠けていた場合には、認証は成功しない。
【００３８】
アクセスチケット１８は特定のユーザ宛に発行される。即ち、アクセスチケット１８の生成に際して、特定のユーザのユーザ固有情報１７が使用される。アクセスチケット１８の生成時に使用されるユーザ固有情報１７と、証明データ生成装置１１によって使用されるユーザ固有情報１７とが一致していない場合、やはり、認証は成功しない。
【００３９】
また、アクセスチケット１８は、特定のアクセス資格認証の特徴情報に基づいて生成され、証明データ検証装置１０はこのアクセス資格認証の特徴情報を認証するように構成される。従って、アクセスチケットの生成のもととなった特徴情報と、アプリケーションプログラムに埋めこまれている証明データ検証装置１０が認証しようとする特徴情報とが互いに対応していなかった場合にも、認証は成功しない。
【００４０】
また、アプリケーションプログラムがネットワークによって結合された別の計算機上で実行され、実行結果がネットワークを介してユーザが用いる計算機に通信されるものとしてもよい。この場合、いわゆるサーバ・クライアントモデルに基づく構成となる。先に述べた、ユーザのＰＣあるいはワークステーション上で実行されるアプリケーションプログラムの実行制御の場合では、証明データ生成装置１１と証明データ検証装置１０との通信がいわゆるプロセス間通信として実行されるのに対し、サーバ・クライアント・モデルに従った場合、証明データ生成装置１１と証明データ検証装置１０との通信はＴＣＰ／ＩＰ（トランスミッション・コントロール・プロトコル／インターネット・プロトコル）などのネットワークプロトコルに従った通信として実行される。
【００４１】
また、アプリケーションプログラムが専用装置上に構成されている場合にも、本発明を適用することが可能である。例えば、証明データ生成装置１１の全体をＩＣカード内に実装し、取得したアクセスチケット１８もＩＣカードに登録するものとする。証明データ検証装置１０は前記専用装置上に実装されるが、該専用装置はＩＣカードを挿入するためのスロットを備え、ユーザは該スロットに所有するＩＣカードを挿入することで認証を行う。
【００４２】
このような専用装置による構成は、銀行のＡＴＭ機や、ゲームセンターにおけるゲーム機などに適用することができる。
【００４３】
ユーザによるアクセスチケット１８の取得に関しては、アクセスチケット１８を発行する共通のセンターが、ユーザからの発行依頼に応じて生成して配布する方法と、アプリケーションプログラムの作成者が、アクセスチケット発行プログラムやアクセスチケット生成装置１２の助けを借りて個別に生成する方法がある。
【００４４】
このような場合、アクセスチケット生成装置１２は、チケット発行者によって管理され、アクセスチケット１８はこれら正当な権利者等によって、ユーザの環境とは別個に作成され、配布される。
【００４５】
生成されたアクセスチケット１８は、フロッピーディスク等の可搬型記憶媒体を介してユーザに配送されるものとしてもよいが、アクセスチケット１８が十分な安全性を備えていることから、電子メールなどを用いてネットワークを介して配送されるように構成してもよい。
【００４６】
アクセスチケット１８の安全性とは、以下の二つの性質である。
【００４７】
１）アクセスチケットは記名式である。即ち、アクセスチケットが発行されたユーザ本人（正確には、アクセスチケット生成時に用いられたユーザ固有情報の保持者）だけが該アクセスチケットを用いて証明データ生成装置を正しく作動させることができる。従って、悪意の第三者が、他のユーザのアクセスチケットを不正に手に入れたとしても、この第三者がアクセスチケットの発行先である正規のユーザのユーザ固有情報を手に入れないかぎり、このアクセスチケットを利用することは不可能である。
【００４８】
２）アクセスチケットはさらに厳密な安全性を保持している。即ち、悪意の第三者が任意個数のアクセスチケットを集めて、いかなる解析を行ったとしても、得られた情報をもとに別のアクセスチケットを偽造したり、証明データ生成装置の動作を模倣して認証を成立させるような装置を構成することは不可能である。
【００４９】
［具体的な構成］
以下では、より具体的な構成について実施例に即して説明する。この実施例では、以下に説明する一般的な離散対数問題に基づいた署名方式にアクセスチケットを適用する場合の構成例を示す。
【００５０】
本発明の実施例で用いられる署名方式は、離散対数問題が計算量的に困難な有限群Ｇ（乗法的に記す）と位数がｎの元ｇを用いる。
【００５１】
署名鍵ｘは、有理整数環の法ｎによる剰余類環Ｚ／ｎＺの元であり、検証鍵ｙは、ｙ＝ｇｘを満たす有限群Ｇの元である。
【００５２】
剰余類環Ｚ／ｎＺの元ｍに対する署名は、Ｚ／ｎＺの二つの元ｒとｓとからなり、署名の検証は
【００５３】
【数２】
（１−１）    ｒ＝Ｈ（ｇｒｙｓ，ｍ）
で与えられる。ここで関数Ｈは有限群Ｇの元ａと剰余類環Ｚ／ｎＺの元ｂより剰余類環Ｚ／ｎＺの元Ｈ（ａ，ｂ）を決める任意の二変数関数である。また、署名ｒおよびｓは次のとおりである。
【００５４】
【数３】
ｒ＝ｇｋ
ｓ＝ｋ−ｒ’ｘ
ただし、ｒ’＝Ｈ（ｍ，ｒ）であり、ｋ∈Ｚ／ｎＺの乱数である。
【００５５】
図２は、本実施例の証明データ検証装置１０および証明データ生成装置１１の構成例を示し、図３は証明データ生成装置１１の署名生成部を中心に詳細な構成を示している。また、図４に本実施例の動作を示す。なお、図２および図３において図１と対応する箇所には対応する符号を付した。
【００５６】
図２において、証明データ検証装置１０は、検証部１３、検証鍵記憶部２１、乱数生成部２２、認証用データ記憶部２３、および署名記憶部２４を含んで構成されている。また、証明データ生成装置１１は、署名データ生成部１５、プレ署名データ生成部１６、ユーザ固有情報記憶部２５、アクセスチケット記憶部２６、検証鍵記憶部２７、および認証用データ記憶部２８を含んで構成されている。
【００５７】
さて、ユーザを識別するために、ユーザ毎に異なる数であるユーザ固有情報ｅを定める。ｅは、ユーザ固有情報記憶部２５に記憶されている。プレ署名生成部１６およびユーザ固有情報記憶部２５は防御手段（トークンともいう）２９に収容されている。
【００５８】
図３は、図２の証明データ生成装置１１のプレ署名生成部１６および署名生成部１５の詳細な構成を中心に示すものである。すなわち、図２のプレ署名生成部１６は乱数生成部３０、補助署名鍵記憶部３１、第１のプレ署名生成部１６Ａおよび第２のプレ署名生成部１６Ｂからなっている。また、図２の証明データ生成装置１１の署名生成部１５は第１の署名生成部１５Ａおよび第２の署名生成部１５Ｂからなっている。さらに図２の証明データ検証装置１０の証明記憶部２４は第１の署名記憶部２４Ａおよび第２の証明記憶部２４Ｂからなっている。
【００５９】
アクセスチケットｔは次の式１−２に基づいて生成される。
【００６０】
【数４】
（１−２）    ｔ＝ｘ−ｆ（ｅ，ｙ）  ｍｏｄ  Ｎ
ここでＮはｎの任意の倍元である。もちろん、Ｎ＝０の場合は（１−２）は有理整数環上で行われる。剰余類環Ｚ／ｎＺの元を表す代表元として、０，１，２，．．．，ｎ−１を取ることとして必要ならばこれらを整数とみなして計算を行う。
【００６１】
関数ｆは関数値が衝突しにくい関数であり、例えば、一方向ハッシュ関数ｈを利用して、式１−３のように定めることができる。
【００６２】
【数５】
（１−３）    ｆ（ｘ，ｙ）＝ｈ（ｘ｜ｙ）
ここで、ｘ｜ｙはｘとｙとのビットの連結であることを表す。
【００６３】
一方向ハッシュ関数とは、ｈ（ｘ）＝ｈ（ｙ）を満たす相異なるｘ、ｙを算出することが著しく困難であるという性質をもつ関数である。一方向ハッシュ関数の例として、ＲＳＡ  Ｄａｔａ  Ｓｅｃｕｒｉｔｙ  Ｉｎｃ．によるＭＤ２、ＭＤ４、ＭＤ５、米国連邦政府による規格ＳＨＳ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ｓｔａｎｄａｒｄ）が知られている。
【００６４】
また、以下では、証明データ検証装置１０が認証を行うために生成するデータｍを認証用データ、証明装置が証明のために生成する署名ｒ、ｓを証明用データとよぶ。
【００６５】
以下に本実施例の動作を示す。
【００６６】
［ステップ１］  ユーザが、プログラム実行制御装置（アクセス資格認証装置）による認証を必要とするプログラム（デジタルコンテンツ）にアクセスすることによって、証明データ検証装置１０が起動される。
【００６７】
証明データ検証装置１０がユーザのＰＣあるいはワークステーション上で動作するアプリケーションプログラムの一部として構成されている場合、ユーザがキーボードあるいはマウスなどの指示装置を用いた通常の方法で、アプリケーションプログラムを起動する。アプリケーションプログラムの実行が証明データ検証装置１０を構成しているプログラムに到達することによりことにより、証明データ検証装置１０が起動される。
【００６８】
証明データ検証装置１０がネットワークで結ばれた他のＰＣあるいはワークステーション（サーバと呼ぶ）上に構成されている場合、ユーザは自分のＰＣあるいはワークステーション上の通信プログラムを起動し、該通信プログラムが所定の手続きに従って前記サーバに通信の開設要求を行うことにより、前記サーバ上の証明データ検証装置１０が起動される。例えば、ユーザの通信プログラムがサーバと通信する際にＴＣＰ／ＩＰと呼ばれる手続きに従うとすると、証明データ検証装置をサーバの特定のポートに予め対応づけておき、更に、ユーザの通信プログラムが該ポートを指定してＴＣＰ接続要求をサーバに要求するように設定しておくことにより、サーバ上のデーモン（ｉｎｅｔｄ）がＴＣＰ接続要求に応じて証明データ検証装置１０を起動することが可能となる。このような実現方法は、インターネットなどのネットワークにおいて広く利用されているものである。
【００６９】
証明データ検証装置１０を専用目的の装置とすることも可能である。例えば、証明データ検証装置１０をＩＣカード・リーダ・ライター内のＲＯＭに焼きつけられたプログラムとして構成し、証明データ生成装置１０をＩＣカードのマイクロコントローラーに実装されたプログラムとすることができる。この場合、ユーザがＩＣカードをリーダ・ライターに挿入することにより、証明データ検証装置１０が起動される。
【００７０】
［ステップ２］  証明データ検証装置１０は、認証用データｍを生成して認証用データ記憶部２３に書き込む。認証用データｍは、毎回異なる値となるように生成される。本実施例では、証明データ検証装置１０が乱数生成部２２を持ち、この乱数生成部２２が生成する乱数を認証用データｍとして、認証用データ記憶部２３に書き込む。
【００７１】
更に、該認証用データｍと、検証鍵記憶部２１に記憶されている検証鍵ｙを、証明データ生成装置１１中の受信データ記憶用の検証鍵記憶部２７および認証用データ記憶部２８に書き込む。
【００７２】
［ステップ３］  証明データ生成装置１１中の乱数生成部３０は、適当な乱数ｋを生成してｋを補助署名鍵記憶部３１に記憶し、第１のプレ署名生成部１６Ａは、有限群Ｇにおいて底ｇをｋ乗し、第１のプレ署名ｒ’を生成する。第１のプレ署名ｒ’は式１−４を満たす。
【００７３】
【数６】
（１−４）    ｒ’＝ｇｋ
【００７４】
［ステップ４］  証明データ生成装置中１０の第１の署名生成部１５Ａは、認証用データ記憶部２８に記憶された認証用データｍと第１のプレ署名生成部１６Ａの生成した第１のプレ署名ｒ’より二変数関数Ｈを用いて第１の署名ｒを生成し、証明データ検証装置１０中の第１の署名記憶部２４Ａに書き込む。第１の署名ｒは式１−５を満たす。
【００７５】
【数７】
（１−５）    ｒ＝Ｈ（ｍ，ｒ’）
【００７６】
［ステップ５］  証明データ生成装置１１中の第２のプレ署名生成部１６Ｂは、補助署名鍵記憶部３１に記憶された補助署名鍵ｋと第１の署名生成部１５Ａの生成した第１の署名ｒとユーザ固有情報記憶部２５に記憶されたユーザ固有情報ｅと検証鍵記憶部２７に記憶された検証鍵ｙより式１−６を用いて第２のプレ署名ｓ’を生成する。
【００７７】
【数８】
（１−６）    ｓ’＝ｋ−ｒｆ（ｅ，ｙ）
【００７８】
［ステップ６］  証明データ生成装置１１中の第２の署名生成部１５Ｂは、第２のプレ署名生成部１６Ｂが生成した第２のプレ署名ｓ’と第１の署名生成部１５Ａが生成した第１の署名ｒとアクセスチケット記憶部２６に記憶されているアクセスチケットｔより式１−７を用いて第２の署名ｓを生成し、証明データ検証装置１０中の第２の署名記憶部２４Ｂに書き込む。
【００７９】
【数９】
（１−７）    ｓ＝ｓ’−ｒｔ
【００８０】
［ステップ７］  証明データ検証装置１０中の検証部１３は、認証用データ記憶部２３に記憶された認証用データｍと検証鍵記憶部２１に記憶された検証鍵ｙと第１の署名記憶部２４Ａに記憶された第１の署名ｒと第２の署名記憶部２４Ｂに記憶された第２の署名ｓより、先の式１−１（ｒ＝Ｈ（ｇｒｙｓ，ｍ））の計算を行い検証を行う。
【００８１】
証明データ生成装置１１において用いられるアクセスチケットｔとユーザの固有情報ｅの組み合わせが正しい場合に限り、検証式が成立し、正しく検証が行われる。
【００８２】
本実施例における二変数関数Ｈを、例えば、ハッシュ関数ｈを用いて
【００８３】
【数１０】
（１−８）    Ｈ（ａ，ｂ）＝ｈ（ｂ｜ａ）
とすることによって、上記の構成でいわゆるＳｃｈｎｏｒｒ署名のアクセスチケットによる実現が可能となる。図７はＳｃｈｎｏｒｒ署名のアクセスチケットによる実現の動作を示す。
【００８４】
この場合、証明データ生成装置１１中の第１の署名生成部１５Ａと証明データ検証装置１０中の検証部１３はハッシュ関数ｈを計算する機能を備えれば良い。
【００８５】
また、二変数関数Ｈを、例えば、有限群Ｇの元ｂを剰余類環の元｛ｂ｝に変換し、ａと剰余類環において加算を行う、つまり、
【００８６】
【数１１】
（１−９）    Ｈ（ａ，ｂ）＝ａ＋｛ｂ｝
とすることによって、同様の構成でいわゆるメッセージ復元型のＮｙｂｅｒｇ−Ｒｕｅｐｐｅｌ署名のアクセスチケットによる実現が可能となる。図８はＮｙｂｅｒｇ−Ｒｕｅｐｐｅｌ署名のアクセスチケットによる実現の動作を示す。
【００８７】
以上で実施例の説明を終了する。なお、本発明は上述の実施例に限定されるものではなく、種々変更が可能である。例えば、上述実施例では、証明データ生成装置にアクセスチケットを供給し、証明データ生成装置において署名を生成し、証明データ検証装置に送るようにしているが、アクセスチケットを証明データ検証装置に供給し、証明データとして署名の一部やプレ署名を証明データ検証装置に送り、証明データ検証装置で署名を生成し、検証を行うようにしてもよい。また証明データ検証装置と証明データ生成装置とを区別することなく一体型のアクセス資格認証装置を構成し、この装置にユーザ固有情報やアクセスチケットを供給して認証を行うようにしてもよい。また、署名鍵およびユーザ固有情報から固有署名鍵（アクセスチケット）を生成してユーザに送ることにより、安全に署名鍵を配布可能となる。
【００８８】
【発明の効果】
以上の説明から明らかなように，本発明によれば、固有署名鍵（アクセスチケット）を導入することにより、アクセス資格認証の特徴情報とユーザ固有情報とを独立させることができ、したがってプロテクト側もユーザ側も、１つの固有情報を準備しておくだけですむ。
【００８９】
アクセスチケットは、特定のユーザの固有情報とアクセス資格認証の特徴情報とに基づいて計算されるデータであり、また、ユーザ固有情報を知らずに、アクセスチケットからアクセス資格認証の特徴情報を計算することは困難である。そして、ユーザ固有情報とアクセスチケットとの正しい組み合わせ、すなわち、ユーザ固有情報と該ユーザ固有情報に基づいて計算されたアクセスチケットの組み合わせが入力された場合に限って、正しい証明用データが計算される。したがってユーザはあらかじめ固有情報を保持し、プログラム作成者等のプロテクト者はユーザが所持する固有情報とは独立にアクセス資格認証の特徴情報を用意し、アクセスチケットをユーザの固有情報とアプリケーションプログラムの作成等に使用したアクセス資格認証の特徴情報とに応じて作成し、配布することにより、実行制御等のユーザのアクセス資格の認証を行う事ができる。
【００９０】
また、本発明によれば、署名鍵を安全に配布することが可能となり、簡明な鍵供託機構を実現することができる。
【図面の簡単な説明】
【図１】本発明の実施例の全体の構成を示す図である。
【図２】上述実施例の証明データ検証装置および証明データ生成装置の構成を示すブロック図である。
【図３】上述実施例の証明データ検証装置および証明データ生成装置の詳細な構成を示すブロック図である。
【図４】上述実施例の動作を説明する図である。
【図５】上述実施例の動作を説明する図である。
【図６】上述実施例の動作を説明する図である。
【符号の説明】
１０    証明データ検証装置
１１    証明データ生成装置
１２    アクセスチケット生成装置
１３    検証手段
１４    認証用データ
１５    署名データ生成手段
１６    プレ署名データ生成手段
１７    ユーザ固有情報
１８    アクセスチケット
２１    検証鍵記憶部
２２    乱数（認証用データ）生成部
２３    認証用データ記憶部
２４    署名記憶部
２５    ユーザ固有情報記憶部
２６    アクセスチケット記憶部
２７    検証鍵記憶部
２８    認証用データ記憶部
【図１】
0003622433.tif 000002
【図２】
0003622433.tif 000003
【図３】
0003622433.tif 000004
【図４】
0003622433.tif 000005
【図５】
0003622433.tif 000006
【図６】
0003622433.tif 000007