(57)【要約】      （修正有）【課題】第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵の信頼性を証明するための装置、方法及びそのためのプログラムを提供する。【解決手段】生成装置は、証明データを受領装置に提供するＳ３０１。証明データを受領した受領装置は、第２の公開鍵が第１の公開鍵の所有者により生成されたものであること、換言すれば第２の公開鍵が第１の公開鍵と親子関係にあることの証明を証明装置に求める証明要求を送信するＳ３０２。証明要求は証明データを含むが、証明データが生成装置から証明装置に直接提供される場合は、証明要求は証明データを含む必要がない。証明装置は、証明要求に応じて、証明データの検証式を計算することによって、受信した証明データを検証するＳ３０３。【選択図】図３
2020195126.tif 000002
【特許請求の範囲】
【請求項１】
第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための方法において、
前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、
前記検証の結果を前記証明要求に対する応答として送信するステップと
を含むことを特徴とする方法。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵ＰＫ１をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵ＰＫ２をａｘ・ｇとし、ｘは第１の公開鍵ＰＫ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。
ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項２】
前記ハッシュ関数は、さらに文字列ｓｔｒを用いて整数を出力し、
前記データｒは、前記乱数若しくは疑似乱数と前記文字列ｓｔｒとを含むことを特徴とする請求項１に記載の方法。
ここで、ｓｔｒは第２の公開鍵ａｘ・ｇの属性を表すデータである。
【請求項３】
前記証明要求は、前記証明データを含むことを特徴とする請求項１又は２に記載の方法。
【請求項４】
コンピュータに、第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための方法を実行させるためのプログラムにおいて、前記方法は、
前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、
前記検証の結果を前記証明要求に対する応答として送信するステップと
を含むことを特徴とするプログラム。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵ＰＫ１をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵ＰＫ２をａｘ・ｇとし、ｘは第１の公開鍵ＰＫ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。
ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項５】
第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための装置において、
前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求を受信し、
前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証し、
前記検証の結果を前記証明要求に対する応答として送信することを特徴とする装置。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵ＰＫ１をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵ＰＫ２をａｘ・ｇとし、ｘは第１の公開鍵ＰＫ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。
ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項６】
第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための方法において、
前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、
前記検証の結果を前記証明要求に対する応答として送信するステップと
を含むことを特徴とする方法。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇ、第１の識別子ＩＤ１をａ・ｇ、第２の整数をａｘ、第２の識別子ＩＤ２をａｘ・ｇとし、ｘは第１の識別子ＩＤ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。
ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項７】
コンピュータに、第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための方法を実行させるためのプログラムにおいて、前記方法は、
前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、
前記検証の結果を前記証明要求に対する応答として送信するステップと
を含むことを特徴とするプログラム。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇ、第１の識別子ＩＤ１をａ・ｇ、第２の整数をａｘ、第２の識別子ＩＤ２をａｘ・ｇとし、ｘは第１の識別子ＩＤ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。
ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項８】
第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための装置において、
前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求を受信し、
前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証し、
前記検証の結果を前記証明要求に対する応答として送信することを特徴とする装置。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇ、第１の識別子ＩＤ１をａ・ｇ、第２の整数をａｘ、第２の識別子ＩＤ２をａｘ・ｇとし、ｘは第１の識別子ＩＤ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。
ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一態様は、公開鍵の信頼性を証明するための装置、方法及びそのためのプログラムに関する。
【背景技術】
【０００２】
インターネット上の経済活動が拡がりを見せる中で、そうした活動の主体を信頼性をもって識別することの必要性が高まっている。
【０００３】
インターネット上で送信されるデータの信頼性を保証するためには、電子証明書が用いられることが多い。電子証明書は、送信されるデータに対して電子署名を行うための秘密鍵に対応する公開鍵の所有者を認証するものであり、信頼できる認証局によって発行される。データの受信者は、電子証明書の正当性を確認するとともに公開鍵により電子署名を検証する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
今後、インターネット上で行われるやりとりに確実な信頼性が求められる場面は増加することが見込まれ、それに伴い、用途に応じたさまざまな形の電子認証に対する需要の増大が想定される。
【０００５】
しかしながら、現在の認証局を中心とした公開鍵暗号方式では、柔軟な対応が容易ではない。
【０００６】
本発明は、このような問題点に鑑みてなされたものであり、その第１の目的は、信頼できる第１の秘密鍵及び第１の公開鍵により構成される第１の鍵ペアに関連づけて第２の秘密鍵及び第２の公開鍵により構成される第２の鍵ペアを生成する装置、方法及びそのためのプログラムを提供することにある。
【０００７】
また、本発明の第２の目的は、第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵の信頼性を証明するための装置、方法及びそのためのプログラムを提供することにある。
【０００８】
また、本発明の第３の目的は、第１の鍵ペアに関連づけて生成された第２の鍵ペアを用いた電子署名を実行又は検証するための装置、方法及びそのためのプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
このような目的を達成するために、本発明の第１の態様は、第１の秘密鍵及び第１の公開鍵により構成される第１の鍵ペアに関連づけて第２の秘密鍵及び第２の公開鍵により構成される第２の鍵ペアを生成する方法において、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵をａｘ・ｇとして、整数ｘを、第１の公開鍵ａ・ｇ及びデータｒを用いて整数を出力するハッシュ関数により決定するステップと、第１の秘密鍵ａ（ａは整数）に前記ｘを乗じて第２の秘密鍵ａｘを算出して記憶するステップと、前記第１の公開鍵ａ及び前記ｘに基づいて前記第２の公開鍵ａｘ・ｇを算出して記憶するステップとを含むことを特徴とする。ここで、ｒは乱数若しくは疑似乱数又は乱数若しくは疑似乱数を含むデータである。
【００１０】
本発明の第２の態様は、第１の態様において、前記巡回群Ｇの位数は素数であることを特徴とする。
【００１１】
本発明の第３の態様は、第１又は第２の態様において、前記ハッシュ関数は、さらに文字列ｓｔｒを用いて整数を出力することを特徴とする。ここで、ｓｔｒは第２の公開鍵ａｘ・ｇの属性を表すデータである。
【００１２】
本発明の第４の態様は、第３の態様において、前記ｓｔｒは、前記第２の公開鍵ａｘ・ｇの有効期限を表すことを特徴とする。
【００１３】
本発明の第５の態様は、第３の態様において、前記データｒは、前記乱数若しくは疑似乱数と前記文字列ｓｔｒとを含むことを特徴とする。
【００１４】
本発明の第６の態様は、第１から第５のいずれかの態様において、前記第２の公開鍵ａｘ・ｇを前記第２の鍵ペアを生成した第１の装置以外の第２の装置に提供するステップをさらに含むことを特徴とする。
【００１５】
本発明の第７の態様は、第６の態様において、前記ｓｔｒは、前記第２の公開鍵ａｘ・ｇの提供を受ける受領者のＩＤを表すことを特徴とする。
【００１６】
本発明の第８の態様は、第６の態様において、前記ｓｔｒは、前記第２の公開鍵ａｘ・ｇの提供を受ける受領者の前記第１の公開鍵ａ・ｇの所有者に対する関係を表すことを特徴とする。
【００１７】
本発明の第９の態様は、コンピュータに、第１の秘密鍵及び第１の公開鍵により構成される第１の鍵ペアに関連づけて第２の秘密鍵及び第２の公開鍵により構成される第２の鍵ペアを生成する方法を実行させるためのプログラムにおいて、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵をａｘ・ｇとして、前記方法は、整数ｘを、第１の公開鍵ａ・ｇ及びデータｒを用いて整数を出力するハッシュ関数により決定するステップと、第１の秘密鍵ａ（ａは整数）に前記ｘを乗じて第２の秘密鍵ａｘを算出して記憶するステップと、前記第１の公開鍵ａ及び前記ｘに基づいて前記第２の公開鍵ａｘ・ｇを算出して記憶するステップとを含むことを特徴とする。ここで、ｒは乱数若しくは疑似乱数又は乱数若しくは疑似乱数を含むデータである。
【００１８】
本発明の第１０の態様は、第１の秘密鍵及び第１の公開鍵により構成される第１の鍵ペアに関連づけて第２の秘密鍵及び第２の公開鍵により構成される第２の鍵ペアを生成する装置において、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵をａｘ・ｇとして、整数ｘを、第１の公開鍵ａ・ｇ及びデータｒを用いて整数を出力するハッシュ関数により決定し、第１の秘密鍵ａ（ａは整数）に前記ｘを乗じて第２の秘密鍵ａｘを算出して記憶し、前記第１の公開鍵ａ及び前記ｘに基づいて前記第２の公開鍵ａｘ・ｇを算出して記憶することを特徴とする。ここで、ｒは乱数若しくは疑似乱数又は乱数若しくは疑似乱数を含むデータである。
【００１９】
本発明の第１１の態様は、第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための方法において、前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求を受信するステップと、前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、前記検証の結果を前記証明要求に対する応答として送信するステップとを含むことを特徴とする。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵ＰＫ１をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵ＰＫ２をａｘ・ｇとし、ｘは第１の公開鍵ＰＫ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【００２０】
本発明の第１２の態様は、第１１の態様において、前記ハッシュ関数は、さらに文字列ｓｔｒを用いて整数を出力し、前記データｒは、前記乱数若しくは疑似乱数と前記文字列ｓｔｒとを含むことを特徴とする。ここで、ｓｔｒは第２の公開鍵ａｘ・ｇの属性を表すデータである。
【００２１】
本発明の第１３の態様は、第１１の態様において、前記証明要求は、前記第２の公開鍵ＰＫ２を含むことを特徴とする。
【００２２】
本発明の第１４の態様は、第１１の態様において、前記証明要求は、前記第１の公開鍵ＰＫ１を含むことを特徴とする。
【００２３】
本発明の第１５の態様は、第１１から第１４のいずれかの態様において、前記証明要求は、前記証明データを含むことを特徴とする。
【００２４】
本発明の第１６の態様は、コンピュータに、第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための方法を実行させるためのプログラムにおいて、前記方法は、前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求を受信するステップと、前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、前記検証の結果を前記証明要求に対する応答として送信するステップとを含むことを特徴とする。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵ＰＫ１をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵ＰＫ２をａｘ・ｇとし、ｘは第１の公開鍵ＰＫ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【００２５】
本発明の第１７の態様は、第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための装置において、前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求を受信し、前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証し、前記検証の結果を前記証明要求に対する応答として送信することを特徴とする。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇ、第１の公開鍵ＰＫ１をａ・ｇ、第２の秘密鍵をａｘ、第２の公開鍵ＰＫ２をａｘ・ｇとし、ｘは第１の公開鍵ＰＫ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【００２６】
本発明の第１８の態様は、第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための方法において、前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求を受信するステップと、前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、前記検証の結果を前記証明要求に対する応答として送信するステップとを含むことを特徴とする。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇ、第１の識別子ＩＤ１をａ・ｇ、第２の整数をａｘ、第２の識別子ＩＤ２をａｘ・ｇとし、ｘは第１の識別子ＩＤ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【００２７】
本発明の第１９の態様は、コンピュータに、第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための方法を実行させるためのプログラムにおいて、前記方法は、前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求を受信するステップと、前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証するステップと、前記検証の結果を前記証明要求に対する応答として送信するステップとを含むことを特徴とする。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇ、第１の識別子ＩＤ１をａ・ｇ、第２の整数をａｘ、第２の識別子ＩＤ２をａｘ・ｇとし、ｘは第１の識別子ＩＤ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【００２８】
本発明の第２０の態様は、第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための装置において、前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求を受信し、前記証明要求に応じて、式（１）で表される検証式を計算してデータｒを含む証明データを検証し、前記検証の結果を前記証明要求に対する応答として送信することを特徴とする。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇ、第１の識別子ＩＤ１をａ・ｇ、第２の整数をａｘ、第２の識別子ＩＤ２をａｘ・ｇとし、ｘは第１の識別子ＩＤ１及びデータｒを用いて整数を出力するハッシュ関数で決定されるものとする。ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【発明の効果】
【００２９】
本発明の一態様によれば、第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵が第１の鍵ペアを構成する第１の公開鍵の子鍵であることを数学的に証明可能に第２の鍵ペアを生成することによって、認証局を必要とすることなく、電子署名可能な第２の鍵ペアの生成が可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１の実施形態にかかる、第１の鍵ペアから第２の鍵ペアを生成する方法の流れ図である。
【図２】本発明の第２の実施形態にかかる、第１の鍵ペアから生成された第２の鍵ペアを構成する第２の公開鍵の信頼性を証明するためのシステムを示す図である。
【図３】本発明の第２の実施形態にかかる、第１の鍵ペアから生成された第２の鍵ペアを構成する第２の公開鍵の信頼性を証明するための方法の流れの一例を示す図である。
【発明を実施するための形態】
【００３１】
以下、図面を参照して本発明の実施形態を詳細に説明する。
（第１の実施形態）  
【００３２】
図１に、本発明の第１の実施形態にかかる第１の鍵ペアから第２の鍵ペアを生成するための方法の流れ図を示す。鍵ペアの生成は、以下で説明する処理を実行可能な任意の装置において行うことができ、例示として、スマートフォン、タブレット等の携帯機器とすることができる。第２の鍵ペアの生成時にインターネット等のコンピュータ・ネットワークに接続していることは必ずしも必要ではない。
【００３３】
まず、第１の鍵ペアとして、事前に生成された第１の秘密鍵ａ及び第１の公開鍵ａ・ｇを読み出す（Ｓ１０１）。ここで、ａは整数である。次に、整数ｘを決定する（Ｓ１０２）。ここで、整数ｘは、整数値を返すハッシュ関数ｈ（ａ・ｇ，ｓｔｒ，ｒ）の値として決定する。文字列ｓｔｒは、生成される第２の公開鍵の属性を表し、数ｒは、乱数又は疑似乱数である。そして、第２の鍵ペアとして、ｘを乗じて第２の秘密鍵ａｘ及び第２の公開鍵ａｘ・ｇを計算し、記憶する（Ｓ１０３）。
【００３４】
文字列ｓｔｒは、第２の公開鍵ａｘ・ｇを生成する際に第１の公開鍵ａ・ｇの所有者が当該生成を行う装置上で指定してもよく、あるいはデフォルトの値を取るようにしてもよい。当該装置の記憶部又は当該装置からアクセス可能な記憶媒体又は記憶装置には、ｇの値又はその決定手順、ａの値又はその決定手順、ハッシュ関数ｈ、文字列ｓｔｒの値又はその決定手順、数ｒの値又はその決定手順、第１の鍵ペアの決定手順、第２の鍵ペアの決定手順を定めたプログラムが記憶されており、当該プログラムが実行されることで上記処理が実現される。特に、当該プログラムが実行されることによって、上記ハッシュ関数ｈが読み出されて整数ｘが決定される。
【００３５】
第２の秘密鍵ａｘ及び第２の公開鍵ａｘ・ｇは、第１の公開鍵ａ・ｇを引数として定めるｘに基づくため、第１の鍵ペアに関連づけて生成される。加えて、文字列ｓｔｒを任意の文字列とする場合のほか、第２の鍵ペアの有効期限の日付、第２の公開鍵の受領者のメールアドレス等のＩＤ、第２の公開鍵の受領者の第１の公開鍵の所有者に対する関係など、第２の公開鍵の属性を表す文字列とすることが好ましい（第２の公開鍵の受領者については後述する。）。上述のハッシュ関数ｈの例では、ｓｔｒとｒを別の引数としたが、たとえばこれらを結合して１つの引数としたり、さらに第１の公開鍵ａ・ｇと文字列ｓｔｒ及び数ｒの一方又は両方とを結合して引数としてもよく、ハッシュ関数ｈは、第１の公開鍵ａ・ｇ、文字列ｓｔｒ及び数ｒを用いて整数を出力するハッシュ関数を広く包含する。
【００３６】
また、文字列ｓｔｒは、必ずしも用いなければならないものではなく、ハッシュ関数ｈを第１の公開鍵ａ・ｇ及び数ｒを用いて整数を出力するハッシュ関数とより広く捉えてもよい。ここで、ｒはより広く、乱数若しくは疑似乱数を含むデータとすることができ、具体的には、乱数又は疑似乱数に加えて文字列ｓｔｒを含むデータとしてもよい。一例として、乱数又は疑似乱数と文字列ｓｔｒとを結合したデータとすることができる。
【００３７】
生成元ｇの位数は素数であることが好ましく、生成元により生成される巡回群Ｇの元の数は一例として３２バイト、すなわち２５６ビット程度以上であることが好ましい。ここで、巡回群Ｇにおける演算は加法的に記述しており、たとえば、生成元ｇをａ回繰り返し加算する演算をａ・ｇを表記し、「ａを生成元ｇに乗じる」と呼ぶ。なお、ａｘのように整数の集合又は部分集合の元同士の乗算も本明細書において表記として用いられるが、これは巡回加法群における乗算とは異なるものであることを念のため付言する。本明細書においては、巡回群Ｇを加法群として表記するが、巡回乗法群として表記しても本発明と等価であってその技術的範囲に属することも念のため付言する。
【００３８】
第１の公開鍵ａ・ｇは、本実施形態において、従来の信頼できる認証局が発行した電子証明書によって、その所有者が認証されているものとすることができる。あるいは、認証局による認証以外の何らかの形で信頼性が付与されているものとすることができる。ここで、公開鍵の所有者とは、当該公開鍵に対応する秘密鍵にアクセス可能な者を言う。
【００３９】
第１の鍵ペアを用いて任意のデータｍに対する電子署名を行う場合の暗号方式としては、現在公知であり、今後公知となる任意のものを用いればよい。
【００４０】
ここで、上述の説明では、事前に第１の秘密鍵ａ及び第１の公開鍵ａ・ｇが決定され、記憶されているものとしているが、第１の秘密鍵ａを事前に決定しておき、必要に応じて第１の公開鍵ａ・ｇを計算してもよい。第１の秘密鍵ａは、バックアップのために外部の記憶媒体又は記憶装置に記憶されることは考えられるが、原則として外部に開示されることのないデータである。
【００４１】
本実施形態にかかる第２の鍵ペアの生成の一特徴は、第２の秘密鍵ａｘが第１の秘密鍵ａと同様に整数の集合の元であり、第２の公開鍵ａｘ・ｇが第１の公開鍵ａ・ｇと同様に生成元ｇが生成する巡回群Ｇの元であって、第２の鍵ペアが第１の鍵ペアと同一の形式（ｆｏｒｍａｔ）であることから、第２の鍵ペアから第３の鍵ペア、第３の鍵ペアから第４の鍵ペアのように繰り返し子鍵ペアの生成が可能である点が挙げられる。
【００４２】
なお、「××のみに基づいて」、「××のみに応じて」、「××のみの場合」というように「のみ」との記載がなければ、本明細書においては、付加的な情報も考慮し得ることが想定されていることに留意されたい。また、一例として、「ａの場合にｂする」という記載は、明示した場合を除き、「ａの場合に常にｂする」ことを必ずしも意味しないことに留意されたい。
【００４３】
また、念のため、なんらかの方法、プログラム、端末、装置、サーバ又はシステム（以下「方法等」）において、本明細書で記述された動作と異なる動作を行う側面があるとしても、本発明の各態様は、本明細書で記述された動作のいずれかと同一の動作を対象とするものであり、本明細書で記述された動作と異なる動作が存在することは、当該方法等を本発明の各態様の範囲外とするものではないことを付言する。
【００４４】
（第２の実施形態）  
図２に、本発明の第２の実施形態にかかる、第１の鍵ペアから生成された第２の鍵ペアを構成する第２の公開鍵の信頼性を証明するためのシステムを示す。
【００４５】
システム２００は、第１の鍵ペアから第２の鍵ペアを生成して第２の鍵ペアを構成する第２の公開鍵を送信する送信装置２１０と、第２の公開鍵を受領する受領装置２２０と、第２の公開鍵の信頼性を証明する証明装置２３０とを備える。送信装置２１０、受信装置２２０及び証明装置２３０は、互いにコンピュータ・ネットワークを介して通信可能である。
【００４６】
証明装置２３０は、通信インターフェースなどの通信部２３１と、プロセッサ、ＣＰＵ等の処理部２３２と、メモリ、ハードディスク等の記憶装置又は記憶媒体を含む記憶部２３３とを備えるコンピュータであり、所定のプログラムを実行することによって、以下で説明する各処理を実現することができる。証明装置２３０は、１又は複数の装置ないしサーバを含むことがあり、また当該プログラムは、１又は複数のプログラムを含むことがあり、また、コンピュータ読み取り可能な記憶媒体に記録して非一過性のプログラムプロダクトとすることができる。送信装置２１０及び受領装置２２０については図示しないものの、同様のハードウェアの構成を有することができる。
【００４７】
送信装置２１０において、第１の実施形態で説明した方法によって生成された第２の鍵ペアを構成する第２の公開鍵ａｘ・ｇは、それを受領した受領装置２２０においてその信頼性を確認することが出来なければ、その所有者を識別する役割を果たすことができない。そこで、本実施形態において、受信装置２２０は、証明装置２３０に対して第２の公開鍵ａｘ・ｇの信頼性の証明を要求する。以下、第１の公開鍵をＰＫ１、第２の公開鍵をＰＫ２とも表記する。
【００４８】
具体的には、証明装置２３０は、受領装置２２０を介して間接的に又は送信装置２１０から直接的に、第２の公開鍵ＰＫ２に加えて、証明データとして文字列ｓｔｒ及び数ｒを受け取る。証明装置２３０は、システム２００において何らかの形で既知でアクセス可能な第１の公開鍵ＰＫ１を用い、証明データの検証式ＰＫ２＝ｘＰＫ１を計算して両辺が一致することに基づいて、第２の公開鍵ＰＫ２が第１の公開鍵ＰＫ１の所有者により生成されたものであることを証明することができる。ここで、一例として第１の実施形態で説明したように、証明装置２３０は、ｘ＝ｈ（ａ・ｇ，ｓｔｒ，ｒ）によりｘを計算することができる。証明装置２３０の記憶部２３１又は証明装置２３０からアクセス可能な記憶媒体又は記憶装置には、証明要求を受信した際の手順を定めたプログラムが記憶されており、当該プログラムでは、特に上記検証式による検証手順が定められており、これが実行されることによって、当該検証式による検証が行われる。
【００４９】
整数ｘはハッシュ関数ｈの値であり、その値を与える文字列ｓｔｒ及び数ｒを導き出すことは現実的に著しく困難であることから、証明装置２３０は、上記検証式の両辺が一致することで、文字列ｓｔｒ及び数ｒの提供者は第２の公開鍵ＰＫ２を生成した者であることが証明される。この目的のためには、文字列ｓｔｒは必ずしも必要ではなく、ハッシュ関数ｈは、第１の公開鍵ＰＫ１及びデータｒに基づいて整数を出力する関数としてもよい。
【００５０】
なお、証明装置２３０は受領装置２２０と同一としてもよく、この場合、第２の公開鍵ＰＫ２の信頼性を自ら証明することができる。また、証明装置２３０は送信装置２１０と同一としてもよく、この場合、第２の公開鍵ＰＫ２の生成者が自らその信頼性を証明することとなる。また、受領装置２２０は送信装置２１０と同一としてもよく、この場合、第１の公開鍵ＰＫ１の所有者が状況に応じてそれとは異なる第２の公開鍵ＰＫ２を用い、必要に応じてこれらの鍵の関係を証明装置２３０において証明することができる。
【００５１】
図３に、証明装置が証明データを生成装置から受け取る例において、第２の公開鍵の信頼性を証明する方法の流れを示す。上述の説明においては、送信装置という用語を用いたが、より一般化して生成装置という用語を図３においては用いる。
【００５２】
生成装置２１０は、証明データを受領装置２２０に提供する（Ｓ３０１）。受領装置２２０への与え方として、コンピュータ・ネットワークを介した受領装置２２０への送信、証明データを記憶した記憶媒体の受領装置２２０への接続、生成装置２１０の表示画面に表示された証明データの受領装置２２０への入力、生成装置２１０の表示画面に表示された証明データ又はこれに対応するデータの受領装置２２０の撮像素子による読み取り等のさまざまな態様が挙げられる。生成装置２１０から受領装置２２０又はその他の装置への第１の公開鍵ＰＫ１及び第２の公開鍵ＰＫ２の提供についても、同様にさまざまな態様が挙げられる。
【００５３】
証明データを受領した受領装置２２０は、第２の公開鍵ＰＫ２が第１の公開鍵ＰＫ１の所有者により生成されたものであること、換言すれば第２の公開鍵ＰＫ２が第１の公開鍵ＰＫ１と親子関係にあることの証明を証明装置２３０に求める証明要求を送信する（Ｓ３０２）。
【００５４】
証明要求は、この例では証明データを含むが、証明データが生成装置２１０から証明装置２３０に直接提供される例においては含む必要がない。上述したように、生成装置２１０が証明装置２３０を兼ねる場合においては、「提供」は自らに対する提供を含む。また、受領装置２２０が生成装置２１０と同一である場合においても、「提供」は自らに対する提供を含む。加えて、「証明要求」は、生成装置２１０又は受領装置２２０が証明装置２３０を兼ねる場合においては、自らに対する要求を含む。
【００５５】
また、証明要求は、証明対象である親子関係における子鍵である第２の公開鍵ＰＫ２を含むことができ、また、当該親子関係における親鍵である第１の公開鍵ＰＫ１を含むことができる。親鍵及び子鍵の少なくとも一方は、生成装置２１０から直接的又は間接的に証明装置２３０に提供して証明装置２３０に予め記憶しておき、証明要求における明示的な指定を不要とすることができる。
【００５６】
証明装置２３０は、証明要求に応じて、証明データの検証式を計算することによって、当該証明データを検証する（Ｓ３０３）。
【００５７】
そして、証明装置２３０は、検証結果を受領装置２２０からの証明要求に対する応答として、送信する（Ｓ３０４）。受領装置２２０が証明装置２３０を兼ねる場合においては、自らの記憶装置又は記憶媒体に検証結果を記憶することとなるが、このような処理を自らに対する「送信」の概念に含めてもよい。
【００５８】
上述の説明では、第１の公開鍵ＰＫ１及び第２の公開鍵ＰＫ２を「公開鍵」として位置付けてきたが、インターネット上で何らかの活動を行う主体の「識別子」としても位置付けることができる。具体的には、第１の識別子ＩＤ１に基づいて又は第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を評価する装置、方法及びそのためのプログラムとして、本発明の精神を解することができる。
【００５９】
（第３の実施形態）  
送信装置２１０は、受領装置２２０に対して、第２の公開鍵ａｘ・ｇに加えて第２の秘密鍵ａｘを渡すこともできる。第２の秘密鍵ａｘの提供の態様としては、その他のデータと同様にさまざまな態様が考えられる。この場合、受領装置２２０は、第２の鍵ペアを用いてデータｍに対する電子署名を行うことが可能となる。そして、送信装置２１０から証明データを受け取っていれば、必要に応じて、電子署名の受信者に対して証明データをデータｍ及びそれに対する署名ｓとともに渡して、当該受信者は、当該電子署名が第１の公開鍵ａ・ｇの所有者により生成された第２の鍵ペアによるものであることを示すことができる。生成装置２１０が受領装置２２０を兼ねる場合、つまり自ら第１の公開鍵ａ・ｇの所有者が自ら第２の公開鍵ａｘ・ｇを用いる場合には、当該所有者が署名者となる。
【００６０】
受領装置２２０は、ここでは署名装置として機能しており、データｍに署名ｓが付加された署名済みデータの一部として、又は当該署名済みデータとは別データとして証明データ、そして必要に応じて第１の公開鍵ａ・ｇ及び第２の公開鍵ａｘ・ｇの少なくとも一方を他の装置に送信する。
【００６１】
また、受領装置２２０は、第２の秘密鍵ａｘの提供を受けている場合、第２の鍵ペアのさらに子鍵ペアとして第３の秘密鍵ａｘｙ及び第３の公開鍵ａｘｙ・ｇから構成される第３の鍵ペアを生成することが可能である。ここで整数ｙはハッシュ関数ｈ（ａｘ・ｇ，ｓｔｒ，ｒ）の値として定めることができる。
【００６２】
以上の説明において、各実施形態において記述したさまざまな変形形態は他の実施形態においても同様に適用可能であることを付言する。
【符号の説明】
【００６３】
２００  システム
２１０  送信装置
２２０  受領装置
２３０  証明装置
２３１  通信部
２３２  処理部
２３３  記憶部
【図１】
2020195126.tif 000003
【図２】
2020195126.tif 000004
【図３】
2020195126.tif 000005
【手続補正書】
【提出日】令和2年2月12日(2020.2.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための方法において、コンピュータが、
前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求であって、前記第２の公開鍵ＰＫ２及び証明データを含む証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される式を計算するステップと、
前記計算の結果を前記証明要求に対する応答として送信するステップと
を含み、
前記計算は、
アクセス可能な第１の公開鍵ＰＫ１及び前記証明データに含まれるデータｒをハッシュ関数に入力して整数ｘを出力するステップと、
前記整数ｘを用いて前記検証式の両辺が一致するか否かを計算するステップと
を含むことを特徴とする方法。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇとし、前記第１の公開鍵ＰＫ１はａ・ｇ、前記第２の公開鍵ＰＫ２はａｘ・ｇ、前記ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項２】
前記データｒは、前記乱数若しくは疑似乱数と前記第２の公開鍵ＰＫ２の属性を表すデータである文字列ｓｔｒとを含むことを特徴とする請求項１に記載の方法。
【請求項３】
コンピュータに、第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための方法を実行させるためのプログラムにおいて、前記方法は、
前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求であって、前記第２の公開鍵ＰＫ２及び証明データを含む証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される式を計算するステップと、
前記計算の結果を前記証明要求に対する応答として送信するステップと
を含み、
前記計算は、
アクセス可能な第１の公開鍵ＰＫ１及び前記証明データに含まれるデータｒをハッシュ関数に入力して整数ｘを出力するステップと、
前記整数ｘを用いて前記検証式の両辺が一致するか否かを計算するステップと
を含むことを特徴とするプログラム。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇとし、前記第１の公開鍵ＰＫ１はａ・ｇ、前記第２の公開鍵ＰＫ２はａｘ・ｇ、前記ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項４】
第１の秘密鍵及び第１の公開鍵ＰＫ１により構成される第１の鍵ペアに関連づけて生成された第２の鍵ペアを構成する第２の公開鍵ＰＫ２の信頼性を証明するための装置において、
前記第２の公開鍵ＰＫ２の信頼性の証明を求める証明要求であって、前記第２の公開鍵ＰＫ２及び証明データを含む証明要求を受信し、
前記証明要求に応じて、式（１）で表される式を計算し、
前記計算の結果を前記証明要求に対する応答として送信し、
前記計算は、
アクセス可能な第１の公開鍵ＰＫ１及び前記証明データに含まれるデータｒをハッシュ関数に入力して整数ｘを出力し、前記整数ｘを用いて前記検証式の両辺が一致するか否かを計算することを特徴とする装置。
ＰＫ２＝ｘＰＫ１                                （１）
ここで、第１の秘密鍵をａ、巡回群Ｇの生成元をｇとし、前記第１の公開鍵ＰＫ１はａ・ｇ、前記第２の公開鍵ＰＫ２はａｘ・ｇ、前記ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項５】
第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための方法において、コンピュータが、
前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求であって、前記第２の識別子ＩＤ２及び証明データを含む証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される検証式を計算するステップと、
前記計算の結果を前記証明要求に対する応答として送信するステップと
を含み、
前記計算は、
アクセス可能な第１の識別子ＩＤ１及び前記証明データに含まれるデータｒをハッシュ関数に入力して整数ｘを出力するステップと、
前記整数ｘを用いて前記検証式の両辺が一致するか否かを計算するステップと
を含むことを特徴とする方法。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇとし、前記第１の識別子ＩＤ１はａ・ｇ、前記第２の識別子ＩＤ２はａｘ・ｇ、前記ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項６】
コンピュータに、第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための方法を実行させるためのプログラムにおいて、前記方法は、
前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求であって、前記第２の識別子ＩＤ２及び証明データを含む証明要求を受信するステップと、
前記証明要求に応じて、式（１）で表される式を計算するステップと、
前記計算の結果を前記証明要求に対する応答として送信するステップと
を含み、
前記計算は、
アクセス可能な第１の識別子ＩＤ１及び前記証明データに含まれるデータｒをハッシュ関数に入力して整数ｘを出力するステップと、
前記整数ｘを用いて前記検証式の両辺が一致するか否かを計算するステップと
を含むことを特徴とするプログラム。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇとし、前記第１の識別子ＩＤ１はａ・ｇ、前記第２の識別子ＩＤ２はａｘ・ｇ、前記ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。
【請求項７】
第１の識別子ＩＤ１に関連づけて生成された第２の識別子ＩＤ２の信頼性を証明するための装置において、
前記第２の識別子ＩＤ２の信頼性の証明を求める証明要求であって、前記第２の識別子ＩＤ２及び証明データを含む証明要求を受信し、
前記証明要求に応じて、式（１）で表される式を計算し、
前記計算の結果を前記証明要求に対する応答として送信し、
前記計算は、
アクセス可能な第１の識別子ＩＤ１及び前記証明データに含まれるデータｒをハッシュ関数に入力して整数ｘを出力し、前記整数ｘを用いて前記検証式の両辺が一致するか否かを計算することを特徴とする装置。
ＩＤ２＝ｘＩＤ１                                （１）
ここで、第１の整数をａ、巡回群Ｇの生成元をｇとし、前記第１の識別子ＩＤ１はａ・ｇ、前記第２の識別子ＩＤ２はａｘ・ｇ、前記ｒは乱数若しくは疑似乱数又は前記乱数若しくは疑似乱数を含むデータである。