(57)【要約】  本発明は、暗号アルゴリズムを実行する方法及び装置を開示する。この方法は、第１操作と第２操作を含む第１暗号アルゴリズム標準に従う第１有限体におけるデータと第１有限体における鍵値を受信するステップと、第１有限体におけるデータと鍵を、第２暗号アルゴリズム標準に従う第２有限体におけるデータと鍵値に変換するステップと、第１操作と第２操作を、第２暗号アルゴリズム標準に従う第２有限体における第１変更操作と第２変更操作に変換するステップと、第３有限体におけるデータを生成するように、第２有限体におけるデータと鍵値に対して第１変更操作を実行するステップと、第４有限体におけるデータを生成するように、第３有限体におけるデータに対して第２変更操作を実行するステップと、第４有限体におけるデータを、第１暗号アルゴリズム標準に従う第５有限体におけるデータに変換するステップを含む。
2019519801.tif 000002
【特許請求の範囲】
【請求項１】
暗号アルゴリズムを実行する方法であって、
第１操作と第２操作を含む第１暗号アルゴリズム標準に従う第１有限体におけるデータと第１有限体における鍵値を受信するステップと、
第１暗号アルゴリズム標準に従う前記第１有限体におけるデータを、第２暗号アルゴリズム標準に従う第２有限体におけるデータに変換するステップと、
第１暗号アルゴリズム標準に従う前記第１有限体における鍵値を、第２暗号アルゴリズム標準に従う第２有限体における鍵値に変換するステップと、
前記第１操作を、第２暗号アルゴリズム標準に従う第２有限体における第１変更操作に変換するステップと、
前記第２操作を、第２暗号アルゴリズム標準に従う第２有限体における第２変更操作に変換するステップと、
前記第２有限体におけるデータと前記第２有限体における鍵値に対して変更操作を実行するステップとを含み、
前記変更操作は、
第３有限体におけるデータを生成するように、前記第２有限体におけるデータと前記第２有限体における鍵値に対して前記第１変更操作を実行するステップと、
第４有限体におけるデータを生成するように、前記第３有限体におけるデータに対して前記第２変更操作を実行するステップと、
前記第４有限体におけるデータを、第１暗号アルゴリズム標準に従う第５有限体におけるデータに変換するステップと、
を含むことを特徴とする暗号アルゴリズムを実行する方法。
【請求項２】
前記第１有限体におけるデータ、第２有限体におけるデータ、第３有限体におけるデータ、第４有限体におけるデータ、第５有限体におけるデータ、第１有限体における鍵値及び第２有限体における鍵値の各々は、ガロア体ＧＦ（２８）における要素である、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１暗号アルゴリズム標準は、ＳＭ４暗号アルゴリズムである、ことを特徴とする請求項１に記載の方法。
【請求項４】
前記第２暗号アルゴリズム標準は、高度データ暗号化標準ＡＥＳである、ことを特徴とする請求項１に記載の方法。
【請求項５】
前記第１有限体におけるデータと前記第２有限体におけるデータはいずれも１６バイトの平文データを含む、ことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１有限体における鍵値と前記第２有限体における鍵値はいずれも４バイトのラウンド鍵を含む、ことを特徴とする請求項１に記載の方法。
【請求項７】
前記第１操作と前記第１変更操作はいずれも置換操作である、ことを特徴とする請求項１に記載の方法。 
【請求項８】
前記置換操作は、乗法逆元関数を含む、ことを特徴とする請求項７に記載の方法。
【請求項９】
前記乗法逆元関数は、ＡＥＳＤＥＣＬＡＳＴとＡＥＳＥＮＣＬＡＳＴの一方又は両方を用いて実行される、ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記第１変更操作は、前記第１操作の同型形式である、ことを特徴とする請求項７に記載の方法。
【請求項１１】
前記第１操作と前記第１変更操作は、第１写像変換と第２写像変換を含む、ことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第１操作を前記第１変更操作に変換するには、同型写像行列を前記第１写像変換と前記第２写像変換に写像して適用する必要がある、ことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記第２操作と前記第２変更操作はいずれも並び替え操作である、ことを特徴とする請求項１に記載の方法。
【請求項１４】
前記第２変更操作は、前記第２操作の同型形式である、ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第２操作を前記第２変更操作に変換するには、同型写像行列を前記第２操作に適用する必要がある、ことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第５有限体におけるデータは、１６バイトの暗号文データを含む、ことを特徴とする請求項１に記載の方法。
【請求項１７】
前記第１暗号アルゴリズム標準によれば、データ変更操作には一定のラウンド数繰り返して実行される必要がある、ことを特徴とする請求項１に記載の方法。
【請求項１８】
前記第１有限体におけるデータを前記第２有限体におけるデータに変換することは、複数の第１有限体におけるデータポイントを複数の第２有限体におけるデータポイントに並行に変換することを含む、ことを特徴とする請求項１に記載の方法。
【請求項１９】
前記第１有限体における鍵値を前記第２有限体における鍵値に変換する時に、複数の第１有限体における鍵値のデータポイントを複数の第２有限体における鍵値のデータポイントに並行に変換することを含む、ことを特徴とする請求項１に記載の方法。
【請求項２０】
前記第４有限体におけるデータを前記第５有限体におけるデータに変換する時に、複数の第４有限体におけるデータポイントを複数の第５有限体におけるデータポイントに並行に変換することを含む、ことを特徴とする請求項１に記載の方法。
【請求項２１】
前記第３有限体におけるデータに対して前記第２変更操作を実行する時に、第３有限体における複数のデータポイントに対して第２変更操作を並行に実行することを含む、ことを特徴とする請求項１に記載の方法。
【請求項２２】
前記第２有限体におけるデータに対して前記第１変更操作を実行する時に、高度データ暗号化標準新命令セットＡＥＳ−ＮＩを使用して隔離されたハードウェア環境で実行する必要がある、ことを特徴とする請求項１に記載の方法。
【請求項２３】
前記第３有限体におけるデータに対して前記第２変更操作を実行する時に、高度データ暗号化標準新命令セットＡＥＳ−ＮＩを使用して隔離されたハードウェア環境で実行する必要がある、ことを特徴とする請求項１に記載の方法。
【請求項２４】
コンピュータシステムであって、少なくとも１つのプロセッサーを備え、少なくとも１つの前記プロセッサーは、
第１操作と第２操作を含む第１暗号アルゴリズム標準に従う第１有限体におけるデータと第１有限体における鍵値を受信し、
第１暗号アルゴリズム標準に従う第１有限体におけるデータを、第２暗号アルゴリズム標準に従う第２有限体におけるデータに変換し、
第１暗号アルゴリズム標準に従う第１有限体における鍵値を、第２暗号アルゴリズム標準に従う第２有限体における鍵値に変換し、
第１操作を、第２暗号アルゴリズム標準に従う第２有限体における第１変更操作に変換し、
第２操作を、第２暗号アルゴリズム標準に従う第２有限体における第２変更操作に変換し、
データ変更操作を実行するように配置され、
前記データ変更操作は、
第３有限体におけるデータを生成するように、前記第２有限体におけるデータと前記第２有限体における鍵値に対して前記第１変更操作を実行すること、
第４有限体におけるデータを生成するように、前記第３有限体におけるデータに対して前記第２変更操作を実行すること、及び
前記第４有限体におけるデータを、第１暗号アルゴリズム標準に従う第５有限体におけるデータに変換することを含む、
ことを特徴とするコンピュータシステム。
【請求項２５】
前記プロセッサーは、単一命令多重データ流ＳＩＭＤを使用して、
第１暗号アルゴリズム標準に従う前記第１有限体におけるデータを、第２暗号アルゴリズム標準に従う前記第２有限体におけるデータに変換する操作と、
第１暗号アルゴリズム標準に従う前記第１有限体における鍵値を、第２暗号アルゴリズム標準に従う前記第２有限体における鍵値に変換する操作と、
前記第４有限体におけるデータを、第１暗号アルゴリズム標準に従う前記第５有限体におけるデータに変換する操作と、
前記第３有限体のデータに対して前記第２変更操作を実行して第４有限体におけるデータを生成する操作と、を実行するように配置される、
ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項２６】
前記第２変更操作は、前記第２操作の同型形式である、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項２７】
前記第２操作を前記第２変更操作に変換することは、同型写像行列を第２操作に適用することを含む、ことを特徴とする請求項２６に記載のコンピュータシステム。
【請求項２８】
前記第１暗号アルゴリズム標準に基づいて、データ変更操作は一定の回数繰り返して実行される必要がある、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項２９】
前記第１有限体におけるデータ、第２有限体におけるデータ、第３有限体におけるデータ、第４有限体におけるデータ、第５有限体におけるデータ、第１有限体における鍵値及び第２有限体における鍵値の各々は、ガロア体ＧＦ（２８）における要素として表される、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項３０】
前記第１暗号アルゴリズム標準は、ＳＭ４暗号アルゴリズムである、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項３１】
前記第２暗号アルゴリズム標準は、高度データ暗号化標準ＡＥＳである、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項３２】
前記第１有限体におけるデータと前記第２有限体におけるデータはいずれも１６バイトの平文データを含む、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項３３】
前記第１有限体における鍵値と前記第２有限体における鍵値はいずれも４バイトのラウンド鍵を含む、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項３４】
前記第１操作と前記第１変更操作はいずれも置換操作である、ことを特徴とする請求項２４に記載のコンピュータシステム。 
【請求項３５】
前記置換操作は、乗法逆元関数を含む、ことを特徴とする請求項３４に記載のコンピュータシステム。
【請求項３６】
前記乗法逆元関数は、ＡＥＳＤＥＣＬＡＳＴとＡＥＳＥＮＣＬＡＳＴの一方又は両方を用いて実行される、ことを特徴とする請求項３５に記載のコンピュータシステム。
【請求項３７】
前記第１変更操作は、前記第１操作の同型形式である、ことを特徴とする請求項３４に記載のコンピュータシステム。
【請求項３８】
前記第１操作と前記第１変更操作は、第１写像変換と第２写像変換を含む、ことを特徴とする請求項３７に記載のコンピュータシステム。
【請求項３９】
前記第１操作を前記第１変更操作に変換することには、同型写像行列を前記第１写像変換と前記第２写像変換に写像して適用する必要がある、ことを特徴とする請求項３８に記載のコンピュータシステム。
【請求項４０】
前記第２操作と前記第２変更操作はいずれも置換操作である、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項４１】
前記第５有限体におけるデータは、１６バイトの暗号文データを含む、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項４２】
前記第２有限体のデータに対して前記第１変更操作を実行することは、高度暗号化アルゴリズム新命令セットＡＥＳ−ＮＩにより、隔離されたハードウェア環境において完了する、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項４３】
前記第３有限体のデータに対して前記第２変更操作を実行することは、高度暗号化アルゴリズム新命令セットＡＥＳ−ＮＩにより、隔離されたハードウェア環境において完了する、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項４４】
前記第１有限体と第２有限体におけるデータは、１６バイトの暗号文データを含む、ことを特徴とする請求項２４に記載のコンピュータシステム。
【請求項４５】
前記第５有限体におけるデータは、１６バイトの平文データである、ことを特徴とする請求項４４に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを暗号化及び復号化するための方法とシステムに関する。
【背景技術】
【０００２】
データ暗号化は、許可された当事者だけが、対応する情報を復号化して取得できるように、機密情報をエンコーディングする一般的なプロセスである。機密情報をエンコーディング及びデコーディングするために設計された暗号化及び復号化のアルゴリズム（一般に暗号アルゴリズムと呼ばれる）は多く、高度暗号化標準（ＡＥＳ）暗号アルゴリズム、ＳＭ４（以前のＳＭＳ４）暗号アルゴリズム及び他の暗号アルゴリズムを含む。
【０００３】
ＡＥＳ暗号アルゴリズムとＳＭ４暗号アルゴリズムは、多くの点で似ている。例えば、２つの暗号アルゴリズムはいずれも対称な鍵を用いてデータを暗号化及び復号化処理し、処理されたデータはいずれも、同じ長さのガロア体（即ち、有限体）における要素として表すことができ、相違点は、２つのガロア体を定義する多項式が異なるだけである。さらに、２つの暗号アルゴリズムの暗号化及び復号化の操作過程にはいずれも、入力データを変換するように、置換関数と並び替え関数が含まれる。置換関数は、鍵値と暗号化又は復号化されるメッセージとの間の関係をぼかすことによって、「混乱」操作を実現する。並び替え関数は、鍵値と暗号化／復号化される情報に対して、要素サブ部品（例えば、ビット）を再構成、順序調整及び混合することによって、「拡散」操作を実現する。
【０００４】
一般に、置換関数は、データの小部分に対して非常に複雑な計算を行う一方、並び替え関数は、データの大部分に対して簡単な計算を行う。この２つの関数を行うことによって、入力データセットに対する暗号化／復号化過程の１ラウンドの操作が完了する。通常、典型的な暗号化／復号化の完全な操作は、予め定義された複数ラウンドの操作を含む。
【０００５】
置換関数の複雑性が高いため、プログラムの実行中に置換関数を実行すると、計算過程への負担が重くなる。ルックアップテーブルは、代替方法として使用される。ルックアップテーブルにより、ある特定の入力値が、予め計算された出力値に写像される。それにより、計算の複雑さを効果的に低減することができる。しかしながら、ルックアップテーブルを使用すると、暗号アルゴリズムは、システムの安全性を破壊し且つ制限された情報を取得できるサイドチャネル攻撃を含むある形式の悪意のある攻撃を受ける可能性がある。サイドチャネル攻撃では、同じプラットフォーム上で暗号アルゴリズムを実行するプロセスにおける物理的作用、例えば、使用される時間変数、エネルギー消費変数、電磁放射変数、熱発生変数、音声信号変数などを観察することによって、秘密鍵の情報を推測することができる。例えば、サイドチャネル攻撃プロセスは、暗号アルゴリズムによりアクセスされるルックアップテーブルメモリアドレス値を観察することによって、秘密鍵の値を推測することができる。
【０００６】
ＡＥＳ暗号アルゴリズムを使用する暗号化と復号化操作では、高度データ暗号化標準新命令セット（ＡＥＳ−ＮＩ）を使用して、サイドチャネル攻撃から実行プロセスを保護することができる。ＡＥＳ−ＮＩは、ＡＥＳの実現方法の１つである。ＡＥＳ−ＮＩ命令を使用する場合、隔離されたハードウェア環境で置換関数を一定時間実行することによって、サイドチャネル攻撃の影響を軽減又は排除することができる。
【０００７】
ＳＭ４暗号アルゴリズムを使用する暗号化と復号化操作は、ルックアップテーブル法を使用して置換関数を実現する実行プロセスにおいて、依然としてサイドチャネル攻撃の影響を受ける。従って、ＳＭ４暗号アルゴリズムの並び替え関数もＡＥＳ暗号アルゴリズムの並び替え関数も同様にデータに対して効率的なデータ拡散を行うことができるが、ＳＭ４暗号アルゴリズムの実際の使用は、その置換関数の比較的安全でない特性により厳しく制限されている。以上の理由から、特定の入力データセットに対して、ＡＥＳ−ＮＩ命令を使用してＳＭ４暗号アルゴリズムの置換操作を完了し、且つ依然としてＳＭ４アルゴリズムの並び替え操作を引き続き使用する場合、ある利点がある。
【０００８】
図１は、既存の技術によるＡＥＳ暗号アルゴリズムとＳＭ４暗号アルゴリズムを使用してＳＭ４暗号アルゴリズムの入力データブロックを暗号化するプロセス１００を示す。プロセス１００は、システムが暗号化操作を実行するプロセスであってもよい。それは、ＳＭ４入力データを受信することと、ＳＭ４暗号アルゴリズム形式のデータをＡＥＳ暗号アルゴリズム形式のデータに変換することと、置換操作を実行することと、ＡＥＳ暗号アルゴリズム形式のデータをＳＭ４暗号アルゴリズム形式のデータに変換することと、並び替え操作を実行することと、特定ラウンド数の操作を完了するまで以上のプロセスを繰り返すことを含む。
【０００９】
プロセス１００はステップ１０２から開始する。ステップ１０４では、ＳＭ４暗号アルゴリズムの要件に従う入力データを受信する。ステップ１０６では、ＳＭ４暗号アルゴリズムの要件に従う入力データを、ＡＥＳ暗号アルゴリズムの要件に従うデータに変換する。以下、このプロセスを更に詳細に説明する。ＳＭ４暗号アルゴリズムとＡＥＳ暗号アルゴリズムはいずれも、同じビット長の数学的同型のガロア体における要素に対して操作を行うものである。体同型は、ＳＭ４暗号アルゴリズム形式とＡＥＳ暗号アルゴリズム形式との間でデータを変換することを可能にする。
【００１０】
ステップ１０８では、ＡＥＳ暗号アルゴリズムの置換操作は、ＡＥＳ暗号アルゴリズム形式のデータに対して実行される。ステップ１１０では、置換操作が完了したＡＥＳ暗号アルゴリズム形式のデータを、ＳＭ４暗号アルゴリズム形式のデータに戻して変換する。ステップ１１２では、ＳＭ４暗号アルゴリズムの並び替え操作をＳＭ４暗号アルゴリズム形式のデータに適用する。１ラウンドの暗号化操作の完了が示される。ステップ１１４では、分岐条件を使用して、暗号化に必要なすべてのラウンド数を完了したか否かを判断し、完了していない場合、プロセス１００をステップ１０６に戻し、完了した場合、プロセス１００をステップ１１６で終了する。
【００１１】
上記方法は、追加の安全性を得るために、ＡＥＳ−ＮＩ命令を使用して、さらに長い実行時間及びさらに高い計算の複雑さで置換操作を実行する。ラウンド毎の暗号化操作では、ＳＭ４暗号アルゴリズム形式の入力データの各バイトをＡＥＳ暗号アルゴリズム形式のデータに変換し、その後、ＡＥＳ暗号アルゴリズム形式のデータをＳＭ４暗号アルゴリズム形式のデータに戻して変換する必要がある。２回の変換はいずれも、行列ベクトル積を実行して完了する。既存の技術方案により１６バイトのデータを３２ラウンド暗号化する場合、単にデータに対してＳＭ４暗号アルゴリズム形式とＡＥＳ暗号アルゴリズム形式の間の変換を行うには、行列ベクトル積を２５６回実行する必要がある。一部のシステムにとっては、こんなに多くの回数のデータ変換を実行するための計算コストは、ＡＥＳ−ＮＩ命令を使用して得られる安全性のメリットを超える場合がある。従って、システムは、ＡＥＳ−ＮＩ命令による安全性のメリットを得ると同時に、過剰な計算時間及び計算の複雑さを導入しないように求められている。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、暗号アルゴリズムを実行する方法を開示する。その方法は、第１操作と第２操作を含む第１暗号アルゴリズム標準形式に従う第１有限体におけるデータと第１有限体における鍵値を受信するステップと、第１暗号アルゴリズム標準形式に従う第１有限体におけるデータを、第２暗号アルゴリズム標準形式に従う第２有限体におけるデータに変換するステップと、第１暗号アルゴリズム標準形式に従う第１有限体における鍵値を、第２暗号アルゴリズム標準形式に従う第２有限体における鍵値に変換するステップと、第１操作を、第２暗号アルゴリズム標準に従う第２有限体における第１変更操作に変換するステップと、第２操作を、第２暗号アルゴリズム標準に従う第２有限体における第２変更操作に変換するステップと、第２有限体におけるデータと第２有限体における鍵値に対してデータ変更操作を実行するステップとを含み、データ変更操作は、第３有限体におけるデータを生成するように、第２有限体におけるデータと第２有限体における鍵値に対して第１変更操作を実行するステップと、第４有限体におけるデータを生成するように、第３有限体におけるデータに対して第２変更操作を実行するステップと、第４有限体におけるデータを、第１暗号アルゴリズム標準に従う第５有限体におけるデータに変換するステップとを含む。
【００１３】
本発明の幾つかの実施形態によれば、第１有限体におけるデータ、第２有限体におけるデータ、第３有限体におけるデータ、第４有限体におけるデータ、第５有限体におけるデータ、第１有限体における鍵値及び第２有限体における鍵値はいずれも有限体ＧＦ（２８）における要素として表される。幾つかの実施形態では、第１暗号アルゴリズム標準はＳＭ４暗号アルゴリズム標準であり、第２暗号アルゴリズム標準はＡＥＳ暗号アルゴリズム標準である。幾つかの実施形態では、第１有限体におけるデータと第２有限体におけるデータは、１６バイトの平文データを含む。幾つかの実施形態では、第１有限体における鍵値と第２有限体における鍵値は、４バイトのラウンド鍵を含む。
【００１４】
本発明の少なくとも１つの実施形態によれば、第１操作と第１変更操作は置換操作である。幾つかの実施形態では、置換操作は１つの乗法逆関数を含む。１つの実施形態では、乗法逆元関数は、ＡＥＳＤＥＣＬＡＳＴとＡＥＳＥＮＣＬＡＳＴ命令の一方又は両方を用いて実行される。１つの実施形態では、第１変更操作と第１操作は、第１線型変換写像と第２線型変換写像を含む。少なくとも１つの実施形態では、第１操作を第１変更操作に変換することは、同型写像行列を第１線型変換写像と第２線型変換写像に適用することを含む。
【００１５】
本発明の１つの実施形態によれば、第２操作と第２変更操作は並び替え操作である。幾つかの実施形態では、第２変更操作は第２操作の同型形式である。１つの実施形態では、第２操作を第２変更操作に変換することは、同型写像行列を第２操作に適用することを含む。少なくとも１つの実施形態では、第５有限体におけるデータは、１６バイトの暗号文データを含む。幾つかの実施形態では、第１暗号アルゴリズム基準によれば、データ変更操作には、複数のラウンド関数で繰り返し実行される必要がある。幾つかの実施形態では、第１有限体におけるデータを第２有限体に変換することは、複数の第１有限体におけるデータポイントを複数の第２有限体におけるデータポイントに並行に変換することを含む。
【００１６】
本発明の少なくとも１つの実施形態によれば、第１有限体における鍵値を第２有限体における鍵値に変換する操作は、複数の第１有限体における鍵値を複数の第２有限体における鍵値に並行に変換することを含む。発明の幾つかの実施形態では、第４有限体におけるデータを第５有限体におけるデータに変換することは、複数の第４有限体におけるデータを複数の第５有限体におけるデータに並行に変換することを含む。発明の１つの実施形態では、第３有限体におけるデータに対して第２変更操作を実行することは、複数の第３有限体におけるデータに対して第２変更操作を並行に実行することを含む。発明の幾つかの実施形態では、第２有限体におけるデータに対して第１変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準命令セット（ＡＥＳ−ＮＩ）を実行することによって完了する。発明の少なくとも１つの実施形態では、第３有限体におけるデータに対して第２変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準命令セット（ＡＥＳ−ＮＩ）を実行することによって完了する。
【００１７】
本発明はコンピュータシステムを開示する。このコンピュータシステムは、少なくとも１つのプロセッサーを備える。プロセッサーは、第１暗号アルゴリズム標準形式に従う第１有限体におけるデータと第１有限体における鍵値を受信するために使用される。第１暗号アルゴリズム標準は第１操作と第２操作を含み、第１暗号アルゴリズム標準形式に従う第１有限体におけるデータを第２暗号アルゴリズム標準形式に従う第２有限体におけるデータに変換し、第１暗号アルゴリズム標準形式に従う第１有限体における鍵値を第２暗号アルゴリズム標準形式に従う第２有限体における鍵値に変換し、第１操作を第２暗号アルゴリズム標準形式に従う第２有限体の第１変更操作に変換し、第２操作を第２暗号アルゴリズム標準に従う第２有限体の第２変更操作に変換し、データ変更操作を実行し、データ変更操作は、第２有限体のデータと第２有限体の鍵値に対して第１変更操作を実行して第３有限体におけるデータを生成することと、第３有限体におけるデータに対して第２変更操作を実行して第４有限体におけるデータを生成することと、及び、少なくとも１つのプロセッサーを更に使用して第４有限体におけるデータを第１暗号アルゴリズム標準に従う第５有限体におけるデータに変換することを含む。
【００１８】
本発明の幾つかの実施形態では、プロセッサーは、単一命令多重データ流技術を使用して、第１暗号アルゴリズム標準形式に従う第１有限体におけるデータを第２暗号アルゴリズム標準形式に従う第２有限体におけるデータに変換し、第１暗号アルゴリズム標準形式に従う第１有限体における鍵値を第２暗号アルゴリズム標準形式に従う第２有限体における鍵値に変換し、第４有限体におけるデータを第１暗号アルゴリズム標準形式に従う第５有限体におけるデータに変換し、第３有限体の要素に対して第２変更操作を実行して第４有限体の要素を生成するように配置される。発明の１つの実施形態では、第２変更操作は第２操作の同型形式である。発明の少なくとも１つの実施形態では、第２操作を第２変更操作に変換することは、同型写像行列を第２操作に適用することを含む。
【００１９】
本発明の幾つかの実施形態によれば、第１暗号アルゴリズム標準に基づく基準データ変更操作は一定のラウンド数繰り返して実行される。発明の幾つかの実施形態では、第１有限体におけるデータ、第２有限体におけるデータ、第３有限体におけるデータ、第４有限体におけるデータ、第５有限体におけるデータ、第１有限体における鍵値及び第２有限体における鍵値はいずれもＧＦ（２８）における要素として表される。発明の少なくとも１つの実施形態では、第１暗号アルゴリズム標準はＳＭ４暗号アルゴリズム標準である。発明の幾つかの実施形態では、第２暗号アルゴリズム標準はＡＥＳ暗号アルゴリズム標準である。発明の１つの実施形態によれば、第１有限体におけるデータと第２有限体におけるデータは、１６バイトの平文データを含む。  
【００２０】
少なくとも１つの実施形態では、第１有限体における鍵値と第２有限体における鍵値はいずれも４バイトのラウンド鍵を含む。発明の幾つかの実施形態では、第１操作と第１変更操作は置換操作である。発明の１つの実施形態では、置換操作は乗法逆元関数を含む。少なくとも１つの実施形態では、乗法逆元関数は、ＡＥＳＤＥＣＬＡＳＴとＡＥＳＥＮＣＬＡＳＴ命令の一方又は両方を用いて完了する。発明の１つの実施形態によれば、第１変更操作は第１操作の同型写像形式である。発明の幾つかの実施形態では、第１操作と第１変更操作は第１線型変換写像と第２線型変換写像を含む。
【００２１】
本発明の１つの実施形態によれば、第１操作を第１変更操作に変換する変換は、同型写像行列を第１線型変換写像と第２線型変換写像に適用することを含む。発明の幾つかの実施形態では、第２操作と第２変更操作は並び替え操作である。発明の１つの実施形態では、第５有限体におけるデータは１６バイトの暗号文データを含む。発明の１つの実施形態では、第２有限体データに対して第１変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準新命令セット（ＡＥＳ−ＮＩ）を実行することによって完了する。
【００２２】
本発明の幾つかの実施形態では、第３有限体のデータに対して第２変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準新命令セット（ＡＥＳ−ＮＩ）を実行することによって完了する。発明の１つの実施形態では、第１有限体におけるデータと第２有限体におけるデータは１６バイトの暗号文データを含む。発明の１つの実施形態では、第５有限体におけるデータは１６バイトの平文データを含む。
【００２３】
本発明は、暗号アルゴリズムを実行する方法を開示する。その方法は、第１操作と第２操作を含む第１暗号アルゴリズム標準形式に従う第１有限体のデータを受信するステップと、第１暗号アルゴリズム標準形式に従う第１有限体におけるデータを、第２暗号アルゴリズム標準形式に従う第２有限体におけるデータに変換するステップと、第２暗号アルゴリズム標準に基づいて、第１操作を第１変更操作に変換するステップと、第２暗号アルゴリズム標準に基づいて、第２操作を第２変更操作に変換するステップと、第３有限体におけるデータを得るように、第２有限体におけるデータに対して第１変更操作を実行するステップと、第４有限体におけるデータを生成するように、第３有限体におけるデータに対して第２変更操作を実行するステップと、第４有限体におけるデータを、第１暗号アルゴリズム標準に従う第５有限体におけるデータに変換するステップとを含む。
【図面の簡単な説明】
【００２４】
【図１】従来技術による暗号アルゴリズムを実行するプロセスである。
【図２】本発明の１つの実施形態による暗号アルゴリズムを実行するプロセスである。
【図３】本発明によるコンピュータシステムのブロック図である。
【発明を実施するための形態】
【００２５】
ＳＭ４暗号アルゴリズム及びＡＥＳ暗号アルゴリズムの利点によりＳＭ４暗号アルゴリズムの入力データを処理し、過剰な計算時間及び高すぎる複雑さを導入しないことが説明され例示される。上述したプロセスは、ＳＭ４暗号アルゴリズムの並び替え操作の同型形式を計算して実現され得る。このように、ＳＭ４暗号アルゴリズムの並び替え操作をＡＥＳ暗号アルゴリズム形式のデータに対して直接実行することができる。それにより、暗号化又は復号化プロセス中のラウンド毎の操作において、データをＳＭ４暗号アルゴリズム形式のデータに戻して変換することが回避される。
【００２６】
ここに記載された例示的な方法及びシステムは、以下に説明する本願の構成の詳細及び構成要素の配列又は添付の図面に示される内容に限定されない。この方法及びシステムは、他の装置の実現にも適用可能であり、様々な方式で配置及び使用することができる。ここで提供される具体的な適用例は、説明のためのものであり、限定のためのものではない。特に、１つ以上の例示に関連する操作、構成要素、要素及び特性は、他の例示の類似の部分を説明するときに除外すべきではない。
【００２７】
また、ここで使用される表現及び用語は、説明を容易にするためのものであり、限定的であるとみなされるべきではない。ここで、例示、装置、構成要素、要素又はシステム及び方法の行為に対するすべての単数形の参照は、それらの対応する複数形にも適用される。同様に、例示、装置、構成要素、要素又はシステム及び方法の行為に対するすべての複数形の参照は、それらの対応する単数形に適用される。単数形又は複数形の適用は、本発明により開示されるシステム又は方法、それらの構成要素、行為及び要素に対する制限とみなされるべきではない。この部分の「備える」、「含む」、「有する」、「含有する」、「内包する」及び類似の同義語は、その後に平等に列挙されるすべての要素を含むとともに、他の追加の要素も含むことを意図する。本文における「又は」の意味は、説明される用語に対して列挙される要素について、用語が要素の中の１つ以上又はすべてを意味することである。さらに、本文で使用される用語が、参照される関連参考文献の意味と一致しない場合、関連参考文献中の用語の意味は本文に対する補足であり、その用語の意味が本文と矛盾する場合、本文中の用語の意味が使用される。
【００２８】
明確にするために、本発明の実施形態では、平文入力データの暗号化プロセスを複数の暗号操作の例示として使用する。しかしながら、復号化操作を完了するために、暗号化プロセスを逆にして暗号文データに対して実行することができることを理解されたい。それに対応して、実施形態において暗号化プロセスを例示的な装置とする方法及び機器は、復号化プロセスにも適用することができる。
【００２９】
ＡＥＳ暗号アルゴリズム及びＳＭ４暗号アルゴリズムにより処理されるすべてのデータは、ガロア体（有限体）中の要素として表される。この技術分野の常識として、ガロア体は、有限の数の要素を含む。有限体における要素の数は、その体の位数、又は濃度と称される。体の位数に関する１つの制限は、位数が素数の整数乗倍として表現できることである。つまり、体の位数は、次の式で表現できる必要がある。
2019519801.tif 000003
【００３０】
ここで、ｑは体の位数であり、ｐは素数であり、ｋは整数である。本発明により開示される少なくとも１つの実施形態において、ＡＥＳ暗号アルゴリズム及びＳＭ４暗号アルゴリズムのデータは、位数が２５６であるガロア体における要素として表される。明確にするために、ＧＦＡＥＳ（２８）によりＡＥＳ暗号アルゴリズムのガロア体が表され、ＧＦＳＭ４（２８）によりＳＭ４暗号アルゴリズムのガロア体が表される。ここで、位数が式（１）の制限を満たしていることを強調するために、体の位数は式（１）の形式で表される。
【００３１】
ＧＦＡＥＳ（２８）とＧＦＳＭ４（２８）のような同じ位数を有するガロア体は、数学的に同型である。これは、ある体におけるデータを別の体に写像できる同型写像行列が少なくとも１つ存在することを意味する。同様なデータを、ＧＦＡＥＳ（２８）又はＧＦＳＭ４（２８）における要素として解釈することができる。これらの２つの体の主な違いは、２つの体を定義する多項式が異なることである。同型写像行列は、これらの２つの体の定義多項式間の差をなくして、データを一方の体から他方の体に変換することができる。従って、互いに同型である１対の２５６個の要素の有限体間の同型写像行列が既知である場合、この行列を使用して、第１の体の定義に従う１バイトのデータを、第２の体の定義に従う１バイトのデータに変換することができ、且つ、この写像行列の逆行列を使用して、第２の体の定義に従う１バイトのデータを、第１の体の定義に従う１バイトのデータに変換することができる。数学的には、次の関係を確立することができる。
2019519801.tif 000004
【００３２】
ここで、ｘは、１つ目の体における１バイトのデータを表し、ｙは、第２の体における１バイトのデータを表し、Ｍは、第１の体におけるデータを第２の体におけるデータに変換すると同時に同型特性を維持することができる写像行列を表し、Ｍ−１は、第２の体におけるデータを第１の体におけるデータに変換すると同時に同型特性を維持することができる写像行列を表す。式（２）及び式（３）は、実際の例に適用されて、８ｘ１の行列ｘは、ＧＦＳＭ４（２８）における１バイトのデータを表し、８ｘ１の行列ｙは、対応するＧＦＡＥＳ（２８）における１バイトのデータを表す。２つの体の間でバイトデータを変換するために、発明の少なくとも１つの実施形態では、同型行列Ｍ及び同型逆行列Ｍ−１の定義は以下のとおりである。
2019519801.tif 000005
【００３３】
結論として、式（２）と式（３）中の同型行列ベクトルの積操作によって、１つの体におけるデータを別の体におけるデータに変換することが可能である。図１に基づいて上述したように、この特性はステップ１０６とステップ１１０で使用され、ＡＥＳ暗号アルゴリズムとＳＭ４暗号アルゴリズムとの間のデータ変換を実行する。しかしながら、当技術分野で周知のように、行列ベクトル積は、計算上無視できる計算操作ではなく、上述したように、実行の必要がある行列ベクトル積を低減させることが有利である。
【００３４】
本発明が開示する少なくとも１つの実施形態では、上述した欠点を同型体の別の性質により解決することができる。同型性を維持しながらデータをある体から別の体に変換することができるように、体における操作は、同型写像行列を使用して同型性を維持しながらある体から別の体に変換することもできる。例えば、ＤＳＭ４は、体ＧＦＳＭ４（２８）内で定義されたＧＦＳＭ４（２８）内の１対のバイトｆとｇに対する操作（例えば、ＳＭ４の体定義多項式をモジュロする加算及び乗算の基本的な体演算から構成される置換操作及び並び替え操作）を表すようにされる。この操作は、次の数式で定義することができる。
2019519801.tif 000006
【００３５】
ここで、ｈは、ＧＦＳＭ４（２８）内に定義された出力データを表す。ＧＦＡＥＳ（２８）内のバイトｕとｖが存在し、且つ操作ＤＳＭ４をバイトｕとｖに適用することが望ましいと仮定する。これらの２つのバイトが体ＧＦＡＥＳ（２８）内で定義され、操作ＤＳＭ４が体ＧＦＳＭ４（２８）内で定義されるので、操作ＤＳＭ４をバイトｕとｖに直接適用することができない。しかしながら、以下の式によって操作ＤＳＭ４を体ＧＦＡＥＳ（２８）内に変換することができる。
2019519801.tif 000007
【００３６】
ここで、操作ＤＡＥＳは操作ＤＳＭ４の同型形式である。操作ＤＡＥＳは、体ＧＦＡＥＳ（２８）内で定義され、体ＧＦＡＥＳ（２８）内のバイトｕとｖに適用することができる。同様に、操作ＤＳＭ４をバイトｕとｖに適用するために、まず、バイトｕとｖを体ＧＦＳＭ４（２８）内に変換し、その後、操作ＤＳＭ４をバイトｕとｖの変換形式に適用することができる。又は、操作ＤＳＭ４を式（７）によって操作ＤＡＥＳに変換してから、操作ＤＡＥＳをバイトｕとｖに直接適用することもできる。後述するように、後者の方法は明らかな利点を有する。
【００３７】
図２は、１つの実施形態において、ＡＥＳ暗号アルゴリズムとＳＭ４暗号アルゴリズムを使用して、低い計算の複雑さでＳＭ４アルゴリズムの入力データを暗号化するプロセス２００を示す。プロセス２００は、暗号化操作を実行するシステムにより実行されてもよく、ＳＭ４により入力されたデータを受信することと、ＳＭ４暗号アルゴリズム標準形式に従うデータをＡＥＳ暗号アルゴリズム標準形式に従うデータに変換することと、変更された置換操作を実行することと、変更された並び替え操作を実行することと、一定のラウンド数を完了するまで上述したプロセスを繰り返して実行することと、ＡＥＳ暗号アルゴリズム標準形式に従うデータをＳＭ４暗号アルゴリズム標準形式に従うデータに変換することとを含む。
【００３８】
プロセス２００はステップ２０２から開始する。ステップ２０４において、体ＧＦＳＭ４（２８）内で定義された入力データセットが受信される。ステップ２０６において、体ＧＦＳＭ４（２８）内で定義された入力データセットは式（２）によって、体ＧＦＡＥＳ（２８）内で定義されたデータに変換される。ステップ２０８において、ＡＥＳ暗号アルゴリズムの置換操作（ＳｕｂＢｙｔｅｓ操作）は、体ＧＦＡＥＳ（２８）内で定義されたデータに適用される。ステップ２１０において、ＳＭ４暗号アルゴリズムの並び替え操作（ＬＢｏｘ操作）は、式（７）によって体ＧＦＡＥＳ（２８）内の操作に変換され、変換された操作は、体ＧＦＡＥＳ（２８）内で定義されたデータに適用される。
【００３９】
ステップ２１２において、すべての暗号化ラウンド数が実行されたか否かが判断される。判断結果が否定の場合、プロセス２００はステップ２０８に戻り、逆の場合、プロセス２００はステップ２１４を実行し続ける。ステップ２１４において、体ＧＦＡＥＳ（２８）内で定義されたデータは、式（３）によって、体ＧＦＳＭ４（２８）内で定義されたデータに変換される。プロセス２００はステップ２１６で終了する。
【００４０】
プロセス２００の実行プロセスは、情報の暗号化又は復号化のプロセスに必要な時間又は計算リソースを著しく低減する。これは、少なくとも暗号化又は復号化のプロセスのラウンド毎に体変換操作を２回実行する必要がないためである。暗号化と復号化のプロセス全体で、データセットは、合計２回の体変換操作が実行される。上述したように、プロセス１００により体ＧＦＳＭ４（２８）で定義された１６バイトのデータを暗号化する３２ラウンドの実行プロセスにおいては、２つの体間でデータの変換を完了するために、合計２５６回の行列ベクトル積操作を実行する必要がある。それに対して、プロセス２００により体ＧＦＳＭ４（２８）内で定義された１６バイトのデータを暗号化する３２ラウンドの実行プロセスにおいて、データの体変換を完了するために、合計３２回の行列ベクトル積のみを実行すればよい。プロセス１００と比較して、２２４回の体変換が削減される。
【００４１】
行列ベクトル積に必要な時間及び計算リソースを削減することによって、プロセス２００を実行するコンピュータシステムの安全性及び効率を強化し向上させることができる。例えば、実行時間は、各バイトの処理に必要な中央処理装置（ＣＰＵ）のクロックサイクルとして比較すると、発明の１つの実施形態において、前記従来技術より１２％低減され、発明の別の実施形態において、クロックサイクルは３７％低減され、発明の別の実施形態において、クロックサイクルは４９％低減される。さらに、ここで開示される装置は、上述した従来技術と比較して、上述した従来技術の重い計算を実行するのに十分なリソースがないシステムに対して追加の暗号化安全性を提供することができる。
【００４２】
上記ステップ２０８において説明された変更された置換操作については、後に詳述する。上述したように、ＡＥＳ−ＮＩ命令セットを使用して置換操作を完了することによって、暗号化の安全性は著しく向上する。ステップ２０８において、ステップ２０４で受信された体ＧＦＳＭ４（２８）内で定義されたデータに対して変更された置換操作を実行するために、体ＧＦＳＭ４（２８）内で定義された置換操作及び体ＧＦＡＥＳ（２８）内で定義された置換操作をさらに論述する必要がある。
【００４３】
次に、体ＧＦＳＭ４（２８）内で定義された置換操作、Ｓボックス置換（ＳＢｏｘ）を、ＡＥＳ−ＮＩ命令セットにより実行できる操作に変換するプロセスを詳細に論述する。上述したように、ＳＢｏｘ操作は、ルックアップテーブルを照会する操作によって完了することができる。各入力バイトに対して、テーブルでは対応する出力バイトがある。以下の表１は、ＳＢｏｘのルックアップテーブルを示す。
【００４４】
表１
2019519801.tif 000008
【００４５】
入力された１バイトの２進数データを置換するために、入力バイトの最初の４ビットと入力バイトの最後の４ビットが分離される。最初の４ビットは行を指定し、最後の４ビットは列を指定する。入力されたバイトは、行と列の交点にある要素で代替される。
【００４６】
例えば、入力「００１０１１００」の場合、前半バイトの値は「００１０」であり、１６進数値「２」に相当し、後半バイトの値は「１１００」であり、１６進数値「ｃ」に相当する。行「２」列「ｃ」での１６進数値「ｅｄ」は、対応する入力のＳＢｏｘルックアップの出力値である。
【００４７】
ＳＢｏｘ操作は、ルックアップテーブルとして表しルックアップテーブル操作により完了することができるが、ＳＢｏｘ操作は、同様に、数式により表すこともできる。
2019519801.tif 000009
ここで、ｘは入力バイトであり、ＡとＣは以下のように定義された行列であり、Ｉは体ＧＦＳＭ４（２８）内の逆行列操作を表す。言い換えれば、関数Ｉは次のように表すことができる。
2019519801.tif 000010
ここで、ｘは入力であり、％はモジュラー関数を表し、ｐ（ｘ）はＧＦ（２）上で定義された既約多項式である。
2019519801.tif 000011
ここで、行列Ａ及び行列Ｃの定義は次のとおりである。
2019519801.tif 000012
【００４８】
体ＧＦＳＭ４（２８）内で定義された操作のように、ＳＢｏｘ操作は、水平構造の入力バイト（即ち、１つの入力バイトが１つの１ｘ８の行列として表される）を受けるように設計された。しかしながら、ＡＥＳ−ＮＩ命令の操作は、垂直構造の入力バイト（即ち、１つの入力バイトが１つの８ｘ１の行列として表される）を必要とする。次の式を使用して、ＳＢｏｘ操作を変更し垂直構造の入力バイトを受ける。
2019519801.tif 000013
ここで、ｘは入力であり、Ｉは体ＧＦＳＭ４（２８）内の逆行列操作を表し、行列Ａ１、Ａ２、Ｃ１及びＣ２は次のように定義される。
2019519801.tif 000014
【００４９】
一般に、式（１３）における乗法逆元関数ＩのパラメータＡ１・ｘ  ＋  Ｃ１は一般的に第１写像変換と呼ばれ、Ａ２・ｘ’＋Ｃ２は第２写像変換と呼ばれ、ｘ’は、乗法逆元関数Ｉが第１写像変換で実行される出力値を表す。ステップ２０４で受信された３２ビットの入力ワードは４バイト（ｘ０，  ｘ１，  ｘ２，  ｘ３）に分割され、式（１３）は入力ワードの４バイトに順に適用され、置換された出力ワードが生成される。この操作は、数式によって次のように表すことができる。  
2019519801.tif 000015
【００５０】
前述したように、ＳＭ４アルゴリズムが実行されるとき、式（１３）に基づいて、第１写像変換の出力に対して乗法逆元関数を直接実行することは安全ではない。それに対応して、第１写像変換の逆元操作は、ＡＥＳ−ＮＩ命令（ＡＥＳＤＥＣＬＡＳＴ命令及びＡＥＳＥＮＣＬＡＳＴ命令を含む）を使用して完了することができる。後続の例では、よりよく説明するために、ＡＥＳＤＥＣＬＡＳＴ命令を使用してＡＥＳ暗号アルゴリズムの置換関数（ＳｕｂＢｙｔｅｓ，）を完了する。ここで、ＳｕｂＢｙｔｅｓ操作、ＡＥＳＤＥＣＡＳＴ逆関数、及びＡＥＳＤＥＣＬＡＳＴ命令を使用するためのＳＢｏｘの変換操作について詳細に説明する。
【００５１】
ＳｕｂＢｙｔｅｓ操作は次のように定義される。
2019519801.tif 000016
【００５２】
ここで、ｙは出力バイトであり、行列Ａ及び行列Ｂは次のように定義され、ｘ−１は、ＡＥＳＤＥＣＬＡＳＴを使用して完了できる乗法逆元関数である。乗法逆元ｘ−１は、ＧＦ（２）上で定義された以下の既約多項式のモジュロに基づいて計算される。
2019519801.tif 000017
【００５３】
０−１＝０である。行列Ａ及び行列Ｂは次のように定義される。
2019519801.tif 000018
【００５４】
ＳｕｂＢｙｔｅｓ操作でｘ−１を計算する操作は、入力ｘをＡＥＳＤＥＣＬＡＳＴ命令の入力とすることによって完了する。ＡＥＳＤＥＣＬＡＳＴ操作は次のように定義される。
2019519801.tif 000019
【００５５】
ここで、Ａ−１は、式（２１）で定義された行列Ａの逆行列であり、Ｂは、式（２２）で定義された行列であり、ｘは、体ＧＦＡＥＳ（２８）内で定義された入力バイトである。式（２０）で定義された既約多項式ｑ（ｘ）に対してモジュロ演算を行った後の値がＡＥＳＤＥＣＬＡＳＴ命令の出力とされる。しかしながら、ＡＥＳＤＥＣＬＡＳＴの逆元操作で、入力は体ＧＦＡＥＳ（２８）内で定義されたものである必要があるが、第１写像変換は体ＧＦＳＭ４（２８）内で定義されたものであるため、乗法逆元操作を行うために第１写像変換Ａ１ｘ＋Ｃ１を式（２３）に直接使用することができない。それに対応して、第１写像変換は、式（２）と式（７）を使用して体ＧＦＡＥＳ（２８）における操作に変換される必要がある。
2019519801.tif 000020
【００５６】
ここで、ｘは式（２３）で定義されたＡＥＳＤＥＣＬＡＳＴ命令の入力であり、ｙはステップ２０６で受信された体ＧＦＡＥＳ（２８）におけるバイトであり、Ａ１とＣ１は、式（１４）と式（１６）で定義された行列である。式（２４）を式（２３）に代入すると、次の式を生成することができる。
2019519801.tif 000021
【００５７】
ここで、式（２５）の出力は第２写像変換の入力とされ、上述したように、第２写像はＡ２ｘ＋Ｃ２に変換される。
【００５８】
第１写像変換と類似して、第２写像変換は体ＧＦＡＥＳ（２８）内に変換される必要がある。式（２）と式（７）を使用して第２写像変換を体ＧＦＡＥＳ（２８）内に写像すると、以下の数式を得ることができる。
2019519801.tif 000022
【００５９】
ここで、ｘは式（２５）の出力であり、ｚは、体ＧＦＡＥＳ（２８）内で定義された式（２６）の出力である。式（２５）を式（２６）に代入すると、以下の数式が得られる。
2019519801.tif 000023
【００６０】
ここで、ｚは、体ＧＦＡＥＳ（２８）内で定義された置換操作の出力バイトであり、ｙは、体ＧＦＡＥＳ（２８）内で定義された入力バイトである。同様に、ｚは、１ラウンドの暗号化プロセスにおけるステップ２０８での変更された置換操作の出力を表す。
【００６１】
ＡＥＳＤＥＣＬＡＳＴ操作が実行されると、該操作は、入力として２つの値（１つの状態バイトと１つのラウンド鍵）を受け取り、ＡＥＳＤＥＣＬＡＳＴ操作の出力は、状態バイトの逆とラウンド鍵の排他的論理和との和である。ＡＥＳＤＥＣＬＡＳＴ操作の入力値は次のように定義される。
2019519801.tif 000024
【００６２】
前記のものと組み合わせて、ＡＥＳ−ＮＩ命令の式は次のように表すことができる。
2019519801.tif 000025
【００６３】
この式は、次のようにさらに簡略化することができる。
2019519801.tif 000026
【００６４】
ステップ２０８で生成された４つの出力バイトの各々は、式（２７）を使用して計算されたものである。次に、次のステップ２１０での変更された並び替え操作が詳細に説明される。ＳＭ４暗号アルゴリズムの並び替え操作（ＬＢｏｘ）は、３２ビットのデータに適用する線型変換であり、以下では、統一されて「ワード」と称される。１つのワードは、４バイトに分割することができる。ＳＭ４暗号アルゴリズムの並び替え操作は、以下のように定義される。
2019519801.tif 000027
【００６５】
ここで、（ｚ０，  ｚ１，  ｚ２，  ｚ３）は出力であり、（ｘ０，  ｘ１，  ｘ２，  ｘ３）は入力であり、各Ｌｉｊは８ｘ８の２値行列である。各対の要素に対して、上記行列乗算は、以下の複数の行列ベクトルのサブ演算に変換することができる。
2019519801.tif 000028
【００６６】
ここで、ｉ，  ｊ  ＝  ０，  １，  ２，  ３であり、  Ｌｉ，ｊは２値行列であり、ｘｊはＳＭ４暗号アルゴリズムの入力である。式（３３）の同型構造は、以下のように示される。
2019519801.tif 000029
【００６７】
ここで、Ｌｉ，ｊは２値行列であり、ｙｊは、体ＧＦＡＥＳ（２８）内に写像されたＳＭ４暗号アルゴリズムの入力である。体ＧＦＡＥＳ（２８）内に変換された完全なＳＭ４暗号アルゴリズムのＬＢｏｘ操作の同型構造は、以下の式で表すことができる。
2019519801.tif 000030
【００６８】
式（３５）は、次の式にさらに簡略化することができる。
2019519801.tif 000031
【００６９】
上述したように、並び替え操作は、データ拡散の役割を果たす。並び替え操作は、ラウンド関数と鍵の生成アルゴリズムの両方において循環シフト操作を実行する。これについては、次に詳細に説明する。ラウンド関数における並び替え関数ＬＢｏｘ及び鍵生成アルゴリズムにおける並び替え関数ＬＢｏｘ’は、以下のように定義される。
2019519801.tif 000032
【００７０】
ここで、ｘは、３２ビットの入力ベクトルであり、○＋はビット毎の排他的論理和操作を表し、ｘ≪ｎは、入力されたビットベクトルｘを左へ循環させて左にｎ個の位置移動し、即ち、上位のビットを下位のビットにシフトさせる。それに対応して、並び替えられたデータとデータポイントの「混乱」が実現される。
【００７１】
以下では、鍵生成関数及びラウンド関数が詳述される。鍵生成関数は、秘密鍵値を入力として使用してラウンド毎のラウンド関数に必要なラウンド鍵を計算する。例えば、３２ラウンドを有する暗号化プロセスに対して、入力された鍵値及び鍵生成関数の入力ベクトルは、次のように定義される。
2019519801.tif 000033
【００７２】
ここで、Ｙは鍵生成関数の入力ベクトルであり、Ｋは３２ビットの入力鍵値であり、この値は、４つのバイトにより構成されるように分割することができる。入力ベクトルＹの最初の４つの要素は、次のように定義される。
2019519801.tif 000034
【００７３】
上記パラメータを組み合わせて、第ｉラウンドのラウンド鍵は、鍵生成アルゴリズムに基づいて以下のように計算される。
2019519801.tif 000035
【００７４】
ここで、ｉ  ＝  （０，１，…３１）であり、ＣＫｉ  は以下のように定義される。
2019519801.tif 000036
及び
2019519801.tif 000037
【００７５】
以下に定義されるように、式（４５）で計算されたラウンド鍵ＲＫｉは、平文入力ベクトルＸを暗号化するために使用される。
2019519801.tif 000038
【００７６】
式（４９）の出力の最後の４つのバイト（例えばｉ＝３２，３３，３４，３５）が逆順に並び替えられると、出力の暗号文が得られる。即ち、最後の４つのバイトの出力順序は（Ｘ３５，Ｘ３４，Ｘ３３，Ｘ３２）である。
【００７７】
上記式を組み合わせて暗号化ラウンドを構成することができる。要するに、式（３０）は体ＧＦＡＥＳ（２８）内の置換関数を表し、式（３６）は体ＧＦＡＥＳ（２８）内の並び替え関数を表し、式（４５）は鍵生成関数を表し、式（４９）はラウンド関数を表す。式（３０）が式（３６）に代入されると、次の式が生成される。
2019519801.tif 000039
【００７８】
ここで、ｕはプロセス２００におけるステップ２１０での１ラウンドの暗号化の出力である。ステップ２１２で、より多くのラウンドを実行する必要があると判定する場合、プロセス２００はステップ２０８に戻る。次のラウンドの暗号化の第１写像変換を準備するために、式（５０）にＡ・（Ｍ・Ａ１・Ｍ−１）を乗じると、次の式が生成される。
2019519801.tif 000040
ｖは、次のラウンドの出力である。
【００７９】
計算効率をさらに改善するために、ＡＥＳＤＥＣＬＡＳＴ操作の前の行列乗算
2019519801.tif 000041
は、ルックアップテーブル操作を使用して完了することができる。上述のようにルックアップテーブル操作を使用してＳＢｏｘ操作を完了することは、一定の潜在的な安全上の危険をもたらす可能性があるが、ＬＢｏｘの操作は鍵の情報を含まないので、ここでのルックアップテーブル操作は安全性に影響を与えない。悪意のあるプログラムがＬＢｏｘのルックアップテーブル操作を観察できるとしても、該プログラムは鍵に関するいかなる情報も取得することができない。
【００８０】
次に、１つの例を用いて、プロセス２００において上記式により体ＧＦＳＭ４（２８）における１６バイトのデータに対して３２ラウンドの暗号化プロセスを行うことを説明する。ステップ２０２では、プロセス２００が開始する。ステップ２０４では、体ＧＦＳＭ４（２８）内で定義されたデータが受信される。暗号化プロセスを例にとると、入力データは体ＧＦＳＭ４（２８）内で定義された１６バイトの平文であり、（ｘ０，ｘ１…ｘ１５）と表される。ステップ２０６において、体ＧＦＳＭ４（２８）内で定義された入力データは、以下の式によって体ＧＦＡＥＳ（２８）内のデータに変換される。
2019519801.tif 000042
【００８１】
ここで、ｉ  ＝  ０，１，…１５である。式（５２）の出力バイトは、以下のように４つの４ｘ１の行列を構成する。
2019519801.tif 000043
ここで、ｉ  ＝  ０，１，２，３である。
【００８２】
ステップ２０８において、ｒ  ＝  ０，  １，…３１のラウンド毎について、式（３１）の入力は次のように定義される。
2019519801.tif 000044
【００８３】
ここで、ＲＫｒ  は、第ｒのラウンドに対応するラウンド鍵であり、０は８ｘ８の零行列を表し、置換操作は以下のように実行される。
2019519801.tif 000045
【００８４】
Ｓｔａｔｅ＿ＮＩは置換操作の出力である。次に、並び替え操作は以下のように実行される。
2019519801.tif 000046
【００８５】
０は８ｘ８の全零行列を表す。式（５７）における行列は、わかりやすくするために分割された拡張形式として書かれることに注意する必要がある。操作中、複数の行列の乗算は、事前計算によって１つの行列に組み合わせられ、入力値Ｓｔａｔｅ＿ＮＩに対して１回のルックアップテーブルを行うことによって完了する。
【００８６】
より多くのラウンドを実行する必要がある場合、プロセス２００はステップ２０８に戻る。逆の場合、３２ラウンドの暗号化の後、ステップ２１４はステップ２１２の後に継続して実行される。ステップ２１４において、１６バイトの出力暗号文Ｙ３５，Ｙ３４，Ｙ３３，Ｙ３２は、以下の式によって体ＧＦＳＭ４（２８）内のデータに変換される。
2019519801.tif 000047
式（５９）が実行された後、プロセス２００はステップ２１６で終了する。
【００８７】
上述したように、プロセス２００は、暗号化演算を実行するコンピュータシステムの計算を著しく改善し簡単化する。例えば、図３は、コンピュータシステム３００の操作を改善するためにプロセス２００を使用することができるコンピュータシステム３００を示す。コンピュータシステム３００は、プロセッサー３０２、１つ以上のメモリユニット３０４、内部接続部材３０６、通信ネットワーク３１２に結合された１つ以上のインタフェースデバイス３０８、及びデータ記憶部材３１０を備える。図に示されるように、コンピュータシステム３００は、通信ネットワーク３１２に接続され、且つ、通信ネットワーク３１２によりデータ交換を行うことができる。通信ネットワーク３１２は、コンピュータシステムがデータを交換するための任意の情報ネットワークを含んでもよい。通信ネットワーク３１２を使用してデータを交換するために、コンピュータシステム３００は、光チャンネル、トークンネットワーク、イーサネット（登録商標）、無線ネットワーク、ブルートゥース（登録商標）、ＩＰ、ＩＰｖ６、ＴＣＰ／ＩＰ、ＵＤＰ、  ＤＴＮ、ＨＴＴＰ、ＦＴＰ、ＳＮＭＰ、ＳＭＳ、  ＭＭＳ、ＳＳ７、ＪＳＯＮ、ＳＯＡＰ、ＣＯＲＢＡ、ＲＥＳＴ及びネットワークサービスを含むがこれらに限定されない様々な方法、プロトコル、標準を使用することができる。データ伝送の安全性を保証するために、コンピュータシステム３００は、本発明で言及される安全手段を使用して、通信ネットワーク３１２を介してデータ伝送を行うことができる。
【００８８】
本発明で開示される特定の態様、関数及びプロセスを実現するために、プロセッサー３０２は一連の命令を実行して、変更されたデータを生成する。プロセッサー３０２は、任意のタイプのプロセッサー、マルチプロセッサー又はコントローラであってもよい。プロセッサーは、例えば、Ｉｎｔｅｌ  Ａｔｏｍ、Ｉｔａｎｉｕｍ、Ｃｏｒｅ、Ｃｅｌｅｒｏｎ又はペンティアム（登録商標）プロセッサー、ＡＭＤ  Ｏｐｔｅｒｏｎプロセッサー、Ａｐｐｌｅ  Ａ４又はＡ５プロセッサー、Ｓｕｎ  ＵｌｔｒａＳＰＡＲＣ又はＩＢＭ  Ｐｏｗｅｒ５＋プロセッサー及びＩＢＭホストチップなどの市販のプロセッサーを含んでもよい。プロセッサー３０２は、内部接続部材３０６を介して、１つ以上のメモリユニット３０４を含むシステムの他の構成要素に接続される。発明の幾つかの実施形態において、プロセッサー３０２は、単一命令多重データ流（ＳＩＭＤ）を並列実行できるマルチプロセッサーユニットであってもよい。ＳＩＭＤにより、マルチプロセッサーユニットは複数のデータポイントを同時に（並列に）処理することができるので、計算時間が大幅に短縮される。
【００８９】
後で詳細に説明するように、本発明により開示される装置は、ＳＩＭＤ技術を用いて並列処理を効率的に行うことができる。しかしながら、従来技術は、１つの有限体と別の有限体との間のデータ変換を順次に処理することを必要とし、ラウンド毎において、第１有限体の置換操作と第２有限体の並び替え操作との間の切り換えは、並列処理の効率を著しく低減する。特に、従来技術の直列特性により、システムは、２０１７年にリリースされるＩｎｔｅｌのＡＶＸ５１２技術、近い将来にリリースされるＩｎｔｅｌ  ＡＶＸ２０１４技術、ＰＯＷＥＲＰＣのＡｌｔｉＶｅｃ技術、ＳＵＮのＶＩＳ技術、ＡＭＤの３ＤＮｏｗ技術及びその他の様々な技術を含む５１２ビットのレジスター技術を使用することができない。
【００９０】
１つ以上のメモリユニット３０４は、コンピュータシステム３００の実行プロセスにおいてプログラム及びデータを記憶する。従って、１つ以上のメモリユニット３０４は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）又はスタティックランダムアクセスメモリ（ＳＲＡＭ）などの高速、揮発性、ランダムアクセスメモリであってもよい。しかしながら、１つ以上のメモリユニット３０４は、ハードウェア又は他の不揮発性メモリなどのデータを記憶するための任意のデバイスを含んでもよい。複数の実施形態では、本発明に開示された関数を実行するために、１つ以上のメモリユニット３０４は、特殊な例になるように組み合わせられてもよいし、場合によって、独特な構造を有してもよい。対応するデータ構造の構成及び容量は、特定のデータ又は特定のタイプのデータを記憶するために用いられてもよい。
【００９１】
コンピュータシステム３００の各構成要素は、内部接続構成要素３０６によって一緒に接続される。内部接続構成要素３０６は、１つ以上の物理バス、例えば、同じ機器内に集積された各部材を接続するための物理バスを含んでもよいが、ＩＤＥ、ＳＣＳＩ、ＰＣＩ及びＩｎｆｉｎｉＢａｎｄなどの標準又は特殊なバス技術を含んでもよい。内部接続構成要素３０６は、コンピュータシステム３００の構成部材間のデータ、命令などの通信を可能にするために使用される。
【００９２】
コンピュータシステム３００は、１つ以上のインタフェースデバイス３０８、例えば、入力デバイス、出力デバイス、及び入力／出力機能を組み合わせたデバイスをさらに含む。インタフェースデバイスは、入力を受け入れるか、又は、出力を提供することができる。特に、出力デバイスは、情報を外部に展示することもできる。入力デバイスは、外部ソースからの情報を受け入れることができる。インタフェースデバイスは、例えば、キーボード、マウスデバイス、トラックボール、マイクロフォン、タッチスクリーン、印刷デバイス、展示デバイス、拡声器及びネットワークインターフェースカードなどを含むことができる。インタフェースデバイスは、コンピュータシステム３００が外部エンティティ（例えば、ユーザーや他のシステム）と情報を交換し通信することを可能にする。
【００９３】
データ記憶ユニット３１０は、コンピュータ読み書き可能な不揮発性又は非一時的なデータ記憶媒体を含み、プログラムを定義する命令セット又はプロセッサー３０２によって実行される他のオブジェクトを記憶するために使用される。データ記憶ユニット３１０は、プログラムの実行中にプロセッサー３０２によって記憶媒体に記録された情報を含んでもよい。具体的には、記憶スペースを節約するために、又はデータ交換の効率を高めるために、情報は、１つ以上のデータ構造に記憶されるように構成されてもよい。命令は、エンコーディングされた信号として永続的に記憶されてもよく、命令は、プロセッサー３０２に本発明で説明された任意の関数を実行させることができる。記憶媒体は、例えば、光磁気ディスク、磁気ディスク、及びフラッシュメモリなどであってもよい。実行中、プロセッサー３０２又は他のコントローラは、不揮発性記憶媒体から、例えば１つ以上のメモリユニット３０４などの他の記憶装置からデータを読み込む。これにより、プロセッサー３０２は、データ記憶ユニット３１０からデータを直接読み出すよりも速く情報を取得することができる。メモリは、データ記憶ユニット３１０又は１つ以上のメモリユニット３０４に配置することができるが、プロセッサー３０２は、メモリ内のデータに対して動作し、且つ動作が完了した後に、データ記憶ユニットに関連する記憶媒体に処理されたデータをコピーする。様々な異なる構成要素を使用して複数の記憶媒体間のデータの移動を管理することができ、その例はいずれの特定のデータ管理構成要素に限定されない。さらに、その例はいずれの特定のメモリシステム又はデータ記憶システムに限定されない。
【００９４】
コンピュータシステム３００は、一種のコンピュータシステムの一例として使用され、システムの各部材及び機能がインスタンス化されてもよいが、システムの各部材及び機能は、コンピュータシステム３００で実行されるインスタンス化に限定されない。各部材及び機能は、図３と異なるアーキテクチャ又は構成要素を有する１つ以上のシステムで実現することができる。例えば、コンピュータシステム３００は、例えば本開示における特定の操作を完了する特定用途向け集積回路（ＡＳＩＣ）のような専用プログラムや専用ハードウェアを含んでもよい。他の例には、ＩＢＭ  ＰｏｗｅｒＰＣ上で実行され同じ機能を完了する複数のＭＡＣ  ＯＳ  Ｘ計算デバイスからなるグリッド、及び専用ハードウェア及び専用オペレーティングシステムを実行する専用計算デバイスが含まれてもよい。
【００９５】
コンピュータシステム３００はオペレーティングシステムを含むコンピュータシステムであってもよい。このオペレーティングシステムは、少なくとも１つのコンピュータシステム３００におけるハードウェア部材を管理する。幾つかの例では、プロセッサー又はコントローラ、例えばプロセッサー３０２も、実行中のオペレーティングシステムを含む。実行可能なオペレーティングシステムの例は、マイクロソフト社から入手可能なＷｉｎｄｏｗｓ  ８オペレーティングシステムなどのＷｉｎｄｏｗｓシリーズのオペレーティングシステム、アップル社から入手可能なＭＡＣ  ＯＳ  Ｘオペレーティングシステム又はｉＯＳオペレーティングシステム、Ｌｉｎｕｘ（登録商標）システムに基づくＬｉｎｕｘディストリビューションのオペレーティングシステム（レッドハット社によるエンタープライズレベルのＬｉｎｕｘオペレーティングシステムを含む）、Ｓｕｎ社によるＳｏｌｏａｒｉｓシステム及び様々なソースから入手可能なＵＮＩＸ（登録商標）オペレーティングシステムを含む。多くの他のオペレーティングシステムも利用可能であり、その例はいずれの特定のオペレーティングシステムに限定されない。
【００９６】
プロセッサー３０２とオペレーティングシステムはともに、高水準プログラミング言語で書かれたアプリケーションプログラムのコンピュータプラットフォームを定義する。これらのアプリケーションの構成部材は、通信ネットワーク（例えば、Ｉｎｔｅｒｎｅｔ）で通信プロトコル（例えば、ＴＣＰ／ＩＰ）を用いて通信を行う実行可能プログラム、ミドルウェアフォーム、バイトコード又はインタプリタコードを含む。同様に、部材は、例えば．Ｎｅｔ、ＳｍａｌｌＴａｌｋ、Ｊａｖａ（登録商標）、Ｃ＋＋、Ａｄａ、Ｃ＃、Ｐｙｔｈｏｎ又はＪａｖａＳｃｒｉｐｔ（登録商標）などのオブジェクト指向プログラミング言語を用いて完了することができる。他のオブジェクト指向プログラミング言語が使用されてもよい。また、関数、スクリプト又は論理プログラミング言語が使用されてもよい。
【００９７】
さらに、様々な部材及び機能は、非プログラミング環境で実現することもでき、例えば、ブラウザウィンドウにおいてＨＴＭＬ、ＸＭＬ又は他のフォーマットとして作成され、グラフィカルユーザーインターフェース又は類似のプログラムがこれらの部材又は機能を実現できるようにする。さらに、異なる例は、プログラミング、非プログラミング又は両者の任意の組み合わせによって実現されてもよい。例えば、ＨＴＭＬ言語により実現されたインターネット・ウェブサイトは、ウェブサイトにＣ＋＋又はＰｙｔｈｏｎ言語により実現されたデータオブジェクトが追加されてもよい。従って、本開示の例は、ある特定のプログラミング言語の使用に限定されず、任意の適切なプログラミング言語を使用してもよい。本開示の機能部材は、例えば、本発明に開示された機能を実行できるように配置される専用ハードウェア、実行可能プログラム、データ構造又はオブジェクトなどのより広い範囲の構成要素を含んでもよい。
【００９８】
幾つかの実施形態では、本発明に開示される構成要素は、パラメータを読み取って構成要素自体によって実行される機能に影響を及ぼすことができる。これらのパラメータは、揮発性メモリ（例えばＲＡＭ）又は不揮発性メモリ（例えば磁気ディスク）を含む任意の適切なメモリに物理的に記憶されてもよい。また、これらのパラメータは、適切なデータ構造（例えば、ユーザモードアプリケーションによって定義されたデータベース又はファイル）に論理的に記憶されてもよいし、共通の共用データ構造（例えば、オペレーティングシステムにおけるアプリケーションプログラムレジストリ）に記憶されてもよい。また、幾つかの例において、これらの構成要素の動作を配置するように外部エンティティがこれらのパラメータを変更することを可能にするために、システムレベルｄｓ及びユーザーレベルのインターフェースが提供される。
【００９９】
上述したように、発明の少なくとも１つの実施形態において、プロセッサー３０２はＳＩＭＤ技術を使用する。しかしながら、プロセッサー３０２がＳＩＭＤ命令を実行することができたとしても、ラウンド毎のステップ１０６及びステップ１１０でデータに対する二重変換操作を実行する必要があり、並列計算操作の効果が相殺されるため、プロセス１００の実行中にＳＩＭＤ命令の実行効果が低減される。
【０１００】
しかしながら、プロセス２００は、ＳＩＭＤ技術の利点を利用して、データに対するラウンド毎の実行中のデータセット変換操作を回避することができる。例えば、上記ステップ２０６に係る式（５２）を参照すると、行列乗算操作Ａ・（Ｍ・Ａ１・Ｍ−１）・Ｍは複数のラウンド関数で実行され、命令を使用して複数のデータポイント（例えば、入力データの各バイト）に対して同期処理を行うことができる。同様に、ステップ２１４における式（５９）の行列乗算操作は、命令を使用して複数のデータポイント（例えば、出力データの各バイト）に対して同期処理を行うこともできる。
【０１０１】
上記ステップ２１０におけるＬＢｏｘ操作は、ＳＩＭＤ技術を使用することもできる。上述したように、ＬＢｏｘ操作は実際に複数のデータポイントに対してルックアップテーブル操作を並列に行う。例えば、式（５７）における行列乗算操作は、ＳＩＭＤ技術を使用して各データポイントＳｔａｔｅ＿ＮＩを処理する。
2019519801.tif 000048
【０１０２】
当技術分野の常識として、並列に処理できるデータの量は、ＳＩＭＤ技術を使用して減少できる実行可能な時間に直接な影響を及ぼす。それに対応して、並列に処理できるデータの量が多いほど、ＳＩＭＤ命令は、より効率の改善をもたらすことができる。
【０１０３】
以上の説明は主に暗号化プロセスに関連するが、当業者であれば、暗号化プロセスを逆転させるだけで、上記原理を復号化操作にも適用することを理解するであろう。暗号学の分野における対称鍵システムの暗号化と復号化操作の同等性は周知であるので、本開示で言及される暗号化プロセスは、復号化プロセスに対する本開示の技術的原理の適用性を排除するものと見なされるべきではない。
【０１０４】
さらに、上記の説明の例で言及した特定の数値は、限定するものと見なされるべきではない。例えば、上述した少なくとも１つの例において、暗号化プロセスには３２ラウンドの操作があることが言及されたが、より多く又はより少ないラウンド数も適用される。さらに、上記の例では、ＡＥＳ及びＳＭ４暗号アルゴリズムが言及されたが、本開示の技術的原理は、他の暗号アルゴリズムにも適用できるということに注意すべきである。
【０１０５】
式（４）における同型写像行列及び式（５）における同型写像逆行列は単に例示のためのものであり、例えば、以下の同型写像行列及びその逆行列のような他の同型写像行列も同様に使用できることを理解すべきである。
2019519801.tif 000049
2019519801.tif 000050
2019519801.tif 000051
【０１０６】
式（４）と式（５）で定義されていない他の同型写像行列及び対応する逆行列、例えば、式（６０）〜式（７３）も同様に使用することができる。
【０１０７】
本発明の装置は、本願の記載又は図面における構造の詳細、構成要素の配置に限定されない。また、本開示で使用される表現や用語は、説明を明瞭にするためのものであり、限定として考慮されるべきではない。本開示で使用される「備える」、「構成」又は「有する」、「含む」、「関する」及び他の変形は、それらの後に列挙された要素を含むべきであり、追加の要素も同様に含む。
【０１０８】
本開示が発明の少なくとも１つの実施形態の複数の部材を説明した後、当業者は、本発明に対して様々な調整、修正及び改良を行うことができるはずである。これらの調整、修正及び改良は、対応する技術的手段を本発明の範囲から実質的に逸脱させるものではない。従って、上記の説明及び図面は、説明のためだけのものである。
【図１】
2019519801.tif 000052
【図２】
2019519801.tif 000053
【図３】
2019519801.tif 000054
【国際調査報告】
2019519801.tif 000055
2019519801.tif 000056