IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-28
(45)【発行日】2024-01-12
(54)【発明の名称】暗号計算スカラ乗算実施命令
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240104BHJP
   G06F 9/30 20180101ALI20240104BHJP
   G06F 9/302 20180101ALI20240104BHJP
   G06F 7/72 20060101ALI20240104BHJP
【FI】
G09C1/00 650A
G06F9/30 350A
G06F9/302 A
G06F7/72
【請求項の数】 23
(21)【出願番号】P 2021538235
(86)(22)【出願日】2020-02-13
(65)【公表番号】
(43)【公表日】2022-03-30
(86)【国際出願番号】 EP2020053743
(87)【国際公開番号】W WO2020165335
(87)【国際公開日】2020-08-20
【審査請求日】2022-07-25
(31)【優先権主張番号】16/276,689
(32)【優先日】2019-02-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】シュヴァルツ、エリック、マーク
(72)【発明者】
【氏名】ブラッドベリー、ジョナサン
(72)【発明者】
【氏名】マレイ、エドワード、トーマス
(72)【発明者】
【氏名】ジャコビ、クリスチャン
【審査官】金沢 史明
(56)【参考文献】
【文献】米国特許出願公開第2018/0062843(US,A1)
【文献】米国特許出願公開第2018/0227115(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境内で処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法は、
命令を取得することであって、前記命令は単一のアーキテクトされた命令であり、前記単一のアーキテクトされた命令は該単一のアーキテクトされた命令によってサポートされる複数の関数コードのうちの一の関数コードを指定し、前記複数の関数コードは該単一のアーキテクチャによってサポートされる複数のスカラ乗算関数に対応する、前記取得することと、
前記命令を実行することであって、前記実行することは、
前記関数コードに基づいて、実施される前記命令によってサポートされる前記複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することと、
実施される前記一のスカラ乗算関数用の入力を取得することであって、前記入力は少なくとも1つのソース成分およびスカラ値を含む、前記取得することと、
前記入力を用いて前記一のスカラ乗算関数を実施して、暗号演算で使用される出力を与えることと
を含む、前記実行することと
を含む、コンピュータ実装方法。
【請求項2】
前記一のスカラ乗算関数を前記実施することが、楕円曲線上の点のスカラ乗算を実施することを含み、前記点が前記少なくとも1つのソース成分によって指定される、請求項1に記載の方法。
【請求項3】
前記楕円曲線上の前記点が、前記少なくとも1つのソース成分の第1のソース成分および前記少なくとも1つのソース成分の第2のソース成分によって指定され、前記第1のソース成分および前記第2のソース成分が前記命令に関連付けられたレジスタを使用して配置されたパラメータ・ブロックを介して前記命令に入力される、請求項2に記載の方法。
【請求項4】
前記一のスカラ乗算関数を前記実施することが、前記楕円曲線に沿って一連の点の加算および点の2倍算を実施することを含む、請求項2または3に記載の方法。
【請求項5】
コンピューティング環境内で処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法は、
命令を取得することであって、前記命令は単一のアーキテクトされた命令である、前記取得することと、
前記命令を実行することであって、前記実行することは、
実施される前記命令によってサポートされる複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することと、
実施される前記一のスカラ乗算関数用の入力を取得することであって、前記入力は少なくとも1つのソース成分およびスカラ値を含む、前記取得することと、
前記入力を用いて前記一のスカラ乗算関数を実施して、暗号演算で使用される出力を与えることと
を含む、前記実行することと
を含み、
前記一のスカラ乗算関数を前記実施することが、以下の式を使用することを含む、コンピュータ実装方法:(Xr,Yr)<=d*(Xs,Ys)、ただしXsおよびYsは前記少なくとも1つのソース成分であり、楕円曲線上の点の座標であり、dは前記スカラ値であり、*はスカラ乗算であり、XrおよびYrは前記一のスカラ乗算関数の結果の座標であり、前記結果の座標は前記出力である。
【請求項6】
前記dが、一のビットから別のビットへスキャンされる複数のビットを含む、請求項5に記載の方法。
【請求項7】
前記一のビットがdの最上位ビットであり、前記別のビットがdの最下位ビットである、請求項6に記載の方法。
【請求項8】
前記一のスカラ乗算関数を前記実施することが、選択値に等しいdの前記複数のビットのうちの1つのビットについて、点の加算が生じ、それぞれのビットがスキャンされた後、点の2倍算が生じることをさらに含む、請求項6または7に記載の方法。
【請求項9】
前記複数のスカラ乗算関数が、複数の素数についての複数の楕円曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む、請求項1ないし8のいずれかに記載の方法。
【請求項10】
前記複数のスカラ乗算関数が、複数の素数についての複数のエドワーズ曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む、請求項1ないし9のいずれかに記載の方法。
【請求項11】
コンピューティング環境内で処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリに結合されるプロセッサと
を備え、前記コンピュータ・システムは、
命令を取得することであって、前記命令は単一のアーキテクトされた命令であり、前記単一のアーキテクトされた命令は該単一のアーキテクトされた命令によってサポートされる複数の関数コードのうちの一の関数コードを指定し、前記複数の関数コードは該単一のアーキテクチャによってサポートされる複数のスカラ乗算関数に対応する、前記取得することと、
前記命令を実行することであって、前記実行することは、
前記関数コードに基づいて、実施される前記命令によってサポートされる前記複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することと、
実施される前記一のスカラ乗算関数用の入力を取得することであって、前記入力は少なくとも1つのソース成分およびスカラ値を含む、前記取得することと、
前記入力を用いて前記一のスカラ乗算関数を実施して、暗号演算で使用される出力を与えることと
を含む、前記実行することと
を含む方法を実施するように構成される、コンピュータ・システム。
【請求項12】
前記一のスカラ乗算関数を前記実施することが、楕円曲線上の点のスカラ乗算を実施することを含み、前記点が前記少なくとも1つのソース成分によって指定される、請求項11に記載のコンピュータ・システム。
【請求項13】
前記楕円曲線上の前記点が、前記少なくとも1つのソース成分の第1のソース成分および前記少なくとも1つのソース成分の第2のソース成分によって指定され、前記第1のソース成分および前記第2のソース成分が前記命令に関連付けられたレジスタを使用して配置されたパラメータ・ブロックを介して前記命令に入力される、請求項12に記載のコンピュータ・システム。
【請求項14】
前記一のスカラ乗算関数を前記実施することが、前記楕円曲線に沿って一連の点の加算および点の2倍算を実施することを含む、請求項12または13に記載のコンピュータ・システム。
【請求項15】
コンピューティング環境内で処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリに結合されるプロセッサと
を備え、前記コンピュータ・システムは、
命令を取得することであって、前記命令は単一のアーキテクトされた命令である、前記取得することと、
前記命令を実行することであって、前記実行することは、
実施される前記命令によってサポートされる複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することと、
実施される前記一のスカラ乗算関数用の入力を取得することであって、前記入力は少なくとも1つのソース成分およびスカラ値を含む、前記取得することと、
前記入力を用いて前記一のスカラ乗算関数を実施して、暗号演算で使用される出力を与えることと
を含む、前記実行することと
を含む方法を実施するように構成され
前記一のスカラ乗算関数を前記実施することが、以下の式を使用することを含むコンピュータ・システム:(Xr,Yr)<=d*(Xs,Ys)、ただしXsおよびYsは前記少なくとも1つのソース成分であり、楕円曲線上の点の座標であり、dは前記スカラ値であり、*はスカラ乗算であり、XrおよびYrは前記一のスカラ乗算関数の結果の座標であり、前記結果の座標は前記出力である。
【請求項16】
前記dが、一のビットから別のビットへスキャンされる複数のビットを含む、請求項15に記載のコンピュータ・システム。
【請求項17】
前記あるビットがdの最上位ビットであり、前記別のビットがdの最下位ビットである、請求項16に記載のコンピュータ・システム。
【請求項18】
前記一のスカラ乗算関数を前記実施することが、選択値に等しいdの前記複数のビットのうちの1つのビットについて、点の加算が生じ、それぞれのビットがスキャンされた後、点の2倍算が生じることをさらに含む、請求項16または17に記載のコンピュータ・システム。
【請求項19】
前記複数のスカラ乗算関数が、複数の素数についての複数の楕円曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む、請求項11ないし18のいずれかに記載のコンピュータ・システム。
【請求項20】
前記複数のスカラ乗算関数が、複数の素数についての複数のエドワーズ曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む、請求項11ないし19のいずれかに記載のコンピュータ・システム。
【請求項21】
コンピューティング環境内で処理を容易にするためのコンピュータ・プログラムを格納する記録媒体であって、前記コンピュータ・プログラムは、コンピュータに、
請求項1ないし10のいずれかに記載の方法を実行させるためのものである、記録媒体。
【請求項22】
コンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータに、請求項1ないし10のいずれかに記載の方法を実行させる、コンピュータ・プログラム。
【請求項23】
前記dが一のビットから別のビットへスキャンされる複数のビットを含み、前記一のスカラ乗算関数を前記実施することが、選択値に等しいdの前記複数のビットのうちの1つのビットについて、点の加算が生じ、それぞれのビットがスキャンされた後、点の2倍算が生じることをさらに含む、請求項19に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般にコンピューティング環境内の処理を容易にすることに関し、より詳細には、コンピューティング環境内での暗号演算の実施を容易にすることに関する。
【背景技術】
【0002】
暗号法は、コンピューティング環境内で、メッセージのセキュアな送信を含む、セキュアな通信を実現するために用いられる。暗号法には、認可された当事者だけが送信されたメッセージを読むことができるようにメッセージを暗号化することが含まれる。例えば、暗号化の間、プレーンテキストのメッセージは、暗号化技法を使用してエンコードされ、暗号化されたメッセージまたは暗号文を与える。暗号化されたメッセージは、認可された受信者に送信される。受信者は暗号化されたメッセージを受信して、同一の暗号化技法を用いてそれを復号化し、メッセージのプレーンテキストを得る。
【0003】
使用できる暗号化技法には、楕円曲線に基づくものを含め複数の暗号化技法がある。そのような暗号化技法としては、例えば楕円曲線署名アルゴリズム(ECDSA)、およびエドワーズ曲線デジタル署名アルゴリズム(EdDSA)が挙げられる。これらの技法を使用して暗号法を実施する際に、実施される共通の計算機集約的な演算は、スカラ乗算演算である。楕円曲線を利用する暗号法では、共通の非常に計算機集約的な演算が、スカラ乗算演算である。本発明は、演算の曲線および素数(the curve and primes of the operation)に基づいて、この演算を実装するための単一のハードウェア命令を作成する。以前、これらの演算はソフトウェア・ルーチンで行われ、ハードウェアでほとんどのコンピュータに実装するには関与する計算が過多であった。
【0004】
したがって、当分野において前述の問題に対処する必要がある。
【発明の概要】
【0005】
第1の態様の観点から、本発明は、コンピューティング環境内で処理を容易にするコンピュータ実装方法であって、コンピュータ実装方法は、命令を取得することであって、命令は単一のアーキテクトされた命令である、取得することと、命令を実行することであって、実行することは、実施される命令によってサポートされる複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することと、実施される一のスカラ乗算関数用の入力を取得することであって、入力は少なくとも1つのソース成分およびスカラ値を含む、取得することと、入力を用いて一のスカラ乗算関数を実施して、暗号演算で使用される出力を与えることとを含む、実行することとを含む、コンピュータ実装方法を提供する。
【0006】
さらなる態様の観点から、本発明は、コンピューティング環境内で処理を容易にするためのコンピュータ・システムであって、コンピュータ・システムは、メモリと、メモリに結合されるプロセッサとを備え、コンピュータ・システムは、命令を取得することであって、命令は単一のアーキテクトされた命令である、取得することと、命令を実行することであって、実行することは、実施される命令によってサポートされる複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することと、実施される一のスカラ乗算関数用の入力を取得することであって、入力は少なくとも1つのソース成分およびスカラ値を含む、取得することと、入力を用いて一のスカラ乗算関数を実施して、暗号演算で使用される出力を与えることとを含む、実行することとを含む方法を実施するように構成される、コンピュータ・システムを提供する。
【0007】
さらなる態様の観点から、本発明はコンピューティング環境内で処理を容易にするためのコンピュータ・プログラム製品であって、コンピュータ・プログラム製品は、処理回路によって可読であり、本発明のステップを実施するための方法を実施するための処理回路による実行のための命令を記憶するコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品を提供する。
【0008】
さらなる態様の観点から、本発明は、コンピュータ可読媒体に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行される時、本発明のステップを実施するためのソフトウェア・コード部分を備える、コンピュータ・プログラムを提供する。
【0009】
コンピューティング環境内の処理を促進するためのコンピュータ・プログラム製品の提供を通じて、先行技術の欠点は克服され、さらなる利点が提供される。コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、方法を実施するための命令を記憶するコンピュータ可読記憶媒体を含む。方法は、命令を取得することを含み、命令は単一のアーキテクトされた命令である。命令が実行され、実行することには実施される命令によってサポートされる複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することが含まれる。実施される一のスカラ乗算関数用の入力が取得され、入力は少なくとも1つのソース成分およびスカラ値を含む。入力を用いて一のスカラ乗算関数が実施され、暗号演算で使用される出力を与える。
【0010】
スカラ乗算関数を実施するために単一のアーキテクトされた命令を用いることにより、この関数を実施するためのプリミティブなソフトウェア命令の有意なサブセットが、単一のアーキテクトされた命令によって置き換えられる。そのようなプリミティブな命令を単一のアーキテクトされた命令で置き換えることにより、プログラムの複雑さを低減し、プリミティブな命令を最適化するためのコードを含む必要性を除去する。全体的なパフォーマンスが改善される。さらに、レジスタおよびメモリは中間的な結果を保存するように割り当てられる必要がないため、他の同時的な演算用にリソースが解放される。
【0011】
一例では、一のスカラ乗算関数を実施することは、楕円曲線上の点のスカラ乗算を実施することを含む。点は、少なくとも1つのソース成分によって指定される。例として、楕円曲線上の点が、少なくとも1つのソース成分の第1のソース成分および少なくとも1つのソース成分の第2のソース成分によって指定される。第1のソース成分および第2のソース成分は、例えば、命令に関連付けられたレジスタを使用して配置されたパラメータ・ブロックを介して命令に入力される。
【0012】
一のスカラ乗算関数を実施することは、例えば、楕円曲線に沿って一連の点の加算および点の2倍算を実施することを含む。
【0013】
一例では、一のスカラ乗算関数を実施することは、以下の式を使用することを含む:(Xr,Yr)<=d*(Xs,Ys)、ただしXsおよびYsは少なくとも1つのソース成分であり、楕円曲線上の点の座標であり、dはスカラ値であり、*はスカラ乗算であり、XrおよびYrは一のスカラ乗算関数の結果の座標であり、結果の座標は出力である。
【0014】
例として、dは一のビット(例えば、dの最上位ビット)から別のビット(例えば、dの最下位ビット)へスキャンされる複数のビットを含み、一例では、一のスカラ乗算関数を実施することは、選択値に等しいdの複数のビットのうちの1つのビットについて、点の加算が生じ、それぞれのビットがスキャンされた後、点の2倍算が生じることをさらに含む。
【0015】
一例では、複数のスカラ乗算関数は、複数の素数についての複数の楕円曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む。別の例として、複数のスカラ乗算関数は、複数の素数についての複数のエドワーズ曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む。
【0016】
1つまたは複数の態様に関連するコンピュータ実装方法およびシステムはまた、本明細書において説明され、特許請求される。さらに、1つまたは複数の態様に関連するサービスがやはり説明され、本明細書において特許請求され得る。
【0017】
追加的な特徴および利点は、本明細書において説明される技法を通じて実現される。他の実施形態および態様は、本明細書において詳細に説明され、特許請求される態様の一部とみなされる。
【0018】
1つまたは複数の態様が、本明細書の結論部における特許請求の範囲において、例として特に示され明確に特許請求される。前述、ならびに1つまたは複数の態様の目的、特徴および利点は、添付の図面と併せて以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0019】
図1A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例の図である。
図1B】本発明の1つまたは複数の態様による、図1Aのプロセッサのさらなる詳細の図である。
図2】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例の図である。
図3A】本発明の一態様による、Perform Cryptographic Computation(PCC,暗号計算実施)命令の一フォーマットの図である。
図3B】本発明の一態様による、命令によって使用されるインプライド・レジスタ、汎用レジスタ0のフィールドの一例の図である。
図3C】本発明の一態様による、命令によりサポートされる関数コードの一例の図である。
図3D】本発明の一態様による、命令によって使用される別のインプライド・レジスタ、汎用レジスタ1のフィールドの一例の図である。
図4A】本発明の一態様による、Perform Cryptographic Computation命令の様々な関数によって使用されるパラメータ・ブロックの内容の例の図である。
図4B】本発明の一態様による、Perform Cryptographic Computation命令の様々な関数によって使用されるパラメータ・ブロックの内容の例の図である。
図4C】本発明の一態様による、Perform Cryptographic Computation命令の様々な関数によって使用されるパラメータ・ブロックの内容の例の図である。
図4D】本発明の一態様による、Perform Cryptographic Computation命令の様々な関数によって使用されるパラメータ・ブロックの内容の例の図である。
図4E】本発明の一態様による、Perform Cryptographic Computation命令の様々な関数によって使用されるパラメータ・ブロックの内容の例の図である。
図5A】本発明の一態様による、コンピューティング環境内で処理を容易にする一例の図である。
図5B】本発明の一態様による、コンピューティング環境内で処理を容易にする一例の図である。
図6A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例の図である。
図6B図6Aのメモリのさらなる詳細の図である。
図7】クラウド・コンピューティング環境の一実施形態の図である。
図8】抽象モデル・レイヤの一例の図である。
【発明を実施するための形態】
【0020】
本発明の一態様によると、コンピューティング環境内で処理を容易にするための機能が提供される。一例として、暗号演算用のスカラ乗算演算の実施を容易にする、暗号計算実施演算などの演算を行うための単一の命令(例えば、ハードウェア/ソフトウェア・インターフェースにおける、単一のアーキテクトされたハードウェア機械命令)が提供される。命令は、汎用プロセッサ命令セット・アーキテクチャ(ISA)の一部であり、プログラム(例えば、オペレーティング・システムまたはユーザ・プログラム)によって汎用プロセッサなどのプロセッサでディスパッチされる。
【0021】
一例では、Perform Cryptographic Computation(PCC)命令と称される命令を使用して、例えば暗号演算用のスカラ乗算関数を実行する。命令は、例えばインターナショナル・ビジネス・マシーンズ・コーポレーション(Armonk、New York)製のIBM(登録商用)z/Architecture(登録商標)ハードウェア・アーキテクチャのMessage Security Assist Extension(例えば、Message Security Assist Extension 9)ファシリティの一部である。Message Security Assist Extensionは、メッセージの楕円曲線暗号法認証、楕円曲線鍵の生成、およびスカラ乗算をサポートしている。
【0022】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一実施形態が図1Aを参照して説明される。コンピューティング環境100は、例えば、プロセッサ102(例えば、中央処理装置)、メモリ104(例えば、主メモリ;別名、システム・メモリ、主記憶、中央記憶装置、ストレージ)、および、例えば1つまたは複数のバス108または他の接続あるいはその組合せを介して互いに結合される1つまたは複数の入力/出力(I/O)デバイスまたはインターフェースあるいはその組合せ106を含む。
【0023】
一例では、プロセッサ102は、インターナショナル・ビジネス・マシーンズ・コーポレーション(Armonk、New York)製のz/Architectureハードウェア・アーキテクチャに基づいており、やはりインターナショナル・ビジネス・マシーンズ・コーポレーション製でz/Architectureハードウェア・アーキテクチャを実装するIBM Z(登録商標)サーバなどのサーバの一部である。z/Architectureハードウェア・アーキテクチャの一実施形態は、「z/Architecture Principles of Operation」(IBM Publication、No.SA22-7832-11、第12版、9月、2017年)と題される出版物に説明されている。しかしながら、z/Architectureハードウェア・アーキテクチャは、アーキテクチャの一例に過ぎず、他のアーキテクチャまたは他のタイプのコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むことができる、または使用することができる、あるいはその両方である。一例では、プロセッサは、やはりインターナショナル・ビジネス・マシーンズ・コーポレーション製のz/OS(登録商標)オペレーティング・システムなどを実行する。
【0024】
プロセッサ102は、命令を実行するために使用される複数の機能的なコンポーネントを含む。図1Bで描写されるように、これらの機能的なコンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント120、フェッチされた命令をデコードしてデコードされた命令のオペランドを取得するための命令デコード・ユニット122、デコードされた命令を実行するための命令実行コンポーネント124、必要であれば命令実行のためにメモリにアクセスするためのメモリ・アクセス・コンポーネント126、実行された命令の結果を与えるためのライト・バック・コンポーネント130を含む。これらのコンポーネントのうち1つまたは複数は、本発明の1つまたは複数の態様によると、暗号演算用のスカラ乗算処理などのスカラ乗算処理(または本発明の1つまたは複数の態様を用いることができる他の処理)において使用される1つまたは複数の他のコンポーネントの少なくとも一部を含むか、あるいは1つまたは複数の他のコンポーネントへのアクセスを有する。1つまたは複数の他のコンポーネントは、例えばスカラ乗算コンポーネント(または、他のコンポーネント)136を含む。
【0025】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例が、図2を参照して説明される。一例では、コンピューティング環境はz/Architectureハードウェア・アーキテクチャに基づいているが、コンピューティング環境はインターナショナル・ビジネス・マシーンズ・コーポレーションまたは他社により提供される他のアーキテクチャに基づいている場合もある。
【0026】
図2を参照すると、一例では、コンピューティング環境は中央電子機器複合体(CEC)200を含む。CEC200は、例えば1つまたは複数のプロセッサ(別名、中央処理装置(CPU))204および入力/出力サブシステム206に結合されたメモリ202(別名、システム・メモリ、主メモリ、主記憶、中央記憶装置、ストレージ)などの複数のコンポーネントを含む。
【0027】
メモリ202は、例えば1つまたは複数の論理パーティション208、論理パーティションを管理するハイパーバイザ210、およびプロセッサ・ファームウェア212を含む。ハイパーバイザ210の一例は、インターナショナル・ビジネス・マシーンズ・コーポレーション(Armonk、New York)によって提供されるProcessor Resource/System Manager(PR/SM(登録商標))ハイパーバイザである。本明細書で使用される場合、ファームウェアには例えばプロセッサのマイクロコードが含まれる。例えば、より高次のマシン・コードの実装形態で使用されるハードウェアレベルの命令またはデータ構造あるいはその両方が含まれる。一実施形態において、例えば、典型的には信頼されたソフトウェアを含むマイクロコードとして提供されるプロプライエタリなコード、または基礎となるハードウェアに特有のマイクロコードを含み、オペレーティング・システムのシステム・ハードウェアへのアクセスを制御する。
【0028】
それぞれの論理パーティション208は、別個のシステムとして機能することができる。すなわち、それぞれの論理パーティションは独立的に、z/OSオペレーティング・システムなどのゲスト・オペレーティング・システム220または別のオペレーティング・システムをリセットすること、実行すること、および異なるプログラム222で動作することができる。論理パーティション上で実行中のオペレーティング・システムまたはアプリケーション・プログラムは、全面的で完全なシステムへのアクセスを有しているように見えるが、実際にはその一部のみが利用可能である。
【0029】
メモリ202は、論理パーティションに割り当てられ得る物理的なプロセッサ・リソースであるプロセッサ(例えば、CPU)204に結合される。例えば、論理パーティション208は1つまたは複数の論理プロセッサを含み、そのそれぞれは論理パーティションに動的に割り当てることができる物理的なプロセッサ・リソース204のすべてまたは共有を表している。
【0030】
さらに、メモリ202はI/Oサブシステム206に結合される。I/Oサブシステム206は中央電子機器複合体の一部であってもよく、またはそれから別個になっていてもよい。I/Oサブシステム206は、中央電子機器複合体に結合した主記憶202と入力/出力制御ユニット230と入力/出力(I/O)デバイス240との間の情報の流れを方向付ける。
【0031】
多くのタイプのI/Oデバイスを用いることができる。ある特定のタイプは、データ記憶デバイス250である。データ記憶デバイス250は、1つもしくは複数のプログラム252、1つもしくは複数のコンピュータ可読プログラム命令254、またはデータあるいはその組合せなどを記憶することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成することができる。
【0032】
一例として、それぞれのプロセッサ204は、例えば暗号演算用のスカラ乗算(または、本発明の1つもしくは複数の態様の他の演算あるいはその組合せ)を行う際に用いられるスカラ乗算コンポーネント(または他のコンポーネント)260を含むか、あるいはそのようなコンポーネントへのアクセスを有する。様々な例において、これらのタスクを実行する1つまたは複数のコンポーネントが存在し得る。多くの変形形態が可能である。
【0033】
中央電子機器複合体200は、リムーバブル/非リムーバブルの、揮発性/非揮発性のコンピュータ・システム記憶媒体を含むことができるか、またはそれらに結合することができるか、あるいはその両方である。例えば、非リムーバブルの、非揮発性の磁気媒体(典型的には「ハード・ドライブ」と呼ばれる)、リムーバブル、非揮発性の磁気ディスク(例えば、「フロッピー(登録商標)・ディスク」)からの読み取りおよびそれへの書き込みのための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROMもしくは他の光学媒体などのリムーバブル、非揮発性の光学ディスクからの読み取りもしくはそれへの書き込みのための光学ディスク・ドライブ、あるいはそれらの組合せを含むことができるか、またはそれらに結合することができるか、あるいはそれらの組合せである。他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントが、中央電子機器複合体200と併せて使用することができることが理解されるべきである。例として、マイクロコード、デバイス・ドライバ、冗長化処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、それに限定されない。
【0034】
さらに、中央電子機器複合体200は、多くの他の汎用または特定用途の、コンピューティング・システム環境または構成で動作可能であり得る。中央電子機器複合体200での使用に適切であり得る良く知られているコンピューティング・システム、環境、または構成あるいはそれらの組合せの例は、パーソナル・コンピュータ(PC)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップのデバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスの任意のものを含む分散クラウド・コンピューティング環境などを含むがそれに限定しない。
【0035】
本明細書においてはコンピューティング環境の様々な例が説明されるが、本発明の1つまたは複数の態様は、多くのタイプの環境で使用することができる。本明細書において提供されるコンピューティング環境は単なる例である。
【0036】
本発明の一態様によると、コンピューティング環境100または中央電子機器複合体200などのコンピューティング環境は、例えば楕円曲線暗号演算用のスカラ乗算演算を行うためのメカニズムを与えるMessage Security Assist Extensionファシリティを採用する。一例では、ファシリティ・インジケータが、例えば1にセットされる場合、ファシリティはシステムにインストールされる。z/Architectureハードウェア・アーキテクチャのある特定の例として、ファシリティがz/Architectureアーキテクチャ・モードにおいてインストールされる場合、ファシリティ・ビット155は、例えば1にセットされる。ファシリティは、例えば,Perform Cryptographic Computation命令を含み、その実施形態を以下で説明する。
【0037】
Perform Cryptographic Computation命令の一実施形態を、図3A図3Dを参照して説明する。一例では、命令は、汎用プロセッサなどのプロセッサ(例えばプロセッサ102または204)を使用して実行される。本明細書の説明では、具体的な場所、具体的なフィールド、または具体的なフィールドのサイズあるいはその組合せ(例えば、具体的なバイトまたはビットあるいはその両方)が示されている。しかしながら、他の場所、フィールド、またはサイズあるいはその組合せが与えられてもよい。さらに、特定の値、例えば1またはゼロへのビットの設定が指定されるが、単なる例である。ビットは、他の例では反対の値または別の値など、異なる値に設定されてもよい。多くの変形形態が可能である。
【0038】
図3Aを参照すると、一例では、Perform Cryptographic Computation(PCC)命令300のフォーマットは、レジスタおよびレジスタ演算を拡張演算コード(オペコード)フィールドで記すRREフォーマットである。例として、命令は、暗号計算実施演算を示す演算コードを有する演算コード・フィールド302(例えば、ビット0~15)を含む。一例では、命令のビット16~31は無視される。
【0039】
一実施形態では、命令の実行は、1つまたは複数のインプライド汎用レジスタ(すなわち、命令によって明示的に指定されていないレジスタ)の使用を含む。例えば、汎用レジスタ0および1は、本明細書において説明されるように命令の実行時に使用される。一例では、汎用レジスタ0は命令の動作に影響する様々な制御を含み、汎用レジスタ1は命令に使用されるパラメータ・ブロックの場所を提供するために使用される。
【0040】
例として、図3Bを参照すると、汎用レジスタ0(304)は、関数コードを含む関数コード・フィールド306を含む。ある特定の例では、汎用レジスタ0のビット位置57~63は、関数コードを含むが、他の実施形態では、関数コードを含むために他のビットが使用されてもよい。さらに、一例では、汎用レジスタ0のビット56はゼロにされ、そうでなければ、指定例外と認められる。この例では、汎用レジスタ0の他のすべてのビットが無視される。
【0041】
暗号計算実施命令に割り振られる関数コードの例を図3Cに示し、例えば、以下を含む:PCC-Query関数を示す関数コード0(310)、PCC-Compute-Last-Block-CMAC-Using-DEA関数を示す関数コード1(312)、PCC-Compute-Last-Block-CMAC-Using-TDEA-128関数を示す関数コード2(314)、PCC-Compute-Last-Block-CMAC-Using-TDEA-192関数を示す関数コード3(316)、PCC-Compute-Last-Block-CMAC-Using-Encrypted-DEA関数を示す関数コード9(318)、PCC-Compute-Last-Block-CMAC-Using-Encrypted-TDEA-128関数を示す関数コード10(320)、PCC-Compute-Last-Block-CMAC-Using-Encrypted-TDEA-192関数を示す関数コード11(322)、PCC-Compute-Last-Block-CMAC-Using-AES-128関数を示す関数コード18(324)、PCC-Compute-Last-Block-CMAC-Using-AES-192関数を示す関数コード19(326)、PCC-Compute-Last-Block-CMAC-Using-AES-256関数を示す関数コード20(328)、PCC-Compute-Last-Block-CMAC-Using-Encrypted-AES-128関数を示す関数コード26(330)、PCC-Compute-Last-Block-CMAC-Using-Encrypted-AES-192関数を示す関数コード27(332)、PCC-Compute-Last-Block-CMAC-Using-Encrypted-AES-256A関数を示す関数コード28(334)、PCC-Compute-XTS-Parameter-Using-AES-128関数を示す関数コード50(336)、PCC-Compute-XTS-Parameter-Using-AES-256関数を示す関数コード52(338)、PCC-Compute-XTS-Parameter-Using-Encrypted-AES-128関数を示す関数コード58(340)、PCC-Compute-XTS-Parameter-Using-Encrypted-AES-256関数を示す関数コード60(342)、PCC-Scalar-Multiply-P256関数を示す関数コード64(344)、PCC-Scalar-Multiply-P384関数を示す関数コード65(346)、PCC-Scalar-Multiply-P521関数を示す関数コード66(348)、PCC-Scalar-Multiply-Ed25519関数を示す関数コード72(350)、PCC-Scalar-Multiply-Ed448関数を示す関数コード73(352)。
【0042】
それぞれの関数は、パラメータ・ブロックを用い、パラメータ・ブロックのサイズは、一例では関数に依存する。関数用の例示のパラメータ・ブロックのサイズを、該当の場合では例示のデータ・ブロックのサイズとともに、図3Cに記す。この例では、他の関数コードは未割り振りである。例示の関数および関数コードを説明するが、他の関数または関数コードあるいはその両方を使用してもよい。
【0043】
示されるように、それぞれの関数はパラメータ・ブロックを使用する。パラメータ・ブロックは、例えば、汎用レジスタ1によって指定される。一例では、図3Dを参照すると、汎用レジスタ1(350)の内容は、例えば、記憶内のパラメータ・ブロックの左端バイトの論理アドレス352を指定する。例えば、24ビットのアドレッシング・モードでは、汎用レジスタ1のビット位置40~63の内容がそのアドレスを構成し、ビット位置0~39の内容は無視される。31ビットのアドレッシング・モードでは、汎用レジスタ1のビット位置33~63の内容がそのアドレスを構成し、ビット位置0~32の内容は無視される。64ビットのアドレッシング・モードでは、汎用レジスタ1のビット位置0~63の内容がそのアドレスを構成する。アクセス・レジスタ・モードでは、アクセス・レジスタ1は、パラメータ・ブロックを含むアドレス空間を指定する。本発明の一態様による、命令によってサポートされる様々な関数用のパラメータ・ブロックに関するさらなる詳細を、以下でさらに説明する。
【0044】
このCPU、他のCPUおよびチャネル・プログラムによって観測されるように、パラメータ・ブロックへの参照は、マルチアクセスの参照であってもよく、これらの記憶場所へのアクセスは、必ずしもブロック同時的ではなく、これらのアクセスまたは参照の順序は未定義である。
【0045】
示されるように、Perform Cryptographic Computation命令は、複数の関数をサポートしている。命令の実行時、汎用レジスタ0の関数コードによって指定された関数が実施される。命令によってサポートされる関数の一部を、本発明の1つまたは複数の態様により提供されるものを含み、以下で説明する。
【0046】
PCC-Query(関数コード0)
クエリ関数は、他の関数の可用性を示すメカニズムを与える。命令によって使用される,オペランドおよびアドレスの場所は、図3Bおよび図3Dに示されるとおりである。
クエリ関数によって使用されるパラメータ・ブロックの一例が、図4Aを参照して説明される。示されるように、一例では、パラメータ・ブロック400は、例えば128ビットのステータス・ワード402を含む。このフィールドのビット0~127は、PCC命令の関数コード0~127にそれぞれ対応する。ビットが例えば1の時、対応する関数がインストールされ、そうでなければ、関数はインストールされない。
一例では、PCCクエリ関数の実行が完了すると条件コード0がセットされ、この関数には条件コード1、2、および3は該当しない。
【0047】
PCC-Scalar-Multiply(関数コード64、65、66、72、および73)
一実施形態では、5つのPCCスカラ乗算関数がサポートされ、対応する関数コードを以下で与える:
・PCC-Scalar-Multiply-P256(関数コード64)
・PCC-Scalar-Multiply-P384(関数コード65)
・PCC-Scalar-Multiply-P521(関数コード66)
・PCC-Scalar-Multiply-Ed25519(関数コード72)
・PCC-Scalar-Multiply-Ed448(関数コード73)
この関数のうち3つ、PCC-Scalar-Multiply-P256、PCC-Scalar-Multiply-P384、およびPCC-Scalar-Multiply-P521は、選択されたアメリカ国立標準技術研究所(NIST)の素数(prime)(例えば、P256、P384、P521)についてのECDSA技法を使用する。他の2つの関数、PCC-Scalar-Multiply-Ed25519およびPCC-Scalar-Multiply-Ed448は、選択された素数(prime)(例えば、Ed25519、Ed448)についてのEdDSA技法を使用する。
【0048】
一例では、PCC-Scalar-Multiply関数の実行時、関数は、一例では以下によって示される楕円曲線上の点のスカラ乗算を実装する:
(Xr,Yr)<=d*(Xs,Ys)
ただし、座標XsおよびYsによって表される入力点はスカラdで乗算され、座標XrおよびYrによって表される点を導く。点のスカラ乗算は、楕円曲線に沿った一連の点の加算および点の2倍算により達成することができる。例えば、最上位から最下位へdのビットがスキャンされる。一例では、スカラdではすべてのビットは1であり、点の加算が生じ、すべてのビットをスキャンした後、点の2倍算が生じる。一連の点の加算および点の2倍算により、全体的なスカラ乗算が行われる。
【0049】
さらに説明すると、一例では、スカラまたは整数は有限体で定義された楕円曲線上の点を乗算する。スカラは例えば、最上位ビットから最下位ビットへスキャンされ、スカラのビットが1である場合、点は現在の総和点に加算され、それぞれのビットをスキャンした後、その総和点が2倍される。点の加算から得られる総和点は、加算される2つの点を通る直線の楕円曲線との交差から得られる点の否定(negation)として定義される。点の2倍算は、類似しているが、同一の点を通る直線が明確に定義されないため、実際にはその点における楕円の接線が用いられ、総和点は接線が楕円曲線と交差する点の負値である。楕円曲線のグラフを描かずに、総和点の得られるXおよびY座標を求める数学的な近道がある。点の2倍算および点の加算のための数学的な式は、例えば楕円曲線上で依存関係にある。
【0050】
示されるように、スカラ乗算関数用のオペランドはパラメータ・ブロックを介して与えられ、その例を以下で説明する。パラメータ・ブロックのフィールド用のさらなる詳細を、様々な関数用のパラメータ・ブロックを説明した後に、説明する。
【0051】
PCC-Scalar-Multiply-P256関数およびPCC-Scalar-Multiply-Ed25519関数についてのパラメータ・ブロックの一例を、図4Bを参照して説明する。一例では、パラメータ・ブロック404は、例えば結果X成分(Xr)405、結果Y成分(Yr)406、ソースX成分(Xs)407、ソースY成分(Ys)408、スカラ(d)409、および予約済保存エリア410を含む。パラメータ・ブロック内の例示のオフセットが図4Bに描写される。
【0052】
さらに、PCC-Scalar-Multiply-P384関数についてのパラメータ・ブロックの一例を、図4Cを参照して説明する。一例では、パラメータ・ブロック412は、例えば結果X成分(Xr)413、結果Y成分(Yr)414、ソースX成分(Xs)415、ソースY成分(Ys)416、スカラ(d)417、および予約済保存エリア418を含む。パラメータ・ブロック内の例示のオフセットが図4Cに描写される。
【0053】
なおさらに、図4Dを参照すると、PCC-Scalar-Multiply-P521関数についてのパラメータ・ブロック420は、例えば結果X成分(Xr)421、結果Y成分(Yr)422、ソースX成分(Xs)423、ソースY成分(Ys)424、スカラ(d)、および予約済保存エリア425を含む。パラメータ・ブロック内の例示のオフセットが図4Dに描写される。
【0054】
同様に、図4Eを参照すると、PCC-Scalar-Multiply-Ed448関数についてのパラメータ・ブロック426は、例えば結果X成分(Xr)427、結果Y成分(Yr)428、ソースX成分(Xs)429、ソースY成分(Ys)430、スカラ(d)431、および予約済保存エリア432を含む。パラメータ・ブロック内の例示のオフセットが図4Eに描写される。
【0055】
様々なPCC-Scalar-Multiply関数についてのパラメータ・ブロックのフィールドのさらなる詳細を以下で説明する。一例では:
【0056】
結果X成分(Xr):これは、スカラを曲線上のソース点で乗算して得られる楕円曲線上の点のX成分である。例えば、ゼロ以上かつ関数の素数未満であり、このフィールド内で右揃えの整数である。PCC-Scalar-Multiply関数の結果の一部は、パラメータ・ブロック内でこのフィールドに記憶される。
【0057】
結果Y成分(Yr):これは、スカラを曲線上のソース点で乗算して得られる楕円曲線上の点のY成分である。例えば、ゼロ以上かつ関数の素数未満の整数であり、このフィールド内で右揃えである。PCC-Scalar-Multiply関数の結果の一部は、パラメータ・ブロック内でこのフィールドに記憶される。
【0058】
ソースX成分(Xs):これは、スカラ乗算のソースである楕円曲線上の点のX成分である。Xsはこのフィールド内で右揃えであり、左までのバイトは無視される。Xsは、例えば、ゼロ以上かつ関数の素数未満の整数である。Xsが素数よりも大きい場合、1に等しい条件コードがレポートされる。
【0059】
ソースY成分(Ys):これは、スカラ乗算のソースである楕円曲線上の点のY成分である。Ysはこのフィールド内で右揃えであり、左までのバイトは無視され、また乱数値であり得る。Ysは、例えば、ゼロ以上かつ関数の素数未満の整数である。Ysが素数よりも大きい場合、1に等しい条件コードがレポートされる。
【0060】
スカラ(d):これは、PCC-Scalar-Multiply関数へのソース整数スカラである。dはこのフィールド内で右揃えであり、左までのバイトは無視され、また乱数値であり得る。dは、例えば、ゼロ以上かつ曲線の位数未満の整数であり、素数未満である。dがこの範囲にない場合、1に等しい条件コードがレポートされる。曲線の位数は、例えば曲線に関連付けられるパラメータ値であり、曲線についての標準に与えられている(例えば、2013年7月発行、FIPS PUB 186-4, Federal Information Processing Standards Publication, Digital Signature Standard (DSS);2017年1月、Edwards-Curve Digital Signature Algorithm (EdDSA), Internet Research Task Force (IRTF), RFC-8032)。
【0061】
予約済保存エリア:予約済保存エリアは、使用される状態情報を保存するために使用される事前定義された大きさのメモリであり、例えば、命令が部分完了に終わった場合、部分完了の時点から命令を再開できるようにする。
【0062】
実際にはXrおよびYrフィールドだけが命令によってストアされたとしても、ストアタイプのアクセス例外がパラメータ・ブロック内のあらゆる場所に認められる場合がある。
【0063】
一実施形態では、XsおよびYsが指定された曲線上にない場合、またはそれらのいずれかが素数の法(prime modulus)より大きい場合、またはdがゼロ以下かつ曲線の位数未満である場合、1に等しい条件コードがレポートされ、結果は更新されない。
【0064】
例示的な条件:
一例では、以下のいずれかが生ずる場合、指定例外が認められ、他のアクションは取られない:
1.汎用レジスタ0のビット56が、ゼロではない。
2.汎用レジスタ0のビット57~63が、未割り振りまたは未インストールの関数コードを指定する。
【0065】
例示的な結果の条件コード:
0 正常な完了
1 照合パターンの不一致、または範囲外もしくは曲線上にないソース・オペランド
2 無効なビット・インデックスまたはメッセージ長
3 部分的な完了
【0066】
例示のプログラム例外:
・アクセス(フェッチ、パラメータ・ブロック;フェッチおよびストア、中間ビット・インデックス、XTSパラメータ、初期チェーン値)
・演算(message-security-assist extension4がインストールされていない場合)
・指定
・トランザクション制約
【0067】
PCC用の実行の例示的な優先順は、例えば次を含む:
1.~6. 一般的な事例のプログラム割り込み条件の優先順と同じ優先順の例外
7.A 第2の命令ハーフワードについてのアクセス例外
7.B 演算例外
7.C トランザクション制約
8. 無効な関数コードまたは無効なレジスタ番号による指定例外
9. メッセージ長さが元々ゼロであることによる条件コード0
11.A 照合パターンの不一致による条件コード1
11.B 無効なビット・インデックスまたはメッセージ長による条件コード2
12. 正常完了による条件コード0(メッセージ長は元々非ゼロであるが、ゼロに向かってステップされる)
13. 部分完了による条件コード3(メッセージ長はやはり非ゼロ)
【0068】
プログラミング・ノート:
プログラムが関数の可用性について頻繁に試験される場合、初期化の間に一度クエリ関数を実施するべきであり、その後に、例えばTest Under Maskなどの命令でメモリに記憶されたクエリ関数の結果を確かめるべきである。
【0069】
本明細書に記載されるように、一態様では、例えば汎用プロセッサを用いる暗号演算で使用するための、スカラ乗算関数を実施するための単一の命令(例えば、ハードウェア/ソフトウェア・インターフェースにおける、単一のアーキテクトされた機械命令、例えばPerform Cryptographic Computation命令)が提供される。この命令は、例えば命令セット・アーキテクチャ(ISA)で定義されるハードウェア命令である。結果として、スカラ乗算関数に関するプログラムの複雑さが低減する。さらに、関数、ひいてはプロセッサのパフォーマンスが改善される。ソフトウェア実装形態と比較して、単一の命令を実行することは、同じ演算を実施するために必要とされる実行サイクルが、著しく少ない。
【0070】
例として、スカラ乗算を使用して、プライベート鍵から公開鍵を作成する。プライベート鍵は素数のスカラであり、ジェネレータ点で乗算され、点である公開鍵を与える。他の例として、スカラ乗算を使用して、メッセージの署名またはデジタル署名の照合あるいはその両方に使用されるデジタル署名を生成する。これらの機能をハードウェアで実施することにより、セキュリティが向上し、実装タイミングは入力とは無関係である。
【0071】
Perform Cryptographic Computation命令の様々なフィールドおよびレジスタを説明するが、本発明の1つまたは複数の態様は、他の、追加的な、またはより少ないフィールドもしくはレジスタ、または他のサイズのフィールドおよびレジスタなどを使用することができる。多くの変形形態が可能である。例えば、明示的に指定されるレジスタもしくは命令のフィールドの代わりに、インプライド・レジスタを使用してもよく、またはインプライド・レジスタもしくはフィールドの代わりに明示的に指定されるレジスタもしくはフィールドを使用してもよく、あるいはその両方である。他の変形形態もまた可能である。
【0072】
本発明の1つまたは複数の態様はコンピュータ技術に密接に結びついており、コンピュータ内の処理を促進し、そのパフォーマンスを改善する。暗号演算のためのスカラ乗算を行うための単一のアーキテクトされた機械命令の使用は、コンピューティング環境内のパフォーマンスを改善する。例えば、メッセージを署名/照合するために、または他の暗号化/復号化演算において、あるいはその両方で、暗号演算が使用される。スカラ乗算または暗号演算を用いて保護されるメッセージあるいはその両方は、コンピュータ処理、医用処理、セキュリティなどの多くの技術分野で使用される可能性がある。例えば、暗号演算用のスカラ乗算を実施する際、最適化を与えることにより、実行時間を削減することでこれらの技術分野が改善される。
【0073】
本発明の1つまたは複数の態様に関し、コンピューティング環境内で処理を促進するための一実施形態のさらなる詳細を、図5A~5Bを参照して説明する。
【0074】
図5Aを参照すると、命令(例えば、Perform Cryptographic Computation)が取得され(500)、この命令は単一のアーキテクトされた命令である(502)。命令は、例えば、プロセッサ(例えば、プロセッサ102または204)のハードウェアによって実行される(504)。ハードウェアは、プロセッサから命令を受信する目的で、プロセッサ内にあるか、またはそれに結合されてもよく、プロセッサはハードウェア上で実行させるために命令を、例えば、取得する、デコードする、およびセットアップする。他の変形形態が可能である。
【0075】
実行することは、例えば、実施される命令によってサポートされる複数のスカラ乗算関数のうち、一のスカラ乗算関数を決定することを含む(506)。一例では、これは例えば、汎用レジスタ0において指定され命令に入力された関数コードから決定される。実施される一のスカラ乗算関数用の入力が取得され、入力は少なくとも1つのソース成分およびスカラ値を含む(508)。入力を用いて一のスカラ乗算関数が実施され、暗号演算で使用される出力を与える(510)。
【0076】
一例では、一のスカラ乗算関数を実施することは、楕円曲線上の点のスカラ乗算を実施することを含み、点は少なくとも1つのソース成分によって指定される(512)。例として、楕円曲線上の点が、少なくとも1つのソース成分の第1のソース成分(例えば、Xs)および少なくとも1つのソース成分の第2のソース成分(例えば、Ys)によって指定される(514)。第1のソース成分および第2のソース成分は、例えば、命令に関連付けられたレジスタ(例えば、汎用レジスタ1)を使用して配置されたパラメータ・ブロックを介して命令に入力される(516)。
【0077】
一のスカラ乗算関数を実施することは、例えば、楕円曲線に沿って一連の点の加算および点の2倍算を実施することを含む(518)。
【0078】
一例では、図5Bを参照すると、一のスカラ乗算関数を実施することは、以下の式を使用することを含む:(Xr,Yr)<=d*(Xs,Ys)、ただしXsおよびYsは少なくとも1つのソース成分であり、楕円曲線上の点の座標であり、dはスカラ値であり、*はスカラ乗算であり、XrおよびYrは一のスカラ乗算関数の結果の座標であり、結果の座標は出力である(520)。出力(例えば、Xr、Yr)は、関数コードに対応するパラメータ・ブロックに記憶される。dは、例えば、あるビット(例えば、dの最上位ビット)から別のビット(例えば、dの最下位ビット)に向けてスキャンされる複数のビットを含む(522)。一のスカラ乗算関数を実施することは、一例では、選択値に等しいdの複数のビットのうちの1つのビットについて、点の加算が生じ、それぞれのビットがスキャンされた後、点の2倍算が生じることをさらに含む(524)。
【0079】
例として、複数のスカラ乗算関数は、複数の素数についての複数の楕円曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む(526)。別の例として、複数のスカラ乗算関数は、複数の素数についての複数のエドワーズ曲線デジタル署名アルゴリズム関数用の、複数のスカラ乗算関数を含む(528)。
【0080】
他の変形形態および実施形態が可能である。
【0081】
本発明の態様は、多くのタイプのコンピューティング環境によって使用することができる。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が図6Aを参照して説明される。この例において、コンピューティング環境10は、例えば、ネイティブな中央処理装置(CPU)12、メモリ14、および1つまたは複数の入力/出力デバイス、または例えば1つもしくは複数のバス18または他の接続あるいはその両方を介して互いに結合されるインターフェース16、あるいはその組合せを含む。例として、コンピューティング環境10は、インターナショナル・ビジネス・マシーンズ・コーポレーション(Armonk、New York)製のPowerPC(登録商標)プロセッサ、Hewlett Packard Co.(Palo Alto、California)製のIntel Itanium IIプロセッサを有するHP Superdome、またはインターナショナル・ビジネス・マシーンズ・コーポレーション、Hewlett Packard、インテル・コーポレーション、オラクル、もしくはその他によって提供されるアーキテクチャに基づく他の機械あるいはその組合せを含むことができる。IBM、z/Architecture、IBM Z、z/OS、PR/SMおよびPowerPCは、少なくとも1つの管轄区においてインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。IntelおよびItaniumは、インテル・コーポレーション、またはアメリカ合衆国および他の国におけるその子会社の、商標または登録商標である。IntelおよびItanium IIは、インテル・コーポレーション、またはアメリカ合衆国および他の国におけるその子会社の、商標または登録商標である。
【0082】
ネイティブな中央処理装置12は、その環境内で処理の間に使用される、1つもしくは複数の汎用レジスタまたは1つもしくは複数の特定用途のレジスタあるいはその組合せなどの、1つまたは複数のネイティブなレジスタ20を含む。これらのレジスタは、あらゆる特定の時点における環境の状態を表す情報を含む。
【0083】
その上、ネイティブな中央処理装置12はメモリ14に記憶される命令およびコードを実行する。特定の一例では、中央処理装置はメモリ14に記憶されるエミュレータ・コード22を実行する。このコードにより、あるアーキテクチャにおいて構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることができる。例えば、エミュレータ・コード22によって、PowerPCプロセッサ、HP Superdomeサーバまたはその他などの、z/Architectureのハードウェア・アーキテクチャ以外のアーキテクチャに基づく機械が、z/Architectureのハードウェア・アーキテクチャをエミュレートすること、ならびにz/Architectureのハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することができる。
【0084】
エミュレータ・コード22に関連するさらなる詳細を、図6Bを参照して説明する。メモリ14に記憶されるゲスト命令30は、ネイティブなCPU12のアーキテクチャ以外のアーキテクチャで実行されるよう開発されたソフトウェア命令(例えば機械命令に相関する)を含む。例えば、ゲスト命令30は、z/Architectureのハードウェア・アーキテクチャに基づくプロセッサで実行するように設計することができるが、その代わりに例えばIntel Itanium IIプロセッサであり得るネイティブなCPU12上でエミュレートされる。一例では、エミュレータ・コード22は、メモリ14から1つまたは複数のゲスト命令30を取得するための命令フェッチ・ルーチン32を含み、任意選択で、取得された命令についてローカルのバッファリングを与える。また、取得されているゲスト命令のタイプを決定するため、およびゲスト命令を1つまたは複数の対応するネイティブな命令36に変換するための命令変換ルーチン34を含む。この変換には、例えばゲスト命令によって実施される関数を識別すること、およびその関数を実施するネイティブな命令を選ぶこと、が含まれる。
【0085】
さらに、エミュレータ・コード22は、ネイティブな命令を実行させる、エミュレーション制御ルーチン40を含む。エミュレーション制御ルーチン40はネイティブなCPU12に、1つまたは複数の以前に取得されたゲスト命令をエミュレートするネイティブな命令のルーチンを実行させることができ、そのような実行の最後に、制御を命令フェッチ・ルーチンに戻して、次のゲスト命令またはゲスト命令のグループを取得することをエミュレートする。ネイティブな命令36の実行は、データをメモリ14からレジスタにロードすること、データをレジスタからメモリにストアし戻すこと、または変換ルーチンによって決定されるようにいくつかのタイプの算術もしくは論理演算を実施すること、を含むことができる。
【0086】
それぞれのルーチンは、例えば、メモリに記憶されるソフトウェアに実装され、ネイティブな中央処理装置12によって実行される。他の例において、ルーチンまたは演算のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェアまたはそのいくつかの組合せに実装される。エミュレートされたプロセッサのレジスタは、ネイティブなCPUのレジスタ20を使用して、またはメモリ14内の場所を使用して、エミュレートすることができる。一実施形態において、ゲスト命令30、ネイティブな命令36およびエミュレータ・コード22は、同一のメモリに存在することができるか、または異なるメモリ・デバイス間に分けられていてもよい。
【0087】
上述のコンピューティング環境は、使用することができるコンピューティング環境の単なる例である。他の非パーティショニング環境、他のパーティショニング環境、または他のエミュレート環境あるいはその組合せを含む他の環境を使用してもよいが、それに限定されない。環境は、1つの環境に限定されない。
【0088】
それぞれのコンピューティング環境は、本発明の1つまたは複数の態様を含むよう構成することができる。例えば、それぞれは、例えば、本発明の1つまたは複数の態様による暗号演算における使用のための、スカラ乗算を提供するように構成することができる。
【0089】
1つまたは複数の態様は、クラウド・コンピューティングに関連することができる。
【0090】
本開示はクラウド・コンピューティングについての詳細な説明を含むが、本明細書で具陳される教示の実装形態はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ本発明の実施形態は、現在既知の、または後に開発されるあらゆる他のタイプのコンピューティング環境と併せて実装することができる。
【0091】
クラウド・コンピューティングは、構成可能なコンピューティング・リソースの共有されるプール(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)への便利でオン・デマンドなネットワーク・アクセスを可能とするためのサービス提供のモデルであり、最小限の管理努力で、またはサービスのプロバイダとの対話で迅速にプロビジョニングおよびリリースすることができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
【0092】
特徴は以下のとおりである:
オン・デマンドなセルフサービス:クラウド消費者は、サービスのプロバイダとの人間対話を要求することなく必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:機能はネットワーク上で利用可能であり、異質なシン・クライアントまたはシック・クライアントのプラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を容易にする標準的なメカニズムを通じてアクセスされる。
リソースのプール:プロバイダのコンピューティング・リソースは、マルチテナントのモデルを使用して複数の消費者にサービス提供するためにプールされ、異なる物理的および仮想的なリソースが要求に応じて動的に割り当ておよび再割り当てされる。消費者が提供されるリソースの正確な場所についての制御または情報を一般的に持たない点で、場所の独立性の意味があるが、より高レベルの抽象化(例えば、国、州、またはデータセンタ)において場所を特定できることもある。
迅速な拡張性:機能は迅速かつ拡張可能にプロビジョニングすることができ、いくつかの場合において、自動的に、素早くスケール・アウトされ、迅速にリリースされて素早くスケール・インされる。消費者にとって、プロビジョニングのために利用可能な機能は、しばしば無制限に見え、いつでもいくらでも購入することができる。
サービスの計測:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適当な抽象化のいくつかのレベルにおいて計測機能を活用することによりリソースの使用を自動的に制御し、最適化する。リソースの使用は監視され、制御され、かつ報告され得、利用されるサービスのプロバイダおよび消費者の両方にとって透明性を与えている。
【0093】
サービス・モデルは以下のとおりである:
ソフトウェアを提供するサービス(Software as a Service(SaaS)):消費者に提供される機能は、クラウド・インフラストラクチャで実行中のプロバイダのアプリケーションを使用する。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えば、ウェブ・ベースの電子メール)を通じて様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらには個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理または制御することはなく、例外として限定されたユーザ固有アプリケーションの構成設定が可能である。
プラットフォームを提供するサービス(Platform as a Service(PaaS)):消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者作成の、または取得されたアプリケーションをクラウド・インフラストラクチャに展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラストラクチャの管理または制御をしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションについての制御を有する。
インフラストラクチャを提供するサービス(Infrastructure as a Service(IaaS)):消費者に提供される機能は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行することができる処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。消費者は、基礎となるクラウド・インフラストラクチャの管理または制御をしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションの制御、および場合によっては選択ネットワーキング・コンポーネント(例えば、ホスト・ファイヤウォール)の限定された制御を有する。
【0094】
展開モデルは以下のとおりである:
プライベート・クラウド:クラウド・インフラストラクチャはある組織のためだけに運用される。その組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される事案(例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス懸案事項)を有する特定のコミュニティをサポートする。それらの組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界団体に対して利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、一意なエンティティのままである2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)を組み合わせたものであるが、データおよびアプリケーションのポータビリティを可能にする標準化された、または専有的な技術(例えば、クラウド間でロード・バランシングを行うためのクラウド・バースト)によって結合される。
【0095】
クラウド・コンピューティング環境は、ステートレスであること、低い結合性、モジュール性、および意味論的な相互運用性に焦点をあてたサービス指向である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0096】
次に図7を参照すると、例示的なクラウド・コンピューティング環境50が描写されている。示されるように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなどのクラウドの消費者によって使用されるローカルのコンピューティング・デバイスと通信することができる1つまたは複数のクラウド・コンピューティング・ノード52を含む。ノード52は互いに通信することができる。本明細書において上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッドのクラウドまたはその組合せなどのうち、1つまたは複数のネットワークにおいて、これらは物理的または仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウドの消費者がローカルのコンピューティング・デバイスでリソースを維持する必要のない、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せをサービスとして与えることができる。図7に示されるコンピューティング・デバイス54A~Nのタイプは、単に例示的であることを意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、あらゆるタイプのネットワーク上またはネットワーク・アドレス可能接続で(例えば、ウェブ・ブラウザを使用して)あるいはその両方で、あらゆるタイプのコンピュータ化されたデバイスと通信することができることが理解されよう。
【0097】
図8を参照すると、クラウド・コンピューティング環境50(図7)によって提供される機能的な抽象化レイヤのセットが示されている。図8に示されるコンポーネント、レイヤ、および機能は、単に例示的であることを意図されており、本発明の実施形態はそれに限定されないことがまず理解されるべきである。描写されるように、以下のレイヤおよび対応する機能が提供される。
【0098】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が挙げられる。いくつかの実施形態において、ソフトウェア・コンポーネントはネットワーク・アプリケーション・サーバ・ソフトウェア67、およびデータベース・ソフトウェア68を含む。
【0099】
仮想化レイヤ70は、仮想エンティティの以下の例を提供することができる抽象化レイヤを与える:仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、および仮想クライアント75。
【0100】
一例では、管理レイヤ80は以下で説明される機能を提供することができる。リソース・プロビジョニング81は、コンピューティング・リソースおよびクラウド・コンピューティング環境内でタスクを実施するために利用される他のリソースの動的な調達を提供する。計測および課金82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費についての課金または請求書発行を提供する。一例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含む場合がある。セキュリティは、クラウド消費者およびタスクについての識別情報の検証、ならびにデータおよび他のリソースについての保護を提供する。ユーザ・ポータル83はクラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス水準管理84は、要求されるサービス水準が満たされるように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス水準合意(SLA)計画および遂行85は、将来的な要求がSLAにしたがって予期されるクラウド・コンピューティング・リソースについての事前申し合わせ、およびクラウド・コンピューティング・リソースの調達を提供する。
【0101】
ワークロード・レイヤ90はクラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤからもたらされ得るワークロードおよび機能の例として以下が挙げられる:マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想授業教育配信93、データ分析処理94、トランザクション処理95、およびスカラ乗算処理96。
【0102】
本発明の態様は、あらゆる可能な技術的詳細レベルの統合における、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0103】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたは前述のあらゆる適切な組合せであってもよいが、それに限定はしない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙としては、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、命令を記録されて有するパンチカードまたは溝に刻まれた構造などの機械的にエンコードされたデバイス、および前述のあらゆる適切な組合せ、を含む。本明細書において使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路もしくは他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を介して送信される電気的信号など、一過性の信号そのものであると解釈されてはならない。
【0104】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、個別のコンピューティング/処理デバイスに、あるいは、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはその組合せなどのネットワークを介して、外部のコンピュータまたは外部のストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅の送信ケーブル、光学送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。それぞれのコンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個別のコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0105】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはスモールトーク(登録商標)、C++などのオブジェクト指向プログラミング言語、および”C”プログラミング言語などの手続き型プログラミング言語もしくは類似するプログラミング言語、を含む1つまたは複数のプログラミング言語のあらゆる組合せで記述された、ソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、すべてユーザのコンピュータ上で、一部はユーザのコンピュータ上でスタンドアロンのソフトウェア・パッケージとして、一部はユーザのコンピュータ上かつ一部は遠隔のコンピュータ上で、またはすべて遠隔のコンピュータ上もしくはサーバ上で、実行することができる。後者のシナリオにおいて、遠隔のコンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含むあらゆるタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は外部のコンピュータ(例えば、インターネット・サービス・プロバイダを使用するインターネットを介して)に対してなされてもよい。一部の実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個別化することができる。
【0106】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明される。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
【0107】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/作用を実装する手段を作成すべく、汎用コンピュータ、特定目的のコンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を作るものであってよい。これらのコンピュータ可読プログラム命令はまた、命令を記憶して有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/作用の態様を実装するための命令を含む製造物品を備えるべく、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0108】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/作用を実装するべく、コンピュータ実装処理を作るために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作可能なステップを実施させるものであってもよい。
【0109】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態にしたがって、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能性、および動作を図示している。この点において、フローチャートまたはブロック図のそれぞれのブロックは、指定される論理機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表現することができる。一部の代替的な実装形態において、ブロックにおいて示した機能は図面で示した順とは異なって生じてもよい。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、またはブロックは関与する機能性によっては、時に逆の順で実行されてもよい。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実施する、または特定用途ハードウェアおよびコンピュータ命令の組合せを実行する、特定用途ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【0110】
上記に加え、1つまたは複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって、提案、展開、管理、サービスなどなされ得る。例えば、サービス・プロバイダは、1つまたは複数の顧客に1つまたは複数の態様を実施するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を、作成すること、保守すること、サポートすることなどができる。その見返りに、サービス・プロバイダは、例として購読または料金契約あるいはその両方の下で顧客から支払いを受け取ることができる。追加的に、または代替的に、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ることができる。
【0111】
一態様では、アプリケーションは1つまたは複数の実施形態を実施するために展開することができる。一例として、アプリケーションを展開することは、1つまたは複数の実施形態を実施するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【0112】
さらなる態様として、コンピューティング・インフラストラクチャを、コンピュータ可読コードをコンピューティング・システムに統合することを含んで展開することができ、その場合コンピューティング・システムと組み合わされるコードは、1つまたは複数の実施形態を実施することができる。
【0113】
なおさらなる態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含むコンピューティング・インフラストラクチャを統合するためのプロセスが提供され得る。コンピュータ・システムは、コンピュータ可読媒体を備え、その場合コンピュータ媒体は1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わされるコードは、1つまたは複数の実施形態を実施することができる。
【0114】
様々な実施形態を上で説明したが、これらは単なる例である。例えば、他のアーキテクチャのコンピューティング環境を使用して、1つまたは複数の実施形態を組み込んで使用することができる。さらに、異なる命令または演算を使用することができる。加えて、異なるレジスタを使用することができる、または他のタイプの暗号アルゴリズムあるいはその両方。多くの変形形態が可能である。
【0115】
さらに、他のタイプのコンピューティング環境が有益であり得、使用することができる。例として、プログラム・コードを記憶することまたは実行することあるいはその両方に適切な、直接的にまたは間接的にシステム・バスを介してメモリ要素に連結される少なくとも2つのプロセッサを含むデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行の間に利用されるローカル・メモリ、バルク・ストレージ、および実行中にコードがバルク・ストレージから検索されなければならない回数を減らすために、少なくともいくつかのプログラム・コードの一時的な記憶を提供するキャッシュ・メモリを含む。
【0116】
入力/出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他のメモリ媒体などを含むがそれに限定されない)は、直接的に、または仲介的なI/Oコントローラを通じてのいずれかで、システムに結合することができる。データ処理システムが仲介的なプライベートまたはパブリックなネットワークを通じて他のデータ処理システムまたは遠隔のプリンタもしくはストレージ・デバイスに結合することができるようにするために、ネットワーク・アダプタをシステムに結合することもできる。利用可能なタイプのネットワーク・アダプタとしてはモデム、ケーブル・モデム、およびイーサネット(登録商標)・カードなどが挙げられる。
【0117】
本明細書で使用される用語は、特定の実施形態を説明することだけを目的としており、限定的であることを意図されていない。本明細書で使用される場合、コンテキストが明確にそうではないと指示しない限り、単数形「1つの(a)」、「1つの(an)」および「その(the)」は複数形を同様に含むように意図されている。用語「を含む(comprise)」または「を含む(comprising)」あるいはその両方は、本明細書で使用される場合、述べられた特徴、整数、ステップ、動作、要素、またはコンポーネントあるいはその組合せの存在を特定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネントまたはそのグループあるいはその組合せの、存在または追加を排除しないことが、さらに理解されよう。
【0118】
以下の特許請求の範囲における、すべての機能付き手段(ミーンズ・プラス・ファンクション)または機能付き工程(ステップ・プラス・ファンクション)の要素の対応する構造、材料、作用、および等価物は、もしあれば、具体的に特許請求されるような他の特許請求される要素と組み合わせて機能を実施するために、あらゆる構造、材料、または作用を含むことを意図されている。例示および説明を目的として、1つまたは複数の実施形態の説明を提示してきたが、網羅的であること、または開示された形態に限定することは意図されていない。多くの修正形態および変形形態が当業者にとって明らかとなろう。実施形態は、様々な態様および実践的な用途を最良に説明するために選ばれ説明されたものであり、企図される特定の使用に適した様々な修正形態を伴う様々な実施形態を、当業者の他の者に理解させることができる。
図1A
図1B
図2
図3A
図3B
図3C
図3D
図4A
図4B
図4C
図4D
図4E
図5A
図5B
図6A
図6B
図7
図8