(57)【要約】本発明は、電子機器製品の処理ユニット、ならびに、たとえばチップ・カードなどの関連付けられたデバイスによる、ソース・コードの実行の保護および防護の分野に関する。本発明は、電子機器製品の処理ユニットによるソース・コードの実行を保護するための方法を提示し、この方法はダミー動作を挿入するステップを含み、ダミー動作の一部は全体に実行しない。【選択図】  図２
2010514032.tif 000002
【特許請求の範囲】
【請求項１】
電子機器製品の処理ユニットによるソース・コード（１１）の実行を保護するための方法であって、前記方法は、ダミー動作（１１１、１１２、１１３、１１４）を挿入するステップを含み、前記ダミー動作の一部が全体に実行されないことを特徴とする、方法。
【請求項２】
前記コンピュータ・コードの２つの実行間で、全体に実行しないダミー動作の数が変更されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記コンピュータ・コードの各実行時に、全体に実行しないダミー動作の前記数が再計算されることを特徴とする、請求項２に記載の方法。
【請求項４】
全体に実行しないダミー動作の数の前記変更が、前記コンピュータ・コードの実行間で予測不可能に変更されることを特徴とする、請求項２または３に記載の方法。
【請求項５】
前記ダミー動作が導入部分および本体を含むことを特徴とする、請求項1乃至4のいずれか一項に記載の方法。
【請求項６】
前記全体に実行しないダミー動作の前記導入部分のみが実行されることを特徴とする、請求項５に記載の方法。
【請求項７】
前記全体に実行しないダミー動作の選択が、前記コンピュータ・コードの各実行時に再定義されることを特徴とする、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記全体に実行しないダミー動作の前記選択が予測不可能であることを特徴とする、請求項１乃至６のいずれか一項に記載の方法。
【請求項９】
請求項１乃至８に記載の方法を実装することを特徴とする、ポータブル製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器製品の処理ユニット、ならびに、たとえばチップ・カードなどのそれに関連付けられたデバイスによる、コンピュータ・コードの実行の保護および防護の分野に関する。
【背景技術】
【０００２】
チップ・カードは、能動的攻撃または受動的攻撃のいずれかによる、多くのハッキング試行の対象である。能動的攻撃は、チップカードの挙動を修正し、ソフトウェア・コードにトラップを仕掛けて他のタイプの実行へと向かわせるように、チップ・カードの集積回路を物理的に妨害するための障害を投入することからなる。
【０００３】
これに対して、たとえばサイドチャネルを介する受動的攻撃では、ハッカーは、チップの実行タスクを習得または推定するために、チップによって放出される供給電流または電磁放射線などの測定可能な数値の統計的分析の実行を試みる。
【０００４】
こうした攻撃を矯正するために、コマンド実行時に、ランダム遅延、すなわち、これらをより複雑にするために持続時間がランダムまたは擬似ランダムに選択される遅延を、こうした攻撃に対する対抗策として使用および挿入することが知られている。実際のところ、こうしたランダム遅延の存在により、プロセスの実行時に、著作権侵害者が障害を投入しなければならない瞬間を決定することを困難にし、著作権侵害者がサイドチャネルの測定を実行するために同期することを防ぐ。
【０００５】
本説明および特許請求の範囲では、「ソース・コード」とは、コンピュータ・アプリケーションの全体または一部を形成する一連の実行可能命令を意味する。
【０００６】
同様に、「実行済みコード」とは、対応するアプリケーションの全体または一部の実行時に、プロセッサによって実際に実行された一連の命令を意味する。
【０００７】
ソース・コードには、当該コードの通常の実行にその結果が必要でないコード部分を、挿入されることが知られている。これらのコード部分は、一般に「デコイ（decoy）」と呼ばれる。これらデコイの特徴は、サイドチャネルの分析時に、それらが真の重要なコード・シーケンスに見えるという点にある。
【０００８】
こうした対抗策（デコイまたはランダム遅延）の共通の目的は、著作権侵害者によるプログラム実行の正確な理解あるいは予測またはその両方を防ぐことによって、外部からの攻撃をより困難にするという点にある。
【０００９】
チップによるソース・コードの実行時に、こうした対抗策は複数の場所で頻繁に挿入される。とりわけ、繊細または危険な動作（メモリへの書き込み／メモリからの読み取り、暗号化計算、意思決定アルゴリズムなど）の実行を、こうした対抗策で保護することがわかっている。実際のところ、これらの繊細な動作は著作権侵害者によって数多く請求（solicit）され、多くの対抗策すべてを、こうした繊細な動作に先立って、またはそれらの間に、ソース・コードの実行に沿って挿入することが正しいと思われる。
【００１０】
この解決策の欠点は、サイドチャネルの分析時に、これらの対抗策をほとんど不可視にするという努力にもかかわらず、それらの存在が識別可能である、という事実にある。これらの対抗策は、一般に、不可欠なソース・コード・シーケンス近くに配置されるため、それらを検出することによって、極めて重要なポイントのできる限り近くに攻撃を配置することができる。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、実際に実施される対抗策の数を実行間で変えることによって、この欠点を解決することを目的とする。
【課題を解決するための手段】
【００１２】
このために、本発明は第１に、電子機器製品の処理ユニットによるソース・コードの実行を保護するための方法を目的とし、この方法はダミー動作を挿入するステップを含み、ダミー動作の一部は全体に実行しない。以下の説明で、これら特定のダミー動作は「部分対抗策」と呼ばれる。
【００１３】
部分対抗策の数は、当該の２つのプログラム実行間で異なる可能性がある。これらの変更は、計算規則に従って、または予測不可能な方法で、発生する可能性がある。予測不可能な情報項目を取得するための可能な方法は、これをランダムに生成することである。
【００１４】
この目的を達成するために、本発明は、１つは導入部分、１つは本体と呼ばれることになる２つの部分に、対抗策を切断するステップを提供する。部分的にのみ実行する対抗策は、その導入部分のみを実行する。
【００１５】
好ましくは、部分対抗策の数が定義される場合、部分的になる対抗策の選択は、定義済み規則に従って、または予測不可能に、実行することができる。
【００１６】
本発明の他の特徴および利点は、限定ではなく指標として示された以下の説明を読むこと、および添付の図面を参照することによって、明らかとなろう。
【図面の簡単な説明】
【００１７】
【図１】本発明に従った、対抗策を含む例示的ソース・コード部分を示す図である。
【図２】図１と同じコード部分から生じる、図３の実行とは異なる、実際に実行されたコードを示す図である。
【図３】図１と同じコード部分から生じる、図２の実行とは異なる、実際に実行されたコードを示す図である。
【発明を実施するための形態】
【００１８】
図１は、本発明に従った、対抗策を含む例示的ソース・コード部分を示す。
【００１９】
この図は、対抗策１１２が挿入されたソース・コード１１を示す。対抗策１１２は、導入部分１５が先行する本体１６を含む。同様に、第２の対抗策１１４は、その導入部分１７が先行する本体１８を含む。第３の特定の対抗策１１１は、２つの本体１３および１４と、その導入部分１２とからなる。この図は、対抗策１１１と同一の構成を有する、第４の対抗策１１３をさらに含む。
【００２０】
この例示的実施形態では、４つの対抗策１１１から１１４がソース・コード１１に挿入される。本発明によれば、これらの対抗策は２つの部分に分割可能である。導入部分は常にアプリケーションによって実行されることに留意されたい。ハッカーが存在する場合、そのハッカーによって対抗策が識別されるのを防ぐために、これらの導入部分は、それらのサイズに関して最小限にまで縮小されなければならない。
【００２１】
好ましい実施形態では、導入部分は、コードの経過中にすでに規則正しく呼び出された命令の呼び出しに限定されることになる。これらの現行の命令は、たとえば、マイクロプロセッサの汎用レジスタにおける修正、または内部変数の修正である。その目的は、サイドチャネルの分析時に、対抗策の導入部分と実行済みコードとを区別できないことである。
【００２２】
この実施形態では、特定の対抗策１１１および１１３が見られる。これらの対抗策には、１つのみの導入部分１２に対していくつかの本体１３および１４を有するという特徴がある。それぞれの本体１３および１４は、たとえば遅延またはデコイなどの、独立した対抗策である。したがって導入部分１２は、本体を実行するか否かを決定することになるが、使用可能な本体のどちらを実行するかについても決定することになる。
【００２３】
図２は、図１のコードの実行を示し、ここで活動化されることになる対抗策の数は２つである。この図は実行済みコード２１を示し、これには、本体１６および導入部分１５を含む１つの対抗策１２２、本体２４および導入部分２３を含む第１の対抗策１２３、ならびに、１つの導入部分１２のみを含む対抗策１２１と、導入部分１７のみを含む１つの対抗策１２４という、２つの他の特定の対抗策が含まれる。この実行では、対抗策１２１および１２４が部分的にのみ実行されることがわかり、実際に、導入部分のみが実行されている。対抗策１２２は全体が実行され、対抗策１２３は可能な本体のうちの１つで実行される。
【００２４】
図３は、図１のコードの他の実行を示し、ここで活動化されることになる対抗策の数は２つである。この図は実行済みコード２１を示し、これには、本体１３および導入部分１２を含む第１の対抗策１３１、本体１８およびその導入部分１７を含む第２の対抗策１３４、ならびに、１つの導入部分１５のみを含む対抗策１３２と、１つの導入部分２３を含む１つの対抗策１３３という、２つの他の特定の対抗策が含まれる。この実行中には、対抗策１３２および１３３は部分的にのみ実行され、実際に、その導入部分のみが実行されている。対抗策１３４は標準的に実行され、対抗策１３１は可能な本体のうちの１つで実行される。
【００２５】
図２および図３を見ると、実行間で、すべての対抗策は、場所、コード、持続時間、あるいはその性質における変更が可能であることがわかる。この対抗策のセットが、コードのサイドチャネル分析をさらに大幅に困難にすることになる。加えて、同じコードの連続的な実行が非常に異なるものになるため、トラップ・ポイントをみつけることが極端に複雑になる。
【００２６】
一実施形態では、使用される対抗策はランダム遅延であり、以下ではＲｎｄと短縮される。この機能は、以下の２つの部分に分割可能である。
‐存在する場合は、機能の呼び出し、何らかのメモリ処理を含む、導入部分
‐ランダム・ジェネレータの活動化、およびランダム変数の実際の取り出し（drawing）を含む、機能本体
【００２７】
コードの作成時に、プログラマは、コード内のほとんどあらゆる場所に多数のＲｎｄを挿入するためのポイントを作成した。たとえば、本発明を実装していない、サイドチャネル攻撃に対して保護されたいわゆる保護標準コードの、およそ３倍のＲｎｄが挿入された。したがって、これらのＲｎｄの３分の１のみを全体に実行することによって、保護されたコードは、その実行時に、従来のＲｎｄによって保護されたコードとほぼ同じ速度になり、すべてが全体に実行されるが、安全性は格段に向上する。
【００２８】
一実施形態では、プログラム開始時に、以下の２つのランダム値が取り出される。
‐全体に実行することになるＲｎｄの数を定義できるようにする「ｎｂｒ」値
‐どのラウンドを全体に実行することになるかを指定できるようにする「ｗｃｈ」値
したがって、コードの実行時、Ｒｎｄのそれぞれの実行時に、Ｒｎｄ機能それ自体が、その導入部分の実行中にｗｃｈ値およびｎｂｒ値をテストし、機能の本体を実行させるか否かを決定する。
【００２９】
本発明の他の実施形態は、材料の対抗策に関する。知られた対抗策の用途は、暗号化アクセラレータ（ＡＣ）あるいは乱数ジェネレータまたはその両方などの、周辺メンバのダミー活動化にある。本発明は、対抗策の導入部分と比較可能な、多数のＡＣの潜在的な活動化サイトを配置する。対抗策の本体と比較可能なＡＣは、一部の場所でのみ活動化されることになる。
【００３０】
本発明の好ましい一実施形態では、すべてが、２つの実行間でどの位置が活動化されることになるかを予測不可能なように作成される。
【００３１】
本発明の好ましい一実施形態では、本発明はチップ・カードなどのポータブル・デバイスに実装されることになる。
【図１】
2010514032.tif 000003
【図２】
2010514032.tif 000004
【図３】
2010514032.tif 000005
【国際調査報告】
2010514032.tif 000006
2010514032.tif 000007
2010514032.tif 000008
2010514032.tif 000009
2010514032.tif 000010
2010514032.tif 000011