説明

組み込みシステム上での暗号アルゴリズム実行中にデータを安全に処理するための方法

本発明は、電子部品について演算を実行するための少なくとも1つの作業メモリ領域(W)を有する前記電子部品の2つのメモリ領域(W,R1,R2)間のデータ(A,B)を処理し、前記データの少なくとも1つを稼働させるための方法に関する。本方法は、実行する演算に関わらず、演算を実行するための同一のメモリ領域の使用を含み、各演算がこの電子部品外へのロケーション漏洩に関して同一の秘匿信号トレースを有することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理中、通常、電子部品上の暗号アルゴリズム実行中のコバートチャネル攻撃を阻止するための方法に関する。これらのアルゴリズムは、秘密鍵または公開鍵アルゴリズムであってもよい。
【背景技術】
【0002】
上記電子部品は、より詳細には、サービスまたはデータへのアクセスがチェックされる暗号用途などの用途に使用される。
上記電子部品は、マイクロプロセッサおよびメモリ周辺にプログラマブルアーキテクチャを形成し、そのメモリには、1つまたは複数の秘密データを含む揮発性プログラマブルメモリまたは不揮発性メモリが含まれる。これは、任意のアルゴリズムを実行することができるゼネラリストアーキテクチャである。
【0003】
上記電子部品は、組み込みまたは非組み込みコンピュータシステムで使用される。それらは、特に、チップカードの一部の用途でチップカードで使用される。これらは、例えば、銀行用途、ならびに例えばSIMカードおよび遠隔支払い用途(例えば、テレビジョン用)を含む携帯電話用途などである。
それ故、上記電子部品または上記カードは、暗号アルゴリズムを実行して、メッセージの暗号化(機密を維持しなければならない場合)またはメッセージの認証またはディジタル署名(否認防止が望ましい場合)を実行する。
【0004】
ホストシステム(サーバ、銀行自動支払機)を通したカードへの入力として加えられるこのメッセージと、カードに含まれる秘密の図形を始め、カードがホストシステムにこの暗号化されたまたは署名されたメッセージを提供する。これによって、例えば、ホストシステムは、電子部品またはカードを認証したり、データを交換することができる。
上記暗号アルゴリズムの安全性は、カード内に含まれ、カードの外部には知られない1つまたは複数の秘密番号と、その秘密番号を使用する方法にある。
【0005】
現在、電子部品が暗号アルゴリズムを実行中に、電子部品の外部からの計測可能な物理的変数に基づく外部攻撃によって、悪意のある第3者が、カードに含まれる1つまたは複数の秘密番号またはデータを見つけることができるように思われる。上記攻撃はサイドチャネル解析と呼ばれ、情報が漏洩する可能性がある追加のチャネルの存在を考慮に入れている。使用される物理信号は、より詳細には、電子部品の電磁放射、電気消費または演算時間である。
【0006】
上記サイドチャネル解析のうち、1つまたは複数の手段に基づくSPA(単純電力解析)攻撃と、いくつかの測定値からの統計解析に基づくDPA(差分電力解析)攻撃とを区別することができる。上記攻撃は、例えば、命令を実行しているマイクロプロセッサの消費電力が処理する命令またはデータによって変動するという事実に基づいている。
暗号アルゴリズムの実行に一定の役割を果たす機能を実行するためのデータ処理中に、ハッカーは、アクティブまたは非アクティブなメモリ領域を突き止めることで、どの1つまたは複数のレジスタが使用されたか、または使用されているかを知ることができる(例えば、電流に関してまたは電磁的な観点からのデータアドレスが漏洩した場合)。それ故、ハッカーは、上記情報を用いてアクセスが拒否された秘密または機能を利用することができる。
【0007】
従来、上記攻撃への防御策として、従来技術で使用されている方法は、最も頻繁に、所与の演算が、上記演算のいくつかの実施形態を計画し、計画した実施形態の1つをランダムに用いて上記演算を実行することができるようにしている。この目的は、同一の演算を実行する方法を増加させることで問題を混乱させ、さまざまな実施形態が、外部への情報漏洩に関してさまざまな形態の秘匿信号(または署名またはトレース)を含むようにすることである。
【0008】
例えば、ある機能を実行する作業メモリ領域にデータをコピーする場合、コピーするデータのワードにランダムにアクセスできるように、またランダム変数に応じて任意の順序で、アクセスしたワードを作業メモリにコピーするように計画することができる。しかし、上記方法で辞書タイプの攻撃を回避することができるとしても、例えば、電子部品のアドレス漏洩を利用したり、または、より詳細には、メモリ領域がアクティブか非アクティブかを区別する可能性を与える高レベル攻撃には適応できない。それ故、外部からは、上記タイプの攻撃を用いる時には、作業メモリ領域にどのデータがコピーされたかを知り、その秘密の全部または一部を取り出すことが最終的に可能になる。
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明は、上記欠点を克服し、可搬か否かを問わず、ある電子部品についての暗号アルゴリズムの実行中のデータの安全な別の処理方法を提供する。それによって、コバートチャネル攻撃、より詳細には、カード内で働く機能をそこから引き出す意図を持って、電子部品のアドレス漏洩またはアクティブまたは非アクティブなメモリ領域の区別に基づくコバートチャネル攻撃を防止することができる。
【課題を解決するための手段】
【0010】
それ故、本発明は、電子部品について演算を実行するための少なくとも1つの作業メモリ領域を有する上記電子部品のメモリ領域間のデータを処理し、上記データの少なくとも1つを稼働させるための方法であって、実行する演算に関わらず、演算を実行するための同一のメモリ領域の使用を含み、各演算がこの電子部品外へのロケーション漏洩に関して同一の秘匿信号トレースを有することを特徴とする方法に関する。
【0011】
一実施形態によれば、上記方法は、演算の実行に先立って、使用するメモリ領域を演算内のオペランドとして使用されるデータで構成するステップを含み、メモリ領域の構成ステップが実行する演算によって変化する。
有利なこととして、メモリ領域を構成するステップは、上記データの1つを作業メモリ領域にコピーするステップを含み、上記データをコピーするステップは、その実行時に秘匿され、かつランダムである。
有利なこととして、上記データを含むメモリ領域は、上記データの1つを作業メモリ領域にコピーするステップの間に同時にアクティブである。
【0012】
一実施形態によれば、上記データの1つを作業メモリ領域にコピーするステップは、それぞれのメモリ領域内の上記データの要素にランダム変数に依存する順序で連続的にアクセスするステップと、データ要素の1つを作業メモリ領域にコピーするデータに対応するデータ要素で置き換えながら、作業メモリ領域に上記要素をコピーするステップとを含む。
【0013】
一実施形態によれば、実行される演算は、公開鍵暗号アルゴリズムの実行範囲で実行される演算である。
好ましくは、公開鍵暗号アルゴリズムは、RSAタイプであり、演算は、モジュラーべき乗に使用する二乗および乗算演算である。
【0014】
一実施形態によれば、上記方法はハードウェアで実行される。
【0015】
本発明は、また、電子部品が、チップカード、チップカード読み取り装置またはTPM(トラステッドプラットフォームモジュール)である先行請求項のいずれか1項に記載の方法を実行するためのシステムに関する。
本発明の他の特徴および利点は、例示的であって限定的でない例として挙げた以下の説明を読み、添付の1つの図を参照することでより明らかになるだろう。
【発明を実施するための最良の形態】
【0016】
本発明が立脚する一般原理は、いくつかの異なる演算の代替実施形態をサーチし、上記代替実施形態がアクティブまたは非アクティブな領域のアドレスまたはロケーションの漏洩に関してそれらが実行される電子部品外で同一の「トレース」を有するようにすることである。この場合、さまざまな演算のそれぞれの代替実施形態は互いに分離できず、その結果、外部から観察すると、電子部品上でどの演算が効率的に実行されているかを認識することができない。通常および一般に、第1または第2のデータをメモリの作業領域にコピーする動作は、第1および第2のデータへのアクセスを決定し、区別できるハッカーがどのデータが作業領域内に効率的に格納されているか認識できないように実行される。
【0017】
本発明によれば、常時、同一のメモリ領域を使用して、現在の演算に含まれる計算を実行し、メモリへのアクセスを制限し、アドレス漏洩を防止する手順が提供される。より詳細には、共通作業メモリ領域が提供され、演算を実行するのに必要なオペランドが即座にコピーされる。
【0018】
図1は、上記作業メモリ領域Wと、処理対象の値AおよびBを含む2つのメモリ領域R1およびR2とを示す。上記タイプのある種の可能な攻撃を阻止するため、作業メモリ領域へのデータのコピーは、その実行に関して秘匿されランダムであり、一方、計算部は、外部への情報漏洩に関して常に同一であるように計画されている。
【0019】
例えば、データAを作業メモリ領域Wへコピーするための方法は、ランダム変数tの関数としてのワードAおよびBに連続的にアクセスするステップを含む。このように、WへのデータAのコピー中に、それぞれデータAおよびBを含むメモリ領域R1およびR2はランダム変数に応じて変えることができる順序で同時にアクティブになる。その結果、コピー工程の最後にメモリ領域R1またはR2からのデータがWにコピーされたか否かを外部から知ることができない。
【0020】
図1は、特に、上記原理に従ってデータAを作業レジスタWにコピーするためのアルゴリズムの図を示す。
A=Ak−1||...||A、B=Bk−1||...||B、およびW=W||Wk−1||...||Wとする(ここで、||は、連結に対応し、Xは変数Xのワードに対応する)。さらに、tをランダムビットとする。
【0021】
【数1】

