JP4230152B2 - 暗号回路 - Google Patents

暗号回路 Download PDF

Info

Publication number
JP4230152B2
JP4230152B2 JP2002018538A JP2002018538A JP4230152B2 JP 4230152 B2 JP4230152 B2 JP 4230152B2 JP 2002018538 A JP2002018538 A JP 2002018538A JP 2002018538 A JP2002018538 A JP 2002018538A JP 4230152 B2 JP4230152 B2 JP 4230152B2
Authority
JP
Japan
Prior art keywords
circuit
function
key
output
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.)
Expired - Fee Related
Application number
JP2002018538A
Other languages
English (en)
Other versions
JP2003216024A (ja
Inventor
正彦 武仲
直哉 鳥居
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002018538A priority Critical patent/JP4230152B2/ja
Publication of JP2003216024A publication Critical patent/JP2003216024A/ja
Application granted granted Critical
Publication of JP4230152B2 publication Critical patent/JP4230152B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、暗号装置に用いられるデータスクランブル回路、データスクランブル回路で用いる拡大鍵を生成するための中間鍵生成回路および拡大鍵生成回路、さらにこれらデータスクランブル回路、中間鍵生成回路および拡大鍵生成回路を備える暗号化/復号化回路に関する。
【0002】
【従来の技術】
現在広く使用されている共通鍵暗号として、DES(Data EncryptIon Standard)が知られている。DESは、1977年に米国政府の標準局NIST(NatIonal InstItute of Standard Technology)が定めた標準であり、64ビット入出力、鍵長64ビット(そのうち8ビットはパリティであり実質的には鍵長56ビット)のブロック暗号である。
【0003】
DESは、F関数と呼ばれる非線形関数処理を16回繰り返し行うアルゴリズムである。このため、DESによる暗号化/復号化を処理するための暗号回路は、たとえば特開2000−75785号公報に示されるように、F関数を繰り返し行うクロック同期ループ構成で実現することが可能である。
DESにより暗号化された暗号文を暗号鍵の総当たり法により解読する場合、鍵長64ビット(56ビット)の場合であっても、計算量的安全性評価の範囲内であると数年前では考えられていた。しかながら、コンピュータの性能向上に伴い、鍵長64ビット(56ビット)でも十分な計算量的安全性を確保することが困難となってきている。このため、複数の暗号鍵を用いて、処理を複数回繰り返す多段DESが用いられる。たとえば、2〜3の暗号鍵を用いて処理を3回繰り返すトリプルDESが一般的に多く用いられている。
【0004】
このようなDESに代わる次世代共通鍵暗号として、鍵長128/192/256ビット、処理ブロック128ビットの暗号AES(Advanced EncryptIon Standard)を標準化しようとする動きがあり、米国標準としてのAESが固まりつつある。
本件出願人は、このようなAESに準拠した仕様(鍵長128/192/256ビット、処理ブロック128ビット)で高い安全性を維持するとともに高速処理を実現するためのアルゴリズムSC2000を発表し、このSC2000に用いる演算装置および演算方法として特願2000−212482号、このSC2000に用いる拡大鍵生成装置として特願2000−212814号において提案している。
【0005】
このSC2000は、DESと同様にいくつかの基本関数を繰り返し行うアルゴリズムであり、各関数処理回路をハードウェアで構成する場合、ループ回路を構成して繰り返し処理を実行するように構成できる。しかしながら、SC2000の暗号方式では、DESにようにF関数だけで構成される暗号方式とは異なり、単純に1つの関数処理回路を1つの同期ループ内で処理できるように構成することができず、各種関数処理回路による関数処理を同期ループ内で効率的に行えるように、各種関数処理回路をいかに配置するかがハードウェア実装時における大きな課題となっている。
【0006】
本件出願人は、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号であるSC2000のアルゴリズムを高速かつコンパクトなハードウェアで実行する回路構成、および電子商取引や電子マネーに応用されるスマートカードに暗号回路を搭載するために、SC2000アルゴリズムをさらにコンパクトなハードウェアで実行する回路構成を、国際出願番号PCT/JP01/05095号(出願日:2001年6月1日)において提案している。
【0007】
本発明は、上述した暗号回路の構成をさらに改良し、ハードウェア規模を同等以下でより高速な回路構成と、速度低下を最小限に抑えながらアルゴリズムをよりコンパクトなハードウェアで実行する回路構成を提供する。
【0008】
【課題を解決するための手段】
本発明に係るデータスクランブル回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、R/2+I/4関数回路と、B/4関数回路と、データスクランブル回路内第1セレクタと、レジスタ回路とを備えている。R/2+I/4関数回路は、処理ブロック128ビットのデータに対して32ビット分のR関数処理と32ビット分のI関数処理を同時に実行する。B/4関数回路は、処理ブロック128ビットのデータに対して32ビット分のB関数処理を実行する。データスクランブル回路内第1セレクタは、R/2+I/4関数回路の出力、R/2+I/4関数回路の出力ビットをクロスさせた出力およびB/4関数回路の出力が入力され、いずれか1つを選択的に出力する。レジスタ回路は、入力データまたはデータスクランブル回路内第1セレクタの出力を格納するとともにR/2+I/4関数回路およびB/4関数回路にデータを供給する。
【0009】
ここで、レジスタ回路とデータスクランブル回路内第1セレクタとの間に、R/2+I/4関数回路とB/4関数回路とが並列に接続され、データスクランブル回路内第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループで構成することができる。
また、R/2+I/4関数回路を、32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路と、M関数回路の出力と“0”とが入力されいずれか一方を出力するRI回路内第1セレクタと、RI回路内第1セレクタの出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力するRI回路内第1XOR回路と、RI回路内第1セレクタの出力と定数"0x55555555","0xAAAAAAAA","0x33333333","0xCCCCCCCC"のうちいずれかを論理積演算を行うRI回路内第1AND回路と、RI回路内第1AND回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力するRI回路内第2XOR回路と、入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力するRI回路内第3XOR回路と、入力データCを出力データDとして出力する経路とを備える構成とすることができる。
【0010】
さらに、B/4関数回路を、入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、入力データ変換部の32個の出力データのうち4k番目(k=1〜8)の出力データに対して非線形処理を実行する8個の4ビットSbox処理回路と、入力データ変換部から出力される4k-3番目、4k-2番目、4k-1番目の出力データと前記4ビットSbox処理回路を通過した4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部とを備える構成とすることができる。
【0011】
また、本発明のデータスクランブル回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して64ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対して64ビット分のB関数処理を実行するB/2関数回路と、R/2+I/4関数回路の出力、R/2+I/4関数回路の出力ビットをクロスさせた出力およびB/2関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたはデータスクランブル回路内第1セレクタの出力を格納するとともにR/2+I/4関数回路およびB/2関数回路にデータを供給するレジスタ回路とを実装する。
【0012】
ここで、B/2関数回路は、入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、入力データ変換部の32個の出力データのうち4k-1番目および4k番目(k=1〜8)の出力データに対して非線形処理を実行する16個の4ビットSbox処理回路と、入力データ変換部から出力される4k-3番目、4k-2番目の出力データと4ビットSbox処理回路を通過した4k-1番目、4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部とを備える構成とすることができる。
【0013】
本発明に係る鍵スケジュール回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、鍵演算回路と、中間鍵記憶回路と、中間鍵選択回路とを備えている。鍵演算回路は、暗号鍵に基づいて複数の中間鍵を生成し、中間鍵に基づいて拡大鍵を生成する。中間鍵記憶回路は、鍵演算回路で生成された複数の中間鍵を格納する。中間鍵選択回路は、中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して鍵演算回路に提供する。
【0014】
ここで、鍵演算回路は、暗号鍵に対して非線形処理であるM関数処理を実行した後のデータを用いて中間鍵を生成するように構成できる。
また、鍵演算回路は、32ビット×4の入力データ(k'0,k'1,k'2,k'3)と中間鍵選択回路の32ビット×4の出力データ(KEYX,KEYY,KEYZ,KEYW)とを入力とし、入力データ(k'0,k'2)のいずれか一方を出力する鍵演算回路内第1セレクタと、入力データ(k'1,k'3)のいずれか一方を出力する鍵演算回路内第2セレクタと、鍵演算回路内第2セレクタの出力、鍵演算回路内第2セレクタの出力を1ビット左シフトしたデータおよびデータ'0'のうちのいずれかを出力する鍵演算回路内第3セレクタと、鍵演算回路内第1セレクタの出力と中間鍵選択回路の出力(KEYX)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第4セレクタと、中間鍵選択回路の出力(KEYY)と定数M(I)(I=0〜11)とのうちいずれか一方を出力する鍵演算回路内第5セレクタと、鍵演算回路内第2セレクタの出力と中間鍵選択回路の出力(KEYZ)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第6セレクタと、鍵演算回路内第3セレクタの出力と中間鍵選択回路の出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する鍵演算回路内第7セレクタと、データ'0'とデータ'1'のうちのいずれか一方を出力する鍵演算回路内第8セレクタと、鍵演算回路内第4セレクタの出力と鍵演算回路内第5セレクタの出力とを加算する鍵演算回路内第1加算回路と、鍵演算回路内第8セレクタの出力を最下位ビットへのキャリとして鍵演算回路内第6セレクタの出力と鍵演算回路内第7セレクタの出力とを加算する鍵演算回路内第2加算回路と、鍵演算回路内第2加算回路の出力と鍵演算回路内第2加算回路の出力を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第9セレクタと、鍵演算回路内第1加算回路の出力と鍵演算回路内第9セレクタの出力との排他的論理和演算を行う鍵演算回路内第1XOR回路と、鍵演算回路内第1XOR回路の出力を格納する鍵演算回路内レジスタとを備える構成とすることができる。
【0015】
さらに、中間鍵生成時には鍵演算回路内レジスタのデータを中間鍵記憶回路に格納し、拡大鍵生成時には鍵演算回路内第1XOR回路の出力データをデータスクランブル回路に出力することによって、鍵演算回路を中間鍵生成時と拡大鍵生成時において共用するように構成できる。
本発明に係る暗号回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、データスクランブル回路と鍵スケジュール回路を備えている。データスクランブル回路は、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して64ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対して32ビット分のB関数処理を実行するB/4関数回路と、R/2+I/4関数回路の出力、R/2+I/4関数回路の出力ビットをクロスさせた出力およびB/4関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたはデータスクランブル回路内第1セレクタの出力を格納するとともにR/2+I/4関数回路およびB/4関数回路にデータを供給するレジスタ回路とを実装する。鍵スケジュール回路は、データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、暗号鍵に基づいて複数の中間鍵を生成し、中間鍵に基づいて拡大鍵を生成する鍵演算回路と、鍵演算回路で生成された複数の中間鍵を格納する中間鍵記憶回路と、中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して鍵演算回路に提供する中間鍵選択回路とを備えている。
【0016】
ここで、データスクランブル回路は、レジスタ回路とデータスクランブル回路内第1セレクタとの間に、R/2+I/4関数回路とB/4関数回路とが並列に接続され、データスクランブル回路内第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループで構成することができる。
また、R/2+I/4関数回路を、32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路と、M関数回路の出力と“0”とが入力されいずれか一方を出力するRI回路内第1セレクタと、RI回路内第1セレクタの出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力するRI回路内第1XOR回路と、RI回路内第1セレクタの出力と定数"0x55555555","0xAAAAAAAA","0x33333333","0xCCCCCCCC"のうちいずれかを論理積演算を行うRI回路内第1AND回路と、RI回路内第1AND回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力するRI回路内第2XOR回路と、入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力するRI回路内第3XOR回路と、入力データCを出力データDとして出力する経路とを備える構成とし、鍵スケジュール回路が、R/2+I/4関数回路のM関数回路を利用して暗号鍵に対してM関数処理を実行した後のデータを用いて中間鍵を生成するように構成できる。
【0017】
さらに、B/4関数回路として、入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、入力データ変換部の32個の出力データのうち4k番目(k=1〜8)の出力データに対して非線形処理を実行する8個の4ビットSbox処理回路と、入力データ変換部から出力される4k-3番目、4k-2番目、4k-1番目の出力データと4ビットSbox処理回路を通過した4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部とを備える構成とすることができる。
また、鍵演算回路として、32ビット×4の入力データ(k'0,k'1,k'2,k'3)と中間鍵選択回路の32ビット×4の出力データ(KEYX,KEYY,KEYZ,KEYW)とを入力とし、入力データ(k'0,k'2)のいずれか一方を出力する鍵演算回路内第1セレクタと、入力データ(k'1,k'3)のいずれか一方を出力する鍵演算回路内第2セレクタと、鍵演算回路内第2セレクタの出力、鍵演算回路内第2セレクタの出力を1ビット左シフトしたデータおよびデータ'0'のうちのいずれかを出力する鍵演算回路内第3セレクタと、鍵演算回路内第1セレクタの出力と中間鍵選択回路の出力(KEYX)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第4セレクタと、中間鍵選択回路の出力(KEYY)と定数M(I)(I=0〜11)とのうちいずれか一方を出力する鍵演算回路内第5セレクタと、鍵演算回路内第2セレクタの出力と中間鍵選択回路の出力(KEYZ)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第6セレクタと、鍵演算回路内第3セレクタの出力と中間鍵選択回路の出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する鍵演算回路内第7セレクタと、データ'0'とデータ'1'のうちのいずれか一方を出力する鍵演算回路内第8セレクタと、鍵演算回路内第4セレクタの出力と鍵演算回路内第5セレクタの出力とを加算する鍵演算回路内第1加算回路と、鍵演算回路内第8セレクタの出力を最下位ビットへのキャリとして鍵演算回路内第6セレクタの出力と鍵演算回路内第7セレクタの出力とを加算する鍵演算回路内第2加算回路と、鍵演算回路内第2加算回路の出力と鍵演算回路内第2加算回路の出力を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第9セレクタと、鍵演算回路内第1加算回路の出力と鍵演算回路内第9セレクタの出力との排他的論理和演算を行う鍵演算回路内第1XOR回路と、鍵演算回路内第1XOR回路の出力を格納する鍵演算回路内レジスタとを備える構成とすることができる。
【0018】
さらに、中間鍵生成時には鍵演算回路内レジスタのデータを中間鍵記憶回路に格納し、拡大鍵生成時には鍵演算回路内第1XOR回路の出力データをデータスクランブル回路に出力することによって、鍵演算回路を中間鍵生成時と拡大鍵生成時において共用するように構成できる。
また、本発明に係る暗号回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して64ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対して64ビット分のB関数処理を実行するB/2関数回路と、R/2+I/4関数回路の出力、R/2+I/4関数回路の出力ビットをクロスさせた出力およびB/2関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたはデータスクランブル回路内第1セレクタの出力を格納するとともにR/2+I/4関数回路およびB/2関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、暗号鍵に基づいて複数の中間鍵を生成し、中間鍵に基づいて拡大鍵を生成する鍵演算回路と、鍵演算回路で生成された複数の中間鍵を格納する中間鍵記憶回路と、中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して鍵演算回路に提供する中間鍵選択回路とを備える鍵スケジュール回路とを含む。
【0019】
ここで、B/2関数回路は、入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、入力データ変換部の32個の出力データのうち4k-1番目、4k番目(k=1〜8)の出力データに対して非線形処理を実行する16個の4ビットSbox処理回路と、入力データ変換部から出力される4k-3番目、4k-2番目の出力データと4ビットSbox処理回路を通過した4k-1番目、4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部とを備える構成とすることができる。
【0020】
【発明の実施の形態】
〔基本構成〕
本発明に係る暗号回路の基本構成を図1に示す。
暗号回路1は、データスクランブル回路2と鍵スケジュール回路5とから構成されている。
【0021】
データスクランブル回路2は、データを一時的に格納するレジスタ回路3と、内部に複数種の関数処理回路を備えた暗号処理回路4とを備えている。データスクランブル回路2は、暗号処理回路4の出力がレジスタ回路3にフィードバックされたクロック同期ループを構成している。レジスタ回路3は、暗号鍵、平文、暗号文、暗号処理回路4で演算される1サイクル毎の演算結果などを一時的に格納する。
【0022】
鍵スケジュール回路5は、データスクランブル回路2に対して拡大鍵を提供するものであって、暗号鍵に基づいて複数の中間鍵を生成し、この中間鍵に基づいて拡大鍵を生成する鍵演算回路7と、鍵演算回路7で生成された複数の中間鍵を格納する中間鍵記憶回路6と、中間鍵記憶回路6に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して鍵演算回路7に提供する中間鍵選択回路8とを備えている。鍵演算回路7が中間鍵を生成する際には、データスクランブル回路2のレジスタ回路3を利用するように構成することが可能である。
【0023】
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関数処理を4回に分けて処理するI/4関数処理とR関数を2回に分けて処理するR/2関数とを結合したR/2+I/4関数回路と、B関数処理を4回に分けて処理するB/4関数回路とを備える構成とすることにより、(B-I-R-R-I)処理の部分を、B/4-B/4-B/4-B/4-I/4-I/4-I/4-I/4-(R/2+I/4)-(R/2+I/4)-(R/2+I/4)-(R/2+I/4)の順に処理することで12サイクルで処理が可能である。最初のI関数処理、最後のB関数処理およびI関数処理も同様に、R/2+I/4関数回路およびB/4関数回路を用いて処理することが可能となる。
【0024】
鍵スケジュール回路5は、データスクランブル回路2のI関数処理に利用する拡大鍵を生成するものであって、ここでは、I-(B-I-R-R-I)6-B-Iの処理中の14個のI関数処理、すなわち14個×4=56個のI/4関数処理に対して32ビットの拡大鍵を生成して供給することとなる。
入力される暗号鍵(ユーザ鍵)は128ビットデータでなり、非線形処理であるM関数処理の後、レジスタ回路3に32ビット×4の入力データとして格納される。鍵演算回路7は、レジスタ回路3の32ビット×4個のデータのうちから2個を選択して、所定値の加算や所定値の乗算を行い、各演算結果の排他的論理和を演算し、さらにM関数処理を行うように構成される。鍵演算回路7では、暗号鍵に基づいて32ビット×12個の中間鍵を生成し、中間鍵記憶回路6に格納する。
【0025】
このように、暗号回路1では、入力される暗号鍵(ユーザ鍵)に基づいて、鍵演算回路7で中間鍵を生成しこれを中間鍵記憶回路6に格納する。中間鍵選択回路8が鍵スケジュールに応じて中間鍵記憶回路6内に格納されている中間鍵を選択し、鍵演算回路7がこの中間鍵から拡大鍵を生成する。データスクランブル回路2は、入力される平文を鍵スケジュール回路5から供給される拡大鍵に基づいて暗号化を行い暗号文を出力し、入力される暗号文を鍵スケジュール回路5から供給される拡大鍵に基づいて復号化して平文を出力する。
【0026】
〔データスクランブル回路〕
データスクランブル回路2は、図2に示すようなレジスタ回路3と暗号処理回路4から構成されている。レジスタ回路3は、32ビット×4の入力データ(A,B,C,D)を格納することが可能となっており、この入力データ(A,B,C,D)を暗号処理回路4に供給する。
【0027】
暗号処理回路4は、処理ブロック128ビットのデータに対して32ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路41と、処理ブロック128ビットのデータに対して32ビット分のB関数処理を実行するB/4関数回路42と、R/2+I/4関数回路の出力ビットをクロスさせるためのクロス経路43と、R/2+I/4関数回路41の出力、B/4関数回路42の出力、クロス経路43の出力のうちいずれかを出力する第1セレクタ44とを含んでいる。
【0028】
暗号処理回路4の第1セレクタ44の出力はレジスタ回路3にフィードバックされてクロック同期ループを構成している。したがって、レジスタ回路3内に格納されているデータに基づいて暗号処理回路4が1クロックで演算処理を実行した結果が、レジスタ回路3に格納される。
(R/2+I/4関数回路)
R/2+I/4関数回路41の構成を図3に示す。
【0029】
R/2+I/4関数回路41は、図3の左側に位置するR/2回路と右側に位置するI/4回路で構成されており、R/2回路は、32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路411と、M関数回路411の出力とデータ“0”とが入力されいずれか一方を出力する第2セレクタ412と、第2セレクタ412の出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力する第1XOR回路413と、第2セレクタ412の出力と定数"0x55555555","0xAAAAAAAA","0x33333333","0xCCCCCCCC"のうちいずれかとの論理積演算を行うAND回路414と、AND回路414の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力する第2XOR回路415とを備えている。また、I/4関数回路は、入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力する第3XOR回路416と、入力データCを出力データDとして出力する経路とを備えている。
【0030】
(B/4関数回路)
B/4関数回路42の構成を図4に示す。
B/4関数回路42は、入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部421と、入力データ変換部421の32個の出力データのうち4k番目(k=1〜8)の出力データに対して非線形処理を実行する8個の4ビットSbox処理回路422と、入力データ変換部421から出力される4k-3番目、4k-2番目、4k-1番目の出力データと4ビットSbox処理回路422を通過した4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部423とを備えている。
【0031】
(各関数処理)
上述したデータスクランブル回路2において、各関数処理を実行する場合の動作を説明する。
I関数処理を行う場合には、第1サイクルにおいて第1セレクタ44を'L'に設定し、第2セレクタ412を'L'に設定することにより、R/2+I/4関数回路41のうちI/4関数部分のみの演算処理が実行される。この演算結果はレジスタ回路3にフィードバックされて格納される。
【0032】
第2サイクルでは、第1セレクタ44を'M'に設定し、第2セレクタ412を'L'に設定することにより、R/2+I/4関数回路41のうちI/4関数部分のみの演算処理が実行される。この演算結果はレジスタ回路3にフィードバックされて格納される。このとき、レジスタ回路3のデータ'C','D'に最初に格納されていたデータは、それぞれI関数処理されてレジスタ回路3のデータ'A','B'の位置に格納され、レジスタ回路3のデータ'A','B'に最初に格納されていたデータは、処理されないままでレジスタ回路3のデータ'C','D'の位置に格納される。
【0033】
第3サイクルでは、第1セレクタ44を'L'に設定し、第2セレクタ412を'L'に設定してR/2+I/4関数回路41のうちI/4関数部分のみの演算処理を実行し、第4サイクルでは、第1セレクタ44を'M'に設定し、第2セレクタ412を'L'に設定してR/2+I/4関数回路41のうちI/4関数部分のみの演算処理を実行する。このことにより、第3サイクルおよび第4サイクルにおいて、レジスタ回路3の最初の'A','B'に格納されていたデータに対して、それぞれI関数処理を行うとともに、各データをレジスタ回路3の最初の位置に格納することができる。
【0034】
B関数処理を実行する場合には、第1サイクルでは、第1セレクタ44を'R'に設定し、B/4回路42における演算処理結果をレジスタ回路3にフィードバックして格納する。第2〜4サイクルにおいても第1サイクルと同様の処理を実行し、4サイクルでB関数の演算処理を完了する。
R関数処理を2回とI関数処理を1回行う場合、第1サイクルでは、第1セレクタ44を'L'に設定し、第2セレクタ412を'R'に設定する。このことにより、R/2+I/4関数回路41の全体の演算処理が実行され、その演算結果がレジスタ回路3にフィードバックされて格納される。
【0035】
第2サイクルでは、第1セレクタ44を'M'に設定し、第2セレクタ412を'R'に設定することにより、R/2+I/4関数回路41の全体の演算処理を実行して、その演算結果をレジスタ回路3にフィードバックして格納する。
第3サイクルでは、第1セレクタ44を'L'に設定し、第2セレクタ412を'R'に設定し、R/2+I/4関数回路41の全体の演算処理を実行し、その演算結果をレジスタ回路3にフィードバックして格納する。
【0036】
第4サイクルでは、第1セレクタ44を'L'に設定し、第2セレクタ412を'R'に設定することにより、R/2+I/4関数回路41の全体の演算処理を実行して、その演算結果をレジスタ回路3にフィードバックして格納する。
この4サイクルにおいて、(R/2+I/4)の処理を4回行って、R-R-Iの演算処理を完了する。
【0037】
平文がレジスタ回路3に格納されると、まず4サイクルでI関数処理を実行する。この後の12サイクルで、B関数処理、I関数処理、R-R-I関数処理を上述の手順で実行し、(B-I-R-R-I)関数処理を実行する。この(B-I-R-R-I)関数処理を6回繰り返した後、最後にB関数処理およびI関数処理を実行して、レジスタ回路3に演算結果を格納し、暗号文でなる最終結果を出力することとなる。この暗号化の手順は、84サイクルで構成され、各サイクルにおける第1セレクタ44および第2セレクタ412の切換制御テーブルを表1に示す。
【0038】
【表1】
Figure 0004230152
復号化時においても、同様の手順で処理が実行され、暗号文がレジスタ回路3に格納されると、まず4サイクルでI関数処理を実行する。この後の12サイクルで、B関数処理、I関数処理、R-R-I関数処理を上述の手順で実行し、(B-I-R-R-I)関数処理を実行する。この(B-I-R-R-I)関数処理を6回繰り返した後、最後にB関数処理およびI関数処理を実行して、レジスタ回路3に演算結果を格納し、平文でなる最終結果を出力することとなる。この復号化の手順は、暗号化と同様に84サイクルで構成され、各サイクルにおける第1セレクタ44および第2セレクタ412の切換制御テーブルを表2に示す。暗号化時と復号化時とでは、拡大鍵を使用する順が異なる他は、各サイクルにおける第1セレクタ44および第2セレクタ412の切換制御は同一の構成とすることができる。
【0039】
【表2】
Figure 0004230152
図2におけるクロス経路43は、R/2+I/4関数回路41の出力データ128ビットを32ビット毎に(A,B,C,D)とするとき、(C,D,A,B)を出力するような処理を実行するものであって、結線だけで実現することが可能であり、回路規模増大にならない。
【0040】
また、図4に示すB/4関数回路42において、入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部421および4ビット×32のデータを32ビット×4の出力データに変換する出力データ変換部423の構成も結線だけで実現することが可能であり、回路規模への影響はない。
【0041】
〔鍵スケジュール回路〕
上述したようなデータスクランブル回路2で用いる拡大鍵を生成するための鍵スケジュール回路5を図5〜図7に示す。
鍵スケジュール回路5の鍵演算回路7、中間鍵記憶回路6および中間鍵選択回路8の接続は図7に示すように構成されており、データスクランブル回路41のレジスタ回路3およびM関数回路411を共用するためにレジスタ回路3の出力が鍵演算回路7および中間鍵記憶回路6に接続されている。
【0042】
鍵スケジュール回路5による鍵スケジュール処理は、暗号鍵(ユーザ鍵)から中間鍵を生成するフェーズと、中間鍵から拡大鍵を生成するフェーズとを含んでおり、本構成では両フェーズにおいて鍵演算回路7と中間鍵記憶回路6とを共用するように構成している。
(中間鍵記憶回路)
暗号鍵に基づいて鍵演算回路7で生成される中間鍵は、中間鍵記憶回路6に保存される。この中間鍵保存回路6は、32ビット×12のレジスタで構成されており、鍵演算回路7によって生成されるデータにM関数処理を行ったデータを中間鍵として格納するためにM関数回路411の出力に接続されている。このM関数回路411は、データスクランブル回路2内のM関数回路と共用するものとする。
【0043】
(中間鍵選択回路)
中間鍵選択回路8は、中間鍵記憶回路6の各レジスタに格納されているデータのうちデータ(a0,a1,a2)を入力として選択的にいずれか1つを出力するセレクタX(SELX)801、データ(b0,b1,b2)を入力として選択的にいずれか1つを出力するセレクタY(SELY)802、データ(c0,c1,c2)を入力として選択的にいずれか1つを出力するセレクタZ(SELZ)803、データ(d0,d1,d2)を入力として選択的にいずれか1つを出力するセレクタW(SELW)804およびセレクタX801〜セレクタW804の出力切換を行うスイッチ805を備えている。
【0044】
(鍵演算回路)
鍵演算回路7は、レジスタ回路3の32ビット×4のデータ(k'0,k'1,k'2,k'3)のうちデータ(k'0,k'2)が入力されていずれか一方を出力する第3セレクタ701と、データ(k'1,k'3)が入力されていずれか一方を出力する第4セレクタ702とを備えている。
【0045】
また、鍵演算回路7は、第4セレクタ702の出力、第4セレクタ702の出力を1ビット左シフトしたデータおよびデータ'0'のうちのいずれかを出力する第5セレクタ704を備えている。第4セレクタ702の出力を1ビット左シフトするためのシフト部703は、結線だけ実現可能であり回路規模を増大させることはない。
【0046】
鍵演算回路7は、第3セレクタ701の出力と中間鍵選択回路8のセレクタX801の出力(KEYX)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する第6セレクタ705を備えている。セレクタX801の出力(KEYX)を1ビット左ローテーションするためのローテートシフト部706は結線のみで実現することが可能であり、回路規模を増大させることがない。
【0047】
さらに、鍵演算回路7は、中間鍵選択回路8のセレクタY802の出力(KEYY)と定数M(I)(I=0〜11)とのうちいずれか一方を出力する第7セレクタ707を備えている。
鍵演算回路7は第4セレクタ702の出力と中間鍵選択回路8のセレクタZ803の出力(KEYZ)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する第8セレクタ710を備えている。セレクタZ803の出力(KEYZ)を1ビット左ローテーションするためのローテートシフト部709は、結線のみで実現することが可能であり回路規模に影響を及ぼすことがない。
【0048】
鍵演算回路7は、第5セレクタ704の出力と中間鍵選択回路8のセレクタW804の出力(KEYW)にインバータ処理を行ったデータとのうちいずれか一方を出力する第9セレクタ712を備えている。中間鍵選択回路8のセレクタW804の出力(KEYW)にインバータ処理を行うためには、データの反転を行うINV回路713を接続する。
【0049】
さらに、鍵演算回路7は、データ'0'とデータ'1'のうちのいずれか一方を出力する第10セレクタ714を備えている。
鍵演算回路7は、第6セレクタ705の出力と第7セレクタ707の出力とを加算するための第1加算回路708と、第10セレクタ714の出力を最下位ビットへのキャリとして第8セレクタ710の出力と第9セレクタ712の出力とを加算する第2加算回路711とを備えている。
【0050】
さらに、鍵演算回路7は、第2加算回路711の出力と第2加算回路711の出力を1ビット左ローテーションしたデータとのうちいずれか一方を出力する第11セレクタ716を備えている。第2加算回路711の出力を1ビット左ローテーションするためのローテートシフト部715は、結線のみで実現することが可能であり回路規模への影響はない。
【0051】
鍵演算回路7は、第1加算回路708の出力と第11セレクタ716の出力との排他的論理和演算を行うXOR回路717と、XOR回路717の出力を格納する鍵演算回路内レジスタ718とを備えている。
XOR回路717の出力は、鍵演算回路内レジスタ718に接続されるとともに、データスクランブル回路2のR/2+I/4関数回路41に接続されている。また、鍵演算回路内レジスタ718の出力はデータスクランブル回路2内に実装されて共用されるM関数回路411に接続されている。
【0052】
(中間鍵生成処理)
鍵スケジュール回路5を用いて中間鍵を生成する場合には、図5に示すような接続状態で処理を実行する。
中間鍵生成では、データスクランブル回路2に含まれるレジスタ回路3とM関数回路411とを利用し、これらと鍵演算回路7および中間鍵記憶回路6を用いて処理を実行する。
【0053】
中間鍵生成では、データスクランブル処理に先立って、入力される暗号鍵から12個の中間鍵を生成する処理である。32ビット×4の暗号鍵(k0,k1,k2,k3)が入力されると、M関数回路411によるM関数処理を実行し、データ(k'0,k'1,k'2,k'3)としてレジスタ回路3に格納する。
中間鍵生成時には、第6セレクタ705、第7セレクタ707、第8セレクタ710、第9セレクタ712、第10セレクタ714、第11セレクタ716は、常に'L'が選択される。また、第3セレクタ701、第4セレクタ702、第5セレクタ704は、中間鍵a0〜d2のいずれを生成するかにより切換えられる。12個の中間鍵を生成する際の第3セレクタ701、第4セレクタ702、第5セレクタ704の切換制御のテーブルを表2に示す。
【0054】
【表3】
Figure 0004230152
鍵演算回路7で処理されたデータは、鍵演算回路内レジスタ718に一旦格納され、次のサイクルでM関数処理されて中間鍵記憶回路6に格納される。鍵演算回路内レジスタ718は、遅延短縮パイプライン用のレジスタであり、M関数回路411におけるM関数処理にかかる処理時間を考慮して、M関数処理前に32ビットバッファである鍵演算回路内レジスタ718を介して処理することにより2クロックで処理を行う。このことにより、12個の中間鍵を生成するのに12クロックで処理できるところを本構成では13クロックで処理を行っているが、M関数処理に必要な処理時間に基づくクロック周波数の上限を引き上げることができ、全体の処理速度を高めることが可能となる。
【0055】
(拡大鍵生成処理)
拡大鍵生成処理時における鍵スケジュール回路5の接続状態を図6に示す。
データスクランブル回路2のI関数処理では、I/4関数処理として実行されるため、R/2+I/4関数回路41におけるI/4関数処理時の1サイクルに対して32ビットの拡大鍵が1個必要となる。このため、1サイクルで処理可能な拡大鍵生成用回路を1組だけ構成することで、データスクランブル回路2への拡大鍵の提供が実現でき、回路規模を大幅に削減することができる。拡大鍵生成処理では、図6に示すように、鍵演算回路7、中間鍵記憶回路6および中間鍵選択回路8を使用する。
【0056】
中間鍵選択回路8は、3入力1出力のセレクタX801〜セレクタW804と、4入力1出力のセレクタを4つ備えるスイッチ805で構成されている。スイッチ805は、セレクタX801〜セレクタW804で選択された4つの中間鍵の入力に対して、それぞれ1つを選択して出力する回路である。
拡大鍵生成処理では、中間鍵記憶回路6に格納された12個の中間鍵から中間鍵選択回路8により4つの中間鍵を選択し、全56個の拡大鍵を生成する。この56個の拡大鍵を生成するためのセレクタX801〜セレクタW804の切換制御のテーブルを表3に示す。
【0057】
【表4】
Figure 0004230152
このようなセレクタX801〜セレクタW804の切換制御により選択された中間鍵を用いて鍵演算回路7により拡大鍵の演算を行う。鍵演算回路7の第6セレクタ705、第7セレクタ707、第8セレクタ710、第9セレクタ712、第10セレクタ714、第11セレクタ716は、拡大鍵生成時には常に'R'が選択される。このため、演算結果に対する第3セレクタ701、第4セレクタ702、第5セレクタ704の出力による影響はなくなる。また、XOR回路717からの出力を遅延短縮パイプラインである鍵演算回路内レジスタ718を通さずに直接データスクランブル回路2に出力するように構成する。
【0058】
以上のように、本構成による鍵スケジュール回路5では、データスクランブル回路2の構成に応じて1サイクルで必要となる拡大鍵を生成するための拡大鍵生成回路を1組だけ構成することで、回路規模を大幅に削減することが可能である。また、データスクランブル回路2のレジスタ回路3およびM関数回路411を共用することで回路規模の削減を実現している。さらに、遅延短縮パイプラインとして機能する鍵演算回路内レジスタ718を設けることで、中間鍵生成時におけるM関数処理によるクロック周波数の上限を引き上げることができ、クロック周波数を上げることで全体の処理を高速化することが可能となる。
【0059】
〔他の実施形態〕
データスクランブル回路2のB/4関数回路42に代えて、1サイクルで64ビット分のB関数処理を実行するB/2関数回路を用いることが可能である。このB/2関数回路を図8に示す。
B/4関数回路45は、入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部451と、入力データ変換部451の32個の出力データのうち4k-1番目および4k番目(k=1〜8)の出力データに対して非線形処理を実行する16個の4ビットSbox処理回路452と、入力データ変換部451から出力される4k-3番目、4k-2番目の出力データと4ビットSbox処理回路422を通過した4k-1番目、4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部453とを備えている。
【0060】
このようなB/2関数回路45を用いる場合には、1回のB関数処理をB/2-B/2として2回に分けて処理を行うため、前述した実施形態に比して14サイクルの処理クロックを削減できる。B/2関数回路45を用いた場合のデータスクランブル回路2の暗号化時における第1セレクタ44および第2セレクタ412の切換制御のテーブルを表5に示し、復号化時における第1セレクタ44および第2セレクタ412の切換制御のテーブルを表6に示す。
【0061】
【表5】
Figure 0004230152
【0062】
【表6】
Figure 0004230152
B/2関数回路45を用いることによって、回路規模がやや増加する(500ゲート程度)ものの、前述したように、全体の処理クロックが84サイクルから70サイクルに削減することができ、処理を14%高速化できる。
【0063】
<付記>
(付記1)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して64ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対して32ビット分のB関数処理を実行するB/4関数回路と、前記R/2+I/4関数回路の出力、前記R/2+I/4関数回路の出力ビットをクロスさせた出力および前記B/4関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたは前記データスクランブル回路内第1セレクタの出力を格納するとともに前記R/2+I/4関数回路およびB/4関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路。
【0064】
(付記2)
前記レジスタ回路とデータスクランブル回路内第1セレクタとの間に、R/2+I/4関数回路とB/4関数回路とが並列に接続され、データスクランブル回路内第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、付記1に記載のデータスクランブル回路。
【0065】
(付記3)
前記R/2+I/4関数回路は、
32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路と、
前記M関数回路の出力と“0”とが入力されいずれか一方を出力するRI回路内第1セレクタと、
前記RI回路内第1セレクタの出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力するRI回路内第1XOR回路と、
前記RI回路内第1セレクタの出力と定数"0x55555555","0xAAAAAAAA","0x33333333","0xCCCCCCCC"のうちいずれかを論理積演算を行うRI回路内第1AND回路と、
前記RI回路内第1AND回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力するRI回路内第2XOR回路と、
入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力するRI回路内第3XOR回路と、
入力データCを出力データDとして出力する経路と、
を備える、付記2に記載のデータスクランブル回路。
【0066】
(付記4)
前記B/4関数回路は、
入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、
前記入力データ変換部の32個の出力データのうち4k番目(k=1〜8)の出力データに対して非線形処理を実行する8個の4ビットSbox処理回路と、
前記入力データ変換部から出力される4k-3番目、4k-2番目、4k-1番目の出力データと前記4ビットSbox処理回路を通過した4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部と、
を備える、付記1〜3のいずれかに記載のデータスクランブル回路。
【0067】
(付記5)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して64ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対して64ビット分のB関数処理を実行するB/2関数回路と、前記R/2+I/4関数回路の出力、前記R/2+I/4関数回路の出力ビットをクロスさせた出力および前記B/2関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたは前記データスクランブル回路内第1セレクタの出力を格納するとともに前記R/2+I/4関数回路およびB/2関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路。
【0068】
(付記7)
前記B/2関数回路は、
入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、
前記入力データ変換部の32個の出力データのうち4k-1番目および4k番目(k=1〜8)の出力データに対して非線形処理を実行する16個の4ビットSbox処理回路と、
前記入力データ変換部から出力される4k-3番目、4k-2番目の出力データと前記4ビットSbox処理回路を通過した4k-1番目、4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部と、
を備える、付記6に記載のデータスクランブル回路。
【0069】
(付記7)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、
前記暗号鍵に基づいて複数の中間鍵を生成し、前記中間鍵に基づいて拡大鍵を生成する鍵演算回路と、
前記鍵演算回路で生成された複数の中間鍵を格納する中間鍵記憶回路と、
前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して前記鍵演算回路に提供する中間鍵選択回路と、
を備える鍵スケジュール回路。
【0070】
(付記8)
前記鍵演算回路は、暗号鍵に対して非線形処理であるM関数処理を実行した後のデータを用いて中間鍵を生成する、付記7に記載の鍵スケジュール回路。
(付記9)
前記鍵演算回路は、32ビット×4の入力データ(k'0,k'1,k'2,k'3)と前記中間鍵選択回路の32ビット×4の出力データ(KEYX,KEYY,KEYZ,KEYW)とを入力とし、
入力データ(k'0,k'2)のいずれか一方を出力する鍵演算回路内第1セレクタと、
入力データ(k'1,k'3)のいずれか一方を出力する鍵演算回路内第2セレクタと、
前記鍵演算回路内第2セレクタの出力、前記鍵演算回路内第2セレクタの出力を1ビット左シフトしたデータおよびデータ'0'のうちのいずれかを出力する鍵演算回路内第3セレクタと、
前記鍵演算回路内第1セレクタの出力と中間鍵選択回路の出力(KEYX)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第4セレクタと、
前記中間鍵選択回路の出力(KEYY)と定数M(I)(I=0〜11)とのうちいずれか一方を出力する鍵演算回路内第5セレクタと、
前記鍵演算回路内第2セレクタの出力と前記中間鍵選択回路の出力(KEYZ)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第6セレクタと、
前記鍵演算回路内第3セレクタの出力と前記中間鍵選択回路の出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する鍵演算回路内第7セレクタと、
データ'0'とデータ'1'のうちのいずれか一方を出力する鍵演算回路内第8セレクタと、
前記鍵演算回路内第4セレクタの出力と鍵演算回路内第5セレクタの出力とを加算する鍵演算回路内第1加算回路と、
前記鍵演算回路内第8セレクタの出力を最下位ビットへのキャリとして前記鍵演算回路内第6セレクタの出力と鍵演算回路内第7セレクタの出力とを加算する鍵演算回路内第2加算回路と、
前記鍵演算回路内第2加算回路の出力と鍵演算回路内第2加算回路の出力を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第9セレクタと、
前記鍵演算回路内第1加算回路の出力と前記鍵演算回路内第9セレクタの出力との排他的論理和演算を行う鍵演算回路内第1XOR回路と、
前記鍵演算回路内第1XOR回路の出力を格納する鍵演算回路内レジスタと、
を備える、付記7または8に記載の鍵スケジュール回路。
【0071】
(付記10)
中間鍵生成時には鍵演算回路内レジスタのデータを前記中間鍵記憶回路に格納し、拡大鍵生成時には鍵演算回路内第1XOR回路の出力データをデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用することを特徴とする付記9に記載の鍵スケジュール回路。
【0072】
(付記11)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して64ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対して32ビット分のB関数処理を実行するB/4関数回路と、前記R/2+I/4関数回路の出力、前記R/2+I/4関数回路の出力ビットをクロスさせた出力および前記B/4関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたは前記データスクランブル回路内第1セレクタの出力を格納するとともに前記R/2+I/4関数回路およびB/4関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、
前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて複数の中間鍵を生成し、前記中間鍵に基づいて拡大鍵を生成する鍵演算回路と、前記鍵演算回路で生成された複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して前記鍵演算回路に提供する中間鍵選択回路とを備える鍵スケジュール回路と、
を含む暗号回路。
【0073】
(付記12)
前記データスクランブル回路は、前記レジスタ回路とデータスクランブル回路内第1セレクタとの間に、R/2+I/4関数回路とB/4関数回路とが並列に接続され、データスクランブル回路内第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、付記11に記載の暗号回路。
【0074】
(付記13)
前記R/2+I/4関数回路は、
32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路と、
前記M関数回路の出力と“0”とが入力されいずれか一方を出力するRI回路内第1セレクタと、
前記RI回路内第1セレクタの出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力するRI回路内第1XOR回路と、
前記RI回路内第1セレクタの出力と定数"0x55555555","0xAAAAAAAA","0x33333333","0xCCCCCCCC"のうちいずれかを論理積演算を行うRI回路内第1AND回路と、
前記RI回路内第1AND回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力するRI回路内第2XOR回路と、
入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力するRI回路内第3XOR回路と、
入力データCを出力データDとして出力する経路と、
を備え、
前記鍵スケジュール回路は、前記R/2+I/4関数回路のM関数回路を利用して暗号鍵に対してM関数処理を実行した後のデータを用いて中間鍵を生成することを特徴とする、付記11または12に記載の暗号回路。
【0075】
(付記14)
前記B/4関数回路は、
入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、
前記入力データ変換部の32個の出力データのうち4k番目(k=1〜8)の出力データに対して非線形処理を実行する8個の4ビットSbox処理回路と、
前記入力データ変換部から出力される4k-3番目、4k-2番目、4k-1番目の出力データと前記4ビットSbox処理回路を通過した4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部と、
を備える、付記11〜13のいずれかに記載の暗号回路。
【0076】
(付記15)
前記鍵演算回路は、32ビット×4の入力データ(k'0,k'1,k'2,k'3)と前記中間鍵選択回路の32ビット×4の出力データ(KEYX,KEYY,KEYZ,KEYW)とを入力とし、
入力データ(k'0,k'2)のいずれか一方を出力する鍵演算回路内第1セレクタと、
入力データ(k'1,k'3)のいずれか一方を出力する鍵演算回路内第2セレクタと、
前記鍵演算回路内第2セレクタの出力、前記鍵演算回路内第2セレクタの出力を1ビット左シフトしたデータおよびデータ'0'のうちのいずれかを出力する鍵演算回路内第3セレクタと、
前記鍵演算回路内第1セレクタの出力と中間鍵選択回路の出力(KEYX)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第4セレクタと、
前記中間鍵選択回路の出力(KEYY)と定数M(I)(I=0〜11)とのうちいずれか一方を出力する鍵演算回路内第5セレクタと、
前記鍵演算回路内第2セレクタの出力と前記中間鍵選択回路の出力(KEYZ)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第6セレクタと、
前記鍵演算回路内第3セレクタの出力と前記中間鍵選択回路の出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する鍵演算回路内第7セレクタと、
データ'0'とデータ'1'のうちのいずれか一方を出力する鍵演算回路内第8セレクタと、
前記鍵演算回路内第4セレクタの出力と鍵演算回路内第5セレクタの出力とを加算する鍵演算回路内第1加算回路と、
前記鍵演算回路内第8セレクタの出力を最下位ビットへのキャリとして前記鍵演算回路内第6セレクタの出力と鍵演算回路内第7セレクタの出力とを加算する鍵演算回路内第2加算回路と、
前記鍵演算回路内第2加算回路の出力と鍵演算回路内第2加算回路の出力を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第9セレクタと、
前記鍵演算回路内第1加算回路の出力と前記鍵演算回路内第9セレクタの出力との排他的論理和演算を行う鍵演算回路内第1XOR回路と、
前記鍵演算回路内第1XOR回路の出力を格納する鍵演算回路内レジスタと、
を備える、付記11〜14のいずれかに記載の暗号回路。
【0077】
(付記16)
中間鍵生成時には鍵演算回路内レジスタのデータを前記中間鍵記憶回路に格納し、拡大鍵生成時には鍵演算回路内第1XOR回路の出力データをデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用することを特徴とする付記15に記載の暗号回路。
【0078】
(付記17)
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、
I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対して64ビット分のR関数処理と32ビット分のI関数処理を同時に実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対して64ビット分のB関数処理を実行するB/2関数回路と、前記R/2+I/4関数回路の出力、前記R/2+I/4関数回路の出力ビットをクロスさせた出力および前記B/2関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたは前記データスクランブル回路内第1セレクタの出力を格納するとともに前記R/2+I/4関数回路およびB/2関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、
前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて複数の中間鍵を生成し、前記中間鍵に基づいて拡大鍵を生成する鍵演算回路と、前記鍵演算回路で生成された複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して前記鍵演算回路に提供する中間鍵選択回路とを備える鍵スケジュール回路と、
を含む暗号回路。
【0079】
(付記18)
前記B/2関数回路は、
入力される32ビット×4の入力データを4ビット×32の出力データに変換する入力データ変換部と、
前記入力データ変換部の32個の出力データのうち4k-1番目、4k番目(k=1〜8)の出力データに対して非線形処理を実行する16個の4ビットSbox処理回路と、
前記入力データ変換部から出力される4k-3番目、4k-2番目の出力データと前記4ビットSbox処理回路を通過した4k-1番目、4k番目の出力データとを撹拌するとともに32ビット×4の出力データに変換する出力データ変換部と、
を備える、付記17に記載の暗号回路。
【0080】
【発明の効果】
本発明によれば、鍵長128ビット専用の暗号回路を構成し、データスクランブル回路と鍵スケジュール回路の一部を共通化することによって回路規模を削減することが可能である。また、本発明の構成によれば、特定の関数処理回路の処理データ単位を細分化することによって、SC2000アルゴリズムをコンパクトな回路で実現できる。
【0081】
PCT/JP01/05095において提案した暗号回路と比較して、その回路規模を1/3程度に削減することができる。また、全体処理に必要なサイクル数は約3倍となるものの、1サイクルあたりのディレイが1/2以下となり、動作周波数を2倍以上にすることが可能となるので、処理速度は75%〜80%程度の低減で抑えることができる。
【図面の簡単な説明】
【図1】本発明の概略構成を示すブロック図。
【図2】データスクランブル回路の構成を示すブロック図。
【図3】 R/2+I/4関数回路の構成を示すブロック図。
【図4】 B/4関数回路の構成を示すブロック図。
【図5】中間鍵生成時における鍵スケジュール回路の接続状態を示すブロック図。
【図6】拡大鍵生成時における鍵スケジュール回路の接続状態を示すブロック図。
【図7】鍵スケジュール回路のブロック図。
【図8】 B/2関数回路の構成を示すブロック図。

Claims (4)

  1. 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、
    I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対する2度のR関数処理と1度のI関数処理を4サイクルで実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対する1度のB関数処理を4サイクルで実行するB/4関数回路と、前記R/2+I/4関数回路の出力、前記R/2+I/4関数回路の出力ビットをクロスさせた出力および前記B/4関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたは前記データスクランブル回路内第1セレクタの出力を格納するとともに前記R/2+I/4関数回路およびB/4関数回路にデータを供給するレジスタ回路とを実装し、
    前記レジスタ回路とデータスクランブル回路内第1セレクタとの間に、R/2+I/4関数回路とB/4関数回路とが並列に接続され、データスクランブル回路内第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成し、
    前記R/2+I/4関数回路は、
    32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路と、
    前記M関数回路の出力と“0”とが入力されいずれか一方を出力するRI回路内第1セレクタと、
    前記RI回路内第1セレクタの出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力するRI回路内第1XOR回路と、
    前記RI回路内第1セレクタの出力と定数”0x55555555”,”0xAAAAAAAA”,”0x33333333”,”0xCCCCCCCC”のうちいずれかを論理積演算を行うRI回路内第1AND回路と、
    前記RI回路内第1AND回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力するRI回路内第2XOR回路と、
    入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力するRI回路内第3XOR回路と、
    入力データCを出力データDとして出力する経路と、
    を備えるデータスクランブル回路。
  2. 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路であって、
    I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対する2度のR関数処理と1度のI関数処理を4サイクルで実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対する1度のB関数処理をサイクルで実行するB/2関数回路と、前記R/2+I/4関数回路の出力、前記R/2+I/4関数回路の出力ビットをクロスさせた出力および前記B/2関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたは前記データスクランブル回路内第1セレクタの出力を格納するとともに前記R/2+I/4関数回路およびB/2関数回路にデータを供給するレジスタ回路とを実装し、
    前記レジスタ回路とデータスクランブル回路内第1セレクタとの間に、R/2+I/4関数回路とB/2関数回路とが並列に接続され、データスクランブル回路内第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成し、
    前記R/2+I/4関数回路は、
    32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路と、
    前記M関数回路の出力と“0”とが入力されいずれか一方を出力するRI回路内第1セレクタと、
    前記RI回路内第1セレクタの出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力するRI回路内第1XOR回路と、
    前記RI回路内第1セレクタの出力と定数”0x55555555”,”0xAAAAAAAA”,”0x33333333”,”0xCCCCCCCC”のうちいずれかを論理積演算を行うRI回路内第1AND回路と、
    前記RI回路内第1AND回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力するRI回路内第2XOR回路と、
    入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力するRI回路内第3XOR回路と、
    入力データCを出力データDとして出力する経路と、
    を備えるデータスクランブル回路。
  3. 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、
    前記暗号鍵に基づいて複数の中間鍵を生成し、前記中間鍵に基づいて拡大鍵を生成する鍵演算回路と、
    前記鍵演算回路で生成された複数の中間鍵を格納する中間鍵記憶回路と、
    前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して前記鍵演算回路に提供する中間鍵選択回路と、
    を備え、
    前記鍵演算回路は、32ビット×4の入力データ(k’0,k’1,k’2,k’3)と前記中間鍵選択回路の32ビット×4の出力データ(KEYX,KEYY,KEYZ,KEYW)とを入力とし、
    入力データ(k’0,k’2)のいずれか一方を出力する鍵演算回路内第1セレクタと、
    入力データ(k’1,k’3)のいずれか一方を出力する鍵演算回路内第2セレクタと、
    前記鍵演算回路内第2セレクタの出力、前記鍵演算回路内第2セレクタの出力を1ビット左シフトしたデータおよびデータ’0’のうちのいずれかを出力する鍵演算回路内第3セレクタと、
    前記鍵演算回路内第1セレクタの出力と中間鍵選択回路の出力(KEYX)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第4セレクタと、
    前記中間鍵選択回路の出力(KEYY)と定数M(I)(I=0〜11)とのうちいずれか一方を出力する鍵演算回路内第5セレクタと、
    前記鍵演算回路内第2セレクタの出力と前記中間鍵選択回路の出力(KEYZ)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第6セレクタと、
    前記鍵演算回路内第3セレクタの出力と前記中間鍵選択回路の出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する鍵演算回路内第7セレクタと、
    データ’0’とデータ’1’のうちのいずれか一方を出力する鍵演算回路内第8セレクタと、
    前記鍵演算回路内第4セレクタの出力と鍵演算回路内第5セレクタの出力とを加算する鍵演算回路内第1加算回路と、
    前記鍵演算回路内第8セレクタの出力を最下位ビットへのキャリとして前記鍵演算回路内第6セレクタの出力と鍵演算回路内第7セレクタの出力とを加算する鍵演算回路内第2加算回路と、
    前記鍵演算回路内第2加算回路の出力と鍵演算回路内第2加算回路の出力を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第9セレクタと、
    前記鍵演算回路内第1加算回路の出力と前記鍵演算回路内第9セレクタの出力との排他的論理和演算を行う鍵演算回路内第1XOR回路と、
    前記鍵演算回路内第1XOR回路の出力を格納する鍵演算回路内レジスタと、
    を備える鍵スケジュール回路。
  4. 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を、鍵長128ビット専用で実行する暗号回路であって、
    I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックを6回処理し、その後、B関数、I関数の順に処理を行うために、処理ブロック128ビットのデータに対する2度のR関数処理と1度のI関数処理を4サイクルで実行するR/2+I/4関数回路と、処理ブロック128ビットのデータに対する1度のB関数処理を4サイクルで実行するB/4関数回路と、前記R/2+I/4関数回路の出力、前記R/2+I/4関数回路の出力ビットをクロスさせた出力および前記B/4関数回路の出力が入力され、いずれか1つを選択的に出力するデータスクランブル回路内第1セレクタと、入力データまたは前記データスクランブル回路内第1セレクタの出力を格納するとともに前記R/2+I/4関数回路およびB/4関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、
    前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて複数の中間鍵を生成し、前記中間鍵に基づいて拡大鍵を生成する鍵演算回路と、前記鍵演算回路で生成された複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択して前記鍵演算回路に提供する中間鍵選択回路とを備える鍵スケジュール回路と、
    を含み、
    前記レジスタ回路とデータスクランブル回路内第1セレクタとの間に、R/2+I/4関数回路とB/4関数回路とが並列に接続され、データスクランブル回路内第1セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成し、
    前記R/2+I/4関数回路は、
    32ビット×4の入力データ(A,B,C,D)のうちデータDに対して非線形処理であるM関数処理を実行するM関数回路と、
    前記M関数回路の出力と“0”とが入力されいずれか一方を出力するRI回路内第1セレクタと、
    前記RI回路内第1セレクタの出力と入力データAとの排他的論理和演算を行ってその結果を出力データBとして出力するRI回路内第1XOR回路と、
    前記RI回路内第1セレクタの出力と定数”0x55555555”,”0xAAAAAAAA”,”0x33333333”,”0xCCCCCCCC”のうちいずれかを論理積演算を行うRI回路内第1AND回路と、
    前記RI回路内第1AND回路の出力と入力データBとの排他的論理和演算を行ってその結果を出力データAとして出力するRI回路内第2XOR回路と、
    入力データDと拡大鍵との排他的論理和演算を行ってその結果を出力Cとして出力するRI回路内第3XOR回路と、
    入力データCを出力データDとして出力する経路と、
    を備え、
    前記鍵演算回路は、32ビット×4の入力データ(k’0,k’1,k’2,k’3)と前記中間鍵選択回路の32ビット×4の出力データ(KEYX,KEYY,KEYZ,KEYW)とを入力とし、
    入力データ(k’0,k’2)のいずれか一方を出力する鍵演算回路内第1セレクタと、
    入力データ(k’1,k’3)のいずれか一方を出力する鍵演算回路内第2セレクタと、
    前記鍵演算回路内第2セレクタの出力、前記鍵演算回路内第2セレクタの出力を1ビット左シフトしたデータおよびデータ’0’のうちのいずれかを出力する鍵演算回路内第3セレクタと、
    前記鍵演算回路内第1セレクタの出力と中間鍵選択回路の出力(KEYX)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第4セレクタと、
    前記中間鍵選択回路の出力(KEYY)と定数M(I)(I=0〜11)とのうちいずれか一方を出力する鍵演算回路内第5セレクタと、
    前記鍵演算回路内第2セレクタの出力と前記中間鍵選択回路の出力(KEYZ)を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第6セレクタと、
    前記鍵演算回路内第3セレクタの出力と前記中間鍵選択回路の出力(KEYW)にINV処理を行ったデータとのうちいずれか一方を出力する鍵演算回路内第7セレクタと、
    データ’0’とデータ’1’のうちのいずれか一方を出力する鍵演算回路内第8セレクタと、
    前記鍵演算回路内第4セレクタの出力と鍵演算回路内第5セレクタの出力とを加算する鍵演算回路内第1加算回路と、
    前記鍵演算回路内第8セレクタの出力を最下位ビットへのキャリとして前記鍵演算回路内第6セレクタの出力と鍵演算回路内第7セレクタの出力とを加算する鍵演算回路内第2加算回路と、
    前記鍵演算回路内第2加算回路の出力と鍵演算回路内第2加算回路の出力を1ビット左ローテーションしたデータとのうちいずれか一方を出力する鍵演算回路内第9セレクタと、
    前記鍵演算回路内第1加算回路の出力と前記鍵演算回路内第9セレクタの出力との排他的論理和演算を行う鍵演算回路内第1XOR回路と、
    前記鍵演算回路内第1XOR回路の出力を格納する鍵演算回路内レジスタと、
    を備える暗号回路。
JP2002018538A 2002-01-28 2002-01-28 暗号回路 Expired - Fee Related JP4230152B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002018538A JP4230152B2 (ja) 2002-01-28 2002-01-28 暗号回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002018538A JP4230152B2 (ja) 2002-01-28 2002-01-28 暗号回路

Publications (2)

Publication Number Publication Date
JP2003216024A JP2003216024A (ja) 2003-07-30
JP4230152B2 true JP4230152B2 (ja) 2009-02-25

Family

ID=27653856

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002018538A Expired - Fee Related JP4230152B2 (ja) 2002-01-28 2002-01-28 暗号回路

Country Status (1)

Country Link
JP (1) JP4230152B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050087271A (ko) * 2004-02-26 2005-08-31 삼성전자주식회사 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
JP5042272B2 (ja) * 2009-05-15 2012-10-03 日本電信電話株式会社 暗号用拡大鍵生成回路、復号用拡大鍵生成回路、暗号用拡大鍵生成方法および復号用拡大鍵生成方法

Also Published As

Publication number Publication date
JP2003216024A (ja) 2003-07-30

Similar Documents

Publication Publication Date Title
JP3851115B2 (ja) 暗号回路
EP1507247B1 (en) Data conversion apparatus and data conversion method
US8411853B2 (en) Alternate galois field advanced encryption standard round
Gutub et al. Hybrid crypto hardware utilizing symmetric-key and public-key cryptosystems
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
AU4105801A (en) Block encryption device using auxiliary conversion
JP4025722B2 (ja) データ暗号化のための方法および装置
JP2005242366A (ja) 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ
JP2002032018A (ja) データ暗号化標準アルゴリズムを利用した暗号化装置
KR20010111784A (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
JP2005513541A (ja) Aesアルゴリズム用のプログラマブルデータ暗号化エンジン
JP4230152B2 (ja) 暗号回路
JP2014240921A (ja) 暗号装置、暗号処理方法及び暗号処理プログラム
JP4117157B2 (ja) 暗号回路
JP3547474B2 (ja) 暗号演算回路
JP4857230B2 (ja) 疑似乱数生成装置及びそれを用いた暗号化処理装置
JPH05249891A (ja) 暗号処理装置およびこれを用いる暗号処理方法
JP4150886B2 (ja) 暗号化復号化演算装置およびデータ受信装置
JP4745598B2 (ja) 暗号回路
KR100546777B1 (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
KR100316025B1 (ko) 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치
KR102393958B1 (ko) 암호화 알고리즘이 적용된 시스템에서의 데이터 처리 방법
WO2002058037A1 (en) Cipher circuit
KR20030087893A (ko) 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070424

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080321

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080926

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080929

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080930

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4230152

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131212

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees