説明

内在的証明書方式

【課題】少なくとも1つの信頼できるエンティティCAおよび加入者エンティティAを有する保護されたディジタル通信システム内で公開鍵を生成する方法を提供する。
【解決手段】各エンティティAについて、CAがエンティティAを区別する一意のアイデンティティIAを選択することと、信頼できる当事者CAのジェネレータをエンティティAの私的な値と数学的に組み合わせることによって、対(IA、γA)がAの内在的証明書として働くように、エンティティAの公開鍵再構成公開データγAを生成することと、数学関数F(γA、IA)に従って内在的証明書情報(IA、γA)を組み合わせてエンティティ情報fを導出することと、エンティティ情報fに署名することによってエンティティAの秘密鍵(a)を生成することと、秘密鍵(a)をエンティティAに送信することを含む、方法。

【発明の詳細な説明】
【技術分野】
【0001】
(発明の分野)
本発明は、暗号化鍵の転送および認証のための鍵配送方式に関する。
【背景技術】
【0002】
(発明の背景)
Diffie−Hellman鍵共有(Diffie-Hellman key agreement)は、暗号システムでの鍵配送問題(Key distribution problem)に対する最初の実用的な解決策をもたらした。この鍵共有プロトコルでは、事前に会ったことも共有(分散)鍵材料(sharedkey material)を有したこともない2つの当事者が、オープンな(保護されない)チャネルを介してメッセージ(文書)を交換することによって、共有される秘密(sharedsecret)を確立することができる。セキュリティは、Diffie−Hellman問題の扱い難さと、関連する離散対数の計算問題にかかっている。
【0003】
インターネットおよび類似物の出現に伴って、公開鍵(Public key;パブリック・キー)および公開鍵証明書(Public key certificate)の大規模な配送の必要が、ますます重要になりつつある。公開鍵証明書は、それによって、検出不能な改ざんの危険性(dangerof undetectable manipulation)なしに、保護されない媒体(unsecured media)を介して公開鍵を格納、配送、または転送することのできる媒介物(vehicle)である。その目的は、一方の当事者の公開鍵を他方の当事者が入手できるようにし、その認証性(authenticity)および有効性(validity)を検証可能に(verfiable)することである。
【0004】
公開鍵証明書は、データ部分および署名部分からなるデータ構造を有する。データ部分には、最低限として公開鍵およびそれに関連する当事者を識別する文字列を含む平文データが含まれる。署名部分は、データ部分に対する認証機関(certification authority、CA)のディジタル署名からなり、これによって、エンティティのアイデンティティ(identity;個人情報)が、指定された公開鍵と結びつけられる。CAは信頼できる第三者であり、証明書のCAの署名は対象のエンティティに結びつけられた公開鍵の認証性(Authenticity)を保証する。
【0005】
アイデンティティに基づくシステム(IDに基づくシステム)は、通常の公開鍵システムに類似し、秘密変換(private transformation)と公開変換(public transformation)を用いるが、当事者は、以前のように明示的な公開鍵を有しない。その代わりに、公開鍵は、効果的に、一般に入手可能な当事者のアイデンティティ情報(たとえば氏名またはネットワーク・アドレス)に置換される。当事者を一意に識別し、その当事者に否定不能な形で(undeniably)関連付けることができる、一般に入手可能な情報であれば、どのような情報でもアイデンティティ情報として使用可能である。
【0006】
公開鍵配送の代替手法では、内在的に証明される公開鍵(Implicitly certified public keys)が使用される。この場合、明示的なユーザー公開鍵が存在するが、その鍵は、証明書に基づくシステムのように公開鍵証明書(public-keycertificate)によって運ばれるのではなく、再構成(reconstruct)されなければならない。したがって、内在的に証明される公開鍵は、公開鍵(たとえばDiffie−Hellman鍵)を配送するための代替手段として使用することができる。
【0007】
内在的に証明される公開鍵機能の1例が、Guntherの内在的に証明される(IDに基づく)公開鍵方法である。この方法では、
1.信頼できるサーバT(trusted server)が、適当な固定された公開の素数p、およびZp*のジェネレータαを選択する。Tは、1≦t≦p−2かつgcd(t,p−1)=1であるランダムな整数tをその秘密鍵(privatekey)として選択し、公開鍵u=αt mod pをαおよびpと共に公開する。
【0008】
2.Tは、各当事者Aに、一意の名前または識別する文字列IAおよび、gcd(kA、p−1)=1であるランダムな整数kA、を割り当てる。Tは、その後、
【0009】
【数1】

【0010】
を計算する。PAは、Aの鍵再構成公開データであり、これを用いて、他の当事者が、以下で示すように(PAaを計算することができるようになる。
【0011】
3.適当なハッシュ関数hを使用して、Tは、aについて下の式を解く。
H(IA)≡t.PA+kAa(mod p−1)
4.Tは、IAに対するTのElGamal署名である対(r,s)=(PA,a)を、保護された形でAに送信する(aは、Diffie−Hellman鍵共有のためのAの秘密鍵である)。
【0012】
5.他の当事者は、次式を計算することによって、一般に入手可能な情報(α、IA、u、PA、p)だけから、AのDiffie−Hellman公開鍵PAαを再構成することができる。
【0013】
【数2】

【0014】
したがって、離散対数問題の場合、証明書への署名は1回の累乗(exponentiation)演算を必要とするが、IDに基づく内在的に証明される公開鍵の再構成は、2回の累乗が必要である。群(group)Zp*での累乗およびE(Fq)内の点のアナログ・スカラ乗算は、計算量的に強烈(computationallyintensive)であることが既知である。たとえば、RSA方式は、楕円曲線システムと比較して極端に低速である。しかし、RSAタイプのシステムに対するECシステムの明確な効率にもかかわらず、これは、特に「スマート・カード」、ポケット・ベル、および類似物などの限られた計算能力を有するコンピューティング装置にとって、まだ問題である。
【発明の概要】
【課題を解決するための手段】
【0015】
(発明の概要)
本発明は、既存の方式に対して改良された計算速度をもたらす、効率的なIDに基づく内在的証明書方式の提供を試みる。便宜上、本明細書ではZpに対する方式を説明するが、これらの方式は、楕円曲線暗号システムでも同等に実施可能である。
【0016】
本発明によれば、少なくとも1つの信頼できるエンティティCAおよび加入者エンティティAを有する保護されたディジタル通信システム内でアイデンティティに基づく公開鍵を生成する方法であって、
(a)各エンティティAについて、CAが、エンティティAを区別する一意のアイデンティティIAを選択するステップと、
(b)信頼できる当事者CAのジェネレータをエンティティAの私的な値(private value)と数学的に組み合わせ、対(IA、γA)がAの内在的証明書として働くようにすることによって、エンティティAの公開鍵再構成公開データγAを生成するステップと、
(c)エンティティ情報fを導出するために、数学関数F(γA、IA)に従って内在的証明書情報(IA、γA)を組み合わせるステップと、
(d)エンティティ情報fに署名することによってエンティティAの秘密鍵を生成するステップと、
秘密鍵をエンティティAに送信するステップとを含み、
これによって、エンティティAの公開鍵を、公開情報、ジェネレータγA、およびアイデンティティIAから比較的効率的に再構成できるようにする方法が提供される。
【0017】
本発明のもう1つの態様によれば、異なるビット強度(bit strengths)を有する複数の公開鍵を含み、公開鍵の1つが内在的に証明される公開鍵になることを特徴とする、公開鍵証明書が提供される。
例えば、本発明は以下を提供する。
(項目1) 少なくとも1つの信頼できるエンティティCAおよび加入者エンティティAを有する保護されたディジタル通信システムで公開鍵を生成する方法であって、
(a)各エンティティAについて、前記CAが、前記エンティティAを区別する一意のアイデンティティIAを選択するステップと、
(b)前記信頼できる当事者CAのジェネレータを前記エンティティAの私的な値(private value)と数学的に組み合わせてエンティティAの公開鍵再構成公開データγAを生成するステップであって、前記対(IA、γA)がAの内在的証明書(implicitcertificate)として働くように前記γAを生成するステップと、
(c)数学関数F(γA、IA)に従って前記内在的証明書情報(IA、γA)を組み合わせてエンティティ情報fを導出するステップと、
(d)前記エンティティ情報fに署名することによって前記エンティティAの秘密鍵(private key)を生成するステップと
前記秘密鍵を前記エンティティAに送信するステップとを備え、
これによって、前記エンティティAの公開鍵は、前記公開情報、前記ジェネレータγA、および前記アイデンティティIAから比較的効率的に再構成されることできることを特徴とする公開鍵の生成する方法。
(項目2) ディジタル通信システムにおける公開鍵証明書を生成する方法であって、
(a)公開鍵暗号アルゴリズムに従って、公開鍵証明書を生成するステップと、
(b)複数の公開鍵であって、前記公開鍵の少なくとも1つが、内在的に署名される公開鍵(implicitly signed public key)である前記複数の公開鍵を公開鍵証明書内に埋め込むステップと、
(c)前記証明書を公開するステップと
を含むとを特徴とする公開鍵証明書の生成方法。
(項目3) 信頼できるエンティティCAによって加入者エンティティAの公開鍵証明書を生成する方法であって、
a)前記加入者エンティティAの一意のアイデンティティ情報IAを選択するステップと、
b)前記加入者エンティティAの私的な値cAを生成するステップと、
c)前記私的な値(private value)cAから前記エンティティAの公開値γAを生成するステップと、
d)値fを生成するために、暗号関数内で前記公開値γAおよび前記アイデンティティ情報IAを使用するステップと、
e)署名aを作るために前記値fに署名するステップと、
f)前記署名a、公開値γA、および前記アイデンティティ情報IAを前記加入者エンティティに送信するステップと
を含むとを特徴とする公開鍵証明書の生成方法。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態に従って構成された第1のシステムの概略図である。
【図2】本発明の実施形態に従って構成された第2のシステムの概略図である。
【発明を実施するための形態】
【0019】
(好ましい実施形態の詳細な説明)
図1を参照すると、内在的に証明される公開鍵(Implicitly certified public key)を有するシステムが、全般的に符号10によって示されている。このシステム10には、信頼できる第三者のCAおよび、少なくとも第1通信者Aおよび第2通信者Bの対が含まれる。通信者AおよびBは、通信チャネルを介して情報を交換し、通信者AおよびBのそれぞれには、認定/検証(finding/verification)および暗号化/非暗号化(解読)(encryption/decryption)を実行する暗号装置(cryptographicunit)が含まれる。
【0020】
図1を参照すると、信頼できる当事者CAは、大きい素数qについてp=tq+1である適当な素数pと、オーダー(order)qのジェネレータαを選択する。CAは、その秘密鍵として1≦c≦q−1のランダムな整数cを選択し、公開鍵β=αcを計算し、(β、α、p、q)を公開する。
【0021】
方式1:
1.各当事者Aについて、CAは、一意の区別される名前またはアイデンティティIA(たとえば、氏名、住所、電話番号)および、1≦cA≦q−1のランダムな整数cAを選択する。次に、CAは、
【0022】
【数3】

