データ処理装置
【課題】暗号演算への故障攻撃に対して強固な検算対策を講ずることができるデータ処理装置を提供する。
【解決手段】データ処理装置は、暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサ(7)を備える。前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。これにより、前記当初の演算で最初に用いた暗号鍵がデータ処理装置内で管理されているとき、その管理主体は、記憶回路が保有する前記逆算において最終的に用いた暗号鍵をアクセスする事によって、双方が一致するか否かによって、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【解決手段】データ処理装置は、暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサ(7)を備える。前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。これにより、前記当初の演算で最初に用いた暗号鍵がデータ処理装置内で管理されているとき、その管理主体は、記憶回路が保有する前記逆算において最終的に用いた暗号鍵をアクセスする事によって、双方が一致するか否かによって、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号演算への故障攻撃対策としての暗号演算の検算の信頼性を向上させるデータ処理技術に関し、例えばAES(Advanced Encryption Standard)又はDES(Data Encryption Standard)等に準拠した暗号コプロセッサに適用して有効な技術に関する。
【背景技術】
【0002】
ICカード用マイコンは金融、交通、健保等を目的としたカードに実装され、電子マネーや個人情報を格納しているため、情報の漏洩や改ざんなどの攻撃をハードとソフトの組合せで防ぐ必要がある。ICカード用マイコンへの攻撃の一つとして故障解析が挙げられる。特に、局所的にパルスレーザを照射させることによる攻撃が近年健在化されている。例えば、FDTC(Fault Diagnosis and Tolerance in Cryptography)などの学会において、暗号演算に対するレーザ攻撃に関する発表がおこなわれている。ICカード用マイコンなどに搭載している暗号コプロセッサにおいて、誤動作により暗号演算結果が期待値と異なる値をチップ外部に出力すると、その誤暗号文が元で使用している鍵を抽出される可能性がある。これを回避する方法としては、再度同じ計算をする検査方法がある。例えば暗号化演算を複数回行い、複数回の演算結果が一致したときその結果を返すようにする。別の方法として、逆算を行う検算方法がある。例えば、暗号化演算の場合は復号演算を更に行い、復号演算の場合は暗号化演算を更に行い、逆算結果が一致したときその結果を返すようにする。そのような検算を行う方法は時間がかかるものの、パリティなどの冗長回路の導入することなく誤動作の検出が可能になる。尚、故障利用解析に対する対策について記載された文献として下記の非特許文献1がある。
【0003】
【非特許文献1】神永 正博 渡邊 高志「情報セキュリティの理論と技術―暗号理論からICカードの耐タンパー技術まで」森北出版株式会社、2005年10月15日発行、第198−205頁。
【発明の開示】
【発明が解決しようとする課題】
【0004】
暗号演算への故障攻撃の対策として上述のような二度以上の計算の実施か逆算が推奨されるが、本発明者の検討によれば以下の問題点のあることが明らかにされた。
【0005】
〔1〕二度以上の計算をしても、その計算において同じデータを使用する場合、その値を攻撃することで、検算を無効化させることができる。例えば、AESの拡大鍵において、暗号化時に計算したものを検算でも同じ値を使用するシステムにすると、暗号化演算時に故障攻撃を受けた場合にはその影響を検出することができない。例えば図3に例示されるように拡大鍵レジスタへ一回攻撃を受けてその値が変化されると、同じ演算を何回繰り返しても同じ結果しか得られず、故障攻撃に対処することが出来ない。
【0006】
〔2〕レーザなど故障をおこす装置の性能が非常に高い場合(出力エネルギーが高い、集光能力が高い、出力間隔が短いなど)には、拡大鍵を自律的に複数回更新しながら符号化又は復号演算を行うようにしても、複数回計算の各回の演算において同一タイミングで同一計算をしている場合、図4に例示されるように毎回、同じ故障注入を与え、同じ誤った値を生成させることで検算が無効化される可能性がある。
【0007】
〔3〕ブロック暗号であるDESやAES等にはOFB(Output Feedback)モード、CTR(Counter)モード、CFB(Cipher Feedback )モードなど、復号時においても共通鍵暗号そのものの演算は”暗号化”で演算する暗号利用モードがある。この場合、暗号化/復号演算で検算しても共通鍵暗号そのものの演算は”暗号化”であるため、同じ動作をすることになり、図4と同様の脆弱性が存在する。ECB(Electronic Codebook)モードならびにOFBモードでの暗号可/復号演算のデータフローをそれぞれ図5、図6に示す。平文P0〜P2、暗号文C0〜C2、鍵K、初期値IVにおいて、OFBモードの復号演算では共通鍵暗号演算部(図6の太枠部)は復号演算Dではなく、初期値IVを入力、鍵をKとした暗号化演算Eを実施しているため、図5の場合での検算と比較して脆弱である。
【0008】
本発明の目的は、暗号演算への故障攻撃に対して強固な検算対策を講ずることができるデータ処理装置を提供することにある。
【0009】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0010】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0011】
すなわち、逆算を行って検算を行う場合に、逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致するかの検証を追加する。これにより、逆算結果の検証では検出不可能な故障攻撃の検出が可能になる。
【発明の効果】
【0012】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0013】
すなわち、暗号演算への故障攻撃に対して強固な検算対策を講ずることができる。
【発明を実施するための最良の形態】
【0014】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0015】
〔1〕本発明に係るデータ処理装置は、暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサ(7,7A,7B)を備える。前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。これにより、前記当初の演算で最初に用いた暗号鍵がデータ処理装置内で管理されているとき、その管理主体は、記憶回路が保有する前記逆算において最終的に用いた暗号鍵をアクセスする事によって、双方が一致するか否かによって、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0016】
〔2〕本発明に係る別のデータ処理装置は、暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサを備えたデータ処理装置において、前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致すか否かを検証する。プロセッサそれ自体で故障攻撃の検出が可能になる。
【0017】
〔3〕本発明に係る更に別のデータ処理装置は、プロセッサを備え、前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵(K0〜K10)を用いた演算を順次複数回繰り返して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵(K10〜K0)を用いた演算を順次複数回繰り返して復号を行い、暗号化の演算又は復号の演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。ECBモードに代表される暗号化復号において、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0018】
〔4〕項3のデータ処理装置において、前記プロセッサを制御する中央処理装置(3)を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される。プロセッサが記憶回路から暗号鍵をリードして、期待値と比較することによって故障攻撃の検出が可能になる。
【0019】
〔5〕項4のデータ処理装置において、前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である。
【0020】
〔6〕項3のデータ処理装置において、前記プロセッサは平文の暗号化に際して、その暗号化の結果に対し、当該暗号化の最後の暗号化演算で用いた暗号鍵(K10)を初期値とする復号を逆演算として行い、当該復号の最後に用いた暗号鍵(K0)を前記記憶回路に書き込む。
【0021】
〔7〕項3のデータ処理装置において、前記プロセッサは暗号文の復号に際して、前記暗号鍵の初期値を暗号化の場合と同様に繰り返し更新して暗号化の最後に用いる暗号鍵(K10)を生成し、生成した当該暗号鍵を初期値に用いた復号演算を順次複数回繰り返して復号を行い、復号の最後に用いた暗号鍵(K0)を前記記憶回路に書き込む。
【0022】
〔8〕項6又は7のデータ処理装置において、前記プロセッサは前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器(26)を更に有する。プロセッサそれ自体で故障攻撃の検出が可能になる。
【0023】
〔9〕項8のデータ処理装置において、前記比較器による不一致の判別結果は例外処理を要求する信号であり、前記例外処理が要求される中央処理装置を更に有する。
【0024】
〔10〕項9のデータ処理装置において、前記例外処理は前記中央処理装置のリセット例外処理である。
【0025】
〔11〕本発明に係る更に別のデータ処理装置はプロセッサ(7C)を有し、前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位暗号化を複数単位分だけ直列的に実行して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位復号を複数単位分だけ直列的に実行して復号を行う。前記単位暗号化は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた暗号化演算を順次複数回繰り返す暗号化処理(E)とその暗号化処理による処理結果を用いる暗号化論理演算とから成る。前記単位復号は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた前記暗号化演算を順次複数回繰り返す暗号化処理(E)とその暗号化処理による処理結果を用いる復号論理演算とから成る。前記プロセッサは、前記暗号化において前ブロックの単位暗号化の暗号化処理の結果を受ける次ブロックの単位暗号化の暗号化処理(図9のE)に並行して、前記前ブロックの単位暗号化の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理(図9のD)を行い、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。これにより、OFBモードに代表される動作モードによる暗号化において、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0026】
〔12〕項11のデータ処理装置において、前記プロセッサは、前記復号において前ブロックの単位復号の暗号化処理の結果を受ける次ブロックの単位復号の暗号化処理に並行して、前記前ブロックの単位復号の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理を行い、前記記憶回路は、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する。OFBモードに代表される動作モードによる復号において、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0027】
〔13〕項12のデータ処理装置において、前記プロセッサを制御する中央処理装置(3)を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される。
【0028】
〔14〕項13のデータ処理装置において、前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である。
【0029】
〔15〕項12のデータ処理装置において、前記暗号化論理演算及び前記復号論理演算は排他的論理和演算である。
【0030】
〔16〕項12のデータ処理装置において、前記プロセッサは前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器を更に有する。
【0031】
〔17〕項16のデータ処理装置において、前記比較器による不一致の判別結果は例外処理を要求する信号であり、前記例外処理が要求される中央処理装置を更に有する。
【0032】
〔18〕項17のデータ処理装置において、前記例外処理は前記中央処理装置のリセット例外処理である。
【0033】
〔19〕項3又は12のデータ処理装置において、前記プロセッサはAESに準拠する。
【0034】
〔20〕項3又は12のデータ処理装置において、データ処理装置は半導体基板に形成されたICカード用のマイクロコンピュータである。
【0035】
〔21〕項3又は項11のデータ処理装置において、前記プロセッサは、暗号アルゴリズムの暗号化機能のみを用いる暗号利用モードにおいて、復号処理による検算を処理する機能を備える。
【0036】
2.実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【0037】
《ICカード用マイコン》
図2には本発明の一例に係るICカード用マイコンのブロックダイヤグラムが例示される。ICカード用マイコン1は、非接触又は接触インタフェースを行うための通信モジュール2、ICカード用マイコン1の全体的な制御を行う中央処理装置(CPU)3、ICカード用マイコンの割込みやリセット等の例外処理制御及び動作モードの制御等を行うシステムコントロールロジック4、CPU3の動作プログラムやデータテーブル等を保有する不揮発性メモリ5、CPU3のワーク領域等に用いられるRAM6、DEA又はAES等に準拠する共通鍵暗号プロセッサ7、べき乗剰余乗算や楕円暗号演算等を行う公開鍵暗号プロセッサ8、及びICカード用マイコン1の動作基準クロックとされるクロック信号CKを生成するクロック生成回路9等を有する。10は内部バスである。不揮発性メモリ5にはマスクROM、EEPROM、又はフラッシュメモリ等を採用すればよい。このICカード用マイコン1は、例えば単結晶シリコン等の1個の半導体基板にCMOS等の集積回路製造技術によって構成される。
【0038】
図1には共通鍵暗号プロセッサ7の一例としてAESコプロセッサの実装例が示される。AESコプロセッサについては、“NIST (National Institute of Standards and Technology), ADVANCED ENCRYPTION STANDARD (AES), Federal Information Processing Standard Publications (FIPS PUBS) 197, 2001”の第1文献に詳細が記載される。ここでは本発明の特徴点に関連する構成についてその詳細を説明する。
【0039】
共通鍵暗号プロセッサ7(単に暗号プロセッサ7とも記す)7は、AESのサブバイト(SubByte)などを計算するAES演算部20、初期値レジスタ21、平文/暗号文レジスタ22、制御レジスタ23、鍵レジスタ24、比較用鍵レジスタ25、及び比較器26を有する。暗号演算における暗号利用モードについては“NIST, Recommendation for Block Cipher Modes of Operation, NIST Special Publication 800-38A, 2001”の第2文献に記載がある。暗号利用モードは例えば図5に概略が示されたECBモード、図6に概略が示されたOFBモードがある。
【0040】
《ECBモードにおける故障攻撃対策》
図1では暗号モードとして例えば図5のECBモードを用いる。図5の標記から明らかなように、ECBモードにおいてEで示される暗号化演算とDで示される復号演算とはその処理内容が相違される。図7にはECBモードにおいける暗号化と復号の演算手法が例示される。ここでは、図5の一つのEで示される暗号化演算は図7のEncに示されるSe0〜Se10の複数ステップの繰り返しによって実現される。与えられた鍵Kは、ステップSe0〜Se10の各ステップにおいて順次K0〜K10に自律的に更新演算されて用いられる。K0=Kであり、K1〜K10を拡大鍵と称する。Se0〜Se10のサフィックス1〜10をラウンド数と称する。すなわちラウンドiのステップはSeiとなる。ステップSe0〜Se10の各ラウンドで符号化演算が行われ、PがM1に符号化され、M1がM2に符号化され、M2がM3に符号化され、最後にM10がCに符号化される事によって、平文Pが暗号文Cに暗号化される。図5の一つのDで示される復号演算は図7のDecに示されるSd0〜Sd10の複数ステップの繰り返しによって実現される。ステップSd0〜Sd10の各ステップにおいて鍵はK10〜K0に順次自律的に更新演算されて用いられる。復号においてもステップSd0〜Sd10のサフィックスをラウンド数と称する。ステップSd0〜Sd10の各ラウンドで復号演算が行われ、CがM10に復号され、M10がM9に復号され、M9がM8に復号され、最後にM1がPに復号される事によって、暗号文Cが平文Pに復号される。各ラウンドの暗号化、復号演算には例えば第1文献及び第2文献に記載の具体的な処理を適用すればよく、ここではその詳細な説明は省略する。
【0041】
このとき、暗号化に際して、演算された暗号文Cを復号する逆演算を行って平文Pが得られるかを検証する。併せて、上記逆演算において最終的にステップSd10で用いた拡大鍵K0が符号化の最初のステップSe0で用いた鍵Kに一致するかの検証を行う。この検算は以下の意義を有する。例えばパルスレーザ照射などによる故障解析攻撃を受けて暗号化演算途中で拡大鍵の改ざん例えばK3がK3’に変化されたとすると、その影響は後続の拡大鍵に順次伝播し、ステップSe10では、拡大鍵K10’によって暗号文C’が生成される。拡大鍵K10’と暗号文C’を用いた復号逆演算が行われたとき、ステップSd10では平文Pが得られるが、最終的な拡大鍵はK0’となり当初のKと不一致になる。暗号化において鍵が変化されると、それと同じ鍵を用いれば復号逆演算で得られる平文は暗号化対象の平文に一致する。したがって暗号文の逆演算だけでは検出できない異状を拡大鍵(ステップSe0の鍵とステップSd10の鍵)の比較によって検出することが可能になる。これは、拡大鍵の符号化演算と復号演算の夫々が直前の拡大鍵の値を参照して行われるので、符号化演算の最初と、復号逆演算の最後との間で鍵の値が相違することによる。図10は暗号化に際しての暗号化演算のタイミングチャートを例示し、図11は暗号化に際して行われる復号逆演算のタイミングチャートを例示する。
【0042】
復号においては、鍵の初期値Kから、復号の最初に用いる拡大鍵K10を生成する拡大鍵演算だけを先ず予備的に行い、それによって得られた拡大鍵K10を用いて図7のDecで示される復号演算が行われる。この復号演算においても、最終的にステップSd10で用いた拡大鍵K0が最初の鍵Kに一致するかの検証を行うことによって、予備的な拡大鍵演算ステップで故障解析攻撃を受けることにより途中で拡大鍵の改ざんが行われたか否かを検出する。この鍵の照合で復号時に故障解析攻撃を受けて拡大鍵が改ざんされたか否かを検出する事ができるので、復号においては、鍵の復号結果を暗号化する逆演算を行う必要はない。図12は復号に際してのタイミングチャートを例示し、図13は復号における予備的な拡大鍵演算処理で故障解析攻撃による拡大鍵の改ざんを受けたときの動作タイミングチャートを例示する。図13において、誤った平文を出力させ、かつ例外処理信号をアクティブにさせないためには、最後の拡大鍵演算終了段階でK0になるよう再度故障をいれることが必要になる。しかしながら、128ビット全ビットをそろえるのは困難である。再度の故障注入が一番容易そうな2回目のK8’算出時への攻撃も、一回目の算出がラウンド7からの計算に対し、2回目の計算はラウンド9からの算出になり、異なる回路動作に対して故障を注入させてK8に戻すような故障解析攻撃を行うことは実質的に困難である。すなわち、本発明による故障解析攻撃対策は強固であると考えられる。
【0043】
図1に戻ってAESコプロセッサ7の具体的な構成について説明を加える。図1において前記レジスタ21〜24はCPU3によってアクセス可能にされるレジスタであり、鍵レジスタ24には鍵Kが初期設定され、平文/暗号文レジスタ22には暗号化すべき平文又は復号すべき暗号文がCPU3によりセットされ、また、AES演算部20で演算された暗号文又は平文がセットされる。制御レジスタ23には暗号化又は復号の演算開始指示ビット、ECBモード、CBC(Cipher Block Chaining)モードなどの暗号利用モードを選択する暗号利用モードビットなどから構成される。これらのビットはCPU3からバス10介してリード/ライトが出来、CPU命令により各モードの設定や、演算をしているかどうかを確認できる。初期値レジスタ21はCBCモードなどにおいてでてくる初期値などを格納するレジスタである。平文/暗号文レジスタ22や初期値レジスタ21はAESコプロセッサ7による演算終了後に更新される。
【0044】
AES演算部20は、インタフェース回路(I/F)30、中間値レジスタ31、AES演算回路32、制御回路33、拡大鍵計算回路34、及び拡大鍵レジスタ35を有する。制御回路33は制御レジスタの各ビットの情報をもとに、AESコプロセッサ7内部のデータ移動の制御やAES演算回路32の演算種別の選択、現在演算しているラウンド数の管理などの演算制御を行う。また、制御回路33は演算終了時には制御レジスタ23のステータスビットを変化させる制御なども行う。中間値レジスタ31は各ラウンドの途中の暗号/復号結果を保管する。拡大鍵計算器34は各ラウンドの拡大鍵の計算を順次行う。拡大鍵レジスタ35は算出された拡大鍵を順次保管し、次の拡大鍵演算のために拡大鍵を拡大鍵計算器34に渡す。最初の鍵Kは鍵レジスタ24から拡大鍵レジスタ35に転送され、拡大鍵レジスタ35と鍵レジスタ24との間では相互に鍵の入れ替えが行われる。すなわち、例えば、拡大鍵計算器34で計算されて拡大鍵レジスタ35に与えられた拡大鍵が鍵レジスタ24に転送され、その前に鍵レジスタ24が保有する拡大鍵が拡大鍵レジスタ35に転送される。比較用鍵レジスタ25は最初の鍵Kを保管する。インタフェース回路30は暗号利用モードによりデータ入力種類を選択したり、必要に応じてEOR(排他的論理輪)演算を実施する。ASE演算回路32は拡大鍵レジスタ35及び中間値レジスタ31の値を用いて、各ラウンドの暗号化、復号演算を行う。その演算には例えば第1文献及び第2文献に記載の具体的な処理を適用すればよく、ここではその詳細な説明は省略する。比較器26は鍵レジスタ24の値と比較用鍵レジスタ25の値が所用の比較タイミングにおいて一致するかを確認するために用いられる。例えば所定タイミングとは、暗号化処理では図11に例示されるように復号逆演算にて最後のK0の値が確定するタイミング、復号処理では図12に例示されるように予備的演算に後の復号演算の最後のK0の値が確定するタイミングである。不一致の場合は例外処理信号により、リセット状態に遷移するなどの、故障対策がシステムコントロールロジック4に搭載されている。
【0045】
図14には図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートが例示される。E0〜E10の処理は図7のステップSe0〜Se10の処理に対応され、その演算処理アルゴリズムは夫々等しくされる。図15には図14の処理の後の復号逆演算のフローチャートが例示される。ステップSTP1の判定結果が不一致であれば、故障解析攻撃を受けて暗号化演算途中で拡大鍵の改ざんが行われていることが明らかとなり、例外処理に移行される。図17には上記暗号化処理において暗号化対象にされた平文と暗号化された暗号文の復号逆演算によって得られた平文との一致を検算する処理も行うようにしたときのフローチャートが例示される。
【0046】
図16には図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号演算のフローチャートが例示される。D0〜D10の処理は図7のステップSd0〜Sd10の処理に対応され、その演算処理アルゴリズムは夫々等しくされる。図18には上記復号処理において復号された平文の暗号化逆演算を行い、当初の暗号文と暗号化逆演算された暗号文との一致を検算する処理も行うようにしたときのフローチャートが例示される。
【0047】
上記各タイミングチャートにおいて、AES_CSビットは制御レジスタのビットで、AESの暗号化の開始/終了の制御、ならびに暗号化終了時にAESコプロがAES_CSビットを変化させることで暗号化の演算状況を知らせるステータスビットとされる。
【0048】
上記AESコプロセッサによれば、暗号文から復号演算を実施する際、もしくは平文から暗号化計算後の復号逆演算を実施する際、暗号鍵から計算して求めてストアした拡大鍵に対して、故障攻撃されていないか確認するため、拡大鍵の逆算を実施し、その結果と保管されている拡大鍵もしくは暗号鍵と比較し、不一致の場合は例外処理信号により、リセット状態に遷移するなどの故障対策を講ずることができる。
【0049】
図19には図1のAESコプロセッサ7の第1の変形例が示される。図19のAESコプロセッサ7Aは比較用鍵レジスタ25及び比較器26が廃止されたAES演算部20Aを有し、AES演算部20Aはそれに応ずる制御回路33Aを備える。この構成においては、復号化演算の開始時に鍵レジスタ24と拡大鍵レジスタ35に復号化演算で使用する最初の鍵を書き込んで復号化演算を実施する。拡大鍵レジスタ35は拡大鍵計算器34とのやりとりの結果、最終的に生成された暗号鍵が格納される。鍵レジスタ24と拡大鍵レジスタ35との間の拡大鍵の順次入れ替え制御は図1と同じである。この例においては、復号演算で最後に得られる拡大鍵を鍵レジスタ24からCPUがリードしてその正規性を判定する事によって故障攻撃の有無を検証する。そのほかの構成は図1と同じであるからその詳細な説明は省略する。
【0050】
図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号化演算を実施したときのフローチャートが図20に例示され、そのときのタイミングチャートが図22に例示される。
【0051】
図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号化演算を実施したときのフローチャートが図21に例示され、そのときのタイミングチャートが図23に例示される。復号化演算の際、最終ラウンドの鍵K10が生成されていない場合、図16のように生成後演算を実施する。
【0052】
AES演算回路32で復号演算終了後、拡大鍵レジスタ35の値と鍵レジスタ24の値を入れ替え、生成された暗号鍵をCPU3が鍵レジスタ24にアクセスすることでリードできるようにすることにより、演算中に故障注入されていないかを比較器なしで評価することができる。
【0053】
尚、図19において、暗号化演算処理の最後に得られる拡大鍵を鍵レジスタ24からCPUがリードしてその正規性を判定する事によって、暗号化演算処理での故障攻撃の有無を検証も可能である。その前提としてCPU3は鍵KのほかにK10をAESコプロセッサ7Aの外部で管理している。
【0054】
図24には図1のAESコプロセッサ7の第2の変形例が示される。図24のAESコプロセッサ7Bは比較用鍵レジスタ25に代えて拡大鍵保管レジスタ40を有し、拡大鍵保管レジスタ40の値も比較対象とする比較器41を備え、AES演算部20Bはそれに応ずる制御回路33Bを有する。この構成においては、CPU3は鍵Kの生成時、暗号鍵K以外の拡大鍵K1〜K10も生成して拡大鍵保管レジスタ40に予めセットするように配送できるシステムを構築し、セキュア演算中は鍵から生成した拡大鍵を常に比較することで、故障注入を検出できるようにしたものである。そのほかの構成は図1と同じであるからその詳細な説明は省略する。図24の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートが図25に例示され、復号演算のフローチャートが図26に例示される。図25のステップSTO10において拡大鍵保管レジスタのラウンドiの拡大鍵と拡大鍵レジスタの値が一致するか否かが判定される。図26ではステップSTO20において拡大鍵保管レジスタのラウンドiの拡大鍵と拡大鍵レジスタの値が一致するか否かが判定される。ラウンド変数iが0のときは拡大鍵保管レジスタ40の代わりに鍵レジスタ24の値を用いる。
【0055】
尚、図24において、故障対策非考慮時は、比較器41による検出を止め、拡大鍵を拡大鍵保管レジスタ40からロードして用いることも可能である。また、拡大鍵保管レジスタ40に保管する拡大鍵を最終ラウンドのみなどの一部とし、検算は保管した拡大鍵のみとし、拡大鍵計算結果をAESの演算回路の入力にすることも可能である。
【0056】
図19及び図24の変形例に代表されるように、計算で求めた拡大鍵(暗号鍵含む)とストアされた拡大鍵との比較のタイミングは、毎ラウンド、計算の最後のみなど様々な方法が考えられる。最初の暗号化演算の際は必ずしも拡大鍵が計算されているわけではないが、既に拡大鍵が計算されレジスタにストアされている場合では、上記復号化演算と同様の検証が可能である。
【0057】
《OFBモードにおける故障攻撃対策》
OFBモードにおける暗号化復号処理では図6に示されるように、暗号化も復号もEで示される“暗号処理”のアルゴリズムを共通に用いる。図8にはこの点が更に詳細に示される、Encの符号化もDecの復号も、入力IVに対して鍵Kを用いた暗号化処理(E)を共通に行い、暗号化ではその暗号化処理(E)結果Rに対して平文P0との排他的論理和を採って暗号文C0を生成し、復号ではその暗号化処理(E)結果Rに対して暗号文C0との排他的論理和を採って平文P0を生成する。したがって暗号化に際して復号の逆演算を単純に行っても暗号化処理(E)が共通化されるので故障攻撃に対する検出の実効性は低い。暗号化処理(E)は例えば今までで説明したECBモードにおけるEの暗号化処理と同じである。
【0058】
図9にはOFBモードの暗号化における検算処理を概念的に示している。値Iiに対して演算処理(E)を行ってその結果Ijに対して平文Piとの排他的論理輪を採って暗号文Ciを生成し、Ij対して同じく演算処理(E)を行ってその結果Ikに対して平文Pjとの排他的論理輪を採って暗号文Cjを生成するという処理を順次行うとき、Ijに対する暗号化処理(E)に並行して、Ijに逆演算すなわち復号処理(D)を行う。復号処理(D)は今までで説明したECBモードにおけるDの復号処理と同じである。例えばIjに対する暗号化処理(E)において鍵はK0〜K10に自律的に演算処理されたとすると、Ijに逆演算すなわち復号処理(D)では、K10〜K0の鍵を自律的な演算処理によって生成する。したがって、この一連の暗号化処理(E)と逆演算復号処理(D)は図1で説明した検算処理と実質的に同じになり、それと同様に、故障攻撃の有無の検証が可能になる。このように、暗号化処理(E)とその前の暗号化処理(E)の逆演算である復号処理(D)を並列化すると、その処理は例えば図27に例示されるように、処理P1に並行して逆演算処理R1を行い、処理P2に並行して逆演算処理R2を行う。
【0059】
図28には図27に示されるようにOFBモードにおける自動逆算機能を有するAESコプロセッサ7Cが例示される。図1とはAES演算部20Cの構成が相違され、暗号化と逆算を並列的に行うために、2個の中間値レジスタ31a,31bと2個の拡大鍵レジスタ35a,35bを有し、更に比較用レジスタ50、2個の比較器51,52を備え、それらを制御する制御回路33Cが設けられる点が相違される。図28の構成では、平文/暗号文と拡大鍵の両方の逆算結果について検証し、夫々の結果についてAESコプロセッサ7Cの外部に例外処理信号として出力する。EORは排他的論理和回路である。
【0060】
図29及び図30には図28の回路において鍵長が128ビット、暗号利用モードがOFBモードの場合における暗号化演算を実施したときのフローチャートが例示される。復号時のフローチャートは特に図示はしないが、図29、図30において平文P0のかわりに暗号文C0が、暗号文C0のかわりに平文P0が入る。
【0061】
図31には暗号演算の第1回目の動作のタイミングチャートが示され図27の処理P0の暗号化処理(E)に対応される。図32には暗号演算の第2回目の動作のタイミングチャートが例示され図27の処理P1の暗号化処理(E)とR1の逆演算復号処理に対応される。各タイミングチャートは各レジスタ以外に制御レジスタ内にあるコントロール/ステータス信号であるAES_CSビットと、過去暗号演算の実施の有無(すなわち検算の有無)を示す検算ビットの状態が示される。
【0062】
図31に従えば、バス10経由でAES_CSビットに”1”をライトすると、AES演算部20Cが動作を開始する。鍵設定直後の演算につき、逆算の対象となる暗号文、拡大鍵の結果がでていないため、中間値レジスタ2(31b)、比較用レジスタ(50)、ならびに拡大鍵レジスタ2(35b)は不定となっている。暗号演算につき拡大鍵が逐次生成されて拡大鍵レジスタ1(35a)の値が更新されていくとともに、各ラウンドでの演算結果が中間値レジスタ1(31a)に更新されて格納される。最終ラウンド終了後、中間値レジスタ1(31a)に初期値IVの暗号化の結果であるI1が格納される。逆算をするため拡大鍵レジスタ2(35b)に最終ラウンドの拡大鍵K10、比較用レジスタ(50)に初期値IVが書き込まれる。その後、初期値レジスタ(21)にI1を、鍵レジスタ(24)の値K0を拡大鍵レジスタ1(35a)に、I1と平文P0の値からC0を計算し、平文/暗号文レジスタにそれぞれ書き込み、制御レジスタ(23)内の検算ビットにフラグを立てる。
【0063】
図32に従えば、図31の演算終了後、ユーザは平文/暗号文レジスタからC0入手しP1を書き込む。バス1経由でAES_CSビットに”1“をライトすると、AES演算部20Cが動作を開始する。2回目はP1の暗号演算とC0の逆演算である復号演算が平行して処理される。この処理はパイプライン処理とされる。AES演算回路32と拡大鍵計算器34を暗号化処理と逆演算復号処理に共用しているからである。パイプライン処理により、それぞれのラウンドの拡大鍵が逐次生成されて両拡大鍵レジスタ35a,35bの値を更新していくとともに、各ラウンドでの暗号/復号演算結果が両中間値レジスタ31a,31bに格納される。最終ラウンド終了後、中間値レジスタ1(31a)にI1の暗号化の結果であるI2が、中間値レジスタ2(31b)にI1の復号化の結果であるIVが格納される。ここで、最初の暗号演算ならびに逆算中に攻撃されていないか比較用レジスタ(50)と中間値レジスタ2(31b)との値を比較器1(51)で較し、異常があれば例外処理信号1によりAESプロセッサ7Cの外部に知らせる。同様に拡大鍵演算における攻撃がないか、鍵レジスタ(24)と拡大鍵レジスタ2(35b)との値を比較器2(52)で比較し、異常があれば例外処理信号2によりAESプロセッサ7Cの外部に知らせる。例えばシステムコントロールロジック4が例外処理信号1,2を受け取ることによってICカード用マイコンをリセット状態などに遷移させることによって外部との情報を遮断し、或いは割り込みを発生させて本AESの暗号化結果が有効でないことを知らせる、ことなどが考えられる。
【0064】
検証後、次の演算/逆算を実施のため、拡大鍵レジスタに最終ラウンドの拡大鍵K10、比較用レジスタ50に初期値I1が書き込まれる。その後、初期値レジスタ21にI2を、鍵レジスタ24の値K0を拡大鍵レジスタ1(35a)に、I2と平文P1の値からC1を計算し、平文/暗号文レジスタ22にそれぞれ書き込む。
【0065】
以後の暗号演算文C2=EOR(AES(I2), P2)…においても同様の処理が実施される。最後の暗号文Cn=EOR(In, Pn)のについては、暗号対象となる平文はないもののAES演算を追加で1回実施することで逆算による検証が可能であり、また、逆算だけ実行するモードを専用に設けることもできる。
【0066】
上記において、平文/暗号文レジスタ22に平文P0, P1…のかわりに暗号文C0、C1…を書き込むことで、OFBモードでの復号演算においても、暗号化処理(E)とその逆演算復号処理(D)によって同様の検算を行うことができる。
【0067】
図28の例はハードウェアで暗号/復号同時演算まで実施する回路構成としたが、単に初期値レジスタを入力として復号演算を実施できるハードウェアを追加することで、図27のR1,R2などの逆演算をサポートすることも可能である。CFBモード、OFBモード、CRTモードとも初期値をAESコプロセッサの入力としているが、復号演算のときもAESコプロセッサは暗号化処理を行うから、それらの動作モードにおける故障攻撃対策においては、暗号化と復号の双方ともに、入力値の暗号化演算に並行して当該入力値への復号演算を行うことが特徴となる。また、図28において比較回路52を廃止し、CPU3が鍵レジスタ24をリードアクセスして鍵の正規性を判定するようにしてもよい。
【0068】
以上説明した本発明の実施携帯によれば以下の作用効果を得る。
【0069】
(1)逆算を行って検算を行う場合に、逆算結果だけでなく、逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致すかの検証を行う。これにより、例えば図4のような鍵スケジュールで攻撃されていないか確認すること可能である。
【0070】
(2)拡大鍵をオンザフライ(On the fly)で毎回生成していくとき、復号演算時には最終ラウンドの拡大鍵を元に暗号鍵を計算することになるので、生成された暗号鍵と保管された暗号鍵を比較することにすることで、図4のような誤った拡大鍵が使用されていないかが検出可能となる。暗号化時には暗号鍵は生成されないが、検算として逆算を実施することで拡大鍵の検算も取り入れることができる。暗号化時に鍵スケジュールを故障解析攻撃して誤暗号文を生成できたとしても、逆算による検算の際に検出できなくするためには暗号鍵から復号鍵を計算するときと、復号演算時において復号鍵から暗号鍵を計算するときの故障解析攻撃が必要となり、1回の暗号演算で2回の攻撃が必要となる。2回の攻撃タイミングや攻撃場所が違うことによる故障注入の難易度が上がるため、故障解析攻撃に対して検算による検出性能を向上させることができる。
【0071】
(3)暗号利用モードがOFBモードなどの場合においても図6のようにAES演算回路で暗号化と復号演算を単に実施するのではなく、暗号化と復号の双方ともに、入力値の暗号化演算(E)に並行して当該入力値への復号演算(D)を行うから、図4のように2回故障を注入しても同じ誤りをおこすことが困難になり、故障解析攻撃に対して検算による検出性能を向上させることができる。
【0072】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0073】
例えば、本発明に係るデータ処理装置はICカード用マイコンに限定されず、RFIDチップ、汎用マイクロコンピュータ等であってもよい。更に、本発明に係るデータ処理装置は1チップの半導体集積回路に限定されない。また、データ処理装置は公開暗号プロセッサを搭載しなくてもよい。本発明において暗号化復号を行うプロセッサはDESやAESに準拠する処理を行なうコプロセッサに限定されず、適宜変更可能である。
【図面の簡単な説明】
【0074】
【図1】図1は共通鍵暗号プロセッサの一例としてAESコプロセッサの実装例を示すブロックダイヤグラムである。
【図2】図2は本発明の一例に係るICカード用マイコンのブロックダイヤグラムである。
【図3】図3は拡大鍵レジスタへ一回攻撃を受けてその値が変化される場合に同じ演算を何回繰り返しても同じ結果しか得られず故障攻撃に対処することが出来ない場合を例示する説明図である。
【図4】図4は複数回計算の各回の演算において同一タイミングで同一計算をしている場合に毎回同じ故障注入を与えて同じ誤った値を生成させることで故障攻撃に対する検算が無効化される可能性のあることを示す説明図である。
【図5】図5は暗号利用モードとしてECBモードを示す説明図である。
【図6】図6は暗号利用モードとしてOFBモードを示す説明図である。
【図7】図7はECBモードにおいける暗号化と復号の演算手法を例示する説明図である。
【図8】図8はOFBモードにおいて暗号化も復号もEで示される“暗号処理”のアルゴリズムを共通に用いる点を詳細に示した説明図である。
【図9】図9にはOFBモードの暗号化における検算処理を概念的に例示する説明図である。
【図10】図10はECBモードで暗号化に際して行われる暗号化演算のタイミングチャートである。
【図11】図11はECBモードで暗号化に際して行われる復号逆演算のタイミングチャートである。
【図12】図12はECBモードで復号に際しての動作タイミングチャートである。
【図13】図13はECBモードの復号における予備的な拡大鍵演算処理で故障解析攻撃による拡大鍵の改ざんを受けたときの動作タイミングチャートである。
【図14】図14は図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートである。
【図15】図15には図14の処理の後の復号逆演算のフローチャートである。
【図16】図16には図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号演算のフローチャートである。
【図17】図17は暗号化処理において暗号化対象にされた平文と暗号化された暗号文の復号逆演算によって得られた平文との一致を検算する処理も行うようにしたときのフローチャートである。
【図18】図18は復号処理において復号された平文の暗号化逆演算を行い、当初の暗号文と暗号化逆演算された暗号文との一致を検算する処理も行うようにしたときのフローチャートである。
【図19】図19は図1のAESコプロセッサの第1の変形例を示すブロックダイヤグラムである。
【図20】図20は図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号化演算を実施したときのフローチャートである。
【図21】図21は図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号化演算を実施したときのフローチャートである。
【図22】図22は図20に対応されるタイミングチャートである。
【図23】図23は図21に対応されるタイミングチャートである。
【図24】図24は図1のAESコプロセッサ7の第2の変形例を示すブロックダイヤグラムである。
【図25】図25は図24の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートである。
【図26】図26は図25の復号演算のフローチャートである。
【図27】図27は暗号化処理(E)とその前の暗号化処理(E)の逆演算である復号処理(D)を並列化したとき処理P1に並行して逆演算処理R1を行い、処理P2に並行して逆演算処理R2を行う様子を例示する説明図である。
【図28】図28は図27に示されるようにOFBモードにおける自動逆算機能を有するAESコプロセッサ7Cを例示するブロックダイヤグラムである。
【図29】図29は図28の回路において鍵長が128ビット、暗号利用モードがOFBモードの場合における暗号化演算を実施したときのフローチャートである。
【図30】図30は図29に続くフローチャートである。
【図31】図31は暗号演算の第1回目の動作のタイミングチャートであって図27の処理P0の暗号化処理(E)に対応されるタイミングチャートである。
【図32】図32には暗号演算の第2回目の動作のタイミングチャートであって図27の処理P1の暗号化処理(E)とR1の逆演算復号処理に対応されるタイミングチャートである。
【符号の説明】
【0075】
1 ICカード用マイコン
2 通信モジュール
3 中央処理装置(CPU)
4 システムコントロールロジック
5 不揮発性メモリ
6 RAM
7,7A,7B,7C 共通鍵暗号プロセッサ
8 公開鍵暗号プロセッサ
9 クロック生成回路
10 内部バス
20,20A,20B,20C AES演算部
21 初期値レジスタ
22 平文/暗号文レジスタ
23 制御レジスタ
24 鍵レジスタ
25 比較用鍵レジスタ
26,41,51,52 比較器
30 インタフェース回路(I/F)
31,31a,31b 中間値レジスタ
32 AES演算回路
33,33A,33B,33C 制御回路
34 拡大鍵計算回路
35,35a,35b 拡大鍵レジスタ
40 拡大鍵保管レジスタ
50 比較用レジスタ
【技術分野】
【0001】
本発明は、暗号演算への故障攻撃対策としての暗号演算の検算の信頼性を向上させるデータ処理技術に関し、例えばAES(Advanced Encryption Standard)又はDES(Data Encryption Standard)等に準拠した暗号コプロセッサに適用して有効な技術に関する。
【背景技術】
【0002】
ICカード用マイコンは金融、交通、健保等を目的としたカードに実装され、電子マネーや個人情報を格納しているため、情報の漏洩や改ざんなどの攻撃をハードとソフトの組合せで防ぐ必要がある。ICカード用マイコンへの攻撃の一つとして故障解析が挙げられる。特に、局所的にパルスレーザを照射させることによる攻撃が近年健在化されている。例えば、FDTC(Fault Diagnosis and Tolerance in Cryptography)などの学会において、暗号演算に対するレーザ攻撃に関する発表がおこなわれている。ICカード用マイコンなどに搭載している暗号コプロセッサにおいて、誤動作により暗号演算結果が期待値と異なる値をチップ外部に出力すると、その誤暗号文が元で使用している鍵を抽出される可能性がある。これを回避する方法としては、再度同じ計算をする検査方法がある。例えば暗号化演算を複数回行い、複数回の演算結果が一致したときその結果を返すようにする。別の方法として、逆算を行う検算方法がある。例えば、暗号化演算の場合は復号演算を更に行い、復号演算の場合は暗号化演算を更に行い、逆算結果が一致したときその結果を返すようにする。そのような検算を行う方法は時間がかかるものの、パリティなどの冗長回路の導入することなく誤動作の検出が可能になる。尚、故障利用解析に対する対策について記載された文献として下記の非特許文献1がある。
【0003】
【非特許文献1】神永 正博 渡邊 高志「情報セキュリティの理論と技術―暗号理論からICカードの耐タンパー技術まで」森北出版株式会社、2005年10月15日発行、第198−205頁。
【発明の開示】
【発明が解決しようとする課題】
【0004】
暗号演算への故障攻撃の対策として上述のような二度以上の計算の実施か逆算が推奨されるが、本発明者の検討によれば以下の問題点のあることが明らかにされた。
【0005】
〔1〕二度以上の計算をしても、その計算において同じデータを使用する場合、その値を攻撃することで、検算を無効化させることができる。例えば、AESの拡大鍵において、暗号化時に計算したものを検算でも同じ値を使用するシステムにすると、暗号化演算時に故障攻撃を受けた場合にはその影響を検出することができない。例えば図3に例示されるように拡大鍵レジスタへ一回攻撃を受けてその値が変化されると、同じ演算を何回繰り返しても同じ結果しか得られず、故障攻撃に対処することが出来ない。
【0006】
〔2〕レーザなど故障をおこす装置の性能が非常に高い場合(出力エネルギーが高い、集光能力が高い、出力間隔が短いなど)には、拡大鍵を自律的に複数回更新しながら符号化又は復号演算を行うようにしても、複数回計算の各回の演算において同一タイミングで同一計算をしている場合、図4に例示されるように毎回、同じ故障注入を与え、同じ誤った値を生成させることで検算が無効化される可能性がある。
【0007】
〔3〕ブロック暗号であるDESやAES等にはOFB(Output Feedback)モード、CTR(Counter)モード、CFB(Cipher Feedback )モードなど、復号時においても共通鍵暗号そのものの演算は”暗号化”で演算する暗号利用モードがある。この場合、暗号化/復号演算で検算しても共通鍵暗号そのものの演算は”暗号化”であるため、同じ動作をすることになり、図4と同様の脆弱性が存在する。ECB(Electronic Codebook)モードならびにOFBモードでの暗号可/復号演算のデータフローをそれぞれ図5、図6に示す。平文P0〜P2、暗号文C0〜C2、鍵K、初期値IVにおいて、OFBモードの復号演算では共通鍵暗号演算部(図6の太枠部)は復号演算Dではなく、初期値IVを入力、鍵をKとした暗号化演算Eを実施しているため、図5の場合での検算と比較して脆弱である。
【0008】
本発明の目的は、暗号演算への故障攻撃に対して強固な検算対策を講ずることができるデータ処理装置を提供することにある。
【0009】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0010】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0011】
すなわち、逆算を行って検算を行う場合に、逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致するかの検証を追加する。これにより、逆算結果の検証では検出不可能な故障攻撃の検出が可能になる。
【発明の効果】
【0012】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0013】
すなわち、暗号演算への故障攻撃に対して強固な検算対策を講ずることができる。
【発明を実施するための最良の形態】
【0014】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0015】
〔1〕本発明に係るデータ処理装置は、暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサ(7,7A,7B)を備える。前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。これにより、前記当初の演算で最初に用いた暗号鍵がデータ処理装置内で管理されているとき、その管理主体は、記憶回路が保有する前記逆算において最終的に用いた暗号鍵をアクセスする事によって、双方が一致するか否かによって、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0016】
〔2〕本発明に係る別のデータ処理装置は、暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサを備えたデータ処理装置において、前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致すか否かを検証する。プロセッサそれ自体で故障攻撃の検出が可能になる。
【0017】
〔3〕本発明に係る更に別のデータ処理装置は、プロセッサを備え、前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵(K0〜K10)を用いた演算を順次複数回繰り返して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵(K10〜K0)を用いた演算を順次複数回繰り返して復号を行い、暗号化の演算又は復号の演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。ECBモードに代表される暗号化復号において、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0018】
〔4〕項3のデータ処理装置において、前記プロセッサを制御する中央処理装置(3)を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される。プロセッサが記憶回路から暗号鍵をリードして、期待値と比較することによって故障攻撃の検出が可能になる。
【0019】
〔5〕項4のデータ処理装置において、前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である。
【0020】
〔6〕項3のデータ処理装置において、前記プロセッサは平文の暗号化に際して、その暗号化の結果に対し、当該暗号化の最後の暗号化演算で用いた暗号鍵(K10)を初期値とする復号を逆演算として行い、当該復号の最後に用いた暗号鍵(K0)を前記記憶回路に書き込む。
【0021】
〔7〕項3のデータ処理装置において、前記プロセッサは暗号文の復号に際して、前記暗号鍵の初期値を暗号化の場合と同様に繰り返し更新して暗号化の最後に用いる暗号鍵(K10)を生成し、生成した当該暗号鍵を初期値に用いた復号演算を順次複数回繰り返して復号を行い、復号の最後に用いた暗号鍵(K0)を前記記憶回路に書き込む。
【0022】
〔8〕項6又は7のデータ処理装置において、前記プロセッサは前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器(26)を更に有する。プロセッサそれ自体で故障攻撃の検出が可能になる。
【0023】
〔9〕項8のデータ処理装置において、前記比較器による不一致の判別結果は例外処理を要求する信号であり、前記例外処理が要求される中央処理装置を更に有する。
【0024】
〔10〕項9のデータ処理装置において、前記例外処理は前記中央処理装置のリセット例外処理である。
【0025】
〔11〕本発明に係る更に別のデータ処理装置はプロセッサ(7C)を有し、前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位暗号化を複数単位分だけ直列的に実行して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位復号を複数単位分だけ直列的に実行して復号を行う。前記単位暗号化は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた暗号化演算を順次複数回繰り返す暗号化処理(E)とその暗号化処理による処理結果を用いる暗号化論理演算とから成る。前記単位復号は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた前記暗号化演算を順次複数回繰り返す暗号化処理(E)とその暗号化処理による処理結果を用いる復号論理演算とから成る。前記プロセッサは、前記暗号化において前ブロックの単位暗号化の暗号化処理の結果を受ける次ブロックの単位暗号化の暗号化処理(図9のE)に並行して、前記前ブロックの単位暗号化の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理(図9のD)を行い、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路(24)を有する。これにより、OFBモードに代表される動作モードによる暗号化において、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0026】
〔12〕項11のデータ処理装置において、前記プロセッサは、前記復号において前ブロックの単位復号の暗号化処理の結果を受ける次ブロックの単位復号の暗号化処理に並行して、前記前ブロックの単位復号の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理を行い、前記記憶回路は、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する。OFBモードに代表される動作モードによる復号において、単なる逆算では検出不可能な故障攻撃の検出が可能になる。
【0027】
〔13〕項12のデータ処理装置において、前記プロセッサを制御する中央処理装置(3)を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される。
【0028】
〔14〕項13のデータ処理装置において、前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である。
【0029】
〔15〕項12のデータ処理装置において、前記暗号化論理演算及び前記復号論理演算は排他的論理和演算である。
【0030】
〔16〕項12のデータ処理装置において、前記プロセッサは前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器を更に有する。
【0031】
〔17〕項16のデータ処理装置において、前記比較器による不一致の判別結果は例外処理を要求する信号であり、前記例外処理が要求される中央処理装置を更に有する。
【0032】
〔18〕項17のデータ処理装置において、前記例外処理は前記中央処理装置のリセット例外処理である。
【0033】
〔19〕項3又は12のデータ処理装置において、前記プロセッサはAESに準拠する。
【0034】
〔20〕項3又は12のデータ処理装置において、データ処理装置は半導体基板に形成されたICカード用のマイクロコンピュータである。
【0035】
〔21〕項3又は項11のデータ処理装置において、前記プロセッサは、暗号アルゴリズムの暗号化機能のみを用いる暗号利用モードにおいて、復号処理による検算を処理する機能を備える。
【0036】
2.実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【0037】
《ICカード用マイコン》
図2には本発明の一例に係るICカード用マイコンのブロックダイヤグラムが例示される。ICカード用マイコン1は、非接触又は接触インタフェースを行うための通信モジュール2、ICカード用マイコン1の全体的な制御を行う中央処理装置(CPU)3、ICカード用マイコンの割込みやリセット等の例外処理制御及び動作モードの制御等を行うシステムコントロールロジック4、CPU3の動作プログラムやデータテーブル等を保有する不揮発性メモリ5、CPU3のワーク領域等に用いられるRAM6、DEA又はAES等に準拠する共通鍵暗号プロセッサ7、べき乗剰余乗算や楕円暗号演算等を行う公開鍵暗号プロセッサ8、及びICカード用マイコン1の動作基準クロックとされるクロック信号CKを生成するクロック生成回路9等を有する。10は内部バスである。不揮発性メモリ5にはマスクROM、EEPROM、又はフラッシュメモリ等を採用すればよい。このICカード用マイコン1は、例えば単結晶シリコン等の1個の半導体基板にCMOS等の集積回路製造技術によって構成される。
【0038】
図1には共通鍵暗号プロセッサ7の一例としてAESコプロセッサの実装例が示される。AESコプロセッサについては、“NIST (National Institute of Standards and Technology), ADVANCED ENCRYPTION STANDARD (AES), Federal Information Processing Standard Publications (FIPS PUBS) 197, 2001”の第1文献に詳細が記載される。ここでは本発明の特徴点に関連する構成についてその詳細を説明する。
【0039】
共通鍵暗号プロセッサ7(単に暗号プロセッサ7とも記す)7は、AESのサブバイト(SubByte)などを計算するAES演算部20、初期値レジスタ21、平文/暗号文レジスタ22、制御レジスタ23、鍵レジスタ24、比較用鍵レジスタ25、及び比較器26を有する。暗号演算における暗号利用モードについては“NIST, Recommendation for Block Cipher Modes of Operation, NIST Special Publication 800-38A, 2001”の第2文献に記載がある。暗号利用モードは例えば図5に概略が示されたECBモード、図6に概略が示されたOFBモードがある。
【0040】
《ECBモードにおける故障攻撃対策》
図1では暗号モードとして例えば図5のECBモードを用いる。図5の標記から明らかなように、ECBモードにおいてEで示される暗号化演算とDで示される復号演算とはその処理内容が相違される。図7にはECBモードにおいける暗号化と復号の演算手法が例示される。ここでは、図5の一つのEで示される暗号化演算は図7のEncに示されるSe0〜Se10の複数ステップの繰り返しによって実現される。与えられた鍵Kは、ステップSe0〜Se10の各ステップにおいて順次K0〜K10に自律的に更新演算されて用いられる。K0=Kであり、K1〜K10を拡大鍵と称する。Se0〜Se10のサフィックス1〜10をラウンド数と称する。すなわちラウンドiのステップはSeiとなる。ステップSe0〜Se10の各ラウンドで符号化演算が行われ、PがM1に符号化され、M1がM2に符号化され、M2がM3に符号化され、最後にM10がCに符号化される事によって、平文Pが暗号文Cに暗号化される。図5の一つのDで示される復号演算は図7のDecに示されるSd0〜Sd10の複数ステップの繰り返しによって実現される。ステップSd0〜Sd10の各ステップにおいて鍵はK10〜K0に順次自律的に更新演算されて用いられる。復号においてもステップSd0〜Sd10のサフィックスをラウンド数と称する。ステップSd0〜Sd10の各ラウンドで復号演算が行われ、CがM10に復号され、M10がM9に復号され、M9がM8に復号され、最後にM1がPに復号される事によって、暗号文Cが平文Pに復号される。各ラウンドの暗号化、復号演算には例えば第1文献及び第2文献に記載の具体的な処理を適用すればよく、ここではその詳細な説明は省略する。
【0041】
このとき、暗号化に際して、演算された暗号文Cを復号する逆演算を行って平文Pが得られるかを検証する。併せて、上記逆演算において最終的にステップSd10で用いた拡大鍵K0が符号化の最初のステップSe0で用いた鍵Kに一致するかの検証を行う。この検算は以下の意義を有する。例えばパルスレーザ照射などによる故障解析攻撃を受けて暗号化演算途中で拡大鍵の改ざん例えばK3がK3’に変化されたとすると、その影響は後続の拡大鍵に順次伝播し、ステップSe10では、拡大鍵K10’によって暗号文C’が生成される。拡大鍵K10’と暗号文C’を用いた復号逆演算が行われたとき、ステップSd10では平文Pが得られるが、最終的な拡大鍵はK0’となり当初のKと不一致になる。暗号化において鍵が変化されると、それと同じ鍵を用いれば復号逆演算で得られる平文は暗号化対象の平文に一致する。したがって暗号文の逆演算だけでは検出できない異状を拡大鍵(ステップSe0の鍵とステップSd10の鍵)の比較によって検出することが可能になる。これは、拡大鍵の符号化演算と復号演算の夫々が直前の拡大鍵の値を参照して行われるので、符号化演算の最初と、復号逆演算の最後との間で鍵の値が相違することによる。図10は暗号化に際しての暗号化演算のタイミングチャートを例示し、図11は暗号化に際して行われる復号逆演算のタイミングチャートを例示する。
【0042】
復号においては、鍵の初期値Kから、復号の最初に用いる拡大鍵K10を生成する拡大鍵演算だけを先ず予備的に行い、それによって得られた拡大鍵K10を用いて図7のDecで示される復号演算が行われる。この復号演算においても、最終的にステップSd10で用いた拡大鍵K0が最初の鍵Kに一致するかの検証を行うことによって、予備的な拡大鍵演算ステップで故障解析攻撃を受けることにより途中で拡大鍵の改ざんが行われたか否かを検出する。この鍵の照合で復号時に故障解析攻撃を受けて拡大鍵が改ざんされたか否かを検出する事ができるので、復号においては、鍵の復号結果を暗号化する逆演算を行う必要はない。図12は復号に際してのタイミングチャートを例示し、図13は復号における予備的な拡大鍵演算処理で故障解析攻撃による拡大鍵の改ざんを受けたときの動作タイミングチャートを例示する。図13において、誤った平文を出力させ、かつ例外処理信号をアクティブにさせないためには、最後の拡大鍵演算終了段階でK0になるよう再度故障をいれることが必要になる。しかしながら、128ビット全ビットをそろえるのは困難である。再度の故障注入が一番容易そうな2回目のK8’算出時への攻撃も、一回目の算出がラウンド7からの計算に対し、2回目の計算はラウンド9からの算出になり、異なる回路動作に対して故障を注入させてK8に戻すような故障解析攻撃を行うことは実質的に困難である。すなわち、本発明による故障解析攻撃対策は強固であると考えられる。
【0043】
図1に戻ってAESコプロセッサ7の具体的な構成について説明を加える。図1において前記レジスタ21〜24はCPU3によってアクセス可能にされるレジスタであり、鍵レジスタ24には鍵Kが初期設定され、平文/暗号文レジスタ22には暗号化すべき平文又は復号すべき暗号文がCPU3によりセットされ、また、AES演算部20で演算された暗号文又は平文がセットされる。制御レジスタ23には暗号化又は復号の演算開始指示ビット、ECBモード、CBC(Cipher Block Chaining)モードなどの暗号利用モードを選択する暗号利用モードビットなどから構成される。これらのビットはCPU3からバス10介してリード/ライトが出来、CPU命令により各モードの設定や、演算をしているかどうかを確認できる。初期値レジスタ21はCBCモードなどにおいてでてくる初期値などを格納するレジスタである。平文/暗号文レジスタ22や初期値レジスタ21はAESコプロセッサ7による演算終了後に更新される。
【0044】
AES演算部20は、インタフェース回路(I/F)30、中間値レジスタ31、AES演算回路32、制御回路33、拡大鍵計算回路34、及び拡大鍵レジスタ35を有する。制御回路33は制御レジスタの各ビットの情報をもとに、AESコプロセッサ7内部のデータ移動の制御やAES演算回路32の演算種別の選択、現在演算しているラウンド数の管理などの演算制御を行う。また、制御回路33は演算終了時には制御レジスタ23のステータスビットを変化させる制御なども行う。中間値レジスタ31は各ラウンドの途中の暗号/復号結果を保管する。拡大鍵計算器34は各ラウンドの拡大鍵の計算を順次行う。拡大鍵レジスタ35は算出された拡大鍵を順次保管し、次の拡大鍵演算のために拡大鍵を拡大鍵計算器34に渡す。最初の鍵Kは鍵レジスタ24から拡大鍵レジスタ35に転送され、拡大鍵レジスタ35と鍵レジスタ24との間では相互に鍵の入れ替えが行われる。すなわち、例えば、拡大鍵計算器34で計算されて拡大鍵レジスタ35に与えられた拡大鍵が鍵レジスタ24に転送され、その前に鍵レジスタ24が保有する拡大鍵が拡大鍵レジスタ35に転送される。比較用鍵レジスタ25は最初の鍵Kを保管する。インタフェース回路30は暗号利用モードによりデータ入力種類を選択したり、必要に応じてEOR(排他的論理輪)演算を実施する。ASE演算回路32は拡大鍵レジスタ35及び中間値レジスタ31の値を用いて、各ラウンドの暗号化、復号演算を行う。その演算には例えば第1文献及び第2文献に記載の具体的な処理を適用すればよく、ここではその詳細な説明は省略する。比較器26は鍵レジスタ24の値と比較用鍵レジスタ25の値が所用の比較タイミングにおいて一致するかを確認するために用いられる。例えば所定タイミングとは、暗号化処理では図11に例示されるように復号逆演算にて最後のK0の値が確定するタイミング、復号処理では図12に例示されるように予備的演算に後の復号演算の最後のK0の値が確定するタイミングである。不一致の場合は例外処理信号により、リセット状態に遷移するなどの、故障対策がシステムコントロールロジック4に搭載されている。
【0045】
図14には図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートが例示される。E0〜E10の処理は図7のステップSe0〜Se10の処理に対応され、その演算処理アルゴリズムは夫々等しくされる。図15には図14の処理の後の復号逆演算のフローチャートが例示される。ステップSTP1の判定結果が不一致であれば、故障解析攻撃を受けて暗号化演算途中で拡大鍵の改ざんが行われていることが明らかとなり、例外処理に移行される。図17には上記暗号化処理において暗号化対象にされた平文と暗号化された暗号文の復号逆演算によって得られた平文との一致を検算する処理も行うようにしたときのフローチャートが例示される。
【0046】
図16には図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号演算のフローチャートが例示される。D0〜D10の処理は図7のステップSd0〜Sd10の処理に対応され、その演算処理アルゴリズムは夫々等しくされる。図18には上記復号処理において復号された平文の暗号化逆演算を行い、当初の暗号文と暗号化逆演算された暗号文との一致を検算する処理も行うようにしたときのフローチャートが例示される。
【0047】
上記各タイミングチャートにおいて、AES_CSビットは制御レジスタのビットで、AESの暗号化の開始/終了の制御、ならびに暗号化終了時にAESコプロがAES_CSビットを変化させることで暗号化の演算状況を知らせるステータスビットとされる。
【0048】
上記AESコプロセッサによれば、暗号文から復号演算を実施する際、もしくは平文から暗号化計算後の復号逆演算を実施する際、暗号鍵から計算して求めてストアした拡大鍵に対して、故障攻撃されていないか確認するため、拡大鍵の逆算を実施し、その結果と保管されている拡大鍵もしくは暗号鍵と比較し、不一致の場合は例外処理信号により、リセット状態に遷移するなどの故障対策を講ずることができる。
【0049】
図19には図1のAESコプロセッサ7の第1の変形例が示される。図19のAESコプロセッサ7Aは比較用鍵レジスタ25及び比較器26が廃止されたAES演算部20Aを有し、AES演算部20Aはそれに応ずる制御回路33Aを備える。この構成においては、復号化演算の開始時に鍵レジスタ24と拡大鍵レジスタ35に復号化演算で使用する最初の鍵を書き込んで復号化演算を実施する。拡大鍵レジスタ35は拡大鍵計算器34とのやりとりの結果、最終的に生成された暗号鍵が格納される。鍵レジスタ24と拡大鍵レジスタ35との間の拡大鍵の順次入れ替え制御は図1と同じである。この例においては、復号演算で最後に得られる拡大鍵を鍵レジスタ24からCPUがリードしてその正規性を判定する事によって故障攻撃の有無を検証する。そのほかの構成は図1と同じであるからその詳細な説明は省略する。
【0050】
図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号化演算を実施したときのフローチャートが図20に例示され、そのときのタイミングチャートが図22に例示される。
【0051】
図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号化演算を実施したときのフローチャートが図21に例示され、そのときのタイミングチャートが図23に例示される。復号化演算の際、最終ラウンドの鍵K10が生成されていない場合、図16のように生成後演算を実施する。
【0052】
AES演算回路32で復号演算終了後、拡大鍵レジスタ35の値と鍵レジスタ24の値を入れ替え、生成された暗号鍵をCPU3が鍵レジスタ24にアクセスすることでリードできるようにすることにより、演算中に故障注入されていないかを比較器なしで評価することができる。
【0053】
尚、図19において、暗号化演算処理の最後に得られる拡大鍵を鍵レジスタ24からCPUがリードしてその正規性を判定する事によって、暗号化演算処理での故障攻撃の有無を検証も可能である。その前提としてCPU3は鍵KのほかにK10をAESコプロセッサ7Aの外部で管理している。
【0054】
図24には図1のAESコプロセッサ7の第2の変形例が示される。図24のAESコプロセッサ7Bは比較用鍵レジスタ25に代えて拡大鍵保管レジスタ40を有し、拡大鍵保管レジスタ40の値も比較対象とする比較器41を備え、AES演算部20Bはそれに応ずる制御回路33Bを有する。この構成においては、CPU3は鍵Kの生成時、暗号鍵K以外の拡大鍵K1〜K10も生成して拡大鍵保管レジスタ40に予めセットするように配送できるシステムを構築し、セキュア演算中は鍵から生成した拡大鍵を常に比較することで、故障注入を検出できるようにしたものである。そのほかの構成は図1と同じであるからその詳細な説明は省略する。図24の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートが図25に例示され、復号演算のフローチャートが図26に例示される。図25のステップSTO10において拡大鍵保管レジスタのラウンドiの拡大鍵と拡大鍵レジスタの値が一致するか否かが判定される。図26ではステップSTO20において拡大鍵保管レジスタのラウンドiの拡大鍵と拡大鍵レジスタの値が一致するか否かが判定される。ラウンド変数iが0のときは拡大鍵保管レジスタ40の代わりに鍵レジスタ24の値を用いる。
【0055】
尚、図24において、故障対策非考慮時は、比較器41による検出を止め、拡大鍵を拡大鍵保管レジスタ40からロードして用いることも可能である。また、拡大鍵保管レジスタ40に保管する拡大鍵を最終ラウンドのみなどの一部とし、検算は保管した拡大鍵のみとし、拡大鍵計算結果をAESの演算回路の入力にすることも可能である。
【0056】
図19及び図24の変形例に代表されるように、計算で求めた拡大鍵(暗号鍵含む)とストアされた拡大鍵との比較のタイミングは、毎ラウンド、計算の最後のみなど様々な方法が考えられる。最初の暗号化演算の際は必ずしも拡大鍵が計算されているわけではないが、既に拡大鍵が計算されレジスタにストアされている場合では、上記復号化演算と同様の検証が可能である。
【0057】
《OFBモードにおける故障攻撃対策》
OFBモードにおける暗号化復号処理では図6に示されるように、暗号化も復号もEで示される“暗号処理”のアルゴリズムを共通に用いる。図8にはこの点が更に詳細に示される、Encの符号化もDecの復号も、入力IVに対して鍵Kを用いた暗号化処理(E)を共通に行い、暗号化ではその暗号化処理(E)結果Rに対して平文P0との排他的論理和を採って暗号文C0を生成し、復号ではその暗号化処理(E)結果Rに対して暗号文C0との排他的論理和を採って平文P0を生成する。したがって暗号化に際して復号の逆演算を単純に行っても暗号化処理(E)が共通化されるので故障攻撃に対する検出の実効性は低い。暗号化処理(E)は例えば今までで説明したECBモードにおけるEの暗号化処理と同じである。
【0058】
図9にはOFBモードの暗号化における検算処理を概念的に示している。値Iiに対して演算処理(E)を行ってその結果Ijに対して平文Piとの排他的論理輪を採って暗号文Ciを生成し、Ij対して同じく演算処理(E)を行ってその結果Ikに対して平文Pjとの排他的論理輪を採って暗号文Cjを生成するという処理を順次行うとき、Ijに対する暗号化処理(E)に並行して、Ijに逆演算すなわち復号処理(D)を行う。復号処理(D)は今までで説明したECBモードにおけるDの復号処理と同じである。例えばIjに対する暗号化処理(E)において鍵はK0〜K10に自律的に演算処理されたとすると、Ijに逆演算すなわち復号処理(D)では、K10〜K0の鍵を自律的な演算処理によって生成する。したがって、この一連の暗号化処理(E)と逆演算復号処理(D)は図1で説明した検算処理と実質的に同じになり、それと同様に、故障攻撃の有無の検証が可能になる。このように、暗号化処理(E)とその前の暗号化処理(E)の逆演算である復号処理(D)を並列化すると、その処理は例えば図27に例示されるように、処理P1に並行して逆演算処理R1を行い、処理P2に並行して逆演算処理R2を行う。
【0059】
図28には図27に示されるようにOFBモードにおける自動逆算機能を有するAESコプロセッサ7Cが例示される。図1とはAES演算部20Cの構成が相違され、暗号化と逆算を並列的に行うために、2個の中間値レジスタ31a,31bと2個の拡大鍵レジスタ35a,35bを有し、更に比較用レジスタ50、2個の比較器51,52を備え、それらを制御する制御回路33Cが設けられる点が相違される。図28の構成では、平文/暗号文と拡大鍵の両方の逆算結果について検証し、夫々の結果についてAESコプロセッサ7Cの外部に例外処理信号として出力する。EORは排他的論理和回路である。
【0060】
図29及び図30には図28の回路において鍵長が128ビット、暗号利用モードがOFBモードの場合における暗号化演算を実施したときのフローチャートが例示される。復号時のフローチャートは特に図示はしないが、図29、図30において平文P0のかわりに暗号文C0が、暗号文C0のかわりに平文P0が入る。
【0061】
図31には暗号演算の第1回目の動作のタイミングチャートが示され図27の処理P0の暗号化処理(E)に対応される。図32には暗号演算の第2回目の動作のタイミングチャートが例示され図27の処理P1の暗号化処理(E)とR1の逆演算復号処理に対応される。各タイミングチャートは各レジスタ以外に制御レジスタ内にあるコントロール/ステータス信号であるAES_CSビットと、過去暗号演算の実施の有無(すなわち検算の有無)を示す検算ビットの状態が示される。
【0062】
図31に従えば、バス10経由でAES_CSビットに”1”をライトすると、AES演算部20Cが動作を開始する。鍵設定直後の演算につき、逆算の対象となる暗号文、拡大鍵の結果がでていないため、中間値レジスタ2(31b)、比較用レジスタ(50)、ならびに拡大鍵レジスタ2(35b)は不定となっている。暗号演算につき拡大鍵が逐次生成されて拡大鍵レジスタ1(35a)の値が更新されていくとともに、各ラウンドでの演算結果が中間値レジスタ1(31a)に更新されて格納される。最終ラウンド終了後、中間値レジスタ1(31a)に初期値IVの暗号化の結果であるI1が格納される。逆算をするため拡大鍵レジスタ2(35b)に最終ラウンドの拡大鍵K10、比較用レジスタ(50)に初期値IVが書き込まれる。その後、初期値レジスタ(21)にI1を、鍵レジスタ(24)の値K0を拡大鍵レジスタ1(35a)に、I1と平文P0の値からC0を計算し、平文/暗号文レジスタにそれぞれ書き込み、制御レジスタ(23)内の検算ビットにフラグを立てる。
【0063】
図32に従えば、図31の演算終了後、ユーザは平文/暗号文レジスタからC0入手しP1を書き込む。バス1経由でAES_CSビットに”1“をライトすると、AES演算部20Cが動作を開始する。2回目はP1の暗号演算とC0の逆演算である復号演算が平行して処理される。この処理はパイプライン処理とされる。AES演算回路32と拡大鍵計算器34を暗号化処理と逆演算復号処理に共用しているからである。パイプライン処理により、それぞれのラウンドの拡大鍵が逐次生成されて両拡大鍵レジスタ35a,35bの値を更新していくとともに、各ラウンドでの暗号/復号演算結果が両中間値レジスタ31a,31bに格納される。最終ラウンド終了後、中間値レジスタ1(31a)にI1の暗号化の結果であるI2が、中間値レジスタ2(31b)にI1の復号化の結果であるIVが格納される。ここで、最初の暗号演算ならびに逆算中に攻撃されていないか比較用レジスタ(50)と中間値レジスタ2(31b)との値を比較器1(51)で較し、異常があれば例外処理信号1によりAESプロセッサ7Cの外部に知らせる。同様に拡大鍵演算における攻撃がないか、鍵レジスタ(24)と拡大鍵レジスタ2(35b)との値を比較器2(52)で比較し、異常があれば例外処理信号2によりAESプロセッサ7Cの外部に知らせる。例えばシステムコントロールロジック4が例外処理信号1,2を受け取ることによってICカード用マイコンをリセット状態などに遷移させることによって外部との情報を遮断し、或いは割り込みを発生させて本AESの暗号化結果が有効でないことを知らせる、ことなどが考えられる。
【0064】
検証後、次の演算/逆算を実施のため、拡大鍵レジスタに最終ラウンドの拡大鍵K10、比較用レジスタ50に初期値I1が書き込まれる。その後、初期値レジスタ21にI2を、鍵レジスタ24の値K0を拡大鍵レジスタ1(35a)に、I2と平文P1の値からC1を計算し、平文/暗号文レジスタ22にそれぞれ書き込む。
【0065】
以後の暗号演算文C2=EOR(AES(I2), P2)…においても同様の処理が実施される。最後の暗号文Cn=EOR(In, Pn)のについては、暗号対象となる平文はないもののAES演算を追加で1回実施することで逆算による検証が可能であり、また、逆算だけ実行するモードを専用に設けることもできる。
【0066】
上記において、平文/暗号文レジスタ22に平文P0, P1…のかわりに暗号文C0、C1…を書き込むことで、OFBモードでの復号演算においても、暗号化処理(E)とその逆演算復号処理(D)によって同様の検算を行うことができる。
【0067】
図28の例はハードウェアで暗号/復号同時演算まで実施する回路構成としたが、単に初期値レジスタを入力として復号演算を実施できるハードウェアを追加することで、図27のR1,R2などの逆演算をサポートすることも可能である。CFBモード、OFBモード、CRTモードとも初期値をAESコプロセッサの入力としているが、復号演算のときもAESコプロセッサは暗号化処理を行うから、それらの動作モードにおける故障攻撃対策においては、暗号化と復号の双方ともに、入力値の暗号化演算に並行して当該入力値への復号演算を行うことが特徴となる。また、図28において比較回路52を廃止し、CPU3が鍵レジスタ24をリードアクセスして鍵の正規性を判定するようにしてもよい。
【0068】
以上説明した本発明の実施携帯によれば以下の作用効果を得る。
【0069】
(1)逆算を行って検算を行う場合に、逆算結果だけでなく、逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致すかの検証を行う。これにより、例えば図4のような鍵スケジュールで攻撃されていないか確認すること可能である。
【0070】
(2)拡大鍵をオンザフライ(On the fly)で毎回生成していくとき、復号演算時には最終ラウンドの拡大鍵を元に暗号鍵を計算することになるので、生成された暗号鍵と保管された暗号鍵を比較することにすることで、図4のような誤った拡大鍵が使用されていないかが検出可能となる。暗号化時には暗号鍵は生成されないが、検算として逆算を実施することで拡大鍵の検算も取り入れることができる。暗号化時に鍵スケジュールを故障解析攻撃して誤暗号文を生成できたとしても、逆算による検算の際に検出できなくするためには暗号鍵から復号鍵を計算するときと、復号演算時において復号鍵から暗号鍵を計算するときの故障解析攻撃が必要となり、1回の暗号演算で2回の攻撃が必要となる。2回の攻撃タイミングや攻撃場所が違うことによる故障注入の難易度が上がるため、故障解析攻撃に対して検算による検出性能を向上させることができる。
【0071】
(3)暗号利用モードがOFBモードなどの場合においても図6のようにAES演算回路で暗号化と復号演算を単に実施するのではなく、暗号化と復号の双方ともに、入力値の暗号化演算(E)に並行して当該入力値への復号演算(D)を行うから、図4のように2回故障を注入しても同じ誤りをおこすことが困難になり、故障解析攻撃に対して検算による検出性能を向上させることができる。
【0072】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0073】
例えば、本発明に係るデータ処理装置はICカード用マイコンに限定されず、RFIDチップ、汎用マイクロコンピュータ等であってもよい。更に、本発明に係るデータ処理装置は1チップの半導体集積回路に限定されない。また、データ処理装置は公開暗号プロセッサを搭載しなくてもよい。本発明において暗号化復号を行うプロセッサはDESやAESに準拠する処理を行なうコプロセッサに限定されず、適宜変更可能である。
【図面の簡単な説明】
【0074】
【図1】図1は共通鍵暗号プロセッサの一例としてAESコプロセッサの実装例を示すブロックダイヤグラムである。
【図2】図2は本発明の一例に係るICカード用マイコンのブロックダイヤグラムである。
【図3】図3は拡大鍵レジスタへ一回攻撃を受けてその値が変化される場合に同じ演算を何回繰り返しても同じ結果しか得られず故障攻撃に対処することが出来ない場合を例示する説明図である。
【図4】図4は複数回計算の各回の演算において同一タイミングで同一計算をしている場合に毎回同じ故障注入を与えて同じ誤った値を生成させることで故障攻撃に対する検算が無効化される可能性のあることを示す説明図である。
【図5】図5は暗号利用モードとしてECBモードを示す説明図である。
【図6】図6は暗号利用モードとしてOFBモードを示す説明図である。
【図7】図7はECBモードにおいける暗号化と復号の演算手法を例示する説明図である。
【図8】図8はOFBモードにおいて暗号化も復号もEで示される“暗号処理”のアルゴリズムを共通に用いる点を詳細に示した説明図である。
【図9】図9にはOFBモードの暗号化における検算処理を概念的に例示する説明図である。
【図10】図10はECBモードで暗号化に際して行われる暗号化演算のタイミングチャートである。
【図11】図11はECBモードで暗号化に際して行われる復号逆演算のタイミングチャートである。
【図12】図12はECBモードで復号に際しての動作タイミングチャートである。
【図13】図13はECBモードの復号における予備的な拡大鍵演算処理で故障解析攻撃による拡大鍵の改ざんを受けたときの動作タイミングチャートである。
【図14】図14は図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートである。
【図15】図15には図14の処理の後の復号逆演算のフローチャートである。
【図16】図16には図1の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号演算のフローチャートである。
【図17】図17は暗号化処理において暗号化対象にされた平文と暗号化された暗号文の復号逆演算によって得られた平文との一致を検算する処理も行うようにしたときのフローチャートである。
【図18】図18は復号処理において復号された平文の暗号化逆演算を行い、当初の暗号文と暗号化逆演算された暗号文との一致を検算する処理も行うようにしたときのフローチャートである。
【図19】図19は図1のAESコプロセッサの第1の変形例を示すブロックダイヤグラムである。
【図20】図20は図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号化演算を実施したときのフローチャートである。
【図21】図21は図19の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における復号化演算を実施したときのフローチャートである。
【図22】図22は図20に対応されるタイミングチャートである。
【図23】図23は図21に対応されるタイミングチャートである。
【図24】図24は図1のAESコプロセッサ7の第2の変形例を示すブロックダイヤグラムである。
【図25】図25は図24の回路において、鍵長が128ビット、暗号利用モードがECBモードの場合における暗号演算のフローチャートである。
【図26】図26は図25の復号演算のフローチャートである。
【図27】図27は暗号化処理(E)とその前の暗号化処理(E)の逆演算である復号処理(D)を並列化したとき処理P1に並行して逆演算処理R1を行い、処理P2に並行して逆演算処理R2を行う様子を例示する説明図である。
【図28】図28は図27に示されるようにOFBモードにおける自動逆算機能を有するAESコプロセッサ7Cを例示するブロックダイヤグラムである。
【図29】図29は図28の回路において鍵長が128ビット、暗号利用モードがOFBモードの場合における暗号化演算を実施したときのフローチャートである。
【図30】図30は図29に続くフローチャートである。
【図31】図31は暗号演算の第1回目の動作のタイミングチャートであって図27の処理P0の暗号化処理(E)に対応されるタイミングチャートである。
【図32】図32には暗号演算の第2回目の動作のタイミングチャートであって図27の処理P1の暗号化処理(E)とR1の逆演算復号処理に対応されるタイミングチャートである。
【符号の説明】
【0075】
1 ICカード用マイコン
2 通信モジュール
3 中央処理装置(CPU)
4 システムコントロールロジック
5 不揮発性メモリ
6 RAM
7,7A,7B,7C 共通鍵暗号プロセッサ
8 公開鍵暗号プロセッサ
9 クロック生成回路
10 内部バス
20,20A,20B,20C AES演算部
21 初期値レジスタ
22 平文/暗号文レジスタ
23 制御レジスタ
24 鍵レジスタ
25 比較用鍵レジスタ
26,41,51,52 比較器
30 インタフェース回路(I/F)
31,31a,31b 中間値レジスタ
32 AES演算回路
33,33A,33B,33C 制御回路
34 拡大鍵計算回路
35,35a,35b 拡大鍵レジスタ
40 拡大鍵保管レジスタ
50 比較用レジスタ
【特許請求の範囲】
【請求項1】
暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサを備えたデータ処理装置であって、
前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵を外部からアクセス可能に保持する記憶回路を有する、データ処理装置。
【請求項2】
暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサを備えたデータ処理装置であって、
前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致すか否かを検証する、データ処理装置。
【請求項3】
プロセッサを備えたデータ処理装置であって、
前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返して復号を行い、暗号化の演算又は復号の演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路を有する、データ処理装置。
【請求項4】
前記プロセッサを制御する中央処理装置を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される、請求項3記載のデータ処理装置。
【請求項5】
前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である、請求項4記載のデータ処理装置。
【請求項6】
前記プロセッサは平文の暗号化に際して、その暗号化の結果に対し、当該暗号化の最後の暗号化演算で用いた暗号鍵を初期値とする復号を逆演算として行い、当該復号の最後に用いた暗号鍵を前記記憶回路に書き込む、請求項3記載のデータ処理装置。
【請求項7】
前記プロセッサは暗号文の復号に際して、前記暗号鍵の初期値を暗号化の場合と同様に繰り返し更新して暗号化の最後に用いる暗号鍵を生成し、生成した当該暗号鍵を初期値に用いた復号演算を順次複数回繰り返して復号を行い、復号の最後に用いた暗号鍵を前記記憶回路に書き込む、請求項3記載のデータ処理装置。
【請求項8】
前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器を更に有する、請求項6又は7記載のデータ処理装置。
【請求項9】
前記比較器による不一致の判別結果は例外処理を要求する信号であり、
前記例外処理が要求される中央処理装置を更に有する、請求項8記載のデータ処理装置。
【請求項10】
前記例外処理は前記中央処理装置のリセット例外処理である、請求項9記載のデータ処理装置。
【請求項11】
プロセッサを備えたデータ処理装置であって、
前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位暗号化を複数単位分だけ直列的に実行して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位復号を複数単位分だけ直列的に実行して復号を行い、
前記単位暗号化は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた暗号化演算を順次複数回繰り返す暗号化処理とその暗号化処理による処理結果を用いる暗号化論理演算とから成り、
前記単位復号は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた前記暗号化演算を順次複数回繰り返す暗号化処理とその暗号化処理による処理結果を用いる復号論理演算とから成り、
前記プロセッサは、前記暗号化において前ブロックの単位暗号化の暗号化処理の結果を受ける次ブロックの単位暗号化の暗号化処理に並行して、前記前ブロックの単位暗号化の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理を行い、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路を有する、データ処理装置。
【請求項12】
前記プロセッサは、前記復号において前ブロックの単位復号の暗号化処理の結果を受ける次ブロックの単位復号の暗号化処理に並行して、前記前ブロックの単位復号の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理を行い、
前記記憶回路は、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する、請求項11記載のデータ処理装置。
【請求項13】
前記プロセッサを制御する中央処理装置を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される、請求項12記載のデータ処理装置。
【請求項14】
前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である、請求項13記載のデータ処理装置。
【請求項15】
前記暗号化論理演算及び前記復号論理演算は排他的論理和演算である、請求項12記載のデータ処理装置。
【請求項16】
前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器を更に有する、請求項12記載のデータ処理装置。
【請求項17】
前記比較器による不一致の判別結果は例外処理を要求する信号であり、
前記例外処理が要求される中央処理装置を更に有する、請求項16記載のデータ処理装置。
【請求項18】
前記例外処理は前記中央処理装置のリセット例外処理である、請求項17記載のデータ処理装置。
【請求項19】
前記プロセッサはAESに準拠する、請求項3又は12記載のデータ処理装置。
【請求項20】
データ処理装置は半導体基板に形成されたICカード用のマイクロコンピュータである、請求項3又は12記載のデータ処理装置。
【請求項21】
前記プロセッサは、暗号アルゴリズムの暗号化機能のみを用いる暗号利用モードにおいて、復号処理による検算を処理する機能を備える請求項3又は11記載のデータ処理装置。
【請求項1】
暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサを備えたデータ処理装置であって、
前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵を外部からアクセス可能に保持する記憶回路を有する、データ処理装置。
【請求項2】
暗号鍵を用いて平文の暗号化と暗号文の復号を行うプロセッサを備えたデータ処理装置であって、
前記プロセッサは、前記暗号化又は復号を当初の演算として行ったとき、当該当初の演算の逆算を行い、この逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致すか否かを検証する、データ処理装置。
【請求項3】
プロセッサを備えたデータ処理装置であって、
前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返して復号を行い、暗号化の演算又は復号の演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路を有する、データ処理装置。
【請求項4】
前記プロセッサを制御する中央処理装置を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される、請求項3記載のデータ処理装置。
【請求項5】
前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である、請求項4記載のデータ処理装置。
【請求項6】
前記プロセッサは平文の暗号化に際して、その暗号化の結果に対し、当該暗号化の最後の暗号化演算で用いた暗号鍵を初期値とする復号を逆演算として行い、当該復号の最後に用いた暗号鍵を前記記憶回路に書き込む、請求項3記載のデータ処理装置。
【請求項7】
前記プロセッサは暗号文の復号に際して、前記暗号鍵の初期値を暗号化の場合と同様に繰り返し更新して暗号化の最後に用いる暗号鍵を生成し、生成した当該暗号鍵を初期値に用いた復号演算を順次複数回繰り返して復号を行い、復号の最後に用いた暗号鍵を前記記憶回路に書き込む、請求項3記載のデータ処理装置。
【請求項8】
前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器を更に有する、請求項6又は7記載のデータ処理装置。
【請求項9】
前記比較器による不一致の判別結果は例外処理を要求する信号であり、
前記例外処理が要求される中央処理装置を更に有する、請求項8記載のデータ処理装置。
【請求項10】
前記例外処理は前記中央処理装置のリセット例外処理である、請求項9記載のデータ処理装置。
【請求項11】
プロセッサを備えたデータ処理装置であって、
前記プロセッサは、その外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位暗号化を複数単位分だけ直列的に実行して暗号化を行い、また、外部から入力した暗号鍵に基づいて順次更新した暗号鍵を用いた演算を順次複数回繰り返す単位復号を複数単位分だけ直列的に実行して復号を行い、
前記単位暗号化は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた暗号化演算を順次複数回繰り返す暗号化処理とその暗号化処理による処理結果を用いる暗号化論理演算とから成り、
前記単位復号は、外部から入力した暗号鍵の初期値に基づいて順次更新した暗号鍵を用いた前記暗号化演算を順次複数回繰り返す暗号化処理とその暗号化処理による処理結果を用いる復号論理演算とから成り、
前記プロセッサは、前記暗号化において前ブロックの単位暗号化の暗号化処理の結果を受ける次ブロックの単位暗号化の暗号化処理に並行して、前記前ブロックの単位暗号化の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理を行い、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する記憶回路を有する、データ処理装置。
【請求項12】
前記プロセッサは、前記復号において前ブロックの単位復号の暗号化処理の結果を受ける次ブロックの単位復号の暗号化処理に並行して、前記前ブロックの単位復号の暗号化処理の結果を用いて単位暗号化の暗号化処理の逆演算として復号処理を行い、
前記記憶回路は、前記逆演算に用いた最新の前記更新した暗号鍵を外部からアクセス可能に保持する、請求項11記載のデータ処理装置。
【請求項13】
前記プロセッサを制御する中央処理装置を更に有し、前記記憶回路は前記中央処理措置のアドレス空間に配置される、請求項12記載のデータ処理装置。
【請求項14】
前記記憶回路は、前記暗号鍵の初期値が中央処理装置によって書き込まれる領域であって、その後、暗号鍵の初期値に基づいて順次更新した最新の暗号鍵によって書き換えられる領域である、請求項13記載のデータ処理装置。
【請求項15】
前記暗号化論理演算及び前記復号論理演算は排他的論理和演算である、請求項12記載のデータ処理装置。
【請求項16】
前記記憶回路に書き込まれた前記復号の最後に用いた暗号鍵と、前記暗号化の最初に用いた暗号鍵とが一致するか否かを判別する比較器を更に有する、請求項12記載のデータ処理装置。
【請求項17】
前記比較器による不一致の判別結果は例外処理を要求する信号であり、
前記例外処理が要求される中央処理装置を更に有する、請求項16記載のデータ処理装置。
【請求項18】
前記例外処理は前記中央処理装置のリセット例外処理である、請求項17記載のデータ処理装置。
【請求項19】
前記プロセッサはAESに準拠する、請求項3又は12記載のデータ処理装置。
【請求項20】
データ処理装置は半導体基板に形成されたICカード用のマイクロコンピュータである、請求項3又は12記載のデータ処理装置。
【請求項21】
前記プロセッサは、暗号アルゴリズムの暗号化機能のみを用いる暗号利用モードにおいて、復号処理による検算を処理する機能を備える請求項3又は11記載のデータ処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【公開番号】特開2010−21637(P2010−21637A)
【公開日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願番号】特願2008−178084(P2008−178084)
【出願日】平成20年7月8日(2008.7.8)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】
【公開日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願日】平成20年7月8日(2008.7.8)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】
[ Back to top ]