JP4765108B2 - 公開鍵暗号化方法のための電子鍵を生成するための方法およびこの方法を使用するセキュア・ポータブル・オブジェクト - Google Patents

公開鍵暗号化方法のための電子鍵を生成するための方法およびこの方法を使用するセキュア・ポータブル・オブジェクト Download PDF

Info

Publication number
JP4765108B2
JP4765108B2 JP2004514946A JP2004514946A JP4765108B2 JP 4765108 B2 JP4765108 B2 JP 4765108B2 JP 2004514946 A JP2004514946 A JP 2004514946A JP 2004514946 A JP2004514946 A JP 2004514946A JP 4765108 B2 JP4765108 B2 JP 4765108B2
Authority
JP
Japan
Prior art keywords
prime
pair
value
length
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004514946A
Other languages
English (en)
Other versions
JP2005530212A (ja
JP2005530212A5 (ja
Inventor
フェイ ナタリー
ジョイエ マルク
Original Assignee
ジェムアルト エスアー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ジェムアルト エスアー filed Critical ジェムアルト エスアー
Publication of JP2005530212A publication Critical patent/JP2005530212A/ja
Publication of JP2005530212A5 publication Critical patent/JP2005530212A5/ja
Application granted granted Critical
Publication of JP4765108B2 publication Critical patent/JP4765108B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Calculators And Similar Devices (AREA)

Description

本発明は、公開鍵暗号化方法のための電子鍵を生成するための方法およびこの方法を使用するセキュア・ポータブル・オブジェクトに関する。
本発明は、特に、RSAタイプの暗号化システムのための鍵の生成、およびセキュリティを必要とする用途でこれらの鍵を使用するためのセキュアオブジェクトへの格納に関する。
本発明は、特に、チップ・カードの場合のような電気的にプログラム可能なメモリ、または強力な計算リソースのような大きなメモリ・リソースを有さないセキュアオブジェクトに適用される。
本発明の1つの用途は、携帯電話を使用する電子商取引である。この場合、鍵は電話機のSIMカード上に記憶することができる。
あるアプリケーション・プログラムは、例えば、電子商取引コンテキストで秘密データを転送するためにこのような鍵を使用する。以下の説明においては、これらのアプリケーションは、サービス・プロバイダが提供するものと見なされる。
さらに、鍵の統合性を保証するために、証明機関が提供する証明書が、通常、これらの鍵に関連していることは周知である。
これらの公開鍵暗号化方法の中から、下記の記述は、RSA(Rivest Shamir and Adleman)暗号化プロトコルについて説明する。このプロトコルは、長い計算時間と大容量のメモリ空間を必要とする大きな素数を生成するステップを使用する。
このRSA暗号化プロトコルを使用すれば、情報の暗号化および/または2つのエンティティ間の認証および/またはメッセージの電子署名を行うことができることを思い起こされたい。
RSA暗号化プロトコルは、最も頻繁に使用される。何故なら、このプロトコルは、暗号化および署名の生成の両方に使用することができる性質を有しているからである。
そのため、RSA暗号化システムは、暗号化または署名確認機能を行うための「公開」アルゴリズムと、解読または署名生成機能を行う「秘密」アルゴリズムを備える。
このセキュリティは、大きな2つの秘密の素数pおよびqの積である大きな公開整数Nの因数分解が難しいことをベースとしている。このペア(p,q)は、解読機能または署名計算機能が使用する秘密鍵dを計算する際に使用される。
以下に説明する問題をもっとよく理解してもらうために、RSA暗号化スキームで使用するパラメータについて簡単に説明する。
1)公開指数e:
この公開指数は、あるアプリケーションに特有なものであり、このアプリケーションにより提供される。それ故、この公開指数は、この同じアプリケーションのすべてのユーザに共通のものである。
2)パラメータpおよびq:
これらのパラメータは、長い時間がかかる計算により生成される。これらのパラメータは、通常、同じ長さ(同じサイズ)を有する。この長さは従来512ビットである。セキュリティを高めるために、この長さを512ビットから2048ビットに延長することができる。2048ビットは、将来使用するためのものである。
3)Nは公開モジュラスであり、下記の関係から計算される。
N=p*q
このアルゴリズムの要点は、公開モジュラスNの長さが∝である場合、その長さ∝にあると言われる。この長さはアプリケーション(またはサービス・プロバイダ)により設定される。
4)パラメータeおよびNは公開鍵を形成する。
5)秘密鍵dは、下記の関係から計算される。
d=1/e[mod(p−1)(q−1)];(1/e=e−1
すなわち、ed=1[(mod ppcm(p−1,q−1)];ppcmは、最小公倍数である。
秘密パラメータは、3つの数(d,p,q)により形成される。
6)秘密鍵の「通常」の形は、
(d,N)
である。
6)秘密鍵のCRT(中国人剰余定理)の形は、
この場合、秘密鍵は下記の5つのパラメータを含む。
p,q
(d=d mod(p−1)の場合)
(d=d mod(q−1)の場合)
(I=q−1 modpの場合)
それ故、RSAスキームによる鍵の生成の原理は、理解できると思うが、アプリケーションが設定する公開指数e(または公開鍵)からの秘密鍵dの生成である。パラメータp,qは、p*q=Nになるように生成される。Nの長さ∝は一定である。
多数のアプリケーションが供給される場合、各サービス・プロバイダは、対応する秘密鍵dを生成することができるように、その公開指数eおよび公開モジュラスNの長さを提供する。
それ故、RSA鍵計算を行うためには、公開指数eおよびアルゴリズムの鍵の長さ∝、すなわちモジュラスNの長さを知らなければならない。データeおよび∝を入力しても、qが下記の条件を満足するように素数のペアpおよびqを生成しなければならない。
(i)p−1およびq−1はeを含む素数であること。
(ii)N=p*qは、長さ∝の整数であること。
これらの制約があるために計算に長い時間がかかる。
この点に関して、チップ・カードのようなポータブル・オブジェクトのための鍵の生成および記憶は、現在は下記の2つの方法で行われることを思い起こされたい。
第1の方法によれば、RSA鍵の計算は、かなりの計算力を利用するために、サーバ上で行われる。セキュリティを高めるために、その個人化の段階でセキュアオブジェクト内の鍵によりダウンロードされる証明書が必要になる。
この方法は2つの欠点がある。
・一方では、個人化のセキュア・コンテキストのレベルは比較的高いが、サーバからセキュアオブジェクトに鍵を転送するために、鍵が盗まれたりまたはコピーされたりする恐れがある。
・他方では、各鍵は、最初の個人化の段階でオブジェクト内にロードされるが、その場合、将来の要件を予測することができるように、各オブジェクト内に最大数の鍵を提供しなければならない。
実際には、ポータブル・オブジェクト内には、これらの鍵を実際に後で使用するかどうか分からない状態で、使用するかも知れない各アプリケーションに対応する複数の組の鍵および証明書が記憶される。大容量のメモリ空間が必要もないのに使用される。例えば、1024ビットのモジュラスを有するRSA鍵の場合には0.3キロバイトが必要であるが、一方、現在のカードは、せいぜい32キロバイトのプログラム可能なメモリしか有していない。さらに、多数の証明書が証明機関から購入されるが、これは高いものにつく。
最後に軽んじられない欠点は、現在の時点でおよび新しいアプリケーションが予測される場合でも、新しい鍵を追加できないことである。
第2の方法によれば、計算をセキュアオブジェクト内で行うことができる。そのため、上記方法の第1の欠点を克服することができるが、計算能力が低いセキュアオブジェクト内での処理量が増大する。
RSA鍵の生成が、チップ・カードのようなポータブル・オブジェクトにより行われた場合には、RSA鍵の必要な長さが2048ビットである場合、強力なアルゴリズムを使用しても計算に30秒かかる。
所与のアプリケーションに対してRSA鍵を1回だけ生成すればよいので、ある種のアプリケーションの場合には、この計算時間は許容することができるが、携帯電話サービス(例えば、GSM)の場合には満足できるものではない。何故なら、SIMカードを変更する度にこの動作を行わなければならないし、異なるアプリケーションの要件を満足するために、もっと多数の鍵を提供しなければならないからである。
かなりの計算リソースを必要とするために、種々のサービス・プロバイダから提供される公開指数eから個人化の段階で常に複数の鍵が生成される。この計算ステップは続けて実行することはできない。何故なら、オブジェクトが動作できなくなるからである。
実際には、この計算はカードにより行われない。何故なら、この計算は長い時間がかかり、個人化段階の速度が遅くなる恐れがあり、またこの個人化の時間の長さがさまざまであり、チップ・カードの個人化方法と両立しないことが分かっているからである。
さらに、この方法は、上記方法の第2の欠点を依然として有している。すなわちメモリ空間を必要とする。
本発明の目的は、これらの問題を解決することである。
もっと正確に説明すると、本発明の目的は、鍵の生成の管理に関連する計算の複雑さの問題、および個人化段階での多数の鍵および証明書の最初のおよび決定的な記憶による柔軟性の欠如の問題を解決することである。
そのため、本発明の1つの目的は、下記の2つの別々の計算ステップを含むことを主として特徴とする電子デバイスを使用する公開鍵暗号化方法のための電子鍵dを生成するための方法に関する。
ステップA
1)素数のペア(p,q)または素数のペアを表す値を計算するステップ。この計算は、eが公開指数であり、lが暗号化方法の鍵の長さであり、また、lが上記方法のモジュラスNの長さでもあるペア(e,l)の知識とは独立して行われる。
2)このようにして得られたペアまたは値を記憶するステップ。
ステップB
ステップAの結果およびペア(e,l)の知識から鍵dを計算するステップ。
第1の例の場合には、ステップA−1)は、公開指数eまたは鍵の長さlを知らないで、小さな素数の積であるパラメータΠを使用して、素数のペア(p,q)を計算するステップである。この方法の場合、ステップAにより得られたペア(p,q)は、将来のペア(e,l)に対応することができる最大の確率を有し、ステップBを実行した場合、鍵dを計算することができるようにする。
上記例に依存するもう1つの例の場合には、計算ステップA−1)は、また、が組{3,17,...,216+1}の一部を形成する高い確率を有し、この使用のために、ペア(p,q)ではなく、ペア(p,q)の像と呼ばれる表示値を計算することができるようにするシードσのステップAの計算の際に作成されるという事実も考慮に入れる。
次に、記憶ステップA−2)は、この像を記憶するステップである。そうすることにより、メモリ空間の入手が可能になる。何故なら、例えば、128バイトに対する32バイトのように、像は素数pまたはqより小さいからである。
第3の例の場合には、ペア(p,q)の計算は、異なる可能性のあるペア(e,l)に対して行われる。実際には、パラメータΠは、例えば、3、17のようなeの通常の値を含む。
第4の例の場合には、ステップA−1)は、計算したペア(p,q)を圧縮する動作を含み、ステップA−2)は、このようにして得られた圧縮した値を記憶するステップである。
ステップBは、所与のペア(e,∝)に対する下記の条件を確認するステップを含む。
(i)(p−1)・(q−1)とeとは互いに素である整数であること。
(ii)N=p*qは、長さ∝の整数であること。
ある好ましい実施形態によれば、ステップA−1)は、素数qの生成、および例えば、B=256ビットのように∝≧Bになるように、生成対象の素数の長さ∝に対する下限Bの選択を含み、また、下記のサブステップを含む。
1)下記の関係からパラメータvおよびwを計算し、これらのパラメータを記憶するサブステップ。
Figure 0004765108
ここで、Πが記憶され、最も小さい素数fの積に対応する。fはΠ≦2Boになるように選択される。
2)整数{v,...,w−1}の範囲内のある数jを選択し、∝=jΠを計算するサブステップ。
3)整数{0,...,Π−1}の範囲内のRSA鍵の長さより短い素数kを選択し、記憶するサブステップ。(k,Π)は相互に素の関係にある。
4)q=k+∝を計算するサブステップ。
5)qが素数であるかどうかを確認するサブステップ。qが素数でない場合には下記のことを行う。
a)下記の関係を使用してkに対する新しい値の選択。
k=ak(mod Π);は整数モジュロΠの乗法グループZ*πに属する。
b)サブステップ4)からのこの方法の反復。
都合のよいことに、ステップBは、ステップAで入手したペア(p,q)および所与のペア(e,l)に対して下記のことを行う。
・下記の条件の確認:
(i)(p−1)・(q−1)とeとは互いに素である整数であること。
(ii)N=p*qは、長さ∝の整数であること。
・ペア(p,q)がこれらの条件を満足しない場合には:
・他のペアを選択、および適切なペアを発見するまでこの確認の反復。
・この確認の終わりのところで入手したペア(p,q)からの鍵dの計算。
本発明は、また、少なくとも下記のものを備えることを特徴とするRSAタイプの暗号化アルゴリズムの電子鍵dを生成することができるセキュア・ポータブル・オブジェクトに関する。
・少なくとも1つのペア(e,l)を受信するための通信手段。
・eが公開指数であり、lが暗号化方法の鍵の長さであり、また、lが上記方法のモジュラスNの長さであるペア(e,l)の知識とは独立して行われる素数のペア(p,q)または素数のペアを表す値を計算するステップからなるステップAの結果を記憶するためのメモリ。
・ステップAの結果およびペア(e,l)の知識から鍵dを計算するステップからなるステップBを実施するためのプログラム。
セキュア・ポータブル・オブジェクトは、また、ステップAを実施するためのプログラムを含む。ステップAおよびBは時間の点で独立している。
セキュア・ポータブル・オブジェクトは、チップ・カードであってもよい。
本発明の方法を実行するためのシステムの構成を示す1枚の図面を参照しながら、本発明を制限するものではない下記の説明を読めば、本発明の他の特徴および利点をはっきりと理解することができるだろう。
説明の残りの部分は、チップ・カード・タイプのポータブル・オブジェクトに、本発明を適用する方法を説明している。説明を簡単にするために、以後ポータブル・オブジェクトをチップ・カードと呼ぶ。
本発明の方法によれば、鍵の生成は2つの別々のステップにより行われる。
第1のステップAは、素数のペア(p,q)または像と呼ぶ素数のペアを表す値の計算を含む。
入手したペア(p,q)は記憶される。
この計算は複雑であるが、従来の素数生成アルゴリズムを使用した場合にはさらに複雑になる。
本明細書においては、この計算をペア(e,l)の知識から独立して実行するように提案する。
以下に詳細に説明するように、このステップを実行するための1つの好ましい実施形態を使用すれば、計算を簡単にすることができ、これらペアの画像を記憶することにより、入手したペア(p,q)を記憶するために必要なメモリ空間が少なくてすむ。
第2のステップBは、ステップAの結果およびペア(e,l)の知識から、鍵dに固有な計算を含む。
この計算は、ステップAで入手したペア(p,q)および所与のペア(e,l)に対する下記のことを含む。
・下記の条件の確認:
(i)(p−1)・(q−1)と、eとは互いに素である整数であること。
(ii)N=p*qは、長さ∝の整数であること。
・ペア(p,q)がこれらの条件を満足しない場合には、他のペアが選択され、ステップAで入手したペアの中から適切なペアが発見されるまで、上記確認が反復して行われる。
・次に、この確認の終わりのところで入手したペア(p,q)から鍵dの計算に進むことができる。
第2のステップと比較した場合比較的複雑な計算に対応する第1のステップは、チップ・カード以外の素子、例えば、サーバにより実行することができる。この場合、この第1のステップの計算結果は、個人化中にチップ・カード上にロードすることができる。
ステップAの計算は、また、任意の所与の瞬間にカード自身により行うことができ、この計算を行ってもこのカードのユーザに迷惑はかからない。例えば、この計算は、カードの個人化中に行うこともできるし、その後で行うこともできる。
実際には、カードの使用中に、サービスを受けるために、秘密鍵が必要な場合には、秘密鍵を生成するために、(まだカードに記憶していない場合には、おそらく遠隔地から)サービス・プロバイダにより公開鍵が供給される。この生成ステップ(計算ステップB)は、カードにより迅速に実行される。
それ故、秘密鍵dの計算を必要とする新しいアプリケーションをカードに対して提供することができることを理解することができるだろう。
また、証明書をペア(p,q)に関連づける必要がないことも理解することができるだろう。何故なら、ペアは秘密鍵と関連していないからである。
それ故、秘密鍵の生成は、ボード上ですなわちカード自身により、いままでの鍵生成方法と比較した場合、1/10の実行時間で実行することができる。
以下の説明においては、ステップAを実行するための1つの好ましい実施形態について説明する。この実施形態は、チップ・カード上で使用すると特に有利である。何故なら、この実施形態を使用すれば、メモリ空間および計算時間の両方を最適化することができるからである。
最初に、N=p*qが確実に∝ビットの整数になるように、pが下記範囲内から選択される。
Figure 0004765108
また、qが下記範囲内から選択される。
Figure 0004765108
は、1と∝との間の値である。
それ故、min(p)min(q)は、2∝0−1とNの間にあり、max(p)max(q)は、必要に応じてNと2の間にある。
このようにして、上記条件ii)は、範囲内の素数を探索するだけになる。
Figure 0004765108
本発明の方法は、パラメータΠを使用する。このパラメータΠは、例えば3、17、216+1のような小さな素数の積である。上記素数は、通常、公開指数として使用される。それ故、ペア(p,q)が、すでに非常に大きい所与の将来のペア(e,l)に対応する確率は、Πがこのような値を含んでいる場合にはさらに高くなる。
最も小さい素数fが選択される。fはΠ≦2Bになるように選択される。Bは、∝に対して選択した下限である。例えば、Bは、256ビットに等しくなるように選択することができる。
Πは、積2.3.....191に等しく2256より小さい。
次に、この値Πは、例えば、プログラム読み出し専用メモリ内に定数としてカードに記憶することができる。
この方法の第1の段階は、整数{0,...,Π−1}の範囲内のRSA鍵の長さより短い長さの素数kの生成および記憶である。(k,Π)は、相互に素の関係にある。すなわち、共通因数を有さない。
次に、第2の段階は、この数kからの、Πを有する相互に素の関係にあるという条件を満足する第1の候補qの生成である。
この第1の候補がこの条件を満足しない場合には、この第1の候補は更新される。すなわち条件を満足するqの値が発見されるまで、他の候補の選択が行われる。
ここで、本発明によるRSA鍵の計算の際に使用する素数の生成のためのアルゴリズムの種々のステップについて説明する。
本発明のアルゴリズムは、生成対象の素数qに与えられた長さloが何であれ使用することができる。
素数pの生成は同じである。展開するステップでqをpで置き換え、loをl−loで置き換えるだけでよい。
制限Bを設定した後で、下記の条件を満足する一意の素数vおよびwの計算が行われる。
Figure 0004765108
このことは、下記の関係によりvおよびwを計算することを意味する。
Figure 0004765108
次に、整数モジュロΠの乗法グループ Πに属するkを選択した後で、
q=k+jΠ(範囲[v,w−1]に属する任意のjに対して)になるように第1の候補qが生成される。
kは Πと一致するから、素数の第1の候補qを得る確率は高い。そうでない場合には、kをak(mod Π)に等しくすることによりkが更新される。はグループ Πに属し、この方法は、素数に対応するqの値が発見されるまで反復して行われる。
ある数が素数であるかどうかを試験する1つの方法は、例えば、ラビン−ミラーテスト(Rabin−Miller test)を使用する方法である。
本発明のアルゴリズムの種々のステップについて以下に詳細に説明する。
1)下記の関係からのパラメータvおよびwの計算と、これらのパラメータの記憶。
Figure 0004765108
ここで、Πは記憶され、最も小さい素数fの積に対応する。fはΠ≦2Boになるように選択される。
2)整数{v,...,w−1}の範囲内のある数jの選択および∝=jΠの計算。
3)整数{0,...,Π−1}の範囲内のRSA鍵の長さより短い素数kの選択および記憶。(k,Π)は相互に素の関係にある。
4)q=k+∝の計算。
5)qが素数であるかどうかの確認。qが素数でない場合には、下記のことが行われる。
a)下記の関係を使用したkに対する新しい値の選択。
k=ak(mod Π);は整数モジュロΠの乗法グループ Πに属する。
b)ステップ4)からの上記方法の反復。
6)qを発見するために使用するためのa、k’jの記録と、その後でのRSA鍵を生成するための以降の計算の際のqの使用。
qの値を記憶する代わりに、本発明の方法は下記のように有利に進む。
このアルゴリズムを実行するための簡単な方法は、予測したRSA鍵の各長さに対して、qを再生成するためにkおよびjの値を記憶することである。
ステップ2)に示す乱数jを選択する代わりに、他の実施形態は短い乱数からjを生成することができる。
例えば、シードと呼ばれる64ビットの長さを有するある数が選択され、σで示される。次に、このシードは、jの生成を可能にする疑似乱数発生器PRNGの入力値として選択される。
次に、jがPRNG(σ)(mod(w−v)+v)として定義される。
この実施形態を使用すれば、メモリ空間の要件をかなり軽減することができる。何故なら、σおよびkの値だけをEEPROMメモリに記憶するだけでよいからである。Πの値は、(計算プログラム内の)読み出し専用メモリに記憶されている。
(o)がグループ Πに属するkの第1の値である場合には、生成した素数は、下記の形を有するということを認識することにより、メモリ空間の要件をさらに軽減することができる。
q=af−1(o)mod Π+jΠ
fは、ステップ4)での試験の失敗の回数である。
グループ Πに属するこの値k(o)は、例えば、σのような短いランダム・シードから、λ(Π)と呼ばれるΠのカーマイケル関数を使用して容易に計算することができる。
この関数を使用することにより、下記の関係からk(o)を表すことができる。
(o)=[PRNG(σ)+bPRNG3(σ)(PRNG(σ)λ(Π)−1)](modΠ)
bは、 Πに属する位数λ(Π)の要素である。
これら2つの実施形態を使用すれば、メモリ空間の要件を軽減することができる。何故なら、この場合、シードσの値および所望の鍵の長さに対するfの種々の値を記憶するだけでよいからである。
2048ビットより大きいモジュラスを有するRSA鍵の場合には、本発明者が行った数値による実験によりfが2に等しいことが分かった。このことは、fが1バイト、すなわち8オクテット上でコード化することができることを意味する。
例を挙げて説明すると、32ビットの粒度を有する512乃至2048ビットの範囲内の長さのRSA鍵を生成するには、49の可能な鍵の長さがある。それ故、カード上にσの値に対応する1ビット、すなわち8オクテットを記憶する必要がある。また、素数pおよびqに対するfの値、すなわち、2*49=98オクテットを記憶する必要がある。それ故、EEPROMメモリ内の全数は106バイト、すなわち848ビットになる。
メモリ空間を軽減することができる最後の実施形態は、計算プログラム、すなわち、プログラム・メモリ内に、種々の予測した鍵の長さに対する多数のΠの値およびλ(Π)の対応する値を記憶する。Πの値が大きいと、fに対する最小の値になることに気が付くことができるだろう。
すでに説明したように、今説明したばかりのアルゴリズムにより、ステップ4)により生成した素数qは下記の条件を満足する。
q=af−1(o)modΠ+j*Π
eでΠを割った場合、qを下式で表すことができる。
q=af−1(o)mod(e)
説明の冒頭で説明した条件(i)を満足するために、はa=1(mod e)になるように選択しなければならないし、kは1(mod e)と強制的に異なるようにしなければならない。
このように入手した素数qは、1(mod e)とは異なる式q=k(o)を満足する。
素数pの生成は、展開され、loがl−loで置き換えられるステップでqがpにより置き換えられる点を除けば同じである。
すでに説明したように、カードの方法を実施するプログラムは、公開指数eを予め知る必要はない。それ故、この指数はカードにロードしたアプリケーションにより任意の瞬間に供給することができる。
しかし、大部分(95%以上)のアプリケーションの場合、使用するeの値は値{3,17,216+1}であることが分かっている。
最大の数のアプリケーションをカバーするために、好適には、a=1mod({3,17,216+1})になるように選択することが好ましく、k(o)は、この値、すなわち、1mod({3,17,216+1})と異なるものでなければならない。
例えば、素数R=264−232+1は、ΠおよびRの最大公約数が1に等しいという条件付きで、aの可能な候補として選択される。
(o)に対する必要な条件は、中国人剰余定理(Chinese Remainder Theorem)により入手することができる。
すでに説明したように、別の方法は、ステップA−1)の時点で、種々の可能なペア(e,l)に対する素数(p,q)のペアを計算する。
終わりに、本発明は、2つの別々のステップからなる方法を提案する。この場合、周知の方法と比較すると非常に迅速な第2のステップは、リアルタイムで実行することができる。この方法は、また、比較的小さな容量のメモリ空間を使用するだけですむ。
さらに、カードの個人化の時点で供給されない新しいアプリケーションの点で制限がない。
本発明の方法を実行するためのシステムの構成を示す図面である。

