JP2002358012A - 情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置 - Google Patents

情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置

Info

Publication number
JP2002358012A
JP2002358012A JP2002077843A JP2002077843A JP2002358012A JP 2002358012 A JP2002358012 A JP 2002358012A JP 2002077843 A JP2002077843 A JP 2002077843A JP 2002077843 A JP2002077843 A JP 2002077843A JP 2002358012 A JP2002358012 A JP 2002358012A
Authority
JP
Japan
Prior art keywords
variable
unit
value
stored
storage
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.)
Withdrawn
Application number
JP2002077843A
Other languages
English (en)
Inventor
Takatoshi Ono
貴敏 小野
Natsume Matsuzaki
なつめ 松崎
Toshihisa Nakano
稔久 中野
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002077843A priority Critical patent/JP2002358012A/ja
Publication of JP2002358012A publication Critical patent/JP2002358012A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 コプロセッサの回路規模もメモリも増大させ
ることなく、スモールウィンドウ法などの高速べき演算
方法を実行できる情報セキュリティ装置を提供する。 【解決手段】 コプロセッサの外部にべき乗演算を高速
に行うスモールウィンドウ法に必要となる比較的大きな
テーブルを用意し、テーブルの値からの選択とコプロセ
ッサへの転送を、コプロセッサでの多倍長演算と並列し
て行う。演算に用いる多倍長値のための領域をコプロセ
ッサに2バンク用意し、データ転送に一方のバンクを用
いている間、コプロセッサの演算に他方のバンクを用い
る。コプロセッサの演算が終了し次第、バンクを切り替
え、既に転送されている値をコプロセッサでの演算に用
いると同時に、次の演算のためのデータ転送を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、べき乗、べき乗剰
余、楕円べき倍による演算を行う情報セキュリテイ技術
に関する。
【0002】
【従来の技術】近年、コンピュータ技術と通信技術とに
基づくデータ通信が広く普及してきており、このデータ
通信においては、秘密通信方式又はデジタル署名方式が
用いられるようになってきている。ここで、秘密通信方
式とは、特定の通信相手以外に通信内容を漏らすことな
く通信を行なう方式である。またデジタル署名方式と
は、通信相手に通信内容の正当性を示したり、発信者の
身元を証明する通信方式である。
【0003】これらの秘密通信方式又はデジタル署名方
式においては、公開鍵暗号方式とよばれる暗号方式が用
いられる。公開鍵暗号方式は通信相手が多数のとき、通
信相手ごとに異なる暗号鍵を容易に管理するための方式
であり、多数の通信相手と通信を行なうのに不可欠な基
盤技術である。公開鍵暗号方式を用いる秘密通信では、
暗号化鍵と復号化鍵とが異なり、復号化鍵は秘密にする
が、暗号化鍵は公開する。
【0004】(離散対数問題)この公開鍵暗号方式の安
全性の根拠として離散対数問題が用いられる。離散対数
問題には、代表的なものとして、有限体上定義されるも
の及び楕円曲線上定義されるものがある。有限体上の離
散対数問題とは、GFを有限体とし、bと、bのべき乗
であるyとをGFの要素とすると、 bx =y となる整数xが存在するならば、xを求めよ、という問
題である。
【0005】また、楕円曲線上の離散対数問題とは、E
を有限体GF上で定義された楕円曲線とし、楕円曲線E
に含まれる元Gをベースポイントとし、このとき、楕円
曲線Eに含まれる与えられた元Yに対して、 Y=x*G となる整数xが存在するならば、xを求めよ、という問
題である。なお、この明細書において、記号*は、楕円
曲線に含まれる元を複数回加算する演算を示している。
例えば、x*Gは、次式に示すように、楕円曲線に含ま
れる元Gをx回加算することを意味する。
【0006】x*G=G+G+G+・・・+G 離散対数問題を公開鍵暗号方式の安全性の根拠とするの
は、多くの元を有する有限体GF(p)に対して、上記
問題の解決は極めて難しいからである。なお、離散対数
問題については、ニイルコブリッツ著 ”ア コウス
イン ナンバアセオリイ アンド クリプトグラヒイ”
(Neal Koblitz , " A Course in Number theory and Cr
yptography", Springer-Verlag,1987)に詳しく述べられ
ている。
【0007】(べき乗演算及び楕円べき倍演算)このよ
うに、公開鍵暗号方式の安全性の根拠として離散対数問
題が用いられる暗号演算においては、べき乗演算、又は
楕円べき倍演算が行われる。べき乗演算、楕円べき倍演
算の演算方法として、D.E.KunuthがThe Art of Compute
r Programming,Vol.2,Seminumerical algorithmsに記載
しているバイナリ法が知られている。
【0008】またバイナリ法の改良としてF.MorainとJ.
OlivosがTeoretical Informatics and Applications Vo
l.24,No.6に記載している符号つきバイナリ法、及び前
記D.E.Kunuthの著書に記載されているスモールウィンド
ウ法などが知られている。また符号つきバイナリ法を改
良した方法として、特開平7−49769号公報、特開
2000−330470号公報が知られている。
【0009】(バイナリ法)これらの従来技術のうちバ
イナリ法による、べき乗剰余演算方法を例にとり、その
概要を説明する。バイナリ法によるAk の演算において
は、n−1回分の2乗剰余演算と、ki=1となる回数
分の乗算剰余演算とによって、べき乗剰余演算結果を得
る。ここで、Ak の演算において、べき値kをkn-1
n-2 ・・・ki ・・・k10 (n>i≧0、ki は0
または1)のように、2進数により表現する。
【0010】バイナリ法によると、最初に、最終的にべ
き乗剰余値が格納される変数Xに初期値1を代入し、べ
き値kを2進表現したときに、どのビットを調べるかを
示すインデックスである変数iにn−1を代入する。こ
こで、nは、べき値kを2進表現した時のビットサイズ
である。次に、変数iを1ずつ減じながら、変数iが0
になるまで(i=n−1、n−2、・・・、1、0)、
変数iの各値について、以下のステップを繰り返す。
【0011】・X=X2 (Xの2乗算剰余を演算し、演
算結果をXに代入する。) ・べき値kのビット値ki が1である場合にのみ、X=
X×A(XとAとに乗算剰余演算を施し、演算結果をX
に代入する。) 上記の繰返しが終了すると、Ak の値が変数Xに格納さ
れる。 (スモールウィンドウ法)もう一つの従来方法としてス
モールウィンドウ法について、その概要を説明する。
【0012】スモールウィンドウ法によるAk の演算に
おいては、最初に、バイナリ法と同様に、変数Xに初期
値1を代入し、変数iにn−1を代入する。次に、ウィ
ンドウの幅をWとするときに、m=2W-1 を計算し、A
を元にしてA0 、A1 、・・・、Am-1 を含むテーブル
を作成する。ここで、A0 、A1 、・・・、Am-1 は、
次のようにして計算される。
【0013】A0 =A A1 =A3 ・・・ Am-1 =A2m-1 次に、べき値kの2進表現ki をk’i に変換する。こ
こで、ki =0又は1であり、k’i は、0、1、・・
・、m−1である。
【0014】例えば、べき値kの2進表現・・・ki
i-1 ・・・k10 において、3ビットのkt+2 、k
t+1 、kt という並びがあるとき(ここで、kt+2 、k
t+1 、kt は、それぞれ、0又は1である。)、前記3
ビットをまとめてk’t と表現する。例えば、kt+2
0、kt+1 =1、kt =1のとき、k’t =[011]
=3と変換する。この例では3ビットでの変換例を示し
たが、実際はウィンドウ幅に従った変換を行う。
【0015】次に、変数iを1ずつ減じながら、変数i
が0になるまで(i=n−1、n−2、・・・、1、
0)、変数iの各値について、以下のステップを繰り返
す。 ・X=X2 (Xの2乗算剰余を演算し、演算結果をXに
代入する。) ・べき値kのビット値k’i が0でない場合にのみ、X
=X×Ak’i(XとAk’i とに乗算剰余演算を施
し、演算結果をXに代入する。) 上記の繰返しが終了すると、Ak の値が変数Xに格納さ
れる。
【0016】このスモールウィンドウ法を用いると、バ
イナリ法を用いたときに比べ乗算剰余演算を行う回数が
削減され、高速に、べき乗剰余演算が行えることが知ら
れている。従来の方法として挙げた他の方法も、べき値
を調べ、その結果により乗算剰余演算、2乗剰余演算を
行うという形は同じであるため説明を省略する。 (べき乗剰余演算装置の構成例)以上に述べた従来方法
による、べき乗剰余演算を実現するべき乗剰余演算装置
の構成例を示す。
【0017】べき乗剰余演算装置は、汎用のマイクロプ
ロセッサであるCPU、RAM及びその他のユニットか
ら構成されている。CPUは、制御、乗算剰余、及び2
乗算剰余を行い、RAMは、コンピュータプログラム、
テーブル値、演算値を格納する。前記コンピュータプロ
グラムは、上記に示すバイナリ法又はスモールウィンド
ウ法を実行するためのプログラムであり、CPUは、前
記コンピュータプログラムに従って動作することによ
り、前記バイナリ法又はスモールウィンドウ法を実行す
る。
【0018】この構成は非常にシンプルであり、全ての
演算がCPUで行われる。従って構成はシンプルだが、
専用の制御回路、演算回路を設けていないので、専用の
制御回路、演算回路を含むべき乗剰余演算装置と比較す
ると、処理速度は遅くなる。 (べき乗剰余演算装置の別の構成例)従来のべき乗剰余
演算装置とは別の構成例を示す。このべき乗剰余演算装
置は、汎用のCPUではなく、いくつかの特定の専用演
算を高速に実行できるコプロセッサのみによってべき乗
剰余演算を行う。べき乗剰余演算装置は、汎用のマイク
ロプロセッサであるCPU及び専用演算を行うコプロセ
ッサを含んで構成される。
【0019】CPUは、演算開始をコプロセッサに通知
する。コプロセッサは、内部の他のユニットを制御する
制御部、べき乗剰余演算を行う演算部、各種テーブル値
を格納するテーブル値格納部、演算結果を格納する演算
値格納部を含む。制御部は、演算部で演算する値をテー
ブル値格納部から選択し転送する。演算部は、制御部が
選択したテーブル値、及び演算値格納部に格納されてい
る値を2乗算剰余演算、乗算剰余演算し、演算結果を演
算値格納部に格納する。
【0020】このように、コプロセッサは、内部にテー
ブル値、演算値を格納するユニットを含む。これは、コ
プロセッサに含まれる演算部がデータにアクセスする
際、外部のRAMよりコプロセッサ内メモリの方が高速
なアクセスが可能となるためである。以上説明した構成
によって、制御部と演算部が切り分けられ、高速な演算
が可能となる。しかし演算部がアクセスできる領域とし
てテーブル値格納部を持たなくてはならず、大容量のメ
モリがコプロセッサ内部に必要となってくる。また、こ
の構成では、CPUは演算を開始する通知のみ行い、演
算処理は全てコプロセッサで行われる。従ってコプロセ
ッサが演算している間、べき乗剰余演算にCPUが関与
することはない。
【0021】(べき乗剰余演算装置の別の構成例)従来
のべき乗剰余演算装置のさらに別の構成例を示す。この
べき乗剰余演算装置は、汎用のマイクロプロセッサであ
るCPUと専用演算を行うコプロセッサとを備え、コプ
ロセッサは、制御部、2個の演算部、テーブル値を格納
するテーブル値格納部、及び演算値を格納する演算値格
納部を含み、2個の演算部を並列動作させる。
【0022】制御部は、第1の演算部で演算する値をテ
ーブル値格納部から選択し転送する。第1の演算部は、
制御部が選択したテーブル値、及び演算値格納部に格納
されている値を乗算剰余演算し、演算結果を演算値格納
部に格納する。第2の演算部は、演算値格納部に格納さ
れている値を2乗算剰余演算し、演算結果を演算値格納
部に格納する。
【0023】このように、第1の演算部及び第2の演算
部が独立に並列動作することによって、前述したべき乗
剰余演算装置よりも高速な演算実行が可能となる。また
この構成でも、前述したべき乗剰余演算装置と同様にC
PUは演算を開始する通知のみ行い、演算処理は全てコ
プロで行われる。従ってコプロが演算している間、べき
乗剰余演算にCPUが関与することはない。しかし演算
部を二つ持つことにより、コプロセッサの回路規模が大
きくなる。
【0024】
【発明が解決しようとする課題】これらの技術を見てみ
ると、CPUのみによる構成でべき乗剰余を計算する場
合、乗算剰余演算において所要の実行速度が得られず、
その結果、べき乗剰余演算の実行が低速になるという課
題がある。前記課題を解決するために、コプロセッサに
よる乗算剰余演算を実行する構成をとる場合、コプロセ
ッサがアクセスできるメモリが増大するという課題があ
る。コプロセッサ内のメモリの増大という課題を解決す
るためには、大量のテーブルを用いるスモールウィンド
ウ法によるべき乗剰余演算を行わずに、少量のメモリで
実行可能なバイナリ法を行う必要がある。その結果べき
乗剰余演算の実行がそれほど高速にできないという課題
がある。
【0025】また一方、コプロセッサを二つ並べて並列
動作させることによって、高速なべき乗剰余演算を行う
場合、コプロセッサの回路規模が2倍となるという課題
がある。そこで本発明はかかる問題点に鑑みてなされた
ものであり、コプロセッサの回路規模もメモリも増大さ
せることなく、スモールウィンドウ法などの高速べき演
算方法を実行できる情報セキュリティ装置、べき乗演算
装置、べき乗剰余演算装置、楕円べき倍演算装置、方
法、コンピュータプログラム、コンピュータプログラム
を記録している記録媒体を提供することを目的とする。
【0026】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、群上の離散対数問題を解くことが計算量
の上で困難であることを根拠として、べき演算k&Aを
演算することにより所定の情報を安全かつ確実に扱う情
報セキュリティ装置であって、初期化手段、演算手段、
格納手段、繰返制御手段及び交換手段を含み、前記群
は、所定の集合と前記集合の元を用いる2項演算とから
なり、前記べき演算k&Aは、前記群の単位元に対して
前記群の元Aを用いた2項演算をk回繰り返す演算であ
り、前記離散対数問題は、群の元Y=k&Aとなるよう
な元kが存在するなら、元kを求める問題であり、前記
初期化手段は、変数X及び変数B2 にそれぞれ初期値と
して前記群の単位元を格納し、前記繰返制御手段は、2
進数表現する場合における元kのビット数分だけ、前記
演算手段、前記格納手段及び前記交換手段に対して、演
算と格納と交換とからなるステップを繰り返し実行する
よう制御することにより、べき演算k&Aを演算し、べ
き演算k&Aの演算結果は、前記繰返しの最後に変数X
に格納され、前記演算手段は、変数Xと同一変数Xとを
用いた2項演算を行い、その演算結果と変数B2 に格納
されている被演算値としての値とを用いた2項演算を行
って、その演算結果を変数Xに格納し、前記格納手段
は、前記演算手段による前記演算処理が行われる時間帯
において、並行して、次のステップにおいて前記演算手
段で用いられる被演算値を選択し、選択した被演算値を
変数B1 へ格納し、前記交換手段は、前記演算手段によ
る演算処理及び前記格納手段による格納が終了すると、
変数B2 の値と変数B1 の値とを入れ換えることを特徴
とする。
【0027】ここで、前記格納手段は、1個又は所定値
より小さい複数個の候補値を記憶している候補値記憶部
と、元kを2進数表現する場合におけるビット列の一部
分を用いて、前記候補値から1個の候補値を、次のステ
ップにおいて前記演算手段で用いられる被演算値として
選択する選択部と、前記演算手段による前記演算処理が
行われる時間帯において、並行して、選択した被演算値
を、変数B1 へ格納するデータ格納部とを含むように構
成してもよい。
【0028】ここで、前記候補値記憶部が記憶している
各候補値は、所定値より小さい数hを用いるべき演算h
&Aの演算結果であるように構成してもよい。ここで、
前記繰返制御手段は、元kを2進数表現する場合におけ
るビット列の上位側から下位側へ向かって、演算と格納
と交換とからなるステップを繰り返し実行するよう制御
するように構成してもよい。
【0029】ここで、前記選択部は、元kを2進数表現
する場合におけるビット列の一部分が特定のビット列パ
ターンである場合に、被演算値の選択を抑制し、前記デ
ータ格納部は、前記選択部により被演算値の選択が抑制
された場合、選択した被演算値の変数B1 への格納を抑
制し、前記演算手段は、前記データ格納部により被演算
値の変数B1 への格納が抑制される場合に、次のステッ
プにおいて、変数Xと同一変数Xとを用いた2項演算を
行い、その演算結果と単位元とを用いた2項演算を行っ
て、その演算結果を変数Xに格納するように構成しても
よい。
【0030】ここで、前記情報セキュリティ装置は、汎
用プロセッサと、専用プロセッサと、第1メモリと、バ
スと、DMA制御部とから構成されるコンピュータシス
テムであり、前記汎用プロセッサ、前記専用プロセッ
サ、前記メモリ及び前記DMA制御部は、前記バスを介
して相互に接続されており、前記第1メモリは、コンピ
ュータプログラム、元k、元A、被演算値を記憶するた
めの領域を含み、専用プロセッサは、その内部に、変数
X、変数B1 、変数B2 を記憶するための第2メモリと
前記演算手段と前記交換手段とを備え、前記初期化手段
は、コンピュータプログラムに従って、汎用プロセッサ
が動作することにより、バスを介して、専用プロセッサ
内部の変数X、及び変数B2 を初期化し、前記繰返制御
手段は、コンピュータプログラムに従って、汎用プロセ
ッサが動作することにより、ステップを繰り返すように
制御し、前記格納手段は、前記DMA制御部が汎用プロ
セッサの指示により、第1メモリに記憶されている被演
算値をバスを介して、専用プロセッサ内部の変数B1
転送するように構成してもよい。
【0031】ここで、前記繰返制御手段は、元kを2進
数表現する場合におけるビット列の上位側の上位ビット
列について、前記上位ビット列のビット数分だけ、前記
演算手段、前記格納手段及び前記交換手段に対して、演
算と格納と交換とからなるステップを繰り返し実行する
よう制御し、べき演算を演算し、前記情報セキュリティ
装置は、さらに、バイナリ法演算部と2項演算部とを含
み、前記バイナリ法演算部は、コンピュータプログラム
に従って、汎用プロセッサが動作することにより、前記
ビット列の下位側の下位ビット列について、バイナリ法
を用いて、前記下位ビット列の下位側から上位側に向か
って、べき演算を演算し、演算結果は、変数Zに格納さ
れ、変数Zは、前記第1メモリに確保され、前記2項演
算部は、コンピュータプログラムに従って、汎用プロセ
ッサが動作することにより、変数Xと変数Zとに対して
2項演算を施して、べき演算k&Aの演算結果を得るよ
うに構成してもよい。
【0032】ここで、前記群は、楕円曲線であり、前記
単位元は、楕円曲線上の無限遠点である零元であり、前
記べき演算k&Aは、楕円曲線上の乗算k×Aであり、
前記2項演算は、楕円曲線上の加算であり、前記離散対
数問題は、楕円曲線の元Y=k×Aとなるような元kが
存在するなら、元kを求める問題であり、前記初期化手
段は、変数X及び変数B2 にそれぞれ楕円曲線上の零元
を格納し、前記繰返制御手段は、前記ステップを繰り返
し実行するよう制御することにより、楕円曲線上の乗算
k×Aを演算し、乗算k×Aの演算結果は、前記繰返し
の最後に変数Xに格納され、前記演算手段は、変数Xと
同一変数Xとの楕円曲線上の加算を行い、その演算結果
と変数B2 に格納されている値との楕円曲線上の加算を
行って、その演算結果を変数Xに格納するように構成し
てもよい。
【0033】ここで、前記群は、剰余体であり、前記単
位元は、整数1であり、前記べき演算k&Aは、剰余体
上のべき乗算Ak であり、前記2項演算は、剰余体上の
乗算であり、前記離散対数問題は、剰余体の元Y=Ak
となるような元kが存在するなら、元kを求める問題で
あり、前記初期化手段は、変数X及び変数B2 にそれぞ
れ整数1を格納し、前記繰返制御手段は、前記ステップ
を繰り返し実行するよう制御することにより、剰余体上
のべき乗算Ak を演算し、べき乗算Ak の演算結果は、
前記繰返しの最後に変数Xに格納され、前記演算手段
は、変数Xと同一変数Xとの剰余体上の乗算を行い、そ
の演算結果と変数B2 に格納されている値との剰余体上
の乗算を行って、その演算結果を変数Xに格納するよう
に構成してもよい。
【0034】ここで、前記群は、自然数であり、前記単
位元は、整数1であり、前記べき演算k&Aは、自然数
上のべき乗算Ak であり、前記2項演算は、自然数上の
乗算であり、前記離散対数問題は、自然数の元Y=Ak
となるような元kが存在するなら、元kを求める問題で
あり、前記初期化手段は、変数X及び変数B2 にそれぞ
れ整数1を格納し、前記繰返制御手段は、前記ステップ
を繰り返し実行するよう制御することにより、自然数上
のべき乗算Ak を演算し、べき乗算Ak の演算結果は、
前記繰返しの最後に変数Xに格納され、前記演算手段
は、変数Xと同一変数Xとの自然数上の乗算を行い、そ
の演算結果と変数B2 に格納されている値との自然数上
の乗算を行って、その演算結果を変数Xに格納するよう
に構成してもよい。
【0035】ここで、前記情報セキュリィ装置は、べき
演算k&Aを演算することにより所定の情報を暗号化又
は復号するように構成してもよい。ここで、前記情報セ
キュリィ装置は、べき演算k&Aを演算することにより
所定の情報にデジタル署名を施し、又は署名を検証する
ように構成してもよい。ここで、前記情報セキュリィ装
置は、べき演算k&Aを演算することにより所定の情報
を用いて、他の装置との間で同一の鍵を安全に共有する
ように構成してもよい。
【0036】
【発明の実施の形態】1.第1の実施の形態 本発明の1の実施の形態としてのデジタル署名システム
1について説明する。 1.1 デジタル署名システム1の構成 楕円曲線上の離散対数問題を安全性の根拠として応用し
たDSA署名を行うデジタル署名システム1は、図1に
示すように、ユーザA装置10、管理センタ装置20及
びユーザB装置30から構成されている。ユーザA装置
10、管理センタ装置20及びユーザB装置30は、そ
れぞれインターネット2を介して接続されている。
【0037】管理センタ装置20は、あらかじめユーザ
A装置10の秘密鍵を記憶しており、秘密鍵を用いて公
開鍵を生成し、生成した公開鍵をユーザB装置30に対
して公開する。ユーザA装置10は、ユーザB装置30
へメッセージをインターネット2を介して送信する。こ
のとき、ユーザA装置10は、メッセージと秘密鍵とを
用いて署名文を生成し、生成した署名文をインターネッ
ト2を介してユーザB装置30へ送信する。ユーザB装
置30は、ユーザA装置10からメッセージと署名文と
受信し、受信したメッセージと署名文と公開鍵とを用い
て、メッセージが確かにユーザA装置10から送信され
たものであるか否かを判断する。
【0038】(1)管理センタ装置20 管理センタ装置20は、図1に示すように、情報記憶部
21、公開鍵生成部22及び送受信部23から構成され
ている。公開鍵生成部22は、べき倍演算部24を含ん
でいる。 (情報記憶部21)この明細書において、pを素数、有
限体GF(p)上の楕円曲線をEとする。楕円曲線Eの
ベースポイントをGとし、楕円曲線Eの位数をqとす
る。つまり、qは、 q*G=0 を満たす最小の正整数である。
【0039】なお、x座標、y座標ともに∞である
(∞、∞)を無限遠点といい、0で表す。この0は、楕
円曲線を群とみたときに、加算における「零元」の役割
を果たす。情報記憶部21は、予めユーザAから通知さ
れているユーザAの秘密鍵xA と、素数p、楕円曲線E
のパラメタ、ベースポイントG及び位数qを記憶してい
る。
【0040】(公開鍵生成部22)公開鍵生成部22
は、情報記憶部21から秘密鍵xA 、素数p、楕円曲線
Eのパラメタ、ベースポイントG及び位数qを読み出
す。公開鍵生成部22に含まれるべき倍演算部24は、
次式に従って、秘密鍵xAを用いて、ユーザAの公開鍵
A を生成する。
【0041】YA =xA *G ここで、この演算は、有限体GF(p)上の楕円曲線E
上のべき倍算である。次に、公開鍵生成部22は、生成
した公開鍵YA を送受信部23へ出力する。(送受信部
23)送受信部23は、素数p、楕円曲線Eのパラメ
タ、ベースポイントG及び位数qを情報記憶部21から
読み出し、読み出した素数p、楕円曲線Eのパラメタ、
ベースポイントG及び位数qを、インターネット2を介
して、ユーザA装置10及びユーザB装置30へ送信す
る。これによって、管理センタ装置20は、素数p、楕
円曲線Eのパラメタ、ベースポイントG及び位数qを公
開する。
【0042】また、送受信部23は、公開鍵生成部22
から公開鍵YA を受け取り、受け取った公開鍵YA を、
インターネット2を介して、ユーザB装置30へ送信す
る。 (2)ユーザA装置10の構成 ユーザA装置10は、図1に示すように、メッセージ記
憶部11、署名部12及び送受信部13から構成されて
いる。署名部12は、べき倍演算部14を含む。
【0043】(メッセージ記憶部11)メッセージ記憶
部11は、あらかじめユーザB装置30へ送信するメッ
セージme を記憶している。 (署名部12)署名部12は、送受信部13から素数
p、楕円曲線Eのパラメタ、ベースポイントG及び位数
qを受け取る。
【0044】次に、署名部12は、メッセージ記憶部1
1からメッセージme を読み出す。また、乱数r0 を生
成する。次に、署名部12は、 R1 =(rX ,rY )=r0 *G を計算する。ここで、この演算は、有限体GF(p)上
の楕円曲線E上のべき倍算である。
【0045】次に、署名部12は、 s×r0 =me +rX ×xA (mod q) から、sを計算する。次に、署名部12は、計算したR
1 とsとを送受信部13へ出力する。 (送受信部13)送受信部13は、管理センタ装置20
から素数p、楕円曲線Eのパラメタ、ベースポイントG
及び位数qを受け取り、受け取った素数p、楕円曲線E
のパラメタ、ベースポイントG及び位数qを署名部12
へ出力する。
【0046】また、送受信部13は、署名部12からR
1 とsとを受け取る。また、送受信部13は、メッセー
ジ記憶部11からメッセージme を読み出す。次に、送
受信部13は、署名文としての(R1 、s)と、メッセ
ージme とを、インターネット2を介して、ユーザB装
置30へ出力する。 (3)ユーザB装置30の構成 ユーザB装置30は、図1に示すように、メッセージ記
憶部31、検証部32及び送受信部33から構成されて
いる。検証部32は、べき倍演算部34を含む。
【0047】(メッセージ記憶部31)メッセージ記憶
部31は、メッセージme を記憶するための領域を有し
ている。 (送受信部33)送受信部33は、インターネット2を
介して、管理センタ装置20から素数p、楕円曲線Eの
パラメタ、ベースポイントG、位数q及び公開鍵YA
受け取り、受け取った素数p、楕円曲線Eのパラメタ、
ベースポイントG、位数q及び公開鍵YA を検証部32
へ出力する。
【0048】また、送受信部33は、インターネット2
を介して、ユーザA装置10から署名文(R1 、s)と
メッセージme とを受信し、受信したメッセージme
メッセージ記憶部31に書き込み、受信した署名文(R
1 、s)を検証部30dへ出力する。 (検証部32)検証部32は、送受信部33から素数
p、楕円曲線Eのパラメタ、ベースポイントG、位数q
及び公開鍵YA を受け取る。また、送受信部33から署
名文(R 1 、s)を受け取る。
【0049】次に、検証部32は、 s*R1 =me *G+rX *YA が成立するかどうか判定する。ここで、この演算は、有
限体GF(p)上の楕円曲線E上のべき倍算を含んでい
る。べき倍演算部34が、このべき倍算を演算する。
【0050】成立する場合には、メッセージme の送信
者は、ユーザA装置10であると確認できる。成立しな
い場合には、メッセージme の送信者は、ユーザA装置
10であると確認できない。これは、 s*R1 ={((me +rX ×xA )/r0 )×r0 }*G =(me +rX ×xA )*G =me *G+(rX ×xA )*G =me *G+rX *YA となることから、明らかである。
【0051】1.2 デジタル署名システム1の動作 デジタル署名システム1の動作について、図2に示すフ
ローチャートを用いて説明する。管理センタ装置20の
公開鍵生成部22に含まれるべき倍演算部24は、秘密
鍵xA を用いて、ユーザAの公開鍵YA を生成し(ステ
ップS101)、送受信部23が、素数p、楕円曲線E
のパラメタ、ベースポイントG及び位数qを、インター
ネット2を介して、ユーザA装置10及びユーザB装置
30へ送信することにより、管理センタ装置20は、素
数p、楕円曲線Eのパラメタ、ベースポイントG及び位
数qを公開し(ステップS102)、また、送受信部2
3は、公開鍵YA を、インターネット2を介して、ユー
ザB装置30へ送信することにより、公開鍵YA を公開
する(ステップS103)。
【0052】次に、ユーザA装置10の署名部12は、
乱数r0 を生成し(ステップS104)、R1 =(r
X ,rY )=r0 *Gを計算し(ステップS105)、
s×r 0 =me +rX ×xA (mod q)から、s
を計算し(ステップS106)、次に、送受信部13
は、署名文(R1 、s)と、メッセージme とを、イン
ターネット2を介して、ユーザB装置30へ出力する
(ステップS107)。
【0053】次に、ユーザB装置30の送受信部33
は、インターネット2を介して、ユーザA装置10から
署名文(R1 、s)とメッセージme とを受信し(ステ
ップS107)、次に、検証部32は、s*R1 =me
*G+rX *YA が成立するかどうか判定することによ
り、メッセージme の送信者は、ユーザA装置10であ
るか否かを確認する(ステップS108)。
【0054】1.3 ユーザA装置10の詳細の構成 次に、ユーザA装置10の詳細の構成について、特に、
べき倍演算部14の詳細の構成について説明する。な
お、ここでは、べき倍演算部14は、べき倍演算k*A
を演算し、その結果を変数Xに代入するものとして、説
明する。
【0055】また、管理センタ装置20のべき倍演算部
24及びユーザB装置30のべき倍演算部34の構成に
ついては、べき倍演算部14と同様であるので、説明を
省略する。ユーザA装置10は、図3に示すように、C
PU101、RAM102、表示部103、入力部10
4、送受信部105、DMA制御部106、コプロセッ
サ40、データバス111及びアドレスバス112から
構成されており、CPU101、RAM102、表示部
103、入力部104、送受信部105、DMA制御部
106及びコプロセッサ40は、データバス111及び
アドレスバス112を介して接続されている。
【0056】また、コプロセッサ40は、制御部40
1、メモリ部402、RAM403、演算部404、デ
ータバス411及びアドレスバス412から構成されて
おり、制御部401、メモリ部402、RAM403及
び演算部404は、データバス411及びアドレスバス
412を介して接続されている。また、制御部401、
メモリ部402及びRAM403は、それぞれ、データ
バス111及びアドレスバス112に接続されている。
【0057】べき倍演算部14は、CPU101、RA
M102、DMA制御部106、コプロセッサ40、デ
ータバス111及びアドレスバス112から構成されて
いる。CPU101及びコプロセッサ40がコンピュー
タプログラムに従って動作することにより、べき倍演算
部14は、その機能を達成する。 (1)RAM102 RAM102は、読み書きが可能な半導体メモリから構
成されている。
【0058】RAM102は、べき倍演算X=k*Aに
おけるべき倍値k及び演算値Aをあらかじめ記憶してい
る。一例として、べき倍値kは、160ビット長であ
り、演算値Aは、480ビット長である。演算値Aが4
80ビット長であるのは、通常、楕円曲線上の演算を効
率化するため、演算値Aにおいて、3次元拡張された座
標系を用いるためである。
【0059】また、RAM102は、CPU101によ
りその上に領域が確保されて使用される。 (2)CPU101 CPU101は、汎用的なマイクロプロセッサであり、
RAM102に記憶されているコンピュータプログラム
に従って動作する。
【0060】以下において、前記コンピュータプログラ
ムに従うCPU101の動作について説明する。CPU
101は、べき倍演算k*Aの最初において、次に示す
初期化処理・〜・を実行する。 ・CPU101は、データバス111及びアドレスバス
112を介して、コプロセッサ40に対して、初期化指
示を出力する。
【0061】・CPU101は、変数iに値n−1を代
入する。変数iは、べき倍演算k*Aにおける繰り返し
を制御するためのインデックスである。変数iを記憶す
るための領域は、RAM102上に確保される。なお、
変数iを記憶するための領域は、CPU101が有する
1個のレジスタ上に確保するとしてもよい。また、値n
は、べき倍値kを記憶するための領域の長さを示すビッ
ト数である。
【0062】また、変数kn+1 、kn 、k-1、k-2に0
の値を代入する。 ・CPU101は、RAM102上に変数A0 、A1
・・・、Am-1 を記憶するための領域を確保する。ここ
で、変数A0 、A1 、A2 、・・・、Am-1 のサイズ
は、それぞれ、480ビット長である。ここで、ウィン
ドウの幅をWとするときに、CPU101は、m=2
W-1 を計算し、3*A、5*A、・・・、(2m−1)
*Aを計算する。次に、CPU101は、A、3*A、
5*A、・・・、(2m−1)*Aを、それぞれ、RA
M102上の領域に確保された変数A0 、A1 、A2
・・・、Am-1 に代入する。
【0063】次に、CPU101は、変数iがn−1か
ら0になるまで、変数iを1ずつ減じながら、以下のス
テップ・〜・を繰り返す。 ・CPU101は、ki をk’i に変換する。なお、こ
の変換については、後述する。ここで、従来技術におい
て説明したように、ki は、べき値kを2進表現したと
きの、kの下位からiビットめの値であり、k’i は、
i を複数個まとめたものである。すなわち、ki は、
0又は1の値をとり、k’i は、0、1、・・・、m−
1のうちのいずれかの値をとる。なお、ウィンドウの幅
をWとするときに、m=2W-1 である。
【0064】・CPU101は、データバス111及び
アドレスバス112を介して、DMA転送指示をDMA
制御部106へ出力する。 ・CPU101は、データバス111及びアドレスバス
112を介して、演算指示をコプロセッサ40へ出力す
る。 ・CPU101は、データバス111及びアドレスバス
112を介して、演算完了をコプロセッサ40から受け
取る。
【0065】上記の繰り返しが終了すると、CPU10
1は、RAM403上に記憶されている変数Xをべき倍
演算k*Aの演算結果として読み出し、読み出した演算
結果をRAM102の所定の領域に書き込む。 (3)DMA制御部106 DMA制御部106は、CPU101からデータバス1
11及びアドレスバス112を介して、DMA転送指示
を受け取る。
【0066】CPU101からDMA転送指示を受け取
ると、DMA制御部106は、RAM102に記憶され
ているAk’i を、データバス111及びアドレスバス
112を介して転送することにより、コプロセッサ40
のメモリ部402内の変数B 1 に設定する。 B1 =Ak’i ただし、k’i =0のときには、B1 =0と設定する。
【0067】変数B1 への設定が完了すると、DMA制
御部106は、転送完了を示す情報をコプロセッサ40
へ出力する。 (4)RAM403 RAM403は、読み書きが可能な半導体メモリから構
成されている。RAM403は、変数Xを記憶するため
の領域を備えている。前記領域のサイズは、480ビッ
ト長である。
【0068】(5)制御部401 制御部401は、CPU101から初期化指示及び演算
指示を受け取る。また、DMA制御部106から転送完
了を受け取る。初期化指示を受け取ると、制御部401
は、RAM403に確保されている変数Xに0を設定
し、メモリ部402に確保されている変数B2 に0を設
定する。
【0069】演算指示を受け取ると、制御部401は、
演算部404に対して演算指示を出力する。また、演算
部404から演算完了を受け取る。演算完了及び転送完
了を受け取ると、制御部401は、メモリ部402に対
してメモリの切換の指示を出力し、次に、演算完了を示
す情報をCPU101へ出力する。
【0070】(6)メモリ部402 メモリ部402は、第1メモリ領域402aと第2メモ
リ領域402bとから構成される。第1メモリ領域40
2aは、データバス111及びアドレスバス112、又
はデータバス411及びアドレスバス412のいずれか
一方に接続される。また、第2メモリ領域402bは、
データバス111及びアドレスバス112、又はデータ
バス411及びアドレスバス412のいずれか一方に接
続される。
【0071】第1メモリ領域402aが、データバス1
11及びアドレスバス112に接続されている場合に、
第2メモリ領域402bは、データバス411及びアド
レスバス412に接続されている。この状態を第1接続
状態と呼ぶ。また、第1メモリ領域402aが、データ
バス411及びアドレスバス412に接続されている場
合に、第2メモリ領域402bは、データバス111及
びアドレスバス112に接続されている。この状態を第
2接続状態と呼ぶ。
【0072】メモリ部402は、制御部401からメモ
リの切換の指示を受け取る。制御部401からメモリの
切換の指示を受け取ると、第1接続状態にあるときは、
メモリ部402は、第2接続状態に切り換える。また、
第2接続状態にあるときは、メモリ部402は、第1接
続状態に切り換える。第1メモリ領域402a内の所定
のアドレスにより示される変数領域に、前述した変数A
0 、A1 、A2 、・・・、Am-1 のいずれかが格納され
る。また、第2メモリ領域402b内の前記所定のアド
レスと同じアドレスにより示される変数領域に、前述し
た変数A0 、A1 、A2 、・・・、Am-1 のいずれかが
格納される。
【0073】第1接続状態又は第2接続状態において、
データバス111及びアドレスバス112に接続される
側のメモリ領域内の変数領域に確保される変数を変数B
1 と呼び、データバス411及びアドレスバス412に
接続される側のメモリ領域内の変数領域に確保される変
数を変数B2 と呼ぶ。 (7)演算部404 演算部404は、制御部401から演算指示を受け取
る。
【0074】演算指示を受け取ると、演算部404は、
RAM403から変数Xを読み出し、2*Xを演算し、
その演算結果をRAM403の変数Xに上書きする。次
に、演算部404は、RAM403から変数Xを読み出
し、X+B2 を演算し、その演算結果をRAM403の
変数Xに上書きする。上記の演算が完了すると、演算部
404は、制御部401に対して演算完了を出力する。
【0075】1.4 ユーザA装置10の詳細の動作 次に、ユーザA装置10の詳細の動作について、特に、
べき倍演算部14の詳細の動作について、図4及び図5
に示すフローチャートを用いて説明する。なお、図4に
示すフローチャートは、べき倍演算部14を構成する要
素毎の動作を示すものであり、図5に示すフローチャー
トは、べき倍演算部14全体の動作を示すものである。
【0076】CPU101は、データバス111及びア
ドレスバス112を介して、コプロセッサ40に対し
て、初期化指示を出力する(ステップS201)。初期
化指示を受け取ると、制御部401は、RAM403に
確保されている変数Xに0を設定し、メモリ部402に
確保されている変数B2 に0を設定する(ステップS2
02)。
【0077】CPU101は、変数iに値n−1を代入
し、変数kn+1 、kn 、k-1、k-2に0の値を代入する
(ステップS203)。次に、CPU101は、RAM
102上に変数A0 、A1 、・・・、Am-1 を記憶する
ための領域を確保し、m=2 W-1 を計算し、3*A、5
*A、・・・、(2m−1)*Aを計算し、A、3*
A、5*A、・・・、(2m−1)*Aを、それぞれ、
RAM102上の領域に確保された変数A0 、A1 、A
2 、・・・、Am-1 に代入する(ステップS204)。
【0078】次に、CPU101は、データバス111
及びアドレスバス112を介して、演算指示をコプロセ
ッサ40へ出力する(ステップS208)。次に、CP
U101は、変数iが0以上であるか否かを判断し、変
数iが0以上であると判断する場合には(ステップS2
05)、ki をk’iに変換し(ステップS206)、
データバス111及びアドレスバス112を介して、D
MA転送指示をDMA制御部106へ出力する(ステッ
プS207)。
【0079】CPU101からDMA転送指示を受け取
ると(ステップS207)、DMA制御部106は、R
AM102に記憶されているAk’ i を、データバス
111及びアドレスバス112を介して転送することに
より、コプロセッサ40のメモリ部402内の変数B1
に設定する。ただし、k’i =0のときには、B1 =0
と設定する(ステップS209)。変数B1 への設定が
完了すると、DMA制御部106は、転送完了を示す情
報をコプロセッサ40の制御部401へ出力する(ステ
ップS212)。
【0080】演算指示を受け取ると(ステップS20
8)、制御部401は、演算部404に対して演算指示
を出力し(ステップS221)、演算部404は、X=
2*Xを演算し(ステップS210)、X=X+B2
演算し(ステップS211)、上記の演算が完了する
と、制御部401に対して演算完了を出力する(ステッ
プS222)。
【0081】演算完了及び転送完了を受け取ると(ステ
ップS212及びステップS222)、制御部401
は、メモリ部402に対してメモリの切換の指示を出力
し、次に、メモリ部402は、第1接続状態にあるとき
は、第2接続状態に切り換え、また、第2接続状態にあ
るときは、第1接続状態に切り換える(ステップS21
3)。次に、制御部401は、演算完了を示す情報をC
PU101へ出力する(ステップS214)。
【0082】次に、CPU101は、変数iから1の値
を減じ(ステップS215)、次に、ステップS205
へ戻って処理を繰り返す。次に、変数iが0より小さい
と判断する場合には(ステップS205)、CPU10
1は、演算完了を受け取ると(ステップS214)、R
AM403上に記憶されている変数Xをべき倍演算k*
Aの演算結果として読み出し、読み出した演算結果をR
AM102の所定の領域に書き込み(ステップS21
6)、倍演算k*Aの演算を終了する。
【0083】次に、上記ステップS206に示すki
k’iに変換する動作の詳細について、図6に示すフロ
ーチャートを用いて説明する。ここで、k=[kn-1
n-2 ・・・k1 0 ]をk’=[k’n-1 k’n-2 ・・
・k’1 k’0 ]に変換するもとのする。また、まとめ
るビット数を3としている。
【0084】なお、kn-1 、kn-2 、・・・、k1 及び
0 は、それぞれ、0又は1であり、k=2n-1 ×k
n-1 +2n-2 ×kn-2 +・・・+21 ×k1 +k0 であ
る。また、k’n-1 、k’n-2 、・・・、k’1 及び
k’0 は 、それぞれ、0、1、3、7である。ki+2
=1である場合(ステップS401)、CPU101
は、k’i =4×ki+2 +2×ki+1 +ki を算出し
(ステップS402)、変換処理を終了する。
【0085】ki+2 =1でない場合(ステップS40
1)、[ki+2 i+1 i i-1 ]=[0110]であ
るなら(ステップS403)、CPU101は、k’i
=3とし(ステップS404)、変換処理を終了する。
i+2 =1でない場合(ステップS401)、[ki+2
i+1 i i-1 ]=[0110]でなく(ステップS
403)、[ki+2 i+1 i i-1 i-2 ]=[00
100]であるなら(ステップS405)、CPU10
1は、k’i =1とし(ステップS406)、変換処理
を終了する。
【0086】ki+2 =1でない場合(ステップS40
1)、[ki+2 i+1 i i-1 ]=[0110]でな
く(ステップS403)、[ki+2 i+1 i i-1
i-2 ]=[00100]でないなら(ステップS40
5)、CPU101は、k’i =0とし(ステップS4
07)、変換処理を終了する。 1.5 べき倍演算部14による演算の評価 従来のべき倍演算装置によると、図7に示すように、C
PUは、被演算値をコプロセッサが有するメモリ領域へ
転送し(C01)、その後、コプロセッサは、ki
k’i へ変換し(C11)、楕円曲線の加算演算を行う
(C12)。以降、k’i への変換と、楕円曲線の加算
演算とを繰り返す。
【0087】一方、本発明のべき倍演算部14による
と、図8に示すように、CPU1は、ki をk’i へ変
換し(C31)、DMA制御部106は、被演算値をコ
プロセッサ40が有するメモリ領域の変数B1 へ転送す
る(C32)。その後、CPU1は、ki をk’i へ変
換し(C33)、DMA制御部106は、被演算値をコ
プロセッサ40が有するメモリ領域の変数B1 へ転送す
る(C34)と同時に、コプロセッサ40は、メモリ領
域の変数B2 を用いて楕円曲線の加算演算を行う(C4
1)。
【0088】以降、DMA制御部106による被演算値
のメモリ領域の変数B1 への転送と、コプロセッサ40
による、メモリ領域の変数B2 を用いた楕円曲線の加算
演算が並行して行われる。このように、被演算値のメモ
リ領域の変数B1 への転送と、メモリ領域の変数B2
用いた楕円曲線の加算演算が並行して行われるので、本
発明のべき倍演算部14によると、従来技術のべき倍演
算装置と比較して、トータルの演算時間が短縮できる。
【0089】2.第2の実施の形態 本発明の別の実施の形態としての鍵共有システム1bに
ついて説明する。 2.1 鍵共有システム1bの構成 有限体上の離散対数問題を安全性の根拠として応用した
鍵共有システム3は、図9に示すように、ユーザA装置
10bとユーザB装置30bとから構成されている。ユ
ーザA装置10b及びユーザB装置30bは、それぞれ
インターネット2を介して接続されている。
【0090】ユーザA装置10b及びユーザB装置30
bは、それぞれの秘密鍵を記憶しており、それぞれの秘
密鍵を用いてそれぞれの公開鍵を生成し、生成した公開
鍵をそれぞれ相手の装置へ送信する。次に、ユーザA装
置10b及びユーザB装置30bは、それぞれの公開鍵
を用いて、ユーザA装置10b及びユーザB装置30b
の1個の共有鍵を生成する。
【0091】このようにして生成した共有鍵を用いて、
ユーザA装置10b及びユーザB装置30bの間でメッ
セージの秘密通信を行う。 (1)ユーザA装置10bの構成 ユーザA装置10bは、図9に示すように、鍵生成部1
1b、送受信部12b、鍵記憶部13b、暗号部14b
及びメッセージ記憶部15bから構成されている。
【0092】(鍵記憶部13b)鍵記憶部13bは、予
めユーザA装置10bの秘密鍵XA を記憶している。ま
た、ユーザA装置10bの公開鍵YA を記憶する領域
と、ユーザA装置10b及びユーザB装置30bの共有
鍵Fを記憶する領域とを備えている。 (鍵生成部11b)鍵生成部11bは、べき乗剰余演算
部16bを含んでいる。
【0093】鍵生成部11bは、鍵記憶部13bから秘
密鍵XA を読み出し、読み出した秘密鍵XA を用いて、
次式により公開鍵YA を生成する。 公開鍵YA =α**XA mod p ここで、α、pは、それぞれ所定の整数である。また、
演算子**は、べき乗を示す。例えば、A**kは、A
k を示す。
【0094】なお、上式の演算は、べき乗剰余演算部1
6bが行う。次に、鍵生成部11bは、生成した公開鍵
A を送受信部12b及びインターネット2を介して、
ユーザB装置30bへ送信する。また、鍵生成部11b
は、ユーザB装置30bから、インターネット及び送受
信部12bを介して、公開鍵YB を受信し、受信した公
開鍵YB を用いて、次式により共有鍵Fを生成する。
【0095】 共有鍵F=YB **XA mod p =α**(XA B ) mod p (式1) なお、上式の演算は、べき乗剰余演算部16bが行う。
次に、生成した共有鍵Fを鍵記憶部13bに書き込む。 (メッセージ記憶部15b)メッセージ記憶部15b
は、ユーザB装置30bへ送信するメッセージを記憶し
ている。
【0096】(暗号部14b)暗号部14bは、メッセ
ージ記憶部15bからメッセージを読み出し、鍵記憶部
13bから共有鍵Fを読み出す。次に、暗号部14b
は、共有鍵Fを鍵として用いて、メッセージに暗号化ア
ルゴリズムを施して暗号化メッセージを生成し、生成し
た暗号化メッセージを送受信部12b、及びインターネ
ット2を介して、ユーザB装置30bへ送信する。
【0097】(2)ユーザB装置30bの構成 ユーザB装置30bは、図9に示すように、送受信部3
1b、鍵生成部32b、復号部33b、鍵記憶部34b
及びメッセージ記憶部35bから構成されている。 (鍵記憶部34b)鍵記憶部34bは、予めユーザB装
置30bの秘密鍵XB を記憶している。また、ユーザB
装置30bの公開鍵YB を記憶する領域と、ユーザA装
置10b及びユーザB装置30bの共有鍵Fを記憶する
領域とを備えている。
【0098】(鍵生成部32b)鍵生成部32bは、べ
き乗剰余演算部36bを含んでいる。鍵生成部32b
は、鍵記憶部34bから秘密鍵XB を読み出し、読み出
した秘密鍵XB を用いて、次式により公開鍵YB を生成
する。 公開鍵YB =α**XB mod p ここで、α、pは、それぞれ所定の整数である。また、
演算子**は、べき乗を示す。
【0099】なお、上式の演算は、べき乗剰余演算部3
6bが行う。次に、鍵生成部32bは、生成した公開鍵
B を送受信部31b及びインターネット2を介して、
ユーザA装置10bへ送信する。また、鍵生成部32b
は、ユーザA装置10bから、インターネット2及び送
受信部31bを介して、公開鍵YA を受信し、受信した
公開鍵YA を用いて、次式により共有鍵Fを生成する。
【0100】 共有鍵F=YA **XB mod p =α**(XA B ) mod p (式2) なお、上式の演算は、べき乗剰余演算部36bが行う。
ここで、式1と式2とは、一致しているので、鍵生成部
11bと、鍵生成部32bによりそれぞれ生成された共
有鍵Fは一致していることは明確である。
【0101】次に、生成した共有鍵Fを鍵記憶部34b
に書き込む。 (メッセージ記憶部35b)メッセージ記憶部35b
は、ユーザA装置10bから送信された復号メッセージ
を記憶する領域を備えている。 (復号部33b)復号部33bは、ユーザA装置10b
から、インターネット2及び送受信部311bを介し
て、暗号化メッセージを受信する。また、復号部33b
は、鍵記憶部34bから共有鍵Fを読み出す。
【0102】次に、復号部33bは、共有鍵Fを鍵とし
て用いて、暗号化メッセージに復号アルゴリズムを施し
て復号メッセージを生成する。ここで、復号アルゴリズ
ムは、前記暗号化アルゴリズムの逆変換を行うアルゴリ
ズムである。次に、復号部33bは、生成した復号メッ
セージをメッセージ記憶部35bへ書き込む。
【0103】2.2 鍵共有システム1bの動作 鍵共有システム1bの動作について、図10に示すフロ
ーチャートを用いて説明する。鍵生成部11bは、鍵記
憶部13bから秘密鍵XA を読み出し、読み出した秘密
鍵XA を用いて、公開鍵YA を生成する。
【0104】公開鍵YA =α**XA mod p
(ステップS301) 次に、鍵生成部11bは、生成した公開鍵YA を送受信
部12b及びインターネット2を介して、ユーザB装置
30bへ送信する(ステップS302)。また、鍵生成
部32bは、鍵記憶部34bから秘密鍵XB を読み出
し、読み出した秘密鍵XB を用いて、次式により公開鍵
B を生成する。
【0105】公開鍵YB =α**XB mod p
(ステップS311) 次に、鍵生成部32bは、生成した公開鍵YB を送受信
部31b及びインターネット2を介して、ユーザA装置
10bへ送信する(ステップS312)。次に、鍵生成
部11bは、ユーザB装置30bから、インターネット
及び送受信部12bを介して、公開鍵YB を受信し、受
信した公開鍵YB を用いて、次式により共有鍵Fを生成
する。
【0106】共有鍵F=YB **XA mod p 次に、生成した共有鍵Fを鍵記憶部13bに書き込む
(ステップS303)。また、鍵生成部32bは、ユー
ザA装置10bから、インターネット2及び送受信部3
1bを介して、公開鍵YA を受信し、受信した公開鍵Y
A を用いて、次式により共有鍵Fを生成する。
【0107】共有鍵F=YA **XB mod p 次に、生成した共有鍵Fを鍵記憶部34bに書き込む
(ステップS313)。次に、暗号部14bは、メッセ
ージ記憶部15bからメッセージを読み出し、鍵記憶部
13bから共有鍵Fを読み出し、共有鍵Fを鍵として用
いて、メッセージに暗号化アルゴリズムを施して暗号化
メッセージを生成し(ステップS304)、生成した暗
号化メッセージを送受信部12b、及びインターネット
2を介して、ユーザB装置30bへ送信する(ステップ
S305)。
【0108】次に、復号部33bは、ユーザA装置10
bから、インターネット2及び送受信部311bを介し
て、暗号化メッセージを受信し、鍵記憶部34bから共
有鍵Fを読み出し、共有鍵Fを鍵として用いて、暗号化
メッセージに復号アルゴリズムを施して復号メッセージ
を生成し、生成した復号メッセージをメッセージ記憶部
35bへ書き込む(ステップS314)。
【0109】2.3 ユーザA装置10bの詳細の構成 次に、ユーザA装置10bの詳細の構成について、特
に、べき乗剰余演算部16bの詳細の構成について説明
する。ここでは、べき乗剰余演算部16bは、べき乗剰
余演算A**k mod pを演算し、その結果を変数
Xに代入するものとして、説明する。
【0110】また、べき乗剰余演算部16bは、ユーザ
A装置10のべき倍演算部14と同様の構成を有してい
る。ここでは、べき倍演算部14との相違点を中心とし
て説明する。また、べき乗剰余演算部36bは、べき乗
剰余演算部16bと同一の構成を有すので、説明を省略
する。
【0111】(CPU101)CPU101は、べき乗
剰余演算A**k mod pの最初において、以下を
実行する。・CPU101は、A**3、A**5、・
・・、A**(2m−1) mod pを計算する。次
に、CPU101は、A、A**3、A**5、・・
・、A**(2m−1) mod pを、それぞれ、変
数A0 、A1 、A2 、・・・、Am-1 に代入する。
【0112】(DMA制御部106)DMA制御部10
6は、k’i =0のときには、B1 =1と設定する。 (制御部401)初期化指示を受け取ると、制御部40
1は、RAM403に確保されている変数Xに1を設定
し、メモリ部402に確保されている変数B2 に1を設
定する。
【0113】(演算部404)演算指示を受け取ると、
演算部404は、RAM403から変数Xを読み出し、
X**2 mod pを演算し、その演算結果をRAM
403の変数Xに上書きする。次に、演算部404は、
RAM403から変数Xを読み出し、X×B2mod
pを演算し、その演算結果をRAM403の変数Xに上
書きする。
【0114】2.4 ユーザA装置10bの詳細の動作 次に、ユーザA装置10bの詳細の動作について、特
に、べき乗剰余演算部16bの詳細の動作について、図
11に示すフローチャートを用いて説明する。なお、こ
こでは、図5に示すフローチャートとの相違点を中心と
して説明する。
【0115】初期化指示を受け取ると、制御部401
は、RAM403に確保されている変数Xに0を設定
し、メモリ部402に確保されている変数B2 に1を設
定する(ステップS202b)。CPU101は、RA
M102上に変数A0 、A1 、・・・、Am-1 を記憶す
るための領域を確保し、m=2W-1 を計算し、A**
3、A**5、・・・、A**(2m−1) mod
pを計算し、A、A**3、A**5、・・・、A**
(2m−1) mod pを、それぞれ、RAM102
上の領域に確保された変数A0 、A1 、A2 、・・・、
m-1 に代入する(ステップS204b)。
【0116】DMA制御部106は、RAM102に記
憶されているAk’ i を、データバス111及びアド
レスバス112を介して転送することにより、コプロセ
ッサ40のメモリ部402内の変数B1 に設定する。た
だし、k’i =0のときには、B1 =1と設定する(ス
テップS209b)。演算部404は、X=X**2
mod pを演算し(ステップS210b)、X=X×
2 mod pを演算する(ステップS211b)。
【0117】3.まとめ 以上説明したように、上記の実施の形態によると、コプ
ロセッサの外部に、スモールウィンドウ法に必要となる
比較的大きなテーブルを用意し、このテーブル内のデー
タの選択とコプロセッサへの転送を、コプロセッサでの
演算と並列して行う。またCPUとコプロセッサの間の
データ転送をネックにしないために、演算のための領域
をコプロセッサに2バンク用意する。
【0118】すなわち本発明のべき乗剰余演算装置は、
予め定められた正の整数p、k、およびp未満の正の整
数Aに対して、Ak mod pを求めるべき乗剰余演算
装置であって、正の整数A、pを元に計算された一つ、
あるいは複数の被演算値候補を保持する被演算値候補記
憶部と、被演算値を保持する第1の被演算値保持部と第
2の被演算値保持部と、べき乗剰余演算の中間値を保持
する中間値保持部と、中間値を初期値に設定する中間値
初期設定部と、正の整数kを上位から走査し、整数kの
ある部分的なビットパターンに対応して、被演算値候補
記憶部から対応する値を選択してこれを被演算値とする
被演算値選択部と、前記被演算値選択部の選択した被演
算値を、前記被演算値候補記憶部から読み取り、前記第
1の被演算値保持部、もしくは前記第2の被演算値保持
部のいずれかに転送する被演算値転送部と、前記被演算
値転送部が転送先として使用していない前記第1の被演
算値保持部、もしくは第2の被演算値保持部から被演算
値を読み取り、さらに前記中間値保持部から中間値を読
み取り、整数pを用いて所定の中間値演算を実施した結
果を再び中間値保持部に書き込む中間値更新部と、前記
被演算値転送部の使用する被演算値保持部と、前記中間
値更新部が使用する被演算値保持部を交替させる被演算
値交替部と、前記中間値更新部が中間値を演算している
のと並列に、前記演算値選択部、前記被演算値転送部が
次の中間値演算のための被演算値を転送するよう制御す
る並列処理制御部と、正の整数kに対する演算を全て終
了した後、前記中間値保持部の保持している値を演算結
果として出力する演算結果出力部とを備えたことを特徴
とする。
【0119】この構成により、大量のテーブルは、被演
算値選択部、被演算値転送部がアクセスできれば良く、
コプロセッサにより実現される中間値更新部は、第1の
被演算値保持部、第2の被演算値保持部、中間値保持部
のみの小容量メモリだけアクセスできれば良い。以上の
ように本発明によれば、コプロセッサがアクセスできる
領域を少なくしながら、高速なべき乗演算方式が実現で
きる。またコプロセッサ側に演算値格納部を2バンク設
け、それを切り替えることによってCPUとコプロセッ
サの間のデータ転送を乗算等の演算と並列に実行するこ
とができる。このことによって高速なべき乗演算方式が
実現できる。
【0120】また、安全向上のために、演算のビット幅
を増加したときも、コプロセッサ側で必要となるデータ
量は、中間値保持部、被演算値保持部が、そのビット幅
だけ増加するだけで、テーブル部分の増加は、CPU側で
カバーできる。これらの効果によりべき乗剰余演算速度
を高速に実行でき、回路規模の小さなコプロセッサが実
現できる。
【0121】4.その他の変形例 なお、本発明を上記の実施の形態に基づいて説明してき
たが、本発明は、上記の実施の形態に限定されないのは
もちろんである。以下のような場合も本発明に含まれ
る。 (1)ユーザA装置10bのべき乗剰余演算部16bに
おいて、べき乗剰余演算を行う代わりに、剰余を伴わな
いべき乗演算を行うとしてもよい。
【0122】剰余を伴わないべき乗演算を行う場合につ
いて、以下において説明する。なお、ここでは、図11
に示すフローチャートとの相違点を中心として、図12
に示すフローチャートを用いて説明する。CPU101
は、RAM102上に変数A0 、A1 、・・・、Am-1
を記憶するための領域を確保し、m=2W-1 を計算し、
A**3、A**5、・・・、A**(2m−1)を計
算し、A、A**3、A**5、・・・、A**(2m
−1)を、それぞれ、RAM102上の領域に確保され
た変数A0 、A1 、A2 、・・・、Am-1 に代入する
(ステップS204c)。
【0123】演算部404は、X=X**2を演算し
(ステップS210c)、X=X×B 2 を演算する(ス
テップS211c)。 (2)上記の実施の形態では、例えば、Ak を計算する
場合に、kの上位桁から順に下位桁へ向かって演算を行
うようにしているが、次に示すように、上位桁から順に
下位桁へ向かって上記の実施の形態に示すようにして演
算を行い、並行して、下位桁から上位桁へ向かってCP
U101のみにより演算を行うようにしてもよい。以下
に詳細を示す。
【0124】ここで、k=[kn-1 n-2 n-3 ・・・
0 ](kn-1 、kn-2 、kn-3 、・・・、k0 は、そ
れぞれ、0又は1)とする。kを上位の(n−x)桁と
下位のx桁に分割し、上位の(n−x)桁とx個の0と
からなるkH を生成し、(n−x)個の0と、下位のx
桁とからなるkL を生成する。kH とkL とは次に示す
ように表現される。
【0125】 kH =[kn-1 n-2 n-3 ・・・kx 0 0・・・0] kL =[0 0・・・・・・・・・0 kx-1 ・・・k0 ] A**kH を上記の実施の形態に示すように算出する。
一方、A**kL をCPU101の空き時間において、
CPU101により算出する。最後に、CPU101に
よりA**k=A**kH ×A**kL を算出する。
【0126】また、最初から分割をせずに、上位と下位
とから並行して、上記の実施の形態に示す演算と、CP
U101のみによる演算とを並行して行い、同じビット
位置の処理に到達した時点で最終計算を行うようにして
もよい。詳細について、図13及び図14に示すフロー
チャートを用いて説明する。CPU101は、データバ
ス111及びアドレスバス112を介して、コプロセッ
サ40に対して、初期化指示を出力する(ステップS2
01)。
【0127】初期化指示を受け取ると、制御部401
は、RAM403に確保されている変数Xに1を設定
し、メモリ部402に確保されている変数B2 に1を設
定する(ステップS202d)。CPU101は、変数
iに値n−1を代入し、変数kn+1 、kn 、k-1、k-2
に0の値を代入し(ステップS203)、変数Yに1の
値を代入し、変数CにAを代入し、変数jに0を代入す
る(ステップS301)。次に、CPU101は、RA
M102上に変数A0 、A1 、A2 、A3 、・・・、A
m-1 を記憶するための領域を確保し、m=2W-1 を計算
し、A**3、A**5、・・・、A**(2m−1)
を計算し、A、A**3、A**5、・・・、A**
(2m−1)を、それぞれ、RAM102上の領域に確
保された変数A0 、A1 、A2 、A3、・・・、Am-1
に代入する(ステップS204c)。
【0128】次に、CPU101は、データバス111
及びアドレスバス112を介して、演算指示をコプロセ
ッサ40へ出力する(ステップS208)。次に、CP
U101は、変数iが変数j以上であるか否かを判断
し、変数iが変数j以上であると判断する場合には(ス
テップS205d)、ki をk’iに変換し(ステップ
S206)、データバス111及びアドレスバス112
を介して、DMA転送指示をDMA制御部106へ出力
する(ステップS207)。
【0129】CPU101からDMA転送指示を受け取
ると(ステップS207)、DMA制御部106は、R
AM102に記憶されているAk’ i を、データバス
111及びアドレスバス112を介して転送することに
より、コプロセッサ40のメモリ部402内の変数B1
に設定する(ステップS209d)。変数B1 への設定
が完了すると、DMA制御部106は、転送完了を示す
情報をコプロセッサ40の制御部401へ出力する(ス
テップS212)。
【0130】演算指示を受け取ると(ステップS20
8)、制御部401は、演算部404に対して演算指示
を出力し(ステップS221)、演算部404は、X=
X**2を演算し(ステップS210d)、X=X×B
2 を演算し(ステップS211d)、上記の演算が完了
すると、制御部401に対して演算完了を出力する(ス
テップS222)。
【0131】演算完了及び転送完了を受け取ると(ステ
ップS212及びステップS222)、制御部401
は、メモリ部402に対してメモリの切換の指示を出力
し、次に、メモリ部402は、第1接続状態にあるとき
は、第2接続状態に切り換え、また、第2接続状態にあ
るときは、第1接続状態に切り換える(ステップS21
3)。次に、制御部401は、演算完了を示す情報をC
PU101へ出力する(ステップS214)。
【0132】次に、CPU101は、変数iから1の値
を減じ(ステップS215)、次に、ステップS205
dへ戻って処理を繰り返す。また、変数iが変数j以上
であると判断する場合には(ステップS205d)、C
PU101は、変数C=C**2を算出し(ステップS
311)、kj =1であるなら(ステップS312)、
Y=Y×Cを算出する(ステップS313)。CPU1
01は、変数jに1の値を加算し(ステップS31
4)、ステップS205dに戻る。
【0133】次に、変数iが変数jより小さいと判断す
る場合には(ステップS205d)、CPU101は、
RAM403上に記憶されている変数Xを読み出して、
変数Zに代入し(ステップS321)、変数iが0以上
であるなら(ステップS322)、Z=Z**2を算出
し(ステップS323)、変数iから1の値を減じ(ス
テップS324)、次に、ステップS322へ戻って処
理を繰り返す。
【0134】次に、変数iが0より小さい場合には(ス
テップS322)、CPU1は、演算完了を受け取ると
(ステップS214)、Z=Z×Yを算出し(ステップ
S325)、次に、Zをべき倍演算k*Aの演算結果と
してRAM102の所定の領域に書き込み(ステップS
326)、倍演算k*Aの演算を終了する。 (3)上記のデジタル署名システム1では、CPU10
1は、3*A、5*A、・・・、(2m−1)*Aを計
算するとしているが、これらの3*A、5*A、・・
・、(2m−1)*Aは、予め計算されてRAM102
上に記憶されているとしていもよい。鍵共有システム1
bにおいても同様である。
【0135】(4)楕円べき倍演算及びべき乗剰余演算
は、次に示すような暗号技術を応用した秘密通信システ
ム、認証システム、又は鍵交換システムに適用すること
ができる。例えば、秘密通信システムは、メッセージを
他人に知られないように、伝達する。
【0136】認証システムは、メッセージが自称どおり
の人物により送られてきたこと、及びそのメッセージが
改竄されなかったことを検証し、データ又は施設へのア
クセス権を持つことを証明し、自分が主張どおりの人物
であることを証明し、または何かに同意したのに同意し
ていないと主張する者に対抗して否認を防止する。鍵交
換システムは、秘密鍵暗号システムで使用するための秘
密鍵を、他人に知られないように、交換する。
【0137】これらのシステムにおいては、有限体上の
離散対数問題、又は楕円曲線上の離散対数問題を安全性
の根拠としている。 (5)上記の実施の形態において、図5のフローチャー
トに示すように、kiのk’i への変換を行った後で、
コプロセッサによる演算とDMA転送とを並列して行う
としているが、コプロセッサによる演算とDMA転送と
を並列して行った後で、ki のk’i への変換を行うと
してもよい。
【0138】また、上記の実施の形態では、1ビットず
つ検査してゆく構成としたが、スモールウィンドウ法で
は0となるビットが複数連続するパターンが出てくる。
従ってそのようなパターン時には複数のビットをとば
し、その数だけ2乗算剰余を行う構成でも良い。また、
上記の実施の形態では、被演算値のDMA転送を必ず行
う構成としたが、変換されたべき値の値によっては転送
を行わず、その際には乗算剰余も行わない構成としても
良い。
【0139】また、上記の実施の形態では、スモールウ
ィンドウ法を用いた例を示したが、バイナリ法、くし型
法などの演算方法を用いても良い。 (6)デジタル署名システム1において、次に示すよう
に構成してもよい。CPU101において、図6に示す
i からk’i への変換プロセスにおいて、変換により
生成されるk’i により特定されるAk’i が0である
ことが、kを構成する一部分のビット列を用いて判定で
きる場合において、具体的には、図6のフローチャート
に示すステップS405の判断において、Noの場合
に、CPU101は、DMA制御部106に対して、D
MA転送指示を出力せず、繰り返しの次のステップにお
いて、コプロセッサ40に対して、X=2*X(ステッ
プS210)と、X=X+B2 (ステップS210)の
演算を行うように指示する代わりに、X=2*XとX=
X+0との演算を行うように指示し、コプロセッサ40
は、前記指示を受け取ると、X=2*Xと、X=X+0
との演算を行うようにしてもよい。
【0140】なお、鍵共有システム1bにおいても同様
である。 (7)これまでの説明では、CPU、RAM、DMA、
コプロセッサを用いた構成について説明してきたが、同
様の機能を持つものであればどのようなものを用いても
良い。例えばRAMの代わりにHDを用いたり、コプロ
セッサの代わりにハードウェアアクセラレータを用いて
も良い。
【0141】(8)コプロセッサの外部にべき乗演算を
高速に行うスモールウィンドウ法に必要となる比較的大
きなテーブルを用意する。そしてテーブルの値からの選
択とコプロセッサへの転送を、コプロセッサでの多倍長
演算と並列して行う。またCPUとコプロセッサの間の
データ転送をネックとしないために、演算に用いる多倍
長値のための領域をコプロセッサに2バンク用意する。
そしてデータ転送に一方のバンクを用いている間、コプ
ロセッサの演算に他方のバンクを用いる。コプロセッサ
の演算が終了し次第、バンクを切り替え、既に転送され
ている値をコプロセッサでの演算に用いると同時に、次
の演算のためのデータ転送を行う。
【0142】(9)上記において説明した自然数体上の
べき乗演算Ak 、有限体上のべき乗剰余演算Ak 及び楕
円曲線上のべき倍演算k*Aの上位の概念として、群上
のべき演算k&Aを定義することができる。また、有限
体上のべき乗演算は、剰余体上のべき乗剰余演算の一種
である。自然数体上のべき乗演算Ak 及び剰余体上のべ
き乗剰余演算Ak は、それぞれ、単位元「1」×Aから
なる乗算を、k回繰り返す演算である。また、楕円曲線
上のべき倍演算k*Aは、単位元である零元「0」+A
からなる加算を、k回繰り返す演算である。これらの乗
算及び加算の上位概念は、2項演算である。
【0143】(10)本発明は、上記に示す方法である
としてもよい。また、これらの方法をコンピュータによ
り実現するコンピュータプログラムであるとしてもよい
し、前記コンピュータプログラムからなるデジタル信号
であるとしてもよい。また、本発明は、前記コンピュー
タプログラム又は前記デジタル信号をコンピュータ読み
取り可能な記録媒体、例えば、フレキシブルディスク、
ハードディスク、CD―ROM、MO、DVD、DVD
−ROM、DVD−RAM、半導体メモリなど、に記録
したものとしてもよい。また、これらの記録媒体に記録
されている前記コンピュータプログラム又は前記デジタ
ル信号であるとしてもよい。
【0144】また、本発明は、前記コンピュータプログ
ラム又は前記デジタル信号を、電気通信回線、無線又は
有線通信回線、インターネットを代表とするネットワー
ク等を経由して伝送するものとしてもよい。また、本発
明は、マイクロプロセッサとメモリとを備えたコンピュ
ータシステムであって、前記メモリは、上記コンピュー
タプログラムを記憶しており、前記マイクロプロセッサ
は、前記コンピュータプログラムに従って動作するとし
てもよい。
【0145】また、前記プログラム又は前記デジタル信
号を前記記録媒体に記録して移送することにより、又は
前記プログラム又は前記デジタル信号を前記ネットワー
ク等を経由して移送することにより、独立した他のコン
ピュータシステムにより実施するとしてもよい。 (11)上記実施の形態及び上記変形例をそれぞれ組み
合わせるとしてもよい。
【0146】
【発明の効果】上記目的を達成するために、本発明は、
群上の離散対数問題を解くことが計算量の上で困難であ
ることを根拠として、べき演算k&Aを演算することに
より所定の情報を安全かつ確実に扱う情報セキュリティ
装置であって、初期化手段、演算手段、格納手段、繰返
制御手段及び交換手段を含み、前記群は、所定の集合と
前記集合の元を用いる2項演算とからなり、前記べき演
算k&Aは、前記群の単位元に対して前記群の元Aを用
いた2項演算をk回繰り返す演算であり、前記離散対数
問題は、群の元Y=k&Aとなるような元kが存在する
なら、元kを求める問題であり、前記初期化手段は、変
数X及び変数B2 にそれぞれ初期値として前記群の単位
元を格納し、前記繰返制御手段は、2進数表現する場合
における元kのビット数分だけ、前記演算手段、前記格
納手段及び前記交換手段に対して、演算と格納と交換と
からなるステップを繰り返し実行するよう制御すること
により、べき演算k&Aを演算し、べき演算k&Aの演
算結果は、前記繰返しの最後に変数Xに格納され、前記
演算手段は、変数Xと同一変数Xとを用いた2項演算を
行い、その演算結果と変数B2 に格納されている被演算
値としての値とを用いた2項演算を行って、その演算結
果を変数Xに格納し、前記格納手段は、前記演算手段に
よる前記演算処理が行われる時間帯において、並行し
て、次のステップにおいて前記演算手段で用いられる被
演算値を選択し、選択した被演算値を変数B1 へ格納
し、前記交換手段は、前記演算手段による演算処理及び
前記格納手段による格納が終了すると、変数B2 の値と
変数B1 の値とを入れ換える。
【0147】この構成によると、高速なべき演算方法を
実行しながら、演算手段による2項演算と、格納手段に
よる次のステップの演算手段において用いられる被演算
値の格納とを並行して行うことができる。これにより、
より高速のべき演算が実現できる。ここで、前記格納手
段は、1個又は所定値より小さい複数個の候補値を記憶
している候補値記憶部と、元kを2進数表現する場合に
おけるビット列の一部分を用いて、前記候補値から1個
の候補値を、次のステップにおいて前記演算手段で用い
られる被演算値として選択する選択部と、前記演算手段
による前記演算処理が行われる時間帯において、並行し
て、選択した被演算値を、変数B1 へ格納するデータ格
納部とを含む。また、前記繰返制御手段は、元kを2進
数表現する場合におけるビット列の上位側から下位側へ
向かって、演算と格納と交換とからなるステップを繰り
返し実行するよう制御する。また、前記選択部は、元k
を2進数表現する場合におけるビット列の一部分が特定
のビット列パターンである場合に、被演算値の選択を抑
制し、前記データ格納部は、前記選択部により被演算値
の選択が抑制された場合、選択した被演算値の変数B1
への格納を抑制し、前記演算手段は、前記データ格納部
により被演算値の変数B1 への格納が抑制される場合
に、次のステップにおいて、変数Xと同一変数Xとを用
いた2項演算を行い、その演算結果と単位元とを用いた
2項演算を行って、その演算結果を変数Xに格納する。
【0148】この構成によると、コプロセッサがアクセ
スできる領域を少なくしながら、CPUとコプロセッサ
の間のデータ転送と、コプロセッサによる2項演算と並
列に実行することができる。これにより、より高速なべ
き演算が実現できる。
【図面の簡単な説明】
【図1】本発明の1の実施の形態としてのデジタル署名
システム1の構成を示すブロック図である。
【図2】デジタル署名システム1によるデジタル署名の
動作を示すフローチャートである。
【図3】ユーザA装置10の構成を示すブロック図であ
る。
【図4】ユーザA装置10のCPU、DMA制御部及び
コプロセッサによる楕円べき倍演算の動作を示すフロー
チャートである。
【図5】ユーザA装置10による楕円べき倍演算の動作
を示すフローチャートである。
【図6】ki をk’iに変換する動作の詳細を示すフロ
ーチャートである。
【図7】従来技術のCPUとコプロセッサによる演算処
理のタイミングを示すタイムチャートである。
【図8】ユーザA装置10のCPU、DMA制御部及び
コプロセッサによる演算処理のタイミングを示すタイム
チャートである。
【図9】本発明の別の実施の形態としての鍵共有システ
ム1bの構成を示すブロック図である。
【図10】鍵共有システム1bによる鍵共有の動作を示
すフローチャートである。
【図11】鍵共有システム1bにおけるべき乗剰余演算
の動作を示すフローチャートである。
【図12】さらに別の実施の形態の装置によるべき乗演
算の動作を示すフローチャートである。
【図13】さらに別の実施の形態の装置によるべき乗演
算の動作を示すフローチャートである。図14へ続く。
【図14】前記実施の形態の装置によるべき乗演算の動
作を示すフローチャートである。図13から続く。
【符号の説明】
1 デジタル署名システム 2 インターネット 10 ユーザA装置 11 メッセージ記憶部 12 署名部 13 送受信部 14 べき倍演算部 20 管理センタ装置 21 情報記憶部 22 公開鍵生成部 23 送受信部 24 べき倍演算部 30 ユーザB装置 31 メッセージ記憶部 32 検証部 33 送受信部 34 べき倍演算部 40 コプロセッサ 101 CPU 102 RAM 103 表示部 104 入力部 105 送受信部 106 DMA制御部 401 制御部 402 メモリ部 402a メモリ領域 402b メモリ領域 403 RAM 404 演算部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中野 稔久 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5J104 AA18 AA22 JA22 JA25 NA18

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】 群上の離散対数問題を解くことが計算量
    の上で困難であることを根拠として、べき演算k&Aを
    演算することにより所定の情報を安全かつ確実に扱う情
    報セキュリティ装置であって、 初期化手段、演算手段、格納手段、繰返制御手段及び交
    換手段を含み、 前記群は、所定の集合と前記集合の元を用いる2項演算
    とからなり、前記べき演算k&Aは、前記群の単位元に
    対して前記群の元Aを用いた2項演算をk回繰り返す演
    算であり、前記離散対数問題は、群の元Y=k&Aとな
    るような元kが存在するなら、元kを求める問題であ
    り、 前記初期化手段は、変数X及び変数B2 にそれぞれ初期
    値として前記群の単位元を格納し、 前記繰返制御手段は、2進数表現する場合における元k
    のビット数分だけ、前記演算手段、前記格納手段及び前
    記交換手段に対して、演算と格納と交換とからなるステ
    ップを繰り返し実行するよう制御することにより、べき
    演算k&Aを演算し、べき演算k&Aの演算結果は、前
    記繰返しの最後に変数Xに格納され、 前記演算手段は、変数Xと同一変数Xとを用いた2項演
    算を行い、その演算結果と変数B2 に格納されている被
    演算値としての値とを用いた2項演算を行って、その演
    算結果を変数Xに格納し、 前記格納手段は、前記演算手段による前記演算処理が行
    われる時間帯において、並行して、次のステップにおい
    て前記演算手段で用いられる被演算値を選択し、選択し
    た被演算値を変数B1 へ格納し、 前記交換手段は、前記演算手段による演算処理及び前記
    格納手段による格納が終了すると、変数B2 の値と変数
    1 の値とを入れ換えることを特徴とする情報セキュリ
    ティ装置。
  2. 【請求項2】 前記格納手段は、 1個又は所定値より小さい複数個の候補値を記憶してい
    る候補値記憶部と、 元kを2進数表現する場合におけるビット列の一部分を
    用いて、前記候補値から1個の候補値を、次のステップ
    において前記演算手段で用いられる被演算値として選択
    する選択部と、 前記演算手段による前記演算処理が行われる時間帯にお
    いて、並行して、選択した被演算値を、変数B1 へ格納
    するデータ格納部とを含むことを特徴とする請求項1に
    記載の情報セキュリティ装置。
  3. 【請求項3】 前記候補値記憶部が記憶している各候補
    値は、所定値より小さい数hを用いるべき演算h&Aの
    演算結果であることを特徴とする請求項2に記載の情報
    セキュリティ装置。
  4. 【請求項4】 前記繰返制御手段は、元kを2進数表現
    する場合におけるビット列の上位側から下位側へ向かっ
    て、演算と格納と交換とからなるステップを繰り返し実
    行するよう制御することを特徴とする請求項3に記載の
    情報セキュリティ装置。
  5. 【請求項5】 前記選択部は、元kを2進数表現する場
    合におけるビット列の一部分が特定のビット列パターン
    である場合に、被演算値の選択を抑制し、 前記データ格納部は、前記選択部により被演算値の選択
    が抑制された場合、選択した被演算値の変数B1 への格
    納を抑制し、 前記演算手段は、前記データ格納部により被演算値の変
    数B1 への格納が抑制される場合に、次のステップにお
    いて、変数Xと同一変数Xとを用いた2項演算を行い、
    その演算結果と単位元とを用いた2項演算を行って、そ
    の演算結果を変数Xに格納することを特徴とする請求項
    4に記載の情報セキュリティ装置。
  6. 【請求項6】 前記情報セキュリティ装置は、汎用プロ
    セッサと、専用プロセッサと、第1メモリと、バスと、
    DMA制御部とから構成されるコンピュータシステムで
    あり、前記汎用プロセッサ、前記専用プロセッサ、前記
    メモリ及び前記DMA制御部は、前記バスを介して相互
    に接続されており、 前記第1メモリは、コンピュータプログラム、元k、元
    A、被演算値を記憶するための領域を含み、 専用プロセッサは、その内部に、変数X、変数B1 、変
    数B2 を記憶するための第2メモリと前記演算手段と前
    記交換手段とを備え、 前記初期化手段は、コンピュータプログラムに従って、
    汎用プロセッサが動作することにより、バスを介して、
    専用プロセッサ内部の変数X、及び変数B2 を初期化
    し、 前記繰返制御手段は、コンピュータプログラムに従っ
    て、汎用プロセッサが動作することにより、ステップを
    繰り返すように制御し、 前記格納手段は、前記DMA制御部が汎用プロセッサの
    指示により、第1メモリに記憶されている被演算値をバ
    スを介して、専用プロセッサ内部の変数B1 へ転送する
    ことを特徴とする請求項4に記載の情報セキュリティ装
    置。
  7. 【請求項7】 前記繰返制御手段は、元kを2進数表現
    する場合におけるビット列の上位側の上位ビット列につ
    いて、前記上位ビット列のビット数分だけ、前記演算手
    段、前記格納手段及び前記交換手段に対して、演算と格
    納と交換とからなるステップを繰り返し実行するよう制
    御し、べき演算を演算し、 前記情報セキュリティ装置は、さらに、バイナリ法演算
    部と2項演算部とを含み、 前記バイナリ法演算部は、コンピュータプログラムに従
    って、汎用プロセッサが動作することにより、前記ビッ
    ト列の下位側の下位ビット列について、バイナリ法を用
    いて、前記下位ビット列の下位側から上位側に向かっ
    て、べき演算を演算し、演算結果は、変数Zに格納さ
    れ、変数Zは、前記第1メモリに確保され、 前記2項演算部は、コンピュータプログラムに従って、
    汎用プロセッサが動作することにより、変数Xと変数Z
    とに対して2項演算を施して、べき演算k&Aの演算結
    果を得ることを特徴とする請求項6に記載の情報セキュ
    リティ装置。
  8. 【請求項8】 前記群は、楕円曲線であり、前記単位元
    は、楕円曲線上の無限遠点である零元であり、前記べき
    演算k&Aは、楕円曲線上の乗算k×Aであり、前記2
    項演算は、楕円曲線上の加算であり、前記離散対数問題
    は、楕円曲線の元Y=k×Aとなるような元kが存在す
    るなら、元kを求める問題であり、 前記初期化手段は、変数X及び変数B2 にそれぞれ楕円
    曲線上の零元を格納し、 前記繰返制御手段は、前記ステップを繰り返し実行する
    よう制御することにより、楕円曲線上の乗算k×Aを演
    算し、乗算k×Aの演算結果は、前記繰返しの最後に変
    数Xに格納され、 前記演算手段は、変数Xと同一変数Xとの楕円曲線上の
    加算を行い、その演算結果と変数B2 に格納されている
    値との楕円曲線上の加算を行って、その演算結果を変数
    Xに格納することを特徴とする請求項4に記載の情報セ
    キュリティ装置。
  9. 【請求項9】 前記群は、剰余体であり、前記単位元
    は、整数1であり、前記べき演算k&Aは、剰余体上の
    べき乗算Ak であり、前記2項演算は、剰余体上の乗算
    であり、前記離散対数問題は、剰余体の元Y=Ak とな
    るような元kが存在するなら、元kを求める問題であ
    り、 前記初期化手段は、変数X及び変数B2 にそれぞれ整数
    1を格納し、 前記繰返制御手段は、前記ステップを繰り返し実行する
    よう制御することにより、剰余体上のべき乗算Ak を演
    算し、べき乗算Ak の演算結果は、前記繰返しの最後に
    変数Xに格納され、 前記演算手段は、変数Xと同一変数Xとの剰余体上の乗
    算を行い、その演算結果と変数B2 に格納されている値
    との剰余体上の乗算を行って、その演算結果を変数Xに
    格納することを特徴とする請求項4に記載の情報セキュ
    リティ装置。
  10. 【請求項10】 前記群は、自然数であり、前記単位元
    は、整数1であり、前記べき演算k&Aは、自然数上の
    べき乗算Ak であり、前記2項演算は、自然数上の乗算
    であり、前記離散対数問題は、自然数の元Y=Ak とな
    るような元kが存在するなら、元kを求める問題であ
    り、 前記初期化手段は、変数X及び変数B2 にそれぞれ整数
    1を格納し、 前記繰返制御手段は、前記ステップを繰り返し実行する
    よう制御することにより、自然数上のべき乗算Ak を演
    算し、べき乗算Ak の演算結果は、前記繰返しの最後に
    変数Xに格納され、 前記演算手段は、変数Xと同一変数Xとの自然数上の乗
    算を行い、その演算結果と変数B2 に格納されている値
    との自然数上の乗算を行って、その演算結果を変数Xに
    格納することを特徴とする請求項4に記載の情報セキュ
    リティ装置。
  11. 【請求項11】 前記情報セキュリィ装置は、べき演算
    k&Aを演算することにより所定の情報を暗号化又は復
    号することを特徴とする請求項4に記載の情報セキュリ
    ティ装置。
  12. 【請求項12】 前記情報セキュリィ装置は、べき演算
    k&Aを演算することにより所定の情報にデジタル署名
    を施し、又は署名を検証することを特徴とする請求項4
    に記載の情報セキュリティ装置。
  13. 【請求項13】 前記情報セキュリィ装置は、べき演算
    k&Aを演算することにより所定の情報を用いて、他の
    装置との間で同一の鍵を安全に共有することを特徴とす
    る請求項4に記載の情報セキュリティ装置。
  14. 【請求項14】 群上の離散対数問題を解くことが計算
    量の上で困難であることを根拠として、べき演算k&A
    を演算することにより所定の情報を安全かつ確実に扱う
    情報セキュリティ装置で用いられる情報セキュリティ方
    法であって、 前記情報セキュリティ装置は、初期化手段、演算手段、
    格納手段、繰返制御手段及び交換手段を含み、 前記群は、所定の集合と前記集合の元を用いる2項演算
    とからなり、前記べき演算k&Aは、前記群の単位元に
    対して前記群の元Aを用いた2項演算をk回繰り返す演
    算であり、前記離散対数問題は、群の元Y=k&Aとな
    るような元kが存在するなら、元kを求める問題であ
    り、 前記情報セキュリティ方法は、初期化ステップ及び繰返
    制御ステップを含み、 前記初期化ステップは、前記初期化手段により、変数X
    及び変数B2 にそれぞれ初期値として前記群の単位元を
    格納し、 前記繰返制御ステップは、前記繰返制御手段により、2
    進数表現する場合における元kのビット数分だけ、前記
    演算手段、前記格納手段及び前記交換手段に対して、演
    算と格納と交換とからなるステップを繰り返し実行する
    よう制御することにより、べき演算k&Aを演算し、べ
    き演算k&Aの演算結果は、前記繰返しの最後に変数X
    に格納され、 前記演算手段は、変数Xと同一変数Xとを用いた2項演
    算を行い、その演算結果と変数B2 に格納されている被
    演算値としての値とを用いた2項演算を行って、その演
    算結果を変数Xに格納し、 前記格納手段は、前記演算手段による前記演算処理が行
    われる時間帯において、並行して、次のステップにおい
    て前記演算手段で用いられる被演算値を選択し、選択し
    た被演算値を変数B1 へ格納し、 前記交換手段は、前記演算手段による演算処理及び前記
    格納手段による格納が終了すると、変数B2 の値と変数
    1 の値とを入れ換えることを特徴とする情報セキュリ
    ティ方法。
  15. 【請求項15】 群上の離散対数問題を解くことが計算
    量の上で困難であることを根拠として、べき演算k&A
    を演算することにより所定の情報を安全かつ確実に扱う
    情報セキュリティ装置で用いられる情報セキュリティプ
    ログラムであって、 前記情報セキュリティ装置は、初期化手段、演算手段、
    格納手段、繰返制御手段及び交換手段を含み、 前記群は、所定の集合と前記集合の元を用いる2項演算
    とからなり、前記べき演算k&Aは、前記群の単位元に
    対して前記群の元Aを用いた2項演算をk回繰り返す演
    算であり、前記離散対数問題は、群の元Y=k&Aとな
    るような元kが存在するなら、元kを求める問題であ
    り、 前記情報セキュリティプログラムは、初期化ステップ及
    び繰返制御ステップを含み、 前記初期化ステップは、前記初期化手段により、変数X
    及び変数B2 にそれぞれ初期値として前記群の単位元を
    格納し、 前記繰返制御ステップは、前記繰返制御手段により、2
    進数表現する場合における元kのビット数分だけ、前記
    演算手段、前記格納手段及び前記交換手段に対して、演
    算と格納と交換とからなるステップを繰り返し実行する
    よう制御することにより、べき演算k&Aを演算し、べ
    き演算k&Aの演算結果は、前記繰返しの最後に変数X
    に格納され、 前記演算手段は、変数Xと同一変数Xとを用いた2項演
    算を行い、その演算結果と変数B2 に格納されている被
    演算値としての値とを用いた2項演算を行って、その演
    算結果を変数Xに格納し、 前記格納手段は、前記演算手段による前記演算処理が行
    われる時間帯において、並行して、次のステップにおい
    て前記演算手段で用いられる被演算値を選択し、選択し
    た被演算値を変数B1 へ格納し、 前記交換手段は、前記演算手段による演算処理及び前記
    格納手段による格納が終了すると、変数B2 の値と変数
    1 の値とを入れ換えることを特徴とする情報セキュリ
    ティプログラム。
  16. 【請求項16】 群上の離散対数問題を解くことが計算
    量の上で困難であることを根拠として、べき演算k&A
    を演算することにより所定の情報を安全かつ確実に扱う
    情報セキュリティ装置で用いられる情報セキュリティプ
    ログラムを記録しているコンピュータ読み取り可能な記
    録媒体であって、 前記情報セキュリティ装置は、初期化手段、演算手段、
    格納手段、繰返制御手段及び交換手段を含み、 前記群は、所定の集合と前記集合の元を用いる2項演算
    とからなり、前記べき演算k&Aは、前記群の単位元に
    対して前記群の元Aを用いた2項演算をk回繰り返す演
    算であり、前記離散対数問題は、群の元Y=k&Aとな
    るような元kが存在するなら、元kを求める問題であ
    り、 前記情報セキュリティプログラムは、初期化ステップ及
    び繰返制御ステップを含み、 前記初期化ステップは、前記初期化手段により、変数X
    及び変数B2 にそれぞれ初期値として前記群の単位元を
    格納し、 前記繰返制御ステップは、前記繰返制御手段により、2
    進数表現する場合における元kのビット数分だけ、前記
    演算手段、前記格納手段及び前記交換手段に対して、演
    算と格納と交換とからなるステップを繰り返し実行する
    よう制御することにより、べき演算k&Aを演算し、べ
    き演算k&Aの演算結果は、前記繰返しの最後に変数X
    に格納され、 前記演算手段は、変数Xと同一変数Xとを用いた2項演
    算を行い、その演算結果と変数B2 に格納されている被
    演算値としての値とを用いた2項演算を行って、その演
    算結果を変数Xに格納し、 前記格納手段は、前記演算手段による前記演算処理が行
    われる時間帯において、並行して、次のステップにおい
    て前記演算手段で用いられる被演算値を選択し、選択し
    た被演算値を変数B1 へ格納し、 前記交換手段は、前記演算手段による演算処理及び前記
    格納手段による格納が終了すると、変数B2 の値と変数
    1 の値とを入れ換えることを特徴とする記録媒体。
  17. 【請求項17】 自然数上のべき乗演算Ak を演算する
    べき乗演算装置であって、 前記べき乗演算装置は、初期化手段、演算手段、格納手
    段、繰返制御手段及び交換手段を含み、 前記離散対数問題は、自然数の元Y=Ak となるような
    元kが存在するなら、元kを求める問題であり、 前記初期化手段は、変数X及び変数B2 にそれぞれ初期
    値として整数1を格納し、 前記繰返制御手段は、2進数表現する場合における元k
    のビット数分だけ、前記演算手段、前記格納手段及び前
    記交換手段に対して、演算と格納と交換とからなるステ
    ップを繰り返し実行するよう制御することにより、べき
    乗演算Ak を演算し、べき乗演算Ak の演算結果は、前
    記繰返しの最後に変数Xに格納され、 前記演算手段は、変数Xと同一変数Xとを用いた乗算を
    行い、その演算結果と変数B2 に格納されている被演算
    値としての値とを用いて乗算を行って、その演算結果を
    変数Xに格納し、 前記格納手段は、前記演算手段による前記演算処理が行
    われる時間帯において、並行して、次のステップにおい
    て前記演算手段で用いられる被演算値を選択し、選択し
    た被演算値を変数B1 へ格納し、 前記交換手段は、前記演算手段による演算処理及び前記
    格納手段による格納が終了すると、変数B2 の値と変数
    1 の値とを入れ換えることを特徴とするべき乗演算装
    置。
  18. 【請求項18】 剰余体上のべき乗算Ak を演算するべ
    き乗剰余演算装置であって:前記べき乗剰余演算装置
    は、初期化手段、演算手段、格納手段、繰返制御手段及
    び交換手段を含み、 前記剰余体は、所定の集合と前記集合の元を用いる剰余
    体上の乗算とからなり、前記べき乗算Ak は、整数1に
    対して前記剰余体の元Aを用いた剰余体上の乗算をk回
    繰り返す演算であり、前記離散対数問題は、剰余体の元
    Y=Ak となるような元kが存在するなら、元kを求め
    る問題であり、 前記初期化手段は、変数X及び変数B2 にそれぞれ初期
    値として整数1を格納し、 前記繰返制御手段は、2進数表現する場合における元k
    のビット数分だけ、前記演算手段、前記格納手段及び前
    記交換手段に対して、演算と格納と交換とからなるステ
    ップを繰り返し実行するよう制御することにより、べき
    乗算Ak を演算し、べき乗算Ak の演算結果は、前記繰
    返しの最後に変数Xに格納され、 前記演算手段は、変数Xと同一変数Xとを用いた剰余体
    上の乗算を行い、その演算結果と変数B2 に格納されて
    いる被演算値としての値とを用いた剰余体上の乗算を行
    って、その演算結果を変数Xに格納し、 前記格納手段は、前記演算手段による前記演算処理が行
    われる時間帯において、並行して、次のステップにおい
    て前記演算手段で用いられる被演算値を選択し、選択し
    た被演算値を変数B1 へ格納し、 前記交換手段は、前記演算手段による演算処理及び前記
    格納手段による格納が終了すると、変数B2 の値と変数
    1 の値とを入れ換えることを特徴とするべき乗剰余演
    算装置。
  19. 【請求項19】 楕円曲線上の乗算k×Aを演算する楕
    円べき倍演算装置であって、 前記楕円べき倍演算装置は、初期化手段、演算手段、格
    納手段、繰返制御手段及び交換手段を含み、 前記楕円曲線は、所定の集合と前記集合の元を用いる楕
    円曲線上の加算とからなり、前記楕円曲線上の乗算k×
    Aは、前記楕円曲線の無限遠点である零元に対して前記
    楕円曲線の元Aを用いた楕円曲線上の加算をk回繰り返
    す演算であり、前記離散対数問題は、楕円曲線の元Y=
    k×Aとなるような元kが存在するなら、元kを求める
    問題であり、 前記初期化手段は、変数X及び変数B2 にそれぞれ初期
    値として前記楕円曲線の零元を格納し、 前記繰返制御手段は、2進数表現する場合における元k
    のビット数分だけ、前記演算手段、前記格納手段及び前
    記交換手段に対して、演算と格納と交換とからなるステ
    ップを繰り返し実行するよう制御することにより、楕円
    曲線上の乗算k×Aを演算し、楕円曲線上の乗算k×A
    の演算結果は、前記繰返しの最後に変数Xに格納され、 前記演算手段は、変数Xと同一変数Xとを用いた楕円曲
    線上の加算を行い、その演算結果と変数B2 に格納され
    ている被演算値としての値とを用いた楕円曲線上の加算
    を行って、その演算結果を変数Xに格納し、 前記格納手段は、前記演算手段による前記演算処理が行
    われる時間帯において、並行して、次のステップにおい
    て前記演算手段で用いられる被演算値を選択し、選択し
    た被演算値を変数B1 へ格納し、 前記交換手段は、前記演算手段による演算処理及び前記
    格納手段による格納が終了すると、変数B2 の値と変数
    1 の値とを入れ換えることを特徴とする楕円べき倍演
    算装置。
JP2002077843A 2001-03-28 2002-03-20 情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置 Withdrawn JP2002358012A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002077843A JP2002358012A (ja) 2001-03-28 2002-03-20 情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001092482 2001-03-28
JP2001-92482 2001-03-28
JP2002077843A JP2002358012A (ja) 2001-03-28 2002-03-20 情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置

Publications (1)

Publication Number Publication Date
JP2002358012A true JP2002358012A (ja) 2002-12-13

Family

ID=26612344

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002077843A Withdrawn JP2002358012A (ja) 2001-03-28 2002-03-20 情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置

Country Status (1)

Country Link
JP (1) JP2002358012A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252433A (ja) * 2003-01-28 2004-09-09 Matsushita Electric Ind Co Ltd 故障利用攻撃に対抗できる楕円べき倍演算装置及び情報セキュリティ装置
JP2008135816A (ja) * 2006-11-27 2008-06-12 Mitsubishi Electric Corp 鍵管理サーバ、端末、鍵共有システム、鍵配信プログラム、鍵受信プログラム、鍵配信方法及び鍵受信方法
JP2010014912A (ja) * 2008-07-02 2010-01-21 Nec Corp 署名生成装置、ならびに、署名検証装置
JP2011075611A (ja) * 2009-09-29 2011-04-14 Fujitsu Ltd 演算プログラム、演算方法、および演算装置
JP2011081695A (ja) * 2009-10-09 2011-04-21 Mitsubishi Electric Corp データ演算装置の制御回路及びデータ演算装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252433A (ja) * 2003-01-28 2004-09-09 Matsushita Electric Ind Co Ltd 故障利用攻撃に対抗できる楕円べき倍演算装置及び情報セキュリティ装置
JP4634046B2 (ja) * 2003-01-28 2011-02-16 パナソニック株式会社 故障利用攻撃に対抗できる楕円べき倍演算装置及び情報セキュリティ装置
JP2008135816A (ja) * 2006-11-27 2008-06-12 Mitsubishi Electric Corp 鍵管理サーバ、端末、鍵共有システム、鍵配信プログラム、鍵受信プログラム、鍵配信方法及び鍵受信方法
JP2010014912A (ja) * 2008-07-02 2010-01-21 Nec Corp 署名生成装置、ならびに、署名検証装置
JP2011075611A (ja) * 2009-09-29 2011-04-14 Fujitsu Ltd 演算プログラム、演算方法、および演算装置
JP2011081695A (ja) * 2009-10-09 2011-04-21 Mitsubishi Electric Corp データ演算装置の制御回路及びデータ演算装置

Similar Documents

Publication Publication Date Title
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
US8504602B2 (en) Modular multiplication processing apparatus
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
CN109299149B (zh) 数据查询方法、计算设备以及系统
JP2008293034A (ja) タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
JP2012023763A (ja) セキュリティ強化のための転置データ変換
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
US7167559B2 (en) Information security device, exponentiation device, modular exponentiation device, and elliptic curve exponentiation device
JP2002358012A (ja) 情報セキュリティ装置、べき乗演算装置、べき乗剰余演算装置及び楕円べき倍演算装置
JP2001051832A (ja) 乗算剰余演算方法および乗算剰余回路
JP2006023647A (ja) 乗算剰余演算器及び情報処理装置
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
KR102253211B1 (ko) 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법
KR20040050742A (ko) 소수체를 기반으로 하는 공개키 암호장치
KR20090090881A (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
EP1306748A2 (en) Modular squaring circuit, modular squaring method, and modular squaring program
KR20020094440A (ko) 유한체 곱셈장치
JP3881273B2 (ja) 暗号鍵生成装置、暗号鍵生成プログラムおよびそのプログラムを記録した記録媒体
CN117394982A (zh) 多密钥同态加密方法、计算方法、存储介质及计算机设备
Abebe et al. Lightweight integrated cryptosystem based on reconfigurable hardware for IoT security
CN116599648A (zh) 基于全同态加密的数据通用计算方法、装置、设备及介质
KR100840944B1 (ko) 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061121

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20061227