JP2002358008A - データ暗号化回路 - Google Patents

データ暗号化回路

Info

Publication number
JP2002358008A
JP2002358008A JP2001167780A JP2001167780A JP2002358008A JP 2002358008 A JP2002358008 A JP 2002358008A JP 2001167780 A JP2001167780 A JP 2001167780A JP 2001167780 A JP2001167780 A JP 2001167780A JP 2002358008 A JP2002358008 A JP 2002358008A
Authority
JP
Japan
Prior art keywords
data
buffer
unit
buffers
encryption
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
JP2001167780A
Other languages
English (en)
Other versions
JP4761652B2 (ja
Inventor
Atsuo Yamaguchi
敦男 山口
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2001167780A priority Critical patent/JP4761652B2/ja
Priority to US10/095,057 priority patent/US20020181704A1/en
Publication of JP2002358008A publication Critical patent/JP2002358008A/ja
Application granted granted Critical
Publication of JP4761652B2 publication Critical patent/JP4761652B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 回路規模が小さく、かつ高速処理が可能なデ
ータ暗号化回路を提供する。 【解決手段】 データ暗号化回路は、暗号化処理または
復号化処理を行なうための演算器12と、演算器12へ
入力するブロックデータを保持し、演算器12での演算
結果を保持するバッファ2および4と、バッファ2およ
び4の状態をそれぞれ保持する状態レジスタ6および8
と、バッファ2および4に暗号化処理を行なうブロック
データを書込み、バッファ2および4に保持された演算
器12での演算結果を読込むCPU1と、状態レジスタ
6および8の状態に従い、バッファ2および4、演算器
12ならびにCPUに各種信号を供給するデコーダ10
とを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データ暗号化回路
に関し、特に、データをブロックに分解し、その分解し
たブロック単位に暗号処理または復号処理を行なうデー
タ暗号化回路に関する。
【0002】
【従来の技術】インターネットに代表される近年のネッ
トワーク技術の進歩に伴ない、様々な情報がネットワー
ク上を流れるようになってきた。そのため、情報の秘匿
性を保つ目的で種々の暗号化手法が提案されている。
【0003】特許第3088337号公報に開示されて
いるように、暗号化処理にはデータを64ビット等の所
定の大きさのブロックに分解し、ブロック単位で暗号化
が行なわれるブロック暗号化処理がある。ブロック暗号
化処理には、ECBモードとCBCモードとがある。E
CBモードは、共通鍵暗号法で用いられる基本的なモー
ドである。CBCモードは、ブロック単位で似たような
データを暗号化すると解読されるおそれがあるので、前
後のブロックとの関連で暗号結果が異なるようにして解
読しづらくした方法である。
【0004】図21を参照して、ECBモードにおける
暗号化処理および復号化処理の概要について説明する。
図21(A)を参照して、暗号化では、通常のデータ
(メッセージ)Mが64ビットごとに分解され、ブロッ
クMn(n=1,2,3…)が生成される。送信者およ
び受信者のみが共通に持つ秘密の「鍵」と呼ばれるある
64ビットのデータKを用いて、各ブロックごとにEC
Bコアが暗号化処理を行ない、64ビットの暗号文Cn
(n=1,2,3…)を生成する(式(1)参照)。
【0005】 Cn=K(Mn) (n=1,2,3,…) …(1) 図21(B)を参照して、復号化では、暗号文Cn(n
=1,2,3,…)より、暗号化に用いたものと同じ鍵
Kを用いてメッセージMnが生成される(式(2)参
照)。
【0006】 Mn=K(Cn) (n=1,2,3,…) …(2) 図22を参照して、CBCモードにおける暗号化処理お
よび復号化処理の概要について説明する。図22(A)
を参照して、暗号化は、1つ前のブロックMn−1の暗
号文ブロックCn−1と、現在のブロックMnとの排他
的論理和を求め、これをECBコアの入力とし、暗号文
ブロックCnを求める。これを繰返して次々と連鎖させ
る(式(3)および式(4)参照)。
【0007】 C1=K(M1+IV) …(3) Cn=K(Mn+(Cn−1)) (n=2,3,…) …(4) ここで、IV(Initial Value)は初期値であり、最初
の暗号化および復号化の際に用いられる。IVは復号化
時と暗号化時とで同一の値を用いる。IVの値は第三者
に知られてもよいので、IVは送信者と受信者との間で
秘密にしておく必要はない。IVの値を変えると、同じ
メッセージから異なった暗号文が生成される。
【0008】図22(B)を参照して、復号化は、暗号
文ブロックCnをECBモードと同様に復号化した結果
と、1つ前の暗号文ブロックCn−1との排他的論理和
を出力メッセージブロックMnとする。これを繰返して
次々と連鎖させる(式(5)および式(6)参照)。式
(5)および式(6)において記号「+」は排他的論理
和を表わす。
【0009】 M1=K(C1)+IV …(5) Mn=K(Cn)+(Cn−1) (n=2,3,…) …(6) このような暗号化処理においては、バッファリングの手
法を用いることにより処理速度を向上させることができ
る。
【0010】図23は、バッファリングがない場合の暗
号化処理の時間的な流れを示している。CPU(Centra
l Processing Unit)は暗号回路(ECBコア)に入力
を与え、演算が完了するのを待つ。演算が完了すると、
演算が完了したデータを読出し、次のデータを暗号回路
に与える。このような一連の処理をブロックごとに繰返
す。しかし、この方法では、CPUが演算が完了したデ
ータの読出しや暗号回路へ入力するデータの準備を行な
っている段階では、暗号回路は演算を実行することがで
きない。このため、暗号回路を100%動作させること
は困難である。
【0011】一方、図24は、バッファリングの手法を
用いた場合の暗号化処理の時間的な流れを示している。
CPUは、入力データを暗号回路に与え、暗号回路が演
算中になったA状態で次の入力データを準備し、暗号回
路の入力用バッファに設定する。暗号回路は演算完了
後、演算結果を出力用バッファに書込む。暗号回路は引
き続き入力バッファに設定済みの入力データを取り出
し、すぐに、次の演算を開始する。CPUは、演算完了
を確認したB状態で、出力バッファより演算結果を取出
し、必要な処理を実施する。CPUは、次の入力データ
を準備して、入力バッファに設定する。これらの操作が
繰返されることにより、短時間で多くのデータの暗号化
を実現している。
【0012】特開平11−88320号公報には、入力
バッファおよび出力バッファを暗号回路ごとに設けたデ
ータ暗号化回路が開示されている。このため、このデー
タ暗号化回路は、高速にデータの暗号化を行なうことが
できる。
【0013】
【発明が解決しようとする課題】しかし、従来のデータ
暗号化回路は、各暗号回路ごとに入力バッファおよび出
力バッファを設けていた。このため、回路規模が大きく
なってしまう。近年、IC(Integrated Circuit)カー
ドの普及に伴ない、回路規模が小さく、かつ高速に処理
できるデータ暗号化回路の需要が高まっている。
【0014】本発明は、上述の課題を解決するためにな
されたもので、その目的は、回路規模が小さく、かつ高
速処理が可能なデータ暗号化回路を提供することであ
る。
【0015】本発明の他の目的は、ECBモードの暗号
化処理および復号化処理、ならびにCBCモードでの暗
号化処理および復号化処理を実行でき、回路規模が少な
く、かつ高速処理が可能な暗号化回路を提供することで
ある。
【0016】
【課題を解決するための手段】本発明のある局面に従う
データ暗号化回路は、複数のバッファを含むバッファ部
と、バッファ部に接続され、バッファ部に含まれるいず
れのバッファともデータを入出力可能であり、バッファ
部に含まれるいずれかのバッファより処理対象のブロッ
クデータを読込み、暗号演算処理または復号演算処理を
実行し、いずれかのバッファに処理結果を書込む演算器
と、バッファ部に接続され、バッファ部に含まれるいず
れかのバッファに処理対象のブロックデータを書込み、
いずれかのバッファから演算器での演算結果を読込むデ
ータ制御部と、バッファ部、演算器およびデータ制御部
に接続され、演算器がデータを読込むバッファ、演算器
がデータを書込むバッファ、データ制御部がデータを読
込むバッファおよびデータ制御部がデータを書込むバッ
ファとが重ならないように、演算器およびデータ制御部
の入出力の対象となるバッファを指定するバッファ指定
部とを含む。
【0017】演算器は、バッファ部に含まれるいずれの
バッファとも入出力可能である。このため、1つのバッ
ファを入力データ用のバッファおよび出力用データのバ
ッファとして兼用できる。また、バッファは複数用意さ
れている。このため、演算器が演算途中であるにも関わ
らず、次に演算される入力データをあらかじめバッファ
に用意しておくことができ、データ暗号化回路の処理性
能が向上する。また、バッファも少なくてすむため、回
路規模が小さく、高速処理が可能なデータ暗号化回路を
実現することができる。
【0018】好ましくは,バッファ指定部は、バッファ
部に含まれる複数のバッファの取る状態をそれぞれ保持
する複数の状態レジスタと、複数の状態レジスタに接続
され、複数の状態レジスタの値に応じた信号を、バッフ
ァ部を構成する複数のバッファ、演算器およびデータ制
御部に供給するデコーダとを含み、演算器およびデータ
制御部は、デコーダより供給される信号に基づいて動作
する。
【0019】さらに好ましくは、複数の状態レジスタの
各々は、対応するバッファに、演算前のデータを書込み
可能な状態、演算前のデータが記憶されている状態、演
算結果が記憶されている状態、および記憶されていたデ
ータが演算中の状態のいずれかを示すデータを記憶して
いる。
【0020】さらに好ましくは、デコーダは、複数のバ
ッファの各々に、データ制御部がブロックデータを書込
み可能か否かを示す第1の信号、データ制御部が演算結
果を読込み可能か否かを示す第2の信号、演算器が演算
待ちの入力データを取り出し可能か否かを示す第3の信
号、および演算器が演算結果を書込み可能か否かを示す
第4の信号を供給する。
【0021】さらに好ましくは,デコーダは、演算器が
ブロックデータを取出したのと同じバッファに演算結果
を書込むように、第3および第4の信号を供給する。
【0022】このような信号の制御を行なうことによ
り、ECBモードでの暗号化処理および復号化処理を行
なうことができるようになる。
【0023】前記バッファ指定部は、前記演算器がデー
タを書込むバッファと、前記データ制御部がデータを読
込むバッファとが重ならないように指定する。
【0024】さらに好ましくは、バッファ部は、3つ以
上のバッファにより構成される。3つのバッファを用い
ることにより、入力データ用のバッファ、出力データ用
のバッファの他に、1つ前のブロックに関する入力デー
タ用のバッファを用意することができる。このため、C
BCモードの暗号処理および復号処理を実行することが
できる。
【0025】さらに好ましくは、演算器は、データを保
持するレジスタと、レジスタに接続され、レジスタに保
持されたデータに対して暗号化演算または復号化演算を
施し、演算結果をレジスタに書込む演算処理部と、レジ
スタに接続され、モードがCipher Block Chainingモー
ドでかつ現在行なっている処理が暗号処理の場合にレジ
スタに保持された値を出力し、それ以外の場合に0を出
力する第1の選択回路と、第1の選択回路、バッファ部
およびレジスタに接続され、第1の選択回路の出力およ
びバッファ部を構成するいずれかのバッファに保持され
た値の排他的論理和を求め、それを暗号化演算対象の入
力とする、第1の排他的論理和回路と、バッファ部に接
続され、暗号モードがCipher Block Chainingモードで
かつ現在行なっている処理が復号処理の場合にバッファ
部を構成するいずれかのバッファに保持された値とを出
力し、それ以外の場合に0を出力する第2の選択回路
と、第2の選択回路、バッファ部およびレジスタに接続
され、第2の選択回路の出力およびレジスタに保持され
た値の排他的論理和を求め、バッファ部を構成するいず
れかのバッファに書込む第2の排他的論理和回路とを含
む。
【0026】さらに好ましくは、バッファ指定部は、バ
ッファ部をリングバッファとして機能させる。
【0027】
【発明の実施の形態】[第1の実施形態]図1を参照し
て、本発明の第1の実施形態に係るデータ暗号化回路
は、暗号化処理または復号化処理を行なうための演算器
12と、各々演算器12に接続され、演算器12へ入力
するブロックデータを保持し、演算器12での演算結果
を保持するバッファ2および4と、バッファ2および4
の状態をそれぞれ保持する状態レジスタ6および8と、
バッファ2および4に接続され、バッファ2および4に
暗号化処理を行なうブロックデータを書込み、バッファ
2および4に保持された演算器12での演算結果を読込
むCPU1と、状態レジスタ6および8、バッファ2お
よび4、演算器12ならびにCPU1に接続され、状態
レジスタ6および8の状態に従い、バッファ2および
4、演算器12ならびにCPU1に各種信号を供給する
デコーダ10とを含む。
【0028】バッファ2は、CPU1とデータバスD
B、書込み信号WRおよび読出し信号RDにより接続さ
れている。書込み信号WRが活性化すると、CPU1か
らバッファ2へのデータの書込みが可能となる。読出し
信号RDが活性化すると、CPU1によるバッファ2の
データの読出しが可能となる。バッファ4に関しても、
バッファ2と同様の状態を取る。このため、その詳細な
説明はここでは繰返さない。
【0029】バッファ2は、演算器12と、ロード信号
LD、ストア信号ST、データ入力信号DIおよびデー
タ出力信号DOにより接続されている。ロード信号LD
が活性化すると、バッファ2からのデータの読出しが可
能となる。このため、演算器12は、データ出力信号D
Oを介して、バッファ2よりブロックデータを読出す。
ストア信号STが活性化すると、バッファ2へのデータ
の書込みが可能となる。このため、演算器12は、デー
タ入力信号DIを介して、演算結果をバッファ2に書込
む。バッファ4に関しても、バッファ2と同様の動作を
する。このため、その詳細な説明はここでは繰返さな
い。
【0030】バッファ2および4は、それぞれ以下に示
すAからDまでの4つの状態を取り得る。その状態は、
状態レジスタ6および8にそれぞれ格納されている。状
態Aは、データがバッファにデータが格納されていない
ことを示す。状態Bは、CPU1からブロックデータが
書込まれ、演算待ちのデータがあることを示す。状態C
は、ブロックデータが演算器12に入力され、演算中で
あることを示す。状態Dは、演算器12での演算結果を
保持していることを示す。
【0031】それぞれのバッファは、状態A、状態B、
状態C、状態Dの順で遷移し、状態Dまで達すると、状
態Aに戻る。
【0032】デコーダ10は、状態レジスタ6および8
にそれぞれ保持されたバッファ2および4の値に応じ
て、以下に述べる信号をバッファ2および4、演算器1
2ならびにCPU1に供給する。バッファ2には、CP
U1からのデータの書込みの可否を示す信号WR_EN
2、CPU1によるデータの読出しの可否を示す信号R
D_EN2、演算器12によるデータの読出しの可否を
示す信号LD_EN2、演算器12による演算結果の書
込みの可否を示す信号ST_EN2が供給される。バッ
ファ4にも同様の信号WR_EN4、RD_EN4、L
D_EN4およびST_EN4を供給する。
【0033】また、デコーダ10は、バッファ2および
4のいずれかにデータを書込むことができることを示す
信号WR_RDYおよびいずれかのバッファからデータ
を読み出すことができることを示す信号RD_RDY
を、CPU1に送信する。信号WR_RDYの示す値
は、信号WR_EN2およびWR_EN4の論理和とな
る。信号RD_RDYの示す値は、信号RD_EN2お
よびRD_EN4の論理和となる。
【0034】さらに、デコーダ10は、演算器12へ、
演算すべきデータがあるか否かを示す信号LD_RDY
を供給する。信号LD_RDYの値は、信号LD_EN
2およびLD_EN4の論理和となる。信号LD_RD
Yに応答して、演算器12は、暗号化処理を実行する。
【0035】CPU1から供給される信号WRは、デコ
ーダ10より出力される信号WR_EN2またはWR_
EN4により定められるバッファに受け入れられる。デ
コーダ10は、信号WR_EN2およびWR_EN4が
同時にバッファ2および4に供給されることがないよう
に制御を行なう。信号RDも同様に、デコーダ10より
出力される信号RD_EN2またはRD_EN4により
定められるバッファに受け入れられる。デコーダ10
は、信号RD_EN2およびRD_EN4が同時にバッ
ファ2および4に供給されることがないように制御を行
なう。このように、CPU1がバッファを選択するので
はなく、デコーダ10からの信号により自動的にCPU
1から出力される信号が受け入れられるか否かが決定さ
れる。
【0036】演算器12から供給される信号LDは、デ
コーダ10より出力される信号LD_EN2またはLD
_EN4により定められるバッファに受け入れられる。
デコーダ10は、信号LD_EN2およびLD_EN4
が同時にバッファ2および4に供給されることがないよ
うに制御を行なう。信号STも同様に、デコーダ10よ
り出力される信号ST_EN2またはST_EN4によ
り定められるバッファに受け入れられる。デコーダ10
は、信号ST_EN2およびST_EN4が同時にバッ
ファ2および4に供給されることがないように制御を行
なう。このように、演算器12がバッファを選択するの
ではなく、デコーダ10からの信号により自動的に演算
器12から出力される信号が受け入れられるか否かが決
定される。
【0037】図2を参照し、演算器12は、ECBモー
ドの暗号処理および復号処理を行う処理装置であり、E
CBモードの暗号化または復号化のための演算を行う演
算処理部21と、演算処理部21、バッファ2および4
に接続され、バッファ2または4から読込まれた入力デ
ータまたは演算処理部21で演算処理された結果を保持
するレジスタ22とを含む。
【0038】図3を参照して、演算器12は、入力デー
タが入力されると演算を実行し、その後、データを出力
する。
【0039】図4を参照して、バッファ2および4と、
信号WR_EN2、WR_EN4、RD_EN2、RD
_EN4、LD_EN2、LD_EN4、ST_EN
2、ST_EN4、WR_RDY、RD_RDYおよび
LD_RDYとの関係について説明する。
【0040】図中、WR_POSとあるのは、次にCP
U1が書込み可能となったときにデータを書込むバッフ
ァの番号を示しており、WR_POSの値が「2」およ
び「4」の場合には、CPU1がバッファ2および4に
それぞれデータを書込むことを示している。WR_PO
Sは、CPU1からバッファ2または4にデータが書込
まれるごとに変化し、「2」および「4」の値を交互に
取る。
【0041】RD_POSとあるのは、次にCPU1に
読み出しが可能となったときにデータを読み出すバッフ
ァの番号を示しており、RD_POSの値が「2」およ
び「4」の場合には、CPU1がバッファ2および4か
らそれぞれデータを読込むことを示している。RD_P
OSは、CPU1がバッファ2または4からデータを読
込むごとに変化し、「2」および「4」の値を交互に取
る。
【0042】WR_ENの欄の数字はWR_POSの値
と同じであり、「2」の場合には、バッファ2にCPU
1からデータの書込みが可能であることを示しており、
WR_ENの欄が「4」の場合には,バッファ4にCP
U1からデータの書込みが可能であることを示してい
る。WR_ENに示されている値は、WR_POSの値
で特定されるバッファが状態Aである場合の、WR_P
OSの値である。
【0043】RD_ENの欄の数字はRD_POSの値
と同じであり、「2」の場合には、バッファ2からCP
U1にデータの読出しが可能であることを示しており、
RD_ENの欄が「4」の場合には、バッファ4からC
PU1にデータの読出しが可能であることを示してい
る。RD_ENに示されている値は、RD_POSの値
で特定されるバッファが状態Dである場合の、RD_P
OSの値である。
【0044】LD_ENの欄が「2」の場合には、演算
器12がバッファ2からデータ読出し可能であることを
示しており、LD_ENの欄が「4」の場合には、演算
器12がバッファ4からデータ読出し可能であることを
示している。LD_ENの値は、着目しているバッファ
の状態が状態Bである場合のバッファの番号を示してい
る。なお、すべてのバッファが状態Bである場合には、
RD_POS(またはWR_POS)の値を示す。ま
た、状態Bのバッファから演算器12へデータが読み出
されると、そのバッファの状態はBからCへ遷移する。
【0045】ST_ENの欄が「2」の場合には、バッ
ファ2に演算器12の演算結果の書込みが可能であるこ
とを示しており、ST_ENの欄が「4」の場合には、
バッファ4に演算器12の演算結果の書込みが可能であ
ることを示している。ST_ENの値は、着目している
バッファの状態が状態Cである場合のバッファの番号を
示している。また、状態Cのバッファへ演算器12から
データが書込まれると、そのバッファの状態はCからD
へ遷移する。
【0046】WR_RDYの値は、いずれかのバッファ
が状態Aであるときに「H」となり、それ以外の場合に
は「L」となる。WR_RDYの欄が「H」の場合に
は、CPU1がバッファ2および4のいずれかにデータ
を書込み可能なことを示している。WR_RDYの欄が
「L」の場合には、バッファ2および4のいずれにもデ
ータを書込むことができないことを示している。なお、
CPU1がいずれかのバッファにデータを書込むと、そ
のバッファの状態はAからBへ遷移する。
【0047】RD_RDYの値は、いずれかのバッファ
が状態Dであるときに「H」となり、それ以外の場合に
は「L」となる。RD_RDYの欄が「H」の場合に
は、CPU1がバッファ2および4のいずれかからデー
タを読出し可能なことを示しており、RD_RDYの欄
が「L」の場合には、バッファ2および4のいずれかか
らもデータを読み出すことができないことを示してい
る。なお、CPU1がいずれかのバッファからデータを
読込むと、そのバッファの状態はDからAへ遷移する。
【0048】LD_RDYの値は、いずれかのバッファ
が状態Bであるとき、すなわちLD_ENの値が「2」
または「4」のときに「H」となり、それ以外の場合に
は「L」となる。LD_RDYの欄が「H」の場合に
は、演算器12が演算すべきデータがあることを示して
おり、LD_RDYの欄が「L」の場合には、演算器4
6が演算すべきデータがないことを示している。
【0049】図4の空欄は、各信号の意味する処理をい
ずれのバッファにも指示しないことを意味する。
【0050】図5および図6を参照して、このような動
作をするデータ暗号化回路で暗号化処理を行った場合の
処理について説明する。なお、各ブロックの右端に示さ
れているローマ字「A」〜「D」は、バッファ2および
4の状態を示している。初期状態では、バッファ2およ
び4ともにデータが存在しない状態を示している(S
1)。CPU1がこれから暗号化するデータをバッファ
2に書込むと、バッファ2に入力データがある状態にな
る(S2)。演算器12が入力データをバッファ2から
読込み、演算が開始される(S3)。演算の途中に、C
PU1は入力データをバッファ4に書込む(S4)。演
算が完了すると、演算器12が結果をバッファ2に書込
む(S5)。
【0051】演算器12は、すぐに入力データをバッフ
ァ4から読込み、演算を開始する(S6)。CPU1
は、演算器12が演算している間に、演算結果をバッフ
ァ2から読込む(S7)。図6を参照して、CPU1
は、次に演算すべき入力があるか否かを判断する(S
8)。次に演算すべきデータがなければ(S8でN
O)、演算が完了した時点で、演算器12が結果をバッ
ファ4に書込む(S16)。CPU1がバッファ4から
データを読込み、処理を終了する(S15)。
【0052】次に演算すべきデータがあれば(S8でY
ES)、演算の途中に、CPU1は、入力データをバッ
ファ2に書込む(S9)。演算が完了すると、演算器1
2が結果をバッファ4に書込む(S10)。演算器12
は、入力データをバッファ2から読込み、演算を開始す
る(S11)。CPU1は、演算器12が演算している
間に、演算結果を読込む(S12)。
【0053】CPU1は、次に演算すべき入力があるか
否かを判断する(S13)。次に演算すべきデータがな
ければ(S13でNO)、演算が完了した時点で、演算
器12が結果をバッファ2に書込む(S14)。CPU
1がバッファ2からデータを読込み、処理を終了する
(S15)。次に演算すべきデータがあれば、CPUが
入力データをバッファ4に書込む(図5のS4)。その
後、S5以降の処理を繰り返す。
【0054】以上説明したように、本実施の形態による
と、図1に示すように2つのバッファで構成されるリン
グバッファを用いて入力データ用バッファと出力データ
用バッファとを兼用した。このため、演算器が演算途中
であるにも関わらず、次に演算される入力データをあら
かじめ用意しておくことができ、データ暗号化回路の処
理性能が向上する。また、バッファも少なくてすむた
め、高速処理が可能なデータ暗号化回路を実現すること
ができる。
【0055】なお、演算器の処理時間は一定であるが、
バッファへの読出し、書込みを含むCPU1の処理時間
は、一般的にその時に何を実行しているかにより、まち
まちである。このため、リングバッファをさらに多段の
バッファにより構成することにより、暗号処理および復
号処理を高速に実行することができるようになる。
【0056】[第2の実施形態]図7を参照して、本発
明の第2の実施形態に係るデータ暗号化回路は、暗号化
処理または復号化処理を行なうための演算器46と、各
々演算器46に接続され、演算器46へ入力するブロッ
クデータを保持し、演算器46での演算結果を保持する
バッファ32、34および36と、バッファ32、34
および36の状態をそれぞれ保持する状態レジスタ3
8、40および42と、バッファ32、34および3
6、ならびに演算器46に接続され、バッファ32、3
4および36に暗号化処理を行なうブロックデータを書
込み、演算器46内に設けられた後述するレジスタ60
に初期値を書込み、バッファ32、34および36に保
持された演算器46での演算結果を読込むCPU31
と、状態レジスタ38、40および42、バッファ3
2、34および36、演算器46ならびにCPU31に
接続され、状態レジスタ38、40および42の状態に
従い、バッファ32、34および36、演算器46なら
びにCPU31に各種信号を供給するデコーダ44とを
含む。
【0057】バッファ32、34および36は、各々、
CPU31とデータバスDB、書込み信号WRおよび読
出し信号RDにより接続されている。これらの信号の値
によりバッファ32、34および36が取り得る状態
は、第1の実施形態で説明したバッファ2および4と同
様である。このため、その詳細な説明はここでは繰り返
さない。
【0058】また、バッファ32、34および36は、
各々、演算器46と、ロード信号LD、ストア信号S
T、データ入力信号DIおよびデータ出力信号DOによ
り接続されている。これらの信号の値によりバッファ3
2、34および36が取り得る状態は、第1の実施形態
で説明したバッファ2および4と同様である。このた
め、その詳細な説明はここでは繰り返さない。
【0059】バッファ32、34および36は、状態A
から状態Dまでの4つの状態を取り得る。状態Aおよび
状態Dについては、第1の実施形態に示したものと同様
である。このため、その詳細な説明はここでは繰り返さ
ない。
【0060】デコーダ44は、状態レジスタ38、40
および42にそれぞれ保持されたバッファ32、34お
よび36の値に応じて、以下に述べる信号をバッファ3
2、34および36、演算器46ならびにCPU31に
供給する。バッファ32には、CPU31からのデータ
の書込みの可否を示す信号WR_EN32、CPU31
によるデータの読出しの可否を示す信号LD_EN3
2、演算器46による演算結果の書込みの可否を示す信
号ST_EN32が供給される。バッファ34にも同様
の信号WR_EN34、RD_EN34、LD_EN3
4およびST_EN34を供給する。バッファ36にも
同様の信号WR_EN36、RD_EN36、LD_E
N36およびST_EN36を供給する。
【0061】また、デコーダ44は、バッファ32、3
4および36のいずれかにデータを書込むことができる
ことを示す信号WR_RDYおよびいずれかのバッファ
からデータを読み出すことができることを示す信号RD
_RDYを、CPU31に送信する。信号WR_RDY
の示す値は、信号WR#EN32、WR_EN34およ
びWR_EN36の論理和となる。信号RD_RDYの
示す値は、RD_EN32、RD_EN34およびRD
_EN36の論理和となる。
【0062】さらに、デコーダ44は、演算器46へ、
演算すべきデータがあるか否かを示す信号LD_RDY
を供給する。信号LD_RDYの値は、信号LD_EN
32、LD_EN34およびLD_EN36の論理和と
なる。信号LD_RDYに応答して、演算器46は、暗
号化処理を実行する。
【0063】CPU31から供給される信号WRは、デ
コーダ44より出力される信号WR_EN32、WR_
EN34またはWR_EN36により定められるバッフ
ァに受け入れられる。デコーダ44は、信号WR_EN
32、WR_EN34およびWR_EN36のいずれか
2つ以上の信号が同時にバッファに供給されることがな
いように制御を行なう。信号RDも同様に、デコーダ4
4より出力される信号RD_EN32、RD_EN34
またはRD_EN36により定められるバッファに受け
入れられる。デコーダ44は、信号RD_EN32、R
D_EN34およびRD_EN36のいずれか2つ以上
が同時にバッファに供給されることがないように制御を
行なう。このように、CPU31がバッファを選択する
のではなく、デコーダ44からの信号により自動的にC
PU31から出力される信号が受け入れられるか否かが
決定される。
【0064】演算器46から供給される信号LDは、デ
コーダ44より出力される信号LD_EN32、LD_
EN34または信号LD_EN36により定められるバ
ッファに受け入れられる。デコーダ44は、信号LD_
EN32、LD_EN34およびLD_EN36のいず
れか2つ以上の信号が同時にバッファに供給されること
がないように制御を行なう。信号STも同様に、デコー
ダ44より出力される信号ST_EN32、ST_EN
34またはST_EN36により定められるバッファに
受け入れられる。デコーダ10は、信号ST_EN3
2、ST_EN34およびST_EN36のいずれか2
つ以上の信号が同時にバッファに供給されることがない
ように制御を行なう。このように、演算器46がバッフ
ァを選択するのではなく、デコーダ44からの信号によ
り自動的に演算器46から出力される信号が受け入れら
れるか否かが決定される。
【0065】図8を参照して、演算器46は、ECBモ
ードの暗号化または復号化のための演算、ならびにCB
Cモードの暗号化または復号化のための演算を実行する
演算処理部62と、演算処理部62に接続され、演算処
理部62に入力される入力データおよび演算処理部62
の実行結果を保持するレジスタ60と、レジスタ60に
保持された値と、CBCモードでかつ暗号処理の場合に
1となる信号との論理積演算を実行するAND回路56
と、AND回路56およびレジスタ60に接続され、A
ND回路56の出力と入力データとの排他的論理和を求
め、レジスタ60に書込むEXOR(exclusive-OR)回
路58と、入力データとCBCモードでかつ復号処理の
場合に1となる信号との論理積演算を実行するAND回
路54と、レジスタ60およびAND回路54に接続さ
れ、レジスタ60に保持された値とAND回路54の出
力との排他的論理和を出力するEXOR回路52とを含
む。上述したようにレジスタ60にはCPU31から直
接初期値が書込まれる場合がある。
【0066】ECBモードの場合には、AND回路54
およびAND回路56の出力は0となる。このため、E
XOR回路58は入力データをレジスタ60に書込み、
EXOR回路52はレジスタ60に保持された出力デー
タを出力する。
【0067】CBCモードの暗号処理の場合には、AN
D回路56は、レジスタ60に保持された1つ前のブロ
ックの暗号データを出力する。EXOR回路58では、
現在着目しているブロックの入力データと1つ前のブロ
ックの暗号データとの排他的論理和を取り、レジスタ6
0に保持する。演算処理部62は、レジスタ60に保持
された値を暗号処理し、レジスタ60に書込む。レジス
タ60に書込まれたデータは、次のブロックの暗号化に
用いられるデータとしてEXOR回路58に与えられる
とともに、EXOR回路52を介して出力される。
【0068】CBCモードの復号処理の場合には、入力
データがレジスタ60に一旦保持され、演算処理部62
で復号された後、演算結果がレジスタ60に保持され
る。EXOR回路52は、レジスタ60に保持された演
算結果と(第2データとしてバッファから読み出した)
1つ前の入力データとの排他的論理和を取り、出力す
る。
【0069】図9は、CBCモードにおける暗号処理の
タイムチャートを示す。第2入力データと1つ前の演算
結果である第1出力データとの間で排他的論理和が計算
され、第1入力データが生成される。その後、演算処理
部62で第1入力データについての暗号化演算が実行さ
れ、演算結果がレジスタ60に保持される。演算処理
後、演算結果が第1出力データおよび第2出力データと
して出力される。
【0070】図10は、CBCモードにおける復号処理
のタイムチャートを示す。第1入力データおよび第2入
力データとして、復号対象のブロックデータがレジスタ
60に書込まれる。演算処理部62では、レジスタ60
に保持されたブロックについての復号化演算が実行さ
れ、演算結果がレジスタ60に保持される。1つ前の入
力データである第2入力データと演算結果である第1出
力データとの間で排他的論理和演算が実行され、演算結
果が第2出力データとして出力される。
【0071】図11を参照して、バッファ32、34お
よび36と、信号WR_EN32、WR_EN34、W
R_EN36、RD_EN32、RD_EN34、RD
_EN36、LD_EN32、LD_EN34、LD_
EN36、ST_EN32、ST_EN34、ST_E
N36、WR_RDY、RD_RDYおよびLD_RD
Yとの関係について説明する。
【0072】図中、WR_ENの欄が「32」、「3
4」および「36」の場合には、それぞれバッファ3
2、34および36にCPU31からデータの書込みが
可能であることを示している。WR_ENに示されてい
る値は、着目しているバッファの状態がAで、そのバッ
ファよりも1つ前のバッファの状態がAでないときの、
着目しているバッファの番号を示す。なお、着目してい
るバッファの状態がAであり、それ以外の状態がすべて
Bである場合を除く。バッファ36にとっての1つ前の
バッファとは、バッファ34を示す。バッファ34にと
っての1つ前のバッファとは、バッファ32を示す。バ
ッファ32にとっての1つ前のバッファとは、バッファ
36を示す。なお、CPU31がバッファにデータを書
込むと、そのバッファの状態はAからBへ遷移する。
【0073】RD_ENの欄が「32」、「34」およ
び「36」の場合には、それぞれバッファ32、34お
よび36からCPU31にデータの読出しが可能である
ことを示している。RD_ENに示されている値は、着
目しているバッファの状態がDで、そのバッファよりも
1つ前のバッファの状態がDでないときの、着目してい
るバッファの番号を示す。なお、CPU31がバッファ
からデータを読み出すと、そのバッファの状態はDから
Aへ遷移する。
【0074】LD_ENの欄が「32」、「34」およ
び「36」の場合には、演算器46が、それぞれバッフ
ァ32、34および36からデータ読出し可能であるこ
とを示している。LD_ENの値は、着目しているバッ
ファおよびその1つ前のバッファの状態がBで、さらに
1つ前のバッファの状態がBでないときの、着目してい
るバッファの番号を示す。なお、演算器46へのデータ
の読み出しにより、1つ前のバッファの状態がBからC
へ遷移する。
【0075】ST_ENの欄が「32」、「34」およ
び「36」の場合には、それぞれバッファ32、34お
よび36に演算器46の演算結果の書込みが可能である
ことを示している。ST_ENの値は、状態がCである
バッファの番号を示している。なお、演算器46からそ
のバッファへデータが書込まれることにより、そのバッ
ファの状態はCからDへ遷移する。
【0076】WR_RDYの値は、WR_ENに値が設
定されている場合に「H」となり、それ以外の場合には
「L」となる。WR_RDYの欄が「H」の場合には、
CPU31がバッファ32、34および36のいずれか
にデータが書込み可能なことを示している。WR_RD
Yの欄が「L」の場合には、バッファ32、34および
36のいずれにもデータを書込むことができないことを
示している。
【0077】RD_RDYの値は、いずれかのバッファ
が状態Dであるとき、すなわちRD_ENに値が設定さ
れているときに「H」となり、それ以外の場合には
「L」となる。RD_RDYの欄が「H」の場合には、
CPU31がバッファ32、34および36のいずれか
からデータを読出し可能なことを示しており、RD_R
DYの欄が「L」の場合には、バッファ32、34およ
び36のいずれかからもデータを読み出すことができな
いことを示している。
【0078】LD_RDYの値は、いずれかのバッファ
が状態Bであるとき、すなわちLD_ENに値が設定さ
れているときに「H」となり、それ以外の場合には
「L」となる。LD_RDYの欄が「H」の場合には、
演算器46が演算すべきデータがあることを示してお
り、LD_RDYの欄が「L」の場合には、演算器46
が演算すべきデータがないことを示している。
【0079】図11の空欄は、各信号の意味する処理を
いずれのバッファにも指示しないことを意味する。
【0080】以下、図12〜図20を参照して、このよ
うな動作をするデータ暗号化回路で暗号処理および復号
処理を行なった場合のバッファ32、34および36の
状態について説明する。なお、各ブロックの右端に示さ
れているローマ字「A」〜「D」は、バッファ2および
4の状態を示している。
【0081】CBC復号においてはバッファにIVデー
タを設定しておくことが必要で、CBC暗号においては
バッファではなくレジスタ60にIVデータを設定して
おくことが必要で、ECBにおいてはいずれも必要がな
い。
【0082】しかし、処理を共通化するためにIVデー
タの必要性の有無にかかわらず最初のデータは常にバッ
ファ32およびレジスタ60に書込まれ、その結果、バ
ッファ32はB状態となるようにしてもよい。
【0083】この場合、ECBでは最初のデータは使用
されないダミーのIVデータとなる。もちろん初期デー
タの設定方法はこれに限られるものではなく、他の方法
であってもよい。
【0084】図12〜図14を参照して、データ暗号化
回路でECBモードの暗号処理または復号処理を行なっ
た場合について説明する。以下の説明では、入力データ
(1)〜(4)の順に4つのブロックデータが入力され
る場合について説明するが、入力データは4つに限定さ
れるものではなく、それ以上の個数であっても、それ以
下の個数であってもよいのは言うまでもない。
【0085】図12を参照して、CPU31がダミーの
IVデータをバッファ32に書込むと、バッファ32に
入力データがある状態になる(S22)。また、この状
態ではバッファ34および36には入力データは保持さ
れていない。CPU31が次に処理するデータをバッフ
ァ34に書込むと、バッファ34に入力データがある状
態になる(S24)。演算器46が入力データをバッフ
ァ34から読込み、演算を開始する(S26)。次に、
CPU31が入力データをバッファ36に書込む(S2
8)。演算が完了すると、演算器46は、演算結果をバ
ッファ32に書込む(S30)。
【0086】図13を参照して、演算器46は、入力デ
ータをバッファ36から読込み、演算を開始する(S3
2)。演算の間に、CPU31が演算結果データをバッ
ファ32から読込む(S34)。CPU31は、入力デ
ータをバッファ32に書込む(S36)。演算が完了す
ると、演算器46が結果データをバッファ34に書込む
(S38)。演算器46が入力データをバッファ32か
ら読込み、演算を開始する(S40)。CPU31が演
算結果データをバッファ34から読込む(S42)。
【0087】図14を参照して、CPU31が入力デー
タをバッファ34に書込む(S44)。演算が完了し、
演算器46が結果データをバッファ36に書込む(S4
6)。演算器46が入力データをバッファ34から読込
み、演算を開始する(S48)。CPU31が演算結果
データをバッファ36から読込む(S50)。演算が完
了すると、演算器46が結果データをバッファ32に書
込む(S52)。CPU31が演算結果データをバッフ
ァ32から読込む(S54)。以上説明したような処理
を繰り返すことにより、ECBモードでの暗号処理およ
び復号処理が実現される。
【0088】図15〜図17を参照して、データ暗号化
回路でCBCモードの暗号処理を行なった場合について
説明する。以下の説明では、入力データ(1)〜(4)
の順に4つのブロックデータが入力される場合について
説明するが、入力データは4つに限定されるものではな
く、それ以上の個数であっても、それ以下の個数であっ
てもよいのは言うまでもない。
【0089】図15を参照して、初期状態では、バッフ
ァ32、34および36ともにデータが存在しない状態
を示している(S62)。CPU31がIVデータをバ
ッファ32および演算器46内のレジスタ60に書込む
(S64)。CPU31が入力データをバッファ34に
書込む(S66)。演算器46が入力データをバッファ
34から読込み、演算器46内のレジスタ60に書込ま
れたIVデータとの排他的論理和を取った後、演算を開
始する(S68)。CPU31が入力データをバッファ
36に書込む(S70)。演算が完了すると、演算器4
6が結果データをバッファ32に書込む(S72)。
【0090】図16を参照して、演算器46は、入力デ
ータをバッファ36から読込み、演算器46内に残って
いる1つ前の結果データと排他的論理和を取った後、演
算を開始する(S74)。CPU31が演算結果データ
をバッファ32から読込む(S76)。CPU31が入
力データをバッファ32に書込む(S78)。演算が完
了すると、演算器46が結果データをバッファ34に書
込む(S80)。演算器46は、入力データをバッファ
32から読込み、演算器46内に残っている1つ前の結
果データと排他的論理和を取った後,演算を開始する
(S82)。CPU31が入力データをバッファ34か
ら読込む(S84)。
【0091】図17を参照して、CPU31が入力デー
タをバッファ34に書込む(S86)。演算が完了し、
演算器46が結果データをバッファ36に書込む(S8
8)。演算器46が入力データをバッファ34から読込
み、演算器46内に残っている1つ前の結果データと排
他的論理和を取った後、演算を開始する(S90)。C
PU31が演算結果データをバッファ34から読込む
(S92)。演算が完了すると、演算器46が結果デー
タをバッファ32に書込む(S94)。CPU31は、
演算結果データをバッファ32から読込む(S96)。
【0092】以上説明したような一連の処理を繰り返す
ことにより、CBCモードの暗号化処理が実現される。
【0093】図18〜図20を参照して、データ暗号化
回路でCBCモードの復号処理を行なった場合について
説明する。以下の説明では、入力データ(1)〜(4)
の順に4つのブロックデータが入力される場合について
説明するが、入力データは4つに限定されるものではな
く、それ以上の個数であっても、それ以下の個数であっ
てもよいのは言うまでもない。
【0094】図18を参照して、初期状態では、バッフ
ァ32、34および36ともにデータが存在しない状態
を示している(S102)。CPU31がIVデータを
バッファ32および演算器46内のレジスタ60に書込
む(S104)。CPU31が入力データをバッファ3
4に書込む(S106)。演算器46が入力データをバ
ッファ34から読込み、演算を開始する(S108)。
CPU31が入力データを36に書込む(S110)。
演算が完了すると、演算器46が、結果データとバッフ
ァ32に保持されたIVデータとの排他的論理和を取
り、バッファ32に書込む(S112)。
【0095】図19を参照して、演算器46が入力デー
タをバッファ36から読込み、演算を開始する(S11
4)。CPU31が演算結果データをバッファ32から
読込む(S116)。CPU31が入力データをバッフ
ァ32に書込む(S118)。演算が完了すると、演算
器46は、結果データとバッファ34に保持されている
1つ前の入力データとの排他的論理和を求め,バッファ
34に書込む(S120)。演算器46は、入力データ
をバッファ32から読込み、演算を開始する(S12
2)。CPU31は、演算結果データをバッファ34か
ら読込む(S124)。
【0096】図20を参照して、CPU31は入力デー
タをバッファ34に書込む(S126)。演算が完了す
ると、演算器46は、結果データとバッファ36に保持
されている1つ前の入力データとの排他的論理和を求
め、バッファ36に書込む(S128)。演算器46
は、入力データをバッファ34から読込み、演算を開始
する(S130)。CPU31は、演算結果データをバ
ッファ36から読込む(S132)。演算が完了する
と、演算器46は、結果データとバッファ32に残って
いる1つ前の入力データとの排他的論理和を求め、バッ
ファ32に書込む(S134)。CPU31が演算結果
データをバッファ2から読込む(S136)。
【0097】1つ前の入力データのバッファの番号は、
結果を書込むバッファの番号と同じであり、ST_EN
32、34、36を用いて1つ前の入力データのバッフ
ァを特定することができる。
【0098】以上説明したような一連の処理を繰り返す
ことにより、CBCモードの復号化処理が実現される。
【0099】以上説明したように、本実施の形態による
と、図7に示すように3つのバッファで構成されるリン
グバッファを用いて入力データ用バッファと出力データ
用バッファとを兼用した。このため、演算器が演算途中
であるにも関わらず、次に演算される入力データをあら
かじめ用意しておくことができ、データ暗号化回路の処
理性能が向上する。また、バッファも少なくてすむた
め,回路規模が小さく、高速処理が可能なデータ暗号化
回路を実現することができる。
【0100】なお、演算器の処理時間は一定であるが、
バッファへの読み出し、書込みを含むCPU31の処理
時間は、一般的にその時に何を実行しているかにより、
まちまちである。このため、リングバッファをさらに多
段のバッファにより構成することにより、暗号処理およ
び復号処理を高速に実行することができるようになる。
【0101】また、本実施の形態では、ECBモードに
おける暗号化処理および復号化処理、ならびにCBCモ
ードにおける暗号化処理および復号化処理を1つの回路
で実現することができる。
【0102】なお、図2を参照して、入力データは、レ
ジスタ22を介さず、直接、演算処理部21に入力して
もよい。また、レジスタ22には、演算処理部21の中
間データを一時的に保持してもよい。
【0103】また、図8を参照して、第2入力データ
は、レジスタ60を介さず、直接演算処理部62に入力
してもよい。また、レジスタ60には、演算処理部62
の中間データを一時的に保持していもよい。
【0104】今回開示された実施の形態はすべての点で
例示であって制限的なものではないと考えられるべきで
ある。本発明の範囲は上記した説明ではなくて特許請求
の範囲によって示され、特許請求の範囲と均等の意味お
よび範囲内でのすべての変更が含まれることが意図され
る。
【0105】
【発明の効果】回路規模が小さく、かつ高速処理が可能
なデータ暗号化回路を実現することができる。
【図面の簡単な説明】
【図1】 第1の実施形態に係るデータ暗号化回路の構
成を示すブロック図である。
【図2】 第1の実施形態に係る演算器の構成を示すブ
ロック図である。
【図3】 第1の実施形態に係る演算器のタイムチャー
トである。
【図4】 バッファとデコーダより出力される各種信号
との関係を示した表である。
【図5】 データ暗号化回路による暗号化処理のフロー
チャートである。
【図6】 データ暗号化回路による暗号化処理のフロー
チャートである。
【図7】 第2の実施形態に係るデータ暗号化回路の構
成を示すブロック図である。
【図8】 第2の実施形態に係る演算器の構成を示すブ
ロック図である。
【図9】 第2の実施形態に係る演算器によるCBCモ
ードの暗号化時におけるタイムチャートである。
【図10】 第2の実施形態に係る演算器によるCBC
モードの復号化時におけるタイムチャートである。
【図11】 バッファとデコーダより出力される各種信
号との関係を示した表である。
【図12】 ECBモードにおける暗号化処理または復
号化処理のフローチャートである。
【図13】 ECBモードにおける暗号化処理または復
号化処理のフローチャートである。
【図14】 ECBモードにおける暗号化処理または復
号化処理のフローチャートである。
【図15】 CBCモードにおける暗号化処理のフロー
チャートである。
【図16】 CBCモードにおける暗号化処理のフロー
チャートである。
【図17】 CBCモードにおける暗号化処理のフロー
チャートである。
【図18】 CBCモードにおける暗号化処理のフロー
チャートである。
【図19】 CBCモードにおける暗号化処理のフロー
チャートである。
【図20】 CBCモードにおける暗号化処理のフロー
チャートである。
【図21】 ECBモードにおける暗号化処理および復
号化処理の概要を示す図である。
【図22】 CBCモードにおける暗号化処理および復
号化処理の概要を示す図である。
【図23】 バッファリングがない場合の暗号化処理の
タイムチャートである。
【図24】 バッファリングがある場合の暗号化処理の
タイムチャートである。
【符号の説明】
1,31 CPU、4,32,34,36 バッファ、
6,8,38,40,42 状態レジスタ、10,44
デコーダ、12,46 演算器、21,62演算処理
部、22,60 レジスタ、52,58 EXOR回
路、54,56AND回路。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 複数のバッファを含むバッファ部と、 前記バッファ部に接続され、前記バッファ部に含まれる
    いずれのバッファともデータを入出力可能であり、前記
    バッファ部に含まれるいずれかのバッファより処理対象
    のブロックデータを読込み、暗号演算処理または復号演
    算処理を実行し、いずれかのバッファに処理結果を書込
    む演算器と、 前記バッファ部に接続され、前記バッファ部に含まれる
    いずれかのバッファに処理対象のブロックデータを書込
    み、いずれかのバッファから前記演算器での演算結果を
    読込むデータ制御部と、 前記バッファ部、前記演算器および前記データ制御部に
    接続され、前記演算器がデータを読込むバッファ、前記
    演算器がデータを書込むバッファ、前記データ制御部が
    データを読込むバッファおよび前記データ制御部がデー
    タを書込むバッファとが重ならないように、前記演算器
    および前記データ制御部の入出力の対象となるバッファ
    を指定するバッファ指定部とを含む、データ暗号化回
    路。
  2. 【請求項2】 前記バッファ指定部は、 前記バッファ部に含まれる複数のバッファの取る状態を
    それぞれ保持する複数の状態レジスタと、 前記複数の状態レジスタに接続され、前記複数の状態レ
    ジスタの値に応じた信号を、前記バッファ部を構成する
    複数のバッファ、前記演算器および前記データ制御部に
    供給するデコーダとを含み、 前記演算器および前記データ制御部は、前記デコーダよ
    り供給される信号に基づいて動作する、請求項1に記載
    のデータ暗号化回路。
  3. 【請求項3】 前記複数の状態レジスタの各々は、対応
    するバッファに、演算前のデータを書込み可能な状態、
    演算前のデータが記憶されている状態、演算結果が記憶
    されている状態、および記憶されていたデータが演算中
    の状態のいずれかを示すデータを記憶している、請求項
    2に記載のデータ暗号化回路。
  4. 【請求項4】 前記デコーダは、前記複数のバッファの
    各々に、前記データ制御部がブロックデータを書込み可
    能か否かを示す第1の信号、前記データ制御部が演算結
    果を読込み可能か否かを示す第2の信号、前記演算器が
    演算待ちの入力データを取り出し可能か否かを示す第3
    の信号、および前記演算器が演算結果を書込み可能か否
    かを示す第4の信号を供給する、請求項2または3に記
    載のデータ暗号化回路。
  5. 【請求項5】 前記デコーダは、前記演算器がブロック
    データを取出したのと同じバッファに演算結果を書込む
    ように、前記第3および第4の信号を供給する、請求項
    4に記載のデータ暗号化回路。
  6. 【請求項6】 前記バッファ指定部は、前記演算器がデ
    ータを書込むバッファと、前記データ制御部がデータを
    読込むバッファとが重ならないように指定する、請求項
    1に記載のデータ暗号化回路。
  7. 【請求項7】 前記バッファ部は、3つ以上のバッファ
    により構成される、請求項1〜6のいずれかに記載のデ
    ータ暗号化回路。
  8. 【請求項8】 前記演算器は、 データを保持するレジスタと、 前記レジスタに接続され、前記レジスタに保持されたデ
    ータに対して暗号化演算または復号化演算を施し、演算
    結果を前記レジスタに書込む演算処理部と、 前記レジスタに接続され、前記モードがCipher Block C
    hainingモードでかつ現在行なっている処理が暗号処理
    の場合に前記レジスタに保持された値を出力し、それ以
    外の場合に0を出力する第1の選択回路と、 前記第1の選択回路、前記バッファ部および前記レジス
    タに接続され、前記第1の選択回路の出力および前記バ
    ッファ部を構成するいずれかのバッファに保持された値
    の排他的論理和を求め、それを暗号化演算対象の入力と
    する、第1の排他的論理和回路と、 前記バッファ部に接続され、暗号モードがCipher Block
    Chainingモードでかつ現在行なっている処理が復号処
    理の場合に前記バッファ部を構成するいずれかのバッフ
    ァに保持された値とを出力し、それ以外の場合に0を出
    力する第2の選択回路と、 前記第2の選択回路、前記バッファ部および前記レジス
    タに接続され、前記第2の選択回路の出力および前記レ
    ジスタに保持された値の排他的論理和を求め、前記バッ
    ファ部を構成するいずれかのバッファに書込む第2の排
    他的論理和回路とを含む、請求項7に記載のデータ暗号
    化回路。
  9. 【請求項9】 前記バッファ指定部は、前記バッファ部
    をリングバッファとして機能させる、請求項1〜8のい
    ずれかに記載のデータ暗号化回路。
JP2001167780A 2001-06-04 2001-06-04 データ暗号化回路 Expired - Fee Related JP4761652B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001167780A JP4761652B2 (ja) 2001-06-04 2001-06-04 データ暗号化回路
US10/095,057 US20020181704A1 (en) 2001-06-04 2002-03-12 Data encryption circuit pre-holding next data to be operated in buffer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001167780A JP4761652B2 (ja) 2001-06-04 2001-06-04 データ暗号化回路

Publications (2)

Publication Number Publication Date
JP2002358008A true JP2002358008A (ja) 2002-12-13
JP4761652B2 JP4761652B2 (ja) 2011-08-31

Family

ID=19010118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001167780A Expired - Fee Related JP4761652B2 (ja) 2001-06-04 2001-06-04 データ暗号化回路

Country Status (2)

Country Link
US (1) US20020181704A1 (ja)
JP (1) JP4761652B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004226969A (ja) * 2003-01-24 2004-08-12 Samsung Electronics Co Ltd 暗号システム及び多様なモードを支援する方法
KR100583635B1 (ko) * 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
JP2011530754A (ja) * 2008-08-11 2011-12-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 暗号化ファイル・システムにおける改善された入出力制御および効率
JP2012517628A (ja) * 2009-02-09 2012-08-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 電力損失事象時にnvsデータを迅速に保護する方法、システム、及びコンピュータ・プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008060653A (ja) * 2006-08-29 2008-03-13 Matsushita Electric Ind Co Ltd 制御装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01169607A (ja) * 1987-12-25 1989-07-04 Toshiba Corp プログラマブルコントローラ
JPH02163820A (ja) * 1988-12-16 1990-06-25 Mitsubishi Electric Corp データバッファ装置
JPH10143439A (ja) * 1996-11-12 1998-05-29 Fujitsu Ltd データ処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5161193A (en) * 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
US5631960A (en) * 1995-08-31 1997-05-20 National Semiconductor Corporation Autotest of encryption algorithms in embedded secure encryption devices
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6870929B1 (en) * 1999-12-22 2005-03-22 Juniper Networks, Inc. High throughput system for encryption and other data operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01169607A (ja) * 1987-12-25 1989-07-04 Toshiba Corp プログラマブルコントローラ
JPH02163820A (ja) * 1988-12-16 1990-06-25 Mitsubishi Electric Corp データバッファ装置
JPH10143439A (ja) * 1996-11-12 1998-05-29 Fujitsu Ltd データ処理装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004226969A (ja) * 2003-01-24 2004-08-12 Samsung Electronics Co Ltd 暗号システム及び多様なモードを支援する方法
KR100583635B1 (ko) * 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
US7885404B2 (en) 2003-01-24 2011-02-08 Samsung Electronics Co., Ltd. Cryptographic systems and methods supporting multiple modes
JP2011530754A (ja) * 2008-08-11 2011-12-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 暗号化ファイル・システムにおける改善された入出力制御および効率
JP2012517628A (ja) * 2009-02-09 2012-08-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 電力損失事象時にnvsデータを迅速に保護する方法、システム、及びコンピュータ・プログラム
US10133883B2 (en) 2009-02-09 2018-11-20 International Business Machines Corporation Rapid safeguarding of NVS data during power loss event

Also Published As

Publication number Publication date
JP4761652B2 (ja) 2011-08-31
US20020181704A1 (en) 2002-12-05

Similar Documents

Publication Publication Date Title
AU767323B2 (en) Block encryption device using auxiliary conversion
EP0802653B1 (en) Multi-cycle non-parallel data encryption engine
JP4684550B2 (ja) 多数の動作モードを支援する暗号化装置
EP1271839B1 (en) AES Encryption circuit
JP4767985B2 (ja) 複数モードでのaes暗号化または復号の単一命令での実行
US8391475B2 (en) Method and apparatus for advanced encryption standard (AES) block cipher
JPWO2009075337A1 (ja) 暗号化方法及び復号化方法、装置並びにプログラム
US20040252831A1 (en) Key expander, key expansion method, and key expansion program
GB2398213A (en) Encryption using the KASUMI algorithm
US6732271B1 (en) Method of deciphering ciphered data and apparatus for same
US7257229B1 (en) Apparatus and method for key scheduling
WO1998054687A1 (fr) Processeur cryptographique, carte de circuits integres et procede de traitement cryptographique
JP2002358008A (ja) データ暗号化回路
JPH07261662A (ja) 暗号演算回路
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
Lee et al. Lightweight and low-latency AES accelerator using shared SRAM
JP2002297030A (ja) 暗号処理装置及び暗号処理方法並びにプログラム
CN112054889B (zh) 消息认证码的生成方法及生成装置、计算机可读存储介质
JPH10153954A (ja) 暗号装置
KR100546777B1 (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
KR20050095168A (ko) 다중 암/복호 연산용 프로세서
KR20040000925A (ko) 다양한 인터페이스를 갖는 고속 블럭 암호 장치 및 그구동 방법
CN115883060A (zh) 一种aes密钥处理电路及方法
JP2003288010A (ja) 暗号装置及びデータ転送制御装置
JPH01234883A (ja) 可変型暗号化処理制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080416

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110510

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: 20110531

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110607

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees