JP4802228B2 - 鍵生成装置及びプログラム - Google Patents

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

Info

Publication number
JP4802228B2
JP4802228B2 JP2008208962A JP2008208962A JP4802228B2 JP 4802228 B2 JP4802228 B2 JP 4802228B2 JP 2008208962 A JP2008208962 A JP 2008208962A JP 2008208962 A JP2008208962 A JP 2008208962A JP 4802228 B2 JP4802228 B2 JP 4802228B2
Authority
JP
Japan
Prior art keywords
prime number
integer
prime
storage means
writing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008208962A
Other languages
English (en)
Other versions
JP2010044262A (ja
Inventor
正修 小池
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2008208962A priority Critical patent/JP4802228B2/ja
Publication of JP2010044262A publication Critical patent/JP2010044262A/ja
Application granted granted Critical
Publication of JP4802228B2 publication Critical patent/JP4802228B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、鍵生成装置及びプログラムに係り、特に、RSA(Rivest-Shamir-Adleman)暗号方式の鍵生成の際に、p−1法に対する耐性を持った鍵を生成する鍵生成装置及びプログラムに関する。
近年の情報通信において、暗号技術は欠かせない要素となってきている。このような暗号技術には、例えば、通信の暗号化技術であるSSL(Secure Socket Layer)や、メッセージが改ざんされていないことを検出できる電子署名などがある。これらは、PKI(Public Key Infrastructure:公開鍵基盤)の一部として、社会の電子化を支える技術となっている。
PKIにおいては、RSA暗号方式と呼ばれる公開鍵暗号方式が広く使われている。RSA暗号方式では、次式に示すように、公開鍵N,E及び秘密鍵Dに基づいて、メッセージMを暗号化して暗号文Cを作成し、また、暗号文CからメッセージMを復号する。
暗号化:C=ME mod N
復号 :M=CD mod N
ここで、公開鍵N,E及び秘密鍵Dの間には、2つの素数P,Qに基づく(1)式及び(2)式に示す関係がある。
N=P×Q (1)
ED=1 mod ((P−1)(Q−1)) (2)
ここで用いる鍵のビット数は、暗号解読を困難にするために十分大きい必要があり、現時点では公開鍵Nが1024ビット、あるいは2048ビットが推奨されている。
暗号化のベキ指数に用いる公開鍵Eは、通常、E=65537等の比較的小さな数が用いられる。そのため、高速に暗号化できるという特長がある。
一方、復号のベキ指数に用いる秘密鍵Dは、与えられた公開鍵Eに基づいて(2)式から算出される。(2)式から分かるように、公開鍵E及び秘密鍵Dは同時には小さくできず、一般的に秘密鍵Dは、法に用いる公開鍵Nと同程度の大きさの数となるため、復号処理の時間が長くかかる問題がある。
この問題を解消する観点から、CRT(Chinese Remainder Theorem:中国剰余定理)を用いた高速化手法が提案されている。
CRTを用いたRSA復号は、以下に示すように、CRT用の秘密鍵Dp,Dq及び逆元qInvを用い、暗号文CからメッセージMを計算する手法である。
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とは、以下に示す関係がある。
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を用いる暗号化と比較するとまだ低速である。
ここで、特許文献1には、ベキ指数Dp,Dqを先に小さな数として与え、復号を高速化する技術が記載されている。
しかしながら、特許文献1記載の技術は、暗号化の速度が低下してしまう問題がある。
このような暗号化速度の低下は、(3)式及び(4)式に基づき、公開鍵Eと、CRT用の秘密鍵Dp,Dqとが同時には小さくできず、一般に、ベキ指数に用いる公開鍵Eが、法に用いる公開鍵Nと同程度の大きな数となることから生じる。また、特許文献1記載の技術は、CRT用の秘密鍵Dp,Dqを小さくし過ぎると、鍵が鍵長の多項式時間で解読可能となることから(例えば、非特許文献1参照。)、鍵を適度な大きさとする必要がある。
これに対し、非特許文献2及び非特許文献3には、暗号化及び復号の処理速度をバランスさせるため、公開鍵Eと、CRT用の秘密鍵Dp,Dqとを共に適度に小さい数で生成する、という技術が記載されている。
ここで、非特許文献2記載の技術のアルゴリズムを、図6を用いて説明する。
始めに、生成したい公開鍵Eのビット数ne、CRT用の秘密鍵Dp,Dqのビット数n{d_p}、素数P,Qのビット数npを指定する(ステップS1)。
次に、neビットの奇数Eをランダムに生成する(ステップS2)。
中間変数Kを、ne+n{d_p}−npビットとなるようにランダムに生成する(ステップS3)。
ステップS2,S3で生成した奇数Eと中間変数Kを用いて、Dp=E-1 mod Kを満たし、かつn{d_p}ビットとなるような秘密鍵Dpをランダムに生成する(ステップS4)。
ここで、秘密鍵Dpのビット数が中間変数Kのビット数より大きいことを仮定している。すなわち、n{d_p}>ne+n{d_p}−npよりnp>neを仮定している。この仮定に伴い、秘密鍵Dpは、mod Kでは一意的に定まるものの、n{d_p}ビットのデータとしては多数存在するため、多数のデータからランダムに選択される。
これら奇数E,中間変数K,秘密鍵Dpを用い、整数PをP=1+(EDp−1)/Kに基づいて算出する(ステップS5)。
ステップS4の式から(EDp−1)/Kが整数であるため、算出結果Pは整数である。また、EDp=1+K(P−1)なので、(3)式の条件を満たしている。
ステップS6では、このように構成した整数Pについて素数か否かを判定する。
判定の結果、整数Pが素数でない場合には、ステップS4に戻り、CRT用の秘密鍵Dpを生成し直してステップS6で素数と判定されるまで、各ステップS4〜S6の処理をくり返す。
ステップS6の判定の結果、整数Pが素数の場合には、次の整数Qの生成に移る。整数Qの生成は、ステップS7,S8,S9,S10で行われるが、これらは整数Pの生成におけるステップS3,S4,S5,S6にそれぞれ対応し、同様の処理となる。
以上の処理ステップにより生成された公開鍵E,秘密鍵Dp,Dq,素数P,QをRSA暗号方式の鍵データとして出力する。
以上のように、非特許文献2記載の技術によれば、指定したneビットの公開鍵Eと、n{d_p}ビットの秘密鍵Dp,Dqと、npビットの素数P,Qとを生成可能となっている。また、暗号化、復号が所望の処理速度比となるように、ビット数ne,n{d_p}を指定することで、暗号化及び復号の処理速度をバランスさせることが可能である。これは非特許文献3記載の技術でも同様である。
ところで前述したように、RSA暗号方式で用いる公開鍵Nのビット数は、暗号解読を困難にするために、1024ビットや2048ビットの大きさが推奨されている。すなわち、公開鍵Nのビット数は、公開鍵Nの素因数分解を困難にするために十分大きい必要がある。現時点で最速の素因数分解アルゴリズムは、公開鍵Nの大きさにのみ依存するからである。
その一方、公開鍵Nの素因子P,Qの形に特化した素因数分解法が知られている。このような素因数分解法の一つに、p−1法と呼ばれる方法がある。p−1法による素因数分解を回避するためには、P−1及びQ−1を素因数分解した場合に、その素因子の中に大きな素因数を持つ必要がある。
なお、P−1及びQ−1に大きな素因数を持たせるようにRSA暗号方式の鍵を生成する技術は特許文献2に記載されている。この技術においては、P−1に持たせたい素因数をRとし、次の(5)式に示すように素数Pを構成している。
P=1+aR (aは乱数) (5)
特開平3−60237号公報 特開平2−37383号公報 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. S. Galbraith, C. Heneghan, L. McKee, "Tunable Balancing of RSA", http://www.isg.rhul.ac.uk/~sdg/full-tunable-rsa.pdf, 2005 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 U. M. Maurer, "Fast Generation of Prime Numbers and Secure Public-Key Cryptographic Parameters", Journal of Cryptology, Vol. 8, pp.123-155, 1995
しかしながら、非特許文献2,3記載の技術では、予め公開鍵E,秘密鍵Dp,Dqを定めてから素数P,Qを計算するため、特許文献2記載の技術とは異なり、大きな素因数を持つようにP−1及びQ−1を構成できない。
従って、非特許文献2,3記載の技術では、P−1及びQ−1に大きな素因数を持たせることが困難であり、p−1法による素因数分解を回避できない状況にある。
本発明は上記実情を考慮してなされたもので、暗号化及び復号の処理速度をバランスさせるように鍵を生成できると共に、p−1法による素因数分解を回避でき、より強固なRSA暗号方式の鍵を生成し得る鍵生成装置及びプログラムを提供することを目的とする。
本発明の一つの局面は、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を前記記憶手段に書き込む第1秘密鍵生成手段と、前記記憶手段を参照しながら前記奇数E、前記第1秘密鍵Dp及び前記第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する整数P算出手段と、前記整数Pを素数判定する第1素数判定手段と、この素数判定の結果、前記整数Pが素数のとき、この素数Pを前記記憶手段に書き込む手段と、前記素数判定の結果、前記整数Pが素数でないとき、前記整数Pが素数と判定されるまで、前記第1秘密鍵生成手段、前記整数P算出手段及び前記第1素数判定手段を繰り返し実行させる手段と、前記ビット数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を前記記憶手段に書き込む第2秘密鍵生成手段と、前記記憶手段を参照しながら前記奇数E、前記第2秘密鍵Dq及び前記第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する整数Q算出手段と、前記整数Qを素数判定する第2素数判定手段と、この素数判定の結果、前記整数Qが素数のとき、この素数Qを前記記憶手段に書き込む手段と、前記第2素数判定手段による素数判定の結果、前記整数Qが素数でないとき、前記整数Qが素数と判定されるまで、前記第2秘密鍵生成手段、前記整数Q算出手段及び前記第2素数判定手段を繰り返し実行させる手段と、前記記憶手段を参照して前記奇数E、前記秘密鍵Dp,Dq及び前記素数P,Qを前記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に関しても同様に実行する構成により、非特許文献2の方法においてP−1に素因子Rを持たせることができるため、暗号化及び復号の処理速度をバランスさせるように鍵を生成できると共に、p−1法による素因数分解を回避でき、より強固なRSA暗号方式の鍵を生成することができる。
以上説明したように本発明によれば、暗号化及び復号の処理速度をバランスさせるように鍵を生成できると共に、p−1法による素因数分解を回避でき、より強固なRSA暗号方式の鍵を生成できる。
以下、本発明の各実施形態について図面を用いて説明する。なお、以下の各実施形態は、本発明の具体例であり、本発明の技術的範囲を限定するものではない。
(第1の実施形態)
図1は本発明の第1の実施形態に係る鍵生成装置の構成を示す模式図である。この鍵生成装置100は、ICカード又はPC(Personal Computer)などの計算機の鍵生成部として構成されており、ハードウェア構成、又はハードウェア資源とソフトウェアの組み合わせ構成により、RSA方式の鍵データを生成する処理を実行する。組み合わせ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から鍵生成装置100にインストールされ、鍵生成装置100の各機能を実現させるためのプログラムが用いられる。
鍵生成装置100は、具体的には入出力部101、CPU(中央演算装置)102、プログラム記憶部103、乱数生成部104、ランダムアクセス可能な揮発性メモリ105、不揮発性メモリ106、アドレス及びデータバス107を備えている。
入出力部101は、鍵生成装置100の外部の計算機等と、鍵生成装置100のバス107との間でデータを入出力するためのインターフェイス部であり、例えば、以下の各機能(f101-1)〜(f101-2)を実現するものである。
(f101-1) 外部から入力されたビット数ne,n{d_p},np,nrを指定するための機能。
(f101-2) CPU102から受けた奇数E、秘密鍵Dp,Dq及び素数P,Qを出力する機能。
CPU102は、プログラム記憶部103に格納されたプログラムを実行することにより、以下の各機能(f102-1)〜(f102-10)を実現するものである。このプログラムは、鍵生成のためのサブプログラムを少なくとも含んでいる。
(f102-1) 入出力部101により指定されたビット数ne,n{d_p},np,nrのうち、ビット数nrの素数Rを生成し、この素数Rを揮発性メモリ105に書き込む機能。
(f102-2) 揮発性メモリ105を参照しながら奇数E、第1中間変数Kp、素数R及びビット数n{d_p}と、式Dp=E-1 mod KpRとに基づいて、ビット数n{d_p}の第1秘密鍵Dpを生成し、この第1秘密鍵Dpを揮発性メモリ105に書き込む第1秘密鍵生成機能。
(f102-3) 揮発性メモリ105を参照しながら奇数E、第1秘密鍵Dp及び第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する整数P算出機能。
(f102-4) 整数Pを素数判定する第1素数判定機能。
(f102-5) この素数判定の結果、整数Pが素数のとき、この素数Pを揮発性メモリ105に書き込む機能。当該素数判定の結果、整数Pが素数でないとき、整数Pが素数と判定されるまで、第1秘密鍵生成機能、整数P算出機能及び第1素数判定機能を繰り返し実行させる機能。
(f102-6) 揮発性メモリ105を参照しながら奇数E、第2中間変数Kq、素数R及びビット数n{d_p}と、式Dq=E-1 mod KqRとに基づいて、ビット数n{d_p}の第2秘密鍵Dqを生成し、この第2秘密鍵Dqを揮発性メモリ105に書き込む第2秘密鍵生成機能。
(f102-7) 揮発性メモリ105を参照しながら奇数E、第2秘密鍵Dq及び第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する整数Q算出機能。
(f102-8) 整数Qを素数判定する第2素数判定機能。
(f102-9) この素数判定の結果、整数Qが素数のとき、この素数Qを揮発性メモリ105に書き込む機能。当該第2素数判定機能による素数判定の結果、整数Qが素数でないとき、整数Qが素数と判定されるまで、第2秘密鍵生成機能、整数Q算出機能及び第2素数判定機能を繰り返し実行させる機能。
(f102-10) 揮発性メモリ105を参照して奇数E、秘密鍵Dp,Dq及び素数P,QをRSA暗号方式の鍵データとして入出力部101から出力する機能。
プログラム記憶部103は、例えばROM(リードオンリーメモリ)であり、図2に示す各機能を鍵生成装置101に実現させるためのプログラムを記憶している。このプログラムは、外部からプログラム記憶部103にインストールしてもよい。
乱数生成部104は、以下の各機能(f104-1)〜(f104-3)をもっている。
(f104-1) 入出力部101により指定されたビット数neの奇数Eをランダムに生成し、この奇数Eを揮発性メモリ105に書き込む機能。
(f104-2) 入出力部101により指定されたビット数ne,n{d_p},np,nrに基づき、ビット数ne+n{d_p}−np−nrの第1中間変数Kpをランダムに生成し、この第1中間変数Kpを揮発性メモリ105に書き込む機能。
(f104-3) このビット数ne+n{d_p}−np−nrの第2中間変数Kqをランダムに生成し、この第2中間変数Kqを揮発性メモリ105に書き込む機能。
ここで、乱数生成部104は、CPU102に使用されるハードウェア資源として実現してもよく、CPU102とプログラムで実現してもよい。さらに乱数生成部104を省略し、外部で生成した乱数を入出力部101から入力する構成に変形してもよい。本実施形態では、CPU102とプログラムによる乱数生成部104を用いるものとする。
揮発性メモリ105は、例えばRAM(ランダムアクセスメモリ)等のランダムアクセス可能な記憶装置であり、計算に必要なデータや計算途中のデータなどが格納される。
不揮発性メモリ106は、例えばEEPROM(Electric Erasable Programmable ROM)等の記憶装置であり、生成された鍵データなどが格納される。
次に、以上のように構成された鍵生成装置の動作を図2のフローチャートを用いて説明する。
鍵生成装置100においては、ユーザによる外部計算機の操作により、入出力部101が、公開鍵Eのビット数ne、CRT用の秘密鍵Dp,Dqのビット数n{d_p}、素数P,Qのビット数np、及びP−1,Q−1に持たせたい素因子Rのビット数nrを指定する(ステップS11)。
続いて、CPU102は、nrビットの素数Rを生成し、この素数Rを揮発性メモリ105に書き込む(ステップS12)。
また、乱数生成部104は、neビットの奇数Eをランダムに生成し、この奇数Eを揮発性メモリ105に書き込む(ステップS13)。
次に、乱数生成部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)。
ここで、第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に書き込まれる。
CPU102は、揮発性メモリ105を参照しながら奇数E、第1秘密鍵Dp及び第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する(ステップS16)。
CPU102は、このように構成した整数Pが素数か否かを判定し(ステップS17)、この素数判定の結果、否の場合には、ステップS15に戻り、第1秘密鍵Dpを生成し直して、ステップS17で素数と判定されるまでくり返す。
CPU102は、ステップS17の判定の結果、整数Pが素数のときには、この素数Pを揮発性メモリ105に書き込む。
続いて、鍵生成装置100は素数Qの生成に移る。
鍵生成装置100においては、乱数生成部104が、ビット数ne+n{d_p}−np−nrの第2中間変数Kqをランダムに生成し、この第2中間変数Kqを揮発性メモリ105に書き込む(ステップS18)。
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に書き込まれる。
CPU102は、揮発性メモリ105を参照しながら奇数E、第2秘密鍵Dq及び第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する(ステップS20)。
CPU102は、このように構成した整数Qが素数か否かを判定し(ステップS21)、この素数判定の結果、否の場合には、ステップS19に戻り、第2秘密鍵Dqを生成し直して、ステップS21で素数と判定されるまでくり返す。
CPU102は、ステップS21の判定の結果、整数Qが素数のときには、この素数Qを揮発性メモリ105に書き込む。
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暗号方式の鍵として出力してもよい。
このようにして生成された素数P,Qは、P−1,Q−1に素因子Rを持つことが、以下のように確かめられる。
まずステップS15の構成の仕方より、Dp=E-1 mod KpRである。これはEDp−1=0 mod KpR、すなわちEDp−1がKpRの倍数であることを意味する。
一方、ステップS16の構成の仕方より、P=1+(EDp−1)/Kpである。変形するとP−1=(EDp−1)/Kpとなるが、上記よりEDp−1は、KpRの倍数であるので、(EDp−1)/Kpは、素数Rの倍数となる。従って、P−1は素数Rを素因子として持つ。
素数Qに関しても同様である。
従って、p−1法に対する耐性を持つように素数Rのビット数nrを指定した上で、本実施形態を実施することにより、暗号化と復号の処理時間をバランスするように鍵を生成可能であり、さらにP−1、Q−1に大きな素因子を持たせることができるため、より強固なRSA暗号方式の鍵を生成することができる。
ただし、ステップ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)を選ぶことができるため、本実施形態が有用であることが確かめられる。
上述したように本実施形態によれば、鍵生成処理の最初に、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法に強い鍵を生成できる。
さらに、P−1,Q−1に大きな既知の素因数Rを持たせることが可能となるために、整数Pの素数判定に確定的判定方法を使用でき、もって、正しいRSA暗号方式の鍵を生成することができる。
なお、本実施形態は、図3又は図4に示すように変形してもよい。
図3に示す処理は、図2に示すステップS12に代えて、互いに異なる素数Rp,Rqを算出するステップS12a,S12bを設け、図2に示すステップS15,S19のmod KpR,mod KqRに代えて、ステップS15’ではmod Kppとし、ステップS19’ではmod Kqqとしたものである。
この変形により、図2ではP−1,Q−1に同じ素因子Rを持たせるように構成していたが、図3ではP−1に素因子Rpを、Q−1に素因子Rqを、と異なる素因子を持たせることができる。また、図3に示す処理に変形しても、本実施形態を同様に実施して同様の効果を得ることに加え、P−1,Q−1に異なる素因子Rp,Rqを持たせることから、より強固な鍵を生成することができる。
図4に示す処理は、図3に示した処理の更なる変形例である。
図3におけるステップS17,S21において、整数PあるいはQが素数でないと判定されたときにそれぞれステップS15’,S19’に戻っていたが、図4のように、それぞれステップS14,S18に戻ってもよい。このように図4に示す処理に変形しても、図3に示す処理を同様に実施して同様の効果を得ることができる。
(第2の実施形態)
次に、本発明の第2の実施形態に係る鍵生成装置について説明するが、前述した図面と同一部分には同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。
すなわち、第2の実施形態は、第1の実施形態の素数判定処理において、確定的素数判定方法を用いて素数判定を実行する形態であり、具体的には、鍵生成装置100が、図2に示したステップS11,S12,S17,S21の処理を以下のように実行している。
ステップS11においては、ビット数np,nrを指定する際に、2nr>npの関係を満たすようにする。例えば、非特許文献2の3章記載の2番目のパラメータ例に示すように、ビット数np,nrを指定する。具体的には例えば、入出力部101としては、ビット数np,nrが指定されたとき、2nr>npの関係を満たすか否かを判定し、満たさない場合には関係を満たすようなビット数を再入力するように促す構成としてもよい。
また、ステップS12の処理は特に変更は無いが、整数Rが素数である必要があるため、整数Rの素数判定に確定的素数判定方法を用いている。確定的素数判定方法は、例えば非特許文献4に記載の方法などにより実現される。
ステップS17においては、整数Pを素数判定する際に、確定的素数判定方法であるポクリントン(Pocklington)の定理の特別な場合を用いる。
ポクリントンの定理の特別な場合は、以下のような定理であり、確率的素数判定方法としてよく利用されるミラー・ラビン(Miller-Rabin)法と同等の処理速度で素数判定を実行可能である。
整数PがP=AR+1,RはR>√Pを満たす素数、という形をしていると仮定する。このとき、次の2条件を満たす整数aが存在すれば、整数Pは素数である。
条件1:ap-1=1 mod P
条件2:gcd(a(p-1)/R−1,P)=1
ここで、gcdは最大公約数を表す。
ステップ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は、ポクリントンの定理の特別な場合の仮定を満たしている。
従って、ステップS17においては、CPU102は、ポクリントンの定理の特別な場合を利用し、条件1,2を満たす整数aが存在すれば、整数Pを素数であると判定する。具体的には図5に示すように、CPU102は、乱数生成部104により、整数aをランダムに生成する(S17−1)。なお、CPU102は、整数aをランダムに生成せずに、固定値(例えばa=2)の整数aを用いるように変形してもよい。
次に、CPU102は、ポクリントンの定理の特別な場合の条件1を検査する(ステップS17−2)。ここで検査に失敗した場合(図5におけるNo)、CPU102は、整数Pを合成数と判定し(ステップS17−5)、処理を終了する。
条件1の検査に成功した場合(図5におけるYes)、CPU102は、条件2を検査する(ステップS17−3)。条件2の検査に失敗した場合、CPU102は、整数Pを合成数と判定し(ステップS17−5)、処理を終了する。
条件2の検査に成功した場合、CPU102は、整数Pを素数と判定し(ステップS17−4)、処理を終了する。
ステップS21においては、ステップS17−1〜S17−5と同様にして、CPU102は、整数Qの素数判定を実行する。
上述したように本実施形態によれば、第1の実施形態の効果に加え、ミラー・ラビン法と同等の処理速度をもつ確定的素数判定方法を用いて整数P,Qを素数判定できるので、正しいRSA暗号方式の鍵を生成する有用な鍵生成方法を実現することができる。
ここで、素数判定方法について補足的に説明する。
整数P,Qが素数であるか否かを判定する方法としては、大きく分けて確率的素数判定方法と確定的素数判定方法との2種類の方法が知られている。
確率的素数判定方法は、合成数と判定された数については確実に合成数であるが、ある確率で合成数を誤って素数と判定することがある。
確定的素数判定方法は、素数と判定された数が確実に素数であるという特徴をもつ。素数判定対象の数が特殊な構造の場合(例えば(5)式でRが既知で、a<Rの場合)には、確定的素数判定方法は十分高速に実行できる。
一方、素数判定対象が一般の数の場合には、確定的素数判定方法では処理速度が遅く、実用に耐えないため、通常は確率的素数判定方法が用いられる。但し、確率的素数判定方法は、合成数を誤って素数と判定する確率が0ではないため、合成数を誤ってRSA暗号方式の鍵として使用する場合に、暗号文を復号できない等の問題が発生する。ここで、非特許文献2,3記載の技術では、整数P,Qに構造を持たせることが困難なため、確定的素数判定方法を使用できず、確率的素数判定方法を使用する必要があるので、0でない確率で暗号文を復号できない心配が残る。
しかしながら、本実施形態によれば、確定的素数判定方法を使用できるので、合成数を誤って素数と判定する確率をゼロにでき、暗号文を復号できない心配を解消することができる。
なお、本実施形態における確定的素数判定方法は、図3及び図4に示した変形例にも適用でき、同様の効果を得ることができる。
また、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
本発明の第1の実施形態に係る鍵生成装置の構成を示す模式図である。 同実施形態における動作を説明するためのフローチャートである。 同実施形態における動作の変形例を説明するためのフローチャートである。 同実施形態における動作の他の変形例を説明するためのフローチャートである。 本発明の第2の実施形態に係る鍵生成装置における確定的素数判定動作を説明するためのフローチャートである。 従来の鍵生成の動作を説明するためのフローチャートである。
符号の説明
100…鍵生成装置、101…入出力部、102…CPU、103…プログラム記憶部、104…乱数生成部、105…揮発性メモリ、106…不揮発性メモリ、107…バス。

Claims (4)

  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を前記記憶手段に書き込む第1秘密鍵生成手段と、
    前記記憶手段を参照しながら前記奇数E、前記第1秘密鍵Dp及び前記第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する整数P算出手段と、
    前記整数Pを素数判定する第1素数判定手段と、
    この素数判定の結果、前記整数Pが素数のとき、この素数Pを前記記憶手段に書き込む手段と、
    前記素数判定の結果、前記整数Pが素数でないとき、前記整数Pが素数と判定されるまで、前記第1秘密鍵生成手段、前記整数P算出手段及び前記第1素数判定手段を繰り返し実行させる手段と、
    前記ビット数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を前記記憶手段に書き込む第2秘密鍵生成手段と、
    前記記憶手段を参照しながら前記奇数E、前記第2秘密鍵Dq及び前記第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する整数Q算出手段と、
    前記整数Qを素数判定する第2素数判定手段と、
    この素数判定の結果、前記整数Qが素数のとき、この素数Qを前記記憶手段に書き込む手段と、
    前記第2素数判定手段による素数判定の結果、前記整数Qが素数でないとき、前記整数Qが素数と判定されるまで、前記第2秘密鍵生成手段、前記整数Q算出手段及び前記第2素数判定手段を繰り返し実行させる手段と、
    前記記憶手段を参照して前記奇数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を前記記憶手段に書き込む第1秘密鍵生成手段、
    前記記憶手段を参照しながら前記奇数E、前記第1秘密鍵Dp及び前記第1中間変数Kpと、式P=1+(EDp−1)/Kpとに基づいて、整数Pを算出する整数P算出手段、
    前記整数Pを素数判定する第1素数判定手段、
    この素数判定の結果、前記整数Pが素数のとき、この素数Pを前記記憶手段に書き込む手段、
    前記素数判定の結果、前記整数Pが素数でないとき、前記整数Pが素数と判定されるまで、前記第1秘密鍵生成手段、前記整数P算出手段及び前記第1素数判定手段を繰り返し実行させる手段と、
    前記ビット数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を前記記憶手段に書き込む第2秘密鍵生成手段、
    前記記憶手段を参照しながら前記奇数E、前記第2秘密鍵Dq及び前記第2中間変数Kqと、式Q=1+(EDq−1)/Kqとに基づいて、整数Qを算出する整数Q算出手段、
    前記整数Qを素数判定する第2素数判定手段、
    この素数判定の結果、前記整数Qが素数のとき、この素数Qを前記記憶手段に書き込む手段、
    前記第2素数判定手段による素数判定の結果、前記整数Qが素数でないとき、前記整数Qが素数と判定されるまで、前記第2秘密鍵生成手段、前記整数Q算出手段及び前記第2素数判定手段を繰り返し実行させる手段と、
    前記記憶手段を参照して前記奇数E、前記秘密鍵Dp,Dq及び前記素数P,Qを前記RSA暗号方式の鍵データとして出力する手段、
    として機能させるためのプログラム。
  4. 請求項3に記載のプログラムにおいて、
    前記第1及び第2素数判定手段は、確定的素数判定方法を用いて素数判定を実行する手段、として前記鍵生成装置を機能させるプログラム。
JP2008208962A 2008-08-14 2008-08-14 鍵生成装置及びプログラム Active JP4802228B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008208962A JP4802228B2 (ja) 2008-08-14 2008-08-14 鍵生成装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008208962A JP4802228B2 (ja) 2008-08-14 2008-08-14 鍵生成装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2010044262A JP2010044262A (ja) 2010-02-25
JP4802228B2 true JP4802228B2 (ja) 2011-10-26

Family

ID=42015689

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008208962A Active JP4802228B2 (ja) 2008-08-14 2008-08-14 鍵生成装置及びプログラム

Country Status (1)

Country Link
JP (1) JP4802228B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107888385B (zh) * 2017-12-27 2020-12-22 数安时代科技股份有限公司 Rsa模数生成方法、rsa密钥生成方法、计算机设备及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3626340B2 (ja) * 1996-12-26 2005-03-09 株式会社東芝 暗号装置及び暗号鍵生成方法、並びに素数生成装置及び素数生成方法
JP3750295B2 (ja) * 1997-08-05 2006-03-01 富士ゼロックス株式会社 素数生成方法および装置
JP4664514B2 (ja) * 2001-03-14 2011-04-06 株式会社東芝 素数生成装置及びプログラム
JP3518680B2 (ja) * 2001-07-16 2004-04-12 村田機械株式会社 素数生成装置

