(57)【特許請求の範囲】
【請求項１】
入力された正の整数ｎが素数であるか否かを判定する素数判定装置であって、
前記ｎの平方根ｎ1/2以下の全ての素数が予め記憶されている素数記憶手段と、
前記素数記憶手段内の何れの素数でも割り切れない正の整数αが予め記憶されている整数記憶手段と、
前記入力された正の整数ｎと前記整数記憶手段内の整数αとを乗算し、乗算結果ｍ（＝ｎα）を算出する乗算手段と、
前記乗算手段により得られた乗算結果ｍを前記素数記憶手段内の何れかの素数で割った余りｒを算出する除算手段と、
前記除算手段により得られた余りｒが前記素数記憶手段の何れの素数で割った場合も０でないとき、前記入力された正の整数ｎを素数であると判定する判定手段と、
を備えたことを特徴とする素数判定装置。
【請求項２】
請求項１に記載の素数判定装置において、
前記整数記憶手段内の整数αは、前記素数記憶手段内の最大の素数よりも大きい素数であることを特徴とする素数判定装置。
【請求項３】
請求項１に記載の素数判定装置において、
前記整数記憶手段は、前記正の整数αの集合｛αj｝が記憶されており、
前記乗算手段は、前記整数記憶手段内の何れかの正の整数αjが選択されたとき、この選択された正の整数αjを用いて前記乗算を実行することを特徴とする素数判定装置。
【請求項４】
請求項３に記載の素数判定装置において、
前記正の整数αの集合｛αj｝は、前記素数記憶手段内の最大の素数よりも大きい素数の集合であることを特徴とする素数判定装置。
【請求項５】
入力された正の整数ｎが素数候補であるか否かを判定する素数判定装置であって、
前記ｎの平方根ｎ1/2以下の全ての素数のうち、幾つかの素数が予め記憶されている素数部分記憶手段と、
前記素数部分記憶手段内の何れの素数でも割り切れない正の整数βが予め記憶されている整数記憶手段と、
前記入力された正の整数ｎと前記整数記憶手段内の整数βとを乗算し、乗算結果ｇ（＝ｎβ）を算出する乗算手段と、
前記乗算手段により得られた乗算結果ｇを前記素数部分記憶手段内の何れかの素数で割った余りｒを算出する除算手段と、
前記除算手段により得られた余りｒが前記素数部分記憶手段の何れの素数で割った場合も０でないとき、前記入力された正の整数ｎを素数候補であると判定する判定手段と、
を備えたことを特徴とする素数判定装置。
【請求項６】
請求項５に記載の素数判定装置において、
前記整数記憶手段内の整数βは、前記素数部分記憶手段内の最大の素数よりも大きい素数であることを特徴とする素数判定装置。
【請求項７】
請求項５に記載の素数判定装置において、
前記整数記憶手段は、前記正の整数βの集合｛βh｝が記憶されており、
前記乗算手段は、前記整数記憶手段内の何れかの正の整数βhが選択されたとき、この選択された正の整数βhを用いて前記乗算を実行することを特徴とする素数判定装置。
【請求項８】
請求項７に記載の素数判定装置において、
前記正の整数βの集合｛βh｝は、前記素数部分記憶手段内の最大の素数よりも大きい素数の集合であることを特徴とする素数判定装置。
【請求項９】
入力された正の整数ｎが素数であるか否かを判定する素数判定方法であって、
前記ｎの平方根ｎ1/2以下の全ての素数が予め記憶されている素数記憶手段と、
前記素数記憶手段内の何れの素数でも割り切れない正の整数αが予め記憶されている整数記憶手段とを用い、前記入力された正の整数ｎと前記整数記憶手段内の整数αとを乗算し、乗算結果ｍ（＝ｎα）を算出する乗算工程と、
前記乗算工程により得られた乗算結果ｍを前記素数記憶手段内の何れかの素数で割った余りｒを算出する除算工程と、
前記除算工程により得られた余りｒが前記素数記憶手段の何れの素数で割った場合も０でないとき、前記入力された正の整数ｎを素数であると判定する判定工程と、を含んでいることを特徴とする素数判定方法。
【請求項１０】
請求項９に記載の素数判定方法において、
前記整数記憶手段内の整数αは、前記素数記憶手段内の最大の素数よりも大きい素数であることを特徴とする素数判定方法。
【請求項１１】
請求項９に記載の素数判定方法において、
前記整数記憶手段は、前記正の整数αの集合｛αj｝が記憶されており、
前記乗算工程は、前記整数記憶手段内の何れかの正の整数αjが選択されたとき、この選択された正の整数αjを用いて前記乗算を実行することを特徴とする素数判定方法。
【請求項１２】
請求項１１に記載の素数判定方法において、
前記正の整数αの集合｛αj｝は、前記素数記憶手段内の最大の素数よりも大きい素数の集合であることを特徴とする素数判定方法。
【請求項１３】
入力された正の整数ｎが素数候補であるか否かを判定する素数判定方法であって、
前記ｎの平方根ｎ1/2以下の全ての素数のうち、幾つかの素数が予め記憶されている素数部分記憶手段と、
前記素数部分記憶手段内の何れの素数でも割り切れない正の整数βが予め記憶されている整数記憶手段とを用い、
前記入力された正の整数ｎと前記整数記憶手段内の整数βとを乗算し、乗算結果ｇ（＝ｎβ）を算出する乗算工程と、
前記乗算工程により得られた乗算結果ｇを前記素数部分記憶手段内の何れかの素数で割った余りｒを算出する除算工程と、
前記除算工程により得られた余りｒが前記素数部分記憶手段の何れの素数で割った場合も０でないとき、前記入力された正の整数ｎを素数候補であると判定する判定工程と、
を含んでいることを特徴とする素数判定方法。
【請求項１４】
請求項１３に記載の素数判定方法において、
前記整数記憶手段内の整数βは、前記素数部分記憶手段内の最大の素数よりも大きい素数であることを特徴とする素数判定方法。
【請求項１５】
請求項１３に記載の素数判定方法において、
前記整数記憶手段は、前記正の整数βの集合｛βh｝が記憶されており、
前記乗算工程は、前記整数記憶手段内の何れかの正の整数βhが選択されたとき、この選択された正の整数βhを用いて前記乗算を実行することを特徴とする素数判定方法。
【請求項１６】
請求項１５に記載の素数判定方法において、
前記正の整数βの集合｛βh｝は、前記素数部分記憶手段内の最大の素数よりも大きい素数の集合であることを特徴とする素数判定方法。
【請求項１７】
入力された正の整数ｎが素数であるか否かを判定する素数判定装置に用いられる素数判定プログラムであって、
前記素数判定装置のコンピュータを、
前記ｎの平方根ｎ1/２以下の全ての素数が予め記憶されている素数記憶手段、前記素数記憶手段内の何れの素数でも割り切れない正の整数αが予め記憶されている整数記憶手段、
前記入力された正の整数ｎと前記整数記憶手段内の整数αとを乗算し、乗算結果ｍ（＝ｎα）を算出する乗算手段、
前記乗算手段により得られた乗算結果ｍを前記素数記憶手段内の何れかの素数で割った余りｒを算出する除算手段、
前記除算手段により得られた余りｒが前記素数記憶手段の何れの素数で割った場合も０でないとき、前記入力された正の整数ｎを素数であると判定する判定手段、
として機能させるための素数判定プログラム。
【請求項１８】
請求項１７に記載の素数判定プログラムにおいて、
前記整数記憶手段内の整数αは、前記素数記憶手段内の最大の素数よりも大きい素数であることを特徴とする素数判定プログラム。
【請求項１９】
請求項１７に記載の素数判定プログラムにおいて、
前記整数記憶手段は、前記正の整数αの集合｛αj｝が記憶されており、
前記乗算手段は、前記整数記憶手段内の何れかの正の整数αjが選択されたとき、この選択された正の整数αjを用いて前記乗算を実行することを特徴とする素数判定プログラム。
【請求項２０】
請求項１９に記載の素数判定プログラムにおいて、
前記正の整数αの集合｛αj｝は、前記素数記憶手段内の最大の素数よりも大きい素数の集合であることを特徴とする素数判定プログラム。
【請求項２１】
入力された正の整数ｎが素数候補であるか否かを判定する素数判定装置に用いられる素数判定プログラムであって、
前記素数判定装置のコンピュータを、
前記ｎの平方根ｎ1/2以下の全ての素数のうち、幾つかの素数が予め記憶されている素数部分記憶手段、
前記素数部分記憶手段内の何れの素数でも割り切れない正の整数βが予め記憶されている整数記憶手段、
前記入力された正の整数ｎと前記整数記憶手段内の整数βとを乗算し、乗算結果ｇ（＝ｎβ）を算出する乗算手段、
前記乗算手段により得られた乗算結果ｇを前記素数部分記憶手段内の何れかの素数で割った余りｒを算出する除算手段、
前記除算手段により得られた余りｒが前記素数部分記憶手段の何れの素数で割った場合も０でないとき、前記入力された正の整数ｎを素数候補であると判定する判定手段、
として機能させるための素数判定プログラム。
【請求項２２】
請求項２１に記載の素数判定プログラムにおいて、
前記整数記憶手段内の整数βは、前記素数部分記憶手段内の最大の素数よりも大きい素数であることを特徴とする素数判定プログラム。
【請求項２３】
請求項２１に記載の素数判定プログラムにおいて、
前記整数記憶手段は、前記正の整数βの集合｛βh｝が記憶されており、
前記乗算手段は、前記整数記憶手段内の何れかの正の整数βhが選択されたとき、この選択された正の整数βhを用いて前記乗算を実行することを特徴とする素数判定プログラム。
【請求項２４】
請求項２３に記載の素数判定プログラムにおいて、
前記正の整数βの集合｛βh｝は、前記素数部分記憶手段内の最大の素数よりも大きい素数の集合であることを特徴とする素数判定プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、素数判定装置、方法及びプログラムに係り、特に、素数判定中における外部からの解析に対し、素数判定に用いたデータの漏洩を阻止し得る素数判定装置、方法及びプログラムに関する。
【０００２】
【従来の技術】
社会における急速な情報関連技術の発展に伴い、電子情報の秘匿手段、認証手段として暗号技術の重要性が高まっている。係る暗号技術は、ＤＥＳ（Data Encryption Standard）方式に代表される秘密鍵方式と、ＲＳＡ（Rivest-Shamir-Adleman）方式に代表される公開鍵方式とが広く用いられている。
【０００３】
公開鍵方式は、多くの場合、素数が重要な役割を果たしており、素数のもつ性質を利用している。例えば、ＲＳＡ方式では秘密鍵として２つの素数ｐ，ｑを用い、ＤＳＡ（Digital signature Algorithm）方式では公開鍵として２つの素数ｐ，ｑを用いている。
【０００４】
素数の生成方法は、一般に、適当に生成した正の整数に素数判定アルゴリズムを適用し、素数と判定された場合にその正の整数を素数として出力する方式が用いられている。
【０００５】
素数判定アルゴリズムは、ラビン（Rabin）法（シリーズ／情報科学の数学  現代暗号、岡本龍明，山本博資著、産業図書株式会社、P.１８-１９（１９９７））などのように、高度な数学に基づく方法から、「エラトステネスのふるい（飾）」のように古くから周知の方法まで、数多くの方法が存在する。
【０００６】
ここで、エラトステネスのふるいは、素数候補ｎに対し、ｎ1/2（ｎの平方根）以下の全ての素数で割り切れない時に、素数候補ｎを素数であると判定する方法である。逆に言うと、１つでも割り切れる素数がある時には、素数候補ｎを合成数と判定する方法である。
【０００７】
係るエラトステネスのふるいは、確実に素数か否かを判定できる反面、ｎが大きくなるとｎ1/2以下の素数の個数も大きくなり、判定時間も長くなるため、通常、ラビン法などの他の素数判定方法と組合せて利用される。
【０００８】
例えば、他の素数判定方法の実行前に、素数候補ｎをｎ1/2以下の（全てではなく）幾つかの素数で割ってみて、割り切れないことを確認する、というように利用される。
【０００９】
これは、ラビン法などの素数判定アルゴリズムは、通常、処理量の多いべき乗剰余算を含むため、事前にエラトステネスのふるいを少しだけ実行し、この段階で合成数を排除した方が、素数判定の高速化に有効であるという理由による。
【００１０】
また、このような素数判定アルゴリズムにおいては、生成中も生成後も素数を秘密に保持する必要がある。理由は、例えばＲＳＡ方式では素数を秘密鍵として用いるため、秘密鍵保持者以外に素数が知られると、暗号文が解読可能となるからである。
【００１１】
さらに、秘密鍵の一部の情報（ある特定のビットの値など）が漏れることも、例えば鍵の全数探索の際に、探索対象の個数を大幅に減らして、鍵の解析の糸口を与えるため、望ましくない。このため、素数を厳重に管理し、秘密に保持している。
【００１２】
しかしながら、近年、スマートカードにおける演算中の状態を観察し、データの値と演算の内容とを解析する方法が提案され始めている。係る解析方法としては、例えば、コチャー（Kocher）らにより提案された電力解析及びタイミング解析などが強力な方式として知られている。
【００１３】
電力解析は、スマートカードにおける演算中の消費電力を計測し、電力波形の解析に基づき、演算のデータを推測する手法である（P. Kocher, J. Jaffe, B. Jun、"Differential Power Analysis", Advances in Cryptology : Proceeding of CRYPTO’99, Springer-Verlag, 1999, pp.388-397）。
【００１４】
また、タイミング解析は、演算の処理時間がデータ依存であることに基づき、演算のデータを推測する手法である（P. C. Kocher, “Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems", Advances in Cryptology : Proceedings of CRYPTO’96, Springer-Verlag, 1996, PP.104-113）。
【００１５】
これらの解析方法によれば、特に乗算、除算では、演算に使われたデータに依存して消費電力や処理時間が変わるため、多くの情報を外部に漏らすことが知られている。ここで、外部とは、権限の無い第三者又は第三者装置などを意味している。
【００１６】
前述したエラトステネスのふるいでは、秘密鍵の候補ｎを除算のデータとして用いるため、電力解析やタイミング解析によりｎの情報が外部に漏れる可能性がある。
【００１７】
【発明が解決しようとする課題】
以上説明したように従来の素数判定装置では、素数判定中に、電力解析やタイミング解析といった外部からの解析手法を施されたとしても、素数判定対象の素数候補を外部に漏洩させない必要がある。
【００１８】
本発明は上記実情を考慮してなされたもので、素数判定時に電力解析やタイミング解析を施されても、素数候補の漏洩を阻止し得る素数判定装置、方法及びプログラムを提供することを目的とする。
【００１９】
【課題を解決するための手段】
本発明の骨子は、素数候補ｎをそのまま除算せずに、素数候補ｎを含む見掛け上の素数候補ｎαを除算して素数判定を行なう構成により、除算中における外部からの解析に対し、素数候補ｎの漏洩を阻止することにある。
【００２０】
さて以上のような本発明の骨子に対し、具体的には以下のような手段が講じられる。なお、各発明は、重複した記載を避ける観点から、装置として表現された場合のみを示すが、方法、システム又はプログラム等の他のカテゴリーで表現してもよいことは言うまでもない。
【００２１】
本発明は、入力された正の整数ｎが素数であるか否かを判定する素数判定装置であって、前記ｎの平方根ｎ1/2以下の全ての素数が予め記憶されている素数記憶手段と、前記素数記憶手段内の何れの素数でも割り切れない正の整数αが予め記憶されている整数記憶手段と、前記入力された正の整数ｎと前記整数記憶手段内の整数αとを乗算し、乗算結果ｍ（＝ｎα）を算出する乗算手段と、前記乗算手段により得られた乗算結果ｍを前記素数記憶手段内の何れかの素数で割った余りｒを算出する除算手段と、前記除算手段により得られた余りｒが前記素数記憶手段の何れの素数で割った場合も０でないとき、前記入力された正の整数ｎを素数であると判定する判定手段と、を備えている。
【００２２】
これにより、正の整数ｎの素数判定を行うとき、判定の演算中においては、素数候補ｎ自体を使わずに、素数候補ｎを整数αで隠蔽した値ｍ＝ｎαを使っている。このため、整数αを秘密に保持しておけば、ｍからｎの情報を得ることが難しくなっている。
【００２３】
従って、素数判定時に電力解析やタイミング解析を施されても、演算の消費電力波形または処理時間からｎの解析を困難にすることができるので、素数候補の漏洩を阻止することができる。
【００２４】
ここで、素数判定処理を容易且つ確実に行なう観点から次の条件（a）〜（b２）を満たすことが好ましい。
（ａ）前記整数記憶手段内の整数αは、前記素数記憶手段内の最大の素数よりも大きい素数である。
（ｂ）前記整数記憶手段は前記正の整数αの集合｛αj｝が記憶されてもよい。
【００２５】
（ｂ１）前記乗算手段は、前記整数記憶手段内の何れかの正の整数αjが選択されたとき、この選択された正の整数αjを用いて前記乗算を実行する。
この場合、正の整数αが集合の中から選択されるので、より一層、演算の消費電力波形または処理時間からｎの解析を困難にすることができる。
（ｂ２）前記正の整数αの集合｛αj｝は、前記素数記憶手段内の最大の素数よりも大きい素数の集合である。
【００２６】
一方、上述した正の整数ｎを素数であるか否かを判定する素数判定に代えて、正の整数ｎを素数候補であるか否かを判定する素数判定としてもよい。
この場合、素数記憶手段に代えて、前記ｎの平方根ｎ1/2以下の全ての素数のうち、幾つかの素数が予め記憶されている素数部分記憶手段が用いられる。また、整数記憶手段は、前記素数部分記憶手段内の何れの素数でも割り切れない正の整数βが予め記憶されたものとなる。乗算手段は、前述同様に、前記入力された正の整数ｎと前記整数記憶手段内の整数βとを乗算し、乗算結果ｇ（＝ｎβ）を算出するものでよい。また、条件（ａ）〜（ｂ２）についても同様に読み替えられる。
【００２７】
このような素数候補を判定する素数判定に変形しても、素数候補ｎを正の整数βで隠蔽する構成に変わりはないので、前述した作用と同様の作用を奏することができる。
【００２８】
【発明の実施の形態】
以下、本発明の各実施形態について図面を用いて説明する６なお、以下の説明中、素数、素数候補、整数などの語を用いるが、これらは、素数データ、素数候補データ、整数データと読み替えてもよい。
【００２９】
（第１の実施形態）
図１は本発明の第１の実施形態に係る素数判定装置の構成を示す模式図である。この素数判定装置１０は、スマートカード等の計算機の素数生成部として構成され、ハードウェア、ソフトウェア又は両者の組合せによって素数判定処理を行うものであって、具体的には、ＲＯＭ（リードオンリーメモリ）１１、ＲＡＭ（ランダムアクセスメモリ）１２、乗算器１３、除算器１４及び比較部１５を有する計算ユニット１６及びその制御部１７を備えている。
【００３０】
なお、素数判定装置１０は、ハードウェア（計算ユニット１６）及びソフトウェア（制御部１７）により構成される場合、あるいは、ソフトウェア（計算ユニット１６及び制御部１７）により構成される場合、ソフトウェアで実現される要素１７（及び１６）の機能を実現するためのプログラムが記憶媒体又はネットワークから素数判定装置１０のコンピュータに予めインストールされた構成となる。
【００３１】
ここで、ＲＯＭ１１は、入力される正の整数ｎの平方根（ｎ1/2）以下の素数全体｛ｐ1，ｐ2，…，ｐｓ｝を元としたテーブルＴ、およびｎ1/2以下のどの素数でも割り切れない整数αを保持する機能を有し、制御部１７からの転送制御により、整数αが乗算器１３に転送され、また、テーブルＴに含まれる素数ｐiが順次（ｉ＝1,2,…,s）、除算器１４に転送されるものである。
【００３２】
なお、テーブルＴは、入力可能な正の整数ｎの上限値又はサイズに基づいて、ｎ1/2以下の全ての素数の集合が予め設定されている。また、整数αは、テーブルＴのどの元（素数）でも割り切れない整数と読み替えてもよい。整数αは、ＲＯＭ１１に代えて、ＲＡＭ１２に保持されてもよい。
【００３３】
ＲＡＭ１２は、入力された素数候補ｎを保持する機能を有し、制御部１７からの転送制御により、素数候補ｎが乗算器１３に転送されるものである。
乗算器１３は、ＲＡＭ１２から転送された素数候補ｎと、ＲＯＭ１１から転送された整数αとの乗算ｍ＝ｎαを行う機能と、乗算結果ｍを除算器１４に出力する機能とをもっている。
【００３４】
除算器１４は、乗算器１３の出力ｍを、ＲＯＭ１２から転送された素数ｐiにより除算し、その余りを求める剰余算ｒ＝ｍ ｍｏｄ ｐiを行なう機能と、剰余算の結果ｒを比較部１５に出力する機能とをもっている。
【００３５】
比較部１５は、除算器の１４の出力ｒと“０（余り無し）”とを比較し、ｒ＝０のとき、素数候補ｎが合成数である旨を出力し、ｒ≠０のとき、比較結果を制御部１７に出力する機能をもっている。
【００３６】
制御部１７は、このような計算ユニット１６に対し、ＲＯＭ１１及びＲＡＭ１２の記憶内容を乗算器１３又は除算器１４に転送させる転送制御機能と、比較部１５の出力に基づいて、素数判定の継続を制御する機能と、テーブルＴの全ての素数ｐiによる剰余算結果ｒが０でないとき、素数候補ｎが素数である旨を示す判定結果を出力する機能とをもっている。
【００３７】
次に、以上のように構成された素数判定装置における素数判定方法について説明するが、始めに概略を述べる。
この素数判定はエラトステネスのふるいに基づいている。エラトステネスのふるいによれば、素数候補ｎがｎ1/2以下のどの素数ｐ1〜ｐsでも割り切れなければ、素数候補ｎを素数と判定できる。
【００３８】
本実施形態では、素数候補ｎを電力解析やタイミング解析から隠蔽するため、整数αを乗じた値ｍ＝ｎαをｎ1/2以下の素数で除算しているが、整数αをｎ1/2以下のどの素数でも割り切れない整数としているので、乗算結果ｎαがｎ1/2以下のどの素数でも割り切れなければ、素数候補ｎを素数と判定できる。
【００３９】
さて、このような概略に沿って、具体的には以下のように素数判定が実行される。
いま、素数判定装置１０において、例えば暗号用の素数生成アルゴリズムの実行中に、正の整数ｎが素数であるか否かを判定する必要が生じたとする。
【００４０】
このとき、素数候補ｎは、ＲＡＭ１２に書込まれた後、制御部１７の転送制御により、ＲＡＭ１２から乗算器１３に転送される。
【００４１】
また、ＲＯＭ１１内の整数αは、制御部１７の転送制御により、乗算器１３に転送される。
【００４２】
さらに、ＲＯＭ１１内の素数ｐ1は、制御部１７の転送制御により、ＲＯＭ１１から除算器１４に転送される。なお、素数p１の転送は、乗算器１３の乗算後に行なってもよい。
【００４３】
さて乗算器１３は、各々転送された素数候補ｎと整数αとを乗算し、乗算結果ｍ（＝ｎα）を除算器１４に出力する。以後、素数候補ｎは、乗じられた整数αのため、電力解析やタイミング解析が困難となる。
【００４４】
除算器１４は、乗算器１３の出力ｍを、ＲＯＭ１２から転送された素数ｐiにより除算し、その余りを求める剰余算ｒ＝ｍ ｍｏｄ ｐiを行ない、剰余算の結果ｒを比較部１５に出力する。
【００４５】
比較部１５は、除算器１４の出力ｒと０とを比較し、ｒ＝０のとき、素数候補ｎが合成数である旨を出力し、素数判定装置１０は処理を終了する。一方、比較部１５は、比較結果がｒ≠０のとき、比較結果を制御部１７に出力する。
【００４６】
制御部１７は、この比較結果により、次の素数ｐi+1による素数判定を行なうため、ＲＯＭ１１を制御し、テーブルＴ内の素数ｐi+1を除算器１４に転送させる。
【００４７】
以下前述同様に、除算器１４による剰余算の結果ｒ（＝ｍ ｍｏｄ ｐi+1）が比較部１５に出力され、比較部１５による剰余ｒと０との比較が行われ、ｒ＝０であれば合成数である旨を出力して処理を終了するが、比較結果がｒ≠０であれば、次の素数ｐi+2による素数判定が行われる。
【００４８】
以下、このような素数判定が最長の場合、テーブルＴ内の最大の素数ｐsまで繰り返される。
上述したように本実施形態によれば、正の整数ｎの素数判定を行うとき、判定の演算中においては、素数候補ｎ自体を使わずに、素数候補ｎを整数αで隠蔽した値ｍ＝ｎαを使っている。
【００４９】
このため、素数判定時に電力解析やタイミング解析を施されても、演算の消費電力波形または処理時間から素数候補ｎの解析を困難にすることができるので、素数候補ｎの漏洩を阻止することができる。
【００５０】
（第２の実施形態）
図２は本発明の第２の実施形態に係る素数判定装置の構成を示す模式図であり、図１と同一部分には同一符号を付すと共に、ほぼ同一部分にはアルファベットの添字を付して、その詳しい説明を省略し、ここでは異なる部分について主に述べる。なお、以下の各実施形態も同様にして重複した部分の説明を省略する。
【００５１】
すなわち、本実施形態は、第１の実施形態の変形例であり、整数αをランダムに取ることにより、外部からの解析をより困難にすることを図っている。具体的には、前述したＲＯＭ１１のうち、１つの整数αに代えて、複数の整数αを要素としてもつテーブルＡを有するＲＯＭ１１ａと、ＲＯＭ１１ａのテーブルＡから１つの整数αjを選択して乗算器１３aに入力するための選択部１８とを備えている。
【００５２】
ここで、ＲＯＭ１１ａは、前述したテーブルＴと、ｎ1/2以下のどの素数でも割り切れない整数の集合｛α1，α2，…，αt｝からなるテーブルＡとを保持するものである。
【００５３】
選択部１８は、制御部１７ａからの制御により、ＲＯＭ１１ａ内のテーブルＡから整数αjをランダムに選択し（j＝1,2,…,tのいずれか）、この整数αjを乗算器１３ａに出力する機能をもっている。なお、整数αjは、１つの素数候補ｎに対し、１回だけ選択されるが、これに限らず、１つの素数候補ｎに対し、テーブルＴの各素数ｐi毎に選択されてもよい。また、選択方法は、ランダムに限らず、昇順、降順等の任意の方式が使用可能となっている。
【００５４】
乗算器１３ａは、ＲＡＭ１２から転送された素数候補ｎと、選択部１８から出力された整数αjとの乗算ｍ＝ｎαjを行う機能と、乗算結果ｍを除算器１４に出力する機能とをもっている。
【００５５】
制御部１７ａは、前述した制御部１７の機能に加え、選択部１８を制御する機能をもっている。
【００５６】
次に、以上のように構成された素数判定装置における素数判定方法について説明する。
いま、前述同様に、素数判定装置１０ａにおいて、正の整数ｎが素数であるか否かを判定する必要が生じたとする。
このとき、素数候補ｎは、前述した通り、ＲＡＭ１２から乗算器１３ａに転送される。
【００５７】
一方、選択部１８は、制御部１７ａからの制御により、ＲＯＭ１１ａ内のテーブルＡから整数αjをランダムに選択し、この整数αjを乗算器１３ａに出力する。
【００５８】
乗算器１３ａは、素数候補ｎと整数αjとの乗算結果ｍ（＝ｎαj）を除算器１４に出力する。この整数αjを乗じることにより、前述同様に、電力解析やタイミング解析が困難となるが、ここでは、整数αjが複数の整数α１〜αtのうちから選択されるため、外部からの解析がより困難となっている。
以下、前述した通り、乗算結果ｍを用いて素数候補ｎの素数判定が実行される。
【００５９】
上述したように本実施形態によれば、正の整数ｎの素数判定を行うとき、前述同様に、素数候補ｎを整数αjで隠蔽した値ｍ＝ｎαjを使うため、演算の消費電力波形または処理時間からｎの解析を困難にすることができる。
【００６０】
また、素数候補ｎに乗じる正の整数αjをランダムに選択するため、素数候補ｎの解析をより困難にすることができる。
【００６１】
（第３の実施形態）
図３は本発明の第３の実施形態に係る素数判定装置の構成を示す模式図である。本実施形態は、第１の実施形態の変形例であり、ラビン法などの素数判定アルゴリズムの実行前に、少しだけエラトステネスのふるいを用いる場合の形態であって、ＲＯＭ１１に代えて、ＲＯＭ１１ｂを備えている。
【００６２】
ここで、ＲＯＭ１１ｂは、ＲＯＭ１１のうちのテーブルＴ内の素数の個数を減らしたテーブルＵと、整数αに代えて整数βとを備えている。
ここで、テーブルＵは、ｎ1/2以下の全て（ｓ個）ではなくｔ個の素数｛ｐ1,ｐ2,…,ｐt｝が格納されている（ｔ＜ｓ）。換言すると、テーブルＵはテーブルＴの一部であり、テーブルＵ内の素数は、テーブルＴ内の素数の部分集合である。また、整数βは、テーブルＵ内のどの素数ｐ1,ｐ2,…、ｐtでも割り切れない正の整数であり、前述同様に、乗算器!３において、素数候補ｎに乗じられる整数である。なお、この整数βとして、整数αを用いてもよい。
【００６３】
制御部１７ｂは、前述した制御部１７の機能において、テーブルＴに代えて、テーブルＵを用いるものである。
【００６４】
以上のような構成によれば、第１の実施形態と同様に、素数判定の演算中においては、素数候補ｎ自体を使わずに、素数候補ｎを整数βで隠蔽した値ｇ＝ｎβを使っているため、演算の消費電力波形または処理時間からｎの解析を困難にすることができる。
【００６５】
また、素数候補ｎの素数判定用のテーブルとして、ｎ1/2以下の全ての素数のうちの幾つかの素数を用いたので、省略した素数の個数に応じて、判定結果をより高速に得ることができる。但し、判定結果は、第１の実施形態とは異なり、ｎ1/2以下で除算に用いない素数があるため、テーブルＵの全ての素数で割り切れない場合でも、「素数」とはいえずに「素数候補」を示す内容になる。
【００６６】
（第４の実施形態）
図４は本発明の第４の実施形態に係る素数判定装置の構成を示す模式図である。本実施形態は、第２及び第３の実施形態を互いに組合せた変形例であり、第３の実施形態の高速に素数候補を判定する構成に対し、第２の実施形態における整数を選択する構成を組合せたものである。
【００６７】
これに伴い、ＲＯＭ１１ｃは、前述したテーブルＵと、テーブルＵ内の全ての素数でも割り切れない整数の集合｛β1,β2,…,βq｝からなるテーブルＢを保持するものとする。
【００６８】
また、選択部１８ｃは、前述同様に、制御部１７ｃからの制御により、ＲＯＭ１１ａ内のテーブルＢから整数βhをランダムに選択し（h＝1,2,…,qのいずれか）、この整数βhを乗算器１３ａに出力する機能をもっている。また、選択方式も前述同様に、ランダムに限らず任意である。
【００６９】
乗算器１３ｃは、ＲＡＭ１２から転送された素数候補ｎと、選択部１８ｃから出力された整数βhとの乗算ｇ＝ｎβhを行う機能と、乗算結果ｇを除算器１４に出力する機能とをもっている。
【００７０】
制御部１７ｃは、前述した制御部１７ｂの機能に加え、選択部１８ｃを制御する機能をもっている。
【００７１】
以上のような構成によれば、第２の実施形態と同様の選択部１８ｃを用いた整数βhの選択を行なう一方、第３の実施形態のテーブルＵを用いて高速な素数候補判定を行なうので、第２及び第３の実施形態の効果を同時に得ることができる。
【００７２】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピーディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００７３】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００７４】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行しても良い。
【００７５】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００７６】
また、記憶媒体は１つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００７７】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【００７８】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【００７９】
なお、本願発明は、上記各実施形態に限定されるものでなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合、組み合わされた効果が得られる。さらに、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成用件における適宜な組み合わせにより種々の発明が抽出され得る。例えば実施形態に示される全構成要件から幾つかの構成要件が省略されることで発明が抽出された場合には、その抽出された発明を実施する場合には省略部分が周知慣用技術で適宜補われるものである。
【００８０】
その他、本発明はその要旨を逸脱しない範囲で種々変形して実施できる。
【００８１】
【発明の効果】
以上説明したように本発明によれば、素数判定時に電力解析やタイミング解析を施されても、素数候補の漏洩を阻止できる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る素数判定装置の構成を示す模式図
【図２】本発明の第２の実施形態に係る素数判定装置の構成を示す模式図
【図３】本発明の第３の実施形態に係る素数判定装置の構成を示す模式図
【図４】本発明の第４の実施形態に係る素数判定装置の構成を示す模式図
【符号の説明】
１０，１０ａ〜１０ｃ…素数判定装置
１１，１１ａ〜１１ｃ…ＲＯＭ
１２…ＲＡＭ
１３，１３ａ〜１３ｃ…乗算器
１４…除算器
１５…比較部
１６…計算ユニット
１７，１７ａ〜１７ｃ…制御部
１８，１８ｃ…選択部
ｎ…素数候補
ｍ，ｇ…乗算結果
αj，βh…整数
ｐ…素数
ｒ…余り
【図１】
0004678968.tif 000002
【図２】
0004678968.tif 000003
【図３】
0004678968.tif 000004
【図４】
0004678968.tif 000005