JPH08339310A - モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法 - Google Patents
モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法Info
- Publication number
- JPH08339310A JPH08339310A JP7314753A JP31475395A JPH08339310A JP H08339310 A JPH08339310 A JP H08339310A JP 7314753 A JP7314753 A JP 7314753A JP 31475395 A JP31475395 A JP 31475395A JP H08339310 A JPH08339310 A JP H08339310A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- register
- int
- circuit
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic 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)
- Detection And Correction Of Errors (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】
【課題】 モンゴメリ法によるモジュラリダクションの
実施方法 【解決手段】 2進エラー訂正パラメータH=22*m*k
mod Nを算出するために、モジュロNを第1のnビット
のレジスタ(n=m*k)にロードして、第2のnビッ
トのレジスタをB(0)=0に初期化する。次に、B
(0)とNを1ビットずつ減算し、R(0)と表される
上記1ビット単位の減算の結果を1ユニットだけ左にシ
フトさせ、B(1)とNを比較することによって、デー
タ要素B(1)=2*(B(0)−N)を算出し記憶す
る。1〜vの整数であるiについて: B(i)<Nならば、B(i+1)=2*(B(i)−
0)、そうでない場合には、B(i+1)=2*(B
(i)−N)、の処理操作を実行することによって、デ
ータ要素Hint =2n+V mod Nを算出し、更にB(i+
1)とNを1ビットずつ比較する。 p回のPfield 操作 Hint (j)=P(Hint (j−1),Hint (j−
1))Nを実行する。
実施方法 【解決手段】 2進エラー訂正パラメータH=22*m*k
mod Nを算出するために、モジュロNを第1のnビット
のレジスタ(n=m*k)にロードして、第2のnビッ
トのレジスタをB(0)=0に初期化する。次に、B
(0)とNを1ビットずつ減算し、R(0)と表される
上記1ビット単位の減算の結果を1ユニットだけ左にシ
フトさせ、B(1)とNを比較することによって、デー
タ要素B(1)=2*(B(0)−N)を算出し記憶す
る。1〜vの整数であるiについて: B(i)<Nならば、B(i+1)=2*(B(i)−
0)、そうでない場合には、B(i+1)=2*(B
(i)−N)、の処理操作を実行することによって、デ
ータ要素Hint =2n+V mod Nを算出し、更にB(i+
1)とNを1ビットずつ比較する。 p回のPfield 操作 Hint (j)=P(Hint (j−1),Hint (j−
1))Nを実行する。
Description
【0001】
【発明の属する技術分野】本発明は、モンゴメリ法によ
るモジュラ操作の実行に伴うエラー訂正パラメータの算
出方法に関するものである。この方法は、GF(2n )
で表される有限領域(ガロア体)において除法を行わず
にモジュラ計算を行うことを可能にするものである。
るモジュラ操作の実行に伴うエラー訂正パラメータの算
出方法に関するものである。この方法は、GF(2n )
で表される有限領域(ガロア体)において除法を行わず
にモジュラ計算を行うことを可能にするものである。
【0002】
【従来の技術】従来、GF(2n )でのモジュラ操作
は、メッセージの認証、ユーザの確認およびキーの交換
といった用途における暗号法に使用される。そのような
用途の例は、例えばフランス国特許出願(公開番号2 67
9 054 号)に記載されている。そのような用途のために
開発された集積回路が市販されている。例としてSGS-TH
OMSON MICROELECTRONICS S.A. 製のST16CF54という
製品を挙げることができる。この製品は中央演算処理ユ
ニットと演算コプロセッサとを備え、モジュラ計算の実
行を目的としている。使用するコプロセッサは、モンゴ
メリ法を用いることによってモジュラ操作の処理を可能
にするものである。これは欧州特許出願(公開番号第0
601 907 A2号)の対象となっており、図1(この図は上
記欧州特許出願の図2に相当する)に具体的に示されて
いる。
は、メッセージの認証、ユーザの確認およびキーの交換
といった用途における暗号法に使用される。そのような
用途の例は、例えばフランス国特許出願(公開番号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ビットにエンコードされたP(A, B)N で
表される2進データ要素を、P(A,B)N =A*B*
I mod N(ここでIはI=2-n mod Nとなるようなn
ビットにエンコードされた2進データ要素)となるよう
に算出するというものである。そのために、データ要素
はkビットのワードm個にエンコードされており、m*
k=nで、データ要素AとBのワードが、直列入力と並
列入力と直列出力とを有する乗算回路に入力されるもの
と仮定する。上記の欧州特許出願に記載のコプロセッサ
においては、k=32でm=8または16である。
自然数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進データ要素)となるよう
に算出するというものである。そのために、データ要素
はkビットのワードm個にエンコードされており、m*
k=nで、データ要素AとBのワードが、直列入力と並
列入力と直列出力とを有する乗算回路に入力されるもの
と仮定する。上記の欧州特許出願に記載のコプロセッサ
においては、k=32でm=8または16である。
【0004】この回路は特に、モジュラ乗算A*B mod
Nの結果を算出するために使用される。この観点か
ら、図1に記載の回路は以下のステップを含む方法を実
行するために使用される: 1.パラメータH(H=22*n mod N)とkビットにエ
ンコードされたパラメータJ0 (J0 =−N0 -1 mod
2k で、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)のステップを
含む):
Nの結果を算出するために使用される。この観点か
ら、図1に記載の回路は以下のステップを含む方法を実
行するために使用される: 1.パラメータH(H=22*n mod N)とkビットにエ
ンコードされたパラメータJ0 (J0 =−N0 -1 mod
2k で、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)被乗数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−HのビットにAi-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)に乗算B*A
i-1 の値を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−HのビットにAi-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)に乗算B*A
i-1 の値を1ビットずつ加える加算を行う
【0006】c)第2の直並列乗算回路20でX(i)の
最下位ワード、X0 (i)にJ0 を乗じ、X0 (i)*
J0 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サイクル分だけ遅延されている)、
最下位ワード、X0 (i)にJ0 を乗じ、X0 (i)*
J0 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.ステップ3および4を繰り返すが、その際Bの代わ
りにZ(m)/2k を、Aの代わりにHを用い、Z
(m)/2k または(Z(m)/2k )−Nは第3の直
列減算回路27を介して乗算回路19に入力される(Z
(m)/2k ≧Nならば)。 6.最後の反復でレジスタ10に記憶された結果を、必要
ならばNから減算された状態で出力する。
i番目のワードがレジスタ16にロードされる。 4.m回目の反復で、Z(m)の最下位ワードを無視
し、残りのワード、つまりZ(m)/2k をレジスタ10
に入力する。 5.ステップ3および4を繰り返すが、その際Bの代わ
りにZ(m)/2k を、Aの代わりにHを用い、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を合わせたステップのた
め、および第2にはステップ5のためのm*(n+2*
k+x)サイクル(xは整数)、 −ステップ6のためのnサイクル。 実際、xは回路の初期化の関数であって、つまり、回路
の一貫した動作を確実とするための(例えはマルチプレ
クサの)制御信号の設定の関数である。実際、x=7で
あると考えることができる。
ロック信号の周期をサイクルと呼ぶならば、モジュラ乗
算を処理するのに必要な時間は主に以下のように分ける
ことができる: −Hを計算するためのn*(n+1)サイクル、 −ステップ2のためのnサイクル、 −第1にステップ3および4を合わせたステップのた
め、および第2にはステップ5のためのm*(n+2*
k+x)サイクル(xは整数)、 −ステップ6のためのnサイクル。 実際、xは回路の初期化の関数であって、つまり、回路
の一貫した動作を確実とするための(例えはマルチプレ
クサの)制御信号の設定の関数である。実際、x=7で
あると考えることができる。
【0009】第1のステップに関しては、パラメータJ
0 の計算は中央処理ユニットによって行なわれる(ソフ
トウェア法)。Hはレジスタ16のサイズと、ループ内で
このレジスタが使用される回数との関数であると示すこ
とができる。H=22*n mod Nである。このパラメータ
はエラー訂正パラメータである。実際、ステップ4では
A*B*I(I=2-n mod N)という形の結果が算出
される。H*I2 =1 mod Nである。このことによっ
て、上記のモジュラ乗算方法のステップ7において正確
な結果、つまりモジュラ乗算A*B mod Nの結果に等
しい結果が得られるようになる。更にHの計算は、図2
を参照しながら以下に説明する方法においてはコプロセ
ッサによって行われる。図2は上記の欧州特許出願の図
9に相当する。Hを計算するには、以下のような操作が
行われる(上記欧州特許第20頁47行〜25頁52行を参
照):
0 の計算は中央処理ユニットによって行なわれる(ソフ
トウェア法)。Hはレジスタ16のサイズと、ループ内で
このレジスタが使用される回数との関数であると示すこ
とができる。H=22*n mod Nである。このパラメータ
はエラー訂正パラメータである。実際、ステップ4では
A*B*I(I=2-n mod N)という形の結果が算出
される。H*I2 =1 mod Nである。このことによっ
て、上記のモジュラ乗算方法のステップ7において正確
な結果、つまりモジュラ乗算A*B mod Nの結果に等
しい結果が得られるようになる。更にHの計算は、図2
を参照しながら以下に説明する方法においてはコプロセ
ッサによって行われる。図2は上記の欧州特許出願の図
9に相当する。Hを計算するには、以下のような操作が
行われる(上記欧州特許第20頁47行〜25頁52行を参
照):
【0010】1.レジスタ12にNをロードしてレジスタ
10をB(0)=0に初期化し、 2.同時に: −B(0)とNを右にシフトさせて直列減算器27で1ビ
ットずつ減算して、結果R(0)=B(0)−N mod
2n を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=22*n mod Nである。
10をB(0)=0に初期化し、 2.同時に: −B(0)とNを右にシフトさせて直列減算器27で1ビ
ットずつ減算して、結果R(0)=B(0)−N mod
2n を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=22*n mod Nである。
【0011】
【発明が解決しようとする課題】本出願人は、モジュラ
操作の実行のために必要な時間を短縮するために、図1
に示したコプロセッサによる該操作の実行を改良する試
みを行なった。より特定するならば、本出願人はエラー
訂正パラメータHの計算に用いられる方法を改良する試
みを行なった。
操作の実行のために必要な時間を短縮するために、図1
に示したコプロセッサによる該操作の実行を改良する試
みを行なった。より特定するならば、本出願人はエラー
訂正パラメータHの計算に用いられる方法を改良する試
みを行なった。
【0012】
【課題を解決するための手段】本発明は、2進数のエラ
ー訂正パラメータH=22*m*k mod N(Nはそれぞれk
ビットよりなるワードm個にエンコードされたモジュロ
と呼ばれる2進データ要素である)を算出するための方
法を提案するものであって、該方法は下記のステップ1
〜4を含む。 1.モジュロNを第1のnビットのレジスタ(n=m*
k)にロードして、第2のnビットのレジスタをゼロに
初期化し(第2のレジスタの内容はB(0)と表され
る)、 2.下記の操作によって、nビットにエンコードされた
データ要素B(1)=2*(B(0)−N)を算出し記
憶する: − 第1および第2のレジスタで右シフトを行って、2
つのレジスタの内容を1ビットずつ減算し、R(0)と
表される上記1ビット単位の減算の結果を1ユニットだ
け左にシフトさせ、 − シフト後、B(1)と表される減算結果を第2のレ
ジスタにロードし、 − B(1)とNを比較する、
ー訂正パラメータH=22*m*k mod N(Nはそれぞれk
ビットよりなるワードm個にエンコードされたモジュロ
と呼ばれる2進データ要素である)を算出するための方
法を提案するものであって、該方法は下記のステップ1
〜4を含む。 1.モジュロNを第1のnビットのレジスタ(n=m*
k)にロードして、第2のnビットのレジスタをゼロに
初期化し(第2のレジスタの内容はB(0)と表され
る)、 2.下記の操作によって、nビットにエンコードされた
データ要素B(1)=2*(B(0)−N)を算出し記
憶する: − 第1および第2のレジスタで右シフトを行って、2
つのレジスタの内容を1ビットずつ減算し、R(0)と
表される上記1ビット単位の減算の結果を1ユニットだ
け左にシフトさせ、 − シフト後、B(1)と表される減算結果を第2のレ
ジスタにロードし、 − B(1)とNを比較する、
【0013】3.インデックスiで示されるループを設
定することによって(iは1からvの整数で、i回目の
反復はそれぞれ以下の操作を含む)、nビットにエンコ
ードされたデータ要素Hint =2n+V mod Nを算出する
(ここで、vはv=(m*k)/2p (pは整数)であ
るような整数とする): − B(i)<Nならば、B(i)を1ユニットだけ左
にシフトさせた後、B(i+1)=2*B(i)を第2
のレジスタにロードし、更にB(i)とNを1ビットず
つ比較する、 − そうでない場合には、NおよびB(i)を1ビット
ずつ減算し、同時に結果を1ユニットだけ左にシフトさ
せてB(i+1)=2*(B(i)−N)を第2のレジ
スタにロードし、更にB(i+1)とNを1ビットずつ
比較する、 4.p回の操作Hint (j)=P(Hint (j−1),
Hint (j−1))Nを実行することによってパラメー
タHを算出する(jは1からpのインデックスであり、
Hint (0)=B(v+1)またはB(v+1)−Nで
ある)。
定することによって(iは1からvの整数で、i回目の
反復はそれぞれ以下の操作を含む)、nビットにエンコ
ードされたデータ要素Hint =2n+V mod Nを算出する
(ここで、vはv=(m*k)/2p (pは整数)であ
るような整数とする): − B(i)<Nならば、B(i)を1ユニットだけ左
にシフトさせた後、B(i+1)=2*B(i)を第2
のレジスタにロードし、更にB(i)とNを1ビットず
つ比較する、 − そうでない場合には、NおよびB(i)を1ビット
ずつ減算し、同時に結果を1ユニットだけ左にシフトさ
せてB(i+1)=2*(B(i)−N)を第2のレジ
スタにロードし、更にB(i+1)とNを1ビットずつ
比較する、 4.p回の操作Hint (j)=P(Hint (j−1),
Hint (j−1))Nを実行することによってパラメー
タHを算出する(jは1からpのインデックスであり、
Hint (0)=B(v+1)またはB(v+1)−Nで
ある)。
【0014】
【発明の実施の形態】従って本発明は、第1に周知の方
法よりも少ない回数の減算を行い、第2にPfield 操作
を行うことによってHを計算することを提案するもので
ある。従来技術の方法では、Hを計算するのに必要な時
間はn*(n+1)サイクルであった。本発明の方法で
は、計算時間はn*(v+1)+p*m*(n+2*k
+x)サイクルである。m=16の場合には、従来の方法
では262 656 サイクルが必要であった。例えばv=2*
m=32、つまりp=4で、x=7と仮定すれば、本発明
の方法で必要なサイクルはわずか54 208サイクルであ
り、時間が約80%節約される。パラメータHを算出する
のに必要な時間は当然vの関数である。v=2*m、つ
まりp=log2(k) −1を選択することは、該方法を最適
化することに相当する。つまり、既存の回路に比べて、
Hの算出に必要な時間を最短とすることに相当する。
法よりも少ない回数の減算を行い、第2にPfield 操作
を行うことによってHを計算することを提案するもので
ある。従来技術の方法では、Hを計算するのに必要な時
間はn*(n+1)サイクルであった。本発明の方法で
は、計算時間はn*(v+1)+p*m*(n+2*k
+x)サイクルである。m=16の場合には、従来の方法
では262 656 サイクルが必要であった。例えばv=2*
m=32、つまりp=4で、x=7と仮定すれば、本発明
の方法で必要なサイクルはわずか54 208サイクルであ
り、時間が約80%節約される。パラメータHを算出する
のに必要な時間は当然vの関数である。v=2*m、つ
まりp=log2(k) −1を選択することは、該方法を最適
化することに相当する。つまり、既存の回路に比べて、
Hの算出に必要な時間を最短とすることに相当する。
【0015】更に、公知の方法で定義されたHの算出お
よび上記の新規方法によるHの算出では、モジュロの最
上位ビットは1であるものと仮定される。これは明らか
にモジュロの選択を制限するものである。従って本出願
人は、モジュロNがnよりも小さい数であるl個の有効
ビットにエンコードされている場合、換言すればモジュ
ロNの最も下位のn−l個のビットが0であるように選
択される場合にまでHの計算を拡張することを提案する
ものである。
よび上記の新規方法によるHの算出では、モジュロの最
上位ビットは1であるものと仮定される。これは明らか
にモジュロの選択を制限するものである。従って本出願
人は、モジュロNがnよりも小さい数であるl個の有効
ビットにエンコードされている場合、換言すればモジュ
ロNの最も下位のn−l個のビットが0であるように選
択される場合にまでHの計算を拡張することを提案する
ものである。
【0016】従って、本発明では更に、2進エラー訂正
パラメータH=22*m*k mod Nを算出するための方法を
提案するものであって、ここでNはそれぞれkビットよ
りなるワードm個にエンコードされたモジュロ要素と呼
ばれる2進データ要素であり、Nの最も上位のn−l個
のビットはゼロであり、n=m*kおよびl<nであ
り、上記方法は下記1〜7のステップを含む: 1.モジュロNを第1のnビットのレジスタ(n=m*
k)にロードして、第2のnビットのレジスタをゼロに
初期化する(第2のレジスタの内容はB(0)と表され
る)、 2.第1のレジスタを、その入力に帰還させた状態でl
ビットだけ右にシフトさせる、 3.下記の操作によって、nビットにエンコードされた
データ要素B(1)=2*(B(0)−N’)を算出し
記憶する: − 第1および第2のレジスタで右シフトを行って、2
つのレジスタの内容を1ビットずつ減算し、R(0)と
表される上記1ビット単位の減算の結果を1ユニットだ
け左にシフトさせ、 − シフト後、B(1)と表される減算結果を第2のレ
ジスタにロードし、 − B(1)とN’を比較する、
パラメータH=22*m*k mod Nを算出するための方法を
提案するものであって、ここでNはそれぞれkビットよ
りなるワードm個にエンコードされたモジュロ要素と呼
ばれる2進データ要素であり、Nの最も上位のn−l個
のビットはゼロであり、n=m*kおよびl<nであ
り、上記方法は下記1〜7のステップを含む: 1.モジュロNを第1のnビットのレジスタ(n=m*
k)にロードして、第2のnビットのレジスタをゼロに
初期化する(第2のレジスタの内容はB(0)と表され
る)、 2.第1のレジスタを、その入力に帰還させた状態でl
ビットだけ右にシフトさせる、 3.下記の操作によって、nビットにエンコードされた
データ要素B(1)=2*(B(0)−N’)を算出し
記憶する: − 第1および第2のレジスタで右シフトを行って、2
つのレジスタの内容を1ビットずつ減算し、R(0)と
表される上記1ビット単位の減算の結果を1ユニットだ
け左にシフトさせ、 − シフト後、B(1)と表される減算結果を第2のレ
ジスタにロードし、 − B(1)とN’を比較する、
【0017】4.インデックスiで示されるループを設
定することによって(iは1からn−l+vの整数で、
i回目の反復はそれぞれ以下の操作を含む)、nビット
にエンコードされたデータ要素Hint =2n+n-l+v mod
N’を算出する(ここで、vはv=(m*k)/2
p (pは整数)であるような整数とする): − B(i)<N’ならば、B(i)を1ユニットだけ
左にシフトさせた後、B(i+1)=2*B(i)を第
2のレジスタにロードし、更にB(i+1)とN’を1
ビットずつ比較する、 − そうでない場合には、N’およびB(i)を1ビッ
トずつ減算し、同時に結果を1ユニットだけ左にシフト
させてB(i+1)=2*(B(i)−N’)を第2の
レジスタにロードし、更にB(i+1)とN’を1ビッ
トずつ比較する、
定することによって(iは1からn−l+vの整数で、
i回目の反復はそれぞれ以下の操作を含む)、nビット
にエンコードされたデータ要素Hint =2n+n-l+v mod
N’を算出する(ここで、vはv=(m*k)/2
p (pは整数)であるような整数とする): − B(i)<N’ならば、B(i)を1ユニットだけ
左にシフトさせた後、B(i+1)=2*B(i)を第
2のレジスタにロードし、更にB(i+1)とN’を1
ビットずつ比較する、 − そうでない場合には、N’およびB(i)を1ビッ
トずつ減算し、同時に結果を1ユニットだけ左にシフト
させてB(i+1)=2*(B(i)−N’)を第2の
レジスタにロードし、更にB(i+1)とN’を1ビッ
トずつ比較する、
【0018】5.B(n−l+v+1)≧N’ならば、
B(n−l+v+1)とN’を1ビットずつ減算してB
(n−l+v+1)−N’を第2のレジスタにロードす
る、 6.第1および第2のレジスタでn−lビットだけ右シ
フトを行う、 7.p回の操作Hint (j)=P(Hint (j−1),
Hint (j−1))N'を実行することによってパラメー
タHを算出する(ここでjは1からpのインデックスで
あってHint (0)=B(n−l+v+1)*2l-n ま
たは(B(n−l+v+1)−N’)*2l-n であ
る)。 上記の方法と同様に、v=2*m、つまりp=log
2(k)−1であると仮定するのが有利である。以下、
添付図を参照して本発明の実施例を説明することによ
り、本発明がより明確に理解され、その他の特徴および
利点が明らかとなろう。以下の実施例は例示のためのも
のであって、本発明の範囲を限定するものではない。
B(n−l+v+1)とN’を1ビットずつ減算してB
(n−l+v+1)−N’を第2のレジスタにロードす
る、 6.第1および第2のレジスタでn−lビットだけ右シ
フトを行う、 7.p回の操作Hint (j)=P(Hint (j−1),
Hint (j−1))N'を実行することによってパラメー
タHを算出する(ここでjは1からpのインデックスで
あってHint (0)=B(n−l+v+1)*2l-n ま
たは(B(n−l+v+1)−N’)*2l-n であ
る)。 上記の方法と同様に、v=2*m、つまりp=log
2(k)−1であると仮定するのが有利である。以下、
添付図を参照して本発明の実施例を説明することによ
り、本発明がより明確に理解され、その他の特徴および
利点が明らかとなろう。以下の実施例は例示のためのも
のであって、本発明の範囲を限定するものではない。
【0019】
【実施例】図1はモジュラ操作を処理するための回路1
を示す。この回路は以下のものを備えている: −直列入力および直列出力を備えた3つのシフトレジス
タ10、11および12これらのレジスタはそれぞれ同一n個
のセルを有し、n=m*kである。これらのレジスタ
は、例えばn/2個のセルを有するレジスタに分割可能
なものであってよく、レジスタ10および12についてはk
ビットのレジスタに分割可能なものであってもよい。 −マルチプレクサ13、14および15 これらのマルチプレクサはそれぞれレジスタ10、11およ
び12の前に置かれている。マルチプレクサは、レジスタ
が更に細分化されているならば、細分化された個々のレ
ジスタの前にも配置される。
を示す。この回路は以下のものを備えている: −直列入力および直列出力を備えた3つのシフトレジス
タ10、11および12これらのレジスタはそれぞれ同一n個
のセルを有し、n=m*kである。これらのレジスタ
は、例えばn/2個のセルを有するレジスタに分割可能
なものであってよく、レジスタ10および12についてはk
ビットのレジスタに分割可能なものであってもよい。 −マルチプレクサ13、14および15 これらのマルチプレクサはそれぞれレジスタ10、11およ
び12の前に置かれている。マルチプレクサは、レジスタ
が更に細分化されているならば、細分化された個々のレ
ジスタの前にも配置される。
【0020】−それぞれ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。
スタ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。
【0021】更に詳細については、上記の欧州特許出願
(EP−0 601 907 A2)、特に該特許の図3とそれに関
する記載(第15頁第54行から第16頁第13行まで、および
第17頁第50行から第18頁第55行まで)を参照されたい。
図2は以下のものを備えた回路を示す: −2つのシフトレジスタ10および12、減算回路27、マル
チプレクサ36 −2つの入力を有する2つのマルチプレクサ41および42 これらのマルチプレクサの出力はそれぞれレジスタ10お
よび12の入力に接続されている −直列減算回路40 −2つの入力を有するNANDゲート43 −比較結果を記憶するための記憶回路44。
(EP−0 601 907 A2)、特に該特許の図3とそれに関
する記載(第15頁第54行から第16頁第13行まで、および
第17頁第50行から第18頁第55行まで)を参照されたい。
図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の入力に接続する)。
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の回路はnビット
にエンコードされた2進データ要素であるエラー訂正パ
ラメータHを算出するために使用される。H=22*n mo
d Nである。モジュロNはl個(l≦n)の有効ビット
にエンコードされている、つまりモジュロNの最も上位
のn−l個のビットは論理状態0であると仮定する。
出力とグランドとにそれぞれ接続されている。マルチプ
レクサ42の入力は、レジスタ12の出力と、2進データ要
素(実際にはモジュロN)を直列で受けるための入力端
子とにそれぞれ接続されている。図2の回路はnビット
にエンコードされた2進データ要素であるエラー訂正パ
ラメータHを算出するために使用される。H=22*n mo
d Nである。モジュロNはl個(l≦n)の有効ビット
にエンコードされている、つまりモジュロNの最も上位
のn−l個のビットは論理状態0であると仮定する。
【0024】Hの計算は下記ステップ1〜4を必要とす
る:l=nならば: 1− Nをレジスタ12にロードして、同時にB(0)=
0(0であるn個のビット)をレジスタ10にロードし、
更に回路44を初期化する(つまりSC=0となるように
信号RESを発生させる)、 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を発生
させ、そうでない場合にはSC=1を発生させる、
る:l=nならば: 1− Nをレジスタ12にロードして、同時にB(0)=
0(0であるn個のビット)をレジスタ10にロードし、
更に回路44を初期化する(つまりSC=0となるように
信号RESを発生させる)、 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を発生
させ、そうでない場合にはSC=1を発生させる、
【0025】3− インデックスiで示されるループを
設定する。ここでiは1からvまでの整数であってvは
v=(m*k)/2p (pは整数)を満足するような整
数であり、i番目の反復はそれぞれステップ2の操作の
再開であって、下記のように表される: − B(i)<Nならば(SC=1)、B(i+1)=
2*B(i)=2*(B(i)−0)をレジスタ10にロ
ードする、 − そうでない場合(SC=0)には、B(i+1)=
2*(B(i)−N)を第2のレジスタにロードする。
設定する。ここでiは1からvまでの整数であってvは
v=(m*k)/2p (pは整数)を満足するような整
数であり、i番目の反復はそれぞれステップ2の操作の
再開であって、下記のように表される: − B(i)<Nならば(SC=1)、B(i+1)=
2*B(i)=2*(B(i)−0)をレジスタ10にロ
ードする、 − そうでない場合(SC=0)には、B(i+1)=
2*(B(i)−N)を第2のレジスタにロードする。
【0026】最終的に、レジスタ10にはB(v+1)、
レジスタ11にはNが存在する。 4− 図1の回路を用いてp回のPfield 操作を行う、
ここで Hint (0)=B(v+1)あるいは、B(v+1)≧
NならばB(v+1)−N、 1〜pのjについて: Hint (j)=P(Hint (j−1),Hint (j−
1))N を算出する。 H=Hint (p)である。 図1の回路を用いたPfield 操作の実行については、上
記の欧州特許出願第19頁、5行〜第20頁45行を参照され
たい。
レジスタ11にはNが存在する。 4− 図1の回路を用いてp回のPfield 操作を行う、
ここで Hint (0)=B(v+1)あるいは、B(v+1)≧
NならばB(v+1)−N、 1〜pのjについて: Hint (j)=P(Hint (j−1),Hint (j−
1))N を算出する。 H=Hint (p)である。 図1の回路を用いたPfield 操作の実行については、上
記の欧州特許出願第19頁、5行〜第20頁45行を参照され
たい。
【0027】下記のような方法を実行する: 1.kビットにエンコードされたパラメータJ0 の計算
を行い(J0 =−N0 -1 mod 2k でN0 はモジュロNの
最下位ワードである)、J0 をkビットのレジスタ17に
記憶する。 2.レジスタ11をゼロに初期化する(このレジスタの内
容はSと表され、Sはnビットにエンコードされた可変
の2進データ要素である)。 3.インデックスiのループを設定し(iは1からmま
で変化し、i回目の反復はそれぞれ下記の操作a)〜
g)を含む): a)i=1ならば、レジスタ10の出力を入力に帰還させ
た状態でレジスタ10で右シフトを行い、B(v+1)ま
たはB(v+1)−N(減算回路27を介して)の最初の
ワードをレジスタ16およびフリップフロップ回路21へと
転送し、i>1ならば、B(v+1)またはB(v+
1)−Nのi番目のワードBi-1 をレジスタ16からフリ
ップフロップ回路21へ転送し、 b)S(0)=0、S(i−1)を下記に定義のような
いわゆるSの更新された値として、下記I〜Vによって
X(i)=S(i−1)+B*Bi-1 の値を算出する:
を行い(J0 =−N0 -1 mod 2k でN0 はモジュロNの
最下位ワードである)、J0 をkビットのレジスタ17に
記憶する。 2.レジスタ11をゼロに初期化する(このレジスタの内
容はSと表され、Sはnビットにエンコードされた可変
の2進データ要素である)。 3.インデックスiのループを設定し(iは1からmま
で変化し、i回目の反復はそれぞれ下記の操作a)〜
g)を含む): a)i=1ならば、レジスタ10の出力を入力に帰還させ
た状態でレジスタ10で右シフトを行い、B(v+1)ま
たはB(v+1)−N(減算回路27を介して)の最初の
ワードをレジスタ16およびフリップフロップ回路21へと
転送し、i>1ならば、B(v+1)またはB(v+
1)−Nのi番目のワードBi-1 をレジスタ16からフリ
ップフロップ回路21へ転送し、 b)S(0)=0、S(i−1)を下記に定義のような
いわゆるSの更新された値として、下記I〜Vによって
X(i)=S(i−1)+B*Bi-1 の値を算出する:
【0028】I−レジスタ10の内容を第1の直列−並列
乗算回路19の入力に向かって右にシフトさせ、同時にレ
ジスタ10の出力をその入力に帰還させ、 II−BのビットにBi-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*B
i-1 の値を1ビットずつ加える加算を行う。
乗算回路19の入力に向かって右にシフトさせ、同時にレ
ジスタ10の出力をその入力に帰還させ、 II−BのビットにBi-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*B
i-1 の値を1ビットずつ加える加算を行う。
【0029】c)直列−並列乗算回路20でX(i)の最
下位ワード、X0 (i)にJ0 を乗じ、X0 (i)*J
0 mod 2k =Y0 (i)の値をレジスタ18に入力し、同
時に遅延回路32で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の値に1ビットずつ加える、 e)Z(i)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(i)/2k をレジスタ11に記憶する、 f)Z(i)/2k をNと1ビットずつ比較して、続い
て上記の方法で更新された値S(i)を決定する(この
比較は、第2の直列減算回路29でZ(i)/2k とN
(回路33で更にkサイクル分だけ遅延されている)とを
1ビットずつ減算することによって行われる)、
下位ワード、X0 (i)にJ0 を乗じ、X0 (i)*J
0 mod 2k =Y0 (i)の値をレジスタ18に入力し、同
時に遅延回路32で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の値に1ビットずつ加える、 e)Z(i)の最下位ワードを考慮せず、残りのワー
ド、つまりZ(i)/2k をレジスタ11に記憶する、 f)Z(i)/2k をNと1ビットずつ比較して、続い
て上記の方法で更新された値S(i)を決定する(この
比較は、第2の直列減算回路29でZ(i)/2k とN
(回路33で更にkサイクル分だけ遅延されている)とを
1ビットずつ減算することによって行われる)、
【0030】g)上記操作中、B(v+1)またはB
(v+1)−Nの(i+1)番目のワードがレジスタ10
から出力された時点でこれらがレジスタ16にロードされ
る。 4.m回目の反復で、Z(m)の最下位ワードを無視
し、残りのワード、つまりZ(m)/2k をレジスタ10
に入力する。 5.ステップ3と4をp−1回繰り返す。 6.最後の反復でレジスタ10に記憶された結果を、必要
に応じてNから減算された状態(減算回路27によって)
で出力する。
(v+1)−Nの(i+1)番目のワードがレジスタ10
から出力された時点でこれらがレジスタ16にロードされ
る。 4.m回目の反復で、Z(m)の最下位ワードを無視
し、残りのワード、つまりZ(m)/2k をレジスタ10
に入力する。 5.ステップ3と4をp−1回繰り返す。 6.最後の反復でレジスタ10に記憶された結果を、必要
に応じてNから減算された状態(減算回路27によって)
で出力する。
【0031】l<nならば:方法は下記ステップ1〜7
を含む: 1− Nをレジスタ12にロードして、同時にB(0)=
0(0であるn個のビット)をレジスタ10にロードし、
更に回路44を初期化する(つまりSC=0となるように
信号RESを発生させる)、 2− レジスタ10と12の入力をそれらの出力に帰還させ
た状態で、これらレジスタの内容をlビットだけ右シフ
トさせる、 3− レジスタ10と12の両方においてそれらの内容を右
シフトさせることにより、N’=N*2n-1 および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
を発生させ、そうでない場合にはSC=1を発生させ
る、
を含む: 1− Nをレジスタ12にロードして、同時にB(0)=
0(0であるn個のビット)をレジスタ10にロードし、
更に回路44を初期化する(つまりSC=0となるように
信号RESを発生させる)、 2− レジスタ10と12の入力をそれらの出力に帰還させ
た状態で、これらレジスタの内容をlビットだけ右シフ
トさせる、 3− レジスタ10と12の両方においてそれらの内容を右
シフトさせることにより、N’=N*2n-1 および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
を発生させ、そうでない場合にはSC=1を発生させ
る、
【0032】4− インデックスiで示されるループを
設定する。ここでiは1からn−l+vまでの整数であ
ってvはv=(mk)/2p (pは整数)を満足するよ
うな整数であり、i番目の反復はそれぞれステップ2の
操作の再開であって、下記のように表される: − B(i)<N’ならば(SC=1)、B(i+1)
=2*B(i)=2*(B(i)−0)をレジスタ10に
ロードする、 − そうでない場合(SC=0)には、B(i+1)=
2*(B(i)−N’)を第2のレジスタにロードす
る。 5− B(n−l+v+1)≧N’ならば、減算回路27
でB(n−l+v+1)とN’を1ビットずつ減算して
2*(B(n+v−l+1)−N’)を与え、このデー
タ要素を右シフトによってレジスタ10に記憶し、レジス
タ10で2n+(n-l)+v mod N’を得る。 6− レジスタ10と12でn−lビットだけ右シフトを行
う。
設定する。ここでiは1からn−l+vまでの整数であ
ってvはv=(mk)/2p (pは整数)を満足するよ
うな整数であり、i番目の反復はそれぞれステップ2の
操作の再開であって、下記のように表される: − B(i)<N’ならば(SC=1)、B(i+1)
=2*B(i)=2*(B(i)−0)をレジスタ10に
ロードする、 − そうでない場合(SC=0)には、B(i+1)=
2*(B(i)−N’)を第2のレジスタにロードす
る。 5− B(n−l+v+1)≧N’ならば、減算回路27
でB(n−l+v+1)とN’を1ビットずつ減算して
2*(B(n+v−l+1)−N’)を与え、このデー
タ要素を右シフトによってレジスタ10に記憶し、レジス
タ10で2n+(n-l)+v mod N’を得る。 6− レジスタ10と12でn−lビットだけ右シフトを行
う。
【0033】従ってレジスタ12にはN、レジスタ10には
2n+v mod Nが存在する。 7− 図1の回路を用いてp回のPfield 操作を行う、
ここで Hint (0)=B(n−l+v+1)*2l-n あるい
は、B(n−l+v+1)≧N’ならばB(v−l+v
+1)−N’)*2l-n 、 1〜pのjについて: Hint (j)=P(Hint (j−1),Hint (j−
1))N を算出する。 上記の方法では、l=nの場合に実行される方法と比べ
て下記2つの相違点があることに注意されたい: −2つのシフトステップが追加されている(ステップ2
とステップ6) −Hint を算出するステップにおいて、反復の回数が可
変である。ステップ2に関しては、レジスタ10に記憶さ
れたビットが全て等しい状態で、レジスタ12においての
みシフトを行うように操作を制限することができる。l
=nの場合に比べて、lの値によって計算の時間は変化
することになろう。実際、この場合、Hを算出するのに
必要な時間は、減算操作についてはn*(n−l+v+
1)サイクル(lに依存する)、平方操作についてはp
*m*(n+2*k+x)サイクル(変化なし)、更に
シフトのためにnサイクルとなる。
2n+v mod Nが存在する。 7− 図1の回路を用いてp回のPfield 操作を行う、
ここで Hint (0)=B(n−l+v+1)*2l-n あるい
は、B(n−l+v+1)≧N’ならばB(v−l+v
+1)−N’)*2l-n 、 1〜pのjについて: Hint (j)=P(Hint (j−1),Hint (j−
1))N を算出する。 上記の方法では、l=nの場合に実行される方法と比べ
て下記2つの相違点があることに注意されたい: −2つのシフトステップが追加されている(ステップ2
とステップ6) −Hint を算出するステップにおいて、反復の回数が可
変である。ステップ2に関しては、レジスタ10に記憶さ
れたビットが全て等しい状態で、レジスタ12においての
みシフトを行うように操作を制限することができる。l
=nの場合に比べて、lの値によって計算の時間は変化
することになろう。実際、この場合、Hを算出するのに
必要な時間は、減算操作についてはn*(n−l+v+
1)サイクル(lに依存する)、平方操作についてはp
*m*(n+2*k+x)サイクル(変化なし)、更に
シフトのためにnサイクルとなる。
【0034】従ってHを計算するのにかかる合計の時間
は、式:n*(n−l+v+2)+p*m*(n+2*
k+x)によって与えられる。 n=512 、x=7、v=32の場合、時間は:l=257 な
らば 185 280サイクルとなり、l=400 ならば 112 064
サイクルとなり、l=511 ならば 55 232サイクルとな
る。
は、式:n*(n−l+v+2)+p*m*(n+2*
k+x)によって与えられる。 n=512 、x=7、v=32の場合、時間は:l=257 な
らば 185 280サイクルとなり、l=400 ならば 112 064
サイクルとなり、l=511 ならば 55 232サイクルとな
る。
【0035】図2を参照して、図2の回路のリソースが
使用されると仮定した。このことによって、コプロセッ
サ全体のサイズが最小限に抑えられる。当然、Hの計算
専用に構成された回路を使用することが可能である。本
発明は、図1および図2に示した既存の回路を変更する
ことなく実行可能である限りにおいて、特に有利であ
る。変更されるのはこれらの回路が機能するのに必要な
各種の制御信号を発生させるシーケンス回路のみであ
る。特に、モジュロNの有効サイズを考慮する必要があ
る。上述したように、本発明は従来の技術に比べて時間
を短縮することを可能にする。n=512 または256 でk
=32の場合について、本出願人は、p=log2(k)−1
=4が、Hを計算するのにかかる時間に関して最も効率
の良い妥協点であることを示した。従ってnの値に応じ
てv=2*m=32または16となろう。以上、好ましい実
施例を参照しながら本発明を説明したが、本発明の範囲
を逸脱することなく各種の変更が可能であることは理解
されよう。
使用されると仮定した。このことによって、コプロセッ
サ全体のサイズが最小限に抑えられる。当然、Hの計算
専用に構成された回路を使用することが可能である。本
発明は、図1および図2に示した既存の回路を変更する
ことなく実行可能である限りにおいて、特に有利であ
る。変更されるのはこれらの回路が機能するのに必要な
各種の制御信号を発生させるシーケンス回路のみであ
る。特に、モジュロNの有効サイズを考慮する必要があ
る。上述したように、本発明は従来の技術に比べて時間
を短縮することを可能にする。n=512 または256 でk
=32の場合について、本出願人は、p=log2(k)−1
=4が、Hを計算するのにかかる時間に関して最も効率
の良い妥協点であることを示した。従ってnの値に応じ
てv=2*m=32または16となろう。以上、好ましい実
施例を参照しながら本発明を説明したが、本発明の範囲
を逸脱することなく各種の変更が可能であることは理解
されよう。
【図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 記憶回路
マルチプレクサ 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
Claims (3)
- 【請求項1】 2進エラー訂正パラメータH=22*m*k
mod Nを算出するための方法において、Nが、それぞれ
kビットよりなるm個のワードにエンコードされたモジ
ュロと呼ばれる2進データ要素であり、下記のステップ
1〜4 1.モジュロNを第1のnビットのレジスタ(n=m*
k)にロードして、第2のnビットのレジスタをゼロに
初期化し(第2のレジスタの内容はB(0)と表され
る)、 2.下記の操作によって、nビットにエンコードされた
データ要素B(1)=2*(B(0)−N)を算出し記
憶する、 − 第1および第2のレジスタで右シフトを行って、2
つのレジスタの内容を1ビットずつ減算し、R(0)と
表される上記1ビット単位の減算の結果を1ユニットだ
け左にシフトさせ、 − シフト後、B(1)と表される減算結果を第2のレ
ジスタにロードし、 − B(1)とNを比較する、 3.インデックスiで示されるループを設定することに
よって(iは1からvの整数で、i回目の反復はそれぞ
れ以下の操作を含む)、nビットにエンコードされたデ
ータ要素Hint =2n+V mod Nを算出し(ここで、v
は、v=(m*k)/2p (pは整数)となるような整
数とする)、 − B(i)<Nならば、B(i)を1ユニットだけ左
にシフトさせた後、B(i+1)=2*B(i)を第2
のレジスタにロードし、更にB(i)とNを1ビットず
つ比較する、 − そうでない場合には、NおよびB(i)を1ビット
ずつ減算し、同時に結果を1ユニットだけ左にシフトさ
せてB(i+1)=2*(B(i)−N)を第2のレジ
スタにロードし、更にB(i+1)とNを1ビットずつ
比較する、 4.p回の操作Hint (j)=P(Hint (j−1),
Hint (j−1))Nを実行することによってパラメー
タHを算出する(ここでjは1からpのインデックスで
あり、Hint (0)=B(v+1)またはB(v+1)
−Nである)。ことを特徴とする方法。 - 【請求項2】 2進エラー訂正パラメータH=22*m*k
mod Nを算出するための方法であって、Nが、それぞれ
kビットよりなるm個のワードにエンコードされたモジ
ュロ要素と呼ばれる2進データ要素であり、Nの最も上
位のn−l個のビットがゼロであり、(n=m*kおよ
びl<n)、下記1〜7のステップ 1.モジュロNを第1のnビットのレジスタ(n=m*
k)にロードして、第2のnビットのレジスタをゼロに
初期化し(第2のレジスタの内容はB(0)と表され
る)、 2.第1のレジスタを、その入力に帰還させた状態でl
ビットだけ右にシフトさせる、 3.下記の操作によって、nビットにエンコードされた
データ要素B(1)=2*(B(0)−N’)を算出し
記憶し(N’=N*2n-l ): − 第1および第2のレジスタで右シフトを行って、2
つのレジスタの内容を1ビットずつ減算し、R(0)と
表される上記1ビット単位の減算の結果を1ユニットだ
け左にシフトさせ、 − シフト後、B(1)と表される減算結果を第2のレ
ジスタにロードし、 − B(1)とN’を比較する、 4.インデックスiで示されるループを設定することに
よって(iは1からn−l+vの整数で、i回目の反復
はそれぞれ以下の操作を含む)、nビットにエンコード
されたデータ要素Hint =2n+(n-l)+v mod N’を算出
する(ここで、vは、v=(m*k)/2p (pは整
数)であるような整数とする): − B(i)<N’ならば、B(i)を1ユニットだけ
左にシフトさせた後、B(i+1)=2*B(i)を第
2のレジスタにロードし、更にB(i+1)とN’を1
ビットずつ比較する、 − そうでない場合には、N’およびB(i)を1ビッ
トずつ減算し、同時に結果を1ユニットだけ左にシフト
させてB(i+1)=2*(B(i)−N’)を第2の
レジスタにロードし、更にB(i+1)とN’を1ビッ
トずつ比較する、 5.B(n−l+v+1)≧N’ならば、B(n−l+
v+1)とN’を1ビットずつ減算してB(n−l+v
+1)−N’を第2のレジスタにロードし、 6.第1および第2のレジスタでn−lビットだけ右シ
フトを行う、 7.p回の操作Hint (j)=P(Hint (j−1),
Hint (j−1))Nを実行することによってパラメー
タHを算出する(ここでjは1からpのインデックスで
あってHint (0)=B(n−l+v+1)*2l-n ま
たは(B(n−l+v+1)−N’)*2l-n である)
ことを特徴とする方法。 - 【請求項3】 p=log2(k)−1であることを特徴と
する請求項1または2に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9413593A FR2726666B1 (fr) | 1994-11-08 | 1994-11-08 | Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery |
FR9413593 | 1994-11-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08339310A true JPH08339310A (ja) | 1996-12-24 |
JP2722412B2 JP2722412B2 (ja) | 1998-03-04 |
Family
ID=9468763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7314753A Expired - Fee Related JP2722412B2 (ja) | 1994-11-08 | 1995-11-08 | モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5751620A (ja) |
EP (1) | EP0712070B1 (ja) |
JP (1) | JP2722412B2 (ja) |
DE (1) | DE69501581T2 (ja) |
FR (1) | FR2726666B1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100400210B1 (ko) * | 1997-01-10 | 2003-11-14 | 삼성전자주식회사 | 디지털 서명을 위한 모듈라 곱셈장치 |
JPWO2005013243A1 (ja) * | 2003-07-31 | 2006-09-28 | 富士通株式会社 | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム |
EP1708081A1 (en) | 2005-03-30 | 2006-10-04 | Fujitsu Limited | Method and device for calulcating conversion parameter of Montgomery |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2743645B1 (fr) * | 1996-01-15 | 1998-02-27 | Sgs Thomson Microelectronics | Dispositif ameliorant la vitesse de traitement d'un coprocesseur d'arithmetique modulaire |
FR2743908B1 (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 |
FR2768245B1 (fr) * | 1997-09-09 | 1999-10-15 | Sgs Thomson Microelectronics | Procede de production d'une division entiere avec un coprocesseur d'arithmetique modulaire |
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 |
US7278090B2 (en) * | 2004-03-31 | 2007-10-02 | Nxp B.V. | Correction parameter determination system |
EP2385461A1 (en) * | 2010-04-30 | 2011-11-09 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
US8626811B2 (en) | 2010-04-30 | 2014-01-07 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
CN111712816B (zh) * | 2018-03-28 | 2024-05-03 | 密码研究公司 | 使用密码蒙蔽以用于高效地使用蒙哥马利乘法 |
WO2023141935A1 (en) | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Techniques, devices, and instruction set architecture for balanced and secure ladder computations |
WO2023141934A1 (en) * | 2022-01-28 | 2023-08-03 | Nvidia Corporation | Efficient masking of secure data in ladder-type cryptographic computations |
CN116830076A (zh) | 2022-01-28 | 2023-09-29 | 辉达公司 | 用于高效模除法和模求逆的技术、设备和指令集架构 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
-
1994
- 1994-11-08 FR FR9413593A patent/FR2726666B1/fr not_active Expired - Fee Related
-
1995
- 1995-10-26 EP EP95470037A patent/EP0712070B1/fr not_active Expired - Lifetime
- 1995-10-26 DE DE69501581T patent/DE69501581T2/de not_active Expired - Lifetime
- 1995-11-07 US US08/551,782 patent/US5751620A/en not_active Expired - Lifetime
- 1995-11-08 JP JP7314753A patent/JP2722412B2/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100400210B1 (ko) * | 1997-01-10 | 2003-11-14 | 삼성전자주식회사 | 디지털 서명을 위한 모듈라 곱셈장치 |
JPWO2005013243A1 (ja) * | 2003-07-31 | 2006-09-28 | 富士通株式会社 | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム |
US7792893B2 (en) | 2003-07-31 | 2010-09-07 | Fujitsu Limited | Device and method for calculating conversion parameter of montgomery modular multiplication and program therefor |
JP4616169B2 (ja) * | 2003-07-31 | 2011-01-19 | 富士通株式会社 | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム |
EP1708081A1 (en) | 2005-03-30 | 2006-10-04 | Fujitsu Limited | Method and device for calulcating conversion parameter of Montgomery |
US8085931B2 (en) | 2005-03-30 | 2011-12-27 | Fujitsu Limited | Computation method, computing device and computer program |
Also Published As
Publication number | Publication date |
---|---|
EP0712070A1 (fr) | 1996-05-15 |
FR2726666B1 (fr) | 1997-01-17 |
EP0712070B1 (fr) | 1998-02-04 |
US5751620A (en) | 1998-05-12 |
DE69501581T2 (de) | 1998-05-28 |
FR2726666A1 (fr) | 1996-05-10 |
JP2722412B2 (ja) | 1998-03-04 |
DE69501581D1 (de) | 1998-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2722411B2 (ja) | モンゴメリ法によるモジュラリダクションの実施方法 | |
JP2722413B2 (ja) | モンゴメリ法によるモジュラ乗算の実施方法 | |
US6691143B2 (en) | Accelerated montgomery multiplication using plural multipliers | |
US6035317A (en) | Modular arithmetic coprocessor comprising two multiplication circuits working in parallel | |
US4994997A (en) | Pipeline-type serial multiplier circuit | |
US5448639A (en) | Digital signature device | |
US5982900A (en) | Circuit and system for modulo exponentiation arithmetic and arithmetic method of performing modulo exponentiation arithmetic | |
US5210710A (en) | Modulo arithmetic processor chip | |
JPH08339310A (ja) | モンゴメリ法によるモジュラ操作の実行に伴うエラー訂正パラメータの算出方法 | |
JP4823467B2 (ja) | ガロア体からの二つの係数を乗算するための方法及びこの方法を遂行するための乗算器 | |
US4796219A (en) | Serial two's complement multiplier | |
US6341299B1 (en) | Modular arithmetic coprocessor enabling the performance of non-modular operations at high speed | |
US5987489A (en) | Modular arithmetic coprocessor enabling the performance of non-modular operations at high speed | |
JP2008535011A (ja) | モンゴメリーのモジュラー乗算を実行する方法及びそのための装置 | |
US6609142B1 (en) | Method of performing multiplication with accumulation in a Galois body | |
US6668267B1 (en) | Device and method for the implementation of an elementary modular operation according to the Montgomery method | |
US5948051A (en) | Device improving the processing speed of a modular arithmetic coprocessor | |
US5912904A (en) | Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method | |
US6230178B1 (en) | Method for the production of an error correction parameter associated with the implementation of a modular operation according to the Montgomery method | |
CN115270155A (zh) | 一种获取大数拓展最大公约数的方法及硬件架构 | |
US6470372B1 (en) | Method for the performance of an integer division | |
Zimmermann et al. | High-performance integer factoring with reconfigurable devices | |
JP2000207387A (ja) | 演算装置及び暗号処理装置 | |
US20050246406A9 (en) | Emod a fast modulus calculation for computer systems | |
US6658442B1 (en) | Device and method for the implementation of an elementary modular operation according to the Montgomery method |
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 |