Claims (15)

  1. 電子デバイスを使用し、RSAタイプの暗号化アルゴリズムの秘密鍵dを生成する秘密アルゴリズムを実行させるプログラムであって、
    前記電子デバイスを、モジュラスNを構成する複数組の素数のペア(p,q)と、eを公開鍵とし、lを鍵の長さであり、かつ、前記モジュラスNの長さとしたときの値のペア(e,l)とを生成するステップ(A−1)と、
    生成された前記複数組の素数のペア(p,q)と前記値のペア(e,l)とを前記電子デバイス内のメモリに記憶するステップ(A−2)と、
    前記メモリに記憶された前記複数組の素数のペア(p,q)から、前記値のペア(e,l)のlに適合するものを選択するステップ(A−3)と、
    前記選択された素数のペア(p,q)と前記値のペア(e,l)とを用いて前記秘密鍵dを生成するステップ(B)とを実行させるよう機能させることを特徴とするプログラム。
  2. 前記ステップ(A−1)における前記素数のペア(p,q)の生成は、前記素数のペア(p,q)よりも小さな素数の積であるパラメータΠを使用して、前記値のペア(e,l)の生成とは独立して行なわれることを特徴とする、請求項1に記載のプログラム。
  3. 前記ステップ(A−1)において、
    前記素数のペア(p,q)の生成に代えて前記素数のペア(p,q)の写像を表わす表示値を生成し、前記表示値の算出に用いるシードσの計算の際には、前記公開鍵eとして素数の組{3,17,216+1}の中から選ばれた素数を使用することを特徴とする、請求項2に記載のプログラム。
  4. 前記ステップ(A−2)において、
    前記素数のペア(p,q)の記憶に代えて、前記表示値を記憶することを特徴とする、請求項3に記載のプログラム。
  5. 前記ステップ(A−1)において、
    異なる前記値のペア(e,l)に対して、それぞれ対応した前記素数のペア(p,q)を生成することを特徴とする、請求項1に記載のプログラム。
  6. 前記パラメータΠとして、前記公開鍵eの素数として通常使用される3,17のような素数の積を含むことを特徴とする、請求項2乃至5に記載のプログラム。
  7. 前記ステップ(A−1)において、
    生成した前記素数のペア(p,q)を圧縮するステップを含み、
    前記ステップ(A−2)において、
    圧縮された前記素数のペア(p,q)を記憶することを特徴とする、請求項1に記載のプログラム。
  8. 前記ステップ(A−1)が、
    ≧Bとなるように長さ∝の下限Bが設定された素数qを生成する下記の複数のサブステップ、
    1)下記の関係からパラメータvおよびwを計算し、これらのパラメータを記憶するサブステップと、
    Figure 0004765108
    ここで、Πが記憶され、Π≦2Boであり、
    2)整数{v,...,w−1}の範囲内のある数jを選択し、素数pの長さ∝を、∝=jΠとして計算するサブステップと、
    3)整数{0,...,Π−1}の範囲内にあり、Πとは相互に素の関係にある素数kを選択して記憶するサブステップと、
    4)q=k+∝を計算するサブステップと、
    5)算出されたqが素数であるかどうかを確認し、qが素数でない場合には、
    a)下記の関係を使用してkに対する新しい値を選択し、
    k=ak(mod Π);(aは整数モジュロΠの乗法グループZΠに属する)
    b)ついで、サブステップ4)から反復するサブステップ、
    を含むことを特徴とする、請求項1に記載のプログラム。
  9. 前記数jおよびkを、メモリ内に記憶している前記シードσから生成することを特徴とする、請求項8に記載のプログラム。
  10. qをpにより置き換え、∝を∝−∝により置き換えて、前記サブステップ1)乃至5)を実行することにより前記素数pを生成することを特徴とする、請求項8に記載のプログラム。
  11. 前記ステップ(B)が、ステップ(A−)で入手した前記素数のペア(p,q)に対して、
    ・下記の条件:
    (i)前記公開鍵eが(p−1)・(q−1)と互いに素である整数であり、
    (ii)N=p*qが長さ∝の整数であること
    を確認するステップと、
    ・前記素数のペア(p,q)がこれらの条件を満足しない場合には、他のペアを選択し、適切なペアを発見するまで前記確認を反復するステップと、
    ・確認されたペア(p,q)を用いて前記秘密鍵dを生成するステップと、
    を含むことを特徴とする、請求項1乃至10のいずれかに記載のプログラム。
  12. RSAタイプの暗号化アルゴリズムの秘密鍵dを生成可能なセキュア・ポータブル・オブジェクトであって、
    モジュラスNを構成する複数組の素数のペア(p,q)と、eを公開鍵とし、lを鍵の長さであり、かつ、前記モジュラスNの長さとしたときの値のペア(e,l)とを生成し、生成した前記素数のペア(p,q)と前記値のペア(e,l)とを受信するための通信手段と、
    受信した前記素数のペア(p,q)と前記値のペア(e,l)とを記憶するメモリと、
    前記メモリに記憶された前記複数組の素数のペア(p,q)から、前記値のペア(e,l)のlに適合するものを選択し、
    前記選択された素数のペア(p,q)と前記値のペア(e,l)とを用いて前記秘密鍵dを生成するプログラムを格納した手段と、
    を備えることを特徴とするセキュア・ポータブル・オブジェクト。
  13. 前記セキュア・ポータブル・オブジェクトが、前記素数のペア(p,q)と前記値のペア(e,l)とを生成するプログラムを備えていることを特徴とする、請求項12に記載のセキュア・ポータブル・オブジェクト。
  14. 前記プログラムが、
    ≧Bとなるように長さ∝の下限Bが設定された素数qを生成する下記の複数のサブステップ、
    1)下記の関係からパラメータvおよびwを計算し、これらのパラメータを記憶するサブステップと、
    Figure 0004765108
    ここで、Πが記憶され、Π≦2Boであり、
    2)整数{v,...,w−1}の範囲内のある数jを選択し、素数pの長さ∝を、∝=jΠとして計算するサブステップと、
    3)整数{0,...,Π−1}の範囲内にあり、Πとは相互に素の関係にある素数kを選択して記憶するサブステップと、
    4)q=k+∝を計算するサブステップと、
    5)算出されたqが素数であるかどうかを確認し、qが素数でない場合には、
    a)下記の関係を使用してkに対する新しい値を選択し、
    k=ak(mod Π);(aは整数モジュロΠの乗法グループZΠに属する)
    b)ついで、サブステップ4)から反復するサブステップ、
    を実行することを特徴とする、請求項13に記載のセキュア・ポータブル・オブジェクト。
  15. 前記セキュア・ポータブル・オブジェクトがチップ・カードからなることを特徴とする、請求項12乃至14のいずれかに記載のセキュア・ポータブル・オブジェクト。
