(57)【要約】本発明は、確率的デジタル署名の生成および／または鍵交換プロトコルおよび／または暗号化アルゴリズムの暗号化方法に関する。この方法は、点Ｐ（ｘ，ｙ）が選択される非正規２進楕円曲線（Ｅ）（コブリッツ曲線）上での公開鍵アルゴリズムの使用に基づき、ペア（ｋｉ，Ｐｉ）が、ｋｉによる上記点Ｐのスカラ乗算に対応する点Ｐｉと一緒に記憶される。上記方法は、ランダム変数（ｋ）を生成するステップと、ｋによるＰのスカラ乗算（Ｃ＝ｋ・Ｐ）に対応する点Ｃを計算するステップとを含む。本発明は、上記ランダム変数（ｋ）の生成と、上記点Ｃの計算が同時に行われることを特徴とする。【特許請求の範囲】
【請求項１】
確率的デジタル署名の生成および／または鍵交換プロトコルおよび／または暗号化アルゴリズムのための暗号化方法であって、前記方法が、１つの点Ｐ（ｘ， ｙ）が選択される不正規２進楕円曲線（Ｅ）（コブリッツ曲線）上での公開鍵アルゴリズムの使用に基づき、ペア（ｋｉ， Ｐｉ）が、ｋｉによる前記点Ｐのスカラ乗算に対応する点Ｐｉと一緒に記憶され、前記方法が、ランダム変数ｋを生成するステップと、ｋによるＰのスカラ乗算（Ｃ＝ｋ・Ｐ）に対応する点Ｃを計算するステップとを含み、前記ランダム変数ｋの生成と、前記点Ｃの計算が同時に行われることを特徴とする方法。
【請求項２】
請求項１記載の方法において、確率的デジタル署名を生成する前記暗号化アルゴリズムが、ＥＣＤＳＡ（英語のＥｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｄｉｇｉｔａｌ Ｓｔａｎｄａｒｄ Ａｌｇｏｒｉｔｈｍの略語、楕円曲線デジタル標準アルゴリズム）であることを特徴とする方法。
【請求項３】
請求項１記載の方法において、前記鍵交換プロトコル暗号化アルゴリズムが、ＥＣＤＨ（英語のＥｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎｎの略語、楕円曲線ディフィーヘルマン）であることを特徴とする方法。
【請求項４】
請求項１乃至３の何れかに記載の方法において、前記方法が、いわゆるフロベニウス・オペレータτ［Ｐ（ｘ， ｙ）］＝（ｘ２， ｙ２）を使用可能な数体系ＧＦ（２ｎ）上に定義されるコブリッツ曲線の使用に基づき、前記方法が、下記のステップ、すなわち、
ランダム変数ｋを０に、点Ｃを０に初期化するステップと、
１乃至ｎｉｔｅｒの範囲のｊに対してループを実行するステップとを含み、
前記ループが、
新しいｊの反復の度に下記のランダム変数ａ、ｕ、およびｉを生成するステップと、
ａ、０乃至ｎ、ここで、ｎは、前記曲線（Ｅ）が定義される有限体の大きさ、
ｕ｛−１，１｝、
ｉ、０乃至ｔ、ここで、ｔは記憶しているペア（ｋｉ，Ｐｉ）の数、
点Ｃｊ＝Ｃｊ−１＋ｕ・τａ・Ｐｉを計算するステップと、
ランダム変数ｋｉ＝ｋｊ−１＋ｕ・ｋｉ・τａを生成するステップとを含み、
前記方法が、さらに、
前記ループの終わりでｋを整数に変換するステップと、
前記ランダム変数ｋと点Ｃ＝ｋ・Ｐとを同時に示すステップと、を含むことを特徴とする方法。
【請求項５】
請求項４記載の方法において、前記記憶しているペア（ｋｉ，Ｐｉ）の数（ｔ）が３５乃至４５であることを特徴とする方法。
【請求項６】
請求項４記載の方法において、前記ループの反復回数（ｎｉｔｅｒ）が、１０乃至１２に固定されることを特徴とする方法。
【請求項７】
請求項４記載の方法において、前記コブリッツ曲線（Ｅ）が定義される数体系の大きさｎが１６３に等しいことを特徴とする方法。
【請求項８】
スマート・カード・タイプのセキュリティデバイスであって、前記デバイスが、請求項１乃至７記載の署名方法を実装することができる電子部品を含むことを特徴とするセキュリティデバイス。
【請求項９】
暗号化ソフトウェアを備えたコンピュータ・タイプの計算デバイスであって、前記デバイスが、請求項１乃至７記載の署名方法を実装することができる電子部品を有することを特徴とする計算デバイス。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、楕円曲線暗号化方法に関する。この方法は、公開鍵アルゴリズムの使用に基づくものであり、メッセージの確率的デジタル信号の生成、および／または鍵交換プロトコル、および／またはメッセージ暗号化アルゴリズムに適用することができる。
【０００２】
（背景技術）
デジタル署名を作成し、確認するアルゴリズムは、署名の同一性および署名のあるメッセージの完全性の確認を行うために、署名として知られ、所与のメッセージと関連付けられた、一般にはペアの１つまたはそれ以上の整数計算からなる。上記アルゴリズムが署名の作成の際にランダム変数を使用する場合には、署名は確率的なものといわれるが、このランダム変数は秘密なものであり、新しい署名ごとに再生される。それ故、同じユーザが送信した同じメッセージは、いくつかの異なる署名を持つことができる。
【０００３】
鍵交換プロトコルおよび暗号化アルゴリズムは、また、このアルゴリズムを新しく適用する度に、秘密のランダム変数ｋを使用する。
楕円曲線公開鍵暗号化アルゴリズムは、ますます使用されるようになってきている。このようなアルゴリズムは、下式を満足させる曲線Ｅ上の点Ｐ（ｘ，ｙ）の使用に基づいている。
ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ（ここで、ａおよびｂは有限体の２つの要素である）
【０００４】
曲線Ｅ上の点Ｐ上で加算および減算が行われる。同じ点Ｐをｋ回加算する演算は、ｋによるＰのスカラ乗算と呼ばれ、Ｃ（ｘ’，ｙ’）＝ｋ・Ｐ（ｘ，ｙ）で表される楕円曲線上の点Ｃに対応する。
このようなアルゴリズムの一例は、確率的デジタル署名を作成し、確認するアルゴリズムであるＥＣＤＳＡ（英語のＥｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｄｉｇｉｔａｌ Ｓｔａｎｄａｒｄ Ａｌｇｏｒｉｔｈｍの略語、楕円曲線デジタル標準アルゴリズム）によって示すことができる。
【０００５】
ＥＣＤＳＡのパラメータは下記の通りである。
Ｅ−セットＺＰ上に定義される楕円曲線。曲線Ｅ上の点の数は、通常Ｎ＞２１６０である大きな素数Ｎで割り切れる。
Ｐ（ｘ，ｙ）−楕円曲線Ｅ上の所与の点。
秘密鍵ｄは、０乃至Ｎ−１の任意の定数であり、公開鍵Ｑは、スカラ乗算式Ｑ（ｘ１，ｙ１）＝ｄ・Ｐ（ｘ，ｙ）により、ｄと関連する。
ｍを送信するメッセージとしよう。ｍのＥＣＤＳＡ署名は、範囲［１，Ｎ−１］内に含まれた整数（ｒ，ｓ）のペアであり、以下のように定義される。
ｋを範囲［１，Ｎ−１］から選択した乱数としよう。ｋは、署名ごとに再生されるランダム変数である。
スカラ乗算Ｃ（ｘ’，ｙ’）＝ｋ・Ｐ（ｘ，ｙ）により入手した点Ｃの計算。
ｒ＝ｘ’ ｍｏｄ Ｎ
ｓ＝ｋ−１（ｈ（ｍ）＋ｄ・ｒ） ｍｏｄ Ｎ
ここでｈ（ｍ）は、最初のメッセージｍに対する、擬似ランダム暗号関数であるハッシュ関数ｈの適用結果である。
【０００６】
公開パラメータ（Ｅ，Ｐ，Ｎ，Ｑ）を使用して、署名の確認が下記のように行われる。
中間計算が行われる。
ｗ＝ｓ−１ｍｏｄ Ｎ
ｕ１＝ｈ（ｍ）・ｗ ｍｏｄ Ｎ
ｕ２＝ｒ・ｗ ｍｏｄ Ｎ
ｕ１Ｐ＋ｕ２Ｑ＝（ｘ０，ｙ０）に対応する曲線Ｅ上の点を計算することにより加算およびスカラ乗算が行われる。
ｖ＝ｘ０ｍｏｄ Ｎγｒかどうかのチェックが行われる。
上記等式が真である場合には、署名は本物である。
署名（ｒ，ｓ）の生成は、秘密鍵ｄ、および署名毎に異なる秘密の乱数ｋにより行われ、その確認は公開鍵のパラメータにより行われていた。それ故、その秘密鍵を持っていなくても、誰でも、カードおよびその携行者を認証することができる。
【０００７】
楕円曲線上でこのような署名アルゴリズムを実施するためのコストは、点Ｃ＝ｋ・Ｐを定義するためのスカラ乗算演算の複雑さおよび速度に直接関連する。
このスカラ乗算演算を容易かつ速くするために、楕円曲線暗号化方法の改善が行われてきた。より詳細に説明すると、Ｓｐｒｉｎｇｅｒ Ｖｅｒｌａｇ， Ｃｒｙｐｔｏ’９７の会報に掲載された、Ｊ．Ａ．ソリナス（Ｓｏｌｉｎａｓ）の論文「楕円曲線群の算術用アルゴリズムの改善（Ａｎ Ｉｍｐｒｏｖｅｄ Ａｌｇｏｒｉｔｈｍ ｆｏｒ Ａｒｉｔｈｍｅｔｉｃ ｏｎ ａ Ｆａｍｉｌｙ ｏｆ Ｅｌｌｉｐｔｉｃ Ｃｕｒｖｅｓ）」は、１つの考えられる改善を提案している。
【０００８】
楕円曲線Ｅ上のアルゴリズムにおいて、スカラ乗算の計算方法をスピードアップするためには、フロベニウス（Ｆｒｏｂｅｎｉｕｓ）オペレータと呼ばれる特定のオペレータを使用できる非正規２進楕円曲線またはコブリッツ曲線と呼ばれるある特定の楕円曲線群における動作原理が、スカラ乗算演算をもっと高速で行うことができることがわかった。
【０００９】
コブリッツ曲線は、下式により、数体系ＧＦ（２ｎ）上に定義される。
ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋１、ここで、ａ∈｛０，１｝
フロベニウス・オペレータτは、下式により表される。
τ［Ｐ（ｘ，ｙ）］＝（ｘ２，ｙ２）、ここで、τ２＋２＝（−１）１−ａτ
楕円曲線Ｅ上の所与の点Ｐにオペレータτを適用すると、演算を迅速に行うことができる。何故なら、計算が数体系ＧＦ（２ｎ）で行われるからである。ここで、ｎは、例えば、ｎ＝１６３など、有限体の大きさである。
【００１０】
スカラ乗算Ｃ（ｘ１，ｙ１）＝ｋ・Ｐ（ｘ，ｙ）の計算を迅速化するために、加算および減算になるように、整数ｋが分解される。このようにして、整数ｋの隣接していない形が、整数ｋを合計の形で書くことからなるＮＡＦ（英語のＮｏｎ−Ａｄｊａｃｅｎｔ Ｆｏｒｍの略語）により定義される。
【数１】
2004501385.tif 000002
　コブリッツ楕円曲線の場合には、ＮＡＦは、フロベニウス・オペレータ：ｋ＝Σ（ｉ＝０乃至１）ｅｉτｉで表すことができる。
それ故、ｋによるＰのスカラ乗算演算は、点Ｐに対するフロベニウス・オペレータの適用になり、容易で迅速になる。
【００１１】
さらに、スカラ乗算ｋ・Ｐの計算速度は、いくつかのペア（ｋｉ，Ｐｉ＝ｋｉ・Ｐ）を予め計算し、記憶することによりさらに加速することができる。都合のよいことに、これらのペアは、署名アルゴリズムを実行するデバイスのメモリに記憶することができる。実際には、Ｐは署名アルゴリズムの鍵の公開パラメータの一部を形成する。
ランダム変数ｋが１６３ビットである場合には、４２のスカラ乗算のペア（ｋｉ，Ｐｉ）を記憶することにより、予め計算を全然行わなくても、加算／減算の回数を５２ではなく、１９に減らすことができる。
【００１２】
（発明の開示）
本発明の目的は、スカラ乗算の加算の回数をさらに減らすことを可能にする楕円曲線暗号化方法である。
本発明は、特に、確率的デジタル署名を生成するための、および／または鍵交換プロトコルのための、および／または暗号化アルゴリズムのための暗号化方法に関する。上記方法は、点Ｐ（ｘ，ｙ）が選択される、非正規２進楕円曲線（Ｅ）（コブリッツ曲線）上の公開鍵アルゴリズムの使用に基づいている。ペア（ｋｉ，Ｐｉ）は、ｋｉによる点Ｐのスカラ乗算に対応する点Ｐｉと一緒に記憶される。上記方法は、ランダム変数ｋの生成ステップ、ｋによるＰのスカラ乗算（Ｃ＝ｋ・Ｐ）に対応する点Ｃの計算ステップからなり、上記ランダム変数ｋの生成と点Ｃの計算が同時に行われることを特徴とする。
【００１３】
１つのアプリケーションの場合には、確率的デジタル署名を生成するための暗号化アルゴリズムは、ＥＣＤＳＡ（英語のＥｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｄｉｇｉｔａｌ Ｓｔａｎｄａｒｄ Ａｌｇｏｒｉｔｈｍの略字、楕円曲線デジタル標準アルゴリズム）である。
他のアプリケーションの場合には、鍵交換プロトコル暗号化アルゴリズムは、ＥＣＤＨ（英語のＥｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎｎの略字、楕円曲線ディフィーヘルマン）である。
【００１４】
１つの特徴によれば、本発明の方法は、いわゆるフロベニウス・オペレータτ［Ｐ（ｘ，ｙ）］＝（ｘ２，ｙ２）を使用することができる、数体系ＧＦ（２ｎ）上に定義されるコブリッツ曲線の使用に基づいている。上記方法は、下記のステップを含むことを特徴とする。すなわち、
ランダム変数をｋ＝０に、点をＣ＝０に初期化するステップと、
１からｎｉｔｅｒまでの範囲のｊに対するループを実行するステップとを含み、
上記ループは、
新しい反復の度に下記のランダム変数ａ、ｕ、およびｉを生成するステップと、
ａ（０乃至ｎ、ｎは曲線が定義される有限体の大きさ）、
ｕ｛−１，１｝、
ｉ（０乃至ｔ、ｔは記憶しているペア（ｋｉ，Ｐｉ）の数）、
点Ｃｊ＝Ｃｊ−１＋ｕ・τａ・Ｐｉを計算するステップと、
ランダム変数ｋｊ＝ｋｊ−１＋ｕ・ｋｉ・τａを生成するステップとを含み、
上記方法は、さらに、
ループの終わりでｋを整数に変換するステップと、
ランダム変数ｋと点Ｃ＝ｋ・Ｐとを同時に示すステップとを含む。
【００１５】
本発明の１つの特徴について説明すると、記憶しているペア（ｋｉ，Ｐｉ）の数ｔは３５乃至４５である。
本発明の他の特徴について説明すると、ループ（ｎｉｔｅｒ）の反復回数は、１０乃至１２に固定される。
本発明の他の特徴について説明すると、コブリッツ曲線が定義される数体系の大きさｎは１６３に等しい。
本発明は、また、スマート・カード・タイプのセキュリティデバイス、または本発明の署名方法を実装することができる電気部品を有する、暗号化ソフトウェアを備えたコンピュータ・タイプの計算デバイスに関する。
【００１６】
本発明の方法は、Ｐおよびｋのスカラ積の計算にかかる時間を短縮するという利点を持つ。上記計算は、最初に、スカラ積ｋ・Ｐの計算と同時にランダム変数ｋを生成し、次に、ペア（ｋｉ，Ｐｉ＝ｋｉ・Ｐ）を予め計算することにより加算の演算回数を減らす、楕円曲線暗号化方法を使用する際の最も重要なステップである。
ＥＣＤＳＡアルゴリズムに関連する、例示的で非制限的な例による下記の説明を読めば、本発明の特徴および利点をもっとはっきりと理解することができるだろう。本発明の方法は、実際に、例えば、鍵交換プロトコルまたは暗号化アルゴリズムに適用される。
【００１７】
（発明を実施するための最良の形態）
Ｅを数体系ＧＦ（２ｎ）上に定義されるコブリッツ楕円曲線とする。ここで、ｎ＝１６３で、計算が行われる数体系の大きさである。また、Ｐ（ｘ，ｙ）をこの曲線上の所与の点とする。
次に、フロベニウス・オペレータτ［Ｐ（ｘ，ｙ）］＝（ｘ２，ｙ２）が使用可能で、計算が行われている数体系ＧＦ（２ｎ）が分かれば、迅速な演算が行われる。
最初に、ある数のペア（ｋｉ，Ｐｉ＝ｋ・Ｐ）が計算され、（例えば、スマート・カードのマイクロコントローラのような）署名方法を実装する構成要素内に記憶される。ペアの数は、３５乃至４５の間のｔに固定されるが、この数は、占有するメモリ空間と署名生成計算方法のために必要な加速との間の折り合いで決まる。
【００１８】
本発明の方法は、点Ｃ＝ｋ・Ｐの計算と同時に、ランダム変数ｋを生成する、予め計算・記憶されているペア（ｋｉ，Ｐｉ）を使用して、確率的署名を生成するための方法を加速する方法である。
最初に、Ｃおよびｋの値が０に初期化される。
次に、ｊについてのループがｎｉｔｅｒ回反復実施される。この実施の際に下記の演算が行われる。
ｊを新たに反復する度に下記のランダム変数ｒ、ｕ、ｉを生成する。
ｒ、０乃至ｎ、
ｕ｛−１，１｝、
ｉ、０乃至ｔ、
Ｃｊ＝Ｃｊ−１＋ｕ・τｒ・Ｐｉを計算する。
ｋｊ＝ｋｊ−１＋ｕ・ｋｉ・τｒを計算する。
次に、ループの出力のところで、整数に変換されるランダム変数ｋ、およびｋによるＰのスカラ乗算に対応する点Ｃを入手する。
次に、署名（ｒ，ｓ）が、本発明の方法により定義されたｋおよびＣの値を使用して、ＥＣＤＳＡ、またはコブリッツ楕円曲線を使用する他のアルゴリズムを使用する従来の手順により生成される。
【００１９】
点Ｃの計算とｋの生成とを同時に行うことにより、特に、ｋによるＰのスカラ乗算の計算に必要な加算の回数を減らすことにより、署名生成方法が加速される。点Ｃを計算するための加算の回数は、実際には、ｎｉｔｅｒ−１になる。
セキュリティの程度および必要な性能により、ｎｉｔｅｒは１０乃至１２反復の間に固定される。
それ故、１６３ビットの整数をｋとして使用し、約４０のペア（ｋｉ，Ｐｉ）を記憶することにより、加算演算を９乃至１１回行うだけで、スカラ乗算ｋ・Ｐを計算することができる。
【国際公開パンフレット】
2004501385.tif 000003
2004501385.tif 000004
2004501385.tif 000005
2004501385.tif 000006
2004501385.tif 000007
2004501385.tif 000008
2004501385.tif 000009
2004501385.tif 000010
2004501385.tif 000011
2004501385.tif 000012
2004501385.tif 000013
2004501385.tif 000014
【国際調査報告】
2004501385.tif 000015
2004501385.tif 000016