(57)【要約】  本発明は、少なくとも１つの素数から暗号鍵を生成するための方法であって、少なくとも１つのハードウェアプロセッサと、物理的複製困難関数（２０８）と、少なくとも１つのチャレンジ（Ｃｉ）および少なくとも１つの関連付けられるインクリメント数（Ｓｐｉ）を記憶するメモリ（２０４、２０５）とを備える暗号デバイス（１０１）であって、前記関連付けられるインクリメント数は、前記物理的複製困難関数を使用して前記チャレンジから取得されるシードから前記少なくとも１つの素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、暗号デバイス（１０１）によりランタイムにおいて実施される、以下のステップ：  −  前記メモリからチャレンジおよび少なくとも１つの関連付けられるインクリメント数を取得するステップ（ＲＳ１）、  −  前記物理的複製困難関数を前記取得されたチャレンジに適用することによりシードを生成するステップ（ＲＳ２）、  −  前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、前記取得された少なくとも１つのインクリメント数と同数のインクリメンテーションステップを実施することにより、前記生成されたシードから前記少なくとも１つの素数を生成するステップ（ＲＳ３）、  −  前記生成された素数から前記暗号鍵を生成するステップ（ＲＳ４）を含む、方法に関する。
2021521748.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの素数から暗号鍵を生成するための方法であって、
少なくとも１つのハードウェアプロセッサ（２０１）と、物理的複製困難関数（２０８）と、少なくとも１つのチャレンジ（Ｃｉ）および少なくとも１つの関連付けられるインクリメント数（Ｓｐｉ）を記憶するメモリ（２０４、２０５）とを備える暗号デバイス（１０１）であって、前記関連付けられるインクリメント数は、前記物理的複製困難関数を使用して前記チャレンジから取得されるシードから前記少なくとも１つの素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、暗号デバイス（１０１）によりランタイムにおいて実施される、以下のステップ、
前記メモリからチャレンジおよび少なくとも１つの関連付けられるインクリメント数を取得するステップ（ＲＳ１）、
前記物理的複製困難関数を前記取得されたチャレンジに適用することによりシードを生成するステップ（ＲＳ２）、
前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、前記取得された少なくとも１つのインクリメント数と同数のインクリメンテーションステップを実施することにより、前記生成されたシードから前記少なくとも１つの素数を生成するステップ（ＲＳ３）、
前記生成された素数から前記暗号鍵を生成するステップ（ＲＳ４）
を含む、方法。
【請求項２】
登録段階の間に前記暗号デバイス（１０１）により実施される、以下のステップ、
暗号デバイスの前記物理的複製困難関数をチャレンジ（Ｃｉ）に適用することによりシードを生成するステップ（ＥＳ１）、
暗号デバイスの前記メモリ内に、前記チャレンジ（Ｃｉ）、および、前記シードから前記素数を生成するために暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数として規定される、少なくとも１つの関連付けられるインクリメント数（Ｓｐｉ）を記憶するステップ（ＥＳ２）
を含む、請求項１に記載の方法。
【請求項３】
前記暗号デバイスにより実施される、前記暗号デバイスに接続されるサーバからの前記チャレンジの受信のステップ（ＥＳ０）と、前記サーバへの前記生成されたシードの送信のステップ（ＥＳ１１１）とをさらに含む、請求項２に記載の方法。
【請求項４】
登録段階の間に、前記サーバにより実施される、
暗号デバイスに前記チャレンジを送出するステップ（ＥＳ０）、
暗号デバイスから前記生成されたシードを受信するステップ（ＥＳ１１１）、
暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成するステップ（ＥＳ１１２）、
前記暗号デバイスに、メモリ内に記憶するために、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも１つのインクリメント数を送出するステップ（ＥＳ１１３）
を含む、請求項３に記載の方法。
【請求項５】
前記暗号デバイスにより実施される、
前記チャレンジを生成するステップ（ＥＳ０’）、
暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成し、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも１つの関連付けられるインクリメント数を生成するステップ
をさらに含む、請求項２に記載の方法。
【請求項６】
前記暗号素数生成アルゴリズムが、ＦＩＰＳ  １８６−４付録Ａ．１．１．２およびＡＮＳ  Ｘ９．３１、ｒＤＳＡの中の１つである、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記暗号鍵が、ＲＳＡ鍵またはＥＣＣ鍵の中の１つである、請求項１から６のいずれか一項に記載の方法。
【請求項８】
少なくとも１つのコンピュータのメモリ内へと直接的にロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で作動させられるとき、請求項１から７のいずれか一項に記載のステップを実施するためのソフトウェアコード命令を備える、コンピュータプログラム製品。
【請求項９】
少なくとも１つのハードウェアプロセッサ（２０１）を備える暗号デバイス（１０１）により実行されるとき、請求項１から７のいずれか一項に記載のステップを実施する実行可能コンピュータコードを記憶する、非一時的コンピュータ可読媒体。
【請求項１０】
請求項１から７のいずれか一項に記載のステップを実施するように構成される少なくとも１つのハードウェアプロセッサ（２０１）、
チャレンジおよび関連付けられるインクリメント数を記憶するための少なくとも１つのメモリ（２０３、２０４、２０５）
を備える、暗号デバイス（１０１）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号鍵生成方法およびデバイスの分野に関し、より詳しくは、物理的複製困難関数を使用するオンボード鍵生成に関する。
【背景技術】
【０００２】
暗号アルゴリズムは、一般に、暗号化により通信のプライバシーを確実にするために、認証のために、または、検証可能な署名を生成するために使用される。大部分の暗号アルゴリズムは、任意の暗号動作を実施するために暗号鍵を要する。そのような鍵は、暗号アルゴリズムの最初の使用の前に暗号デバイスのメモリ内に記憶されることになっており、後で、例えば元の鍵に欠陥があるとき、更新されなければならないことがある。
【０００３】
鍵生成プロセスは、たいていは、素数から新しい暗号鍵をつくり上げる。結果として、それは、たいていは、そのような素数を得るための、ミラーラビンテストなどの素数性テストを実施することを含む。
【０００４】
そのようなテストは、コストのかかる動作である、べき乗剰余を計算することを含む。ＳＩＭカード、銀行カード、または他のスマートカードなどの、いくつかの暗号デバイスは、低い処理能力を有するので、暗号鍵を更新することに関連付けられる算出コストを減少するための方法が探究されてきた。
【０００５】
第１の既存の解決策は、新しい素数および新しい鍵を計算することなく、暗号鍵を新しいものにより変化させることができるために、デバイス上に複数個の鍵を記憶することである。そのような解決策の第１の問題は、デバイス内に組み込まれる鍵の数は、その個人化（ｐｅｒｓｏｎａｌｉｚａｔｉｏｎ）ステップの後に拡張され得ないということである。別の問題は、デバイス内に複数個の鍵を記憶することは、不揮発性メモリ（ＮＶＭ）消費を増大し、デバイスから有効な鍵を得ようとする攻撃（ダンプ、プロービング…）のリスクを増大するということである。
【０００６】
第２の既存の解決策は、デバイス内にシードを記憶することであり、それらのシードから、素数は迅速に生成され得る。シードを使用することは、新しい素数を生成することのコストを低減するが、それは、先の解決策と同じ欠点を有する。
【０００７】
第３の既存の解決策は、必要とされるとき、認証局などの遠隔（ｄｉｓｔａｎｔ）サーバから鍵をダウンロードすることである。そのような解決策は、無視できる算出コストを有し、デバイス内に記憶されるいかなるデータも攻撃に対して露出させない。他方で、それは、暗号デバイスに加えて、いくらかの追加的なインフラストラクチャを維持することを要し、盗聴を回避するために、サーバへのセキュアなリンクを要する。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】ｈｔｔｐ：／／ｗｗｗ．ｘ９．ｏｒｇ
【発明の概要】
【発明が解決しようとする課題】
【０００９】
結果として、制限される算出コストおよびメモリフットプリントを伴う、ならびに、新しい鍵の、または、対応するシードの露出のより低いリスクを伴う、ランタイムにおいて暗号デバイス上で利用可能な新しい暗号鍵を作製することを可能にする方法に対する必要性が依然として存する。
【課題を解決するための手段】
【００１０】
この目的のために、および、第１の態様によれば、本発明は、それゆえに、少なくとも１つの素数から暗号鍵を生成するための方法であって、少なくとも１つのハードウェアプロセッサと、物理的複製困難関数と、少なくとも１つのチャレンジおよび少なくとも１つの関連付けられるインクリメント数を記憶するメモリとを備える暗号デバイスであって、前記関連付けられるインクリメント数は、前記物理的複製困難関数を使用して前記チャレンジから取得されるシードから前記少なくとも１つの素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、暗号デバイスによりランタイムにおいて実施される、以下のステップ：
−  前記メモリからチャレンジおよび少なくとも１つの関連付けられるインクリメント数を取得するステップ、
−  前記物理的複製困難関数を前記取得されたチャレンジに適用することによりシードを生成するステップ、
−  前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、前記取得された少なくとも１つのインクリメント数と同数のインクリメンテーションステップを実施することにより、前記生成されたシードから前記少なくとも１つの素数を生成するステップ、
−  前記生成された素数から前記暗号鍵を生成するステップ
を含む、方法に関する。
【００１１】
第１の態様による方法は、登録段階の間に前記暗号デバイスにより実施される、以下のステップ：
−  暗号デバイスの前記物理的複製困難関数をチャレンジに適用することによりシードを生成するステップ、
−  暗号デバイスの前記メモリ内に、前記チャレンジ、および、前記シードから前記素数を生成するために暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数として規定される、少なくとも１つの関連付けられるインクリメント数を記憶するステップ
をも含み得る。
【００１２】
そのような方法は、素数性テストを含めて、新しい暗号鍵が必要とされる前に、登録において計算の大部分を為すことを可能にする。ランタイムにおいて、暗号鍵は、低減されたコストで暗号により生成され得る。加えて、暗号デバイス内に記憶されるデータ（チャレンジおよび関連付けられるインクリメント数）は、極秘データではない。攻撃者は、それを使用して鍵を生成することはできず、なぜならば、彼は、正しいシードを生成するために必須である、暗号デバイスの物理的複製困難関数を再現することができないからである。
【００１３】
第１の実施形態によれば、第１の態様による方法は、前記暗号デバイスにより実施される、前記暗号デバイスに接続されるサーバからの前記チャレンジの受信のステップと、前記サーバへの前記生成されたシードの送信のステップとをさらに含み得る。
【００１４】
この第１の実施形態において、第１の態様による方法は、登録段階の間に、前記サーバにより実施される：
−  暗号デバイスに前記チャレンジを送出するステップ、
−  暗号デバイスから前記生成されたシードを受信するステップ、
−  暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成するステップ、
−  前記暗号デバイスに、メモリ内に記憶するために、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも１つのインクリメント数を送出するステップ
をさらに含み得る。
【００１５】
そのようにすることにより、登録段階において、算出の大部分はサーバにより実施され、そのことは、サーバのより大きい計算能力から利益を得ることを可能にする。
【００１６】
第２の実施形態によれば、第１の態様による方法は、前記暗号デバイスにより実施される：
−  前記チャレンジを生成するステップ、
−  暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成し、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも１つの関連付けられるインクリメント数を生成するステップ
をさらに含み得る。
【００１７】
そのような場合において、登録段階においてのすべての計算は、暗号デバイスにより実施され、そのことは、遠隔サーバとメッセージを交換することを回避し、セキュリティを改善する。
【００１８】
暗号素数生成アルゴリズムは、ＦＩＰＳ  １８６−４付録Ａ．１．１．２およびＡＮＳ  Ｘ９．３１、ｒＤＳＡの中の１つであり得る。
【００１９】
暗号鍵は、ＲＳＡ鍵またはＥＣＣ鍵の中の１つであり得る。
【００２０】
第２の態様によれば、本発明は、それゆえに、少なくとも１つのコンピュータのメモリ内へと直接的にロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で作動させられるとき、第１の態様による方法のステップを実施するためのソフトウェアコード命令を備える、コンピュータプログラム製品にも関する。
【００２１】
第３の態様によれば、本発明は、それゆえに、少なくとも１つのハードウェアプロセッサを有する処理システムを備える暗号デバイスにより実行されるとき、第１の態様による方法を実施する実行可能コンピュータコードを記憶する、非一時的コンピュータ可読媒体にも関する。
【００２２】
第４の態様によれば、本発明は、それゆえに：
−  第１の態様による方法を実施するように構成される少なくとも１つのハードウェアプロセッサ、
−  チャレンジおよび関連付けられるインクリメント数を記憶するための少なくとも１つのメモリ
を備える、暗号デバイスにも関する。
【００２３】
以下の説明、および、添付される図面は、所定の例示的な態様を詳細に論述し、実施形態の原理が用いられ得る様々な方法のうちのほんの少数のものを指し示す。他の利点、および、新規の特徴は、図面と併せて考察されるとき、以下の詳細に述べられる説明から明らかになることになり、開示される実施形態は、すべてのそのような態様、および、それらの均等を含むことを意図される。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態によるシステムの概略的例示の図である。
【図２】本発明の実施形態による暗号デバイスの概略的例示の図である。
【図３】本発明の実施形態による暗号デバイスの物理的複製困難関数の概略的例示の図である。
【図４ａ】本発明の登録段階の、実施形態を概略的に例示する図である。
【図４ｂ】本発明の登録段階の、実施形態を概略的に例示する図である。
【図５】本発明の実施形態によるランタイム段階を概略的に例示する図である。
【図６】素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムＡＮＳ  Ｘ９．３１である実装の例を概略的に例示する図である。
【図７】素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムＡＮＳ  Ｘ９．３１である実装の例を概略的に例示する図である。
【発明を実施するための形態】
【００２５】
下記で詳細に述べられる説明において、例示として、本発明が実践され得る特定の実施形態を示す、添付図面に対して参照が為される。これらの実施形態は、当業者が本発明を実践することを可能にするのに十分詳細に説明される。本発明の様々な実施形態は、異なっていても、必ずしも相互に排他的ではないということが理解されるべきである。例えば、１つの実施形態に関して本明細書において説明される、個別の特徴、構造、または特性は、本発明の趣旨および範囲から逸脱することなく、他の実施形態の中で実装され得る。加えて、各々の開示される実施形態の中の個々の要素の位置または配置は、本発明の趣旨および範囲から逸脱することなく修正され得るということが理解されるべきである。下記で詳細に述べられる説明は、それゆえに、制限的な意味で解されるべきではなく、本発明の範囲は、単に、適切に解釈される、添付される特許請求の範囲により、特許請求の範囲が権利を与えられる均等の最大限の範囲と共に定義される。
【００２６】
本発明は、暗号デバイス１０１が、要望に応じて、制限される算出コストで、１つ以上の暗号鍵、例えば、対称暗号化／復号化のための鍵、または、非対称暗号化アルゴリズムのための公開鍵−プライベート鍵ペアを生成するために必要とされる、少なくとも１つの素数を生成することを可能にする方法を提供することを目標とする。
【００２７】
ＦＩＰＳ  １８６−４付録Ａ．１．１．２、および、金融サービスに関する認定基準委員会（Ａｃｃｒｅｄｉｔｅｄ  Ｓｔａｎｄａｒｄｓ  Ｃｏｍｍｉｔｔｅｅ）、Ｘ９（ｈｔｔｐ：／／ｗｗｗ．ｘ９．ｏｒｇを参照されたい）により米国規格協会に対して開発された、ＡＮＳ  Ｘ９．３１（１９９８年に承認されたバージョン）、ｒＤＳＡ  金融サービス業界用の可逆公開鍵暗号を使用するデジタル署名（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅｓ  Ｕｓｉｎｇ  Ｒｅｖｅｒｓｉｂｌｅ  Ｐｕｂｌｉｃ  Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ｆｏｒ  ｔｈｅ  Ｆｉｎａｎｃｉａｌ  Ｓｅｒｖｉｃｅｓ  Ｉｎｄｕｓｔｒｙ）などの、シード値から素数を生成する、いくつかのよく知られているアルゴリズムが存在する。
【００２８】
そのようなアルゴリズムは、シードから計算される、ある値をインクリメントすることにより候補数を取得し、次いで、この候補数の素数性をテストすることを、素数性テストが肯定的であるまで繰り返し行うことにより、シード値から少なくとも１つの素数を生成する。そのような種類の算出は、非常に高価であり得る。
【００２９】
本発明の主な考え方は、そのような算出を、素数が実際に必要とされるランタイム段階の前に、登録段階の間に実施すること、および、暗号デバイス内に、所与のシードから少なくとも１つの素数を生成するために選定されたアルゴリズムを使用して実施されることになるインクリメンテーションステップの数を記憶することである。そのようにすることにより、暗号デバイスは、ランタイムにおいて、要される数のインクリメンテーションステップを再びただ実施することにより、シードから登録段階の間に取得される素数を再び生成することができる。暗号デバイスは、各々のインクリメンテーションステップの後に素数性テストを実施する必要性を有さないので、素数は、ランタイムにおいて、登録段階の間よりはるかに低い算出コストで生成され得る。暗号デバイスにより実施されることになる算出の量を、よりいっそう減少するために、登録段階において実施されることになる算出の大部分は、リモートサーバ１０２により実施され得る。
【００３０】
暗号鍵を生成するためにシードから少なくとも１つの素数を生成する、そのようなアルゴリズムを使用することの欠点は、シードにアクセスするいかなる攻撃者も、同じ素数および暗号鍵を生成することができ、次いで、それを、悪意をもって使用し得るということである。インクリメンテーションステップの数と共に、素数生成アルゴリズムにおいて使用されることになるシードは、それゆえに、いかなる不正アクセスからも保護されるべきである。攻撃者による記憶されるシードへのいかなるそのようなアクセスも防止するために、本発明の別の特徴は、暗号デバイスに、シードを、それが素数生成アルゴリズムへの入力として必要とされるとき、オンザフライでセキュアに生成させることにより、シード値を記憶することを回避することである。そのようなセキュアな生成は、物理的複製困難関数（ＰＵＦ）を使用してチャレンジを処理することにより実施され得る。
【００３１】
そのようなＰＵＦは、ハードウェア回路により実装される関数であり、その関数の結果は、このハードウェア回路の微細構造などの、その製造の間にランダムにセットされる物理的因子に依存する。その結果、そのようなＰＵＦは、一意的であり、予測不可能であり、再現され得ない。
【００３２】
本発明によれば、暗号デバイスは、それがＰＵＦを使用してシードを得ることができるチャレンジ、および、このシードから少なくとも１つの素数を生成するために選定されたアルゴリズムを使用して実施されることになるインクリメンテーションステップの数を記憶するのみである。新しい暗号鍵が必要とされるとき、暗号デバイスは、そのメモリ内に記憶されるチャレンジを読み出し、ＰＵＦをそのチャレンジに適用して、シードを得ることができる。暗号デバイスは、少なくとも１つの素数を生成するために；および、この素数から暗号鍵を生成するために、入力として、シードと、チャレンジとともに記憶されるインクリメンテーションステップの数とを使用して、事前定義された素数生成アルゴリズムを作動させ得る。
【００３３】
暗号鍵を生成するそのような方法は、暗号デバイス内にシードを記憶するよりはるかに安全であり；暗号デバイスのメモリの内容にアクセスする攻撃者は、チャレンジを使用することができないことになり、なぜならば、彼は、暗号デバイスのＰＵＦを再現し、このＰＵＦによってチャレンジを処理することから取得されることになるシードを再計算することができないからである。
【００３４】
図１は、暗号デバイス１０１、例えばスマートカードまたは移動電話を、リモートサーバ１０２に接続するネットワーク１０３の概略的例示である。暗号デバイス１０１は、ユーザにより動作させられ、データ暗号化または復号化などの暗号動作のために暗号デバイスにコマンドを送出するパーソナルコンピュータに接続され得る。代替的には、暗号デバイス１０１は、そのようなコンピュータ内に組み込まれ得る。
【００３５】
図２は、暗号デバイス１０１の概略的例示である。それは、ランダムアクセスメモリ（ＲＡＭ）２０３、読み出し専用メモリ（ＲＯＭ）２０４、および／または不揮発性メモリ（ＮＶＭ）２０５に、バス２０２を介して接続されるプロセッサ２０１を含み得る。暗号デバイス１０１のメモリ、ＲＯＭ、および／またはＮＶＭのサブパートは、次の段落において説明されるように、秘密鍵などの、または、新しい秘密鍵を生成するために必要とされる情報などの、極秘データを記憶し得る。
【００３６】
暗号デバイス１０１は、プロセッサに接続されるコネクタ２０６をさらに含み、そのコネクタ２０６により、暗号デバイス１０１はアンテナに接続され得る。そのようなアンテナは、暗号デバイス１０１を様々な形式のワイヤレスネットワーク、例えば、ワイドエリアネットワーク、ＷｉＦｉネットワーク、または移動電話ネットワークに接続するために使用され得る。代替的には、暗号デバイス１０１は、Ｅｔｈｅｒｎｅｔなどの有線ネットワーク接続を介してネットワークに接続し得る。
【００３７】
暗号デバイス１０１は、１つ以上の画面、ラウドスピーカ、マウス、触覚表面、キーボード、その他…などの、暗号デバイス１０１のユーザにインターフェイスを提供する入出力手段２０７をも含み得る。
【００３８】
暗号デバイス１０１は、ここでは上記で規定されたような物理的複製困難関数を実施するＰＵＦ回路３０１をも含む、図３上で例示される、強いＰＵＦモジュール２０８を含む。強いＰＵＦモジュールの出力においてエントロピーの最小レベルを確実にするために、その強いＰＵＦモジュールは、ＰＵＦ回路の出力に、ハッシュ関数などの、そのエントロピーを増大する関数を適用するエントロピーアキュムレータ回路３０２をも含む。エントロピーアキュムレータ回路３０２は、入力として、初期化ベクトル（ＩＶ）をも使用し得る。強いＰＵＦモジュールにより実施される全体の関数は、以下の段落において「強いＰＵＦ」と呼ばれる。
【００３９】
暗号デバイス１０１は、いかなる不正アクセスに対してもセキュアにされる耐タンパ性デバイスであり得る。
【００４０】
以下の段落は、図４ａおよび４ｂ上で描写されるように、少なくとも１つの素数を容易に生成するためにランタイムにおいて後で必要とされることになる要素を生成および記憶するために、登録段階の間に暗号デバイス１０１により実施されるステップを説明する。
【００４１】
第１の登録ステップＥＳ１の間に、暗号デバイスは、その強い物理的複製困難関数をチャレンジＣｉに適用することにより、シードを生成する。
【００４２】
第２の登録ステップＥＳ２の間に、暗号デバイスは、そのメモリ内に、前記チャレンジ、および、第１の登録ステップＥＳ１の間に生成されたシードから少なくとも１つの素数を生成するために暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数として規定される、少なくとも１つの関連付けられるインクリメント数Ｓｐｉを記憶する。チャレンジに関連付けられるインクリメント数の数は、素数を生成するために選定された対応するアルゴリズムに依存し得る。
【００４３】
図４ａ上で例示される、第１の実施形態において、この登録段階の間に暗号デバイスにより実施されることになる計算を最小化するために、サーバは、暗号デバイスにチャレンジを送信することを、および、このチャレンジから生成されたシードから少なくとも１つの素数を生成するために実施されることになるインクリメンテーションステップの数を決定することを担当する。
【００４４】
そのような場合において、登録段階は、予備的登録ステップＥＳ０を含み、そのステップの間に、サーバは、チャレンジを生成し、それを、サーバからチャレンジを受信する暗号デバイスに送出し得る。そのような場合において、登録段階は：
・暗号デバイスが、サーバに、サーバにより送出されたチャレンジから暗号デバイスが生成したシードを送出し、サーバが、暗号デバイスから、生成されたシードを受信する、登録ステップＥＳ１１１、
・サーバが、暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、シードから少なくとも１つの素数Ｙｐｉを生成する、登録ステップＥＳ１１２、
・サーバが、前記暗号デバイスに、そのメモリ内に記憶するために、素数を生成するために暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、少なくとも１つのインクリメント数Ｓｐｉを送出する、登録ステップＥＳ１１３
を含む、素数生成登録ステップＥＳ１１をも含む。
【００４５】
図４ｂ上で例示される、第２の実施形態において、登録の間に実施されるすべての計算が、暗号デバイス１０１それ自体により実施される。そのような場合において、登録段階は、代替的な予備的登録ステップＥＳ０’を含み、そのステップの間に、暗号デバイスは、チャレンジを生成し得る。そのような場合において、登録段階は、代替的な素数生成登録ステップＥＳ１１’を含み、そのステップの間に、暗号デバイスは：
・暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、暗号デバイスが第１の登録ステップＥＳ１の間に生成したシードから素数Ｙｐｉを生成し、
・素数を生成するために暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、少なくとも１つの関連付けられるインクリメント数Ｓｐｉを生成する。
【００４６】
そのようにすることにより、両方の実施形態において、登録段階の終了において、暗号デバイスは、チャレンジからシードを生成し、次いで、暗号素数アルゴリズムにおいて、関連付けられるインクリメント数と同数のインクリメンテーションステップを実施することにより、シードから少なくとも１つの素数を生成することができるように、そのメモリ内に、チャレンジおよび少なくとも１つの関連付けられるインクリメント数を記憶する。
【００４７】
以下の段落は、図５上で描写されるように、少なくとも１つの素数から暗号鍵を生成するために、登録段階の後にランタイムにおいて暗号デバイス１０１により実施される、本発明の第１の態様による方法のステップを説明する。
【００４８】
ここでは上記で説明されたように、暗号デバイスのメモリ２０４、２０５は、少なくとも１つのチャレンジ、および、暗号デバイスのＰＵＦモジュールにより実施される強いＰＵＦを使用して前記チャレンジから取得されるシードから前記素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、少なくとも１つの関連付けられるインクリメント数を記憶する。
【００４９】
第１のランタイムステップＲＳ１の間に、暗号デバイスは、そのメモリから、チャレンジＣｉおよび関連付けられる少なくとも１つのインクリメント数Ｓｐｉを取得する。
【００５０】
第２のランタイムステップＲＳ２の間に、暗号デバイスは、その強い物理的複製困難関数を、第１のランタイムステップＲＳ１の間に取得されたチャレンジに適用することにより素数生成シードを生成する。
【００５１】
第３のランタイムステップＲＳ３の間に、暗号デバイスは、前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、取得された少なくとも１つのインクリメント数Ｓｐｉと同数のインクリメンテーションステップを実施することにより、生成されたシードから少なくとも１つの素数を生成する。
【００５２】
第４のランタイムステップＲＳ４の間に、暗号デバイスは、生成された素数から暗号鍵を生成する。生成される暗号鍵は、例えば、ＲＳＡ鍵、ＤＳＡ鍵、ディフィー−ヘルマン鍵、ＥＣＤＳＡ鍵、ＥＣＤ鍵、もしくはＥＣＣ鍵、または、因数分解問題の、もしくは離散対数問題の実際的な困難さに基づく公開鍵アルゴリズムにより使用される任意の暗号鍵の中の１つであり得る。
【００５３】
以下の段落において、ＡＮＳ  Ｘ９．３１およびＦＩＰＳ  １８６−４付録Ａ．１．１．２素数生成アルゴリズムに基づく実装の２つの例が与えられる。これらは、実装の非制限的な例であり、本発明による方法は、様々な他の素数生成アルゴリズムに基づいて実装され得る。
【００５４】
素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムＡＮＳ  Ｘ９．３１である、実装の第１の例が与えられる。
【００５５】
その場合において登録段階の間に実施される動作が、サーバが、素数を生成するために実施されることになるインクリメンテーションステップの数を決定する、第１の実施形態に対応して、図６上で示される。
【００５６】
予備的登録ステップＥＳ０／ＥＳ０’の間に、チャレンジＣｉが、暗号デバイスにより生成され、さもなければ、サーバにより生成され、暗号デバイスに送信される。暗号デバイスは、生成されることになる鍵のサイズである、および、サーバにより送信され得る、鍵サイズｐと、整数であるインクリメントペースｂと、公開パラメータｅ、例えばＲＳＡ公開鍵とをも知る。
【００５７】
第１の登録ステップＥＳ１の間に、暗号デバイスは、チャレンジＣｉからシードを生成する。Ｘ９．３１アルゴリズムの場合において、シードは、３つの部分Ｘｐｉ、Ｘｐｉ１、およびＸｐｉ２から成る：
（Ｘｐｉ，Ｘｐｉ１，Ｘｐｉ２）  ＝  Ｓｔｒｏｎｇ＿ＰＵＦ（Ｃｉ，ｐ）
【００５８】
素数生成登録ステップＥＳ１１／ＥＳ１１’の間に、暗号デバイスまたはサーバは、Ｘ’９．３１と記される、ここでは下で説明されるようなＸ９．３１アルゴリズムを使用してシードから素数Ｙｐｉを生成し、ここで、ＰｒｉｍｅＱは素数性テストである：
１．Ｆｏｒ  ｊ  ＝  １  ｔｏ  ２  ｄｏ
（ａ）ｐｊ  ＜−  Ｘｐｉｊをセットする
（ｂ）Ｉｆ  ｐｊが偶数である  ｔｈｅｎ  ｐｊ  ＜−  ｐｊ  ＋  １をセットする
（ｃ）Ｗｈｉｌｅ（ＰｒｉｍｅＱ（ｐｊ）  ＝  ｆａｌｓｅ）  ｄｏ
ｐｊ  ＜−  ｐｊ  ＋  ｂ
Ｓｐｉｊ  ＜−  Ｓｐｉｊ  ＋  １；
２．Ｒ  ＜−  （ｐ２−１  ｍｏｄ  ｐ１）ｐ２  −  （ｐ１−１  ｍｏｄ  ｐ２）ｐ１を計算する
３．Ｙｐｉ  ＜−  Ｘｐｉ  ＋  （（Ｒ  −  Ｘｐｉ）  ｍｏｄ  ｐ１ｐ２）をセットする  ＝＞  Ｓｐｉ１２  ＝  （Ｒ  −  Ｘｐｉ）  ｍｏｄ  ｐ１ｐ２を保存する
４．Ｉｆ  （ｇｃｄ（Ｙｐｉ  −  １；ｅ）  ≠  １）  ｏｒ  （ＰｒｉｍｅＱ（Ｙｐｉ）  ＝  ｆａｌｓｅ）  ｔｈｅｎ
（ａ）Ｙｐｉ  ＜−  Ｙｐｉ  ＋  ｐ１ｐ２をセットする
（ｂ）ステップ４に進み、  Ｓｐｉ  ＜−  Ｓｐｉ  ＋  １；
５．Ｙｐｉを出力する
【００５９】
そのようなアルゴリズムを使用して、素数Ｙｐｉが、ｐ１値をＳｐｉ１回、ｐ２値をＳｐｉ２回、および、Ｙｐｉ値をＳｐｉ回インクリメントした後に取得される。
【００６０】
素数生成登録ステップＥＳ１１／ＥＳ１１’の終了において、値Ｓｐｉ１、Ｓｐｉ２、Ｓｐｉ、およびＳｐｉ１２は、チャレンジＣｉに関連付けられるインクリメント数であり、Ｘ９．３１暗号素数生成アルゴリズムの出力として暗号デバイスにより生成され、さもなければ、サーバにより暗号デバイスに送出される。
【００６１】
最終的には、第２の登録ステップＥＳ２の間に、チャレンジＣｉならびに関連付けられるインクリメント数Ｓｐｉ１、Ｓｐｉ２、Ｓｐｉ、およびＳｐｉ１２は、暗号デバイスにより記憶される。
【００６２】
次いで、ランタイムにおいて、図７上で例示されるように、第１のランタイムステップＲＳ１の間に、暗号デバイスは、そのメモリから、これらの値Ｃｉ、Ｓｐｉ１、Ｓｐｉ２、Ｓｐｉ、およびＳｐｉ１２を読み出す。
【００６３】
第２のランタイムステップＲＳ２の間に、暗号デバイスは、その強い物理的複製困難関数をチャレンジＣｉに適用することにより素数生成シード（Ｘｐｉ、Ｘｐｉ１、Ｘｐｉ２）を再び生成する。
（Ｘｐｉ，Ｘｐｉ１，Ｘｐｉ２）  ＝  Ｓｔｒｏｎｇ＿ＰＵＦ（Ｃｉ，ｐ）
【００６４】
第３のランタイムステップＲＳ３の間に、暗号デバイスは、単純化されたＸ９．３１バリアント（ｖａｒｉａｎｔ）と呼ばれる、以下の計算：
１．ａ／  ｐ１  ＜−  Ｘｐｉ１  ＋  Ｓｐｉ１．ｂを計算する
ｂ／  ｐ２  ＜−  Ｘｐｉ２  ＋  Ｓｐｉ２．ｂを計算する
２．ａ／  Ｉｐ２  ＜−  ｐ１−１  ｍｏｄ  ｐ２を計算する
ｂ／  Ｒｔ  ＜−  ｐ２．２Ｉｐ２  ＋  ｐ１．ｐ２  −  １を計算する
ｃ／  Ｔ  ＜−  Ｘｐｉ  ｍｏｄ  ｐ１．ｐ２を計算する
ｄ／  Ｕ  ＜−  Ｒｔ  −  Ｔを計算する
ｅ／  Ｕ  ＜−  Ｕ  −  Ｓｐｉ１２．ｐ１．ｐ２を計算する
３．Ｙｐｉ  ＝  Ｘｐｉ  ＋  Ｕ  ＋  Ｓｐｉ．２．ｐ１．ｐ２を計算する
を実施することにより、生成されたシードから素数Ｙｐｉを再び生成する。
【００６５】
そのようにすることにより、暗号デバイスは、登録段階の間よりはるかに高速に素数Ｙｐｉを再生成することができる。
【００６６】
以下の段落において、少なくとも１つの素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムＦＩＰＳ  １８６−４付録Ａ．１．１．２の修正されたバージョンである、実装の第２の例が与えられる。
【００６７】
このアルゴリズムは、第１の素数ｐおよび第２の素数ｑの生成のために使用され得る。このアルゴリズムは、入力として、第１の素数ｐの所望される長さＬ、第２の素数ｑの所望される長さＮ、および、強いＰＵＦにより生成されるシードの長さＳＬ（≧Ｎ）を使用する。それは、出力長さｏｕｔｌｅｎのハッシュ関数を使用する。
【００６８】
ここでは下記で、このアルゴリズムを使用するとき、登録段階の間に実施される動作が詳細に述べられる：
【００６９】
最初に、このアルゴリズムは：
１．ｎ  ＝  ｃｅｉｌ（Ｌ／ｏｕｔｌｅｎ）を計算し、ここでｏｕｔｌｅｎはハッシュ出力ブロック長さを表す
２．ＢＬ  ＝  Ｌ  −  １  −  （ｎ＊ｏｕｔｌｅｎ）を計算する
次いで、第２の素数ｑを生成するために：
３．予備的登録ステップＥＳ０／ＥＳ０’の間に、チャレンジＣｑが、暗号デバイスにより生成され、さもなければ、サーバにより生成され、暗号デバイスに送信される：Ｃｑ  ＝  ランダム値
４．第１の登録ステップＥＳ１の間に、暗号デバイスは、チャレンジＣｑから、および、シードの長さＳＬからシードＵを生成する：Ｕ  ＝  Ｈａｓｈ（ＳｔｒｏｎｇＰＵＦ（Ｃｑ，ＳＬ））  ｍｏｄ  ２Ｎ−１
次いで、素数生成登録ステップＥＳ１１／ＥＳ１１’の間に、暗号デバイスまたはサーバは、シードＵから素数ｐ、ｑを生成する：
５．ｑ  ＝  ２Ｎ−１  ＋  Ｕ  ＋  １  −  （Ｕ  ｍｏｄ  ２）を計算する
６．ｑの素数性をテストし、素数でないならば、ステップ３に進む。そうでなければ、Ｃｑパラメータを保存する。
【００７０】
ｑに対し互いに素であるｐを生成するために：
７．ｏｆｆｓｅｔ  ＝  １をセットする
８．Ｆｏｒ  ｃｏｕｎｔｅｒ  ＝  ０  ｔｏ  （４Ｌ  −  １）  ｄｏ
８．１．Ｆｏｒ  ｊ  ＝  ０  ｔｏ  ｎ  ｄｏ
Ｖｊ  ＝  Ｈａｓｈ（ＳｔｒｏｎｇＰＵＦ（Ｃｑ，ＳＬ）  ＋  ｏｆｆｓｅｔ  ＋  ｊ）  ｍｏｄ  ２ＳＬを計算する
８．２．Ｗ  ＝  Ｓｕｍ（ｊ  ＝  ０；ｊ  ＜  ＢＬ）（Ｖｊ  ＊  ２ｊ＊ｏｕｔｌｅｎ）を計算する
８．３．Ｘ  ＝  Ｗ  ＋  ２Ｌ−１を計算する
８．４．Ｃ  ＝  Ｘ  ｍｏｄ  ２ｑを計算する
８．５．ｐ  ＝  Ｘ  −  （Ｃ  −  １）を計算する
８．６．Ｉｆ  ｐ  ＜  ２Ｌ−１  ｔｈｅｎ  ８．８に進む
８．７．ｐの素数性をテストし、ｐが素数ならば、ｏｆｆｐ  ＝  ｏｆｆｓｅｔを保存し、（Ｃｑ，ｏｆｆｐ）を返す
８．８．ｏｆｆｓｅｔ  ＝  ｏｆｆｓｅｔ  ＋  ｎ  ＋  １をセットする
【００７１】
素数生成登録ステップＥＳ１１／ＥＳ１１’の終了において、値ｏｆｆｐは、チャレンジＣｑに関連付けられるインクリメント数であり、暗号素数生成アルゴリズムの出力として暗号デバイスにより生成され、さもなければ、サーバにより暗号デバイスに送出される。
【００７２】
最終的には、第２の登録ステップＥＳ２の間に、チャレンジＣｑおよび関連付けられるインクリメント数ｏｆｆｐは、暗号デバイスにより記憶される。
【００７３】
ここでは下で、ランタイム段階の間に実施されるステップが詳細に述べられる。
【００７４】
ランタイムにおいて、第１のランタイムステップＲＳ１の間に、暗号デバイスは、そのメモリから、これらの値Ｃｑおよびｏｆｆｐを読み出す。暗号デバイスは、第１の素数ｐの所望される長さＬ、第２の素数ｑの所望される長さＮ、および、シードの長さＳＬ（≧Ｎ）をも知る。
【００７５】
次いで、暗号デバイスは：
１．ｎ  ＝  ｃｅｉｌ（Ｌ／ｏｕｔｌｅｎ）を計算する
２．ＢＬ  ＝  Ｌ  −  １  −  （ｎ＊ｏｕｔｌｅｎ）を計算する
３．第２のランタイムステップＲＳ２の間に、暗号デバイスは、その強い物理的複製困難関数をチャレンジＣｑに適用することにより素数生成シードＵを再び生成する：Ｕ  ＝  Ｈａｓｈ（ＳｔｒｏｎｇＰＵＦ（Ｃｑ，ＳＬ））  ｍｏｄ  ２Ｎ−１。
第３のランタイムステップＲＳ３の間に、暗号デバイスは、以下の計算：
４．ｑ  ＝  ２Ｎ−１  ＋  Ｕ  ＋  １  −  （Ｕ  ｍｏｄ  ２）を計算する
ｑに対し互いに素であるｐを生成するために
５．１．Ｆｏｒ  ｊ  ＝  ０  ｔｏ  ｎ  ｄｏ
Ｖｊ  ＝  Ｈａｓｈ（ＳｔｒｏｎｇＰＵＦ（Ｃｑ，ＳＬ）  ＋  ｏｆｆｐ  ＋  ｊ）  ｍｏｄ  ２ＳＬを計算する
５．２．Ｗ  ＝  Ｓｕｍ（ｊ  ＝  ０；ｊ  ＜  ＢＬ）（Ｖｊ  ＊  ２ｊ＊ｏｕｔｌｅｎ）を計算する
５．３．Ｘ  ＝  Ｗ  ＋  ２Ｌ−１を計算する
５．４．Ｃ  ＝  Ｘ  ｍｏｄ  ２ｑを計算する
５．５．ｐ  ＝  Ｘ  −  （Ｃ  −  １）を計算する
５．６  ペア（ｐ，ｑ）を返す
を実施することにより、生成されたシードＵから第１の素数ｐおよび第２の素数ｑを再び生成する。
【００７６】
そのようにすることにより、暗号デバイスは、登録段階の間よりはるかに高速に素数ｐおよびｑを再生成することができる。
【００７７】
第２の態様によれば、本発明は、それゆえに、少なくとも１つのコンピュータのメモリ内へと直接的にロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で作動させられるとき、第１の態様による方法のステップを実施するためのソフトウェアコード命令を備える、コンピュータプログラム製品にも関する。
【００７８】
第３の態様によれば、本発明は、それゆえに、少なくとも１つのハードウェアプロセッサを備える暗号デバイスにより実行されるとき、第１の態様による方法を実施する実行可能コンピュータコードを記憶する、非一時的コンピュータ可読媒体にも関する。
【００７９】
第４の態様によれば、本発明は、それゆえに：
−  第１の態様による方法のステップを実施するように構成される少なくとも１つのハードウェアプロセッサ２０１、
−  チャレンジおよび関連付けられるインクリメント数を記憶するための少なくとも１つのメモリ２０３、２０４、２０５
を備える、暗号デバイス１０１にも関する。
【図１】
2021521748.tif 000003
【図２】
2021521748.tif 000004
【図３】
2021521748.tif 000005
【図４ａ】
2021521748.tif 000006
【図４ｂ】
2021521748.tif 000007
【図５】
2021521748.tif 000008
【図６】
2021521748.tif 000009
【図７】
2021521748.tif 000010
【国際調査報告】
2021521748.tif 000011
2021521748.tif 000012