(57)【要約】  本発明は、ハードウェア暗号動作をサポートするチップ（ＣＨ）上で、機密データ（Ｋ）を機密データハードウェアレジスタ（ＫＲ）のセットに安全にロードする方法に関し、前記方法は、ソフトウェアの各実行時に、ソフトウェア命令によってモニタされる以下のステップ：チップアーキテクチャにおいて、未使用のハードウェアレジスタと、機密データを取り扱わず、ロードされる時にチップ機能を妨害しない他の適切なハードウェアレジスタとをリストしている、事前定義されたリストにリストされた利用可能なハードウェアレジスタ（ＡＲ）のセット（ＡＲｓ）を選択する（Ｐ１）、機密データハードウェアレジスタ（ＫＲ）と、利用可能なハードウェアレジスタのセット（ＡＲｓ）内のハードウェアレジスタとのアドレスのインデクス可能レジスタリスト（ＲＬ）を確立する（Ｐ２）、ループにおいて、機密データ（Ｋ）の一部が書き込まれる機密データハードウェアレジスタ（ＫＲ）のおのおのにおける最後の書き込みを除いて、ランダムなデータを、ランダムな回数、ランダムな順序で、このレジスタリスト（ＲＬ）における各ハードウェアレジスタに書き込む（Ｐ３）を備える。
2019519866.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア暗号動作をサポートするチップ（ＣＨ）上で、機密データ（Ｋ）を機密データハードウェアレジスタ（ＫＲ）のセットに安全にロードする方法であって、前記方法は、ソフトウェアの各実行時に、ソフトウェア命令によってモニタされる以下のステップ：
チップアーキテクチャにおいて、未使用のハードウェアレジスタと、機密データを取り扱わず、ロードされる時にチップ機能を妨害しない他の適切なハードウェアレジスタとをリストしている、事前定義されたリストにリストされた利用可能なハードウェアレジスタ（ＡＲ）のセット（ＡＲｓ）を選択するステップ（Ｐ１）、
機密データハードウェアレジスタ（ＫＲ）と、利用可能なハードウェアレジスタのセット（ＡＲｓ）内のハードウェアレジスタとのアドレスのインデクス可能レジスタリスト（ＲＬ）を確立するステップ（Ｐ２）、
ループにおいて、機密データ（Ｋ）の一部が書き込まれる機密データハードウェアレジスタ（ＫＲ）のおのおのにおける最後の書き込みを除いて、ランダムなデータを、ランダムな回数、ランダムな順序で、このレジスタリスト（ＲＬ）における各ハードウェアレジスタに書き込むステップ（Ｐ３）を備える、方法。
【請求項２】
他の暗号ハードウェアのキーレジスタをさらに選択するステップを備える、請求項１に記載の方法。
【請求項３】
書き込むステップ（Ｐ３）が、以下のステップ：
−  インデクス可能レジスタリスト（ＲＬ）内の各ハードウェアレジスタにロード回数（ＦＷＣ）を関連付けるステップ（Ｔ１）、
−  関連付けられたロード回数（ＦＷＣ）と同じ回数、レジスタアドレスをリストするレジスタ書き込みシーケンス（ＲＷＳ）を確立するステップ（Ｔ２）、
−  レジスタ書き込みシーケンス（ＲＷＳ）をシャッフルし（Ｔ３）、シャッフルされたレジスタ書き込みシーケンス（ＲＷＳｓ）における処理順序を決定するステップ、
−  シャッフルされたレジスタ書き込みシーケンス（ＲＷＳｓ）における機密データレジスタ（ＫＲ）の最後の発生を識別するステップ、
−  シャッフルされたレジスタ書き込みシーケンスにおけるアドレスのすべてのセットについて、各ハードウェアレジスタに、ランダムなデータを書き込むステップを備える、請求項１に記載の方法。
【請求項４】
請求項１または２の方法を実装するチップ（ＣＨ）。
【請求項５】
請求項１から３のいずれか一項に記載の方法を実装するための命令を有するコンピュータプログラム製品（ＣＰ）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア暗号動作をサポートするチップ上で、機密データハードウェアレジスタのセットに安全にロードする方法に関する。
【０００２】
本発明はまた、前記方法を実装するチップと、本発明の方法を実装するための命令を有するコンピュータプログラム製品とに関する。
【背景技術】
【０００３】
ハードウェア暗号動作をサポートするチップは、セキュリティ上重要なデータがハードウェアレジスタにロードされる必要がある。たとえば、ＡＥＳ暗号化は、ハードウェアレジスタへの、キーおよびデータのローディングが必要である。
【０００４】
ハードウェア自体は、計算を保護するが、キーのローディングは、サイドチャネル攻撃を受けやすいため、ハードウェアレジスタへのキーのローディングは重要である。サイドチャネル攻撃は、チップによって漏洩されたサイド情報に基づいて仕掛けられるあらゆる攻撃である。サイドチャネル攻撃は、ブルートフォース、またはアルゴリズムにおける理論上の弱点ではなく、暗号システムの物理的な実装から得られる情報に基づくあらゆる攻撃である。たとえば、タイミング情報、電力消費量、電磁的漏洩、あるいは音さえもが、システムを破壊するために悪用される可能性がある追加の情報源を提供する可能性がある。
【０００５】
自由にプログラムされ得る同一の実験デバイスにアクセスすることによって、同様の攻撃が仕掛けられ得る。これらの攻撃はテンプレート攻撃と呼ばれる。そのような攻撃のために、攻撃者は、攻撃されたカードからの１つのサイドチャネル曲線しか必要としない。
【０００６】
安全なローディングを提供する特定のハードウェア対策がある。たとえば、クロックジッタは、可能なハードウェア対策のうちの１つである。クロックジッタとは、振幅が一定であるが、周期がオリジナルからわずかに変化する変動クロック信号を称し、これは、攻撃者によって推定される周期信号の周期性からのクロックの偏差を伴うことによって、サイドチャネル分析を困難にする。
【０００７】
可能性のある別のハードウェア解決策は、マスクされたキーローディングを有することである。これは、セキュリティ上重要なデータが、ハードウェアにロードされる前にマスクされ、ハードウェアは、計算中にそのマスクを除去することを、意味する。
【０００８】
しかし、これらの対策は、チップ製造者によってのみ実装され得、ソフトウェアによってのみ有効化／無効化され得る。
【０００９】
したがって、特定のチップではキーのローディングは安全ではなく、何故なら、ハードウェアが、マスクされたキーローディング、すなわち、ハードウェアレジスタにロードされる前にマスクされたキーと、ハードウェア自体において除去されるマスク、またはクロックジッタ、すなわち、周期的信号からクロックの偏差の適用、もしくは、他のハードウェア対策の適用をサポートしないからである。これは、サイドチャネル攻撃によってキーが検索され得るというセキュリティ上の問題を引き起こす。
【００１０】
したがって、さらなる代替的で有利な解決策が、当該技術分野において所望される。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、従来技術の解決策の場合とは逆に、特定のハードウェア要件を含めることなく、機密データローディングを安全にすることを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、その最も広い意味において、ハードウェア暗号動作をサポートするチップ上で、機密データを機密データハードウェアレジスタのセットに安全にロードする方法として定義され、前記方法は、ソフトウェアの各実行時に、ソフトウェア命令によってモニタされる以下のステップを備える：
チップアーキテクチャにおいて、未使用のハードウェアレジスタと、機密データを取り扱わず、ロードされる時にチップ機能を妨害しない他の適切なハードウェアレジスタとをリストしている、事前定義されたリストにリストされた利用可能なハードウェアレジスタのセットを選択するステップ、
機密データハードウェアレジスタと、利用可能なハードウェアレジスタのセット内のハードウェアレジスタとのアドレスのインデクス可能レジスタリストを確立するステップ、
ループにおいて、機密データの一部が書き込まれる機密データハードウェアレジスタのおのおのにおける最後の書き込みを除いて、ランダムなデータを、ランダムな回数、ランダムな順序で、このレジスタリストにおける各ハードウェアレジスタに書き込むステップ。この発明はまた、機密レジスタへの書き込みが、２回以上のアクションを行うハードウェアチップにも適合し、少なくとも１つのアクションは、本発明の原理に従って実行される。
【００１３】
本発明において提案される解決策は、純粋にソフトウェアであり、ハードウェア対策の有無に関わらず使用され得る。ハードウェア対策と併用されると、セキュリティが強化される。
【００１４】
本発明を用いて、ランダムなデータの、ランダムな順序でのレジスタのローディングは、真のキー書き込みをスクランブルする。さらに、キー／機密データレジスタへのランダムなデータの書き込みは、ランダムなシーケンスによる順序と、レジスタ当たりのランダムな書き込み回数による期間との両方において、獲得される各サイドチャネル情報を異なるものにする。
【００１５】
攻撃者は、真のキー／機密データが、真のキーレジスタに書き込まれたときを識別できず、これは、ＳＰＡ（Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）およびテンプレートのようなサイドチャネル攻撃を阻止するであろう。キーローディングのソフトウェアランダム化は、これらの攻撃に対する保護を提供する。
【００１６】
本発明はソフトウェアベースの解決策であるので、スタンドアロンで使用され得、ハードウェア対策に加えて使用されるならば、セキュリティをよりさらに高めるであろう。
【００１７】
本発明を実装するチップのサイドチャネル分析によって、サイドチャネル電力曲線は、キーの通常のロードと比較して、キーがロードされたときに多くのレジスタ書き込みを示すであろう。
【００１８】
本発明では、ランダムおよび真のキーデータは、ＲＡＭからのものである。攻撃者が真のデータの正確なＲＡＭアドレスを知らない限り、攻撃者は、真のデータがいつアクセスされるかを知ることができない。また、最新のチップは、追加の保護を形成する暗号化されたアドレスバスを有する。
【００１９】
有利な実施形態によれば、この方法は、他の暗号ハードウェアのキーレジスタをさらに選択するステップをさらに備えている。
【００２０】
そのような他のレジスタを含めることは、置換を増加させる。したがって、ＤＥＳキーレジスタが選択され、ＡＥＳキーレジスタが書き込まれるループに追加され得る。ここでは、考慮される機能に依存して、リストが異なり得ることに注目されたい。特に、そのようなレジスタは、ＡＥＳキーレジスタ書き込みについてのみ利用可能なレジスタリストへ、追加され、その中から利用可能なレジスタのセットが選択され得る。
【００２１】
有利な実施形態によれば、本発明の方法の書き込むステップは、以下のステップ：
−  インデクス可能リスト内の各ハードウェアレジスタにロード回数を関連付けるステップ、
−  関連付けられたロード回数と同じ回数、レジスタアドレスをリストするレジスタ書き込みシーケンスを確立するステップ、
−  レジスタ書き込みシーケンスをシャッフルし、シャッフルされたレジスタ書き込みシーケンスにおける処理順序を決定するステップ、
−  シャッフルされたレジスタ書き込みシーケンスにおける機密データレジスタの最後の発生を識別するステップ、
−  シャッフルされたレジスタ書き込みシーケンスにおけるアドレスのすべてのセットについて、各ハードウェアレジスタに、ランダムなデータを書き込むステップ
を備えることを備える。
【００２２】
この実施形態は、実装が簡単であり、機密データの一部が書き込まれる機密データハードウェアレジスタのおのおのへの最後の書き込みを除いて、ランダムなデータで、ランダムな回数、ランダムな順序で、各ハードウェアレジスタの必要な書き込みを提供する。
【００２３】
レジスタ書き込みシーケンスは、拡大されたインデクス可能レジスタリストに対応する。
【００２４】
したがって、本発明による方法は、悪意のある攻撃の危険性を低減することを可能にする。少なくとも、攻撃は、悪意のある攻撃者が実行するのにより複雑である。
【００２５】
本発明はまた、本発明の方法を実装するチップと、本発明の方法を実装するための命令を有するコンピュータプログラム製品とに関する。
【００２６】
本発明では、ハードウェア挙動と、ハードウェアレジスタにロードされるデータの処理とは、従来技術のものとは異なり、データのオリジナルかつ特定の取扱いとして追跡および観察され得る。
【００２７】
前述の目的および関連する目的を達成するために、１つまたは複数の実施形態は、以下で十分に説明され、特許請求の範囲で特に指摘される特徴を備える。
【００２８】
以下の説明および添付の図面は、特定の例示的な態様を詳細に説明しており、実施形態の原理が適用され得る様々な手法のうちのいくつかを示しているにすぎない。他の利点および新規な特徴は、図面と併せて考慮すると以下の詳細説明から明らかになるであろうし、開示された実施形態はすべてのそのような態様およびそれらの均等物を含むことが意図される。
【図面の簡単な説明】
【００２９】
【図１】本発明を実装するコンピュータプログラムを取得する方法のフローチャートを概略的に図示する図である。
【図２】本発明の方法のフローチャートを概略的に図示する図である。
【図３】本発明の方法の第３のステップの実施形態を概略的に例示する図である。
【図４】本発明の方法の実装を概略的に例示する図である。
【図５】本発明の方法のレジスタ書き込みシーケンスシャッフリングステップを概略的に例示する図である。
【発明を実施するための形態】
【００３０】
本発明をより完全に理解するために、添付の図面を参照して本発明が詳細に説明される。詳細説明は、本発明の好適な実施形態として考慮されるものを例示し説明する。もちろん、本発明の趣旨から逸脱することなく、形態または詳細における様々な修正および変更が、容易になされ得ることが理解されるべきである。したがって、本発明は、本明細書に図示および説明された正確な形態および詳細に限定されず、また本明細書に開示され、以下に特許請求されるような本発明の全体よりも少ないいずれにも限定されないことが意図される。異なる図面において、同じ要素は同じ参照符号で示される。明確にするために、本発明の理解に有用であるそれらの要素およびステップのみが図面に図示され、説明される。
【００３１】
ここではまず、所与の機能を有し、本発明の方法を実装するコンピュータプログラムの詳細について説明する。これは図１に例示される。第１のステップＳ１において、機密データＫを記憶するレジスタが、チップＣＨ上で識別される。これらはキーレジスタＫＲと呼ばれる。このステップは、本発明によるコンピュータプログラムの書き込み時に一度行われる。
【００３２】
また、チップＣＨ上で利用可能なハードウェアレジスタＡＲのリストが、ステップＳ２において確立され、これは、書き込まれた場合、所望の機能に影響を及ぼさない。これらは未使用レジスタと呼ばれる。未使用レジスタは、チップアーキテクチャにしたがって、プログラムの機能の実装に対して未使用または機密ではないままであるレジスタを含む。
【００３３】
そのような利用可能なハードウェアレジスタＡＲのリストは、本発明を実装するプログラムの書き込み時に一度行われる。
【００３４】
その後、以下のステップを実行するために、ステップＳ３において、コンピュータプログラムＣＰが書き込まれる。
【００３５】
図２は、本発明自体によるプログラムのステップを図示する。
【００３６】
第１のステップＰ１において、利用可能なハードウェアレジスタのセットＡＲｓが選択される。たとえば、図３に図示されるように、６つの利用可能なハードウェアレジスタＡＲが選択される。第２のステップＰ２において、キーレジスタおよび選択されたハードウェアレジスタは、インデクスを介してアドレス指定可能な１つのアレイＲＬに配置される。図３の例では、コンピュータプログラムのこの実行中に使用されるべきレジスタをリストするレジスタリストＲＬにおいて、インデクス０および１は、キーレジスタＫＲに帰する一方、利用可能なレジスタは、２から７までインデクス付けされる。この例では、我々は、２つのキーレジスタと、６つの利用可能なレジスタを識別した。したがって、レジスタの総数は８である。
【００３７】
レジスタのアドレスを入手するために、アレイレジスタリストＲＬが、インデクスｉによってアクセスされる。ここで、ＲＬ［０］は、０ｘ４００１０８８０（ＫＲ）を与える。ＲＬ［１］は、０ｘ４００１０８８４（ＫＲ）を与える。ＲＬ［２］は、０ｘ４００１０８８８（ＡＲ）を与える。ＲＬ［３］は、０ｘ４００１０８８Ｃ（ＡＲ）を与える。ＲＬ［４］は、０ｘ４００１０８９０（ＡＲ）を与える。ＲＬ［５］は、０ｘ４００１０８９４（ＡＲ）を与える。ＲＬ［６］は、０ｘ４００１０８９８（ＡＲ）を与える。ＲＬ［７］は、０ｘ４００１０８９Ｃ（ＡＲ）を与える。
【００３８】
利用可能なハードウェアレジスタのセットの選択は、ソフトウェアの各実行時に有利には行われる。
【００３９】
ステップＰ３は、有効なキーの一部が書き込まれるキーハードウェアレジスタのおのおのにおける最後の書き込みを除いて、各ハードウェアレジスタに、ランダムなデータを、ランダムな回数、ランダムな順序で書き込むループである。ループ内のすべての反復の後、ロードされるキーＬＤサブパーツが、キーレジスタにロードされた。
【００４０】
図３は、本発明の第３のステップの実施形態を例示する。ステップＴ１において、レジスタリストＲＬにリストされた各レジスタについて、偽の書き込み数を格納するために、偽の書き込みカウンタＦＷＣのアレイが生成される。
【００４１】
偽の書き込みカウンタは、レジスタ毎に要素を備え、最大の偽の書き込みによって制限された乱数で、各要素を初期化する。図示される例では、最大の偽の書き込みは、２である。したがって、ＦＷＣにおける各要素は、１または２の値を採り得る。本明細書において、偽の書き込みカウンタＦＷＣは、レジスタリストＲＬと同じインデクスに関連付けられていることが注目される。
【００４２】
偽の書き込みカウンタＦＷＣの各要素は、ＲＬと同じインデクスを有することが保証されているので、ＦＷＣ［０］を２に初期化することは、ランダムなデータが、０ｘ４００１０８８０（ＫＲ）に２回書き込まれることを意味し、なぜなら、ＲＬ［０］にアクセスすることは、０ｘ４００１０８８０を与えるからである。以下は、ｉでインデクスされた場合のアレイＦＷＣ［ｉ］の説明である：
【００４３】
ＦＷＣ［０］＝２は、０ｘ４００１０８８０（ＫＲ）に２回、ランダムなデータを書き込むことを意味する。ＦＷＣ［１］＝１は、０ｘ４００１０８８４（ＫＲ）に１回、ランダムなデータを書き込むことを意味する。ＦＷＣ［２］＝１は、０ｘ４００１０８８８（ＡＲ）に１回、ランダムなデータを書き込むことを意味する。ＦＷＣ［３］＝２は、０ｘ４００１０８８Ｃ（ＡＲ）に２回、ランダムなデータを書き込むことを意味する。ＦＷＣ［４］＝１は、０ｘ４００１０８９０（ＡＲ）に１回、ランダムなデータを書き込むことを意味する。ＦＷＣ［５］＝２は、０ｘ４００１０８９４（ＡＲ）に２回、ランダムなデータを書き込むことを意味する。ＦＷＣ［６］＝２は、０ｘ４００１０８９８（ＡＲ）に２回、ランダムなデータを書き込むことを意味する。ＦＷＣ［７］＝２は、０ｘ４００１０８９Ｃ（ＡＲ）に２回、ランダムなデータを書き込むことを意味する。
【００４４】
次に、図４にさらに示されるステップＴ２において、偽の書き込みカウンタＦＷＣを使用して、レジスタリストＲＬ内のレジスタに対するルックアップインデクスで、ＲＷＳの各要素を初期化することによって、レジスタ書き込みシーケンスアレイＲＷＳが生成される。
【００４５】
このアレイの最大サイズは、偽の書き込みの最大数足す１を乗じられたレジスタの総数である。
【００４６】
図４に図示される例では、ＦＷＣ［０］は２であるので、レジスタ書き込みシーケンスＲＷＳの最初の３つの要素は０である。ＦＷＣ［１］は１であるので、次の２つの要素は１である。真のキーレジスタＫＲへの最後の書き込みが、真のキーＫの一部であることを保証するために、追加の書き込みが必要とされる。一般に、キー全体を、１つのレジスタに収めることはできない。したがって、各レジスタは、キー全体のチャンクを含んでいる。
【００４７】
すべて０の最初の３つの要素は、ＲＬ［０］（０ｘ４００１０８８０−キーレジスタ）が３回、つまり偽のキーを用いて２回および真のキーを用いて１回書き込まれることを意味し、なぜなら、ＲＬ［０］は、真のキーレジスタアドレスであるからである。ＲＬ［ｉ］が、真のキーレジスタアドレスではない場合、すべての書き込みは、ランダムなデータとなる。
【００４８】
ステップＴ３において、レジスタ書き込みシーケンスＲＷＳにおける要素のシャッフルが実行され、シャッフルレジスタ書き込みシーケンスＲＷＳｓが取得される。
【００４９】
その後、ステップＴ４において、レジスタリストＲＬ内のすべてのレジスタにアクセスするために、および、偽および真のキーを、それらに書き込むために、レジスタ書き込みシーケンスＲＷＳｓ内の要素が使用される。レジスタにアクセスするための疑似コードは、以下の通りである：ｉ＝０から、偽の書き込みカウンタＦＷＣ［］内のすべての要素の総数まで、ＲＷＳｓ［］にわたってループを実行する。各要素ＲＷＳｓ［］について、ｊ＝ＲＷＳｓ［ｉ］が検索される。ランダムなデータが、レジスタＲＬ［ｊ］へ書き込まれる。真のキーレジスタＫＲへの最後の書き込みに対しては、真のキーが書き込まれ、それ以外の場合、すべての書き込みは、真のキーレジスタに対してもランダムなデータの書き込みである。ステップＴ４のループの終了時に、ロードされたキーＬＤが取得される。
【００５０】
上記の詳細説明では、本発明が実現され得る特定の実施形態を、例示として図示する添付の図面に対する参照がなされる。これらの実施形態は、当業者が本発明を実現することを可能にするのに十分詳細に説明されている。したがって、上記の詳細説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義され、特許請求の範囲が権利を与えられる均等物の完全な範囲とともに、適切に解釈される。
【図１】
2019519866.tif 000003
【図２】
2019519866.tif 000004
【図３】
2019519866.tif 000005
【図４】
2019519866.tif 000006
【図５】
2019519866.tif 000007
【国際調査報告】
2019519866.tif 000008
2019519866.tif 000009