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

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

Info

Publication number
JP2001034167A
JP2001034167A JP11209831A JP20983199A JP2001034167A JP 2001034167 A JP2001034167 A JP 2001034167A JP 11209831 A JP11209831 A JP 11209831A JP 20983199 A JP20983199 A JP 20983199A JP 2001034167 A JP2001034167 A JP 2001034167A
Authority
JP
Japan
Prior art keywords
multiplication
circuit
data
unit
polynomial
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
JP11209831A
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 JP11209831A priority Critical patent/JP2001034167A/ja
Priority to US09/487,483 priority patent/US7277540B1/en
Priority to FR0000680A priority patent/FR2788867B1/fr
Publication of JP2001034167A publication Critical patent/JP2001034167A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 本発明は、2の拡大体の拡大次数mを増加し
ても、装置本体を作り直さずに演算の実行を図る。 【解決手段】 2の拡大体の多項式基底表現での剰余乗
算を実行可能な多倍長の積和演算回路(12,14,1
5)を有し、さらに、剰余乗算を乗算処理と剰余算処理
とに分割して積和演算回路の制御により実行するための
制御手段(5)を備えた演算装置及び暗号処理装置。

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】図23は暗号処理用のコプロセッサを含む
ICカード用LSIのブロック図である。
【0007】同図に示す構成要素を含む専用LSIが例
えばICカードに組み込まれる。このLSIにおいて
は、CPU、RAM、ROM、EEPROMが1チップ
に収容され、コプロセッサはRAM、演算部、制御部か
ら構成される。コプロセッサはCPUの制御下にあって
多倍長のべき乗剰余演算や四則演算といった公開鍵暗号
の基本演算に関しCPUを補助する。つまり、暗号の基
本演算を行う部分は図10におけるコプロセッサであ
り、この部分がどのように構成されているかが問題とな
る。
【0008】図24は図23に示すLSIにおけるコプ
ロセッサ部分の構成例を示すブロック図である。
【0009】RSA方式では整数型の演算が行われるた
め、このコプロセッサは図24に示すように整数型の乗
算器として構成されている。
【0010】一方、楕円暗号方式のLSIを作成する場
合、その全体的な構成は図23に示すLSIと同様ある
いはこれと類似する構成のものとなるが、コプロセッサ
部分における演算は整数型の演算でなく、2の拡大体演
算を行うコプロセッサを用意する必要がある。
【0011】図25は多項式基底の2の拡大体演算を行
うコプロセッサのハードウェア構成例を示すブロック図
である。
【0012】同図は、「楕円暗号のハードウェア実装,
SCIS’98−10.1.C」にて発表された特殊な
既約多項式を用いる円分体といわれる2の拡大体の一種
の演算装置を示している。この演算装置は、2の拡大体
上の加算、二乗、乗算及び逆元演算を実行できる構成を
備えており、これによって楕円曲線上の点の演算に必要
な2の拡大体の演算を実行する。このような演算装置を
IC化すれば、図23のLSIに適用し得る2の拡大体
演算用のコプロセッサになる。
【0013】ここで、加算回路および二乗算回路はm個
のEX−ORで構成され、乗算回路81は図26に示す
回路構成で実現する。
【0014】図26は円分体といわれる2の拡大体の乗
算回路を示す図である。
【0015】この乗算回路81は、mビットの入力レジ
スタA,Bを持ち多項式a(x)の係数を入力レジスタ
Aに固定値として入力し、入力レジスタBからは多項式
b(x)の係数を最上位ビットから1クロック毎にシフ
トしながら演算していく。同図におけるブロックDはフ
ィードバックレジスタを構成するフリップフロップであ
る。m回シフトした時点での各ブロックDの値が出力レ
ジスタCに読み出され、a(x)*b(x)の演算結果
となる。
【0016】図24と図26夫々の回路を見比べてもわ
かるように、乗算と一口に言っても整数型乗算と多項式
基底の2の拡大体乗算とでは、その乗算を実行するため
のアーキテクチャーが全く異なる。したがって、従来は
暗号方式毎にハードウェアを構成しようとする試みがな
されてきた。
【0017】一方、楕円曲線暗号の基本演算における2
の拡大体の剰余乗算には、拡大体GF(qm )上の多項
式f(x)による割り算回路としての線形フィードバッ
クシフトレジスタ(LFSR)を用いた演算装置が広く
用いられている。なお、法多項式f(x)は、次式の通
りである。
【0018】f(x)=fmm +fm-1m-1 +…+
1 x+f0 、 fm =1 図27は係る線形フィードバックシフトレジスタLFS
Rの構成を示すブロック図である。このLFSR90
は、入力側からEX-OR の加算器91〜91と1クロ
ックの遅延素子(以下、レジスタという)92〜92
とが交互に縦続接続されており、m個目のレジスタ9
から得られる出力が抽出されて夫々係数器93
93を介して個別にm個の加算器91〜91にフ
ィードバックされる構成となっている。
【0019】このLFSR90は、単位時間(クロッ
ク)毎に動作する。なお、シフトレジスタにおいて、動
作用のクロックパルスを1クロック進めることをシフト
するといい、シフトレジスタに組込まれるレジスタ92
〜92の数mをシフトレジスタの段数という。
【0020】ここで、q=2のとき、各レジスタ92
〜92は、1ビットのフリップフロップが適用可能で
ある。各係数器93〜93は、“1”又は“0”を
乗じるものであり、1を乗じる場合には結線されるが、
0を乗じる場合には結線されない。また、各加算器91
〜91は、2入力のEX−ORが使用されている。
【0021】このようなLFSR90では、入力側(左
側)から被除多項式の係数が高次の項から順に入力され
ると、出力側(右側)から商多項式の係数が高次の項か
ら順に出力される。ここで、被除多項式の0次の項を入
力し終えたときの各レジスタ(フリップフロップ)92
〜92の内容が剰余多項式の係数となる。
【0022】しかしながら、以上のLFSR90を用い
た演算装置では、拡大次数mのビット数と同数のレジス
タ92〜92を必要とし、レジスタ92〜92
の構成が拡大次数mにより制約を受けている。このた
め、拡大次数mが増加すると、演算装置ごと作り直す必
要が生じてしまう。
【0023】
【発明が解決しようとする課題】上記したように、楕円
暗号方式は現在注目されてはいるものの、現状ではRS
A暗号方式が未だ主流であるため、楕円暗号方式を用い
るICカードにおいてもRSA暗号にも対応させたいと
いう要請が強い。
【0024】ここで、従来の整数型の暗号と2の拡大体
の暗号を同一ICカードに実装しようとした場合、上記
した従来技術の延長ではそれぞれに対応するコプロセッ
サを搭載する必要が生じる。しかしながら、2つのコプ
ロセッサを搭載したのでは、面積制約の大きいICカー
ドにおいてそのチップ面積を圧迫するという問題が生じ
る。
【0025】一方、2の拡大体の剰余乗算においては、
拡大次数mの増加により、演算装置ごと作り直す必要が
生じるというハードウェア的な制限がある。
【0026】本発明はこのような実情を考慮してなされ
たもので、2の拡大体の拡大次数mを増加しても、装置
本体を作り直さずに演算を実行し得る演算装置及び暗号
処理装置を提供することを目的とする。
【0027】また、本発明の他の目的は、最小のアーキ
テクチャを追加するだけで整数型の演算に加えて2の拡
大体上の演算をも実行できる演算装置及び暗号処理装置
を提供することにある。
【0028】
【課題を解決するための手段】上記課題を解決するため
に、請求項1に対応する発明は、2の拡大体の多項式基
底表現での剰余乗算を実行可能な多倍長の積和演算回路
を有する演算装置であって、剰余乗算を乗算処理と剰余
算処理とに分割して積和演算回路の制御により実行する
ための制御手段を備えた演算装置である。
【0029】本発明はこのような手段を設けたので、剰
余算処理の際に線形フィードバックシフトレジスタでは
なく、多倍長の積和演算回路が演算を行うので、1以上
の任意の拡大次数を使用でき、2の拡大体の拡大次数を
増加しても、装置本体を作り直さずに演算を実行するこ
とができる。
【0030】次に、請求項2に対応する発明は、請求項
1に対応する演算装置において、積和演算回路として
は、2の拡大体多項式基底における多項式データを乗算
するとき、キャリー伝播をしない単精度の乗算回路と、
乗算回路による乗算結果を用いて加算を行う倍精度の加
算回路とを有し、制御手段としては、乗算処理のとき、
乗算回路と加算回路を制御する演算装置である。
【0031】本発明はこのような手段を設けたので、請
求項1と同様の作用を容易且つ確実に奏することができ
る。
【0032】次に、請求項3に対応する発明は、請求項
2に対応する演算装置において、制御手段に制御され、
剰余算処理のとき、2つの多項式データの乗算結果を初
回の被除多項式データとし、所定の法多項式データを除
多項式データとし、初回又は2回目以降の被除多項式デ
ータと除多項式データとに基づいて商計算を行い、上位
からバス幅と同じビット数の1ブロックの商多項式デー
タを立てる商立て回路を有し、制御手段としては、剰余
算処理のとき、商立て回路の制御により1ブロックの商
多項式データが立ったとき、乗算回路及び加算回路の制
御により、1ブロックの商多項式データと除多項式デー
タとの乗算結果を今回の被除多項式データから減らして
次回の被除多項式データを算出し、商立て回路の制御か
ら被除多項式データの算出までの処理を繰り返して剰余
データを得る演算装置である。
【0033】この演算装置では、1ブロックの商多項式
データと除多項式データとの乗算結果が毎回(m+1)
ブロックになる。また、この乗算結果を今回の被除多項
式から減算(=加算)して、(2m−1*n)ブロック
の次回の被除多項式データを算出し(nは乗算回数)、
すなわち前回の被除多項式データを1ブロックずつ減ら
していく。
【0034】本発明はこのような手段を設けたので、請
求項1又は請求項2と同様の作用に加え、ハードウェア
の特性を生かして剰余算と商計算の効率化を図ることが
できる。
【0035】次に、請求項4に対応する発明は、請求項
3に対応する演算装置において、商立て回路としては、
商計算のとき、除多項式データの上位2ブロックの逆数
データと今回の被除多項式データの上位2ブロックとを
乗算し、この乗算結果の上位2ブロック目を1ブロック
の商多項式データとする演算装置である。
【0036】本発明はこのような手段を設けたので、請
求項3と同様の作用に加え、得られた商多項式のうち、
有効数字の部分を抽出できるので、演算精度の最適化を
図ることができる。
【0037】次に、請求項5に対応する発明は、請求項
4に対応する演算装置において、商立て回路としては、
初回に商多項式データを立てるとき、除多項式データの
上位2ブロックから逆数データを算出してメモリに記憶
させ、2回目以降に商多項式データを立てるとき、メモ
リ内の逆数データを読出して用いる演算装置である。
【0038】本発明はこのような手段を設けたので、同
じ法多項式下での重複する剰余算の実行時に、逆数デー
タをメモリから読出して商を立てるので、2回目の商計
算以降は逆数データの算出時間を省略でき、もって、2
の拡大体演算の処理時間を短縮することができる。ま
た、逆数データを事前に計算できるので、2の拡大体の
剰余乗算を、乗算と加算とを行う積和演算回路のみを用
いて実現することができる。
【0039】次に、請求項6に対応する発明は、請求項
4又は請求項5に対応する演算装置において、商立て回
路としては、逆数データを算出するとき、除多項式デー
タの上位2ブロックのうち、上位から連続した0の数を
計数すると、上位から1ブロック+1ビットの多項式デ
ータを最上位ビットを1とするように抽出し、この抽出
した多項式データの逆数を求め、得られた逆数の最上位
ビット側に、最下位ビットが1で他のビットが0の1ブ
ロックの補正データを連結して全体で2ブロックのデー
タを求め、このデータを前記計数した0の数だけ上位側
にビットシフトさせた結果を逆数データとする演算装置
である。
【0040】本発明はこのような手段を設けたので、一
般的な多倍長の整数型の除算で用いられる単精度除算を
用いたKnuth のアルゴリズム(文献:Knuth, D. E. The
Artof Computer Programming, Vol.2, Reading, Mas
s.: Addison Wesley, 2nd edition, (1981))による除
数の正規化や近似商の補正処理、商や剰余といった演算
結果の逆正規化の処理を行わない観点から、予め補正し
た値を逆数データとしたので、ビットシフトの回数を減
らすことができ、演算装置を最適化することができる。
【0041】次に、請求項7に対応する発明は、請求項
1乃至請求項6のいずれか1項に対応する演算装置を備
え、演算装置による2の拡大体の剰余乗算に基づく暗号
化又は復号処理を実行する暗号処理装置である。
【0042】本発明はこのような手段を設けたので、楕
円曲線暗号等の2の拡大体の剰余乗算に基づく暗号化又
は復号処理を実行することができる。
【0043】次に、請求項8に対応する発明は、請求項
1乃至請求項6のいずれか1項に対応する演算装置であ
って、整数型の単位乗算を実行する場合にはキャリーを
伝搬させて単位乗算回路を動作させ、2の拡大体の単位
乗算を実行する場合にはキャリーを伝搬させずに単位乗
算回路を動作させるようにした演算装置である。
【0044】本発明はこのような手段を設けたので、請
求項1乃至請求項6のいずれかの作用に加え、最小のア
ーキテクチャを追加するだけで整数型の演算に加えて2
の拡大体上の演算をも実行することができる。
【0045】次に、請求項9に対応する発明は、請求項
1乃至請求項6のいずれか1項に対応する演算装置にお
いて、整数型の単位乗算回路と、整数型の単位乗算回路
と論理的に隣接して配置された2の拡大体の単位乗算回
路と、整数型の単位乗算回路を使用するか、2の拡大体
の単位乗算回路を使用するかを選択する選択手段とを備
えた演算装置である。
【0046】本発明はこのような手段を設けたので、請
求項1乃至請求項6のいずれかの作用に加え、2の拡大
体の単位乗算回路を追加するだけで整数型の乗算と2の
拡大体の乗算の双方を実行することができる。
【0047】次に、請求項10に対応する発明は、請求
項1乃至請求項6のいずれか1項に対応する演算装置に
おいて、整数型の単位乗算回路と、整数型の単位乗算を
実行するか、2の拡大体の単位乗算を実行するかの選択
信号を整数型の単位乗算回路に出力する選択制御手段を
備えるとともに、整数型の単位乗算回路は、多倍長の積
和演算を実行する際に、整数型の単位乗算を実行すべき
旨の選択信号を受けたときにはキャリーを伝播し、2の
拡大体の単位乗算を実行すべき旨の選択信号を受けたと
きにはキャリー伝搬をしないキャリー伝搬制御手段を備
え、単位乗算回路におけるキャリー伝搬を制御すること
により、整数型乗算と2の拡大体の乗算を切替可能に構
成された演算装置である。
【0048】本発明はこのような手段を設けたので、請
求項1乃至請求項6のいずれかの作用に加え、キャリー
伝搬制御手段を追加するだけで整数型の乗算と2の拡大
体の乗算の双方を実行することができる。
【0049】次に、請求項11に対応する発明は、請求
項10の演算装置において、キャリー伝搬制御手段は、
選択信号とキャリーアウト信号を入力とするスイッチに
よって、1ビット毎の全加算器におけるキャリーの伝搬
制御を行う演算装置である。
【0050】本発明はこのような手段を設けたので、選
択信号とキャリーアウト信号を入力とするスイッチによ
り請求項10に係る発明を実現させることができる。
【0051】次に、請求項12に対応する発明は、請求
項10の演算装置において、キャリー伝搬制御手段は、
1ビット毎の全加算器における2入力a,bの排他的論
理和の結果cを加算結果として出力するか、結果cと入
力キャリーとの排他的論理和の結果dを加算結果として
出力するかを切り替える選択手段からなる演算装置であ
る。
【0052】本発明はこのような手段を設けたので、選
択手段により請求項10に係る発明を実現させることが
できる。
【0053】次に、請求項13に対応する発明は、請求
項8〜12の演算装置において、整数型の乗算を実行す
る場合にはキャリーを伝搬させて加算を実行し、2の拡
大体の乗算を実行する場合にはキャリーを伝搬させずに
加算を実行する加算回路を備えた演算装置である。
【0054】本発明はこのような手段を設けたので、請
求項8〜12のいずれかの作用に加え、積和演算におけ
る加算部分についても整数型の乗算と2の拡大体の乗算
との双方を確実に実行することができる。
【0055】次に、請求項14に対応する発明は、請求
項8〜13の何れかの演算装置を備え、演算装置による
整数型の演算に基づく暗号化又は復号処理と、演算装置
による2の拡大体の演算に基づく暗号化又は復号処理と
の双方を切替可能に構成された暗号処理装置である。
【0056】本発明はこのような手段を設けたので、請
求項8〜13のいずれかの作用に加え、RSA暗号等の
整数型の演算に基づく暗号と、楕円曲線暗号等の2の拡
大体の演算に基づく暗号の双方の処理を行うことができ
る。
【0057】
【発明の実施の形態】以下、本発明の各実施形態につい
て図面を用いて説明する。 (第1の実施形態)図1は本発明の第1の実施形態に係
る演算装置の構成例を示すブロック図である。コプロセ
ッサ1として構成される本実施形態の演算装置は、整数
型乗算及び2の拡大体乗算の双方の演算が可能な多倍長
積和乗算装置であり、この乗算処理を仕方を制御するこ
とにより、加算、二乗あるいは逆元等の他の演算を実行
するものである。また、本演算装置がLSI等に組み込
まれることによってRSA暗号及び楕円暗号の双方が実
現可能な暗号処理装置が構成される。ここで組込対象と
なるLSIは例えば図23に示すような装置である。
【0058】このコプロセッサ1において演算部4は制
御部5によってコントロールされ、演算途中のデータを
格納するメモリ2から接続される32ビットのデータバ
ス3からデータを入出力するようになっている。
【0059】データバス3からの入力データはバッファ
Z,Y,Xに格納され、データバス3への出力データは
バッファRに格納されるようになっている。
【0060】入力データX及びYは乗算対象となるデー
タであり、このうちデータYは一度に多数桁の乗算とな
るのを回避するために所定桁毎に分割されたデータとし
て入力される。一方、データZは乗算を複数回に分けて
実行するために生じる途中結果であり、これをXYの乗
算結果に足し、さらにその和の結果にキャリーCと言わ
れる桁上がり部分を足して1サイクルの乗算が終了す
る。その結果からキャリーを除いたデータRがバッファ
Rを介してデータバス3に出力され、次のサイクルの演
算にデータZとして使用される。このサイクルを複数回
繰り返すことにより多倍長整数乗算あるいは2の拡大体
乗算(厳密には後述のc’)の乗算が実現される。
【0061】また、コプロセッサ1は、上記演算を実現
するために、バッファX,Y,Z,Rの他、整数型乗算
回路11,2の拡大体上乗算回路12,セレクタ13,
加算回路14,加算回路15,キャリー保持部16及び
制御部5を備えている。
【0062】整数型乗算回路11は、バッファX内のデ
ータXとバッファY内のデータYとを整数型乗算し、そ
の結果をセレクタ13に出力する。
【0063】2の拡大体上乗算回路12は、バッファX
内のデータXとバッファY内のデータYとにより2の拡
大体上乗算の一部(c’)を実行し、その結果をセレク
タ13に出力する。
【0064】セレクタ13は、制御部5からの信号S1
に従って、整数型乗算回路11又は2の拡大体上乗算回
路12からの出力の何れかを加算回路14に出力する。
【0065】加算回路14は全加算器からなり、バッフ
ァZ内のデータZとセレクタ出力を加算して加算回路1
5に出力する。この加算回路14においては、整数型の
加算と2の拡大体の加算との切替が制御信号S1に従っ
て行われるようになっている。なお、この加算切替につ
いては後述する。
【0066】加算回路15は、加算回路14の出力にキ
ャリー保持部16に保持されたキャリーCを加算し上位
32ビットを次のキャリーCとしてキャリー保持部16
に出力し、下位8ビットをこのサイクルの演算結果であ
るデータRとしてバッファRに出力する。なお、加算回
路15においても、制御信号S1により、整数型の加算
と2の拡大体の加算との切替が行われるようになってい
る。
【0067】キャリー保持部16は、加算回路15から
出力されたキャリーCを保持し、次の演算サイクルにお
いて保持したキャリーCを加算回路15に与える。
【0068】制御部5は、整数演算制御部21と2の拡
大体演算制御部22からなり、これらの何れかのコマン
ド群に従って演算部を制御する。このコマンド切り替え
は、外部のCPU(例えば図23に示すCPU)からの
指示によって行われる。
【0069】整数演算制御部21は、演算部4を多倍長
整数演算型の乗算器として動作するように制御するもの
である。このために、制御信号S1によりセレクタ13
が整数型単精度乗算器11の出力を加算回路14に出力
するように制御するとともに、加算回路14及び15を
整数型加算回路として動作するよう制御する。さらに、
整数型乗算器として演算部4の動作を制御することで他
の四則演算などの演算処理の実行する。
【0070】また、2の拡大体演算制御部22は、演算
部4を2の拡大体乗算器として動作するように制御する
ものである。このために、制御信号S1によりセレクタ
13が2の拡大体型単精度乗算器11の出力を加算回路
14に出力するように制御するとともに、加算回路14
及び15を2の拡大体型加算回路として動作するように
制御する。さらに、2の拡大体型乗算器として演算部4
の動作を制御することで加算、二乗算を実現する。
【0071】なお、制御部5からは、上記した各処理を
実現するため、制御信号S2を出力して各部を制御す
る。
【0072】次に、以上のように構成された本実施形態
における演算装置の動作について説明する。
【0073】この演算装置(コプロセッサ1)は、整数
型の乗算装置に乗算回路12,セレクタ13等を組み込
むことにより、2の拡大体の乗算装置としての処理を実
現可能とするものである。ここで、2の拡大体では、以
下に示すようにm−1次の多項式をmビットのベクトル
表現で表すことができる。
【0074】 a(x)=am-1m-1 +am-2m-2 +…+a1 x+a0 …(1) =[am-1 ,…,a1 ,a0 ] b(x)=bm-1m-1 +bm-2m-2 +…+b1 x+b0 …(2) =[bm-1 ,…,b1 ,b0 ] ここで、2の拡大体の乗算はGF(2)上のm次の規
約多項式f(x)をモジュラスとする剰余乗算である。
また、2の拡大体の二つの元a(x)とb(x)の積c
(x)は、次のように定義されている。
【0075】 c(x)=a(x)・b(x)mod f(x) …(3) =Σa・x・b(x) mod f(x) =cm-1m-1 +cm-2m-2 + … +c1 x+c0 =[cm-1 ,…,c1 ,c0 ] また、法多項式f(x) は、次式で表せる。 f(x) =fmm +fm-1m-1 + … +f1 x+f0 …(4) =[fm ,fm-1 ,…,f1 ,f0 ] 2の拡大体の多項式の乗算は、図26に示すように乗数
のサイクルシフトによるシフトレジスタを構成し、mサ
イクルシフト後の剰余多項式を乗算結果とするのが一般
的であるが、本実施形態では整数型の暗号処理LSIで
広く使われている多倍長の積和演算回路に若干の変更を
加えて処理する。
【0076】なお、制御部5からの制御信号S1によ
り、コプロセッサ1が整数型の演算装置として動作する
ときには、同演算装置は多倍長積和演算回路として機能
している。この多倍長積和演算回路において、制御信号
S1による切替により、2の拡大体上乗算回路12にお
いて2の拡大体の乗算の一部分である(5)式が計算さ
れる。
【0077】 c’(x)=a(x)・b(x) …(5) なお、2の拡大体上乗算回路12ではc’を計算する段
階においては(6)式における「c(x)’mod f
(x)」の部分は計算されない。すなわちc’自体は、
制御信号S1により乗算回路12及び加算回路14,1
5を切り替えるのみで、整数型乗算における2つの数の
積と全く同様に演算される。
【0078】なお、c’(x)=a(x)・b(x)に
おいてmビットの乗数、被乗数は32ビットに分割され
てメモリから読み出され、演算結果は32ビット毎にメ
モリに書き込まれる。この時、最終的な演算結果は2m
ビットとなる。
【0079】整数型乗算回路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の拡大体の代数系において
は、各ビットが多項式における次数の係数を示している
ため異なる次数への桁上がりを考慮しなくてもよい。
【0080】このことに着目して本実施形態では整数型
演算器(乗算器や加算器)において、キャリー伝播を許
す通常のモードと、キャリー伝播を実行しないモードを
切り替えて使えるようにしているのである。ここでキャ
リー伝播を許さない(実行しない)モードは2の拡大体
演算を行うのに用いられる。なお、キャリー伝播のモー
ドを切り替えのために追加すべき回路は全体の回路規模
に比べわずかである。
【0081】図2はc’(x)=a(x)・b(x)を
実現するための4*4ビットの単位乗算の回路構成例を
示す図である。
【0082】同図の単位演算装置を8*32ビット構成
にしたものが図1における2の拡大体上乗算回路12で
ある。なお、図2(b)の回路は同図(a)の回路の入
力部分29を示すものである。
【0083】一方、図3は整数型乗算を実現するための
4*4ビットの単位乗算の回路構成例を示す図である。
【0084】同図の単位演算装置を8*32ビット構成
にしたものが図1における整数型乗算回路11である。
なお、図3(a)に用いられる全加算器FAの構成は図
3(c)に示され、さらに図3(c)に示す全加算器F
Aのキャリー31の構成が同図(d)に示されている。
また、図3(b)の回路は同図(a)の回路の入力部分
30を示すものである。
【0085】本実施形態の演算装置では、2の拡大体上
乗算回路12と整数型乗算回路11とが論理的に隣接し
て配置されており、制御部5の2の拡大体演算コマンド
から生成される制御信号S1により整数型、2の拡大体
型のいずれかの乗算回路11,12が選択されて処理が
行われる。
【0086】セレクタ13の出力は次段の加算回路14
に入力される。ここでZ+(Y*X)加算回路14は4
0ビットのデータ(Y*X)と8ビットのデータZの全
加算器だが、ここでも前述の制御信号により各ビットの
加算結果のキャリーを次段へ伝播しないスイッチを付加
することにより2の拡大体の加算が実現される。
【0087】図4は本実施形態におけるコプロセッサに
用いられるキャリー制御機能付きの4ビットのリップル
キャリー型全加算器の構成例を示すブロック図である。
【0088】このような構成の全加算器を、40ビット
データと8ビットデータとの加算が可能となるように拡
張したものが図1の加算回路14である。
【0089】また、図4の回路において、各全加算器3
2の間にはスイッチ33が設けられ、キャリーの伝搬を
制御できるようになっている。
【0090】図5は本実施形態の加算回路に用いられる
全加算器及びキャリー制御スイッチの構成例を示す図で
ある。
【0091】この全加算器32及びスイッチ33は、1
ビット分のキャリー制御機能付き全加算器42を構成し
ている。ここで、全加算器32は、図3(c)に示す全
加算器FAと同様に構成され、全加算器32内のキャリ
ー31は図3(d)に示すキャリーと同様に構成されて
いる。
【0092】また、全加算器32間のキャリー伝搬ライ
ンに設けられたスイッチ33は制御部5からの制御信号
S1によって制御され、整数型演算を行うときには接続
され、2の拡大体演算を行うときには遮断される。
【0093】以上のように構成された加算回路14から
の出力(Z+(Y*X))は加算回路15に引き渡され
る。
【0094】すなわち、演算ブロック最終段のC+Z+
(Y*X)加算回路15によって、乗算結果の40ビッ
トの下位8ビットがデータRとして出力され、上位32
ビットが次のサイクルのZ+(Y*X)に足し込まれ
る。
【0095】ここで、加算回路15は加算回路14と同
様に、前述の制御信号S1により制御される図4に示す
キャリー制御機能付き全加算器であるので、整数型では
LSBに桁あわせをした全加算器として整数型加算が実
行され、2の拡大体演算では2の拡大体加算が実行され
る。
【0096】加算回路15の出力データRはデータバス
3を介して一旦外部のメモリ2に出力され、再びデータ
Zとなってコプロセッサ1内に戻り整数型乗算若しくは
2の拡大体上の乗算が継続され、必要なサイクル数だけ
繰り返されて乗算結果が得られる。
【0097】ここで2の拡大体の乗算コマンドでは、
(5)式の結果が得られるが、2の拡大体乗算は(6)
式に示す定義通り、既約多項式f(x)をモジュラスと
する剰余演算によって完結する。剰余演算は割り算の筆
算同様、被除数の上位桁から商を立て現在の商と除数を
かけたものから現在の被除数を引く(2の拡大体では減
算は加算と同じ)処理を必要なサイクル数だけ繰り返せ
ばよく、2の拡大体の乗算コマンドと加算コマンドを実
行することによって実現できる(詳細は第3の実施形態
で述べる)。2の拡大体の二乗算は乗算と同じ処理で実
現でき、逆元計算は、乗算と二乗算を相互に繰り返すこ
とにより実現できる。
【0098】一例として、2の拡大体の加算コマンドに
従って演算部4が2の拡大体の加算装置として機能する
場合を説明する。
【0099】2の拡大体上の加算は、通常の多項式の加
算と同じで、同じ次数の係数同士の足し算を行う。
【0100】 c(x)=a(x)+b(x) …(7) =[am-1 +bm-1 ,am-2 +bm-2 ,…,a0 +b0 ] このとき、各次数の係数の和は0+0=1+1=0、0
+1=1+0=1となり、整数型加算のようにキャリー
は発生しない。従って、2の拡大体での加算は、一般に
はm個のEX−ORで実装できることになる。
【0101】整数型の乗算装置において加算はc=b+
a*1として扱えるので、本実施形態における2の拡大
体の加算もこのアルゴリズムをそのまま利用し、c
(x)=b(x)+a(x)*1として実行する。この
演算は加算回路14,15に図4の全加算器が用いられ
ていることから、制御信号S1の切替で実現できる。
【0102】また、制御信号S1による切替でコプロセ
ッサ1は図24に示すコプロセッサと同様な機能を持つ
回路となり、整数型演算も実現される。
【0103】上述したように、本発明の実施の形態に係
る演算装置は、整数型乗算装置に、整数型乗算の単位乗
算装置と回路構成の似ている2の拡大体乗算の単位演算
装置とを設け、整数型の乗算コマンドに2の拡大体演算
コマンドとを追加し、2の拡大体演算コマンドから生成
される制御信号により制御されるセレクタと、全加算器
の各ビットのキャリーの伝播を制御するスイッチの追加
するようにしたので、従来型のシフトレジスタによるシ
ーケンシャルな2の拡大体の乗算装置を用いることなく
整数および2の拡大体演算の両方を実行することができ
る。
【0104】したがって、従来からある整数型の演算器
への追加拡張機能として、ごく少ない命令と回路の追加
することにより、多倍長の積和演算回路で2の拡大体の
加算、乗算を実行することが可能な公開鍵暗号処理用ア
クセラレータを提供することができる。なお、本実施形
態を実現するのに、必要な回路追加の量は全体の回路規
模に比べてわずかである。
【0105】本実施形態の暗号処理装置によれば、暗号
処理用コプロセッサとして、整数型のRSA方式に加え
2の拡大体の楕円暗号方式も処理できる豊富な機能をも
つLSIを特に実装面積を増大させることなく提供でき
る。したがって、ICカードのような実装可能面積の少
ない装置において、RSA、楕円暗号の双方を処理でき
る暗復号装置を実現させることができる。
【0106】(変形例1)本変形例では、図4に示す加
算回路14,15を構成するキャリー制御機能付き全加
算器について説明する。
【0107】図6はキャリー制御機能付き全加算器の変
形例を示す図である。
【0108】このキャリー制御機能付き全加算器43
は、スイッチ33と全加算器32から構成される点で図
5の回路と共通する。しかし、図5の回路ではキャリー
31の出力側にスイッチ33が設けられているのに対
し、図6の回路ではキャリー31の入力側にスイッチ3
3が設けられている。
【0109】(変形例2)本変形例では、更に他のキャ
リー制御機能付き全加算器について説明する。
【0110】図7はキャリー制御機能付き全加算器の他
の変形例を示す図である。
【0111】このキャリー制御機能付き全加算器44
は、加算結果の出力選択を制御することによりキャリー
制御を行う。すなわちスイッチ33’はセレクタで構成
され、このセレクタは制御信号S1に基づき、EXOR
35又はEXOR36の出力を選択する。これを複数個
連結したリップルキャリー型加算器は、制御信号S1に
よりキャリー伝播の有無を制御できる。
【0112】図7の制御信号S1を2の拡大体演算コマ
ンドによる制御信号とするとS1が“1”のときaとb
のEXOR35の出力が演算結果となり、2の拡大体の
加算装置として機能し、S1が“0”のとき全加算器の
出力が演算結果となって整数型の加算装置として機能す
る。
【0113】(第2の実施形態)図8は本発明の第2の
実施形態に係る演算装置の構成例を示すブロック図であ
り、図1と同一部分には同一符号を付して説明を省略
し、ここでは異なる部分についてのみ述べる。なお、以
下の各実施形態も同様にして重複した説明を省略する。
【0114】この演算装置であるコプロセッサ1’は、
図1における整数型乗算回路11,2の拡大体上乗算回
路12及びセレクタ13に代えて乗算回路41を備える
他、第1の実施形態と同様に構成されている。
【0115】この乗算回路41は、制御部5からの制御
信号S1によって整数型乗算と2の拡大体上乗算
((6)式のc’のみ)を切り替えるようになってい
る。
【0116】図9は本実施形態の乗算回路を実現するた
めの4*4ビットの単位乗算の回路構成例を示す図であ
る。なお、現実の乗算回路41は、同図の単位演算装置
を8*32ビット構成にしたものである。また、図9
(b)の回路は同図(a)の回路の入力部分29を示す
ものである。
【0117】この乗算回路41は、図9(a)に示すよ
うに、全加算器として図5に示すキャリー制御機能付き
全加算器42を用いているので、制御信号S1に従って
キャリー伝搬の有無を制御できる。したがって、2の拡
大体演算コマンドによる整数型乗算と2の拡大体上乗算
との切替が実現される。
【0118】こうして本実施形態の演算装置では第1の
実施形態と同様な動作が実現される。
【0119】上述したように、本発明の実施の形態に係
る演算装置及び暗号処理装置は、整数型乗算回路11,
2の拡大体上乗算回路12及びセレクタ13に代えて乗
算回路41を用いるようにし、一つの回路41で回路1
1,12及び13の機能を実現するようにしたので、第
1の実施形態と同様な効果が得られる他、より少ない回
路追加で整数型乗算と2の拡大体上乗算との切り替えを
実現にすることができる。
【0120】なお、本実施形態ではキャリー制御機能付
き全加算器42として図5に示すものを用いるようにし
たが、キャリー制御機能付き全加算器42に代えて、図
6又は図7に示すキャリー制御機能付き全加算器43又
は44を用いるようにしてもよい。
【0121】(第3の実施形態)図10は本発明の第3
の実施形態に係る演算装置及び暗号処理装置に適用され
るコプロセッサの構成例を示すブロック図である。
【0122】本実施形態は、第1の実施形態に関し、剰
余算の部分を具体的に示す具体例であり、図示するよう
に、制御部5において、前述した機能に剰余算機能が付
加された2の拡大体演算制御部22aと、この剰余算機
能に制御され、且つ逆数計算部51を有する商立て回路
50とを備えている。
【0123】ここで、2の拡大体演算制御部22aは、
(5)式の乗算結果c’(x)を得るために演算部4を
制御する前述した機能に加え、この乗算結果c’(x)
に対して法多項式f(x) による剰余算を実行させるよう
に、演算部4及び商立て回路50を制御する機能をもっ
ている。具体的には、制御機能は、後述する演算アルゴ
リズムに基づいて、メモリ2やバッファX,Y,Z,R
との間でデータを入出力する機能と、この入出力に連動
し、乗算コマンド、加算コマンド及び逆数計算コマンド
などの各種コマンドを生成して対応する演算回路に与え
る機能とを有している。
【0124】商立て回路50は、数式的には剰余算のう
ちで、被除多項式c’(x)を法多項式f(x)で除し
た商を算出するためのものであり、ここでは、法多項式
f(x)の逆数β(x)と被除多項式c’(x)とを乗
算して前述した商を求める機能をもっている。
【0125】具体的には、商立て回路50は、2の拡大
体演算制御部22aにより制御され、図11に示すよう
に、剰余算の1回目のみメモリ2内の法多項式f(x)
の上位2ブロック(FL-1(x),FL-2(x))を逆数計算部
51に与えてその上位2ブロックの逆数β(x)を算出
させる機能と、得られたβ(x)がメモリ2に書込まれ
ると、メモリ2からこの逆数を読出す機能と、読出した
逆数β(x)と現在の被除多項式の上位2ブロック
(C’L-1(x),C’L-2(x))とを乗算して商γ(x)を得
る機能と、得た商γ(x) の上位2ブロック目を商qi(x)
として立て、この商qi(x)をメモリ2に書込む機能と、
これら逆数β(x)の読出から商qi(x)の書込までの動
作を剰余c(x)を得るまで繰り返す機能とをもってい
る。
【0126】逆数計算部51は、図12に示すように、
メモリ2内の法多項式f(x)の上位2ブロック(FL-
1(x),FL-2(x))を商立て回路50から受けると、図1
3に示すように、この2ブロック(FL-1(x),FL-2
(x))に基づいてその逆数β(x)を算出する機能と、
得られた逆数β(x)をメモリ2に書込む機能とをもっ
ている。また、逆数計算部51は、その一部に図27に
示したLFSRが割り算回路として使用されている。
【0127】ここで、逆数β(x)は、ビット数が固定
長であり、後段の除算処理本体にて除数の正規化並びに
演算結果の逆正規化の処理を不要とする観点から、単な
る逆数ではなく、図13に示したように予め補正されて
いる。また、逆数β(x)自体は、逆数計算部51を含
む商立て回路50に代えて、演算部4に算出させてもよ
い。
【0128】なお、逆数計算部51は、例えば整数型の
積和演算回路のバス幅が8ビットのように小さいとき、
全ての8ビット値の逆数値をテーブルにしてROMなど
に記憶させる方式に置き換えが可能である。しかしなが
ら、逆数計算部51は、バス幅が16ビット以上のと
き、コストを低減させる観点から、全ての16ビット値
の逆数値をROMに記憶させる方式よりも好ましい。
【0129】次に、以上のように構成された演算装置
(コプロセッサ)の動作を説明する。
【0130】本発明に係る2の拡大体多項式基底の剰余
乗算は、乗算と剰余算とを別に行う。すなわち、図14
に示すように、乗算対象の多項式a(x) ,b(x) 及び法
多項式f(x) を入力し(ST1)、a(x) ・b(x) の乗
算を行って2倍のビット長の乗算結果C’(x)を得た
後(ST2)、C’(x)mod f(x) の剰余算を行
い(ST3)、剰余c(x)を得る(ST4)。
【0131】ここで、ステップST2の乗算は、第1及
び第2の実施形態で述べた通りである。よって、ここで
はステップST3〜ST4の剰余算の動作について説明
する。なお、始めに筆算について延べ、次いで、筆算に
対応した実際の処理を説明する。
【0132】(6)式の剰余算は、図15に筆算を示す
ように、除数f(x) と、被除数C(x)とが所定ビット数k
の単位ブロック毎に分割されて行われる。なお、単位ブ
ロックのビット数は、例えばコプロセッサ1のバス幅に
対応したビット数が適用可能である。
【0133】次に、被除数c(x) の上位ブロックcL-i
(x)がf(x) で除算され、上位桁から1ブロックの商qi
(x) が立てられ、c(x) −f(x)・qi(x)として、上位桁
から1ブロックの被除数c(x)が減らされる。
【0134】詳しくは、1ブロックの商qi(x) と除多項
式f(x)との乗算結果が毎回(m+1)ブロックになる。
また、この乗算結果を今回の被除多項式c(x) から減算
(=加算)して、(2m−1*n)ブロックの次回の被
除多項式を算出し(nは乗算回数)、すなわち前回の被
除数c(x)を1ブロックずつ減らしていく。
【0135】剰余算は、このような商立てから減算まで
の処理をn回(=被除数のビット数/単位ブロックのビ
ット数)繰り返し、剰余c(x)を得て完了する。
【0136】続いて、剰余算を行う実際の処理動作を説
明する。上述した剰余算において、商qi(x)を立てる動
作は、図11に示すように商立て回路50が行い、c
(x) −f(x)・qi(x)として被除数c(x) を減らす動作
は、図16に示すように演算部4が行う。これら商立て
回路50及び演算部4の動作について、以下、順次述べ
る。
【0137】商立て回路50は、最初の1回目の商計算
を行うとき、図11及び図12に示すように、除数f
(x)の逆数β(x)を算出するため、メモリ2から除
数f(x) の上位2ブロック(FL-1(x),FL-2(x))を読
出すと、逆数計算部51に入力する。
【0138】逆数計算部51は、図13及び(8)式に
示すように、この2ブロック(FL- 1(x),FL-2(x))の
うち、上位1ブロックFL-1(x)の最上位ビットMSBか
ら連続した0の数をdとして記憶する。
【0139】 d=count_zero( FL-1(x)) …(8) 但し、count_zero():()の値でMSBから連続した0
の数を数える関数また、この無効な桁数dに基づいて、
後述する左シフトの桁数hを(9)式のように算出して
記憶する。
【0140】h=(d+1)mod k …(9) 次に、逆数計算部51は、図13及び(10)式に示す
ように、除数f(x)の上位2ブロック(FL-1(x),F
L-2(x))の逆数α(x)をLFSR90にて算出する。
【0141】 α(x)=x2k/(FL-1(x)・Xk +FL-2(x)) …(10) 例えば、1ブロックが16ビット(k=16)の場合を
説明する。また、被除数は、最上位ビットMSBが
“1”で他のビットが“0”のx2 *16(=x2k)であ
るとする。
【0142】逆数計算部51は、上位2ブロック(F
L-1(x),FL-2(x))を除数として図27中の係数器93
に設定した後、被除数x2kを高次からシフトレジスタに
入力して1クロック毎のシフトを2*16回繰り返し、
32ビットの逆数α(x) を得る。なお、1ブロックは、
8ビットや32ビットでもよく、その他の任意のビット
数でも同じ方式で逆数α(x)を算出可能となってい
る。
【0143】続いて、逆数計算部51は、この逆数α
(x)をそのMSB側に(k−1)ビットの“0”と1
ビットの“1”を連結して2kビットの値α’(x)に
する。その後、この2kビットの値α’(x)を、(1
1)式に示すように、(9)式で得た左シフトの桁数h
だけ左にビットシフトし、補正された逆数β(x)を算
出する。
【0144】 β(x)=α’(x)・x …(11) ここで、補正された逆数β(x) とは、以上の(8)式〜
(11)式を満たす値である。また、逆数β(x)は、
与えられた法多項式f(x) に対して1回だけ算出してメ
モリ2に保持し、以後はメモリ2から読み出される。ま
た、被除数が変わっても、法多項式f(x) が同一であれ
ば逆数β(x)も同一であるため、逆数β(x)を算出
せずにメモリ2から読出せばよい。
【0145】商計算のうち、逆数β(x) が事前設定され
ていると、剰余算は、以下の(12)式〜(15)式で
実行できる。
【0146】すなわち、商立て回路50は、(12)式
及び図11に示すように、現在の被除数Ci (0≦i≦
n)の上位2ブロック(CL-1(x),CL-2(x))と逆数β
(x)を掛ける。 γ(x) =β(x) ・(CL-1(x)・xk +CL-2(x)) …(12) また、商立て回路50は、(13)式に示すように、こ
の結果γ(x) のうち、1ブロック分の商qi(x)に該当す
る桁を上位2ブロック目として切出し処理し、メモリ2
に書込む。 qi(x)=γ(x) /x2k …(13) これにより、1ブロック分の商qi(x)が得られる。次
に、現在の被除数ci(x)から除数と商の積f(x) ・qi
(x)を減算する処理は、図16に示すように、演算部4
が実行する。
【0147】すなわち、演算部4では、2の拡大体上乗
算回路12が、法多項式f(x) と、現在の1ブロック分
の商qi(x)とを乗算して(14)式に示すように乗算結
果P(x) を得る。
【0148】P(x) =f(x) ・qi(x) …(14) また(15)式に示すように、加算回路14,15が、
この乗算結果P(x) を現在の被除数Ci から減算し(=
加算し)、次回の被除数Ci+1 を得る。 Ci+1 =Ci +P(x) …(15) 以下、(12)式〜(15)式をn回、繰り返して行
い、最終的に、図14〜図16に示す如き、剰余c(x)
を得る。この剰余c(x) (=[cm-1 ,…,c1,c
0 ])が、(3)式に示した最終的な剰余乗算結果c
(x) に相当する。
【0149】以上により、第1又は第2の実施形態に述
べた(5)式の乗算結果c(x) から(6)式の剰余算結
果c(x) を算出でき、もって、乗算及び剰余算からなる
剰余乗算を完結することができる。
【0150】(評価)続いて、以上のように剰余乗算を
行う第1及び第3の実施形態におけるコプロセッサ1の
処理速度と回路規模を評価したので、順次説明する。 (処理速度の評価)コプロセッサ1における各コマンド
の所要クロック数は、ビット数m=160の場合とm=
1024の場合に関し、図17に示す通りである。な
お、楕円曲線暗号への応用では、ビット数m=160が
典型的なサイズである。図示したm=1024の場合は
整数型RSA方式暗号の現在安全であるとされる最大の
鍵長が1024ビットであることから、将来想定される
楕円曲線暗号への鍵長の増加に伴う速度の見積もりとし
て示した。
【0151】次に、処理速度の相対比較のため、160
ビットの2の拡大体GF(2160 )の加算、乗算、二乗
算における処理クロック数を評価した。結果は図18に
示す通りである。なお、乗算と二乗算と乗算のクロック
数は、GF(2160 )演算の速度比較のため、図17と
は異なり、法多項式による剰余算を含むクロック数とな
っている。
【0152】また、相対比較値としてのSR比は、コプ
ロセッサ1のクロック数を通常のシフトレジスタ回路の
クロック数で除した値であり、この値が小さいほど処理
速度が高速であることを示す。このSR比によれば、本
発明のコプロセッサ1は、加算を除き、通常のシフトレ
ジスタ回路と同等の処理速度で2の拡大体演算を実行で
きることが分かる。
【0153】(回路規模の評価)コプロセッサ1の回路
規模は、図19に示すように、全体で約30kゲートの
規模となる。このコプロセッサ1の回路は、整数型コプ
ロセッサに対し、2の拡大体演算を処理するための回路
を追加したものである。
【0154】具体的には図20に示すように、演算部4
では、積和演算回路において、キャリー有り・無しの切
替回路を追加している。制御部5では、加算、乗算及び
二乗算に関し、追加がほぼ不要であるが、除算に関し、
商立て回路50を追加している。RAM(メモリ2)及
びI/Fは、整数型コプロセッサと共用するため追加が
不要である。
【0155】これにより、追加回路の規模は、全体で約
5kゲートとなる。5kゲートという追加回路量は、最
近のLSI技術では大きい量ではなく、現行コプロセッ
サに代えて、本発明のコプロセッサ1を用いることが十
分可能な範囲にある。
【0156】また比較のため、本発明のコプロセッサ1
を用いずに2の拡大体の演算機能(加算・乗算・二乗
算)を実現する場合における2の拡大体演算専用のコプ
ロセッサの回路規模を見積もった。結果は、図21に示
す通りである。
【0157】図示するように、2の拡大体演算専用のコ
プロセッサの回路規模は、m=160の場合に10kゲ
ートであり、m=1024の場合には16kゲートであ
る。これにより、2の拡大体の演算機能を実現する場
合、本発明に係るコプロセッサ1を用いた方が、2の拡
大体演算専用のコプロセッサを設ける場合に比べ、約1
/2〜1/3という少ない追加回路で実現できることが
分かる。
【0158】上述したように本実施形態によれば、第1
の実施形態の効果に加え、剰余算処理の際に線形フィー
ドバックシフトレジスタLFSR90ではなく、多倍長
の積和演算回路が演算を行うので、1以上の任意の拡大
次数mを使用でき、2の拡大体の拡大次数mを増加して
も、装置本体を作り直さずに演算を実行することができ
る。さらに、拡大次数mの制限によるハードウェア的な
制約を無くすことで暗号鍵のビットの増加にも対応する
ことができる。
【0159】また、2の拡大体の剰余乗算を乗算処理と
剰余算(除算)処理とに分割し、任意の法多項式f(x)
を使用できるようにしたので、汎用性を向上させること
ができる。
【0160】また、商立て回路50が、剰余算処理のと
き、被除多項式c(x) と除多項式f(x) とに基づいて商
計算を行い、上位からバス幅と同じビット数の1ブロッ
クの商多項式qi(x)を立てると、演算部4が、この商多
項式qi(x)と除多項式f(x)との乗算結果qi(x)・f(x)
を今回の被除多項式ci(x)から減らして次回の被除多
項式ci-1(x)を算出する。
【0161】コプロセッサ1は、このような商立て回路
50による商計算と、演算部4の積和演算による被除多
項式データの算出までの処理を繰り返して剰余c(x)
を得るので、ハードウェアの特性を生かして剰余算と商
計算の効率化を図ることができる。
【0162】さらに、商立て回路50としては、商計算
のとき、除多項式データの上位2ブロックの逆数データ
と今回の被除多項式データの上位2ブロックとを乗算
し、この乗算結果の上位2ブロック目を1ブロックの商
多項式データとすることにより、得られた商多項式のう
ち、有効数字の部分を抽出できるので、演算精度の最適
化を図ることができる。
【0163】また、商計算において、除多項式f(x) の
上位2ブロックからの逆数β(x) の算出をコマンドとし
て独立させ、2の拡大体演算に先行して逆数β(x) を算
出し、得られたβ(x) をメモリ2に格納し、剰余算の実
行時には逆数β(x) をメモリ2から読出す。
【0164】すなわち、同じ法多項式下での重複する剰
余算の実行時に、逆数データをメモリから読出して商を
立てるので、2回目の商計算以降は逆数データの算出時
間を省略でき、もって、2の拡大体乗算(剰余乗算)、
二乗算の処理時間を短縮することができる。また、逆数
β(x) を事前に算出できるので、2の拡大体の剰余乗算
を、乗算と加算とを行う積和演算回路のみを用いて実現
することができる。
【0165】次に、商立て回路50としては、逆数デー
タを算出するとき、除多項式データの上位2ブロックの
うち、上位から連続した0の数を計数すると、上位から
1ブロック+1ビットの多項式データを最上位ビットを
1とするように抽出し、この抽出した多項式データの逆
数を求め、得られた逆数の最上位ビット側に、最下位ビ
ットが1で他のビットが0の1ブロックの補正データを
連結して全体で2ブロックのデータを求め、このデータ
を前記計数した0の数だけ上位側にビットシフトさせた
結果を逆数データとする。
【0166】このため、一般的な多倍長の整数型の除算
で用いられる単精度除算を用いたKnuth のアルゴリズム
による除数の正規化や近似商の補正処理、商や剰余とい
った演算結果の逆正規化の処理を行わないように、予め
補正した値を逆数データとしたので、ビットシフトの回
数を減らすことができ、演算装置を最適化することがで
きる。
【0167】例えば、整数型の乗算では、mビット*m
ビット=2mビットとなり、2mビットの上位に数ビッ
トの連続した0が並んでいる場合でも有効なビット数は
2mである。この乗算結果を用いて除算(剰余算)を行
う場合、0での割り算はできないため、予め除数、被除
数を左シフトしてMSBに1が立つように正規化する必
要がある。所定のループを終えて演算が終了した時点
で、事前に左シフトしたビット数だけ演算結果(商、剰
余)を右シフトする逆正規化の処理も必要である。一
方、本実施形態では、このような除算ループの前後処理
を不要にする観点から、商計算時の除数(逆数データβ
(x) )を補正したので、演算装置を最適化することがで
きる。
【0168】また、本実施形態は、ビット単位ではな
く、ブロック単位で演算を実行し、且つ補正された逆数
β(x) を用いて演算を実行するので、ビットシフトの回
数を低減でき、処理速度の高速化を図ることができる。
【0169】さらに、少ないコマンドと、多倍長積和演
算回路を用いた演算方式により、通常のシフトレジスタ
型の2の拡大体乗算回路と同等の処理速度を有し、且
つ、整数型演算や2の拡大体演算に基づく各種暗号方式
を実行可能なLSIを登載した演算装置及び暗復号装置
を少量の追加回路により実現することができる。なお、
2の拡大体演算を用いた暗号方式としては、素体版楕円
番号、多項式基底楕円暗号等の楕円曲線暗号が適用可能
となっている。
【0170】また、本実施形態は、第1の実施形態にお
ける除算過程の具体例として説明したが、第2の実施形
態における除算過程の具体例としても、同様の作用効果
を得ることができる。
【0171】(第4の実施形態)図22は本発明の第4
の実施形態に係る演算装置及び暗号処理装置に適用され
るコプロセッサの構成例を示す模式図である。
【0172】本実施形態は、第1〜第3の実施形態の変
形形態であり、2の拡大体演算専用の演算装置としたも
のであって、具体的には、整数型乗算器11、セレクタ
13、整数演算制御部21を省略した構成となってい
る。但し、演算アルゴリズムは、前述した通りであり、
2の拡大体の乗算処理を乗算と剰余算とに分割し、乗算
の後に剰余算を実行する。
【0173】以上のような構成としても、整数型演算自
体の作用効果と、整数型演算並びに2の拡大体演算の切
替に関する作用効果とを除き、第1〜第3の実施形態の
効果を得ることができる。換言すると、2の拡大体演算
に関し、第1〜第3の実施形態の効果を得ることができ
る。
【0174】その他、本発明はその要旨を逸脱しない範
囲で種々変形して実施できる。
【0175】
【発明の効果】以上詳記したように本発明によれば、最
小のアーキテクチャを追加するだけで整数型の演算に加
えて2の拡大体上の演算をも実行できる演算装置及び暗
号処理装置を提供することができる。
【0176】また、2の拡大体の拡大次数mを増加して
も、装置本体を作り直さずに演算を実行できる演算装置
及び暗号処理装置を提供できる。
【図面の簡単な説明】
【図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】本発明の第3の実施形態に係る演算装置及び
暗号処理装置に適用されるコプロセッサの構成例を示す
ブロック図
【図11】同実施形態における商立て回路の構成を示す
模式図
【図12】同実施形態における逆数計算部の機能を説明
するための模式図
【図13】同実施形態における逆数計算部の構成を示す
模式図
【図14】同実施形態における2の拡大体多項式基底の
剰余乗算方式を説明するためのフローチャート
【図15】同実施形態における剰余算処理を説明するた
めの筆算の模式図
【図16】同実施形態における演算部の処理を示す模式
【図17】同実施形態における各コマンドの所要クロッ
ク数を示す図
【図18】同実施形態におけるGF( 2160)演算の所要
クロック数を示す図
【図19】同実施形態におけるコプロセッサの回路規模
を示す図
【図20】同実施形態における追加回路量を示す図
【図21】同実施形態における比較用のGF( 2) 演
算専用のコプロセッサの回路規模を示す図
【図22】本発明の第4の実施形態に係る演算装置及び
暗号処理装置に適用されるコプロセッサの構成例を示す
模式図
【図23】暗号処理用演算用コプロセッサを含むICカ
ード用LSIのブロック図。
【図24】図10に示すLSIにおけるコプロセッサ部
分の構成例を示すブロック図。
【図25】多項式基底の2の拡大体演算を行うコプロセ
ッサのハードウェア構成例を示すブロック図。
【図26】円分体といわれる2の拡大体の乗算回路を示
す図。
【図27】一般的な線形フィードバックシフトレジスタ
LFSRの構成を示すブロック図
【符号の説明】
1,1’…コプロセッサ 2…メモリ 3…データバス 11…整数型乗算回路 12…2の拡大体上乗算回路 13…セレクタ 14…加算回路 15…加算回路 16…キャリー保持部 21…整数演算制御部 22…2の拡大体演算制御部 32…全加算器 33…スイッチ 41…乗算回路 42,43,44…キャリー制御機能付き全加算器 50…商立て回路 51…逆数計算部 S1,s2…制御信号
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B017 AA06 BA07 BB03 CA14 5B022 AA05 BA11 CA03 CA04 DA09 FA10 5B035 AA00 BB09 CA11 5J104 AA22 JA23 NA18

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 2の拡大体の多項式基底表現での剰余乗
    算を実行可能な多倍長の積和演算回路を有する演算装置
    であって、 前記剰余乗算を乗算処理と剰余算処理とに分割して前記
    積和演算回路の制御により実行するための制御手段を備
    えたことを特徴とする演算装置。
  2. 【請求項2】 請求項1に記載の演算装置において、 前記積和演算回路は、 前記2の拡大体多項式基底における多項式データを乗算
    するとき、キャリー伝播をしない単精度の乗算回路と、 前記乗算回路による乗算結果を用いて加算を行う倍精度
    の加算回路とを有し、 前記制御手段は、前記乗算処理のとき、前記乗算回路と
    前記加算回路を制御することを特徴とする演算装置。
  3. 【請求項3】 請求項2に記載の演算装置において、 前記制御手段に制御され、前記剰余算処理のとき、2つ
    の多項式データの乗算結果を初回の被除多項式データと
    し、所定の法多項式データを除多項式データとし、前記
    初回又は2回目以降の被除多項式データと前記除多項式
    データとに基づいて商計算を行い、上位からバス幅と同
    じビット数の1ブロックの商多項式データを立てる商立
    て回路を有し、 前記制御手段は、前記剰余算処理のとき、前記商立て回
    路の制御により1ブロックの商多項式データが立ったと
    き、前記乗算回路及び前記加算回路の制御により、前記
    1ブロックの商多項式データと前記除多項式データとの
    乗算結果を今回の被除多項式データから減らして次回の
    被除多項式データを算出し、前記商立て回路の制御から
    前記被除多項式データの算出までの処理を繰り返して剰
    余データを得ることを特徴とする演算装置。
  4. 【請求項4】 請求項3に記載の演算装置において、 前記商立て回路は、前記商計算のとき、前記除多項式デ
    ータの上位2ブロックの逆数データと今回の被除多項式
    データの上位2ブロックとを乗算し、この乗算結果の上
    位2ブロック目を前記1ブロックの商多項式データとす
    ることを特徴とする演算装置。
  5. 【請求項5】 請求項4に記載の演算装置において、 前記商立て回路は、初回に商多項式データを立てると
    き、前記除多項式データの上位2ブロックから逆数デー
    タを算出してメモリに記憶させ、2回目以降に商多項式
    データを立てるとき、前記メモリ内の逆数データを読出
    して用いることを特徴とする演算装置。
  6. 【請求項6】 請求項4又は請求項5に記載の演算装置
    において、 前記商立て回路は、前記逆数データを算出するとき、前
    記除多項式データの上位2ブロックのうち、上位から連
    続した0の数を計数すると、上位から1ブロック+1ビ
    ットの多項式データを最上位ビットを1とするように抽
    出し、この抽出した多項式データの逆数を求め、得られ
    た逆数の最上位ビット側に、最下位ビットが1で他のビ
    ットが0の1ブロックの補正データを連結して全体で2
    ブロックのデータを求め、このデータを前記計数した0
    の数だけ上位側にビットシフトさせた結果を前記逆数デ
    ータとすることを特徴とする演算装置。
  7. 【請求項7】 請求項1乃至請求項6のいずれか1項に
    記載の演算装置を備え、 前記演算装置による2の拡大体の剰余乗算に基づく暗号
    化又は復号処理を実行することを特徴とする暗号処理装
    置。
  8. 【請求項8】 請求項1乃至請求項6のいずれか1項に
    記載の演算装置において、 整数型の単位乗算を実行する場合にはキャリーを伝搬さ
    せて単位乗算回路を動作させ、2の拡大体の単位乗算を
    実行する場合にはキャリーを伝搬させずに単位乗算回路
    を動作させるようにしたことを特徴とする演算装置。
  9. 【請求項9】 請求項1乃至請求項6のいずれか1項に
    記載の演算装置において、 整数型の単位乗算回路と、 前記整数型の単位乗算回路と論理的に隣接して配置され
    た2の拡大体の単位乗算回路と、 前記整数型の単位乗算回路を使用するか、前記2の拡大
    体の単位乗算回路を使用するかを選択する選択手段とを
    備えたことを特徴とする演算装置。
  10. 【請求項10】 請求項1乃至請求項6のいずれか1項
    に記載の演算装置において、 整数型の単位乗算回路と、 整数型の単位乗算を実行するか、2の拡大体の単位乗算
    を実行するかの選択信号を前記整数型の単位乗算回路に
    出力する選択制御手段とを備えると共に、 前記整数型の単位乗算回路は、多倍長の積和演算を実行
    する際に、整数型の単位乗算を実行すべき旨の選択信号
    を受けたときにはキャリーを伝播し、2の拡大体の単位
    乗算を実行すべき旨の選択信号を受けたときにはキャリ
    ー伝搬をしないキャリー伝搬制御手段を備え、前記単位
    乗算回路におけるキャリー伝搬を制御することにより、
    整数型乗算と2の拡大体の乗算を切替可能に構成された
    ことを特徴とする演算装置。
  11. 【請求項11】 請求項10に記載の演算装置におい
    て、 前記キャリー伝搬制御手段は、前記選択信号とキャリー
    アウト信号を入力とするスイッチによって、1ビット毎
    の全加算器におけるキャリーの伝搬制御を行うことを特
    徴とする演算装置。
  12. 【請求項12】 請求項10に記載の演算装置におい
    て、 前記キャリー伝搬制御手段は、1ビット毎の全加算器に
    おける2入力a,bの排他的論理和の結果cを加算結果
    として出力するか、前記結果cと入力キャリーとの排他
    的論理和の結果dを加算結果として出力するかを切り替
    える選択手段からなることを特徴とする演算装置。
  13. 【請求項13】 請求項8乃至請求項12のいずれか1
    項に記載の演算装置において、 前記整数型の乗算を実行する場合にはキャリーを伝搬さ
    せて加算を実行し、2の拡大体の乗算を実行する場合に
    はキャリーを伝搬させずに加算を実行する加算回路を備
    えたことを特徴とする演算装置。
  14. 【請求項14】 請求項8乃至請求項13のいずれか1
    項に記載の演算装置を備え、 前記演算装置による整数型の演算に基づく暗号化又は復
    号処理と、前記演算装置による2の拡大体の演算に基づ
    く暗号化又は復号処理との双方を切替可能に構成された
    ことを特徴とする暗号処理装置。
JP11209831A 1999-01-20 1999-07-23 演算装置及び暗号処理装置 Pending JP2001034167A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP11209831A JP2001034167A (ja) 1999-07-23 1999-07-23 演算装置及び暗号処理装置
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
JP11209831A JP2001034167A (ja) 1999-07-23 1999-07-23 演算装置及び暗号処理装置

Publications (1)

Publication Number Publication Date
JP2001034167A true JP2001034167A (ja) 2001-02-09

Family

ID=16579349

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP2001034167A (ja)

Cited By (10)

* 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 ガロア体上の元の除算演算方法および除算演算回路
JP2004533671A (ja) * 2001-02-21 2004-11-04 ミップス テクノロジーズ インコーポレイテッド 多項式演算オペレーション
US7283628B2 (en) 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
US7508937B2 (en) 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
US7895253B2 (en) 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
JP4836208B2 (ja) * 2006-07-24 2011-12-14 国立大学法人 岡山大学 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
US8447958B2 (en) 2001-02-21 2013-05-21 Bridge Crossing, Llc Substituting portion of template instruction parameter with selected virtual instruction parameter
JP2014174291A (ja) * 2013-03-08 2014-09-22 Mega Chips Corp 暗号処理装置

Cited By (11)

* 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 ガロア体上の元の除算演算方法および除算演算回路
JP2004533671A (ja) * 2001-02-21 2004-11-04 ミップス テクノロジーズ インコーポレイテッド 多項式演算オペレーション
JP2009282992A (ja) * 2001-02-21 2009-12-03 Mips Technologies Inc 多項式演算オペレーション
US8447958B2 (en) 2001-02-21 2013-05-21 Bridge Crossing, Llc Substituting portion of template instruction parameter with selected virtual instruction parameter
US7283628B2 (en) 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
US7895253B2 (en) 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
US7508937B2 (en) 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
JP4836208B2 (ja) * 2006-07-24 2011-12-14 国立大学法人 岡山大学 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
JP2014174291A (ja) * 2013-03-08 2014-09-22 Mega Chips Corp 暗号処理装置

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
Blum et al. Montgomery modular exponentiation on reconfigurable hardware
JP4955182B2 (ja) 整数の計算フィールド範囲の拡張
EP1293891B2 (en) Arithmetic processor accomodating different finite field size
US9146708B2 (en) Implementation of arbitrary galois field arithmetic on a programmable processor
US6671709B2 (en) Multiplier cell and method of computing
Öztürk et al. Low-power elliptic curve cryptography using scaled modular arithmetic
JP2002521720A (ja) モジューロ乗算のための回路および方法
Grossschadl The Chinese remainder theorem and its application in a high-speed RSA crypto chip
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
Gutub et al. Efficient scalable VLSI architecture for Montgomery inversion in GF (p)
JP2001034167A (ja) 演算装置及び暗号処理装置
US20030037087A1 (en) Apparatus and method for efficient modular exponentiation
Choi et al. ECC coprocessor over a NIST prime field using fast partial Montgomery reduction
Abdulrahman et al. High-speed hybrid-double multiplication architectures using new serial-out bit-level mastrovito multipliers
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
Reyhani-Masoleh et al. New multiplicative inverse architectures using Gaussian normal basis
JP2004227344A (ja) 乗算器及び暗号回路
Großschädl High-speed RSA hardware based on Barret’s modular reduction method
JP2000207387A (ja) 演算装置及び暗号処理装置
Tenca et al. A design framework for scalable and unified multipliers in GF (p) and GF (2m)
Wang et al. New VLSI architectures of RSA public-key cryptosystem
KR20040048471A (ko) 직렬 유한체 승산기

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060426

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060606