(57)【特許請求の範囲】
【請求項１】
データ処理システムにより実行される全体的な大きいデータ処理ルーチンに含まれている予め定められたデータ処理ルーチンの実行時間が、前記予め定められたルーチンの実行に先行して発生する前記全体的な大きいルーチンの実行に関係しあるいはその実行によって影響を受ける外部から観察可能な事象の発生に基づいて決定されることを阻止する方法において、
外部から観察可能な事象の発生と前記予め定められたルーチンの実行との間において擬似データ処理を行う２以上の擬似ルーチンを実行し、
前記擬似ルーチンを実行する期間の長さをランダムに変化させ、それによって前記外部から観察可能な事象の発生と前記予め定められたルーチンの実行との間の期間をランダムに変化させるステップを含み、
この期間をランダムに変化させるステップは、
異なった実行期間を有するｎ個の記憶されたルーチンのグループから実行するｍ個の擬似ルーチンをランダムに選択して組立てるステップを含み、ここでｍおよびｎは共に整数であり、ｎはｍよりも大きい整数である方法。
【請求項２】
前記ランダムに選択して組立てるステップは、
秘密メモリに記憶されている前記ｍ個の擬似ルーチンにランダムにアクセスするステップを含んでいる請求項１記載の方法。
【請求項３】
前記ランダムに選択して組立てるステップは、
秘密メモリに記憶されている前記ｍ個の擬似ルーチンに対するポインタにランダムにアクセスし、
前記ポインタに応答して前記秘密メモリに記憶されている前記ｍ個の擬似ルーチンにアクセスするステップを含んでいる請求項１記載の方法。
【請求項４】
前記ランダムに選択して組立てるステップは、
異なった擬似ルーチンの異なったクロックサイクル中に各擬似ルーチンに対する遅延期間を定めるための命令を各擬似ルーチン中に与えて実行するステップを含んでいる請求項１記載の方法。
【請求項５】
前記擬似ルーチンを変更させる企てがなされたか否かを検出するために、遅延期間を定めるための命令が与えられる前記擬似ルーチンのサブルーチンに先行および後続している前記擬似ルーチンのサブルーチンを監視し、前記擬似ルーチンを変更させる前記企ての検出に応答して前記予め定められたルーチンの実行を阻止するステップをさらに含んでいる請求項４記載の方法。
【請求項６】
前記擬似ルーチンが改竄されているか否かを検出するために前記擬似ルーチンを監視し、前記擬似ルーチンの改竄の検出に応答して前記予め定められたルーチンの実行を阻止するステップをさらに含んでいる請求項１記載の方法。
【請求項７】
検出されている前記擬似ルーチンの改竄の発生をカウントしてそのカウント値を前記改竄の発生の都度インクリメントし、予め定められたしきい値を超えた前記カウント値に応答して前記予め定められたルーチンの実行を阻止するステップを含んでいる請求項６記載の方法。
【請求項８】
さらに、検出されている前記擬似ルーチンを改竄せずに実行されている前記擬似ルーチンに応答して前記カウント値をデクリメントするステップをさらに含んでいる請求項７記載の方法。
【請求項９】
前記擬似ルーチンの実行と前記擬似ルーチンの監視とは同じ実行期間を有する命令に応答して実行される請求項６記載の方法。
【請求項１０】
さらに、前記予め定められたデータ処理ルーチンの実行に後続する予め定められたデータ処理ルーチンを監視して、全ての擬似ルーチンの可能な最大合計期間と前記予め定められたデータ処理ルーチンの期間とを含む十分な期間における外部から観察可能な事象が発生した直後において、アタッカーが前記予め定められたデータ処理ルーチンへアクセスを企てているか否かを検出し、その後前記予め定められたルーチンであるルーチンＮがアクセスされるまで、予め定められたデータ処理ルーチンの各連続サイクルにおいて、このような企てを１クロックサイクル早め、
前記企ての検出に応答して前記予め定められたルーチンの実行を阻止するステップをさらに含んでいる請求項１記載の方法。
【請求項１１】
データ処理システムにより実行される全体的な大きいデータ処理ルーチン中に含まれている予め定められたデータ処理ルーチンの実行時間が、前記予め定められたルーチンの実行に先行して発生する前記全体的な大きいルーチンの実行に関係し、あるいはその実行によって影響を受ける外部から観察可能な事象の発生に基づいて決定されることを阻止する方法において、
（ａ）前記全体的な大きいルーチンの実行中にデータを動的に処理し、
（ｂ）前記動的に処理されたデータによって秘密メモリ中に記憶されているデータの組合せを行い、前記外部から観察可能な事象の発生と前記全体的な大きいデータ処理ルーチン中の前記予め定められたルーチンの実行との間の期間を変化させるステップを含んでいる方法。
【請求項１２】
小さい予め定められたデータ処理ルーチンを含んでいるマクロなデータ処理ルーチンを実行する手段と、
外部から観察可能な事象の発生と予め定められたルーチンの実行との間において擬似データ処理を行う２以上の擬似ルーチンを実行する手段とを具備し、
マクロなデータ処理ルーチンの実行に関係した、あるいはその実行によって影響を受けた外部から観察可能な事象が前記小さい予め定められたデータ処理ルーチンの実行に先行して発生し、
さらに、予め定められたデータ処理ルーチンの実行される時間が外部から観察可能な事象の発生に関係して決定されることが阻止されるために、前記擬似ルーチンの実行される期間をランダムに変化させ、それによって前記外部から観察可能な事象の発生と前記予め定められたルーチンの実行との間の期間を変化させる手段を具備し、
前記擬似ルーチンの実行期間を変化させる手段は、実行するｍ個の擬似ルーチンを、異なった実行期間を有するｎ個の記憶されたルーチンのグループからランダムに選択して組み立てる手段を具備しており、ここにおいてｍおよびｎは整数であり、ｎはｍより大きい整数であるシステム。
【請求項１３】
前記ランダムに選択して組み立てる手段は、
秘密メモリに記憶されている前記ｍ個の擬似ルーチンにランダムにアクセスする手段を具備している請求項１２記載のシステム。
【請求項１４】
前記ランダムに選択して組み立てる手段は、
秘密メモリに記憶されている前記ｍ個の擬似ルーチンに対するポインタにランダムにアクセスする手段と、
前記ポインタに応答して前記秘密メモリに記憶されている前記ｍ個の擬似ルーチンにアクセスする手段とを具備している請求項１２記載のシステム。
【請求項１５】
前記擬似ルーチンの実行期間を変化させる手段は、
異なった擬似ルーチンの異なったクロックサイクル中における各擬似ルーチンの遅延期間を定めるための命令を各擬似ルーチン中に与えてその命令を実行させる手段を具備している請求項１２記載のシステム。
【請求項１６】
さらに、前記擬似ルーチンを変更しようとする企てがなされたか否かを検出するために、遅延期間を定めるための命令が与えられる前記擬似ルーチンのサブルーチンに先行および後続する擬似ルーチンのサブルーチンを監視する手段と、
前記擬似ルーチンを変更しようとする前記企ての検出に応答して前記予め定められたルーチンの実行を阻止する手段とを具備している請求項１５記載のシステム。
【請求項１７】
前記擬似ルーチンが改竄されているか否かを検出するために前記擬似ルーチンを監視する手段と、
前記擬似ルーチンが改竄されていることの検出に応答して前記予め定められたルーチンの実行を阻止する手段とをさらに具備している請求項１２記載のシステム。
【請求項１８】
前記実行を阻止する手段は、
検出されている前記擬似ルーチンの改竄の発生をカウントして改竄の発生の都度カウント値をインクリメントする手段と、
予め定められたしきい値を超えた前記カウント値に応答して前記予め定められたルーチンの実行を阻止する手段とを具備している請求項１７記載のシステム。
【請求項１９】
検出されている前記擬似ルーチンを改竄せずに実行されている前記擬似ルーチンに応答して前記カウント値をデクリメントさせる手段を具備している請求項１８記載のシステム。
【請求項２０】
前記実行する手段および監視する手段は、同じ処理期間を有する命令に応答する請求項１７記載のシステム。
【請求項２１】
さらに、前記予め定められたデータ処理ルーチンの実行に後続する前記予め定められたデータ処理ルーチンを監視して、全ての擬似ルーチンの可能な最大合計期間と前記予め定められたデータ処理ルーチンの期間とを含む十分な期間における外部から観察可能な事象が発生した直後においてアタッカーが前記予め定められたデータ処理ルーチンへのアクセスを企てているか否かを検出する監視検出手段と、
前記企ての検出に応答して前記予め定められたルーチンの実行を阻止する手段とを具備し、
前記監視検出手段はその後予め定められたデータ処理ルーチンの各連続サイクルにおいて、予め定められたルーチンであるルーチンＮがアクセスされるまで、このような企てを１クロックサイクル早めるように構成されている請求項１２記載のシステム。
【請求項２２】
小さい予め定められたデータ処理ルーチンを含んでいるマクロなデータ処理ルーチンを実行する手段と、
前記マクロルーチンの実行中にデータを動的に処理する手段とを具備し、
前記マクロなデータ処理ルーチンの実行に関係した、あるいはその実行によって影響を受けた外部から観察可能な事象が、前記小さい予め定められたデータ処理ルーチンの実行に先行して発生し、
さらに、前記予め定められたデータ処理ルーチンの実行される時間が前記外部から観察可能な事象の発生に基づいて決定されることが阻止されるように、前記動的に処理されたデータによって秘密メモリに記憶されているデータを組み合わせ、外部から観察可能な事象の発生と前記マクロなデータ処理ルーチンの実行期間における予め定められたルーチンの実行される時間との間の時間の大きさを変化させる手段を備えていることを特徴とするデータ処理システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般的にデータ処理、特に「クロックアタック」として知られている手順による秘密データ処理ルーチンの妥協の阻止に関する。
【０００２】
【従来の技術】
クロックアタックは秘密マイクロプロセッサのような秘密データプロセッサ内で実行される予め定められたデータ処理ルーチンに使用されている秘密データまたはコードへのアクセスを得るアタッカーにより行われる手順である。それは予め定められたルーチンに対する内部に発生された命令と同期させることを可能にするために予め定められたルーチンに先行する観察可能な外部事象の発生に関係する予め定められたデータ処理ルーチンの実行時間を決定し、さらに秘密データおよび、またはコードを外部的に繰返してアクセス可能にするように命令を改竄する非常に短いクロックサイクルを発生させるために命令の１つのサイクルに対するクロックサイクルを外部的に変化させることによって行われる。
【０００３】
「観察可能な外部事象」はそれ自身を外部的に明示する任意の内部状態転移として限定されるが、内部プロセッサ実行に関係するか或いは影響される任意のピンまたはピンの結合における電圧または電流の変化に限定されることはない。
【０００４】
【発明が解決しようとする課題】
本発明は、予め定められたルーチンの実行に先行する観察可能な外部事象の発生に関係して予め定められたデータ処理ルーチンの実行時間を決定させないことによって外部に発生された命令との同期を阻止する方法を提供することでそのようなクロックアタックを阻止するものである。
【０００５】
【課題を解決するための手段】
本発明は、データ処理システムにより実行される全体的に大きいデータ処理ルーチンに含まれている予め定められたデータ処理ルーチンの実行時間が、前記予め定められたルーチンの実行に先行して発生する全体的な大きいルーチンの実行に関係し、あるいはその実行によって影響を受ける外部から観察可能な事象の発生に基づいて決定されることを阻止する方法において、
（ａ）全体的な大きいデータ処理ルーチンのそれぞれの期間中にランダムな内容の信号を供給し、
（ｂ）前記ランダムな内容の信号に応答して全体的な大きいデータ処理ルーチンのそれぞれの実行期間中に外部から観察可能な事象の発生と予め定められたルーチンの実行との間の時間の長さを変化させるステップを含んでいることを特徴とする。
【０００６】
「期間」はデータ処理クロックサイクルの数により決定される。
【０００７】
用語「ランダム」は疑似ランダムおよび真のランダムを含むものとして定義される。
【０００８】
本発明の１概念において、ステップ（ａ）は観察可能な外部事象の発生と予め定められたルーチンの実行との間で１つ以上の疑似データ処理ルーチンを実行するステップ（ｂ）と、前記疑似ルーチンの期間をランダムに変化させるステップ（ｃ）を含む。本発明のこの概念において、ステップ（ｂ）および（ｃ）は前記実行に対する前記ｍ個の疑似ルーチンを異なる期間を有するｎ個の記憶されたルーチンのグループからランダムに組立てるステップ（ｄ）を含むことが好ましい。その場合、ｍおよびｎは整数であり、ｎはｍよりも大きい。またステップ（ｄ）は秘密メモリからの前記ｍ個の疑似ルーチンをランダムにアクセスするステップ（ｅ）或いは前記ｍ個の疑似ルーチンに対するポインタを秘密メモリからランダムにアクセスするステップ（ｆ）と、前記ポインタに応答して前記ｍ個の疑似ルーチンをメモリからアクセスするステップ（ｇ）とを含むことが好ましい。
【０００９】
本発明の別の概念において、ステップ（ａ）は観察可能な外部事象の発生と予め定められたルーチンの実行との間において前記マクロデータ処理ルーチンの実行に必要なデータ処理ルーチンを含む１つ以上の疑似データ処理ルーチンを実行するステップ（ｂ）と、前記疑似ルーチンの期間をランダムに変化させるステップ（ｃ）を含む。
【００１０】
本発明のさらに別の概念において、ステップ（ａ）は前記観察可能な外部事象の発生から前記必要なデータの処理ルーチンの開始するまでの時間間隔が同じ時間間隔ではなく、動的に処理されたデータに応答したランダムな時間間隔となるように変化させるステップを含んでいる。
【００１１】
本発明のさらに別の概念において、ステップ（ａ）は前記観察可能な外部事象の発生から前記必要なデータの処理ルーチンの開始するまでの時間間隔が同じ時間間隔ではなく、動的に処理されたデータと秘密メモリに記憶されたデータとの組合わせに応答したランダムな時間間隔となるように変化させるステップを含んでいる。
【００１２】
本発明のさらに別の概念において、ステップ（ａ）は観察可能な外部事象の発生と予め定められたルーチンの実行との間において１つ以上の疑似データ処理ルーチンを実行するステップ（ｂ）と前記疑似ルーチンの期間をランダムに変化させるステップ（ｃ）とを含む。
【００１３】
本発明の全ての概念において、方法はさらに前記疑似ルーチンが改竄されているか否かを検出するために前記疑似ルーチンを監視するステップ（ｄ）と、前記疑似ルーチンが改竄されていることの検出に応答して前記予め定められたルーチンの実行を阻止するステップ（ｅ）とを含む。
【００１４】
本発明はさらに観察可能な外部事象が前記予め定められたルーチンの実行に関係して生じるような予め定められたデータ処理ルーチンを実行する手段と、観察可能な外部事象の発生と予め定められたルーチンの実行との間の期間をランダムに変化させる手段とを含むデータ処理システムを提供する。それ故に、予め定められたデータ処理ルーチンの実行時間は観察可能な外部事象の発生に関係して決定されすることが阻止される。
【００１５】
【実施例】
本発明の好ましい実施例は、秘密メモリと、秘密でないメモリと、秘密中央処理装置（ＣＰＵ）とを有する秘密マイクロプロセッサ中に構成される。両メモリはランダムアクセスメモリ（ＲＡＭ）および読取り専用メモリ（ＲＯＭ）の両方を含むことができる。用語「秘密」は外部アクセス不可能を示す。
【００１６】
図１を参照にすると、本発明の好ましい１実施例において、ＣＰＵ１０はＲＯＭ１８からアクセスされた命令（コード）に応答してデータ処理ルーチンのグループ：“ルーチンＮ−１”  １１  、“ブランチ”  １２  、“ルーチンＮ”  １４  、“改竄検出”１５および“ルーチンＮ＋１”  １６  を実行し、さらに秘密ＲＡＭ２４からアクセスされた命令に応答して組立てられた疑似ルーチンのメイズ（ｍａｚｅ）：“疑似ルーチン１”  ２０  、“疑似ルーチン２”  ２１．．．、“疑似ルーチンｍ”  ２２  を実行する。
【００１７】
ルーチンＮ−１、ルーチンＮおよびルーチンＮ＋１は繰返して行う全体の大きいデータ処理ルーチンの本質的な連続サブルーチンであり、全体的な大きいルーチンの各シーケンス中において観察可能な外部事象の発生に後続する。予め定められた保護されたルーチン：“ルーチンＮ”を保護されたルーチン：“ルーチンＮ”に反復して先行する観察可能な外部事象と同期させないために、ブランチルーチン１２はＣＰＵ１０をｍ個の疑似ルーチンのメイズ：“疑似ルーチン１”、“疑似ルーチン２”、．．．  “疑似ルーチンｍ”に分岐させる。ｍ個の疑似ルーチンの全期間はランダム変数であり、ｍ個の疑似ルーチンは異なる期間を有する。
【００１８】
疑似ルーチンのメイズへの分岐が採用されることを確実にするために、全体的な大きいルーチンに臨界するサブルーチンはメイズの内部に埋込まれる。もしこのルーチンが実行されないならば、実行された全体的な大きいルーチン重要ではない。臨界サブルーチンは予め定められた保護されたルーチン：“ルーチンＮ”に対する命令がその先行する命令の後で存続しないように命令を解体することによって埋込まれる。代りに、ブランチルーチン１２は疑似ルーチン２０，２１，２２のメイズの実行が終了するまでアクセスすることができない秘密メモリ位置中の予め定められた保護されたルーチン：“ルーチンＮ”に対する命令のアドレスを蓄積する。予め定められた保護されたルーチン：“ルーチンＮ”に対する命令のアドレスが記憶された後に、ＣＰＵ１０は第１の疑似ルーチン：疑似ルーチン１を実行する。
【００１９】
ＲＯＭ１８に記憶された命令のシーケンスにおいて、ブランチルーチン１２に対する命令後の次の命令は改竄検出ルーチン１３である。通常の動作において、ＣＰＵ１０は常に疑似ルーチンのメイズへ分岐するので、改竄検出ルーチン１３は実行されないであろう。しかし、もしもアタッカーがブランチルーチン１２をバイパスしようとするならば、改竄検出ルーチン１３はアタッカーの改竄企てを検出するために実行される。
【００２０】
疑似ルーチンを実行する目的はルーチンＮ−１とルーチンＮとの間に可変期間遅延を与えることである。各疑似ルーチンは図２に示されたように一度多数のクロックサイクルがカウントされると終了されるようなループカウンタルーチンである。図２を参照にすると、ループカウンタルーチンはサブルーチン２５，２６，２７，２８，２９，３０  を含む。スタートサブルーチン２５後、カウントされるべきクロックサイクルＤの数は“Ｒ中へ遅延Ｄ負荷”サブルーチン２７中にＣＰＵ１０により構成されたレジスタに負荷される。
【００２１】
クロックサイクルＤの数は秘密ＲＡＭ２４からアクセスされたランダム数である。ランダムクロックサイクル数は異なる疑似ルーチンに対する命令がアクセスされるにより秘密ＲＡＭ２４の異なる部分において設けられる。ランダムクロックサイクル数は物理的の（本当の）ランダム現象によって生成された信号或いは疑似ランダム数発生器のような疑似ランダム装置に応答してＲＡＭ２４に設けられる。
【００２２】
“Ｒ＞０？”サブルーチン２８はレジスタ中の値が０より大きいか否かを決定する。大きいならば、レジスタ中の値が０に等しくなるまで“減少Ｒ”サブルーチン２９にしたがい１つのカウントずつ減少され、０に等しくなると“出口”サブルーチン３０が実行される。
【００２３】
“Ｒ中へ遅延Ｄ負荷”サブルーチン２７は異なる疑似ルーチンの異なる時間で実行される。それ故にアタッカーは“Ｒ中へ遅延Ｄ負荷”サブルーチン２７が疑似ルーチンの１つの所定の時間に実行されるか否かを決定した後に各疑似ルーチンに対して既知の遅延を設定するように各疑似ルーチンの同じクロック中に実行されるべき命令を改竄できない。
【００２４】
各疑似ルーチン中において、“Ｒ中へ遅延Ｄ負荷”サブルーチン２７はｉ番目のサブルーチンである。改竄検出サブルーチン２６はそれぞれの疑似ルーチンに対してＲ中へ遅延Ｄ負荷サブルーチン２７に先行して何度も繰返される。改竄検出ルーチン２６もまたサブルーチンの予め定められた回数Ｐが実行されるまで“Ｒ中へ遅延Ｄ負荷”サブルーチン２７に後続して何度も繰返される。
【００２５】
各改竄検出サブルーチン２６は疑似ルーチンが改竄されるか否かを検出するために疑似ルーチンを監視する予め定められたトラップであり、疑似ルーチンが改竄されていることの検出に応答して保護されたルーチン：“ルーチンＮ”の実行を阻止する。
【００２６】
改竄はこれらの予め定められたトラップ中の命令の改竄を検出することによって検出される。図３を参照にすると、改竄検出サブルーチン２６はスタートサブルーチン３３、“レジスタＲへの定数Ｃの負荷”サブルーチン３４、“Ｃ＝Ｒ？”サブルーチン３５、“改竄検出カウンタインクレメント”サブルーチン３６、“カウント＞Ｔ？”サブルーチン３７、“阻止”サブルーチン３８、“改竄検出デクレメント”カウンタサブルーチン３９、および“出口”サブルーチン４０を含む。
【００２７】
スタートサブルーチン３３後、定数Ｃは“レジスタＲへの定数Ｃの負荷”サブルーチン３４中にＣＰＵ１０により構成されたレジスタに負荷される。
【００２８】
Ｃ＝Ｒ？サブルーチン35は疑似ルーチン中に実行されるべき命令を改竄することを企てているアタッカーによるアタックを示す改竄が存在しているか否かを指示する。アタッカーはアタックにより疑似ルーチンの既知の遅延を設定するための疑似ルーチンに対する遅延期間の指令を負荷する命令を改竄する。しかし、指令された遅延期間が実行されている疑似ルーチンのサブルーチンのシーケンス中のどの位置に位置されているのかをアタッカーが正確に推測することができない場合には、遅延期間の指令を負荷する命令の改竄は世紀のものとは異なったものとなり、改竄検出サブルーチン26においてレジスタに入力された定数Ｃとは異なった値となる。したがってレジスタ中の改竄された値Ｒは、Ｃ＝Ｒ？サブルーチン35における比較でＣとは等しくなくなる。そのためＣがＲに等しくないときには、改竄が行われたことが検出されることができ、ＣＰＵ10によって構成された改竄検出カウンタが“改竄検出カウンタインクレメント”サブルーチン36において構成される。
【００２９】
改竄検出カウンタのカウントは“カウント＞Ｔ？”サブルーチン３７中にしきい値Ｔと比較される。一度このしきい値Ｔが超過されると、“阻止”サブルーチン３８が予め定められた保護されたルーチン：“ルーチンＮ”の実行を阻止するために行われる。
【００３０】
“阻止”サブルーチン３８は幾つかの方法で構成されることができる。例えば、秘密情報は消されることができ、或いは疑似ルーチンのメイズを改竄することが可能であるため、出ることが不可能である。任意の構成において、ＣＰＵ１０動作は無限ループに入力するので、情報は改竄が生じるときにクロックサイクルの識別に関してアタッカーにより得られることができない。
【００３１】
疑似改竄または疑似信号は“阻止”ルーチン３８に入力されないので、“改竄検出カウンタデクレメント”サブルーチン３９は各“改竄検出カウンタ”サブルーチン２６用の改竄検出カウンタをデクレメントさせる。ＣはＲと等しくないという改竄の指示がない。“改竄検出カウンタデクレメント”サブルーチン３９中にデクレメントされる改竄検出カウンタによるカウントは、“改竄検出カウンタインクレメント”サブルーチン３６中にインクレメントされる改竄検出カウンタによるカウントに等しいか或いはそれより少ない。
【００３２】
改竄検出カウンタの値Ｃは“カウント＞Ｔ？”サブルーチン３７中の値Ｒに等しい各改竄検出サブルーチン２６に対して、“改竄検出”サブルーチン２６は“出口”サブルーチン４０で終了する。
【００３３】
別の実施例において、改竄検出カウンタは使用されず、図３の破線で示されたように“Ｃ＝Ｒ？”サブルーチン３５中の定数Ｃに等しくないレジスタ中の値Ｒで改竄が指示される毎に“阻止”サブルーチン３８が入力される。この別の実施例において、“出口”サブルーチン４０は図３の破線で示されたように“Ｃ＝Ｒ？”サブルーチン３５中の定数Ｃに等しいレジスタ中の値Ｒで改竄が指示されない毎に“阻止”サブルーチン３８が入力される。
【００３４】
疑似ルーチンは並列クロックサイクルを有する命令を有するべきである。リセット中断が生じるとき、大抵のマイクロプロセッサは現在の命令の実行を終了する。もし疑似ルーチンの遅延の量を指示する“Ｒ中へ遅延Ｄ負荷”に対する命令と、“改竄検出”サブルーチン２６に対する命令は同じサイクル長を正確に有しないならば、“Ｒ中へ遅延Ｄ負荷”サブルーチン２７は一連のリセット中断および各リセット中断が処理されるときの観察を与えることによって“改竄検出”サブルーチン２６と区別されることが可能である。したがって、“Ｒ中へ遅延Ｄ負荷”サブルーチン２７に対する命令は“改竄検出”サブルーチン２６に対する命令として同じ期間である。
【００３５】
疑似ルーチンのメイズの実行が終了する際に、ＣＰＵ１０はブランチルーチン１２を実行したときにＣＰＵ１０により省略された保護されたルーチン：“ルーチンＮ”の命令のアドレスをアクセスした後に保護されたルーチン：“ルーチンＮ”を実行する。
【００３６】
全ての擬似ルーチンの最大の可能な合計期間および予め定められたデータ処理ルーチン“ルーチンＮ”の期間を含む十分な期間における外部から観察可能な事象が発生した直後において、アタッカーが予め定められた保護されたルーチン“ルーチンＮ”へアクセスを企てる技術によって予め定められた保護されたルーチン“ルーチンＮ”へアクセスすることを阻止するために、改竄検出ルーチン15が予め定められた保護されたルーチン“ルーチンＮ”の実行に続いて実行され、予め定められた保護されたルーチン“ルーチンＮ”がアクセスされるまで、予め定められたデータ処理ルーチンの各連続サイクルにおいて、このような企てを１クロックサイクル早くさせる。そのような企て、すなわちアタックはそのようなアドレスがアクセスされる前に改竄検出ルーチン15によって改竄が検出され、阻止ルーチンを行うことが可能になる。
【００３７】
改竄検出ルーチン１５の実行後に、ＣＰＵはルーチンＮ＋１を実行する。
【００３８】
図４を参照にすると、本発明の別の好ましい実施例では図１の好ましい実施例よりも必要な秘密ＲＡＭ容量が少ない。ＣＰＵ４４はＲＯＭ５１からアクセスされた命令（コード）に応答してデータ処理ルーチンのグループ：“ルーチンＮ−１”  ４６  、“ブランチ”４７、“組立および実行疑似ルーチン”４８、“ルーチンＮ”  ４９  、および“ルーチンＮ＋１”  ５０  を実行する。ルーチン：“ルーチンＮ−１”  ４６  、“ルーチンＮ”  ４９  、“ルーチンＮ＋１”  ５０  は全体的な大きいデータ処理ルーチンの本質的な連続サブルーチンであり、全体的な大きいルーチンの各シーケンス中の観察可能な外部事象の発生に後続する。ルーチン：“ルーチンＮ”を繰返して先行する観察可能な外部事象と同期させないように、ブランチルーチンはＣＰＵ４４がＲＯＭ５１に記憶されたｎ個の疑似ルーチン：“疑似ルーチン１”  ５４  、“疑似ルーチン２”  ５５．．．、“疑似ルーチンｎ”  ５６  のグループから組立てられたｍ個の疑似ルーチンのメイズに分岐させる。ｍ個の疑似ルーチンは秘密ＲＡＭ６０からアクセスされたポインタ５８に応答するｎ個の疑似ルーチンのグループから組立てられる。ｍおよびｎは整数であり、ｎはｍよりも大きい。ｎｍ  可能な疑似ルーチンのメイズが存在する。ｎ個の疑似ルーチンは異なる期間を有し、所定のデータ処理シーケンス中に実行するために組立てられるｍ個の疑似ルーチンの選択およびシーケンスは疑似ルーチンの全期間をランダム変数にさせるために１つのシーケンスから次のシーケンスへランダムに変化する。疑似ルーチンの異なる期間の値は、多くのｎｍ  可能な疑似ルーチンのメイズが異なる全期間を有するように分布される。
【００３９】
ルーチン：“ルーチンＮ−１”の実行に続いて、“ブランチルーチン”４７はＣＰＵ４４に“組立および実行疑似ルーチン”４８の分岐をさせる。“組立および実行疑似ルーチン”４８はサブルーチン：“第１のポインタ取出し”６２、“ポインタにより識別された疑似ルーチン実行”６３、“Ｍポインタの取出し？”６４、および“第２のポインタ取出し”６５を含む。
【００４０】
ポインタは“疑似ルーチン１用のポインタ”６７、“疑似ルーチン２用のポインタ”６８．．．  、“疑似ルーチンｍ用のポインタ”６９を含む。ポインタ６７，６８，６９は所定のデータ処理シーケンス中にアクセスされるｍ個のポインタの選択およびシーケンスを除いて一定である。所定のデータ処理シーケンスは疑似ルーチンの全期間をランダムに変化させるために１つの全体のデータ処理サイクルから次の全体のデータ処理サイクルへランダムに変化される。ｍ個のポインタの選択およびシーケンスはノイジーダイオードのような物理的の（本当の）ランダム現象によって生成された信号に応答するか或いは疑似ランダム数発生器のような疑似ランダム装置に応答して各全データ処理サイクル中に行われる。
【００４１】
“第１のポインタ取出し”ルーチン６２中において、ＣＰＵ４４はＲＡＭ６０から“疑似ルーチン１用のポインタ”を取出し、疑似ルーチン１に対する命令をＲＯＭ５１からアクセスするためにそのようなポインタを使用する。
【００４２】
“ポインタにより指示された疑似ルーチン実行”６３中において、ＣＰＵ４４はポインタ５８に応答するＲＯＭ５１からアクセスされたルーチン５２を実行する。
【００４３】
“ポインタにより指示された疑似ルーチン実行”６３の各実行に続いて、ＣＰＵ４４はｍ個の“ポインタの取出し？”ルーチン６４を実行する。もしｍ個のポインタがまだＲＡＭ６０から取出されていないならば、ＣＰＵ４４は別のポインタ５８をＲＡＭ６０から取出し、新しく取出されたポインタ５８によって指示された疑似ルーチン５２を使用する“ポインタで指示された疑似ルーチン実行”６３を実行するために“第２のポインタルーチン取出し”６５を実行する。
【００４４】
一度、ｍ個の“ポインタの取出し？”ルーチン６４がｍ個のポインタ５８のＲＡＭ６０から取出されたことを指示すると、ＣＰＵ４４は予め定められた保護されたルーチン：“ルーチンＮ”を実行する。
【００４５】
各疑似ルーチン５２は図２に関係して上記されたようなループカウンタルーチンである。
【００４６】
図４の好ましい実施例はまた図１乃至図３を参照にして記載された“改竄検出”ルーチン１５および２６のような改竄検出ルーチンと、図１を参照にして記載された“改竄検出”ルーチン１３のような改竄検出ルーチンとを含むことができる。
【００４７】
図５は疑似ルーチンの別の好ましい実施例を示す。この疑似ルーチンにおいては、観察可能な外部事象の個々の発生と予め定められた保護される各ルーチンとの間の期間が観察可能な外部事象の個々の発生に対して同じ時間間隔ではないようにするために、データを動的に処理してその処理時間の長さを変化させ、その処理時間に応じて観察可能な外部事象の個々の発生に対する予め定められた保護されるルーチンの開始時間を変化させる。
【００４８】
図５の疑似ルーチンは全体的な大きいデータ処理ルーチンの共通の繰返される保護されるべき臨界的なルーチンと関連して設けられたルーチンである。この実施例においてはこの保護される臨界的なルーチンはソースデータを終点の目的地へ転送するルーチンである。この実施例では、全体的な大きいデータ処理ルーチン中でソースデータが疑似ルーチンとして動的に処理される。この図５の疑似ルーチンは観察可能な外部事象の個々の発生と予め定められた保護される保護される臨界的なルーチンとの間の期間に実行され、この疑似ルーチンの長さが改竄を意図する外部の観察者が知ることのできないようにランダムに変化することによって改竄を防止するものである。
【００４９】
図５の疑似ルーチンは以下示されるサブルーチン：“スタート”７２、“初期化”７３、“Ｘのｉ番目のビット＝１？”７４、“Ｙのｉ番目のビットを１へセット”７５、“ｉインクレメント”７６、“ｉ＞ソースデータのワードサイズ？”７７、“目的地データ＝Ｙ＋ソースデータ”７８、“新しい秘密データ書込み”７９、および“出口８０”を含む。図５の疑似ルーチンはまた“初期化”サブルーチン７３および“新しい秘密データ書込み”サブルーチン７９の両方に先行し後続する上述の“改竄検出”ルーチン２６のような“改竄検出”ルーチン（図示せず）を含む。図５の疑似ルーチンに対する命令はＲＯＭに記憶され、図１に示されたのと同じようにＣＰＵによって実行される。
【００５０】
スタートサブルーチン７２の後、ＣＰＵはレジスタＸが秘密ＲＡＭからアクセスされた秘密データと動的なソースのデータとの排他的オア処理される結果によって負荷される初期化サブルーチン７３を実行する。レジスタＹは０にセットされ、カウンタｉもまた０にセットされる。ソースデータの目的先のアドレスはまた初期化サブルーチン７３中に記憶される。
【００５１】
ＣＰＵは次に“Ｘのｉ番目のビット＝１？”サブルーチン７４を実行し、Ｘレジスタのｉ番目のビット位置がビット１であるか否かを決定する。このサブルーチン７４が実行される毎に、この決定は下位桁ビット位置で開始してＸレジスタの異なるビット位置ｉに関係して行われる。
【００５２】
Ｙレジスタのｉ番目のビット位置はビット１であるときにはいつでも“Ｘのｉ番目のビットを１へセット”サブルーチン７５はＹレジスタのｉ番目のビット位置を１にセットするために実行される。“ｉインクレメント”サブルーチン７６が実行されｉレジスタを１つのカウントずつインクレメントさせる。
【００５３】
Ｙレジスタのｉ番目のビット位置は０ビットであるときにはいつでも“ｉインクレメント”サブルーチン７６が実行されｉレジスタを１つのカウントずつインクレメントする。
【００５４】
“ｉ＞ソースデータのワードサイズ？”サブルーチンが“Ｘのｉ番目のビット＝１？”サブルーチン７４は全てのＸレジスタのｉ番目のビット位置に実行された否かを決定する。もしそうでなければ、サブルーチン７４は繰返される。
【００５５】
“Ｘのｉ番目のビット＝１？”サブルーチン７４はＸレジスタの全てのｉ番目のビット位置に実行されたとき、ＣＰＵは“目的地データ＝Ｙ＋秘密データ”サブルーチン７８を実行する。Ｙレジスタの内容は図５の疑似ルーチンに対する命令中で指示された目的地に移動される目的地データを提供するためにＲＡＭからアクセスされた秘密データと排他的オア処理される。
【００５６】
類似ルーチンの全期間を既知の値にしようとする図５の類似ルーチンによるアタッカーによる改竄は目的地データの内容を変える必要があり、それによって全体のより大きなデータ処理が適切に実行されることが阻止される。もしもソースデータが正確に目的地に移動されなければ、全体の大きなデータ処理ルーチンの残部は不正確なデータを使用して実行され、正確な結果を生じない。
【００５７】
Ｘレジスタのｉ番目のビットが１に等しいときだけ“Ｘのｉ番目のビットを１にセット”のサブルーチン７５が実行されるから、図５の疑似ルーチンの全期間は“初期化”サブルーチン７３中にＸレジスタに負荷されるデータ中の１ビットの数に依存している。したがって、図５の疑似ルーチンの期間はＸレジスタ中に負荷されているデータのビット位置の数とサブルーチン７５に必要なクロックサイクル数との積の値に応じて変化する。サブルーチン７５が実行される回数は動的に処理されるソースデータおよびＲＡＭ中の秘密データの内容に依存しているので、図５の疑似ルーチンの全期間は改竄を意図する観察者には知ることのできないランダムな変数にしたがって変化する。
【００５８】
図５の疑似ルーチンの全期間のランダムはさらに“新しい秘密データ書込み”サブルーチン７８の実行によって調整され、“初期化”サブルーチン７３中にＲＡＭ中の秘密データを改竄させる。それ故に、図５の疑似ルーチンが実行される度に、そのような秘密データは異なることができる。秘密データはノイジーダイオードのような物理的の（本当の）ランダム現象により生成された信号に応答するか或いは疑似ランダム数発生器のような疑似ランダム装置に応答してＲＡＭ中に設けることができる。
【００５９】
図５の疑似ルーチンは他の疑似ルーチンの組合わせて実行する必要がなく、全体的な大きいデータ処理ルーチンに結合されることができるので、いつでも臨界データは１つの位置（ソース）から別の位置（目的先）へ移動される。
【００６０】
本発明の方法およびシステムはまた前記予め定められたルーチンの実行に先行する観察可能な外部事象の発生に関係して決定される繰返し行う全体的な大きいデータ処理ルーチンに含まれない予め定められたデータ処理ルーチンの実行時間を阻止するのに適用可能である。
【００６１】
本発明の方法およびシステムは加入者通信ネットワークの加入者の占有のデスクランブラーによりスクランブルされた情報信号のデスクランブルを制御するマイクロプロセッサの構成に特に適切である。
【図面の簡単な説明】
【図１】本発明のデータ処理システムの好ましい１実施例のブロック図。
【図２】図１のシステムで行われる疑似ルーチンの好ましい実施例のフローチャート。
【図３】図２の疑似ルーチンで行われた改竄検出ルーチンのフローチャート。
【図４】本発明のデータ処理システムの別の好ましい実施例のブロック図。
【図５】疑似ルーチンの別の好ましい実施例のフローチャート。
【符号の説明】
１０，４４  …ＣＰＵ、１４，４９  …データ処理ルーチン、１８…ＲＯＭ、２０，２１，２２，５２  …疑似ルーチン、２４…秘密ＲＡＭ、２６…サブルーチン、５１…メモリ、５８…ポインタ、６０…秘密メモリ。
【図１】
0003611867.tif 000002
【図２】
0003611867.tif 000003
【図３】
0003611867.tif 000004
【図４】
0003611867.tif 000005
【図５】
0003611867.tif 000006