JP2002123171A - 暗号化・復号化回路 - Google Patents

暗号化・復号化回路

Info

Publication number
JP2002123171A
JP2002123171A JP2000315049A JP2000315049A JP2002123171A JP 2002123171 A JP2002123171 A JP 2002123171A JP 2000315049 A JP2000315049 A JP 2000315049A JP 2000315049 A JP2000315049 A JP 2000315049A JP 2002123171 A JP2002123171 A JP 2002123171A
Authority
JP
Japan
Prior art keywords
selector
output
selects
circuit
latch
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.)
Granted
Application number
JP2000315049A
Other languages
English (en)
Other versions
JP3795315B2 (ja
Inventor
Takashi Todaka
貴司 戸高
Satoru Kokuni
哲 小國
Naoki Hirayama
直紀 平山
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2000315049A priority Critical patent/JP3795315B2/ja
Publication of JP2002123171A publication Critical patent/JP2002123171A/ja
Application granted granted Critical
Publication of JP3795315B2 publication Critical patent/JP3795315B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 所定の暗号アルゴリズムで暗号化された暗号
文を復号化する、または平文を暗号化する回路におい
て、高速化を行うことにある。 【解決手段】 Multi2方式によるデータの暗号化・復号
化回路においては、2項の和に対して循環シフトを行う
演算をする箇所があり、この2項の和に対して循環シフ
トを行う演算は図に示すように4項の加減算だけで行う
ことができる。即ち、2項の和に対して循環シフトを行
う演算結果は、上記の2項の各項の循環シフトの結果を
加算し、これに上記各項に対してそれぞれ循環シフトを
行うビット数分だけ上位ビットを取り除いたもので加算
したときのキャリーを加え、その結果から、上記2項を
加減算した結果のキャリーに循環シフトを行うビット数
分だけ2を乗じた積を、引いた結果に等しくなる。そこ
で、暗号化・復号化回路における2項の和の循環シフト
回路を上記のように複数の加減算回路で構成している。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、平文を暗号化・復
号化する暗号化・復号化回路に係り、特に、暗号化・復
号化における演算速度を高速化する暗号化・復号化回路
に関する。
【0002】
【従来の技術】通信や記録等において情報を特定の相手
以外に知られないようにするために、従来から情報を暗
号化することが知られている。暗号化では、情報を意味
のわからない情報になるように暗号化し、その暗号化し
た情報を通信で用いたり、記録媒体等に記録する。そし
て、暗号化された情報に対して、復号化を行うことによ
り暗号化される以前の情報にする。このような暗号化・
復号化には、一般に秘密鍵方式と公開鍵方式の二つがあ
る。秘密鍵方式は、暗号化・復号化に用いる鍵が同一の
方式である。公開鍵方式は暗号化・復号化で異なる鍵を
用い、暗号化側または復号化側のどちらかの鍵が公開さ
れる方式である。
【0003】秘密鍵方式の暗号化・復号化方式には様々
なものがあり、その一つとして公開特許公報の特開平1-
276189において示される暗号アルゴリズムMulti2があ
る。Multi2方式の暗号化・復号化方法において、入力デ
ータおよび出力データは64ビットである。暗号化・復号
化に用いるワークキーは256ビットであり、これを32ビ
ットに分割して暗号化・復号化に用いる。暗号化・復号
化に用いるワークキーは64ビットのデータキーと256ビ
ットのシステムキーを用いて生成する。ワークキーを生
成することをキースケジュールと呼ぶ。図9はキースケ
ジュールの処理を表す。図10は暗号化処理を表す。図
11は復号化処理を表す。図9、図10、図11のπ
1、π2、π3、π4は、図2の基本関数の処理を表してい
る。またMulti2暗号方式は、ISO 8372やISO/IEC 10116
で定義されているElectronic Codebook (ECB) Mode、Ci
pher Block Chaining (CBC) Mode、Cipher Feedback(CF
B) Mode、Output Feedback (OFB) Modeを適用すること
ができる。Multi2暗号方式を実現する回路に関する従来
の技術について述べる。キースケジュール・暗号化・復
号化において行われる演算は図2に示す基本関数による
演算であるため、公開特許公報の特開平9-233066、特開
平9-230788において、それぞれ回路規模の削減のためキ
ースケジュール処理と復号化処理、キースケジュールと
暗号化処理を一つの演算器で実現している。
【0004】
【発明が解決しようとする課題】上記従来の技術で述べ
た発明はいずれも回路規模の削減を目的としており、キ
ースケージュール・暗号化・復号化に関して高速化する
発明はほとんどない。本発明の目的は、所定の暗号アル
ゴリズムで暗号化された暗号文を復号化する、または平
文を暗号化する回路において、高速化を行うことにあ
る。また、本発明の他の目的は、高速化と回路規模の削
減を両立させることである。
【0005】
【課題を解決するための手段】上記目的を達成するた
め、本発明のデータを暗号化・復号化する暗号化・復号
化回路において、キースケジュール・暗号化・復号化を
行うデータの項(以下、第1項という)とキースケジュ
ール・暗号化・復号化に使用するキーの項(以下、第2
項という)との2項の和を循環シフトし結果を出力する
回路を、前記第1項を循環シフトする第1の循環シフト
回路と、前記第2項を循環シフトする第2の循環シフト
回路と、前記各項からそれぞれ循環シフトを行うビット
数分だけ上位ビットを取り除いたそれぞれのデータを加
算する第1の加算回路と、前記第1の循環シフト回路の
出力と前記第2の循環シフト回路の出力と前記第1の加
算回路のキャリー出力を加算する第2の加算回路と、前
記2項を加減算する加減算回路と、該加減算回路のキャ
リー出力のそれぞれに対応して予め定められた値の内の
該加減算回路のキャリー出力に対応する値を前記第2の
加算回路の出力から減算する減算回路により構成するよ
うにしている。また、前記加減算回路のキャリー出力が
得られる前に、前記減算回路の出力として、前記加減算
回路のキャリー出力が0の場合と1の場合の二通りを平
行して求めておき、前記加減算回路の演算終了時に、前
記二通りの減算回路の出力から、該加減算回路のキャリ
ー出力に対応する出力を選択するようにしている。ま
た、データを暗号化・復号化する暗号化・復号化回路に
おいて、暗号化・復号化の演算前に既知の値となってい
るキースケジュール・暗号化・復号化に使用するキー
と、キースケジュール・暗号化・復号化の処理で定めら
れた定数と、キースケジュール・暗号化・復号化に使用
するキーに対して循環シフトを行った結果の3項を予め
加算する加算回路と、該加算回路による加算結果を記憶
する記憶装置を有し、演算開始後に、該記憶装置に保持
されているあらかじめ求めておいた値と、演算中に得ら
れた循環シフト対象の値と、該値を循環シフトした結果
との3項の和を、前記加算回路で求めるようにしてい
る。
【0006】
【発明の実施の形態】以下、本発明の実施の形態を図面
を参照して説明する。図2は本発明の暗号化・復号化・
キースケジュールで用いるアルゴリズムの基本関数の詳
細を示した図である。図2の基本関数において加減算、
循環シフト、加減算の順に演算が行われている箇所があ
る。ところで、2項の和に対して循環シフトを行う演算
は図3に示すように4項の加減算だけで行うことができ
る。即ち、2項の和に対して循環シフトを行う演算結果
は、上記の2項の各項の循環シフトの結果を加算し、こ
れに上記各項に対してそれぞれ循環シフトを行うビット
数分だけ上位ビットを取り除いたもので加算したときの
キャリーを加え、その結果から、上記2項を加減算した
結果のキャリーに循環シフトを行うビット数分だけ2を
乗じた積を、引いた結果に等しくなる。したがって、加
減算、循環シフト、加減算の順の演算は多項の加減算だ
けに置き換えることができる。演算が多項の加減算のみ
の場合、桁上げ保留加算器を用いることで演算の高速化
を行うことができる。これが本発明の効果の一つであ
る。
【0007】図2の基本関数に対して図4に示すように
ラッチL, R, Aを挿入し、ラッチ間の処理をStepと定義
する。図4のK1、K2、K3、K4は暗号化・復号化・キース
ケジュールに用いるキーである。図4の各Stepの処理は
図5に示す式で表すことができる。図5の各変数の値は
図6(暗号化)、図7(復号化)で示される。図6のSt
ep.1におけるラッチA, LにはStep.1の処理結果が格納
され、図にはその内容が示されている。Step.2,Ste
p.3,Step.4 についても同様である。また、図5のW
は図3の式を用いることで各Stepの演算を6項の加算で
表すことができる。なお、循環シフトのビット数nは図
6、7に示すように1あるいは2の値をとる。この各St
epで加算される値(上記6項の値)を図8に示す。図8
の第3項はキーを循環シフトした値、第4項はキーの値、
第5項は定数であり、暗号化・復号化・キースケジュー
ルの演算開始時には既知の値となっているため、暗号化
・復号化・キースケジュールの演算処理を行う前にあら
かじめ計算し、初期値として記憶しておくことができ
る。各Stepの処理は繰り返し行われるので、このように
しておけば繰り返すたびに第3項、第4項、第5項の和を
求める必要がなくなり演算の高速化と回路規模の削減を
実現できる。これが本発明の効果の一つである。
【0008】暗号化・復号化方法を実行する本発明の暗
号化・復号化・キースケジュール回路の実施の形態の概
略構成例を示すブロック図を図1に示す。図1で示され
るラッチはすべて同一のクロックで動作しており、32ビ
ット幅である。80、81で示されるCSAは桁上げ保留加算
器であり、図中のすべての構成要素は32ビット幅であ
る。図1のINPUTを通してレジスタファイル52、53に256
ビットのシステムキーや256ビットのワークキーが記憶
される。また、INPUTには暗号化時には平文が、復号化
時には暗号文が、キースケジュール時にはデータキーが
入力され、適切なラッチに記憶される。OUTPUTには暗号
化時には暗号文が、復号化時には平文が出力される。
【0009】次に、図1の動作をキースケジュールの場
合で説明する。暗号化・復号化の場合も図1に示すブロ
ック図で制御を変えるだけでECBモード、CBCモード、OF
Bモードを実現できる。キースケジュールを行うために
はシステムキーが必要であるため、セレクタ36、37はIN
PUTを選択し、INPUTから入力された合計256ビットのシ
ステムキーがレジスタファイル52,53で記憶される。こ
の時記憶されたシステムキーを32ビットごとに分割した
ものを順にSK0,SK1,SK2,SK3, SK4,SK5,SK6,SK7とする。
以降では、クロック単位で図1におけるキースケジュー
ルでの前記初期値を求める動作を述べる。データキーが
入力される前に、初期値の演算を行う。求める初期値を
PW00、PW01、 PW02、 PW03、 PW04、 PW05、 PW06、 P
W07、 PW10、 PW11、 PW12、 PW13、 PW14、 PW15、 PW
16、 PW17とする。
【0010】セレクタ28は固定値-1を選択し、セレクタ
29は固定値-3を選択し、セレクタ30はレジスタファイル
52,53に記憶されているSK0を選択する。ラッチ08はセレ
クタ28、ラッチ09はセレクタ29、ラッチ10はセレクタ30
の出力を記憶する。セレクタ38は循環シフト演算器90の
出力を選択し、セレクタ39はラッチ10の出力を選択す
る。セレクタ42はセレクタ38の出力を選択し、セレクタ
43はセレクタ39の出力を選択する。セレクタ44、45は0
を選択する。キャリージェネレータ84の出力が、加算器
82、83のイニシャルキャリーとして与えられる。ラッチ
16,17はそれぞれ加算器82,83の出力を記憶する。セレ
クタ28は固定値1を選択し、セレクタ29は固定値-3を選
択し、セレクタ30はレジスタファイル52,53に記憶され
ているSK1を選択する。ラッチ08はセレクタ28、ラッチ0
9はセレクタ29、ラッチ10はセレクタ30の出力を記憶す
る。ラッチ16,17の出力はそれぞれレジスタファイル5
0,51に記憶される。ここではその値をそれぞれPW00、P
W10とする。
【0011】セレクタ38は循環シフト演算器91の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ42はセレクタ38の出力を選択し、セレクタ43はセレ
クタ39の出力を選択する。セレクタ44、45は0を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。ラッチ16,17は
それぞれ加算器82,83の出力を記憶する。セレクタ28は
固定値2を選択し、セレクタ29は固定値0を選択し、セレ
クタ30はレジスタファイル52,53に記憶されているSK2を
選択する。ラッチ08はセレクタ28、ラッチ09はセレクタ
29、ラッチ10はセレクタ30の出力を記憶する。ラッチ1
6,17の出力はそれぞれレジスタファイル50,51に記憶
される。ここではその値をそれぞれPW01、PW11とする。
【0012】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を反転したものを
選択する。セレクタ42はセレクタ38の出力を選択し、セ
レクタ43はセレクタ39の出力を選択する。セレクタ44、
45は0を選択する。キャリージェネレータ84の出力が、
加算器82、83のイニシャルキャリーとして与えられる。
ラッチ16,17はそれぞれ加算器82,83の出力を記憶す
る。セレクタ28は固定値1を選択し、セレクタ29は固定
値-3を選択し、セレクタ30はレジスタファイル52,53に
記憶されているSK3を選択する。ラッチ08はセレクタ2
8、ラッチ09はセレクタ29、ラッチ10はセレクタ30の出
力を記憶する。ラッチ16,17の出力はそれぞれレジスタ
ファイル50,51に記憶される。ここではその値をそれぞ
れPW02、PW12とする。
【0013】セレクタ38は循環シフト演算器91の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ42はセレクタ38の出力を選択し、セレクタ43はセレ
クタ39の出力を選択する。セレクタ44、45は0を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。ラッチ16,17は
それぞれ加算器82,83の出力を記憶する。セレクタ28は
固定値-1を選択し、セレクタ29は固定値-3を選択し、セ
レクタ30はレジスタファイル52,53に記憶されているSK4
を選択する。ラッチ08はセレクタ28、ラッチ09はセレク
タ29、ラッチ10はセレクタ30の出力を記憶する。ラッチ
16,17の出力はそれぞれレジスタファイル50,51に記憶
される。ここではその値をそれぞれPW03、PW13とする。
【0014】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ42はセレクタ38の出力を選択し、セレクタ43はセレ
クタ39の出力を選択する。セレクタ44、45は0を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。ラッチ16,17は
それぞれ加算器82,83の出力を記憶する。セレクタ28は
固定値1を選択し、セレクタ29は固定値-3を選択し、セ
レクタ30はレジスタファイル52,53に記憶されているSK5
を選択する。ラッチ08はセレクタ28、ラッチ09はセレク
タ29、ラッチ10はセレクタ30の出力を記憶する。ラッチ
16,17の出力はそれぞれレジスタファイル50,51に記憶
される。ここではその値をそれぞれPW04、PW14とする。
【0015】セレクタ38は循環シフト演算器91の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ42はセレクタ38の出力を選択し、セレクタ43はセレ
クタ39の出力を選択する。セレクタ44、45は0を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。ラッチ16,17は
それぞれ加算器82,83の出力を記憶する。セレクタ28は
固定値2を選択し、セレクタ29は固定値0を選択し、セレ
クタ30はレジスタファイル52,53に記憶されているSK6を
選択する。ラッチ08はセレクタ28、ラッチ09はセレクタ
29、ラッチ10はセレクタ30の出力を記憶する。ラッチ1
6,17の出力はそれぞれレジスタファイル50,51に記憶
される。ここではその値をそれぞれPW05、PW15とする。
【0016】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を反転したものを
選択する。セレクタ42はセレクタ38の出力を選択し、セ
レクタ43はセレクタ39の出力を選択する。セレクタ44、
45は0を選択する。キャリージェネレータ84の出力が、
加算器82、83のイニシャルキャリーとして与えられる。
ラッチ16,17はそれぞれ加算器82,83の出力を記憶す
る。セレクタ28は固定値1を選択し、セレクタ29は固定
値-3を選択し、セレクタ30はレジスタファイル52,53に
記憶されているSK7を選択する。ラッチ08はセレクタ2
8、ラッチ09はセレクタ29、ラッチ10はセレクタ30の出
力を記憶する。ラッチ16,17の出力はそれぞれレジスタ
ファイル50,51に記憶される。ここではその値をそれぞ
れPW06、PW16とする。
【0017】セレクタ38は循環シフト演算器91の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ42はセレクタ38の出力を選択し、セレクタ43はセレ
クタ39の出力を選択する。セレクタ44、45は0を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。ラッチ16,17は
それぞれ加算器82,83の出力を記憶する。ラッチ16,17
の出力はそれぞれレジスタファイル50,51に記憶され
る。ここではその値をそれぞれPW07、PW17とする。レジ
スタファイル50,51に記憶されたPW00、 PW01、 PW02、
PW03、 PW04、 PW05、 PW06、 PW07、 PW10、 PW11、
PW12、 PW13、 PW14、 PW15、 PW16、 PW17が、図8の
第3項、第4項、第5項の和であり、以降のキースケジュ
ールの演算に使用される。初期値の求め方は暗号化・復
号化のどちらの場合でも同じである。
【0018】次に、キースケジュールの演算について述
べる。以降では、クロック単位で図1におけるキースケ
ジュールの動作を述べる。キースケジュールでは256ビ
ットのワークキーを生成するために、入力として64ビッ
トのデータキーが必要である。INPUTから64ビットのデ
ータキーを入力する。この時、セレクタ20、21はそれぞ
れ入力されたデータキーの前半32ビットと後半32ビット
を選択し、ラッチ00と01はその値を保持する。論理積5
4、55の右側の入力を1とし、論理積56,58の右側の入力
を0とする。セレクタ32は排他的論理和66の出力を選択
し、セレクタ31、33は排他的論理和68の出力を選択し、
ラッチ11はセレクタ31、ラッチ12はセレクタ32、ラッチ
13はセレクタ33の出力を記憶する。
【0019】セレクタ28はレジスタファイル50に記憶さ
れているPW00を選択し、セレクタ29はレジスタファイル
51に記憶されているPW10を選択し、セレクタ30はレジス
タファイル52,53に記憶されているSK0を選択する。ラッ
チ08はセレクタ28、ラッチ09はセレクタ29、ラッチ10は
セレクタ30の出力を記憶する。セレクタ38は循環シフト
演算器90の出力を選択し、セレクタ39はラッチ10の出力
を選択する。セレクタ40は循環シフト演算器92の出力を
選択し、セレクタ41はラッチ11の出力を選択する。セレ
クタ42はセレクタ40の出力を選択し、セレクタ43はセレ
クタ41の出力を選択する。セレクタ44は上位31ビットに
ついてはセレクタ38の出力を選択し、下位1ビットにつ
いては‘0’を選択する。セレクタ45は上位31ビットに
ついてはセレクタ40の出力を選択し、下位1ビットにつ
いては‘0’を選択する。キャリージェネレータ84の出
力が、加算器82、83のイニシャルキャリーとして与えら
れる。セレクタ46はキャリージェネレータ85の結果が0
ならば加算器82の出力を選択し、キャリージェネレータ
85の結果が1ならば加算器83の出力を選択する。セレク
タ47は循環シフト演算器94の出力を選択する。論理積6
0、62、64の右側の入力を1とし、論理積61、63、65の右
側の入力を0とする。セレクタ28はレジスタファイル50
に記憶されているPW01を選択し、セレクタ29はレジスタ
ファイル51に記憶されているPW11を選択し、セレクタ30
はレジスタファイル52,53に記憶されているSK1を選択
し、セレクタ31は排他的論理和75の出力を選択し、セレ
クタ32は排他的論理和74の出力を選択し、セレクタ33は
ラッチ13の出力を選択する。セレクタ24は排他的論理和
74の出力を選択する。ラッチ04はセレクタ24、ラッチ08
はセレクタ28、ラッチ09はセレクタ29、ラッチ10はセレ
クタ30、ラッチ11はセレクタ31、ラッチ12はセレクタ3
2、ラッチ13はセレクタ33の出力を記憶する。論理積56
の右側の入力を1とする。セレクタ36は論理積56の出力
を選択し、レジスタファイル52はセレクタ36の出力をK0
として記憶する。
【0020】セレクタ38は循環シフト演算器91の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ40は循環シフト演算器93の出力を選択し、セレクタ
41はラッチ11の出力を選択する。セレクタ44は上位30ビ
ットについてはセレクタ38の出力を選択し、下位2ビッ
トについては‘0’を選択する。セレクタ45は上位30ビ
ットについてはセレクタ40の出力を選択し、下位2ビッ
トについては‘0’を選択する。セレクタ44はセレクタ3
8の出力を選択し、セレクタ45はセレクタ40の出力を選
択する。キャリージェネレータ84の出力が、加算器82、
83のイニシャルキャリーとして与えられる。セレクタ46
はキャリージェネレータ85の結果が0ならば加算器82の
出力を選択し、キャリージェネレータ85の結果が1なら
ば加算器83の出力を選択する。セレクタ47は循環シフト
演算器95の出力を選択する。論理積60の右側の入力を1
とし、論理積61、62、63、64、65の右側の入力を0とす
る。セレクタ28はレジスタファイル50に記憶されている
PW02を選択し、セレクタ29はレジスタファイル51に記憶
されているPW12を選択し、セレクタ30はレジスタファイ
ル52,53に記憶されているSK2を選択し、セレクタ31は排
他的論理和75の出力を選択し、セレクタ32はラッチ12の
出力を選択し、セレクタ33はラッチ13の出力を選択す
る。ラッチ08はセレクタ28、ラッチ09はセレクタ29、ラ
ッチ10はセレクタ30、ラッチ11はセレクタ31、ラッチ12
はセレクタ32、ラッチ13はセレクタ33の出力を記憶す
る。
【0021】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ40は循環シフト演算器92の出力を選択し、セレクタ
41はラッチ11の出力の反転を選択する。セレクタ42はセ
レクタ40の出力を選択し、セレクタ43はセレクタ41の出
力を選択する。セレクタ44は上位31ビットについてはセ
レクタ38の出力を選択し、下位1ビットについては‘0’
を選択する。セレクタ45は上位31ビットについてはセレ
クタ40の出力を選択し、下位1ビットについては‘0’を
選択する。キャリージェネレータ84の出力が、加算器8
2、83のイニシャルキャリーとして与えられる。セレク
タ46はキャリージェネレータ85の結果が0ならば加算器8
2の出力を選択し、キャリージェネレータ85の結果が1な
らば加算器83の出力を選択する。セレクタ47は循環シフ
ト演算器96の出力を選択する。論理積60、61、63、65の
右側の入力を1とし、論理積62、64の右側の入力を0とす
る。セレクタ28はレジスタファイル50に記憶されている
PW03を選択し、セレクタ29はレジスタファイル51に記憶
されているPW13を選択し、セレクタ30はレジスタファイ
ル52,53に記憶されているSK3を選択し、セレクタ31は排
他的論理和75の出力を選択し、セレクタ32はラッチ12の
出力を選択し、セレクタ33は排他的論理和75の出力を選
択する。セレクタ25は排他的論理和75の出力を選択す
る。ラッチ05はセレクタ25、ラッチ08はセレクタ28、ラ
ッチ09はセレクタ29、ラッチ10はセレクタ30、ラッチ11
はセレクタ31、ラッチ12はセレクタ32、ラッチ13はセレ
クタ33の出力を記憶する。論理積58の右側の入力を1と
する。セレクタ37は論理積58の出力を選択し、レジスタ
ファイル53はセレクタ37の出力をK1として記憶する。
【0022】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ40は循環シフト演算器92の出力を選択し、セレクタ
41はラッチ11の出力を選択する。セレクタ42はセレクタ
40の出力を選択し、セレクタ43はセレクタ41の出力を選
択する。セレクタ44は上位30ビットについてはセレクタ
38の出力を選択し、下位2ビットについては‘0’を選択
する。セレクタ45は上位30ビットについてはセレクタ40
の出力を選択し、下位2ビットについては‘0’を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。セレクタ46はキ
ャリージェネレータ85の結果が0ならば加算器82の出力
を選択し、キャリージェネレータ85の結果が1ならば加
算器83の出力を選択する。セレクタ47はセレクタ46の出
力を選択する。論理積62、64、65の右側の入力を1と
し、論理積60、61、63の右側の入力を0とする。セレク
タ28はレジスタファイル50に記憶されているPW04を選択
し、セレクタ29はレジスタファイル51に記憶されている
PW14を選択し、セレクタ30はレジスタファイル52,53に
記憶されているSK4を選択し、セレクタ31は排他的論理
和75の出力を選択し、セレクタ32は排他的論理和74の出
力を選択し、セレクタ33は排他的論理和75の出力を選択
する。セレクタ24は排他的論理和74の出力を選択し、セ
レクタ25は排他的論理和75の出力を選択する。ラッチ04
はセレクタ24、ラッチ05はセレクタ25、ラッチ08はセレ
クタ28、ラッチ09はセレクタ29、ラッチ10はセレクタ3
0、ラッチ11はセレクタ31、ラッチ12はセレクタ32、ラ
ッチ13はセレクタ33の出力を記憶する。論理積56、58の
右側の入力を1とする。セレクタ36は論理積56の出力を
選択し、セレクタ37は論理積58の出力を選択し、レジス
タファイル52はセレクタ36の出力をK2として記憶し、レ
ジスタファイル53はセレクタ37の出力をK3として記憶す
る。
【0023】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ40は循環シフト演算器92の出力を選択し、セレクタ
41はラッチ11の出力を選択する。セレクタ42はセレクタ
40の出力を選択し、セレクタ43はセレクタ41の出力を選
択する。セレクタ44は上位31ビットについてはセレクタ
38の出力を選択し、下位1ビットについては‘0’を選択
する。セレクタ45は上位31ビットについてはセレクタ40
の出力を選択し、下位1ビットについては‘0’を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。セレクタ46はキ
ャリージェネレータ85の結果が0ならば加算器82の出力
を選択し、キャリージェネレータ85の結果が1ならば加
算器83の出力を選択する。セレクタ47は循環シフト演算
器94の出力を選択する。論理積60、62、64の右側の入力
を1とし、論理積61、63、65の右側の入力を0とする。セ
レクタ28はレジスタファイル50に記憶されているPW05を
選択し、セレクタ29はレジスタファイル51に記憶されて
いるPW15を選択し、セレクタ30はレジスタファイル52,5
3に記憶されているSK5を選択し、セレクタ31は排他的論
理和75の出力を選択し、セレクタ32は排他的論理和74の
出力を選択し、セレクタ33はラッチ13の出力を選択す
る。セレクタ24は排他的論理和74の出力を選択する。ラ
ッチ04はセレクタ24、ラッチ08はセレクタ28、ラッチ09
はセレクタ29、ラッチ10はセレクタ30、ラッチ11はセレ
クタ31、ラッチ12はセレクタ32、ラッチ13はセレクタ33
の出力を記憶する。論理積56の右側の入力を1とする。
セレクタ36は論理積56の出力を選択し、レジスタファイ
ル52はセレクタ36の出力をK4として記憶する。
【0024】セレクタ38は循環シフト演算器91の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ40は循環シフト演算器93の出力を選択し、セレクタ
41はラッチ11の出力を選択する。セレクタ42はセレクタ
40の出力を選択し、セレクタ43はセレクタ41の出力を選
択する。セレクタ44は上位30ビットについてはセレクタ
38の出力を選択し、下位2ビットについては‘0’を選択
する。セレクタ45は上位30ビットについてはセレクタ40
の出力を選択し、下位2ビットについては‘0’を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。セレクタ46はキ
ャリージェネレータ85の結果が0ならば加算器82の出力
を選択し、キャリージェネレータ85の結果が1ならば加
算器83の出力を選択する。セレクタ47は循環シフト演算
器95の出力を選択する。論理積60の右側の入力を1と
し、論理積61、62、63、64、65の右側の入力を0とす
る。セレクタ28はレジスタファイル50に記憶されている
PW06を選択し、セレクタ29はレジスタファイル51に記憶
されているPW16を選択し、セレクタ30はレジスタファイ
ル52,53に記憶されているSK6を選択し、セレクタ31は排
他的論理和75の出力を選択し、セレクタ32はラッチ12の
出力を選択し、セレクタ33はラッチ13の出力を選択す
る。ラッチ08はセレクタ28、ラッチ09はセレクタ29、ラ
ッチ10はセレクタ30、ラッチ11はセレクタ31、ラッチ12
はセレクタ32、ラッチ13はセレクタ33の出力を記憶す
る。
【0025】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ40は循環シフト演算器92の出力を選択し、セレクタ
41はラッチ11の出力の反転を選択する。セレクタ42はセ
レクタ40の出力を選択し、セレクタ43はセレクタ41の出
力を選択する。セレクタ44は上位31ビットについてはセ
レクタ38の出力を選択し、下位1ビットについては‘0’
を選択する。セレクタ45は上位31ビットについてはセレ
クタ40の出力を選択し、下位1ビットについては‘0’を
選択する。キャリージェネレータ84の出力が、加算器8
2、83のイニシャルキャリーとして与えられる。セレク
タ46はキャリージェネレータ85の結果が0ならば加算器8
2の出力を選択し、キャリージェネレータ85の結果が1な
らば加算器83の出力を選択する。セレクタ47は循環シフ
ト演算器96の出力を選択する。論理積60、61、63、65の
右側の入力を1とし、論理積62、64の右側の入力を0とす
る。セレクタ28はレジスタファイル50に記憶されている
PW07を選択し、セレクタ29はレジスタファイル51に記憶
されているPW17を選択し、セレクタ30はレジスタファイ
ル52,53に記憶されているSK7を選択し、セレクタ31は排
他的論理和75の出力を選択し、セレクタ32はラッチ12の
出力を選択し、セレクタ33は排他的論理和75の出力を選
択する。セレクタ25は排他的論理和75の出力を選択す
る。ラッチ05はセレクタ25、ラッチ08はセレクタ28、ラ
ッチ09はセレクタ29、ラッチ10はセレクタ30、ラッチ11
はセレクタ31、ラッチ12はセレクタ32、ラッチ13はセレ
クタ33の出力を記憶する。論理積58の右側の入力を1と
する。セレクタ37は論理積58の出力を選択し、レジスタ
ファイル53はセレクタ37の出力をK5として記憶する。
【0026】セレクタ38は循環シフト演算器90の出力を
選択し、セレクタ39はラッチ10の出力を選択する。セレ
クタ40は循環シフト演算器92の出力を選択し、セレクタ
41はラッチ11の出力を選択する。セレクタ42はセレクタ
40の出力を選択し、セレクタ43はセレクタ41の出力を選
択する。セレクタ44は上位30ビットについてはセレクタ
38の出力を選択し、下位2ビットについては‘0’を選択
する。セレクタ45は上位30ビットについてはセレクタ40
の出力を選択し、下位2ビットについては‘0’を選択す
る。キャリージェネレータ84の出力が、加算器82、83の
イニシャルキャリーとして与えられる。セレクタ46はキ
ャリージェネレータ85の結果が0ならば加算器82の出力
を選択し、キャリージェネレータ85の結果が1ならば加
算器83の出力を選択する。セレクタ47はセレクタ46の出
力を選択する。論理積62、64、65の右側の入力を1と
し、論理積60、61、63の右側の入力を0とする。セレク
タ31は排他的論理和75の出力を選択し、セレクタ32は排
他的論理和74の出力を選択し、セレクタ33は排他的論理
和75の出力を選択する。セレクタ24は排他的論理和74の
出力を選択し、セレクタ25は排他的論理和75の出力を選
択する。ラッチ04はセレクタ24、ラッチ05はセレクタ2
5、ラッチ11はセレクタ31、ラッチ12はセレクタ32、ラ
ッチ13はセレクタ33の出力を記憶する。論理積56、58の
右側の入力を1とする。セレクタ36は論理積56の出力を
選択し、セレクタ37は論理積58の出力を選択し、レジス
タファイル52はセレクタ36の出力をK6として記憶し、レ
ジスタファイル53はセレクタ37の出力をK7として記憶す
る。以上の処理で求められたK0、 K1、 K2、 K3、 K4、
K5、 K6、 K7がキースケジュールによって得られるワ
ークキーである。
【0027】
【発明の効果】本発明は以上のように構成されているた
め、加減算、循環シフト、加減算の順の演算は多項の加
減算だけに置き換えることができ、演算が多項の加減算
のみのため演算の高速化を行うことができる。また、桁
上げ保留加算器を用いることで、さらに演算の高速化を
行うことができる。また、多項の加減算だけに置き換え
たことで、暗号化・復号化・キースケジュールの演算開
始時には既知の値となっているものを、暗号化・復号化
・キースケジュールの演算処理を行う前にあらかじめ計
算し、初期値として保持することで、繰り返し行われる
演算において和を求める必要がなくなり演算の高速化と
回路規模の削減を行うことができる。
【図面の簡単な説明】
【図1】本発明の暗号化・復号化・キースケージュール
を実行する本発明の回路の実施の形態の構成例を示すブ
ロック図である。
【図2】本発明の暗号化・復号化・キースケジュールで
用いるアルゴリズムの基本関数の詳細を示した図であ
る。
【図3】本発明の暗号化・復号化・キースケジュールで
用いる、加減算、循環シフトの順の演算を加減算だけに
式変形することを示す図である。
【図4】本発明の暗号化・復号化・キースケジュール用
いるアルゴリズムの基本関数に対して、本発明において
ラッチを挿入した図である。
【図5】図4で定義された各Stepの処理を示す図であ
る。
【図6】図5で示された式の暗号化における各Stepでの
変数の値を示す図である。
【図7】図5で示された式の復号化における各Stepでの
変数の値を示す図である。
【図8】図5で示されたWを図3を用いて多項の加減算
に変形したときの各Stepでの項の値を示す図である。
【図9】図2で定義された基本関数を用いて、本発明の
キースケジュールの動作を示したブロック図である。
【図10】図2で定義された基本関数を用いて、本発明
の暗号化の動作を示したブロック図である。
【図11】図2で定義された基本関数を用いて、本発明
の復号化の動作を示したブロック図である。
【符号の説明】
00〜17 32ビット幅のラッチ 20〜47 32ビット幅のセレクタ 50〜53 レジスタファイル 54〜65 32ビット幅の論理積 66〜75 32ビット幅の排他的論理和 76 32ビット幅の論理和 80,81 32ビット幅の桁上げ保留加算器 82,83 32ビット加算器 84,85 32ビットのキャリージェネレータ 86 シフタ 90〜96 循環シフト演算器
───────────────────────────────────────────────────── フロントページの続き (72)発明者 平山 直紀 神奈川県秦野市堀山下1番地 株式会社日 立製作所エンタープライズサーバ事業部内 Fターム(参考) 5J104 AA21 JA09 JA18 NA09

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 データを暗号化・復号化する暗号化・復
    号化回路において、 キースケジュール・暗号化・復号化を行うデータの項
    (以下、第1項という)とキースケジュール・暗号化・
    復号化に使用するキーの項(以下、第2項という)との
    2項の和を循環シフトし結果を出力する回路を、 前記第1項を循環シフトする第1の循環シフト回路と、
    前記第2項を循環シフトする第2の循環シフト回路と、 前記各項からそれぞれ循環シフトを行うビット数分だけ
    上位ビットを取り除いたそれぞれのデータを加算する第
    1の加算回路と、 前記第1の循環シフト回路の出力と前記第2の循環シフ
    ト回路の出力と前記第1の加算回路のキャリー出力を加
    算する第2の加算回路と、 前記第1項と第2項を加減算する加減算回路と、 該加減算回路のキャリー出力のそれぞれに対応して予め
    定められた値の内の該加減算回路のキャリー出力に対応
    する値を前記第2の加算回路の出力から減算する減算回
    路により構成することを特徴とする暗号化・復号化回
    路。
  2. 【請求項2】 請求項1記載の暗号化・復号化回路にお
    いて、 前記加減算回路のキャリー出力が得られる前に、前記減
    算回路の出力として、前記加減算回路のキャリー出力が
    0の場合と1の場合の二通りを平行して求めておき、前
    記加減算回路の演算終了時に、前記二通りの減算回路の
    出力から、該加減算回路のキャリー出力に対応する出力
    を選択することを特徴とする暗号化・復号化回路。
  3. 【請求項3】 データを暗号化・復号化する暗号化・復
    号化回路において、 暗号化・復号化の演算前に既知の値となっているキース
    ケジュール・暗号化・復号化に使用するキーと、キース
    ケジュール・暗号化・復号化の処理で定められた定数
    と、キースケジュール・暗号化・復号化に使用するキー
    に対して循環シフトを行った結果の3項を予め加算する
    加算回路と、 該加算回路による加算結果を記憶する記憶装置を有し、 演算開始後に、該記憶装置に保持されているあらかじめ
    求めておいた値と、演算中に得られた循環シフト対象の
    値と、該値を循環シフトした結果との3項の和を、前記
    加算回路で求めることを特徴とする暗号化・復号化回
    路。
JP2000315049A 2000-10-16 2000-10-16 暗号化・復号化回路 Expired - Fee Related JP3795315B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000315049A JP3795315B2 (ja) 2000-10-16 2000-10-16 暗号化・復号化回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000315049A JP3795315B2 (ja) 2000-10-16 2000-10-16 暗号化・復号化回路

Publications (2)

Publication Number Publication Date
JP2002123171A true JP2002123171A (ja) 2002-04-26
JP3795315B2 JP3795315B2 (ja) 2006-07-12

Family

ID=18794209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000315049A Expired - Fee Related JP3795315B2 (ja) 2000-10-16 2000-10-16 暗号化・復号化回路

Country Status (1)

Country Link
JP (1) JP3795315B2 (ja)

Also Published As

Publication number Publication date
JP3795315B2 (ja) 2006-07-12

Similar Documents

Publication Publication Date Title
US7079651B2 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
US7899190B2 (en) Security countermeasures for power analysis attacks
CN101350714B (zh) 采用混合rijndael s-box的有效高级加密标准数据路径
US11546135B2 (en) Key sequence generation for cryptographic operations
EP2460310B1 (en) Symmetric-key encryption method and cryptographic system employing the method
JP2006003905A (ja) 情報漏れ攻撃を防止するためのガロア体上の乗算方法及び装置、逆変換装置、そしてaesバイト置換演算装置
JPH08248879A (ja) 2つの鍵を使用して暗号化する方法および装置
JP2001324924A (ja) 暗号化装置及び暗号化方法、復号装置及び復号方法並びに演算装置
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
EP1779584A1 (en) Stream cipher combining system and method
JP4025722B2 (ja) データ暗号化のための方法および装置
JP2002229445A (ja) べき乗剰余演算器
JPH0675525A (ja) 暗号通信装置
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
JP2000010479A (ja) モンゴメリ・リダクション装置及び記録媒体
JP3769804B2 (ja) 解読化方法および電子機器
EP1587237B1 (en) Security countermeasures for power analysis attacks
EP1273124A1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
JP2950485B2 (ja) ストリーム暗号処理装置
JP3795315B2 (ja) 暗号化・復号化回路
KR102337865B1 (ko) 동형 암호에 기초한 산술 연산 시스템 및 이를 이용한 동형 암호 산술 연산 방법
JP2003333036A (ja) メッセージ認証装置、メッセージ認証方法とメッセージ認証プログラムおよび該プログラムを記録したコンピュータ読取り可能な記録媒体
KR100546777B1 (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
JP5268413B2 (ja) 開示制限処理装置及びデータ処理システム及びプログラム
JPH09230788A (ja) 暗号化方法および暗号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040209

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040318

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050913

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051114

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060412

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees