(57)【要約】  携帯型データ記憶媒体により制御されるプログラム実行のための方法において、実行されるプログラムのそれぞれの被制御セクション（３６.ｘ）の処理を反映するために、それぞれの被制御セクション（３６.ｘ）の実行中にステータスカウンタ（ＺＺ）の値が変えられる。１つまたはそれより多くの被制御セクションをスキップさせる、ジャンプ命令（４２.ｘ）の実行時には、スキップされた被制御セクション（３６.ｘ）が実行されたかのようにステータスカウンタ（ＺＺ）の値が変えられ、少なくとも１つのチェックポイント（３８）においてステータスカウンタ（ＺＺ）の値が少なくとも１つの許容値と比較される。携帯型データ記憶媒体は対応する特徴を有する。発明は、携帯型データ記憶媒体の操作に対する信頼できる保護を提供し、複雑なプログラムの実行での適用にも適する。
2005509936.tif 000002
【特許請求の範囲】
【請求項１】
プログラムメモリ（２６）、プロセッサコア（１４）及び少なくとも１つのステータスカウンタ（ＺＺ）を備える携帯型データ記憶媒体により制御されるプログラム実行のための方法において、前記プログラムメモリ（２６）が、前記プロセッサコア（１４）により実行され、複数の被制御セクション（３６.ｘ）を含む、少なくとも１つのプログラム（３０）を含み、
−  前記複数の被制御セクション（３６.ｘ）のそれぞれの処理を反映するために、前記それぞれの被制御セクション（３６.ｘ）の処理中に前記ステータスカウンタ（ＺＺ）の読み値を変え、
−  ジャンプ命令（４２.ｘ）の実行中に、前記ジャンプ命令（４２.ｘ）の結果として１つまたはそれより多くの被制御セクション（３６.ｘ）をスキップし、前記スキップした被制御セクション（３６.ｘ）が実行されたかのように前記ステータスカウンタ（ＺＺ）の前記読み値を変え、
−  少なくとも１つのチェックポイント（３８，６０，７２）において前記ステータスカウンタ（ＺＺ）の前記読み値を少なくとも１つの許容値と比較し、一致したときに、前記プログラム実行を継続し、異なる場合にはエラー処理（５０，６４，７６）を行う
ことを特徴とする方法。
【請求項２】
前記ステータスカウンタ（ＺＺ）が、カウンタ値がアクティブカウンタ（ＡＺ）の値とベースカウンタ（ＢＺ）の値の差に対応する、差値カウンタとして構成されることを特徴とする請求項１に記載の方法。
【請求項３】
前記プログラム（３０）が、開始セクション（３４）、複数の被制御セクション（３６.ｘ）及び作用セクション（４０）を含むループとして構成され、前記チェックポイント（３８）または複数の前記チェックポイントの内の１つが最後尾の被制御セクション（３６.Ｎ）と前記作用セクション（４０）の間に配置されることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記被制御セクション（３６.ｘ）の実行の前に、前記ベースカウンタ（ＢＺ）を前記アクティブカウンタ（ＡＺ）のそれぞれの値に設定することを特徴とする請求項２または３に記載の方法。
【請求項５】
前記プログラム（３０）が前記被制御セクション（３６.ｘ）の内の１つまたはそれより多くを含む少なくとも１つのモジュール（５６）を含むことを特徴とする請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記モジュール（５６）が、前記モジュール（５６）内の前記ステータスカウンタ（ＺＺ）の前記変化をチェックポイント（６０）において少なくとも１つの許容値と比較する、被制御モジュールであることを特徴とする請求項５に記載の方法。
【請求項７】
前記被制御モジュール（５６）内の前記ステータスカウンタ（ＺＺ）の最初の前記変化のそれぞれの前に、前記ステータスカウンタ（ＺＺ）の前記読み値またはそれに関係付けられた値をローカルベースカウンタ（ＬＢＺ）にバッファすることを特徴とする請求項６に記載の方法。
【請求項８】
前記被制御セクション（３６.ｘ）の内の少なくとも１つが複数の被制御サブセクション（６８.ｘ）を含み、前記複数の被制御サブセクション（６８.ｘ）のそれぞれの処理を反映するために前記それぞれの被制御サブセクション（６８.ｘ）の実行中にローカルカウンタ（ＬＺ）の値を変え、前記ローカルカウンタ（ＬＺ）の前記値を少なくとも１つのチェックポイント（７２）において少なくとも１つの許容値と比較することを特徴とする請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記方法が、前記プロセッサコア（１４）のプログラムカウンタ（１６）が光の影響により操作される、光攻撃を撃退するために用いられることを特徴とする請求項１から８のいずれか１項に記載の方法。
【請求項１０】
携帯型データ記憶媒体、特にチップカードまたはチップモジュールにおいて、プログラムメモリ（２６）、プロセッサコア（１４）及び少なくとも１つのステータスカウンタ（ＺＺ）を備え、前記プログラムメモリ（２６）が前記プロセッサコア（１４）により実行可能であり複数の被制御セクション（３６.ｘ）を含む少なくとも１つのプログラム（３０）を含み、前記プログラムメモリ（２６）が前記プロセッサコア（１４）に請求項１から９のいずれか１項に記載の方法を実行させるためのコマンドを含むことを特徴とする携帯型データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には、少なくとも１つのプログラムをもつプログラムメモリ及びそのプログラムを実行するためのプロセッサコアを備える携帯型データ記憶媒体によるプログラム実行の技術分野に関する。このタイプの携帯型データ記憶媒体は、特に、様々な形態のチップカードまたはチップモジュールとすることができる。特に、本発明は妨害または攻撃を検出するため及び適するエラー処理を開始するための被制御プログラム実行に関する。
【背景技術】
【０００２】
携帯型データ記憶媒体を攻撃する手法の多くでは、正常なプログラム実行が外部の影響により撹乱される。このタイプの妨害は特に、電圧パルス、高温または低温の効果、電場または磁場、電磁波または粒子線により生じ得る。例えば、携帯型データ記憶媒体の露出した半導体チップに閃光を浴びせることにより、プロセッサコアのレジスタ内容を操作することが可能である。携帯型データ記憶媒体に格納されているプログラムに反して、携帯型データ記憶媒体に入力／出力バッファから秘密データを吐き出させるために、プログラムカウンタをその様な光攻撃により修正することが潜在的に可能である。
【０００３】
制御プロセッサが複数のサブプログラムを順次に実行し、それぞれのサブプログラム実行後にカウンタがインクリメントされる、乗り物のドアロックモーターを制御するための装置が特許文献１により知られている。サブプログラムの実行後、カウンタステータスがサブプログラムの数に対応しているか否かについてのチェックがなされる。
【０００４】
しかし、上記の既知の装置は乗り物に永久的に装着されるシステムにしか関していない。特に携帯型データ記憶媒体における、より一般的な使用は考慮されていない。さらに、上記の装置には、全てのサブプログラムの厳密な順次シーケンスしか与えられていない。したがって、特許文献１から知られる教示は、個々のサブプログラムが必要に応じてスキップされる、さらに複雑な用途には適していない。
【特許文献１】欧州特許出願公開第１０５６０１２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、本発明の目的は従来技術の問題を少なくともある程度は回避すること、並びに、携帯型データ記憶媒体により制御されるプログラム実行のための方法及びプログラムカウンタの値の操作に対して信頼できる保護を提供し、複雑なプログラムの実行における使用にも適する携帯型データ記憶媒体のいずれをもつくりだすことである。少ない経費で特に強力な保護が好ましい実施形態において達成されることになる。
【課題を解決するための手段】
【０００６】
本発明にしたがえば、上記目的は、請求項１の特徴をもつ方法及び請求項１０の特徴をもつ携帯型データ記憶媒体により、完全にまたはある程度達成される。従属請求項は本発明の好ましい実施形態に関する。
【０００７】
本発明は、プログラム実行中に組み入れられるステータスカウンタによる正しいプログラム実行の制御という基本概念から発している。プログラムは複数の被制御セクションを有し、それぞれのセクションの処理が行なわれた場合にステータスカウンタが変えられる。被制御セクションは、サブプログラムまたはプログラムモジュールに一致する必要はない。ステータスカウンタの読み値が、プログラムの少なくとも１つのチェックポイントにおいて１つまたはそれより多くの許容値と比較され、異なっていた場合に、適するエラー処理が行われる。
【０００８】
本発明にしたがえば、少なくとも１つのジャンプ命令を含むプログラムの少なくとも可能性が提供され、ジャンプ命令により１つまたはそれより多くの被制御セクションがスキップされ、したがって実行されない。この場合、ステータスカウンタの読み値は、スキップされた被制御セクションが実行されたかのように、ジャンプ命令の実行にともなって変えられる。次いで、ジャンプ命令の実行とは独立に、以降の時間点においてステータスカウンタの値をチェックすることができる。すなわち、実行されるべきプログラムの構成のフレキシビリティを、なされるべきセキュリティに関わる制限無しに、大きく高めることができる。
【０００９】
ステータスカウンタは、プロセッサコア内のレジスタとして、または携帯型データ記憶媒体の作業メモリ内のメモリ領域として構成することができる。本発明の好ましい実施形態において、ステータスカウンタは、ベースカウンタおよびアクティブカウンタと呼ばれるハードウエアに関して実装された２つのカウンタの間の差から値が得られる差値ステータスカウンタとして構成される。すなわち、ステータスカウンタは、プログラム実行の進行中に値のシーケンスが１つでありかつ同じであると常時想定することから解放される。したがって、差値ステータスカウンタの使用は、使用される本方法の探り出しを一層困難にし、そのセキュリティを高める。ベースカウンタは、アクティブカウンタのそれぞれの読み値に設定されるように定期的に初期化されることが好ましい。
【００１０】
原理的に、実行されるべきプログラムの構造はいかなる制限も受けない。特にチップカードまたはチップモジュールについて考えられる、好ましい構成において、プログラムの基本構造はループであるが、ループには、開始セクション、複数の被制御セクションおよび作用セクションが含まれる。
【００１１】
開始セクションは外部コマンドの読込みを引き起こし、被制御セクションはコマンドの処理に関係して、応答が作用セクションに送られることが好ましい。この場合、チェックポイント、または複数のチェックポイントがある場合にはチェックポイントの内の１つが最後尾の被制御セクションと作用セクションの間に配置され、よってステータスカウンタのチェック結果にプログラム実行への妨害の兆候が全くなかったときにのみ、応答が送られることが好ましい。プログラム構造にかかわらず、本発明の好ましい実施形態の全般的特徴は、携帯型データ記憶媒体の外部に向けての作用のそれぞれの前に、チェックポイントを設けることである。
【００１２】
プログラムは１つまたは順次に実行されるべき１つより多くのモジュールからなり、それぞれのモジュールは少なくとも１つの被制御セクションを含むことが好ましい。いくつかの実施形態において、それぞれのモジュールは１つの被制御セクションだけからなり、必要に応じて、後続のモジュールが実行されるべきかスキップされるべきかについてのチェックを含む。別の実施形態において、モジュールの内の少なくともいくつかは複数の被制御セクションを含む。
【００１３】
モジュールの内の少なくとも１つが少なくとも１つのモジュール内チェックポイントをもつ被制御モジュールとして構成されていれば、監視の度合いのさらなる強化が達成される。プログラム実行の開始またはループのその時点での実行の開始以降のステータスカウンタの値をモジュール内チェックポイントにおける１つまたはそれより多くのあらかじめ定められた値との一致に関してチェックすることができ、あるいはモジュール実行の開始以降のステータスカウンタの変化をチェックすることができる。第２の場合には、ステータスカウンタの読み値またはそれと関係付けられた値、例えばアクティブカウンタのステータスが、モジュール内のステータスカウンタが最初の変化をおこす前にローカルベースカウンタにバッファされることが好ましい。
【００１４】
ローカルカウンタは、モジュール内またはセクション内の追加の構成で、同様に組み込むことができ、このカウンタはグローバルステータスカウンタとは独立にモジュール内またはセクション内の正しいプログラム実行を監視する。ローカルカウンタはグローバルステータスカウンタに関して上述した手法にしたがって構成することができ、特に差値ローカルカウンタとしての構成が可能である。
【００１５】
それを介して被制御セクションがスキップされ得る、それぞれのジャンプ命令は、ステータスカウンタの調整のための対応するコマンドと組み合わされることが好ましい。しかし、本発明の構成では、個々のジャンプ命令にステータスカウンタの調整がともなっていない構成も提供される。この場合には通常、複数の許容カウンタステータスが１つのチェックポイントまたは複数のチェックポイントにおいて定められる。しかし、この手段は監視の確度を低めるから、上述したローカルステータスカウンタだけに用いられることが好ましい。
【００１６】
本発明にしたがう携帯型データ記憶媒体は、チップカードまたはチップモジュールとして構成されることが好ましい。好ましい構成において、本発明にしたがう携帯型データ記憶媒体は、上述したばかりの特徴に相当する特徴及び／または従属する方法の請求項に述べられる特徴を有する。
【００１７】
本発明のさらなる特徴、利点及び目的は、以下の複数の実施形態及び代替実施形態の詳細な説明から明らかである。簡略な図面が参照される。
【発明を実施するための最良の形態】
【００１８】
図１に示される携帯型データ記憶媒体１０は、本実施形態においてチップカードとして構成されている。携帯型データ記憶媒体１０は、外部との無接触型または接触型データ交換のためのインターフェース１２，プログラムカウンタ１６を備えるプロセッサコア１４及びメモリ１８を有する。プロセッサコア１４，メモリ１８及びインターフェース１２のコンポーネントは通常、単一の半導体チップ上に集積されている。
【００１９】
メモリ１８は様々なメモリ技術で構成された複数の領域を有する。図１の実施形態においては、例えばマスクプログラム型ＲＯＭとして構成された、リードオンリメモリ２０，フラッシュメモリ技術で構成された不揮発性リード−ライトメモリ２２，及びＲＡＭ（ランダムアクセスメモリ）として構成された揮発性リード−ライトメモリ２４がある。概念により、メモリ１８には領域２０及び２２に配置されたプログラムメモリ２６並びに領域２２及び２４に配置された作業メモリ２８がある。
【００２０】
プログラムメモリ２６には、１つが図１に示され、参照数字３０が与えられている、複数のプログラムが入っている。複数のカウンタ３２のため、さらに詳しくは、図２の実施形態ではステータスカウンタＺＺのため、図３の実施形態ではアクティブカウンタＡＺ及びベースカウンタＢＺのため、図４の改変形態ではステータスカウンタＺＺ及びローカルベースカウンタＬＢＺのため、及び図５の改変形態ではステータスカウンタ及びローカルカウンタＬＺのための、メモリロケーションが作業メモリ２８に予約されている。別の構成において、これらのカウンタは、全てまたは一部を、作業メモリ２８におく代わりにプロセッサコア１４のレジスタとして構成することもでき、あるいは図１には示されていない携帯型データ記憶媒体１０の別のユニットに格納することもできる。
【００２１】
本実施形態において、プロセッサコア１４のプログラムカウンタ１６は半導体チップ上に向けられた閃光により影響を受け得る。それにもかかわらず、閃光によりなされ得るプロセッサコアに管理されるデータへの攻撃を不可能にするため、図２にしたがうプログラム実行においては。ステータスカウンタＺＺ及び、それぞれの場合における、外部に向けられる作用の実行に先立つあらかじめ定められたカウンタステータスとの一致についてのチェックが、プログラムカウンタ１６とは独立の制御機構としてプログラム実行中に組み入れられる。
【００２２】
図２の実施形態において、プログラム３０は、開始セクション３４，以降は一括して３６.ｘで指定される複数の被制御セクション３６.１，３６.２，．．．，３６.Ｎ、チェックポイント３８及び作用セクション４０を含む無限ループの構造を有する。携帯型データ記憶媒体１０で処理されるべきコマンドは、例えば、開始セクション３４においてインターフェース１２を介して読み込まれる。被制御セクション３６.ｘは、例えば、コマンドが初めに有効性についてチェックされ、次いで認証チェックが行われ、次いで、例えば要求されたデータが存在するか否かのチェックによる、コマンドの実行可能性のチェックが行われ、最後に、例えば要求されたデータが出力バッファに書き込まれるというようにして、コマンドが実行されるというように、順次に実行されるコマンドの処理段に関係する。本実施形態において、応答は作用セクション４０においてインターフェース１２を介して送られ、その結果、コマンドの実行成功またはコマンドの実行失敗が明示される。
【００２３】
個々の被制御セクション３６.ｘの機能において、上に例として挙げられた、後続の被制御セクション３６.ｘの実行をプログラム実行において不要にする、エラー状況がおこり得る。例えば、認証の欠如のためコマンドが実行されてはならない場合には、後続の処理段は不要である。したがって、規定されたシーケンスにおける後続の被制御セクション３６.ｘが実行されるべきかスキップされるべきかについてチェックがなされる、以降は一括して４２.ｘで指定される、退去ジャンプチェック４１.１，４１.２等がある。退去ジャンプ命令４２.ｘのそれぞれは、退去ジャンプフラッグの値をチェックする条件付ジャンプ命令である。さらに、退去ジャンプフラッグは、退去ジャンプを行うべきであることを示すためにそれぞれの先行被制御セクション３６.ｘにより設定される。退去ジャンプチェック４２.ｘは、退去ジャンプフラッグの値がある被制御セクション３６.ｘにおいて変わり得る場合にのみ、その被制御セクション３６.ｘに随伴する必要があることは当然である。
【００２４】
プログラムカウンタ１６のステータスには無関係にプログラム実行をチェックするため、したがって閃光攻撃の認識が可能であるために、ステータスカウンタＺＺが用いられる。ステータスカウンタＺＺは開始セクション３４の実行とともに初期化命令４４により初期値に設定される。図２の実施形態において、初期値はゼロである。それぞれの被制御セクション３６.ｘには、ステータスカウンタＺＺが変更される、すなわち本実施形態においては１単位だけインクリメントされる、命令４６.ｘもある。次いで、それぞれの被制御セクション３６.ｘ内で実行されるべきオペレーションが終了したときにのみ、命令４６.ｘがそれぞれの被制御セクション３６.ｘ内で実行される。命令４６.ｘはそれぞれの場合においてそれぞれの被制御セクション３６.ｘの最終コマンドであることが好ましい。
【００２５】
したがって、ジャンプがおこらないと仮定すれば、ステータスカウンタＺＺは結果としてプログラム実行中に実行される被制御セクション３６.ｘの数に対応する値をもつ。図２の例示的シーケンスにおいて、この数は値Ｎで指定される。したがって、ステータスカウンタＺＺの読み値が単一の許容値Ｎであるか否かが確認される、チェック４８がチェックポイント３８で行われる。ステータスカウンタＺＺの読み値がＮであれば、作用セクション４０が実行される。ステータスカウンタＺＺが異なる値を有していれば、プログラム実行はエラー処理ルーチン５０に分岐する。
【００２６】
例えば、包括的な携帯型データ記憶媒体１０の再設定が、あるいは、エラーの反復発生による携帯型データ記憶媒体１０の遮断さえもが、エラー処理５０として行われ得る。適するエラーメッセージもインターフェース１２を介して送られ得る。いかなる場合にも、携帯型データ記憶媒体１０に出力のためにおそらくは既に与えられているいかなるデータもインターフェース１２を介して外部に送られることはないことを、エラー処理５０が保証すべきである。
【００２７】
前述したシーケンスにしたがえば、１つまたはそれより多くの被制御セクション３６.ｘにわたって退去ジャンプチェック４２.ｘの内の１つによりジャンプが引き起こされている場合は、ステータスカウンタＺＺは許容値Ｎを有していないであろう。この場合においてさえも正しいプログラム機能実行を保証するため、被制御セクション３６.ｘが退去ジャンプチェック４２.ｘによりスキップされたときには必ず、以降は一括して５２.ｘで指定される、対応する補正命令５２.１，５２.２が実行される。ステータスカウンタＺＺは、スキップされた被制御セクション３６.ｘが実行されたかのように、いずれかの補正命令５２.ｘにおいて変えられる。本事例において、ステータスカウンタＺＺは補正命令５２.ｘ毎にスキップされたセクション３６.ｘの数だけ増加される。したがって、ステータスカウンタＺＺは、ループの実行中に退去ジャンプが行われたとしても、チェックポイント３８に達したときには単一の許容値Ｎを有する。
【００２８】
本実施形態においては、ステータスカウンタＺＺが値ゼロに初期化され、それぞれの被制御セクションの処理中に１単位だけインクリメントされた。別の構成においては、別の初期化値及び／またはステータスカウンタを変えるための別の方法が提供される。例えば、ステータスカウンタＺＺを命令４４において値１またはＮあるいは他の値に初期化することができる。退去ジャンプチェック４２.ｘ後に被制御セクション３６.ｘがスキップされる場合に、ステータスカウンタＺＺが、補正なしでカウントを続け、代わりにスキップされたセクション３６.ｘの数だけ値Ｎをデクリメントすることも可能である。この時、補正命令５２.１，５２.２はＮ：＝１及びＮ：＝２等である。いかなる数学的操作、例えば１単位減算またはビット毎のシフトまたは回転も、命令４６.ｘにおいて実行することができる。チェック４８における許容値が上記の場合に応じて適合されることは当然である。
【００２９】
図３は図２のシーケンスの別種の変形を示す。この場合、ステータスカウンタＺＺは作業メモリ２８にあるカウンタとして直接に実装されるのではなく、２つのカウンタ３２，すなわちアクティブカウンタＡＺ及びベースカウンタＢＺが作業メモリ２８に設けられる。差値カウンタとしてのステータスカウンタＺＺの本構成により、プログラムカウンタ１６のそれぞれのステータスが作業メモリ２８のカウンタ３２の固定された常に同じ値に対応するという状況が回避される。
【００３０】
図３に示されるシーケンスは、アクティブカウンタＡＺが出発値、本実施形態では値ゼロに設定される初期化ステップ５４で開始される。初期化ステップ５４後、図３に示されるプログラム構造は図２と同等であり、そのため図２と同じ参照数字が図３に用いられている。違いは、ベースカウンタＢＺが命令４４においてアクティブカウンタＡＺのそれぞれのステータスに設定されることである。したがって、ベースカウンタＢＺのステータスは、いかなるループにおいても、アクティブカウンタＡＺがカウントを開始する“ゼロマーク”である。
【００３１】
図３にしたがえば、アクティブカウンタＡＺは、図２におけるステータスカウンタＺＺと同じ態様で、命令４６.ｘ及び５２.ｘにおいて変えられる。最後に、アクティブカウンタＡＺとベースカウンタＢＺの差がチェック４８において許容値Ｎと比較される。チェック４８の実際のプログラムでは、例えば、初めに暫定結果ＢＺ＋Ｎが計算され、この暫定結果が次いでアクティブカウンタＡＺの値と比較されるというようにして、常に一定の値Ｎとの比較が回避されることが好ましい。
【００３２】
アクティブカウンタＡＺは１つのループ実行から次のループ実行にかけて再設定されず、ベースカウンタＢＺで定められる“ゼロマーク”が命令４４において再び確立されるだけである。したがって、カウンタＡＺ及びＢＺの値はループの実行毎に変わり、よって図３の方法の探り出しが極めて困難になる。図３の方法の変形において、アクティブカウンタＡＺの値はチェック４８後に任意に再設定できる。アクティブカウンタＡＺ及びベースカウンタＢＺをそれぞれ形成する、作業メモリ２８内のカウンタ３２の役割は、時々スワップすることもできる。
【００３３】
図２及び図３は、２つの被制御セクション３６.１及び３６.２並びに割り当てられた２つのジャンプチェック４２.１及び４２.２を結合している、モジュール５６を例として示す。図４は、図２のこのモジュール５６を、モジュール５６の実行中にステータスカウンタＺＺの変化の追加ローカルチェックを含む別種の変形で示す。図４にしたがえば、追加ローカルチェックのために、ステータスカウンタＺＺの読み値がモジュール実行の開始時にローカルベースカウンタＬＢＺにセーブされる。
【００３４】
被制御セクション３６.１及び３６.２並びに対応するジャンプチェック４２.１及び４２.２の処理後、プログラム実行はモジュール内チェックポイント６０に到達する。ここで、モジュールの開始時にセーブされた値ＬＢＺに対するステータスカウンタＺＺの変化がその間に実行された被制御セクションの数Ｍに対応するか否かがチェック６２でチェックされる。本例においてＭの値は２である。ステータスカウンタＺＺのモジュール内変化が許容値を有していればプログラム実行は継続され、そうでなければエラー処理６４のためのモジュール内ルーチンが実行される。
【００３５】
図４の変形構成は差値ステータスカウンタを含む図３にしたがう方法にも用いることができる。この場合、アクティブカウンタＡＺの値または差ＡＺ−ＢＺがステップ５８でローカルベースカウンタＬＢＺに格納され、この値またはこの差とローカルベースカウンタＬＢＺの値との差がチェック６２でつくられる。
【００３６】
図４においてはモジュール内変化のチェック中にグローバルステータスカウンタＺＺが進められたが、モジュール５６内または被制御セクション３６.ｘ内にさらにローカルステータスカウンタを組み入れることも可能である。図５は、図２の被制御セクション３６.ｘがローカルステータスカウンタＬＺによりさらになお保護される、上記の変形構成の例示的なシーケンスを示す。
【００３７】
図５にしたがえば、ローカルステータスカウンタＬＺがステップ６６において値ゼロに初期化される。一括して６８.ｘで指定される、複数の、本例においては３つである、被制御サブセクション６８.１，６８.２，６８.３の実行が後続する。ローカルカウンタＬＺは被制御サブセクション６８.ｘのそれぞれでそれぞれの命令７０.ｘにおいてインクリメントされる。第２の被制御サブセクション６８.２は、図５に破線で示される、条件付退去ジャンプを含み、この条件付ジャンプによって、インクリメントステップ７０.２及び第３のサブセクション６８.３がスキップされる。
【００３８】
最後の被制御サブセクション６８.３の処理後、プログラム実行はローカルチェックポイント７２に到達する。チェック目的のために、ローカルカウンタＬＺのステータスが許容値１及び３と比較される、チェック７４が実行される。これらの値の内の１つと一致すればプログラム実行が継続されて命令４６.ｘによりグローバルステータスカウンタＺＺが変えられ、そうでなければエラー処理７６が行われる。
【００３９】
ステータスカウンタＺＺとともに既述した上記の変形は、図５のローカルカウンタＬＺの実装に対しても可能である。特に、ローカルカウンタＬＺは差値カウンタとして形成することもできる。図５の方法が図３の構成と組み合わせて用いられる場合は、割当て４６.ｘだけが適合されなければならない。
【００４０】
図５は、相異なるプログラム実行パスが対応する補正命令５２.ｘ無しに設けられる場合に必要である、複数の許容値によるカウンタの比較を示す。本発明のいくつかの実施形態において、複数の許容値によるこのタイプの比較はグローバルステータスカウンタＺＺに対しても用いることができる。しかし、そのような構成は制御の信頼性を低め、したがってローカルステータスカウンタＬＺにしか好ましくない。逆に、第２の被制御サブセクション６８.２における退去ジャンプは、適する補正命令により別の変形で実行することもできる。この場合、ローカルカウンタＬＺの単一のステータス、すなわちカウンタステータス３だけがチェック７４で許容される。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施形態にしたがう携帯型データ記憶媒体の機能ユニットを含むブロック図である
【図２】図１の実施形態におけるプログラム実行のフローチャートである
【図３】図２の構成の変形のフローチャートである
【図４】図２の構成の別の変形にしたがう被制御モジュールにおけるプログラム実行のフローチャートである
【図５】複数の被制御サブセクションを含むセクションにおけるプログラム実行のフローチャートである
【符号の説明】
【００４２】
１０    携帯型データ記憶媒体
１２    インターフェース
１４    プロセッサコア
１６    プログラムカウンタ
１８    メモリ
２０    リードオンリメモリ
２２    不揮発性リード−ライトメモリ
２４    揮発性リード−ライトメモリ
２６    プログラムメモリ
２８    作業メモリ
３０    プログラム
３２    カウンタ
３４    開始セクション
３６.ｘ    被制御セクション
３８，６０，７２    チェックポイント
４０    作用セクション
４２.ｘ    ジャンプ命令
５０，６４，７６    エラー処理
５２.ｘ    補正命令
５６    モジュール
６８.ｘ    被制御サブセクション
ＡＺ    アクティブカウンタ
ＢＺ    ベースカウンタ
ＬＺ    ローカルカウンタ
ＬＢＺ    ローカルベースカウンタ
ＺＺ    ステータスカウンタ
【図１】
2005509936.tif 000003
【図２】
2005509936.tif 000004
【図３】
2005509936.tif 000005
【図４】
2005509936.tif 000006
【図５】
2005509936.tif 000007
【国際調査報告】
2005509936.tif 000008
2005509936.tif 000009
2005509936.tif 000010
2005509936.tif 000011