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
Links
Abstract
文を復号化する、または平文を暗号化する回路におい
て、高速化を行うことにある。 【解決手段】 Multi2方式によるデータの暗号化・復号
化回路においては、2項の和に対して循環シフトを行う
演算をする箇所があり、この2項の和に対して循環シフ
トを行う演算は図に示すように4項の加減算だけで行う
ことができる。即ち、2項の和に対して循環シフトを行
う演算結果は、上記の2項の各項の循環シフトの結果を
加算し、これに上記各項に対してそれぞれ循環シフトを
行うビット数分だけ上位ビットを取り除いたもので加算
したときのキャリーを加え、その結果から、上記2項を
加減算した結果のキャリーに循環シフトを行うビット数
分だけ2を乗じた積を、引いた結果に等しくなる。そこ
で、暗号化・復号化回路における2項の和の循環シフト
回路を上記のように複数の加減算回路で構成している。
Description
号化する暗号化・復号化回路に係り、特に、暗号化・復
号化における演算速度を高速化する暗号化・復号化回路
に関する。
以外に知られないようにするために、従来から情報を暗
号化することが知られている。暗号化では、情報を意味
のわからない情報になるように暗号化し、その暗号化し
た情報を通信で用いたり、記録媒体等に記録する。そし
て、暗号化された情報に対して、復号化を行うことによ
り暗号化される以前の情報にする。このような暗号化・
復号化には、一般に秘密鍵方式と公開鍵方式の二つがあ
る。秘密鍵方式は、暗号化・復号化に用いる鍵が同一の
方式である。公開鍵方式は暗号化・復号化で異なる鍵を
用い、暗号化側または復号化側のどちらかの鍵が公開さ
れる方式である。
なものがあり、その一つとして公開特許公報の特開平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において、それぞれ回路規模の削減のためキ
ースケジュール処理と復号化処理、キースケジュールと
暗号化処理を一つの演算器で実現している。
た発明はいずれも回路規模の削減を目的としており、キ
ースケージュール・暗号化・復号化に関して高速化する
発明はほとんどない。本発明の目的は、所定の暗号アル
ゴリズムで暗号化された暗号文を復号化する、または平
文を暗号化する回路において、高速化を行うことにあ
る。また、本発明の他の目的は、高速化と回路規模の削
減を両立させることである。
め、本発明のデータを暗号化・復号化する暗号化・復号
化回路において、キースケジュール・暗号化・復号化を
行うデータの項(以下、第1項という)とキースケジュ
ール・暗号化・復号化に使用するキーの項(以下、第2
項という)との2項の和を循環シフトし結果を出力する
回路を、前記第1項を循環シフトする第1の循環シフト
回路と、前記第2項を循環シフトする第2の循環シフト
回路と、前記各項からそれぞれ循環シフトを行うビット
数分だけ上位ビットを取り除いたそれぞれのデータを加
算する第1の加算回路と、前記第1の循環シフト回路の
出力と前記第2の循環シフト回路の出力と前記第1の加
算回路のキャリー出力を加算する第2の加算回路と、前
記2項を加減算する加減算回路と、該加減算回路のキャ
リー出力のそれぞれに対応して予め定められた値の内の
該加減算回路のキャリー出力に対応する値を前記第2の
加算回路の出力から減算する減算回路により構成するよ
うにしている。また、前記加減算回路のキャリー出力が
得られる前に、前記減算回路の出力として、前記加減算
回路のキャリー出力が0の場合と1の場合の二通りを平
行して求めておき、前記加減算回路の演算終了時に、前
記二通りの減算回路の出力から、該加減算回路のキャリ
ー出力に対応する出力を選択するようにしている。ま
た、データを暗号化・復号化する暗号化・復号化回路に
おいて、暗号化・復号化の演算前に既知の値となってい
るキースケジュール・暗号化・復号化に使用するキー
と、キースケジュール・暗号化・復号化の処理で定めら
れた定数と、キースケジュール・暗号化・復号化に使用
するキーに対して循環シフトを行った結果の3項を予め
加算する加算回路と、該加算回路による加算結果を記憶
する記憶装置を有し、演算開始後に、該記憶装置に保持
されているあらかじめ求めておいた値と、演算中に得ら
れた循環シフト対象の値と、該値を循環シフトした結果
との3項の和を、前記加算回路で求めるようにしてい
る。
を参照して説明する。図2は本発明の暗号化・復号化・
キースケジュールで用いるアルゴリズムの基本関数の詳
細を示した図である。図2の基本関数において加減算、
循環シフト、加減算の順に演算が行われている箇所があ
る。ところで、2項の和に対して循環シフトを行う演算
は図3に示すように4項の加減算だけで行うことができ
る。即ち、2項の和に対して循環シフトを行う演算結果
は、上記の2項の各項の循環シフトの結果を加算し、こ
れに上記各項に対してそれぞれ循環シフトを行うビット
数分だけ上位ビットを取り除いたもので加算したときの
キャリーを加え、その結果から、上記2項を加減算した
結果のキャリーに循環シフトを行うビット数分だけ2を
乗じた積を、引いた結果に等しくなる。したがって、加
減算、循環シフト、加減算の順の演算は多項の加減算だ
けに置き換えることができる。演算が多項の加減算のみ
の場合、桁上げ保留加算器を用いることで演算の高速化
を行うことができる。これが本発明の効果の一つであ
る。
ラッチ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項の和を
求める必要がなくなり演算の高速化と回路規模の削減を
実現できる。これが本発明の効果の一つである。
号化・復号化・キースケジュール回路の実施の形態の概
略構成例を示すブロック図を図1に示す。図1で示され
るラッチはすべて同一のクロックで動作しており、32ビ
ット幅である。80、81で示されるCSAは桁上げ保留加算
器であり、図中のすべての構成要素は32ビット幅であ
る。図1のINPUTを通してレジスタファイル52、53に256
ビットのシステムキーや256ビットのワークキーが記憶
される。また、INPUTには暗号化時には平文が、復号化
時には暗号文が、キースケジュール時にはデータキーが
入力され、適切なラッチに記憶される。OUTPUTには暗号
化時には暗号文が、復号化時には平文が出力される。
合で説明する。暗号化・復号化の場合も図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とする。
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とする。
選択し、セレクタ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とする。
選択し、セレクタ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とする。
選択し、セレクタ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とする。
選択し、セレクタ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とする。
選択し、セレクタ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とする。
選択し、セレクタ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とする。
選択し、セレクタ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項の和であり、以降のキースケジュ
ールの演算に使用される。初期値の求め方は暗号化・復
号化のどちらの場合でも同じである。
べる。以降では、クロック単位で図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の出力を記憶する。
れている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
として記憶する。
選択し、セレクタ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の出力を記憶す
る。
選択し、セレクタ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として記憶する。
選択し、セレクタ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として記憶す
る。
選択し、セレクタ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として記憶する。
選択し、セレクタ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の出力を記憶す
る。
選択し、セレクタ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として記憶する。
選択し、セレクタ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がキースケジュールによって得られるワ
ークキーである。
め、加減算、循環シフト、加減算の順の演算は多項の加
減算だけに置き換えることができ、演算が多項の加減算
のみのため演算の高速化を行うことができる。また、桁
上げ保留加算器を用いることで、さらに演算の高速化を
行うことができる。また、多項の加減算だけに置き換え
たことで、暗号化・復号化・キースケジュールの演算開
始時には既知の値となっているものを、暗号化・復号化
・キースケジュールの演算処理を行う前にあらかじめ計
算し、初期値として保持することで、繰り返し行われる
演算において和を求める必要がなくなり演算の高速化と
回路規模の削減を行うことができる。
を実行する本発明の回路の実施の形態の構成例を示すブ
ロック図である。
用いるアルゴリズムの基本関数の詳細を示した図であ
る。
用いる、加減算、循環シフトの順の演算を加減算だけに
式変形することを示す図である。
いるアルゴリズムの基本関数に対して、本発明において
ラッチを挿入した図である。
る。
変数の値を示す図である。
変数の値を示す図である。
に変形したときの各Stepでの項の値を示す図である。
キースケジュールの動作を示したブロック図である。
の暗号化の動作を示したブロック図である。
の復号化の動作を示したブロック図である。
Claims (3)
- 【請求項1】 データを暗号化・復号化する暗号化・復
号化回路において、 キースケジュール・暗号化・復号化を行うデータの項
(以下、第1項という)とキースケジュール・暗号化・
復号化に使用するキーの項(以下、第2項という)との
2項の和を循環シフトし結果を出力する回路を、 前記第1項を循環シフトする第1の循環シフト回路と、
前記第2項を循環シフトする第2の循環シフト回路と、 前記各項からそれぞれ循環シフトを行うビット数分だけ
上位ビットを取り除いたそれぞれのデータを加算する第
1の加算回路と、 前記第1の循環シフト回路の出力と前記第2の循環シフ
ト回路の出力と前記第1の加算回路のキャリー出力を加
算する第2の加算回路と、 前記第1項と第2項を加減算する加減算回路と、 該加減算回路のキャリー出力のそれぞれに対応して予め
定められた値の内の該加減算回路のキャリー出力に対応
する値を前記第2の加算回路の出力から減算する減算回
路により構成することを特徴とする暗号化・復号化回
路。 - 【請求項2】 請求項1記載の暗号化・復号化回路にお
いて、 前記加減算回路のキャリー出力が得られる前に、前記減
算回路の出力として、前記加減算回路のキャリー出力が
0の場合と1の場合の二通りを平行して求めておき、前
記加減算回路の演算終了時に、前記二通りの減算回路の
出力から、該加減算回路のキャリー出力に対応する出力
を選択することを特徴とする暗号化・復号化回路。 - 【請求項3】 データを暗号化・復号化する暗号化・復
号化回路において、 暗号化・復号化の演算前に既知の値となっているキース
ケジュール・暗号化・復号化に使用するキーと、キース
ケジュール・暗号化・復号化の処理で定められた定数
と、キースケジュール・暗号化・復号化に使用するキー
に対して循環シフトを行った結果の3項を予め加算する
加算回路と、 該加算回路による加算結果を記憶する記憶装置を有し、 演算開始後に、該記憶装置に保持されているあらかじめ
求めておいた値と、演算中に得られた循環シフト対象の
値と、該値を循環シフトした結果との3項の和を、前記
加算回路で求めることを特徴とする暗号化・復号化回
路。
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) |
-
2000
- 2000-10-16 JP JP2000315049A patent/JP3795315B2/ja not_active Expired - Fee Related
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 |