JP2000207387A - 演算装置及び暗号処理装置 - Google Patents

演算装置及び暗号処理装置

Info

Publication number
JP2000207387A
JP2000207387A JP11011989A JP1198999A JP2000207387A JP 2000207387 A JP2000207387 A JP 2000207387A JP 11011989 A JP11011989 A JP 11011989A JP 1198999 A JP1198999 A JP 1198999A JP 2000207387 A JP2000207387 A JP 2000207387A
Authority
JP
Japan
Prior art keywords
unit
multiplication
carry
integer
circuit
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
JP11011989A
Other languages
English (en)
Inventor
Kazue Shiba
万恵 斯波
Shinichi Kawamura
信一 川村
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP11011989A priority Critical patent/JP2000207387A/ja
Priority to US09/487,483 priority patent/US7277540B1/en
Priority to FR0000680A priority patent/FR2788867B1/fr
Publication of JP2000207387A publication Critical patent/JP2000207387A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 本発明は、最小のアーキテクチャを追加する
だけで整数型の演算に加えて2の拡大体上の演算をも実
行できる。 【解決手段】 多倍長の積和演算装置1であって、整数
型の単位乗算を実行する場合にはキャリーを伝搬させて
単位乗算回路(11,41)を動作させ、2の拡大体の
単位乗算を実行する場合にはキャリーを伝搬させずに単
位乗算回路(12,41)を動作させるようにした演算
装置。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は演算装置及び暗号
処理装置、特に例えばICカードに実装される暗号処理
用コプロセッサ等に用いるのに適した演算装置及び暗号
処理装置に関するものである。
【0002】
【従来の技術】公開鍵暗号のLSI実装においては、従
来からRSA方式等の整数型の演算を行う暗号方式が主
に採用されている。この方式では、桁数の大きい整数に
ついての演算を行う必要があるため、ICカード等に応
用する場合には専用コプロセッサが必要とされる。この
ような専用コプロセッサを実装して暗号処理の多倍長整
数演算を実現させる方式については既に多数の実績があ
る。
【0003】一方、近年整数型ではなく、2の拡大体
(GF(2^m):Galois Field(ガロア
フィールド))といわれる代数系の上で構成される暗号
系,特に2の拡大体の楕円暗号方式が注目されている。
【0004】この2の拡大体演算を用いる暗号方式にお
いても、RSA方式等の整数型の演算の方式の同様に、
扱うビット数を160ビット以上と大きくとる必要があ
る。このため、ICカードのようなCPUの演算力が低
い装置上でこれを実現しようとすると比較的処理時間が
かかる。したがって、専用のハードウェア(コプロセッ
サ)を用いて高速化したいという要求がある。
【0005】このようにRSA方式であっても、楕円暗
号方式であっても、ICカード等において高速な暗号処
理を実現させるためには専用の演算用コプロセッサを用
意する必要がある。
【0006】図10は暗号処理用のコプロセッサを含む
ICカード用LSIのブロック図である。
【0007】同図に示す構成要素を含む専用LSIが例
えばICカードに組み込まれる。このLSIにおいて
は、CPU、RAM、ROM、EEPROMが1チップ
に収容され、コプロセッサはRAM、演算部、制御部か
ら構成される。コプロセッサはCPUの制御下にあって
多倍長のべき乗剰余演算や四則演算といった公開鍵暗号
の基本演算に関しCPUを補助する。つまり、暗号の基
本演算を行う部分は図10におけるコプロセッサであ
り、この部分がどのように構成されているかが問題とな
る。
【0008】図11は図10に示すLSIにおけるコプ
ロセッサ部分の構成例を示すブロック図である。
【0009】RSA方式では整数型の演算が行われるた
め、このコプロセッサは図11に示すように整数型の乗
算器として構成されている。
【0010】一方、楕円暗号方式のLSIを作成する場
合、その全体的な構成は図10に示すLSIと同様ある
いはこれと類似する構成のものとなるが、コプロセッサ
部分における演算は整数型の演算でなく、2の拡大体演
算を行うコプロセッサを用意する必要がある。
【0011】図12は多項式基底の2の拡大体演算を行
うコプロセッサのハードウェア構成例を示すブロック図
である。
【0012】同図は、「楕円暗号のハードウェア実装,
SCIS’98−10.1.C」にて発表された特殊な
既約多項式を用いる円分体といわれる2の拡大体の一種
の演算装置を示している。この演算装置は、2の拡大体
上の加算、二乗、乗算及び逆元演算を実行できる構成を
備えており、これによって楕円曲線上の点の演算に必要
な2の拡大体の演算を実行する。このような演算装置を
IC化すれば、図10のLSIに適用し得る2の拡大体
演算用のコプロセッサになる。
【0013】ここで、加算回路および二乗算回路はm個
のEX−ORで構成され、乗算回路81は図13に示す
回路構成で実現する。
【0014】図13は円分体といわれる2の拡大体の乗
算回路を示す図である。
【0015】この乗算回路81は、mビットの入力レジ
スタA,Bを持ち多項式a(x)の係数を入力レジスタ
Aに固定値として入力し、入力レジスタBからは多項式
b(x)の係数を最上位ビットから1クロック毎にシフ
トしながら演算していく。同図におけるブロックDはフ
ィードバックレジスタを構成するフリップフロップであ
る。m回シフトした時点での各ブロックDの値が出力レ
ジスタCに読み出され、a(x)*b(x)の演算結果
となる。
【0016】図11と図13夫々の回路を見比べてもわ
かるように、乗算と一口に言っても整数型乗算と多項式
基底の2の拡大体乗算とでは、その乗算を実行するため
のアーキテクチャーが全く異なる。したがって、従来は
暗号方式毎にハードウェアを構成しようとする試みがな
されてきた。
【0017】
【発明が解決しようとする課題】上記したように、楕円
暗号方式は現在注目されてはいるものの、現状ではRS
A暗号方式が未だ主流であるため、楕円暗号方式を用い
るICカードにおいてもRSA暗号にも対応させたいと
いう要請が強い。
【0018】ここで、従来の整数型の暗号と2の拡大体
の暗号を同一ICカードに実装しようとした場合、上記
した従来技術の延長ではそれぞれに対応するコプロセッ
サを搭載する必要が生じる。しかしながら、2つのコプ
ロセッサを搭載したのでは、面積制約の大きいICカー
ドにおいてそのチップ面積を圧迫するという問題が生じ
る。
【0019】本発明は、このような実情を考慮してなさ
れたもので、最小のアーキテクチャを追加するだけで整
数型の演算に加えて2の拡大体上の演算をも実行できる
演算装置及び暗号処理装置を提供することを目的とす
る。
【0020】
【課題を解決するための手段】上記課題を解決するため
に、請求項1に対応する発明は、多倍長の積和演算装置
であって、整数型の単位乗算を実行する場合にはキャリ
ーを伝搬させて単位乗算回路を動作させ、2の拡大体の
単位乗算を実行する場合にはキャリーを伝搬させずに単
位乗算回路を動作させるようにした演算装置である。
【0021】本発明はこのような手段を設けたので、最
小のアーキテクチャを追加するだけで整数型の演算に加
えて2の拡大体上の演算をも実行することができる。
【0022】次に、請求項2に対応する発明は、少なく
とも整数型の単位乗算回路を含んで構成される多倍長整
数の積和演算装置であって、整数型の単位乗算回路と論
理的に隣接して配置された2の拡大体の単位乗算回路
と、整数型の単位乗算回路を使用するか、2の拡大体の
単位乗算回路を使用するかを選択する選択手段とを備え
た演算装置である。
【0023】本発明はこのような手段を設けたので、2
の拡大体の単位乗算回路を追加するだけで整数型の乗算
と2の拡大体の乗算の双方を実行することができる。
【0024】次に、請求項3に対応する発明は、少なく
とも整数型の単位乗算回路を含んで構成される多倍長整
数の積和演算装置であって、整数型の単位乗算を実行す
るか、2の拡大体の単位乗算を実行するかの選択信号を
整数型の単位乗算回路に出力する制御手段を備えるとと
もに、整数型の単位乗算回路は、多倍長の積和演算を実
行する際に、整数型の単位乗算を実行すべき旨の選択信
号を受けたときにはキャリーを伝播し、2の拡大体の単
位乗算を実行すべき旨の選択信号を受けたときにはキャ
リー伝搬をしないキャリー伝搬制御手段を備え、単位乗
算回路におけるキャリー伝搬を制御することにより、整
数型乗算と2の拡大体の乗算を切替可能に構成された演
算装置である。
【0025】本発明はこのような手段を設けたので、キ
ャリー伝搬制御手段を追加するだけで整数型の乗算と2
の拡大体の乗算の双方を実行することができる。
【0026】次に、請求項4に対応する発明は、請求項
3の演算装置において、キャリー伝搬制御手段は、選択
信号とキャリーアウト信号を入力とするスイッチによっ
て、1ビット毎の全加算器におけるキャリーの伝搬制御
を行う演算装置である。
【0027】本発明はこのような手段を設けたので、選
択信号とキャリーアウト信号を入力とするスイッチによ
り請求項3に係る発明を実現させることができる。
【0028】次に、請求項5に対応する発明は、請求項
3の演算装置において、キャリー伝搬制御手段は、1ビ
ット毎の全加算器における2入力a,bの排他的論理和
の結果cを加算結果として出力するか、結果cと入力キ
ャリーとの排他的論理和の結果dを加算結果として出力
するかを切り替える選択手段からなる演算装置である。
【0029】本発明はこのような手段を設けたので、選
択手段により請求項3に係る発明を実現させることがで
きる。
【0030】次に、請求項6に対応する発明は、請求項
1〜5の演算装置において、整数型の乗算を実行する場
合にはキャリーを伝搬させて加算を実行し、2の拡大体
の乗算を実行する場合にはキャリーを伝搬させずに加算
を実行する加算回路を備えた演算装置である。
【0031】本発明はこのような手段を設けたので、積
和演算における加算部分についても整数型の乗算と2の
拡大体の乗算との双方を確実に実行することができる。
【0032】次に、請求項7に対応する発明は、請求項
1〜6の何れかの演算装置を備え、演算装置による整数
型の演算に基づく暗号化又は復号処理と、演算装置によ
る2の拡大体の演算に基づく暗号化又は復号処理との双
方を切替可能に構成された暗号処理装置である。
【0033】本発明はこのような手段を設けたので、R
SA暗号等の整数型の演算に基づく暗号と、楕円曲線暗
号等の2の拡大体の演算に基づく暗号の双方の処理を行
うことができる。
【0034】
【発明の実施の形態】以下、本発明の実施の形態につい
て説明する。 (発明の第1の実施の形態)図1は本発明の第1の実施
形態に係る演算装置の構成例を示すブロック図である。
【0035】コプロセッサ1として構成される本実施形
態の演算装置は、整数型乗算及び2の拡大体乗算の双方
の演算が可能な多倍長積和乗算装置であり、この乗算処
理を仕方を制御することにより、加算、二乗あるいは逆
元等の他の演算を実行するものである。また、本演算装
置がLSI等に組み込まれることによってRSA暗号及
び楕円暗号の双方が実現可能な暗号処理装置が構成され
る。ここで組込対象となるLSIは例えば図10に示す
ような装置である。
【0036】このコプロセッサ1において演算部4は制
御部5によってコントロールされ、演算途中のデータを
格納するメモリ2から接続される32ビットのデータバ
ス3からデータを入出力するようになっている。
【0037】データバス3からの入力データはバッファ
Z,Y,Xに格納され、データバス3への出力データは
バッファRに格納されるようになっている。
【0038】入力データX及びYは乗算対象となるデー
タであり、このうちデータYは一度に多数桁の乗算とな
るのを回避するために所定桁毎に分割されたデータとし
て入力される。一方、データZは乗算を複数回に分けて
実行するために生じる途中結果であり、これをXYの乗
算結果に足し、さらにその和の結果にキャリーCと言わ
れる桁上がり部分を足して1サイクルの乗算が終了す
る。その結果からキャリーを除いたデータRがバッファ
Rを介してデータバス3に出力され、次のサイクルの演
算にデータZとして使用される。このサイクルを複数回
繰り返すことにより多倍長整数乗算あるいは2の拡大体
乗算(厳密には後述のc’)の乗算が実現される。
【0039】また、コプロセッサ1は、上記演算を実現
するために、バッファX,Y,Z,Rの他、整数型乗算
回路11,2の拡大体上乗算回路12,セレクタ13,
加算回路14,加算回路15,キャリー保持部16及び
制御部5を備えている。
【0040】整数型乗算回路11は、バッファX内のデ
ータXとバッファY内のデータYとを整数型乗算し、そ
の結果をセレクタ13に出力する。
【0041】2の拡大体上乗算回路12は、バッファX
内のデータXとバッファY内のデータYとにより2の拡
大体上乗算の一部(c’)を実行し、その結果をセレク
タ13に出力する。
【0042】セレクタ13は、制御部5からの信号S1
に従って、整数型乗算回路11又は2の拡大体上乗算回
路12からの出力の何れかを加算回路14に出にする。
【0043】加算回路14は全加算器からなり、バッフ
ァZ内のデータZとセレクタ出力を加算して加算回路1
5に出力する。この加算回路14においては、整数型の
加算と2の拡大体の加算との切替が制御信号S1に従っ
て行われるようになっている。なお、この加算切替につ
いては後述する。
【0044】加算回路15は、加算回路14の出力にキ
ャリー保持部16に保持されたキャリーCを加算し上位
32ビットを次のキャリーCとしてキャリー保持部16
に出力し、下位8ビットをこのサイクルの演算結果であ
るデータRをとしてバッファRに出力する。なお、加算
回路15においても、制御信号S1により、整数型の加
算と2の拡大体の加算との切替が行われるようになって
いる。
【0045】キャリー保持部16は、加算回路15から
出力されたキャリーCを保持し、次の演算サイクルにお
いて保持したキャリーCを加算回路15に与える。
【0046】制御部5は、整数演算制御部21と2の拡
大体演算制御部22からなり、これらの何れかのコマン
ド群に従って演算部を制御する。このコマンド切り替え
は、外部のCPU(例えば図10に示すCPU)からの
指示によって行われる。
【0047】整数演算制御部21は、演算部4を多倍長
整数演算型の乗算器として動作するように制御するもの
である。このために、制御信号S1によりセレクタ13
が整数型単精度乗算器11の出力を加算回路14に出力
するように制御するとともに、加算回路14及び15を
整数型加算回路として動作するよう制御する。さらに、
整数型乗算器として演算部4の動作を制御することで他
の四則演算などの演算処理の実行する。
【0048】また、2の拡大体演算制御部22は、演算
部4を2の拡大体乗算器として動作するように制御する
ものである。このために、制御信号S1によりセレクタ
13が2の拡大体型単精度乗算器11の出力を加算回路
14に出力するように制御するとともに、加算回路14
及び15を2の拡大体型加算回路として動作するように
制御する。さらに、2の拡大体型乗算器として演算部4
の動作を制御することで加算、二乗算を実現する。
【0049】なお、制御部5からは、上記した各処理を
実現するため、制御信号S2を出力して各部を制御す
る。
【0050】次に、以上のように構成された本実施形態
における演算装置の動作について説明する。
【0051】この演算装置(コプロセッサ1)は、整数
型の乗算装置に乗算回路12,セレクタ13等を組み込
むことにより、2の拡大体の乗算装置としての処理を実
現可能とするものであるがある。ここで、2の拡大体で
は、以下に示すようにm−1次の多項式をmビットのベ
クトル表現で表すことができる。
【0052】 a(x)=am-1x^(m-1)+am-2x^(m-2)+…+a1x+a0 …(1) =[am-1,…,a1,a0] ここで、2の拡大体の乗算はGF(2)上のm次の規約
多項式g(x)をモジュラスとする剰余乗算である。ま
た、2の拡大体の二つの元a(x)とb(x)の積c
(x)は、次のように定義されている。
【0053】 c(x)=a(x)*b(x)mod g(x) …(2) =Σa*x^k*b(x)mod g(x) 2の拡大体の多項式の乗算は、図13に示すように乗数
のサイクルシフトによるシフトレジスタを構成し、mサ
イクルシフト後の剰余多項式を乗算結果とするのが一般
的であるが、本実施形態では整数型の暗号処理LSIで
広く使われている多倍長の積和演算回路に若干の変更を
加えて処理する。
【0054】なお、制御部5からの制御信号S1によ
り、コプロセッサ1が整数型の演算装置として動作する
ときには、同演算装置は多倍長積和演算回路として機能
している。この多倍長積和演算回路において、制御信号
S1による切替により、2の拡大体上乗算回路12にお
いて2の拡大体の乗算の一部分である(3)式が計算さ
れる。
【0055】 c’(x)=a(x)*b(x) …(3) なお、2の拡大体上乗算回路12ではc’を計算する段
階においては(2)式における「c(x)’mod g
(x)」の部分は計算されない。すなわちc’自体は、
制御信号S1により乗算回路12及び加算回路14,1
5を切り替えるのみで、整数型乗算における2つの数の
積と全く同様に演算される。
【0056】なお、c’(x)=a(x)*b(x)に
おいてmビットの乗数、被乗数は32ビットに分割され
てメモリから読み出され、演算結果は32ビット毎にメ
モリに書き込まれる。この時、最終的な演算結果は2m
ビットとなる。
【0057】整数型乗算回路11による整数演算と2の
拡大体上乗算回路12による2の拡大体多項式演算の違
いは、桁上がりの有無である。整数演算では足し算の論
理式は 0+0+Carry(=0)=0、Carry=0 1+0+Carry(=0)=1、Carry=0 1+1+Carry(=0)=0、Carry=1 という様に下位ビットのキャリーを考慮した演算をしな
ければならないのに対し、2の拡大体の代数系において
は、各ビットが多項式における次数の係数を示している
ため異なる次数への桁上がりを考慮しなくてもよい。
【0058】このことに着目して本実施形態では整数型
演算器(乗算器や加算器)において、キャリー伝播を許
す通常のモードと、キャリー伝播を実行しないモードを
切り替えて使えるようにしているのである。ここでキャ
リー伝播を許さない(実行しない)モードは2の拡大体
演算を行うのに用いられる。なお、キャリー伝播のモー
ドを切り替えのために追加すべき回路は全体の回路規模
に比べわずかである。
【0059】図2はc’(x)=a(x)*b(x)を
実現するための4*4ビットの単位乗算の回路構成例を
示す図である。
【0060】同図の単位演算装置を8*32ビット構成
にしたものが図1における2の拡大体上乗算回路12で
ある。なお、図2(b)の回路は同図(a)の回路の入
力部分29を示すものである。
【0061】一方、図3は整数型乗算を実現するための
4*4ビットの単位乗算の回路構成例を示す図である。
【0062】同図の単位演算装置を8*32ビット構成
にしたものが図1における整数型乗算回路11である。
なお、図3(a)に用いられる全加算器FAの構成は図
3(c)に示され、さらに図3(c)に示す全加算器F
Aのキャリー31の構成が同図(d)に示されている。
また、図3(b)の回路は同図(a)の回路の入力部分
30を示すものである。
【0063】本実施形態の演算装置では、2の拡大体上
乗算回路12と整数型乗算回路11とが論理的に隣接し
て配置されており、制御部5の2の拡大体演算コマンド
から生成される制御信号S1により整数型、2の拡大体
型のいずれかの乗算回路11,12が選択されて処理が
行われる。
【0064】セレクタ13の出力は次段の加算回路14
に入力される。ここでZ+(Y*X)加算回路14は4
0ビットのデータ(Y*X)と8ビットのデータZの全
加算器だが、ここでも前述の制御信号により各ビットの
加算結果のキャリーを次段へ伝播しないスイッチを付加
することにより2の拡大体の加算が実現される。
【0065】図4は本実施形態におけるコプロセッサに
用いられるキャリー制御機能付きの4ビットのリップル
キャリー型全加算器の構成例を示すブロック図である。
【0066】このような構成の全加算器を、40ビット
データと8ビットデータとの加算が可能となるように拡
張したものが図1の加算回路14である。
【0067】また、図4の回路において、各全加算器3
2の間にはスイッチ33が設けられ、キャリーの伝搬を
制御できるようになっている。
【0068】図5は本実施形態の加算回路に用いられる
全加算器及びキャリー制御スイッチの構成例を示す図で
ある。
【0069】この全加算器32及びスイッチ33は、1
ビット分のキャリー制御機能付き全加算器42を構成し
ている。ここで、全加算器32は、図3(c)に示す全
加算器FAと同様に構成され、全加算器32内のキャリ
ー31は図3(d)に示すキャリーと同様に構成されて
いる。
【0070】また、全加算器32間のキャリー伝搬ライ
ンに設けられたスイッチ33は制御部5からの制御信号
S1によって制御され、整数型演算を行うときには接続
され、2の拡大体演算を行うときには遮断される。
【0071】以上のように構成された加算回路14から
の出力(Z+(Y*X))は加算回路15に引き渡され
る。
【0072】すなわち、演算ブロック最終段のC+Z+
(Y*X)加算回路15によって、乗算結果の40ビッ
トの下位8ビットがデータRとして出力され、上位32
ビットが次のサイクルのZ+(Y*X)に足し込まれ
る。
【0073】ここで、加算回路15は加算回路14と同
様に、前述の制御信号S1により制御される図4に示す
キャリー制御機能付き全加算器であるので、整数型では
LSBに桁あわせをした全加算器として整数型加算が実
行され、2の拡大体演算では2の拡大体加算が実行され
る。
【0074】加算回路15の出力データRはデータバス
3を介して一旦外部のメモリ2に出力され、再びデータ
Zとなってコプロセッサ1内に戻り整数型乗算若しくは
2の拡大体上の乗算が継続され、必要なサイクル数だけ
繰り返されて乗算結果が得られる。
【0075】ここで2の拡大体の乗算コマンドでは、
(2)式の結果が得られるが、2の拡大体乗算は(3)
式に示す定義通り、既約多項式g(x)をモジュラスと
する剰余演算によって完結する。剰余演算は割り算の筆
算同様、被除数の上位桁から商を立て現在の商と除数を
かけたものから現在の被除数を引く(2の拡大体では減
算は加算と同じ)処理を必要なサイクル数だけ繰り返せ
ばよく、2の拡大体の乗算コマンドと加算コマンドを実
行することによって実現できる。2の拡大体の二乗算は
乗算と同じ処理で実現でき、逆元計算は、乗算と二乗算
を相互に繰り返すことにより実現できる。
【0076】一例として、2の拡大体の加算コマンドに
従って演算部4が2の拡大体の加算装置として機能する
場合を説明する。
【0077】2の拡大体上の加算は、通常の多項式の加
算と同じで、同じ次数の係数同士の足し算を行う。
【0078】 c(x)=a(x)+b(x) …(4) =[am-1+bm-1,am-2+bm-2,…,a0+b0] このとき、各次数の係数の和は0+0=1+1=0、0
+1=1+0=1となり、整数型加算のようにキャリー
は発生しない。従って、2の拡大体での加算は、一般に
はm個のEX−ORで実装できることになる。
【0079】整数型の乗算装置において加算はc=b+
a*1として扱えるので、本実施形態における2の拡大
体の加算もこのアルゴリズムをそのまま利用し、c
(x)=b(x)+a(x)*1として実行する。この
演算は加算回路14,15に図4の全加算器が用いられ
ていることから、制御信号S1の切替で実現できる。
【0080】また、制御信号S1による切替でコプロセ
ッサ1は図11に示すコプロセッサと同様な機能を持つ
回路となり、整数型演算も実現される。
【0081】上述したように、本発明の実施の形態に係
る演算装置は、整数型乗算装置に、整数型乗算の単位乗
算装置と回路構成の似ている2の拡大体乗算の単位演算
装置とを設け、整数型の乗算コマンドに2の拡大体演算
コマンドとを追加し、2の拡大体演算コマンドから生成
される制御信号により制御されるセレクタと、全加算器
の各ビットのキャリーの伝播を制御するスイッチの追加
するようにしたので、従来型のシフトレジスタによるシ
ーケンシャルな2の拡大体の乗算装置を用いることなく
整数および2の拡大体演算の両方を実行することができ
る。
【0082】したがって、従来からある整数型の演算器
への追加拡張機能として、ごく少ない命令と回路の追加
することにより、多倍長の積和演算回路で2の拡大体の
加算、乗算を実行することが可能な公開鍵暗号処理用ア
クセラレータを提供することができる。なお、本実施形
態を実現するのに、必要な回路追加の量は全体の回路規
模に比べてわずかである。
【0083】本実施形態の暗号処理装置によれば、暗号
処理用コプロセッサとして、整数型のRSA方式に加え
2の拡大体の楕円暗号方式も処理できる豊富な機能をも
つLSIを特に実装面積を増大させることなく提供でき
る。したがって、ICカードのような実装可能面積の少
ない装置において、RSA、楕円暗号の双方を処理でき
る暗復号装置を実現させることができる。 (変形例1)本変形例では、図4に示す加算回路14,
15を構成するキャリー制御機能付き全加算器について
説明する。
【0084】図6はキャリー制御機能付き全加算器の変
形例を示す図である。
【0085】このキャリー制御機能付き全加算器43
は、スイッチ33と全加算器32から構成される点で図
5の回路と共通する。しかし、図5の回路ではキャリー
31の出力側にスイッチ33が設けられているのに対
し、図6の回路ではキャリー31の入力側にスイッチ3
3が設けられている。 (変形例2)本変形例では、更に他のキャリー制御機能
付き全加算器について説明する。
【0086】図7はキャリー制御機能付き全加算器の他
の変形例を示す図である。
【0087】このキャリー制御機能付き全加算器44
は、加算結果の出力選択を制御することによりキャリー
制御を行う。すなわちスイッチ33’はセレクタで構成
され、このセレクタは制御信号S1に基づき、EXOR
35又はEXOR36の出力を選択する。これを複数個
連結したリップルキャリー型加算器は、制御信号S1に
よりキャリー伝播の有無を制御できる。
【0088】図7の制御信号S1を2の拡大体演算コマ
ンドによる制御信号とするとS1が“1”のときaとb
のEXOR35の出力が演算結果となり、2の拡大体の
加算装置として機能し、S1が“0”のとき全加算器の
出力が演算結果となって整数型の加算装置として機能す
る。 (発明の第2の実施の形態)図8は本発明の第2の実施
形態に係る演算装置の構成例を示すブロック図であり、
図1と同一部分には同一符号を付して説明を省略し、こ
こでは異なる部分についてのみ述べる。
【0089】この演算装置であるコプロセッサ1’は、
図1における整数型乗算回路11,2の拡大体上乗算回
路12及びセレクタ13に代えて乗算回路41を備える
他、第1の実施形態と同様に構成されている。
【0090】この乗算回路41は、制御部5からの制御
信号S1によって整数型乗算と2の拡大体上乗算
((3)式のc’のみ)を切り替えるようになってい
る。
【0091】図9は本実施形態の乗算回路を実現するた
めの4*4ビットの単位乗算の回路構成例を示す図であ
る。なお、現実の乗算回路41は、同図の単位演算装置
を8*32ビット構成にしたものである。また、図9
(b)の回路は同図(a)の回路の入力部分29を示す
ものである。
【0092】この乗算回路41は、図9(a)に示すよ
うに、全加算器として図5に示すキャリー制御機能付き
全加算器42を用いているので、制御信号S1に従って
キャリー伝搬の有無を制御できる。したがって、2の拡
大体演算コマンドによる整数型乗算と2の拡大体上乗算
との切替が実現される。
【0093】こうして本実施形態の演算装置では第1の
実施形態と同様な動作が実現される。
【0094】上述したように、本発明の実施の形態に係
る演算装置及び暗号処理装置は、整数型乗算回路11,
2の拡大体上乗算回路12及びセレクタ13に代えて乗
算回路41を用いるようにし、一つの回路41で回路1
1,12及び13の機能を実現するようにしたので、第
1の実施形態と同様な効果が得られる他、より少ない回
路追加で整数型乗算と2の拡大体上乗算との切り替えを
実現にすることができる。
【0095】なお、本実施形態ではキャリー制御機能付
き全加算器42として図5に示すものを用いるようにし
たが、キャリー制御機能付き全加算器42に代えて、図
6又は図7に示すキャリー制御機能付き全加算器43又
は44を用いるようにしてもよい。
【0096】
【発明の効果】以上詳記したように本発明によれば、最
小のアーキテクチャを追加するだけで整数型の演算に加
えて2の拡大体上の演算をも実行できる演算装置及び暗
号処理装置を提供することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る演算装置の構成
例を示すブロック図。
【図2】c’(x)=a(x)*b(x)を実現するた
めの4*4ビットの単位乗算の回路構成例を示す図。
【図3】整数型乗算を実現するための4*4ビットの単
位乗算の回路構成例を示す図。
【図4】同実施形態におけるコプロセッサに用いられる
キャリー制御機能付きの4ビットのリップルキャリー型
全加算器の構成例を示すブロック図。
【図5】同実施形態の加算回路に用いられる全加算器及
びキャリー制御スイッチの構成例を示す図。
【図6】キャリー制御機能付き全加算器の変形例を示す
図。
【図7】キャリー制御機能付き全加算器の他の変形例を
示す図。
【図8】本発明の第2の実施形態に係る演算装置の構成
例を示すブロック図。
【図9】同実施形態の乗算回路を実現するための4*4
ビットの単位乗算の回路構成例を示す図。
【図10】暗号処理用演算用コプロセッサを含むICカ
ード用LSIのブロック図。
【図11】図10に示すLSIにおけるコプロセッサ部
分の構成例を示すブロック図。
【図12】多項式基底の2の拡大体演算を行うコプロセ
ッサのハードウェア構成例を示すブロック図。
【図13】円分体といわれる2の拡大体の乗算回路を示
す図。
【符号の説明】
1,1’…コプロセッサ 2…メモリ 3…データバス 11…整数型乗算回路 12…2の拡大体上乗算回路 13…セレクタ 14…加算回路 15…加算回路 16…キャリー保持部 21…整数演算制御部 22…2の拡大体演算制御部 32…全加算器 33…スイッチ 41…乗算回路 42,43,44…キャリー制御機能付き全加算器 S1…制御信号

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 多倍長の積和演算装置であって、 整数型の単位乗算を実行する場合にはキャリーを伝搬さ
    せて単位乗算回路を動作させ、2の拡大体の単位乗算を
    実行する場合にはキャリーを伝搬させずに単位乗算回路
    を動作させるようにしたことを特徴とする演算装置。
  2. 【請求項2】 少なくとも整数型の単位乗算回路を含ん
    で構成される多倍長整数の積和演算装置であって、 前記整数型の単位乗算回路と論理的に隣接して配置され
    た2の拡大体の単位乗算回路と、 前記整数型の単位乗算回路を使用するか、前記2の拡大
    体の単位乗算回路を使用するかを選択する選択手段とを
    備えたことを特徴とする演算装置。
  3. 【請求項3】 少なくとも整数型の単位乗算回路を含ん
    で構成される多倍長整数の積和演算装置であって、 整数型の単位乗算を実行するか、2の拡大体の単位乗算
    を実行するかの選択信号を前記整数型の単位乗算回路に
    出力する制御手段を備えるとともに、 前記整数型の単位乗算回路は、多倍長の積和演算を実行
    する際に、整数型の単位乗算を実行すべき旨の選択信号
    を受けたときにはキャリーを伝播し、2の拡大体の単位
    乗算を実行すべき旨の選択信号を受けたときにはキャリ
    ー伝搬をしないキャリー伝搬制御手段を備え、前記単位
    乗算回路におけるキャリー伝搬を制御することにより、
    整数型乗算と2の拡大体の乗算を切替可能に構成された
    ことを特徴とする演算装置。
  4. 【請求項4】 請求項3の演算装置において、 前記キャリー伝搬制御手段は、前記選択信号とキャリー
    アウト信号を入力とするスイッチによって、1ビット毎
    の全加算器におけるキャリーの伝搬制御を行うことを特
    徴とする演算装置。
  5. 【請求項5】 請求項3の演算装置において、 前記キャリー伝搬制御手段は、1ビット毎の全加算器に
    おける2入力a,bの排他的論理和の結果cを加算結果
    として出力するか、前記結果cと入力キャリーとの排他
    的論理和の結果dを加算結果として出力するかを切り替
    える選択手段からなることを特徴とする演算装置。
  6. 【請求項6】 請求項1乃至5のうち何れか1項に記載
    の演算装置において、 前記整数型の乗算を実行する場合にはキャリーを伝搬さ
    せて加算を実行し、2の拡大体の乗算を実行する場合に
    はキャリーを伝搬させずに加算を実行する加算回路を備
    えたことを特徴とする演算装置。
  7. 【請求項7】 請求項1乃至6のうち何れか1項に記載
    の演算装置を備え、 前記演算装置による整数型の演算に基づく暗号化又は復
    号処理と、前記演算装置による2の拡大体の演算に基づ
    く暗号化又は復号処理との双方を切替可能に構成された
    ことを特徴とする暗号処理装置。
