説明

統合反転を使用する曲線上でのペアリングの決定

暗号化で使用する曲線について数学的なペアリングを決定することができる、1つもしくは複数の技法および/またはシステムが開示される。曲線について数学的なペアリングを決定するのに使用される複数の反転が(たとえば、計算の各要素の2進木表現のそれぞれのレベルにおいて単一の反転に)統合される。曲線についての数学的なペアリングは、統合された複数の反転を使用して右から左へと読み取ったスカラの2進表現からアフィン座標内で決定される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、統合反転を使用する曲線上でのペアリングの決定に関する。
【背景技術】
【0002】
コンピュータは、(インターネットなどの)ネットワークを介して相互接続される機会がますます増えてきており、セキュリティおよび認証の問題が、ますます重要になってきている。たとえば鍵ベースの暗号を必要とする暗号技法は、メッセージを形成し、暗号化プロセスを介して、一見理解不能なデータ(たとえば、通常は暗号文と呼ばれる)へと数学的に変換する、理解可能なデータ(たとえば、通常は平文と呼ばれる)のシーケンスを経ることができる。この例では、暗号化を反転させ、それにより、適切な鍵を有する暗号文の受取人は、この暗号文を平文に戻すことができるようになるが、不可能ではないにしても、適切な鍵をもたない受取人が平文の状態にすることは非常に難しくなる。
【0003】
公開鍵暗号技法は、鍵ベースの暗号の一実施形態である。公開鍵暗号では、たとえば、それぞれの通信当事者が公開鍵/秘密鍵のペアを有する。それぞれのペアの公開鍵は、公に利用可能であり(たとえば、暗号化された通信文を送出しようとする他者には少なくとも利用可能であり)、秘密鍵の秘密は保持される。暗号化を使用して平文メッセージを受信側に伝達するためには、たとえば、送信側は、受信側の公開鍵を使用して平文メッセージを暗号化し、暗号文メッセージにすることができ、この暗号文メッセージを受信側に伝達することができる。この例では、暗号文メッセージを受信すると、受信側は、その秘密鍵を使用してこのメッセージを復号化し、それにより元の平文メッセージを復元する。
【0004】
公開鍵/秘密鍵暗号化の一例は、2つの大きい素数を生成するステップと、それらを乗算して、大きい合成数を得るステップとを含み、この合成数が公開される。この例では、素数が適切に選択され、十分に大きい場合、その素数を知らない人が、合成数だけを知ることによってその素数を確定することは非常に難しい(たとえば、計算不能なので事実上不可能である)。しかし、この方法が安全であるためには、合成数のサイズが1,000ビットを超えなければならない。状況によっては、こうした大きいサイズにより、この方法を使用することが非実用的になる。
【0005】
認証の一例は、当事者またはマシンが、製品もしくはサービスへのアクセスまたはその使用を許可されていることを証明しようとする場合である。しばしば、ソフトウェア・プログラムでは製品IDシステムが使用され、ソフトウェアに適切に代価を支払ったことを証明するために、適切にライセンスされたソフトウェア・パッケージの外側に刻印された製品IDの数列をユーザが入力する。製品IDの数列が長すぎる場合、扱いにくく、またユーザ・フレンドリではなくなる。他の一般的な例にはユーザ認証が含まれ、このときユーザは、認証コードを使用して、コンピュータ・システムに対して自分自身を認証する。
【0006】
他の例としては、暗号化においてしばしば楕円曲線を使用して暗号鍵を生成する。楕円曲線は、暗号化によく適合した構造および特性を有する数学的対象である。暗号化で使用するために、楕円曲線についての多くのプロトコルが既に標準化されてきた。暗号化における最近の開発成果にはペアリングの使用が含まれ、楕円関数上の各ポイントなど、1つまたは複数のグループからの各要素のペアを組み合わせ、別のグループから新規の要素を生成して暗号化システムを作製することができる。
【発明の概要】
【0007】
この発明の概要は、概念の中から選ばれたものを簡略化した形で紹介するために提供され、発明を実施するための形態において以下でさらに説明する。本発明の概要は、特許請求される主題の主要因または本質的な特徴を識別するものではなく、特許請求される主題の範囲を限定するために使用されるものでもない。
【0008】
暗号化および復号化は、通常は秘密裏に実行される。この秘密は、一群のポイントの順序、または、生成装置もしくは生成装置の倍数などグループの他の特性を利用することができる。グループの各要素向けに各ポイントを楕円曲線上に実施することなど、暗号化においては様々な異なるグループを使用することができる。たとえば、こうしたグループについての離散対数問題(DLP)が難しいと考えられるとき、暗号化/復号化において、楕円曲線から導出される一群の要素(たとえば、ポイント)を使用することができる。たとえば、安全な暗号化/復号化プロセスを作製するためには、暗号化においては困難なDLPが好ましい。
【0009】
現在、楕円曲線上でペアリングを計算するとき、楕円曲線が定義される有限体における乗算または反転など、多くの演算が必要になることがある。乗算の数を減らして、計算コストを低減させ、および/または他の方法で計算を迅速化する試みも可能である。計算を迅速化するための1つの技法は、ペアリングを計算するときに実行される反転の数を低減させることである。
【0010】
たとえば、アフィン空間で動作するとき、乗算と反転の両方ともが実行され、反転は乗算よりも計算コストが高い。反転の数を低減させるために、現在の実務者は、アフィン空間から射影空間に曲線ポイントの座標系を変更する。これは、反転を低減させる効果を有するが、コンピュータではより安い乗算の数を増大させる。
【0011】
本明細書に記載の技法および/またはシステムのうちの1つまたは複数により、座標を射影空間に変換するための代替になるものが提供されるが、楕円曲線でのペアリングを計算するには、反転数の低減がやはり必要である。これらの技法およびシステムを使用して、たとえばアフィン空間内の座標について反転を統合してもよく、ペアリング計算に使用される付加的な作用のために、これら統合された反転を再使用してもよい。さらに、たとえば、計算の部分をマルチコア・システム上で並列化して、計算時間全体を迅速化することができる。このようにして、たとえば、現在の実装形態よりも少ない計算資源で、またそれよりも短い時間で(たとえば、より速く)、暗号化システムで使用されるペアリングを計算することができる。
【0012】
一実施形態では、暗号化で使用するための曲線向けの数学的なペアリングを決定するとき、曲線用のこの数学的なペアリングを決定するときに使用される複数の反転が統合される(たとえば、ペアリング計算での中間計算などの単一の反転になる)。曲線についての数学的なペアリングは、統合された複数の反転を使用して右から左へと読み取ったスカラの2進表現に沿ってアフィン座標内で決定される。
【0013】
前述の目的および関連した目的を達成するために、以下の説明および添付図面が、ある種の例示的な態様および実装形態を説明する。これらは、1つまたは複数の態様が利用されてもよい、ほんのいくつかの互いに異なる方式を示す。本開示の他の態様、利点、および新規の特徴は、添付図面とともに考察すると、以下の詳細な説明から明らかとなろう。
【図面の簡単な説明】
【0014】
【図1】本明細書において開示される方法および/またはシステムのうちの1つまたは複数による、例示的な暗号化システムを示すブロック図である。
【図2】ソフトウェアを検証するための製品識別子を使用する例示的なシステムの図である。
【図3】暗号化で使用するための曲線についての数学的なペアリングを決定するための例示的な方法の流れ図である。
【図4】本明細書に記載の方法のうちの1つまたは複数の方法の各部分の実装の一実施形態を示す流れ図である。
【図5】本明細書において開示される技法および/またはシステムのうちの1つまたは複数の例示的な一実装形態を示す流れ図である。
【図6】暗号化で使用するための曲線について数学的なペアリングを決定するための例示的なシステムを示す構成要素のブロック図である。
【図7】本明細書に記載のシステムのうちの1つまたは複数の例示的な一実装形態を示す構成要素のブロック図である。
【図8】本明細書において開示されるシステムのうちの1つまたは複数の例示的な一実装形態を示す構成要素のブロック図である。
【図9】本明細書に記載の方法および/またはシステムのうちの1つまたは複数を実施するよう考案することができる、例示的なコンピュータ読取り可能な媒体の図である。
【図10】本明細書に記載の方法および/またはシステムのうちの1つまたは複数を実施するよう考案することができる、例示的な環境の構成要素のブロック図である。
【発明を実施するための形態】
【0015】
ここで、図面を参照して、特許請求される主題を説明する。同じ参照番号は、全体を通して同じ要素を指すために使用する。以下の記述において説明するために、特許請求される主題を完全に理解するために、数多くの具体的な詳細を説明する。しかし、特許請求される主題は、これらの具体的な詳細がなくても実施できることが明らかになる可能性がある。他の例では、特許請求される主題の説明を容易にするために、各構造体および各装置がブロック図の形で示してある。
【0016】
本明細書に記載の1つまたは複数の、暗号化ペアリングの技法および/またはシステムは、暗号化の用途に使用できる楕円曲線についての数学的なペアリングを決定することができる。たとえば、それらは、暗号化用途において、許可申請(たとえば、電子署名)についてペアリングを決定するのに使用することができる。
【0017】
通常、ペアリングベースの暗号システムは、(たとえば、楕円曲線から導出された要素および2進乗算器の)グループを利用し、これらの要素は、(たとえば、曲線を知ることにより)公知である。ペアリングを計算するのに使用されるスカラが公知である。未知の秘密は、入力ポイントであるか、またはペアリングへの入力ポイントに暗黙的に含まれているかのいずれかである。セキュリティの基礎は、関連する離散対数問題の難しさである。一例として、図1に示したペアリングベースの暗号化および復号化は、通常、代数曲線のアスペクトまたは特性に基づいて生成される鍵を使用する暗号化および復号化を指す。図1および図2の例示的な暗号システムは、曲線は公知であるが、生成されるポイントは秘密であることに基づくものとすることができる。それというのも、スカラによって曲線から生成される各ポイントは秘密(たとえば、決定することが難しい)だからである。ペアリングベースの暗号化の一実施形態では、曲線は楕円曲線でもよく、グループを構成する要素は楕円曲線上のポイントから生成することができる。当業者であれば理解できるように、通常の状況では、ポイントPは公知であり、スカラmは秘密である。次いで、ポイントQ=mPもまた公にされる。関連する離散対数問題が難しいので、PおよびQからmを決定することは実行不可能である。したがって、秘密は通常スカラそのものであり、各ポイントは公開される。
【0018】
ペアリングベースの暗号システムを使用して、多種多様な情報を暗号化することができる。たとえば、暗号化システムを使用して「短い」署名または製品識別子を生成してもよく、これは、たとえばマシン、プログラム、もしくはユーザの検証および/または認証を可能にする符号である。署名は、比較的少ない数の文字を使用するという点で、「短い」署名とすることができる。
【0019】
図1は、本明細書において開示される方法および/またはシステムのある実施形態による、例示的な暗号化システム100を示すブロック図である。例示的な暗号システム100は、暗号化装置102および復号化装置104を備える。平文メッセージ106は、暗号化装置102の入力モジュール108で受信することができ、この暗号化装置は、秘密スカラ(単に復号化装置104が知っている)に基づいて生成される(公知のグループの一要素である)公開鍵に基づいてメッセージ106を暗号化する、ペアリングベースの暗号化装置である。一実施形態では、グループは、暗号化装置102が使用する楕円曲線から生成される一群のポイントとすることができ、これについては、以下でより詳細に論じる。平文メッセージ106は、通常、暗号化されていないメッセージであるが、暗号化装置102は、他のタイプのメッセージを暗号化することができる。したがって、メッセージ106は、二者択一的に、他の何らかの構成要素(図示せず)もしくはユーザによって、暗号化または符号化してもよい。
【0020】
暗号化装置102の出力モジュール110は、平文メッセージ106の暗号化されたバージョンを出力し、これを暗号文112とすることができる。暗号文112は、一連の理解できないテキストまたは他の何らかのデータを含んでもよく、次いで復号化装置104に送られるが、この復号化装置は、たとえば、暗号化装置102が実装されているコンピュータ・システムから離れたコンピュータ・システム上に実装することができる。暗号文112の暗号化された特性が与えられるとき、暗号化装置102と復号化装置104の間の通信リンクは安全である必要はない(たとえば、通信リンクは安全でないとしばしば考えられている)。一例として、通信リンクは、多種多様な従来型の公のプロトコルおよび/または専用プロトコルを使用して実装され、有線と無線の両方の実装形態を含む、多種多様な公衆ネットワークおよび/またはプライベートネットワークの1つとすることができる。さらに、通信リンクには、暗号文を含む媒体の手渡しまたは製品流通網の他の構成要素など、他の非コンピュータ・ネットワーク構成要素が含まれ得る。
【0021】
復号化装置104は、入力モジュール114で暗号文112を受信し、メッセージ106を暗号化するのに使用される公開鍵に対応する秘密鍵(たとえば、ならびに必要な生成装置)を知っているので、暗号文112を復号化して、元の平文メッセージ106を復元することができ、この平文メッセージは、平文メッセージ118として出力モジュール116によって出力される。一実施形態では、復号化装置104は、楕円曲線から生成されるポイントのグループ(たとえば、暗号化装置102が使用していたグループ)に基づいてメッセージを復号化する、ペアリングベースの復号化装置であり、以下でより詳細に論じる。
【0022】
一実施形態では、暗号化および復号化は、秘密に基づく例示的な暗号システム100で実行され、この秘密は、楕円曲線からの一群のポイントの要素である公開鍵を生成するのに使用されるスカラでもよく、それにより、問題に向けての解決策を決定するのが難しくなる。この秘密は複合化装置104に知られており、暗号化装置102に知られている秘密に基づいて公開鍵を生成することができる。この実施形態では、この知見により、暗号化装置102は、続いて単に復号化装置104によって復号化することのできる平文メッセージを暗号化できるようにしてもよい。暗号化装置102を含む他の構成要素は、この秘密を知らないので、暗号文を復号化することができない(たとえば、復号化は技術的に可能であるが、計算上は実現可能ではない)。同様に、一実施形態では、復号化装置104はまた、平文メッセージに基づく秘密鍵を使用してメッセージを生成してもよく、このプロセスは平文メッセージのデジタル署名と呼ばれる。この実施形態では、署名されたメッセージを、暗号化装置102など他の構成要素に伝達することができ、この構成要素は、公開鍵に基づいてデジタル署名を確認することができる。
【0023】
図2は、製品識別子を使用して、本明細書に記載の方法およびシステムのある実施形態により、ソフトウェアを検証する例示的なシステム200の図である。この例示的なシステムは、製品識別子(ID)生成装置204を含むソフトウェア・コピー生成装置202を備える。ソフトウェア・コピー生成装置202は、1つまたは複数のアプリケーション・プログラム(たとえば、ワード処理プログラム、スプレッドシート・プログラム、オペレーティング・システム、一式のプログラムなど)の完全なコピーをまとめて実装するのに必要となるファイルを含むことができるソフトウェア媒体210(たとえば、CD−ROM、DVD(デジタル多用途ディスク)など)を生成してもよい。これらのファイルは、ソース・ファイル206から受信することができ、このソース・ファイルは、ローカル・ソース(たとえば、生成装置202の内部のハード・ドライブ)、遠隔ソース(たとえば、ネットワークを介して生成装置202に結合された)、またはそれらの組合せでもよい。図2には単一の生成装置202が示してあるが、しばしば複数の生成装置が、個別かつ/または協働して動作して、ソフトウェア媒体210を生成することのできる速度を増大させる。
【0024】
製品ID生成装置204は、数字、文字、および/または他のシンボルを含んでもよい製品ID212を生成することができる。生成装置204は、本明細書に記載のペアリングベースの暗号化技法および/またはシステムを使用して、製品ID212を生成する。製品ID212は、ラベルに印刷してもよく、ソフトウェア媒体210を含むキャリヤまたはソフトウェア媒体210が中に入っている箱のいずれかに添付してもよい。あるいは、製品ID212は、オンライン・ソースを介してアプリケーション・プログラムのソフト・コピーを受けとるとき(たとえば、インターネットを介したソフトウェアのダウンロード)ユーザに提供される証明書など、電子的に利用可能にしてもよい。製品ID212は、暗号を使用して検証し、製品ID212が有効な製品IDであることを確認することなど(たとえば、そのようにしてアプリケーション・プログラムをインストールできるようにする)、複数の機能を提供することができる。さらなる例では、製品ID212は、関連する特定のソフトウェア媒体210を認証する働きをしてもよい。
【0025】
生成されたソフトウェア媒体210および関連する製品ID212を、流通網214に供給することができる。流通網214は、場合によっては1つまたは複数の「中間業者」(たとえば、卸売業者、供給業者、代理店、小売店(オンラインまたは従来型のいずれも)など)および/またはインターネットなどを介した電子配布を含む、様々な従来の流通のシステムおよび方法のうちの、1つまたは複数を代表することができる。媒体210および関連する製品ID212を配布する方式がどうであれ、媒体210および製品ID212は、通常、たとえばクライアント・コンピュータ218のユーザが購入するか(たとえば、ライセンスされ)、またはこのユーザに配布される。
【0026】
クライアント・コンピュータ218は、ソフトウェア媒体210を読み取り、アプリケーション・プログラムをクライアント・コンピュータ218にインストールする(たとえば、アプリケーション・プログラムをクライアント・コンピュータ218のハード・ディスク・ドライブまたはメモリ(図示せず)にインストールする)ことができる媒体読取り装置220を備えることができる。一実施形態では、インストール・プロセスの一部分は、(たとえば、ライセンスされたコピーを検証するために)製品ID212を入力するステップを含むことができる。この入力は、手作業入力でもよく(たとえば、ユーザがキーボードを用いて製品IDをタイプ入力する)、または代替的に自動入力でもよい(たとえば、コンピュータ218が、アプリケーション・プログラムに関連するライセンスの特定のフィールドに自動的にアクセスし、そこから製品IDを抽出する)。クライアント・コンピュータ218はまた、アプリケーション・プログラムをインストールしている間に製品ID212を検証する、製品ID検証ツール222を備えることもできる。一実施形態では、この妥当性検査は、本明細書に記載のペアリングベースの復号化の技法および/またはシステムを使用して実行することができる。製品IDが有効であると検証ツール222が判定する場合、適切な手順のアクションをとることができる(たとえば、ソフトウェア媒体210にプログラムをインストールすることにより、コンピュータ218にアプリケーションをインストールできるようになる)。しかし、製品IDが無効であると検証ツール222が判定する場合、異なる手順のアクションをとることができる(たとえば、インストール・プログラムが、インストール・プロセスを終了して、アプリケーション・プログラムがインストールされるのを防止する)。
【0027】
一実施形態では、製品ID検証ツール222はまた、場合によっては、製品ID212に基づいてソフトウェア媒体(たとえば、アプリケーション・プログラム)を認証することができる。この認証は、コンピュータ218において入力された製品ID212が、たとえば、アクセスされているアプリケーションの特定のコピーに対応することを確認する。一例として、この認証は、インストール中、または製品サポートもしくはアップグレードを要求するときなど、様々な時点において実行してもよい。あるいは、この実施形態では、この認証は、遠隔地点で実行してもよい(たとえば、クライアント・コンピュータ218のユーザが技術サポートを求めて電話するコール・センターにおいて、このユーザは、サポートを受ける前に製品ID212の提示を求められることがある)。
【0028】
一実施形態では、アプリケーション・プログラムの製造業者が製品IDの認証機能を利用しようと考える場合、アプリケーション・プログラムの各コピーについて生成装置204が生成する製品IDは、固有のものとすることができる。一例として、固有の製品IDは、互いに異なる初期の数または値を、アプリケーション・プログラムの各コピーに割り当てることによって作成することができる(たとえば、この初期値は、次いで製品IDを生成するための基礎として使用される)。アプリケーション・プログラムのコピーに関連する固有値は、場合によっては、アプリケーション・プログラムの特定のコピーの表示とともに認証記録208(たとえば、データベースまたはリスト)として製造業者によって保持される。たとえば、コピーの表示は、アプリケーション・プログラムまたはソフトウェア媒体210に埋め込まれたシリアル・ナンバーでもよく、多種多様な従来の方式のいずれかで隠してもよい。あるいは、たとえば、個々の番号それ自体は、特定のコピーに関連するシリアル・ナンバーでもよく、それにより、製品IDから初期値を抽出し、それがアプリケーション・プログラムまたはソフトウェア媒体210に埋め込まれたシリアル・ナンバーと同じであることを確認することにより、製造業者はアプリケーション・プログラムの真正性を確認することができるようになる。
【0029】
曲線について数学的なペアリングを決定する方法を決定することができ、暗号鍵として提示される要素の第1のセット(たとえば、楕円曲線上のポイント)を、曲線上の既知のポイントと比較し、暗号化目的に使用することができる。有効な暗号システムは、通常、楕円曲線からの一群のポイントなど、そのグループについての離散対数問題(DLP)が難しい(たとえば、計算するのが難しい)グループに基づいている。DLPは、グループ内で公式化することができ、グループの乗算など2進演算を伴う一群の要素である。実例として、DLPには、有限群G内の要素g、およびGの一要素である別の要素hを与えてもよく、gx=hになるような整数xを見つける。暗号化で使用するためのペアリングを生成するには、通常、楕円曲線が定義される有限体において多くの潜在的な乗算が必要になる。
【0030】
図3は、暗号化で使用するための曲線について数学的なペアリングを決定するための例示的な方法300の流れ図である。例示的な方法300は302で開始し、304で、曲線についての数学的なペアリングを決定する際に使用される複数の反転を統合する。楕円曲線上のペアリング演算は、たとえばペアリング演算をより効率的にするために、有限体において多くの潜在的な乗算を利用するので、数多くの乗算を減らすことができ、かつ/または別のペアリング演算において効率を上げることができる。
【0031】
一実施形態では、曲線についての有限体において、乗算と反転の両方(たとえば、乗法的逆元すなわち逆数を識別すること)が、ペアリング演算について実行される。反転の実行は、通常、乗算よりも計算コストが高い。たとえば、計算における反転と乗算の比は、しばしば80対1となることがあるが、それというのも、曲線のポイントで使用される座標系は、普通、アフィンから射影に変更されて、多くの反転を低減させるからである。反転の決定の実例として、ゼロでない実数xの乗法的逆元を見積もるために、数yを繰り返し2y−xy2で置換することができる。この例では、yへの変更が閾値内にあるとき、yは、xの乗法的逆元の近似値である。この例は、単に説明するためのものであり、複素数など特に他のタイプの数について、反転を決定するための他の技法があることは理解されよう。
【0032】
たとえば、例示的な方法300では、アフィン座標系で動作している間、反転を組み合せ、それらを同時に決定することにより、多数の反転を大幅に減らすことができる。一実施形態では、ペアリング計算においてアフィン座標系を使用するとき、それぞれの倍加(たとえば乗算)および追加の動作は、有限体の反転を使用して、後続の動作において評価されるラインの傾斜値を計算する。この実施形態では、たとえば、「モンゴメリー・トリック」を使用して、単一の反転および3(1−1)乗算で1つの有限体反転を置換することにより、反転を統合することができる。
【0033】
モンゴメリー・トリックの説明に役立つ実例として、要素xおよびyについて反転を決定するためには、2つの反転を決定する代わりに、積xyを決定することができ、その反転を計算することができる。この例では、次いで、乗算によってxおよびyの反転を決定することができる。すなわち、x-1=(xy)-1yおよびy-1=(xy)-1xである。このようにして、この例では、1つの反転および3つの乗算によって2つの要素xおよびyの反転を決定することができる。n個の要素について反転を決定することになる場合、単に1つの反転および3(n−1)の乗算を実行することができる。したがって、一実施形態では、ペアリング計算が複数の反転(n)を含む場合、n個の反転を統合して1つの反転にすることができる。
【0034】
一実施形態では、[a1,...,as]を一連の要素とし、その逆数[a1-1,...,as-1]を計算することにする。まず、積a1...as、その逆数(a1...as-1、1<i<sについてのその積a1i-11+1s、および単一の要素の逆数を、以下の式によって計算することにより、逆数を計算することができる。
i-1=(a1i-1i+1s)(a1s-1
この動作は、1つの反転および3(s−1)の乗算で実行することができる。すなわち、sの反転は、1つの反転および3(s−1)の乗算で置換することができる。
【0035】
一実施形態では、たとえば、積a12...asを、s−1の乗算を用いて2進木で計算することができ、反転を統合するのに使用するためにs−1の積を格納することができる。さらに、この実施形態では、逆数(a12...as-1が計算され、2(s−1)乗算を用いて同じ木に沿って後続の逆数が計算される。
【0036】
図3の例示的な方法300に戻ると、306において、曲線についての数学的なペアリングは、統合された反転を使用して右から左へと読み取ったスカラの2進表現に沿ってアフィン座標内で決定される。曲線についてTateペアリングを計算するとき、典型的なミラー・ループ・アルゴリズムが、スカラを介して左から右に(または上から下に)移動する。実例として、k>1とすることで、ミラー・アルゴリズムでの分母が消去されるものと仮定する。
【0037】
以下の例示的な実施形態および実例について、以下の表記法を利用する。p>3を素数とし、Fqを特性pの有限体とする。Eを、ワイエルシュトラス方程式を有するFqにわたって定義される楕円曲線とする。すなわちE:y^2=x^3+ax+bである。r|#E(Fq)である素数rについて、kを、rに対するEの埋込み次数とする。すなわち、kはr|q^k−1である最小の正の整数である。E上の1組のrねじれ点は、E[r]で表すことができ、1組のF_(q^i)の有理のrねじれ点は、i>0においてE(F_(q^i))[r]と表すことができる。φ_qを、E上でのq乗のフロベニウス自己準同形とする。
【0038】
さらに、以下の通り定義する。
G_1=E[r]∩ker(φ_q−[1])=E(F_q)[r]
G_2=E[r]∩ker(φ_q−[q])⊆E(F_(q^k))[r]
k>1とする。Reduced Tateペアリングはマップである。
e_r=G_1×G_2→G_3
(P,Q)f_(r,P)(Q)^((q^k−1)/r)
ここでf_(r,P)∈F_q(E)は、除数r(P)−r(O)を有する関数である。E上の2つのポイントRおよびSを通るライン1_(R,S)で与えられるF_q(E)で関数を表す。R=Sの場合、このラインはRを通過する曲線の接線で与えられる。
【0039】
以下では、(前述の表記法を使用して)Tateペアリングを計算するための典型的なミラー・ループの一実施形態が示してある。
入力:P∈G1、Q∈G2、r=(rm-1,...,r02
出力:er(P,Q)=fr,P(Q)(q^k-1)/r
1:R←P,f←1
2:for(i←m−2;i≧0;i−−)do
3:f←f2・lR,R(Q)
4:R←[2]R
5:if(ri=1)then
6:f←f・lR,R(Q)
7:R←R+P
8:end if
9:end for
10:f←f(q^k-1)/r
11:return f
【0040】
この実例では、前述のアルゴリズムにおけるライン3および4は、ともに普通は倍加動作と呼ばれ、ライン6および7は普通は追加動作と呼ばれる。
【0041】
例示的な方法300の動作306の一実施形態では、ミラー・ループ・アルゴリズムを修正することができ、右から左へと(または下から上に)2進表現が読み取られる。以下は、右から左への(または下から上への)実例である。
入力:P∈G1,Q∈G2,r=(rm-1,...,r02
出力:er(P,Q)=fr,P(Q)(q^k-1)/r
1:R←P,fR←1
2:V←O,fV←1
3:for(i←0;i≦m−1;i++)do
4:if(ri=1)then
5:fV←fV・fR・lV,R(Q)
6:V←V+R
7:end if
8:fR←fR2・IR,R(Q)
9:R←[2]R
10:end for
11:f←fV(q^k-1)/r
12:return f
【0042】
この実例では、倍加動作がライン8および9にあり、追加動作がライン5および6にある。前述のアルゴリズムは、m回の倍加動作およびh回の追加動作を実行する。この例では、ループはm回実行することができるが、単にm−1回の倍加動作が使用され、最後の1つは計算に影響を及ぼさないことがある。
【0043】
さらに、この実施形態では、「ボトムアップ」手法を使用するとき、(上記ボトムアップ・アルゴリズムにおいて)ライン5および6で追加動作を後回しにすることができる。ここで、たとえば、関連する関数値および対応する点(fR,R)を、(たとえば、データベース内の)リストLに格納することができ、最終関数値を後で計算することができる。実例として、以下のアルゴリズムにより、値および点を格納することによって(以下のアルゴリズムのライン5を参照)、追加動作を後回しにするボトムアップ手法がもたらされ、最終関数値の計算が後に実行される(ライン10を参照)。
入力:P∈G1、Q∈G2、r=(rm-1,...,r02
出力:er(P,Q)=fr,P(Q)(q^k-1)/r
1:R←P,fR←1
2:L←[]
3:For(i←0;i≦m−1;i++)do
4:if(ri=1)then
5:Append(fR,R)to L
6:end if
7:fR←fR2・lR,R(Q)
8:R←[2]R
9:End for
10:L内のペアからfR,P(Q)を計算する。
11:f←f(q^k-1)/r
12:return f
この例では、この手法は、計算を遅らせることにより、F_(q^k)でのh−1回の乗算と同等であるコストを節約することが可能になるので、現行のトップダウン・アルゴリズムよりも効率的にすることができる。
【0044】
一実施形態では、統合された反転を使用して、前述のアルゴリズムのライン10、「L内のペアからfr、P(Q)を計算する」を2進木に沿って実行することもできる。この実施形態において、2進木の各層では、統合された反転の技法を適用することができる。このようにして、たとえば前述の通り、曲線について数学的なペアリングを計算するとき、[log(h)]の反転および3(h−1−[log(h)])の乗算の代わりに(h−1)回の反転を使用することができる。したがって、反転の数は劇的に減少するが、わずかな数の乗算が加えられ、これらの計算コストは安価である。
【0045】
図3の例示的な方法300は、曲線についての数学的ペアリングを計算して、308で終了する。
【0046】
図4は、本明細書に記載の方法のうちの1つまたは複数の方法の各部分の実装の一実施形態400を示す流れ図である。統合された複数の反転を使用して右から左へと読み取ったスカラの2進表現に沿って、アフィン座標において曲線についての数学的なペアリングを決定するステップは、402において、右から左へとスカラの2進表現を読み取るステップを含むことができる。前述の通り、たとえば、曲線ポイントの座標がアフィン空間にあるとき、スカラの2進表現を右から左へと読み取ることができる。
【0047】
404において、曲線ポイントのスカラ倍数を計算することにより、曲線ポイントの倍数が決定され、たとえば、このスカラ倍数は、アフィン空間での曲線ポイントのm倍の和である。すなわち、たとえば、ボトムアップ手法アルゴリズムの乗算動作を実行することができ、複数の曲線ポイントの倍数を決定することができる。この動作は、たとえば、しばしば倍加動作と呼ばれ、(i←0;i≦m−1;i++)の場合、(前述の表記法を使用して)fR←fR2・lR,R(Q)およびR←[2]R・・・を実行する。特に、この実施形態では、たとえば座標を射影空間に切り替えて反転の数を減らす、現在普通に使用されている技法とは異なり、アフィン空間内の座標上で乗算が実行される。
【0048】
406において、有限体について、曲線ポイントの追加の反転を決定することができる。すなわち、たとえば、右から左へとスカラを読み取りながら、スカラの2進表現に応じて曲線ポイントが追加される。この例では、曲線ポイントを追加するために、有限体において反転が決定される。一例として、反転は、しばしば乗法的逆元または逆数と呼ばれる。前述の通り、たとえば、反転が統合されて、追加プロセスにおいてそれぞれの動作について単一の反転になる。このようにして、単に、それぞれのレベルについて1つの反転を使用して、アルゴリズムのペアリング部分の2進木表現でのそれぞれのレベルで複数の反転が組み合わされる。
【0049】
408において、たとえば、ラインの関数の傾斜値として、統合された反転の出力が決定され、このラインの関数は、その出力された傾斜値が更新される。たとえば、有限体にわたる曲線における要素(たとえば曲線ポイント)についてペアリングを計算するとき、ラインの関数を評価して、ペアリングを計算し、異なるグループ内で新規の要素などになる。したがって、この例では、たとえば、2進木表現のそれぞれのレベルにおいて、ラインの関数についての傾斜値として、統合された反転出力が使用され、このラインは、傾斜値で評価されてペアリングを決定する。
【0050】
図5は、本明細書において記載される技法および/またはシステムのうちの1つまたは複数の一実装形態の一実施形態500を示す流れ図である。この実施形態500では、ユーザがその識別情報を認証するために提示するような電子署名550から、502でのペアリング計算用の入力として2つの要素が受信される。さらに、既知のグループ552から2つの要素(たとえば、セキュリティ用の共有秘密暗号鍵)がペアリング計算用の入力として提供される。この実施形態では、署名550からの要素についてペアリングが計算されることになり、ペアリングは、グループ552からの要素について計算されることになる。
【0051】
504において、前述の通り、グループの要素として提供された曲線ポイントの倍数が決定される。この実施形態500では、右から左へと読み取ったスカラ554の2進表現を使用して、曲線ポイントの倍数を決定する。506において、この倍数から反転が統合されて、単一の反転になり、遠隔データベースまたはローカルデータベースなどに格納される556。一実施形態では、2進表現554において右から左へと読み取ったスカラは、公開鍵などの暗号鍵内に含まれてもよい。
【0052】
一実施形態では、右から左へと読み取ったスカラの2進表現に沿ってアフィン座標内において曲線についてのペアリングを決定するステップは、508において複数のプロセッサ上で並列処理することができる。たとえば、コンピュータは普通、マルチコア・プロセッサを有し、これにより、2つ以上のコア上で計算を並列処理して、計算を迅速化し、資源を解放することが可能になる。一実施形態では、この並列処理は、2つ以上のプロセッサ上で、たとえば同時に曲線ポイントの倍数を決定するために、2つ以上のインスタンスを含むことができる。
【0053】
510において、統合された反転についての出力が、たとえば傾斜値として得られる。前述の通り、ペアリング計算における追加動作の2進木表現でのそれぞれのレベルで、統合された反転を使用してもよい。さらに、一実施形態では、格納済みの統合された反転556は、アフィン空間での1組の座標の後続のペアリング計算で再使用してもよい。一例として、統合された反転は、遠隔データベースまたはローカル・データベースから得て、再使用することができる。このようにして、反転の統合動作を減らすことにより、多くの計算を減らすことができる。
【0054】
一実施形態では、統合された反転を決定する際に使用された第1の曲線ポイントが、統合された反転が再使用される第2の曲線ポイントと同じ要素であるとき、統合された反転を再使用してもよい。すなわち、ペアリング計算における一要素として提供された曲線ポイントを使用して、統合された反転を決定することができる。この実施形態では、要素の第1のセットが計算された後に要素の第2のセットが提示され、第2のセットが第1のセットからの要素と同じ要素を含む場合、たとえば要素の第2のセットについてペアリングを計算する際に、この統合された反転を再使用してもよい。
【0055】
512において、傾斜値として統合された反転の出力を使用して、ラインの関数が更新される。一実施形態では、統合された反転の出力を使用して、ペアリングの計算に使用されるラインの関数内の係数を更新してもよい。514において、たとえば、更新されたラインの関数を評価し、その結果、暗号化された署名の許可要素558、および秘密要素560についての数学的なペアリングを得ることにより、要素についてペアリングを決定することができる。
【0056】
516において、それぞれのペアリング558、560を比較して、たとえば、提供される電子署名の真正性を判定するために、それらが等しいのかどうか判定することができる。この実施形態500では、518において各要素が等しくない(または、各要素が同じグループからではない)と分かると、提供された署名は520において認証されない。518において各要素が等しい(また、同じグループからである)と分かると、提供された署名は522において認証される。このようにして、たとえば、要素についてのペアリングの計算を暗号化目的に使用することができ、また本明細書に記載の1つまたは複数の技法を使用して、より効率的で速いペアリング計算を可能にしてもよい。
【0057】
たとえば、暗号化目的で提供された要素を比較するために、曲線について数学的なペアリングを決定するための1つまたは複数のシステムを考案してもよい。暗号化で使用するためのペアリングの計算は、楕円曲線が定義される有限体において多くの潜在的な乗算および反転を必要とすることがあるので、本明細書に記載の1つまたは複数のシステムを考案して、これらのペアリングを計算するのに使用される時間および資源を減らすことができる。図6は、暗号化で使用するための曲線について数学的なペアリングを決定するための例示的なシステム600を示す構成要素のブロック図である。
【0058】
例示的なシステム600は、反転統合構成要素602を備え、これは、曲線についての数学的なペアリングを決定するために使用される反転を統合する。反転統合構成要素602は、1つまたは複数のプログラム化されたプロセッサ650と動作可能なように結合されており、このプロセッサは1つまたは複数の計算装置(computing device)にあり、統合された反転656のうちの1つまたは複数を格納することができるデータ格納構成要素654を有する。さらに、例示的なシステム600では、数学的なペアリング決定構成要素604が、データ格納構成要素654と動作可能なように結合されており、そこに格納されている統合された反転656を使用して右から左へと読み取ったスカラの2進表現に沿ったアフィン座標での曲線についての数学的なペアリングを決定することができる。
【0059】
一実施形態では、反転統合構成要素602、ペアリング決定構成要素604、およびデータ格納構成要素654は、1つまたは複数のプロセッサ650を備える計算装置652など、同じ計算装置内に備えてもよい。あるいは、システムの構成要素は、様々な装置上またはその何らかの組合せに配置してもよい。
【0060】
一実施形態では、反転統合構成要素602は、数学的なペアリングを決定する際に使用するために、複数の反転を単一の反転に統合するように構成することができる。たとえば、曲線ポイントの倍数の2進表現のレベルについてのそれぞれの反転を、反転統合構成要素602によって組み合わせて、そのレベルについての単一の反転にすることができる。この例では、組み合わされた(統合された反転、たとえば656)は、データ格納構成要素654に格納することができ、ペアリングを計算するためにペアリング決定構成要素604によって使用可能である。
【0061】
図7は、本明細書に記載の1つまたは複数のシステムの例示的な一実装形態の一実施形態700を示す構成要素のブロック図である。図1および図2に示したような(たとえば、104、222)暗号化システム702は、たとえば楕円曲線ベースの決定装置750上にペアリングを含んでもよく、この装置は、本明細書に記載のシステムの1つまたは複数の実装形態を利用する。さらに、暗号化システム702は、(たとえば、曲線を知ることにより)公知であるグループを含むことができ、このグループは、(たとえば、認証、セキュリティ、暗号化などのために)暗号システムを利用する。
【0062】
この例示的な実施形態700では、暗号化認証を使用する入力文書を読み取ることのできる構成要素などの入力構成要素704は、暗号化要素708および公開鍵706を含む文書754を受信する。一例として、文書754は、(たとえば、読むために)復号化装置に送られる暗号化された文書でもよく、暗号化要素708は、曲線上のポイント(たとえば、文書が真正である場合にグループに含まれるグループ要素)であり、スカラは、ペアリングの計算に使用される。公開鍵は通常、曲線上のポイントであるが、秘密鍵はスカラである。
【0063】
この実施形態で700では、楕円曲線ベースの決定装置750上でのペアリングは、送られてきた暗号化要素708、および秘密鍵710からの要素についてペアリングを決定して、たとえば、送られてきた文書が真正かどうか判定することができる。すなわち、文書が真正である場合、たとえば、公開鍵706からスカラを使用してそれぞれについてペアリングが計算されるとき、暗号化要素708は、秘密鍵710からの要素と同じ要素にマッチすることになる。このようにして、暗号化システムは、たとえば、閲覧用に文書754を復号化するために、文書754についての認証752を出力することができる。
【0064】
図8は、本明細書に記載の1つまたは複数のシステムの一実装形態の別の例示的な一実施形態800を示す構成要素のブロック図である。この実施形態800では、数学的なペアリング決定構成要素504は、右から左へと読み取ったスカラの2進表現に沿ってアフィン座標内で曲線ポイント850の倍数について追加の関係の決定を並列化することができる複数のプロセッサ802a〜802nと、動作可能なように結合されている。すなわち、たとえば、ペアリング決定の様々な部分(たとえば、追加動作)を、いくつかのプロセッサ上で同時に実行して、ペアリング852を計算するための総合的な時間を減らすことができる。
【0065】
さらに、例示的な実施形態800では、数学的なペアリング決定構成要素504は、統合された複数の反転を決定する際に使用された第1の曲線ポイントが、統合された反転が再使用される第2の曲線ポイントと同じ要素である場合などに、統合された複数の反転656を再使用するように構成することができる。この実施形態では、反転再使用決定構成要素804は、第1の曲線ポイントの格納されたバージョンと850において受信された第2の曲線ポイントとを比較することなどにより、第2の曲線ポイントが第1の曲線ポイントと同じ要素かどうか判定することができる。さらに、反転再使用決定構成要素804は、データ格納構成要素654から、第1の曲線ポイントに対応する統合された反転656を取り出すことができる。このようにして、たとえば、新規の統合された反転を計算する代わりに、取り出された反転656をペアリング決定構成要素504が再使用することができる。
【0066】
さらに他の実施形態では、本明細書において提示した技法のうちの1つまたは複数を実施するように構成されたプロセッサ実行可能な命令を含む、コンピュータ読取り可能な媒体を必要とする。このようにして考案することのできる例示的なコンピュータ読取り可能な媒体が図9に示してあるが、実装形態900は、コンピュータ読取り可能な媒体908(たとえば、CD−R、DVD−R、またはハード・ディスク・ドライブのプラッタ)を含み、これらの媒体上に、コンピュータ読取り可能なデータ906が符号化される。次に、コンピュータ読取り可能なデータ906は、本明細書において説明する原理のうちの1つまたは複数に従って動作するように構成された、1組のコンピュータ命令904を含む。こうした一実施形態902では、プロセッサ実行可能な命令904は、たとえば、図3の例示的な方法300などの方法を実行するように構成してもよい。こうした他の一実施形態では、プロセッサ実行可能な命令904は、たとえば、図6の例示的なシステム600などのシステムを実装するように構成してもよい。本明細書に提示した技法に従って動作するように構成された、こうした多くのコンピュータ読取り可能な媒体が、当業者によって考案することができる。
【0067】
構造上の特徴および/または方法論的な作用に特有の用語で、主題について述べてきたが、添付の特許請求の範囲で定義される主題は、必ずしも前述の具体的な特徴または作用を限定するものではないことを理解されたい。むしろ、前述の具体的な特徴および作用は、特許請求の範囲を実施する例示的な形態として開示されている。
【0068】
本出願で使用されているように、用語「構成要素」、「モジュール」、「システム」、「インターフェース」などは、全体として、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行時のソフトウェアのいずれかのコンピュータ関連の実体を指すものである。たとえば、構成要素は、それだけには限定されないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータである。実例として、制御装置上で実行されているアプリケーションおよび制御装置はともに、構成要素である。1つまたは複数の構成要素は、プロセスおよび/または実行のスレッド内に存在してもよく、また構成要素は、1つのコンピュータ上に配置してもよく、かつ/または2つ以上のコンピュータの間に分散してもよい。
【0069】
さらに、特許請求される主題は、ソフトウェア、ファームウェア、もしくはそれらの任意の組合せを生成して、開示された主題をコンピュータが実施するように制御するための標準のプログラミングおよび/またはエンジニアリング技法を使用する方法、装置、または製品として実施してもよい。本明細書で使用される用語「製品」は、任意のコンピュータ読取り可能な装置、キャリヤ、または媒体からアクセス可能なコンピュータ・プログラムを包含するものである。もちろん、特許請求される主題の精神または範囲から逸脱することなく、この構成に対して多くの修正形態を実施してもよいことが、当業者なら理解されよう。
【0070】
図10および以下の説明により、本明細書に記載の規定のうちの1つまたは複数での実施形態を実施するための、適切なコンピューティング環境の簡潔で全般的な説明が示される。図10の動作環境は、適切な動作環境の一例に過ぎす、この動作環境の使用または機能の範囲に関して、いかなる限定をも示唆するものではない。計算装置の例には、それだけには限らないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ装置、移動装置(移動電話、携帯型情報端末(PDA)、メディア・プレーヤなど)、マルチプロセッサ・システム、家庭用電化製品、ミニ・コンピュータ、メインフレーム・コンピュータ、上記のシステムまたは装置などのうち任意のものを含む分散コンピューティング環境が含まれる。
【0071】
必要とされてはいないが、各実施形態は、1つまたは複数の計算装置によって実行される「コンピュータ読取り可能な命令」との一般的な文脈で説明してある。コンピュータ読取り可能な命令は、(以下で説明される)コンピュータ読取り可能な媒体を介して分散してもよい。コンピュータ読取り可能な命令は、機能、オブジェクト、API(Application Programming Interface)、データ構造など、特定のタスクを実行し、または特定の抽象データ型を実装するプログラム・モジュールとして実施してもよい。通常、コンピュータ読取り可能な命令の機能は、様々な環境において要望される通り、組み合わせても、または分散してもよい。
【0072】
図10には、本明細書において提供された1つまたは複数の実施形態を実施するように構成された計算装置1012を備える、システム1000の一例が示してある。一構成において、計算装置1012は、少なくとも1つの処理ユニット1016およびメモリ1018を備える。計算装置の正確な構成およびタイプに応じて、メモリ1018は、揮発性(たとえば、RAMなど)、不揮発性(たとえば、ROM、フラッシュ・メモリなど)またはこれら2つの何らかの組合せでもよい。この構成が、図10に破線1014で示してある。
【0073】
他の実施形態では、装置1012は、追加の特徴および/または機能を含んでもよい。たとえば、装置1012はまた、磁気記憶装置、光記憶装置などを含むが、ただしそれだけに限定されない、(たとえば、取外し可能および/または取外し不可能な)追加の記憶装置を備えてもよい。こうした追加の記憶装置が、図10に記憶装置1020で示してある。一実施形態では、本明細書において提供される1つまたは複数の実施形態を実施するためのコンピュータ読取り可能な命令は、記憶装置1020内に存在してもよい。記憶装置1020はまた、他のコンピュータ読取り可能な命令を記憶して、オペレーティング・システム、アプリケーション・プログラムなどを実施してもよい。コンピュータ読取り可能な命令は、たとえば、処理ユニット1016が実行するように、メモリ1018内にロードしてもよい。
【0074】
本明細書では、用語「コンピュータ読取り可能な媒体」は、コンピュータ記憶媒体を含む。コンピュータ記憶媒体には、コンピュータ読取り可能な命令、または他のデータなど、情報を記憶するための任意の方法または技術で実装された、揮発性および不揮発性、取外し可能および取外し不可能な媒体が含まれる。メモリ1018および記憶装置1020は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュ・メモリ、もしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置、または、所望の情報を記憶するのに使用することができ、装置1012からアクセスすることのできる任意の他の媒体が含まれる。任意のこうしたコンピュータ記憶媒体は、装置1012の一部分であってもよい。
【0075】
装置1012はまた、装置1012が他の装置と通信できるようにする、(1つまたは複数の)通信接続1026を含んでもよい。(1つまたは複数の)通信接続1026には、それだけには限定されないが、計算装置1012を他の計算装置に接続するための、モデム、NIC(Network Interface Card)、集積化されたネットワーク・インターフェース、無線周波数の送信機/受信機、赤外線ポート、USB接続、または他のインターフェースが含まれ得る。(1つまたは複数の)通信接続1026には、有線接続または無線接続が含まれ得る。(1つまたは複数の)通信接続1026は、通信媒体を送信および/または受信してもよい。
【0076】
用語「コンピュータ読取り可能な媒体」には、通信媒体が含まれ得る。通信媒体は通常、搬送波もしくは他の搬送機構など、「変調されたデータ信号」内の、コンピュータ読取り可能な命令または他のデータを取り入れ、任意の情報送達媒体を含む。用語「変調データ信号」は、信号内の情報を符号化するように設定または変更された、その特性のうちの1つまたは複数を有する信号を含んでもよい。
【0077】
装置1012には、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、赤外線カメラ、ビデオ入力装置、および/または他の任意の入力装置など、(1つまたは複数の)入力装置1024が含まれ得る。1つまたは複数の表示装置、スピーカ、プリンタ、および/または他の任意の出力装置など、(1つまたは複数の)出力装置1022はまた、装置1012内に含まれてもよい。(1つまたは複数の)入力装置1024、および、(1つまたは複数の)出力装置1022は、有線接続、無線接続、またはその任意の組合せを介して、装置1012に接続してもよい。一実施形態では、他の計算装置からの入力装置または出力装置は、計算装置1012用の(1つまたは複数の)入力装置1024または(1つまたは複数の)出力装置1022として使用してもよい。
【0078】
計算装置1012の構成部品は、バスなどの様々な相互接続部によって接続されてもよい。こうした相互接続部には、PCI Expressなどの周辺装置相互接続(PCI)、USB(Universal Serial Bus)、ファイアワイヤ(IEEE 1394)、光バス構造などが含まれ得る。他の実施形態では、計算装置1012の構成部品は、ネットワークによって相互接続されてもよい。たとえば、メモリ1018は、ネットワークによって相互接続された様々な物理的な位置に配置された、複数の物理メモリ・ユニットから構成されてもよい。
【0079】
コンピュータ読取り可能な命令を格納するのに利用される記憶装置は、ネットワークを介して分散してもよいことが、当業者には理解されよう。たとえば、ネットワーク1028を介してアクセス可能な計算装置1030は、コンピュータ読取り可能な命令を記憶して、本明細書において提供される1つまたは複数の実施形態を実施してもよい。計算装置1012は、計算装置1030にアクセスし、実行のためのコンピュータ読取り可能な命令の一部分またはそのすべてをダウンロードしてもよい。あるいは、計算装置1012は、必要に応じて、コンピュータ読取り可能な命令の各部分をダウンロードしてもよく、または、命令によっては計算装置1012で実行してもよく、命令によっては計算装置1030で実行してもよい。
【0080】
実施形態の様々な動作が、本明細書で提供される。一実施形態では、記述された動作のうちの1つまたは複数が、1つまたは複数のコンピュータ読取り可能な媒体上に記憶されたコンピュータ読取り可能な命令を構成し、この命令は、計算装置によって実行される場合、計算装置が、記述された動作を実行するようにする。各動作のいくつかまたはそのすべてが記述される順序は、これらの動作が必然的に順序に依存することを意味するものと解釈すべきではない。代替の順序付けが、この記述の恩恵をこうむる当業者には理解されよう。さらに、本明細書で提供される各実施形態においては、必ずしもすべての動作が存在しなくてもよいことが理解されよう。
【0081】
さらに、用語「例示的」は、本明細書では、代表例、具体例、または例証としての機能を果たすことを意味するために使用される。本明細書で「例示的」と記述されたいかなる態様または設計も、必ずしも、他の態様または設計に勝って有利であると解釈されるものではない。むしろ、「例示的」という用語を使用することは、具体的に概念を提供するものである。本出願で使用されているように、用語「または」は、排他的な「または」ではなく、包含的な「または」を意味するものである。すなわち、別段の指定がない限り、または文脈から明らかでない限り、「XはAまたはBを利用する」は、自然な包含的順列のいずれをも意味するものである。すなわち、XがAを利用する、XがBを利用する、またはXがAとBの両方を利用する場合、「XがAまたはBを利用する」は、前述の場合のいずれの下でも満たされる。さらに、本出願および添付の特許請求の範囲で使用する冠詞「a」および「an」は、一般に、別段の指定がない限り、または単数形を指すと文脈から明らかでない限り、「1つまたは複数」を意味するものと解釈してもよい。
【0082】
また、本開示は、1つまたは複数の実装形態に関して図示し、説明してきたが、この明細書および添付図面を読み、理解することに基づいて、同等な変更形態および修正形態が、当業者には思いつくことになる。本開示は、こうしたすべての修正形態および変更形態を含み、以下の特許請求の範囲に記載の範囲によってのみ限定される。特に、上記構成要素(たとえば、要素、リソースなど)によって実行される様々な機能に関しては、本明細書で示した本開示の例示的な実装形態の機能を実行する開示された構造とは構造的に同等ではないが、こうした構成要素を記述するのに使用される用語は、別段の定めがない限り、記述された構成要素(たとえば、すなわち機能的に同等の)の指定された機能を実行する任意の構成要素に対応するものである。さらに、本開示の特定の特徴が、いくつかの実装形態のうちのほんの1つに関して開示されてきたが、こうした特徴は、必要に応じて、また任意の所与のまたは特定の用途に対して所望され有利になるよう、他の実装形態の1つまたは複数の他の特徴と組み合わせてもよい。さらに、用語「includes」、「having」、「has」、「with」、またはそれらの変化形が、詳細な説明または特許請求の範囲のいずれかにおいて使用される限りにおいて、こうした用語は、用語「comprising」と同様にして包含的であることを意図している。

【特許請求の範囲】
【請求項1】
暗号化で使用する曲線について数学的なペアリングを決定するためのコンピュータ・ベースの方法であって、
1つまたは複数のマイクロプロセッサを使用して、前記曲線について前記数学的なペアリングを決定する際に使用される複数の反転を統合するステップと、
前記統合された複数の反転を使用して、右から左へと読み取ったスカラの2進表現に沿ってアフィン座標内で前記曲線についての前記数学的なペアリングを決定するステップと
を含むことを特徴とする方法。
【請求項2】
複数の反転を統合するステップが、数学的なペアリングを決定するために、前記複数の反転を統合して単一の反転にするステップを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記曲線について前記数学的なペアリングを決定するとき、1つまたは複数のペアリング計算のために、前記統合された複数の反転を再使用するステップを含むことを特徴とする請求項1に記載の方法。
【請求項4】
複数のプロセッサ上で右から左へと読み取ったスカラの2進表現に沿ってアフィン座標内で、前記曲線についての2つ以上の数学的なペアリングの決定を並列化するステップを含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記統合された反転の出力が、前記ペアリングの決定に際してラインの関数を更新するための傾斜値を含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記ペアリングの決定に際してラインの関数を更新するための1つまたは複数の傾斜値として、前記統合された複数の反転を使用するステップを含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記統合された反転の出力を使用して、前記数学的なペアリングを決定するのに使用されるラインの係数を更新するステップを含むことを特徴とする請求項1に記載の方法。
【請求項8】
右から左へと前記曲線についての前記スカラの2進表現を読み取るステップを含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記曲線ポイントが、暗号化用途のために使用されるグループの要素を含むことを特徴とする請求項1に記載の方法。
【請求項10】
前記統合された複数の反転を使用して、右から左へと読み取ったスカラの2進表現に沿ってアフィン座標内で前記曲線についての前記数学的なペアリングを決定するステップが、
右から左へと読み取った前記スカラの2進表現を使用して、スカラによって曲線ポイントの倍数を決定するステップと、
追加の統合の反転を決定するステップと、
前記統合された反転の出力を使用して、前記数学的なペアリングを決定するのに使用されるラインの関数を更新するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項11】
暗号化で使用する曲線について数学的なペアリングを決定するためのシステムであって、
1つまたは複数の計算装置内に配置され、前記曲線についての前記数学的なペアリングを決定する際に使用される複数の反転を統合するように構成された1つまたは複数のプログラム化されたプロセッサと動作可能なように結合され、前記統合された反転のうちの1つまたは複数を格納するように構成されたデータ格納構成要素と動作可能なように結合された反転統合構成要素と、
前記データ格納構成要素と動作可能なように結合され、前記統合された複数の反転を使用して右から左へと読み取ったスカラの2進表現に沿ってアフィン座標において前記曲線についての前記数学的なペアリングを決定するように構成された数学的なペアリング決定構成要素と
を備えることを特徴とするシステム。
【請求項12】
少なくとも2つの要素を受信するように構成された入力受信構成要素と、
前記スカラを含む暗号鍵と
を備える暗号化システムに含まれ、
前記受信された要素についての楕円曲線上での第1の数学的なペアリングの結果と、前記楕円曲線上の少なくとも2つのポイントについての第2の数学的なペアリングの結果とを、前記スカラを使用して比較するように構成されたことを特徴とする請求項11に記載のシステム。
【請求項13】
前記反転統合構成要素が、前記数学的なペアリングを決定するために前記複数の反転を、前記曲線上の2つのポイントについて前記数学的なペアリングを決定する際に使用するための単一の反転に統合するように構成されたことを特徴とする請求項11に記載のシステム。
【請求項14】
前記数学的なペアリング決定構成要素が、右から左へと読み取ったスカラの2進表現に沿ってアフィン座標において前記曲線ポイントの倍数について追加の関係の決定を並列化するように構成された複数のプロセッサと、動作可能なように結合されていることを特徴とする請求項11に記載のシステム。
【請求項15】
前記数学的なペアリング決定構成要素は、前記統合された複数の反転を決定する際に使用された第1の曲線ポイントが、前記統合された反転が再使用される第2の曲線ポイントと同じ要素である場合に、前記統合された複数の反転を再使用するように構成されることを特徴とする請求項11に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公表番号】特表2013−517527(P2013−517527A)
【公表日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2012−548954(P2012−548954)
【出願日】平成22年12月31日(2010.12.31)
【国際出願番号】PCT/US2010/062656
【国際公開番号】WO2011/087891
【国際公開日】平成23年7月21日(2011.7.21)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】