JP2722413B2 - モンゴメリ法によるモジュラ乗算の実施方法 - Google Patents

モンゴメリ法によるモジュラ乗算の実施方法

Info

Publication number
JP2722413B2
JP2722413B2 JP7314754A JP31475495A JP2722413B2 JP 2722413 B2 JP2722413 B2 JP 2722413B2 JP 7314754 A JP7314754 A JP 7314754A JP 31475495 A JP31475495 A JP 31475495A JP 2722413 B2 JP2722413 B2 JP 2722413B2
Authority
JP
Japan
Prior art keywords
register
bit
words
input
bits
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.)
Expired - Fee Related
Application number
JP7314754A
Other languages
English (en)
Other versions
JPH08263316A (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.)
ESU JEE ESU TOMUSON MIKUROEREKUTORONIKUSU SA
Original Assignee
ESU JEE ESU TOMUSON MIKUROEREKUTORONIKUSU SA
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 ESU JEE ESU TOMUSON MIKUROEREKUTORONIKUSU SA filed Critical ESU JEE ESU TOMUSON MIKUROEREKUTORONIKUSU SA
Publication of JPH08263316A publication Critical patent/JPH08263316A/ja
Application granted granted Critical
Publication of JP2722413B2 publication Critical patent/JP2722413B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/728Methods 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 using Montgomery reduction

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はモンゴメリ法に従っ
てモジュラリダクションを行うための方法に関するもの
である。この方法は、GF(2n )で表される有限領域
(ガロア体)において除法を行わずにモジュラ計算を行
うことを可能にするものである。
【0002】
【従来の技術】従来、GF(2n )でのモジュラ操作
は、メッセージの認証、ユーザの確認およびキーの交換
といった用途における暗号法に使用される。そのような
用途の例は、例えばフランス国特許出願(公開番号2 67
9 054 号)に記載されている。そのような用途のために
開発された集積回路が市販されている。例としてSGS-TH
OMSON MICROELECTRONICS S.A. 製のST16CF54という
製品を挙げることができる。この製品は中央演算処理ユ
ニットと演算コプロセッサとを備え、モジュラ計算の実
行を目的としている。使用するコプロセッサは、モンゴ
メリ法を用いることによってモジュラ乗算の処理を可能
にするものである。これは欧州特許出願(公開番号第0
601 907 A2号)の対象となっており、図1(この図は上
記欧州特許出願の図2に相当する)に具体的に示されて
いる。
【0003】Pfield 操作と呼ばれる基本的な操作は、
自然数n個のビットにエンコードされた3つの2進デー
タ要素A(被乗数)、B(乗数、これはNよりも小さ
い)およびN(モジュロ)を基に、nビットにエンコー
ドされたP(A, B)N で表される2進データ要素を、
P(A,B)N =A*B*Imod N(I=2-n mod
N)となるように算出するというものである。そのため
に、データ要素はkビットずつのm個のワードにエンコ
ードされており(ここで、m*k=n)、AとBのワー
ドが、直列入力と並列入力と直列出力とを有する乗算回
路に入力されるものと仮定する。
【0004】上記の欧州特許出願に記載のコプロセッサ
では、k=32でm=8または16となっている。この観点
から、図1に示した回路は以下のステップを含む方法を
実行するために使用される: 1.パラメータH(H=22*n mod N)とkビットにエ
ンコードされたパラメータJ0 (J0 =−N0 -1 mod
k で、N0 はモジュロNの最下位ワードである)を計
算し、kビットのレジスタ17にJ0 を記憶する。 2.乗数BとモジュロNを、それぞれnビットのレジス
タ10および12にロードし(n=m*k)、nビットのレ
ジスタ11をゼロに初期化する(このレジスタの内容はS
で表され、Sはnビットにエンコードされた可変の2進
データ要素とする)。 3.iと表示されるループを設定する(iは1〜mで変
化し、i番目の反復は各々以下a)〜b)のステップを
含む:
【0005】a)被乗数Aのi番目のワードAi-1 をレ
ジスタ16から記憶フリップフロップ回路21に転送する、 b)S(0)=0、S(i−1)を下記に定義のような
いわゆるSの更新された値として、下記I〜Vによって
X(i)=S(i−1)+B*Ai-1 の値を算出する: I−レジスタ10の内容を第1の直列−並列乗算回路19の
入力に向かって右にシフトさせ、同時にレジスタ10の出
力をその入力に帰還させる、 II−BのビットにAi-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時に出力
を入力に帰還させる、 IV−更新された値S(i−1)がNよりも小さい場合に
はこの更新された値を(i−1)番目の反復後にレジス
タ11に記憶される値として決定し、もし更新された値が
Nよりも大きいならば、第1のシリアル減算回路28にお
いてこの更新された値からNをシリアルに減算し、それ
より得られる値を更新された値S(i−1)とし、更に V−レジスタ11の内容を右にシフトさせて、第1の直列
加算回路30で更新された値S(i−1)に乗算B*A
i-1 の値を1ビットずつ加える加算を行う
【0006】c)第2の直並列乗算回路20でX(i)の
最下位ワード、X0 (i)にJ0 を乗じ、X0 (i)*
0 mod 2k =Y0 (i)の値をレジスタ18に入力し、
同時に、遅延回路32および34でNおよびX(i)をkサ
イクル分だけ遅延させる、 d)下記I〜IIによってZ(i)=X(i)+Y
0 (i)*Nの値を計算する: I−第2の乗算回路20で、Y0 (i)に、kサイクル分
遅延されたNを乗じ、更に II−第2の直列加算回路31で、X(i)をY0 (i)*
Nの値に加える、 e)Z(i)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(i)/2k をレジスタ11に記憶する、 f)Z(i)/2k をNとを1ビットずつ比較して、上
記の方法で次の反復の更新された値S(i)を決定する
(この比較は、第2の直列減算回路29でZ(i)/2k
とNとを1ビットずつ減算することによって行われ、N
は更にkサイクル分だけ遅延されている)、
【0007】g)上記操作中の任意の時点で被乗数Aの
i番目のワードがレジスタ16にロードされる。 4.m回目の反復で、Z(m)の最下位ワードを無視
し、残りのワード、つまりZ(m)/2k をレジスタ10
に入力する。 5.Bの代わりにZ(m)/2k を用い、Aの代わりに
Hを用いてステップ3と4を繰り返し、Z(m)/2k
または(Z(m)/2k )−Nが第3の直列減算回路27
を介して乗算回路19に入力される(Z(m)/2k ≧N
ならば)。 6.最後の反復でレジスタ10に記憶された結果を、必要
に応じてNから減算された状態で出力する。
【0008】総じて、図1の回路の動作を同期させるク
ロック信号の周期をサイクルと呼ぶならば、モジュラ乗
算を処理するのに必要な時間は主に以下のように分ける
ことができる: −Hを計算するためのn*(n+1)サイクル、 −ステップ2のためのnサイクル、 −1つにはステップ3および4を合わせたステップ、も
う1つにはステップ5のためのm*(n+2*k+x)
サイクル(xは整数)、 −ステップ6のためのnサイクル。 実際、xは回路の初期化の関数であって、つまり、回路
の一貫した動作を確実とするための(例えはマルチプレ
クサの)制御信号の設定の関数である。実際、x=7で
あると考えることができる。
【0009】第1のステップに関して、パラメータJ0
の計算は中央処理ユニットによって行なわれる(ソフト
ウェア法)。Hはレジスタ16のサイズとこのレジスタが
ループで使用される回数の関数であることが示される。
H=22*n mod Nであり、このパラメータはエラー訂正
パラメータである。つまり、ステップ4はA*B*I
(I=2-n mod N)という形の結果を算出する。H*
2 =1 mod Nである。このことにより、上記のモジ
ュラ乗算法のステップ7において、正確な結果、つまり
モジュラ乗算A*B modNの結果に等しい結果が得られ
るようになる。更にHの計算は、図2を参照しながら以
下に説明する方法においてはコプロセッサによって行わ
れる。図2は上記の欧州特許出願の図9に相当する。
【0010】Hを計算するには、以下のような操作が行
われる(上記欧州特許第20頁47行〜25頁52行を参照): 1.レジスタ12にNをロードしてレジスタ10をB(0)
=0に初期化し、 2.同時に: −B(0)とNを右にシフトさせて直列減算器27で1ビ
ットずつ減算し、その結果R(0)=B(0)−N mod
n を1ユニット左にシフトさせ(このシフトは減算
器で0である第1のビットを取り出すことによって行
う)、 −B(1)=2*R(0)をレジスタ10にロードし、 −2*R(0)とNを1ビットずつ減算して2*R
(0)≧Nまたは2*R(0)<Nのいずれであるかを
決定し(この減算は第2の減算器40で行われ、同時に回
路44では減算の結果がテストされる)、 3.インデックスiのループを設定する(ここでiは1
〜nであり、1回の反復はそれぞれ以下の操作を含
む): −B(i)<Nならば、B(i+1)=2*(B(i)
−0)をレジスタ10にロードし、 −そうでない場合にはB(i+1)=2*(B(i)−
N)をレジスタ10にロードする。B(n+1)=H=2
2*n mod Nである。
【0011】
【発明が解決しようとする課題】本発明者は図1に示す
コプロセッサによるモジュラ乗算において、1つにはモ
ジュラ乗算が行なわれるのにかかる時間を短縮するた
め、もう1つには回路の計算能力を拡張するために、そ
の実施方法の改良を試みた。
【0012】
【課題を解決するための手段】従って本発明は、モンゴ
メリ法に従ってモジュラ乗算を実行するための方法を提
案するものであり、該方法では、被乗数Aと乗数Bがそ
れぞれkビットよりなるa個とb個のワードにエンコー
ドされており、AおよびBの最上位ワードがゼロでな
く、モジュロNがkビットずつのm個のワードにエンコ
ードされており、このモジュロの最も上位にある(m−
m’)個のkビットワードがゼロであり、(0<m’≦
m)、少なくともm’個のkビットワードにエンコード
されたデータ要素を受けるための直列入力と、エンコー
ドされたkビットワードを受けるための並列入力と、直
列出力とを有する乗算回路で行なわれる乗算ステップを
含み、上記乗算の実行中に、所定の個数p個のワードが
連続的に上記乗算回路の並列入力に入力される(pはm
と無関係にaと同じかそれよりも大きい数である)こと
を特徴とする。
【0013】既存の回路はデータ要素(被乗数、乗数お
よびモジュロ)のコード化に決まった方法を用いる。つ
まりこれらデータ要素の値と無関係のものを使用する。
実際、問題となるデータ要素はm*kビットという決ま
ったサイズにエンコードされたデータ要素である。その
ため、オペランドの最上位のkビットワードがゼロであ
る場合、特に被乗数に関して、不必要な操作が実行され
ることになる。本発明は、操作の数を減らす、より特定
するならばレジスタ16の使用回数を減らすことを可能に
するものである。本発明は更に、被乗数のサイズ(ビッ
ト数)に係わらずモジュラ乗算の実行を可能にするもの
である。
【0014】
【発明の実施の形態】有利な点として、本発明は下記の
ような方法を提案する: −H=2(a+b)*k mod Nを算出し、 −Hのm個のワードとAのa個のワードをそれぞれ乗算
回路の直列入力および並列入力に入力することにより、
mワードにエンコードされた中間データ要素を算出し、
更に −中間データ要素のm個のワードとBのb個のワードを
それぞれ乗算回路の直列入力および並列入力に入力する
ことにより、A*B mod Nを算出する。従って、任意
のサイズのオペランド(つまり被乗数および乗数)につ
いて操作を実行することが可能である。特に、これらの
オペランドはいずれもmより大きい数またはモジュロよ
り大きい数のワードにエンコードされることができる。
【0015】本発明は更に、BをNに等しいまたはNよ
りも小さい値として、以下のことを提案するものであ
る: −H=2(a+m')*k mod Nを算出し、 −kビットのワードm個にエンコードされたBに対応す
るm個のワードとAのa個のワードをそれぞれ乗算回路
の直列入力と並列入力に入力して、kビットのワードm
個にエンコードされた中間データ要素を算出し、更に、 −中間データ要素のm個のワードとHのワードのうち最
も下位のm’個のワードをそれぞれ乗算回路の直列入力
と並列入力に入力して、A*B mod Nを算出する。
【0016】本発明は更に下記のような方法を提案する
ものである:つまり、(a+b)とm’を比較して、 −a+b<m’であれば、m個のワードにエンコードさ
れたB*2a*k に対応するm個のワードとAのa個のワ
ードをそれぞれ乗算回路の直列入力と並列入力に入力し
てA*B mod Nを算出し、 −a+B=m’であればB*2a*k とNを比較して、 −B*2a*k <Nならば、m個のワードにエンコードさ
れたB*2a*k に対応するm個のワードとAのa個のワ
ードをそれぞれ乗算回路の直列入力と並列入力に入力し
てA*B mod Nを算出し、 −そうでない場合、m個のワードにエンコードされたB
*2a*k mod Nに対応するm個のワードとAのa個のワ
ードをそれぞれ乗算回路の直列入力と並列入力に入力し
てA*B mod Nを算出する。 場合によってはエラー訂正パラメータHを全く計算する
ことなくモジュラ乗算を実行することが可能である。以
下、添付図を参照して本発明の実施例を説明することに
より、本発明がより明確に理解され、その他の特徴およ
び利点が明らかとなろう。以下の実施例は例示のための
ものであり、本発明の範囲を限定するものではない。
【0017】
【実施例】図1はモジュラ操作の処理を行なうための回
路1を示す。この回路は以下のものを備えている: −直列入力および直列出力を備えた3つのシフトレジス
タ10、11および12 これらのレジスタはそれぞれ同一n個のセルを有し、n
=m*kである。これらのレジスタは、例えばn/2個
のセルを有するレジスタに分割可能なものであってよ
く、レジスタ10および12についてはkビットのレジスタ
に分割可能なものであってもよい。 −マルチプレクサ13、14および15 これらのマルチプレクサはそれぞれレジスタ10、11およ
び12の前に置かれている。マルチプレクサは、レジスタ
が更に細分化されているならば、細分化された個々のレ
ジスタの前にも配置される。
【0018】−それぞれk個のセルを有する3つのレジ
スタ16、17および18 レジスタ16、17および18は並列出力で直列入力のレジス
タである。 −2つの乗算回路19および20 これらの乗算回路はそれぞれ1つの直列入力、1つの並
列入力および1つの直列出力を有する。乗算回路19の並
列入力は、k個のセルを有する記憶フリップフロップ回
路21を介してレジスタ16の出力に接続されている。乗算
回路20の並列入力は、k個のセルを有する記憶フリップ
フロップ回路22を介してレジスタ17または18の出力のう
ちの一方に接続されている。このフリップフロップ回路
22はそれ自体、2つの並列入力と1つの並列出力とを備
えたマルチプレクサを介してレジスタ17と18の出力のう
ちの一方に接続されている。 −マルチプレクサ24、25、25’、26、36および38 −デマルチプレクサ39 −直列減算回路27、28および29 −直列加算回路30および31 −2進データ要素の伝播をkサイクル分だけ遅延させる
ための遅延回路32、33および34、 −比較結果を記憶するための記憶回路35。
【0019】更に詳細については、上記の欧州特許出願
(EP−0 601 907 A2)、特に該特許の図3とそれに関
する記載(第15頁第54行から第16頁第13行まで、および
第17頁第50行から第18頁第55行まで)を参照されたい。
図1の回路によって本発明の実施が可能となる。。以下
の説明においては下記のように仮定する: −被乗数A(2進データ要素)および乗数B(2進デー
タ要素)はそれぞれkビットよりなるワードa個とb個
にエンコードされており、AおよびBの最上位ワードは
ゼロでなく、 −モジュロN(2進データ要素)はkビットのワードm
個にエンコードされており、モジュロのワードのうち最
も上位の(m−m’)個のkビットワードはゼロである
(0<m’≦m)。
【0020】データ要素の「有効なサイズ」という言葉
は、データ要素を表すために必要かつ十分な最も小さい
kビットワードの数、つまり最上位ワードが少なくとも
1つの1であるビットを有するような最少のワード数を
意味するものと理解される。つまり、A、BおよびNの
有効サイズはそれぞれa、bおよびm’となる。「有効
なビットの数」という言葉はデータ要素を表すために必
要かつ十分な最少のビット数、つまり最上位ビットが1
であるような最少のビット数を意味するものと理解され
る。
【0021】図2は以下のものを備えた回路を示す: −2つのシフトレジスタ10および12、減算回路27、マル
チプレクサ36 −2つの入力を有する2つのマルチプレクサ41および42 これらのマルチプレクサの出力はそれぞれレジスタ10お
よび12の入力に接続されている −直列減算回路40 −2つの入力を有するNANDゲート43 −比較結果を記憶するための記憶回路44。
【0022】減算回路27および40は、2つの直列入力と
1つの直列出力とを有する。減算回路27は、第1の入力
をレジスタ10の出力に接続されている。この減算回路27
の出力は減算回路40の第1の入力に接続されている。減
算回路40は、その第2の入力をレジスタ12の出力に接続
されて、その出力をゲート43のインバータ入力に接続さ
れている。ゲート43のもう1つの入力(インバータでな
い入力)は、減算回路27の出力に接続されており、その
入力は回路44の入力に接続されている。この回路44は、
リセット信号RESを受けるためのもう1つの入力を有
する。マルチプレクサ36は2つの入力と1つの出力を有
し、その出力は減算回路27の入力に接続されている。そ
の入力はそれぞれ、レジスタ12の出力とグランド(論理
0に相当する電位)に接続されている。マルチプレクサ
36は、回路44から送られてくる選択信号SCの状態に応
じて、選択的にその出力をその第1の入力または第2の
入力に接続する(例えばSC=0ならば第1の入力、S
C=1ならば第2の入力に接続する)。
【0023】マルチプレクサ41はその入力を、減算回路
27の出力とグランドとにそれぞれ接続されている。マル
チプレクサ42はその入力を、レジスタ12の出力と、2進
データ要素(実際にはモジュロN)を直列で受けるため
の入力端子とにそれぞれ接続されている。図2の回路は
2進データ要素であるエラー訂正パラメータHを算出す
るために使用される。A*B mod Nで表される2進デ
ータ要素を算出することが望まれている。
【0024】幾つかの方法が考えられる。 −a+b>m’ならば:この方法は以下のステップP1
〜P6を含む: P1.有効サイズがm’またはそれより小さいエラー訂
正パラメータH=2(a+b)*k mod Nおよびkビットにエ
ンコードされたパラメータJ0 を算出し(ここで、J0
=−N0 -1 mod 2k であり、N0 はモジュロNの最下
位ビットである)、更にJ0 をkビットのレジスタ17に
記憶する。 P2.パラメータHをレジスタ10にロードしてモジュロ
Nをレジスタ12にロードし、n=m*kビットのレジス
タ11をゼロに初期化する(レジスタ11の内容はSと表さ
れ、Sはnビットにエンコードされた可変の2進データ
要素である)。 P3.iと示されるループを設定する(iは1からaま
で変化し、それぞれi番目の反復が下記a)〜g)の操
作を含む): a)被乗数Aのi番目のワードAi-1 をレジスタ16から
記憶フリップフロップ回路21に転送し、
【0025】b)S(0)=0(0であるn個のビッ
ト)、S(i−1)を下記に定義のようないわゆるSの
更新された値として、下記I〜VによってX(i)=S
(i−1)+H*Ai-1 の値を算出する: I−レジスタ10の内容を第1の直列−並列乗算回路19の
入力に向かって右にシフトさせ、同時にレジスタ10の出
力をその入力に帰還させる、 II−HのビットにAi-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時に出力
を入力に帰還させる、 IV−更新された値S(i−1)がNよりも小さい場合に
はこの更新された値をi−1番目の反復後にレジスタ11
に記憶される値として決定し、もし更新された値がNよ
りも大きいならば、減算回路28においてこの更新された
値からNをシリアルに減算し、それより得られる値が更
新された値S(i−1)となり、更に V−レジスタ11の内容を右にシフトさせて、加算回路30
で更新された値S(i−1)に乗算H*Ai-1 の値を1
ビットずつ加える加算を行う
【0026】c)乗算回路20でX(i)の最下位ワー
ド、X0 (i)にJ0 を乗じ、X0 (i)*J0 mod 2
k =Y0 (i)の値をレジスタ18に入力し、同時に遅延
回路32および34でNおよびX(i)をkサイクル分だけ
遅延させる、 d)下記I〜IIによってZ(i)=X(i)+Y
0 (i)*Nの値を計算する: I−乗算回路20で、Y0 (i)に、kサイクル分遅延さ
れたNを乗じ、更に II−加算回路31で、X(i)をY0 (i)*Nの値に1
ビットずつ加える、 e)Z(i)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(i)/2k をレジスタ11に記憶する、 f)Z(i)/2k をNと1ビットずつ比較して、上記
の方法で次の反復の更新された値S(i)を決定する
(この比較は、減算回路29でZ(i)/2k とNとを1
ビットずつ減算することによって行われ、Nは遅延回路
33で更にkサイクル分だけ遅延されている)、
【0027】g)上記操作中の任意の時点で被乗数Aの
i番目のワードがレジスタ16にロードされる。 P4− a番目の反復で、Z(a)の最下位ワードを無
視し、残りのワード、つまりZ(a)/2k =A*2
b*k mod Nをレジスタ10に入力する。 P5− ステップP3およびP4を繰り返す。その際: −Aの代わりにBを使用し、Z(m)/2k または(Z
(m)/2k )−Nは第3の直列減算回路27を介して乗
算回路19に入力され、 −iは1からbまで変化する。 P6−最後の反復でレジスタ10に記憶された結果を、必
要な場合には減算回路27を用いてNから減算された状態
で出力する。
【0028】上記の方法では、レジスタ16はp回使用さ
れる(p=a+b)。a+b>2*mでb>m’とする
ことも可能であることに注意されたい。これは従来の計
算方式では不可能であった。所望の結果を得るのに必要
な計算回数は、従来技術の2*m*(n+2*k+x)
サイクルに対して(a+b)*(n+2*k+x)サイ
クルである。「サイクル」という言葉は図1の回路の動
作を同期化するクロック信号の周期を意味するものと理
解される。実際、xは回路の初期化の関数であって、つ
まり、回路の一貫した動作を確実とするための(例えは
マルチプレクサの)制御信号の設定の関数である。
【0029】エラー訂正パラメータHの算出に関して
は、その方法は図2を参照して説明する下記ステップH
1〜H7を含む: H1− モジュロNをレジスタ12にロードして、レジス
タ10を初期化し(第2のレジスタの内容はB(0)(0
であるn=m*k個のビット)と表される)、更にレジ
スタ44を初期化する(つまりSC=0となるように信号
RESを発生させる)、 H2− lビットを右にシフトさせることによってレジ
スタ12からNを出力し、同時にその出力をその入力に帰
還させ(lはモジュロNの有効ビットである)、レジス
タ12内の最上位ビットが1となるようにする、
【0030】H3− 下記の操作によって、nビットに
エンコードされたデータ要素B(1)=2*(B(0)
−N’)を算出し記憶する(ここでN’=N*2
n-l で、N’はレジスタ12に記憶された2進データ要素
に相当する): − レジスタ10および12の内容を右にシフトさせること
によって、N’とB(0)を出力する(レジスタ10の入
力は減算回路27の出力に接続されており、レジスタ12の
入力はその出力に接続されている)、 − 減算回路27で、N’とB(0)のビットが出てゆく
につれてそれらを1ビットずつ減算し、同時にR(0)
=B(0)−N’と表される結果を1ユニットだけ左に
シフトさせる、 − シフト後に、B(1)=2*R(0)で表される減
算結果をレジスタ10にロードする、 − 減算回器40で、B(1)とN’を1ビットずつ減算
してB(1)≧N’であるかB(1)<N’であるかを
決定し、B(1)≧N’ならば回路44によってSC=0
を発生させて、B(1)<N’ならばSC=1を発生さ
せる、
【0031】H4− インデックスiで示されるループ
を設定することによって(iは1からvまでの整数であ
り、それぞれi番目の反復は下記の操作を含む)、デー
タ要素Hint =2V mod N’を算出する(v=n−l+
m’*k+(a+b−m’)*k/2r で、rはk/2
r が整数となるような整数である): − B(i)<N’ならば、B(i)を1ユニットだけ
左にシフトさせた後にB(i+1)=2*(B(i)−
0)=2*B(i)をレジスタ10にロードし、更にB
(i+1)とN’を1ビットずつ比較する、 − そうでない場合、N’およびB(i)を1ビットず
つ減算し、同時に結果を1ユニットだけ左にシフトさせ
てB(i+1)=2*(B(i)−N’)をレジスタ10
にロードし、更にB(i+1)とN’を1ビットずつ比
較する、
【0032】H5− B(v+1)≧N’ならば、減算
回路27でB(v+1)とN’を1ビットずつ減算して、
その結果2*(B(v+1)−N’)が得られ、B(v
+1)−N’をレジスタ10にロードする(1ユニットの
左シフトが必要となる)、 H6− レジスタ10および12でn−lビットの右シフト
を行なう、 H7− r回、以下のPfield 操作を実行してパラメー
タHを算出する: Hint (j)=P(Hint (j−1), int (j−
1))N (ここでjは1からrのインデックスであり、H
int (0)=B(v+1)*2l-n または(B(v+
1)−N’)*2l-n である)。 Hint (0)=2v'mod N (ここでv’=m’*k+(a+b−m’)*k/2r
である) 従ってH=2(a+b)*k mod Nを得る。
【0033】Pfield 操作を実行するには、下記ステッ
プ1〜6を含む方法を行なう:j=1とする、 1.kビットにエンコードされたパラメータJ0 を算出
する(J0 =−N0 -1mod 2k で、N0 はモジュロNの
最下位ワードである)を算出し、kビットのレジスタ17
にJ0 を記憶する。 2.n=m*kビットのレジスタ11をゼロに初期化する
(このレジスタの内容はSで表され、Sはnビットにエ
ンコードされた可変の2進データ要素とする)。 3.iと表示されるループを設定する(iは1〜m’で
変化し、i番目の反復は各々以下a)〜c)のステップ
を含む):
【0034】a)被乗数Hint (j−1)の第i番目の
ワードHi-1 をレジスタ16から記憶フリップフロップ回
路21に転送する、 b)S(0)=0、S(i−1)をいわゆるSの更新さ
れた値として、X(i)=S(i−1)+H*Hi-1
算出する、 c)乗算回路20でX(i)の最下位ワード、X0 (i)
にJ0 を乗じて、X0(i)*J0 mod 2k =Y
0 (i)の値をレジスタ18に入力し、同時に遅延回路32
と34でNとX(i)をkサイクルずつ遅延する、 d)下記I〜IIによってZ(i)=X(i)+Y
0 (i)*Nの値を計算する: I−乗算回路20で、Y0 (i)に、kサイクル分遅延さ
れたNを乗じ、更にII−加算回路31で、X(i)をY0
(i)*Nの値に1ビットずつ加える、 e)Z(i)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(i)/2k をレジスタ11に記憶する、 f)Z(i)/2k をNと1ビットずつ比較して、上記
の方法で次の反復の更新された値S(i)を決定する
(この比較は、第2の直列減算回路29でZ(i)/2k
とNとを1ビットずつ減算することによって行われ、N
は遅延回路33で更にkサイクル分だけ遅延されてい
る)、
【0035】g)上記操作中の任意の時点で被乗数H
int (j−1)のi番目のワードがレジスタ16にロード
される。 4− m回目反復で、Z(m’)の最下位ワードを無視
し、残りのワード、つまりZ(m’)/2k をレジスタ
10に入力する。 5− Hint (j−1)の代わりにHint (j)を使用
してステップP3およびP4を(r−1)回繰り返す。 6−最後の反復でレジスタ10に記憶された結果を、必要
な場合には減算回路27を用いてNから減算された状態で
出力する。 パラメータJ0 の算出については、モジュラ操作の前に
行なうこともできる。実際、これは中央処理ユニットに
よって行なわれるものでコプロセッサとは独立である。
【0036】本発明は、第1に周知の方法よりも少ない
回数の減算を実行し、第2にPfield 操作を実行するこ
とによって、エラー訂正パラメータHを計算することを
提案するものであることに注意されたい。このことによ
って、必要であれば、乗算方法のステップP1を実行す
るのに必要な時間を短縮することが可能となる。従来特
許の方法では、Hを計算するのに必要な時間はn*(n
+1)サイクルであった。上記の方法によれば、必要な
時間は:n*(m’*k−l+(a+b−m’)*k/
r +1)+r*m’*(n+2*k+x)である。 −a+b>m’でb<Nならば:BがNよりも小さけれ
ば、上記の方法は下記の操作によって変更することがで
きる: −H=2(a+m’)*k mod Nを算出し、 −kビットのワードm個にエンコードされたBに対応す
るm個のワードとAのa個のワードをそれぞれ乗算回路
の直列入力と並列入力に入力して、nビットにエンコー
ドされた中間データ要素C=P(A,B)N =A*B*
a mod N(ここでIa =2-a*k mod NはAに関連す
るエラーとする)を算出し、更に −中間データ要素のm個のワードとHのワードのうち最
下位のm’個のワードをそれぞれ乗算回路の直列入力と
並列入力に入力して、P(H,C)N =H*C*Ih mo
d N(Ih =2-m'*k mod N)を算出する。
【0037】従ってモジュラ乗算を実行するための方法
は下記のステップを含む: P1.エラー訂正パラメータHとkビットにエンコード
されたパラメータJ0を算出し、J0 をレジスタ17に記
憶する。 P2.乗数BとモジュロNをそれぞれレジスタ10と12に
ロードし、レジスタ11をゼロに初期化する(レジスタ11
の内容はSと表される)、 P3.iと示されるループを設定する(iは1からaま
で変化し、それぞれi番目の反復が下記a)〜g)の操
作を含む): a)被乗数Aのi番目のワードAi-1 をレジスタ16から
記憶フリップフロップ回路21に転送し、
【0038】b)S(0)=0、S(i−1)を下記に
定義のようないわゆるSの更新された値として、下記I
〜VによってX(i)=S(i−1)+B*Ai-1 の値
を算出する: I−レジスタ10の内容を第1の直列−並列乗算回路19の
直列入力に向かって右にシフトさせ、同時にレジスタ10
の出力をその入力に帰還させる、 II−BのビットにAi-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時にこの
レジスタの出力をその入力に帰還させる、 IV−更新された値S(i−1)がNよりも小さい場合に
はこの更新された値をi−1番目の反復後にレジスタ11
に記憶される値として決定し、もし更新された値がNよ
りも大きいならば、減算回路28においてこの更新された
値からNをシリアルに減算し、それより得られる値が更
新された値S(i−1)となり、更に V−レジスタ11の内容を右にシフトさせて、更新された
値S(i−1)に乗算B*Ai-1 の値を1ビットずつ加
える加算を行う、
【0039】c)X(i)の最下位ワード、X0 (i)
にJ0 を乗じ、X0 (i)*J0 mod 2k =Y0 (i)
の値をレジスタ18に入力し、同時にNおよびX(i)を
kサイクル分だけ遅延させる、 d)下記I〜IIによってZ(i)=X(i)+Y
0 (i)*Nの値を計算する: I−Y0 (i)に、kサイクル分遅延されたNを乗じ、
更に II−X(i)をY0 (i)*Nの値に加える、 e)Z(i)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(i)/2k をレジスタ11に記憶する、 f)Z(i)/2k をNと1ビットずつ比較して、上記
の方法で次の反復の更新された値S(i)を決定する
【0040】g)上記操作中の任意の時点で被乗数Aの
i番目のワードがレジスタ16にロードされる。 P4− a回目の反復で、Z(a)の最下位ワードを無
視し、残りのワードをレジスタ10に入力する。 P5− ステップP3およびP4を繰り返す。その際: −Aの代わりにHを使用し、Z(a)/2k または(Z
(a)/2k )−Nを乗算回路19に入力し、 −iは1からm’まで変化する。 P6−最後の反復でレジスタ10に記憶された結果を、必
要な場合にはNから減算された状態で出力する。Aはm
よりも大きい数のワードにエンコードされることができ
る。
【0041】Hを計算するには、以下の方法を用いる
(図2参照): H1− モジュロNをレジスタ12にロードして、レジス
タ10をゼロに初期化し(レジスタ10の内容はB(0)と
表される)、 H2− レジスタ12をlビットだけ右にシフトさせて、
同時にその出力をその入力に帰還させる(lはモジュロ
の有効ビット数である)、 H3− 下記の操作によって、nビットにエンコードさ
れたデータ要素B(1)=2*(B(0)−N’)を算
出し記憶する(ここでN’=N*2n-l ): − 2つのレジスタにおいて右シフトを行なってレジス
タの内容を1ビットずつ減算し、このR(0)と表され
る1ビットずつの減算の結果を1ユニットだけ左にシフ
トさせ、 −シフト後、B(1)と表される減算の結果をレジスタ
10にロードする H4− インデックスiで示されるループを設定するこ
とによって(iは1からvまでの整数であり、それぞれ
i番目の反復は下記の操作を含む)、データ要素Hint
=2V mod N’を算出する(v=n−l+m’*k+a
*k/2r で、rはk/2r が整数となるような整数で
ある): − B(i)<N’ならば、B(i)を1ユニットだけ
左にシフトさせた後、B(i+1)=2*B(i)をレ
ジスタ10にロードし、更にB(i+1)とN’を1ビッ
トずつ比較する、 − そうでない場合、N’およびB(i)を1ビットず
つ減算し、同時に結果を1ユニットだけ左にシフトさせ
てB(i+1)=2*(B(i)−N’)を第2のレジ
スタにロードし、更にB(i+1)とN’を1ビットず
つ比較する、
【0042】H5− B(v+1)≧N’ならば、B
(v+1)とN’を1ビットずつ減算して、B(v+
1)−N’をレジスタ10にロードする、 H6− レジスタ10および12でn−lビットだけ右シフ
トを行なう。 H7− r回、以下のPfield 操作を実行してパラメー
タHを算出する: Hint (j)=P(Hint (j−1), int (j−
1))N (ここでjは1からrのインデックスであり、H
int (0)=B(v+1)*2l-n または(B(v+
1)−N’)*2l-n である) 別のHの計算については、例えばr=log2(k)−1を
取ることができる。上記のH算出法と比べて、この場合
に適合した方法とするためにパラメータvが変更されて
いることが理解されよう。
【0043】−a+b≦m’ならば:2通りの場合を選
び出すことができる: −a+b<m’ならば、m個のワードにエンコードされ
たB*2a*k に対応するm個のワードとAのa個のワー
ドをそれぞれ乗算回路19の直列入力と並列入力に入力し
てA*B mod Nを算出する。 −a+b=m’ならば、B*2a*k とNを比較して、 −B*2a*k <Nならば、m個のワードにエンコードさ
れたB*2a*k に対応するm個のワードとAのa個のワ
ードをそれぞれ乗算回路19の直列入力と並列入力に入力
してA*B mod Nを算出し、 −そうでない場合、m個のワードにエンコードされたB
*2a*k mod Nに対応するm個のワードとAのa個のワ
ードをそれぞれ乗算回路19の直列入力と並列入力に入力
してA*B mod Nを算出する。
【0044】これらの条件では、エラー訂正パラメータ
Hを算出する必要はなく、結果を得るためにただ1つの
計算操作が使用される。エラー訂正はオペランドBをB
*2a*k mod Nで置き換えることでオペランドBに転嫁
され、これは単にBを左にシフトさせることに相当する
(B*2a*k ≧Nならば場合によっては減算を含む)。
従ってP(A,B*2a*k N =A*B mod Nが算出
される。ここで、mと無関係な回数に渡って乗算回路の
並列入力を使用することがどれほど有効であるかが理解
されよう。従来の技術で使用される回路と比べて、当
然、図1に示した回路の動作に必要な制御信号を発生さ
せるシーケンサー回路を変更することが必要となる。従
って、レジスタ16の使用回数が可変であることから第1
にこのレジスタの使用を管理するためのプログラム可能
なカウンタを使用する必要がある。このプログラム可能
なカウンタは、第2に、モジュロの有効ビット数の関数
としてHを算出する際にレジスタ内でのシフトを管理す
るために使用する必要がある。
【0045】最も迅速な方法を選択することを可能にす
るa、bおよびmの比較を行なうために、一般には計算
コプロセッサと組み合わされた中央処理ユニットが使用
される。これらの操作は、場合によって、特にこの目的
のために開発された減算および加算回路で構成される回
路によって行なうことも可能である。従来技術における
回路では、レジスタ10、11および12が使用される。これ
らのレジスタは、32ビット×8ワードまたは16ワードの
レジスタとして構成されることができる。モジュラ操作
に関連する計算時間を更に短縮しようとするならば、32
ビット×1〜16ワードのレジスタとして構成されたレジ
スタを使用することが可能である。実際には、これは変
数mを例えばm=m’となるように選択することに相当
する。そのために、計算回路のレジスタ10、11および12
の位置に追加のマルチプレクサを付け加えればよい。こ
のことによって、確かに空間的な有効性は犠牲にするも
のの、取り扱う2進データ要素の有効サイズに適応させ
ることによってレジスタ10、11および12内でのシフトに
必要な時間を短縮することが可能となる。上記に考慮さ
れたようなレジスタ16の管理は、下記の計算の実行に応
用することができる。
【0046】RSA法 RSA暗号化法は、C=MD mod N型の計算の実行を必
要とする。ここでMは暗号化または解読すべきメッセー
ジで、NはN=P*Q(PおよびQは素数)であるよう
なモジュロであり、DはD*E=1 mod ((P−1)
*(Q−1))である(Eは明らかな数)。この計算を
実行するための1つのアルゴリズムは以下のようなもの
である: A=(M mod P)D mod(p-1) mod P B=(M mod Q)D mod(Q-1) mod Q U=Q-1 mod P IfA<B mod P then C=(((A+P−(B mod P))*U)mod P)*
Q+B Else C=(((A−(B mod P))*U)mod P)*Q+
【0047】このアルゴリズムは特に: −2つのモジュラリダクション、 −2つのモジュラ累乗操作、 −1つのモジュラ乗算 を実行する。これらの計算をできるだけ迅速に実行する
ために本発明の方法を利用することができることは特に
有効である。本出願人は更に、例えば変調可能なレジス
タや、必要に応じて32、256 、(256 +n)、384 、
(384 +n)、512 、または(512 +n)個のセル(こ
こで、nは整数とする)を備えたレジスタを選択するこ
とによって、使用するレジスタを変更することを提案す
るものである。例えばn=32とする。傾向としては512
、768 および1024ビットにエンコードされたモジュロ
の値を選択するようになっている。上記に定義のような
変調可能なレジスタを選択することによって:モジュラ
操作という一般的な意味においては、処理すべきデータ
の有効サイズにより高い柔軟性をもって適応することに
より、レジスタ内でのシフトの数が最小限に抑えられ、
【0048】RSA暗号化の実行というより特定された
意味においては、PとQについて異なるサイズを選択す
ることが可能となる。例えば512 ビットにエンコードさ
れたモジュロN=P*Qとすることが望まれる場合に
は、例えばPを254 ビットに選択してQを258 ビットに
選択することが可能である。Pに関する計算には256 セ
ルのレジスタが使用され、Qに関する計算には256 +n
=288 セルのレジスタが使用されよう。従来特許の回路
では、Qに関する計算に512 セルのレジスタを使用しな
ければならなず、これは計算に要する時間という点で致
命的であろう。
【0049】本発明方法の偶数パリティモジュロへの適
用 使用したようなコプロセッサは、奇数パリティのモジュ
ロNの値(最下位ビットが1)を選択することを必要と
する。これはJ0 の計算のための必要条件である。本出
願人は、上記の方法を、偶数パリティモジュロでのモジ
ュラ乗算操作の実行に応用することを提案するものであ
る。明記されてはいないが、当然、Nのビットが全て0
でない場合のみ、モジュラ演算が有効であることは明ら
かである。Nが偶数パリティの値でゼロでないならば、
N=N’*2g (N’は奇数パリティの値で1>g>
1)であるような2進データ要素N’を見出すことは常
に可能である。
【0050】N’の有効サイズはNの有効サイズよりも
小さいことから、N’はそれぞれkビットのワードm’
個にエンコードされていると考えることができる。N’
の真の有効サイズm”(ワードで)を考えることも可能
である。モジュラ操作の継続時間を最大限最適化しよう
とするならば、最後に述べた選択肢が当然最も有用であ
る。操作は、モジュロがN’であると仮定し、A*B*
-g mod N’を算出して、この結果に2g を乗じる
(中央処理ユニット内でのソフトウェア法か、あるいは
レジスタ内でシフトさせることによって)ことによって
実行される。
【0051】−a+b>m”ならば以下のような方法に
なる: −H=2(a+b)*k-g mod N’を算出する、 −m個のワードにエンコードされたHに対応するm個の
ワードとAのa個のワードをそれぞれ乗算回路の直列入
力と並列入力に入力することによって、nビットにエン
コードされた中間データ要素P(A,H)N'=A*2
b*k-g mod N’が算出され、更に −中間データ要素のm個のワードとBのb個のワードを
乗算回路の直列入力と並列入力に入力することによっ
て、A*B*2-g mod N’を算出し、 −シフトすることによってA*B mod Nを算出する。 最後のシフトは、レジスタを使用するか中央処理ユニッ
トを使用するかによって物理的または非物理的に行な
う。当然それに従ってHの算出を変更しなければならな
い。
【0052】以下の方法が有利に使用される: H1− モジュロN’(またはN)をレジスタ12にロー
ドして、レジスタ10を初期化し(第2のレジスタの内容
はB(0)(0であるn=m*k個のビット)と表され
る)、更にレジスタ44を初期化する(つまりSC=0と
なるように信号RESを発生させる)、 H2− l−bビット(またはlビット)の右シフトを
行うことによってレジスタ12からN’を出力し、同時に
その出力をその入力に帰還させ(lはモジュロNの有効
ビットである)、レジスタ12内の最上位ビットが1とな
るようにする、
【0053】H3− 下記の操作によって、nビットに
エンコードされたデータ要素B(1)=2*(B(0)
−N”)を算出し記憶する(ここでN”=N’*2
n-l+gで、N”はレジスタ12に記憶された2進データ要
素に相当する): − レジスタ10および12の内容を右にシフトさせること
によって、N”とB(0)を出力する(レジスタ10の入
力は減算回路27の出力に接続されており、レジスタ12の
入力はその出力に接続されている)、 − 減算回路27で、N”とB(0)のビットが出てゆく
につれてそれらを1ビットずつ減算し、同時にR(0)
=B(0)−N”と表される結果を1ユニットだけ左に
シフトさせる、 − シフト後に、B(1)=2*R(0)で表される減
算結果をレジスタ10にロードする、 − 減算回器40で、B(1)とN”を1ビットずつ減算
してB(1)≧N”であるかB(1)<N”であるかを
決定し、B(1)≧N”ならば回路44によってSC=0
を発生させて、B(1)<N”ならばSC=1を発生さ
せる、
【0054】H4− インデックスiで示されるループ
を設定することによって(iは1からvまでの整数であ
り、それぞれi番目の反復は下記の操作を含む)、デー
タ要素Hint =2V mod N”を算出する(v=n−l+
m’*k+(a+b−m’)*k/2r で、rはk/2
r が整数となるような整数である): − B(i)<N”ならば、B(i)を1ユニットだけ
左にシフトさせた後にB(i+1)=2*(B(i)−
0)=2*B(i)をレジスタ10にロードし、更にB
(i+1)とN”を1ビットずつ比較する、 − そうでない場合、N”およびB(i)を1ビットず
つ減算し、同時に結果を1ユニットだけ左にシフトさせ
てB(i+1)=2*(B(i)−N”)をレジスタ10
にロードし、更にB(i+1)とN”を1ビットずつ比
較する、
【0055】H5− B(v+1)≧N”ならば、減算
回路27でB(v+1)とN”を1ビットずつ減算して、
それによって2*(B(v+1)−N”)が得られ、B
(v+1)−N”をレジスタ10にロードする(1ユニッ
トだけ右にシフトすることが必要となる)、 H6− レジスタ10および12でn−lビットの右シフト
を行なう。 H7− r回、以下のPfield 操作を実行する: Hint (j)=P(Hint (j−1), int (j−
1))N (ここでjは1からrのインデックスであり、H
int (0)=B(v+1)*2l-n または(B(v+
1)−N”)*2l-n である) Hint (0)=2v'mod N (ここでv’=m’*k+(a+b−m’)*k/2k
である) 従って2(a+b)*k mod N’を得る。 H8−以下の操作によってパラメータHを算出する: −2u*k-g mod N’を算出し(uはu*k≧g>(u−
1)*kであるような整数)、 −Pfield 操作を行なってH=P(2u*k-g mod N’,
(a+b)*k mod N’)N'を得る
【0056】−a+b>m”でB≦N’ならば:下記の
ような方法となる: −H=2(a+m")*k-g mod N’を算出し、 −m個のワードにエンコードされたBに対応するm個の
ワードとAのa個のワードをそれぞれ乗算回路の直列入
力と並列入力に入力することによって、nビットにエン
コードされた中間データ要素P(A,B)N'=A*B*
-a mod N’が算出され、更に −中間データ要素のm個のワードとN’のワードのうち
最下位のm”個のワードを乗算回路の直列入力と並列入
力に入力することによって、A*B*2-g modN’を算
出する。 −シフトすることによってA*B mod Nを算出する。 H=2(a+m')*k-g mod N’を計算することが可能であ
ろう。これは有効サイズN’でなく有効サイズNを考慮
することに相当し、gがm”<m’であるならば賢明で
ない。
【0057】Hの算出については、第1にa+b>m”
でNが偶数パリティの値である場合について、第2にa
+b>m’でB≦NでありNが偶数パリティの値である
場合に関して上記に説明したステップを参照されたい。
当業者には特別の問題なく応用が可能であろう。 −a+b≦m’ならば:下記のような方法を行なう: −a+b<m”ならば、m個のワードにエンコードされ
たB*2a*k-g に相当するm個のワードとAのa個のワ
ードをそれぞれ乗算回路19の直列入力と並列入力に入力
することによって、A*B*2-g mod N’を算出す
る。 −a+b=m”であれば、B*2a*k-g とN’を比較し
て、 −B*2a*k-g <N’ならば、m個のワードにエンコー
ドされたB*2a*k-gに対応するm個のワードとAのa
個のワードをそれぞれ乗算回路19の直列入力と並列入力
に入力してA*B*2-g mod N’を算出し、 −そうでない場合、m個のワードにエンコードされたB
*2a*k-g mod N’に対応するm個のワードとAのa個
のワードをそれぞれ乗算回路19の直列入力と並列入力に
入力してA*B*2-g mod N’を算出する。 −シフトすることによってA*B mod Nを算出する。
【0058】本発明は、それが図1および2に示す既存
の回路を変更することなく(方法に関して)実行可能で
あるという点で特に有利である。変更されるのはこれら
の回路が機能するのに必要な各種の制御信号を発生させ
るシーケンス操作のみである。特に、本発明ではモジュ
ロNとオペランドの有効サイズを考慮する。本発明の方
法は、上述したように回路1の変更によって実施される
のが有利である。図2では、図2の回路のリソースが使
用されるものと仮定した。このことによって、コプロセ
ッサ全体のサイズが最大限抑えられる。当然、Hの計算
専用に構成された回路を使用することが可能である。本
発明によって行なわれる改良が、モジュラ平方の算出、
従ってモジュラ累乗の実行にも適用可能であることは理
解されよう。以上、好ましい実施例を参照しながら本発
明を説明したが、本発明の範囲を逸脱することなく各種
の変更が可能であることは理解されよう。
【図面の簡単な説明】
【図1】 モンゴメリ法によるモジュラ乗算の実行を可
能にする回路を示す概略図。
【図2】 本発明によるエラー訂正パラメータの計算に
おいて使用される回路を示す図。
【符号の説明】
1 回路 10、11、12 シフトレジスタ 13、14、15、23、24、25、25’、26、36、38、41、42
マルチプレクサ 16、17、18 レジスタ 19、20 乗算回路 21、22 記憶フリップフロップ回路 27、28、29、40 直列減算回路 30、31 直列加算回路 32、33、34 遅延回路 35 記憶回路 39 デマルチプレクサ 43 NANDゲート 44 記憶回路
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 H04L 9/10 H04L 9/00 621Z (56)参考文献 特開 平1−214927(JP,A) 特公 平2−25540(JP,B2) 特公 平2−3214(JP,B2) 特公 平3−78016(JP,B2) 特公 平2−45388(JP,B2) 特公 昭59−6100(JP,B2)

Claims (15)

    (57)【特許請求の範囲】
  1. 【請求項1】 乗数Aと乗数Bがそれぞれkビットよ
    りなるa個とb個のワードにエンコードされており、A
    およびBの最上位ワードがゼロでなく、モジュロNがk
    ビットずつのm個のワードにエンコードされており、こ
    のモジュロの最も上位にある(m−m’)個のワードが
    k個のゼロビットを有し(0<m’≦m)、少なくとも
    m’個のkビットワードにエンコードされたデータ要素
    を受けるための直列入力と、エンコードされたkビット
    ワードを受けるための並列入力と、直列出力とを有する
    乗算回路(19)で行なわれる乗算ステップを含モンゴ
    メリ法に従ってモジュラ乗算を実行するための方法にお
    いて、 上記乗算の実行中に、所定の個数p個のワード連続的
    算回路の並列入力に入力る(pmと無関係であ
    且つaと同じかそれよりも大きい数である)ことを特
    徴とする方法。
  2. 【請求項2】 m個のkビットワードにエンコードされ
    たエラー訂正パラメータH=2(p*k) mod Nを算出する
    ステップを含請求項1に記載の方法。
  3. 【請求項3】 下記ステップを含む、請求項2に記載の
    方法: (1) H=2(a+b)*k mod Nを算出し、(2) Hのm個のワードとAのa個のワードをそれぞれ
    乗算回路の直列入力および並列入力に入力することに
    ってkビットよりなるワードm個にエンコードされた中
    間データ要素P(A,H)N =A*2 b*k mod N)を算
    出し、(3) 中間データ要素のm個のワードとBのb個のワード
    をそれぞれ乗算回路の直列入力および並列入力に入力す
    ることによってA*B mod Nを算出する
  4. 【請求項4】 下記ステップP1〜P6からなる請求項
    3に記載の方法: P1)エラー訂正パラメータHとパラメータJ0 (ここ
    でJ 0 はJ 0 =−N 0 -1 mod2 k である整数であり、N
    0 はモジュロNの最下位ビットであるを算出し、J
    0 をkビットのレジスタに記憶する、 P2)パラメータHとモジュロNを、それぞれnビット
    (n=m*k)を有する第1と第2のレジスタにそれぞ
    れロードし、nビットの第3レジスタをゼロに初期化
    する(3のレジスタの内容はS表される)、 P3)iで表されるループを実行する(iは1からaま
    で変化し、それぞれi番目の反復が下記a)〜g)の操
    作を含む: a)被乗数Aのi番目のワードAi-1 を第4のレジスタ
    から記憶フリップフロップ回路に転送し、 b)S(0)=0、S(i−1)を下記いわゆる
    Sの更新された値として、下記I〜VによってX(i)
    =S(i−1)+H*Ai-1 の値を算出する: I 第1のレジスタの内容を第1の直列−並列乗算回路
    の入力に向かって右にシフトさせ第1のレジスタの出
    力をその入力に帰還させる、 II HのビットにAi-1 を乗ずる、 III 第2のレジスタの内容を右にシフトさせ、同時に
    このレジスタの出力を入力に帰還させる、 IV 更新された値S(i−1)がNよりも小さい場合に
    はこの更新された値をi−1番目の反復後に第3のレジ
    スタに記憶される値として決定し、もし更新された値が
    Nよりも大きいならば、この更新された値からNをシリ
    アルに減算し、それより得られる値が更新された値S
    (i−1)となり、更に V 第3のレジスタの内容を右にシフトさせて、更新さ
    れた値S(i−1)に乗算H*Ai-1 の値を1ビットず
    つ加える加算を行う c)X(i)の最下位ワードX0 (i)にJ0 を乗じ、
    0 (i)*J0 mod2k =Y0 (i)の値をレジスタ
    に入力しNおよびX(i)をkサイクル分だけ遅延さ
    せる、 d)下記I〜IIZ(i)=X(i)+Y0 (i)*N
    の値を計算する: I Y0 (i)に、kサイクル分遅延されたNを乗じ、
    更に II X(i)をY0 (i)*Nの値に加える、 e)Z(i)の最下位ワードを考慮せず残りのワード
    すなわちZ(i)/2kを第3のレジスタに記憶する、 f)Z(i)/2k をNと1ビットずつ比較して、上記
    の方法で次の反復の更新された値S(i)を決定する、 g)上記操作中の任意の時点で被乗数Aのi番目のワー
    第4のレジスタにロードる、 P4)a番目の反復で、Z(a)の最下位ワードを無視
    し、残りのワードを第1のレジスタ10に入力する、 P5)下記の条件でステップP3およびP4を繰り返
    す: 1) Aの代わりにBを使用し、Z(a)/2k または
    (Z(a)/2k )−N第1の乗算回路に入力する 2) iは1からbまで変化する P6)最後の反復で第のレジスタに記憶された結果
    を、必要な場合にはNから減算された状態で出力する
  5. 【請求項5】 第1のステップにおけるパラメータHの
    算出が下記H1〜H7のステップを実行して行われる請
    求項4に記載の方法: H1)モジュロNをnビットの第1レジスタ(n=m
    *k)にロードし、nビ ットの第2レジスタをゼロに
    初期化する(第2のレジスタの内容はB(0)表され
    る)、 H2)第1のレジスタの出力をその入力に帰還させなが
    ら、第1のレジスタをlビットだけ右シフトさせる(l
    はモジュロの有効ビット数である)、 H3)下記の操作によって、nビットにエンコードされ
    たデータ要素B(1)=2*(B(0)−N’)を算出
    し記憶する(N’=N*2n-l ): (1) 第1および第2のレジスタの内容を右にシフトさ
    せて1ビットずつ減算し、R(0)表される上記1ビ
    ット単位の減算の結果を1ユニットだけ左にシフトさせ
    る、 (2) シフト後に、B(1)で表される減算結果を第2
    のレジスタにロードする、 H4) インデックスiで表されるループを実行してデー
    タ要素Hint =2V modN’を算出する(ここで、v=
    n−l+m’*k+(a+b−m’)*k/2r で、r
    はk/2r が整数となるような整数であり、iは1から
    vの 整数であり、i回目の反復はそれぞれ以下の操作を
    む: (1) B(i)<N’ならばB(i)を1ユニットだけ
    左にシフトさせた後、B(i+1)=2*B(i)を第
    2のレジスタにロードし、さらに、B(i+1)とN’
    を1ビットずつ比較する、 (2) そうでない場合、N’およびB(i)を1ビット
    ずつ減算し、同時に結果を1ユニットだけ左にシフトさ
    せてB(i+1)=2*(B(i)−N’)を第2のレ
    ジスタにロードし、更にB(i+1)とN’を1ビット
    ずつ比較する、 H5) B(v+1)≧N’ならば、B(v+1)とN’
    を1ビットずつ減算してB(v+1)−N’を第2のレ
    ジスタにロードする、 H6) 第1および第2のレジスタでn−lビットの右シ
    フトを行なう、 H7) 下記field 操作r回実行してパラメータHを
    算出する:int (j)=P(Hint (j−1), int (j−1))N (ここでjは1からrのインデックスであり、H
    int (0)=B(v+1)*2l-n または(B(v+
    1)−N’)*2l-n である)
  6. 【請求項6】 BがNに等しいか、Nよりも小さい値
    時に下記を実行する請求項2に記載の方法: 1) H=2(a+m')*k mod Nを算出し、 2) kビットのワードm個にエンコードされたBに対応
    するm個のワードと、Aのa個のワードをそれぞれ乗
    算回路の直列入力と並列入力に入力して、kビットのワ
    ードm個にエンコードされた中間データ要素P(A,
    B)N =A *B*2 -a*k modNを算出し、 3) 中間データ要素のm個のワードとHのワードのうち
    最も下位のm’個のワードをそれぞれ乗算回路の直列入
    力と並列入力に入力して、A*B mod Nを算出する
  7. 【請求項7】 下記ステップP1〜P6からなる請求項
    6に記載の方法: P1)エラー訂正パラメータHとkビットにエンコード
    されたパラメータJ0 を算出し、J0 をkビットのレジ
    スタに記憶する、 P2)被乗数BとモジュロNをそれぞれnビットの第1
    および第2レジスタにロードし(n=m*k)、nビ
    ットの第3レジスタをゼロに初期化する(この第3の
    レジスタの内容はS表される)、 P3)iで表されるループを実行する(iは1からaま
    で変化し、それぞれi番目の反復が下記a)〜g)の操
    作からなる: a)被乗数Aのi番目のワードAi-1 を第4のレジスタ
    から記憶フリップフロップ回路に転送し、 b)S(0)=0、S(i−1)を下記に定義のような
    いわゆるSの更新された値として、下記I〜Vによって
    X(i)=S(i−1)+B*Ai-1 の値を算出する: I 第1のレジスタの内容を第1の直列−並列乗算回路
    の入力に向かって右にシフトさせ第1のレジスタの出
    力をその入力に帰還させ、 II BのビットにAi-1 を乗じ、 III 第2のレジスタの内容を右にシフトさせ、同時にこ
    のレジスタの出力をその入力に帰還させ、 IV 更新された値S(i−1)がNよりも小さい場合に
    はこの更新された値をi−1番目の反復後に第3のレジ
    スタに記憶される値として決定し、もし更新された値が
    Nよりも大きいならば、更新された値からNをシリアル
    に減算し、得られ更新された値S(i−1)と
    し、 V 第3のレジスタの内容を右にシフトさせ、更新され
    た値S(i−1)に乗算B*Ai-1 の値を1ビットずつ
    加える加算を行う、 c)X(i)の最下位ワードX0 (i)にJ0 を乗じ、
    0 (i)*J0 mod2k =Y0 (i)の値をレジスタ
    に入力し、同時にNおよびX(i)をkサイクル分だけ
    遅延させる、 d)下記のI〜IIによってZ(i)=X(i)+Y
    0 (i)*Nの値を計算する: I Y0 (i)に、kサイクル分遅延されたNを乗じ、 II X(i)をY0 (i)*Nの値に加える、 e)Z(i)の最下位ワードを考慮せず残りのワード
    すなわちZ(i)/2kを第3のレジスタに記憶する、 f)Z(i)/2k をNと1ビットずつ比較して、上記
    の方法で次の反復の更新された値S(i)を決定する、 g)上記操作中の任意の時点で被乗数Aのi番目のワー
    第4のレジスタにロードする、 P4) a回目の反復で、Z(a)の最下位ワードを無視
    し、残りのワードを第1のレジスタに入力する、 P5) 以下の条件でステップP3およびP4を繰り返
    す: (1) Aの代わりにHを使用し、Z(a)/2k または
    (Z(a)/2k )−Nを第1の乗算回路に入力し、 (2) iは1からbまで変化させる、 P6) 最後の反復で第1のレジスタに記憶された結果
    を、必要な場合にはNから減算された状態で出力する
  8. 【請求項8】 第1のステップにおけるパラメータHの
    算出を下記H1〜H7のステップで行う請求項7に記載
    の方法: H1) モジュロNをnビットの第1レジスタ(n=m
    *k)にロードし、nビ ットの第2のレジスタをゼロに
    初期化する(第2のレジスタの内容はB(0)表され
    る)、 H2) 第1のレジスタの出力をその入力に帰還させなが
    ら、第1のレジスタをlビットだけ右シフトさせる(l
    はモジュロの有効ビット数である)、 H3) 下記の操作によって、nビットにエンコードされ
    たデータ要素B(1)=2*(B(0)−N’)を算出
    し記憶する(N’=N*2n-l ): (1) 第1および第2のレジスタの内容を右にシフトさせ
    て1ビットずつ減算し、R(0)表される上記1ビッ
    ト単位の減算の結果を1ユニットだけ左にシフトさせ
    る、 (2) シフト後に、B(1)=2*R(0)で表される減
    算結果を第2のレジスタにロードする、 (3) b(1)とN’を比較する、 H4) インデックスiで示されるループを実行すること
    によってデータ要素Hint =2V mod N’を算出する
    (ここで、v=n−l+m’*k+a*k/2r で、r
    はk/2r が整数となる整数であり、iは1からvの整
    数で、i回目の反復はそれぞれ以下の操作を含む: 1) B(i)<N’ならば、B(i)を1ユニットだけ
    左にシフトさせた後、B(i+1)=2*B(i)を第
    2のレジスタにロードし、更にB(i+1)とN’
    1ビットずつ比較する、 2) そうでない場合、N’およびB(i)を1ビット
    ずつ減算し、結果を1ユニットだけ左にシフトさせてB
    (i+1)=2*(B(i)−N’)を第2のレジスタ
    にロードし、更にB(i+1)とN’を1ビットずつ
    比較する、 H5) B(v+1)≧N’ならば、B(v+1)とN’
    を1ビットずつ減算してB(v+1)−N’を第2のレ
    ジスタにロードする、 H6) 第1および第2のレジスタでn−lビットの右シ
    フトを行なう、 H7) 下記のfield 操作をr回実行してパラメータH
    を算出する: Hint (j)=P(Hint (j−1), int (j−1))N (ここでjは1からrのインデックスであり、H
    int (0)=B(v+1)*2l-n または(B(v+
    1)−N’)*2l-n である)
  9. 【請求項9】 下記ステップを含む請求項1に記載の方
    法: (a+b)とm’を比較し、a+b<m’であれば、m
    個のワードにエンコードされたB*2a*k に対応するm
    個のワードとAのa個のワードをそれぞれ乗算回路の
    直列入力と並列入力に入力してA*B mod Nを算出
    、 a+B=m’であれば、B*2a*k とNを比較、 B*2a*k <Nならば、m個のワードにエンコードされ
    たB*2a*k に対応するm個のワードとAのa個のワー
    をそれぞれ乗算回路の直列入力と並列入力に入力し
    てA*B mod Nを算出し、 そうでない場合には、m個のワードにエンコードされた
    B*2a*k mod Nに対応するm個のワードとAのa個の
    ワードをそれぞれ乗算回路の直列入力と並列入力に入
    力してA*B mod Nを算出する
  10. 【請求項10】 m個のkビットワードにエンコードさ
    れたエラー訂正パラメータH=2(p*k) mod N’(N’
    はN=N’*2g となるような2進データ要素であり、
    N’の最下位ビットは1である)を算出するステップを
    む請求項1に記載の方法。
  11. 【請求項11】 下記ステップを含む請求項10に記載の
    方法: 1) H=2(a+b)*k-g mod N’を算出し、 2) エンコードされたHのm個のワードとAのa個のワ
    ードをそれぞれ乗算回路の直列入力および並列入力に
    入力することにより、nビットにエンコードされた中間
    データ要素P(A,H)N'を算出し、更に 3) 中間データ要素のm個のワードとBのb個のワード
    をそれぞれ乗算回路の直列入力および並列入力に入力す
    ることにより、P(B,P(A,H)N'N' =A*B*
    -g modN’を算出し、 4) P(B,P(A,H)N'N'をシフトさせることに
    よってA*B mod Nを算出する
  12. 【請求項12】 パラメータHの算出が以下のステップ
    H1〜H8で実行される請求項11に記載の方法: H1)モジュロN’をnビットの第1レジスタにロー
    ドして、nビットの第2レジスタをゼロに初期化する
    (第2のレジスタの内容はB(0)と表される)、 H2)第1のレジスタの出力をその入力に帰還させた状
    態で、その内容をl−gビットだけ右にシフトさせ(l
    はモジュロNの有効ビットである)、 H3)下記の操作によって、nビットにエンコードされ
    たデータ要素B(1)=2*(B(0)−N”)を算出
    し記憶する(ここでN”=N’*2n-l+gである): 1) 第1および第2のレジスタの内容を右にシフトさ
    せ、 2) 上記2つのレジスタの内容を、それらが出てゆくに
    つれて1ビットずつ減算しR(0)と表される減算結
    果を1ユニットだけ左にシフトさせ、 3) シフト後、B(1)で表される減算結果を第2のレ
    ジスタにロードし、 4) B(1)とN”を比較する H4) インデックスiでされるループを実行してデー
    タ要素Hint =2V modN”を算出する(ここで、v=
    n−l+m’*k+(a+b−m’)*k/2r
    、rはk/2r が整数となる整数であり、iは1から
    vまでの整数であり、それぞれi番目の反復は下記の操
    作を含む): 1) B(i)<N”ならば、B(i)を1ユニットだけ
    左にシフトさせた後にB(i+1)=2*B(i)を第
    2のレジスタにロードし、更にB(i+1)とN”を1
    ビットずつ比較する、 2) そうでない場合、N”およびB(i)を1ビットず
    つ減算し結果を1ユニットだけ左にシフトさせてB
    (i+1)=2*(B(i)−N”)を第2のレジスタ
    にロードし、更にB(i+1)とN”を1ビットずつ
    比較する、 H5) B(v+1)≧N”ならば、B(v+1)とN”
    を1ビットずつ減算して、B(v+1)−N”を第2
    のレジスタにロードする、 H6) 第1および第2のレジスタでn−lビットの右シ
    フトを行なう、 H7) 下記のfield 操作をr回を実行する:int (j)=P(Hint (j−1), int (j−1))N' (ここで、jは1からrのインデックスであり、Hint
    (0)=B(v+1)*2l-n または(B(v+1)−
    N”)*2l-n である) H8) gビットのHint (r)を左にシフトさせる
  13. 【請求項13】 BがN’に等しいかまたはそれより低
    い値の時に下記を実行する請求項11に記載の方法: 1) H=2(a+m")*k-g mod N’を算出する(m”は
    N’の有効サイズ(ワード数)) 2) m個のワードにエンコードされたBに対応するm個
    のワードとAのa個のワードをそれぞれ乗算回路の直
    列入力と並列入力に入力することによって、nビットに
    エンコードされた中間データ要素P(A,B)N'が算出
    され、 3) 中間データ要素のm個のワードとN’のm”個のワ
    ードを乗算回路の直列入力と並列入力に入力することに
    よって、P(H,P(A,B)N'N' A*B*2 -g
    modNを算出、 4) P(H,P(A,B)N'N'をシフトすることによ
    ってA*B mod Nを算出する
  14. 【請求項14】 下記のステップを含む請求項10に記載
    の方法: (a+b)とm”を比較m”はワード数で表される
    N’の有効サイズ) て、 a+b<m”ならば、m個のワードにエンコードされた
    B*2a*k-g に相当するm個のワードとAのa個のワー
    をそれぞれ乗算回路の直列入力と並列入力に入力
    て、A*B*2-g mod N’を算出し、 a+b=m”であればB*2a*k-g とN’を比較、 B*2a*k-g <N’ならば、m個のワードにエンコード
    されたB*2a*k-g に対応するm個のワードとAのa個
    のワードをそれぞれ乗算回路の直列入力と並列入力に
    入力してA*B*2-g mod N’を算出し、 そうでない場合には、m個のワードにエンコードされた
    B*2a*k-g mod N’に対応するm個のワードとAのa
    個のワードをそれぞれ乗算回路の直列入力と並列入力
    に入力してA*B*2-g mod N’を算出し、 比較後に、算出されたデータ要素をシフトさせることに
    よってA*B mod Nを算出する
  15. 【請求項15】 mが変数である請求項1〜14のいずれ
    か一項に記載の方法。
