All rights are reserved and copyright of this manuscript belongs to the authors. This manuscript has been published without reviewing and editing as received from the authors: posting the manuscript to SCIS 2011 does not prevent future submissions to any journals or conferences with proceedings. SCIS 2011 The 2011 Symposium on Cryptography and Information Security Kokura, Japan, Jan. 25-28, 2011 The Institute of Electronics, Information and Communication Engineers 128 ビットブロック暗号 CLEFIA の小型ハードウェア実装評価 Compact Hardware Implementations of the 128-bit Blockcipher CLEFIA 秋下 徹 ∗ Toru Akishita 樋渡 玄良 ∗ Harunaga Hiwatari あらまし 128 ビットブロック暗号 CLEFIA は高いハードウェア実装効率を持ったブロック暗号であ ることが知られている.本稿では, CLEFIA のハードウェア実装の更なる小型化を目指して, 128 ビット 鍵の CLEFIA に対して 8 ビット・シリアルアーキテクチャに基づいた実装を行ない, 0.13 µm CMOS 標 準セルライブラリを用いてその実装性能を評価した.その結果, 暗号化実装において 2.9 kGE 以下, 暗復 号実装において 3.0 kGE 以下というゲート規模の評価が得られた.これらの数値は AES の最小実装を 下回る数値であり, CLEFIA のハードウェア実装における小型実装性能を示している. キーワード ブロック暗号, CLEFIA, ハードウェア実装 1 スタ による 8 ビット・シリアルアーキテクチャの設計 はじめに を行なった.CLEFIA では, AES で行列演算を行う際に CLEFIA [4, 5] はブロック長 128 ビット, 鍵長 128, 192, 256 ビットに対応した, AES [1] と入出力仕様の互 換性を持つブロック暗号である.CLEFIA には最新の研 究成果や設計手法が盛り込まれており, 既存の攻撃法に 対して十分な安全性を有しつつ, ハードウェア・ソフト ウェアを問わず効率的な実装が可能である.特に, ハー ドウェア実装については顕著な性能を発揮していること が, 数値データにより示されている [6, 7, 8]. ブロック長分のレジスタとは別に追加される 24 ビット 分のレジスタが不要となることを示す.また, 復号処理 の場合に偶数ラウンド目の F 関数 F0 と F1 の処理順を 入れ替えることにより, 暗号化実装のデータパスをほと んど変えずに暗復号とも実装可能となることを示す.こ れらの実装手法を適用することにより 0.13 µm CMOS 標準セルライブラリを用いた評価において 2, 893 GE で 暗号化実装が, 2, 996 GE で暗復号実装が可能となった. 一方, RFID のような実装上の制約条件の高い環境下 これらの数値は 128 ビット鍵の CLEFIA に対する既 では暗号プリミティブに使用可能なゲート規模は 250 − 存のハードウェア実装の中で最小の数値である.また, 4, 000 GE 程度であるとの報告もあり [9], より小さな ゲート規模で実装可能であることも重要となる.実際に AES は 2005 年に Feldhofer らによって RAM を用いた 実装アーキテクチャが提案されており, 暗復号のサポート Feldhofer らや Hämäläinen らの実装を下回る数値であ り, CLEFIA のハードウェア実装における小型実装性能 を示している. 以下, まず第 2 節にて 128 ビット鍵 CLEFIA のアル で 3.4 kGE で実装可能であることが報告されている [2]. ゴリズム概要, 第 3 節にて AES の Hämäläinen らの小 また, 2006 年には Hämäläinen らによりシフトレジスタ 型実装について述べる.次に, 第 4 節にて 8 ビット・シ を用いたシリアルアーキテクチャが提案されている [3]. リアルアーキテクチャを用いた CLEFIA 小型暗号化実 暗号化のみのサポートではあるが, 入出力を除くと 160 装について, 第 5 節にて CLEFIA 小型暗復号実装につ サイクルと比較的高速で処理を行ないながらも 3.1 kGE いて述べる.その後, 第 6 節にて ASIC による実装性能 で実装可能であることが示されている. 評価について述べ, 最後に第 7 節にてまとめを行なう. そこで, 本稿ではハードウェア実装の更なる小型化を 目指して, 128 ビット鍵の CLEFIA に対してシフトレジ ∗ 2 128 ビット鍵 CLEFIA 128 ビット鍵 CLEFIA のアルゴリズムの概要を述べ ソニー株式会社, 〒 141-0001, 東京都品川区北品川 5-1-12 御殿山 Tec, Sony Corporation, Gotenyama Tec. 5-1-12 Kitashinagawa Shinagawa-ku, Tokyo, 141-0001. る.詳細については, 文献 [4, 5] を参照されたい. 1 P0 P1 P2 32/ 32/ RK0 k0 k1 k2 k 3 P3 8/ 8/ 8/ 8/ 32/ 32/ RK1 WK0 F0 WK1 F1 RK2 RK3 F0 F1 x0 8 x1 8 x2 8 x3 8 / / S0 8 y0 S1 8 y1 S0 8 y2 S1 8 y3 8 y0 8 y1 S1 8 y2 S0 8 y3 / M0 / / / / / F0 k 0 k1 k 2 k 3 RK4 RK5 F0 F1 .. . .. . 8/ 8/ 8/ 8/ .. . . .. RK2r−2 RK2r−1 F0 F1 x0 8 S1 x1 8 S0 / / x2 8 x3 8 / M1 / / / / / F1 WK2 32/ 32/ C0 C1 図 2: F 関数 F0 , F1 WK3 32/ C2 32/ 128 bits C3 7 57 57 7 図 1: CLEFIA のデータ処理部 57 2.1 データ処理部 これらは各要素 hij (0 ≤ i, j ≤ 3) が 8 ビットの 4 × 4 Hadamard-type 行列であり, その要素は 4 つの 8 ビ ット値 a0 , a1 , a2 , a3 を用いて hij = ai⊕j として表現 できる.これらの行列, ベクトル間の乗算は原始多項式 z 8 + z 4 + z 3 + z 2 + 1 で定義される GF(28 ) 上の演算と して定義される. F 関数 F0 , F1 は, それぞれが 4 つの 8 ビット入出力 S-box と 1 つの拡散行列から構成されている.これらの F 関数は S-box としても 2 つの異なる S-box を使用し ており, 1 つはランダムに選択された 4 つの 4 ビット入 出力 S-box をベースにした S-box S0 であり, もう 1 つ 2.2 RKj (0 ≤ j < 2r) を出力する.この鍵スケジュール部 る.F 関数 F0 ではこれらの S-box を S0 , S1 , S0 , S1 の は (1) 秘密鍵 K より中間鍵 L を生成, (2) K と L より 順に配置し, 拡散行列として M0 を使用する.もう 1 つ W Ki , RKj を生成, という 2 つの処理より構成される. (1) では, データ処理部と同様の関数を用い, 入力とし て秘密鍵 K, ラウンド鍵として定数 CON を用い, 出 の F 関数 F1 では S-box を S1 , S0 , S1 , S0 と F0 とは異 なる順に配置し, 拡散行列も F0 で使用されているもの とは異なる M1 を使用する.図 2 に F 関数 F0 , F1 を 力として中間鍵 L を得る.この変換では 128 ビット鍵 それぞれ示す.拡散行列 M0 , M1 は以下のように定義さ れる.なお, 行列内の要素は 16 進数表現である. 04 06 01 02 06 04 , 02 01 01 08 M1 = 02 0A 08 01 0A 02 02 0A 01 08 鍵スケジュール部 CLEFIA の鍵スケジュール部は, 秘密鍵を入力とし, ホワイトニング鍵 W Ki (0 ≤ i < 4), およびラウンド鍵 は GF(28 ) 上の逆元演算をベースにした S-box S1 であ 02 01 06 04 57 図 3: DoubleSwap 関数 Σ CLEFIA のデータ処理部は 4 系列の Type-2 一般化 Feistel 構造 [10] を採用しており, 1 ラウンドで 2 つの 異なる 32 ビット入出力 F 関数 F0 , F1 を使用する.ラ ウンド数 r は使用する鍵長に応じて決まっており, 128 ビット鍵の場合は 18 となっている.図 1 に CLEFIA の データ処理部を示す. 01 02 M0 = 04 06 7 7 の場合は, データ処理部と同じ 4 系列の Type-2 一般化 0A 02 . 08 01 2 Feistel 構造を 12 ラウンド実行する.(2) では, 中間鍵 L を DoubleSwap 関数 Σ と呼ばれる置換関数を用いて 順次変換し, 秘密鍵 K, 定数 CON と混ぜ合わせること により, ホワイトニング鍵 W Ki , ラウンド鍵 RKj を生 る.CLEFIA は第 2 節で述べたように, 鍵スケジュール :1 2 R0 R4 1: 2 R1 R5 :1 2 R2 R6 パラレル・シリアル 変換回路 R3 0 2 :1 0 2 :1 0 0 部において DoubleSwap 関数と呼ばれるビット単位の 置換関数を含んでいる.従って, Feldhofer らの実装のよ うな RAM を用いたアーキテクチャでは, DoubleSwap 関数を用いてラウンド鍵 RKj を生成するために必要な a 2 :1 2 :1 サイクル数または回路規模が増大すると考えられる.そ i こで, 我々は Hämäläinen らの実装と同様に, シフトレ ジスタを用いた 8 ビット・シリアルアーキテクチャの設 {02} 計を行なった. MixColumns 演算回路 4.1 CLEFIA は第 2 節で述べたように 2 種類の拡散行列 M0 , M1 を用いている.M0 , M1 は, AES の MixColumns が 4×4 の巡回型行列であるのに対し, 4×4 の Hadamardtype 行列となっている.また, CLEFIA は SP 型の一般 化 Feistel 構造であるため, 図 5 (a) に示すように F 関 数 F0 内の行列 M0 の出力は隣の系列のデータと XOR されることになる.まず,この XOR と行列演算回路の XOR を共有することにより回路規模の削減を図る. 図 5 (b) に行列演算回路のデータパス, (c) に F0 を演 算する際にレジスタ Ri (0 ≤ i ≤ 3) に格納されるデー タを示す.1 サイクル目には S-box S0 の出力 a0 をぞ れぞれ {01}, {02}, {04}, {06} 倍したデータと, データ z0 , z1 , z2 , z3 が XOR され, それぞれレジスタ R3 , R2 , R1 , R0 に格納される.2 − 4 サイクル目には S-box の 出力 ai (i = 1, 2, 3) をそれぞれ {01}, {02}, {04}, {06} 倍したデータとセレクタ 2 を通して選択されたデータ が XOR され, それぞれレジスタ R3 , R2 , R1 , R0 に格 納される.図 5 (c) に示すように, 4 サイクル後には Ri にはそれぞれ wi が格納される.また, 行列演算回路の セレクタ 1 を切り替えることにより F 関数 F1 内の行 列 M1 の処理を行なうことも可能となる. 図 4 に示した AES の MixColumns 回路と比較する と, セレクタ 1 が追加され, セレクタ 2 が 2 入力セレ クタから 3 入力セレクタに変更されている.セレクタ 1 の追加は CLEFIA が 2 種類の行列 M0 , M1 を使用 しているためで, セレクタ 2 の変更は行列 M0 , M1 が 図 4: Hämäläinen 実装 MixColumns 演算 成する.DoubleSwap 関数 Σ は, 128 ビット入出力の置 換関数であり, 高い攪拌性能と効率的な実装が可能とい う特長を併せ持つ.この DoubleSwap 関数 Σ を図 3 に 示す. 3 行列演算の実装手法 Hämäläinen らの AES 小型実装 Hämäläinen らは低コスト, 低消費電力のデバイスに 適した 128 ビット鍵 AES の小型暗号化コアを目指して, シフトレジスタを用いた 8 ビット・シリアルアーキテク チャを提案した [3].Feldhofer らの実装 [2] が RAM を 用いた実装アーキテクチャであるのに対して, シフトレ ジスタを用いることにより, 入出力を除くと 160 サイク ルと比較的高速で処理を行ないながらも 3.1 kGE で実 装可能であることが示されている. データ処理回路には S-box 演算回路が 1 つのみ配置 されており, AES 1 ラウンド分の処理を 16 サイクル かけて実行する.MixColumns 演算を行なうために 4 サイクル連続で S-box の出力を MixColumns 演算回路 に入力する.図 4 に MixColumns 演算回路を示す.図 内のデータ幅は 8 ビットとなっている.S-box の出力 ai (0 ≤ i ≤ 3) は順に MixColumns 演算回路に入力さ れ, 4 サイクル後に MixColumns 演算の出力がレジスタ R0 , R1 , R2 , R3 に格納される.しかしながら, 次のサイ クルでは別の MixColumns 演算用の S-box の出力が入 Hadamard-type 行列であることによる.また, AES の MixColumns 回路と異なり, パラレル・シリアル変換回 力されるため R1 , R2 , R3 に格納されているデータはパ 路が不要となる.レジスタ Ri に wi が格納された後, 次 ラレル・シリアル変換回路内にあるレジスタ R4 , R5 , R6 の F 関数の処理を行なうために新たに zi および a0 が に一旦移され, 順に出力されることになる.従って, ブ 行列演算回路に入力されるが, zi は入力された後不要と ロック長 128 ビット以外に 8 ビットのレジスタが 3 本 なり, zi が格納されていたレジスタに wi を格納するこ の計 24 ビット分のデータレジスタが必要となる. とが可能となるからである.従って, 8 ビット・シリア 4 た場合には, AES と異なりブロック長 128 ビット以外 ルアーキテクチャで CLEFIA のデータ処理部を実装し CLEFIA 小型暗号化実装 のデータレジスタは不要となり, 更なる回路規模の削減 本節では, 8 ビット・シリアルアーキテクチャを用いた が可能となる. 128 ビット鍵 CLEFIA の小型暗号化実装について述べ 3 セレクタ 2 k0 k1 k2 k3 S0 x0 x1 S1 x2 S0 x3 S1 a0 1 z3 ⊕{06}a0 z2 ⊕{04}a0 z1 ⊕{02}a0 z0 ⊕{01}a0 R1 a1 a2 M0 R2 a3 (a) cycle R0 R1 R2 R3 R0 z0 z1 z2 z3 R3 w0 w1 w2 w3 2 z2 ⊕{04}a0 ⊕{06}a1 z3 ⊕{06}a0 ⊕{04}a1 z0 ⊕{01}a0 ⊕{02}a1 z1 ⊕{02}a0 ⊕{01}a1 z3 3 :1 z2 3 :1 z1 3 :1 z0 3 :1 セレクタ 1 :1 2 :1 2 {02} {02} :1 2 {02} ai (b) 3 z1 ⊕{02}a0 ⊕{01}a1 ⊕{06}a2 z0 ⊕{01}a0 ⊕{02}a1 ⊕{04}a2 z3 ⊕{06}a0 ⊕{04}a1 ⊕{02}a2 z2 ⊕{04}a0 ⊕{06}a1 ⊕{01}a2 4 z0 ⊕{01}a0 ⊕{02}a1 ⊕{04}a2 ⊕{06}a3 z1 ⊕{02}a0 ⊕{01}a1 ⊕{06}a2 ⊕{04}a3 z2 ⊕{04}a0 ⊕{06}a1 ⊕{01}a2 ⊕{02}a3 z3 ⊕{06}a0 ⊕{04}a1 ⊕{02}a2 ⊕{01}a3 (= (= (= (= w0 ) w1 ) w2 ) w3 ) (c) 図 5: CLEFIA 小型実装の行列演算回路: (a) F 関数 F0 データ構造, (b) データパス, (c) レジスタ格納データ 4.2 の秘密鍵 K に関する処理を行列演算回路内に配置する 回路アーキテクチャ ことにより更なる回路規模の削減を図っている.鍵入力 図 6 に 8 ビット・シリアルアーキテクチャを用いた key in から入力された秘密鍵 K は K = K0 |K1 |K2 |K3 と 32 ビットに分割された後 4 入力の 32 ビットセレク タで選択され, 更に選択された 32 ビットデータが 8 ビッ トずつに分割された後 4 入力の 8 ビットセレクタで選 択され, 行列演算回路に供給される. 鍵スケジュール回路には中間鍵レジスタ Lij が配置さ れ, 暗号化処理時にはレジスタ L00 と, CONi を 8 ビッ トに分割し 4 入力の 8 ビットセレクタで選択したデー タとが XOR され, データ処理回路に供給される.中間 鍵レジスタ Lij に格納された L は 8 ビットずつシフト する形でデータ処理部に供給されるが, 2 ラウンド毎に DoubleSwap 関数 Σ でアップデートする必要があるた め, 偶数ラウンドの 8 サイクル目には 8-bit shift + Σ の 出力が選択され Lij に入力される.また, 暗号化処理の 最後には, 次の入力ブロックに対する処理のために 8-bit shift + Σ−8 の出力が選択され, Lij を元の中間鍵 L に 戻す. CLEFIA の小型暗号化実装のデータパスを示す.なお, 図中で指定されていないデータパス幅は 8 ビットとなっ ている.データパスは, 大きくデータ処理回路と鍵スケ ジュール回路に分けることができる.CLEFIA は 1 ラウ ンド分のラウンド関数に S-box が 8 個配置されているこ とから, 1 ラウンドを 8 サイクルで処理する.1 ラウンド の処理でデータ処理回路内のレジスタ Rij (0 ≤ i, j ≤ 3) に格納されるデータの詳細な流れは付録の図 8 に示す. 暗号化処理時には, 8 ビットのデータ入力 data in か ら供給された平文データが 16 サイクルかけて Rij に配 置された後, 暗号化を開始し, 18 ラウンドのラウンド関 数に 144 サイクルを要する.最終ラウンドにはワード巡 回処理がないことから, 暗号文データはレジスタ R30 を 通して 16 サイクルかけて出力される.鍵セットアップ 時には key in から入力された秘密鍵 K が 16 サイクル かけてレジスタ Rij に配置された後, 鍵セットアップを 開始し, 12 ラウンド分のラウンド関数に 96 サイクルを 要する.生成された中間鍵 L はレジスタ R30 を通して 5 16 サイクルかけて中間鍵レジスタ Lij (0 ≤ i, j ≤ 3) に CLEFIA 小型暗復号実装 本節では 8 ビット・シリアルアーキテクチャを用い 格納される. データ処理回路には 2 種類の S-box S0 , S1 が配置さ た 128 ビット鍵 CLEFIA の小型暗復号実装について述 れ, それらの出力がセレクタにより選択されて行列演算 べる. 回路に入力される.また, CLEFIA のハードウェア実装 CLEFIA の復号処理に対して, 文献 [6] で提案された では, 文献 [6] で示されているように暗号化処理時のラ ラウンド鍵の一部の等価変形を施すと, 図 7 (a) のよう ウンド鍵の秘密鍵 K に関する部分を等価変形し, ホワイ に表すことができる.図中の RKi (0 ≤ i ≤ 35) はラウ トニング鍵の処理と共有することにより, 回路規模が削 ンド鍵の中間鍵 L に関する部分を示している.CLEFIA 減できることが知られている.データ処理回路では, こ のデータ処理部は 4 系列の Type-2 一般化 Feistel 構 4 データ処理回路 data_in 3 :1 R33 R32 R31 R30 3 :1 2 :1 R13 2 :1 R12 R11 2 :1 2 :1 R10 R03 R02 R01 R00 data_out R20 :1 2 3 :1 R21 1: 2 3 :1 R22 {02} S0 :1 2 3 :1 R23 {02} {02} S1 :1 2 3 :1 :1 2 32 :1 4 32 32 :1 32 4 128 key_in 32 128 8-bit shift + Σ 8-bit shift + Σ-8 128 1: 3 128 2 :1 L33 L32 L31 L30 CON 128 32 i 4 :1 128 L23 L22 L21 L20 L13 L12 L11 L10 L03 L02 L01 L00 鍵スケジュール回路 図 6: CLEFIA 小型暗号化実装のデータパス 造を採用しているため, 暗号化処理と復号処理ではラウ かけて 64 ビット巡回シフトを行なった後に F inalSwap ンド関数のワード巡回処理が逆方向となる.そのため, 関数 Φ の出力を選択し, Lij を元の中間鍵 L に戻すこ 第 4.2 節で述べた回路アーキテクチャに復号処理を追加 とになる. 以上より, データパス上は図 6 に 8 ビット 2 入力お した場合にはセレクタ数が大幅に増加すると考えられる. そこで, 我々は偶数ラウンド目の F 関数 F0 と F1 の配 よび 8 ビット 3 入力のセレクタを追加し, 8-bit shift + 置を入れ替えて復号処理を再構成した.すると, 図 7 (b) Σ−8 を F inalSwap 関数 Φ に変更することで暗復号処 理が可能となる. で示すようにラウンド関数のワード巡回方向が暗号化処 理と同じ方向になる.従って, 回路アーキテクチャ上は 6 図 6 のデータパスに大きな変更を加える必要はなく, 復 号処理の偶数ラウンド目では F 関数 F1 の処理を先に ASIC ライブラリによる実装性能評価 本節では, 第 4 節で述べた CLEFIA 小型暗号化実装 実行し, その後に F0 の処理を実行すればよい.ただし, と第 5 節で述べた CLEFIA 小型暗復号実装の ASIC ラ F 関数へのラウンド鍵入力の順序も入れ替わるため, 上 イブラリによる実装性能評価を行なう.なお, ハードウェ 記の F1 の処理では中間鍵レジスタ L10 から, F0 の処 ア設計および評価環境は以下の通りである. 理では中間鍵レジスタ L30 からラウンド鍵を供給しな 記述言語 設計ライブラリ シミュレータ 論理合成ツール ければならず, L00 を含めて 8 ビット 3 入力のセレクタ を追加する必要がある.また, 復号処理終了時にはワー ド巡回処理の関係で先頭データが R30 ではなく R10 に Verilog-VHDL 0.13 µm CMOS 標準セルライブラリ VCS version 2006.06 Design Compiler version 2007.03-SP3 格納されるため, 出力 data out の選択を行なう 8 ビッ 1 GE は 2 入力 NAND ゲートに相当し, 遅延時間は最 ト 2 入力のセレクタが必要となる. 悪条件での評価を行なっている. また, 復号処理の開始時には中間鍵データ L に文献 [6] 表 1 に評価結果を示す.2 種類の実装に対して, 規模 で提案された F inalSwap 関数 Φ を適用する必要があ 優先で回路を合成した.なお, cycle には入出力に必要な る.そこで,鍵スケジュール回路のセレクタ増加を防ぐ サイクル数を含めている.また, 比較として, CLEFIA ため,暗号化処理の終了後,暗号文出力中に 8 サイクル の既存の結果としては最小となる文献 [6] の小型版実装 5 表 1: ASIC による実装性能評価 Algorithm CLEFIA CLEFIA [6] AES [3] AES [2] C0 RK34 C1 F0 RK32 F0 RK30 F0 RK28 F0 RK6 F0 RK4 F0 RK2 F0 RK0 P0 F0 P1 C2 K2 RK35 K3 RK33 F1 F1 K1 RK31 K2 RK29 K1 RK7 F1 F1 F1 K2 RK5 K0 RK3 K0 RK1 (a) F1 F1 P2 F1 C0 C3 Mode Cycle enc enc/dec enc/dec enc enc/dec 176 176 38 177 1,032 K3 RK34 K2 RK33 F0 F1 K0 RK30 K3 RK29 K0 RK6 F0 F1 F0 K3 RK5 K1 RK2 K1 RK1 P3 C1 F1 F0 P2 F1 P3 C2 K2 RK35 K2 RK32 K3 RK31 K3 RK28 K1 RK7 K0 F1 K3 RK4 K0 RK3 K1 RK0 K1 F1 P0 [4] T. Shirai, K. Shibutani, T. Akishita, S. Moriai, and T. Iwata, “The 128-bit Blockcipher CLEFIA (Extended Abstract)”, FSE 2007 , LNCS 4593, pp. 181– 195, Springer-Verlag, 2007. K2 F0 F0 [3] P. Hämäläinen, T. Alho, M. Hännikäinen, and T. Hämäläinen, “Design and Implementaion of Lowarea and Low-power AES Encryption Hardware Core”, DSD 2006 , pp. 577–583, IEEE Computer Society, 2006. K2 F0 Technology (µm) 0.13 0.13 0.09 0.13 0.35 [2] M. Feldhofer, J. Wolkerstorfer, and V. Rijmen, “AES Implementation on a Grain of Sand”, IEE Proceedings Information Security, vol. 152, pp. 13–20, 2005. K0 F1 Throughput (Mbps) 49 44 677 110 10 [1] J. Daemen and V. Rijmen, The Design of Rijndael: AES – The Advanced Encryption Standard (Information Security and Cryptography), Springer, 2002. K3 F0 Freq. (MHz) 67 61 201 152 80 参考文献 C3 F1 K1 (b) Area (GE) 2,893 2,996 4,950 3,100 3,400 [5] 白井 太三, 渋谷 香士, 秋下 徹, 盛合 志帆, 岩田 哲, “128 ビ ットブロック暗号 CLEFIA”, IEICE Technical Report, ISEC 2007-1, 2007. K0 [6] 白井 太三, 渋谷 香士, 秋下 徹, 盛合 志帆, 岩田 哲, “128 ビットブロック暗号 CLEFIA のハードウェア実装評価”, IEICE Technical Report, ISEC 2007-49, 2007. P1 [7] 菅原 健, 本間 尚文, 青木 孝文, 佐藤 証, “128 ビットブロッ ク暗号 CLEFIA の ASIC 実装”, CSS 2007 , pp. 175– 180, 2007. 図 7: (a) CLEFIA 復号処理, (b) 偶数ラウンド目の F 関数を入れ替えた復号処理 [8] T. Sugawara, N. Homma, T. Aoki, and A. Satoh, “ASIC Performance Comparison for the ISO Standard Block Ciphers”, JWIS 2007 , pp. 485–498, 2007. の結果と, AES の Hämäläinen らの実装と Feldhofer ら の実装の結果を掲載した.今回得られた結果は CLEFIA [9] Y. Zhang and P. Kitsos, Security in RFID and Sensor Networks, CRC Press, 2009. の既存の最小ゲート規模と比較して, 暗復号実装で約 39 % の小型化を実現している.また, 暗号化実装, 暗復号実 のハードウェア実装における小型実装性能を示している. [10] Y. Zheng, T. Matsumoto, and H. Imai, “On the Construction of Block Ciphers Provably Secure and not Relying on Any Unproved Hypotheses.” Crypto’89 , LNCS 435, pp. 461–480, Springer-Verlag, 1989. 7 付録 装ともに AES の最小実装を下回る数値であり, CLEFIA まとめ 本稿では, 8 ビット・シリアルアーキテクチャを用い CLEFIA のラウンド関数のデータ構造を図 8 (a) に示 た CLEFIA の小型ハードウェア実装について報告を行 す.このとき, 図 6 で示された CLEFIA 小型暗号化実装 なった.その結果, CLEFIA が高いハードウェア実装効 のデータパスに基づいてラウンド関数 1 ラウンド分を実 率だけではなく, 小型実装性能を持ったブロック暗号で 行する際に, データ処理部内のレジスタ Rij (0 ≤ i, j ≤ 3) あることを示した. に格納されるデータの詳細な流れを図 8 (b) に示す. 6 x00 x01 x02 x03 | | x10 x11 x12 x13 | | RK2 | x20 x21 x22 x23 RK2 +1 | | i S1 S0 S1 | | | x30 x31 x32 x33 | | | | i S0 y00 y01 y02 y03 | a0 s a1 a2 S1 K 0K 1K 2K 3 | s | s | s S0 M0 S1 a S0 3 y10 y11 y12 y13 | | | y20 y21 y22 y23 | | | b0 K0K1K2K3 t b1 b2 | t | t | t M1 b 3 y30 y31 y32 y33 | | | (a) cycle R00 R01 R02 R03 R10 R11 R12 R13 R20 R21 R22 R23 R30 R31 R32 R33 0 x00 x01 x02 x03 x10 x11 x12 x13 x20 x21 x22 x23 x30 x31 x32 x33 1 x01 x02 x03 x20 x21 x22 x23 x30 x13 ⊕{06}a0 x12 ⊕{04}a0 x11 ⊕{02}a0 x10 ⊕{01}a0 ⊕Ks0 x31 x32 x33 x00 2 x02 x03 x20 x21 x22 x23 x30 x31 x12 ⊕{04}a0 ⊕{06}a1 x13 ⊕{06}a0 ⊕{04}a1 x10 ⊕{01}a0 ⊕{02}a1 ⊕Ks0 x11 ⊕{02}a0 ⊕{01}a1 ⊕Ks1 x32 x33 x00 x01 3 x03 x20 x21 x22 x23 x30 x31 x32 x11 ⊕{02}a0 ⊕{01}a1 ⊕{06}a2 ⊕Ks1 x10 ⊕{01}a0 ⊕{02}a1 ⊕{04}a2 ⊕Ks0 x13 ⊕{06}a0 ⊕{04}a1 ⊕{02}a2 x12 ⊕{04}a0 ⊕{06}a1 ⊕{01}a2 ⊕Ks2 x33 x00 x01 x02 4 x20 x21 x22 x23 x30 x31 x32 x33 x10 ⊕{01}a0 ⊕{02}a1 ⊕{04}a2 ⊕{06}a3 ⊕Ks0 x11 ⊕{02}a0 ⊕{01}a1 ⊕{06}a2 ⊕{04}a3 ⊕Ks1 x12 ⊕{04}a0 ⊕{06}a1 ⊕{01}a2 ⊕{02}a3 ⊕Ks2 x13 ⊕{06}a0 ⊕{04}a1 ⊕{02}a2 ⊕{01}a3 ⊕Ks3 x00 (= y30 ) x01 (= y31 ) x02 (= y32 ) x03 (= y33 ) cycle R00 R01 R02 R03 R10 R11 R12 R13 R20 R21 R22 R23 R30 R31 R32 R33 4 x20 x21 x22 x23 x30 x31 x32 x33 y00 y01 y02 y03 y30 y31 y32 y33 5 x21 x22 x23 y00 y01 y02 y03 x20 x33 ⊕{0A}b0 x32 ⊕{02}b0 x31 ⊕{08}b0 x30 ⊕{01}b0 ⊕Kt0 y31 y32 y33 y30 6 x22 x23 y00 y01 y02 y03 x20 x21 x32 ⊕{02}b0 ⊕{0A}b1 x33 ⊕{0A}b0 ⊕{02}b1 x30 ⊕{01}b0 ⊕{08}b1 ⊕Kt0 x31 ⊕{08}b0 ⊕{01}b1 ⊕Kt1 y32 y33 y30 y31 7 x23 y00 y01 y02 y03 x20 x21 x22 x31 ⊕{08}b0 ⊕{01}b1 ⊕{0A}b2 ⊕Kt1 x30 ⊕{01}b0 ⊕{08}b1 ⊕{02}b2 ⊕Kt0 x33 ⊕{0A}b0 ⊕{02}b1 ⊕{08}b2 x32 ⊕{02}b0 ⊕{0A}b1 ⊕{01}b2 ⊕Kt2 y33 y30 y31 y32 8 y00 y01 y02 y03 x20 (= y10 ) x21 (= y11 ) x22 (= y12 ) x23 (= y13 ) x30 ⊕{01}b0 ⊕{08}b1 ⊕{02}b2 ⊕{0A}b3 ⊕Kt0 x31 ⊕{08}b0 ⊕{01}b1 ⊕{0A}b2 ⊕{02}b3 ⊕Kt1 x32 ⊕{02}b0 ⊕{0A}b1 ⊕{01}b2 ⊕{08}b3 ⊕Kt2 x33 ⊕{0A}b0 ⊕{02}b1 ⊕{08}b2 ⊕{01}b3 ⊕Kt3 y30 y31 y32 y33 (b) 図 8: (a) CLEFIA ラウンド関数のデータ構造, (b) 小型暗号化実装におけるレジスタ格納データ 7 (= (= (= (= (= (= (= (= y00 ) y01 ) y02 ) y03 ) y20 ) y21 ) y22 ) y23 )