説明

鍵生成装置及びプログラム

【課題】 暗号化及び復号の処理速度をバランスさせるように鍵を生成できると共に、p−1法による素因数分解を回避でき、より強固なRSA暗号方式の鍵を生成する。
【解決手段】 鍵生成処理の最初に、P−1の素因子として含ませるnrビットの素数Rを生成し、次にneビットの奇数Eを生成し、ne+n{d_p}−np−nrビットの中間変数Kpを生成し、Dp=E-1 mod KpRを満たすn{d_p}ビットのDpを生成し、P=1+(EDp−1)/Kpを計算し、Pが素数となるまでこれを繰り返し、Qに関しても同様に実行する構成により、上記課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、鍵生成装置及びプログラムに係り、特に、RSA(Rivest-Shamir-Adleman)暗号方式の鍵生成の際に、p−1法に対する耐性を持った鍵を生成する鍵生成装置及びプログラムに関する。
【背景技術】
【0002】
近年の情報通信において、暗号技術は欠かせない要素となってきている。このような暗号技術には、例えば、通信の暗号化技術であるSSL(Secure Socket Layer)や、メッセージが改ざんされていないことを検出できる電子署名などがある。これらは、PKI(Public Key Infrastructure:公開鍵基盤)の一部として、社会の電子化を支える技術となっている。
【0003】
PKIにおいては、RSA暗号方式と呼ばれる公開鍵暗号方式が広く使われている。RSA暗号方式では、次式に示すように、公開鍵N,E及び秘密鍵Dに基づいて、メッセージMを暗号化して暗号文Cを作成し、また、暗号文CからメッセージMを復号する。
【0004】
暗号化:C=ME mod N
復号 :M=CD mod N
ここで、公開鍵N,E及び秘密鍵Dの間には、2つの素数P,Qに基づく(1)式及び(2)式に示す関係がある。
【0005】
N=P×Q (1)
ED=1 mod ((P−1)(Q−1)) (2)
ここで用いる鍵のビット数は、暗号解読を困難にするために十分大きい必要があり、現時点では公開鍵Nが1024ビット、あるいは2048ビットが推奨されている。
【0006】
暗号化のベキ指数に用いる公開鍵Eは、通常、E=65537等の比較的小さな数が用いられる。そのため、高速に暗号化できるという特長がある。
【0007】
一方、復号のベキ指数に用いる秘密鍵Dは、与えられた公開鍵Eに基づいて(2)式から算出される。(2)式から分かるように、公開鍵E及び秘密鍵Dは同時には小さくできず、一般的に秘密鍵Dは、法に用いる公開鍵Nと同程度の大きさの数となるため、復号処理の時間が長くかかる問題がある。
【0008】
この問題を解消する観点から、CRT(Chinese Remainder Theorem:中国剰余定理)を用いた高速化手法が提案されている。
【0009】
CRTを用いたRSA復号は、以下に示すように、CRT用の秘密鍵Dp,Dq及び逆元qInvを用い、暗号文CからメッセージMを計算する手法である。
【0010】
p=C{D_p} mod P
q=C{D_q} mod Q
M=(((Mp−Mq)×qInv) mod P)×Q+Mq
なお、{D_p}の表記はDpを表し、{D_q}の表記はDqを表す。CRT用の秘密鍵Dp,Dq及び逆元qInvと、RSAの秘密鍵D及び公開鍵Eとは、以下に示す関係がある。
【0011】
p=D mod (P−1)
q=D mod (Q−1)
EDp=1 mod (P−1) (3)
EDq=1 mod (Q−1) (4)
Inv=Q-1 mod P
CRTを用いたRSA復号は、CRTを用いない場合と比較して3倍から4倍程度高速化されるが、小さなベキ指数Eを用いる暗号化と比較するとまだ低速である。
【0012】
ここで、特許文献1には、ベキ指数Dp,Dqを先に小さな数として与え、復号を高速化する技術が記載されている。
【0013】
しかしながら、特許文献1記載の技術は、暗号化の速度が低下してしまう問題がある。
【0014】
このような暗号化速度の低下は、(3)式及び(4)式に基づき、公開鍵Eと、CRT用の秘密鍵Dp,Dqとが同時には小さくできず、一般に、ベキ指数に用いる公開鍵Eが、法に用いる公開鍵Nと同程度の大きな数となることから生じる。また、特許文献1記載の技術は、CRT用の秘密鍵Dp,Dqを小さくし過ぎると、鍵が鍵長の多項式時間で解読可能となることから(例えば、非特許文献1参照。)、鍵を適度な大きさとする必要がある。
【0015】
これに対し、非特許文献2及び非特許文献3には、暗号化及び復号の処理速度をバランスさせるため、公開鍵Eと、CRT用の秘密鍵Dp,Dqとを共に適度に小さい数で生成する、という技術が記載されている。
【0016】
ここで、非特許文献2記載の技術のアルゴリズムを、図6を用いて説明する。
【0017】
始めに、生成したい公開鍵Eのビット数ne、CRT用の秘密鍵Dp,Dqのビット数n{d_p}、素数P,Qのビット数npを指定する(ステップS1)。
【0018】
次に、neビットの奇数Eをランダムに生成する(ステップS2)。
【0019】
中間変数Kを、ne+n{d_p}−npビットとなるようにランダムに生成する(ステップS3)。
【0020】
ステップS2,S3で生成した奇数Eと中間変数Kを用いて、Dp=E-1 mod Kを満たし、かつn{d_p}ビットとなるような秘密鍵Dpをランダムに生成する(ステップS4)。
【0021】
ここで、秘密鍵Dpのビット数が中間変数Kのビット数より大きいことを仮定している。すなわち、n{d_p}>ne+n{d_p}−npよりnp>neを仮定している。この仮定に伴い、秘密鍵Dpは、mod Kでは一意的に定まるものの、n{d_p}ビットのデータとしては多数存在するため、多数のデータからランダムに選択される。
【0022】
これら奇数E,中間変数K,秘密鍵Dpを用い、整数PをP=1+(EDp−1)/Kに基づいて算出する(ステップS5)。
【0023】
ステップS4の式から(EDp−1)/Kが整数であるため、算出結果Pは整数である。また、EDp=1+K(P−1)なので、(3)式の条件を満たしている。
【0024】
ステップS6では、このように構成した整数Pについて素数か否かを判定する。
判定の結果、整数Pが素数でない場合には、ステップS4に戻り、CRT用の秘密鍵Dpを生成し直してステップS6で素数と判定されるまで、各ステップS4〜S6の処理をくり返す。
【0025】
ステップS6の判定の結果、整数Pが素数の場合には、次の整数Qの生成に移る。整数Qの生成は、ステップS7,S8,S9,S10で行われるが、これらは整数Pの生成におけるステップS3,S4,S5,S6にそれぞれ対応し、同様の処理となる。
【0026】
以上の処理ステップにより生成された公開鍵E,秘密鍵Dp,Dq,素数P,QをRSA暗号方式の鍵データとして出力する。
【0027】
以上のように、非特許文献2記載の技術によれば、指定したneビットの公開鍵Eと、n{d_p}ビットの秘密鍵Dp,Dqと、npビットの素数P,Qとを生成可能となっている。また、暗号化、復号が所望の処理速度比となるように、ビット数ne,n{d_p}を指定することで、暗号化及び復号の処理速度をバランスさせることが可能である。これは非特許文献3記載の技術でも同様である。
【0028】
ところで前述したように、RSA暗号方式で用いる公開鍵Nのビット数は、暗号解読を困難にするために、1024ビットや2048ビットの大きさが推奨されている。すなわち、公開鍵Nのビット数は、公開鍵Nの素因数分解を困難にするために十分大きい必要がある。現時点で最速の素因数分解アルゴリズムは、公開鍵Nの大きさにのみ依存するからである。
【0029】
その一方、公開鍵Nの素因子P,Qの形に特化した素因数分解法が知られている。このような素因数分解法の一つに、p−1法と呼ばれる方法がある。p−1法による素因数分解を回避するためには、P−1及びQ−1を素因数分解した場合に、その素因子の中に大きな素因数を持つ必要がある。
【0030】
なお、P−1及びQ−1に大きな素因数を持たせるようにRSA暗号方式の鍵を生成する技術は特許文献2に記載されている。この技術においては、P−1に持たせたい素因数をRとし、次の(5)式に示すように素数Pを構成している。
【0031】
P=1+aR (aは乱数) (5)
【特許文献1】特開平3−60237号公報
【特許文献2】特開平2−37383号公報
【非特許文献1】E. Jochemsz, A. May, “A Polynomial Time Attack on Standard RSA with Private CRT-Exponents Smaller than N0.073”, Lecture Notes in Computer Sciences, Vol.4622, pp.395-411, 2007.
【非特許文献2】S. Galbraith, C. Heneghan, L. McKee, “Tunable Balancing of RSA”, http://www.isg.rhul.ac.uk/~sdg/full-tunable-rsa.pdf, 2005
【非特許文献3】H. M. Sun, M. J. Hinek, M. E. Wu, “On the Design of Rebalanced RSA-CRT”, http://www.cacr.math.uwaterloo.ca/techreports/2005/cacr2005-35.pdf, 2005
【非特許文献4】U. M. Maurer, “Fast Generation of Prime Numbers and Secure Public-Key Cryptographic Parameters”, Journal of Cryptology, Vol. 8, pp.123-155, 1995
【発明の開示】
【発明が解決しようとする課題】
【0032】
しかしながら、非特許文献2,3記載の技術では、予め公開鍵E,秘密鍵Dp,Dqを定めてから素数P,Qを計算するため、特許文献2記載の技術とは異なり、大きな素因数を持つようにP−1及びQ−1を構成できない。
【0033】
従って、非特許文献2,3記載の技術では、P−1及びQ−1に大きな素因数を持たせることが困難であり、p−1法による素因数分解を回避できない状況にある。
【0034】
本発明は上記実情を考慮してなされたもので、暗号化及び復号の処理速度をバランスさせるように鍵を生成できると共に、p−1法による素因数分解を回避でき、より強固なRSA暗号方式の鍵を生成し得る鍵生成装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0035】
本発明の一つの局面は、RSA暗号方式の鍵データを生成するための鍵生成装置であって、前記鍵データとしての奇数E、秘密鍵Dp,Dq及び素数P,Qと、当該鍵データを生成するための素数R及び中間変数Kp,Kqとを記憶するための記憶手段と、ビット数ne,n{d_p},np,nrを指定するための手段と、前記ビット数nrの素数Rを生成し、この素数Rを前記記憶手段に書き込む手段と、前記ビット数neの奇数Eをランダムに生成し、この奇数Eを前記記憶手段に書き込む手段と、前記ビット数ne,n{d_p},np,nrに基づき、ビット数ne+n{d_p}−np−nrの第1中間変数Kpをランダムに生成し、この第1中間変数Kpを前記記憶手段に書き込む手段と、前記記憶手段を参照しながら前記奇数E、前記第1中間変数Kp、前記素数R及び前記ビット数n{d_p}と、式Dp=E-1 mod KpRとに基づいて、前記ビット数n{d_p}の第1秘密鍵Dpを生成し、この第1秘密鍵Dpを前記記憶手段に書き込む手段と、前記記憶手段を参照しながら前記奇数E、前記第1秘密鍵Dp及び前記第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する手段と、前記整数Pを素数判定する第1素数判定手段と、この素数判定の結果、前記整数Pが素数のとき、この素数Pを前記記憶手段に書き込む手段と、前記ビット数ne+n{d_p}−np−nrの第2中間変数Kqをランダムに生成し、この第2中間変数Kqを前記記憶手段に書き込む手段と、前記記憶手段を参照しながら前記奇数E、前記第2中間変数Kq、前記素数R及び前記ビット数n{d_p}と、式Dq=E-1 mod KqRとに基づいて、前記ビット数n{d_p}の第2秘密鍵Dqを生成し、この第2秘密鍵Dqを前記記憶手段に書き込む手段と、前記記憶手段を参照しながら前記奇数E、前記第2秘密鍵Dq及び前記第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する手段と、前記整数Qを素数判定する第2素数判定手段と、この素数判定の結果、前記整数Qが素数のとき、この素数Qを前記記憶手段に書き込む手段と、前記記憶手段を参照して前記奇数E、前記秘密鍵Dp,Dq及び前記素数P,Qを前記RSA暗号方式の鍵データとして出力する手段と、を備えた鍵生成装置である。
【0036】
なお、本発明の一つの局面は、装置として表現したが、これに限らず、方法、プログラム、プログラムを記憶したコンピュータ読み取り可能な記憶媒体として表現してもよい。
【0037】
(作用)
本発明の一つの局面によれば、鍵生成処理の最初に、P−1の素因子として含ませるnrビットの素数Rを生成し、次にneビットの奇数Eを生成し、ne+n{d_p}−np−nrビットの中間変数Kpを生成し、Dp=E-1 mod KpRを満たすn{d_p}ビットのDpを生成し、P=1+(EDp−1)/Kpを計算し、Pが素数となるまでこれを繰り返し、Qに関しても同様に実行する構成により、非特許文献2の方法においてP−1に素因子Rを持たせることができるため、暗号化及び復号の処理速度をバランスさせるように鍵を生成できると共に、p−1法による素因数分解を回避でき、より強固なRSA暗号方式の鍵を生成することができる。
【発明の効果】
【0038】
以上説明したように本発明によれば、暗号化及び復号の処理速度をバランスさせるように鍵を生成できると共に、p−1法による素因数分解を回避でき、より強固なRSA暗号方式の鍵を生成できる。
【発明を実施するための最良の形態】
【0039】
以下、本発明の各実施形態について図面を用いて説明する。なお、以下の各実施形態は、本発明の具体例であり、本発明の技術的範囲を限定するものではない。
【0040】
(第1の実施形態)
図1は本発明の第1の実施形態に係る鍵生成装置の構成を示す模式図である。この鍵生成装置100は、ICカード又はPC(Personal Computer)などの計算機の鍵生成部として構成されており、ハードウェア構成、又はハードウェア資源とソフトウェアの組み合わせ構成により、RSA方式の鍵データを生成する処理を実行する。組み合わせ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から鍵生成装置100にインストールされ、鍵生成装置100の各機能を実現させるためのプログラムが用いられる。
【0041】
鍵生成装置100は、具体的には入出力部101、CPU(中央演算装置)102、プログラム記憶部103、乱数生成部104、ランダムアクセス可能な揮発性メモリ105、不揮発性メモリ106、アドレス及びデータバス107を備えている。
【0042】
入出力部101は、鍵生成装置100の外部の計算機等と、鍵生成装置100のバス107との間でデータを入出力するためのインターフェイス部であり、例えば、以下の各機能(f101-1)〜(f101-2)を実現するものである。
【0043】
(f101-1) 外部から入力されたビット数ne,n{d_p},np,nrを指定するための機能。
【0044】
(f101-2) CPU102から受けた奇数E、秘密鍵Dp,Dq及び素数P,Qを出力する機能。
【0045】
CPU102は、プログラム記憶部103に格納されたプログラムを実行することにより、以下の各機能(f102-1)〜(f102-10)を実現するものである。このプログラムは、鍵生成のためのサブプログラムを少なくとも含んでいる。
【0046】
(f102-1) 入出力部101により指定されたビット数ne,n{d_p},np,nrのうち、ビット数nrの素数Rを生成し、この素数Rを揮発性メモリ105に書き込む機能。
【0047】
(f102-2) 揮発性メモリ105を参照しながら奇数E、第1中間変数Kp、素数R及びビット数n{d_p}と、式Dp=E-1 mod KpRとに基づいて、ビット数n{d_p}の第1秘密鍵Dpを生成し、この第1秘密鍵Dpを揮発性メモリ105に書き込む機能。
【0048】
(f102-3) 揮発性メモリ105を参照しながら奇数E、第1秘密鍵Dp及び第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する機能。
【0049】
(f102-4) 整数Pを素数判定する第1素数判定機能。
【0050】
(f102-5) この素数判定の結果、整数Pが素数のとき、この素数Pを揮発性メモリ105に書き込む機能。
【0051】
(f102-6) 揮発性メモリ105を参照しながら奇数E、第2中間変数Kq、素数R及びビット数n{d_p}と、式Dq=E-1 mod KqRとに基づいて、ビット数n{d_p}の第2秘密鍵Dqを生成し、この第2秘密鍵Dqを揮発性メモリ105に書き込む機能。
【0052】
(f102-7) 揮発性メモリ105を参照しながら奇数E、第2秘密鍵Dq及び第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する機能。
【0053】
(f102-8) 整数Qを素数判定する第2素数判定機能。
【0054】
(f102-9) この素数判定の結果、整数Qが素数のとき、この素数Qを揮発性メモリ105に書き込む機能。
【0055】
(f102-10) 揮発性メモリ105を参照して奇数E、秘密鍵Dp,Dq及び素数P,QをRSA暗号方式の鍵データとして入出力部101から出力する機能。
【0056】
プログラム記憶部103は、例えばROM(リードオンリーメモリ)であり、図2に示す各機能を鍵生成装置101に実現させるためのプログラムを記憶している。このプログラムは、外部からプログラム記憶部103にインストールしてもよい。
【0057】
乱数生成部104は、以下の各機能(f104-1)〜(f104-3)をもっている。
【0058】
(f104-1) 入出力部101により指定されたビット数neの奇数Eをランダムに生成し、この奇数Eを揮発性メモリ105に書き込む機能。
【0059】
(f104-2) 入出力部101により指定されたビット数ne,n{d_p},np,nrに基づき、ビット数ne+n{d_p}−np−nrの第1中間変数Kpをランダムに生成し、この第1中間変数Kpを揮発性メモリ105に書き込む機能。
【0060】
(f104-3) このビット数ne+n{d_p}−np−nrの第2中間変数Kqをランダムに生成し、この第2中間変数Kqを揮発性メモリ105に書き込む機能。
【0061】
ここで、乱数生成部104は、CPU102に使用されるハードウェア資源として実現してもよく、CPU102とプログラムで実現してもよい。さらに乱数生成部104を省略し、外部で生成した乱数を入出力部101から入力する構成に変形してもよい。本実施形態では、CPU102とプログラムによる乱数生成部104を用いるものとする。
【0062】
揮発性メモリ105は、例えばRAM(ランダムアクセスメモリ)等のランダムアクセス可能な記憶装置であり、計算に必要なデータや計算途中のデータなどが格納される。
【0063】
不揮発性メモリ106は、例えばEEPROM(Electric Erasable Programmable ROM)等の記憶装置であり、生成された鍵データなどが格納される。
【0064】
次に、以上のように構成された鍵生成装置の動作を図2のフローチャートを用いて説明する。
【0065】
鍵生成装置100においては、ユーザによる外部計算機の操作により、入出力部101が、公開鍵Eのビット数ne、CRT用の秘密鍵Dp,Dqのビット数n{d_p}、素数P,Qのビット数np、及びP−1,Q−1に持たせたい素因子Rのビット数nrを指定する(ステップS11)。
【0066】
続いて、CPU102は、nrビットの素数Rを生成し、この素数Rを揮発性メモリ105に書き込む(ステップS12)。
【0067】
また、乱数生成部104は、neビットの奇数Eをランダムに生成し、この奇数Eを揮発性メモリ105に書き込む(ステップS13)。
【0068】
次に、乱数生成部104は、入出力部101により指定されたビット数ne,n{d_p},np,nrに基づき、ビット数ne+n{d_p}−np−nrの第1中間変数Kpをランダムに生成し、この第1中間変数Kpを揮発性メモリ105に書き込む(ステップS14)。 CPU102は、揮発性メモリ105を参照しながら奇数E、第1中間変数Kp、素数R及びビット数n{d_p}と、式Dp=E-1 mod KpRとに基づいて、ビット数n{d_p}の第1秘密鍵Dpを生成し、この第1秘密鍵Dpを揮発性メモリ105に書き込む(ステップS15)。
【0069】
ここで、第1秘密鍵Dpのビット数(n{d_p})は、KpRのビット数((ne+n{d_p}−np−nr)+nr)より大きいことを仮定している。すなわち、n{d_p}>(ne+n{d_p}−np−nr)+nrよりnp>neを仮定している。この条件は、非特許文献2に課せられている条件と同じである。このように仮定すると、第1秘密鍵Dpは、mod KpRでは一意的に定まるが、n{d_p}ビットのデータとしては多数存在するため、この中から1つランダムに選択(=生成)され、揮発性メモリ105に書き込まれる。
【0070】
CPU102は、揮発性メモリ105を参照しながら奇数E、第1秘密鍵Dp及び第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する(ステップS16)。
【0071】
CPU102は、このように構成した整数Pが素数か否かを判定し(ステップS17)、この素数判定の結果、否の場合には、ステップS15に戻り、第1秘密鍵Dpを生成し直して、ステップS17で素数と判定されるまでくり返す。
【0072】
CPU102は、ステップS17の判定の結果、整数Pが素数のときには、この素数Pを揮発性メモリ105に書き込む。
【0073】
続いて、鍵生成装置100は素数Qの生成に移る。
鍵生成装置100においては、乱数生成部104が、ビット数ne+n{d_p}−np−nrの第2中間変数Kqをランダムに生成し、この第2中間変数Kqを揮発性メモリ105に書き込む(ステップS18)。
【0074】
CPU102は、揮発性メモリ105を参照しながら奇数E、第2中間変数Kq、素数R及びビット数n{d_p}と、式Dq=E-1 mod KqRとに基づいて、ビット数n{d_p}の第2秘密鍵Dqを生成し、この第2秘密鍵Dqを揮発性メモリ105に書き込む(ステップS19)。このとき、ステップS15と同様に、第2秘密鍵Dqは、mod KqRでは一意的に定まるが、n{d_p}ビットのデータとしては多数存在するため、この中から1つランダムに選択(=生成)され、揮発性メモリ105に書き込まれる。
【0075】
CPU102は、揮発性メモリ105を参照しながら奇数E、第2秘密鍵Dq及び第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する(ステップS20)。
【0076】
CPU102は、このように構成した整数Qが素数か否かを判定し(ステップS21)、この素数判定の結果、否の場合には、ステップS19に戻り、第2秘密鍵Dqを生成し直して、ステップS21で素数と判定されるまでくり返す。
【0077】
CPU102は、ステップS21の判定の結果、整数Qが素数のときには、この素数Qを揮発性メモリ105に書き込む。
【0078】
CPU102は、以上の処理ステップの完了後、揮発性メモリ105を参照して奇数E、秘密鍵Dp,Dq及び素数P,QをRSA暗号方式の鍵データとして入出力部101から出力する。また、CPU102は、これら鍵データを不揮発性メモリ106に書き込む。なお、図2に図示していないが、CPU102は、さらにN=PQ及びD=E-1 mod ((P−1)(Q−1))を計算して、これらN,Dを合わせてRSA暗号方式の鍵として出力してもよい。
【0079】
このようにして生成された素数P,Qは、P−1,Q−1に素因子Rを持つことが、以下のように確かめられる。
【0080】
まずステップS15の構成の仕方より、Dp=E-1 mod KpRである。これはEDp−1=0 mod KpR、すなわちEDp−1がKpRの倍数であることを意味する。
【0081】
一方、ステップS16の構成の仕方より、P=1+(EDp−1)/Kpである。変形するとP−1=(EDp−1)/Kpとなるが、上記よりEDp−1は、KpRの倍数であるので、(EDp−1)/Kpは、素数Rの倍数となる。従って、P−1は素数Rを素因子として持つ。
【0082】
素数Qに関しても同様である。
従って、p−1法に対する耐性を持つように素数Rのビット数nrを指定した上で、本実施形態を実施することにより、暗号化と復号の処理時間をバランスするように鍵を生成可能であり、さらにP−1、Q−1に大きな素因子を持たせることができるため、より強固なRSA暗号方式の鍵を生成することができる。
【0083】
ただし、ステップS14,S18で生成する中間変数Kp,Kqのビット数が正となるためには、ne+n{d_p}−np−nr>0でなければならない。非特許文献2の3章に記載されている2つのパラメータ例
e=160,n{d_p}=354,np=512
e=512,n{d_p}=269,np=512
にあてはめると、前者の場合はnr<2となり、素数Rが選べないため、本実施形態で説明したアルゴリズムは非特許文献2と同じものとなる。後者の場合はnr<269であるため、十分大きな(例えばnpの半分のビットサイズnr=256)を選ぶことができるため、本実施形態が有用であることが確かめられる。
【0084】
上述したように本実施形態によれば、鍵生成処理の最初に、P−1の素因子として含ませるnrビットの素数Rを生成し、次にneビットの奇数Eを生成し、ne+n{d_p}−np−nrビットの中間変数Kpを生成し、Dp=E-1 mod KpRを満たすn{d_p}ビットのDpを生成し、P=1+(EDp−1)/Kpを計算し、Pが素数となるまでこれを繰り返し、Qに関しても同様に実行する構成により、非特許文献2の方法においてP−1に素因子Rを持たせることができるため、暗号化と復号の処理時間をバランスするように鍵を生成でき、さらにP−1法に強い鍵を生成できる。
【0085】
さらに、P−1,Q−1に大きな既知の素因数Rを持たせることが可能となるために、整数Pの素数判定に確定的判定方法を使用でき、もって、正しいRSA暗号方式の鍵を生成することができる。
【0086】
なお、本実施形態は、図3又は図4に示すように変形してもよい。
図3に示す処理は、図2に示すステップS12に代えて、互いに異なる素数Rp,Rqを算出するステップS12a,S12bを設け、図2に示すステップS15,S19のmod KpR,mod KqRに代えて、ステップS15’ではmod Kppとし、ステップS19’ではmod Kqqとしたものである。
【0087】
この変形により、図2ではP−1,Q−1に同じ素因子Rを持たせるように構成していたが、図3ではP−1に素因子Rpを、Q−1に素因子Rqを、と異なる素因子を持たせることができる。また、図3に示す処理に変形しても、本実施形態を同様に実施して同様の効果を得ることに加え、P−1,Q−1に異なる素因子Rp,Rqを持たせることから、より強固な鍵を生成することができる。
【0088】
図4に示す処理は、図3に示した処理の更なる変形例である。
図3におけるステップS17,S21において、整数PあるいはQが素数でないと判定されたときにそれぞれステップS15’,S19’に戻っていたが、図4のように、それぞれステップS14,S18に戻ってもよい。このように図4に示す処理に変形しても、図3に示す処理を同様に実施して同様の効果を得ることができる。
【0089】
(第2の実施形態)
次に、本発明の第2の実施形態に係る鍵生成装置について説明するが、前述した図面と同一部分には同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。
【0090】
すなわち、第2の実施形態は、第1の実施形態の素数判定処理において、確定的素数判定方法を用いて素数判定を実行する形態であり、具体的には、鍵生成装置100が、図2に示したステップS11,S12,S17,S21の処理を以下のように実行している。
【0091】
ステップS11においては、ビット数np,nrを指定する際に、2nr>npの関係を満たすようにする。例えば、非特許文献2の3章記載の2番目のパラメータ例に示すように、ビット数np,nrを指定する。具体的には例えば、入出力部101としては、ビット数np,nrが指定されたとき、2nr>npの関係を満たすか否かを判定し、満たさない場合には関係を満たすようなビット数を再入力するように促す構成としてもよい。
【0092】
また、ステップS12の処理は特に変更は無いが、整数Rが素数である必要があるため、整数Rの素数判定に確定的素数判定方法を用いている。確定的素数判定方法は、例えば非特許文献4に記載の方法などにより実現される。
【0093】
ステップS17においては、整数Pを素数判定する際に、確定的素数判定方法であるポクリントン(Pocklington)の定理の特別な場合を用いる。
【0094】
ポクリントンの定理の特別な場合は、以下のような定理であり、確率的素数判定方法としてよく利用されるミラー・ラビン(Miller-Rabin)法と同等の処理速度で素数判定を実行可能である。
【0095】
整数PがP=AR+1,RはR>√Pを満たす素数、という形をしていると仮定する。このとき、次の2条件を満たす整数aが存在すれば、整数Pは素数である。
【0096】
条件1:ap-1=1 mod P
条件2:gcd(a(p-1)/R−1,P)=1
ここで、gcdは最大公約数を表す。
【0097】
ステップS17の素数判定対象であるP=1+(EDp−1)/Kpは、ある整数をAとしたとき、ステップS16の式中の(EDp−1)/KpがステップS12で生成した素数RのA倍であることから、P=1+ARという形をしている。また、ステップS11で2nr>npを満たすパラメータを指定したため、素数RがR>√Pという形をしている。このため、本実施形態の素数判定対象P及び素数Rは、ポクリントンの定理の特別な場合の仮定を満たしている。
【0098】
従って、ステップS17においては、CPU102は、ポクリントンの定理の特別な場合を利用し、条件1,2を満たす整数aが存在すれば、整数Pを素数であると判定する。具体的には図5に示すように、CPU102は、乱数生成部104により、整数aをランダムに生成する(S17−1)。なお、CPU102は、整数aをランダムに生成せずに、固定値(例えばa=2)の整数aを用いるように変形してもよい。
【0099】
次に、CPU102は、ポクリントンの定理の特別な場合の条件1を検査する(ステップS17−2)。ここで検査に失敗した場合(図5におけるNo)、CPU102は、整数Pを合成数と判定し(ステップS17−5)、処理を終了する。
【0100】
条件1の検査に成功した場合(図5におけるYes)、CPU102は、条件2を検査する(ステップS17−3)。条件2の検査に失敗した場合、CPU102は、整数Pを合成数と判定し(ステップS17−5)、処理を終了する。
【0101】
条件2の検査に成功した場合、CPU102は、整数Pを素数と判定し(ステップS17−4)、処理を終了する。
【0102】
ステップS21においては、ステップS17−1〜S17−5と同様にして、CPU102は、整数Qの素数判定を実行する。
【0103】
上述したように本実施形態によれば、第1の実施形態の効果に加え、ミラー・ラビン法と同等の処理速度をもつ確定的素数判定方法を用いて整数P,Qを素数判定できるので、正しいRSA暗号方式の鍵を生成する有用な鍵生成方法を実現することができる。
【0104】
ここで、素数判定方法について補足的に説明する。
整数P,Qが素数であるか否かを判定する方法としては、大きく分けて確率的素数判定方法と確定的素数判定方法との2種類の方法が知られている。
【0105】
確率的素数判定方法は、合成数と判定された数については確実に合成数であるが、ある確率で合成数を誤って素数と判定することがある。
【0106】
確定的素数判定方法は、素数と判定された数が確実に素数であるという特徴をもつ。素数判定対象の数が特殊な構造の場合(例えば(5)式でRが既知で、a<Rの場合)には、確定的素数判定方法は十分高速に実行できる。
【0107】
一方、素数判定対象が一般の数の場合には、確定的素数判定方法では処理速度が遅く、実用に耐えないため、通常は確率的素数判定方法が用いられる。但し、確率的素数判定方法は、合成数を誤って素数と判定する確率が0ではないため、合成数を誤ってRSA暗号方式の鍵として使用する場合に、暗号文を復号できない等の問題が発生する。ここで、非特許文献2,3記載の技術では、整数P,Qに構造を持たせることが困難なため、確定的素数判定方法を使用できず、確率的素数判定方法を使用する必要があるので、0でない確率で暗号文を復号できない心配が残る。
【0108】
しかしながら、本実施形態によれば、確定的素数判定方法を使用できるので、合成数を誤って素数と判定する確率をゼロにでき、暗号文を復号できない心配を解消することができる。
【0109】
なお、本実施形態における確定的素数判定方法は、図3及び図4に示した変形例にも適用でき、同様の効果を得ることができる。
【0110】
また、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0111】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0112】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
【0113】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【0114】
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0115】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0116】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0117】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【0118】
【図1】本発明の第1の実施形態に係る鍵生成装置の構成を示す模式図である。
【図2】同実施形態における動作を説明するためのフローチャートである。
【図3】同実施形態における動作の変形例を説明するためのフローチャートである。
【図4】同実施形態における動作の他の変形例を説明するためのフローチャートである。
【図5】本発明の第2の実施形態に係る鍵生成装置における確定的素数判定動作を説明するためのフローチャートである。
【図6】従来の鍵生成の動作を説明するためのフローチャートである。
【符号の説明】
【0119】
100…鍵生成装置、101…入出力部、102…CPU、103…プログラム記憶部、104…乱数生成部、105…揮発性メモリ、106…不揮発性メモリ、107…バス。

