説明

ゼロ知識証明暗号方法及び装置

本発明は、m≧1の秘密鍵Q1,Q2,…,Qm及び公開鍵G1,G2,…,Gmを保有するキーホルダーを使用し、一対になった各鍵(Qi、Gi)(ただし、i=1,…,m)が関係式Gi=Qiν mod n、又はGi×Qiν=1 mod nを検証し、nは、そのうちの少なくとも二つの数値が異なる素因数であり、ここでは、p1,...,pfと表記される、f個の秘密素因数(ただし、f>1)の積に等しい公開整数であり、また、指数νが2の累乗に等しい公開整数である、鍵暗号方法に関する。本発明は、少なくとも上記素因数を知らない限り、公開パラメータに基づいて上記秘密鍵を(適切な時間で)計算することを不可能にさせるために、公開鍵に与えることができる数学的構造を特に教示している。本発明は、この方法を実施する各種装置にも関する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、非対称鍵暗号(「公開鍵暗号」とも呼ばれる)に関する。さらに具体的には、既知のエンティティの信憑性、又は既知のエンティティからのメッセージの信憑性を検証し、あるいはまた、メッセージに署名をするのに役立つ方法及びシステムに関する。
【背景技術】
【0002】
非対称鍵暗号システムは、一対になった鍵のホルダーを備え、この一対の鍵はそれぞれ、一つの「公開」鍵と一つの「秘密」鍵を備える(各鍵は、さらに、複数のパラメータを持つことができる)。各公開鍵は、認証機関によって、そのホルダーのアイデンティティと結び付けられる。非対称鍵暗号システムは、さらに、ホルダーの認証されたアイデンティティとともに一定数の公開鍵を登録した、「コントローラ」と呼ばれるエンティティを備えている。
【0003】
「RSA」(発明家R.Rivest、A.Shamir及びL.Adlemanの頭文字。「恐らく永遠に解けない新しい暗号」と題されたM.Gardnerの記事を参照、Scientific American誌、1977年8月)と呼ばれる非対称鍵暗号法の発明以来、整数の素因数分解の問題が集中的に研究されてきた。(素因数分解アルゴリズムの進歩ではなく、コンピュータの出力の進歩により)著しい前進がなされたにもかかわらず、適正な時間内に巨大な整数を素因数分解できる方法は、いまだに確認されていない。利用者がRSA方法を信頼するのは、まさにこのためである。
【0004】
RSA方法の実行は、異なる二つの巨大な素因数p1とp2の積であり、nと表記される、「モジュール」と呼ばれる整数と関係している。現行の計算能力を考慮して、少なくとも1024ビット(約10308)のモジュールを使用することを推奨する。RSA公開鍵は、モジュールn及び(p1−1)と(p2−1)についての素因数である「指数」eを含んでいる。これに対応するRSA秘密鍵は、次のような「指数」dを含んでいる。
e×d=1 mod [(p1−1)(p2−1)](「mod」の記号は「modulo」を意味する)。
この方法の安全性は、素因数p1とp2を検証しない限り、適正な時間内に、n及びeからdを計算できないという事実に立脚している。上述したように、適正な時間内に(当然、機密性が保持された)、これらの素因数を計算することは不可能である。
【0005】
「エンティティの認証」と呼ばれる暗号法は、コントローラとキーホルダーを提示し、ホルダーは、ここでは、「デモンストレータ」と呼ばれ、確実な許可、例えば、情報源に対するアクセス権を取得するため、コントローラからの認証を要請する。デモンストレータは、コントローラに自己のアイデンティティを宣言し、そのアイデンティティに関する公開鍵に対応する秘密鍵を保有していることを実証しなければならない。
【0006】
この認証は、デモンストレータが自己の秘密鍵について最小限度の情報さえもをコントローラに開示することなく行うことができる。これは、「ゼロ知識証明」(英語で、「zero−knowledge proof」)認証と呼ばれる。この技法は、「第17回 計算理論に関するACMシンポジウム」で、S.Goldwasser、S.Micali及びC.Rackoffの「対話証明システムの知識の複雑さ」(291ページ〜304ページ、1985年)と題された報告書によって一般的に報告された。
【0007】
「アイデンティティのゼロ知識証明」と題された記事(暗号誌、第1巻、77ページ〜94ページ、1988年)の中で、U.Feige、A.Fiat及びA.Shamirは、「ゼロ知識認証」暗号方法を提案した。この方法の中では、デモンストレータは、一方では、秘密鍵Qを保有しており、他方では、RSA モジュールn及び公開鍵G=Q2 mod nを公開している(Gに基づくQの計算、つまり、modulo n累乗根の計算は、nの素因数がわからない限り、適性な時間内では不可能である)。
【0008】
エンティティの認証に対して、この方法を適用する場合には、いわゆる「Fiat−Shamir」方法は、以下のような対話手順:
1.証明文手順:デモンストレータが、無作為に整数rを選択し、「証明文」R=r2 mod nを計算し、証明文をコントローラに伝送する;
2.チャレンジ手順:コントローラが、0又は1の値をとることができる、「チャレンジ」と呼ばれる整数dを無作為に選択し、このチャレンジをデモンストレータに伝送する;
3.レスポンス手順:デモンストレータが、「レスポンス」D=r×Qd mod nを計算し、このレスポンスをコントローラに伝送する;及び、
4.検証手順:コントローラが、(D2/Gd)mod nを計算し、結果が証明文Rに等しいことを検証することを含む。
【0009】
認証が間違いなく行なわれたと見なす前に、念のため、(毎回、rとd変更しながら)できる限り何度も、この「一連の」手順を繰り返すことが推奨される。
【0010】
これは、確かに「ゼロ知識証明」方法である。というのは、オブザーバは、交換されたデータに基づいて、デモンストレータの秘密鍵Qを計算できないからである。
【0011】
いわゆる「Feige−Fiat−Shamir」の代案、つまり、「平行」代案によると、デモンストレータは、m>1個の秘密鍵Q1,Q2,…,Qm、を保有しており、RSA モジュールnだけでなく、i=1,…,mで、Gi=Qi2 mod nである、多数の公開鍵G1,G2,…,Gmも公開している。
次に、以下の手順:
1.証明文手順:デモンストレータが、無作為に整数rを選択し、「証明文」R=r2 mod nを計算し、証明文をコントローラに伝送する;
2.チャレンジ手順:コントローラが、無作為にm個のチャレンジd1,d2,…,dmを選択するが、ただし、i=1,…,mで、d1は0又は1であり、これらのチャレンジをデモンストレータに伝送する;
3.レスポンス手順:デモンストレータが、レスポンス:
D=r×Q1d1×Q2d2×…×Qmdm mod n
を計算し、次に、このレスポンスをコントローラに伝送する;
4.検証手順:コントローラが、[D2/(G1d1×G2d2×…×Gmdm)]mod nを計算し、結果が証明文Rに等しいことの検証を実行する。
【0012】
この「平行」代案は、上述した「一連の」代案と比較すると、Fiat−Shamirの認証手順を高速化することができる。
【0013】
尚、これらの代案のいずれかを実行するために必要な計算は、デモンストレータが(整数論の専門家が熟知する)「中国の剰余定理」を使用すれば、簡略化することができる。これは、次の要領にしたがって行うことができる。
【0014】
まず、証明文Rの計算を検討する。p1<p2である、モジュールn=p1×p2について、Cはp1より小さな正数であり、p1は(p2×C−1)を割り切る(この数字Cは、「中国の剰余」として知られている)。デモンストレータは、無作為に二つの整数r1とr2、0<r1<p1及び0<r2<p2を選択し、二つの「証明文のコンポーネント」R1=r12 mod p1及びR2=r22 mod p2を計算する。証明文の値は、下記から導き出される。
R=z×p2+R2 ただし、z=C×(R1−R2
【0015】
次に、レスポンスDの計算については、デモンストレータは、次のように行うことができる。i=1,…,mである、「秘密鍵のコンポーネント」Qi,1=Qi mod p1及びQi,2=Qi mod p2を定義する。デモンストレータは、まず、二つの「レスポンスのコンポーネント」を計算する。
1=r1×Q1,ld1×Q2,ld2×…×Qm,1dm mod p1、及び、
2=r2×Q1,2d1×Q2,2d2×…×Qm,2dm mod p2
次に、レスポンスの値を下記から導き出す。
D=z×p2+D2 ただし、z=C×(D1−D2
【0016】
この「中国式」計算方法の利点は、p1とp2の数値が一般的にnよりもずっと小さいことを条件として、デモンストレータがmodulo nの代わりに、modulo p1とmodulo p2を計算することである。
【0017】
Fiat−Shamirのエンティティの認証手順は、コントローラが受信したメッセージMが、ここでも「デモンストレータ」と呼ばれるキーホルダーから間違いなく送信されたことを、コントローラが検証する手順に、簡単に置換することができる。このメッセージの認証手順は、次の対話手順:
1.証明文手順:デモンストレータが、整数rを無作為に選択し、まず、証明文R=r2 mod nを計算し、次に、hがハッシュ関数(例えば、ISO/IEC 10118−3規格に定義された関数の一つ)である、「タイトル」(「コイン」とも呼ばれる)T=h(M,R)を計算し、最後に、このタイトルTをコントローラに伝送する;
2.チャレンジ手順:コントローラが、0又は1の値をとることができるチャレンジdを無作為に選択し、このチャレンジをデモンストレータに伝送する;
3.レスポンス手順:デモンストレータが、レスポンスD=r×Qd mod nを計算し、このレスポンスをコントローラに伝送する;
4.検証手順:コントローラは、h[M,(D2/Gd)mod n]を計算し、結果が間違いなくタイトルTに等しいことを検証することを含む。
【0018】
最後に、Fiat−Shamirのエンティティの認証手順は、今度は、「署名者」と呼ばれるあるキーホルダーからコントローラに伝送されるメッセージMの署名手順を定義するように置換することができる。署名手順はどうかというと、対話式ではないことを注記しておく。署名者は、多数の秘密鍵Q1,Q2,…,Qmを保有しており、ここでは、mは1より大きく、RSA モジュールnだけでなく、i=1,…,mであり、Gi=Qi2 mod nである、それぞれの公開鍵G1,G2,…,Gmも公開している。この署名手順は、以下の手順(上記との類推によって、名称は同じとした):
1.証明文手順:署名者が、i=1,…,mであるm個の整数riを無作為に選択し、まず、証明文Ri=ri2 mod nを計算し、次に、hがmビットのワードを生成するハッシュ関数である、タイトルT=h(M,R1,R2,…,Rm)を計算し、最後に、タイトルTをコントローラに伝送する;
2.チャレンジ手順:署名者が、自ら、タイトルTのビットd1,d2,…,dmを特定する;
3.レスポンス手順:署名者が、「レスポンス」Di=ri×Qid1 mod nを計算し、これらのレスポンスをコントローラに伝送する;
4.検証手順:コントローラが、下記:
h[M,(D12/G1d1)mod n,(D22/G2d2)mod n,…,(Dm2/Gmdm)mod n]
を計算し、次に、結果が間違いなくタイトルTに等しいことを検証することを含む。
【0019】
ここで、Fiat−Shamir方法の安全性の問題をより間近に検証する。例えば、簡単に上述したエンティティの認証手順の場合には、詐称者(つまり、被詐称者のRSA モジュールn及び公開鍵Gを知っているが、秘密鍵Qについては知らないエンティティ)がコントローラを欺くことができるのだろうか。
【0020】
まず、チャレンジは、無作為だとはいえ、二つの値しかとることができないことを注記しておく。詐称者が認証手順の間にコントローラから投げかけられたチャレンジの値を正確に見抜いたとすると(成功率は50%)、Fiat−Shamir方法のすべての手順を、コントローラから「現場を押さえ」られずに、申し分なく履行することができるだろうか。この質問に対する回答は、「できる」である。実際、
−詐称者がチャレンジがd=0であることを見抜くと、詐称者は、証明文R=r2 mod nをコントローラに伝送し、レスポンスは、D=rとなる。
−詐称者がチャレンジがd=1であることを見抜くと、詐称者は、l>0の何らかの整数を選択し、証明文R=l2×G mod nをコントローラに伝送し、レスポンスは、D=l×G mod nとなる。
【0021】
Fiat−Shamir方法は、つまり、弱点があるが、この一連の手順を繰り返し、起こりうる詐称者によって一連のチャレンジが正しく予知される可能性を最小限にすると、上述したように弱点の影響を小さくすることができる。したがって、この認証手順の安全性を十分に高めるためには、その時間を著しく長くしなければならない。
【0022】
国際公開第00/45550号パンフレットは、この欠点を持たない(エンティティの認証手順、メッセージの認証手順及びメッセージの署名手順に適用できる)暗号方法を開示している。この方法によると、デモンストレータは、RSA モジュールnと公開鍵Gだけでなく、整数(「指数」と呼ばれる)ν=2kも公開し、ここでは、k(「安全パラメータ」と呼ばれる)は1より大きな整数となっている。さらに、
G=Qν mod n (1)
ただし、Qは、デモンストレータの秘密鍵である。
【0023】
国際公開第00/45550号パンフレットによる認証手順は、以下の手順:
1.証明文手順:デモンストレータが、整数rを無作為に選択し、「証明文」R=rν mod nを計算し、証明文をコントローラに伝送する;
2.チャレンジ手順:コントローラが、0≦d≦2k-1−1である、「チャレンジ」と呼ばれる整数dを無作為に選択し、このチャレンジをデモンストレータに伝送する;
3.レスポンス手順:デモンストレータが、「レスポンス」D=r×Qd mod nを計算し、このレスポンスをコントローラに伝送する;
4.検証手順:コントローラが、(Dν/Gd)mod nを計算し、結果が間違いなく証明文Rに等しいことを検証することを含む。
【0024】
この手順では、チャレンジが異なる2k-1個の値をとれることがわかる(Fiat−Shamir方法によると二つの値しかとれない)。したがって、詐称者がチャレンジを正しく予知する可能性は、kを大きく設定すればするほど小さくなり、これは上記の一連の手順を一度実行するだけで実現される。
【0025】
これを踏まえた上で、上述したように、この手順をs回繰り返す、且つ/又はm対の鍵を平行使用すると、安全性を強化することができる。したがって、「中国式に」計算する方が有利である。実際には、(攻撃者がコードを「破る」際、認証よりも署名においてより長い時間をかけることができることを考慮し)、積[(k−1)×m×s]について、認証においては40以上の値、署名においては80以上の値を採用することを推奨する。
【0026】
さらに、国際公開第00/45550号パンフレットによると、公開鍵は次の関係を検証することを必要とする。
G=g2 mod n (2)
ここでは、gは、1より大きな整数である(「基本数」と呼ばれる)。したがって、上記の(1)と(2)の方程式を組み合わせて、下記の方程式を満足するペア(g,Q)を見つけなければならないことがわかる。ここで、n及びνは所定である。
Qν=g2 mod n (3)
ところで、モジュールの素因数分解を知らない限り、つまり、キーホルダーでなければ、(適切な時間内に)この方程式(3)を解くのは不可能であることは明らかである。要するに、請願WO−00/45550にしたがう一対の鍵を、これに対応する公開パラメータに基づいて計算するのは、この数値nを素因数分解するのと同じぐらい複雑だということである。これら二つの作業は、複雑さの観点からは「等価」であり、このような等価性を備えた1セットの鍵が「等価性基準」を満足すると言える。
【0027】
ここにおける第1の利点は、これが一つの安全基準だということである(例えば、素因数分解の問題)。第2の利点は、国際公開第00/45550号パンフレットによるキーホルダーについては、自己の公開鍵を認証機関から認証される必要がないこと、つまり、その公開鍵とそのホルダーのアイデンティティとを結び付ける認証を認証機関から取得する必要がないことである。RSA モジュールnについてだけ認証を受ければ、その他のパラメータはホルダー自体によって直接公開されるので、それで十分なのである。一方、例えば、Fiat−Shamir方法では、様々なエンティティが、同一のRSAモジュールから対になった独自の鍵を構成することができる(Fiat−Shamirのペアは、つまり、上記に定義した等価性基準を満足しない)ので、したがって、個別の各公開鍵は、認証機関を通じて、そのホルダーのアイデンティティと関連付けられなければならない。
【特許文献1】国際公開第00/45550号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【0028】
ただし、ある種のモジュールn(RSAモジュールの約1/4を表す)についてしか、方程式(3)の解が存在しないことを実証することができる。これは、国際公開第00/45550号パンフレットにしたがってペアになった鍵を生成することを希望するエンティティにとっては、厄介なことである。このエンティティがすでに一群のRSAモジュールを備えている場合には、これらの鍵を構成するのに、一般的に、そのうちの一部しか使用することができず、まだRSAモジュールを備えていない場合には、すべて(又は、ほぼすべて)のRSAモジュールが本方法に適合しない限り、適切なモジュールを見付け出すのはさらに困難になる。
【課題を解決するための手段】
【0029】
本発明は、したがって、第1の態様によれば、
m≧1の秘密鍵Q1,Q2,…,Qm及び公開鍵G1,G2,…,Gmを保有するホルダーを使用し、一対になった各鍵(Qi、Gi)(ただし、i=1,…,m)が関係式Gi=Qiν mod n、又はGi×Qiν=1 mod nを検証する非対称鍵暗号方法に関し、nは、そのうちの少なくとも二つの数値が異なる素因数であり、ここでは、p1,...,pfと表記される、f個の秘密素因数(ただし、f>1)の積に等しい公開整数であり、また、指数νが2の累乗に等しい公開整数である。この方法は、次の点が画期的である。
ν=2b+k
ただし、kは厳密に正の整数で、b=max(b1,…,bf)であり、bj(ただし、j=1,…,f)は、
【数1】

が偶数となることを成立させる最大の整数であり、
各公開鍵Gi(ただし、i=1,…,m)については、次のような形式になる:
【数2】

ただし、「基本数」と呼ばれる数字giは、厳密に1より大きな整数であり、また、数字aiは整数であり、1≦ai≦bで、少なくともそのうちの一つが厳密に1より大きな整数である。
【0030】
本発明は、とりわけ、各公開鍵がGi=gi2 mod nではなく、
【数3】

の形式であり、ここでは、数aiの少なくとも一つは、厳密に1より大きな整数であるという点が、国際公開第00/45550号パンフレットとは異なることを注記しておく。
【0031】
後述する部分では、このような配列により、モジュールnについて選択する値を問わず、ごく稀な例外を除き(RSA方法を実行する際に、このような特殊なモジュールが選択されることは滅多にない)、本発明による鍵、つまり、簡単に上述した条件を満足するペアになった鍵(g,Q)が必ず存在することを証明する。要するに、どんなRSAモジュールでも、本発明による方法に適合するということである。
【0032】
本発明の特徴によると、上述した素因数p1,…,pfの少なくとも一つは、4を法として1に合同であり、整数ai(ただし、i=1,…,m)はすべて、上述した数字bに等しくなる。
【0033】
このような配列により、本発明による、セットになった鍵の構造は、著しく簡単になる。
【0034】
別の特徴によると、上述した基本数g1,…,gmの中には少なくとも一つの数字gsがあり、上述した素因数p1,…,pfの中には、2ではない二つの数字ptとpuがあり、上述した数字b1,…,bfを考慮すると、以下を検証する。
・bt=buの場合には、(gs|pt)=−(gs|pu)、及び、
・bt<buの場合には、(gs|pt)=−1
ただし、(gs|pt)と(gs|pu)は、ptとpuに対するgsのルジェンドル記号である(「Legendre記号」の定義は、後述部分で詳述する)。
【0035】
このような配列により、得られた鍵は、上記に定義した「等価性基準」を満足することを実証することができる。
【0036】
さらに別の特徴によると、本方法は、コントローラ及び、ここでは「デモンストレータ」と呼ばれる上述したキーホルダーを提示する。この方法は、以下の手順:
−デモンストレータが、整数rを無作為に選択し、「証明文」R=rν mod nを計算し、証明文をコントローラに伝送する手順、
−コントローラが、i=1,…,mである、m個の「チャレンジ」d1,d2,…,dmを無作為に選択し、これらのチャレンジをデモンストレータに伝送する手順、
−デモンストレータが、「レスポンス」:
D=r×Q1d1×Q2d2×…×Qmdm mod n
を計算し、
次に、このレスポンスをコントローラに伝送する手順、及び、
−コントローラが、下記:
Dν×G1ε1d1×G2ε2d2×…×Gmεmdm mod n
を計算し、ただし、i=1,…,m、Gi×Qiν=1 mod nの場合にはεi=+1、Gi=Qiν mod nの場合にはεi=−1であり、結果が間違いなく証明文Rに等しいことを検証する手順を含む点が注目に値する。
【0037】
この方法を実行するコントローラとデモンストレータが、証明文又はレスポンスの全体を交換する必要がないことを、重要点として特筆しておく。実際、相互に協定を取り交わすことにより、これらのデータの一部だけを交換するか、又はハッシュ関数を事前に決定することにより、これらのデータの全体又は一部のハッシュの結果を交換することができるのである。
【0038】
当然、「中国式」に計算を行えば、方法の実行を有利に高速化することができる。
【0039】
例えば、証明文Rの計算については、デモンストレータは、次のように実行することができる。p1<p2である、モジュールn=p1×p2について、Cはp1より小さな正数であり、p1は(p2×C−1)を割り切る(この数字Cは、「中国の剰余」として知られている)。デモンストレータは、無作為に二つの整数r1とr2、0<r1<p1及び0<r2<p2を選択し、二つの「証明文のコンポーネント」R1=r1ν mod p1及びR2=r2ν mod p2を計算する。証明文の値は、下記から導き出される。
R=z×p2+R2
ただし、z=C×(R1−R2
【0040】
デモンストレータは、レスポンスDの取得についても、Fiat−Shamir方法について上述した計算方法に類似した方法にしたがって、「中国式」に計算することができる。
【0041】
最後に、チャレンジを、i=1,…,mである、0≦di≦2k−1を検証するチャレンジに限定できることを特筆しておく(これには、デモンストレータについても、コントローラについても、計算を簡略化できる利点がある)。実際、2kではない、diの二つの値については、対応するQidiの値は、素因数giによって、いずれか一方の値から導き出されることが簡単に検証できる。公開鍵Giの公開には、基本的に、基本数giの開示が必要となるので、0≦di≦2k−1の間に位置するチャレンジの値でも、この範囲を逸脱するチャレンジの値と同じ安全レベルを確保できることがわかる。
【0042】
さらに別の特徴によると、上記の方法にしたがえば、コントローラは、自己が受信したメッセージMが、ここでも「デモンストレータ」と呼ばれる上述したキーホルダーから間違いなく送信されたことを検証することができるようになる。この方法は、以下の手順:
−デモンストレータが、整数rを無作為に選択し、まず、「証明文」R=rν mod nを計算し、次に、hがハッシュ関数である、「タイトル」T=h(M,R)を計算し、最後に、このタイトルTをコントローラに伝送する手順、
−コントローラが、i=1,…,mである、m個の「チャレンジ」d1,d2,…,dmを無作為に選択し、これらのチャレンジをデモンストレータに伝送する手順、
−デモンストレータが、「レスポンス」:
D=r×Q1d1×Q2d2×…×Qmdm mod n
を計算し、
次に、このレスポンスをコントローラに伝送する手順、及び、
−コントローラが、下記:
h(M,Dν×G1ε1d1×G2ε2d2×…×Gmεmdm mod n)
を計算し、ただし、i=1,…,m、Gi×Qiν=1 mod nの場合にはεi=+1、Gi=Qiν mod nの場合にはεi=−1であり、次に、結果が間違いなくタイトルTに等しいことを検証する手順を含む点が注目に値する。
【0043】
エンティティの認証方法におけるチャレンジの値に関する、上記の注目すべき事実は、言うまでもなく、このメッセージの認証方法にも適用される。
【0044】
また、このメッセージの認証方法は、メッセージの署名形式と見なされる場合があることについても、特筆しておく。
【0045】
さらに別の特徴によると、メッセージの別の署名方法を実行することができる。この実施形態にしたがうと、ここでは、「署名者」と呼ばれる上述したキーホルダーが、コントローラに伝送するメッセージMに実際に署名することができるようになり、この実施形態が以下の手順:
−署名者が、i=1,…,mである、m個の整数riを無作為に選択し、まず、証明文R=rν mod nを計算し、次に、hがmビットのワードを生成するハッシュ関数である、タイトルT=h(M,R1,R2,…,Rm)を計算し、最後に、このタイトルTをコントローラに伝送する手順、
−署名者が、自ら、タイトルTのビットd1,d2,…,dmを特定する手順、
−署名者が、「レスポンス」Di=ri×Qidi mod nを計算し、このレスポンスをコントローラに伝送する手順、及び、
−コントローラが、下記:
h(M,D1ν×G1ε1d1 mod n,D2ν×G2ε2d2 mod n,…,Dmν×Gmεmdm mod n)
を計算し、ただし、i=1,…,m、Gi×Qiν=1 mod nの場合にはεi=+1、Gi=Qiν mod nの場合にはεi=−1であり、次に、結果が間違いなくタイトルTに等しいことを検証する手段を含む点が注目に値する。
【0046】
第2の態様によれば、本発明は、様々な装置に関する。
【0047】
本発明は、第1に、プロセッサとメモリとを備えた電子回路に関する。この電子回路は、簡単に上述した暗号方法のいずれかを、上述したキーホルダーとして実行するようにプログラミングできる点が画期的である。
【0048】
本発明は、第2に、専用電子回路に関する。この電子回路は、この回路がデータを処理し、簡単に上述した暗号方法のいずれかを、上述したキーホルダーとして実行できるようにする複数の小型コンポーネントを備えている点が画期的である。とりわけ、集積回路がこれに相当する(英語では、「Application Specific Integrated Circuit(専用用途集積回路)」、即ち「ASIC」)。
【0049】
これらの二つの電子回路は、例えば、「電子チップ」の形態をとることができる。
【0050】
本発明は、第3に、端末に接続し、この端末とデータを交換するようになっているポータブル装置に関する。このポータブル装置は、簡単に上述した電子回路を備え、識別データ、及び、上述したキーホルダーに固有の秘密鍵を保存できる点が画期的である。
【0051】
このポータブル装置は、例えば、チップカード、又はUSBキーとすることができる。
【0052】
本発明は、第4に、ポータブル装置と接続し、このポータブル装置とデータを交換することができる端末に関する。この端末は、プログラミングされたデータ処理装置を備え、簡単に上述した暗号方法のいずれかを、上述したコントローラとして実行できる点が画期的である。
【0053】
本発明は、第5に、簡単に上述したポータブル装置及び端末を備えた暗号システムに関する。
【0054】
本発明は、第6に、情報プログラムコードの命令を備え、簡単に上述した暗号方法のいずれかの手順を、上述したキーホルダーとして実行する、取り外しのできないデータ保存手段に関する。
【0055】
本発明は、第7に、情報プログラムコードの命令を備え、簡単に上述した暗号方法のいずれかの手順を、上述したキーホルダーとして実行する、部分的に、又は全体的に取り外しのできるデータ保存手段に関する。
【0056】
本発明は、第8に、簡単に上述した保存手段「キーホルダー」を備えた、データ処理装置に関する。
【0057】
このデータ処理装置は、例えば、パーソナルコンピュータ、又はサーバーとすることができる。
【0058】
本発明は、第9に、情報プログラムコードの命令を備え、簡単に上述した暗号方法のいずれかの手順を、上述したコントローラとして実行する、取り外しのできないデータ保存手段に関する。
【0059】
本発明は、第10に、情報プログラムコードの命令を備え、簡単に上述した暗号方法のいずれかの手順を、上述したコントローラとして実行する、部分的に、又は全体的に取り外しのできるデータ保存手段に関する。
【0060】
本発明は、第11に、簡単に上述した保存手段「コントローラ」を備えた、データ処理装置に関する。
【0061】
このデータ処理装置は、例えば、パーソナルコンピュータ、又はサーバーとすることができる。
【0062】
本発明は、第12に、簡単に上述したデータ処理装置「キーホルダー」及びデータ処理装置「コントローラ」を備えた暗号システムに関する。
【0063】
これらの装置の提供する利点は、基本的に、簡単に上述した、該当する方法が提供する利点と同等である。
【0064】
本発明は、さらに、プログラマブル・データ処理装置に指令を出すと、当該データ処理装置が簡単に上述した暗号方法のいずれかを実行するようになる命令を備えた、コンピュータプログラムに適用される。
【0065】
このコンピュータプログラムの提供する利点は、基本的に、簡単に上述した暗号方法が提供する利点と同等である。
【0066】
本発明の別の態様及び利点は、下記に詳述する部分を読むことによって明らかとなる。
【0067】
少なくともそのうちの二つの数値が異なり、p1,…,pfと表記される、f個の巨大な素因数(ただし、f>1)の一般的には積である、nと表記されるモジュールについて考察する。
n=p1×…×pf ただし、p1≦…≦pf及びp1<pf
【0068】
j=1,…,fである各因数pjには、次のように定義された厳密に正の数bjを結び付けることができる。(pj−1)は2bjで割り切ることができるが、
【数4】

では割り切れない(要するに、bjは、
【数5】

が偶数となることを成立させる最大の整数である)。
j=3 mod 4の場合にはbj=1であり、pj=1 mod 4の場合にはbj>1であることは、簡単に検証できる。
【0069】
あるエンティティがキーホルダーになることを希望する場合には、RSA モジュールnをそのエンティティに与えるように認証機関に申請することができる。エンティティは、次に、m≧1の秘密鍵Q1,Q2,…,Qmを設定し、当該モジュールn、「指数」ν及び公開鍵G1,G2,…,Gmを公開する。
【0070】
本発明によると、これらの様々な数量は、次の条件にしたがう。
−指数は、次を成立させる形式となる。
ν=2b+k
ただし、b=max(b1,…,bf)及びk≧1
−各公開鍵Gi(ただし、i=1,…,m)は、次を成立させる形式となる。
【数6】

ただし、(「基本数」と呼ばれる)数字giは、厳密に1より大きな整数であり、また、数字aiは整数であり、1≦ai≦bで、少なくともそのうちの一つは厳密に1より大きな整数である。
−ペアになった各鍵(Qi,Gi)(ただし、i=1,…,m)は、下記を検証する。
・関係式Gi=Qiν mod n(1i)、又は、
・関係式Gi×Qiν=1 mod n (1´i)
【0071】
これらの条件を満たす鍵のペアが存在するためには、それぞれの素因数pjに対する各鍵Giの階数(rank)が、奇数である必要があることが証明できる。このことから、法p(ただし、pは素数)に関する整数体に属するnullでない要素xの「pに対する階級λ」は、厳密に正の最小正数λであり、これはxλ=1 mod p(xの連続する累乗は法pとされる)を成立させることができる。
【0072】
モジュールnの各素因数に対するGiの階数を奇数にする条件は、いかなる素因数pjも、(pj−1)が2の累乗に等しくなることを成立させないことを前提とする。しかし、この条件を検証する素数(例えば、3、5、17又は257)は稀であり、モジュールの素因数について巨大な数字を選択する場合には、尚更のこと、極めて稀になる。
【0073】
この公開鍵の特性は、下記の規則にしたがって整数giとaiを選択すると、確保することができる。
i≧h(gi)mod pj ただし、j=1,…,f
ここでは、法p(ただし、pは素数)に関する整数体に属するnullでない全ての整数xについて、pに対するxの階数を割り切る2の最大累乗として、h(x)mod pと表記される、「pに対するxの高さ」を定義する。
【発明を実施するための最良の形態】
【0074】
下記に、非限定の例として、一つの特定の実施形態を紹介する。
【0075】
この実施形態によると、モジュールnの素因数pjを、そのうちの少なくとも一つが4を法として1に合同であるように選択する(その他の因数は、4を法として1又は3に合同でもよい)。その結果、関係する数字bjから、上述した特性が得られる。
b>1
さらに、
【数7】

とする。
【0076】
一方、(上述したように、Qiν=gi2 mod nを検証する)請願WO−00/45550で定義された鍵については、モジュールのすべての素因数が4を法として3に合同でない限り存在しないことを特筆しておく。
【0077】
方程式(4)によって定義された公開鍵Giは、モジュールの各素因数に対して奇数の階数を有することを実証することができる。
【0078】
要するに、上述した基本数g1,…,gmについては、少なくとも一つの数字gs、上述した素因数p1,…,pfについては、2ではない二つの数字ptとpuが存在することが必要であり、以下を検証する。
・bt=buの場合には、(gs|pt)=−(gs|pu) (5a) 及び、
・bt<buの場合には、(gs|pt)=−1 (5b)
ただし、数字btとbu(上述した定義を参照)は、ptとpuに対して決定され、(gs|pt)と(gs|pu)は、対応するgsのルジェンドル記号である。
【0079】
この点については、法p(ただし、pは2ではない素数である)に関する整数体に属するNullでない要素xの「pに対するルジェンドル記号」は、ここでは(x|p)と表記され、 x(p-1)/2 mod pに等しいことを繰り返しておく。
xがpの倍数の場合には(x|p)=0、
xが数体の別の要素の法pの自乗に等しい場合には(x|p)=+1、そうでなければ(x|p)=−1となることは、簡単に実証できる。
【0080】
方程式(5a−5b)の実施形態は、本発明の実施例の一つであり、ここでは、鍵は「等価性基準」を満足しており、したがって、モジュールの素因数を知らない限り、公開パラメータn、ν及びG1,G2,…,Gmに基づいて秘密鍵Q1,Q2,…,Qmを(適正な時間内に)計算することは不可能である。
【0081】
ただし、モジュールの素因数分解を知っていれば、次のようにして秘密鍵を取得することができる。Aは数字(pj−1)/2b(ただし、j=1,…,f)の最小公倍数であり、また、uは、Aの倍数である(u×ν+1)を成立させる正の最小整数である。各秘密鍵は、下記を検証する。
方程式(1i)(つまり、Gi=Qiν mod n)を選択した場合には、Qi×Giu=1 mod n、又は、
方程式(1´i)(つまり、Gi×Qiν=1 mod n)を選択した場合には、Qi=Giu mod n
さらに、「中国式」計算で、秘密鍵Q1,Q2,…,Qmを計算することもできる。
【0082】
最後に、基本数に関して注目すべき点を記述する。
【0083】
本発明による方法の実行中に行なった計算は、基本数が小さければ小さいほど速くなることが確認された。したがって、できるだけ小さな基本数を選択することを推奨する。
【0084】
例えば、最初の54個の素数から基本数を選択することができる(54番目の素数は251である)。
【0085】
代案として、体系的に、最初のm個の素数を基本数としてもよい。つまり、g1=2、g2=3、g3=5、g4=7、g5=11といった具合である。このアプローチは、簡潔であるという利点があるが、等価性基準を満足する、セットになった鍵を取得できるかについては保証の限りではない。ただし、等価性基準を満足しないセットの比率は、1/2mより小さいことを証明することができる。例えば、m=16(g16=53に対応)の場合には、この比率は、1/65536未満となる。

【特許請求の範囲】
【請求項1】
m≧1の秘密鍵Q1,Q2,…,Qm及び公開鍵G1,G2,…,Gmを保有するホルダーを使用し、一対になった各鍵(Qi、Gi)(ただし、i=1,…,m)が関係式Gi=Qiν mod n、又はGi×Qiν=1 mod nを検証し、nは、そのうちの少なくとも二つの数値が異なる素因数であり、ここではp1,...,pfと表記される、f個の秘密素因数(ただし、f>1)の積に等しい公開整数であり、また、指数νが2の累乗に等しい公開整数である、非対称鍵暗号方法であって、
ν=2b+k
ただし、kは厳密に正の整数で、b=max(b1,…,bf)であり、bj(ただし、j=1,…,f)は、
【数1】

が偶数となることを成立させる最大の整数であり、
各公開鍵Gi(ただし、i=1,…,m)については、次のような形式になる:
【数2】

ただし、「基本数」と呼ばれる数字giは、厳密に1より大きな整数であり、また、数字aiは整数であり、1≦ai≦bで、少なくともそのうちの一つが厳密に1より大きな整数であることを特徴とする非対称鍵暗号方法。
【請求項2】
前記素因数p1,…,pfの少なくとも一つが4を法として1に合同であり、前記整数ai(ただし、i=1,…,m)がすべて前記数字bに等しいことを特徴とする、請求項1に記載の方法。
【請求項3】
前記基本数g1,…,gmの中には少なくとも一つの数字gsがあり、前記素因数p1,…,pfの中には、2ではない二つの数字ptとpuがあり、前記数字b1,…,bfを考慮すると、以下を検証する。
・bt=buの場合には、(gs|pt)=−(gs|pu)、及び、
・bt<buの場合には、(gs|pt)=−1
ただし、(gs|pt)と(gs|pu)が、ptとpuに対するgsのルジェンドル記号であることを特徴とする、請求項1又は2に記載の方法。
【請求項4】
前記基本数g1,…,gmが素数であることを特徴とする、請求項1〜3のいずれか一つに記載の方法。
【請求項5】
コントローラ及び「デモンストレータ」と呼ばれる前記キーホルダーを提示し、以下の手順:
−前記デモンストレータが、整数rを無作為に選択し、「証明文」R=rν mod nを計算し、前記証明文を前記コントローラに伝送する手順、
−前記コントローラが、i=1,…,mである、m個の「チャレンジ」d1,d2,…,dmを無作為に選択し、前記チャレンジを前記デモンストレータに伝送する手順、
−前記デモンストレータが、「レスポンス」:
D=r×Q1d1×Q2d2×…×Qmdm mod n
を計算し、
次に、前記レスポンスを前記コントローラに伝送する手順、及び、
−前記コントローラが、下記:
Dν×G1ε1d1×G2ε2d2×…×Gmεmdm mod n
を計算し、ただし、i=1,…,m、Gi×Qiν=1 mod nの場合にはεi=+1、Gi=Qiν mod nの場合にはεi=−1であり、結果が間違いなく前記証明文Rに等しいことを検証する手順を含むことを特徴とする、請求項1〜4のいずれか一つに記載の方法。
【請求項6】
コントローラが、自己が受信したメッセージMが、ここで「デモンストレータ」と呼ばれる前記キーホルダーから間違いなく送信されたことを検証することができるようにする、以下の手順:
−前記デモンストレータが、整数rを無作為に選択し、まず、「証明文」R=rν mod nを計算し、次に、hがハッシュ関数である、「タイトル」T=h(M,R)を計算し、最後に、前記タイトルTを前記コントローラに伝送する手順、
−前記コントローラが、i=1,…,mである、m個の「チャレンジ」d1,d2,…,dmを無作為に選択し、前記チャレンジを前記デモンストレータに伝送する手順、
−前記デモンストレータが、「レスポンス」:
D=r×Q1d1×Q2d2×…×Qmdm mod n
を計算し、
次に、前記レスポンスを前記コントローラに伝送する手順、及び、
−前記コントローラが、下記:
h(M,Dν×G1ε1d1×G2ε2d2×…×Gmεmdm mod n)
を計算し、ただし、i=1,…,m、Gi×Qiν=1 mod nの場合にはεi=+1、Gi=Qiν mod nの場合にはε1=−1であり、結果が間違いなく前記タイトルTに等しいことを検証する手順を含むことを特徴とする、請求項1〜4のいずれか一つに記載の方法。
【請求項7】
前記チャレンジがi=1,…,mである、0≦di≦2k−1を検証することを特徴とする、請求項5又は6に記載の方法。
【請求項8】
ここでは「署名者」と呼ばれる、前記キーホルダーが、コントローラに伝送するメッセージMに署名することができるようにする、以下の手順:
−前記署名者が、i=1,…,mであるm個の整数riを無作為に選択し、まず、証明文R=rν mod nを計算し、次に、hがm ビットのワードを生成するハッシュ関数である、タイトルT=h(M,R1,R2,…,Rm)を計算し、最後に、前記タイトルTを前記コントローラに伝送する手順、
−前記署名者が、自ら、前記タイトルTの前記ビットd1,d2,…,dmを特定する手順、
−前記署名者が、「レスポンス」Di=ri×Qidi mod nを計算し、前記レスポンスを前記コントローラに伝送する手順、及び、
−前記コントローラが、下記:
h(M,D1ν×G1ε1d1 mod n,D2ν×G2ε2d2 mod n,…,Dmν×Gmεmdm mod n)
を計算し、ただし、i=1,…,m、Gi×Qiν=1 mod nの場合にはεi=+1、Gi=Qiν mod nの場合にはεi=−1であり、結果が間違いなく前記タイトルTに等しいことを検証する手順を含むことを特徴とする、請求項1〜4のいずれか一つに記載の方法。
【請求項9】
プロセッサとメモリとを備えた電子回路であって、請求項1〜8のいずれか一つに記載の方法を、前記キーホルダーとして実行するようにプログラミングできることを特徴とする電子回路。
【請求項10】
データを処理し、請求項1〜8のいずれか一つに記載の方法を、前記キーホルダーとして実行できるようにする小型コンポーネントを備えることを特徴とする、専用電子回路。
【請求項11】
端末に接続し、前記端末とデータを交換するようになっているポータブル装置であって、請求項9又は10に記載の電子回路を備え、識別データ、及び、前記キーホルダーに固有の秘密鍵を保存できることを特徴とするポータブル装置。
【請求項12】
ポータブル装置と接続し、前記ポータブル装置とデータを交換することができる端末であって、請求項1〜8のいずれか一つに記載の方法を、前記コントローラとして実行できるようにするプログラミングされたデータ処理装置を備えることを特徴とする端末。
【請求項13】
請求項11に記載のポータブル装置及び請求項12に記載の端末を備えた暗号システム。
【請求項14】
情報プログラムコードの命令を備え、請求項1〜8のいずれか一つに記載の方法の手順を、前記キーホルダーとして実行する、取り外しのできないデータ保存手段。
【請求項15】
情報プログラムコードの命令を備え、請求項1〜8のいずれか一つに記載の方法の手順を、前記キーホルダーとして実行する、部分的に、又は全体的に取り外しのできるデータ保存手段。
【請求項16】
請求項14又は15に記載のデータ保存手段を備えたデータ処理装置。
【請求項17】
情報プログラムコードの命令を備え、請求項1〜8のいずれか一つに記載の方法の手順を、前記コントローラとして実行する、取り外しのできないデータ保存メカニズム。
【請求項18】
情報プログラムコードの命令を備え、請求項1〜8のいずれか一つに記載の方法の手順を、前記コントローラとして実行する、部分的に、又は全体的に取り外しのできるデータ保存手段。
【請求項19】
請求項17又は18に記載のデータ保存手段を備えていることを特徴とするデータ処理装置。
【請求項20】
請求項16に記載のデータ処理装置及び請求項19に記載のデータ処理装置を備えた暗号システム。
【請求項21】
プログラマブル・データ処理装置に指令を出すと、前記データ処理装置が請求項1〜8のいずれか一つに記載の方法を実行するようになる命令を備えたコンピュータプログラム。

【公表番号】特表2007−519044(P2007−519044A)
【公表日】平成19年7月12日(2007.7.12)
【国際特許分類】
【出願番号】特願2006−550241(P2006−550241)
【出願日】平成17年1月24日(2005.1.24)
【国際出願番号】PCT/FR2005/000158
【国際公開番号】WO2005/081452
【国際公開日】平成17年9月1日(2005.9.1)
【出願人】(591034154)フランス テレコム (290)
【出願人】(506250147)
【氏名又は名称原語表記】MATH RIZK SPRL
【Fターム(参考)】