JP7314754A 1994-11-08 1995-11-08 モンゴメリ法によるモジュラ乗算の実施方法 Expired - Fee Related JP2722413B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9413594 1994-11-08
FR9413594A FR2726667B1 (fr) 1994-11-08 1994-11-08 Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery

Publications (2)

Publication Number Publication Date
JPH08263316A JPH08263316A (ja) 1996-10-11
JP2722413B2 true JP2722413B2 (ja) 1998-03-04

Family

ID=9468764

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7314754A Expired - Fee Related JP2722413B2 (ja) 1994-11-08 1995-11-08 モンゴメリ法によるモジュラ乗算の実施方法

Country Status (5)

Country Link
US (1) US5745398A (ja)
EP (1) EP0712071B1 (ja)
JP (1) JP2722413B2 (ja)
DE (1) DE69506674T2 (ja)
FR (1) FR2726667B1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2741973B1 (fr) * 1995-12-04 1998-01-02 Sgs Thomson Microelectronics Procede de production d'un parametre jo associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
FR2743645B1 (fr) * 1996-01-15 1998-02-27 Sgs Thomson Microelectronics Dispositif ameliorant la vitesse de traitement d'un coprocesseur d'arithmetique modulaire
JP3525209B2 (ja) * 1996-04-05 2004-05-10 株式会社 沖マイクロデザイン べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
FR2774783B1 (fr) * 1998-02-09 2000-04-14 Sgs Thomson Microelectronics Procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
US6091821A (en) * 1998-02-12 2000-07-18 Vlsi Technology, Inc. Pipelined hardware implementation of a hashing algorithm
FR2791155B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
FR2791156B1 (fr) * 1999-03-17 2001-05-11 St Microelectronics Sa Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery
US6298135B1 (en) 1999-04-29 2001-10-02 Motorola, Inc. Method of preventing power analysis attacks on microelectronic assemblies
GB2352309B (en) 1999-07-21 2004-02-11 Advanced Risc Mach Ltd A system and method for performing modular multiplication
US7046800B1 (en) * 2000-03-31 2006-05-16 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable methods and apparatus for Montgomery multiplication
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
JP2002229445A (ja) * 2001-01-30 2002-08-14 Mitsubishi Electric Corp べき乗剰余演算器
KR100428755B1 (ko) * 2001-08-31 2004-04-30 주식회사 현대시스콤 비트 슬라이스 모듈러 곱셈기
US6957243B2 (en) * 2001-10-09 2005-10-18 International Business Machines Corporation Block-serial finite field multipliers
US7346159B2 (en) * 2002-05-01 2008-03-18 Sun Microsystems, Inc. Generic modular multiplier using partial reduction
KR100459732B1 (ko) * 2002-12-30 2004-12-03 삼성전자주식회사 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
JP4616169B2 (ja) * 2003-07-31 2011-01-19 富士通株式会社 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
US7532720B2 (en) * 2003-10-15 2009-05-12 Microsoft Corporation Utilizing SIMD instructions within montgomery multiplication
WO2005048008A2 (en) * 2003-11-16 2005-05-26 M-Systems Flash Disk Pioneers Ltd. Enhanced natural montgomery exponent masking
DE10355642A1 (de) * 2003-11-28 2005-06-23 Giesecke & Devrient Gmbh Erweiterte Montgomery-Multiplikation und Montgomery-Multiplikation mit vergrößerter Operandenlänge
FR2867289A1 (fr) * 2004-03-02 2005-09-09 France Telecom Procede et dispositif pour accomplir une operation cryptographique
KR20050088506A (ko) * 2004-03-02 2005-09-07 삼성전자주식회사 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
JP4662802B2 (ja) 2005-03-30 2011-03-30 富士通株式会社 計算方法、計算装置及びコンピュータプログラム
US8090957B2 (en) * 2005-10-19 2012-01-03 Panasonic Corporation Information security device, information security method, computer program, computer-readable recording medium, and integrated circuit
FR2917198B1 (fr) 2007-06-07 2010-01-29 Thales Sa Operateur de reduction modulaire ameliore.
CN106681691B (zh) * 2015-11-07 2019-01-29 上海复旦微电子集团股份有限公司 基于蒙哥马利模乘的数据处理方法、模乘运算方法和装置
US10216521B2 (en) * 2017-06-20 2019-02-26 Nvidia Corporation Error mitigation for resilient algorithms
CN109271137B (zh) * 2018-09-11 2020-06-02 网御安全技术(深圳)有限公司 一种基于公钥加密算法的模乘装置及协处理器
CN115469826B (zh) * 2022-09-16 2023-04-07 深圳思谋信息科技有限公司 数据处理方法、装置、计算机设备及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2008774C (en) * 1989-01-30 1999-10-05 Hikaru Morita Modular multiplication method and the system for processing data
IL97413A (en) * 1991-03-04 1995-06-29 Fortress U & T 2000 Ltd Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
FR2679054A1 (fr) 1991-07-10 1993-01-15 Fortress U T 2000 Ltd Procede et appareil d'exponentiation sur gf(2n).
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers

