JP2003177669A - 冪乗剰余演算装置及び冪乗剰余演算方法 - Google Patents

冪乗剰余演算装置及び冪乗剰余演算方法

Info

Publication number
JP2003177669A
JP2003177669A JP2001374904A JP2001374904A JP2003177669A JP 2003177669 A JP2003177669 A JP 2003177669A JP 2001374904 A JP2001374904 A JP 2001374904A JP 2001374904 A JP2001374904 A JP 2001374904A JP 2003177669 A JP2003177669 A JP 2003177669A
Authority
JP
Japan
Prior art keywords
register
value
digit
modf
adic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001374904A
Other languages
English (en)
Inventor
Kenji Takagi
賢次 高木
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.)
CDEX KK
Original Assignee
CDEX KK
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 CDEX KK filed Critical CDEX KK
Priority to JP2001374904A priority Critical patent/JP2003177669A/ja
Publication of JP2003177669A publication Critical patent/JP2003177669A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 RSA暗号化処理に必要な冪乗剰余演算速度
の向上を図る。 【解決手段】 公開鍵Eを上位データEuと下位データ
Edに分割し、レジスタ(11,12)に格納する。こ
こで、上位データEuの下位データEdに対応する桁は
全て0とする。冪乗剰余演算回路(20)はレジスタ
(11,12,13,14)から上位データEu、下位
データEd、剰余基数F、平分Mを読み取り、(M^E
u)modF、及び(M^Ed)modFの剰余演算を
並列的に行い、各々の演算結果から、C=(((M^E
u)modF)×((M^Ed)modF))modF
として暗号文Cを算出する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はRSA暗号方式、E
POC暗号方式、ラビン暗号方式、エルガマル暗号方
式、ディフィー・ヘルマン鍵配送方式等の冪乗剰余演算
を必要とする公開鍵暗号化/復号化処理の高速演算技術
に関する。
【0002】
【従来の技術】近年の電子商取引においては、インター
ネット等のオープンネットワークを経由して情報の送受
信が行われるため、通信文書等のセキュリティを確保す
るべく、RSA公開鍵暗号を利用した電子署名が利用さ
れている。電子署名を利用することにより、インターネ
ット上の情報を保護するだけでなく、情報発信者の身元
保証も可能となる。RSA公開鍵暗号化方式は大きな数
の素因数分解が困難であることを利用した暗号化方式で
あり、解読が極めて困難であるため、暗号化方式として
は大変有効である。
【0003】RSA公開鍵暗号を利用した暗号化/復号
化処理の手順を簡単に説明すると、以下のようになる。
公開鍵を(E,F)、平文をM、秘密鍵を(D,F)、
暗号文をCとすれば、C=(M^E)modF、M=
(C^D)modFとなる。ここで、x^yはxのy乗
を意味するものとする。 [C=(M^E)modFの計算アルゴリズム] 変数 i,j,k,P,Q 2^k進SD数系数列の桁数 n Eの2^k進SD数展開でのj桁目の値 Ej(0≦Ej≦(2^k)−1 ) Step1.1 C=1 Step1.2 j=n−1 Step1.3 i=k Step1.4 Q=C Step1.5 P=(Q×C)modF Step1.6 C=P Step1.7 i=i−1 Step1.8 if(i>0) then goto Step1.4 Step1.9 if(Ej=0) then goto Step1.13 Step1.10 Q=(M^Ej)modF Step1.11 P=(Q×C)modF Step1.12 C=P Step1.13 if(j>0) then j=j−1 goto Step1.3 Step1.14 if(C<0) then C=C+F ここで、Step1.10の剰余演算処理は、Mの0〜
(2^k)−1の累乗演算と剰余演算を施したメモリテ
ーブル((M^0)modF〜(M^((2^k)−
1)modFの値を記憶したテーブル)から、Ejをア
ドレスとして読み出す処理である。また、Step1.
5、Step1.11におけるP=(Q×C)modF
の計算アルゴリズムは以下のようになる。 [P=(Q×C)modFの計算アルゴリズム] 変数 j,k,P,G,R 2^k進SD数系数列の桁数 n Cの2^k進SD数展開でのj桁目の値 Cj 但し、−(2^k)+1≦Cj≦(2^k)−1とする。
【0004】 Step2.1 P=0, j=n Step2.2 j=j−1 Step2.3 if(Cj≧0) then G=(Q×Cj)modF else G=F−(Q×(−Cj))modF Step2.4 R=P×2^k+G Step2.5 P=RmodF Step2.6 if(j>0) then goto Step2.2 ここで、Step2.3の剰余演算処理は、Qの値が決
定する毎にQと0〜(2^k)−1との乗算と、剰余演
算を施したメモリテーブル((Q×0)modF〜(Q
×((2^k)−1))modF)から、Cjをアドレ
スとして読み出す処理である。また、Step2.5の
P=RmodFの演算処理は後述する並列方式又は予測
メモリテーブル方式により実行するものである。
【0005】公開鍵暗号方式では暗号化/復号化処理に
おいて、多ビットからなる値の冪乗剰余演算が必要とな
る。これらの計算処理は加算と減算によって実現される
が、加算及び減算の処理速度を向上し、さらに加算/減
算回数を減らすことが暗号化/復号化処理を高速化する
ための課題となっている。しかしながら、実用的な演算
速度を実現する暗号プロセッサは未だ開発されておら
ず、国内の暗号プロセッサにおいても、10数キロビッ
ト毎秒程度の処理速度が限界である。このため、通信文
書を圧縮したものや、共通鍵方式での鍵をソフトウエア
によりRSA暗号方式により暗号化しているのが現状で
ある。
【0006】このような事情を背景として、情報通信分
野ではRSA公開鍵暗号化方式における乗算剰余演算の
高速化の研究が続けられており、「冗長2進剰余テーブ
ルに基づく高速暗号プロセッサの構成方法」(電子情報
通信学会論文誌2001/5Vol.J84−D−1
No.5)や、「多進SD(Signed Digit)数系にける
RSA暗号の高速化処理の提案」(パーソナルコンピュ
ータユーザ利用技術協会論文誌Vol.10 No.1
(2000))等のように、RSA公開鍵暗号化方式に
おける演算処理の高速化を実現する論文が発表されてい
る。特に、後者の論文発表者からは、同論文に掲載され
ている剰余演算の並列方式の他に、他の論文誌におい
て、予測テーブル方式が提案されている。
【0007】
【発明が解決しようとする課題】しかし、同論文に掲載
されている剰余演算の並列方式では、SD数1桁同士の
(k+1)ビット加算器を1個とすると、n桁2^k進
SD数同士の加算では、n×((2^k)−1)個の加
算器を常備し、選択回路を付加する必要がある。これで
は、ゲート数が膨大となり、現実的ではない。また、予
測テーブル方式では、RmodFの剰余演算を計算する
準備として、Fの値の0〜(2^k)倍までのメモリテ
ーブルを用意し、Rの値から何倍のFの値を減算すれば
よいかを決定する方式であるため、上記の剰余演算をす
るには、上記メモリテーブルの他、Rの値によるアドレ
ス変換用のメモリテーブルをも必要とする。さらに、同
方式では、剰余基数Fを変更する都度にこれらのメモリ
テーブルを作成し直す必要がある。また、同方式では、
剰余演算の結果を検証する必要があり、通信文書が短い
程、パフォーマンスが低下するという問題があった。
【0008】このような問題点に鑑み、本発明者は、上
記論文誌に述べられている、「鍵の長さによって加算処
理の処理回数が最小となる最適な多進SD数系が存在す
る」ということを確認した上で、剰余演算に使用する多
進SD数系に工夫を加えることにより、公開鍵暗号化方
式に必要となる乗算剰余演算処理を高速に行うことので
きる新たな演算方式を見出した。そこで、本発明は、回
路規模を大きくすることなく、高速演算可能な冪乗剰余
演算技術を提案することを課題とする。
【0009】
【課題を解決するための手段】上記の課題を解決するべ
く、本発明の冪乗剰余演算装置は、多数桁の整数E,
M,Fに対してC=(M^E)modFなる冪乗剰余演
算を行う冪乗剰余演算装置において、E,M,Fを各桁
が正の2^k進SD数に変換して演算を行っている従来
の方式に加えて、更にEを分割して並列に行う方法であ
る。
【0010】前記整数Eのn桁の2^k進SD数に対し
て、E=E1+E2+…+Ep(pはnより十分小さい
値)なる関係を満たし、Mのそれぞれの値による累乗演
算とFでの剰余演算を合わせた処理時間が同程度の2^
k進SD数の集合E1,E2,…,Epを記憶する記憶手
段と、前記記憶手段に記憶されているE1,E2,…,E
pの値を読取り、(M^E1)modF、(M^E2)mo
dF、…、(M^Ep)modFの冪乗剰余演算を並列的
に行い、各々の演算結果から、C=(((M^E1)mo
dF)×((M^E2)modF)×…×((M^Ep)m
odF))modFとしてCを算出する乗算剰余演算手
段とを備える。かかる構成により、集積回路のゲート数
の多寡に依るが、整数Eを複数に分割してそれぞれを平
行して冪乗剰余演算を行うことで演算速度を向上するこ
とができる。
【0011】本発明の加減算装置は、少なくとも一方が
−(2^(k−1)+1)以上、2^(k−1)以下の
範囲にあるn桁の圧縮2^k進SD数とn桁の(圧縮)
2^k進SD数に展開された整数を各桁毎に並列して加
減算を行うn個の圧縮SD数加減算器から構成される加
減算装置であって、前記圧縮SD数加減算器は、当該桁
での2^k進SD数同士の加減算結果が2^(k−1)
以上であれば、桁上げを示すキャリー信号を上位桁へ出
力し、前記加減算結果が−2^(k−1)未満であれ
ば、桁借りをするキャリー信号を上位桁へ出力すること
により、桁上げ桁借りした元の計算結果はサインビット
を反転させるだけで2の補数となる。この結果と下位桁
の圧縮SD数加減算器からの桁上げ若しくは桁借りを示
すキャリー信号とを再計算した結果、当該桁での最終演
算結果が取り得る値の範囲を−(2^(k−1)+1)
以上、2^(k−1)以下とする。2^k進SD数の加
減算結果を−(2^(k−1)+1)以上、2^(k−
1)以下とすることにより、従来の2^k進SD数の加
算器、減算器がキャリーの伝播を2桁以上に及ぼさない
為だけであり、取り得る整数範囲が−(2^k)+1以
上、(2^k)−1以下であったものをおよそ半分とし
データ量の削減を図り、装置全体の演算速度の向上を図
ることができる。また、加減算器内部のデコード回路が
簡単になることにより、回路規模を小さくすることがで
き、n桁2^k進SD数の正負判定回路を組み込み自動
的に正の値を保持することが出来る。整数Mを各桁が正
の2^k進SD数に展開された状態から圧縮2^k進S
D数と変換しておく必要があるが、この圧縮SD数加算
器を用い、2^k進SD数に展開されたMに0(各桁が
0のn桁の2^k進SD数)を一度加えることにより変
換する。
【0012】本発明の剰余演算装置は、圧縮2^k進S
D数R,各桁が正の2^k進SD数Fに対してP=Rm
odFなる剰余演算をツリー(樹状)方式で行う剰余演
算装置であって、本発明の圧縮2^k進SD数加減算器
を用いる。レジスタA、レジスタB、レジスタC、レジ
スタj、及びレジスタPを備え、下記の第1ステップか
ら第7ステップを順次実行することによりレジスタPの
値を解とする。
【0013】第1ステップ:レジスタAにRの値を代入
し、レジスタBにF×(2^k)を代入し、レジスタj
にkの値を代入する。
【0014】第2ステップ:レジスタCにレジスタAの
値からレジスタBの値を減じた値を代入する。
【0015】第3ステップ:レジスタCの値が0である
場合にはエラー処理をして第7ステップに移行する。
【0016】第4ステップ:レジスタCの値が正であっ
て、レジスタjの値がkに等しい場合には、レジスタC
の値をレジスタAに代入して第7ステップに移行する。
【0017】第5ステップ:レジスタCの値が正である
場合には、レジスタAにレジスタCの値を代入する。
【0018】第6ステップ:レジスタjの値が0より大
きい場合には、レジスタBの値を1/2にし、レジスタ
jの値を1デクリメントして、第2ステップに移行す
る。
【0019】第7ステップ:レジスタAの値をレジスタ
Pに代入し、終了処理をする。
【0020】ここで、レジスタを加減算器に対応させれ
ば、レジスタAが減算される値、レジスタBが減算する
値で、レジスタCが加減算結果の値であり正負判定回路
により自動的にレジスタAの値となる。
【0021】本発明の乗算剰余演算装置は、各桁の値が
−(2^(k−1)+1)以上、2^(k−1)以下に
制限されたn桁の圧縮2^k進SD数Q、C、及び各桁
が正の2^k進SD数Fに対してP=(Q×C)mod
Fなる乗算剰余演算を行う乗算剰余演算装置であって、
レジスタP、レジスタG、レジスタR、レジスタj、及
びレジスタCを備え、CjをCのj桁目の値とし、下記
の第1ステップから第6ステップを順次実行することに
よりレジスタPの値を解とする。
【0022】第1ステップ:レジスタPに0を代入し、
レジスタjにnを代入する。
【0023】第2ステップ:レジスタjにj−1を代入
する。
【0024】第3ステップ:Cjの値が0以上であると
きには、Cjの値とQとの積にFを法とする剰余演算結
果をレジスタGに代入し、Cjの値が負であるときに
は、Cjの値の絶対値とQとの積にFを法とする剰余演
算結果に(−1)を乗じた値をレジスタGに代入する。
【0025】第4ステップ:レジスタPの値に(2^
k)を乗じ、この値にレジスタGの値を加算した値をレ
ジスタRに代入する。
【0026】第5ステップ:レジスタRの値が負である
ときには、レジスタRの値とFとを加算した値をレジス
タPに代入し、レジスタRの値が0以上であるときに
は、レジスタRの値にFを法とする剰余演算結果をレジ
スタPに代入する。 第6ステップ:レジスタjの値が正であるときには、第
2ステップに移行する。
【0027】ここで、第3ステップの乗算剰余演算処理
は、Qの値が決定する毎にQと0〜(2^(k−1) +
1)の乗算と、剰余演算を施したメモリテーブル((Q
×0)modF〜(Q×(2^(k−1)+1))mo
dF)から、Cjの絶対値をアドレスとして読み出す処
理である。第4ステップでPの値に(2^k)を乗じる
のは桁上げを行っているものである。第5ステップでの
剰余演算は前述したツリー方式剰余演算を行う。
【0028】
【発明の実施の形態】以下、各図を参照して本実施の形
態について説明する。
【0029】図1は暗号化鍵E(復号化鍵D)を2分割
した暗号処理プロセッサのブロック構成図である。同図
において、符号10はデータバスを介して外部モジュー
ルとの間でデータの送受信を行うホストインタフェース
回路である。符号11は取得した鍵E(D)を各桁が正
の2^k進SD数系に変換し(2^k進数列に分割する
だけでも可能)、上位データEu(Du)を記憶するレ
ジスタ、符号12はその鍵の下位データEd(Dd)を
記憶するレジスタである。
【0030】但し、EuのEdに対応する桁は0とし、
E=Eu+Edの関係が成立するものとする。例えば、
E=「1011110011」であるとき、Ed=「1
10011」とすれば、Euの下位6桁は全て0である
ため、Eu=「1011000000」となる。符号1
3は取得した鍵(剰余基数)Fを各桁が正の2^k進S
D数系で記憶するレジスタ、符号14は取得した平分M
(解読では暗号文C)を2^k進SD数系で記憶するレ
ジスタである。
【0031】暗号化鍵E(復号化鍵D)はそれぞれの暗
号化処理時間が同程度(1024ビットの鍵では2^k
進SD数のkが5で、上位有効桁が404ビット下位桁
は620ビット程度となる。)の上位データEu(D
u)と、下位データEd(Dd)に分割され、レジスタ
11,12に格納された後、M×Mテーブル・リード・
コントロール回路19へ出力され、平分M及び剰余基数
Fは冪乗剰余演算回路20へ出力されて、メイン・コン
トロール回路15の制御下において、M×Mテーブル1
8の作成を待ち、C1=(M^Eu)modF、C2=
(M^Ed)modFの冪乗剰余演算処理が行われる。
冪乗剰余演算回路20ではさらに、C=(C1×C2)
modFの乗算剰余演算を行い、暗号文C(解読文M)
を求める。暗号文C(解読文M)はSD数系デコード回
路32にて2進数のビット列に変換され、FIFOバッ
ファ33を介しホストインタフェース回路10を通して
出力される。
【0032】ここで、冪乗剰余演算回路20におけるC
1及びC2を求めるアルゴリズムを記述すると、以下の
ようになる。 [C1=(M^Eu)modFの計算アルゴリズム] 変数 ai,bi,aj,bj,k 変数 P1,P2,Q1,Q2 Euを2^k進SD数系数列に変換したときの桁数 n (Euの桁数は、Eを2^k進SD数系数列に変換したときの桁数と同じ。) Edを2^k進SD数系数列に変換したときの桁数 m Euの2^k進数展開でのaj桁目の値 Eu[aj] Edの2^k進数展開でのbj桁目の値 Ed[bj] 但し、0≦Eu[aj]≦2^k−1、0≦Ed[b
j]≦2^k−1とする。
【0033】 Step3.1 C1=1 Step3.2 aj=n−1 Step3.3 if(Eu[aj]>0) then C1=(M^Eu[aj])modF,aj=aj−1 goto Step3.5 Step3.4 if(aj>0) then aj=aj−1 goto Step3.3 Step3.5 ai=k Step3.6 Q1=C1 Step3.7 P1=(Q1×C1)modF Step3.8 C1=P1 Step3.9 ai=ai−1 Step3.10 if(aj>0) then goto Step3.6 Step3.11 if(Eu[aj]=0) then goto Step3.15 Step3.12 Q1=(M^Eu[aj])modF Step3.13 P1=(Q1×C1)modF Step3.14 C1=P1 Step3.15 if(aj>0) then aj=aj−1 goto Step3.5 [C2=(M^Ed)modFの計算アルゴリズム] Step4.1 C2=1 Step4.2 bj=m−1 Step4.3 if(Ed[bj]>0) then C2=(M^Ed[bj])modF,bj=bj−1 goto Step4.5 Step4.4 if(bj>0) then bj=bj−1 goto Step4.3 Step4.5 bi=k Step4.6 Q2=C2 Step4.7 P2=(Q2×C2)modF Step4.8 C2=P2 Step4.9 bi=bi−1 Step4.10 if(bj>0) then goto Step4.6 Step4.11 if(Ed[bj]=0) then goto Step4.15 Step4.12 Q2=(M^Ed[bj])modF Step4.13 P2=(Q2×C2)modF Step4.14 C2=P2 Step4.15 if(bj>0) then bj=bj−1 goto Step4.5 ここで、Step3.11によりEu(Du)の下位E
d(Dd)m桁に相当する部分は0であるので、Ste
p3.12〜Step3.14をスキップすることがで
き、下位Ed(Dd)の演算時間と同等となるので短い
鍵で処理をしたのと同様となる。上述したC=(C1×
C2)modF、Step3.7のP1=(Q1×C
1)modF、Step4.7のP2=(Q2×C2)
modFの乗算剰余演算を求める式をP=(Q×C)m
odFとして計算するアルゴリズムを以下に記述する。 [P=(Q×C)modFの計算アルゴリズム] 変数 j,k,P,G,R Cを2^k進SD数系数列に変換したときの桁数 n Cの2^k進SD数系数列のj桁目の値 Cj 但し、Cjの採り得る整数範囲を−(2^(k−1)+
1)≦Cj≦2^(k−1)とする。
【0034】 Step5.1 P=0,j=n Step5.2 j=j−1 Step5.3 if(Cj≧0) then G=(Q×Cj)modF else G=−(Q×(−Cj))modF Step5.4 R=P×(2^k)+G Step5.5 if(R<0) then P=R+F else P=RmodF Step5.6 if(j>0) then goto Step5.2 ここで、Step5.4でRの値を求めるにあたり、C
jが負である場合には、その絶対値をアドレスとするメ
モリテーブルの値を、R=P×(2^k)+Gとして、
桁上げ処理したPにより直接減算している。この結果、
従来のアルゴリズムにおけるFからの減算処理を削減で
き、剰余演算を省略することが可能な場合が生じるた
め、処理スピードの向上を図ることができる。Step
5.5のP=RmodFの計算アルゴリズムを以下に記
述する。 [P=RmodFの計算アルゴリズム] 変数 j,k,P,R,A,B,C 変数 ERR,END 右シフト演算子 >> Step6.1 A=R,B=F×(2^k),j=k ERR=0,END=0 Step6.2 C=A−B Step6.3 if(C=0) then ERR=1 goto Step6.6 Step6.4 if((C>0)AND(j=k)) then A=C goto Step6.7 Step6.5 if(C>0) then A=C Step6.6 if(j>0) then B>>1,j=j−1 goto Step6.2 Step6.7 P=A,END=1 尚、Step6.1〜Step6.7に記述する演算処
理が可能であるのは、Rの値が0以上、F×(2^k+
1)未満である場合に限られるが、Step5.4にお
いて、Rの値が0以上、F×(2^k+1)未満である
ことが保証されている。このため、上記のアルゴリズム
において、Aの値がF×(2^k)以上のときは以降の
減算処理をすることなく、剰余演算を終了することがで
きる。剰余基数Fは各桁が正の2^k進SD数であるた
め、剰余演算の1回毎の減算で引く値Bはシフト演算を
用いることで簡単に生成することができる。また、後述
するように、加減算器には正負判定機能が付加されてお
り、被減算数Aは減算される毎に減算結果が正であれ
ば、Step6.5において、AにCを自動的に代入す
るように選択回路(マルチプレクサ)が設けられてい
る。
【0035】図1において、M×Mテーブル18には、
平文M(解読では暗号文C)のデータをもとにして累乗
演算コントロール回路17とC1×C2コントロール回
路27を除いた冪乗剰余演算回路20全体で演算した
(M^0)modF〜(M^((2^k)−1))mo
dFの値が記憶されており、指定された0〜(2^k)
−1までのアドレスに対応する累乗剰余演算結果が出力
されるように構成されている。M×Mテーブル・リード
・コントロール回路19はレジスタ11,12から供給
される暗号鍵上位データEu、及び暗号鍵下位データE
dを取得し、Eu[aj]及びEd[bj]をアドレス
として、(M^Eu[aj])modF、及びM^Ed
[bj])modFの値をM×Mテーブル18から読み
出し、冪乗剰余演算回路20に出力する(Step3.
3、Step3.12、Step4.3、Step4.
12)。累乗演算コントロール回路17はM×Mテーブ
ル18、M×Mテーブル・リード・コントロール回路1
9、冪乗剰余演算回路20を制御し、M×Mテーブル1
8の作成終了を示すステータス信号を取得すると、メイ
ン・コントロール回路15にその旨を通知する。この時
点で次の平文M(解読では暗号文C)のデータを受け付
けることが出来る。
【0036】冪乗剰余演算回路20は大きく2つのブロ
ックに分割することができる。1つは、C1=(M^E
u)modFの演算を行うブロックで、乗算コントロー
ル回路21、M×Nテーブル22、剰余演算コントロー
ル回路23、及び圧縮SD数系加減算器24から成る
(以下、C1ブロックと称する)。もう1つはC2=
(M^Ed)modFの演算を行うブロックで、乗算コ
ントロール回路28、M×Nテーブル29、剰余演算コ
ントロール回路30、及び圧縮SD数系加減算器31か
ら成る(以下、C2ブロックと称する)。乗算コントロ
ール回路21,28は、Qの値が決定される毎に、(Q
×0)modF〜(Q×(2^(k−1)+1))mo
dFの演算を圧縮SD数系加減算器24,31を使用し
て行って、その演算結果をM×Nテーブル22,29に
書込む。ここでは、圧縮2^k進SD数系列の冗長性を
利用して、Cjの採り得る整数範囲を−(2^(k−
1)+1)≦Cj≦(2^(k−1))としているた
め、M×Nテーブル22,29のデータ容量、及びテー
ブル作成時間を従来と比較して、(2^(k−1)+
1)/((2^k)−1)倍にし(kの値が大きい場合
には、およそ1/2となる)、並列で演算を行うため記
憶回路は同等となるが作成時間の大幅な短縮を実現する
ことができる。また、圧縮2^k進SD数の範囲を上記
の範囲に制限しても、SD数系デコード回路32におい
て、完全な整数に戻せることが確認できている。M×N
テーブル・リード・コントロール回路26は、Step
5.3のG=(Q×Cj)modFまたは、G=−(Q
×(−Cj))modFにおいて、M×Nテーブル2
2,29に書込まれた乗算剰余演算結果を、Cjをアド
レスとして読み出す。C1×C2コントロール回路27
はC1ブロック及びC2ブロックの演算の監視を行うと
ともに、早く演算が終了したブロックからのデータによ
り(Eの上位有効桁404ビット下位桁620ビット分
割ではC1ブロックが僅かに早く終了する。)あらかじ
めM×Nテーブル(M×Nテーブル22)を作成し、作
成終了と他ブロックからの算出した値(C2)から、C
=(C1×C2)modFの乗算剰余演算を行い、暗号
文Cを求める。また、アービタ回路25は冪乗剰余演算
回路20内の演算処理の流れを監視し、M×Mテーブル
18作成時はM×Nテーブル22,29及び、M×Nテ
ーブル・リード・コントロール回路26をコントロール
し(両方のM×Nテーブルが必要)、M×Mテーブルか
らの読み出しではM×Mテーブル・リード・コントロー
ル回路19にC1,C2ブロックの情報を送る。乗算剰
余演算コントロール回路16は冪乗剰余演算回路20を
制御し、演算終了を示すステータス信号を取得すると、
メイン・コントロール回路15にその旨を通知する。剰
余演算コントロール回路23及び圧縮SD数系加減算器
24、剰余演算コントロール回路30及び圧縮SD数系
加減算器31はそれぞれC1、C2の乗算剰余演算にお
いて、Step5.5のP=RmodFの演算処理を行
う。
【0037】図2はC1ブロックのSD数系加減算器2
4に乗算コントロール回路21、及び剰余演算コントロ
ール回路24からのコマンドによる制御回路を加えた圧
縮SD数系加減算器の回路構成図例である。C2ブロッ
クにおいても同様の回路を構成する。同図に示す入力
R,Fは、有効桁数に桁上げ処理や加算による桁あふれ
を考慮したn桁圧縮2^k進SD数系の値である。剰余
演算コントロール回路23(剰余演算コントロール回路
30)による剰余演算コマンドでの演算は加減算コマン
ドとの協調により、加減算回路全体の主制御を行う制御
回路41からのSEL−A信号により、圧縮2^k進S
D数n桁のRをn個のセレクタ430,431,…,43
n-1選択し、n個のレジスタ440,441,…,44n-1
で加減算器の一方の入力(アルゴリズムではA)に取り
込み、FをSEL−B信号によりn個のセレクタ4
0,471,…,47n-1で選択し、シフトレジスタ4
2で2^k倍して加減算器の他方の入力(アルゴリズム
ではB)へ取り込む。セレクタ43は1回の減算毎にn
桁の減算結果が正であればその結果を選択し、レジスタ
44で保持する。また、シフトレジスタ42は1回の減
算毎に右シフト(1/2倍)する。
【0038】各々の桁についてn個の加減算器450
451,…,45n-1を用いて、Step6.1〜Ste
p6.7の計算アルゴリズムに従って減算を施すことに
より、P=RmodFの演算処理を行って、圧縮2^k
進SD数系n桁のP(2^k,0),P(2^k,
1),…,P(2^k,n−1)を出力する演算回路を
構成することができる。同図に示すように、入力データ
R,Fの各々の桁について減算を行うn個の加減算器4
0,451,…,45n-1の各々から出力される加減算
結果(アルゴリズムではC)はセレクタ430,431
…,43n-1にフィードバックされ、加減算結果の正負
の極性を示すサイン信号S(2^k,0),S(2^
k,1),…,S(2^k,n−1)、及び加減算結果
が0であるか否かを示すノンゼロ信号NON_ZERO
(2^k,0),NON_ZERO(2^k,1),
…,NON_ZERO(2^k,n−1)、最上位桁の
加減算器からのキャリーを示すCA(2^k,n−
1)、を取得して、正負を判定する正負判定回路46を
備えている。
【0039】乗算剰余演算では前提となるM×Nテーブ
ル22,29のデータを作成するため加減算コマンドに
より加算と減算を繰り返すことにより行う。RをMと
し、Nを0から2^(k−1)+1とするとNが0と1
の場合はそれぞれ0とRをテーブルへ書き込むだけであ
るのでR×2より説明する。制御回路41からのSEL
−A,SEL−B信号により加減算器に与える値を両方
ともRとし、制御回路41からのPLUS_MINUS
信号を加算とし加算結果のR+Rをセレクタ43で選択
後、レジスタ44にて保持する。一方セレクタ47はF
を選択しシフトレジスタ42でFを保持する。次に加減
算器を減算モードとし演算することにより(2R)mo
dFを計算したことになる(R≦F)。この結果をM×
Nテーブル22,29に書き込むと同時に再びセレクタ
43で選択しレジスタ44で保持し、セレクタ47では
Rを選択しシフトレジスタ42でこれを保持する。
【0040】加減算器を加算モードとし(2R)mod
F+Rを行う。この結果はレジスタ44に保持され、次
にシフトレジスタ42にはFを保持し減算することによ
り(3R)modFを実行したことになる。この結果
は、M×Nテーブル22,29に書き込むと同時に再び
セレクタ43で選択されレジスタ44に戻される。のよ
うに加算と減算を交互に繰り返すことによりテーブルを
完成させることができる。
【0041】冪乗剰余演算もこの二つの方法、剰余演算
と乗算剰余演算を組み合わせることにより実行すること
ができる。また、このようにP=RmodFの剰余演算
処理をする場合においては、加減算器450,451
…,45n-1は1組でよく、しかもメモリを一切必要と
しないので、回路規模の縮小を実現できる。また、減算
回数は(k+1)回になるが、結果のチェックは必要な
く、剰余演算が終了したことが判明すればよい。剰余演
算の終了はStep6.7において、END=1となっ
た時点で判明できる。また、剰余演算のための予備的な
処理のオーバーヘッドがなく、パフォーマンスの向上が
期待できる。
【0042】図3は圧縮2^k進SD数加減算器45の
回路構成図である。ここでは、加減算の対象となる整数
A,Bを少なくとも一方が圧縮2^k進SD数系である
2^6進SD数に変換して演算を行う場合を説明する。
加減算器45は2^6進SD数に変換されたA,B、及
び下位桁からのキャリー信号CA_Iを入力として、制
御回路41(図2)からのPLUS_MINUS信号に
対応して加減算を行い、キャリー信号CA_O、サイン
符号C(S)、演算結果C(5)〜C(0)、及びNO
N_ZERO信号を出力する。加減算器45はA、Bの
加減算結果が−(2^(k−1)+1)以上、2^(k
−1)以下となるように工夫してある。同図において、
A(S)はAの正負を表す符号であり、「0」は
「正」、「1」は「負」を表すものとする。B(S)、
C(S)、Q(S)についても同様である。また、A
(5)〜A(0)、B(5)〜B(0)、C(5)〜C
(0)はそれぞれA,B,Cの6桁の2^6進SD数、
Q(6)〜Q(0)は7桁の桁上がりを考慮した2^6
進SD数同士の加減算結果である。また、以降の説明に
おいて、下位桁から桁上げ(キャリー)があるときは、
CA_I=01、下位桁から桁借り(ボロー)があると
きは、CA_I=11、下位桁から桁上げ/桁借りの何
れも生じないときはCA_I=00とする。上位桁への
出力であるCA_Oについても同様とする。
【0043】加減算器51は2^6進SD数A,Bの加
減算を行い、Q(S)、Q(6)〜Q(0)を出力す
る。この加減算器の結果のみにより上位桁への桁上げ/
桁借りのキャリーとサイン符号をデコーダ52で生成
し、サインゼネレータ53、及び加減算器54は、下位
桁からの桁上げ/桁借りを考慮した上で当該桁の加減算
結果と正負のサインビットとを生成する。上位桁への桁
上げ/桁借りが生じていても加減算器51の結果からの
2^kを差し引く処理や、2^kを加える処理を当該桁
のサインビットの生成方法のみで不要としている。
【0044】デコーダ52はキャリー信号CA_Oと下
位からのキャリーを考慮しないサイン符号を出力するた
めの回路であり、Q(S),Q(6),Q(5)が0,
1,xである場合には、CA_O=01,S=0を出力
する。ここで、xは0又は1の何れかとする。同様に、
Q(S),Q(6),Q(5)が0,0,1である場合
には、CA_O=01,S=1を出力し、Q(S),Q
(6),Q(5)が0,0,0である場合には、CA_
O=00,S=0を出力し、Q(S),Q(6),Q
(5)が1,1,1である場合には、CA_O=00,
S=1を出力し、Q(S),Q(6),Q(5)が1,
1,0である場合には、CA_O=11,S=0を出力
し、Q(S),Q(6),Q(5)が1,0,xである
場合には、CA_O=11,S=1を出力する。
【0045】サインゼネレータ53はA,Bの加減算結
果と下位からのキャリーによって当該桁の正負を判別す
るための回路であり、CA_I=01、Q(5)〜Q
(0)=3FHである場合には、C(S)=0、CA_
I=11、Q(5)〜Q(0)=0である場合には、C
(S)=1とし、その他では、C(S)=Sとする。加
減算器54は下位からの桁上げ/桁借りを考慮してC
(5)〜C(0)を出力するための回路であり、CA_
I=00である場合には、C=Qとし、CA_I=01
である場合には、C=Q+1とし、CA_I=11であ
る場合には、C=Q−1とする。OR回路55はC
(5)〜C(0)の論理和をとり、Cが0であるか否か
を示すNON_ZERO信号を出力する。C=0である
場合には、NON_ZERO=0となり、C≠0である
場合には、NON_ZERO=1となる。
【0046】従来では桁数の多い整数の加減算における
キャリー及びボローの伝播に起因する処理時間の増大を
抑止するため、キャリーやボローが2桁以上に伝播しな
いSD数系を利用しており、従来の方式では、2^k進
SD数の演算において、演算結果が2より大きければキ
ャリーを上位に上げて演算結果から2^kを引き、演算
結果が2より小さければボローを上げて演算結果に2^
kを加えており、加減算器から出力されるSD数の範囲
は−(2^k)+1以上、(2^k)−1以下である。
これに対し、本実施形態では、圧縮2^k進SD数加減
算器から出力される2^k進SD数の範囲は−(2^
(k−1)+1)以上、2^(k−1)以下とし、従来
のキャリーやボローが2桁以上に伝播しないことと同時
にSD数の採り得る範囲をおよそ1/2とすることで、
演算結果を格納するメモリテーブルの容量を大幅に削減
している。
【0047】また、従来では加減算におけるキャリー及
びボローの発生を調べるには、サイン符号を含め、加減
算結果の全ての桁(2^k桁〜2^0桁)をチェックす
る必要があったが、上記のデコーダ52によれば、サイ
ン符号と2^k桁、2^(k−1)桁、つまり、Q
(S),Q(6),Q(5)のみをチェックすれば足り
るため、演算の遅延時間を短くすることができ、処理速
度の向上を実現することができる。
【0048】本実施形態の暗号処理プロセッサによれ
ば、鍵のビット数が1024ビットの場合、40Kビッ
ト毎秒(40MHzクロック)以上で演算処理が可能で
あることが確認できた。ホストコンピュータ側の処理能
力の範囲内で、暗号処理プロセッサを複数並べて並列処
理すると、暗号化処理スピードはプロセッサの数だけさ
らに倍化できる。
【0049】尚、上記の説明では暗号鍵Eを2分割して
並列処理する場合を説明したが、これに限らず、例え
ば、n桁2^k進SD数暗号鍵EをE1、E2、…E
j…、Epのようにp分割し(pはnより十分小さい
値)、C=(((M^E1)modF)×((M^E2)m
odF)×…×((M^Ej)modF)×…×((M^
p)modF))modFより暗号文Cを求めること
もできる。この場合、Ejの桁のうちEj-1に対応する桁
は全て0となる(2≦j<<n)。また、上記の説明は平
分の暗号化を例に説明したが、これと双対をなす暗号文
の復号化についても同様に適用することができる。
【0050】
【発明の効果】本発明によれば、整数Eを複数に分割し
てそれぞれを平行して冪乗剰余演算を行うことができる
ため、演算速度を向上することができる。また、2^k
進SD数の加減算結果を−(2^(k−1)+1)以
上、2^(k−1)以下とすることにより、2^k進S
D数の採り得る整数範囲を従来のおよそ半分とし、デー
タ量の削減を図り回路規模を小さくすることができ、演
算速度の向上を図ることができる。
【図面の簡単な説明】
【図1】暗号処理プロセッサのブロック構成図である。
【図2】剰余演算回路の回路構成図である。
【図3】加減算回路の回路構成図である。
【符号の説明】
10…ホスト・インターフェース回路、11…暗号鍵上
位レジスタ、12…暗号鍵下位レジスタ、13…剰余基
数レジスタ、14…平文レジスタ、15…メイン・コン
トロール回路、16…乗算剰余演算演算コントロール回
路、17…累乗演算コントロール回路、18…M×Mテ
ーブル、19…M×Mテーブル・リードコントロール回
路、20…冪乗剰余演算回路、21…乗算コントロール
回路、22…M×Nテーブル、23…剰余演算コントロ
ール回路、24…SD数系加減算器、25…アービタ回
路、26…M×Nテーブル・リード・コントロール回
路、27…C1×C2コントロール回路、28…乗算コ
ントロール回路、29…M×Nテーブル、30…剰余演
算コントロール回路、31…SD数系加減算器、32…
SD数系デコード回路、33…FIFOバッファ
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成13年12月11日(2001.12.
11)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0031
【補正方法】変更
【補正内容】
【0031】暗号化鍵E(復号化鍵D)はそれぞれの
号化処理時間が同程度の上位データEu(Du)と、下
位データEd(Dd)に分割され、レジスタ11,12
に格納された後、M×Mテーブル・リード・コントロー
ル回路19へ出力され、平分M及び剰余基数Fは冪乗剰
余演算回路20へ出力されて、メイン・コントロール回
路15の制御下において、M×Mテーブル18の作成を
待ち、C1=(M^Eu)modF、C2=(M^Ed)
modFの冪乗剰余演算処理が行われる。冪乗剰余演算
回路20ではさらに、C=(C1×C2)modFの乗
算剰余演算を行い、暗号文C(解読文M)を求める。暗
号文C(解読文M)はSD数系デコード回路32にて2
進数のビット列に変換され、FIFOバッファ33を介
しホストインタフェース回路10を通して出力される。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0036
【補正方法】変更
【補正内容】
【0036】冪乗剰余演算回路20は大きく2つのブロ
ックに分割することができる。1つは、C1=(M^E
u)modFの演算を行うブロックで、乗算コントロー
ル回路21、M×Nテーブル22、剰余演算コントロー
ル回路23、圧縮SD数系加減算器24から成る(以
下、C1ブロックと称する)。もう1つはC2=(M^
Ed)modFの演算を行うブロックで、乗算コントロ
ール回路28、M×Nテーブル29、剰余演算コントロ
ール回路30、圧縮SD数系加減算器31から成る(以
下、C2ブロックと称する)。乗算コントロール回路2
1,28は、Qの値が決定される毎に、(Q×0)mo
dF〜(Q×(2^(k−1)+1))modFの演算
を圧縮SD数系加減算器24,31を使用して行って、
その演算結果をM×Nテーブル22,29に書込む。こ
こでは、圧縮2^k進SD数系列の冗長性を利用して、
Cjの採り得る整数範囲を−(2^(k−1)+1)≦
Cj≦(2^(k−1))としているため、M×Nテー
ブル22,29のデータ容量、及びテーブル作成時間を
従来と比較して、(2^(k−1)+1)/((2^
k)−1)倍にし(kの値が大きい場合には、およそ1
/2となる)、並列で演算を行うため記憶回路は同等と
なるが作成時間の大幅な短縮を実現することができる。
また、圧縮2^k進SD数の範囲を上記の範囲に制限し
ても、SD数系デコード回路32において、完全な整数
に戻せることが確認できている。M×Nテーブル・リー
ド・コントロール回路26は、Step5.3のG=
(Q×Cj)modFまたは、G=−(Q×(−C
j))modFにおいて、M×Nテーブル22,29に
書込まれた乗算剰余演算結果を、Cjをアドレスとして
読み出す。C1×C2コントロール回路27はC1ブロ
ック及びC2ブロックの演算の監視を行うとともに、
く演算が終了したブロックからのデータによりあらかじ
めM×Nテーブル(M×Nテーブル22)を作成し、作
成終了と他ブロックからの算出した値(C2)から、C
=(C1×C2)modFの乗算剰余演算を行い、暗号
文Cを求める。また、アービタ回路25は冪乗剰余演算
回路20内の演算処理の流れを監視し、M×Mテーブル
18作成時はM×Nテーブル22,29及び、M×Nテ
ーブル・リード・コントロール回路26をコントロール
し(両方のM×Nテーブルが必要)、M×Mテーブルか
らの読み出しではM×Mテーブル・リード・コントロー
ル回路19にC1,C2ブロックの情報を送る。冪乗剰
余演算コントロール回路16は冪乗剰余演算回路20を
制御し、演算終了を示すステータス信号を取得すると、
メイン・コントロール回路15にその旨を通知する。剰
余演算コントロール回路23及び圧縮SD数系加減算器
24、剰余演算コントロール回路30及び圧縮SD数系
加減算器31はそれぞれC1、C2の乗算剰余演算にお
いて、Step5.5のP=RmodFの演算処理を行
う。 ─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成14年12月27日(2002.12.
27)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0033
【補正方法】変更
【補正内容】
【0033】 Step3.1 C1=1 Step3.2 aj=n−1 Step3.3 if(Eu[aj]>0) then C1=(M^Eu[aj])modF,aj=aj−1 goto Step3.5 Step3.4 if(aj>0) then aj=aj−1 goto Step3.3 Step3.5 ai=k Step3.6 Q1=C1 Step3.7 P1=(Q1×C1)modF Step3.8 C1=P1 Step3.9 ai=ai−1 Step3.10 if(ai>0) then goto Step3.6 Step3.11 if(Eu[aj]=0) then goto Step3.15 Step3.12 Q1=(M^Eu[aj])modF Step3.13 P1=(Q1×C1)modF Step3.14 C1=P1 Step3.15 if(aj>0) then aj=aj−1 goto Step3.5 [C2=(M^Ed)modFの計算アルゴリズム] Step4.1 C2=1 Step4.2 bj=m−1 Step4.3 if(Ed[bj]>0) then C2=(M^Ed[bj])modF,bj=bj−1 goto Step4.5 Step4.4 if(bj>0) then bj=bj−1 goto Step4.3 Step4.5 bi=k Step4.6 Q2=C2 Step4.7 P2=(Q2×C2)modF Step4.8 C2=P2 Step4.9 bi=bi−1 Step4.10 if(bi>0) then goto Step4.6 Step4.11 if(Ed[bj]=0) then goto Step4.15 Step4.12 Q2=(M^Ed[bj])modF Step4.13 P2=(Q2×C2)modF Step4.14 C2=P2 Step4.15 if(bj>0) then bj=bj−1 goto Step4.5 ここで、Step3.11によりEu(Du)の下位E
d(Dd)m桁に相当する部分は0であるので、Ste
p3.12〜Step3.14をスキップすることがで
き、下位Ed(Dd)の演算時間と同等となるので短い
鍵で処理をしたのと同様となる。上述したC=(C1×
C2)modF、Step3.7のP1=(Q1×C
1)modF、Step4.7のP2=(Q2×C2)
modFの乗算剰余演算を求める式をP=(Q×C)m
odFとして計算するアルゴリズムを以下に記述する。 [P=(Q×C)modFの計算アルゴリズム] 変数 j,k,P,G,R Cを2^k進SD数系数列に変換したときの桁数 n Cの2^k進SD数系数列のj桁目の値 Cj 但し、Cjの採り得る整数範囲を−(2^(k−1)+
1)≦Cj≦2^(k−1)とする。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 多数桁の整数E,M,Fに対してC=
    (M^E)modFなる冪乗剰余演算を行う冪乗剰余演
    算装置において、 E,M,Fを各桁が正の2^k進SD数に変換する変換
    手段と、 n桁の2^k進SD数に変換された整数Eに対して、E
    =E1+E2+…+Epなる関係を満たし、Mのそれぞれ
    の値による累乗演算とFでの剰余演算を合わせた処理時
    間が同程度の2^k進SD数の集合E1,E2,…,Ep
    を記憶する記憶手段と、 前記記憶手段に記憶されているE1,E2,…,Epの値
    を読取り、(M^E1)modF、(M^E2)modF、
    …、(M^Ep)modFの冪乗剰余演算を並列的に行
    い、各々の演算結果から、C=(((M^E1)mod
    F)×((M^E2)modF)×…×((M^Ep)mo
    dF))modFとしてCを算出する乗算剰余演算手段
    とを備える、冪乗剰余演算装置。
  2. 【請求項2】 各桁の範囲が−(2^(k−1)+1)
    以上、2^(k−1)以下の範囲に制限されたn桁の圧
    縮2^k進SD数同士、若しくはn桁の圧縮2^k進S
    D数とn桁の2^k進SD数同士の加減算を各桁毎に並
    列して演算処理を行うためのn個の圧縮SD数加減算器
    から構成される加減算装置であって、前記圧縮SD数加
    減算器は、当該桁での加減算結果が2^(k−1)以上
    であれば、桁上げを示すキャリー信号を上位桁へ出力
    し、前記加減算結果が−2^(k−1)未満であれば、
    桁借りをするキャリー信号を上位桁へ出力することによ
    り、桁上げ/桁借りした元の計算結果はサインビットを
    反転させるだけで2の補数とし、この結果と下位桁の圧
    縮SD数加減算器からの桁上げ若しくは桁借りを示すキ
    ャリー信号とを再計算した結果、当該桁での最終演算結
    果が取り得る値の範囲を−(2^(k−1)+1)以
    上、2^(k−1)以下とする、加減算装置。
  3. 【請求項3】 各桁の範囲が−(2^(k−1)+1)
    以上、2^(k−1)以下の範囲に制限されたn桁の圧
    縮2^k進SD数同士、若しくはn桁の圧縮2^k進S
    D数とn桁の2^k進SD数同士の加減算を各桁毎に並
    列して演算処理を行うための加減算方法であって、 当該桁での加減算結果が2^(k−1)以上であれば、
    桁上げを示すキャリー信号を上位桁へ出力し、前記加減
    算結果が−2^(k−1)未満であれば、桁借りをする
    キャリー信号を上位桁へ出力することにより、桁上げ/
    桁借りした元の計算結果はサインビットを反転させるだ
    けで2の補数とし、この結果と下位桁の圧縮SD数加減
    算器からの桁上げ若しくは桁借りを示すキャリー信号と
    を再計算した結果、当該桁での最終演算結果が取り得る
    値の範囲を−(2^(k−1)+1)以上、2^(k−
    1)以下とする、加減算方法。
  4. 【請求項4】 圧縮2^k進SD数R,各桁が正の2^
    k進SD数Fに対してP=RmodFなる剰余演算をツ
    リー方式で行う剰余演算装置であって、 レジスタA、レジスタB、レジスタC、レジスタj、及
    びレジスタPを備え、請求項3に記載の加減算方法を用
    いて、下記の第1ステップから第7ステップを順次実行
    することによりレジスタPの値を解とする。 第1ステップ:レジスタAにRの値を代入し、レジスタ
    BにF×(2^k)を代入し、レジスタjにkの値を代
    入する。 第2ステップ:レジスタCにレジスタAの値からレジス
    タBの値を減じた値を代入する。 第3ステップ:レジスタCの値が0である場合にはエラ
    ー処理をして第7ステップに移行する。 第4ステップ:レジスタCの値が正であって、レジスタ
    jの値がkに等しい場合には、レジスタCの値をレジス
    タAに代入して第7ステップに移行する。 第5ステップ:レジスタCの値が正である場合には、レ
    ジスタAにレジスタCの値を代入する。 第6ステップ:レジスタjの値が0より大きい場合に
    は、レジスタBの値を1/2にし、レジスタjの値を1
    デクリメントして、第2ステップに移行する。 第7ステップ:レジスタAの値をレジスタPに代入し、
    終了処理をする。
  5. 【請求項5】 各桁の値が−(2^(k−1)+1)以
    上、2^(k−1)以下に制限されたn桁の圧縮2^k
    進SD数Q、C、及び各桁が正の2^k進SD数Fに対
    して、P=(Q×C)modFなる乗算剰余演算を行う
    乗算剰余演算装置であって、レジスタP、レジスタG、
    レジスタR、レジスタj、及びレジスタCを備え、Cj
    をCのj桁目の値とし、下記の第1ステップから第6ス
    テップを順次実行することによりレジスタPの値を解と
    する。 第1ステップ:レジスタPに0を代入し、レジスタjに
    nを代入する。 第2ステップ:レジスタjにj−1を代入する。 第3ステップ:Cjの値が0以上であるときには、Cj
    の値とQとの積にFを法とする剰余演算結果をレジスタ
    Gに代入し、Cjの値が負であるときには、Cjの値の
    絶対値とQとの積にFを法とする剰余演算結果に(−
    1)を乗じた値をレジスタGに代入する。 第4ステップ:レジスタPの値に(2^k)を乗じ、こ
    の値にレジスタGの値を加算した値をレジスタRに代入
    する。 第5ステップ:レジスタRの値が負であるときには、レ
    ジスタRの値とFとを加算した値をレジスタPに代入
    し、レジスタRの値が0以上であるときには、レジスタ
    Rの値にFを法とする剰余演算結果をレジスタPに代入
    する。 第6ステップ:レジスタjの値が正であるときには、第
    2ステップに移行する。
