(57)【要約】本方法においては、フェッチステージ（１）、復号ステージ（２）、実行ステージ（３）、ライトバックステージ（４）を含むパイプラインが用いられる。ライトバックステージは、その使用によりＣＰＵの状態変化をなんら引き起さない、少なくとも１つのレジスター（４１）と、その使用によりＣＰＵの状態変化を引き起こす、少なくとも１つのレジスター（４２）とを含む。本発明によると、少なくとも１つの無作為抽出コードシーケンスが、プレースホルダーコードあるいはダミーコードシーケンスとして、復号ステージに挿入され、ＤＰＡによる攻撃をより困難にする。【選択図】図１
2004522221.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵのセキュリティーを高めるための方法であって、少なくとも１つの復号ステージ（２）と、１つのライトバックステージであって、使用してもＣＰＵの状態変化をなんら引き起こさない、少なくとも１つの第１レジスター（４１）と、使用するとＣＰＵの状態変化を引き起こす、少なくとも１つの第２レジスター（４２）とを含む、１つのライトバックステージ（４）とを有するパイプラインが使用され、
ＣＰＵの状態変化を起こさない、少なくとも１つの無作為抽出コードシーケンスが、該復号ステージ（２）においてプレースホルダーコードあるいはダミーコードシーケンスとして挿入され、
特定のプログラムを実行するたびに、プレースホルダーコードあるいはダミーコードシーケンスとして使用される無作為抽出コードシーケンスが、各場合において、前のプログラム実行と異なるプログラム実行時間を得るように選択されることを確実にするために設けられたさらなる手段が存在することを特徴とする、ＣＰＵのセキュリティーを高めるための方法。
【請求項２】
１つ以上の無作為抽出コードシーケンスが、１つ以上の無作為に決定されたメモリアドレスを用いて、メモリーから読み出される、請求項１に記載の方法。
【請求項３】
ＲＯＭがメモリーとして用いられる、請求項２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵのセキュリティーを改善する為の方法に関する。
【背景技術】
【０００２】
電力差分解析（ＤＰＡ）は、セキュリティーＣＰＵに対する周知の攻撃シナリオである。このような攻撃において、プログラムコマンドのシーケンスおよびＣＰＵにおけるその作用は、電力消費特性を統計的に解析することによって決定される。実行されたプログラムについての詳細な結果は、これらの解析から得ることができる。
【０００３】
ＤＥ  １９９  ３６  ９３９  Ａ１と、ＷＯ  ００／５０９７７には、単にだます目的で、定義されたプロセッサー動作を実行するか、あるいは無作為抽出原理に基づき動作するプログラムに内蔵されたプログラムステップを実行することによって、ＤＰＡをより困難にする方法が、特にスマートカードへの応用例について、記載されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の目的はＣＰＵのセキュリティーを高める方法を明確にすることである。
【０００５】
この目的は、請求項１に記した特徴を有する方法によって達成される。実施形態は従属請求項より生じる。
【課題を解決するための手段】
【０００６】
本発明による方法では、ＣＰＵは、パイプラインを使用するように構造化され、少なくとも１つの復号ステージと、１つのライトバックステージを有し、典型的には、フェッチステージ、復号ステージ、実行ステージおよびライトバックステージを含む。ライトバックステージは、その使用がＣＰＵの状態変化をなんら引き起こさない少なくとも１つのレジスターと、その使用によってＣＰＵの状態変化が引き起こされる少なくとも１つのレジスターとを含む。本発明によると、少なくとも１つの無作為抽出コードシーケンスが、プレースホルダーコードあるいはダミーコードシーケンスとして、復号ステージにおいて挿入される。この方法は、例として具体的に述べたステージに加えて、特に、さらなるステージを有することのできる、任意のパイプラインに対して理論上適用することができ、添付した図を参照してさらに詳細について説明する。
【発明を実施するための最良の形態】
【０００７】
図１は、例として、フェッチステージ１から復号ステージ２を介して実行ステージ３に至り、そこからライトバックステージ４へと入る、パイプラインのプログラム実行を説明するフロー図を示している。ライトバックステージ４は、ここでは少なくとも、スクラッチレジスターとしての第１レジスター４１と、ライトバックレジスターとしての第２レジスター４２とを含む。スクラッチレジスターは、その使用がＣＰＵの状態変化を引き起こさないレジスターであり、一方、ライトバックレジスターの使用はＣＰＵの状態変化を引き起こす。ＣＰＵのセキュリティーを高めるために、コードシーケンスが、実際のところ理論的には任意のコードシーケンスが、復号ステージ２によって、パイプラインに転送されたプログラムコード内に内蔵される。特に付加的なコードシーケンスを、プレースホルダーあるいはダミーコードシーケンスとして、プログラムコード内の複数の場所に挿入することもまた可能である。これは図２に模式的に示されている。
【０００８】
図２は、任意のプログラムのコードシーケンス５を模式的に示している。このコードシーケンス５においては、無作為抽出コードシーケンス６（ダミーシーケンス）が、それぞれ異なって規定された位置、あるいは、無作為に抽出された位置に挿入され、その結果、拡張されたコードシーケンス５０になる。挿入されたコードシーケンスは、例えばメモリーから、特にＲＯＭから読み出され得る。
【０００９】
コードシーケンスを挿入するための個々の命令は、例えば乱数発生器によって生成されたアドレスを呼び出すことによって作成される。挿入されるべきコードシーケンスはメモリーから読み出され、無作為の長さと順序で復号器に転送される。復号器は実行中のプログラムコード（コードストリーム）内に、これらのダミーコードシーケンスのコードを内蔵する。当業者に公知の無作為方法を用いることによって、プログラムコードに無作為抽出コードが内蔵されたアドレスさえ決定され得る。
【００１０】
無作為原理に基づいて挿入されたコードシーケンスによってもＣＰＵの状態変化が引き起こされないのと同様に、無作為原理に基づいて抽出され、挿入され、単にプレイスホルダーあるいはダミーコードシーケンスとしてのみ作用する、複数のコードシーケンスによってもＣＰＵの状態変化は発生しない。本方法の重要な利点は、同じプログラムをそれぞれ実行するための実際のプログラムコードの実行時間が、前に実行した際に要した時間から変化させることができる点であり、それによって、（序論で述べたＤＰＡのような）統計的解析に基づく攻撃を試みるのが非常に困難になる。
【図面の簡単な説明】
【００１１】
【図１】図１は、記載されたパイプラインの略図を示している。
【図２】図２は、コードシーケンスを挿入する処理過程の模式図を示している。
【符号の説明】
【００１２】
１    フェッチステージ
２    復号ステージ
３    実行ステージ
４    ライトバックステージ
５    コードシーケンス
６    無作為抽出コードシーケンス
４１  第１レジスター（スクラッチレジスター）
４２  第２レジスター（ライトバックレジスター）
５０  拡張されたコードシーケンス
【図１】
2004522221.tif 000003
【国際公開パンフレット】
2004522221.tif 000004
2004522221.tif 000005
2004522221.tif 000006
2004522221.tif 000007
2004522221.tif 000008
2004522221.tif 000009
2004522221.tif 000010
2004522221.tif 000011
【国際調査報告】
2004522221.tif 000012
2004522221.tif 000013
2004522221.tif 000014
2004522221.tif 000015
2004522221.tif 000016
2004522221.tif 000017