JP5000573B2 - 保護された関数呼び出し - Google Patents

保護された関数呼び出し Download PDF

Info

Publication number
JP5000573B2
JP5000573B2 JP2008096484A JP2008096484A JP5000573B2 JP 5000573 B2 JP5000573 B2 JP 5000573B2 JP 2008096484 A JP2008096484 A JP 2008096484A JP 2008096484 A JP2008096484 A JP 2008096484A JP 5000573 B2 JP5000573 B2 JP 5000573B2
Authority
JP
Japan
Prior art keywords
instruction
domain
memory
memory address
allowed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008096484A
Other languages
English (en)
Other versions
JP2008257735A (ja
Inventor
ダニエル・カーショー
リー・ダグラス・スミス
デイヴィッド・ジェームス・シール
リチャード・ロイ・グリセンスウェイト
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2008257735A publication Critical patent/JP2008257735A/ja
Application granted granted Critical
Publication of JP5000573B2 publication Critical patent/JP5000573B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Description

本発明は、データ処理システムの分野に関する。より詳しくは、本発明は、データ処理システムの動作のセキュリティを向上させるためのメカニズムに関する。
データ処理システムの動作のセキュリティを向上させることは重要な課題となりつつある。例として、データ処理システムは、デジタル権利管理システムを使用した、著作権保護された素材のような、保護されたデータを処理するために使用することが可能である。そのようなシステムは、著作権素材の再生のようなさらなる処理を進めることを許可する前に、セキュリティ検査コードが実行されること、および、セキュリティ検査に合格することを要求し得る。セキュリティメカニズムは、パスワード検査またはライセンス検査メカニズムとすることが可能である。そのようなセキュリティメカニズムに対する攻撃の知られた形態は、セキュリティ検査に合格したかのように処理を継続する目的で、パスワード検査コードのようなセキュリティプログラムコードをバイパスし、プログラム内に後の位置へジャンプすることを試みることである。そのような攻撃に取り組み、対抗するために、インテルIA32アーキテクチャでサポートされているファンクションゲート(function gating)、および、関数のエントリ(entry)およびエグジット(exit)のポイントを示すために使用される特定のエントリおよびエグジットのオペコードのようなメカニズムを提供することが知られている。しかし、そのようなメカニズムは、それらに付随する不都合な量の追加のオーバーヘッドを有し、そのコードのかなりの変更および再構築なしに既存のコンピュータコードに追加することが困難である。
異なるソフトウェアモジュールにわたって、コンパイル時に、公開されたエントリおよびエグジットのポイントを利用可能とすることが知られている。例えば、“National Semiconductor NS32532-20/ NS32532-25/ NS32532-30 High-Performance 32-Bit Microprocessor”(1991年5月)は、彼ら自身の権利において異なるプログラム実体であるモジュール間の呼び出しをプログラマーが行うことを可能とするENTERおよびEXIT命令を有するシステムを開示している。その目的は、実行時に決定されるアドレスにおいてモジュールを物理メモリにロードすることであるが、各モジュール内の関数の相対アドレスがコンパイル時に確定されることを可能とするメカニズムを提供する。実行時にOSはメモリにリンクテーブルを確立および維持し、これは、絶対呼び出しアドレスを提供するために、実行時のモジュール位置とモジュール内の関数の相対アドレスとを結び付ける。
“VAX-11 Architecture Reference Manual EK-VAXAR-RM-001”(1982年5月20日、Revision 6.1)は、プロシージャ呼び出し命令を有するシステムを開示している。標準プロシージャ呼び出しインタフェースを実装するために3つの命令が使用される。2つの命令はプロシージャへの呼び出し(CALL)を実装し、3つ目はそれに符合する復帰(RETURN)を実装する。CALLG命令は、任意の位置における引数リストを用いてプロシージャを呼び出す。CALLS命令は、スタック上の引数リストを用いてプロシージャを呼び出す。CALLSの後の復帰において、このリストはスタックから自動的に除去される。両方の呼び出し命令は、呼び出されるプロシージャのエントリポイントのアドレスを指定する。エントリポイントは、プロシージャの命令が続くエントリマスクと呼ばれるワードからなると考えられる。RET命令を実行することによってプロシージャは終了する。システムはエントリポイントにおけるエントリマスクの存在を要求する。エントリは要求された配列に従って発生しなければならない。
エントリマスクは、サブプロシージャのレジスタの使用およびオーバーフローのイネーブル、例えば、IVおよびDVのラベルが付されたr0−r11、12−13、14、15をマスクするビット0−11を有する16ビットワード(整数および10進数のオーバーフローイネーブル)を指定する。
呼び出しにおいて、スタックはロングワードの境界に合わされ、PSWにおけるトラップイネーブルは、呼び出されたプロシージャの首尾一貫した動作を保証するために、既知の状態に設定される。整数オーバーフローイネーブルおよび10進数オーバーフローイネーブルは、それぞれ、エントリマスクのビット14および15に従って作用する。
フローティングアンダーフローイネーブルはクリアされる。それぞれ、ビット11から0によって指定されるレジスタR11からRflは、スタック上に保存され、RET命令によって復元される。さらに、PC、SP、FP、APはCALL命令によって常に保存され、RET命令によって復元される。
Budiu、Erlingsson、Abadiによる“Architectural Support for Software-Based Protection”(ASID’06、2006年10月21日)は、ラベル(cfilabel)、“checked jump”(検査されるジャンプ)命令、新たなレジスタ、cfi_registerを追加することによりCPUアーキテクチャを拡張することによるセキュリティの向上を開示する。検査されるジャンプを実行するために、“checked jump”命令によって続いて呼び出される要求される関数へのエントリポイントにおいてcfilabel内に見出されることが予期されるラベルの値とともにソフトウェアはcfi_registerをロードする。“checked jump”の間に合致するcfi_registerおよびcfilabel内の値が見出されるならば、cfi_register内の値はゼロにされ、実行は進めることを許される。“checked jump”の間にcfi_registerが非ゼロの値を含むならば、例外が起こされる。これは、セキュリティ制御において使用するために呼び出し位置において要求されるデータタグの概念を拡張する。
関数エントリポイントにおいてcfilabel値を実装しない従来のソフトウェアを、それらが存在することを意図する、より新しいソフトウェアと統合しようと試みるとき、これらのアプローチに伴う困難に遭遇する。結果として、システムソフトウェアの全体は、この新たな機能の利益を得るために同時にアップグレードされなければならない。どのような1つの会社も全ての必要なソースコードにアクセスを有さないので、これが実現不可能なことはもっともである。
一態様から見て、本発明は、データを処理するための装置を提供し、前記装置は、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリを具備し、前記メモリアドレス空間は少なくとも第1ドメインおよび第2ドメインを有し、ドメインはメモリアドレスの集合を含み、
前記メモリに結合され、前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込む動作が可能な命令取り込み回路と、
前記命令取り込み回路に結合され、前記第2ドメイン内の第2メモリアドレスと対応付けされた第2命令の取り込みが続く前記第1ドメイン内の第1メモリアドレスと対応付けされた第1命令の取り込みに応答して、
(i)前記第1ドメインと対応付けされた命令にアクセスした後に前記第2ドメインと対応付けされた命令の実行を開始するときに、前記第2命令の命令コードから前記第2命令が実行することを許可された許容命令であるかどうか判定し、
(ii)前記第2命令が許容命令でないならば、アクセス違反応答を引き起こす
命令アクセス制御回路と、
をさらに具備し、
前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有する。
本技術は、関数呼び出しを行うことを要求するプログラム命令を記憶するメモリ位置と、関数呼び出しがターゲットコードへの正規のエントリポイントに行われることを検査する必要との間の強い関係が存在することを認識する。一例として、オペレーティングシステムは、データ処理システムに結び付けられたセキュリティの態様の多くを制御するために、多くの場合、使用され、オペレーティングシステムそれ自身の中での関数呼び出しは、上述した種類のセキュリティの脅威の比較的ありそうもない源を有する。しかし、オペレーティングシステムの全ての部分が等しく安全で強固であるとは限らない。従って、オペレーティングシステムのプログラム命令の強固な部分を記憶するメモリ位置の外部のメモリ位置に記憶される命令からオペレーティングシステム内のポイントへの関数呼び出しは、セキュリティの脅威を提示することがより多くありそうであり、従って、呼び出し保護メカニズムに付随するオーバーヘッドを正当化する。本技術は、第1ドメイン(メモリ空間内の連続または不連続であり得るメモリアドレスの集合)内の命令を実行することから第2メモリドメインへの変更を識別し、そのようなドメインの変更の検出において当該第2ドメイン内の第1命令が許容命令であることを判定するメカニズムを提供することによって、これらの潜在的な脆弱性に焦点をあてる。従って、存在するドメインの外部から呼び出されることが意図される関数呼び出しターゲットは、許容命令に対応するように配置される。当該ドメインの外部からの許容命令でない他の命令への呼び出しは、アクセス違反命令として検出され、アクセス違反応答を引き起こす。本技術は、ドメイン間の呼び出しにおけるメカニズムに焦点を合わせることによってセキュリティを向上させるための低オーバーヘッドのメカニズムを提供する。データタグではなく呼び出しターゲット位置における許容命令についての要求を使用してこれを達成する。
本技術は、例えば、所望の命令セットのNOP(ノーオペレーション)コード空間から、少ない数のOPコード(すなわち、命令セット毎に1つ)を使用してセキュリティを向上させ、特定の分岐命令の使用が機能することを必要としない。さらに、本技術は、ターゲット分岐検査コードの協働を可能とし、レガシーコードは分岐ターゲット検査のために設計されない。ここで、
Figure 0005000573
この向上したセキュリティは、コンパイルされるときコード内に配置される特別なラベルについての要求なしで、オペレーティングシステムのドメイン管理によって提供されるので、これらの利益はレガシーコードについて達成することができる。
許容命令は各種の異なる形態をとり得ることが理解される。それらは許容分岐ターゲット命令(permitted branch target instruction)とすることが可能である。しかし、ドメイン境界は通常の順次的なプログラム実行によって横断することができ、そのような順次的な境界の横断が許容エントリポイントであることが意図されるとき、順次的な実行におけるそのような境界を横断されることがあり得るので、新たなドメイン内の第1命令は許容命令であるように配置することが可能である。
複数のプログラム命令セットを利用するデータ処理システムの場面において、各プログラム命令セットに少なくとも1つの許容分岐ターゲット命令を設け、前記第2命令を含む命令セットについて第2命令が許容命令であるか否かを命令アクセス制御回路が判定することを保証することによってセキュリティを向上させることが可能である。第2命令についてのアクティブな命令セットが第1命令についての命令セットと同一の命令セットからのものとすることが可能であり、または、命令セットの切り替えは第1命令から第2命令への移動と対応付けることが可能であり、その場合において、第2命令についての意図されるアクディブな命令セットが、許容命令の存在についての検査が行われるものである。
許容命令は、分岐ターゲット位置において典型的に従来から見出されるスタックプッシュ動作のような、幅広く各種の異なる形態を有し得ることが理解されるが、命令アクセス制御回路以外の処理回路によってノーオペレーション命令として許容命令が処理されるとき、向上した下位互換性(backward compatibility)が達成される。以前のバージョンのハードウェアにおけるように、命令アクセス制御回路が存在しないならば、保護された呼び出し機能なしで、従って、低レベルのセキュリティで行うが、プログラムコードは、評価されるとき、ノーオペレーション命令を単に無視し、エラーなしで動作する。
本技術は、許容第1命令、または、エントリへのある固定された関係における許容命令についての検査を引き起こすドメイン間の変更を有する2つのドメインのみを有するシステム内で使用することができると理解される。メモリアドレス空間が複数のドメインを含み、各々がそれと対応付けされたそれぞれのプログラム可能な権限を有し、他のドメインに移動するとき、他のどのドメインについて許容ターゲット命令についての検査が行われるかを示すためにプログラム可能な権限を含むとき、システムの柔軟性は向上する。従って、許容命令の検査メカニズムによってどのように扱われるかに関して、プログラムコードが、メモリアドレス空間内の記憶位置に応じて効果的に区分されることを可能とするプログラム可能な方法で、許容命令の検査は特定のドメイン遷移と対応付けることができる。検査が実行されるか否かを指定する情報は、呼び出しドメインまたはターゲットドメインのいずれかと対応付けることができる。
ターゲット命令が許容命令であることを検査するとともに、第1命令(典型的に、呼び出し命令)が許容命令であることを付加的に検査することも可能である。
上記は、分岐ターゲット命令に関して発生するセキュリティ検査とともに、例として使用されるいくつかのポイントにおいて分岐命令呼び出し関数を有することが理解でき、許容命令の検査の同じ技術は、呼び出しからの復帰においてドメイン間で移動するときに使用することができ、すなわち、許容復帰ポイントが使用されていることを確認するために(例えば、システム設計者によって意図されるセキュリティ検証コードを通して呼び出された関数が復帰したことを確認するために)検査を行うことができる。
第1命令および第2命令の実行を、それらの間で例外が発生し得なかった原子的な実体として扱うことが可能であるが、これは不都合に遅延を増加させる。従って、少なくともある実施形態において、第1命令と第2命令との間で例外が発生するとき、例外の処理からの復帰において命令アクセス制御回路が第1命令と対応付けされた第1ドメインを識別することができるように、保存された状態レジスタは第1ドメインを識別するデータを記憶し、それは、許容命令の検査がその特定のドメイン間の遷移について要求されるか否かに応じた第2命令への適切な制御アクセスである。代替の実施形態において、第1命令を用いて再スタートすることが可能である。
本技術は、単に物理メモリアドレス空間とともに使用することができるが、メモリアドレス空間が仮想メモリアドレス空間であるシステムによく適合する。この場合において、命令アクセス制御メカニズムは、仮想アドレスを物理アドレスにマッピングするメモリ管理回路とともに容易に統合することができ、そのようなメモリ管理回路は、システムの他の処理メカニズムと統合された便利でよく構造化された方法でドメイン指示データを記憶することができ、それによって、比較的少ない追加の処理オーバーヘッドを生じる。
ドメインのプログラム可能な権限は、メモリアドレス空間内の保護された領域内のような、システム内に多数の異なる方法で保持することができるが、プログラム可能な構成定義レジスタ(configuration register)内に効果的に保持され、プログラム可能な構成定義レジスタは、一般に、高レベルのセキュリティ制御の下におかれ、従って、セキュリティ攻撃へのより少ない脆弱性となり得る。
アクセス違反応答は、多数の異なる形態をとり得る。そのような形態の例は、メモリアボート、ドメイン違反例外処理コードの実行、アクセス違反例外処理コードの実行、未定義の命令例外処理コードの実行である。
もう1つの態様から見て、本発明は、データを処理する方法を提供し、前記方法は、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリ内にプログラム命令を記憶するステップを有し、前記メモリアドレス空間は少なくとも第1ドメインおよび第2ドメインを有し、ドメインはメモリアドレスの集合を含み、
前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込むステップと、
前記第2ドメイン内の第2メモリアドレスと対応付けされた第2命令の取り込みが続く前記第1ドメイン内の第1メモリアドレスと対応付けされた第1命令の取り込みに応答して、
(i)前記第1ドメインと対応付けされた命令にアクセスした後に前記第2ドメインと対応付けされた命令の実行を開始するときに、前記第2命令の命令コードから前記第2命令が実行することを許可された許容命令であるかどうか判定し、
(ii)前記第2命令が許容命令でないならば、アクセス違反応答を引き起こす
ステップと、
をさらに有し、
前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有する。
さらなる態様から見て、本発明は、上述した技術に従って実行するようにコンピュータを制御するためのコンピュータプログラムを記憶するためのコンピュータプログラム記憶媒体を提供する。
本発明の上記および他の目的、特徴、効果は、添付図面とともに読まれるべき、続く実施形態の詳細な説明から明らかになる。
図1は、複数のメモリドメインに分割された仮想メモリアドレス空間を表わし、各メモリドメインは、対応付けされたドメイン指示子(domain specifier)を有する。これらのドメインは変動するサイズを有するこができ、連続または不連続とすることが可能であることが分かる。また、その仮想メモリアドレス空間の特定の領域が、特権モードのプロセスによってのみアクセス可能であるか、または、ユーザモードまたは特権モードの両方のプロセスによってアクセス可能であるかを示す、仮想メモリアドレスと対応付けされたアクセス制御データパラメータが表わされている(Pは特権モードのみ、Uは特権モードまたはユーザモード)。表わされているように、仮想メモリアドレス空間内の様々なメモリアドレスは、物理アドレス空間内の物理アドレスにマッピングされる。この技術分野の当業者によく知られているように、幅広く多様なマッピングが可能である。メモリアドレス空間それ自身の中に記憶され、変換テーブルポインタレジスタ内に記憶された変換テーブルポインタによって指し示される変換テーブルデータ(ページテーブルデータ)に応じて、仮想から物理へのマッピングが実行される。また、そのような変換テーブルデータに従って動作し、(特権のみ、特権/ユーザデータのような)アクセス制御データを個々のメモリ領域と対応付けるために、メモリ管理ユニットを設けることが可能である。ドメイン指示子は、英国ケンブリッジのARM社によって提供されているARMアーキテクチャリファレンスマニュアルに説明されているARMプロセッサアーキテクチャに従って動作するプロセッサによって提供される形態のドメイン指示子であり得る。本技術の目的とは異なる他の目的のために利用する方法で、仮想メモリアドレス空間内のメモリアドレスの異なる集合の間で識別する手段として、既にこれらのドメイン指示子(例えば、16個の異なるドメイン指示子)が設けられている。これらのドメイン指示子は本技術のための再使用することができる。
図2は、メモリ6に結合されたプロセッサコア4を有するデータ処理システム2を表わす。メモリ6は、データおよび命令の両方を記憶する、物理的にアドレス指定されるメモリアドレス空間を提供する。プロセッサコア4は、仮想メモリアドレス空間を利用するプログラム命令を実行し、プロセッサコア4内のMMU(メモリ管理ユニット)8は、仮想アドレスと物理アドレスとの間のマッピングの処理を制御する役割を果たす。レジスタバンク10、乗算器12、シフタ14、加算器16を含むデータ経路を利用するプログラム命令に応答してデータ処理動作が実行される。これらのデータ経路要素10、12、14、16は、命令デコーダ18によって生成される制御信号の制御の下で動作し、そして、命令デコーダ18は命令(Instruction(I))パイプライン20内の命令に応答する。メモリ6から命令を取得する命令取り込みユニット22によって命令パイプライン20に命令が供給される。データ処理システム2を構成定義するために使用される各種の構成定義レジスタ26を含む構成定義コプロセッサCP15・24が設けられている。これらの構成定義レジスタ26は、命令取り込みユニット22を介してメモリ6から取り込まれたコプロセッサ伝達命令を使用して、書き込みおよび読み出しすることが可能である。そのような構成定義レジスタ26を書き込みおよび読み出しする権限は、ドメインアクセス制御回路によって制限される。ドメインアクセス制御回路は、メモリ管理ユニット8から読み出される、構成定義レジスタ26の変更を要求するプログラム命令が取り込まれたアドレスのドメインに応答する。この情報は、命令パイプライン20内の当該命令とともに、実行されるポイントに当該命令が到達するまで、ドメイン指示子として渡される。構成定義レジスタ26は、後述するメモリ内の異なるドメインの各々と対応付けされた権限を指定するプログラム可能な権限レジスタを含む。
ドメイン番号は、取り込まれた命令の仮想アドレスのためにMMU8によって使用されるセクション記述子から導き出される。概念的には、CP15・24に存在する適切な構成定義レジスタ(ドメイン権限記述子レジスタ)26を探索することによってそのドメインに与えられた権限を取得するためにドメイン番号が使用される。命令、取り込まれたドメイン、そのドメインに与えられた権限の記述が、デコーダ18に(直接または間接に)与えられ、デコーダ18は、取り込まれた命令が実行を許されているか、または、例外を生成すべきかを決定し、例えば、命令が権限を持たないCP15レジスタに書き込みを試みるならば、例外が生成されるべきである。
ある実施形態において、ドメイン番号それ自身は、命令デコーダ18に送信される必要はなく、特定のドメインに権限が割り当てられるのみである。しかし、コードの局所性の特性を考慮すると、ある実施形態は、ドメインの権限のローカルコピーを“キャッシュ”し、新たなドメインの権限が取り込まれないならば、取り込まれた命令の実際のドメイン番号がキャッシュされたコピーのドメイン番号と一致するか否かを確認する状態機械を実現することが可能である。この構成は、ある設計が実行することができる最大周波数(maximum frequency)を向上させるために役立ち得る。
また、命令パイプライン20と結合された命令取り込みユニット22およびメモリ管理ユニット8は、命令が実行されるドメイン間で変更がいつ行われたかを示し、そのような遷移のための管理が実行されたものとして示されたならば、新たなドメイン内の第1命令(またはそれへの固定された関係における命令)が許容命令(permitted instruction)(例えば、許容命令の集合の一要素)であることを検査する役割を果たす命令アクセス制御回路である。命令アクセス制御回路以外のデータ処理システム2内の要素についてノーオペレーション命令に対応する符号化を有するようにこれらの許容命令を選択することができる。ドメイン制御回路は、変換テーブルへのポインタを含む構成定義レジスタ26へのアクセスを制御することによって、メモリ管理ユニット8によって利用されるアクセス制御データへの変更を制限するための手段を提供する。従って、あるメモリ領域への権限のないアクセスを与える新たな変換テーブルを指し示す変換テーブルデータポインタの再プログラミングに起因する、メモリ管理ユニット8によって与えられるセキュリティを破壊する権限のない試みを阻止することができる。この技術分野の当業者は、図2に表わされているデータ処理システム2は典型的に多くのさらなる回路要素を含むことを理解するが、明瞭にする目的のためにそれらは図2から省略され、本技術の理解に必要でない。
図3は、命令アクセス制御回路の動作を表わすフロー図である。ステップ28において、処理は、次の命令が取り込み/実行されることを要求されるまで待つ。ステップ28において次の命令が要求されると、ステップ30において、メモリ6から次の命令が取り込まれ、メモリ管理ユニット8から当該次の命令のドメインが読み出される。ステップ32は、次の命令のドメインが前の命令(または、次の命令に先行する、ある固定のまたはプログラム可能な位置における命令)のドメインと同一か否かを判定する。ドメインが同一であり、変更されていないならば、処理はステップ34に進み、さらなる処理のために次の命令が渡される。しかし、ステップ32における判定が、ドメインが変更された、ならば、処理はステップ36に進む。
ステップ36は、次の命令のドメインと前の命令のドメインから、当該ドメイン間の遷移が、ターゲット命令が許容ターゲット命令(permitted target instruction)であることを確認する制御を必要とするか否かを判定する。どのドメイン間の遷移が管理されるかの選択は、各ドメインと対応付けされ、かつ、各ドメインについて他のドメインへのドメイン遷移のいずれが許容分岐ターゲット命令検査を必要とするか、または、必要としないかを示すプログラム可能な権限レジスタを使用して行うことができる。ステップ36における判定が、ドメイン遷移が分岐ターゲット命令検査を生じさせるものでないならば、処理はステップ38に進み、(ドメインの変更が発生したことを反映するために)前のドメインとして記憶されたドメインの値が更新され、そして、処理はステップ34に進み、上述したようにさらなる処理に次の命令を渡す。
ステップ36における判定が、ドメイン遷移が分岐ターゲット命令検査が実行されるべきものであるならば、処理はステップ40に進み、次の命令が、当該次の命令についてアクティブである命令セットについての許容分岐ターゲットであるか否かに関して判定が行われる。図2に記載されたデータ処理システム2は、複数命令セット(例えば、ARMプロセッサの場合におけるARMおよびThumb命令セット)をサポートすることが可能であり、これらの命令セットの各々は、1つまたは複数の許容分岐ターゲット命令のそれ自身の集合を有する。異なるターゲット命令セットについての許容分岐ターゲット命令は異なる符号化を有する。これは、分岐ターゲットポイントにおいてどの命令セットがアクティブにされるかに関してどのような不明確さも防止する。また、ある分岐は、分岐命令の一部として命令セット切り替え(例えば、ARM/Thumb BLX命令)を含むことが可能であり、許容分岐ターゲット命令が検査されるアクティブな命令セットは、分岐動作を伴う任意の命令セット切り替えを考慮する当該分岐ターゲットについて、どの命令セットがアクティブになるかに基づく。ステップ40における判定が、次の命令が許容分岐ターゲット命令でないならば、処理はステップ42に進み、アクセス違反応答が引き起こされる。このアクセス違反応答は、特定のアクセス違反応答コードの実行、ドメインがさらなる分岐ターゲット検査のために使用されるときの他のドメイン違反と共有するドメイン違反コードの実行、(必要ならば適切な例外コードを伴う)メモリアボート、または、未定義の命令例外を含む各種の異なる形態をとり得る。多くの他の種類の可能なアクセス違反応答も存在し、これらはシステム設計者によって選択することが可能である。特に深刻な応答はシステムをリセットすることである。
ステップ40における判定が、次の命令が許容分岐ターゲット命令であったならば、処理はステップ44に進み、前の命令が許容分岐命令であったか否かに関して判定が行われる。この方法において、許容命令からの、および、許容命令への、新たなドメインへの適切なエントリを検証するために、分岐命令および分岐ターゲット命令の両方が検査されることができる。ステップ44において実行される分岐命令検査のステップは望むならば省略可能であることが理解される。ステップ44において実行される分岐命令検査が、前の命令が許容分岐命令でないことを示すならば、処理は上述したステップ42に進む。前の命令が許容分岐命令であるならば、処理は上述したステップ38に進み、将来の比較において前の命令についてのドメインの値として使用される値が更新され、次の命令がさらなる処理のために渡される。
図4は、アプリケーションプログラム46とオペレーティングシステムのカーネル48との間で呼び出し転送プログラムを使用するシステムを表わす。アクセス制御データ51を含むメモリ管理ユニットデータは、メモリアドレス空間内に記憶され、このアクセス制御データへのアクセスは、カーネル48にのみ許可されている。これはアクセス制御データ51を効果的にロックし、アプリケーションコード46によって、または、オペレーティングシステムコード本体50によってさえ変更することができない。アプリケーションコードが実行されるときにメモリアボートが発生するならば、アクセス制御データ51を通してページテーブルウォークが実行されることを要求するメモリアボートについての例外処理は、物理アドレス空間を基にして、従ってアプリケーションコード46がアクセス制御データ51へのアクセスを有することを要求することなく、生成されるアドレスを使用して実行される。
また、アクセス制御データの構成部分は、制御レジスタおよびポインタ54を含むデータ要素52である。これら両方は、他のアクセス制御パラメータ(例えば、MMUイネーブル/ディスエーブル、変換テーブルポインタ、エンディアン構成定義、ドメインの権限制御レジスタへのアクセス、現在選択されている権限制御レジスタへのアクセス、等)の制御および表示とともに、変換テーブルデータ51を指し示す。アクセス制御データ52を変更する権限は、この例において、図4に表わされているドメイン“0”に予約されており、これはオペレーティングシステムカーネル48および変換テーブルデータ51を含む。ドメイン権限を変更する権限は、アクセス制御データ52の一部を構成するので、オペレーティングシステムカーネルに予約されている。これは、権限のないアプリケーションコードまたはオペレーティングシステム本体50の一部を構成するコードの権限のない部分による破壊への耐性を向上させる。
上述したように、アプリケーションコード46は、カーネル48への呼び出しを行うことを望み得る。カーネル48のセキュリティを向上させるために、アプリケーション46を実行しているドメイン(すなわち、ドメイン3)からカーネル48へのアクセス(読み出しアクセスさえも)を提供しないように、アクセス制御データを構成定義することが可能である。従って、アプリケーション46からカーネル48への直接の呼び出しを行うどのような試みも、ユーザモードのアプリケーションプログラム46によるアクセスについて、そのメモリ領域は単にマッピングされないか、または、拒否されるので、結果としてメモリアボートとなる。従って、アプリケーションコード46がカーネル48への呼び出しを行うことを望むとき、まず呼び出し転送プログラム56への呼び出しを行うことによって行う。この呼び出し転送プログラムは、アプリケーションコード46に認識でき、別個のドメイン(この例においてドメイン2)に存在する。ドメイン2はカーネルが存在するドメイン0へのアクセスを有し、従って、呼び出し転送をカーネル48に渡し、カーネル48の所望の機能をアクセスすることができる。呼び出し転送プログラム56は呼び出し転送のこの機能に専用である比較的簡単な構成を有するので、小さく、かつ、安全で改変されていないものとして容易に検証できる。従って、カーネル48の動作の詳細は隠すことができ、カーネルへのアクセスは許可されたエントリポイントを介するように制御することができ、上記のセキュリティ向上を制御するメカニズムは、簡単、かつ、それ自身の完全性について容易に検査される形態とすることができる。
図5は、上述した呼び出し転送処理を表わすフロー図である。本技術は、上述した分岐ターゲット命令制御に代えて、または、それに加えて使用することができる。ステップ58において、カーネル48を呼び出すことが必要となるまで処理は待機する。ステップ60において、呼び出し転送プログラム56への呼び出しが行われる。ステップ61は、呼び出し転送コードの権限を使用してアクセス制御データを書き込み、カーネルコードが認識可能となるようにこのデータを変更する。ステップ62において、呼び出し転送プログラム56は、アプリケーションコード46に代わってカーネル48への呼び出しを行う。転送を戻すときカーネルは呼び出し転送コードに渡し、ユーザコードにジャンプして戻る前に呼び出し転送コードはカーネルコードを認識できないようにする。
図6は、セキュア状態で動作するセキュアオペレーティングシステム64および非セキュア状態で動作する非セキュアオペレーティングシステム66、68を含むオペレーティングシステムを表わす図である。セキュア状態および非セキュア状態は、英国ケンブリッジのARM社によって製造されたTrustZoneアーキテクチャおよびプロセッサメカニズムに従って提供される。セキュアおよび非セキュアな物理アドレス空間の各々について、仮想メモリアドレス空間70は複数のドメインに分割される。ドメイン0は非セキュア(non-secure(NS))オペレーティングシステムのカーネル66および信頼されたメモリ領域72を含む。非セキュアオペレーティングシステムのカーネル66は、上述したアクセス制御データ74を制御する役割を果たす。このアクセス制御データ74は、どのメモリ領域が、どの特権レベルによって、および、どのドメインによってアクセスすることができるかを制御する。信頼された領域72へのアクセスは、非セキュアカーネル66に制限され、これらは共有ドメイン、すなわち、ドメイン0を共有する。非セキュアオペレーティングシステム本体68は、伸長されたデータを記憶するために使用されるメモリ領域76とともにドメイン1に存在する。領域76におけるこの伸長されたデータは、オペレーティングシステム本体68によってアクセス可能であるが、ドメイン2内に記憶されるアプリケーションプログラム78、80によってアクセス可能でない。
図6のシステムは、階層化されたセキュリティレベルを提供することができる。暗号鍵に対応する最も安全なデータは、セキュアオペレーティングシステム64によってのみアクセス可能であるように制限され、安全な物理アドレス空間に存在する。セキュアオペレーティングシステム64は、要求されたデータを復号するためにこれらの暗号鍵を使用し、この復号され圧縮されたデータを、非セキュアオペレーティングシステム66に属する信頼された領域72に書き込む。この復号され圧縮されたデータは暗号鍵ほど特性において重要ではないが、それにもかかわらず、保護することが望まれる資産を表わし、対応付けされたセキュリティレベルを有する。従って、信頼された領域72は、最も高いセキュリティレベルを有するドメイン0内で実行するプログラム命令にのみアクセス可能である。これらの信頼されたプログラムは、カーネル66、および、信頼された領域72それ自身の中に記憶されるMPEGデコーダプログラム82を含む。MPEGデコーダプログラム82は、復号され圧縮されたデータを伸長し、これを伸長されたデータ領域76に書き込む。この伸長されたデータ領域76は、アプリケーションプログラム78、80によってアクセス可能でないが、非セキュアオペレーティングシステム本体68によってアクセス可能である。従って、非セキュアオペレーティングシステム本体68と結合された再生メカニズムは、例えば、伸長されたデータを再生し、それを画面に描画するために使用することができる。
セキュアオペレーティングシステム64が復号されたデータを信頼された領域72に書き込むに先立って、カーネル66、および、(後述するドメイン権限レジスタ内に記憶される)ドメイン権限データ84において指定されるドメインの構成定義について完全性検査を実行することができる。この完全性検査は、非セキュア状態で実行するソフトウェアのどれが信頼された領域72にアクセスすることができるかを制御するアクセス制御データにアクセスする権限がカーネル66にのみ与えられていることを確認することを含むドメイン権限データ84についての構成定義の検査とともに、比較的小さなカーネル66について実行されるチェックサム、ハッシュ、または、署名検査の動作の形態とすることが可能である。カーネル66が検証され、かつ、カーネル66のみがアクセス制御データを変更するために必要な権限を有するならば、信頼された領域72が安全であることの合理的な信頼度を有することができる。従って、セキュアオペレーティングシステム64は、要求される処理のいくつかを非セキュアドメインに譲り、従って、セキュアオペレーティングシステムがより小さく、従って、より安全とすることを可能とする。
図7は、図6のシステムの動作を表わすフロー図である。ステップ86において、安全な復号化が要求されているか判定される。ステップ88において、セキュア状態への切り替えが行われ、セキュアオペレーティングシステムが実行される。ステップ90において、セキュアオペレーティングシステムは、非セキュアオペレーティングシステムカーネル66を完全性検査する。この検査に失敗すると、処理は終了する。この検査に合格すると、処理はステップ92に進み、非セキュアオペレーティングシステムカーネル66を記憶するドメインがアクセス制御データ74を変更することができる唯一のドメインであるかを確認するために、ドメイン権限データ84の判定が行われる。この検査に失敗すると、処理は終了する。この検査に合格すると、処理はステップ94に進み、信頼されたソフトウェア(例えば、非セキュアオペレーティングシステム66およびMPEGデコーダ82)のみが信頼された領域72にアクセスすることができることをアクセス制御データ74が示すか判定が行われる。この検査に失敗すると、処理は終了する。この検査に合格すると、処理はステップ96に進み、セキュアオペレーティングシステム64によって暗号鍵が読み出され(または、適切な暗号エンジンに供給され)、信頼された領域72に書き込まれる復号され圧縮されたデータを生成するために、復号が実行される。そして、ステップ98は、非セキュア状態に切り替え、非セキュアオペレーティングシステムが実行される。ステップ100は、信頼された領域72において実行する信頼されたソフトウェア82(MPEGデコーダ)を使用して、復号され圧縮されたデータを伸長し、伸長されたデータを、非セキュアオペレーティングシステム本体68によってアクセス可能な伸長されたデータ領域76に書き込む。そして、ステップ102は、非セキュアオペレーティングシステム本体68内のプログラムコードを使用して、伸長されたデータを再生し、それを例えばコンピュータ画面に描画する。
図8は、ドメイン権限レジスタ(domain capability register(DCR))104およびドメイン権限レジスタ選択レジスタ(domain capability register select register(DCRS))106を表わす。メモリアドレス空間(仮想または物理)が分割され得る16個の異なるドメインの各々について設けられる16個のドメイン権限レジスタ104が存在する。各々のドメインについてのドメインアクセスデータ108は、15個の他のドメインの各々に関して、当該他のドメインへのアクセスが自由であるか否か、管理されているか、または、許可されていないか、を示す。管理されたアクセスは、当該制御レジスタ104に対応する現在のドメインからそのドメインへの遷移が、許容分岐ターゲット命令へのものであるか、許容分岐命令からのものであるかを確認するために、上述した命令アクセス検査を含む。また、主要な制御レジスタ104内の各種フラグは、MMUイネーブル/ディスエーブル、変換テーブルポインタ、レジスタアクセス権限、エンディアンを変更する権限、ドメイン権限レジスタ104それ自身またはドメイン権限レジスタ選択レジスタ106を変更する権限のような、一般メモリ管理に関する設定を指定する。また、ドメイン権限レジスタ104は、例えば、そのドメイン内で実行するプログラム命令が、ベクタテーブルポインタを変更することができるか否か、例外および他の動作と対応付けされた特定の応答をスイッチオンまたはオフすることができるか否かを制御する例外制御フラグを含む。ドメイン権限レジスタ104内のドメイン毎に制御することが望まれるシステム管理の項目に対応するさらなるフラグは、そのドメイン内でキャッシュ管理がターンオンまたはオフすることができるか否かのような権限を含むことができる。1つのフラグ、Sは、セキュア状態と非セキュア状態との間で変更するために使用されるソフトウェア割り込みであるSMC命令を実行する権限を制御する。
ドメイン権限レジスタ選択レジスタ106は、該当するドメインがそのドメイン権限レジスタ(フラグMを参照)を読み出しおよび書き込みするために適切な権限を有するならば、読み出しおよび書き込みのために現在マッピングされたドメイン権限レジスタ104の番号を指定するドメイン番号フィールド110を含む。
本発明の実施形態が添付図面を参照して詳細に説明されたが、本発明はそれらの詳細な実施形態に限定されず、特許請求の範囲に規定された本発明の範囲および思想から逸脱することなく、この技術分野の当業者によって各種の変更および変形が生み出され得ることを理解すべきである。
仮想メモリアドレス空間と物理メモリアドレス空間との間の関係を表わす図である。 メモリアクセス制御回路、命令アクセス制御回路、ドメインアクセス制御回路を組み込んだデータ処理システムを表わす図である。 1つのドメインからもう1つのドメインへ移動するときに許容分岐ターゲット命令について検査する動作を表わすフロー図である。 アプリケーション呼び出しをオペレーティングシステムのカーネルに転送するために呼び出し転送プログラムが使用されるシステムを表わす図である。 呼び出し転送コードの使用を表わすフロー図である。 セキュアオペレーディングシステムがデータを書き込むことができ、非セキュア状態で動作するとき信頼されたプログラムがデータを読み出すことができるメモリ空間の信頼された領域の使用を表わす図である。 図6に表わされたシステムを使用して実行される一連の処理動作を表わすフロー図である。 メモリアドレス空間内の異なるドメイン内に対応付けされたプログラム可能な権限データを表わす図である。
符号の説明
2 データ処理システム
4 プロセッサコア
6 メモリ
8 メモリ管理ユニット
10 レジスタバンク
12 乗算器
14 シフタ
16 加算器
18 命令デコーダ
20 命令パイプライン
22 命令取り込みユニット
24 構成定義コプロセッサCP15
26 構成定義レジスタ

Claims (23)

  1. データを処理するための装置であって、
    メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリを具備し、前記メモリアドレス空間は少なくとも第1ドメインおよび第2ドメインを有し、ドメインはメモリアドレスの集合を含み、
    前記メモリに結合され、前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込む動作が可能な命令取り込み回路と、
    前記命令取り込み回路に結合され、前記第2ドメイン内の第2メモリアドレスと対応付けされた第2命令の取り込みが続く前記第1ドメイン内の第1メモリアドレスと対応付けされた第1命令の取り込みに応答して、
    (i)前記第1ドメインと対応付けされた命令にアクセスした後に前記第2ドメインと対応付けされた命令の実行を開始するときに、前記第2命令の命令コードから前記第2命令が実行することを許可された許容命令であるかどうか判定し、
    (ii)前記第2命令が許容命令でないならば、アクセス違反応答を引き起こす
    命令アクセス制御回路と、
    をさらに具備し、
    前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有し、
    前記許容命令は許容分岐ターゲット命令であり、
    前記装置は複数のプログラム命令セットを使用し、
    各プログラム命令セットは少なくとも1つの許容分岐ターゲット命令を有し、
    前記命令アクセス制御回路は、前記第2命令が、前記第2命令を含む命令セットについての前記少なくとも1つの許容分岐ターゲット命令の1つであるか否かを判定する装置。
  2. 前記許容命令は、前記命令アクセス制御回路以外の前記装置の処理回路によってノーオペレーション命令として処理される請求項1に記載の装置。
  3. 前記第1ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第2ドメインであるとき、前記第2命令が許容命令であるか否かに応じてアクセスを制御するために前記命令アクセス制御回路がアクティブにされるか、または、アクティブにされないかを示す請求項1に記載の装置。
  4. 前記第2ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第1ドメインであるとき、前記第2命令が許容命令であるか否かに応じてアクセスを制御するために前記命令アクセス制御回路がアクティブされるか、または、アクティブにされないかを示す請求項1に記載の装置。
  5. 各ドメインについての前記プログラム可能な権限は、該ドメインと対応付けされたプログラム命令が、前記複数のドメインについての前記プログラム可能な権限を変更することができるか否かを示す請求項1に記載の装置。
  6. 前記命令アクセス制御回路は、また、前記第1命令が許容分岐命令であるかどうかを判定し、前記第1命令が許容分岐命令でないならば、前記アクセス違反応答を引き起こす請求項1に記載の装置。
  7. 前記例外の処理からの復帰において、前記命令アクセス制御回路が前記第2命令へのアクセスを制御するために前記第1命令の前記第1ドメインを識別することができるように、前記第1命令と前記第2命令との間で例外が発生するとき、保存される状態レジスタは前記第1ドメインを識別するデータを記憶する請求項1に記載の装置。
  8. 前記メモリアドレス空間は前記メモリと対応付けされた仮想メモリアドレス空間であり、
    前記第1ドメインおよび前記第2ドメインは前記仮想メモリアドレス空間内のドメインであり、
    メモリ管理回路は仮想メモリアドレスを物理メモリアドレスにマッピングする請求項1に記載の装置。
  9. どの仮想メモリアドレスがどのドメインに対応するかを示すドメイン指示データは前記メモリ管理回路に記憶される請求項に記載の装置。
  10. 前記複数のドメインの前記プログラム可能な権限を指定するデータは、1つまたは複数のプログラム可能な構成定義レジスタ内に記憶される請求項1に記載の装置。
  11. 前記アクセス違反応答は、
    ドメイン違反例外処理コードの実行、
    メモリアボート、
    アクセス違反例外処理コードの実行、
    未定義の命令例外処理コードの実行
    のうち1つである請求項1に記載の装置。
  12. データを処理する方法であって、
    メモリが、メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリ内にプログラム命令を記憶するステップを有し、前記メモリアドレス空間は少なくとも第1ドメインおよび第2ドメインを有し、ドメインはメモリアドレスの集合を含み、
    前記メモリに結合された命令取り込み回路が、前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込むステップと、
    前記命令取り込み回路に結合された命令アクセス制御回路が、前記第2ドメイン内の第2メモリアドレスと対応付けされた第2命令の取り込みが続く前記第1ドメイン内の第1メモリアドレスと対応付けされた第1命令の取り込みに応答して、
    (i)前記第1ドメインと対応付けされた命令にアクセスした後に前記第2ドメインと対応付けされた命令の実行を開始するときに、前記第2命令の命令コードから前記第2命令が実行することを許可された許容命令であるかどうか判定し、
    (ii)前記第2命令が許容命令でないならば、アクセス違反応答を引き起こす
    ステップと、
    をさらに有し、
    前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有し、
    前記許容命令は許容分岐ターゲット命令であり、
    前記処理は複数のプログラム命令セットを使用し、
    各プログラム命令セットは少なくとも1つの許容分岐ターゲット命令を有し、
    前記命令アクセス制御回路が、前記第2命令が、前記第2命令を含む命令セットについての前記少なくとも1つの許容分岐ターゲット命令の1つであるか否かを判定するステップをさらに有する方法。
  13. 前記許容命令は、前記命令アクセス制御回路以外の前記処理のための処理回路によって、前記アクセス違反応答の生成を制御する以外にノーオペレーション命令として処理される請求項12に記載の方法。
  14. 前記第1ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第2ドメインであるとき、前記第2命令が許容命令であるか否かに応じてアクセスが制御されるかを示す請求項12に記載の方法。
  15. 前記第2ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第1ドメインであるとき、前記第2命令が許容命令であるか否かに応じてアクセスを制御するためにアクティブにされるか、または、アクティブにされないかを示す請求項12に記載の方法。
  16. 各ドメインについての前記プログラム可能な権限は、該ドメインと対応付けされたプログラム命令が、前記複数のドメインについての前記プログラム可能な権限を変更することができるか否かを示す請求項12に記載の方法。
  17. 前記命令アクセス制御回路が、前記第1命令が許容分岐命令であるかどうかを判定し、前記第1命令が許容分岐命令でないならば、前記アクセス違反応答を引き起こすステップをさらに有する請求項12に記載の方法。
  18. 前記例外の処理からの復帰において、前記命令アクセス制御回路が、前記第2命令へのアクセスを制御するために前記第1命令の前記第1ドメインを識別することができるように、前記第1命令と前記第2命令との間で例外が発生するとき、保存される状態レジスタが、前記第1ドメインを識別するデータを記憶するステップをさらに有する請求項12に記載の方法。
  19. 前記メモリアドレス空間は前記メモリと対応付けされた仮想メモリアドレス空間であり、
    前記第1ドメインおよび前記第2ドメインは前記仮想メモリアドレス空間内のドメインであり、
    メモリ管理回路によって、仮想メモリアドレスは物理メモリアドレスにマッピングされる請求項12に記載の方法。
  20. どの仮想メモリアドレスがどのドメインに対応するかを示すドメイン指示データは、前記メモリ管理回路によって、仮想メモリアドレスから物理メモリアドレスへのマッピングを指定するデータとともに記憶される請求項19に記載の方法。
  21. 前記複数のドメインの前記プログラム可能な権限を指定するデータは、1つまたは複数のプログラム可能な構成定義レジスタ内に記憶される請求項12に記載の方法。
  22. 前記アクセス違反応答は、
    ドメイン違反例外処理コードの実行、
    メモリアボート、
    アクセス違反例外処理コードの実行、
    未定義の命令例外処理コードの実行
    のうち1つである請求項12に記載の方法。
  23. 請求項12に記載の方法を実行するようにコンピュータを制御するためのコンピュータプログラムを記憶するコンピュータプログラム記憶媒体。
JP2008096484A 2007-04-03 2008-04-02 保護された関数呼び出し Active JP5000573B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0706491.8 2007-04-03
GB0706491A GB2448149B (en) 2007-04-03 2007-04-03 Protected function calling

Publications (2)

Publication Number Publication Date
JP2008257735A JP2008257735A (ja) 2008-10-23
JP5000573B2 true JP5000573B2 (ja) 2012-08-15

Family

ID=38050767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008096484A Active JP5000573B2 (ja) 2007-04-03 2008-04-02 保護された関数呼び出し

Country Status (4)

Country Link
US (1) US8010772B2 (ja)
JP (1) JP5000573B2 (ja)
CN (1) CN101281459B (ja)
GB (1) GB2448149B (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
JP2009104555A (ja) * 2007-10-25 2009-05-14 Intel Corp Vt環境で動作するソフトウェアエージェントの改竄防止、方法および装置
US8302210B2 (en) 2009-08-24 2012-10-30 Apple Inc. System and method for call path enforcement
JP5582971B2 (ja) * 2009-12-15 2014-09-03 キヤノン株式会社 メモリ保護方法および情報処理装置
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
WO2012169111A1 (ja) * 2011-06-06 2012-12-13 パナソニック株式会社 コンテンツデータ再生方法、およびサムネイル画像生成方法
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9575903B2 (en) 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US8930714B2 (en) 2011-07-19 2015-01-06 Elwha Llc Encrypted memory
US9465657B2 (en) 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9170843B2 (en) 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US9098608B2 (en) 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
US9213828B2 (en) 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US9202071B2 (en) 2012-02-08 2015-12-01 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
GB201217531D0 (en) * 2012-10-01 2012-11-14 Advanced Risc Mach Ltd ARMv7-M Asset Protection Proposal
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
GB2501343A (en) * 2012-02-08 2013-10-23 Advanced Risc Mach Ltd Data processing apparatus and method using secure domain and less secure domain
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9672164B2 (en) 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
CN103679035B (zh) * 2012-09-24 2016-12-28 腾讯科技(深圳)有限公司 安全性检测方法与装置
US9411590B2 (en) * 2013-03-15 2016-08-09 Qualcomm Incorporated Method to improve speed of executing return branch instructions in a processor
US9721120B2 (en) 2013-05-14 2017-08-01 Apple Inc. Preventing unauthorized calls to a protected function
GB2517493A (en) * 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
US9952887B2 (en) * 2014-06-23 2018-04-24 Vmware, Inc. Device simulation in a secure mode supported by hardware architectures
US9830162B2 (en) * 2014-12-15 2017-11-28 Intel Corporation Technologies for indirect branch target security
JP6476098B2 (ja) * 2015-09-15 2019-02-27 ルネサスエレクトロニクス株式会社 半導体装置
US9870466B2 (en) 2015-09-26 2018-01-16 Mcafee, Inc. Hardware-enforced code paths
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
GB2549511B (en) * 2016-04-20 2019-02-13 Advanced Risc Mach Ltd An apparatus and method for performing operations on capability metadata
EP3264317B1 (en) * 2016-06-29 2019-11-20 Arm Ltd Permission control for contingent memory access program instruction
GB2552966B (en) * 2016-08-15 2019-12-11 Arm Ip Ltd Methods and apparatus for protecting domains of a device from unauthorised accesses
US10650156B2 (en) 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
GB2563010B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for managing a capability domain
GB2563580B (en) 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
US20210042100A1 (en) 2018-02-02 2021-02-11 Dover Microsystems, Inc. System and method for translating mapping policy into code
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10761855B2 (en) 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US10841161B2 (en) 2018-08-02 2020-11-17 Sap Se Real-time configuration check framework
US11914726B2 (en) * 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US20200073822A1 (en) * 2018-08-30 2020-03-05 Micron Technology, Inc. Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11544069B2 (en) 2018-10-25 2023-01-03 Micron Technology, Inc. Universal pointers for data exchange in a computer system having independent processors
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
WO2020182296A1 (en) * 2019-03-12 2020-09-17 Huawei Technologies Co., Ltd. Apparatus and method for enforcing hardware-assisted memory safety
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4087856A (en) * 1976-06-30 1978-05-02 International Business Machines Corporation Location dependence for assuring the security of system-control operations
JPS5783850A (en) * 1980-11-12 1982-05-25 Mitsubishi Electric Corp Data processing device
US4545012A (en) * 1981-05-22 1985-10-01 Data General Corporation Access control system for use in a digital computer system with object-based addressing and call and return operations
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US5107443A (en) * 1988-09-07 1992-04-21 Xerox Corporation Private regions within a shared workspace
GB2260004B (en) * 1991-09-30 1995-02-08 Apple Computer Memory management unit for a computer system
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US6633963B1 (en) * 2000-03-31 2003-10-14 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
KR100941104B1 (ko) * 2002-11-18 2010-02-10 에이알엠 리미티드 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
JP2004280801A (ja) * 2003-02-24 2004-10-07 Matsushita Electric Ind Co Ltd プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
US20040168047A1 (en) * 2003-02-24 2004-08-26 Matsushita Electric Industrial Co., Ltd. Processor and compiler for creating program for the processor
US7134006B2 (en) * 2003-06-03 2006-11-07 Gateway Inc. Method and system for changing software access level within or outside a host protected area
DE10335643B4 (de) * 2003-08-04 2007-10-31 Infineon Technologies Ag Vorrichtung und Verfahren zum Steuern des Zugriffs von mehreren Datenverarbeitungseinrichtungen auf einen Speicher
US20050262568A1 (en) * 2004-05-18 2005-11-24 Hansen Mark D System and method for managing access to protected content by untrusted applications

Also Published As

Publication number Publication date
GB0706491D0 (en) 2007-05-09
CN101281459B (zh) 2012-08-22
CN101281459A (zh) 2008-10-08
GB2448149B (en) 2011-05-18
US20080250216A1 (en) 2008-10-09
GB2448149A (en) 2008-10-08
JP2008257735A (ja) 2008-10-23
US8010772B2 (en) 2011-08-30

Similar Documents

Publication Publication Date Title
JP5000573B2 (ja) 保護された関数呼び出し
JP4989543B2 (ja) メモリドメインを基にしたデータ処理システム内のセキュリティ制御
US10838878B2 (en) Apparatus and method for generating signed bounded pointers
US8301856B2 (en) Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
US11030344B2 (en) Apparatus and method for controlling use of bounded pointers
CN110532767B (zh) 面向sgx安全应用的内部隔离方法
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
EP3885950B1 (en) Shadow stack isa extensions to support fast return and event delivery (fred) architecture
EP4205003A1 (en) Technique for constraining access to memory using capabilities
WO2023209323A1 (en) Exception return state lock parameter
TW202319913A (zh) 用於使用能力限制對記憶體存取之技術
WO2024028565A1 (en) No-operation-compatible instruction
TW202343257A (zh) 記憶體管理
TW202418067A (zh) 堆疊指標切換有效性檢查
CN118339542A (zh) 两阶段地址转换
TW202416122A (zh) 用以保護影子堆疊之處理器、方法、系統和指令

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120417

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120516

R150 Certificate of patent or registration of utility model

Ref document number: 5000573

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150525

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250