【特許請求の範囲】
【請求項1】
RSA暗号方式の鍵データを生成するための鍵生成装置であって、
前記鍵データとしての奇数E、秘密鍵Dp,Dq及び素数P,Qと、当該鍵データを生成するための素数R及び中間変数Kp,Kqとを記憶するための記憶手段と、
ビット数ne,n{d_p},np,nrを指定するための手段と、
前記ビット数nrの素数Rを生成し、この素数Rを前記記憶手段に書き込む手段と、
前記ビット数neの奇数Eをランダムに生成し、この奇数Eを前記記憶手段に書き込む手段と、
前記ビット数ne,n{d_p},np,nrに基づき、ビット数ne+n{d_p}−np−nrの第1中間変数Kpをランダムに生成し、この第1中間変数Kpを前記記憶手段に書き込む手段と、
前記記憶手段を参照しながら前記奇数E、前記第1中間変数Kp、前記素数R及び前記ビット数n{d_p}と、式Dp=E-1 mod KpRとに基づいて、前記ビット数n{d_p}の第1秘密鍵Dpを生成し、この第1秘密鍵Dpを前記記憶手段に書き込む手段と、
前記記憶手段を参照しながら前記奇数E、前記第1秘密鍵Dp及び前記第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する手段と、
前記整数Pを素数判定する第1素数判定手段と、
この素数判定の結果、前記整数Pが素数のとき、この素数Pを前記記憶手段に書き込む手段と、
前記ビット数ne+n{d_p}−np−nrの第2中間変数Kqをランダムに生成し、この第2中間変数Kqを前記記憶手段に書き込む手段と、
前記記憶手段を参照しながら前記奇数E、前記第2中間変数Kq、前記素数R及び前記ビット数n{d_p}と、式Dq=E-1 mod KqRとに基づいて、前記ビット数n{d_p}の第2秘密鍵Dqを生成し、この第2秘密鍵Dqを前記記憶手段に書き込む手段と、
前記記憶手段を参照しながら前記奇数E、前記第2秘密鍵Dq及び前記第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する手段と、
前記整数Qを素数判定する第2素数判定手段と、
この素数判定の結果、前記整数Qが素数のとき、この素数Qを前記記憶手段に書き込む手段と、
前記記憶手段を参照して前記奇数E、前記秘密鍵Dp,Dq及び前記素数P,Qを前記RSA暗号方式の鍵データとして出力する手段と、
を備えたことを特徴とする鍵生成装置。
【請求項2】
請求項1に記載の鍵生成装置において、
前記第1及び第2素数判定手段は、確定的素数判定方法を用いて素数判定を実行することを特徴とする鍵生成装置。
【請求項3】
RSA暗号方式の鍵データを生成し且つ記憶手段を備えた鍵生成装置に用いられるプログラムであって、
前記鍵生成装置を、
ビット数ne,n{d_p},np,nrを指定するための手段、
前記ビット数nrの素数Rを生成し、この素数Rを前記記憶手段に書き込む手段、
前記ビット数neの奇数Eをランダムに生成し、この奇数Eを前記記憶手段に書き込む手段、
前記ビット数ne,n{d_p},np,nrに基づき、ビット数ne+n{d_p}−np−nrの第1中間変数Kpをランダムに生成し、この第1中間変数Kpを前記記憶手段に書き込む手段、
前記記憶手段を参照しながら前記奇数E、前記第1中間変数Kp、前記素数R及び前記ビット数n{d_p}と、式Dp=E-1 mod KpRとに基づいて、前記ビット数n{d_p}の第1秘密鍵Dpを生成し、この第1秘密鍵Dpを前記記憶手段に書き込む手段、
前記記憶手段を参照しながら前記奇数E、前記第1秘密鍵Dp及び前記第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する手段、
前記整数Pを素数判定する第1素数判定手段、
この素数判定の結果、前記整数Pが素数のとき、この素数Pを前記記憶手段に書き込む手段、
前記ビット数ne+n{d_p}−np−nrの第2中間変数Kqをランダムに生成し、この第2中間変数Kqを前記記憶手段に書き込む手段、
前記記憶手段を参照しながら前記奇数E、前記第2中間変数Kq、前記素数R及び前記ビット数n{d_p}と、式Dq=E-1 mod KqRとに基づいて、前記ビット数n{d_p}の第2秘密鍵Dqを生成し、この第2秘密鍵Dqを前記記憶手段に書き込む手段、
前記記憶手段を参照しながら前記奇数E、前記第2秘密鍵Dq及び前記第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する手段、
前記整数Qを素数判定する第2素数判定手段、
この素数判定の結果、前記整数Qが素数のとき、この素数Qを前記記憶手段に書き込む手段、
前記記憶手段を参照して前記奇数E、前記秘密鍵Dp,Dq及び前記素数P,Qを前記RSA暗号方式の鍵データとして出力する手段、
として機能させるためのプログラム。
【請求項4】
請求項3に記載のプログラムにおいて、
前記第1及び第2素数判定手段は、確定的素数判定方法を用いて素数判定を実行する手段、として前記鍵生成装置を機能させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2010−44262(P2010−44262A)
【公開日】平成22年2月25日(2010.2.25)
【国際特許分類】
【出願番号】特願2008−208962(P2008−208962)
【出願日】平成20年8月14日(2008.8.14)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】