暗号化装置および復号装置
【課題】回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置を提供する。
【解決手段】AES暗号方式の暗号化装置100であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとをこの順序で含む演算を行い、最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含む演算を行い、最後のラウンドで、AddRoundKeyを含む演算を行う演算部を備える。
【解決手段】AES暗号方式の暗号化装置100であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとをこの順序で含む演算を行い、最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含む演算を行い、最後のラウンドで、AddRoundKeyを含む演算を行う演算部を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化装置および復号装置に関する。
【背景技術】
【0002】
スマートグリッドで使われるスマートメーターでは、メーターの改ざん防止等のためにセキュリティによる保護が必要とされ、暗号技術が応用されている。スマートメーターを耐タンパー化する上でサイドチャネル攻撃対策をどのように行うかは重要な事項である。スマートメーターでは、安価にするために回路規模を小さくし、また省電力にすることでエネルギー効率を高くする要請がある。したがって、安全性を高めるためのサイドチャネル攻撃対策でも回路規模、電力を減らす必要がある。
【0003】
暗号技術としては、AES(Advanced Encryption Standard)暗号方式などが知られている。AES暗号方式は、旧来から使われていたDES(Data Encryption Standard)暗号方式の後継として米国政府標準になった暗号アルゴリズムである。
【0004】
暗号装置に対する攻撃として、SPA(Simple Power Analysis)やDPA(Differential Power Analysis)などのサイドチャネル攻撃が注目されている(例えば、非特許文献1)。これらのサイドチャネル攻撃は、電力や電磁気を測定するだけというパッシブな攻撃であるため、痕跡が残らないという問題がある。
【0005】
従来のサイドチャネル攻撃対策としては、乱数を使ったマスクにより、計算途中の値をかく乱することで、情報が漏れても意味のない情報であるようにするといった対策が行われている(例えば、非特許文献2)。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】S. Mangard, E. Oswald, T. Popp, Power Analysis Attacks Revealing the Secrets of Smart Cards, Chapter 6. Differential Power Analysis, pp. 119-165, Springer, 2007.
【非特許文献2】S. Mangard, E. Oswald, T. Popp, Power Analysis Attacks Revealing the Secrets of Smart Cards, Chapter 9. Masking, pp. 223-244, Springer, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、乱数生成処理は比較的重い処理であり、非特許文献2のように乱数を使用する方法では、速度、回路規模、および電力等に悪影響があるという問題があった。
【0008】
本発明は、上記に鑑みてなされたものであって、回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置および復号装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明は、AES(Advanced Encryption Standard)暗号方式の暗号化装置であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとをこの順序で含む演算を行い、最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含む演算を行い、最後のラウンドで、AddRoundKeyを含む演算を行う演算部を備えることを特徴とする。
【0010】
また、本発明は、AES(Advanced Encryption Standard)暗号方式の復号装置であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、InvAddRoundKeyを含む演算を行い、最初の1つ後のラウンドで、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとをこの順序で含む演算、または、InvSubBytesと、InvMixColumnsと、InvAddRoundKeyとをこの順序で含む演算を行い、最後のラウンドで、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとをこの順序で含む演算を行う演算部を備えることを特徴とする。
【発明の効果】
【0011】
本発明によれば、回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置および復号装置を提供することができるという効果を奏する。
【図面の簡単な説明】
【0012】
【図1】サイドチャネル攻撃対策のないAES暗号方式の暗号化処理手順を示す図。
【図2】図1の手順を実現する暗号化装置の一例を示す回路図。
【図3】各クロックでフリップフロップに格納される中間結果dの値を示す図。
【図4】連続するクロックの中間結果dのハミング距離を示す図。
【図5】第1の実施の形態によるAES暗号方式の暗号化処理手順を示す図。
【図6】第1の実施の形態の暗号化装置の一例を示す回路図。
【図7】AddRoundKeyの構成例を示す図。
【図8】SubBytesの構成例を示す図。
【図9】ShiftRowsの構成例を示す図。
【図10】ShiftRowsにより並べ替えられるバイトの対応関係を例示する図。
【図11】MixColumnsの構成例を示す図。
【図12】各クロックでフリップフロップに格納される中間結果dの値を示す図。
【図13】連続するクロックの中間結果dのハミング距離を示す図。
【図14】第1の実施の形態の変形例にかかる暗号化装置の一例を示す回路図。
【図15】サイドチャネル攻撃対策のないAES暗号方式の復号処理手順を示す図。
【図16】第2の実施の形態によるAES暗号方式の復号処理手順を示す図。
【図17】第2の実施の形態の復号装置の一例を示す回路図。
【図18】各クロックでフリップフロップに格納される中間結果dの値を示す図。
【図19】連続するクロックの中間結果dのハミング距離を示す図。
【図20】第3の実施の形態の次世代電力網の一構成例を示す図。
【図21】スマートメーターとMDMSとが接続された構成例を示すブロック図。
【図22】HEMSとEMSが接続された構成例を示すブロック図。
【発明を実施するための形態】
【0013】
以下に添付図面を参照して、この発明にかかる暗号化装置の好適な実施の形態を詳細に説明する。
【0014】
(第1の実施の形態)
第1の実施の形態にかかる暗号化装置は、AES暗号方式で定められている4つの変換関数であるSubBytes、ShiftRows、MixColumns、およびAddRoundKeyの各ラウンドの演算での処理順序を、所定の条件を満たすように変更する。これにより、乱数の生成等を行うことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。
【0015】
最初に、DPAの概要について説明する。DPAは、データ処理を行った回路の消費電力を測定することで鍵を取り出す攻撃である。なお、回路の消費電力は、処理したデータの内容に依存して変化する。DPAでは、暗号化処理途中の消費電力も攻撃に利用できるため効率の良い攻撃が可能である。
【0016】
現在一般に用いられているCMOSロジックで構成したハードウェアの場合、論理素子の出力が変化した場合に電力が消費される。例えば、ある回路の出力が「0000」の4ビットから「0001」に1ビット変化したときの消費電力を1単位とすると、「0000」から「1111」に変化したときは、4単位の電力を消費することになる。また、出力が「1010」から「0101」のように全ビット反転したときは4単位の電力消費となる。「1010」から「1010」のように出力が全く変化しなかったときは電力を消費しないことになる。すなわち、事前の出力値と現在の出力値とのハミング距離が、電力消費として外部から観測できることになる。DPAは、この電力消費を観測することで攻撃を行う。
【0017】
DPAは、次のような手順で攻撃を行う。
(1)ある鍵を仮定して処理中のハミング距離を予想する
(2)測定した消費電力と予想したハミング距離との間の類似度を計算する
(3)複数の測定データに関して類似度が最も高い鍵を、当たり鍵と判定する
この際、仮定する鍵は8ビット程度と小さくないと判別が困難になる。類似度は、差の平均や、相関係数などの関数が用いられる。
【0018】
上述のように、従来のDPA対策では、処理前に処理するデータに乱数を作用させ、処理後のデータから乱数の影響を取り除く、というマスク処理を行っている。これは、消費電力から鍵情報を取り出せたとしても、乱数により攪拌された情報に基づく鍵情報であるため、真の鍵は取り出せないという原理に基づいている。マスク処理のための乱数発生器の使用は、回路規模の増大と電力消費の増大をもたらす。
【0019】
ハードウェアで実装する場合には、ノイズ発生源を設けることでSN比を悪くしてDPAに必要となる波形数を増やすといった対策が提案されている。また、どのようなデータが入力されても、処理中のハミング距離が一定になるような冗長符号化を行うことで、そもそも電力変化がおきないように工夫したデュアルレールといった回路構成にする方式が提案されている。しかし、ノイズ発生源は電力を消費するし、デュアルレールにすることは回路規模、電力消費共に数倍大きくなるという問題が生じる。
【0020】
一般にハードウェアは、フリップフロップで構成される記憶部と組み合わせ回路とで構成される。DPAの観点では、フリップフロップはクロックに同期して動くのでハミング距離を予想しやすい。一方、組み合わせ回路はタイミングが不定でありハミング距離を予想するのは困難である。また、組み合わせ回路よりフリップフロップの方が電力消費が大きいので、消費電力が測定しやすい。すなわち、フリップフロップの方が組み合わせ回路よりDPAに対して脆弱であるため、フリップフロップを適切に保護する必要がある。
【0021】
次に、AES暗号方式の概要について説明する。AES暗号方式による暗号化装置は、データ攪拌部と鍵スケジュール部とを備える。データ攪拌部は、上記4つの変換関数を含んでいる。AES暗号方式では、この4つの変換関数を定められた順序に複数回適用することで暗号化処理を行う。また、AES暗号方式による復号処理は、上記4つの変換関数の逆関数(InvSubBytes、InvShiftRows、InvMixColumns、InvAddRoundKey)を含む。復号処理は、これらの逆関数を、暗号化処理の変換関数と逆順に適用することで実行される。
【0022】
以下では、各関数について次の略称を用いることにする。
SB:SubBytes
SR:ShiftRows
MC:MixColumns
AK:AddRoundKey
SB−1:InvSubBytes
SR−1:InvShiftRows
MC−1:InvMixColumns
AK−1:InvAddRoundKey
【0023】
AES暗号方式の変換関数の中には、処理する順序を入れ替えても演算結果が変わらない関数が存在する。後述するように、SBは、バイト単位に独立した処理を行う関数である。また、SRはバイト並び替えを行う関数である。したがって、SBとSRとは、処理順序を入れ替えても結果は変わらない。同様に、MCとAKも、条件付きで処理順序を入れ替えることができる。
【0024】
AES暗号方式による暗号化処理の各ラウンドは、異なる鍵情報(ラウンド鍵)を使用する。従って、1ラウンド目は1つのラウンド鍵の影響を受け、2ラウンド目は2つのラウンド鍵の影響を受ける。言い換えると1ラウンド目の中間結果は入力と1つのラウンド鍵から計算できることになる。DPAの観点では、入力に近いラウンド程、予想が容易であり、先のラウンドに進むにつれて関係するラウンド鍵が増えるので予想が困難になる。出力側についても同様のことがいえる。すなわち、例えば上記逆関数等を用いて出力側から予想する場合、出力に近いラウンド程、予想が容易となる。
【0025】
このように、DPAでは、中間のラウンドのラウンド鍵を攻撃するのは困難であり、入力や出力に近いラウンドが攻撃される。そこで、DPA対策の効率を上げるためには、入力や出力に近いラウンドは十分に対策し、中間のラウンドでは入力や出力に近いラウンド程は対策しないか全く対策しない、ということが考えられる。
【0026】
次に、図1を用いて、サイドチャネル攻撃対策のない通常のAESの暗号化処理手順を説明する。図1は、サイドチャネル攻撃対策のないAES暗号方式の暗号化処理手順を示す図である。
【0027】
図1に示すように、通常のAES暗号方式では、4つの変換関数をAK→SB→SR→MCの順に実行し、最後だけAK→SB→SR→AKの順に実行する。図1の縦線は、AES暗号方式の標準規格であるFIPS−197に記載されている処理手順に従って、暗号化処理を分割することを表している。すなわち、クロック0では平文データmが入力され、クロック1ではAKにより変換した結果をラッチし、クロック2ではSB→SR→MC→AKにより変換した結果をラッチし、以下同様に各ラウンドを処理し、最後のラウンドだけSB→SR→AKによる変換を行う。そして、クロック11でラッチされた結果が暗号化データcとして出力される。なお、図1と同様に、第1の実施の形態では、1クロックでAES暗号方式の1ラウンドを実行する。
【0028】
図2は、図1で説明した手順を実現する暗号化装置1の一例を示す回路図である。暗号化装置1は、フリップフロップ11と、セレクタ12と、SB13と、SR14と、MC15と、AK16a〜16cと、を備えている。
【0029】
フリップフロップ11は、中間結果dを格納する。セレクタ12は、5つの入力のうち各クロックで予め定められたデータを選択して出力する。図2では、セレクタ12の上部に記載された数値がクロックを表している。
【0030】
クロック0では、セレクタ12は、平文データmを選択しフリップフロップ11に中間結果dとして書き込む。クロック1では、セレクタ12は、中間結果dをAK16aにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。クロック2からクロック10では、セレクタ12は、中間結果dをSB13→SR14→MC15→AK16bにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。クロック11では、セレクタ12は、中間結果dをSB13→SR14→AK16cにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。
【0031】
いずれのクロックでもない場合は、セレクタ12は、中間結果dを選択し、フリップフロップ11に中間結果dとして書き戻す。クロック11以降、暗号化処理の結果として暗号化データcが出力される。
【0032】
上述のように、SB13とSR14とは順序を入れ替えても結果は変わらない。また、FIPS−197に記載されているように、MC15とAK16bとを入れ替えることも可能である。
【0033】
図3は、各クロックでフリップフロップ11に格納される中間結果dの値を示す図である。図3では、中間結果dの値を式により表現している。説明の便宜上、図3では、「+」は排他的論理和を表し、S(x)=SR(SB(x))、M(x)=MC(x)とする。また、S−1(x)=SR−1(SB−1(x))、M−1(x)=MC−1(x)とする。また、AKは使用するラウンド鍵の番号を示すためにx+knのように表記する。knは、ラウンドn(nは0≦n≦10を満たす整数)で用いるラウンド鍵を表す。クロック3からクロック8は、式が複雑になるため省略している。
【0034】
図4は、連続するクロックの中間結果dのハミング距離を示す図である。例えば、1行目はクロック0の中間結果dとクロック1の中間結果dの値の差分(ハミング距離)を表している。以下では、この値を「dのハミング距離」と呼ぶことにする。
【0035】
dのハミング距離の式が以下の4つの条件を満足するとき、DPAを適用可能である。
(1)平文データmまたは暗号化データcを含む
(2)ラウンド鍵knを1種類だけ含む
(3)MまたはM−1が含まれない
(4)SまたはS−1を1つだけ含む
【0036】
図4の1行目のクロック0とクロック1の「dのハミング距離」は、(2)と(3)は満足するが、(1)と(4)を満足しない。このため、DPAを適用することはできない。図4の2行目のクロック1とクロック2の「dのハミング距離」は、(1)と(4)は満足するが、(2)と(3)を満足しない。このため、DPAを適用することはできない。図4の3行目のクロック9とクロック10の「dのハミング距離」は、全ての条件を満足しないため、DPAを適用することはできない。図4の4行目のクロック10とクロック11の「dのハミング距離」は、全ての条件を満足するのでDPAを適用可能である。
【0037】
ここで、図4の1行目の場合について補足する。ラウンド鍵k0は固定値でありメッセージ(平文データm)に依存しないため、メッセージを変えながら何度測定しても得られる情報量は存在しないことになる。これは条件(1)が必須であることを意味している。
【0038】
図4の2行目の場合について補足する。dのハミング距離の式にMが含まれているので、dのハミング距離のある1バイトは、必ずmの32ビット、ラウンド鍵k0の32ビット、およびラウンド鍵k1の8ビットに依存している。従って、ラウンド鍵を40ビット仮定しないと、dのハミング距離を予想できない。このためDPAを適用できないことになる。これは条件(3)が必須であることを意味している。
【0039】
なお、乱数を作用させてマスクを付与する従来の対策は、中間結果dの値を攪拌している。これにより、例えば上記クロック10とクロック11のdのハミング距離のようにDPAが適用可能な条件を満足する場合であっても、取り出した値がマスク(乱数)に依存しているために、結果として正しい鍵情報を取り出せないという対策になっていた。
【0040】
一方、第1の実施の形態では、従来の対策と異なる原理を用いて、サイドチャネル攻撃対策を行う。すなわち、いずれのラウンド(クロック)でも、図4のようにして求めるdのハミング距離が、上記(1)〜(4)の条件を満足しないような回路構成となるようにする。
【0041】
図5は、第1の実施の形態によるAES暗号方式の暗号化処理手順を示す図である。図5に示すように、クロック0では平文データmが入力され、クロック1からクロック4ではAK→SB→SR→MCにより変換した結果をラッチし、クロック5ではAK→SB→SRにより変換した結果をラッチし、クロック6からクロック10ではMC→AK→SB→SRにより変換した結果をラッチし、クロック11ではAKにより変換した結果をラッチし、暗号化データcとして出力している。図5と図1とは、ラッチするタイミングが異なるだけである。
【0042】
図5のクロック5のような3つ組(AK、SB、SR)を入力または出力の近くに置いておくとDPAが可能になる。このため、図5では、入力や出力から遠い中央付近のラウンド(ラウンド5)に移動させている。なお、3つ組を置くのはクロック5に限られるものではない。クロック3やクロック4のように、ラウンド5より入力に近くてもよく、クロック6やクロック7のようにラウンド5より出力に近くてもよい。
【0043】
図6は、図5で説明した手順を実現する第1の実施の形態の暗号化装置100の一例を示す回路図である。暗号化装置100は、フリップフロップ111と、セレクタ112と、SB113a、113bと、SR114a、114bと、MC115a、115bと、AK116a〜116cと、を備えている。なお、図6では、AES暗号方式の各ラウンドの演算を行う演算部の主な構成を示している。暗号化装置100が、暗号化するデータを入力する入力部や、鍵情報を記憶する記憶部などをさらに備えていてもよい。
【0044】
フリップフロップ111は、中間結果dを格納する。セレクタ112は、6つの入力のうち各クロックで予め定められたデータを選択して出力する。図6では、セレクタ12の上部に記載された数値がクロックを表している。
【0045】
クロック0では、セレクタ112は、平文データmを選択しフリップフロップ111に中間結果dとして書き込む。クロック1からクロック4では、セレクタ112は、中間結果dをAK116a→SB113a→SR114a→MC115aにより変換した結果を選択しフリップフロップ111に中間結果dとして書き込む。クロック5では、セレクタ112は、中間結果dをAK116a→SB113a→SR114aにより変換した結果を選択しフリップフロップ111に中間結果dとして書き込む。クロック6からクロック10では、セレクタ112は、中間結果dをMC115b→AK116b→SB113b→SR114bにより変換した結果を選択しフリップフロップ111に中間結果dとして書き込む。クロック11では、セレクタ112は、中間結果dをAK116cにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。
【0046】
いずれのクロックでもない場合は、セレクタ112は、中間結果dを選択し、フリップフロップ111に中間結果dとして書き戻す。クロック11以降、暗号化処理の結果として暗号化データcが出力される。
【0047】
上述のように、SB113とSR114とは順序を入れ替えても結果は変わらない。また、FIPS−197に記載されているように、MC115とAK116とを入れ替えることも可能である。また、図6ではクロック5で3つ組(AK116a、SB113a、SR114a)を実行する例が記載されているが、3つ組をクロック2からクロック9のいずれで実行してもよい。
【0048】
次に、AES暗号方式の上記4つの関数の構成例について図7〜図11を用いて説明する。以下では、鍵長が128ビットの場合の例を説明する。
【0049】
図7は、AddRoundKey(AK116)の構成例を示す図である。図7に示すように、AddRoundKeyは、各ラウンドで128ビットのラウンド鍵(k0〜k10)と、128ビットの入力データとの排他的論理和である128ビットのデータを出力する。
【0050】
図8は、SubBytes(SB113)の構成例を示す図である。図8に示すようにSubBytesは、128ビットの入力データを16個の8ビットデータに分けて処理する。
【0051】
図9は、ShiftRows(SR114)の構成例を示す図である。図9に示すように、ShiftRowsは、128ビットの入力データを16個の8ビットデータに分割して並び替える。図9では、入力データを分割した各8ビットデータが、矢印の先で表された位置に並び替えられることが示されている。
【0052】
図10は、ShiftRowsにより並べ替えられるバイトの対応関係を例示する図である。図10は、図9に示す順で並び替えられる場合の入力バイトと出力バイトとの対応関係を示している。
【0053】
図11は、MixColumns(MC115)の構成例を示す図である。図11に示すように、MixColumnsは、128ビットの入力データを4個の32ビットデータに分けて処理する。
【0054】
次に、図6のような回路構成の場合に各クロックで出力される中間結果dについて説明する。図12は、各クロックでフリップフロップ111に格納される中間結果dの値を示す図である。図12は、図3と同様に中間結果dの値を式により表現している。
【0055】
図13は、図12の中間結果dから算出される、連続するクロックの中間結果dのハミング距離を示す図である。図13に示すように、第1の実施の形態の回路構成(図6)によれば、全てのクロックにおいてdのハミング距離は上記の4つの条件を満足しないことが分かる。
【0056】
なお、上記4つの条件を満たさないような回路構成は図6に限られるものではない。ラウンド鍵を用いてデータを演算するラウンドのうち、最初のラウンドでAK→SB→MCの順に演算を行い、最後の1つ前のラウンドでMC→AK→SBの順、または、AK→MC→SBの順で演算を行い、最後のラウンドで、AKを含む演算を行うものであれば、暗号化装置100の演算部としてどのような回路を用いてもよい。
【0057】
このような回路であれば、最初のラウンドでMCを実行するため、次のラウンド(クロック)との間のdのハミング距離の式には、必ずM(MC)が含まれる。また、最後の1つ前のラウンドでMCを実行するため、最後のラウンドとの間のdのハミング距離の式には、必ずM(MC)が含まれる。したがって、上記(3)の条件が満たされないため、これらのラウンド(クロック)についてはDPAは適用不可となる。
【0058】
また、2ラウンドから最後のラウンドの2つ前までの各ラウンドでは、dのハミング距離の式に少なくとも2つのラウンド鍵が含まれる。したがって、上記(2)の条件が満たされないため、これらの各ラウンドについてもDPAは適用不可となる。
【0059】
このような回路としては、例えば、ラウンド5でAK→SBの順で演算を行い、ラウンド6以降でSR→MC→AK→SBの順で演算を行い、最後のラウンドでSR→AKの演算を行う回路が挙げられる。また、このような回路の各ラウンドのうち任意のラウンドのSRのみを独立したクロック(ラウンド)で演算するように構成してもよい。
【0060】
なお、最初のラウンドでは、SRはMCより後以外であればいずれの箇所に挿入してもよい。具体的には、最初のラウンドでは、AKの前、SBの前、および、MCの前のいずれかにSRを実行するように構成すればよい。
【0061】
また、最後の1つ前のラウンドでは、SRは、MCより後であればいずれの箇所に挿入してもよい。具体的には、最後の1つ前のラウンドでは、MC→AK→SBの順で演算する場合は、MCの後、AKの後、および、SBの後のいずれかにSRを実行するように構成すればよい。また、AK→MC→SBの順で演算する場合は、MCの後、および、SBの後のいずれかにSRを実行するように構成すればよい。
【0062】
図14は、第1の実施の形態の変形例にかかる暗号化装置200の一例を示す回路図である。図14は、図6の回路の等価回路の一例を示している。図14に示すように、暗号化装置200は、フリップフロップ111と、セレクタ112−2と、SB113と、SR114と、MC115a、115bと、AK116a、116cと、セレクタ121と、を備えている。
【0063】
図14の回路は機能的には図6と等価であるが、AK116a→SB113→SR114の部分を共有することで回路規模を削減している。図2の回路と比較した場合、図14の回路は、1つのMCおよびセレクタ121が増加しただけである。
【0064】
このように、第1の実施の形態にかかる暗号化装置では、AES暗号方式のSubBytes、ShiftRows、MixColumns、およびAddRoundKeyの各ラウンドの演算での処理順序をDPAが適用できない条件を満たす順序に並べ替えて演算する。これにより、乱数の生成等を行うことなく、未対策のAESと同程度の回路規模および電力消費であり、かつ、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。なお、安全性をさらに高めるために、従来のサイドチャネル攻撃対策と併用することも可能である。
【0065】
(第2の実施の形態)
第2の実施の形態では、第1の実施の形態の暗号化装置と同様の手法を、AES暗号方式の復号装置に適用した例について説明する。
【0066】
最初に、図15を用いて、サイドチャネル攻撃対策のない通常のAESの復号処理手順を説明する。図15は、サイドチャネル攻撃対策のないAES暗号方式の復号処理手順を示す図である。
【0067】
図15に示すように、通常のAES暗号方式では、上記4つの逆関数をSR−1→SB−1→AK−1→MC−1の順に実行し、最後だけSR−1→SB−1→AK−1の順に実行する。
【0068】
図16は、第2の実施の形態によるAES暗号方式の復号処理手順を示す図である。図16に示すように、クロック0では暗号化データcが入力され、クロック1からクロック4ではSR−1→SB−1→AK−1→MC−1により変換した結果をラッチし、クロック5ではSR−1→SB−1→AK−1により変換した結果をラッチし、クロック6からクロック10ではMC−1→SR−1→SB−1→AK−1により変換した結果をラッチし、平文データmとして出力している。
【0069】
図17は、図16で説明した手順を実現する第2の実施の形態の復号装置300の一例を示す回路図である。復号装置300は、フリップフロップ311と、セレクタ312と、SB−1313a、313bと、SR−1314a、314bと、MC−1315a、315bと、AK−1316a〜316cと、を備えている。
【0070】
図17に示すように、復号装置300は、第1の実施の形態の暗号化装置100の回路図(図6)の各変換関数に対応する逆関数を、図6の各変換関数の実行順序と逆の順序で実行する回路となっている。
【0071】
図18は、各クロックでフリップフロップ311に格納される中間結果dの値を示す図である。図18は、図3および図12と同様に中間結果dの値を式により表現している。
【0072】
図19は、図18の中間結果dから算出される、連続するクロックの中間結果dのハミング距離を示す図である。図19に示すように、第2の実施の形態の回路構成(図17)によれば、全てのクロックにおいてdのハミング距離は上記の4つの条件を満足しないことが分かる。
【0073】
なお、上記4つの条件を満たさないような回路構成は図17に限られるものではない。ラウンド鍵を用いてデータを演算するラウンドのうち、最初のラウンドでAK−1を含む演算を行い、最初の1つ後のラウンドでSB−1→AK−1→MC−1の順、または、SB−1→MC−1→AK−1の順で演算を行い、最後のラウンドでMC−1→SB−1→AK−1の順で演算を行うものであれば、復号装置300の演算部としてどのような回路を用いてもよい。
【0074】
このような回路であれば、最初の1つ後のラウンドでMC−1を実行するため、最初のラウンド(クロック)との間のdのハミング距離の式には、必ずM−1(MC−1)が含まれる。また、最後のラウンドでMC−1を実行するため、最後の1つ前のラウンドと最後のラウンドとの間のdのハミング距離の式には、必ずMC−1が含まれる。したがって、上記(3)の条件が満たされないため、これらのラウンド(クロック)についてはDPAは適用不可となる。
【0075】
また、2ラウンドから最後のラウンドの2つ前までの各ラウンドでは、dのハミング距離の式に少なくとも2つのラウンド鍵が含まれる。したがって、上記(2)の条件が満たされないため、これらの各ラウンドについてもDPAは適用不可となる。
【0076】
なお、最初の1つ後のラウンドでは、SR−1は、MC−1より前であればいずれの箇所に挿入してもよい。具体的には、最初の1つ後のラウンドでは、SB−1→AK−1→MC−1の順で演算する場合は、SB−1の前、AK−1の前、および、MC−1の前のいずれかにSR−1を実行するように構成すればよい。また、SB−1→MC−1→AK−1の順で演算する場合は、SB−1の前、および、MC−1の前のいずれかにSR−1を実行するように構成すればよい。
【0077】
また、最後のラウンドでは、SR−1はMC−1より後であればいずれの箇所に挿入してもよい。具体的には、最後のラウンドでは、MC−1の後、SB−1の後、および、AK−1の後のいずれかにSR−1を実行するように構成すればよい。
【0078】
このように、第2の実施の形態にかかる復号装置では、第1の実施の形態の暗号化装置と同様の手法をAES暗号方式の復号処理に適用できる。これにより、乱数の生成等を行うことなく、未対策のAESと同程度の回路規模および電力消費であり、かつ、サイドチャネル攻撃に対して安全な復号装置を実現できる。
【0079】
(第3の実施の形態)
第3の実施の形態では、スマートグリッドに適用した実施の形態を説明する。スマートグリッドとは、原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際の電力品質の安定化を図るために構築されている次世代電力網である。
【0080】
図20は、第3の実施の形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するスマートメーター3010aと、家電機器を管理するホームサーバであるHEMS(Home Energy Management System)3020が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS(Building Energy Management System)3030がビル毎に設置される。商業ビルには、スマートメーター3010aと同様のスマートメーター3010bが設置される。以下では、スマートメーター3010aおよび3010bを単にスマートメーター3010という。
【0081】
スマートメーター3010は、コンセントレータとよばれる中継器(コンセントレータ3040)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS(Meter Data Management System)3050と通信する。MDMS3050は、各家庭のスマートメーター3010から一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるEMS(Energy Management System)3060は、MDMS3050に集まった複数の家庭の電力使用量、或いは、電力系統に設置されたセンサからの情報に基づいて、各家庭のスマートメーター3010やHEMS3020に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS3060は、遠隔端末ユニットであるRTU(Remote Terminal Unit)3071に接続された太陽光発電や風力発電などの分散電源3080、同じくRTU3072に接続された蓄電装置3090、および、RTU3073に接続された発電側との間を制御する送配電制御装置3100を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【0082】
図21は、スマートメーター3010とMDMS3050とが接続された構成例を示すブロック図である。スマートメーター3010は、MDMS3050と暗号通信を行う。通信経路上にコンセントレータ3040が存在するが、コンセントレータ3040は暗号通信を中継するのみである。
【0083】
例えば、計測部410に接続する通信部420の暗復号部421が、AESの鍵情報を用いて計測値を暗号化し、通信部420の送受信部422が暗号化した計測値をMDMS3050に送る。MDMS3050の送受信部422は暗号化された計測値を受信し、MDMS3050の暗復号部421は、保持するAESの鍵情報を用いて暗号化された計測値を復号する。これにより、通信路上で通信が傍受されたとしても、傍受者は計測値を知ることができない。或いは、MDMS3050から計測部410に制御用コマンドが送られる場合がある。例えば、計測の中止や開始、計測データの送付指示などの制御コマンドである。MDMS3050の暗復号部421は、AESの鍵情報を用いて、制御コマンドを暗号化し、MDMS3050の送受信部422は暗号化した制御コマンドをスマートメーター3010の通信部420に送信する。通信部420の送受信部422は、暗号化された制御コマンドを受信し、通信部420の暗復号部421はAESの鍵情報を用いて暗号化制御コマンドを復号し、制御コマンドを計測部410に送る。或いは、スマートメーター3010に設けられる記憶装置(図示せず)の記憶領域に電力使用量データが格納されており、通信部420の暗復号部421は、AESの鍵情報を用いて当該電力使用量データを暗号化し、通信部420の送受信部422は暗号化電力使用量データをMDMS3050に送信する。MDMS3050の送受信部422は、暗号化電力使用量データを受信し、MDMS3050の暗復号部520はAESの鍵情報を用いて当該暗号化電力使用量データを復号する。ここで、スマートメーター3010の暗復号部421が第1の実施の形態の暗号化装置(100、200)および第2の実施の形態の復号装置(300)を備えている。第1の実施の形態の平文データmが本実施の形態の計測値や制御コマンドに対応し、第1の実施の形態の暗号化データcが本実施の形態の暗号化された計測値(電力使用量)や暗号化された制御コマンドに対応する。
【0084】
図22は、HEMS3020とEMS3060が接続された構成例を示すブロック図である。EMS3060の暗復号部720は制御情報を暗号化し、EMS3060の送受信部710は暗号化された制御情報をHEMS3020の通信部620内の送受信部622に送信する。HEMS3020の送受信部622は暗号化された制御情報を受信し、HEMS3020の通信部620内の暗復号部621は暗号化された制御情報を復号する。復号された制御情報はHEMS3020の制御部640に受信して、制御部640は制御情報に基づいて、家庭内の機器を制御する。また、さらに以下の動作をしてもよい。HEMS3020の制御部640から家庭内の機器の状態を表す機器状態情報などをHEMS3020の暗復号部621で暗号化して、HEMS3020の送受信部622がEMS3060に送信する。そして、EMS3060の送受信部720が暗号化された機器状態情報をEMS3060の暗復号部720が復号して、EMS3060では復号された機器状態情報を利用してその後の制御に利用などする。ここで、HEMS3020の暗復号部621が第1の実施の形態の暗号化装置(100、200)および第2の実施の形態の復号装置(300)を備えている。第1の実施の形態の平文データmが本実施の形態の制御情報や機器状態情報に対応し、第1の実施の形態の暗号化データcが本実施の形態の暗号化された制御情報や暗号化された機器状態情報に該当する。
【0085】
このように、第3の実施の形態では、コンテンツ保護と異なる分野である次世代電力網で用いられるデータに対して、データの不正利用を防止することができる。
【0086】
次に、第1から第3の実施の形態の装置(暗号化装置または復号装置)のハードウェア構成について説明する。
【0087】
第1から第3の実施の形態にかかる装置は、CPU(Central Processing Unit)などの制御装置と、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶装置と、ネットワークに接続して通信を行う通信I/Fと、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバスを備えており、通常のコンピュータを利用したハードウェア構成とすることができる。
【0088】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【0089】
100、200 暗号化装置
111 フリップフロップ
112 セレクタ
113 SB(SubBytes)
114 SR(ShiftRows)
115 MC(MixColumns)
116 AK(AddRoundKey)
300 復号装置
311 フリップフロップ
312 セレクタ
313 SB−1(InvSubBytes)
314 SR−1(InvShiftRows)
315 MC−1(InvMixColumns)
316 AK−1(InvAddRoundKey)
【技術分野】
【0001】
本発明は、暗号化装置および復号装置に関する。
【背景技術】
【0002】
スマートグリッドで使われるスマートメーターでは、メーターの改ざん防止等のためにセキュリティによる保護が必要とされ、暗号技術が応用されている。スマートメーターを耐タンパー化する上でサイドチャネル攻撃対策をどのように行うかは重要な事項である。スマートメーターでは、安価にするために回路規模を小さくし、また省電力にすることでエネルギー効率を高くする要請がある。したがって、安全性を高めるためのサイドチャネル攻撃対策でも回路規模、電力を減らす必要がある。
【0003】
暗号技術としては、AES(Advanced Encryption Standard)暗号方式などが知られている。AES暗号方式は、旧来から使われていたDES(Data Encryption Standard)暗号方式の後継として米国政府標準になった暗号アルゴリズムである。
【0004】
暗号装置に対する攻撃として、SPA(Simple Power Analysis)やDPA(Differential Power Analysis)などのサイドチャネル攻撃が注目されている(例えば、非特許文献1)。これらのサイドチャネル攻撃は、電力や電磁気を測定するだけというパッシブな攻撃であるため、痕跡が残らないという問題がある。
【0005】
従来のサイドチャネル攻撃対策としては、乱数を使ったマスクにより、計算途中の値をかく乱することで、情報が漏れても意味のない情報であるようにするといった対策が行われている(例えば、非特許文献2)。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】S. Mangard, E. Oswald, T. Popp, Power Analysis Attacks Revealing the Secrets of Smart Cards, Chapter 6. Differential Power Analysis, pp. 119-165, Springer, 2007.
【非特許文献2】S. Mangard, E. Oswald, T. Popp, Power Analysis Attacks Revealing the Secrets of Smart Cards, Chapter 9. Masking, pp. 223-244, Springer, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、乱数生成処理は比較的重い処理であり、非特許文献2のように乱数を使用する方法では、速度、回路規模、および電力等に悪影響があるという問題があった。
【0008】
本発明は、上記に鑑みてなされたものであって、回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置および復号装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明は、AES(Advanced Encryption Standard)暗号方式の暗号化装置であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとをこの順序で含む演算を行い、最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含む演算を行い、最後のラウンドで、AddRoundKeyを含む演算を行う演算部を備えることを特徴とする。
【0010】
また、本発明は、AES(Advanced Encryption Standard)暗号方式の復号装置であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、InvAddRoundKeyを含む演算を行い、最初の1つ後のラウンドで、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとをこの順序で含む演算、または、InvSubBytesと、InvMixColumnsと、InvAddRoundKeyとをこの順序で含む演算を行い、最後のラウンドで、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとをこの順序で含む演算を行う演算部を備えることを特徴とする。
【発明の効果】
【0011】
本発明によれば、回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置および復号装置を提供することができるという効果を奏する。
【図面の簡単な説明】
【0012】
【図1】サイドチャネル攻撃対策のないAES暗号方式の暗号化処理手順を示す図。
【図2】図1の手順を実現する暗号化装置の一例を示す回路図。
【図3】各クロックでフリップフロップに格納される中間結果dの値を示す図。
【図4】連続するクロックの中間結果dのハミング距離を示す図。
【図5】第1の実施の形態によるAES暗号方式の暗号化処理手順を示す図。
【図6】第1の実施の形態の暗号化装置の一例を示す回路図。
【図7】AddRoundKeyの構成例を示す図。
【図8】SubBytesの構成例を示す図。
【図9】ShiftRowsの構成例を示す図。
【図10】ShiftRowsにより並べ替えられるバイトの対応関係を例示する図。
【図11】MixColumnsの構成例を示す図。
【図12】各クロックでフリップフロップに格納される中間結果dの値を示す図。
【図13】連続するクロックの中間結果dのハミング距離を示す図。
【図14】第1の実施の形態の変形例にかかる暗号化装置の一例を示す回路図。
【図15】サイドチャネル攻撃対策のないAES暗号方式の復号処理手順を示す図。
【図16】第2の実施の形態によるAES暗号方式の復号処理手順を示す図。
【図17】第2の実施の形態の復号装置の一例を示す回路図。
【図18】各クロックでフリップフロップに格納される中間結果dの値を示す図。
【図19】連続するクロックの中間結果dのハミング距離を示す図。
【図20】第3の実施の形態の次世代電力網の一構成例を示す図。
【図21】スマートメーターとMDMSとが接続された構成例を示すブロック図。
【図22】HEMSとEMSが接続された構成例を示すブロック図。
【発明を実施するための形態】
【0013】
以下に添付図面を参照して、この発明にかかる暗号化装置の好適な実施の形態を詳細に説明する。
【0014】
(第1の実施の形態)
第1の実施の形態にかかる暗号化装置は、AES暗号方式で定められている4つの変換関数であるSubBytes、ShiftRows、MixColumns、およびAddRoundKeyの各ラウンドの演算での処理順序を、所定の条件を満たすように変更する。これにより、乱数の生成等を行うことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。
【0015】
最初に、DPAの概要について説明する。DPAは、データ処理を行った回路の消費電力を測定することで鍵を取り出す攻撃である。なお、回路の消費電力は、処理したデータの内容に依存して変化する。DPAでは、暗号化処理途中の消費電力も攻撃に利用できるため効率の良い攻撃が可能である。
【0016】
現在一般に用いられているCMOSロジックで構成したハードウェアの場合、論理素子の出力が変化した場合に電力が消費される。例えば、ある回路の出力が「0000」の4ビットから「0001」に1ビット変化したときの消費電力を1単位とすると、「0000」から「1111」に変化したときは、4単位の電力を消費することになる。また、出力が「1010」から「0101」のように全ビット反転したときは4単位の電力消費となる。「1010」から「1010」のように出力が全く変化しなかったときは電力を消費しないことになる。すなわち、事前の出力値と現在の出力値とのハミング距離が、電力消費として外部から観測できることになる。DPAは、この電力消費を観測することで攻撃を行う。
【0017】
DPAは、次のような手順で攻撃を行う。
(1)ある鍵を仮定して処理中のハミング距離を予想する
(2)測定した消費電力と予想したハミング距離との間の類似度を計算する
(3)複数の測定データに関して類似度が最も高い鍵を、当たり鍵と判定する
この際、仮定する鍵は8ビット程度と小さくないと判別が困難になる。類似度は、差の平均や、相関係数などの関数が用いられる。
【0018】
上述のように、従来のDPA対策では、処理前に処理するデータに乱数を作用させ、処理後のデータから乱数の影響を取り除く、というマスク処理を行っている。これは、消費電力から鍵情報を取り出せたとしても、乱数により攪拌された情報に基づく鍵情報であるため、真の鍵は取り出せないという原理に基づいている。マスク処理のための乱数発生器の使用は、回路規模の増大と電力消費の増大をもたらす。
【0019】
ハードウェアで実装する場合には、ノイズ発生源を設けることでSN比を悪くしてDPAに必要となる波形数を増やすといった対策が提案されている。また、どのようなデータが入力されても、処理中のハミング距離が一定になるような冗長符号化を行うことで、そもそも電力変化がおきないように工夫したデュアルレールといった回路構成にする方式が提案されている。しかし、ノイズ発生源は電力を消費するし、デュアルレールにすることは回路規模、電力消費共に数倍大きくなるという問題が生じる。
【0020】
一般にハードウェアは、フリップフロップで構成される記憶部と組み合わせ回路とで構成される。DPAの観点では、フリップフロップはクロックに同期して動くのでハミング距離を予想しやすい。一方、組み合わせ回路はタイミングが不定でありハミング距離を予想するのは困難である。また、組み合わせ回路よりフリップフロップの方が電力消費が大きいので、消費電力が測定しやすい。すなわち、フリップフロップの方が組み合わせ回路よりDPAに対して脆弱であるため、フリップフロップを適切に保護する必要がある。
【0021】
次に、AES暗号方式の概要について説明する。AES暗号方式による暗号化装置は、データ攪拌部と鍵スケジュール部とを備える。データ攪拌部は、上記4つの変換関数を含んでいる。AES暗号方式では、この4つの変換関数を定められた順序に複数回適用することで暗号化処理を行う。また、AES暗号方式による復号処理は、上記4つの変換関数の逆関数(InvSubBytes、InvShiftRows、InvMixColumns、InvAddRoundKey)を含む。復号処理は、これらの逆関数を、暗号化処理の変換関数と逆順に適用することで実行される。
【0022】
以下では、各関数について次の略称を用いることにする。
SB:SubBytes
SR:ShiftRows
MC:MixColumns
AK:AddRoundKey
SB−1:InvSubBytes
SR−1:InvShiftRows
MC−1:InvMixColumns
AK−1:InvAddRoundKey
【0023】
AES暗号方式の変換関数の中には、処理する順序を入れ替えても演算結果が変わらない関数が存在する。後述するように、SBは、バイト単位に独立した処理を行う関数である。また、SRはバイト並び替えを行う関数である。したがって、SBとSRとは、処理順序を入れ替えても結果は変わらない。同様に、MCとAKも、条件付きで処理順序を入れ替えることができる。
【0024】
AES暗号方式による暗号化処理の各ラウンドは、異なる鍵情報(ラウンド鍵)を使用する。従って、1ラウンド目は1つのラウンド鍵の影響を受け、2ラウンド目は2つのラウンド鍵の影響を受ける。言い換えると1ラウンド目の中間結果は入力と1つのラウンド鍵から計算できることになる。DPAの観点では、入力に近いラウンド程、予想が容易であり、先のラウンドに進むにつれて関係するラウンド鍵が増えるので予想が困難になる。出力側についても同様のことがいえる。すなわち、例えば上記逆関数等を用いて出力側から予想する場合、出力に近いラウンド程、予想が容易となる。
【0025】
このように、DPAでは、中間のラウンドのラウンド鍵を攻撃するのは困難であり、入力や出力に近いラウンドが攻撃される。そこで、DPA対策の効率を上げるためには、入力や出力に近いラウンドは十分に対策し、中間のラウンドでは入力や出力に近いラウンド程は対策しないか全く対策しない、ということが考えられる。
【0026】
次に、図1を用いて、サイドチャネル攻撃対策のない通常のAESの暗号化処理手順を説明する。図1は、サイドチャネル攻撃対策のないAES暗号方式の暗号化処理手順を示す図である。
【0027】
図1に示すように、通常のAES暗号方式では、4つの変換関数をAK→SB→SR→MCの順に実行し、最後だけAK→SB→SR→AKの順に実行する。図1の縦線は、AES暗号方式の標準規格であるFIPS−197に記載されている処理手順に従って、暗号化処理を分割することを表している。すなわち、クロック0では平文データmが入力され、クロック1ではAKにより変換した結果をラッチし、クロック2ではSB→SR→MC→AKにより変換した結果をラッチし、以下同様に各ラウンドを処理し、最後のラウンドだけSB→SR→AKによる変換を行う。そして、クロック11でラッチされた結果が暗号化データcとして出力される。なお、図1と同様に、第1の実施の形態では、1クロックでAES暗号方式の1ラウンドを実行する。
【0028】
図2は、図1で説明した手順を実現する暗号化装置1の一例を示す回路図である。暗号化装置1は、フリップフロップ11と、セレクタ12と、SB13と、SR14と、MC15と、AK16a〜16cと、を備えている。
【0029】
フリップフロップ11は、中間結果dを格納する。セレクタ12は、5つの入力のうち各クロックで予め定められたデータを選択して出力する。図2では、セレクタ12の上部に記載された数値がクロックを表している。
【0030】
クロック0では、セレクタ12は、平文データmを選択しフリップフロップ11に中間結果dとして書き込む。クロック1では、セレクタ12は、中間結果dをAK16aにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。クロック2からクロック10では、セレクタ12は、中間結果dをSB13→SR14→MC15→AK16bにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。クロック11では、セレクタ12は、中間結果dをSB13→SR14→AK16cにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。
【0031】
いずれのクロックでもない場合は、セレクタ12は、中間結果dを選択し、フリップフロップ11に中間結果dとして書き戻す。クロック11以降、暗号化処理の結果として暗号化データcが出力される。
【0032】
上述のように、SB13とSR14とは順序を入れ替えても結果は変わらない。また、FIPS−197に記載されているように、MC15とAK16bとを入れ替えることも可能である。
【0033】
図3は、各クロックでフリップフロップ11に格納される中間結果dの値を示す図である。図3では、中間結果dの値を式により表現している。説明の便宜上、図3では、「+」は排他的論理和を表し、S(x)=SR(SB(x))、M(x)=MC(x)とする。また、S−1(x)=SR−1(SB−1(x))、M−1(x)=MC−1(x)とする。また、AKは使用するラウンド鍵の番号を示すためにx+knのように表記する。knは、ラウンドn(nは0≦n≦10を満たす整数)で用いるラウンド鍵を表す。クロック3からクロック8は、式が複雑になるため省略している。
【0034】
図4は、連続するクロックの中間結果dのハミング距離を示す図である。例えば、1行目はクロック0の中間結果dとクロック1の中間結果dの値の差分(ハミング距離)を表している。以下では、この値を「dのハミング距離」と呼ぶことにする。
【0035】
dのハミング距離の式が以下の4つの条件を満足するとき、DPAを適用可能である。
(1)平文データmまたは暗号化データcを含む
(2)ラウンド鍵knを1種類だけ含む
(3)MまたはM−1が含まれない
(4)SまたはS−1を1つだけ含む
【0036】
図4の1行目のクロック0とクロック1の「dのハミング距離」は、(2)と(3)は満足するが、(1)と(4)を満足しない。このため、DPAを適用することはできない。図4の2行目のクロック1とクロック2の「dのハミング距離」は、(1)と(4)は満足するが、(2)と(3)を満足しない。このため、DPAを適用することはできない。図4の3行目のクロック9とクロック10の「dのハミング距離」は、全ての条件を満足しないため、DPAを適用することはできない。図4の4行目のクロック10とクロック11の「dのハミング距離」は、全ての条件を満足するのでDPAを適用可能である。
【0037】
ここで、図4の1行目の場合について補足する。ラウンド鍵k0は固定値でありメッセージ(平文データm)に依存しないため、メッセージを変えながら何度測定しても得られる情報量は存在しないことになる。これは条件(1)が必須であることを意味している。
【0038】
図4の2行目の場合について補足する。dのハミング距離の式にMが含まれているので、dのハミング距離のある1バイトは、必ずmの32ビット、ラウンド鍵k0の32ビット、およびラウンド鍵k1の8ビットに依存している。従って、ラウンド鍵を40ビット仮定しないと、dのハミング距離を予想できない。このためDPAを適用できないことになる。これは条件(3)が必須であることを意味している。
【0039】
なお、乱数を作用させてマスクを付与する従来の対策は、中間結果dの値を攪拌している。これにより、例えば上記クロック10とクロック11のdのハミング距離のようにDPAが適用可能な条件を満足する場合であっても、取り出した値がマスク(乱数)に依存しているために、結果として正しい鍵情報を取り出せないという対策になっていた。
【0040】
一方、第1の実施の形態では、従来の対策と異なる原理を用いて、サイドチャネル攻撃対策を行う。すなわち、いずれのラウンド(クロック)でも、図4のようにして求めるdのハミング距離が、上記(1)〜(4)の条件を満足しないような回路構成となるようにする。
【0041】
図5は、第1の実施の形態によるAES暗号方式の暗号化処理手順を示す図である。図5に示すように、クロック0では平文データmが入力され、クロック1からクロック4ではAK→SB→SR→MCにより変換した結果をラッチし、クロック5ではAK→SB→SRにより変換した結果をラッチし、クロック6からクロック10ではMC→AK→SB→SRにより変換した結果をラッチし、クロック11ではAKにより変換した結果をラッチし、暗号化データcとして出力している。図5と図1とは、ラッチするタイミングが異なるだけである。
【0042】
図5のクロック5のような3つ組(AK、SB、SR)を入力または出力の近くに置いておくとDPAが可能になる。このため、図5では、入力や出力から遠い中央付近のラウンド(ラウンド5)に移動させている。なお、3つ組を置くのはクロック5に限られるものではない。クロック3やクロック4のように、ラウンド5より入力に近くてもよく、クロック6やクロック7のようにラウンド5より出力に近くてもよい。
【0043】
図6は、図5で説明した手順を実現する第1の実施の形態の暗号化装置100の一例を示す回路図である。暗号化装置100は、フリップフロップ111と、セレクタ112と、SB113a、113bと、SR114a、114bと、MC115a、115bと、AK116a〜116cと、を備えている。なお、図6では、AES暗号方式の各ラウンドの演算を行う演算部の主な構成を示している。暗号化装置100が、暗号化するデータを入力する入力部や、鍵情報を記憶する記憶部などをさらに備えていてもよい。
【0044】
フリップフロップ111は、中間結果dを格納する。セレクタ112は、6つの入力のうち各クロックで予め定められたデータを選択して出力する。図6では、セレクタ12の上部に記載された数値がクロックを表している。
【0045】
クロック0では、セレクタ112は、平文データmを選択しフリップフロップ111に中間結果dとして書き込む。クロック1からクロック4では、セレクタ112は、中間結果dをAK116a→SB113a→SR114a→MC115aにより変換した結果を選択しフリップフロップ111に中間結果dとして書き込む。クロック5では、セレクタ112は、中間結果dをAK116a→SB113a→SR114aにより変換した結果を選択しフリップフロップ111に中間結果dとして書き込む。クロック6からクロック10では、セレクタ112は、中間結果dをMC115b→AK116b→SB113b→SR114bにより変換した結果を選択しフリップフロップ111に中間結果dとして書き込む。クロック11では、セレクタ112は、中間結果dをAK116cにより変換した結果を選択しフリップフロップ11に中間結果dとして書き込む。
【0046】
いずれのクロックでもない場合は、セレクタ112は、中間結果dを選択し、フリップフロップ111に中間結果dとして書き戻す。クロック11以降、暗号化処理の結果として暗号化データcが出力される。
【0047】
上述のように、SB113とSR114とは順序を入れ替えても結果は変わらない。また、FIPS−197に記載されているように、MC115とAK116とを入れ替えることも可能である。また、図6ではクロック5で3つ組(AK116a、SB113a、SR114a)を実行する例が記載されているが、3つ組をクロック2からクロック9のいずれで実行してもよい。
【0048】
次に、AES暗号方式の上記4つの関数の構成例について図7〜図11を用いて説明する。以下では、鍵長が128ビットの場合の例を説明する。
【0049】
図7は、AddRoundKey(AK116)の構成例を示す図である。図7に示すように、AddRoundKeyは、各ラウンドで128ビットのラウンド鍵(k0〜k10)と、128ビットの入力データとの排他的論理和である128ビットのデータを出力する。
【0050】
図8は、SubBytes(SB113)の構成例を示す図である。図8に示すようにSubBytesは、128ビットの入力データを16個の8ビットデータに分けて処理する。
【0051】
図9は、ShiftRows(SR114)の構成例を示す図である。図9に示すように、ShiftRowsは、128ビットの入力データを16個の8ビットデータに分割して並び替える。図9では、入力データを分割した各8ビットデータが、矢印の先で表された位置に並び替えられることが示されている。
【0052】
図10は、ShiftRowsにより並べ替えられるバイトの対応関係を例示する図である。図10は、図9に示す順で並び替えられる場合の入力バイトと出力バイトとの対応関係を示している。
【0053】
図11は、MixColumns(MC115)の構成例を示す図である。図11に示すように、MixColumnsは、128ビットの入力データを4個の32ビットデータに分けて処理する。
【0054】
次に、図6のような回路構成の場合に各クロックで出力される中間結果dについて説明する。図12は、各クロックでフリップフロップ111に格納される中間結果dの値を示す図である。図12は、図3と同様に中間結果dの値を式により表現している。
【0055】
図13は、図12の中間結果dから算出される、連続するクロックの中間結果dのハミング距離を示す図である。図13に示すように、第1の実施の形態の回路構成(図6)によれば、全てのクロックにおいてdのハミング距離は上記の4つの条件を満足しないことが分かる。
【0056】
なお、上記4つの条件を満たさないような回路構成は図6に限られるものではない。ラウンド鍵を用いてデータを演算するラウンドのうち、最初のラウンドでAK→SB→MCの順に演算を行い、最後の1つ前のラウンドでMC→AK→SBの順、または、AK→MC→SBの順で演算を行い、最後のラウンドで、AKを含む演算を行うものであれば、暗号化装置100の演算部としてどのような回路を用いてもよい。
【0057】
このような回路であれば、最初のラウンドでMCを実行するため、次のラウンド(クロック)との間のdのハミング距離の式には、必ずM(MC)が含まれる。また、最後の1つ前のラウンドでMCを実行するため、最後のラウンドとの間のdのハミング距離の式には、必ずM(MC)が含まれる。したがって、上記(3)の条件が満たされないため、これらのラウンド(クロック)についてはDPAは適用不可となる。
【0058】
また、2ラウンドから最後のラウンドの2つ前までの各ラウンドでは、dのハミング距離の式に少なくとも2つのラウンド鍵が含まれる。したがって、上記(2)の条件が満たされないため、これらの各ラウンドについてもDPAは適用不可となる。
【0059】
このような回路としては、例えば、ラウンド5でAK→SBの順で演算を行い、ラウンド6以降でSR→MC→AK→SBの順で演算を行い、最後のラウンドでSR→AKの演算を行う回路が挙げられる。また、このような回路の各ラウンドのうち任意のラウンドのSRのみを独立したクロック(ラウンド)で演算するように構成してもよい。
【0060】
なお、最初のラウンドでは、SRはMCより後以外であればいずれの箇所に挿入してもよい。具体的には、最初のラウンドでは、AKの前、SBの前、および、MCの前のいずれかにSRを実行するように構成すればよい。
【0061】
また、最後の1つ前のラウンドでは、SRは、MCより後であればいずれの箇所に挿入してもよい。具体的には、最後の1つ前のラウンドでは、MC→AK→SBの順で演算する場合は、MCの後、AKの後、および、SBの後のいずれかにSRを実行するように構成すればよい。また、AK→MC→SBの順で演算する場合は、MCの後、および、SBの後のいずれかにSRを実行するように構成すればよい。
【0062】
図14は、第1の実施の形態の変形例にかかる暗号化装置200の一例を示す回路図である。図14は、図6の回路の等価回路の一例を示している。図14に示すように、暗号化装置200は、フリップフロップ111と、セレクタ112−2と、SB113と、SR114と、MC115a、115bと、AK116a、116cと、セレクタ121と、を備えている。
【0063】
図14の回路は機能的には図6と等価であるが、AK116a→SB113→SR114の部分を共有することで回路規模を削減している。図2の回路と比較した場合、図14の回路は、1つのMCおよびセレクタ121が増加しただけである。
【0064】
このように、第1の実施の形態にかかる暗号化装置では、AES暗号方式のSubBytes、ShiftRows、MixColumns、およびAddRoundKeyの各ラウンドの演算での処理順序をDPAが適用できない条件を満たす順序に並べ替えて演算する。これにより、乱数の生成等を行うことなく、未対策のAESと同程度の回路規模および電力消費であり、かつ、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。なお、安全性をさらに高めるために、従来のサイドチャネル攻撃対策と併用することも可能である。
【0065】
(第2の実施の形態)
第2の実施の形態では、第1の実施の形態の暗号化装置と同様の手法を、AES暗号方式の復号装置に適用した例について説明する。
【0066】
最初に、図15を用いて、サイドチャネル攻撃対策のない通常のAESの復号処理手順を説明する。図15は、サイドチャネル攻撃対策のないAES暗号方式の復号処理手順を示す図である。
【0067】
図15に示すように、通常のAES暗号方式では、上記4つの逆関数をSR−1→SB−1→AK−1→MC−1の順に実行し、最後だけSR−1→SB−1→AK−1の順に実行する。
【0068】
図16は、第2の実施の形態によるAES暗号方式の復号処理手順を示す図である。図16に示すように、クロック0では暗号化データcが入力され、クロック1からクロック4ではSR−1→SB−1→AK−1→MC−1により変換した結果をラッチし、クロック5ではSR−1→SB−1→AK−1により変換した結果をラッチし、クロック6からクロック10ではMC−1→SR−1→SB−1→AK−1により変換した結果をラッチし、平文データmとして出力している。
【0069】
図17は、図16で説明した手順を実現する第2の実施の形態の復号装置300の一例を示す回路図である。復号装置300は、フリップフロップ311と、セレクタ312と、SB−1313a、313bと、SR−1314a、314bと、MC−1315a、315bと、AK−1316a〜316cと、を備えている。
【0070】
図17に示すように、復号装置300は、第1の実施の形態の暗号化装置100の回路図(図6)の各変換関数に対応する逆関数を、図6の各変換関数の実行順序と逆の順序で実行する回路となっている。
【0071】
図18は、各クロックでフリップフロップ311に格納される中間結果dの値を示す図である。図18は、図3および図12と同様に中間結果dの値を式により表現している。
【0072】
図19は、図18の中間結果dから算出される、連続するクロックの中間結果dのハミング距離を示す図である。図19に示すように、第2の実施の形態の回路構成(図17)によれば、全てのクロックにおいてdのハミング距離は上記の4つの条件を満足しないことが分かる。
【0073】
なお、上記4つの条件を満たさないような回路構成は図17に限られるものではない。ラウンド鍵を用いてデータを演算するラウンドのうち、最初のラウンドでAK−1を含む演算を行い、最初の1つ後のラウンドでSB−1→AK−1→MC−1の順、または、SB−1→MC−1→AK−1の順で演算を行い、最後のラウンドでMC−1→SB−1→AK−1の順で演算を行うものであれば、復号装置300の演算部としてどのような回路を用いてもよい。
【0074】
このような回路であれば、最初の1つ後のラウンドでMC−1を実行するため、最初のラウンド(クロック)との間のdのハミング距離の式には、必ずM−1(MC−1)が含まれる。また、最後のラウンドでMC−1を実行するため、最後の1つ前のラウンドと最後のラウンドとの間のdのハミング距離の式には、必ずMC−1が含まれる。したがって、上記(3)の条件が満たされないため、これらのラウンド(クロック)についてはDPAは適用不可となる。
【0075】
また、2ラウンドから最後のラウンドの2つ前までの各ラウンドでは、dのハミング距離の式に少なくとも2つのラウンド鍵が含まれる。したがって、上記(2)の条件が満たされないため、これらの各ラウンドについてもDPAは適用不可となる。
【0076】
なお、最初の1つ後のラウンドでは、SR−1は、MC−1より前であればいずれの箇所に挿入してもよい。具体的には、最初の1つ後のラウンドでは、SB−1→AK−1→MC−1の順で演算する場合は、SB−1の前、AK−1の前、および、MC−1の前のいずれかにSR−1を実行するように構成すればよい。また、SB−1→MC−1→AK−1の順で演算する場合は、SB−1の前、および、MC−1の前のいずれかにSR−1を実行するように構成すればよい。
【0077】
また、最後のラウンドでは、SR−1はMC−1より後であればいずれの箇所に挿入してもよい。具体的には、最後のラウンドでは、MC−1の後、SB−1の後、および、AK−1の後のいずれかにSR−1を実行するように構成すればよい。
【0078】
このように、第2の実施の形態にかかる復号装置では、第1の実施の形態の暗号化装置と同様の手法をAES暗号方式の復号処理に適用できる。これにより、乱数の生成等を行うことなく、未対策のAESと同程度の回路規模および電力消費であり、かつ、サイドチャネル攻撃に対して安全な復号装置を実現できる。
【0079】
(第3の実施の形態)
第3の実施の形態では、スマートグリッドに適用した実施の形態を説明する。スマートグリッドとは、原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際の電力品質の安定化を図るために構築されている次世代電力網である。
【0080】
図20は、第3の実施の形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するスマートメーター3010aと、家電機器を管理するホームサーバであるHEMS(Home Energy Management System)3020が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS(Building Energy Management System)3030がビル毎に設置される。商業ビルには、スマートメーター3010aと同様のスマートメーター3010bが設置される。以下では、スマートメーター3010aおよび3010bを単にスマートメーター3010という。
【0081】
スマートメーター3010は、コンセントレータとよばれる中継器(コンセントレータ3040)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS(Meter Data Management System)3050と通信する。MDMS3050は、各家庭のスマートメーター3010から一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるEMS(Energy Management System)3060は、MDMS3050に集まった複数の家庭の電力使用量、或いは、電力系統に設置されたセンサからの情報に基づいて、各家庭のスマートメーター3010やHEMS3020に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS3060は、遠隔端末ユニットであるRTU(Remote Terminal Unit)3071に接続された太陽光発電や風力発電などの分散電源3080、同じくRTU3072に接続された蓄電装置3090、および、RTU3073に接続された発電側との間を制御する送配電制御装置3100を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【0082】
図21は、スマートメーター3010とMDMS3050とが接続された構成例を示すブロック図である。スマートメーター3010は、MDMS3050と暗号通信を行う。通信経路上にコンセントレータ3040が存在するが、コンセントレータ3040は暗号通信を中継するのみである。
【0083】
例えば、計測部410に接続する通信部420の暗復号部421が、AESの鍵情報を用いて計測値を暗号化し、通信部420の送受信部422が暗号化した計測値をMDMS3050に送る。MDMS3050の送受信部422は暗号化された計測値を受信し、MDMS3050の暗復号部421は、保持するAESの鍵情報を用いて暗号化された計測値を復号する。これにより、通信路上で通信が傍受されたとしても、傍受者は計測値を知ることができない。或いは、MDMS3050から計測部410に制御用コマンドが送られる場合がある。例えば、計測の中止や開始、計測データの送付指示などの制御コマンドである。MDMS3050の暗復号部421は、AESの鍵情報を用いて、制御コマンドを暗号化し、MDMS3050の送受信部422は暗号化した制御コマンドをスマートメーター3010の通信部420に送信する。通信部420の送受信部422は、暗号化された制御コマンドを受信し、通信部420の暗復号部421はAESの鍵情報を用いて暗号化制御コマンドを復号し、制御コマンドを計測部410に送る。或いは、スマートメーター3010に設けられる記憶装置(図示せず)の記憶領域に電力使用量データが格納されており、通信部420の暗復号部421は、AESの鍵情報を用いて当該電力使用量データを暗号化し、通信部420の送受信部422は暗号化電力使用量データをMDMS3050に送信する。MDMS3050の送受信部422は、暗号化電力使用量データを受信し、MDMS3050の暗復号部520はAESの鍵情報を用いて当該暗号化電力使用量データを復号する。ここで、スマートメーター3010の暗復号部421が第1の実施の形態の暗号化装置(100、200)および第2の実施の形態の復号装置(300)を備えている。第1の実施の形態の平文データmが本実施の形態の計測値や制御コマンドに対応し、第1の実施の形態の暗号化データcが本実施の形態の暗号化された計測値(電力使用量)や暗号化された制御コマンドに対応する。
【0084】
図22は、HEMS3020とEMS3060が接続された構成例を示すブロック図である。EMS3060の暗復号部720は制御情報を暗号化し、EMS3060の送受信部710は暗号化された制御情報をHEMS3020の通信部620内の送受信部622に送信する。HEMS3020の送受信部622は暗号化された制御情報を受信し、HEMS3020の通信部620内の暗復号部621は暗号化された制御情報を復号する。復号された制御情報はHEMS3020の制御部640に受信して、制御部640は制御情報に基づいて、家庭内の機器を制御する。また、さらに以下の動作をしてもよい。HEMS3020の制御部640から家庭内の機器の状態を表す機器状態情報などをHEMS3020の暗復号部621で暗号化して、HEMS3020の送受信部622がEMS3060に送信する。そして、EMS3060の送受信部720が暗号化された機器状態情報をEMS3060の暗復号部720が復号して、EMS3060では復号された機器状態情報を利用してその後の制御に利用などする。ここで、HEMS3020の暗復号部621が第1の実施の形態の暗号化装置(100、200)および第2の実施の形態の復号装置(300)を備えている。第1の実施の形態の平文データmが本実施の形態の制御情報や機器状態情報に対応し、第1の実施の形態の暗号化データcが本実施の形態の暗号化された制御情報や暗号化された機器状態情報に該当する。
【0085】
このように、第3の実施の形態では、コンテンツ保護と異なる分野である次世代電力網で用いられるデータに対して、データの不正利用を防止することができる。
【0086】
次に、第1から第3の実施の形態の装置(暗号化装置または復号装置)のハードウェア構成について説明する。
【0087】
第1から第3の実施の形態にかかる装置は、CPU(Central Processing Unit)などの制御装置と、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶装置と、ネットワークに接続して通信を行う通信I/Fと、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバスを備えており、通常のコンピュータを利用したハードウェア構成とすることができる。
【0088】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【0089】
100、200 暗号化装置
111 フリップフロップ
112 セレクタ
113 SB(SubBytes)
114 SR(ShiftRows)
115 MC(MixColumns)
116 AK(AddRoundKey)
300 復号装置
311 フリップフロップ
312 セレクタ
313 SB−1(InvSubBytes)
314 SR−1(InvShiftRows)
315 MC−1(InvMixColumns)
316 AK−1(InvAddRoundKey)
【特許請求の範囲】
【請求項1】
AES(Advanced Encryption Standard)暗号方式の暗号化装置であって、
鍵情報を用いてデータを演算するラウンドのうち、
最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとをこの順序で含む演算を行い、
最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含む演算を行い、
最後のラウンドで、AddRoundKeyを含む演算を行う演算部
を備えることを特徴とする暗号化装置。
【請求項2】
前記演算部は、
最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとのいずれかの前にShiftRowsを含む演算を行い、
最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含み、MixColumnsと、AddRoundKeyと、SubBytesとのいずれかの後にShiftRowsを含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含み、MixColumnsと、SubBytesとのいずれかの後にShiftRowsを含む演算を行うこと、
を特徴とする請求項1に記載の暗号化装置。
【請求項3】
AES(Advanced Encryption Standard)暗号方式の復号装置であって、
鍵情報を用いてデータを演算するラウンドのうち、
最初のラウンドで、InvAddRoundKeyを含む演算を行い、
最初の1つ後のラウンドで、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとをこの順序で含む演算、または、InvSubBytesと、InvMixColumnsと、InvAddRoundKeyとをこの順序で含む演算を行い、
最後のラウンドで、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとをこの順序で含む演算を行う演算部
を備えることを特徴とする復号装置。
【請求項4】
前記演算部は、
最初の1つ後のラウンドで、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとをこの順序で含み、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとのいずれかの前にInvShiftRowsを含む演算、または、InvSubBytesと、InvMixColumnsと、InvAddRoundKeyとをこの順序で含み、InvSubBytesと、InvMixColumnsとのいずれかの前にInvShiftRowsを含む演算を行い、
最後のラウンドで、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとをこの順序で含み、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとのいずれかの後にInvShiftRowsを含む演算を行うこと、
を特徴とする請求項3に記載の復号装置。
【請求項1】
AES(Advanced Encryption Standard)暗号方式の暗号化装置であって、
鍵情報を用いてデータを演算するラウンドのうち、
最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとをこの順序で含む演算を行い、
最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含む演算を行い、
最後のラウンドで、AddRoundKeyを含む演算を行う演算部
を備えることを特徴とする暗号化装置。
【請求項2】
前記演算部は、
最初のラウンドで、AddRoundKeyと、SubBytesと、MixColumnsとのいずれかの前にShiftRowsを含む演算を行い、
最後の1つ前のラウンドで、MixColumnsと、AddRoundKeyと、SubBytesとをこの順序で含み、MixColumnsと、AddRoundKeyと、SubBytesとのいずれかの後にShiftRowsを含む演算、または、AddRoundKeyと、MixColumnsと、SubBytesとをこの順序で含み、MixColumnsと、SubBytesとのいずれかの後にShiftRowsを含む演算を行うこと、
を特徴とする請求項1に記載の暗号化装置。
【請求項3】
AES(Advanced Encryption Standard)暗号方式の復号装置であって、
鍵情報を用いてデータを演算するラウンドのうち、
最初のラウンドで、InvAddRoundKeyを含む演算を行い、
最初の1つ後のラウンドで、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとをこの順序で含む演算、または、InvSubBytesと、InvMixColumnsと、InvAddRoundKeyとをこの順序で含む演算を行い、
最後のラウンドで、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとをこの順序で含む演算を行う演算部
を備えることを特徴とする復号装置。
【請求項4】
前記演算部は、
最初の1つ後のラウンドで、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとをこの順序で含み、InvSubBytesと、InvAddRoundKeyと、InvMixColumnsとのいずれかの前にInvShiftRowsを含む演算、または、InvSubBytesと、InvMixColumnsと、InvAddRoundKeyとをこの順序で含み、InvSubBytesと、InvMixColumnsとのいずれかの前にInvShiftRowsを含む演算を行い、
最後のラウンドで、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとをこの順序で含み、InvMixColumnsと、InvSubBytesと、InvAddRoundKeyとのいずれかの後にInvShiftRowsを含む演算を行うこと、
を特徴とする請求項3に記載の復号装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2011−175039(P2011−175039A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−37882(P2010−37882)
【出願日】平成22年2月23日(2010.2.23)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願日】平成22年2月23日(2010.2.23)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]