JP5841199B2 - 安全保護方法およびプロセッサ - Google Patents

安全保護方法およびプロセッサ Download PDF

Info

Publication number
JP5841199B2
JP5841199B2 JP2014139536A JP2014139536A JP5841199B2 JP 5841199 B2 JP5841199 B2 JP 5841199B2 JP 2014139536 A JP2014139536 A JP 2014139536A JP 2014139536 A JP2014139536 A JP 2014139536A JP 5841199 B2 JP5841199 B2 JP 5841199B2
Authority
JP
Japan
Prior art keywords
instruction
security
isa
security check
processor
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
JP2014139536A
Other languages
English (en)
Other versions
JP2015018552A (ja
Inventor
吉昌 ▲頼▼
吉昌 ▲頼▼
傳華 張
傳華 張
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Andes Technology Corp
Original Assignee
Andes Technology Corp
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 Andes Technology Corp filed Critical Andes Technology Corp
Publication of JP2015018552A publication Critical patent/JP2015018552A/ja
Application granted granted Critical
Publication of JP5841199B2 publication Critical patent/JP5841199B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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
    • 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/1425Protection 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 physical, e.g. cell, word, block
    • G06F12/1441Protection 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 physical, e.g. cell, word, block for a range

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、安全保護方法およびプロセッサに関するものであり、特に、安全保護方法およびコンピューティングセキュリティを実施するプロセッサに関するものである。
コンピューティングセキュリティ(computing security)の分野において、プログラムの実行およびアクセスは、通常、一組の厳しい規則によって個別の実行環境に制限される。これらの規則は、意図的でない、または権限のないアクセスから実行環境を保護するために、プロセッサによって実行された全プログラムの全命令が有効且つ安全であることを確保する。
したがって、本発明は、安全保護方法、および、プログラムビューアドレス空間でコンピューティングセキュリティを実施して、ソフトウェア実行に確実なセキュリティ境界を提供するプロセッサを提供する。
本発明は、安全保護方法、および、命令、操作リソースおよびOEに対してセキュリティチェックを行うことによってコンピューティングセキュリティを実施するプロセッサを提供する。
本発明の1つの実施形態において、プロセッサによって実行される安全保護方法を提供する。この安全保護方法は、以下のステップを含む。命令の命令セキュリティ属性(instruction security attribute, ISA)および操作イベント(operational event, OE)のセキュリティ属性(security attribute, SA)に基づいて、命令を実行する前または後に、セキュリティチェックを行う。セキュリティチェックが失敗(fail)した時に、OEを無視する、または、OEを延期する、または、セキュリティ例外(security exception)を起こす。OEは、プロセッサが命令をフェッチ(fetch)または実行した時の副作用として生成される、または、命令の監視結果として生成される、または、プロセッサの外部入力に応答して生成される。
本発明の別の実施形態において、プロセッサを提供する。このプロセッサは、命令フェッチユニットと、命令操作ユニットと、OE発生器と、セキュリティチェックユニットとを含む。命令操作ユニットは、命令フェッチユニットに連結される。OE発生器は、命令フェッチユニットおよび命令操作ユニットに連結される。セキュリティチェックユニットは、命令フェッチユニット、命令操作ユニットおよびOE発生器に連結される。命令フェッチユニットは、命令フェッチアドレス空間から命令をフェッチする。命令操作ユニットは、命令を実行する。OE発生器は、命令フェッチユニットが命令をフェッチした時、または、命令操作ユニットが命令を実行した時の副作用として、あるいは、命令の監視結果として、あるいは、プロセッサの外部入力に応答して、OEを生成する。セキュリティチェックユニットは、命令操作ユニットが命令のISAおよびOEのSAに基づいて命令を実行する前または後に、セキュリティチェックを行う。OE発生器は、セキュリティチェックが失敗した時に、OEを無視する、または、OEを延期する、または、セキュリティ例外を起こす。
本発明の別の実施形態において、別の安全保護方法を提供する。この安全保護方法は、プロセッサによって実行され、以下のステップを含む。第1命令がセキュリティサービス命令である時に、第1命令のSAおよびコードSAに基づいて、第1セキュリティチェックを行う。第1セキュリティチェックが失敗した時に、セキュリティ例外を起こす。
本発明の別の実施形態において、別のプロセッサを提供する。このプロセッサは、命令フェッチユニットと、命令操作ユニットと、セキュリティチェックユニットとを含む。命令フェッチユニットは、命令フェッチアドレス空間(instruction fetch address space, IFAS)から第1命令をフェッチする。命令操作ユニットは、命令フェッチユニットに連結され、第1命令を実行する。セキュリティチェックユニットは、命令フェッチユニットおよび命令操作ユニットに連結される。セキュリティチェックユニットは、第1命令がセキュリティサービス命令である時に、第1命令のISAおよびコードSAに基づいて、第1セキュリティチェックを行う。セキュリティチェックユニットは、第1セキュリティチェックが失敗した時に、セキュリティ例外を起こす。
本発明の別の実施形態において、別の安全保護方法を提供する。この安全保護方法は、本発明が提供する上記2つの安全保護方法を組み合わせたものである。
本発明の別の実施形態において、別のプロセッサを提供する。このプロセッサは、本発明が提供する上記2つのプロセッサを組み合わせたものである。
上述した命令、操作リソースおよびOEに対するセキュリティチェックを行うことによって、ソフトウェア実行に確実なセキュリティ境界を提供する。
本発明の上記および他の目的、特徴、および利点をより分かり易くするため、図面と併せた幾つかの実施形態を以下に説明する。
本発明の1つの実施形態に係るプロセッサの一部を示す概略図である。 本発明の1つの実施形態に係るSLEおよびアドレス空間内のこれらの関連領域を示す概略図である。 本発明の1つの実施形態に係る安全保護方法を示すフローチャートである。 本発明の1つの実施形態に係る安全保護方法を示すフローチャートである。 本発明の1つの実施形態に係る安全保護方法を示すフローチャートである。 本発明の1つの実施形態に係る安全保護方法を示すフローチャートである。 本発明の1つの実施形態に係る安全保護方法を示すフローチャートである。 本発明の1つの実施形態に係る安全保護方法を示すフローチャートである。 本発明の1つの実施形態に係る安全保護方法を示すフローチャートである。
図1は、本発明の1つの実施形態に係るプロセッサ100の一部を示す概略図である。プロセッサ100は、命令フェッチアドレス発生器110と、命令フェッチユニット120と、操作リソースアドレス発生器130と、命令操作ユニット140と、操作イベント(operational event, OE)発生器150と、セキュリティチェックユニット160と、セキュリティルックアップ項目(security lookup entry, SLE)ユニット170と、セキュリティ例外ユニット180とを含む。命令フェッチユニット120は、命令フェッチアドレス発生器110に連結される。操作リソースアドレス発生器130は、命令フェッチユニット120に連結される。命令操作ユニット140は、操作リソースアドレス発生器130に連結される。OE発生器150は、命令フェッチユニット120および命令操作ユニット140に連結される。セキュリティチェックユニット160は、命令フェッチユニット120、命令操作ユニット140およびOE発生器150に連結される。SLEユニット170は、命令フェッチアドレス発生器110、命令フェッチユニット120、操作リソースアドレス発生器130、OE発生器150およびセキュリティチェックユニット160に連結される。セキュリティ例外ユニット180は、命令フェッチアドレス発生器110およびセキュリティチェックユニット160に連結される。本発明のいくつかの別の実施形態において、セキュリティ例外ユニット180は、プロセッサ100の他のいくつかの構成要素、例えば、命令フェッチユニット120、操作リソースアドレス発生器130、命令操作ユニット140またはOE発生器150等にさらに連結して、例外処理中にこれらの操作を制御してもよい。
プロセッサ100は、セキュリティチェックを行うことによってコンピュータセキュリティを実施するものであり、セキュリティチェックの核心は、命令のセキュリティ属性(SA)、命令によってアクセスされた操作リソースおよびOEを比較することである。OEは、命令フェッチユニット120が命令をフェッチした時、または、命令操作ユニット140が命令を実行した時の副作用(例えば、例外(exception))として、あるいは、命令の監視結果(例えば、デバッグイベント(debugging event)、つまり、命令ブレークポイント(breakpoint)、データウォッチポイント(watchpoint)、シングルステップ(single-stepping)または命令トレース(trace))として、あるいは、プロセッサの外部入力(例えば、中断(interrupt))に応答して、OE発生器150によって生成される。SAは、SLEユニット170によって提供された複数のSLEから取得することができる。
SLEは、SLEユニット170のルックアップテーブルに保存された項目であり、命令、操作リソースおよびOEのSAを決定する。SLEユニット170は、プロセッサ100の外部入力からいくつかまたは全てのSLEを取得することができる。SLEは、1つまたはそれ以上のセキュリティ要素を含むことができる。セキュリティ要素は、これらがSLEの一部である時、または、これらが命令、操作リソースまたはOEにタグ付けされている時に、SAと称することができる。SLEのセキュリティ要素の全てまたは一部を使用して、命令、操作リソースまたはOEにタグ付けするSAが形成された時、SAは、それぞれ命令SA(instruction SA, ISA)またはデータSA(data SA, DSA)と称することができる。
また、命令フェッチアドレス空間(instruction fetch address space, IFAS)からの命令またはロード/保存アドレス空間(load/store address space, LSAS)からのデータによってルックアップ(lookup)を行うSLEは、IFASまたはLSASのいずれか、または、両方のアドレス空間の領域を特定するタグを含むことができる。タグを有さないSLEがあってもよいが、このようなSLEは、インデックスと関連する。実際には、これらはレジスター、SLEまたはOEのSAを取得するためにルックアップされるSLEであり、これらのレジスターおよびSLEは、いくつかの特殊命令の操作リソースである。
上述したように、SLEは、アドレス空間の領域を特定するタグおよびその領域に関連するSAを記録することができる。領域は、プロセッサ100がその中から命令をフェッチしたIFASの一部、または、プロセッサ100の外部インターフェースにマッピングされたLSASの一部であってもよく、LOAD命令は、LSASの中からデータを読み出し、および/または、STORE命令は、LSASの中にデータを書き込む。プロセッサ100によってアクセスされるIFASおよびLSASは、1つまたはそれ以上あってもよい。各IFASおよびLSASは、1つまたはそれ以上の領域を含むことができる。これらの領域は、同じSAまたは異なるSAに関連してもよい。上述したタグは、領域のベースアドレスおよびサイズを記録する、または、領域の最初のアドレスと最後のアドレスを記録することによって、それ自身の領域を特定することができる。
1つのSAは、セキュリティを制御するために使用可能なセキュリティ要素を1つまたはそれ以上含むことができる。例えば、セキュリティ要素のうちの1つは、セキュリティ特権レベル(security privilege level, SPL)であってもよい。SPLは、数字で特権のレベルを定義して、セキュリティチェックを行う。セキュリティチェックは、2つのSAを比較して、どちらのSAがより安全であるかを判断する。比較は、2つのSAのセキュリティ要素に基づいて行われる。例えば、各SAがSPLセキュリティ要素を含む時、2つのSPLを比較することができる。SPLの数が少ないSAが、より安全である。本発明のいくつかの別の実施形態において、SPLの数が多いSAが、より安全である。
図2は、本発明の1つの実施形態に係る4つのSLEおよびアドレス空間200におけるこれらの関連領域を示す概略図である。SLEユニット170によって提供された4つのSLEをSLE0〜SLE3として表記し、これらは、それぞれ領域0〜3に関連する。アドレス空間200は、IFASまたはLSASであってもよい。領域0は、アドレスA2で始まり、アドレスA4で終わる。領域1は、アドレスA5で始まり、アドレスA6で終わる。領域2は、アドレスA3で始まり、アドレスA7で終わる。領域3は、アドレスA0で始まり、アドレスA1で終わる。領域2は、領域0および領域1とオーバーラップする。
全ての命令は、それ自身のフェッチアドレスからフェッチされる。命令は、それ自身の実行を行うために、操作リソースにアクセスすることができる。命令によってアクセスされた操作リソースは、LSASにおいてアドレス指定されたデータ、プロセッサ100のレジスター、またはSLEユニット170によって提供されたSLEであってもよい。データのアドレスは、プロセッサ100の内部記憶装置または外部インターフェースにマッピングされ、命令がデータの読み出しまたは書き込みを行うLSASのアドレスである。
SLEユニット170が命令のフェッチアドレスまたは命令によってアクセスされた操作リソースのデータアドレスを受信した時、SLEユニット170は、受信したアドレスに基づいて、SLE内の領域をルックアップすることができる。受信したアドレスをカバーする領域を有するSLEが1つしかなく、受信したアドレスが命令のフェッチアドレスである時、SLEユニット170は、そのSLEのSAのセキュリティ要素の全てまたは一部をその命令にタグ付けすることができる。タグ付けされたセキュリティ要素は、その命令のSAになる。命令のSAは、命令SA(ISA)とも称される。
受信したアドレスをカバーする領域を有するSLEが1つしかなく、受信したアドレスが命令によってアクセスされた操作リソースのデータアドレスである時、SLEユニット170は、そのSLEのSAのセキュリティ要素の全てまたは一部をその操作リソースにタグ付けすることができる。タグ付けされたセキュリティ要素は、その操作リソースのSAになる。操作リソースのSAは、データSA(DSA)とも称される。
受信したアドレスをカバーする領域を有するSLEが1つよりも多い時、SLEユニット170は、任意の優先方式に基づいて、それらのSLEのうちの1つを選択し、選択したSLEのSAのセキュリティ要素の全てまたは一部をその命令または操作リソースにタグ付けすることができる。例えば、SLEユニット170は、最も安全なSAを有するSLEを選択することができる。
図2に示した領域を例に挙げて説明する。SLEユニット170が領域3にある命令のフェッチアドレスを受信した時、SLEユニット170は、SLE3のSAを用いて命令をタグ付けすることができる。同様に、SLEユニット170が領域3にある命令によってアクセスされた操作リソースのデータアドレスを受信した時、SLEユニット170は、SLE3のSAを用いて操作リソースをタグ付けすることができる。SLEユニット170が領域1にある命令のフェッチアドレスを受信した時、SLEユニット170は、SLE1またはSLE2を選択して、選択したSLEのSAを用いて命令をタグ付けすることができるが、これは、領域1と領域2がオーバーラップし、SLE1とSLE2のフェッチアドレスが一致しているからである。同様に、SLEユニット170が領域1にある命令によってアクセスされた操作リソースのデータアドレスを受信した時、SLEユニット170は、SLE1またはSLE2を選択して、選択したSLEのSAを用いて操作リソースをタグ付けすることができる。
上述したように、SLEは、インデックスと関連してもよい。いくつかの命令は、領域に直接アクセスすることができ、いくつかの命令は、SLEに直接アクセスすることができる。命令によってアクセスされた操作リソースがプロセッサ100のレジスターまたはSLEである時、レジスターまたはSLEは、対応するインデックスを有する。いくつかのOEもまた、対応する内部インデックスを有する。SLEユニット170がそのようなインデックスを受信した時、SLEユニット170は、受信したインデックスと一致するインデックスを有するSLEのSAのセキュリティ要素の全てまたは一部をレジスター、SLEまたはOEにタグ付けすることができる。タグ付けされたセキュリティ要素は、レジスター、SLEまたはOEのSAになる。あるいは、本発明のいくつかの別の実施形態において、レジスター、SLEまたはOEの一部または全ては、SLEユニット170に記録されたSAの代わりに、ハードコーディングされたSAに関連してもよい。
セキュリティサービス命令(security service instruction, SSI)と称される特殊な命令が存在する。SSIは、より安全な領域にある命令、または、正規の命令を介してサービスの提供を請求することのできない領域にある命令によって提供されたサービスを請求するために使用される。例えば、SPLの数が少なければ少ないほど、SPLの数が多い場合よりも安全であると仮定する。通常、SPL3を有する関数呼出し(function-call)命令がSPL2を有するサブルーチン(subroutine)によって提供されたサービスを請求すると、セキュリティチェック違反(violation)をトリガー(trigger)する。しかしながら、SPL3に対して定義されたSSIを使用することによって、SPL3を有する命令流(instruction flow)は、セキュリティチェック違反をトリガーせずに、SPL2を有する別の命令流によって提供されたサービスを請求することができる。異なるISAに対して異なるSSIを定義して、各ISAからサービスを請求してもよい。例えば、SPL3に対してSSIを定義してSPL2からサービスを請求してもよく、SPL3に対してSSIを定義してSPL1からサービスを請求してもよく、SPL2に対して別のSSIを定義してSPL1からサービスを請求してもよい。SSIの不正使用は、セキュリティチェック違反である。例えば、SPL3を有する命令流がSPL2に対して定義されたSSIを実行するのは、不正である。
SSIは、2つのSAに関連する。2つのSAのうちの1つは、SSIのフェッチアドレスに関連するISAである。2つのSAのうちのもう1つは、SSIの命令コードおよび/またはオペランド(operand)に関連するコードSAである。SSIのコードSAは、SSIのインデックスに基づいて取得することができ、インデックスは、SSIの命令コードおよび/またはオペランドから引き出すことができる。本発明のいくつかの実施形態において、SSIのISAに関連するグループID(identification)(下記に詳細を説明する)は、SSIのインデックスの生成にも使用することができる。SLEユニット170がSSIのインデックスを受信した時、SLEユニット170は、受信したインデックスと一致するインデックスを有するSLEのSAのセキュリティ要素の全てまたは一部をSSIにタグ付けすることができる。タグ付けされたセキュリティ要素は、SSIのコードSAになる。
本発明のいくつかの実施形態において、SLEに記録された各SAは、グループIDに関連してもよい。グループIDは、SLEに保存されてもよく、または、その他の場所に保存されてもよい。本発明のいくつかの実施形態において、グループIDチェックは、現在の命令対次の命令のセキュリティチェック、または、現在の命令対現在の命令によってアクセスされた操作リソースのセキュリティチェックに含まれてもよい。
現在の命令対次の命令のセキュリティチェックについては、次の命令のISAが現在の命令のISAよりも安全である時に、セキュリティ違反が発生する。現在の命令対その操作リソースのセキュリティチェックについては、操作リソースのDSAが現在の命令のISAよりも安全である時に、セキュリティ違反が発生する。しかしながら、本発明のいくつかの実施形態は、上述したSAのセキュリティチェックにおいてセキュリティ違反がない時に、グループIDを用いてさらなるチェックを行うよう選択的に要求してもよい。
上述したSAチェックにおいてセキュリティ違反がない状況で、グループIDチェックが要求された時、現在の命令のISAに関連するグループIDが操作リソースのDSA(または次の命令のISA)に関連するグループIDと同じであれば、セキュリティチェックは通過(pass)するが、2つのグループIDが異なる場合、セキュリティチェックは失敗する。このようなグループIDチェックについて、2つの例を図4および図6に示す。グループIDチェックが要求されなかった時、2つのSAが同等に安全である時にセキュリティチェックは通過とみなされる。
また、各SLEは、さらに、1つまたはそれ以上のIDチェック属性ビット(attribute bit)に関連してもよく、チェックされた2つのSAが同じ時、または2つのSAが異なる時(SAセキュリティチェックにおいてセキュリティ違反がない時)にグループIDチェックが行われたかどうかを決定することができる。IDチェック属性ビットは、それらの関連SLEに保存されてもよく、または、その他の場所に保存されてもよい。
本発明のいくつかの実施形態において、ホストデバッグモード(host debugging mode)が実施される。デバッグイベント(OE)がホストデバッグモードで起きた時、プロセッサ100は、その命令流を特殊ポートまたは特殊アドレス空間にリダイレクト(redirect)することができ、デバッグ処理を行うためのさらなる命令は、プロセッサ100の物理的デバッグインターフェース(通常、インサーキットデバッグポート(in-circuit debugging port)と呼ばれる)を介して、外部ホストからポートまたはアドレス空間に供給される。外部命令は、セキュリティ上の問題(security concern)を起こすため、このような命令は、事実上、単独領域として取り扱われる。つまり、SLEユニット170は、ホストデバッグモードに単独で使用される特殊SLEを提供することができる。命令フェッチアドレス発生器110がホストデバッグモードにおいて外部命令のISAをルックアップした時は、外部命令のフェッチアドレスに関わらず、SLEユニット170が常に、この特殊SLEから得られたSAおよびグループIDを外部命令にタグ付けする。特殊SLEは、他のどの目的にも使用されない。
図3は、本発明の1つの実施形態に係るプロセッサ100によって実行される安全保護方法を示すフローチャートである。ステップ310において、命令フェッチアドレス発生器110は、命令のフェッチアドレスを生成し、命令フェッチユニット120は、IFASからのフェッチアドレスに基づいて命令をフェッチし、セキュリティチェックユニット160は、命令フェッチセキュリティチェックを行う(詳細は図4に示す)。このセキュリティチェックに対して、命令フェッチアドレス発生器110は、SLEユニット170にフェッチアドレスを提供する。SLEユニット170は、ステップ320において、フェッチアドレスに基づいてSLEをルックアップしてSAを取得し、命令フェッチユニット120にSAを提供して、フェッチアドレスからフェッチされた新しい命令にタグ付けする。その結果、命令フェッチユニット120は、命令のフェッチアドレスをカバーする領域を有するSLEの1つから命令のISAを取得する。命令のISAは、命令フェッチセキュリティチェックにおいて使用される。
ステップ330において、セキュリティチェックユニット160は、命令実行の前にOEセキュリティチェックを行う(詳細は図5に示す)。このセキュリティチェックに関わるOEは、それ自身の命令とは関連がない。例えば、OEは、中断、または命令ブレークポイント等のハードウェアデバッグイベントであってもよい。このセキュリティチェックに対して、OE発生器は、SLEユニット170にOEのインデックスを提供する。SLEユニット170は、インデックスに基づいてSLEをルックアップしてSAを取得し、そのSAを用いてOEをタグ付けする。その結果、セキュリティチェックユニット160は、OEのインデックスと一致するインデックスを有するSLEの1つからOEのSAを取得する。OEのSAは、OEセキュリティチェックにおいて使用される。
ステップ340において、操作リソースアドレス発生器130は、命令をデコード(decode)し、命令によってアクセスされる操作リソースを決定して、命令によってアクセスされる操作リソースに関連するデータアドレスまたはインデックスを生成する。ステップ350において、セキュリティチェックユニット160は、SSIセキュリティチェックまたはリソースアクセスセキュリティチェックを行う(詳細はそれぞれ図7および図6に示す)。
命令がSSIである時、操作リソースアドレス発生器130は、SSIの命令コードおよび/またはオペランドに基づいてSSIのインデックスを生成し、SLEユニット170にインデックスを提供する。例えば、操作リソースアドレス発生器130は、SSIの命令コードを直接SSIのインデックスとして使用してもよく、または、SSIの命令コードおよびいくつかのオペランド値をSSIのインデックスにエンコード(encode)してもよい。いくつかの実施形態において、操作リソースアドレス発生器130は、さらに、SSIのフェッチアドレスに関連するグループIDに基づいてインデックスを生成してもよい。SLEユニット170は、インデックスに基づいてSLEをルックアップしてSAを取得し、そのSAを用いてSSIをタグ付けする。その結果、セキュリティチェックユニット160は、SSIのインデックスと一致するインデックスを有するSLEの1つからSSIのコードSAを取得する。SSIのコードSAは、SSIセキュリティチェックにおいて使用される。
リソースアクセスセキュリティチェックに対して、操作リソースアドレス発生器130は、SLEユニット170に操作リソースに関連するデータアドレスまたはインデックスを提供する。SLEユニット170は、データアドレスまたはインデックスに基づいてSLEをルックアップしてSAを取得し、そのSAを用いて操作リソースをタグ付けする。その結果、セキュリティチェックユニット160は、データアドレスをカバーする領域を有するSLE、または、操作リソースのインデックスと一致するインデックスを有するSLEから操作リソースのSAを取得する。操作リソースのSAは、リソースアクセスセキュリティチェックにおいて使用される。
ステップ360において、命令操作ユニット140は、命令を平常通り実行する。ステップ370において、セキュリティチェックユニット160は、命令実行の後に別のOEセキュリティチェックを行う(詳細は図8に示す)。このセキュリティチェックに関わるOEは、それ自身の命令と関連がある。例えば、OEは、命令の実行中に起きた例外であってもよい。このセキュリティチェックに対して、OE発生器は、SLEユニット170にOEのインデックスを提供する。SLEユニット170は、インデックスに基づいてSLEをルックアップしてSAを取得し、そのSAを用いてOEをタグ付けする。その結果、セキュリティチェックユニット160は、OEのインデックスと一致するインデックスを有するSLEの1つからOEのSAを取得する。OEのSAは、OEセキュリティチェックにおいて使用される。ステップ380において、命令操作ユニット140は、命令をコミット(commit)して、命令によって修正されたデータをライトバック(write back)する。
セキュリティチェックユニット160は、命令フェッチセキュリティチェックが失敗した時に、セキュリティ例外を起こす。セキュリティチェックユニット160は、また、OEセキュリティチェック、SSIセキュリティチェックまたはリソースアクセスセキュリティチェックのうちのいずれかが失敗した時にも、セキュリティ例外を起こす。セキュリティ例外は、セキュリティ例外ユニット180によって処理される。セキュリティ例外の処理の詳細は、図9に示した通りである。
図4は、本発明の1つの実施形態に係るステップ310において実行される命令フェッチセキュリティチェックの詳細フローである。まず、現在の命令(current instruction, CI)および次の命令(next instruction, NI)の用語について説明する必要がある。現在の命令および次の命令は、プロセッサ100のフェッチ順における2つの命令である。命令フェッチユニット120は、命令フェッチユニット120が現在の命令をフェッチした後すぐに次の命令をフェッチする。ステップ410の直前では、現在の命令が既にフェッチされていて、プロセッサ100の実行パイプラインのいくつかの段階(例えば、ステップ330、340、350、360、370または380に対応する段階)にあり、次の命令は、今まさにフェッチされようとしているところである。本発明のいくつかの別の実施形態において、現在の命令および次の命令は、両方の命令がそれらの対応する命令フェッチセキュリティチェックを通過した後に、両方同時にフェッチされてもよい。
ステップ410において、命令フェッチアドレス発生器110は、次の命令のフェッチアドレスを生成する。ステップ420において、命令フェッチアドレス発生器110は、SLEユニット170にフェッチアドレスを提供し、SLEをルックアップして次の命令のISAを取得し、そのISAを用いて次の命令をタグ付けする。ステップ430において、セキュリティチェックユニット160は、ルックアップが失敗したかどうかをチェックする。
ルックアップの失敗とは、提供されたアドレスをカバーする領域を有するSLE、または、提供されたインデックスと一致するインデックスを有するSLEをSLEユニット170が見つけられなかったことを意味する。ルックアップが失敗した時は、セキュリティ違反であるため、セキュリティチェックユニット160は、ステップ490において、セキュリティ例外を起こす。ルックアップが通過した時、セキュリティチェックユニット160は、ステップ440において、次の命令がOE処理ルーチン(handler routine)またはSSI処理ルーチンを実行するためにフェッチされる第1命令であるかどうかをチェックする。次の命令がOE処理ルーチンまたはSSI処理ルーチンを実行するためにフェッチされる第1命令である時、これ以上セキュリティチェックを行う必要がないため、フローは、ステップ470に進む。
あるいは、次の命令がOE処理ルーチンまたはSSI処理ルーチンを実行するためにフェッチされる第1命令でない時、セキュリティチェックユニット160は、ステップ450において、次の命令のISA(NISA)が現在の命令のISA(CISA)よりも安全であるかどうかをチェックする。
ステップ450において、次の命令のISAが現在の命令のISAよりも安全である時は、セキュリティ違反であるため、セキュリティチェックユニット160は、ステップ490において、セキュリティ例外を起こす。
ステップ450において、次の命令のISAが現在の命令のISAよりも安全ではない時、セキュリティチェックユニット160は、ステップ470において、グループIDチェックが必要であるかどうか、および、現在の命令のISAに関連するグループIDが次の命令のISAに関連するグループIDと異なるかどうかをチェックする。グループIDチェックが必要であるかどうかは、プロセッサ100の設計的事項である。ステップ470においてチェックされた条件が真(true)である場合は、セキュリティ違反であるため、セキュリティチェックユニット160は、ステップ490において、セキュリティ例外を起こす。そうでなければ、セキュリティチェックは通過し、次の命令は、この後、現在の命令になる。次に、ステップ480において、命令フェッチユニット120は、命令フェッチアドレス発生器110によって前に生成されたフェッチアドレスから現在の命令をフェッチする。
図4に示した命令フェッチセキュリティチェックのいくつかの例について、図2および図4を参照されたい。図2の4つのSLEのセキュリティのソート順がSLE0、SLE1、SLE2およびSLE3であり、4つのSLEの中でSLE0のSAが最も安全であると仮定し、且つ、グループIDチェックが必要ないと仮定する。プロセッサ100の実行フローが領域3から領域0にジャンプした(jump)時、この移動はセキュリティ違反であるため、セキュリティ例外が起こる。プロセッサ100の実行フローが領域0から他の任意の領域にジャンプした時、領域0は最も安全であるため、この移動は許可される。図4の命令フェッチセキュリティチェックは、分岐命令(brunch instruction)、飛び越し命令(jump instruction)および呼び出し命令(call instruction)に対してだけでなく、順次実行(sequential execution)に対しても実行される。例えば、セキュリティ違反は、プロセッサ100の実行フローが前のアドレス(領域2)からアドレスA5(領域1)に入った時に起こる。
図5は、本発明の1つの実施形態に係るステップ330において実行されるOEセキュリティチェックの詳細フローである。ステップ510において、OE発生器150は、承認待ちの有効なOEがあるかどうかをチェックする。そのようなOEがある時、OE発生器150は、ステップ520において、SLEユニット170にOEのインデックスを提供し、SLEをルックアップしてOEのSAを取得する。ステップ530において、セキュリティチェックユニット160は、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、OEに関連するSAがなく、セキュリティチェックが必要ないことを意味する。その結果、フローはステップ560に進み、OEを処理する。
ルックアップが通過した時、セキュリティチェックユニット160は、ステップ540において、現在の命令のISAおよびOEのSAに基づいてOEセキュリティチェックを行う。現在の命令のISAがOEのSAよりも安全である時、OEセキュリティチェックは失敗する。ステップ540においてセキュリティチェックが失敗した時、OE発生器150は、ステップ550において、OEを延期または無視することができる。延期されたOEは、ステップ330の次のイテレーション(iteration)で再度処理されるが、無視されたOEは、削除され、二度と見られない。例えば、OEが中断である時、その中断処理は、関連するセキュリティチェックが通過するIFAS領域に実行フローが入るまで、延期される。別の例では、OEセキュリティチェックが失敗した命令に対し、対応するトレースデータ出力(OE)が無視される。
ステップ540においてセキュリティチェックが通過した時、OE発生器150は、ステップ560において、トラップ(trap)を送信してプロセッサ100がOEを処理する必要があるかどうかをチェックする。トラップが必要である時、OE発生器150は、ステップ570において、トラップを送信してプロセッサ100がOEを処理する。例えば、OEが中断または例外である時、トラップを送信してプロセッサ100が実行フロー(execution flow)を所定の処理ルーチンにリダイレクトする必要がある。また、OE発生器150は、いくつかの外部ホストに対して適切な情報を外部に出力して、OEに応答してもよい。トラップが必要ない時、OE発生器150は、ステップ580において、適切な情報を外部に出力する。例えば、OE発生器150は、OEが命令トレースである時に、ポートを介して対応するデバッグ情報を単に出力してもよい。
図6は、本発明の1つの実施形態に係るステップ350において実行されるリソースアクセスセキュリティチェックの詳細フローである。ステップ605において、操作リソースアドレス発生器130は、現在の命令がSSIであるかどうかをチェックする。現在の命令がSSIである時、フローはステップ610に進み、SSIセキュリティチェックを行う。SSIセキュリティチェックの詳細は、図7に示した通りである。
現在の命令がSSIでない時、操作リソースアドレス発生器130は、ステップ615において、SLEユニット170に操作リソースのアドレスまたはインデックスを提供し、SLEをルックアップして現在の命令に必要な操作リソースのSAを取得する。セキュリティチェックユニット160は、ステップ620において、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、セキュリティ違反であるため、セキュリティチェックユニット160は、ステップ625において、セキュリティ例外を起こす。
ルックアップが通過した時、セキュリティチェックユニット160は、ステップ630において、操作リソースのSA(DSA)が現在の命令のISAよりも安全であるかどうかをチェックする。ステップ630においてチェックした条件が真である場合は、セキュリティ違反であるため、セキュリティチェックユニット160は、ステップ625において、セキュリティ例外を起こす。
ステップ630においてチェックした条件が偽(false)である場合、セキュリティチェックユニット160は、ステップ640において、グループIDチェックが必要であるかどうか、および、現在の命令のISAに関連するグループIDが操作リソースのSAに関連するグループIDと異なるかどうかをチェックする。ステップ640においてチェックした条件が真である場合は、セキュリティ違反であるため、セキュリティチェックユニット160は、ステップ645において、セキュリティ例外を起こす。そうでなければ、セキュリティチェックは通過するため、命令操作ユニット140は、ステップ650において、命令操作の操作リソースにアクセスすることができる。
図7は、発明の1つの実施形態に係るステップ350において実行されるSSIセキュリティチェックの詳細フローである。ステップ710において、操作リソースアドレス発生器130は、SLEユニット170にSSIのインデックスを提供し、SLEをルックアップしてSSIのコードSAを取得する。ステップ720において、セキュリティチェックユニット160は、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、セキュリティ違反であるため、セキュリティチェックユニット160は、ステップ750において、セキュリティ例外を起こす。
ルックアップが通過した時、セキュリティチェックユニット160は、ステップ730において、SSIセキュリティチェックを行う。SSI命令のISAがSSI命令のコードSAよりも安全でない時、SSIセキュリティチェックは失敗する。SSIセキュリティチェックが失敗した時、セキュリティチェックユニット160は、ステップ750において、セキュリティ例外を起こす。SSIセキュリティチェックが通過した時、セキュリティチェックユニット160は、ステップ740において、トラップを送信してプロセッサ100がSSIを処理する。
図8は、発明の1つの実施形態に係るステップ370において実行されるOEセキュリティチェックの詳細フローである。ステップ805において、OE発生器150は、現在の命令の実行がOEをトリガーしたかどうかをチェックする。そのようなOEが存在する時、OE発生器150は、ステップ810において、SLEユニット170にOEのインデックスを提供し、SLEをルックアップしてOEのSAを取得する。ステップ815において、セキュリティチェックユニット160は、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、OEに関連するSAがなく、セキュリティチェックが必要ないことを意味する。その結果、フローはステップ840に進み、OEを処理する。
ルックアップが通過した時、セキュリティチェックユニット160は、ステップ820において、OEセキュリティチェックを行う。現在の命令のISAがOEのSAよりも安全である時、OEセキュリティチェックは失敗する。ステップ820においてセキュリティチェックが失敗した時、セキュリティチェックユニット160は、OEが致命的例外(fatal exception)であるかどうかをチェックする。致命的例外は、現在の命令が適切に終了されず、プロセッサ100の状態または一貫性を危険にさらした時にトリガーされる。OEが致命的例外である時、セキュリティチェックユニット160は、ステップ830において、セキュリティ例外を起こす。そうでなければ、OE発生器150は、ステップ835において、OEを無視することができる。
ステップ820においてセキュリティチェックが通過した時、OE発生器150は、ステップ840において、トラップを送信してプロセッサ100がOEを処理する必要があるかどうかをチェックする。トラップが必要である時、OE発生器150は、ステップ845において、トラップを送信してプロセッサ100がOEを処理する。また、OE発生器150は、いくつかの外部ホストに対して適切な情報を外部に出力して、OEに応答してもよい。トラップが必要ない時、図3に示したメインフローに戻る。また、OE発生器150は、ステップ850において、適切な情報を外部に出力してもよい。
図9は、発明の1つの実施形態に係るセキュリティ例外が起きた時にセキュリティ例外ユニット180によって実行されるセキュリティ例外処理の詳細フローである。ステップ910において、セキュリティ例外ユニット180は、指示信号を出力する必要があるかどうかをチェックする。セキュリティ例外に応答して指示信号を出力するかどうかは、予め設定してもよい。出力が必要な時、セキュリティ例外ユニット180は、ステップ920において指示信号をアサート(asset)するため、セキュリティ例外は、外部装置によって処理される。そうでなければ、フローはステップ930に進む。
ステップ930において、セキュリティ例外ユニット180は、プロセッサ100の実行を停止する必要があるかどうかをチェックする。実行を停止する必要がない時、セキュリティ例外ユニット180は、ステップ940において、トラップを送信してプロセッサ100がセキュリティ例外(security exception, SE)を処理する。セキュリティ例外の処理ルーチンが最も安全な領域に存在することによって、IFASとLSASは、同じオリジナル画像(original view)を維持することができる。あるいは、セキュリティ例外の処理ルーチンは、プロセッサ100にセキュリティ例外がトラップされた時にプロセッサ100によってのみ見ることのできるIFAS/LSASにおいて存在してもよい。実行を停止する必要がある時、セキュリティ例外ユニット180は、ステップ950において、リセット信号をアサートすることによって、プロセッサ100をリセットまたは停止してもよく、あるいは、プロセッサ100へのクロック信号の入力を停止する、または、プロセッサ100のパイプライン(pipeline)をフラッシュ(flush)してプロセッサ100の命令フェッチを停止することによって、プロセッサ100を完全に停止してもよい。
以上のように、本発明は、安全保護方法、および命令、操作リソースおよびOEに対してセキュリティチェックを行うことによってコンピューティングセキュリティを実施し、ソフトウェア実行に確実なセキュリティ境界を提供するプロセッサを提供する。
以上のごとく、この発明を実施形態により開示したが、もとより、この発明を限定するためのものではなく、当業者であれば容易に理解できるように、この発明の技術思想の範囲内において、適当な変更ならびに修正が当然なされうるものであるから、その特許権保護の範囲は、特許請求の範囲および、それと均等な領域を基準として定めなければならない。
本発明は、プロセッサおよびコンピュータシステム等のコンピューティングセキュリティ分野に応用することができる。
100 プロセッサ
110 命令フェッチアドレス発生器
120 命令フェッチユニット
130 操作リソースアドレス発生器
140 命令操作ユニット
150 操作イベント発生器
160 セキュリティチェックユニット
170 セキュリティルックアップ項目ユニット
180 セキュリティ例外ユニット
200 アドレス空間
310〜950 ステップ
A0〜A7 アドレス
ISA 命令セキュリティ属性
SA セキュリティ属性
SLE0〜SLE3 セキュリティルックアップ項目

Claims (18)

  1. プロセッサによって実行される安全保護方法であって、
    第1命令の命令セキュリティ属性(ISA)および操作イベント(OE)のセキュリティ属性(SA)に基づいて、前記第1命令を実行する前または後に第1セキュリティチェックを行い、前記OEが、前記第1命令を実行する前に、前記プロセッサが前記第1命令をフェッチした時の副作用として生成される、または、前記第1命令を実行した後に、前記プロセッサが前記第1命令を実行した時の副作用として生成される、または、前記第1命令の監視結果として生成される、または、前記プロセッサの外部入力に応答して生成されるステップと、
    前記第1セキュリティチェックが失敗した時に、前記OEを無視する、または、前記OEを延期する、または、セキュリティ例外を起こすステップと
    を含む安全保護方法。
  2. 第2セキュリティチェック、第3セキュリティチェックおよび第4セキュリティチェックのうちの少なくとも1つを行うステップと、
    前記第2セキュリティチェックが、前記第1命令の前記ISAおよび前記第1命令によってアクセスされた操作リソースのSAに基づいて行われ、
    前記第3セキュリティチェックが、前記第1命令がセキュリティサービス命令である時に行われるとともに、前記第3セキュリティチェックが、前記第1命令の前記ISAおよびコードSAに基づいて行われ、
    前記第4セキュリティチェックが、前記第1命令の前記ISAおよび第2命令のISAに基づいて行われ、前記プロセッサが、前記プロセッサが前記第1命令をフェッチした後すぐに前記第2命令をフェッチし、
    前記第2セキュリティチェック、前記第3セキュリティチェックおよび前記第4セキュリティチェックのうちのいずれかが失敗した時に、前記セキュリティ例外を起こすステップと
    をさらに含む請求項1に記載の安全保護方法。
  3. 前記第1命令の前記ISAが前記OEの前記SAよりも安全である時、前記第1セキュリティチェックが失敗し、
    前記第1命令の前記ISAが前記操作リソースの前記SAよりも安全ではない時、または、前記第1命令の前記ISAが前記操作リソースの前記SAと同等に安全であり、且つ前記第1命令の前記ISAに関連するグループIDが前記操作リソースの前記SAに関連するグループIDと異なる時に、前記第2セキュリティチェックが失敗し、
    前記第1命令の前記ISAが前記第1命令の前記コードSAよりも安全ではない時に、前記第3セキュリティチェックが失敗し、
    前記第1命令の前記ISAが前記第2命令の前記ISAよりも安全ではない時、または、前記第1命令の前記ISAが前記第2命令の前記ISAと同等に安全であり、且つ前記第1命令の前記ISAに関連する前記グループIDが前記第2命令の前記ISAに関連するグループIDと異なる時に、前記第4セキュリティチェックが失敗する請求項2に記載の安全保護方法。
  4. 前記操作リソースが、前記プロセッサの内部記憶装置または外部インターフェースにマッピングされ、前記第1命令がデータの読み出しまたは書き込みを行うロード/保存アドレス空間(LSAS)にアドレス指定されたデータ、前記プロセッサのレジスター、または、前記プロセッサによって保存またはアクセスされた複数のセキュリティルックアップ項目(SLE)のうちの1つであり、前記各SLEが、前記LSASまたは命令フェッチアドレス空間(IFAS)の領域を記録して、前記プロセッサが前記IFASから前記第1命令および前記第2命令をフェッチするとともに、前記各SLEが、さらに、前記領域に関連するSAを記録する請求項2に記載の安全保護方法。
  5. 前記第1命令のフェッチアドレスをカバーする領域を有する前記SLEの1つから前記第1命令の前記ISAを取得するステップと、
    前記第2命令のフェッチアドレスをカバーする領域を有する前記SLEの1つから前記第2命令の前記ISAを取得するステップと、
    前記データのアドレスをカバーする領域を有する前記SLEの1つから前記LSASにおいてアドレス指定された前記データの前記SAを取得するステップと
    をさらに含む請求項4に記載の安全保護方法。
  6. ホストデバッグモードにおいて前記プロセッサによってフェッチされた命令が、前記SLEのうちの特殊SLEの前記SAを用いてタグ付けされ、前記特殊SLEが、前記ホストデバッグモードに単独で使用される請求項4に記載の安全保護方法。
  7. 前記プロセッサが、複数のSLEを保存またはアクセスし、前記各SLEが、SAを含むとともに、前記各SLEが、インデックスに関連し、前記安全保護方法が、さらに、
    前記OEのインデックスと一致するインデックスを有する前記SLEのうちの1つから前記OEの前記SAを取得するステップと、
    前記操作リソースのインデックスと一致するインデックスを有する前記SLEのうちの1つから前記操作リソースの前記SAを取得するステップと、
    前記第1命令のインデックスと一致するインデックスを有する前記SLEのうちの1つから前記第1命令の前記コードSAを取得するステップと
    を含み、前記第1命令の前記インデックスが、前記第1命令の命令コード、前記第1命令のオペランドおよび前記第1命令の前記ISAに関連するグループIDのうちの少なくとも1つから引き出される請求項2に記載の安全保護方法。
  8. 前記セキュリティ例外に応答して、前記プロセッサをリセットする、または、前記プロセッサを停止する、または、トラップを送信して前記プロセッサが前記セキュリティ例外を処理するステップをさらに含む請求項1に記載の安全保護方法。
  9. IFASから第1命令をフェッチする命令フェッチユニットと、
    前記命令フェッチユニットに連結され、前記第1命令を実行する命令操作ユニットと、
    前記命令フェッチユニットおよび前記命令操作ユニットに連結され、前記第1命令を実行する前に、前記命令フェッチユニットが前記第1命令をフェッチした時の副作用として、または、前記第1命令を実行した後に、前記命令操作ユニットが前記第1命令を実行した時の副作用として、あるいは、前記第1命令の監視結果として、あるいは、プロセッサの外部入力に応答して、OEを生成するOE発生器と、
    前記命令フェッチユニット、前記命令操作ユニットおよび前記OE発生器に連結され、前記命令操作ユニットが前記第1命令のISAおよび前記OEのSAに基づいて前記第1命令を実行する前または後に第1セキュリティチェックを行うセキュリティチェックユニットと
    を含み、前記OE発生器が、前記第1セキュリティチェックが失敗した時に、前記OEを無視する、または、前記OEを延期する、または、セキュリティ例外を起こすプロセッサ。
  10. 前記命令フェッチユニットに連結され、前記第1命令および第2命令のフェッチアドレスを生成し、前記命令フェッチユニットが、前記命令フェッチユニットが前記第1命令をフェッチした後すぐに前記第2命令をフェッチする命令フェッチアドレス発生器と、
    前記命令フェッチユニットおよび前記命令操作ユニットに連結され、前記第1命令によってアクセスされた操作リソースに関連するデータアドレスまたはインデックスを生成し、前記セキュリティチェックユニットが、さらに、第2セキュリティチェック、第3セキュリティチェックおよび/または第4セキュリティチェックを行う操作リソースアドレス発生器と
    をさらに含み、前記第2セキュリティチェックが、前記第1命令の前記ISAおよび前記データアドレスまたは前記インデックスに基づいて得られる前記操作リソースのSAに基づいて行われ、
    前記第3セキュリティチェックが、前記第1命令がセキュリティサービス命令である時に行われるとともに、前記第3セキュリティチェックが、前記第1命令の前記ISAおよびコードSAに基づいて行われ、
    前記第4セキュリティチェックが、前記第1命令の前記ISAおよび前記第2命令のISAに基づいて行われ、
    前記セキュリティチェックユニットが、前記第2セキュリティチェック、前記第3セキュリティチェックおよび前記第4セキュリティチェックのうちのいずれかが失敗した時に、前記セキュリティ例外を起こす請求項9に記載のプロセッサ。
  11. 前記第1命令の前記ISAが前記OEの前記SAよりも安全である時、前記第1セキュリティチェックが失敗し、
    前記第1命令の前記ISAが前記操作リソースの前記SAよりも安全ではない時、または、前記第1命令の前記ISAが前記操作リソースの前記SAと同等に安全であり、且つ前記第1命令の前記ISAに関連するグループIDが前記操作リソースの前記SAに関連するグループIDと異なる時に、前記第2セキュリティチェックが失敗し、
    前記第1命令の前記ISAが前記第1命令の前記コードSAよりも安全ではない時に、前記第3セキュリティチェックが失敗し、
    前記第1命令の前記ISAが前記第2命令の前記ISAよりも安全ではない時、または、前記第1命令の前記ISAが前記第2命令の前記ISAと同等に安全であり、且つ前記第1命令の前記ISAに関連する前記グループIDが前記第2命令の前記ISAに関連するグループIDと異なる時に、前記第4セキュリティチェックが失敗する請求項10に記載のプロセッサ。
  12. 前記操作リソースが、前記プロセッサの内部記憶装置または外部インターフェースにマッピングされ、前記第1命令がデータの読み出しまたは書き込みを行うLSASにアドレス指定されたデータ、前記プロセッサのレジスター、または複数のSLEのうちの1つであり、前記プロセッサが、さらに、
    前記命令フェッチアドレス発生器、前記命令フェッチユニット、前記操作リソースアドレス発生器、前記OE発生器および前記セキュリティチェックユニットに連結され、前記複数のSLEを提供するSLEユニットを含み、前記各SLEが、前記LSASまたは前記IFASの領域を記録して、前記プロセッサが前記IFASから前記第1命令および前記第2命令をフェッチするとともに、前記各SLEが、さらに、前記領域に関連するSAを記録する請求項10に記載のプロセッサ。
  13. 前記命令フェッチユニットが、前記第1命令の前記フェッチアドレスをカバーする領域を有する前記SLEの1つから前記第1命令の前記ISAを取得し、前記命令フェッチユニットが、前記第2命令の前記フェッチアドレスをカバーする領域を有する前記SLEの1つから前記第2命令の前記ISAを取得し、前記セキュリティチェックユニットが、前記データのアドレスをカバーする領域を有する前記SLEの1つから前記LSASにおいてアドレス指定された前記データの前記SAを取得する請求項12に記載のプロセッサ。
  14. ホストデバッグモードにおいて前記命令フェッチユニットによってフェッチされた命令が、前記SLEのうちの特殊SLEの前記SAを用いてタグ付けされ、前記特殊SLEが、前記ホストデバッグモードに単独で使用される請求項12に記載のプロセッサ。
  15. 前記命令フェッチアドレス発生器、前記命令フェッチユニット、前記操作リソースアドレス発生器、前記OE発生器および前記セキュリティチェックユニットに連結され、複数のSLEを提供するSLEユニットをさらに含み、前記各SLEが、SAを含むとともに、前記各SLEが、インデックスに関連し、前記セキュリティチェックユニットが、前記OEのインデックスと一致するインデックスを有する前記SLEのうちの1つから前記OEの前記SAを取得し、および、前記操作リソースのインデックスと一致するインデックスを有する前記SLEのうちの1つから前記操作リソースの前記SAを取得し、および、前記第1命令のインデックスと一致するインデックスを有する前記SLEのうちの1つから前記第1命令の前記コードSAを取得し、前記第1命令の前記インデックスが、前記第1命令の命令コード、前記第1命令のオペランドおよび前記第1命令の前記ISAに関連するグループIDのうちの少なくとも1つから引き出される請求項10に記載のプロセッサ。
  16. 前記セキュリティチェックユニットに連結され、前記セキュリティ例外に応答して、前記プロセッサをリセットする、または、前記プロセッサを停止する、または、トラップを送信して前記プロセッサが前記セキュリティ例外を処理するセキュリティ例外ユニット
    をさらに含む請求項9に記載のプロセッサ。
  17. プロセッサによって実行される安全保護方法であって、
    第1命令のISAおよびOEのSAに基づいて、前記第1命令を実行する前または後に第1セキュリティチェックを行い、前記OEが、前記第1命令を実行する前に、前記プロセッサが前記第1命令をフェッチした時の副作用として生成される、または、前記第1命令を実行した後に、前記プロセッサが前記第1命令を実行した時の副作用として生成される、または、前記第1命令の監視結果として生成される、または、前記プロセッサの外部入力に応答して生成されるステップと、
    前記第1セキュリティチェックが失敗した時に、前記OEを無視する、または、前記OEを延期する、または、セキュリティ例外を起こすステップと、
    前記第1命令がセキュリティサービス命令である時に、前記第1命令の前記ISAおよびコードSAに基づいて、第2セキュリティチェックを行うステップと、
    前記第2セキュリティチェックが失敗した時に、前記セキュリティ例外を起こすステップと
    を含む安全保護方法。
  18. IFASから第1命令をフェッチする命令フェッチユニットと、
    前記命令フェッチユニットに連結され、前記第1命令を実行する命令操作ユニットと、
    前記命令フェッチユニットおよび前記命令操作ユニットに連結され、前記第1命令を実行する前に、前記命令フェッチユニットが前記第1命令をフェッチした時の副作用として、または、前記第1命令を実行した後に、前記命令操作ユニットが前記第1命令を実行した時の副作用として、あるいは、前記第1命令の監視結果として、あるいは、プロセッサの外部入力に応答して、OEを生成するOE発生器と、
    前記命令フェッチユニット、前記命令操作ユニットおよび前記OE発生器に連結され、前記命令操作ユニットが前記第1命令のISAおよび前記OEのSAに基づいて前記第1命令を実行する前または後に第1セキュリティチェックを行うとともに、前記第1命令がセキュリティサービス命令である時に前記第1命令の前記ISAおよびコードSAに基づいて第2セキュリティチェックを行うセキュリティチェックユニットと
    を含み、前記OE発生器が、前記第1セキュリティチェックが失敗した時に、前記OEを無視する、または、前記OEを延期する、または、セキュリティ例外を起こし、前記セキュリティチェックユニットが、前記第2セキュリティチェックが失敗した時に、前記セキュリティ例外を起こすプロセッサ。
JP2014139536A 2013-07-09 2014-07-07 安全保護方法およびプロセッサ Active JP5841199B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/938,218 US10061940B2 (en) 2013-07-09 2013-07-09 Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
US13/938,218 2013-07-09

Publications (2)

Publication Number Publication Date
JP2015018552A JP2015018552A (ja) 2015-01-29
JP5841199B2 true JP5841199B2 (ja) 2016-01-13

Family

ID=52256667

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014139536A Active JP5841199B2 (ja) 2013-07-09 2014-07-07 安全保護方法およびプロセッサ

Country Status (4)

Country Link
US (1) US10061940B2 (ja)
JP (1) JP5841199B2 (ja)
CN (1) CN104281805B (ja)
TW (1) TWI515597B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2530050B (en) * 2014-09-10 2021-07-21 Advanced Risc Mach Ltd Debugging in a data processing apparatus
CN106997500A (zh) * 2016-01-22 2017-08-01 阿里巴巴集团控股有限公司 产品便捷检验方法及装置
US10684896B2 (en) 2017-02-20 2020-06-16 Tsinghua University Method for processing asynchronous event by checking device and checking device
US10642981B2 (en) 2017-02-20 2020-05-05 Wuxi Research Institute Of Applied Technologies Tsinghua University Checking method, checking device and checking system for processor
US10572671B2 (en) * 2017-02-20 2020-02-25 Tsinghua University Checking method, checking system and checking device for processor security
US10657022B2 (en) 2017-02-20 2020-05-19 Tsinghua University Input and output recording device and method, CPU and data read and write operation method thereof

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787031A (en) * 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
US4962533A (en) * 1989-02-17 1990-10-09 Texas Instrument Incorporated Data protection for computer systems
US5845129A (en) 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US8051301B2 (en) * 2001-11-13 2011-11-01 Advanced Micro Devices, Inc. Memory management system and method providing linear address based memory access security
JP4302641B2 (ja) 2002-11-18 2009-07-29 エイアールエム リミテッド デバイスによるメモリへのアクセスの制御
US7171539B2 (en) 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
KR100941104B1 (ko) 2002-11-18 2010-02-10 에이알엠 리미티드 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
WO2006057316A1 (ja) * 2004-11-26 2006-06-01 Matsushita Electric Industrial Co., Ltd. プロセッサ、セキュア処理システム
US7068545B1 (en) 2005-01-04 2006-06-27 Arm Limited Data processing apparatus having memory protection unit
US7673345B2 (en) 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US8572329B2 (en) 2005-10-04 2013-10-29 Arm Limited Multi-region default memory map
JP4939387B2 (ja) 2007-12-06 2012-05-23 ルネサスエレクトロニクス株式会社 データ処理装置及びアドレス空間保護方法
GB2460393B (en) 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US8301856B2 (en) * 2010-02-16 2012-10-30 Arm Limited Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag
GB2483907A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
US20120265904A1 (en) * 2011-06-23 2012-10-18 Renesas Electronics Corporation Processor system

Also Published As

Publication number Publication date
JP2015018552A (ja) 2015-01-29
US10061940B2 (en) 2018-08-28
CN104281805B (zh) 2017-09-15
TW201502843A (zh) 2015-01-16
US20150020211A1 (en) 2015-01-15
CN104281805A (zh) 2015-01-14
TWI515597B (zh) 2016-01-01

Similar Documents

Publication Publication Date Title
JP5841199B2 (ja) 安全保護方法およびプロセッサ
US11875180B2 (en) Systems and methods for stalling host processor
RU2686552C2 (ru) Системы и способы предоставления результата текущей команды процессора при выходе из виртуальной машины
Hicks et al. Specs: A lightweight runtime mechanism for protecting software from security-critical processor bugs
JP6176637B2 (ja) トランザクション環境内でのプログラム・イベント記録
JP6185487B2 (ja) ドメイン間で切り替わる際のセキュアなデータの非セキュアなアクセスから隔離された状態での維持
US8261047B2 (en) Qualification of conditional debug instructions based on address
US11797398B2 (en) Systems and methods for checking safety properties
US20150106588A1 (en) Computer Processor Employing Hardware-Based Pointer Processing
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
JP5905904B2 (ja) デバッグ例外生成の制御
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
US20210055954A1 (en) Systems and methods for post cache interlocking
CN111133418B (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
US20090271583A1 (en) Monitoring transactions in a data processing apparatus
TW201939272A (zh) 帶鏈結分支指令的分支目標變體
KR20210034612A (ko) 보호 태그 손실 처리

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150930

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151112

R150 Certificate of patent or registration of utility model

Ref document number: 5841199

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250