JP2003015522A - 暗号回路 - Google Patents
暗号回路Info
- Publication number
- JP2003015522A JP2003015522A JP2001195752A JP2001195752A JP2003015522A JP 2003015522 A JP2003015522 A JP 2003015522A JP 2001195752 A JP2001195752 A JP 2001195752A JP 2001195752 A JP2001195752 A JP 2001195752A JP 2003015522 A JP2003015522 A JP 2003015522A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- output
- selector
- key
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
を小型化するとともに一定水準の高速処理が実現可能な
暗号回路を提供する。 【解決手段】 Round処理部が、Round Keyの値を入力デ
ータに加算する第1Round Key加算回路と、第1Round K
ey加算回路の出力を一時的に格納するとともにShift Ro
w変換を実行する中間レジスタ兼Shift Row変換回路と、
中間レジスタ兼Shift Row変換回路の値が入力されByte
Sub変換を実行するByte Sub変換回路と、中間レジスタ
兼Shift Row変換回路の値が入力されRound Keyの値を加
算する第2Round Key加算回路と、第2Round Key加算回
路の出力に対してMix Column変換を実行するMix Column
変換回路と、第1セレクタ、中間レジスタ兼Shift Row
変換回路、Byte Sub変換回路、Mix Column変換回路の出
力のうちいずれか1つを第2Round Key加算回路に出力
する第2セレクタとを備える。
Description
現在の米国標準であるDESに代わり、次世代の共通鍵ブ
ロック暗号AES(Advanced Encryption Standard)とし
て標準化されつつあるRijndaelアルゴリズムをハードウ
ェア実装するための暗号回路に関する。
ットを用いた様々なサービスが検討されている。これら
の技術は、個人の生活にとどまらず、会社間の取引や生
産性の向上等様々な分野で広く用いられていく技術であ
る。特に、今後は、個人認証を目的として、スマートカ
ードやモバイル機に暗号機能が搭載され、認証、電子署
名、及びデータの暗号化等に広く使われると予想され
る。
の第三者からの盗聴を防ぐ意味で共通鍵暗号が用いられ
る。共通鍵暗号は、現在の米国標準であるDESに代わる
次世代の共通鍵ブロック暗号AES(Advanced Encryptio
n Standard)として、Rijndaelと呼ばれる暗号アルゴ
リズムが選定され、標準化されようとしている(AESド
ラフト http://csrc.nist.gov/publications/drafts/d
fips-AES.pdf参照)。
暗号であり、その暗号化アルゴリズムは、図1に示すよ
うに、ラウンドファンクション部20と鍵スケジュール
部10で構成される暗号回路により実現可能であると考
えられる。ラウンドファンクション部20は、入力デー
タを一時格納する入力レジスタ21と、入力データと拡
大鍵との排他的論理和演算を行うEXOR処理部22とRoun
d処理部23、最終Round処理部24および出力データを
一時格納する出力レジスタ25からなる。
1、Shift Row変換部32、Mix Column変換部33およ
びRound Key加算部34からなり、最終Round処理部24
はRound処理部23からMix Column変換部33を除いた
処理を行うもので、Byte Sub変換部35、 Shift Row変
換部36およびRound Key加算部37から構成される。
nd処理を含むRound処理の繰り返し回数Nrは、鍵スケジ
ュール部10に入力される鍵長により決められており、
表1に示すように規定されている。
und処理の回数をNr-1回行い、最後に最終Round処理を行
うものであり、鍵長が128bitではRound処理が9回繰り返
され、鍵長が192bitでは11回繰り返され、鍵長が256bit
では13回繰り返され、最後に最終Round処理を行うこと
となる。EXOR回路22、Round処理部23および最終Rou
nd処理部24には、鍵スケジュール部10で生成された
Round Keyが入力される。
示される鍵生成スケジュールに基づいてRound Keyを生
成するものであり、そのアルゴリズムを図2に示す。AE
Sブロック暗号の回路化にあたり、AES Proposal仕様(R
ijndael Specification,http://csrc.nist.gov/encryp
tion/aes/rijndael/Rijndael.pdf)に2つのハードウェ
ア実装が紹介されている。
をそのまま128bit単位でハードウェア化する方法(以
下、従来例1と称す)である。この場合、暗号化と復号
化において、各機能の処理の順番が逆となり、暗号化に
おける処理回路と復号化時における処理回路を別々に用
意する必要がある。
処理の実施回数を変える必要があるため、鍵長毎に回路
を作成する必要がある。さらに、ラウンドファンクショ
ン部20で使用されるRound Keyは、暗号化時と復号化
時において逆順になるため、鍵スケジュール部10にお
いて鍵生成の順を暗号化時と復号化時とで逆にする必要
がある。したがって、暗号化時と復号化時における鍵ス
ケジュール回路を別々に構成するか、暗号化時と復号化
時において鍵スケジュール部10を共通に使用できるよ
うな工夫をする必要がある。
Sub変換部51とMix Column変換部52を有するコプロ
セッサ50を作成してByte Sub変換とMix Column変換の
機能のみをハードウェア化し、その他の機能をプログラ
ム41に組み込んでソフトウェア化しCPU40で処理
する方法(以下、従来例2と称す)である。
理に不向きなByte Sub変換とMix Column変換をコプロセ
ッサ50としてハードウェア化し、他の処理をCPU4
0に格納されたプログラム41で処理することで回路規
模を小さくすることができる。
Sブロック暗号を組込むことを想定した場合、暗号回路
に要求される性能は、一定水準の処理速度を保ちつつ、
回路規模の小型化にある。 この要求を前提とした場
合、従来提案されている全ての機能を128bit単位でハー
ドウェア化する方法では回路規模が大きすぎ、スマート
カードへの搭載が困難となる。また、Byte Sub変換とMi
x Column変換の機能のみをハードウェア化し、他機能を
ソフトウェアで処理する方法では、要求処理速度を満足
しないといった問題がある。
ル部10では、メモリにすべてのRound Keyを格納する
と大きなメモリ容量が必要となり、回路規模が大きくな
る。したがって、処理速度を低下させずに回路規模の削
減を行うために、メモリにすべての拡大鍵を格納する必
要がないような回路構成でRound Keyの生成を行うこと
が望まれる。
際に、回路規模を小型化するとともに一定水準の高速処
理が実現可能な暗号回路の提供を目的とする。
は、暗号鍵から所定の処理ブロック長に対応するビット
数の複数のRound Keyを生成し、入力データとRound Key
のうちの1つとEXOR演算を実行するEXOR演算部と、Byte
Sub変換、Shift Row変換、Mix Column変換、Round Key
加算を含むRound処理を複数回実行するRound処理部とを
備えるラウンドファンクション部により入力データとRo
und Keyによる暗号化/復号化処理を処理ブロック長毎
に実行する暗号回路であって、Round処理部が、入力デ
ータを処理ブロック長よりも小さい実行ブロック長に分
割する第1セレクタと、実行ブロック長毎にRound Key
の値を入力データに加算する第1Round Key加算回路
と、第1Round Key加算回路の出力を一時的に格納する
とともに処理ブロック長によるShift Row変換を実行す
る中間レジスタ兼Shift Row変換回路と、中間レジスタ
兼Shift Row変換回路の値が実行ブロック長毎に入力さ
れByte Sub変換を実行するByteSub変換回路と、中間レ
ジスタ兼Shift Row変換回路の値が実行ブロック長毎に
入力されRound Keyの値を実行ブロック長毎に加算する
第2Round Key加算回路と、第2Round Key加算回路の出
力に対してMix Column変換を実行するMix Column変換回
路と、第1セレクタ、中間レジスタ兼Shift Row変換回
路、Byte Sub変換回路、Mix Column変換回路の出力のう
ちいずれか1つを第2Round Key加算回路に出力する第
2セレクタとを備える。
とすることができ、処理ブロック長が128ビットであ
り実行ブロック長が32ビットとすることができる。さ
らに、暗号鍵の鍵長が128ビット、192ビット、2
56ビットのうちのいずれかとすることができる。
対して行列演算を実行する復号化用行列演算部と、入力
データと復号化用行列演算部の出力とのうちいずれかを
出力する第3セレクタと、第3セレクタから出力される
データに対して逆数演算を実行する逆数演算部と、逆数
演算部から出力されるデータに対して行列演算を実行す
る暗号化用行列演算部と、逆数演算部の出力と暗号化用
行列演算部の出力のうちいずれか一方を出力する第4セ
レクタとを備える構成とすることができる。
演算部は、1クロックで8ビット毎の演算を行うように
複数の排他的論理和演算回路を備えている構成とするこ
とができ、1クロックで1ビットの演算を行うように排
他的論理和演算回路を備える構成とすることができる。
に入力されるデータのシフト量に関するシフトデータを
暗号化時と復号化時において逆順に入力することによ
り、中間レジスタ兼Shift Row変換回路を暗号化と復号
化に共通に使用することができる。
の複数の乗算器と複数の乗算器の排他的論理和を演算す
るEXOR回路とを備え、各乗算器に入力されるデータと各
乗算器に設定された乗数との間で行列演算を実行するよ
うに構成できる。この場合、Mix Column変換回路は、8
ビット単位で演算が可能な4つの乗算器と4つの乗算器
の出力に基づいて排他的論理和演算を実行するEXOR回路
とを有する演算器を4つ備える構成とすることができ
る。この乗算器は、2つの乗数を制御可能であり暗号化
と復号化に共通に使用されるように構成でき、上位ビッ
トからの加算値を制御するように構成することもでき
る。
ット数に分割して出力する第5セレクタと、実行ブロッ
ク長毎にデータをラッチするフリップフロップ回路が複
数段接続されたシフトレジスタと、シフトレジスタの最
終段のフリップフロップ回路の出力と定数群のうちから
選択される1つの定数との排他的論理和演算を実行する
第1EXOR回路と、シフトレジスタのフリップフロップの
うち暗号化時に演算対象となるフリップフロップの出力
と復号化時に演算対象となるフリップフロップの出力と
が入力されいずれか1つを選択的に出力する第6セレク
タと、第6セレクタの出力をローテーション処理するRo
t Byte処理回路と、第6セレクタの出力とRot Byte処理
回路の出力とが入力され、いずれか1つを選択的に出力
する第7セレクタと、第7セレクタの出力に対して実行
ブロック長毎のByte Sub変換を実行するSub Byte処理回
路と、第6セレクタの出力とSub Byte処理回路の出力が
入力され、いずれか1つを選択的に出力する第8セレク
タと、第1EXOR回路の出力と第8セレクタの出力とに基
づいて排他的論理和演算を実行する第2EXOR回路と、シ
フトレジスタのフリップフロップのうち暗号化時にその
出力が演算対象となるフリップフロップに対して、第2
EXOR回路の出力と、隣接する段のフリップフロップの出
力とのうちいずれかを選択的に出力するシフトレジスタ
部セレクタとを備える、暗号鍵から所定の処理ブロック
長に対応するビット数の複数のRoundKeyを実行ブロック
長に対応するビット数毎に分割された拡大鍵として生成
する拡大鍵スケジュール回路を有するように構成でき
る。
位でデータ処理を実行する8個のフリップフロップ回路
を備え、第6セレクタは、フリップフロップのうち下か
ら2段目、4段目、6段目、8段目のフリップフロップ
の出力が入力され、いずれか1つを出力するように構成
できる。
t Row変換回路の出力が入力され、Sub Byte処理回路の
出力を第2セレクタに入力することにより、Sub Byte処
理回路とRound処理部のByte Sub変換回路とを共用する
ように構成できる。
Sブロック暗号は、鍵長128/192/256ビッ
ト、処理ブロック長128ビットで暗号化/復号化を行
うものであり、図1に示すように、暗号鍵から複数のRo
und Keyを生成する鍵スケジュール部10と、鍵スケジ
ュール部10から供給されるRound Keyを用いて暗号化
/復号化を実行するラウンドファンクション部20で構
成される。ラウンドファンクション部20では、排他的
論理和演算、Byte Sub変換処理、Shift Row変換処理、M
ix Column変換処理、Round Key加算処理などの処理を行
う。
ョン部20を実現するための回路を構成するものであ
り、図4にその回路構成を示す。各回路ブロックではSh
ift Row変換処理を除いて32ビットによる処理を実行
し、Shift Row変換処理では128ビットによる処理を
実行するものとし、各回路ブロック間のデータの転送は
32ビット単位で実施されるものとする。
データを一時格納する入力レジスタ201と、128ビ
ットの入力データから32ビットのデータを選択する第
1セレクタ202と、第1セレクタ202の出力が1つ
の入力端子に入力される第2セレクタ203と、第2セ
レクタ203の出力が入力される第1Round Key加算回
路204と、第1Round Key加算回路204に拡大鍵ま
たは"0"を加算データとして入力する加算データセレク
タ205と、第1Round Key加算回路204の出力値を
格納するとともに128ビット単位でShift Row変換処
理を実行する中間レジスタ兼Shift Row変換回路206
と、中間レジスタ兼Shift Row変換回路206の値が3
2ビット毎に入力されByte Sub変換を実行するByte Sub
変換回路207と、中間レジスタ兼Shift Row変換回路
206の値が32ビット毎に入力される第2Round Key
加算回路208と、第2Round Key加算回路208に拡
大鍵または"0"を加算データとして入力する加算データ
セレクタ209と、第2Round Key加算回路208の出
力に対してMix Column変換を実行するMix Column変換回
路210とを備えている。第2セレクタ203には、第
1セレクタ202、Byte Sub変換回路207、Mix Colu
mn変換回路210および中間レジスタ兼Shift Row変換
回路206の出力が入力されており、このうちいずれか
1つを第2Round Key加算回路204に出力するように
構成される。 〈暗号化時の動作スケジュール〉このラウンドファンク
ション部における暗号化時における動作スケジュールを
表2に示す。
3のセレクタ位置をaとして第1Round Key加算回路2
04により拡大鍵の加算処理を実行する。第1セレクタ
202により入力レジスタ201内の入力データを32
ビット毎に選択して第1RoundKey加算回路204に入力
し、鍵スケジュール部から入力されるRound Keyのうち
32ビット毎に分割された拡大鍵の加算処理を実行す
る。入力データおよび拡大鍵を32ビット毎に変更しな
がら、第1Round Key加算回路204による加算処理を
実行することで、第000サイクル〜第003サイクルの4サ
イクルで128ビットの処理ブロックに対し、図1にお
けるEXOR処理部22の排他的論理和演算処理を実行する
ことができる。第1Round Key加算回路204による演
算結果は、32ビット毎に中間レジスタ兼Shift Row変
換回路206に順次格納される。
を実行するものであり、Byte Sub変換処理31、Shift
Row変換処理32、Mix Column変換処理33、Round Key
加算処理34を実行する。このために、まず、第004サ
イクル〜第007サイクルで、第2セレクタ203のセレ
クタ位置をbとし、中間レジスタ兼Shift Row変換回路
206に格納されているデータを32ビットずつシフト
させながら読み出してByte Sub変換回路207に入力す
る。このとき、加算データセレクタ205により選択さ
れるデータを"0"とすることで、第1Round Key加算回路
204をマスク状態とする。Byte Sub変換回路207に
よる演算結果は、32ビット毎に中間レジスタ兼Shift
Row変換回路206に順次格納される。このことによ
り、128ビットのByte Sub変換処理が行われ、演算結
果が中間レジスタ兼Shift Row変換回路206に格納さ
れることとなる。
変換処理を実行する。中間レジスタ兼Shift Row変換回
路206では、128ビット単位でShift Row変換処理
を行うことが可能となっており、この第008サイクルに
おいて、128ビットのShift Row変換処理を実行す
る。このとき、第2セレクタ203のセレクタ位置はい
ずれの位置であってもよいが、次のサイクルでの処理を
考慮してcの位置とすることが好ましい。
Column変換処理およびRound Key加算処理を実行する。
ここでは、中間レジスタ兼Shift Row変換回路206に
格納されているデータを32ビットずつシフトさせなが
ら読み出して第2Round Key加算回路208に入力す
る。このとき、加算データセレクタ209により選択さ
れるデータを"0"とすることで、第2Round Key加算回路
208をマスク状態とする。また、第2セレクタ203
のセレクタ位置をcとすることにより、Mix Column変換
回路210でMix Column変換処理が実行されたデータが
第2セレクタ203を介して第1Round Key加算回路2
04に入力される。加算データセレクタ205により選
択されるデータは、鍵スケジュール部から入力される拡
大鍵が選択されており、第1Round Key加算回路204
においてRound Key加算処理が実行される。Mix Column
変換回路210でMix Column変換処理され、第1Round
Key加算回路204においてRound Key加算処理された演
算結果は、32ビット毎に中間レジスタ兼Shift Row変
換回路206にそれぞれシフトされながら格納される。
このことにより、第009サイクル〜第012サイクルで、Mi
x Column変換処理およびRound Key加算処理を実行した
128ビットの演算結果が中間レジスタ兼ShiftRow変換
回路206に格納される。このようにして、第004サイ
クル〜第012サイクルの9サイクルで1つのRound処理が
実行される。
いて、第1Roundと同様の処理を実行する(ただし、Nr
は最終Round処理を含むRound処理の繰り返し回数であ
り、表1に示すように、鍵長により異なる回数が規定さ
れている)。
おける最終Round処理24を実行するものであり、Byte
Sub変換処理35、Shift Row変換処理36、Round Key
加算処理37を実行する。
第(Nr*9−2)サイクルにおいて、第2セレクタ20
3のセレクタ位置をbとし、中間レジスタ兼Shift Row
変換回路206に格納されているデータを32ビットず
つシフトさせながら読み出してByte Sub変換回路207
に入力する。このとき、加算データセレクタ205によ
り選択されるデータを"0"とすることで、第1Round Key
加算回路204をマスク状態とする。Byte Sub変換回路
207による演算結果は、32ビット毎に中間レジスタ
兼Shift Row変換回路206に順次格納される。このこ
とにより、128ビットのByte Sub変換処理が行われ、
演算結果が中間レジスタ兼Shift Row変換回路206に
格納されることとなる。
て、128ビットのShift Row変換処理を実行する。こ
のとき、第2セレクタ203のセレクタ位置はいずれの
位置であってもよいが、次のサイクルでの処理を考慮し
てdの位置とすることが好ましい。
サイクルでは、Round Key加算処理を実行する。ここで
は、第2セレクタ204のセレクタ位置をdとすること
で、中間レジスタ兼Shift Row変換回路206に格納さ
れているデータを32ビットずつシフトさせながら読み
出して第2セレクタ203を介して第1Round Key加算
回路204に入力する。このとき、加算データセレクタ
205により選択されるデータを鍵スケジュール部から
供給される拡大鍵とすることで、第1Round Key加算回
路204による32ビット毎のRound Key加算処理を実
行することができる。第1Round Key加算回路204に
おいてRound Key加算処理された演算結果は、32ビッ
ト毎に中間レジスタ兼Shift Row変換回路206にそれ
ぞれシフトされながら格納される。このことにより、第
(Nr*9)サイクル〜第(Nr*9+3)サイクルで、Ro
und Key加算処理を実行した128ビットの演算結果が
中間レジスタ兼Shift Row変換回路206に格納され
る。このようにして、第(Nr*9−5)サイクル〜第
(Nr*9+3)サイクルの9サイクルで最終Round処理
が実行される。 〈復号化時の動作スケジュール〉このラウンドファンク
ション部における復号化時の動作は暗号化時の逆順で処
理が実行される。このときの動作スケジュールを表3に
示す。
3のセレクタ位置をaとして第1Round Key加算回路2
04により拡大鍵の加算処理を実行する。第1セレクタ
202により入力レジスタ201内の入力データを32
ビット毎に選択して第1RoundKey加算回路204に入力
し、鍵スケジュール部から入力されるRound Keyのうち
32ビット毎に分割された拡大鍵の加算処理を実行す
る。このとき、第1セレクタ202を介して入力される
データは暗号化時の入力順と逆に入力され、かつ鍵スケ
ジュール部から入力される拡大鍵の入力順も暗号化時の
逆に入力することとする。このように、入力データおよ
び拡大鍵を32ビット毎に変更しながら、第1Round Ke
y加算回路204による加算処理を実行することで、第0
00サイクル〜第003サイクルの4サイクルで128ビッ
トの処理ブロックに対するRound Key加算処理を実行す
ることができる。第1Round Key加算回路204による
演算結果は、32ビット毎に中間レジスタ兼Shift Row
変換回路206に順次格納される。
換、Round Key加算、Mix Column変換の順に処理を実行
する。このために、まず、第004サイクルにおいて、中
間レジスタ兼Shift Row変換回路206において、12
8ビット単位でShift Row変換処理を実行する。この場
合、暗号化時におけるShift Row変換処理と同じ処理が
行われる。また、第2セレクタ203のセレクタ位置は
いずれの位置であってもよいが、次のサイクルでの処理
を考慮してbの位置とすることが好ましい。
第2セレクタ203のセレクタ位置をbとし、中間レジ
スタ兼Shift Row変換回路206に格納されているデー
タを32ビットずつシフトさせながら読み出してByte S
ub変換回路207に入力する。このとき、加算データセ
レクタ205により選択されるデータを"0"とすること
で、第1Round Key加算回路204をマスク状態とす
る。Byte Sub変換回路207による演算結果は、32ビ
ット毎に中間レジスタ兼Shift Row変換回路206に順
次格納される。この場合も、暗号化時の逆変換処理とな
るようにByte Sub変換処理を実行するものであり、詳細
は後述する。このことにより、128ビットのByte Sub
変換処理が行われ、演算結果が中間レジスタ兼Shift Ro
w変換回路206に格納されることとなる。
d Key加算処理およびMix Column変換処理を実行する。
ここでは、中間レジスタ兼Shift Row変換回路206に
格納されているデータを32ビットずつシフトさせなが
ら読み出して第2Round Key加算回路208に入力す
る。このとき、加算データセレクタ209により選択さ
れるデータを鍵スケジュール部から入力される拡大鍵と
する。また、第2セレクタ203のセレクタ位置をcと
して、Mix Column変換回路210の出力を第2セレクタ
203を介して第1Round Key加算回路204に入力す
る。このとき、加算データセレクタ205により選択さ
れるデータを"0"とすることにより、第1Round Key加算
回路204をマスク状態とする。この場合も、暗号化時
と逆変換処理となるようにMix Column変換処理を実行す
るものであり、詳細は後述する。このことにより、第2
Round Key加算回路208によるRound Key加算処理とMi
x Column変換回路210によるMix Column変換処理を実
行した128ビットの演算結果が中間レジスタ兼Shift
Row変換回路206に格納される。このようにして、第0
04サイクル〜第012サイクルの9サイクルで1つのRound
処理が実行される。
いて、第1Roundと同様の処理を実行する(ただし、Nr
は最終Round処理を含むRound処理の繰り返し回数であ
り、表1に示すように、鍵長により異なる回数が規定さ
れている)。
Row変換処理、Byte Sub変換処理、Round Key加算処理を
実行する。このために、第(Nr*9−5)サイクルにお
いて、128ビットのShift Row変換処理を実行する。
このとき、第2セレクタ203のセレクタ位置はいずれ
の位置であってもよいが、次のサイクルでの処理を考慮
してbの位置とすることが好ましい。
*9−1)サイクルにおいて、第2セレクタ203のセ
レクタ位置をbとし、中間レジスタ兼Shift Row変換回
路206に格納されているデータを32ビットずつシフ
トさせながら読み出してByteSub変換回路207に入力
する。このとき、加算データセレクタ205により選択
されるデータを"0"とすることで、第1Round Key加算回
路204をマスク状態とする。Byte Sub変換回路207
による演算結果は、32ビット毎に中間レジスタ兼Shif
t Row変換回路206に順次格納される。このことによ
り、128ビットのByte Sub変換処理が行われ、演算結
果が中間レジスタ兼Shift Row変換回路206に格納さ
れることとなる。
サイクルでは、Round Key加算処理を実行する。ここで
は、第2セレクタ204のセレクタ位置をdとすること
で、中間レジスタ兼Shift Row変換回路206に格納さ
れているデータを32ビットずつシフトさせながら読み
出して第2セレクタ203を介して第1Round Key加算
回路204に入力する。このとき、加算データセレクタ
205により選択されるデータを鍵スケジュール部から
供給される拡大鍵とすることで、第1Round Key加算回
路204による32ビット毎のRound Key加算処理を実
行することができる。第1Round Key加算回路204に
おいてRound Key加算処理された演算結果は、32ビッ
ト毎に中間レジスタ兼Shift Row変換回路206にそれ
ぞれシフトされながら格納される。このことにより、第
(Nr*9)サイクル〜第(Nr*9+3)サイクルで、Ro
und Key加算処理を実行した128ビットの演算結果が
中間レジスタ兼Shift Row変換回路206に格納され
る。このようにして、第(Nr*9−5)サイクル〜第
(Nr*9+3)サイクルの9サイクルで最終Round処理
が実行される。 〈中間値レジスタ兼Shift Row変換回路〉中間値レジス
タ兼Shift Row変換回路の1実施例を図5に示す。
トレジスタを4個設けた構成となっている。1番目のシ
フトレジスタは、4つのフリップフロップ302,30
4,306,308が順次接続される構成でなり、各フ
リップフロップ302,304,306,308にはそ
れぞれ入力を選択するセレクタ301,303,30
5,307が接続されている。1番目のセレクタ301
には、入力データIN0とフリップフロップ302の出力
とが入力されておりいずれか一方をフリップフロップ3
02に入力するように構成されている。また、2〜4番
目のセレクタ303,305,307にはそれぞれ前段
のフリップフロップ302,304,306の出力およ
びフリップフロップ304,306,308の出力とが
入力されておりいずれか一方をフリップフロップ30
4,306,308に入力するように構成されている。
プフロップ312,314,316,318が順次接続
される構成でなり、各フリップフロップ312,31
4,316,318にはそれぞれ入力を選択するセレク
タ311,313,315,317が接続されている。
1番目のセレクタ311には、入力データIN1とフリッ
プフロップ312の出力およびフリップフロップ318
の出力が入力されておりいずれか一方をフリップフロッ
プ312に入力するように構成されている。また、2〜
4番目のセレクタ313,315,317にはそれぞれ
前段のフリップフロップ312,314,316の出力
およびフリップフロップ314,316,318の出力
とが入力されておりいずれか一方をフリップフロップ3
14,316,318に入力するように構成されてい
る。
プフロップ322,324,326,328が順次接続
される構成でなり、各フリップフロップ322,32
4,326,328にはそれぞれ入力を選択するセレク
タ321,323,325,327が接続されている。
1番目のセレクタ321には、入力データIN2とフリッ
プフロップ322の出力およびフリップフロップ326
の出力が入力されておりいずれか一方をフリップフロッ
プ322に入力するように構成されている。また、2番
目のセレクタ323には前段のフリップフロップ322
の出力、フリップフロップ324の出力およびフリップ
フロップ328の出力が入力されておりいずれか一方を
フリップフロップ324に入力するように構成されてい
る。3番目のセレクタ325には前段のフリップフロッ
プ324の出力、フリップフロップ326の出力および
フリップフロップ322の出力が入力されておりいずれ
か一方をフリップフロップ326に入力するように構成
されている。4番目のセレクタ327には前段のフリッ
プフロップ326の出力、フリップフロップ328の出
力およびフリップフロップ324の出力が入力されてお
りいずれか一方をフリップフロップ328に入力するよ
うに構成されている。
プフロップ332,334,336,338が順次接続
される構成でなり、各フリップフロップ332,33
4,336,338にはそれぞれ入力を選択するセレク
タ331,333,335,337が接続されている。
1番目のセレクタ331には、入力データIN3とフリッ
プフロップ332の出力およびフリップフロップ334
の出力が入力されておりいずれか一方をフリップフロッ
プ332に入力するように構成されている。また、2番
目のセレクタ333には前段のフリップフロップ332
の出力、フリップフロップ334の出力およびフリップ
フロップ336の出力が入力されておりいずれか一方を
フリップフロップ334に入力するように構成されてい
る。3番目のセレクタ335には前段のフリップフロッ
プ334の出力、フリップフロップ336の出力および
フリップフロップ338の出力が入力されておりいずれ
か一方をフリップフロップ336に入力するように構成
されている。4番目のセレクタ337には前段のフリッ
プフロップ336の出力、フリップフロップ338の出
力およびフリップフロップ332の出力が入力されてお
りいずれか一方をフリップフロップ338に入力するよ
うに構成されている。
t Row変換回路を、各処理における中間値レジスタとし
て動作させる場合には、入力データIN0〜IN3に各8ビッ
ト単位のデータを入力することで、各サイクルにおいて
32ビット単位で処理されたデータを格納することがで
きる。さらに、各セレクタ301〜337のセレクタ位
置をbにして、各フリップフロップのデータを後段にシ
フトさせつつ、入力データIN0〜IN3にそれぞれ8ビット
毎のデータを入力することで、4サイクルで128ビッ
トのデータを入力することができる。128ビットのデ
ータ入力が完了した場合、1サイクル目に入力された4
つの8ビットデータは、それぞれフリップフロップ30
8,318,328,338にラッチされていることと
なる。
る。Rijndaelアルゴリズムでは、入力データをそれぞれ
8bitのデータa00〜a33に分割しこれをマトリクスとし
て処理を行い、暗号化と復号化でシフトの向きが逆にな
っている。本発明では、データの処理順をColumn(列)
配列順とし、暗号化時と復号化時において逆順に処理す
ることにより、同じ処理でShift Row変換処理を実現す
ることができる。
るデータが左端のColumnから順に配列されているような
場合には、暗号化時には、左端のColumnから順に処理が
実行される。また、復号化時には、表4右に示すよう
に、右端のColumnから順に処理が実行される。
表4左に示されているような配列のデータ配列をRow毎
に異なるシフト量でローテートシフトする。具体的に
は、表5に示すように、1行目をそのままとし、2行目
を左1Byteローテートシフト、3行目を左2Byteローテ
ートシフト、4行目を左3Byteローテートシフトする。
このことにより、表5左に示す処理前の状態から表5右
の処理後の状態となる。
理となるように、表4左に示されているような配列のデ
ータ配列からRow毎に異なるシフト量でローテートシフ
トする。具体的には、表6に示すように、1行目をその
ままとし、2行目を左3Byteローテートシフト、3行目
を左2Byteローテートシフト、4行目を左1Byteローテ
ートシフトする。このことにより、表6左に示す処理前
の状態から表6右の処理後の状態となる。
レジスタ兼Shift Row変換回路を用いている。このこと
から、128ビットのデータの入力が完了した段階で、
最初のサイクルで入力されたデータが最後段のフリップ
フロップ308,318,328,338にラッチされ
ており、前段のフリップフロップに順にデータがラッチ
されている。データを取り出す場合には、1サイクル毎
に右側に1Byteずつシフトしながら右端に位置する最後
段のフリップフロップからデータが取り出されることと
なる。したがって、データの処理順が右端側からである
ことを考慮してデータを配列し直すと、暗号化時のShif
t Row処理前は表7の左のような形態となる。
には、表7の右に示すように、1行目をそのままとし、
2行目を右1Byteローテートシフト、3行目を右2Byte
ローテートシフト、4行目を右3Byteローテートシフト
することとなる。
換処理を行うためには、図5に示す中間値レジスタ兼Sh
ift Row変換回路を用いて各セレクタを切換制御し、1
28ビット単位で一括してデータの入れ換えを行う。
ないため、各セレクタ301,303,305,307
のセレクタ位置をaとする。2番目のRowについては、
右1Byteローテートシフトを実行するために、セレクタ
311のセレクタ位置をcとし、それ以外のセレクタ3
13,315,317のセレクタ位置をbとする。3番
目のRowについては、右2Byteローテートシフトを実行
するために、各セレクタ321,323,325,32
7のセレクタ位置をcとする。4番目のRowについて
は、右に3byteローテートシフトを実行するために、各
セレクタ331,333,335,337のセレクタ位
置をcとする。
する前における中間値レジスタ兼Shift Row変換回路の
各フリップフロップがラッチしている出力データを図5
に示すようにそれぞれb00〜b33とすると、各出力データ
は表8の右に示すような配列で各フリップフロップの出
力にラッチされることとなる。
処理が実行されるため、表9左に示すように、データが
配列される。
には、表9の右に示すように、1行目をそのままとし、
2行目を右1Byteローテートシフト、3行目を右2Byte
ローテートシフト、4行目を右3Byteローテートシフト
することとなる。
ift Row変換時と同様に、中間値レジスタ兼Shift Row変
換回路の各セレクタのセレクタ位置を設定して、表8に
示すような暗号化時におけるローテートシフト処理と全
く同じ処理を実行することにより、復号化時におけるSh
ift Row変換処理を実行することが可能となる。
Shift Row変換回路で暗号化時および復号化時におけるS
hift Row変換処理を共用することができる。 〈Mix Column変換回路〉この実施形態で採用されるMix
Column変換回路の一例を図6に示す。
器351,第2演算器352,第3演算器353,第4
演算器354を含んでいる。第1演算器351は、それ
ぞれ8ビット単位で演算処理を実行する第1乗算器36
1,第2乗算器362,第3乗算器363,第4乗算器
364と、各乗算器361〜364の出力の排他的論理
和演算を実行するEXOR回路365とで構成されている。
その他の第2演算器352〜第4演算器354について
も、図示していないが、第1乗算器〜第4乗算器の4つ
の乗算器とEXOR回路が設けられている。
目のColumnを(b0j,b1j,b2j,b3j)で構成されるColumn
に変換処理を行うものとした場合、変換処理後の第j番
目のColumnのデータ(b0j,b1j,b2j,b3j)は、次のよう
に表すことができる。 暗号化 b0j = 02*a0j + 03*a1j + 01*a2j + 01*a3j b1j = 01*a0j + 02*a1j + 03*a2j + 01*a3j b2j = 01*a0j + 01*a1j + 02*a2j + 03*a3j b3j = 03*a0j + 01*a1j + 01*a2j + 02*a3j 復号化 b0j = 0E*a0j + 0B*a1j + 0D*a2j + 09*a3j b1j = 09*a0j + 0E*a1j + 0B*a2j + 0D*a3j b2j = 0D*a0j + 09*a1j + 0E*a2j + 0B*a3j b3j = 0B*a0j + 0D*a1j + 09*a2j + 0E*a3j ここで、各項に乗算されている係数はそれぞれ2桁の1
6進数である。
ために、Column単位の32ビットデータをそれぞれ第1
演算器351〜第4演算器354に入力して、第1乗算
器〜第4乗算器による乗算およびEXOR回路による演算を
行う。
器361〜364は、暗号化および復号のいずれの場合
にも共通に使用することができるように、暗号化時の係
数および復号化時の係数を備えており、演算時に選択す
ることが可能に構成されている。
は、入力されるデータに対して0x02倍または0x0E倍のい
ずれかの乗算が可能となっている。第2乗算器362で
は、入力されるデータに対して0x03倍または0x0B倍のい
ずれかの乗算が可能となっている。第3乗算器363で
は、入力されるデータに対して0x01倍または0x0D倍のい
ずれかの乗算が可能となっている。第4乗算器364で
は、入力されるデータに対して0x01倍または0x09倍のい
ずれかの乗算が可能となっている。
されるデータに対して0x01倍または0x09倍のいずれかの
乗算が可能となっている。第2乗算器では、入力される
データに対して0x02倍または0x0E倍のいずれかの乗算が
可能となっている。第3乗算器では、入力されるデータ
に対して0x03倍または0x0B倍のいずれかの乗算が可能と
なっている。第4乗算器では、入力されるデータに対し
て0x01倍または0x0D倍のいずれかの乗算が可能となって
いる。
されるデータに対して0x01倍または0x0D倍のいずれかの
乗算が可能となっている。第2乗算器では、入力される
データに対して0x01倍または0x09倍のいずれかの乗算が
可能となっている。第3乗算器では、入力されるデータ
に対して0x02倍または0x0E倍のいずれかの乗算が可能と
なっている。第4乗算器では、入力されるデータに対し
て0x03倍または0x0B倍のいずれかの乗算が可能となって
いる。
されるデータに対して0x03倍または0x0B倍のいずれかの
乗算が可能となっている。第2乗算器では、入力される
データに対して0x01倍または0x0D倍のいずれかの乗算が
可能となっている。第3乗算器では、入力されるデータ
に対して0x01倍または0x09倍のいずれかの乗算が可能と
なっている。第4乗算器では、入力されるデータに対し
て0x02倍または0x0E倍のいずれかの乗算が可能となって
いる。
354の第1乗算器〜第4乗算器の各係数を暗号化時お
よび復号化時において変更することにより、暗号化時と
復号化時における回路構成を共通に使用することが可能
となる。 〈Mix Column変換回路の乗算器〉Mix Column変換回路中
に含まれる乗算器の一例を図7に示す。
a3,a2,a1,a0)に対し、係数(b3,b2,b1,b0)の乗算を行
うものとする。この場合、8ビットデータ(a7,a6,a5,a
4,a3,a2,a1,a0)に係数の各ビットを乗算する部分積演
算部375〜378を設けている。さらに、係数の最上
位ビットを乗算する部分積演算部375の演算結果に対
して、部分積演算部376の演算結果を1ビットシフト
させて加算する加算器371、部分積演算部377の演
算結果をさらに1ビットシフトさせて加算する加算器3
72、部分積演算部378の演算結果をさらに1ビット
シフトさせて加算する加算器373を備えている。加算
器373の演算結果と部分積演算部375、各加算器3
71〜373でオーバーフローしたキャリーが入力さ
れ、除数により除算される除算器374が設けられてい
る。
0)として、暗号化時における係数と復号化時における
係数とを選択的にセットすることでMix Column変換処理
を暗号化時と復号化時において共通に使用することがで
きる。
は、前述したように、各乗算器について2つずつ設定さ
れている。各乗算器における係数の組み合わせは、(0x
02,0x0E),(0x03,0x0B),(0x01,0x0D),(0x01,0x0
9)の4通りであり、これを下位4ビットで表示する
と、(0010,1110),(0011,1011),(0001,1101),
(0001,1001)となる。このような係数において共通す
るビットの演算は部分積の制御を行わず、異なるビット
の演算は加算処理を制御することで、回路規模を小さく
することが可能である。
わせの場合、2進数で表現すると(0001,1101)とな
り、上位2ビットの部分積の加算結果を下位2ビットの
部分積に加算するか否かを制御することで、2つの係数
を選択して乗算することが可能となる。係数(0x01,0x0
D)の組み合わせの場合における回路構成の例を図8に
示す。
7,a6,a5,a4,a3,a2,a1,a0)に対し、1ビットシフトさせ
て加算処理を実行する第1加算器381が設けられてい
る。第1加算器381の出力は、制御ロジック382を
介して第2加算器383に入力されている。この第2加
算器383は、係数の最下位ビットによる部分積演算結
果を加算するものであって、入力される8ビットデータ
に対して3ビットシフトさせて加算処理を実行するよう
に構成されている。
1および第2加算器383でオーバーフローしたキャリ
ーが入力され、除数により除算される除算器384が設
けられている。
場合には、上位2ビットの演算結果である第1加算器3
81の出力を第2加算器383に出力しない。また、制
御ロジック382は、係数が0x0Dである場合には、上位
2ビットの演算結果である第1加算器381の出力を第
2加算器383に出力するように構成される。
+x3+x+1とするGF(28)上での乗算であり、加
算はGF(2)上での加算であるため、排他的論理和演
算で実現することが可能である。
おける部分積の加算処理を制御することにより回路規模
を小さくすることができ、回路規模を削減することが可
能となる。 〈鍵スケジュール部〉鍵スケジュール部の回路構成の一
例を図9に示す。
成ロジック部101、拡大鍵レジスタ120および鍵入
力レジスタ131とから構成されている。鍵入力レジス
タ131は、8個の32ビットレジスタk0〜k7から構成
される256ビットのレジスタであり、レジスタk0から
順に暗号鍵が32ビット毎に格納される。暗号鍵が25
6ビットの場合にはレジスタk0〜k7全てにデータが格納
され、暗号鍵が192ビットの場合にはレジスタk0〜k5
にデータが格納され、暗号鍵が128ビットの場合には
レジスタk0〜k3にデータが格納される。
〜k7のうちいずれか1つの値を選択的に出力するセレク
タ132が接続されている。このセレクタ132は、鍵
入力レジスタ131の256ビットデータから32ビッ
トのデータを選択して拡大鍵レジスタ120の最下位に
入力するものである。
での処理が可能な8個のフリップフロップ121〜12
8が順次接続されたシフトレジスタで構成されている。
最下位に位置するフリップフロップ128には、セレク
タ132の出力と拡大鍵生成ロジック部101の出力を
選択するセレクタ113の出力が入力される。フリップ
フロップ128の出力W7KEYは、フリップフロップ12
7に入力されている。フリップフロップ127の出力W6
KEYは、フリップフロップ126の前段にあるセレクタ
112に入力されている。セレクタ112には、フリッ
プフロップ127の出力W6KEYと拡大鍵生成ロジック1
01の出力とが入力されており、いずれか一方をフリッ
プフロップ126に入力するように構成されている。
フリップフロップ125に入力されている。フリップフ
ロップ125の出力W4KEYは、フリップフロップ124
の前段にあるセレクタ111に入力されている。セレク
タ111には、フリップフロップ125の出力W4KEYと
拡大鍵生成ロジック101の出力とが入力されており、
いずれか一方をフリップフロップ124に入力するよう
に構成されている。
フリップフロップ123に入力されている。フリップフ
ロップ123の出力W2KEYは、フリップフロップ122
に入力されている。フリップフロップ122の出力W1KE
Yは、フリップフロップ121に入力されている。
成用定数Rconが格納されているROM102、ROM1
02から読み出される値と読出信号RCON#ENとの論理積
演算を行うAND回路103、拡大鍵レジスタ120の最
上位に位置するフリップフロップ121の出力W0KEYとA
ND回路103の出力が入力されて排他的論理和演算を実
行するEXOR回路104を含んでいる。
リップフロップ121の出力W0KEY、フリップフロップ
124の出力W3KEY、フリップフロップ126の出力W5K
EY、フリップフロップ128の出力W7KEYが入力され、
いずれか1つを選択的に出力するセレクタ105を備え
ている。セレクタ105の出力は、データのローテーシ
ョン処理を行うRot Byte回路106、セレクタ107、
セレクタ109に入力されている。セレクタ107に
は、Rot Byte回路106の出力とセレクタ105の出力
が入力されており、いずれかをSub Byte回路108に供
給する。Sub Byte回路108は、32ビット分のByte S
ub変換処理を実行するものであり、その出力がセレクタ
109に供給する。セレクタ109は、Sub Byte回路1
08の出力とセレクタ105の出力が入力され、いずれ
か一方を出力する。拡大鍵生成ロジック部101は、EX
OR回路104の出力とセレクタ109の出力が入力さ
れ、排他的論理和演算を実行するEXOR回路110を備え
ている。
は、ラウンドファンクション部のRound Key加算処理
に用いる拡大鍵の生成、暗号化時における鍵入力レジ
スタの書き換えと、暗号化と復号化終了に伴う拡大鍵初
期値のセットアップ、復号化時の鍵入力レジスタの書
き換えに伴う拡大鍵初期値のセットアップなどの機能を
備える。
算処理で用いられるRound Keyは、鍵長256ビットの
場合では、Initial Round KeyとRound Key01〜Round Ke
y14の合計15個必要となる。各Round keyは処理ブロッ
ク長に対応して128ビットで構成されており、鍵スケ
ジュール部で生成される32ビットの拡大鍵で各Round
keyを充当するためには、W00〜W59の60個の拡大鍵が
必要となる。このような拡大鍵W00〜W59は、暗号化時に
はW00→W59の順に使用され、復号化時にはW59→W00の順
に使用される。この実施形態では、表10に示すよう
に、暗号化時にW00→W59の順に拡大鍵を生成するととも
に、復号化時においてW59→W00の順に拡大鍵の生成を行
うように構成する。
^Sub Byte(Rot Byte(W07))^Rcon[1]の式により、W00とS
ub Byte(Rot Byte(W07))と定数Rcon[1]との排他的論理
和で演算される。A^A=Aという性質を利用すると、拡大
鍵W00は、W00= W08^Sub Byte(Rot Byte(W07))^Rcon[1]
で表され、W08とW07から生成できることがわかる。よっ
て、復号化では、一旦、W00=>W59まで生成して、暗号化
の時と逆の順番W59=>W00で拡大鍵を生成することが可能
である。これにより、復号化時もすべての拡大鍵をメモ
リに格納しておく必要はなく、各ラウンドで必要な拡大
鍵だけを生成しながら、復号処理を行うことが可能とな
る。
d Key加算用拡大鍵の生成について説明する。表10に
示すように各ラウンドのRound Key加算で4個の拡大鍵(3
2bit単位)が使用され、拡大鍵はラウンドファンクショ
ンのMix Column変換 + Round Key加算のバックグラウン
ドで演算されるため4個の拡大鍵は4サイクルで作成すれ
ばよい。このため図9に示すような回路構成において、
1サイクルで1個の拡大鍵を生成する構成となってい
る。拡大鍵レジスタ120はシフトレジスタで構成され
ており、ラウンドファンクション部で使用される現在の
拡大鍵は、フリップフロップ121の出力W0KEYを用い
る。
05(SEL#B)は、表11に示すように、鍵長と暗号化/復
号化の2種類の条件により切り換え制御が行われる。ま
た、拡大鍵生成ロジック部101の出力が供給されるセ
レクタ111,112,113(SEL#E〜SEL#G)は、鍵
長に基づいて、表12のように設定される。ただし、暗
号鍵が初期値として入力される際には、各セレクタ11
1〜113のセレクタ位置はbが選択される。さらに、
セレクタ107,109(SEL#C〜D)は、表13に示すよ
うに、各拡大鍵の生成論理により切り換え制御が行われ
る。ROM102には、EXOR回路104に供給される定
数Rcon[i]が格納されており、アドレスi番地に対応す
る各定数Rcon[i]が表14に示すように格納されてい
る。
である場合の各演算について回路動作を説明する。な
お、ラウンドファンクション動作前に、鍵入力レジスタ
131の各レジスタk0〜k7の値をロードすることによっ
て、No.00〜07からの初期値が拡大鍵レジスタ120の
各フリップフロップ121〜128にセットされている
ものとする。
示されているように、W08=W00^Sub Byte(Rot Byte(W0
7))^Rcon[1]で演算される。このW08=W00^Sub Byte(Rot
Byte(W07))^Rcon[1]の演算開始時には、フリップフロッ
プ121の出力W0KEYにはW00がセットされており、EXOR
回路104に入力される。また、フリップフロップ12
8の出力W7KEYにはW07がセットされており、このW07が
セレクタ105(SEL#B)に入力されている。
回路103に入力される読出信号RCON#ENをイネーブル
にして、Rcon[1]^W00の演算をEXOR回路104で行い、
その結果をEXOR回路110に入力する。 一方、セレク
タ105(SEL#B)を通過したW07は、Rot Byte回路10
6とSub Byte回路107による処理が行われ、Sub Byte
(Rot Byte(W07)) の演算結果がEXOR回路110に入力さ
れる。よって、EXOR回路110では、W08=W00^Sub Byte
(Rot Byte(W07))^Rcon[1]の演算が行われる。
明する。W09=W01^W08の演算開始時には、フリップフロ
ップ121の出力W0KEYにはW01がセットされており、EX
OR回路104にこれが入力されている。フリップフロッ
プ128の出力W7KEYにはW08がセットされており、セレ
クタ105(SEL#B)に入力されている。AND回路103
に入力される読出信号RCON#ENをディセーブルにして、
フリップフロップ121から入力されるW01がそのままE
XOR回路110に入力されるように設定する。このと
き、セレクタ109(SEL#D)ではセレクタ位置がbに
設定されており、セレクタ105(SEL#B)を通過したW
08が、セレクタ109を介してそのままEXOR回路110
に入力される。
8の演算が行われる。 W10〜W11、W13〜W15も同じパスで
それぞれ演算が行われる。拡大鍵W12の演算処理を説明
する。拡大鍵W12=W04^SubByte(W11)で演算され、この演
算の開始時には、フリップフロップ121の出力W0KEY
にはW04がセットされ、EXOR回路104に入力されてい
る。また、フリップフロップ128の出力W7KEYにはW11
がセットされておりセレクタ105(SEL#B)に入力さ
れている。AND回路103に入力される読出信号RCON#EN
をディセーブルとして、W04がそのままEXOR回路104
に入力されるように設定する。一方、セレクタ107
(SEL#C)ではセレクタ位置がbに設定されており、セ
レクタ105(SEL#B)を通過したW11が、セレクタ10
7(SEL#C)を介してSub Byte回路108に入力され
る。このことにより、Sub Byte回路108によるSub By
te処理が行われ、Sub Byte(W11) の演算結果がEXOR回路
110に入力される。よって、EXOR回路110では、W1
2=W04^Sub Byte(W11)の演算が行われる。
行われる。次に、暗号化時の鍵入力レジスタ131の書
換えと、暗号化と復号化終了に伴う拡大鍵初期値のセッ
トアップについて説明する。このセットアップ動作は、
次の暗号化もしくは復号化に備え、鍵入力レジスタ13
1に格納されている拡大鍵初期値を拡大鍵レジスタ12
0に転送する動作である。
鍵初期値は、セレクタ132(SEL#A)により32ビット
単位でデータ選択が行われ、セレクタ113(SEL#G)の
セレクタ位置bを経由して拡大鍵レジスタ120にセッ
トされる。拡大鍵レジスタ120は、前述したようにシ
フトレジスタ構成であり、フリップフロップ128(FF
7)=>フリップフロップ127(FF6)=>フリップフロッ
プ126(FF5)=>フリップフロップ125(FF4)=>フ
リップフロップ124(FF3)=>フリップフロップ12
3(FF2)=>フリップフロップ122(FF1)=>フリップ
フロップ121(FF0)へとシフトして行き、8サイク
ルで全ての拡大鍵初期値が転送される。なお、セレクタ
132(SEL#A)で選択される鍵入力データは鍵入力レ
ジスタ131のレジスタk0,k1,k2,k3,k4,k5,k6,k7の順
番である。
に伴う拡大鍵初期値のセットアップについて説明する。
表10のように、復号化においては、拡大鍵初期値を暗
号化での最終拡大鍵のセット(W59〜W52)とする必要があ
る。鍵入力レジスタ131の書換えにより、鍵入力レジ
スタ131にセットされたデータを前述した方法で、一
旦、拡大鍵レジスタ120に転送し、暗号化の拡大鍵生
成論理に従い、最終拡大鍵のセット(W52〜W59)まで図
9の回路を動作させる。
2の生成時にW52を鍵入力レジスタ131のレジスタk7に
転送し、W53の生成時にW53をレジスタk6に転送し、W54
の生成時にW54をレジスタk5に転送し、W55の生成時にW5
5をレジスタk4に転送し、W56の生成時にW56をレジスタk
3に転送し、W57の生成時にW57をレジスタk2に転送し、W
58の生成時にW58をレジスタk1に転送し、W59の生成時に
W59をk0に転送することにより鍵入力レジスタ131に
逆の順番で最終拡大鍵をセットする。さらに、鍵入力レ
ジスタ131の最終拡大鍵のセットを前述した方法で拡
大鍵レジスタ120に転送することで復号化時の鍵入力
レジスタの書換えに伴う拡大鍵初期値のセットアップが
完了するこの後、セレクタ105(SEL#B)、セレクタ
107(SEL#C)、セレクタ109(SEL#D)、セレクタ
111〜113(SEL#E〜SEL#G)を表11〜表13に示
すようなセレクタ位置に設定し、復号化に必要な各拡大
鍵を順次生成する。〈Byte Sub変換回路の共用化〉上述
した鍵スケジュール部のSub Byte処理およびラウンドフ
ァンクション部のByte sub変換処理では、ともに32ビ
ット単位でのByte Sub変換処理を実行しているため、こ
れらの処理回路を共用化することが考えられる。
設けられるSub Byte回路108をラウンドファンクショ
ン部のByte Sub変換回路と共用化することについて考
察。図4に示すラウンドファンクション部における中間
レジスタ兼Shift Row変換回路206からByte Sub変換
回路207への入力BSINを、図9に示す拡大鍵生成ロジ
ック部101のセレクタ107のセレクタ位置cに接続
する。さらに、拡大鍵生成ロジック部101のSub Byte
回路108からの出力を、図4のByte Sub変換回路20
7の出力BSOUTとしてセレクタ203に接続する。
処理を行う場合には、表13に示すように、セレクタ1
07(SEL#C)のセレクタ位置をcとし、セレクタ10
9(SEL#D)のセレクタ位置をbとする。このことによ
って、拡大鍵生成ロジック部101のSub Byte回路10
8を用いてラウンドファンクション部のByte Sub変換処
理を実行することが可能となる。 〈Byte Sub変換回路〉Byte Sub変換処理は、8ビット単
位での逆数演算と行列演算との組み合わせで構成されて
おり、暗号化時においては逆数演算を行った後に行列演
算を実行し、復号化時においては行列演算を行った後に
逆数演算を実行する。このようなByteSub変換処理を、
暗号化時と復号化時において共通の回路で実施するため
に、図10に示すような回路を提案する。
復号化用行列演算回路392と、セレクタ393、逆数
演算回路394、暗号化用行列演算回路395、セレク
タ396とで構成されている。
行列演算回路392の出力が入力されておりいずれか一
方を逆数演算回路394に入力するように構成されてい
る。また、セレクタ396は、逆数演算回路394の出
力と暗号化用行列演算回路395の出力が入力されてお
り、いずれか一方を出力するように構成されている。
タ側にし、セレクタ396を暗号化用行列演算回路39
5側にする。また、復号化時には、セレクタ393を復
号化用行列演算回路392側にし、セレクタ396を逆
数演算回路394側にする。このことにより、暗号化時
におけるByte Sub変換処理と、復号化時におけるByteSu
b変換処理とを共通の回路構成で実現することが可能と
なる。
うな数1で表される。
表すことができる。ただし、ここでの”+”は排他的論
理和演算で構成される。
次のような数3で表される。
ように表すことができる。
す。ここでは、8ビットの入力レジスタ401、出力レ
ジスタ403および排他的論理和と否定で構成される論
理回路402で構成される。暗号化時において数2に示
すような排他的論理和演算を実行するためには、論理回
路402内の排他的論理和回路のうち、重複する演算処
理を共用化することで16個のEXORと4個のNOTを組
み合わせることにより実現することが可能となる。
す。暗号化用行列演算回路と同様に、8ビットの入力レ
ジスタ405、出力レジスタ407および排他的論理和
と否定で構成される論理回路406で構成されている。
ここでも暗号化用行列演算回路と同様に、復号化時にお
いて数4に示すような排他的論理和演算を実行するため
に、論理回路406内の排他的論理和回路のうち、重複
する演算処理を共有化することで13個のEXOR回路と2
個のNOTを組み合わせることで実現することが可能と
なる。
示す。この暗号化用行列演算回路は、入力レジスタ41
1、出力レジスタ414、定数保持用レジスタ413お
よび排他的論理回路で構成される論理回路412を備え
ている。入力レジスタ411、出力レジスタ414、定
数保持用レジスタ413は、いずれも8ビットのシフト
レジスタで構成されており、クロックに同期して1ビッ
トずつ右にローテートシフトする。
つの"0"と5つの"1"でなり、1つずつシフトするように
構成されている。これから、入力レジスタ411のx0,x
4,x5,x6,x7の各ビットをローテートシフトさせながら論
理回路412に入力してEXOR演算を実行することで、数
1の右辺第1項の行列演算を行うことができる。
位ビットから順に数1右辺第2項の定数がセットされて
いる。定数保持用レジスタ413の値をローテートシフ
トさせながら最下位ビットの値を論理回路412に入力
しEXOR演算を実行することで、数1右辺第2項の行列演
算を行うことができる。
ータがセットされると、最初のクロックでy0が演算され
て出力レジスタ414に格納される。次のクロックで
は、y1が演算されて出力レジスタ414に格納され、以
下順次演算処理を実行して8クロックで(y7,y6,y5,y4,
y3,y2,y1,y0)の演算が完了する。この場合の論理回路
412は5個のEXOR回路で数2の演算処理を実行するこ
とが可能となる。
路の他の例を図14に示す。この復号化用行列演算回路
は、入力レジスタ415、出力レジスタ418、定数保
持用レジスタ417および排他的論理回路で構成される
論理回路416を備えている。入力レジスタ415、出
力レジスタ418、定数保持用レジスタ417は、いず
れも8ビットのシフトレジスタで構成されており、クロ
ックに同期して1ビットずつ右にローテートシフトす
る。
つの"0"と3つの"1"の組み合わせでなり、1つずつシフ
トするように構成されている。これから、入力レジスタ
415のx2,x5,x7の各ビットをローテートシフトさせな
がら論理回路416に入力してEXOR演算を実行すること
で、数3の右辺第1項の行列演算を行うことができる。
位ビットから順に数3右辺第2項の定数がセットされて
いる。定数保持用レジスタ417の値をローテートシフ
トさせながら最下位ビットの値を論理回路416に入力
しEXOR演算を実行することで、数3右辺第2項の行列演
算を行うことができる。
ータがセットされると、最初のクロックでy0が演算され
て出力レジスタ418に格納される。以下、暗号化時と
同様に順次演算処理を実行して8クロックで(y7,y6,y
5,y4,y3,y2,y1,y0)の演算が完了する。この場合の論理
回路416は3個のEXOR回路で数4の演算処理を実行す
ることが可能となる。 (付記1)暗号鍵から所定の処理ブロック長に対応する
ビット数の複数のRound Keyを生成し、入力データと前
記Round Keyのうちの1つとEXOR演算を実行するEXOR演
算部と、Byte Sub変換、Shift Row変換、Mix Column変
換、Round Key加算を含むRound処理を複数回実行するRo
und処理部とを備えるラウンドファンクション部により
入力データと前記Round Keyによる暗号化/復号化処理
を前記処理ブロック長毎に実行する暗号回路であって、
前記Round処理部が、入力データを前記処理ブロック長
よりも小さい実行ブロック長に分割する第1セレクタ
と、前記実行ブロック長毎に前記Round Keyの値を入力
データに加算する第1Round Key加算回路と、前記第1R
ound Key加算回路の出力を一時的に格納するとともに前
記処理ブロック長によるShift Row変換を実行する中間
レジスタ兼Shift Row変換回路と、前記中間レジスタ兼S
hift Row変換回路の値が前記実行ブロック長毎に入力さ
れByte Sub変換を実行するByte Sub変換回路と、前記中
間レジスタ兼Shift Row変換回路の値が前記実行ブロッ
ク長毎に入力され前記Round Keyの値を前記実行ブロッ
ク長毎に加算する第2Round Key加算回路と、前記第2R
ound Key加算回路の出力に対してMix Column変換を実行
するMix Column変換回路と、前記第1セレクタ、中間レ
ジスタ兼Shift Row変換回路、Byte Sub変換回路、Mix C
olumn変換回路の出力のうちいずれか1つを前記第2Rou
nd Key加算回路に出力する第2セレクタとを備えること
を特徴とする暗号回路。
ビットである付記1に記載の暗号回路。 (付記3)前記処理ブロック長が128ビットであり、
前記実行ブロック長が32ビットである付記1または2
に記載の暗号回路。
ト、192ビット、256ビットのうちのいずれかであ
る付記1〜3に記載の暗号回路。
データに対して行列演算を実行する復号化用行列演算部
と、入力データと前記復号化用行列演算部の出力とのう
ちいずれかを出力する第3セレクタと、前記第3セレク
タから出力されるデータに対して逆数演算を実行する逆
数演算部と、前記逆数演算部から出力されるデータに対
して行列演算を実行する暗号化用行列演算部と、前記逆
数演算部の出力と前記暗号化用行列演算部の出力のうち
いずれか一方を出力する第4セレクタとを備える付記1
〜4のいずれかに記載の暗号回路。
暗号化行列演算部は、1クロックで8ビットの演算を行
うようにEXOR回路を接続している付記5に記載の暗号回
路。
号化行列演算部は、1クロックで1ビットの演算を行う
ようにEXOR回路を接続している付記5に記載の暗号回
路。
変換回路に入力されるデータのシフト量に関するシフト
データを暗号化時と復号化時において逆順に入力するこ
とにより、前記中間レジスタ兼Shift Row変換回路を暗
号化と復号化に共通に使用する、付記1〜7のいずれか
に記載の暗号回路。
数固定の複数の乗算器と前記複数の乗算器の排他的論理
和を演算するEXOR回路とを備え、各乗算器に入力される
データと各乗算器に設定された乗数との間で行列演算を
実行する、付記1〜8のいずれかに記載の暗号回路。
8ビット単位で演算が可能な4つの乗算器と前記4つの
乗算器の出力に基づいて排他的論理和演算を実行するEX
OR回路とを有する演算器を4つ備える付記9に記載の暗
号回路。
制御可能であり暗号化と復号化に共通に使用される付記
9または10に記載の暗号回路。
らの加算値を制御するように構成される、付記11に記
載の暗号回路。
に応じたビット数に分割して出力する第5セレクタと、
前記実行ブロック長毎にデータをラッチするフリップフ
ロップ回路が複数段接続されたシフトレジスタと、前記
シフトレジスタの最終段のフリップフロップ回路の出力
と定数群のうちから選択される1つの定数との排他的論
理和演算を実行する第1EXOR回路と、前記シフトレジス
タのフリップフロップのうち暗号化時に演算対象となる
フリップフロップの出力と復号化時に演算対象となるフ
リップフロップの出力とが入力されいずれか1つを選択
的に出力する第6セレクタと、前記第6セレクタの出力
をローテーション処理するRot Byte処理回路と、前記第
6セレクタの出力と前記Rot Byte処理回路の出力とが入
力され、いずれか1つを選択的に出力する第7セレクタ
と、前記第7セレクタの出力に対して前記実行ブロック
長毎のByte Sub変換を実行するSub Byte処理回路と、前
記第6セレクタの出力と前記Sub Byte処理回路の出力が
入力され、いずれか1つを選択的に出力する第8セレク
タと、前記第1EXOR回路の出力と前記第8セレクタの出
力とに基づいて排他的論理和演算を実行する第2EXOR回
路と、前記シフトレジスタのフリップフロップのうち暗
号化時にその出力が演算対象となるフリップフロップに
対して、前記第2EXOR回路の出力と、隣接する段のフリ
ップフロップの出力とのうちいずれかを選択的に出力す
るシフトレジスタ部セレクタと、を備える、前記暗号鍵
から所定の処理ブロック長に対応するビット数の複数の
Round Keyを前記実行ブロック長に対応するビット数毎
に分割された拡大鍵として生成する拡大鍵スケジュール
回路を有する付記1〜12のいずれかに記載の暗号回
路。
ビット単位でデータ処理を実行する8個のフリップフロ
ップ回路を備え、前記第6セレクタは、前記フリップフ
ロップのうち下から2段目、4段目、6段目、8段目の
フリップフロップの出力が入力され、いずれか1つを出
力するように構成されている付記13に記載の暗号回
路。
レジスタ兼Shift Row変換回路の出力が入力され、前記S
ub Byte処理回路の出力を前記第2セレクタに入力する
ことにより、前記Sub Byte処理回路と前記Round処理部
のByte Sub変換回路とを共用する、付記13または14
に記載の暗号回路。
ータを所定の実行ブロック長に細分化することにより、
AESブロック暗号アルゴリズムをコンパクトな回路で
実行可能となる。また、暗号化時における処理回路と復
号化時における処理回路を共有化するとともに、鍵スケ
ジュール部とラウンドファンクション部の回路の一部を
共有化することでさらに回路規模を小さくすることが可
能となる。、
ック図。
ンクション部のブロック図。
図。
ク図。
ク図。
Claims (5)
- 【請求項1】暗号鍵から所定の処理ブロック長に対応す
るビット数の複数のRound Keyを生成し、入力データと
前記Round Keyのうちの1つと排他的論理和演算を実行
するEXOR演算部と、Byte Sub変換、Shift Row変換、Mix
Column変換、Round Key加算を含むRound処理を複数回
実行するRound処理部とを備えるラウンドファンクショ
ン部により入力データと前記Round Keyによる暗号化/
復号化処理を前記処理ブロック長毎に実行する暗号回路
であって、 前記Round処理部が、入力データを前記処理ブロック長
よりも小さい実行ブロック長に分割する第1セレクタ
と、前記実行ブロック長毎に前記Round Keyの値を入力
データに加算する第1Round Key加算回路と、前記第1R
ound Key加算回路の出力を一時的に格納するとともに前
記処理ブロック長によるShift Row変換を実行する中間
レジスタ兼Shift Row変換回路と、前記中間レジスタ兼S
hift Row変換回路の値が前記実行ブロック長毎に入力さ
れByte Sub変換を実行するByte Sub変換回路と、前記中
間レジスタ兼Shift Row変換回路の値が前記実行ブロッ
ク長毎に入力され前記Round Keyの値を前記実行ブロッ
ク長毎に加算する第2Round Key加算回路と、前記第2R
ound Key加算回路の出力に対してMix Column変換を実行
するMix Column変換回路と、前記第1セレクタ、中間レ
ジスタ兼Shift Row変換回路、Byte Sub変換回路、Mix C
olumn変換回路の出力のうちいずれか1つを前記第2Rou
nd Key加算回路に出力する第2セレクタとを備えること
を特徴とする暗号回路。 - 【請求項2】前記Byte Sub変換回路は、入力データに対
して行列演算を実行する復号化用行列演算部と、入力デ
ータと前記復号化用行列演算部の出力とのうちいずれか
を出力する第3セレクタと、前記第3セレクタから出力
されるデータに対して逆数演算を実行する逆数演算部
と、前記逆数演算部から出力されるデータに対して行列
演算を実行する暗号化用行列演算部と、前記逆数演算部
の出力と前記暗号化用行列演算部の出力のうちいずれか
一方を出力する第4セレクタとを備える請求項1に記載
の暗号回路。 - 【請求項3】前記中間レジスタ兼Shift Row変換回路に
入力されるデータのシフト量に関するシフトデータを暗
号化時と復号化時において逆順に入力することにより、
前記中間レジスタ兼Shift Row変換回路を暗号化と復号
化に共通に使用する、請求項1または2に記載の暗号回
路。 - 【請求項4】前記Mix Column変換回路は、乗数固定の複
数の乗算器と前記複数の乗算器の排他的論理和を演算す
るEXOR回路とを備え、各乗算器に入力されるデータと各
乗算器に設定された乗数との間で行列演算を実行する、
請求項1〜3のいずれかに記載の暗号回路。 - 【請求項5】暗号鍵を前記実行ブロック長に応じたビッ
ト数に分割して出力する第5セレクタと、 前記実行ブロック長毎にデータをラッチするフリップフ
ロップ回路が複数段接続されたシフトレジスタと、 前記シフトレジスタの最終段のフリップフロップ回路の
出力と定数群のうちから選択される1つの定数との排他
的論理和演算を実行する第1EXOR回路と、 前記シフトレジスタのフリップフロップのうち暗号化時
に演算対象となるフリップフロップの出力と復号化時に
演算対象となるフリップフロップの出力とが入力されい
ずれか1つを選択的に出力する第6セレクタと、 前記第6セレクタの出力をローテーション処理するRot
Byte処理回路と、 前記第6セレクタの出力と前記Rot Byte処理回路の出力
とが入力され、いずれか1つを選択的に出力する第7セ
レクタと、 前記第7セレクタの出力に対して前記実行ブロック長毎
のByte Sub変換を実行するSub Byte処理回路と、 前記第6セレクタの出力と前記Sub Byte処理回路の出力
が入力され、いずれか1つを選択的に出力する第8セレ
クタと、 前記第1EXOR回路の出力と前記第8セレクタの出力とに
基づいて排他的論理和演算を実行する第2EXOR回路と、 前記シフトレジスタのフリップフロップのうち暗号化時
にその出力が演算対象となるフリップフロップに対し
て、前記第2EXOR回路の出力と、隣接する段のフリップ
フロップの出力とのうちいずれかを選択的に出力するシ
フトレジスタ部セレクタと、を備える、前記暗号鍵から
所定の処理ブロック長に対応するビット数の複数のRoun
d Keyを前記実行ブロック長に対応するビット数毎に分
割された拡大鍵として生成する拡大鍵スケジュール回路
を有する請求項1〜4のいずれかに記載の暗号回路。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001195752A JP3851115B2 (ja) | 2001-06-28 | 2001-06-28 | 暗号回路 |
DE60105788T DE60105788T2 (de) | 2001-06-28 | 2001-12-31 | AES Verschlüsselungsschaltung |
EP01310953A EP1271839B1 (en) | 2001-06-28 | 2001-12-31 | AES Encryption circuit |
US10/034,321 US7158638B2 (en) | 2001-06-28 | 2002-01-03 | Encryption circuit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001195752A JP3851115B2 (ja) | 2001-06-28 | 2001-06-28 | 暗号回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003015522A true JP2003015522A (ja) | 2003-01-17 |
JP3851115B2 JP3851115B2 (ja) | 2006-11-29 |
Family
ID=19033681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001195752A Expired - Fee Related JP3851115B2 (ja) | 2001-06-28 | 2001-06-28 | 暗号回路 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7158638B2 (ja) |
EP (1) | EP1271839B1 (ja) |
JP (1) | JP3851115B2 (ja) |
DE (1) | DE60105788T2 (ja) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242366A (ja) * | 2004-02-26 | 2005-09-08 | Samsung Electronics Co Ltd | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
JP2006527865A (ja) * | 2003-06-16 | 2006-12-07 | エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート | ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法 |
JP2008046466A (ja) * | 2006-08-18 | 2008-02-28 | Mitsubishi Electric Corp | 暗号処理装置及び復号処理装置 |
EP1933495A2 (en) | 2006-12-14 | 2008-06-18 | Fujitsu Limited | Cryptographic operation apparatus for AES |
JP2008294810A (ja) * | 2007-05-25 | 2008-12-04 | Renesas Technology Corp | 暗号/復号装置 |
JP2009109988A (ja) * | 2007-10-10 | 2009-05-21 | Canon Inc | 暗号処理回路 |
JP2009192630A (ja) * | 2008-02-12 | 2009-08-27 | Kawasaki Microelectronics Inc | 暗号化装置および復号化装置 |
US7809132B2 (en) | 2003-01-28 | 2010-10-05 | Nec Corporation | Implementations of AES algorithm for reducing hardware with improved efficiency |
JP2010266751A (ja) * | 2009-05-15 | 2010-11-25 | Nippon Telegr & Teleph Corp <Ntt> | 暗号用拡大鍵生成回路、復号用拡大鍵生成回路、暗号用拡大鍵生成方法および復号用拡大鍵生成方法 |
US7965836B2 (en) | 2004-03-16 | 2011-06-21 | Samsung Electronics Co., Ltd. | Data cipher processors |
JP4823904B2 (ja) * | 2005-03-31 | 2011-11-24 | パナソニック株式会社 | データ暗号化装置及びデータ暗号化方法 |
JP2012507212A (ja) * | 2008-12-19 | 2012-03-22 | インテル コーポレイション | Raid処理を実行するための方法及び装置 |
JP2013045072A (ja) * | 2011-08-26 | 2013-03-04 | Toshiba Corp | 演算装置 |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW527783B (en) | 2001-10-04 | 2003-04-11 | Ind Tech Res Inst | Encryption/deciphering device capable of supporting advanced encryption standard |
US20040202318A1 (en) * | 2001-10-04 | 2004-10-14 | Chih-Chung Lu | Apparatus for supporting advanced encryption standard encryption and decryption |
JP2003271054A (ja) * | 2002-03-14 | 2003-09-25 | Matsushita Electric Ind Co Ltd | データ暗号化装置及びデータ復号化装置 |
US20030198345A1 (en) * | 2002-04-15 | 2003-10-23 | Van Buer Darrel J. | Method and apparatus for high speed implementation of data encryption and decryption utilizing, e.g. Rijndael or its subset AES, or other encryption/decryption algorithms having similar key expansion data flow |
JP4150886B2 (ja) * | 2002-04-19 | 2008-09-17 | ソニー株式会社 | 暗号化復号化演算装置およびデータ受信装置 |
GB0214620D0 (en) * | 2002-06-25 | 2002-08-07 | Koninkl Philips Electronics Nv | Round key generation for AES rijndael block cipher |
US20040047466A1 (en) * | 2002-09-06 | 2004-03-11 | Joel Feldman | Advanced encryption standard hardware accelerator and method |
AU2003302946A1 (en) * | 2002-12-13 | 2004-07-09 | Koninklijke Philips Electronics N.V. | A small hardware implementation of the subbyte function of rijndael |
US7321910B2 (en) * | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7900055B2 (en) | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US7502943B2 (en) | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7529368B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback mode cryptographic functions |
US7532722B2 (en) | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
US7539876B2 (en) | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7519833B2 (en) | 2003-04-18 | 2009-04-14 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
US7844053B2 (en) | 2003-04-18 | 2010-11-30 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US8060755B2 (en) | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
US7542566B2 (en) | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
US7392400B2 (en) | 2003-04-18 | 2008-06-24 | Via Technologies, Inc. | Microprocessor apparatus and method for optimizing block cipher cryptographic functions |
US7536560B2 (en) | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
US7529367B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode cryptographic functions |
US7925891B2 (en) | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
JP2007524923A (ja) | 2003-05-23 | 2007-08-30 | ワシントン ユニヴァーシティー | Fpgaデバイスを使用するインテリジェントデータ記憶および処理 |
US10572824B2 (en) | 2003-05-23 | 2020-02-25 | Ip Reservoir, Llc | System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines |
JP2005004048A (ja) * | 2003-06-13 | 2005-01-06 | Oki Electric Ind Co Ltd | 鍵拡張装置、鍵拡張方法および鍵拡張プログラム |
WO2004114303A1 (en) * | 2003-06-18 | 2004-12-29 | Matsushita Electric Industrial Co., Ltd. | Playback apparatus, playback method, and program for reproducing an encrypted virtual package |
AU2003274687A1 (en) * | 2003-09-05 | 2005-03-29 | Telecom Italia S.P.A. | Secret-key-controlled reversible circuit and corresponding method of data processing |
US7257225B2 (en) * | 2003-12-29 | 2007-08-14 | American Express Travel Related Services Company, Inc. | System and method for high speed reversible data encryption |
US7783037B1 (en) * | 2004-09-20 | 2010-08-24 | Globalfoundries Inc. | Multi-gigabit per second computing of the rijndael inverse cipher |
JP2008530663A (ja) * | 2005-02-11 | 2008-08-07 | ユニバーサル データ プロテクション コーポレーション | マイクロプロセッサのデータセキュリティの方法およびシステム |
JP2006253745A (ja) * | 2005-03-08 | 2006-09-21 | N-Crypt Inc | データ処理装置、データ処理システム、及びデータ処理方法 |
KR100755536B1 (ko) * | 2005-12-15 | 2007-09-06 | 주식회사 팬택앤큐리텔 | 복제단말기에 대한 ip 할당 방지시스템 |
WO2007121035A2 (en) * | 2006-03-23 | 2007-10-25 | Exegy Incorporated | Method and system for high throughput blockwise independent encryption/decryption |
IL174784A0 (en) * | 2006-04-04 | 2006-12-31 | Nds Ltd | Robust cipher design |
US8301905B2 (en) * | 2006-09-08 | 2012-10-30 | Inside Secure | System and method for encrypting data |
WO2008031205A1 (en) * | 2006-09-13 | 2008-03-20 | Elliptic Semiconductor Inc. | Multiple sequential security key encryption - decryption |
JP4860708B2 (ja) * | 2006-12-27 | 2012-01-25 | 富士通株式会社 | ストリーム暗号方法および暗号システム |
US7949130B2 (en) | 2006-12-28 | 2011-05-24 | Intel Corporation | Architecture and instruction set for implementing advanced encryption standard (AES) |
US8538012B2 (en) * | 2007-03-14 | 2013-09-17 | Intel Corporation | Performing AES encryption or decryption in multiple modes with a single instruction |
US8538015B2 (en) | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
US8391475B2 (en) * | 2007-03-30 | 2013-03-05 | Intel Corporation | Method and apparatus for advanced encryption standard (AES) block cipher |
US8520845B2 (en) * | 2007-06-08 | 2013-08-27 | Intel Corporation | Method and apparatus for expansion key generation for block ciphers |
US8787565B2 (en) * | 2007-08-20 | 2014-07-22 | Intel Corporation | Method and apparatus for generating an advanced encryption standard (AES) key schedule |
WO2009029842A1 (en) | 2007-08-31 | 2009-03-05 | Exegy Incorporated | Method and apparatus for hardware-accelerated encryption/decryption |
US9191197B2 (en) * | 2007-10-10 | 2015-11-17 | Canon Kabushiki Kaisha | AES encryption/decryption circuit |
US8175266B2 (en) * | 2008-05-07 | 2012-05-08 | Apple Inc. | System and method of performing authentication |
KR100949538B1 (ko) * | 2008-09-09 | 2010-03-25 | 한국전자통신연구원 | Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법 |
US8565421B1 (en) * | 2009-01-15 | 2013-10-22 | Marvell International Ltd. | Block cipher improvements |
JP2011169977A (ja) * | 2010-02-16 | 2011-09-01 | Renesas Electronics Corp | 暗号処理装置 |
US8611540B2 (en) * | 2010-06-23 | 2013-12-17 | Damaka, Inc. | System and method for secure messaging in a hybrid peer-to-peer network |
US8995658B2 (en) * | 2013-02-13 | 2015-03-31 | Honeywell International Inc. | Physics-based key generation |
US9305067B2 (en) | 2013-07-19 | 2016-04-05 | International Business Machines Corporation | Creation of change-based data integration jobs |
US9960908B1 (en) * | 2015-06-19 | 2018-05-01 | Amazon Technologies, Inc. | Reduced-latency packet ciphering |
WO2018119035A1 (en) | 2016-12-22 | 2018-06-28 | Ip Reservoir, Llc | Pipelines for hardware-accelerated machine learning |
RU2649429C1 (ru) * | 2017-03-06 | 2018-04-03 | Общество с ограниченной ответственностью "КАСКАД" | Устройство шифрования данных по стандарту гост р 34.12-2015 и алгоритмам "магма" и aes |
RU174150U1 (ru) * | 2017-03-06 | 2017-10-04 | Общество с ограниченной ответственностью "КАСКАД" | Устройство шифрования данных по стандарту гост р 34.12-2015 и алгоритмам "магма" и aes |
JP7383985B2 (ja) * | 2019-10-30 | 2023-11-21 | 富士電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
EP4044496A1 (en) * | 2021-02-10 | 2022-08-17 | Robert Bosch GmbH | Distributed secure multi party computation |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100389902B1 (ko) * | 1997-06-23 | 2003-09-22 | 삼성전자주식회사 | 차분해독법과선형해독법에대하여안전성을보장하는고속블럭암호화방법 |
US6182216B1 (en) * | 1997-09-17 | 2001-01-30 | Frank C. Luyster | Block cipher method |
US6098166A (en) * | 1998-04-10 | 2000-08-01 | Compaq Computer Corporation | Speculative issue of instructions under a load miss shadow |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
FR2802741B1 (fr) * | 1999-12-15 | 2003-10-31 | Sagem | Dispositif mettant en oeuvre un algorithme de chiffrage par bloc a repetition de rondes |
JP3499810B2 (ja) * | 2000-03-06 | 2004-02-23 | 株式会社東芝 | 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体 |
US6937727B2 (en) * | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
-
2001
- 2001-06-28 JP JP2001195752A patent/JP3851115B2/ja not_active Expired - Fee Related
- 2001-12-31 EP EP01310953A patent/EP1271839B1/en not_active Expired - Lifetime
- 2001-12-31 DE DE60105788T patent/DE60105788T2/de not_active Expired - Lifetime
-
2002
- 2002-01-03 US US10/034,321 patent/US7158638B2/en not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7809132B2 (en) | 2003-01-28 | 2010-10-05 | Nec Corporation | Implementations of AES algorithm for reducing hardware with improved efficiency |
JP2006527865A (ja) * | 2003-06-16 | 2006-12-07 | エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート | ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法 |
JP4740611B2 (ja) * | 2004-02-26 | 2011-08-03 | 三星電子株式会社 | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
US7606365B2 (en) | 2004-02-26 | 2009-10-20 | Samsung Electronics Co., Ltd. | Encryption/decryption system and key scheduler with variable key length |
JP2005242366A (ja) * | 2004-02-26 | 2005-09-08 | Samsung Electronics Co Ltd | 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ |
US7965836B2 (en) | 2004-03-16 | 2011-06-21 | Samsung Electronics Co., Ltd. | Data cipher processors |
US8094811B2 (en) | 2005-03-31 | 2012-01-10 | Panasonic Corporation | Data encryption device and data encryption method |
JP4823904B2 (ja) * | 2005-03-31 | 2011-11-24 | パナソニック株式会社 | データ暗号化装置及びデータ暗号化方法 |
JP2008046466A (ja) * | 2006-08-18 | 2008-02-28 | Mitsubishi Electric Corp | 暗号処理装置及び復号処理装置 |
EP1933495A2 (en) | 2006-12-14 | 2008-06-18 | Fujitsu Limited | Cryptographic operation apparatus for AES |
EP1933495A3 (en) * | 2006-12-14 | 2009-08-12 | Fujitsu Limited | Cryptographic operation apparatus for AES |
JP2008294810A (ja) * | 2007-05-25 | 2008-12-04 | Renesas Technology Corp | 暗号/復号装置 |
JP2009109988A (ja) * | 2007-10-10 | 2009-05-21 | Canon Inc | 暗号処理回路 |
JP2009192630A (ja) * | 2008-02-12 | 2009-08-27 | Kawasaki Microelectronics Inc | 暗号化装置および復号化装置 |
JP2012507212A (ja) * | 2008-12-19 | 2012-03-22 | インテル コーポレイション | Raid処理を実行するための方法及び装置 |
JP2010266751A (ja) * | 2009-05-15 | 2010-11-25 | Nippon Telegr & Teleph Corp <Ntt> | 暗号用拡大鍵生成回路、復号用拡大鍵生成回路、暗号用拡大鍵生成方法および復号用拡大鍵生成方法 |
JP2013045072A (ja) * | 2011-08-26 | 2013-03-04 | Toshiba Corp | 演算装置 |
Also Published As
Publication number | Publication date |
---|---|
US7158638B2 (en) | 2007-01-02 |
DE60105788T2 (de) | 2005-02-10 |
EP1271839A3 (en) | 2003-04-23 |
EP1271839A2 (en) | 2003-01-02 |
EP1271839B1 (en) | 2004-09-22 |
JP3851115B2 (ja) | 2006-11-29 |
DE60105788D1 (de) | 2004-10-28 |
US20030108195A1 (en) | 2003-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3851115B2 (ja) | 暗号回路 | |
Lee et al. | Efficient permutation instructions for fast software cryptography | |
Good et al. | Very small FPGA application-specific instruction processor for AES | |
US8280040B2 (en) | Processor instructions for improved AES encryption and decryption | |
US6952478B2 (en) | Method and system for performing permutations using permutation instructions based on modified omega and flip stages | |
JP2005215688A (ja) | S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法 | |
Shahbazi et al. | Design and implementation of an ASIP-based cryptography processor for AES, IDEA, and MD5 | |
O'Melia et al. | Enhancing the performance of symmetric-key cryptography via instruction set extensions | |
CN111756520A (zh) | 超低时延高级加密标准 | |
JP4098719B2 (ja) | Aesアルゴリズム用のプログラマブルデータ暗号化エンジン | |
CN116366248B (zh) | 基于紧凑指令集扩展的Kyber实现方法及系统 | |
JP2005513541A6 (ja) | Aesアルゴリズム用のプログラマブルデータ暗号化エンジン | |
Wang et al. | An efficient multimode multiplier supporting AES and fundamental operations of public-key cryptosystems | |
Sutradhar et al. | An ultra-efficient look-up table based programmable processing in memory architecture for data encryption | |
KR20030051111A (ko) | AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로 | |
JP2002358010A (ja) | べき乗剰余演算器 | |
Lee et al. | Lightweight and Low-Latency AES Accelerator Using Shared SRAM | |
JP2000075785A (ja) | 高速暗号処理回路および処理方法 | |
JP4230152B2 (ja) | 暗号回路 | |
JP4117157B2 (ja) | 暗号回路 | |
Kivilinna | Block ciphers: fast implementations on x86-64 architecture | |
Li et al. | Design of ZUC-256 Stream Cipher Coprocessor for 5G Communication Security | |
JP4745598B2 (ja) | 暗号回路 | |
CN117527198A (zh) | 数据安全处理方法、装置、计算机设备及存储介质 | |
Ali et al. | Optimal datapath design for a cryptographic processor: the Blowfish algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060523 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060724 |
|
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: 20060829 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060831 |
|
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: 20090908 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100908 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100908 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110908 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120908 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120908 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130908 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |