(57)【特許請求の範囲】
【請求項１】
暗号鍵を用いて暗号化処理を行い平文から暗号文を計算する暗号化装置であって、
記憶部と、
平文を受け付ける入力部と、
前記平文から第１中間データを計算して前記記憶部に保存する第１暗号部分処理部と、
第１中間データから第Ｎ中間データ（Ｎは前記暗号化処理で予め定められた規定ラウンド数）に対する計算に用いる拡大鍵を前記暗号鍵から生成する生成部と、
第ｉ中間データ（ｉは１以上Ｎ未満の整数）と前記拡大鍵とに基づいて前記暗号化処理の予め定められたｉラウンドの演算を行い、第ｉ＋１中間データを計算して前記記憶部に保存する第２暗号部分処理部と、
前記暗号化処理の予め定められたＮラウンドの演算に、前記第Ｎ中間データを攪拌する予め定められた変換を追加した演算を行い、第Ｎ＋１中間データを計算して前記記憶部に保存する第３暗号部分処理部と、
前記第Ｎ＋１中間データに対して前記変換の逆変換を含み、非線形変換を含まない演算を行い、暗号文を計算する第４暗号部分処理部と、
前記暗号文を出力する出力部と、
を備えることを特徴とする暗号化装置。
【請求項２】
前記生成部は、前記第Ｎ中間データに対する計算に用いる前記拡大鍵に対して前記変換を実行した変換鍵を生成し、
前記第３暗号部分処理部は、前記変換の後に前記変換鍵を用いる計算を行う前記演算を前記第Ｎ中間データに対して実行して前記第Ｎ＋１中間データを計算して前記記憶部に保存すること、
を特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記第３暗号部分処理部は、前記拡大鍵を用いる計算の後に前記変換を行う前記演算を前記第Ｎ中間データに対して実行した演算結果と、予め定められた秘密情報と、の排他的論理和である前記第Ｎ＋１中間データを計算して前記記憶部に保存し、
前記第４暗号部分処理部は、前記第Ｎ＋１中間データに対して前記逆変換を含む演算を行った演算結果と、前記秘密情報との排他的論理和である前記暗号文を計算すること、
を特徴とする請求項１に記載の暗号化装置。
【請求項４】
前記変換は攪拌行列による変換であり、前記逆変換は前記攪拌行列の逆行列による変換であること、
を特徴とする請求項１に記載の暗号化装置。
【請求項５】
暗号鍵を用いて復号処理を行い暗号文から平文を計算する復号装置であって、
記憶部と、
暗号文を受け付ける入力部と、
前記暗号文から第１中間データを計算して前記記憶部に保存する第１暗号部分処理部と、
第１中間データから第Ｎ中間データ（Ｎは前記復号処理で予め定められた規定ラウンド数）に対する計算に用いる拡大鍵を前記暗号鍵から生成する生成部と、
第ｉ中間データ（ｉは１以上Ｎ未満の整数）と前記拡大鍵とに基づいて前記復号処理の予め定められたｉラウンドの演算を行い、第ｉ＋１中間データを計算して前記記憶部に保存する第２暗号部分処理部と、
前記復号処理の予め定められたＮラウンドの演算に、前記第Ｎ中間データを攪拌する予め定められた変換を追加した演算を行い、第Ｎ＋１中間データを計算して前記記憶部に保存する第３暗号部分処理部と、
前記第Ｎ＋１中間データに対して前記変換の逆変換を含み、非線形変換を含まない演算を行い、平文を計算する第４暗号部分処理部と、
前記平文を出力する出力部と、
を備えることを特徴とする復号装置。
【請求項６】
前記変換は攪拌行列による変換であり、前記逆変換は前記攪拌行列の逆行列による変換であること、
を特徴とする請求項５に記載の復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、暗号化装置および復号装置に関する。
【背景技術】
【０００２】
通信機能を有し、定期的に家庭内または事業所内の電気使用量を電力事業者に自動送信する高機能電力システムＡＭＩ（Advanced  Metering  Infrastructure、スマートメーター）システムが注目を浴びている。従来のＡＭＲ（Automated  Meter  Reading）システムは、人件費の削減や運転コスト削減の必要性から実現されてきた。ＡＭＩシステムは、ＡＭＲシステムと比べて多くの機能を有し、家庭内または事業所内のエアコンや照明などの設備機器とメーター間、またはメーターと電力会社間の双方向通信を可能にし、エネルギー資源利用の最適化を実現可能にするものである。
【０００３】
ＡＭＩシステムの導入は、エネルギー資源の観点から有用である反面、プライバシーの侵害問題への対策、さらにはＡＭＩシステムで取り交わされる情報の信憑性（安全性）確保を十分に行う必要がある。これらのセキュリティ問題を解決するには、暗号／復号装置が必要になる。
【０００４】
暗号／復号装置は、平文／暗号文を特定のアルゴリズムを用いて暗号／復号を行うものであり、情報の安全性を確保することが可能である。しかし、暗号／復号装置は、動作中の電力や電磁波を測定するだけで内部秘密鍵を導き出すパッシブな攻撃であるＳＰＡ（Simple  Power  Analysis）、ＤＰＡ（Differential  Power  Analysis）、ＥＭＡ（ElectroMagnetic Analyis）などのサイドチャネル攻撃が報告されている。サイドチャネル攻撃は、攻撃の痕跡が残らないため対策技術が必要かつ重要である。
【０００５】
サイドチャネル攻撃は、暗号／復号装置の演算中に測定することが可能な消費電力や電磁波と、推測する秘密鍵から計算することのできる中間データとの類似度が高い秘密鍵を導き出すことにより実現されている。推測する秘密鍵の鍵空間が小さいことによって攻撃が可能となる。従来のサイドチャネル対策では、乱数装置を用いた中間データをマスクすることによって中間データをかく乱し、類似度の高さ判定を困難になるようにしていた。
【０００６】
上述のように、ＡＭＩシステムに必要であるセキュリティ問題を解決する上では、サイドチャネル対策を施した暗号／復号装置が必要である。一方、エネルギー資源の有効活用という目的からは、消費電力が大きくエネルギー効率の悪いマスク対策より消費電力の少ないサイドチャネル対策が必要となる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】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.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、乱数生成処理は比較的重い処理であるため、従来技術のように乱数を使用する方法では、速度、回路規模、電力および処理性能等に悪影響があるという問題があった。
【課題を解決するための手段】
【０００９】
実施形態の暗号化装置は、第１暗号部分処理部と、生成部と、第２暗号部分処理部と、第３暗号部分処理部と、第４暗号部分処理部と、を備える。第１暗号部分処理部は、平文から第１中間データを計算する。生成部は、第１中間データから第Ｎ中間データ（Ｎは２以上の整数）に対する計算に用いる拡大鍵を暗号鍵から生成する。第２暗号部分処理部は、第ｉ中間データ（ｉは１以上Ｎ未満の整数）と拡大鍵とに基づいて第ｉ＋１中間データを計算する。第３暗号部分処理部は、第Ｎ中間データを攪拌する予め定められた変換を含む演算を行い、第Ｎ＋１中間データを計算する。第４暗号部分処理部は、第Ｎ＋１中間データに対して変換の逆変換を含む演算を行い、暗号文を計算する。
【００１０】
実施形態の復号装置は、第１暗号部分処理部と、生成部と、第２暗号部分処理部と、第３暗号部分処理部と、第４暗号部分処理部と、を備える。第１暗号部分処理部は、暗号文から第１中間データを計算する。生成部は、第１中間データから第Ｎ中間データ（Ｎは２以上の整数）に対する計算に用いる拡大鍵を暗号鍵から生成する。第２暗号部分処理部は、第ｉ中間データ（ｉは１以上Ｎ未満の整数）と拡大鍵とに基づいて第ｉ＋１中間データを計算する。第３暗号部分処理部は、第Ｎ中間データを攪拌する予め定められた変換を含む演算を行い、第Ｎ＋１中間データを計算する。第４暗号部分処理部は、第Ｎ＋１中間データに対して変換の逆変換を含む演算を行い、平文を計算する。
【図面の簡単な説明】
【００１１】
【図１】通常の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図。
【図２】ＡＫの構成例を示す図。
【図３】ＳＢの構成例を示す図。
【図４】ＳＲの構成例を示す図。
【図５】ＭＣの構成例を示す図。
【図６】通常の暗号化装置による暗号化処理の一例を示すフローチャート。
【図７】通常の復号装置による復号処理の一例を示すフローチャート。
【図８】通常の暗号化装置の回路構成例を示す図。
【図９】各クロックで記憶装置に記憶されるデータの内容を示す図。
【図１０】連続するクロックの記憶装置の内容のハミング距離を示す図。
【図１１】第１の実施形態の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図。
【図１２】第１の実施形態の暗号化装置の回路構成例を示す図。
【図１３】第１の実施形態の復号装置の回路構成例を示す図。
【図１４】ＭＣの一例を示す図。
【図１５】ＭＣ−１の一例を示す図。
【図１６】第１の実施形態の暗号化装置による暗号化処理の一例を示すフローチャート。
【図１７】第１の実施形態の復号装置による復号処理の一例を示すフローチャート。
【図１８】図１１の暗号化処理手順を用いた場合の、連続するクロックの記憶装置の内容のハミング距離を示す図。
【図１９】第２の実施形態の暗号／復号装置の回路構成例を示す図。
【図２０】図１９と異なる暗号／復号装置の回路構成例を示す図。
【図２１】ＦＥとしてＭＣを用いた場合の暗号／復号装置の回路構成例を示す図。
【図２２】ＦＥとしてＭＣを用いた場合の暗号／復号装置の回路構成例を示す図。
【図２３】暗号／復号装置の別の回路構成例を示す図。
【図２４】第３の実施形態のＡＭＩシステムの構成例を示す図。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、この発明にかかる暗号化装置および復号装置の好適な実施形態を詳細に説明する。
【００１３】
（第１の実施形態）
第１の実施形態にかかる暗号化装置および復号装置は、サイドチャネル攻撃が成立する条件を満たさないように、暗号方式で定められている演算の処理順序を変更する。これにより、乱数の生成等を行うことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。
【００１４】
最初に、暗号化装置および復号装置の脅威となるＤＰＡを例に、サイドチャネル攻撃の概要を紹介する。ＤＰＡは、データ処理を行った回路の消費電力を測定することで秘密鍵を統計的に推測する攻撃である。攻撃者は次のような手順で攻撃を行う。
（１）推定した秘密鍵（推定鍵）を元に演算処理中データのハミング距離を予測する。
（２）測定した消費電力と予測演算処理中データのハミング距離の類似度を計算する。
（３）複数の消費電力に対し類似度が最も高い推定鍵を当たり鍵と判定する。
【００１５】
大きな鍵空間では当たり鍵の判定が難しいため、秘密鍵の推定は、小さな有限鍵空間で行う必要がある。従来報告されているＤＰＡの推定鍵空間は、８ビット程度が主流となっている。
【００１６】
演算処理中データのハミング距離の類似度を予測するのは、消費電力がハードウェアの論理素子の変化に依存しているためである。また、ハードウェアは、データを格納する記憶部と演算処理を実現する組み合わせ回路とで構成されているが、サイドチャネル攻撃に対して脅威となるデータの変化は記憶部での影響が大きい。記憶部はクロックに同期しているため、データの変化が同一タイミングで変化するのに対し、組み合わせ回路は使われる論理素子に依存し推測する演算処理中データが必ずしも同一タイミングで変化する訳ではないためである。また、消費電力も記憶部の方が大きいとされている。
【００１７】
以下、本実施形態では、暗号化および復号をＡＥＳ（Advanced  Encryption  Standard）に代表される、ブロック暗号を用いた暗号化方式で行う例を説明する。また、以下では暗号部分処理としてＡＥＳのラウンド関数等を用いた例を説明する。なお、暗号部分処理とは、平文から暗号文を計算する暗号化処理の過程で実行される処理を表す。ＡＥＳの場合は、例えばSubstitutionBytes、ShiftRows、MixColumns、およびAddRoundKeyを備えるラウンド関数が暗号部分処理に相当する。
【００１８】
本実施形態に適用されるブロック暗号化方式では、暗号化装置および復号装置は、暗号鍵を入力として複数個の拡大鍵を出力する鍵スケジュール部と、入力データの攪拌を行うデータ攪拌部とで主に構成される。図１は、通常の暗号化装置のデータ攪拌部１０および復号装置のデータ攪拌部２０の処理手順の一例を示す図である。
【００１９】
暗号化装置のデータ攪拌部１０は、鍵スケジュール部（図示せず）で生成された拡大鍵をデータに排他的論理和を行うAddRoundKey（ＡＫ）、８ビット単位に非線形変換を行うSubstitutionBytes（ＳＢ）、データのバイト単位に入れ替えを行うShiftRows（ＳＲ）、および、３２ビット内の８ビット毎に影響を及ぼしあう線形変換を行うMixColumns（ＭＣ）で構成される。なお、図１の矢印は、各演算が実行された結果であるデータがレジスタ等の記憶部にラッチされるタイミングを表している。
【００２０】
同様に、復号装置のデータ攪拌部２０は、ＳＢ、ＳＲ、およびＭＣのそれぞれ逆変換であるInverseSubstitutionBytes（ＳＢ−１）、InverseShiftRows（ＳＲ−１）、および、InverseMixColumns（ＭＣ−１）と、ＡＫとで構成される。
【００２１】
ＡＥＳ暗号方式で用いられる各演算の構成例について図２〜図５を用いて説明する。以下では、鍵長が１２８ビットの場合の例を説明する。
【００２２】
図２は、ＡＫの構成例を示す図である。図２に示すように、ＡＫは、１２８ビットの拡大鍵と、１２８ビットの入力データとの排他的論理和である１２８ビットのデータを出力するビット毎の演算処理である。
【００２３】
図３は、ＳＢの構成例を示す図である。図３に示すようにＳＢは、１２８ビットの入力データを１６個の８ビットデータに区切り、非線形変換テーブルＳによって行われる演算処理である。
【００２４】
図４は、ＳＲの構成例を示す図である。図４に示すように、ＳＲは、１２８ビットの入力データを１６個の８ビットデータに分割して並び替える。図４では、入力データを分割した各８ビットデータが、矢印の先で表された位置に並び替えられることが示されている。
【００２５】
図５は、ＭＣの構成例を示す図である。図５に示すように、ＭＣは、１２８ビットの入力データを４個の３２ビットデータに分けて３２ビット単位に線形処理を行う演算処理である。
【００２６】
ＡＥＳ暗号方式の復号処理では、暗号化処理の各演算がそれぞれ逆変換となる演算が用いられる。ＡＫは、排他的論理和なので復号処理と暗号化処理とで同一の演算となる。ＳＢ−１は、ＳＢの逆変換になる非線形変換テーブルによる演算処理である。ＳＲ−１は、ＳＲの逆変換になる入力データ入れ替え操作を行う演算処理である。ＭＣ−１は、ＭＣの逆変換を行う処理である。
【００２７】
図６は、通常の暗号化装置による暗号化処理の一例を示すフローチャートである。暗号化装置は、最初のラウンド（０ラウンド）でＡＫを一度実行する（ステップＳ１１）。なお、本実施形態では、１クロックでＡＥＳ暗号方式の１ラウンドを実行する。
【００２８】
次に、暗号化装置は、ｎラウンド（１≦ｎ＜規定ラウンド数）で、ＳＢ、ＳＲ、ＭＣ、ＡＫの順に演算を繰り返す（ステップＳ１２）。暗号化装置は、（規定ラウンド数−１）ラウンドまでのラウンドの演算が終了したか否かを判断し（ステップＳ１３）、終了していない場合は（ステップＳ１３：Ｎｏ）ステップＳ１２に戻り処理を繰り返す。終了した場合は（ステップＳ１３：Ｙｅｓ）、暗号化装置は、最終ラウンド（規定ラウンド）でＳＢ、ＳＲ、ＡＫの演算を順に行う（ステップＳ１４）。
【００２９】
図７は、通常の復号装置による復号処理の一例を示すフローチャートである。復号装置は、最初にＡＫを一度実行する（ステップＳ２１）。次に、復号装置は、ｎラウンド（１≦ｎ＜規定ラウンド数）で、ＳＲ−１、ＳＢ−１、ＡＫ、ＭＣ−１の順に演算を繰り返す（ステップＳ２２）。復号装置は、（規定ラウンド数−１）ラウンドまでのラウンドの演算が終了したか否かを判断し（ステップＳ２３）、終了していない場合は（ステップＳ２３：Ｎｏ）ステップＳ２２に戻り処理を繰り返す。終了した場合は（ステップＳ２３：Ｙｅｓ）、復号装置は、最終ラウンドでＳＲ−１、ＳＢ−１、ＡＫの演算を順に行う（ステップＳ２４）。
【００３０】
図８は、通常の暗号化装置の回路構成例を示す図である。図８は、鍵長１２８ビットのＡＥＳ暗号方式の暗号化装置１の一例である。図８に示すように暗号化装置１は、セレクタ１１と、ＫｅｙＲＥＧ１２と、鍵スケジュール部（ＫＳ）１３と、セレクタ１４と、ＤａｔａＲＥＧ１５と、ＳＢ１６と、ＳＲ１７と、ＭＣ１８と、セレクタ１９と、ＡＫ２０と、を備えている。
【００３１】
セレクタ１１、セレクタ１４、およびセレクタ１９は、各クロックで予め定められたデータを選択して出力する。ＫｅｙＲＥＧ１２は、セレクタ１１により選択された暗号鍵を記憶する記憶部（レジスタ）である。ＫＳ１３は、ＫｅｙＲＥＧ１２に記憶されている鍵から各クロックのＡＫで使用される拡大鍵を算出する。ＤａｔａＲＥＧ１５は、平文または暗号化処理の過程で出力される中間データを記憶する記憶部（レジスタ）である。
【００３２】
入力された平文は、ＤａｔａＲＥＧ１５に格納される。１クロック目では、ＡＫ２０のみが実行され、演算結果である中間データがＤａｔａＲＥＧ１５に格納される。２クロック目から１０クロック目では、ＳＢ１６、ＳＲ１７、ＭＣ１８、およびＡＫ２０を毎回行いながら、中間データがＤａｔａＲＥＧ１５に格納される。１１クロック目では、ＳＢ１６、ＳＲ１７、およびＡＫ２０を行いＤａｔａＲＥＧ１５に演算結果である暗号文が格納される。また、各クロックのＡＫ２０で使われる拡大鍵は、ＫＳ１３で秘密鍵を用いて計算され、それぞれ異なる値である。
【００３３】
ＡＥＳに限らず多くの暗号方式は、ハードウェアおよびソフトウェアで柔軟で高速な実装ができるように８ビット単位の処理と３２ビット単位の処理とを組み合わせて実現されていることが多い。
【００３４】
説明を簡単化するため記号を定義する。平文および暗号文をそれぞれＰ（Plaintext）およびＣ（Ciphertext）とする。各演算処理の入力をｘとし、出力をｙとし、各クロックで異なる拡大鍵をｋとする。この場合、ＡＫはｙ＝ＡＫ（ｘ，ｋ）、ＳＢはｙ＝ＳＢ（ｘ）、ＳＲはｙ＝ＳＲ（ｘ）、および、ＭＣはｙ＝ＭＣ（ｘ）と表される。
【００３５】
図９は、各クロックで記憶装置（ＤａｔａＲＥＧ１５）に記憶されるデータの内容を示す図である。図１０は、連続するクロックの記憶装置の内容のハミング距離を示す図である。なお、図９内の「Ａ＝Ｂ」は、この情報自体が記憶されることを意味するのではなく、右辺の「Ｂ」が記憶装置に記憶されることを意味する。例えば、クロック１では、「Ｐ＋ｋ０」が記憶されることを意味する。そして、後続のクロックでの記憶内容の記載を簡略化するため、「Ｂ」を左辺の「Ａ」で表している。
【００３６】
演算中の消費電力を測定することで攻撃が可能となるＤＰＡは、記憶装置に格納されるデータ値の変化を、推定鍵と平文または暗号文とを用いることにより予測し、得られる消費電力との類似度によって当たり鍵が判定される。消費電力は、記憶装置によるデータの変化による影響が大きいことから、図１０に示す記憶装置のハミング距離に依存している。
【００３７】
ＤＰＡが成功するか否かは、類似度判定が容易である必要性がある。例えばハミング距離が以下の条件を満たす必要がある。
（１）ＰまたはＣを含む
（２）拡大鍵ｋを１種類だけ含む
（３）９ビット以上で表される線形変換を含まない（ＭＣまたはＭＣ−１を含まない）
（４）ＳＢまたはＳＢ−１を１つだけ含む
【００３８】
すべてを満たすのは、１０、１１クロックのハミング重みだけであり、この場合にＤＰＡが成功する。他の場合でも攻撃が原理的にできない訳ではない。本実施形態では、鍵空間が８ビット空間であり演算処理に非線形変換処理（非線形変換テーブルＳによる変換処理）を含むものとしている。この場合は、上記４つの条件のいずれかを満たさなければＤＰＡによる攻撃が困難になる。
【００３９】
従来の乱数マスク対策は、ハミング重みを推定鍵から求めるだけでなく、乱数の依存も予測する必要性が生じることから、ＤＰＡに対する対策とされていた。本実施形態では、上記４つの条件を満たさないような処理順序で各ラウンド（クロック）の演算を実行することにより、コンパクトなサイドチャネル攻撃対策の暗号化装置および復号装置を実現する。
【００４０】
図１１は、第１の実施形態の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図である。図１１の左側の図が、暗号化装置のデータ攪拌部の処理手順を表している。図１１の右側の図が、復号装置のデータ攪拌部の処理手順を表している。図１１の矢印は、図１と同様に、各演算が実行された結果であるデータがレジスタ等の記憶部にラッチされるタイミングを表している。
【００４１】
暗号化処理では、クロック０で入力がレジスタにラッチされ、クロック１でＡＫを演算した結果がレジスタにラッチされる。クロック２〜１０でＳＢ、ＳＲ、ＭＣ、ＡＫを演算した結果がレジスタにラッチされる。クロック１１でＳＢ、ＳＲ、ＦＥ、ＡＫを演算した結果がレジスタにラッチされる。クロック１２でＦＥ−１を演算した結果がレジスタにラッチされ、この結果が暗号文として出力される。
【００４２】
図１と比較すると、図１の最終クロックに相当するクロックでの演算処理に演算ＦＥが追加され、当該クロックの後に、ＦＥの逆変換となるＦＥ−１を行うクロックがさらに追加される。ＦＥおよびＦＥ−１としては、例えば以下の（１）式および（２）式の関数を用いることができる。
ＦＥ（ｘ）＝Ａ（ｘ＋ｂ）＋ｃ  ・・・（１）
ＦＥ−１（ｘ）＝Ａ−１（ｘ＋ｃ）＋ｂ  ・・・（２）
【００４３】
なお、ｘはｍ（ｍは９以上）行１列の行列表現データであり、行列Ａは逆行列Ａ−１を持つ正方行列（正則行列）である。またｂ、ｃは、ｘと同様の行列表現ができ、任意の行列を選ぶことができる。なお、ＦＥのことを攪拌行列と呼ぶ場合がある。
【００４４】
図１２は、第１の実施形態の暗号化装置の回路構成例を示す図である。図１２に示すように暗号化装置１１０は、セレクタ１１と、ＫｅｙＲＥＧ１２と、ＫＳ１３と、セレクタ１４と、ＤａｔａＲＥＧ１５と、ＳＢ１６と、ＳＲ１７と、ＭＣ１８と、セレクタ１９と、ＡＫ２０と、ＦＥ１０１と、セレクタ１０２と、セレクタ１０３と、ＦＥ１０４と、ＦＥ−１１０５と、セレクタ１０６と、を備えている。
【００４５】
図８と同様の構成部については同一の符号を付し、説明を省略する。暗号化装置１１０は、セレクタ１０２と、セレクタ１０３と、ＦＥ１０４と、ＦＥ−１１０５と、セレクタ１０６とをさらに備える点が、図８の暗号化装置１と異なっている。
【００４６】
セレクタ１０２、セレクタ１０３、およびセレクタ１０６は、各クロックで予め定められたデータを選択して出力する。各クロックで選択するデータは、図１１に示されているので説明を省略する。
【００４７】
ＦＥ１０１およびセレクタ１０２は、クロック１１で実行されるＦＥ１０４との整合性を保つため必要となる。すなわち、クロック１１では、セレクタ１０２は、ＫＳ１３により算出された拡大鍵をＦＥ１０１で演算した結果を選択する。
【００４８】
セレクタ１９は、クロック１１では、ＦＥ１０４の演算結果（ＦＥ（ｘ）とする）を選択する。そして、クロック１１では、演算結果ＦＥ（ｘ）に対してＡＫ２０が実行される。このとき、ＫＳ１３により算出された拡大鍵（ｋとする）をそのまま演算結果ＦＥ（ｘ）との排他的論理和の演算（ＡＫ２０）に用いたとすると、ＦＥ（ｘ）（＋）ｋが算出される。なお、記号（＋）は排他的論理和を意味する。しかし、このように算出されたＦＥ（ｘ）（＋）ｋからは、次のクロック１２でＦＥ−１を適用しても、本来復元されるべきデータであるｘ（＋）ｋを復元することができない。
【００４９】
このため、クロック１１では、セレクタ１０２が拡大鍵ｋをＦＥ１０１で演算した結果を選択し、ＡＫ２０に出力する。これにより、クロック１１では、ＦＥ（ｘ）（＋）ＦＥ（ｋ）が算出され、クロック１２で、この算出結果にＦＥ−１を適用することにより、ｘ（＋）ｋを復元できる。なお、図１１では、他のクロックのＡＫと異なることを示すため、クロック１１のＦＥの後の処理をＡＫ’と表している。
【００５０】
図１３は、第１の実施形態の復号装置の回路構成例を示す図である。図１３に示すように復号装置１２０は、セレクタ２１と、ＫｅｙＲＥＧ２２と、ＫＳ２３と、セレクタ２４と、ＤａｔａＲＥＧ２５と、ＳＲ−１２６と、ＳＢ−１２７と、セレクタ２８と、ＡＫ２９と、セレクタ３０と、ＦＤ３１と、ＦＤ−１３２と、ＭＣ−１３３と、セレクタ３４と、を備えている。
【００５１】
セレクタ２１、セレクタ２４、セレクタ２８、セレクタ３０、およびセレクタ３４は、各クロックで予め定められたデータを選択して出力する。ＫｅｙＲＥＧ２２は、セレクタ２１により選択された鍵を記憶する記憶部（レジスタ）である。ＫＳ２３は、ＫｅｙＲＥＧ２２に記憶されている鍵から各クロックのＡＫで使用される拡大鍵を算出する。ＤａｔａＲＥＧ２５は、暗号文または復号処理の過程で出力される中間データを記憶する記憶部（レジスタ）である。
【００５２】
ＦＤ３１は、逆変換である演算ＦＤ−１を有する演算ＦＤを実行する。ＦＤ−１３２は、演算ＦＤ−１を実行する。演算ＦＤおよび演算ＦＤ−１は、例えば上述のＦＥおよびＦＥ−１と同様の演算を適用できる。
【００５３】
ＦＥおよびＦＥ−１としては、例えばＡＥＳのＭＣおよびＭＣ−１を用いることができる。図１４は、ＭＣの一例を示す図である。図１５は、ＭＣ−１の一例を示す図である。ＭＣおよびＭＣ−１の入力であるｘは、３２行１列の行列表現とすることができる。
【００５４】
これまでは、ＡＥＳ暗号方式を例に説明したが、ＭＣおよびＭＣ−１のような９ビット以上で表される線形変換を含むように構成できる暗号方式であれば、本実施形態と同様の手法を適用できる。
【００５５】
図１６は、本実施形態の暗号化装置１１０による暗号化処理の一例を示すフローチャートである。図１６は、ＦＥとしてＭＣを用いた例を示している。
【００５６】
暗号化装置１１０は、最初のラウンド（０ラウンド）でＡＫを一度実行する（ステップＳ３１）。次に、暗号化装置１１０は、ｎラウンド（１≦ｎ＜規定ラウンド数）で、ＳＢ、ＳＲ、ＭＣ、ＡＫの順に演算を繰り返す（ステップＳ３２）。なお、最終ラウンドのときのみ、ＭＣを通した拡大鍵を用いた排他的論理和であるＡＫ’を実行する。
【００５７】
暗号化装置１１０は、（規定ラウンド数−１）ラウンドまでの演算が終了したか否かを判断し（ステップＳ３３）、終了していない場合は（ステップＳ３３：Ｎｏ）ステップＳ３２に戻り処理を繰り返す。終了した場合は（ステップＳ３３：Ｙｅｓ）、暗号化装置１１０は、最終ラウンドでＭＣ−１の演算を行う（ステップＳ３４）。
【００５８】
図１７は、復号装置１２０による復号処理の一例を示すフローチャートである。復号装置１２０は、最初にＡＫを一度実行する（ステップＳ４１）。次に、復号装置１２０は、ｎラウンド（１≦ｎ＜規定ラウンド）で、ＳＲ−１、ＳＢ−１、ＡＫ、ＭＣ−１の順に演算を繰り返す（ステップＳ４２）。復号装置１２０は、（規定ラウンド数−１）ラウンドまでの演算が終了したか否かを判断し（ステップＳ４３）、終了していない場合は（ステップＳ４３：Ｎｏ）ステップＳ４２に戻り処理を繰り返す。終了した場合は（ステップＳ４３：Ｙｅｓ）、復号装置１２０は、最終ラウンドでＭＣの演算を行う（ステップＳ４４）。
【００５９】
なお、各ラウンド内のＳＢとＳＲとは入れ替えることができ、また、ＳＢ−１とＳＲ−１とは入れ替えることができる。
【００６０】
図１８は、図１１の暗号化処理手順を用いた場合の、連続するクロックの記憶装置の内容のハミング距離を示す図である。図１８に示すように、クロック１０と１１、およびクロック１１と１２のハミング距離は、ＤＰＡ可能な条件である上記４つの条件のいずれかを満たしていない。
【００６１】
このように、第１の実施形態にかかる暗号化装置および復号装置では、サイドチャネル攻撃が成立する条件を満たさないように、暗号方式で定められている演算の処理順序を変更することができる。これにより、乱数の生成等を行う従来技術と比較して、速度、回路規模、電力および処理性能等に悪影響を及ぼすことなく、サイドチャネル攻撃に対して安全な暗号化装置および復号装置を実現できる。
【００６２】
（第２の実施形態）
第２の実施形態では、暗号化装置と復号装置とで回路を共通化した装置（以下、暗号／復号装置という）について説明する。
【００６３】
図１９は、第２の実施形態の暗号／復号装置２００の回路構成例を示す図である。図１９は、暗号回路を基本として復号処理を追加した場合に考えられるＦＥを利用した回路例を示す図である。
【００６４】
暗号／復号装置２００は、セレクタ２０１と、ＫｅｙＲＥＧ２０２と、ＫＳ−１２０３と、ＫＳ２０４と、セレクタ２０５と、ＦＥ２０６と、ＦＥ−１２０７と、ＭＣ−１２０８と、セレクタ２０９と、セレクタ２１０と、ＤａｔａＲＥＧ２１１と、ＳＲ２１２と、ＳＢ２１３と、ＳＲ−１２１４と、ＳＢ−１２１５と、セレクタ２１６と、ＭＣ−１２１７と、ＭＣ２１８と、ＦＥ２１９と、ＦＥ−１２２０と、セレクタ２２１と、ＡＫ２２２と、セレクタ２２３と、を備えている。
【００６５】
セレクタ２０１、セレクタ２０５、セレクタ２０９、セレクタ２１０、セレクタ２１６、セレクタ２２１、および、セレクタ２２３は、各クロックで予め定められたデータを選択して出力する。ＫｅｙＲＥＧ２０２は、セレクタ２０１により選択された鍵を記憶する記憶部（レジスタ）である。ＫＳ−１２０３およびＫＳ２０４は、ＫｅｙＲＥＧ２０２に記憶されている鍵から各クロックのＡＫで使用される拡大鍵を算出する。なお、ＫＳ−１２０３はＫＳ２０４の逆変換である。ＤａｔａＲＥＧ２１１は、平文、暗号文または中間データを記憶する記憶部（レジスタ）である。
【００６６】
暗号化処理では、１クロック目はＡＫを演算し、２〜１０クロック目はＳＢ、ＳＲ、ＭＣ、ＡＫの順で演算し、１１クロック目はＳＢ、ＳＲ、ＦＥ、ＡＫ’の順で演算する。１１クロック目では、ＦＥを通した拡大鍵を用いる。１２クロック目はＭＣ−１を演算する。
【００６７】
復号処理では、１クロック目はＡＫを演算し、２〜１０クロック目はＳＢ−１、ＳＲ、ＭＣ−１、ＡＫの順で演算し、１１クロック目はＳＢ−１、ＳＲ、ＦＥ−１、ＡＫの順で演算する。本実施形態の復号処理に利用される拡大鍵は、２〜１０クロック目はＭＣ−１を通した値を利用することで、図１に示した演算手順と同じ演算結果を導出することができる。１１クロック目の拡大鍵はＦＥ−１を通した拡大鍵を用いる。ＦＥとＦＥ−１とは逆演算が可能であればよいので、暗号化処理時の１１クロック目でＳＢ、ＳＲ、ＦＥ−１、ＡＫ’の順で演算する場合、拡大鍵はＦＥ−１のみでよい。
【００６８】
図２０は、図１９と異なる暗号／復号装置２００−２の回路構成例を示す図である。図２０は、復号回路を基本として暗号化処理を追加した場合に考えられるＦＥを利用した回路例を示す図である。
【００６９】
暗号／復号装置２００−２による暗号化処理では、１クロック目はＡＫを演算し、２〜１０クロック目はＳＢ、ＳＲ、ＡＫ、ＭＣの順で演算し、１１クロック目はＳＢ、ＳＲ、ＡＫ、ＦＥの順で演算し、１２クロック目でＦＥ−１を演算する。このときの２〜１０クロック目の拡大鍵は、ＭＣ−１を通した拡大鍵を用いることで、図１に示した演算手順と同じ演算結果を得ることができる。１１クロック目の拡大鍵は、そのままの拡大鍵を用いる。
【００７０】
暗号／復号装置２００−２による復号処理では、１クロック目はＡＫを演算し、２〜１０クロック目はＳＢ−１、ＳＲ−１、ＡＫ、ＭＣ−１の順で演算し、１１クロック目はＳＢ−１、ＳＲ−１、ＡＫ、ＦＥ−１の順で演算し、１２クロック目でＦＥを演算する。このときの２〜１１クロック目の拡大鍵は、鍵スケジュール部（セレクタ２０９）から得られたそのままの値を用いればよい。
【００７１】
図２１および図２２は、それぞれ、ＦＥとしてＭＣを用いた場合の暗号／復号装置２００−３および暗号／復号装置２００−４の回路構成例を示す図である。図２１および図２２は、それぞれ図１９および図２０のＦＥにＭＣを適用した場合の例を表す。
【００７２】
ＭＣとＡＫとを入れ替えた回路構成の場合、ＤＰＡ攻撃を不能にする方法として、新たな秘密情報（秘密鍵ｋｘ）を導入する手法を用いてもよい。図２３は、このように構成した暗号／復号装置２００−５の回路構成例を示す図である。暗号／復号装置２００−５では、ＭＣ２２４と、ＦＥ２２５と、セレクタ２２６と、排他的論理和演算部２２７と、が追加される。この構成では、例えば暗号化処理の１１クロック目でＡＫ２２２の後にＦＥ２１９を実行した後に、排他的論理和演算部２２７が、ＦＥ２１９の演算結果と秘密鍵ｋｘとの排他的論理和を演算する。これにより、秘密鍵ｋｘを推測する必要が生じるため、ＤＰＡ攻撃を不能とすることができる。なお、秘密鍵ｋｘとの排他的論理和を演算する箇所は図２３に限られるものではない。例えば、ＤａｔａＲＥＧ２１１の後で秘密鍵によるマスク（排他的論理和の演算）を行い、セレクタ２２３の後でマスクの解除を行うように構成してもよい。
【００７３】
このように、第２の実施形態では、第１の実施形態の暗号化装置と復号装置とで回路を共通化した暗号／復号装置を実現することができる。
【００７４】
（第３の実施形態）
第３の実施形態では、暗号化装置および復号装置をＡＭＩシステムに適用した実施形態を説明する。第１または第２の実施形態にかかる暗号化装置および復号装置を適用したＡＭＩシステムは、安全な暗号化通信を実現できる。図２４は、第３の実施形態のＡＭＩシステムの構成例を示す図である。
【００７５】
家庭内およびビル内に置かれるＥＭＳ（Energy  Management  System）３１０は、家電機器に接続され利用されるエネルギーを管理する。ＥＭＳ３１０は、利用したエネルギーの量等を表す利用情報を、通信部３３０を介して電力会社が管理するＭＤＭＳ（Meter  Data  Management  System）３２０に配信する。このとき、家電機器とＥＭＳ３１０と通信部３３０とＭＤＭＳ３２０のそれぞれの間は、暗号化通信されることが好ましい。特に、通信部３３０からＭＤＭＳ３２０では、個人情報保護の観点から暗号化通信する必要がある。そこで、通信部３３０に上記実施形態の暗号化装置を備え、ＭＤＭＳ３２０へ利用情報を暗号化送信するように構成することができる。
【００７６】
また、ＥＭＳ３１０は、各家電機器の利用情報を数日間分管理する場合がある。その場合、ＥＭＳ３１０に上記実施形態の暗号化装置を備え、利用情報を暗号化した状態でハードディスク等に記憶するように構成することができる。これにより、利用情報が容易に改ざんされることを防止することができる。電力会社は各ユーザの暗号化された利用情報を復号する必要があるため、ＭＤＭＳ３２０に復号装置を備える必要がある。
【００７７】
ＡＭＩシステムは電力会社からのエネルギー制御も想定されている。そこで、ＭＤＭＳ３２０がさらに暗号化装置を備え、暗号化制御情報を各家庭およびビル内へ暗号化送信するように構成してもよい。この場合、通信部３３０は、暗号化された暗号化制御情報を復号するため復号装置を備える必要がある。
【００７８】
なお、ＡＭＩシステムは上記構成に限定されるものではない。例えば暗号化装置と復号装置が対になるようＡＭＩシステムを構成すればよく、全構成要素が必須ではない。
【００７９】
このように、第３の実施形態では、高機能電力システムで用いられるデータに対して、データの不正利用を防止することができる。
【００８０】
以上説明したとおり、第１から第３の実施形態によれば、速度、回路規模、電力および処理性能等に悪影響を及ぼすことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現することができる。
【００８１】
次に、第１から第３の実施形態の装置（暗号化装置または復号装置）のハードウェア構成について説明する。
【００８２】
第１から第２の実施形態にかかる装置は、ＣＰＵ（Central  Processing  Unit）などの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆと、ＨＤＤ（Hard  Disk  Drive）、ＣＤ（Compact  Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバスを備えており、通常のコンピュータを利用したハードウェア構成とすることができる。
【００８３】
なお、本実施形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００８４】
１１０  暗号化装置
１１、１４、１９、１０２、１０３、１０６  セレクタ
１２  ＫｅｙＲＥＧ
１３  鍵スケジュール部（ＫＳ）
１５  ＤａｔａＲＥＧ
１６  SubstitutionBytes（ＳＢ）
１７  ShiftRows（ＳＲ）
１８  MixColumns（ＭＣ）
２０  AddRoundKey（ＡＫ）
１０１、１０４  ＦＥ
１０５  ＦＥ−１
１２０  復号装置
２１、２４、２８、３０、３４  セレクタ
２２  ＫｅｙＲＥＧ
２３  鍵スケジュール部（ＫＳ）
２５  ＤａｔａＲＥＧ
２６  InverseShiftRows（ＳＲ−１）
２７  InverseSubstitutionBytes（ＳＢ−１）
２９  AddRoundKey（ＡＫ）
３１  ＦＤ
３２  ＦＤ−１
３３  InverseMixColumns（ＭＣ−１）
【図１】
0005198526.tif 000002
【図２】
0005198526.tif 000003
【図３】
0005198526.tif 000004
【図４】
0005198526.tif 000005
【図５】
0005198526.tif 000006
【図６】
0005198526.tif 000007
【図７】
0005198526.tif 000008
【図８】
0005198526.tif 000009
【図９】
0005198526.tif 000010
【図１０】
0005198526.tif 000011
【図１１】
0005198526.tif 000012
【図１２】
0005198526.tif 000013
【図１３】
0005198526.tif 000014
【図１４】
0005198526.tif 000015
【図１５】
0005198526.tif 000016
【図１６】
0005198526.tif 000017
【図１７】
0005198526.tif 000018
【図１８】
0005198526.tif 000019
【図１９】
0005198526.tif 000020
【図２０】
0005198526.tif 000021
【図２１】
0005198526.tif 000022
【図２２】
0005198526.tif 000023
【図２３】
0005198526.tif 000024
【図２４】
0005198526.tif 000025