(57)【要約】【課題】  多数の暗号処理を実行する場合でも、迅速に暗号処理を開始できるようにする。【解決手段】  疑似乱数の生成を行う場合に、自装置においてその疑似乱数の生成に必要なエントロピーが蓄積されるまでの時間（Ｓ１５）と、外部の装置からその疑似乱数の生成に必要なエントロピーを取得するのに要する時間（Ｓ１４）との比較に基づき、自装置で蓄積するエントロピーをその疑似乱数の生成に用いるか、上記外部の装置からエントロピーを取得してその疑似乱数の生成に用いるかを決定する（Ｓ１６）ようにした。【選択図】    図４
2016061915.tif 000002
【特許請求の範囲】
【請求項１】
エントロピー源から得られる情報に基づきエントロピーを蓄積するエントロピー蓄積手段と、
疑似乱数の生成を行う場合に、前記エントロピー蓄積手段に該疑似乱数の生成に必要なエントロピーが蓄積されるまでの時間と、外部の装置から該疑似乱数の生成に必要なエントロピーを取得するのに要する時間との比較に基づき、前記エントロピー蓄積手段が蓄積するエントロピーを該疑似乱数の生成に用いるか、前記外部の装置からエントロピーを取得して該疑似乱数の生成に用いるかを決定する決定手段とを備える情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記他の装置からエントロピーを取得する場合に、等価安全性で比較して取得するエントロピーの量以上の鍵長の暗号鍵を用いて暗号化された通信経路で該エントロピーを取得するエントロピー取得手段を備えることを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記外部の装置は、当該情報処理装置に予め登録された装置であって、
当該情報処理装置と前記外部の装置との双方に、前記エントロピー取得手段がエントロピーの取得に用いる通信経路を形成するための相互に対応する暗号鍵が予め登録されていることを特徴とする情報処理装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の情報処理装置であって、
前記エントロピー蓄積手段は、所定の最大量のエントロピーを蓄積するまでは、常時エントロピーの蓄積を行うことを特徴とする情報処理装置。
【請求項５】
請求項１乃至４のいずれか一項に記載の情報処理装置であって、
疑似乱数生成手段と、
疑似乱数の生成を行う場合に、前記疑似乱数生成手段により該疑似乱数を生成するか、外部の装置に疑似乱数を生成させるかを選択する選択手段とを備えることを特徴とする情報処理装置。
【請求項６】
請求項５に記載の情報処理装置であって、
前記選択手段は、前記疑似乱数生成手段が使用可能な乱数生成アルゴリズムの脆弱性について所定の照会先に照会した結果に基づき前記選択を行うことを特徴とする情報処理装置。
【請求項７】
請求項５又は６に記載の情報処理装置であって、
前記選択手段が前記外部の装置に疑似乱数を生成させることを選択した場合に、等価安全性で比較して、該疑似乱数の生成に必要なエントロピーの量以上の鍵長の暗号鍵を用いて暗号化された通信経路で、前記外部装置により生成された疑似乱数を取得する疑似乱数取得手段を備えることを特徴とする情報処理装置。
【請求項８】
第１情報処理装置と第２情報処理装置とを備える情報処理システムであって、
前記第１情報処理装置が、
エントロピー源から得られる情報に基づきエントロピーを蓄積するエントロピー蓄積手段と、
疑似乱数の生成を行う場合に、前記エントロピー蓄積手段に該疑似乱数の生成に必要なエントロピーが蓄積されるまでの時間と、前記第２情報処理装置から該疑似乱数の生成に必要なエントロピーを取得するのに要する時間との比較に基づき、前記エントロピー蓄積手段が蓄積するエントロピーを該疑似乱数の生成に用いるか、前記前記第２情報処理装置からエントロピーを取得して該疑似乱数の生成に用いるかを決定する決定手段とを備え、
前記第２情報処理装置が、
エントロピー源から得られる情報に基づきエントロピーを蓄積するエントロピー蓄積手段と、
該エントロピー蓄積手段が蓄積したエントロピーを前記第１情報処理装置に送信するエントロピー送信手段とを備えることを特徴とする情報処理システム。
【請求項９】
情報処理装置が、
エントロピー源から得られる情報に基づきエントロピーを蓄積するエントロピー蓄積手順と、
疑似乱数の生成を行う場合に、前記エントロピー蓄積手順により該疑似乱数の生成に必要なエントロピーが蓄積されるまでの時間と、外部の装置から該疑似乱数の生成に必要なエントロピーを取得するのに要する時間との比較に基づき、前記エントロピー蓄積手順で蓄積するエントロピーを該疑似乱数の生成に用いるか、前記外部の装置からエントロピーを取得して該疑似乱数の生成に用いるかを決定する決定手順とを実行することを特徴とする情報処理方法。
【請求項１０】
コンピュータを、
エントロピー源から得られる情報に基づきエントロピーを蓄積するエントロピー蓄積手段と、
疑似乱数の生成を行う場合に、前記エントロピー蓄積手段に該疑似乱数の生成に必要なエントロピーが蓄積されるまでの時間と、外部の装置から該疑似乱数の生成に必要なエントロピーを取得するのに要する時間との比較に基づき、前記エントロピー蓄積手段が蓄積するエントロピーを該疑似乱数の生成に用いるか、前記外部の装置からエントロピーを取得して該疑似乱数の生成に用いるかを決定する決定手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置、情報処理システム、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、情報処理装置において、セキュリティの面から暗号技術は非常に重要視されている。
この暗号技術において、セキュリティ強度を担保する構成要素として、乱数がある。たとえば乱数を用いて暗号鍵を生成することがある。このとき、容易に乱数値が推定できるようだと、暗号の強度は著しく低下する。
【０００３】
乱数は、乱数シードを疑似乱数生成器（ＰＲＮＧ）にかけて得ることができる。また、暗号技術の強度を保持するために必要な乱数シードの品質を示す値をエントロピーといい、乱数生成において、規定のエントロピー量を満たす乱数シードを利用する必要があることが、既に知られている。そして、このエントロピーは、例えば、ネットワークから抽出したノイズや量子論的なエントロピー源から得られる。
【０００４】
また、疑似乱数生成器には、様々なアルゴリズムのものがある。例えば、Hash_DRBG、HMAC_DRBG、CTR_DRBG、Dual_EC_DRBG等であり、それぞれのアルゴリズムについて日々、脆弱性の検証が行われている。
また、これらとは別に、特許文献１には、画像形成装置が実行する印刷ジョブの一部を他の画像形成装置に代行させることにより、ジョブの実行効率を高める技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、情報処理装置において安全性の高い暗号鍵を生成するためには、ある程度の量のエントロピーを用いて乱数を生成する必要がある。しかし一方で、エントロピー源から得られる時間当たりのエントロピー量には限りがある。このため、暗号処理が多い場合には、エントロピー源から既に得られているエントロピーを使い尽くしてしまうことがある。この場合、次の暗号処理を行うために、必要量のエントロピーが得られるまで待たねばならず、処理の開始まで時間がかかるという問題があった。
【０００６】
この発明は、このような問題を解決し、多数の暗号処理を実行する場合でも、迅速に暗号処理を開始できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
この発明は、上記の目的を達成するため、情報処理装置において、エントロピー源から得られる情報に基づきエントロピーを蓄積するエントロピー蓄積手段と、疑似乱数の生成を行う場合に、上記エントロピー蓄積手段にその疑似乱数の生成に必要なエントロピーが蓄積されるまでの時間と、外部の装置からその疑似乱数の生成に必要なエントロピーを取得するのに要する時間との比較に基づき、上記エントロピー蓄積手段が蓄積するエントロピーをその疑似乱数の生成に用いるか、上記外部の装置からエントロピーを取得してその疑似乱数の生成に用いるかを決定する決定手段とを設けたものである。
【発明の効果】
【０００８】
上記構成によれば、多数の暗号処理を実行する場合でも、迅速に暗号処理を開始できるようにすることができる。
【図面の簡単な説明】
【０００９】
【図１】この発明の情報処理システムの一実施形態の構成を示す図である。
【図２】図１に示した情報処理装置１０のハードウェア構成を示す図である。
【図３】情報処理装置１０及び情報処理装置２０が備える機能のうち、乱数及びエントロピーの取り扱いに関連する機能の構成を示す図である。
【図４】情報処理装置１０のＣＰＵが、エントロピー及び乱数の取り扱いに関して実行する処理のフローチャートである。
【図５Ａ】図４のステップＳ１１の動作をより詳細に示す図である。
【図５Ｂ】図４のステップＳ１４の動作をより詳細に示す図である。
【図５Ｃ】図４のステップＳ１８の動作をより詳細に示す図である。
【図５Ｄ】図４のステップＳ２３の動作をより詳細に示す図である。
【図６】生成したい暗号鍵の種類と、暗号鍵の生成に必要なエントロピーと、エントロピー及び乱数の転送に用いる暗号スイートとの関係を示す図である。
【図７】共通鍵とＲＳＡ公開鍵の等価安全性について説明するための図である。
【図８】情報処理装置２０のＣＰＵがエントロピー取得要求を検出した場合に実行する処理のフローチャートである。
【図９】同じく、乱数取得要求を検出した場合に実行する処理のフローチャートである。
【図１０】情報処理装置１０及び情報処理装置２０におけるエントロピー蓄積部の状態遷移を示す図である。
【発明を実施するための形態】
【００１０】
以下、この発明の実施形態について、図面を参照しつつ説明する。
図１に、この発明の情報処理システムの一実施形態の構成を示す。
図１に示す情報処理システム１は、第１情報処理装置である情報処理装置１０と、第２情報処理装置である情報処理装置２０とを、通信路４０を介して相互に通信可能に接続して構成したものである。このうち情報処理装置１０は、この発明の情報処理装置の実施形態でもある。また、情報処理装置１０は、外部のサーバ装置３０と、通信路５０を介して通信可能である。
【００１１】
これらの情報処理装置１０，２０は、例えば汎用コンピュータとして構成してもよいし、情報処理機能及び通信機能の他に任意の機能を備えた、例えば用紙に画像を形成する画像形成装置として構成することもできる。ここでは、情報処理装置１０，２０がそれぞれ汎用コンピュータであるとして説明する。なお、情報処理装置１０，２０は、同じ機種である必要はなく、後述する、乱数及びエントロピーの取り扱いに関する親機あるいは子機としての機能を実現できれば、その他に備える機能は任意である。
【００１２】
これらを接続する通信路４０としては、有線、無線、ネットワーク、専用線、ピアツーピア等を問わず、任意の規格のものを用いることができる。この実施形態では、通信にＳＳＬ（Secure  Socket  Layer）を使用するため、ＳＳＬを利用可能な規格とするが、他のプロトコルにより安全な通信路を確保する場合には、そのプロトコルを利用可能な規格を採用すればよい。
【００１３】
また、サーバ装置３０は、情報処理システム１の外部に設け、少なくとも情報処理装置１０に対して乱数生成アルゴリズムの安全性に関する情報を提供する機能を備えた装置である。このサーバ装置３０は、情報セキュリティに関するサービスを提供する事業者が設置することが考えられる。
【００１４】
情報処理装置１０とサーバ装置３０との間の通信路５０も、有線、無線、ネットワーク、専用線、ピアツーピア等を問わず、任意の規格のものを用いることができる。また、通信路４０と同じネットワークを利用してもよい。
【００１５】
次に、図２に、図１に示した情報処理装置１０のハードウェア構成を示す。
図２に示すように、情報処理装置１０は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ（ハードディスクドライブ）１０４、通信Ｉ／Ｆ（インタフェース）１０５、操作部１０６、表示部１０７を備え、これらをシステムバス１０８により接続した構成としている。
【００１６】
そして、ＣＰＵ１０１が、ＲＡＭ１０３をワークエリアとしてＲＯＭ１０２あるいはＨＤＤ１０４に記憶されたプログラムを実行することにより、情報処理装置１０全体を制御し、図３を用いて後述するものをはじめとする種々の機能を実現する。
ＲＯＭ１０２及びＨＤＤ１０４は、不揮発性記憶媒体（記憶手段）であり、ＣＰＵ１０１が実行する各種プログラムや後述する各種データを格納している。
通信Ｉ／Ｆ１０５は、通信路４０，５０を介して情報処理装置２０やサーバ装置３０等の他の装置と通信するためのインタフェースである。使用する通信路４０，５０の規格に応じたものを設ければよい。
【００１７】
操作部１０６は、ユーザからの操作を受け付けるための操作手段である。例えばキーボード、ポインティングデバイス、タッチディスプレイ等により構成することができる。
表示部１０７は、操作部１０６が操作を受け付けるためのＧＵＩ（グラフィカルユーザインタフェース）、情報処理装置１０の動作状態や設定内容、メッセージ等をユーザに提示するための提示手段であり、例えば液晶ディスプレイにより構成することができる。
なお、情報処理装置１０がユーザからの操作を直接受ける必要がない（通信Ｉ／Ｆ１０５を介して接続された外部装置により操作を受け付けたり情報の提示を行ったりすればよい）場合には、操作部１０６や表示部１０７を設けなくてよい。
【００１８】
以上のハードウェアとしては、例えば公知のコンピュータを利用することができる。情報処理装置２０についても、図２に示した範囲のハードウェア構成は同様であるので、説明を省略する。ただし、ＣＰＵの処理能力、メモリの容量などの相違を含め、情報処理装置１０と情報処理装置２０とで機種が異なっていてよいことは、上述した通りである。
【００１９】
次に、図３に、情報処理装置１０及び情報処理装置２０が備える機能のうち、乱数及びエントロピーの取り扱いに関連する機能の構成を示す。図３に示す各部の機能は、情報処理装置１０のＣＰＵ１０１あるいは情報処理装置２０のＣＰＵが、所要のハードウェアの動作を制御することにより実現されるものである。
まず、情報処理装置１０は、通信部１２１、アプリケーション１２２、暗号モジュール１２３、疑似乱数生成部１２４、エントロピー蓄積部１２５、エントロピー源１２６、子機登録部１２７、脆弱性問い合わせ部１２８を備える。
【００２０】
このうち通信部１２１は、情報処理装置２０との間で、暗号化された通信経路で情報の送受信を行う機能を備える。この実施形態では、ＳＳＬのプロトコルを用いてこの機能を実現する。ＳＳＬは、公開鍵暗号を用いてネゴシエーションを実施し、その後共通鍵暗号を用いて暗号通信を行うプロトコルである。
【００２１】
アプリケーション１２２は、ユーザの指示に応じて、あるいは他の装置から受信するか自動的に生成された要求に応じて、乱数に基づき生成された暗号鍵を提供する機能を備える。この機能は、アプリケーションプログラムにより実現される。また、暗号鍵の生成は、暗号モジュール１２３に要求して実行させる。
また、アプリケーション１２２は、情報処理装置１０においてエントロピーが不足していたり乱数生成アルゴリズムが脆弱化したりしていた場合に、エントロピーの供給や乱数の生成を、子機登録部１２７に登録された子機（ここでは情報処理装置２０）に依頼し、エントロピーや乱数を取得する機能も備える。
【００２２】
暗号モジュール１２３は、暗号鍵の生成や、データの暗号化及び復号化など、暗号に関する処理を行う機能を備える。暗号鍵の生成は、疑似乱数生成部１２４が生成した乱数や、アプリケーション１２２が子機から取得した乱数を用いて行うことができる。
疑似乱数生成部１２４は、エントロピー（を含むデータ）を乱数シードとして入力し、その入力値に基づき所定の乱数生成アルゴリズムによって乱数値を生成し、暗号モジュール１２３に提供する機能を備える。使用する乱数生成アルゴリズムは、随時追加及び変更可能である。
【００２３】
なお、エントロピーとは、データに含まれるランダム性を量として示したものである。ランダム性を有する現象が起こるエントロピー源１２６の挙動をエントロピー蓄積部１２５がデータとしてＲＡＭ１０３に蓄積することにより、ランダム性、すなわちエントロピーを有するデータを得ることができる。このデータが、エントロピーを含むデータである。そして、このデータの受け渡しにより、エントロピーをモジュール間や装置間で受け渡すことができる。ただし、データ長当たりのエントロピー量は、エントロピー源１２６の挙動のランダム性の度合いによって異なる。
疑似乱数生成部１２４が十分な品質の乱数を生成するためには、シードとして、所定量のエントロピーを含むデータを使用する必要がある。
【００２４】
エントロピー蓄積部１２５は、上述のようにエントロピー源１２６の挙動を示すデータを、エントロピーを含むデータとしてＲＡＭ１０３に蓄積するエントロピー蓄積手段の機能を備える。また、この蓄積動作が、エントロピー蓄積手順の処理である。エントロピーの蓄積速度は、エントロピー源１２６の挙動のランダム性の高さに依存するが、短時間では時間当たりの蓄積可能量は概ね一定である。したがって、本明細書では、エントロピー蓄積部１２５による時間当たりのエントロピー蓄積量は一定であるとして説明する。
【００２５】
エントロピー源１２６は、情報処理装置１０のうちランダム性を有する挙動をする部分である。ただし、このランダム性は、意図して実現されるものでなく、装置の動作中に自然発生的に生じるものである。例えば、ネットワーク通信のタイミング、キーボード入力から生成されるノイズ、ＣＰＵ１０１の内部で発生するノイズ等が、ランダム性を有する。そこで、これらのランダム性を有する挙動を検出可能な検出手段を、エントロピー源１２６として機能させることができる。
【００２６】
子機登録部１２７は、エントロピーの供給や乱数の生成を依頼する相手先装置である子機の情報を登録する機能を備える。依頼元である情報処理装置１０は、この子機に対応して親機と呼ぶことにする。なお、子機の情報としては、少なくともアドレス等の通信先情報を登録し、その他に、その子機との間で安全な通信路を確保するための公開鍵証明書等の暗号鍵を登録しておいてもよい。また、種々の暗号強度で通信を行えるよう、鍵長の異なる複数の暗号鍵について登録を行っておくとよい。
脆弱性問い合わせ部１２８は、疑似乱数生成部１２４が備える乱数生成アルゴリズムについて脆弱性が発見されていないか否かを、予め登録した照会先であるサーバ装置３０に問い合わせる機能を備える。
【００２７】
一方、情報処理装置２０は、通信部２２１、アプリケーション２２２、暗号モジュール２２３、疑似乱数生成部２２４、エントロピー蓄積部２２５、エントロピー源２２６、証明書登録部２２７、脆弱性問い合わせ部２２８を備える。
これらのうち、アプリケーション２２２及び証明書登録部２２７以外の機能は、情報処理装置１０における同名の構成と同様であるので説明を省略する。
【００２８】
アプリケーション２２２は、親機である情報処理装置１０からの要求に応じて、エントロピー蓄積部２２５が蓄積したエントロピーあるいは疑似乱数生成部２２４が生成した乱数を提供する機能を備える。
証明書登録部２２７は、必要に応じて、親機との間で安全な通信路を確保するための公開鍵証明書等の暗号鍵を登録する機能を備える。子機登録部１２７の場合と同様、種々の暗号強度で通信を行えるよう、鍵長の異なる複数の暗号鍵について登録を行っておくとよい。
【００２９】
なお、ここでは、情報処理装置１０の機能としてエントロピーや乱数の取り扱いに関する親機（他装置にエントロピーや乱数の送信を要求する側）の機能、情報処理装置２０の機能としてその子機（要求に応じてエントロピーや乱数を提供する側）の機能を示した。しかし、各装置が親機と子機の機能を合わせ持つことも妨げられない。
【００３０】
次に、エントロピー及び乱数の取り扱いに関して各装置が実行する処理について説明する。
まず、図４に、親機である情報処理装置１０のＣＰＵ１０１が実行する処理のフローチャートを示す。このフローチャートの処理は、この発明の情報処理方法の実施形態に係る処理であり、アプリケーション１２２の機能と対応するものである。ただし、アプリケーション１２２が他の各部に処理を依頼して実行させるものも含む。
【００３１】
情報処理装置１０のＣＰＵ１０１は、電源がＯＮされると、図４のフローチャートに示す処理を開始する。そしてまず、脆弱性問い合わせ部１２８に依頼して、サーバ装置３０に対し、疑似乱数生成部１２４が持つ暗号アルゴリズムの脆弱性について問い合わせる（Ｓ１１）。
【００３２】
この問い合わせは、図５Ａに示すように任意の数の乱数アルゴリズムの種類を特定した問い合わせをサーバ装置３０に送信するものである。そして、サーバ装置３０からは、その各乱数アルゴリズムについて、自身が保持するセキュリティに関する情報に基づき、安全性に問題がないか（ＯＫ）、脆弱性が発見されているか（ＮＧ）を示す応答を返す（Ｓ３１）。公開当初は安全であったアルゴリズムでも、解析の進展や計算能力の上昇により、安全とは言えなくなる場合もあり、サーバ装置３０の運用者は、適宜これらの情報を収集してセキュリティに関する情報としてサーバ装置３０に蓄積しておく。
【００３３】
ＣＰＵ１０１は、この応答を検出すると、次の処理に進んで暗号鍵の生成要求を検出するまで待機する（Ｓ１２）。そして、生成要求を検出すると、次の処理に進む。なお、この生成要求については、生成すべき暗号鍵の鍵長と使用する暗号アルゴリズムが特定されているとする。
【００３４】
次に、ＣＰＵ１０１は、疑似乱数生成部１２４において、要求に係る暗号鍵を生成するための乱数アルゴリズムとして、脆弱でないものを利用可能か否か判断する（Ｓ１３）。この判断は、ステップＳ１１の問い合わせに対して得られた応答に基づき行い、１つでも脆弱でないものが利用可能であれば、Ｙｅｓとなる。なお、暗号アルゴリズムと、その暗号アルゴリズムで使用する暗号鍵を生成するための乱数の生成に用いることができる乱数アルゴリズムとの対応関係の情報は、アプリケーション１２２が保持しているものとする。
ステップＳ１３でＹｅｓの場合、ＣＰＵ１０１は、暗号鍵の生成に用いる乱数を情報処理装置１０内で生成すべく、ステップＳ１４以下の処理に進む。
【００３５】
そしてまず、子機登録部１２７に登録している子機に対し、ステップＳ１２で検出した要求に係る暗号鍵の生成に必要なエントロピーの送信に要する時間を問い合わせる（Ｓ１４）。なお、暗号鍵を生成するために（鍵生成用の乱数に）必要なエントロピー量は、生成する鍵の種類と鍵長に応じて、図６に示すように定まる。
【００３６】
この問い合わせは、図５Ｂに示すように必要なエントロピー量を特定した問い合わせを情報処理装置２０（子機）に送信するものである。そして、この要求を受けた情報処理装置２０は、以下の計算により送信に要する時間を推定し、その結果を応答する（Ｓ４１）。
【００３７】
・子機から親機にエントロピーを送信するのに要する時間
（ａ）必要なエントロピー量＞現在蓄積されているエントロピー量の場合
所要時間＝（必要なエントロピー量−現在蓄積されているエントロピー量）
／時間当たりのエントロピー生成量
＋必要なエントロピー量／時間当たりのエントロピー送信可能量
（ｂ）必要なエントロピー量≦現在蓄積されているエントロピー量の場合
所要時間＝必要なエントロピー量／時間当たりのエントロピー送信可能量
【００３８】
なお、時間当たりのエントロピー生成量は、直近所定時間のエントロピー蓄積速度に基づいて算出することができる。時間当たりのエントロピー送信可能量は、直近の通信速度に基づいて推定することができる。
次に、ＣＰＵ１０１は、ステップＳ１２で検出した要求に係る暗号鍵の生成に必要なエントロピーをエントロピー蓄積部１２５が蓄積できるまでに要する時間を推定する（Ｓ１５）。この時間は、以下の計算により推定することができる。
【００３９】
・親機でエントロピーを蓄積するのに要する時間
（ａ）必要なエントロピー量＞現在蓄積されているエントロピー量の場合
所要時間＝（必要なエントロピー量−現在蓄積されているエントロピー量）
／時間当たりのエントロピー生成量
（ｂ）必要なエントロピー量≦現在蓄積されているエントロピー量の場合
所要時間＝０
【００４０】
なお、時間当たりのエントロピー生成量は、直近所定時間のエントロピー蓄積速度に基づいて算出することができる。
次に、ＣＰＵ１０１は、ステップＳ１４とＳ１５の結果に基づき、自機でのエントロピー蓄積と子機からのエントロピー取得のどちらでより早く必要なエントロピーが得られるかを判断する（Ｓ１６）。
【００４１】
その結果、自機でのエントロピーの蓄積が早いと判断した場合、エントロピー蓄積部１２５に蓄積されるエントロピーを乱数の生成に使用することを決定する。そして、必要に応じて蓄積が完了するまで待って、エントロピー蓄積部１２５が蓄積した、エントロピーを含むデータを取得する（Ｓ１７）。なお、この取得したデータは、ＲＡＭ１０３における蓄積領域から削除する。
一方、子機からのエントロピー取得が早いと判断した場合、子機からエントロピーを取得することを決定する。そしえ、子機に対し、エントロピーの送信を要求する（Ｓ１８）。
【００４２】
この要求は、図５Ｃに示すように必要なエントロピー量を特定した取得要求を情報処理装置２０（子機）に送信するものである。そして、この要求を受けた情報処理装置２０は、後述する図８の処理を実行し、その中で、エントロピーを含むデータを情報処理装置１０に送信する（Ｓ５４）。なお、この送信は、ＳＳＬを用いて暗号化した通信経路を用いて行う。
このときのＳＳＬ通信に用いる鍵長は、情報処理装置１０側では図４のステップＳ１９において、情報処理装置２０側では図８のステップＳ５３において設定する。具体的には、等価安全性で比較して送受信するエントロピー量以上になる最短の鍵長に設定する（Ｓ１９）。この設定処理は、ＳＳＬハンドシェイクの中で行えばよい。
【００４３】
ここで、等価安全性とは、共通鍵、公開鍵など暗号の種類が異なるものについて共通に安全性を測る指標である。各暗号の等価安全性は、安全な鍵を生成するために必要な乱数のエントロピー量により定まる。そして、この値が等しい暗号は、同程度の安全性を持つと言える。
【００４４】
図６に、共通鍵暗号とＲＳＡ公開鍵暗号における各鍵長について、鍵生成用の乱数に必要なエントロピー量を示した。これらの値から、図７において上段に示す共通鍵の各鍵長と、下段に示すＲＳＡ公開鍵の各鍵長とが、同程度の安全性であることがわかる。
また、図６に示す各量のエントロピーを安全に送受信するためには、エントロピー量と比べて等価安全性が高い鍵長の鍵を用いるＳＳＬの暗号スイートを使用する必要がある。しかし、鍵長が長い暗号スイートを用いるとその分処理時間が長くなるため、ここでは、送受信するエントロピー量と比べて等価安全性が高い最短の鍵長を用いることとしたものである。ただし、この「最短」は必須ではない。
【００４５】
図６には、以上に基づく、各量のエントロピーの送受信に用いるべき鍵長を示した。図６によると、８０ｂｉｔのエントロピーを送受信する場合には、１１２ビットの共通鍵と２０４８ビットのＲＳＡ公開鍵を用いるＳＳＬ暗号スイートを使用すればよいことがわかる。
【００４６】
図４の説明に戻ると、ＣＰＵ１０１は、ステップＳ１８及びＳ１９の後、ステップＳ１９で決定した鍵長の暗号鍵を用いたＳＳＬ通信で、子機からエントロピーを含むデータを受信する（Ｓ２０）。この受信まで時間を要する場合もあるが、受信まで待機する。
その後、ＣＰＵ１０１は、ステップＳ２０で受信したエントロピーを含むデータをシードとして、疑似乱数生成部１２４に疑似乱数を生成させる（Ｓ２１）。ステップＳ１７でエントロピーを含むデータ取得した場合には、その取得したデータをシードとする。
【００４７】
いずれの場合も、その後、生成した乱数を用いて、ステップＳ１２で検出した要求に係る暗号鍵を暗号モジュール１２３に生成させ、要求元に渡す（Ｓ２２）。
以上で、ステップＳ１２で検出した要求に係る処理を終了し、ステップＳ１２に戻って次の要求を待つ。
【００４８】
一方、ステップＳ１３でＮｏの場合、ＣＰＵ１０１は、情報処理装置１０においては安全な乱数を生成することはできないと判断する。そして、子機に対し、ステップＳ１２で検出した要求に係る暗号鍵を生成するための乱数の送信を要求する（Ｓ２３）。
この要求は、図５Ｄに示すように、乱数アルゴリズム（の選択肢）、乱数生成に用いるべきエントロピー量、及び乱数のサイズを指定した取得要求を情報処理装置２０（子機）に送信するものである。そして、この要求を受けた情報処理装置２０は、後述する図９の処理を実行し、その中で、生成した乱数を情報処理装置１０に送信する（Ｓ６６）。あるいは、図５Ｄには示していないが、乱数を生成できない旨の応答を返す場合もある。
【００４９】
なお、乱数の送信は、エントロピーを含むデータの場合と同様、ＳＳＬを用いて暗号化した通信経路を用いて行う。このときのＳＳＬ通信に用いる鍵長は、情報処理装置１０側では図４のステップＳ２４において、情報処理装置２０側では図９のステップＳ６５において設定する。具体的には、等価安全性で比較して送受信する乱数の生成に必要なエントロピー量以上になる最短の鍵長に設定する（Ｓ２４）。
この鍵長は、図６の表により、ステップＳ１９の場合と同様に定めることができる。例えば、生成に８０ｂｉｔのエントロピーが必要な乱数を送受信する場合には、１１２ビットの共通鍵と２０４８ビットのＲＳＡ公開鍵を用いるＳＳＬ暗号スイートを使用すればよいことがわかる。ただし、エントロピーの場合と同様、「最短」は必須ではない。
【００５０】
図４の説明に戻ると、ＣＰＵ１０１は、ステップＳ２３及びＳ２４の後、ステップＳ２４で決定した鍵長の暗号鍵を用いたＳＳＬ通信で、子機から乱数を受信する（Ｓ２５）。この受信まで時間を要する場合もあるが、乱数を送信できない旨の応答がなければ、乱数の受信まで待機する。
その後、ＣＰＵ１０１は、乱数の受信に成功したか否か判断する（Ｓ２６）。子機から乱数を送信できない旨の応答があった場合には、この判断はＮｏとなる。この場合、ＣＰＵ１０１は安全な乱数を取得できず、暗号鍵を生成できないため、ステップＳ１２で検出した要求の送信元に、暗号鍵の生成が失敗したことを通知し（Ｓ２７）、ステップＳ１２に戻って次の要求を待つ。
【００５１】
一方、ステップＳ２６でＹｅｓの場合、ステップＳ２５で受信した乱数を用いて、ステップＳ１２で検出した要求に係る暗号鍵を暗号モジュール１２３に生成させ、要求元に渡す（Ｓ２２）。その後、ステップＳ１２に戻って次の要求を待つ。
以上の処理中、ステップＳ１３においてＣＰＵ１０１は選択手段として機能する。またステップＳ１４〜Ｓ１６の処理が決定手順の処理であり、この処理においてＣＰＵ１０１は決定手段として機能する。また、ステップＳ２３〜Ｓ２５においＣＰＵ１０１は取得手段として機能する。
【００５２】
以上の処理により、情報処理装置１０は、暗号鍵生成要求の検出に応じて、必要に応じて子機からエントロピーや乱数を取得しつつ、暗号鍵を生成して要求元に提供することができる。
【００５３】
次に、図８に、子機である情報処理装置２０のＣＰＵが、図４及び図５ＣのステップＳ１８で送信されるエントロピー取得要求を検出した場合に実行する処理のフローチャートを示す。
情報処理装置２０のＣＰＵは、エントロピー取得要求を検出すると、図８の処理を開始し、まずエントロピー蓄積部２２５に要求されたエントロピー量だけエントロピーを蓄積済みであるか否か判断する（Ｓ５１）。蓄積済みでない場合、蓄積が完了するまで待機する（Ｓ５２）。
【００５４】
そして、蓄積が完了すると、ＣＰＵは、図４の説明で述べたように、ＳＳＬ通信に用いる鍵長を等価安全性で比較して送信するエントロピー量以上になる最短の鍵長に設定し（Ｓ５３）、その鍵長の暗号鍵を用いたＳＳＬ通信で、要求された量のエントロピーを含むデータを要求元へ送信する（Ｓ５４）。なお、この送信したデータは、ＲＡＭにおける蓄積領域から削除する。その後、現在のエントロピー量を、送信後に残ったエントロピー量に更新して（Ｓ５５）、処理を終了する。
【００５５】
ステップＳ１３において情報処理装置２０のＣＰＵはエントロピー送信手段として機能する。
以上の処理により、情報処理装置２０は、親機からの要求に応じてエントロピーを提供することができる。
【００５６】
次に、図９に、子機である情報処理装置２０のＣＰＵが、図４及び図５ＤのステップＳ２３で送信される乱数取得要求を検出した場合に実行する処理のフローチャートを示す。
情報処理装置２０のＣＰＵは、乱数取得要求を検出すると、図９の処理を開始し、まず要求において指定されたアルゴリズムで安全な乱数を生成できるか否か判断する（Ｓ６１）。
【００５７】
この判断は、疑似乱数生成部２２４が指定されたアルゴリズムを持っていない場合にはＮｏになる。また、情報処理装置２０も、図４のステップＳ１１の場合と同様、脆弱性問い合わせ部２２８の機能によりサーバ装置３０へ疑似乱数生成部２２４が持つ乱数アルゴリズムの脆弱性に関する問い合わせを行っている。そして、この問い合わせに応じて脆弱である旨が通知された乱数アルゴリズムは使用できないものとしてステップＳ６１の判断を行う。
以上の結果、ステップＳ６１の判断がＮｏである場合、ＣＰＵは要求に従った乱数を生成できない旨を要求元の情報処理装置１０に通知して（Ｓ６８）、処理を終了する。
【００５８】
一方、ステップＳ６１でＹｅｓの場合、ＣＰＵは、要求で使用することを指定された量だけエントロピーがエントロピー蓄積部２２５に蓄積済みであるか否か判断する（Ｓ６２）。蓄積済みでない場合、蓄積が完了するまで待機する（Ｓ６３）。
そして、蓄積が完了すると、ＣＰＵは、蓄積済みのエントロピーをシードとして、乱数取得要求での指定内容に従い、疑似乱数生成部２２４で疑似乱数を生成する（Ｓ６４）。なお、この乱数の生成に使用したデータは、ＲＡＭにおける蓄積領域から削除する。
【００５９】
その後、ＣＰＵは、図４の説明で述べたように、ＳＳＬ通信に用いる鍵長を等価安全性で比較して送信する乱数の生成に用いたエントロピー量以上になる最短の鍵長に設定し（Ｓ６５）、その鍵長の暗号鍵を用いたＳＳＬ通信で、生成した乱数を要求元へ送信する（Ｓ６６）。そして、現在のエントロピー量を、乱数の生成後に残ったエントロピー量に更新して（Ｓ６７）、処理を終了する。
以上の処理により、情報処理装置２０は、親機からの要求に応じて乱数を生成して提供することができる。
【００６０】
次に、図１０に、情報処理装置１０及び情報処理装置２０におけるエントロピー蓄積部１２５，２２５の状態遷移を示す。
状態１は、初期状態である。エントロピー（を示すデータ）はＲＡＭ上に置かれるため、機器の電源をＯＮにしたときには、蓄積されているエントロピー量は０である。
【００６１】
状態２及び状態３は、エントロピーを蓄積中の状態である。この状態では、時間の経過に従い、蓄積されているエントロピー量は増加する。電源ＯＮ時には、状態１から速やかに状態２へ移行する。その後、親機の場合、図４のステップＳ１７でエントロピー取得処理を実施している間、子機の場合、乱数取得要求もしくはエントロピー取得要求を受けてからそれに応じた図８又は図９の処理を終了するまで、状態３となる。これらの動作に必要なエントロピーが蓄積されていればただちに動作を終了して状態２に戻るが、そうでない場合、必要な量のエントロピーが蓄積されるまで状態３を継続することになる。
【００６２】
状態４は、ＲＡＭにフルにエントロピーが蓄積されている状態である。この状態では、さらなるエントロピーの蓄積は行わない。しかし、親機の場合の図４のステップＳ１７や、子機の場合の図８又は図９の処理でエントロピーが使用されると、フル状態ではなくなるので、状態２に移行する。
以上のようにエントロピー蓄積部１２５，２２５は、所定の最大量のエントロピーを蓄積するまでは、常時エントロピーの蓄積を行う。このように、常時エントロピーを蓄積することにより、短い待ち時間でエントロピーを利用可能とすることができる。
【００６３】
以上説明してきた情報処理システム１によれば、情報処理装置１０が、乱数の生成を行う場合に、エントロピー蓄積部１２５に必要なエントロピーが蓄積されるまでの時間と、子機から必要なエントロピーを取得するのに要する時間との比較に基づき、どちらから取得したエントロピーを用いて乱数を生成するか決定する。このことにより、暗号鍵を連続して生成して情報処理装置１０のエントロピー蓄積部１２５が蓄積したエントロピーが枯渇したような場合でも、再度の蓄積を待つことなく乱数及び暗号鍵を生成することができる。従って、迅速に暗号処理を開始できる。
【００６４】
また、子機からエントロピーを取得する場合に、等価安全性で比較して取得するエントロピーの量以上の鍵長の暗号鍵を用いて暗号化された通信経路でエントロピーを取得するので、安全にエントロピーを取得することができる。この条件を満たす最短の鍵長を用いるようにすれば、短時間で取得できるという効果も得られる。
また、エントロピーや乱数の取得は、予め登録された子機から行うようにしているため、不正な装置から誤って脆弱なエントロピーや乱数を取得してしまうことがない。また、暗号化通信用の種々の鍵長の対応する暗号鍵を予め親機と子機の双方に設定しておくことが可能であり、適切な鍵長の暗号鍵を用いた通信を迅速に開始することができる。
【００６５】
また、情報処理装置１０が乱数の生成を行う場合に、自身の疑似乱数生成部１２４により乱数を生成するか、子機に疑似乱数を生成させるかを選択することができる。このため、自身が必要な乱数アルゴリズムを持っていなかったり、あるいは自身の持つ乱数アルゴリズムが脆弱化したりしていた場合でも、特段ソフトウェア等を更新することなく、必要かつ安全な乱数アルゴリズムを用いて乱数を生成することができる。
【００６６】
特に、上記判断を、疑似乱数生成部１２４が使用可能な乱数生成アルゴリズムの脆弱性についてサーバ装置３０に照会した結果に基づいて行うようにすれば、脆弱化した乱数アルゴリズムを誤って使用してしまうことがなく、セキュリティを確保することができる。
また、子機に乱数を生成させる場合に、等価安全性で比較してその乱数の生成に必要なエントロピー量以上の鍵長の暗号鍵を用いて暗号化された通信経路でエントロピーを取得するので、安全性に乱数を取得することができる。この条件を満たす最短の鍵長を用いるようにすれば、短時間で取得できるという効果も得られる。
【００６７】
なお、一旦情報処理装置１０をリリースした後で情報処理装置１０の疑似乱数生成部１２４が備える暗号アルゴリズムに脆弱性が発見された場合に、これをソフトのバージョンアップで対応しようとすると、多大な手間やコストがかかる。また、既にリリースした機器を全て辿って更新することができない場合もある。しかし、情報処理装置１０に、サーバ装置３０への照会と、その結果に基づき乱数アルゴリズムの選択や子機に乱数を生成させることの選択を行う機能を設けておけば、情報処理装置１０自体を更新しなくても、脆弱な乱数アルゴリズムを使用させないことができる。従って、脆弱性が発見された場合の対処を、低コストかつ容易に行うことができる。
【００６８】
以上で実施形態の説明を終了するが、この発明において、装置の具体的な構成、具体的な処理の手順、装置の台数、データの構成、使用するアルゴリズムやプロトコル等は、実施形態で説明したものに限るものではない。
例えば、上述した実施形態では、エントロピーや乱数の送受信にＳＳＬを用いたが、通信内容を暗号化可能な他のプロトコルを用いることも当然可能である。
【００６９】
また、図４のステップＳ１１、Ｓ１３及びＳ２３乃至Ｓ２７の処理を実行することは必須ではなく、エントロピーを自装置から取得するか外部装置から取得するかを選択するのみとしてもよい。逆に、ステップＳ１４乃至Ｓ１６及びステップＳ１８乃至Ｓ２０の処理を実行せず、乱数を自装置で生成するか外部装置に生成させるかを選択するのみとしてもよい。このようにしても、それぞれを選択可能とすることによる効果は得られる。
【００７０】
また、子機を親機に予め登録しておくことも必須ではなく、親機がエントロピーの取得先や乱数生成の依頼先を、これらが必要になった場合に検索する構成もあり得る。
また、上述した実施形態では、親機と子機が１対１である例について説明したが、これに限られることはない。１台の親機に複数の子機を登録して各子機にそれぞれ所要時間を問い合わせ、最も早くエントロピーを提供できる子機からエントロピーを取得するようにしてもよい。乱数の生成を依頼する場合にも、所要時間を予め取得して、最も早く生成が可能な子機に生成を要求してもよい。
【００７１】
また、１台の子機が、複数台の親機に登録されても問題ない。すなわち、親機は、任意の台数の子機を登録することが可能であるし、子機は、任意の台数の親機に登録されることが可能である。２台の情報処理装置が、相互に相手を子機として登録してもよい。
また、情報処理装置１０と情報処理装置２０のいずれかが、サーバ装置３０を兼ねていてもよい。
【００７２】
また、各装置におけるエントロピー源１２６について、ランダム性を有する挙動をする部分が必ずしも装置内にある必要はない。装置がその挙動を検出することができれば、その検出手段がエントロピー源１２６として機能し得る。
また、図３に示した情報処理装置１０あるいは情報処理装置２０の機能を、複数の装置に分散して設け、それらの装置を協働させて、情報処理装置１０あるいは情報処理装置２０として機能させることも考えられる。
【００７３】
また、この発明のプログラムの実施形態は、コンピュータに所要のハードウェアを制御させて上述した実施形態における情報処理装置１０あるいは情報処理装置２０の機能（特に図３に示したもの）を実現させるためのプログラムである。
【００７４】
このようなプログラムは、はじめからコンピュータに備えるＲＯＭや他の不揮発性記憶媒体（フラッシュメモリ，ＥＥＰＲＯＭ等）などに格納しておいてもよい。しかし、メモリカード、ＣＤ、ＤＶＤ、ブルーレイディスク等の任意の不揮発性記録媒体に記録して提供することもできる。それらの記録媒体に記録されたプログラムをコンピュータにインストールして実行させることにより、上述した各手順を実行させることができる。
【００７５】
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部装置あるいはプログラムを記憶手段に記憶した外部装置からダウンロードし、コンピュータにインストールして実行させることも可能である。
また、以上説明してきた各実施形態及び変形例の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。
【符号の説明】
【００７６】
１：情報処理システム、１０：情報処理装置（親機）、２０：情報処理装置（子機）、３０：サーバ装置、４０，５０：通信路、１０１：ＣＰＵ、１０２：ＲＯＭ、１０３：ＲＡＭ、１０４：ＨＤＤ、１０５：通信Ｉ／Ｆ、１０６：操作部、１０７：表示部、１０８：システムバス、１２１，２２１：通信部、１２２，２２２：アプリケーション、１２３，２２３：暗号モジュール、１２４，２２４：疑似乱数生成部、１２５，２２５：エントロピー蓄積部、１２６，２２６：エントロピー源、１２７：子機登録部、１２８，２２８：脆弱性問い合わせ部、２２７：証明書登録部
【先行技術文献】
【特許文献】
【００７７】
【特許文献１】特許第４７６４０６１号公報
【図１】
2016061915.tif 000003
【図２】
2016061915.tif 000004
【図３】
2016061915.tif 000005
【図４】
2016061915.tif 000006
【図５Ａ】
2016061915.tif 000007
【図５Ｂ】
2016061915.tif 000008
【図５Ｃ】
2016061915.tif 000009
【図５Ｄ】
2016061915.tif 000010
【図６】
2016061915.tif 000011
【図７】
2016061915.tif 000012
【図８】
2016061915.tif 000013
【図９】
2016061915.tif 000014
【図１０】
2016061915.tif 000015