JP2004514946A 2002-06-19 2003-06-18 公開鍵暗号化方法のための電子鍵を生成するための方法およびこの方法を使用するセキュア・ポータブル・オブジェクト Expired - Fee Related JP4765108B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0207688A FR2841411B1 (fr) 2002-06-19 2002-06-19 Procede de generation de cles electroniques pour procede de crytographie a cle publique et objet portatif securise mettant en oeuvre le procede
FR02/07688 2002-06-19
PCT/FR2003/001871 WO2004002058A2 (fr) 2002-06-19 2003-06-18 Procede de generation de cles electroniques pour procede de cryptographie a cle publique et objet portatif securise mettant en oeuvre le procede

Publications (3)

Publication Number Publication Date
JP2005530212A JP2005530212A (ja) 2005-10-06
JP2005530212A5 JP2005530212A5 (ja) 2006-05-11
JP4765108B2 true JP4765108B2 (ja) 2011-09-07

Family

ID=29719931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004514946A Expired - Fee Related JP4765108B2 (ja) 2002-06-19 2003-06-18 公開鍵暗号化方法のための電子鍵を生成するための方法およびこの方法を使用するセキュア・ポータブル・オブジェクト

Country Status (6)

Country Link
US (1) US20050226411A1 (ja)
EP (1) EP1523823A2 (ja)
JP (1) JP4765108B2 (ja)
AU (1) AU2003258815A1 (ja)
FR (1) FR2841411B1 (ja)
WO (1) WO2004002058A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213766B2 (en) 2003-11-17 2007-05-08 Dpd Patent Trust Ltd Multi-interface compact personal token apparatus and methods of use
US7597250B2 (en) 2003-11-17 2009-10-06 Dpd Patent Trust Ltd. RFID reader with multiple interfaces
US7762470B2 (en) 2003-11-17 2010-07-27 Dpd Patent Trust Ltd. RFID token with multiple interface controller
WO2008030184A1 (en) * 2006-07-04 2008-03-13 Khee Seng Chua Improved authentication system
US8472620B2 (en) 2007-06-15 2013-06-25 Sony Corporation Generation of device dependent RSA key
US8170216B2 (en) * 2008-06-18 2012-05-01 Apple Inc. Techniques for validating and sharing secrets
KR20130097985A (ko) * 2012-02-27 2013-09-04 삼성전자주식회사 양방향 커뮤니케이션을 위한 방법 및 장치
EP3562092A1 (en) * 2018-04-26 2019-10-30 Thales Dis Design Services Sas Method for generating on-board a cryptographic key using a physically unclonable function

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09261217A (ja) * 1996-03-27 1997-10-03 Nippon Telegr & Teleph Corp <Ntt> 通信装置及びその方法
JP2004505548A (ja) * 2000-07-28 2004-02-19 アトメル・コーポレーション 暗号化秘密鍵を記憶/回復する方法および装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4736423A (en) * 1985-04-30 1988-04-05 International Business Machines Corporation Technique for reducing RSA Crypto variable storage
GB9410337D0 (en) * 1994-05-24 1994-07-13 Cryptech Systems Inc Key transmission system
US5884270A (en) * 1996-09-06 1999-03-16 Walker Asset Management Limited Partnership Method and system for facilitating an employment search incorporating user-controlled anonymous communications
US5848159A (en) * 1996-12-09 1998-12-08 Tandem Computers, Incorporated Public key cryptographic apparatus and method
US6192474B1 (en) * 1998-07-31 2001-02-20 Lucent Technologies Inc. Method for establishing a key using over-the-air communication and password protocol and password protocol
JP3518672B2 (ja) * 1998-11-27 2004-04-12 村田機械株式会社 素数生成装置及び暗号システム
EP1145473B1 (fr) * 1999-01-27 2019-04-17 Callahan Cellular L.L.C. Procédé, système, dispositif destinés à prouver l'authenticité d'une entité et/ou l'integrité et/ou l'authenticité d'un message aux moyens de facteurs premiers particuliers
US6868160B1 (en) * 1999-11-08 2005-03-15 Bellsouth Intellectual Property Corporation System and method for providing secure sharing of electronic data
FR2807246B1 (fr) * 2000-03-28 2002-12-27 Gemplus Card Int Procede de generation de cles electroniques a partir de nombres entiers premiers entre eux et dispositif de mise en oeuvre du procede
FR2811442B1 (fr) * 2000-07-10 2002-09-13 Gemplus Card Int Procede de generation d'une cle electronique a partir d'un nombre premier compris dans un intervalle determine et dispositif de mise en oeuvre du procede
US7016494B2 (en) * 2001-03-26 2006-03-21 Hewlett-Packard Development Company, L.P. Multiple cryptographic key precompute and store
US7120248B2 (en) * 2001-03-26 2006-10-10 Hewlett-Packard Development Company, L.P. Multiple prime number generation using a parallel prime number search algorithm
TWI244610B (en) * 2001-04-17 2005-12-01 Matsushita Electric Ind Co Ltd Information security device, prime number generation device, and prime number generation method
JP4457651B2 (ja) * 2003-11-27 2010-04-28 日本電気株式会社 証明装置及び証明方法並びにプログラム
FR2879866B1 (fr) * 2004-12-22 2007-07-20 Sagem Procede et dispositif d'execution d'un calcul cryptographique
US20080123842A1 (en) * 2006-11-03 2008-05-29 Nokia Corporation Association of a cryptographic public key with data and verification thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09261217A (ja) * 1996-03-27 1997-10-03 Nippon Telegr & Teleph Corp <Ntt> 通信装置及びその方法
JP2004505548A (ja) * 2000-07-28 2004-02-19 アトメル・コーポレーション 暗号化秘密鍵を記憶/回復する方法および装置

