JPH08263315A - モンゴメリ法によるモジュラリダクションの実施方法 - Google Patents

モンゴメリ法によるモジュラリダクションの実施方法

Info

Publication number
JPH08263315A
JPH08263315A JP7314752A JP31475295A JPH08263315A JP H08263315 A JPH08263315 A JP H08263315A JP 7314752 A JP7314752 A JP 7314752A JP 31475295 A JP31475295 A JP 31475295A JP H08263315 A JPH08263315 A JP H08263315A
Authority
JP
Japan
Prior art keywords
register
bit
mod
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.)
Granted
Application number
JP7314752A
Other languages
English (en)
Other versions
JP2722411B2 (ja
Inventor
Guy Monier
モニエール ギィ
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.)
STMicroelectronics SA
Original Assignee
SGS Thomson Microelectronics 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 SGS Thomson Microelectronics SA filed Critical SGS Thomson Microelectronics SA
Publication of JPH08263315A publication Critical patent/JPH08263315A/ja
Application granted granted Critical
Publication of JP2722411B2 publication Critical patent/JP2722411B2/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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Complex Calculations (AREA)
  • Detection And Correction Of Errors (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 モンゴメリ法によるモジュラリダクションの
実施方法 【解決手段】 本方法では、2進データ要素Cが、kビ
ットのワードm’個にグループ分けされるc個のビット
にエンコードされており、m’とkは整数で、m’は
m’*k≧c>(m’−1)*kであって、0でない2
進データ要素Nがn個のビットにエンコードされてい
る。本発明の方法によれば、C mod Nを算出するため
に、Nに関連する2進データ要素J0 を算出するための
ステップが実行され、2f(C,N)の形を有する少なくとも
1つの2進データ要素H(ここで、f(C,N)はCの
サイズとNのパリティを表す整数とする)を算出するた
めのステップが実行され、さらに、第1に、1つの直列
入力と1つの並列入力と1つの直列出力とを備えた乗算
回路の並列入力にCを入力し、第2に、同じ乗算回路の
直列入力にHを入力するためのステップが実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はモンゴメリ法に従っ
てモジュラリダクションを行うための方法に関するもの
である。この方法は、GF(2n )で表される有限領域
(ガロア体)において除法を行わずにモジュラ計算を行
うことを可能にするものである。
【0002】
【従来の技術】従来、GF(2n )でのモジュラ操作
は、メッセージの認証、ユーザの確認およびキーの交換
といった用途における暗号法に使用される。そのような
用途の例は、例えばフランス国特許出願(公開番号2 67
9 054 号)に記載されている。そのような用途のために
開発された集積回路が市販されている。例としてSGS-TH
OMSON MICROELECTRONICS S.A. 製のST16CF54という
製品を挙げることができる。この製品は中央演算処理ユ
ニットと演算コプロセッサとを備え、モジュラ計算の実
行を目的としている。使用するコプロセッサは、モンゴ
メリ法を用いることによってk個のビットよりなるM個
のワード(k=32でM=8または16)にエンコードされ
た2進データについてモジュラ操作を行うことを可能に
するものである。これは欧州特許出願(公開番号第0 60
1 907 A2号)の対象となっており、図1(この図は上記
欧州特許出願の図2に相当する)に具体的に示されてい
る。
【0003】Pfield 操作と呼ばれる基本的な操作は、
自然数n個のビットにエンコードされた3つの2進デー
タ要素A(被乗数)、B(乗数)およびN(モジュロ)
を基に、nビットにエンコードされたP(A, B)N
表される2進データ要素を、P(A,B)N =A*B*
I mod N(ここでIはI=2-n mod Nとなるようなn
ビットにエンコードされた2進データ要素)となるよう
に算出するというものである。当然、n=m*kとなろ
う。この回路はさらに、拡張によって、モジュラリダク
ション、つまりC mod Nを計算すること(Cはk個の
ビットよりなるm個のワードにエンコードされた2進デ
ータ要素とする)を可能にするものである。
【0004】実行される方法は以下のとおり: −H=2n mod Nの算出、 −P(C,H)N の算出。 図1に示す回路によって実行されるモジュラリダクショ
ン方法は、以下のようなステップ1〜5を含む: 1.パラメータH(H=2m*k 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)〜g)のステップを
含む):
【0005】a)データ要素Mのi番目のワードCi-1
をレジスタ16から記憶フリップフロップ回路21に転送す
る、 b)S(0)=0、S(i−1)を下記に定義のような
いわゆるSの更新された値として、下記I〜Vによって
X(i)=S(i−1)+H*Ci-1 の値を算出する: I−レジスタ10の内容を第1の直列−並列乗算回路19の
入力に向かって右にシフトさせ、同時にレジスタ10の出
力をその入力に帰還させる、 II−HのビットにCi-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時に出力
を入力に帰還させる、 IV−更新された値S(s−1)がNよりも小さい場合に
はこの更新された値を(i−1)番目の反復後にレジス
タ11に記憶される値として決定し、もし更新された値が
Nよりも大きいならば、第1のシリアル減算回路28にお
いてこの更新された値からNをシリアルに減算し、それ
より得られる値を更新された値S(i−1)とし、さら
に V−レジスタ11の内容を右にシフトさせて、第1の直列
加算回路30で更新された値S(i−1)に乗算H*C
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)上記操作中の任意の時点で被乗数Cの
i番目のワードがレジスタ16にロードされる。 4.m回目の反復で、Z(m)の最下位ワードを無視
し、残りのワード、つまりZ(m)/2k をレジスタ10
に入力する。 5.最後の反復でレジスタ10に記憶された結果を、Z
(m)/2k ≧Nならば必要に応じて第3の直列減算回
路27によりNから減算された状態で出力する。
【0008】総じて、図1の回路の動作を同期させるク
ロック信号の周期をサイクルと呼ぶならば、モジュラ乗
算を処理するのに必要な時間は主に以下のように分ける
ことができる: −Hを計算するためのn*(n+1)サイクル、 −ステップ2のためのnサイクル、 −ステップ3および4を合わせたステップのためのm*
(n+2*k+x)サイクル(xは整数)、 −ステップ5のためのnサイクル。 実際、xは回路の初期化の関数であって、つまり、回路
の一貫した動作を確実とするための(例えはマルチプレ
クサの)制御信号の設定の関数である。実際、x=7で
あると考えることができる。
【0009】第1のステップに関して、パラメータJ0
は中央処理ユニット(ソフトウェア法)によって計算さ
れる。H*I2 =1 mod Nである。このことにより、
上記に述べたモジュラ乗算のステップ5において正確な
結果、つまりC mod Nに等しい結果を与えることが可
能となる。さらにHの計算は、図2を参照しながら以下
に説明する方法においてはコプロセッサによって行われ
る。図2は上記の欧州特許出願の図9に相当する。Hを
計算するには、以下のような操作が行われる(上記欧州
特許第20頁47行〜25頁52行を参照): 1.レジスタ12にNをロードしてレジスタ10をB(0)
=0に初期化し、 2.同時に: −B(0)とNを右にシフトさせて直列減算器27で1ビ
ットずつ減算して、結果R(0)=B(0)−N mod
m*k を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では減算の結果がテストされる)、 −B(1)≧Nならば、B(2)=B(1)−Nをレジ
スタ10にロードし、そうでない場合にはB(2)=B
(1)をロードする。B(2)=H=2n mod Nであ
る。
【0010】
【発明が解決しようとする課題】本発明者は実行された
モジュラリダクション法の改良を試みた。実際、現在使
用されているコプロセッサは時に以下のような動作の限
界を有する: − nビット以外のサイズを有するデータ要素を処理す
ることができない。つまり、事実上データ要素の有効サ
イズは考慮されない。さらに −このコプロセッサは偶数パリティのモジュロ値ではモ
ジュラ操作を行わない。J0 の計算はN0 が奇数バリテ
ィの値である場合のみ行われる。 本発明は中央処理ユニットとコプロセッサとで構成さ
れ、上記の制限の克服を可能にするアセンブリーの使用
を提案するものである。
【0011】
【課題を解決するための手段】本発明はモンゴメリ法に
従ってモジュラリダクションを実行するための方法を提
案するものであって、該方法によれば: −2進データ要素Cが、kビットのワードm’個にグル
ープ分けされるc個のビットにエンコードされており、
m’とkは整数でm’はm’*k≧c>(m’−1)*
kであって、 −0でない2進データ要素Nがn個のビットにエンコー
ドされており、さらに、C mod Nを算出するために、
Nに関連する少なくとも1つの2進データ要素J0 を算
出するためのステップが実行され、2f(C,N)の形を有す
る少なくとも1つの2進データ要素H(ここで、f
(C,N)はCのサイズとNのパリティを表す整数とす
る)を算出するためのステップが実行され、さらに、第
1に、1つの直列入力と1つの並列入力と1つの直列出
力とを備えた乗算回路の並列入力にCを出力し、第2
に、同じ乗算回路の直列入力にHを入力するためのステ
ップが実行される。
【0012】
【発明の実施の形態】本発明はさらに、Nの最下位ビッ
トが0である場合にC mod Nを算出するために、下記
のステップを実行することを提案するものである: E0− 2進データ要素J0 (N’)を算出する(ここ
でN’はnビットにエンコードされた2進データ要素で
あって、N’の最下位ビットは1であり、N=N’*2
a (aは1以上の整数)である) E1− 2進データ要素H=2m'*k-a mod N’を算出
する、 E3− m’*kビットにエンコードされたCを乗算回
路の直列入力に入力し、nビットにエンコードされたH
を同じ乗算回路の直列入力に入力して、データ要素P
(C,H)N'=C*2-a mod N’を得る、 E4− 2a *P(C,H)N'=C mod Nを算出す
る。
【0013】この方法はCを任意のサイズのデータ要素
として、偶数パリティモジュロでのモジュラリダクショ
ンの実行を可能にするものである。本発明はさらにC m
od Nを算出するための以下のステップを事項すること
を提案する: E0− 2進データ要素J0 (N)を算出する、 E1− 2進データ要素H=2m'*k-a mod Nを算出す
る、 E3− m’*kビットにエンコードされたCを乗算回
路の並列入力に入力し、nビットにエンコードされたH
を同じ乗算回路の直列入力に入力して、P(C,H)N
を得る。 この方法は、Cを任意のサイズとして、奇数パリティモ
ジュロについてモジュラリダクションの実行を可能にす
るものである。以下、添付図を参照して本発明の実施例
を説明することにより、本発明がより明確に理解され、
その他の特徴および利点が明らかとなろう。以下の実施
例は例示のためのものであって、本発明の範囲を限定す
るものではない。
【0014】
【実施例】図1はモジュラ処理論理回路1を示してい
る。実際は、この回路1は、シーケンス回路(図示せ
ず)による回路1の動作の制御を可能にする中央処理ユ
ニット(図示せず)と組み合わされている。この回路は
以下のものを備えている: −直列入力および直列出力を備えた3つのシフトレジス
タ10、11および12 これらのレジスタはそれぞれ同一n個のセルを有し、n
=m*kである。これらのレジスタは、例えばn/2個
のセルを有するレジスタに分割可能なものであってよ
く、レジスタ10および12についてはkビットのレジスタ
に分割可能なものであってもよい。 −マルチプレクサ13、14および15 これらのマルチプレクサはそれぞれレジスタ10、11およ
び12の前に置かれている。マルチプレクサは、レジスタ
がさらに細分化されているならば、細分化された個々の
レジスタの前にも配置される。
【0015】−それぞれ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。
【0016】さらに詳細については、上記の欧州特許出
願(EP−0 601 907 A2)、特に該特許の図3とそれに
関する記載(第15頁第54行から第16頁第13行まで、およ
び第17頁第50行から第18頁第55行まで)を参照された
い。図1の回路によって本発明の実施が可能となる。図
2は以下のものを備えた回路を示す: −2つのシフトレジスタ10および12、減算回路27、マル
チプレクサ36 −2つの入力を有する2つのマルチプレクサ41および42 これらのマルチプレクサの出力はそれぞれレジスタ10お
よび12の入力に接続されている −直列減算回路40 −2つの入力を有するNANDゲート43 −比較結果を記憶するための記憶回路44。
【0017】減算回路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の入力に接続する)。
【0018】マルチプレクサ41はその入力を、減算回路
27の出力とグランドとにそれぞれ接続されている。マル
チプレクサ42はその入力を、レジスタ12の出力と、2進
データ要素(実際にはモジュロN)を直列で受けるため
の入力端子とにそれぞれ接続されている。図2の回路は
2進データ要素であるエラー訂正パラメータHを算出す
るために使用される。C mod Nと表されるモジュラリ
ダクション操作を実行する、つまり別の2つの2進デー
タ要素を操作することによって1つの2進データ要素を
算出することが望まれている。
【0019】幾つかの方法が考えられる。最初に以下の
ように仮定する: −2進エンコードされたデータ要素としてCとNがあ
る、 −N=N’*2a ここで、 −Nは偶数パリティの値である(最下位のビットが0) −N’は2進エンコードされたデータ要素で奇数パリテ
ィーの数字である(最下位のビットが1)、および −aは1またはそれ以上の数字である −Nはl個の有効なビットにエンコードされており、l
は0以外の整数でu*k≧l>(u−1)*k、さらに
uは0以外の整数でu≦mである。従ってN’はl−a
個の有効なビットにエンコードされている −Cはc個の有効なビットおよびm’個のワードにエン
コードされている ここで、 −cは任意の整数、 −m’は、m’*k≧c>(m’−1)*kを満足する
整数、 −m”は、m”*m≧m’>(m”−1)*mを満足す
る整数、 −vは、v*u≧m’>(v−1)*uを満足する0以
外の整数、 −wは、w*l≧c>(w−1)*lを満足する整数。
【0020】データ要素の「有効なサイズ」または「有
効な数のビット」という言葉は、データ要素を表すため
に必要かつ十分な最も小さいビット数、つまり最上位の
ビットが1に等しくなるような最小のビット数を意味す
るものとする。従来、a、l、u、v、c、m’、m”
およびwはコプロセッサと接続された中央処理ユニット
によって決定されるもので、コプロセッサは中央処理ユ
ニットに処理すべき2進データ要素を与える。
【0021】I−Cをnビットのデータ要素に分割する 第1の方法は、Cがnの倍数である自然数個のビットに
エンコードされており、N’がnビットにエンコードさ
れていると仮定するというものである。I.1 方法 m’>m(つまりm”>1)なら、以下のように書き表
すことができる: C=Σi i *2i*n (ここで、iは0からm”−1の間で変化するインデッ
クスで、Ci はnビットにエンコードされた2進データ
要素である) Cm"-1の最も上位にある(m”*n−c)ビットが0で
あることに注意されたい。上記Cの定義から、以下のこ
とが導かれる: C mod N=(Σi i *2i*n )mod N =(Σi (Ci *2i*n mod N))mod N =[(Σi (Ci *2i*n-a mod N’))mod N’]*2a
【0022】以下のステップE0〜E3を実行すればよ
い: E0− 2進モードでkビットにエンコードされたデー
タ要素J0 (N’)を算出する、 E1− 1からm”−1まで変化するiについて、以下
の操作を行う: −Hi =2(i+1) n-a mod N’=2f(C,N)mod N’を算
出する、 ここで、f(C,N)=(i+1)*n−a −nビットにエンコードされたHi を乗算回路19の直列
入力に入力し、nビットにエンコードされたCi を同じ
乗算回路の並列入力に入力して、下記:P(Ci
i,N'=Ci *2i*n-a mod N’を得る、 −結果を1ビットだけ左へシフトさせてCi *2i*n mo
d Nを得て、この結果を記憶する、 E2− i=0について、C0 <NならばC0 を記憶
し、C0 ≧NならばC0−Nを記憶する、 E3− 記憶されたCi の値とC0 またはC0 −Nの値
のモジュラ加算を実行してC mod Nを得る。
【0023】一般に、ステップE0、E2およびE3は
中央処理ユニットによって実行される(ソフトウェア
法)。ステップE1は、Hi およびCi *2i*n-a mod
N’を計算するために図1および2に示す回路を用いる
ことになろう。P(Ci ,Hi N の左シフトは実質上
a *P(Ci ,Hi N'を算出することに等しく、こ
の操作はレジスタにおいて実際に行われるか、中央処理
ユニットによって仮想的に行われてもよい。この方法
は、特にステップE2およびE3を行うために開発され
たワイヤード回路を使用することができる。しかしなが
ら、それによって中央処理ユニットとコプロセッサの面
積が増加することになろう。当然、c≦nならば、ステ
ップE2のみが行われる。
【0024】I.2 iが1からm”−1まで変化する
時のCi *2i*n-a mod N’の算出i *2i*n-a mod N’の値を算出するには、下記ステ
ップR1〜R4が実行される:1からm”−1まで変化
するiについて: R1− パラメータHi をレジスタ10にロードして、モ
ジュロN’の値をレジスタ12にロードし、さらに、nビ
ットのレジスタ11をゼロに初期化する(ここでレジスタ
11の内容はSと表され、Sはnビットにエンコードされ
た可変の2進データである)、 −R2− sと表示されるループを設定する(sは1か
らmまで変化し、それぞれs回目の反復が下記a)〜
b)の操作を含む): a)データ要素Ci のs番目のワードCi,s-1 をレジス
タ16から記憶フリップフロップ回路21に転送し、
【0025】b)S(0)=0(0であるn個のビッ
ト)、S(s−1)を下記に定義のようないわゆるSの
更新された値として、下記I〜VによってX(s)=S
(s−1)+Hi *Ci,s-1 の値を算出する: I−レジスタ10の内容を第1の直列−並列乗算回路19の
入力に向かって右にシフトさせ、同時にレジスタ10の出
力をその入力に帰還させる、 II−Hi のビットにCi,s-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時に出力
を入力に帰還させる、 IV−更新された値S(s−1)がN’よりも小さい場合
にはこの更新された値をs−1番目の反復後にレジスタ
11に記憶される値として決定し、もし更新された値が
N’よりも大きいならば、減算回路28においてこの更新
された値からN’をシリアルに減算し、それより得られ
る値が更新された値S(s−1)となり、さらに V−レジスタ11の内容を右にシフトさせて、加算回路30
で更新された値S(s−1)に乗算Hi *Ci,s-1 の値
を1ビットずつ加える加算を行う
【0026】c)乗算回路20でX(s)の最下位ワー
ド、X0 (s)にJ0 を乗じ、X0 (s)*J0 mod 2
k =Y0 (s)の値をレジスタ18に入力し、同時に遅延
回路32および34でN’およびX(s)をkサイクル分だ
け遅延させる、 d)下記I〜IIによってZ(s)=X(s)+Y
0 (s)*N’の値を計算する: I−第2の乗算回路20で、Y0 (s)に、kサイクル分
遅延されたN’を乗じ、さらに II−加算回路31で、X(s)をY0 (s)*N’の値に
1ビットずつ加える、 e)Z(s)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(s)/2k をレジスタ11に記憶する、 f)Z(s)/2k をN’と1ビットずつ比較して、上
記の方法で次の反復の更新された値S(s)を決定する
(この比較は、減算回路29でZ(s)/2k とN’とを
1ビットずつ減算することによって行われ、N’は遅延
回路33でさらにkサイクル分だけ遅延されている)、
【0027】g)上記操作中の任意の時点でCi のs番
目のワードがレジスタ16にロードされる。 R3− m回目反復で、Z(m)の最下位ワードを無視
し、残りのワード、つまりZ(m)/2k をレジスタ10
に入力する。 R4− 最後の反復でレジスタ10に記憶された結果を、
必要な場合には減算回路27を用いてN’から減算された
状態で出力する。
【0028】I.3 iが1からm”−1まで変化する
場合のHi の算出i =2(i+1)*n-a mod N’を算出するには、(i+
1)*n−l+1の連続減算を行なうことによって既存
の方法を再び用いる(つまり減算のみに基づいて行な
う)ことが可能である。操作は以下H1〜H6のように
行なわれる: H1− N’をレジスタ12にロードして、レジスタ10を
B(0)=0(0であるn個のビット)に初期化する、 H2− 右にシフトさせることによってレジスタ12から
N’を出力し、同時にl−aビットをその入力に帰還さ
せて、レジスタ12内で最上位ビットが1となるようにす
る、
【0029】H3− 下記の操作によって、nビットに
エンコードされたデータ要素B(1)=2*(B(0)
−N”)を算出し記憶する(ここでN”=N’*2
n-l+a で、N”はレジスタ12に記憶された2進データ要
素に相当する): − レジスタ10および12の内容を右にシフトさせること
によって、N”とB(0)を出力する(レジスタ10の入
力は減算回路27の出力に接続されており、レジスタ12の
入力はその出力に接続されている)、 − 減算回路27で、N”とB(0)のビットが出てゆく
につれてそれらを1ビットずつ減算し、同時にR(0)
=B(0)−N”と表される結果を1ユニットだけ左に
シフトさせる(このシフトは減算器内で0である第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を発生させ
る、
【0030】H4− インデックスsで示されるループ
を設定する(sは1から(i+1)*n−lまで変化
し、それぞれの反復は下記の操作を含む): − B(s)<N”ならば、B(s+1)とN”とを1
ユニットだけシフトさせて1ビットずつ比較した後、B
(s+1)=2*(B(s)−0)=2*B(s)をレ
ジスタ10にロードする、 − そうでない場合には、N”およびB(s)を1ビッ
トずつ減算し、同時に結果を1ユニットだけ左にシフト
させてB(s+1)=2*(B(s)−N”)をレジス
タ10にロードし、さらにB(s+1)とN”を1ビット
ずつ比較する、 H5− B((i+1)*n−l+1)≧N”ならば、
B((i+1)*n−l+1)とN”を1ビットずつ減
算して、その結果を1ユニットだけ右にシフトさせなが
らレジスタ10にロードする。レジスタ10には2
n+(i+1)*n-l mod N”が存在する。 H6− レジスタ10および12でn−l+aビットだけ右
シフトを行なう。従ってこれらのレジスタはそれぞれ2
n+i*n-a mod N’とN’を含む。
【0031】I.4 Hの変形計算 m”の値が大きい程減算の数が増えることがわかる。こ
れは、それぞれの減算においてレジスタ10と12に記憶さ
れているn個のビットをシフトするためにn個のサイク
ルが必要となることから計算時間の点で問題がある。1
つの変形例が考えられる。この変形例はi=1に関連す
るエラー訂正パラメータH1 についてのみ減算を行な
い、次いでPfield 操作を行なうことによってより高い
インデックス値に関するエラー訂正パラメータHi を得
るというものである。
【0032】以下のような手順が用いられる: −H1 =22*n-a mod N’を算出する (2*N−l+
1回の減算)、 −i>1について: −中央処理ユニットでp(i)=Ent[log2(i*n/(n-a))]
+1を計算する(ソフトウェア法)(ここで、Ent は"
整数部分" 演算子を意味する)、 −図1の回路を用いて、p(i)回のPfield 操作を行
なう(上記欧州特許第19頁第50行から第20頁第45行を参
照されたい): Hi,t =P(Hi,t-1 , i,t-1 N'=2
n+2exp(t)*(n-a) mod N’ (ここで、tは1からp(i)までのインデックスであ
ってHi,0 =H1 である)
【0033】以下: Hi,p(i)=2n+2exp(p(i))*(n-a) mod N’が得られる
(exp は指数関数を意味する)、 −中央処理ユニットでr=2p(i)*(n−a)−i*n
+aを計算する(ソフトウェア法)。r>nならば、H
i,p(i)を記憶し、その後Pfield 操作の適当な組み合わ
せによって2n-r mod N’を計算する。2n-r mod N’
の計算は以下ように行なわれる:
【0034】−整数の対(x(i), y(i))に関連
する2進データ要素Di =2-x(i)*n+y(i)*a mod N’
を適切に選択する、 −P(Di ,Dj N'=2
-(x(i)+x(j)+1)*n+(y(i)+y(j))*a mod N’という操作
を行なって2n-r mod N’=2-x*n+y*a mod N’を得
る、n−r≧0ならば、nビットにエンコードされたデ
ータ要素Hi,p(i)を乗算回路19の直列入力に入力し(あ
るいは、n−r<0ならば2n-r mod N’を入力し)同
時にnビットにエンコードされた2n-r を同じ乗算回路
の並列入力に入力し(あるいは、n−r<0ならばH
i.p(i)を入力し)て、Hi を得る。Hi =2(i+1)*n-a
mod N’である。
【0035】II− Mを1ビットのデータ要素に分割す
もう1つの方法では、Cは1の倍数である自然数個のビ
ットにエンコードされているものと仮定する。II,1 方法 w>1ならば、C=Σi i =2i*l (iは0からw−
1まで変化する)と書くことができる。これより以下の
ことが導かれる: C mod N=(Σi i *2i*l )mod N =(Σi (Ci *2i*l mod N))mod N =[ (Σi (Ci *2i*l-a mod N’))mod N’] *2a 以下のステップE0〜E3に従って処理すればよい: E0− 2進モードでkビットにエンコードされたデー
タ要素であるJ0 (N’)を算出する、 E1− 1からw−1まで変化するiについて、以下の
操作を行なう: −Hi =2n+i*l-a mod N’=2f(C,N)mod N’を算出
する、(ここで、f(C,N)=n+i*l−aであ
る) −nビットにエンコードされたCi を乗算回路19の並列
入力に入力し、nビットにエンコードされたHi を同じ
乗算回路の直列入力に入力して、Ci *2i*l-a mod
N’を得る、 −結果を1ビット左へシフトさせてCi *2i*l mod N
を得て、この結果を記憶する、 E2− i=0について、C0 <NならばC0 を記憶さ
せ、C0 ≧NならばC0 −Nを記憶する、 E3− 記憶されたCi の値とC0 またはC0 −Nの値
とのモジュラ加算を実行してC mod Nを得る。Hi
よびCi *2i*l-a mod N’の計算を実行するための方
法は上記の方法に類似である。
【0036】II.2 Ci *2i*l-a mod N’の値の算
出(iは1からw−1まで変化する)i *2i*l-a mod N’の値を算出するには、以下のス
テップR1〜R4が実行されよう: 1からw−1まで変化するiについて R1− パラメータHi =2n+i*l-a mod N’をレジス
タ10にロードして、モジュロN’の値をレジスタ12にロ
ードし、さらに、nビットのレジスタ11をゼロに初期化
する(ここでレジスタ11の内容はSと表され、Sはnビ
ットにエンコードされた可変の2進データであるとす
る) R2− sと表示されるループを設定する(ここで、s
は1からmまで変化し、それぞれs回目の反復が下記
a)〜g)の操作を含む) a)データ要素Ci のs番目のワードCi,s-1 をレジス
タ16から記憶フリップフロップ回路21に転送する、 b)S(0)=0(0であるn個のビット)、S(s−
1)を下記に定義のようないわゆるSの更新された値と
して、下記I〜VによってX(s)=S(s−1)+H
i *Ci,s-1 の値を算出する:
【0037】I−レジスタ10の内容を第1の直列−並列
乗算回路19の入力に向かって右にシフトさせ、同時にレ
ジスタ10の出力をその入力に帰還させる、 II−Hi のビットにCi,s-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時に出力
を入力に帰還させる、 IV−更新された値S(s−1)がN’よりも小さいなら
ば、この更新された値を(s−1)番目の反復後にレジ
スタ11に記憶される値として決定し、もし更新された値
がN’よりも大きいならば、減算回路28においてこの更
新された値からN’をシリアルに減算し、それより得ら
れる値が更新された値S(s−1)となり、さらに V−レジスタ11の内容を右にシフトさせて、加算回路30
で更新された値S(s−1)に乗算Hi *Ci,s-1 の値
を1ビットずつ加える加算を行う、
【0038】c)乗算回路20でX(s)の最下位ワー
ド、X0 (s)にJ0 を乗じ、X0 (s)*J0 mod 2
k =Y0 (s)の値をレジスタ18に入力し、同時に遅延
回路32および34でN’およびX(s)をkサイクル分だ
け遅延させる、 d)下記下記I〜IIによってZ(s)=X(s)+Y0
(s)*N’の値を計算する: I−第2の乗算回路20で、Y0 (s)に、kサイクル分
遅延されたN’を乗じ、さらに II−加算回路31で、X(s)をY0 (s)*N’の値に
1ビットずつ加える、 e)Z(s)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(s)/2k をレジスタ11に記憶する、 f)Z(s)/2k をN’と1ビットずつ比較して、上
記の方法で次の反復の更新された値S(s)を決定する
(この比較は、減算回路29でZ(s)/2k とN’とを
1ビットずつ減算することによって行われ、(N’は遅
延回路33でさらにkサイクル分だけ遅延されている)、
【0039】g)上記操作中の任意の時点でCi のs番
目のワードがレジスタ16にロードされる。 R3− m回目の反復で、Z(m)の最下位ワードを無
視し、残りのワード、つまりZ(m)/2k をレジスタ
10に入力する。 R4− 最後の反復でレジスタ10に記憶された結果を、
必要な場合には減算回路27を用いてN’から減算された
状態で出力する。
【0040】II .3 1からw−1まで変化するiに
ついてのHi の算出i =2n+i+l-a mod N’を算出するには、i*l+n
−l+1個の連続する減算を行なうことにより既存の方
法を再び用いる(つまり減算のみに基づいて行なう)こ
とが可能である。操作は以下H1〜H6のように行なわ
れる: H1− N’をレジスタ12にロードして、レジスタ10を
B(0)=0(0であるn個のビット)に初期化する、 H2− 右にシフトさせることによってレジスタ12から
N’を出力し、同時にl−aビットをその入力に帰還さ
せて、レジスタ12内で最上位ビットが1となるようにす
る、 H3− 下記の操作によって、nビットにエンコードさ
れたデータ要素B(1)=2*(B(0)−N”)を算
出し記憶する(ここでN”=N’*2n-l+a で、N”は
レジスタ12に記憶された2進データ要素に相当する): − レジスタ10および12の内容を右にシフトすることに
よって、N”とB(0)を出力する(レジスタ10の入力
は減算回路27の出力に接続されており、レジスタ12の入
力はその出力に接続されている)、 − 減算回路27で、N”とB(0)のビットが出てゆく
につれてそれらを1ビットずつ減算し、同時にR(0)
=B(0)−N”と表される結果を1ユニットだけ左に
シフトする(このシフトは減算器内で0である第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を算出する、
【0041】H4− インデックスsで示されるループ
を設定する(sは1からn+i*l−lまで変化し、そ
れぞれの反復は下記の操作を含む): − B(s)<N”ならば、B(s+1)とN”とを1
ユニットだけ左にシフトして1ビットずつ比較した後、
B(s+1)=2*(B(s)−0)=2*B(s)を
レジスタ10にロードする、 − そうでない場合には、N”およびB(s)を1ビッ
トずつ減算し、同時に結果を1ユニットだけ左にシフト
してB(s+1)=2*(B(s)−N”)をレジスタ
10にロードし、さらにB(s+1)とN”を1ビットず
つ比較する、 H5− B(n+i*l−l+1)≧N”ならば、B
(n+i*l−l+1)とN”を1ビットずつ減算し
て、その結果を1ユニットだけ右にシフトさせながらレ
ジスタ10にロードする。レジスタ10には22*n+i*l-l mo
d N”が存在する。 H6− レジスタ10および12でn−l+aビットだけ右
シフトを行なう。従ってこれらのレジスタはそれぞれ2
n+i*l-a mod N’とN’を含む。
【0042】II.4 Hの変形算出法 1つの変形例が考えられる。この変形例は上記のものに
類似である: −H1 =2n+l-a mod N’を算出する (n+1回の減
算)、 −i>1について: −p(i)=Ent[log2(i*l/(l-a))]+1を計算する、 −図1の回路を用いて、p(i)回のPfield 操作
行なう: Hi,t =P(Hi,t-1 , i,t-1 N'=2
n+2exp(t)*(l-a) mod N’ ここで、tは1からp(i)まで変化するインデックス
であってHi,0 =H1 である。
【0043】以下:Hi,p(i)=2n+2exp(p(i))*(l-a) m
odN’が得られる(exp は指数関数を意味する)、 −中央処理ユニットでr=2p(i)*(l−a)−i*l
+aを計算する(ソフトウェア法)。r>mならば、H
i,p(i)を記憶し、その後Pfield 操作の適当な組み合わ
せによって2n-r mod N’を計算する。2n-r mod N’
の計算は以下ように行なわれる:
【0044】−整数の対(x(i), y(i))に関連
する2進データ要素Di =2-x(i)*n+y(i)*a mod N’
を適切に選択する、 −P(Di ,Dj N'=2
-(x(i)+x(j)+1)*n+(y(i)+y(j))*a modN’という一連の
操作を行なって2n-r mod N’=2-x*n+y*a mod N’
を得る、n−r≧0ならば、nビットにエンコードされ
たデータ要素Hi,p(i)を乗算回路19の直列入力に入力し
(あるいは、n−r<0ならば2n-r mod N’を入力
し)同時にnビットにエンコードされた2n-r を同じ乗
算回路の並列入力に入力し(あるいは、n−r<0なら
ばHi.p(i)を入力し)て、Hi を得る。Hi =2
n+i*l-a mod N’である。
【0045】III −Cのワードの乗算回路にの連続的入
−Nがu*kビットにエンコードされており(最も上位
のu*k−l個のビットが0)、 −Cがm’*kビットにエンコードされている(最も上
位のm’*k−c個のビットが0)と仮定する。 つまり、それぞれがkビットよりなるu個のワードは確
実にNを決定することができる。同様に、それぞれがk
ビットよりなるm’個のワードも確実にCを決定するこ
とができる。本発明者は2種類の変更を提案する: −レジスタ16をm’回使用する、つまり連続的にCの全
ワードを与える際にPfield 操作を1回だけ実行する、 −この操作に関連するエラー訂正パラメータHを計算す
る。
【0046】III.1 方法 下記のステップE0〜E4に従って処理すればよい。 E0− 中央処理ユニットによってJ0 (N’)を算出
する、 E1− コプロセッサを用いて、2進データ要素H=2
m'*k-a mod N’=2f(C,N) mod N’(ここでf(C,
N)=m’*k−a)を算出する、 E3− m’*kビットにエンコードされたCを乗算回
路19の直列入力に入力し、nビットにエンコードされた
Hを同じ乗算回路の並列入力に入力して、P(C,H)
N'=C*2-a mod N’を得る、 E4− 結果を1ビットだけ左にシフトさせて2a *P
(C,H)N'=C modNを得る(このステップは中央処
理ユニットで行なうことができる)。実際、Hの有効な
サイズはN’の有効なサイズ、つまりNのサイズと同じ
かそれ以下であって、従ってnと同じかそれよりも小さ
い。
【0047】III.2 C*2-a mod N’の値の算出 以下R1〜R5の操作に従う: R1− パラメータHをレジスタ10にロードして、モジ
ュロN’をレジスタ12にロードし、さらに、nビットの
レジスタ11をゼロに初期化する(ここでレジスタ11の内
容はSと表され、Sはnビットにエンコードされた可変
の2進データである)、 −R2− sと表示されるループを設定する(sは1か
らmまで変化し、それぞれs回目の反復が下記a)〜
b)の操作を含む):、 a)Cのs番目のワードCs-1 をレジスタ16から記憶フ
リップフロップ回路21に転送する、 b)S(0)=0(0であるn個のビット)、S(s−
1)を下記に定義のようないわゆるSの更新された値と
して、下記I〜VによってX(s)=S(s−1)+H
*Cs-1 の値を算出する:
【0048】I−レジスタ10の内容を直列−並列乗算回
路19の入力に向かって右にシフトさせ、同時にレジスタ
10の出力をその入力に帰還させる、 II−Hi のビットにCs-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時に出力
を入力に帰還させる、 IV−更新された値S(s−1)がN’より小さいなら
ば、この更新された値を(s−1)番目の反復後にレジ
スタ11に記憶される値として決定し、もし更新された値
がN’よりも大きいならば、減算回路28においてこの更
新された値からN’をシリアルに減算し、それより得ら
れる値を更新された値S(s−1)とし、さらに V−レジスタ11の内容を右にシフトさせて、加算回路30
で更新された値S(s−1)に乗算H*Cs-1 の値を1
ビットずつ加える加算を行う、
【0049】c)乗算回路20でX(s)の最下位ワー
ド、X0 (s)にJ0 を乗じ、X0 (s)*J0 mod 2
k =Y0 (s)の値をレジスタ18に入力し、同時に遅延
回路32および34でN’およびX(s)をkサイクル分だ
け遅延させる、 d)下記下記I〜IIによってZ(s)=X(s)+Y0
(s)*N’の値を計算する: I−第2の乗算回路20で、Y0 (s)に、kサイクル分
遅延されたN’を乗じ、さらに II−加算回路31で、X(s)をY0 (s)*N’の値に
1ビットずつ加える、 e)Z(s)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(s)/2k をレジスタ11に記憶する、 f)Z(s)/2k をN’と1ビットずつ比較して、上
記の方法で次の反復の更新された値S(s)を決定する
(この比較は、減算回路29でZ(s)/2k とN’とを
1ビットずつ減じることによって行われ、N’は遅延回
路33でさらにkサイクル分だけ遅延されている)、
【0050】g)上記操作中の任意の時点でCのs番目
のワードがレジスタ16にロードされる。 R3− m回目の反復で、Z(m’)の最下位ワードを
無視し、残りのワード、つまりZ(m’)/2k をレジ
スタ10に入力する、 R4− 最後の反復でレジスタ10に記憶された結果を、
必要な場合には減算回路27を用いてN’から減算された
状態で出力する。 R5− 結果を1ビットだけ左にシフトする。 上記の方法によって、C mod Nを算出するのに必要な
ステップの数を減らすことが可能になり、従って計算の
時間が大幅に短縮される。
【0051】III .3 H=2m'*k-a mod N’の算
N’の有効サイズはそれぞれk個のビットよりなるu個
のワードであると仮定する。N’の有効ビットの数は
l’=l−aである。操作は以下のように行なわれる: H1− モジュロN’をレジスタ12にロードして、レジ
スタ10を初期化し(レジスタ10の内容はB(0)(0で
あるn個のビット)と表される)、さらにレジスタ44を
初期化する(つまり、SC=0となるように信号RES
を発生させる)、 H2− 右にシフトさせることによってレジスタ12から
N’を出力し、同時にl−aビットをその入力に帰還さ
せて(l−aはモジュロN’の有効ビット数である)、
レジスタ12内で最上位ビットが1となるようにする、
【0052】H3− 下記の操作によって、nビットに
エンコードされたデータ要素B(1)=2*(B(0)
−N”)を算出し記憶する。ここでN”=N’*2
n-l+a で、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を算出す
る、
【0053】H4−インデックスiで示されるループを
設定することによって(iは1からt−nまでの整数で
ある)、データ要素Hint =2t mod N”を算出する。
ここでt=n−l+a+u*k+(m’−u)*k/2
r (rはk/2r が整数となるような整数)であり、そ
れぞれのi回目の反復は下記の操作を含む: − B(i)<N”ならば、B(i)を1ユニットだけ
シフトさせてB(i+1)とN”を1ビットずつ比較し
た後、B(i+1)=2*(B(i)−0)=2*B
(i)をレジスタ10にロードする、 − そうでない場合には、N”およびB(i)を1ビッ
トずつ減算し、同時に結果を1ユニットだけ左にシフト
させてB(i+1)=2*(B(i)−N”)をレジス
タ10にロードし、さらにB(i+1)とN”を1ビット
ずつ比較する、
【0054】H5− B(t−n+1)≧N”ならば、
減算回路27でB(t−l+1)とN”を1ビットずつ減
算する。その結果2*(B(t−n+1)−N”)が得
られ、B(t−n+1)−N”をレジスタ10にロードす
る。このロードには1ユニットだけ右にシフトさせるこ
とが必要となる、 H6− レジスタ10および12でn−l+aビットだけ右
シフトを行なう。従ってレジスタ12にはN’が存在す
る。 H7− r回のPfield 操作を実行することによってパ
ラメータHを算出する: Hint (j)=P(Hint (j−1),Hint (j−
1))N' ここでjは1からrまでのインデックスであって、H
int (0)=B(t−n+1)*2l-n-a または(B
(t−n+1)−N”)*2l-n-a である。H
int (0)はステップH6のシフトの後はレジスタ10内
にある。従ってHint (r)=2m'*k mod N’とな
る。
【0055】H8− 1回のPfield 操作を行なうこと
によってパラメータHを算出する: P(Hint (r),2u*k-a )N’ ここでHint (r)は乗算回路19の直列入力に入力さ
れ、2u*k-a は同じ乗算回路の並列入力に入力される。
従ってH=2m'*k-a mod N’となる。当然、上記の方
法と同じ意図によってr+1回のPfield 操作が行なわ
れたものと仮定した。これは、1回の操作ごとに乗算回
路19の並列入力にそれぞれkビットずつのu個のワード
が入力されることを意味する。
【0056】IV− 奇数パリティのモジュロに対するモ
ジュラリダクション 上記のIII に記載の方法を適用する。以下のような操作
を行なえばよい: −中央処理ユニットを用いてJ0 (N)を計算する −コプロセッサを用いてH=2m'*k mod N=2f(C,N)
mod N(ここで、f(C,N)=m’*k)を計算す
る、 −乗算回路19の直列入力に、m’*kビットにエンコー
ドされたCを入力し、この同じ乗算回路19の配列入力
に、nビットにエンコードされたHを入力して、P
(C,H)N =C mod Nを得る。実際に、Hの有効な
サイズはNの有効なサイズよりと同じかそれよりも小さ
く、つまり、Nのサイズと同じかそれよりも小さく、従
ってnと同じかそれよりも小さい。
【0057】IV. 1− C mod Nの算出 以下の操作に従って行なう: R1− パラメータHをレジスタ10にロードして、モジ
ュロNをレジスタ12にロードし、さらに、nビットのレ
ジスタ11をゼロに初期化する(ここでレジスタ11の内容
はSと表され、Sはnビットにエンコードされた可変の
2進データであるとする) −R2− iと表示されるループを設定する(ここでs
は1からm’まで変化し、それぞれi回目の反復が下記
a)〜g)の操作を含む): a)Cのs番目のワードCs-1 をレジスタ16から記憶フ
リップフロップ回路21に転送する、 b)S(0)=0、S(s−1)を下記に定義のような
いわゆるSの更新された値として、下記I〜Vによって
X(s)=S(s−1)+H*Cs-1 の値を算出する:
【0058】I−レジスタ10の内容を直列−並列乗算回
路19の入力に向かって右にシフトさせ、同時にレジスタ
10の出力をその入力に帰還させる、 II−HのビットにCs-1 を乗ずる、 III−レジスタ12の内容を右にシフトさせ、同時にこの
レジスタの出力を入力に帰還させる、 IV−更新された値S(s−1)がNよりも小さいなら
ば、この更新された値をs−1番目の反復後にレジスタ
11に記憶される値として決定し、もし更新された値がN
よりも大きいならば、減算回路28においてこの更新され
た値からNをシリアルに減算し、それより得られる値を
更新された値S(s−1)とし、さらに V−レジスタ11の内容を右にシフトさせて、加算回路30
で更新された値S(s−1)に乗算H*Cs-1 の値を1
ビットずつ加える加算を行う、
【0059】c)乗算回路20でX(s)の最下位ワー
ド、X0 (s)にJ0 を乗じ、X0 (s)*J0 mod 2
k =Y0 (s)の値をレジスタ18に入力し、同時に遅延
回路32および34でNおよびX(s)をkサイクル分だけ
遅延させる、 d)下記I〜IIによってZ(s)=X(s)+Y
0 (s)*Nの値を計算する: I−乗算回路20で、Y0 (s)に、kサイクル分遅延さ
れたNを乗じる、さらに II−加算回路31で、X(s)をY0 (s)*Nの値に1
ビットずつ加える、 e)Z(s)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(s)/2 k をレジスタ11に記憶する、 f)Z(s)/2k をNと1ビットずつ比較して、上記
の方法で次の反復の更新された値S(s)を決定する。
この比較は、減算回路29でZ(s)/2k とNとの1ビ
ットずつの減算を行なうことによって行われる(ここ
で、Nは遅延回路33でさらにkサイクル分だけ遅延され
ている)、
【0060】g)上記操作中の任意の時点でCのs番目
のワードがレジスタ16にロードされる。 R3− m’回目の反復で、Z(m’)の最下位ワード
を無視し、残りのワード、つまりZ(m’)/2k をレ
ジスタ10に入力する、 R4− 最後の反復でレジスタ10に記憶された結果を、
必要な場合には減算回路27を用いてNから減算された状
態で出力する。
【0061】IV.2 H=2m'*k mod Nの算出 Nの有効サイズはそれぞれk個のビットよりなるu個の
ワードであると仮定する。Nの有効ビットの数はlであ
る。操作は以下のように行なわれる: H1− モジュロNをレジスタ12にロードして、レジス
タ10を初期化し(レジスタ10の内容はB(0)、つまり
(0であるn個のビット)と表される)、さらにレジス
タ44を初期化する(つまり、SC=0となるように信号
RESを発生させる)、 H2− 右にシフトさせることによってレジスタ12から
N’を出力し、同時にlビットをその入力に帰還させて
(lはモジュロNの有効ビット数とする)、レジスタ12
内で最上位ビットが1となるようにする、
【0062】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を算出す
る、
【0063】H4−インデックスiで示されるループを
設定することによって(iは1からt−nまでの整数で
ある)、データ要素Hint =2t mod N’を算出する。
ここでt=n−l+u*k+(m’−u)*k/2
r (rはk/2r が整数となるような整数)であり、そ
れぞれのi回目の反復は下記の操作を含む: − 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ビット
ずつ比較する、
【0064】H5− B(t−n+1)≧N’ならば、
減算回路27でB(t−n+1)とN’を1ビットずつ減
算する。その結果2*(B(t−n+1)−N’)が得
られ、B(t−n+1)−N’をレジスタ10にロードす
る。このロードには1ユニットだけ右にシフトさせるこ
とが必要となる、 H6− レジスタ10および12でn−lビットだけ右への
シフトを行なう。従ってレジスタ12にはNが存在する。 H7− r回のPfield 操作を実行することによってパ
ラメータHを算出する: Hint (j)=P(Hint (j−1),Hint (j−
1))N ここでjは1からrまでのインデックスであって、H
int (0)=B(t−n+1)*2l-n または(B(t
−n+1)−N”)*2l-n である。 Hint (0)=2t'mod N(ここで、t’=u*k+
(m’−u)*k/2r) ステップH6のシフトの後、Hint (0)はレジスタ10
内にある。従ってHint (r)=H=2m'*k mod Nと
なる。
【0065】当然、上記の方法と同じ意図によってr回
のPfield 操作が行なわれるものと仮定した。これは、
1回の操作ごとに乗算回路19の並列入力にそれぞれkビ
ットずつのu個のワードが入力されることを意味する。
従来特許の回路と比較すると、当然、図1に示した回路
の動作に必要な制御信号を発生させるためのシーケンサ
回路を変更しなければならない。従って、特に最後に述
べた方法については、レジスタ16の使用回数が可変であ
ることから第1にこのレジスタの使用を管理するための
プログラム可能なカウンタを使用する必要がある。この
プログラム可能なカウンタは、第2に、モジュロN(N
が偶数パリティの値である場合にはN’)の有効ビット
数の関数としてHを算出する際にレジスタ内でのシフト
を管理するために使用する必要がある。
【0066】従来技術における回路では、レジスタ10、
11および12が使用される。これらのレジスタは、32ビッ
ト×8ワードまたは16ワードのレジスタとして構成され
ている。モジュラ操作に関連する計算時間をさらに短縮
しようとするならば、32ビット×1〜16ワードのレジス
タとして構成されたレジスタを使用することが可能であ
る。言い換えれば、実際にはm=uを選択することが可
能である。そのために、計算回路のレジスタ10、11およ
び12の位置に追加のマルチプレクサを付け加えればよ
い。このことによって、確かに空間的な有効性は犠牲に
するものの、レジスタ10、11および12内でのシフトに必
要な時間を短縮することが可能となる。偶数パリティま
たは奇数パリティのモジュロでモジュラリダクションが
実行可能であるという有利点は、RSA型の暗号化を行
なう際に特に有利に利用される。
【0067】RSA法 RSA暗号化法は、C=MD mod N型の計算の実行を必
要とする。ここでMは暗号化または解読すべきメッセー
ジで、NはN=P*Q(ここでPおよびQは素数であ
る)であるようなモジュロであって、DはD*E=1 m
od ((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+
【0068】このアルゴリズムは特に: −2つのモジュラリダクション、 −2つのモジュラ累乗操作、 −1つのモジュラ乗算 を実行する。本発明は: −D mod (P−1)およびD mod (Q−1)(ここ
で、P−1とQ−1は偶数パリティの数字である)、 −M mod PおよびM mod Q(ここで、PとQは奇数パ
リティの数字である) を計算するために利用される。
【0069】素数の検索 上記のRSA法は2つの素数PとQを決定することを要
求する。これらの数があまりに簡単に経験に基づいて決
定されてしまうのを防ぐために、非常に大きい数、例え
ば256 ビットにエンコードされた数を選択するのが望ま
しい。非常に大きな素数を選択するための周知の方法
は、ランダムにある数を選択して、この数と、多数(例
えば最初の100 個)の素数の積との間の最大公約数を決
定するというものである。この方法は、除法演算を必要
とし、従って回路1はその実施には適さない。
【0070】本発明はもう1つの方法を提案するもので
ある。ランダムに選択された数と最初の100 個(例え
ば)の素数の積の最大公約数を計算することはなくな
る。この方法で行なわれる操作は、最初の100 個の素数
のそれぞれを用いてランダムな数のモジュラリダクショ
ンを連続的に実行することである。この方法は、モジュ
ラリダクションを実行するのに必要は時間が短縮されな
い限りは実際には考えられない。本発明は、III に述べ
た新しいエラー訂正計算方法およびモジュラリダクショ
ン方法によって実現される時間の短縮によって、上記の
方法の実施を検討する上で利用可能なものである。ここ
では、kビット×1ワード(例えばk=32)のレジスタ
を形成するのが有利である。さらに、従来特許では、25
6 または512 ビットのレジスタのみが使用される。実際
にこれば、合理的な時間内で操作を行なうためには同一
のビットにエンコードされた素数を選択する必要がある
ことを意味するものである。従って、許可されていない
個人がこれらの数を検出しようと試みることに対してセ
キュリティ上の問題が生じる。
【0071】従って本出願人は、例えば変調可能なレジ
スタや、必要に応じて32、256 、(256 +n)、384 、
(384 +n)、512 、または(512 +n)個のセル(こ
こで、nは整数とする)を備えたレジスタを選択するこ
とによって、使用するレジスタを変更することを提案す
るものである。傾向としては512 、768 および1024ビッ
トにエンコードされたモジュロの値を選択するようにな
っている。上記に定義のような変調可能なレジスタを選
択することによって:モジュラ操作という一般的な意味
においては、処理すべきデータの有効サイズにより高い
柔軟性をもって適応することにより、レジスタ内でのシ
フトの数が最小限に抑えられ、
【0072】RSA暗号化の実行というより特定された
意味においては、PとQについて異なるサイズを選択す
ることが可能となる。例えば512 ビットにエンコードさ
れたモジュロN=P*Qとすることが望まれる場合に
は、例えばPを254 ビットに選択してQを258 ビットに
選択することが可能である。Pに関する計算には256 セ
ルのレジスタが使用され、Qに関する計算には256 +n
=288 セルのレジスタが使用されよう。従来特許の回路
では、Qに関する計算に512 セルのレジスタを使用しな
ければならなず、これは計算に要する時間という点で致
命的であろう。
【0073】本発明は、それが図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 8842−5J H04L 9/00 621Z

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 モンゴメリ法に従ってモジュラリダクシ
    ョンを実行するための方法であって、以下: −2進データ要素Cを、kビットのワードm’個にグル
    ープ分けされるc個のビットにエンコードし、但し、
    m’とkは整数であり、m’は、m’*k≧c>(m’
    −1)*kの関係を満足する、 −0でない2進データ要素Nをn個のビットにエンコー
    ドし、さらに、C mod Nを算出するために、Nに関連
    する少なくとも1つの2進データ要素J0 を算出するた
    めのステップを実行し、2f(C,N)の形を有する少なくと
    も1つの2進データ要素H(ここで、f(C,N)はC
    のサイズとNのパリティを表す整数とする)を算出する
    ためのステップを実行し、さらに、第1に、1つの直列
    入力と1つの並列入力と1つの直列出力とを備えた乗算
    回路の並列入力にCを入力し、第2に、同じ乗算回路の
    直列入力にHを入力するためのステップを実行すること
    を特徴とする方法。
  2. 【請求項2】 Nの最下位ビットが0である場合にC m
    od Nを算出するために、 E0− 2進データ要素J0 (N’)を算出する(ここ
    でN’はnビットにエンコードされた2進データ要素で
    あって、N’の最下位ビットは1であり、N=N’*2
    a (aは1以上の整数)である) E1− 2進データ要素H=2m'*k-a mod N’を算出
    する、 E3− m’*kビットにエンコードされたCを乗算回
    路の直列入力に入力し、nビットにエンコードされたH
    を同じ乗算回路の直列入力に入力して、データ要素P
    (C,H)N'=C*2-a mod N’を得る、 E4− 2a *P(C,H)N'=C mod Nを算出する
    ステップを実行することを特徴とする請求項1に記載の
    方法。
  3. 【請求項3】 P(C,H)N'=C*2-a mod N’を
    算出するために、 R1− パラメータHを第1のレジスタにロードして、
    モジュロN’を第2のレジスタにロードし、さらに第3
    のレジスタをゼロに初期化する(上記第3のレジスタの
    内容はSと表され、Sはnビットにエンコードされた可
    変の2進データであるとする) −R2− iと表示されるループを設定する(ここでs
    は1からm’まで変化し、それぞれi回目の反復が下記
    a)〜g)の操作を含む): a)Cのs番目のワードCs-1 を第4のレジスタから乗
    算回路の並列入力に転送する、 b)S(0)=0、S(s−1)を下記に定義のような
    いわゆるSの更新された値として、下記I〜Vによって
    X(s)=S(s−1)+H*Cs-1 の値を算出する: I−第1のレジスタの内容を直列−並列乗算回路の入力
    に向かって右にシフトさせ、同時に上記レジスタの出力
    をその入力に帰還させる、 II−HのビットにCs-1 を乗ずる、 III−第2のレジスタの内容を右にシフトさせ、同時に
    上記レジスタの出力をその入力に帰還させる、 IV−更新された値S(s−1)がN’よりも小さいなら
    ば、この更新された値をs−1番目の反復後に第3のレ
    ジスタに記憶される値として決定し、もし更新された値
    がN’よりも大きいならば、減算回路においてこの更新
    された値からN’をシリアルに減算し、それより得られ
    る値を更新された値S(s−1)とし、さらに V−第3のレジスタの内容を右にシフトさせて、更新さ
    れた値S(s−1)に乗算H*Cs-1 の値を1ビットず
    つ加える加算を行う、 c)X(s)の最下位ワード、X0 (s)にJ0 を乗
    じ、X0 (s)*J0 mod 2k =Y0 (s)の値を第4
    のレジスタに入力し、N’およびX(s)をkサイクル
    分だけ遅延させる、 d)下記I〜IIによってZ(s)=X(s)+Y
    0 (s)*N’の値を計算する: I−Y0 (s)に、kサイクル分遅延されたN’を乗じ
    る、さらに II−X(s)をY0 (s)*N’の値に1ビットずつ加
    える、e)Z(s)の最下位ワードを考慮せず、残りの
    ワード、つまりZ(s)/2k を第3のレジスタに記憶
    する、 f)Z(s)/2k をN’と1ビットずつ比較して、上
    記の方法で次の反復の更新された値S(s)を決定する
    (この比較は、Z(s)/2k とN’との1ビットずつ
    の減算を行なうことによって行われ、ここで、N’はさ
    らにkサイクル分だけ遅延されている)、 g)上記操作中の任意の時点でCのs番目のワードが第
    4のレジスタにロードされる、 R3− m’回目の反復で、Z(m’)の最下位ワード
    を無視し、残りのワード、つまりZ(m’)/2k を第
    1のレジスタに入力する、 R4− 最後の反復で第1のレジスタに記憶された結果
    を、必要な場合にはN’から減算された状態で出力す
    る、 R5− 結果を1ビットだけ左にシフトする、ステップ
    を実行することを特徴とする請求項2に記載の方法。
  4. 【請求項4】 Hを算出するために、 H1− モジュロN’を第1のレジスタにロードして、
    第2のレジスタを初期化する(第2のレジスタの内容は
    B(0)と表される)、 H2− 右にシフトさせることによって第1のレジスタ
    からN’を出力し、同時にl−aビットをその入力に帰
    還させる(lはモジュロNの有効ビット数である)、 H3− 下記の操作によって、nビットにエンコードさ
    れたデータ要素B(1)=2*(B(0)−N”)を算
    出し記憶する(ここでN”=N’*2n-l+a ): − 第1および第2のレジスタの内容を右にシフトする
    ことによって、N”とB(0)を出力する(第1のレジ
    スタの入力はその出力に接続されている)、 − N”とB(0)のビットを1ビットずつ減算する操
    作を行い、同時にR(0)=B(0)−N”と表される
    結果を1ユニットだけ左にシフトさせる、 − シフト後に、B(1)=2*R(0)で表される減
    算結果を第2のレジスタにロードする、 − B(1)とN”を1ビットずつ減算してB(1)≧
    N”であるかB(1)<N”であるかを決定する、 H4−インデックスiで示されるループを設定すること
    によって(iは1からt−nまでの整数である)、デー
    タ要素Hint =2t mod N”を算出する、 ここでt=n−l+a+u*k+(m’−u)*k/2
    r (rはk/2r が整数となるような整数であり、uは
    u*k≧l>(u−1)*kとなるような0以外の整数
    である)であり、それぞれのi回目の反復は下記の操作
    を含む: − B(i)<N”ならば、B(i)を1ユニットだけ
    シフトさせてB(i+1)とN”を1ビットずつ比較し
    た後、B(i+1)=2*(B(i)−0)=2*B
    (i)を第2のレジスタにロードする、 − そうでない場合には、N”およびB(i)を1ビッ
    トずつ減算し、同時に結果を1ユニットだけ左にシフト
    させてB(i+1)=2*(B(i)−N”)を第2の
    レジスタにロードし、さらにB(i+1)とN”を1ビ
    ットずつ比較する、 H5− B(t−n+1)≧N”ならば、B(t−n+
    1)とN”を1ビットずつ減算し、B(t−n+1)−
    N”を第2のレジスタにロードする、 H6− 第1および第2のレジスタでn−l+aビット
    だけ右シフトを行なう、 H7− r回のPfield 操作 Hint (j)=P(Hint (j−1),Hint (j−
    1))N' (ここでjは1からrまでのインデックスであって、H
    int (0)=B(t−n+1)*2l-n-a または(B
    (t−n+1)−N”)*2l-n-a である)、を実行す
    る、 H8− 1回のPfield 操作 P(Hint (r),2u*k-a )N’を行なうことによっ
    てパラメータHを算出する、ステップを実行することを
    特徴とする請求項2〜3のいずれか一項に記載の方法。
  5. 【請求項5】 C mod Nを算出するために、 E0− 2進データ要素J0 (N)を算出する、 E1− 2進データ要素H=2m'*k mod Nを算出す
    る、 E3− m’*kビットにエンコードされたCを乗算回
    路の直列入力に入力し、nビットにエンコードされたH
    を同じ乗算回路の並列入力に入力して、P(C,H)N
    =C mod Nを得る、ステップを実行することを特徴と
    する請求項1に記載の方法。
  6. 【請求項6】 P(C,N)N =C mod Nを算出する
    ために、 R1− パラメータHを第1のレジスタにロードして、
    モジュロN’を第2のレジスタにロードし、さらに第3
    のレジスタをゼロに初期化する(上記第3のレジスタの
    内容はSと表され、Sはnビットにエンコードされた可
    変の2進データであるとする) R2− iと表示されるループを設定する(ここでsは
    1からm’まで変化し、それぞれi回目の反復が下記
    a)〜g)の操作を含む): a)Cのs番目のワードCs-1 を第4のレジスタから乗
    算回路の並列入力に転送する、 b)S(0)=0、S(s−1)を下記に定義のような
    いわゆるSの更新された値として、下記I〜Vによって
    X(s)=S(s−1)+H*Cs-1 の値を算出する: I−第1のレジスタの内容を乗算回路の直列入力に向か
    って右にシフトさせ、同時に上記レジスタの出力をその
    入力に帰還させる、 II−HのビットにCs-1 を乗ずる、 III−第2のレジスタの内容を右にシフトさせ、同時に
    上記レジスタの出力をその入力に帰還させる、 IV−更新された値S(s−1)がNよりも小さいなら
    ば、この更新された値をs−1番目の反復後に第3のレ
    ジスタに記憶される値として決定し、もし更新された値
    がNよりも大きいならば、この更新された値からNをシ
    リアルに減算し、それより得られる値を更新された値S
    (s−1)とし、さらに V−第3のレジスタの内容を右にシフトさせて、更新さ
    れた値S(s−1)に乗算H*Cs-1 の値を1ビットず
    つ加える加算を行う、 c)X(s)の最下位ワード、X0 (s)にJ0 を乗
    じ、X0 (s)*J0 mod 2k =Y0 (s)の値を第4
    のレジスタに入力し、NおよびX(s)をkサイクル分
    だけ遅延させる、 d)下記I〜IIによってZ(s)=X(s)+Y
    0 (s)*Nの値を計算する: I−Y0 (s)に、kサイクル分遅延されたNを乗じ
    る、さらに II−X(s)をY0 (s)*Nの値に1ビットずつ加え
    る、 e)Z(s)の最下位ワードを考慮せず、残りのワー
    ド、つまりZ(s)/2k を第3のレジスタに記憶す
    る、 f)Z(s)/2k をNと1ビットずつ比較して、上記
    の方法で次の反復の更新された値S(s)を決定する
    (この比較は、Z(s)/2k とNとの1ビットずつの
    減算を行なうことによって行われ、ここで、Nはさらに
    kサイクル分だけ遅延されている)、 g)上記操作中の任意の時点でCのs番目のワードが第
    4のレジスタにロードされる、 R3− m’回目の反復で、Z(m’)の最下位ワード
    を無視し、残りのワード、つまりZ(m’)/2k を第
    1のレジスタに入力する、 R4− 最後の反復で第1のレジスタに記憶された結果
    を、必要な場合にはNから減算された状態で出力する、
    ステップを実行することを特徴とする請求項5に記載の
    方法。
  7. 【請求項7】 Hを算出するために、 H1− モジュロNを第1のレジスタにロードして、第
    2のレジスタを初期化する(第2のレジスタの内容はB
    (0)と表される)、 H2− 右にシフトさせることによって第1のレジスタ
    からNを出力し、同時にlビットをその入力に帰還させ
    る(lはNの有効ビット数である)、 H3− 下記の操作によって、nビットにエンコードさ
    れたデータ要素B(1)=2*(B(0)−N’)を算
    出し記憶する(ここでN’=N*2n-l ): − 第1および第2のレジスタの内容を右にシフトする
    ことによって、N’とB(0)を出力する(第1のレジ
    スタの入力はその出力に接続されている)、 − N’とB(0)のビットを1ビットずつ減算する操
    作を行い、同時にR(0)=B(0)−N’と表される
    結果を1ユニットだけ左にシフトさせる、 − シフト後に、B(1)=2*R(0)で表される減
    算結果を第2のレジスタにロードする、 − B(1)とN’を1ビットずつ減算してB(1)≧
    N’であるかB(1)<N’であるかを決定する、 H4−インデックスiで示されるループを設定すること
    によって(iは1からt−nまでの整数である)、デー
    タ要素Hint =2t mod N’を算出する、 ここでt=n−l+u*k+(m’−u)*k/2
    r (rはk/2r が整数となるような整数であり、uは
    u*k≧l>(u−1)*kとなるような0以外の整数
    である)であり、それぞれのi回目の反復は下記の操作
    を含む: − B(i)<N’ならば、B(i)を1ユニットだけ
    左にシフトさせてB(i+1)とN’を1ビットずつ比
    較した後、B(i+1)=2*(B(i)−0)=2*
    B(i)を第2のレジスタにロードする、 − そうでない場合には、N’およびB(i)を1ビッ
    トずつ減算し、同時に結果を1ユニットだけ左にシフト
    させてB(i+1)=2*(B(i)−N’)を第2の
    レジスタにロードし、さらにB(i+1)とN’を1ビ
    ットずつ比較する、 H5− B(t−n+1)≧N’ならば、B(t−n+
    1)とN’を1ビットずつ減算し、B(t−n+1)−
    N’を第2のレジスタにロードする、 H6− 第1および第2のレジスタでn−lビットだけ
    右シフトを行なう、 H7− r回のPfield 操作 Hint (j)=P(Hint (j−1),Hint (j−
    1))N' (ここでjは1からrまでのインデックスであって、H
    int (0)=B(t−n+1)*2l-n または(B(t
    −n+1)−N’)*2l-n である)、を実行すること
    によってパラメータHを算出する、ステップを実行する
    ことを特徴とする請求項5〜6のいずれか一項に記載の
    方法。
  8. 【請求項8】 Nの最下位ビットが0である時、C mod
    Nを算出するために、 E0− 2進データ要素J0 (N’)を算出する(ここ
    でN’はN’の最下位ビットが1となるようにnビット
    にエンコードされた2進データ要素であってN=N’*
    a (aは1以上の整数)である) E1− 1からm”−1まで変化するiについて、iと
    示されるループを設定する(ここでm”はm”+m≧
    m’>(m”−1)*mを満足する整数であって、mは
    n=m*kを満足し、i番目の反復がそれぞれ以下の操
    作を含む): −nビットにエンコードされた2進データ要素Hi =2
    (i+1)*n-a mod N’を算出する、 −乗算回路の直列入力にHi を入力し、C=σi i
    i*n であるようなCi を同じ乗算回路の並列入力に入
    力して、P(Ci ,Hi N'=Ci *2i*n-amod N’
    を得る、 −結果をシフトさせてCi *2i*n mod Nを得て、この
    結果を記憶する、 E2− i=0について、C0 <NならばC0 を記憶
    し、C0 ≧NならばC0−Nを記憶する、 E3− 記憶されたCi の値とC0 またはC0 −Nの値
    とのモジュラ加算を行なって所望の結果を算出する、ス
    テップを実行することを特徴とする請求項1に記載の方
    法。
  9. 【請求項9】 Hi =2(i+l)*n-a mod N’を算出する
    ために、 −H1 =22*n-a mod N’を算出する、 −i>1について: −Hi,p(i)=2n+2exp(p(i))*(n-a) mod N’を算出す
    る、ここでp(i)=Ent[log2(i*n/(n-a))]+1、Ent
    は" 整数部分" 演算子を意味する、 −r>nならば、2n-r mod N’を算出する、 −n−r≧0ならば、乗算回路の直列入力に、nビット
    にエンコードされたHi,p(i)を出力し(あるいはn−r
    <0ならば2n-r mod N’を出力し)、並行して、同じ
    乗算回路の並列入力に、nビットにエンコードされた2
    n-r を入力する(あるいはn−r<0ならばHi,p(i)
    入力する)。ステップを実行することを特徴とする請求
    項8に記載の方法。
  10. 【請求項10】 Nの最下位ビットが0である時、C m
    od Nを算出するために、 E0− 2進データ要素J0 (N’)を算出する(ここ
    でN’はN’の最下位ビットが1となるようにnビット
    にエンコードされた2進データ要素であってN=N’*
    a (aは1以上の整数)である) E1− 1からw−1まで変化するiについて、iと示
    されるループを設定する、ここでwはw*l≧c>(w
    −l)*lを満足する整数であって、lはNの有効ビッ
    ト数であり、i番目の反復がそれぞれ以下の操作を含
    む: −nビットにエンコードされた2進データ要素Hi =2
    n+i*l-a mod N’を算出する、 −乗算回路の直列入力にHi を入力し、C=Σi i
    i*l であるようなデータ要素Ci を同じ乗算回路の並
    列入力に入力して、P(Ci ,Hi N'=Ci*2
    i*l-a mod N’を得る、 −結果をシフトさせてCi *2i*l mod Nを得て、この
    結果を記憶する、 E2− i=0について、C0 <NならばC0 を記憶
    し、C0 ≧NならばC0−Nを記憶する、 E3− 記憶されたCi の値とC0 またはC0 −Nの値
    とのモジュラ加算を行なって所望の結果を算出する、ス
    テップを実行することを特徴とする請求項1に記載の方
    法。
  11. 【請求項11】 Hi =2n+i*l-a mod N’を算出する
    ために、 −H1 =2n+l-a mod N’を算出する、 −i>1について: −Hi,p(i)=2n+2exp(p(i))*(l-a) mod N’を算出す
    る(ここでp(i)=Ent[log2(i*l/(l-a))]+1、Ent
    は" 整数部分" 演算子を意味する)、 −r>nならば、2n-r mod N’を算出する、 −n−r≧0ならば、乗算回路の直列入力に、nビット
    にエンコードされたHi,p(i)を出力し(あるいはn−r
    <0ならば2n-r mod N’を出力し)、並行して、同じ
    乗算回路の並列入力に、nビットにエンコードされた2
    n-r を入力する(あるいはn−r<0ならばHi,p(i)
    入力する)。ステップを実行することを特徴とする請求
    項10に記載の方法。
JP7314752A 1994-11-08 1995-11-08 モンゴメリ法によるモジュラリダクションの実施方法 Expired - Fee Related JP2722411B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9413595A FR2726668B1 (fr) 1994-11-08 1994-11-08 Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
FR9413595 1994-11-08

Publications (2)

Publication Number Publication Date
JPH08263315A true JPH08263315A (ja) 1996-10-11
JP2722411B2 JP2722411B2 (ja) 1998-03-04

Family

ID=9468765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7314752A Expired - Fee Related JP2722411B2 (ja) 1994-11-08 1995-11-08 モンゴメリ法によるモジュラリダクションの実施方法

Country Status (5)

Country Link
US (1) US5764554A (ja)
EP (1) EP0712072B1 (ja)
JP (1) JP2722411B2 (ja)
DE (1) DE69506675T2 (ja)
FR (1) FR2726668B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2740330A1 (fr) * 1995-10-27 1997-04-30 Oreal Composition comprenant un systeme polymerique et utilisation dudit systeme
FR2740336A1 (fr) * 1995-10-27 1997-04-30 Oreal Composition comprenant un melange polymerique et utilisation dudit melange dans une composition notamment cosmetique
US8055696B2 (en) 2007-10-11 2011-11-08 Samsung Electronics Co., Ltd. Modular multiplication method, modular multiplier and cryptosystem having the same

Families Citing this family (42)

* 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
FR2743907B1 (fr) * 1996-01-18 1998-02-27 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
KR100218683B1 (ko) * 1996-12-04 1999-09-01 정선종 정보 보호용 모듈러 승산 장치
GB2321979B (en) * 1997-01-30 2002-11-13 Motorola Ltd Modular multiplication circuit
DE69826963T2 (de) * 1997-11-04 2005-11-17 Nippon Telegraph And Telephone Corp. Gerät für die modulare Inversion zur Sicherung von Information
FR2771525B1 (fr) * 1997-11-24 2002-10-11 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
FR2773231B1 (fr) * 1997-12-31 2000-02-25 Sgs Thomson Microelectronics Procede de production ameliore d'un parametre jo associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery
US6466668B1 (en) * 1998-01-28 2002-10-15 Hitachi, Ltd. IC card equipped with elliptical curve encryption processing facility
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
JP3542278B2 (ja) * 1998-06-25 2004-07-14 株式会社東芝 モンゴメリ・リダクション装置及び記録媒体
US6182104B1 (en) * 1998-07-22 2001-01-30 Motorola, Inc. Circuit and method of modulo multiplication
JP2000132376A (ja) * 1998-10-27 2000-05-12 Fujitsu Ltd 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
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
US6914983B2 (en) 2000-12-19 2005-07-05 International Business Machines Corporation Method for checking modular multiplication
US6978016B2 (en) * 2000-12-19 2005-12-20 International Business Machines Corporation Circuits for calculating modular multiplicative inverse
US6763365B2 (en) * 2000-12-19 2004-07-13 International Business Machines Corporation Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements
US6963977B2 (en) * 2000-12-19 2005-11-08 International Business Machines Corporation Circuits and methods for modular exponentiation
US6963645B2 (en) 2000-12-19 2005-11-08 International Business Machines Corporation Method for implementing the chinese remainder theorem
US6804696B2 (en) 2000-12-19 2004-10-12 International Business Machines Corporation Pipelining operations in a system for performing modular multiplication
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
US7233970B2 (en) * 2001-05-02 2007-06-19 Cipher Corporation Limited Computational method, system, and apparatus
US7218734B2 (en) * 2001-05-02 2007-05-15 Nciper Corporation Limited Ring arithmetic method, system, and apparatus
US6910095B2 (en) * 2001-10-01 2005-06-21 Britestream Networks, Inc. Memory request handling method for small discontiguous accesses to high-density memory devices
US7913261B2 (en) * 2001-05-02 2011-03-22 nCipher Corporation, Ltd. Application-specific information-processing method, system, and apparatus
US6738874B2 (en) 2001-05-02 2004-05-18 Layer N Networks, Inc. Controller architecture and strategy for small discontiguous accesses to high-density memory devices
US7233663B2 (en) * 2001-10-29 2007-06-19 Safenet, Inc. Key generation performance improvement
US8024392B2 (en) * 2002-02-16 2011-09-20 Ncipher Corporation Limited Computational method, system, and apparatus
US7043515B2 (en) * 2002-12-10 2006-05-09 Isic Corporation Methods and apparatus for modular reduction circuits
US20040120516A1 (en) * 2002-12-23 2004-06-24 International Business Machines Corporation Modular reduction method which recognizes special conditions
JP2004226674A (ja) * 2003-01-23 2004-08-12 Renesas Technology Corp 情報処理方法
JP4616169B2 (ja) 2003-07-31 2011-01-19 富士通株式会社 モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
FR2862454A1 (fr) * 2003-11-18 2005-05-20 Atmel Corp Methode de reduction modulaire aleatoire et equipement associe
FR2885711B1 (fr) * 2005-05-12 2007-07-06 Atmel Corp Procede et materiel modulaire et aleatoire pour la reduction polynomiale
US7873830B2 (en) * 2006-01-13 2011-01-18 International Business Machines Corporation Methods for coordinating access to memory from at least two cryptography secure processing units
CN100435091C (zh) * 2006-03-01 2008-11-19 成都卫士通信息产业股份有限公司 大数模幂系统的硬件高基实现方法
US7870395B2 (en) * 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US8532288B2 (en) 2006-12-01 2013-09-10 International Business Machines Corporation Selectively isolating processor elements into subsets of processor elements
US7890559B2 (en) * 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing
CA2741698C (en) * 2008-10-30 2016-06-07 Certicom Corp. Method and apparatus for modulus reduction
CN106681690B (zh) * 2015-11-07 2019-02-26 上海复旦微电子集团股份有限公司 基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5144574A (en) * 1989-01-30 1992-09-01 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
FR2679054A1 (fr) 1991-07-10 1993-01-15 Fortress U T 2000 Ltd Procede et appareil d'exponentiation sur gf(2n).
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
KR950015177B1 (ko) * 1993-12-06 1995-12-23 한국전기통신공사 사전 계산 테이블을 이용한 모듈로 리덕션 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2740330A1 (fr) * 1995-10-27 1997-04-30 Oreal Composition comprenant un systeme polymerique et utilisation dudit systeme
FR2740336A1 (fr) * 1995-10-27 1997-04-30 Oreal Composition comprenant un melange polymerique et utilisation dudit melange dans une composition notamment cosmetique
EP0775483A1 (fr) * 1995-10-27 1997-05-28 L'oreal Composition comprenant un système polymèrique et utilisation dudit système
US8055696B2 (en) 2007-10-11 2011-11-08 Samsung Electronics Co., Ltd. Modular multiplication method, modular multiplier and cryptosystem having the same

Also Published As

Publication number Publication date
DE69506675T2 (de) 1999-07-22
EP0712072A1 (fr) 1996-05-15
DE69506675D1 (de) 1999-01-28
FR2726668B1 (fr) 1997-01-10
EP0712072B1 (fr) 1998-12-16
JP2722411B2 (ja) 1998-03-04
FR2726668A1 (fr) 1996-05-10
US5764554A (en) 1998-06-09

Similar Documents

Publication Publication Date Title
JPH08263315A (ja) モンゴメリ法によるモジュラリダクションの実施方法
JP2722413B2 (ja) モンゴメリ法によるモジュラ乗算の実施方法
US10817262B2 (en) Reduced and pipelined hardware architecture for Montgomery Modular Multiplication
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
JP4870932B2 (ja) 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
Walter Systolic modular multiplication
US6397241B1 (en) Multiplier cell and method of computing
CN1503937B (zh) 扩展精度累加器
US6795553B1 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
EP1014274A1 (en) Neuroprocessor, device for calculating saturation functions, calculation device and adder
WO1998048345A1 (en) Arithmetic processor
US5261001A (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
US6917956B2 (en) Apparatus and method for efficient modular exponentiation
JP2722412B2 (ja) モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法
Gutub et al. Efficient scalable VLSI architecture for Montgomery inversion in GF (p)
US6341299B1 (en) Modular arithmetic coprocessor enabling the performance of non-modular operations at high speed
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
GB2352309A (en) A system for performing modular multiplication
US6424987B1 (en) Method for the implementation of a specific modular multiplication operation relating to the montgomery method
US6163790A (en) Modular arithmetic coprocessor comprising an integer division circuit
US5777916A (en) Method for the production of an error correction parameter associated with the implementation of modular operations according to the montgomery method
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
US5912904A (en) Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method
US7590235B2 (en) Reduction calculations in elliptic curve cryptography
KR100481586B1 (ko) 모듈러 곱셈 장치

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