JP2001374904A 2001-12-07 2001-12-07 冪乗剰余演算装置及び冪乗剰余演算方法 Pending JP2003177669A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001374904A JP2003177669A (ja) 2001-12-07 2001-12-07 冪乗剰余演算装置及び冪乗剰余演算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001374904A JP2003177669A (ja) 2001-12-07 2001-12-07 冪乗剰余演算装置及び冪乗剰余演算方法

Publications (1)

Publication Number Publication Date
JP2003177669A true JP2003177669A (ja) 2003-06-27

Family

ID=19183380

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001374904A Pending JP2003177669A (ja) 2001-12-07 2001-12-07 冪乗剰余演算装置及び冪乗剰余演算方法

Country Status (1)

Country Link
JP (1) JP2003177669A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010171622A (ja) * 2009-01-21 2010-08-05 Canon Inc 画像拡大方法、画像拡大装置および画像形成装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010171622A (ja) * 2009-01-21 2010-08-05 Canon Inc 画像拡大方法、画像拡大装置および画像形成装置
US8379268B2 (en) 2009-01-21 2013-02-19 Canon Kabushiki Kaisha Image enlargement method, image enlargement apparatus, and image forming apparatus

Similar Documents

Publication Publication Date Title
US6795553B1 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
US8504602B2 (en) Modular multiplication processing apparatus
US8209369B2 (en) Signal processing apparatus and method for performing modular multiplication in an electronic device, and smart card using the same
JP7067633B2 (ja) 秘密右シフト演算システム、秘密除算システム、それらの方法、秘密計算装置、およびプログラム
US7024560B2 (en) Power-residue calculating unit using Montgomery algorithm
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
JP4351987B2 (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP3542278B2 (ja) モンゴメリ・リダクション装置及び記録媒体
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
US7113593B2 (en) Recursive cryptoaccelerator and recursive VHDL design of logic circuits
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
JP2003177669A (ja) 冪乗剰余演算装置及び冪乗剰余演算方法
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP5179933B2 (ja) データ処理装置
KR102348797B1 (ko) Rsa 암호화 시스템의 rsa 회로 모듈
JP2005316038A (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム
CN111201559B (zh) 置换装置、置换方法、以及记录介质
Rodriguez-Henriquez New algorithms and architectures for arithmetic in GF (2 (m)) suitable for elliptic curve cryptography
CN114444707A (zh) 数据处理方法、装置、设备及存储介质
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置
CN114444706A (zh) 数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050915

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060123