Also Published As

Publication number Publication date
WO2004002058A3 (fr) 2004-04-15
FR2841411A1 (fr) 2003-12-26
US20050226411A1 (en) 2005-10-13
WO2004002058A2 (fr) 2003-12-31
FR2841411B1 (fr) 2004-10-29
JP2005530212A (ja) 2005-10-06
AU2003258815A1 (en) 2004-01-06
EP1523823A2 (fr) 2005-04-20

Similar Documents

Publication Publication Date Title
EP0963635B1 (en) Cyclotomic polynomial construction of discrete logarithm cryptosystems over finite fields
JP5328186B2 (ja) データ処理システム及びデータ処理方法
EP2526505B1 (en) Device and method for obtaining a cryptographic key
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
KR101594553B1 (ko) 암호화 키를 생성하는 방법, 이를 위한 네트워크 및 컴퓨터 프로그램
US7020776B2 (en) Cryptosystem based on a Jacobian of a curve
JP5648177B2 (ja) サイドチャネル攻撃に対する素数生成の保護
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
US6496929B2 (en) Generating RSA moduli including a predetermined portion
JP4809310B2 (ja) エンティティの真正性又はメッセージの完全性を証明するための方法、システム、デバイス
JP2002207429A (ja) 効率的な冪乗法および装置
JP4765108B2 (ja) 公開鍵暗号化方法のための電子鍵を生成するための方法およびこの方法を使用するセキュア・ポータブル・オブジェクト
JP2009005213A (ja) 一括検証装置、プログラム及び一括検証方法
US20050182606A1 (en) Method, apparatus and program for quantitative competition and recording medium having recorded thereon the program
EP3535653A1 (en) Method and system for deriving deterministic prime number
RU2471300C2 (ru) Способ и устройство генерации сжатого rsa модуля
JP3833175B2 (ja) 一定の区間内に含まれる素数から電子キーを生成する方法とその装置
US20160182236A1 (en) Efficient smooth encodings for modular exponentiation
JP2001507479A (ja) ランダム抽出を必要とする暗号システムのためのハッシュ関数に基づく疑似ランダム生成器
EP2417726A1 (en) Private key compression
CN110249334B (zh) 设备间高效安全通信的***和方法
JP4102090B2 (ja) 情報セキュリティ装置、素数生成装置及び素数生成方法
JP2006121215A (ja) 鍵交換方法、及び、鍵交換処理装置
CN115426188A (zh) 基于两方联合生成加密方案参数的加密方法及相关装置
AU2771500A (en) Cyclotomic polynominal construction of discrete logarithm cryptosystems over finite fields

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060317

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090901

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091111

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091118

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100104

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100112

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100201

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100301

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100722

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110316

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110414

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110517

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110524

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees