(57)【要約】【課題】本発明の目的は内部回路の複数の割り込み要求信号及び外部入力を起因とする割り込み要求信号をシード生成のトリガとして用いることで異なる周期性を持つ信号を組み合わせることで、再現困難性を持つ擬似乱数生成器を提供することを可能とすることである。【解決手段】擬似乱数生成器１１０は割り込み要求信号受信部２００、シード生成部２１０、カウント値格納部２３０、擬似乱数演算部２４０を含む。割り込み要求信号受信部２００が割り込み要求信号を受けると、カウント値取得信号６００がシード生成部２１０に出力され、そのタイミングの内部カウンタの値がカウント値格納部２３０内に蓄積される。擬似乱数演算部２４０は要求を受けると、カウント値格納部２３０内に蓄積されたカウント値を利用して擬似乱数を生成する。【選択図】図２
2009003495.tif 000002
【特許請求の範囲】
【請求項１】
割り込み要求信号を出力する１ないし２以上の機能モジュールと、
前記割り込み要求信号の優劣を判断する割り込みコントローラと、
前記割り込み要求信号によりシードを更新する擬似乱数生成器を有することを特徴とする制御装置。
【請求項２】
請求項１記載の制御装置において、前記擬似乱数生成器は、
カウンタと、
１ないし２以上の前記割り込み要求信号を受信する割り込み要求信号受信部と、
いずれかの前記割り込み要求信号を前記割り込み要求信号受信部が受信した際の前記カウンタの値を格納するカウント値格納部と、
擬似乱数生成の要求があった際に前記カウント値格納部に格納された前記カウンタの値を前記シードとして擬似乱数を生成する擬似乱数生成部を有することを特徴とする制御装置。
【請求項３】
請求項１記載の制御装置において、前記擬似乱数生成器は、
カウンタと、
２以上の前記割り込み要求信号を受信し、受信した該割り込み要求信号を識別するための識別子を生成する割り込み要求信号受信部と、
前記識別子を格納するＩＤ格納部と、
いずれかの前記割り込み要求信号を前記割り込み要求信号受信部が受信した際の前記カウンタの値を格納するカウント値格納部と、
擬似乱数生成の要求があった際に前記カウント値格納部に格納された前記カウンタの値及び前記ＩＤ格納部に格納された識別子を前記シードとして擬似乱数を生成する擬似乱数生成部を有することを特徴とする制御装置。
【請求項４】
請求項１記載の制御装置において、前記擬似乱数生成器は、
カウンタと、
２以上の前記割り込み要求信号を受信し、受信した該割り込み要求信号を識別するための識別子を生成する割り込み要求信号受信部と、
いずれかの前記割り込み要求信号を前記割り込み要求信号受信部が受信した際の前記カウンタの値及び前記識別子を格納するＩＤ／カウント値格納部と、
擬似乱数生成の要求があった際に前記ＩＤ／カウント値格納部に格納された前記カウンタの値及び前記識別子を前記シードとして擬似乱数を生成する擬似乱数生成部を有することを特徴とする制御装置。
【請求項５】
請求項２または３に記載の制御装置において、前記カウント値格納部は前記カウンタの値を複数個格納することができ、リングバッファ方式で前記カウンタの値を更新することを特徴とする制御装置。
【請求項６】
請求項４に記載の制御装置において、前記カウント値格納部は前記前記カウンタの値及び前記識別子を複数個格納することができ、リングバッファ方式で前記カウンタの値及び前記識別子を更新することを特徴とする制御装置。  
【請求項７】
請求項２ないし６のいずれか１項に記載の制御装置において、前記制御装置は更にＣＰＵを有し、
前記ＣＰＵは前記擬似乱数生成の要求を前記擬似乱数生成器に出力し、前記擬似乱数生成器より生成された擬似乱数を取得することを特徴とする制御装置。
【請求項８】
請求項２ないし６のいずれか１項に記載の制御装置において、
前記機能モジュールは前記擬似乱数生成の要求を前記擬似乱数生成器に出力し、前記擬似乱数生成器より生成された擬似乱数を取得し、前記割り込み要求信号を出力することを特徴とする制御装置。
【請求項９】
請求項１ないし８のいずれか１項に記載の制御装置において、前記割り込み要求信号が外部モジュールに依拠することを特徴とする制御装置。
【請求項１０】
請求項１ないし８のいずれか１項に記載の制御装置を含むことを特徴とする電子機器。
【請求項１１】
カウンタと、
１ないし２以上の前記割り込み要求信号を受信し、カウント値取得信号を出力する割り込み要求信号受信部と、
いずれかの前記割り込み要求信号を前記割り込み要求信号受信部が受信した際の前記カウンタの値を内部レジスタに格納するカウント値格納部と、
有する擬似乱数生成器の制御方法であって、
割り込み要求信号受信部が前記割り込み要求信号の受信を受けてカウント値取得信号を出力するカウント値取得信号出力ステップと、
前記カウント値取得信号を受けて前記カウンタの値を前記カウント値格納部に出力するカウント値取得ステップと、
前記カウント値を受けたカウント値格納部が出力された前記カウンタの値を前記内部レジスタに格納する格納ステップを含むこと、を特徴とする擬似乱数生成器の制御方法。
【請求項１２】
請求項１１記載の擬似乱数生成器の制御方法において、前記擬似乱数生成器は更に擬似乱数生成部を含み、
擬似乱数生成の要求があった際に前記カウント値格納部の前記内部レジスタに格納された前記カウンタの値をシードとして擬似乱数を生成する擬似乱数生成ステップを含むこと、を特徴とする擬似乱数生成器の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置及びマイクロコンピュータに内蔵された擬似乱数生成装置に関する。
【背景技術】
【０００２】
乱数生成器は、暗号解読を試みる攻撃者が推定、および、再現できない情報を生成する目的で使用される。たとえば、セキュリティの分野では、一度限り有効な鍵を含む公開鍵や秘密鍵又は共通鍵などの鍵生成や、暗号通信時に通信相手のみに送信する秘密情報の生成など、様々な暗号プロトコルに乱数生成器は用いられている。
【０００３】
理想的な乱数には、ランダムな現象が求められる。ここでランダムな現象とは、ある現象において、それぞれの事象が他の事象とは独立に発生することを言う。
【０００４】
一般的に、このランダムな現象を作り出す乱数生成器として、放射線や熱雑音などの物理現象を使用したものを真性乱数生成器、乱数のように見えるが実際には暗号理論を使用して確定的な計算によって生成する擬似乱数生成器などが用いられる。
【０００５】
真性乱数生成器は、ランダム性を物理現象に求めるため、乱数に高いランダム性を得られる反面、物理現象を観測する装置と、その情報をデジタル値に変換する装置が必要になる。通常のＬＳＩの量産プロセスでは作成が困難であり、作成する場合には高いコストを要する。
【０００６】
一方、擬似乱数生成器は、真性乱数生成器とは異なり、ある入力値に対して一意に確定する値を生成する。しかし、物理現象を観測するための装置が不要で、実装方法はソフトウェア、ハードウェアを選ばないなど、真性乱数生成器に比べて安価で容易に使用できるという利点を持つ。このため、セキュリティ用途においても一般的に使用されている。
【０００７】
擬似乱数生成器では、シード（初期値）と呼ばれる入力に対して、暗号理論を用いた計算によって乱数として使用する値を得る。前述のとおり、シードの値が同一であれば必ず同一の値を出力する。擬似乱数生成器の出力を乱数として使用するためには、使用時毎に異なる値をシードとして入力すること、すなわち、シードの周期性が大きいほうが望ましい。
【０００８】
このような問題に対し、従来技術にはシードとして使用する値として時刻を使用する方式が存在する。時刻は刻々と変化するため、毎回異なる値を得ることができるためである。
【０００９】
特開平７−３１１６７４号公報（以下特許文献１）記載の発明では、値を内部クロックに同期してカウントアップするカウンタと、乱数関数の出力を保存するレジスタと、外部からの起動信号によりカウンタ、および、レジスタの値を入力して乱数を出力する乱数関数を具備した擬似乱数生成装置を開示する。この擬似乱数生成装置では、カウンタを起動する内部クロックとは非同期なタイミングで入力される起動信号を利用することにより、外部から観測できないカウンタの値を用いて次の乱数を生成する。
【特許文献１】特開平７−３１１６７４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
擬似乱数生成器を用いる場合、前述のとおり、シードとして入力する値の周期性が大きいことが求められる。加えて、再現が容易な擬似乱数は、セキュリティ強度の低下につながるため、再現が困難な値をシードとして使用する必要がある。
【００１１】
しかしながら、ハードウェアやソフトウェアは規則的に動作することを前提に設計されたものであり、シード生成時の条件は再現性がある場合もある。従って、そのような場合、シードの再現可能性も否定できない。さらに、シードの生成方法や決定方法が単純であれば、実装方法の類推や生成手順の再現により、シードとして同じ値を入力される危険性が増す。
【００１２】
本発明はこのような問題を解決するためになされたものである。即ち、内部回路の複数の割り込み要求信号及び外部入力を起因とする割り込み要求信号をシード生成のトリガとして用い、周期性の異なる信号あるいは周期性の無い信号を組み合わせることで、再現困難性を持つ擬似乱数生成器を提供することを可能とする。
【００１３】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。
【００１５】
本発明に関わる制御装置は、割り込み要求信号を出力する１ないし２以上の機能モジュールと、割り込み要求信号の優劣を判断する割り込みコントローラと、割り込み要求信号によりシードを更新する擬似乱数生成器を有する。
【００１６】
また、この制御装置の擬似乱数生成器の一種には、カウンタと、１ないし２以上の前記割り込み要求信号を受信する割り込み要求信号受信部と、いずれかの割り込み要求信号を割り込み要求信号受信部が受信した際のカウンタの値をカウント値として格納するカウント値格納部と、擬似乱数生成の要求があった際にカウント値格納部に格納されたカウント値をシードとして擬似乱数を生成する擬似乱数生成部を有する。
【００１７】
また、この制御装置の擬似乱数生成器の別の一種には、カウンタと、２以上の前記割り込み要求信号を受信し、受信した該割り込み要求信号を識別するための識別子を生成する割り込み要求信号受信部と、識別子を格納するＩＤ格納部と、いずれかの割り込み要求信号を割り込み要求信号受信部が受信した際のカウンタの値をカウント値として格納するカウント値格納部と、擬似乱数生成の要求があった際にカウント値格納部に格納されたカウント値及びＩＤ格納部に格納された識別子をシードとして擬似乱数を生成する擬似乱数生成部を有する。
【００１８】
また、この制御装置の擬似乱数生成器の別の一種には、カウンタと、２以上の前記割り込み要求信号を受信し、受信した該割り込み要求信号を識別するための識別子を生成する割り込み要求信号受信部と、いずれかの割り込み要求信号を割り込み要求信号受信部が受信した際のカウンタの値及び識別子を組み合わせて格納するＩＤ／カウント値格納部と、擬似乱数生成の要求があった際にＩＤ／カウント値格納部に格納されたＩＤ／カウント値をシードとして擬似乱数を生成する擬似乱数生成部を有する。
【００１９】
これらの制御装置の擬似乱数生成器において、カウント値格納部はカウント値としてカウンタの値を複数個格納することができ、リングバッファ方式でカウンタの値を更新する。
【００２０】
また、この制御装置は更にＣＰＵを有し、このＣＰＵは擬似乱数生成の要求を擬似乱数生成器に出力し、擬似乱数生成器より生成された擬似乱数を取得することも可能である。
【００２１】
また、この制御装置は更に機能モジュールを有し、この機能モジュールは擬似乱数生成の要求を擬似乱数生成器に出力し、擬似乱数生成器より生成された擬似乱数を取得し、割り込み要求信号を出力することも可能である。
【００２２】
この制御装置において、割り込み要求信号は外部モジュールに依拠することも可能である。
【００２３】
携帯電話等の電子機器がこの制御装置を含むことも考慮される。
【００２４】
本発明に関わる擬似乱数生成器の制御方法の制御対象となる擬似乱数生成器は、カウンタと、１ないし２以上の割り込み要求信号を受信し、カウント値取得信号を出力する割り込み要求信号受信部と、いずれかの割り込み要求信号を割り込み要求信号受信部が受信した際のカウンタの値をカウント値として内部レジスタに格納するカウント値格納部とを有し、割り込み要求信号受信部が割り込み要求信号の受信を受けてカウント値取得信号を出力するカウント値取得信号出力ステップと、カウント値取得信号を受けてカウンタがカウント値をカウント値格納部に出力するカウント値取得ステップと、カウント値を受けたカウント値格納部がカウント値を内部レジスタに格納するカウント値格納ステップを含む。
【００２５】
この擬似乱数生成器は、さらに擬似乱数生成部を含み、この擬似乱数生成器の制御方法では、擬似乱数生成の要求があった際にカウント値格納部の内部レジスタに格納されたカウント値をシードとして擬似乱数を生成する擬似乱数生成ステップを有しても良い。
【発明の効果】
【００２６】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【００２７】
本発明に関わる擬似乱数生成器では、割り込み要求信号をシード生成のタイミングとして用いる。この割り込み要求信号の発生タイミングは、マイクロコンピュータ自身の状態と、マイクロコンピュータで実行されるアプリケーションプログラム、ＯＳ、デバイスドライバなどのソフトウェアの状態と、それらのソフトウェアで制御、使用するハードウェアの状態といったマイクロコンピュータに係わるシステム全体の影響を受ける。すなわち、シードの決定要因として使用する割り込み要求信号の発生タイミングは、複雑度が大きく類推が困難であり、加えて、システムの状態は刻々と変化する。したがって、本発明により、周期性が大きく、類推、再現困難なシードの生成が可能となる。
【発明を実施するための最良の形態】
【００２８】
以下、図を用いて、本発明の第１の実施の形態を説明する。
【００２９】
（第１の実施の形態）
図１は、本発明に関わる制御装置であるマイクロコンピュータ１００の構成を表すブロック図である。
【００３０】
マイクロコンピュータ内部には、本発明に関わる擬似乱数生成器１１０のほか、割り込みコントローラ１２０、ＣＰＵ１３０、画像処理部１３１、音声処理部１３２、暗号処理部１３３、メモリコントローラ１３４、ＤＭＡコントローラ１３５、周辺バスコントローラ１３６、クロック生成器１４０、タイマ１４１、外部バスコントローラ１４２、Ｉ／Ｏポート１４３が搭載されている。また、共用バスとして、ＣＰＵバス１０６と周辺バス１０７が含まれる。
【００３１】
また、マイクロコンピュータ１００の外部回路としてメモリコントローラ１３４にはメモリ１５０が接続されている。さらに本図では、外部バスコントローラ１４２には、第１外部デバイス１６０及び第２外部デバイス１６１が接続されている。なお、本図では割り込み要求信号以外の制御信号線は省略している。
【００３２】
本発明に関わる擬似乱数生成器１１０は、マイクロコンピュータ１００内の処理で擬似乱数が必要な際、擬似乱数を生成するための回路である。この擬似乱数生成器１１０には、画像処理部１３１、音声処理部１３２、暗号処理部１３３、メモリコントローラ１３４、ＤＭＡコントローラ１３５、周辺バスコントローラ１３６、タイマ１４１、外部バスコントローラ１４２、Ｉ／Ｏポート１４３から割り込み要求信号が入力される。
【００３３】
割り込みコントローラ１２０は、画像処理部１３１などの各機能モジュールからの割り込み要求信号と実行中の処理の優劣判断を行う。割り込み要求信号の求める処理の優先順位の方が高ければＣＰＵ１３０に対して通知する。本実施の形態では、画像処理部１３１、音声処理部１３２、暗号処理部１３３、タイマ１４１、外部バスコントローラ１４２、Ｉ／Ｏポート１４３から割り込み要求信号が割り込みコントローラ１２０入力される。
【００３４】
ＣＰＵ１３０はマイクロコンピュータ１００の演算処理を行うＣＰＵバス１０６下の汎用処理装置である。割り込み要求信号が割り込みコントローラ１２０に入力され、それが実行中の処理より優先順位の高い処理を要求するものであれば、ＣＰＵ１３０に対して図示しない割り込み処理要求信号が出力される。なお、割り込み要求信号はないものの、ＣＰＵ１３０も広義の機能モジュールの一つである。
【００３５】
画像処理部１３１、音声処理部１３２、暗号処理部１３３は、ＣＰＵバス１０６上に存在し、上述した各機能モジュールに該当する。ＣＰＵ１３０が汎用性を考慮されているのに対し、これらのモジュールはある特定の機能処理に特化した機能モジュールである。
【００３６】
画像処理部１３１は受信した画像データの符号化・復号化処理を最適に行うことを考慮したモジュールである。この画像処理部１３１で行われる処理は、動画処理、静止画処理等が考えられる。ただし、本発明では処理の内容を特に限定するものではない。動画であればＧＯＰ（Ｇｒｏｕｐ  ｏｆ  Ｐｉｃｔｕｒｅｓ）の処理開始／完了やフレームの処理完了時に割り込み要求信号が割り込みコントローラ１２０に出力されると想定される。
【００３７】
音声処理部１３２は音声処理に特化したモジュールである。音声処理部１３１からは主にデータの送受信のタイミング調整のために割り込み要求信号が出力されると考えられる。
【００３８】
暗号処理部１３３はマイクロコンピュータ１００外部との通信を行う際の暗号処理等を想定したモジュールである。主に暗号処理設定の要求時に割り込み要求信号が割り込みコントローラ１２０に出力されると想定される。
【００３９】
これらの機能モジュールは、マイクロコンピュータ１００が想定する処理によって取捨される。マイクロコンピュータ１００の制御対象となる制御装置が暗号処理のみに特化していれば画像処理部１３１や音声処理部１３２は存在しないし、音声処理に特化していれば音声処理部１３２以外のモジュールは不要である。また、簡単な処理しか行わないのであれば、ＣＰＵ１３０の代わりにＤＳＰ（デジタルシグナルプロセッサ）を用いても良い。これらの取捨は設計事項であり、本発明には特に影響しない。
【００４０】
上述したように、画像処理部１３１、音声処理部１３２、暗号処理部１３３は割り込み要求信号を割り込みコントローラ１２０に対して出力するが、本発明の実施の形態では擬似乱数生成器１１０にも割り込み要求信号を出力する点で従来例と相違する。
【００４１】
ＣＰＵバス１０６上に存在するメモリコントローラ１３４はマイクロコンピュータ１００外部に接続されるメモリ１５０の入出力を制御するモジュールである。
【００４２】
ＤＭＡコントローラ１３５はＣＰＵ１３０を介さずに各モジュールとメモリ１５０との間で直接データ転送を行うモジュールである。
【００４３】
周辺バスコントローラ１３６は、ＣＰＵバス１０６と周辺バス１０７との間のデータ転送を仲介するモジュールである。
【００４４】
メモリコントローラ１３４、ＤＭＡコントローラ１３５、周辺バスコントローラ１３６は、一般的なマイクロコントローラのそれと変わるところは無い。ＣＰＵバス上の機能モジュール同様、これらも割り込み要求信号を擬似乱数生成器１１０及び割り込みコントローラ１２０に出力する。
【００４５】
周辺バス１０７上にはクロック生成器１４０、タイマ１４１、外部バスコントローラ１４２、Ｉ／Ｏポート１４３といったモジュールが存在する。
【００４６】
クロック生成器１４０はマイクロコンピュータ１００内で用いられる数種のクロックを生成するＰＬＬ（フェイズロックループ）回路等である。本図では簡略化のために図示していないが、ＣＰＵ１３０や画像処理部１３１等の各機能モジュールにクロック信号は入力される。なお、本図ではクロック生成器１４０は一つであるが、システムが要するクロック周波数に対応して複数のクロック生成器を用意することも可能である。
【００４７】
タイマ１４１は一定周期で特定の処理を行いたいときに用いられるタイマ・モジュールである。タイマ１４１の動作パターンには何種類かあるが、基本的は一定周期で割り込み要求信号を割り込みコントローラ１２０に出力し、所定の処理をＣＰＵ１３０に促すというものである。
【００４８】
外部バスコントローラ１４２はマイクロコンピュータ１００の外部に接続するデバイス、たとえばハードディスクや外部通信モジュール等、との入出力を制御するモジュールである。たとえば、本図では第１外部デバイス１６０からデータ送信要求があった場合に、外部バスコントローラ１４２が割り込み要求信号を割り込みコントローラ１２０に出力することが考えられる。
【００４９】
Ｉ／Ｏポート１４３はマイクロコンピュータ１００外部に接続する機器との入出力に使用する端子、及び、その端子を制御するモジュールである。外部機器から入出力要求がなされ、端子を制御するモジュールから割り込み要求信号が出力されたりすることで、割り込み要求信号を割り込みコントローラ１２０に出力することが想定される。
【００５０】
以上の周辺バス１０７上のモジュールも従来のそれと変わるところは無い。ただし各モジュールから出力される割り込み要求信号が、割り込みコントローラ１２０のみならず、擬似乱数生成器１１０にも出力される点で相違する。
【００５１】
次に、上述した擬似乱数生成器１１０の構成を図２等に従って説明する。
【００５２】
図２は擬似乱数生成器１１０の構成を表すブロック図である。また、図３は割り込み要求信号受信部２００の構成を表すブロック図である。
【００５３】
この擬似乱数生成器１１０は割り込み要求信号受信部２００、シード生成部２１０、カウント値格納部２３０、擬似乱数演算部２４０、擬似乱数格納部２６０、演算部処理状態格納部２８０より構成される。
【００５４】
割り込み要求信号受信部２００には、１若しくは２以上の各モジュールから出力される割り込み要求信号が入力される。割り込み要求信号受信部２００は割り込み要求信号が有効になったことを検出し、カウント値取得信号６００を出力する。この際、割り込みコントローラ１２０と異なり、割り込み要求信号受信部２００では各信号線の優劣は存在しない。割り込み要求信号が入力されれば必ず割り込み要求信号受信部２００はカウント値取得信号６００が出力される設計となっている。
【００５５】
この割り込み要求信号受信部２００の構成を図３に基づき具体的に説明する。
【００５６】
このモジュールは割り込み要求信号ごとに用意されたエッジ検出部３００及びオアゲート３０１から構成される。
【００５７】
各モジュールから出力される割り込み要求信号に対して、その割り込み要求信号のエッジを検出するエッジ検出部３００が割り込み要求信号ごとに配置されている。このエッジ検出部３００が割り込み要求信号のエッジを検出すると、検出したエッジ検出部３００がパルスを出力する。
【００５８】
エッジ検出部３００から出力されたパルスはオアゲート３０１に入力され、オアゲート３０１からカウント値取得信号６００として出力される。すなわち、いずれか１つの割り込み要求信号が出力され、対応したエッジ検出部３００がパルスを出力すれば、割り込み要求信号の優劣無くオアゲート３０１からカウント値取得信号６００が出力される構成である。
【００５９】
なお、エッジを検出することとしているのは、割り込み要求信号がレベルトリガで設計されている場合を考慮したものである。エッジ検出にすることにより、割り込み要求信号がレベルトリガである場合でも、エッジ検出部３００は１パルスのみ出力することになり、カウント値取得信号２０１がアクティブになり続けることを防止する。
【００６０】
図２の説明に戻る。シード生成部２１０はカウンタ２２０を具備する。そして、シード生成部２１０には割り込み要求信号受信部２００から出力されたカウント値取得信号６００が入力される。
【００６１】
このカウンタ２２０は、マイクロコンピュータ１００の電源供給開始、または擬似乱数生成器１１０に対するクロック供給の開始と共に動作を開始する。そして、擬似乱数生成器１１０への電源またはクロック供給の停止までカウンタ２２０は動作する。カウンタ２２０の動作クロックは、マイクロコンピュータ１００の動作クロックや擬似乱数生成器１１０の動作クロックに対して、同期したクロック、または、非同期のクロック、どちらを使用してもよい。また、カウンタ２２０のカウント方法は、単調増加、単調減少のどちらでもよいが、カウンタ２２０のカウント値は外部から観測できない構成とすることが望ましい。
【００６２】
カウント値取得信号６００が入力されると、シード生成部２１０は、そのときにカウンタ２２０が示すカウント値を取得し、カウント値格納部２３０へ出力する。
【００６３】
カウント値格納部２３０は、シード生成部２１０より出力されたカウント値を内部レジスタに格納する。カウント値格納部２３０は、１又は２以上のカウント値を格納できる構成をとり、取得したカウント値を順次格納していく。全ての格納領域への格納がなされると、格納しているカウント値の古いものから順次書き換えるＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式、具体的実装方法としてはリングバッファ方式で更新する。このカウント値格納部に格納された複数個のカウント値が擬似乱数演算部２４０で使用されるシードとなる。カウント値格納部２３０の格納内容は、擬似乱数生成器１１０外部からの観測、および、書換えができない構成とすることが望ましい。
【００６４】
擬似乱数演算部２４０は外部から入力される擬似乱数生成要求信号２５０を受け、カウント値格納部２３０に格納されたカウント値をシードとして擬似乱数を生成する回路である。擬似乱数の発生には線形合同法、混合合同法、平方採中法といった各種方法が存在するが、本発明ではいずれの方法であっても問題ない。ただし、ハッシュ関数のような、擬似乱数格納部２６０の格納値からカウント値格納部２３０に格納されたシードの内容が推定困難である一方向性の高い演算アルゴリズムが用いられることが好ましい。なお、擬似乱数演算部２４０が導出した擬似乱数は、擬似乱数演算結果２４１として擬似乱数格納部２６０に出力される。
【００６５】
擬似乱数生成要求信号２５０は擬似乱数生成器１１０に対して擬似乱数の生成を要求する信号である。この信号の入力を契機として、擬似乱数演算部２４０がカウント値格納部２３０からシードを取得し、擬似乱数を生成する。
【００６６】
擬似乱数格納部２６０は擬似乱数演算部２４０から出力された擬似乱数を格納しておくバッファである。擬似乱数生成要求信号２５０をアクティブにした要求元のモジュールは、擬似乱数読出要求信号２７０をアクティブにすることによって擬似乱数格納部２６０に格納されている擬似乱数をＣＰＵバス１０６経由で取得し乱数として使用する。この擬似乱数格納部２６０の格納値は、擬似乱数格納部リセット信号２９１を受けて擬似乱数格納部２６０の格納内容はリセットされる。
【００６７】
演算部状態格納部２８０は擬似乱数演算部２４０がどのような状況にあるのかを示すレジスタを含む。このレジスタは擬似乱数演算部２４０によってアクティブにされ、外部の機能モジュールからの状態リセット信号２８１でリセットされる。また、擬似乱数を必要とする各機能モジュールに対して演算部処理状態通知信号２９０を出力する。また、内部的には擬似乱数格納部リセット信号２９１を擬似乱数格納部２６０に対して出力する。
【００６８】
以下、この擬似乱数生成器１１０を用いて、擬似乱数を必要とする機能モジュール、ここでは一例としてＣＰＵ１３０が擬似乱数を取得する方法を図４に基づき説明する。
【００６９】
図４は、擬似乱数生成器１１０と擬似乱数要求元との間のコマンドのやり取りを表す流れ図である。
【００７０】
擬似乱数が必要となった際には、ＣＰＵ１３０は擬似乱数生成器１１０に対して擬似乱数生成要求信号２５０を入力する（ステップＳ１００１）。上述の通り、擬似乱数生成要求信号２５０は擬似乱数演算部２４０に入力され、擬似乱数の生成開始を示す信号として使用する。
【００７１】
擬似乱数演算部２４０は、擬似乱数生成要求信号２５０の入力により、カウント値格納部２３０のレジスタに格納された１または２以上のカウント値を取得する。このカウント値をシードとして、擬似乱数演算を開始する（ステップＳ１００２）。
【００７２】
擬似乱数演算部２４０の演算が終了すると、擬似乱数演算部２４０は演算結果を擬似乱数格納部２６０に格納する（ステップＳ１００３）。この後、擬似乱数演算部２４０は演算部処理状態格納部２８０のレジスタに擬似乱数演算の結果をセットし、演算部処理状態通知信号２９０を介してＣＰＵ１３０に対して演算が完了したことを通知する（ステップＳ１００４）。
【００７３】
演算部処理通知信号２９０によって擬似乱数演算処理が完了したことを知ると、ＣＰＵ１３０は擬似乱数読出信号２７０を出力する（ステップＳ１００５）。これを受け、擬似乱数格納部２６０はＣＰＵバス１０６上に擬似乱数を出力する（ステップＳ１００６）。
【００７４】
ＣＰＵ１３０は所望した擬似乱数を受けると、状態リセット信号２８１を出力する（ステップＳ１００７）。これにより、演算部処理状態格納部２８０のレジスタをリセットする。合わせて、演算部処理状態格納部２８０は擬似乱数格納部２６０に擬似乱数格納部リセット信号２９１を出力し、格納された擬似乱数を消去する（ステップＳ１００８）。これにより、一連の処理を完了する。
【００７５】
以上の構成をとることで次のような効果を得ることができる。
【００７６】
すなわち、擬似乱数生成要求信号２５０と無関係かつ規則なく、カウント値は割り込み発生によりリフレッシュされるため、シード値の推定が困難なことである。また、外部入力によるシードの推認が意味を成さず再現困難性が担保される。
【００７７】
（第２の実施の形態）
第２の実施の形態は、第１の実施の形態の変形例である。すなわち第２の実施の形態は、第１の実施の形態のカウント値格納部２３０のカウント値格納時の処理を変更している。
【００７８】
第１の実施の形態では、シード生成部２１０の出力をカウント値格納部２３０は、そのままレジスタに格納した。これを、カウント値格納部２３０のレジスタ中の書き込む対象となる記憶領域にすでに書き込まれている値と組み合わせた値を新たに記憶することとする。
【００７９】
具体的な構成としては、シード生成部２１０の出力値と、格納先に格納されている値との排他的論理和をとった値をカウント値格納部２３０のレジスタに新たに書き込む構成などが考えられる。
【００８０】
このように、シードに割り込み要求信号で生じた過去のシードの履歴を反映することで、同一の乱数を得たい攻撃者は、マイクロコンピュータ１００の起動直後からの全ての割り込み要求信号の発生タイミングを推定、および、再現することが必要になるため、再現困難性が向上する。
【００８１】
（第３の実施の形態）
図５は本発明の第３の実施の形態に関わるマイクロコンピュータ１０１の擬似乱数生成器１１１のブロック図である。なお、マイクロコンピュータ１０１自体の構成は第１の実施の形態のマイクロコンピュータ１００の図1の擬似乱数生成器１１０を擬似乱数生成器１１１に置き換えるのみである。従って、マイクロコンピュータ１０１自体の構成は省略する。
【００８２】
この擬似乱数生成器１１１はマイクロコンピュータ１０１に接続された第１外部デバイス１６０、第２外部デバイス１６２などから送信される外部割込み要求信号と、マイクロコンピュータ１０１内部のモジュール、たとえば画像処理部１３１、から送信される割り込み要求信号を明確に区別し、これらを組み合わせて入力する方式である。
【００８３】
外部割り込み要求信号４０５は、外部デバイスから任意のタイミングでマイクロコンピュータ１０１とは非同期の信号が入力されるという利点を持つ。すなわち、内部割込み要求信号４０６を出力する内部モジュールは、クロック生成器１４０の出力するクロックを基準に動作することが多い。従って、割り込み要求信号もある程度はクロック生成器１４０の出力に左右されるため、規則性を排除することは困難であるためである。一方で、外部割り込み要求信号４０５はマイクロコンピュータ１０１のパッケージ外部に露出している端子に入力される外部デバイスからの信号であり、これら端子への意図的な入力及び端子の観察等が可能であるといった欠点がある。
【００８４】
これに対し、内部割り込み要求信号４０６は、上述の通り発生タイミングに規則性を生じ、攻撃者に発生タイミングを推定する機会を与える可能性がある。
【００８５】
しかし、内部割り込み要求信号４０６はマイクロコンピュータ１０１外部からの観察は困難である。内部割り込み要求信号４０６の発生タイミングを推定するためには、マイクロコンピュータ１０１の設定やマイクロコンピュータ１０１上で動作するソフトウェアの動作を解析する必要が生じる。
【００８６】
外部割り込み要求信号４０５及び内部割り込み要求信号４０６の実装上の課題を解決するために、外部割り込み要求信号４０５と内部割り込み要求信号４０６を共に擬似乱数生成器１１０に入力することで、シードの再現困難性が向上する。
【００８７】
（第４の実施の形態）
図６は本発明の第４の実施の形態に関わるマイクロコンピュータ１０２の擬似乱数生成器１１２のブロック図であり、図７はこの擬似乱数生成器１１２の割り込み要求信号受信部５００の構成を表すブロック図である。なお、第３の実施例同様、マイクロコンピュータ１０２自体の構成は第１の実施の形態のマイクロコンピュータ１００と同じであるので省略する。
【００８８】
本実施の形態の擬似乱数生成器１１２は割り込み要求信号受信部５００、シード生成部２１０、カウント値格納部２３０、擬似乱数格納部２６０、擬似乱数格納部２６０、演算部処理状態格納部２８０、ＩＤ格納部５１０、擬似乱数演算部５４０より構成される。なお、第１の実施の形態の擬似乱数生成器１１２の構成部材と項番が同一のものについては同一の構成を採るので説明は省略する。また、機能モジュールと擬似乱数生成器１１２間の処理についても図４と同一であり省略する。
【００８９】
本実施の形態の割り込み要求信号受信部５００は、入力される割り込み要求信号の本数に対応したエッジ検出部３００とＩＤ生成部３１０及び出力信号であるカウント値取得信号６００を生成するオアゲート３０１より構成される。
【００９０】
エッジ検出部３００は割り込み要求信号を受信し、立ち上がりもしくは立ち下がりエッジを検出する。第１の実施の形態同様、エッジ検出部３００の出力はオアゲート３０１を経由し、カウント値取得信号６００としてシード生成部２１０に出力される。一方で第１の実施の形態と異なり、エッジ検出部３００の出力は割り込み要求信号受信部５００中のＩＤ生成部３１０にも出力される。
【００９１】
ＩＤ生成部３１０は各エッジ検出部３００の出力を受信するが、受信した信号線から要求元の識別子を生成する。この識別子をＩＤ信号５０１としてＩＤ格納部５１０に出力する。
【００９２】
ＩＤ格納部５１０はカウント値格納部２３０同様にレジスタを有する。そしてこのレジスタに送信されるＩＤ信号６３０の識別子を記憶する。また、カウント値格納部２３０同様に全ての格納領域への格納を完了すると、格納している識別子の古いものから順次書き換えて格納する。第２の実施例同様、割り込み要求信号の発生履歴を残し再現困難性を向上させるために、割り込み要求信号受信部５００より入力したＩＤと、格納先に格納されている値との排他的論理和をとった値を格納しても良い。このＩＤ格納部５１０のレジスタの値は擬似乱数演算部５４０によって参酌される。
【００９３】
擬似乱数演算部５４０は擬似乱数生成信号２５０がアクティブになると擬似乱数生成処理を行う点では第１の実施の形態と同様である。ただし、シードとして参酌する対象がカウント値格納部２３０のレジスタだけでなく、ＩＤ格納部５１０のレジスタも対象とする点で異なる。
【００９４】
このような構成にすることで、攻撃者は割り込み要求信号の発生タイミングのみならずその割り込み要求信号の要求元の推定、及び、再現が必要となるため、再現困難性が向上する。
【００９５】
（第５の実施の形態）
図８は本発明の第５の実施の形態に関わる擬似乱数生成器１１３のブロック図である。
【００９６】
第４の実施の形態では、ＩＤ格納部５１０を専用に設け、擬似乱数演算部５４０はＩＤ格納部５１０及びカウント値格納部２３０それぞれに対してシード値となるレジスタの値を参照していた。
【００９７】
この擬似乱数生成器１１３は、割り込み要求信号受信部５７０、シード生成部２１１、Ｉ／Ｄカウント値格納部７３０、擬似乱数演算部２４０、擬似乱数格納部２６０、擬似乱数格納部２６０、演算部処理状態格納部２８０より構成される。なお、先の実施の形態と項番が同じものについては同一の構成を採るため、モジュールの説明は省略する。
【００９８】
割り込み要求信号受信部５７０の内部構成は第４の実施の形態のそれと同様である。ただし、本実施の形態では、ＩＤ信号５０１をもシード生成部２１１に送信する点で相違する。
【００９９】
シード生成部２１１は割り込み要求信号受信部２０１からのカウント値取得信号に加え、ＩＤ信号５０１も受信する。内部的には、カウンタ２２１を有し、カウント値取得信号がアクティブになったときにカウント値を生成する。そしてＩＤ信号５０１と生成したカウント値をまとめてＩＤ／カウント値信号としてＩＤ／カウント値格納部７３０に出力する。
【０１００】
ＩＤ／カウント値格納部７３０は受信しレジスタに記憶する信号がＩＤ／カウント値信号となってはいるが、シードのビット長で整合をとれば、構成的には第１の実施の形態のカウント値格納部２３０同様である。従って、このレジスタの値を読み出す擬似乱数演算部２４０の構成も同じものとなる。  
【０１０１】
以上の構成を採ることで、内部構成を簡単にした形で第４の実施の形態の効果を得ることができる。
【０１０２】
ここまで、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能であることは言うまでもない。
【産業上の利用可能性】
【０１０３】
本発明は擬似乱数を必要とする多くの電子機器ないしはその電子機器を制御する制御装置での適用が可能である。具体的には、携帯電話機などの通信用の暗号などの用途が考えられるが、これに限定されるものではない。
【図面の簡単な説明】
【０１０４】
【図１】本発明の第１の実施の形態に関わるマイクロコンピュータの構成を表すブロック図である。
【図２】本発明の第１の実施の形態に関わる擬似乱数生成器の構成を表すブロック図である。
【図３】本発明の第１の実施の形態に関わる割り込み要求信号受信部の構成を表すブロック図である。
【図４】本発明の第１の実施の形態に関わる擬似乱数生成器と擬似乱数要求元との処理を表す流れ図である。
【図５】本発明の第３の実施の形態に関わる擬似乱数生成器の構成を表すブロック図である。
【図６】本発明の第４の実施の形態に関わる擬似乱数生成器の構成を表すブロック図である。
【図７】本発明の第４の実施の形態に関わる割り込み要求信号受信部の構成を表すブロック図である。
【図８】本発明の第５の実施の形態に関わる擬似乱数生成器の構成を表すブロック図である。
【符号の説明】
【０１０５】
１００…マイクロコンピュータ、１０６…ＣＰＵバス、１０７…周辺バス１０７、
１１０、１１１、１１２、１１３…擬似乱数生成器、
１２０…割り込みコントローラ、１３０…ＣＰＵ、
１３１…画像処理部、１３２…音声処理部、１３３…暗号処理部、
１３４…メモリコントローラ、１３５…ＤＭＡコントローラ、
１３６…周辺バスコントローラ、１４０…クロック生成器、１４１…タイマ、
１４２…外部バスコントローラ、１４３…Ｉ／Ｏポート、１５０…メモリ、
２００…割り込み要求信号受信部、２１０…シード生成部、２２０…カウンタ、
２３０…カウント値格納部、２４０…擬似乱数演算部、２６０…擬似乱数格納部、
３００…エッジ検出部、３０１…オアゲート、３１０…ＩＤ生成部
５００…割り込み要求信号受信部、５１０…ＩＤ格納部、
７３０…ＩＤ／カウント値格納部
【図１】
2009003495.tif 000003
【図２】
2009003495.tif 000004
【図３】
2009003495.tif 000005
【図４】
2009003495.tif 000006
【図５】
2009003495.tif 000007
【図６】
2009003495.tif 000008
【図７】
2009003495.tif 000009
【図８】
2009003495.tif 000010