(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6704071
(24)【登録日】2020年5月13日
(45)【発行日】2020年6月3日
(54)【発明の名称】保護されていないハードウェアレジスタへの秘密データの安全なローディング
(51)【国際特許分類】
G06F 21/55 20130101AFI20200525BHJP
H04L 9/10 20060101ALI20200525BHJP
G06F 21/72 20130101ALI20200525BHJP
【FI】
G06F21/55 360
H04L9/00 621A
G06F21/72
【請求項の数】5
【全頁数】9
(21)【出願番号】特願2018-568759(P2018-568759)
(86)(22)【出願日】2017年6月14日
(65)【公表番号】特表2019-519866(P2019-519866A)
(43)【公表日】2019年7月11日
(86)【国際出願番号】EP2017064494
(87)【国際公開番号】WO2018007113
(87)【国際公開日】20180111
【審査請求日】2019年2月27日
(31)【優先権主張番号】16305841.5
(32)【優先日】2016年7月4日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】519271263
【氏名又は名称】タレス・ディス・フランス・エス・ア
(74)【代理人】
【識別番号】110001173
【氏名又は名称】特許業務法人川口國際特許事務所
(72)【発明者】
【氏名】ユー,ニコラス・シン・ロン
(72)【発明者】
【氏名】サイド,アヌス・ビン・ハリド
(72)【発明者】
【氏名】アルカサバス,フアン・マノロ
【審査官】
宮司 卓佳
(56)【参考文献】
【文献】
国際公開第03/081398(WO,A1)
【文献】
特開2012−199922(JP,A)
【文献】
特開2000−165375(JP,A)
【文献】
特表2012−506658(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
G06F 21/72
H04L 9/10
(57)【特許請求の範囲】
【請求項1】
ハードウェア暗号動作をサポートするチップ(CH)上で、機密データ(K)を機密データハードウェアレジスタ(KR)のセットに安全にロードする方法であって、前記方法は、ソフトウェアの各実行時に、ソフトウェア命令によってモニタされる以下のステップ:
チップアーキテクチャにおいて、未使用のハードウェアレジスタと、機密データを取り扱わず、ロードされる時にチップ機能を妨害しない他の適切なハードウェアレジスタとをリストしている、事前定義されたリストにリストされた利用可能なハードウェアレジスタ(AR)のセット(ARs)を選択するステップ(P1)、
機密データハードウェアレジスタ(KR)と、利用可能なハードウェアレジスタのセット(ARs)内のハードウェアレジスタとのアドレスのインデクス可能レジスタリスト(RL)を確立するステップ(P2)、
ループにおいて、機密データ(K)の一部が書き込まれる機密データハードウェアレジスタ(KR)のおのおのにおける最後の書き込みを除いて、ランダムなデータを、ランダムな回数、ランダムな順序で、このレジスタリスト(RL)における各ハードウェアレジスタに書き込むステップ(P3)を備える、方法。
【請求項2】
他の暗号ハードウェアのキーレジスタをさらに選択するステップを備える、請求項1に記載の方法。
【請求項3】
書き込むステップ(P3)が、以下のステップ:
− インデクス可能レジスタリスト(RL)内の各ハードウェアレジスタにロード回数(FWC)を関連付けるステップ(T1)、
− 関連付けられたロード回数(FWC)と同じ回数、レジスタアドレスをリストするレジスタ書き込みシーケンス(RWS)を確立するステップ(T2)、
− レジスタ書き込みシーケンス(RWS)をシャッフルし(T3)、シャッフルされたレジスタ書き込みシーケンス(RWSs)における処理順序を決定するステップ、
− シャッフルされたレジスタ書き込みシーケンス(RWSs)における機密データレジスタ(KR)の最後の発生を識別するステップ、
− シャッフルされたレジスタ書き込みシーケンスにおけるアドレスのすべてのセットについて、各ハードウェアレジスタに、ランダムなデータを書き込むステップを備える、請求項1に記載の方法。
【請求項4】
請求項1または2の方法を実装するチップ(CH)。
【請求項5】
請求項1から3のいずれか一項に記載の方法を実装するための命令を有するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハードウェア暗号動作をサポートするチップ上で、機密データハードウェアレジスタのセットに安全にロードする方法に関する。
【0002】
本発明はまた、前記方法を実装するチップと、本発明の方法を実装するための命令を有するコンピュータプログラム製品とに関する。
【背景技術】
【0003】
ハードウェア暗号動作をサポートするチップは、セキュリティ上重要なデータがハードウェアレジスタにロードされる必要がある。たとえば、AES暗号化は、ハードウェアレジスタへの、キーおよびデータのローディングが必要である。
【0004】
ハードウェア自体は、計算を保護するが、キーのローディングは、サイドチャネル攻撃を受けやすいため、ハードウェアレジスタへのキーのローディングは重要である。サイドチャネル攻撃は、チップによって漏洩されたサイド情報に基づいて仕掛けられるあらゆる攻撃である。サイドチャネル攻撃は、ブルートフォース、またはアルゴリズムにおける理論上の弱点ではなく、暗号システムの物理的な実装から得られる情報に基づくあらゆる攻撃である。たとえば、タイミング情報、電力消費量、電磁的漏洩、あるいは音さえもが、システムを破壊するために悪用される可能性がある追加の情報源を提供する可能性がある。
【0005】
自由にプログラムされ得る同一の実験デバイスにアクセスすることによって、同様の攻撃が仕掛けられ得る。これらの攻撃はテンプレート攻撃と呼ばれる。そのような攻撃のために、攻撃者は、攻撃されたカードからの1つのサイドチャネル曲線しか必要としない。
【0006】
安全なローディングを提供する特定のハードウェア対策がある。たとえば、クロックジッタは、可能なハードウェア対策のうちの1つである。クロックジッタとは、振幅が一定であるが、周期がオリジナルからわずかに変化する変動クロック信号を称し、これは、攻撃者によって推定される周期信号の周期性からのクロックの偏差を伴うことによって、サイドチャネル分析を困難にする。
【0007】
可能性のある別のハードウェア解決策は、マスクされたキーローディングを有することである。これは、セキュリティ上重要なデータが、ハードウェアにロードされる前にマスクされ、ハードウェアは、計算中にそのマスクを除去することを、意味する。
【0008】
しかし、これらの対策は、チップ製造者によってのみ実装され得、ソフトウェアによってのみ有効化/無効化され得る。
【0009】
したがって、特定のチップではキーのローディングは安全ではなく、何故なら、ハードウェアが、マスクされたキーローディング、すなわち、ハードウェアレジスタにロードされる前にマスクされたキーと、ハードウェア自体において除去されるマスク、またはクロックジッタ、すなわち、周期的信号からクロックの偏差の適用、もしくは、他のハードウェア対策の適用をサポートしないからである。これは、サイドチャネル攻撃によってキーが検索され得るというセキュリティ上の問題を引き起こす。
【0010】
したがって、さらなる代替的で有利な解決策が、当該技術分野において所望される。
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明は、従来技術の解決策の場合とは逆に、特定のハードウェア要件を含めることなく、機密データローディングを安全にすることを目的とする。
【課題を解決するための手段】
【0012】
本発明は、その最も広い意味において、ハードウェア暗号動作をサポートするチップ上で、機密データを機密データハードウェアレジスタのセットに安全にロードする方法として定義され、前記方法は、ソフトウェアの各実行時に、ソフトウェア命令によってモニタされる以下のステップを備える:
チップアーキテクチャにおいて、未使用のハードウェアレジスタと、機密データを取り扱わず、ロードされる時にチップ機能を妨害しない他の適切なハードウェアレジスタとをリストしている、事前定義されたリストにリストされた利用可能なハードウェアレジスタのセットを選択するステップ、
機密データハードウェアレジスタと、利用可能なハードウェアレジスタのセット内のハードウェアレジスタとのアドレスのインデクス可能レジスタリストを確立するステップ、
ループにおいて、機密データの一部が書き込まれる機密データハードウェアレジスタのおのおのにおける最後の書き込みを除いて、ランダムなデータを、ランダムな回数、ランダムな順序で、このレジスタリストにおける各ハードウェアレジスタに書き込むステップ。この発明はまた、機密レジスタへの書き込みが、2回以上のアクションを行うハードウェアチップにも適合し、少なくとも1つのアクションは、本発明の原理に従って実行される。
【0013】
本発明において提案される解決策は、純粋にソフトウェアであり、ハードウェア対策の有無に関わらず使用され得る。ハードウェア対策と併用されると、セキュリティが強化される。
【0014】
本発明を用いて、ランダムなデータの、ランダムな順序でのレジスタのローディングは、真のキー書き込みをスクランブルする。さらに、キー/機密データレジスタへのランダムなデータの書き込みは、ランダムなシーケンスによる順序と、レジスタ当たりのランダムな書き込み回数による期間との両方において、獲得される各サイドチャネル情報を異なるものにする。
【0015】
攻撃者は、真のキー/機密データが、真のキーレジスタに書き込まれたときを識別できず、これは、SPA(Simple Power Analysis)およびテンプレートのようなサイドチャネル攻撃を阻止するであろう。キーローディングのソフトウェアランダム化は、これらの攻撃に対する保護を提供する。
【0016】
本発明はソフトウェアベースの解決策であるので、スタンドアロンで使用され得、ハードウェア対策に加えて使用されるならば、セキュリティをよりさらに高めるであろう。
【0017】
本発明を実装するチップのサイドチャネル分析によって、サイドチャネル電力曲線は、キーの通常のロードと比較して、キーがロードされたときに多くのレジスタ書き込みを示すであろう。
【0018】
本発明では、ランダムおよび真のキーデータは、RAMからのものである。攻撃者が真のデータの正確なRAMアドレスを知らない限り、攻撃者は、真のデータがいつアクセスされるかを知ることができない。また、最新のチップは、追加の保護を形成する暗号化されたアドレスバスを有する。
【0019】
有利な実施形態によれば、この方法は、他の暗号ハードウェアのキーレジスタをさらに選択するステップをさらに備えている。
【0020】
そのような他のレジスタを含めることは、置換を増加させる。したがって、DESキーレジスタが選択され、AESキーレジスタが書き込まれるループに追加され得る。ここでは、考慮される機能に依存して、リストが異なり得ることに注目されたい。特に、そのようなレジスタは、AESキーレジスタ書き込みについてのみ利用可能なレジスタリストへ、追加され、その中から利用可能なレジスタのセットが選択され得る。
【0021】
有利な実施形態によれば、本発明の方法の書き込むステップは、以下のステップ:
− インデクス可能リスト内の各ハードウェアレジスタにロード回数を関連付けるステップ、
− 関連付けられたロード回数と同じ回数、レジスタアドレスをリストするレジスタ書き込みシーケンスを確立するステップ、
− レジスタ書き込みシーケンスをシャッフルし、シャッフルされたレジスタ書き込みシーケンスにおける処理順序を決定するステップ、
− シャッフルされたレジスタ書き込みシーケンスにおける機密データレジスタの最後の発生を識別するステップ、
− シャッフルされたレジスタ書き込みシーケンスにおけるアドレスのすべてのセットについて、各ハードウェアレジスタに、ランダムなデータを書き込むステップ
を備えることを備える。
【0022】
この実施形態は、実装が簡単であり、機密データの一部が書き込まれる機密データハードウェアレジスタのおのおのへの最後の書き込みを除いて、ランダムなデータで、ランダムな回数、ランダムな順序で、各ハードウェアレジスタの必要な書き込みを提供する。
【0023】
レジスタ書き込みシーケンスは、拡大されたインデクス可能レジスタリストに対応する。
【0024】
したがって、本発明による方法は、悪意のある攻撃の危険性を低減することを可能にする。少なくとも、攻撃は、悪意のある攻撃者が実行するのにより複雑である。
【0025】
本発明はまた、本発明の方法を実装するチップと、本発明の方法を実装するための命令を有するコンピュータプログラム製品とに関する。
【0026】
本発明では、ハードウェア挙動と、ハードウェアレジスタにロードされるデータの処理とは、従来技術のものとは異なり、データのオリジナルかつ特定の取扱いとして追跡および観察され得る。
【0027】
前述の目的および関連する目的を達成するために、1つまたは複数の実施形態は、以下で十分に説明され、特許請求の範囲で特に指摘される特徴を備える。
【0028】
以下の説明および添付の図面は、特定の例示的な態様を詳細に説明しており、実施形態の原理が適用され得る様々な手法のうちのいくつかを示しているにすぎない。他の利点および新規な特徴は、図面と併せて考慮すると以下の詳細説明から明らかになるであろうし、開示された実施形態はすべてのそのような態様およびそれらの均等物を含むことが意図される。
【図面の簡単な説明】
【0029】
【
図1】本発明を実装するコンピュータプログラムを取得する方法のフローチャートを概略的に図示する図である。
【
図2】本発明の方法のフローチャートを概略的に図示する図である。
【
図3】本発明の方法の第3のステップの実施形態を概略的に例示する図である。
【
図4】本発明の方法の実装を概略的に例示する図である。
【
図5】本発明の方法のレジスタ書き込みシーケンスシャッフリングステップを概略的に例示する図である。
【発明を実施するための形態】
【0030】
本発明をより完全に理解するために、添付の図面を参照して本発明が詳細に説明される。詳細説明は、本発明の好適な実施形態として考慮されるものを例示し説明する。もちろん、本発明の趣旨から逸脱することなく、形態または詳細における様々な修正および変更が、容易になされ得ることが理解されるべきである。したがって、本発明は、本明細書に図示および説明された正確な形態および詳細に限定されず、また本明細書に開示され、以下に特許請求されるような本発明の全体よりも少ないいずれにも限定されないことが意図される。異なる図面において、同じ要素は同じ参照符号で示される。明確にするために、本発明の理解に有用であるそれらの要素およびステップのみが図面に図示され、説明される。
【0031】
ここではまず、所与の機能を有し、本発明の方法を実装するコンピュータプログラムの詳細について説明する。これは
図1に例示される。第1のステップS1において、機密データKを記憶するレジスタが、チップCH上で識別される。これらはキーレジスタKRと呼ばれる。このステップは、本発明によるコンピュータプログラムの書き込み時に一度行われる。
【0032】
また、チップCH上で利用可能なハードウェアレジスタARのリストが、ステップS2において確立され、これは、書き込まれた場合、所望の機能に影響を及ぼさない。これらは未使用レジスタと呼ばれる。未使用レジスタは、チップアーキテクチャにしたがって、プログラムの機能の実装に対して未使用または機密ではないままであるレジスタを含む。
【0033】
そのような利用可能なハードウェアレジスタARのリストは、本発明を実装するプログラムの書き込み時に一度行われる。
【0034】
その後、以下のステップを実行するために、ステップS3において、コンピュータプログラムCPが書き込まれる。
【0035】
図2は、本発明自体によるプログラムのステップを図示する。
【0036】
第1のステップP1において、利用可能なハードウェアレジスタのセットARsが選択される。たとえば、
図3に図示されるように、6つの利用可能なハードウェアレジスタARが選択される。第2のステップP2において、キーレジスタおよび選択されたハードウェアレジスタは、インデクスを介してアドレス指定可能な1つのアレイRLに配置される。
図3の例では、コンピュータプログラムのこの実行中に使用されるべきレジスタをリストするレジスタリストRLにおいて、インデクス0および1は、キーレジスタKRに帰する一方、利用可能なレジスタは、2から7までインデクス付けされる。この例では、我々は、2つのキーレジスタと、6つの利用可能なレジスタを識別した。したがって、レジスタの総数は8である。
【0037】
レジスタのアドレスを入手するために、アレイレジスタリストRLが、インデクスiによってアクセスされる。ここで、RL[0]は、0x40010880(KR)を与える。RL[1]は、0x40010884(KR)を与える。RL[2]は、0x40010888(AR)を与える。RL[3]は、0x4001088C(AR)を与える。RL[4]は、0x40010890(AR)を与える。RL[5]は、0x40010894(AR)を与える。RL[6]は、0x40010898(AR)を与える。RL[7]は、0x4001089C(AR)を与える。
【0038】
利用可能なハードウェアレジスタのセットの選択は、ソフトウェアの各実行時に有利には行われる。
【0039】
ステップP3は、有効なキーの一部が書き込まれるキーハードウェアレジスタのおのおのにおける最後の書き込みを除いて、各ハードウェアレジスタに、ランダムなデータを、ランダムな回数、ランダムな順序で書き込むループである。ループ内のすべての反復の後、ロードされるキーLDサブパーツが、キーレジスタにロードされた。
【0040】
図3は、本発明の第3のステップの実施形態を例示する。ステップT1において、レジスタリストRLにリストされた各レジスタについて、偽の書き込み数を格納するために、偽の書き込みカウンタFWCのアレイが生成される。
【0041】
偽の書き込みカウンタは、レジスタ毎に要素を備え、最大の偽の書き込みによって制限された乱数で、各要素を初期化する。図示される例では、最大の偽の書き込みは、2である。したがって、FWCにおける各要素は、1または2の値を採り得る。本明細書において、偽の書き込みカウンタFWCは、レジスタリストRLと同じインデクスに関連付けられていることが注目される。
【0042】
偽の書き込みカウンタFWCの各要素は、RLと同じインデクスを有することが保証されているので、FWC[0]を2に初期化することは、ランダムなデータが、0x40010880(KR)に2回書き込まれることを意味し、なぜなら、RL[0]にアクセスすることは、0x40010880を与えるからである。以下は、iでインデクスされた場合のアレイFWC[i]の説明である:
【0043】
FWC[0]=2は、0x40010880(KR)に2回、ランダムなデータを書き込むことを意味する。FWC[1]=1は、0x40010884(KR)に1回、ランダムなデータを書き込むことを意味する。FWC[2]=1は、0x40010888(AR)に1回、ランダムなデータを書き込むことを意味する。FWC[3]=2は、0x4001088C(AR)に2回、ランダムなデータを書き込むことを意味する。FWC[4]=1は、0x40010890(AR)に1回、ランダムなデータを書き込むことを意味する。FWC[5]=2は、0x40010894(AR)に2回、ランダムなデータを書き込むことを意味する。FWC[6]=2は、0x40010898(AR)に2回、ランダムなデータを書き込むことを意味する。FWC[7]=2は、0x4001089C(AR)に2回、ランダムなデータを書き込むことを意味する。
【0044】
次に、
図4にさらに示されるステップT2において、偽の書き込みカウンタFWCを使用して、レジスタリストRL内のレジスタに対するルックアップインデクスで、RWSの各要素を初期化することによって、レジスタ書き込みシーケンスアレイRWSが生成される。
【0045】
このアレイの最大サイズは、偽の書き込みの最大数足す1を乗じられたレジスタの総数である。
【0046】
図4に図示される例では、FWC[0]は2であるので、レジスタ書き込みシーケンスRWSの最初の3つの要素は0である。FWC[1]は1であるので、次の2つの要素は1である。真のキーレジスタKRへの最後の書き込みが、真のキーKの一部であることを保証するために、追加の書き込みが必要とされる。一般に、キー全体を、1つのレジスタに収めることはできない。したがって、各レジスタは、キー全体のチャンクを含んでいる。
【0047】
すべて0の最初の3つの要素は、RL[0](0x40010880−キーレジスタ)が3回、つまり偽のキーを用いて2回および真のキーを用いて1回書き込まれることを意味し、なぜなら、RL[0]は、真のキーレジスタアドレスであるからである。RL[i]が、真のキーレジスタアドレスではない場合、すべての書き込みは、ランダムなデータとなる。
【0048】
ステップT3において、レジスタ書き込みシーケンスRWSにおける要素のシャッフルが実行され、シャッフルレジスタ書き込みシーケンスRWSsが取得される。
【0049】
その後、ステップT4において、レジスタリストRL内のすべてのレジスタにアクセスするために、および、偽および真のキーを、それらに書き込むために、レジスタ書き込みシーケンスRWSs内の要素が使用される。レジスタにアクセスするための疑似コードは、以下の通りである:i=0から、偽の書き込みカウンタFWC[]内のすべての要素の総数まで、RWSs[]にわたってループを実行する。各要素RWSs[]について、j=RWSs[i]が検索される。ランダムなデータが、レジスタRL[j]へ書き込まれる。真のキーレジスタKRへの最後の書き込みに対しては、真のキーが書き込まれ、それ以外の場合、すべての書き込みは、真のキーレジスタに対してもランダムなデータの書き込みである。ステップT4のループの終了時に、ロードされたキーLDが取得される。
【0050】
上記の詳細説明では、本発明が実現され得る特定の実施形態を、例示として図示する添付の図面に対する参照がなされる。これらの実施形態は、当業者が本発明を実現することを可能にするのに十分詳細に説明されている。したがって、上記の詳細説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義され、特許請求の範囲が権利を与えられる均等物の完全な範囲とともに、適切に解釈される。