暗号化装置および復号装置
【課題】サイドチャネル攻撃に対して安全な装置を実現する。
【解決手段】暗号化装置は、第1暗号部分処理部と、生成部と、第2暗号部分処理部と、第3暗号部分処理部と、第4暗号部分処理部と、を備える。第1暗号部分処理部は、平文から第1中間データを計算する。生成部は、第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を暗号鍵から生成する。第2暗号部分処理部は、第i中間データ(iは1以上N未満の整数)と拡大鍵とに基づいて第i+1中間データを計算する。第3暗号部分処理部は、第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算する。第4暗号部分処理部は、第N+1中間データに対して変換の逆変換を含む演算を行い、暗号文を計算する。
【解決手段】暗号化装置は、第1暗号部分処理部と、生成部と、第2暗号部分処理部と、第3暗号部分処理部と、第4暗号部分処理部と、を備える。第1暗号部分処理部は、平文から第1中間データを計算する。生成部は、第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を暗号鍵から生成する。第2暗号部分処理部は、第i中間データ(iは1以上N未満の整数)と拡大鍵とに基づいて第i+1中間データを計算する。第3暗号部分処理部は、第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算する。第4暗号部分処理部は、第N+1中間データに対して変換の逆変換を含む演算を行い、暗号文を計算する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、暗号化装置および復号装置に関する。
【背景技術】
【0002】
通信機能を有し、定期的に家庭内または事業所内の電気使用量を電力事業者に自動送信する高機能電力システムAMI(Advanced Metering Infrastructure、スマートメーター)システムが注目を浴びている。従来のAMR(Automated Meter Reading)システムは、人件費の削減や運転コスト削減の必要性から実現されてきた。AMIシステムは、AMRシステムと比べて多くの機能を有し、家庭内または事業所内のエアコンや照明などの設備機器とメーター間、またはメーターと電力会社間の双方向通信を可能にし、エネルギー資源利用の最適化を実現可能にするものである。
【0003】
AMIシステムの導入は、エネルギー資源の観点から有用である反面、プライバシーの侵害問題への対策、さらにはAMIシステムで取り交わされる情報の信憑性(安全性)確保を十分に行う必要がある。これらのセキュリティ問題を解決するには、暗号/復号装置が必要になる。
【0004】
暗号/復号装置は、平文/暗号文を特定のアルゴリズムを用いて暗号/復号を行うものであり、情報の安全性を確保することが可能である。しかし、暗号/復号装置は、動作中の電力や電磁波を測定するだけで内部秘密鍵を導き出すパッシブな攻撃であるSPA(Simple Power Analysis)、DPA(Differential Power Analysis)、EMA(ElectroMagnetic Analyis)などのサイドチャネル攻撃が報告されている。サイドチャネル攻撃は、攻撃の痕跡が残らないため対策技術が必要かつ重要である。
【0005】
サイドチャネル攻撃は、暗号/復号装置の演算中に測定することが可能な消費電力や電磁波と、推測する秘密鍵から計算することのできる中間データとの類似度が高い秘密鍵を導き出すことにより実現されている。推測する秘密鍵の鍵空間が小さいことによって攻撃が可能となる。従来のサイドチャネル対策では、乱数装置を用いた中間データをマスクすることによって中間データをかく乱し、類似度の高さ判定を困難になるようにしていた。
【0006】
上述のように、AMIシステムに必要であるセキュリティ問題を解決する上では、サイドチャネル対策を施した暗号/復号装置が必要である。一方、エネルギー資源の有効活用という目的からは、消費電力が大きくエネルギー効率の悪いマスク対策より消費電力の少ないサイドチャネル対策が必要となる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献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.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、乱数生成処理は比較的重い処理であるため、従来技術のように乱数を使用する方法では、速度、回路規模、電力および処理性能等に悪影響があるという問題があった。
【課題を解決するための手段】
【0009】
実施形態の暗号化装置は、第1暗号部分処理部と、生成部と、第2暗号部分処理部と、第3暗号部分処理部と、第4暗号部分処理部と、を備える。第1暗号部分処理部は、平文から第1中間データを計算する。生成部は、第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を暗号鍵から生成する。第2暗号部分処理部は、第i中間データ(iは1以上N未満の整数)と拡大鍵とに基づいて第i+1中間データを計算する。第3暗号部分処理部は、第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算する。第4暗号部分処理部は、第N+1中間データに対して変換の逆変換を含む演算を行い、暗号文を計算する。
【0010】
実施形態の復号装置は、第1暗号部分処理部と、生成部と、第2暗号部分処理部と、第3暗号部分処理部と、第4暗号部分処理部と、を備える。第1暗号部分処理部は、暗号文から第1中間データを計算する。生成部は、第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を暗号鍵から生成する。第2暗号部分処理部は、第i中間データ(iは1以上N未満の整数)と拡大鍵とに基づいて第i+1中間データを計算する。第3暗号部分処理部は、第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算する。第4暗号部分処理部は、第N+1中間データに対して変換の逆変換を含む演算を行い、平文を計算する。
【図面の簡単な説明】
【0011】
【図1】通常の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図。
【図2】AKの構成例を示す図。
【図3】SBの構成例を示す図。
【図4】SRの構成例を示す図。
【図5】MCの構成例を示す図。
【図6】通常の暗号化装置による暗号化処理の一例を示すフローチャート。
【図7】通常の復号装置による復号処理の一例を示すフローチャート。
【図8】通常の暗号化装置の回路構成例を示す図。
【図9】各クロックで記憶装置に記憶されるデータの内容を示す図。
【図10】連続するクロックの記憶装置の内容のハミング距離を示す図。
【図11】第1の実施形態の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図。
【図12】第1の実施形態の暗号化装置の回路構成例を示す図。
【図13】第1の実施形態の復号装置の回路構成例を示す図。
【図14】MCの一例を示す図。
【図15】MC−1の一例を示す図。
【図16】第1の実施形態の暗号化装置による暗号化処理の一例を示すフローチャート。
【図17】第1の実施形態の復号装置による復号処理の一例を示すフローチャート。
【図18】図11の暗号化処理手順を用いた場合の、連続するクロックの記憶装置の内容のハミング距離を示す図。
【図19】第2の実施形態の暗号/復号装置の回路構成例を示す図。
【図20】図19と異なる暗号/復号装置の回路構成例を示す図。
【図21】FEとしてMCを用いた場合の暗号/復号装置の回路構成例を示す図。
【図22】FEとしてMCを用いた場合の暗号/復号装置の回路構成例を示す図。
【図23】暗号/復号装置の別の回路構成例を示す図。
【図24】第3の実施形態のAMIシステムの構成例を示す図。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、この発明にかかる暗号化装置および復号装置の好適な実施形態を詳細に説明する。
【0013】
(第1の実施形態)
第1の実施形態にかかる暗号化装置および復号装置は、サイドチャネル攻撃が成立する条件を満たさないように、暗号方式で定められている演算の処理順序を変更する。これにより、乱数の生成等を行うことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。
【0014】
最初に、暗号化装置および復号装置の脅威となるDPAを例に、サイドチャネル攻撃の概要を紹介する。DPAは、データ処理を行った回路の消費電力を測定することで秘密鍵を統計的に推測する攻撃である。攻撃者は次のような手順で攻撃を行う。
(1)推定した秘密鍵(推定鍵)を元に演算処理中データのハミング距離を予測する。
(2)測定した消費電力と予測演算処理中データのハミング距離の類似度を計算する。
(3)複数の消費電力に対し類似度が最も高い推定鍵を当たり鍵と判定する。
【0015】
大きな鍵空間では当たり鍵の判定が難しいため、秘密鍵の推定は、小さな有限鍵空間で行う必要がある。従来報告されているDPAの推定鍵空間は、8ビット程度が主流となっている。
【0016】
演算処理中データのハミング距離の類似度を予測するのは、消費電力がハードウェアの論理素子の変化に依存しているためである。また、ハードウェアは、データを格納する記憶部と演算処理を実現する組み合わせ回路とで構成されているが、サイドチャネル攻撃に対して脅威となるデータの変化は記憶部での影響が大きい。記憶部はクロックに同期しているため、データの変化が同一タイミングで変化するのに対し、組み合わせ回路は使われる論理素子に依存し推測する演算処理中データが必ずしも同一タイミングで変化する訳ではないためである。また、消費電力も記憶部の方が大きいとされている。
【0017】
以下、本実施形態では、暗号化および復号をAES(Advanced Encryption Standard)に代表される、ブロック暗号を用いた暗号化方式で行う例を説明する。また、以下では暗号部分処理としてAESのラウンド関数等を用いた例を説明する。なお、暗号部分処理とは、平文から暗号文を計算する暗号化処理の過程で実行される処理を表す。AESの場合は、例えばSubstitutionBytes、ShiftRows、MixColumns、およびAddRoundKeyを備えるラウンド関数が暗号部分処理に相当する。
【0018】
本実施形態に適用されるブロック暗号化方式では、暗号化装置および復号装置は、暗号鍵を入力として複数個の拡大鍵を出力する鍵スケジュール部と、入力データの攪拌を行うデータ攪拌部とで主に構成される。図1は、通常の暗号化装置のデータ攪拌部10および復号装置のデータ攪拌部20の処理手順の一例を示す図である。
【0019】
暗号化装置のデータ攪拌部10は、鍵スケジュール部(図示せず)で生成された拡大鍵をデータに排他的論理和を行うAddRoundKey(AK)、8ビット単位に非線形変換を行うSubstitutionBytes(SB)、データのバイト単位に入れ替えを行うShiftRows(SR)、および、32ビット内の8ビット毎に影響を及ぼしあう線形変換を行うMixColumns(MC)で構成される。なお、図1の矢印は、各演算が実行された結果であるデータがレジスタ等の記憶部にラッチされるタイミングを表している。
【0020】
同様に、復号装置のデータ攪拌部20は、SB、SR、およびMCのそれぞれ逆変換であるInverseSubstitutionBytes(SB−1)、InverseShiftRows(SR−1)、および、InverseMixColumns(MC−1)と、AKとで構成される。
【0021】
AES暗号方式で用いられる各演算の構成例について図2〜図5を用いて説明する。以下では、鍵長が128ビットの場合の例を説明する。
【0022】
図2は、AKの構成例を示す図である。図2に示すように、AKは、128ビットの拡大鍵と、128ビットの入力データとの排他的論理和である128ビットのデータを出力するビット毎の演算処理である。
【0023】
図3は、SBの構成例を示す図である。図3に示すようにSBは、128ビットの入力データを16個の8ビットデータに区切り、非線形変換テーブルSによって行われる演算処理である。
【0024】
図4は、SRの構成例を示す図である。図4に示すように、SRは、128ビットの入力データを16個の8ビットデータに分割して並び替える。図4では、入力データを分割した各8ビットデータが、矢印の先で表された位置に並び替えられることが示されている。
【0025】
図5は、MCの構成例を示す図である。図5に示すように、MCは、128ビットの入力データを4個の32ビットデータに分けて32ビット単位に線形処理を行う演算処理である。
【0026】
AES暗号方式の復号処理では、暗号化処理の各演算がそれぞれ逆変換となる演算が用いられる。AKは、排他的論理和なので復号処理と暗号化処理とで同一の演算となる。SB−1は、SBの逆変換になる非線形変換テーブルによる演算処理である。SR−1は、SRの逆変換になる入力データ入れ替え操作を行う演算処理である。MC−1は、MCの逆変換を行う処理である。
【0027】
図6は、通常の暗号化装置による暗号化処理の一例を示すフローチャートである。暗号化装置は、最初のラウンド(0ラウンド)でAKを一度実行する(ステップS11)。なお、本実施形態では、1クロックでAES暗号方式の1ラウンドを実行する。
【0028】
次に、暗号化装置は、nラウンド(1≦n<規定ラウンド数)で、SB、SR、MC、AKの順に演算を繰り返す(ステップS12)。暗号化装置は、(規定ラウンド数−1)ラウンドまでのラウンドの演算が終了したか否かを判断し(ステップS13)、終了していない場合は(ステップS13:No)ステップS12に戻り処理を繰り返す。終了した場合は(ステップS13:Yes)、暗号化装置は、最終ラウンド(規定ラウンド)でSB、SR、AKの演算を順に行う(ステップS14)。
【0029】
図7は、通常の復号装置による復号処理の一例を示すフローチャートである。復号装置は、最初にAKを一度実行する(ステップS21)。次に、復号装置は、nラウンド(1≦n<規定ラウンド数)で、SR−1、SB−1、AK、MC−1の順に演算を繰り返す(ステップS22)。復号装置は、(規定ラウンド数−1)ラウンドまでのラウンドの演算が終了したか否かを判断し(ステップS23)、終了していない場合は(ステップS23:No)ステップS22に戻り処理を繰り返す。終了した場合は(ステップS23:Yes)、復号装置は、最終ラウンドでSR−1、SB−1、AKの演算を順に行う(ステップS24)。
【0030】
図8は、通常の暗号化装置の回路構成例を示す図である。図8は、鍵長128ビットのAES暗号方式の暗号化装置1の一例である。図8に示すように暗号化装置1は、セレクタ11と、KeyREG12と、鍵スケジュール部(KS)13と、セレクタ14と、DataREG15と、SB16と、SR17と、MC18と、セレクタ19と、AK20と、を備えている。
【0031】
セレクタ11、セレクタ14、およびセレクタ19は、各クロックで予め定められたデータを選択して出力する。KeyREG12は、セレクタ11により選択された暗号鍵を記憶する記憶部(レジスタ)である。KS13は、KeyREG12に記憶されている鍵から各クロックのAKで使用される拡大鍵を算出する。DataREG15は、平文または暗号化処理の過程で出力される中間データを記憶する記憶部(レジスタ)である。
【0032】
入力された平文は、DataREG15に格納される。1クロック目では、AK20のみが実行され、演算結果である中間データがDataREG15に格納される。2クロック目から10クロック目では、SB16、SR17、MC18、およびAK20を毎回行いながら、中間データがDataREG15に格納される。11クロック目では、SB16、SR17、およびAK20を行いDataREG15に演算結果である暗号文が格納される。また、各クロックのAK20で使われる拡大鍵は、KS13で秘密鍵を用いて計算され、それぞれ異なる値である。
【0033】
AESに限らず多くの暗号方式は、ハードウェアおよびソフトウェアで柔軟で高速な実装ができるように8ビット単位の処理と32ビット単位の処理とを組み合わせて実現されていることが多い。
【0034】
説明を簡単化するため記号を定義する。平文および暗号文をそれぞれP(Plaintext)およびC(Ciphertext)とする。各演算処理の入力をxとし、出力をyとし、各クロックで異なる拡大鍵をkとする。この場合、AKはy=AK(x,k)、SBはy=SB(x)、SRはy=SR(x)、および、MCはy=MC(x)と表される。
【0035】
図9は、各クロックで記憶装置(DataREG15)に記憶されるデータの内容を示す図である。図10は、連続するクロックの記憶装置の内容のハミング距離を示す図である。なお、図9内の「A=B」は、この情報自体が記憶されることを意味するのではなく、右辺の「B」が記憶装置に記憶されることを意味する。例えば、クロック1では、「P+k0」が記憶されることを意味する。そして、後続のクロックでの記憶内容の記載を簡略化するため、「B」を左辺の「A」で表している。
【0036】
演算中の消費電力を測定することで攻撃が可能となるDPAは、記憶装置に格納されるデータ値の変化を、推定鍵と平文または暗号文とを用いることにより予測し、得られる消費電力との類似度によって当たり鍵が判定される。消費電力は、記憶装置によるデータの変化による影響が大きいことから、図10に示す記憶装置のハミング距離に依存している。
【0037】
DPAが成功するか否かは、類似度判定が容易である必要性がある。例えばハミング距離が以下の条件を満たす必要がある。
(1)PまたはCを含む
(2)拡大鍵kを1種類だけ含む
(3)9ビット以上で表される線形変換を含まない(MCまたはMC−1を含まない)
(4)SBまたはSB−1を1つだけ含む
【0038】
すべてを満たすのは、10、11クロックのハミング重みだけであり、この場合にDPAが成功する。他の場合でも攻撃が原理的にできない訳ではない。本実施形態では、鍵空間が8ビット空間であり演算処理に非線形変換処理(非線形変換テーブルSによる変換処理)を含むものとしている。この場合は、上記4つの条件のいずれかを満たさなければDPAによる攻撃が困難になる。
【0039】
従来の乱数マスク対策は、ハミング重みを推定鍵から求めるだけでなく、乱数の依存も予測する必要性が生じることから、DPAに対する対策とされていた。本実施形態では、上記4つの条件を満たさないような処理順序で各ラウンド(クロック)の演算を実行することにより、コンパクトなサイドチャネル攻撃対策の暗号化装置および復号装置を実現する。
【0040】
図11は、第1の実施形態の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図である。図11の左側の図が、暗号化装置のデータ攪拌部の処理手順を表している。図11の右側の図が、復号装置のデータ攪拌部の処理手順を表している。図11の矢印は、図1と同様に、各演算が実行された結果であるデータがレジスタ等の記憶部にラッチされるタイミングを表している。
【0041】
暗号化処理では、クロック0で入力がレジスタにラッチされ、クロック1でAKを演算した結果がレジスタにラッチされる。クロック2〜10でSB、SR、MC、AKを演算した結果がレジスタにラッチされる。クロック11でSB、SR、FE、AKを演算した結果がレジスタにラッチされる。クロック12でFE−1を演算した結果がレジスタにラッチされ、この結果が暗号文として出力される。
【0042】
図1と比較すると、図1の最終クロックに相当するクロックでの演算処理に演算FEが追加され、当該クロックの後に、FEの逆変換となるFE−1を行うクロックがさらに追加される。FEおよびFE−1としては、例えば以下の(1)式および(2)式の関数を用いることができる。
FE(x)=A(x+b)+c ・・・(1)
FE−1(x)=A−1(x+c)+b ・・・(2)
【0043】
なお、xはm(mは9以上)行1列の行列表現データであり、行列Aは逆行列A−1を持つ正方行列(正則行列)である。またb、cは、xと同様の行列表現ができ、任意の行列を選ぶことができる。なお、FEのことを攪拌行列と呼ぶ場合がある。
【0044】
図12は、第1の実施形態の暗号化装置の回路構成例を示す図である。図12に示すように暗号化装置110は、セレクタ11と、KeyREG12と、KS13と、セレクタ14と、DataREG15と、SB16と、SR17と、MC18と、セレクタ19と、AK20と、FE101と、セレクタ102と、セレクタ103と、FE104と、FE−1105と、セレクタ106と、を備えている。
【0045】
図8と同様の構成部については同一の符号を付し、説明を省略する。暗号化装置110は、セレクタ102と、セレクタ103と、FE104と、FE−1105と、セレクタ106とをさらに備える点が、図8の暗号化装置1と異なっている。
【0046】
セレクタ102、セレクタ103、およびセレクタ106は、各クロックで予め定められたデータを選択して出力する。各クロックで選択するデータは、図11に示されているので説明を省略する。
【0047】
FE101およびセレクタ102は、クロック11で実行されるFE104との整合性を保つため必要となる。すなわち、クロック11では、セレクタ102は、KS13により算出された拡大鍵をFE101で演算した結果を選択する。
【0048】
セレクタ19は、クロック11では、FE104の演算結果(FE(x)とする)を選択する。そして、クロック11では、演算結果FE(x)に対してAK20が実行される。このとき、KS13により算出された拡大鍵(kとする)をそのまま演算結果FE(x)との排他的論理和の演算(AK20)に用いたとすると、FE(x)(+)kが算出される。なお、記号(+)は排他的論理和を意味する。しかし、このように算出されたFE(x)(+)kからは、次のクロック12でFE−1を適用しても、本来復元されるべきデータであるx(+)kを復元することができない。
【0049】
このため、クロック11では、セレクタ102が拡大鍵kをFE101で演算した結果を選択し、AK20に出力する。これにより、クロック11では、FE(x)(+)FE(k)が算出され、クロック12で、この算出結果にFE−1を適用することにより、x(+)kを復元できる。なお、図11では、他のクロックのAKと異なることを示すため、クロック11のFEの後の処理をAK’と表している。
【0050】
図13は、第1の実施形態の復号装置の回路構成例を示す図である。図13に示すように復号装置120は、セレクタ21と、KeyREG22と、KS23と、セレクタ24と、DataREG25と、SR−126と、SB−127と、セレクタ28と、AK29と、セレクタ30と、FD31と、FD−132と、MC−133と、セレクタ34と、を備えている。
【0051】
セレクタ21、セレクタ24、セレクタ28、セレクタ30、およびセレクタ34は、各クロックで予め定められたデータを選択して出力する。KeyREG22は、セレクタ21により選択された鍵を記憶する記憶部(レジスタ)である。KS23は、KeyREG22に記憶されている鍵から各クロックのAKで使用される拡大鍵を算出する。DataREG25は、暗号文または復号処理の過程で出力される中間データを記憶する記憶部(レジスタ)である。
【0052】
FD31は、逆変換である演算FD−1を有する演算FDを実行する。FD−132は、演算FD−1を実行する。演算FDおよび演算FD−1は、例えば上述のFEおよびFE−1と同様の演算を適用できる。
【0053】
FEおよびFE−1としては、例えばAESのMCおよびMC−1を用いることができる。図14は、MCの一例を示す図である。図15は、MC−1の一例を示す図である。MCおよびMC−1の入力であるxは、32行1列の行列表現とすることができる。
【0054】
これまでは、AES暗号方式を例に説明したが、MCおよびMC−1のような9ビット以上で表される線形変換を含むように構成できる暗号方式であれば、本実施形態と同様の手法を適用できる。
【0055】
図16は、本実施形態の暗号化装置110による暗号化処理の一例を示すフローチャートである。図16は、FEとしてMCを用いた例を示している。
【0056】
暗号化装置110は、最初のラウンド(0ラウンド)でAKを一度実行する(ステップS31)。次に、暗号化装置110は、nラウンド(1≦n<規定ラウンド数)で、SB、SR、MC、AKの順に演算を繰り返す(ステップS32)。なお、最終ラウンドのときのみ、MCを通した拡大鍵を用いた排他的論理和であるAK’を実行する。
【0057】
暗号化装置110は、(規定ラウンド数−1)ラウンドまでの演算が終了したか否かを判断し(ステップS33)、終了していない場合は(ステップS33:No)ステップS32に戻り処理を繰り返す。終了した場合は(ステップS33:Yes)、暗号化装置110は、最終ラウンドでMC−1の演算を行う(ステップS34)。
【0058】
図17は、復号装置120による復号処理の一例を示すフローチャートである。復号装置120は、最初にAKを一度実行する(ステップS41)。次に、復号装置120は、nラウンド(1≦n<規定ラウンド)で、SR−1、SB−1、AK、MC−1の順に演算を繰り返す(ステップS42)。復号装置120は、(規定ラウンド数−1)ラウンドまでの演算が終了したか否かを判断し(ステップS43)、終了していない場合は(ステップS43:No)ステップS42に戻り処理を繰り返す。終了した場合は(ステップS43:Yes)、復号装置120は、最終ラウンドでMCの演算を行う(ステップS44)。
【0059】
なお、各ラウンド内のSBとSRとは入れ替えることができ、また、SB−1とSR−1とは入れ替えることができる。
【0060】
図18は、図11の暗号化処理手順を用いた場合の、連続するクロックの記憶装置の内容のハミング距離を示す図である。図18に示すように、クロック10と11、およびクロック11と12のハミング距離は、DPA可能な条件である上記4つの条件のいずれかを満たしていない。
【0061】
このように、第1の実施形態にかかる暗号化装置および復号装置では、サイドチャネル攻撃が成立する条件を満たさないように、暗号方式で定められている演算の処理順序を変更することができる。これにより、乱数の生成等を行う従来技術と比較して、速度、回路規模、電力および処理性能等に悪影響を及ぼすことなく、サイドチャネル攻撃に対して安全な暗号化装置および復号装置を実現できる。
【0062】
(第2の実施形態)
第2の実施形態では、暗号化装置と復号装置とで回路を共通化した装置(以下、暗号/復号装置という)について説明する。
【0063】
図19は、第2の実施形態の暗号/復号装置200の回路構成例を示す図である。図19は、暗号回路を基本として復号処理を追加した場合に考えられるFEを利用した回路例を示す図である。
【0064】
暗号/復号装置200は、セレクタ201と、KeyREG202と、KS−1203と、KS204と、セレクタ205と、FE206と、FE−1207と、MC−1208と、セレクタ209と、セレクタ210と、DataREG211と、SR212と、SB213と、SR−1214と、SB−1215と、セレクタ216と、MC−1217と、MC218と、FE219と、FE−1220と、セレクタ221と、AK222と、セレクタ223と、を備えている。
【0065】
セレクタ201、セレクタ205、セレクタ209、セレクタ210、セレクタ216、セレクタ221、および、セレクタ223は、各クロックで予め定められたデータを選択して出力する。KeyREG202は、セレクタ201により選択された鍵を記憶する記憶部(レジスタ)である。KS−1203およびKS204は、KeyREG202に記憶されている鍵から各クロックのAKで使用される拡大鍵を算出する。なお、KS−1203はKS204の逆変換である。DataREG211は、平文、暗号文または中間データを記憶する記憶部(レジスタ)である。
【0066】
暗号化処理では、1クロック目はAKを演算し、2〜10クロック目はSB、SR、MC、AKの順で演算し、11クロック目はSB、SR、FE、AK’の順で演算する。11クロック目では、FEを通した拡大鍵を用いる。12クロック目はMC−1を演算する。
【0067】
復号処理では、1クロック目はAKを演算し、2〜10クロック目はSB−1、SR、MC−1、AKの順で演算し、11クロック目はSB−1、SR、FE−1、AKの順で演算する。本実施形態の復号処理に利用される拡大鍵は、2〜10クロック目はMC−1を通した値を利用することで、図1に示した演算手順と同じ演算結果を導出することができる。11クロック目の拡大鍵はFE−1を通した拡大鍵を用いる。FEとFE−1とは逆演算が可能であればよいので、暗号化処理時の11クロック目でSB、SR、FE−1、AK’の順で演算する場合、拡大鍵はFE−1のみでよい。
【0068】
図20は、図19と異なる暗号/復号装置200−2の回路構成例を示す図である。図20は、復号回路を基本として暗号化処理を追加した場合に考えられるFEを利用した回路例を示す図である。
【0069】
暗号/復号装置200−2による暗号化処理では、1クロック目はAKを演算し、2〜10クロック目はSB、SR、AK、MCの順で演算し、11クロック目はSB、SR、AK、FEの順で演算し、12クロック目でFE−1を演算する。このときの2〜10クロック目の拡大鍵は、MC−1を通した拡大鍵を用いることで、図1に示した演算手順と同じ演算結果を得ることができる。11クロック目の拡大鍵は、そのままの拡大鍵を用いる。
【0070】
暗号/復号装置200−2による復号処理では、1クロック目はAKを演算し、2〜10クロック目はSB−1、SR−1、AK、MC−1の順で演算し、11クロック目はSB−1、SR−1、AK、FE−1の順で演算し、12クロック目でFEを演算する。このときの2〜11クロック目の拡大鍵は、鍵スケジュール部(セレクタ209)から得られたそのままの値を用いればよい。
【0071】
図21および図22は、それぞれ、FEとしてMCを用いた場合の暗号/復号装置200−3および暗号/復号装置200−4の回路構成例を示す図である。図21および図22は、それぞれ図19および図20のFEにMCを適用した場合の例を表す。
【0072】
MCとAKとを入れ替えた回路構成の場合、DPA攻撃を不能にする方法として、新たな秘密情報(秘密鍵kx)を導入する手法を用いてもよい。図23は、このように構成した暗号/復号装置200−5の回路構成例を示す図である。暗号/復号装置200−5では、MC224と、FE225と、セレクタ226と、排他的論理和演算部227と、が追加される。この構成では、例えば暗号化処理の11クロック目でAK222の後にFE219を実行した後に、排他的論理和演算部227が、FE219の演算結果と秘密鍵kxとの排他的論理和を演算する。これにより、秘密鍵kxを推測する必要が生じるため、DPA攻撃を不能とすることができる。なお、秘密鍵kxとの排他的論理和を演算する箇所は図23に限られるものではない。例えば、DataREG211の後で秘密鍵によるマスク(排他的論理和の演算)を行い、セレクタ223の後でマスクの解除を行うように構成してもよい。
【0073】
このように、第2の実施形態では、第1の実施形態の暗号化装置と復号装置とで回路を共通化した暗号/復号装置を実現することができる。
【0074】
(第3の実施形態)
第3の実施形態では、暗号化装置および復号装置をAMIシステムに適用した実施形態を説明する。第1または第2の実施形態にかかる暗号化装置および復号装置を適用したAMIシステムは、安全な暗号化通信を実現できる。図24は、第3の実施形態のAMIシステムの構成例を示す図である。
【0075】
家庭内およびビル内に置かれるEMS(Energy Management System)310は、家電機器に接続され利用されるエネルギーを管理する。EMS310は、利用したエネルギーの量等を表す利用情報を、通信部330を介して電力会社が管理するMDMS(Meter Data Management System)320に配信する。このとき、家電機器とEMS310と通信部330とMDMS320のそれぞれの間は、暗号化通信されることが好ましい。特に、通信部330からMDMS320では、個人情報保護の観点から暗号化通信する必要がある。そこで、通信部330に上記実施形態の暗号化装置を備え、MDMS320へ利用情報を暗号化送信するように構成することができる。
【0076】
また、EMS310は、各家電機器の利用情報を数日間分管理する場合がある。その場合、EMS310に上記実施形態の暗号化装置を備え、利用情報を暗号化した状態でハードディスク等に記憶するように構成することができる。これにより、利用情報が容易に改ざんされることを防止することができる。電力会社は各ユーザの暗号化された利用情報を復号する必要があるため、MDMS320に復号装置を備える必要がある。
【0077】
AMIシステムは電力会社からのエネルギー制御も想定されている。そこで、MDMS320がさらに暗号化装置を備え、暗号化制御情報を各家庭およびビル内へ暗号化送信するように構成してもよい。この場合、通信部330は、暗号化された暗号化制御情報を復号するため復号装置を備える必要がある。
【0078】
なお、AMIシステムは上記構成に限定されるものではない。例えば暗号化装置と復号装置が対になるようAMIシステムを構成すればよく、全構成要素が必須ではない。
【0079】
このように、第3の実施形態では、高機能電力システムで用いられるデータに対して、データの不正利用を防止することができる。
【0080】
以上説明したとおり、第1から第3の実施形態によれば、速度、回路規模、電力および処理性能等に悪影響を及ぼすことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現することができる。
【0081】
次に、第1から第3の実施形態の装置(暗号化装置または復号装置)のハードウェア構成について説明する。
【0082】
第1から第2の実施形態にかかる装置は、CPU(Central Processing Unit)などの制御装置と、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶装置と、ネットワークに接続して通信を行う通信I/Fと、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバスを備えており、通常のコンピュータを利用したハードウェア構成とすることができる。
【0083】
なお、本実施形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【0084】
110 暗号化装置
11、14、19、102、103、106 セレクタ
12 KeyREG
13 鍵スケジュール部(KS)
15 DataREG
16 SubstitutionBytes(SB)
17 ShiftRows(SR)
18 MixColumns(MC)
20 AddRoundKey(AK)
101、104 FE
105 FE−1
120 復号装置
21、24、28、30、34 セレクタ
22 KeyREG
23 鍵スケジュール部(KS)
25 DataREG
26 InverseShiftRows(SR−1)
27 InverseSubstitutionBytes(SB−1)
29 AddRoundKey(AK)
31 FD
32 FD−1
33 InverseMixColumns(MC−1)
【技術分野】
【0001】
本発明の実施形態は、暗号化装置および復号装置に関する。
【背景技術】
【0002】
通信機能を有し、定期的に家庭内または事業所内の電気使用量を電力事業者に自動送信する高機能電力システムAMI(Advanced Metering Infrastructure、スマートメーター)システムが注目を浴びている。従来のAMR(Automated Meter Reading)システムは、人件費の削減や運転コスト削減の必要性から実現されてきた。AMIシステムは、AMRシステムと比べて多くの機能を有し、家庭内または事業所内のエアコンや照明などの設備機器とメーター間、またはメーターと電力会社間の双方向通信を可能にし、エネルギー資源利用の最適化を実現可能にするものである。
【0003】
AMIシステムの導入は、エネルギー資源の観点から有用である反面、プライバシーの侵害問題への対策、さらにはAMIシステムで取り交わされる情報の信憑性(安全性)確保を十分に行う必要がある。これらのセキュリティ問題を解決するには、暗号/復号装置が必要になる。
【0004】
暗号/復号装置は、平文/暗号文を特定のアルゴリズムを用いて暗号/復号を行うものであり、情報の安全性を確保することが可能である。しかし、暗号/復号装置は、動作中の電力や電磁波を測定するだけで内部秘密鍵を導き出すパッシブな攻撃であるSPA(Simple Power Analysis)、DPA(Differential Power Analysis)、EMA(ElectroMagnetic Analyis)などのサイドチャネル攻撃が報告されている。サイドチャネル攻撃は、攻撃の痕跡が残らないため対策技術が必要かつ重要である。
【0005】
サイドチャネル攻撃は、暗号/復号装置の演算中に測定することが可能な消費電力や電磁波と、推測する秘密鍵から計算することのできる中間データとの類似度が高い秘密鍵を導き出すことにより実現されている。推測する秘密鍵の鍵空間が小さいことによって攻撃が可能となる。従来のサイドチャネル対策では、乱数装置を用いた中間データをマスクすることによって中間データをかく乱し、類似度の高さ判定を困難になるようにしていた。
【0006】
上述のように、AMIシステムに必要であるセキュリティ問題を解決する上では、サイドチャネル対策を施した暗号/復号装置が必要である。一方、エネルギー資源の有効活用という目的からは、消費電力が大きくエネルギー効率の悪いマスク対策より消費電力の少ないサイドチャネル対策が必要となる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献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.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、乱数生成処理は比較的重い処理であるため、従来技術のように乱数を使用する方法では、速度、回路規模、電力および処理性能等に悪影響があるという問題があった。
【課題を解決するための手段】
【0009】
実施形態の暗号化装置は、第1暗号部分処理部と、生成部と、第2暗号部分処理部と、第3暗号部分処理部と、第4暗号部分処理部と、を備える。第1暗号部分処理部は、平文から第1中間データを計算する。生成部は、第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を暗号鍵から生成する。第2暗号部分処理部は、第i中間データ(iは1以上N未満の整数)と拡大鍵とに基づいて第i+1中間データを計算する。第3暗号部分処理部は、第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算する。第4暗号部分処理部は、第N+1中間データに対して変換の逆変換を含む演算を行い、暗号文を計算する。
【0010】
実施形態の復号装置は、第1暗号部分処理部と、生成部と、第2暗号部分処理部と、第3暗号部分処理部と、第4暗号部分処理部と、を備える。第1暗号部分処理部は、暗号文から第1中間データを計算する。生成部は、第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を暗号鍵から生成する。第2暗号部分処理部は、第i中間データ(iは1以上N未満の整数)と拡大鍵とに基づいて第i+1中間データを計算する。第3暗号部分処理部は、第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算する。第4暗号部分処理部は、第N+1中間データに対して変換の逆変換を含む演算を行い、平文を計算する。
【図面の簡単な説明】
【0011】
【図1】通常の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図。
【図2】AKの構成例を示す図。
【図3】SBの構成例を示す図。
【図4】SRの構成例を示す図。
【図5】MCの構成例を示す図。
【図6】通常の暗号化装置による暗号化処理の一例を示すフローチャート。
【図7】通常の復号装置による復号処理の一例を示すフローチャート。
【図8】通常の暗号化装置の回路構成例を示す図。
【図9】各クロックで記憶装置に記憶されるデータの内容を示す図。
【図10】連続するクロックの記憶装置の内容のハミング距離を示す図。
【図11】第1の実施形態の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図。
【図12】第1の実施形態の暗号化装置の回路構成例を示す図。
【図13】第1の実施形態の復号装置の回路構成例を示す図。
【図14】MCの一例を示す図。
【図15】MC−1の一例を示す図。
【図16】第1の実施形態の暗号化装置による暗号化処理の一例を示すフローチャート。
【図17】第1の実施形態の復号装置による復号処理の一例を示すフローチャート。
【図18】図11の暗号化処理手順を用いた場合の、連続するクロックの記憶装置の内容のハミング距離を示す図。
【図19】第2の実施形態の暗号/復号装置の回路構成例を示す図。
【図20】図19と異なる暗号/復号装置の回路構成例を示す図。
【図21】FEとしてMCを用いた場合の暗号/復号装置の回路構成例を示す図。
【図22】FEとしてMCを用いた場合の暗号/復号装置の回路構成例を示す図。
【図23】暗号/復号装置の別の回路構成例を示す図。
【図24】第3の実施形態のAMIシステムの構成例を示す図。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、この発明にかかる暗号化装置および復号装置の好適な実施形態を詳細に説明する。
【0013】
(第1の実施形態)
第1の実施形態にかかる暗号化装置および復号装置は、サイドチャネル攻撃が成立する条件を満たさないように、暗号方式で定められている演算の処理順序を変更する。これにより、乱数の生成等を行うことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現できる。
【0014】
最初に、暗号化装置および復号装置の脅威となるDPAを例に、サイドチャネル攻撃の概要を紹介する。DPAは、データ処理を行った回路の消費電力を測定することで秘密鍵を統計的に推測する攻撃である。攻撃者は次のような手順で攻撃を行う。
(1)推定した秘密鍵(推定鍵)を元に演算処理中データのハミング距離を予測する。
(2)測定した消費電力と予測演算処理中データのハミング距離の類似度を計算する。
(3)複数の消費電力に対し類似度が最も高い推定鍵を当たり鍵と判定する。
【0015】
大きな鍵空間では当たり鍵の判定が難しいため、秘密鍵の推定は、小さな有限鍵空間で行う必要がある。従来報告されているDPAの推定鍵空間は、8ビット程度が主流となっている。
【0016】
演算処理中データのハミング距離の類似度を予測するのは、消費電力がハードウェアの論理素子の変化に依存しているためである。また、ハードウェアは、データを格納する記憶部と演算処理を実現する組み合わせ回路とで構成されているが、サイドチャネル攻撃に対して脅威となるデータの変化は記憶部での影響が大きい。記憶部はクロックに同期しているため、データの変化が同一タイミングで変化するのに対し、組み合わせ回路は使われる論理素子に依存し推測する演算処理中データが必ずしも同一タイミングで変化する訳ではないためである。また、消費電力も記憶部の方が大きいとされている。
【0017】
以下、本実施形態では、暗号化および復号をAES(Advanced Encryption Standard)に代表される、ブロック暗号を用いた暗号化方式で行う例を説明する。また、以下では暗号部分処理としてAESのラウンド関数等を用いた例を説明する。なお、暗号部分処理とは、平文から暗号文を計算する暗号化処理の過程で実行される処理を表す。AESの場合は、例えばSubstitutionBytes、ShiftRows、MixColumns、およびAddRoundKeyを備えるラウンド関数が暗号部分処理に相当する。
【0018】
本実施形態に適用されるブロック暗号化方式では、暗号化装置および復号装置は、暗号鍵を入力として複数個の拡大鍵を出力する鍵スケジュール部と、入力データの攪拌を行うデータ攪拌部とで主に構成される。図1は、通常の暗号化装置のデータ攪拌部10および復号装置のデータ攪拌部20の処理手順の一例を示す図である。
【0019】
暗号化装置のデータ攪拌部10は、鍵スケジュール部(図示せず)で生成された拡大鍵をデータに排他的論理和を行うAddRoundKey(AK)、8ビット単位に非線形変換を行うSubstitutionBytes(SB)、データのバイト単位に入れ替えを行うShiftRows(SR)、および、32ビット内の8ビット毎に影響を及ぼしあう線形変換を行うMixColumns(MC)で構成される。なお、図1の矢印は、各演算が実行された結果であるデータがレジスタ等の記憶部にラッチされるタイミングを表している。
【0020】
同様に、復号装置のデータ攪拌部20は、SB、SR、およびMCのそれぞれ逆変換であるInverseSubstitutionBytes(SB−1)、InverseShiftRows(SR−1)、および、InverseMixColumns(MC−1)と、AKとで構成される。
【0021】
AES暗号方式で用いられる各演算の構成例について図2〜図5を用いて説明する。以下では、鍵長が128ビットの場合の例を説明する。
【0022】
図2は、AKの構成例を示す図である。図2に示すように、AKは、128ビットの拡大鍵と、128ビットの入力データとの排他的論理和である128ビットのデータを出力するビット毎の演算処理である。
【0023】
図3は、SBの構成例を示す図である。図3に示すようにSBは、128ビットの入力データを16個の8ビットデータに区切り、非線形変換テーブルSによって行われる演算処理である。
【0024】
図4は、SRの構成例を示す図である。図4に示すように、SRは、128ビットの入力データを16個の8ビットデータに分割して並び替える。図4では、入力データを分割した各8ビットデータが、矢印の先で表された位置に並び替えられることが示されている。
【0025】
図5は、MCの構成例を示す図である。図5に示すように、MCは、128ビットの入力データを4個の32ビットデータに分けて32ビット単位に線形処理を行う演算処理である。
【0026】
AES暗号方式の復号処理では、暗号化処理の各演算がそれぞれ逆変換となる演算が用いられる。AKは、排他的論理和なので復号処理と暗号化処理とで同一の演算となる。SB−1は、SBの逆変換になる非線形変換テーブルによる演算処理である。SR−1は、SRの逆変換になる入力データ入れ替え操作を行う演算処理である。MC−1は、MCの逆変換を行う処理である。
【0027】
図6は、通常の暗号化装置による暗号化処理の一例を示すフローチャートである。暗号化装置は、最初のラウンド(0ラウンド)でAKを一度実行する(ステップS11)。なお、本実施形態では、1クロックでAES暗号方式の1ラウンドを実行する。
【0028】
次に、暗号化装置は、nラウンド(1≦n<規定ラウンド数)で、SB、SR、MC、AKの順に演算を繰り返す(ステップS12)。暗号化装置は、(規定ラウンド数−1)ラウンドまでのラウンドの演算が終了したか否かを判断し(ステップS13)、終了していない場合は(ステップS13:No)ステップS12に戻り処理を繰り返す。終了した場合は(ステップS13:Yes)、暗号化装置は、最終ラウンド(規定ラウンド)でSB、SR、AKの演算を順に行う(ステップS14)。
【0029】
図7は、通常の復号装置による復号処理の一例を示すフローチャートである。復号装置は、最初にAKを一度実行する(ステップS21)。次に、復号装置は、nラウンド(1≦n<規定ラウンド数)で、SR−1、SB−1、AK、MC−1の順に演算を繰り返す(ステップS22)。復号装置は、(規定ラウンド数−1)ラウンドまでのラウンドの演算が終了したか否かを判断し(ステップS23)、終了していない場合は(ステップS23:No)ステップS22に戻り処理を繰り返す。終了した場合は(ステップS23:Yes)、復号装置は、最終ラウンドでSR−1、SB−1、AKの演算を順に行う(ステップS24)。
【0030】
図8は、通常の暗号化装置の回路構成例を示す図である。図8は、鍵長128ビットのAES暗号方式の暗号化装置1の一例である。図8に示すように暗号化装置1は、セレクタ11と、KeyREG12と、鍵スケジュール部(KS)13と、セレクタ14と、DataREG15と、SB16と、SR17と、MC18と、セレクタ19と、AK20と、を備えている。
【0031】
セレクタ11、セレクタ14、およびセレクタ19は、各クロックで予め定められたデータを選択して出力する。KeyREG12は、セレクタ11により選択された暗号鍵を記憶する記憶部(レジスタ)である。KS13は、KeyREG12に記憶されている鍵から各クロックのAKで使用される拡大鍵を算出する。DataREG15は、平文または暗号化処理の過程で出力される中間データを記憶する記憶部(レジスタ)である。
【0032】
入力された平文は、DataREG15に格納される。1クロック目では、AK20のみが実行され、演算結果である中間データがDataREG15に格納される。2クロック目から10クロック目では、SB16、SR17、MC18、およびAK20を毎回行いながら、中間データがDataREG15に格納される。11クロック目では、SB16、SR17、およびAK20を行いDataREG15に演算結果である暗号文が格納される。また、各クロックのAK20で使われる拡大鍵は、KS13で秘密鍵を用いて計算され、それぞれ異なる値である。
【0033】
AESに限らず多くの暗号方式は、ハードウェアおよびソフトウェアで柔軟で高速な実装ができるように8ビット単位の処理と32ビット単位の処理とを組み合わせて実現されていることが多い。
【0034】
説明を簡単化するため記号を定義する。平文および暗号文をそれぞれP(Plaintext)およびC(Ciphertext)とする。各演算処理の入力をxとし、出力をyとし、各クロックで異なる拡大鍵をkとする。この場合、AKはy=AK(x,k)、SBはy=SB(x)、SRはy=SR(x)、および、MCはy=MC(x)と表される。
【0035】
図9は、各クロックで記憶装置(DataREG15)に記憶されるデータの内容を示す図である。図10は、連続するクロックの記憶装置の内容のハミング距離を示す図である。なお、図9内の「A=B」は、この情報自体が記憶されることを意味するのではなく、右辺の「B」が記憶装置に記憶されることを意味する。例えば、クロック1では、「P+k0」が記憶されることを意味する。そして、後続のクロックでの記憶内容の記載を簡略化するため、「B」を左辺の「A」で表している。
【0036】
演算中の消費電力を測定することで攻撃が可能となるDPAは、記憶装置に格納されるデータ値の変化を、推定鍵と平文または暗号文とを用いることにより予測し、得られる消費電力との類似度によって当たり鍵が判定される。消費電力は、記憶装置によるデータの変化による影響が大きいことから、図10に示す記憶装置のハミング距離に依存している。
【0037】
DPAが成功するか否かは、類似度判定が容易である必要性がある。例えばハミング距離が以下の条件を満たす必要がある。
(1)PまたはCを含む
(2)拡大鍵kを1種類だけ含む
(3)9ビット以上で表される線形変換を含まない(MCまたはMC−1を含まない)
(4)SBまたはSB−1を1つだけ含む
【0038】
すべてを満たすのは、10、11クロックのハミング重みだけであり、この場合にDPAが成功する。他の場合でも攻撃が原理的にできない訳ではない。本実施形態では、鍵空間が8ビット空間であり演算処理に非線形変換処理(非線形変換テーブルSによる変換処理)を含むものとしている。この場合は、上記4つの条件のいずれかを満たさなければDPAによる攻撃が困難になる。
【0039】
従来の乱数マスク対策は、ハミング重みを推定鍵から求めるだけでなく、乱数の依存も予測する必要性が生じることから、DPAに対する対策とされていた。本実施形態では、上記4つの条件を満たさないような処理順序で各ラウンド(クロック)の演算を実行することにより、コンパクトなサイドチャネル攻撃対策の暗号化装置および復号装置を実現する。
【0040】
図11は、第1の実施形態の暗号化装置のデータ攪拌部および復号装置のデータ攪拌部の処理手順の一例を示す図である。図11の左側の図が、暗号化装置のデータ攪拌部の処理手順を表している。図11の右側の図が、復号装置のデータ攪拌部の処理手順を表している。図11の矢印は、図1と同様に、各演算が実行された結果であるデータがレジスタ等の記憶部にラッチされるタイミングを表している。
【0041】
暗号化処理では、クロック0で入力がレジスタにラッチされ、クロック1でAKを演算した結果がレジスタにラッチされる。クロック2〜10でSB、SR、MC、AKを演算した結果がレジスタにラッチされる。クロック11でSB、SR、FE、AKを演算した結果がレジスタにラッチされる。クロック12でFE−1を演算した結果がレジスタにラッチされ、この結果が暗号文として出力される。
【0042】
図1と比較すると、図1の最終クロックに相当するクロックでの演算処理に演算FEが追加され、当該クロックの後に、FEの逆変換となるFE−1を行うクロックがさらに追加される。FEおよびFE−1としては、例えば以下の(1)式および(2)式の関数を用いることができる。
FE(x)=A(x+b)+c ・・・(1)
FE−1(x)=A−1(x+c)+b ・・・(2)
【0043】
なお、xはm(mは9以上)行1列の行列表現データであり、行列Aは逆行列A−1を持つ正方行列(正則行列)である。またb、cは、xと同様の行列表現ができ、任意の行列を選ぶことができる。なお、FEのことを攪拌行列と呼ぶ場合がある。
【0044】
図12は、第1の実施形態の暗号化装置の回路構成例を示す図である。図12に示すように暗号化装置110は、セレクタ11と、KeyREG12と、KS13と、セレクタ14と、DataREG15と、SB16と、SR17と、MC18と、セレクタ19と、AK20と、FE101と、セレクタ102と、セレクタ103と、FE104と、FE−1105と、セレクタ106と、を備えている。
【0045】
図8と同様の構成部については同一の符号を付し、説明を省略する。暗号化装置110は、セレクタ102と、セレクタ103と、FE104と、FE−1105と、セレクタ106とをさらに備える点が、図8の暗号化装置1と異なっている。
【0046】
セレクタ102、セレクタ103、およびセレクタ106は、各クロックで予め定められたデータを選択して出力する。各クロックで選択するデータは、図11に示されているので説明を省略する。
【0047】
FE101およびセレクタ102は、クロック11で実行されるFE104との整合性を保つため必要となる。すなわち、クロック11では、セレクタ102は、KS13により算出された拡大鍵をFE101で演算した結果を選択する。
【0048】
セレクタ19は、クロック11では、FE104の演算結果(FE(x)とする)を選択する。そして、クロック11では、演算結果FE(x)に対してAK20が実行される。このとき、KS13により算出された拡大鍵(kとする)をそのまま演算結果FE(x)との排他的論理和の演算(AK20)に用いたとすると、FE(x)(+)kが算出される。なお、記号(+)は排他的論理和を意味する。しかし、このように算出されたFE(x)(+)kからは、次のクロック12でFE−1を適用しても、本来復元されるべきデータであるx(+)kを復元することができない。
【0049】
このため、クロック11では、セレクタ102が拡大鍵kをFE101で演算した結果を選択し、AK20に出力する。これにより、クロック11では、FE(x)(+)FE(k)が算出され、クロック12で、この算出結果にFE−1を適用することにより、x(+)kを復元できる。なお、図11では、他のクロックのAKと異なることを示すため、クロック11のFEの後の処理をAK’と表している。
【0050】
図13は、第1の実施形態の復号装置の回路構成例を示す図である。図13に示すように復号装置120は、セレクタ21と、KeyREG22と、KS23と、セレクタ24と、DataREG25と、SR−126と、SB−127と、セレクタ28と、AK29と、セレクタ30と、FD31と、FD−132と、MC−133と、セレクタ34と、を備えている。
【0051】
セレクタ21、セレクタ24、セレクタ28、セレクタ30、およびセレクタ34は、各クロックで予め定められたデータを選択して出力する。KeyREG22は、セレクタ21により選択された鍵を記憶する記憶部(レジスタ)である。KS23は、KeyREG22に記憶されている鍵から各クロックのAKで使用される拡大鍵を算出する。DataREG25は、暗号文または復号処理の過程で出力される中間データを記憶する記憶部(レジスタ)である。
【0052】
FD31は、逆変換である演算FD−1を有する演算FDを実行する。FD−132は、演算FD−1を実行する。演算FDおよび演算FD−1は、例えば上述のFEおよびFE−1と同様の演算を適用できる。
【0053】
FEおよびFE−1としては、例えばAESのMCおよびMC−1を用いることができる。図14は、MCの一例を示す図である。図15は、MC−1の一例を示す図である。MCおよびMC−1の入力であるxは、32行1列の行列表現とすることができる。
【0054】
これまでは、AES暗号方式を例に説明したが、MCおよびMC−1のような9ビット以上で表される線形変換を含むように構成できる暗号方式であれば、本実施形態と同様の手法を適用できる。
【0055】
図16は、本実施形態の暗号化装置110による暗号化処理の一例を示すフローチャートである。図16は、FEとしてMCを用いた例を示している。
【0056】
暗号化装置110は、最初のラウンド(0ラウンド)でAKを一度実行する(ステップS31)。次に、暗号化装置110は、nラウンド(1≦n<規定ラウンド数)で、SB、SR、MC、AKの順に演算を繰り返す(ステップS32)。なお、最終ラウンドのときのみ、MCを通した拡大鍵を用いた排他的論理和であるAK’を実行する。
【0057】
暗号化装置110は、(規定ラウンド数−1)ラウンドまでの演算が終了したか否かを判断し(ステップS33)、終了していない場合は(ステップS33:No)ステップS32に戻り処理を繰り返す。終了した場合は(ステップS33:Yes)、暗号化装置110は、最終ラウンドでMC−1の演算を行う(ステップS34)。
【0058】
図17は、復号装置120による復号処理の一例を示すフローチャートである。復号装置120は、最初にAKを一度実行する(ステップS41)。次に、復号装置120は、nラウンド(1≦n<規定ラウンド)で、SR−1、SB−1、AK、MC−1の順に演算を繰り返す(ステップS42)。復号装置120は、(規定ラウンド数−1)ラウンドまでの演算が終了したか否かを判断し(ステップS43)、終了していない場合は(ステップS43:No)ステップS42に戻り処理を繰り返す。終了した場合は(ステップS43:Yes)、復号装置120は、最終ラウンドでMCの演算を行う(ステップS44)。
【0059】
なお、各ラウンド内のSBとSRとは入れ替えることができ、また、SB−1とSR−1とは入れ替えることができる。
【0060】
図18は、図11の暗号化処理手順を用いた場合の、連続するクロックの記憶装置の内容のハミング距離を示す図である。図18に示すように、クロック10と11、およびクロック11と12のハミング距離は、DPA可能な条件である上記4つの条件のいずれかを満たしていない。
【0061】
このように、第1の実施形態にかかる暗号化装置および復号装置では、サイドチャネル攻撃が成立する条件を満たさないように、暗号方式で定められている演算の処理順序を変更することができる。これにより、乱数の生成等を行う従来技術と比較して、速度、回路規模、電力および処理性能等に悪影響を及ぼすことなく、サイドチャネル攻撃に対して安全な暗号化装置および復号装置を実現できる。
【0062】
(第2の実施形態)
第2の実施形態では、暗号化装置と復号装置とで回路を共通化した装置(以下、暗号/復号装置という)について説明する。
【0063】
図19は、第2の実施形態の暗号/復号装置200の回路構成例を示す図である。図19は、暗号回路を基本として復号処理を追加した場合に考えられるFEを利用した回路例を示す図である。
【0064】
暗号/復号装置200は、セレクタ201と、KeyREG202と、KS−1203と、KS204と、セレクタ205と、FE206と、FE−1207と、MC−1208と、セレクタ209と、セレクタ210と、DataREG211と、SR212と、SB213と、SR−1214と、SB−1215と、セレクタ216と、MC−1217と、MC218と、FE219と、FE−1220と、セレクタ221と、AK222と、セレクタ223と、を備えている。
【0065】
セレクタ201、セレクタ205、セレクタ209、セレクタ210、セレクタ216、セレクタ221、および、セレクタ223は、各クロックで予め定められたデータを選択して出力する。KeyREG202は、セレクタ201により選択された鍵を記憶する記憶部(レジスタ)である。KS−1203およびKS204は、KeyREG202に記憶されている鍵から各クロックのAKで使用される拡大鍵を算出する。なお、KS−1203はKS204の逆変換である。DataREG211は、平文、暗号文または中間データを記憶する記憶部(レジスタ)である。
【0066】
暗号化処理では、1クロック目はAKを演算し、2〜10クロック目はSB、SR、MC、AKの順で演算し、11クロック目はSB、SR、FE、AK’の順で演算する。11クロック目では、FEを通した拡大鍵を用いる。12クロック目はMC−1を演算する。
【0067】
復号処理では、1クロック目はAKを演算し、2〜10クロック目はSB−1、SR、MC−1、AKの順で演算し、11クロック目はSB−1、SR、FE−1、AKの順で演算する。本実施形態の復号処理に利用される拡大鍵は、2〜10クロック目はMC−1を通した値を利用することで、図1に示した演算手順と同じ演算結果を導出することができる。11クロック目の拡大鍵はFE−1を通した拡大鍵を用いる。FEとFE−1とは逆演算が可能であればよいので、暗号化処理時の11クロック目でSB、SR、FE−1、AK’の順で演算する場合、拡大鍵はFE−1のみでよい。
【0068】
図20は、図19と異なる暗号/復号装置200−2の回路構成例を示す図である。図20は、復号回路を基本として暗号化処理を追加した場合に考えられるFEを利用した回路例を示す図である。
【0069】
暗号/復号装置200−2による暗号化処理では、1クロック目はAKを演算し、2〜10クロック目はSB、SR、AK、MCの順で演算し、11クロック目はSB、SR、AK、FEの順で演算し、12クロック目でFE−1を演算する。このときの2〜10クロック目の拡大鍵は、MC−1を通した拡大鍵を用いることで、図1に示した演算手順と同じ演算結果を得ることができる。11クロック目の拡大鍵は、そのままの拡大鍵を用いる。
【0070】
暗号/復号装置200−2による復号処理では、1クロック目はAKを演算し、2〜10クロック目はSB−1、SR−1、AK、MC−1の順で演算し、11クロック目はSB−1、SR−1、AK、FE−1の順で演算し、12クロック目でFEを演算する。このときの2〜11クロック目の拡大鍵は、鍵スケジュール部(セレクタ209)から得られたそのままの値を用いればよい。
【0071】
図21および図22は、それぞれ、FEとしてMCを用いた場合の暗号/復号装置200−3および暗号/復号装置200−4の回路構成例を示す図である。図21および図22は、それぞれ図19および図20のFEにMCを適用した場合の例を表す。
【0072】
MCとAKとを入れ替えた回路構成の場合、DPA攻撃を不能にする方法として、新たな秘密情報(秘密鍵kx)を導入する手法を用いてもよい。図23は、このように構成した暗号/復号装置200−5の回路構成例を示す図である。暗号/復号装置200−5では、MC224と、FE225と、セレクタ226と、排他的論理和演算部227と、が追加される。この構成では、例えば暗号化処理の11クロック目でAK222の後にFE219を実行した後に、排他的論理和演算部227が、FE219の演算結果と秘密鍵kxとの排他的論理和を演算する。これにより、秘密鍵kxを推測する必要が生じるため、DPA攻撃を不能とすることができる。なお、秘密鍵kxとの排他的論理和を演算する箇所は図23に限られるものではない。例えば、DataREG211の後で秘密鍵によるマスク(排他的論理和の演算)を行い、セレクタ223の後でマスクの解除を行うように構成してもよい。
【0073】
このように、第2の実施形態では、第1の実施形態の暗号化装置と復号装置とで回路を共通化した暗号/復号装置を実現することができる。
【0074】
(第3の実施形態)
第3の実施形態では、暗号化装置および復号装置をAMIシステムに適用した実施形態を説明する。第1または第2の実施形態にかかる暗号化装置および復号装置を適用したAMIシステムは、安全な暗号化通信を実現できる。図24は、第3の実施形態のAMIシステムの構成例を示す図である。
【0075】
家庭内およびビル内に置かれるEMS(Energy Management System)310は、家電機器に接続され利用されるエネルギーを管理する。EMS310は、利用したエネルギーの量等を表す利用情報を、通信部330を介して電力会社が管理するMDMS(Meter Data Management System)320に配信する。このとき、家電機器とEMS310と通信部330とMDMS320のそれぞれの間は、暗号化通信されることが好ましい。特に、通信部330からMDMS320では、個人情報保護の観点から暗号化通信する必要がある。そこで、通信部330に上記実施形態の暗号化装置を備え、MDMS320へ利用情報を暗号化送信するように構成することができる。
【0076】
また、EMS310は、各家電機器の利用情報を数日間分管理する場合がある。その場合、EMS310に上記実施形態の暗号化装置を備え、利用情報を暗号化した状態でハードディスク等に記憶するように構成することができる。これにより、利用情報が容易に改ざんされることを防止することができる。電力会社は各ユーザの暗号化された利用情報を復号する必要があるため、MDMS320に復号装置を備える必要がある。
【0077】
AMIシステムは電力会社からのエネルギー制御も想定されている。そこで、MDMS320がさらに暗号化装置を備え、暗号化制御情報を各家庭およびビル内へ暗号化送信するように構成してもよい。この場合、通信部330は、暗号化された暗号化制御情報を復号するため復号装置を備える必要がある。
【0078】
なお、AMIシステムは上記構成に限定されるものではない。例えば暗号化装置と復号装置が対になるようAMIシステムを構成すればよく、全構成要素が必須ではない。
【0079】
このように、第3の実施形態では、高機能電力システムで用いられるデータに対して、データの不正利用を防止することができる。
【0080】
以上説明したとおり、第1から第3の実施形態によれば、速度、回路規模、電力および処理性能等に悪影響を及ぼすことなく、サイドチャネル攻撃に対して安全な暗号化装置を実現することができる。
【0081】
次に、第1から第3の実施形態の装置(暗号化装置または復号装置)のハードウェア構成について説明する。
【0082】
第1から第2の実施形態にかかる装置は、CPU(Central Processing Unit)などの制御装置と、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶装置と、ネットワークに接続して通信を行う通信I/Fと、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバスを備えており、通常のコンピュータを利用したハードウェア構成とすることができる。
【0083】
なお、本実施形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【0084】
110 暗号化装置
11、14、19、102、103、106 セレクタ
12 KeyREG
13 鍵スケジュール部(KS)
15 DataREG
16 SubstitutionBytes(SB)
17 ShiftRows(SR)
18 MixColumns(MC)
20 AddRoundKey(AK)
101、104 FE
105 FE−1
120 復号装置
21、24、28、30、34 セレクタ
22 KeyREG
23 鍵スケジュール部(KS)
25 DataREG
26 InverseShiftRows(SR−1)
27 InverseSubstitutionBytes(SB−1)
29 AddRoundKey(AK)
31 FD
32 FD−1
33 InverseMixColumns(MC−1)
【特許請求の範囲】
【請求項1】
暗号鍵を用いて暗号化処理を行い平文から暗号文を計算する暗号化装置であって、
記憶部と、
平文を受け付ける入力部と、
前記平文から第1中間データを計算して前記記憶部に保存する第1暗号部分処理部と、
第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を前記暗号鍵から生成する生成部と、
第i中間データ(iは1以上N未満の整数)と前記拡大鍵とに基づいて第i+1中間データを計算して前記記憶部に保存する第2暗号部分処理部と、
前記第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算して前記記憶部に保存する第3暗号部分処理部と、
前記第N+1中間データに対して前記変換の逆変換を含む演算を行い、暗号文を計算する第4暗号部分処理部と、
前記暗号文を出力する出力部と、
を備えることを特徴とする暗号化装置。
【請求項2】
前記生成部は、前記第N中間データに対する計算に用いる前記拡大鍵に対して前記変換を実行した変換鍵を生成し、
前記第3暗号部分処理部は、前記変換の後に前記変換鍵を用いる計算を行う前記演算を前記第N中間データに対して実行して前記第N+1中間データを計算して前記記憶部に保存すること、
を特徴とする請求項1に記載の暗号化装置。
【請求項3】
前記第3暗号部分処理部は、前記拡大鍵を用いる計算の後に前記変換を行う前記演算を前記第N中間データに対して実行した演算結果と、予め定められた秘密情報と、の排他的論理和である前記第N+1中間データを計算して前記記憶部に保存し、
前記第4暗号部分処理部は、前記第N+1中間データに対して前記逆変換を含む演算を行った演算結果と、前記秘密情報との排他的論理和である前記暗号文を計算すること、
を特徴とする請求項1に記載の暗号化装置。
【請求項4】
前記変換は攪拌行列による変換であり、前記逆変換は前記攪拌行列の逆行列による変換であること、
を特徴とする請求項1に記載の暗号化装置。
【請求項5】
暗号鍵を用いて復号処理を行い暗号文から平文を計算する復号装置であって、
記憶部と、
暗号文を受け付ける入力部と、
前記暗号文から第1中間データを計算して前記記憶部に保存する第1暗号部分処理部と、
第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を前記暗号鍵から生成する生成部と、
第i中間データ(iは1以上N未満の整数)と前記拡大鍵とに基づいて第i+1中間データを計算して前記記憶部に保存する第2暗号部分処理部と、
前記第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算して前記記憶部に保存する第3暗号部分処理部と、
前記第N+1中間データに対して前記変換の逆変換を含む演算を行い、平文を計算する第4暗号部分処理部と、
前記平文を出力する出力部と、
を備えることを特徴とする復号装置。
【請求項6】
前記変換は攪拌行列による変換であり、前記逆変換は前記攪拌行列の逆行列による変換であること、
を特徴とする請求項5に記載の復号装置。
【請求項1】
暗号鍵を用いて暗号化処理を行い平文から暗号文を計算する暗号化装置であって、
記憶部と、
平文を受け付ける入力部と、
前記平文から第1中間データを計算して前記記憶部に保存する第1暗号部分処理部と、
第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を前記暗号鍵から生成する生成部と、
第i中間データ(iは1以上N未満の整数)と前記拡大鍵とに基づいて第i+1中間データを計算して前記記憶部に保存する第2暗号部分処理部と、
前記第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算して前記記憶部に保存する第3暗号部分処理部と、
前記第N+1中間データに対して前記変換の逆変換を含む演算を行い、暗号文を計算する第4暗号部分処理部と、
前記暗号文を出力する出力部と、
を備えることを特徴とする暗号化装置。
【請求項2】
前記生成部は、前記第N中間データに対する計算に用いる前記拡大鍵に対して前記変換を実行した変換鍵を生成し、
前記第3暗号部分処理部は、前記変換の後に前記変換鍵を用いる計算を行う前記演算を前記第N中間データに対して実行して前記第N+1中間データを計算して前記記憶部に保存すること、
を特徴とする請求項1に記載の暗号化装置。
【請求項3】
前記第3暗号部分処理部は、前記拡大鍵を用いる計算の後に前記変換を行う前記演算を前記第N中間データに対して実行した演算結果と、予め定められた秘密情報と、の排他的論理和である前記第N+1中間データを計算して前記記憶部に保存し、
前記第4暗号部分処理部は、前記第N+1中間データに対して前記逆変換を含む演算を行った演算結果と、前記秘密情報との排他的論理和である前記暗号文を計算すること、
を特徴とする請求項1に記載の暗号化装置。
【請求項4】
前記変換は攪拌行列による変換であり、前記逆変換は前記攪拌行列の逆行列による変換であること、
を特徴とする請求項1に記載の暗号化装置。
【請求項5】
暗号鍵を用いて復号処理を行い暗号文から平文を計算する復号装置であって、
記憶部と、
暗号文を受け付ける入力部と、
前記暗号文から第1中間データを計算して前記記憶部に保存する第1暗号部分処理部と、
第1中間データから第N中間データ(Nは2以上の整数)に対する計算に用いる拡大鍵を前記暗号鍵から生成する生成部と、
第i中間データ(iは1以上N未満の整数)と前記拡大鍵とに基づいて第i+1中間データを計算して前記記憶部に保存する第2暗号部分処理部と、
前記第N中間データを攪拌する予め定められた変換を含む演算を行い、第N+1中間データを計算して前記記憶部に保存する第3暗号部分処理部と、
前記第N+1中間データに対して前記変換の逆変換を含む演算を行い、平文を計算する第4暗号部分処理部と、
前記平文を出力する出力部と、
を備えることを特徴とする復号装置。
【請求項6】
前記変換は攪拌行列による変換であり、前記逆変換は前記攪拌行列の逆行列による変換であること、
を特徴とする請求項5に記載の復号装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2012−70048(P2012−70048A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願番号】特願2010−210706(P2010−210706)
【出願日】平成22年9月21日(2010.9.21)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願日】平成22年9月21日(2010.9.21)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]