(57)【要約】【課題】セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法を提供する。【解決手段】データ処理装置２は、オペレーションのセキュアなドメインおよび低セキュアドメインを有する処理回路４を有する。セキュアドメインで動作するときに、処理回路４は、低セキュアドメインでアクセス可能でないデータにアクセスできる。制御フロー変更命令の実行に応答して、処理は、ターゲットアドレスのプログラム命令に切換わる。ドメイン選択は、ターゲットアドレスの命令について処理回路４が動作する選択ドメインを決定するために実施される。ドメインチェッキングは、どのドメインが、ドメイン選択によって決定される選択ドメインであることを許容されるかをチェックするために実施されうる。ドメインチェックエラーは、ドメイン選択における選択ドメインが、許容選択ドメインでない場合に引き起こされる。【選択図】図１
2013161479.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備え、前記処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理回路は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、前記処理回路は、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、前記ターゲットアドレスの前記プログラム命令について前記処理回路が動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、前記処理回路は、
（ｉ）前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用し、
（ｉｉ）前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成されるデータ処理装置。
【請求項２】
前記制御フロー変更命令は分岐命令を含む請求項１に記載のデータ処理装置。
【請求項３】
前記制御フロー変更命令が、前記低セキュアドメインで動作している間に実行される場合、前記処理回路は、同様に、前記ドメインチェッキングを実施し、前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容ドメインに一致しない場合、前記ドメインチェックエラーを引き起こすように構成される請求項１または請求項２に記載のデータ処理装置。
【請求項４】
前記ドメイン選択および前記ドメインチェッキングの一方は、第１の決定法を含み、前記ドメイン選択および前記ドメインチェッキングの他方は、第２の決定法を含む請求項１から３のいずれか１項に記載のデータ処理装置。
【請求項５】
データを記憶するためのデータ記憶装置であって、セキュア領域および低セキュア領域を含む複数の領域を備える、データ記憶装置を備え、前記セキュア領域は、前記セキュアドメインで動作するときに前記処理回路によってアクセス可能であり、前記低セキュアドメインで動作するときに前記処理回路によってアクセス可能でないデータを記憶するためのものであり、
前記第１の決定法は、前記複数の領域の少なくともどの領域が、前記ターゲットアドレスのプログラム命令の命令アドレスに対応するかに応じて、少なくとも１つの選択ドメインを決定することを含む請求項４に記載のデータ処理装置。
【請求項６】
少なくともいくつかのプログラム命令について、前記第１の決定法は、前記命令アドレスが前記低セキュア領域に対応する場合、前記選択ドメインとして前記低セキュアドメインを選択すること、および、前記命令アドレスが前記セキュア領域に対応する場合、前記選択ドメインとして前記セキュアドメインを選択することを含む請求項５に記載のデータ処理装置。
【請求項７】
前記第２の決定法は、前記選択ドメインとして、ターゲットドメイン値によって指示される前記複数のドメインのうちの１つのドメインを決定することを含む請求項４から６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記ターゲットドメイン値は、制御フロー変更命令のエンコーディングにおいて指定される請求項７に記載のデータ処理装置。
【請求項９】
前記ターゲットドメイン値は、制御フロー変更命令によって使用される前記ターゲットアドレスの一部として指定される請求項７に記載のデータ処理装置。
【請求項１０】
前記処理回路は、ターゲットドメイン値設定命令に応答して前記ターゲットドメイン値を設定するように構成される請求項７または９のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記ターゲットドメイン値設定命令が実施される前に、前記処理回路が前記低セキュアドメインで動作していた場合、前記処理回路は、前記低セキュアドメインを指示するように前記ターゲットドメイン値を設定するように構成される請求項１０に記載のデータ処理装置。
【請求項１２】
前記処理回路は、セキュア領域内の前記ターゲットアドレスの前記プログラム命令を処理することに切換える前に、前記処理回路が前記低セキュアドメインでそれについて動作していたガード保護式制御フロー変更命令の後で、前記ターゲットアドレスの前記プログラム命令がガード命令でない場合、エラーを引き起こすように構成され、
前記ターゲットドメイン値設定命令は前記ガード命令を含む請求項１０および１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
第１の制御フロー変更命令に応答して、前記処理回路は、所定の記憶ロケーションに戻りアドレスを記憶し、前記ターゲットアドレスの前記プログラム命令を処理することに切換えるように構成され、
第２の制御フロー変更命令に応答して、前記処理回路は、前記戻りアドレスの前記プログラム命令を処理することに切換えるように構成され、
前記ガード命令に応答して、前記処理回路は、前記第１の制御フロー変更命令が前記低セキュアドメインで実施された場合、前記低セキュアドメインを指示するように、前記第２の制御フロー変更命令用の前記ターゲットドメイン値を設定するように構成される請求項１２に記載のデータ処理装置。
【請求項１４】
セキュアスタックおよび低セキュアスタックを含む複数のスタックを備えるデータ記憶装置を備え、前記セキュアスタックは、セキュアドメインで動作するときに前記処理回路によってアクセス可能であり、低セキュアドメインで動作するときに前記処理回路によってアクセス可能でない請求項７から１３のいずれか１項に記載のデータ処理装置。
【請求項１５】
前記処理回路および前記処理回路上で実行されるソフトウェアの少なくとも一方は、前記ターゲットドメイン値に応じて、前記複数のスタックのどのスタックが、関数の引数を渡すために使用されうるかを決定するように構成される請求項１４に記載のデータ処理装置。
【請求項１６】
第１の制御フロー変更命令に応答して、前記処理回路は、所定の記憶ロケーションに戻りアドレスを記憶し、前記制御フローを前記ターゲットアドレスの前記プログラム命令に切換えるように構成され、
第２の制御フロー変更命令に応答して、前記処理回路は、前記戻りアドレスの前記プログラム命令を処理することに切換えるように構成される請求項７から１５のいずれか１項に記載のデータ処理装置。
【請求項１７】
前記第１の制御フロー変更命令が、前記セキュアドメインで実行され、前記低セキュアドメインへの移行をもたらす場合、前記処理回路は、ダミー戻りアドレスであって、有効命令アドレスでない、ダミー戻りアドレスを、前記戻りアドレスとして前記所定の記憶ロケーションに記憶し、実際の戻りアドレスを、前記低セキュアドメイン内にある間、アクセス可能でないセキュア記憶ロケーションに記憶するように構成され、
前記第２の制御フロー変更命令に応答して、前記戻りアドレスが前記ダミー戻りアドレスであった場合、前記処理回路は、前記セキュア記憶ロケーションから前記実際の戻りアドレスを取出し、前記実際の戻りアドレスの前記プログラム命令を処理することに切換えるように構成される請求項１６に記載のデータ処理装置。
【請求項１８】
前記処理回路は、前記ダミー戻りアドレスおよび前記実際の戻りアドレスのいずれを前記第１の制御フロー変更命令に応答して前記所定の記憶ロケーションに記憶すべきかを、少なくとも前記ターゲットドメイン値に応じて決定するように構成される請求項１７に記載のデータ処理装置。
【請求項１９】
前記ターゲットドメイン値は、前記制御フロー変更命令のエンコーディングおよび前記制御フロー変更命令によって使用される前記ターゲットアドレスのエンコーディングの一方において冗長データフィールドによって表される請求項７から１８のいずれか１項に記載のデータ処理装置。
【請求項２０】
前記処理回路は、第１の命令セットからの命令を実行するように構成され、
前記制御フロー変更命令のエンコーディングおよび前記制御フロー変更命令によって使用される前記ターゲットアドレスのエンコーディングの一方は、前記ターゲットアドレスの前記プログラム命令が前記第１の命令セットからのものか、第２の命令セットであって、前記処理回路によってサポートされない、第２の命令セットからのものかを指示するターゲット命令セットフィールドを含み、
前記ターゲットドメイン値は、前記ターゲット命令セットフィールドを使用して指示される請求項７から１９のいずれか１項に記載のデータ処理装置。
【請求項２１】
前記ターゲット命令セットフィールドの第１の値は、前記第１の命令セットを指示し、また、前記セキュアドメインが前記選択ドメインであることを指示する前記ターゲットドメイン値に対応し、
前記ターゲット命令セットフィールドの第２の値は、前記第２の命令セットを指示し、また、前記低セキュアドメインが前記選択ドメインであることを指示する前記ターゲットドメイン値に対応する請求項２０に記載のデータ処理装置。
【請求項２２】
前記ドメインチェッキングは、前記第２の決定法を含み、前記低セキュアドメイン内にある間に前記制御フロー変更命令が実施される場合、前記ターゲットアドレスの前記プログラム命令を処理することへの前記切換えの後で、前記ドメインチェックエラーが生成されるか否かは、前記ターゲットドメイン値の値に無関係である請求項２１に記載のデータ処理装置。
【請求項２３】
少なくとも１つのプログラム命令について、前記ドメインチェッキングは、前記プログラム命令用の許容選択ドメインとして複数の前記ドメインを決定することを含む請求項１から２２のいずれか１項に記載のデータ処理装置。
【請求項２４】
前記少なくとも１つのプログラム命令はガード命令を含む請求項２３に記載のデータ処理装置。
【請求項２５】
前記セキュアドメインで実施される少なくとも１つの制御フロー変更命令について、前記処理回路は、前記ターゲットアドレスの前記プログラム命令を処理することに切換える前に、前記セキュアドメインで動作することから前記低セキュアドメインで動作することへ切換えるように構成される請求項１から２４のいずれか１項に記載のデータ処理装置。
【請求項２６】
前記処理回路は、前記ターゲットアドレスの前記プログラム命令がガード命令でない場合、エラーを引き起こすように構成される請求項２３から２５のいずれか１項に記載のデータ処理装置。
【請求項２７】
データ処理装置であって、
プログラム命令に応答して、データ処理オペレーションを実施するための処理手段を備え、前記処理手段は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理手段は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、前記処理手段は、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、前記処理手段が、前記ターゲットアドレスの前記プログラム命令について動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、前記処理手段は、
（ｉ）前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用し、
（ｉｉ）前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成されるデータ処理装置。
【請求項２８】
プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備える装置用のデータ処理方法において、前記処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理回路は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスできる、方法であって、
制御フロー変更命令の実行に応答して、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換えること、
前記ターゲットアドレスの前記プログラム命令について前記処理回路が動作する選択ドメインを決定するためのドメイン選択を実施すること、
少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、
（ｉ）前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用すること、および、
（ｉｉ）前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすことを含む方法。
【請求項２９】
添付図面を参照して実質的に本明細書で述べられるデータ処理装置。
【請求項３０】
添付図面を参照して実質的に本明細書で述べられるデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関する。より詳細には、本発明は、セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法に関する。
【背景技術】
【０００２】
データ処理装置は、セキュアドメインおよび低セキュアドメインで動作できる。セキュアドメインで動作するとき、低セキュアドメインで動作するときにアクセス可能でないデータがアクセスされうる。これは、おそらくは機密を要するデータおよびコードを、権限のない人またはプロセスによるアクセスから隔離する方法を提供する。
【０００３】
データおよびコードをセキュアに維持する１つの方法は、トラストゾーンアーキテクチャを有する英国ケンブリッジ大学のＡＲＭ（登録商標）によって提供され、トラストゾーンアーキテクチャでは、セキュア状態と非セキュア状態が存在し、状態間を移行するために例外命令が使用され、例外ハンドラはセキュア側のセキュリティを保護する。この手法は高い程度のセキュリティを提供するが、セキュリティ状態を変更するために、ソフトウェア例外ハンドラの形態のかなりのソフトウェア介入が必要とされ、ソフトウェア介入は、システムの性能を低下させると共に、全ての呼出しが例外ハンドラを通してプロキシされなければならないため、セキュアソフトウェア用の外部アプリケーションプログラムインタフェースＡＰＩを開発するのに必要される労力の量を増加させる。
【０００４】
マイクロコントローラなどの小型システムの場合、セキュリティのレベルとシステムの性能との間の兼ね合いを達成し、したがって、セキュアドメインを実装することに関連するオーバヘッドを適度に低く維持することがより重要である場合がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
第１の態様によれば、本発明は、データ処理装置を提供し、
プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備え、処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理回路は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、処理回路は、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、ターゲットアドレスのプログラム命令について処理回路が動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、処理回路は、
（ｉ）複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令についてドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、
（ｉｉ）ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こす（ｔｒｉｇｇｅｒ）ように構成される。
【０００６】
本技法では、制御フロー変更命令は、複数のドメイン間で処理を切換えるために使用することができる。これは、ドメイン間の変更を制御する、したがって、性能を改善するために、例外および対応するソフトウェア例外ハンドラを使用することが必要でないことを意味する。しかし、制御フロー変更命令が、システムのセキュリティセーフガードを迂回しないことが重要である。
【０００７】
制御フロー変更命令の後で、ターゲットアドレスのプログラム命令がそこで処理される選択ドメインが、ドメイン選択技法を使用して決定される。したがって、同じ制御フロー変更命令は、使用されるドメイン選択技法に応じて、異なるドメインにおける処理に切換えるために使用されうる。
【０００８】
１つのドメイン内のプログラム命令の処理に切換えることをプログラマによって意図される制御フロー変更命令の挙動が、低セキュアドメイン内のコードによって変更される場合に、セキュリティリスクが生じうるため、制御フロー変更命令は、代わりに、異なるドメイン内のプログラム命令の処理に切換えることを本技法は認識する。たとえば、低セキュアドメイン内のコードは、制御フロー変更命令のターゲットアドレスを変更する場合がある。例として、低セキュアドメイン内の命令への切換えをもたらすことを意図される、セキュアドメイン内で実行される制御フロー変更命令が存在する場合がある。しかし、制御フロー変更命令のターゲットアドレスは、セキュアドメイン内で処理されるプログラム命令を指すように、低セキュアドメイン内のコードによって設定されるため、今度は、制御フロー変更命令は、代わりにセキュアドメイン内での処理に切換えることができる。これは、ハッカーが低セキュアドメイン内のコードを使用して、セキュアドメインからセキュアコードへの制御されない移行を引き起こすことを可能にしうる。その理由は、通常、セキュア処理が信頼されると予想されるため、セキュア−セキュア切換えが監視されないことになるためである。これは、セキュリティ違反（ｂｒｅａｃｈ）をもたらしうる。
【０００９】
この問題に対処するために、処理回路は、少なくともセキュアドメイン内にある間に制御フロー変更命令が実行されるときに、ドメインチェッキングを実施することができる。ドメインチェッキングは、複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定する。実際のドメインがドメイン選択によって決定されるため、ドメインチェッキングは、ターゲットアドレスのプログラム命令についてシステムが動作することになる実際のドメインに影響を及ぼさない。しかし、ドメインチェッキングは、制御フロー変更命令が、予想されるドメイン移行をもたらしたことを、システムが検証することを可能にする。ドメイン選択で決定されたドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーが引き起こされうる。こうして、低セキュアコードが、制御フロー変更命令を予想されない方法で作用させる場合、セキュアデータに対する権限のないアクセスを防ぐために、エラーが引き起こされうる。
【００１０】
制御フロー変更命令は、処理される命令の非順次移行をもたらす任意の命令とすることができる。最も一般的には、制御フロー変更命令は、分岐命令を含むことができる。しかし、制御フロー変更命令はまた、他の種類の命令、たとえば、処理される次の命令を指示するプログラムカウンタを記憶するレジスタに値をロードするロード命令を含むことができる。
【００１１】
低セキュアドメインにある間に実行される制御フロー変更命令についてドメインチェッキングを実施することは必須ではない。低セキュアドメイン内の命令がより厳格なチェックを受けるべきであることが一般に予想されるため、これは反直観的である場合がある。しかし、しばしば、低セキュアドメインからセキュアドメインへの移行を調節するための何らかの他のメカニズムが存在するであろう。一方、上述したタイプの攻撃が最も問題になるのは、セキュアドメイン内にあるときである。その理由は、一般に、システムが既にセキュアドメイン内にあるとき、コードは、信頼され、正しく働いていると仮定されることになるため、このことが、低セキュアコードを使用するハッカーによって利用されて、セキュアドメイン内の制御フロー変更命令の挙動が変更されうるからである。したがって、ドメインチェッキングは、少なくとも、セキュアドメイン内にある間に実行される制御フロー変更命令について実施される。
【００１２】
それでも、所望される場合、ドメインチェッキングはまた、低セキュアドメインで動作している間に制御フロー変更命令が実行されるときに実施されうる。セキュリティ違反を防ぐと共に、ドメインチェッキングはまた、そのビット値が、パーティクルストライク（ｐａｒｔｉｃｌｅ  ｓｔｒｉｋｅ）または他の種類のエラーのせいで、今や命令が予想通りに作用しないように状態を変更した、破損した命令またはターゲットアドレスを検出するために使用されうる。これは、セキュアドメインと低セキュアドメインの両方において有用でありうる。
【００１３】
制御フロー変更命令に加えて、ドメイン選択はまた、他の命令について実施されうる。たとえば、いくつかのシステムでは、処理回路は、各命令について、命令がどのドメインで処理されるべきかを決定しうる。
【００１４】
ドメイン選択およびドメインチェッキングは、選択ドメインおよび許容ドメイン（複数可）を決定するために異なる技法を使用するため、ドメイン選択は、異なる形態のドメインチェッキングによって検証されうる。たとえば、第１の決定法は、ドメイン選択およびドメインチェッキングの一方のために使用され、第２の決定法は、他方のために使用されうる。一実施形態でドメイン選択のために使用される技法は、別の実施形態ではドメインチェッキングのために使用されることができる、また、その逆も同じである。
【００１５】
一実施形態では、セキュア領域および低セキュア領域を含む複数の領域を有するデータ記憶装置（ｄａｔａ  ｓｔｏｒｅ）が存在する場合があり、セキュア領域は、セキュアドメインで動作するときに処理回路によってアクセス可能であり、低セキュアドメイン内にあるときにアクセス可能でないデータを記憶するためのものである。低セキュア領域は、セキュアドメイン内にあるとき、および、低セキュアドメイン内にあるとき、の両方において、アクセス可能である。
【００１６】
したがって、第１の決定法は、複数の領域の少なくともどの領域が、ターゲットアドレスのプログラム命令の命令アドレスに対応するかに応じて、少なくとも１つの選択ドメインを決定することを含むことができる。一般に、低セキュアドメインは、プログラム命令の命令アドレスが低セキュア領域に対応する場合、選択ドメインとして選択されることができ、セキュアドメインは、命令アドレスがセキュア領域に対応する場合、選択されることができる。この技法は、ドメイン選択またはドメインチェッキングのいずれかのために使用されることができる。
【００１７】
どの領域が命令アドレスに対応するかは、第１の決定法における唯一の基準でない場合がある。たとえば、いくつかの命令について、第１の決定法はまた、ターゲットアドレスのプログラム命令のタイプに依存する場合がある。同様に、第１の決定法がドメインチェッキングのために使用される場合、複数のドメインが、許容選択ドメインとして選択されうる。
【００１８】
第２の決定法は、選択ドメイン（または、ドメインチェッキングの場合、いくつかの許容選択ドメインのうちの１つの選択ドメイン）として、ターゲットドメイン値によって指示される複数のドメインのうちの１つのドメインを決定することを含むことができる。ターゲットドメイン値は、ターゲットアドレスのプログラム命令がどのドメインで処理されることを予想されるかを指示するために、プロセッサによって維持されることができる。これは、ドメイン選択またはドメインチェッキングの一部とすることができる。
【００１９】
したがって、一例では、ドメイン選択は、ターゲットアドレスのプログラム命令の命令アドレスに対応するデータ記憶装置の領域に基づいて実施されることができ、ドメインチェッキングは、ターゲットドメイン値に基づいて実施されることができる。この場合、ターゲットドメイン値は、制御フロー変更命令が正しい領域内のプログラム命令に切換わったかどうかを検証するためのチェックを提供する。別の例では、ターゲットドメイン値は、ターゲットアドレスのプログラム命令が処理される実際のドメインを制御するために使用されることができ、ドメインチェッキングは、その後、ターゲットアドレスがデータ記憶装置の正しい領域内にあることを検証することができる。
【００２０】
ターゲットドメイン値は、異なる方法で表されることができる。一例では、ターゲットドメイン値は、制御フロー変更命令のエンコーディングにおいて指定されることができる。たとえば、選択ドメインとして異なるセキュリティドメインを指示する異なるターゲットドメイン値に対応するいくつかのバージョンの制御フロー変更命令が存在する場合がある。プログラムを書くとき、プログラマは、変更命令の制御フローによって、選択ドメイン（ドメイン選択の場合）または許容ドメイン（複数可）（ドメインチェッキングの場合）として適切なドメインが選択されるように、どのバージョンの制御フロー変更命令を使用すべきかを選択できる。
【００２１】
あるいは、ターゲットドメイン値は、制御フロー変更命令によって使用されるターゲットアドレスの一部において指定されることができる。この形態のターゲットドメイン値は、ターゲットアドレスを記憶するレジスタを特定する間接制御フロー変更命令について有用でありうる。
【００２２】
ターゲットドメイン値は、ターゲットドメイン値設定命令に応答して設定されることができる。これは、制御フロー変更命令の前に実行されるターゲットドメイン値設定命令を含むことによって、プログラマが、後続の制御フロー変更命令の予想される移行を制御することを可能にする。たとえば、低セキュアドメイン内にある間に関数ポインタがセットされる場合、セキュアドメイン内で関数ポインタを使用する前に、ターゲットドメイン設定命令が、制御フロー変更命令について予想される挙動を設定するために実行されうる。
【００２３】
ターゲットドメイン値設定命令の一例は、低セキュアドメインからセキュアドメインへの移行を防ぐために使用されるガード命令を含む。セキュア関数の中央への制御されない切換えを回避することがしばしば重要である。その理由は、このことが、時として、セキュア関数において予め実施されるセキュリティチェックを迂回しうるためである。こうした切換えを防止するために、システムは、低セキュアドメインからセキュアドメインに処理が切換わる時点で、ガード命令が存在しなければならないことを必要としうる。セキュア領域内のターゲットアドレスのプログラム命令を処理することに切換える前に、処理回路が低セキュアドメインでそれについて動作していた制御フロー変更命令の後で、ターゲットアドレスのプログラム命令がガード命令でない場合、エラーが引き起こされうる。したがって、ガード命令は、セキュアコードへの信頼されるエントリポイントをマーク付けするために使用されるべきである。ガード命令は、ターゲットドメイン値を設定するのに有用でありうる。その理由は、ターゲットアドレスが、セキュアドメイン内で使用するために低セキュアドメイン内で設定されると、セキュアドメインへのエントリが存在しなければならず、したがって、ガード命令が実行されることになるからである。ガード命令を使用してターゲットドメイン値を設定することにより、この目的のためのさらなる命令の実行を実行する必要がない。
【００２４】
特に、ガード命令は、後続の制御フロー変更命令が処理を切換えることになる戻りアドレス用のターゲットドメイン値を設定するのに有用である場合がある。ガード命令の存在は、しばしば、セキュアドメイン内の関数が低セキュアコードによって呼出された可能性があるというリスクが存在するため、低セキュアドメインによって指定された戻りアドレスのプログラム命令に切換えるように処理を引き起こす後続の関数戻り制御フロー変更命令が存在しうることをプログラマが予想することを意味する。この可能性を防ぐために、関数戻り用の予想される移行をセットアップするために、戻りアドレス用のターゲットドメイン値を設定するためにガード命令が使用されうる。
【００２５】
一例では、ターゲットドメイン値設定命令が実施される前に、処理回路が低セキュアドメインで動作していた場合、ターゲットドメイン値は、低セキュアドメインを指示するために設定されうる。たとえば、ターゲットドメイン値設定命令がガード命令である場合、そして、ガード命令に切換える前にシステムが低セキュアドメイン内にあった場合、後続の関数戻りは、低セキュアドメインに戻るように切換えるべきであることが予想される。
【００２６】
データ記憶装置は、セキュアスタックおよび低セキュアスタックを含む複数のスタックを有することができ、セキュアスタックは、セキュアドメイン内にあるときにアクセス可能であり、低セキュアドメイン内にあるときにアクセス可能でない。低セキュアスタックは、セキュアドメインおよび低セキュアドメインからアクセスされうる。
【００２７】
関数が制御フロー変更命令を使用して呼出されるとき、時として、関数呼出しの後に実行されるコードが使用するために、関数呼出しの前に実行されているコードから関数引数（データ値）を渡すことが望ましい場合がある。スタックは、関数引数を渡すために使用されることができる。関数呼出しがセキュアドメインから低セキュアドメインへの移行をもたらす場合、セキュアスタックが処理回路にとってアクセス可能でないため、引数は、低セキュアスタック上に配置される必要があることになる。一方、関数呼出しがセキュアドメインからセキュアドメインへの移行をもたらす場合、引数は、低セキュアコードがこれらのデータ値にアクセスすることを防止するために、セキュアスタック内に配置されるべきである。したがって、セキュアドメイン内で関数呼出しを実行すると、どのスタックを使用すべきかについての決定は、関数呼出しの後のオペレーションのドメインに依存することになる。ターゲットドメイン値は、ターゲットアドレスなどに基づいて、関数呼出しがどのドメインを他の技法に切換えると予想されるかについての迅速な指示を提供しうる。したがって、関数引数を渡すためにどのスタックを使用すべきかを決定するためにターゲットドメイン値を再使用することは、その関数への迅速な切換え、したがって、処理性能の改善を可能にする。
【００２８】
ターゲットドメイン値についての別の使用は、関数戻りアドレスを設定することにある。一般に、関数を呼出すとき、第１の制御フロー変更命令が実行され、関数から戻るとき、第２の制御フロー変更命令が実行されることになる。第１の制御フロー変更命令が発生すると、戻りアドレスは、通常、第２の制御フロー変更命令に応答して処理が戻るべきであるロケーションを指示するために所定の記憶ロケーション（たとえば、リンクレジスタ）に記憶される。セキュアドメイン内のコードから低セキュアドメイン内の関数を呼出すときに生じる１つの問題は、戻りアドレスが機密である場合があることであるため、低セキュアドメインが戻りアドレスにアクセスすることを防止することが望ましい場合がある。
【００２９】
この問題に対処するために、第１の制御フロー変更命令が、セキュアドメインで実行され、低セキュアドメインへの移行をもたらすことに応答して、ダミー戻りアドレスであって、有効命令アドレスでない、ダミー戻りアドレスは、所定の記憶ロケーションに記憶されることができる。実際の戻りアドレスは、低セキュアドメイン内にある間、アクセス可能でないセキュア記憶ロケーション（たとえば、セキュアスタックまたはセキュアメモリ領域）に記憶されることができる。第２の制御フロー変更命令が実行されると、プロセッサは、戻りアドレスがダミー戻りアドレスであることを検出し、その後、セキュア記憶ロケーションから実際の戻りアドレスを取出させる。処理は、その後、その関数から戻るために、実際の戻りアドレスに切換えられうる。
【００３０】
したがって、セキュアドメインから関数を呼出すとき、実際の戻りアドレスが所定の記憶ロケーションに記憶されるべきか、ダミー戻りアドレスが所定の記憶ロケーションに記憶されるべきかを判定するために、関数が、セキュアドメイン内で処理されることになるか、低セキュアドメイン内で処理されることになるかを判定することができることが有用である。これは、ターゲットドメイン値を使用して迅速かつ容易に行われうる。
【００３１】
ターゲットドメイン値は、種々の方法で表されうる。制御フロー変更命令のエンコーディングまたは制御フロー変更命令によって使用されるターゲットアドレスのエンコーディングのいずれかにおいて冗長データフィールドを使用することが有用でありうる。たとえば、所与の機能のために元々意図されたフィールドは、その機能がデータ処理装置によってサポートされない場合、重要でない場合があるため、このフィールドは、ターゲットドメイン値を指示するために再使用されうる。これは、ターゲットドメイン値のためにさらなるビットフィールドを付加する必要性を回避させる。
【００３２】
たとえば、一部のシステムは、複数の命令セットからの命令を実行しうる。こうしたシステムでは、制御フロー変更命令またはターゲットアドレスは、ターゲットアドレスの命令が、第１の命令セットからのものであるか、第２の命令セットからのものであるかを指示するターゲット命令セットフィールドを含むことができる。これは、プロセッサが、制御フロー変更命令を実行するときにターゲットアドレスの命令をどのように復号するかを決定することを可能にする。他のシステムは、これらの命令セットのうちの１つの命令セットを実行できるだけであるが、２つの命令セットをサポートするシステム用に設計された命令を依然として実行する場合がある。この場合、命令のターゲット命令フィールドまたはターゲットアドレスは、冗長になる場合がある。したがって、このフィールドは、ターゲットドメイン値を指示するために再使用されうる。
【００３３】
ターゲット命令セットフィールドは、第１の命令セットを指示する第１の値および第２の命令セットを指示する第２の値を有することができる。第１の命令セットが処理回路によってサポートされる命令セットであり、第２の命令が処理回路によってサポートされない場合、第１の値が選択ドメインとしてセキュアドメインを指示し、第２の値が選択ドメインとして低セキュアドメインを指示するように、ターゲット命令セットフィールドの値をターゲットドメイン値の値にマッピングすることが有用でありうる。第１の命令セットだけがサポートされるため、これは、第１の命令セットの命令を使用して書かれたソフトウェア内の既存の制御フロー変更命令が、ターゲット命令セットフィールドの第１の値を指定することを意味することになる。一般にセキュアドメインで実行されるほとんどの制御フロー変更命令は、セキュアドメイン内の他のロケーションへの移行をもたらすことを意図されるため、異なるターゲットドメイン値を指示するために比較的少数の命令またはターゲットアドレスが修正される必要があるように、この値を、セキュアドメインを指示するターゲットドメイン値にマッピングすることが有用である。低セキュアドメインに切換えることを意図される、セキュアドメイン内の制御フロー変更命令用のターゲットドメイン値だけが、（たとえば、選択ドメインとして低セキュアドメインを指示するために、先のターゲットドメイン値設定命令を付加することによって）変更される必要があることになる。したがって、ターゲットドメイン値に対するターゲット命令セットフィールドのこのマッピングを採用することは、レガシーコードに関する後方互換性を可能にする。
【００３４】
ターゲットドメイン値のこのマッピングが使用されるとき、レガシーコードに関する後方互換性を改善するために制御フロー変更命令が低セキュアドメインで実施されるときにドメインチェッキングを実施することを省略することが有用である。低セキュアドメイン内のほとんどの制御フロー変更命令は、同様に低セキュアドメイン内の別の命令への移行をもたらすことになる。しかし、ターゲットドメイン値の上記マッピングを使用して、第１の命令セットのレガシー命令は、セキュアドメインが選択ドメインであると予想されることを指示することになる、ターゲット命令セットフィールド内の第１の値を指示することになる。したがって、ドメインチェッキングが同様に低セキュアドメインで実施される場合、低セキュアドメインで実施されるほとんどの制御フロー変更命令に関連するターゲットドメイン値は、ドメインチェックエラーを防止するために修正される必要があることになる。これは、レガシーコードに関するシステムの後方互換性を減少させることになる。低セキュアドメインからセキュアドメインへの移行を制御するためにガード命令などの他のメカニズムが既に設けられうるため、いずれにしても、ドメインチェッキングが、低セキュアドメイン内の命令にとってあまり重要でないことから、前もって書かれたコードが修正される必要がないように、低セキュアドメイン内にあるときドメインチェッキングを省略することがより効率的でありうる。
【００３５】
しばしば、ドメインチェッキングは、プログラム命令について許容選択ドメインとして単一ドメインを決定することになる。たとえば、セキュアコードにおいて、低セキュアドメインに戻るように切換えると考えられる制御フロー変更命令が存在する場合があるため、低セキュアドメインだけが許容ドメインとして選択されうる。
【００３６】
しかし、他の場合には、同じプログラム命令用の許容選択ドメインとして複数のドメインを決定することが有用である場合がある。たとえば、時としてセキュアドメインに切換えるために使用され、時として低セキュアドメインに切換えるために使用されることができるセキュアドメイン内のいくつかの制御フロー変更命令が存在する場合がある。この場合、複数の許容ドメインを選択することによって、この命令は、命令がどのドメインに切換わるかによらず、ドメインチェックエラーを引き起こすことなく実行されうる。別の例では、低セキュアドメイン内にあるときにドメインチェックエラーはそれほど重大でないため、低セキュアドメイン内の制御フロー変更命令について、両方のドメインが許容ドメインとして設定されうる。
【００３７】
複数の許容ドメインを選択することが有用でありうる別の命令は、ガード命令である。たとえば、同じプログラム関数が、セキュアドメインまたは低セキュアドメインのいずれかから呼出されることができ、その場合、ガード命令は、通常、低セキュアドメインからの許容エントリポイントを指示するために関数の始めに存在することになる。低セキュアドメインから関数を呼出す場合、ガード命令が存在しない場合、セキュアドメインへの切換えが存在しないように、ガード命令が存在するかどうか判定されるまで、低セキュアドメインからの切換えを延期することが望ましい場合がある。したがって、ガード命令は、関数が、セキュアドメインから呼出されるか、低セキュアドメインから呼出されるかに応じていずれかのドメインで働くことができる場合がある。この場合に起こるドメインチェックエラーを防止するために、ガード命令がメモリのどの領域に存在するか、または、ターゲットドメイン値の値によらず、ガード命令についてセキュアドメインと低セキュアドメインの両方を許容ドメインとして設定することが好都合である場合がある。
【００３８】
セキュアドメインで実行される少なくとも１つの制御フロー変更命令の場合、時として、ターゲットアドレスのプログラム命令を処理することに切換える前に、セキュアドメイン内で動作することから非セキュアドメイン内で動作することへ切換えることが有用でありうる。これは、切換えの後で、システムが、低セキュアドメイン内の命令に由来するように見えるため、ガード命令が、エラーを回避することを必要とされることを意味する。これは、セキュアドメイン内の安全エントリポイントへの切換えを当てにされない制御フロー変更命令、たとえば、ターゲットドメイン値が許容ドメインとして低セキュアドメインを指示する制御フロー変更命令について有用である（この場合、低セキュアコードが、制御フロー変更命令についてターゲットアドレスを設定した可能性がある）。
【００３９】
別の態様から見ると、本発明は、データ処理装置を提供し、データ処理装置は、
プログラム命令に応答して、データ処理オペレーションを実施するための処理手段を備え、処理手段は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理手段は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、処理手段は、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、処理手段が、ターゲットアドレスのプログラム命令について動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、処理手段は、
（ｉ）複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、ドメインチェッキングは、ドメイン選択とは異なる技法を使用し、
（ｉｉ）ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成される。
【００４０】
さらなる態様から見ると、本発明は、プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備える装置用のデータ処理方法を提供し、処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理回路は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、前記方法は、
制御フロー変更命令の実行に応答して、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換えること、
ターゲットアドレスのプログラム命令について処理回路が動作する選択ドメインを決定するためのドメイン選択を実施すること、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、
（ｉ）複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、ドメインチェッキングは、ドメイン選択とは異なる技法を使用すること、および、
（ｉｉ）ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすことを含む。
【００４１】
本発明の上記のまた他の目的、特徴、および利点は、添付図面に関連して読まれる、例証的な実施形態の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００４２】
【図１】データ処理装置を概略的に示す図である。
【図２】低セキュア領域およびセキュア領域を有するメモリアドレス空間を示す図である。
【図３Ａ】低セキュア領域内の命令がセキュア領域内の分岐命令用のターゲットアドレスを設定するプログラムコードの例を示す図である。
【図３Ｂ】ハッカーが図３Ａの低セキュアコードを変更する場合に起こりうるセキュリティ問題を示す図である。
【図４Ａ】制御フロー変更命令の命令エンコーディングの一部を使用してターゲットドメイン値を指示する例を示す図である。
【図４Ｂ】ターゲットドメイン値が制御フロー変更命令のターゲットアドレスの一部によって表される例を示す図である。
【図５】ドメイン選択およびドメインチェッキングを含むデータ処理方法を示す図である。
【図６】ドメイン選択またはドメインチェッキングのいずれかのために使用されうる第１の決定法の例を示す図である。
【図７】ドメイン選択またはドメインチェッキングのいずれかのために使用されうる第２の決定法の例を示す図である。
【図８】図３Ｂに示すセキュリティ問題が、ドメイン選択を検証するためにドメインチェッキングを実施することによってどのように阻止されうるかの例を示す図である。
【図９】セキュアコードにアクセスする関数ポインタを使用しようとする低セキュアコードを防ぐためにドメインチェッキングを使用する例を示す図である。
【図１０】関数呼出しおよび関数戻りを扱う例を示す図である。
【図１１】関数呼出しおよび関数戻りを扱う例を示す図である。
【図１２】関数引数を渡すために低セキュアスタックおよびセキュアスタックのいずれを使用すべきかを選択する例を示す図である。
【図１３】さらなるセキュアコードを処理することに切換えるために、低セキュアコードにとってセキュアコードを制御することが適法である場合がある状況の例を示す図である。
【図１４】図１３の状況が安全にかつエラーを引き起こすことなくどのように達成されうるかの第１の例を示す図である。
【図１５】図１３の状況が安全にかつエラーを引き起こすことなくどのように達成されうるかの第２の例を示す図である。
【発明を実施するための形態】
【００４３】
図１は、処理回路４、データ記憶装置（メモリ）６、およびレジスタ８を備えるデータ処理装置２を概略的に示す。データ記憶装置は、少なくとも１つのキャッシュならびに主メモリを含むことができる。処理回路４は、メモリ６から命令をフェッチするためのフェッチステージ１０、フェッチされた命令を復号するためのデコードステージ１２、および復号命令を実行するための実行ステージ１４を含む処理パイプラインを備える。パイプラインは、他のタイプのステージ、たとえばレジスタリネーミングステージまたは発行ステージを含むことができることが認識されるであろう。
【００４４】
レジスタ８は、処理回路４のためにデータを記憶するための、いくつかの汎用レジスタＲ０〜Ｒ１２を含む。図１は、１３個の汎用レジスタＲ０〜Ｒ１２を含むが、他の数のレジスタが設けられることができ、また任意選択で、浮動小数点値を記憶するための浮動小数点レジスタもまた設けられうることが認識されるであろう。レジスタ８はまた、プログラムカウンタ（ＰＣ）レジスタ２０、リンクレジスタ（ＬＲ）２２、およびスタックポイントレジスタ２４、２６を含むいくつかの専用レジスタを含む。プログラムカウンタレジスタ２０は、処理回路４によって実行される次のプログラム命令の命令アドレスを指示するプログラムカウンタを記憶する。一般に、命令の実行の後に、プログラムカウンタは、メモリから次の命令を指示するために更新されることになる。しかし、制御フロー変更命令に応答して、プログラムカウンタは、前の値から順次に追従しない値に設定されうる。リンクレジスタ２２は、関数または例外の終了の後にどのプログラム命令が処理されるべきかを決定するために、関数または例外から戻るときに使用される戻り値を記憶するように設定されることができる。スタックポイントレジスタ２４、２６は、メモリ６内のスタック３０、３２のロケーションを指示するスタックポインタを記憶する。たとえば、スタックポインタは、スタック３０、３２上に配置された最後のアイテムのロケーションを指示しうる。
【００４５】
メモリ６は、セキュア領域４０および低セキュア領域５０を含む。図２に示すように、アドレスメモリ６のメモリアドレス空間は、セキュア領域と低セキュア領域に分割されることができ、ある範囲のメモリアドレスはメモリのセキュア領域４０に対応し、他の範囲のメモリアドレスは低セキュア領域５０に対応する。メモリ保護ユニット（ＭＰＵ）６５は、異なる領域へのアドレス空間のパーティショニングを制御しうる。図２は、１つのセキュア領域および１つの低セキュア領域を示すが、メモリアドレス空間が、２つ以上のディスクリートセキュア領域および２つ以上のディスクリート低セキュア領域を含むことも可能である。メモリアドレス空間はまた、アドレス値が任意の有効命令アドレスに対応しない予約済みアドレス範囲７０（たとえば、０ｘＦ０００００００以上）を含む。これらのアドレスは、例外戻りおよび関数戻りを扱うときなどに特別の目的のために使用されうる。セキュア領域４０および低セキュア領域５０はそれぞれ、プログラムコード６０および対応するスタック３０、３２を含むことができる。別個のセキュアおよび低セキュアポインタレジスタ２４、２６は、セキュア領域４０内のセキュアスタック３０および低セキュア領域５０内の低セキュアスタック３２用のスタックポインタを維持するために使用される。
【００４６】
処理回路４は、セキュアドメインおよび低セキュアドメインで動作しうる。処理回路４は、セキュアドメイン内にあるとき、メモリ６のセキュア領域４０内のデータおよびコードにアクセスでき、また同様に、低セキュア領域５０内のデータおよびコードにアクセスできる。しかし、処理回路４が低セキュアドメイン内にあるとき、低セキュア領域５０だけがアクセスされることができ、セキュア領域４０はアクセス不能である。これは、低セキュアドメイン内の信頼されないコードがセキュアデータにアクセスすることを防止する。図１および図２は、１つのセキュアドメイン、１つの低セキュアドメイン、ならびに対応するセキュア領域４０および低セキュア領域５０が存在する例を示すが、３つ以上のドメインおよび領域を設けることも可能である。たとえば、それぞれがセキュリティレベルを有するいくつかのセキュアドメインまたはいくつかの低セキュアドメインが存在する場合がある。いくつかの実施形態では、各ドメインは、異なるセキュリティレベルを有することができる。他の実施形態では、同じセキュリティレベルを有する複数のドメインが存在しうる。
【００４７】
一般に、図１のシステムは、処理回路４が、メモリ６のセキュア領域４０からのコードを実行しているときセキュアドメイン内にあり、処理回路４が、メモリ６の低セキュア領域５０からのコードを実行しているとき低セキュアドメイン内にあるように動作する。しかし、図３Ａおよび図３Ｂは、使用されるのがドメイン決定技法だけである場合に生じうるセキュリティ問題の例を示す。
【００４８】
図３Ａでは、プログラムコード６０は、低セキュアドメイン内の関数ｂｏｂ（）ならびにセキュアドメイン内の２つの関数ｊｏｅ（）およびｆｒｅｄ（）を含む。関数ｊｏｅ（）は、ｂｏｂ（）によって呼出され、ｂｏｂ（）によって提供されるパスワードが有効であるかどうかをチェックする。パスワードが有効である場合、ｊｏｅ（）は、セキュア処理を実施するために関数ｆｒｅｄ（）を呼出す。明らかに、関数ｆｒｅｄ（）は、関数ｊｏｅ（）におけるパスワードチェックがパスする場合、実行されうるだけであることが望ましい。図３Ａは、コードが正しく働く場合を示す。関数ｂｏｂ（）は、関数ｊｏｅ（）を呼出す分岐命令１００を含む。図３Ａに示すように、分岐命令１００は、戻りアドレス（ＰＣ＋４）をリンクレジスタ２２に配置させ、関数ｊｏｅ（）のアドレスをプログラムカウンタレジスタ２０に配置させる。戻りアドレスは、関数ｊｏｅ（）が終了すると処理が切換わるべきである命令のアドレスを表す。プログラムカウンタレジスタ２０の更新は、処理を、関数ｊｏｅ（）の開始アドレスにジャンプさせる。関数ｊｏｅ（）用のコードがセキュア領域４０に記憶されるため、ｊｏｅ（）はセキュアドメインで処理されることになる。
【００４９】
分岐命令または他の制御フロー変更命令に応答して低セキュアドメインからセキュアドメインに変わるとき、ガード命令１０２が、分岐命令１００のターゲットアドレスに存在しなければならず、そうでなければ、ガードチェックエラーが引き起こされることになる（このメカニズムは、メモリのセキュア領域内の関数の中央に分岐する、低セキュアドメイン内の分岐を防ぐ）。この場合、ガード命令１０２が存在するため、処理は、セキュアドメイン内で継続しうる。関数ｊｏｅ（）は、その後、ｂｏｂ（）によって提供されるパスワードが記憶されたパスワードに一致するかどうかをチェックし、そうである場合、関数ｆｒｅｄ（）を呼出す。ｆｒｅｄ（）が終了すると、別の分岐命令１０４が、そのアドレスがリンクレジスタ２２に記憶されるプログラム命令への分岐をもたらすことによって、処理を低セキュアドメインに戻す。
【００５０】
図３Ｂは、ハッカーが、正しいパスワードなしでセキュア関数ｆｒｅｄ（）にアクセスしうるセキュリティリークの例を示す。図３Ａに示すように、ｊｏｅ（）を呼出すと、ｂｏｂ（）は、関数戻りアドレスＰＣ＋４をリンクレジスタ２２に書込むと考えられる。しかし、代わりにハッカーは、ＭＯＶ命令１０６がリンクレジスタ２２に関数ｆｒｅｄ（）のアドレスを配置するようにｂｏｂ（）を書くことができる。したがって、正しいパスワードが供給されないためにｊｏｅ（）内のパスワードチェックが失敗しても、ｊｏｅ（）内の関数戻り分岐１０４は、リンクレジスタ２２に記憶されたアドレス、すなわち関数ｆｒｅｄ（）のアドレスに分岐することになる。したがって、正しいパスワードなしで、低セキュアドメインは、セキュアドメインに、関数ｆｒｅｄ（）を実施させることができた。
【００５１】
さらに、処理を関数ｆｒｅｄ（）に切換えさせた分岐命令１０４が、セキュアドメインで実行されたため、システムは、ガード命令がｆｒｅｄ（）内に存在することを必要としないことになる。したがって、ハッカーは、信頼されない低セキュアコードを使用してセキュアデータまたはセキュアコードに対する権限のないアクセスをもたらしうる、メモリ６内の任意のセキュアロケーションへの分岐を引き起こしうる。
【００５２】
このタイプの攻撃を防止するために、分岐命令などの制御フロー変更命令の後に、プロセッサがどのドメインで動作すると予想されるかを決定するための第２の技法を提供するターゲットドメイン値が提供される。制御フロー変更命令のターゲットアドレスに基づく第１の決定技法と共に、選択領域を決定する２つの異なる方法が存在する。少なくともセキュアドメインで実行される制御フロー変更命令の場合、１つの技法は、分岐後に、プロセッサがどのドメインで実際に動作すべきかを選択するために使用され、他の技法は、選択ドメインが許容ドメインであることをチェックするために使用されうる。ドメイン選択における選択ドメインが許容ドメインに一致しない場合、エラーが引き起こされ、したがって、図３Ｂに示すタイプの攻撃が阻止されうる。
【００５３】
図４Ａは、ターゲットドメイン値を維持する第１の例を示す。分岐命令などの制御フロー変更命令１５０は、ターゲットドメイン値を表すためのビットフィールドＴを含みうる。ターゲットドメイン値Ｔが１つの値（たとえば、Ｔ＝１）を有する場合、この命令が、セキュアドメインに分岐すると予想されることを指示し、別の値（たとえば、Ｔ＝０）を有する場合、命令は、低セキュアドメインに分岐すると予想される。図４Ｂは、ターゲットドメイン値Ｔがターゲットアドレスのビットによって表されうる別の例を示す。これは、分岐命令または他の制御フロー変更命令１５５がターゲットアドレスを記憶するレジスタを指定するときに有用でありうる。図４Ａおよび図４Ｂの例では、ターゲットドメイン値は、冗長ビットフィールドによって表され、冗長ビットフィールドは、ターゲットアドレスの命令が、第１の命令セットからであるか、第２の命令セットからであるかを表すために前もって使用された。処理回路４は、第１の命令セットをサポートするだけであるため、このビットフィールドは冗長になっており、したがって、ターゲットドメイン値のために再使用される。図４Ａに示すターゲットドメイン値に対するターゲット命令設定フィールドの値のマッピングは、レガシーコードに関する後方互換性を改善する。
【００５４】
図５は、制御フロー変更命令を処理する例を示す。ステップ２００にて、処理回路４は、次の命令が制御フロー変更命令であるかどうかを判定する。制御フロー変更命令は、新しい値をプログラムカウンタレジスタ２０にロードする分岐命令または別の命令などの、プログラムカウンタレジスタ２０に対する非順次変更をもたらす任意の命令とすることができる。命令が制御フロー変更命令でない場合、ステップ２０２にて、処理回路４は、他の種類の命令を処理する。処理は、その後、次の命令に移動する。
【００５５】
目下の命令が制御フロー変更命令である場合、前記方法は、ステップ２０４に移動し、そこで、処理回路４は、どのドメインが、ターゲットアドレスのプログラム命令についてプロセッサ４が動作すべきである選択ドメインであるかを決定する。これが実施されるタイミングは、変動する場合がある。たとえば、それは、制御フロー変更命令の実行に応答して、または、制御フローの変更の後にターゲットアドレスのプログラム命令の実行に応答して、実施されることができる。図６および図７で論じるように、ドメイン選択は、第１の決定技法または第２の決定技法を使用して実施されうる。
【００５６】
ステップ２０６にて、処理回路は、制御フロー変更命令がセキュアドメインで実行されたかどうかを判定する。そうである場合、ステップ２０８にて、処理回路は、ドメインのうちのどのドメインが、ターゲットアドレスのプログラム命令についてドメイン選択が選択することを許容される許容選択ドメインであるかを決定するためにドメインチェッキングを実施する。ステップ２１０にて、処理回路は、ステップ２０４にて選択されたドメインが、ステップ２０８にて選択された許容選択ドメインであるかどうかを判定する。許容選択ドメインでない場合、ステップ２１２にて、ドメインチェックエラーが引き起こされる。一方、選択ドメインが許容選択ドメインに一致する場合、ステップ２１４にて、ターゲットアドレスの命令が、選択ドメインで処理される。前記方法は、その後、次の命令のためにステップ２００に戻る。
【００５７】
その間に、ステップ２０６にて、制御フロー変更命令を実行するときにシステムがセキュア状態になかったと判定された場合、ステップ２２０にて、ターゲット命令がセキュア領域からであるかどうかが判定される。セキュア領域からでない場合、前記方法は、ステップ２１４に進み、そこで、ターゲットアドレスの命令が、低セキュアドメインで処理される。この場合、制御フロー変更命令およびターゲットアドレスのターゲット命令は共に、低セキュア領域内にあるため、処理されているセキュアコードが存在しないことから、変更が許容可能である。
【００５８】
しかし、ステップ２２０にて、ターゲットアドレスの命令がセキュア領域からであると判定される場合、ステップ２２２にて、その命令がガード命令であるかどうかが判定される。ガード命令でない場合、ステップ２２４にて、ガードチェックエラーが引き起こされ、前記方法が終了する。したがって、非セキュアドメインからセキュアドメインへ変わるとき、切換え後の第１の命令は、ガード命令でなければならない。これは、セキュリティリークをもたらしうる、非セキュアコードがセキュアコード内の任意のポイントに分岐できることを防止する。一方、ステップ２２２にて、命令がガード命令である場合、前記方法は、引き続きステップ２１４に行き、そこで、命令が処理され、その後、前記方法は、次の命令のためにステップ２００に戻る。
【００５９】
図５は、制御フロー変更が低セキュアドメインで実行される場合、ドメインチェッキングが実施されない例を示す。しかし、所望される場合、ドメインチェッキングはまた、低セキュアドメインで実施されうる。
【００６０】
図５は、選択ドメインを決定するための２つの技法を示す。ステップ２０４にて実施されるドメイン選択は、命令が処理される実際のドメインを決定する。ドメインチェッキングは、このドメインが許容ドメインであることをチェックするためにステップ２０８にて実施される。図６および図７は、使用されうる２つの決定技法を示す。
【００６１】
図６は、第１のドメイン決定技法を示す。ステップ２３０にて、処理回路４は、メモリ６のどの領域が、処理される次の命令のアドレスを含むかを決定する。たとえば、処理回路４は、どのメモリ領域がアドレスに対応するかについての指示を戻しうるメモリ保護ユニット６５にアドレスを送ることができる。命令アドレスが低セキュア領域５０内にある場合、ステップ２３２にて、低セキュアドメインが選択ドメインとして選択され、一方、命令アドレスがセキュア領域４０内にある場合、ステップ２３４にて、セキュアドメインが選択ドメインとして選択される。この技法は、一般に、ほとんどの命令について実施されることになるが、いくつかの例外が存在する場合がある。選択ドメインを決定するために、異なる技法または他のパラメータが使用されることができるいくつかの命令が存在しうる。たとえば、後で述べるように、ガード命令１０２は、異なる技法を必要とする場合がある。
【００６２】
図７は、図４Ａまたは図４Ｂに示すターゲットドメイン値に基づく第２の決定技法を示す。ステップ２５０にて、ターゲットドメイン値Ｔの値が決定される。ターゲットドメイン値が０の値を有する場合、ステップ２５２にて、低セキュアドメインが選択ドメインとして選択され、一方、ターゲットドメイン値が１の値を有する場合、ステップ２５４にて、セキュアドメインが選択ドメインとして選択される。ターゲットドメイン値Ｔの値に対するドメインの異なるマッピングが使用されうるが、図４Ａおよび図７に示すマッピングは、レガシーコードに関する後方互換性のために有用であることが認識されるであろう。
【００６３】
図６および図７に示す第１の決定法および第２の決定法は、ドメイン選択またはドメインチェッキングのいずれかのために使用されうる。一例では、図６に示す第１の決定法は、プロセッサが動作する実際のドメインを選択するためのドメイン選択のために使用され、ターゲットドメイン値に基づく図７に示す第２の決定法は、何が許容選択ドメインであるかを見出すためのチェックとして使用されうる。他方、ターゲットドメイン値（第２の決定法）は、実際のドメイン選択を引き起こすために使用され、一方、次の命令のアドレス（第１の決定法）は、ターゲットアドレスが、ターゲットドメイン値で指示されるドメインに一致したかどうかを調べるためのチェックとして使用されうる。いずれにしても、セキュアドメイン内のコードは、制御フロー変更命令が分岐すると予想されるドメインを指示するようにターゲットドメイン値を設定するために使用されうる。
【００６４】
図８および図９は、セキュアコードに対する権限のないアクセスが、ドメインチェッキングを使用して防止されうる例を示す。図８は、図３Ｂの場合と同じ状況を示す。やはり、ハッカーは、セキュアドメイン１０４内の関数戻り分岐命令１０４を、セキュア関数ｆｒｅｄ（）に切換わらせようとして、リンクレジスタ２２に関数ｆｒｅｄ（）のアドレスを配置するために関数ｂｏｂ（）に書込んだ。しかし、ガード命令１０２に応答して、処理回路４は、リンクレジスタ２２内のアドレス用のターゲットドメイン値Ｔを、関数戻り分岐１０４が、メモリの低セキュア領域内の命令に分岐すべきであることを指示する値０に設定する。関数戻り分岐命令１０４が実行されると、処理は、実際には、セキュア領域内の関数ｆｒｅｄ（）に切換わる。したがって、選択ドメインがセキュアドメインであるべきであると、関数ｆｒｅｄ（）の第１の命令のアドレスに基づいて判定することになる第１の決定法と、選択ドメインが低セキュアドメインであるべきであると、ターゲットドメイン値に基づいて判定することになる第２の決定法との間に不一致が存在することになる。第１の決定法と第２の決定法のいずれがドメイン選択を表すか、また、いずれがドメインチェッキングを表すかによらず、この不一致は、エラーを引き起こさせることになり、そのエラーは、セキュア関数ｆｒｅｄ（）のさらなる処理を阻止することになる。したがって、これは、低セキュアコードを使用するハッカーが、別のセキュアロケーションへのセキュアコードからの分岐を引き起こすことを防止する。
【００６５】
図９は、ドメインチェッキングを実施することが有用でありうる別の例を示す。この例では、セキュリティリスクは、レジスタＲ０に関数ポインタを記憶する、低セキュアドメイン内の関数ｊｏｈｎ（）から生じ、セキュアドメイン内の関数ｂｉｌｌ（）は、その後、その関数ポインタを使用して、関数を呼出す。ｂｉｌｌ（）から関数を呼出す分岐命令３００は、レジスタＲ０で指示されるアドレスに分岐する。関数ポインタがセキュアロケーションに設定された場合、低セキュアコードは、それがガード命令によってマーク付けされた有効セキュアエントリポイントでなくても、任意のセキュアロケーションに切換わるようにセキュアコードを引き起こしうる。よって、これがセキュリティ分岐へとつながりうる。
【００６６】
しかし、関数ポインタが低セキュアドメイン内のアドレスを指すべきであることを指示するために、ターゲットドメイン値Ｔを０に設定する予めのターゲットドメイン設定命令３０２を含むことによって、セキュア関数ｂｉｌｌ（）を書くプログラマは、この種の攻撃を防ぎうる。分岐命令３００に応答して関数ポインタロケーションに分岐すると、ハッカーが関数ポインタをセキュア値に設定した場合、ドメインチェッキングは、命令がセキュア領域内にあるために決定されたセキュアドメインと、ターゲットドメイン値によって指示される低セキュアドメインとの間の不一致を判定することになる。したがって、エラーが引き起こされ、セキュリティ違反が阻止されうる。
【００６７】
図８および図９はエラーが引き起こされる事例を示すが、他の実施形態では、このエラーは、関数ポインタロケーションに、これが制御フローの権限のある変更であること、を指示するガード命令が存在する場合、回避されうる（以下の図１４および図１５を参照）。
【００６８】
図８および図９に示すように、分岐命令に先行するターゲットドメイン値設定命令は、ターゲットドメイン値を所望の値に設定するために使用される。ターゲットドメイン値設定命令は、図８に示すガード命令または図９に示す別の種類のターゲットドメイン値設定命令でありうる。一般に、セキュアコードのプログラマは、制御フロー変更命令が正しく作用することを保証するために、セキュアドメイン内の制御フロー変更命令の前に、プログラムコード内にターゲットドメイン値設定命令を含むべきである。
【００６９】
ターゲットドメイン値Ｔは、他の目的ならびにドメインチェッキングおよびドメイン選択のために有用である場合がある。一例は、図１０および図１１に示される。この例は、関数呼出しおよび関数戻りに関連する。上述した関数ｂｏｂ（）、ｊｏｅ（）などは、通常、リンクレジスタ２２に関数戻りアドレスを配置し、呼出される関数の第１の命令に対応するアドレスに分岐させる第１の制御フロー変更命令、次に、関数戻りアドレスに処理を戻す第２の制御フロー変更命令を使用して呼出されることになる。しかし、関数が、セキュアドメインから呼出され、低セキュアドメインで実行される場合、戻りアドレスは、低セキュアコードから隠蔽される必要がある場合がある。したがって、ダミー戻りアドレスが、リンクレジスタに記憶されうる。たとえば、ダミー戻りアドレスは、図２に示す予約済み範囲７０のアドレスのうちの１つのアドレスでありうる。実際の戻りアドレスは、関数呼出しから戻ると、セキュアドメイン内でアクセスするためのセキュアスタック３０に保存されうる。
【００７０】
ダミーアドレスまたは実際の戻りアドレスがリンクレジスタ２２に保存されるべきかどうかを判定することを容易にするために、ターゲットドメイン値Ｔが使用されうる。これは、図１０および図１１に示される。図１０は、関数呼出しを引き起こす第１の制御フロー変更命令を実行するときの処理を示す。ステップ３５０にて、次の命令が、リンクレジスタに戻りアドレスを配置することになるタイプの分岐命令ＢＬまたはＢＬＸであるか否かが判定される。分岐命令ＢＬまたはＢＬＸである場合、ステップ３６０にて、処理が、目下セキュアドメイン内にあり、分岐が低セキュアドメインに切換わると予想されることを分岐用のターゲットドメイン値Ｔが指示するかどうかが判定される。これが事実でない場合、ステップ３６５にて、実際の戻りアドレスがリンクレジスタ２２に記憶される。しかし、ステップ３６０にて、処理がセキュアドメイン内にあり、処理が低セキュアドメインに切換わる（Ｔ＝０）と予想されることを分岐用のターゲットドメイン値Ｔが指示する場合、ステップ３７０にて、ダミー戻りアドレスがリンクレジスタ２２に記憶される。ステップ３８０にて、実際の戻りアドレスがセキュアスタックに保存される。どのアドレスがリンクレジスタに保存されるかによらず、前記方法は、その後、ステップ３９０に進み、そこで、処理はターゲットアドレスに分岐し、関数が、次に処理される。ターゲットアドレスの命令用のドメイン選択およびドメインチェッキングは、その後、図５に示すように進むことになる。図１０のステップ３６０にて、ターゲットドメイン値は、この決定がターゲットアドレスに基づいた場合、ダミー戻りアドレスまたは実際の戻りアドレスがリンクレジスタに記憶されるべきかどうかについての迅速な判定を可能にする。
【００７１】
最終的に、別の制御フロー変更命令に遭遇することになる（図１１のステップ４００）。ステップ４１０にて、ターゲットアドレスがダミーアドレスであるかどうかがチェックされる。ダミーアドレスでない場合、処理は、ステップ４２０にて、制御フロー変更命令のターゲットアドレスに分岐する。その理由は、これが、関数戻りでない通常の制御フロー変更命令か、または、ターゲットアドレスが、リンクレジスタに記憶された実際の戻りアドレスである関数戻りであるからである。一方、ステップ４１０にて、ターゲットアドレスがダミーアドレスであると判定される場合、ステップ４３０にて、処理は、セキュアドメインに切換わる。ステップ４４０にて、実際の戻りアドレスが、メモリのセキュア領域４０内のセキュアスタックからフェッチされる。その後、ステップ４５０にて、処理は、実際の戻りアドレスに分岐し、その後、ドメイン選択およびドメインチェッキングが、通常通り継続する。
【００７２】
図１２は、ターゲットドメイン値が有用でありうる別の例を示す。関数を呼出すとき、呼出し側関数が、スタックを介して呼出し先関数に関数引数を渡すことが、時として必要である。関数呼出しがセキュアドメインから行われる場合、関数引数が、セキュアスタック３０に記憶されるべきか、低セキュアスタック３２に記憶されるべきかは、呼出し先関数が、セキュアドメインで実行されるか、低セキュアドメインで実行されるかに依存することになる。図１２に示すように、関数引数を渡すために、どのスタックを使用すべきかについての決定は、ターゲットドメイン値Ｔを使用して行われうる。ターゲットドメイン値Ｔを使用することは、呼出し先関数のロケーションを表すターゲットアドレスにどの領域が対応するかを、メモリ保護ユニット６５によってチェックするのに比べてより迅速なターゲットドメインの決定を可能にする。図１２の決定は、処理回路によってハードウェアで、または、処理回路によって実行されるコードによってソフトウェアで実施されることができる。
【００７３】
これまでに示した例は、単一ドメインが特定の制御フロー変更命令について許容ドメインである文脈でドメインチェッキングを説明した。しかし、場合によっては、いくつかのドメインを許容ドメインにすることが望ましい場合がある。図１３は、これの例を示す。図１３は、図９に示す状況に対応するが、この場合、関数ｒｅｇ（）は、低セキュア関数ｍａｒｙ（）によってレジスタＲ０に配置された値に応じて、あるときは、低セキュア領域に戻るべきであり、また、他のときには、セキュア領域内の信頼される関数ａｌｉｃｅ（）に切換わるべきである分岐命令３００を含む。上述した技法によって、予想ターゲットドメインとして低セキュアドメインを指示するために、ターゲットドメイン値設定命令３０２が、レジスタＲ０内の関数ポインタのターゲットドメイン値を設定する場合、ｍａｒｙ（）がレジスタＲ０をセキュアロケーションに設定するときに、エラーが引き起こされることになる。この場合、分岐命令３００を実行すると、ターゲットドメイン値は、選択ドメインとして低セキュアドメインを指示することになり、一方、関数ａｌｉｃｅ（）に分岐すると、ＭＰＵ６５は、選択ドメインとしてセキュアドメインを決定することになる。この特定の分岐が適法である場合、この場合、エラーを引き起こすことを回避することが望ましいが、このタイプの権限のない切換えを依然として防ぐことが望ましい。
【００７４】
図１４および図１５は、これが対処されうる方法を示す。いくつかのプログラム命令の場合、システムは、分岐命令３００の後の挙動によらず、ドメイン切換えが許容されるように、複数のドメインを許容ドメインとして決定しうる。しかし、権限のない切換えを防ぐために、システムは、分岐命令３００の後の第１の命令がガード命令であることを必要としうる。
【００７５】
図１４の例では、ドメイン選択は、ターゲットドメイン値に基づき、ドメインチェッキングは、アドレス用のＭＰＵ６５によって決定される領域に基づく。ガード命令の場合、ＭＰＵ６５は、セキュアドメインと低セキュアドメインの両方を許容ドメインとして決定する。したがって、分岐３００の後で、処理は、ターゲットドメイン値Ｔが０に設定されたので、低セキュアドメインに切換わることになる。しかし、ａｌｉｃｅ（）内のガード命令３０６の場合、第１の決定法に基づくドメインチェッキングは、セキュアドメインと低セキュアドメインの両方を許容ドメインとして選択する。したがって、実際のドメインは、低セキュアドメインであり、これは、許容ドメインのうちの１つの許容ドメインに一致するため、エラーは存在しない。同様に、セキュアコードによって制御されるａｌｉｃｅ（）への分岐の場合、ターゲットドメイン値は、１に設定されることになるため、分岐の後で、システムは、セキュアドメイン内で実行する。したがって、ａｌｉｃｅ（）は、セキュアコードと低セキュアコードの両方からアクセスされ、分岐３００は、セキュアコードと低セキュアコードの両方に正しく切換りうる。分岐３００が、ガード命令でないセキュア領域内のプログラム命令への切換えをもたらした場合、エラーが引き起こされることになる。したがって、任意のセキュアロケーションへの権限のない切換えが、依然として回避されうる。
【００７６】
図１５に示す別の例では、ドメインチェッキングは、ターゲットドメイン値に基づき、ドメイン選択は、命令アドレスが対応するメモリ領域に基づく。この場合、分岐命令３００に応答して、低セキュアドメインとセキュアドメインの両方が、（ターゲットドメイン値によらず）ターゲットアドレスの命令について許容選択ドメインとして選択される。ａｌｉｃｅ（）内のガード命令３０６に分岐すると、ＭＰＵ６５は、ドメインチェッキングによって、許容ドメインのうちの１つの許容ドメインに一致することになるセキュアドメインを選択ドメインとして決定することになる。ターゲットロケーションにガード命令３０６が存在する場合、エラーは引き起こされないことになる。
【００７７】
したがって、ドメイン選択およびドメインチェッキングのいずれが、ターゲットビットを使用するかによらず、システムは、低セキュアドメインによって設定されるアドレスの制御下でセキュアドメインからセキュアロケーションへのいくつかの適法な切換えを可能にしうる。ガード命令は、こうした切換えを確認するために必要とされる。通常、既にセキュアドメイン内にあるとき、ガードチェックは必要とされないことになるため、ガードチェックが実施されることを保証するために、システムは、ターゲットドメイン値が０の値を有するメモリのセキュア領域内の分岐命令３００を実行する前に、低セキュアドメインに切換わりうる。分岐は、セキュアドメインに切換わる場合、低セキュアドメインから生じたように見えるため、エラーを回避するために、ガード命令が、ターゲットアドレスに必要とされることになる。
【００７８】
本出願の主題は、同一譲受人に譲渡され、同時係属中の米国出願第１３／３６８，４１９号および英国特許出願第１２１７５３１．１号に関連し、これらの文書の両方の全体の内容が参照により組込まれる。
【００７９】
本発明の例証的な実施形態が、添付図面を参照して本明細書で詳細に述べられたが、本発明が、これらの厳密な実施形態に限定されないこと、および、添付特許請求の範囲によって規定される本発明の範囲および趣旨から逸脱することなく、当業者によって種々の変更および修正が実施形態において行われうることが理解される。
【符号の説明】
【００８０】
２  データ処理装置
４  処理回路
６  データ記憶装置（メモリ）
８  レジスタ
１０  フェッチステージ
１２  デコードステージ
１４  実行ステージ
２０  プログラムカウンタレジスタ
２２  リンクレジスタ
２４、２６  スタックポイントレジスタ
３０、３２  スタック
４０  セキュア領域
５０  低セキュア領域
６０  プログラムコード
６５  メモリ保護ユニット（ＭＰＵ）
【図１】
2013161479.tif 000003
【図２】
2013161479.tif 000004
【図３Ａ】
2013161479.tif 000005
【図３Ｂ】
2013161479.tif 000006
【図４Ａ】
2013161479.tif 000007
【図４Ｂ】
2013161479.tif 000008
【図５】
2013161479.tif 000009
【図６】
2013161479.tif 000010
【図７】
2013161479.tif 000011
【図８】
2013161479.tif 000012
【図９】
2013161479.tif 000013
【図１０】
2013161479.tif 000014
【図１１】
2013161479.tif 000015
【図１２】
2013161479.tif 000016
【図１３】
2013161479.tif 000017
【図１４】
2013161479.tif 000018
【図１５】
2013161479.tif 000019
【外国語明細書】
2013161479000001.pdf