(57)【特許請求の範囲】
【請求項１】
原本データとランダムデータとに所定のルールに従って演算処理することにより暗号化または復号化する、マスキング方法を適用するデータ暗号処理装置であって、
前記データ暗号処理装置は、
複数個のＳ−ＢＯＸを備えたサブバイト変形ブロック（３３０）を含み、
前記Ｓ-ＢＯＸの各々は、合成ガロアフィールドＧＦ（●）上で演算を実行するインバージョン変形ブロック（４０４）を備え、
前記インバージョン変形ブロック（４０４）は、
４ビットの第１データについて２乗演算を行う４ビットの２乗演算ブロック（５１０）と、
前記２乗演算ブロック（５１０）からの出力データに定数乗算を行う４ビットの定数乗算ブロック（５２０）と、
４ビットの第２データと前記４ビットの第１データとにＸＯＲ演算を行う第１ＸＯＲゲート（５５１）と、
前記第１ＸＯＲゲート（５５１）からの出力データに前記４ビットの第２データを乗算する４ビットの第１乗算ブロック（５３１）と、
前記第１乗算ブロック（５３１）からの出力データと定数乗算ブロック（５２０）から出力データとに        ＸＯＲ演算を行う第２ＸＯＲゲート（５５２）と、
前記第２ＸＯＲゲート（５５２）からの出力データにインバージョン演算を行う４ビットのインバージョン演算ブロック（５４０）と、
前記第１ＸＯＲゲート（５５２）からの出力データと前記インバージョン演算ブロック（５４０）からの出力データとを乗算する第２乗算ブロック（５３２）と、
前記４ビットの第１データと前記インバージョン演算ブロック（５４０）からの出力データとを乗算する第３乗算ブロック（５３３）と、を備え、
前記第１乃至第３乗算ブロック（５３１〜５３３）の各々は、
入力される４ビットの第１経路データの、上位２ビットのデータと下位２ビットのデータとにＸＯＲ演算を行う第３ＸＯＲゲート（６０５）と、
入力される４ビットの第２経路データの、上位２ビットのデータと下位２ビットのデータとにＸＯＲ演算を行う第４ＸＯＲゲート（６０６）と、
前記第１経路データの前記上位２ビットのデータと前記第２経路データの前記上位２ビットのデータとを乗算する２ビットの第１乗算ブロック（６０１）と、
前記第３ＸＯＲゲート（６０５）からの出力データと前記第４ＸＯＲゲート（６０６）からの出力データとを乗算する２ビットの第２乗算ブロック（６０２）と、
前記第１経路データの前記下位２ビットのデータと前記第２経路データの前記下位２ビットのデータとを乗算する２ビットの第３乗算ブロック（６０３）と、
前記２ビットの第３乗算ブロック（６０３）からの出力データに定数乗算を行う２ビットの第４乗算ブロック（６０４）と、
前記２ビットの第１乗算ブロック（６０１）からの出力データと前記２ビットの第４乗算ブロック（６０４）からの出力データとにＸＯＲ演算を行う第５ＸＯＲゲート（６０７）と、
前記２ビットの第１乗算ブロック（６０１）からの出力データと前記２ビットの第２乗算ブロック（６０２）からの出力データとにＸＯＲ演算を行う第６ＸＯＲゲート（６０８）と、を備え、
前記第５ＸＯＲゲート（６０７）からの２ビットの出力データと前記第６ＸＯＲゲート（６０８）からの２ビットの出力データとは同時に出力され、
前記２ビットの第１乃至第３乗算ブロック（６０１〜６０３）の各々は、
マスキングされた２つの原本データａ’とｂ’とを乗算する２ビットの第１乗算ブロック（７１１）と、
前記マスキングされた原本データａ’とランダムデータｓとを乗算する２ビットの第２乗算ブロック（７１２）と、
前記マスキングされた原本データｂ’とランダムデータｒとを乗算する２ビットの第３乗算ブロック（７１３）と、
前記ランダムデータｒとｓとを乗算する２ビットの第４乗算ブロック（７１４）と、
を備えることを特徴とするデータ暗号処理装置。
【請求項２】
前記２ビットの第１乃至第３乗算ブロック（６０１〜６０３）の各々が、
２つの入力データａ，ｃをＡＮＤ論理演算して出力する第１ＡＮＤゲート（８０１）と、
２つの入力データｂ，ｃをＡＮＤ論理演算して出力する第２ＡＮＤゲート（８０２）と、
２つの入力データａ，ｄをＡＮＤ論理演算して出力する第３ＡＮＤゲート（８０３）と、
２つの入力データｂ，ｄをＡＮＤ論理演算して出力する第４ＡＮＤゲート（８０４）と、
前記第１ＡＮＤゲート（８０１）からの出力データと前記第２ＡＮＤゲート（８０２）からの出力データとにＸＯＲ演算を行う第１ＸＯＲゲート（８１１）と、
前記第１ＡＮＤゲート（８０１）からの出力データと前記第４ＡＮＤゲート（８０４）からの出力データとにＸＯＲ演算を行い、演算結果（ａｃ＋ｂｄ）を出力する第２ＸＯＲゲート（８１２）と、
前記第１ＸＯＲゲート（８１１）からの出力データと前記第３ＡＮＤゲート（８０３）からの出力データとにＸＯＲ演算を行い、演算結果（ａｃ＋ｂｃ＋ａｄ）を出力する第３ＸＯＲゲート（８１３）と、で構成されることを特徴とする請求項１に記載のデータ暗号処理装置。
【請求項３】
原本データとランダムデータとに所定のルールに従って演算処理することにより暗号化または復号化するデータ暗号処理装置であって、
前記データ暗号処理装置は、２ビットの乗算ブロックを含み、
前記マスキング方法を使用する場合には、前記２ビットの乗算ブロックは、
マスキングされた２つの原本データａ’とｂ’とを乗算する２ビットの第１乗算ブロック（７１１）と、
前記マスキングされた原本データａ’とランダムデータｓとを乗算する２ビットの第２乗算ブロック（７１２）と、
前記マスキングされた原本データｂ’とランダムデータｒとを乗算する２ビットの第３乗算ブロック（７１３）と、
前記ランダムデータｒとｓとを乗算する２ビットの第４乗算ブロック（７１４）と、で構成され、
前記マスキング方法を使用しない場合には、前記２ビットの乗算ブロックは、
２つの入力データａ，ｃをＡＮＤ論理演算して出力する第１ＡＮＤゲート（８０１）と、
２つの入力データｂ，ｃをＡＮＤ論理演算して出力する第２ＡＮＤゲート（８０２）と、
２つの入力データａ，ｄをＡＮＤ論理演算して出力する第３ＡＮＤゲート（８０３）と、
２つの入力データｂ，ｄをＡＮＤ論理演算して出力する第４ＡＮＤゲート（８０４）と、
前記第１ＡＮＤゲート（８０１）からの出力データと前記第２ＡＮＤゲート（８０２）からの出力データとにＸＯＲ演算を行う第１ＸＯＲゲート（８１１）と、
前記第１ＡＮＤゲート（８０１）からの出力データと前記第４ＡＮＤゲート（８０４）からの出力データとにＸＯＲ演算を行い、演算結果（ａｃ＋ｂｄ）を出力する第２ＸＯＲゲート（８１２）と、
前記第１ＸＯＲゲート（８１１）からの出力データと前記第３ＡＮＤゲート（８０３）からの出力データとにＸＯＲ演算を行い、演算結果（ａｃ＋ｂｃ＋ａｄ）を出力する第３ＸＯＲゲート（８１３）と、で構成されることを特徴とするデータ暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号システムに係り、特に、ＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に替る次世代の暗号アルゴリズムであるＡＥＳ（Ａｄｖａｎｃｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）に、マスキング方法を適用して電力分析攻撃に対備することのできるＡＥＳハードウェア構造に関する。
【背景技術】
【０００２】
科学技術の発達と共に、個人情報保護についての関心が大きくなりつつあり、暗号の重要性はますます高まっている。また、システムについてのさらに高いレベルの安全性を確保するために、暗号キーの長さはしだいに長くなっている。しかし、システムが小型化及び軽量化されるにつれて、システムに付与された限定されたメモリ及び演算能力などの制約によって、暗号キーを無制限に長くすることはできない。
【０００３】
従来、このような暗号についての標準としてＤＥＳが使われたが、安定性に疑問が生じ、ＡＥＳが新たなブロック暗号アルゴリズムの標準として採択された。したがって、従来の多くの応用製品に使われていた暗号化標準であるＤＥＳアルゴリズムが、ＡＥＳアルゴリズムに代替される見通しである。また、ＡＥＳアルゴリズムを実現する方法においても、ソフトウェアでＡＥＳアルゴリズムを実現するだけでなく、ハードウェア装置で具現することも重要になった。重要な応用製品にＡＥＳがハードウェアで実現されて使われている趨勢に鑑みると、攻撃者の攻撃に対備したハードウェアを実現することも必須不可欠な要素となっている。
【０００４】
攻撃者が暗号システムを攻撃するために使用する方法のうちの一つとして、暗号システムが動作したときに現れる暗号システムの電力特性を分析して、暗号システムの暗号情報を見いだす電力分析攻撃がある。これは、暗号化する前のデータであるプレインデータに含まれた複数個のビットが論理ハイ“１”であるか、または論理ロー“０”であるかを仮定し、それらについての電力曲線を分析して暗号化する前のデータを見いだす方法である。
【０００５】
この電力分析攻撃に対備する方法は多様であるが、一般的に多く使用されている方法の一つは、マスキング方法である。このマスキング方法は、暗号化するブロック内の演算を実際処理しようとする原本データのみを利用しては行わず、原本データに所定の数字を結合させて処理する方法である。例えば、マスキング方法が利用される暗号システムでは、原本データを入力する時、原本データに任意のデータを結合して暗号化または復号化演算を行う。演算後、演算されたデータから任意のデータを分離して暗号文または平文を得る。
【０００６】
前述したマスキング方法を使用すれば、暗号化または復号化が進められる途中の演算では、任意のデータが含まれたデータを処理するので原本データを予測するのは困難になる。
電力分析攻撃についてより高い安全性を有するシステムを作るために、前述した任意のデータとして所定のランダムデータを使用して暗号化または復号化を行う。これにさらに、任意のデータについての暗号化または復号化をラウンド方式で反復的に行い、行われるラウンドごとに使われるランダムデータ値を更新する。
攻撃についての従来の対応策については、非特許文献１及び２に記載されている。
【０００７】
図１Ａは、マスキング方法を使用しない場合のブロックダイヤグラムである。
図１Ｂは、マスキング方法を使用する場合のブロックダイヤグラムである。
図１Ａを参照すると、マスキング方法を使用せず、所定の演算を行うモジュール１１０の場合、入力される原本データａはモジュール１１０の内部にある演算ブロック１１１で処理され、モジュール１１０の出力がａについての関数ｆ（ａ）であることが分かる。前述したように、マスキング方法を使用しない暗号システムの場合、演算ブロック１１１の電力曲線を分析して原本データａを推測できる。
ここで、○＋はＸＯＲゲートを意味する。
【０００８】
図１Ｂを参照すると、マスキング方法を適用したモジュールでの演算過程を式１ないし式３で表示できる。
【０００９】
【数１】
0004787519.tif 000002
【００１０】
【数２】
0004787519.tif 000003
【００１１】
【数３】
0004787519.tif 000004
【００１２】
ここで、ａとｒは、それぞれ原本データと任意のランダムデータとを意味する。ｒはランダム発生器（図示せず）から発生する。
線形関数である場合、
【００１３】
【数４】
0004787519.tif 000005
が成立するので、マスキング方法を適用する場合を示す図１Ｂを参照すると、ＸＯＲ １２４でＸＯＲ演算を行った最終値は式４のように示すことができる。
【００１４】
【数５】
0004787519.tif 000006
線形関数である場合、
【００１５】
【数６】
0004787519.tif 000007
が成立するので、式４に示したように
【００１６】
【数７】
0004787519.tif 000008
が成立する。
図１Ａ及び図１Ｂは、いずれも同一の結果値ｆ（ａ）を生成する。しかし、攻撃者が侵入するために使用する電力分析攻撃についての効果面では、非常に異なる。図１Ａに示すように、マスキング方法を使用しない場合には、攻撃者の電力分析攻撃によって原本データａが容易に抽出されうる。しかし、図１Ｂに示すように、マスキング方法を使用する場合には、電力分析攻撃によって分析された電力曲線は、原本データａについてのものではないので、原本データａを抽出するのがほとんど不可能である。
しかし、非線形関数である場合には、
【００１７】
【数８】
0004787519.tif 000009
【００１８】
が成立しないので、式４を満足するためには新たな方法を考案しなければならない。
【非特許文献１】Ｍ．Ａｋｋａｒ，Ｃ．Ｇｉｒａｕｄの論文 “Ａｎ Ｉｍｐｌｅｍｅｎｔａｒｉｏｎｏｆ ＤＥＳ ａｎｄ ＡＥＳ，Ｓｅｃｕｒｅ ａｇａｉｎｓｔ Ｓｏｍｅ Ａｔｔａｃｋｓ”，ＣＨＥＳ ’０１
【非特許文献２】Ｅ．Ｔｒｉｃｈｉｎａ，Ｄ．Ｄｅ Ｓｅｔａ，Ｌ．Ｇｅｒｍａｎｉの論文“Ｓｉｍｐｌｉｆｉｅｄ Ａｄａｐｔｉｖｅ Ｍｕｌｔｉｐｌｉｃａｔｉｖｅ Ｍａｓｋｉｎｇ ｆｏｒ ＡＥＳ”，ＣＨＥＳ ’０２
【発明の開示】
【発明が解決しようとする課題】
【００１９】
本発明が解決しようとする第１の課題は、攻撃者の電力分析攻撃に対備でき、ハードウェアで実現する時に占める面積を最小化するマスキング方法が適用されたデータ暗号処理装置を提供することにある。
本発明が解決しようとする第２の課題は、攻撃者の電力分析攻撃に対備でき、ハードウェアで実現する時に占める面積を最小化するマスキング方法が適用されたＡＥＳ（Ａｄｖａｎｃｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）暗号システムを提供するところにある。
本発明が解決しようとする第３の課題は、攻撃者の電力分析攻撃に対備でき、ハードウェアで実現する時に占める面積を最小化するマスキング方法が適用されたＡＥＳ暗号方法を提供することにある。
【課題を解決するための手段】
【００２０】
第１の課題を解決するための本発明によるマスキング方法が適用されたデータ暗号処理装置は、所定の制御信号によって動作し、暗号化時には、ラウンドキー、プレインテキスト及びマスキングデータを利用したラウンド演算を行ってサイファテキストを出力し、復号化時には、ラウンドキー、サイファテキスト及びマスキングデータを利用したラウンド演算を行ってプレインテキストを出力し、前記ラウンド演算のうち一部は、合成フィールドであるガロアフィールドＧＦ(●)で実現される。
【００２１】
第２の課題を解決するための本発明によるマスキング方法が適用されたＡＥＳ暗号システムは、所定の第１制御信号によって動作し、キーデータを受信してラウンドキーを生成し、前記第１制御信号による処理結果信号を出力するキースケジューラと、所定の第２制御信号によって動作し、暗号化時には、前記ラウンドキー、プレインテキスト及びマスキングデータを受信してラウンド演算を行い、復号化時には、前記ラウンドキー、サイファテキスト及びマスキングデータを受信してラウンド演算を行い、前記第２制御信号による演算実行の結果信号を出力するデータ暗号処理装置と、前記キースケジューラに送信する前記第１制御信号及び前記キースケジューラから受信する前記処理結果信号を利用して、前記キースケジューラの動作を制御し、前記データ処理装置に送信する前記第２制御信号及び前記データ処理装置から受信する前記演算実行の結果信号を利用して、前記データ処理装置を制御し、受信した前記演算実行の結果信号によって、暗号化時にはサイファテキストを出力し、復号化時にはプレインテキストを出力する制御装置と、を備える。
【００２２】
第３の課題を解決するための本発明によるマスキング方法が適用されたＡＥＳ暗号方法は、アッドラウンドキー変形段階と、サブバイト変形段階と、シフトロー変形段階と、ミックスカラム変形段階と、を備え、前記サブバイト変形段階は、線形関数の特性を有するアフィン変形段階、インバースアフィン変形段階、アイソモーフィズム段階、インバースアイソモーフィズム段階、及び非線形関数の特徴を有するインバージョン段階を備え、前記アイソモーフィズム段階、インバースアイソモーフィズム段階及びインバージョン段階は、ガロアフィールドＧＦ(●)を利用して実現され、ＧＦ(２８)ドメインの元素をＧＦ(((２２)２)２)ドメインの元素に変換して使用し、ＧＦ(((２２)２)２)ドメインの元素はＧＦ((２２)２)ドメインの元素に、ＧＦ((２２)２)ドメインの元素はＧＦ(２２)ドメインの元素にそれぞれ変換されて実現される。
【発明の効果】
【００２３】
本発明によるマスキング方法が適用されたＡＥＳ暗号方法及び暗号システムは、ＡＥＳアルゴリズム内に存在する線形関数はもとより、非線形関数についていずれもマスキング方法を適用したハードウェアであるので、攻撃者の電力分析攻撃に対する対応策を樹立できる。また、本発明では、合成フィールドＧＦ(((２２)２)２)上で実現されたＳ−Ｂｏｘにマスキング方法を適用することによって、システムを実現するための全体面積が従来の方法を使用する場合に比べて減り、結局、電力消費も減る。
したがって、メモリの容量、演算能力及び電力消費に非常に厳格な制限が伴うスマートカードに適用するのに最適である。
【発明を実施するための最良の形態】
【００２４】
本発明と、本発明の動作上の利点及び本発明の実施によって達成される目的を十分に理解するためには、本発明の望ましい実施例を例示する添付図面及び図面に記載された内容を参照しなければならない。
以下、添付された図面を参照して本発明の望ましい実施例を説明することにより、本発明を詳細に説明する。各図面に付された同一参照符号は同一部材を示す。
【００２５】
また、図面に示されたブロックは機能ブロックであるが、それらの機能を行う段階を示す場合もある。しかし、説明を簡単にするために、以下の説明ではそれを区別せずに使用する。これは、前記説明から、暗号段階及び暗号システムの機能ブロックについての事実を同時に類推するのが当業者に当然であるからである。
【００２６】
図２は、本発明によるマスキング方法が適用されたＡＥＳ暗号システムを示すブロックダイヤグラムである。
図２を参照すると、ＡＥＳ暗号システムは、キースケジューラ２１０、データ暗号処理装置２２０及び制御装置２３０を備える。
キースケジューラ２１０は、第１制御信号Ｃ１によって動作し、受信されたキーデータを利用してラウンドキーＲＫを生成し、制御装置２３０に処理結果を通報Ｒ１する。
データ暗号処理装置２２０は、第２制御信号Ｃ２によって動作し、暗号化時には、ラウンドキーＲＫ、プレインテキスト及びマスキングデータを受信してラウンド演算を行い、復号化時には、ラウンドキーＲＫ、サイファテキスト及びマスキングデータを受信してラウンド演算を行い、演算実行結果を制御装置２３０に伝達Ｒ２する。
【００２７】
制御装置２３０は、キースケジューラ２１０を制御する第１制御信号Ｃ１及びデータ暗号処理装置２２０を制御する第２制御信号Ｃ２を出力し、データ暗号処理装置２２０から受信した結果データＲ２を利用して、暗号化時にはサイファテキストを出力し、復号化時にはプレインテキストを出力する。
【００２８】
図３は、図２に示すデータ暗号処理装置２２０のブロックダイヤグラムである。
図３を参照すると、データ暗号処理装置２２０は、第１アッドラウンドキー変形ブロック３１０、第１マルチプレクサ３２０、サブバイト変形ブロック３３０、シフトロー変形ブロック３４０、インバースシフトロー変形ブロック３５０、ミックスカラム変形ブロック３６０、第２マルチプレクサ３７０、第２アッドラウンドキー変形ブロック３８０及びインバースミックスカラム変形ブロック３９０を備える。
【００２９】
第１アッドラウンドキー変形ブロック３１０は、暗号化時には、前記プレインテキスト、前記マスキングデータ及び前記ラウンドキーを受信してアッドラウンドキー変形演算を行い、復号化時には、前記サイファテキスト、前記マスキングデータ及び前記ラウンドキーを受信してアッドラウンドキー変形演算を行う。
第１マルチプレクサ３２０は、制御信号Ｃ２によって、第１アッドラウンドキー変形ブロック３１０の出力データ、演算実行の結果信号Ｒ１及びフィードバック信号Ｆ１のうち一つを選択して出力する。
【００３０】
サブバイト変形ブロック３３０は、制御信号Ｃ２によって、第１マルチプレクサ３２０の出力データＩＮＤＡＴＡについてサブバイト変形演算を行う複数個のＳ−ＢＯＸを備える。
シフトロー変形ブロック３４０は、暗号化演算を行う時、サブバイト変形ブロック３３０の出力データについてシフトロー変形演算を行う。
インバースシフトロー変形ブロック３５０は、復号化演算を行う時、サブバイト変形ブロック３３０の出力データについてインバースシフトロー変形演算を行う。
【００３１】
ミックスカラム変形ブロック３６０は、シフトロー変形ブロック３４０の出力データについてミックスカラム変形演算を行う。
第２マルチプレクサ３７０は、制御信号Ｃ２によって、ミックスカラム変形ブロック３６０の出力データ、シフトロー変形ブロック３４０の出力データ、及びインバースシフトロー変形ブロック３５０の出力データのうち、一つを選択して出力する。
【００３２】
第２アッドラウンドキー変形ブロック３８０は、ラウンドキー及び第２マルチプレクサ３７０の出力データについて、アッドラウンドキー変形演算を行って演算実行の結果信号Ｒ２を出力する。
インバースミックスカラム変形ブロック３９０は、演算実行の結果信号Ｒ２について、インバースミックスカラム変形演算を行って生成させたフィードバック信号Ｆ１を出力する。
【００３３】
図３を参照すると、示された機能ブロックがそれぞれ所定の演算を行うが、それらの演算を行うブロックは、同一の演算を行う段階と混用して使用しても混同が発生しないであろう。したがって、以下の説明では、機能ブロックに関して説明し、それらを演算を行う段階に拡大して適用する。
【００３４】
図４は、図３に示されたサブバイト変形ブロック３３０を構成するＳ−ＢＯＸのブロックダイヤグラムである。
図４を参照すると、Ｓ−ＢＯＸは、インバースアフィン変形ブロック４０１、第３マルチプレクサ４０２、アイソモーフィズム変形ブロック４０３、インバージョン変形ブロック４０４、インバースアイソモーフィズム変形ブロック４０５、アフィン変形ブロック４０６及び第４マルチプレクサ４０７を備える。
【００３５】
インバースアフィン変形ブロック４０１は、復号化演算を行う時、第１マルチプレクサ３２０の出力データＩＮＤＡＴＡについてインバースアフィン変形演算を行う。
第３マルチプレクサ４０２は、制御信号Ｃ２によって、インバースアフィン変形ブロック４０１の出力データ及び第１マルチプレクサ３２０の出力データＩＮＤＡＴＡのうち一つを選択して出力する。
アイソモーフィズム変形ブロック４０３は、第３マルチプレクサ４０２の出力データについてアイソモーフィズム変形演算を行う。
【００３６】
インバージョン変形ブロック４０４は、アイソモーフィズム変形ブロック４０３の出力データについてインバージョン変形演算を行う。
インバースアイソモーフィズム変形ブロック４０５は、インバージョン変形ブロック４０４の出力データについてインバースアイソモーフィズム変形演算を行う。
アフィン変形ブロック４０６は、暗号化演算を行う時、インバースアイソモーフィズム変形ブロック４０５の出力データについてアフィン変形演算を行う。
第４マルチプレクサ４０７は、制御信号Ｃ２によって、アフィン変形ブロック４０６の出力データ及びインバースアイソモーフィズム変形ブロック４０５の出力データのうち一つを選択して出力する。
【００３７】
前述した演算機能ブロックのうち、インバースアフィン変形ブロック４０１、アフィン変形ブロック４０６、アイソモーフィズム変形ブロック４０３及びインバースアイソモーフィズム変形ブロック４０５では、いずれも線形関数についての演算を行う。線形関数の演算を実際のハードウェアで実現する場合、マスキング方法を適用する時にも、マスキング方法を適用しない時に使用するハードウェアモジュールをそのまま利用してこれを実現できる。この際、ハードウェアは、マスキング方法が適用されない場合に比べて使用面積は増加するが、複雑度は増加しない。
【００３８】
しかし、インバージョン変形ブロック４０４での演算は、非線形関数についてのものなので、インバージョン変形ブロックをハードウェアで実現するために、マスキング方法を適用しない時に使用するハードウェアモジュールをそのままでは利用できない。
なぜなら、非線形関数の場合、マスキング方法を適用して演算されたデータから原本データを容易に復元できないためである。したがって、この問題を解決するために、原本データ及びランダムデータを共に演算するが、中間の演算過程では、原本データが現れないようにし、最終では原本データが抽出できるというアイデアがなければならない。
【００３９】
マスキング方法が適用されたＡＥＳ暗号システムの最終ラウンドを除いたラウンド動作では、サブバイト変形ブロック３３０、シフトロー変形ブロック３４０、ミックスカラム変形ブロック３６０及びアッドラウンドキー変形ブロック３８０演算が行われる。本発明では、これら４個の変形装置のうち、アッドラウンドキー変形ブロック３１０、３８０を除いた残りの３個の変形ブロックにマスキング方法を適用した。
【００４０】
シフトロー変形ブロック３４０及びミックスカラム変形ブロック３６０での演算は、線形関数の性質を有する。したがって、マスキングが適用されたハードウェアを実現するための特別な回路を考案する必要がない。但し、非線形関数の特性を有するサブバイト変形ブロック３３０での演算の場合、ハードウェアを実現するためには新たなアイデアが適用された。
【００４１】
本発明の一実施例によるマスキング方法が適用されたＡＥＳ暗号システムは、サブバイト変形ブロック３３０にマスキング方法を適用する。サブバイト変形ブロック３３０を構成するＳ−ＢＯＸのガロアフィールドＧＦ(２8)での演算を、合成フィールドＧＦ(((２２)２)２)での演算に変形した。ＧＦ(((２２)２)２)での演算は、ＧＦ((２２)２)及びＧＦ(２２)を利用して実現した。
本発明で使われる多項式は、式５ないし式８で表わされる。
【００４２】
【数９】
0004787519.tif 000010
【００４３】
【数１０】
0004787519.tif 000011
【００４４】
【数１１】
0004787519.tif 000012
【００４５】
【数１２】
0004787519.tif 000013
ここで、
【００４６】
【数１３】
0004787519.tif 000014
であり、
【００４７】
【数１４】
0004787519.tif 000015
である。
【００４８】
図５は、図４に示されたＧＦ(((２２)２)２)ドメインでのインバージョン変形ブロック４０４の内部ブロックダイヤグラムである。
図５を参照すれば、ＧＦ(((２２)２)２)ドメインでのインバージョン変形ブロック４０４は、４ビットの２乗演算ブロック５１０、４ビットの定数乗算ブロック５２０、３個の４ビットの乗算ブロック５３１ないし５３３、４ビットのインバージョンブロック５４０及び２個のＸＯＲブロック５５１、５５２を備える。
【００４９】
４ビットの２乗演算ブロック５１０は、４ビットの第１データについて２乗演算を行う。４ビットの定数乗算ブロック５２０は、４ビットの２乗演算ブロック５１０の結果データについて定数乗算を行う。
第１ ＸＯＲブロック５５１は、４ビットの第２データ及び４ビットの第１データについてＸＯＲ演算を行う。４ビットの第１乗算ブロック５３１は、第１ ＸＯＲブロック５５１の結果データ及び４ビットの第２データについて乗算を行う。
【００５０】
第２ ＸＯＲブロック５５２は、４ビットの第１乗算ブロック５３１及び４ビットの定数乗算ブロック５２０の結果データについてＸＯＲ演算を行う。４ビットのインバージョンブロック５４０は、第２ ＸＯＲブロック５５２の結果データについてインバージョン演算を行う。
第２乗算ブロック５３２は、第１ ＸＯＲブロック５５１及び４ビットのインバージョンブロック５４０の結果データについて乗算を行う。第３乗算ブロック５３３は、第１データ及び４ビットのインバージョンブロック５４０のデータについて乗算を行う。
【００５１】
結論的に、４ビットの２乗演算ブロック５１０及び４ビットの定数乗算ブロック５２０は、各ブロックで行われる演算が線形的であるので、マスキング方法を適用しない場合と同一の演算を行うことにより実現できる。但し、３個の４ビットの乗算ブロック５３１ないし５３３及び４ビットのインバージョンブロック５４０で行われる演算は、非線形的であるので、マスキング方法が適用される場合と同一の演算を単純に利用しては実現できない。
【００５２】
したがって、マスキング方法を適用するために、演算が線形的になるように数学的またはハードウェア的な変形が必要である。
図５に示す３個の４ビットの乗算ブロック５３１ないし５３３での演算は、式９及び式１０で表わされる。ここで、３個の４ビットの乗算ブロック５３１ないし５３３は互いに同一であるので、一つの４ビットの乗算ブロックについて説明する。
【００５３】
【数１５】
0004787519.tif 000016
【００５４】
【数１６】
0004787519.tif 000017
【００５５】
式１０を実現するためには、２ビットの乗算４回、ＸＯＲ ３回及びｘｐｈｉ乗算を１回行えばよい。式１０は、式１１のようにさらに簡単に表わされる。
【００５６】
【数１７】
0004787519.tif 000018
【００５７】
図６は、図５に示された４ビットの乗算ブロック５３１ないし５３３の内部ブロックダイヤグラムである。
図６を参照すると、４ビットの乗算ブロック５３１ないし５３３は、第４ ＸＯＲ演算ブロック６０５、第５ ＸＯＲ演算ブロック６０６、２ビットの第１乗算ブロック６０１、２ビットの第２乗算ブロック６０２、２ビットの第３乗算ブロック６０３、２ビットの第４乗算ブロック６０４、第６ ＸＯＲ演算ブロック６０７、第７ ＸＯＲ演算ブロック６０８を備える。
【００５８】
４ビットの乗算ブロック５３１ないし５３３に入力される２個の４ビットデータを、第１経路データＰ１及び第２経路データＰ２と仮定して説明する。
第４ ＸＯＲブロック６０５は、第１経路データＰ１のうち、上位２ビットのデータ及び第１経路データのうち、下位２ビットのデータについてＸＯＲ演算を行う。第５ ＸＯＲ演算ブロック６０６は、第２経路データＰ２のうち、上位２ビットのデータ及び第２経路データＰ２のうち、下位２ビットのデータについてＸＯＲ演算を行う。
【００５９】
２ビットの第１乗算ブロック６０１は、第１経路データＰ１のうち、上位２ビットのデータ及び第２経路データＰ２のうち、上位２ビットのデータについて乗算を行う。２ビットの第２乗算ブロック６０２は、第４ ＸＯＲブロック６０５の結果データ及び第５ ＸＯＲ演算ブロック６０６の結果データについて乗算を行う。２ビットの第３乗算ブロック６０３は、第１経路データＰ１の下位２ビット及び第２経路データＰ２の下位２ビットについて乗算を行う。２ビットの第４乗算ブロック６０４は、２ビットの第３乗算ブロック６０３の結果データについて定数乗算を行う。
【００６０】
第６ ＸＯＲブロック６０７は、２ビットの第１乗算ブロック６０１の結果データ及び２ビットの第４乗算ブロック６０４の結果データについてＸＯＲ演算を行う。第７ ＸＯＲ演算ブロック６０８は、２ビットの第１乗算ブロック６０１の結果データ及び２ビットの第２乗算ブロック６０２の結果データについてＸＯＲ演算を行う。
【００６１】
図６を参照すると、式１０の一部分が式１１のように最適化されれば、式１０を実現するために、２ビットの乗算（即ち、２ビットの第１ないし第３乗算ブロック６０１ないし６０３）を３回、ＸＯＲ（即ち、第４ないし第７ ＸＯＲ演算ブロック６０５ないし６０８）を４回、及び２ビットの定数乗算（即ち、２ビットの第４乗算ブロック６０４）を１回行なえばよい。
【００６２】
図７は、図６に示された４ビットの乗算ブロック５３１ないし５３３で使われる２ビットの乗算ブロックの内部ブロックダイヤグラムである。
図７を参照すると、２ビットの乗算ブロックは、４個の２ビットの乗算ブロック７１１ないし７１４及び２個のＸＯＲ演算ブロック７２１、７２２を備える。
２ビットの第１乗算ブロック７１１は、マスキングされた２つの原本データａ’、ｂ’を乗算する。２ビットの第２乗算ブロック７１２は、マスキングされた原本データａ’及びランダムデータｓを乗算する。２ビットの第３乗算ブロック７１３は、ランダムデータｒ及びマスキングされた原本データｂ’を乗算する。２ビットの第４乗算ブロック７１４は、２個のランダムデータｒ、ｓを乗算する。
【００６３】
第１ ＸＯＲブロック７２１は、２ビットの第１乗算ブロック７１１の出力データ、２ビットの第２乗算ブロック７１２の出力データ、及びマスキングされた原本データｂ’についてＸＯＲ演算を行って出力する。第２ ＸＯＲブロック７２２は、２ビットの第３乗算ブロック７１３の出力データ、２ビットの第４乗算ブロック７１４の出力データ、及びマスキングされた原本データｂ’についてＸＯＲ演算を行って出力する。
ａ'、ｒ、ｂ'及びｓの関係は、式１２ないし式１４のように与えられる。
【００６４】
【数１８】
0004787519.tif 000019
【００６５】
【数１９】
0004787519.tif 000020
【００６６】
【数２０】
0004787519.tif 000021
【００６７】
ここで、ａ及びｂは原本データであり、ｒ及びｓはランダムデータ値である。
図７に示された２ビットの乗算ブロックの演算は、式１５のように表わされる。
【００６８】
【数２１】
0004787519.tif 000022
【００６９】
入力される原本データがａ及びｂである時、マスキング方法を適用しない２ビットの乗算ブロックでの演算結果は、原本データの積ａｂである。入力される原本データは同一であり、ランダムデータｒ、ｓが追加されると仮定すれば、マスキング方法を適用した２ビットの乗算ブロックでの演算結果は、
【００７０】
【数２２】
0004787519.tif 000023
である。演算結果値
【００７１】
【数２３】
0004787519.tif 000024
をＸＯＲ演算を行って得た結果がａｂであれば、マスキング方法を適用するのに何の問題もなくなる。
【００７２】
【数２４】
0004787519.tif 000025
をＸＯＲ演算を行う過程を式１６に示した。
【００７３】
【数２５】
0004787519.tif 000026
【００７４】
式１６を参照すると、図７に示された出力値についてＸＯＲ演算を行うことによって、原本データａｂが復元されることが分かる。それは、本発明で提案したマスキング方法を適用できるということを意味する。
図７で使われた２ビットの乗算ブロック７１１ないし７１４は、式１７のように表わされる。
【００７５】
【数２６】
0004787519.tif 000027
【００７６】
図８は、式１７の演算を論理ゲートで実現したダイヤグラムである。
図８を参照すると、図７に示す２ビットの乗算ブロック７１１ないし７１４は、４個のＡＮＤゲート８０１ないし８０４及び３個のＸＯＲゲート８１１ないし８１３を利用して実現できる。
【００７７】
第１ ＡＮＤゲート８０１は、２個の入力データａ、ｃについて論理的にＡＮＤして出力する。第２ ＡＮＤゲート８０２は、２個の入力データｂ、ｃについて論理的にＡＮＤして出力する。第３ ＡＮＤゲート８０３は、２個の入力データａ、ｄについて論理的にＡＮＤして出力する。第４ ＡＮＤゲート８０４は、２個の入力データｂ、ｄについて論理的にＡＮＤして出力する。
【００７８】
第１ＸＯＲゲート８１１は、第１ＡＮＤゲート８０１及び第２ＡＮＤゲート８０２の出力データについてＸＯＲ演算を行う。第２ＸＯＲゲート８１２は、第１ＡＮＤゲート８０１及び第４ＡＮＤゲート８０４の出力データについて、ＸＯＲ演算を行って出力する（ａｃ＋ｂｄ）。第３ＸＯＲゲート８１３は、第１ＸＯＲゲート８１１の出力データ及び第３ＡＮＤゲート８０３の出力データについて、ＸＯＲ演算を行って出力する（ａｃ＋ｂｃ＋ａｄ）。
【００７９】
図９は、図５に示す４ビットのインバージョンブロック５４０の内部ブロックダイヤグラムである。
0004787519.tif 000028
【００８０】
２ビットの２乗演算ブロック９１０は、入力された４ビットのデータのうち、上位２ビットのデータについて２乗演算を行う。２ビットの定数乗算ブロック９２０は、２ビットの２乗演算ブロック９１０の結果データについて定数乗算を行う。
第３ ＸＯＲ演算ブロック９５１は、上位２ビットのデータ及び下位２ビットのデータについてＸＯＲ演算を行う。２ビットの第５乗算ブロック９３１は、第３ ＸＯＲ演算ブロック９５１の結果データ及び下位２ビットのデータについて乗算を行う。
【００８１】
第４ ＸＯＲ演算ブロック９５２は、２ビットの定数乗算ブロック９２０の結果データ及び第５乗算ブロック９３１の結果データについてＸＯＲ演算を行う。２ビットのインバージョンブロック９４０は、第４ ＸＯＲ演算ブロック９５２の出力データについてインバージョン演算を行う。
【００８２】
２ビットの第６乗算ブロック９３２は、２ビットのインバージョンブロック９４０の結果データ及び第３ ＸＯＲ演算ブロック９５１の結果データについて乗算を行う。２ビットの第７乗算ブロック９３３は、２ビットのインバージョンブロック９４０の結果データ及び上位２ビットのデータについて乗算を行う。
【００８３】
図９及び図５を比較すれば、図９に示した４ビットのインバージョンブロック９４０ＧＦ((２２)２)及び図５に示した８ビットのインバージョンブロック５４０ＧＦ(((２２)２)２)は、その構成機能ブロックは互いに同一であり、構成機能ブロックで演算されるデータが４ビットから２ビットに減ったということが分かる。ここで、２ビットの２乗演算ブロック９１０、２ビットの定数乗算ブロック９２０は、既にその実現可能性について説明したので、ここでは省略する。また、２ビットのインバージョンブロック９４０での演算は、２ビットの２乗演算と同一であるので、それをハードウェアで実現することは問題とならない。
【００８４】
以上のように、図面と明細書で最適の実施例が開示された。ここで、特定の用語が使われたが、これは単に、本発明を説明するための目的で使われたものであり、意味限定や特許請求の範囲に記載された本発明の範囲を制限するために使われたものではない。したがって、当業者であれば、これから多様な変形及び均等な他の実施例が可能であるという点を理解できるであろう。従って、本発明の真の技術的な保護範囲は、特許請求の範囲の技術的思想により決まらなければならない。
【産業上の利用可能性】
【００８５】
本発明は、所定の防護壁が設置されたシステムに接近するために暗号を入力し、入力された暗号によって出入を認証されねばならない暗号システムに利用できる。また、デバイスの間に送受信されるデータについての暗号化、及び相手のデバイスを認証できる暗号システムに利用できる。
【図面の簡単な説明】
【００８６】
【図１Ａ】マスキング方法を使用しない場合のブロックダイヤグラムである。
【図１Ｂ】マスキング方法を使用する場合のブロックダイヤグラムである。
【図２】本発明によるマスキング方法が適用されたＡＥＳ暗号システムを示すブロックダイヤグラムである。
【図３】図２に示されたデータ暗号処理装置についてのブロックダイヤグラムである。
【図４】図３に示されたサブバイト変形ブロックを構成するＳ−ＢＯＸのブロックダイヤグラムである。
【図５】図４に示されたＧＦ(((２２)２)２)ドメインでのインバージョン演算ブロックの内部ブロックダイヤグラムである。
【図６】図５に示された４ビットの乗算ブロックの内部ブロックダイヤグラムである。
【図７】図６に示された４ビットの乗算ブロックで使われる２ビットの乗算ブロックの内部ブロックダイヤグラムである。
【図８】式１７の演算を論理ゲートで具現したダイヤグラムである。
【図９】図５に示された４ビットのインバージョン演算ブロックを示すブロックダイヤグラムである。
【符号の説明】
【００８７】
２１０    キースケジューラ
２２０    データ暗号処理装置 
２３０    制御装置
【図１Ａ】
0004787519.tif 000029
【図１Ｂ】
0004787519.tif 000030
【図２】
0004787519.tif 000031
【図３】
0004787519.tif 000032
【図４】
0004787519.tif 000033
【図５】
0004787519.tif 000034
【図６】
0004787519.tif 000035
【図７】
0004787519.tif 000036
【図８】
0004787519.tif 000037
【図９】
0004787519.tif 000038