(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5697180
(24)【登録日】2015年2月20日
(45)【発行日】2015年4月8日
(54)【発明の名称】ホワイトボックス攻撃から暗号化資産を保護するためのシステムと方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20150319BHJP
H04L 9/32 20060101ALI20150319BHJP
【FI】
G09C1/00 620A
H04L9/00 675B
【請求項の数】19
【全頁数】21
(21)【出願番号】特願2013-501569(P2013-501569)
(86)(22)【出願日】2010年3月31日
(65)【公表番号】特表2013-524263(P2013-524263A)
(43)【公表日】2013年6月17日
(86)【国際出願番号】CA2010000486
(87)【国際公開番号】WO2011120125
(87)【国際公開日】20111006
【審査請求日】2013年3月22日
(73)【特許権者】
【識別番号】510302168
【氏名又は名称】イルデト カナダ コーポレーション
(74)【代理人】
【識別番号】100104444
【弁理士】
【氏名又は名称】上羽 秀敏
(74)【代理人】
【識別番号】100112715
【弁理士】
【氏名又は名称】松山 隆夫
(74)【代理人】
【識別番号】100125704
【弁理士】
【氏名又は名称】坂根 剛
(74)【代理人】
【識別番号】100120662
【弁理士】
【氏名又は名称】川上 桂子
(72)【発明者】
【氏名】ジェームス ミューア
(72)【発明者】
【氏名】スイ ジアユエン
(72)【発明者】
【氏名】ダニエル エリー マードック
(72)【発明者】
【氏名】フィリップ アラン アイゼン
【審査官】
打出 義尚
(56)【参考文献】
【文献】
国際公開第2007/074836(WO,A1)
【文献】
特表2003−521154(JP,A)
【文献】
特開2003−098962(JP,A)
【文献】
特開2003−124928(JP,A)
【文献】
特開2004−253950(JP,A)
【文献】
特開2006−340347(JP,A)
【文献】
特開2011−075720(JP,A)
【文献】
特表2008−542802(JP,A)
【文献】
国際公開第2001/024439(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
コンピュータが実行する、暗号化秘密鍵(d)を敵対者から保護する方法であって、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Aがアクセス可能なメモリに記憶されて前記コンピュータ装置Aに使用され、敵対者のコンピュータ装置Bはdを使用する暗号化デジタル署名生成(DSG)プロセスの実行中にコンピュータ装置Aを観察でき、前記DSGプロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
a)コンピュータのプロセッサにより、1とn-1との間の区間中のランダムな整数fを選択するステップと、
b)コンピュータのプロセッサにより、前記生成元と、nを法とするfの逆数とに基づいて、変換済み生成元を作成するステップと、
c)コンピュータのプロセッサにより、fに基づいてdを変換することにより、変換済み鍵(d’)を生成するステップと、
d)コンピュータのプロセッサにより、前記生成元とdとのかわりに前記変換済み生成元とd’とを使用し、かつ、fを前記DSGプロセスに組み込んで、あたかもdと前記生成元とが前記DSGプロセスに実際に使用されているかのようにQを使用する前記検証プロセスによって検証されることができるデジタル署名を生成するステップを含む方法。
【請求項2】
ステップa、b、およびcは、敵対者のコンピュータ装置Bが観察できないように実行され、ステップdは敵対者のコンピュータ装置Bによる観察が可能な条件のもとで前記コンピュータ装置Aによって行われる、請求項1に記載の方法。
【請求項3】
ステップa、b、およびcをオフラインで実行することによって前記敵対者のコンピュータ装置Bが観察できないようにステップa、b、およびcが実行される、請求項2に記載の方法。
【請求項4】
前記生成元は、濃度がnの楕円曲線群を生成するために使用される楕円曲線上の点Gであり、前記変換済み生成元は、前記楕円曲線群内の別の点G’であり、ステップb)は、コンピュータのプロセッサにより、nを法とするfの逆数をf-1に割り当て、Gをそれ自身にf-1回加算した結果をG’に割り当てることを含み、ステップc)は、コンピュータのプロセッサにより、d f mod nの結果をd’に割り当てることを含む、請求項1〜3のいずれかに記載の方法。
【請求項5】
前記デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名(r, s)を検証するための標準ECDSAデジタル署名検証プロセスであり、ステップd)は、
i) コンピュータのプロセッサにより、区間[1, n-1]内のランダムな整数k’を選択するステップと、
ii) コンピュータのプロセッサにより、点RにEC_Multiply(k’, G’)の結果を割り当てるステップであって、EC_Multiply(k’, G’)は楕円曲線点G’をそれ自身にk’回加算することを意味する、ステップと、
iii) コンピュータのプロセッサにより、rにRx mod nの結果を割り当てるステップであって、RxはRのx座標である、ステップと、
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を使用して標準ECDSAプロセスによって生成されるであろう署名と等価である、請求項4に記載の方法。
【請求項6】
デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名(r, s)を検証するための標準DSAデジタル署名検証プロセスであり、ドメインパラメータp, q, およびgを使用し、前記生成元はgであり、q=nが満たされ、ステップb)は、コンピュータのプロセッサにより、qを法とするfの逆数をf-1に割り当てることと、gf-1 mod pの結果をg’に割り当てることとを含み、ただしf-1はqを法として計算され、ステップc)は、コンピュータのプロセッサにより、d f mod qの結果をd’に割り当てることを含む、請求項1〜3のいずれかに記載の方法。
【請求項7】
前記ステップ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(e f+d’r) mod nの値を計算し、その値をsに割り当てるステップと、
vii) コンピュータのプロセッサにより、s=0なら、ステップi)から再度開始するステップと、そうでなければ、
viii) コンピュータのプロセッサにより、前記署名(r, s)を出力するステップと、を含み、
メッセージM上の前記署名(r, s)は、前記秘密鍵dが実際には使用されておらず、従ってステップdの実行中にメモリにロードされることがないこと以外は、前記秘密鍵dを使用して標準DSAプロセスによって生成されるであろう署名と等価である、請求項6に記載の方法。
【請求項8】
ステップvi)は、コンピュータのプロセッサにより、一連の参照テーブルを使用して難読化されたソフトウェアルーチンを使用して、nを法とするe fの値を計算し、前記計算中に前記fの値がメモリにロードされず、明らかにされないようにするステップを含む、請求項5または7に記載の方法。
【請求項9】
ステップvi)は、コンピュータのプロセッサにより、一連の参照テーブルを使用して難読化されたソフトウェアルーチンを使用して、nを法とするd’rの値を計算し、前記計算中に前記fとd’の値がメモリにロードされず、明らかにされないようにするステップをさらに含む、請求項8に記載の方法。
【請求項10】
前記ソフトウェアルーチンは、オフライン段階で構築されたワードワイズ再コード化テーブルを含む、請求項8または9に記載の方法。
【請求項11】
前記ハッシュ関数Hは、結果としてe’=Hf(M) = e*f mod nという値を生成する関数H fと置き換えられ、項efがe’と置き換えられ、ステップiv)のk’-1(ef+d’r) mod nがk’-1(e’+d’r) mod nと置き換えられるようにする、請求項5または7に記載の方法。
【請求項12】
前記方法のステップを実行するソフトウェア上で行われる制御フローおよびデータの難読化をさらに含む、請求項1〜11のいずれかに記載の方法。
【請求項13】
コンピュータが実行する、暗号化秘密鍵(d)を敵対者から保護する方法であって、前記暗号化秘密鍵はそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Aがアクセス可能なメモリに記憶されて前記コンピュータ装置Aに使用され、敵対者のコンピュータ装置Bはdを使用する暗号化デジタル署名生成(DSG)プロセスの実行中にコンピュータ装置Aを観察でき、前記暗号化プロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
a)コンピュータのプロセッサにより、1とn-1との間の区間中のランダムな整数fを選択するステップと、
b)コンピュータのプロセッサにより、前記生成元と、nを法とするfの逆数とに基づいて、変換済み生成元を生成するステップと、
c)コンピュータのプロセッサにより、fに基づいてdを変換することにより、変換済み鍵(d’)を生成するステップと、
d)機械実行可能な命令を記憶する機械読み取り可能な媒体に実施されるコンピュータプログラムをコンピュータのプロセッサにより作成するステップであって、前記命令はコンピュータ装置Aによって実行される時に、前記生成元とdとのかわりに前記変換済み生成元とd’とをコンピュータ装置Aに使用させ、かつ、fを前記DSGプロセスに追加して、あたかもdと前記生成元とが前記DSGプロセスに実際に使用されているかのようにQを使用する前記検証プロセスによって検証されることができるデジタル署名をコンピュータのプロセッサにより作成するステップを含む方法。
【請求項14】
前記デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名(r, s)を検証するための標準ECDSAデジタル署名検証プロセスであり、
前記生成元は、濃度がnの楕円曲線群を生成するために使用される楕円曲線上の点Gであり、前記変換済み生成元は、前記楕円曲線群内の別の点G’であり、ステップb)は、コンピュータのプロセッサにより、nを法とするfの逆数をf-1に割り当て、Gをそれ自身にf-1回加算した結果をG’に割り当てることを含み、ステップc)は、コンピュータのプロセッサにより、d f modnの結果をd’に割り当てることを含む、請求項13に記載の方法。
【請求項15】
デジタル署名検証プロセスが、秘密鍵dの保有者からのメッセージM上の署名(r, s)を検証するための標準DSAデジタル署名検証プロセスであり、ドメインパラメータp, q, およびgを使用し、前記生成元はgであり、q=nが満たされ、ステップb)は、コンピュータのプロセッサにより、qを法とするfの逆数をf-1に割り当て、gf-1 mod pの結果をg’に割り当てることを含み、ただしf-1はqを法として計算され、ステップc)は、コンピュータのプロセッサにより、d f modqの結果をd’に割り当てることを含む、請求項13に記載の方法。
【請求項16】
コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な媒体であって、前記命令はプロセッサで実行される時に前記プロセッサに暗号化秘密鍵(d)を敵対者のコンピュータ装置Bから保護する方法を実行させ、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置Aがアクセス可能なメモリに記憶されて前記コンピュータ装置Aに使用され、敵対者のコンピュータ装置Bはdを使用する暗号化プロセスの実行中にコンピュータ装置Aを観察でき、前記暗号化プロセスはQを使用する公知の捕捉的プロセスを有し、前記コンピュータ読み取り可能な命令は、
a)コンピュータのプロセッサにより、1とn-1との間の区間中のランダムな整数fを選択するための命令と、
b)コンピュータのプロセッサにより、f mod nの逆数に基づいて、前記生成元の変換済み生成元値を計算するための命令と、
c)コンピュータのプロセッサにより、fに基づいたdの変換済み値d’を計算するための命令と、
d)コンピュータのプロセッサにより、前記fの値と、前記変換済み生成元と、d’とを、変換済み暗号化プロセスで引き続き使用されるように安全に記憶することであって、前記変換済み暗号化プロセスは、fと、前記変換された生成元と、d’とを使用して、あたかもdと前記生成元とが前記暗号化プロセスに実際に使用されているかのようにQを使用する前記捕捉的プロセスによって検証されることができるデジタル署名を作成することを含む、
コンピュータ読み取り可能な媒体。
【請求項17】
コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な媒体であって、前記命令はコンピュータ装置Aによって実行される時に、秘密鍵dの保有者からであるとされるメッセージM上の署名(r, s)を検証するための標準ECDSAデジタル署名検証プロセスによって検証できるメッセージM上のデジタル署名(r, s)を前記コンピュータ装置に生成させ、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元Gに関連し、前記署名は作成可能である一方、前記コンピュータ読み取り可能な命令の実行中にコンピュータ装置Aを観察可能な敵対者から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のx座標であるような命令と、
iv) コンピュータのプロセッサにより、r=0なら、ステップi)へ分岐して戻るための命令と、そうでなければ、
v) コンピュータのプロセッサにより、前記メッセージMについてのハッシュ演算の値をeに割り当てるための命令と、
vi) コンピュータのプロセッサにより、k’-1(e f+d’r) mod nの値を計算し、その値をsに割り当てるための命令であって、d’は、fに基づいて事前に決定された、dを変換した値であるような命令と、
vii) コンピュータのプロセッサにより、s=0なら、ステップi)へ分岐して戻るための命令と、そうでなければ、
viii) コンピュータのプロセッサにより、前記署名(r, s)とともに、前記デジタル署名されたメッセージMを、検証用に第三者へ送信するための命令と、を含み、
メッセージM上の前記署名(r, s)は、前記実際の秘密鍵dが使用されておらず、従ってステップdの実行中にメモリにロードされることがないこと以外は、前記秘密鍵dを使用して標準ECDSAプロセスによって生成されるであろう署名と等価である、
コンピュータ読み取り可能な媒体。
【請求項18】
請求項1〜15のいずれか1項に記載の方法を実行する、セットトップボックス。
【請求項19】
請求項1〜15のいずれか1項に記載の方法を実行する、コンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0002】
本発明は一般に、暗号法に関する。本発明は特に、秘密鍵やその他の秘密パラメータなど、暗号化アセットを保護する方法およびシステムに関する。
【背景技術】
【0003】
デジタル署名アルゴリズム(DSA)や楕円曲線デジタル署名アルゴリズム(ECDSA)が、標準FIPS PUB 186-3(米商務省)やANS X9.62-2005(American National Standard for Financial Services(米国金融サービス国家標準))に記載されており、これら文献は、この参照によりすべてをここに包含する。これら署名アルゴリズムは、公開鍵暗号を使用してデジタルメッセージ上のデジタル署名の作成と検証を可能にしている。DSAにおいてもECDSAにおいても、署名者は秘密鍵と公開鍵を所有している。秘密鍵はデジタル署名を生成するため(つまり、メッセージに署名するため)に使用され、公開鍵は前記署名を検証するために第三者によって使用される。
【0004】
DSAおよびECDSAは広く展開され(たとえばssh、SSL/TLS、カナダ郵政省デジタル消印、DTCP,AACS,MS−DRMなど)、データ発信元認証、データ整合性、否認防止を提供するために使用できる。しかし、DSAやECDSAの署名が提供する保証は常に、署名者の秘密鍵が秘密である(つまり、秘密鍵がアタッカーに漏えいしていない)という前提に基づいている。
【0005】
以下の参考文献はさらに背景情報を提供する。この参照によりそれらの内容すべてをここに包含する。
[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.
【0006】
ECDSAおよびDSAの署名生成処理は、通常コンピュータソフトウェアに実行され、特定のコンピュータ装置(たとえば、携帯電話、セットトップボックス、スマートカードなど)上で実行される。多くのアプリケーションにおいて、この処理は、署名者の制御外の環境で―敵対者が存在するかもしれない環境(つまり、署名がコンピュータ処理されている時に敵対者が装置を見ているかもしれない)で起こる。
【0007】
署名生成の入力と出力のみを解析する敵対者は、「ブラックボックス」のような実行を効果的に行う。DSAやECDSAは、かかるブラックボックスアタッカーに対抗するよう設計された。しかし、単なる入力および出力以上の情報が入手されることがよくある。装置消費電力、実行時間、電磁漏洩、データ障害に対する応答、などの付加的な情報が、ソフトウェアの実行についてアタッカーに手掛かりを与える。それによって、秘密鍵が少しずつ漏えいして、署名方式が完全に漏れてしまうことが示されてきた。
【0008】
より堅牢なセキュリティモデルでは、ホワイトボックスアタッカーに対抗することを検討している。ホワイトボックスアタッカーは、署名をコンピュータ処理するソフトウェアの実行を完全に見通している。ホワイトボックスアタッカーに対抗することが強く望まれているが、DSAやECDSAのホワイトボックス・インプリメンテーションはまだ提案されていない。この問題の具体的な例として、音声/映像内容を保護するために使用されるDTCPプロトコルを検討する。下記引用は、DTCP仕様書からの抜粋であり、上記参考文献[6]に定義されている通りである。
4.3 規格準拠の装置の製造
完全認証をサポートしている規格準拠の装置(つまり、ブランドやモデルにかかわらず製造された各アイテム)には、DTLAによって生成された固有の装置ID(XID)と装置EC−DSAの公開/秘密鍵の一対が割り当てられる。[秘密鍵]は、その開示を防止するような方法で前記装置内に記憶されなければならない。前記装置には、DTLAによる装置証明書(XCERT)が発行されなければならない。この証明書は、前記装置内に記憶され、認証プロセスにおいて使用される。さらに、前記装置は、暗号プロトコルを実行するために必要なその他の定数や鍵を記憶する必要がある。
【0009】
上記に強調された一文は、DTCP対応装置がECDSA秘密鍵を保護する対策を取らなければならないと述べている。しかし、かかる装置は、完全認証プロトコル中にECDSA署名を作成するために秘密鍵を使用しなければならない。秘密鍵を単に暗号化状態で記憶することによって保護できると思われるが、実際には、署名操作を行うためには、秘密鍵を使用するためにまず復号化しなければならず、この時にホワイトボックスアタッカーが秘密鍵を抽出できる。この問題を軽減するためには、秘密鍵を極秘に維持し、秘密鍵がアタッカーに漏えいすることなくデジタル署名操作が行われるようにする保護プロセスが必要である。
【発明の概要】
【0010】
本発明の目的は、従来のデジタル署名プロセスの欠点の少なくとも一つを除去するか軽減することである。特に、本発明の一つの態様は、署名者の鍵が、動作中のデジタル署名プロセスを観察することができる敵対者によって推測されないように、より安全に保護するプロセスに関する。
【0011】
したがって、本発明の態様は、ホワイトボックスアタッカーに耐性を提供するデジタル署名生成(DSG)プロセスを実行するための方法とシステムに関する。これは、特別に選択されたデータ変換をアルゴリズムの入力、出力、および内部パラメータに適用することによってなされている。特に、署名者の秘密鍵は本発明の保護されたインプリメンテーションにおいて明らかに現れることが無い。本発明の新たなホワイトボックス・インプリメンテーションは、従来のインプリメンテーションによって生成された署名と互換性のある署名を生成する。したがって、本発明の解決法は、相互運用を容易にし、従来のインプリメンテーションの当座の代替として使用できる。特に、デジタル署名生成プロセスの鍵(d)と生成元ドメインパラメータ(通常Gまたはgと表記される)の変換について記載し、検証者には実際には鍵(d)を使用していないのに使用されたかのように見える署名済みメッセージを、本発明の実施形態によって生成できることを示している。前記鍵(d)が実際には使用されていないため、敵対者はそれを観察することができない。さらなる実施形態は、デジタル署名を生成するプロセスを観察することによって敵対者が前記鍵(d)を推測することを困難にする、さらなる保護を含んでいる。
【0012】
本発明の一つの態様は、ランダムな整数fに基づいてdを変換することにより、変換済みの鍵(d’)を作成するための方法およびシステムを提供し、これは変換済み生成元(たとえばG’やg’)や、f自体とともに使用することができ、互換性のある署名メッセージを生成する。かかる様態によると、前記変換済み生成元は、前記生成元とnを法とするfの逆数とに基づいて生成される。また、DSGを少し変更して、前記DSGプロセス中で前記生成元(Gまたはg)とdとのかわりに変換済み生成元(たとえばG’やg’)とd’とを使用し、またfを組み込み、あたかもdと前記生成元とが前記DSGプロセスに実際に使用されているかのように公開鍵Qを使用する前記検証ステップによって検証されることができるデジタル署名を生成する。
【0013】
一様態において、コンピュータが実行する、暗号化秘密鍵(d)を敵対者Bから保護する方法であって、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置A上で記憶され使用され、敵対者Bはdを使用する暗号化デジタル署名生成(DSG)プロセスの実行中にAを観察でき、前記DSGプロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
a)1とn-1との間の区間におけるランダムな整数fを選択するステップと、
b)前記生成元と、nを法とするfの逆数とに基づいて、変換済み生成元を生成するステップと、
c)fに基づいてdを変換することにより、変換済み鍵(d’)を生成するステップと、
d)前記生成元とdとのかわりに前記変換済み生成元とd’とを使用し、かつ、fを前記DSGプロセスに組み込んで、あたかもdと前記生成元とが前記DSGプロセスに実際に使用されているかのようにQを使用する前記検証ステップによって検証されることができるデジタル署名を生成するステップを含む方法が、本発明によって提供される。
【0014】
さらなる態様において、コンピュータが実行する、暗号化秘密鍵(d)を敵対者Bから保護する方法であって、前記暗号化秘密鍵はそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置A上で記憶され使用され、敵対者Bはdを使用する暗号化デジタル署名生成(DSG)プロセスの実行中にAを観察でき、前記暗号化プロセスはQを使用する公知の署名検証プロセスを有し、前記方法は、
a)1とn-1との間の区間中のランダムな整数fを選択するステップと、
b)前記生成元と、nを法とするfの逆数とに基づいて、変換済み生成元を生成するステップと、
c)fに基づいてdを変換することにより、変換済み鍵(d’)を作成するステップと、
d)機械実行可能な命令を記憶する機械読み取り可能な媒体に実施されるコンピュータプログラムを生成するステップであって、前記命令はAによって実行される時に、前記生成元とdとに替えて前記変換済み生成元とd’とをAに使用させ、かつ、fを前記DSGプロセスに追加して、あたかもdと前記生成元とが前記DSGプロセスに実際に使用されているかのように前記検証プロセスによって検証されることができるデジタル署名を生成するステップを含む方法が、本発明によって提供される。
【0015】
さらなる態様において、コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な有形の媒体を含むコンピュータプログラム製品であって、前記命令はプロセッサで実行される時に前記プロセッサに暗号化秘密鍵(d)を敵対者Bから保護する方法を実行させ、dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元に関連し、dはコンピュータ装置A上で記憶され使用され、敵対者Bはdを使用する暗号化プロセスの実行中にAを観察でき、前記暗号化プロセスはQを使用する公知の捕捉的プロセスを有し、前記コンピュータ読み取り可能な命令は、
a)1とn-1との間の区間中のランダムな整数fを選択するための命令と、
b)fmod nの逆数に基づいて、前記生成元の変換済み生成元値を計算するための命令と、
c)fに基づいたdの変換済み値d’を計算するための命令と、
d)前記fの値と、前記変換済み生成元と、d’とを、変換済み暗号化プロセスで引き続き使用されるように安全に記憶することであって、前記変換済み暗号化プロセスは、fと、前記変換された生成元と、d’とを使用して、あたかもdと前記生成元とが前記暗号化プロセスに実際に使用されているかのようにQを使用する前記捕捉的プロセスによって検証されることができるデジタル署名を作成することを含む、コンピュータプログラム製品が、本発明によって提供される。
【0016】
さらなる態様において、コンピュータ読み取り可能な命令を記憶するコンピュータ読み取り可能な有形の媒体を含むコンピュータプログラム製品であって、前記命令はコンピュータ装置(A)によって実行される時に、秘密鍵dの保有者からであるとされるメッセージM上の署名(r, s)を検証するための標準ECDSAデジタル署名検証プロセスによって検証できるメッセージM上のデジタル署名(r, s)を前記コンピュータ装置に生成させ、前記秘密鍵dはそれに対応する暗号化公開鍵Qを有し、Qとdとの両方が位数nの生成元Gに関連し、前記署名は生成可能である一方、前記コンピュータ読み取り可能な命令の実行中にAを観察可能な敵対者から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にR
x mod nの結果を割り当てるための命令であって、R
xはRのx座標であるような命令と、
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を使用して標準ECDSAプロセスによって生成されたであろう署名と等価である、コンピュータプログラム製品が、本発明によって提供される。さらに、本明細書に記載のように、別の態様によると、かかるコンピュータプログラム製品はDSAに適合できる。
【0017】
開示されているように、さらなる態様において、コンピュータ読み出し可能な命令を記憶するコンピュータ読み出し可能な有形の媒体を含むコンピュータ製品であって、前記命令はコンピュータ装置(A)によって実行される時に、署名を行うためのオフライン変換値を使用してメッセージM上にデジタル署名(r, s)を前記コンピュータ装置に生成させる、コンピュータ製品が、本発明によって提供される。
【0018】
本発明のさらなる様態と特徴は、当業者には、添付の図面とともに本発明の具体的な実施形態についての下記の記載を参照すれば明白になるであろう。
【図面の簡単な説明】
【0019】
本発明の実施形態を、あくまでも例として、添付の図面を参照して説明する。
【
図1】
図1は、デジタル署名生成の一般的なプロセスを示すフローチャートである。
【
図2】
図2は、デジタル署名検証の一般的なプロセスを示すフローチャートである。
【
図3】
図3は、ECDSA署名生成のステップを示すフローチャートである。
【
図4】
図4は、本発明の実施形態に準じた事前手続きのステップを示すフローチャートである。
【
図5】
図5は、本発明の実施形態に準じたECDSA署名生成プロセスのステップを示すフローチャートである。
【
図6】
図6は、本発明の実施形態に準じた、かかるECDSA署名生成プロセスをよりロバストにするプロセスを作成するステップを示すフローチャートである。
【
図7】
図7は、本発明の実施形態が行われるコンピュータシステムの簡易な例を示すブロック図である。
【発明を実施するための形態】
【0020】
一般的には、本発明は、デジタル署名生成プロセスにおける秘密鍵、秘密パラメータなどを含む暗号化資産を保護するための方法およびシステムを提供する。
【0021】
一般的なデジタル署名生成プロセスが、
図1に示されている。ここで、メッセージ(m)は、署名生成アルゴリズム104を使用して秘密鍵(d)で署名され、デジタル署名(S)が生成される。
【0022】
一般的なデジタル署名検証プロセスが、
図2に示されている。ここで、秘密鍵(d)の保有者によって署名されたと考えられているメッセージ(m)上のデジタル署名(S)が、前記保有者の公開鍵(Q)を使用して、署名検証アルゴリズム206を使用して検証される。かかるプロセスの利点は、誰でも公開鍵(Q)を使用して署名を検証できることであり、実際に秘密鍵(d)の保有者によって署名されたかどうかによって、前記プロセスは署名の承認または拒否208を行う。
【0023】
本発明の一つの様態は、署名(S)を作成でき、既存の検証プロセスに適合するdを保護する、方法とシステムを提供する。言いかえると、本発明の実施形態は、コンピュータ装置A上でSを作成し、これは前記署名生成プロセスを観察することによって積極的にdを取得しようとしている敵対者Bが居るところで行われるかもしれない。前記署名生成プロセスは、前記プロセス206を変更することを検証者に求めることが無いまま、Qを使用した検証が可能である。
【0024】
DSAまたはECDSA署名生成のインプリメンテーションを、本発明の実施形態に準じて、ホワイトボックスアタッカーに対抗するものに転換するためのプロセスの例を、以下に記載する。
【0025】
「スムーズな(円滑な)」という語は、署名生成の従来の無防備なインプリメンテーション(つまり、ホワイトボックスアタッカーに対して脆弱であるインプリメンテーション)について述べるために使用し、「ロバストな(堅牢な)」という語は、本発明の実施形態に準じた保護されたインプリメンテーションについて述べるために使用する。
表記法
【0026】
以下に、楕円曲線暗号法(ECC)に関するいくつかの用語と表記法を定義する。ECCは参考文献[2]に記載の同様の表記法を使用している。
【0028】
(スムーズなECDSA)
ここに無防備なECDSA署名生成操作の概略を述べる。これは、ANSX9.62[1]の記載に従っている。
【0029】
ECDSAを使用する前に、特定の楕円曲線、暗号学的ハッシュ関数(H)、および生成元点Gについて選択しなければならない。この情報(「ドメインパラメータ」と称されることもある)は一般的に、秘密ではないとされている。
【0030】
下記は、ECDSAを使用したメッセージに署名するための従来の(すなわちスムーズな)プロセスを表す。
【0031】
楕円曲線計算がステップ2のみで使用され、点Rを計算している。ステップ3および5での演算はnを法とする一般的な計算である。ただし、秘密鍵dはステップ5でのみ使用される。
【0032】
このプロセスを
図3に示す。上記のようなステップ1は、図中、ブロック304と表示されている。同様に、上記のようなステップ2は、図中、ブロック306と表示されている。当業者には明らかなように、ステップ2は、Gが楕円曲線点であるので、整数乗算を含まず、むしろ楕円曲線乗算を含む。ステップ2において、Rには、Gが自身にk回加算された場合に得られる点が割り当てられ(←として示されている)、EC_Multiply(k,G)という表記はここではこのタイプの楕円曲線乗算を示すために使用される。上記のようなステップ3は、ブロック308および決定310と表示されており、R
x mod nの結果をrに割り当てることを含む。ここで、rが0ではないと仮定するとR
xはRのx座標であり、もしrが0であれば前記プロセスはステップ1へ分岐して戻る。ステップ4は、
図3のブロック312に示されているように、前記ハッシュ関数がメッセージに適用された場合に得られる値をeに割り当てることを含む。ハッシュ関数をメッセージに適用することは、H(M)と示される。上記のようなステップ5は、ブロック314および決定316と表示され、k
-1(e+dr) mod nの結果を値sに割り当てることを含み、その結果、署名S=(r, s)の出力318が得られる。
【0033】
上記署名生成プロセス中に、実際に、保護が必須の二つの極秘数値がある。
1.秘密鍵、d
2.メッセージ毎の秘密(per-message secret)、k
【0034】
dが保護されなければならないのは明瞭である。しかし、もしkの値が漏えいしたら、敵対者はkからdを導き出せる。ハッシュ関数Hがわかっているので、eはメッセージMから判定できる。したがって、敵対者がkを取得すれば、nを法とする下記方程式を解くことによってMについて得られた署名(r, s)から秘密鍵を取得することができる。
s=k
-1(e+dr)
ここで、dのみがわかっていない単一方程式を得る。したがって、dを解くことができる。これが潜在的なセキュリティの問題である。
【0035】
したがって、従来のDSGプロセスを実行するコンピュータ装置Aを観察する敵対者Bは、乱数生成器へのコールを待ち、数値kの選択に気づくだけで、秘密鍵dを導き出せる。または、敵対者Bは装置A上で実行される命令を観察し、kGを計算してkを導き出せるであろう。
(ロバストなECDSA)
【0036】
本発明の実施形態に準じたECDSA署名のロバストなインプリメンテーションを作成するプロセスの一例について検討する。
【0037】
たとえばオフラインでセットアップする最中など、敵対者Bによって観察できないやり方で、実施形態に準じて事前プロセスを行う。この事前プロセスは、区間[1, n-1]中の秘密の数fを選択することを含む。fは秘密鍵dを保護するために使用される。実施形態に準じて、二つの変換プロセスが起動され(どちらもfに関連する)、以下の値を有する変換済み(または難読化済み)鍵と変換済み(または難読化済み)生成元を生成する。
・ G’= f
-1G ただしf
-1はnを法として計算される。
・ d’= fd mod n
【0038】
G’もd’も、fの選択の直後にオフラインで計算できる。
【0039】
この事前プロセスは、実施形態に準じて、
図5に示されている。
図4のフローチャートでは、入力は既知の生成元、この場合Gと、秘密鍵dである。プロセスはランダムな整数fを選択すること(504)によって開始されるが、ここでfは区間[1, n-1]内のランダムな整数である。前記変換済み生成元G’が、nを法とするfの逆数(f
-1と示す)を計算することによって決定され(506)、その後、508で、f
-1とGの楕円曲線乗算を行う。そして、変換済み(または難読化済み)鍵d’にfd mod nの値が割り当てられる。出力は、ランダムな整数f、変換済み(または難読化済み)鍵d’、および変換済み(または難読化済み)生成元G’である。下記に検討するように、これら3つの値すべてがロバストなECDSA署名生成プロセスの実施形態で使用される。
【0040】
本発明の実施形態による、ロバストな署名プロセスの基本的なステップを以下に示す。
【0041】
上記のように、ロバストなECDSA署名生成プロセスを組み込むかかる実施形態は、生成元Gとdのかわりに、変換済み生成元G’とd’とを利用し、また、前記ECDSA署名生成プロセスにfを組み込み(ステップ5を参照)、デジタル署名S=(r, s)を生成する。このデジタル署名は、あたかもdと前記生成元Gが実際にECDSA署名生成プロセスに使用されたかのように、Qを使用する従来のECDSA検証プロセスによって検証できる。つまり、ステップ5においてeをefと置き換えることによって、fが前記プロセスに組み込まれる。このようにステップ5でfを利用することによって(かつ、オフラインでなされた変換にfが使用されてG’およびd’を生成したことを考え)、得られた署名は、従来のプロセスで作成されたものと完全互換である。
【0042】
本発明の実施形態に準じた、上記のプロセスを示すフローチャートが
図5に示されている。プロセス700中のステップ1は、上記のように、図中でブロック604と表示される。同様に、上記のようなステップ2は、図中でブロック606と表示される。なお、当業者には明らかなように、ステップ2は、G’が曲線上の点であるので、整数乗算を含まず、むしろ楕円曲線乗算を含む。したがって、Rには、G’が自身にk’回加算された場合に得られる点が割り当てられる。上記のようなステップ3は、ブロック608および決定610と表示されており、R
x mod nの結果を数値rに割り当てることを含む。ここで、rが0ではないと仮定するとR
xはRのx座標であり、もしrが0であれば前記プロセスはステップ1へ分岐して戻る。ステップ4は、
図6のブロック612に示されているように、前記ハッシュ関数Hがメッセージに適用された場合に得られる値をeに割り当てる(H(M)と示される)ことを含む。上記のようなステップ5は、ブロック614および決定616と表示され、k’
-1(ef+d’r) mod nの結果を数値sに割り当てることを含み、その結果、署名S=(r, s)の出力618が得られる。
【0043】
署名生成のこのバージョンは、通常のECDSAと完全互換の署名を生成する(すなわち、本発明のロバストなインプリメンテーションによって生成された署名(r, s)はいずれも、スムーズなインプリメンテーションでも作成できたであろうものである)。
(解析)
【0044】
本発明の実施形態は、下記の二つの目標に対処するためのものである。
1.アタッカーが、メッセージ毎のランダムな数k’の値を獲得することから秘密鍵を推測できるようになることを防ぐ。前述のように、アタッカーがメッセージ毎の秘密kを獲得すると、従来のDSGを使用してメッセージMとその署名(r, s)から秘密鍵dを算出することが可能である。以下に説明するように、これはk’の場合と異なる。
2.アタッカーが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の可能性のある値を排除することは可能ではない。
【0045】
上記の目標を達成するためには、ステップ2でRの計算にさらに保護を追加するためにさらなるリソースを使用することが必要であるとは思われない。以下に、このことを説明する。
【0046】
ステップ2で使用される3つの値、R、k’、G’について検討する。これら値が敵対者にすべて知られていると仮定する。また、Gは公的に入手可能な規格によく現れるので、敵対者が知っていると仮定する。G’= f
-1Gなので、敵対者はf
-1を、そしてfを、この等式から計算しようとするであろうが、これは前記目標2と矛盾する。しかし、この計算は、ECDLPを解決することになるが、これは実行不可能と考えられる。したがって、敵対者はGおよびG’からfを計算することはできない。
【0047】
さらに、上記の目標1について、従来のECDSAにおいてはkが分かれば秘密鍵dがわかるが、それと同様にk’がわかれば秘密鍵dがわかるというわけではない。これは、k’と署名(r, s)からdを計算するというタスクは、nを法とする下記方程式を解くことになるからである。
s=k’
-1(e+dr)f
【0048】
しかし、従来のDSGとは異なり、上記方程式は二つの未知の値がある。dとfである(すなわち、一つの方程式と二つの未知数がある)。したがって、k’が分かったとしても、dとfとの両方が未知なので、敵対者はこの一つの方程式からdを抽出することはできない。
【0049】
上記に検討した実施形態は、かかるプロセスを従来のDSGよりもロバストにするようにDSGを変更するが、アタッカーがfを獲得することを困難にすることにより、かかる改良されたシステムをよりロバストにすることができる。したがって、本発明の実施形態は、fを選択し、変換済み値G’およびd’をBが観察できない方法で生成する事前ステップを行う。これらステップをBが観察できない方法で行う一つのやり方は、これらステップをオフラインでおこなうことである。「オフライン」とは、AがBによる観察を受けないような時間または場所において、ということか、または、異なるコンピュータ装置上で、ということを意味する。たとえば、Aがスマートカードかセットトップボックスの場合、オフラインとは、かかる装置の出荷以前を含む。Aがパーソナルコンピュータの場合、これらステップは別のコンピュータ上で実行されて何らかの安全な媒体によりAに提供できる。または、これらステップは、安全なハードウェアを使用することによってBによる観察を受けないような方法で実行することができる。
【0050】
さらに、より好適な実施形態において、敵対者がステップ5の計算(すなわち、s←k’
-1(ef+d’r) mod n)を観察することからfとd’の値を推測することを困難にするために、さらなる難読化技術が使用される。一つの実施形態において、ステップ5は下記のプロセスを実行することによって算出される。まず、二つの乗算関数を生成する(これら関数は、一連の参照テーブルを使用して難読化されたソフトウェアルーチンの形式をとってもよい)。
mult_by_f(...), mult_by_dhat(...)
【0051】
これら関数は、一実施形態に準じて、オフライン段階で構築されたワードワイズ再コード化テーブルを含み、多倍精度整数xを入力としてとり(すなわち、32ビットの単語のアレイ)、それぞれxf mod nと、xd’ mod nとを返す。これら二つの関数は、一実施例に準じて、下記のように使用されてステップ5の計算を行う。
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)
【0052】
なお、例示を目的として、上記では主としてECDSAに焦点をあてた。しかし、ECDSAとDSAは密接に関連している。当業者であれば、ECDSAについて上記に示した詳細な説明や例をDSA署名生成に容易に適用できるであろうと思われるが、ここに本発明の実施形態に準じたプロセスの概略を提示する。
【0053】
ここに無防備なDSA署名生成処理の概略を述べる。これは、FIPS PUB 186-3[3]の記載に従っている。
【0054】
DSAを使用する前に、素数p、素数q(p-1を割り切る素数)、pを法とする位数qの生成元g、というドメインパラメータについて選択しなければならない。ドメインパラメータは一般的に、秘密ではないとされている。
【0055】
DSAを使用してメッセージに署名する方法は以下のとおりである。
【0056】
上記の算術演算はすべてモジュラー演算である(すなわち、pを法とする演算、またはqを法とする演算)。
【0057】
署名生成中に、保護が必須の二つの極秘数値がある。
1.秘密鍵、d
2.メッセージ毎の秘密(per-message secret)、k
【0058】
dが保護されなければならないのは明瞭である。もしkの値が漏えいしたら、敵対者はkと、qを法とする下記方程式を解くことによってMについて得られた署名(r, s)とからdを導き出すことができる。
s=k
-1(e+dr)
【0059】
(ロバストな署名生成)
DSA署名生成のロバストなインプリメンテーションを生成する一実施形態を以下に示す。
【0060】
上記と同様、たとえばオフラインでセットアップする段階など、Bによって観察できないやり方で、区間[1, q-1]中の秘密の数fを選択する。fは秘密鍵dを保護するために使用される。実施形態に準じて、二つの変換プロセスが起動され(どちらもfに関連する)、以下の値を有する変換済み鍵と変換済み生成元を生成する:f:
・ g’ = g
f-1 mod p ただしf
-1はqを法として計算される。
・ d’= fd mod q
【0061】
g’もd’も、fの選択の直後にオフラインで計算できる。本発明の実施形態に準じた、ロバストなDSA署名プロセスの基本的なステップを以下に示す。
【0062】
署名生成のこのバージョンは、通常のDSAと完全互換の署名を生成する(すなわち、本発明のロバストなインプリメンテーションによって生成された署名(r, s)はいずれも、スムーズなインプリメンテーションでも生成できたであろうものである)。
さらなる保護
【0063】
上記実施形態のうちのいずれが実行されるかにかかわらず、制御フロー変換とデータ変換が、署名生成処理を実行するソースコードに適用できる。これは、敵対者がDSGプロセスを実行するコンピュータ装置の操作を観察することにより、たとえばd’やfなどの秘密のパラメータを推測することをより困難にするためである。
図6は、本発明の実施形態に準じて、署名を生成するソフトウェアを難読化することにより、さらにパラメータを保護するプロセスの例を示すフローチャートである。したがって、上記のプロセス700を実行するソースコードが、制御フロー変換702とデータ変換704とを適用することによりさらに保護され、よりロバストなインプリメンテーションが生成される。
【0064】
前記制御フロー変換702は、フローを制御するための多数の関数を使用して、所与のプログラムの制御フローを新たな制御フロー形式にマップする。かかる変換の例としては、2004年8月17日発行の米国特許第6779114号に記載のような制御フロー変換の例があり、この参照により前記文献をすべてここに包含する。前記データ変換704には、データ操作および位置の両方を数学的空間へ変換する数学的マッピング関数が関与する。これは2003年7月15日発行の米国特許第6594761号、2005年1月11日発行の米国特許第6842862号、および2005年7月28日公開の米国特許公報US‐2005‐0166191A1号に記載されており、この参照によりその内容すべてをここに包含する。
【0065】
別の実施形態においては、fに別レベルの保護を提供するために、ef mod n(ステップ5で使用)を別のやり方で計算する。前記値eは入力メッセージMのハッシュと等しいので、本発明の実施形態は、前記ハッシュ計算にnを法とするfの演算による乗算を組み込む。もちろん、これは、使用されるハッシュ関数の性質によるが、かかる実施形態中で適切なハッシュ関数を想定すると、前記ハッシュ関数Hは関数H
fと置き換えられ、これはその結果e’=H
f(M) mod n = e*f mod nの値を生成する。さらに、ステップ5で、項efがe’と置き換えられるので、k’
-1(ef+d’r) mod nがk’
-1(e’+d’r) mod nと置き換えられる。
【0066】
本発明は、所与のコンピュータシステム上で実施できると理解されるべきである。本発明の実施形態が行われるコンピュータシステムの簡易化した例を、
図7のブロック図に示す。このコンピュータシステム110は、表示装置112、キーボード114、コンピュータ116、および外部装置118を含む。
【0067】
前記コンピュータ116は、中央処理装置(CPU)120などの、プロセッサまたはマイクロプロセッサを一つ以上含んでもよい。前記CPU120は数学的演算処理を行い機能を制御して、内部メモリ122、好適にはランダムアクセスメモリ(RAM)および/または読み出し専用メモリ(ROM)、および場合によっては増設メモリ124に保存されているソフトウェアを実行する。前記増設メモリ124は、たとえば、ビデオゲーム装置、EPROMやPROMなどの着脱式メモリチップや、当該技術分野で公知の同様の記憶媒体のような、マスメモリストレージ、ハードディスク装置、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、プログラムカートリッジ、およびカートリッジインターフェースを含んでいてもよい。この増設メモリ124は前記コンピュータ116の内部に物理的に設けられてもよく、または
図7に示されるように外部に設けられてもよい。
【0068】
前記コンピュータシステム110は、コンピュータプログラムやその他の命令を読み込ませる、その他の同様な手段も含んでもよい。かかる手段は、たとえば、ソフトウェアやデータがコンピュータシステム110と外部システムとの間でやりとりされるようにするコミュニケーションインターフェース126を含むことができる。コミュニケーションインターフェース126の例としては、モデムや、イーサネットカードなどのネットワークインターフェース、シリアルまたはパラレルコミュニケーションポートなどがある。コミュニケーションインターフェース126を介してやり取りされるソフトウェアやデータは、コミュニケーションインターフェース126によって受信できる電子信号、電磁信号、光学信号、またはその他の信号の形式である。言うまでもなく、多重インターフェースを単一のコンピュータシステム110上に設けることができる。
【0069】
コンピュータ116への入力およびコンピュータ116からの出力は、入力/出力(I/O)インターフェース128によって管理されている。このI/Oインターフェース128は、表示装置112、キーボード114、外部装置118、およびコンピュータシステム110のその他のかかる部品の制御を管理する。
【0070】
本発明は便宜上、これらに基づき記載される。本発明がその他のコンピュータなどの制御システム110に適用できることは、当業者には明らかであろう。かかるシステムはとしては、電話、携帯電話、テレビ、テレビのセットトップユニット、販売時点管理(POS)コンピュータ、自動銀行取引機、ラップトップコンピュータ、サーバ、個人情報端末(PDA)、および自動車など、コンピュータまたはプロセッサ制御装置を備えたあらゆるコンピュータ装置が挙げられる。
【0071】
さらに、「オフライン」部分は、署名処理を行うコンピュータ装置とは別のコンピュータ装置上で実行することもできることは、理解されるであろう。さらに、検証プロセスを行うコンピュータ装置は、デジタル署名プロセスを行うコンピュータ装置とは通常別であり、署名されたメッセージは何らかの媒体を介して送信されることが多い。したがって本発明の一つの態様は、デジタル署名を生成し送信する署名コンピュータ装置と、前記署名を検証する検証コンピュータ装置とを含むシステムに関する。さらに、一つの実施形態は、fを選択し、fに基づいて変換済み鍵と変換済み生成元を生成する事前ステップを行うための別のコンピュータ装置を含んでもよい。
【0072】
上記の記載では、実施形態の全面的な理解を提供するために、説明を目的として数々の詳細が述べられた。しかし、これら特定の詳細は必須ではないことは、当業者に明らかであろう。理解を妨げないように、公知の電気構造や回路はブロック図で示されていることもある。たとえば、本明細書中で記載された実施形態がソフトウェアルーチンか、ハードウェア回路か、ファームウェアか、またはそれらの組み合わせかで実行されるかどうかについては、具体的な詳細は述べられていない。
【0073】
本開示の実施形態は、機械が読み取り可能な媒体(コンピュータが読み取り可能な媒体、プロセッサが読み取り可能な媒体、または、コンピュータが読み取り可能なプログラムコードを実施させるコンピュータ使用可能な媒体、とも呼ばれる)に記憶されたコンピュータプログラム製品としてあらわされることができる。前記機械が読み取り可能な媒体は、ディスケット、コンパクトディスク読み出し専用メモリ(CD−ROM)、記憶装置(揮発性または不揮発性)、または同様の記憶機構などの磁気記憶媒体、光学記憶媒体、電子記憶媒体など、なんらかの適切な、非一時的な有形の媒体である。前記機械が読み取り可能な媒体は、インストラクション、コードシーケンス、設定情報や、その他のデータの様々な群を含むことができ、これらは実行されたときに、プロセッサに本開示の実施形態に準じた方法のステップを行わせる。前述されたインプリメンテーションをインプリメントするために必要なその他のインストラクションやオペレーションの、前記機械が読み取り可能な媒体への記憶が可能であることも、当業者であれば理解できるであろう。前記機械が読み取り可能な媒体から実行されるソフトウェアは、プロセッサやその他の適切な処理装置によって実行可能であり、上述されたタスクを行うための回路構成とのインターフェースともなり得る。
【0074】
本発明の前記の実施形態は、単なる例示である。当業者によって、添付のクレームによってのみ定義される本発明の範囲を逸脱することなく、前記特定の実施形態に変更、変形、変種がもたらされるであろう。