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
Application number
JP2001195752A
Other languages
English (en)
Other versions
JP3851115B2 (ja
Inventor
Soichi Okada
壮一 岡田
Naoya Torii
直哉 鳥居
Tomohiro Hayashi
朋弘 林
Chikahiro Deguchi
千佳広 出口
Yumi Fujiwara
由実 藤原
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 JP2001195752A priority Critical patent/JP3851115B2/ja
Priority to DE60105788T priority patent/DE60105788T2/de
Priority to EP01310953A priority patent/EP1271839B1/en
Priority to US10/034,321 priority patent/US7158638B2/en
Publication of JP2003015522A publication Critical patent/JP2003015522A/ja
Application granted granted Critical
Publication of JP3851115B2 publication Critical patent/JP3851115B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key 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

(57)【要約】 【課題】 AESブロック暗号を実装する際に、回路規模
を小型化するとともに一定水準の高速処理が実現可能な
暗号回路を提供する。 【解決手段】 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

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、共通鍵暗号として
現在の米国標準であるDESに代わり、次世代の共通鍵ブ
ロック暗号AES(Advanced Encryption Standard)とし
て標準化されつつあるRijndaelアルゴリズムをハードウ
ェア実装するための暗号回路に関する。
【0002】
【従来の技術】電子商取引や電子マネー等、インターネ
ットを用いた様々なサービスが検討されている。これら
の技術は、個人の生活にとどまらず、会社間の取引や生
産性の向上等様々な分野で広く用いられていく技術であ
る。特に、今後は、個人認証を目的として、スマートカ
ードやモバイル機に暗号機能が搭載され、認証、電子署
名、及びデータの暗号化等に広く使われると予想され
る。
【0003】これらの応用において、インターネット上
の第三者からの盗聴を防ぐ意味で共通鍵暗号が用いられ
る。共通鍵暗号は、現在の米国標準であるDESに代わる
次世代の共通鍵ブロック暗号AES(Advanced Encryptio
n Standard)として、Rijndaelと呼ばれる暗号アルゴ
リズムが選定され、標準化されようとしている(AESド
ラフト http://csrc.nist.gov/publications/drafts/d
fips-AES.pdf参照)。
【0004】AESは処理ブロック長128ビットのブロック
暗号であり、その暗号化アルゴリズムは、図1に示すよ
うに、ラウンドファンクション部20と鍵スケジュール
部10で構成される暗号回路により実現可能であると考
えられる。ラウンドファンクション部20は、入力デー
タを一時格納する入力レジスタ21と、入力データと拡
大鍵との排他的論理和演算を行うEXOR処理部22とRoun
d処理部23、最終Round処理部24および出力データを
一時格納する出力レジスタ25からなる。
【0005】Round処理部23は、Byte Sub変換部3
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から構成される。
【0006】Round処理は繰り返し行われるが、最終Rou
nd処理を含むRound処理の繰り返し回数Nrは、鍵スケジ
ュール部10に入力される鍵長により決められており、
表1に示すように規定されている。
【0007】
【表1】
【0008】このことから、各鍵長においてそれぞれRo
und処理の回数をNr-1回行い、最後に最終Round処理を行
うものであり、鍵長が128bitではRound処理が9回繰り返
され、鍵長が192bitでは11回繰り返され、鍵長が256bit
では13回繰り返され、最後に最終Round処理を行うこと
となる。EXOR回路22、Round処理部23および最終Rou
nd処理部24には、鍵スケジュール部10で生成された
Round Keyが入力される。
【0009】鍵スケジュール部10は、 AESドラフトに
示される鍵生成スケジュールに基づいてRound Keyを生
成するものであり、そのアルゴリズムを図2に示す。AE
Sブロック暗号の回路化にあたり、AES Proposal仕様(R
ijndael Specification,http://csrc.nist.gov/encryp
tion/aes/rijndael/Rijndael.pdf)に2つのハードウェ
ア実装が紹介されている。
【0010】そのうちの1つは、図1に示す全ての機能
をそのまま128bit単位でハードウェア化する方法(以
下、従来例1と称す)である。この場合、暗号化と復号
化において、各機能の処理の順番が逆となり、暗号化に
おける処理回路と復号化時における処理回路を別々に用
意する必要がある。
【0011】また、表1に示すように鍵長によりRound
処理の実施回数を変える必要があるため、鍵長毎に回路
を作成する必要がある。さらに、ラウンドファンクショ
ン部20で使用されるRound Keyは、暗号化時と復号化
時において逆順になるため、鍵スケジュール部10にお
いて鍵生成の順を暗号化時と復号化時とで逆にする必要
がある。したがって、暗号化時と復号化時における鍵ス
ケジュール回路を別々に構成するか、暗号化時と復号化
時において鍵スケジュール部10を共通に使用できるよ
うな工夫をする必要がある。
【0012】2つ目の方法は、図3に示すように、Byte
Sub変換部51とMix Column変換部52を有するコプロ
セッサ50を作成してByte Sub変換とMix Column変換の
機能のみをハードウェア化し、その他の機能をプログラ
ム41に組み込んでソフトウェア化しCPU40で処理
する方法(以下、従来例2と称す)である。
【0013】この場合、処理時間的にCPU40での処
理に不向きなByte Sub変換とMix Column変換をコプロセ
ッサ50としてハードウェア化し、他の処理をCPU4
0に格納されたプログラム41で処理することで回路規
模を小さくすることができる。
【0014】
【発明が解決しようとする課題】スマートカード等にAE
Sブロック暗号を組込むことを想定した場合、暗号回路
に要求される性能は、一定水準の処理速度を保ちつつ、
回路規模の小型化にある。 この要求を前提とした場
合、従来提案されている全ての機能を128bit単位でハー
ドウェア化する方法では回路規模が大きすぎ、スマート
カードへの搭載が困難となる。また、Byte Sub変換とMi
x Column変換の機能のみをハードウェア化し、他機能を
ソフトウェアで処理する方法では、要求処理速度を満足
しないといった問題がある。
【0015】また、Round Keyを生成する鍵スケジュー
ル部10では、メモリにすべてのRound Keyを格納する
と大きなメモリ容量が必要となり、回路規模が大きくな
る。したがって、処理速度を低下させずに回路規模の削
減を行うために、メモリにすべての拡大鍵を格納する必
要がないような回路構成でRound Keyの生成を行うこと
が望まれる。
【0016】本発明では、AESブロック暗号を実装する
際に、回路規模を小型化するとともに一定水準の高速処
理が実現可能な暗号回路の提供を目的とする。
【0017】
【課題を解決するための手段】本発明に係る暗号回路
は、暗号鍵から所定の処理ブロック長に対応するビット
数の複数の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セレクタとを備える。
【0018】ここで、実行ブロック長は8の倍数ビット
とすることができ、処理ブロック長が128ビットであ
り実行ブロック長が32ビットとすることができる。さ
らに、暗号鍵の鍵長が128ビット、192ビット、2
56ビットのうちのいずれかとすることができる。
【0019】また、Byte Sub変換回路は、入力データに
対して行列演算を実行する復号化用行列演算部と、入力
データと復号化用行列演算部の出力とのうちいずれかを
出力する第3セレクタと、第3セレクタから出力される
データに対して逆数演算を実行する逆数演算部と、逆数
演算部から出力されるデータに対して行列演算を実行す
る暗号化用行列演算部と、逆数演算部の出力と暗号化用
行列演算部の出力のうちいずれか一方を出力する第4セ
レクタとを備える構成とすることができる。
【0020】さらに、復号化用行列演算部と暗号化行列
演算部は、1クロックで8ビット毎の演算を行うように
複数の排他的論理和演算回路を備えている構成とするこ
とができ、1クロックで1ビットの演算を行うように排
他的論理和演算回路を備える構成とすることができる。
【0021】また、中間レジスタ兼Shift Row変換回路
に入力されるデータのシフト量に関するシフトデータを
暗号化時と復号化時において逆順に入力することによ
り、中間レジスタ兼Shift Row変換回路を暗号化と復号
化に共通に使用することができる。
【0022】さらに、Mix Column変換回路は、乗数固定
の複数の乗算器と複数の乗算器の排他的論理和を演算す
るEXOR回路とを備え、各乗算器に入力されるデータと各
乗算器に設定された乗数との間で行列演算を実行するよ
うに構成できる。この場合、Mix Column変換回路は、8
ビット単位で演算が可能な4つの乗算器と4つの乗算器
の出力に基づいて排他的論理和演算を実行するEXOR回路
とを有する演算器を4つ備える構成とすることができ
る。この乗算器は、2つの乗数を制御可能であり暗号化
と復号化に共通に使用されるように構成でき、上位ビッ
トからの加算値を制御するように構成することもでき
る。
【0023】また、暗号鍵を実行ブロック長に応じたビ
ット数に分割して出力する第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を実行ブロック
長に対応するビット数毎に分割された拡大鍵として生成
する拡大鍵スケジュール回路を有するように構成でき
る。
【0024】ここで、シフトレジスタは、32ビット単
位でデータ処理を実行する8個のフリップフロップ回路
を備え、第6セレクタは、フリップフロップのうち下か
ら2段目、4段目、6段目、8段目のフリップフロップ
の出力が入力され、いずれか1つを出力するように構成
できる。
【0025】また、第7セレクタに中間レジスタ兼Shif
t Row変換回路の出力が入力され、Sub Byte処理回路の
出力を第2セレクタに入力することにより、Sub Byte処
理回路とRound処理部のByte Sub変換回路とを共用する
ように構成できる。
【0026】
【発明の実施の形態】〈ラウンドファンクション部〉AE
Sブロック暗号は、鍵長128/192/256ビッ
ト、処理ブロック長128ビットで暗号化/復号化を行
うものであり、図1に示すように、暗号鍵から複数のRo
und Keyを生成する鍵スケジュール部10と、鍵スケジ
ュール部10から供給されるRound Keyを用いて暗号化
/復号化を実行するラウンドファンクション部20で構
成される。ラウンドファンクション部20では、排他的
論理和演算、Byte Sub変換処理、Shift Row変換処理、M
ix Column変換処理、Round Key加算処理などの処理を行
う。
【0027】第1実施形態は、このラウンドファンクシ
ョン部20を実現するための回路を構成するものであ
り、図4にその回路構成を示す。各回路ブロックではSh
ift Row変換処理を除いて32ビットによる処理を実行
し、Shift Row変換処理では128ビットによる処理を
実行するものとし、各回路ブロック間のデータの転送は
32ビット単位で実施されるものとする。
【0028】このラウンドファンクション部には、入力
データを一時格納する入力レジスタ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に示す。
【0029】
【表2】
【0030】ここで、Round0では、第2セレクタ20
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に順次格納される。
【0031】Round1では、図1におけるRound処理23
を実行するものであり、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に格納さ
れることとなる。
【0032】次に、第008サイクルにおいて、Shift Row
変換処理を実行する。中間レジスタ兼Shift Row変換回
路206では、128ビット単位でShift Row変換処理
を行うことが可能となっており、この第008サイクルに
おいて、128ビットのShift Row変換処理を実行す
る。このとき、第2セレクタ203のセレクタ位置はい
ずれの位置であってもよいが、次のサイクルでの処理を
考慮してcの位置とすることが好ましい。
【0033】第009サイクル〜第012サイクルでは、Mix
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処理が
実行される。
【0034】以下、第2Round〜第(Nr−1)Roundにお
いて、第1Roundと同様の処理を実行する(ただし、Nr
は最終Round処理を含むRound処理の繰り返し回数であ
り、表1に示すように、鍵長により異なる回数が規定さ
れている)。
【0035】第(Nr)Round(最終Round)では、図1に
おける最終Round処理24を実行するものであり、Byte
Sub変換処理35、Shift Row変換処理36、Round Key
加算処理37を実行する。
【0036】このために、第(Nr*9−5)サイクル〜
第(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に
格納されることとなる。
【0037】次に、第(Nr*9−1)サイクルにおい
て、128ビットのShift Row変換処理を実行する。こ
のとき、第2セレクタ203のセレクタ位置はいずれの
位置であってもよいが、次のサイクルでの処理を考慮し
てdの位置とすることが好ましい。
【0038】第(Nr*9)サイクル〜第(Nr*9+3)
サイクルでは、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に
示す。
【0039】
【表3】
【0040】ここで、Round0では、第2セレクタ20
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に順次格納される。
【0041】Round1では、Shift Row変換、Byte Sub変
換、Round Key加算、Mix Column変換の順に処理を実行
する。このために、まず、第004サイクルにおいて、中
間レジスタ兼Shift Row変換回路206において、12
8ビット単位でShift Row変換処理を実行する。この場
合、暗号化時におけるShift Row変換処理と同じ処理が
行われる。また、第2セレクタ203のセレクタ位置は
いずれの位置であってもよいが、次のサイクルでの処理
を考慮してbの位置とすることが好ましい。
【0042】次に、第005サイクル〜第008サイクルで、
第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に格納されることとなる。
【0043】第009サイクル〜第012サイクルでは、Roun
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
処理が実行される。
【0044】以下、第2Round〜第(Nr−1)Roundにお
いて、第1Roundと同様の処理を実行する(ただし、Nr
は最終Round処理を含むRound処理の繰り返し回数であ
り、表1に示すように、鍵長により異なる回数が規定さ
れている)。
【0045】第(Nr)Round(最終Round)では、Shift
Row変換処理、Byte Sub変換処理、Round Key加算処理を
実行する。このために、第(Nr*9−5)サイクルにお
いて、128ビットのShift Row変換処理を実行する。
このとき、第2セレクタ203のセレクタ位置はいずれ
の位置であってもよいが、次のサイクルでの処理を考慮
してbの位置とすることが好ましい。
【0046】次に、第(Nr*9−4)サイクル〜第(Nr
*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に格納さ
れることとなる。
【0047】第(Nr*9)サイクル〜第(Nr*9+3)
サイクルでは、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に示す。
【0048】ここでは、8ビット単位で処理を行うシフ
トレジスタを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に入力するように構成されている。
【0049】2番目のシフトレジスタは、4つのフリッ
プフロップ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に入力するように構成されてい
る。
【0050】3番目のシフトレジスタは、4つのフリッ
プフロップ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に入力するよ
うに構成されている。
【0051】4番目のシフトレジスタは、4つのフリッ
プフロップ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に入力するよ
うに構成されている。
【0052】このように構成した中間値レジスタ兼Shif
t Row変換回路を、各処理における中間値レジスタとし
て動作させる場合には、入力データIN0〜IN3に各8ビッ
ト単位のデータを入力することで、各サイクルにおいて
32ビット単位で処理されたデータを格納することがで
きる。さらに、各セレクタ301〜337のセレクタ位
置をbにして、各フリップフロップのデータを後段にシ
フトさせつつ、入力データIN0〜IN3にそれぞれ8ビット
毎のデータを入力することで、4サイクルで128ビッ
トのデータを入力することができる。128ビットのデ
ータ入力が完了した場合、1サイクル目に入力された4
つの8ビットデータは、それぞれフリップフロップ30
8,318,328,338にラッチされていることと
なる。
【0053】次にShift Row変換の動作について説明す
る。Rijndaelアルゴリズムでは、入力データをそれぞれ
8bitのデータa00〜a33に分割しこれをマトリクスとし
て処理を行い、暗号化と復号化でシフトの向きが逆にな
っている。本発明では、データの処理順をColumn(列)
配列順とし、暗号化時と復号化時において逆順に処理す
ることにより、同じ処理でShift Row変換処理を実現す
ることができる。
【0054】
【表4】
【0055】表4左に示すように、各Row(行)におけ
るデータが左端のColumnから順に配列されているような
場合には、暗号化時には、左端のColumnから順に処理が
実行される。また、復号化時には、表4右に示すよう
に、右端のColumnから順に処理が実行される。
【0056】Shift Row変換処理では、暗号化時には、
表4左に示されているような配列のデータ配列をRow毎
に異なるシフト量でローテートシフトする。具体的に
は、表5に示すように、1行目をそのままとし、2行目
を左1Byteローテートシフト、3行目を左2Byteローテ
ートシフト、4行目を左3Byteローテートシフトする。
このことにより、表5左に示す処理前の状態から表5右
の処理後の状態となる。
【0057】
【表5】
【0058】また、復号化時には、暗号化時と逆変換処
理となるように、表4左に示されているような配列のデ
ータ配列からRow毎に異なるシフト量でローテートシフ
トする。具体的には、表6に示すように、1行目をその
ままとし、2行目を左3Byteローテートシフト、3行目
を左2Byteローテートシフト、4行目を左1Byteローテ
ートシフトする。このことにより、表6左に示す処理前
の状態から表6右の処理後の状態となる。
【0059】
【表6】
【0060】本実施形態では、図5に示すような中間値
レジスタ兼Shift Row変換回路を用いている。このこと
から、128ビットのデータの入力が完了した段階で、
最初のサイクルで入力されたデータが最後段のフリップ
フロップ308,318,328,338にラッチされ
ており、前段のフリップフロップに順にデータがラッチ
されている。データを取り出す場合には、1サイクル毎
に右側に1Byteずつシフトしながら右端に位置する最後
段のフリップフロップからデータが取り出されることと
なる。したがって、データの処理順が右端側からである
ことを考慮してデータを配列し直すと、暗号化時のShif
t Row処理前は表7の左のような形態となる。
【0061】
【表7】
【0062】表5と同様のローテートシフトを行うため
には、表7の右に示すように、1行目をそのままとし、
2行目を右1Byteローテートシフト、3行目を右2Byte
ローテートシフト、4行目を右3Byteローテートシフト
することとなる。
【0063】このような暗号化時におけるShift Row変
換処理を行うためには、図5に示す中間値レジスタ兼Sh
ift Row変換回路を用いて各セレクタを切換制御し、1
28ビット単位で一括してデータの入れ換えを行う。
【0064】1番目のRowについては、シフトの必要が
ないため、各セレクタ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とする。
【0065】前述したようなShift Row変換処理を実行
する前における中間値レジスタ兼Shift Row変換回路の
各フリップフロップがラッチしている出力データを図5
に示すようにそれぞれb00〜b33とすると、各出力データ
は表8の右に示すような配列で各フリップフロップの出
力にラッチされることとなる。
【0066】
【表8】
【0067】復号化時には、表4のように右側の列から
処理が実行されるため、表9左に示すように、データが
配列される。
【0068】
【表9】
【0069】表6と同様のローテートシフトを行うため
には、表9の右に示すように、1行目をそのままとし、
2行目を右1Byteローテートシフト、3行目を右2Byte
ローテートシフト、4行目を右3Byteローテートシフト
することとなる。
【0070】したがって、前述した暗号化時におけるSh
ift Row変換時と同様に、中間値レジスタ兼Shift Row変
換回路の各セレクタのセレクタ位置を設定して、表8に
示すような暗号化時におけるローテートシフト処理と全
く同じ処理を実行することにより、復号化時におけるSh
ift Row変換処理を実行することが可能となる。
【0071】このことにより、同一の中間値レジスタ兼
Shift Row変換回路で暗号化時および復号化時におけるS
hift Row変換処理を共用することができる。 〈Mix Column変換回路〉この実施形態で採用されるMix
Column変換回路の一例を図6に示す。
【0072】このMix Column変換回路は4つの第1演算
器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回路が設けられている。
【0073】(a0j,a1j,a2j,a3j)で構成される第j番
目の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進数である。
【0074】このようなMix Column変換処理を実行する
ために、Column単位の32ビットデータをそれぞれ第1
演算器351〜第4演算器354に入力して、第1乗算
器〜第4乗算器による乗算およびEXOR回路による演算を
行う。
【0075】各演算器351〜354に設けられる乗算
器361〜364は、暗号化および復号のいずれの場合
にも共通に使用することができるように、暗号化時の係
数および復号化時の係数を備えており、演算時に選択す
ることが可能に構成されている。
【0076】第1演算器351の第1乗算器361で
は、入力されるデータに対して0x02倍または0x0E倍のい
ずれかの乗算が可能となっている。第2乗算器362で
は、入力されるデータに対して0x03倍または0x0B倍のい
ずれかの乗算が可能となっている。第3乗算器363で
は、入力されるデータに対して0x01倍または0x0D倍のい
ずれかの乗算が可能となっている。第4乗算器364で
は、入力されるデータに対して0x01倍または0x09倍のい
ずれかの乗算が可能となっている。
【0077】第2演算器352の第1乗算器では、入力
されるデータに対して0x01倍または0x09倍のいずれかの
乗算が可能となっている。第2乗算器では、入力される
データに対して0x02倍または0x0E倍のいずれかの乗算が
可能となっている。第3乗算器では、入力されるデータ
に対して0x03倍または0x0B倍のいずれかの乗算が可能と
なっている。第4乗算器では、入力されるデータに対し
て0x01倍または0x0D倍のいずれかの乗算が可能となって
いる。
【0078】第3演算器353の第1乗算器では、入力
されるデータに対して0x01倍または0x0D倍のいずれかの
乗算が可能となっている。第2乗算器では、入力される
データに対して0x01倍または0x09倍のいずれかの乗算が
可能となっている。第3乗算器では、入力されるデータ
に対して0x02倍または0x0E倍のいずれかの乗算が可能と
なっている。第4乗算器では、入力されるデータに対し
て0x03倍または0x0B倍のいずれかの乗算が可能となって
いる。
【0079】第4演算器354の第1乗算器では、入力
されるデータに対して0x03倍または0x0B倍のいずれかの
乗算が可能となっている。第2乗算器では、入力される
データに対して0x01倍または0x0D倍のいずれかの乗算が
可能となっている。第3乗算器では、入力されるデータ
に対して0x01倍または0x09倍のいずれかの乗算が可能と
なっている。第4乗算器では、入力されるデータに対し
て0x02倍または0x0E倍のいずれかの乗算が可能となって
いる。
【0080】このような第1演算器351〜第4演算器
354の第1乗算器〜第4乗算器の各係数を暗号化時お
よび復号化時において変更することにより、暗号化時と
復号化時における回路構成を共通に使用することが可能
となる。 〈Mix Column変換回路の乗算器〉Mix Column変換回路中
に含まれる乗算器の一例を図7に示す。
【0081】入力される8ビットデータ(a7,a6,a5,a4,
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が設けられてい
る。
【0082】このような構成により、係数(b3,b2,b1,b
0)として、暗号化時における係数と復号化時における
係数とを選択的にセットすることでMix Column変換処理
を暗号化時と復号化時において共通に使用することがで
きる。
【0083】(b3,b2,b1,b0)としてセットされる係数
は、前述したように、各乗算器について2つずつ設定さ
れている。各乗算器における係数の組み合わせは、(0x
02,0x0E),(0x03,0x0B),(0x01,0x0D),(0x01,0x0
9)の4通りであり、これを下位4ビットで表示する
と、(0010,1110),(0011,1011),(0001,1101),
(0001,1001)となる。このような係数において共通す
るビットの演算は部分積の制御を行わず、異なるビット
の演算は加算処理を制御することで、回路規模を小さく
することが可能である。
【0084】たとえば、係数が(0x01,0x0D)の組み合
わせの場合、2進数で表現すると(0001,1101)とな
り、上位2ビットの部分積の加算結果を下位2ビットの
部分積に加算するか否かを制御することで、2つの係数
を選択して乗算することが可能となる。係数(0x01,0x0
D)の組み合わせの場合における回路構成の例を図8に
示す。
【0085】図8では、入力される8ビットデータ(a
7,a6,a5,a4,a3,a2,a1,a0)に対し、1ビットシフトさせ
て加算処理を実行する第1加算器381が設けられてい
る。第1加算器381の出力は、制御ロジック382を
介して第2加算器383に入力されている。この第2加
算器383は、係数の最下位ビットによる部分積演算結
果を加算するものであって、入力される8ビットデータ
に対して3ビットシフトさせて加算処理を実行するよう
に構成されている。
【0086】加算器383の演算結果と第1加算器38
1および第2加算器383でオーバーフローしたキャリ
ーが入力され、除数により除算される除算器384が設
けられている。
【0087】制御ロジック382は、係数が0x01である
場合には、上位2ビットの演算結果である第1加算器3
81の出力を第2加算器383に出力しない。また、制
御ロジック382は、係数が0x0Dである場合には、上位
2ビットの演算結果である第1加算器381の出力を第
2加算器383に出力するように構成される。
【0088】ここでの乗算は既約多項式M(x)=x8+x4
+x3+x+1とするGF(28)上での乗算であり、加
算はGF(2)上での加算であるため、排他的論理和演
算で実現することが可能である。
【0089】このように、2つの係数の異なるビットに
おける部分積の加算処理を制御することにより回路規模
を小さくすることができ、回路規模を削減することが可
能となる。 〈鍵スケジュール部〉鍵スケジュール部の回路構成の一
例を図9に示す。
【0090】この鍵スケジュール部は、主に、拡大鍵生
成ロジック部101、拡大鍵レジスタ120および鍵入
力レジスタ131とから構成されている。鍵入力レジス
タ131は、8個の32ビットレジスタk0〜k7から構成
される256ビットのレジスタであり、レジスタk0から
順に暗号鍵が32ビット毎に格納される。暗号鍵が25
6ビットの場合にはレジスタk0〜k7全てにデータが格納
され、暗号鍵が192ビットの場合にはレジスタk0〜k5
にデータが格納され、暗号鍵が128ビットの場合には
レジスタk0〜k3にデータが格納される。
【0091】鍵入力レジスタ131には、各レジスタk0
〜k7のうちいずれか1つの値を選択的に出力するセレク
タ132が接続されている。このセレクタ132は、鍵
入力レジスタ131の256ビットデータから32ビッ
トのデータを選択して拡大鍵レジスタ120の最下位に
入力するものである。
【0092】拡大鍵レジスタ120は、32ビット単位
での処理が可能な8個のフリップフロップ121〜12
8が順次接続されたシフトレジスタで構成されている。
最下位に位置するフリップフロップ128には、セレク
タ132の出力と拡大鍵生成ロジック部101の出力を
選択するセレクタ113の出力が入力される。フリップ
フロップ128の出力W7KEYは、フリップフロップ12
7に入力されている。フリップフロップ127の出力W6
KEYは、フリップフロップ126の前段にあるセレクタ
112に入力されている。セレクタ112には、フリッ
プフロップ127の出力W6KEYと拡大鍵生成ロジック1
01の出力とが入力されており、いずれか一方をフリッ
プフロップ126に入力するように構成されている。
【0093】フリップフロップ126の出力W5KEYは、
フリップフロップ125に入力されている。フリップフ
ロップ125の出力W4KEYは、フリップフロップ124
の前段にあるセレクタ111に入力されている。セレク
タ111には、フリップフロップ125の出力W4KEYと
拡大鍵生成ロジック101の出力とが入力されており、
いずれか一方をフリップフロップ124に入力するよう
に構成されている。
【0094】フリップフロップ124の出力W3KEYは、
フリップフロップ123に入力されている。フリップフ
ロップ123の出力W2KEYは、フリップフロップ122
に入力されている。フリップフロップ122の出力W1KE
Yは、フリップフロップ121に入力されている。
【0095】拡大鍵生成ロジック部101は、拡大鍵生
成用定数Rconが格納されているROM102、ROM1
02から読み出される値と読出信号RCON#ENとの論理積
演算を行うAND回路103、拡大鍵レジスタ120の最
上位に位置するフリップフロップ121の出力W0KEYとA
ND回路103の出力が入力されて排他的論理和演算を実
行するEXOR回路104を含んでいる。
【0096】また、拡大鍵生成ロジック部101は、フ
リップフロップ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を備え
ている。
【0097】このように構成される鍵スケジュール部で
は、ラウンドファンクション部のRound Key加算処理
に用いる拡大鍵の生成、暗号化時における鍵入力レジ
スタの書き換えと、暗号化と復号化終了に伴う拡大鍵初
期値のセットアップ、復号化時の鍵入力レジスタの書
き換えに伴う拡大鍵初期値のセットアップなどの機能を
備える。
【0098】ラウンドファンクション部の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の順に拡大鍵の生成を行
うように構成する。
【0099】
【表10】
【0100】ここで、暗号化時の拡大鍵W08は、W08=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で拡大鍵を生成することが可能
である。これにより、復号化時もすべての拡大鍵をメモ
リに格納しておく必要はなく、各ラウンドで必要な拡大
鍵だけを生成しながら、復号処理を行うことが可能とな
る。
【0101】まず、ラウンドファンクション部でのRoun
d Key加算用拡大鍵の生成について説明する。表10に
示すように各ラウンドのRound Key加算で4個の拡大鍵(3
2bit単位)が使用され、拡大鍵はラウンドファンクショ
ンのMix Column変換 + Round Key加算のバックグラウン
ドで演算されるため4個の拡大鍵は4サイクルで作成すれ
ばよい。このため図9に示すような回路構成において、
1サイクルで1個の拡大鍵を生成する構成となってい
る。拡大鍵レジスタ120はシフトレジスタで構成され
ており、ラウンドファンクション部で使用される現在の
拡大鍵は、フリップフロップ121の出力W0KEYを用い
る。
【0102】拡大鍵生成ロジック部101のセレクタ1
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に示すように格納されてい
る。
【0103】
【表11】
【0104】
【表12】
【0105】
【表13】
【0106】
【表14】
【0107】表10に示すように、鍵長が256ビット
である場合の各演算について回路動作を説明する。な
お、ラウンドファンクション動作前に、鍵入力レジスタ
131の各レジスタk0〜k7の値をロードすることによっ
て、No.00〜07からの初期値が拡大鍵レジスタ120の
各フリップフロップ121〜128にセットされている
ものとする。
【0108】暗号化時における拡大鍵W08は、表10に
示されているように、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)に入力されている。
【0109】ROM102のRconアドレスを"1"にし、AND
回路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]の演算が行われる。
【0110】次に、拡大鍵W09=W01^W08の演算処理を説
明する。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
に入力される。
【0111】よって、EXOR回路110では、W09=W01^W0
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)の演算が行われる。
【0112】以上の要領で全ての拡大鍵について演算が
行われる。次に、暗号化時の鍵入力レジスタ131の書
換えと、暗号化と復号化終了に伴う拡大鍵初期値のセッ
トアップについて説明する。このセットアップ動作は、
次の暗号化もしくは復号化に備え、鍵入力レジスタ13
1に格納されている拡大鍵初期値を拡大鍵レジスタ12
0に転送する動作である。
【0113】鍵入力レジスタ131にセットされた拡大
鍵初期値は、セレクタ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の順
番である。
【0114】復号化時の鍵入力レジスタ131の書換え
に伴う拡大鍵初期値のセットアップについて説明する。
表10のように、復号化においては、拡大鍵初期値を暗
号化での最終拡大鍵のセット(W59〜W52)とする必要があ
る。鍵入力レジスタ131の書換えにより、鍵入力レジ
スタ131にセットされたデータを前述した方法で、一
旦、拡大鍵レジスタ120に転送し、暗号化の拡大鍵生
成論理に従い、最終拡大鍵のセット(W52〜W59)まで図
9の回路を動作させる。
【0115】この最終拡大鍵のセットの生成期間に、W5
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変換処理を実行しているため、こ
れらの処理回路を共用化することが考えられる。
【0116】たとえば、図9に示す鍵スケジュール部に
設けられる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に接続する。
【0117】Sub Byte回路108を用いてByte Sub変換
処理を行う場合には、表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に示すような回路を提案する。
【0118】図10に示すByte Sub変換回路391は、
復号化用行列演算回路392と、セレクタ393、逆数
演算回路394、暗号化用行列演算回路395、セレク
タ396とで構成されている。
【0119】セレクタ393は、入力データと復号化用
行列演算回路392の出力が入力されておりいずれか一
方を逆数演算回路394に入力するように構成されてい
る。また、セレクタ396は、逆数演算回路394の出
力と暗号化用行列演算回路395の出力が入力されてお
り、いずれか一方を出力するように構成されている。
【0120】暗号化時には、セレクタ393を入力デー
タ側にし、セレクタ396を暗号化用行列演算回路39
5側にする。また、復号化時には、セレクタ393を復
号化用行列演算回路392側にし、セレクタ396を逆
数演算回路394側にする。このことにより、暗号化時
におけるByte Sub変換処理と、復号化時におけるByteSu
b変換処理とを共通の回路構成で実現することが可能と
なる。
【0121】暗号化時における行列演算処理は、次のよ
うな数1で表される。
【0122】
【数1】
【0123】これを展開すると、次に示す数2のように
表すことができる。ただし、ここでの”+”は排他的論
理和演算で構成される。
【0124】
【数2】
【0125】また、復号化時における行列演算処理は、
次のような数3で表される。
【0126】
【数3】
【0127】これを同様に展開すると、次に示す数4の
ように表すことができる。
【0128】
【数4】
【0129】暗号化用行列演算回路の一例を図11に示
す。ここでは、8ビットの入力レジスタ401、出力レ
ジスタ403および排他的論理和と否定で構成される論
理回路402で構成される。暗号化時において数2に示
すような排他的論理和演算を実行するためには、論理回
路402内の排他的論理和回路のうち、重複する演算処
理を共用化することで16個のEXORと4個のNOTを組
み合わせることにより実現することが可能となる。
【0130】復号化用行列演算回路の一例を図12に示
す。暗号化用行列演算回路と同様に、8ビットの入力レ
ジスタ405、出力レジスタ407および排他的論理和
と否定で構成される論理回路406で構成されている。
ここでも暗号化用行列演算回路と同様に、復号化時にお
いて数4に示すような排他的論理和演算を実行するため
に、論理回路406内の排他的論理和回路のうち、重複
する演算処理を共有化することで13個のEXOR回路と2
個のNOTを組み合わせることで実現することが可能と
なる。
【0131】暗号化用行列演算回路の他の例を図13に
示す。この暗号化用行列演算回路は、入力レジスタ41
1、出力レジスタ414、定数保持用レジスタ413お
よび排他的論理回路で構成される論理回路412を備え
ている。入力レジスタ411、出力レジスタ414、定
数保持用レジスタ413は、いずれも8ビットのシフト
レジスタで構成されており、クロックに同期して1ビッ
トずつ右にローテートシフトする。
【0132】数1の右辺第1項の定数は、1つの行が3
つの"0"と5つの"1"でなり、1つずつシフトするように
構成されている。これから、入力レジスタ411のx0,x
4,x5,x6,x7の各ビットをローテートシフトさせながら論
理回路412に入力してEXOR演算を実行することで、数
1の右辺第1項の行列演算を行うことができる。
【0133】また、定数保持用レジスタ413には、下
位ビットから順に数1右辺第2項の定数がセットされて
いる。定数保持用レジスタ413の値をローテートシフ
トさせながら最下位ビットの値を論理回路412に入力
しEXOR演算を実行することで、数1右辺第2項の行列演
算を行うことができる。
【0134】このことにより、入力レジスタ411にデ
ータがセットされると、最初のクロックでy0が演算され
て出力レジスタ414に格納される。次のクロックで
は、y1が演算されて出力レジスタ414に格納され、以
下順次演算処理を実行して8クロックで(y7,y6,y5,y4,
y3,y2,y1,y0)の演算が完了する。この場合の論理回路
412は5個のEXOR回路で数2の演算処理を実行するこ
とが可能となる。
【0135】これと同様に構成した復号化用行列演算回
路の他の例を図14に示す。この復号化用行列演算回路
は、入力レジスタ415、出力レジスタ418、定数保
持用レジスタ417および排他的論理回路で構成される
論理回路416を備えている。入力レジスタ415、出
力レジスタ418、定数保持用レジスタ417は、いず
れも8ビットのシフトレジスタで構成されており、クロ
ックに同期して1ビットずつ右にローテートシフトす
る。
【0136】数3の右辺第1項の定数は、1つの行が5
つの"0"と3つの"1"の組み合わせでなり、1つずつシフ
トするように構成されている。これから、入力レジスタ
415のx2,x5,x7の各ビットをローテートシフトさせな
がら論理回路416に入力してEXOR演算を実行すること
で、数3の右辺第1項の行列演算を行うことができる。
【0137】また、定数保持用レジスタ417には、下
位ビットから順に数3右辺第2項の定数がセットされて
いる。定数保持用レジスタ417の値をローテートシフ
トさせながら最下位ビットの値を論理回路416に入力
しEXOR演算を実行することで、数3右辺第2項の行列演
算を行うことができる。
【0138】このことにより、入力レジスタ415にデ
ータがセットされると、最初のクロックで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セレクタとを備えること
を特徴とする暗号回路。
【0139】(付記2)前記実行ブロック長は8の倍数
ビットである付記1に記載の暗号回路。 (付記3)前記処理ブロック長が128ビットであり、
前記実行ブロック長が32ビットである付記1または2
に記載の暗号回路。
【0140】(付記4)前記暗号鍵の鍵長が128ビッ
ト、192ビット、256ビットのうちのいずれかであ
る付記1〜3に記載の暗号回路。
【0141】(付記5)前記Byte Sub変換回路は、入力
データに対して行列演算を実行する復号化用行列演算部
と、入力データと前記復号化用行列演算部の出力とのう
ちいずれかを出力する第3セレクタと、前記第3セレク
タから出力されるデータに対して逆数演算を実行する逆
数演算部と、前記逆数演算部から出力されるデータに対
して行列演算を実行する暗号化用行列演算部と、前記逆
数演算部の出力と前記暗号化用行列演算部の出力のうち
いずれか一方を出力する第4セレクタとを備える付記1
〜4のいずれかに記載の暗号回路。
【0142】(付記6)前記復号化用行列演算部と前記
暗号化行列演算部は、1クロックで8ビットの演算を行
うようにEXOR回路を接続している付記5に記載の暗号回
路。
【0143】(付記7)前記復号化行列演算部と前記暗
号化行列演算部は、1クロックで1ビットの演算を行う
ようにEXOR回路を接続している付記5に記載の暗号回
路。
【0144】(付記8)前記中間レジスタ兼Shift Row
変換回路に入力されるデータのシフト量に関するシフト
データを暗号化時と復号化時において逆順に入力するこ
とにより、前記中間レジスタ兼Shift Row変換回路を暗
号化と復号化に共通に使用する、付記1〜7のいずれか
に記載の暗号回路。
【0145】(付記9)前記Mix Column変換回路は、乗
数固定の複数の乗算器と前記複数の乗算器の排他的論理
和を演算するEXOR回路とを備え、各乗算器に入力される
データと各乗算器に設定された乗数との間で行列演算を
実行する、付記1〜8のいずれかに記載の暗号回路。
【0146】(付記10)前記Mix Column変換回路は、
8ビット単位で演算が可能な4つの乗算器と前記4つの
乗算器の出力に基づいて排他的論理和演算を実行するEX
OR回路とを有する演算器を4つ備える付記9に記載の暗
号回路。
【0147】(付記11)前記乗算器が、2つの乗数を
制御可能であり暗号化と復号化に共通に使用される付記
9または10に記載の暗号回路。
【0148】(付記12)前記乗算器は、上位ビットか
らの加算値を制御するように構成される、付記11に記
載の暗号回路。
【0149】(付記13)暗号鍵を前記実行ブロック長
に応じたビット数に分割して出力する第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のいずれかに記載の暗号回
路。
【0150】(付記14)前記シフトレジスタは、32
ビット単位でデータ処理を実行する8個のフリップフロ
ップ回路を備え、前記第6セレクタは、前記フリップフ
ロップのうち下から2段目、4段目、6段目、8段目の
フリップフロップの出力が入力され、いずれか1つを出
力するように構成されている付記13に記載の暗号回
路。
【0151】(付記15)前記第7セレクタに前記中間
レジスタ兼Shift Row変換回路の出力が入力され、前記S
ub Byte処理回路の出力を前記第2セレクタに入力する
ことにより、前記Sub Byte処理回路と前記Round処理部
のByte Sub変換回路とを共用する、付記13または14
に記載の暗号回路。
【0152】
【発明の効果】本発明によれば、特定処理回路の処理デ
ータを所定の実行ブロック長に細分化することにより、
AESブロック暗号アルゴリズムをコンパクトな回路で
実行可能となる。また、暗号化時における処理回路と復
号化時における処理回路を共有化するとともに、鍵スケ
ジュール部とラウンドファンクション部の回路の一部を
共有化することでさらに回路規模を小さくすることが可
能となる。、
【図面の簡単な説明】
【図1】RijndaelアルゴリズムによるAESの処理ブロ
ック図。
【図2】鍵スケジュールのプログラムリスト。
【図3】想定される回路実装の例を示すブロック図。
【図4】本発明の1実施形態に採用されるラウンドファ
ンクション部のブロック図。
【図5】中間レジスタ兼Shift Row変換回路のブロック
図。
【図6】Mix Column変換回路のブロック図。
【図7】乗算器の構成を示すブロック図。
【図8】乗算器の他の構成を示すブロック図。
【図9】鍵スケジュール部のブロック図。
【図10】Byte Sub変換回路のブロック図。
【図11】暗号化用行列演算回路のブロック図。
【図12】復号化用行列演算回路のブロック図。
【図13】暗号化用行列演算回路の他の例を示すブロッ
ク図。
【図14】復号化用行列演算回路の他の例を示すブロッ
ク図。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 林 朋弘 神奈川県横浜市港北区新横浜2丁目15番16 号 株式会社富士通コンピュータテクノロ ジ内 (72)発明者 出口 千佳広 神奈川県横浜市港北区新横浜2丁目15番16 号 株式会社富士通コンピュータテクノロ ジ内 (72)発明者 藤原 由実 神奈川県横浜市港北区新横浜2丁目15番16 号 株式会社富士通コンピュータテクノロ ジ内 Fターム(参考) 5J104 AA18 JA03 NA02 NA22

Claims (5)

    【特許請求の範囲】
  1. 【請求項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. 【請求項2】前記Byte Sub変換回路は、入力データに対
    して行列演算を実行する復号化用行列演算部と、入力デ
    ータと前記復号化用行列演算部の出力とのうちいずれか
    を出力する第3セレクタと、前記第3セレクタから出力
    されるデータに対して逆数演算を実行する逆数演算部
    と、前記逆数演算部から出力されるデータに対して行列
    演算を実行する暗号化用行列演算部と、前記逆数演算部
    の出力と前記暗号化用行列演算部の出力のうちいずれか
    一方を出力する第4セレクタとを備える請求項1に記載
    の暗号回路。
  3. 【請求項3】前記中間レジスタ兼Shift Row変換回路に
    入力されるデータのシフト量に関するシフトデータを暗
    号化時と復号化時において逆順に入力することにより、
    前記中間レジスタ兼Shift Row変換回路を暗号化と復号
    化に共通に使用する、請求項1または2に記載の暗号回
    路。
  4. 【請求項4】前記Mix Column変換回路は、乗数固定の複
    数の乗算器と前記複数の乗算器の排他的論理和を演算す
    るEXOR回路とを備え、各乗算器に入力されるデータと各
    乗算器に設定された乗数との間で行列演算を実行する、
    請求項1〜3のいずれかに記載の暗号回路。
  5. 【請求項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のいずれかに記載の暗号回路。
JP2001195752A 2001-06-28 2001-06-28 暗号回路 Expired - Fee Related JP3851115B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (17)

* Cited by examiner, † Cited by third party
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