JP2003216411A - 多倍長演算処理装置およびicデバイス - Google Patents

多倍長演算処理装置およびicデバイス

Info

Publication number
JP2003216411A
JP2003216411A JP2002013697A JP2002013697A JP2003216411A JP 2003216411 A JP2003216411 A JP 2003216411A JP 2002013697 A JP2002013697 A JP 2002013697A JP 2002013697 A JP2002013697 A JP 2002013697A JP 2003216411 A JP2003216411 A JP 2003216411A
Authority
JP
Japan
Prior art keywords
register
arithmetic processing
precision arithmetic
multiplier
processing device
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
JP2002013697A
Other languages
English (en)
Other versions
JP2003216411A5 (ja
Inventor
Toru Akishita
徹 秋下
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2002013697A priority Critical patent/JP2003216411A/ja
Publication of JP2003216411A publication Critical patent/JP2003216411A/ja
Publication of JP2003216411A5 publication Critical patent/JP2003216411A5/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 モンゴメリ乗算処理、剰余加算処理等を高速
に実行し、低消費電力化を実現する演算処理回路構成を
提供する。 【解決手段】 ブロック長とブロック数に応じたシフト
レジスタとして、例えば32ビット×5ブロックのシフ
トレジスタを構成し、各ブロックのデータをシフトレジ
スタにおいてシフトし、それぞれ乗算器、加算器に入力
して、多倍長演算処理を実行する。さらに、メモリから
のレジスタに対するデータ格納処理と、乗算器における
乗算処理プロセスとを並列に動作させることなく、それ
ぞれの処理プロセスをシーケンシャルなタイミングで実
行して多倍長演算処理を行なう。本構成により、モンゴ
メリ乗算処理、剰余加算処理等の高速実行、低消費電力
化が可能となる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、多倍長演算として
の剰余演算を実行する多倍長演算処理装置および多倍長
演算処理部を備えたICデバイスに関する。
【0002】
【従来の技術】昨今、ネットワーク通信、電子商取引の
発展に伴い、通信におけるセキュリティ確保が重要な問
題となっている。セキュリティ確保の1つの方法が暗号
技術であり、現在、様々な暗号化手法を用いた通信が実
際に行なわれている。
【0003】暗号化方式には、大別して共通鍵方式、公
開鍵方式がある。共通鍵方式は、対称暗号方式ともよば
れ、発信者、受信者の双方で共通の鍵を保有する。共通
鍵方式の代表的な方法として、DES(Data Encryptio
n Standard)がある。DESアルゴリズムの特徴は、暗
号化と復号化とをほぼ同じアルゴリズムで実行可能なこ
とである。
【0004】この共通鍵暗号に対して、発信者と受信者
の鍵を異なるものとした構成が公開鍵方式または非対称
暗号方式である。公開鍵暗号方式では、暗号化、復号化
に共通の鍵を用いる共通鍵暗号方式と異なり、秘密に保
つ必要のある秘密鍵は、特定の1人が持てばよいため鍵
の管理において有利である。ただし、公開鍵暗号方式は
共通鍵暗号方式に比較してデータ処理速度が遅く、一般
には、秘密鍵の配送、ディジタル署名等のデータ量の少
ない対象に多く用いられている。公開鍵暗号方式の代表
的なものにはRSA(Rivest-Shamir-Adleman)暗号が
ある。これは非常に大きな2つの素数(例えば150
桁)の積を用いるものであり、大きな2つの素数(例え
ば150桁)の積の素因数分解する処理の困難さを利用
している。
【0005】公開鍵暗号方式では、不特定多数に公開鍵
を使用可能とする構成であり、配布する公開鍵が正当な
ものであるか否かを証明する証明書、いわゆる公開鍵証
明書を使用する方法が多く用いられている。例えば、利
用者Aが公開鍵、秘密鍵のペアを生成して、生成した公
開鍵を認証局に対して送付して公開鍵証明書を認証局か
ら入手する。利用者Aは公開鍵証明書を一般に公開す
る。不特定のユーザは公開鍵証明書から所定の手続きを
経て公開鍵を入手して文書等を暗号化して利用者Aに送
付する。利用者Aは秘密鍵を用いて暗号化文書等を復号
する等のシステムである。また、利用者Aは、秘密鍵を
用いて文書等に署名を付け、不特定のユーザが公開鍵証
明書から所定の手続きを経て公開鍵を入手して、その署
名の検証を行なうシステムである。
【0006】公開鍵証明書は、公開鍵暗号方式における
認証局あるいは発行局(CA:Certificate Authority
またはIA:Issuer Authority)が発行する証明書であ
り、ユーザが自己のID、公開鍵等を認証局に提出する
ことにより、認証局側が認証局のIDや有効期限等の情
報を付加し、さらに認証局による署名を付加して作成さ
れる証明書である。
【0007】公開鍵暗号方式としては、上述したRSA
方式の他にnが素数の場合の離散対数問題の困難さを利
用した離散対数暗号が知られている。米国標準のディジ
タル署名方式として知られるDSA(Digital Signatur
e Standard)には、この離散対数暗号が用いられてい
る。また、V.Miller, N.Koblitzによって提案された楕
円曲線暗号(ECC:Ellipitic Curve Cryptography)
が、安全性および高速性の点で昨今注目されている。楕
円曲線暗号は、160bitの鍵でRSA1024bi
tの鍵と同等の強度を持つと言われる。
【0008】一般に、楕円曲線暗号(Elliptic Curve C
ryptography)は、素体上のWeierstrass
(ワイエルシュトラス)型楕円曲線:y2=x3+ax+
b(4a3+27b2≠0)や、2の拡大体上の楕円曲線
2+xy=x3+ax2+b(b≠0)、素体上のモン
ゴメリ型楕円曲線By2=x3+Ax2+x((A2−4)
B≠0)などを用いる。これらの曲線上の点に無限遠点
(O)を加えた集合は、加法に関して有限群をなし、無
限遠点(O)はその単位元となる。以下、この有限群上
の点の加法を+で表す。この有限群上の異なる2点P,
Qの加算P+Qを「点の加算」、点Pと点Pの加算P+
P=2Pを「点の2倍算」と呼ぶ。また、点Pをk回加
算した点P+P+…+P=kPを求める演算を「点のス
カラー倍算」と呼ぶ。
【0009】点のスカラー倍算は、点の加算、および点
の2倍算を用いて構成できることが知られている。素体
上の楕円曲線や2の拡大体上の楕円曲線上のアフィン座
標系(x,y)や射影座標(X,Y,Z)における点の
加算法、点の2倍算法、および点のスカラー倍算法は、
IEEE P1363/D13 Standard Specifications forPub
lic Key Cryptographyに記されている。
【0010】多くの暗号処理に係る演算では、一般的な
CPUのワード長を超える多倍長演算が必要となる。上
述した楕円曲線を用いた暗号においては、一般に160
ビット以上の演算を必要とする。160ビット以上の多
倍長演算はCPU等を用いてソフトウェアで計算するこ
とができるが、ICカードなどの限定された環境におい
てはCPU等も比較的低速なものを用いなければなら
ず、また、電力消費も限定され、演算時間が非常に遅く
なってしまう。
【0011】そこで、楕円曲線暗号を用いるために専用
のコプロセッサで演算を行う多倍長演算装置が提案され
ている(特開2000−353077)。この方法では
2つの2port−RAMと乗算器、加算器等を用いて
剰余乗算の一手法であるモンゴメリ乗算等の演算や剰余
加算等を行っている。しかし、乗算器の使用効率を上
げ、楕円曲線暗号処理を高速に行うためには、2つの2
port−RAMと乗算器を同時に動作させなければな
らない。RAMと乗算器の動作は消費出力を必要とする
ので、この方法では非接触ICカード等の消費電力に制
限のある環境において実装することは難しい。また、2
つの2port−RAMと乗算器を交互に動作させるこ
とも考えられるが、この場合には乗算器の使用効率は半
分になりモンゴメリ乗算に必要なクロック数は2倍近く
になるので、楕円曲線暗号の演算処理も遅くなってしま
う。
【0012】
【発明が解決しようとする課題】本発明は、上記問題点
に鑑みてなされたものであり、メモリと乗算器を同時動
作させることなく、モンゴメリ乗算等の多倍長演算を実
行可能とする多倍長演算処理装置を提供することを目的
とする。
【0013】さらに、本発明は、メモリと乗算器を同時
動作させることなく、モンゴメリ乗算等の多倍長演算を
実行可能とすることにより、低消費電力の演算回路を実
現し、例えば非接触で外部給電を受けて動作するICカ
ード等、電力消費が制限された環境での演算が要求され
るデバイスにおいて処理エラー等を発生させることのな
い多倍長演算回路により楕円曲線暗号処理を実行可能と
したICデバイスを提供することを目的とする。
【0014】さらに、本発明は、ワード格納レジスタを
マルチブロック対応のレジスタとする構成としてブロッ
ク数が異なる鍵長に対応した楕円曲線暗号回路を実現す
ることを目的とする。
【0015】
【課題を解決するための手段】本発明の第1の側面は、
多倍長演算処理装置において、所定ビット数のデータか
らなるワード単位での乗算処理を実行する乗算器と、前
記乗算器に対する入力データを格納するレジスタであ
り、1レジスタに1ワードを格納する構成を有する多段
構成の第1のシフトレジスタと、前記乗算器における乗
算処理後のデータを格納するレジスタであり、1レジス
タに1ワードを格納する構成を有する多段構成の第2の
シフトレジスタと、を有することを特徴とする多倍長演
算処理装置にある。
【0016】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記乗算器に対する入力データを格納する1ワード
格納用レジスタと、前記乗算器の乗算処理の停止クロッ
クタイミングに、前記1ワード格納用レジスタに対する
メモリからのデータセット処理を実行する制御部と、を
有する構成であることを特徴とする。
【0017】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記乗算器の乗算処理の停止クロックタイミング
に、前記多段構成の第1のシフトレジスタに対するメモ
リからのデータセット処理を実行する制御部を有する構
成であることを特徴とする。
【0018】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記乗算器の計算結果を入力し、該入力に基づく加
算処理を実行する加算器を有することを特徴とする。
【0019】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記第1のシフトレジスタの前段に、セレクタと、
1ワード格納用レジスタを交互に構成した回路構成を有
することを特徴とする。
【0020】さらに、本発明の第2の側面は、モンゴメ
リ乗算を実行する多倍長演算処理装置であり、下記計算
プロセスからなるモンゴメリ乗算、 INPUT:m=(mn-1…m10b,X=(xn-1
10b,Y=(yn- 1…y10b, 0≦X,Y<m,R=bn,gcd(m,b)=1,
m’=−m-1modb OUTPUT:Z=XYR-1modm 1.A←0(A=(ann-1…a10b) 2.For i from 0to n−1 do th
e Following: 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b 3.B←A−m 4.If B≧0, return (B), els
e return (A) の計算を行う多倍長演算処理装置において、上記計算プ
ロセス中のXを格納するbビット×n段のシフトレジス
タと、上記計算プロセス中のYを格納するbビット×n
段のシフトレジスタと、上記計算プロセス中のmを格納
するbビット×n段のシフトレジスタと、上記計算プロ
セス中のAを格納するbビット×(n+1)段のシフト
レジスタと、上記計算プロセス中のm’を格納するbビ
ットのレジスタと、上記計算プロセス中のuiを格納す
るbビットのレジスタと、bビット×bビットの乗算器
と、3入力(2b+1)ビットの加算器と、を備えるこ
とを特徴とする多倍長演算処理装置にある。
【0021】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置において、
さらに、2入力のbビットの加算器を有することを特徴
とする。
【0022】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記各シフトレジスタの少なくともいずれかのシフ
トレジスタ前段に、セレクタと、1ワード格納用レジス
タを交互に構成した回路構成を有することを特徴とす
る。
【0023】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記乗算器の乗算処理の停止クロックタイミング
に、前記シフトレジスタに対するメモリからのデータセ
ット処理を実行する制御部を有する構成であることを特
徴とする。
【0024】さらに、本発明の第3の側面は、モンゴメ
リ乗算を実行する多倍長演算処理装置であり、下記計算
プロセスからなるモンゴメリ乗算、 INPUT:m=(mn-1…m10b,X=(xn-1
10b,Y=(yn- 1…y10b, 0≦X,Y<m,R=bn,gcd(m,b)=1,
m’=−m-1modb OUTPUT:Z=XYR-1modm 1.A←0(A=(ann-1…a10b) 2.For i from 0to n−1 do th
e Following: 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b 3.B←A−m 4.If B≧0, return (B), els
e return (A) の計算を行う多倍長演算処理装置において、上記計算プ
ロセス中のXを格納するbビット×n段のシフトレジス
タと、上記計算プロセス中のmを格納するbビット×n
段のシフトレジスタと、上記計算プロセス中のAを格納
するbビット×(n+1)段のシフトレジスタと、上記
計算プロセス中のm’を格納するbビットのレジスタ
と、上記計算プロセス中のYおよび、uiを選択的に格
納するbビットのレジスタと、bビット×bビットの乗
算器と、3入力(2b+1)ビットの加算器と、を備え
ることを特徴とする多倍長演算処理装置にある。
【0025】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置において、
さらに、2入力のbビットの加算器を有することを特徴
とする。
【0026】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記各シフトレジスタの少なくともいずれかのシフ
トレジスタ前段に、セレクタと、1ワード格納用レジス
タを交互に構成した回路構成を有することを特徴とす
る。
【0027】さらに、本発明の多倍長演算処理装置の一
実施態様において、前記多倍長演算処理装置は、さら
に、前記乗算器の乗算処理の停止クロックタイミング
に、前記シフトレジスタまたはレジスタに対するメモリ
からのデータセット処理を実行する制御部を有する構成
であることを特徴とする。
【0028】さらに、本発明の第4の側面は、楕円曲線
暗号処理を実行する演算手段を有するICデバイスであ
り、前記演算手段は、多倍長演算処理部を有し、該多倍
長演算処理部は、所定ビット数のデータからなるワード
単位での乗算処理を実行する乗算器と、前記乗算器に対
する入力データを格納するレジスタであり、1レジスタ
に1ワードを格納する構成を有する多段構成の第1のシ
フトレジスタと、前記乗算器における乗算処理後のデー
タを格納するレジスタであり、1レジスタに1ワードを
格納する構成を有する多段構成の第2のシフトレジスタ
と、を有することを特徴とするICデバイスにある。
【0029】さらに、本発明のICデバイスの一実施態
様において、前記ICデバイスは、電磁波入力を行なう
インタフェースと、前記インタフェースからの入力電磁
波に基づいて、ICデバイス内の処理部に対する電力供
給を行なう電源供給手段とを有し、前記演算手段は、前
記電源供給手段からの電源供給により動作する構成を有
することを特徴とする。
【0030】さらに、本発明のICデバイスの一実施態
様において、前記多倍長演算処理部は、さらに、前記乗
算器に対する入力データを格納する1ワード格納用レジ
スタと、前記乗算器の乗算処理の停止クロックタイミン
グに、前記1ワード格納用レジスタに対するメモリから
のデータセット処理を実行する制御部と、を有する構成
であることを特徴とする。
【0031】さらに、本発明のICデバイスの一実施態
様において、前記多倍長演算処理部は、さらに、前記乗
算器の乗算処理の停止クロックタイミングに、前記多段
構成の第1のシフトレジスタに対するメモリからのデー
タセット処理を実行する制御部を有する構成であること
を特徴とする。
【0032】さらに、本発明のICデバイスの一実施態
様において、前記多倍長演算処理部は、さらに、前記乗
算器の計算結果を入力し、該入力に基づく加算処理を実
行する加算器を有することを特徴とする。
【0033】さらに、本発明のICデバイスの一実施態
様において、前記多倍長演算処理部は、さらに、前記第
1のシフトレジスタの前段に、セレクタと、1ワード格
納用レジスタを交互に構成した回路構成を有することを
特徴とする。
【0034】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0035】
【発明の実施の形態】本発明の多倍長演算処理装置およ
びICデバイスの詳細について、以下説明する。
【0036】まず、図1に本発明の多倍長演算処理装置
を内蔵したICカード型のデバイス構成例を示す。図1
に示すICカード型デバイス100は、ユーザが日常的
に携帯可能な携帯型デバイスであり、例えば個人のクレ
ジットカード、交通手段利用可能なパス、キャッシュカ
ード等として利用可能なカードである。それぞれの利用
に応じて、例えばショップ、銀行、駅の改札等に備えら
れたリーダライタと接触または非接触状態での通信を実
行し、暗号処理に基づく認証処理、検証処理等を行な
う。この暗号処理の際に、後段で説明する多倍長演算を
実行する。
【0037】ICカード型デバイス100において、C
PU(Central processing Unit)101は、ICカード
型デバイス100の実行する各種アプリケーションプロ
グラム、認証、検証処理等の処理プログラムを実行する
とともに、各処理部におけるデータ転送制御を実行する
プロセッサである。ROM(Read-Only-Memory)102
は、CPU101が実行するプログラム、あるいは演算
パラメータとしての固定データを格納する。RAM(Ra
ndom Access Memory)103は、CPU101の処理に
おいて実行されるプログラム、およびプログラム処理に
おいて適宜変化するパラメータの格納エリア、ワーク領
域として使用される。
【0038】EEPROM104は、認証、検証処理
等、各種暗号処理の際に適用する各種鍵、例えば公開鍵
方式の暗号処理実行時の公開鍵、秘密鍵のペアおよび認
証局の公開鍵証明書等を格納し、共通鍵方式の暗号処理
実行時の共通鍵、あるいは識別子としてのID等を格納
する。
【0039】DES暗号処理部106は、共通鍵暗号化
方式の暗号処理としてのDES(データ暗号標準:Deta
encryption standard)アルゴリズムを実行する。共通
鍵暗号化方式はデータの暗号化処理に用いる暗号化鍵と
データの復号化に用いる復号化鍵を共通のものとして、
正規のユーザにこれら暗号化処理、復号化に用いる共通
鍵を付与して、鍵を持たない不正ユーザによるデータア
クセスを排除するものである。共通鍵暗号方式の代表的
な暗号化方式がDESである。
【0040】また、ALUコントローラ108、演算器
(ALU)109、ALURAM110からなる多倍長
演算処理部107は、公開鍵暗号処理方式としての楕円
曲線暗号方式(ECC)アルゴリズムを実行する。公開
鍵暗号化方式は、暗号化するときに使用する暗号化鍵に
よる処理と、復号するときに使用する復号化鍵の処理と
を異なるアルゴリズムとした方式である。公開鍵暗号化
方式は、不特定のユーザが使用可能な公開鍵を使用する
方法であり、特定個人に対する暗号化文書を、その特定
個人が発行した公開鍵を用いて暗号化処理を行なう。公
開鍵によって暗号化された文書は、その暗号化処理に使
用された公開鍵に対応する秘密鍵によってのみ復号処理
が可能となる。秘密鍵は、公開鍵を発行した個人のみが
所有するので、その公開鍵によって暗号化された文書は
秘密鍵を持つ個人のみが復号することができる。公開鍵
暗号化方式の代表的なものには楕円曲線暗号方式、RS
A(Rivest-Shamir-Adleman)暗号等がある。ここで
は、後述する多倍長演算による楕円曲線暗号処理を実行
する。
【0041】ICカード型デバイス100は、接触方
式、あるいは非接触方式によって入出力I/F111を
介して、外部のリーダライタとの間でデータ送受信を実
行する。また、入出力I/F111は、コイルアンテナ
を有し、コイルアンテナにより外部の電磁波を受信し
て、電源供給部512に出力し、電源供給部112は、
電磁波に基づく変換電力をICカード型デバイスの各処
理部に供給する。CPU101、多倍長演算処理部10
7、その他の処理部は、電源供給部112から供給され
る電力によって動作する。
【0042】多倍長演算処理部107は、楕円曲線暗号
処理としてのモンゴメリ乗算および加算を実行する。
【0043】モンゴメリ乗算は、下記の入力(INPU
T)に基づいて、出力(OUTPUT)を得る演算処理
である。
【0044】
【数1】 INPUT:m=(mn-1…m10b,X=(xn-1…x10b,Y=(yn- 1 …y10b, 0≦X,Y<m,R=bn,gcd(m,b)=1,m’=−m-1modb OUTPUT:Z=XYR-1modm 1.A←0(A=(ann-1…a10b) 2.For i from 0to n−1 do the Followin g: 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b 3.B←A−m 4.If B≧0, return (B), else return ( A) ……(数式1)
【0045】上記(数式1)に示す入力、m=(mn-1
…m10b,X=(xn-1…x10b,Y=(yn-1
10b,において、m,X,Yは、、それぞれ1ワ
ード:32ビットとし、0〜n−1のnワードからな
り、0≦X,Y<m,R=bn,gcd(m,b)=
1,m’=−m-1modbの条件を満たす。なお、1ワ
ードは、1クロックサイクルで実行する演算データであ
る。
【0046】上記(数式1)に示す出力としてのZ=X
YR-1modmを得るための演算ステップが、 1.A←0(A=(ann-1…a10b) 2.For i from 0to n−1 do th
e Following: 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b 3.B←A−m 4.If B≧0, return (B), els
e return (A) として示され、この演算処理を実行する場合、の演算処
理ステップを簡潔にまとめると下記のようになる。
【0047】ステップ1.メモリよりX,Y,mをそれ
ぞれレジスタ(X4…X0),(Y4…Y0),(M4
0)に格納する。 ステップ2.モンゴメリ乗算回路においてAを計算す
る。 ステップ3.加算回路を用いてBを計算する。 ステップ4.AまたはBをメモリに戻す。
【0048】この場合、連続して同じmを剰余とするモ
ンゴメリ乗算を行う場合には、ステップ1におけるmを
(M4…M0)に格納する操作は初期のモンゴメリ乗算に
おいてのみ行えばよい。ステップ1、3、4においては
乗算器の入力を0にすることにより乗算器の動作を止め
る。ステップ2においてはメモリのアクセスを行わない
ため、乗算器とメモリとの同時動作を回避することがで
きる。また、シフトレジスタを用いることにより乗算器
の入力を制御するセレクタの入力数を減らすことが可能
となる。
【0049】上述のステップ2.すなわち、モンゴメリ
乗算回路におけるAの計算処理、具体的には、 2.For i from 0to n−1 do th
e Following: 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b を実行するために適用する本発明のモンゴメリ乗算回路
の詳細構成図を図2に示す。モンゴメリ乗算回路は、例
えば図1に示す演算器109の内部に構成されるもので
ある。
【0050】図2に示す構成は、前記数式1に示す計算
プロセスを実行する構成として、上記計算プロセス中の
Xを格納するbビット×n段のシフトレジスタと、上記
計算プロセス中のYを格納するbビット×n段のシフト
レジスタと、上記計算プロセス中のmを格納するbビッ
ト×n段のシフトレジスタと、上記計算プロセス中のA
を格納するbビット×(n+1)段のシフトレジスタ
と、上記計算プロセス中のm’を格納するbビットのレ
ジスタと、上記計算プロセス中のuiを格納するbビッ
トのレジスタと、bビット×bビットの乗算器と、3入
力(2b+1)ビットの加算器と、を備えた構成であ
る。
【0051】図2に示す構成において、シフトレジスタ
201(M0〜M4)は、m=(m n-1…m10bの5
ワードを格納する32ビット×5ブロックからなるシフ
トレジスタであり、メモリから順次1ワードづつ入力さ
れ、M4からM0へ順次シフトする。シフトレジスタ2
02(X0〜X4)は、X=(xn-1…x10b,の5
ワードを格納する32ビット×5ブロックからなるシフ
トレジスタであり、メモリから順次1ワードづつ入力さ
れ、X4からX0へ順次シフトする。メモリは、例えば
図1に示すALURAM110である。シフトレジスタ
203(Y0〜Y4)は、Y=(yn-1…y10b,の
5ワードを格納する32ビット×5ブロックからなるシ
フトレジスタであり、メモリから順次1ワードづつ入力
され、Y4からY0へ順次シフトする。
【0052】セレクタ231はメモリからの入力ワー
ド、またはレジスタM0の格納ワードを選択してレジス
タM4に入力する。セレクタ232はメモリからの入力
ワード、またはレジスタX0の格納ワードを選択してレ
ジスタX4に入力する。セレクタ233はメモリからの
入力ワード、またはレジスタY0の格納ワードを選択し
てレジスタY4に入力する。
【0053】レジスタ214は、上記(数式1)に示す
入力としての、m’=−m-1modbの1ワード格納レ
ジスタであり、セレクタ236は、レジスタM0,X
0,M’、0のいずれかを32ビット乗算器251に選
択出力する。
【0054】レジスタU213は、上記(数式1)に示
す2.2.ui=a0m’modbの計算結果値の1ワー
ド格納レジスタである。
【0055】シフトレジスタ204(A0〜A4)は、
上記(数式1)に示す 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b における、2.1,2.3の処理ステップで生成するワ
ードAを5ワード格納するシフトレジスタである。
【0056】セレクタ235は、レジスタY0,U,A
0、0のいずれかを32ビット乗算器251に選択出力
する。乗算器251は、セレクタ235,236からの
入力値の乗算処理を実行する。
【0057】乗算器251の乗算結果は、3入力65ビ
ット加算器252に出力される。3入力65ビット加算
器252は、乗算器251の乗算結果、セレクタ238
が出力するシフトレジスタA0、または0のいずれかの
値、およびセレクタ237が出力するレジスタT21
2、または0のいずれかの値に基づく加算処理を実行す
る。レジスタT212は、3入力65ビット加算器25
2の中間計算結果値が格納される。レジスタA’211
は、3入力65ビット加算器252の計算結果値Aが格
納される。セレクタ234は、レジスタA0、またはレ
ジスタA’211、または3入力65ビット加算器25
2の出力値のいずれかをレジスタA4に格納する。
【0058】図2に示すモンゴメリ乗算回路において、
入力ワードまたは計算結果ワード、あるいは中間値を格
納するレジスタ構成をまとめた図を図3に示す。図3に
示すように、前述の(数式1)に示す入力、m=(m
n-1…m10b,X=(xn-1…x10b,Y=(y
n-1…y10b,、および計算結果としてのAを格納す
る5ワード分のシフトレジスタと、入力あるいは計算結
果格納レジスタとしてのA’、M’、U、Tの各1ワー
ドレジスタを持つ構成となる。
【0059】先の数式1に示した乗算処理を実行するた
めには、Y=(yn-1…y10b,を削減可能である。
Y=(yn-1…y10b,を格納するレジスタと、Uを
格納するレジスタを兼用し、レジスタを削減したモンゴ
メリ乗算回路構成を図4に示す。
【0060】この図4に示すモンゴメリ乗算回路構成
は、図2に示すY=(yn-1…y10b,を格納するレ
ジスタ203と、Uを格納するレジスタ213を1つの
1ワード格納レジスタ、すなわち図4に示すレジスタ3
とした点である。
【0061】この図4に示すモンゴメリ乗算回路構成
は、前記数式1に示す計算プロセスを実行する構成とし
て、数式1の計算プロセス中のXを格納するbビット×
n段のシフトレジスタと、数式1の計算プロセス中のm
を格納するbビット×n段のシフトレジスタと、数式1
の計算プロセス中のAを格納するbビット×(n+1)
段のシフトレジスタと、数式1の計算プロセス中のm’
を格納するbビットのレジスタと、数式1の計算プロセ
ス中のYおよび、uiを選択的に格納するbビットのレ
ジスタと、bビット×bビットの乗算器と、3入力(2
b+1)ビットの加算器と、を備えた構成である。
【0062】図4に示すモンゴメリ乗算回路において、
入力ワードまたは計算結果ワード、あるいは中間値を格
納するレジスタ構成をまとめた図を図5に示す。図5に
示すように、前述の(数式1)に示す入力、m=(m
n-1…m10b,X=(xn-1…x10b,およびA計
算結果としてのAを格納する5ワード分のシフトレジス
タと、入力あるいは計算結果格納レジスタとしての
A’、M’、U、Tの各1ワードレジスタを持つ構成と
なる。ここで、レジスタUは、Y=(yn-1…y
1 0b,を格納するレジスタとしても利用される。
【0063】図4に示すモンゴメリ乗算回路において実
行する計算処理手順について図6、図7を参照して説明
する。図6に示す計算処理は、上記(数式1)に示す 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b の各計算処理を示しており、i=2の時点における計算
処理である。図6の、1clk(クロック)〜5clk
が上記ステップ2.1、6clkが上記ステップ2.
2、7clk〜12clkが上記ステップ2.3の各計
算処理に対応する。図7は、各クロックタイミングにお
ける各レジスタ0,1,3,9〜15および信号2,4
〜8の値の変遷を示したタイミングチャート図である。
【0064】図6に示す1clkの処理は、32ビット
乗算器16において、x0×y2の乗算が実行され、ま
た、3入力65ビット加算器17において、[0],
[a0],[x0×y2]の加算処理が実行されている
ことを示す。図7においての対応について説明する。1
clk時点では、図7左端(1clk)に示すレジスタ
値、信号値を持つ。1clk目の処理として、32ビッ
ト乗算器16において、信号2:x0と、信号4:y2
に基づいて、x0×y2の乗算を実行し、信号5:x0
×y2を出力し、また、3入力65ビット加算器17に
は、信号6:x0×y2、信号7:a0、信号8:0の
各値が入力されて、[0],[a0],[x0×y2]
の加算処理が実行され、その結果として、2clkの時
点で、レジスタ15に値[t0]が格納される。図7
は、このように各クロックサイクルにおけるレジスタ、
信号値を示している。
【0065】図6の2clkの処理は、32ビット乗算
器16において、信号2:x1と、信号4:y2に基づ
いて、x1×y2の乗算を実行し、信号5:x1×y2
を出力し、また、3入力65ビット加算器17には、信
号6:x1×y2、信号7:a1、信号8:t0の各値
が入力されて、[t0],[a1],[x0×y2]の
加算処理が実行され、その結果として、3clkの時点
で、レジスタ15に値[t1]が格納されることを示
す。以下、同様の計算処理が実行され、5clkの時点
で、前述の数式中の2.1.A←A+yiXの計算結果
として、a0〜a5がそれぞれレジスタ9〜14に格納
される。
【0066】なお、ここで、図6,図7に示すクロック
1における各レジスタに格納されたa0〜a4と、クロ
ック5の時点で各レジスタに格納されているa0〜a4
は異なるものである。
【0067】次に6clkは、上記式の2.2.ui
0m’modbの計算処理であり、32ビット乗算器
16に入力されるレジスタM’の格納値としてのm’
(信号2)と、レジスタ9からの入力値a0(信号4)
との乗算:m’×a0が実行され、3入力65ビット加
算器17では、m’×a0(信号6)、0(信号7)、
0(信号8)の加算が実行される。その結果[u2]が
レジスタ3に格納される。
【0068】次の7clk〜12clkは、上記式の
2.3.A←(A+uim)/bの計算処理であり、7
clkの処理は、32ビット乗算器16において、m0
×u2の乗算が実行され、また、3入力65ビット加算
器17において、[0],[a0],[m0×u]の加
算処理が実行され、結果値[t0]を出力し、レジスタ
15に格納する。以下、12clkまで、同様の計算処
理を実行して、計算結果としてのa0〜a4をレジスタ
9〜13に格納する。なお、12clkにおいては、3
2ビット乗算器16の出力は、3入力65ビット加算器
17に入力されず、値[0]が入力される。計算結果と
してのa0〜a4は、1clk,5clkの値としての
a0〜a4と異なる値であり、 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b の計算結果として取得される値である。
【0069】上述したように、上記処理において、12
clkでは、32ビット乗算器16の出力は、3入力6
5ビット加算器17に入力する必要がなく、32ビット
乗算器16の動作を一時停止することが可能となる。こ
の12clk目の32ビット乗算器16の停止期間にお
いて、メモリにアクセスし、次の計算に用いるyiをレ
ジスタU3に格納する処理を実行する。
【0070】これらの制御処理は、例えば図1の構成に
おいて、ALUコントローラ108が実行する。すなわ
ち、図2に示す乗算回路構成は、演算器(ALU)10
9内部に構成され、メモリ、すなわちALURAM11
0から演算器(ALU)109内部のレジスタに対する
データセット処理タイミングが、32ビット乗算器16
の停止クロックタイミングとなるように、制御手段であ
るALUコントローラ108が制御する。
【0071】上述した演算処理シーケンスを実行するこ
とで、乗算器の処理と、メモリアクセス処理とを並列動
作させることなく、シーケンシャルに独立して動作させ
ることが可能となり、乗算器の処理と、メモリアクセス
処理との並列動作に起因する電力消費の上昇を防止する
ことが可能となる。
【0072】32ビット乗算器16の動作時の消費電力
と、メモリアクセス時の処理、具体的には、次の計算に
用いるyiをレジスタU3に格納する処理を実行するた
めの、値[yi]を格納したメモリとしてのRAMから
のデータ読み出し処理時の消費電力の時間経過との対応
は図8に示すような関係にあり、同一クロックタイミン
グでの処理が実行されると、消費電力のピークが重な
り、一時的な電力消費が急激に増加することとなる。こ
のような現象は、例えば先に図1を参照して説明したよ
うな外部給電型のICカード等において、十分な電力供
給が得られない場合に処理エラーを発生させる原因とな
る。
【0073】本発明の構成では、32ビット乗算器16
の動作と、メモリアクセス処理とが並列に動作すること
がなく、図8に示すように、各処理における消費電力の
ピークが重なることがない。従って、例えば外部給電型
のICカード等のように十分な電力供給が得られない構
成における処理エラーの発生を低減させることが可能と
なる。
【0074】なお、図4に示すY=(yn-1…y
10b,を格納するレジスタと、Uを格納するレジス
タを1つの1ワード格納レジスタとして共通化した構成
に限らず、図2に示すY=(yn-1…y10b,を格納
するレジスタを多段構成のシフトレジスタとした構成に
おいても、m=(mn-1…m10b,X=(xn-1…x1
0b,Y=(yn-1…y10b,、の各シフトレジス
タに対するメモリからのデータセット処理を、乗算器の
停止時に実行し、メモリアクセス終了後に乗算器処理を
開始する処理シーケンス制御を制御部において実行する
ことで消費電力の上昇を抑制できる。
【0075】次に、加算処理回路構成について説明す
る。まず、図9を参照して、先に図2を参照して説明し
たモンゴメリ乗算回路に対応する加算回路について説明
する。
【0076】図9に示す加算回路は、先に図2を参照し
て説明したモンゴメリ乗算回路と同様のレジスタ構成を
持つものであり、前述の(数式1)に示す入力、m=
(mn- 1…m10b,X=(xn-1…x10b,Y=
(yn-1…y10b,、および計算結果としてのAを格
納する各々5ワード分、すなわち32ビット×5ブロッ
クのシフトレジスタを持つ。
【0077】シフトレジスタ301(M0〜M4)は、
m=(mn-1…m10bの5ワードを格納する32ビッ
ト×5ブロックからなるシフトレジスタであり、メモリ
から順次1ワードづつ入力され、M4からM0へ順次シ
フトする。シフトレジスタ302(Y0〜Y4)は、Y
=(yn-1…y10b,の5ワードを格納する32ビッ
ト×5ブロックからなるシフトレジスタであり、メモリ
から順次1ワードづつ入力され、Y4からY0へ順次シ
フトする。シフトレジスタ303(X0〜X4)は、X
=(xn-1…x10b,の5ワードを格納する32ビッ
ト×5ブロックからなるシフトレジスタであり、メモリ
から順次1ワードづつ入力され、X4からX0へ順次シ
フトする。メモリは、例えば図1に示すALURAM1
10である。
【0078】セレクタ331はメモリからの入力ワー
ド、またはレジスタM0の格納ワードを選択してレジス
タM4に入力する。セレクタ332はメモリからの入力
ワード、またはレジスタY0の格納ワードを選択してレ
ジスタY4に入力する。セレクタ333はメモリからの
入力ワード、またはレジスタX0の格納ワード、または
32ビット加算器351の加算結果を選択してレジスタ
X4に入力する。
【0079】セレクタ336は、レジスタM0,Y0,
またはその反転値のいずれかを32ビット加算器351
に選択出力する。
【0080】シフトレジスタ204(A0〜A4)は、
上記の乗算処理で生成した値、すなわち、(数式1)に
示す 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b における、2.1,2.3の処理ステップで生成するワ
ードAを5ワード格納し、さらに、本加算回路での計算
結果を格納するシフトレジスタである。
【0081】セレクタ335は、レジスタX0,A0の
いずれかを32ビット加算器351に選択出力する。3
2ビット加算器351は、セレクタ335,336,3
37からの入力値の加算処理を実行する。セレクタ33
7は、32ビット加算器351の加算結果を格納するレ
ジスタ311からの出力、または0,1のいずれかを3
2ビット加算器351に選択出力する。
【0082】32ビット加算器351の加算結果は、セ
レクタ333,334に供給される。セレクタ334
は、レジスタA0の格納ワード、または32ビット加算
器351の加算結果を選択してレジスタA4に入力す
る。
【0083】なお、図9に示す32ビット加算器351
は、先に図2を参照して説明した乗算回路中の3入力6
5ビット加算器252を適用可能であり、加算回路とし
て独立の加算器を設けることなく、乗算回路中の加算器
を使用可能である。
【0084】前述したように、図9に示す加算回路は、
先に図2を参照して説明した乗算回路と同様のm=(m
n-1…m10b,X=(xn-1…x10b,Y=(y
n-1…y10b,、およびAを格納する各々5ワード
分、すなわち32ビット×5ブロックのシフトレジスタ
を持つ。
【0085】先に図4を参照して説明したY=(yn-1
…y10b,を格納するレジスタと、Uを格納するレ
ジスタを兼用し、レジスタを削減したモンゴメリ乗算回
路と同様、加算回路においても、Y=(yn-1…y
10b,を格納するレジスタを削減し、32ビットワ
ードの1ワード格納レジスタを使用し、レジスタを削減
した構成が可能である。本構成による加算回路を図10
に示す。
【0086】この図10に示す加算回路構成と図9の構
成との差異は、図9に示すY=(y n-1…y10b,を
格納するレジスタ302を1つのレジスタ、すなわち図
10に示すレジスタU830とした点である。
【0087】図10に示す加算回路において実行する計
算処理手順について図11、図12を参照して説明す
る。図11に示す計算処理は、上記(数式1)に示す最
後のステップの減算処理、すなわち、3.B←A−mの
計算処理を示している。
【0088】上記計算において、セレクタ850はA
を、セレクタ851はFを選択する。このとき、レジス
タ800−804を巡回シフトし、レジスタ820−8
24を巡回シフトすることによりをB←A−m計算す
る。なお、計算結果は、B=(B n-1…B10bとな
る。なお、計算結果としてのBはレジスタX810〜8
14に格納することによりレジスタを削減している。
【0089】図11に示す1clkの処理は、図10の
32ビット加算器870において、[1],[a0],
[m0の反転値]の加算処理が実行されていることを示
す。図に示すアンダーラインは、+−反転値であること
を示している。図12における対応について説明する。
1clk時点では、図12左端(1clk)に示すレジ
スタ値、信号値を持つ。1clk目の処理として、レジ
スタ800(M0)に格納された[m0]の反転値がセ
レクタ851を介して信号841:−m0として32ビ
ット加算器870に入力され、レジスタ820(A0)
に格納された[a0]がセレクタ850を介して信号8
40:a0として32ビット加算器870に入力され、
さらにセレクタ852からの選択値:1が32ビット加
算器870に入力されて、32ビット加算器870にお
いて、[1],[a0],[−m0]の加算処理が実行
される。その結果として、2clkの時点で、レジスタ
814(X4)に値[b0]が格納される。図12は、
このように各クロックサイクルにおけるレジスタ、信号
値を示している。
【0090】図11の2clkの処理は、32ビット加
算器870において、レジスタ800(M0)に格納さ
れた[m1]の反転値がセレクタ851を介して信号8
41:−m1として32ビット加算器870に入力さ
れ、レジスタ820(A0)に格納された[a1]がセ
レクタ850を介して信号840:a1として32ビッ
ト加算器870に入力されて、32ビット加算器870
において、[a1],[−m1]の加算処理が実行され
る。その結果として、3clkの時点で、レジスタ81
4(X4)に値[b1]が格納される。以下、同様の計
算処理が実行され、6clkの時点で、前述した数式1
中の最終計算処理ステップとしての、 3.B←A−m の計算結果が算出される。
【0091】なお、図10に示す32ビット加算器87
0は、先に図4を参照して説明した乗算回路中の3入力
65ビット加算器17を適用可能であり、加算回路とし
て独立の加算器を設けることなく、乗算回路中の加算器
を使用可能である。
【0092】次に、図9または図10の加算回路を適用
して実行する剰余加算処理について、図13、図14を
参照して説明する。剰余加算は次のように計算できる。
【0093】
【数2】 INPUT:m=(mn-1…m10b,X=(xn-1…x10b,Y=(yn- 1 …y10b,0≦X,Y<m OUTPUT:Z=X+Ymodm 1.A←X+Y 2.B←A−m 3.If B≧0, return (B), else return ( A) ……(数式2)
【0094】上記数式2で示す剰余加算は、図9または
図10の加算回路を適用してモンゴメリ乗算時同様、以
下のような処理ステップの実行により計算される。 1.メモリよりX,Y,mをそれぞれレジスタ(X4
0),(Y4…Y0),(M4…M0)に格納する。 2.加算回路においてAおよびBを計算する。 3.AまたはBをメモリに戻す。
【0095】図13は図9または図10の加算回路を用
いた剰余加算の計算法である。このとき、各レジスタお
よび信号は図14のタイミングチャートで示された値を
とる。1−5clk目ではセレクタ850(図10参
照)はBをセレクタ851はCを選択する。このとき、
レジスタ830にyiの値をメモリから読み出し、レジ
スタ810−814を巡回シフトすることによりA←X
+Yを計算する。また、6−10clk目ではセレクタ
850はAをセレクタ851はF(レジスタM0の反転
入力)を選択する。このとき、レジスタ800−804
を巡回シフトし、レジスタ820−824を巡回シフト
することによりB←A−mを計算する。なお、Aまたは
Bのどちらをメモリに戻すかは5clk目および10c
lk目の加算器のキャリーアウト(Carry Ou
t)が左右する。
【0096】加算回路において実行する計算処理手順に
ついて図13、図14を参照して説明する。図13に示
す計算処理は、上記(数式2)に示す 1.A←X+Y 2.B←A−m の各計算処理を示しており、i=0の時点における計算
処理である。図13の、1clk(クロック)〜5cl
kが上記ステップ1、6clk〜11clkが上記ステ
ップ2の各計算処理に対応する。図14は、各クロック
タイミングにおける各レジスタ800〜831および信
号840〜842の値の変遷を示したタイミングチャー
ト図である。
【0097】図13に示す1clkの処理は、32ビッ
ト加算器870(図10参照)において、[0],[x
0],[y0]の加算処理が実行されていることを示
す。図14における対応について説明する。1clk時
点では、図14左端(1clk)に示すレジスタ値、信
号値を持つ。1clk目の処理として、レジスタ810
(X0)に格納された[x0]がセレクタ850を介し
て信号840:x0として32ビット加算器870に入
力され、レジスタ830(U)に格納された[y0]が
セレクタ851を介して信号841:y0として32ビ
ット加算器870に入力され、さらにセレクタ852か
らの選択値:0が32ビット加算器870に入力され
て、32ビット加算器870において、[0],[x
0],[y0]の加算処理が実行される。その結果とし
て、2clkの時点で、レジスタ824(A4)に値
[a0]が格納される。図14は、このように各クロッ
クサイクルにおけるレジスタ、信号値を示している。
【0098】図13の2clkの処理は、32ビット加
算器870において、レジスタ810(X0)に格納さ
れた[x1]がセレクタ850を介して信号840:x
1として32ビット加算器870に入力され、レジスタ
830(U)に格納された[y1]がセレクタ851を
介して信号841:y1として32ビット加算器870
に入力され、32ビット加算器870において、[x
1],[y1]の加算処理が実行される。その結果とし
て、3clkの時点で、レジスタ824(A4)に値
[a1]が格納される。以下、同様の計算処理が実行さ
れ、5clkの時点で、前述の数式2中の[1.A←X
+Y]の計算結果として、a0〜a4がそれぞれレジス
タ820〜824に格納される。
【0099】次に6clk〜11clkは、上記式2中
の[2.B←A−m]の計算処理であり、6clkの処
理は、図10の32ビット加算器870において、
[1],[a0],[m0の反転値]の加算処理が実行
されていることを示す。図に示すアンダーラインは、+
−反転値であることを示している。図14における対応
について説明する。6clk時点の処理は、レジスタ8
00(M0)に格納された[m0]の反転値がセレクタ
851を介して信号841:−m0として32ビット加
算器870に入力され、レジスタ820(A0)に格納
された[a0]がセレクタ850を介して信号840:
a0として32ビット加算器870に入力され、さらに
セレクタ852からの選択値:1が32ビット加算器8
70に入力されて、32ビット加算器870において、
[1],[a0],[−m0]の加算処理が実行され
る。その結果として、7clkの時点で、レジスタ81
4(X4)に値[b0]が格納される。
【0100】図13の7clkの処理は、32ビット加
算器870において、レジスタ800(M0)に格納さ
れた[m1]の反転値がセレクタ851を介して信号8
41:−m1として32ビット加算器870に入力さ
れ、レジスタ820(A0)に格納された[a1]がセ
レクタ850を介して信号840:a1として32ビッ
ト加算器870に入力されて、32ビット加算器870
において、[a1],[−m1]の加算処理が実行され
る。その結果として、8clkの時点で、レジスタ81
4(X4)に値[b1]が格納される。以下、同様の計
算処理が実行され、11clkの時点で、前述した数式
2中の計算処理ステップ[2.B←A−m]の計算結果
が算出される。
【0101】次に、図9または図10の加算回路を適用
して実行する剰余減算処理について、図15、図16を
参照して説明する。剰余減算は次のように計算できる。
【0102】
【数3】 INPUT:m=(mn-1…m10b,X=(xn-1…x10b,Y=(yn- 1 …y10b,0≦X,Y<m OUTPUT:Z=X−Ymodm 1.A←X−Y 2.B←A+m 3.If A≧0, return (A), else return ( B) ……(数式3)
【0103】上記数式3で示す剰余減算は、図9または
図10の加算回路を適用してモンゴメリ乗算時同様、以
下のような処理ステップの実行により計算される。 1.メモリよりX,Y,mをそれぞれレジスタ(X4
0),(Y4…Y0),(M4…M0)に格納する。 2.加算回路においてAおよびBを計算する。 3.AまたはBをメモリに戻す。
【0104】図15は図9または図10の加算回路を用
いた剰余減算の計算法である。このとき、各レジスタお
よび信号は図16のタイミングチャートで示された値を
とる。1−5clk目ではセレクタ850(図10参
照)はBをセレクタ851はD(レジスタUの反転入
力)を選択する。このとき、レジスタ830にyiの値
をメモリから読み出し、レジスタ810−814を巡回
シフトすることによりA←X−Yを計算する。また、6
−10clk目ではセレクタ850はAをセレクタ85
1はEを選択する。このとき、レジスタ800−804
を巡回シフトし、レジスタ820−824を巡回シフト
することによりB←A+mを計算する。なお、Aまたは
Bのどちらをメモリに戻すかは5clk目の加算器のキ
ャリーアウト(Carry Out)が左右する。
【0105】加算回路において実行する計算処理手順に
ついて図15、図16を参照して説明する。図15に示
す計算処理は、上記(数式3)に示す 1.A←X−Y 2.B←A+m の各計算処理を示しており、i=0の時点における計算
処理である。図15の、1clk(クロック)〜5cl
kが上記ステップ1、6clk〜11clkが上記ステ
ップ2の各計算処理に対応する。図16は、各クロック
タイミングにおける各レジスタ800〜831および信
号840〜842の値の変遷を示したタイミングチャー
ト図である。
【0106】図15に示す1clkの処理は、32ビッ
ト加算器870(図10参照)において、[1],[x
0],[−y0]の加算処理が実行されていることを示
す。図に示すアンダーラインは、+−反転値であること
を示している。図16における対応について説明する。
1clk時点では、図16左端(1clk)に示すレジ
スタ値、信号値を持つ。1clk目の処理として、レジ
スタ810(X0)に格納された[x0]がセレクタ8
50を介して信号840:x0として32ビット加算器
870に入力され、レジスタ830(U)に格納された
[y0]が反転の後、セレクタ851を介して信号84
1:−y0として32ビット加算器870に入力され、
さらにセレクタ852からの選択値:1が32ビット加
算器870に入力されて、32ビット加算器870にお
いて、[1],[x0],[−y0]の加算処理が実行
される。その結果として、2clkの時点で、レジスタ
824(A4)に値[a0]が格納される。図16は、
このように各クロックサイクルにおけるレジスタ、信号
値を示している。
【0107】図15の2clkの処理は、32ビット加
算器870において、レジスタ810(X0)に格納さ
れた[x1]がセレクタ850を介して信号840:x
1として32ビット加算器870に入力され、レジスタ
830(U)に格納された[y1]が反転の後、セレク
タ851を介して信号841:−y1として32ビット
加算器870に入力され、32ビット加算器870にお
いて、[x1],[−y1]の加算処理が実行される。
その結果として、3clkの時点で、レジスタ824
(A4)に値[a1]が格納される。以下、同様の計算
処理が実行され、6clkの時点で、前述の数式2中の
[1.A←X+Y]の計算結果として、a0〜a4がそ
れぞれレジスタ820〜824に格納される。
【0108】次に6clk〜11clkは、上記式3中
の[2.B←A+m]の計算処理であり、6clkの処
理は、図10の32ビット加算器870において、
[1],[a0],[m0]の加算処理が実行されてい
ることを示す。図16における対応について説明する。
6clk時点の処理は、レジスタ800(M0)に格納
された[m0]がセレクタ851を介して信号841:
m0として32ビット加算器870に入力され、レジス
タ820(A0)に格納された[a0]がセレクタ85
0を介して信号840:a0として32ビット加算器8
70に入力され、さらにセレクタ852からの選択値:
1が32ビット加算器870に入力されて、32ビット
加算器870において、[1],[a0],[m0]の
加算処理が実行される。その結果として、7clkの時
点で、レジスタ814(X4)に値[b0]が格納され
る。
【0109】図15の7clkの処理は、32ビット加
算器870において、レジスタ800(M0)に格納さ
れた[m1]がセレクタ851を介して信号841:m
1として32ビット加算器870に入力され、レジスタ
820(A0)に格納された[a1]がセレクタ850
を介して信号840:a1として32ビット加算器87
0に入力されて、32ビット加算器870において、
[a1],[m1]の加算処理が実行される。その結果
として、8clkの時点で、レジスタ814(X4)に
値[b1]が格納される。以下、同様の計算処理が実行
され、11clkの時点で、前述した数式2中の計算処
理ステップ[2.B←A+m]の計算結果が算出され
る。
【0110】次に、マルチブロック対応のレジスタを用
いることによりブロック数が異なる鍵長に対応した楕円
曲線暗号回路構成について、図17を参照して説明す
る。
【0111】モンゴメリ乗算においてはmの最上位ブロ
ックであるmn-1は非ゼロではなくてはいけない。つま
り、常にmのブロック長にあわせた演算を行わなければ
ならない。そこで上記の手法を使い、さらにブロック長
の異なるモンゴメリ乗算を可能とするのが図17に示し
たマルチブロック対応のレジスタである。図17に示す
構成の場合には、5から7ブロックつまり129bit
から224bitまでのモンゴメリ乗算が可能となる。
【0112】図17に示す回路は、m=(mn-1…m1
0b,X=(xn-1…x10b、およびAを格納する各
々5ワード分、すなわち32ビット×5ブロックのシフ
トレジスタ501,502,503を持ち、さらにワー
ドMのレジスタM4の前段にセレクタ521を介してレ
ジスタ511(M5)、さらに、その前段にセレクタ5
22を介してレジスタ512(M6)さらにその前段に
セレクタ523を有し、外部あるいはメモリからの入力
くたはM0からの循環値を選択出力する構成となってい
る。ワードX、AについてもMと同様の構成を持つ。
【0113】5ブロック(129bitから160bi
t)のモンゴメリ乗算を行う場合には、セレクタ521
はDを選択することにより、32bit×5段のシフト
レジスタが構成される。また、6ブロック(161bi
tから192bit)のモンゴメリ乗算を行う場合に
は、セレクタ522はBを選択し、セレクタ521はC
を選択することにより、32bit×6段のシフトレジ
スタが構成される。さらに、7ブロック(193bit
から224bit)のモンゴメリ乗算を行う場合には、
セレクタ522はAを、セレクタ521はCを選択する
ことにより、32bit×7段のシフトレジスタが構成
される。レジスタX、レジスタAについても同様の制御
が行われる。
【0114】図17に示す構成は、各レジスタを5〜7
ブロックの可変構成として示しているが、さらに、前段
にレジスタとセレクタを付加することで、任意数、例え
ば8ブロック以上の計算に適用可能な構成とすることが
可能である。
【0115】以上、特定の実施例を参照しながら、本発
明について詳解してきた。しかしながら、本発明の要旨
を逸脱しない範囲で当業者が該実施例の修正や代用を成
し得ることは自明である。すなわち、例示という形態で
本発明を開示してきたのであり、限定的に解釈されるべ
きではない。本発明の要旨を判断するためには、冒頭に
記載した特許請求の範囲の欄を参酌すべきである。
【0116】
【発明の効果】以上、説明したように、本発明の多倍長
演算処理装置およびICデバイスによれば、ブロック長
とブロック数に応じたシフトレジスタとして、例えば3
2ビット×5ブロックのシフトレジスタを構成し、各ブ
ロックのデータをシフトレジスタにおいてシフトし、そ
れぞれ乗算器、加算器に入力して、多倍長演算処理を実
行し、さらに、メモリからのレジスタに対するデータ格
納処理と、乗算器における乗算処理プロセスとを並列に
動作させることなく、それぞれの処理プロセスをシーケ
ンシャルなタイミングで実行して多倍長演算処理を行な
う構成としたので、モンゴメリ乗算処理、剰余加算処理
等の高速実行、低消費電力化が可能となる。
【0117】さらに、本発明の多倍長演算処理装置およ
びICデバイスによれば、メモリと乗算器を同時動作さ
せることなく、モンゴメリ乗算等の多倍長演算を実行可
能となるので、低消費電力の演算回路が実現され、例え
ば非接触で外部給電を受けて動作するICカード等、電
力消費が制限された環境での演算が要求されるデバイス
において処理エラー等を発生させることなく多倍長演算
を実行し、楕円曲線暗号処理を実行するICデバイスが
実現される。
【0118】さらに、本発明のマルチブロック対応のレ
ジスタを用いた多倍長演算処理装置およびICデバイス
によれば、ブロック数が異なる鍵長に対応した楕円曲線
暗号回路が実現される。
【図面の簡単な説明】
【図1】本発明のICカード型デバイス構成例を示すブ
ロック図である。
【図2】本発明の多倍長演算処理回路を構成するモンゴ
メリ乗算回路構成を示す図である。
【図3】図2に示すモンゴメリ乗算回路構成におけるレ
ジスタ構成を示す図である。
【図4】本発明の多倍長演算処理回路を構成するモンゴ
メリ乗算回路構成を示す図である。
【図5】図4に示すモンゴメリ乗算回路構成におけるレ
ジスタ構成を示す図である。
【図6】本発明のモンゴメリ乗算回路における計算処理
手順を説明する図である。
【図7】本発明のモンゴメリ乗算回路における計算処理
手順を説明するタイミングチャート図である。
【図8】モンゴメリ乗算回路における乗算処理とメモリ
アクセスにおける電力消費を説明する図である。
【図9】本発明の多倍長演算処理回路を構成する加算回
路構成を示す図である。
【図10】本発明の多倍長演算処理回路を構成する加算
回路構成を示す図である。
【図11】本発明の加算回路における計算処理手順を説
明する図である。
【図12】本発明の加算回路における計算処理手順を説
明するタイミングチャート図である。
【図13】本発明の加算回路における剰余加算計算処理
手順を説明する図である。
【図14】本発明の加算回路における剰余加算計算処理
手順を説明するタイミングチャート図である。
【図15】本発明の加算回路における剰余減算計算処理
手順を説明する図である。
【図16】本発明の加算回路における剰余減算計算処理
手順を説明するタイミングチャート図である。
【図17】本発明のマルチブロック対応のレジスタを用
いた多倍長演算処理装置構成におけるレジスタ構成を示
す図である。
【符号の説明】
100 ICカード型デバイス 101 CPU 102 ROM 103 RAM 104 HDD 105 変調増幅部 106 DES暗号処理部 107 多倍長演算処理部 108 ALUコントローラ&I/F 109 演算器 110 ALURAM 111 入出力I/F 201,202,203,204 シフトレジスタ 211,212,213,214 レジスタ 231〜238 セレクタ 251 乗算器 252 加算器 301,302,303,304 シフトレジスタ 311 レジスタ 331〜337 セレクタ 351 加算器 501,502,503 シフトレジスタ 511,512 レジスタ 521〜523 セレクタ 531,532 レジスタ 541〜543 セレクタ 551,552 レジスタ 561〜563 セレクタ

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】多倍長演算処理装置において、 所定ビット数のデータからなるワード単位での乗算処理
    を実行する乗算器と、 前記乗算器に対する入力データを格納するレジスタであ
    り、1レジスタに1ワードを格納する構成を有する多段
    構成の第1のシフトレジスタと、 前記乗算器における乗算処理後のデータを格納するレジ
    スタであり、1レジスタに1ワードを格納する構成を有
    する多段構成の第2のシフトレジスタと、 を有することを特徴とする多倍長演算処理装置。
  2. 【請求項2】前記多倍長演算処理装置は、さらに、 前記乗算器に対する入力データを格納する1ワード格納
    用レジスタと、 前記乗算器の乗算処理の停止クロックタイミングに、前
    記1ワード格納用レジスタに対するメモリからのデータ
    セット処理を実行する制御部と、 を有する構成であることを特徴とする請求項1に記載の
    多倍長演算処理装置。
  3. 【請求項3】前記多倍長演算処理装置は、さらに、 前記乗算器の乗算処理の停止クロックタイミングに、前
    記多段構成の第1のシフトレジスタに対するメモリから
    のデータセット処理を実行する制御部を有する構成であ
    ることを特徴とする請求項1に記載の多倍長演算処理装
    置。
  4. 【請求項4】前記多倍長演算処理装置は、さらに、 前記乗算器の計算結果を入力し、該入力に基づく加算処
    理を実行する加算器を有することを特徴とする請求項1
    に記載の多倍長演算処理装置。
  5. 【請求項5】前記多倍長演算処理装置は、さらに、 前記第1のシフトレジスタの前段に、 セレクタと、1ワード格納用レジスタを交互に構成した
    回路構成を有することを特徴とする請求項1に記載の多
    倍長演算処理装置。
  6. 【請求項6】モンゴメリ乗算を実行する多倍長演算処理
    装置であり、 下記計算プロセスからなるモンゴメリ乗算、 INPUT:m=(mn-1…m10b,X=(xn-1
    10b,Y=(yn- 1…y10b, 0≦X,Y<m,R=bn,gcd(m,b)=1,
    m’=−m-1modbOUTPUT:Z=XYR-1mo
    dm 1.A←0(A=(ann-1…a10b) 2.For i from 0to n−1 do th
    e Following: 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b 3.B←A−m 4.If B≧0, return (B), els
    e return (A) の計算を行う多倍長演算処理装置において、 上記計算プロセス中のXを格納するbビット×n段のシ
    フトレジスタと、 上記計算プロセス中のYを格納するbビット×n段のシ
    フトレジスタと、 上記計算プロセス中のmを格納するbビット×n段のシ
    フトレジスタと、 上記計算プロセス中のAを格納するbビット×(n+
    1)段のシフトレジスタと、 上記計算プロセス中のm’を格納するbビットのレジス
    タと、 上記計算プロセス中のuiを格納するbビットのレジス
    タと、 bビット×bビットの乗算器と、 3入力(2b+1)ビットの加算器と、 を備えることを特徴とする多倍長演算処理装置。
  7. 【請求項7】前記多倍長演算処理装置において、さら
    に、 2入力のbビットの加算器を有することを特徴とする請
    求項6に記載の多倍長演算処理装置。
  8. 【請求項8】前記多倍長演算処理装置は、さらに、 前記各シフトレジスタの少なくともいずれかのシフトレ
    ジスタ前段に、 セレクタと、1ワード格納用レジスタを交互に構成した
    回路構成を有することを特徴とする請求項6に記載の多
    倍長演算処理装置。
  9. 【請求項9】前記多倍長演算処理装置は、さらに、 前記乗算器の乗算処理の停止クロックタイミングに、前
    記シフトレジスタに対するメモリからのデータセット処
    理を実行する制御部を有する構成であることを特徴とす
    る請求項6に記載の多倍長演算処理装置。
  10. 【請求項10】モンゴメリ乗算を実行する多倍長演算処
    理装置であり、 下記計算プロセスからなるモンゴメリ乗算、 INPUT:m=(mn-1…m10b,X=(xn-1
    10b,Y=(yn- 1…y10b, 0≦X,Y<m,R=bn,gcd(m,b)=1,
    m’=−m-1modb OUTPUT:Z=XYR-1modm 1.A←0(A=(ann-1…a10b) 2.For i from 0to n−1 do th
    e Following: 2.1.A←A+yiX 2.2.ui=a0m’modb 2.3.A←(A+uim)/b 3.B←A−m 4.If B≧0, return (B), els
    e return (A) の計算を行う多倍長演算処理装置において、 上記計算プロセス中のXを格納するbビット×n段のシ
    フトレジスタと、 上記計算プロセス中のmを格納するbビット×n段のシ
    フトレジスタと、 上記計算プロセス中のAを格納するbビット×(n+
    1)段のシフトレジスタと、 上記計算プロセス中のm’を格納するbビットのレジス
    タと、 上記計算プロセス中のYおよび、uiを選択的に格納す
    るbビットのレジスタと、 bビット×bビットの乗算器と、 3入力(2b+1)ビットの加算器と、 を備えることを特徴とする多倍長演算処理装置。
  11. 【請求項11】前記多倍長演算処理装置において、さら
    に、 2入力のbビットの加算器を有することを特徴とする請
    求項10に記載の多倍長演算処理装置。
  12. 【請求項12】前記多倍長演算処理装置は、さらに、 前記各シフトレジスタの少なくともいずれかのシフトレ
    ジスタ前段に、 セレクタと、1ワード格納用レジスタを交互に構成した
    回路構成を有することを特徴とする請求項10に記載の
    多倍長演算処理装置。
  13. 【請求項13】前記多倍長演算処理装置は、さらに、 前記乗算器の乗算処理の停止クロックタイミングに、前
    記シフトレジスタまたはレジスタに対するメモリからの
    データセット処理を実行する制御部を有する構成である
    ことを特徴とする請求項10に記載の多倍長演算処理装
    置。
  14. 【請求項14】楕円曲線暗号処理を実行する演算手段を
    有するICデバイスであり、 前記演算手段は、多倍長演算処理部を有し、 該多倍長演算処理部は、 所定ビット数のデータからなるワード単位での乗算処理
    を実行する乗算器と、 前記乗算器に対する入力データを格納するレジスタであ
    り、1レジスタに1ワードを格納する構成を有する多段
    構成の第1のシフトレジスタと、 前記乗算器における乗算処理後のデータを格納するレジ
    スタであり、1レジスタに1ワードを格納する構成を有
    する多段構成の第2のシフトレジスタと、 を有することを特徴とするICデバイス。
  15. 【請求項15】前記ICデバイスは、 電磁波入力を行なうインタフェースと、 前記インタフェースからの入力電磁波に基づいて、IC
    デバイス内の処理部に対する電力供給を行なう電源供給
    手段とを有し、 前記演算手段は、前記電源供給手段からの電源供給によ
    り動作する構成を有することを特徴とする請求項14に
    記載のICデバイス。
  16. 【請求項16】前記多倍長演算処理部は、さらに、 前記乗算器に対する入力データを格納する1ワード格納
    用レジスタと、 前記乗算器の乗算処理の停止クロックタイミングに、前
    記1ワード格納用レジスタに対するメモリからのデータ
    セット処理を実行する制御部と、 を有する構成であることを特徴とする請求項14に記載
    のICデバイス。
  17. 【請求項17】前記多倍長演算処理部は、さらに、 前記乗算器の乗算処理の停止クロックタイミングに、前
    記多段構成の第1のシフトレジスタに対するメモリから
    のデータセット処理を実行する制御部を有する構成であ
    ることを特徴とする請求項14に記載のICデバイス。
  18. 【請求項18】前記多倍長演算処理部は、さらに、 前記乗算器の計算結果を入力し、該入力に基づく加算処
    理を実行する加算器を有することを特徴とする請求項1
    4に記載のICデバイス。
  19. 【請求項19】前記多倍長演算処理部は、さらに、 前記第1のシフトレジスタの前段に、 セレクタと、1ワード格納用レジスタを交互に構成した
    回路構成を有することを特徴とする請求項14に記載の
    ICデバイス。
JP2002013697A 2002-01-23 2002-01-23 多倍長演算処理装置およびicデバイス Pending JP2003216411A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002013697A JP2003216411A (ja) 2002-01-23 2002-01-23 多倍長演算処理装置およびicデバイス

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002013697A JP2003216411A (ja) 2002-01-23 2002-01-23 多倍長演算処理装置およびicデバイス

Publications (2)

Publication Number Publication Date
JP2003216411A true JP2003216411A (ja) 2003-07-31
JP2003216411A5 JP2003216411A5 (ja) 2005-08-04

Family

ID=27650591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002013697A Pending JP2003216411A (ja) 2002-01-23 2002-01-23 多倍長演算処理装置およびicデバイス

Country Status (1)

Country Link
JP (1) JP2003216411A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250481A (ja) * 2004-03-02 2005-09-15 Samsung Electronics Co Ltd 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
JP2007233381A (ja) * 2006-02-08 2007-09-13 Nvidia Corp 暗号処理に使用するグラフィック処理ユニット
JP2009043027A (ja) * 2007-08-09 2009-02-26 Sanyo Electric Co Ltd データフローグラフ生成装置、設定データ生成装置、処理装置、及びデータフローグラフ生成方法
JP2010505315A (ja) * 2006-09-29 2010-02-18 シーメンス アクチエンゲゼルシヤフト 認証方法および認証のための通信システム
JP2015068880A (ja) * 2013-09-27 2015-04-13 富士通セミコンダクター株式会社 演算回路および演算方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250481A (ja) * 2004-03-02 2005-09-15 Samsung Electronics Co Ltd 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
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
JP2010505315A (ja) * 2006-09-29 2010-02-18 シーメンス アクチエンゲゼルシヤフト 認証方法および認証のための通信システム
US8458472B2 (en) 2006-09-29 2013-06-04 Siemens Aktiengesellschaft Authentication method and communications system used for authentication
JP2009043027A (ja) * 2007-08-09 2009-02-26 Sanyo Electric Co Ltd データフローグラフ生成装置、設定データ生成装置、処理装置、及びデータフローグラフ生成方法
JP2015068880A (ja) * 2013-09-27 2015-04-13 富士通セミコンダクター株式会社 演算回路および演算方法

Similar Documents

Publication Publication Date Title
US5742530A (en) Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
Öztürk et al. Low-power elliptic curve cryptography using scaled modular arithmetic
US8176109B2 (en) Calculating unit for reducing an input number with respect to a modulus
US7603558B2 (en) Montgomery transform device, arithmetic device, IC card, encryption device, decryption device and program
US7835517B2 (en) Encryption processing apparatus, encryption processing method, and computer program
CN103903047B (zh) 一种适用于rfid安全通信的椭圆曲线加密协处理器
US20120057695A1 (en) Circuits for modular arithmetic based on the complementation of continued fractions
Kumar Elliptic curve cryptography for constrained devices
Pessl et al. Curved tags–a low-resource ECDSA implementation tailored for RFID
EP1560110A1 (en) Multiple-word multiplication-accumulation circuit and Montgomery modular multiplication-accumulation circuit
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
EP1068565B1 (en) Acceleration and security enhancements for elliptic curve and rsa coprocessors
Moon et al. Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications
US8364737B2 (en) Device and method for calculating a result of a sum with a calculating unit with limited word length
JP2003216411A (ja) 多倍長演算処理装置およびicデバイス
JP2004004341A (ja) べき乗剰余計算装置、べき乗剰余計算方法及びプログラム
CN113141255A (zh) 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法
Telle et al. Customising hardware designs for elliptic curve cryptography
JP2002358010A (ja) べき乗剰余演算器
JP2004125891A (ja) べき乗剰余演算器
Zimmermann et al. High-performance integer factoring with reconfigurable devices
JP3904421B2 (ja) 剰余乗算演算装置
Smyth et al. An adaptable and scalable asymmetric cryptographic processor
JP3779479B2 (ja) Icカード
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050111

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070410

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070703

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070817

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070911