(57)【特許請求の範囲】
【請求項１】
１つまたは複数のコンピュータシステム（１）を保護する方法であって、暗号計算プロセスを実施するために、各コンピュータシステム（１）は、暗号秘密鍵（Ｋｓ）を記憶する記憶手段（６）と、情報（Ｅ）に暗号アルゴリズムを実施する処理手段（２）とを備え、前記方法は、前記暗号秘密鍵（Ｋｓ）と前記情報（Ｅ）を使用する暗号アルゴリズムの計算段階を備え、各コンピュータシステム（１）に対して、更に、
前記記憶手段（６）の秘密ゾーン（６０）に、秘密データ（Ｄｓ）を記憶することと、
暗号計算プロセスを修正するために、処理手段（２）と前記秘密データ（Ｄｓ）を使用することとを含み、前記処理手段（２）の第１の実行手段が、暗号アルゴリズムの計算段階に必要な各中間変数を複数の部分中間変数に置き換えるために、前記秘密データ（Ｄｓ）を使用し、前記処理手段（２）の第２の実行手段が、非線形変換テーブルを、当該部分中間変数の各々に適用し、前記処理手段（２）の第３の実行手段が、部分中間変数で得られる結果から、標準の暗号アルゴリズムの使用に対応する最終結果を再生し、
前記秘密データ（Ｄｓ）は複数の非線形変換テーブルであり、
標準アルゴリズムの計算段階に必要とされる各中間変数を複数の部分中間変数に置き換えることにより得られる暗号計算プロセスの分割を行い、
前記複数の非線形変換テーブルのうちの一の非線形変換テーブルを、前記部分中間変数の各々に適用することにより、暗号計算プロセスが修正され、
前記分割は、ｎビットの変換出力を、ｋｍビットの入力の関数であるアドレスで読み込む、ｋ個のｋｍビットからｎビットへの変換テーブルによって記述された、ｋｍビットからｋｎビットへの非線形変換を用い、
各非線形変換に対して、前記ｋ個の変換テーブルが、秘密データ（Ｄｓ）の一部をなすことを特徴とする、１つまたは複数のコンピュータシステム（１）を保護する方法。
【請求項２】
１つまたは複数のコンピュータシステム（１）を保護する方法であって、暗号計算プロセスを実施するために、各コンピュータシステム（１）は、暗号秘密鍵（Ｋｓ）を記憶する記憶手段（６）と、情報（Ｅ）に暗号アルゴリズムを実施する処理手段（２）とを備え、前記方法は、前記暗号秘密鍵（Ｋｓ）と前記情報（Ｅ）を使用する暗号アルゴリズムの計算段階を備え、各コンピュータシステム（１）に対して、更に、
前記記憶手段（６）の秘密ゾーン（６０）に、秘密データ（Ｄｓ）を記憶することと、
暗号計算プロセスを修正するために、処理手段（２）と前記秘密データ（Ｄｓ）を使用することとを含み、前記処理手段（２）の第１の実行手段が、暗号アルゴリズムの計算段階に必要な各中間変数を複数の部分中間変数に置き換えるために、前記秘密データ（Ｄｓ）を使用し、前記処理手段（２）の第２の実行手段が、非線形変換テーブルを、当該部分中間変数の各々に適用し、前記処理手段（２）の第３の実行手段が、部分中間変数で得られる結果から、標準の暗号アルゴリズムの使用に対応する最終結果を再生し、
前記秘密データ（Ｄｓ）は複数の非線形変換テーブルであり、
標準アルゴリズムの計算段階に必要とされる各中間変数を複数の部分中間変数に置き換えることにより得られる暗号計算プロセスの分割を行い、
前記複数の非線形変換テーブルのうちの一の非線形変換テーブルを、前記部分中間変数の各々に適用することにより、暗号計算プロセスが修正され、
前記分割は、ｋ個のｋｍビットからｎビットへの変換テーブルによって記述された、ｋｍビットからｋｎビットへの非線形変換を用い、該変換テーブルにおいて、ｎビットの変換出力は、ｍビットの値に対して秘密全単射関数（φ）を適用することにより得られるアドレスで読み込まれ、前記ｍビットの値は、非線形変換のｋｍビットの入力の公開関数を適用して得られ、
各非線形変換に対して、前記ｋ個の変換テーブルが、秘密データ（Ｄｓ）の一部をなすことを特徴とする１つまたは複数のコンピュータシステム（１）を保護する方法。
【請求項３】
各非線形変換に対して、秘密全単射関数（φ）も、秘密データ（Ｄｓ）の一部をなす、請求項２に記載の方法。
【請求項４】
暗号アルゴリズムを記憶するための第１の記憶手段（７）と、前記暗号アルゴリズムを実行するための処理手段（２）と、秘密ゾーン（６０）を有する第２の記憶手段（６）とを備え、前記暗号アルゴリズムは、ＤＥＳ、トリプルＤＥＳ、またはＲＳＡタイプの暗号アルゴリズムの計算段階に従い且つ第２の記憶手段の前記秘密ゾーンに含まれる暗号秘密鍵（Ｋｓ）を使用するコンピュータシステム（１）であって、前記処理手段が、
標準の暗号アルゴリズムの計算段階に必要な各中間変数を、複数の部分中間変数に置き換える第１の実行手段と、
非線形変換テーブルを、当該部分中間変数の各々に適用する第２の実行手段と、
部分中間変数で得られる結果から、標準の暗号アルゴリズムの使用に対応する最終結果を再生する第３の実行手段とを含み、
前記暗号アルゴリズムの第２の手段が、ｋ個の部分変換テーブルから構成され、ｋ個の部分変換テーブルのうち、ｋ−１個の部分変換テーブルが、秘密任意変数を含むことを特徴とする、コンピュータシステム（１）。
【請求項５】
暗号アルゴリズムを記憶するための第１の記憶手段（７）と、前記暗号アルゴリズムを実行するための処理手段（２）と、秘密ゾーン（６０）を有する第２の記憶手段（６）とを備え、前記暗号アルゴリズムは、ＤＥＳ、トリプルＤＥＳ、またはＲＳＡタイプの暗号アルゴリズムの計算段階に従い且つ第２の記憶手段の前記秘密ゾーンに含まれる暗号秘密鍵（Ｋｓ）を使用するコンピュータシステム（１）であって、前記処理手段が、
標準の暗号アルゴリズムの計算段階に必要な各中間変数を、複数の部分中間変数に置き換える第１の実行手段と、
非線形変換テーブルを、当該部分中間変数の各々に適用する第２の実行手段と、
部分中間変数で得られる結果から、標準の暗号アルゴリズムの使用に対応する最終結果を再生する第３の実行手段とを含み、
前記暗号アルゴリズムの第２の手段が、
分割されないときに標準の暗号計算プロセスの中間変数に適用される各非線形変換を、部分中間変数の集合に適用されるｋｍビットからｋｎビットへの部分非線形変換に置き換える手段を含み、
（ｋ−１）ｎビットの変換出力が、ｋｍビットの入力の多項式関数として計算され、
出力ビットの残りのｎビットが、ｋｍ個の入力ビットの関数であるアドレスで残りのｎビットを読み込む変換テーブルの読み込みによって得られることを特徴とする、コンピュータシステム（１）。
【請求項６】
暗号アルゴリズムを記憶するための第１の記憶手段（７）と、前記暗号アルゴリズムを実行するための処理手段（２）と、秘密ゾーン（６０）を有する第２の記憶手段（６）とを備え、前記暗号アルゴリズムは、ＤＥＳ、トリプルＤＥＳ、またはＲＳＡタイプの暗号アルゴリズムの計算段階に従い且つ第２の記憶手段の前記秘密ゾーンに含まれる暗号秘密鍵（Ｋｓ）を使用するコンピュータシステム（１）であって、前記処理手段が、
標準の暗号アルゴリズムの計算段階に必要な各中間変数を、複数の部分中間変数に置き換える第１の実行手段と、
非線形変換テーブルを、当該部分中間変数の各々に適用する第２の実行手段と、
部分中間変数で得られる結果から、標準の暗号アルゴリズムの使用に対応する最終結果を再生する第３の実行手段とを含み、
コンピュータシステム（１）が、暗号計算プロセスを、複数の異なる計算プロセス部分に分割して得られる各部分で実施される操作を、マルチプログラミングの場合に、同時に実行する手段を含むことを特徴とする、コンピュータシステム（１）。
【請求項７】
暗号アルゴリズムを記憶するための第１の記憶手段（７）と、前記暗号アルゴリズムを実行するための処理手段（２）と、秘密ゾーン（６０）を有する第２の記憶手段（６）とを備え、前記暗号アルゴリズムは、ＤＥＳ、トリプルＤＥＳ、またはＲＳＡタイプの暗号アルゴリズムの計算段階に従い且つ第２の記憶手段の前記秘密ゾーンに含まれる暗号秘密鍵（Ｋｓ）を使用するコンピュータシステム（１）であって、前記処理手段が、
標準の暗号アルゴリズムの計算段階に必要な各中間変数を、複数の部分中間変数に置き換える第１の実行手段と、
非線形変換テーブルを、当該部分中間変数の各々に適用する第２の実行手段と、
部分中間変数で得られる結果から、標準の暗号アルゴリズムの使用に対応する最終結果を再生する第３の実行手段とを含み、
コンピュータシステム（１）が、暗号計算プロセスを、複数の異なる計算プロセス部分に分割して得られる各部分で実施される操作を、並行して動作する異なるプロセッサで同時に実行する手段を含むことを特徴とする、コンピュータシステム（１）。
【発明の詳細な説明】
【０００１】
本発明は、同一の秘密鍵暗号アルゴリズムを使用する１つまたは複数の電子装置（コンピュータシステム）の安全化方法と、この方法の使用および電子装置とに関する。より詳しくは、計算を実施する方法を秘密データに依存させることをめざしており、秘密データは、介在する電子装置もしくは使用される秘密鍵に応じて異なったものにすることができる。本発明の目的は、電子装置が、いわゆるＤＫＤＰＡ（「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｋｅｙ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」）といった一定の物理的な攻撃タイプに対して耐性を失わせないようにすることにある。ＤＫＤＰＡは、異なる秘密鍵を用いて行われる計算を複数回実行する間に、１つまたは複数の電子装置の電力消費量を調べて、秘密鍵に関する情報を得ようとするものであって、（たとえば攻撃者が、これらの計算の少なくとも１つに対して秘密鍵を自分で設定することができた場合）少なくとも１つの秘密鍵が攻撃者により知られてしまう。
【０００２】
ここで考慮された暗号アルゴリズムは、入力情報の関数として出力情報を計算するために秘密鍵を使用する。これは、暗号化操作、復号化操作、または署名操作あるいは署名の確認操作、認証操作または破棄操作に関する。暗号アルゴリズムは、入力および出力を知った攻撃者が、実際には、秘密鍵そのものについて如何なる情報も引き出せないように構成される。
【０００３】
従って、「秘密鍵アルゴリズム」すなわち「対称アルゴリズム」といった表現で一般に示された分類よりも広い分類に関与する。特に、本特許出願に記載されたものは全て、「公開鍵アルゴリズム」すなわち「非対称アルゴリズム」と呼ばれるアルゴリズムにも適用される。非対称アルゴリズムは、事実、公開鍵ともう１つの秘密鍵との２つの鍵を含んでおり、攻撃の対象となる後者について以下に説明する。
【０００４】
電力解析（「Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」）型の攻撃は、Ｐａｕｌ  ＫｏｃｈｅｒおよびＣｒｙｐｔｏｇｒａｐｈｉｃ  Ｒｅｓｅａｒｃｈ（Ｃｏｎｆｅｒ  ｄｏｃｕｍｅｎｔ  Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｒｅｌａｔｅｄ  Ａｔｔａｃｋｓ  ｂｙ  Ｐａｕｌ  Ｋｏｃｈｅｒ，Ｊｏｓｈｕａ  Ｊａｆｆｅ，ａｎｄ  Ｂｅｎｊａｍｉｎ  Ｊｕｎ，  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｒｅｓｅａｒｃｈ，８７０  Ｍａｒｋｅｔ  Ｓｔ．，Ｓｕｉｔｅ  １００８，Ｓａｎ  Ｆｒａｎｃｉｓｃｏ，ＣＡ９４１０２；下記のＵＲＬアドレスにおけるＨＴＭＬ文書版：
ｈｔｔｐ：／／ｗｗｗ．ｃｒｙｐｔｏｇｒａｐｈｙ．ｃｏｍ／ｄｐａ／ｔｅｃｈｎｉｃａｌ／ｉｎｄｅｘ．ｈｔｍｌ
を資料として本出願に挿入）により開発されたものであり、実際には、攻撃者が、計算の実行時に、単なる入出力データ、たとえばマイクロコントローラの電力消費量とか、回路から放出される電磁放射線とかいったデータ以外の情報を収集できると確認することから出発している。
【０００５】
電力差分解析（ＤＰＡ「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」）は、この同一の秘密鍵を用いた多数の計算で実施されるエネルギー消費量の測定結果を統計的に分析して、電子装置に含まれる秘密鍵についての情報を得ることを可能にする攻撃である。
【０００６】
限定的ではない例として、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムの場合を考慮する。このアルゴリズムは、以下の資料の１つに記載されている。
【０００７】
ＦＩＰＳ  ＰＵＢ  ４６−２，  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ  １９９４；
ＦＩＰＳ  ＰＵＢ  ７４，Ｇｕｉｄｅｌｉｎｅｓ  ｆｏｒ  Ｉｍｐｌｅｍｅｎｔｉｎｇ  ａｎｄ  Ｕｓｉｎｇ  ｔｈｅ  ＮＢＳ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ，１９８１；
ＡＮＳＩ  Ｘ３．９２，Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ，  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ  １９８１；
ＩＳＯ／ＩＥＣ  ８７３１：１９８７，Ｂａｎｋｉｎｇ−Ａｐｐｒｏｖｅｄ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏ−Ｐａｒｔ  １：Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ（ＤＥＡ）。
【０００８】
あるいはまた以下の著書に記載されている。Ｂｒｕｃｅ  Ｓｃｈｎｅｉｅｒ，Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ，第２版，  Ｊｏｈｎ  Ｗｉｌｅｙ＆Ｓｏｎｓ，１９９６，２７０ページ。
【０００９】
上記の文献は、資料として本出願に挿入する。ＤＥＳアルゴリズムは、図２Ａに示したような、「ラウンド」と呼ばれる１６ステップで展開される。１６個のラウンドの各々で、変換Ｆが、第１のラウンドで入力メッセージ（Ｅ）の半分（Ｒ０）を構成する３２ビット（Ｒｉ）で実施される。各ラウンドでは、３２ビットの暗号化情報から形成される一部（Ｒｉ）が、３２ビットの暗号秘密鍵（Ｋｓ）からなる一部（Ｋｉ）と関数Ｆで組み合わされる。この関数Ｆは、各ラウンドで、６ビットから４ビットへの非線形変換を８回使用する。これはＳ１、Ｓ２、．．．、Ｓ８（図１ｂ、２ｂ）と示され、「箱Ｓ」と呼ばれる符号化テーブルにおいて、それぞれ符号化されて記憶される。これらの８個の箱Ｓは、全てのカードまたは全ての電子装置に対して同じである。ただ、暗号鍵だけが、カードあるいは電子装置間で異なる。各箱Ｓは、４個の１ビット列×６４（２６）行を備えるテーブルである。勿論、これらのテーブルは、場所を節約できるようにするように違ったやり方でメモリに配置してもよい。
【００１０】
ＤＥＳアルゴリズムの構成により、図２Ｂでは、３２個の構成ビットの情報（Ｒｉ）に対して関数Ｆが実施する変換Ｆが、常に以下のカテゴリーの１つに入れられることが分かる。
【００１１】
−複数ビットのＲｉを置換し、次いで４８ビットにＲｉを拡大して、情報Ｒｉ’を得る。
【００１２】
−鍵または副鍵だけに依存する変数Ｋｉで、Ｒｉ’を排他的ＯＲして、４８ビットの結果Ｒｉ”を得る。
【００１３】
−異なる６個の箱Ｓを、Ｒｉ”を構成する６ビットの各部分へ適用することにより、非線形変換する。
【００１４】
−８個の箱Ｓ（Ｓ１〜Ｓ８）からなる集合の３２個の出力ビットについて、置換Ｐを行う（この置換は、ＤＥＳ標準により規定されて課される）。
【００１５】
尚、以下の文章中では記号
【００１６】
【数１】
0004153665.tif 000002
は、特に断りのない限り、○＋と記す。
【００１７】
関数Ｆの実施により得られる結果は、排他的ＯＲで、図２Ａの式Ｒｉ＝Ｒｉ−２○＋Ｆ（Ｒｉ−１，Ｋｉ）を満たすように、他の３２ビットのメッセージまたはステップｉ−２で供給される３２ビットの結果と組み合わされる。
【００１８】
ＤＥＳアルゴリズムに対するＤＰＡタイプの攻撃は、ＤＥＳに対して次のように実施可能である。
【００１９】
第１ステップ：  ＤＥＳアルゴリズムの計算１０００回に対して、第１のラウンドＤＥＳの電力消費量を測定する。こうした１０００回の計算の入力値を、Ｅ［１］、．．．、［Ｅ１０００］と記す。計算時に測定された電力消費量の対応する１０００個の曲線をＣ［１］、．．．、［Ｃ１０００］と記す。また、１０００個の電力消費量曲線の平均曲線ＣＭを同様に計算する。
【００２０】
第２ステップ：  たとえば、第１のラウンドの時に、第１の箱Ｓの第１の出力ビットに注目する。このビットの値をｂと記す。ｂは、６ビットの秘密鍵だけに依存することが容易に分かる。攻撃者は、関与する６ビットを仮定する。これらの６ビットおよびＥ［ｉ］から、ｂに対して期待される理論上の値を計算する。これにより、１０００個の入力Ｅ［１］、．．．、Ｅ［１０００］を、ｂ＝０のカテゴリーとｂ＝１のカテゴリーの２つのカテゴリーに分けることができる。
【００２１】
第３ステップ：  第１のカテゴリーすなわちｂ＝０の入力に対応する曲線の平均値ＣＭ’を保持する。ＣＭとＣＭ’の差が著しい場合、６ビットの鍵に対して考慮された値は正しいものとみなされる。統計的な意味で、ＣＭとＣＭ’に著しい差がない場合、すなわち、測定ノイズの標準偏差を大きく超える差がない場合、６ビットに対して別の選択肢で第２ステップをやり直す。
【００２２】
第４ステップ：  第２の箱Ｓ、次いで第３の箱、．．．、第８の箱Ｓまで、箱から送られるターゲットビットｂで、第２ステップおよび第３ステップを繰り返す。従って、最終的には４８ビットの秘密鍵が得られる。
【００２３】
第５ステップ：  残りの８個のビットは、網羅的なサーチにより見つけることができる。
【００２４】
この攻撃は、各命令の個々の電力消費量についても、また各命令の時間における位置についても何の知識も必要としない。攻撃者が、アルゴリズムの出力と、対応する電力消費曲線とを知っていると仮定した場合も同様に、この攻撃が適用される。こうした攻撃は、単に、次のような根本的な仮定に基づいているだけである。
【００２５】
根本的な仮定：  アルゴリズムの計算中に現れる中間変数が存在し、実際には３２ビット未満のいくつかの鍵のビットを知ることにより、２個の入力または２個の出力が、この変数に対して同じ値を与えるか否か判断することができる。
【００２６】
ＤＥＳ等の箱Ｓを使用する全てのアルゴリズムが、潜在的にはＤＰＡで損傷されうるが、これは、通常の実施形態が一般に上記の仮定の範囲に留まっているからである。
【００２７】
高レベル電力差分解析（ＨＯ−ＤＰＡ「Ｈｉｇｈ−Ｏｒｄｅｒ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」）と呼ばれる攻撃は、上記のＤＰＡ攻撃を一般化したものである。この攻撃は、複数の異なる情報源を使用可能であす。すなわち、電力消費量に加えて、電磁放射線や温度等の測定を実施したり、単なる平均概念よりもずっと複雑な統計処理、（上記のビットｂを一般化した）初歩的でない中間変数を使用したりすることができる。しかしながら、この攻撃は、ＤＰＡと同じ根本的な仮定に全く基づいている。
【００２８】
ＤＰＡまたはＨＯ−ＤＰＡ攻撃の危険性をなくすための１つの解決方法は、秘密鍵Ｋｓによる暗号計算プロセスに対して、前記根本的な仮定が検証されないように、アルゴリズムの実施形態を修正することからなる。それは、計算された中間変数のどれもが、秘密鍵の容易にアクセス可能な部分集合の知識に依存しないからである。
【００２９】
このため、第１に、暗号計算プロセスは、電子装置内で、並列に作動される複数の異なる計算プロセス部分ＰＰＣ１〜ＰＰＣＫ（図３）に分割され、次いで第２に、電子装置内で、分割されないときに暗号計算によって得られる値に対応する最終値Ｖを、前記異なる計算プロセス部分ＰＰＣ１〜ＰＰＣＫによって得られる部分中間結果ｖ１〜ｖｋから再生する。
【００３０】
こうした分割は、計算中に介在して入力（または出力）データに依存する各中間変数ｖを、ｋ個の変数ｖ１、ｖ２、．．．、ｖｋに代え、ｖ１、ｖ２、．．．、ｖｋが、必要に応じてｖを再生できるようにする修正計算アルゴリズムから構成される。より詳しくは、これは、ｖ＝ｆ（ｖ１，ｖ２，．．．，ｖｋ）であるようにｖを決定可能な関数ｆが存在し、修正アルゴリズムによって実施される分割が、この関数を満たすことを意味する。しかも、ｆは、好適には次のような第１の条件を満たすものとする。
【００３１】
条件１：  指数ｉが（広い意味で）１〜ｋに含まれる。値ｖを知っても、実際には、式ｆ（ｖ１，．．．，ｖｋ）を満たす（ｋ−１）項組（ｖ１，．．．，ｖｉ−１，ｖｉ＋１，．．．，ｖｋ）が存在するような値ｖｉの集合に関する情報を決して導き出すことはできない。
【００３２】
その場合には、入力（または出力）データに依存する各中間変数ｖを、ｋ個の変数ｖ１、ｖ２、．．．、ｖｋに代えることによって、アルゴリズムを「翻訳」する。
【００３３】
修正アルゴリズムの最大の安全性を、新しい形で補償するために、関数ｆについて以下の追加条件（条件２）を課す。
【００３４】
条件２：  関数ｆは、一般にｖについて実施される変換の代わりに、計算中にｖ１、ｖ２、．．．、またはｖｋについて実施される変換が、ｖを計算し直さなくてもインプリメント可能であるように構成する。
【００３５】
ＤＥＳアルゴリズムの例を再度挙げる。上記の方法を具体的に実施するには、修正計算アルゴリズムＤＥＳＭを構成して、計算中に介在して入力または出力データに依存する各中間変数ｖを、たとえば２個の変数ｖ１、ｖ２に分割する（ｋ＝２）。上記の例１の関数ｆ（ｖ１，ｖ２）＝ｖ＝ｖ１○＋ｖ２は、条件１の構成を満たすものとみなされる。ＤＥＳアルゴリズムの構成により、ｖについて行われる変換が、常に次の５つのカテゴリーの１つに入ることが容易に認められる。
【００３６】
−数ビットのｖの置換
−数ビットのｖの拡大
−同じタイプの別の変数ｖ’によるｖの排他的ＯＲ
−鍵または副鍵だけに依存する変数ｃによるｖの排他的ＯＲ
−箱Ｓによるｖの非線形変換
最初の２つのカテゴリーは、変数ｖのビットについての線形変換に対応する。従って、条件２は、こうした線形変換に対して、検証がきわめて簡単であり、一般にｖに対して実施される変換の代わりに、ｖ１、次いでｖ２を置換もしくは拡大するだけで十分である。変換前に真であった関係式ｆ（ｖ１，ｖ２）＝ｖは、変換後も真であり続ける。
【００３７】
同様に、第３の場合は、計算ｖ”＝ｖ○＋ｖ’を、ｖ”１＝ｖ１○＋ｖ’１とｖ”２＝ｖ”○＋ｖ’２とに代えるだけでよい。式ｆ（ｖ１，ｖ２）＝ｖと、ｆ（ｖ’１，ｖ’２）＝ｖ’から、ｆ（ｖ”１，ｖ”２）＝ｖ”が適切に得られ、条件２がさらに検証される。
【００３８】
鍵または副鍵だけに依存する変数ｃによるｖの排他的ＯＲに関しては、条件２もまたすぐに満たすことができる。すなわち、ｖ○＋ｃを、ｖ１○＋ｃまたはｖ２○＋ｃに代えるだけでよく、これによって条件２が満たされる。
【００３９】
さらに、図４Ａに示されているように、この例では、６ビットの入力を受信し４ビットの出力を生成する箱Ｓとして構成された、所定の従来技術の非線形変換ｖ’＝Ｓ（ｖ）の代わりに、電子装置は、それぞれが１２ビットから４ビットへのテーブルの形態をとることができる新しい２個の箱Ｓによって、変形実施形態で（ｖ’１，ｖ’２）＝Ｓ’（ｖ１，ｖ２）の変換を行う。等式ｆ（ｖ’１，ｖ’２）＝ｖ’を保証するには、以下の選択をするだけで十分である。
【００４０】
【数２】
0004153665.tif 000003
ここでＡは、１２ビットを４ビットにする任意の秘密変換を示す。第１の（新しい）箱Ｓ（図４ｂのＳ’１）は、（ｖ１，ｖ２）にＡ（ｖ１，ｖ２）を関連付ける変換テーブル（ｖ１，ｖ２）→Ａ（ｖ１，ｖ２）に対応し、第２の（新しい）箱Ｓ（Ｓ’２）は、（ｖ１，ｖ２）にＳ（ｖ１○＋ｖ２）○＋Ａ（ｖ１，ｖ２）を関連付ける変換テーブル（ｖ１，ｖ２）→Ｓ（ｖ１○＋ｖ２）○＋Ａ（ｖ１，ｖ２）に対応する。任意関数Ａの存在により、条件１を保証できる。また、テーブルの使用によりｖ１○＋ｖ２を計算する必要がないので、条件２を満たすことができる。
【００４１】
変換または転換テーブルは、電子装置がマイクロ計算機カードから構成される場合、マイクロ計算機カードのＲＯＭに記憶可能である。
【００４２】
かくして、ＤＥＳ等の標準の暗号計算プロセスにより実施される非線形変換タイプの計算ステップの場合、図４Ｃに示したように、ｋ個の部分に分割されることができる。ｎビットの変換出力を、ｍビットの入力の関数であるアドレスで読み込む変換テーブルによって記述されたｍビットからｎビットへの非線形変換を用いた従来の暗号計算プロセスに比べて、修正暗号計算アルゴリズムＤＥＳＭは、分割のない時に入力変数Ｅの役割を果たすｍビットの中間変数に実施される従来の暗号計算プロセスのｍビットからｎビットへの各非線形変換を、ｍビットの部分中間変数ｖ１〜ｖｋの集合ｋの部分中間変数にそれぞれ実施される、複数ｋ個のｋｍビットからｎビットへの部分非線形変換に代える。本発明が目的とする方法の特に注目すべき特徴によれば、こうした部分非線形変換が、ｋ個の部分変換テーブルによって記述および構成され、各テーブルのｎビットの出力それぞれが、この変換の変数ｖ’１、変数ｖ’２、．．．変数ｖ’ｋをそれぞれ構成し、ｋ個のｋｍビット入力群のうち、１つの入力群の関数であるアドレスで読み込まれる。
【００４３】
図４Ｃに関して示した上記ＤＥＳの例では、ｋ＝２、ｎ＝４、ｍ＝６である。
【００４４】
第１の変形実施形態によれば、ＲＯＭが大型化するという理由から、ＤＥＳの従来の記述の８個の各箱Ｓに対して、同じ任意関数Ａを完全に使用可能であり、それによって、新しい蓄積箱Ｓを、１６個の代わりに９個だけにすることができる。
【００４５】
第２の変形実施形態（以下、変形実施形態２という）について、図４Ｄを参照しながら説明する。
【００４６】
箱Ｓを蓄積するのに必要なＲＯＭのサイズを低減するために、箱Ｓとして与えられた当初のインプリメンテーションの各非線形変換ｖ’＝Ｓ（ｖ）（ＤＥＳの例では、６ビットの入力が受信され、４ビットの出力が出力される）の代わりに、６ビットから４ビットへのテーブルをそれぞれ含む２個の箱Ｓ（Ｓ’１、Ｓ’２）により、この第２の変形実施形態で、変換（ｖ’１，ｖ’２）＝Ｓ’（ｖ１，ｖ２）を行う以下の方法を同様に使用することができる。当初使用されたｖ’＝Ｓ（ｖ）の計算は、修正アルゴリズムでは、以下の２つの計算に代えられる。
【００４７】
【数３】
0004153665.tif 000004
これは、６ビットから６ビットへの全単射秘密関数φを使用する。また
【００４８】
【数４】
0004153665.tif 000005
ここで、Ａは、６ビットを４ビットにする任意の秘密変換を示す。第１の（新しい）箱Ｓ（図４ＤではＳ’１）は、ｖ０をＡ（ｖ０）に関連付ける変換テーブルｖ０→Ａ（ｖ０）に対応し、第２の（新しい）箱Ｓ（図４ＤではＳ’２）は、ｖ０をＳ（φ−１（ｖ０））○＋Ａ（ｖ０）に関連付ける変換テーブルｖ０→Ｓ（φ−１（ｖ０））○＋Ａ（ｖ０）Ａ（ｖ０）に対応する。構成上、等式ｆ（ｖ’１，ｖ’２）＝ｖ’が常に得られる。任意関数Ａにより、条件１を保証できる。テーブルの使用により、φ−１（ｖ０）＝ｖ１○＋ｖ２を計算する必要はない。
【００４９】
図４Ｅでは、ＤＥＳのような標準の暗号計算プロセスの範囲で使用される非線形タイプの対応計算ステップを、変形実施形態２に従って、本発明が目的とする方法に修正したものを示した。ｎビットの出力を、ｍビットの入力の関数であるアドレスで読み込む変換テーブルにより記述されたｍビットからｎビットへの非線形変換に対する入力変数Ｅに実施されたｋ個の部分への分割に加えて、暗号計算プロセスは、従来の計算プロセスの入力変数Ｅの役割を果たすｍビットの中間変数に実施されるｍビットからｎビットへの各非線形変換を、ｍビットの部分中間変数ｖ１〜ｖｋの集合ｋに実施されるｋｍビットからｋｎビットへの部分非線形変換に代えることによって修正される。こうした部分非線形変換は、ｋ個のｋｍビットからｎビットへの変換テーブルにより記述および構成され、変換テーブルの各入力は、ｊ∈［１，ｋ］のとき、式φｊｏｆ（ｖ１，．．．，ｖｋ）に従って、部分中間変数の関数ｆ（ｖ１，．．．，ｖｋ）に、秘密全単射関数φｊを適用して得られる値を受信する。上記の式φｊｏｆ（ｖ１，．．．，ｖｋ）の写像は、結果値の直接見積もりによって実施され、結果値を１〜ｋの対応する変換テーブルの入力に入力することにより、ｍビットの入力の関数であるアドレスで、ｎ個の変換出力ビットｖ’１またはｖ’２または．．．ｖ’ｋを読み込むことができる。
【００５０】
前記第１の実施例と同様に、図４Ｅを参照しながら、変数２は、ｋ＝２、ｍ＝６、ｎ＝４であるものとする。
【００５１】
さらに、簡略化した例では、全単射関数φ１〜φｋが同じである。
【００５２】
条件２を満たすために、全単射変換φまたは全単射関数φ１〜φｋを選択して、ｖ０＝φ（ｖ１○＋ｖ２）の計算が、ｖ１○＋ｖ２を計算し直さずに行えるようにする。
【００５３】
関数φの２つの選択例を以下に示す。
【００５４】
例１：  線形全単射φ
φに対して、６ビットから６ビットへの全単射秘密線形関数を選択する。このような選択の範囲では、６ビットにおける値の集合が、２個の要素を持つ有限体Ｆ２における寸法６のベクトル空間であるものとみなす。実際には、φを選択することは、係数が０または１である寸法６×６の可逆的な任意マトリクスを選択することに帰す。このようにφを選択することにより、条件２が満たされることが容易に分かる。事実、φ（ｖ１○＋ｖ２）を計算するには、φ（ｖ１）、次いでφ（ｖ２）を計算してから、さらに得られた２つの結果の「排他的ＯＲ」を計算するだけでよい。
【００５５】
たとえば、マトリクス
【００５６】
【数５】
0004153665.tif 000006
は、可逆的である。これは、６ビットから６ビットへの線形全単射φに対応し、以下によって規定される。
【００５７】
【数６】
0004153665.tif 000007
φ（ｖ１○＋ｖ２）を計算するために、ｖ１＝（ｖ１，１，ｖ１，２，ｖ１，３，ｖ１，４，ｖ１，５，ｖ１，６）およびｖ２＝（ｖ２，１，ｖ２，２，ｖ２，３，ｖ２，４，ｖ２，５，ｖ２，６）と記す場合、順次、以下を計算する。
【００５８】
【数７】
0004153665.tif 000008
【００５９】
【数８】
0004153665.tif 000009
【００６０】
次に、得られた２つの結果の「排他的ＯＲ」を計算する。
【００６１】
例２：  二次の全単射φ  φに対して、６ビットから６ビットへの二次の全単射秘密関数を選択する。「二次」という表現は、ここでは、関数φの出力値の各ビットが、有限体Ｆ２の６個の要素で識別される６個の入力ビットの二次の多項式関数によって与えられる。実際には、式φ（ｘ）＝ｔ（ｓ（ｘ）５）によって定義される関数φを選択可能であり、ここでｓは、Ｌに対する（Ｆ２）６の全単射秘密線形写像であり、ｔは、（Ｆ２）６に対するＬの全単射秘密線形写像である。Ｌは、有限体Ｆ２の６次の代数外延（ａｌｇｅｂｒａｉｃ  ｅｘｔｅｎｓｉｏｎ）を示す。この関数φの全単射特徴は、ａ→ａ５が外延Ｌへの全単射（従って逆は、ｂ→ｂ３８）であることによって生ずる。さらに条件２を満たすには、次のように表すだけでよい。
【００６２】
【数９】
0004153665.tif 000010
ここで、関数ψ（ｘ，ｙ）＝ｔ（ｓ（ｘ）４・ｓ（ｙ））である。
【００６３】
たとえば、Ｆ２［Ｘ］／（Ｘ６＋Ｘ＋１）でＸを識別し、各マトリクスのｓおよびｔが、Ｆ２に対するＬの基（１、Ｘ、Ｘ２、Ｘ３、Ｘ４、Ｘ５）に対して、またＦ２に対する（Ｆ２）６の標準基に対して、
【００６４】
【数１０】
0004153665.tif 000011
であるとき、以下のような６ビットから６ビットへの二次の全単射φが得られる。
【００６５】
【数１１】
0004153665.tif 000012
φ（ｖ１○＋ｖ２）を計算する場合、１２ビットから６ビットへのψ（ｘ，ｙ）＝ｔ（ｓ（ｘ）４／ｓ（ｙ））を使用し、以下の規則により、１２ビットの入力に応じて６ビットの出力が得られる。
【００６６】
【数１２】
0004153665.tif 000013
これらの式を用いることにより、以下を計算する。
【００６７】
【数１３】
0004153665.tif 000014
次に、得られた４個の結果の「排他的ＯＲ」を計算する。
【００６８】
第３の変形実施形態では、同じく箱Ｓを蓄積するのに必要なＲＯＭのサイズを低減するために、上記の２つの変形実施形態（変形実施形態１および２）の考え方を同時に適用することができる。すなわち、箱Ｓとして与えられた各非線形変換の新たなインプリメンテーションにおいて、同じ秘密全単射φ（６ビットから６ビットに）および同じ任意の秘密関数Ａ（６ビットから６ビットに）によって、変形実施形態２を用いる。
【００６９】
ＤＰＡ攻撃をかわすための前述の解決方法の欠点は、この解決方法が、ＤＫＤＰＡ攻撃に弱いことにある。
【００７０】
上記の安全化方法の使用により、ＤＰＡまたはＨＯ−ＤＰＡ攻撃を操作不能にすることができる。しかしながら、秘密鍵による暗号アルゴリズムの新しい実施形態は、従来のＤＰＡ攻撃がうまくいかなくても、別の攻撃に対して弱い場合がある。以下、この別の攻撃をＤＫＤＰＡ（「Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｋｅｙ  ａｎｄ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」）と呼ぶ。次に、この攻撃の一般原理について説明する。
【００７１】
攻撃者は、少数の電子装置を有し、各装置に対して、それが使用する暗号アルゴリズムの秘密鍵を知っている。各電子装置に対し、攻撃者は既に秘密鍵を知っているが、あたかも秘密鍵を知らないかのようにＤＰＡ攻撃を実施する。前述の原理に従って、６ビットの秘密鍵を仮定し、これらの６ビットの各選択肢に対して、平均消費曲線の差を示す６４個の曲線を得る。
【００７２】
幾つかのアルゴリズムの実施形態では、これらの６ビットの秘密鍵の幾つかの選択肢に対して、ＤＰＡが異例の現象を示すことがある（すなわち、６４個の曲線の内の１つに対して通常とは異なる頂点または空洞がある）。もちろん、特定の６ビットの秘密鍵は、本物の秘密鍵に対応しないが、この６ビット（Ｋ’と記す）と、本物の秘密鍵に対応する６ビット（Ｋと記す）との「排他的ＯＲ」は、しばしば定数Ｃになり、すなわち、攻撃者が秘密鍵を知っている各電子装置に対して、常にＫ○＋Ｋ’＝Ｃになる。
【００７３】
もし、その通りであれば、攻撃者は、未知の本物の秘密鍵のビットをたやすく見つけることができる。つまり、標準ＤＰＡ攻撃を実施し、その後、通常とは異なる曲線を示す６ビットの特定の選択肢Ｋ’を記し、最後に、Ｋ＝Ｋ’○＋Ｃを計算することによって、Ｋを導き出す。Ｃは、前述と同様に得られる。
【００７４】
本発明の目的の１つは、電子装置のＤＫＤＰＡ攻撃に対する上記のような弱さを改善することにある。
【００７５】
非常に綿密な調査によれば、上記のＤＫＤＰＡタイプの攻撃は、１つまたは複数の電子装置によって実施される暗号計算プロセスの実施形態が、検討される電子要素や、暗号プロセスが用いる秘密鍵とは無関係に、常に同じになることによって可能になる。
【００７６】
本発明が対象とする方法は、秘密鍵による暗号計算プロセスを用いる電子装置またはシステムのＤＫＤＰＡ攻撃の危険性をなくすことを目的とする。
【００７７】
本発明が対象とする１つまたは複数の電子装置の安全化方法は、暗号秘密鍵による暗号計算プロセスを実施し、暗号秘密鍵による暗号計算プロセスの実施形態が、秘密データに依存することを特徴とする。
【００７８】
別の特徴によれば、各電子装置および各秘密鍵に対して、前記暗号計算を行うために前記秘密データを使用する方法は、公開式である。
【００７９】
別の特徴によれば、前記電子装置によって使用される秘密データが、少なくとも全部で２個である。
【００８０】
別の特徴によれば、各電子装置が、少なくとも１つのいわゆる固有の秘密データを含む。
【００８１】
従って、本発明の別の目的は、１つの秘密鍵または別の秘密鍵の使用時に、電子装置間で、または同一の電子装置に対して、簡単に違ったものにすることができる暗号計算の実施方法にある。
【００８２】
この目的は、各電子アセンブリにおいて、この電子装置によって使用される様々な秘密鍵に対応する前記秘密データが、少なくとも全部で２個であることによって達せられる。
【００８３】
別の特徴によれば、各電子装置において、前記暗号計算によって使用される各秘密鍵に、固有の秘密データの１つが対応する。
【００８４】
別の特徴によれば、ｎビットの変換出力を、ｋｍビットの入力の関数であるアドレスで読み込むｋ個の変換テーブルによって、ｋｍビットからｋｎビットへの非線形変換を記述し、この変換を用いた暗号計算プロセスを使用する方法が、各非線形変換に対して、前記ｋ個のテーブルが、秘密データの一部をなすことを特徴とする。
【００８５】
別の特徴によれば、ｍビットの値の秘密全単射関数（φ）を当てはめて得られるアドレスでｎビットの変換出力を読み込み、非線形変換のｋｍビットの入力の公開関数の適用によりｍビットの値そのものを得るｋ個の変換テーブルによって、ｋｍビットからｋｎビットへの非線形変換を記述し、この変換を用いた暗号計算プロセスを使用する１つまたは複数の電子装置の安全化方法が、各非線形変換に対して、ｋ個のテーブルが秘密データの一部をなすことを特徴とする。
【００８６】
別の特徴によれば、各非線形変換に対し、秘密全単射関数もまた、秘密データの一部をなす。
【００８７】
別の特徴によれば、秘密データが、マイクロ計算機カードのＥＥＰＲＯＭに蓄積される。
【００８８】
別の特徴によれば、変換テーブルの計算プログラムを各電子装置に記憶して所定の事象により始動することによりテーブルを計算し、これらのテーブルの全部または一部を秘密データに記憶する。
【００８９】
別の特徴によれば、所定の事象が、カウンタが所定値を超過することである。
【００９０】
本発明の他の目的は、この方法の使用にある。
【００９１】
この目的は、前記方法が、ＤＥＳ、トリプルＤＥＳ、ＲＳＡアルゴリズムによってサポートされる暗号計算プロセスを安全化するために使用されることによって達せられる。
【００９２】
本発明の最後の目的は、ＤＰＡおよびＤＫＤＰＡ攻撃に強い１つまたは複数の電子装置を定義することにある。
【００９３】
この目的は、従来の暗号アルゴリズムの計算段階に従い、記憶手段の秘密ゾーンで得られる暗号秘密鍵を使用する修正暗号アルゴリズムの記憶手段と、この修正暗号アルゴリズムの実行手段とを含み、また、従来のアルゴリズムの計算段階に必要な各中間変数を複数（ｋ）の部分中間変数に代える第１の秘密手段と、非線形変換テーブルをこれらの部分中間変数の各々に実施する第２の手段と、部分変数で得られる結果から従来の暗号アルゴリズムの使用に対応する最終結果を再生する第３の秘密手段とを含むことを特徴とする電子装置によって達せられる。
【００９４】
別の特徴によれば、電子装置の秘密データが、少なくとも１つの部分秘密変数を構成する少なくとも１つの第１の任意の変数ｖ１を含んでおり、修正アルゴリズムが、中間変数ｖと１つまたは複数の部分秘密変数ｖ１とに第１の秘密関数を実施することによって、少なくとも１つの別の部分変数、たとえばｖ２を決定する。
【００９５】
別の特徴によれば、修正アルゴリズムは、任意抽出によって形成される少なくとも１つのテーブルＡを秘密データＤｓに記憶し、計算に必要な他のテーブルを不揮発性メモリに記憶するようなテーブルの使用によって、部分変数ｖ１、ｖ２に非線形変換を実施し、従来のアルゴリズムの様々な計算順序が、部分変数に毎回テーブルを使用することによって行われ、アルゴリズムの最終順序が、第２の秘密関数に従って部分変数を組み合わせた結果を計算する。
【００９６】
別の特徴によれば、修正アルゴリズムの第１の秘密手段が、部分中間変数と各中間変数（ｖ）とを結合する関数ｆから構成されており、こうした中間変数の値を知っていても、式ｆ（ｖ１，．．．，ｖｉ，．．．，ｖｋ）＝ｖを満たす（ｋ−１）項組（ｖ１，．．．，ｖｉ−１，ｖｉ＋１，．．．，ｖｋ）が存在するような特定の部分値ｖｉの集合を導き出すことができないようにする。
【００９７】
別の特徴によれば、修正アルゴリズムの第２の手段が、ｋ個の部分変換テーブルから構成され、ｋ個の部分変換テーブルのうち、ｋ−１個の部分変換テーブルが任意の秘密変数を含む。
【００９８】
別の特徴によれば、修正アルゴリズムの第２の手段が、ｋ個の変換テーブルを含んでおり、各変換テーブルが、式φｊｏｆ（ｖ１，．．．，ｖｋ）、ｊ∈［１，ｋ］に従って部分中間変数の前記関数ｆ（ｖ１，．．．，ｖｋ）に秘密全単射関数φ１を実施して得られる値を入力として受け、こうした写像φｊｏｆ（ｖ１，．．．，ｖｋ）が、結果値の直接見積もりによって行われ、この結果値を変換テーブルの入力に入力することによって、一個のアドレスでｎビットの変換出力を読み込むことができ、前記変換出力が、ｍビットの入力の関数である。
【００９９】
別の特徴によれば、修正アルゴリズムの第２の手段が、分割されないときに従来の暗号計算プロセスの中間変数に実施される各非線形変換を、部分中間変数の集合に実施されるｋｍビットからｋｎビットへの部分非線形変換に代え、（ｋ−１）ｎビットの前記変換出力をｋｍビットの入力の多項式関数として計算し、出力ビットの残りのｎビットが、ｋｍ個の入力ビットの関数であるアドレスで前記出力ビットの残りのｎビットを読み込む変換テーブルの読み込みによって得られる。
【０１００】
別の特徴によれば、暗号計算プロセスを複数の異なる計算プロセス部分に分割して得られる各部分で複数の操作が修正アルゴリズムにより実施され、これらの操作が、逐次的に実行される。
【０１０１】
別の特徴によれば、暗号計算プロセスを複数の異なる計算プロセス部分に分割して得られる各部分で複数の操作が実施され、前記操作が重なって実行される。
【０１０２】
別の特徴によれば、暗号計算プロセスを複数の異なる計算プロセス部分に分割して得られる各部分で複数の操作が実施され、前記操作は、マルチプログラミングの場合に同時に実行される。
【０１０３】
別の特徴によれば、暗号計算プロセスを複数の異なる計算プロセス部分に分割して得られる各部分で複数の操作が実施され、前記操作は、異なるプロセッサで並列作業することにより同時に実行される。
【０１０４】
別の特徴によれば、電子装置が、各電子装置に記憶された変換テーブルの計算プログラムと、テーブルの計算を所定の事象によって始動し、秘密データにこれらのテーブルの全部または一部を記憶する手段とを含む。
【０１０５】
別の特徴によれば、カウンタは、所定値を超過したとき、テーブルの計算を始動する所定の事象を構成するために、各暗号計算におけるインクリメント値を記憶する。
【０１０６】
本発明の他の特徴および長所は、添付図面に関してなされた説明を読めば、いっそう明らかになるであろう。
【０１０７】
以下、本発明は、図１に関して、図４Ｆに示した従来技術の実施形態と比較しながら説明する。
【０１０８】
電子装置は、たとえばサーバまたは端末等の広範な装置に設置される安全電子モジュールから構成可能である。この電子装置は、１つまたは複数のＩＣを、広範な装置あるいはまたチップカードに組み込んで構成することができる。チップカードは、有接点もしくは無接点のコネクタにより広範な装置に接続されるマイクロプロセッサまたはマイクロコントローラを含む場合、一般に「スマートカード」と呼ばれる。たとえばＤＥＳのような、標準の暗号アルゴリズムは、電子装置（１）のたとえばＲＯＭ（７）型の不揮発性メモリに設置可能である。この電子装置（１）のマイクロプロセッサ（２）は、電子装置を様々なメモリに接続するバス（４）により、ＲＯＭ（７）に含まれる命令を読み込みながら、前記アルゴリズムを実行し、それによって、図２Ａ、２Ｂに関して説明するように、電子装置で、たとえばＥＥＰＲＯＭ型のプログラマブル不揮発性メモリ（６）の秘密ゾーン（６０）に含まれる暗号秘密鍵（Ｋｓ）と組み合わせて、暗号方法の複数段階を実行する。このとき、暗号化される情報Ｅは、たとえばＲＡＭ型の不揮発性メモリ（５）に瞬間的に記憶される。ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭを備えた単一ＩＣに結合されるマイクロプロセッサは、マイクロコントローラまたはマイクロ計算機と称される装置を構成する。マイクロプロセッサは、入出力回路（３）を介して広範な装置と対話し、不揮発性メモリの秘密ゾーン（６０）への如何なるアクセスも、マイクロプロセッサ（２）以外の回路によって許可されることはない。マイクロプロセッサ（２）だけが、秘密鍵（Ｋｓ）を読み込んで、図２Ａ、２Ｂに記載された従来の暗号化方法に従って秘密鍵を使用することにより、暗号化メッセージＭｃ＝ＤＥＳ（Ｅ，Ｋｓ）を生成する。
【０１０９】
本発明は、暗号を使用するアルゴリズムを修正して、従来のアルゴリズム（ＤＥＳ）の計算プロセスと同じ段階を尊重する修正アルゴリズム（ＤＥＳＭ）を構成することからなる。かくして、ＤＥＳの場合、修正アルゴリズムは、標準のＤＥＳの暗号計算プロセスを、並列に作動されて従来の暗号計算とは異なる中間部分結果値（部分変数と呼ばれる）を用いた複数の異なる計算プロセス部分に分割する。こうした分割は、電子装置（１）のメモリ（６）の秘密ゾーン（６０）に含まれる秘密データ（Ｄｓ）を使用して実行される。修正アルゴリズムは、Ｍｃ＝ＤＥＳＭ（Ｅ，Ｋｓ，Ｄｓ）＝ＤＥＳ（Ｅ，Ｋｓ）のように、中間部分結果値から最終値を再生することによって結果Ｍｃを生成する。この結果は、従来のアルゴリズムによって得られる結果に等しい。このように得られる電子装置は、従来の暗号化を行う電子装置（以下、従来装置とする）と完全に互換性があるので、従来装置が攻撃を受けるおそれのある用途または場所で従来装置の代わりに使用することができ、安全化した場所にある装置と交換する必要がない。
【０１１０】
こうした修正アルゴリズムは、従来のアルゴリズムの各中間変数を、複数の部分中間変数に代える秘密手段と、これらの部分中間変数それぞれに非線形変換テーブルを実施する手段と、部分変数で得られる結果から従来の暗号アルゴリズムの使用に対応する最終結果を再生する秘密手段とを含む。かくして、不正行為者は、部分変数と最終結果との関係を知ることはなくなるので、ＤＰＡ攻撃による暗号秘密鍵（Ｋｓ）を発見できなくなる。
【０１１１】
たとえば、前述のＤＥＳアルゴリズムの安全化方法の場合、修正暗号計算プロセスの実施形態を、ｋｍビットからｋｎビットへの各非線形変換の計算に対して用いられるｋ個の変換テーブルに依存させる。このｋ個のテーブルが、秘密データ（Ｄｓ）を構成する。さらに、変形実施形態２、３の場合、暗号計算プロセスの実施形態を、同じく秘密データの一部をなす秘密全単射写像のデータφ１、φ２、．．．、φｋに依存させる。
【０１１２】
このようにして、修正アルゴリズムは、必要だと判明した計算段階で、秘密データ（Ｄｓ）に含まれる秘密全単射関数を用い、他の計算段階では、同じく秘密データに含まれる変換テーブルを用いる。
【０１１３】
上記のＤＥＳアルゴリズムの例の場合、この秘密データを使用する方法は、公開式である。
【０１１４】
本発明は、ＤＥＳ暗号アルゴリズムの場合で説明したが、同じ原理および同じ方法を、トリプルＤＥＳあるいはまたＲＳＡといった既知の他の暗号化方法と共に使用可能である。
【０１１５】
１つまたは複数の電子装置でＤＫＤＰＡタイプの攻撃を操作不能にするには、電子装置間で常に同じではないか、１つまたは別の秘密鍵の使用時に常に同じではない秘密データ（Ｄｓ）を選択しなければならない。このため、電子装置間で容易に交換できるように、プログラマブルメモリに秘密データを入れておくことが好ましい。上記のＤＥＳの例では、ｋｍビットからｋｎビットへの各非線形変換の計算に用いられるｋ個の変換テーブルの中で、秘密データに対して新しい値が容易に選択されることが認められる。たとえば、（ｋ−１）個のテーブルを任意に選択し、次に、簡単な計算によってｋ番目のテーブルを導き出すことができる。変形実施形態２と３の場合も同様に、（ｋ−１）個のテーブルを任意に選択し、また秘密全単射写像φ１、φ２、．．．、φｋを同じく任意に選択してから、簡単な計算によってｋ番目のテーブルを導き出す。
【０１１６】
１つまたは複数の電子装置が、１つまたは複数のマイクロ計算機カードである場合、秘密鍵による暗号プロセスの実施形態が依存する秘密データ（Ｄｓ）は、ＥＥＰＲＯＭ（６）に蓄積可能である。これによって、カードの個人化プロセスの際に、カード間で秘密データを変更できる。カードの個人化プロセスでは、一般に、前記カードのＥＥＰＲＯＭに１つまたは複数の秘密鍵が入れられる。また、カードに含まれる１つまたは複数の秘密鍵の変更が必要な場合、ＥＥＰＲＯＭに入れられたこの秘密データを変えることもできる。
【０１１７】
本発明の最も強力な実施形態では、秘密データが、考慮されたマイクロ計算機カードと、暗号計算プロセスにより使用される秘密鍵とに、同時に依存する。たとえば、秘密データは、カードに秘密鍵を入力する都度、任意に選択される。実際、これは、マイクロプロセッサカードのＥＥＰＲＯＭに秘密鍵だけを入れる代わりに、（秘密鍵Ｋｓ、秘密データＤｓの）組を毎回入力することになる。限定的ではなく例として挙げられた本発明の変形実施形態では、秘密データが、少なくとも１つの部分秘密変数をなす少なくとも１つの第１の任意の変数ｖ１を含んでおり、修正アルゴリズムが、中間変数ｖと１つまたは複数の部分秘密変数ｖ１とに秘密関数を実施することによって、少なくとも１つの別の部分変数、たとえばｖ２を決定する。この秘密関数は、たとえば、次のような排他的ＯＲとすることができる。
【０１１８】
【数１４】
0004153665.tif 000015
修正アルゴリズムは、任意抽出からなる少なくとも１つのテーブルＡを秘密データＤｓに記憶したテーブルの使用により、部分変数ｖ１、ｖ２に非線形変換を実施する。計算に必要な他のテーブルは、不揮発性メモリに記憶可能である。従来のアルゴリズムの様々な計算順序は、部分変数に毎回テーブルを実施することによって行われ、アルゴリズムは、最終順序で、第２の秘密関数に応じて部分変数の組合わせにより結果を計算する。第２の秘密関数は、第１の秘密関数とは逆にしてもよい。
【０１１９】
図３から４Ｆに関して記載した全ての変形実施形態もまた、本発明の一部をなし、プログラマブル不揮発性メモリ（６）に含まれる秘密データに、アルゴリズムの修正に介在する１つまたは複数の要素を組み込んだものである。アルゴリズムの修正に介在する要素は、秘密関数ｆまたは部分変換テーブルであるか、任意の１つの秘密変換テーブルＡを、プログラマブルメモリ（６）または非プログラマブルメモリ（７）の秘密でない部分に含まれる他の変換テーブルに計算によって結合したものか、多項式関数および１つまたは複数の変換テーブルか、秘密全単射関数φおよび任意の秘密変換Ａか、あるいはまた秘密に時間数かである。
【０１２０】
本発明の別の変形実施形態では、通常は個人化装置に存在する箱Ｓの計算プログラムまたは変換テーブルが、不揮発性メモリＥＥＰＲＯＭ（６）の秘密ゾーン（６１）に予備個人化段階でダウンロードまたは入力され、個人化段階で一回だけ実行可能な外部からの命令により個人化段階で始動される。一回、命令が実行されると、計算プログラムが、不揮発性メモリをロックし、特定の鍵を提示しなければプログラムへのアクセスを禁じるか、あるいは別の実施形態では、秘密ゾーン（６１）の自動消去を開始する。この変形実施形態は、未修正の個人化装置でも本発明を実施できる。箱Ｓの計算または変換テーブルは、上記の原理を尊重することによって実施され、個人化中のカードに固有の情報を多様化するものとして、予備個人化段階に記録されたカードの量産番号を使用する。この計算によって得られた値は、不揮発性メモリ（６）の秘密ゾーン（６０）に書き込まれる。
【０１２１】
別の追加変形実施形態では、カードが、不揮発性メモリに追加カウンタ（６２）を含んでおり、追加カウンタは、カウンタによるＤＥＳ計算を実行するたびに、ＤＥＳＭアルゴリズムによってインクリメントされる。カード利用システムは、このカウンタの内容と、所定値ｎとをカードに印加する度に比較するように、また、値ｎを超過している場合には、計算プログラム（６１）を呼び出して、新しい箱Ｓまたは変換テーブルを計算するように構成される。カード利用システムまたは計算プログラムは、計算プログラム（６１）または利用システムにより規定される手順に従って秘密データに箱Ｓを記憶し、カウンタをリセットする。さらに、この変形実施形態では、ＤＥＳＭアルゴリズムは、ＤＥＳ計算を実施する前に、ｃが所定の定数であるとき、追加カウンタ（６２）が、この定数を加えた所定値（ｎ＋ｃ）を超過していないかどうかチェックする。超過していた場合には、不正行為の試みがあると結論し、カードをリセットする。
【０１２２】
また、開示された全ての実施形態において、暗号計算が行われる方法がＤＥＳＭアルゴリズムの修正に依存し、この修正そのものが、メモリの秘密ゾーンに含まれる諸要素に依存することは自明である。
【０１２３】
上記の様々な変形実施形態のあらゆる組み合わせもまた、本発明の一部をなす。
【図面の簡単な説明】
【図１】  本発明の方法により、修正暗号アルゴリズムを使用する電子装置を示す図である。
【図２Ａ】  従来技術によるＤＥＳ（「Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ」）暗号化／復号化プロセスを概略的に示す図である。
【図２Ｂ】  従来技術によるＤＥＳ暗号化／復号化プロセスを概略的に示す図である。
【図３】  本発明による分割方法を示す概略的な流れ図である。
【図４Ａ】  標準のＤＥＳ暗号アルゴリズムに従来技術による方法を使用するモードを示す概略図である。
【図４Ｂ】  本発明によるＤＥＳＭ等の修正暗号計算プロセスの特定の実施形態の流れ図である。
【図４Ｃ】  図３に示した方法を使用する変形実施形態の図である。
【図４Ｄ】  図４ｂに示した方法を使用する変形実施形態の図である。
【図４Ｅ】  ＤＥＳＭ等の修正暗号計算プロセスで使用される非線形変換に、秘密全単射変換を実施した、本発明の方法による特定の別の実施形態を示す図である。
【図４Ｆ】  従来技術による一般的な暗号アルゴリズムが実施される電子装置を示す図である。
【図１】
0004153665.tif 000016
【図２Ａ】
0004153665.tif 000017
【図２Ｂ】
0004153665.tif 000018
【図３】
0004153665.tif 000019
【図４Ａ】
0004153665.tif 000020
【図４Ｂ】
0004153665.tif 000021
【図４Ｃ】
0004153665.tif 000022
【図４Ｄ】
0004153665.tif 000023
【図４Ｅ】
0004153665.tif 000024
【図４Ｆ】
0004153665.tif 000025