JP2004038103A - 暗号回路 - Google Patents
暗号回路 Download PDFInfo
- Publication number
- JP2004038103A JP2004038103A JP2002198800A JP2002198800A JP2004038103A JP 2004038103 A JP2004038103 A JP 2004038103A JP 2002198800 A JP2002198800 A JP 2002198800A JP 2002198800 A JP2002198800 A JP 2002198800A JP 2004038103 A JP2004038103 A JP 2004038103A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- key
- output
- function
- data
- 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
Images
Abstract
【解決手段】処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路と、処理ブロック128ビットのデータに対するB関数処理とI関数処理とを同時に実行するB+I関数回路と、R+I/2関数回路の出力およびB+I関数回路の出力のいずれか1つを選択的に出力する第1セレクタと、入力データまたは第1セレクタの出力を格納するとともにR+I/2関数回路およびB+I関数回路にデータを供給するレジスタ回路とを実装する。
【選択図】 図2
Description
【発明の属する技術分野】
本発明は、暗号装置に用いられるデータスクランブル回路、データスクランブル回路で用いる拡大鍵を生成するための中間鍵生成回路および拡大鍵生成回路、さらにこれらデータスクランブル回路、中間鍵生成回路および拡大鍵生成回路を備える暗号化/復号化回路に関する。
【0002】
【従来の技術】
現在広く使用されている共通鍵暗号として、DES(Data Encryption Standard)が知られている。DESは、1977年に米国政府の標準局NIST(NationalInstitute of Standard Technology)が定めた標準であり、64ビット入出力、鍵長64ビット(そのうち8ビットはパリティであり実質的には鍵長56ビット)のブロック暗号である。
DESは、F関数と呼ばれる非線形関数処理を16回繰り返し行うアルゴリズムである。このため、DESによる暗号化/復号化を処理するための暗号回路は、たとえば特開2000−75785号公報に示されるように、F関数を繰り返し行うクロック同期ループ構成で実現することが可能である。
【0003】
DESにより暗号化された暗号文を暗号鍵の総当たり法により解読する場合、鍵長64ビット(56ビット)の場合であっても、計算量的安全性評価の範囲内であると数年前では考えられていた。しかながら、コンピュータの性能向上に伴い、鍵長64ビット(56ビット)でも十分な計算量的安全性を確保することが困難となってきている。このため、複数の暗号鍵を用いて、処理を複数回繰り返す多段DESが用いられる。たとえば、2〜3の暗号鍵を用いて処理を3回繰り返すトリプルDESが一般的に多く用いられている。
このようなDESに代わる次世代共通鍵暗号として、鍵長128/192/256ビット、処理ブロック128ビットの暗号AES(Advanced Encryption Standard)を標準化しようとする動きがあり、米国標準としてのAESが固まりつつある。
【0004】
本件出願人は、このようなAESに準拠した仕様(鍵長128/192/256ビット、処理ブロック128ビット)で高い安全性を維持するとともに高速処理を実現するためのアルゴリズムSC2000を発表し、このSC2000に用いる演算装置および演算方法として特願2000−212482号、このSC2000に用いる拡大鍵生成装置として特願2000−212814号において提案している。
このSC2000は、DESと同様にいくつかの基本関数を繰り返し行うアルゴリズムであり、各関数処理回路をハードウェアで構成する場合、ループ回路を構成して繰り返し処理を実行するように構成できる。しかしながら、SC2000の暗号方式では、DESにようにF関数だけで構成される暗号方式とは異なり、単純に1つの関数処理回路を1つの同期ループ内で処理できるように構成することができず、各種関数処理回路による関数処理を同期ループ内で効率的に行えるように、各種関数処理回路をいかに配置するかがハードウェア実装時における大きな課題となっている。
【0005】
本件出願人は、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号であるSC2000のアルゴリズムを高速かつコンパクトなハードウェアで実行する回路構成、および電子商取引や電子マネーに応用されるスマートカードに暗号回路を搭載するために、SC2000アルゴリズムをさらにコンパクトなハードウェアで実行する回路構成を、国際出願番号PCT/JP01/05095号(出願日:2001年6月1日)、特願2002−018538(出願日:2002年1月28日)において提案している。
本発明は、高速処理が必要な通信装置や暗号アクセラレータに搭載することを目的に、上述した暗号回路の構成をさらに改良し、ハードウェア規模を同等以下でより高速な回路構成と、速度低下を最小限に抑えながらコンパクトなハードウェアで実行する回路構成を提供する。
【0006】
【課題を解決するための手段】
本発明に係るデータスクランブル回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路と、処理ブロック128ビットのデータに対するB関数処理とI関数処理とを同時に実行するB+I関数回路と、前記R+I/2関数回路の出力および前記B+I関数回路の出力のいずれか1つを選択的に出力する第1セレクタと、入力データまたは前記第1セレクタの出力を格納するとともに前記R+I/2関数回路およびB+I関数回路にデータを供給するレジスタ回路とを実装する。
【0007】
ここで、レジスタ回路と第1セレクタとの間に、R+I/2関数回路とB+I関数回路とが並列に接続され、第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成することができる。
また、R+I/2関数回路は、32ビット×4の入力データ(A,B,C,D)のうち入力データCに対して非線形処理であるM関数処理を実行する第1M関数回路と、入力データDに対して非線形処理であるM関数処理を実行する第2M関数回路と、前記第1M関数回路の出力と定数”0x55555555”, ”0x33333333”のうちいずれかの論理積演算を行う第1AND回路と、前記第1AND回路の出力と前記第2M関数回路の出力との排他的論理和演算を行う第1XOR回路と、前記第2M関数回路の出力と定数”0xAAAAAAAA”,”0xCCCCCCCC”のうちいずれかの論理積演算を行う第2AND回路と、前記第2AND回路の出力と前記第1M関数回路の出力との排他的論理和演算を行う第2XOR回路と、前記第1XOR回路の出力と入力データAとの排他的論理和演算を行ってその結果を出力データCとして出力する第3XOR回路と、前記第2XOR回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データDとして出力する第4XOR回路と、入力データCと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第5XOR回路と、入力データDと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第6XOR回路とを備える構成とすることができる。
【0008】
また、B+I関数回路は、32ビット×4の入力データ(A,B,C,D)が(C,D,A,B)の順に並び替えて入力され、4ビット×32の出力データに変換する入力データ変換部と、前記入力データ変換部のi番目(i=1〜32)の出力データに対して非線形処理を実行する32個の4ビットSbox処理回路と、前記入力データ変換部のi番目の出力データに対して前記Sbox処理回路の逆変換処理を実行する32個の4ビットS−1box処理回路と、前記入力データ変換部のi番目の出力データ、i番目の4ビットSbox処理回路の出力およびi番目の4ビットS−1box処理回路の出力のうちいずれかを出力する32個のセレクタ(Bi)と、前記セレクタ(Bi)から出力される4ビット×32個の出力データを32ビット×4の出力データに変換する出力データ変換部と、前記出力データ変換部の出力のうち第1の32ビット出力データと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第7XOR回路と、前記出力データ変換部の出力のうち第2の32ビット出力データと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第8XOR回路と、第3拡大鍵とデータ”0”のいずれかを選択的に出力する第2セレクタと、前記出力データ変換部の出力のうち第3の32ビット出力データと前記第2セレクタの出力との排他的論理和演算を行ってその結果を出力データCとして出力する第9XOR回路と、第4拡大鍵とデータ”0”のいずれかを選択的に出力する第3セレクタと、前記出力データ変換部の出力のうち第4の32ビット出力データと前記第3セレクタの出力との排他的論理和演算を行ってその結果を出力データDとして出力する第10XOR回路とを備える構成とすることができる。
【0009】
本発明に係る鍵スケジュール回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第1〜第3中間鍵選択回路と、前記第1中間鍵選択回路で選択された中間鍵に基づいて第1拡大鍵を生成する第1拡大鍵生成回路と、前記第2中間鍵選択回路で選択された中間鍵に基づいて第2拡大鍵を生成する第2拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第3中間鍵選択回路で選択された中間鍵に基づいて第3拡大鍵および第4拡大鍵を生成する鍵演算回路とを備える。
【0010】
ここで、前記鍵スケジュール回路は、暗号鍵(K0,K1,K2,K3)から算出される初期データ(K’0,K’1,K’2,K’3)を格納する入力レジスタ回路を備え、前記鍵演算回路は、暗号鍵(K0,K1,K2,K3)、入力レジスタ回路内に格納された初期データ(K’0,K’1,K’2,K’3)および第3中間鍵選択回路の出力(KEYX,LEYY,KEYZ,KEYW)を入力として、前記レジスタ回路の第1出力(K’O)および第3出力(K’2)のうちいずれかを出力する第4セレクタと、前記レジスタ回路の第2出力(K’1)および第4出力(K’3)のうちのいずれかを出力する第5セレクタと、前記第5セレクタの出力、前記第5セレクタの出力を1ビット左シフトしたデータおよびデータ’0’のうちのいずれかを出力する第6セレクタと、前記第4セレクタの出力と前記第3中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータのうちいずれかを出力する第7セレクタと、前記第3中間鍵選択回路の第2出力(KEYY)と定数M(i)(i=0〜11)とのうちいずれかを出力する第8セレクタと、前記第5セレクタの出力と前記第3中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータのうちいずれかを出力する第9セレクタと、前記第6セレクタの出力と前記第3中間鍵選択回路の第4出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する第10セレクタと、データ’0’とデータ’1’のうちいずれかを出力する第11セレクタと、前記第7セレクタの出力と第8セレクタの出力を加算する第1加算回路と、前記第11セレクタの出力を最下位ビットへのキャリとして前記第9セレクタの出力と第10セレクタの出力とを加算する第2加算回路と、前記第2加算回路の出力と前記第2加算回路の出力を1ビット左ローテーションしたデータのうちのいずれかを出力する第12セレクタと、前記第1加算回路の出力と第12セレクタの出力との排他的論理和演算を行いその出力を第3拡大鍵として出力する第11XOR回路と、前記第11XOR回路の出力を一時的に格納し第4拡大鍵として出力する出力レジスタ回路と、前記出力レジスタ回路の出力と暗号鍵(K0,K1,K2,K3)のいずれかを出力する第13セレクタと、前記第13セレクタの出力に対してM関数処理を行いその結果を中間鍵として出力するM関数回路とを備える構成とすることができる。
【0011】
また、中間鍵生成時には暗号鍵(K0,K1,K2,K3)をM関数回路によりM関数処理した初期データ(K’0,K’1,K’2,K’3)を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ(K’0,K’1,K’2,K’3)を用いて演算された中間鍵(IMKEY)を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第1拡大鍵生成回路で生成される第1拡大鍵(EXKEY1)、第2拡大鍵生成回路で生成される第2拡大鍵(EXKEY2)、鍵演算回路で生成される第3拡大鍵(EXKEY3)および第4拡大鍵(EXKEY4)をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用するように構成できる。
さらに、前記第1拡大鍵生成回路および第2拡大鍵生成回路は、それぞれ前記第1中間鍵選択回路および第2中間鍵選択回路の出力 (KEYX,KEYY,KEYZ,KEYW)と入力とし、前記中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータと中間鍵選択回路の第2出力(KEYY)との加算処理を行う鍵生成回路内加算回路と、前記中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータと中間鍵選択回路の第4出力(KEYW)との減算処理を行う鍵生成回路内減算回路と、前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を1ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内XOR回路とを備える構成とすることができる。
【0012】
本発明に係る暗号回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路と、処理ブロック128ビットのデータに対するB関数処理とI関数処理とを同時に実行するB+I関数回路と、前記R+I/2関数回路の出力および前記B+I関数回路の出力のいずれか1つを選択的に出力する第1セレクタと、入力データまたは前記第1セレクタの出力を格納するとともに前記R+I/2関数回路およびB+I関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第1〜第3中間鍵選択回路と、前記第1中間鍵選択回路で選択された中間鍵に基づいて第1拡大鍵を生成する第1拡大鍵生成回路と、前記第2中間鍵選択回路で選択された中間鍵に基づいて第2拡大鍵を生成する第2拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第3中間鍵選択回路で選択された中間鍵に基づいて第3拡大鍵および第4拡大鍵を生成する鍵演算回路とを備える鍵スケジュール回路とを含んでいる。
【0013】
ここで、前記レジスタ回路と第1セレクタとの間に、R+I/2関数回路とB+I関数回路とが並列に接続され、第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成することができる。
また、前記R+I/2関数回路は、32ビット×4の入力データ(A,B,C,D)のうち入力データCに対して非線形処理であるM関数処理を実行する第1M関数回路と、入力データDに対して非線形処理であるM関数処理を実行する第2M関数回路と、前記第1M関数回路の出力と定数”0x55555555”, ”0x33333333”のうちいずれかの論理積演算を行う第1AND回路と、前記第1AND回路の出力と前記第2M関数回路の出力との排他的論理和演算を行う第1XOR回路と、前記第2M関数回路の出力と定数”0xAAAAAAAA”,”0xCCCCCCCC”のうちいずれかの論理積演算を行う第2AND回路と、前記第2AND回路の出力と前記第1M関数回路の出力との排他的論理和演算を行う第2XOR回路と、前記第1XOR回路の出力と入力データAとの排他的論理和演算を行ってその結果を出力データCとして出力する第3XOR回路と、前記第2XOR回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データDとして出力する第4XOR回路と、入力データCと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第5XOR回路と、入力データDと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第6XOR回路とを備える構成とすることができる。
【0014】
また、前記B+I関数回路は、32ビット×4の入力データ(A,B,C,D)が(C,D,A,B)の順に並び替えて入力され、4ビット×32の出力データに変換する入力データ変換部と、前記入力データ変換部のi番目(i=1〜32)の出力データに対して非線形処理を実行する32個の4ビットSbox処理回路と、前記入力データ変換部のi番目の出力データに対して前記Sbox処理回路の逆変換処理を実行する32個の4ビットS−1box処理回路と、前記入力データ変換部のi番目の出力データ、i番目の4ビットSbox処理回路の出力およびi番目の4ビットS−1box処理回路の出力のうちいずれかを出力する32個のセレクタ(Bi)と、前記セレクタ(Bi)から出力される4ビット×32個の出力データを32ビット×4の出力データに変換する出力データ変換部と、前記出力データ変換部の出力のうち第1の32ビット出力データと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第7XOR回路と、前記出力データ変換部の出力のうち第2の32ビット出力データと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第8XOR回路と、第3拡大鍵とデータ”0”のいずれかを選択的に出力する第2セレクタと、前記出力データ変換部の出力のうち第3の32ビット出力データと前記第2セレクタの出力との排他的論理和演算を行ってその結果を出力データCとして出力する第9XOR回路と、第4拡大鍵とデータ”0”のいずれかを選択的に出力する第3セレクタと、前記出力データ変換部の出力のうち第4の32ビット出力データと前記第3セレクタの出力との排他的論理和演算を行ってその結果を出力データDとして出力する第10XOR回路とを備える構成とすることができる。
【0015】
さらに、前記鍵スケジュール回路は、暗号鍵(K0,K1,K2,K3)から算出される初期データ(K’0,K’1,K’2,K’3)を格納する入力レジスタ回路を備え、前記鍵演算回路は、暗号鍵(K0,K1,K2,K3)、入力レジスタ回路内に格納された初期データ(K’0,K’1,K’2,K’3)および第3中間鍵選択回路の出力(KEYX,LEYY,KEYZ,KEYW)を入力として、前記レジスタ回路の第1出力(K’O)および第3出力(K’2)のうちいずれかを出力する第4セレクタと、前記レジスタ回路の第2出力(K’1)および第4出力(K’3)のうちのいずれかを出力する第5セレクタと、前記第5セレクタの出力、前記第5セレクタの出力を1ビット左シフトしたデータおよびデータ’0’のうちのいずれかを出力する第6セレクタと、前記第4セレクタの出力と前記第3中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータのうちいずれかを出力する第7セレクタと、前記第3中間鍵選択回路の第2出力(KEYY)と定数M(i)(i=0〜11)とのうちいずれかを出力する第8セレクタと、前記第5セレクタの出力と前記第3中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータのうちいずれかを出力する第9セレクタと、前記第6セレクタの出力と前記第3中間鍵選択回路の第4出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する第10セレクタと、データ’0’とデータ’1’のうちいずれかを出力する第11セレクタと、前記第7セレクタの出力と第8セレクタの出力を加算する第1加算回路と、前記第11セレクタの出力を最下位ビットへのキャリとして前記第9セレクタの出力と第10セレクタの出力とを加算する第2加算回路と、前記第2加算回路の出力と前記第2加算回路の出力を1ビット左ローテーションしたデータのうちのいずれかを出力する第12セレクタと、前記第1加算回路の出力と第12セレクタの出力との排他的論理和演算を行いその出力を第3拡大鍵として出力する第11XOR回路と、前記第11XOR回路の出力を一時的に格納し第4拡大鍵として出力する出力レジスタ回路と、前記出力レジスタ回路の出力と暗号鍵(K0,K1,K2,K3)のいずれかを出力する第13セレクタと、前記第13セレクタの出力に対してM関数処理を行いその結果を中間鍵として出力するM関数回路とを備える構成とすることができる。
【0016】
また、中間鍵生成時には暗号鍵(K0,K1,K2,K3)をM関数回路によりM関数処理した初期データ(K’0,K’1,K’2,K’3)を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ(K’0,K’1,K’2,K’3)を用いて演算された中間鍵(IMKEY)を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第1拡大鍵生成回路で生成される第1拡大鍵(EXKEY1)、第2拡大鍵生成回路で生成される第2拡大鍵(EXKEY2)、鍵演算回路で生成される第3拡大鍵(EXKEY3)および第4拡大鍵(EXKEY4)をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用するように構成できる。
また、前記第1拡大鍵生成回路および第2拡大鍵生成回路は、それぞれ前記第1中間鍵選択回路および第2中間鍵選択回路の出力 (KEYX,KEYY,KEYZ,KEYW)と入力とし、前記中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータと中間鍵選択回路の第2出力(KEYY)との加算処理を行う鍵生成回路内加算回路と、前記中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータと中間鍵選択回路の第4出力(KEYW)との減算処理を行う鍵生成回路内減算回路と、前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を1ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内XOR回路とを備える構成とすることができる。
【0017】
【発明の実施の形態】
〔基本構成〕
本発明に係る暗号回路の基本構成を図1に示す。
暗号回路1は、データスクランブル回路2と鍵スケジュール回路5とから構成されている。
データスクランブル回路2は、データを一時的に格納するレジスタ回路3と、内部に複数種の関数処理回路を備えた暗号処理回路4とを備えている。データスクランブル回路2は、暗号処理回路4の出力がレジスタ回路3にフィードバックされたクロック同期ループを構成している。レジスタ回路3は、暗号鍵、平文、暗号文、暗号処理回路4で演算される1サイクル毎の演算結果などを一時的に格納する。
【0018】
鍵スケジュール回路5は、データスクランブル回路2に対して拡大鍵を提供するものであって、暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路6と、中間鍵記憶回路6に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択する第1中間鍵選択回路8〜第3中間鍵選択回路10と、第1中間鍵選択回路8で選択された中間鍵に基づいて第1拡大鍵を生成する第1拡大鍵生成回路11と、第2中間鍵選択回路9で選択された中間鍵に基づいて第2拡大鍵を生成する第2拡大鍵生成回路12と、暗号鍵に基づいて複数の中間鍵を生成するとともに第3中間鍵選択回路10で選択された中間鍵に基づいて第3拡大鍵および第4拡大鍵を生成する鍵演算回路7とを備えている。鍵演算回路7が中間鍵を生成する際には、データスクランブル回路2のレジスタ回路3を利用するように構成することが可能である。
【0019】
SC2000暗号では、拡大鍵とデータとの排他的論理和演算を実行するI関数処理、データのビットを撹拌するB関数処理およびR関数処理とを所定の順で実行するものであり、本発明では鍵長128ビット専用の暗号化/復号化を実行する暗号回路を提案する。SC2000暗号では、鍵長128ビットの場合、I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−Iの順に処理を行うように構成され、(B−I−R−R−I)処理の繰り返し部分を考慮すると、I−(B−I−R−R−I)6−B−Iと表記することができる。このような暗号処理において、I関数処理を2回に分けて処理するI/2関数処理回路とR関数を処理するR関数処理回路とを結合したR+I/2関数回路と、B関数を処理するB関数処理回路とI関数を処理するI関数処理回路とを結合したB+I関数回路とを備える構成とすることにより、(B−I−R−R−I)処理の部分を、(B+I)−(R+I/2)−(R+I/2)の順に処理することで3サイクルで処理が可能である。最初のI関数処理、最後のB関数処理およびI関数処理も同様に、B+I関数回路を用いて処理することが可能となる。
【0020】
鍵スケジュール回路5は、データスクランブル回路2のI関数処理に利用する拡大鍵を生成するものであって、ここでは、I−(B−I−R−R−I)6−B−Iの処理中の14個のI関数処理に対して56個の32ビット拡大鍵を生成して供給することとなる。入力される暗号鍵(ユーザ鍵)は128ビットデータでなり、非線形処理であるM関数処理の後、レジスタ回路3に32ビット×4の入力データとして格納される。鍵演算回路7は、レジスタ回路3の32ビット×4個のデータのうちから2個を選択して、所定値の加算や所定値の乗算を行い、各演算結果の排他的論理和を演算し、さらにM関数処理を行うように構成される。鍵演算回路7では、暗号鍵に基づいて32ビット×12個の中間鍵を生成し、中間鍵記憶回路6に格納する。
【0021】
このように、暗号回路1では、入力される暗号鍵(ユーザ鍵)に基づいて、鍵演算回路7で中間鍵を生成しこれを中間鍵記憶回路6に格納する。第1中間鍵選択回路8〜第3中間鍵選択回路10が鍵スケジュールに応じて中間鍵記憶回路6内に格納されている中間鍵を選択し、それぞれ第1拡大鍵生成回路11、第2拡大鍵生成回路12および鍵演算回路7に選択した中間鍵を入力する。第1拡大鍵生成回路11は第1拡大鍵を生成し、第2拡大鍵生成回路は第2拡大鍵を生成し、鍵演算回路7は第3拡大鍵および第4拡大鍵を生成する。
データスクランブル回路2は、入力される平文を鍵スケジュール回路5から供給される拡大鍵に基づいて暗号化を行い暗号文を出力し、入力される暗号文を鍵スケジュール回路5から供給される拡大鍵に基づいて復号化して平文を出力する。
【0022】
〔データスクランブル回路〕
データスクランブル回路2は、図2に示すようなレジスタ回路3と暗号処理回路4から構成されている。レジスタ回路3は、32ビット×4の入力データ(A,B,C,D)を格納することが可能となっており、この入力データ(A,B,C,D)を暗号処理回路4に供給する。
暗号処理回路4は、処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路41と、処理ブロック128ビットのデータに対してB関数処理とI関数処理を同時に実行するB+I関数回路42と、R+I/2関数回路の出力とB+I関数回路の出力のうちいずれかを出力する第1セレクタ43とを含んでいる。
【0023】
暗号処理回路4の第1セレクタ43の出力はレジスタ回路3にフィードバックされてクロック同期ループを構成している。したがって、レジスタ回路3内に格納されているデータに基づいて暗号処理回路4が1クロックで演算処理を実行した結果が、レジスタ回路3に格納される。
(R+I/2関数回路)
R+I/2関数回路41の構成を図3に示す。
R+I/2関数回路41は、図3の左側に位置するR回路と右側に位置するI/2回路で構成されている。
R回路は、32ビット×4の入力データ(A,B,C,D)のうち入力データCに対して非線形処理であるM関数処理を実行する第1M関数回路411と、入力データDに対して非線形処理であるM関数処理を実行する第2M関数回路412と、第1M関数回路411の出力と定数”0x55555555”, ”0x33333333”のうちいずれかの論理積演算を行う第1AND回路413と、第1AND回路413の出力と第2M関数回路412の出力との排他的論理和演算を行う第1XOR回路414と、第2M関数回路412の出力と定数”0xAAAAAAAA”,”0xCCCCCCCC”のうちいずれかの論理積演算を行う第2AND回路415と、第2AND回路415の出力と第1M関数回路411の出力との排他的論理和演算を行う第2XOR回路416と、第1XOR回路414の出力と入力データAとの排他的論理和演算を行ってその結果を出力データCとして出力する第3XOR回路417と、第2XOR回路416の出力と入力データBとの排他的論理和演算を行ってその結果を出力データDとして出力する第4XOR回路418とを備えている。
【0024】
I/2回路は、入力データCと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第5XOR回路419と、入力データDと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第6XOR回路420とを備えている。
(B+I関数回路)
B+I関数回路42の構成を図4に示す。
B+I関数回路42は、図4の上部に位置するB関数回路と、図4の下部に位置するI関数回路とから構成されている。
B関数回路は、32ビット×4の入力データ(A,B,C,D)が(C,D,A,B)の順で入力され、4ビット×32の出力データに変換する入力データ変換部421と、入力データ変換部421のi番目(i=1〜32)の出力データに対して非線形処理を実行する32個の4ビットSbox処理回路422(i)と、入力データ変換部のi番目の出力データに対してSbox処理回路422(i)の逆変換処理を実行する32個の4ビットS−1box処理回路423(i)と、入力データ変換部421のi番目の出力データ、i番目の4ビットSbox処理回路422(i)の出力およびi番目の4ビットS−1box処理回路423(i)の出力のうちいずれかを出力する32個のセレクタ424(i)と、セレクタ424(i)から出力される4ビット×32個の出力データを32ビット×4の出力データに変換する出力データ変換部425とを備えている。
【0025】
I関数回路は、出力データ変換部425の出力のうち第1の32ビット出力データと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第7XOR回路426と、出力データ変換部425の出力のうち第2の32ビット出力データと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第8XOR回路427と、第3拡大鍵とデータ”0”のいずれかを選択的に出力する第2セレクタ428と、出力データ変換部425の出力のうち第3の32ビット出力データと第2セレクタ428の出力との排他的論理和演算を行ってその結果を出力データCとして出力する第9XOR回路429と、第4拡大鍵とデータ”0”のいずれかを選択的に出力する第3セレクタ430と、出力データ変換部425の出力のうち第4の32ビット出力データと第3セレクタ430の出力との排他的論理和演算を行ってその結果を出力データDとして出力する第10XOR回路431とを備えている。
【0026】
(各関数処理)
上述したデータスクランブル回路2において、各関数処理を実行する場合の動作を説明する。
最初のI関数処理を行う場合には、第1サイクルにおいて第1セレクタ43を’R’に設定し、第2セレクタ428および第3セレクタ430を’Z’に設定し、さらにセレクタ424(i)を’I’に設定し、B+I関数回路42のうちI関数部分の半分だけの演算処理を実行する。この演算結果はレジスタ回路3にフィードバックされて格納される。
第2サイクルでは、同様にして第1セレクタ43を’R’に設定し、第2セレクタ428および第3セレクタ430を’Z’に設定し、セレクタ424(i)を’I’に設定して、B+I関数回路42のうちI関数部分の半分だけの演算処理を実行する。このことにより、第1サイクルおよび第2サイクルの2サイクルで最初のI関数処理を完了する。
【0027】
B関数処理とI関数処理が続く場合には、B+I関数回路42を用いて同時に処理を実行することが可能である。この場合、第1サイクルでは、第1セレクタ43を’R’に設定し、第2セレクタ428および第3セレクタ430を’K’に設定し、セレクタ424(i)を’E’に設定する。
このことにより、B+I関数回路42のB関数部によりB関数処理を実行した後、I関数部によりI関数処理が行われ、演算結果がレジスタ回路3にフィードバックされて格納される。したがって、1サイクルで(B−I)の処理を完了させることができる。なお、復号化処理を行う場合には、セレクタ424(i)を’D’に設定する以外は同様の設定で処理を行うことができる。
R関数処理が2回とI関数処理が1回続く場合には、R+I/2関数回路41を用いて処理することができる。この場合、第1サイクルで、第1セレクタ43を’L’に設定することで、R+I/2関数回路41におけるR+I/2関数処理が行われ、その結果がレジスタ回路3にフィードバックされて格納される。第2サイクルでも同様に処理を行い、2サイクルで(R−R−I)処理を完了することができる。
【0028】
平文がレジスタ回路3に格納されると、まず2サイクルでI関数処理を実行する。この後、(B−I)処理、(R−R−I)処理からなる(B−I−R−R−I)処理を3サイクルで実行する処理を6回繰り返す。最後に、(B−I)処理を1サイクルで実行し、その結果をレジスタ回路3にフィードバックして格納し、暗号文である最終結果を出力することとなる。この暗号化の手順は、21サイクルで構成され、各サイクルにおける第1セレクタ43、第2セレクタ428、第3セレクタ430、セレクタ424(i)の切換制御テーブルを表1のSEL1項目、SEL2,3項目およびSELB項目に示す。
【0029】
【表1】
復号化時においても、同様の手順で処理が実行される。暗号文がレジスタ回路3に格納されると、まず2サイクルでI関数処理を実行する。次に、(B−I)処理および(R−R−I)処理からなる(B−I−R−R−I)処理を3サイクルで実行する処理を6回繰り返す。最後に(B−I)処理を1サイクルで実行し、その結果をレジスタ回路3にフィードバックして格納し、平文である最終結果を出力することとなる。この復号化の手順は、21サイクルで構成され、各サイクルにおける第1セレクタ43、第2セレクタ428、第3セレクタ430、セレクタ424(i)の切換制御テーブルを表2のSEL1項目、SEL2,3項目、SELB項目に示す。
【0030】
【表2】
なお、図4における入力データ変換部421および出力データ変換部425は、結線だけで実現することが可能であり、回路規模増大にならない。
〔鍵スケジュール回路〕
上述したようなデータスクランブル回路2で用いる拡大鍵を生成するための鍵スケジュール回路5を図5〜図9に示す。
鍵スケジュール回路5の鍵演算回路7、中間鍵記憶回路6、第1中間鍵選択回路8、第2中間鍵選択回路9、第3中間鍵選択回路10、第1拡大鍵生成回路11、第2拡大鍵生成回路12の接続は図9に示すように構成されており、データスクランブル回路41のレジスタ回路3を共用するためにレジスタ回路3の出力が鍵演算回路7に接続されている。
【0031】
鍵スケジュール回路5による鍵スケジュール処理は、暗号鍵(ユーザ鍵)から中間鍵を生成するフェーズと、中間鍵から拡大鍵を生成するフェーズとを含んでおり、本構成では両フェーズにおいて鍵演算回路7と中間鍵記憶回路6とを共用するように構成している。
(鍵演算回路)
鍵演算回路7は、暗号鍵(K0,K1,K2,K3)、入力レジスタ回路3内に格納された初期データ(K’0,K’1,K’2,K’3)および第3中間鍵選択回路10の出力(KEYX,LEYY,KEYZ,KEYW)を入力として、中間鍵(IMKEY)、第3拡大鍵(EXKEY3)、第4拡大鍵(EXKEY4)を出力するものであり、図5に示すような構成となっている。
鍵演算回路7は、レジスタ回路3の第1出力(K’O)および第3出力(K’2)のうちいずれかを出力する第4セレクタ701と、レジスタ回路3の第2出力(K’1)および第4出力(K’3)のうちのいずれかを出力する第5セレクタ702と、第5セレクタ702の出力を1ビット左シフトするシフト部703、第5セレクタ702の出力、シフト部703の出力およびデータ’0’のうちのいずれかを出力する第6セレクタ704と、第3中間鍵選択回路10の第1出力(KEYX)を1ビット左ローテーションするローテーション部705、第4セレクタ701の出力とローテーション部705の出力のうちいずれかを出力する第7セレクタ706と、第3中間鍵選択回路10の第2出力(KEYY)と定数M(i)(i=0〜11)とのうちいずれかを出力する第8セレクタ707と、第3中間鍵選択回路10の第3出力(KEYZ)を1ビット左ローテーションするローテーション部708と、第5セレクタ702の出力とローテーション部708の出力とのうちいずれかを出力する第9セレクタ709と、第3中間鍵選択回路10の第4出力(KEYW)にINV処理を行うINV処理部710と、第6セレクタ704の出力とINV処理部710の出力のうちいずれか一方を出力する第10セレクタ711と、データ’0’とデータ’1’のうちいずれかを出力する第11セレクタ712と、第7セレクタ706の出力と第8セレクタ707の出力を加算する第1加算回路713と、第11セレクタ712の出力を最下位ビットへのキャリとして第9セレクタ709の出力と第10セレクタ711の出力とを加算する第2加算回路714と、第2加算回路714の出力を1ビット左ローテーションするローテーション部715と、第2加算回路714の出力とローテーション部715の出力のうちのいずれかを出力する第12セレクタ716と、第1加算回路713の出力と第12セレクタ716の出力との排他的論理和演算を行いその出力を第3拡大鍵(EXKEY3)として出力する第11XOR回路717と、第11XOR回路717の出力を一時的に格納し第4拡大鍵(EXKEY4)として出力する出力レジスタ回路718と、出力レジスタ回路718の出力と入力される暗号鍵(K0,K1,K2,K3)のいずれかを出力する第13セレクタ719と、第13セレクタ719の出力に対してM関数処理を行いその結果を中間鍵(IMKEY)として出力するM関数回路720とを備えている。
【0032】
なお、シフト部703、ローテーション部705,708,715は結線だけ実現することが可能であり、回路規模の増加はない。
鍵演算回路7の出力である中間鍵(IMKEY)は、レジスタ回路3および中間鍵記憶回路6に入力されており、第3拡大鍵(EXKEY3)および第4拡大鍵(EXKEY4)はデータスクランブル回路2に入力されている。
(暗号鍵入力)
暗号鍵(ユーザ鍵)の入力時には、図5に示すように、第13セレクタ719が’L’に設定され、第13セレクタ719およびM関数回路720だけが使用される。入力された暗号鍵(K0,K1,K2,K3)は、M関数回路720によるM関数処理が実行され、初期値(K’0,K’1,K’2,K’3)としてレジスタ回路3に格納される。
【0033】
(中間鍵生成)
鍵演算回路7による中間鍵生成は、図6に示すような接続により実行される。この中間鍵生成時には、暗号鍵(K0,K1,K2,K3)を入力としてM関数処理を行った初期値(K’0,K’1,K’2,K’3)がレジスタ回路3から入力され、これに基づいて中間鍵(IMKEY)を演算する。
中間鍵生成時には、第7セレクタ706、第8セレクタ707、第9セレクタ709、第10セレクタ711、第11セレクタ712および第12セレクタ716はそれぞれ’L’に設定され、第13セレクタ719は’R’に設定される。また、第4セレクタ701、第5セレクタ702および第6セレクタ704は、中間鍵a0〜d2のいずれを生成するかによって切換が変わるものであり、各セレクタの切換制御テーブルを表3に示す。
【0034】
【表3】
鍵演算回路7で処理されたデータは出力レジスタ回路718に一旦格納され、次のサイクルでM関数回路720によるM関数処理が実行されて中間鍵記憶回路6に格納される。出力レジスタ回路718は、遅延短縮用のパイプライン用のレジスタを構成しており、このため13クロックで12個の中間鍵を生成することができる。
なお、中間鍵生成で使用されるレジスタ回路3は、回路規模削減のためにデータスクランブル回路2のレジスタ回路3を共用するものである。同様に、中間鍵生成時においてM関数処理を実行するM関数回路720は、暗号鍵入力時に使用されるM関数回路と共用することができる。
【0035】
(拡大鍵生成)
データスクランブル回路2では、R+I/2関数回路41によるI/2関数処理時およびB+I関数回路42によるI関数処理時においてそれぞれ2個または4個の拡大鍵が必要となる。このため、鍵スケジュール回路5では、第1中間鍵選択回路8および第1拡大鍵生成回路11により第1拡大鍵(EXKEY1)を生成し、第2中間鍵選択回路9および第2拡大鍵生成回路12により第2拡大鍵(EXKEY2)を生成し、第3中間鍵選択回路10および鍵演算回路7により第3拡大鍵(EXKEY3)および第4拡大鍵(EXKEY4)を生成するように構成している。この鍵スケジュール回路5により同時に生成可能な拡大鍵は最大3個である。
第1中間鍵選択回路8は図8に示すように、中間鍵記憶回路6の各レジスタに格納されているデータのうちデータ(a0,a1,a2)を入力として選択的にいずれか1つを出力するセレクタX(SELX1)101、データ(b0,b1,b2)を入力として選択的にいずれか1つを出力するセレクタY(SELY1)102、データ(c0,c1,c2)を入力として選択的にいずれか1つを出力するセレクタZ(SELZ1)103、データ(d0,d1,d2)を入力として選択的にいずれか1つを出力するセレクタW(SELW1)104およびセレクタX101〜セレクタW104の出力切換を行うスイッチ105を備えている。
【0036】
同様に、第2中間鍵選択回路9は図8に示すように、中間鍵記憶回路6の各レジスタに格納されているデータのうちデータ(a0,a1,a2)を入力として選択的にいずれか1つを出力するセレクタX(SELX2)111、データ(b0,b1,b2)を入力として選択的にいずれか1つを出力するセレクタY(SELY2)112、データ(c0,c1,c2)を入力として選択的にいずれか1つを出力するセレクタZ(SELZ2)113、データ(d0,d1,d2)を入力として選択的にいずれか1つを出力するセレクタW(SELW2)114およびセレクタX111〜セレクタW114の出力切換を行うスイッチ115を備えている。
さらに、第3中間鍵選択回路10は図7に示すように、中間鍵記憶回路6の各レジスタに格納されているデータのうちデータ(a0,a1,a2)を入力として選択的にいずれか1つを出力するセレクタX(SELX3)121、データ(b0,b1,b2)を入力として選択的にいずれか1つを出力するセレクタY(SELY3)122、データ(c0,c1,c2)を入力として選択的にいずれか1つを出力するセレクタZ(SELZ3)123、データ(d0,d1,d2)を入力として選択的にいずれか1つを出力するセレクタW(SELW3)124およびセレクタX121〜セレクタW124の出力切換を行うスイッチ125を備えている。
【0037】
第1拡大鍵生成回路11および第2拡大鍵生成回路12は、図8に示すように、それぞれ第1中間鍵選択回路8および第2中間鍵選択回路9の出力 (KEYX,KEYY,KEYZ,KEYW)と入力とし、中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションするローテーション部201と、ローテーション部201の出力と中間鍵選択回路の第2出力(KEYY)との加算処理を行う鍵生成回路内加算回路202と、中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションするローテーション部203と、ローテーション部203の出力と中間鍵選択回路の第4出力(KEYW)との減算処理を行う鍵生成回路内減算回路204と、鍵生成回路内減算回路の出力を1ビット左ローテーションするローテーション部205と、鍵生成回路内加算回路202の出力とローテーション部205の出力との排他的論理和演算を行う鍵生成回路内XOR回路206とを備えている。
【0038】
拡大鍵生成時における鍵演算回路7は図7に示すような接続で用いられる。ここでは、第7セレクタ706、第8セレクタ707、第9セレクタ709、第10セレクタ711、第11セレクタ712および第12セレクタ716は、暗号化時(表1参照)および復号化時(表2参照)のいずれの場合も常に’R’が選択される。このことにより、鍵演算回路7は、第1拡大鍵生成回路11および第2拡大鍵生成回路12と同様の回路構成となり、第3中間鍵選択回路10の第1出力(KEYX)を1ビット左ローテーションするローテーション部705と、ローテーション部705の出力と第3中間鍵選択回路の第2出力(KEYY)との加算処理を行う第1加算回路713と、第3中間鍵選択回路10の第3出力(KEYZ)を1ビット左ローテーションするローテーション部708と、ローテーション部708の出力と第3中間鍵選択回路の第4出力(KEYW)との減算処理を行うINV処理部710−第11セレクタ712−第2加算回路714、第2加算回路714の出力を1ビット左ローテーションするローテーション部715と、第1加算回路713の出力とローテーション部715の出力との排他的論理和演算を行う第11XOR回路717とを備える構成となる。
【0039】
鍵演算回路7を用いた拡大生成では、中間鍵保存回路6に格納された12個の中間鍵(a0〜d2)から第3中間鍵選択回路10により4つの中間鍵を選択し、選択された4つの中間鍵を用いて鍵演算回路7による拡大鍵生成処理を実行する。
鍵演算回路7から出力される拡大鍵は、第11XOR回路717から直接出力される第3拡大鍵(EXKEY3)と、遅延短縮パイプラインを構成する出力レジスタ回路718に一旦格納されて次のサイクルで出力される第4拡大鍵(EXKEY4)とがある。
第1中間鍵選択回路8、第1拡大鍵生成回路11および第2中間鍵選択回路9、第2拡大鍵生成回路12は図8に示すような構成であり、データスクランブル回路2によるI関数処理またはI/2関数処理を実行する際に、それぞれ第1拡大鍵(EXKEY1)および第2拡大鍵(EXKEY2)を生成してデータスクランブル回路2に供給する。第1中間鍵選択回路8および第2中間鍵生成回路9はそれぞれ中間鍵記憶回路6に格納されている12個の中間鍵(a0〜d2)からそれぞれ4個の中間鍵を選択し、第1拡大鍵生成回路11および第2拡大鍵生成回路12に(KEYX,KEYY,KEYZ,KEYW)として出力する。第1拡大鍵生成回路11および第2拡大鍵生成回路12では、それぞれ入力される中間鍵(KEYX,KEYY,KEYZ,KEYW)に基づいて拡大鍵生成処理を実行し、各サイクルにおいて1個ずつ、計2個ずつの拡大鍵(EXKEY1,EXKEY2)を生成する。
【0040】
データスクランブル回路2では、第1〜第2サイクルにおいてB+I関数回路42を用いてI/2関数処理を行う場合およびそれ以外のサイクルにおいてR+I/2関数回路41を用いてI/2関数処理を行う際に2個の拡大鍵を必要とし、この場合には第1拡大鍵生成回路11および第2拡大鍵生成回路12から生成される第1拡大鍵(EXKEY1)および第2拡大鍵(EXKEY2)を用いる。
また、データスクランブル回路2のB+I関数回路42を用いてI関数処理を実行する際には4個の拡大鍵が必要となる。この場合、直前の拡大鍵が2個必要となるサイクルにおいて、鍵演算回路7から出力される拡大鍵(EXKEY3)を使用せずに出力レジスタ回路718に一旦保存し、鍵演算回路7で新たに生成されるデータを第3拡大鍵(EXKEY3)として出力し、出力レジスタ回路718に保存されたデータを第4拡大鍵(EXKEY4)として出力する。このことから、鍵スケジュール回路5は、第1拡大鍵生成回路11から出力される第1拡大鍵(EXKEY1)、第2拡大鍵生成回路12から出力される第2拡大鍵(EXKEY2)、鍵演算回路7から出力される第3〜第4拡大鍵(EXKEY3,EXKEY4)により4個の拡大鍵をデータスクランブル回路2に供給することが可能となる。
【0041】
暗号化処理時における中間鍵選択回路の各セレクタ(SELX1〜SELW3)およびスイッチ(SWITCH1〜SWITCH3)の制御テーブルは表1に示す通りであり、また復号化処理時における中間鍵選択回路の各セレクタ(SELX1〜SELW3)およびスイッチ(SWITCH1〜SWITCH3)の制御テーブルは表2に示す通りである。
<付記>
(付記1)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路と、処理ブロック128ビットのデータに対するB関数処理とI関数処理とを同時に実行するB+I関数回路と、前記R+I/2関数回路の出力および前記B+I関数回路の出力のいずれか1つを選択的に出力する第1セレクタと、入力データまたは前記第1セレクタの出力を格納するとともに前記R+I/2関数回路およびB+I関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路。
【0042】
(付記2)
前記レジスタ回路と第1セレクタとの間に、R+I/2関数回路とB+I関数回路とが並列に接続され、第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、付記1に記載のデータスクランブル回路。
(付記3)
前記R+I/2関数回路は、
32ビット×4の入力データ(A,B,C,D)のうち入力データCに対して非線形処理であるM関数処理を実行する第1M関数回路と、
入力データDに対して非線形処理であるM関数処理を実行する第2M関数回路と、
前記第1M関数回路の出力と定数”0x55555555”, ”0x33333333”のうちいずれかの論理積演算を行う第1AND回路と、
前記第1AND回路の出力と前記第2M関数回路の出力との排他的論理和演算を行う第1XOR回路と、
前記第2M関数回路の出力と定数”0xAAAAAAAA”,”0xCCCCCCCC”のうちいずれかの論理積演算を行う第2AND回路と、
前記第2AND回路の出力と前記第1M関数回路の出力との排他的論理和演算を行う第2XOR回路と、
前記第1XOR回路の出力と入力データAとの排他的論理和演算を行ってその結果を出力データCとして出力する第3XOR回路と、
前記第2XOR回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データDとして出力する第4XOR回路と、
入力データCと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第5XOR回路と、
入力データDと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第6XOR回路と、
を備える、付記2に記載のデータスクランブル回路。
【0043】
(付記4)
前記B+I関数回路は、
32ビット×4の入力データ(A,B,C,D)が(C,D,A,B)の順に並び替えて入力され、4ビット×32の出力データに変換する入力データ変換部と、
前記入力データ変換部のi番目(i=1〜32)の出力データに対して非線形処理を実行する32個の4ビットSbox処理回路と、
前記入力データ変換部のi番目の出力データに対して前記Sbox処理回路の逆変換処理を実行する32個の4ビットS−1box処理回路と、
前記入力データ変換部のi番目の出力データ、i番目の4ビットSbox処理回路の出力およびi番目の4ビットS−1box処理回路の出力のうちいずれかを出力する32個のセレクタ(Bi)と、
前記セレクタ(Bi)から出力される4ビット×32個の出力データを32ビット×4の出力データに変換する出力データ変換部と、
前記出力データ変換部の出力のうち第1の32ビット出力データと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第7XOR回路と、
前記出力データ変換部の出力のうち第2の32ビット出力データと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第8XOR回路と、
第3拡大鍵とデータ”0”のいずれかを選択的に出力する第2セレクタと、
前記出力データ変換部の出力のうち第3の32ビット出力データと前記第2セレクタの出力との排他的論理和演算を行ってその結果を出力データCとして出力する第9XOR回路と、
第4拡大鍵とデータ”0”のいずれかを選択的に出力する第3セレクタと、
前記出力データ変換部の出力のうち第4の32ビット出力データと前記第3セレクタの出力との排他的論理和演算を行ってその結果を出力データDとして出力する第10XOR回路と、
を備える、付記1〜3のいずれかに記載のデータスクランブル回路。
【0044】
(付記5)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、
前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第1〜第3中間鍵選択回路と、
前記第1中間鍵選択回路で選択された中間鍵に基づいて第1拡大鍵を生成する第1拡大鍵生成回路と、
前記第2中間鍵選択回路で選択された中間鍵に基づいて第2拡大鍵を生成する第2拡大鍵生成回路と、
前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第3中間鍵選択回路で選択された中間鍵に基づいて第3拡大鍵および第4拡大鍵を生成する鍵演算回路と、
を備える鍵スケジュール回路。
【0045】
(付記6)
前記鍵スケジュール回路は、暗号鍵(K0,K1,K2,K3)から算出される初期データ(K’0,K’1,K’2,K’3)を格納する入力レジスタ回路を備え、
前記鍵演算回路は、暗号鍵(K0,K1,K2,K3)、入力レジスタ回路内に格納された初期データ(K’0,K’1,K’2,K’3)および第3中間鍵選択回路の出力(KEYX,LEYY,KEYZ,KEYW)を入力として、
前記レジスタ回路の第1出力(K’O)および第3出力(K’2)のうちいずれかを出力する第4セレクタと、
前記レジスタ回路の第2出力(K’1)および第4出力(K’3)のうちのいずれかを出力する第5セレクタと、
前記第5セレクタの出力、前記第5セレクタの出力を1ビット左シフトしたデータおよびデータ’0’のうちのいずれかを出力する第6セレクタと、
前記第4セレクタの出力と前記第3中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータのうちいずれかを出力する第7セレクタと、
前記第3中間鍵選択回路の第2出力(KEYY)と定数M(i)(i=0〜11)とのうちいずれかを出力する第8セレクタと、
前記第5セレクタの出力と前記第3中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータのうちいずれかを出力する第9セレクタと、
前記第6セレクタの出力と前記第3中間鍵選択回路の第4出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する第10セレクタと、
データ’0’とデータ’1’のうちいずれかを出力する第11セレクタと、
前記第7セレクタの出力と第8セレクタの出力を加算する第1加算回路と、
前記第11セレクタの出力を最下位ビットへのキャリとして前記第9セレクタの出力と第10セレクタの出力とを加算する第2加算回路と、
前記第2加算回路の出力と前記第2加算回路の出力を1ビット左ローテーションしたデータのうちのいずれかを出力する第12セレクタと、
前記第1加算回路の出力と第12セレクタの出力との排他的論理和演算を行いその出力を第3拡大鍵として出力する第11XOR回路と、
前記第11XOR回路の出力を一時的に格納し第4拡大鍵として出力する出力レジスタ回路と、
前記出力レジスタ回路の出力と暗号鍵(K0,K1,K2,K3)のいずれかを出力する第13セレクタと、
前記第13セレクタの出力に対してM関数処理を行いその結果を中間鍵として出力するM関数回路と、
を備える付記5に記載の鍵スケジュール回路。
【0046】
(付記7)
中間鍵生成時には暗号鍵(K0,K1,K2,K3)をM関数回路によりM関数処理した初期データ(K’0,K’1,K’2,K’3)を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ(K’0,K’1,K’2,K’3)を用いて演算された中間鍵(IMKEY)を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第1拡大鍵生成回路で生成される第1拡大鍵(EXKEY1)、第2拡大鍵生成回路で生成される第2拡大鍵(EXKEY2)、鍵演算回路で生成される第3拡大鍵(EXKEY3)および第4拡大鍵(EXKEY4)をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用することを特徴とする付記6に記載の鍵スケジュール回路。
【0047】
(付記8)
前記第1拡大鍵生成回路および第2拡大鍵生成回路は、それぞれ前記第1中間鍵選択回路および第2中間鍵選択回路の出力 (KEYX,KEYY,KEYZ,KEYW)と入力とし、
前記中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータと中間鍵選択回路の第2出力(KEYY)との加算処理を行う鍵生成回路内加算回路と、
前記中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータと中間鍵選択回路の第4出力(KEYW)との減算処理を行う鍵生成回路内減算回路と、
前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を1ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内XOR回路と、
を備える付記5〜7のいずれかに記載の鍵スケジュール回路。
【0048】
(付記9)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路と、処理ブロック128ビットのデータに対するB関数処理とI関数処理とを同時に実行するB+I関数回路と、前記R+I/2関数回路の出力および前記B+I関数回路の出力のいずれか1つを選択的に出力する第1セレクタと、入力データまたは前記第1セレクタの出力を格納するとともに前記R+I/2関数回路およびB+I関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、
前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第1〜第3中間鍵選択回路と、前記第1中間鍵選択回路で選択された中間鍵に基づいて第1拡大鍵を生成する第1拡大鍵生成回路と、前記第2中間鍵選択回路で選択された中間鍵に基づいて第2拡大鍵を生成する第2拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第3中間鍵選択回路で選択された中間鍵に基づいて第3拡大鍵および第4拡大鍵を生成する鍵演算回路とを備える鍵スケジュール回路と、
を含む暗号回路。
【0049】
(付記10)
前記レジスタ回路と第1セレクタとの間に、R+I/2関数回路とB+I関数回路とが並列に接続され、第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、付記9に記載の暗号回路。
(付記11)
前記R+I/2関数回路は、
32ビット×4の入力データ(A,B,C,D)のうち入力データCに対して非線形処理であるM関数処理を実行する第1M関数回路と、
入力データDに対して非線形処理であるM関数処理を実行する第2M関数回路と、
前記第1M関数回路の出力と定数”0x55555555”, ”0x33333333”のうちいずれかの論理積演算を行う第1AND回路と、
前記第1AND回路の出力と前記第2M関数回路の出力との排他的論理和演算を行う第1XOR回路と、
前記第2M関数回路の出力と定数”0xAAAAAAAA”,”0xCCCCCCCC”のうちいずれかの論理積演算を行う第2AND回路と、
前記第2AND回路の出力と前記第1M関数回路の出力との排他的論理和演算を行う第2XOR回路と、
前記第1XOR回路の出力と入力データAとの排他的論理和演算を行ってその結果を出力データCとして出力する第3XOR回路と、
前記第2XOR回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データDとして出力する第4XOR回路と、
入力データCと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第5XOR回路と、
入力データDと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第6XOR回路と、
を備える、付記10に記載の暗号回路。
【0050】
(付記12)
前記B+I関数回路は、
32ビット×4の入力データ(A,B,C,D)が(C,D,A,B)の順に並び替えて入力され、4ビット×32の出力データに変換する入力データ変換部と、
前記入力データ変換部のi番目(i=1〜32)の出力データに対して非線形処理を実行する32個の4ビットSbox処理回路と、
前記入力データ変換部のi番目の出力データに対して前記Sbox処理回路の逆変換処理を実行する32個の4ビットS−1box処理回路と、
前記入力データ変換部のi番目の出力データ、i番目の4ビットSbox処理回路の出力およびi番目の4ビットS−1box処理回路の出力のうちいずれかを出力する32個のセレクタ(Bi)と、
前記セレクタ(Bi)から出力される4ビット×32個の出力データを32ビット×4の出力データに変換する出力データ変換部と、
前記出力データ変換部の出力のうち第1の32ビット出力データと第1拡大鍵との排他的論理和演算を行ってその結果を出力データAとして出力する第7XOR回路と、
前記出力データ変換部の出力のうち第2の32ビット出力データと第2拡大鍵との排他的論理和演算を行ってその結果を出力データBとして出力する第8XOR回路と、
第3拡大鍵とデータ”0”のいずれかを選択的に出力する第2セレクタと、
前記出力データ変換部の出力のうち第3の32ビット出力データと前記第2セレクタの出力との排他的論理和演算を行ってその結果を出力データCとして出力する第9XOR回路と、
第4拡大鍵とデータ”0”のいずれかを選択的に出力する第3セレクタと、
前記出力データ変換部の出力のうち第4の32ビット出力データと前記第3セレクタの出力との排他的論理和演算を行ってその結果を出力データDとして出力する第10XOR回路と、
を備える、付記9〜11のいずれかに記載の暗号回路。
【0051】
(付記13)
前記鍵スケジュール回路は、暗号鍵(K0,K1,K2,K3)から算出される初期データ(K’0,K’1,K’2,K’3)を格納する入力レジスタ回路を備え、
前記鍵演算回路は、暗号鍵(K0,K1,K2,K3)、入力レジスタ回路内に格納された初期データ(K’0,K’1,K’2,K’3)および第3中間鍵選択回路の出力(KEYX,LEYY,KEYZ,KEYW)を入力として、
前記レジスタ回路の第1出力(K’O)および第3出力(K’2)のうちいずれかを出力する第4セレクタと、
前記レジスタ回路の第2出力(K’1)および第4出力(K’3)のうちのいずれかを出力する第5セレクタと、
前記第5セレクタの出力、前記第5セレクタの出力を1ビット左シフトしたデータおよびデータ’0’のうちのいずれかを出力する第6セレクタと、
前記第4セレクタの出力と前記第3中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータのうちいずれかを出力する第7セレクタと、
前記第3中間鍵選択回路の第2出力(KEYY)と定数M(i)(i=0〜11)とのうちいずれかを出力する第8セレクタと、
前記第5セレクタの出力と前記第3中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータのうちいずれかを出力する第9セレクタと、
前記第6セレクタの出力と前記第3中間鍵選択回路の第4出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する第10セレクタと、
データ’0’とデータ’1’のうちいずれかを出力する第11セレクタと、
前記第7セレクタの出力と第8セレクタの出力を加算する第1加算回路と、
前記第11セレクタの出力を最下位ビットへのキャリとして前記第9セレクタの出力と第10セレクタの出力とを加算する第2加算回路と、
前記第2加算回路の出力と前記第2加算回路の出力を1ビット左ローテーションしたデータのうちのいずれかを出力する第12セレクタと、
前記第1加算回路の出力と第12セレクタの出力との排他的論理和演算を行いその出力を第3拡大鍵として出力する第11XOR回路と、
前記第11XOR回路の出力を一時的に格納し第4拡大鍵として出力する出力レジスタ回路と、
前記出力レジスタ回路の出力と暗号鍵(K0,K1,K2,K3)のいずれかを出力する第13セレクタと、
前記第13セレクタの出力に対してM関数処理を行いその結果を中間鍵として出力するM関数回路と、
を備える付記9〜11のいずれかに記載の暗号回路。
【0052】
(付記14)
中間鍵生成時には暗号鍵(K0,K1,K2,K3)をM関数回路によりM関数処理した初期データ(K’0,K’1,K’2,K’3)を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ(K’0,K’1,K’2,K’3)を用いて演算された中間鍵(IMKEY)を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第1拡大鍵生成回路で生成される第1拡大鍵(EXKEY1)、第2拡大鍵生成回路で生成される第2拡大鍵(EXKEY2)、鍵演算回路で生成される第3拡大鍵(EXKEY3)および第4拡大鍵(EXKEY4)をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用することを特徴とする付記13に記載の暗号回路。
【0053】
(付記15)
前記第1拡大鍵生成回路および第2拡大鍵生成回路は、それぞれ前記第1中間鍵選択回路および第2中間鍵選択回路の出力 (KEYX,KEYY,KEYZ,KEYW)と入力とし、
前記中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータと中間鍵選択回路の第2出力(KEYY)との加算処理を行う鍵生成回路内加算回路と、
前記中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータと中間鍵選択回路の第4出力(KEYW)との減算処理を行う鍵生成回路内減算回路と、
前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を1ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内XOR回路と、
を備える付記13または14に記載の暗号回路。
【0054】
【発明の効果】
本発明によれば、鍵長128ビット専用の暗号回路を構成し、データスクランブル回路と鍵スケジュール回路の一部を共通化することによって回路規模を削減することが可能であるとともに、拡大鍵生成に関する回路を複数設け、特定関数処理回路の処理データ単位を集約することにより、SC2000アルゴリズムを高速かつコンパクトな回路で実現することが可能となる。
本発明では、回路規模24k程度で処理速度1.4Gbpsとすることができるため、回路規模60k程度で処理速度0.9Gbpsを実現可能な国際出願番号PCT/JP01/05095号で提案した暗号回路に比して、回路規模を1/3程度に削減するとともに処理速度を1.5倍に高速化することができる。また、回路規模10k程度で処理速度240Mbpsを実現可能な特願2002−018538号で提案した暗号回路に比して、回路規模は2.4倍に増加するが、処理速度は6倍に向上させることが可能となる。
【図面の簡単な説明】
【図1】本発明の概略構成を示すブロック図。
【図2】データスクランブル回路の構成を示すブロック図。
【図3】R+I/2関数回路の構成を示すブロック図。
【図4】B+I関数回路の構成を示すブロック図。
【図5】暗号鍵入力時における鍵演算回路の接続状態を示すブロック図。
【図6】中間鍵生成時における鍵演算回路の接続状態を示すブロック図。
【図7】拡大鍵生成時における鍵演算回路の接続状態を示すブロック図。
【図8】拡大鍵生成時における中間鍵選択回路と拡大鍵生成回路の接続状態を示すブロック図。
【図9】拡大鍵生成時における鍵スケジュール回路の接続状態を示すブロック図。
Claims (5)
- 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路と、処理ブロック128ビットのデータに対するB関数処理とI関数処理とを同時に実行するB+I関数回路と、前記R+I/2関数回路の出力および前記B+I関数回路の出力のいずれか1つを選択的に出力する第1セレクタと、入力データまたは前記第1セレクタの出力を格納するとともに前記R+I/2関数回路およびB+I関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路。 - 前記レジスタ回路と第1セレクタとの間に、R+I/2関数回路とB+I関数回路とが並列に接続され、第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、請求項1に記載のデータスクランブル回路。
- 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、
前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第1〜第3中間鍵選択回路と、
前記第1中間鍵選択回路で選択された中間鍵に基づいて第1拡大鍵を生成する第1拡大鍵生成回路と、
前記第2中間鍵選択回路で選択された中間鍵に基づいて第2拡大鍵を生成する第2拡大鍵生成回路と、
前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第3中間鍵選択回路で選択された中間鍵に基づいて第3拡大鍵および第4拡大鍵を生成する鍵演算回路と、
を備える鍵スケジュール回路。 - 前記鍵スケジュール回路は、暗号鍵(K0,K1,K2,K3)から算出される初期データ(K’0,K’1,K’2,K’3)を格納する入力レジスタ回路を備え、
前記鍵演算回路は、暗号鍵(K0,K1,K2,K3)、入力レジスタ回路内に格納された初期データ(K’0,K’1,K’2,K’3)および第3中間鍵選択回路の出力(KEYX,LEYY,KEYZ,KEYW)を入力として、
前記レジスタ回路の第1出力(K’O)および第3出力(K’2)のうちいずれかを出力する第4セレクタと、
前記レジスタ回路の第2出力(K’1)および第4出力(K’3)のうちのいずれかを出力する第5セレクタと、
前記第5セレクタの出力、前記第5セレクタの出力を1ビット左シフトしたデータおよびデータ’0’のうちのいずれかを出力する第6セレクタと、
前記第4セレクタの出力と前記第3中間鍵選択回路の第1出力(KEYX)を1ビット左ローテーションしたデータのうちいずれかを出力する第7セレクタと、
前記第3中間鍵選択回路の第2出力(KEYY)と定数M(i)(i=0〜11)とのうちいずれかを出力する第8セレクタと、
前記第5セレクタの出力と前記第3中間鍵選択回路の第3出力(KEYZ)を1ビット左ローテーションしたデータのうちいずれかを出力する第9セレクタと、
前記第6セレクタの出力と前記第3中間鍵選択回路の第4出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する第10セレクタと、
データ’0’とデータ’1’のうちいずれかを出力する第11セレクタと、
前記第7セレクタの出力と第8セレクタの出力を加算する第1加算回路と、
前記第11セレクタの出力を最下位ビットへのキャリとして前記第9セレクタの出力と第10セレクタの出力とを加算する第2加算回路と、
前記第2加算回路の出力と前記第2加算回路の出力を1ビット左ローテーションしたデータのうちのいずれかを出力する第12セレクタと、
前記第1加算回路の出力と第12セレクタの出力との排他的論理和演算を行いその出力を第3拡大鍵として出力する第11XOR回路と、
前記第11XOR回路の出力を一時的に格納し第4拡大鍵として出力する出力レジスタ回路と、
前記出力レジスタ回路の出力と暗号鍵(K0,K1,K2,K3)のいずれかを出力する第13セレクタと、
前記第13セレクタの出力に対してM関数処理を行いその結果を中間鍵として出力するM関数回路と、
を備える請求項3に記載の鍵スケジュール回路。 - 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して128ビット分のR関数処理と64ビット分のI関数処理を同時に実行するR+I/2関数回路と、処理ブロック128ビットのデータに対するB関数処理とI関数処理とを同時に実行するB+I関数回路と、前記R+I/2関数回路の出力および前記B+I関数回路の出力のいずれか1つを選択的に出力する第1セレクタと、入力データまたは前記第1セレクタの出力を格納するとともに前記R+I/2関数回路およびB+I関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、
前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第1〜第3中間鍵選択回路と、前記第1中間鍵選択回路で選択された中間鍵に基づいて第1拡大鍵を生成する第1拡大鍵生成回路と、前記第2中間鍵選択回路で選択された中間鍵に基づいて第2拡大鍵を生成する第2拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第3中間鍵選択回路で選択された中間鍵に基づいて第3拡大鍵および第4拡大鍵を生成する鍵演算回路とを備える鍵スケジュール回路と、
を含む暗号回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002198800A JP4117157B2 (ja) | 2002-07-08 | 2002-07-08 | 暗号回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002198800A JP4117157B2 (ja) | 2002-07-08 | 2002-07-08 | 暗号回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038103A true JP2004038103A (ja) | 2004-02-05 |
JP4117157B2 JP4117157B2 (ja) | 2008-07-16 |
Family
ID=31706151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002198800A Expired - Fee Related JP4117157B2 (ja) | 2002-07-08 | 2002-07-08 | 暗号回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4117157B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242366A (ja) * | 2004-02-26 | 2005-09-08 | Samsung Electronics Co Ltd | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
US8666064B2 (en) | 2009-11-26 | 2014-03-04 | Samsung Electronics Co., Ltd. | Endecryptor capable of performing parallel processing and encryption/decryption method thereof |
JP2018109750A (ja) * | 2016-12-16 | 2018-07-12 | ザ・ボーイング・カンパニーThe Boeing Company | ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 |
-
2002
- 2002-07-08 JP JP2002198800A patent/JP4117157B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242366A (ja) * | 2004-02-26 | 2005-09-08 | Samsung Electronics Co Ltd | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
JP4740611B2 (ja) * | 2004-02-26 | 2011-08-03 | 三星電子株式会社 | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
US8666064B2 (en) | 2009-11-26 | 2014-03-04 | Samsung Electronics Co., Ltd. | Endecryptor capable of performing parallel processing and encryption/decryption method thereof |
JP2018109750A (ja) * | 2016-12-16 | 2018-07-12 | ザ・ボーイング・カンパニーThe Boeing Company | ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 |
JP7107670B2 (ja) | 2016-12-16 | 2022-07-27 | ザ・ボーイング・カンパニー | ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4117157B2 (ja) | 2008-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7158638B2 (en) | Encryption circuit | |
Akishita et al. | Very compact hardware implementations of the blockcipher CLEFIA | |
US10320554B1 (en) | Differential power analysis resistant encryption and decryption functions | |
WO2001067425A1 (fr) | Systeme de chiffrage de blocs utilisant la conversion auxiliaire | |
Gutub et al. | Hybrid crypto hardware utilizing symmetric-key and public-key cryptosystems | |
JP2005215688A (ja) | S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法 | |
JP4025722B2 (ja) | データ暗号化のための方法および装置 | |
KR100377172B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러 | |
JP3824121B2 (ja) | 暗号データの復号化処理方法および装置 | |
JPH10240500A (ja) | 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム | |
CN104219045A (zh) | Rc4 流密码生成器 | |
CN109150495A (zh) | 一种轮变换复用电路及其aes解密电路 | |
JP2005513541A (ja) | Aesアルゴリズム用のプログラマブルデータ暗号化エンジン | |
JP4117157B2 (ja) | 暗号回路 | |
JP4230152B2 (ja) | 暗号回路 | |
KR20010102684A (ko) | 라운드 키 생성 및 암호처리용 암호화장치 | |
Beuchat et al. | A low-area unified hardware architecture for the AES and the cryptographic hash function ECHO | |
JP4745598B2 (ja) | 暗号回路 | |
Mitsuyama et al. | VLSI implementation of high performance burst mode for 128-bit block ciphers | |
KR100546777B1 (ko) | Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기 | |
Li et al. | A new compact architecture for AES with optimized ShiftRows operation | |
KR100316025B1 (ko) | 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치 | |
KR20030087893A (ko) | 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로 | |
Mitsuyama et al. | Burst mode: a new acceleration mode for 128-bit block ciphers | |
WO2002058037A1 (en) | Cipher circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050406 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080115 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080317 |
|
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: 20080415 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080421 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110425 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110425 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110425 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120425 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130425 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140425 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |