JP2004334126A - Rsa用鍵生成方法、その装置、そのプログラム及びその記録媒体 - Google Patents
Rsa用鍵生成方法、その装置、そのプログラム及びその記録媒体 Download PDFInfo
- Publication number
- JP2004334126A JP2004334126A JP2003133354A JP2003133354A JP2004334126A JP 2004334126 A JP2004334126 A JP 2004334126A JP 2003133354 A JP2003133354 A JP 2003133354A JP 2003133354 A JP2003133354 A JP 2003133354A JP 2004334126 A JP2004334126 A JP 2004334126A
- Authority
- JP
- Japan
- Prior art keywords
- secret key
- rsa
- key
- unit
- calculation
- 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.)
- Pending
Links
Images
Abstract
【課題】RSA暗号/署名において与えられた公開鍵eに対し、復号/署名生成の計算量vを最小とする秘密鍵dの生成を可能とする。
【解決手段】素数p,q、(p−1)と(q−1)の最小公倍数λ(n)とeによりd=e−1 modλ(n)を求め(S5)、dをd′としてd″=d′+λ(n)を求め(S6−3)、d″のビットサイズ|d″|−1よりdを用いた場合の計算量vが大であれば、d″を用いた場合の計算量v′に対し、v′<vでなければd″をd′としてステップS6−3に戻り、v′<vであればd″をdとし、v′をvとしてステップS6−8を介してステップS6−3に戻る(S6−9)、|d″|−1<vであればその時のdを秘密鍵とする。
【選択図】 図4
【解決手段】素数p,q、(p−1)と(q−1)の最小公倍数λ(n)とeによりd=e−1 modλ(n)を求め(S5)、dをd′としてd″=d′+λ(n)を求め(S6−3)、d″のビットサイズ|d″|−1よりdを用いた場合の計算量vが大であれば、d″を用いた場合の計算量v′に対し、v′<vでなければd″をd′としてステップS6−3に戻り、v′<vであればd″をdとし、v′をvとしてステップS6−8を介してステップS6−3に戻る(S6−9)、|d″|−1<vであればその時のdを秘密鍵とする。
【選択図】 図4
Description
【0001】
【発明の属する技術分野】
この発明は情報セキュリティ分野において、RSA暗号/署名において、公開鍵eが予め決定された状態において、RSA暗号における復号またはRSA署名における署名生成処理を、より高速に計算可能なようにする秘密鍵dを決定することが可能な、鍵生成の方法、それを実現する装置、そのプログラムおよびそのプログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
従来のRSA鍵生成の方法は一般的に広く知られており次のように行われる。まず、素数p,qに対して、n=p×q,λ(n)=LCM(p−1,q−1)を求めるLCM(A,B)はAとBの最小公倍数を表わす。次にed≡1(mod λ(n))となるような公開鍵eと秘密鍵dを定める。実際には公開鍵eを、0以上λ(n)未満の整数の集合であり、かつλ(n)と互いに素な整数の集合から適当に選び、d=e−1 modλ(n)となるようなdを計算して秘密鍵dを定める(例えば非特許文献1参照)。
【0003】
【非特許文献1】
岡本、山本「現代暗号」p.110、産業図書、1997年6月30日発行。
【0004】
【発明が解決しようとする課題】
従来技術の問題点は、高速化を狙った秘密鍵dの生成ができていなかった点である。つまり公開鍵eは先に自由に決定できるため、RSA暗号の暗号化、RSA署名の署名検証に対し高速化に適した値を選択することができる。実際、市販の署名装置ではe=65537というbinary method(例えばDonald E.Knuth著,“The Art of Computer Programming−VOLUME2 Seminumerical Algorithms”,Addison Wesley出版 461頁参照)と呼ばれる演算方法に都合の良い値が固定で与えられていることが多く、RSA暗号の暗号化、RSA署名の署名検証を高速化することが考えられている。しかし前述の通り公開鍵eを固定すると秘密鍵dはd=e−1 modλ(n)と一方的に決定されてしまい、RSA暗号の復号又はRSA署名の署名生成については高速化を計る余地がなかった。
【0005】
この発明の目的は公開鍵eはこれまで通り、暗号化又は署名検証処理には高速化に適した値を利用しつつ、その中で秘密鍵dとして、復号化又は署名生成処理のより高速化に適した値を出力するRSA暗号/署名用鍵生成方法、その装置、そのプログラム及びその記録媒体を提供することにある。
【0006】
【課題を解決するための手段】
この発明によれば、(p−1)と(q−1)の最小公倍数λ(n)と公開鍵eを用いて、
複数の秘密鍵候補を生成し、これら複数の秘密鍵候補について、その秘密鍵候補を秘密鍵とした時のRSA暗号の復号処理又はRSA署名の署名生成処理における計算量を求め、これら複数の計算量を最小化する秘密鍵候補を秘密鍵として出力する。
具体的には秘密鍵候補として、
di =(e−1 modλ(n))+iλ(n)
i=0,1,2,…
を演算し、di を秘密鍵とした場合のRSA暗号の復号処理又はRSA署名の署名生成処理における計算量が最小となるdi を秘密鍵dとして出力する。
つまり例えばRSA暗号における復号処理は、暗号文をCとするとCに対し秘密鍵dを用いてCd modnを演算することになる。このべき乗演算Cd を一般的なbinary methodで計算すると、その計算量は2乗算が(|d|−1)回、乗算が(#1 d−1)回、の合計(|d|−1)+(#1 d−1)回となる。ここで|d|はdのビットサイズ(最上位ビット=1)、#1 dはdを2進表記した際のビット1の個数である。
【0007】
この発明によれば公開鍵と最小公倍数λ(n)を用いて以下の秘密鍵候補を算出する。
d0 =e−1 modλ(n)
d1 =d0 +λ(n)=(e−1 modλ(n))+λ(n)
d2 =d1 +λ(n)=(e−1 modλ(n))+2λ(n)
:
di (i=0,1,2,…)を秘密鍵dとして利用した際のRSA暗号の復号/RSA署名の署名生成時の計算量vi =(|di |−1)+(#1 di −1)において、min{vi }を与える秘密鍵候補di を秘密鍵dとして出力する。eが固定で与えられた際に、最良のdを探索して出力する点が従来技術と異なる。
【0008】
【発明の実施の形態】
図1にこの発明装置の実施形態の機能構成例を、図2にその処理手順の例を示し、以下その機能構成を説明しながら、処理、つまり鍵生成方法を説明する。
素数生成部10は素数p及びqを生成し、記憶部11に記憶する(ステップS1)。これら生成された素数pとqとが乗算部20に入力して、互いに乗算し、その乗算結果をnとして記憶部21に記憶する(ステップS2)。また素数pとqを最小公倍数演算部30に入力して、(p−1)と(q−1)の最小公倍数λ(n)を演算し、記憶部31に記憶する(ステップS3)。ステップS2のpとqの乗算、ステップS3の最小公倍数λ(n)の演算は何れを先に行ってもよい。
公開鍵eが予めこの鍵生成装置に入力され、記憶部40に記憶されている。この公開鍵eと、最小公倍数λ(n)が秘密鍵候補生成部50に入力され、複数の秘密鍵候補が生成され(S5)、これら秘密鍵候補について、それらをそれぞれRSA暗号の復号処理又はRSA署名の署名生成処理に用いた場合の計算量を計算量演算部60で演算し(S6)、最小値検出・出力部70でこれら演算した計算量中の最小値を検出し、その最小値が得られた演算に用いた秘密鍵候補を求め、その秘密鍵候補を秘密鍵として出力する(S7)。
【0009】
前記公開鍵eがRSA暗号の暗号処理又はRSA署名の署名検証処理を高速化するためのbinary methodに都合がよい値である場合は、秘密鍵候補生成部50において秘密鍵候補として、
di=(e−1 modλ(n))+iλ(n)
i=0,1,2,…
が生成され、計算量演算部60では各秘密鍵候補diについて、diのビットサイズ|di|と、ビット1の数#1diを求め、計算量viとして
vi=(|di|−1)+(#1di−1)
をそれぞれ演算する。
これら計算量vi(i=0,1,2,…)中の最小値のviを検出し、その最小値のvi ,minの演算に用いた秘密鍵候補di,minを秘密鍵dとして出力する。
【0010】
計算量viの最小値の秘密鍵候補di,minを求めるには秘密鍵候補を1個づつ生成し、これが計算量最小のものか否かを逐次判定するようにしてもよい。この実施形態の機能構成を図3に、処理手順を図4にそれぞれ図1、図2と対応する部分に同一参照記号を付けて示し、図1、図2と異なる部分について以下に説明する。つまり鍵生成装置においては秘密鍵候補生成部50、計算量演算部60及び最小値検出・出力部70の全体の機能構成として、逆数余剰演算部150、補正判定部160、出力部170が設けられ、鍵生成方法としては、図2中のステップS4以降のステップが変更される。
最小公倍数λ(n)と記憶部40内の公開鍵eを逆数剰余演算部150に取り込み(ステップS4)、λ(n)を法とするeの逆数を演算し、その結果dを記憶部51に記憶する(ステップS5)。
補正判定部160に、秘密鍵候補dと最小公倍数λ(n)を入力して、その補正部61でdi とiλ(n)(i=0,1,2,…)を加算し、その加算結果d′とdとを用いて判定部62で、di を秘密鍵として用いた場合のRSA暗号の復号処理およびRSA署名の署名生成処理における計算量vi が最小となるdi を判定する(ステップS6)。
【0011】
補正判定部60からの計算量が最小になると判定したdiを出力部70へ供給して、その時のdi を秘密鍵とし、これと、必要に応じて素数p,q、乗算値n、最小公倍数λ(n)、公開鍵eを記憶部から取り出して出力する(ステップS7)。
補正判定処理S6の具体的処理例を、計算を2進数表現により行う場合について説明する。まず計算量演算部60で秘密鍵候補dを秘密鍵とした場合のRSA暗号の復号処理又はRSA署名の署名生成処理における計算量vを計算する(ステップS6−1)。つまりdのビットサイズ|d|,ビット1の数#1dを求め、計算量v
v=(|d|−1)+(#1d−1)
を演算する。その後、秘密鍵候補dをd´として(ステップS6−2)補正部61に入力し、補正部61はこのd′と、最小公倍数λ(n)を加算して加算結果d″=d′+λ(n)を求める(ステップS6−3)。次に判定部62でd″のビットサイズ|d″|を求め(ステップS6−4)、第1判定部62aで、(|d″|−1)より計算量v=(|d|−1)+(#1 d−1)が大きいかの第1判定を行う(ステップS6−5)。この第1判定の結果が(|d′|−1)<vであれば、第2判定部62bでd″を秘密鍵とした場合の計算量v′(=(|d″|−1)+(#1 d″−1))を求め(ステップS6−6)、vがv′より大きいかの第2判定を行う(ステップS6−7)。
【0012】
第2判定の結果がv′<vでなければd″をd′としてステップS6−3に戻る(ステップS6−8)。つまり秘密鍵候補dはそのままとして、ステップS6−8でd′とされたd′に、ステップS6−3でλ(n)が加算される。ステップS6−7でv′<vであれば記憶部51の秘密鍵候補dをd″で更新し、かつ計算量vをv′で更新して(ステップS6−9)ステップS6−8に移り、更にステップS6−3に戻る。つまり秘密鍵候補dを更新すると共に比較するための鍵d″も更新する。このようにしてdi(i=0,1,2,…)に対しλ(n)が順次加算され、その都度di を秘密鍵とした場合の計算量が最小であるかの判定がなされる。ステップS6−5の第1判定の結果が(|d″|−1)<vであれば、その時の記憶部61の秘密鍵候補dが、計算量vを最小とするものとする判定結果を出力してステップS7に移る。
【0013】
図1に示した鍵生成装置には、制御部80が設けられ、各記憶部に対する読み出し、書き込み、他の各部を順次動作させるなどの制御を行う。図1では記憶部21,31,40,51はレジスタを想定したが、これらのいくつか又は全部を、RAMなどの記憶部で兼用するようにしてもよい。この鍵生成装置はコンピュータにより機能させてもよい。この場合は、例えば図2に示した鍵生成方法の各ステップをコンピュータに実行させるためのプログラムをCD−ROM、磁気ディスクなど記録媒体から、あるいは通信回線を介してコンピュータにダウンロードして、コンピュータにそのプログラムを実行させればよい。
【0014】
【発明の効果】
以上述べたようにこの発明によれば前記計算量vが最小となる秘密鍵dを生成しているから、本来遅いとされていたRSA暗号の復号およびRSA署名の署名生成を高速化することができる。しかも、この発明ではRSA公開鍵eは従来通り固定でよいことから、市販の署名装置などに適用できる。
具体的な数値例でどの程度計算量が低減するかを見てみると、
p=10039,q=10139
n=p×q=101785421
λ(n)=LCM(p−1,q−1)=50882622
e=65537
とすると、従来方式によるdをdformとすると、
dform=e−1 modλ(n)=50849237
となる。この発明によるdをdpropとすると、
dprop=(e−1 modλ(n))+λ(n)=101731859
が選ばれる。各々を2進表記すると、
dform= 11000001111110010111010101
dprop=110000100000100111000010011
となり、
|dform|=26
#1 dform =15
|dprop|=27
#1 dprop =10
であるため、dform,dpropを利用し、RSA暗号の復号/RSA署名の署名生成をbinary methodにより計算した際の乗算/2乗算の回数は
dform利用:(26−1)+(15−1)=39
dprop利用:(27−1)+(10−1)=35
となり、この発明を適用すると、計算回数を4回分低減させることができる。
【図面の簡単な説明】
【図1】この発明の装置の機能構成例を示すブロック図。
【図2】この発明の方法の手順の例を示す流れ図。
【図3】この発明の装置のより好ましい機能構成例を示すブロック図。
【図4】この発明の方法のより好ましい手順の例を示す流れ図。
【発明の属する技術分野】
この発明は情報セキュリティ分野において、RSA暗号/署名において、公開鍵eが予め決定された状態において、RSA暗号における復号またはRSA署名における署名生成処理を、より高速に計算可能なようにする秘密鍵dを決定することが可能な、鍵生成の方法、それを実現する装置、そのプログラムおよびそのプログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
従来のRSA鍵生成の方法は一般的に広く知られており次のように行われる。まず、素数p,qに対して、n=p×q,λ(n)=LCM(p−1,q−1)を求めるLCM(A,B)はAとBの最小公倍数を表わす。次にed≡1(mod λ(n))となるような公開鍵eと秘密鍵dを定める。実際には公開鍵eを、0以上λ(n)未満の整数の集合であり、かつλ(n)と互いに素な整数の集合から適当に選び、d=e−1 modλ(n)となるようなdを計算して秘密鍵dを定める(例えば非特許文献1参照)。
【0003】
【非特許文献1】
岡本、山本「現代暗号」p.110、産業図書、1997年6月30日発行。
【0004】
【発明が解決しようとする課題】
従来技術の問題点は、高速化を狙った秘密鍵dの生成ができていなかった点である。つまり公開鍵eは先に自由に決定できるため、RSA暗号の暗号化、RSA署名の署名検証に対し高速化に適した値を選択することができる。実際、市販の署名装置ではe=65537というbinary method(例えばDonald E.Knuth著,“The Art of Computer Programming−VOLUME2 Seminumerical Algorithms”,Addison Wesley出版 461頁参照)と呼ばれる演算方法に都合の良い値が固定で与えられていることが多く、RSA暗号の暗号化、RSA署名の署名検証を高速化することが考えられている。しかし前述の通り公開鍵eを固定すると秘密鍵dはd=e−1 modλ(n)と一方的に決定されてしまい、RSA暗号の復号又はRSA署名の署名生成については高速化を計る余地がなかった。
【0005】
この発明の目的は公開鍵eはこれまで通り、暗号化又は署名検証処理には高速化に適した値を利用しつつ、その中で秘密鍵dとして、復号化又は署名生成処理のより高速化に適した値を出力するRSA暗号/署名用鍵生成方法、その装置、そのプログラム及びその記録媒体を提供することにある。
【0006】
【課題を解決するための手段】
この発明によれば、(p−1)と(q−1)の最小公倍数λ(n)と公開鍵eを用いて、
複数の秘密鍵候補を生成し、これら複数の秘密鍵候補について、その秘密鍵候補を秘密鍵とした時のRSA暗号の復号処理又はRSA署名の署名生成処理における計算量を求め、これら複数の計算量を最小化する秘密鍵候補を秘密鍵として出力する。
具体的には秘密鍵候補として、
di =(e−1 modλ(n))+iλ(n)
i=0,1,2,…
を演算し、di を秘密鍵とした場合のRSA暗号の復号処理又はRSA署名の署名生成処理における計算量が最小となるdi を秘密鍵dとして出力する。
つまり例えばRSA暗号における復号処理は、暗号文をCとするとCに対し秘密鍵dを用いてCd modnを演算することになる。このべき乗演算Cd を一般的なbinary methodで計算すると、その計算量は2乗算が(|d|−1)回、乗算が(#1 d−1)回、の合計(|d|−1)+(#1 d−1)回となる。ここで|d|はdのビットサイズ(最上位ビット=1)、#1 dはdを2進表記した際のビット1の個数である。
【0007】
この発明によれば公開鍵と最小公倍数λ(n)を用いて以下の秘密鍵候補を算出する。
d0 =e−1 modλ(n)
d1 =d0 +λ(n)=(e−1 modλ(n))+λ(n)
d2 =d1 +λ(n)=(e−1 modλ(n))+2λ(n)
:
di (i=0,1,2,…)を秘密鍵dとして利用した際のRSA暗号の復号/RSA署名の署名生成時の計算量vi =(|di |−1)+(#1 di −1)において、min{vi }を与える秘密鍵候補di を秘密鍵dとして出力する。eが固定で与えられた際に、最良のdを探索して出力する点が従来技術と異なる。
【0008】
【発明の実施の形態】
図1にこの発明装置の実施形態の機能構成例を、図2にその処理手順の例を示し、以下その機能構成を説明しながら、処理、つまり鍵生成方法を説明する。
素数生成部10は素数p及びqを生成し、記憶部11に記憶する(ステップS1)。これら生成された素数pとqとが乗算部20に入力して、互いに乗算し、その乗算結果をnとして記憶部21に記憶する(ステップS2)。また素数pとqを最小公倍数演算部30に入力して、(p−1)と(q−1)の最小公倍数λ(n)を演算し、記憶部31に記憶する(ステップS3)。ステップS2のpとqの乗算、ステップS3の最小公倍数λ(n)の演算は何れを先に行ってもよい。
公開鍵eが予めこの鍵生成装置に入力され、記憶部40に記憶されている。この公開鍵eと、最小公倍数λ(n)が秘密鍵候補生成部50に入力され、複数の秘密鍵候補が生成され(S5)、これら秘密鍵候補について、それらをそれぞれRSA暗号の復号処理又はRSA署名の署名生成処理に用いた場合の計算量を計算量演算部60で演算し(S6)、最小値検出・出力部70でこれら演算した計算量中の最小値を検出し、その最小値が得られた演算に用いた秘密鍵候補を求め、その秘密鍵候補を秘密鍵として出力する(S7)。
【0009】
前記公開鍵eがRSA暗号の暗号処理又はRSA署名の署名検証処理を高速化するためのbinary methodに都合がよい値である場合は、秘密鍵候補生成部50において秘密鍵候補として、
di=(e−1 modλ(n))+iλ(n)
i=0,1,2,…
が生成され、計算量演算部60では各秘密鍵候補diについて、diのビットサイズ|di|と、ビット1の数#1diを求め、計算量viとして
vi=(|di|−1)+(#1di−1)
をそれぞれ演算する。
これら計算量vi(i=0,1,2,…)中の最小値のviを検出し、その最小値のvi ,minの演算に用いた秘密鍵候補di,minを秘密鍵dとして出力する。
【0010】
計算量viの最小値の秘密鍵候補di,minを求めるには秘密鍵候補を1個づつ生成し、これが計算量最小のものか否かを逐次判定するようにしてもよい。この実施形態の機能構成を図3に、処理手順を図4にそれぞれ図1、図2と対応する部分に同一参照記号を付けて示し、図1、図2と異なる部分について以下に説明する。つまり鍵生成装置においては秘密鍵候補生成部50、計算量演算部60及び最小値検出・出力部70の全体の機能構成として、逆数余剰演算部150、補正判定部160、出力部170が設けられ、鍵生成方法としては、図2中のステップS4以降のステップが変更される。
最小公倍数λ(n)と記憶部40内の公開鍵eを逆数剰余演算部150に取り込み(ステップS4)、λ(n)を法とするeの逆数を演算し、その結果dを記憶部51に記憶する(ステップS5)。
補正判定部160に、秘密鍵候補dと最小公倍数λ(n)を入力して、その補正部61でdi とiλ(n)(i=0,1,2,…)を加算し、その加算結果d′とdとを用いて判定部62で、di を秘密鍵として用いた場合のRSA暗号の復号処理およびRSA署名の署名生成処理における計算量vi が最小となるdi を判定する(ステップS6)。
【0011】
補正判定部60からの計算量が最小になると判定したdiを出力部70へ供給して、その時のdi を秘密鍵とし、これと、必要に応じて素数p,q、乗算値n、最小公倍数λ(n)、公開鍵eを記憶部から取り出して出力する(ステップS7)。
補正判定処理S6の具体的処理例を、計算を2進数表現により行う場合について説明する。まず計算量演算部60で秘密鍵候補dを秘密鍵とした場合のRSA暗号の復号処理又はRSA署名の署名生成処理における計算量vを計算する(ステップS6−1)。つまりdのビットサイズ|d|,ビット1の数#1dを求め、計算量v
v=(|d|−1)+(#1d−1)
を演算する。その後、秘密鍵候補dをd´として(ステップS6−2)補正部61に入力し、補正部61はこのd′と、最小公倍数λ(n)を加算して加算結果d″=d′+λ(n)を求める(ステップS6−3)。次に判定部62でd″のビットサイズ|d″|を求め(ステップS6−4)、第1判定部62aで、(|d″|−1)より計算量v=(|d|−1)+(#1 d−1)が大きいかの第1判定を行う(ステップS6−5)。この第1判定の結果が(|d′|−1)<vであれば、第2判定部62bでd″を秘密鍵とした場合の計算量v′(=(|d″|−1)+(#1 d″−1))を求め(ステップS6−6)、vがv′より大きいかの第2判定を行う(ステップS6−7)。
【0012】
第2判定の結果がv′<vでなければd″をd′としてステップS6−3に戻る(ステップS6−8)。つまり秘密鍵候補dはそのままとして、ステップS6−8でd′とされたd′に、ステップS6−3でλ(n)が加算される。ステップS6−7でv′<vであれば記憶部51の秘密鍵候補dをd″で更新し、かつ計算量vをv′で更新して(ステップS6−9)ステップS6−8に移り、更にステップS6−3に戻る。つまり秘密鍵候補dを更新すると共に比較するための鍵d″も更新する。このようにしてdi(i=0,1,2,…)に対しλ(n)が順次加算され、その都度di を秘密鍵とした場合の計算量が最小であるかの判定がなされる。ステップS6−5の第1判定の結果が(|d″|−1)<vであれば、その時の記憶部61の秘密鍵候補dが、計算量vを最小とするものとする判定結果を出力してステップS7に移る。
【0013】
図1に示した鍵生成装置には、制御部80が設けられ、各記憶部に対する読み出し、書き込み、他の各部を順次動作させるなどの制御を行う。図1では記憶部21,31,40,51はレジスタを想定したが、これらのいくつか又は全部を、RAMなどの記憶部で兼用するようにしてもよい。この鍵生成装置はコンピュータにより機能させてもよい。この場合は、例えば図2に示した鍵生成方法の各ステップをコンピュータに実行させるためのプログラムをCD−ROM、磁気ディスクなど記録媒体から、あるいは通信回線を介してコンピュータにダウンロードして、コンピュータにそのプログラムを実行させればよい。
【0014】
【発明の効果】
以上述べたようにこの発明によれば前記計算量vが最小となる秘密鍵dを生成しているから、本来遅いとされていたRSA暗号の復号およびRSA署名の署名生成を高速化することができる。しかも、この発明ではRSA公開鍵eは従来通り固定でよいことから、市販の署名装置などに適用できる。
具体的な数値例でどの程度計算量が低減するかを見てみると、
p=10039,q=10139
n=p×q=101785421
λ(n)=LCM(p−1,q−1)=50882622
e=65537
とすると、従来方式によるdをdformとすると、
dform=e−1 modλ(n)=50849237
となる。この発明によるdをdpropとすると、
dprop=(e−1 modλ(n))+λ(n)=101731859
が選ばれる。各々を2進表記すると、
dform= 11000001111110010111010101
dprop=110000100000100111000010011
となり、
|dform|=26
#1 dform =15
|dprop|=27
#1 dprop =10
であるため、dform,dpropを利用し、RSA暗号の復号/RSA署名の署名生成をbinary methodにより計算した際の乗算/2乗算の回数は
dform利用:(26−1)+(15−1)=39
dprop利用:(27−1)+(10−1)=35
となり、この発明を適用すると、計算回数を4回分低減させることができる。
【図面の簡単な説明】
【図1】この発明の装置の機能構成例を示すブロック図。
【図2】この発明の方法の手順の例を示す流れ図。
【図3】この発明の装置のより好ましい機能構成例を示すブロック図。
【図4】この発明の方法のより好ましい手順の例を示す流れ図。
Claims (7)
- 予め固定された公開鍵eに対し、鍵生成装置によりRSA用鍵を生成する方法であって、
素数p,qを生成し、記憶し、
上記素数pとqを乗算し、乗算結果をnとして記憶し、
上記素数p及びqに対し、p−1とq−1の最小公倍数を演算し、その結果をλ(n)として記憶し、
上記公開鍵e及び上記最小公倍数λ(n)を記憶部から取り出し、
複数の秘密鍵候補を生成し、
これら複数の秘密鍵候補について、その秘密鍵候補を秘密鍵とした時のRSA暗号の復号処理又はRSA署名の署名生成処理における計算量を求め、
これら複数の計算量中の最小のものを求め、その最小のものと対応する秘密鍵候補を秘密鍵として出力することを特徴とするRSA用鍵生成方法。 - 上記複数の秘密鍵候補の生成は、
di =(e−1 modλ(n))+iλ(n)
i=0,1,2,…
であることを特徴とする請求項1記載のRSA用鍵生成方法。 - 上記計算量を求める過程、および上記計算量の最小のものと対応する秘密鍵候補di を秘密鍵として出力する過程は、
λ(n)を法とするeの逆数を演算し、その結果を秘密鍵候補dとして記憶し、
そのdをd′とし、これに上記λ(n)を加算する補正演算を行いその結果をd″とし、
上記dを秘密鍵として用いればRSA暗号の復号又はRSA署名の署名生成時の計算量が最小となるか否かを、上記d′とd″を用いて判定し、
その判定が最小でなければ、秘密鍵候補dをそのまま又はd″とし、かつ上記d″をd′として上記補正演算以後の過程を繰り返し、判定最小であれば上記d′を秘密鍵として出力する
ことを特徴とする請求項2記載のRSA用鍵生成方法。 - 上記計算量が最小であるか否かの判定は、
上記d,d″を2進表現した際の各ビットサイズ|d|,|d″|とし、各ビット1の個数#1 d,#1 d″とし、
上記計算量としてv=(|d|−1)+(#d−1)を演算し、
その計算量vが(|d″|−1)より大であるかを先ず判定し、大でなければ、計算量が最小と判定して上記秘密鍵候補dを秘密鍵として出力する過程に移り、
計算量vが(|d″|−1)より大であれば、(|d′|−1)+(#1 d′−1)=v′を演算し、
vがv′より大であるかを判定し、大であればdをd″で更新し、かつv′をvで更新し、大でなければdはそのままとしd′をd″で更新して上記補正演算過程に移ることを特徴とする請求項3記載のRSA用鍵生成方法。 - 公開鍵eが格納されたメモリと、
素数p,qを生成する素数生成部と、
上記素数p,qが入力され、pとqを乗算してその結果nを出力する乗算部と、
上記素数p,qが入力され、(p−1)と(q−1)の最小公倍数λ(n)を演算してλ(n)を出力する最小公倍数演算部と、
上記公開鍵eと上記最小公倍数λ(n)が入力され、λ(n)を法とするeの逆数を演算してその結果dを秘密鍵候補として出力する逆数剰余演算部と、
上記最小公倍数λ(n)と秘密鍵候補dが入力され、λ(n)とdi(i=0,1,2,…)を加算してd′として出力する補正部と、そのd′と上記秘密鍵候補dが入力され、これらより秘密鍵候補di(i=0,1,2,…)を秘密鍵として用いた場合のRSA暗号の復号又はRSA署名の署名生成時の計算量viとvi+1を演算する計算量演算部と、その演算した計算量viが最小値であるか否かを判定する判定部を備え、その判定部の判定が最小値でないと判定すれば上記d′を新たな秘密鍵候補として又は秘密鍵候補をそのままとし、d′をdとして上記補正部に入力して、最小となる判定結果を出力するまで上記補正部と計算量演算部と判定部を繰り返し動作させる補正判定部と、
上記最小となる判定結果が入力され、その時の秘密鍵候補を秘密鍵として出力する出力部と
を具備するRSA用鍵生成装置。 - 請求項1乃至4のいずれかに記載のRSA用鍵生成方法の各過程をコンピュータに実行させるためのプログラム。
- 請求項6に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003133354A JP2004334126A (ja) | 2003-05-12 | 2003-05-12 | Rsa用鍵生成方法、その装置、そのプログラム及びその記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003133354A JP2004334126A (ja) | 2003-05-12 | 2003-05-12 | Rsa用鍵生成方法、その装置、そのプログラム及びその記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004334126A true JP2004334126A (ja) | 2004-11-25 |
Family
ID=33507922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003133354A Pending JP2004334126A (ja) | 2003-05-12 | 2003-05-12 | Rsa用鍵生成方法、その装置、そのプログラム及びその記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004334126A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8041944B2 (en) | 2006-03-16 | 2011-10-18 | Nec Corporation | Group signature system and information processing method |
-
2003
- 2003-05-12 JP JP2003133354A patent/JP2004334126A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8041944B2 (en) | 2006-03-16 | 2011-10-18 | Nec Corporation | Group signature system and information processing method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5328186B2 (ja) | データ処理システム及びデータ処理方法 | |
JP5378579B2 (ja) | フォールディングを用いるモジュール削減 | |
KR102550812B1 (ko) | 동형 암호를 이용한 암호문 비교 방법 및 이를 수행하기 위한 장치 | |
CN107004084B (zh) | 用于加密操作的乘法掩码 | |
JP2010277085A (ja) | Rsaアルゴリズムにおける素数生成の保護 | |
US11190340B2 (en) | Efficient unified hardware implementation of multiple ciphers | |
JP3785044B2 (ja) | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 | |
JP2002207429A (ja) | 効率的な冪乗法および装置 | |
CN111385092B (zh) | 使用信息盲化的密码装置及其密码处理方法 | |
KR101154845B1 (ko) | 스칼라 배산기 및 스칼라 배산프로그램 | |
JP2011512556A (ja) | 楕円曲線上の多数の点を計算する装置及び方法 | |
Mono et al. | Implementing and Optimizing Matrix Triples with Homomorphic Encryption | |
CN116260572A (zh) | 数据杂凑处理方法、数据验证方法及电子设备 | |
JP2004334126A (ja) | Rsa用鍵生成方法、その装置、そのプログラム及びその記録媒体 | |
CN113467752A (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
JP2007218997A (ja) | 素数生成装置、プログラム及び方法 | |
JP4664514B2 (ja) | 素数生成装置及びプログラム | |
JP3796867B2 (ja) | 素数判定方法および装置 | |
JPH076025A (ja) | 冪剰余演算方法および装置 | |
JP3638493B2 (ja) | 楕円曲線自乗演算装置、およびこのプログラム記録媒体 | |
JP4306121B2 (ja) | 除算回路,乗除算回路 | |
JP2003263110A (ja) | 楕円曲線上の有理点群の部分群の元生成装置、そのプログラム及び記録媒体 | |
JP3518680B2 (ja) | 素数生成装置 | |
KR20230082789A (ko) | 다항식을 이용하여 데이터의 암복호화를 수행하는 암호화 시스템에서 사용되는 다항식의 역원을 생성하기 위한 역원 생성 장치 및 방법 | |
CN116483313A (zh) | 信息处理方法、装置、电子设备及计算机可读存储介质 |