【0023】
を計算する(γAは、当事者Aの公開鍵再構成公開データである。対(IA、γA)は、Aの内在的証明書として働く)。
【0024】
2.CAは、関数f=F(IA、γA)を選択する。たとえば、F(γA、IA)=γA+h(IA)またはF(γA、IA)=h(γA+IA)である。ここで、hは、安全なハッシュ関数であり、当事者Aの秘密鍵であるaについて次式を解く。a=0の場合には、CAは、別のcAを選択し、もう一度次式を解く。
1=cf+cAa(mod q)
3.CAは、3つ組(γA、a、IA)を保護された形でAに送信する。この3つ組は、IAに対するCAの署名である。ここで、
αは、Aの秘密鍵であり、
γAは、Aのジェネレータであり、
【0025】
【数4】

【0026】
は、Aの公開鍵である。
Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算し、したがって公開鍵を導出することによって、公開ドメインから当事者Aの(IDに基づく)内在的に検証可能な公開鍵を得ることができる。
γAa=αβ-f(mod p)
このように上述の式から公開鍵を引き出すことは、ただ1つの累乗演算(exponentiation operation)を必要とする。
【0027】
誰でも公開データから当事者Aの公開鍵を再構成することができるが、これは、再構成された公開鍵γAaが証明されたことを意味しない。この方式は、当事者Aが対応する秘密鍵の完全な知識を有することを示すアプリケーション・プロトコルと組み合わされたときに、より効果的になる。たとえば、MQV鍵共有方式またはなんらかの署名方式、特にKCDSA(Korean Certificate based Digital Signature Algorithm)と組み合わされたときである。一般に、この内在的証明書方式は、証明書を検証することを必要とするどの方式とも、共に使用することができる。これは、DSA(DigitalSignature Algorithm)署名方式に言及することによって実証することができる。
【0028】
アリスが、公開鍵α、ジェネレータγAを有し、公開ドメインで(α、IA、β、γA、p、q)を公開すると仮定する。次に、アリスは、DSAを使用してメッセージMに署名しようとする。
アリスは、下記を実行する。
1.ランダムにkを選択し、r=γAk(mod p)を計算する。
2.e=sha−1(M)を計算する。
3.s=k-1(e+ar)(mod p)を計算する。
4.Mに対する署名は、(r、s)になる。
【0029】
検証者は、下記を実行する。
1.アリスの公開データ(α、IA、β、γA、p、q)を取得し、公開鍵を再構成する。
δA=γAa=αβ-1(mod p)
2.e=sha−1(M)を計算する。
3.u1=es-1(mod q)およびu2=rs-1(mod q)を計算する。
4.
【0030】
【数5】

【0031】
を計算する。
5.r=r’の場合には、署名が検証される。それと同時に、アリスの(IDに基づく)公開鍵が、内在的に検証される。
【0032】
対(IA、γA)は、アリスの証明書として働く。公開鍵の再構成は、アプリケーション・プロトコルが有効な検証をもたらすときに、内在的検証として働く。公開鍵を取得するために、1回の累乗演算だけが必要であることを想起されたい。
【0033】
代替実施形態では、署名方程式を適当に変更することによって、この方式をほとんどのElGamal署名方式に一般化することができる。以下の節で、いくつかの例を示す。
【0034】
方式2:
CAは、署名方程式l=ca+cAf(mod q)を使用する。CAは、3つ組(γA、a、IA)を保護された形でAに送信し、その後、aがAの秘密鍵、βがAのジェネレータ、βaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
βa=αγA-f(mod p)
この方式では、各ユーザーが、同一のジェネレータβを有し、このβは、CAの公開鍵である。
【0035】
方式3:
CAは、署名方程式a=cf+cA(mod q)を使用する。CAは、3つ組(γA、a、IA)を保護された形でAに送信し、その後、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
この方式では、CAを含む各ユーザーが、同一のジェネレータαを有する。
【0036】
方式4:
CAは、署名方程式a≡cAf+c(mod q)を使用する。CAは、3つ組(γA、a、IA)を保護された形でAに送信し、その後、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=γAfβ(mod p)
この方式では、CAを含む各ユーザーが、同一のジェネレータαを有する。
【0037】
上の方式では、ユーザーまたは当事者Aは、それ自体の秘密鍵を選択する権利を有しない。図2に示された以下の方式は、CAおよびユーザーの両方が、ユーザーの秘密鍵を制御するが、ユーザーだけがその秘密鍵を知っている。
【0038】
方式5’:
Aは、まず、整数kをランダムに選択し、αkを計算し、これをCAに送信する。CAは、
【0039】
【数6】

【0040】
を計算し、kAについて以下の署名方程式を解く。
1=cf+cAA(mod q)
その後、CAは、
【0041】
【数7】