Also Published As

Publication number Publication date
JPH08263316A (ja) 1996-10-11
FR2726667A1 (fr) 1996-05-10
FR2726667B1 (fr) 1997-01-17
US5745398A (en) 1998-04-28
EP0712071A1 (fr) 1996-05-15
EP0712071B1 (fr) 1998-12-16
DE69506674T2 (de) 1999-05-20
DE69506674D1 (de) 1999-01-28

Similar Documents

Publication Publication Date Title
JP2722413B2 (ja) モンゴメリ法によるモジュラ乗算の実施方法
JP2722411B2 (ja) モンゴメリ法によるモジュラリダクションの実施方法
JP5866128B2 (ja) 算術プロセッサ
US6049815A (en) Method and apparatus for finite field multiplication
EP0917047B1 (en) Apparatus for modular inversion for information security
US5261001A (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
KR20110105555A (ko) 효율적인 하드웨어 구성을 갖는 몽고메리 승산기
Koç et al. Fast algorithm for modular reduction
US6687725B1 (en) Arithmetic circuit for finite field GF (2m)
JP2722412B2 (ja) モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法
US20010054053A1 (en) Method and apparatus for finite field multiplication
KR102496446B1 (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
US6341299B1 (en) Modular arithmetic coprocessor enabling the performance of non-modular operations at high speed
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
Wang et al. New VLSI architectures of RSA public-key cryptosystem
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
US20220269487A1 (en) Efficient Montgomery Multiplier
US7167885B2 (en) Emod a fast modulus calculation for computer systems
US5948051A (en) Device improving the processing speed of a modular arithmetic coprocessor
JP2000207387A (ja) 演算装置及び暗号処理装置
US6230178B1 (en) Method for the production of an error correction parameter associated with the implementation of a modular operation according to the Montgomery method
Findlay et al. Modular exponentiation using recursive sums of residues
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Sheu et al. A pipelined architecture of fast modular multiplication for RSA cryptography
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19971028

LAPS Cancellation because of no payment of annual fees