(57)【要約】【課題】回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置を提供する。【解決手段】ＡＥＳ暗号方式の暗号化装置１００であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓと、ＭｉｘＣｏｌｕｍｎｓとをこの順序で含む演算を行い、最後の１つ前のラウンドで、ＭｉｘＣｏｌｕｍｎｓと、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓとをこの順序で含む演算、または、ＡｄｄＲｏｕｎｄＫｅｙと、ＭｉｘＣｏｌｕｍｎｓと、ＳｕｂＢｙｔｅｓとをこの順序で含む演算を行い、最後のラウンドで、ＡｄｄＲｏｕｎｄＫｅｙを含む演算を行う演算部を備える。【選択図】図６
2011175039.tif 000002
【特許請求の範囲】
【請求項１】
ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式の暗号化装置であって、
鍵情報を用いてデータを演算するラウンドのうち、
最初のラウンドで、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓと、ＭｉｘＣｏｌｕｍｎｓとをこの順序で含む演算を行い、
最後の１つ前のラウンドで、ＭｉｘＣｏｌｕｍｎｓと、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓとをこの順序で含む演算、または、ＡｄｄＲｏｕｎｄＫｅｙと、ＭｉｘＣｏｌｕｍｎｓと、ＳｕｂＢｙｔｅｓとをこの順序で含む演算を行い、
最後のラウンドで、ＡｄｄＲｏｕｎｄＫｅｙを含む演算を行う演算部
を備えることを特徴とする暗号化装置。
【請求項２】
前記演算部は、
最初のラウンドで、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓと、ＭｉｘＣｏｌｕｍｎｓとのいずれかの前にＳｈｉｆｔＲｏｗｓを含む演算を行い、
最後の１つ前のラウンドで、ＭｉｘＣｏｌｕｍｎｓと、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓとをこの順序で含み、ＭｉｘＣｏｌｕｍｎｓと、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓとのいずれかの後にＳｈｉｆｔＲｏｗｓを含む演算、または、ＡｄｄＲｏｕｎｄＫｅｙと、ＭｉｘＣｏｌｕｍｎｓと、ＳｕｂＢｙｔｅｓとをこの順序で含み、ＭｉｘＣｏｌｕｍｎｓと、ＳｕｂＢｙｔｅｓとのいずれかの後にＳｈｉｆｔＲｏｗｓを含む演算を行うこと、
を特徴とする請求項１に記載の暗号化装置。
【請求項３】
ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式の復号装置であって、
鍵情報を用いてデータを演算するラウンドのうち、
最初のラウンドで、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙを含む演算を行い、
最初の１つ後のラウンドで、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙと、ＩｎｖＭｉｘＣｏｌｕｍｎｓとをこの順序で含む演算、または、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＭｉｘＣｏｌｕｍｎｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙとをこの順序で含む演算を行い、
最後のラウンドで、ＩｎｖＭｉｘＣｏｌｕｍｎｓと、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙとをこの順序で含む演算を行う演算部
を備えることを特徴とする復号装置。
【請求項４】
前記演算部は、
最初の１つ後のラウンドで、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙと、ＩｎｖＭｉｘＣｏｌｕｍｎｓとをこの順序で含み、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙと、ＩｎｖＭｉｘＣｏｌｕｍｎｓとのいずれかの前にＩｎｖＳｈｉｆｔＲｏｗｓを含む演算、または、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＭｉｘＣｏｌｕｍｎｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙとをこの順序で含み、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＭｉｘＣｏｌｕｍｎｓとのいずれかの前にＩｎｖＳｈｉｆｔＲｏｗｓを含む演算を行い、
最後のラウンドで、ＩｎｖＭｉｘＣｏｌｕｍｎｓと、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙとをこの順序で含み、ＩｎｖＭｉｘＣｏｌｕｍｎｓと、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙとのいずれかの後にＩｎｖＳｈｉｆｔＲｏｗｓを含む演算を行うこと、
を特徴とする請求項３に記載の復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化装置および復号装置に関する。
【背景技術】
【０００２】
スマートグリッドで使われるスマートメーターでは、メーターの改ざん防止等のためにセキュリティによる保護が必要とされ、暗号技術が応用されている。スマートメーターを耐タンパー化する上でサイドチャネル攻撃対策をどのように行うかは重要な事項である。スマートメーターでは、安価にするために回路規模を小さくし、また省電力にすることでエネルギー効率を高くする要請がある。したがって、安全性を高めるためのサイドチャネル攻撃対策でも回路規模、電力を減らす必要がある。
【０００３】
暗号技術としては、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式などが知られている。ＡＥＳ暗号方式は、旧来から使われていたＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式の後継として米国政府標準になった暗号アルゴリズムである。
【０００４】
暗号装置に対する攻撃として、ＳＰＡ（Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）やＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）などのサイドチャネル攻撃が注目されている（例えば、非特許文献１）。これらのサイドチャネル攻撃は、電力や電磁気を測定するだけというパッシブな攻撃であるため、痕跡が残らないという問題がある。
【０００５】
従来のサイドチャネル攻撃対策としては、乱数を使ったマスクにより、計算途中の値をかく乱することで、情報が漏れても意味のない情報であるようにするといった対策が行われている（例えば、非特許文献２）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】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.
【非特許文献２】S. Mangard, E. Oswald, T. Popp, Power Analysis Attacks Revealing the Secrets of Smart Cards, Chapter 9. Masking, pp. 223-244, Springer, 2007.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、乱数生成処理は比較的重い処理であり、非特許文献２のように乱数を使用する方法では、速度、回路規模、および電力等に悪影響があるという問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置および復号装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式の暗号化装置であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓと、ＭｉｘＣｏｌｕｍｎｓとをこの順序で含む演算を行い、最後の１つ前のラウンドで、ＭｉｘＣｏｌｕｍｎｓと、ＡｄｄＲｏｕｎｄＫｅｙと、ＳｕｂＢｙｔｅｓとをこの順序で含む演算、または、ＡｄｄＲｏｕｎｄＫｅｙと、ＭｉｘＣｏｌｕｍｎｓと、ＳｕｂＢｙｔｅｓとをこの順序で含む演算を行い、最後のラウンドで、ＡｄｄＲｏｕｎｄＫｅｙを含む演算を行う演算部を備えることを特徴とする。
【００１０】
また、本発明は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式の復号装置であって、鍵情報を用いてデータを演算するラウンドのうち、最初のラウンドで、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙを含む演算を行い、最初の１つ後のラウンドで、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙと、ＩｎｖＭｉｘＣｏｌｕｍｎｓとをこの順序で含む演算、または、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＭｉｘＣｏｌｕｍｎｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙとをこの順序で含む演算を行い、最後のラウンドで、ＩｎｖＭｉｘＣｏｌｕｍｎｓと、ＩｎｖＳｕｂＢｙｔｅｓと、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙとをこの順序で含む演算を行う演算部を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、回路規模を増加させずにサイドチャネル攻撃に対して安全な暗号化装置および復号装置を提供することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】サイドチャネル攻撃対策のないＡＥＳ暗号方式の暗号化処理手順を示す図。
【図２】図１の手順を実現する暗号化装置の一例を示す回路図。
【図３】各クロックでフリップフロップに格納される中間結果ｄの値を示す図。
【図４】連続するクロックの中間結果ｄのハミング距離を示す図。
【図５】第１の実施の形態によるＡＥＳ暗号方式の暗号化処理手順を示す図。
【図６】第１の実施の形態の暗号化装置の一例を示す回路図。
【図７】ＡｄｄＲｏｕｎｄＫｅｙの構成例を示す図。
【図８】ＳｕｂＢｙｔｅｓの構成例を示す図。
【図９】ＳｈｉｆｔＲｏｗｓの構成例を示す図。
【図１０】ＳｈｉｆｔＲｏｗｓにより並べ替えられるバイトの対応関係を例示する図。
【図１１】ＭｉｘＣｏｌｕｍｎｓの構成例を示す図。
【図１２】各クロックでフリップフロップに格納される中間結果ｄの値を示す図。
【図１３】連続するクロックの中間結果ｄのハミング距離を示す図。
【図１４】第１の実施の形態の変形例にかかる暗号化装置の一例を示す回路図。
【図１５】サイドチャネル攻撃対策のないＡＥＳ暗号方式の復号処理手順を示す図。
【図１６】第２の実施の形態によるＡＥＳ暗号方式の復号処理手順を示す図。
【図１７】第２の実施の形態の復号装置の一例を示す回路図。
【図１８】各クロックでフリップフロップに格納される中間結果ｄの値を示す図。
【図１９】連続するクロックの中間結果ｄのハミング距離を示す図。
【図２０】第３の実施の形態の次世代電力網の一構成例を示す図。
【図２１】スマートメーターとＭＤＭＳとが接続された構成例を示すブロック図。
【図２２】ＨＥＭＳとＥＭＳが接続された構成例を示すブロック図。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、この発明にかかる暗号化装置の好適な実施の形態を詳細に説明する。
【００１４】
（第１の実施の形態）
第１の実施の形態にかかる暗号化装置は、ＡＥＳ暗号方式で定められている４つの変換関数であるＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓ、およびＡｄｄＲｏｕｎｄＫｅｙの各ラウンドの演算での処理順序を、所定の条件を満たすように変更する。これにより、乱数の生成等を行うことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。
【００１５】
最初に、ＤＰＡの概要について説明する。ＤＰＡは、データ処理を行った回路の消費電力を測定することで鍵を取り出す攻撃である。なお、回路の消費電力は、処理したデータの内容に依存して変化する。ＤＰＡでは、暗号化処理途中の消費電力も攻撃に利用できるため効率の良い攻撃が可能である。
【００１６】
現在一般に用いられているＣＭＯＳロジックで構成したハードウェアの場合、論理素子の出力が変化した場合に電力が消費される。例えば、ある回路の出力が「００００」の４ビットから「０００１」に１ビット変化したときの消費電力を１単位とすると、「００００」から「１１１１」に変化したときは、４単位の電力を消費することになる。また、出力が「１０１０」から「０１０１」のように全ビット反転したときは４単位の電力消費となる。「１０１０」から「１０１０」のように出力が全く変化しなかったときは電力を消費しないことになる。すなわち、事前の出力値と現在の出力値とのハミング距離が、電力消費として外部から観測できることになる。ＤＰＡは、この電力消費を観測することで攻撃を行う。
【００１７】
ＤＰＡは、次のような手順で攻撃を行う。
（１）ある鍵を仮定して処理中のハミング距離を予想する
（２）測定した消費電力と予想したハミング距離との間の類似度を計算する
（３）複数の測定データに関して類似度が最も高い鍵を、当たり鍵と判定する
この際、仮定する鍵は８ビット程度と小さくないと判別が困難になる。類似度は、差の平均や、相関係数などの関数が用いられる。
【００１８】
上述のように、従来のＤＰＡ対策では、処理前に処理するデータに乱数を作用させ、処理後のデータから乱数の影響を取り除く、というマスク処理を行っている。これは、消費電力から鍵情報を取り出せたとしても、乱数により攪拌された情報に基づく鍵情報であるため、真の鍵は取り出せないという原理に基づいている。マスク処理のための乱数発生器の使用は、回路規模の増大と電力消費の増大をもたらす。
【００１９】
ハードウェアで実装する場合には、ノイズ発生源を設けることでＳＮ比を悪くしてＤＰＡに必要となる波形数を増やすといった対策が提案されている。また、どのようなデータが入力されても、処理中のハミング距離が一定になるような冗長符号化を行うことで、そもそも電力変化がおきないように工夫したデュアルレールといった回路構成にする方式が提案されている。しかし、ノイズ発生源は電力を消費するし、デュアルレールにすることは回路規模、電力消費共に数倍大きくなるという問題が生じる。
【００２０】
一般にハードウェアは、フリップフロップで構成される記憶部と組み合わせ回路とで構成される。ＤＰＡの観点では、フリップフロップはクロックに同期して動くのでハミング距離を予想しやすい。一方、組み合わせ回路はタイミングが不定でありハミング距離を予想するのは困難である。また、組み合わせ回路よりフリップフロップの方が電力消費が大きいので、消費電力が測定しやすい。すなわち、フリップフロップの方が組み合わせ回路よりＤＰＡに対して脆弱であるため、フリップフロップを適切に保護する必要がある。
【００２１】
次に、ＡＥＳ暗号方式の概要について説明する。ＡＥＳ暗号方式による暗号化装置は、データ攪拌部と鍵スケジュール部とを備える。データ攪拌部は、上記４つの変換関数を含んでいる。ＡＥＳ暗号方式では、この４つの変換関数を定められた順序に複数回適用することで暗号化処理を行う。また、ＡＥＳ暗号方式による復号処理は、上記４つの変換関数の逆関数（ＩｎｖＳｕｂＢｙｔｅｓ、ＩｎｖＳｈｉｆｔＲｏｗｓ、ＩｎｖＭｉｘＣｏｌｕｍｎｓ、ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ）を含む。復号処理は、これらの逆関数を、暗号化処理の変換関数と逆順に適用することで実行される。
【００２２】
以下では、各関数について次の略称を用いることにする。
ＳＢ：ＳｕｂＢｙｔｅｓ
ＳＲ：ＳｈｉｆｔＲｏｗｓ
ＭＣ：ＭｉｘＣｏｌｕｍｎｓ
ＡＫ：ＡｄｄＲｏｕｎｄＫｅｙ
ＳＢ−１：ＩｎｖＳｕｂＢｙｔｅｓ
ＳＲ−１：ＩｎｖＳｈｉｆｔＲｏｗｓ
ＭＣ−１：ＩｎｖＭｉｘＣｏｌｕｍｎｓ
ＡＫ−１：ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ
【００２３】
ＡＥＳ暗号方式の変換関数の中には、処理する順序を入れ替えても演算結果が変わらない関数が存在する。後述するように、ＳＢは、バイト単位に独立した処理を行う関数である。また、ＳＲはバイト並び替えを行う関数である。したがって、ＳＢとＳＲとは、処理順序を入れ替えても結果は変わらない。同様に、ＭＣとＡＫも、条件付きで処理順序を入れ替えることができる。
【００２４】
ＡＥＳ暗号方式による暗号化処理の各ラウンドは、異なる鍵情報（ラウンド鍵）を使用する。従って、１ラウンド目は１つのラウンド鍵の影響を受け、２ラウンド目は２つのラウンド鍵の影響を受ける。言い換えると１ラウンド目の中間結果は入力と１つのラウンド鍵から計算できることになる。ＤＰＡの観点では、入力に近いラウンド程、予想が容易であり、先のラウンドに進むにつれて関係するラウンド鍵が増えるので予想が困難になる。出力側についても同様のことがいえる。すなわち、例えば上記逆関数等を用いて出力側から予想する場合、出力に近いラウンド程、予想が容易となる。
【００２５】
このように、ＤＰＡでは、中間のラウンドのラウンド鍵を攻撃するのは困難であり、入力や出力に近いラウンドが攻撃される。そこで、ＤＰＡ対策の効率を上げるためには、入力や出力に近いラウンドは十分に対策し、中間のラウンドでは入力や出力に近いラウンド程は対策しないか全く対策しない、ということが考えられる。
【００２６】
次に、図１を用いて、サイドチャネル攻撃対策のない通常のＡＥＳの暗号化処理手順を説明する。図１は、サイドチャネル攻撃対策のないＡＥＳ暗号方式の暗号化処理手順を示す図である。
【００２７】
図１に示すように、通常のＡＥＳ暗号方式では、４つの変換関数をＡＫ→ＳＢ→ＳＲ→ＭＣの順に実行し、最後だけＡＫ→ＳＢ→ＳＲ→ＡＫの順に実行する。図１の縦線は、ＡＥＳ暗号方式の標準規格であるＦＩＰＳ−１９７に記載されている処理手順に従って、暗号化処理を分割することを表している。すなわち、クロック０では平文データｍが入力され、クロック１ではＡＫにより変換した結果をラッチし、クロック２ではＳＢ→ＳＲ→ＭＣ→ＡＫにより変換した結果をラッチし、以下同様に各ラウンドを処理し、最後のラウンドだけＳＢ→ＳＲ→ＡＫによる変換を行う。そして、クロック１１でラッチされた結果が暗号化データｃとして出力される。なお、図１と同様に、第１の実施の形態では、１クロックでＡＥＳ暗号方式の１ラウンドを実行する。
【００２８】
図２は、図１で説明した手順を実現する暗号化装置１の一例を示す回路図である。暗号化装置１は、フリップフロップ１１と、セレクタ１２と、ＳＢ１３と、ＳＲ１４と、ＭＣ１５と、ＡＫ１６ａ〜１６ｃと、を備えている。
【００２９】
フリップフロップ１１は、中間結果ｄを格納する。セレクタ１２は、５つの入力のうち各クロックで予め定められたデータを選択して出力する。図２では、セレクタ１２の上部に記載された数値がクロックを表している。
【００３０】
クロック０では、セレクタ１２は、平文データｍを選択しフリップフロップ１１に中間結果ｄとして書き込む。クロック１では、セレクタ１２は、中間結果ｄをＡＫ１６ａにより変換した結果を選択しフリップフロップ１１に中間結果ｄとして書き込む。クロック２からクロック１０では、セレクタ１２は、中間結果ｄをＳＢ１３→ＳＲ１４→ＭＣ１５→ＡＫ１６ｂにより変換した結果を選択しフリップフロップ１１に中間結果ｄとして書き込む。クロック１１では、セレクタ１２は、中間結果ｄをＳＢ１３→ＳＲ１４→ＡＫ１６ｃにより変換した結果を選択しフリップフロップ１１に中間結果ｄとして書き込む。
【００３１】
いずれのクロックでもない場合は、セレクタ１２は、中間結果ｄを選択し、フリップフロップ１１に中間結果ｄとして書き戻す。クロック１１以降、暗号化処理の結果として暗号化データｃが出力される。
【００３２】
上述のように、ＳＢ１３とＳＲ１４とは順序を入れ替えても結果は変わらない。また、ＦＩＰＳ−１９７に記載されているように、ＭＣ１５とＡＫ１６ｂとを入れ替えることも可能である。
【００３３】
図３は、各クロックでフリップフロップ１１に格納される中間結果ｄの値を示す図である。図３では、中間結果ｄの値を式により表現している。説明の便宜上、図３では、「＋」は排他的論理和を表し、Ｓ（ｘ）＝ＳＲ（ＳＢ（ｘ））、Ｍ（ｘ）＝ＭＣ（ｘ）とする。また、Ｓ−１（ｘ）＝ＳＲ−１（ＳＢ−１（ｘ））、Ｍ−１（ｘ）＝ＭＣ−１（ｘ）とする。また、ＡＫは使用するラウンド鍵の番号を示すためにｘ＋ｋｎのように表記する。ｋｎは、ラウンドｎ（ｎは０≦ｎ≦１０を満たす整数）で用いるラウンド鍵を表す。クロック３からクロック８は、式が複雑になるため省略している。
【００３４】
図４は、連続するクロックの中間結果ｄのハミング距離を示す図である。例えば、１行目はクロック０の中間結果ｄとクロック１の中間結果ｄの値の差分（ハミング距離）を表している。以下では、この値を「ｄのハミング距離」と呼ぶことにする。
【００３５】
ｄのハミング距離の式が以下の４つの条件を満足するとき、ＤＰＡを適用可能である。
（１）平文データｍまたは暗号化データｃを含む
（２）ラウンド鍵ｋｎを１種類だけ含む
（３）ＭまたはＭ−１が含まれない
（４）ＳまたはＳ−１を１つだけ含む
【００３６】
図４の１行目のクロック０とクロック１の「ｄのハミング距離」は、（２）と（３）は満足するが、（１）と（４）を満足しない。このため、ＤＰＡを適用することはできない。図４の２行目のクロック１とクロック２の「ｄのハミング距離」は、（１）と（４）は満足するが、（２）と（３）を満足しない。このため、ＤＰＡを適用することはできない。図４の３行目のクロック９とクロック１０の「ｄのハミング距離」は、全ての条件を満足しないため、ＤＰＡを適用することはできない。図４の４行目のクロック１０とクロック１１の「ｄのハミング距離」は、全ての条件を満足するのでＤＰＡを適用可能である。
【００３７】
ここで、図４の１行目の場合について補足する。ラウンド鍵ｋ０は固定値でありメッセージ（平文データｍ）に依存しないため、メッセージを変えながら何度測定しても得られる情報量は存在しないことになる。これは条件（１）が必須であることを意味している。
【００３８】
図４の２行目の場合について補足する。ｄのハミング距離の式にＭが含まれているので、ｄのハミング距離のある１バイトは、必ずｍの３２ビット、ラウンド鍵ｋ０の３２ビット、およびラウンド鍵ｋ１の８ビットに依存している。従って、ラウンド鍵を４０ビット仮定しないと、ｄのハミング距離を予想できない。このためＤＰＡを適用できないことになる。これは条件（３）が必須であることを意味している。
【００３９】
なお、乱数を作用させてマスクを付与する従来の対策は、中間結果ｄの値を攪拌している。これにより、例えば上記クロック１０とクロック１１のｄのハミング距離のようにＤＰＡが適用可能な条件を満足する場合であっても、取り出した値がマスク（乱数）に依存しているために、結果として正しい鍵情報を取り出せないという対策になっていた。
【００４０】
一方、第１の実施の形態では、従来の対策と異なる原理を用いて、サイドチャネル攻撃対策を行う。すなわち、いずれのラウンド（クロック）でも、図４のようにして求めるｄのハミング距離が、上記（１）〜（４）の条件を満足しないような回路構成となるようにする。
【００４１】
図５は、第１の実施の形態によるＡＥＳ暗号方式の暗号化処理手順を示す図である。図５に示すように、クロック０では平文データｍが入力され、クロック１からクロック４ではＡＫ→ＳＢ→ＳＲ→ＭＣにより変換した結果をラッチし、クロック５ではＡＫ→ＳＢ→ＳＲにより変換した結果をラッチし、クロック６からクロック１０ではＭＣ→ＡＫ→ＳＢ→ＳＲにより変換した結果をラッチし、クロック１１ではＡＫにより変換した結果をラッチし、暗号化データｃとして出力している。図５と図１とは、ラッチするタイミングが異なるだけである。
【００４２】
図５のクロック５のような３つ組（ＡＫ、ＳＢ、ＳＲ）を入力または出力の近くに置いておくとＤＰＡが可能になる。このため、図５では、入力や出力から遠い中央付近のラウンド（ラウンド５）に移動させている。なお、３つ組を置くのはクロック５に限られるものではない。クロック３やクロック４のように、ラウンド５より入力に近くてもよく、クロック６やクロック７のようにラウンド５より出力に近くてもよい。
【００４３】
図６は、図５で説明した手順を実現する第１の実施の形態の暗号化装置１００の一例を示す回路図である。暗号化装置１００は、フリップフロップ１１１と、セレクタ１１２と、ＳＢ１１３ａ、１１３ｂと、ＳＲ１１４ａ、１１４ｂと、ＭＣ１１５ａ、１１５ｂと、ＡＫ１１６ａ〜１１６ｃと、を備えている。なお、図６では、ＡＥＳ暗号方式の各ラウンドの演算を行う演算部の主な構成を示している。暗号化装置１００が、暗号化するデータを入力する入力部や、鍵情報を記憶する記憶部などをさらに備えていてもよい。
【００４４】
フリップフロップ１１１は、中間結果ｄを格納する。セレクタ１１２は、６つの入力のうち各クロックで予め定められたデータを選択して出力する。図６では、セレクタ１２の上部に記載された数値がクロックを表している。
【００４５】
クロック０では、セレクタ１１２は、平文データｍを選択しフリップフロップ１１１に中間結果ｄとして書き込む。クロック１からクロック４では、セレクタ１１２は、中間結果ｄをＡＫ１１６ａ→ＳＢ１１３ａ→ＳＲ１１４ａ→ＭＣ１１５ａにより変換した結果を選択しフリップフロップ１１１に中間結果ｄとして書き込む。クロック５では、セレクタ１１２は、中間結果ｄをＡＫ１１６ａ→ＳＢ１１３ａ→ＳＲ１１４ａにより変換した結果を選択しフリップフロップ１１１に中間結果ｄとして書き込む。クロック６からクロック１０では、セレクタ１１２は、中間結果ｄをＭＣ１１５ｂ→ＡＫ１１６ｂ→ＳＢ１１３ｂ→ＳＲ１１４ｂにより変換した結果を選択しフリップフロップ１１１に中間結果ｄとして書き込む。クロック１１では、セレクタ１１２は、中間結果ｄをＡＫ１１６ｃにより変換した結果を選択しフリップフロップ１１に中間結果ｄとして書き込む。
【００４６】
いずれのクロックでもない場合は、セレクタ１１２は、中間結果ｄを選択し、フリップフロップ１１１に中間結果ｄとして書き戻す。クロック１１以降、暗号化処理の結果として暗号化データｃが出力される。
【００４７】
上述のように、ＳＢ１１３とＳＲ１１４とは順序を入れ替えても結果は変わらない。また、ＦＩＰＳ−１９７に記載されているように、ＭＣ１１５とＡＫ１１６とを入れ替えることも可能である。また、図６ではクロック５で３つ組（ＡＫ１１６ａ、ＳＢ１１３ａ、ＳＲ１１４ａ）を実行する例が記載されているが、３つ組をクロック２からクロック９のいずれで実行してもよい。
【００４８】
次に、ＡＥＳ暗号方式の上記４つの関数の構成例について図７〜図１１を用いて説明する。以下では、鍵長が１２８ビットの場合の例を説明する。
【００４９】
図７は、ＡｄｄＲｏｕｎｄＫｅｙ（ＡＫ１１６）の構成例を示す図である。図７に示すように、ＡｄｄＲｏｕｎｄＫｅｙは、各ラウンドで１２８ビットのラウンド鍵（ｋ０〜ｋ１０）と、１２８ビットの入力データとの排他的論理和である１２８ビットのデータを出力する。
【００５０】
図８は、ＳｕｂＢｙｔｅｓ（ＳＢ１１３）の構成例を示す図である。図８に示すようにＳｕｂＢｙｔｅｓは、１２８ビットの入力データを１６個の８ビットデータに分けて処理する。
【００５１】
図９は、ＳｈｉｆｔＲｏｗｓ（ＳＲ１１４）の構成例を示す図である。図９に示すように、ＳｈｉｆｔＲｏｗｓは、１２８ビットの入力データを１６個の８ビットデータに分割して並び替える。図９では、入力データを分割した各８ビットデータが、矢印の先で表された位置に並び替えられることが示されている。
【００５２】
図１０は、ＳｈｉｆｔＲｏｗｓにより並べ替えられるバイトの対応関係を例示する図である。図１０は、図９に示す順で並び替えられる場合の入力バイトと出力バイトとの対応関係を示している。
【００５３】
図１１は、ＭｉｘＣｏｌｕｍｎｓ（ＭＣ１１５）の構成例を示す図である。図１１に示すように、ＭｉｘＣｏｌｕｍｎｓは、１２８ビットの入力データを４個の３２ビットデータに分けて処理する。
【００５４】
次に、図６のような回路構成の場合に各クロックで出力される中間結果ｄについて説明する。図１２は、各クロックでフリップフロップ１１１に格納される中間結果ｄの値を示す図である。図１２は、図３と同様に中間結果ｄの値を式により表現している。
【００５５】
図１３は、図１２の中間結果ｄから算出される、連続するクロックの中間結果ｄのハミング距離を示す図である。図１３に示すように、第１の実施の形態の回路構成（図６）によれば、全てのクロックにおいてｄのハミング距離は上記の４つの条件を満足しないことが分かる。
【００５６】
なお、上記４つの条件を満たさないような回路構成は図６に限られるものではない。ラウンド鍵を用いてデータを演算するラウンドのうち、最初のラウンドでＡＫ→ＳＢ→ＭＣの順に演算を行い、最後の１つ前のラウンドでＭＣ→ＡＫ→ＳＢの順、または、ＡＫ→ＭＣ→ＳＢの順で演算を行い、最後のラウンドで、ＡＫを含む演算を行うものであれば、暗号化装置１００の演算部としてどのような回路を用いてもよい。
【００５７】
このような回路であれば、最初のラウンドでＭＣを実行するため、次のラウンド（クロック）との間のｄのハミング距離の式には、必ずＭ（ＭＣ）が含まれる。また、最後の１つ前のラウンドでＭＣを実行するため、最後のラウンドとの間のｄのハミング距離の式には、必ずＭ（ＭＣ）が含まれる。したがって、上記（３）の条件が満たされないため、これらのラウンド（クロック）についてはＤＰＡは適用不可となる。
【００５８】
また、２ラウンドから最後のラウンドの２つ前までの各ラウンドでは、ｄのハミング距離の式に少なくとも２つのラウンド鍵が含まれる。したがって、上記（２）の条件が満たされないため、これらの各ラウンドについてもＤＰＡは適用不可となる。
【００５９】
このような回路としては、例えば、ラウンド５でＡＫ→ＳＢの順で演算を行い、ラウンド６以降でＳＲ→ＭＣ→ＡＫ→ＳＢの順で演算を行い、最後のラウンドでＳＲ→ＡＫの演算を行う回路が挙げられる。また、このような回路の各ラウンドのうち任意のラウンドのＳＲのみを独立したクロック（ラウンド）で演算するように構成してもよい。
【００６０】
なお、最初のラウンドでは、ＳＲはＭＣより後以外であればいずれの箇所に挿入してもよい。具体的には、最初のラウンドでは、ＡＫの前、ＳＢの前、および、ＭＣの前のいずれかにＳＲを実行するように構成すればよい。
【００６１】
また、最後の１つ前のラウンドでは、ＳＲは、ＭＣより後であればいずれの箇所に挿入してもよい。具体的には、最後の１つ前のラウンドでは、ＭＣ→ＡＫ→ＳＢの順で演算する場合は、ＭＣの後、ＡＫの後、および、ＳＢの後のいずれかにＳＲを実行するように構成すればよい。また、ＡＫ→ＭＣ→ＳＢの順で演算する場合は、ＭＣの後、および、ＳＢの後のいずれかにＳＲを実行するように構成すればよい。
【００６２】
図１４は、第１の実施の形態の変形例にかかる暗号化装置２００の一例を示す回路図である。図１４は、図６の回路の等価回路の一例を示している。図１４に示すように、暗号化装置２００は、フリップフロップ１１１と、セレクタ１１２−２と、ＳＢ１１３と、ＳＲ１１４と、ＭＣ１１５ａ、１１５ｂと、ＡＫ１１６ａ、１１６ｃと、セレクタ１２１と、を備えている。
【００６３】
図１４の回路は機能的には図６と等価であるが、ＡＫ１１６ａ→ＳＢ１１３→ＳＲ１１４の部分を共有することで回路規模を削減している。図２の回路と比較した場合、図１４の回路は、１つのＭＣおよびセレクタ１２１が増加しただけである。
【００６４】
このように、第１の実施の形態にかかる暗号化装置では、ＡＥＳ暗号方式のＳｕｂＢｙｔｅｓ、ＳｈｉｆｔＲｏｗｓ、ＭｉｘＣｏｌｕｍｎｓ、およびＡｄｄＲｏｕｎｄＫｅｙの各ラウンドの演算での処理順序をＤＰＡが適用できない条件を満たす順序に並べ替えて演算する。これにより、乱数の生成等を行うことなく、未対策のＡＥＳと同程度の回路規模および電力消費であり、かつ、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。なお、安全性をさらに高めるために、従来のサイドチャネル攻撃対策と併用することも可能である。
【００６５】
（第２の実施の形態）
第２の実施の形態では、第１の実施の形態の暗号化装置と同様の手法を、ＡＥＳ暗号方式の復号装置に適用した例について説明する。
【００６６】
最初に、図１５を用いて、サイドチャネル攻撃対策のない通常のＡＥＳの復号処理手順を説明する。図１５は、サイドチャネル攻撃対策のないＡＥＳ暗号方式の復号処理手順を示す図である。
【００６７】
図１５に示すように、通常のＡＥＳ暗号方式では、上記４つの逆関数をＳＲ−１→ＳＢ−１→ＡＫ−１→ＭＣ−１の順に実行し、最後だけＳＲ−１→ＳＢ−１→ＡＫ−１の順に実行する。
【００６８】
図１６は、第２の実施の形態によるＡＥＳ暗号方式の復号処理手順を示す図である。図１６に示すように、クロック０では暗号化データｃが入力され、クロック１からクロック４ではＳＲ−１→ＳＢ−１→ＡＫ−１→ＭＣ−１により変換した結果をラッチし、クロック５ではＳＲ−１→ＳＢ−１→ＡＫ−１により変換した結果をラッチし、クロック６からクロック１０ではＭＣ−１→ＳＲ−１→ＳＢ−１→ＡＫ−１により変換した結果をラッチし、平文データｍとして出力している。
【００６９】
図１７は、図１６で説明した手順を実現する第２の実施の形態の復号装置３００の一例を示す回路図である。復号装置３００は、フリップフロップ３１１と、セレクタ３１２と、ＳＢ−１３１３ａ、３１３ｂと、ＳＲ−１３１４ａ、３１４ｂと、ＭＣ−１３１５ａ、３１５ｂと、ＡＫ−１３１６ａ〜３１６ｃと、を備えている。
【００７０】
図１７に示すように、復号装置３００は、第１の実施の形態の暗号化装置１００の回路図（図６）の各変換関数に対応する逆関数を、図６の各変換関数の実行順序と逆の順序で実行する回路となっている。
【００７１】
図１８は、各クロックでフリップフロップ３１１に格納される中間結果ｄの値を示す図である。図１８は、図３および図１２と同様に中間結果ｄの値を式により表現している。
【００７２】
図１９は、図１８の中間結果ｄから算出される、連続するクロックの中間結果ｄのハミング距離を示す図である。図１９に示すように、第２の実施の形態の回路構成（図１７）によれば、全てのクロックにおいてｄのハミング距離は上記の４つの条件を満足しないことが分かる。
【００７３】
なお、上記４つの条件を満たさないような回路構成は図１７に限られるものではない。ラウンド鍵を用いてデータを演算するラウンドのうち、最初のラウンドでＡＫ−１を含む演算を行い、最初の１つ後のラウンドでＳＢ−１→ＡＫ−１→ＭＣ−１の順、または、ＳＢ−１→ＭＣ−１→ＡＫ−１の順で演算を行い、最後のラウンドでＭＣ−１→ＳＢ−１→ＡＫ−１の順で演算を行うものであれば、復号装置３００の演算部としてどのような回路を用いてもよい。
【００７４】
このような回路であれば、最初の１つ後のラウンドでＭＣ−１を実行するため、最初のラウンド（クロック）との間のｄのハミング距離の式には、必ずＭ−１（ＭＣ−１）が含まれる。また、最後のラウンドでＭＣ−１を実行するため、最後の１つ前のラウンドと最後のラウンドとの間のｄのハミング距離の式には、必ずＭＣ−１が含まれる。したがって、上記（３）の条件が満たされないため、これらのラウンド（クロック）についてはＤＰＡは適用不可となる。
【００７５】
また、２ラウンドから最後のラウンドの２つ前までの各ラウンドでは、ｄのハミング距離の式に少なくとも２つのラウンド鍵が含まれる。したがって、上記（２）の条件が満たされないため、これらの各ラウンドについてもＤＰＡは適用不可となる。
【００７６】
なお、最初の１つ後のラウンドでは、ＳＲ−１は、ＭＣ−１より前であればいずれの箇所に挿入してもよい。具体的には、最初の１つ後のラウンドでは、ＳＢ−１→ＡＫ−１→ＭＣ−１の順で演算する場合は、ＳＢ−１の前、ＡＫ−１の前、および、ＭＣ−１の前のいずれかにＳＲ−１を実行するように構成すればよい。また、ＳＢ−１→ＭＣ−１→ＡＫ−１の順で演算する場合は、ＳＢ−１の前、および、ＭＣ−１の前のいずれかにＳＲ−１を実行するように構成すればよい。
【００７７】
また、最後のラウンドでは、ＳＲ−１はＭＣ−１より後であればいずれの箇所に挿入してもよい。具体的には、最後のラウンドでは、ＭＣ−１の後、ＳＢ−１の後、および、ＡＫ−１の後のいずれかにＳＲ−１を実行するように構成すればよい。
【００７８】
このように、第２の実施の形態にかかる復号装置では、第１の実施の形態の暗号化装置と同様の手法をＡＥＳ暗号方式の復号処理に適用できる。これにより、乱数の生成等を行うことなく、未対策のＡＥＳと同程度の回路規模および電力消費であり、かつ、サイドチャネル攻撃に対して安全な復号装置を実現できる。
【００７９】
（第３の実施の形態）
第３の実施の形態では、スマートグリッドに適用した実施の形態を説明する。スマートグリッドとは、原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際の電力品質の安定化を図るために構築されている次世代電力網である。
【００８０】
図２０は、第３の実施の形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するスマートメーター３０１０ａと、家電機器を管理するホームサーバであるＨＥＭＳ（Home  Energy  Management  System）３０２０が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるＢＥＭＳ（Building  Energy  Management  System）３０３０がビル毎に設置される。商業ビルには、スマートメーター３０１０ａと同様のスマートメーター３０１０ｂが設置される。以下では、スマートメーター３０１０ａおよび３０１０ｂを単にスマートメーター３０１０という。
【００８１】
スマートメーター３０１０は、コンセントレータとよばれる中継器（コンセントレータ３０４０）によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるＭＤＭＳ（Meter  Data  Management  System）３０５０と通信する。ＭＤＭＳ３０５０は、各家庭のスマートメーター３０１０から一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるＥＭＳ（Energy  Management  System）３０６０は、ＭＤＭＳ３０５０に集まった複数の家庭の電力使用量、或いは、電力系統に設置されたセンサからの情報に基づいて、各家庭のスマートメーター３０１０やＨＥＭＳ３０２０に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、ＥＭＳ３０６０は、遠隔端末ユニットであるＲＴＵ（Remote  Terminal  Unit）３０７１に接続された太陽光発電や風力発電などの分散電源３０８０、同じくＲＴＵ３０７２に接続された蓄電装置３０９０、および、ＲＴＵ３０７３に接続された発電側との間を制御する送配電制御装置３１００を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【００８２】
図２１は、スマートメーター３０１０とＭＤＭＳ３０５０とが接続された構成例を示すブロック図である。スマートメーター３０１０は、ＭＤＭＳ３０５０と暗号通信を行う。通信経路上にコンセントレータ３０４０が存在するが、コンセントレータ３０４０は暗号通信を中継するのみである。
【００８３】
例えば、計測部４１０に接続する通信部４２０の暗復号部４２１が、ＡＥＳの鍵情報を用いて計測値を暗号化し、通信部４２０の送受信部４２２が暗号化した計測値をＭＤＭＳ３０５０に送る。ＭＤＭＳ３０５０の送受信部４２２は暗号化された計測値を受信し、ＭＤＭＳ３０５０の暗復号部４２１は、保持するＡＥＳの鍵情報を用いて暗号化された計測値を復号する。これにより、通信路上で通信が傍受されたとしても、傍受者は計測値を知ることができない。或いは、ＭＤＭＳ３０５０から計測部４１０に制御用コマンドが送られる場合がある。例えば、計測の中止や開始、計測データの送付指示などの制御コマンドである。ＭＤＭＳ３０５０の暗復号部４２１は、ＡＥＳの鍵情報を用いて、制御コマンドを暗号化し、ＭＤＭＳ３０５０の送受信部４２２は暗号化した制御コマンドをスマートメーター３０１０の通信部４２０に送信する。通信部４２０の送受信部４２２は、暗号化された制御コマンドを受信し、通信部４２０の暗復号部４２１はＡＥＳの鍵情報を用いて暗号化制御コマンドを復号し、制御コマンドを計測部４１０に送る。或いは、スマートメーター３０１０に設けられる記憶装置（図示せず）の記憶領域に電力使用量データが格納されており、通信部４２０の暗復号部４２１は、ＡＥＳの鍵情報を用いて当該電力使用量データを暗号化し、通信部４２０の送受信部４２２は暗号化電力使用量データをＭＤＭＳ３０５０に送信する。ＭＤＭＳ３０５０の送受信部４２２は、暗号化電力使用量データを受信し、ＭＤＭＳ３０５０の暗復号部５２０はＡＥＳの鍵情報を用いて当該暗号化電力使用量データを復号する。ここで、スマートメーター３０１０の暗復号部４２１が第１の実施の形態の暗号化装置（１００、２００）および第２の実施の形態の復号装置（３００）を備えている。第１の実施の形態の平文データｍが本実施の形態の計測値や制御コマンドに対応し、第１の実施の形態の暗号化データｃが本実施の形態の暗号化された計測値（電力使用量）や暗号化された制御コマンドに対応する。
【００８４】
図２２は、ＨＥＭＳ３０２０とＥＭＳ３０６０が接続された構成例を示すブロック図である。ＥＭＳ３０６０の暗復号部７２０は制御情報を暗号化し、ＥＭＳ３０６０の送受信部７１０は暗号化された制御情報をＨＥＭＳ３０２０の通信部６２０内の送受信部６２２に送信する。ＨＥＭＳ３０２０の送受信部６２２は暗号化された制御情報を受信し、ＨＥＭＳ３０２０の通信部６２０内の暗復号部６２１は暗号化された制御情報を復号する。復号された制御情報はＨＥＭＳ３０２０の制御部６４０に受信して、制御部６４０は制御情報に基づいて、家庭内の機器を制御する。また、さらに以下の動作をしてもよい。ＨＥＭＳ３０２０の制御部６４０から家庭内の機器の状態を表す機器状態情報などをＨＥＭＳ３０２０の暗復号部６２１で暗号化して、ＨＥＭＳ３０２０の送受信部６２２がＥＭＳ３０６０に送信する。そして、ＥＭＳ３０６０の送受信部７２０が暗号化された機器状態情報をＥＭＳ３０６０の暗復号部７２０が復号して、ＥＭＳ３０６０では復号された機器状態情報を利用してその後の制御に利用などする。ここで、ＨＥＭＳ３０２０の暗復号部６２１が第１の実施の形態の暗号化装置（１００、２００）および第２の実施の形態の復号装置（３００）を備えている。第１の実施の形態の平文データｍが本実施の形態の制御情報や機器状態情報に対応し、第１の実施の形態の暗号化データｃが本実施の形態の暗号化された制御情報や暗号化された機器状態情報に該当する。
【００８５】
このように、第３の実施の形態では、コンテンツ保護と異なる分野である次世代電力網で用いられるデータに対して、データの不正利用を防止することができる。
【００８６】
次に、第１から第３の実施の形態の装置（暗号化装置または復号装置）のハードウェア構成について説明する。
【００８７】
第１から第３の実施の形態にかかる装置は、ＣＰＵ（Central  Processing  Unit）などの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆと、ＨＤＤ（Hard  Disk  Drive）、ＣＤ（Compact  Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバスを備えており、通常のコンピュータを利用したハードウェア構成とすることができる。
【００８８】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００８９】
１００、２００  暗号化装置
１１１  フリップフロップ
１１２  セレクタ
１１３  ＳＢ（ＳｕｂＢｙｔｅｓ）
１１４  ＳＲ（ＳｈｉｆｔＲｏｗｓ）
１１５  ＭＣ（ＭｉｘＣｏｌｕｍｎｓ）
１１６  ＡＫ（ＡｄｄＲｏｕｎｄＫｅｙ）
３００  復号装置
３１１  フリップフロップ
３１２  セレクタ
３１３  ＳＢ−１（ＩｎｖＳｕｂＢｙｔｅｓ）
３１４  ＳＲ−１（ＩｎｖＳｈｉｆｔＲｏｗｓ）
３１５  ＭＣ−１（ＩｎｖＭｉｘＣｏｌｕｍｎｓ）
３１６  ＡＫ−１（ＩｎｖＡｄｄＲｏｕｎｄＫｅｙ）
【図１】
2011175039.tif 000003
【図２】
2011175039.tif 000004
【図３】
2011175039.tif 000005
【図４】
2011175039.tif 000006
【図５】
2011175039.tif 000007
【図６】
2011175039.tif 000008
【図７】
2011175039.tif 000009
【図８】
2011175039.tif 000010
【図９】
2011175039.tif 000011
【図１０】
2011175039.tif 000012
【図１１】
2011175039.tif 000013
【図１２】
2011175039.tif 000014
【図１３】
2011175039.tif 000015
【図１４】
2011175039.tif 000016
【図１５】
2011175039.tif 000017
【図１６】
2011175039.tif 000018
【図１７】
2011175039.tif 000019
【図１８】
2011175039.tif 000020
【図１９】
2011175039.tif 000021
【図２０】
2011175039.tif 000022
【図２１】
2011175039.tif 000023
【図２２】
2011175039.tif 000024