(57)【要約】  本発明は、電子部品について演算を実行するための少なくとも１つの作業メモリ領域（Ｗ）を有する前記電子部品の２つのメモリ領域（Ｗ，Ｒ１，Ｒ２）間のデータ（Ａ，Ｂ）を処理し、前記データの少なくとも１つを稼働させるための方法に関する。本方法は、実行する演算に関わらず、演算を実行するための同一のメモリ領域の使用を含み、各演算がこの電子部品外へのロケーション漏洩に関して同一の秘匿信号トレースを有することを特徴とする。【選択図】  図１
2009515449.tif 000002
【特許請求の範囲】
【請求項１】
演算を実行するための少なくとも１つの作業メモリ領域（Ｗ）を有する電子部品のメモリ領域（Ｗ，Ｒ１，Ｒ２）間のデータ（Ａ，Ｂ）を処理し、前記データの少なくとも１つを稼働させるための方法であって、実行する演算に関わらず、演算を実行するための同一のメモリ領域の使用を含み、各演算がこの電子部品外へのロケーション漏洩に関して同一の秘匿信号トレースを有することを特徴とする方法。
【請求項２】
演算の実行に先立って、使用するメモリ領域を前記演算内のオペランドとしての働きをするデータで構成するステップを含み、前記メモリ領域の構成ステップが、実行する演算によって変化することを特徴とする、請求項１に記載の方法。
【請求項３】
メモリ領域を構成するステップが、前記データの１つ（ＡまたはＢ）を作業メモリ領域（Ｗ）にコピーするステップを含み、前記データ（ＡまたはＢ）をコピーするステップが、その実行時に秘匿されかつランダムであることを特徴とする、請求項２に記載の方法。
【請求項４】
前記データ（Ａ，Ｂ）を含むメモリ領域（Ｒ１，Ｒ２）が、前記データの１つ（ＡまたはＢ）を作業メモリ領域（Ｗ）にコピーするステップの間に、同時にアクティブであることを特徴とする、請求項３に記載の方法。
【請求項５】
前記データの１つ（ＡまたはＢ）を作業メモリ領域（Ｗ）にコピーするステップが、それぞれのメモリ領域（Ｒ１，Ｒ２）内の前記データ（Ａ，Ｂ）の要素にランダム変数（ｔ）に依存する順序で連続的にアクセスするステップと、前記データ要素の１つを前記作業メモリ領域にコピーするデータに対応するデータ要素で置き換えながら、前記作業メモリ領域（Ｗ）に前記要素をコピーするステップとを含むことを特徴とする、請求項３または４に記載の方法。
【請求項６】
実行される前記演算が、公開鍵暗号アルゴリズムの実行範囲で必要な演算であることを特徴とする、請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記公開鍵暗号アルゴリズムがＲＳＡタイプであることを特徴とする、請求項６に記載の方法。
【請求項８】
前記演算が、モジュラーべき乗に使用する二乗および乗算演算であることを特徴とする、請求項７に記載の方法。
【請求項９】
ハードウェアで実行されることを特徴とする、請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
前記電子部品が、チップカード、チップカード読み取り装置またはＴＰＭ（トラステッドプラットフォームモジュール）であることを特徴とする、請求項１乃至９のいずれか１項に記載の方法を実行するためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理中、通常、電子部品上の暗号アルゴリズム実行中のコバートチャネル攻撃を阻止するための方法に関する。これらのアルゴリズムは、秘密鍵または公開鍵アルゴリズムであってもよい。
【背景技術】
【０００２】
上記電子部品は、より詳細には、サービスまたはデータへのアクセスがチェックされる暗号用途などの用途に使用される。
上記電子部品は、マイクロプロセッサおよびメモリ周辺にプログラマブルアーキテクチャを形成し、そのメモリには、１つまたは複数の秘密データを含む揮発性プログラマブルメモリまたは不揮発性メモリが含まれる。これは、任意のアルゴリズムを実行することができるゼネラリストアーキテクチャである。
【０００３】
上記電子部品は、組み込みまたは非組み込みコンピュータシステムで使用される。それらは、特に、チップカードの一部の用途でチップカードで使用される。これらは、例えば、銀行用途、ならびに例えばＳＩＭカードおよび遠隔支払い用途（例えば、テレビジョン用）を含む携帯電話用途などである。
それ故、上記電子部品または上記カードは、暗号アルゴリズムを実行して、メッセージの暗号化（機密を維持しなければならない場合）またはメッセージの認証またはディジタル署名（否認防止が望ましい場合）を実行する。
【０００４】
ホストシステム（サーバ、銀行自動支払機）を通したカードへの入力として加えられるこのメッセージと、カードに含まれる秘密の図形を始め、カードがホストシステムにこの暗号化されたまたは署名されたメッセージを提供する。これによって、例えば、ホストシステムは、電子部品またはカードを認証したり、データを交換することができる。
上記暗号アルゴリズムの安全性は、カード内に含まれ、カードの外部には知られない１つまたは複数の秘密番号と、その秘密番号を使用する方法にある。
【０００５】
現在、電子部品が暗号アルゴリズムを実行中に、電子部品の外部からの計測可能な物理的変数に基づく外部攻撃によって、悪意のある第３者が、カードに含まれる１つまたは複数の秘密番号またはデータを見つけることができるように思われる。上記攻撃はサイドチャネル解析と呼ばれ、情報が漏洩する可能性がある追加のチャネルの存在を考慮に入れている。使用される物理信号は、より詳細には、電子部品の電磁放射、電気消費または演算時間である。
【０００６】
上記サイドチャネル解析のうち、１つまたは複数の手段に基づくＳＰＡ（単純電力解析）攻撃と、いくつかの測定値からの統計解析に基づくＤＰＡ（差分電力解析）攻撃とを区別することができる。上記攻撃は、例えば、命令を実行しているマイクロプロセッサの消費電力が処理する命令またはデータによって変動するという事実に基づいている。
暗号アルゴリズムの実行に一定の役割を果たす機能を実行するためのデータ処理中に、ハッカーは、アクティブまたは非アクティブなメモリ領域を突き止めることで、どの１つまたは複数のレジスタが使用されたか、または使用されているかを知ることができる（例えば、電流に関してまたは電磁的な観点からのデータアドレスが漏洩した場合）。それ故、ハッカーは、上記情報を用いてアクセスが拒否された秘密または機能を利用することができる。
【０００７】
従来、上記攻撃への防御策として、従来技術で使用されている方法は、最も頻繁に、所与の演算が、上記演算のいくつかの実施形態を計画し、計画した実施形態の１つをランダムに用いて上記演算を実行することができるようにしている。この目的は、同一の演算を実行する方法を増加させることで問題を混乱させ、さまざまな実施形態が、外部への情報漏洩に関してさまざまな形態の秘匿信号（または署名またはトレース）を含むようにすることである。
【０００８】
例えば、ある機能を実行する作業メモリ領域にデータをコピーする場合、コピーするデータのワードにランダムにアクセスできるように、またランダム変数に応じて任意の順序で、アクセスしたワードを作業メモリにコピーするように計画することができる。しかし、上記方法で辞書タイプの攻撃を回避することができるとしても、例えば、電子部品のアドレス漏洩を利用したり、または、より詳細には、メモリ領域がアクティブか非アクティブかを区別する可能性を与える高レベル攻撃には適応できない。それ故、外部からは、上記タイプの攻撃を用いる時には、作業メモリ領域にどのデータがコピーされたかを知り、その秘密の全部または一部を取り出すことが最終的に可能になる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、上記欠点を克服し、可搬か否かを問わず、ある電子部品についての暗号アルゴリズムの実行中のデータの安全な別の処理方法を提供する。それによって、コバートチャネル攻撃、より詳細には、カード内で働く機能をそこから引き出す意図を持って、電子部品のアドレス漏洩またはアクティブまたは非アクティブなメモリ領域の区別に基づくコバートチャネル攻撃を防止することができる。
【課題を解決するための手段】
【００１０】
それ故、本発明は、電子部品について演算を実行するための少なくとも１つの作業メモリ領域を有する上記電子部品のメモリ領域間のデータを処理し、上記データの少なくとも１つを稼働させるための方法であって、実行する演算に関わらず、演算を実行するための同一のメモリ領域の使用を含み、各演算がこの電子部品外へのロケーション漏洩に関して同一の秘匿信号トレースを有することを特徴とする方法に関する。
【００１１】
一実施形態によれば、上記方法は、演算の実行に先立って、使用するメモリ領域を演算内のオペランドとして使用されるデータで構成するステップを含み、メモリ領域の構成ステップが実行する演算によって変化する。
有利なこととして、メモリ領域を構成するステップは、上記データの１つを作業メモリ領域にコピーするステップを含み、上記データをコピーするステップは、その実行時に秘匿され、かつランダムである。
有利なこととして、上記データを含むメモリ領域は、上記データの１つを作業メモリ領域にコピーするステップの間に同時にアクティブである。
【００１２】
一実施形態によれば、上記データの１つを作業メモリ領域にコピーするステップは、それぞれのメモリ領域内の上記データの要素にランダム変数に依存する順序で連続的にアクセスするステップと、データ要素の１つを作業メモリ領域にコピーするデータに対応するデータ要素で置き換えながら、作業メモリ領域に上記要素をコピーするステップとを含む。
【００１３】
一実施形態によれば、実行される演算は、公開鍵暗号アルゴリズムの実行範囲で実行される演算である。
好ましくは、公開鍵暗号アルゴリズムは、ＲＳＡタイプであり、演算は、モジュラーべき乗に使用する二乗および乗算演算である。
【００１４】
一実施形態によれば、上記方法はハードウェアで実行される。
【００１５】
本発明は、また、電子部品が、チップカード、チップカード読み取り装置またはＴＰＭ（トラステッドプラットフォームモジュール）である先行請求項のいずれか１項に記載の方法を実行するためのシステムに関する。
本発明の他の特徴および利点は、例示的であって限定的でない例として挙げた以下の説明を読み、添付の１つの図を参照することでより明らかになるだろう。
【発明を実施するための最良の形態】
【００１６】
本発明が立脚する一般原理は、いくつかの異なる演算の代替実施形態をサーチし、上記代替実施形態がアクティブまたは非アクティブな領域のアドレスまたはロケーションの漏洩に関してそれらが実行される電子部品外で同一の「トレース」を有するようにすることである。この場合、さまざまな演算のそれぞれの代替実施形態は互いに分離できず、その結果、外部から観察すると、電子部品上でどの演算が効率的に実行されているかを認識することができない。通常および一般に、第１または第２のデータをメモリの作業領域にコピーする動作は、第１および第２のデータへのアクセスを決定し、区別できるハッカーがどのデータが作業領域内に効率的に格納されているか認識できないように実行される。
【００１７】
本発明によれば、常時、同一のメモリ領域を使用して、現在の演算に含まれる計算を実行し、メモリへのアクセスを制限し、アドレス漏洩を防止する手順が提供される。より詳細には、共通作業メモリ領域が提供され、演算を実行するのに必要なオペランドが即座にコピーされる。
【００１８】
図１は、上記作業メモリ領域Ｗと、処理対象の値ＡおよびＢを含む２つのメモリ領域Ｒ１およびＲ２とを示す。上記タイプのある種の可能な攻撃を阻止するため、作業メモリ領域へのデータのコピーは、その実行に関して秘匿されランダムであり、一方、計算部は、外部への情報漏洩に関して常に同一であるように計画されている。
【００１９】
例えば、データＡを作業メモリ領域Ｗへコピーするための方法は、ランダム変数ｔの関数としてのワードＡおよびＢに連続的にアクセスするステップを含む。このように、ＷへのデータＡのコピー中に、それぞれデータＡおよびＢを含むメモリ領域Ｒ１およびＲ２はランダム変数に応じて変えることができる順序で同時にアクティブになる。その結果、コピー工程の最後にメモリ領域Ｒ１またはＲ２からのデータがＷにコピーされたか否かを外部から知ることができない。
【００２０】
図１は、特に、上記原理に従ってデータＡを作業レジスタＷにコピーするためのアルゴリズムの図を示す。
Ａ＝Ａｋ−１｜｜．．．｜｜Ａ０、Ｂ＝Ｂｋ−１｜｜．．．｜｜Ｂ０、およびＷ＝Ｗｋ｜｜Ｗｋ−１｜｜．．．｜｜Ｗ０とする（ここで、｜｜は、連結に対応し、Ｘｉは変数Ｘのワードに対応する）。さらに、ｔをランダムビットとする。
【００２１】
【数１】
2009515449.tif 000003
【００２２】
このアルゴリズムは、データＢをＷにコピーするのと同様の方法で動作し、ランダム変数ｔが上記または上記レジスタへのアクセスの順序を最初に定義しているので、ＷへのＡのコピーとＷへのＢのコピーの区別を付けられないような同じ方法で動作する。
それ故、ランダム変数ｔが０か１かによるＷへのＡのコピーの例を再度参照すると、メモリ領域Ｒ１またはＲ２が最初にアクセスされるが、両方の場合、最後は値ＡがＷにコピーされる。実際、このアルゴリズムでは、ループ周期ごとに、値Ｂｊは値Ａｊによって置き換えられる。
【００２３】
したがって、ｔ＝０であれば、値Ｂｊが最初にＷｊに書き込まれ（図１の矢印１の符号が付いたステップ）、次に、Ｗｊが値Ａｊを取り、値Ａｊが先にＷｊに書き込まれた値Ｂｊに置き換わる（矢印２）。その後、アルゴリズムのループ周期ごとに同様の動作が実行される。
ｔ＝１のケースでは、Ｗｊが最初に値Ａｊ（例えば、矢印１’の符号が付いた）を取り、Ｗｊ＋１が値Ｂｊ（矢印２’）を取る。次のループ周期で、ｊがインクリメントされ、以前にコピーされた値Ｂｊが新しい値Ａｊ（矢印３’）に置き換わる。当然、コピーは非直線的に、すなわち、ランダムに選択したブロックによって実行することができる。
【００２４】
上に述べたように、ｊ＝０からｊ＝ｋ−１のコピーアルゴリズムで実施されるループが実行される。代替実施形態によれば、このアルゴリズムは結果を変更することなく、ｊをデクリメントすることで逆方向に実施することができる。さらに、このアルゴリズムは、任意のサイズのワードで動作させることができる。
いずれの場合も、コピーとして望まれる最終の値、すなわち、データＡが作業メモリ領域Ｗ内に得られる。ランダム変数の値ｔに応じて、ＡまたはＢが先にアクセスされるが最後にＷにコピーされる値はＡであるため、ランダム変数ｔを用いて、有利にはＡをＷにコピーする２つの別々の方法を有することができる。それ故、アクティブ領域または非アクティブ領域への電磁放射タイプの攻撃と、アドレス漏洩は、解消される。データＢをＷにコピーする同一の工程を使用することができるのは当然である。
【００２５】
本発明によれば、作業メモリ領域ＷへのデータＡまたはＢのコピーは、実行に関して秘匿されランダムであり、アクセスされた領域から独立しているため、外部への漏洩に関して強化されている。
【００２６】
本発明の別の態様によれば、電子部品について実行される演算に含意される計算部は、外部への情報漏洩に関して常に不変であるように提供される。このため、実行する演算に関わらず、常に同一のメモリ領域が使用され、演算は外部への情報漏洩に関して同一の秘匿された信号トレースを有するようにされる。この場合、演算は互いに分離できず、その結果、オブザーバは電子部品上でどの演算が実際に実行されているかを認識できない。有利には、関連するメモリ領域の構成によって、ある演算または別の演算を得ることができる。
【００２７】
例示的実施態様によれば、「コバートチャネル」タイプの攻撃をブロックするためのデータを安全に処理することが可能な上記方法を、有利には、ＲＳＡタイプの暗号アルゴリズムの範囲内のモジュラーべき乗に使用する乗算および二乗演算での実施態様に適応させることができる。
【００２８】
それ故、この例の場合、乗算演算（「ｍｕｌｔｉｐｌｙ」）および二乗演算（「ｓｑｕａｒｅ」）は、第１のメモリ領域に第２のメモリ領域を乗算する演算と同等であるため、同一の秘匿信号トレースを有することができる。メモリ領域が常に同じであれば、外部から見た秘匿信号トレースは同一である。
【００２９】
例示的実施態様によれば、メモリ領域Ｒ１およびＷは、１つの演算を実行するために使用するメモリ領域である。ＡとＢの乗算を実行する場合、上記コピー原理に従ってＲ２の内容が最初にＷにコピーされ、メモリ領域Ｒ１の内容が作業メモリ領域Ｗの内容で乗算される。データＡの二乗演算を実行する場合、上記同じ原理を適用しながら、Ｒ１の内容がＷに先にコピーされ、メモリ領域Ｒ１の内容が作業メモリ領域Ｗの内容で乗算される。それ故、機能上の相違点は、上記コピー工程によって外部オブザーバにとってはアクセスが拒否された作業メモリ領域Ｗに内容が先にコピーされる点である。さらに、演算の実行に関与するメモリ領域Ｒ１およびＷは常に同じで、外部から見た上記演算の秘匿信号トレースは同一である。オブザーバは、この例で、Ｒ１およびＷのどのメモリ領域が使用されているかを推定できるが、作業メモリ領域ＷにＡまたはＢのうちどちらの内容が先にコピーされていたかを知ることはできず、それ故、乗算と二乗のどちらの演算が実行されたかを知ることはできない。
【００３０】
作業メモリ領域Ｗは、ランダム順および／または乱数値で事前に設定することができる。
一般的に、本発明の方法は、２つの異なるメモリ領域が１つの計算に適用され、外部からのオブザーバが上記タイプの攻撃を通して使用領域を知ることで機密情報を推定できる可能性がある任意のアルゴリズムに適用することができる。
【００３１】
本発明によるデータの安全な処理方法は、任意の適当なハードウェアまたはソフトウェアで実施することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の原理を例示するチップカードのさまざまなメモリ領域の概略図である。
【図１】
2009515449.tif 000004
【国際調査報告】
2009515449.tif 000005
2009515449.tif 000006
2009515449.tif 000007
2009515449.tif 000008
2009515449.tif 000009
2009515449.tif 000010