JP2002196671A - 暗号プロトコル実行用計算装置 - Google Patents
暗号プロトコル実行用計算装置Info
- Publication number
- JP2002196671A JP2002196671A JP2001318835A JP2001318835A JP2002196671A JP 2002196671 A JP2002196671 A JP 2002196671A JP 2001318835 A JP2001318835 A JP 2001318835A JP 2001318835 A JP2001318835 A JP 2001318835A JP 2002196671 A JP2002196671 A JP 2002196671A
- Authority
- JP
- Japan
- Prior art keywords
- numbers
- computing device
- series
- large number
- reciprocal
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/721—Modular inversion, reciprocal or quotient calculation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Complex Calculations (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
Abstract
(57)【要約】
【課題】 大きな数の整数モジューロの逆数を決定する
計算装置を提供する。 【解決手段】 装置は、該大きな数の素数である一連の
二進数を提供するための手段(12,M,SE1)と、
該数をランダムに2つのグループに分ける手段(Ga,
14)と、各グループの数の積を実行するための手段
(Mu,16,18)と、を具備する。
計算装置を提供する。 【解決手段】 装置は、該大きな数の素数である一連の
二進数を提供するための手段(12,M,SE1)と、
該数をランダムに2つのグループに分ける手段(Ga,
14)と、各グループの数の積を実行するための手段
(Mu,16,18)と、を具備する。
Description
【0001】
【発明の属する技術分野】本発明は、大きな数のモジュ
ーロ(modulo)の整数(integer)の逆数
(inverse)の決定を含む暗号プロトコルの少な
くとも一部分の実行のための計算装置に関する。本発明
はより特別には、この種類の逆数を素早く決定するため
の手段に関する。
ーロ(modulo)の整数(integer)の逆数
(inverse)の決定を含む暗号プロトコルの少な
くとも一部分の実行のための計算装置に関する。本発明
はより特別には、この種類の逆数を素早く決定するため
の手段に関する。
【0002】
【従来の技術】暗号プロトコルには、例えばデジタル署
名アルゴリズム(DSA)及び楕円曲線DSA(ECD
SA)として知られるものは、反復的に大きな数のモジ
ューロのランダムな整数の逆数を計算しなければならな
いものがある。その様なプロトコルのより詳細に関して
は、IEEE発行物P1363/D13及び特別にはそ
れのセクション6.2.7及び7.27を参照された
い。前述の大きな数は本説明の残りにおいてNで表示さ
れる。
名アルゴリズム(DSA)及び楕円曲線DSA(ECD
SA)として知られるものは、反復的に大きな数のモジ
ューロのランダムな整数の逆数を計算しなければならな
いものがある。その様なプロトコルのより詳細に関して
は、IEEE発行物P1363/D13及び特別にはそ
れのセクション6.2.7及び7.27を参照された
い。前述の大きな数は本説明の残りにおいてNで表示さ
れる。
【0003】2つの数の積が、該大きな数のモジューロ
の1に全く等しい場合には、2つの数はお互いの逆数
(inverse)である。例えば、数3及び5は、1
4のモジューロのお互いに逆数である。これは、3x5
=15≡1モジューロ14による。
の1に全く等しい場合には、2つの数はお互いの逆数
(inverse)である。例えば、数3及び5は、1
4のモジューロのお互いに逆数である。これは、3x5
=15≡1モジューロ14による。
【0004】この計算を実行する1つの従来技術法は、
下記等式に基づいている。 y=x-1=xφ(N)-1[modulo]N ここでφ(N)は、Nより小さいNの素数の整数である。
これはオイラーの「ファイ(totient)」関数で
ある。Nが素数であるならば、次の簡略化が有効であ
る。 φ(N)=N−1 従って、結局 y=x-1=xN-2 二進法において、この計算は、n=log2Nとして、
nxnビットの3n/2の乗算、言い換えれば、実際に
は160の乗算のオーダー、を必要とする。
下記等式に基づいている。 y=x-1=xφ(N)-1[modulo]N ここでφ(N)は、Nより小さいNの素数の整数である。
これはオイラーの「ファイ(totient)」関数で
ある。Nが素数であるならば、次の簡略化が有効であ
る。 φ(N)=N−1 従って、結局 y=x-1=xN-2 二進法において、この計算は、n=log2Nとして、
nxnビットの3n/2の乗算、言い換えれば、実際に
は160の乗算のオーダー、を必要とする。
【0005】
【発明が解決しようとする課題】本発明は、例えばラン
ダムな数に基づいた特定の計算により、お互いにNのモ
ジューロの逆数である2つの数が同時に生成されるより
速い計算方法を提示する。
ダムな数に基づいた特定の計算により、お互いにNのモ
ジューロの逆数である2つの数が同時に生成されるより
速い計算方法を提示する。
【0006】
【課題を解決するための手段】より正確には、本発明
は、大きな数(N)のモジューロの整数の逆数の決定を
含む暗号プロトコルの少なくとも一部分の実行に適用さ
れる計算装置を提供しており、該大きな数より小さくそ
れの素数である、一連の二進数(S0,Sk)を提供する
ための方法であって、その一連のものからの数(S0)
は該大きな数(N)のモジューロの別のものの積の逆数
である手段と、該一連の数の全てをランダムに二つのグ
ループに分割するための手段と、各グループの数の積を
実行するための手段であって、その様な積の結果がお互
いの逆数である2つの所定の数を形成する手段と、を具
備することにより特徴づけられる。
は、大きな数(N)のモジューロの整数の逆数の決定を
含む暗号プロトコルの少なくとも一部分の実行に適用さ
れる計算装置を提供しており、該大きな数より小さくそ
れの素数である、一連の二進数(S0,Sk)を提供する
ための方法であって、その一連のものからの数(S0)
は該大きな数(N)のモジューロの別のものの積の逆数
である手段と、該一連の数の全てをランダムに二つのグ
ループに分割するための手段と、各グループの数の積を
実行するための手段であって、その様な積の結果がお互
いの逆数である2つの所定の数を形成する手段と、を具
備することにより特徴づけられる。
【0007】2つの数が共通の約数(divisor)
を有さない場合に、その2つの数はお互いに素数であ
る。
を有さない場合に、その2つの数はお互いに素数であ
る。
【0008】計算装置の好適な実施の形態は、ランダム
な数(e)を形成するための手段と、各計算の始めに1
に初期化される所定の数(x,y)の2つを表わすため
の手段と、該ランダムな二進数のビットを一つずつ選択
し更に該一連のものから対応する数を選択するための手
段と、更に該ビットが0に等しい場合に、所定の二つの
数の一方の現在の値を該対応する数に乗算するための手
段、あるいは該ビットが1に等しい場合に、所定の二つ
の数の他方の現在の値を該対応する数に乗算するための
手段であって、該乗算の結果が所定の2つの数の一方又
は他方の新しい現在値をそれぞれ形成し、上記のオペレ
ーションが全ての前記の選択に関して実行され、2つの
数を表すための該手段に含まれる最終的な現在値が、お
互いの逆数である所定の2つの数を形成する手段と、を
具備する。
な数(e)を形成するための手段と、各計算の始めに1
に初期化される所定の数(x,y)の2つを表わすため
の手段と、該ランダムな二進数のビットを一つずつ選択
し更に該一連のものから対応する数を選択するための手
段と、更に該ビットが0に等しい場合に、所定の二つの
数の一方の現在の値を該対応する数に乗算するための手
段、あるいは該ビットが1に等しい場合に、所定の二つ
の数の他方の現在の値を該対応する数に乗算するための
手段であって、該乗算の結果が所定の2つの数の一方又
は他方の新しい現在値をそれぞれ形成し、上記のオペレ
ーションが全ての前記の選択に関して実行され、2つの
数を表すための該手段に含まれる最終的な現在値が、お
互いの逆数である所定の2つの数を形成する手段と、を
具備する。
【0009】1つの実施の形態において、該一連の二進
数を提供するための手段は、その一連のものを構成する
数を記憶するための手段を具備する。これらの数は、お
互いにNのモジューロの逆数である一対の数が計算され
るその度に、再度実施される必要のない準備的な段階に
おいて事前計算される。
数を提供するための手段は、その一連のものを構成する
数を記憶するための手段を具備する。これらの数は、お
互いにNのモジューロの逆数である一対の数が計算され
るその度に、再度実施される必要のない準備的な段階に
おいて事前計算される。
【0010】該一連のものを提供するための手段の別の
実施の形態は、リアルタイムで該一連のものの少なくと
も幾つかの数を生成するための手段を具備する。
実施の形態は、リアルタイムで該一連のものの少なくと
も幾つかの数を生成するための手段を具備する。
【0011】もしそのセットの数のほとんどが、即時実
行関数(fast execution functi
on)を使用して計算され得る場合には、数がメモリー
から読まれる引用された第1の実施の形態に比較して、
時間が節約される。
行関数(fast execution functi
on)を使用して計算され得る場合には、数がメモリー
から読まれる引用された第1の実施の形態に比較して、
時間が節約される。
【0012】事前計算手段は、該大きな数Nの素数であ
るセット(一式)の数を決定するための手段を具備して
おり、該セットの数は該一連の数を形成しており、更に
事前計算手段は、該大きな数Nのモジューロの該セット
の数の積の逆数を決定するための手段を具備しており、
該逆数は該一連のものから特定の数を形成し、更にそれ
を完成する。
るセット(一式)の数を決定するための手段を具備して
おり、該セットの数は該一連の数を形成しており、更に
事前計算手段は、該大きな数Nのモジューロの該セット
の数の積の逆数を決定するための手段を具備しており、
該逆数は該一連のものから特定の数を形成し、更にそれ
を完成する。
【0013】もし一連の全ての数が記憶されなければな
らないと、事前計算手段は1回使用されて、全ての結果
が記憶される。他方では、もしセットの幾つかの数が即
時計算により求められるならば、事前計算手段は、即時
実行関数の使用に基づいて、その都度再計算可能なセッ
トから数を選択するように使用される。適切な即時実行
関数を「発見」可能にすることは、該一連のものからの
数の選択である。その関数が決定され更に「実行され
る」と、一方において該セットの別の数を計算するため
の出発点を形成する、数を該セットから記憶して、更に
他方において該セット(モジューロN)の数の積の該逆
数を記憶することが、一般的に十分である。基本的に計
算により、該一連の数を求めることが必要である、全て
の要素はその後適用可能である。
らないと、事前計算手段は1回使用されて、全ての結果
が記憶される。他方では、もしセットの幾つかの数が即
時計算により求められるならば、事前計算手段は、即時
実行関数の使用に基づいて、その都度再計算可能なセッ
トから数を選択するように使用される。適切な即時実行
関数を「発見」可能にすることは、該一連のものからの
数の選択である。その関数が決定され更に「実行され
る」と、一方において該セットの別の数を計算するため
の出発点を形成する、数を該セットから記憶して、更に
他方において該セット(モジューロN)の数の積の該逆
数を記憶することが、一般的に十分である。基本的に計
算により、該一連の数を求めることが必要である、全て
の要素はその後適用可能である。
【0014】例えば計算装置は、一方において該セット
の最小の数を、他方において該大きな数Nのモジューロ
の該セットの数の積の逆数を含む記憶手段を具備可能で
あり、更に該生成手段は、即時実行関数を連続的に適用
して、該最小の数から開始して、該セットを構成する数
の列を求めるための手段を具備可能であり、該一連のも
のは該数及び該逆数により形成される。
の最小の数を、他方において該大きな数Nのモジューロ
の該セットの数の積の逆数を含む記憶手段を具備可能で
あり、更に該生成手段は、即時実行関数を連続的に適用
して、該最小の数から開始して、該セットを構成する数
の列を求めるための手段を具備可能であり、該一連のも
のは該数及び該逆数により形成される。
【0015】好適な例において該即時実行関数は、前の
数に1を加算することにより各数を求める。このタイプ
の即時実行関数は、もし数Nが素数である場合には、特
に使用可能である。もしそうでない場合には、全ての連
続的な数が該大きな数Nより小さく且つそれの素数であ
る、数の範囲を発見することがしばしば可能である。
数に1を加算することにより各数を求める。このタイプ
の即時実行関数は、もし数Nが素数である場合には、特
に使用可能である。もしそうでない場合には、全ての連
続的な数が該大きな数Nより小さく且つそれの素数であ
る、数の範囲を発見することがしばしば可能である。
【0016】本発明による計算装置の種々の実施の形態
の以下の説明及び添付図面を参照することにより、本発
明はより以上に理解され、更に本発明の別の利点がより
明確に明白になる。本発明の説明は単に例としてのみの
意味で提示されている。
の以下の説明及び添付図面を参照することにより、本発
明はより以上に理解され、更に本発明の別の利点がより
明確に明白になる。本発明の説明は単に例としてのみの
意味で提示されている。
【0017】
【発明の実施の形態】上記で規定された計算装置の機能
は、以下の証明により正当化される。S0を、全てが該
大きな数Nより小さく数Nの素数である、S1からSkま
でのk個の整数のセットの積のNのモジューロの逆数と
する手順と、前記整数の
は、以下の証明により正当化される。S0を、全てが該
大きな数Nより小さく数Nの素数である、S1からSkま
でのk個の整数のセットの積のNのモジューロの逆数と
する手順と、前記整数の
【数1】 とする手順と。S0もまたNの素数であることが示され
る。
る。
【数2】 であることが容易に確認できる。
【0018】結局、もしk+1個の数Siのこの積集合
(product)が2つのグループの数にランダムに
分けられる場合、及びもし2つのグループからの数のそ
れぞれの積Π1及びΠ2が得られた場合に、積Π1及びΠ2
から形成された2つの数xとyはお互いにNのモジュー
ロの逆数である。
(product)が2つのグループの数にランダムに
分けられる場合、及びもし2つのグループからの数のそ
れぞれの積Π1及びΠ2が得られた場合に、積Π1及びΠ2
から形成された2つの数xとyはお互いにNのモジュー
ロの逆数である。
【0019】言い換えれば本発明の基本的な原則は、数
k及び大きな数Nを選択する手順に導いており、例え
ば、そしてその後、事前計算段階において、一方で、全
てNより小さくNの素数であるk個の数S1・・・Skの
セットを決定する手順、及び他方で、Nのモジューロの
数S1・・・Skの積の逆数を形成する追加的な数S0を
決定する手順に導く。この事前計算を実行すると、一連
のk+1の二進数が適用可能である。お互いにNのモジ
ューロの逆数である2つの数x,yを決定する暗号計算
の実行において、これらの数は、例えば必要な時にはい
つでも使用できるように、記憶可能である。
k及び大きな数Nを選択する手順に導いており、例え
ば、そしてその後、事前計算段階において、一方で、全
てNより小さくNの素数であるk個の数S1・・・Skの
セットを決定する手順、及び他方で、Nのモジューロの
数S1・・・Skの積の逆数を形成する追加的な数S0を
決定する手順に導く。この事前計算を実行すると、一連
のk+1の二進数が適用可能である。お互いにNのモジ
ューロの逆数である2つの数x,yを決定する暗号計算
の実行において、これらの数は、例えば必要な時にはい
つでも使用できるように、記憶可能である。
【0020】適切な計算方法は、図1のフローチャート
に従い進行可能である。手順E1は初期化段階であり、
2つの値xとyが1に初期化される(それは乗算の中立
的な要素である)。
に従い進行可能である。手順E1は初期化段階であり、
2つの値xとyが1に初期化される(それは乗算の中立
的な要素である)。
【0021】また、k+1ビットの二進数eは、ランダ
ムに選択されて、各々が0又は1の値を有するk+1ビ
ット(e1・・・ek)から形成される。手順E2は計数
iを0に初期化する。手順E3は、係数iがkより大き
いかどうかを確認するテストである。正のテスト結果は
計算の終了を示す。負のテスト結果は手順E5へ導く。
手順E4は数Siを「求める」。もしSiが記憶される
と、このオペレーションは単にメモリーの数の1つを読
み出すことからなる。しかし上記で指摘したように、数
Siのほとんどをリアルタイムで計算することが可能で
ある(特定の事前計算の対象であるS0を除いて)。結
局、手順E3では、メモリーの数値を読むことが出来る
か又は「即時実行」関数を使用してそれを再計算出来る
かの何れかである。手順E5は、ランダムに選択された
数eのi番ビットの値を決定する。もしビットが1に等
しい場合には、次の手順は手順E6になる。もしビット
が0に等しい場合には、次の手順はE7になる。手順E
6は、前の値yに数Siを乗算しており、その結果新し
い値yを得る。次の手順は手順E8である。手順E7
は、前の値xに数Siを乗算しており、その結果新しい
値xを得る。次の手順は手順E8である。手順E8は、
1ユニットによりiを増加させ、手順E3に戻り係数i
がkより大きいかどうかを確認する。
ムに選択されて、各々が0又は1の値を有するk+1ビ
ット(e1・・・ek)から形成される。手順E2は計数
iを0に初期化する。手順E3は、係数iがkより大き
いかどうかを確認するテストである。正のテスト結果は
計算の終了を示す。負のテスト結果は手順E5へ導く。
手順E4は数Siを「求める」。もしSiが記憶される
と、このオペレーションは単にメモリーの数の1つを読
み出すことからなる。しかし上記で指摘したように、数
Siのほとんどをリアルタイムで計算することが可能で
ある(特定の事前計算の対象であるS0を除いて)。結
局、手順E3では、メモリーの数値を読むことが出来る
か又は「即時実行」関数を使用してそれを再計算出来る
かの何れかである。手順E5は、ランダムに選択された
数eのi番ビットの値を決定する。もしビットが1に等
しい場合には、次の手順は手順E6になる。もしビット
が0に等しい場合には、次の手順はE7になる。手順E
6は、前の値yに数Siを乗算しており、その結果新し
い値yを得る。次の手順は手順E8である。手順E7
は、前の値xに数Siを乗算しており、その結果新しい
値xを得る。次の手順は手順E8である。手順E8は、
1ユニットによりiを増加させ、手順E3に戻り係数i
がkより大きいかどうかを確認する。
【0022】もしテストE4の結果が正であれば、2つ
の値xとyは、お互いにNのモジューロの逆数である所
定の2つの数を表す。
の値xとyは、お互いにNのモジューロの逆数である所
定の2つの数を表す。
【0023】図2は、図1のフローチャートにより説明
されるアルゴリズムを実行するための手段を示すブロッ
ク線図である。ブロック12は、事前計算手段を示し、
ブロック13は固有計算手段(calculation
means proper)を示す。
されるアルゴリズムを実行するための手段を示すブロッ
ク線図である。ブロック12は、事前計算手段を示し、
ブロック13は固有計算手段(calculation
means proper)を示す。
【0024】事前計算手段は、該大きな数Nの素数であ
る数のためのジェネレータGpを具備する。これらの数
は、wビットの文字(ワード)の形を有する。ジェネレ
ータGpは、Nの素数の列(succession)を
生成するので、これらの数S 1・・・Si・・・Skは、
計算手段13の一部分であるメモリーMに記憶される。
る数のためのジェネレータGpを具備する。これらの数
は、wビットの文字(ワード)の形を有する。ジェネレ
ータGpは、Nの素数の列(succession)を
生成するので、これらの数S 1・・・Si・・・Skは、
計算手段13の一部分であるメモリーMに記憶される。
【0025】これと平行して、数S1−Skは、数S0を
計算する回路Invに送られる。数S0は、数S1からS
kまでの積の逆数である。この計算が完了すると、値S0
はメモリーMに記憶される。数S0−Skの値がメモリー
Mに記憶されるので、この地点において事前計算手段
は、計算手段13から切り離し可能である。計算装置
は、k+1ビットのランダム数を生成するためのランダ
ム数ジェネレータGaを具備しており、ランダム数ジェ
ネレータGaは、k+1ビットのランダム数eを入れる
ためのレジスタ14に接続する。計算工程の始めにおい
てジェネレータGaは、ランダム数をレジスタ14内に
記入する。
計算する回路Invに送られる。数S0は、数S1からS
kまでの積の逆数である。この計算が完了すると、値S0
はメモリーMに記憶される。数S0−Skの値がメモリー
Mに記憶されるので、この地点において事前計算手段
は、計算手段13から切り離し可能である。計算装置
は、k+1ビットのランダム数を生成するためのランダ
ム数ジェネレータGaを具備しており、ランダム数ジェ
ネレータGaは、k+1ビットのランダム数eを入れる
ためのレジスタ14に接続する。計算工程の始めにおい
てジェネレータGaは、ランダム数をレジスタ14内に
記入する。
【0026】メモリーMは、その出力が乗算器Muの入
力の1つに接続する、セレクタSE1に接続する。セレ
クタSE2は、乗算器Muの別の入力に接続するその出
力を有する。乗算器の出力は、2つのレジスタ16,1
8のそれぞれの入力に接続する2つの出力を有するルー
タAIの入力に接続しており、該2つのレジスタ16,
18には、一連のS0−Skからの数の積の結果生成され
る2つの変数xとyが記入される。レジスタxとyの二
つの出力は、セレクタSE2の2つの入力にループして
いる。レジスタ14をビットごとに読みとることによ
り、セレクタSE2とルータAIの両者の設定を制御す
る。
力の1つに接続する、セレクタSE1に接続する。セレ
クタSE2は、乗算器Muの別の入力に接続するその出
力を有する。乗算器の出力は、2つのレジスタ16,1
8のそれぞれの入力に接続する2つの出力を有するルー
タAIの入力に接続しており、該2つのレジスタ16,
18には、一連のS0−Skからの数の積の結果生成され
る2つの変数xとyが記入される。レジスタxとyの二
つの出力は、セレクタSE2の2つの入力にループして
いる。レジスタ14をビットごとに読みとることによ
り、セレクタSE2とルータAIの両者の設定を制御す
る。
【0027】より正確には、レジスタ14のビット、e
0・・・ei・・・ekは、それぞれの反復法(iter
ation)で精査されて、もし関連するビットeiが
1に等しい場合には、セレクタSE2はレジスタ16の
出力を乗算器Muの入力に接続し、ルータAIは乗算器
Muの出力をレジスタ16の入力に接続する。同様にも
しeiが0に等しい場合には、セレクタSE2はレジス
タ18の出力を乗算器Muの入力に接続し、ルータAI
は乗算器Muの出力をレジスタ18の入力に接続する。
0・・・ei・・・ekは、それぞれの反復法(iter
ation)で精査されて、もし関連するビットeiが
1に等しい場合には、セレクタSE2はレジスタ16の
出力を乗算器Muの入力に接続し、ルータAIは乗算器
Muの出力をレジスタ16の入力に接続する。同様にも
しeiが0に等しい場合には、セレクタSE2はレジス
タ18の出力を乗算器Muの入力に接続し、ルータAI
は乗算器Muの出力をレジスタ18の入力に接続する。
【0028】これと平行して、各反復法において、セレ
クタSE1は、数S0−Skを乗算器Muの別の入力に連
続して一つずつ送る。
クタSE1は、数S0−Skを乗算器Muの別の入力に連
続して一つずつ送る。
【0029】結局各反復法において、レジスタ16又は
18の内容は(eiの値に依存して)、数Siにより乗算
されて、その結果は同じレジスタに記入されて、前の値
に上書きされる。全ての数S0−Skが処理されると、レ
ジスタ16と18は、お互いにNのモジューロの逆数で
ある2つの数を含む。
18の内容は(eiの値に依存して)、数Siにより乗算
されて、その結果は同じレジスタに記入されて、前の値
に上書きされる。全ての数S0−Skが処理されると、レ
ジスタ16と18は、お互いにNのモジューロの逆数で
ある2つの数を含む。
【0030】図3は、数Siを求める方法において基本
的に図2の実施の形態とは異なる実施の形態を示す。全
体的に、事前計算手段12は、図1の実施の形態のもの
と同一であり、即ちそれらは該大きな数Nの素数である
数を生成するためのジェネレータ、及び数S1−Skから
数S0を生成するための回路Invを基本的に具備す
る。
的に図2の実施の形態とは異なる実施の形態を示す。全
体的に、事前計算手段12は、図1の実施の形態のもの
と同一であり、即ちそれらは該大きな数Nの素数である
数を生成するためのジェネレータ、及び数S1−Skから
数S0を生成するための回路Invを基本的に具備す
る。
【0031】しかしこの例において、数Nは選ばれた素
数である。結局連続した数Siの任意の列は、Nの素数
である一連の数である。従って、前に求めた数Siに1
を加算することにより数の1つを簡単に求める、即時実
行関数を形成することが可能である。 Si+1=Si+1
数である。結局連続した数Siの任意の列は、Nの素数
である一連の数である。従って、前に求めた数Siに1
を加算することにより数の1つを簡単に求める、即時実
行関数を形成することが可能である。 Si+1=Si+1
【0032】この場合において該セットの最小数S1は
任意の選択された数である。従って、事前計算手段12
により決定された数Siのセットが、計算手段13によ
る使用のために送られて記憶される必要はない。該セッ
トの最小数S1と回路Invにより計算された数S0を記
憶することで単に十分である。
任意の選択された数である。従って、事前計算手段12
により決定された数Siのセットが、計算手段13によ
る使用のために送られて記憶される必要はない。該セッ
トの最小数S1と回路Invにより計算された数S0を記
憶することで単に十分である。
【0033】これらの2つの数が計算手段13の2つの
レジスタ20,21に記憶されたとすると、即時実行関
数を適用するための手段22を計算手段に加えることは
十分であり、ここで前記関数は、Si+1=Si+1 であ
る。
レジスタ20,21に記憶されたとすると、即時実行関
数を適用するための手段22を計算手段に加えることは
十分であり、ここで前記関数は、Si+1=Si+1 であ
る。
【0034】これらの条件の下でセレクタSE1は、手
段22の出力及び2つのレジスタ20と21の出力に接
続される。言い換えれば、一連の数S0・・・Skにおい
て数S0とS1だけがレジスタに記憶され、他の全て、S
2からSkは、手段22によりリアルタイムで計算され
る。数Siのより大きな部分を上記で示された種類の即
時計算により求めることは、メモリー内の各数を読み込
むことが必要とされた前の実施の形態に比較して時間が
節約されることが分かる。
段22の出力及び2つのレジスタ20と21の出力に接
続される。言い換えれば、一連の数S0・・・Skにおい
て数S0とS1だけがレジスタに記憶され、他の全て、S
2からSkは、手段22によりリアルタイムで計算され
る。数Siのより大きな部分を上記で示された種類の即
時計算により求めることは、メモリー内の各数を読み込
むことが必要とされた前の実施の形態に比較して時間が
節約されることが分かる。
【0035】セレクタSE1に接続する手段から離れ
て、計算手段13の残りは、図2の実施の形態と同一で
あり、この理由から再度詳細には説明されない。その機
能もまた、セレクタSE1が計算の各反復において連続
する数Siを乗算器Muの対応する入力に「事前設定す
ること」が可能である前提で、同一である。
て、計算手段13の残りは、図2の実施の形態と同一で
あり、この理由から再度詳細には説明されない。その機
能もまた、セレクタSE1が計算の各反復において連続
する数Siを乗算器Muの対応する入力に「事前設定す
ること」が可能である前提で、同一である。
【0036】図3の実施の形態はまた、数Nが素数では
ない場合でさえも満足するものであり得ることが理解さ
れるべきである。この場合において、数Nの全て素数で
あるk個の連続的整数の列(succession)を
決定することが一般的に可能である。
ない場合でさえも満足するものであり得ることが理解さ
れるべきである。この場合において、数Nの全て素数で
あるk個の連続的整数の列(succession)を
決定することが一般的に可能である。
【0037】この条件は、もしNの最小素数因子(ta
ctor)(pで表示された)が、S1+(k−1)よ
り大きい場合には、特に適合する。
ctor)(pで表示された)が、S1+(k−1)よ
り大きい場合には、特に適合する。
【0038】この場合、pは素数であるので、数列
S1,S1+1,・・・S1+k−1は、pの素数、従っ
てNの素数、であるk個の連続する整数から形成され
る。この場合に、既に記述したように、即時実行関数を
適用するための手段20が使用可能であり、即ちその関
数は以下である。 Si+1=Si+1
S1,S1+1,・・・S1+k−1は、pの素数、従っ
てNの素数、であるk個の連続する整数から形成され
る。この場合に、既に記述したように、即時実行関数を
適用するための手段20が使用可能であり、即ちその関
数は以下である。 Si+1=Si+1
【0039】もし上記条件が満たされない場合には、言
い換えればもしp≦S1+(k−1)であれば、pが素
数であり、その都度1がSiに加算されるので、S1はp
の素数であるように選択される。テストが、求められた
数がpの素数であるかを決定するために実施されて、p
の素数である数だけが保有される。この場合に一連の連
続的な数の代わりに、全てがNの素数である連続的な数
の多くのグループが求められる。即時実行関数の定義
を、S2からSkまでの数のセットをリアルタイムで、必
要な時はいつでも再計算可能であるように従って修正す
ることが適当である。
い換えればもしp≦S1+(k−1)であれば、pが素
数であり、その都度1がSiに加算されるので、S1はp
の素数であるように選択される。テストが、求められた
数がpの素数であるかを決定するために実施されて、p
の素数である数だけが保有される。この場合に一連の連
続的な数の代わりに、全てがNの素数である連続的な数
の多くのグループが求められる。即時実行関数の定義
を、S2からSkまでの数のセットをリアルタイムで、必
要な時はいつでも再計算可能であるように従って修正す
ることが適当である。
【0040】より一般的には、ジェネレータGpにより
作られた(delivered)Nの素数の適切な選択
から即時実行関数を形成可能であるときは常に、図3を
参照して説明された種類の実施の形態が使用可能であ
る。
作られた(delivered)Nの素数の適切な選択
から即時実行関数を形成可能であるときは常に、図3を
参照して説明された種類の実施の形態が使用可能であ
る。
【0041】該大きな数Nより小さく全てそれの素数で
ある、より小さな数から該一連の数を選択することが好
都合であることが更に理解されるべきである。関連する
大きさ(magnitude)のオーダーのアイディア
を与えるために、該大きな数Nは、163ビットの二進
数であることが可能であり、数wは32ビットの二進数
であることが可能であり、更にkは160に等しいこと
が可能である。
ある、より小さな数から該一連の数を選択することが好
都合であることが更に理解されるべきである。関連する
大きさ(magnitude)のオーダーのアイディア
を与えるために、該大きな数Nは、163ビットの二進
数であることが可能であり、数wは32ビットの二進数
であることが可能であり、更にkは160に等しいこと
が可能である。
【図1】図1は、大きな数Nのお互いのモジューロの逆
数である、2つの数を求めるための種々の計算手順を示
すフローチャートである。
数である、2つの数を求めるための種々の計算手順を示
すフローチャートである。
【図2】図2は、本発明に従う計算装置の第1の実施の
形態のブロック線図である。
形態のブロック線図である。
【図3】図3は、本発明に従う計算装置の別の実施の形
態のブロック線図である。
態のブロック線図である。
12…事前計算手段 13…固有計算手段 14…レジスタ 16…レジスタ 18…レジスタ Gp…ジェネレータ Inv…回路 Ga…ランダム数ジェネレータ M…メモリー SE1…セレクタ SE2…セレクタ Mu…乗算器 AI…ルータ
Claims (13)
- 【請求項1】 大きな数(N)のモジューロの整数の逆
数の決定を含む暗号プロトコルの少なくとも一部分の実
行に適用される計算装置において、この計算装置が、 該大きな数より小さくそれの素数である、一連の二進数
(S0,Sk)を提供するための手段(12,M、SE
1)であって、その一連のものからの数(S0)は該大
きな数(N)のモジューロの別のものの積の逆数である
手段と、 該一連の数の全てをランダムに二つのグループに分割す
るための手段(Ga,14)と、 各グループの数の積を実行するための手段(Mu,1
6,18)であって、その様な積の結果がお互いの逆数
である2つの所定の数を形成する手段と、 を具備することを特徴とする計算装置。 - 【請求項2】 ランダムな数(e)を生成するための手
段(Ga,14)と、 各計算の始めに1に初期化される所定の数(x,y)の
2つを表わすための手段(16,18)と、 該ランダムな二進数のビットを一つずつ選択し更に該一
連のものから対応する数を選択するための手段(SE
1,SE2)と、更に該ビットが0に等しい場合に、所
定の二つの数の一方の現在の値を該対応する数に乗算す
るための手段(Mu)、あるいは該ビットが1に等しい
場合に、所定の二つの数の他方の現在の値を該対応する
数に乗算するための手段(Mu)であって、該乗算の結
果が所定の2つの数の一方又は他方の新しい現在値をそ
れぞれ形成し、上記のオペレーションが全ての前記の選
択に関して実行され、2つの数を表す該手段に含まれる
最終的な現在値が、お互いの逆数である所定の2つの数
を形成する手段(Mu)と、を具備することを特徴とす
る請求項1に記載の計算装置。 - 【請求項3】 計算装置が、該一連の数を事前計算する
ための事前計算手段(12)を、それらを記憶するため
に、具備するか又は関連することを特徴とする請求項1
又は2に記載の計算装置。 - 【請求項4】 該事前計算手段は、該大きな数(N)の
素数であるセットの数を決定するための手段(Gp)を
具備しており、該セットは該一連の数を形成しており、
更に事前計算手段は、該大きな数(N)のモジューロの
該セットの数の積の逆数を決定するための手段を具備し
ており、該逆数は該一連のものから数を形成することを
特徴とする請求項3に記載の計算装置。 - 【請求項5】 該一連のものを形成するための該手段
は、それの数を記憶するための手段(M)を具備するこ
とを特徴とする請求項1から4のいずれか一項に記載の
計算装置。 - 【請求項6】 該一連のものを形成するための該手段
は、該一連の数の幾つかのものをリアルタイムで生成す
るための手段を具備することを特徴とする請求項1から
4のいずれか一項に記載の計算装置。 - 【請求項7】 計算装置は、一方において該セットの最
小の数を、他方において該大きな数(N)のモジューロ
の該セットの数の積の逆数を含む記憶手段(20,2
1)を具備しており、更に該生成手段は、即時実行関数
を連続的に適用して、該最小の数から開始して、該セッ
トを構成する数の列を求めるための手段(22)を具備
しており、 該一連のものは該数及び該逆数により形成される、 ことを特徴とする請求項6に記載の計算装置。 - 【請求項8】 該即時実行関数は、前の数に1を加算す
ることにより各数を求めることを特徴とする請求項7に
記載の計算装置。 - 【請求項9】 該大きな数(N)が、選択された素数で
あり、該記憶手段に含まれる該セットの該最小の数が任
意の選択された数であることを特徴とする請求項8に記
載の計算装置。 - 【請求項10】 該大きな数(N)が任意の選択された
数であり、該セットの該最小の数が、全てが該大きな数
の素数である連続的な整数の範囲内で選択された連続的
な数の前記のセットの最小の数であることを特徴とする
請求項8に記載の計算装置。 - 【請求項11】 該一連の数は、該大きな数(N)の素
数である最小の数から選択されることを特徴とする請求
項1から10のいずれか一項に記載の計算装置。 - 【請求項12】 暗号装置が、DSA暗号プロトコルを
実施するためで且つ請求項1から11にいずれか一項に
記載の計算装置を具備するのための手段を具備すること
を特徴とする暗号装置。 - 【請求項13】 暗号装置が、ECDSA暗号プロトコ
ルを実施するためで且つ請求項1から11にいずれか一
項に記載の計算装置を具備するのための手段を具備する
ことを特徴とする暗号装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0013373A FR2815734B1 (fr) | 2000-10-19 | 2000-10-19 | Unite de calcul pour l'execution d'un protocole cryptographique |
| FR0013373 | 2000-10-19 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2002196671A true JP2002196671A (ja) | 2002-07-12 |
Family
ID=8855495
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2001318835A Withdrawn JP2002196671A (ja) | 2000-10-19 | 2001-10-17 | 暗号プロトコル実行用計算装置 |
Country Status (9)
| Country | Link |
|---|---|
| US (1) | US7457408B2 (ja) |
| EP (1) | EP1199628B1 (ja) |
| JP (1) | JP2002196671A (ja) |
| AT (1) | ATE325381T1 (ja) |
| CA (1) | CA2359198C (ja) |
| DE (1) | DE60119254T2 (ja) |
| ES (1) | ES2260181T3 (ja) |
| FR (1) | FR2815734B1 (ja) |
| HK (1) | HK1047170B (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2007113697A2 (en) * | 2006-04-06 | 2007-10-11 | Nxp B.V. | Secure decryption method |
| FR2946207A1 (fr) * | 2009-05-28 | 2010-12-03 | Proton World Internat Nv | Protection d'une generation de nombres premiers pour algorithme rsa |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5414772A (en) * | 1993-06-23 | 1995-05-09 | Gemplus Development | System for improving the digital signature algorithm |
| EP0947914B1 (en) * | 1998-03-30 | 2004-12-15 | Rainbow Technologies Inc. | Computationally efficient modular multiplication method and apparatus |
| US7031468B2 (en) * | 2000-08-29 | 2006-04-18 | Ntru Cryptosystems, Inc. | Speed enhanced cryptographic method and apparatus |
| DE10220262A1 (de) * | 2002-05-06 | 2003-11-27 | Giesecke & Devrient Gmbh | Berechnung des modularen Inversen eines Wertes |
| JP4351987B2 (ja) * | 2004-11-19 | 2009-10-28 | 株式会社東芝 | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム |
-
2000
- 2000-10-19 FR FR0013373A patent/FR2815734B1/fr not_active Expired - Lifetime
-
2001
- 2001-10-09 AT AT01402606T patent/ATE325381T1/de not_active IP Right Cessation
- 2001-10-09 ES ES01402606T patent/ES2260181T3/es not_active Expired - Lifetime
- 2001-10-09 EP EP01402606A patent/EP1199628B1/fr not_active Expired - Lifetime
- 2001-10-09 DE DE60119254T patent/DE60119254T2/de not_active Expired - Lifetime
- 2001-10-16 CA CA002359198A patent/CA2359198C/fr not_active Expired - Lifetime
- 2001-10-17 JP JP2001318835A patent/JP2002196671A/ja not_active Withdrawn
- 2001-10-18 US US09/978,686 patent/US7457408B2/en not_active Expired - Fee Related
-
2002
- 2002-10-23 HK HK02107694.2A patent/HK1047170B/zh not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| ATE325381T1 (de) | 2006-06-15 |
| US20020061104A1 (en) | 2002-05-23 |
| EP1199628B1 (fr) | 2006-05-03 |
| DE60119254D1 (de) | 2006-06-08 |
| US7457408B2 (en) | 2008-11-25 |
| EP1199628A1 (fr) | 2002-04-24 |
| FR2815734B1 (fr) | 2006-07-28 |
| DE60119254T2 (de) | 2007-02-15 |
| CA2359198A1 (fr) | 2002-04-19 |
| ES2260181T3 (es) | 2006-11-01 |
| HK1047170B (zh) | 2006-08-04 |
| FR2815734A1 (fr) | 2002-04-26 |
| HK1047170A1 (en) | 2003-02-07 |
| CA2359198C (fr) | 2007-12-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5116770B2 (ja) | フォールディングを用いるモジュール削減 | |
| EP0933695A2 (en) | IC card equipped with elliptic curve encryption processing facility | |
| US7372960B2 (en) | Method and apparatus for performing finite field calculations | |
| TWI386818B (zh) | 密碼安全模多項式簡化方法及執行該方法之計算硬體 | |
| US6611597B1 (en) | Method and device for constructing elliptic curves | |
| JP4137385B2 (ja) | 公開鍵および秘密鍵による暗号化方法 | |
| EP3115887B1 (en) | Method, device and non-transitory computer-readable medium for cryptographic computation | |
| EP3276880A1 (en) | Efficient ecdsa signature and verification | |
| CN113141255B (zh) | 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法 | |
| JP5073669B2 (ja) | 同時スカラー乗算方法 | |
| US12212670B2 (en) | Circuit, apparatus and method for calculating multiplicative inverse | |
| US20100061547A1 (en) | Method of and apparatus for the reduction of a polynomial in a binary finite field, in particular in the context of a cryptographic application | |
| JP2002196671A (ja) | 暗号プロトコル実行用計算装置 | |
| KR20190022023A (ko) | 하드웨어 구현된 모듈러 역원 모듈 | |
| Knežević et al. | Speeding up bipartite modular multiplication | |
| JP2000321979A (ja) | 多項式演算装置、楕円曲線位数計算装置、楕円曲線生成装置及び楕円曲線暗号システム | |
| JP3779479B2 (ja) | Icカード | |
| JP2002304122A (ja) | 曲線上の有理点群の部分群上元判定装置、そのプログラム及びその記録媒体 | |
| CN117254909B (zh) | 一种快速生成高概率原根的计算方法、系统及存储介质 | |
| CN113992329B (zh) | 一种区块链下基于sm2的交易签名方法、装置、设备及介质 | |
| JP2007503036A (ja) | モジュラ乗算を行うための方法、および2nビットの数を使用してユークリッド乗算を行うための方法 | |
| JP3136709B2 (ja) | べき積演算装置 | |
| JP2003043915A (ja) | 演算装置及び演算方法及び演算プログラム | |
| JP3274395B2 (ja) | 除算装置、除算方法、除算プログラムを記録した記録媒体、及び電子署名生成方法 | |
| JP2004233530A (ja) | 楕円積和演算計算方法、楕円積和演算計算装置、プログラム及び記録媒体 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20050104 |