JP11011989A 1999-01-20 1999-01-20 演算装置及び暗号処理装置 Pending JP2000207387A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP11011989A JP2000207387A (ja) 1999-01-20 1999-01-20 演算装置及び暗号処理装置
US09/487,483 US7277540B1 (en) 1999-01-20 2000-01-19 Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
FR0000680A FR2788867B1 (fr) 1999-01-20 2000-01-20 Procede arithmetique, appareil arithmetique et appareil de traitement cryptographique

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11011989A JP2000207387A (ja) 1999-01-20 1999-01-20 演算装置及び暗号処理装置

Publications (1)

Publication Number Publication Date
JP2000207387A true JP2000207387A (ja) 2000-07-28

Family

ID=11793009

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11011989A Pending JP2000207387A (ja) 1999-01-20 1999-01-20 演算装置及び暗号処理装置

Country Status (1)

Country Link
JP (1) JP2000207387A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056640A (ja) * 1999-08-19 2001-02-27 Toyo Commun Equip Co Ltd 積和演算装置及びこれを用いた暗号・復号装置
JP2001109376A (ja) * 1999-10-04 2001-04-20 Toyo Commun Equip Co Ltd 演算回路および演算プロセッサ
JP2001188468A (ja) * 1999-12-27 2001-07-10 Toyo Commun Equip Co Ltd ガロア体上の元の除算演算方法および除算演算回路
KR100508084B1 (ko) * 2001-05-24 2005-08-17 삼성전자주식회사 데이터 처리 장치 내의 루프 버퍼를 이용한 루프 명령처리 장치
JP2007233381A (ja) * 2006-02-08 2007-09-13 Nvidia Corp 暗号処理に使用するグラフィック処理ユニット
JP2016507831A (ja) * 2013-01-23 2016-03-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Vectorgaloisfieldmultiplysumandaccumulate命令を処理するためのコンピュータ・システム、コンピュータ・プログラム及び方法
US10101998B2 (en) 2013-01-23 2018-10-16 International Business Machines Corporation Vector checksum instruction
US10203956B2 (en) 2013-01-23 2019-02-12 International Business Machines Corporation Vector floating point test data class immediate instruction

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056640A (ja) * 1999-08-19 2001-02-27 Toyo Commun Equip Co Ltd 積和演算装置及びこれを用いた暗号・復号装置
JP2001109376A (ja) * 1999-10-04 2001-04-20 Toyo Commun Equip Co Ltd 演算回路および演算プロセッサ
JP2001188468A (ja) * 1999-12-27 2001-07-10 Toyo Commun Equip Co Ltd ガロア体上の元の除算演算方法および除算演算回路
KR100508084B1 (ko) * 2001-05-24 2005-08-17 삼성전자주식회사 데이터 처리 장치 내의 루프 버퍼를 이용한 루프 명령처리 장치
JP2007233381A (ja) * 2006-02-08 2007-09-13 Nvidia Corp 暗号処理に使用するグラフィック処理ユニット
US7916864B2 (en) 2006-02-08 2011-03-29 Nvidia Corporation Graphics processing unit used for cryptographic processing
JP2016507831A (ja) * 2013-01-23 2016-03-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Vectorgaloisfieldmultiplysumandaccumulate命令を処理するためのコンピュータ・システム、コンピュータ・プログラム及び方法
US10101998B2 (en) 2013-01-23 2018-10-16 International Business Machines Corporation Vector checksum instruction
US10146534B2 (en) 2013-01-23 2018-12-04 International Business Machines Corporation Vector Galois field multiply sum and accumulate instruction
US10203956B2 (en) 2013-01-23 2019-02-12 International Business Machines Corporation Vector floating point test data class immediate instruction
US10338918B2 (en) 2013-01-23 2019-07-02 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US10606589B2 (en) 2013-01-23 2020-03-31 International Business Machines Corporation Vector checksum instruction
US10671389B2 (en) 2013-01-23 2020-06-02 International Business Machines Corporation Vector floating point test data class immediate instruction
US10877753B2 (en) 2013-01-23 2020-12-29 International Business Machines Corporation Vector galois field multiply sum and accumulate instruction

