JP6189039B2 - セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法 - Google Patents

セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法 Download PDF

Info

Publication number
JP6189039B2
JP6189039B2 JP2013012980A JP2013012980A JP6189039B2 JP 6189039 B2 JP6189039 B2 JP 6189039B2 JP 2013012980 A JP2013012980 A JP 2013012980A JP 2013012980 A JP2013012980 A JP 2013012980A JP 6189039 B2 JP6189039 B2 JP 6189039B2
Authority
JP
Japan
Prior art keywords
domain
instruction
secure
target
control flow
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
JP2013012980A
Other languages
English (en)
Other versions
JP2013161479A (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
Priority claimed from US13/368,419 external-priority patent/US9477834B2/en
Priority claimed from GB201217531A external-priority patent/GB201217531D0/en
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2013161479A publication Critical patent/JP2013161479A/ja
Application granted granted Critical
Publication of JP6189039B2 publication Critical patent/JP6189039B2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、データ処理の分野に関する。より詳細には、本発明は、セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法に関する。
データ処理装置は、セキュアドメインおよび低セキュアドメインで動作できる。セキュアドメインで動作するとき、低セキュアドメインで動作するときにアクセス可能でないデータがアクセスされうる。これは、おそらくは機密を要するデータおよびコードを、権限のない人またはプロセスによるアクセスから隔離する方法を提供する。
データおよびコードをセキュアに維持する1つの方法は、トラストゾーンアーキテクチャを有する英国ケンブリッジ大学のARM(登録商標)によって提供され、トラストゾーンアーキテクチャでは、セキュア状態と非セキュア状態が存在し、状態間を移行するために例外命令が使用され、例外ハンドラはセキュア側のセキュリティを保護する。この手法は高い程度のセキュリティを提供するが、セキュリティ状態を変更するために、ソフトウェア例外ハンドラの形態のかなりのソフトウェア介入が必要とされ、ソフトウェア介入は、システムの性能を低下させると共に、全ての呼出しが例外ハンドラを通してプロキシされなければならないため、セキュアソフトウェア用の外部アプリケーションプログラムインタフェースAPIを開発するのに必要される労力の量を増加させる。
マイクロコントローラなどの小型システムの場合、セキュリティのレベルとシステムの性能との間の兼ね合いを達成し、したがって、セキュアドメインを実装することに関連するオーバヘッドを適度に低く維持することがより重要である場合がある。
第1の態様によれば、本発明は、データ処理装置を提供し、
プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備え、処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理回路は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、処理回路は、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、ターゲットアドレスのプログラム命令について処理回路が動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、処理回路は、
(i)複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令についてドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、
(ii)ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こす(trigger)ように構成される。
本技法では、制御フロー変更命令は、複数のドメイン間で処理を切換えるために使用することができる。これは、ドメイン間の変更を制御する、したがって、性能を改善するために、例外および対応するソフトウェア例外ハンドラを使用することが必要でないことを意味する。しかし、制御フロー変更命令が、システムのセキュリティセーフガードを迂回しないことが重要である。
制御フロー変更命令の後で、ターゲットアドレスのプログラム命令がそこで処理される選択ドメインが、ドメイン選択技法を使用して決定される。したがって、同じ制御フロー変更命令は、使用されるドメイン選択技法に応じて、異なるドメインにおける処理に切換えるために使用されうる。
1つのドメイン内のプログラム命令の処理に切換えることをプログラマによって意図される制御フロー変更命令の挙動が、低セキュアドメイン内のコードによって変更される場合に、セキュリティリスクが生じうるため、制御フロー変更命令は、代わりに、異なるドメイン内のプログラム命令の処理に切換えることを本技法は認識する。たとえば、低セキュアドメイン内のコードは、制御フロー変更命令のターゲットアドレスを変更する場合がある。例として、低セキュアドメイン内の命令への切換えをもたらすことを意図される、セキュアドメイン内で実行される制御フロー変更命令が存在する場合がある。しかし、制御フロー変更命令のターゲットアドレスは、セキュアドメイン内で処理されるプログラム命令を指すように、低セキュアドメイン内のコードによって設定されるため、今度は、制御フロー変更命令は、代わりにセキュアドメイン内での処理に切換えることができる。これは、ハッカーが低セキュアドメイン内のコードを使用して、セキュアドメインからセキュアコードへの制御されない移行を引き起こすことを可能にしうる。その理由は、通常、セキュア処理が信頼されると予想されるため、セキュア−セキュア切換えが監視されないことになるためである。これは、セキュリティ違反(breach)をもたらしうる。
この問題に対処するために、処理回路は、少なくともセキュアドメイン内にある間に制御フロー変更命令が実行されるときに、ドメインチェッキングを実施することができる。ドメインチェッキングは、複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定する。実際のドメインがドメイン選択によって決定されるため、ドメインチェッキングは、ターゲットアドレスのプログラム命令についてシステムが動作することになる実際のドメインに影響を及ぼさない。しかし、ドメインチェッキングは、制御フロー変更命令が、予想されるドメイン移行をもたらしたことを、システムが検証することを可能にする。ドメイン選択で決定されたドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーが引き起こされうる。こうして、低セキュアコードが、制御フロー変更命令を予想されない方法で作用させる場合、セキュアデータに対する権限のないアクセスを防ぐために、エラーが引き起こされうる。
制御フロー変更命令は、処理される命令の非順次移行をもたらす任意の命令とすることができる。最も一般的には、制御フロー変更命令は、分岐命令を含むことができる。しかし、制御フロー変更命令はまた、他の種類の命令、たとえば、処理される次の命令を指示するプログラムカウンタを記憶するレジスタに値をロードするロード命令を含むことができる。
低セキュアドメインにある間に実行される制御フロー変更命令についてドメインチェッキングを実施することは必須ではない。低セキュアドメイン内の命令がより厳格なチェックを受けるべきであることが一般に予想されるため、これは反直観的である場合がある。しかし、しばしば、低セキュアドメインからセキュアドメインへの移行を調節するための何らかの他のメカニズムが存在するであろう。一方、上述したタイプの攻撃が最も問題になるのは、セキュアドメイン内にあるときである。その理由は、一般に、システムが既にセキュアドメイン内にあるとき、コードは、信頼され、正しく働いていると仮定されることになるため、このことが、低セキュアコードを使用するハッカーによって利用されて、セキュアドメイン内の制御フロー変更命令の挙動が変更されうるからである。したがって、ドメインチェッキングは、少なくとも、セキュアドメイン内にある間に実行される制御フロー変更命令について実施される。
それでも、所望される場合、ドメインチェッキングはまた、低セキュアドメインで動作している間に制御フロー変更命令が実行されるときに実施されうる。セキュリティ違反を防ぐと共に、ドメインチェッキングはまた、そのビット値が、パーティクルストライク(particle strike)または他の種類のエラーのせいで、今や命令が予想通りに作用しないように状態を変更した、破損した命令またはターゲットアドレスを検出するために使用されうる。これは、セキュアドメインと低セキュアドメインの両方において有用でありうる。
制御フロー変更命令に加えて、ドメイン選択はまた、他の命令について実施されうる。たとえば、いくつかのシステムでは、処理回路は、各命令について、命令がどのドメインで処理されるべきかを決定しうる。
ドメイン選択およびドメインチェッキングは、選択ドメインおよび許容ドメイン(複数可)を決定するために異なる技法を使用するため、ドメイン選択は、異なる形態のドメインチェッキングによって検証されうる。たとえば、第1の決定法は、ドメイン選択およびドメインチェッキングの一方のために使用され、第2の決定法は、他方のために使用されうる。一実施形態でドメイン選択のために使用される技法は、別の実施形態ではドメインチェッキングのために使用されることができる、また、その逆も同じである。
一実施形態では、セキュア領域および低セキュア領域を含む複数の領域を有するデータ記憶装置(data store)が存在する場合があり、セキュア領域は、セキュアドメインで動作するときに処理回路によってアクセス可能であり、低セキュアドメイン内にあるときにアクセス可能でないデータを記憶するためのものである。低セキュア領域は、セキュアドメイン内にあるとき、および、低セキュアドメイン内にあるとき、の両方において、アクセス可能である。
したがって、第1の決定法は、複数の領域の少なくともどの領域が、ターゲットアドレスのプログラム命令の命令アドレスに対応するかに応じて、少なくとも1つの選択ドメインを決定することを含むことができる。一般に、低セキュアドメインは、プログラム命令の命令アドレスが低セキュア領域に対応する場合、選択ドメインとして選択されることができ、セキュアドメインは、命令アドレスがセキュア領域に対応する場合、選択されることができる。この技法は、ドメイン選択またはドメインチェッキングのいずれかのために使用されることができる。
どの領域が命令アドレスに対応するかは、第1の決定法における唯一の基準でない場合がある。たとえば、いくつかの命令について、第1の決定法はまた、ターゲットアドレスのプログラム命令のタイプに依存する場合がある。同様に、第1の決定法がドメインチェッキングのために使用される場合、複数のドメインが、許容選択ドメインとして選択されうる。
第2の決定法は、選択ドメイン(または、ドメインチェッキングの場合、いくつかの許容選択ドメインのうちの1つの選択ドメイン)として、ターゲットドメイン値によって指示される複数のドメインのうちの1つのドメインを決定することを含むことができる。ターゲットドメイン値は、ターゲットアドレスのプログラム命令がどのドメインで処理されることを予想されるかを指示するために、プロセッサによって維持されることができる。これは、ドメイン選択またはドメインチェッキングの一部とすることができる。
したがって、一例では、ドメイン選択は、ターゲットアドレスのプログラム命令の命令アドレスに対応するデータ記憶装置の領域に基づいて実施されることができ、ドメインチェッキングは、ターゲットドメイン値に基づいて実施されることができる。この場合、ターゲットドメイン値は、制御フロー変更命令が正しい領域内のプログラム命令に切換わったかどうかを検証するためのチェックを提供する。別の例では、ターゲットドメイン値は、ターゲットアドレスのプログラム命令が処理される実際のドメインを制御するために使用されることができ、ドメインチェッキングは、その後、ターゲットアドレスがデータ記憶装置の正しい領域内にあることを検証することができる。
ターゲットドメイン値は、異なる方法で表されることができる。一例では、ターゲットドメイン値は、制御フロー変更命令のエンコーディングにおいて指定されることができる。たとえば、選択ドメインとして異なるセキュリティドメインを指示する異なるターゲットドメイン値に対応するいくつかのバージョンの制御フロー変更命令が存在する場合がある。プログラムを書くとき、プログラマは、変更命令の制御フローによって、選択ドメイン(ドメイン選択の場合)または許容ドメイン(複数可)(ドメインチェッキングの場合)として適切なドメインが選択されるように、どのバージョンの制御フロー変更命令を使用すべきかを選択できる。
あるいは、ターゲットドメイン値は、制御フロー変更命令によって使用されるターゲットアドレスの一部において指定されることができる。この形態のターゲットドメイン値は、ターゲットアドレスを記憶するレジスタを特定する間接制御フロー変更命令について有用でありうる。
ターゲットドメイン値は、ターゲットドメイン値設定命令に応答して設定されることができる。これは、制御フロー変更命令の前に実行されるターゲットドメイン値設定命令を含むことによって、プログラマが、後続の制御フロー変更命令の予想される移行を制御することを可能にする。たとえば、低セキュアドメイン内にある間に関数ポインタがセットされる場合、セキュアドメイン内で関数ポインタを使用する前に、ターゲットドメイン設定命令が、制御フロー変更命令について予想される挙動を設定するために実行されうる。
ターゲットドメイン値設定命令の一例は、低セキュアドメインからセキュアドメインへの移行を防ぐために使用されるガード命令を含む。セキュア関数の中央への制御されない切換えを回避することがしばしば重要である。その理由は、このことが、時として、セキュア関数において予め実施されるセキュリティチェックを迂回しうるためである。こうした切換えを防止するために、システムは、低セキュアドメインからセキュアドメインに処理が切換わる時点で、ガード命令が存在しなければならないことを必要としうる。セキュア領域内のターゲットアドレスのプログラム命令を処理することに切換える前に、処理回路が低セキュアドメインでそれについて動作していた制御フロー変更命令の後で、ターゲットアドレスのプログラム命令がガード命令でない場合、エラーが引き起こされうる。したがって、ガード命令は、セキュアコードへの信頼されるエントリポイントをマーク付けするために使用されるべきである。ガード命令は、ターゲットドメイン値を設定するのに有用でありうる。その理由は、ターゲットアドレスが、セキュアドメイン内で使用するために低セキュアドメイン内で設定されると、セキュアドメインへのエントリが存在しなければならず、したがって、ガード命令が実行されることになるからである。ガード命令を使用してターゲットドメイン値を設定することにより、この目的のためのさらなる命令の実行を実行する必要がない。
特に、ガード命令は、後続の制御フロー変更命令が処理を切換えることになる戻りアドレス用のターゲットドメイン値を設定するのに有用である場合がある。ガード命令の存在は、しばしば、セキュアドメイン内の関数が低セキュアコードによって呼出された可能性があるというリスクが存在するため、低セキュアドメインによって指定された戻りアドレスのプログラム命令に切換えるように処理を引き起こす後続の関数戻り制御フロー変更命令が存在しうることをプログラマが予想することを意味する。この可能性を防ぐために、関数戻り用の予想される移行をセットアップするために、戻りアドレス用のターゲットドメイン値を設定するためにガード命令が使用されうる。
一例では、ターゲットドメイン値設定命令が実施される前に、処理回路が低セキュアドメインで動作していた場合、ターゲットドメイン値は、低セキュアドメインを指示するために設定されうる。たとえば、ターゲットドメイン値設定命令がガード命令である場合、そして、ガード命令に切換える前にシステムが低セキュアドメイン内にあった場合、後続の関数戻りは、低セキュアドメインに戻るように切換えるべきであることが予想される。
データ記憶装置は、セキュアスタックおよび低セキュアスタックを含む複数のスタックを有することができ、セキュアスタックは、セキュアドメイン内にあるときにアクセス可能であり、低セキュアドメイン内にあるときにアクセス可能でない。低セキュアスタックは、セキュアドメインおよび低セキュアドメインからアクセスされうる。
関数が制御フロー変更命令を使用して呼出されるとき、時として、関数呼出しの後に実行されるコードが使用するために、関数呼出しの前に実行されているコードから関数引数(データ値)を渡すことが望ましい場合がある。スタックは、関数引数を渡すために使用されることができる。関数呼出しがセキュアドメインから低セキュアドメインへの移行をもたらす場合、セキュアスタックが処理回路にとってアクセス可能でないため、引数は、低セキュアスタック上に配置される必要があることになる。一方、関数呼出しがセキュアドメインからセキュアドメインへの移行をもたらす場合、引数は、低セキュアコードがこれらのデータ値にアクセスすることを防止するために、セキュアスタック内に配置されるべきである。したがって、セキュアドメイン内で関数呼出しを実行すると、どのスタックを使用すべきかについての決定は、関数呼出しの後のオペレーションのドメインに依存することになる。ターゲットドメイン値は、ターゲットアドレスなどに基づいて、関数呼出しがどのドメインを他の技法に切換えると予想されるかについての迅速な指示を提供しうる。したがって、関数引数を渡すためにどのスタックを使用すべきかを決定するためにターゲットドメイン値を再使用することは、その関数への迅速な切換え、したがって、処理性能の改善を可能にする。
ターゲットドメイン値についての別の使用は、関数戻りアドレスを設定することにある。一般に、関数を呼出すとき、第1の制御フロー変更命令が実行され、関数から戻るとき、第2の制御フロー変更命令が実行されることになる。第1の制御フロー変更命令が発生すると、戻りアドレスは、通常、第2の制御フロー変更命令に応答して処理が戻るべきであるロケーションを指示するために所定の記憶ロケーション(たとえば、リンクレジスタ)に記憶される。セキュアドメイン内のコードから低セキュアドメイン内の関数を呼出すときに生じる1つの問題は、戻りアドレスが機密である場合があることであるため、低セキュアドメインが戻りアドレスにアクセスすることを防止することが望ましい場合がある。
この問題に対処するために、第1の制御フロー変更命令が、セキュアドメインで実行され、低セキュアドメインへの移行をもたらすことに応答して、ダミー戻りアドレスであって、有効命令アドレスでない、ダミー戻りアドレスは、所定の記憶ロケーションに記憶されることができる。実際の戻りアドレスは、低セキュアドメイン内にある間、アクセス可能でないセキュア記憶ロケーション(たとえば、セキュアスタックまたはセキュアメモリ領域)に記憶されることができる。第2の制御フロー変更命令が実行されると、プロセッサは、戻りアドレスがダミー戻りアドレスであることを検出し、その後、セキュア記憶ロケーションから実際の戻りアドレスを取出させる。処理は、その後、その関数から戻るために、実際の戻りアドレスに切換えられうる。
したがって、セキュアドメインから関数を呼出すとき、実際の戻りアドレスが所定の記憶ロケーションに記憶されるべきか、ダミー戻りアドレスが所定の記憶ロケーションに記憶されるべきかを判定するために、関数が、セキュアドメイン内で処理されることになるか、低セキュアドメイン内で処理されることになるかを判定することができることが有用である。これは、ターゲットドメイン値を使用して迅速かつ容易に行われうる。
ターゲットドメイン値は、種々の方法で表されうる。制御フロー変更命令のエンコーディングまたは制御フロー変更命令によって使用されるターゲットアドレスのエンコーディングのいずれかにおいて冗長データフィールドを使用することが有用でありうる。たとえば、所与の機能のために元々意図されたフィールドは、その機能がデータ処理装置によってサポートされない場合、重要でない場合があるため、このフィールドは、ターゲットドメイン値を指示するために再使用されうる。これは、ターゲットドメイン値のためにさらなるビットフィールドを付加する必要性を回避させる。
たとえば、一部のシステムは、複数の命令セットからの命令を実行しうる。こうしたシステムでは、制御フロー変更命令またはターゲットアドレスは、ターゲットアドレスの命令が、第1の命令セットからのものであるか、第2の命令セットからのものであるかを指示するターゲット命令セットフィールドを含むことができる。これは、プロセッサが、制御フロー変更命令を実行するときにターゲットアドレスの命令をどのように復号するかを決定することを可能にする。他のシステムは、これらの命令セットのうちの1つの命令セットを実行できるだけであるが、2つの命令セットをサポートするシステム用に設計された命令を依然として実行する場合がある。この場合、命令のターゲット命令フィールドまたはターゲットアドレスは、冗長になる場合がある。したがって、このフィールドは、ターゲットドメイン値を指示するために再使用されうる。
ターゲット命令セットフィールドは、第1の命令セットを指示する第1の値および第2の命令セットを指示する第2の値を有することができる。第1の命令セットが処理回路によってサポートされる命令セットであり、第2の命令が処理回路によってサポートされない場合、第1の値が選択ドメインとしてセキュアドメインを指示し、第2の値が選択ドメインとして低セキュアドメインを指示するように、ターゲット命令セットフィールドの値をターゲットドメイン値の値にマッピングすることが有用でありうる。第1の命令セットだけがサポートされるため、これは、第1の命令セットの命令を使用して書かれたソフトウェア内の既存の制御フロー変更命令が、ターゲット命令セットフィールドの第1の値を指定することを意味することになる。一般にセキュアドメインで実行されるほとんどの制御フロー変更命令は、セキュアドメイン内の他のロケーションへの移行をもたらすことを意図されるため、異なるターゲットドメイン値を指示するために比較的少数の命令またはターゲットアドレスが修正される必要があるように、この値を、セキュアドメインを指示するターゲットドメイン値にマッピングすることが有用である。低セキュアドメインに切換えることを意図される、セキュアドメイン内の制御フロー変更命令用のターゲットドメイン値だけが、(たとえば、選択ドメインとして低セキュアドメインを指示するために、先のターゲットドメイン値設定命令を付加することによって)変更される必要があることになる。したがって、ターゲットドメイン値に対するターゲット命令セットフィールドのこのマッピングを採用することは、レガシーコードに関する後方互換性を可能にする。
ターゲットドメイン値のこのマッピングが使用されるとき、レガシーコードに関する後方互換性を改善するために制御フロー変更命令が低セキュアドメインで実施されるときにドメインチェッキングを実施することを省略することが有用である。低セキュアドメイン内のほとんどの制御フロー変更命令は、同様に低セキュアドメイン内の別の命令への移行をもたらすことになる。しかし、ターゲットドメイン値の上記マッピングを使用して、第1の命令セットのレガシー命令は、セキュアドメインが選択ドメインであると予想されることを指示することになる、ターゲット命令セットフィールド内の第1の値を指示することになる。したがって、ドメインチェッキングが同様に低セキュアドメインで実施される場合、低セキュアドメインで実施されるほとんどの制御フロー変更命令に関連するターゲットドメイン値は、ドメインチェックエラーを防止するために修正される必要があることになる。これは、レガシーコードに関するシステムの後方互換性を減少させることになる。低セキュアドメインからセキュアドメインへの移行を制御するためにガード命令などの他のメカニズムが既に設けられうるため、いずれにしても、ドメインチェッキングが、低セキュアドメイン内の命令にとってあまり重要でないことから、前もって書かれたコードが修正される必要がないように、低セキュアドメイン内にあるときドメインチェッキングを省略することがより効率的でありうる。
しばしば、ドメインチェッキングは、プログラム命令について許容選択ドメインとして単一ドメインを決定することになる。たとえば、セキュアコードにおいて、低セキュアドメインに戻るように切換えると考えられる制御フロー変更命令が存在する場合があるため、低セキュアドメインだけが許容ドメインとして選択されうる。
しかし、他の場合には、同じプログラム命令用の許容選択ドメインとして複数のドメインを決定することが有用である場合がある。たとえば、時としてセキュアドメインに切換えるために使用され、時として低セキュアドメインに切換えるために使用されることができるセキュアドメイン内のいくつかの制御フロー変更命令が存在する場合がある。この場合、複数の許容ドメインを選択することによって、この命令は、命令がどのドメインに切換わるかによらず、ドメインチェックエラーを引き起こすことなく実行されうる。別の例では、低セキュアドメイン内にあるときにドメインチェックエラーはそれほど重大でないため、低セキュアドメイン内の制御フロー変更命令について、両方のドメインが許容ドメインとして設定されうる。
複数の許容ドメインを選択することが有用でありうる別の命令は、ガード命令である。たとえば、同じプログラム関数が、セキュアドメインまたは低セキュアドメインのいずれかから呼出されることができ、その場合、ガード命令は、通常、低セキュアドメインからの許容エントリポイントを指示するために関数の始めに存在することになる。低セキュアドメインから関数を呼出す場合、ガード命令が存在しない場合、セキュアドメインへの切換えが存在しないように、ガード命令が存在するかどうか判定されるまで、低セキュアドメインからの切換えを延期することが望ましい場合がある。したがって、ガード命令は、関数が、セキュアドメインから呼出されるか、低セキュアドメインから呼出されるかに応じていずれかのドメインで働くことができる場合がある。この場合に起こるドメインチェックエラーを防止するために、ガード命令がメモリのどの領域に存在するか、または、ターゲットドメイン値の値によらず、ガード命令についてセキュアドメインと低セキュアドメインの両方を許容ドメインとして設定することが好都合である場合がある。
セキュアドメインで実行される少なくとも1つの制御フロー変更命令の場合、時として、ターゲットアドレスのプログラム命令を処理することに切換える前に、セキュアドメイン内で動作することから非セキュアドメイン内で動作することへ切換えることが有用でありうる。これは、切換えの後で、システムが、低セキュアドメイン内の命令に由来するように見えるため、ガード命令が、エラーを回避することを必要とされることを意味する。これは、セキュアドメイン内の安全エントリポイントへの切換えを当てにされない制御フロー変更命令、たとえば、ターゲットドメイン値が許容ドメインとして低セキュアドメインを指示する制御フロー変更命令について有用である(この場合、低セキュアコードが、制御フロー変更命令についてターゲットアドレスを設定した可能性がある)。
別の態様から見ると、本発明は、データ処理装置を提供し、データ処理装置は、
プログラム命令に応答して、データ処理オペレーションを実施するための処理手段を備え、処理手段は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理手段は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、処理手段は、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、処理手段が、ターゲットアドレスのプログラム命令について動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、処理手段は、
(i)複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、ドメインチェッキングは、ドメイン選択とは異なる技法を使用し、
(ii)ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成される。
さらなる態様から見ると、本発明は、プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備える装置用のデータ処理方法を提供し、処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理回路は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、前記方法は、
制御フロー変更命令の実行に応答して、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換えること、
ターゲットアドレスのプログラム命令について処理回路が動作する選択ドメインを決定するためのドメイン選択を実施すること、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、
(i)複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、ドメインチェッキングは、ドメイン選択とは異なる技法を使用すること、および、
(ii)ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすことを含む。
本発明の上記のまた他の目的、特徴、および利点は、添付図面に関連して読まれる、例証的な実施形態の以下の詳細な説明から明らかになるであろう。
データ処理装置を概略的に示す図である。 低セキュア領域およびセキュア領域を有するメモリアドレス空間を示す図である。 低セキュア領域内の命令がセキュア領域内の分岐命令用のターゲットアドレスを設定するプログラムコードの例を示す図である。 ハッカーが図3Aの低セキュアコードを変更する場合に起こりうるセキュリティ問題を示す図である。 制御フロー変更命令の命令エンコーディングの一部を使用してターゲットドメイン値を指示する例を示す図である。 ターゲットドメイン値が制御フロー変更命令のターゲットアドレスの一部によって表される例を示す図である。 ドメイン選択およびドメインチェッキングを含むデータ処理方法を示す図である。 ドメイン選択またはドメインチェッキングのいずれかのために使用されうる第1の決定法の例を示す図である。 ドメイン選択またはドメインチェッキングのいずれかのために使用されうる第2の決定法の例を示す図である。 図3Bに示すセキュリティ問題が、ドメイン選択を検証するためにドメインチェッキングを実施することによってどのように阻止されうるかの例を示す図である。 セキュアコードにアクセスする関数ポインタを使用しようとする低セキュアコードを防ぐためにドメインチェッキングを使用する例を示す図である。 関数呼出しおよび関数戻りを扱う例を示す図である。 関数呼出しおよび関数戻りを扱う例を示す図である。 関数引数を渡すために低セキュアスタックおよびセキュアスタックのいずれを使用すべきかを選択する例を示す図である。 さらなるセキュアコードを処理することに切換えるために、低セキュアコードにとってセキュアコードを制御することが適法である場合がある状況の例を示す図である。 図13の状況が安全にかつエラーを引き起こすことなくどのように達成されうるかの第1の例を示す図である。 図13の状況が安全にかつエラーを引き起こすことなくどのように達成されうるかの第2の例を示す図である。
図1は、処理回路4、データ記憶装置(メモリ)6、およびレジスタ8を備えるデータ処理装置2を概略的に示す。データ記憶装置は、少なくとも1つのキャッシュならびに主メモリを含むことができる。処理回路4は、メモリ6から命令をフェッチするためのフェッチステージ10、フェッチされた命令を復号するためのデコードステージ12、および復号命令を実行するための実行ステージ14を含む処理パイプラインを備える。パイプラインは、他のタイプのステージ、たとえばレジスタリネーミングステージまたは発行ステージを含むことができることが認識されるであろう。
レジスタ8は、処理回路4のためにデータを記憶するための、いくつかの汎用レジスタR〜R12を含む。図1は、13個の汎用レジスタR〜R12を含むが、他の数のレジスタが設けられることができ、また任意選択で、浮動小数点値を記憶するための浮動小数点レジスタもまた設けられうることが認識されるであろう。レジスタ8はまた、プログラムカウンタ(PC)レジスタ20、リンクレジスタ(LR)22、およびスタックポイントレジスタ24、26を含むいくつかの専用レジスタを含む。プログラムカウンタレジスタ20は、処理回路4によって実行される次のプログラム命令の命令アドレスを指示するプログラムカウンタを記憶する。一般に、命令の実行の後に、プログラムカウンタは、メモリから次の命令を指示するために更新されることになる。しかし、制御フロー変更命令に応答して、プログラムカウンタは、前の値から順次に追従しない値に設定されうる。リンクレジスタ22は、関数または例外の終了の後にどのプログラム命令が処理されるべきかを決定するために、関数または例外から戻るときに使用される戻り値を記憶するように設定されることができる。スタックポイントレジスタ24、26は、メモリ6内のスタック30、32のロケーションを指示するスタックポインタを記憶する。たとえば、スタックポインタは、スタック30、32上に配置された最後のアイテムのロケーションを指示しうる。
メモリ6は、セキュア領域40および低セキュア領域50を含む。図2に示すように、アドレスメモリ6のメモリアドレス空間は、セキュア領域と低セキュア領域に分割されることができ、ある範囲のメモリアドレスはメモリのセキュア領域40に対応し、他の範囲のメモリアドレスは低セキュア領域50に対応する。メモリ保護ユニット(MPU)65は、異なる領域へのアドレス空間のパーティショニングを制御しうる。図2は、1つのセキュア領域および1つの低セキュア領域を示すが、メモリアドレス空間が、2つ以上のディスクリートセキュア領域および2つ以上のディスクリート低セキュア領域を含むことも可能である。メモリアドレス空間はまた、アドレス値が任意の有効命令アドレスに対応しない予約済みアドレス範囲70(たとえば、0xF0000000以上)を含む。これらのアドレスは、例外戻りおよび関数戻りを扱うときなどに特別の目的のために使用されうる。セキュア領域40および低セキュア領域50はそれぞれ、プログラムコード60および対応するスタック30、32を含むことができる。別個のセキュアおよび低セキュアポインタレジスタ24、26は、セキュア領域40内のセキュアスタック30および低セキュア領域50内の低セキュアスタック32用のスタックポインタを維持するために使用される。
処理回路4は、セキュアドメインおよび低セキュアドメインで動作しうる。処理回路4は、セキュアドメイン内にあるとき、メモリ6のセキュア領域40内のデータおよびコードにアクセスでき、また同様に、低セキュア領域50内のデータおよびコードにアクセスできる。しかし、処理回路4が低セキュアドメイン内にあるとき、低セキュア領域50だけがアクセスされることができ、セキュア領域40はアクセス不能である。これは、低セキュアドメイン内の信頼されないコードがセキュアデータにアクセスすることを防止する。図1および図2は、1つのセキュアドメイン、1つの低セキュアドメイン、ならびに対応するセキュア領域40および低セキュア領域50が存在する例を示すが、3つ以上のドメインおよび領域を設けることも可能である。たとえば、それぞれがセキュリティレベルを有するいくつかのセキュアドメインまたはいくつかの低セキュアドメインが存在する場合がある。いくつかの実施形態では、各ドメインは、異なるセキュリティレベルを有することができる。他の実施形態では、同じセキュリティレベルを有する複数のドメインが存在しうる。
一般に、図1のシステムは、処理回路4が、メモリ6のセキュア領域40からのコードを実行しているときセキュアドメイン内にあり、処理回路4が、メモリ6の低セキュア領域50からのコードを実行しているとき低セキュアドメイン内にあるように動作する。しかし、図3Aおよび図3Bは、使用されるのがドメイン決定技法だけである場合に生じうるセキュリティ問題の例を示す。
図3Aでは、プログラムコード60は、低セキュアドメイン内の関数bob()ならびにセキュアドメイン内の2つの関数joe()およびfred()を含む。関数joe()は、bob()によって呼出され、bob()によって提供されるパスワードが有効であるかどうかをチェックする。パスワードが有効である場合、joe()は、セキュア処理を実施するために関数fred()を呼出す。明らかに、関数fred()は、関数joe()におけるパスワードチェックがパスする場合、実行されうるだけであることが望ましい。図3Aは、コードが正しく働く場合を示す。関数bob()は、関数joe()を呼出す分岐命令100を含む。図3Aに示すように、分岐命令100は、戻りアドレス(PC+4)をリンクレジスタ22に配置させ、関数joe()のアドレスをプログラムカウンタレジスタ20に配置させる。戻りアドレスは、関数joe()が終了すると処理が切換わるべきである命令のアドレスを表す。プログラムカウンタレジスタ20の更新は、処理を、関数joe()の開始アドレスにジャンプさせる。関数joe()用のコードがセキュア領域40に記憶されるため、joe()はセキュアドメインで処理されることになる。
分岐命令または他の制御フロー変更命令に応答して低セキュアドメインからセキュアドメインに変わるとき、ガード命令102が、分岐命令100のターゲットアドレスに存在しなければならず、そうでなければ、ガードチェックエラーが引き起こされることになる(このメカニズムは、メモリのセキュア領域内の関数の中央に分岐する、低セキュアドメイン内の分岐を防ぐ)。この場合、ガード命令102が存在するため、処理は、セキュアドメイン内で継続しうる。関数joe()は、その後、bob()によって提供されるパスワードが記憶されたパスワードに一致するかどうかをチェックし、そうである場合、関数fred()を呼出す。fred()が終了すると、別の分岐命令104が、そのアドレスがリンクレジスタ22に記憶されるプログラム命令への分岐をもたらすことによって、処理を低セキュアドメインに戻す。
図3Bは、ハッカーが、正しいパスワードなしでセキュア関数fred()にアクセスしうるセキュリティリークの例を示す。図3Aに示すように、joe()を呼出すと、bob()は、関数戻りアドレスPC+4をリンクレジスタ22に書込むと考えられる。しかし、代わりにハッカーは、MOV命令106がリンクレジスタ22に関数fred()のアドレスを配置するようにbob()を書くことができる。したがって、正しいパスワードが供給されないためにjoe()内のパスワードチェックが失敗しても、joe()内の関数戻り分岐104は、リンクレジスタ22に記憶されたアドレス、すなわち関数fred()のアドレスに分岐することになる。したがって、正しいパスワードなしで、低セキュアドメインは、セキュアドメインに、関数fred()を実施させることができた。
さらに、処理を関数fred()に切換えさせた分岐命令104が、セキュアドメインで実行されたため、システムは、ガード命令がfred()内に存在することを必要としないことになる。したがって、ハッカーは、信頼されない低セキュアコードを使用してセキュアデータまたはセキュアコードに対する権限のないアクセスをもたらしうる、メモリ6内の任意のセキュアロケーションへの分岐を引き起こしうる。
このタイプの攻撃を防止するために、分岐命令などの制御フロー変更命令の後に、プロセッサがどのドメインで動作すると予想されるかを決定するための第2の技法を提供するターゲットドメイン値が提供される。制御フロー変更命令のターゲットアドレスに基づく第1の決定技法と共に、選択領域を決定する2つの異なる方法が存在する。少なくともセキュアドメインで実行される制御フロー変更命令の場合、1つの技法は、分岐後に、プロセッサがどのドメインで実際に動作すべきかを選択するために使用され、他の技法は、選択ドメインが許容ドメインであることをチェックするために使用されうる。ドメイン選択における選択ドメインが許容ドメインに一致しない場合、エラーが引き起こされ、したがって、図3Bに示すタイプの攻撃が阻止されうる。
図4Aは、ターゲットドメイン値を維持する第1の例を示す。分岐命令などの制御フロー変更命令150は、ターゲットドメイン値を表すためのビットフィールドTを含みうる。ターゲットドメイン値Tが1つの値(たとえば、T=1)を有する場合、この命令が、セキュアドメインに分岐すると予想されることを指示し、別の値(たとえば、T=0)を有する場合、命令は、低セキュアドメインに分岐すると予想される。図4Bは、ターゲットドメイン値Tがターゲットアドレスのビットによって表されうる別の例を示す。これは、分岐命令または他の制御フロー変更命令155がターゲットアドレスを記憶するレジスタを指定するときに有用でありうる。図4Aおよび図4Bの例では、ターゲットドメイン値は、冗長ビットフィールドによって表され、冗長ビットフィールドは、ターゲットアドレスの命令が、第1の命令セットからであるか、第2の命令セットからであるかを表すために前もって使用された。処理回路4は、第1の命令セットをサポートするだけであるため、このビットフィールドは冗長になっており、したがって、ターゲットドメイン値のために再使用される。図4Aに示すターゲットドメイン値に対するターゲット命令設定フィールドの値のマッピングは、レガシーコードに関する後方互換性を改善する。
図5は、制御フロー変更命令を処理する例を示す。ステップ200にて、処理回路4は、次の命令が制御フロー変更命令であるかどうかを判定する。制御フロー変更命令は、新しい値をプログラムカウンタレジスタ20にロードする分岐命令または別の命令などの、プログラムカウンタレジスタ20に対する非順次変更をもたらす任意の命令とすることができる。命令が制御フロー変更命令でない場合、ステップ202にて、処理回路4は、他の種類の命令を処理する。処理は、その後、次の命令に移動する。
目下の命令が制御フロー変更命令である場合、前記方法は、ステップ204に移動し、そこで、処理回路4は、どのドメインが、ターゲットアドレスのプログラム命令についてプロセッサ4が動作すべきである選択ドメインであるかを決定する。これが実施されるタイミングは、変動する場合がある。たとえば、それは、制御フロー変更命令の実行に応答して、または、制御フローの変更の後にターゲットアドレスのプログラム命令の実行に応答して、実施されることができる。図6および図7で論じるように、ドメイン選択は、第1の決定技法または第2の決定技法を使用して実施されうる。
ステップ206にて、処理回路は、制御フロー変更命令がセキュアドメインで実行されたかどうかを判定する。そうである場合、ステップ208にて、処理回路は、ドメインのうちのどのドメインが、ターゲットアドレスのプログラム命令についてドメイン選択が選択することを許容される許容選択ドメインであるかを決定するためにドメインチェッキングを実施する。ステップ210にて、処理回路は、ステップ204にて選択されたドメインが、ステップ208にて選択された許容選択ドメインであるかどうかを判定する。許容選択ドメインでない場合、ステップ212にて、ドメインチェックエラーが引き起こされる。一方、選択ドメインが許容選択ドメインに一致する場合、ステップ214にて、ターゲットアドレスの命令が、選択ドメインで処理される。前記方法は、その後、次の命令のためにステップ200に戻る。
その間に、ステップ206にて、制御フロー変更命令を実行するときにシステムがセキュア状態になかったと判定された場合、ステップ220にて、ターゲット命令がセキュア領域からであるかどうかが判定される。セキュア領域からでない場合、前記方法は、ステップ214に進み、そこで、ターゲットアドレスの命令が、低セキュアドメインで処理される。この場合、制御フロー変更命令およびターゲットアドレスのターゲット命令は共に、低セキュア領域内にあるため、処理されているセキュアコードが存在しないことから、変更が許容可能である。
しかし、ステップ220にて、ターゲットアドレスの命令がセキュア領域からであると判定される場合、ステップ222にて、その命令がガード命令であるかどうかが判定される。ガード命令でない場合、ステップ224にて、ガードチェックエラーが引き起こされ、前記方法が終了する。したがって、非セキュアドメインからセキュアドメインへ変わるとき、切換え後の第1の命令は、ガード命令でなければならない。これは、セキュリティリークをもたらしうる、非セキュアコードがセキュアコード内の任意のポイントに分岐できることを防止する。一方、ステップ222にて、命令がガード命令である場合、前記方法は、引き続きステップ214に行き、そこで、命令が処理され、その後、前記方法は、次の命令のためにステップ200に戻る。
図5は、制御フロー変更が低セキュアドメインで実行される場合、ドメインチェッキングが実施されない例を示す。しかし、所望される場合、ドメインチェッキングはまた、低セキュアドメインで実施されうる。
図5は、選択ドメインを決定するための2つの技法を示す。ステップ204にて実施されるドメイン選択は、命令が処理される実際のドメインを決定する。ドメインチェッキングは、このドメインが許容ドメインであることをチェックするためにステップ208にて実施される。図6および図7は、使用されうる2つの決定技法を示す。
図6は、第1のドメイン決定技法を示す。ステップ230にて、処理回路4は、メモリ6のどの領域が、処理される次の命令のアドレスを含むかを決定する。たとえば、処理回路4は、どのメモリ領域がアドレスに対応するかについての指示を戻しうるメモリ保護ユニット65にアドレスを送ることができる。命令アドレスが低セキュア領域50内にある場合、ステップ232にて、低セキュアドメインが選択ドメインとして選択され、一方、命令アドレスがセキュア領域40内にある場合、ステップ234にて、セキュアドメインが選択ドメインとして選択される。この技法は、一般に、ほとんどの命令について実施されることになるが、いくつかの例外が存在する場合がある。選択ドメインを決定するために、異なる技法または他のパラメータが使用されることができるいくつかの命令が存在しうる。たとえば、後で述べるように、ガード命令102は、異なる技法を必要とする場合がある。
図7は、図4Aまたは図4Bに示すターゲットドメイン値に基づく第2の決定技法を示す。ステップ250にて、ターゲットドメイン値Tの値が決定される。ターゲットドメイン値が0の値を有する場合、ステップ252にて、低セキュアドメインが選択ドメインとして選択され、一方、ターゲットドメイン値が1の値を有する場合、ステップ254にて、セキュアドメインが選択ドメインとして選択される。ターゲットドメイン値Tの値に対するドメインの異なるマッピングが使用されうるが、図4Aおよび図7に示すマッピングは、レガシーコードに関する後方互換性のために有用であることが認識されるであろう。
図6および図7に示す第1の決定法および第2の決定法は、ドメイン選択またはドメインチェッキングのいずれかのために使用されうる。一例では、図6に示す第1の決定法は、プロセッサが動作する実際のドメインを選択するためのドメイン選択のために使用され、ターゲットドメイン値に基づく図7に示す第2の決定法は、何が許容選択ドメインであるかを見出すためのチェックとして使用されうる。他方、ターゲットドメイン値(第2の決定法)は、実際のドメイン選択を引き起こすために使用され、一方、次の命令のアドレス(第1の決定法)は、ターゲットアドレスが、ターゲットドメイン値で指示されるドメインに一致したかどうかを調べるためのチェックとして使用されうる。いずれにしても、セキュアドメイン内のコードは、制御フロー変更命令が分岐すると予想されるドメインを指示するようにターゲットドメイン値を設定するために使用されうる。
図8および図9は、セキュアコードに対する権限のないアクセスが、ドメインチェッキングを使用して防止されうる例を示す。図8は、図3Bの場合と同じ状況を示す。やはり、ハッカーは、セキュアドメイン104内の関数戻り分岐命令104を、セキュア関数fred()に切換わらせようとして、リンクレジスタ22に関数fred()のアドレスを配置するために関数bob()に書込んだ。しかし、ガード命令102に応答して、処理回路4は、リンクレジスタ22内のアドレス用のターゲットドメイン値Tを、関数戻り分岐104が、メモリの低セキュア領域内の命令に分岐すべきであることを指示する値0に設定する。関数戻り分岐命令104が実行されると、処理は、実際には、セキュア領域内の関数fred()に切換わる。したがって、選択ドメインがセキュアドメインであるべきであると、関数fred()の第1の命令のアドレスに基づいて判定することになる第1の決定法と、選択ドメインが低セキュアドメインであるべきであると、ターゲットドメイン値に基づいて判定することになる第2の決定法との間に不一致が存在することになる。第1の決定法と第2の決定法のいずれがドメイン選択を表すか、また、いずれがドメインチェッキングを表すかによらず、この不一致は、エラーを引き起こさせることになり、そのエラーは、セキュア関数fred()のさらなる処理を阻止することになる。したがって、これは、低セキュアコードを使用するハッカーが、別のセキュアロケーションへのセキュアコードからの分岐を引き起こすことを防止する。
図9は、ドメインチェッキングを実施することが有用でありうる別の例を示す。この例では、セキュリティリスクは、レジスタR0に関数ポインタを記憶する、低セキュアドメイン内の関数john()から生じ、セキュアドメイン内の関数bill()は、その後、その関数ポインタを使用して、関数を呼出す。bill()から関数を呼出す分岐命令300は、レジスタR0で指示されるアドレスに分岐する。関数ポインタがセキュアロケーションに設定された場合、低セキュアコードは、それがガード命令によってマーク付けされた有効セキュアエントリポイントでなくても、任意のセキュアロケーションに切換わるようにセキュアコードを引き起こしうる。よって、これがセキュリティ分岐へとつながりうる。
しかし、関数ポインタが低セキュアドメイン内のアドレスを指すべきであることを指示するために、ターゲットドメイン値Tを0に設定する予めのターゲットドメイン設定命令302を含むことによって、セキュア関数bill()を書くプログラマは、この種の攻撃を防ぎうる。分岐命令300に応答して関数ポインタロケーションに分岐すると、ハッカーが関数ポインタをセキュア値に設定した場合、ドメインチェッキングは、命令がセキュア領域内にあるために決定されたセキュアドメインと、ターゲットドメイン値によって指示される低セキュアドメインとの間の不一致を判定することになる。したがって、エラーが引き起こされ、セキュリティ違反が阻止されうる。
図8および図9はエラーが引き起こされる事例を示すが、他の実施形態では、このエラーは、関数ポインタロケーションに、これが制御フローの権限のある変更であること、を指示するガード命令が存在する場合、回避されうる(以下の図14および図15を参照)。
図8および図9に示すように、分岐命令に先行するターゲットドメイン値設定命令は、ターゲットドメイン値を所望の値に設定するために使用される。ターゲットドメイン値設定命令は、図8に示すガード命令または図9に示す別の種類のターゲットドメイン値設定命令でありうる。一般に、セキュアコードのプログラマは、制御フロー変更命令が正しく作用することを保証するために、セキュアドメイン内の制御フロー変更命令の前に、プログラムコード内にターゲットドメイン値設定命令を含むべきである。
ターゲットドメイン値Tは、他の目的ならびにドメインチェッキングおよびドメイン選択のために有用である場合がある。一例は、図10および図11に示される。この例は、関数呼出しおよび関数戻りに関連する。上述した関数bob()、joe()などは、通常、リンクレジスタ22に関数戻りアドレスを配置し、呼出される関数の第1の命令に対応するアドレスに分岐させる第1の制御フロー変更命令、次に、関数戻りアドレスに処理を戻す第2の制御フロー変更命令を使用して呼出されることになる。しかし、関数が、セキュアドメインから呼出され、低セキュアドメインで実行される場合、戻りアドレスは、低セキュアコードから隠蔽される必要がある場合がある。したがって、ダミー戻りアドレスが、リンクレジスタに記憶されうる。たとえば、ダミー戻りアドレスは、図2に示す予約済み範囲70のアドレスのうちの1つのアドレスでありうる。実際の戻りアドレスは、関数呼出しから戻ると、セキュアドメイン内でアクセスするためのセキュアスタック30に保存されうる。
ダミーアドレスまたは実際の戻りアドレスがリンクレジスタ22に保存されるべきかどうかを判定することを容易にするために、ターゲットドメイン値Tが使用されうる。これは、図10および図11に示される。図10は、関数呼出しを引き起こす第1の制御フロー変更命令を実行するときの処理を示す。ステップ350にて、次の命令が、リンクレジスタに戻りアドレスを配置することになるタイプの分岐命令BLまたはBLXであるか否かが判定される。分岐命令BLまたはBLXである場合、ステップ360にて、処理が、目下セキュアドメイン内にあり、分岐が低セキュアドメインに切換わると予想されることを分岐用のターゲットドメイン値Tが指示するかどうかが判定される。これが事実でない場合、ステップ365にて、実際の戻りアドレスがリンクレジスタ22に記憶される。しかし、ステップ360にて、処理がセキュアドメイン内にあり、処理が低セキュアドメインに切換わる(T=0)と予想されることを分岐用のターゲットドメイン値Tが指示する場合、ステップ370にて、ダミー戻りアドレスがリンクレジスタ22に記憶される。ステップ380にて、実際の戻りアドレスがセキュアスタックに保存される。どのアドレスがリンクレジスタに保存されるかによらず、前記方法は、その後、ステップ390に進み、そこで、処理はターゲットアドレスに分岐し、関数が、次に処理される。ターゲットアドレスの命令用のドメイン選択およびドメインチェッキングは、その後、図5に示すように進むことになる。図10のステップ360にて、ターゲットドメイン値は、この決定がターゲットアドレスに基づいた場合、ダミー戻りアドレスまたは実際の戻りアドレスがリンクレジスタに記憶されるべきかどうかについての迅速な判定を可能にする。
最終的に、別の制御フロー変更命令に遭遇することになる(図11のステップ400)。ステップ410にて、ターゲットアドレスがダミーアドレスであるかどうかがチェックされる。ダミーアドレスでない場合、処理は、ステップ420にて、制御フロー変更命令のターゲットアドレスに分岐する。その理由は、これが、関数戻りでない通常の制御フロー変更命令か、または、ターゲットアドレスが、リンクレジスタに記憶された実際の戻りアドレスである関数戻りであるからである。一方、ステップ410にて、ターゲットアドレスがダミーアドレスであると判定される場合、ステップ430にて、処理は、セキュアドメインに切換わる。ステップ440にて、実際の戻りアドレスが、メモリのセキュア領域40内のセキュアスタックからフェッチされる。その後、ステップ450にて、処理は、実際の戻りアドレスに分岐し、その後、ドメイン選択およびドメインチェッキングが、通常通り継続する。
図12は、ターゲットドメイン値が有用でありうる別の例を示す。関数を呼出すとき、呼出し側関数が、スタックを介して呼出し先関数に関数引数を渡すことが、時として必要である。関数呼出しがセキュアドメインから行われる場合、関数引数が、セキュアスタック30に記憶されるべきか、低セキュアスタック32に記憶されるべきかは、呼出し先関数が、セキュアドメインで実行されるか、低セキュアドメインで実行されるかに依存することになる。図12に示すように、関数引数を渡すために、どのスタックを使用すべきかについての決定は、ターゲットドメイン値Tを使用して行われうる。ターゲットドメイン値Tを使用することは、呼出し先関数のロケーションを表すターゲットアドレスにどの領域が対応するかを、メモリ保護ユニット65によってチェックするのに比べてより迅速なターゲットドメインの決定を可能にする。図12の決定は、処理回路によってハードウェアで、または、処理回路によって実行されるコードによってソフトウェアで実施されることができる。
これまでに示した例は、単一ドメインが特定の制御フロー変更命令について許容ドメインである文脈でドメインチェッキングを説明した。しかし、場合によっては、いくつかのドメインを許容ドメインにすることが望ましい場合がある。図13は、これの例を示す。図13は、図9に示す状況に対応するが、この場合、関数reg()は、低セキュア関数mary()によってレジスタR0に配置された値に応じて、あるときは、低セキュア領域に戻るべきであり、また、他のときには、セキュア領域内の信頼される関数alice()に切換わるべきである分岐命令300を含む。上述した技法によって、予想ターゲットドメインとして低セキュアドメインを指示するために、ターゲットドメイン値設定命令302が、レジスタR0内の関数ポインタのターゲットドメイン値を設定する場合、mary()がレジスタR0をセキュアロケーションに設定するときに、エラーが引き起こされることになる。この場合、分岐命令300を実行すると、ターゲットドメイン値は、選択ドメインとして低セキュアドメインを指示することになり、一方、関数alice()に分岐すると、MPU65は、選択ドメインとしてセキュアドメインを決定することになる。この特定の分岐が適法である場合、この場合、エラーを引き起こすことを回避することが望ましいが、このタイプの権限のない切換えを依然として防ぐことが望ましい。
図14および図15は、これが対処されうる方法を示す。いくつかのプログラム命令の場合、システムは、分岐命令300の後の挙動によらず、ドメイン切換えが許容されるように、複数のドメインを許容ドメインとして決定しうる。しかし、権限のない切換えを防ぐために、システムは、分岐命令300の後の第1の命令がガード命令であることを必要としうる。
図14の例では、ドメイン選択は、ターゲットドメイン値に基づき、ドメインチェッキングは、アドレス用のMPU65によって決定される領域に基づく。ガード命令の場合、MPU65は、セキュアドメインと低セキュアドメインの両方を許容ドメインとして決定する。したがって、分岐300の後で、処理は、ターゲットドメイン値Tが0に設定されたので、低セキュアドメインに切換わることになる。しかし、alice()内のガード命令306の場合、第1の決定法に基づくドメインチェッキングは、セキュアドメインと低セキュアドメインの両方を許容ドメインとして選択する。したがって、実際のドメインは、低セキュアドメインであり、これは、許容ドメインのうちの1つの許容ドメインに一致するため、エラーは存在しない。同様に、セキュアコードによって制御されるalice()への分岐の場合、ターゲットドメイン値は、1に設定されることになるため、分岐の後で、システムは、セキュアドメイン内で実行する。したがって、alice()は、セキュアコードと低セキュアコードの両方からアクセスされ、分岐300は、セキュアコードと低セキュアコードの両方に正しく切換りうる。分岐300が、ガード命令でないセキュア領域内のプログラム命令への切換えをもたらした場合、エラーが引き起こされることになる。したがって、任意のセキュアロケーションへの権限のない切換えが、依然として回避されうる。
図15に示す別の例では、ドメインチェッキングは、ターゲットドメイン値に基づき、ドメイン選択は、命令アドレスが対応するメモリ領域に基づく。この場合、分岐命令300に応答して、低セキュアドメインとセキュアドメインの両方が、(ターゲットドメイン値によらず)ターゲットアドレスの命令について許容選択ドメインとして選択される。alice()内のガード命令306に分岐すると、MPU65は、ドメインチェッキングによって、許容ドメインのうちの1つの許容ドメインに一致することになるセキュアドメインを選択ドメインとして決定することになる。ターゲットロケーションにガード命令306が存在する場合、エラーは引き起こされないことになる。
したがって、ドメイン選択およびドメインチェッキングのいずれが、ターゲットビットを使用するかによらず、システムは、低セキュアドメインによって設定されるアドレスの制御下でセキュアドメインからセキュアロケーションへのいくつかの適法な切換えを可能にしうる。ガード命令は、こうした切換えを確認するために必要とされる。通常、既にセキュアドメイン内にあるとき、ガードチェックは必要とされないことになるため、ガードチェックが実施されることを保証するために、システムは、ターゲットドメイン値が0の値を有するメモリのセキュア領域内の分岐命令300を実行する前に、低セキュアドメインに切換わりうる。分岐は、セキュアドメインに切換わる場合、低セキュアドメインから生じたように見えるため、エラーを回避するために、ガード命令が、ターゲットアドレスに必要とされることになる。
本出願の主題は、同一譲受人に譲渡され、同時係属中の米国出願第13/368,419号および英国特許出願第1217531.1号に関連し、これらの文書の両方の全体の内容が参照により組込まれる。
本発明の例証的な実施形態が、添付図面を参照して本明細書で詳細に述べられたが、本発明が、これらの厳密な実施形態に限定されないこと、および、添付特許請求の範囲によって規定される本発明の範囲および趣旨から逸脱することなく、当業者によって種々の変更および修正が実施形態において行われうることが理解される。
2 データ処理装置
4 処理回路
6 データ記憶装置(メモリ)
8 レジスタ
10 フェッチステージ
12 デコードステージ
14 実行ステージ
20 プログラムカウンタレジスタ
22 リンクレジスタ
24、26 スタックポイントレジスタ
30、32 スタック
40 セキュア領域
50 低セキュア領域
60 プログラムコード
65 メモリ保護ユニット(MPU)

Claims (26)

  1. データ処理装置であって、
    プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備え、前記処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理回路は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
    制御フロー変更命令の実行に応答して、前記処理回路は、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、前記ターゲットアドレスの前記プログラム命令について前記処理回路が動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
    少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、前記処理回路は、
    (i)前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用し、
    (ii)前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成され、
    前記セキュアドメインが前記選択ドメインであることを前記ドメイン選択が決定する前記セキュアドメインで動作している間の制御フロー変更命令の実行に応答して、前記セキュアドメインが前記ドメインチェッキングで決定された許容選択ドメインでないとき、前記処理回路は、ドメインチェックエラーを引き起こすように構成されるデータ処理装置。
  2. 前記制御フロー変更命令は分岐命令を含む請求項1に記載のデータ処理装置。
  3. 前記制御フロー変更命令が、前記低セキュアドメインで動作している間に実行される場合、前記処理回路は、同様に、前記ドメインチェッキングを実施し、前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容ドメインに一致しない場合、前記ドメインチェックエラーを引き起こすように構成される請求項1または請求項2に記載のデータ処理装置。
  4. 前記ドメイン選択および前記ドメインチェッキングの一方は、第1の決定法を含み、前記ドメイン選択および前記ドメインチェッキングの他方は、第2の決定法を含み、
    データを記憶するためのデータ記憶装置であって、セキュア領域および低セキュア領域を含む複数の領域を備える、データ記憶装置を備え、前記セキュア領域は、前記セキュアドメインで動作するときに前記処理回路によってアクセス可能であり、前記低セキュアドメインで動作するときに前記処理回路によってアクセス可能でないデータを記憶するためのものであり、
    前記第1の決定法は、前記複数の領域の少なくともどの領域が、前記ターゲットアドレスのプログラム命令の命令アドレスに対応するかに応じて、少なくとも1つの選択ドメインを決定することを含み、
    前記第2の決定法は、前記選択ドメインとして、ターゲットドメイン値によって指示される前記複数のドメインのうちの1つのドメインを決定することを含む請求項1から3のいずれか1項に記載のデータ処理装置。
  5. 少なくともいくつかのプログラム命令について、前記第1の決定法は、前記命令アドレスが前記低セキュア領域に対応する場合、前記選択ドメインとして前記低セキュアドメインを選択すること、および、前記命令アドレスが前記セキュア領域に対応する場合、前記選択ドメインとして前記セキュアドメインを選択することを含む請求項4に記載のデータ処理装置。
  6. 前記ターゲットドメイン値は、制御フロー変更命令のエンコーディングにおいて指定される請求項4に記載のデータ処理装置。
  7. 前記ターゲットドメイン値は、制御フロー変更命令によって使用される前記ターゲットアドレスの一部として指定される請求項4に記載のデータ処理装置。
  8. 前記処理回路は、ターゲットドメイン値設定命令に応答して前記ターゲットドメイン値を設定するように構成される請求項4または7のいずれか1項に記載のデータ処理装置。
  9. 前記ターゲットドメイン値設定命令が実施される前に、前記処理回路が前記低セキュアドメインで動作していた場合、前記処理回路は、前記低セキュアドメインを指示するように前記ターゲットドメイン値を設定するように構成される請求項8に記載のデータ処理装置。
  10. 前記処理回路は、セキュア領域内の前記ターゲットアドレスの前記プログラム命令を処理することに切換える前に、前記処理回路が前記低セキュアドメインでそれについて動作していたガード保護式制御フロー変更命令の後で、前記ターゲットアドレスの前記プログラム命令がガード命令でない場合、エラーを引き起こすように構成され、
    前記ターゲットドメイン値設定命令は前記ガード命令を含む請求項8および9のいずれか1項に記載のデータ処理装置。
  11. 第1の制御フロー変更命令に応答して、前記処理回路は、所定の記憶ロケーションに戻りアドレスを記憶し、前記ターゲットアドレスの前記プログラム命令を処理することに切換えるように構成され、
    第2の制御フロー変更命令に応答して、前記処理回路は、前記戻りアドレスの前記プログラム命令を処理することに切換えるように構成され、
    前記ガード命令に応答して、前記処理回路は、前記第1の制御フロー変更命令が前記低セキュアドメインで実施された場合、前記低セキュアドメインを指示するように、前記第2の制御フロー変更命令用の前記ターゲットドメイン値を設定するように構成される請求項10に記載のデータ処理装置。
  12. セキュアスタックおよび低セキュアスタックを含む複数のスタックを備えるデータ記憶装置を備え、前記セキュアスタックは、セキュアドメインで動作するときに前記処理回路によってアクセス可能であり、低セキュアドメインで動作するときに前記処理回路によってアクセス可能でない請求項4から11のいずれか1項に記載のデータ処理装置。
  13. 前記処理回路および前記処理回路上で実行されるソフトウェアの少なくとも一方は、前記ターゲットドメイン値に応じて、前記複数のスタックのどのスタックが、関数の引数を渡すために使用されうるかを決定するように構成される請求項12に記載のデータ処理装置。
  14. 第1の制御フロー変更命令に応答して、前記処理回路は、所定の記憶ロケーションに戻りアドレスを記憶し、前記制御フローを前記ターゲットアドレスの前記プログラム命令に切換えるように構成され、
    第2の制御フロー変更命令に応答して、前記処理回路は、前記戻りアドレスの前記プログラム命令を処理することに切換えるように構成される請求項4から13のいずれか1項に記載のデータ処理装置。
  15. 前記第1の制御フロー変更命令が、前記セキュアドメインで実行され、前記低セキュアドメインへの移行をもたらす場合、前記処理回路は、ダミー戻りアドレスであって、有効命令アドレスでない、ダミー戻りアドレスを、前記戻りアドレスとして前記所定の記憶ロケーションに記憶し、実際の戻りアドレスを、前記低セキュアドメイン内にある間、アクセス可能でないセキュア記憶ロケーションに記憶するように構成され、
    前記第2の制御フロー変更命令に応答して、前記戻りアドレスが前記ダミー戻りアドレスであった場合、前記処理回路は、前記セキュア記憶ロケーションから前記実際の戻りアドレスを取出し、前記実際の戻りアドレスの前記プログラム命令を処理することに切換えるように構成される請求項14に記載のデータ処理装置。
  16. 前記処理回路は、前記ダミー戻りアドレスおよび前記実際の戻りアドレスのいずれを前記第1の制御フロー変更命令に応答して前記所定の記憶ロケーションに記憶すべきかを、少なくとも前記ターゲットドメイン値に応じて決定するように構成される請求項15に記載のデータ処理装置。
  17. 前記ターゲットドメイン値は、前記制御フロー変更命令のエンコーディングおよび前記制御フロー変更命令によって使用される前記ターゲットアドレスのエンコーディングの一方において冗長データフィールドによって表される請求項4から16のいずれか1項に記載のデータ処理装置。
  18. 前記処理回路は、第1の命令セットからの命令を実行するように構成され、
    前記制御フロー変更命令のエンコーディングおよび前記制御フロー変更命令によって使用される前記ターゲットアドレスのエンコーディングの一方は、前記ターゲットアドレスの前記プログラム命令が前記第1の命令セットからのものか、第2の命令セットであって、前記処理回路によってサポートされない、第2の命令セットからのものかを指示するターゲット命令セットフィールドを含み、
    前記ターゲットドメイン値は、前記ターゲット命令セットフィールドを使用して指示される請求項4から17のいずれか1項に記載のデータ処理装置。
  19. 前記ターゲット命令セットフィールドの第1の値は、前記第1の命令セットを指示し、また、前記セキュアドメインが前記選択ドメインであることを指示する前記ターゲットドメイン値に対応し、
    前記ターゲット命令セットフィールドの第2の値は、前記第2の命令セットを指示し、また、前記低セキュアドメインが前記選択ドメインであることを指示する前記ターゲットドメイン値に対応する請求項18に記載のデータ処理装置。
  20. 前記ドメインチェッキングは、前記第2の決定法を含み、前記低セキュアドメイン内にある間に前記制御フロー変更命令が実施される場合、前記ターゲットアドレスの前記プログラム命令を処理することへの前記切換えの後で、前記ドメインチェックエラーが生成されるか否かは、前記ターゲットドメイン値の値に無関係である請求項19に記載のデータ処理装置。
  21. 少なくとも1つのプログラム命令について、前記ドメインチェッキングは、前記プログラム命令用の許容選択ドメインとして複数の前記ドメインを決定することを含む請求項1から20のいずれか1項に記載のデータ処理装置。
  22. 前記少なくとも1つのプログラム命令はガード命令を含む請求項21に記載のデータ処理装置。
  23. 前記セキュアドメインで実施される少なくとも1つの制御フロー変更命令について、前記処理回路は、前記ターゲットアドレスの前記プログラム命令を処理することに切換える前に、前記セキュアドメインで動作することから前記低セキュアドメインで動作することへ切換えるように構成される請求項1から22のいずれか1項に記載のデータ処理装置。
  24. 前記処理回路は、前記ターゲットアドレスの前記プログラム命令がガード命令でない場合、エラーを引き起こすように構成される請求項21から23のいずれか1項に記載のデータ処理装置。
  25. データ処理装置であって、
    プログラム命令に応答して、データ処理オペレーションを実施するための処理手段を備え、前記処理手段は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理手段は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
    制御フロー変更命令の実行に応答して、前記処理手段は、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、前記処理手段が、前記ターゲットアドレスの前記プログラム命令について動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
    少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、前記処理手段は、
    (i)前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用し、
    (ii)前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成され、
    前記セキュアドメインが前記選択ドメインであることを前記ドメイン選択が決定する前記セキュアドメインで動作している間の制御フロー変更命令の実行に応答して、前記セキュアドメインが前記ドメインチェッキングで決定された許容選択ドメインでないとき、前記処理手段は、ドメインチェックエラーを引き起こすように構成されるデータ処理装置。
  26. プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備える装置用のデータ処理方法において、前記処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理回路は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスできる、方法であって、
    制御フロー変更命令の実行に応答して、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換えること、
    前記ターゲットアドレスの前記プログラム命令について前記処理回路が動作する選択ドメインを決定するためのドメイン選択を実施すること、
    少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、
    (i)前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用すること、および、
    (ii)前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすことを含み、
    前記セキュアドメインが前記選択ドメインであることを前記ドメイン選択が決定する前記セキュアドメインで動作している間の制御フロー変更命令の実行に応答して、前記セキュアドメインが前記ドメインチェッキングで決定された許容選択ドメインでないとき、ドメインチェックエラーが引き起こされる方法。
JP2013012980A 2012-02-08 2013-01-28 セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法 Active JP6189039B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US13/368,419 2012-02-08
US13/368,419 US9477834B2 (en) 2012-02-08 2012-02-08 Maintaining secure data isolated from non-secure access when switching between domains
GB1217531.1 2012-10-01
GB201217531A GB201217531D0 (en) 2012-10-01 2012-10-01 ARMv7-M Asset Protection Proposal
GB1220769.2A GB2501343A (en) 2012-02-08 2012-11-19 Data processing apparatus and method using secure domain and less secure domain
GB1220769.2 2012-11-19

Publications (2)

Publication Number Publication Date
JP2013161479A JP2013161479A (ja) 2013-08-19
JP6189039B2 true JP6189039B2 (ja) 2017-08-30

Family

ID=47521366

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014556134A Active JP6134742B2 (ja) 2012-02-08 2013-01-17 セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理
JP2013012980A Active JP6189039B2 (ja) 2012-02-08 2013-01-28 セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014556134A Active JP6134742B2 (ja) 2012-02-08 2013-01-17 セキュアドメインおよび低セキュアドメインを有するデータ処理装置の例外処理

Country Status (10)

Country Link
EP (1) EP2812836B1 (ja)
JP (2) JP6134742B2 (ja)
KR (1) KR102075367B1 (ja)
CN (2) CN104115155B (ja)
GB (2) GB2501343A (ja)
IL (1) IL233521A (ja)
IN (1) IN2014DN05705A (ja)
MY (1) MY167888A (ja)
TW (1) TWI569164B (ja)
WO (1) WO2013117899A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268970B2 (en) 2014-03-20 2016-02-23 Analog Devices, Inc. System and method for security-aware master
GB2531844B (en) * 2014-10-31 2019-06-26 Hewlett Packard Development Co Hardware-protective data processing systems and methods using an application executing in a secure domain
CN107924441A (zh) 2015-08-25 2018-04-17 株式会社Seltech 具有虚拟机管理器的系统
GB2547912B (en) * 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
GB2549774B (en) * 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
GB2552966B (en) * 2016-08-15 2019-12-11 Arm Ip Ltd Methods and apparatus for protecting domains of a device from unauthorised accesses
US11392438B2 (en) * 2017-02-09 2022-07-19 Arm Limited Responding to unresponsive processing circuitry
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
CN107436752B (zh) * 2017-07-20 2020-12-01 龙芯中科技术有限公司 异常现场恢复方法、装置及计算机可读存储介质
GB2577878B (en) * 2018-10-08 2020-11-11 Advanced Risc Mach Ltd Transition disable indicator
GB2578135B (en) * 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
JP6877475B2 (ja) * 2019-03-11 2021-05-26 日立Astemo株式会社 電子制御装置及びスタック使用方法
GB2589897B (en) 2019-12-11 2022-03-23 Advanced Risc Mach Ltd Domain transition disable configuration parameter
GB2589895B (en) 2019-12-11 2022-03-16 Advanced Risc Mach Ltd Intermodal calling branch instruction
CN114490448A (zh) * 2020-11-13 2022-05-13 华为技术有限公司 一种切换执行环境的方法及其相关设备
CN117400387B (zh) * 2023-12-13 2024-03-15 邯郸市丰泰陶瓷贸易有限公司 一种高性能陶瓷坯料制作装置及其方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
JP2990140B2 (ja) * 1998-01-09 1999-12-13 日本電気アイシーマイコンシステム株式会社 割り込み制御回路
JP3716604B2 (ja) * 1998-03-24 2005-11-16 富士電機機器制御株式会社 情報処理装置
CA2309627A1 (en) * 1998-09-25 2000-04-06 Hughes Electronics Corporation An apparatus for providing a secure processing environment
US6363474B1 (en) * 1999-06-30 2002-03-26 Bull Hn Information Systems Inc. Process switching register replication in a data processing system
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
EP1563375B1 (en) * 2002-11-18 2006-09-06 ARM Limited Processor switching between secure and non-secure modes
US7539853B2 (en) * 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
GB2411254B (en) * 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
GB2396034B (en) * 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
US7383587B2 (en) * 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
JP2004280801A (ja) * 2003-02-24 2004-10-07 Matsushita Electric Ind Co Ltd プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
WO2006052703A2 (en) * 2004-11-04 2006-05-18 Board Of Trustees Of Michigan State University Secure bit
US7401210B2 (en) * 2005-03-30 2008-07-15 Arm Limited Selecting subroutine return mechanisms
JP4519738B2 (ja) * 2005-08-26 2010-08-04 株式会社東芝 メモリアクセス制御装置
US8959339B2 (en) * 2005-12-23 2015-02-17 Texas Instruments Incorporated Method and system for preventing unauthorized processor mode switches
US8621607B2 (en) * 2006-05-18 2013-12-31 Vmware, Inc. Computational system including mechanisms for tracking taint
KR101419668B1 (ko) * 2006-09-06 2014-07-15 실리콘 하이브 비.브이. 데이터 처리회로 및 데이터 처리방법
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8051467B2 (en) * 2008-08-26 2011-11-01 Atmel Corporation Secure information processing
JP2010186386A (ja) * 2009-02-13 2010-08-26 Oki Semiconductor Co Ltd プロセッサ
GB2471138B (en) * 2009-06-19 2014-08-13 Advanced Risc Mach Ltd Handling integer and floating point registers during a context switch
JP2011070290A (ja) * 2009-09-24 2011-04-07 Renesas Electronics Corp データプロセッサ
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling

Also Published As

Publication number Publication date
IL233521A (en) 2017-11-30
CN104115155A (zh) 2014-10-22
TW201346625A (zh) 2013-11-16
CN103310163A (zh) 2013-09-18
GB2499287A (en) 2013-08-14
CN104115155B (zh) 2016-12-28
EP2812836B1 (en) 2016-01-06
JP2013161479A (ja) 2013-08-19
GB201220769D0 (en) 2013-01-02
IL233521A0 (en) 2014-08-31
TWI569164B (zh) 2017-02-01
CN103310163B (zh) 2018-01-05
KR102075367B1 (ko) 2020-02-11
JP2015506525A (ja) 2015-03-02
MY167888A (en) 2018-09-26
WO2013117899A1 (en) 2013-08-15
JP6134742B2 (ja) 2017-05-24
EP2812836A1 (en) 2014-12-17
IN2014DN05705A (ja) 2015-04-10
GB201220771D0 (en) 2013-01-02
KR20140123545A (ko) 2014-10-22
GB2501343A (en) 2013-10-23

Similar Documents

Publication Publication Date Title
JP6189039B2 (ja) セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法
KR102160916B1 (ko) 안전한 도메인과 덜 안전한 도메인을 이용한 데이터 처리 장치 및 방법
JP6209611B2 (ja) 安全なドメイン及びより安全性の低いドメインを有するデータ処理装置における例外処理
US10210349B2 (en) Data processing apparatus and method using secure domain and less secure domain
KR102383900B1 (ko) 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산
KR102075369B1 (ko) 데이터 처리장치와, 안전한 도메인 및 덜 안전한 도메인 사이에서 전환될 때 데이터 및 프로그램 코드를 안전하지 않은 액세스로부터 보호하는 방법
KR102192835B1 (ko) 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호
CA2930424A1 (en) Improved control flow integrity system and method
US11727110B2 (en) Verifying stack pointer
US20220366037A1 (en) Domain transition disable configuration parameter
US11307856B2 (en) Branch target variant of branch-with-link instruction
CN110709817B (zh) 用于控制指令集中改变的设备与方法
US11113392B2 (en) Executable binary code insertion
US20230010863A1 (en) Intermodal calling branch instruction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170425

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: 20170710

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170802

R150 Certificate of patent or registration of utility model

Ref document number: 6189039

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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