暗号処理装置及びプログラム
【課題】ラウンド鍵配列へのマスク値が0になることを阻止し、且つマスク管理の複雑化を低減させる。
【解決手段】7種類のマスク状態から、Sボックス入力保護マスク、Sボックス出力保護マスク、ラウンド鍵保護マスクの1列目のマスク状態を選択し、Sボックス出力保護マスクのマスク状態、1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、ラウンド鍵保護マスクの2列目のマスク状態として選択し、3列目と4列目のマスク状態を選択し、ラウンド鍵更新後の1列目から4列目までのマスク状態を計算し、このマスク状態に禁止状態“000”が含まれないとき、選択された各マスク状態に対応して各基本マスク値同士を排他的論理和し、各マスク状態に対応する合成マスク値を計算する。
【解決手段】7種類のマスク状態から、Sボックス入力保護マスク、Sボックス出力保護マスク、ラウンド鍵保護マスクの1列目のマスク状態を選択し、Sボックス出力保護マスクのマスク状態、1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、ラウンド鍵保護マスクの2列目のマスク状態として選択し、3列目と4列目のマスク状態を選択し、ラウンド鍵更新後の1列目から4列目までのマスク状態を計算し、このマスク状態に禁止状態“000”が含まれないとき、選択された各マスク状態に対応して各基本マスク値同士を排他的論理和し、各マスク状態に対応する合成マスク値を計算する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理装置及びプログラムに係り、例えば電力解析による解読に対する耐性を向上し得る暗号処理装置及びプログラムに関する。
【背景技術】
【0002】
一般に、データの暗号化や認証などの暗号処理を実行するコンピュータとしては、パーソナルコンピュータが広く知られており、他には、スマートカードあるいはICカードと呼ばれ、ICモジュールを搭載したカード形状のデバイスが知られている。
【0003】
この種の暗号処理には、DES(data encryption standard)及びトリプル(triple)DES(例えば、非特許文献1参照。)や、非特許文献2に挙げられるAES(advance encryption standard)(例えば、非特許文献2参照。)などの共通鍵暗号アルゴリズムや、任意の公開鍵暗号アルゴリズムが用いられる。
【0004】
これらの暗号技術に対する暗号解読の方法として、暗号文等の入手可能な情報から、平文や秘密鍵等の秘密情報を回復する技術がある。係る暗号解読の技術では、秘密鍵の回復が可能であるか否かが安全性評価の指標としてよく用いられる。暗号解読に用いる情報としては、暗号文等の入手可能な情報に限らず、特定したい秘密鍵とは値が異なる鍵を用いた情報も使用可能である。すなわち、重要な秘密鍵の値を特定するため、ユーザが任意の鍵の組み合わせで暗号処理装置を使用し、得られた情報から目的の秘密鍵を特定するという解読手法も考えられる。
【0005】
この解読手法の一例としては、電力解析攻撃が知られている(例えば、非特許文献3参照。)。電力解析攻撃は、パーソナルコンピュータ又はICカード等のデバイスに搭載された暗号処理装置のハードウェア又はソフトウェアが暗号処理の内容と消費電力との間に相関を持つことに着目し、観測した消費電力の情報から内部の秘密鍵や平文に関する情報を推定する手法である。電力解析には、単純電力解析(以下、SPAという)と差分電力解析(以下、DPAという)が含まれる。SPAは暗号処理の電力消費の特徴を抽出して解読に役立てる方法であり、DPAはデータ毎に僅かに異なる暗号処理中の消費電力間の差分や相関を利用して解読する方法である。
【0006】
従来の電力解析への対策法としては、ノイズ発生器により暗号処理の電力消費量の測定を撹乱し、測定精度を悪化させる方法や、トランジスタや配線の改良により処理に関する電力消費の変動を測定困難なレベルに抑える方法や、暗号アルゴリズムの実装に対策を施し電力解析による解読を困難にする方法などが提案されている。
【0007】
暗号アルゴリズムの実装に対策を施した手法としては、いわゆるマスキング法が広く知られている(例えば非特許文献4参照。)。マスキング法とは、処理内容と消費電力との相関を利用する電力解析の原理に着目し、処理するデータにマスクと呼ばれる乱数Rを適用し、消費電力を擾乱して解析を困難にする方法である。具体的には、暗号処理装置は、内部データDに乱数Rを排他的論理和演算(XOR)して得られた内部データD’=D xor Rを暗号処理することにより、消費電力を擾乱する。また、Sボックス(以下、S-boxともいう)と呼ばれる非線形置換においては、入力と出力にそれぞれマスクを適用して変形された置換テーブルが用いられる。
【0008】
なお、マスキング法は、マスクによる方法に限らず、例えば加減算による手法や、内部データに冗長な表現を用い、一部のビットを乱数で置換して暗号処理と消費電力との相関を撹乱する手法などもある。
【0009】
また、暗号解読の分野では、消費電力を観測する電力解析攻撃を含む概念として、消費電力等の暗号処理に関する情報を観測する攻撃方法を総称してサイドチャネル攻撃と呼ぶ。観測される情報は、サイドチャネル情報とも呼ばれ、例えば消費電力以外にも、処理時間のわずかな変動や、デバイスから放出される熱線量の変動、放射される電界や磁界など、さまざまなものがある。
【0010】
また、マスキング法は内部データを秘匿してサイドチャネル情報を擾乱するため、暗号処理装置に異常を与えて誤動作させた結果からサイドチャネル情報を得る故障利用攻撃あるいは差分的故障利用攻撃に対する対策として有効な場合もある。
【0011】
このようなマスキング法は、DES及びトリプルDESに対しては、比較的容易に適用可能である。例えば、DES及びトリプルDESにおいては、秘密の鍵から副鍵を生成する鍵スケジュール部ではビット間の演算が行われず、一度マスクを適用すると、意図的に除去するまで適用されたままとなるので、マスクの管理が容易である。一方、平文に副鍵を適用して暗号文を計算するデータ暗号化部については、8種類の異なるSボックスを使用するものの、1つあたり6ビット入力4ビット出力と、規模が小さいためそれぞれに別々の乱数によるマスクを用いたマスキング法の適用が容易である。
【0012】
しかしながら、DES及びトリプルDESの後継技術であるAESの場合、鍵スケジュール部、データ暗号化部のいずれにおいても回路規模あるいは使用リソースの増大・制御の複雑さといったことから、マスクの管理が複雑となる問題がある。
【0013】
(一般的なAES暗号化処理:図21)
図21はAES暗号方式による一般的な暗号化処理を説明するためのフローチャートである。いま、暗号処理装置では、操作者の操作により、AES暗号化処理プログラムが起動され、不揮発性メモリに記憶されていたラウンド鍵がラウンド鍵配列に書き込まれたとする(ST1)。また、暗号処理装置では、操作者の操作により、128ビットの平文データがRAMに書き込まれた後(ST2)、暗号化要求が入力されたとする。
【0014】
暗号処理装置は、この暗号化要求を受けると、段数(ラウンド数)Nを1に設定し(ST3)、AES暗号方式の仕様に基づいた繰り返し処理として、N段目の暗号化処理を開始する(ST4)。AES暗号方式では、128ビット鍵の場合には10回の繰り返し処理を実行し、192ビット鍵の場合には12回の繰り返し処理を実行し、256ビット鍵の場合には14回の繰り返し処理を実行する。繰り返される処理の一単位は、一般に、「段」又は「ラウンド」と呼ばれる。
【0015】
1段の処理においては、暗号処理装置は内部状態配列の記憶内容に対し、ラウンド鍵配列内のラウンド鍵を加算する鍵加算(AddRoundKey)処理を実行する(ST5)。
【0016】
鍵加算処理の後、暗号処理装置は、4行4列の内部状態配列の記憶内容に対し、Sボックスを参照しながらバイト換字変換(SubByte)処理を実行して16個のバイト換字変換結果を得ると(ST6)、バイト換字変換結果をRAMの内部状態配列に書き込む。
【0017】
続いて、暗号処理装置は、内部状態配列の記憶内容を並べ替え(ShiftRow)処理し(ST7)、得られた内部データの列毎にミックスカラム変換処理を実行する(ST8)。
【0018】
全ての列にミックスカラム変換処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST9)、段数Nを+1増加し(ST10)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST11)、最後の段でない場合にはステップST4に戻って暗号化処理を繰り返す。
【0019】
一方、最後の段の場合には、ラウンド鍵更新及び鍵加算処理を実行した後、得られた暗号文データを出力して暗号化処理を終了する。
【0020】
以上が一般的なAES暗号化処理の手順であるが、データの整合性に矛盾を来たさない範囲で処理の順序も入れ替え可能である。例えば、ステップST1とST2とは入れ替え可能である。
【0021】
また、AES暗号方式による復号処理は、図21に示したフローチャートの各部において逆の変換を行いつつ、逆の手順で実行し、入力された鍵と暗号文に対応した平文を出力する。
【0022】
次に、図22乃至図24を用い、128ビット鍵、192ビット鍵及び256ビット鍵の鍵長におけるAESの暗号化処理のラウンド鍵更新の処理を説明する。
【0023】
(128ビット鍵の更新処理:図22)
暗号処理装置は、128ビットの鍵を4行4列のラウンド鍵配列に書き込み(ST21)、段数Nを1に設定し(ST22)、N段目のラウンド鍵の更新処理を開始する(ST23)。
【0024】
暗号処理装置は、ラウンド鍵配列の4列目の4バイトにAESの仕様で定められた並べ替え(RotWord)処理、Sボックス情報によるバイト換字(SubByte)処理、鍵定数とのXOR(排他的論理和演算)処理、を実行し、作業変数Vを作成する(ST24)。
【0025】
しかる後、暗号処理装置は、作業変数Vをラウンド鍵配列の1列目にXOR処理して当該1列目の4バイトを更新する(ST25)。そして、暗号処理装置は、更新された1列目の4バイトをラウンド鍵配列の2列目にXOR処理して当該2列目を更新し(ST26)、以下、順次同様に、更新後の2列目の4バイトを3列目にXOR処理して当該3列目を更新し(ST27)、更新された3列目の4バイトを4列目にXOR処理して当該4列目を更新する(ST28)。
【0026】
全ての列にXOR処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST29)、段数Nを+1増加し(ST30)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST31)、最後の段でない場合にはステップST23に戻ってラウンド鍵の更新処理を繰り返す。
一方、最後の段の場合には、ラウンド鍵の更新処理を終了する。
【0027】
128ビット鍵のAESの暗号処理は10ラウンドでラウンド鍵を11回使用する。ラウンド鍵更新は2回目以降のラウンド鍵使用の前に必要なため、10回のラウンド鍵更新が行われる。
【0028】
(192ビット鍵の更新処理:図23)
暗号処理装置は、192ビットの鍵を4行6列のラウンド鍵配列に書き込み(ST41)、段数Nを1に設定し(ST42)、N段目のラウンド鍵の更新処理を開始する(ST43)。
【0029】
暗号処理装置は、ラウンド鍵配列の6列目の4バイトにAESの仕様で定められた並べ替え(RotWord)処理、バイト換字(SubByte)処理、鍵定数とのXOR(排他的論理和演算)処理、を実行し、作業変数Vを作成する(ST44)。
【0030】
しかる後、暗号処理装置は、作業変数Vをラウンド鍵配列の1列目にXOR処理して当該1列目の4バイトを更新する(ST45)。そして、暗号処理装置は、更新された1列目の4バイトをラウンド鍵配列の2列目にXOR処理して当該2列目を更新し(ST46)、以下、順次同様に、更新後の2列目の4バイトを3列目にXOR処理して当該3列目を更新し(ST47)、更新された3列目の4バイトを4列目にXOR処理して当該4列目を更新し(ST48)、更新後の4列目の4バイトを5列目にXOR処理して当該5列目を更新し(ST49)、更新後の5列目の4バイトを6列目にXOR処理して当該6列目を更新する(ST50)。
【0031】
全ての列にXOR処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST51)、段数Nを+1増加し(ST52)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST53)、最後の段でない場合にはステップST43に戻ってラウンド鍵の更新処理を繰り返す。
一方、最後の段の場合には、ラウンド鍵の更新処理を終了する。
【0032】
なお、ラウンド鍵配列は4行6列であるが、AESの暗号化処理の1ラウンドでは4行4列しか用いないため、暗号化処理の3ラウンドにつき2回のラウンド鍵更新処理を行い、ラウンド鍵を分配する。
【0033】
192ビット鍵のAESの暗号処理は12ラウンドでラウンド鍵を13回使用する。ラウンド鍵更新は2ラウンド目以降のラウンド鍵使用の前に必要であり、8回のラウンド鍵更新が行われる。
【0034】
(256ビット鍵の更新処理:図24)
暗号処理装置は、256ビットの鍵を4行8列のラウンド鍵配列に書き込み(ST61)、段数Nを1に設定し(ST62)、N段目のラウンド鍵の更新処理を開始する(ST63)。
【0035】
暗号処理装置は、ラウンド鍵配列の8列目の4バイトにAESの仕様で定められた並べ替え(RotWord)処理、バイト換字(SubByte)処理、鍵定数とのXOR(排他的論理和演算)処理、を実行し、作業変数Vを作成する(ST64)。
【0036】
しかる後、暗号処理装置は、作業変数Vをラウンド鍵配列の1列目にXOR処理して当該1列目の4バイトを更新する(ST65)。そして、暗号処理装置は、更新された1列目の4バイトをラウンド鍵配列の2列目にXOR処理して当該2列目を更新し(ST66)、以下、順次同様に、更新後の2列目の4バイトを3列目にXOR処理して当該3列目を更新し(ST67)、更新後の3列目をバイト換字(SubByte)処理してから4列目にXOR処理して当該4列目を更新し(ST68)、更新後の4列目を5列目にXOR処理して当該5列目を更新し(ST69)、更新後の5列目を6列目にXOR処理して当該6列目を更新し(ST70)、更新後の6列目を7列目にXOR処理して当該7列目を更新し(ST71)、更新後の7列目を8列目にXOR処理して当該8列目を更新する(ST72)。
【0037】
全ての列にXOR処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST73)、段数Nを+1増加し(ST74)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST75)、最後の段でない場合にはステップST63に戻ってラウンド鍵の更新処理を繰り返す。
一方、最後の段の場合には、ラウンド鍵の更新処理を終了する。
【0038】
なお、ラウンド鍵配列は4行8列であるが、AESの暗号化処理の1ラウンドでは4行4列しか用いないため、暗号化処理の2ラウンドにつき1回のラウンド鍵更新処理を行い、ラウンド鍵を分配する。
【0039】
256ビット鍵のAESの暗号処理は14ラウンドでラウンド鍵を15回使用する。ラウンド鍵更新は3ラウンド目以降、2段ごとのラウンド鍵使用の前に必要であり、7回のラウンド鍵更新が行われる。
【0040】
(マスキング法によるAES暗号化処理:図25)
続いて、マスキング法を用いたAES暗号化処理について説明する。
【0041】
マスキング法を用いた暗号化処理は、図21に示した暗号化処理に対し、ステップST2で書き込んだ内部状態配列にAES内部データ保護マスクをXOR(により付加)する処理(ST2−2)を有する点と、前述したバイト換字処理に代えて、マスク付バイト換字(SubByte)処理(ST6’)を用いる点と、前述したミックスカラム変換処理に代えて、マスク付ミックスカラム(SubByte)変換処理(ST8’)を用いる点と、出力する暗号化データからAES内部データ保護マスクをXOR(により除去)する処理(ST12)を有する点とが異なる。
【0042】
なお、ステップST6’のマスク付バイト換字処理は、4行4列のSボックス入力保護マスクをXOR(により付加)する処理と、4行4列のラウンド鍵保護マスクをXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理と、4行4列のAES内部データ保護マスクをXOR(により付加)する処理と、4行4列のSボックス保護マスクをXOR(により除去)する処理とを順次、実行するものである。ここで、マスク付Sボックス情報は、図26に示すように、通常のSボックス情報の前段にSボックス入力保護マスクがXORにより付加され、且つ当該Sボックス情報の後段にSボックス出力保護マスクがXORにより付加されるように、通常のSボックス情報が変形されてなるSボックス情報である。なお、Sボックス入力保護マスク及びSボックス出力保護マスクは、それぞれ4行4列の各要素にて互いに同一のマスク値が用いられている。
【0043】
ステップST6’のマスク付バイト換字(SubByte)処理は、4行4列のSボックス入力保護マスクをXOR(により付加)する処理と、4行4列のラウンド鍵保護マスクをXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理と、4行4列のAES内部データ保護マスクをXOR(により付加)する処理と、4行4列のSボックス保護マスクをXOR(により除去)する処理とを順次、実行するものである。
【0044】
ステップST8’のマスク付ミックスカラム(MixColumn)変換処理は、4行4列のミックスカラム入力保護マスクをXOR(により付加)する処理と、4行4列のラウンド鍵保護マスクをXOR(により除去)する処理と、ミックスカラム(MixColumn)変換処理と、4行4列のミックスカラム出力をXOR(により付加)する処理と、4行4列のAES内部データ保護マスクをXOR(により除去9する処理とを順次、実行するものである。
【0045】
以上のように、マスキング法を用いたAES暗号化処理においては、マスクが付加された状態で内部データが暗号化されている。また、ステップST1のラウンド鍵にもマスキング法により、マスクが付加されている。続いて、このマスキング法によるラウンド鍵の更新処理について、128ビット鍵、192ビット鍵及び256ビット鍵の順に述べる。
【0046】
(マスキング法による128ビット鍵の更新処理:図27、図28)
マスキング法による128ビット鍵の更新処理は、図22に示した更新処理に対し、ステップST21で書き込んだラウンド鍵配列にラウンド鍵保護マスクをXOR(により付加)する処理(ST21−2)を有する点と、前述した作業変数V作成処理に代えて、マスク付作業変数V作成処理(ST24’)を用いる点と、列毎の更新処理(ST25,ST26,ST27,ST28)の後段にそれぞれマスク変更処理(ST25−2,ST26−2,ST27−2,ST28−2)を有する点とが異なる。
【0047】
なお、ステップST24’のマスク付作業変数作成処理は、ラウンド鍵の4列目に対し、Sボックス入力保護マスクの4列目をXOR(により付加)する処理と、ラウンド鍵保護マスクの4列目をXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理により1列の作業変数Vを作成する処理とを順次、実行するものである。
【0048】
ステップST25−2のマスク変更処理は、ラウンド鍵の更新後の1列目に対し、ラウンド鍵保護マスクの1列目をXOR(により付加)する処理と、Sボックス出力保護マスクの1列目をXOR(により除去)する処理とを順次、実行するものである。
【0049】
ステップST26−2のマスク変更処理は、ラウンド鍵の更新後の2列目に対し、乱数R1をXOR(により付加)する処理と、ラウンド鍵保護マスクの1列目をXOR(により除去)する処理と、乱数R1をXOR(により除去)する処理とを順次、実行するものである。
【0050】
以下同様に、ステップST27−2,ST28−2のマスク変更処理は、ラウンド鍵の更新後のn列目に対し、乱数R(n−1)をXOR(により付加)する処理と、ラウンド鍵保護マスクの(n−1)列目をXOR(により除去)する処理と、乱数R(n−1)をXOR(により除去)する処理とを順次、実行するものである。
【0051】
以上のように、マスキング法を用いた128ビット鍵の更新処理においては、マスクが付加された状態でラウンド鍵が更新されている。
【0052】
(マスキング法による192ビット鍵の更新処理:図29)
マスキング法による192ビット鍵の更新処理は、図23に示した更新処理に対し、ステップST41で書き込んだラウンド鍵配列にラウンド鍵保護マスクをXOR(により付加)する処理(ST41−2)を有する点と、前述した作業変数V作成処理に代えて、マスク付作業変数V作成処理(ST44’)を用いる点と、列毎の更新処理(ST45〜ST50)の後段にそれぞれマスク変更処理(ST45−2〜ST50−2)を有する点とが異なる。
【0053】
ステップST44’のマスク付作業変数作成処理は、ラウンド鍵の6列目に対し、Sボックス入力保護マスクの6列目をXOR(により付加)する処理と、ラウンド鍵保護マスクの6列目をXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理により1列の作業変数Vを作成する処理とを順次、実行するものである。
【0054】
ステップST45−2のマスク変更処理は、ラウンド鍵の更新後の1列目に対し、ラウンド鍵保護マスクの1列目をXOR(により付加)する処理と、Sボックス出力保護マスクの1列目をXOR(により除去)する処理とを順次、実行するものである。
【0055】
ステップST46−2のマスク変更処理は、ラウンド鍵の更新後の2列目に対し、乱数R1をXOR(により付加)する処理と、ラウンド鍵保護マスクの1列目をXOR(により除去)する処理と、乱数R1をXOR(により除去)する処理とを順次、実行するものである。
【0056】
以下同様に、ステップST47−2〜ST50−2のマスク変更処理は、ラウンド鍵の更新後のn列目に対し、乱数R(n−1)をXOR(により付加)する処理と、ラウンド鍵保護マスクの(n−1)列目をXOR(により除去)する処理と、乱数R(n−1)をXOR(により除去)する処理とを順次、実行するものである。
【0057】
以上のように、マスキング法を用いた192ビット鍵の更新処理においては、マスクが付加された状態でラウンド鍵が更新されている。
【0058】
(マスキング法による256ビット鍵の更新処理:図30)
マスキング法による192ビット鍵の更新処理は、図24に示した更新処理に対し、ステップST61で書き込んだラウンド鍵配列にラウンド鍵保護マスクをXOR(により付加)する処理(ST61−2)を有する点と、前述した作業変数V作成処理に代えて、マスク付作業変数V作成処理(ST64’)を用いる点と、列毎の更新処理(ST65〜ST72)の後段にそれぞれマスク変更処理(ST65−2〜ST72−2)を有する点とが異なる。
【0059】
ステップST64’のマスク付作業変数作成処理は、ラウンド鍵の8列目に対し、Sボックス入力保護マスクの8列目をXOR(により付加)する処理と、ラウンド鍵保護マスクの8列目をXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理により1列の作業変数Vを作成する処理とを順次、実行するものである。
【0060】
ステップST65−2のマスク変更処理は、ラウンド鍵の更新後の1列目に対し、ラウンド鍵保護マスクの1列目をXOR(により付加)する処理と、Sボックス出力保護マスクの1列目をXOR(により除去)する処理とを順次、実行するものである。
【0061】
ステップST66−2のマスク変更処理は、ラウンド鍵の更新後の2列目に対し、乱数R1をXOR(により付加)する処理と、ラウンド鍵保護マスクの1列目をXOR(により除去)する処理と、乱数R1をXOR(により除去)する処理とを順次、実行するものである。
【0062】
以下同様に、ステップST67−2〜ST72−2のマスク変更処理は、ラウンド鍵の更新後のn列目に対し、乱数R(n−1)をXOR(により付加)する処理と、ラウンド鍵保護マスクの(n−1)列目をXOR(により除去)する処理と、乱数R(n−1)をXOR(により除去)する処理とを順次、実行するものである。
【0063】
以上のように、マスキング法を用いた256ビット鍵の更新処理においては、マスクが付加された状態でラウンド鍵が更新されている。
【0064】
(マスキング法によるマスク値)
次に、以上のようなラウンド鍵へのマスキング法の適用について説明する。図31は、従来のマスキング法によるマスクを付加された後(ST21−2の後)のラウンド鍵配列の状態を表す。128ビット鍵のAESの暗号処理のラウンド鍵更新処理において、ラウンド鍵配列の1行2列目の要素をy(1,2)からy’(1,2)に更新する場合を例とすると、y’(1,2)は、y(1,1)とy(1,2)を用いて、y’(1,2) = y(1,1) XOR y(1,2)により更新される。
【0065】
マスキング法によりラウンド鍵配列i行j列目の各要素の真の値y(i,j)に乱数r(i,j)が用いられていたとすると、ラウンド鍵配列の1行1列目と1行2列目の各要素のマスクが付加された値は、それぞれ y(1,1) XOR r(1,1) と y(1,2) XOR r(1,2) であり、更新結果は、y’(1,2) XOR r(1,1) XOR r(1,2) = (y(1,1) XOR r(1,1)) XOR (y(1,2) XOR r(1,2)) となり、更新前の1行1列目と1行2列目のマスクのXORされた結果が、更新後の1行2列目の要素へのマスクとなる。同様に、i×j個の各要素について更新処理が行われる。
【0066】
ここで、AESの処理は8ビットを処理単位とするため、マスクを同様に8ビットで考えると、マスク値は256通りである。128ビット鍵を用いたAESのラウンド鍵更新では上述の更新処理が4×4=16回行われる。マスク値が一様ランダムであると仮定すると、パースデーパラドックスの定理により、約50%の確率で更新されたマスク値が0となる問題が知られている。
【0067】
この対策として、AES処理の前にラウンド鍵更新の方法に従って、マスク値をそれぞれ計算し、マスク値が0とならないことを保証する方式が考えられる。しかしながら、この方式は、ランダムかつ重複なくマスク値を選択した場合、10回繰り返しても、無視できない5〜10%以上の確率でマスク値0が発生するため、検査に時間を要する問題がある。
【0068】
マスキング法の別の方式として、1行2列目の要素のマスクをr(1,2)のまま変更しないで更新する方法が知られている。この場合には、y’(1,2) XOR r(1,2) = (y(1,1) XOR r(1,1)) XOR (y(1,2) XOR r(1,2)) XOR r(1,1)の演算を行う。この方法では、上述のマスク値が0となる可能性をかなり低減できるが、ラウンド鍵配列の各要素の更新時にそれぞれ1回のXOR演算が増加してしまう。
【0069】
また一方、AESの場合、前述したように、回路規模あるいは使用リソースの増大・制御の複雑さといったことから、マスクの管理が複雑となる問題がある。例えばデータ暗号化部では1段の処理で8ビット入力8ビット出力のSボックスが16個使用される。それぞれ別々の乱数によりマスクを用いると、回路規模あるいは実現ソフトウェアのコード規模と使用メモリ量の増大が見込まれる。一般的な見積もりでは、DES及びトリプルDESと比較すると16倍のメモリ量が必要となる。また、鍵スケジュール部においては、最大で4段カスケード接続XORあるいは4入力1出力のXOR演算が必要となる。
【0070】
このように、AESの場合、それぞれ別々の乱数によるマスクを用いると、マスクの管理が複雑となる問題が発生する。
【非特許文献1】米国標準技術研究所 (National Institute of Standards and Technology): "Data Encryption Standard(DES)", Federal Information Processing Standards 46-3, 1999
【非特許文献2】米国標準技術研究所 (National Institute of Standards and Technology): "Advanced Encryption Standard", Federal Information Processing Standards 197, 2001
【非特許文献3】Paul Kocher, Joshua Jaffe, and Benjamin Jun, "Differential Power Analysis" in proceedings of Advances in Cryptology -- CRYPTO'99, Springer-Verlag, pp.388-397, 1999
【非特許文献4】Tomas Messerges, "Securing the AES Finalists Against Power Analysis Attacks," in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, 2000.
【非特許文献5】ISO/IEC 10118-3
【非特許文献6】“WHIRLPOOL”, 英語版Wikipedia, http://en.wikipedia.org/wiki/WHIRLPOOL
【発明の開示】
【発明が解決しようとする課題】
【0071】
以上説明したように、従来のマスキング法をAES暗号方式にそのまま適用した場合、ラウンド鍵配列へのマスク値が0となる問題や、マスク管理が複雑になる問題が生じてしまう。このような問題は、AES暗号方式に限らず、例えばAESの4×4の内部状態に類似した8×8の内部状態をもつワープール(Whirlpool)(例えば、非特許文献5,6参照。)にも同様に存在すると考えられる。
【0072】
本発明は上記実情を考慮してなされたもので、ラウンド鍵配列へのマスク値が0になることを阻止でき、且つマスク管理の複雑化を低減し得る暗号処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0073】
第1の発明は、ラウンド鍵保護マスク、Sボックス入力保護マスク及びSボックス出力保護マスクを用いてAES暗号方式を実行する暗号処理装置であって、前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段と、前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段と、前記選択されたSボックス出力保護マスクのマスク状態とは異なるマスク状態を、前記ラウンド鍵保護マスクの1列目のマスク状態として前記7種類のマスク状態から選択する1列目選択手段と、前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、前記ラウンド鍵保護マスクの2列目のマスク状態として前記7種類のマスク状態から選択する2列目手段と、前記ラウンド鍵保護マスクの3列目及び4列目のマスク状態を前記7種類のマスク状態からそれぞれ選択する3・4列目選択手段と、前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目から4列目までのマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算するマスク状態計算手段と、前記計算されたマスク状態に禁止状態“000”が含まれるか否かを判定する禁止状態判定手段と、前記7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値が記憶された基本マスク値記憶手段と、前記禁止状態が含まれないとき、前記選択された各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該選択された各マスク状態に対応するそれぞれの合成マスク値を計算するマスク値計算手段とを備えた暗号処理装置である。
【0074】
なお、第1の発明は、「装置」として表現したが、これに限らず、「プログラム」、「プログラムを記憶したコンピュータ読取り可能な記憶媒体」又は「方法」として表現してもよい。
【0075】
(作用)
第1の発明によれば、従来のマスキング法と同等のサイドチャネル攻撃への耐性を実現しつつ、列毎に異なるマスク状態を選択する構成により、ラウンド鍵配列へのマスク値が0になることを阻止でき、且つ基本マスク値から合成マスク値を生成する構成により、マスク管理の複雑さを低減することができる。
【発明の効果】
【0076】
以上説明したように本発明によれば、ラウンド鍵配列へのマスク値が0になることを阻止でき、且つマスク管理の複雑化を低減できる。
【発明を実施するための最良の形態】
【0077】
以下、本発明の各実施形態について図面を用いて説明する。なお、以下の各装置は、各装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【0078】
以下、本発明の実施形態について図面を参照しつつ詳細に説明する。
【0079】
(第1の実施形態)
図1は本発明の第1の実施形態に係る暗号処理装置の構成を示す模式図である。この暗号処理装置10は、マスキング法を適用したAES暗号方式を実行する装置であり、ICカード又はパーソナルコンピュータのいずれで実現してもよい。
【0080】
具体的には、暗号処理装置10は、ROM1、RAM2、不揮発性メモリ3、CPU4及び入出力部5が互いにバス6を介して接続された構成となっている。
【0081】
ここで、ROM1は、CPU5から読出可能な読出専用メモリであり、暗号処理装置10のOSが予め記憶されている。
【0082】
RAM2は、CPU5から読出/書込可能なランダムアクセスメモリであり、不揮発性メモリ3の記憶内容が読み出され、ラウンド鍵更新処理中及びAES暗号処理中に暗号文、鍵、マスク状態、マスク値、カウント値、処理中データ、復号された平文等を一時的に保存するために用いられる。ラウンド鍵配列、内部状態配列(State array)は、RAM2の一部の領域に形成されており、128ビット鍵の場合には4行4列の配列であり、192ビット鍵の場合には4行6列の配列であり、256ビット鍵の場合には4行8列の配列である。
【0083】
不揮発性メモリ3は、CPU5から読出/書込可能で電源オフ時にも記憶内容が消去されないメモリであり、例えば、外部の記憶媒体からインストールされたAES暗号処理の動作プログラム、マスク付Sボックス(S-box)情報、ラウンド鍵保護マスク生成用の基本マスク値A,B,C、などが予め記憶され、また、外部のAES復号装置(図示せず)と共有する共通鍵、などが適宜、記憶される。但し、マスク付Sボックス(S-box)情報、基本マスク値A,B,C、及び共通鍵は、予め不揮発性メモリ3に記憶される場合に限らず、AES暗号処理の際に、その都度作成する場合もある。暗号処理の都度作成する場合、マスク付Sボックス(S-box)情報、基本マスク値A,B,C、及び共通鍵は、RAM2に記憶される一方、不揮発性メモリ3には記憶されない。なお、共有する鍵(共通鍵)の鍵長は、AES暗号の仕様の通り、128ビット、192ビット又は256ビットのいずれでもよい。
【0084】
CPU4は、入出力部5から入力された平文データに対してAES暗号処理を実行し、得られた暗号文データを入出力部5から出力するAES暗号処理を実行するものであり、具体的にはメモリ1〜3を参照しながら、図2乃至図8に示す如き、マスク状態更新処理、ラウンド鍵更新処理及びAES暗号処理を実行する機能をもっている。
【0085】
例えばCPU4は、Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する機能と、選択したSボックス入力保護マスクのマスク状態とは異なるマスク状態を、Sボックス出力保護マスクのマスク状態として7種類のマスク状態から選択する機能と、選択したSボックス出力保護マスクのマスク状態とは異なるマスク状態を、ラウンド鍵保護マスクの1列目のマスク状態として7種類のマスク状態から選択する機能と、選択したSボックス出力保護マスクのマスク状態、選択した1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、ラウンド鍵保護マスクの2列目のマスク状態として7種類のマスク状態から選択する機能と、ラウンド鍵保護マスクの3列目及び4列目のマスク状態を7種類のマスク状態からそれぞれ選択する機能と、選択したSボックス出力保護マスクのマスク状態、選択した1列目から4列目までのマスク状態を用いて、AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算する機能と、計算したマスク状態に禁止状態“000”等が含まれるか否かを判定する機能と、7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値A,B,CをRAM2に書き込む機能と、禁止状態が含まれないとき、選択した各マスク状態に対応して各基本マスク値A,B,C同士を排他的論理和により合成することにより、当該選択した各マスク状態に対応するそれぞれの合成マスク値を計算する機能とをもっている。
【0086】
入出力部5は、図示しない外部装置と暗号処理装置10との間のデータ等の入出力機能を有し、さらに、暗号処理装置10がICカードの場合には外部から暗号処理装置10内への電源の入力機能などをもっている。
【0087】
次に、以上のように構成された暗号処理装置の動作を図2のフローチャートを用いて説明する。なお、暗号処理装置10では、操作者の操作により、AESの暗号処理プログラムが起動され、不揮発性メモリ3の記憶内容がRAM2に書き込まれたとする。また、暗号処理装置10では、操作者の操作により、平文データが入出力部5を介してRAM2に書き込まれた後、暗号処理要求が入出力部5を介して入力されたとする。
【0088】
(マスク状態選択の全体動作:図2)
始めに、CPU4は、ラウンド鍵配列各要素のマスク状態を選択し(ST81)、RAM2にマスク状態を書き込む。次に、CPU4は、段(ラウンド)数のカウント値NをN=1で初期化する。なお、段数は、ここでは128ビット鍵に対応した値10が用いられるが、192又は256ビット鍵の場合には、段数に12あるいは14が用いられる。
【0089】
続いて、CPU4は、図3に示すように、ラウンド鍵更新後のラウンド鍵配列各要素のマスク状態を計算する(ST83)。ステップST83の処理は、図22のステップST21で格納するラウンド鍵として、図3中の使用段1のラウンド鍵保護マスクのマスク状態を用い、図22のステップST24に含まれるバイト換字(SubByte)処理に図3中のSボックス出力保護マスクのマスク状態を用いることにより実行できる。
【0090】
次に、CPU4は、ラウンド鍵配列の各要素にマスク状態の禁止状態が含まれているか否かを判定し(ST84)、含まれていた場合にはステップST81に戻り、含まれていない場合にはステップST85に進む。ここで、マスク状態の禁止状態とは、例えばマスク値の全てのビットが0である場合や全てのビットが1である場合など、マスキング法を適用する上で望ましくないマスクの値に対応するマスク状態である。なお、図2中、ステップST83及びST84は、それぞれ1回の処理として示したが、実際には図4に示すように、列毎に、マスク状態の更新と禁止状態の判定とを繰り返して実行する(ST83−1,ST84−1,…,ST83−4,ST84−4)。
【0091】
ステップST84の結果、マスク状態の禁止状態が含まれない場合、CPU4は、段数Nのカウント値Nに1を加算し(ST85)、最後の段か否かを判定し(ST86)、最後の段でなければステップST83に戻り、最後の段であれば、RAM2を参照して選択したマスク状態を出力する(ST87)。
【0092】
(ステップST81の詳細:図5)
ここで、ステップST81におけるマスク状態の選択を詳細に説明する。
【0093】
CPU4は、AESのラウンド鍵更新におけるバイト換字(SubByte)処理で用いるSボックス入力保護マスクのマスク状態を7種のマスク状態の中から1つ選択する(ST81−1)。なお、7種のマスク状態とは、001,010,011,100,101,110,111の状態である。Sボックス入力保護マスクは、4行1列の各要素が同じマスク状態をもつ。
【0094】
また、CPU4は、AESのラウンド鍵更新におけるバイト換字処理で用いるSボックス出力保護マスクのマスク状態を7種のマスク状態の中から1つ選択する(ST81−2)。Sボックス出力保護マスクは、4行1列の各要素が同じマスク状態をもつ。
【0095】
さらに、CPU4は、ラウンド鍵保護マスクにおける1列目のマスク状態として、ステップST81−2で選択したマスク状態と重複しないマスク状態を1つ選択する(ST81−3)。
【0096】
また、CPU4は、ラウンド鍵保護マスクにおける2列目のマスク状態として、「Sボックス出力保護マスク」、「ラウンド鍵保護マスクの1列目」及び「Sボックス出力保護マスクとラウンド鍵保護マスクの1列目とのXOR演算の結果」の合計3種のマスク状態を除く4種のマスク状態から1つ選択する(ST81−4)。
【0097】
さらに、CPU4は、ラウンド鍵保護マスクにおける3列目と4列目のマスク状態を7種のマスク状態の中からそれぞれ選択する(ST81−5)。ラウンド鍵保護マスクは、4行4列の各要素が列毎に異なるマスク状態となる。
【0098】
また、CPU4は、ステップST81−2からST81−5までで決定したSボックス出力保護マスク及びラウンド鍵保護マスクの1〜4列目までの各マスク状態を用いて、ラウンド鍵更新処理後の1〜4列目までのマスク状態をそれぞれ計算する(ST81−6)。なお、ステップST81−6の処理は、前述したステップST83と同様にして実行できる。
【0099】
さらに、CPU4は、ステップST81−6で得られたマスク状態に禁止状態が含まれているか否かを判定し(ST81−7)、含まれている場合にはステップST81−5に戻り、含まれていない場合には処理を終了してステップST82に進む。
【0100】
(マスキング法によるAES暗号処理:図6)
CPU4は、図2に示したように、最初のラウンド鍵配列各要素のマスク状態を決定する(ST81〜ST87)。続いて、CPU4は、少なくとも7乃至それ以上の種別のマスク状態に対応したマスク値を選択し(ST91)、RAM2にマスク状態及びマスク値を格納する。ここで、マスク値の選択は、図7に示すように、基本マスク値A,B,Cをマスク状態に基づいてXOR演算し、得られた合成マスク値を選択するように実行している。ここで、マスク状態をcbaとすると、100,010,001に対応する基本マスク値C,B,Aと、合成マスク値Mとの間には以下の関係がある。
M=c・C(+)b・B(+)a・A
但し、(+):排他的論理和、cba:001〜111のいずれかの値(c,b,aは、それぞれ0又は1)。
【0101】
続いて、CPU4は、選択したマスク値が禁止状態を含むか否かを判定し(ST92)、禁止状態を含む場合にはステップST81に戻り、含まない場合にはAESの暗号処理(ST93)及びラウンド鍵更新処理(ST94)を実行する。
【0102】
(マスク状態の更新結果)
前述した図3中、001,010,011,100,101,110,111はそれぞれ3つの独立な基本マスク値のXORで合成されたSボックス出力保護マスク及びラウンド鍵保護マスクのマスク状態を表す。ラウンド鍵保護マスクでは、例えば、それぞれ0x02, 0x10, 0x12, 0x40, 0x42, 0x50, 又は0x52のマスク値が列毎に割り当てられる。
【0103】
図3のマスク状態の表には、マスク値が0x00に対応する000や、その他0xffなどのマスキング法に適切でないマスク値に対応するマスク状態が登場しない。このため、マスキング法がサイドチャネル攻撃への対策として適切に動作できる。また、ラウンド鍵更新処理において、ラウンド鍵配列の各要素に適用されているマスク値がラウンド鍵配列の更新操作により図3に示すマスク状態に従って自動的に遷移する。ラウンド鍵配列の各要素のマスク値を明示的に変更する従来の方法では、各要素のマスク値の参照が必要である。一方、本実施形態によれば、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がないが、各要素には適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果を得ることができる。
【0104】
上述したように本実施形態によれば、従来のマスキング法と同等のサイドチャネル攻撃への耐性を実現しつつ、少ない個数の乱数によりマスクを生成することから、マスク管理の複雑さを低減でき、列毎に異なるマスク状態を用いることから、ラウンド鍵配列へのマスク値が0になることを阻止することができる。
【0105】
(第2の実施形態)
図8は本発明の第2の実施形態に係る暗号処理装置の動作を説明するためのフローチャートであり、前述した図面と同一部分には同一符号を付してその詳しい説明は省略し、ここでは異なる部分について主に述べる。なお、以下の各実施形態も同様にして重複した説明を省略する。
【0106】
すなわち、本実施形態は、第1の実施形態におけるマスク状態からマスク値を生成するステップST91の変形例である。
【0107】
具体的にはCPU4は、3つの基本マスク値A,B,Cに代えて、1つの基本マスク値としての乱数rを生成する機能と、乱数rから残り2つの基本マスク値2r,4rを算出する機能とを有し、これら3つの基本マスク値r,2r,4rからマスク状態に基づくXOR演算により合成マスク値を生成する機能をもっている。
【0108】
補足すると、CPU4は、マスク値のビット数“n”と同一ビット数の乱数rを生成する機能と、このビット数と同一値の次数であるn次の既約多項式を選択する機能とを備えている。基本マスク値は、乱数rと、乱数rをそれぞれ2倍及び4倍した値2r,4rとである。また、CPU4は、多項式を用いたガロア体GF(2n)のベクトル表現をマスク状態に対応させることにより、合成マスク値を計算する。なお、ここではn=8ビットの場合を例に挙げて述べるが、ビット数nは3≦n≦32の範囲で任意に選択可能である。
【0109】
次に、以上のように構成された暗号処理装置の動作を図8のフローチャートを用いて説明する。
【0110】
いま、前述同様に、図3に示したように、最初のラウンド鍵配列の各要素のマスク状態が決定されたとする(ST81〜ST87)。
【0111】
CPU4は、nビットのマスク用乱数rを生成し(ST91’−1)、n次の既約な多項式を選択する(ST91’−2)。
【0112】
しかる後、CPU4は、この既約多項式を用いて、図9に示すように、少なくとも7乃至それ以上の種別のマスク状態に対応したマスク値を計算し(ST91’−3)、RAM2にマスク状態及びマスク値を格納する。
【0113】
以下、前述同様に、AES暗号処理(ST93)及びラウンド鍵更新処理(ST94)が実行される。
【0114】
(マスク値の生成について)
第1の実施形態では7乃至それ以上の種類のマスク状態のマスク値を生成するためには、少なくとも3種類の異なるマスク値が必要であったのに対して、本実施形態では1種類のマスク値から既約多項式を用いたGF(2n)の多項式計算により、マスク状態に対応するマスク値を生成できる。
【0115】
すなわち、本実施形態では、図3に示したマスク状態を、任意の既約多項式を用いたガロア体GF(2n)のベクトル表現に対応させてマスク値を生成している。この場合、マスク状態001, 010,011, 100, 101, 110, 111は、多項式表現でいえば、それぞれ1,x,x+1,x^2,x^2+1,x^2+x,x^2+x+1に対応する。例えば、8ビットのデータマスクを生成する場合、乱数rが既約多項式 (x^8+x^7+x^5+x^3+x+1) を用いた拡大体GF(28)のベクトル表現に対応させると、乱数rのベクトル表現の16進数表記が0x2C(以下、16進表記の場合には、先頭に0xを用いる)ならば、乱数rに基づき、マスク状態001, 010, 011, 100, 101, 110, 111に対応して生成されるマスク値は、図9に示したように、それぞれ0x2C, 0x58, 0x74, 0xB0, 0x9C, 0xE8, 0xC4となる。
【0116】
また、図3のマスク状態の表には、前述した通り、マスキング法に適切でないマスク状態が登場しないため、マスキング法がサイドチャネル攻撃への対策として適切に動作できる。また同様に、ラウンド鍵更新処理において、ラウンド鍵保護マスクのマスク値が図3に示すマスク状態に従って自動的に遷移する。このため、本実施形態によれば、従来とは異なり、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がない。また、本実施形態によれば、各要素に適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果を得ることができる。
【0117】
上述したように本実施形態によれば、第1の実施形態の効果に加え、乱数rからマスク値を算出するので、第1の実施形態と比較してマスク値の選択が容易となる。
【0118】
また、マスク状態からマスク値を生成する場合、マスク状態とマスク値との関係式を計算して両者の対応表を作成し、7通りのマスク状態に対応するマスク値を参照すればよい。この場合、マスク値そのものを直接計算する場合に比べて、マスクの値にかかわらず処理が同じになるのでサイドチャネル情報の漏洩を抑制でき、サイドチャネル攻撃に対する耐性が高まる。
【0119】
なお、各実施形態における、図3のマスク状態の表は、図8のラウンド鍵更新処理(ST94)において逐次計算する手法や、AES暗号処理(ST93)に先立って暗号化処理を行う鍵長に応じたラウンド鍵のマスク状態の表を作成する手法や、予め暗号処理装置ごとの個別あるいは共通のマスク状態の表を作成しAESの暗号処理中では該表を参照する手法のうち、任意の手法で実現できる。
【0120】
また、各実施形態において、8ビットのデータを説明に用いたが、本発明によるマスキング法は8ビットに限定されない。AESにおいては、ラウンド鍵配列の各要素が8ビットであるため、n=8が適しているが、nは3以上32以下の範囲であれば任意に選択可能である。
【0121】
(第3の実施形態)
次に、本発明の第3の実施形態に係る暗号処理装置について説明する。
【0122】
本実施形態は、第1又は第2の実施形態の変形例であり、ラウンド鍵配列の各要素へのマスク状態の適用方法を複雑にし、サイドチャネル攻撃への耐性の向上を図るものである。
【0123】
具体的には、図10に示すように、使用段1から使用段5までは、Sボックス出力保護マスクのマスク状態に“101”を使用し、使用段6から最終の使用段までは、Sボックス出力保護マスクのマスク状態に“111”を使用する構成となっている。
【0124】
補足すると、本実施形態は、第1又は第2の実施形態を使用段1から使用段5までの1回と、使用段6から最終の使用段までの1回との計2回実行する構成である。このとき、CPU4は、使用段1から使用段5までのSボックス出力保護マスクのマスク状態と、使用段6から最終の使用段までのSボックス出力保護マスクのマスク状態とを互いに異なるマスク状態とするように選択する。但し、前述した2つのマスク状態“101”及び“111”は、一例であってこれに限るものではなく、互いに異なる値であれば、任意のマスク状態をSボックス出力保護マスクに使用可能となっている。
【0125】
マスキング法においては、Sボックス入力保護マスクあるいはSボックス出力保護マスクが異なれば、異なる内容のマスク付Sボックス情報(参照テーブル)が必要となり、記憶領域の必要量が増大するが、サイドチャネル攻撃の適用がより一層困難となり、サイドチャネル攻撃対策としての効果が向上すると考えられる。
【0126】
従って、以上のような構成によれば、第1又は第2の実施形態の効果に加え、サイドチャネル攻撃への耐性を向上させることができる。
【0127】
(第4の実施形態)
次に、本発明の第4の実施形態に係る暗号処理装置について図11を用いて説明する。本実施形態は、第1又は第2の実施形態を192ビット鍵に適用した形態となっている。
【0128】
なお、192ビット鍵のAESでは、図11に示すように、ラウンド鍵配列は4行6列の配列で表現される。これに伴い、CPU4は、ラウンド鍵として192ビット鍵を用いる場合、前述した機能に加え、ラウンド鍵保護マスクの5列目及び6列目のマスク状態を“1000”,“1001”,“1010”,“1011”,“1100”,“1101”,“1110”及び“1111”の8種類のマスク状態からそれぞれ選択する機能と、計算した4列目のマスク状態を用いて、AES暗号方式によるラウンド鍵更新後の5列目及び6列目のマスク状態を計算する機能と、計算した5列目及び6列目のマスク状態に禁止状態“0000”等が含まれるか否かを判定する機能と、8種類のマスク状態のうち、“1000”に対応する基本マスク値をRAM2に書き込む機能と、禁止状態“0000”等が含まれないとき、選択した5列目及び6列目の各マスク状態に対応して各基本マスク値同士を排他的論理和により合成することにより、当該5列目及び6列目の各マスク状態に対応するそれぞれの合成マスク値を計算する機能とを更に備えている。
【0129】
ここで、マスク状態をdcbaとすると、1000,0100,0010,0001に対応する基本マスク値D,C,B,Aと、合成マスク値Mとの間には以下の関係がある。
M=d・D(+)c・C(+)b・B(+)a・A
但し、(+):排他的論理和、dcba:0001〜1111のいずれかの値(d,c,b,aは、それぞれ0又は1)。
【0130】
また、最終の使用段の5列目及び6列目は、使用されないラウンド鍵に対するマスク状態であり、実装形態によっては必要ない。
【0131】
図11中、0001, 0010,0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111は、それぞれ4つの独立な基本マスク値のXORで合成されたSボックス出力保護マスク及びラウンド鍵保護マスクのマスク状態を表している。ラウンド鍵保護マスクでは、例えば図12に示すように、それぞれ0x02, 0x10, 0x12, 0x40, 0x42, 0x50, 0x52, 0x60, 0x62, 0x70, 0x72, 0xA0, 0xA2, 0xB0,又は0xB2のマスク値が列毎に割り当てられる。
【0132】
図11のマスク状態の表には、マスク値が0x00に対応する0000や、その他0xffなどのマスキング法に適切でないマスク値に対応するマスク状態が登場しない。このため、マスキング法がサイドチャネル攻撃への対策として適切に動作できる。また、ラウンド鍵更新処理において、ラウンド鍵配列の各要素に適用されているマスク値がラウンド鍵配列の更新操作により図11に示すマスク状態に従って自動的に遷移する。ラウンド鍵配列の各要素のマスク値を明示的に変更する従来の方法では、各要素のマスク値の参照が必要である。本実施形態によれば、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がないが、各要素には適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果を得ることができる。
【0133】
また、第2の実施形態で示したように、0001から1111までの15個のマスク状態に対応したマスクの生成方法の一例としては、任意の既約多項式を用いたガロア体GF(2n)のベクトル表現に対応させることもできる。この場合、多項式表現でいえば、それぞれ1,x,x+1,x^2,x^2+1,x^2+x,x^2+x+1に対応する。例えば、8ビットのデータマスクを生成する場合、乱数rが既約多項式 (x^8+x^7+x^5+x^3+x+1) を用いた拡大体GF(2n)のベクトル表現に対応させると、乱数rのベクトル表現の16進数表記が0x2Cならば、乱数rに基づき、マスク状態0001, 0010,0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111に対応して生成されるマスク値は、図13に示すように、それぞれ0x2C, 0x58, 0x74, 0xB0, 0x9C, 0xE8, 0xC4, 0x4B, 0x67, 0x13, 0x3F, 0xFB, 0xD7, 0xA3, 0x8Fとなる。なお、図13中、基本マスク値には、乱数rと、乱数rをそれぞれ2倍、4倍及び8倍した値2r,4r,8rとを用いている。
【0134】
いずれにしても、暗号処理装置10は、図12又は図13に示した如き4つの相異なるマスク値に基づき、図11のマスク状態に対応した15種類のマスク値を用いることにより、適切でないマスク値を排除しつつ、効果的なマスキング法を提供することができる。また、図11によるマスク状態の遷移は、図14に示すように、Sボックス出力保護マスク及びラウンド鍵保護マスクの1列目から4列目までは3種類のマスク値から合成されるマスク状態を使用するため、128ビット鍵のAES処理との整合性も高く、複数の鍵長をサポートする暗号処理装置に用いる場合、実装性に優れている。
【0135】
上述したように本実施形態によれば、第1又は第2の実施形態の効果を、4行6列の192ビット鍵においても得ることができる。
【0136】
(第5の実施形態)
次に、本発明の第5の実施形態に係る暗号処理装置について図15を用いて説明する。本実施形態は、第1又は第2の実施形態を256ビット鍵に適用した形態となっている。
【0137】
これに伴い、CPU4は、ラウンド鍵として256ビット鍵を用いる場合、前述したステップST81−3〜ST81−7の処理と、ステップST91,ST92の処理を再度実行することにより、ラウンド鍵保護マスクの5列目から8列目のマスク値を得る機能をもっている。
【0138】
なお、256ビット鍵のAESでは、図15に示すように、ラウンド鍵配列は4行8列の配列で表現される。先に述べたように、256ビット鍵のラウンド鍵更新において5列目の鍵配列の更新には、4列目の鍵配列にバイト換字(SubByte)処理を適用した結果が用いられるため、4列目のマスク状態と5列目のマスク状態との間に、バイト換字(SubByte)処理で使用されるSボックス出力保護マスクのマスク状態を記述する。
【0139】
図15中、001,010,011,100,101,110,111はそれぞれ3つの独立な基本マスク値のXORで合成されたSボックス出力保護マスク及びラウンド鍵保護マスクのマスク状態を表している。ラウンド鍵保護マスクでは、例えば図7又は図9に示したように、それぞれのマスク状態に対応するマスク値が列毎に割り当てられる。
【0140】
また前述同様に、図15のマスク状態の表には、適切でないマスク値に対応するマスク状態が登場しないため、サイドチャネル攻撃への対策として適切に動作できる。また同様に、ラウンド鍵更新処理において、ラウンド鍵保護マスクのマスク値が図15に示すマスク状態に従って自動的に遷移する。このため、本実施形態によれば、従来とは異なり、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がない。また、本実施形態によれば、各要素には適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果が得られる。
【0141】
また、図15によるマスク状態の遷移は、Sボックス出力保護マスク及びラウンド鍵保護マスクには3種類のマスク値から合成されるマスク状態を使用するため、128ビット鍵のAES処理との整合性も高く、複数の鍵長をサポートする暗号処理装置に用いる場合、実装性に優れている。
【0142】
上述したように本実施形態によれば、第1又は第2の実施形態の効果を、4行8列の256ビット鍵においても得ることができる。なお、本実施形態では、3つの相異なるマスク値を用いて各マスク状態に対応したマスク値を生成したが、3つ以上の相異なるマスク値であれば同様の方法により各マスク状態を生成でき、例えば第4の実施形態で例示した4つの相異なるマスクによる生成も、この手法の範疇であることは明らかである。
【0143】
(第6の実施形態)
次に、本発明の第6の実施形態に係る暗号処理装置について図16乃至図18を用いて説明する。本実施形態は、128ビット鍵の場合を代表例に挙げた第1乃至第5の各実施形態の変形例であり、図16及び図17に示すように、使用段1から最終の使用段までのSボックス出力保護マスク(4行1列)の1行目〜4行目のマスク状態を互いに変更すると共に、ラウンド鍵保護マスクの列毎の1行目から4行目のマスク状態を互いに変更した構成となっている。これに伴い、CPU4は、前述したステップST81−2において、Sボックス出力保護マスクの1行目〜4行目のマスク状態を互いに異なる状態として選択する機能と、前述したステップST81−3〜ST81−5において、ラウンド鍵保護マスクの列毎に1行目から4行目のマスク状態を互いに異なる状態として選択する機能とをもっている。なお、図18は図16及び図17に示すマスク状態に対応したマスク値を表している。
【0144】
第1乃至第5の実施形態においては、マスク値の例として、8ビットのマスク値を4つ繰り返し1列に拡大した32ビットマスク値を用いたが、0x00のマスク値を除くと、8ビットのマスク値は255通りに限られ、マスク値のランダム性あるいは多様性が限られている。
【0145】
しかしながら、第6の実施形態によれば、鍵配列の各行ごとに独立な4つのマスク値を選択することにより、マスク値の組み合わせを2554 通り、すなわち1658万1375通りまで増加させることができ、マスキング法によるサイドチャネル攻撃への用途としては十分な多様性を提供できる。
【0146】
上述したように本実施形態によれば、第1乃至第5の各実施形態の効果に加え、Sボックス出力保護マスク及びラウンド鍵保護マスクのマスク値の組み合わせを増加できるため、サイドチャネル攻撃に対する耐性を向上させることができる。
【0147】
なお、Sボックス出力保護マスクのマスク値の4バイトは独立な値のため、そのまま実装すると4倍の数のマスク付Sボックス情報が必要となるが、図16及び図17のSボックス出力保護マスクのマスク値とは異なる8ビットのマスク値を4つ繰り返すマスク値をSボックス出力保護マスクに用い、その出力に固有のマスク値をそれぞれ適用することにより、図16乃至図18に示すSボックス出力保護マスクのマスク値に変換する実装も、本実施形態の範囲内にある。
【0148】
(第7の実施形態)
次に、本発明の第7の実施形態に係る暗号処理装置について図19及び図20を用いて説明するが、その前に背景技術を述べる。
【0149】
AES暗号方式のデータ暗号化部においては、4行4列で表される中間状態を各列単位でバイト換字(SubByte)処理、ミックスカラム(MixColumn)処理を行い、新しい中間状態の1列を計算する処理を繰り返し、4列の変換を実現する。
【0150】
ここで、サイドチャネル攻撃においては、相似関係にある処理を異なる値を用いて実行する場合、特に攻撃が容易となることが知られている。
【0151】
従来の技術によれば、4行4列の内部状態をそれぞれ異なるマスク値で撹乱することにより、サイドチャネル攻撃への対策を行う。従来の技術を図31により説明すると、内部状態行列のy(i,j) (+) r(i,j)は、AESの内部状態のi行j列目に格納されているデータであり、記号(+)は排他的論理和であり、y(i,j)はi行j列目の真の内部状態の成分に、r(i,j)は、i行j列目のマスク値の成分にそれぞれ対応する。
【0152】
バイト換字処理においては、4行4列の内部状態の要素毎に異なるマスク値が使用されているため、延べ16個のSボックス情報に個別のマスク値を使用したマスク付きSボックス情報が必要となる。この場合、16種類の異なるマスクのSボックス情報を実現するためには、例えば、RAMに格納すると8キロバイトの記憶容量が必要になり、ハードウェア規模の増大が課題となる。以上が本実施形態の背景技術である。
【0153】
本実施形態は、第1〜第6の各実施形態と同時に実行可能であって、マスク付バイト換字(SubByte)処理に必要な記憶容量の低減を図るものであり、図19に示すように、Sボックス入力保護マスク及びSボックス出力保護マスクをそれぞれ2種類のマスク値rA,rBから構成し、図20に示すように、CPU4がマスク状態に基づいてSボックス入力保護マスクの付加及びSボックス出力保護マスクの除去を各マスク値rA,rBのXOR演算により実行する構成となっている。
【0154】
補足すると、RAM2には、図19に示す如き、Sボックス入力保護マスク及びSボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値rAと、当該マスク状態の各ビット値“1”に対応する第2マスク値rBとを互いに関連付けた参照表データが記憶されている。
【0155】
CPU4は、選択したSボックス入力保護マスク及びSボックス出力保護マスクのマスク状態に基づいて、RAM2内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して第1マスク値rA又は第2マスク値rBを選択する機能とをもっている。
【0156】
ここで、図20に示す内部状態行列のy(i,j) (+) r(j)は、AESの内部状態のi行j列目に格納されているデータであり、記号(+)は排他的論理和であり、y(i,j)はi行j列目の真の内部状態の成分に、r(j)は、j列目のマスク値の成分にそれぞれ対応する。
【0157】
マスク値は、CPU4がマスク状態に基づいて図19の参照表データを参照することにより、決定される。具体的には、CPU4は、マスク状態0000から1111までの16種類のマスク状態に対応して、r(1)からr(4)までの各列の4つのマスク値にrA又はrBを選択し、列毎にSボックス入力保護マスク及び/又はSボックス出力保護マスクのマスク値を変更する。これにより、相似した処理で参照されるマスクされたSボックス情報の表が、列毎に2種類の表から選択されるため、任意の列の間においてSボックス情報のマスク値が一致する確率が2分の1となる。
【0158】
第2から第6の実施形態においては、3つ又は4つの基本マスク値から合成された7種類又は15種類のマスク値をラウンド鍵へのマスキング法に用いている。一方、AESの暗号処理においては、マスク付バイト換字処理のSボックス情報の参照において図19のマスク状態に対応したマスク値に変更する。
【0159】
上述したように本実施形態によれば、1つ又は2つの基本マスク値rA,rBをSボックス入力保護マスクあるいはSボックス出力保護マスクのマスク値に用い、CPU4による選択処理で切り替えることにより、処理あるいはラウンド毎に且つ列毎にSボックス保護マスクのマスク値を変化させることができ、サイドチャネル攻撃に有効な情報の漏洩を低減でき、安全性が高まる効果がある。
【0160】
以上説明した各実施形態ではAESの暗号化処理の処理手順をもって説明したが、暗号化処理と対称をなす復号処理に対しても、当業者であれば上述の実施形態の種々の変形を行えることは明らかである。
【0161】
また、各実施形態のうち、データ暗号化部に関する第7の実施形態は、AES暗号方式に限らず、例えばISO/IEC 10118−3に記載のワープールWhirlpoolのように、AES暗号方式と類似したアルゴリズムについても適用可能となっている。ここで、ワープールWhirlpoolは、AES暗号方式に類似したデータ暗号化部を有しており、鍵スケジュール部が無い構成となっている。これに伴い、第7の実施形態は、ワープールWhirlpoolにも適用可能となっている。
【0162】
ワープールWhirlpoolに関する変形例は、図1に示す暗号処理プログラムを、Sボックス入力保護マスク及びSボックス出力保護マスクを用い、ISO/IEC 10118−3に記載のワープールWhirlpoolを実行する暗号処理装置のプログラムとすればよい。このプログラムの実行により、CPU4は、Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択機能と、選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、Sボックス出力保護マスクのマスク状態として7種類のマスク状態から選択する出力選択機能と、Sボックス入力保護マスク及びSボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けた参照表データをRAM2に書き込む機能と、入力選択機能及び出力選択機能により選択したマスク状態に基づいて、RAM2内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して第1マスク値又は第2マスク値を選択するマスク値選択機能とを備えている。このワープールWhirlpoolに関する変形例によれば、第7の実施形態と同様に、処理あるいはラウンド毎に且つ列毎にSボックス保護マスクのマスク値を変化させることができ、サイドチャネル攻撃に有効な情報の漏洩を低減でき、安全性が高まる効果がある。
【0163】
また、各実施形態は、暗号処理を実行するデバイス、例えば暗号処理モジュールを持つICカードあるいはその他の暗号処理装置に適用可能である。また、各実施形態の構成を適用することにより、電力解析によるICモジュール内の暗号処理鍵やアルゴリズムの漏洩が困難となるので、セキュリティレベルの高い暗号処理実行機能を持つデバイスあるいは装置を提供することができる。
【0164】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0165】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0166】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
【0167】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【0168】
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0169】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0170】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0171】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【0172】
【図1】本発明の第1の実施形態に係る暗号処理装置の構成を示す模式図である。
【図2】同実施形態における動作を説明するためのフローチャートである。
【図3】同実施形態におけるマスク状態を示す図である。
【図4】同実施形態における動作を説明するためのフローチャートである。
【図5】同実施形態における動作を説明するためのフローチャートである。
【図6】同実施形態における動作を説明するためのフローチャートである。
【図7】同実施形態におけるマスク値の演算を説明するための模式図である。
【図8】本発明の第2の実施形態に係る暗号処理装置の動作を説明するためのフローチャートである。
【図9】同実施形態におけるマスク値の演算を説明するための模式図である。
【図10】本発明の第3の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図11】本発明の第4の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図12】同実施形態におけるマスク値の演算を説明するための模式図である。
【図13】同実施形態におけるマスク値の演算を説明するための模式図である。
【図14】同実施形態における動作を説明するためのフローチャートである。
【図15】本発明の第5の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図16】本発明の第6の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図17】同実施形態における暗号処理装置のマスク状態を示す図である。
【図18】同実施形態における暗号処理装置のマスク値を示す図である。
【図19】本発明の第7の実施形態に係る暗号処理装置のマスク値を示す図である。
【図20】同実施形態における動作を説明するための模式図である。
【図21】AES暗号方式における一般的な暗号処理を説明するためのフローチャートである。
【図22】AES暗号方式における128ビット鍵の一般的な更新処理を説明するためのフローチャートである。
【図23】AES暗号方式における192ビット鍵の一般的な更新処理を説明するためのフローチャートである。
【図24】AES暗号方式における256ビット鍵の一般的な更新処理を説明するためのフローチャートである。
【図25】AES暗号方式におけるマスキング法を用いた暗号処理を説明するためのフローチャートである。
【図26】同マスキング法におけるマスク付Sボックス情報を説明するための模式図である。
【図27】AES暗号方式のマスキング法による128ビット鍵の更新処理を説明するためのフローチャートである。
【図28】AES暗号方式のマスキング法による128ビット鍵の更新処理を説明するためのフローチャートである。
【図29】AES暗号方式のマスキング法による192ビット鍵の更新処理を説明するためのフローチャートである。
【図30】AES暗号方式のマスキング法による256ビット鍵の更新処理を説明するためのフローチャートである。
【図31】従来のマスキング法によるマスク付加後のラウンド鍵配列の状態を表す模式図である。
【符号の説明】
【0173】
10…暗号処理装置、1…ROM、2…RAM、3…不揮発性メモリ、4…CPU、5…入出力部、6…バス。
【技術分野】
【0001】
本発明は、暗号処理装置及びプログラムに係り、例えば電力解析による解読に対する耐性を向上し得る暗号処理装置及びプログラムに関する。
【背景技術】
【0002】
一般に、データの暗号化や認証などの暗号処理を実行するコンピュータとしては、パーソナルコンピュータが広く知られており、他には、スマートカードあるいはICカードと呼ばれ、ICモジュールを搭載したカード形状のデバイスが知られている。
【0003】
この種の暗号処理には、DES(data encryption standard)及びトリプル(triple)DES(例えば、非特許文献1参照。)や、非特許文献2に挙げられるAES(advance encryption standard)(例えば、非特許文献2参照。)などの共通鍵暗号アルゴリズムや、任意の公開鍵暗号アルゴリズムが用いられる。
【0004】
これらの暗号技術に対する暗号解読の方法として、暗号文等の入手可能な情報から、平文や秘密鍵等の秘密情報を回復する技術がある。係る暗号解読の技術では、秘密鍵の回復が可能であるか否かが安全性評価の指標としてよく用いられる。暗号解読に用いる情報としては、暗号文等の入手可能な情報に限らず、特定したい秘密鍵とは値が異なる鍵を用いた情報も使用可能である。すなわち、重要な秘密鍵の値を特定するため、ユーザが任意の鍵の組み合わせで暗号処理装置を使用し、得られた情報から目的の秘密鍵を特定するという解読手法も考えられる。
【0005】
この解読手法の一例としては、電力解析攻撃が知られている(例えば、非特許文献3参照。)。電力解析攻撃は、パーソナルコンピュータ又はICカード等のデバイスに搭載された暗号処理装置のハードウェア又はソフトウェアが暗号処理の内容と消費電力との間に相関を持つことに着目し、観測した消費電力の情報から内部の秘密鍵や平文に関する情報を推定する手法である。電力解析には、単純電力解析(以下、SPAという)と差分電力解析(以下、DPAという)が含まれる。SPAは暗号処理の電力消費の特徴を抽出して解読に役立てる方法であり、DPAはデータ毎に僅かに異なる暗号処理中の消費電力間の差分や相関を利用して解読する方法である。
【0006】
従来の電力解析への対策法としては、ノイズ発生器により暗号処理の電力消費量の測定を撹乱し、測定精度を悪化させる方法や、トランジスタや配線の改良により処理に関する電力消費の変動を測定困難なレベルに抑える方法や、暗号アルゴリズムの実装に対策を施し電力解析による解読を困難にする方法などが提案されている。
【0007】
暗号アルゴリズムの実装に対策を施した手法としては、いわゆるマスキング法が広く知られている(例えば非特許文献4参照。)。マスキング法とは、処理内容と消費電力との相関を利用する電力解析の原理に着目し、処理するデータにマスクと呼ばれる乱数Rを適用し、消費電力を擾乱して解析を困難にする方法である。具体的には、暗号処理装置は、内部データDに乱数Rを排他的論理和演算(XOR)して得られた内部データD’=D xor Rを暗号処理することにより、消費電力を擾乱する。また、Sボックス(以下、S-boxともいう)と呼ばれる非線形置換においては、入力と出力にそれぞれマスクを適用して変形された置換テーブルが用いられる。
【0008】
なお、マスキング法は、マスクによる方法に限らず、例えば加減算による手法や、内部データに冗長な表現を用い、一部のビットを乱数で置換して暗号処理と消費電力との相関を撹乱する手法などもある。
【0009】
また、暗号解読の分野では、消費電力を観測する電力解析攻撃を含む概念として、消費電力等の暗号処理に関する情報を観測する攻撃方法を総称してサイドチャネル攻撃と呼ぶ。観測される情報は、サイドチャネル情報とも呼ばれ、例えば消費電力以外にも、処理時間のわずかな変動や、デバイスから放出される熱線量の変動、放射される電界や磁界など、さまざまなものがある。
【0010】
また、マスキング法は内部データを秘匿してサイドチャネル情報を擾乱するため、暗号処理装置に異常を与えて誤動作させた結果からサイドチャネル情報を得る故障利用攻撃あるいは差分的故障利用攻撃に対する対策として有効な場合もある。
【0011】
このようなマスキング法は、DES及びトリプルDESに対しては、比較的容易に適用可能である。例えば、DES及びトリプルDESにおいては、秘密の鍵から副鍵を生成する鍵スケジュール部ではビット間の演算が行われず、一度マスクを適用すると、意図的に除去するまで適用されたままとなるので、マスクの管理が容易である。一方、平文に副鍵を適用して暗号文を計算するデータ暗号化部については、8種類の異なるSボックスを使用するものの、1つあたり6ビット入力4ビット出力と、規模が小さいためそれぞれに別々の乱数によるマスクを用いたマスキング法の適用が容易である。
【0012】
しかしながら、DES及びトリプルDESの後継技術であるAESの場合、鍵スケジュール部、データ暗号化部のいずれにおいても回路規模あるいは使用リソースの増大・制御の複雑さといったことから、マスクの管理が複雑となる問題がある。
【0013】
(一般的なAES暗号化処理:図21)
図21はAES暗号方式による一般的な暗号化処理を説明するためのフローチャートである。いま、暗号処理装置では、操作者の操作により、AES暗号化処理プログラムが起動され、不揮発性メモリに記憶されていたラウンド鍵がラウンド鍵配列に書き込まれたとする(ST1)。また、暗号処理装置では、操作者の操作により、128ビットの平文データがRAMに書き込まれた後(ST2)、暗号化要求が入力されたとする。
【0014】
暗号処理装置は、この暗号化要求を受けると、段数(ラウンド数)Nを1に設定し(ST3)、AES暗号方式の仕様に基づいた繰り返し処理として、N段目の暗号化処理を開始する(ST4)。AES暗号方式では、128ビット鍵の場合には10回の繰り返し処理を実行し、192ビット鍵の場合には12回の繰り返し処理を実行し、256ビット鍵の場合には14回の繰り返し処理を実行する。繰り返される処理の一単位は、一般に、「段」又は「ラウンド」と呼ばれる。
【0015】
1段の処理においては、暗号処理装置は内部状態配列の記憶内容に対し、ラウンド鍵配列内のラウンド鍵を加算する鍵加算(AddRoundKey)処理を実行する(ST5)。
【0016】
鍵加算処理の後、暗号処理装置は、4行4列の内部状態配列の記憶内容に対し、Sボックスを参照しながらバイト換字変換(SubByte)処理を実行して16個のバイト換字変換結果を得ると(ST6)、バイト換字変換結果をRAMの内部状態配列に書き込む。
【0017】
続いて、暗号処理装置は、内部状態配列の記憶内容を並べ替え(ShiftRow)処理し(ST7)、得られた内部データの列毎にミックスカラム変換処理を実行する(ST8)。
【0018】
全ての列にミックスカラム変換処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST9)、段数Nを+1増加し(ST10)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST11)、最後の段でない場合にはステップST4に戻って暗号化処理を繰り返す。
【0019】
一方、最後の段の場合には、ラウンド鍵更新及び鍵加算処理を実行した後、得られた暗号文データを出力して暗号化処理を終了する。
【0020】
以上が一般的なAES暗号化処理の手順であるが、データの整合性に矛盾を来たさない範囲で処理の順序も入れ替え可能である。例えば、ステップST1とST2とは入れ替え可能である。
【0021】
また、AES暗号方式による復号処理は、図21に示したフローチャートの各部において逆の変換を行いつつ、逆の手順で実行し、入力された鍵と暗号文に対応した平文を出力する。
【0022】
次に、図22乃至図24を用い、128ビット鍵、192ビット鍵及び256ビット鍵の鍵長におけるAESの暗号化処理のラウンド鍵更新の処理を説明する。
【0023】
(128ビット鍵の更新処理:図22)
暗号処理装置は、128ビットの鍵を4行4列のラウンド鍵配列に書き込み(ST21)、段数Nを1に設定し(ST22)、N段目のラウンド鍵の更新処理を開始する(ST23)。
【0024】
暗号処理装置は、ラウンド鍵配列の4列目の4バイトにAESの仕様で定められた並べ替え(RotWord)処理、Sボックス情報によるバイト換字(SubByte)処理、鍵定数とのXOR(排他的論理和演算)処理、を実行し、作業変数Vを作成する(ST24)。
【0025】
しかる後、暗号処理装置は、作業変数Vをラウンド鍵配列の1列目にXOR処理して当該1列目の4バイトを更新する(ST25)。そして、暗号処理装置は、更新された1列目の4バイトをラウンド鍵配列の2列目にXOR処理して当該2列目を更新し(ST26)、以下、順次同様に、更新後の2列目の4バイトを3列目にXOR処理して当該3列目を更新し(ST27)、更新された3列目の4バイトを4列目にXOR処理して当該4列目を更新する(ST28)。
【0026】
全ての列にXOR処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST29)、段数Nを+1増加し(ST30)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST31)、最後の段でない場合にはステップST23に戻ってラウンド鍵の更新処理を繰り返す。
一方、最後の段の場合には、ラウンド鍵の更新処理を終了する。
【0027】
128ビット鍵のAESの暗号処理は10ラウンドでラウンド鍵を11回使用する。ラウンド鍵更新は2回目以降のラウンド鍵使用の前に必要なため、10回のラウンド鍵更新が行われる。
【0028】
(192ビット鍵の更新処理:図23)
暗号処理装置は、192ビットの鍵を4行6列のラウンド鍵配列に書き込み(ST41)、段数Nを1に設定し(ST42)、N段目のラウンド鍵の更新処理を開始する(ST43)。
【0029】
暗号処理装置は、ラウンド鍵配列の6列目の4バイトにAESの仕様で定められた並べ替え(RotWord)処理、バイト換字(SubByte)処理、鍵定数とのXOR(排他的論理和演算)処理、を実行し、作業変数Vを作成する(ST44)。
【0030】
しかる後、暗号処理装置は、作業変数Vをラウンド鍵配列の1列目にXOR処理して当該1列目の4バイトを更新する(ST45)。そして、暗号処理装置は、更新された1列目の4バイトをラウンド鍵配列の2列目にXOR処理して当該2列目を更新し(ST46)、以下、順次同様に、更新後の2列目の4バイトを3列目にXOR処理して当該3列目を更新し(ST47)、更新された3列目の4バイトを4列目にXOR処理して当該4列目を更新し(ST48)、更新後の4列目の4バイトを5列目にXOR処理して当該5列目を更新し(ST49)、更新後の5列目の4バイトを6列目にXOR処理して当該6列目を更新する(ST50)。
【0031】
全ての列にXOR処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST51)、段数Nを+1増加し(ST52)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST53)、最後の段でない場合にはステップST43に戻ってラウンド鍵の更新処理を繰り返す。
一方、最後の段の場合には、ラウンド鍵の更新処理を終了する。
【0032】
なお、ラウンド鍵配列は4行6列であるが、AESの暗号化処理の1ラウンドでは4行4列しか用いないため、暗号化処理の3ラウンドにつき2回のラウンド鍵更新処理を行い、ラウンド鍵を分配する。
【0033】
192ビット鍵のAESの暗号処理は12ラウンドでラウンド鍵を13回使用する。ラウンド鍵更新は2ラウンド目以降のラウンド鍵使用の前に必要であり、8回のラウンド鍵更新が行われる。
【0034】
(256ビット鍵の更新処理:図24)
暗号処理装置は、256ビットの鍵を4行8列のラウンド鍵配列に書き込み(ST61)、段数Nを1に設定し(ST62)、N段目のラウンド鍵の更新処理を開始する(ST63)。
【0035】
暗号処理装置は、ラウンド鍵配列の8列目の4バイトにAESの仕様で定められた並べ替え(RotWord)処理、バイト換字(SubByte)処理、鍵定数とのXOR(排他的論理和演算)処理、を実行し、作業変数Vを作成する(ST64)。
【0036】
しかる後、暗号処理装置は、作業変数Vをラウンド鍵配列の1列目にXOR処理して当該1列目の4バイトを更新する(ST65)。そして、暗号処理装置は、更新された1列目の4バイトをラウンド鍵配列の2列目にXOR処理して当該2列目を更新し(ST66)、以下、順次同様に、更新後の2列目の4バイトを3列目にXOR処理して当該3列目を更新し(ST67)、更新後の3列目をバイト換字(SubByte)処理してから4列目にXOR処理して当該4列目を更新し(ST68)、更新後の4列目を5列目にXOR処理して当該5列目を更新し(ST69)、更新後の5列目を6列目にXOR処理して当該6列目を更新し(ST70)、更新後の6列目を7列目にXOR処理して当該7列目を更新し(ST71)、更新後の7列目を8列目にXOR処理して当該8列目を更新する(ST72)。
【0037】
全ての列にXOR処理を実行すると、暗号処理装置は、N段目の暗号化処理を終了し(ST73)、段数Nを+1増加し(ST74)、AES暗号方式の仕様に定められた最後の段か否かの判定を行い(ST75)、最後の段でない場合にはステップST63に戻ってラウンド鍵の更新処理を繰り返す。
一方、最後の段の場合には、ラウンド鍵の更新処理を終了する。
【0038】
なお、ラウンド鍵配列は4行8列であるが、AESの暗号化処理の1ラウンドでは4行4列しか用いないため、暗号化処理の2ラウンドにつき1回のラウンド鍵更新処理を行い、ラウンド鍵を分配する。
【0039】
256ビット鍵のAESの暗号処理は14ラウンドでラウンド鍵を15回使用する。ラウンド鍵更新は3ラウンド目以降、2段ごとのラウンド鍵使用の前に必要であり、7回のラウンド鍵更新が行われる。
【0040】
(マスキング法によるAES暗号化処理:図25)
続いて、マスキング法を用いたAES暗号化処理について説明する。
【0041】
マスキング法を用いた暗号化処理は、図21に示した暗号化処理に対し、ステップST2で書き込んだ内部状態配列にAES内部データ保護マスクをXOR(により付加)する処理(ST2−2)を有する点と、前述したバイト換字処理に代えて、マスク付バイト換字(SubByte)処理(ST6’)を用いる点と、前述したミックスカラム変換処理に代えて、マスク付ミックスカラム(SubByte)変換処理(ST8’)を用いる点と、出力する暗号化データからAES内部データ保護マスクをXOR(により除去)する処理(ST12)を有する点とが異なる。
【0042】
なお、ステップST6’のマスク付バイト換字処理は、4行4列のSボックス入力保護マスクをXOR(により付加)する処理と、4行4列のラウンド鍵保護マスクをXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理と、4行4列のAES内部データ保護マスクをXOR(により付加)する処理と、4行4列のSボックス保護マスクをXOR(により除去)する処理とを順次、実行するものである。ここで、マスク付Sボックス情報は、図26に示すように、通常のSボックス情報の前段にSボックス入力保護マスクがXORにより付加され、且つ当該Sボックス情報の後段にSボックス出力保護マスクがXORにより付加されるように、通常のSボックス情報が変形されてなるSボックス情報である。なお、Sボックス入力保護マスク及びSボックス出力保護マスクは、それぞれ4行4列の各要素にて互いに同一のマスク値が用いられている。
【0043】
ステップST6’のマスク付バイト換字(SubByte)処理は、4行4列のSボックス入力保護マスクをXOR(により付加)する処理と、4行4列のラウンド鍵保護マスクをXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理と、4行4列のAES内部データ保護マスクをXOR(により付加)する処理と、4行4列のSボックス保護マスクをXOR(により除去)する処理とを順次、実行するものである。
【0044】
ステップST8’のマスク付ミックスカラム(MixColumn)変換処理は、4行4列のミックスカラム入力保護マスクをXOR(により付加)する処理と、4行4列のラウンド鍵保護マスクをXOR(により除去)する処理と、ミックスカラム(MixColumn)変換処理と、4行4列のミックスカラム出力をXOR(により付加)する処理と、4行4列のAES内部データ保護マスクをXOR(により除去9する処理とを順次、実行するものである。
【0045】
以上のように、マスキング法を用いたAES暗号化処理においては、マスクが付加された状態で内部データが暗号化されている。また、ステップST1のラウンド鍵にもマスキング法により、マスクが付加されている。続いて、このマスキング法によるラウンド鍵の更新処理について、128ビット鍵、192ビット鍵及び256ビット鍵の順に述べる。
【0046】
(マスキング法による128ビット鍵の更新処理:図27、図28)
マスキング法による128ビット鍵の更新処理は、図22に示した更新処理に対し、ステップST21で書き込んだラウンド鍵配列にラウンド鍵保護マスクをXOR(により付加)する処理(ST21−2)を有する点と、前述した作業変数V作成処理に代えて、マスク付作業変数V作成処理(ST24’)を用いる点と、列毎の更新処理(ST25,ST26,ST27,ST28)の後段にそれぞれマスク変更処理(ST25−2,ST26−2,ST27−2,ST28−2)を有する点とが異なる。
【0047】
なお、ステップST24’のマスク付作業変数作成処理は、ラウンド鍵の4列目に対し、Sボックス入力保護マスクの4列目をXOR(により付加)する処理と、ラウンド鍵保護マスクの4列目をXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理により1列の作業変数Vを作成する処理とを順次、実行するものである。
【0048】
ステップST25−2のマスク変更処理は、ラウンド鍵の更新後の1列目に対し、ラウンド鍵保護マスクの1列目をXOR(により付加)する処理と、Sボックス出力保護マスクの1列目をXOR(により除去)する処理とを順次、実行するものである。
【0049】
ステップST26−2のマスク変更処理は、ラウンド鍵の更新後の2列目に対し、乱数R1をXOR(により付加)する処理と、ラウンド鍵保護マスクの1列目をXOR(により除去)する処理と、乱数R1をXOR(により除去)する処理とを順次、実行するものである。
【0050】
以下同様に、ステップST27−2,ST28−2のマスク変更処理は、ラウンド鍵の更新後のn列目に対し、乱数R(n−1)をXOR(により付加)する処理と、ラウンド鍵保護マスクの(n−1)列目をXOR(により除去)する処理と、乱数R(n−1)をXOR(により除去)する処理とを順次、実行するものである。
【0051】
以上のように、マスキング法を用いた128ビット鍵の更新処理においては、マスクが付加された状態でラウンド鍵が更新されている。
【0052】
(マスキング法による192ビット鍵の更新処理:図29)
マスキング法による192ビット鍵の更新処理は、図23に示した更新処理に対し、ステップST41で書き込んだラウンド鍵配列にラウンド鍵保護マスクをXOR(により付加)する処理(ST41−2)を有する点と、前述した作業変数V作成処理に代えて、マスク付作業変数V作成処理(ST44’)を用いる点と、列毎の更新処理(ST45〜ST50)の後段にそれぞれマスク変更処理(ST45−2〜ST50−2)を有する点とが異なる。
【0053】
ステップST44’のマスク付作業変数作成処理は、ラウンド鍵の6列目に対し、Sボックス入力保護マスクの6列目をXOR(により付加)する処理と、ラウンド鍵保護マスクの6列目をXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理により1列の作業変数Vを作成する処理とを順次、実行するものである。
【0054】
ステップST45−2のマスク変更処理は、ラウンド鍵の更新後の1列目に対し、ラウンド鍵保護マスクの1列目をXOR(により付加)する処理と、Sボックス出力保護マスクの1列目をXOR(により除去)する処理とを順次、実行するものである。
【0055】
ステップST46−2のマスク変更処理は、ラウンド鍵の更新後の2列目に対し、乱数R1をXOR(により付加)する処理と、ラウンド鍵保護マスクの1列目をXOR(により除去)する処理と、乱数R1をXOR(により除去)する処理とを順次、実行するものである。
【0056】
以下同様に、ステップST47−2〜ST50−2のマスク変更処理は、ラウンド鍵の更新後のn列目に対し、乱数R(n−1)をXOR(により付加)する処理と、ラウンド鍵保護マスクの(n−1)列目をXOR(により除去)する処理と、乱数R(n−1)をXOR(により除去)する処理とを順次、実行するものである。
【0057】
以上のように、マスキング法を用いた192ビット鍵の更新処理においては、マスクが付加された状態でラウンド鍵が更新されている。
【0058】
(マスキング法による256ビット鍵の更新処理:図30)
マスキング法による192ビット鍵の更新処理は、図24に示した更新処理に対し、ステップST61で書き込んだラウンド鍵配列にラウンド鍵保護マスクをXOR(により付加)する処理(ST61−2)を有する点と、前述した作業変数V作成処理に代えて、マスク付作業変数V作成処理(ST64’)を用いる点と、列毎の更新処理(ST65〜ST72)の後段にそれぞれマスク変更処理(ST65−2〜ST72−2)を有する点とが異なる。
【0059】
ステップST64’のマスク付作業変数作成処理は、ラウンド鍵の8列目に対し、Sボックス入力保護マスクの8列目をXOR(により付加)する処理と、ラウンド鍵保護マスクの8列目をXOR(により除去)する処理と、マスク付Sボックス情報を参照したバイト換字(SubByte)処理により1列の作業変数Vを作成する処理とを順次、実行するものである。
【0060】
ステップST65−2のマスク変更処理は、ラウンド鍵の更新後の1列目に対し、ラウンド鍵保護マスクの1列目をXOR(により付加)する処理と、Sボックス出力保護マスクの1列目をXOR(により除去)する処理とを順次、実行するものである。
【0061】
ステップST66−2のマスク変更処理は、ラウンド鍵の更新後の2列目に対し、乱数R1をXOR(により付加)する処理と、ラウンド鍵保護マスクの1列目をXOR(により除去)する処理と、乱数R1をXOR(により除去)する処理とを順次、実行するものである。
【0062】
以下同様に、ステップST67−2〜ST72−2のマスク変更処理は、ラウンド鍵の更新後のn列目に対し、乱数R(n−1)をXOR(により付加)する処理と、ラウンド鍵保護マスクの(n−1)列目をXOR(により除去)する処理と、乱数R(n−1)をXOR(により除去)する処理とを順次、実行するものである。
【0063】
以上のように、マスキング法を用いた256ビット鍵の更新処理においては、マスクが付加された状態でラウンド鍵が更新されている。
【0064】
(マスキング法によるマスク値)
次に、以上のようなラウンド鍵へのマスキング法の適用について説明する。図31は、従来のマスキング法によるマスクを付加された後(ST21−2の後)のラウンド鍵配列の状態を表す。128ビット鍵のAESの暗号処理のラウンド鍵更新処理において、ラウンド鍵配列の1行2列目の要素をy(1,2)からy’(1,2)に更新する場合を例とすると、y’(1,2)は、y(1,1)とy(1,2)を用いて、y’(1,2) = y(1,1) XOR y(1,2)により更新される。
【0065】
マスキング法によりラウンド鍵配列i行j列目の各要素の真の値y(i,j)に乱数r(i,j)が用いられていたとすると、ラウンド鍵配列の1行1列目と1行2列目の各要素のマスクが付加された値は、それぞれ y(1,1) XOR r(1,1) と y(1,2) XOR r(1,2) であり、更新結果は、y’(1,2) XOR r(1,1) XOR r(1,2) = (y(1,1) XOR r(1,1)) XOR (y(1,2) XOR r(1,2)) となり、更新前の1行1列目と1行2列目のマスクのXORされた結果が、更新後の1行2列目の要素へのマスクとなる。同様に、i×j個の各要素について更新処理が行われる。
【0066】
ここで、AESの処理は8ビットを処理単位とするため、マスクを同様に8ビットで考えると、マスク値は256通りである。128ビット鍵を用いたAESのラウンド鍵更新では上述の更新処理が4×4=16回行われる。マスク値が一様ランダムであると仮定すると、パースデーパラドックスの定理により、約50%の確率で更新されたマスク値が0となる問題が知られている。
【0067】
この対策として、AES処理の前にラウンド鍵更新の方法に従って、マスク値をそれぞれ計算し、マスク値が0とならないことを保証する方式が考えられる。しかしながら、この方式は、ランダムかつ重複なくマスク値を選択した場合、10回繰り返しても、無視できない5〜10%以上の確率でマスク値0が発生するため、検査に時間を要する問題がある。
【0068】
マスキング法の別の方式として、1行2列目の要素のマスクをr(1,2)のまま変更しないで更新する方法が知られている。この場合には、y’(1,2) XOR r(1,2) = (y(1,1) XOR r(1,1)) XOR (y(1,2) XOR r(1,2)) XOR r(1,1)の演算を行う。この方法では、上述のマスク値が0となる可能性をかなり低減できるが、ラウンド鍵配列の各要素の更新時にそれぞれ1回のXOR演算が増加してしまう。
【0069】
また一方、AESの場合、前述したように、回路規模あるいは使用リソースの増大・制御の複雑さといったことから、マスクの管理が複雑となる問題がある。例えばデータ暗号化部では1段の処理で8ビット入力8ビット出力のSボックスが16個使用される。それぞれ別々の乱数によりマスクを用いると、回路規模あるいは実現ソフトウェアのコード規模と使用メモリ量の増大が見込まれる。一般的な見積もりでは、DES及びトリプルDESと比較すると16倍のメモリ量が必要となる。また、鍵スケジュール部においては、最大で4段カスケード接続XORあるいは4入力1出力のXOR演算が必要となる。
【0070】
このように、AESの場合、それぞれ別々の乱数によるマスクを用いると、マスクの管理が複雑となる問題が発生する。
【非特許文献1】米国標準技術研究所 (National Institute of Standards and Technology): "Data Encryption Standard(DES)", Federal Information Processing Standards 46-3, 1999
【非特許文献2】米国標準技術研究所 (National Institute of Standards and Technology): "Advanced Encryption Standard", Federal Information Processing Standards 197, 2001
【非特許文献3】Paul Kocher, Joshua Jaffe, and Benjamin Jun, "Differential Power Analysis" in proceedings of Advances in Cryptology -- CRYPTO'99, Springer-Verlag, pp.388-397, 1999
【非特許文献4】Tomas Messerges, "Securing the AES Finalists Against Power Analysis Attacks," in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, 2000.
【非特許文献5】ISO/IEC 10118-3
【非特許文献6】“WHIRLPOOL”, 英語版Wikipedia, http://en.wikipedia.org/wiki/WHIRLPOOL
【発明の開示】
【発明が解決しようとする課題】
【0071】
以上説明したように、従来のマスキング法をAES暗号方式にそのまま適用した場合、ラウンド鍵配列へのマスク値が0となる問題や、マスク管理が複雑になる問題が生じてしまう。このような問題は、AES暗号方式に限らず、例えばAESの4×4の内部状態に類似した8×8の内部状態をもつワープール(Whirlpool)(例えば、非特許文献5,6参照。)にも同様に存在すると考えられる。
【0072】
本発明は上記実情を考慮してなされたもので、ラウンド鍵配列へのマスク値が0になることを阻止でき、且つマスク管理の複雑化を低減し得る暗号処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0073】
第1の発明は、ラウンド鍵保護マスク、Sボックス入力保護マスク及びSボックス出力保護マスクを用いてAES暗号方式を実行する暗号処理装置であって、前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段と、前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段と、前記選択されたSボックス出力保護マスクのマスク状態とは異なるマスク状態を、前記ラウンド鍵保護マスクの1列目のマスク状態として前記7種類のマスク状態から選択する1列目選択手段と、前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、前記ラウンド鍵保護マスクの2列目のマスク状態として前記7種類のマスク状態から選択する2列目手段と、前記ラウンド鍵保護マスクの3列目及び4列目のマスク状態を前記7種類のマスク状態からそれぞれ選択する3・4列目選択手段と、前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目から4列目までのマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算するマスク状態計算手段と、前記計算されたマスク状態に禁止状態“000”が含まれるか否かを判定する禁止状態判定手段と、前記7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値が記憶された基本マスク値記憶手段と、前記禁止状態が含まれないとき、前記選択された各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該選択された各マスク状態に対応するそれぞれの合成マスク値を計算するマスク値計算手段とを備えた暗号処理装置である。
【0074】
なお、第1の発明は、「装置」として表現したが、これに限らず、「プログラム」、「プログラムを記憶したコンピュータ読取り可能な記憶媒体」又は「方法」として表現してもよい。
【0075】
(作用)
第1の発明によれば、従来のマスキング法と同等のサイドチャネル攻撃への耐性を実現しつつ、列毎に異なるマスク状態を選択する構成により、ラウンド鍵配列へのマスク値が0になることを阻止でき、且つ基本マスク値から合成マスク値を生成する構成により、マスク管理の複雑さを低減することができる。
【発明の効果】
【0076】
以上説明したように本発明によれば、ラウンド鍵配列へのマスク値が0になることを阻止でき、且つマスク管理の複雑化を低減できる。
【発明を実施するための最良の形態】
【0077】
以下、本発明の各実施形態について図面を用いて説明する。なお、以下の各装置は、各装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【0078】
以下、本発明の実施形態について図面を参照しつつ詳細に説明する。
【0079】
(第1の実施形態)
図1は本発明の第1の実施形態に係る暗号処理装置の構成を示す模式図である。この暗号処理装置10は、マスキング法を適用したAES暗号方式を実行する装置であり、ICカード又はパーソナルコンピュータのいずれで実現してもよい。
【0080】
具体的には、暗号処理装置10は、ROM1、RAM2、不揮発性メモリ3、CPU4及び入出力部5が互いにバス6を介して接続された構成となっている。
【0081】
ここで、ROM1は、CPU5から読出可能な読出専用メモリであり、暗号処理装置10のOSが予め記憶されている。
【0082】
RAM2は、CPU5から読出/書込可能なランダムアクセスメモリであり、不揮発性メモリ3の記憶内容が読み出され、ラウンド鍵更新処理中及びAES暗号処理中に暗号文、鍵、マスク状態、マスク値、カウント値、処理中データ、復号された平文等を一時的に保存するために用いられる。ラウンド鍵配列、内部状態配列(State array)は、RAM2の一部の領域に形成されており、128ビット鍵の場合には4行4列の配列であり、192ビット鍵の場合には4行6列の配列であり、256ビット鍵の場合には4行8列の配列である。
【0083】
不揮発性メモリ3は、CPU5から読出/書込可能で電源オフ時にも記憶内容が消去されないメモリであり、例えば、外部の記憶媒体からインストールされたAES暗号処理の動作プログラム、マスク付Sボックス(S-box)情報、ラウンド鍵保護マスク生成用の基本マスク値A,B,C、などが予め記憶され、また、外部のAES復号装置(図示せず)と共有する共通鍵、などが適宜、記憶される。但し、マスク付Sボックス(S-box)情報、基本マスク値A,B,C、及び共通鍵は、予め不揮発性メモリ3に記憶される場合に限らず、AES暗号処理の際に、その都度作成する場合もある。暗号処理の都度作成する場合、マスク付Sボックス(S-box)情報、基本マスク値A,B,C、及び共通鍵は、RAM2に記憶される一方、不揮発性メモリ3には記憶されない。なお、共有する鍵(共通鍵)の鍵長は、AES暗号の仕様の通り、128ビット、192ビット又は256ビットのいずれでもよい。
【0084】
CPU4は、入出力部5から入力された平文データに対してAES暗号処理を実行し、得られた暗号文データを入出力部5から出力するAES暗号処理を実行するものであり、具体的にはメモリ1〜3を参照しながら、図2乃至図8に示す如き、マスク状態更新処理、ラウンド鍵更新処理及びAES暗号処理を実行する機能をもっている。
【0085】
例えばCPU4は、Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する機能と、選択したSボックス入力保護マスクのマスク状態とは異なるマスク状態を、Sボックス出力保護マスクのマスク状態として7種類のマスク状態から選択する機能と、選択したSボックス出力保護マスクのマスク状態とは異なるマスク状態を、ラウンド鍵保護マスクの1列目のマスク状態として7種類のマスク状態から選択する機能と、選択したSボックス出力保護マスクのマスク状態、選択した1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、ラウンド鍵保護マスクの2列目のマスク状態として7種類のマスク状態から選択する機能と、ラウンド鍵保護マスクの3列目及び4列目のマスク状態を7種類のマスク状態からそれぞれ選択する機能と、選択したSボックス出力保護マスクのマスク状態、選択した1列目から4列目までのマスク状態を用いて、AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算する機能と、計算したマスク状態に禁止状態“000”等が含まれるか否かを判定する機能と、7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値A,B,CをRAM2に書き込む機能と、禁止状態が含まれないとき、選択した各マスク状態に対応して各基本マスク値A,B,C同士を排他的論理和により合成することにより、当該選択した各マスク状態に対応するそれぞれの合成マスク値を計算する機能とをもっている。
【0086】
入出力部5は、図示しない外部装置と暗号処理装置10との間のデータ等の入出力機能を有し、さらに、暗号処理装置10がICカードの場合には外部から暗号処理装置10内への電源の入力機能などをもっている。
【0087】
次に、以上のように構成された暗号処理装置の動作を図2のフローチャートを用いて説明する。なお、暗号処理装置10では、操作者の操作により、AESの暗号処理プログラムが起動され、不揮発性メモリ3の記憶内容がRAM2に書き込まれたとする。また、暗号処理装置10では、操作者の操作により、平文データが入出力部5を介してRAM2に書き込まれた後、暗号処理要求が入出力部5を介して入力されたとする。
【0088】
(マスク状態選択の全体動作:図2)
始めに、CPU4は、ラウンド鍵配列各要素のマスク状態を選択し(ST81)、RAM2にマスク状態を書き込む。次に、CPU4は、段(ラウンド)数のカウント値NをN=1で初期化する。なお、段数は、ここでは128ビット鍵に対応した値10が用いられるが、192又は256ビット鍵の場合には、段数に12あるいは14が用いられる。
【0089】
続いて、CPU4は、図3に示すように、ラウンド鍵更新後のラウンド鍵配列各要素のマスク状態を計算する(ST83)。ステップST83の処理は、図22のステップST21で格納するラウンド鍵として、図3中の使用段1のラウンド鍵保護マスクのマスク状態を用い、図22のステップST24に含まれるバイト換字(SubByte)処理に図3中のSボックス出力保護マスクのマスク状態を用いることにより実行できる。
【0090】
次に、CPU4は、ラウンド鍵配列の各要素にマスク状態の禁止状態が含まれているか否かを判定し(ST84)、含まれていた場合にはステップST81に戻り、含まれていない場合にはステップST85に進む。ここで、マスク状態の禁止状態とは、例えばマスク値の全てのビットが0である場合や全てのビットが1である場合など、マスキング法を適用する上で望ましくないマスクの値に対応するマスク状態である。なお、図2中、ステップST83及びST84は、それぞれ1回の処理として示したが、実際には図4に示すように、列毎に、マスク状態の更新と禁止状態の判定とを繰り返して実行する(ST83−1,ST84−1,…,ST83−4,ST84−4)。
【0091】
ステップST84の結果、マスク状態の禁止状態が含まれない場合、CPU4は、段数Nのカウント値Nに1を加算し(ST85)、最後の段か否かを判定し(ST86)、最後の段でなければステップST83に戻り、最後の段であれば、RAM2を参照して選択したマスク状態を出力する(ST87)。
【0092】
(ステップST81の詳細:図5)
ここで、ステップST81におけるマスク状態の選択を詳細に説明する。
【0093】
CPU4は、AESのラウンド鍵更新におけるバイト換字(SubByte)処理で用いるSボックス入力保護マスクのマスク状態を7種のマスク状態の中から1つ選択する(ST81−1)。なお、7種のマスク状態とは、001,010,011,100,101,110,111の状態である。Sボックス入力保護マスクは、4行1列の各要素が同じマスク状態をもつ。
【0094】
また、CPU4は、AESのラウンド鍵更新におけるバイト換字処理で用いるSボックス出力保護マスクのマスク状態を7種のマスク状態の中から1つ選択する(ST81−2)。Sボックス出力保護マスクは、4行1列の各要素が同じマスク状態をもつ。
【0095】
さらに、CPU4は、ラウンド鍵保護マスクにおける1列目のマスク状態として、ステップST81−2で選択したマスク状態と重複しないマスク状態を1つ選択する(ST81−3)。
【0096】
また、CPU4は、ラウンド鍵保護マスクにおける2列目のマスク状態として、「Sボックス出力保護マスク」、「ラウンド鍵保護マスクの1列目」及び「Sボックス出力保護マスクとラウンド鍵保護マスクの1列目とのXOR演算の結果」の合計3種のマスク状態を除く4種のマスク状態から1つ選択する(ST81−4)。
【0097】
さらに、CPU4は、ラウンド鍵保護マスクにおける3列目と4列目のマスク状態を7種のマスク状態の中からそれぞれ選択する(ST81−5)。ラウンド鍵保護マスクは、4行4列の各要素が列毎に異なるマスク状態となる。
【0098】
また、CPU4は、ステップST81−2からST81−5までで決定したSボックス出力保護マスク及びラウンド鍵保護マスクの1〜4列目までの各マスク状態を用いて、ラウンド鍵更新処理後の1〜4列目までのマスク状態をそれぞれ計算する(ST81−6)。なお、ステップST81−6の処理は、前述したステップST83と同様にして実行できる。
【0099】
さらに、CPU4は、ステップST81−6で得られたマスク状態に禁止状態が含まれているか否かを判定し(ST81−7)、含まれている場合にはステップST81−5に戻り、含まれていない場合には処理を終了してステップST82に進む。
【0100】
(マスキング法によるAES暗号処理:図6)
CPU4は、図2に示したように、最初のラウンド鍵配列各要素のマスク状態を決定する(ST81〜ST87)。続いて、CPU4は、少なくとも7乃至それ以上の種別のマスク状態に対応したマスク値を選択し(ST91)、RAM2にマスク状態及びマスク値を格納する。ここで、マスク値の選択は、図7に示すように、基本マスク値A,B,Cをマスク状態に基づいてXOR演算し、得られた合成マスク値を選択するように実行している。ここで、マスク状態をcbaとすると、100,010,001に対応する基本マスク値C,B,Aと、合成マスク値Mとの間には以下の関係がある。
M=c・C(+)b・B(+)a・A
但し、(+):排他的論理和、cba:001〜111のいずれかの値(c,b,aは、それぞれ0又は1)。
【0101】
続いて、CPU4は、選択したマスク値が禁止状態を含むか否かを判定し(ST92)、禁止状態を含む場合にはステップST81に戻り、含まない場合にはAESの暗号処理(ST93)及びラウンド鍵更新処理(ST94)を実行する。
【0102】
(マスク状態の更新結果)
前述した図3中、001,010,011,100,101,110,111はそれぞれ3つの独立な基本マスク値のXORで合成されたSボックス出力保護マスク及びラウンド鍵保護マスクのマスク状態を表す。ラウンド鍵保護マスクでは、例えば、それぞれ0x02, 0x10, 0x12, 0x40, 0x42, 0x50, 又は0x52のマスク値が列毎に割り当てられる。
【0103】
図3のマスク状態の表には、マスク値が0x00に対応する000や、その他0xffなどのマスキング法に適切でないマスク値に対応するマスク状態が登場しない。このため、マスキング法がサイドチャネル攻撃への対策として適切に動作できる。また、ラウンド鍵更新処理において、ラウンド鍵配列の各要素に適用されているマスク値がラウンド鍵配列の更新操作により図3に示すマスク状態に従って自動的に遷移する。ラウンド鍵配列の各要素のマスク値を明示的に変更する従来の方法では、各要素のマスク値の参照が必要である。一方、本実施形態によれば、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がないが、各要素には適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果を得ることができる。
【0104】
上述したように本実施形態によれば、従来のマスキング法と同等のサイドチャネル攻撃への耐性を実現しつつ、少ない個数の乱数によりマスクを生成することから、マスク管理の複雑さを低減でき、列毎に異なるマスク状態を用いることから、ラウンド鍵配列へのマスク値が0になることを阻止することができる。
【0105】
(第2の実施形態)
図8は本発明の第2の実施形態に係る暗号処理装置の動作を説明するためのフローチャートであり、前述した図面と同一部分には同一符号を付してその詳しい説明は省略し、ここでは異なる部分について主に述べる。なお、以下の各実施形態も同様にして重複した説明を省略する。
【0106】
すなわち、本実施形態は、第1の実施形態におけるマスク状態からマスク値を生成するステップST91の変形例である。
【0107】
具体的にはCPU4は、3つの基本マスク値A,B,Cに代えて、1つの基本マスク値としての乱数rを生成する機能と、乱数rから残り2つの基本マスク値2r,4rを算出する機能とを有し、これら3つの基本マスク値r,2r,4rからマスク状態に基づくXOR演算により合成マスク値を生成する機能をもっている。
【0108】
補足すると、CPU4は、マスク値のビット数“n”と同一ビット数の乱数rを生成する機能と、このビット数と同一値の次数であるn次の既約多項式を選択する機能とを備えている。基本マスク値は、乱数rと、乱数rをそれぞれ2倍及び4倍した値2r,4rとである。また、CPU4は、多項式を用いたガロア体GF(2n)のベクトル表現をマスク状態に対応させることにより、合成マスク値を計算する。なお、ここではn=8ビットの場合を例に挙げて述べるが、ビット数nは3≦n≦32の範囲で任意に選択可能である。
【0109】
次に、以上のように構成された暗号処理装置の動作を図8のフローチャートを用いて説明する。
【0110】
いま、前述同様に、図3に示したように、最初のラウンド鍵配列の各要素のマスク状態が決定されたとする(ST81〜ST87)。
【0111】
CPU4は、nビットのマスク用乱数rを生成し(ST91’−1)、n次の既約な多項式を選択する(ST91’−2)。
【0112】
しかる後、CPU4は、この既約多項式を用いて、図9に示すように、少なくとも7乃至それ以上の種別のマスク状態に対応したマスク値を計算し(ST91’−3)、RAM2にマスク状態及びマスク値を格納する。
【0113】
以下、前述同様に、AES暗号処理(ST93)及びラウンド鍵更新処理(ST94)が実行される。
【0114】
(マスク値の生成について)
第1の実施形態では7乃至それ以上の種類のマスク状態のマスク値を生成するためには、少なくとも3種類の異なるマスク値が必要であったのに対して、本実施形態では1種類のマスク値から既約多項式を用いたGF(2n)の多項式計算により、マスク状態に対応するマスク値を生成できる。
【0115】
すなわち、本実施形態では、図3に示したマスク状態を、任意の既約多項式を用いたガロア体GF(2n)のベクトル表現に対応させてマスク値を生成している。この場合、マスク状態001, 010,011, 100, 101, 110, 111は、多項式表現でいえば、それぞれ1,x,x+1,x^2,x^2+1,x^2+x,x^2+x+1に対応する。例えば、8ビットのデータマスクを生成する場合、乱数rが既約多項式 (x^8+x^7+x^5+x^3+x+1) を用いた拡大体GF(28)のベクトル表現に対応させると、乱数rのベクトル表現の16進数表記が0x2C(以下、16進表記の場合には、先頭に0xを用いる)ならば、乱数rに基づき、マスク状態001, 010, 011, 100, 101, 110, 111に対応して生成されるマスク値は、図9に示したように、それぞれ0x2C, 0x58, 0x74, 0xB0, 0x9C, 0xE8, 0xC4となる。
【0116】
また、図3のマスク状態の表には、前述した通り、マスキング法に適切でないマスク状態が登場しないため、マスキング法がサイドチャネル攻撃への対策として適切に動作できる。また同様に、ラウンド鍵更新処理において、ラウンド鍵保護マスクのマスク値が図3に示すマスク状態に従って自動的に遷移する。このため、本実施形態によれば、従来とは異なり、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がない。また、本実施形態によれば、各要素に適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果を得ることができる。
【0117】
上述したように本実施形態によれば、第1の実施形態の効果に加え、乱数rからマスク値を算出するので、第1の実施形態と比較してマスク値の選択が容易となる。
【0118】
また、マスク状態からマスク値を生成する場合、マスク状態とマスク値との関係式を計算して両者の対応表を作成し、7通りのマスク状態に対応するマスク値を参照すればよい。この場合、マスク値そのものを直接計算する場合に比べて、マスクの値にかかわらず処理が同じになるのでサイドチャネル情報の漏洩を抑制でき、サイドチャネル攻撃に対する耐性が高まる。
【0119】
なお、各実施形態における、図3のマスク状態の表は、図8のラウンド鍵更新処理(ST94)において逐次計算する手法や、AES暗号処理(ST93)に先立って暗号化処理を行う鍵長に応じたラウンド鍵のマスク状態の表を作成する手法や、予め暗号処理装置ごとの個別あるいは共通のマスク状態の表を作成しAESの暗号処理中では該表を参照する手法のうち、任意の手法で実現できる。
【0120】
また、各実施形態において、8ビットのデータを説明に用いたが、本発明によるマスキング法は8ビットに限定されない。AESにおいては、ラウンド鍵配列の各要素が8ビットであるため、n=8が適しているが、nは3以上32以下の範囲であれば任意に選択可能である。
【0121】
(第3の実施形態)
次に、本発明の第3の実施形態に係る暗号処理装置について説明する。
【0122】
本実施形態は、第1又は第2の実施形態の変形例であり、ラウンド鍵配列の各要素へのマスク状態の適用方法を複雑にし、サイドチャネル攻撃への耐性の向上を図るものである。
【0123】
具体的には、図10に示すように、使用段1から使用段5までは、Sボックス出力保護マスクのマスク状態に“101”を使用し、使用段6から最終の使用段までは、Sボックス出力保護マスクのマスク状態に“111”を使用する構成となっている。
【0124】
補足すると、本実施形態は、第1又は第2の実施形態を使用段1から使用段5までの1回と、使用段6から最終の使用段までの1回との計2回実行する構成である。このとき、CPU4は、使用段1から使用段5までのSボックス出力保護マスクのマスク状態と、使用段6から最終の使用段までのSボックス出力保護マスクのマスク状態とを互いに異なるマスク状態とするように選択する。但し、前述した2つのマスク状態“101”及び“111”は、一例であってこれに限るものではなく、互いに異なる値であれば、任意のマスク状態をSボックス出力保護マスクに使用可能となっている。
【0125】
マスキング法においては、Sボックス入力保護マスクあるいはSボックス出力保護マスクが異なれば、異なる内容のマスク付Sボックス情報(参照テーブル)が必要となり、記憶領域の必要量が増大するが、サイドチャネル攻撃の適用がより一層困難となり、サイドチャネル攻撃対策としての効果が向上すると考えられる。
【0126】
従って、以上のような構成によれば、第1又は第2の実施形態の効果に加え、サイドチャネル攻撃への耐性を向上させることができる。
【0127】
(第4の実施形態)
次に、本発明の第4の実施形態に係る暗号処理装置について図11を用いて説明する。本実施形態は、第1又は第2の実施形態を192ビット鍵に適用した形態となっている。
【0128】
なお、192ビット鍵のAESでは、図11に示すように、ラウンド鍵配列は4行6列の配列で表現される。これに伴い、CPU4は、ラウンド鍵として192ビット鍵を用いる場合、前述した機能に加え、ラウンド鍵保護マスクの5列目及び6列目のマスク状態を“1000”,“1001”,“1010”,“1011”,“1100”,“1101”,“1110”及び“1111”の8種類のマスク状態からそれぞれ選択する機能と、計算した4列目のマスク状態を用いて、AES暗号方式によるラウンド鍵更新後の5列目及び6列目のマスク状態を計算する機能と、計算した5列目及び6列目のマスク状態に禁止状態“0000”等が含まれるか否かを判定する機能と、8種類のマスク状態のうち、“1000”に対応する基本マスク値をRAM2に書き込む機能と、禁止状態“0000”等が含まれないとき、選択した5列目及び6列目の各マスク状態に対応して各基本マスク値同士を排他的論理和により合成することにより、当該5列目及び6列目の各マスク状態に対応するそれぞれの合成マスク値を計算する機能とを更に備えている。
【0129】
ここで、マスク状態をdcbaとすると、1000,0100,0010,0001に対応する基本マスク値D,C,B,Aと、合成マスク値Mとの間には以下の関係がある。
M=d・D(+)c・C(+)b・B(+)a・A
但し、(+):排他的論理和、dcba:0001〜1111のいずれかの値(d,c,b,aは、それぞれ0又は1)。
【0130】
また、最終の使用段の5列目及び6列目は、使用されないラウンド鍵に対するマスク状態であり、実装形態によっては必要ない。
【0131】
図11中、0001, 0010,0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111は、それぞれ4つの独立な基本マスク値のXORで合成されたSボックス出力保護マスク及びラウンド鍵保護マスクのマスク状態を表している。ラウンド鍵保護マスクでは、例えば図12に示すように、それぞれ0x02, 0x10, 0x12, 0x40, 0x42, 0x50, 0x52, 0x60, 0x62, 0x70, 0x72, 0xA0, 0xA2, 0xB0,又は0xB2のマスク値が列毎に割り当てられる。
【0132】
図11のマスク状態の表には、マスク値が0x00に対応する0000や、その他0xffなどのマスキング法に適切でないマスク値に対応するマスク状態が登場しない。このため、マスキング法がサイドチャネル攻撃への対策として適切に動作できる。また、ラウンド鍵更新処理において、ラウンド鍵配列の各要素に適用されているマスク値がラウンド鍵配列の更新操作により図11に示すマスク状態に従って自動的に遷移する。ラウンド鍵配列の各要素のマスク値を明示的に変更する従来の方法では、各要素のマスク値の参照が必要である。本実施形態によれば、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がないが、各要素には適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果を得ることができる。
【0133】
また、第2の実施形態で示したように、0001から1111までの15個のマスク状態に対応したマスクの生成方法の一例としては、任意の既約多項式を用いたガロア体GF(2n)のベクトル表現に対応させることもできる。この場合、多項式表現でいえば、それぞれ1,x,x+1,x^2,x^2+1,x^2+x,x^2+x+1に対応する。例えば、8ビットのデータマスクを生成する場合、乱数rが既約多項式 (x^8+x^7+x^5+x^3+x+1) を用いた拡大体GF(2n)のベクトル表現に対応させると、乱数rのベクトル表現の16進数表記が0x2Cならば、乱数rに基づき、マスク状態0001, 0010,0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111に対応して生成されるマスク値は、図13に示すように、それぞれ0x2C, 0x58, 0x74, 0xB0, 0x9C, 0xE8, 0xC4, 0x4B, 0x67, 0x13, 0x3F, 0xFB, 0xD7, 0xA3, 0x8Fとなる。なお、図13中、基本マスク値には、乱数rと、乱数rをそれぞれ2倍、4倍及び8倍した値2r,4r,8rとを用いている。
【0134】
いずれにしても、暗号処理装置10は、図12又は図13に示した如き4つの相異なるマスク値に基づき、図11のマスク状態に対応した15種類のマスク値を用いることにより、適切でないマスク値を排除しつつ、効果的なマスキング法を提供することができる。また、図11によるマスク状態の遷移は、図14に示すように、Sボックス出力保護マスク及びラウンド鍵保護マスクの1列目から4列目までは3種類のマスク値から合成されるマスク状態を使用するため、128ビット鍵のAES処理との整合性も高く、複数の鍵長をサポートする暗号処理装置に用いる場合、実装性に優れている。
【0135】
上述したように本実施形態によれば、第1又は第2の実施形態の効果を、4行6列の192ビット鍵においても得ることができる。
【0136】
(第5の実施形態)
次に、本発明の第5の実施形態に係る暗号処理装置について図15を用いて説明する。本実施形態は、第1又は第2の実施形態を256ビット鍵に適用した形態となっている。
【0137】
これに伴い、CPU4は、ラウンド鍵として256ビット鍵を用いる場合、前述したステップST81−3〜ST81−7の処理と、ステップST91,ST92の処理を再度実行することにより、ラウンド鍵保護マスクの5列目から8列目のマスク値を得る機能をもっている。
【0138】
なお、256ビット鍵のAESでは、図15に示すように、ラウンド鍵配列は4行8列の配列で表現される。先に述べたように、256ビット鍵のラウンド鍵更新において5列目の鍵配列の更新には、4列目の鍵配列にバイト換字(SubByte)処理を適用した結果が用いられるため、4列目のマスク状態と5列目のマスク状態との間に、バイト換字(SubByte)処理で使用されるSボックス出力保護マスクのマスク状態を記述する。
【0139】
図15中、001,010,011,100,101,110,111はそれぞれ3つの独立な基本マスク値のXORで合成されたSボックス出力保護マスク及びラウンド鍵保護マスクのマスク状態を表している。ラウンド鍵保護マスクでは、例えば図7又は図9に示したように、それぞれのマスク状態に対応するマスク値が列毎に割り当てられる。
【0140】
また前述同様に、図15のマスク状態の表には、適切でないマスク値に対応するマスク状態が登場しないため、サイドチャネル攻撃への対策として適切に動作できる。また同様に、ラウンド鍵更新処理において、ラウンド鍵保護マスクのマスク値が図15に示すマスク状態に従って自動的に遷移する。このため、本実施形態によれば、従来とは異なり、ラウンド鍵配列更新処理のたびにマスク値を参照する必要がない。また、本実施形態によれば、各要素には適切なマスク値が適用されており、従来の方法と同等以上のサイドチャネル攻撃への対策の効果が得られる。
【0141】
また、図15によるマスク状態の遷移は、Sボックス出力保護マスク及びラウンド鍵保護マスクには3種類のマスク値から合成されるマスク状態を使用するため、128ビット鍵のAES処理との整合性も高く、複数の鍵長をサポートする暗号処理装置に用いる場合、実装性に優れている。
【0142】
上述したように本実施形態によれば、第1又は第2の実施形態の効果を、4行8列の256ビット鍵においても得ることができる。なお、本実施形態では、3つの相異なるマスク値を用いて各マスク状態に対応したマスク値を生成したが、3つ以上の相異なるマスク値であれば同様の方法により各マスク状態を生成でき、例えば第4の実施形態で例示した4つの相異なるマスクによる生成も、この手法の範疇であることは明らかである。
【0143】
(第6の実施形態)
次に、本発明の第6の実施形態に係る暗号処理装置について図16乃至図18を用いて説明する。本実施形態は、128ビット鍵の場合を代表例に挙げた第1乃至第5の各実施形態の変形例であり、図16及び図17に示すように、使用段1から最終の使用段までのSボックス出力保護マスク(4行1列)の1行目〜4行目のマスク状態を互いに変更すると共に、ラウンド鍵保護マスクの列毎の1行目から4行目のマスク状態を互いに変更した構成となっている。これに伴い、CPU4は、前述したステップST81−2において、Sボックス出力保護マスクの1行目〜4行目のマスク状態を互いに異なる状態として選択する機能と、前述したステップST81−3〜ST81−5において、ラウンド鍵保護マスクの列毎に1行目から4行目のマスク状態を互いに異なる状態として選択する機能とをもっている。なお、図18は図16及び図17に示すマスク状態に対応したマスク値を表している。
【0144】
第1乃至第5の実施形態においては、マスク値の例として、8ビットのマスク値を4つ繰り返し1列に拡大した32ビットマスク値を用いたが、0x00のマスク値を除くと、8ビットのマスク値は255通りに限られ、マスク値のランダム性あるいは多様性が限られている。
【0145】
しかしながら、第6の実施形態によれば、鍵配列の各行ごとに独立な4つのマスク値を選択することにより、マスク値の組み合わせを2554 通り、すなわち1658万1375通りまで増加させることができ、マスキング法によるサイドチャネル攻撃への用途としては十分な多様性を提供できる。
【0146】
上述したように本実施形態によれば、第1乃至第5の各実施形態の効果に加え、Sボックス出力保護マスク及びラウンド鍵保護マスクのマスク値の組み合わせを増加できるため、サイドチャネル攻撃に対する耐性を向上させることができる。
【0147】
なお、Sボックス出力保護マスクのマスク値の4バイトは独立な値のため、そのまま実装すると4倍の数のマスク付Sボックス情報が必要となるが、図16及び図17のSボックス出力保護マスクのマスク値とは異なる8ビットのマスク値を4つ繰り返すマスク値をSボックス出力保護マスクに用い、その出力に固有のマスク値をそれぞれ適用することにより、図16乃至図18に示すSボックス出力保護マスクのマスク値に変換する実装も、本実施形態の範囲内にある。
【0148】
(第7の実施形態)
次に、本発明の第7の実施形態に係る暗号処理装置について図19及び図20を用いて説明するが、その前に背景技術を述べる。
【0149】
AES暗号方式のデータ暗号化部においては、4行4列で表される中間状態を各列単位でバイト換字(SubByte)処理、ミックスカラム(MixColumn)処理を行い、新しい中間状態の1列を計算する処理を繰り返し、4列の変換を実現する。
【0150】
ここで、サイドチャネル攻撃においては、相似関係にある処理を異なる値を用いて実行する場合、特に攻撃が容易となることが知られている。
【0151】
従来の技術によれば、4行4列の内部状態をそれぞれ異なるマスク値で撹乱することにより、サイドチャネル攻撃への対策を行う。従来の技術を図31により説明すると、内部状態行列のy(i,j) (+) r(i,j)は、AESの内部状態のi行j列目に格納されているデータであり、記号(+)は排他的論理和であり、y(i,j)はi行j列目の真の内部状態の成分に、r(i,j)は、i行j列目のマスク値の成分にそれぞれ対応する。
【0152】
バイト換字処理においては、4行4列の内部状態の要素毎に異なるマスク値が使用されているため、延べ16個のSボックス情報に個別のマスク値を使用したマスク付きSボックス情報が必要となる。この場合、16種類の異なるマスクのSボックス情報を実現するためには、例えば、RAMに格納すると8キロバイトの記憶容量が必要になり、ハードウェア規模の増大が課題となる。以上が本実施形態の背景技術である。
【0153】
本実施形態は、第1〜第6の各実施形態と同時に実行可能であって、マスク付バイト換字(SubByte)処理に必要な記憶容量の低減を図るものであり、図19に示すように、Sボックス入力保護マスク及びSボックス出力保護マスクをそれぞれ2種類のマスク値rA,rBから構成し、図20に示すように、CPU4がマスク状態に基づいてSボックス入力保護マスクの付加及びSボックス出力保護マスクの除去を各マスク値rA,rBのXOR演算により実行する構成となっている。
【0154】
補足すると、RAM2には、図19に示す如き、Sボックス入力保護マスク及びSボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値rAと、当該マスク状態の各ビット値“1”に対応する第2マスク値rBとを互いに関連付けた参照表データが記憶されている。
【0155】
CPU4は、選択したSボックス入力保護マスク及びSボックス出力保護マスクのマスク状態に基づいて、RAM2内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して第1マスク値rA又は第2マスク値rBを選択する機能とをもっている。
【0156】
ここで、図20に示す内部状態行列のy(i,j) (+) r(j)は、AESの内部状態のi行j列目に格納されているデータであり、記号(+)は排他的論理和であり、y(i,j)はi行j列目の真の内部状態の成分に、r(j)は、j列目のマスク値の成分にそれぞれ対応する。
【0157】
マスク値は、CPU4がマスク状態に基づいて図19の参照表データを参照することにより、決定される。具体的には、CPU4は、マスク状態0000から1111までの16種類のマスク状態に対応して、r(1)からr(4)までの各列の4つのマスク値にrA又はrBを選択し、列毎にSボックス入力保護マスク及び/又はSボックス出力保護マスクのマスク値を変更する。これにより、相似した処理で参照されるマスクされたSボックス情報の表が、列毎に2種類の表から選択されるため、任意の列の間においてSボックス情報のマスク値が一致する確率が2分の1となる。
【0158】
第2から第6の実施形態においては、3つ又は4つの基本マスク値から合成された7種類又は15種類のマスク値をラウンド鍵へのマスキング法に用いている。一方、AESの暗号処理においては、マスク付バイト換字処理のSボックス情報の参照において図19のマスク状態に対応したマスク値に変更する。
【0159】
上述したように本実施形態によれば、1つ又は2つの基本マスク値rA,rBをSボックス入力保護マスクあるいはSボックス出力保護マスクのマスク値に用い、CPU4による選択処理で切り替えることにより、処理あるいはラウンド毎に且つ列毎にSボックス保護マスクのマスク値を変化させることができ、サイドチャネル攻撃に有効な情報の漏洩を低減でき、安全性が高まる効果がある。
【0160】
以上説明した各実施形態ではAESの暗号化処理の処理手順をもって説明したが、暗号化処理と対称をなす復号処理に対しても、当業者であれば上述の実施形態の種々の変形を行えることは明らかである。
【0161】
また、各実施形態のうち、データ暗号化部に関する第7の実施形態は、AES暗号方式に限らず、例えばISO/IEC 10118−3に記載のワープールWhirlpoolのように、AES暗号方式と類似したアルゴリズムについても適用可能となっている。ここで、ワープールWhirlpoolは、AES暗号方式に類似したデータ暗号化部を有しており、鍵スケジュール部が無い構成となっている。これに伴い、第7の実施形態は、ワープールWhirlpoolにも適用可能となっている。
【0162】
ワープールWhirlpoolに関する変形例は、図1に示す暗号処理プログラムを、Sボックス入力保護マスク及びSボックス出力保護マスクを用い、ISO/IEC 10118−3に記載のワープールWhirlpoolを実行する暗号処理装置のプログラムとすればよい。このプログラムの実行により、CPU4は、Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択機能と、選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、Sボックス出力保護マスクのマスク状態として7種類のマスク状態から選択する出力選択機能と、Sボックス入力保護マスク及びSボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けた参照表データをRAM2に書き込む機能と、入力選択機能及び出力選択機能により選択したマスク状態に基づいて、RAM2内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して第1マスク値又は第2マスク値を選択するマスク値選択機能とを備えている。このワープールWhirlpoolに関する変形例によれば、第7の実施形態と同様に、処理あるいはラウンド毎に且つ列毎にSボックス保護マスクのマスク値を変化させることができ、サイドチャネル攻撃に有効な情報の漏洩を低減でき、安全性が高まる効果がある。
【0163】
また、各実施形態は、暗号処理を実行するデバイス、例えば暗号処理モジュールを持つICカードあるいはその他の暗号処理装置に適用可能である。また、各実施形態の構成を適用することにより、電力解析によるICモジュール内の暗号処理鍵やアルゴリズムの漏洩が困難となるので、セキュリティレベルの高い暗号処理実行機能を持つデバイスあるいは装置を提供することができる。
【0164】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0165】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0166】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
【0167】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【0168】
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0169】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0170】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0171】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【0172】
【図1】本発明の第1の実施形態に係る暗号処理装置の構成を示す模式図である。
【図2】同実施形態における動作を説明するためのフローチャートである。
【図3】同実施形態におけるマスク状態を示す図である。
【図4】同実施形態における動作を説明するためのフローチャートである。
【図5】同実施形態における動作を説明するためのフローチャートである。
【図6】同実施形態における動作を説明するためのフローチャートである。
【図7】同実施形態におけるマスク値の演算を説明するための模式図である。
【図8】本発明の第2の実施形態に係る暗号処理装置の動作を説明するためのフローチャートである。
【図9】同実施形態におけるマスク値の演算を説明するための模式図である。
【図10】本発明の第3の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図11】本発明の第4の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図12】同実施形態におけるマスク値の演算を説明するための模式図である。
【図13】同実施形態におけるマスク値の演算を説明するための模式図である。
【図14】同実施形態における動作を説明するためのフローチャートである。
【図15】本発明の第5の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図16】本発明の第6の実施形態に係る暗号処理装置のマスク状態を示す図である。
【図17】同実施形態における暗号処理装置のマスク状態を示す図である。
【図18】同実施形態における暗号処理装置のマスク値を示す図である。
【図19】本発明の第7の実施形態に係る暗号処理装置のマスク値を示す図である。
【図20】同実施形態における動作を説明するための模式図である。
【図21】AES暗号方式における一般的な暗号処理を説明するためのフローチャートである。
【図22】AES暗号方式における128ビット鍵の一般的な更新処理を説明するためのフローチャートである。
【図23】AES暗号方式における192ビット鍵の一般的な更新処理を説明するためのフローチャートである。
【図24】AES暗号方式における256ビット鍵の一般的な更新処理を説明するためのフローチャートである。
【図25】AES暗号方式におけるマスキング法を用いた暗号処理を説明するためのフローチャートである。
【図26】同マスキング法におけるマスク付Sボックス情報を説明するための模式図である。
【図27】AES暗号方式のマスキング法による128ビット鍵の更新処理を説明するためのフローチャートである。
【図28】AES暗号方式のマスキング法による128ビット鍵の更新処理を説明するためのフローチャートである。
【図29】AES暗号方式のマスキング法による192ビット鍵の更新処理を説明するためのフローチャートである。
【図30】AES暗号方式のマスキング法による256ビット鍵の更新処理を説明するためのフローチャートである。
【図31】従来のマスキング法によるマスク付加後のラウンド鍵配列の状態を表す模式図である。
【符号の説明】
【0173】
10…暗号処理装置、1…ROM、2…RAM、3…不揮発性メモリ、4…CPU、5…入出力部、6…バス。
【特許請求の範囲】
【請求項1】
ラウンド鍵保護マスク、Sボックス入力保護マスク及びSボックス出力保護マスクを用いてAES暗号方式を実行する暗号処理装置であって、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段と、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段と、
前記選択されたSボックス出力保護マスクのマスク状態とは異なるマスク状態を、前記ラウンド鍵保護マスクの1列目のマスク状態として前記7種類のマスク状態から選択する1列目選択手段と、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、前記ラウンド鍵保護マスクの2列目のマスク状態として前記7種類のマスク状態から選択する2列目手段と、
前記ラウンド鍵保護マスクの3列目及び4列目のマスク状態を前記7種類のマスク状態からそれぞれ選択する3・4列目選択手段と、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目から4列目までのマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算するマスク状態計算手段と、
前記計算されたマスク状態に禁止状態“000”が含まれるか否かを判定する禁止状態判定手段と、
前記7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値が記憶された基本マスク値記憶手段と、
前記禁止状態が含まれないとき、前記選択された各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該選択された各マスク状態に対応するそれぞれの合成マスク値を計算するマスク値計算手段と
を備えたことを特徴とする暗号処理装置。
【請求項2】
請求項1に記載の暗号処理装置において、
前記ラウンド鍵として256ビット鍵を用いる場合、前記1列目選択手段、前記2列目選択手段、前記3・4列目選択手段、前記マスク状態計算手段、前記禁止状態判定手段、前記マスク値計算手段を再度実行することにより、前記ラウンド鍵保護マスクの5列目から8列目のマスク値を得る手段を備えたことを特徴とする暗号処理装置。
【請求項3】
請求項1に記載の暗号処理装置において、
前記ラウンド鍵として192ビット鍵を用いる場合、前記ラウンド鍵保護マスクの5列目及び6列目のマスク状態を“1000”,“1001”,“1010”,“1011”,“1100”,“1101”,“1110”及び“1111”の8種類のマスク状態からそれぞれ選択する5・6列目選択手段と、
前記計算された4列目のマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の5列目及び6列目のマスク状態を計算する第2のマスク状態計算手段と、
前記計算された5列目及び6列目のマスク状態に禁止状態“0000”が含まれるか否かを判定する第2の禁止状態判定手段と、
前記8種類のマスク状態のうち、“1000”に対応する基本マスク値が記憶された第2の基本マスク値記憶手段と、
前記禁止状態“0000”が含まれないとき、前記選択された5列目及び6列目の各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該5列目及び6列目の各マスク状態に対応するそれぞれの合成マスク値を計算する第2のマスク値計算手段と
を備えたことを特徴とする暗号処理装置。
【請求項4】
請求項1乃至請求項3のいずれか1項に記載の暗号処理装置において、
前記基本マスク値のビット数“8”と同一ビット数の乱数rを生成する手段と、
前記ビット数と同一値の次数である8次の既約多項式を選択する手段とを備えており、
前記基本マスク値は、前記乱数rと、前記乱数rをそれぞれ2倍及び4倍した値2r,4rとであり、
前記マスク値計算手段は、前記既約多項式を用いたガロア体GF(28)のベクトル表現を前記マスク状態に対応させることにより、前記マスク値を計算することを特徴とする暗号処理装置。
【請求項5】
請求項1乃至請求項4のいずれか1項に記載の暗号処理装置であって、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けて記憶したマスク値対応情報記憶手段と、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記マスク値対応情報記憶手段を参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段と
を備えたことを特徴とする暗号処理装置。
【請求項6】
Sボックス入力保護マスク及びSボックス出力保護マスクを用い、ISO/IEC 10118−3に記載のワープールWhirlpoolを実行する暗号処理装置であって、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段と、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段と、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けて記憶したマスク値対応情報記憶手段と、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記マスク値対応情報記憶手段を参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段と
を備えたことを特徴とする暗号処理装置。
【請求項7】
ラウンド鍵保護マスク、Sボックス入力保護マスク及びSボックス出力保護マスクを用いてAES暗号方式を実行する暗号処理装置のプログラムであって、
前記暗号処理装置のコンピュータを、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段、
前記選択されたSボックス出力保護マスクのマスク状態とは異なるマスク状態を、前記ラウンド鍵保護マスクの1列目のマスク状態として前記7種類のマスク状態から選択する1列目選択手段、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、前記ラウンド鍵保護マスクの2列目のマスク状態として前記7種類のマスク状態から選択する2列目手段、
前記ラウンド鍵保護マスクの3列目及び4列目のマスク状態を前記7種類のマスク状態からそれぞれ選択する3・4列目選択手段、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目から4列目までのマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算するマスク状態計算手段、
前記計算されたマスク状態に禁止状態“000”が含まれるか否かを判定する禁止状態判定手段、
前記7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値を前記コンピュータのメモリに書き込む手段、
前記禁止状態が含まれないとき、前記選択された各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該選択された各マスク状態に対応するそれぞれの合成マスク値を計算するマスク値計算手段、
として機能させるためのプログラム。
【請求項8】
請求項7に記載のプログラムにおいて、
前記コンピュータを、
前記ラウンド鍵として256ビット鍵を用いる場合、前記1列目選択手段、前記2列目選択手段、前記3・4列目選択手段、前記マスク状態計算手段、前記禁止状態判定手段、前記マスク値計算手段を再度実行することにより、前記ラウンド鍵保護マスクの5列目から8列目のマスク値を得る手段として機能させるためのプログラム。
【請求項9】
請求項7に記載のプログラムにおいて、
前記コンピュータを、
前記ラウンド鍵として192ビット鍵を用いる場合、前記ラウンド鍵保護マスクの5列目及び6列目のマスク状態を“1000”,“1001”,“1010”,“1011”,“1100”,“1101”,“1110”及び“1111”の8種類のマスク状態からそれぞれ選択する5・6列目選択手段、
前記計算された4列目のマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の5列目及び6列目のマスク状態を計算する第2のマスク状態計算手段、
前記計算された5列目及び6列目のマスク状態に禁止状態“0000”が含まれるか否かを判定する第2の禁止状態判定手段、
前記8種類のマスク状態のうち、“1000”に対応する基本マスク値を前記メモリに書き込む手段、
前記禁止状態“0000”が含まれないとき、前記選択された5列目及び6列目の各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該5列目及び6列目の各マスク状態に対応するそれぞれの合成マスク値を計算する第2のマスク値計算手段、
として機能させるためのプログラム。
【請求項10】
請求項7乃至請求項9のいずれか1項に記載のプログラムにおいて、
前記コンピュータを、
前記基本マスク値のビット数“8”と同一ビット数の乱数rを生成する手段、
前記ビット数と同一値の次数である8次の既約多項式を選択する手段、として機能させ、
前記基本マスク値は、前記乱数rと、前記乱数rをそれぞれ2倍及び4倍した値2r,4rとであり、
前記マスク値計算手段は、前記既約多項式を用いたガロア体GF(28)のベクトル表現を前記マスク状態に対応させることにより、前記マスク値を計算することを特徴とするプログラム。
【請求項11】
請求項7乃至請求項10のいずれか1項に記載のプログラムであって、
前記暗号処理装置のコンピュータを、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けた参照表データを前記コンピュータのメモリに書き込む手段、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記メモリ内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段、
として機能させるためのプログラム。
【請求項12】
Sボックス入力保護マスク及びSボックス出力保護マスクを用い、ISO/IEC 10118−3に記載のワープールWhirlpoolを実行する暗号処理装置のプログラムであって、
前記暗号処理装置のコンピュータを、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けた参照表データを前記コンピュータのメモリに書き込む手段、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記メモリ内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段、
として機能させるためのプログラム。
【請求項1】
ラウンド鍵保護マスク、Sボックス入力保護マスク及びSボックス出力保護マスクを用いてAES暗号方式を実行する暗号処理装置であって、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段と、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段と、
前記選択されたSボックス出力保護マスクのマスク状態とは異なるマスク状態を、前記ラウンド鍵保護マスクの1列目のマスク状態として前記7種類のマスク状態から選択する1列目選択手段と、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、前記ラウンド鍵保護マスクの2列目のマスク状態として前記7種類のマスク状態から選択する2列目手段と、
前記ラウンド鍵保護マスクの3列目及び4列目のマスク状態を前記7種類のマスク状態からそれぞれ選択する3・4列目選択手段と、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目から4列目までのマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算するマスク状態計算手段と、
前記計算されたマスク状態に禁止状態“000”が含まれるか否かを判定する禁止状態判定手段と、
前記7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値が記憶された基本マスク値記憶手段と、
前記禁止状態が含まれないとき、前記選択された各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該選択された各マスク状態に対応するそれぞれの合成マスク値を計算するマスク値計算手段と
を備えたことを特徴とする暗号処理装置。
【請求項2】
請求項1に記載の暗号処理装置において、
前記ラウンド鍵として256ビット鍵を用いる場合、前記1列目選択手段、前記2列目選択手段、前記3・4列目選択手段、前記マスク状態計算手段、前記禁止状態判定手段、前記マスク値計算手段を再度実行することにより、前記ラウンド鍵保護マスクの5列目から8列目のマスク値を得る手段を備えたことを特徴とする暗号処理装置。
【請求項3】
請求項1に記載の暗号処理装置において、
前記ラウンド鍵として192ビット鍵を用いる場合、前記ラウンド鍵保護マスクの5列目及び6列目のマスク状態を“1000”,“1001”,“1010”,“1011”,“1100”,“1101”,“1110”及び“1111”の8種類のマスク状態からそれぞれ選択する5・6列目選択手段と、
前記計算された4列目のマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の5列目及び6列目のマスク状態を計算する第2のマスク状態計算手段と、
前記計算された5列目及び6列目のマスク状態に禁止状態“0000”が含まれるか否かを判定する第2の禁止状態判定手段と、
前記8種類のマスク状態のうち、“1000”に対応する基本マスク値が記憶された第2の基本マスク値記憶手段と、
前記禁止状態“0000”が含まれないとき、前記選択された5列目及び6列目の各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該5列目及び6列目の各マスク状態に対応するそれぞれの合成マスク値を計算する第2のマスク値計算手段と
を備えたことを特徴とする暗号処理装置。
【請求項4】
請求項1乃至請求項3のいずれか1項に記載の暗号処理装置において、
前記基本マスク値のビット数“8”と同一ビット数の乱数rを生成する手段と、
前記ビット数と同一値の次数である8次の既約多項式を選択する手段とを備えており、
前記基本マスク値は、前記乱数rと、前記乱数rをそれぞれ2倍及び4倍した値2r,4rとであり、
前記マスク値計算手段は、前記既約多項式を用いたガロア体GF(28)のベクトル表現を前記マスク状態に対応させることにより、前記マスク値を計算することを特徴とする暗号処理装置。
【請求項5】
請求項1乃至請求項4のいずれか1項に記載の暗号処理装置であって、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けて記憶したマスク値対応情報記憶手段と、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記マスク値対応情報記憶手段を参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段と
を備えたことを特徴とする暗号処理装置。
【請求項6】
Sボックス入力保護マスク及びSボックス出力保護マスクを用い、ISO/IEC 10118−3に記載のワープールWhirlpoolを実行する暗号処理装置であって、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段と、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段と、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けて記憶したマスク値対応情報記憶手段と、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記マスク値対応情報記憶手段を参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段と
を備えたことを特徴とする暗号処理装置。
【請求項7】
ラウンド鍵保護マスク、Sボックス入力保護マスク及びSボックス出力保護マスクを用いてAES暗号方式を実行する暗号処理装置のプログラムであって、
前記暗号処理装置のコンピュータを、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段、
前記選択されたSボックス出力保護マスクのマスク状態とは異なるマスク状態を、前記ラウンド鍵保護マスクの1列目のマスク状態として前記7種類のマスク状態から選択する1列目選択手段、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目のマスク状態、及び「当該Sボックス出力保護マスクのマスク状態と当該1列目のマスク状態との排他的論理和の演算結果」とは異なるマスク状態を、前記ラウンド鍵保護マスクの2列目のマスク状態として前記7種類のマスク状態から選択する2列目手段、
前記ラウンド鍵保護マスクの3列目及び4列目のマスク状態を前記7種類のマスク状態からそれぞれ選択する3・4列目選択手段、
前記選択されたSボックス出力保護マスクのマスク状態、前記選択された1列目から4列目までのマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の1列目から4列目までのマスク状態を計算するマスク状態計算手段、
前記計算されたマスク状態に禁止状態“000”が含まれるか否かを判定する禁止状態判定手段、
前記7種類のマスク状態のうち、“001”,“010”及び“100”にそれぞれ対応する3個の基本マスク値を前記コンピュータのメモリに書き込む手段、
前記禁止状態が含まれないとき、前記選択された各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該選択された各マスク状態に対応するそれぞれの合成マスク値を計算するマスク値計算手段、
として機能させるためのプログラム。
【請求項8】
請求項7に記載のプログラムにおいて、
前記コンピュータを、
前記ラウンド鍵として256ビット鍵を用いる場合、前記1列目選択手段、前記2列目選択手段、前記3・4列目選択手段、前記マスク状態計算手段、前記禁止状態判定手段、前記マスク値計算手段を再度実行することにより、前記ラウンド鍵保護マスクの5列目から8列目のマスク値を得る手段として機能させるためのプログラム。
【請求項9】
請求項7に記載のプログラムにおいて、
前記コンピュータを、
前記ラウンド鍵として192ビット鍵を用いる場合、前記ラウンド鍵保護マスクの5列目及び6列目のマスク状態を“1000”,“1001”,“1010”,“1011”,“1100”,“1101”,“1110”及び“1111”の8種類のマスク状態からそれぞれ選択する5・6列目選択手段、
前記計算された4列目のマスク状態を用いて、前記AES暗号方式によるラウンド鍵更新後の5列目及び6列目のマスク状態を計算する第2のマスク状態計算手段、
前記計算された5列目及び6列目のマスク状態に禁止状態“0000”が含まれるか否かを判定する第2の禁止状態判定手段、
前記8種類のマスク状態のうち、“1000”に対応する基本マスク値を前記メモリに書き込む手段、
前記禁止状態“0000”が含まれないとき、前記選択された5列目及び6列目の各マスク状態に対応して前記各基本マスク値同士を排他的論理和により合成することにより、当該5列目及び6列目の各マスク状態に対応するそれぞれの合成マスク値を計算する第2のマスク値計算手段、
として機能させるためのプログラム。
【請求項10】
請求項7乃至請求項9のいずれか1項に記載のプログラムにおいて、
前記コンピュータを、
前記基本マスク値のビット数“8”と同一ビット数の乱数rを生成する手段、
前記ビット数と同一値の次数である8次の既約多項式を選択する手段、として機能させ、
前記基本マスク値は、前記乱数rと、前記乱数rをそれぞれ2倍及び4倍した値2r,4rとであり、
前記マスク値計算手段は、前記既約多項式を用いたガロア体GF(28)のベクトル表現を前記マスク状態に対応させることにより、前記マスク値を計算することを特徴とするプログラム。
【請求項11】
請求項7乃至請求項10のいずれか1項に記載のプログラムであって、
前記暗号処理装置のコンピュータを、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けた参照表データを前記コンピュータのメモリに書き込む手段、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記メモリ内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段、
として機能させるためのプログラム。
【請求項12】
Sボックス入力保護マスク及びSボックス出力保護マスクを用い、ISO/IEC 10118−3に記載のワープールWhirlpoolを実行する暗号処理装置のプログラムであって、
前記暗号処理装置のコンピュータを、
前記Sボックス入力保護マスクのマスク状態を“001”,“010”,“011”,“100”,“101”,“110”及び“111”の7種類のマスク状態から選択する入力選択手段、
前記選択されたSボックス入力保護マスクのマスク状態とは異なるマスク状態を、前記Sボックス出力保護マスクのマスク状態として前記7種類のマスク状態から選択する出力選択手段、
前記Sボックス入力保護マスク及び前記Sボックス出力保護マスクのマスク状態と、当該マスク状態の各ビット値“0”に対応する第1マスク値と、当該マスク状態の各ビット値“1”に対応する第2マスク値とを互いに関連付けた参照表データを前記コンピュータのメモリに書き込む手段、
前記入力選択手段及び前記出力選択手段により選択されたマスク状態に基づいて、前記メモリ内の参照表データを参照し、当該マスク状態の各ビット値“0”又は“1”に対応して前記第1マスク値又は第2マスク値を選択するマスク値選択手段、
として機能させるためのプログラム。
【図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】
【図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】
【公開番号】特開2008−233683(P2008−233683A)
【公開日】平成20年10月2日(2008.10.2)
【国際特許分類】
【出願番号】特願2007−75452(P2007−75452)
【出願日】平成19年3月22日(2007.3.22)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
【公開日】平成20年10月2日(2008.10.2)
【国際特許分類】
【出願日】平成19年3月22日(2007.3.22)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
[ Back to top ]