(57)【要約】本発明は、メモリ内に格納されたデータまたはプログラムへのアクセスを組織化するためのマイクロプロセッサ回路を提案する。そのマイクロプロセッサ回路は、少なくとも１つのマイクロプロセッサと、オペレーティングシステムのためのメモリと、個々の外部プログラムを用いた自由なプログラミングのための少なくとも１つのメモリとを有し、それぞれアドレス空間を有する複数のメモリ領域が、その自由なプログラミングのためのメモリ内に提供され、各々のアドレス空間には識別子が割り当てられ、メモリ領域にそれぞれ割り当てられた識別子を、どんな場合にもメモリ領域のアドレス指定に優先して第１補助レジスタにロードし、アドレス指定されたメモリ領域の識別子を第２補助レジスタにロードし、第１補助レジスタと第２補助レジスタの比較を行う手段を有する回路である。【選択図】図７
2004526237.tif 000002
【特許請求の範囲】
【請求項１】
メモリ（２）に格納されたデータまたはプログラムへのアクセスを組織化するためのマイクロプロセッサ回路であって、少なくとも１つのマイクロプロセッサ（１）と、オペレーティングシステムのためのメモリ（２１）と、個々の外部プログラムを用いた自由なプログラミングのための少なくとも１つのメモリ（２２、２３、２４）とを有し、それぞれアドレス空間を有する複数のメモリ領域が、自由なプログラミングのために該メモリ（２２、２３、２４）に提供され、各アドレス空間は識別子（プログラムＩＤ）を割り当てられ、メモリ領域にそれぞれ割り当てられた該識別子（プログラムＩＤ）を、メモリアクセスの場合には、どのような場合にも該メモリ領域のアドレス指定に優先して、第１補助レジスタ（７２）にロードし、該アドレス指定されたメモリ領域の該識別子（プログラムＩＤ）を第２補助レジスタ（８２）にロードし、該第１および該第２補助レジスタ（７２、８２）の比較を実行する手段（７、８）を有し、
メモリ領域の各アドレス空間は、アクセス権を含む少なくとも１つのビットシーケンス（ＡＣＲ）を割り当てられる、マイクロプロセッサ回路。
【請求項２】
アドレス空間の各アドレスが、アクセス権を含むビットシーケンス（ＡＣＲ）を割り当てられる、請求項１に記載のマイクロプロセッサ回路。
【請求項３】
前記アクセス権を含む前記ビットシーケンス（ＡＣＲ）が、前記アドレスまたはアドレスブロックおよび、前記メモリに格納されたテーブル内の前記識別子（プログラムＩＤ）と一緒に格納される、請求項１または２に記載のマイクロプロセッサ回路。
【請求項４】
アドレスブロックがそのアドレス開始点またはアドレス終点および該アドレスブロック長によって特定される、請求項３に記載のマイクロプロセッサ回路。
【請求項５】
アドレスブロックが、下位および上位アドレスによって特定される、請求項３に記載のマイクロプロセッサ回路。
【請求項６】
各アドレス空間または各アドレスが、前記アクセス権を含む前記ビットシーケンス（ＡＣＲ）を提供される、請求項１または２に記載のマイクロプロセッサ回路。
【請求項７】
前記アクセス権を含む前記ビットシーケンスが、第１および第２アクセス権を含み、該第１アクセス権が２つのメモリ領域（２２、２３、２４）間のアクセスを制御し、該第２アクセス権がメモリ領域（２２、２３、２４）内部のアクセスを制御する、請求項１から６のいずれかに記載のマイクロプロセッサ回路。
【請求項８】
第３アクセス権が前記ビットシーケンスに提供され、該第３アクセス権がメモリ領域（２２、２３、２４）内のアクセスを制御する、請求項７に記載のマイクロプロセッサ回路。
【請求項９】
２つのメモリ領域間のさらなるアクセス権を含む権利バッファが提供され、この場合には、該アクセス権は前記オペレーティングシステムによって、読み出され得るかまたは書き込まれ得る、請求項１から８のいずれかに記載のマイクロプロセッサ回路。
【請求項１０】
前記バッファが、あらゆる場合に、２つのメモリ領域間での許可された割り当て（アクセス）を含む、請求項９に記載のマイクロプロセッサ回路。
【請求項１１】
前記割り当てが、前記識別子（プログラムＩＤ）によってか、または前記個々の識別子を決定するのに使用され得る変換テーブルによって、テーブル内に実現される、請求項９または１０に記載のマイクロプロセッサ回路。
【請求項１２】
前記オペレーティングシステムによってのみ管理されるメモリ領域（２５）が提供される、請求項１から１１のいずれかに記載のマイクロプロセッサ回路。
【請求項１３】
各メモリ領域（２２、２３、２４）が、データをバッファ格納するために、アドレス領域（２７、２８、２９）を割り当てられ、該データが、前記それぞれのメモリ領域（２２、２３、２４）に格納されたプログラムによってのみ管理され得る、請求項１から１２のいずれかに記載のマイクロプロセッサ回路。
【請求項１４】
メモリ（２）内に格納されたデータまたはプログラムへのアクセスを組織化する方法であって、少なくとも１つのマイクロプロセッサ（１）と、オペレーティングシステムのためのメモリ（２１）と、個々の外部プログラムを用いた自由なプログラミングのための少なくとも１つのメモリ（２２、２３、２４）とを有し、個々のアドレス空間を有する複数のメモリ領域が、自由なプログラミングのために、該メモリ（２２、２３、２４）内に与えられ、各アドレス空間には識別子（プログラムＩＤ）が割り当てられ、厳密に１つの外部プログラムが、各メモリ領域（２２、２３、２４）に提供され、
以下のステップ、
ａ）外部プログラムの現在実行されているコード命令の第１プログラムＩＤ（ＰＩＤＰＣ）を、その時点での現在のアドレスの前記識別子を用いて、決定するステップと、
ｂ）前記アドレス指定されたメモリ領域の第２プログラムＩＤ（ＰＩＤａｄｄｒ）を決定するステップと、
ｃ）前記第１および前記第２プログラムＩＤを比較するステップと、
ｄ）ステップｃ）の前記比較結果に応じて、前記第１または前記第２アクセス権（ＡＲＣ）を選択するステップと、
ｅ）前記アクセス権を評価するステップと、
ｆ１）前記アドレス指定されたメモリ領域へのアクセスまたはコード命令が許可されている場合は、プログラムコードを継続するステップと、
ｆ２）前記アドレス指定されたメモリ領域へのアクセスまたはコード命令が許可されていない場合は、エラー処理ルーチンを呼び出すステップと
を包含する、方法。
【請求項１５】
同一の第１および第２プログラムＩＤが与えられた場合には、現在実行されているコード命令の前記アクセス権に応じて、前記第２アクセス権または第３アクセス権が選択される、請求項１４に記載の方法。
【請求項１６】
前記ステップｆ２以降に、以下のステップ、
ｆ）前記第１プログラムＩＤ（ＰＩＤＰＣ）を有する前記メモリ領域から、前記第２プログラムＩＤ（ＰＩＤａｄｄｒ）によって特定される前記メモリ領域への、許可されたアクセスを表すエントリーに対して、前記権利バッファをチェックするステップと、
ｈ１）該エントリーが前記権利バッファ内に存在する場合には、前記プログラムコードを継続するステップと、
ｈ２）該エントリーが存在しない場合には、エラー処理ルーチンを呼び出すステップと
が実行される、請求項１４または１５に記載の方法。
【請求項１７】
ステップａ）のコード命令が、ジャンプ命令であり、以下のステップ、
ｂ）前記アドレス指定されたメモリ領域の前記第２プログラムＩＤ（ＰＩＤａｄｄｒ）を決定するステップと、
ｃ）前記第１および前記第２プログラムＩＤを比較するステップと、
ｄ）呼び出されたアドレスへジャンプするステップと、
ｅ１）前記第１および前記第２プログラムＩＤが同一である場合は、前記アドレス指定されたメモリ領域における前記プログラムコードを継続するステップと、
ｅ２）前記第１および前記第２プログラムＩＤが同一でない場合には、アドレス指定された内容のアドレス内容において読み出しを行うステップと、
ａａ）該読み出されたアドレスの内容が、エントリー命令でない場合には、エラー処理ルーチンを呼び出すステップと、
ｂｂ）該読み出されたアドレスの内容が、エントリー命令である場合には、前記プログラムコードを継続するステップと
が実行される、請求項１４から１６のいずれかに記載の方法。
【請求項１８】
前記ステップｄ）の前に、バッファ（２５〜２９）上で、前記現在実行されているジャンプ命令の、アドレスを格納するステップが実行される、請求項１７に記載の方法。
【請求項１９】
前記エントリー命令が、固定的に定められたビットシーケンスである、請求項１７または１８に記載の方法。
【請求項２０】
前記バッファ（２５）が、前記オペレーティングシステムによってのみ管理される、請求項１４から１９のいずれかに記載の方法。
【請求項２１】
第１実行権を割り当てられたコード命令が、パブリックアクセス可能なバッファ（２６）をバッファとして使用する、請求項１４から２０のいずれかに記載の方法。
【請求項２２】
第２実行権を割り当てられたコード命令が、メモリ領域に割り当てられ、前記個々のメモリ領域に格納された前記プログラムと、前記オペレーティングシステムとによってのみ、管理され得るバッファ（２７、２８、２９）を使用する、請求項１４から２１のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１のプリアンブルに従ったマイクロプロセッサ回路および請求項１４のプリアンブルに従ったメモリ内に格納されたデータまたはプログラムへのアクセスを組織化するための方法に関する。
【背景技術】
【０００２】
上記タイプのマイクロプロセッサ回路は、好ましくは、いわゆるスマートカード、すなわち身分証明書や、クレジットカード、引き落としカードなどの、集積回路を備えたカードに使用されている。マイクロプロセッサ回路は、対応するインターフェースを介して前記カードと通信する、いわゆる支払い処理モジュール内にも使用され得る。一般に、マイクロプロセッサ回路は、支払い処理に適した、例えば、移動電話、パソコン、ＰＤＡのような個人所有化された端末に使用され得る。
【０００３】
このようなカードの極めて重要な利点の１つは、カード所有者にとって可能な、多様な使用法にある。集積回路に含有されたマイクロプロセッサおよび関連した記憶装置手段は、カード自体内での大量のデータ処理を可能にする。
【０００４】
カード製造者は、例えば、外部から入力されたコードを、格納されたコードなどと比較する手順などの、基本的な機能を実行する常駐オペレーティングシステムを有するマイクロプロセッサを配備することができる。マイクロプロセッサに関連するメモリは、オペレーティングシステムを格納するのみならず、複数の関数を含むことができる特定のアプリケーションと、例えば、セキュリティーチェックのために必要であり、全てのイベントにおいて秘密にされなければならないパラメーターとを格納する役割も果たす。
【０００５】
関連したプログラムを有するオペレーティングシステムが開始点を形成し、特定のインターフェースが決定され、メモリまたはメモリ領域が外部プログラムのために確保された場合にカードの多様な用途が為される。そして、カード製造者は、その外部プログラムにおいてプログラミングするためのメモリまたはメモリ領域を、使用者のために、言い換えればカードを発行する組織のために提供する。そして、この外部プログラムにおいて、その組織は、オペレーティングシステムと独立して、その特定の組織のみに関係する特定の動作を特徴づけることができる。
【０００６】
ある将来的なシナリオは、１つの組織がその外部プログラムを、前もって製造されたスマートカードに格納するだけではなく、むしろ複数の異なる組織が、それらのそれぞれ対応するプログラムをスマートカードに格納することである。この場合には、オペレーティングシステムの一部であるか、または個々の外部プログラムとは別のセキュリティーに関連するデータが、許可されないアクセスから保護されることを確実にするための注意が払われなければならない。
【０００７】
外部プログラムが、他の外部プログラムの、プログラムライブラリーとも呼ばれるプログラム部分を呼び出すことが想定される。カスタマリーメモリ組織に基づいて、全てのプログラム部分が、同じ論理アドレス領域として参照される位置に配置され得る。この場合には、外部プログラムのコードとデータとの両方が、メモリ領域のアドレス空間に配置される。この場合には、コード自体が、複数のプログラム部分か、ライブラリーか、または関数を含み得る。例として、アプリケーションとも呼ばれるプログラムＡが、代替的に外部プログラムＢのプログラムライブラリーＢと、さらなる外部プログラムＣのプログラムライブラリーＣとを同じ論理アドレス空間に呼び出すと、さらなる保護メカニズムがない場合には、プログラムライブラリーＢは、プログラムライブラリーＣのデータに対する書き込み動作によってデータを破壊し得るか、プログラムライブラリーＣの本来秘密のデータを、読み出し動作によって密かに発見し得る。従ってプログラムライブラリーＣは、他の外部プログラムに含まれるさらなる使用に対して、使用不可能になる。それによって、プログラムライブラリーＣの値は破壊される。
【０００８】
この問題を解決するために、プログラム部分すなわちプログラムライブラリーを、メモリ内のハードウェアメカニズムを用いて互いに分離し、プログラムライブラリー間のデータアクセスがオペレーティングシステムを介してのみ可能であることが知られている。しかし、結果として得られたセキュリティーは、プログラミングの高い複雑性と、複雑なハードウェアを示している。さらに、プログラムライブラリー間で直接通信する場合と比較して、パフォーマンスが低下する。従って、高いセキュリティーが得られるが、パフォーマンスは損なわれる。
【０００９】
ＥＰ  ０  ５１２  ５４２  Ｂ１は、少なくとも１つのマイクロプロセッサと、オペレーティングシステムのためのメモリと、個々の外部プログラムを用いた自由なプログラミングのための少なくとも１つのメモリとを有し、メモリ内に格納されたデータまたはプログラムへのアクセスを防止するマイクロプロセッサ回路を開示する。この場合には、自由にプログラミング可能な複数のメモリ領域が与えられ、そのメモリ領域のアドレス空間は、少なくとも１つの最上位位置以外は、全く同一である。さらに、マイクロプロセッサ回路は、メモリ領域に割り当てられたそれぞれの最上位位置を、どのような場合においてもメモリ領域のアドレス指定に優先して、第１補助レジスタにロードし、アドレス指定されたメモリ領域のそれぞれの最上位位置を第２補助レジスタにロードし、そして、第１補助レジスタと第２補助レジスタとの比較を行う手段を有する。補助レジスタの内容が変化する場合には、禁止信号が生成され、それによって、許可されないアドレスにアクセスしている外部プログラムが実行されているかどうかを確証する。
【００１０】
この手順は、原理的に、他の外部プログラムへのアクセスが妨げられるという欠点を有している。他の外部プログラムの内の、特定のプログラム部分の相互利用化は可能ではない。その結果、これが適切である場合、複数の外部プログラムは、同じ機能性を有する全く同じプログラム部分を含まなければならない。しかし、一般的に限られたメモリ領域しか持たない携帯型のデータキャリアの場合には、これは非常に不都合である。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、簡単な手段を用いて外部プログラムへのアクセスをも可能にする、回路と方法を明確に述べるという目的に基づいたものである。
【００１２】
これらの目的は、請求項１および１４に明確に述べられた特徴を用いた本発明によってそれぞれ達成される。
【課題を解決するための手段】
【００１３】
本発明によると、メモリ領域の各アドレス空間が、アクセス権を含む少なくとも１つのビットシーケンス（ＡＣＲ）を割り当てられるということによって、本目的は達成される。別の言い方をすれば、このことは、各論理アドレス空間が、アクセス権を含むビットシーケンスを割り当てられた少なくとも１つのアドレスブロックに分割されることを意味している。
【００１４】
本発明はこのようにして、同じ論理アドレス空間に配置された、異なる外部プログラムのプログラム部分間での直接の通信を可能にする、ハードウェア保護メカニズムを提供する。しかし、この場合には、オペレーティングシステムによる制御の必要が無い。
【００１５】
本発明の有利な改良点において、アドレス空間の各アドレスには、アクセス権を含むビットシーケンスが割り当てられる。言い換えれば、これは、コード行とデータワードの両方にアクセス権を含むビットシーケンスが割り当てられることを意味する。その結果、選択的に決定されたデータ領域は、望ましい権利を割り当てられ得る。
【００１６】
アクセス権を含むビットシーケンスを、アドレスまたはアドレスブロックと、メモリ内に格納されたテーブル内の識別子（プログラムＩＤ）とともに格納すると有利である。この場合には、アドレスブロックは、そのアドレス開始点またはアドレス終点と、アドレスブロック長とにより特定され得る。別の方法として、アドレスブロックが下位アドレスおよび上方アドレスによって特定されることが考えられる。その場合、各アドレスブロックはアクセス権を含むビットシーケンスを割り当てられ得る。アドレスブロックが個々のアドレスのみを含む場合には、個々の命令の各々または個々のアドレスの各々は、アクセス権を含むビットシーケンスを割り当てられ得る。
【００１７】
別の方法として、各アドレス空間または各アドレスに、アクセス権を含むビットシーケンスが提供される。これは、アクセス権を含むビットシーケンス長だけ、前に使用されたワード行を長くすることを意味する。結果として、アクセス権は、各アドレスすなわち各ワードに自動的に割り当てられる。この場合には、各アドレスまたは各アドレス空間の識別子は、例えば、各アドレスまたはアドレス空間の各アドレスの少なくとも１つの最上位位置に含まれ得る。
【００１８】
アクセス権を含むビットシーケンスは、第１アクセス権と第２アクセス権とを含み、第１アクセス権は２つのメモリ領域間のアクセスを制御し、第２アクセス権はメモリ領域内部のアクセスを制御する。異なる外部プログラムが、異なるメモリ領域に格納されていると仮定すると、それによりアクセスは、外部プログラムのプログラム部分によって、非常に選択的に制御され得る。従ってアクセスは拒絶され得るか、許可され得る。外部プログラムがリコースを有するデータに関する場合には、アクセスそれ自体が、読み出し許可または書き込み許可を含み得る。ある外部プログラムが他の外部プログラムからコードを呼び出そうと試みる場合、この場合にも、権利の制御が存在し得る。
【００１９】
有利な改良点においては、ビットシーケンス内の第３の（データ）アクセス権は、メモリ領域内部、すなわち単一のプログラム内部でのアクセスを制御する。このことは、専用プログラムの第２アクセス権と結びつく。そして、特に、専用プログラム内の実行コードの第２アクセス権が設定されていない場合には、例えば初期化データまたは変数などの機密データを、専用プログラム内の特定のプログラム部分の読み出しまたは書き込みアクセスから保護することが可能である。しかし、例えば、実行中に発生したこれらデータのみを含む他のデータ領域は、全てのプログラム部分によって書き込まれ得るかまたは読み出され得る。
【００２０】
さらなる有利な改良点においては、２つのメモリ領域間のさらなるアクセス権を含む、権利バッファが提供され、この場合にはアクセス権はオペレーティングシステムによって読み出されるかまたは書き込まれ得る。好ましくは、バッファは、あらゆる場合において、２つの異なるメモリ領域間での許可された割り当て、言い換えると、許可されたアクセスを含む。この改良点は、例えばキャッシュ（バッファ）という形で実現され得るアクセステーブルの導入を提供する。割り当ては、識別子（プログラムＩＤ）によってかまたは、個々の識別子を決定するのに使用され得る変換テーブルによって、テーブル内で実現される。
【００２１】
結果として、複数のプログラム部分を含むアプリケーションＡは、例えば、プログラム部分Ｃよりもプログラム部分Ｂに、より多くのアクセス権を与えることができる。このために、バッファまたはバッファ内に格納されたテーブルは、例えば２列と、複雑性またはプログラム部分の数に応じて、対応する数の行とを含む。１つの行において、アクセスされているプログラム部分に対する識別子は第１列に与えられ、アクセスを行うのを許可されるべきプログラム部分に対する識別子は第２列に与えられる。最も簡単な実現化において、これらの識別子はプログラムＩＤと全く同一である。しかし別の方法として、他のテーブルエントリーからプログラムＩＤを決定するため使用され得る、変換テーブルもまた提供され得る。
【００２２】
権利バッファ内に実現されたアクセステーブルは、異なった方法で実現され得る。２列のテーブルの場合には、異なるプログラム部分の各組み合わせは、多くても一度だけ発生することが許容される。別の方法として、テーブルは、プログラム部分の数に対応する多数のプログラム部分を含むことができる。そして、許可されたアクセスは、テーブル内に追加の列によって格納される。
【００２３】
さらなる有利な改良点においては、オペレーティングシステムのみによって管理され得るメモリ領域が提供される。オペレーティングシステムによって管理されるこのメモリ領域は、「コンテクスト安全領域」と称され、任意の他の外部プログラムまたはそのプログラム部分による読み出しまたは書き込みが許可されない、バッファに格納された機密データに対して役立つ。オペレーティングシステムのみによって管理されるメモリ領域は、こうして、その第３アクセス権が特に選択されたプログラム部分のみに利用可能なコードによって、特に使用されるスタックを構成する。
【００２４】
さらなる改良点において、各メモリ領域は、それぞれのメモリ領域に格納されたプログラムによってのみ管理され得るデータを、バッファ格納するためにアドレス領域を割り当てられる。このバッファ（スタック）はまた、他の外部プログラムによって、どの環境においても読み出されてはならない、特定の機密のデータをバッファ格納するこのに役立つ。
【００２５】
上記のマイクロプロセッサ回路の構成は、以下にさらに記載される方法を参照して、より良く理解されるようになる。
【００２６】
メモリ内に格納されたデータまたはプログラムへのアクセスを組織化するための、本発明の方法は、少なくとも１つのマイクロプロセッサと、オペレーティングシステムのためのメモリと、個々の外部プログラムを用いた自由なプログラミングのための少なくとも１つのメモリとを有し、個々のアドレス空間を備えた複数のメモリ領域が、自由なプログラミングのためのメモリ内に提供され、各アドレス空間には識別子（プログラムＩＤ）が割り当てられ、そして厳密に１つの外部プログラムが各メモリ領域に提供され、以下のステップを含む。
ａ）その時点での現在のアドレス（ＰＣ）の識別子を用いて、外部プログラムの現在実行されているコード命令の第１プログラムＩＤを決定するステップと、
ｂ）アドレス指定されたメモリ領域の第２プログラムＩＤを決定するステップと、
ｃ）第１プログラムＩＤと第２プログラムＩＤを比較するステップと、
ｄ）ステップｃ）での比較結果に基づいて第１または第２アクセス権を選択するステップと、
ｅ）アクセス権を評価するステップと、
ｆ１）アドレス指定されたメモリ領域へのアクセスまたはコード命令が許可されている場合にはプログラムコードを継続するステップと、
ｆ２）アドレス指定されたメモリ領域へのアクセスまたはコード命令が許可されていない場合にはエラー処理ルーチンを呼び出すステップ。
【００２７】
結果として、識別子（以下ではプログラムＩＤとも称される）、例えば、最上位位置または位置群を使用することによって、アクセスが、同じかまたは異なるメモリ領域、従って異なる外部プログラムへと行われるかどうかが決定され得る。この評価に基づいて、第１または第２アクセス権が決定され、評価される。この方法に基づくと、特定のプログラム部分（プログラムライブラリー）を、他の外部プログラムに対して使用可能にすることが可能である。
【００２８】
本発明による方法の改善点において、全く同一の第１プログラムＩＤと第２プログラムＩＤが与えられたとすると、現在実行されているコード命令のアクセス権に応じて、第２アクセス権または第３アクセス権が選択される。コード命令に割り当てられたアクセス権は、後者が、また、またプログラムコードの機密の領域へのアクセスが許可されているかどうか特定する。これが許可されている場合には、アドレスに割り当てられた、選択された第３のアクセス権がさらに評価される。そして、書き込みアクセスは、単に読み出しであり、実行され得るかどうかを決定される。このことは、現在実行されている外部プログラムのプログラムライブラリーによって、機密データが破壊されるのを防止する、保護を確実にする。
【００２９】
本発明による方法のさらなる有利な改良点において、ステップｆ２以降に以下のステップが実行される。
ｇ）第１プログラムＩＤ（ＰＩＤＰＣ）を有するメモリ領域から、第２プログラムＩＤ（ＰＩＤａｄｄｒ）によって特定されたメモリ領域への許可されたアクセスを表す、エントリーに対する権利バッファをチェックするステップ。
ｈ）エントリーが権利バッファ内に存在する場合には、プログラムコードを継続するステップ。
ｉ）エントリーが存在しない場合には、エラー処理ルーチンを呼び出すステップ。
【００３０】
本発明による方法のこの有利な変更は、権利バッファによって、より多くのアクセス権が例えばプログラム部分ＣよりプログラムＢに許可されることを可能にする。
【００３１】
プログラム部分Ａがプログラム部分Ｂにアクセスする場合、まず最初に、第１、第２、そして第３アクセス権がチェックされる。アクセスが許可された場合は、アクセスはそれぞれの権利に従って実行される。しかし、アクセスが許可されない場合には、プログラム部分Ａのプログラム部分Ｂへのアクセスのためのエントリーが、存在するかどうかに関して、権利バッファの内容がチェックされる。このようなエントリーが存在する場合には、例えば、プログラム部分Ｂに対する拡張されたアクセス権が、プログラム部分Ａに与えられる。このようなエントリーが権利バッファ内に存在しない場合には、エラー処理ルーチンが開始される。
【００３２】
本発明による方法の有利な改良点において、ステップａ）のコード命令は、ジャンプ命令であり、続いて、次のステップが実行される。
ｂ）アドレス指定されたメモリ領域の第２プログラムＩＤを決定するステップ。
ｃ）第１プログラムＩＤと第２プログラムＩＤを比較するステップ。
ｄ）呼び出されたアドレスにジャンプするステップ。
ｅ１）第１プログラムＩＤと第２プログラムＩＤが同一である場合には、アドレス指定されたメモリ領域でのプログラムコードを継続するステップ。
ｅ２）第１プログラムＩＤと第２プログラムＩＤが同一でない場合には、アドレス指定された内容のアドレス内容において読み出しを行うステップ。
【００３３】
ａａ）読み出されたアドレス内容が、エントリー指示でない場合は、エラー処理ルーチンを呼び出すステップ。
【００３４】
ｂｂ）読み出されたアドレス内容が、エントリー指示である場合は、プログラムコードを継続するステップ。
【００３５】
この手順は、プログラムライブラリー間でのジャンプが、前に決定されたエントリーアドレスにおいてのみ実行を許可されることを確実にし、エントリーアドレスは、決定されたエントリー命令によって定義される。結果として、プログラムコードの任意の位置への制御されないエントリーは不可能である。従って、データの密かな発見もデータの破壊も両方不可能になる。
【００３６】
本方法のさらなる改良点において、ジャンプ命令が格納されるアドレスは、バッファに格納される。
【００３７】
このバッファは有利には、オペレーティングシステムによってのみ管理されるストアであり、序説に記載した「コンテクスト安全領域」である。
【００３８】
エントリー命令は、有利には、固定的に定められたビットシーケンスである。後者は、エントリーアドレスが含まれているかどうか特定するために使われ得る。
【００３９】
なおその上に、パブリックアクセス可能なバッファ（スタック）が、第１実行権を割り当てられたコード命令に対するバッファとして利用可能であれば、好都合である。前記のコード命令は、プログラムの機密データにはアクセスしないか、または、アクセスできないプログラムコードである。
【００４０】
他方では、個々のメモリ領域に割り当てられ、個々のメモリ領域に格納されたプログラムによってのみ管理され得るバッファは、第２実行権を割り当てられたコード命令によって有利に使用される。「機密スタック」と称されるこのバッファは、どのような環境においても、他のプログラムライブラリーまたは外部プログラムによって、読み出されたり、上書きされたりしてはならないデータをバッファ格納するのに利用可能である。
【００４１】
本発明およびその利点は、以下の図を参照してより詳細を説明される。
【発明を実施するための最良の形態】
【００４２】
図１は一例として、本発明が基づいている、問題となっている領域を示している。線形のアドレス空間に配置された２つのプログラムＡとＢとが存在する。プログラムＡに属するプログラム部分またはプログラムライブラリーは、関連する、揮発性で固定的な所定のデータを有し、相互の呼び出しや相互の管理によって自身を破壊しないように構成されると仮定される。この図１において、プログラムＡは、単に命令コードを含み、かつ、コードＡによって特定される領域を含む。後者は、互いに独立した複数の関数Ａ１、Ａ２を含み得る。後者は、相互に互いを呼び出し得る。さらに、プログラムＡは、例として、揮発性または不揮発性のデータを含み得る２つのデータ領域Ａ１とＡ２とを含む。プログラムＡ内に配置された全てのデータは、命令コードまたは関数によって完全に管理され、かつ、制御され得る。
【００４３】
プログラムＢは、対応する態様で構成されており、例として一つのデータ領域Ｂのみがこの図１内に図示されている。プログラムＢ内に配置された関数もまた、相互に互いを呼び出し得るし、データ領域Ｂ内に格納されたデータを管理し、制御し得る。
【００４４】
本発明によると、プログラムＡおよびプログラムＢは、最上位位置または位置群を介して異なるか、またはそれぞれ割り当てられたプログラムＩＤ（ＰＩＤ）を介して異なる、それぞれ前もって決定されたメモリ領域に配置されている。もちろんこのメモリ領域内では、命令コードおよびデータを図に示した態様でブロック単位に配置する必要は無い。
【００４５】
ここで、本発明は、プログラムＢの関数がプログラムＡのデータにアクセスできるようにする可能性を説明する。例として、このタイプの２つのアクセスが図１に図示されている。関数Ｂ１はデータ領域Ａ２にアクセスし、一方で関数Ｂ２はデータ領域Ａ１にアクセスする。本発明によると、データをプログラムＢに対して利用可能にするプログラムＡは、特定のデータ領域に対して、特定のアクセス権を他のプログラムに対して選択的に許可し得る。実現可能なアクセス権を図５に図示する。以下のアクセス権が考えられる。書き込み／読み出し権（Ｗ）、読み出し専用権（Ｒ）、そしてデータアクセスしない権利、言い換えると読み出しも書き込みも無い権利（−）である。これらの権利がデータに割り当てられる。いわゆる実行権ｘｎとｘｓは、命令コードに割り当てられ、所望なデータ領域が、現在実行されている命令に対してアクセスされることが許可されているかどうかについての情報を含む。
【００４６】
プログラムＢからプログラムＡへのデータアクセスは、ハードウェアによって現在実行されているコード命令のプログラムＩＤ（例えば最上位位置または位置群）およびアクセスされているアドレスの比較によって、チェックされ得る。
【００４７】
プログラムＩＤの比較によって、データアクセスが、現在実行されているプログラム内の関数によってか、または異なるプログラムの関数によって実行されているかどうかを確立し得る。本発明によると、各データ領域（コード命令とデータとの両方）に、アクセス権を含むビットシーケンスが割り当てられる。
【００４８】
図４に図示されるように、このビットシーケンスはワード行の一部であり得る。アドレスと、その中に配置された値に加えて、このようなワード行が、アクセス権のビットシーケンス（ＡＣＲ）分だけ長くされる。別の方法として、テーブルがメモリ内に提供され得る。そのテーブルは、メモリ領域を定義し、アクセス権を有する前記メモリ領域に割り当てられたビットシーケンスを含む。この場合には、アドレス領域は、好ましくは、その下位アドレスおよび上位アドレス（図２）によって定義され得る。または別の方法として、そのアドレス開始点とアドレスブロック長さ（図３）とによって定義され得る。
【００４９】
アクセス権を含むビットシーケンスは、少なくとも２つのアクセス権を含む。２つのプログラム間のアクセスを制御する第１アクセス権と、プログラム内部でのアクセスを制御する第２アクセス権である。ビットシーケンス（ＡＣＲ）内部に配置されるアクセス権の順序は、望ましいように選択され得る。アクセス権を含むビットシーケンスは、有利には、プログラム内部でのアクセスを制御する、さらなる第３アクセス権を有する。第２アクセス権と対照的に、例えば初期化データのような機密データを含むアドレス領域は、それによって特定される。コード命令が、このようなデータに対して読み出しまたは書き込みを行うのを許可されるためには、個々のコード命令もまた特別な特定を必要とする。
【００５０】
図２に示したアクセス権を含むビットシーケンスは、第１、第２および第３アクセス権を有し、後者は上述の順序で、列ＡＣＲの右から左へと入力される。従って、例えば初期化データを含むデータ領域Ａ２は、（第１アクセス権がＲになっている）外部プログラムの関数によって読み出されることが許可される。一方で、その時点での現在のプログラム内の関数は、書き込み権さえも有する。このことは、通常の第１実行権（ｘｎ）で特定されるこれらのコード命令と、（第２実行権を有する）機密データ（ｘｓ）を実行するための許可を有するこれらの命令との両方に適用する。
【００５１】
さらに、データ領域Ａ１は、（第１、第２および第３アクセス権Ｗを有する）現在実行されているプログラムＡの内部および外部の両方の関数によって書き込まれることが許可されることを、図２に示したテーブルから知り得る。
【００５２】
その結果、線形アドレス空間の個々のデータ領域に割り当てられたアクセス権によって、データまたは関数は、簡単な態様で、他のプログラムにアクセス可能になり得る。外部プログラムにより要求されたアクセスが許可されない場合、（これはアクセス権に基づいて確立され得るが、）その場合エラー処理ルーチンが開始される。このようにして、プログラマー自身が、プログラムのコード命令および選択されたデータを、他のプログラムからの書き込みアクセスから保護することができる。
【００５３】
本発明によるさらなる保護メカニズムは、外部プログラムから呼び出される関数の制御に関する。プログラム内での制御されないプログラムフロー、および、これによって生じ得る専用データの上書きによる破壊を防止するために、プログラム内の関数は、定義されたエントリーアドレスに対してのみ、他のプログラムによってジャンプさせられることを許可される。これらのエントリーアドレスは、所定のビットシーケンスによって特定される。ジャンプ命令の場合には、特定されたアドレスは、予想されるビットシーケンスに対してチェックされる。後者が存在しない場合には、エラー処理ルーチンが開始される。予想されるビットシーケンスが検出された場合には、呼び出された関数が実行され得る。
【００５４】
プログラム内の関数は、あらゆる位置から呼び出され得るので、各々の関数呼び出しに対して、リターンアドレスが格納されなければならない。関数のコード命令の処理中に、リターン命令が割り込んだ場合には、プログラムカウンターは前に格納されたリターンアドレスに設定される。プログラム内でのプログラムフローは、リターンアドレスの操作を介して、好ましくない態様で変更させられ得る。
【００５５】
この問題を解決するために、本発明は、関数の呼び出しの場合にはリターンアドレスを、オペレーティングシステムによってのみアクセスされ得るバッファに自動的に格納することによって、他のプログラムによる書き込みアクセスに対してリターンアドレスを保護することを提案する。この場合には、関数の呼び出しが他のプログラムから実行される場合に、これらのリターンアドレスのみを、書き込み保護されたバッファに格納すれば十分である。それに対して、同じプログラム内の関数の関数呼び出しの場合には、一般にアクセス可能なバッファを使用することが可能である。しかしこの場合には、これらのリターンアドレスが現在のプログラム外へ至らないことを確実にしなければならない。さらなる他の代替として、リターンアドレスは、関数呼び出しの場合には自動的に中間レジスタに格納され得、中間レジスタの古い値は、リターンアドレスと共に別のスタックに格納される。従って、中間レジスタへのアクセスは、呼び出されたプログラムに対して、オペレーティングシステムによって管理されるバッファへのアクセスとちょうど同程度に制限されなければならない。
【００５６】
本発明による方法は、図６を参照してさらに図示される。命令キャッシュからの命令は、ＣＰＵ内にロードされ、プログラムＩＤ（ＰＩＤＰＣ）は内部ＣＰＵレジスタに保持される。次のステップにおいて、コード命令がジャンプ命令であるかどうか決定するために、チェックが行われる。コード命令がジャンプ命令である場合には、呼び出されたアドレスのプログラムＩＤ（ＰＩＤＪ）が決定される。２つのプログラムＩＤが一致する場合には、呼び出されたアドレスへのジャンプが行われ、プログラムは継続される。プログラムＩＤが同一であるということは、ジャンプが現在活動しているプログラムの内部で実行されることを意味する。プログラムＩＤが異なる場合には、呼び出されたアドレスはジャンプさせられ、その中に配置されていたアドレス内容が読み出される。このアドレス内容が、予想されたエントリー命令すなわち固定的に定められたビットシーケンスである場合には、プログラムコードは継続される。もしそうでなければ、エラー処理ルーチンが呼び出される。
【００５７】
コード命令が、ジャンプ命令ではなく、むしろデータアクセスを伴う命令である場合には、データキャッシュから呼び出されたアドレスのプログラムＩＤは、ＣＰＵ内にロードされ、決定される。プログラムＩＤ、ＰＩＤＰＣとＰＩＤＡＤＤＲが一致しない場合は、関連しているものは、外部プログラムの試みられたデータアクセスである。従って、第１アクセスビットは、データキャッシュのアドレスか、または割り当てられたテーブルのどちらかから決定され、評価される。アクセスが許可された場合、例えばデータを読み出す試みにおいて、第１アクセス権がＲまたはＷに設定されている場合は、プログラムコードは継続される。前述の例において、第１アクセスビットが、読み出し許可も書き込み許可も付与しない場合には、エラー処理ルーチンが呼び出される。
【００５８】
エラー処理ルーチンを呼び出す代わりに、この時点においてさらなる権利のチェックが続いてもよい。権利バッファに格納されたテーブルにおいて、呼び出された、および、呼び出しているプログラム部分を含む権利のペアが存在するかどうかについて、エントリーがチェックされる。権利のペアが存在する場合には、例として、プログラムＩＤ、ＰＩＤＡＤＤＲを有するプログラム部分への拡張されたアクセスは、プログラムＩＤ、ＰＩＤＰＣを有するプログラム部分に対しても許可される。従って、あるプログラム部分に、本来同じ許可を有する他のプログラム部分より多くのアクセス権を付与することが可能である。しかし、機密アクセス権（第３アクセスビット）に対しては、権利に関する上記区別は維持される。しかし、プログラムＩＤ、ＰＩＤＰＣおよびＰＩＤＡＤＤＲを有するエントリーが、権利バッファ内に検出できなかった場合には、エラー処理ルーチンが開始される。
【００５９】
序文に記載された権利のチェックは、ここに記載された権利の拡張されたチェックと平行しても行われ得る。呼び出されたプログラム部分へのアクセスは、権利の通常または拡張されたチェックの結果が肯定的であった場合に許可される。権利の２つのチェックの結果が否定的であった場合は、エラー処理ルーチンが開始される。
【００６０】
プログラムＩＤ、ＰＩＤＰＣとＰＩＤＡＤＤＲとが一致する場合には、現在活動しているプログラム内でのアクセスが含まれる。コード命令が、通常のデータへのアクセスのみを許可する実行権を提供された場合には、そのアドレスにおける第２アクセスビットが、データキャッシュから読み出され、評価される。コード命令が、第２実行権（ｘｓ）によって特定される処理機密データに対する権利も有する場合には、アクセス権を含むビットシーケンスからの、第３アクセス権が読み出され、評価される。許可されたアクセスの場合には、プログラムコードは上記の両方の場合で継続される。そうでなければ、エラー処理ルーチンが呼び出される。
【００６１】
図７は、本発明によるマイクロプロセッサ回路の概略の構成を例として示している。マイクロプロセッサ１は、制御ライン１０を介してメモリ配列２に接続されている制御ユニット３を含む。メモリは、オペレーティングシステムのために提供された領域２１と、例として、それぞれ外部プログラムのための３つのメモリ領域２２、２３、２４と、オペレーティングシステムのみによって管理され得るバッファ２５と、全てのプログラムに対して使用され得るバッファ２６と、メモリ領域２２、２３、２４の内の１つにそれぞれ割り当てられ、それぞれメモリ領域２２、２３、２４によってのみ管理され得るバッファ２７、２８、２９（いわゆる「機密スタック」）とを含む。さらに、マイクロプロセッサは、中央処理装置（ＣＰＵ）６、命令キャッシュ４、データキャッシュ５、そして、それぞれ補助レジスタ７２、８２を有する演算装置７、８とを備える。さらに、演算装置７、８および演算／論理処理装置６に接続された、評価装置９が存在する。
【００６２】
演算装置７によって、現在実行されているコード命令のアドレスのプログラムＩＤが決定され、補助レジスタ７２に格納される。このために、命令キャッシュ４からのアドレスは、演算／論理処理装置を介して演算装置７に供給される。同様の態様で、呼び出されるべきアドレスのプログラムＩＤは、演算装置８によって決定され、補助レジスタ８２に格納される。呼び出されるべきアドレスは、演算／論理装置６によって、データキャッシュから演算装置８に入力される。補助レジスタ７２、８２の内容は、評価装置９に供給され、そこで互いに比較される。このことは、アクセスが２つのプログラム間で達成されるべきか、１つのプログラム内で実行されるべきかについての指示を与える。最終的に、コード命令および呼び出されるべきアドレスのアクセス権は、評価装置９に供給される。この情報を用いて、評価装置９は、図６に記載されたプログラムシーケンスを実行することができ、アクセスが許可されるべきか、拒絶されるべきかどうか決定することができる。この結果はＣＰＵに供給される。
【図面の簡単な説明】
【００６３】
【図１】図１は、プログラムＡとプログラムＢの二つを有する線形アドレス空間の分割を示す。
【図２】図２は、アクセス権を含むテーブルの第１の例示的な実施形態を示す。
【図３】図３は、アクセス権を含むテーブルの第２の例示的な実施形態を示す。
【図４】図４は、アドレス領域の基本的な設計を示し、各アドレスは、アクセス権を含むビットシーケンスを割り当てられる。
【図５】図５は、可能なアクセス権を有するテーブルを示す。
【図６Ａ】図６Ａは、本発明による方法をプログラムフローチャートの形態で示す。
【図６Ｂ】図６Ｂは、本発明による方法をプログラムフローチャートの形態で示す。
【図６Ｃ】図６Ｃは、本発明による方法をプログラムフローチャートの形態で示す。
【図６Ｄ】図６Ｄは、本発明による方法をプログラムフローチャートの形態で示す。
【図７】図７は、本発明によるマイクロプロセッサ回路の例示的な実施形態を示す。
【符号の説明】
【００６４】
１      マイクロプロセッサ
２      メモリ
３      制御装置
４      命令キャッシュ
５      データキャッシュ
６      ＣＰＵ
７      演算装置
８      演算装置
９      評価装置
１０    制御ライン
２１    メモリ領域
２２    メモリ領域
２３    メモリ領域
２４    メモリ領域
２５    バッファ
２６    バッファ
２７    バッファ
２８    バッファ
２９    バッファ
ＡＣＲ  アクセス権を含むビットシーケンス
７２  第１補助レジスタ
８２  第２補助レジスタ
【図１】
2004526237.tif 000003
【図２】
2004526237.tif 000004
【図３】
2004526237.tif 000005
【図４】
2004526237.tif 000006
【図５】
2004526237.tif 000007
【図６Ａ】
2004526237.tif 000008
【図６Ｂ】
2004526237.tif 000009
【図６Ｃ】
2004526237.tif 000010
【図６Ｄ】
2004526237.tif 000011
【図７】
2004526237.tif 000012
【国際公開パンフレット】
2004526237.tif 000013
2004526237.tif 000014
2004526237.tif 000015
2004526237.tif 000016
2004526237.tif 000017
2004526237.tif 000018
2004526237.tif 000019
2004526237.tif 000020
2004526237.tif 000021
2004526237.tif 000022
2004526237.tif 000023
2004526237.tif 000024
2004526237.tif 000025
2004526237.tif 000026
2004526237.tif 000027
2004526237.tif 000028
2004526237.tif 000029
2004526237.tif 000030
2004526237.tif 000031
2004526237.tif 000032
2004526237.tif 000033
2004526237.tif 000034
2004526237.tif 000035
2004526237.tif 000036
2004526237.tif 000037
2004526237.tif 000038
2004526237.tif 000039
2004526237.tif 000040
2004526237.tif 000041
2004526237.tif 000042
2004526237.tif 000043
2004526237.tif 000044
2004526237.tif 000045
2004526237.tif 000046
【国際公開パンフレット（コレクトバージョン）】
2004526237.tif 000047
2004526237.tif 000048
【国際調査報告】
2004526237.tif 000049
2004526237.tif 000050
2004526237.tif 000051
2004526237.tif 000052