(57)【要約】  ホワイトボックスアタッカーに対する耐性を提供するデジタル署名生成（ＤＳＧ）プロセスが開示されている。特別に選択されたデータ変換をアルゴリズムの入力、出力、および内部パラメータに適用することによってなされている。特に、署名者の秘密鍵は本発明の保護されたインプリメンテーションにおいて明らかに現れることが無い。本発明のホワイトボックス・インプリメンテーション手続きは、従来のインプリメンテーションによって生成された署名と互換性のある署名を生成する。したがって、本発明の解決法は、相互運用を容易にし、従来のインプリメンテーションの当座の代替として使用できる。特に、デジタル署名生成プロセスの鍵（d）と生成元ドメインパラメータ（通常Ｇまたはｇと表記される）の変換について記載し、検証者には実際には鍵（d）を使用していないのに使用されたかのように見える署名済みメッセージを、本発明の実施形態によって生成できることを示している。これによって、前記鍵（d）が実際には使用されていないため、敵対者はそれを観察することができない。さらなる実施形態は、デジタル署名を生成するプロセスを観察することによって敵対者が前記鍵（d）を推測することを困難にする、さらなる保護を含んでいる。
2013524263.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する、暗号化秘密鍵（d）を敵対者Ｂから保護する方法であって、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Ａ上で記憶され使用され、敵対者Ｂはdを使用する暗号化デジタル署名生成（ＤＳＧ）プロセスの実行中にＡを観察でき、前記ＤＳＧプロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
ａ）1とn-1との間の区間中のランダムな整数fを選択するステップと、
ｂ）前記生成元と、nを法とするfの逆関数とに基づいて、変換済み生成元を作成するステップと、
ｃ）fに基づいてdを変換することにより、変換済み鍵（d’）を生成するステップと、
ｄ）前記生成元とdとのかわりに前記変換済み生成元とd’とを使用し、かつ、fを前記ＤＳＧプロセスに組み込んで、あたかもｄと前記生成元とが前記ＤＳＧプロセスに実際に使用されているかのようにQを使用する前記検証ステップによって検証されることができるデジタル署名を生成するステップを含む方法。
【請求項２】
ステップａ、ｂ、およびｃは、Ｂが観察できないように実行され、ステップｄはＢによる観察が可能な条件のもとでＡによって行われる、請求項１に記載の方法。
【請求項３】
ステップａ、ｂ、およびｃをオフラインで実行することによってＢが観察できないようにステップａ、ｂ、およびｃが実行される、請求項２に記載の方法。。
【請求項４】
前記生成元は、濃度がnの楕円曲線群を生成するために使用される楕円曲線上の点Gであり、前記変換済み生成元は、前記楕円曲線群内の別の点G’であり、ステップｂ）は、nを法とするfの逆関数をf-1に割り当て、Gをそれ自身にf-1回加算した結果をG’に割り当てることを含み、ステップｃ）はdf mod nの結果をd’に割り当てることを含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
前記デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名（r, s)を検証するための標準ＥＣＤＳＡデジタル署名検証プロセスであり、ステップｄ）は、
i）  区間[1, n-1]内のランダムな整数k’を選択するステップと、
ii）  点RにEC_Multiply(k’, G’)の結果を割り当てるステップであって、EC_Multiply(k’, G’)は楕円曲線点G’をそれ自身にk’回加算することを意味する、ステップと、
iii）  rにRx mod nの結果を割り当てるステップであって、RxはRのｘ座標である、ステップと、
iv）  r=0なら、ステップi）から再度開始するステップと、そうでなければ、
v）  前記メッセージMについてのハッシュ演算の値をeに割り当てるステップと、
vi）  k’-1(e f+d’r) mod nの値を計算し、その値をsに割り当てるステップと、
vii）s=0なら、ステップi）から再度開始するステップと、そうでなければ、
viii）  前記署名（r, s）を出力するステップと、を含み、
メッセージM上の前記署名（r, s）は、前記実際の秘密鍵dが実際には使用されておらず、従ってステップdの実行中にメモリにロードされることがないこと以外は、前記秘密鍵dを使用して標準ＥＣＤＳＡプロセスによって生成されるであろう署名と等価である、請求項４に記載の方法。
【請求項６】
デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名（r, s)を検証するための標準ＤＳＡデジタル署名検証プロセスであり、ドメインパラメータp, q, およびgを使用し、前記生成元はgであり、q=nが満たされ、ステップｂ）は、qを法とするfの逆関数をf-1に割り当てることと、gf-1 mod pの結果をg’に割り当てることとを含み、ただしf-1はqを法として計算され、ステップｃ）はdf mod qの結果をd’に割り当てることを含む、請求項１〜３のいずれかに記載の方法。
【請求項７】
前記ステップｄ）は、
i）  区間[1, n-1]内のランダムな整数k’を選択するステップと、
ii）  rpにg’k’ mod pの結果を割り当てるステップと、
iii）  rにrp mod qの結果を割り当てるステップと、
iv）  r=0なら、ステップi）から再度開始するステップと、そうでなければ、
v）  前記メッセージMについてのハッシュ演算の値をeに割り当てるステップと、
vi）  k’-1(ef+d’r) mod nの値を計算し、その値をsに割り当てるステップと、
vii）s=0なら、ステップi）から再度開始するステップと、そうでなければ、
viii）  前記署名（r, s）を出力するステップと、を含み、
メッセージM上の前記署名（r, s）は、前記秘密鍵dが実際には使用されておらず、従ってステップdの実行中にメモリにロードされることがないこと以外は、前記秘密鍵dを使用して標準ＤＳＡプロセスによって生成されるであろう署名と等価である、請求項６に記載の方法。
【請求項８】
ステップvi）は、一連の参照テーブルを使用して難読化されたソフトウェアルーチンを使用して、nを法とするefの値を計算し、前記計算中に前記fの値がメモリにロードされず、明らかにされないようにするステップを含む、請求項５または７に記載の方法。
【請求項９】
ステップvi）は、一連の参照テーブルを使用して難読化されたソフトウェアルーチンを使用して、nを法とするd’rの値を計算し、前記計算中に前記fとd’の値がメモリにロードされず、明らかにされないようにするステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記ソフトウェアルーチンは、オフライン段階で構築されたワードワイズ再コード化テーブルを含む、請求項８または９に記載の方法。
【請求項１１】
前記ハッシュ関数Ｈは、結果としてe’=Hf(M) = e*f mod nという値を生成する関数Hfと置き換えられ、項efがe’と置き換えられ、ステップiv)のk’-1(ef+d’r) mod nがk’-1(e’+d’r) mod nと置き換えられるようにする、請求項５または７に記載の方法。
【請求項１２】
前記方法のステップを実行するソフトウェア上で行われる制御フローおよびデータの難読化をさらに含む、請求項１〜１１のいずれかに記載の方法。
【請求項１３】
コンピュータが実行する、暗号化秘密鍵（d）を敵対者Ｂから保護する方法であって、前記暗号化秘密鍵はそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Ａ上で記憶され使用され、敵対者Ｂはdを使用する暗号化デジタル署名生成（ＤＳＧ）プロセスの実行中にＡを観察でき、前記暗号化プロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
ａ）1とn-1との間の区間中のランダムな整数fを選択するステップと、
ｂ）前記生成元と、nを法とするfの逆関数とに基づいて、変換済み生成元を生成するステップと、
ｃ）fに基づいてdを変換することにより、変換済み鍵（d’）を生成するステップと、
ｄ）機械実行可能な命令を記憶する機械読み取り可能な媒体に実施されるコンピュータプログラムを作成するステップであって、前記命令はＡによって実行される時に、前記生成元とdとのかわりに前記変換済み生成元とd’とをＡに使用させ、かつ、fを前記ＤＳＧプロセスに追加して、あたかもｄと前記生成元とが前記ＤＳＧプロセスに実際に使用されているかのようにQを使用する前記検証プロセスによって検証されることができるデジタル署名を作成するステップを含む方法。
【請求項１４】
前記デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名（r, s)を検証するための標準ＥＣＤＳＡデジタル署名検証プロセスであり、
前記生成元は、濃度がnの楕円曲線群を生成するために使用される楕円曲線上の点Gであり、前記変換済み生成元は、前記楕円曲線群内の別の点G’であり、ステップｂ）は、nを法とするfの逆関数をf-1に割り当て、Gをそれ自身にf-1回加算した結果をG’に割り当てることを含み、ステップｃ）はdf mod nの結果をd’に割り当てることを含む、請求項１３に記載の方法。
【請求項１５】
デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名（r, s)を検証するための標準ＤＳＡデジタル署名検証プロセスであり、ドメインパラメータp, q, およびgを使用し、前記生成元はgであり、q=nが満たされ、ステップｂ）は、qを法とするfの逆関数をf-1に割り当て、gｆ-1 mod pの結果をg’に割り当てることを含み、ただしｆ-1はqを法として計算され、ステップｃ）はdf mod qの結果をd’に割り当てることを含む、請求項１３に記載の方法。
【請求項１６】
コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な有形の媒体を含むコンピュータプログラム製品であって、前記命令はプロセッサで実行される時に前記プロセッサに暗号化秘密鍵（d）を敵対者Ｂから保護する方法を実行させ、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Ａ上で記憶され使用され、敵対者Ｂはdを使用する暗号化プロセスの実行中にＡを観察でき、前記暗号化プロセスはQを使用する公知の捕捉的プロセスを有し、前記コンピュータ読み取り可能な命令は、
ａ）1とn-1との間の区間中のランダムな整数fを選択するための命令と、
ｂ）f mod nの逆関数に基づいて、前記生成元の変換済み生成元値を計算するための命令と、
ｃ）fに基づいたdの変換済み値d’を計算するための命令と、
ｄ）前記fの値と、前記変換済み生成元と、d’とを、変換済み暗号化プロセスで引き続き使用されるように安全に記憶することであって、前記変換済み暗号化プロセスは、fと、前記変換された生成元と、d’とを使用して、あたかもｄと前記生成元とが前記暗号化プロセスに実際に使用されているかのようにQを使用する前記捕捉的プロセスによって検証されることができるデジタル署名を作成することを含む、コンピュータプログラム製品。
【請求項１７】
コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な有形の媒体を含むコンピュータプログラム製品であって、前記命令はコンピュータ装置（Ａ）によって実行される時に、秘密鍵dの保有者からであるとされるメッセージM上の署名（r, s）を検証するための標準ＥＣＤＳＡデジタル署名検証プロセスによって検証できるメッセージM上のデジタル署名（r, s）を前記コンピュータ装置に生成させ、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元Gに関連し、前記署名は作成可能である一方、前記コンピュータ読み取り可能な命令の実行中にＡを観察可能な敵対者からdを保護し、前記コンピュータ読み取り可能な命令は、
i）  区間[1, n-1]内のランダムな整数k’を選択するための命令と、
ii）  点RにEC_Multiply(k’, G’)の結果を割り当てるための命令であって、EC_Multiply(k’, G’)は楕円曲線点G’をそれ自身にk’回加算することを意味し、前記楕円曲線点G’は前記1からn-1の間の区間内の事前に選択されたランダムな整数fを使用して、前記生成元Gの変換に基づいて事前に生成されているような命令と、
iii）  rにRx mod nの結果を割り当てるための命令であって、RxはRのｘ座標であるような命令と、
iv）  r=0なら、ステップi）へ分岐して戻るための命令と、そうでなければ、
v）  前記メッセージMについてのハッシュ演算の値をeに割り当てるための命令と、
vi）  k’-1(ef+d’r) mod nの値を計算し、その値をsに割り当てるための命令であって、d’は、fに基づいて事前に決定された、dを変換した値であるような命令と、
vii）s=0なら、ステップi）へ分岐して戻るための命令と、そうでなければ、
viii）  前記署名（r, s）とともに、前記デジタル署名されたメッセージMを、検証用に第三者へ送信するための命令と、を含み、
メッセージM上の前記署名（r, s）は、前記実際の秘密鍵dが使用されておらず、従ってステップdの実行中にメモリにロードされることがないこと以外は、前記秘密鍵dを使用して標準ＥＣＤＳＡプロセスによって生成されるであろう署名と等価である、コンピュータプログラム製品。
【請求項１８】
コンピュータ読み出し可能な命令を記憶するコンピュータ読み出し可能な有形の媒体を含むコンピュータ製品であって、前記命令はコンピュータ装置（Ａ）によって実行される時に、開示されているように、署名を行うためのオフライン変換値を使用してメッセージM上にデジタル署名（r, s）を前記コンピュータ装置に生成させる、コンピュータ製品。
【請求項１９】
上記請求項に記載の方法およびシステムのいずれかを実行する、セットトップボックス。
【請求項２０】
上記請求項に記載の方法およびシステムのいずれかを実行する、コンピュータ装置。
【発明の詳細な説明】
【関連出願の参照】
【０００１】
これは、本発明の第一の出願である。
【技術分野】
【０００２】
本発明は一般に、暗号法に関する。本発明は特に、秘密鍵やその他の秘密パラメータなど、暗号化アセットを保護する方法およびシステムに関する。
【背景技術】
【０００３】
デジタル署名アルゴリズム（ＤＳＡ)や楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）が、標準FIPS PUB 186-3（米商務省）やANS X9.62-2005（American National Standard for Financial Services（米国金融サービス国家標準））に記載されており、これら文献は、この参照によりすべてをここに包含する。これら署名アルゴリズムは、公開鍵暗号を使用してデジタルメッセージ上のデジタル署名の作成と検証を可能にしている。ＤＳＡにおいてもＥＣＤＳＡにおいても、署名者は秘密鍵と公開鍵を所有している。秘密鍵はデジタル署名を生成するため（つまり、メッセージに署名するため）に使用され、公開鍵は前記署名を検証するために第三者によって使用される。
【０００４】
ＤＳＡおよびＥＣＤＳＡは広く展開され（たとえばｓｓｈ、ＳＳＬ／ＴＬＳ、カナダ郵政省デジタル消印、ＤＴＣＰ，ＡＡＣＳ，ＭＳ−ＤＲＭなど）、データ発信元認証、データ整合性、否認防止を提供するために使用できる。しかし、ＤＳＡやＥＣＤＳＡの署名が提供する保証は常に、署名者の秘密鍵が秘密である（つまり、秘密鍵がアタッカーに漏えいしていない）という前提に基づいている。
【０００５】
以下の参考文献はさらに背景情報を提供する。この参照によりそれらの内容すべてをここに包含する。
[l] American National Standard for Financial Services, ANS X9.62-2005, Public Key Cryptography for the Financial Services Industry, The Elliptic Curve Digital Signature Algorithm (ECDSA), 16 November 2005.
[2] D. Hankerson, A. Menezes, S. Vanstone, Guide to Elliptic Curve Cryptography, 2003. 
[3] Information Technology Laboratory, National Institute of Standards and Technology, FIPS PUB 186-3, Digital Signature Standard (DSS), June 2009.
[4] Standards for Efficient Cryptography, SEC 1 : Elliptic Curve Cryptography, Version 2.0, 21 May 2009.
[5] National Security Agency, NSA Suite B Cryptography, available from http://www.nsa.gov/ia/programs/suiteb cryptography/
[6] Digital Transmission Content Protection Specification, Volume1 (Informational Version), Revision 1 .51 , 1 October2007.
【０００６】
ＥＣＤＳＡおよびＤＳＡの署名生成処理は、通常コンピュータソフトウェアに実行され、特定のコンピュータ装置（たとえば、携帯電話、セットトップボックス、スマートカードなど）上で実行される。多くのアプリケーションにおいて、この処理は、署名者の制御外の環境で―敵対者が存在するかもしれない環境（つまり、署名がコンピュータ処理されている時に敵対者が装置を見ているかもしれない）で起こる。
【０００７】
署名生成の入力と出力のみを解析する敵対者は、「ブラックボックス」のような実行を効果的に行う。ＤＳＡやＥＣＤＳＡは、かかるブラックボックスアタッカーに対抗するよう設計された。しかし、単なる入力および出力以上の情報が入手されることがよくある。装置消費電力、実行時間、電磁漏洩、データ障害に対する応答、などの付加的な情報が、ソフトウェアの実行についてアタッカーに手掛かりを与える。それによって、秘密鍵が少しずつ漏えいして、署名方式が完全に漏れてしまうことが示されてきた。
【０００８】
より堅牢なセキュリティモデルでは、ホワイトボックスアタッカーに対抗することを検討している。ホワイトボックスアタッカーは、署名をコンピュータ処理するソフトウェアの実行を完全に見通している。ホワイトボックスアタッカーに対抗することが強く望まれているが、ＤＳＡやＥＣＤＳＡのホワイトボックス・インプリメンテーションはまだ提案されていない。この問題の具体的な例として、音声／映像内容を保護するために使用されるＤＴＣＰプロトコルを検討する。下記引用は、ＤＴＣＰ仕様書からの抜粋であり、上記参考文献[6]に定義されている通りである。
４．３  規格準拠の装置の製造
完全認証をサポートしている規格準拠の装置（つまり、ブランドやモデルにかかわらず製造された各アイテム）には、ＤＴＬＡによって生成された固有の装置ＩＤ（ＸＩＤ)と装置ＥＣ−ＤＳＡの公開／秘密鍵の一対が割り当てられる。[秘密鍵]は、その開示を防止するような方法で前記装置内に記憶されなければならない。前記装置には、ＤＴＬＡによる装置証明書（ＸＣＥＲＴ）が発行されなければならない。この証明書は、前記装置内に記憶され、認証プロセスにおいて使用される。さらに、前記装置は、暗号プロトコルを実行するために必要なその他の定数や鍵を記憶する必要がある。
【０００９】
上記に強調された一文は、ＤＴＣＰ対応装置がＥＣＤＳＡ秘密鍵を保護する対策を取らなければならないと述べている。しかし、かかる装置は、完全認証プロトコル中にＥＣＤＳＡ署名を作成するために秘密鍵を使用しなければならない。秘密鍵を単に暗号化状態で記憶することによって保護できると思われるが、実際には、署名操作を行うためには、秘密鍵を使用するためにまず復号化しなければならず、この時にホワイトボックスアタッカーが秘密鍵を抽出できる。この問題を軽減するためには、秘密鍵を極秘に維持し、秘密鍵がアタッカーに漏えいすることなくデジタル署名操作が行われるようにする保護プロセスが必要である。
【発明の概要】
【００１０】
本発明の目的は、従来のデジタル署名プロセスの欠点の少なくとも一つを除去するか軽減することである。特に、本発明の一つの態様は、署名者の鍵が、動作中のデジタル署名プロセスを観察することができる敵対者によって推測されないように、より安全に保護するプロセスに関する。
【００１１】
したがって、本発明の態様は、ホワイトボックスアタッカーに耐性を提供するデジタル署名生成（ＤＳＧ）プロセスを実行するための方法とシステムに関する。これは、特別に選択されたデータ変換をアルゴリズムの入力、出力、および内部パラメータに適用することによってなされている。特に、署名者の秘密鍵は本発明の保護されたインプリメンテーションにおいて明らかに現れることが無い。本発明の新たなホワイトボックス・インプリメンテーションは、従来のインプリメンテーションによって生成された署名と互換性のある署名を生成する。したがって、本発明の解決法は、相互運用を容易にし、従来のインプリメンテーションの当座の代替として使用できる。特に、デジタル署名生成プロセスの鍵（d）と生成元ドメインパラメータ（通常Ｇまたはｇと表記される）の変換について記載し、検証者には実際には鍵（d）を使用していないのに使用されたかのように見える署名済みメッセージを、本発明の実施形態によって生成できることを示している。前記鍵（d）が実際には使用されていないため、敵対者はそれを観察することができない。さらなる実施形態は、デジタル署名を生成するプロセスを観察することによって敵対者が前記鍵（d）を推測することを困難にする、さらなる保護を含んでいる。
【００１２】
本発明の一つの態様は、ランダムな整数fに基づいてdを変換することにより、変換済みの鍵（d’）を作成するための方法およびシステムを提供し、これは変換済み生成元（たとえばG’やg’）や、f自体とともに使用することができ、互換性のある署名メッセージを生成する。かかる様態によると、前記変換済み生成元は、前記生成元とnを法とするfの逆関数とに基づいて生成される。また、ＤＳＧを少し変更して、前記ＤＳＧプロセス中で前記生成元（Gまたはg）とdとのかわりに変換済み生成元（たとえばG’やg’）とd’とを使用し、またfを組み込み、あたかもdと前記生成元とが前記ＤＳＧプロセスに実際に使用されているかのように公開鍵Qを使用する前記検証ステップによって検証されることができるデジタル署名を生成する。
【００１３】
一様態において、コンピュータが実行する、暗号化秘密鍵（d）を敵対者Ｂから保護する方法であって、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Ａ上で記憶され使用され、敵対者Ｂはdを使用する暗号化デジタル署名生成（ＤＳＧ）プロセスの実行中にＡを観察でき、前記ＤＳＧプロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
ａ）1とn-1との間の区間におけるランダムな整数fを選択するステップと、
ｂ）前記生成元と、nを法とするfの逆関数とに基づいて、変換済み生成元を生成するステップと、
ｃ）fに基づいてdを変換することにより、変換済み鍵（d’）を生成するステップと、
ｄ）前記生成元とdとのかわりに前記変換済み生成元とd’とを使用し、かつ、fを前記ＤＳＧプロセスに組み込んで、あたかもdと前記生成元とが前記ＤＳＧプロセスに実際に使用されているかのようにQを使用する前記検証ステップによって検証されることができるデジタル署名を生成するステップを含む方法が、本発明によって提供される。
【００１４】
さらなる態様において、コンピュータが実行する、暗号化秘密鍵（d）を敵対者Ｂから保護する方法であって、前記暗号化秘密鍵はそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Ａ上で記憶され使用され、敵対者Ｂはdを使用する暗号化デジタル署名生成（ＤＳＧ）プロセスの実行中にＡを観察でき、前記暗号化プロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
ａ）1とn-1との間の区間中のランダムな整数fを選択するステップと、
ｂ）前記生成元と、nを法とするfの逆関数とに基づいて、変換済み生成元を生成するステップと、
ｃ）fに基づいてdを変換することにより、変換済み鍵（d’）を作成するステップと、
ｄ）機械実行可能な命令を記憶する機械読み取り可能な媒体に実施されるコンピュータプログラムを生成するステップであって、前記命令はＡによって実行される時に、前記生成元とdとに替えて前記変換済み生成元とd’とをＡに使用させ、かつ、fを前記ＤＳＧプロセスに追加して、あたかもｄと前記生成元とが前記ＤＳＧプロセスに実際に使用されているかのように前記検証プロセスによって検証されることができるデジタル署名を生成するステップを含む方法が、本発明によって提供される。
【００１５】
さらなる態様において、コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な有形の媒体を含むコンピュータプログラム製品であって、前記命令はプロセッサで実行される時に前記プロセッサに暗号化秘密鍵（d）を敵対者Ｂから保護する方法を実行させ、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Ａ上で記憶され使用され、敵対者Ｂはdを使用する暗号化プロセスの実行中にＡを観察でき、前記暗号化プロセスはQを使用する公知の捕捉的プロセスを有し、前記コンピュータ読み取り可能な命令は、
ａ）1とn-1との間の区間中のランダムな整数fを選択するための命令と、
ｂ）f mod nの逆関数に基づいて、前記生成元の変換済み生成元値を計算するための命令と、
ｃ）fに基づいたdの変換済み値d’を計算するための命令と、
ｄ）前記fの値と、前記変換済み生成元と、d’とを、変換済み暗号化プロセスで引き続き使用されるように安全に記憶することであって、前記変換済み暗号化プロセスは、fと、前記変換された生成元と、d’とを使用して、あたかもｄと前記生成元とが前記暗号化プロセスに実際に使用されているかのようにQを使用する前記捕捉的プロセスによって検証されることができるデジタル署名を作成することを含む、コンピュータプログラム製品が、本発明によって提供される。
【００１６】
さらなる態様において、コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な有形の媒体を含むコンピュータプログラム製品であって、前記命令はコンピュータ装置（Ａ）によって実行される時に、秘密鍵dの保有者からであるとされるメッセージM上の署名（r, s）を検証するための標準ＥＣＤＳＡデジタル署名検証プロセスによって検証できるメッセージM上のデジタル署名（r, s）を前記コンピュータ装置に生成させ、前記秘密鍵dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元Gに関連し、前記署名は生成可能である一方、前記コンピュータ読み取り可能な命令の実行中にＡを観察可能な敵対者からdを保護し、前記コンピュータ読み取り可能な命令は、
ｉ）区間[1, n-1]内のランダムな整数k’を選択するための命令と、
ｉｉ）点RにEC_Multiply(k’,G’)の結果を割り当てるための命令であって、EC_Multiply(k’,G’)は楕円曲線点G’をそれ自身にk’回加算することを意味し、前記楕円曲線点G’は前記1からn-1の間の区間内の事前に選択されたランダムな整数fを使用して、前記生成元Gの変換に基づいて事前に生成されているような命令と、
ｉｉｉ）rにRx mod nの結果を割り当てるための命令であって、RxはRのｘ座標であるような命令と、
ｉｖ）r=0なら、ステップｉ）へ分岐して戻るための命令と、そうでなければ、
ｖ）前記メッセージMについてのハッシュ演算の値をeに割り当てるための命令と、
ｖｉ）k’-1(ef＋d’r) mod nの値を計算し、その値をsに割り当てるための命令であって、d’は、fに基づいて事前に決定された、dを変換した値であるような命令と、
ｖｉｉ）s=0なら、ステップｉ）へ分岐して戻るための命令と、そうでなければ、
ｖｉｉｉ）前記署名（r, s）とともに、前記デジタル署名されたメッセージMを、検証用に第三者へ送信するための命令と、を含み、
メッセージM上の前記署名（r, s）は、前記実際の秘密鍵dが使用されておらず、従って実行中にメモリにロードされることがないこと以外は、前記秘密鍵dを使用して標準ＥＣＤＳＡプロセスによって生成されたであろう署名と等価である、コンピュータプログラム製品が、本発明によって提供される。さらに、本明細書に記載のように、別の態様によると、かかるコンピュータプログラム製品はＤＳＡに適合できる。
【００１７】
開示されているように、さらなる態様において、コンピュータ読み出し可能な命令を記憶するコンピュータ読み出し可能な有形の媒体を含むコンピュータ製品であって、前記命令はコンピュータ装置（Ａ）によって実行される時に、署名を行うためのオフライン変換値を使用してメッセージM上にデジタル署名（r, s）を前記コンピュータ装置に生成させる、コンピュータ製品が、本発明によって提供される。
【００１８】
本発明のさらなる様態と特徴は、当業者には、添付の図面とともに本発明の具体的な実施形態についての下記の記載を参照すれば明白になるであろう。
【図面の簡単な説明】
【００１９】
本発明の実施形態を、あくまでも例として、添付の図面を参照して説明する。
【図１】図１は、デジタル署名生成の一般的なプロセスを示すフローチャートである。
【図２】図２は、デジタル署名検証の一般的なプロセスを示すフローチャートである。
【図３】図３は、ＥＣＤＳＡ署名生成のステップを示すフローチャートである。
【図４】図４は、本発明の実施形態に準じた事前手続きのステップを示すフローチャートである。
【図５】図５は、本発明の実施形態に準じたＥＣＤＳＡ署名生成プロセスのステップを示すフローチャートである。
【図６】図６は、本発明の実施形態に準じた、かかるＥＣＤＳＡ署名生成プロセスをよりロバストにするプロセスを作成するステップを示すフローチャートである。
【図７】図７は、本発明の実施形態が行われるコンピュータシステムの簡易な例を示すブロック図である。
【発明を実施するための形態】
【００２０】
一般的には、本発明は、デジタル署名生成プロセスにおける秘密鍵、秘密パラメータなどを含む暗号化資産を保護するための方法およびシステムを提供する。
【００２１】
一般的なデジタル署名生成プロセスが、図１に示されている。ここで、メッセージ（ｍ）は、署名生成アルゴリズム１０４を使用して秘密鍵(ｄ）で署名され、デジタル署名（Ｓ)が生成される。
【００２２】
一般的なデジタル署名検証プロセスが、図２に示されている。ここで、秘密鍵（ｄ）の保有者によって署名されたと考えられているメッセージ（ｍ）上のデジタル署名（Ｓ）が、前記保有者の公開鍵（Ｑ)を使用して、署名検証アルゴリズム２０６を使用して検証される。かかるプロセスの利点は、誰でも公開鍵（Ｑ)を使用して署名を検証できることであり、実際に秘密鍵（ｄ）の保有者によって署名されたかどうかによって、前記プロセスは署名の承認または拒否２０８を行う。
【００２３】
本発明の一つの様態は、署名（Ｓ）を作成でき、既存の検証プロセスに適合するｄを保護する、方法とシステムを提供する。言いかえると、本発明の実施形態は、コンピュータ装置Ａ上でＳを作成し、これは前記署名生成プロセスを観察することによって積極的にｄを取得しようとしている敵対者Ｂが居るところで行われるかもしれない。前記署名生成プロセスは、前記プロセス２０６を変更することを検証者に求めることが無いまま、Ｑを使用した検証が可能である。
【００２４】
ＤＳＡまたはＥＣＤＳＡ署名生成のインプリメンテーションを、本発明の実施形態に準じて、ホワイトボックスアタッカーに対抗するものに転換するためのプロセスの例を、以下に記載する。
【００２５】
「スムーズな（円滑な）」という語は、署名生成の従来の無防備なインプリメンテーション（つまり、ホワイトボックスアタッカーに対して脆弱であるインプリメンテーション）について述べるために使用し、「ロバストな（堅牢な）」という語は、本発明の実施形態に準じた保護されたインプリメンテーションについて述べるために使用する。
表記法
【００２６】
以下に、楕円曲線暗号法（ＥＣＣ)に関するいくつかの用語と表記法を定義する。ＥＣＣは参考文献[2]に記載の同様の表記法を使用している。
【００２７】
2013524263.tif 000003
【００２８】
（スムーズなＥＣＤＳＡ）
ここに無防備なＥＣＤＳＡ署名生成操作の概略を述べる。これは、ANSX9.62[1]の記載に従っている。
【００２９】
ＥＣＤＳＡを使用する前に、特定の楕円曲線、暗号学的ハッシュ関数（Ｈ）、および生成元点Ｇについて選択しなければならない。この情報（「ドメインパラメータ」と称されることもある）は一般的に、秘密ではないとされている。
【００３０】
下記は、ＥＣＤＳＡを使用したメッセージに署名するための従来の（すなわちスムーズな）プロセスを表す。
2013524263.tif 000004
【００３１】
楕円曲線計算がステップ２のみで使用され、点Rを計算している。ステップ３および５での演算はnを法とする一般的な計算である。ただし、秘密鍵dはステップ５でのみ使用される。
【００３２】
このプロセスを図３に示す。上記のようなステップ１は、図中、ブロック３０４と表示されている。同様に、上記のようなステップ２は、図中、ブロック３０６と表示されている。当業者には明らかなように、ステップ２は、Gが楕円曲線点であるので、整数乗算を含まず、むしろ楕円曲線乗算を含む。ステップ２において、Rには、Gが自身にk回加算された場合に得られる点が割り当てられ（←として示されている）、EC_Multiply(k,G)という表記はここではこのタイプの楕円曲線乗算を示すために使用される。上記のようなステップ３は、ブロック３０８および決定３１０と表示されており、Rx mod nの結果をrに割り当てることを含む。ここで、rが０ではないと仮定するとRxはRのｘ座標であり、もしrが０であれば前記プロセスはステップ１へ分岐して戻る。ステップ４は、図３のブロック３１２に示されているように、前記ハッシュ関数がメッセージに適用された場合に得られる値をeに割り当てることを含む。ハッシュ関数をメッセージに適用することは、H(M)と示される。上記のようなステップ５は、ブロック３１４および決定３１６と表示され、k-1(e+dr) mod nの結果を値sに割り当てることを含み、その結果、署名Ｓ=(r, s)の出力３１８が得られる。
【００３３】
上記署名生成プロセス中に、実際に、保護が必須の二つの極秘数値がある。
１．秘密鍵、d
２．メッセージ毎の秘密（per-message secret）、k
【００３４】
dが保護されなければならないのは明瞭である。しかし、もしkの値が漏えいしたら、敵対者はkからdを導き出せる。ハッシュ関数Ｈがわかっているので、eはメッセージＭから判定できる。したがって、敵対者がkを取得すれば、nを法とする下記方程式を解くことによってMについて得られた署名(r, s)から秘密鍵を取得することができる。
s=k-1(e+dr)
ここで、dのみがわかっていない単一方程式を得る。したがって、dを解くことができる。これが潜在的なセキュリティの問題である。
【００３５】
したがって、従来のＤＳＧプロセスを実行するコンピュータ装置Ａを観察する敵対者Ｂは、乱数生成器へのコールを待ち、数値kの選択に気づくだけで、秘密鍵dを導き出せる。または、敵対者Ｂは装置Ａ上で実行される命令を観察し、kGを計算してkを導き出せるであろう。
（ロバストなＥＣＤＳＡ）
【００３６】
本発明の実施形態に準じたＥＣＤＳＡ署名のロバストなインプリメンテーションを作成するプロセスの一例について検討する。
【００３７】
たとえばオフラインでセットアップする最中など、敵対者Ｂによって観察できないやり方で、実施形態に準じて事前プロセスを行う。この事前プロセスは、区間[1, n-1]中の秘密の数fを選択することを含む。fは秘密鍵dを保護するために使用される。実施形態に準じて、二つの変換プロセスが起動され（どちらもfに関連する）、以下の値を有する変換済み（または難読化済み）鍵と変換済み（または難読化済み）生成元を生成する。
・  G’= f-1G    ただしf-1はnを法として計算される。
・  d’= fd mod n
【００３８】
G’もd’も、fの選択の直後にオフラインで計算できる。
【００３９】
この事前プロセスは、実施形態に準じて、図５に示されている。図４のフローチャートでは、入力は既知の生成元、この場合Gと、秘密鍵dである。プロセスはランダムな整数fを選択すること（５０４）によって開始されるが、ここでfは区間[1, n-1]内のランダムな整数である。前記変換済み生成元G’が、nを法とするfの逆関数（f-1と示す）を計算することによって決定され（５０６）、その後、５０８で、f-1とGの楕円曲線乗算を行う。そして、変換済み（または難読化済み）鍵d’にfd mod nの値が割り当てられる。出力は、ランダムな整数f、変換済み（または難読化済み）鍵d’、および変換済み（または難読化済み）生成元G’である。下記に検討するように、これら3つの値すべてがロバストなＥＣＤＳＡ署名生成プロセスの実施形態で使用される。
【００４０】
本発明の実施形態による、ロバストな署名プロセスの基本的なステップを以下に示す。
2013524263.tif 000005
【００４１】
上記のように、ロバストなＥＣＤＳＡ署名生成プロセスを組み込むかかる実施形態は、生成元Gとdのかわりに、変換済み生成元G’とd’とを利用し、また、前記ＥＣＤＳＡ署名生成プロセスにfを組み込み（ステップ５を参照）、デジタル署名S=(r, s)を生成する。このデジタル署名は、あたかもdと前記生成元Gが実際にＥＣＤＳＡ署名生成プロセスに使用されたかのように、Qを使用する従来のＥＣＤＳＡ検証プロセスによって検証できる。つまり、ステップ５においてeをefと置き換えることによって、fが前記プロセスに組み込まれる。このようにステップ５でfを利用することによって（かつ、オフラインでなされた変換にfが使用されてG’およびd’を生成したことを考え）、得られた署名は、従来のプロセスで作成されたものと完全互換である。
【００４２】
本発明の実施形態に準じた、上記のプロセスを示すフローチャートが図５に示されている。プロセス７００中のステップ１は、上記のように、図中でブロック６０４と表示される。同様に、上記のようなステップ２は、図中でブロック６０６と表示される。なお、当業者には明らかなように、ステップ２は、G’が曲線上の点であるので、整数乗算を含まず、むしろ楕円曲線乗算を含む。したがって、Rには、G’が自身にk’回加算された場合に得られる点が割り当てられる。上記のようなステップ３は、ブロック６０８および決定６１０と表示されており、Rx mod nの結果を数値rに割り当てることを含む。ここで、rが０ではないと仮定するとRxはRのｘ座標であり、もしrが０であれば前記プロセスはステップ１へ分岐して戻る。ステップ４は、図６のブロック６１２に示されているように、前記ハッシュ関数Hがメッセージに適用された場合に得られる値をeに割り当てる（H(M)と示される）ことを含む。上記のようなステップ５は、ブロック６１４および決定６１６と表示され、k’-1(ef+d’r) mod nの結果を数値sに割り当てることを含み、その結果、署名Ｓ=(r, s)の出力６１８が得られる。
【００４３】
署名生成のこのバージョンは、通常のＥＣＤＳＡと完全互換の署名を生成する（すなわち、本発明のロバストなインプリメンテーションによって生成された署名（r, s）はいずれも、スムーズなインプリメンテーションでも作成できたであろうものである）。
（解析）
【００４４】
本発明の実施形態は、下記の二つの目標に対処するためのものである。
１．アタッカーが、メッセージ毎のランダムな数k’の値を獲得することから秘密鍵を推測できるようになることを防ぐ。前述のように、アタッカーがメッセージ毎の秘密kを獲得すると、従来のＤＳＧを使用してメッセージMとその署名（r, s）から秘密鍵dを算出することが可能である。以下に説明するように、これはk’の場合と異なる。
２．アタッカーがdを獲得することを防ぐ。dは秘密鍵である。なお、他の保護形式が無ければ、ホワイトボックス環境において敵対者によって署名アルゴリズムの実行中にd’の値が観察される可能性がある。したがって、実施形態ではデータ変換をさらにそれに適用することによって、d’に対する保護の層をさらに厚くする。しかし、次の意味において、前記値d’は、それ自体はdについての情報を漏えいしない：xが値d’であると仮定する。区間[1, n-1]内のどの整数dについても、d’=fd mod nをxと等しくさせるfの値が存在する（すなわち、xd-1 mod nと等しいfをとる）。したがって、アタッカーが値d’のみを使用してdの可能性のある値を排除することは可能ではない。
【００４５】
上記の目標を達成するためには、ステップ２でRの計算にさらに保護を追加するためにさらなるリソースを使用することが必要であるとは思われない。以下に、このことを説明する。
【００４６】
ステップ２で使用される３つの値、R、k’、G’について検討する。これら値が敵対者にすべて知られていると仮定する。また、Gは公的に入手可能な規格によく現れるので、敵対者が知っていると仮定する。G’= f-1Gなので、敵対者はf-1を、そしてfを、この等式から計算しようとするであろうが、これは前記目標２と矛盾する。しかし、この計算は、ＥＣＤＬＰを解決することになるが、これは実行不可能と考えられる。したがって、敵対者はGおよびG’からfを計算することはできない。
【００４７】
さらに、上記の目標１について、従来のＥＣＤＳＡにおいてはkが分かれば秘密鍵dがわかるが、それと同様にk’がわかれば秘密鍵dがわかるというわけではない。これは、k’と署名（r, s）からdを計算するというタスクは、nを法とする下記方程式を解くことになるからである。
s=k’-1(e+dr)f
【００４８】
しかし、従来のＤＳＧとは異なり、上記方程式は二つの未知の値がある。dとfである（すなわち、一つの方程式と二つの未知数がある）。したがって、k’が分かったとしても、dとfとの両方が未知なので、敵対者はこの一つの方程式からdを抽出することはできない。
【００４９】
上記に検討した実施形態は、かかるプロセスを従来のＤＳＧよりもロバストにするようにＤＳＧを変更するが、アタッカーがfを獲得することを困難にすることにより、かかる改良されたシステムをよりロバストにすることができる。したがって、本発明の実施形態は、fを選択し、変換済み値G’およびd’をＢが観察できない方法で生成する事前ステップを行う。これらステップをＢが観察できない方法で行う一つのやり方は、これらステップをオフラインでおこなうことである。「オフライン」とは、ＡがＢによる観察を受けないような時間または場所において、ということか、または、異なるコンピュータ装置上で、ということを意味する。たとえば、Ａがスマートカードかセットトップボックスの場合、オフラインとは、かかる装置の出荷以前を含む。Ａがパーソナルコンピュータの場合、これらステップは別のコンピュータ上で実行されて何らかの安全な媒体によりＡに提供できる。または、これらステップは、安全なハードウェアを使用することによってＢによる観察を受けないような方法で実行することができる。
【００５０】
さらに、より好適な実施形態において、敵対者がステップ５の計算（すなわち、s←k’-1(ef+d’r) mod n）を観察することからfとd’の値を推測することを困難にするために、さらなる難読化技術が使用される。一つの実施形態において、ステップ５は下記のプロセスを実行することによって算出される。まず、二つの乗算関数を生成する（これら関数は、一連の参照テーブルを使用して難読化されたソフトウェアルーチンの形式をとってもよい）。
mult_by_f(...), mult_by_dhat(...)
【００５１】
これら関数は、一実施形態に準じて、オフライン段階で構築されたワードワイズ再コード化テーブルを含み、多倍精度整数xを入力としてとり（すなわち、３２ビットの単語のアレイ）、それぞれxf mod nと、xd’ mod nとを返す。これら二つの関数は、一実施例に準じて、下記のように使用されてステップ５の計算を行う。
5.1: e_f ← mult_by_f(e)
5.2: dhat_r ← mult_by_dhat(r)
5.3: tmp ← e_f+dhat_r mod n
5.4: s ←k’-1*tmp mod n
（DSA）
【００５２】
なお、例示を目的として、上記では主としてＥＣＤＳＡに焦点をあてた。しかし、ＥＣＤＳＡとＤＳＡは密接に関連している。当業者であれば、ＥＣＤＳＡについて上記に示した詳細な説明や例をＤＳＡ署名生成に容易に適用できるであろうと思われるが、ここに本発明の実施形態に準じたプロセスの概略を提示する。
【００５３】
ここに無防備なＤＳＡ署名生成処理の概略を述べる。これは、FIPS PUB 186-3[3]の記載に従っている。
【００５４】
ＤＳＡを使用する前に、素数p、素数q（p-1を割り切る素数）、pを法とする位数qの生成元ｇ、というドメインパラメータについて選択しなければならない。ドメインパラメータは一般的に、秘密ではないとされている。
【００５５】
ＤＳＡを使用してメッセージに署名する方法は以下のとおりである。
2013524263.tif 000006
【００５６】
上記の算術演算はすべてモジュラー演算である（すなわち、pを法とする演算、またはqを法とする演算）。
【００５７】
署名生成中に、保護が必須の二つの極秘数値がある。
１．秘密鍵、d
２．メッセージ毎の秘密(per-message secret)、k
【００５８】
dが保護されなければならないのは明瞭である。もしkの値が漏えいしたら、敵対者はkと、qを法とする下記方程式を解くことによってMについて得られた署名(r, s)とからdを導き出すことができる。
s=k-1(e+dr)
【００５９】
（ロバストな署名生成）
ＤＳＡ署名生成のロバストなインプリメンテーションを生成する一実施形態を以下に示す。
【００６０】
上記と同様、たとえばオフラインでセットアップする段階など、Ｂによって観察できないやり方で、区間[1, q-1]中の秘密の数fを選択する。fは秘密鍵dを保護するために使用される。実施形態に準じて、二つの変換プロセスが起動され（どちらもfに関連する）、以下の値を有する変換済み鍵と変換済み生成元を生成する：f：
・  g’ = gf-1 mod p    ただしf-1はqを法として計算される。
・  d’= ｆd mod q
【００６１】
g’もd’も、fの選択の直後にオフラインで計算できる。本発明の実施形態に準じた、ロバストなＤＳＡ署名プロセスの基本的なステップを以下に示す。
2013524263.tif 000007
【００６２】
署名生成のこのバージョンは、通常のＤＳＡと完全互換の署名を生成する（すなわち、本発明のロバストなインプリメンテーションによって生成された署名（r, s）はいずれも、スムーズなインプリメンテーションでも生成できたであろうものである）。
さらなる保護
【００６３】
上記実施形態のうちのいずれが実行されるかにかかわらず、制御フロー変換とデータ変換が、署名生成処理を実行するソースコードに適用できる。これは、敵対者がＤＳＧプロセスを実行するコンピュータ装置の操作を観察することにより、たとえばd’やfなどの秘密のパラメータを推測することをより困難にするためである。図６は、本発明の実施形態に準じて、署名を生成するソフトウェアを難読化することにより、さらにパラメータを保護するプロセスの例を示すフローチャートである。したがって、上記のプロセス７００を実行するソースコードが、制御フロー変換７０２とデータ変換７０４とを適用することによりさらに保護され、よりロバストなインプリメンテーションが生成される。
【００６４】
前記制御フロー変換７０２は、フローを制御するための多数の関数を使用して、所与のプログラムの制御フローを新たな制御フロー形式にマップする。かかる変換の例としては、２００４年８月１７日発行の米国特許第６７７９１１４号に記載のような制御フロー変換の例があり、この参照により前記文献をすべてここに包含する。前記データ変換７０４には、データ操作および位置の両方を数学的空間へ変換する数学的マッピング関数が関与する。これは２００３年７月１５日発行の米国特許第６５９４７６１号、２００５年１月１１日発行の米国特許第６８４２８６２号、および２００５年７月２８日公開の米国特許公報ＵＳ‐２００５‐０１６６１９１Ａ１号に記載されており、この参照によりその内容すべてをここに包含する。
【００６５】
別の実施形態においては、fに別レベルの保護を提供するために、ef mod n（ステップ５で使用）を別のやり方で計算する。前記値eは入力メッセージMのハッシュと等しいので、本発明の実施形態は、前記ハッシュ計算にnを法とするfの演算による乗算を組み込む。もちろん、これは、使用されるハッシュ関数の性質によるが、かかる実施形態中で適切なハッシュ関数を想定すると、前記ハッシュ関数Ｈは関数Hfと置き換えられ、これはその結果e’=Hf(M) mod n = e*f mod nの値を生成する。さらに、ステップ５で、項efがe’と置き換えられるので、k’-1(ef+d’r) mod nがk’-1(e’+d’r) mod nと置き換えられる。
【００６６】
本発明は、所与のコンピュータシステム上で実施できると理解されるべきである。本発明の実施形態が行われるコンピュータシステムの簡易化した例を、図７のブロック図に示す。このコンピュータシステム１１０は、表示装置１１２、キーボード１１４、コンピュータ１１６、および外部装置１１８を含む。
【００６７】
前記コンピュータ１１６は、中央処理装置（ＣＰＵ）１２０などの、プロセッサまたはマイクロプロセッサを一つ以上含んでもよい。前記ＣＰＵ１２０は数学的演算処理を行い機能を制御して、内部メモリ１２２、好適にはランダムアクセスメモリ（ＲＡＭ）および／または読み出し専用メモリ（ＲＯＭ）、および場合によっては増設メモリ１２４に保存されているソフトウェアを実行する。前記増設メモリ１２４は、たとえば、ビデオゲーム装置、ＥＰＲＯＭやＰＲＯＭなどの着脱式メモリチップや、当該技術分野で公知の同様の記憶媒体のような、マスメモリストレージ、ハードディスク装置、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、プログラムカートリッジ、およびカートリッジインターフェースを含んでいてもよい。この増設メモリ１２４は前記コンピュータ１１６の内部に物理的に設けられてもよく、または図７に示されるように外部に設けられてもよい。
【００６８】
前記コンピュータシステム１１０は、コンピュータプログラムやその他の命令を読み込ませる、その他の同様な手段も含んでもよい。かかる手段は、たとえば、ソフトウェアやデータがコンピュータシステム１１０と外部システムとの間でやりとりされるようにするコミュニケーションインターフェース１２６を含むことができる。コミュニケーションインターフェース１２６の例としては、モデムや、イーサネットカードなどのネットワークインターフェース、シリアルまたはパラレルコミュニケーションポートなどがある。コミュニケーションインターフェース１２６を介してやり取りされるソフトウェアやデータは、コミュニケーションインターフェース１２６によって受信できる電子信号、電磁信号、光学信号、またはその他の信号の形式である。言うまでもなく、多重インターフェースを単一のコンピュータシステム１１０上に設けることができる。
【００６９】
コンピュータ１１６への入力およびコンピュータ１１６からの出力は、入力／出力（Ｉ／Ｏ）インターフェース１２８によって管理されている。このＩ／Ｏインターフェース１２８は、表示装置１１２、キーボード１１４、外部装置１１８、およびコンピュータシステム１１０のその他のかかる部品の制御を管理する。
【００７０】
本発明は便宜上、これらに基づき記載される。本発明がその他のコンピュータなどの制御システム１１０に適用できることは、当業者には明らかであろう。かかるシステムはとしては、電話、携帯電話、テレビ、テレビのセットトップユニット、販売時点管理（ＰＯＳ）コンピュータ、自動銀行取引機、ラップトップコンピュータ、サーバ、個人情報端末（ＰＤＡ）、および自動車など、コンピュータまたはプロセッサ制御装置を備えたあらゆるコンピュータ装置が挙げられる。
【００７１】
さらに、「オフライン」部分は、署名処理を行うコンピュータ装置とは別のコンピュータ装置上で実行することもできることは、理解されるであろう。さらに、検証プロセスを行うコンピュータ装置は、デジタル署名プロセスを行うコンピュータ装置とは通常別であり、署名されたメッセージは何らかの媒体を介して送信されることが多い。したがって本発明の一つの態様は、デジタル署名を生成し送信する署名コンピュータ装置と、前記署名を検証する検証コンピュータ装置とを含むシステムに関する。さらに、一つの実施形態は、fを選択し、fに基づいて変換済み鍵と変換済み生成元を生成する事前ステップを行うための別のコンピュータ装置を含んでもよい。
【００７２】
上記の記載では、実施形態の全面的な理解を提供するために、説明を目的として数々の詳細が述べられた。しかし、これら特定の詳細は必須ではないことは、当業者に明らかであろう。理解を妨げないように、公知の電気構造や回路はブロック図で示されていることもある。たとえば、本明細書中で記載された実施形態がソフトウェアルーチンか、ハードウェア回路か、ファームウェアか、またはそれらの組み合わせかで実行されるかどうかについては、具体的な詳細は述べられていない。
【００７３】
本開示の実施形態は、機械が読み取り可能な媒体（コンピュータが読み取り可能な媒体、プロセッサが読み取り可能な媒体、または、コンピュータが読み取り可能なプログラムコードを実施させるコンピュータ使用可能な媒体、とも呼ばれる）に記憶されたコンピュータプログラム製品としてあらわされることができる。前記機械が読み取り可能な媒体は、ディスケット、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、記憶装置（揮発性または不揮発性）、または同様の記憶機構などの磁気記憶媒体、光学記憶媒体、電子記憶媒体など、なんらかの適切な、非一時的な有形の媒体である。前記機械が読み取り可能な媒体は、インストラクション、コードシーケンス、設定情報や、その他のデータの様々な群を含むことができ、これらは実行されたときに、プロセッサに本開示の実施形態に準じた方法のステップを行わせる。前述されたインプリメンテーションをインプリメントするために必要なその他のインストラクションやオペレーションの、前記機械が読み取り可能な媒体への記憶が可能であることも、当業者であれば理解できるであろう。前記機械が読み取り可能な媒体から実行されるソフトウェアは、プロセッサやその他の適切な処理装置によって実行可能であり、上述されたタスクを行うための回路構成とのインターフェースともなり得る。
【００７４】
本発明の前記の実施形態は、単なる例示である。当業者によって、添付のクレームによってのみ定義される本発明の範囲を逸脱することなく、前記特定の実施形態に変更、変形、変種がもたらされるであろう。
【図１】
2013524263.tif 000008
【図２】
2013524263.tif 000009
【図３】
2013524263.tif 000010
【図４】
2013524263.tif 000011
【図５】
2013524263.tif 000012
【図６】
2013524263.tif 000013
【図７】
2013524263.tif 000014
【国際調査報告】
2013524263.tif 000015
2013524263.tif 000016