【0022】
このアルゴリズムは、データBをWにコピーするのと同様の方法で動作し、ランダム変数tが上記または上記レジスタへのアクセスの順序を最初に定義しているので、WへのAのコピーとWへのBのコピーの区別を付けられないような同じ方法で動作する。
それ故、ランダム変数tが0か1かによるWへのAのコピーの例を再度参照すると、メモリ領域R1またはR2が最初にアクセスされるが、両方の場合、最後は値AがWにコピーされる。実際、このアルゴリズムでは、ループ周期ごとに、値Bは値Aによって置き換えられる。
【0023】
したがって、t=0であれば、値Bが最初にWに書き込まれ(図1の矢印1の符号が付いたステップ)、次に、Wが値Aを取り、値Aが先にWに書き込まれた値Bに置き換わる(矢印2)。その後、アルゴリズムのループ周期ごとに同様の動作が実行される。
t=1のケースでは、Wが最初に値A(例えば、矢印1’の符号が付いた)を取り、Wj+1が値B(矢印2’)を取る。次のループ周期で、jがインクリメントされ、以前にコピーされた値Bが新しい値A(矢印3’)に置き換わる。当然、コピーは非直線的に、すなわち、ランダムに選択したブロックによって実行することができる。
【0024】
上に述べたように、j=0からj=k−1のコピーアルゴリズムで実施されるループが実行される。代替実施形態によれば、このアルゴリズムは結果を変更することなく、jをデクリメントすることで逆方向に実施することができる。さらに、このアルゴリズムは、任意のサイズのワードで動作させることができる。
いずれの場合も、コピーとして望まれる最終の値、すなわち、データAが作業メモリ領域W内に得られる。ランダム変数の値tに応じて、AまたはBが先にアクセスされるが最後にWにコピーされる値はAであるため、ランダム変数tを用いて、有利にはAをWにコピーする2つの別々の方法を有することができる。それ故、アクティブ領域または非アクティブ領域への電磁放射タイプの攻撃と、アドレス漏洩は、解消される。データBをWにコピーする同一の工程を使用することができるのは当然である。
【0025】
本発明によれば、作業メモリ領域WへのデータAまたはBのコピーは、実行に関して秘匿されランダムであり、アクセスされた領域から独立しているため、外部への漏洩に関して強化されている。
【0026】
本発明の別の態様によれば、電子部品について実行される演算に含意される計算部は、外部への情報漏洩に関して常に不変であるように提供される。このため、実行する演算に関わらず、常に同一のメモリ領域が使用され、演算は外部への情報漏洩に関して同一の秘匿された信号トレースを有するようにされる。この場合、演算は互いに分離できず、その結果、オブザーバは電子部品上でどの演算が実際に実行されているかを認識できない。有利には、関連するメモリ領域の構成によって、ある演算または別の演算を得ることができる。
【0027】
例示的実施態様によれば、「コバートチャネル」タイプの攻撃をブロックするためのデータを安全に処理することが可能な上記方法を、有利には、RSAタイプの暗号アルゴリズムの範囲内のモジュラーべき乗に使用する乗算および二乗演算での実施態様に適応させることができる。
【0028】
それ故、この例の場合、乗算演算(「multiply」)および二乗演算(「square」)は、第1のメモリ領域に第2のメモリ領域を乗算する演算と同等であるため、同一の秘匿信号トレースを有することができる。メモリ領域が常に同じであれば、外部から見た秘匿信号トレースは同一である。
【0029】
例示的実施態様によれば、メモリ領域R1およびWは、1つの演算を実行するために使用するメモリ領域である。AとBの乗算を実行する場合、上記コピー原理に従ってR2の内容が最初にWにコピーされ、メモリ領域R1の内容が作業メモリ領域Wの内容で乗算される。データAの二乗演算を実行する場合、上記同じ原理を適用しながら、R1の内容がWに先にコピーされ、メモリ領域R1の内容が作業メモリ領域Wの内容で乗算される。それ故、機能上の相違点は、上記コピー工程によって外部オブザーバにとってはアクセスが拒否された作業メモリ領域Wに内容が先にコピーされる点である。さらに、演算の実行に関与するメモリ領域R1およびWは常に同じで、外部から見た上記演算の秘匿信号トレースは同一である。オブザーバは、この例で、R1およびWのどのメモリ領域が使用されているかを推定できるが、作業メモリ領域WにAまたはBのうちどちらの内容が先にコピーされていたかを知ることはできず、それ故、乗算と二乗のどちらの演算が実行されたかを知ることはできない。
【0030】
作業メモリ領域Wは、ランダム順および/または乱数値で事前に設定することができる。
一般的に、本発明の方法は、2つの異なるメモリ領域が1つの計算に適用され、外部からのオブザーバが上記タイプの攻撃を通して使用領域を知ることで機密情報を推定できる可能性がある任意のアルゴリズムに適用することができる。
【0031】
本発明によるデータの安全な処理方法は、任意の適当なハードウェアまたはソフトウェアで実施することができる。
【図面の簡単な説明】
【0032】
【図1】本発明の原理を例示するチップカードのさまざまなメモリ領域の概略図である。

【特許請求の範囲】
【請求項1】
演算を実行するための少なくとも1つの作業メモリ領域(W)を有する電子部品のメモリ領域(W,R1,R2)間のデータ(A,B)を処理し、前記データの少なくとも1つを稼働させるための方法であって、実行する演算に関わらず、演算を実行するための同一のメモリ領域の使用を含み、各演算がこの電子部品外へのロケーション漏洩に関して同一の秘匿信号トレースを有することを特徴とする方法。
【請求項2】
演算の実行に先立って、使用するメモリ領域を前記演算内のオペランドとしての働きをするデータで構成するステップを含み、前記メモリ領域の構成ステップが、実行する演算によって変化することを特徴とする、請求項1に記載の方法。
【請求項3】
メモリ領域を構成するステップが、前記データの1つ(AまたはB)を作業メモリ領域(W)にコピーするステップを含み、前記データ(AまたはB)をコピーするステップが、その実行時に秘匿されかつランダムであることを特徴とする、請求項2に記載の方法。
【請求項4】
前記データ(A,B)を含むメモリ領域(R1,R2)が、前記データの1つ(AまたはB)を作業メモリ領域(W)にコピーするステップの間に、同時にアクティブであることを特徴とする、請求項3に記載の方法。
【請求項5】
前記データの1つ(AまたはB)を作業メモリ領域(W)にコピーするステップが、それぞれのメモリ領域(R1,R2)内の前記データ(A,B)の要素にランダム変数(t)に依存する順序で連続的にアクセスするステップと、前記データ要素の1つを前記作業メモリ領域にコピーするデータに対応するデータ要素で置き換えながら、前記作業メモリ領域(W)に前記要素をコピーするステップとを含むことを特徴とする、請求項3または4に記載の方法。
【請求項6】
実行される前記演算が、公開鍵暗号アルゴリズムの実行範囲で必要な演算であることを特徴とする、請求項1乃至5のいずれか1項に記載の方法。
【請求項7】
前記公開鍵暗号アルゴリズムがRSAタイプであることを特徴とする、請求項6に記載の方法。
【請求項8】
前記演算が、モジュラーべき乗に使用する二乗および乗算演算であることを特徴とする、請求項7に記載の方法。
【請求項9】
ハードウェアで実行されることを特徴とする、請求項1乃至8のいずれか1項に記載の方法。
【請求項10】
前記電子部品が、チップカード、チップカード読み取り装置またはTPM(トラステッドプラットフォームモジュール)であることを特徴とする、請求項1乃至9のいずれか1項に記載の方法を実行するためのシステム。

【図1】
image rotate


【公表番号】特表2009−515449(P2009−515449A)
【公表日】平成21年4月9日(2009.4.9)
【国際特許分類】
【出願番号】特願2008−539394(P2008−539394)
【出願日】平成18年10月27日(2006.10.27)
【国際出願番号】PCT/EP2006/067901
【国際公開番号】WO2007/051770
【国際公開日】平成19年5月10日(2007.5.10)
【出願人】(397062397)ジェムプリュス (35)
【氏名又は名称原語表記】GEMPLUS
【Fターム(参考)】