(57)【要約】      （修正有）【課題】電力分析攻撃などに対して、安全かつ効果的なデジタル署名の生成システムを提供すること。【解決手段】認証システムおよびデータに署名する方法において、ハードウェア／ソフトウェアで分割されたアプローチを使用する。処理プロセスを複数のステップに分割し、いくつかのステップの部分を並行して実行する。このことにより各処理手段によって消費される電力が隠されるように消費される。こうして、ある処理手段によって消費される電力は、他の処理手段によって消費される電力によって遮蔽される。そして、システムは、単純な電力分析を用いたハッカーによるシステム攻撃をむずかしくする。【選択図】図１
2006340347.tif 000002
【特許請求の範囲】
【請求項１】
０＜ｄ＜ｎであるようにランダムに選ばれた秘密鍵『ｄ』を用いてデータに署名するための楕円曲線デジタル署名暗号プロセスを実行する認証システムであって、ここでｎは大きい素数であり、このプロセスは、以下のステップ：
ステップＡ：署名される前記データ上でのハッシュ演算の実行；
ステップＢ：０＜ｋ＜ｎである乱数『ｋ』の生成；
ステップＣ：『ｋ』、および、ｙ２＋ｘｚ=ｘ３＋ａｘ２＋ｂタイプの関数を満たす楕円曲線に選ばれる基点Ｇ（ｘ，ｙ）を用いた小数点乗算ステップの実行、ここで、ａおよびｂは、中間結果を得るために少なくとも１つの中間サブ・ステップを使用し、同じ曲線上のまとめられた位置Ｍ（ｘ１，y１）を得るために前記中間結果をまとめ、および座標『ｘ１』上の剰余演算を実行することによって数『ｒ』を計算する基礎バイナリ・フィールドの要素である；
ステップＤ：剰余演算に続くステップＢから得られる前記乱数『ｋ』上で逆数演算を実行することによる数『ｚ１』の計算；
ステップＥ：『ｄ』上の乗算演算を実行することによる数『ｚ２』、および、剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＦ：ステップＡから得られるハッシュ変換されたデータ上で乗算演算を実行することにより数『ｚ３』、および剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＧ：数『ｚ２』上で乗算演算を最初に実行することによる数『ｓ』、それぞれステップＥおよびステップＣから得られるｒの計算、および、剰余演算に続くステップＦから得られる『ｚ３』の積での付加的な演算の実行；
ステップＨ：署名（ｒ，ｓ）の発信；からなり、
第１、第２および第３の処理手段間で分割されるように構成される前記システムは、少なくとも前記プロセスのいくつかのステップの部分を並行して実行することを特徴とする認証システム。
【請求項２】
前記プロセスのステップＡは前記システムの外側で実行され、前記ハッシュ変換されたデータは前記システムに提供されることを特徴とする請求項１に記載の認証システム。
【請求項３】
前記第１の処理手段は、前記プロセスの少なくともステップＢを処理するように構成されることを特徴とする請求項１に記載の認証システム。
【請求項４】
前記第２の処理手段は、論理演算装置を有し、少なくともステップＣの一部を処理するように構成されることを特徴とする請求項１に記載の認証システム。
【請求項５】
前記第３の処理手段は、前記プロセスの少なくともステップＤ、Ｅ、Ｆ、ＧおよびＨ、および任意にステップＣの一部を処理するように構成されることを特徴とする請求項１に記載の認証システム。
【請求項６】
前記第１の処理手段は、次のステップ：
（ｉ）乱数の生成；および、
（ｉｉ）生成された前記乱数の第２および第３の処理手段への発信；
を実行するように構成され、
前記第２の処理手段は、次のステップ：
（ｉ）前記乱数生成手段からの前記乱数の受信；
（ｉｉ）論理演算装置を作動させるためのコマンドの受信；
（ｉｉｉ）前記プロセスの小数点乗算ステップＣの少なくとも一部の実行；
（ｉｖ）前記プロセスの小数点乗算ステップの実行の状態の掲示；および
（ｖ）前記第３の処理手段への小数点乗算ステップの中間結果の発信；
を実行するように構成され、
前記第３の処理手段は、次のステップ：
（ｉ）ハッシュ変換されたデータの受信；
（ｉｉ）前記第１の処理手段からの前記乱数の受信；
（ｉｉｉ）前記プロセスのステップＤ、ＥおよびＦの実行；
（ｉｖ）前記プロセスのステップＣの一部の任意の実行；
（ｖ）前記第２の処理手段からの小数点乗算の中間結果の受信、および、ステップＣの結果のまとめ;
（ｖｉ）前記プロセスのステップＧおよびＨの実行；
（ｖｉｉ）ステップＨの前記署名を出力；
を実行するように構成されていることを特徴とする請求項１に記載の認証システム。
【請求項７】
前記第１の処理手段は：
（ｉ）乱数を生成するための乱数発生手段；および
（ｉｉ）生成された前記乱数を前記第２のおよび第３の処理手段に送る発信手段；
からなることを特徴とする請求項１に記載の認証システム。
【請求項８】
前記第２の処理手段は：
（ｉ）前記乱数発生手段によって生成された乱数を受信するための受信手段；
（ｉｉ）前記プロセスの小数点乗算ステップの少なくとも一部を実行するための論理演算装置；
（ｉｉｉ）前記論理演算装置を指示し、作動させるための制御レジスタ手段；
（ｉｖ）前記プロセスの小数点乗算ステップの実行の状態を掲示するための状態レジスタ手段；
（ｖ）前記小数点乗算ステップの中間結果を第３の処理手段に発信するための発信手段；
からなることを特徴とする請求項１に記載の認証システム。
【請求項９】
前記３の処理手段は：
（ｉ）前記第２の処理手段からハッシュ変換されたデータおよび前記小数点乗算の中間結果を受信するための受信手段；
（ｉｉ）前記プロセスのステップＤ、ＥおよびＦを実行するための計算手段；
（ｉｉｉ）任意に前記プロセスのステップＣの一部を実行して、ステップＣの前記最終結果をまとめるための計算手段；
（ｉｖ）前記プロセスステップＧおよびＨを実行するための計算手段；および
（ｖ）ステップＨの前記署名を発送するための出力手段；
からなることを特徴とする請求項１に記載の認証システム。
【請求項１０】
前記第１の処理手段は、少なくともマイクロプロセッサまたはカスタマイズされたハードウェア論理で構成されたグループから選択されたものであることを特徴とする請求項１に記載の認証システム。
【請求項１１】
前記第２の処理手段はハードウェア・アクセラレータであることを特徴とする請求項１に記載の認証システム。
【請求項１２】
前記第３の処理手段はマイクロプロセッサであることを特徴とする請求項１に記載の認証システム。
【請求項１３】
請求項１に記載の認証システムであって、前記第１および第２の処理手段は、メモリ・マップされた形式の前記第３の処理手段と通信するように構成されたことを特徴とする請求項１に記載の認証システム。
【請求項１４】
前記ハードウェア・アクセラレータは、プログラム可能なハードウェア・アクセラレータ、プログラム可能でないハードウェア・アクセラレータ、ハードウェア・アクセラレータカードまたはハードウェア・アクセラレータボードで構成されたハードウェア・アクセラレータのグループから選択された少なくとも１つであることを特徴とする請求項１１に記載の認証システム。
【請求項１５】
前記第２の処理手段および前記第３の一処理手段は、並行して少なくともステップＣの一部、および、ステップＣの残りの部分、ステップＤ、Ｅ、Ｆをそれぞれ実行するように構成されたことを特徴とする請求項１に記載の認証システム。
【請求項１６】
前記第２の処理手段は、ステップＣのその部分を実行する際、電力は、ステップＣの一部、ステップＤ、Ｅ、および、Ｆを実行する第３の処理手段によって消費される電力によって隠されるよう、電力を消費するように構成されていることを特徴とする請求項１に記載の認証システム。
【請求項１７】
データに署名する方法であって、０＜ｄ＜ｎであるようにランダムに選ばれた秘密鍵『ｄ』を用いた楕円曲線デジタル署名暗号プロセスを使用し、ここで、ｎは大きい素数であり、このプロセスは、以下のステップ；
ステップＡ：署名されるデータ上でのハッシュ演算の実行；
ステップＢ：０＜ｋ＜ｎである乱数『ｋ』の生成；
ステップＣ：ステップＢから生成された乱数およびｙ２＋ｘｚ=ｘ３＋ａｘ２＋ｂタイプの関数を満たす楕円曲線に選ばれる基点Ｇ（ｘ，ｙ）での小数点乗算ステップの実行、ここで、ａおよびｂは、中間結果を得るために少なくとも１つのサブ・ステップを使用し、同じ曲線上のまとめられた位置Ｍ（ｘ１，y１）を得るために前記中間結果をまとめ、および座標『ｘ１』上の剰余演算を実行することによって数『ｒ』を計算する基礎バイナリ・フィールドの要素である；
ステップＤ：剰余演算に続くステップＢから得られる前記乱数『ｋ』上で逆数演算を実行することによる数『ｚ１』の計算；
ステップＥ：『ｄ』上の乗算演算を実行することによる数『ｚ２』、および、剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＦ：ステップＡから得られるハッシュ変換されたデータ上で乗算演算を実行することにより数『ｚ３』、および剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＧ：数『ｚ２』上で乗算演算を最初に実行することによる数『ｓ』、それぞれステップＥおよびステップＣから得られるｒの計算、および、剰余演算に続くステップＦから得られる『ｚ３』の積での付加的な演算の実行；
ステップＨ：署名（ｒ，ｓ）の発信；
からなり、
前記方法は：
（ｉ）前記第１の処理手段の前記プロセスの少なくともステップＢの実行；
（ｉｉ）少なくとも前記第２の処理手段の前記プロセスのステップＣの一部の実行；
および（ｉｉｉ）少なくとも前記第３の処理手段の前記プロセスのステップＤ、Ｅ、Ｆ、ＧおよびＨの実行、ステップＣの一部の任意の実行；
からなることを特徴とするデータに署名する方法。
【請求項１８】
前記第２の処理手段で実行されるステップＣの一部、第３の処理手段で実行されるステップＣの残りの一部、ステップＤ、Ｅ、および、Ｆが、並列に実行されることを特徴とする請求項１７に記載のデータに署名する方法。
【請求項１９】
ステップＣのその一部を実行する第２の処理手段によって消費される電力は、ステップＣの残りの一部、ステップＤ、Ｅ、およびＦの一部を実行するために第３の処理手段により消費される電力によって隠されることを特徴とする請求項１７に記載のデータに署名する方法。
【請求項２０】
前記小数点乗算ステップは、少なくとも部分的な展開を使用しているフィールド乗算を含むことを特徴とする請求項１７に記載のデータに署名する方法。
【請求項２１】
前記部分展開は、前記小数点乗算ステップの実施における並列処理を増加させるために使われ、それで性能向上を得ることを特徴とする請求項２０に記載のデータに署名する方法。
【請求項２２】
チップ上のシステム内で方法を一体化し、前記システムをスマートカードに埋め込むことによってスマートカードで実行されることを特徴とする請求項１７に記載のデータに署名する方法。
【請求項２３】
システムバスのスロットを占有しているアドオン・カードにより前記方法を組み込むことによってサーバにおいて実行されることを特徴とする請求項１７に記載のデータに署名する方法。
【請求項２４】
添付の図面を参照して本願明細書において記載された請求項１に記載の認証システム。
【請求項２５】
添付の図面を参照して本願明細書において記載された請求項１７に記載のデータに署名する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号法に関する。
【０００２】
特に、本発明は認証のため、安全で効果的なデジタル署名の生成に関する。
【背景技術】
【０００３】
定義:
この明細書において用いられているように、以下の単語は、別途指示される使用される文脈の範囲を除いて、概して後述の意味を有することを目的とする。
「素数」:それ自体および１以外のいかなる正整数によって剰余なしでは割り切れない自然数。
【０００４】
「乱数」:乱数は、次の２つの状態が満たされるように、連続して発生する数である:
（１）数値が定義された間隔または集合を通じて均等に分配される、および
（２）過去のまたは現在の数値に基づいて将来の数値を予測することが不可能である。
【０００５】
「認証システム」:ユーザを識別するシステム、典型的に、アクセスが付与される前にユーザに有効なユーザ名および有効なパスワードを入力させることが認証として公知である。
【０００６】
「暗号法」:データを符合化することによる暗号化および復号化の実行および研究。その結果それは、特定の個人によってのみ解読されることができる。また、メッセージの発信者の間違いのない認証の実行および研究。
【０００７】
「暗号プロセス」:データの符合化または認証するためのプロセスが、暗号プロセスである。
【０００８】
「デジタル署名」:デジタル署名は、公開鍵暗号法の分野から技術を使用して実行されるデジタル情報を認証するための暗号方式である。
【０００９】
「秘密鍵」:暗号法において、個人的なまたは秘密の鍵は、秘密のメッセージを交換する関係者または複数の関係者のみに公知の暗号化／復号化鍵である。
【００１０】
「ハッシュ関数」:ハッシュ関数は、入力データを検査し、ハッシュ値と呼ばれる固定長の出力を生じるための関数である。
【００１１】
「モジュロ／モジュール演算」:モジュロ演算は、ある数値を他の数値によって割った残りを求める。
【００１２】
「小数点乗算」:有限フィールドを通じて定義される楕円曲線に属し、同じ曲線に帰属している新規な位置ｋＰを得るため、自然数『ｋ』によりグループを形成する位置Ｐの乗算が、小数点乗算として定義される。
【００１３】
「逆数」:与えられた数Ｎを法とする数ｘの逆数は、ｘで乗じられるときに、Ｎを法として１となる数として定義される。
【００１４】
「分割」:各々の分割された部分がある意味互いに独立しているように、何かを部分に分割する行為またはプロセス。
【００１５】
「論理演算装置」:論理的および他の関連する動作を実行するユニット。
【００１６】
コンピュータは、電子メールを経たビジネスレターを送るような基本作業から商取引のオンラインでの処理にわたるビジネス関連の役割を実施するのにきわめて重要になってきた。ビジネス関連の役割の実施におけるインターネットの使用は、きわめて普及している。
【００１７】
それゆえに、企業および個人は、通信のための安全な手段を必要とする。通信プロセスにおいて交換されるすべてのメッセージは、認証、守秘性、完全性および否認防止のセキュリティ属性を満たす必要がある。
【００１８】
送られる情報が適切に守られない場合、このような情報にアクセスするまたは偽造する侵入者の可能性は大いに存在する。ハッキングは、このような侵入活動に関連する用語である。ハッキングは、セキュリティの弱点および隙間利用して伝達されている情報への個人による未許可のアクセスを得ることを可能にする。ハッカーは、最も弱いおよび最も脆いリンクを攻撃することによってシステムまたはネットワークへの侵入を試みる。ハッキングの目的は、産業スパイ、または単に楽しみまたはイデオロギー的のいずれかである可能性がある。ハッキングによる秘密情報の漏出は、商業的および技術的な厳しいダメージを引き起こす可能性がある。通信に適用されるセキュリティがいかなるハッキングに対しても強固であることは、重要である。
【００１９】
それらのセキュリティ属性を満たすために、暗号化技術の利用が構築された。暗号法は、特に通信において情報を守るため、言語学的および数学的な技術を取扱う技術である。暗号化技術は、数学、特に整数論、情報理論、計算量、統計および組み合わせ理論からの原則を含む離散数学を広範囲に利用する。暗号化される情報は平文として知られ、暗号化されたデータは暗号文として知られる。現代の暗号化技術は、メカニズムを情報の暗号化のためだけでなく、認証、否認防止および安全鍵交換のためにも提供される。
【００２０】
様々な暗号化技術が、異なるセキュリティ属性を達成するために存在する。暗号法または暗号システムは、暗号法でメッセージを守るために使われる手順、プロトコル、暗号アルゴリズムおよび命令のパッケージである。暗号法は、２つのカテゴリに広く分類されることができる:
（１）対称鍵暗号；および（２）非対称鍵暗号。
【００２１】
対称鍵暗号は、情報交換の守秘性、すなわち暗号化および復号化を達成するために使われる。対称鍵暗号において、メッセージの発信者および受信者は、同じ秘密鍵を知っていてそれを使用する。発信者は、メッセージを暗号化するために秘密鍵を使用し、受信者はメッセージを解読するために秘密鍵を使用する。結果として、鍵にアクセスする誰でも、鍵で暗号化されるすべてのメッセージを読み、変更し、偽造することができる。
【００２２】
非対称鍵暗号が、守秘性および認証の両方ために使われる。非対称または公開鍵暗号方式において、各々の個人は一対の鍵を生成する。１つは公開鍵と呼ばれ、もう一つは秘密鍵と呼ばれる。公開鍵は公にされ、一方で、秘密鍵はそれを生成した個人によって秘密に保たれる。秘密鍵だけが公開鍵によって暗号化されたデータを解読することができる。秘密性を達成するため、情報は、受信者と通信することを望む誰にでも受信機の公開鍵で暗号化される。当人のみが秘密鍵を所有するので、そのように生成される暗号文は受信者だけによって解読されることができる。認証を達成するため、発信者は、当人の秘密鍵を用いて彼女のメッセージのハッシュの変換を生成する。これは、デジタル署名として公知である。受信者は、メッセージからのハッシュを再生させ、発信者の公開鍵を用いてデジタル署名でハッシュ上の操作を実行する。結果は、デジタル署名の部分と比較される。適合する場合、当人のみが対応する秘密鍵へのアクセスを有するので、それに署名した発信者のみによってメッセージが送られたと推測することができる。そして、認証は達成される。このプロセスは、署名確認として公知である。発信者および受信者において秘密の情報を共有する必要性は、除去され、秘密鍵は決して伝達または共有されない。
【００２３】
デジタル署名はまた、伝達されたメッセージまたは文書のオリジナルの内容が不変であることを保証するために用いることができる。署名者のみがサインを生成できるので、それらは、否認防止も容易にする。
【００２４】
異なる公開鍵暗号方式は、アルゴリズムの異なるタイプを利用する。様々なアルゴリズムの作用の主な違いは、公開および秘密鍵を生成するために用いられる方法および２つの鍵と関連する計算である。異なる公開鍵暗号方式のため、同じレベルのセキュリティを達成するために必要な秘密および公開鍵のサイズは異なる。従って、デジタル署名の生成のためのプロセッサにかかる総使用時間は選択される暗号法に依存する。
【００２５】
リベスト・シャミル・アドルマン（ＲＳＡ）は、デジタル署名を使用して暗号化および認証を提供するそのような公開鍵暗号方式である。エルガマルも、デジタル署名方式を提供する。
【００２６】
楕円曲線暗号システム（以下ＥＣＣとする）は、最初に１９８５年にニール・コブリッツおよびビクター・ミラーによって提案され、後で署名およびメッセージの認証のため、ＩＥＥＥによって採用された。楕円曲線デジタル署名アルゴリズム（またはＥＣＤＳＡ）において、メッセージは、ＳＨＡ‐１のような標準ハッシュ・アルゴリズムを使用して最初にハッシュ化される。ハッシュ化されたメッセージは、それから発信者の秘密鍵を用いて、一対のビット列である署名に変換される。メッセージおよび署名の両方は、受信者に送られる。メッセージを受信する受信者は、ハッシュを計算し、デジタル署名を認証するために発信者の公開鍵を使用する。
【００２７】
楕円曲線暗号システムは、楕円曲線を利用する公開鍵暗号方式である。楕円曲線暗号システムの主な利点は、等しいまたはより高いレベルのセキュリティを提供する一方、特定の状態の下でそれが他の方法より小さい鍵を使用するということである。楕円曲線暗号システムは、実際にはそれによって使用されるアルゴリズムを壊すことが計算機的に難しいので、他の暗号化技術より比較的安全である。ＥＣＣを壊すことは、いくつかの有限フィールド上で選ばれた楕円曲線の集まりにより使用される離散的対数の解決を必要とする。
【００２８】
楕円曲線暗号において、あるものは有限フィールドで開始する。略式に、フィールドは、いくつかの基本特性を満たすその上で定義される加算および乗算演算を有する一組の要素である。例は、ＦＰ＝｛０，１・・・Ｐ‐１｝であり、Ｐ未満の整数で設定され、ここで、Ｐは素数である。加算および乗算は、定義された剰余Ｐである。他の例は、Ｆ２ｍであり、係数０または１で、ｍ未満のすべての多項式で設定される。多項式の加算は係数側で実行され、ここで係数は、剰余２に加えられる。乗算は剰余ｍで実行され、これは、２つの多項式が最初に逓倍され、乗算の結果はそれからｍの低減多項式によって分割され、除算の残りは演算の結果であることを意味する。
【００２９】
バイナリのフィールドＦ２ｍ上の楕円曲線は、ｙ２＋ｘｙ＝ｘ３＋Ａｘ２＋Ｂを満たすｘ，ｙ∈Ｆ２ｍですべての位置（ｘ，ｙ）で設定されたものとして定義される。ここでＡ，Ｂ∈Ｆ２ｍである。特別な「無限大の位置」（Ｏで表示される）と曲線の位置は、Ｅ（Ｆ２ｍ）として示されるグループを形成する。公開鍵暗号方式の公開および秘密鍵のキーペアを生成するため、大きい次数ｎのサブグループを生成する基点Ｇ∈Ｅ（Ｆ２ｍ）を必要とする（Ｇによって生成されるサブグループは、Ｇを含むＥ（Ｆ２ｍ）の範囲内で最も大きいグループである）。次に、ｄ＜ｎで乱数ｄを生成し、位置Ｑ＝ｄ．Ｇ（Ｇに（ｄ−１）回適用される加算演算である）を計算する。その時、ｄが秘密鍵である一方Ｑは公開鍵である。
【００３０】
集合（ｍ，Ａ，Ｂ，Ｇ，ｎ）は、楕円曲線の領域パラメータと称される。暗号的に強い曲線を保証するため、ｎが大きい素数であることが必要とされる。結果として、ｍによって定義される基礎フィールドは、大きくなければならない。ｍ＞１６０が推奨される。
【００３１】
ＥＣＣに基づく標準署名生成アルゴリズムは、以下に記載され、ここで、記号Ｇ，ｎ，ｔ，ｄは以下に表示される:
Ｇは、曲線の基点である。
ｎは、基点Ｇの次数である。
ｔは、メッセージである。
ｄは、署名者の秘密鍵であり、ｄ＜ｎである。
【００３２】
Ｉ メッセージ・ダイジェストｅ＝ＳＨＡ‐１（ｔ）を計算する；
ＩＩ 乱数ｋを生成する；（０＜ｋ＜ｎ）
ＩＩＩ 数値ｋ．Ｇ＝（ｘ１，y１）を計算する。仮に、ｒ＝ｘ１ ｍｏｄ ｎとする。ｒ＝０である場合、ＩＩへ進む；
ＩＶ ｚ１＝ｋ−１ｍｏｄ ｎを計算する；
Ｖ ｓ‐ｚ１（ｅ＋ｄｒ） ｍｏｄ ｎを計算する。ｓ＝０である場合、ＩＩへ進む；および
ＶＩ  署名（ｒ，Ｓ）を出力する。
【００３３】
署名アルゴリズムの性能は、署名を生成し、認証すされるためにかかる時間によって測定される。性能が用途の必要条件を満たさないところでは、ハードウェア・アクセラレータが使われる。ハードウェア・アクセラレータが性能を向上させる一方、それらはシリコンのゲート・カウントに加えられる。それゆえに、性能およびゲート・カウントの間のトレードオフが必要とされる。
【００３４】
暗号のアルゴリズムが暗号解析に対して強固であることもまた、必要とされる。暗号解析は、通常必要とされる秘密鍵へのアクセスなしで、暗号化された情報の意味を得る方法の研究である。暗号解析の目的は、秘密鍵を導き出すために暗号システムの弱点または危険性を発見することである。暗号解読攻撃は、２つのカテゴリに広く分類されている:
１． アルゴリズムの固有の弱点を目標とする攻撃または純粋な攻撃；
２．アルゴリズムの実施における弱点を目標とする攻撃またはサイド・チャネル攻撃。
【００３５】
純粋な攻撃のいくつかの例は、以下の通りである:
＊周知の暗号文攻撃。ここで、攻撃者は、平文が解読されなければならない暗号化アルゴリズムから一まとまりの暗号文だけにアクセスする。
＊周知の平文攻撃。ここで、攻撃者は、暗号化アルゴリズムの中で対応する平文を知っている一組の暗号文を有する。
＊ 選ばれた平文／暗号文攻撃。攻撃者は、暗号化アルゴリズムから選択された複数の平文／暗号文の任意の集合に対応する暗号文／平文を得ることができる。
【００３６】
周知のサイド・チャネル攻撃は以下の通りである:
＊ タイミング攻撃。ここで攻撃者は、暗号演算を実行するためにかかる時間を測定し、実行される計算の本質を終了させる。
＊ 設計上の副作用攻撃。ここで攻撃者は、実行される計算を推測するために特定の機械構成上の計算を実行する副作用を利用する。
＊電力監視攻撃／電力分析攻撃。ここで攻撃者は、異なる計算の間、ハードウェアによって異なるパワー消費量を利用する。
＊電磁波盗聴／放射線モニタリング攻撃。ここで攻撃者は、漏らされた電磁放射を平文および他の情報と直接関連づける。
＊音響暗号解析攻撃。ここで攻撃者は、計算の間生じる音を実行されるステップに関連づける。
【００３７】
電力分析攻撃は、特に本発明に関連する。この攻撃は、各々のプロセッサ演算は、特定の作業を実行するある程度の電力を必要とするという原理に作用する。電力分析攻撃の主な２つのタイプは、以下の通りである:
（ｉ）単純電力分析攻撃:ここで攻撃者は、プロセッサによって実行される指示に消費される電力を直接関連づける；および、
（ｉｉ）差動装置電力分析攻撃:ここで攻撃者は、隠された情報を抽出するために統計分析を使用する。
【００３８】
一例として、楕円曲線小数点乗算のための倍加算法の実行中に消費される電力の分析から、加算点と２倍にする点との間で区別するのが可能であり、それにより、その場限りの鍵のビットを明らかにする可能性がある。この情報が、秘密鍵を導き出すために使われることができた。
【００３９】
本発明は、単純な電力分析攻撃の可能性を除去しないにしても減少させるＥＣＤＳＡを用いた認証システムの署名生成のための効率的な方法に特に関連がする。
【００４０】
ＥＣＤＳＡの実施への従来のアプローチは、単にハードウェアまたは単にソフトウェアでの実施に依存していた。第１の方法において、署名を生成するために必要とされるＥＣＣアルゴリズムおよび大きい整数算術のすべては、ハードウェアにおいて実行される。これは、典型的に１００,０００以上の次数のゲート・カウントに導くことができる。ソフトウェアのアプローチのためのタイミングの結果は、使用されるプロセッサ次第である。三菱の１６ビット１０ＭＨｚのプロセッサ（Ｍ１６Ｃ）では、それによって署名が、１６０ビット素体上において１５０ミリ秒で生成されたという結果が発表された。（引用:ハセガワ，Ｔ．，ナカジマ，Ｊ．およびマツイ，Ｍ．，『１６ビット・マイクロコンピュータでのＧＦ（ｐ）上の楕円曲線暗号法の小型および高速ソフトウェアでの実施』ＩＥＥＥ 翻訳．基礎研究所、Ｅ８２‐Ａ，１（１９９９年１月），９８‐１０６）この実施は、前演算処理およびアルゴリズムの速度を上げる投影座標系を使用する。楕円曲線小数点乗算の最も周知の実施は、署名生成における計算機的に費用のかかるステップであり、８０５１プロセッサにおいてほぼ２秒（［２］参照）かかる。また、これは暗号によって安全であるとみなされない１３４ビット鍵を使用する。
【００４１】
この分野の特許は、署名を生成するためにかかる時間を最適化する処理をする。特に、小数点乗算演算（ステップＩＩＩ）は、多くの作業の焦点である。
【００４２】
米国特許第６２５２９５９号は、小数点２倍演算の数を減少する小数点乗算実施の方法を開示する。この方法は、タイミング最適化を達成する。しかしながら、それはより多くのメモリを必要とする。この特許の範囲もまた、小数点乗算演算の最適化に制限される。開示された方法は、より大きい記憶容量を有するシステムを必要とする。
【００４３】
米国特許第６２６３０８１号は、特定の予めの計算過程を使用して、ソフトウェアにおけるステップＩＩＩの小数点乗算を実行する方法を開示する。これが小数点乗算のタイミング上の最適化を作動させるにもかかわらず、メモリ必要条件を増加させる結果を生じる。この特許の範囲もまた、小数点乗算に制限される。開示された方法は、小数点乗算ステップにおける完全なソフトウェアでの実施を提供し、いかなる並列処理も使用しない。
【００４４】
米国特許第６２７９１１１０号は、修正されたＥＣＤＳＡアルゴリズムを開示する。ここで、ステップＩＶ上の逆演算は、他の乱数『ｔ』を生成することによって置き換えられ、署名として３つ（ｓ’，ｒ，ｃ）を受け入れる。ここで、『ｒ』は、前に定義され；ｃ＝ｋ＊ｔ ｍｏｄ ｎおよびｓ´＝ｔ＊（ｅ＋ｄ＊ｒ）ｍｏｄ ｎである。元々の（ｒ，ｓ）の対は、そのｓ＝ｃ‐１ｓ’ｍｏｄ ｎを保つことによって回収される。これは、逆もまた費用のかかるとみなされるスマートカードのような制約のある装置上の署名を生成する最適化された方法である。『ｓ』値は、スマートカードリーダーまたは認証器に連結されるターミナルによって回収される。しかしながら、数値が認証器によって回収される場合、より長い署名は伝達され、より多くのバンド幅を消費する。開示されたシステムは、より多くの通信バンド幅を消費する。
【００４５】
米国特許第６６７１７０９号は、公開鍵暗号方式に使用されるハードウェア乗算構成を開示する。乗数セルは、係数の多項式ベースの乗算のために使われる。この特許の範囲もまた、乗算器モジュール、すなわちステップＩＩＩの最適化だけに制限される。発明は、いかなる並列処理も使用しない。
【００４６】
米国特許第６７０４８７０号は、費用のかかる小数点乗算ステップを回避するために『ｋ』および『ｋＧ』の予め格納された数値の使用を開示する。新規な署名の対（ｋ，ｋＧ）は、予め格納された要素の対を結合することによって作成される。結合は、署名要素の識別が明らかにされないようにスマートカード上で部分的に、および、処理装置上で部分的に実行される。しかしながら、この手順は、処理装置上の必要なソフトウェアの有効度と同様に重要な計算能力を用いる。他の態様において、署名生成時間は、カードと装置間の通信を含み、このことによりリソースの使用を増加させている。開示された方法も、完全なソフトウェア・アプローチを使用し、このことにより署名生成のための時間を増加させる。
【００４７】
米国特許第６７１４６４８号は、ハードウェアにおいて実行される剰余乗算を使用して素体上の１６０のビット曲線でのＥＣＤＳＡのハードウェアおよびソフトウェアでの実施を開示する。ハードウェアの実施は、メモリ・マップされた入出力を有する。それは、小数点乗算アルゴリズムの速度を上げるために前演算処理を使用する。さらに、逆演算は剰余乗算を使用して実行される。残りの演算は、ソフトウェアで実行される。開示された方法は、いかなる並列処理も使用しない。
【００４８】
米国特許第６７３８４７８号は、署名生成においてモンゴメリー法を使用した小数点乗算の実施を開示する。それは、関数の『倍加算』法が電力分析攻撃に影響されやすいという事実を強調する。『倍加算』は、独特な電力プロファイルを生成する乗算演算を含み、これらのプロファイルの観察は、１および０代の数列をもたらし、それで、スカラー値ｋを導く。開示されたシステムは並列処理を利用せず、それで小数点乗算演算のためより多くの時間がかかる。
【００４９】
米国特許第６７５１３１８号は、ＥＣＤＳＡと異なる署名アルゴリズムを開示する。この方式は、署名を確認するために比較される素体上の楕円曲線上の２つの点を生成する。またこの方式は、元の２点のｘ‐座標だけを使用した２点の合計の『ｘ』座標の数値を導き出す方法を提供する。投影座標の再ソートは、楕円加算および２倍演算を最適化し、フィールド反転を除去する。全体のアルゴリズムは、ソフトウェアで実行される。作業は、署名を生成するよりむしろ確認するための効率的な方法を示す方式であって、その実行にはハードウェア構成を有さない。完全なソフトウェアでの実施はこのシステムを遅くする。
【００５０】
米国特許第６７７２１８４号は、効率的なフィールド反転作業のための方法を開示する。１６０ビットの曲線、素体を通じて定義される。この作業は、小数点乗算よりもフィールド反転作業の最適化に重点がある。小数点乗算のための最適化の範囲は、それゆえに、制限される。
【００５１】
米国特許第６７８２１００号は、楕円カーブ上におけるステップＩＩＩ、小数点乗算のハードウェアでの実施に関連がある作業を開示する。これは、署名生成アルゴリズムの処理能力においてインパクトを有する。しかしながら、アルゴリズムの最適化の範囲を強化することにより、より良好な処理能力を得ることができる。
【００５２】
米国特許出願番号第２００１００４８７２号は、楕円曲線上の異なる位置ＰのためのｄＰを形成する作業の間、秘密鍵『ｄ』を取り戻すために差動電力分析に基づいた攻撃を開示する。この攻撃に対する対策もまた提案され、そこにおいて、数値ｄＰは、『ｄ』と同じ大きさの乱数の使用により間接的に計算される。開示された装置は、ステップの連続処理を含み、したがってより多くの時間を消費する。
【００５３】
米国特許出願番号第２００３０１５２２１８８号は、Ｐｉ＝ｋｉＧである対（ｋｉ，Ｐｉ）の予め選択された集合のいくつかを格納することによる小数点乗算ステップの最適化を開示する。これらの予め選択された対は、それからコブリッツ曲線上のフロベニウス演算子の使用を通じて新規なランダムである対（ｋ，ｋＧ）を生成するために用いられる。最適化は、小数点乗算を実行するための楕円演算の数の減少である。開示されたシステム及び方法は、並列処理を利用しない。
【００５４】
米国特許出願番号第２００３０１９４０８６号は、電力分析に対してＥＣＤＳＡを強化する方法を開示する。この方法は、署名生成の間、乱数を用いてノイズを導入する。具体的には、秘密鍵ｄは、それらがｄに合計されるように各々の繰り返しの間、更新される２つの部分に分割される。これらの部分は、署名の計算過程においてｄの代わりに使われる。小数点乗算（ステップＩＩＩ）は、また、メッセージあたりの秘密ｋの漏出を妨げるためにランダム化される。しかしながら、開示された方法は、ゲート・カウントを減少させない。
【００５５】
米国特許出願番号第２００４０００１５９０号は、小数点乗算計算過程における倍加算法の実施を開示する。それは、小数点乗算演算の一部である二乗および小数点加算のフィールド乗算のいくつかの最適化を指摘する。この特許の範囲は、小数点乗算演算を最適化することに制限される。
【００５６】
米国特許出願番号第２００４００９１１０５号は、超楕円曲線暗号の処理装置を開示する。全体の暗号のアルゴリズムは、より高い領域／ハードウェア必要条件を示唆するハードウェアにおいて実行される。ハードウェアにおける並列処理は、ステップＩＶの反転演算とステップＩＩＩの小数点乗算との間の実施において使用される。開示されるような完全なハードウェアでの実施は、システムをきわめて複雑にする。
【００５７】
ＥＣＤＳＡの実施の従来のアプローチは、そのように完全なハードウェアまたは完全なソフトウェア・アプローチに依存する。完全なハードウェア実施に基づくアプローチは、利用されるゲートの数を増加させ、したがってハードウェアのコストを増加させる。完全なソフトウェア実施に基づくアプローチは、署名生成のために必要とされる時間を増加させる。また、多くの過去の実施は、その速度を上げるためにアルゴリズムの並列処理を利用しない。
【発明の開示】
【発明が解決しようとする課題】
【００５８】
本発明は、従来技術の制限の克服に努める。
【００５９】
本発明の目的は、デジタル署名の安全かつ効果的な生成のためのシステムを提供することにある。
【００６０】
本発明の別の目的は、ゲート・カウントと同様にタイミングの両方を最適化するシステムを提供することにある。
【００６１】
本発明の別の目的は、典型的に単純な電力分析攻撃である電力分析攻撃に対する基本セキュリティを提供することにある。
【課題を解決するための手段】
【００６２】
本発明によれば、０＜ｄ＜ｎであるようにランダムに選ばれた秘密鍵『ｄ』を用いてデータに署名するための楕円曲線デジタル署名暗号プロセスを実行する認証システムが提供される。ここで、ｎは大きい素数である。このプロセスは、以下のステップからなる；
ステップＡ:署名されるデータ上でのハッシュ演算の実行；
ステップＢ:０＜ｋ＜ｎである乱数『ｋ』の生成；
ステップＣ:『ｋ』、および、ｙ２＋ｘｚ＝ｘ３＋ａｘ２＋ｂタイプの関数を満たす楕円曲線に選ばれる基点Ｇ（ｘ，ｙ）を用いた小数点乗算ステップの実行。ここで、ａおよびｂは、中間の結果を得るために下位のいくつかのステップを任意に使用し、同じ曲線上のまとめられた位置Ｍ（ｘ１，y１）を得るために前記中間の結果をまとめ、および座標『ｘ１』上の剰余演算を実行することによって数『ｒ』を計算する基礎バイナリ・フィールドの要素である；
ステップＤ:剰余演算に続くステップＢから得られる乱数『ｋ』上で逆数演算を実行することによる数『ｚ１』の計算；
ステップＥ:『ｄ』上の乗算演算を実行することによる数『ｚ２』、および、剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＦ:ステップＡから得られるハッシュ変換されたデータ上で乗算演算を実行することにより数『ｚ３』、および剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＧ:数『ｚ２』上で乗算演算を最初に実行することによる数『ｓ』、それぞれステップＥおよびステップＣから得られるｒの計算、および、剰余演算に続くステップＦから得られる『ｚ３』の積での付加的な演算の実行；
ステップＨ:署名（ｒ，ｓ）の発信；
第１、第２および第３の処理手段間で分割されるように構成される前記システムは、少なくとも前記プロセスのいくつかのステップの部分を並行して実行する。
【００６３】
概して、前記プロセスのステップＡはシステムの外側で実行され、ハッシュ変換されたデータはシステムに提供される。
【００６４】
概して、前記第１の処理手段は、前記プロセスの少なくともステップＢを処理するように構成される。
【００６５】
概して、前記第２の処理手段は、論理演算装置を有し、少なくともステップＣの一部を処理するように構成される。
【００６６】
概して、前記第３の処理手段は、前記プロセスの少なくともステップＤ、Ｅ、Ｆ、ＧおよびＨおよび任意にステップＣの一部を処理するように構成される。
【００６７】
概して、前記第１の処理手段は、次のステップを実行するために構成される:
（ｉ）乱数の生成；および
（ｉｉ）生成された乱数の第２および第３の処理手段への発信。
【００６８】
概して、前記第２の処理手段は、次のステップを実行するために構成される:
（ｉ）前記第１の処理手段からの乱数の受信；
（ｉｉ）論理演算装置を作動させるためのコマンドの受信；
（ｉｉｉ）前記プロセスの小数点乗算ステップＣの少なくとも一部の実行；
（ｉｖ）前記プロセスの小数点乗算ステップの実行の状態の掲示；および
（ｖ）第３の処理手段への小数点乗算ステップの中間結果の発信。
【００６９】
概して、前記第３の処理手段は次のステップを実行するために構成される:
（ｉ）ハッシュ変換されたデータの受信；
（ｉｉ）前記第１の処理手段からの乱数の受信；
（ｉｉｉ）前記プロセスのステップＤ、ＥおよびＦの実行；
（ｉｖ）前記プロセスのステップＣの一部の任意の実行；
（ｖ）前記第２の処理手段からの小数点乗算の中間結果の受信、および、ステップＣの結果のまとめ;
（ｖｉ）前記プロセスのステップＧおよびＨの実行；
（ｖｉｉ）ステップＨの前記署名の出力。
【００７０】
概して、前記第１の処理手段は以下からなる:
（ｉ）乱数を生成するための乱数発生手段；および
（ｉｉ）生成された乱数を第２のおよび第３の処理手段に送る発信手段。
【００７１】
概して、前記第２の処理手段は以下からなる:
（ｉ）乱数発生手段によって生成された乱数を受信するための受信手段；
（ｉｉ）前記プロセスの小数点乗算ステップの少なくとも一部を実行するための論理演算装置；
（ｉｉｉ）論理演算装置を指示し、作動させるための制御レジスタ手段；
（ｉｖ）前記プロセスの小数点乗算ステップの実行の状態を掲示するための状態レジスタ手段；
（ｖ）小数点乗算ステップの中間結果を第３の処理手段に発信するための発信手段。
【００７２】
概して、前記３の処理手段は以下からなる:
（ｉ）前記第２の処理手段からハッシュ変換されたデータおよび小数点乗算の中間結果を受信するための受信手段；
（ｉｉ）前記プロセスのステップＤ、ＥおよびＦを実行するための計算手段；
（ｉｉｉ）任意に前記プロセスのステップＣの一部を実行して、ステップＣの最終結果をまとめるための計算手段；
（ｉｖ）前記プロセスステップＧおよびＨを実行するための計算手段；
および（ｖ）ステップＨの前記署名を発送するための出力手段。
【００７３】
概して、前記第１の処理手段は、少なくともマイクロプロセッサまたはカスタマイズされたハードウェア論理で構成されたグループから選択されたものである。
【００７４】
概して、前記第２の処理手段はハードウェア・アクセラレータである。
【００７５】
概して前記第３の処理手段はマイクロプロセッサである。
【００７６】
概して、前記第１および第２の処理手段は、メモリ・マップされた形式で第３の処理手段と通信するように構成される。
【００７７】
概して、ハードウェア・アクセラレータは、少なくともプログラム可能なハードウェア・アクセラレータ、プログラム可能でないハードウェア・アクセラレータ、ハードウェア・アクセラレータカードまたはハードウェア・アクセラレータボードで構成されたハードウェア・アクセラレータのグループから選択されたものである。
【００７８】
概して、前記第２の処理手段および前記第３の一処理手段は、並行してステップＤ、Ｅ、Ｆ、および、ステップＣの残りの部分をそれぞれ実行するように構成される。
【００７９】
概して、前記第２の処理手段は、ステップＣのその部分を実行する際、電力は、ステップＤ、Ｅ、Ｆ、および、ステップＣの残りの部分をそれぞれ実行する第３の処理手段によって消費される電力によって隠されるよう、電力を消費するように構成される。
【００８０】
本発明の別の態様によれば、データに署名する方法が提供される。その方法は、０＜ｄ＜ｎであるようにランダムに選ばれた秘密鍵『ｄ』を用いた楕円曲線デジタル署名暗号プロセスを用いる。ここで、ｎは大きい素数である。このプロセスは、以下のステップからなる；
ステップＡ:署名されるデータ上でのハッシュ演算の実行；
ステップＢ:０＜ｋ＜ｎである乱数『ｋ』の生成；
ステップＣ:ステップＢから生成された乱数およびｙ２＋ｘｚ＝ｘ３＋ａｘ２＋ｂタイプの関数を満たす楕円曲線に選ばれる基点Ｇ（ｘ，ｙ）での小数点乗算ステップの実行。ここで、ＡおよびＢは、中間の結果を得るために下位のいくつかのステップを任意に使用し、同じ曲線上のまとめられた位置Ｍ（ｘ１，y１）を得るために前記中間の結果をまとめ、および座標『ｘ１』上の剰余演算を実行することによって数『ｒ』を計算する基礎バイナリ・フィールドの要素である；
ステップＤ:剰余演算に続くステップＢから得られる乱数『ｋ』上で逆数演算を実行することによる数『ｚ１』の計算；
ステップＥ:『ｄ』上の乗算演算を実行することによる数『ｚ２』、および、剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＦ:ステップＡから得られるハッシュ変換されたデータ上で乗算演算を実行することにより数『ｚ３』、および剰余演算に続くステップＤから得られる数『ｚ１』の計算；
ステップＧ:数『ｚ２』上で乗算演算を最初に実行することによる数『ｓ』、それぞれステップＥおよびステップＣから得られるｒの計算、および、剰余演算に続くステップＦから得られる『ｚ３』の積での付加的な演算の実行；
ステップＨ:署名（ｒ，ｓ）の発信；
前記方法は、以下からなる:
（ｉ）前記第１の処理手段のステップＢの実行；
（ｉｉ）少なくとも前記第２の処理手段の前記プロセスのステップＣの一部の実行；
および（ｉｉｉ）少なくとも前記第３の処理手段の前記プロセスのステップＤ、Ｅ、Ｆ、ＧおよびＨ、任意にステップＣの一部の実行。
【００８１】
概して、第２の処理手段で実行されるステップＣの一部、ステップＤ、Ｅ、Ｆ、および第３の処理手段で実行されるステップＣの残りの一部は、並列に実行される。
【００８２】
概して、ステップＣのその一部を実行する第２の処理手段によって消費される電力は、ステップＤ、Ｅ、ＦおよびステップＣの残りの一部を実行するために第３の処理手段により消費される電力によって隠される。
【００８３】
概して、ハードウェアにおける小数点乗算ステップ、ステップＣの一部は、少なくとも部分展開を用いたフィールド乗算を含む。
【００８４】
概して、部分展開は、小数点乗算ステップの実施における並列処理を増加させるために使われる。そして、それで性能向上を得る。
【００８５】
概して、チップ上のシステム内で方法を一体化し、前記システムをスマートカードに埋め込むことによってスマートカードで実行される。
【００８６】
概して、システムバスのスロットを占有しているアドオン・カードにより前記方法を組み込むことによってサーバにおいて実行される。
【００８７】
認証システムのデジタル署名生成の一つの実用的な実施例によると、本発明は、楕円曲線暗号法に関係しているステップの実施のため、マイクロプロセッサおよびハードウェア・アクセラレータの使用を想定する。
【００８８】
本発明の好適な実施例は、ハードウェア部品およびソフトウェア部品の組合せの使用である。小数点乗算ステップはハードウェアで実行され、一方で、乗算、反転および係数の減少のような大きい数の算術はソフトウェアで実行される。大部分のソフトウェア演算をハードウェアと並列して実行することによって、完全なハードウェアでの実施に近い同等の性能が達成される。並列処理は、署名を計算する時に向かって２から１まで計数される大きい整数の乗算および減少の効果的減少を可能にする。それで、ハードウェアでの実行を越えたソフトウェアでの実行の時間は減少する。これは、総性能が完全なハードウェア実施の性能により近くなることを可能にするが、ハードウェア必要条件それ自体を減少させる。ハイエンドのマイクロプロセッサが第３の処理手段に使われる場合、マイクロプロセッサ上で小数点乗算ステップの一部を実行するのは可能である。ここで、全体の性能は、完全なハードウェアでの実施により近くなる。ソフトウェアのいくつかの構成部品での実施は、ゲート・カウントの減少を可能にする。
【００８９】
ハードウェア構成部品の一つの好適な実施例は、楕円曲線デジタル署名暗号プロセスの実施に関する小数点乗算ステップの一部の計算を助けるハードウェア・アクセラレータの使用である。楕円曲線デジタル署名暗号プロセスの残りのステップは、マイクロプロセッサにおいて同時に実行される。
【００９０】
本発明の他の好適な実施例では、第２の処理手段によって消費される電力は、楕円曲線暗号プロセスの残りのステップを実行する際第３の処理手段によって消費される電力によって遮蔽される。それで、小数点乗算ステップに関連する電力の遮蔽は、単純な電力分析攻撃からシステムを守るのを助ける。
【発明を実施するための最良の形態】
【００９１】
発明は、好適な実施例に関して詳述する。この実施例に対する参照は、発明の範囲を制限しない。
【００９２】
発明は、添付の図面の図１から３までに関して説明される。
【００９３】
図１は、楕円曲線デジタル署名暗号プロセスの実施のために使用されるシステムの概要を図示する。認証プロセスの実施のため、第２の手段（１２）と通信する第１の処理手段（１０）および第３の処理手段（１４）が使用される。第１の処理手段（１０）（＊訳注１）は、少なくともマイクロプロセッサまたはカスタマイズされたハードウェア論理から構成されたグループから選択されたものである。第２の処理手段（１２）はハードウェア・アクセラレータである。第３の処理手段（１４）はマイクロプロセッサである。
【００９４】
第１の処理手段は、以下からなる:
ａ） 乱数を生成するための乱数発生手段（１６）；および
ｂ）第３および第２の処理手段に生成された乱数を発信するための発信手段（１８）。
【００９５】
第２の処理手段（１２）は、以下からなる:
ａ） 前記第１の処理手段から、乱数を受け取るための受信手段（２０）；
ｂ） 論理演算装置を指示し、作動させるための制御レジスタ手段（２２）；
ｃ） 少なくとも前記プロセスのステップＣの一部、添付の図面の図２に示されるステップＣ１を実行するための論理演算装置（２４）；
ｄ） 前記プロセスの小数点乗算ステップの実行の状態を掲示するための状態レジスタ手段（２６）；
ｅ） 小数点乗算ステップの中間結果を前記第３の処理手段に送るための発信手段（２８）。
【００９６】
第３の処理手段（１４）は、以下からなる:
ａ）ハッシュ変換データ、前記第２の処理手段からの小数点乗算ステップの中間結果、および、前記第１の処理手段からの乱数を受信する受信手段（３０）；
ｂ）前記プロセスのステップＤ、Ｅ、およびＦを実行するための計算手段（３２）；
ｃ）添付の図面のうちの図２に示すように前記プロセスのステップＣ２を任意に実行し、添付の図面の図２に示すようにステップＣ３におけるステップＣ１およびＣ２をまとめるための計算手段（３４）；
ｄ）前記プロセスのステップＧおよびＨを実行するための計算手段（３６）；および
ｅ）ステップＨの前記署名を送るための出力手段（３８）。
【００９７】
図２は、各々のブロックが以下のように指定された機能を表す本発明による楕円曲線デジタル署名暗号プロセスを実行する一方で、続くステップを示すブロック図を図示する:
【００９８】
ブロックＡは、外側で実行され、システムにインプットとして提供されるデータ上でのハッシュ関数を実行するステップを表す。
【００９９】
ブロックＢは、前記第１の処理手段で実行される乱数『ｋ』を生成するステップを表す。
【０１００】
ブロックＣ１、Ｃ２およびＣ３は、ステップＢから生成される乱数、および、ｙ２＋ｘｚ＝ｘ３＋ａｘ２＋ｂタイプの関数を満たす楕円曲線に選ばれる基点Ｇ（ｘ，ｙ）での小数点乗算ステップ（ステップＣ）を表す。ここで、ＡおよびＢは、中間結果を得るために分割を使用し、同じ曲線上のまとめられた位置Ｍ（ｘ１，y１）を得るために前記中間結果をまとめ、および座標『ｘ１』上の剰余演算を実行することによって数『ｒ』を計算する基礎バイナリ・フィールドの要素である。ブロックＣ２は、空値のブロックであってもよい。ブロックＣ３は、ブロックＣ２が空値でない場合、前記計算結果のまとめを表す。この計算過程の分割は、このセクションで後述される。
【０１０１】
ブロックＤは、第３の処理手段において実行される剰余演算に続くブロックＢにおいて表されるステップから得られる数『ｋ』上で逆数演算を実行することによって数『ｚ１』を計算するステップを表す。
【０１０２】
ブロックＥは、ブロックＤにおいて表されるステップから得られる数『ｚ１』上で乗算演算を実行することによって数『ｚ２』、および、第３の処理手段において実行される剰余演算に続く秘密鍵として定義される数『ｄ』を計算するステップを表す。
【０１０３】
ブロックＦは、ブロックＤにおいて表されるステップから得られる数『ｚ１』上で乗算演算を実行することによって数『ｚ３』、および、第３の処理手段において実行される剰余演算に続くブロックＡにおいて表されるステップから得られるハッシュ変換されたデータを計算するステップを表す。
【０１０４】
ブロックＧは、ブロックＥにおいて表されるステップおよびブロック｛Ｃ１、Ｃ２、Ｃ３｝においてそれぞれ表されるステップから得られる数『ｚ２』およびｒ上でまず乗算演算を実行し、そして、剰余演算に続くブロックＦにおいて表されるステップから得られる『ｚ３』の積に加法演算を実行することにより、数『ｓ』を計算するステップを表す。
【０１０５】
ブロックＨは、署名（ｒ，ｓ）を出力するステップを表す;
【０１０６】
ステップＣは分割されることができる。このため、ステップＢにおいて生成される乱数ｋは、ｋ＝ｋ１＋２ｕ＊ｋ２として書き直される
ここで、ｋ１はｋのｕ最小桁ビットによって与えられる（ｕビット）数であり、一方で、ｋ２は、ｋのビットの残りによって表される数である。そして、ステップＣにおける小数点乗算ステップは、ｋ．Ｐ＝ｋ１．Ｐ＋ｋ２．（２ｕ．Ｐ）．として書き直されることができる。
仮に、Ｑ＝（２ｕ．Ｐ）を２ｕによるＰの小数点乗算の実行により形成される点とする。すると、ｋ．Ｐ＝ｋ１．Ｐ＋ｋ２．Ｑになる。
ステップＣは、第３の処理手段においてｋ２．Ｑ、および第２の処理手段においてｋ１．Ｐを算出し、ｋ．Ｐ．を得るため、第３の処理手段の２つの位置を最後に加算することによって並列処理される。それで、ステップＣは、サブ・ステップＣ１、Ｃ２およびＣ３から構成される。ここで、
ステップＣ１:数値Ｐ１＝ｋ１．Ｐの計算。
ステップＣ２:数値Ｐ２＝ｋ２．Ｑの計算。
ステップＣ３:ｋ．Ｐ＝Ｐ１＋Ｐ２の計算。
ステップＣ２が空値であってもよいことに留意する必要がある。これは、ｋ２＝０であり、小数点乗算は第２の処理手段で完全に実行されるケースに対応する。この場合、ステップＣ３もまた空値である。
【０１０７】
ステップＣ１は、ブロックＣ１において実行される。これは、第２の処理手段で実行され；ステップＣ２およびＣ３は、それぞれブロックＣ２およびＣ３において実行される。これらは、第３の処理手段において実行される。ブロックＣ１およびブロック｛Ｄ、Ｅ、Ｆ、Ｃ２｝において表されるステップは並行して実行される。そして、署名生成のプロセスのために必要とされるコストと同様に全体の時間を減少する。ブロックＣ１によって表されるステップを実行する際に消費される電力はブロック｛Ｄ、Ｅ、Ｆ、Ｃ２｝によって表されるステップを実行する際に消費される電力によって隠される。そして、このことにより、単純な電力分析攻撃を難しくさせる。
【０１０８】
図３は、小数点乗算ステップの実施のために使用される完全な展開プロセスに関するステップを示すブロック図を図示する。フィールド乗算は、図２に示されるようにブロックＣ１によって表されるステップの実施において最も頻繁に使われる演算である。それは、このステップのタイミングに最も関与する。この演算は、次のように計算される。
記号Ａ（ａ０，ａ１・・・ａｍ‐１）∈Ｆ２ｍは、Ａが通常のベース下の表示（ａ０，ａ１・・・ａｍ‐１）を有するフィールド要素であることを示す。各々のａｉは、０または１である。
Ａ（ａ０，ａ１・・・ａｍ‐１）およびＢ（ｂ０，ｂ１・・・ｂｍ‐１）∈Ｆ２ｍとする。
すると、Ａ＊Ｂ＝Ｃ（ｃ０，ｃ１・・・ｃｍ‐１）ここで、各々のｃｉは、次のように計算される。
ステップ１:Ｕ（ｕ０，ｕ１・・・ｕｍ‐１）＝Ａ（ａ０，ａ１・・・ａｍ‐１）
ステップ２:Ｖ（ｖ０，ｖ１・・・ｖｍ‐１）＝Ｂ（ｂ０，ｂ１・・・ｂｍ‐１）
ステップ３:ｋ＝０〜ｍ−１に関して、以下のサブ・ステップの実行
ステップ３．１:ｃｋ＝Ｆ（Ｕ，Ｖ）
ステップ３．２:Ｕ＝  ＬＣＳ（Ｕ）およびＶ＝ＬＣＳ（Ｖ）。ここでＬＣＳは、『左循環シフト』演算である。
ステップ４:Ｃ＝（ｃ０，ｃ１・・・ｃｍ‐１）に戻る。
ここで、
ｐ‐２
Ｆ（Ｕ，Ｖ）＝    （＋）      ＵＪ（ｋ＋１）ＶＪ（ｐ−ｋ）
ｋ＝１
ＵＪ（ｋ＋１）は、ＵのＪ（ｋ＋１）番目のビットであり、
ＶＪ（ｐ‐ｋ）は、ＶのＪ（ｐ‐ｋ）番目のＶのビットであり、そして（＋）は、ＸＯＲ演算（排他的論理和演算）である。
ｐは、公式ｐ＝ｍＴ＋１によって計算され、ここで、Ｔは、Ｆ２ｍのためのガウス型基底の最小のタイプであり、ｍはバイナリ・フィールドの次数である。ｍ＝１６３であると、Ｔは４である。それゆえに、ｐ＝６５３である。Ｊは、静的であり、前計算されることができるサイズ（ｐ‐１）の整列である。
【０１０９】
Ｆ（Ｕ，Ｖ）の計算過程は、小数点乗算演算の最深部のループである。それで、これは演算のタイミングに最も関与する。処理能力は、Ｆ（Ｕ，Ｖ）ループを完全に広げることによって改良されることができる。一連の６５３ＡＮＤゲートは、ルックアップテーブルJにつきインプットとして物理的に組み込まれたUおよびVビットで設計されることができる。結果は、２つの入力ＸＯＲゲート有効度だけを用いて多数の段階を通じてＸＯＲ処理されることができる。計算過程Ｆ（Ｕ，Ｖ）の観察は、Ｕの各々のビットがＶの４つの特定のビットでＡＮＤ処理されることを明らかにする。
【０１１０】
しかしながら、完全な展開を実行するゲートの数は最高値である。さらに、そのゲート遅延は、クロックサイクルの範囲内で完成され、タイミング妨害に導く論理レベルの数を制限する。それゆえに、完全な展開の代わりに、部分的な展開が実行される。
【０１１１】
具体例として、バイナリ・フィールド上の１６３ビットの楕円曲線でのＥＣＤＳＡの実施は、１０ＭＨｚで動作する８０５１のマイクロプロセッサを用いて実行された。１０ＭＨｚにおいて実行されるザイリンクスのＦＰＧＡでハードウェア論理は、実施された。８０５１のマイクロプロセッサは十分に強力でないので、ステップＣは、第２の処理手段と第３の処理手段との間で分割されない。結果は、以下の表にされた。表は、本発明による楕円曲線デジタル署名暗号プロセスの様々な構成部品のためにかかった時間およびゲート・カウントを表す。
〔表１〕
2006340347.tif 000003
【０１１２】
署名生成にかかる合計時間は、２８３ミリ秒である。
【０１１３】
楕円曲線デジタル署名暗号プロセスの実施の代表的な他の具体例は、ＡＲＭ７ＴＤＭＩマイクロプロセッサを使用して検査された。この実施のため、２つの独立したプラットフォーム‐第２の処理手段のためのＦＰＧＡプラットフォーム、および、第３の処理手段のためのＡＲＭシミュレータが使用された。ＡＲＭ７ＴＤＭＩが強力なプロセッサであるので、ステップＣは、第２および第３の処理手段の間で分割される。第２の処理手段および第３の処理手段は、小数点乗算のための倍加算アルゴリズムを使用する。第２の処理および第３の処理手段は、１０ＭＨｚクロックで動作する。この実施において使用される分割は、第２の処理手段のための１２３ビットであり、第３の処理手段のために４０ビットである。これは、第２の処理手段で実行される小数点乗算は、第３の処理手段での前記小数点乗算を実行するよりほぼ３倍速いことに注目することにより到達される。結果は、以下の表にされた。表は、本発明による楕円曲線デジタル署名暗号プロセスの様々な構成部品のためにかかった時間およびゲート・カウントを表す。
〔表２〕
2006340347.tif 000004
【０１１４】
それで、このアプローチにおける署名生成の時間は１８１．８ミリ秒である。
【０１１５】
本発明において、システムはＥＣＤＳＡの効果的な実施のために開示される。システムは、完全なハードウェアまたは完全なソフトウェアでの実施よりも、むしろハードウェア／ソフトウェア分割アプローチを使用する。この実施において、このシステムは、単純な電力分析を用いたハッカーによるシステムの攻撃を難しくする。
【０１１６】
本願明細書において好適なシステムの様々な構成部品が相当強調された一方、多くの変更が作成されることができることはいうまでもなく、その多くの修正は、発明の原則から逸脱することなく好適なシステムにおいて作成されることができる。本願明細書において開示される好適なシステムのこれらおよび他の変化は、発明の他のシステムと同様に当業者にとって明らかであり、それによって、前述の記述的な事柄は単に発明を図示し、制限する意図を有さないと解釈されることが明確に理解される。
【図面の簡単な説明】
【０１１７】
【図１】楕円曲線デジタル署名暗号プロセスの実施のために使用されるシステムの概要を図示する。
【図２】楕円曲線デジタル署名暗号プロセスを実行する一方で、続くステップを示すブロック図を図示する。
【図３】小数点乗算ステップの実施のために使用される完全な展開プロセスに関するステップを示すブロック図を図示する。
【図１】
2006340347.tif 000005
【図２】
2006340347.tif 000006
【図３】
2006340347.tif 000007