(57)【要約】【課題】  擬似的に乱数を生成させる擬似乱数生成装置に係り、電力差分解析や電磁波解析などのサイドチャネルアタックを困難にし、乱数の予測を防ぐことを課題とする。【解決手段】  １０１でフリーランカウンタＣ１を乱数の種として、鍵Ｋ１により暗号化して、中間的な乱数Ｒ１を得るとともに、１０２でフリーランカウンタＣ２を乱数の種として、鍵Ｋ２により暗号化して、中間的な乱数Ｒ２を得る。そして、１０３でこれらの乱数Ｒ１とＲ２を論理演算して、最終的な乱数Ｒを生成する。論理演算として、排他的論理和（ＸＯＲ，ＥＯＲ）を行う。【選択図】        図１
2005202757.tif 000002
【特許請求の範囲】
【請求項１】
以下の要素を有することを特徴とする擬似乱数生成装置
（１）擬似乱数を算出する擬似乱数算出部
（２）擬似乱数算出部で算出した複数の擬似乱数の論理演算を行う論理演算部。
【請求項２】
擬似乱数算出部は、暗号鍵を用いる暗号化部であることを特徴とする請求項１記載の擬似乱数生成装置。
【請求項３】
擬似乱数算出部は、フリーランカウンタの値を乱数の種に用いることを特徴とする請求項１記載の擬似乱数生成装置。
【請求項４】
擬似乱数算出部は、前回算出した乱数をフィードバックして乱数の種として用いることを特徴とする請求項１記載の擬似乱数生成装置。
【請求項５】
論理演算部は、前記複数の擬似乱数について、ビット毎に排他的論理和を得、その結果のビット群からなる乱数を算出することを特徴とする請求項１記載の擬似乱数生成装置。
【請求項６】
論理演算部は、前記複数の擬似乱数について、ビット毎に排他的論理和の否定を得、その結果のビット群からなる乱数を算出することを特徴とする請求項１記載の擬似乱数生成装置。
【請求項７】
擬似乱数生成装置となるコンピュータに、以下の手順を実行させるためのプログラム
（１）二つの擬似乱数を算出する手順
（２）算出した複数の擬似乱数の論理演算を行う手順。
【請求項８】
擬似乱数算出部は、秘密の値を用いて擬似乱数を生成することを特徴とする請求項１記載の擬似乱数生成装置。
【請求項９】
擬似乱数算出部は、一方向関数により擬似乱数を算出することを特徴とする請求項８記載の擬似乱数生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、擬似的に乱数を生成させる擬似乱数生成装置に係り、電力差分解析や電磁波解析などのサイドチャネルアタックを困難にし、乱数の予測を防ぐ装置に関する。
【背景技術】
【０００２】
従来の擬似乱数生成について説明する。図９は、フリーカウンタを用いた従来の擬似乱数生成の概念を示す図である。フリーランカウンタの値を乱数の種として、鍵Ｋにより暗号化し、乱数Ｒを求める。
【０００３】
別の例について説明する。図１０は、乱数をシードにフィードバックする従来の擬似乱数生成の概念を示す図である。前回生成した乱数を乱数の種Ｓｅｅｄとして用い、鍵Ｋにより暗号化して乱数Ｒを求める。
【０００４】
これらの擬似乱数生成装置には秘密鍵の存在が欠かせない。しかし、近年、電力差分解析や電磁波解析といったサイドチャネルアタックによって、機器内の秘密データを消費電力や電磁波から解析される恐れが発生している。これらの解析を利用して、鍵を解析しようとする場合、出力である擬似乱数ＲとＲを生成した際の擬似乱数生成器の消費電力や磁場を測定し、Ｒから機器内演算でのＲが生成されるまでの値を想定し解析を行う。このような解析を行うと、本来秘密であるべき秘密鍵が暴かれ、擬似乱数生成器としての機能である予測の困難性を著しく損なう可能性がある。
【特許文献１】特開平７−３１１６７４号公報
【特許文献２】特開平６−１０６８８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上記した従来技術の欠点を除くためになされたものであって、その目的とするところは、擬似的に乱数を生成させる擬似乱数生成装置に係り、電力差分解析や電磁波解析などのサイドチャネルアタックを困難にし、乱数の予測を防ぐことを課題とする。
【課題を解決するための手段】
【０００６】
本発明に係る擬似乱数生成装置は、
以下の要素を有することを特徴とする
（１）擬似乱数を算出する擬似乱数算出部
（２）擬似乱数算出部で算出した複数の擬似乱数の論理演算を行う論理演算部。
【発明の効果】
【０００７】
本発明においては、暗号化を２回行い、二つの中間的乱数を求め、それらの論理演算により最終的な乱数を得るので、乱数の予測を困難にできる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
以下本発明を図面に示す実施例に基づいて説明する。この実施の形態では、フリーカウンタを用いた擬似乱数生成を２回行い、これらにより得られる２つの乱数を用いて、最終的な乱数を生成する。図１は、フリーカウンタを用いた擬似乱数生成を組み合せる乱数生成の概念を示す図である。
【０００９】
１０１でフリーランカウンタＣ１を乱数の種として、鍵Ｋ１により暗号化して、中間的な乱数Ｒ１を得るとともに、１０２でフリーランカウンタＣ２を乱数の種として、鍵Ｋ２により暗号化して、中間的な乱数Ｒ２を得る。そして、１０３でこれらの乱数Ｒ１とＲ２を論理演算して、最終的な乱数Ｒを生成する。尚論理演算として、この実施の形態では、排他的論理和（ＸＯＲ，ＥＯＲ）を行う。
【００１０】
上述の乱数生成を行うための乱数生成装置の構成について説明する。図２は、フリーカウンタを用いた擬似乱数生成を組み合せる乱数生成装置の構成を示す図である。
【００１１】
擬似乱数生成装置は、フリーランカウンタ生成部２０１、暗号化部２０２、鍵記憶部２０３、乱数記憶部２０４、及び論理演算部２０５を備えている。フリーランカウンタ生成部２０１は、随時フリーランカウンタの値を生成し、出力するように構成されている。暗号化部２０２は、乱数の種と、暗号化用の鍵を入力し、当該鍵で、当該種を暗号化して乱数を生成するように構成されている。暗号化部２０２は、擬似乱数を算出する擬似乱数生成部の例であって、暗号化以外の算出方法によって擬似乱数を求めても構わない。暗号化関数ではなく、一方向性関数でも可能である。つまり秘密の値を用いて乱数を生成するものであれば、どのようなものでも適用可能である。鍵記憶部２０３は、暗号化用の鍵を記憶するように構成されている。当該鍵は、予め記憶されている。この例では、Ｋ１とＫ２の２種類の鍵を予め記憶している。乱数記憶部２０４は、暗号化部２０２で生成した中間的な乱数Ｒ１とＲ２を記憶するように構成されている。論理演算部２０５は、中間的な乱数Ｒ１とＲ２を入力して、各ビット毎の排他的論理和（ＸＯＲ，ＥＯＲ）の論理演算を行うように構成されている。
【００１２】
続いて、処理フローについて説明する。図３は、フリーカウンタを用いた擬似乱数生成を組み合せる乱数生成の処理フローを示す図である。
【００１３】
まず、フリーランカウンタ生成部２０１からフリーランカウンタの値Ｃ１を得る（Ｓ３０１）。そして、鍵記憶部２０３から鍵Ｋ１を読み出し（Ｓ３０２）、種であるＣ１を鍵Ｋ１で暗号化して乱数Ｒ１を生成する（Ｓ３０３）。この乱数Ｒ１を一旦乱数記憶部２０４に記憶する（Ｓ３０４）。
【００１４】
次に、フリーランカウンタ生成部２０１からフリーランカウンタの値Ｃ２を得る（Ｓ３０５）。そして、鍵記憶部２０３から鍵Ｋ２を読み出し（Ｓ３０６）、種であるＣ２を鍵Ｋ２で暗号化して乱数Ｒ２を生成する（Ｓ３０７）。この乱数Ｒ２も乱数記憶部２０４に記憶する（Ｓ３０８）。
【００１５】
最後に、論理演算部２０５で、乱数記憶部２０４から乱数Ｒ１とＲ２を読み出し、論理演算する（Ｓ３０９）。具体的には、それぞれのビット毎に排他的論理和（ＸＯＲ，ＥＯＲ）を得、その結果のビット群からなる最終の乱数Ｒを得る。そして、その乱数Ｒを出力する（Ｓ３１０）。
【００１６】
実施の形態２．
前述の実施の形態では、フリーランカウンタの値を乱数の種とする形態について説明したが、本実施の形態では、前回生成した乱数をフィードバックして乱数の種として用いる形態について説明する。
【００１７】
図４は、乱数をシードにフィードバックする擬似乱数生成を組み合せる乱数生成の概念を示す図である。
【００１８】
４０１で内部的に記憶しているシードＳｅｅｄ１を乱数の種として、鍵Ｋ１により暗号化して、中間的な乱数Ｒ１を得るとともに、４０２で同様に内部的に記憶しているシードＳｅｅｄ２を乱数の種として、鍵Ｋ２により暗号化して、中間的な乱数Ｒ２を得る。論理演算は、前述の形態同様に、排他的論理和（ＸＯＲ，ＥＯＲ）である。
【００１９】
そして、４０３でこれらの乱数Ｒ１とＲ２を論理演算して、最終的な乱数Ｒを生成する。また、中間的な乱数Ｒ１により、シードＳｅｅｄ１を更新し、更に中間的な乱数Ｒ２により、シードＳｅｅｄ２を更新する。
【００２０】
上述の乱数生成を行うための乱数生成装置の構成について説明する。図５は、乱数をシードにフィードバックする擬似乱数生成を組み合せる乱数生成装置の構成を示す図である。
【００２１】
擬似乱数生成装置は、シード記憶部５０１、暗号化部５０２、鍵記憶部５０３、乱数記憶部５０４、及び論理演算部５０５を備えている。シード記憶部５０１は、乱数を種となるシードを記憶するように構成されている。暗号化部５０２、鍵記憶部５０３、乱数記憶部５０４、及び論理演算部５０５は、前述の暗号化部２０２、鍵記憶部２０３、乱数記憶部２０４、及び論理演算部２０５とそれぞれ同様の処理を行うように構成されている。
【００２２】
図６は、乱数をシードにフィードバックする擬似乱数生成を組み合せる乱数生成の処理フローを示す図である。
【００２３】
暗号化部５０２は、シード記憶部５０１からシードＳｅｅｄ１を読み出し（Ｓ６０１）、鍵記憶部５０３から鍵Ｋ１を読み出し（Ｓ６０２）、種であるＳｅｅｄ１を鍵Ｋ１で暗号化して乱数Ｒ１を生成する（Ｓ６０３）。この乱数Ｒ１を一旦乱数記憶部５０４に記憶する（Ｓ６０４）。更に、シードＳｅｅｄ１を乱数Ｒ１に書き換える（Ｓ６０５）。
【００２４】
暗号化部５０２は、シード記憶部５０１からシードＳｅｅｄ２を読み出し（Ｓ６０６）、鍵記憶部５０３から鍵Ｋ２を読み出し（Ｓ６０７）、種であるＳｅｅｄ２を鍵Ｋ２で暗号化して乱数Ｒ２を生成する（Ｓ６０８）。乱数Ｒ２も乱数記憶部５０４に記憶する（Ｓ６０９）。更に、シードＳｅｅｄ２を乱数Ｒ２に書き換える（Ｓ６１０）。
【００２５】
最後に、論理演算部５０５で、乱数記憶部５０４から乱数Ｒ１とＲ２を読み出し、論理演算する（Ｓ６１１）。具体的には、それぞれのビット毎に排他的論理和（ＸＯＲ，ＥＯＲ）を得、その結果のビット群からなる最終の乱数Ｒを得る。そして、その乱数Ｒを出力する（Ｓ６１２）。
【００２６】
実施の形態３．
実施の形態１では、暗号化の都度異なる鍵Ｋ１とＫ２を用いたが、共通の鍵を用いるようにしてもよい。つまり、擬似乱数を生成する暗号化を共通にしても構わない。図７は、フリーカウンタを用いた擬似乱数生成を共通化する概念を示す図である。Ｓｅｅｄ１とＳｅｅｄ２を共通にして、Ｋ１とＫ２を異なる値にして行うことも可能である。逆にＫ１とＫ２を共通にしてＳｅｅｄ１とＳｅｅｄ２を異なる値にすることもできる。またＳｅｅｄ１とＳｅｅｄ２を更新するのではなく、Ｋ１とＫ２を更新して乱数を生成することも可能である。
【００２７】
暗号化を２回行い、二つの中間的乱数を求め、それらの論理演算により最終的な乱数を得る点は、実施の形態１と同様である。
【００２８】
実施の形態４．
実施の形態２では、暗号化の都度異なる鍵Ｋ１とＫ２を用いたが、共通の鍵を用いるようにしてもよい。つまり、擬似乱数を生成する暗号化を共通にしても構わない。図８は、乱数をシードにフィードバックする擬似乱数生成を共通化する概念を示す図である。
【００２９】
暗号化を２回行い、二つの中間的乱数を求め、それらの論理演算により最終的な乱数を得る点は、実施の形態２と同様である。
【００３０】
実施の形態５．
前述の形態では、論理演算として、それぞれのビット毎に排他的論理和（ＸＯＲ，ＥＯＲ）を得、その結果のビット群からなる最終の乱数Ｒを得る例について説明した。
【００３１】
論理演算の例として、排他的論理演算の否定を用いてもよい。つまり、それぞれのビット毎に排他的論理和の否定（ＸＮＯＲ）を得、その結果のビット群からなる最終の乱数Ｒを得るようにすることも有効である。
【００３２】
擬似乱数生成装置は、コンピュータであり、各要素はプログラムにより処理を実行することができる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることができる。
【００３３】
図１１は、擬似乱数生成装置のハードウエア構成例を示す図である。バスに、演算装置１１０１、データ記憶装置１１０２、メモリ１１０３が接続されている。データ記憶装置１１０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やハードディスクである。メモリ１１０３は、通常ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００３４】
プログラムは、通常データ記憶装置１１０２に記憶されており、メモリ４０３にロードされた状態で、順次演算装置１１０１に読み込まれ処理を行う。
【図面の簡単な説明】
【００３５】
【図１】フリーカウンタを用いた擬似乱数生成を組み合せる乱数生成の概念を示す図である。
【図２】フリーカウンタを用いた擬似乱数生成を組み合せる乱数生成装置の構成を示す図である。
【図３】フリーカウンタを用いた擬似乱数生成を組み合せる乱数生成の処理フローを示す図である。
【図４】乱数をシードにフィードバックする擬似乱数生成を組み合せる乱数生成の概念を示す図である。
【図５】乱数をシードにフィードバックする擬似乱数生成を組み合せる乱数生成装置の構成を示す図である。
【図６】乱数をシードにフィードバックする擬似乱数生成を組み合せる乱数生成の処理フローを示す図である。
【図７】フリーカウンタを用いた擬似乱数生成を共通化する概念を示す図である。
【図８】乱数をシードにフィードバックする擬似乱数生成を共通化する概念を示す図である。
【図９】フリーカウンタを用いた従来の擬似乱数生成の概念を示す図である。
【図１０】乱数をシードにフィードバックする従来の擬似乱数生成の概念を示す図である。
【図１１】擬似乱数生成装置のハードウエア構成例を示す図である。
【符号の説明】
【００３６】
２０１  フリーランカウンタ生成部、２０２  暗号化部、２０３  鍵記憶部、２０４  乱数記憶部、２０５  論理演算部、５０１  シード記憶部、５０２  暗号化部、５０３  鍵記憶部、５０４  乱数記憶部、５０５  論理演算部、１１０１  演算装置、１１０２  データ記憶装置、１１０３  メモリ。
【図１】
2005202757.tif 000003
【図２】
2005202757.tif 000004
【図３】
2005202757.tif 000005
【図４】
2005202757.tif 000006
【図５】
2005202757.tif 000007
【図６】
2005202757.tif 000008
【図７】
2005202757.tif 000009
【図８】
2005202757.tif 000010
【図９】
2005202757.tif 000011
【図１０】
2005202757.tif 000012
【図１１】
2005202757.tif 000013