(57)【要約】      （修正有）【課題】公開鍵暗号では、指数計算が楕円曲線上の点Ｐのｎスカラー倍を計算するのによく使用されるが、ｎは非常に大きな整数でもあり、計算の量が多く、コストがかかる。指数計算の計算上のコストを低減する技法として、重み付き射影座標用の楕円曲線点８倍化のためのシステムおよび方法を提供すること。【解決手段】ある態様では、楕円曲線上の重み付き射影点Ｐが特定される。８ＰのＰからの計算は、繰り返し２倍化演算に依存せずに、より少ない体の乗算（楕円曲線点８倍化アルゴリズム）を用いて行われる。【選択図】図１
2006259734.tif 000002
【特許請求の範囲】
【請求項１】
楕円曲線上の重み付き射影点Ｐの特定を、Ｐの座標が（ｘ，ｙ，ｚ）であるとして行うこと、および
Ｐの８Ｐの計算を、繰り返し２倍化演算に依存せずに、８Ｐの座標が（ｒ，ｓ，ｔ）であるとして行うこと
を備えることを特徴とする方法。
【請求項２】
８Ｐの計算は、８Ｐを計算するために２６回の体の乗算となるストレートライン型楕円曲線点８倍化アルゴリズムを用いて８Ｐの計算を行うことをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
記号：＝は定義演算を表し、前記ストレートライン型楕円曲線点８倍化アルゴリズムは、次のもの、すなわち
ｘ２：＝ｘ＾２；
ｙ２：＝ｙ＾２；
ｙ４：＝ｙ２＾２；
ｘｙ２：＝ｘ＊ｙ２；
ｙｚ：＝ｙ＊ｚ；
ｚ２：＝ｚ＾２；
ｚ４：＝ｚ２＾２；
ａｚ４：＝ａ＊ｚ４；
ａｙ４ｚ４：＝ａｚ４＊ｙ４；
Ｔ１：＝３＊ｘ２＋ａｚ４；
Ｔ１２：＝Ｔ１＾２；
Ｔ２：＝１２＊ｘｙ２−Ｔ１２；
Ｔ３：＝Ｔ１２−８＊ｘｙ２；
Ｔ３２：＝Ｔ３＾２；
Ｔ４：＝Ｔ１＊Ｔ２−８＊ｙ４；
Ｔ４２：＝Ｔ４＾２；
Ｔ４４：＝Ｔ４２＾２；
Ｔ５：＝３＊Ｔ３２＋１６＊ａｙ４ｚ４；
Ｔ５２：＝Ｔ５＾２；
Ｔ６：＝Ｔ４４＊２５６＊ａｙ４ｚ４；
Ｔ７：＝Ｔ３＊Ｔ４２；
Ｔ８：＝Ｔ５２−８＊Ｔ７；
Ｔ８２：＝３＊Ｔ８＾２；
Ｔ９：＝Ｔ８２＋Ｔ６；
Ｔ９２：＝（Ｔ９）＾２；
Ｓ１０：＝Ｔ５２−８＊Ｔ７；
Ｓ１１：＝１２＊Ｔ７−Ｔ５２；
Ｓ１２：＝Ｔ５＊Ｓ１１；
Ｓ１３：＝Ｓ１２−８＊Ｔ４４；
Ｓ１３２：＝Ｓ１３＾２；
Ｓ１４：＝Ｓ１０＊Ｓ１３２；
ｒ：＝Ｔ９２−８＊Ｓ１４；
Ｓ１５：＝１２＊Ｓ１４−Ｔ９２；
Ｓ１３４：＝Ｓ１３２＾２；
ｓ：＝Ｔ９＊Ｓ１５−８＊Ｓ１３４；および
ｔ：＝８＊Ｓ１３＊Ｔ４＊ｙｚ
を含むことを特徴とする請求項２に記載の方法。
【請求項４】
８Ｐの計算は、８Ｐの計算を直接型楕円曲線点８倍化アルゴリズムを用いて行うことをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
記号：＝は定義演算を表し、前記直接型楕円曲線点８倍化アルゴリズムは、
【数１】
2006259734.tif 000012
【数２】
2006259734.tif 000013
【数３】
2006259734.tif 000014
を備えることを特徴とする請求項４に記載の方法。
【請求項６】
前記楕円曲線上のそれぞれの点に対する８Ｐの決定を、直接型またはインライン直接型楕円曲線点８倍化アルゴリズムを用いて行うこと、および
元のデータの暗号化または署名を、前記直接型またはインライン直接型楕円曲線点８倍化アルゴリズムの結果に基づいて行うこと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記楕円曲線上のそれぞれの点に対する８Ｐの決定を、直接型またはインライン直接型楕円曲線点８倍化アルゴリズムを用いて行うこと、および
暗号処理されたデータの復号または検証を、前記直接型またはインライン直接型楕円曲線点８倍化アルゴリズムの結果に基づいて行うこと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
楕円曲線上の重み付き射影点Ｐの特定を、Ｐの座標が（ｘ，ｙ，ｚ）であるとして行うこと、および
Ｐの８Ｐの計算を、繰り返し２倍化演算に依存せずに、８Ｐの座標が（ｒ，ｓ，ｔ）であるとして行うこと
のための、プロセッサで実行可能なコンピュータプログラム命令を備えることを特徴とするコンピュータ可読媒体。
【請求項９】
８Ｐの計算を行う前記コンピュータプログラム命令は、８Ｐを計算するために２６回の体の乗算となるストレートライン型楕円曲線点８倍化アルゴリズムを用いて８Ｐの計算を行う命令をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
記号：＝は定義演算を表し、前記ストレートライン型楕円曲線点８倍化アルゴリズムは、ｒ、ｓおよびｔを
ｘ２：＝ｘ＾２；
ｙ２：＝ｙ＾２；
ｙ４：＝ｙ２＾２；
ｘｙ２：＝ｘ＊ｙ２；
ｙｚ：＝ｙ＊ｚ；
ｚ２：＝ｚ＾２；
ｚ４：＝ｚ２＾２；
ａｚ４：＝ａ＊ｚ４；
ａｙ４ｚ４：＝ａｚ４＊ｙ４；
Ｔ１：＝３＊ｘ２＋ａｚ４；
Ｔ１２：＝Ｔ１＾２；
Ｔ２：＝１２＊ｘｙ２−Ｔ１２；
Ｔ３：＝Ｔ１２−８＊ｘｙ２；
Ｔ３２：＝Ｔ３＾２；
Ｔ４：＝Ｔ１＊Ｔ２−８＊ｙ４；
Ｔ４２：＝Ｔ４＾２；
Ｔ４４：＝Ｔ４２＾２；
Ｔ５：＝３＊Ｔ３２＋１６＊ａｙ４ｚ４；
Ｔ５２：＝Ｔ５＾２；
Ｔ６：＝Ｔ４４＊２５６＊ａｙ４ｚ４；
Ｔ７：＝Ｔ３＊Ｔ４２；
Ｔ８：＝Ｔ５２−８＊Ｔ７；
Ｔ８２：＝３＊Ｔ８＾２；
Ｔ９：＝Ｔ８２＋Ｔ６；
Ｔ９２：＝（Ｔ９）＾２；
Ｓ１０：＝Ｔ５２−８＊Ｔ７；
Ｓ１１：＝１２＊Ｔ７−Ｔ５２；
Ｓ１２：＝Ｔ５＊Ｓ１１；
Ｓ１３：＝Ｓ１２−８＊Ｔ４４；
Ｓ１３２：＝Ｓ１３＾２；
Ｓ１４：＝Ｓ１０＊Ｓ１３２；
ｒ：＝Ｔ９２−８＊Ｓ１４；
Ｓ１５：＝１２＊Ｓ１４−Ｔ９２；
Ｓ１３４：＝Ｓ１３２＾２；
ｓ：＝Ｔ９＊Ｓ１５−８＊Ｓ１３４；および
ｔ：＝８＊Ｓ１３＊Ｔ４＊ｙｚ
のように決定することを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１１】
８Ｐの計算を行う前記コンピュータプログラム命令は、８Ｐの計算を直接型楕円曲線点８倍化アルゴリズムを用いて行う命令をさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１２】
記号：＝は定義演算を表し、前記直接型楕円曲線点８倍化アルゴリズムは、ｒ、ｓ、およびｔを
【数４】
2006259734.tif 000015
【数５】
2006259734.tif 000016
【数６】
2006259734.tif 000017
のように決定することを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記楕円曲線上のそれぞれの点に対する８Ｐの決定を、直接型またはインライン直接型楕円曲線点８倍化アルゴリズムを用いて行うこと、および
元のデータの暗号化または署名を、前記直接型またはインライン直接型楕円曲線点８倍化アルゴリズムの結果に基づいて行うこと
のための、前記プロセッサで実行可能なコンピュータプログラム命令をさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１４】
前記楕円曲線上のそれぞれの点に対する８Ｐの決定を、直接型またはインライン直接型楕円曲線点８倍化アルゴリズムを用いて行うこと、および
暗号処理されたデータの復号または検証を、前記直接型またはインライン直接型楕円曲線点８倍化アルゴリズムの結果に基づいて行うこと
のための、前記プロセッサで実行可能なコンピュータプログラム命令をさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１５】
プロセッサと、
前記プロセッサに結合されたメモリとを含み、前記メモリは、
楕円曲線上の重み付き射影点Ｐの特定を、Ｐの座標が（ｘ，ｙ，ｚ）であるとして行うこと、および
Ｐの８Ｐの計算を、繰り返し２倍化演算に依存せずに、８Ｐの座標が（ｒ，ｓ，ｔ）であるとして行うこと
のための、前記プロセッサで実行可能なコンピュータプログラム命令を備えることを特徴とするコンピューティング装置。
【請求項１６】
８Ｐの計算を行う前記コンピュータプログラム命令は、８Ｐを計算するために２６回の体の乗算となるストレートライン型楕円曲線点８倍化アルゴリズムを用いて８Ｐの計算を行う命令をさらに含むことを特徴とする請求項１５に記載のコンピューティング装置。
【請求項１７】
記号：＝は定義演算を表し、前記ストレートライン型楕円曲線点８倍化アルゴリズムは、ｒ、ｓおよびｔを
ｘ２：＝ｘ＾２；
ｙ２：＝ｙ＾２；
ｙ４：＝ｙ２＾２；
ｘｙ２：＝ｘ＊ｙ２；
ｙｚ：＝ｙ＊ｚ；
ｚ２：＝ｚ＾２；
ｚ４：＝ｚ２＾２；
ａｚ４：＝ａ＊ｚ４；
ａｙ４ｚ４：＝ａｚ４＊ｙ４；
Ｔ１：＝３＊ｘ２＋ａｚ４；
Ｔ１２：＝Ｔ１＾２；
Ｔ２：＝１２＊ｘｙ２−Ｔ１２；
Ｔ３：＝Ｔ１２−８＊ｘｙ２；
Ｔ３２：＝Ｔ３＾２；
Ｔ４：＝Ｔ１＊Ｔ２−８＊ｙ４；
Ｔ４２：＝Ｔ４＾２；
Ｔ４４：＝Ｔ４２＾２；
Ｔ５：＝３＊Ｔ３２＋１６＊ａｙ４ｚ４；
Ｔ５２：＝Ｔ５＾２；
Ｔ６：＝Ｔ４４＊２５６＊ａｙ４ｚ４；
Ｔ７：＝Ｔ３＊Ｔ４２；
Ｔ８：＝Ｔ５２−８＊Ｔ７；
Ｔ８２：＝３＊Ｔ８＾２；
Ｔ９：＝Ｔ８２＋Ｔ６；
Ｔ９２：＝（Ｔ９）＾２；
Ｓ１０：＝Ｔ５２−８＊Ｔ７；
Ｓ１１：＝１２＊Ｔ７−Ｔ５２；
Ｓ１２：＝Ｔ５＊Ｓ１１；
Ｓ１３：＝Ｓ１２−８＊Ｔ４４；
Ｓ１３２：＝Ｓ１３＾２；
Ｓ１４：＝Ｓ１０＊Ｓ１３２；
ｒ：＝Ｔ９２−８＊Ｓ１４；
Ｓ１５：＝１２＊Ｓ１４−Ｔ９２；
Ｓ１３４：＝Ｓ１３２＾２；
ｓ：＝Ｔ９＊Ｓ１５−８＊Ｓ１３４；および
ｔ：＝８＊Ｓ１３＊Ｔ４＊ｙｚ
のように決定することを特徴とする請求項１６に記載のコンピューティング装置。
【請求項１８】
８Ｐの計算を行う前記コンピュータプログラム命令は、８Ｐの計算を直接型楕円曲線点８倍化アルゴリズムを用いて行う命令をさらに含むことを特徴とする請求項１５に記載のコンピューティング装置。
【請求項１９】
記号：＝は定義演算を表し、前記直接型楕円曲線点８倍化アルゴリズムは、ｒ、ｓ、およびｔを
【数７】
2006259734.tif 000018
【数８】
2006259734.tif 000019
【数９】
2006259734.tif 000020
のように決定することを特徴とする請求項１８に記載のコンピューティング装置。
【請求項２０】
前記楕円曲線上のそれぞれの点に対する８Ｐの決定を、直接型またはインライン直接型楕円曲線点８倍化アルゴリズムを用いて行うこと、および
元のデータの暗号化または署名を、前記直接型またはインライン直接型楕円曲線点８倍化アルゴリズムの結果に基づいて行うこと、または
暗号処理されたデータの復号または検証を、前記直接型またはインライン直接型楕円曲線点８倍化アルゴリズムの結果に基づいて行うこと
のための、前記プロセッサで実行可能なコンピュータプログラム命令をさらに備えることを特徴とする請求項１５に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書のシステムおよび方法は、楕円曲線暗号に関する。
【背景技術】
【０００２】
暗号システムは、甲から乙へと送られたデータの秘匿性（ｃｏｎｆｉｄｅｎｔｉａｌｉｔｙ）、真正性（ａｕｔｈｅｎｔｉｃｉｔｙ）、完全性（ｉｎｔｅｇｒｉｔｙ）、および否認防止（ｎｏｎ−ｒｅｐｕｄｉａｔｉｏｎ）に関係している。有限アーベル群における離散対数問題に基づく最新の暗号方式は、こうした問題に対処するように設計されている。そのような有限アーベル群は、ますます支持を得てきているが、その１つが、単純な代数式による群演算を有する、有限体上の楕円曲線（ＥＣ）上の点からなる群である。これは、そのような群演算が、ハードウェアまたはソフトウェアでの実現が比較的簡単であるためである。しかし、システム設計者は、そのような群を使用することの実装効率を完全に理解するには、関連する体の演算の基礎的な実装にきめ細かい注意を払う必要がある。
【０００３】
例えば、体の逆元演算が乗算よりも著しくコストがかかるという想定状況では、効率がより高くなるのは、通常、重み付き射影座標を使用して、点の加算が体の乗算を用いて行えるようにし（例えば、非特許文献１に記載されているように）、体の逆元演算を後回しにすることである（普通、そのような逆元演算は、乗算からなる長いシーケンスの最後で１つだけ実装される）。しかし、逆元演算を取り除くことの計算コストは、一般に増加した回数の乗算を計算しなければならないということである。有限群Ｇ内の２つの元の乗算を行う効率のよい方法は、効率のよい指数計算を行うのに不可欠である。
【０００４】
指数計算は、公開鍵暗号では、楕円曲線上の点Ｐのｎスカラー倍を計算するのに一般によく使用されるが、ここでｎは非常に大きな整数（例えば、乱数または秘密鍵）であり、Ｐは重み付き射影座標である。ｎＰを計算する素朴な手法は、群Ｇにおける乗算をｎ−１回行うことである。暗号の適用例では、群Ｇの位数（ｏｒｄｅｒ）は、通常、２１６０を越えており、２２０２４を越えることもある。そのような演算では、計算の量が多く、選ばれるｎは十分に大きくて、ｎＰの計算をＰによるｎ−１回の連続する乗算を用いて行うのが、実行不可能なほどになる。しかし、指数計算の計算上のコストを低減するのに使用できるいくつかの技法がある。
【０００５】
例えば、繰り返し平方乗算（ｓｑｕａｒｅ−ａｎｄ−ｍｕｌｔｉｐｌｙ）アルゴリズム（すなわち、バイナリ法（ｂｉｎａｒｙ  ｅｘｐｏｎｅｎｔｉａｔｉｏｎ））および移動窓方式（ｗｉｎｄｏｗｉｎｇ  ｍｅｔｈｏｄｓ）（例えば、非特許文献２に記載されているように）により、指数計算の計算上のコストを低減することができる。より具体的には、繰り返し平方乗算アルゴリズムでは、指数ｎを分割して、２の冪乗のより小さい和にする。これにより、それぞれでは、計算するための処理資源がより少なくなる。例えば、有限体上の楕円曲線上に座標（ｘ，ｙ，ｚ）の射影点Ｐが与えられると、ｎを大きさ２３の部分に分割して（すなわち、３の窓（ｗｉｎｄｏｗ  ｏｆ  ３）を用いて）、Ｐのスカラー倍（２３Ｐ、すなわち８Ｐ）の計算を複数の点の２倍化の反復によって行う。これを達成するのに、既存のシステムでは、通常、Ｐ＝（ｘ，ｙ，ｚ）を平方乗算アルゴリズムへと入力して２Ｐを生成する。次に、２Ｐ（第１の２倍化演算からの出力）に対する座標を、（ｘ，ｙ，ｚ）として同じ平方乗算アルゴリズムへと入力して、４Ｐが得られる。最後に、この反復プロセスがもう１度繰り返されて、４Ｐ（第２の２倍化演算からの出力）に対する座標を（ｘ，ｙ，ｚ）として同じ平方乗算アルゴリズムへと入力して、８Ｐが得られる。８Ｐを得るためのこのプロセスは、計３０回の体の乗算を含んでいる。
【０００６】
【非特許文献１】Blake et al, "Elliptic Curves in Cryptography", Cambridge University Press, 1999, pages 59-60
【非特許文献２】Blake et al, "Elliptic Curves in Cryptography", Cambridge University Press, 1999, pages 63-72
【発明の開示】
【課題を解決するための手段】
【０００７】
重み付き射影座標用の楕円曲線点８倍化のためのシステムおよび方法の説明を行う。ある態様では、楕円曲線上の重み付き射影点Ｐが特定される。８ＰのＰからの計算は、繰り返し２倍化演算に依存しない２６回の乗算を用いる直接型（ｄｉｒｅｃｔ）の数式で行われる。
【０００８】
図面では、構成要素の符号の最も左の数字により、その構成要素の最初に現れる特定の図を識別している。
【発明を実施するための最良の形態】
【０００９】
概要
この重み付き射影座標用の楕円曲線点８倍化のためのシステムおよび方法では、重み付き射影点指数計算を、８Ｐの計算を、繰り返し２倍化演算をせずに行うことにより、実質的に最適化する。ある実装形態では、これは、ストレートインライン型（ｓｔｒａｉｇｈｔ  ｉｎ−ｌｉｎｅ）アルゴリズムによって２６回の体の乗算で達成される。８Ｐの計算に２６回の体の乗算を使用することは、８Ｐ（すなわち、２Ｐから４Ｐ、それから８Ｐ）の計算に３０回の体の乗算および繰り返し／反復２倍化を必要とする、従来の技法とは対照的である。このシステムおよび方法では、８Ｐの計算のための体の乗算の回数を３０から２６へと減らすことにより、従来の８Ｐバイナリ法による指数計算の実装にまさる実質的な処理性能の改善が提供される。
【００１０】
重み付き射影座標用の楕円曲線点８倍化のためのシステムおよび方法のこれらおよび他の態様を、次に、より詳細に説明する。
【００１１】
例示的なシステム
必須ではないが、重み付き射影座標の楕円曲線点８倍化のためのシステムおよび方法の説明を、パーソナルコンピュータなどのコンピューティング装置が実行するコンピュータ実行可能命令（プログラムモジュール）の一般的なコンテキストで説明する。プログラムモジュールは、一般に、特定のタスクを行い、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。このシステムおよび方法の説明は以上のコンテキストで説明するが、以下で説明する動作（ａｃｔｓ）および操作は、ハードウェアで実装することもできる。
【００１２】
図１に、重み付き射影座標の楕円曲線点８倍化のための例示的なシステム１００を示している。システム１００は、第１のコンピューティング装置１０２を含み、これは通信ネットワーク１０３を介して第２のコンピューティング装置１０４へと結合されている。通信ネットワーク１０３は、オフィス、企業規模のコンピュータネットワーク、イントラネット、インターネットなどではでごく普通であるものなどの、ローカルエリアネットワークと一般的な広域ネットワーク通信環境のどのような組合せを含むのでもよい。第１と第２のコンピューティング装置１０２と１０４は、それぞれ、パーソナルコンピュータ、ラップトップ、サーバ、ハンドヘルドまたはモバイルのコンピューティング装置（例えば、セルラ電話、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ））など、任意のタイプのコンピューティング装置を表す。
【００１３】
コンピューティング装置１０２は、プログラムモジュール１０６およびプログラムデータ１０８を含む。プログラムモジュール１０６は、例えば、元のデータ１１２の暗号化または署名を、楕円曲線（ＥＣ）点８倍化の指数計算を用いてそれぞれ行う、署名／暗号化モジュール１１０を含む。下で説明する楕円曲線点８倍化のためのアルゴリズムとは独立に、署名／暗号化モジュール１１０によって実装される特定の暗号プロトコルは、任意であり、また、実装のために選択された特定の暗号アルゴリズムの一機能である。署名／暗号化モジュール１１０は、楕円曲線点８倍化を行うために、楕円曲線１１４上の１組の点に対して演算を行う。楕円曲線１１４は、２または３に等しくない体の標数（ｃｈａｒａｃｔｅｒｉｓｔｉｃ）における次の方程式、すなわち、ｙ２＝ｘ３＋ａｘｚ４＋ｂｚ６に従う。基礎体（ｕｎｄｅｒｌｙｉｎｇ  ｆｉｅｌｄ）の標数は、ｐかけるその体の任意の元が０であるような最小の非零の自然数ｐであると定義される。
【００１４】
楕円曲線１１４上の点Ｐは、重み付き射影形式で、Ｐ＝（ｘ，ｙ，ｚ）と表される。ある実装形態で、実装される暗号プロトコルが署名方式である場合には、点Ｐは、その暗号システム（ｃｒｙｐｔｏｓｙｓｔｅｍ）用の公開情報の一部とすることができる。別の実装形態で、実装される暗号プロトコルが鍵共有方式（例えば、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎｎ鍵共有法）または暗号方式（例えば、ＥｌＧａｍａｌ暗号）である場合には、点Ｐを、その暗号システムの公開または秘密の情報の一部とすることができる。
【００１５】
ある実装形態では、署名／暗号化モジュール１１０は、楕円曲線点８倍化指数計算の実装を、直接（非インライン）型アルゴリズムを用いて行う。表１に、楕円１１４上の点Ｐから８Ｐ（図１の構成要素１１６を参照）を決定する、署名／暗号化モジュール１１０用の例示的な直接型楕円曲線点８倍化アルゴリズムを示している。
【００１６】
【表１】
2006259734.tif 000003
【００１７】
【表２】
2006259734.tif 000004
【００１８】
【表３】
2006259734.tif 000005
【００１９】
表１では、８Ｐ＝（ｒ，ｓ，ｔ）という量に対する数式を与えているが、ここでＰは楕円曲線ｙ２＝ｘ３＋ａｘｚ４＋ｂｚ６上の重み付き射影座標（ｘ，ｙ，ｚ）で与えられた点である。ＥＣ上の点Ｐから８Ｐを生成する従来のバイナリ法による指数計算の技法では、２倍化アルゴリズムを反復して呼び出しては前回の点２倍化演算からの出力（例えば、２Ｐまたは４Ｐ）を入力するが、これとは対照的に、表１の直接型楕円曲線点８倍化アルゴリズムでは、楕円曲線１１４上の点Ｐの８Ｐの座標（ｒ，ｓ，ｔ）の計算を、点２倍化演算の反復呼び出しに依存せずに行っている。
【００２０】
このような直接型点８倍化アルゴリズムは、窓の大きさ３を用いた指数計算ルーチンのための基本演算として使用することができる（ここで、窓の大きさ（ｗｉｎｄｏｗ  ｓｉｚｅ）は、どの２の冪乗を使用して指数を分解したかを示す）。例えば、５８７＊Ｐは、２＊（２＊（２＊（２＊（２＊（２＊（２＊２＊２＊Ｐ＋Ｐ）））＋Ｐ））＋Ｐ）＋Ｐではなく、８＊（８＊（８＊Ｐ＋Ｐ）＋Ｐ）＋３＊Ｐとして計算することができる。
【００２１】
ある実装形態では、署名／暗号化モジュール１１０は、楕円曲線１１４上の点Ｐの８Ｐ（１１６）の計算を、表２の楕円曲線８倍化指数計算のためのストレートライン型アルゴリズムを用いて行う。議論の都合上、ストレートライン型の数式とは、所望の結果を得るのに、数式中の各ステートメントの実行を、連続して、ちょうど演算がコンピュータにより、コードのループまたは分岐がないように実装されるように行うためのプロセスである。表２のストレートライン型プログラムのプログラム命令は、ボールド体にし、その前に終わり山括弧（ｆｏｒｗａｒｄ  ａｎｇｌｅ  ｂｒａｃｋｅｔ）を置いている。各命令には、それに続く記号「：＝」があるが、これは「定義」を意味する。プログラム命令は、プログラム記述言語（ＰＤＬ、ｐｒｏｇｒａｍ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）で示してある。比較のため、表２の直接型アルゴリズムからのプログラム命令に対応する実行トレース（ボールド体にしていない）を、表２のストレートライン型アルゴリズムの各プログラム命令のわきに提示している。
【００２２】
【表４】
2006259734.tif 000006
【００２３】
【表５】
2006259734.tif 000007
【００２４】
【表６】
2006259734.tif 000008
【００２５】
【表７】
2006259734.tif 000009
【００２６】
【表８】
2006259734.tif 000010
【００２７】
【表９】
2006259734.tif 000011
【００２８】
表２で示すように、ストレートライン型アルゴリズムでは、表１に提示した式のビルディングブロック（ｂｕｉｌｄｉｎｇ  ｂｌｏｃｋ）または部分（ｐｉｅｃｅｓ）の生成を系統立てて行っている。例示の目的で、そのようなビルディングブロックを「他のデータ」１１８のそれぞれの部分で表している。例えば、定義「ｘｙ２：＝ｘ＊ｙ２」により、ｘｙ２は、ｘ＊ｙ２に等しく設定される。このシーケンスの後のほうで、Ｔ２という項は、ｘｙ２の定義をＴ２：＝１２＊ｘｙ２  -  Ｔ１２のように利用して、ｘ＊ｙ２などと計算し直さなくても済んでいることに注意されたい。このようにして、楕円曲線１１４上の点の８Ｐの（ｒ，ｓ，ｔ）の計算に必要な体の計算の数が、２６まで低減される。すなわち、署名／暗号化モジュール１１０では、計２６個の体の乗算に対して、１２個の平方の生成および１４個の乗算の実装を、楕円曲線１１４上の点Ｐに対する８Ｐ（１１６）の座標（ｒ，ｓ，ｔ）を決定するために行う。これは、既存の技法によって代表される体の乗算回数の著しい低減である。
【００２９】
署名／暗号化モジュール１１０では、元のデータ１１２の暗号処理を、楕円曲線８倍化指数計算を実装するように変更された何らかの公開鍵ベースの暗号アルゴリズムを用いて行って、暗号処理されたデータを生成する。暗号処理されたデータを、「他のデータ」１１８のそれぞれの部分として示している。そのような暗号処理の説明を、ＲＳＡ、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵交換（ｋｅｙ  ｅｘｃｈａｎｇｅ）、およびＥｌＧａｍａｌ暗号に関して行ってきているが、署名／暗号化モジュール１１０では、楕円曲線８倍化指数計算を利用するように変更された他のアルゴリズムを使用して、元のデータを暗号処理することができる。言い換えると、署名／暗号化モジュール１１０で実装されたこの特定の公開鍵ベースの暗号アルゴリズムは、上で表１および２に示した楕円曲線１１４上の点の８Ｐを計算するためのアルゴリズムに依存せず、実装のために選択された特定の暗号アルゴリズムの一機能であるため、任意である。
【００３０】
例えば、署名／暗号化モジュール１１０のそれぞれの実装では、次の暗号プロトコルのうちの１つまたは複数を実装している。すなわち、ＩＤに基づく暗号（ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｃｒｙｐｔｏｇｒａｐｈｙ）（例えば、平文（ｐｌａｉｎ）、ブラインド（ｂｌｉｎｄ）、代理（ｐｒｏｘｙ）、リング、否認不可（ｕｎｄｅｎｉａｂｌｅ）など）、暗号化プロトコル（例えば、認証済み、ブロードキャスト、キーワード検索による暗号化など）、バッチ署名、鍵共有（ｋｅｙ  ａｇｒｅｅｍｅｎｔ）（平文、認証済み、グループなど）、信頼機関（ｔｒｕｓｔ  ａｕｔｈｏｒｉｔｉｅｓ）および公開鍵認証、階層型の暗号システム（ｈｉｅｒａｒｃｈｉｃａｌ  ｃｒｙｐｔｏｓｙｓｔｅｍｓ）、閾値暗号システム（ｔｈｒｅｓｈｏｌｄ  ｃｒｙｐｔｏｓｙｓｔｅｍ）および署名、ｃｈａｍｅｌｅｏｎハッシュならびに署名、認証、アプリケーション、およびシステム、アクセス制御、鍵共有、非対話的な鍵配布、クレデンシャル（例えば、匿名、隠し（ｈｉｄｄｅｎ）、セルフブラインダブル（ｓｅｌｆ−ｂｌｉｎｄａｂｌｅ）など）、秘密ハンドシェイク（ｓｅｃｒｅｔ  ｈａｎｄｓｈａｋｅｓ）、証明可能にセキュリティ保護された署名（ｐｒｏｖａｂｌｙ  ｓｅｃｕｒｅ  ｓｉｇｎａｔｕｒｅｓ）、ショート署名（ｓｈｏｒｔ  ｓｉｇｎａｔｕｒｅｓ）、アグリゲート（ａｇｇｒｅｇａｔｅ）、リング、および検証可能暗号化署名、ブラインドおよび部分ブラインド署名、代理署名、否認不可署名、サインクリプション、多重署名および閾値署名、ｌｉｍｉｔｅｄ−ｖｅｒｉｆｉｅｒおよびｄｅｓｉｇｎａｔｅｄ−ｖｅｒｉｆｉｅｒ署名、閾値暗号システム、階層型および役割ベース（ｒｏｌｅ−ｂａｓｅｄ）の暗号システム、ｃｈａｍｅｌｅｏｎハッシュおよび署名、検証可能な乱数関数（ｖｅｒｉｆｉａｂｌｅ  ｒａｎｄｏｍ  ｆｕｎｃｔｉｏｎｓ）、強く絶縁された暗号（ｓｔｒｏｎｇｌｙ  ｉｎｓｕｌａｔｅｄ  ｅｎｃｒｙｐｔｉｏｎ）、イントリュージョンレジリエント暗号（ｉｎｔｒｕｓｉｏｎ−ｒｅｓｉｌｉｅｎｔ  ｅｎｃｒｙｐｔｉｏｎ）、証明書を用いない公開鍵証明書（ｃｅｒｔｉｆｉｃａｔｅ−ｌｅｓｓ  ＰＫＣ）、ａｌ、不正者追跡（ｔｒａｉｔｏｒ−ｔｒａｃｉｎｇ）、および／またはその他である。
【００３１】
ある実装形態では、装置１０２は、暗号処理されたデータを装置１０４へと検証／復号のために通信で送る。例示の目的で、装置１０４が受け取る暗号処理されたデータを、署名済／暗号化データ１２０として示している。コンピューティング装置１０４は、受け取った暗号処理されたデータを検証または復号するための検証／復号モジュール１２２を含む。ある想定状況では、検証／復号モジュール１１８は、暗号処理されたデータとしての検証を、この暗号処理されたデータが暗号署名されているときに行う。この想定状況では、検証／復号モジュール１１８は、上で説明した楕円曲線点８倍化指数計算の１つまたは複数の実装を利用して、暗号処理されたデータの検証を行う。別の想定状況では、検証／復号モジュール１１６は、暗号化されている暗号処理されたデータの復号を行う。この想定状況では、検証／復号モジュール１１８は、上で説明した楕円曲線点８倍化指数計算の１つまたは複数の実装を利用して、暗号処理されたデータの復号を行う。
【００３２】
例示的な楕円曲線点８倍化
図２に、重み付き射影座標の楕円曲線点８倍化のための例示的な手順２００を示している。論考および例示の都合上、手順２００の操作の説明を、図１の構成要素に関して行う。このために、構成要素の符号の最も左の数字で、その構成要素が最初に現れる特定の図を識別している。ブロック２０２で、署名／暗号化モジュール１１０（図１）は、有限体Ｆｑ上の楕円曲線１１４上の点Ｐの識別を行う。点Ｐは、（ｘ，ｙ，ｚ）という重み付き射影座標をもつ。ブロック２０２で、署名／暗号化モジュール１１０は、Ｐの８Ｐの計算を、繰り返し２倍化演算に依存せずに行う。８Ｐの座標は（ｒ，ｓ，ｔ）である。ある実装形態では、８Ｐの計算は、上で表１に示すものなどの直接型楕円曲線点８倍化アルゴリズムを用いて行われる。別の実装形態では、８Ｐの計算は、上で表２に示したものなどの、体の乗算が２６回のストレートライン型楕円曲線点８倍化アルゴリズムを用いて行われる。ブロック２０６で、楕円曲線点８倍化アルゴリズムの結果を用いて、元のデータの暗号化または暗号署名、または暗号処理されたデータの復号または検証が行われる。
【００３３】
例示的な動作環境
図３に、重み付き射影座標の楕円曲線８倍化を完全にまたは部分的に実装できる好適なコンピューティング環境の例を示している。例示的なコンピューティング環境３００は、図１の例示的なシステムおよび図２の例示的な操作に適したコンピューティング環境の１つの例に過ぎず、本明細書で説明するシステムおよび方法の用途または機能の範囲に関して何ら制限を示唆するものではない。また、コンピューティング環境３００に何らかの依存関係または要件があるとの解釈を、コンピューティング環境３００に示す構成要素のいずれかまたは組合せに関して行うべきでもない。
【００３４】
本明細書で説明する方法およびシステムは、他の数多くの汎用または専用のコンピューティングシステム、環境、または構成とともに動作可能である。使用に適する可能性のあるよく知られているコンピューティングシステム、環境、および／または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上のシステムまたは装置のいずれかを含む分散コンピューティング環境などがあるが、これに限定されるものではない。この枠組みのコンパクト版またはサブセット版を、ハンドヘルドコンピュータなどの限られた資源のクライアント、または他のコンピューティング装置に実装することもできる。本発明は、分散コンピューティング環境で実施され、そこでは、タスクの実行が、通信ネットワークを通じてリンクされるリモート処理装置によって行われる。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートのどちらのメモリストレージ装置にあってもよい。
【００３５】
図３に関しては、重み付き射影座標の楕円曲線８倍化の例示的なシステムは、例えば、図１のシステム１００を実装するコンピュータ３１０の形態の汎用コンピューティング装置を含む。コンピュータ３１０の、以下で説明する諸態様は、図１のコンピューティング装置１０２および／または１０４の例示的な実装形態である。コンピュータ３１０の構成要素は、処理ユニット３２０、システムメモリ３３０、および、システムメモリを含む様々なシステム構成要素を処理ユニット３２０へと結合するシステムバス３２１を含むことができるが、これに限定されるものではない。システムバス３２１は、様々なバスアーキテクチャのうちのどのようなものでも用いた、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかとすることができる。限定ではなく例として、そのようなアーキテクチャは、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ、業界標準アーキテクチャ）バス、ＭＣＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、および、Ｍｅｚｚａｎｉｎｅバスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含むことができる。
【００３６】
コンピュータ３１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ３１０がアクセスできる任意の利用可能な媒体とすることができ、揮発性および不揮発性の媒体、取り外し可能および取り外し不能の媒体をいずれも含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報の記憶のための任意の方法または技術の形で実装された揮発性および不揮発性、取り外し可能および取り外し不能の媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ、デジタル多用途ディスク）、または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を記憶するのに使用でき、コンピュータ３１０がアクセスできる他のどのような媒体も含むが、これに限定されるものではない。
【００３７】
通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他のトランスポート機構などの変調されたデータ信号中に具現化するものであり、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、その特徴の１つまたは複数が、情報をその信号の中にエンコードする形で設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接配線接続などの有線媒体、ならびに音響、ＲＦ、赤外線などの無線媒体および他の無線媒体を含む。また、上記のどのようなものの組合せも、コンピュータ可読媒体の範囲内に含められる。
【００３８】
システムメモリ３３０は、読出し専用メモリ（ＲＯＭ）３３１やランダムアクセスメモリ（ＲＡＭ）３３２などの揮発性および／または不揮発性の形のコンピュータ記憶媒体を含む。基本入出力システム（ＢＩＯＳ）３３３は、起動時などにコンピュータ３１０内部の要素間で情報を転送するのに役立つ基本ルーチンを含むが、通常、ＲＯＭ３３１に格納されている。ＲＡＭ３３２は、通常、処理ユニット３２０が、直ちにアクセス可能なかつ／または現在操作されている、データおよび／またはプログラムモジュールを含む。限定ではなく例として、図３に、オペレーティングシステム３３４、アプリケーションプログラム３３５、他のプログラムモジュール３３６、およびプログラム  データ３３７を示している。
【００３９】
また、コンピュータ３１０は、他の取り外し可能／取り外し不能で、揮発性／不揮発性のコンピュータ記憶媒体を含むことができる。もっぱら例として、図３に、取り外し不能不揮発性の磁気媒体からの読み取りまたはそれへの書き込みを行うハードディスクドライブ３４１、取り外し可能不揮発性の磁気ディスク３５２からの読み取りまたはそれへの書き込みを行う磁気ディスクドライブ３５１、および、ＣＤ  ＲＯＭまたは他の光学メディアなどの取り外し可能不揮発性の光ディスク３５６からの読み取りまたはそれへの書き込みを行う光ディスクドライブ３５５を示している。例示的な動作環境で使用できる他の取り外し可能／取り外し不能で、揮発性／不揮発性のコンピュータ記憶媒体としては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク（ＤＶＤ）、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがあるが、これに限定されるものではない。ハードディスクドライブ３４１のシステムバス３２１への接続は、通常、インターフェース３４０などの取り外し不能メモリインターフェースを通じて行われ、磁気ディスクドライブ３５１および光ディスクドライブ３５５のシステムバス３２１への接続は、通常、インターフェース３５０などの取り外し可能メモリインターフェースによって行われる。
【００４０】
上で論じ図３に示したドライブおよびそれに関連するコンピュータ記憶媒体により、コンピュータ３１０用のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶が提供される。図３では、例えば、ハードディスクドライブ３４１を、オペレーティングシステム３４４、アプリケーションプログラム３４５、他のプログラムモジュール３４６、およびプログラム  データ３４７を格納するものとして示している。こうしたコンポーネントは、オペレーティングシステム３３４、アプリケーションプログラム３３５、他のプログラムモジュール３３６、およびプログラム  データ３３７とは、同じまたは異なるものとすることができることに注意されたい。アプリケーションプログラム３３５は、例えば、図１のコンピューティング装置１０２または１０４のプログラムモジュールを含む。プログラム  データ３３７は、例えば、図１のコンピューティング装置１０２または１０４のプログラムデータを含む。オペレーティングシステム３３４、アプリケーションプログラム３４５、他のプログラムモジュール３４６、およびプログラム  データ３４７には、ここでは異なる符号を与えて、これらが少なくとも異なるコピーであることを示している。
【００４１】
ユーザは、コマンドまたは情報のコンピュータ３１０への入力を、キーボード３６２、および、一般に、マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス３６１などの入力装置を通じて行う。他の入力装置（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを挙げることができる。こうしたおよび他の入力装置の処理ユニット３２０への接続は、しばしば、システムバス３２１へと結合されているユーザ入力インターフェース３６０を通じて行われるが、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ、ユニバーサルシリアルバス）など、他のインターフェースおよびバス構造によって接続することもできる。
【００４２】
モニタ３９１または他のタイプのディスプレイ装置も、ビデオインターフェース３９０などのインターフェースを介してシステムバス３２１に接続される。コンピュータは、このモニタのほかに、プリンタ３９６やオーディオ装置３９７など、他の出力周辺装置を含むこともでき、それらは出力周辺装置インターフェース３９５を通じて接続することができる。
【００４３】
コンピュータ３１０は、リモートコンピュータ３８０など、１つまたは複数のリモートコンピュータへの論理接続を用いてネットワーク化された環境で動作する。ある実装形態では、リモートコンピュータ３８０は、図１のコンピューティング装置１０２またはネットワーク化されたコンピュータ１０４を表す。リモートコンピュータ３８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置（ｐｅｅｒ  ｄｅｖｉｃｅ）、または他の一般的なネットワークノードとすることができ、その特定の実装形態の一機能として、上でコンピュータ３１０に関して説明した要素の多くまたはすべてを含むことができるが、図３にはメモリストレージ装置３８１だけが示されていた。図３に示す論理接続は、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）３７１、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）３７３を含むが、他のネットワークも含むことができる。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットではごく普通のものである。
【００４４】
コンピュータ３１０は、ＬＡＮネットワーキング環境で使用される場合、ネットワークインターフェースまたはアダプタ３７０を通じてＬＡＮ３７１に接続される。コンピュータ３１０は、ＷＡＮネットワーキング環境で使用される場合は、通常、モデム３７２、または、通信の確立をインターネットなどのＷＡＮ３７３を介して行うための他の手段を含む。モデム３７２は、内蔵でも外付けでもよいが、ユーザ入力インターフェース３６０または他の適切な機構を介してシステムバス３２１に接続される。ネットワーク化された環境では、コンピュータ３１０に関して示したプログラムモジュールまたはその部分は、リモートのメモリストレージ装置に格納することができる。限定ではなく例として、図３に、リモートのアプリケーションプログラム３８５を、メモリ装置３８１上に常駐するものとして示している。ここに示すネットワーク接続は例示的であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよい。
【００４５】
結論
重み付き射影座標の楕円曲線点８倍化のためのシステムおよび方法の説明を、構造的な特徴および／または方法論的操作またはアクションに特有な言葉で説明してきたが、添付の特許請求の範囲で定義される実装形態は、説明した特定の特徴またはアクションに必ずしも限定されるわけではないことが理解される。例えば、署名／暗号化モジュール１１０（図１）および検証／復号モジュール１２２（図１）を、それぞれ異なるコンピューティング装置（すなわち、装置１０２および１０４）上に示しているが、別の実装形態では、これらのプログラムモジュールに関連するロジックを単一のコンピューティング装置１０２上に実装することができる。このため、システム１００の特定の特徴および動作を、特許請求する主題（ｓｕｂｊｅｃｔ  ｍａｔｔｅｒ）を実装する例示的な形態として開示している。
【図面の簡単な説明】
【００４６】
【図１】重み付き射影座標用の楕円曲線点８倍化のための例示的なシステムを示す図である。
【図２】重み付き射影座標用の楕円曲線点８倍化のための例示的な手順を示す図である。
【図３】重み付き射影座標用の楕円曲線点８倍化のためのシステムおよび方法の完全または部分的な実装に適するコンピューティング環境の例を示す図である。
【符号の説明】
【００４７】
１０２，１０４  コンピューティング装置
１０６  プログラムモジュール
１１０  署名／暗号化モジュール
１２２  検証／復号モジュール
３２０  処理ユニット
３２１  システムバス
３３０  システムメモリ
３４０  取り外し不能不揮発性メモリインターフェース
３５０  取り外し可能不揮発性メモリインターフェース
３６０  ユーザ入力インターフェース
３６１  マウス
３６２  キーボード
３７０  ネットワークインターフェース
３７１  ローカルエリアネットワーク
３７２  モデム
３７３  広域ネットワーク
３８０  リモートコンピュータ
３８５  リモートアプリケーションプログラム
３９１  モニタ
３９０  ビデオインターフェース
３９４  入力周辺装置インターフェース
３９５  出力周辺装置インターフェース
３９６  プリンタ
３９７  オーディオ装置
【図１】
2006259734.tif 000021
【図２】
2006259734.tif 000022
【図３】
2006259734.tif 000023