Similar Documents

Publication Publication Date Title
US7277540B1 (en) Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
Satoh et al. A scalable dual-field elliptic curve cryptographic processor
EP1293891B2 (en) Arithmetic processor accomodating different finite field size
JP4955182B2 (ja) 整数の計算フィールド範囲の拡張
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
Öztürk et al. Low-power elliptic curve cryptography using scaled modular arithmetic
US20050198093A1 (en) Montgomery modular multiplier
JP3939658B2 (ja) モジュラー乗算を行うための装置、および、モジュラー乗算を行うための算術演算装置
US7206410B2 (en) Circuit for the inner or scalar product computation in Galois fields
US6009450A (en) Finite field inverse circuit
JP3615622B2 (ja) マイクロコンピュータ
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
KR101925868B1 (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
Gutub et al. Efficient scalable VLSI architecture for Montgomery inversion in GF (p)
JP4823467B2 (ja) ガロア体からの二つの係数を乗算するための方法及びこの方法を遂行するための乗算器
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
JP2001034167A (ja) 演算装置及び暗号処理装置
JP2000207387A (ja) 演算装置及び暗号処理装置
JP2004227344A (ja) 乗算器及び暗号回路
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
Wang et al. New VLSI architectures of RSA public-key cryptosystem
O'Rourke et al. Achieving NTRU with Montgomery multiplication
JP2006508464A (ja) ルックアップテーブルを備える乗算器
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060307

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060530