Also Published As

Publication number Publication date
JP2010044262A (ja) 2010-02-25

Similar Documents

Publication Publication Date Title
US10277395B2 (en) Cryptographic key-generation with application to data deduplication
CA2792267C (en) Verifying implicit certificates and digital signatures
TW201320701A (zh) 資訊處理裝置、資訊處理方法及程式
JP2010049215A (ja) パラメータ生成装置、暗号処理システム、方法およびプログラム
JP2010049213A (ja) 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
JP7238977B2 (ja) 匿名署名システム及び匿名署名方法
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP4802228B2 (ja) 鍵生成装置及びプログラム
KR102132685B1 (ko) 순서 노출 암호화를 위한 장치 및 방법
JP2008136193A (ja) 署名生成装置、署名検証装置、それらの方法及びプログラム
JP4848957B2 (ja) 署名および検証方法ならびに署名および検証装置
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
Czypek Implementing multivariate quadratic public key signature schemes on embedded devices
JP5300373B2 (ja) 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
JP5038866B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
JP5210712B2 (ja) 圧縮rsa係数の計算方法
JP2017223822A (ja) 暗号文処理システム、暗号文処理サーバ、及び暗号文処理方法
JP5032955B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
JP4836676B2 (ja) 素数生成プログラム
JP2007218997A (ja) 素数生成装置、プログラム及び方法
WO2011033642A1 (ja) 署名生成装置及び署名検証装置
JP5964759B2 (ja) 計算システム
WO2023228408A1 (ja) パラメータ生成システム、パラメータ生成方法、及びパラメータ生成プログラム
JP5355263B2 (ja) 鍵共有装置、鍵共有方法及びプログラム
WO2012176408A1 (ja) 署名検証方法、署名検証システム及び署名検証プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110622

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110712

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110808

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4802228

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350