(57)【要約】【課題】  秘密鍵を安全に送信できない。【解決手段】  本発明の一実施形態の鍵利用端末は、ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵を生成する鍵利用端末であって、公開鍵を入力し、乱数を生成して、乱数及び公開鍵から第１の鍵発行データ（Ｑ）を生成して鍵発行端末に送信し、鍵発行端末が記憶するマスタ秘密キーとＱから鍵発行端末が生成した鍵取得データ（Ｓ）を受信して、乱数とＳから秘密鍵を生成する、鍵取得部を備える。【選択図】      図１
2009232149.tif 000002
【特許請求の範囲】
【請求項１】
ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵を生成する鍵利用端末であって、
前記公開鍵を入力し、乱数を生成して、前記乱数及び前記公開鍵から第１の鍵発行データ（Ｑ）を生成して鍵発行端末に送信し、
前記鍵発行端末が記憶するマスタ秘密キー（ｓ）と前記Ｑから前記鍵発行端末が生成した鍵取得データ（Ｓ）を受信して、前記乱数と前記Ｓから前記秘密鍵を生成する、鍵取得部を備える鍵利用端末。
【請求項２】
前記Ｑを、式（前記公開鍵／前記乱数）を用いて生成し、
式（前記ｓ×前記Ｑ）で前記鍵発行端末が生成した前記Ｓを受信し、
前記秘密鍵を式（前記Ｓ×前記乱数）を用いて生成する前記鍵取得部を備える請求項１の鍵利用端末。
【請求項３】
素数ｑ、
位数が前記ｑの楕円曲線上の２つの群（Ｇ１及びＧ２）に関し、前記Ｇ１×Ｇ１から前記Ｇ２へ写像する双線形ペアリング関数（ｅ）、
バイナリ列を前記Ｇ１へ写像する第１のハッシュ関数（Ｈ１）、
バイナリ列×前記Ｇ２を前記Ｇ１に写像する第２のハッシュ関数（Ｈ２）、
バイナリ列を、前記ｑ未満かつ前記ｑと互いに素な正の整数の集合（Ｚ）に写像する第３のハッシュ関数（Ｈ３）、
前記Ｇ１に属するジェネレータ（Ｐ）、
前記マスタ秘密キー（ｓ）と前記Ｐを乗じた、マスタ公開鍵（Ｐｕｂ）、および、
２種類の文字列（ＩＤ、ＰＷ）を用い、
前記ｓ及び前記乱数は前記Ｚから選択され、
前記公開鍵をＨ１（ＩＤ）とした、前記ＩＤベース公開鍵暗号方式において、
前記Ｐ、前記Ｐｕｂ、及び、前記ｅを入力して、ｅ（前記Ｓ，前記Ｐ）の値とｅ（前記Ｑ，前記Ｐｕｂ）の値を算出して比較し、両者が一致するとき前記Ｓを正当として判断する前記鍵取得部を備える請求項２の鍵利用端末。
【請求項４】
第１の前記公開鍵及び第１の前記乱数から前記秘密鍵を生成する前記鍵取得部と、
送信データ、第２の前記公開鍵、及び、前記Ｈ２を入力し、第２、第３及び第４の前記乱数（ｒ１、ｒ２、ｒ３）を前記Ｚから生成して、前記関数ｅおよびＨ２に基づいて、
Ｕ１を式（前記ｒ１×前記第２の公開鍵）で、
Ｕ２を式（前記ｒ２×前記第１の公開鍵）で、
Ｕ３を式（前記ｒ１×前記ｒ３×前記第２の公開鍵）で、
Ｖを式（前記ｒ３×Ｈ２（前記送信データ，ｅ（前記ｒ２×前記第２の公開鍵，前記秘密鍵））＋前記秘密鍵／前記ｒ１）で算出した後に、前記Ｕ１、Ｕ２、Ｕ３及びＶの組み合わせから構成される署名を生成して、
前記署名及び前記送信データを、他の前記鍵利用端末に送信する署名発行部を備える、請求項３の鍵利用端末。
【請求項５】
第１の前記公開鍵及び第１の前記乱数から前記秘密鍵を生成する前記鍵取得部と、
他の前記鍵利用端末からＵ１、Ｕ２、Ｕ３及びＶの組み合わせから構成される署名及び送信データを受信し、第２の公開鍵及び前記Ｈ２を入力して、前記ｅおよびＨ２に基づいて、ｅ（前記Ｕ１，前記Ｖ）の値と、
式（ｅ（前記Ｕ３，Ｈ２（前記送信データ，ｅ（前記Ｕ２，前記秘密鍵）））×ｅ（前記秘密鍵，前記第２の公開鍵））の値を算出して比較し、両者が一致するとき前記署名および前記送信データを正当であると判断する署名検証部を備える、請求項３の鍵利用端末。
【請求項６】
請求項１または２何れかの鍵利用端末と前記鍵発行端末を備える、公開鍵システム。
【請求項７】
Ｈ１（ＰＷ）、Ｈ３（ＰＷ）を入力し、第２の鍵発行データ（Ｔ）を、式（（前記乱数＋前記Ｈ３（ＰＷ））×前記Ｈ１（ＰＷ））で算出して、前記鍵発行端末に送信する前記鍵取得部を備える請求項３の鍵利用端末と、
前記Ｈ１（ＰＷ）、Ｈ３（ＰＷ）、前記Ｈ１、Ｈ３を入力し、前記関数ｅ、Ｈ１、Ｈ３に基づいて、ｅ（前記Ｑ，前記Ｔ）の値とｅ（前記公開鍵，前記Ｈ１（ＰＷ））×ｅ（前記Ｑ，前記Ｈ１（ＰＷ）））前記Ｈ３（ＰＷ）の値を算出して、両者が一致するとき前記Ｑを正当として判断する前記鍵発行端末を備える、公開鍵システム。
【請求項８】
コンピュータに、ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵を生成する処理を実行させる鍵利用プログラムであって、
前記コンピュータに、前記公開鍵を入力し、乱数を生成して、前記乱数及び前記公開鍵から第１の鍵発行データ（Ｑ）を生成して鍵発行端末に送信し、
前記鍵発行端末が記憶するマスタ秘密キー（ｓ）と前記Ｑから前記鍵発行端末が生成した鍵取得データ（Ｓ）を受信して、前記乱数と前記Ｓから前記秘密鍵を生成する、鍵取得処理を実行させる鍵利用プログラム。
【請求項９】
前記コンピュータに、前記Ｑを、式（前記公開鍵／前記乱数）を用いて生成し、
式（前記ｓ×前記Ｑ）で前記鍵発行端末が生成した前記Ｓを受信し、
前記秘密鍵を式（前記Ｓ×前記乱数）を用いて生成する前記鍵取得処理を実行させる請求項８の鍵利用プログラム。
【請求項１０】
前記コンピュータに、
素数ｑ、
位数が前記ｑの楕円曲線上の２つの群（Ｇ１及びＧ２）に関し、前記Ｇ１×Ｇ１から前記Ｇ２へ写像する双線形ペアリング関数（ｅ）、
バイナリ列を前記Ｇ１へ写像する第１のハッシュ関数（Ｈ１）、
バイナリ列×前記Ｇ２を前記Ｇ１に写像する第２のハッシュ関数（Ｈ２）、
バイナリ列を、前記ｑ未満かつ前記ｑと互いに素な正の整数の集合（Ｚ）に写像する第３のハッシュ関数（Ｈ３）、
前記Ｇ１に属するジェネレータ（Ｐ）、
前記マスタ秘密キー（ｓ）と前記Ｐを乗じた、マスタ公開鍵（Ｐｕｂ）、および、
２種類の文字列（ＩＤ、ＰＷ）を用い、
前記ｓ及び前記乱数は前記Ｚから選択され、
前記公開鍵をＨ１（ＩＤ）とした、前記ＩＤベース公開鍵暗号方式において、
前記Ｐ、前記Ｐｕｂ、及び、前記ｅを入力して、ｅ（前記Ｓ，前記Ｐ）の値とｅ（前記Ｑ，前記Ｐｕｂ）の値を算出して比較し、両者が一致するとき前記Ｓを正当として判断する前記鍵取得処理を実行させる請求項９の鍵利用プログラム。
【請求項１１】
前記コンピュータに、
第１の前記公開鍵及び第１の前記乱数から前記秘密鍵を生成する前記鍵取得処理と、
送信データ、第２の前記公開鍵、及び、前記Ｈ２を入力し、第２、第３及び第４の前記乱数（ｒ１、ｒ２、ｒ３）を前記Ｚから生成して、前記関数ｅおよびＨ２に基づいて、
Ｕ１を式（前記ｒ１×前記第２の公開鍵）で、
Ｕ２を式（前記ｒ２×前記第１の公開鍵）で、
Ｕ３を式（前記ｒ１×前記ｒ３×前記第２の公開鍵）で、
Ｖを式（前記ｒ３×Ｈ２（前記送信データ，ｅ（前記ｒ２×前記第２の公開鍵，前記秘密鍵））＋前記秘密鍵／前記ｒ１）で算出した後に、前記Ｕ１、Ｕ２、Ｕ３及びＶの組み合わせから構成される署名を生成して、
前記署名及び前記送信データを、他の前記鍵利用プログラムに送信する署名発行処理を実行させる、請求項１０の鍵利用プログラム。
【請求項１２】
前記コンピュータに、
第１の前記公開鍵及び第１の前記乱数から前記秘密鍵を生成する前記鍵取得処理と、
他の前記鍵利用プログラムからＵ１、Ｕ２、Ｕ３及びＶの組み合わせから構成される署名及び送信データを受信し、第２の公開鍵及び前記Ｈ２を入力して、前記ｅおよびＨ２に基づいて、ｅ（前記Ｕ１，前記Ｖ）の値と、
式（ｅ（前記Ｕ３，Ｈ２（前記送信データ，ｅ（前記Ｕ２，前記秘密鍵）））×ｅ（前記秘密鍵，前記第２の公開鍵））の値を算出して比較し、両者が一致するとき前記署名および前記送信データを正当であると判断する署名検証処理を実行させる、請求項１０の鍵利用プログラム。
【請求項１３】
コンピュータが、ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵を生成する鍵利用方法であって、
前記コンピュータが、前記公開鍵を入力し、乱数を生成して、前記乱数及び前記公開鍵から第１の鍵発行データ（Ｑ）を生成して鍵発行端末に送信し、
前記鍵発行端末が記憶するマスタ秘密キー（ｓ）と前記Ｑから前記鍵発行端末が生成した鍵取得データ（Ｓ）を受信して、前記乱数と前記Ｓから前記秘密鍵を生成する、鍵取得行程を備える鍵利用方法。
【請求項１４】
前記コンピュータが、前記Ｑを、式（前記公開鍵／前記乱数）を用いて生成し、
式（前記ｓ×前記Ｑ）で前記鍵発行端末が生成した前記Ｓを受信し、
前記秘密鍵を式（前記Ｓ×前記乱数）を用いて生成する前記鍵取得行程を備える請求項１３の鍵利用方法。
【請求項１５】
前記コンピュータが、
素数ｑ、
位数が前記ｑの楕円曲線上の２つの群（Ｇ１及びＧ２）に関し、前記Ｇ１×Ｇ１から前記Ｇ２へ写像する双線形ペアリング関数（ｅ）、
バイナリ列を前記Ｇ１へ写像する第１のハッシュ関数（Ｈ１）、
バイナリ列×前記Ｇ２を前記Ｇ１に写像する第２のハッシュ関数（Ｈ２）、
バイナリ列を、前記ｑ未満かつ前記ｑと互いに素な正の整数の集合（Ｚ）に写像する第３のハッシュ関数（Ｈ３）、
前記Ｇ１に属するジェネレータ（Ｐ）、
前記マスタ秘密キー（ｓ）と前記Ｐを乗じた、マスタ公開鍵（Ｐｕｂ）、および、
２種類の文字列（ＩＤ、ＰＷ）を用い、
前記ｓ及び前記乱数は前記Ｚから選択され、
前記公開鍵をＨ１（ＩＤ）とした、前記ＩＤベース公開鍵暗号方式において、
前記Ｐ、前記Ｐｕｂ、及び、前記ｅを入力して、ｅ（前記Ｓ，前記Ｐ）の値とｅ（前記Ｑ，前記Ｐｕｂ）の値を算出して比較し、両者が一致するとき前記Ｓを正当として判断する前記鍵取得行程を備える請求項１４の鍵利用方法。
【請求項１６】
前記コンピュータが、
第１の前記公開鍵及び第１の前記乱数から前記秘密鍵を生成する前記鍵取得行程と、
送信データ、第２の前記公開鍵、及び、前記Ｈ２を入力し、第２、第３及び第４の前記乱数（ｒ１、ｒ２、ｒ３）を前記Ｚから生成して、前記関数ｅおよびＨ２に基づいて、
Ｕ１を式（前記ｒ１×前記第２の公開鍵）で、
Ｕ２を式（前記ｒ２×前記第１の公開鍵）で、
Ｕ３を式（前記ｒ１×前記ｒ３×前記第２の公開鍵）で、
Ｖを式（前記ｒ３×Ｈ２（前記送信データ，ｅ（前記ｒ２×前記第２の公開鍵，前記秘密鍵））＋前記秘密鍵／前記ｒ１）で算出した後に、前記Ｕ１、Ｕ２、Ｕ３及びＶの組み合わせから構成される署名を生成して、
前記署名及び前記送信データを、他の前記鍵利用方法に送信する署名発行行程を備える、請求項１５の鍵利用方法。
【請求項１７】
前記コンピュータが、
第１の前記公開鍵及び第１の前記乱数から前記秘密鍵を生成する前記鍵取得行程と、
他の前記鍵利用方法からＵ１、Ｕ２、Ｕ３及びＶの組み合わせから構成される署名及び送信データを受信し、第２の公開鍵及び前記Ｈ２を入力して、前記ｅおよびＨ２に基づいて、ｅ（前記Ｕ１，前記Ｖ）の値と、
式（ｅ（前記Ｕ３，Ｈ２（前記送信データ，ｅ（前記Ｕ２，前記秘密鍵）））×ｅ（前記秘密鍵，前記第２の公開鍵））の値を算出して比較し、両者が一致するとき前記署名および前記送信データを正当であると判断する署名検証行程を備える、請求項１５の鍵利用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵利用端末、鍵利用プログラム、公開鍵システム、および、鍵利用方法に関する。
【背景技術】
【０００２】
特許文献１には、ＩＤベース暗号および署名システムにおいて、暗号化および署名生成装置から公開鍵を受信して、秘密鍵を生成して返信する秘密鍵発行装置が記載されている。
【０００３】
特許文献２には、有償ソフトウェアのダウンロードシステムが記載されている。また、特許文献３には、ユーザがユーザ識別子を保存サーバの公開鍵で暗号化して、保存サーバが秘密鍵で復号化してユーザ識別子の正当性を検証するコンテンツ配布システムが記載されている。
【０００４】
【特許文献１】特開２００６−１６３１６４号公報
【特許文献２】特開２００３−３３１１４１号公報
【特許文献３】特開２００１−２０２４５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した特許文献は、秘密鍵生成装置などが公開鍵から生成した秘密鍵を、そのまま利用者に送信していたため、秘密鍵を安全に送信できないという課題があった。
【０００６】
本発明の目的は、上述した課題を解決するための、鍵利用端末、鍵利用プログラム、公開鍵システム、および、鍵利用方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態の鍵利用端末は、ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵を生成する鍵利用端末であって、前記公開鍵を入力し、乱数を生成して、前記乱数及び前記公開鍵から第１の鍵発行データ（Ｑ）を生成して鍵発行端末に送信し、前記鍵発行端末が記憶するマスタ秘密キー（ｓ）と前記Ｑから前記鍵発行端末が生成した鍵取得データ（Ｓ）を受信して、前記乱数と前記Ｓから前記秘密鍵を生成する、鍵取得部を備える。
【０００８】
本発明の一実施形態の鍵利用プログラムは、コンピュータに、ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵を生成する処理を実行させる鍵利用プログラムであって、前記コンピュータに、前記公開鍵を入力し、乱数を生成して、前記乱数及び前記公開鍵から第１の鍵発行データ（Ｑ）を生成して鍵発行端末に送信し、前記鍵発行端末が記憶するマスタ秘密キー（ｓ）と前記Ｑから前記鍵発行端末が生成した鍵取得データ（Ｓ）を受信して、前記乱数と前記Ｓから前記秘密鍵を生成する、鍵取得処理を実行させる。
【０００９】
本発明の一実施形態の鍵利用方法は、コンピュータが、ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵を生成する鍵利用方法であって、前記コンピュータが、前記公開鍵を入力し、乱数を生成して、前記乱数及び前記公開鍵から第１の鍵発行データ（Ｑ）を生成して鍵発行端末に送信し、前記鍵発行端末が記憶するマスタ秘密キー（ｓ）と前記Ｑから前記鍵発行端末が生成した鍵取得データ（Ｓ）を受信して、前記乱数と前記Ｓから前記秘密鍵を生成する、鍵取得行程を備える。
【発明の効果】
【００１０】
本発明によれば、システムは、公開鍵から生成した秘密鍵を、秘密鍵生成コストを大幅に増加することなく、利用者に安全に送信できる。
【発明を実施するための最良の形態】
【００１１】
本発明は、任意の値（利用者の電子メールアドレスといった識別情報やそのハッシュ値等）を公開鍵として用いることが出来るＩＤベース公開鍵暗号方式に関する。
【００１２】
図１は、本発明の第１の実施形態にかかる公開鍵システム１０の全体構成を示す。公開鍵システム１０は、ネットワークで相互に接続された、鍵発行端末２０と複数の鍵利用端末３０を包含する。このように、ＩＤベース公開鍵暗号方式の公開鍵システム１０は、公開鍵の認証を行う認証局の代わりに鍵発行端末２０を備える。
【００１３】
鍵利用端末３０は、他の鍵利用端末３０と、デジタル署名（以降、署名）を用いた通信を行っても良い。この場合、一方の鍵利用端末３０は署名を付したデータを送信する送信端末３１として機能し、他方は署名を付したデータを受信して署名を検証する受信端末３２として機能する。
【００１４】
鍵利用端末３０は、鍵取得部３３、署名発行部３４、署名検証部３５、データベース１１を包含する。鍵取得部３３、署名発行部３４、署名検証部３５は、コンピュータである鍵利用端末３０のプロセッサーが図示しない主記憶装置に格納されている鍵利用プログラム３９を読み込んで、実行することで機能する。ハードウェアが、同等な機能を実現していてもよい。データベース１１は、図示しないディスク装置、主記憶装置上などに設置された記憶域である。
【００１５】
鍵利用端末３０のデータベース１１は、秘密鍵３６、自データ３８、利用表４０及び公開表５０を記憶する。鍵利用端末３０が送信端末３１として機能するときには、データベース１１は、送信データ３７を記憶していても良い。
【００１６】
鍵発行端末２０は鍵取得データＳを発行する。鍵取得データＳは、利用者が公開鍵として使用する値に対して、鍵利用端末３０が秘密鍵３６を生成するためのデータである。以降、鍵取得データＳはＳと略記されることがある。略記は、他のデータ名についても以下同様に行われる。
【００１７】
鍵発行端末２０は、制御部２１およびデータベース１１を包含する。制御部２１は、コンピュータである鍵発行端末２０のプロセッサーが図示しない主記憶装置に格納されているプログラムを読み込んで、実行することで機能する。ハードウェアが、同等な機能を実現していてもよい。データベース１１は、図示しないディスク装置、主記憶装置上などに設置された記憶域である。
【００１８】
鍵発行端末２０のデータベース１１は、利用表４０、マスタ秘密キー２６及び公開表５０を記憶する。
【００１９】
図２は、公開表５０の構成を示す。公開表５０は、ＩＤベース公開鍵暗号方式における公開パラメータを記憶する。具体的に、公開表５０は、ジェネレータＰ、群Ｇ１、群Ｇ２、マスタ公開鍵Ｐｕｂ、ハッシュ関数Ｈ１、Ｈ２及びＨ３、ペアリング関数ｅ、素数ｑを記憶する。公開表５０は、例えば、Ｇ１、Ｇ２、Ｈ１、Ｈ２、Ｈ３、または、ｅについては、識別情報を格納しても良い。公開表５０は、例えば、Ｈ１、Ｈ２、Ｈ３または、ｅについては、関数記述や関数処理プログラムの名前を記憶しても良い。
【００２０】
ＩＤベース公開鍵暗号方式は、秘密鍵３６の発行に際し、ペアリング関数ｅ（双線形写像関数）の性質を利用する。
【００２１】
ペアリング関数ｅは、位数が素数ｑの２つの楕円曲線上の群Ｇ１、Ｇ２に関し、Ｇ１×Ｇ１からＧ２への写像を行う。ペアリング関数ｅは、ｅ（Ｘ１＋Ｘ２，Ｙ）＝ｅ（Ｘ１，Ｙ）×ｅ（Ｘ２，Ｙ）、ｅ（Ｘ，Ｙ１＋Ｙ２）＝ｅ（Ｘ，Ｙ１）×ｅ（Ｘ，Ｙ２）、ｅ（ａＸ，ｂＹ）＝ｅ（Ｘ，Ｙ）｛ａｂ｝＝ｅ（ｂＸ，ａＹ）を満たす関数である。ここで、Ｘ、Ｘ１、Ｘ２、Ｙ、Ｙ１、Ｙ２は、群Ｇ１に属す値である。ａ、ｂは正整数である。ペアリング関数ｅは、例えば、ＷｅｉｌまたはＴａｔｅペアリングである。
【００２２】
ジェネレータＰはＧ１に属す値である。
【００２３】
Ｈ１は任意のバイナリ系列｛０，１｝＊を、楕円曲線上の群Ｇ１に写像するハッシュ関数である。Ｈ２は｛０，１｝＊×Ｇ２をＧ１に写像するハッシュ関数である。Ｈ３は、｛０，１｝＊をｑ未満かつｑと互いに素な正の整数の集合Ｚに写像するハッシュ関数である。
【００２４】
図３は、利用表４０の構成を示す。利用表４０は、利用者の識別情報であるＩＤ及びパスワードＰＷのハッシュ値を対応させて記憶する。具体的には、利用表４０は、ＩＤを関数Ｈ１でハッシュした値（以降、Ｈ１（ＩＤ）と表記する。以下関数について同様）、Ｈ１（ＰＷ）、及び、Ｈ３（ＰＷ）を記憶する。以降、各々は、公開鍵、第１のパスワード、第２のパスワードと呼ばれることがある。
【００２５】
鍵発行端末２０の利用表４０には、秘密鍵３６の生成を行う利用者の公開鍵、第１のパスワード、第２のパスワードが登録されている。送信端末３１の利用表４０には、送信データ３７の受信をする利用者の公開鍵が登録されている。受信端末３２の利用表４０には、送信データ３７を送信する利用者の公開鍵が登録されている。
【００２６】
図４は、鍵発行端末２０および鍵利用端末３０のセットアップ処理のフローチャートである。
【００２７】
先ず、鍵発行端末２０の制御部２１は、公開パラメータを生成して鍵発行端末２０のデータベース１１に公開表５０を作成する。また、同部は、マスタ秘密キー２６も生成してデータベース１１に格納する（Ｓ１）。具体的に、制御部２１は、素数ｑを生成して、位数ｑの楕円曲線上の群Ｇ１及びＧ２を選択し、ｑ、Ｇ１，Ｇ２を公開表５０に記憶する。制御部２１は、ペアリング関数ｅ、ハッシュ関数Ｈ１、Ｈ２、Ｈ３を選択して、それらも公開表５０に記憶する。次に、制御部２１は、群Ｇ１からジェネレータＰを選択し、集合Ｚから値ｓを選択して、ｓとＰを乗じてマスタ公開鍵Ｐｕｂを生成し、ＰとＰｕｂを公開表５０に記憶する。同部は、値ｓをマスタ秘密キー２６としてデータベース１１に格納する。
【００２８】
なお、同部は、上記の選択や生成を、図示しない入力装置から管理者が同部に与えたパラメータに従って行っても良い。例えば、同部は、複数のｅ、Ｈ１等の候補からどれを使用するかの選択指定情報を入力装置から入力して、公開表５０に記憶してもよい。
【００２９】
次に、制御部２１は、公開表５０に記憶された公開パラメータを鍵利用端末３０に公開する（Ｓ２）。例えば、鍵発行端末２０の制御部２１は、鍵利用端末３０からの送信要求を受けて、作成した公開表５０を返信しても良い。または、制御部２１は、作成した公開表５０を特定のＷｅｂサーバに登録しても良い。
【００３０】
鍵利用端末３０の鍵取得部３３は、鍵発行端末２０が公開した公開パラメータを取得して、自端末の公開表５０に格納する（Ｓ３）。具体的には、例えば、鍵利用端末３０は、鍵発行端末２０から公開表５０を受信したり、Ｗｅｂサーバにアクセスして公開表５０をダウンロードしたりして公開パラメータを取得する。
【００３１】
次に、同部は、自端末の利用者のＩＤ、ＰＷを図示しない入力装置から入力する。同部は、自端末の公開表５０からＨ１、Ｈ３を入力して、Ｈ１（ＩＤ）（公開鍵）、Ｈ１（ＰＷ）（第１のパスワード）、Ｈ３（ＰＷ）（第２のパスワード）を算出して、自データ３８に記憶する（Ｓ４）。次に同部は、自データ３８の内容を、図示しない出力装置から出力する（Ｓ５）。
【００３２】
出力された自データ３８は、例えば、郵送などにより鍵発行端末２０の管理者に送られて、鍵発行端末２０の利用表４０に登録される。受信端末３２の自データ３８うち公開鍵は、郵送などにより送られて、送信端末３１の利用表４０に登録される。送信端末３１の自データ３８のうち公開鍵は、受信端末３２の利用表４０に登録される。
【００３３】
公開鍵、第１および第２のパスワードを各端末の利用表４０に登録する方法は、通信回線を用いる等の、他の方法であっても良い。
【００３４】
図５は、秘密鍵３６の生成処理のフローチャートである。
【００３５】
秘密鍵３６を生成する鍵利用端末３０の鍵取得部３３は、乱数ｒを集合Ｚから発生させ（ＳＢ１）、自端末のデータベース１１から自データ３８を読み込んで、第１の鍵発行データＱ、及び、第２の鍵発行データＴを、下記の式に基づいて算出する（ＳＢ２）。
Ｑ＝Ｈ１（ＩＤ）／ｒ
Ｔ＝（ｒ＋Ｈ３（ＰＷ））×Ｈ１（ＰＷ）
鍵取得部３３は、Ｈ１（ＩＤ）、Ｑ、Ｔを鍵発行端末２０に送信する（ＳＢ３）。
【００３６】
鍵発行端末２０では、制御部２１が当該Ｈ１（ＩＤ）、Ｑ、Ｔを鍵利用端末３０から受信する（ＳＡ１）。次に、制御部２１は、受信したＱの正当性を検証するためのデータＡＱ及びＢＱを、下記の式に基づいて算出する。このとき同部は、自端末の公開表５０からｅを入力し、利用表４０から、受信したＨ１（ＩＤ）に対応するＨ１（ＰＷ）、Ｈ３（ＰＷ）を読み込んで、計算を行う（ＳＡ２）。同部は、算出したＡＱ及びＢＱを、一旦図示せぬ主記憶装置上の変数域に格納する。
ＡＱ＝ｅ（Ｑ，Ｔ）
ＢＱ＝ｅ（Ｈ１（ＩＤ），Ｈ１（ＰＷ））×ｅ（Ｑ，Ｈ１（ＰＷ））Ｈ３（ＰＷ）
制御部２１は、図示せぬ主記憶装置上の変数域に格納されたＡＱとＢＱを比較する（ＳＡ３）。ＡＱとＢＱが一致する（ＳＡ３でＹ）と、制御部２１は、下記の式に基づいて鍵取得データＳを算出して鍵利用端末３０に返信し（ＳＡ４）、処理を終了する。
Ｓ＝Ｑ×自端末のデータベース１１内に記憶されているマスタ秘密キー２６
ＡＱとＢＱが一致しなければ（ＳＡ３でＮ）、同部は、Ｑが正当でないとしてエラー表示などをして処理を終了する。
【００３７】
鍵利用端末３０では、鍵取得部３３が当該Ｓを受信する（ＳＢ４）。その後同部は、Ｓの正当性を検証するためのＡＳとＢＳを、自端末の公開表５０からｅ、Ｐ、Ｐｕｂを入力し、下記の式に基づいて算出する（ＳＢ５）。同部は、算出したＡＳ及びＢＳを、一旦図示せぬ主記憶装置上の変数域に格納する。
ＡＳ＝ｅ（Ｓ，Ｐ）
ＢＳ＝ｅ（Ｑ，Ｐｕｂ）
鍵取得部３３は、図示せぬ主記憶装置上の変数域に格納されたＡＳとＢＳを比較する（ＳＢ６）。ＡＳとＢＳが一致する（ＳＢ６でＹ）と、鍵取得部３３は、下記の式に基づいて、秘密鍵３６（＝マスタ秘密キー２６×Ｈ１（ＩＤ））を算出して自端末のデータベース１１に格納して（ＳＢ７）、処理を終了する。
秘密鍵３６＝ｒ×Ｓ
ＡＱとＢＱが一致しなければ（ＳＢ６でＮ）、同部は、Ｓが正当でないとしてエラー表示などをして処理を終了する。
【００３８】
図６は、鍵利用端末３０間での通信処理フローチャートである。
【００３９】
受信端末３２の署名検証部３５は、自端末のデータベース１１の自データ３８からＨ１（ＩＤ）を入力し、送信端末３１に送信する（ＳＤ１）。受信端末３２は、送信端末３１が備える送信データ３７の送信を要求するために、このＨ１（ＩＤ）の送信を行う。この送信の要求は、例えば、ソフトウェアの購入要求などである。
【００４０】
送信端末３１の署名発行部３４は、このＨ１（ＩＤ）を受信して（ＳＣ１）、利用者の認証を行う（ＳＣ２）。具体的には、同部は、自端末の利用表４０に、受信したＨ１（ＩＤ）が登録されていることを確認して認証する。
【００４１】
認証出来た場合（ＳＣ２でＹ）、同部は、集合Ｚに属する乱数ｒ１、ｒ２、ｒ３を発生させる（ＳＣ３）。
【００４２】
次に、同部は、自端末の公開表５０からｅ、Ｈ２を入力し、下記の式に基づいてＵ１、Ｕ２、Ｕ３、Ｖを算出して、それらの組み合わせとしての署名（Ｕ１，Ｕ２，Ｕ３，Ｖ）を作成する（ＳＣ４）。
Ｕ１＝ｒ１×受信したＨ１（ＩＤ）
Ｕ２＝ｒ２×自端末の自データ３８から得たＨ１（ＩＤ）
Ｕ３＝ｒ１×ｒ３×受信したＨ１（ＩＤ）
Ｖ＝ｒ３×Ｈ２（送信データ３７，ｅ（ｒ２×受信したＨ１（ＩＤ），自端末の秘密鍵３６））＋自端末の秘密鍵３６／ｒ１
送信端末３１の署名発行部３４は、その後、送信データ３７及び署名（Ｕ１，Ｕ２，Ｕ３，Ｖ）を受信端末３２に送信（ＳＣ５）して処理を終了する。
【００４３】
受信端末３２の署名検証部３５は、当該送信データ３７及び署名（Ｕ１，Ｕ２，Ｕ３，Ｖ）を送信端末３１から受信する（ＳＤ２）。同部は、署名（Ｕ１，Ｕ２，Ｕ３，Ｖ）の正当性を検証するためのＡＷとＢＷを、自端末の公開表５０からｅ、Ｐ、Ｐｕｂを入力し、また、自端末の利用表４０から送信側利用者の公開鍵を入力して、下記の式に基づいて算出する（ＳＤ３）。同部は、算出したＡＷ及びＢＷを、一旦図示せぬ主記憶装置上の変数域に格納する。
ＡＷ＝ｅ（Ｕ１，Ｖ）
ＢＷ＝ｅ（Ｕ３，Ｈ２（送信データ３７，ｅ（Ｕ２，自端末の秘密鍵３６）））×ｅ（自端末の秘密鍵３６，送信側利用者の公開鍵）
受信端末３２の署名検証部３５は、図示せぬ主記憶装置上の変数域に格納されたＡＷとＢＷを比較する（ＳＤ４）。ＡＷとＢＷが一致する（ＳＤ４でＹ）と、同部は、送信データ３７の使用を開始して（ＳＤ５）、処理を終了する。
【００４４】
使用の開始とは、送信データ３７が購入ソフトウェアであれば当該ソフトウェアのインストールなどである。ＡＷとＢＷが一致しなければ（ＳＤ４でＮ）、同部は、署名（Ｕ１，Ｕ２，Ｕ３，Ｖ）が正当でないとして、送信データ３７を破棄等して処理を終了する。
【００４５】
本実施形態の公開鍵システム１０によれば、鍵発行端末２０と鍵利用端末３０との通信過程で、秘密鍵３６が漏洩するリスクが低い。鍵発行端末２０が、秘密鍵３６を、乱数ｒで暗号化された鍵取得データＳとして送信するからである。更に、鍵発行データＱが乱数ｒで暗号化されているからである。
【００４６】
本実施形態の公開鍵システム１０は、鍵取得データＳ、および、鍵発行データＱの暗号化を低い処理コストで実施できる。鍵発行端末２０は、暗号化、復号化の処理は一切不要で、乱数ｒを用いた暗号化、復号化は鍵利用端末３０でのみ行われるからである。
【００４７】
また、本実施形態の公開鍵システム１０は、秘密鍵３６が発行される正当性を検証することが出来る。鍵発行端末２０が鍵発行データＴを用いて、鍵発行データＱの正当性を検証するからである。さらに、鍵利用端末３０が、鍵取得データＳの正当性を検証するからである。
【００４８】
本実施形態の公開鍵システム１０によれば、正当な受信端末３２のみが受信データ３７の正当性を検証できる。署名（Ｕ１，Ｕ２，Ｕ３，Ｖ）の検証は、送信端末３１側利用者の公開鍵と受信端末３２側利用者の秘密鍵３６の両者を必要とするからである。
【００４９】
本実施形態の公開鍵システム１０は、上記の検証を効率的に行うことが出来る。署名を生成した上で、その署名を暗号化／復号化する必要がないためである。
【００５０】
本発明の第２の実施形態では、鍵発行端末２０は、鍵発行データＴを用いて鍵発行データＱの正当性を検証しない。即ち、同端末は、図５のＳＡ２、ＳＡ３の各ステップを実行しない。更に、鍵利用端末３０は、ＳＢ２、ＳＢ３における鍵発行データＴの生成・送信を行わない。鍵発行端末２０は、ＳＡ１における鍵発行データＴの受信も行わない。
【００５１】
本実施形態の公開鍵システム１０は、秘密鍵３６の生成処理コストを第１の実施形態下よりも下げることが出来る。上述の処理が不要となるからである。
【００５２】
なお、本実施形態では、鍵取得部３３は、図５のＳＢ２において鍵発行データをＱ＝Ｈ１（ＩＤ）／ｒで求めても良い。この場合、同部は、ＳＢ７において秘密鍵３６＝ｒ×Ｓで秘密鍵３６を算出する。
【００５３】
また、本実施形態の公開鍵システム１０は、鍵取得データＳ、および、鍵発行データＱの暗号化を第１の実施形態より低い処理コストで実施できる。鍵発行端末２０と鍵利用端末３０間で秘密鍵３６の漏洩が懸念される鍵利用者端末３０だけが、鍵取得データＳ、および、鍵発行データＱの暗号化を行えばよいからである。鍵発行端末２０は、暗号化、復号化の処理は一切していないので、鍵取得データＳ、および、鍵発行データＱの暗号化の有無が混在していても正常に処理が可能である。
【００５４】
なお、鍵利用端末３０は、必ずしも、署名（Ｕ１，Ｕ２，Ｕ３，Ｖ）を生成したり検証したりしなくても良い。鍵利用端末３０は、秘密鍵３６を通常の暗号化の為に使用してもよい。例えば、送信端末３１が、受信端末３２側利用者の公開鍵で送信データ３７暗号化し、受信端末３２が受信端末３２側利用者の秘密鍵３６で復号化する等の使い方をしても良い。
【００５５】
図７によれば、本発明の鍵利用端末３０は、ＩＤベース公開鍵暗号方式の公開鍵から秘密鍵３６を生成する鍵利用端末３０である。同端末は、公開鍵を入力し、乱数を生成して、乱数及び公開鍵から鍵発行データＱを生成して鍵発行端末２０に送信し、鍵発行端末２０が記憶するマスタ秘密キー２６とＱから鍵発行端末２０が生成した鍵取得データＳを受信して、乱数とＳから秘密鍵３６を生成する、鍵取得部３３を備える。
【図面の簡単な説明】
【００５６】
【図１】図１は、本発明の第１の実施形態にかかる公開鍵システム１０の全体構成を示す。
【図２】図２は、公開表５０の構成を示す。
【図３】図３は、利用表４０の構成を示す。
【図４】図４は、鍵発行端末２０のセットアップ処理のフローチャートである。
【図５】図５は、秘密鍵３６の生成処理のフローチャートである。
【図６】図６は、鍵利用端末３０間での通信処理フローチャートである。
【図７】図７は、本発明の鍵利用端末３０の構成を示す。
【符号の説明】
【００５７】
１０    公開鍵システム
１１    データベース
２０    鍵発行端末
２１    制御部
２６    マスタ秘密キー
３０    鍵利用端末
３１    送信端末
３２    受信端末
３３    鍵取得部
３４    署名発行部
３５    署名検証部
３６    秘密鍵
３７    送信データ
３８    自データ
３９    鍵利用プログラム
４０    利用表
５０    公開表
【図１】
2009232149.tif 000003
【図２】
2009232149.tif 000004
【図３】
2009232149.tif 000005
【図４】
2009232149.tif 000006
【図５】
2009232149.tif 000007
【図６】
2009232149.tif 000008
【図７】
2009232149.tif 000009