【0042】
を計算し、3つ組(γA1、kA、IA)をAに送信する。Aは、a=kA-1(mod q)およびγA=(γA1k(mod p)を計算する。その後、aがAの秘密鍵、γAがAのジェネレータ、γAaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
γAa=αβ-f(mod p)
方式6:
1.Aは、まず、整数kをランダムに選択し、βkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0043】
【数8】

【0044】
およびf=F(γA、IA)を計算し、kAについて署名方程式を解く(kA=0の場合には、別のcAを選択する)。
1=ckA+cAf(mod q)
その後、CAは、
【0045】
【数9】

【0046】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
注:(γA1、kA、IA)は、公開チャネルによって送信することができる。
3.Aは、
【0047】
【数10】

【0048】
、f=F(γA、IA)、およびa=kA−kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、βa=αγA-fであるかどうかを検査する。ここで、aがAの秘密鍵、βがAのジェネレータ、βaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
【0049】
βa=αγA-f(mod p)
方式7:
Aは、まず、整数kをランダムに選択し、αkを計算し、これをCAに送信する。ここでCAは、
【0050】
【数11】

【0051】
を計算し、kAについて署名方程式を解く。
A≡cf+cA(mod q)
その後、CAは、
【0052】
【数12】

【0053】
を計算し、3つ組(γA1、kA、IA)をAに送信する。Aは、
【0054】
【数13】

【0055】
を計算する。その後、a=kA+k(mod q)がAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
方式8:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0056】
【数14】

【0057】
およびf=F(γA、IA)を計算し、kAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cAf+c(mod q)
その後、CAは、
【0058】
【数15】

【0059】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
注:(γA1、kA、IA)は、公開チャネルによって送信することができる。
3.Aは、
【0060】
【数16】

【0061】
、f=F(γA、IA)およびa=kA+kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、αa=γAfβであるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=γAfβ(mod p)
上の方式5〜8では、kAが公開チャネルによって送信されるので、誰もが、ユーザーAの秘密鍵αの部分的な情報を得ることができる。この情報を隠し、上の方式の計算を高速化するために、DES暗号化を導入して、方式5〜8を変更することによって、以下の方式9〜12を得た。方式9〜12の長所は、βが固定されているので、ユーザーが簡単にKを計算できることである。
【0062】
方式9:
1.Aは、まず、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0063】
【数17】

【0064】
およびf=F(γA、β、IA)を計算し、kAについて署名方程式を解く(kA=0の場合には、別のcAを選択する)。
1=cf+cAA(mod q)
次に、CAは、K=(akc(mod p)および
【0065】
【数18】

【0066】
を計算し、3つ組
【0067】
【数19】

【0068】
をAに送信する。
3.Aは、K=βk(mod p)、
【0069】
【数20】

【0070】
、およびa=kA-1(mod q)を計算する(a=1の場合には、ステップ1に戻る)。その後、γAa=αβ-fであるかどうかを検査する。ここで、aがAの秘密鍵、γAがAのジェネレータ、γAaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
γAa=αβ-f(mod p)
方式10:
1.Aは、まず、整数kをランダムに選択し、βkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0071】
【数21】

【0072】
およびf=F(γA、β、IA)を計算し、kAについて署名方程式を解く(kA=0の場合には、別のcAを選択する)。
1=ckA+cAf(mod q)
次に、CAは、
【0073】
【数22】

【0074】
を計算し、3つ組
【0075】
【数23】

【0076】
をAに送信する。
注:
【0077】
【数24】

【0078】
は、公開チャネルによって送信することができる。
3.Aは、
【0079】
【数25】

【0080】
を計算し、a=kA−kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、βa=αγA-fであるかどうかを検査する。ここで、aがAの秘密鍵、βがAのジェネレータ、βaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
βa=αγA-f(mod p)
方式11:
1.Aは、まず、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0081】
【数26】

【0082】
およびf=F(γA、β、IA)を計算し、kAを計算する(kA=0の場合には、別のcAを選択する)。
A=cf+cA(mod q)
次に、CAは、K=(αkc(mod p)および
【0083】
【数27】

【0084】
を計算し、3つ組
【0085】
【数28】

【0086】
をAに送信する。
注:
【0087】
【数29】

【0088】
は、公開チャネルによって送信することができる。
3.Aは、K=βk(mod p)、
【0089】
【数30】

【0090】
、およびa=kA+k(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、αa=βfγAであるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、αa=γAf(mod p)を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
【0091】
方式12:
1.Aは、まず、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0092】
【数31】

【0093】
およびf=F(γA、β、IA)を計算し、kA(kA=0の場合には、別のcAを選択する)kA=cAf+c(mod q)を計算する。
次に、CAは、K=(αkc(mod p)および
【0094】
【数32】

【0095】
を計算し、3つ組
【0096】
【数33】

【0097】
をAに送信する。
注:
【0098】
【数34】

【0099】
は、公開チャネルによって送信することができる。
3.Aは、K=βk(mod p)、
【0100】
【数35】

【0101】
、f=F(γA、β、IA)、およびa=kA+kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、αa=γAfβであるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=γAfβ(mod p)
方式9〜12の長所は、βが固定されているのでユーザーAがKを簡単に計算できることと、kAが暗号化され、他人がそれを知ることができなくなっていることである。
【0102】
方式5〜12の場合、関数F(γA、β、IA)にオプション・パラメータOPを追加すること(すなわち、f=F(γA、β、IA、OP)によって、これらの方式がより役立つものになる。たとえば、
【0103】
【数36】

【0104】
である。ここでaEは、ユーザーAの秘密暗号化鍵であり、
【0105】
【数37】

【0106】
は、Aの公開暗号化鍵である。下の方式15は、方式7の変形形態である。方式5〜12を、同一の形で変更することができる。方式1〜4も、同一の形で変更することができる。
【0107】
方式13:
1.Aは、まず、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0108】
【数38】

【0109】
およびf=F(γA、IA、OP)を計算し、kAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cf+cA(mod q)
次に、CAは、K=H((αkc)および
【0110】
【数39】

【0111】
を計算し、3つ組
【0112】
【数40】

【0113】
をAに送信する。
3.Aは、K=H(βk)、
【0114】
【数41】

【0115】
、およびa=kA+k(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、γA=αaβ-f(mod p)を計算し、f=F(γA、IA、OP)であるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
さらに、方式14に従うことによって、帯域幅(bandwidth)を減らすことができる。
【0116】
方式14:
1.Aは、まず、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0117】
【数42】

【0118】
を計算し、
【0119】
【数43】

【0120】
をγAの最初の80個の最下位ビットとしてセットする。その後、
【0121】
【数44】

【0122】
およびkAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cf+cA(mod q)
次に、CAは、K=(αkc(mod p)および
【0123】
【数45】

【0124】
を計算し、3つ組
【0125】
【数46】

【0126】
をAに送信する。
注:
【0127】
【数47】

【0128】
は、公開チャネルによって送信することができる。
3.Aは、K=βk(mod p)、
【0129】
【数48】

【0130】
、およびa=kA+k(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、
【0131】
【数49】

【0132】
、γA=αaβ-f(mod p)を計算し、γAの最初の80個の最下位ビットが
【0133】
【数50】

【0134】
であるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
方式5.cのセキュリティ・レベルは、前に述べた他の方式ほどではない。方式5.cは、80ビットのセキュリティだけを有する。しかし、現在の実用的なアプリケーションにはこれでよい。最初の80個の最下位ビットを、γAの半分の下位ビットに拡張することができる。
【0135】
内在的証明書は、情報にオプション・パラメータOPを含めることによって、他の有用な情報を証明するのに使用することができる。たとえば、
【0136】
【数51】

【0137】
である。ここで、aEは、Aのもう1つの秘密鍵であり、
【0138】
【数52】

【0139】
は、対応する公開鍵である。下の方式15は、方式7の変形形態である。他の方式も、同一の形で変更することができる。
【0140】
方式15:
1.整数aEをランダムに選択し、
【0141】
【数53】

【0142】
を計算する。
2.Aは、整数kをランダムに選択し、αkを計算し、αkおよび
【0143】
【数54】

【0144】
をCAに送信する。
3.CAは、整数cAをランダムに選択し、
【0145】
【数55】

【0146】
および
【0147】
【数56】

【0148】
(たとえば
【0149】
【数57】

【0150】
)を計算し、kAを計算する(kA=0の場合には、別のcAを選択する)。
A=cf+cA(mod q)
その後、CAは、
【0151】
【数58】

【0152】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
注:(γA1、kA、IA)は、公開チャネルによって送信することができる。
4.Aは、a=kA+k(mod q)を計算し(a=0、1の場合には、ステップ1に戻る)、
【0153】
【数59】

【0154】
を計算する。その後、αa=βfγAであるかどうかを検査する。ここで、aがAの秘密署名鍵であり、αがAのジェネレータ、αaがAの公開署名鍵であり、aEがAの秘密暗号化鍵、
【0155】
【数60】

【0156】
がAの公開暗号化鍵である。Aは、公開ドメインで
【0157】
【数61】

【0158】
を公開する。
5.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
注:(方式13〜15について)
1.アイデンティティIAは、CAまたはエンティティAのいずれかによって選択することができる。
2.CAは、エンティティAを認証しなければならない。これは、方式11の注2に記載の方法によって行うことができる。
3.
【0159】
【数62】

【0160】
または
【0161】
【数63】

【0162】
または(γA1、kA、IA)を、公開チャネルによって送信することができる。
本発明の方式では、(α、γA)は、AのID、IAに対するCAの署名であり、これは公衆によって知られると思われた。しかし、現在は、ユーザーAだけがaを知る。したがって、本発明の方式を使用するときには、アプリケーション・プロトコルで、ユーザーAが自分自身の秘密鍵を知るようにしなければならない。言い換えると、アプリケーション・プロトコルは、Aが計算に自分の秘密鍵を使用することを保証しなければならない。
【0163】
新方式のセキュリティは、署名方程式に依存する。たとえば、方式1では、署名方程式は次式である。
1=cf+cAa(mod q) (1)
以下で、1方向関数F(γA、IA)の選択について、新しい方式1がDSAと同等であることを示す。
【0164】
CAが、AのアイデンティティIAに署名するのにDSA署名方程式を使用すると仮定する。まず、CAは、cAをランダムに選択し、
【0165】
【数64】

【0166】
を計算し、次に、CAは、安全なハッシュ関数hを使用してh(IA)を計算し、最後に、CAは、sについて次式を解く。
h(IA)≡cγA+cAs(mod q) (2)
ここで、(γA、s)は、IAに対するCAの署名である。
式(2)にh(IA-1を乗ずることによって、次式が得られる。
1≡cγAh(IA-1+cAsh(IA-1(mod q)
F(γA、IA)=γAh(IA-1であると仮定し、上の式のsh(IA-1をaで置換することによって、式(1)が得られる。明らかに、式(2)は、F(γA、IA)=γAh(IA-1の場合に、式(1)と同等である。これは、誰かが署名方程式(1)を使用してこの方式を破ることができる場合に、その人物が、DSA方式である署名方程式(2)を使用してこの方式を破ることができることを意味する。
【0167】
ヒューリスティックな(heuristic)議論から、F(γA、IA)=γAh(IA)またはF(γA、IA)=h(γA、IA)である場合に、本発明の新方式が、F(γA、IA)の適当な選択について安全であることが暗示される。F(γA、IA)は、なんらかの他の形にすることができ、たとえば、IAが小さく、たとえば20ビットであるが、qが180ビットを超えるときに、F(γA、IA)=γA+IAを使用することができる。新方式の短所は、すべてのユーザーおよびCAが同一のフィールド・サイズを使用することである。しかし、これは、たとえばGiraultのRSAに基づくDiffie−Hellman公開鍵共有方式など、すべてのIDに基づく内在的に証明される公開鍵方式が動作する方法である。
【0168】
もう1組の方式も、次のように説明することができる。
【0169】
システム・セットアップ:信頼できる当事者CAは、大きい素数qについてp=tq+1である適当な素数pと、オーダー(位数)qのジェネレータαを選択する。CAは、その秘密鍵として1<c<q−1のランダムな整数cを選択し、公開鍵β=αc mod pを計算し、(β、α、p、q)を公開する。その後、CAは、特殊な暗号関数f=F(γA、IA、OP)(f:{0、1}*→{1、2、…、(q−1)})を選択し、この関数を用いて、内在的証明書を作るのに使用される署名方式が安全になるようにする。ここで、OPは、ユーザーが関係することのできるなんらかのオプション・パラメータ(日付、またはCAの公開鍵β)を表す。たとえば、hが安全なハッシュ関数であるものとすると、fは、以下の形式のいずれかにすることができる。
1.F(γA、IA、OP)=γA+β+h(IA
2.F(γA、IA、OP)=h(γA‖β‖IA
3.F(γA、IA、OP)=γA+β+IA、ここで、IAは、なんらかのパターン(または、IAが小さく、たとえば20ビットであり、qが180ビットを超えるとき)を有する。
4.F(γA、IA、OP)=γA+h(IA
5.F(γA、IA、OP)=h(γA‖IA
6.F(γA、IA、OP)=γA+IA、ここで、IAは、なんらかのパターン(または、IAが小さく、たとえば20ビットであり、qが180ビットを超えるとき)を有する。
7.パラメータを少し変更して、所与の安全な署名方式から安全な署名方式を得ることは非常に簡単である。したがって、F(γA、IA、OP)は、内在的証明書を作るのに使用された署名方式が安全であることを保障する他の形式とすることができる。F(γA、IA、OP)を適当に選択することによって、これまでに知られているElgamal様署名方式が、変更の後に内在的証明書方式として使用される場合の本明細書で提案される4系列の方式の1つと同等になることに留意されたい。しかし、本明細書で提案される方式は、より高い効率を有する。
【0170】
注:上記のシステム・セットアップが、以下の方式で仮定される。
【0171】
方式1.a:
1.各エンティティAについて、CAは、一意の区別される名前またはアイデンティティIA(たとえば、氏名、住所、電話番号)および、1<cA<qのランダムな整数cAを選択する。次に、CAは、
【0172】
【数65】

【0173】
を計算する。(γAは、Aの公開鍵再構成公開データである。(IA、γA)は、Aの内在的証明書として働く)。
2.CAは、f=F(γA、IA、OP)を計算し、aについて次式を解く(a=0、1、c、cA-1cの場合には、別のcAを選択し、式をもう一度解く)。
1=cf+cAa(mod q)
3.CAは、3つ組(γA、a、IA)を保護された形でAに送信する。この3つ組は、IAに対するCAの署名である。その後、aがAの秘密鍵、γAがAのジェネレータ、
【0174】
【数66】

【0175】
がAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に検証された公開鍵を得ることができる。
γAa=αβ-f(mod p)
注:
1.ステップ1では、アイデンティティIAをエンティティAが選択することができる。
2.ステップ2では、a=0、1を排除した。というのは、この場合に、誰もがAの秘密鍵を簡単に知ることができるからである。特にa=0,cA-1cのときには、1=cf(mod q)からCAの秘密鍵cを誰でも簡単に計算することができる。
3.この方式では、各ユーザーが異なるシステム・ジェネレータγAを有する。
【0176】
方式1.b:
1.各エンティティAについて、CAは、一意の区別される名前またはアイデンティティIA(たとえば、氏名、住所、電話番号)および、1<cA<qのランダムな整数cAを選択する。次に、CAは、
【0177】
【数67】

【0178】
を計算する(γAは、Aの公開鍵再構成公開データである。(IA、γA)は、Aの内在的証明書として働く)。
2.CAは、f=F(γA、IA、OP)を計算し、aについて次式を解く(a=0、1、cの場合には、別のcAを選択し、式をもう一度解く)。
1≡ca+cAf(mod q)
3.CAは、3つ組(γA、a、IA)を保護された形でAに送信する。この3つ組は、IAに対するCAの署名である。その後、aがAの秘密鍵、βがAのジェネレータ、βaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に検証された公開鍵を得ることができる。
βa=αγA-f(mod p)
注:
1.ステップ1では、アイデンティティIAをエンティティAが選択することができる。
2.ステップ2では、a=0、1を排除した。というのは、この場合に、誰もがAの秘密鍵を簡単に知ることができるからであり、a=0のときには、証明書は、CAに関係しない。
3.この方式では、各ユーザーが同一のシステム・ジェネレータβを有する。
【0179】
方式1.c:
1.各エンティティAについて、CAは、一意の区別される名前またはアイデンティティIA(たとえば、氏名、住所、電話番号)および、1<cA<qのランダムな整数cAを選択する。次に、CAは、
【0180】
【数68】

【0181】
を計算する(γAは、Aの公開鍵再構成公開データである。(IA、γA)は、Aの内在的証明書として働く)。
2.CAは、f=F(γA、IA、OP)を計算し、aについて次式を解く(a=0、1、またはcの場合には、別のcAを選択し、式をもう一度解く)。
a≡cf+cA(mod q)
3.CAは、3つ組(γA、a、IA)を保護された形でAに送信する。この3つ組は、IAに対するCAの署名である。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に検証された公開鍵を得ることができる。
αa=βfγA(mod p)
注:
1.ステップ1では、アイデンティティIAをエンティティAが選択することができる。
2.ステップ2では、a=0、1を排除した。というのは、この場合に、誰もがAの秘密鍵を簡単に知ることができるからである。
3.この方式では、各ユーザーが同一のシステム・ジェネレータαを有する。
【0182】
方式1.d:
1.各エンティティAについて、CAは、一意の区別される名前またはアイデンティティIA(たとえば、氏名、住所、電話番号)および、1<cA<qのランダムな整数cAを選択する。次に、CAは、
【0183】
【数69】

【0184】
を計算する(γAは、Aの公開鍵再構成公開データである。(IA、γA)は、Aの内在的証明書として働く)。
2.CAは、f=F(γA、IA、OP)を計算し、aについて次式を解く(a=0、1、またはcの場合には、別のcAを選択し、式をもう一度解く)。
【0185】
a≡cAf+c(mod q)
3.CAは、3つ組(γA、a、IA)を保護された形でAに送信する。この3つ組は、IAに対するCAの署名である。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に検証された公開鍵を得ることができる。
αa=γAfβ(mod p)
注:
1.ステップ1では、アイデンティティIAをエンティティAが選択することができる。
2.ステップ2では、a=0、1を排除した。というのは、この場合に、誰もがAの秘密鍵を簡単に知ることができるからである。
3.この方式では、各ユーザーが同一のシステム・ジェネレータαを有する。
【0186】
誰でも公開データからユーザーAの公開鍵を再構成することができるが、これは、再構成された公開鍵が証明されたことを意味しない。証明書を明示的に検証するためには、aを知る必要がある。aを知ったならば、検証プロセスは、IAに対するCAの署名を検証することになる。たとえば、方式1.aでは、検証者がαβ-fを計算し、ユーザーAがaを使用してγAaを計算する場合に、検証者およびユーザーが、一緒に証明書を検証することができる。しかし、検証者は、ユーザーAが実際にaを知っていることを確認しなければならない。したがって、公開鍵の再構成は、ユーザーAが対応する秘密鍵の完全な知識を有することを示すアプリケーション・プロトコルと組み合わされる場合に限って、内在的検証として働く。一般に、内在的証明書方式は、対象のエンティティおよび公開鍵の認証を必要とするすべての公開鍵方式と共に使用することができる。
【0187】
内在的に証明される公開鍵システムとしてDSA署名方式を使用し、内在的証明書方式として方式1.aを使用して、これを実証する。
【0188】
アリスが、秘密鍵a、ジェネレータγAを有し、公開ドメインで(α、IA、β、γA、p、q)を公開すると仮定する。次に、アリスは、DSAを使用してメッセージMに署名しようとする。
アリスは、下記を実行する。
1.ランダムにkを選択し、r=γAk(mod p)を計算する。
2.e=sha−1(M)を計算する。
3.s=x-1(e+ar)(mod q)を計算する。
4.Mに対する署名は、(r、s)になる。
検証者は、下記を実行する。
1.アリスの公開データ(α、IA、β、γA、p、q)を取得し、fを計算し、公開鍵を再構成する。
βA=γAa=αβ-f(mod p)
2.e=sha−1(M)を計算する。
3.u1=es-1(mod q)およびu2=rs-1(mod q)を計算する。
4.
【0189】
【数70】

【0190】
を計算する。
5.r=r’の場合には、署名が検証される。それと同時に、アリスの(IDに基づく)公開鍵が、内在的に検証される。
対(IA、γA)は、アリスの証明書として働く。DSAの場合、aを知らずにアリスの署名を偽造することが非常に困難であることがわかっている。公開鍵の再構成は、アプリケーション・プロトコルが最後に有効になるときに、内在的検証として働く。公開鍵を取得するために、1回の累乗演算だけが必要であることを想起されたい。この理由から、本発明人は、内在的証明書の検証が、1回の累乗演算を必要とすると主張する。
【0191】
以下の内在的証明書方式は、CAおよびエンティティの両方が、エンティティの秘密鍵を制御するが、対象のエンティティだけがその秘密鍵を知るように、上の方式を変更することによって導出することができる。
【0192】
この節では、もう1つのシステム・パラメータH(*)が必要であり、このH(*)は、安全なハッシュ関数または1方向関数またはアイデンティティ・マップとすることができる暗号関数である。
【0193】
方式2.a:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0194】
【数71】

【0195】
およびf=F(γA、IA、OP)を計算し、kAについて署名方程式を解く(kA=0またはcの場合には、別のcAを選択する)。
1=cf+cAA(mod q)
その後、CAは、
【0196】
【数72】

【0197】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
3.Aは、a=kA-1(mod q)を計算し(a=1の場合には、ステップ1に戻る)、γA=(γA1k(mod p)を計算する。その後、γAa=αβ-fであるかどうかを検査する。ここで、aがAの秘密鍵、γAがAのジェネレータ、γAaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
γAa=αβ-f(mod p)
方式2.b:
5.Aは、整数kをランダムに選択し、βkを計算し、これをCAに送信する。
6.CAは、整数cAをランダムに選択し、
【0198】
【数73】

【0199】
およびf=F(γA、IA、OP)を計算し、kAについて署名方程式を解く(kA=0の場合には、別のcAを選択する)。
1=ckA+cAf(mod q)
その後、CAは、
【0200】
【数74】

【0201】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
7.Aは、
【0202】
【数75】

【0203】
、f=F(γA、IA、OP)、およびa=kA−kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、βa=αγA-fであるかどうかを検査する。ここで、aがAの秘密鍵、βがAのジェネレータ、βaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
8.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
βa=αγA-f(mod p)
方式2.c:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0204】
【数76】

【0205】
およびf=F(γA、IA、OP)を計算し、kAを計算する(kA=cの場合には、別のcAを選択する)。
A≡cf+cA(mod q)
その後、CAは、
【0206】
【数77】

【0207】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
3.Aは、a=kA+k(mod q)を計算し(a=0、1の場合には、ステップ1に戻る)、
【0208】
【数78】

【0209】
を計算する。その後、αa=βfγAであるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
方式2.d:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0210】
【数79】

【0211】
およびf=F(γA、IA、OP)を計算し、kAを計算する(kA=cAの場合には、別のcAを選択する)。
A≡cAf+c(mod q)
その後、CAは、
【0212】
【数80】

【0213】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
3.Aは、
【0214】
【数81】

【0215】
、f=F(γA、IA、OP)、およびa=kA+kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、αa=γAfβであるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=γAfβ(mod p)
注:(方式2.a、2.b、2.c、2.dについて)
1.アイデンティティIAは、CAまたはエンティティAのいずれかによって選択することができる。
2.CAは、エンティティAを認証しなければならない。これは、CAの面前での存在または保護されたチャネルまたは音声(たとえば電話での)または次の方法のいずれかによって行うことができる。
ステップ2で、3つ組(γA1、kA、IA)をAに送信する代わりに、CAが、まずγA1をAに送信する。Aは、γAを計算し、K=H(γA)にセットし、DES(または他の対称鍵システム)によってAの認証情報AAI(VISA情報など)を暗号化し、DESK(AAI)をCAに送信する。CAは、DESK(AAI)を非暗号化してAAIを得る。AAIの有効性を検査した後に、CAは(kA、IA)をAに送信する。
3.(γA1、kA、IA)は、公開チャネルによって送信することができる。
【0216】
上の方式2.a〜2.dでは、内在的証明書方式が、対象のエンティティおよびCAによって完了される。各方式は、本質的に2つの部分すなわち鍵交換部分および署名部分に分割される。鍵交換部分の機能の1つが、公開チャネルによってCAからAに内在的証明書情報を送信することである(詳細な説明は節6で行う)。上の方式の計算を高速化するために、鍵交換部分を変更することができる。以下の方式3.a〜3.dは、方式2.a〜2.dを変更することによって得られた。方式3.a〜3.dの長所は、βが固定されているので、ユーザーAが、CAから応答を得る前にKを計算できることである。この特性は、特にオンラインの場合に好ましい。
【0217】
方式3.a:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0218】
【数82】

【0219】
およびf=F(γA、IA、OP)を計算し、kAについて署名方程式を解く(kA=0の場合には、別のcAを選択する)。
1=cf+cAA(mod q)
次に、CAは、K=H((αkc)および
【0220】
【数83】

【0221】
を計算し、3つ組
【0222】
【数84】

【0223】
をAに送信する。
3.Aは、K=H(βk)、
【0224】
【数85】

【0225】
、およびa=kA-1(mod q)を計算する(a=1の場合には、ステップ1に戻る)。その後、γAa=αβ-fであるかどうかを検査する。ここで、aがAの秘密鍵、γAがAのジェネレータ、γAaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
γAa=αβ-f(mod p)
方式3.b:
1.Aは、整数kをランダムに選択し、βkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0226】
【数86】

【0227】
およびf=F(γA、IA、OP)を計算し、kAについて署名方程式を解く(kA=0の場合には、別のcAを選択する)。
1=ckA+cAf(mod q)
次に、CAは、
【0228】
【数87】

【0229】
およびk ̄A=DESk(KA)を計算し、3つ組
【0230】
【数88】

【0231】
をAに送信する。
3.Aは、
【0232】
【数89】

【0233】
を計算し、a=kA−kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、βa=αγA-fであるかどうかを検査する。ここで、aがAの秘密鍵、βがAのジェネレータ、βaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
βa=αγA-f(mod p)
注:(方式3.bについて)
1.アイデンティティIAは、CAまたはエンティティAのいずれかによって選択することができる。
2.CAは、エンティティAを認証しなければならない。これは、CAの面前での存在または保護されたチャネルまたは音声(たとえば電話での)または次の方法のいずれかによって行うことができる。
ステップ2で、3つ組
【0234】
【数90】

【0235】
をAに送信する代わりに、CAが、まずγAをAに送信する。Aは、
【0236】
【数91】

【0237】
を計算し、DES(または他の対称鍵システム)によってAの認証情報AAI(VISA情報など)を暗号化し、DESK(AAI)をCAに送信する。CAは、DESK(AAI)を非暗号化してAAIを得る。AAIの有効性を検査した後に、CAは
【0238】
【数92】

【0239】
をAに送信する。
3.
【0240】
【数93】

【0241】
は、公開チャネルによって送信することができる。
【0242】
方式3.c:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0243】
【数94】

【0244】
およびf=F(γA、IA、OP)を計算し、kAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cf+cA(mod q)
次に、CAは、K=H((αkc)および
【0245】
【数95】

【0246】
を計算し、3つ組
【0247】
【数96】

【0248】
をAに送信する。
3.Aは、K=H(βk)、
【0249】
【数97】

【0250】
、およびa=kA+k(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、αa=βfγAであるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
方式3.d:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0251】
【数98】

【0252】
およびf=F(γA、IA、OP)を計算し、kAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cAf+c(mod q)
次に、CAは、K=H((αkc)および
【0253】
【数99】

【0254】
を計算し、3つ組
【0255】
【数100】

【0256】
をAに送信する。
3.Aは、K=H(βk)、
【0257】
【数101】

【0258】
、f=F(γA、IA、OP)、およびa=kA+kf(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、αa=γAfβであるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=γAfβ(mod p)
注:(方式3.a、3.c、3.dについて)
1.アイデンティティIAは、CAまたはエンティティAのいずれかによって選択することができる。
2.CAは、エンティティAを認証しなければならない。これは、CAの面前での存在または保護されたチャネルまたは音声(たとえば電話での)または次の方法のいずれかによって行うことができる。
ステップ1で、Aは、αkおよびK=H(βk)を計算し、αkおよびDESK(AAI)をCAに送信する。CAは、K=H((αkc)を計算し、DESK(AAI)を非暗号化してAAIを得る。AAIの有効性を検査した後に、CAはステップ2を継続する。
3.(γA、kA、IA)は、公開チャネルによって送信することができる。
【0259】
方式3.a、3.c、および3.dの長所は、βが固定されているのでユーザーAがKを簡単に計算できることと、kAが暗号化され、他人がそれを知ることができなくなっていることである。実際に、kAが知れわたることが、証明書方式のセキュリティを低下させない。kAを暗号化する目的は、エンティティが確実にkを知るようにするためである。したがって、方式3.a〜3.dについて、証明書方式で注2で説明した方法を使用するならば、DES暗号化部分を除去することができ、
【0260】
【数102】

【0261】
をkAで置換することができる。
【0262】
上の方式の送信帯域幅を節約するために、γAの代わりにf=F(γA、IA、OP)を送信することによって上の方式を変更することができる(一般に、γAのサイズは160ビットより大きく、fはちょうど160ビットであることに留意されたい)。下の方式4.cは、方式3.cの変形形態である。
【0263】
方式4.c:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0264】
【数103】

【0265】
およびf=F(γA、IA、OP)を計算し、kAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cf+cA(mod q)
次に、CAは、K=H((αkc)および
【0266】
【数104】

【0267】
を計算し、3つ組
【0268】
【数105】

【0269】
をAに送信する。
3.Aは、K=H(βk)、
【0270】
【数106】

【0271】
、およびa=kA+k(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、γA=αaβ-f(mod p)を計算し、f=F(γA、IA、OP)であるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
さらに、方式5.cに従うことによって、帯域幅を減らすことができる。
【0272】
方式5.c:
1.Aは、整数kをランダムに選択し、αkを計算し、これをCAに送信する。
2.CAは、整数cAをランダムに選択し、
【0273】
【数107】

【0274】
を計算し、
【0275】
【数108】

【0276】
をγAの最初の80個の最下位ビットとしてセットする。その後、
【0277】
【数109】

【0278】
およびkAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cf+cA(mod q)
次に、CAは、K=(αkc(mod p)および
【0279】
【数110】

【0280】
を計算し、3つ組
【0281】
【数111】

【0282】
をAに送信する。
【0283】
注:
【0284】
【数112】

【0285】
は、公開チャネルによって送信することができる。
3.Aは、K=βk(mod p)、
【0286】
【数113】

【0287】
、およびa=kA+k(mod q)を計算する(a=0、1の場合には、ステップ1に戻る)。その後、
【0288】
【数114】

【0289】
、γA=αaβ-f(mod p)を計算し、γAの最初の80個の最下位ビットが
【0290】
【数115】

【0291】
であるかどうかを検査する。ここで、aがAの秘密鍵、αがAのジェネレータ、αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β、γA、p、q)を公開する。
4.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
方式5.cのセキュリティ・レベルは、前に述べた他の方式ほどではない。方式5.cは、80ビットのセキュリティだけを有する。しかし、現在の実用的なアプリケーションにはこれでよい。最初の80個の最下位ビットを、γAの半分の下位ビットに拡張することができる。
【0292】
内在的証明書は、情報にオプション・パラメータOPを含めることによって、他の有用な情報を証明するのに使用することができる。たとえば、
【0293】
【数116】

【0294】
である。ここで、αEは、Aのもう1つの秘密鍵であり、
【0295】
【数117】

【0296】
は、対応する公開鍵である。下の方式6.cは、方式2.cの変形形態である。他の方式を、同一の形で変更することができる。
【0297】
方式6.c:
1.Aは、整数aEをランダムに選択し、
【0298】
【数118】

【0299】
を計算する。
2.Aは、整数kをランダムに選択し、αkを計算し、αkおよび
【0300】
【数119】

【0301】
をCAに送信する。
【0302】
3.CAは、整数cAをランダムに選択し、
【0303】
【数120】

【0304】
を計算し(たとえば
【0305】
【数121】

【0306】
)、kAを計算する(kA=0の場合には、別のcAを選択する)。
A≡cf+cA(mod q)
その後、CAは、
【0307】
【数122】

【0308】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
4.Aは、a=kA+k(mod q)を計算し(a=0、1の場合には、ステップ1に戻る)、
【0309】
【数123】

【0310】
を計算する。その後、αa=βfγAであるかどうかを検査する。ここで、aがAの秘密署名鍵であり、αがAのジェネレータ、αaがAの公開署名鍵である。aEがAの秘密暗号化鍵、
【0311】
【数124】

【0312】
がAの公開暗号化鍵である。Aは、公開ドメインで
【0313】
【数125】

【0314】
を公開する。
5.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に証明される公開鍵を得ることができる。
αa=βfγA(mod p)
注:(方式4.c、5.c、6.cについて)
1.アイデンティティIAは、CAまたはエンティティAのいずれかによって選択することができる。
2.CAは、エンティティAを認証しなければならない。これは、方式3.cの注2に記載の方法によって行うことができる。
【0315】
【数126】

【0316】
または
【0317】
【数127】

【0318】
または(γA1、kA、IA)を、公開チャネルによって送信することができる。
【0319】
CA連鎖(CA chaining)方式
CA連鎖構造を実施するために、すなわち、CA1がCA2を認証し、CA2がCA3を認証し、CA3がユーザーAを認証する。この節では、CA連鎖内に3つのCAがある例を提示する。基本方式3’を使用して、この例を実証する。
【0320】
システム・セットアップ:
最上位の信頼できる当事者CA1は、大きい素数qについてp=tq+1である適当な素数pと、オーダー(位数)qのジェネレータαを選択する。CA1は、その秘密鍵として1≦c1≦q−1のランダムな整数c1を選択し、公開鍵
【0321】
【数128】

【0322】
を計算し、(β1、α、p、q)を公開する。
フェーズ1 CA2が、CA1からの内在的に証明される公開鍵を問い合わせる。
1.CA2は、整数k2をランダムに選択し、
【0323】
【数129】

【0324】
を計算し、これをCA1に送信する。
【0325】
2.CA1は、一意の区別される名前またはアイデンティティICA2および、1≦cCA2≦q−1のランダムな整数cCA2を選択する。次に、CA1は、
【0326】
【数130】

【0327】
を計算する(γCA2は、CA2の公開鍵再構成公開データである)。
3.CA1は、関数f1=F(γCA2、ICA2)を選択し、kCA2を計算する(kCA2=0の場合には、ステップ2で別のcCA2を選択し、kCA2を再計算する)。

CA2=c11+cCA2(mod q)
4.CA1が、
【0328】
【数131】

【0329】
を計算し、3つ組(γCA21、kCA2、ICA2)をCA2に送信する。
5.CA2が、
【0330】
【数132】

【0331】
を計算する。その後、c2=kCA2+k2(mod q)がCA2の秘密鍵、αがCA2のジェネレータ、
【0332】
【数133】

【0333】
がCA2の公開鍵になる。CA2は、公開ドメインで(α、ICA2、β1、β2、γCA2、p、q)を公開する。
注:ユーザーがCA2を信頼するときには、β2を直接に使用することができる。
6.誰もが、次式を計算することによって、公開ドメインからCA2の(IDに基づく)内在的に検証された公開鍵を得ることができる。
【0334】
【数134】

【0335】
フェーズ2 CA3が、CA2からの内在的に証明される公開鍵を問い合わせる。
1.CA3は、整数k3をランダムに選択し、
【0336】
【数135】

【0337】
を計算し、これをCA2に送信する。
【0338】
2.CA2は、一意の区別される名前またはアイデンティティICA3および、1≦cCA3≦q−1のランダムな整数cCA3を選択する。CA2が、
【0339】
【数136】

【0340】
を計算する(γCA3は、CA3の公開鍵再構成公開データである)。
3.CA2は、関数f2=F(γCA3、ICA3)を選択し、kCA3を計算する(kCA3=0の場合には、ステップ2で別のcCA3を選択し、kCA3を再計算する)。

CA3≡c22+cCA3(mod q)
4.CA2が、
【0341】
【数137】

【0342】
を計算し、3つ組(γCA31、kCA3、ICA3)をCA3に送信する。
5.CA3が、
【0343】
【数138】

【0344】
を計算する。その後、c3=kCA3+k3(mod q)がCA3の秘密鍵、αがCA3のジェネレータ、
【0345】
【数139】

【0346】
がCA3の公開鍵になる。CA3は、公開ドメインで(α、ICA3、β2、β3、γCA3、p、q)を公開する。
【0347】
注:エンティティがCA3を信頼するときには、β3を直接に使用することができる。
6.誰もが、次式を計算することによって、公開ドメインからCA3の(IDに基づく)内在的に検証された公開鍵を得ることができる。
【0348】
【数140】

【0349】
フェーズ3 ユーザーAが、CA3からの内在的に証明される公開鍵を問い合わせる。
1.Aは、整数kをランダムに選択し、αkを計算し、これをCA3に送信する。
2.CA3は、一意の区別される名前またはアイデンティティIAおよび、1≦cA≦q−1のランダムな整数cAを選択する。CA3が、
【0350】
【数141】

【0351】
を計算する(γAは、Aの公開鍵再構成公開データである)。
3.CA3は、注意深く選択された関数f3=F(γA、IA)を選択し、kAを計算する(kA=0の場合には、ステップ2で別のcAを選択し、kAを再計算する)。
【0352】
A≡c33+cA(mod q)
4.CA3は、
【0353】
【数142】

【0354】
を計算し、3つ組(γA1、kA、IA)をAに送信する。
【0355】
5.Aが、
【0356】
【数143】

【0357】
を計算する。その後、a=kA+k(mod q)がAの秘密鍵、αがAのジェネレータ、βA=αaがAの公開鍵になる。Aは、公開ドメインで(α、IA、β3、βA、γA、p、q)を公開する。
注:ユーザーがAを信頼するときには、βAを直接に使用することができる。
【0358】
6.誰もが、次式を計算することによって、公開ドメインからAの(IDに基づく)内在的に検証された公開鍵を得ることができる。
【0359】
【数144】

【0360】
フェーズ4 ユーザーAの署名および検証
メッセージMに署名するために、ユーザーAは下記を実行する。
1.ランダムにxを選択し、r=αx(mod p)を計算する。
2.e=fA=F(r,M)を計算する。ここで、Fはなんらかの固定された関数である。
3.s=ae+x(mod q)を計算する。
4.Mに対する署名は、(r、s)になる。
検証者は、下記を実行する。
1.CA1、CA2、CA3,およびユーザーAの公開データを得る。
【0361】
(α、ICA2、ICA3、IA、β1、β2、β3、βA、γCA2、γCA3、γA、p、q)
2.ユーザーAの公開鍵を再構成する。
【0362】
【数145】

【0363】
3.e=fA=F(r、M)を計算する。
4.r’=αsβA-e(mod p)を計算する。
5.r=r’の場合には、署名が検証される。それと同時に、CA2、CA3、およびユーザーAの(IDに基づく)公開鍵が、内在的に検証される。
【0364】
ユーザーAの公開鍵の再構成には、3つの既知の基底累乗演算および3つの乗算演算だけが必要である。署名が有効なときには、CA2、CA3、およびユーザーAの(IDに基づく)公開鍵が、内在的に検証される。
【0365】
注:
1.検証者がAを信頼する場合には、Aの公開鍵はβAになる。
2.検証者がCA3を信頼する場合には、Aの再構成公開鍵は
【0366】
【数146】

【0367】
になる。
【0368】
3.検証者がCA2を信頼する場合には、Aの再構成公開鍵は
【0369】
【数147】

【0370】
になる。
【0371】
連署(Co−signing)方式
以下では、複数のCAが1つの内在的証明書に署名できるようにする方式を説明する。これは、基本方式3’を使用して3つのCAが証明書に連署する場合によって例示される。
【0372】
システム・セットアップ:
CA1、CA2、およびCA3が、次の共通のシステム・パラメータを有すると仮定する。(1)大きい素数qに対してp=tq+1になる素数p、(2)オーダーqのジェネレータα、(3)注意深く選択された関数f=F(γ,(IA1+IA2+IA3))。CA1は、その秘密鍵として1≦c1≦q−1のランダムな整数c1を選択し、公開鍵
【0373】
【数148】

【0374】
を計算し、(β1、α、p、q)を公開する。CA2は、その秘密鍵として1≦c2≦q−1のランダムな整数c2を選択し、公開鍵
【0375】
【数149】

【0376】
を計算し、(β2、α、p、q)を公開する。CA3は、その秘密鍵として1≦c3≦q−1のランダムな整数c3を選択し、公開鍵
【0377】
【数150】

【0378】
を計算し、(β3、α、p、q)を公開する。
【0379】
ステップ1 Aは、整数kをランダムに選択し、αkを計算し、これをCA1、CA2、およびCA3に送信する。
ステップ2 CAが、情報を交換し、内在的証明書を計算する。
【0380】
フェーズ1
1.CA1が、一意の区別される名前またはアイデンティティIA1および、1≦cA1≦q−1のランダムな整数cA1を選択し、
【0381】
【数151】

【0382】
を計算し、(
【0383】
【数152】

【0384】
)をCA2およびCA3に送信する。
2.CA2が、一意の区別される名前またはアイデンティティIA2および、1≦cA2≦q−1のランダムな整数cA2を選択し、(
【0385】
【数153】

【0386】
)を計算し、
【0387】
【数154】

【0388】
をCA1およびCA3に送信する。
【0389】
3.CA3が、一意の区別される名前またはアイデンティティIA3および、1≦cA3≦q−1のランダムな整数cA3を選択し、
【0390】
【数155】

【0391】
を計算し、
【0392】
【数156】

【0393】
をCA1およびCA2に送信する。
【0394】
フェーズ2
1.CA1が、
【0395】
【数157】

【0396】
を計算し(γは、Aの公開鍵再構成公開データである)、f=F(γ、(IA1+IA2+IA3))を計算し、kA1を計算する(kA1=0の場合、フェーズ1に戻る)。
A1≡c1f+cA1(mod q)
CA1は、
【0397】
【数158】

【0398】
を計算し、3つ組(γA11、kA1、IA1)をAに送信する。
2.CA2が、
【0399】
【数159】

【0400】
を計算し(γは、Aの公開鍵再構成公開データである)、f=F(γ、(IA1+IA2+IA3))を計算し、kA2を計算する(kA2=0の場合、フェーズ1に戻る)。
A2≡c2f+cA2(mod q)
CA2は、
【0401】
【数160】

【0402】
を計算し、3つ組(γA21、kA2、IA2)をAに送信する。
【0403】
3.CA3が、
【0404】
【数161】

【0405】
を計算し(γは、Aの公開鍵再構成公開データである)、f=F(γ、(IA1+IA2+IA3))を計算し、kA3を計算する(kA3=0の場合、フェーズ1に戻る)。
A3≡c3f+cA3(mod q)
CA3は、
【0406】
【数162】

【0407】
を計算し、3つ組(γA31、kA3、IA3)をAに送信する。
ステップ3 Aが、内在的に連署された秘密鍵および公開鍵再構成情報を計算する。
1.Aは、a=kA1+kA2+kA3+k(mod q)を計算する(aが0または1の場合には、ステップ1に戻る)。
2.Aが、
【0408】
【数163】

【0409】
およびf=F(γ、(IA1+IA2+IA3))を計算する。その後、αa=(β1β2β3fγ(mod p)であるかどうかを検証する。
3.ここで、aがAの内在的に連署された秘密鍵、αがAのジェネレータ、IA=IA1+IA2+IA3がAの共通ID、(β1β2β3fγがAの内在的に共同証明される公開鍵である。
4.Aは、公開ドメインで(α、IA1、IA2、IA3、β1、β2、β3、γ、p、q)を公開する。
【0410】
5.誰もが、(β1β2β3fγ(mod p)を計算することによって、公開ドメインからAの(IDに基づく)内在的に共同証明された公開鍵を得ることができる。
【0411】
応用例
以下の例は、CAの署名方程式として方式3(または方式7’)に関して示される。というのは、この方式では全員が同一のジェネレータを共用するからである。各ユーザーは、CAがシステム・パラメータ(p、q、d)を使用し、各ユーザーが同一のジェネレータを有する限り、異なるCAを有することができる。
【0412】
セット・アップ:
CA1: システム・パラメータ(α、β1、p、q、d)
アリスが、秘密鍵a、ジェネレータαを有し、公開ドメインで(α、IA、β、γA、p、q)を公開する。
CA2: システム・パラメータ(α、β2、p、q)
ボブが、秘密鍵b、ジェネレータαを有し、公開ドメインで(α、IA、β、γA、p、q)を公開する。
MTI/C0鍵共有プロトコルを使用して、本発明の新方式を使用する方法の実例を示す。アリスとボブが鍵交換を実行したいと思っていると仮定する。
【0413】
MTI/C0プロトコル
1.アリスは、ボブの公開鍵
【0414】
【数164】

【0415】
を再構成し、整数xをランダムに選択し、(αbxを計算し、ボブに送信する。
【0416】
2.ボブは、アリスのの公開鍵
【0417】
【数165】

【0418】
を再構成し、整数yをランダムに選択し、(αayを計算し、アリスに送信する。
【0419】
3.アリスは、共有鍵(shared key)
【0420】
【数166】

【0421】
を計算する。
【0422】
4.ボブは、共有鍵(shared key)
【0423】
【数167】

【0424】
を計算する。
【0425】
これは2パス・プロトコルである。本発明の内在的証明書方式を用いると、各当事者は、3つの累乗演算を実行するだけで共有鍵(shared key)を得ると同時に、認証鍵共有および内在的公開鍵検証を実行する。
【0426】
以下は、サインクリプション(signcryption)方式の例である。CAの署名方程式として方式3(または方式7)を使用する。というのは、この方式では、全員が同一のジェネレータを共用するからである。その後の方式では、CAの署名方程式として方式13を使用する。この節のすべての方式について、各ユーザーは、CAが同一のシステム・パラメータ(p、q、α)を使用し、各ユーザーが同一のジェネレータを使用する限り、異なるCAを有することができる。
【0427】
セット・アップ:
CA1: システム・パラメータ(α、β1、p、q)
アリス: 秘密鍵a、ジェネレータα、および公開ドメインの(α、IA、β1、γA、p、q)。
CA2: システム・パラメータ(α、β2、p、q)
ボブ: 秘密鍵b、ジェネレータα、および公開ドメインの(α、IB、β2、γB、p、q)。
ボブは、署名され暗号化されたメッセージMをアリスに送信したいと思っている。
【0428】
サインクリプション・プロトコル1:
ボブが、署名され暗号化されたメッセージMをアリスに送信したいと思っていると仮定する。
ボブは、下記を実行する。
1.アリスの公開鍵
【0429】
【数168】

【0430】
を再構成する。
2.整数xをランダムに選択し、鍵r=(αax(mod p)を計算する。

3.C=DESr(M)を計算する。
4.e=hash(C IA)を計算する。
5.s=be+x(mod q)を計算する。
6.対(C、s)をアリスに送信し、したがって、Cは、暗号化されたメッセージであり、sは、署名である。
【0431】
メッセージを復元するために、アリスは下記を実行する。
1.e=hash(C IA)を計算する。
2.ボブの公開鍵
【0432】
【数169】

【0433】
を再構成する。
3.αas(αb-ac(mod p)を計算する。これはrである。
4.メッセージM=DESr(C)を非暗号化する。
5.冗長性に関する検査を行う。
したがって、ボブは、2回の累乗演算だけを行い、アリスは、3回の累乗演算を行う。しかし、アリスとボブの両方が、お互いの認証を確信している。この方式の場合、メッセージMが、なんらかの冗長性またはパターンを有しなければならないことに留意されたい。
【0434】
サインクリプション・プロトコル2(一般的な場合):
セット・アップ:
CA1: システム・パラメータ(α、β1、p、q)
アリス: 秘密鍵a、ジェネレータα、および公開ドメインの(α、IA、β1、γA、p、q)。
CA2: システム・パラメータ(α、β2、p、q)
ボブ: 秘密鍵b、ジェネレータα、および公開ドメインの(α、IB、β2、γB、p、q)。
【0435】
注:このセット・アップは、内在的証明書用である。通常の証明書方式システムの場合、アリスとボブが同一のジェネレータを有することだけが必要である。
【0436】
アリスへのメッセージをサインクリプト(signcrypt)するために、ボブは下記を実行する。
【0437】
1.アリスの公開鍵αaを得る(内在的証明書方式の場合、アリスの公開鍵
【0438】
【数170】

【0439】
を再構成する)。
2.整数xをランダムに選択し、r=(αax(mod p)を計算する。
3.C=DESr(M)を計算する。
4.e=hash(C‖αa)を計算する。
5.s=be+x(mod q)を計算する。
6.(C、s)をアリスに送信する。Cは、暗号化されたメッセージであり、sは、署名である。
メッセージを復元するために、アリスは下記を実行する。
1.e=hash(C‖αa)を計算する。
2.ボブの公開鍵αbを得る(内在的証明書方式の場合、ボブの公開鍵
【0440】
【数171】

【0441】
を再構成する)。
3.αas(αb-ae(mod p)を計算する。これはrである。
4.メッセージM=DESr(C)を非暗号化する。
【0442】
注:
1.証明書方式が、本明細書に記載の内在的証明書でない場合には、アリスおよびボブの公開鍵を検証しなければならない。
2.メッセージMが、なんらかの冗長性またはパターンを有しなければならない。
【0443】
3.1つの値rを知っているアリスは、値αabが露出されるので、ボブからアリスへのすべてのメッセージを非暗号化することができる。
4.一般に、ハッシュeにオプション・パラメータを含めなければならない、すなわち、e=hash(C‖αa‖OP)。たとえば、OP=αbまたはOP=αb‖β1‖β2
【0444】
上のサインクリプション方式は、署名者が自分の秘密署名鍵を失った場合に、その署名者がサインクリプトしたすべてのメッセージが公衆に露出されるという短所を有する。事後暗号化の保護のために、新しいサインクリプション方式を提案する。新方式では、各ユーザーが、2対の鍵を有し、1対は署名鍵用、もう1対は暗号化鍵である。新方式は、あらゆる証明書方式と共に使用することができる。しかし、本発明の内在的証明書方式と共に使用される場合に、新方式は最も効果的になる。
【0445】
サインクリプション・プロトコル3(一般的な場合):
セット・アップ:
アリス: 秘密署名鍵a、秘密暗号化鍵aE、ジェネレータα、および公開ドメインの
【0446】
【数172】

【0447】

【0448】
CA2: システム・パラメータ(α、β2、p、q)
ボブ: 秘密署名鍵b、秘密暗号化鍵bE、ジェネレータα、および公開ドメインの
【0449】
【数173】

【0450】

注:このセット・アップは、方式6.cを使用する内在的証明書用である。通常の証明書方式システムの場合、アリスとボブが同一のジェネレータを有することだけが必要である。
【0451】
アリスへのメッセージをサインクリプトするために、ボブは下記を実行する。
【0452】
1 アリスの公開署名鍵αaおよび公開暗号化鍵
【0453】
【数174】

【0454】
を得る(内在的証明書方式の場合、アリスの公開署名鍵
【0455】
【数175】

【0456】
を再構成する)。
2 整数xをランダムに選択し、
【0457】
【数176】

【0458】
を計算する。
3 C=DESr(M)を計算する。

【0459】
【数177】

【0460】
を計算する。
5 s=be+x+bE(mod q)を計算する。
6 (C、s)をアリスに送信する。Cは、暗号化されたメッセージであり、sは、署名である。
メッセージを復元するために、アリスは下記を実行する。
【0461】
1.
【0462】
【数178】

【0463】
を計算する。
2.ボブの公開署名鍵αbおよび公開暗号化鍵
【0464】
【数179】

【0465】
を得る(内在的証明書方式の場合、ボブの公開署名鍵
【0466】
【数180】

【0467】
を再構成する)。
3.
【0468】
【数181】

【0469】
を計算する。これはrである。
4.メッセージM=DESr(C)を非暗号化する。
【0470】
注:
1.受信者アリスの秘密鍵がa+aEであると考えることができる。これは、受信者が、2つの秘密鍵ではなく1つの秘密鍵だけを必要とすることを意味する。しかし、送信者ボブは、2つの秘密鍵を必要とする。通常の証明書の場合、受信者は、1つの秘密鍵だけを必要とする。
2.証明書方式が、本明細書に記載の内在的証明書でない場合には、アリスおよびボブの公開鍵を検証しなければならない。
3.メッセージMが、なんらかの冗長性またはパターンを有しなければならない。
4.
【0471】
【数182】

【0472】
の中のパラメータOPは、空またはOP=β1‖β2とすることができる。
5.1つのrの値を知っても、ポスト・メッセージの情報は明らかにならない。
6.内在的証明書方式を用いると、ボブは、2回の累乗演算だけを実行し、アリスは、4回の累乗演算を実行する。しかし、双方が認証部分(authentification part)であることを、アリスとボブの双方は秘密にしている(are confidential)。
7.誰かがアリスの秘密鍵a+aEを知るか、ボブが両方の秘密鍵を失った場合、事後暗号化されたメッセージを保護することはできない。
【0473】
通常の署名の場合、1つの問題は、署名者が、自分がその署名を署名したことを否定することである。これを否認(repudiation)と呼ぶ。上のプロトコル1および2は、ジャッジ(judge)を信頼するならば、否認拒否機能(non-repudiationfeature)を有する。すなわち、署名者は、自分がサインクリプトされた(signcrypted)メッセージに署名したことを拒否することができない。プロトコル3は、ジャッジが信頼されないときであっても否認拒否機能を有する。次のプロトコルで、ボブが署名を拒否したい場合にジャッジがどのように判断するかを示す。
【0474】
否認拒否プロトコル:
1.アリスが(C、s)をジャッジに送信する。
2.ジャッジは、
【0475】
【数183】

【0476】
を計算する(注:アリスおよびボブの2対の公開鍵を検証しなければならない。内在的証明書方式の場合、再構成公開データから公開鍵を計算しなければならない)。
3.ジャッジは、2つの整数r1およびr2をランダムに選択し、
【0477】
【数184】

【0478】
を計算し、Lをアリスに送信する。
4.アリスは、
【0479】
【数185】

【0480】
を計算し、ジャッジに送り返す。
5.ジャッジは、
【0481】
【数186】

【0482】
を計算し、M=DESr(C)によってメッセージを復元する。
6.Mが正しいフォーマットを有する場合、(C、s)はボブによってサインクリプトされたものに違いない。
7.ジャッジは、判断を行った後に、値
【0483】
【数187】

【0484】
をアリスおよびボブに送信して、自分の判断を確認する。
【0485】
他の2つのサインクリプション・プロトコルの場合、否認拒否(non-repudiation)プロトコルは、ジャッジが完全に信頼されるならば類似したものになる。
【0486】
結論として、本発明の方式は、ユーザーの秘密鍵を計算に直接に使用しなければならないアプリケーション・プロトコルと組み合わされたときに、内在的に証明される、IDに基づくユーザーの公開鍵を提供する。これらの方式は、鍵認証センタ(Key Authentication Center、KAC)が、内在的に証明される公開鍵をユーザーに配送するのに使用することもできる。
【0487】
内在的に証明される公開鍵のもう1つの応用例は、認証機関のビット強度が、証明されるユーザーまたはエンティティの公開鍵と同一であることである。ビット強度によって、相対的な鍵サイズおよび関係するエンティティの処理能力が暗示される。
【0488】
この問題に対処する手法の1つが、X.509証明書で指定されるものなどの従来の証明書構造に、内在的に証明される公開鍵を埋め込むことである。この場合、証明書に対する署名は、内在的に証明される公開鍵より高いビット強度になる。したがって、CAは、2つの異なるセキュリティ・レベルでユーザー公開鍵を証明している。公開鍵を取り出す他のエンティティは、受け入れたいセキュリティ・レベルについて決定することができる。一部の応用分野では、必要な性能をもたらすために、内在的な値(implicit value)によって提供される、より低いレベルだけが必要になる可能性がある。
【0489】
本発明の特定の実施形態および特定の用途に関して本発明を説明してきたが、請求項に記載された本発明の趣旨から逸脱せずに、当業者は本発明のさまざまな変更形態を思い浮かべるであろう。たとえば、好ましい実施形態の上の説明では、乗法表現(multiplicative notation)を利用したが、本発明の方法は、加法表現(additive notation)を使用しても同様に良好に説明することができる。たとえば、ECDSAで実施された楕円曲線アルゴリズムがDSAと同等であることは周知であり、そして、楕円曲線は離散対数アルゴリズムに類似することは、モジュロ素数の整数(integersmoduro a prime)の乗法群Fp*の設定(setting)で通常記述される。群Fp*および楕円曲線群E(Fq)の要素および演算の間には対応関係がある。さらに、この署名技法は、FpおよびF2”上で定義されるフィールド(field)の中で実行される関数にも同様に良好に適用可能である。また、上で説明したDSA署名方式は、当技術分野で既知の一般化されたElGamal署名方式の特定の実例(specificinstance)であり、したがって、本発明の技法がこれに適用可能であることに留意されたい。

【特許請求の範囲】
【請求項1】
公開鍵を生成する方法であって、本願明細書に記載の方法。


【図1】
image rotate

【図2】
image rotate


【公開番号】特開2010−97236(P2010−97236A)
【公開日】平成22年4月30日(2010.4.30)
【国際特許分類】
【出願番号】特願2010−23602(P2010−23602)
【出願日】平成22年2月4日(2010.2.4)
【分割の表示】特願2000−538463(P2000−538463)の分割
【原出願日】平成11年3月23日(1999.3.23)
【出願人】(397071791)サーティコム コーポレーション (38)
【Fターム(参考)】