(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2021-521748(P2021-521748A)
(43)【公表日】2021年8月26日
(54)【発明の名称】物理的複製困難関数を使用して暗号鍵をオンボードで生成するための方法
(51)【国際特許分類】
H04L 9/10 20060101AFI20210730BHJP
H04L 9/08 20060101ALI20210730BHJP
G06F 7/58 20060101ALI20210730BHJP
【FI】
H04L9/00 621Z
H04L9/00 601B
H04L9/00 601F
G06F7/58 620
【審査請求】有
【予備審査請求】未請求
【全頁数】19
(21)【出願番号】特願2021-508071(P2021-508071)
(86)(22)【出願日】2019年4月24日
(85)【翻訳文提出日】2020年12月8日
(86)【国際出願番号】EP2019060525
(87)【国際公開番号】WO2019207001
(87)【国際公開日】20191031
(31)【優先権主張番号】18305522.7
(32)【優先日】2018年4月26日
(33)【優先権主張国】EP
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
(71)【出願人】
【識別番号】520414848
【氏名又は名称】タレス・ディス・デザイン・サービシズ・エス・ア・エス
(74)【代理人】
【識別番号】110001173
【氏名又は名称】特許業務法人川口國際特許事務所
(72)【発明者】
【氏名】デュバル,バンジャマン
(72)【発明者】
【氏名】ベルザチ,アレクサンドル
(72)【発明者】
【氏名】フルカン,オリビエ
(57)【要約】
本発明は、少なくとも1つの素数から暗号鍵を生成するための方法であって、少なくとも1つのハードウェアプロセッサと、物理的複製困難関数(208)と、少なくとも1つのチャレンジ(Ci)および少なくとも1つの関連付けられるインクリメント数(Spi)を記憶するメモリ(204、205)とを備える暗号デバイス(101)であって、前記関連付けられるインクリメント数は、前記物理的複製困難関数を使用して前記チャレンジから取得されるシードから前記少なくとも1つの素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、暗号デバイス(101)によりランタイムにおいて実施される、以下のステップ: − 前記メモリからチャレンジおよび少なくとも1つの関連付けられるインクリメント数を取得するステップ(RS1)、 − 前記物理的複製困難関数を前記取得されたチャレンジに適用することによりシードを生成するステップ(RS2)、 − 前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、前記取得された少なくとも1つのインクリメント数と同数のインクリメンテーションステップを実施することにより、前記生成されたシードから前記少なくとも1つの素数を生成するステップ(RS3)、 − 前記生成された素数から前記暗号鍵を生成するステップ(RS4)を含む、方法に関する。
【特許請求の範囲】
【請求項1】
少なくとも1つの素数から暗号鍵を生成するための方法であって、
少なくとも1つのハードウェアプロセッサ(201)と、物理的複製困難関数(208)と、少なくとも1つのチャレンジ(Ci)および少なくとも1つの関連付けられるインクリメント数(Spi)を記憶するメモリ(204、205)とを備える暗号デバイス(101)であって、前記関連付けられるインクリメント数は、前記物理的複製困難関数を使用して前記チャレンジから取得されるシードから前記少なくとも1つの素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、暗号デバイス(101)によりランタイムにおいて実施される、以下のステップ、
前記メモリからチャレンジおよび少なくとも1つの関連付けられるインクリメント数を取得するステップ(RS1)、
前記物理的複製困難関数を前記取得されたチャレンジに適用することによりシードを生成するステップ(RS2)、
前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、前記取得された少なくとも1つのインクリメント数と同数のインクリメンテーションステップを実施することにより、前記生成されたシードから前記少なくとも1つの素数を生成するステップ(RS3)、
前記生成された素数から前記暗号鍵を生成するステップ(RS4)
を含む、方法。
【請求項2】
登録段階の間に前記暗号デバイス(101)により実施される、以下のステップ、
暗号デバイスの前記物理的複製困難関数をチャレンジ(Ci)に適用することによりシードを生成するステップ(ES1)、
暗号デバイスの前記メモリ内に、前記チャレンジ(Ci)、および、前記シードから前記素数を生成するために暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数として規定される、少なくとも1つの関連付けられるインクリメント数(Spi)を記憶するステップ(ES2)
を含む、請求項1に記載の方法。
【請求項3】
前記暗号デバイスにより実施される、前記暗号デバイスに接続されるサーバからの前記チャレンジの受信のステップ(ES0)と、前記サーバへの前記生成されたシードの送信のステップ(ES111)とをさらに含む、請求項2に記載の方法。
【請求項4】
登録段階の間に、前記サーバにより実施される、
暗号デバイスに前記チャレンジを送出するステップ(ES0)、
暗号デバイスから前記生成されたシードを受信するステップ(ES111)、
暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成するステップ(ES112)、
前記暗号デバイスに、メモリ内に記憶するために、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも1つのインクリメント数を送出するステップ(ES113)
を含む、請求項3に記載の方法。
【請求項5】
前記暗号デバイスにより実施される、
前記チャレンジを生成するステップ(ES0’)、
暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成し、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも1つの関連付けられるインクリメント数を生成するステップ
をさらに含む、請求項2に記載の方法。
【請求項6】
前記暗号素数生成アルゴリズムが、FIPS 186−4付録A.1.1.2およびANS X9.31、rDSAの中の1つである、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記暗号鍵が、RSA鍵またはECC鍵の中の1つである、請求項1から6のいずれか一項に記載の方法。
【請求項8】
少なくとも1つのコンピュータのメモリ内へと直接的にロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で作動させられるとき、請求項1から7のいずれか一項に記載のステップを実施するためのソフトウェアコード命令を備える、コンピュータプログラム製品。
【請求項9】
少なくとも1つのハードウェアプロセッサ(201)を備える暗号デバイス(101)により実行されるとき、請求項1から7のいずれか一項に記載のステップを実施する実行可能コンピュータコードを記憶する、非一時的コンピュータ可読媒体。
【請求項10】
請求項1から7のいずれか一項に記載のステップを実施するように構成される少なくとも1つのハードウェアプロセッサ(201)、
チャレンジおよび関連付けられるインクリメント数を記憶するための少なくとも1つのメモリ(203、204、205)
を備える、暗号デバイス(101)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号鍵生成方法およびデバイスの分野に関し、より詳しくは、物理的複製困難関数を使用するオンボード鍵生成に関する。
【背景技術】
【0002】
暗号アルゴリズムは、一般に、暗号化により通信のプライバシーを確実にするために、認証のために、または、検証可能な署名を生成するために使用される。大部分の暗号アルゴリズムは、任意の暗号動作を実施するために暗号鍵を要する。そのような鍵は、暗号アルゴリズムの最初の使用の前に暗号デバイスのメモリ内に記憶されることになっており、後で、例えば元の鍵に欠陥があるとき、更新されなければならないことがある。
【0003】
鍵生成プロセスは、たいていは、素数から新しい暗号鍵をつくり上げる。結果として、それは、たいていは、そのような素数を得るための、ミラーラビンテストなどの素数性テストを実施することを含む。
【0004】
そのようなテストは、コストのかかる動作である、べき乗剰余を計算することを含む。SIMカード、銀行カード、または他のスマートカードなどの、いくつかの暗号デバイスは、低い処理能力を有するので、暗号鍵を更新することに関連付けられる算出コストを減少するための方法が探究されてきた。
【0005】
第1の既存の解決策は、新しい素数および新しい鍵を計算することなく、暗号鍵を新しいものにより変化させることができるために、デバイス上に複数個の鍵を記憶することである。そのような解決策の第1の問題は、デバイス内に組み込まれる鍵の数は、その個人化(personalization)ステップの後に拡張され得ないということである。別の問題は、デバイス内に複数個の鍵を記憶することは、不揮発性メモリ(NVM)消費を増大し、デバイスから有効な鍵を得ようとする攻撃(ダンプ、プロービング…)のリスクを増大するということである。
【0006】
第2の既存の解決策は、デバイス内にシードを記憶することであり、それらのシードから、素数は迅速に生成され得る。シードを使用することは、新しい素数を生成することのコストを低減するが、それは、先の解決策と同じ欠点を有する。
【0007】
第3の既存の解決策は、必要とされるとき、認証局などの遠隔(distant)サーバから鍵をダウンロードすることである。そのような解決策は、無視できる算出コストを有し、デバイス内に記憶されるいかなるデータも攻撃に対して露出させない。他方で、それは、暗号デバイスに加えて、いくらかの追加的なインフラストラクチャを維持することを要し、盗聴を回避するために、サーバへのセキュアなリンクを要する。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】http://www.x9.org
【発明の概要】
【発明が解決しようとする課題】
【0009】
結果として、制限される算出コストおよびメモリフットプリントを伴う、ならびに、新しい鍵の、または、対応するシードの露出のより低いリスクを伴う、ランタイムにおいて暗号デバイス上で利用可能な新しい暗号鍵を作製することを可能にする方法に対する必要性が依然として存する。
【課題を解決するための手段】
【0010】
この目的のために、および、第1の態様によれば、本発明は、それゆえに、少なくとも1つの素数から暗号鍵を生成するための方法であって、少なくとも1つのハードウェアプロセッサと、物理的複製困難関数と、少なくとも1つのチャレンジおよび少なくとも1つの関連付けられるインクリメント数を記憶するメモリとを備える暗号デバイスであって、前記関連付けられるインクリメント数は、前記物理的複製困難関数を使用して前記チャレンジから取得されるシードから前記少なくとも1つの素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、暗号デバイスによりランタイムにおいて実施される、以下のステップ:
− 前記メモリからチャレンジおよび少なくとも1つの関連付けられるインクリメント数を取得するステップ、
− 前記物理的複製困難関数を前記取得されたチャレンジに適用することによりシードを生成するステップ、
− 前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、前記取得された少なくとも1つのインクリメント数と同数のインクリメンテーションステップを実施することにより、前記生成されたシードから前記少なくとも1つの素数を生成するステップ、
− 前記生成された素数から前記暗号鍵を生成するステップ
を含む、方法に関する。
【0011】
第1の態様による方法は、登録段階の間に前記暗号デバイスにより実施される、以下のステップ:
− 暗号デバイスの前記物理的複製困難関数をチャレンジに適用することによりシードを生成するステップ、
− 暗号デバイスの前記メモリ内に、前記チャレンジ、および、前記シードから前記素数を生成するために暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数として規定される、少なくとも1つの関連付けられるインクリメント数を記憶するステップ
をも含み得る。
【0012】
そのような方法は、素数性テストを含めて、新しい暗号鍵が必要とされる前に、登録において計算の大部分を為すことを可能にする。ランタイムにおいて、暗号鍵は、低減されたコストで暗号により生成され得る。加えて、暗号デバイス内に記憶されるデータ(チャレンジおよび関連付けられるインクリメント数)は、極秘データではない。攻撃者は、それを使用して鍵を生成することはできず、なぜならば、彼は、正しいシードを生成するために必須である、暗号デバイスの物理的複製困難関数を再現することができないからである。
【0013】
第1の実施形態によれば、第1の態様による方法は、前記暗号デバイスにより実施される、前記暗号デバイスに接続されるサーバからの前記チャレンジの受信のステップと、前記サーバへの前記生成されたシードの送信のステップとをさらに含み得る。
【0014】
この第1の実施形態において、第1の態様による方法は、登録段階の間に、前記サーバにより実施される:
− 暗号デバイスに前記チャレンジを送出するステップ、
− 暗号デバイスから前記生成されたシードを受信するステップ、
− 暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成するステップ、
− 前記暗号デバイスに、メモリ内に記憶するために、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも1つのインクリメント数を送出するステップ
をさらに含み得る。
【0015】
そのようにすることにより、登録段階において、算出の大部分はサーバにより実施され、そのことは、サーバのより大きい計算能力から利益を得ることを可能にする。
【0016】
第2の実施形態によれば、第1の態様による方法は、前記暗号デバイスにより実施される:
− 前記チャレンジを生成するステップ、
− 暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、前記シードから素数を生成し、前記素数を生成するために前記暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、前記少なくとも1つの関連付けられるインクリメント数を生成するステップ
をさらに含み得る。
【0017】
そのような場合において、登録段階においてのすべての計算は、暗号デバイスにより実施され、そのことは、遠隔サーバとメッセージを交換することを回避し、セキュリティを改善する。
【0018】
暗号素数生成アルゴリズムは、FIPS 186−4付録A.1.1.2およびANS X9.31、rDSAの中の1つであり得る。
【0019】
暗号鍵は、RSA鍵またはECC鍵の中の1つであり得る。
【0020】
第2の態様によれば、本発明は、それゆえに、少なくとも1つのコンピュータのメモリ内へと直接的にロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で作動させられるとき、第1の態様による方法のステップを実施するためのソフトウェアコード命令を備える、コンピュータプログラム製品にも関する。
【0021】
第3の態様によれば、本発明は、それゆえに、少なくとも1つのハードウェアプロセッサを有する処理システムを備える暗号デバイスにより実行されるとき、第1の態様による方法を実施する実行可能コンピュータコードを記憶する、非一時的コンピュータ可読媒体にも関する。
【0022】
第4の態様によれば、本発明は、それゆえに:
− 第1の態様による方法を実施するように構成される少なくとも1つのハードウェアプロセッサ、
− チャレンジおよび関連付けられるインクリメント数を記憶するための少なくとも1つのメモリ
を備える、暗号デバイスにも関する。
【0023】
以下の説明、および、添付される図面は、所定の例示的な態様を詳細に論述し、実施形態の原理が用いられ得る様々な方法のうちのほんの少数のものを指し示す。他の利点、および、新規の特徴は、図面と併せて考察されるとき、以下の詳細に述べられる説明から明らかになることになり、開示される実施形態は、すべてのそのような態様、および、それらの均等を含むことを意図される。
【図面の簡単な説明】
【0024】
【
図1】本発明の実施形態によるシステムの概略的例示の図である。
【
図2】本発明の実施形態による暗号デバイスの概略的例示の図である。
【
図3】本発明の実施形態による暗号デバイスの物理的複製困難関数の概略的例示の図である。
【
図4a】本発明の登録段階の、実施形態を概略的に例示する図である。
【
図4b】本発明の登録段階の、実施形態を概略的に例示する図である。
【
図5】本発明の実施形態によるランタイム段階を概略的に例示する図である。
【
図6】素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムANS X9.31である実装の例を概略的に例示する図である。
【
図7】素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムANS X9.31である実装の例を概略的に例示する図である。
【発明を実施するための形態】
【0025】
下記で詳細に述べられる説明において、例示として、本発明が実践され得る特定の実施形態を示す、添付図面に対して参照が為される。これらの実施形態は、当業者が本発明を実践することを可能にするのに十分詳細に説明される。本発明の様々な実施形態は、異なっていても、必ずしも相互に排他的ではないということが理解されるべきである。例えば、1つの実施形態に関して本明細書において説明される、個別の特徴、構造、または特性は、本発明の趣旨および範囲から逸脱することなく、他の実施形態の中で実装され得る。加えて、各々の開示される実施形態の中の個々の要素の位置または配置は、本発明の趣旨および範囲から逸脱することなく修正され得るということが理解されるべきである。下記で詳細に述べられる説明は、それゆえに、制限的な意味で解されるべきではなく、本発明の範囲は、単に、適切に解釈される、添付される特許請求の範囲により、特許請求の範囲が権利を与えられる均等の最大限の範囲と共に定義される。
【0026】
本発明は、暗号デバイス101が、要望に応じて、制限される算出コストで、1つ以上の暗号鍵、例えば、対称暗号化/復号化のための鍵、または、非対称暗号化アルゴリズムのための公開鍵−プライベート鍵ペアを生成するために必要とされる、少なくとも1つの素数を生成することを可能にする方法を提供することを目標とする。
【0027】
FIPS 186−4付録A.1.1.2、および、金融サービスに関する認定基準委員会(Accredited Standards Committee)、X9(http://www.x9.orgを参照されたい)により米国規格協会に対して開発された、ANS X9.31(1998年に承認されたバージョン)、rDSA 金融サービス業界用の可逆公開鍵暗号を使用するデジタル署名(Digital Signatures Using Reversible Public Key Cryptography for the Financial Services Industry)などの、シード値から素数を生成する、いくつかのよく知られているアルゴリズムが存在する。
【0028】
そのようなアルゴリズムは、シードから計算される、ある値をインクリメントすることにより候補数を取得し、次いで、この候補数の素数性をテストすることを、素数性テストが肯定的であるまで繰り返し行うことにより、シード値から少なくとも1つの素数を生成する。そのような種類の算出は、非常に高価であり得る。
【0029】
本発明の主な考え方は、そのような算出を、素数が実際に必要とされるランタイム段階の前に、登録段階の間に実施すること、および、暗号デバイス内に、所与のシードから少なくとも1つの素数を生成するために選定されたアルゴリズムを使用して実施されることになるインクリメンテーションステップの数を記憶することである。そのようにすることにより、暗号デバイスは、ランタイムにおいて、要される数のインクリメンテーションステップを再びただ実施することにより、シードから登録段階の間に取得される素数を再び生成することができる。暗号デバイスは、各々のインクリメンテーションステップの後に素数性テストを実施する必要性を有さないので、素数は、ランタイムにおいて、登録段階の間よりはるかに低い算出コストで生成され得る。暗号デバイスにより実施されることになる算出の量を、よりいっそう減少するために、登録段階において実施されることになる算出の大部分は、リモートサーバ102により実施され得る。
【0030】
暗号鍵を生成するためにシードから少なくとも1つの素数を生成する、そのようなアルゴリズムを使用することの欠点は、シードにアクセスするいかなる攻撃者も、同じ素数および暗号鍵を生成することができ、次いで、それを、悪意をもって使用し得るということである。インクリメンテーションステップの数と共に、素数生成アルゴリズムにおいて使用されることになるシードは、それゆえに、いかなる不正アクセスからも保護されるべきである。攻撃者による記憶されるシードへのいかなるそのようなアクセスも防止するために、本発明の別の特徴は、暗号デバイスに、シードを、それが素数生成アルゴリズムへの入力として必要とされるとき、オンザフライでセキュアに生成させることにより、シード値を記憶することを回避することである。そのようなセキュアな生成は、物理的複製困難関数(PUF)を使用してチャレンジを処理することにより実施され得る。
【0031】
そのようなPUFは、ハードウェア回路により実装される関数であり、その関数の結果は、このハードウェア回路の微細構造などの、その製造の間にランダムにセットされる物理的因子に依存する。その結果、そのようなPUFは、一意的であり、予測不可能であり、再現され得ない。
【0032】
本発明によれば、暗号デバイスは、それがPUFを使用してシードを得ることができるチャレンジ、および、このシードから少なくとも1つの素数を生成するために選定されたアルゴリズムを使用して実施されることになるインクリメンテーションステップの数を記憶するのみである。新しい暗号鍵が必要とされるとき、暗号デバイスは、そのメモリ内に記憶されるチャレンジを読み出し、PUFをそのチャレンジに適用して、シードを得ることができる。暗号デバイスは、少なくとも1つの素数を生成するために;および、この素数から暗号鍵を生成するために、入力として、シードと、チャレンジとともに記憶されるインクリメンテーションステップの数とを使用して、事前定義された素数生成アルゴリズムを作動させ得る。
【0033】
暗号鍵を生成するそのような方法は、暗号デバイス内にシードを記憶するよりはるかに安全であり;暗号デバイスのメモリの内容にアクセスする攻撃者は、チャレンジを使用することができないことになり、なぜならば、彼は、暗号デバイスのPUFを再現し、このPUFによってチャレンジを処理することから取得されることになるシードを再計算することができないからである。
【0034】
図1は、暗号デバイス101、例えばスマートカードまたは移動電話を、リモートサーバ102に接続するネットワーク103の概略的例示である。暗号デバイス101は、ユーザにより動作させられ、データ暗号化または復号化などの暗号動作のために暗号デバイスにコマンドを送出するパーソナルコンピュータに接続され得る。代替的には、暗号デバイス101は、そのようなコンピュータ内に組み込まれ得る。
【0035】
図2は、暗号デバイス101の概略的例示である。それは、ランダムアクセスメモリ(RAM)203、読み出し専用メモリ(ROM)204、および/または不揮発性メモリ(NVM)205に、バス202を介して接続されるプロセッサ201を含み得る。暗号デバイス101のメモリ、ROM、および/またはNVMのサブパートは、次の段落において説明されるように、秘密鍵などの、または、新しい秘密鍵を生成するために必要とされる情報などの、極秘データを記憶し得る。
【0036】
暗号デバイス101は、プロセッサに接続されるコネクタ206をさらに含み、そのコネクタ206により、暗号デバイス101はアンテナに接続され得る。そのようなアンテナは、暗号デバイス101を様々な形式のワイヤレスネットワーク、例えば、ワイドエリアネットワーク、WiFiネットワーク、または移動電話ネットワークに接続するために使用され得る。代替的には、暗号デバイス101は、Ethernetなどの有線ネットワーク接続を介してネットワークに接続し得る。
【0037】
暗号デバイス101は、1つ以上の画面、ラウドスピーカ、マウス、触覚表面、キーボード、その他…などの、暗号デバイス101のユーザにインターフェイスを提供する入出力手段207をも含み得る。
【0038】
暗号デバイス101は、ここでは上記で規定されたような物理的複製困難関数を実施するPUF回路301をも含む、
図3上で例示される、強いPUFモジュール208を含む。強いPUFモジュールの出力においてエントロピーの最小レベルを確実にするために、その強いPUFモジュールは、PUF回路の出力に、ハッシュ関数などの、そのエントロピーを増大する関数を適用するエントロピーアキュムレータ回路302をも含む。エントロピーアキュムレータ回路302は、入力として、初期化ベクトル(IV)をも使用し得る。強いPUFモジュールにより実施される全体の関数は、以下の段落において「強いPUF」と呼ばれる。
【0039】
暗号デバイス101は、いかなる不正アクセスに対してもセキュアにされる耐タンパ性デバイスであり得る。
【0040】
以下の段落は、
図4aおよび4b上で描写されるように、少なくとも1つの素数を容易に生成するためにランタイムにおいて後で必要とされることになる要素を生成および記憶するために、登録段階の間に暗号デバイス101により実施されるステップを説明する。
【0041】
第1の登録ステップES1の間に、暗号デバイスは、その強い物理的複製困難関数をチャレンジCiに適用することにより、シードを生成する。
【0042】
第2の登録ステップES2の間に、暗号デバイスは、そのメモリ内に、前記チャレンジ、および、第1の登録ステップES1の間に生成されたシードから少なくとも1つの素数を生成するために暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数として規定される、少なくとも1つの関連付けられるインクリメント数Spiを記憶する。チャレンジに関連付けられるインクリメント数の数は、素数を生成するために選定された対応するアルゴリズムに依存し得る。
【0043】
図4a上で例示される、第1の実施形態において、この登録段階の間に暗号デバイスにより実施されることになる計算を最小化するために、サーバは、暗号デバイスにチャレンジを送信することを、および、このチャレンジから生成されたシードから少なくとも1つの素数を生成するために実施されることになるインクリメンテーションステップの数を決定することを担当する。
【0044】
そのような場合において、登録段階は、予備的登録ステップES0を含み、そのステップの間に、サーバは、チャレンジを生成し、それを、サーバからチャレンジを受信する暗号デバイスに送出し得る。そのような場合において、登録段階は:
・暗号デバイスが、サーバに、サーバにより送出されたチャレンジから暗号デバイスが生成したシードを送出し、サーバが、暗号デバイスから、生成されたシードを受信する、登録ステップES111、
・サーバが、暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、シードから少なくとも1つの素数Ypiを生成する、登録ステップES112、
・サーバが、前記暗号デバイスに、そのメモリ内に記憶するために、素数を生成するために暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、少なくとも1つのインクリメント数Spiを送出する、登録ステップES113
を含む、素数生成登録ステップES11をも含む。
【0045】
図4b上で例示される、第2の実施形態において、登録の間に実施されるすべての計算が、暗号デバイス101それ自体により実施される。そのような場合において、登録段階は、代替的な予備的登録ステップES0’を含み、そのステップの間に、暗号デバイスは、チャレンジを生成し得る。そのような場合において、登録段階は、代替的な素数生成登録ステップES11’を含み、そのステップの間に、暗号デバイスは:
・暗号素数生成アルゴリズムにおいていくつかのインクリメンテーションステップを実施することにより、暗号デバイスが第1の登録ステップES1の間に生成したシードから素数Ypiを生成し、
・素数を生成するために暗号素数生成アルゴリズムにおいて実施されるインクリメンテーションステップの数として規定される、少なくとも1つの関連付けられるインクリメント数Spiを生成する。
【0046】
そのようにすることにより、両方の実施形態において、登録段階の終了において、暗号デバイスは、チャレンジからシードを生成し、次いで、暗号素数アルゴリズムにおいて、関連付けられるインクリメント数と同数のインクリメンテーションステップを実施することにより、シードから少なくとも1つの素数を生成することができるように、そのメモリ内に、チャレンジおよび少なくとも1つの関連付けられるインクリメント数を記憶する。
【0047】
以下の段落は、
図5上で描写されるように、少なくとも1つの素数から暗号鍵を生成するために、登録段階の後にランタイムにおいて暗号デバイス101により実施される、本発明の第1の態様による方法のステップを説明する。
【0048】
ここでは上記で説明されたように、暗号デバイスのメモリ204、205は、少なくとも1つのチャレンジ、および、暗号デバイスのPUFモジュールにより実施される強いPUFを使用して前記チャレンジから取得されるシードから前記素数を生成するために事前定義された暗号素数生成アルゴリズムにおいて実施されることになるインクリメンテーションステップの数である、少なくとも1つの関連付けられるインクリメント数を記憶する。
【0049】
第1のランタイムステップRS1の間に、暗号デバイスは、そのメモリから、チャレンジCiおよび関連付けられる少なくとも1つのインクリメント数Spiを取得する。
【0050】
第2のランタイムステップRS2の間に、暗号デバイスは、その強い物理的複製困難関数を、第1のランタイムステップRS1の間に取得されたチャレンジに適用することにより素数生成シードを生成する。
【0051】
第3のランタイムステップRS3の間に、暗号デバイスは、前記暗号素数生成アルゴリズムを実施することにより、および、その暗号素数生成アルゴリズムにおいて、取得された少なくとも1つのインクリメント数Spiと同数のインクリメンテーションステップを実施することにより、生成されたシードから少なくとも1つの素数を生成する。
【0052】
第4のランタイムステップRS4の間に、暗号デバイスは、生成された素数から暗号鍵を生成する。生成される暗号鍵は、例えば、RSA鍵、DSA鍵、ディフィー−ヘルマン鍵、ECDSA鍵、ECD鍵、もしくはECC鍵、または、因数分解問題の、もしくは離散対数問題の実際的な困難さに基づく公開鍵アルゴリズムにより使用される任意の暗号鍵の中の1つであり得る。
【0053】
以下の段落において、ANS X9.31およびFIPS 186−4付録A.1.1.2素数生成アルゴリズムに基づく実装の2つの例が与えられる。これらは、実装の非制限的な例であり、本発明による方法は、様々な他の素数生成アルゴリズムに基づいて実装され得る。
【0054】
素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムANS X9.31である、実装の第1の例が与えられる。
【0055】
その場合において登録段階の間に実施される動作が、サーバが、素数を生成するために実施されることになるインクリメンテーションステップの数を決定する、第1の実施形態に対応して、
図6上で示される。
【0056】
予備的登録ステップES0/ES0’の間に、チャレンジCiが、暗号デバイスにより生成され、さもなければ、サーバにより生成され、暗号デバイスに送信される。暗号デバイスは、生成されることになる鍵のサイズである、および、サーバにより送信され得る、鍵サイズpと、整数であるインクリメントペースbと、公開パラメータe、例えばRSA公開鍵とをも知る。
【0057】
第1の登録ステップES1の間に、暗号デバイスは、チャレンジCiからシードを生成する。X9.31アルゴリズムの場合において、シードは、3つの部分Xpi、Xpi
1、およびXpi
2から成る:
(Xpi,Xpi
1,Xpi
2) = Strong_PUF(Ci,p)
【0058】
素数生成登録ステップES11/ES11’の間に、暗号デバイスまたはサーバは、X’9.31と記される、ここでは下で説明されるようなX9.31アルゴリズムを使用してシードから素数Ypiを生成し、ここで、PrimeQは素数性テストである:
1.For j = 1 to 2 do
(a)pj <− Xp
ijをセットする
(b)If pjが偶数である then p
j <− p
j + 1をセットする
(c)While(PrimeQ(p
j) = false) do
p
j <− p
j + b
Sp
ij <− Sp
ij + 1;
2.R <− (p
2−1 mod p
1)p
2 − (p
1−1 mod p
2)p
1を計算する
3.Y
pi <− X
pi + ((R − X
pi) mod p
1p
2)をセットする => Spi
12 = (R − X
pi) mod p
1p
2を保存する
4.If (gcd(Y
pi − 1;e) ≠ 1) or (PrimeQ(Y
pi) = false) then
(a)Y
pi <− Y
pi + p
1p
2をセットする
(b)ステップ4に進み、 S
pi <− S
pi + 1;
5.Y
piを出力する
【0059】
そのようなアルゴリズムを使用して、素数Y
piが、p
1値をSpi
1回、p
2値をSpi
2回、および、Y
pi値をS
pi回インクリメントした後に取得される。
【0060】
素数生成登録ステップES11/ES11’の終了において、値Spi
1、Spi
2、Spi、およびSpi
12は、チャレンジCiに関連付けられるインクリメント数であり、X9.31暗号素数生成アルゴリズムの出力として暗号デバイスにより生成され、さもなければ、サーバにより暗号デバイスに送出される。
【0061】
最終的には、第2の登録ステップES2の間に、チャレンジCiならびに関連付けられるインクリメント数Spi
1、Spi
2、Spi、およびSpi
12は、暗号デバイスにより記憶される。
【0062】
次いで、ランタイムにおいて、
図7上で例示されるように、第1のランタイムステップRS1の間に、暗号デバイスは、そのメモリから、これらの値Ci、Spi
1、Spi
2、Spi、およびSpi
12を読み出す。
【0063】
第2のランタイムステップRS2の間に、暗号デバイスは、その強い物理的複製困難関数をチャレンジCiに適用することにより素数生成シード(Xpi、Xpi
1、Xpi
2)を再び生成する。
(Xpi,Xpi
1,Xpi
2) = Strong_PUF(Ci,p)
【0064】
第3のランタイムステップRS3の間に、暗号デバイスは、単純化されたX9.31バリアント(variant)と呼ばれる、以下の計算:
1.a/ p
1 <− Xpi
1 + Spi
1.bを計算する
b/ p
2 <− Xpi
2 + Spi
2.bを計算する
2.a/ Ip
2 <− p
1−1 mod p
2を計算する
b/ Rt <− p
2.2Ip
2 + p
1.p
2 − 1を計算する
c/ T <− Xpi mod p
1.p
2を計算する
d/ U <− Rt − Tを計算する
e/ U <− U − Spi
12.p
1.p
2を計算する
3.Y
pi = X
pi + U + Spi.2.p
1.p
2を計算する
を実施することにより、生成されたシードから素数Ypiを再び生成する。
【0065】
そのようにすることにより、暗号デバイスは、登録段階の間よりはるかに高速に素数Ypiを再生成することができる。
【0066】
以下の段落において、少なくとも1つの素数を生成するために使用される暗号素数生成アルゴリズムがアルゴリズムFIPS 186−4付録A.1.1.2の修正されたバージョンである、実装の第2の例が与えられる。
【0067】
このアルゴリズムは、第1の素数pおよび第2の素数qの生成のために使用され得る。このアルゴリズムは、入力として、第1の素数pの所望される長さL、第2の素数qの所望される長さN、および、強いPUFにより生成されるシードの長さSL(≧N)を使用する。それは、出力長さoutlenのハッシュ関数を使用する。
【0068】
ここでは下記で、このアルゴリズムを使用するとき、登録段階の間に実施される動作が詳細に述べられる:
【0069】
最初に、このアルゴリズムは:
1.n = ceil(L/outlen)を計算し、ここでoutlenはハッシュ出力ブロック長さを表す
2.BL = L − 1 − (n*outlen)を計算する
次いで、第2の素数qを生成するために:
3.予備的登録ステップES0/ES0’の間に、チャレンジCqが、暗号デバイスにより生成され、さもなければ、サーバにより生成され、暗号デバイスに送信される:Cq = ランダム値
4.第1の登録ステップES1の間に、暗号デバイスは、チャレンジCqから、および、シードの長さSLからシードUを生成する:U = Hash(StrongPUF(Cq,SL)) mod 2
N−1
次いで、素数生成登録ステップES11/ES11’の間に、暗号デバイスまたはサーバは、シードUから素数p、qを生成する:
5.q = 2
N−1 + U + 1 − (U mod 2)を計算する
6.qの素数性をテストし、素数でないならば、ステップ3に進む。そうでなければ、Cqパラメータを保存する。
【0070】
qに対し互いに素であるpを生成するために:
7.offset = 1をセットする
8.For counter = 0 to (4L − 1) do
8.1.For j = 0 to n do
Vj = Hash(StrongPUF(Cq,SL) + offset + j) mod 2
SLを計算する
8.2.W = Sum(j = 0;j < BL)(Vj * 2
j*outlen)を計算する
8.3.X = W + 2
L−1を計算する
8.4.C = X mod 2qを計算する
8.5.p = X − (C − 1)を計算する
8.6.If p < 2
L−1 then 8.8に進む
8.7.pの素数性をテストし、pが素数ならば、offp = offsetを保存し、(Cq,offp)を返す
8.8.offset = offset + n + 1をセットする
【0071】
素数生成登録ステップES11/ES11’の終了において、値offpは、チャレンジCqに関連付けられるインクリメント数であり、暗号素数生成アルゴリズムの出力として暗号デバイスにより生成され、さもなければ、サーバにより暗号デバイスに送出される。
【0072】
最終的には、第2の登録ステップES2の間に、チャレンジCqおよび関連付けられるインクリメント数offpは、暗号デバイスにより記憶される。
【0073】
ここでは下で、ランタイム段階の間に実施されるステップが詳細に述べられる。
【0074】
ランタイムにおいて、第1のランタイムステップRS1の間に、暗号デバイスは、そのメモリから、これらの値Cqおよびoffpを読み出す。暗号デバイスは、第1の素数pの所望される長さL、第2の素数qの所望される長さN、および、シードの長さSL(≧N)をも知る。
【0075】
次いで、暗号デバイスは:
1.n = ceil(L/outlen)を計算する
2.BL = L − 1 − (n*outlen)を計算する
3.第2のランタイムステップRS2の間に、暗号デバイスは、その強い物理的複製困難関数をチャレンジCqに適用することにより素数生成シードUを再び生成する:U = Hash(StrongPUF(Cq,SL)) mod 2
N−1。
第3のランタイムステップRS3の間に、暗号デバイスは、以下の計算:
4.q = 2
N−1 + U + 1 − (U mod 2)を計算する
qに対し互いに素であるpを生成するために
5.1.For j = 0 to n do
Vj = Hash(StrongPUF(Cq,SL) + offp + j) mod 2
SLを計算する
5.2.W = Sum(j = 0;j < BL)(Vj * 2
j*outlen)を計算する
5.3.X = W + 2
L−1を計算する
5.4.C = X mod 2qを計算する
5.5.p = X − (C − 1)を計算する
5.6 ペア(p,q)を返す
を実施することにより、生成されたシードUから第1の素数pおよび第2の素数qを再び生成する。
【0076】
そのようにすることにより、暗号デバイスは、登録段階の間よりはるかに高速に素数pおよびqを再生成することができる。
【0077】
第2の態様によれば、本発明は、それゆえに、少なくとも1つのコンピュータのメモリ内へと直接的にロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で作動させられるとき、第1の態様による方法のステップを実施するためのソフトウェアコード命令を備える、コンピュータプログラム製品にも関する。
【0078】
第3の態様によれば、本発明は、それゆえに、少なくとも1つのハードウェアプロセッサを備える暗号デバイスにより実行されるとき、第1の態様による方法を実施する実行可能コンピュータコードを記憶する、非一時的コンピュータ可読媒体にも関する。
【0079】
第4の態様によれば、本発明は、それゆえに:
− 第1の態様による方法のステップを実施するように構成される少なくとも1つのハードウェアプロセッサ201、
− チャレンジおよび関連付けられるインクリメント数を記憶するための少なくとも1つのメモリ203、204、205
を備える、暗号デバイス101にも関する。
【国際調査報告】