JP2017010347A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2017010347A JP2017010347A JP2015126277A JP2015126277A JP2017010347A JP 2017010347 A JP2017010347 A JP 2017010347A JP 2015126277 A JP2015126277 A JP 2015126277A JP 2015126277 A JP2015126277 A JP 2015126277A JP 2017010347 A JP2017010347 A JP 2017010347A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- code
- state
- instruction
- area
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
【課題】セキュリティの強化を可能とする情報処理装置を提供すること。
【解決手段】実施形態によれば、情報処理装置は、プロセッサ11およびメモリ13を有する。プロセッサ11は、第1の状態または第2の状態に切り換えて動作する。メモリ13は、第1領域であるセキュア領域14および第2領域であるノンセキュア領域15を備える。第2領域には第1のプログラムコードが書き込まれる。第1のプログラムコードは、オペレーションシステムが提供する機能の呼び出しがあったときに実行される。第1領域には第2のプログラムコードであるNS側例外ハンドラ書き換えコード132が書き込まれる。プロセッサ11は、第2のプログラムコードを実行することで、第1のプログラムコードに含まれる第1の命令を第2の命令に置き換える。第2の命令は、第2の状態と第1の状態とを切り換える命令である。
【選択図】図1
【解決手段】実施形態によれば、情報処理装置は、プロセッサ11およびメモリ13を有する。プロセッサ11は、第1の状態または第2の状態に切り換えて動作する。メモリ13は、第1領域であるセキュア領域14および第2領域であるノンセキュア領域15を備える。第2領域には第1のプログラムコードが書き込まれる。第1のプログラムコードは、オペレーションシステムが提供する機能の呼び出しがあったときに実行される。第1領域には第2のプログラムコードであるNS側例外ハンドラ書き換えコード132が書き込まれる。プロセッサ11は、第2のプログラムコードを実行することで、第1のプログラムコードに含まれる第1の命令を第2の命令に置き換える。第2の命令は、第2の状態と第1の状態とを切り換える命令である。
【選択図】図1
Description
本実施形態は、情報処理装置に関する。
従来、情報処理装置に関して、2以上のセキュリティ状態を切り換えてメモリへのアクセスを制御する技術が知られている。情報処理装置は、不正なプログラム実行を防ぐためにセキュリティの強化が求められている。
一つの実施形態は、セキュリティの強化を可能とする情報処理装置を提供することを目的とする。
一つの実施形態によれば、情報処理装置は、プロセッサおよびメモリを有する。プロセッサは、第1の状態または第2の状態に切り換えて動作する。第2の状態は、第1の状態に対し低いセキュリティレベルを備える。メモリは、第1領域および第2領域を備える。第1領域は、プロセッサが第1の状態でアクセスする領域である。第2領域は、プロセッサが第2の状態でアクセスする領域である。第2領域には第1のプログラムコードが書き込まれる。第1のプログラムコードは、オペレーションシステムが提供する機能の呼び出しがあったときに実行される。第1領域には第2のプログラムコードが書き込まれる。第2のプログラムコードは、第1のプログラムコードの書き換えのためのプログラムコードである。プロセッサは、第2のプログラムコードを実行することで、第1のプログラムコードに含まれる第1の命令を第2の命令に置き換える。第2の命令は、第2の状態と第1の状態とを切り換える命令である。
以下に添付図面を参照して、実施形態にかかる情報処理装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態の情報処理装置の構成を示すブロック図である。情報処理装置は、プロセッサ11、バス12およびメモリ13を備える。プロセッサ11およびメモリ13は、バス12を介して接続されている。図1には、情報処理装置のハードウェア構成と、ハードウェア構成に保持あるいは書き込まれる各種プログラムコードおよび各種データとを示している。
図1は、第1の実施形態の情報処理装置の構成を示すブロック図である。情報処理装置は、プロセッサ11、バス12およびメモリ13を備える。プロセッサ11およびメモリ13は、バス12を介して接続されている。図1には、情報処理装置のハードウェア構成と、ハードウェア構成に保持あるいは書き込まれる各種プログラムコードおよび各種データとを示している。
プロセッサ11は、メモリ13からロードした命令の実行およびデータ処理を逐次的に行う。プロセッサ11は、命令の実行およびデータ処理の結果をメモリ13へ書き込む。
プロセッサ11は、演算装置110、アドレス変換装置113およびアドレス設定レジスタ114を備える。演算装置110は、命令の実行およびデータ処理のための演算を実施する。アドレス変換装置113は、仮想アドレスおよび物理アドレスの間のアドレス変換を実施する。
プロセッサ11は、各種レジスタを備える。各種レジスタは、プログラムの実行において使用されるデータと、プログラムカウンタとを保持する。プログラムカウンタは、次に実行すべき命令が格納されているメモリアドレスを示す値とする。アドレス設定レジスタ114は、NS側例外ハンドラコード137のアドレスを保持する。
プロセッサ11は、セキュリティレベルが異なる2以上のセキュリティ状態を選択的に切り換えて動作する。第1の状態であるセキュア状態は、最も高いセキュリティレベルを備える。第2の状態であるノンセキュア状態は、最も低いセキュリティレベルを備える。プロセッサ11は、セキュア状態およびノンセキュア状態の双方にて、互いにプログラムを分離して実行する機能を備える。
なお、各実施形態にて、セキュア状態に関するものであることを「セキュア側(S側)」、ノンセキュア状態に関するものであることを「ノンセキュア側(NS側)」、と表す。
プロセッサ11は、動作の制約に違いを持たせた2以上のモードへ、動作モードを遷移させる。第1のモードであるスーパーバイザモードは、セキュリティ状態に応じてシステムリソースへ制限無くアクセスできる動作モードである。情報処理装置は、スーパーバイザモードにて、オペレーティングシステム(OS)本体を動作させる。
第2のモードであるユーザモードは、システムリソースへのアクセスが制限される動作モードである。ユーザモードは、スーパーバイザモードに対し動作が制約されている。情報処理装置は、ユーザモードにて、アプリケーションを動作させる。
第3のモードであるセキュアモニタモードは、セキュア状態とノンセキュア状態との切り換えのための動作が認められている動作モードである。セキュア状態とノンセキュア状態との間で状態が切り換えられるとき、プロセッサ11は、動作モードをセキュアモニタモードとする。セキュアモニタモードは、セキュア状態であるときに限り採り得る動作モードである。プロセッサ11は、本実施形態で説明するモード以外の動作モードへ遷移可能としても良い。
各種レジスタは、状態情報111、モード情報112、セキュアモニタコール(SMC)命令115およびスーパーバイザコール(SVC)命令116を保持する。状態情報111は、プロセッサ11の状態がセキュア状態およびノンセキュア状態のいずれであるかを表す。モード情報112は、プロセッサ11の動作モードがユーザモードおよびスーパーバイザモードのいずれであるかを表す。
SMC命令115およびSVC命令116は、プロセッサ11に実装された命令セットに含まれる。SMC命令115は、ノンセキュア状態におけるスーパーバイザモードと、セキュア状態におけるセキュアモニタモードとにおける、動作モードの遷移を指示する。SVC命令116は、ノンセキュア状態におけるユーザモードとスーパーバイザモードとにおける動作モードの遷移を指示する。
メモリ13は、汎用の主記憶装置である。メモリ13は、DRAM,SRAM,NAND,MRAMなどのいずれであっても良い。メモリ13は、セキュア領域14およびノンセキュア領域15を含む。
第1領域であるセキュア領域14は、セキュア状態のプロセッサ11がアクセスするメモリ領域である。第2領域であるノンセキュア領域15は、ノンセキュア状態のプロセッサ11がアクセスするメモリ領域である。ノンセキュア状態のプロセッサ11は、セキュア領域14へのアクセスが制限される。
各種プログラムコードは、情報処理装置の起動により外部記憶装置(図示省略)からメモリ13に書き込まれ、展開される。プログラムコードである、S側例外ハンドラコード131、NS側例外ハンドラ書き換えコード132、NS側命令解釈コード133およびNS側SVCチェックコード134は、セキュア領域14に配置される。NS側戻り先データ135は、セキュア領域14に配置される。
S側例外ハンドラコード131は、例外が発生したときにセキュア状態のプロセッサ11にて実行されるプログラムコードである。第2のプログラムコードであるNS側例外ハンドラ書き換えコード132は、スーパーバイザコールハンドラの書き換えのためのプログラムコードである。スーパーバイザコールハンドラは、第1のプログラムコードであるNS側例外ハンドラコード137に含まれる。
NS側命令解釈コード133は、NS側例外ハンドラコード137に含まれる命令を解釈するためのプログラムコードである。NS側SVCチェックコード134は、スーパーバイザコールを利用してプログラムからOSへ要求されている処理の内容をチェックするためのプログラムコードである。スーパーバイザコールは、OSのカーネルが提供する機能、当該機能を利用するために呼び出される命令および情報である。
ユーザコードおよびスーパーバイザコードは、ノンセキュア領域15に配置される。ユーザコードは、OS上にて実行されるユーザモードのプログラムコードである。スーパーバイザコードは、OS上にて実行されるスーパーバイザモードのプログラムコードである。
情報処理装置は、ユーザモードでのプログラム実行の過程において、必要に応じて、スーパーバイザコールを呼び出す。情報処理装置は、所望された機能による処理がスーパーバイザモードにて実施されると、それまで実施していた元の処理に戻る。
ユーザコードは、SVC呼び出しコード136を含む。スーパーバイザコードは、NS側例外ハンドラコード137およびSVC処理コード138を含む。SVC呼び出しコード136は、スーパーバイザコールを呼び出すためのコードである。
NS側例外ハンドラコード137は、例外が発生したときにノンセキュア状態のプロセッサ11にて実行されるプログラムコードである。SVC処理コード138は、スーパーバイザコールを利用する処理を実施するためのプログラムコードである。
情報処理装置は、ノンセキュア状態で動作するアプリケーションが、OSの機能を利用する処理を要求することがある。本実施形態の情報処理装置は、スーパーバイザコール呼び出しの正当性を、セキュア状態で動作するプログラムにより検証する。情報処理装置は、ノンセキュア状態からセキュア状態への処理の切り換えの準備として、NS側例外ハンドラコード137を書き換える。情報処理装置は、検証のあとに元の動作に戻るために、所定のデータを退避させる。
図2は、NS側例外ハンドラコードの書き換えのための処理を説明するフローチャートである。OSの通常の起動時における処理の1つとして、プロセッサ11は、ノンセキュア状態にて、NS側例外ハンドラコード137の仮想アドレスを設定する(S1)。
アドレス設定レジスタ114は、設定された仮想アドレスを保持する。仮想アドレスは、ノンセキュア状態のプロセッサ11が認識可能なNS側仮想アドレスである。プロセッサ11は、起動時の処理を終えると、ノンセキュア状態でのプログラム実行を開始する。
ノンセキュア状態でのプログラム実行の過程において、セキュア状態での処理を要するときに、プロセッサ11は、セキュアモニタコール呼び出しに対してSMC命令115を実行する。プロセッサ11は、ノンセキュア状態からセキュア状態へ切り換える(S2)。セキュア状態にて、プロセッサ11は、セキュア領域14からS側例外ハンドラコード131を呼び出す。
S側例外ハンドラコード131は、NS側例外ハンドラ書き換えコード132を呼び出すための命令を含む。プロセッサ11は、呼び出されたS側例外ハンドラコード131を実行することで、セキュア領域14からNS側例外ハンドラ書き換えコード132を呼び出す。プロセッサ11は、NS側例外ハンドラ書き換えコード132の実行により、S11からS19までの処理を行う。
プロセッサ11は、NS側例外ハンドラコード137のNS側仮想アドレスをアドレス設定レジスタ114から読み出す(S11)。アドレス変換装置113は、読み出されたNS側仮想アドレスを、ノンセキュア状態における変換ルールにしたがって、物理アドレスへ変換する(S12)。アドレス変換装置113は、NS側仮想アドレスおよび物理アドレスのマッピングを格納するNS側ページテーブルに基づいて、NS側仮想アドレスから物理アドレスへの変換を行っても良い。
アドレス変換装置113は、物理アドレスを、セキュア状態における変換ルールにしたがって、S側仮想アドレス空間へマッピングする(S13)。アドレス変換装置113は、S側仮想アドレスおよび物理アドレスのマッピングを格納するS側ページテーブルを書き換えても良い。
S12およびS13により、プロセッサ11は、セキュア状態において、NS側例外ハンドラコード137が格納されている領域からのデータの読み出しと、当該領域へのデータの書き込みとが可能となる。プロセッサ11は、NS側例外ハンドラコード137から、スーパーバイザコールハンドラにある命令を読み出す(S14)。スーパーバイザコールハンドラは、スーパーバイザコールの呼び出しがあったときに起動されるプログラムコードである。
図3は、NS側例外ハンドラコードの一例を示す図である。NS側例外ハンドラコード137は、例外の種類ごとに1つずつの命令が書かれている部分と、それ以外の部分とからなる。この例にて、アドレス「0xffff0008」のラベル「svc_handler:」は、スーパーバイザコールハンドラを示す。
なお、アドレス設定レジスタ114は、NS側例外ハンドラコード137のNS側仮想アドレス「0xffff0000」を保持している。この例の場合、プロセッサ11では、NS側例外ハンドラコード137のNS側仮想アドレスにオフセット値「8」を加えて得られるアドレスに「svc_handler:」が格納されていることが決められている。
スーパーバイザコールハンドラには、コードおよびデータとして、「ldc pc,[pc,#0x400]」と記述されている。かかる記述は、この命令のアドレス「0xffff0008」に「0x400」を加えたメモリアドレス「0xffff0408」に記述されているデータを、プログラムカウンタ(PC)にロードする旨の命令を表す。かかる命令は、スーパーバイザコールハンドラに含まれる第1の命令である。第1の命令が実行された場合、プロセッサ11の処理は、アドレス「0xffff0408」に記述されている「svc_handler_main」へジャンプする。
プロセッサ11は、図2のS14にて読み出された命令の内容を、NS側命令解釈コード133に基づいて解釈する。プロセッサ11は、解釈に基づいて、処理の戻り先となるアドレスを取得する(S15)。図3に示す例では、プロセッサ11は、「ldc pc,[pc,#0x400]」の内容に基づいて、戻り先アドレスを示すデータである「svc_handler_main」を取得する。
プロセッサ11は、取得されたアドレスを、NS側戻り先データ135として、セキュア領域14に格納する(S16)。このように、プロセッサ11は、第1の命令の解釈によって得られたデータをセキュア領域14に格納する。プロセッサ11は、戻り先アドレスを示す当該データを、メモリ13上の所定の領域に退避させる。
プロセッサ11は、NS側例外ハンドラコード137のうち、スーパーバイザコールハンドラにある第1の命令を、第2の命令であるSMC命令に置き換える(S17)。図3に示す例の場合、プロセッサ11は、アドレス「0xffff0008」の命令「ldc pc,[pc,#0x400]」を、SMC命令115に置き換える。
S17における命令の置き換えの後に、プロセッサ11は、S13にて実施されたマッピングを解除する(S18)。プロセッサ11は、SMC命令115を実行する。プロセッサ11は、セキュア状態からノンセキュア状態へ切り換える(S19)。プロセッサ11は、ノンセキュア状態でのプログラム実行を、S2において実行されたSMC命令115の次の命令から再開させる(S3)。
次に、NS側例外ハンドラコード137が書き換えられた以降において、スーパーバイザコール呼び出しがあった場合のトラップ動作について説明する。
図4は、第1の実施形態において、スーパーバイザコールが呼び出された場合に実施される処理を説明するフローチャートである。ここで説明する処理は、ユーザモードにおけるプログラム実行の過程にて、スーパーバイザコールが呼び出された場合の処理とする。
図4に示す処理は、ユーザコードに含まれるSVC呼び出しコード136の実行により開始される。SVC呼び出しコード136が実行されることで、プロセッサ11は、スーパーバイザコールの引数を所定のレジスタに設定する(S21)。
プロセッサ11は、SVC命令116を実行する(S22)。プロセッサ11は、ユーザモードからスーパーバイザモードへ切り換える。プロセッサ11で実行されるコードは、ユーザコードからスーパーバイザコールハンドラへジャンプする(S31)。
かかるジャンプまでの手順は、通常のOSで実施される標準的なスーパーバイザコール呼び出しの方法に従っている。スーパーバイザコールが呼び出された場合の標準的な処理としては、スーパーバイザコールにより要求された処理がスーパーバイザモードにて実施される。
第1の実施形態では、プロセッサ11は、書き換えられたNS側例外ハンドラコード137にしたがい、スーパーバイザコールハンドラにあるSMC命令を実行する。プロセッサ11は、ノンセキュア状態からセキュア状態へ切り換える(S32)。これと同時に、プロセッサ11は、スーパーバイザモードからセキュアモニタモードへ遷移させる。
プロセッサ11で実行されるコードは、NS側例外ハンドラコード137から、S側例外ハンドラコード131へジャンプする。すなわち、情報処理装置は、SVC処理コード138への遷移による処理に代えて、S側例外ハンドラコード131による処理を実施する。
プロセッサ11は、S側例外ハンドラコード131の処理を行う。プロセッサ11は、S32で実行されたSMC命令が、NS側例外ハンドラコード137に含まれるSMC命令であることを確認する(S41)。
プロセッサ11は、アドレス設定レジスタ114に格納されているアドレスに所定のオフセット値を加えた結果と、S側例外ハンドラコード131へジャンプする元の命令のアドレスとを比較しても良い。双方が一致する場合、プロセッサ11は、実行されたSMC命令が、NS側例外ハンドラコード137のSMC命令であると判定する。図3に示す例の場合、プロセッサ11は、アドレス「0xffff0000」にオフセット値「8」を加えた結果を参照する。
実行されたSMC命令が、NS側例外ハンドラコード137のSMC命令であることが確認された場合、プロセッサ11は、S42以降の処理を行う。かかる確認がなされなかった場合、プロセッサ11は、実行されたSMC命令が、NS側例外ハンドラコード137のSMC命令以外によるものと判定する。プロセッサ11は、S42以降の処理を中止する。
S41での確認を経て、プロセッサ11は、セキュアモニタモードにおいてスーパーバイザコールハンドラを実行する。プロセッサ11は、レジスタに設定された引数を読み出す(S21)。プロセッサ11は、NS側SVCチェックコード134を実行して、読み出された引数をチェックする(S42)。
プロセッサ11は、読み出された引数に基づいた処理を実施する。例えば、プロセッサ11は、読み出された引数に基づいて、引数を書き換える。プロセッサ11は、読み出された引数に基づいた処理の一例として、引数を記録しても良い。プロセッサ11は、読み出された引数に基づいて、いずれの処理を行うこととしても良い。
プロセッサ11は、読み出された引数に基づいた処理の一例として、S21においてレジスタに設定された引数のうちの一つであるSVC呼び出しコード136に含まれるSVC番号を書き換えても良い。SVC番号は、スーパーバイザコールを利用してユーザコードから要求されている処理の内容を示す。プロセッサ11は、例えば、SVC呼び出しコード136に含まれるSVC番号が特定の値である場合に、当該特定の値から別の値へSVC番号を書き換える。プロセッサ11は、書き換え後のSVC番号の値を、レジスタに格納する。
SVC番号の書き換えの具体例の1つとしては、プロセッサ11は、セキュリティ上実行を防止すべき処理を要求する特定の値を、SVC番号として本来存在しない値へ置き換える。これにより、プロセッサ11は、スーパーバイザコールを強制的にエラーにさせる。情報処理装置は、セキュリティ上不都合な処理の実行を阻止することができる。
プロセッサ11は、読み出された引数に基づいた処理の一例として、SVC番号の値に関わらず引数の記録を行っても良い。情報処理装置は、引数の記録を、スーパーバイザコール呼び出しの正当性の検証に利用しても良い。この場合も、情報処理装置は、セキュリティ上不都合な処理の実行を回避できる。
スーパーバイザコール呼び出しの正当性に関する検証は、NS側SVCチェックコード134の実行を経て、セキュア状態で動作するプログラムのいずれかによって実施されることとしても良い。当該検証は、NS側SVCチェックコード134の実行による処理に含まれるものであっても良い。
プロセッサ11は、セキュア領域14からNS側戻り先データ135を読み出す(S43)。NS側戻り先データ135は、S16にて退避させた戻り先アドレスのデータである。プロセッサ11は、読み出されたNS側戻り先データ135が示すアドレスを、スーパーバイザモードにおけるNS側例外ハンドラコード137の実行による処理への戻り先のアドレスとして設定する。
プロセッサ11は、SMC命令115を実行する。プロセッサ11は、セキュア状態からノンセキュア状態へ切り換える(S44)。これと同時に、プロセッサ11は、セキュアモニタモードからスーパーバイザモードへ遷移する。
プロセッサ11の処理は、NS側例外ハンドラコード137のうち、S43にて設定されたアドレスのコードに復帰する(S33)。これにより、プロセッサ11は、セキュア状態から、ノンセキュア状態のスーパーバイザコールハンドラによる処理に戻る。
プロセッサ11は、復帰先のアドレスのコードにしたがい、SVC処理コード138を読み出す。プロセッサ11は、読み出されたSVC処理コード138により、スーパーバイザコールの処理を実施する(S34)。プロセッサ11は、レジスタから読み出された引数に基づいた処理を実施する。S42においてSVC番号の値の書き換えがあった場合、プロセッサ11は、書き換えられた値にしたがった処理を行う。
スーパーバイザコールの処理を終えると、プロセッサ11は、スーパーバイザモードからユーザモードへ切り換える。プロセッサ11は、ユーザモードでのプログラム実行を、S22において実行されたSVC命令116の次の命令から再開させる(S23)。
図5は、図4に示す処理におけるプログラムコードと処理の遷移との例を説明する図である。図5には、ユーザモード、スーパーバイザモード、およびセキュアモニタモードにて実行される各プログラムコードの例を示している。
セキュア状態におけるS17での処理により、スーパーバイザモードのプログラムコードのうち「svc_handler:」の命令「ldc pc,[pc,#0x400]」は、SMC命令である「smc #0」に置き換えられている。「P1」は、セキュア状態での命令の置き換えを表す。
ユーザモードでのプログラムコードの実行の過程「P2」において、SVC命令116である「svc #0」が実行される。これにより、ユーザモードのプログラムコードから、スーパーバイザコールハンドラ「svc_handler:」へ処理が遷移する(「P3」)。
「P1」により置き換えられた「smc #0」により、スーパーバイザモードにおけるハンドラ「svc_handler:」から、セキュアモニタモードにおけるスーパーバイザコールハンドラ「m_svc_handler:」へ処理が遷移する(「P4」)。
ハンドラ「m_svc_handler:」が起動されると、セキュアモニタモードにおけるスーパーバイザコールハンドラ「m_svc_handler_main:」へ処理が遷移する(「P5」)。
スーパーバイザコールハンドラ「m_svc_handler_main:」の実行の過程「P6」において、スーパーバイザコールの引数がチェックされる。引数は必要に応じて書き換えられる。
スーパーバイザコールハンドラ「m_svc_handler_main:」の実行の後、S側例外ハンドラコード131のうちのリターン命令が実行される。これにより、セキュアモニタモードのプログラムコードから、本来のハンドラ「svc_handler_main:」へ処理が遷移する(「P7」)。
カーネルによるハンドラ「svc_handler_main:」の実行の過程「P8」において、スーパーバイザモードにおけるスーパーバイザコールの処理が実施される。
ハンドラ「svc_handler_main:」の実行の後、NS側例外ハンドラコード137のうちのリターン命令が実行される。これにより、スーパーバイザモードのプログラムコードから、ユーザモードのプログラムコードへ処理が遷移する(「P9」)。ユーザモードでのプログラムコードの実行の過程「P10」は、「svc #0」の次の命令から続行される。
第1の実施形態によると、情報処理装置は、セキュア状態にてNS側例外ハンドラ書き換えコード132を実行する。情報処理装置は、スーパーバイザコールハンドラに含まれる第1の命令を、第2の命令であるSMC命令に置き換える。ノンセキュア状態でのプログラム実行においてスーパーバイザコール呼び出しがあった場合に、プロセッサ11は、置き換えられた命令にしたがい、ノンセキュア状態からセキュア状態へ状態を遷移させる。プロセッサ11の処理は、スーパーバイザモードにおけるNS側例外ハンドラコード137の実行から、セキュアモニタモードにおけるS側例外ハンドラコード131へ移る。情報処理装置は、セキュア状態の動作を経て、ノンセキュア状態の動作に戻る。
プロセッサ11は、セキュア状態にてスーパーバイザコールの内容をチェックすることで、ユーザモードにより要求される処理の内容を監視する。情報処理装置は、かかるチェックの結果に基づいた処理により、セキュリティ上不都合な動作を回避できる。プロセッサ11は、スーパーバイザコール呼び出しの正当性を、セキュア側のプログラムによって検証する。情報処理装置は、かかる検証を基に、正当性の低いスーパーバイザコール呼び出しを阻止できる。以上により、情報処理装置は、セキュリティを強化できるという効果を奏する。
(第2の実施形態)
図6は、第2の実施形態の情報処理装置の構成を示すブロック図である。第1の実施形態と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
図6は、第2の実施形態の情報処理装置の構成を示すブロック図である。第1の実施形態と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
第2の実施形態では、第1の実施形態におけるNS側SVCチェックコード134の処理に、NS側のメモリ領域を参照する処理が追加されている。
第2の実施形態において、NS側SVCチェックコード134は、NS側メモリ読み出しコード141を含む。NS側メモリ読み出しコード141は、NS側のメモリ領域からデータを読み出すためのプログラムコードである。NS側のメモリ領域は、ノンセキュア状態のプロセッサ11がアクセス可能であっても良く、ノンセキュア領域15を含む。
次に、unlinkのスーパーバイザコールの呼び出しをチェックする場合を例として、NS側のメモリ領域を参照する処理を説明する。unlinkは、汎用OSに実装されている命令の1つであって、指定された名前のファイルを削除する。
unlinkのスーパーバイザコールの引数には、ファイル名の文字列が格納されている領域のメモリアドレスを保持するポインタが含まれる。このメモリアドレスは、NS側仮想アドレスである。かかるスーパーバイザコールの呼び出しのチェックでは、引数で示されるメモリアドレスを参照することで、チェックに使用される文字列の情報が取得される。
図7は、NS側SVCチェックコードによりNS側メモリを参照する処理を説明するフローチャートである。図7に示す処理は、第1の実施形態のS42における、NS側SVCチェックコード134の実行による処理に含まれる。
第2の実施形態において、プロセッサ11の各種レジスタは、レジスタR0,R1を含む。レジスタR0は、SVC番号を保持する。レジスタR1は、引数であるポインタを保持する。なお、レジスタと、レジスタに保持される情報の種別との関係は、OSにおける呼び出し規約にしたがうものとする。
状態の切り換えの際に、レジスタR0,R1が保持する情報を所定のメモリ領域にいったん退避させ、切り換えの後にメモリ13からレジスタR0,R1へ情報を返すこととしても良い。
プロセッサ11は、スーパーバイザコールのSVC番号をレジスタR0から読み出す(S51)。レジスタR0の情報をメモリ領域に退避させている場合は、当該メモリ領域からSVC番号を読み出す。
プロセッサ11は、読み出されたSVC番号が、NR_unlink定数と一致することを確認する(S52)。NR_unlink定数は、unlinkのスーパーバイザコールであることを示す定数である。SVC番号がNR_unlink定数と一致することが確認された場合、プロセッサ11は、S53以降の処理を行う。
SVC番号がNR_unlink定数と一致しない場合、プロセッサ11は、呼び出しがあったスーパーバイザコールはunlink以外のスーパーバイザコールであると判定する。プロセッサ11は、SVC番号に応じて、S53以降の処理以外でチェックを行う。プロセッサ11は、NS側SVCチェックコード134による処理を終了しても良い。
S52での確認を経て、プロセッサ11は、レジスタR1から、ファイル名の文字列が格納されている領域のNS側仮想アドレスを得る(S53)。レジスタR1の情報をメモリ領域に退避させている場合は、当該メモリ領域からNS側仮想アドレスを読み出す。
アドレス変換装置113は、読み出されたNS側仮想アドレスを、ノンセキュア状態における変換ルールにしたがって、物理アドレスへ変換する(S54)。アドレス変換装置113は、NS側仮想アドレスおよび物理アドレスのマッピングを格納するNS側ページテーブルに基づいて、NS側仮想アドレスから物理アドレスへの変換を行っても良い。
アドレス変換装置113は、得られた物理アドレスを、セキュア状態における変換ルールにしたがって、S側仮想アドレス空間へマッピングする(S55)。アドレス変換装置113は、S側仮想アドレスおよび物理アドレスのマッピングを格納するS側ページテーブルを書き換えても良い。
S54およびS55により、プロセッサ11は、セキュア状態において、NS側のメモリ領域からのデータの読み出しと、当該領域へのデータの書き込みとが可能となる。プロセッサ11は、S側仮想アドレスへのアクセスにより、NS側のメモリ領域からファイル名の文字列を読み出す(S56)。プロセッサ11は、NS側メモリ読み出しコード141を実行することで、ファイル名の文字列が格納されている領域から情報を取得する。
プロセッサ11は、読み出された文字列が、削除可能なファイルの名前を示す文字列か否かを判定する(S57)。ファイルの名前と削除の可否との関係は、所定のメモリ領域にあらかじめ保持されている。プロセッサ11は、かかる関係を基に、削除の可否を判断する。
削除可能なファイルの名前を示す文字列ではないと判定した場合(S57、No)、プロセッサ11は、レジスタR1に、無効なポインタであることを示す「0」を代入する(S58)。レジスタR1の情報をメモリ領域に退避させている場合は、当該メモリ領域に格納されている値を「0」に置き換える。
削除可能なファイルの名前を示す文字列と判定した場合(S57、Yes)、プロセッサ11の処理はS59へ移行する。プロセッサ11は、ファイル名の文字列が格納されている領域のアドレスにつきS55で実施されたマッピングを解除する(S59)。以上により、NS側SVCチェックコード134によりNS側メモリを参照する処理を終了する。
第1の実施形態のS34と同様に、プロセッサ11は、スーパーバイザコールの処理を実施する。S58によるレジスタR1の値の置き換えが行われていない場合、プロセッサ11は、unlinkのスーパーバイザコールの処理を実施する。これにより、情報処理装置は、ファイル名の文字列から削除可能と判定されたファイルを削除する。
S58にてレジスタR1の値を置き換えている場合、引数が無効であるために、unlinkのスーパーバイザコールの処理は失敗となる。なお、S58では、プロセッサ11は、レジスタR1の値の置き換えに代えて、NS側メモリ領域に格納されているファイル名の文字列に、他の文字列を上書きすることとしても良い。文字列を、いずれのファイルの名前にも該当しない無効な文字列に置き換えた場合も、unlinkのスーパーバイザコールの処理は失敗となる。
NS側SVCチェックコード134によりNS側メモリを参照する処理は、unlinkのスーパーバイザコール以外のスーパーバイザコールの呼び出しをチェックする場合に適用しても良い。情報処理装置は、NS側のメモリ領域に格納されている情報に基づいて、スーパーバイザコールの実行の可否を判断することができる。
第2の実施形態によると、プロセッサ11は、スーパーバイザコールの引数によって示されるメモリ領域から情報を取得する。プロセッサ11は、メモリ領域から得られた情報を基に、スーパーバイザコールの内容をチェックする。情報処理装置は、チェック結果に基づいた処理により、セキュリティ上不都合な動作を回避できる。情報処理装置は、メモリ領域に格納されている情報をチェック対象に含めることで、より多くの情報を基に、スーパーバイザコールの実行の可否を判断できる。これにより、情報処理装置は、セキュリティをさらに強化できる。
(第3の実施形態)
図8は、第3の実施形態の情報処理装置の構成を示すブロック図である。第1の実施形態と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
図8は、第3の実施形態の情報処理装置の構成を示すブロック図である。第1の実施形態と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
第3の実施形態の情報処理装置は、第1の実施形態での処理により書き換えられたNS側例外ハンドラコード137について、ノンセキュア状態での動作による再度の書き換えを防止するための構成を備える。
第3の実施形態の情報処理装置は、バス12およびメモリ13の間に接続されたメモリ保護コントローラ16を備える。メモリ保護コントローラ16は、プロセッサ11のセキュリティ状態に応じて、メモリ13の領域に対するアクセスを制御する。
メモリ保護コントローラ16は、ノンセキュア状態におけるセキュア領域14へのアクセスを拒否し、セキュア状態におけるセキュア領域14へのアクセスを許可する。メモリ保護コントローラ16は、ノンセキュア状態およびセキュア状態のいずれにおいても、ノンセキュア領域15へのアクセスを許可する。メモリ保護コントローラ16は、かかる領域に対するアクセス制御のほかに、領域を指定することで個別に設定されたアクセス制限を実施する。
第3の実施形態において、NS側例外ハンドラ書き換えコード132は、メモリ保護コントローラ設定コード151を含む。メモリ保護コントローラ設定コード151は、メモリ13内の領域を指定して個別にアクセス制限を設定するためのプログラムコードである。
メモリ保護コントローラ16は、保護属性テーブル161を保持する。保護属性テーブル161は、メモリ13内の領域に対して個別に設定されている保護属性の情報を記録する。
図9は、保護属性テーブルの一例を示す図である。保護属性としては、セキュア状態におけるデータの読み出しおよび書き込み、ノンセキュア状態におけるデータの読み出しおよび書き込みのそれぞれについて、許可「1」または禁止「0」が設定される。保護属性テーブル161は、保護属性の情報を、保護対象とされる領域を示す物理アドレスおよびサイズとの組み合わせとして保持する。保護属性テーブル161の行ごとに情報が記録されている。
メモリ保護コントローラ16は、ノンセキュア状態では、保護属性テーブル161への書き込み、および保護属性テーブル161からの読み出しを拒否する。メモリ保護コントローラ16は、セキュア状態では、保護属性テーブル161への書き込み、および保護属性テーブル161からの読み出しを許可する。
メモリ保護コントローラ16は、プロセッサ11からメモリ13へのアクセスの際、アドレス、アクセス種別、状態情報を含むリクエストを、バス12から受ける。アクセス種別は、データの読み出し(read)および書き込み(write)のいずれかである。アクセス種別が「write」である場合、リクエストには、メモリ13への書き込みデータが含められる。状態情報は、プロセッサ11に格納されている状態情報111と同じとする。
メモリ保護コントローラ16は、バス12からリクエストを受けると、保護属性テーブル161を参照する。メモリ保護コントローラ16は、保護属性テーブル161の中に、リクエストにあるアドレスを含む情報が存在するか否かを判断する。
リクエストにあるアドレスを含む情報が存在する場合、メモリ保護コントローラ16は、かかる保護属性の情報と、リクエストのアクセス種別および状態情報とを照合する。照合の結果、許可されるアクセスである場合、メモリ保護コントローラ16は、当該リクエストをメモリ13へ送信する。禁止されるアクセスである場合、メモリ保護コントローラ16は、メモリ13への当該リクエストの送信を行わず、バス12へエラー通知を返す。
第3の実施形態では、情報処理装置は、NS側例外ハンドラコード137のうち命令が置き換えられた領域に対するデータの書き換えを禁止するアクセス制限を設定する。情報処理装置は、NS側例外ハンドラコード137の書き換えのための処理と併せて、かかるアクセス制限のための情報を保護属性テーブル161に記録する。プロセッサ11は、メモリ保護コントローラ設定コード151の実行により、保護属性テーブル161を更新する。
図10は、メモリ保護コントローラ設定コードの実行による、アクセス制限の設定のための処理を説明するフローチャートである。図10に示す処理は、第1の実施形態のS18におけるマッピングの解除と、S19におけるSMC命令の実行との間に実施される。
S18におけるマッピングの解除を終えると、プロセッサ11は、メモリ保護コントローラ設定コード151の実行により、S61からS64までの処理を行う。
プロセッサ11は、保護属性テーブル161のうち、未使用のエントリを選択する(S61)。未使用のエントリは、有効な情報が記録されていない1つの行とする。図9に示す例では、サイズの列に「0」が記録されている4行目の行を、未使用のエントリとする。
第1の実施形態のS12にて、プロセッサ11は、アドレス変換装置113により、NS側例外ハンドラコード137のNS側仮想アドレスを物理アドレスに変換している。プロセッサ11は、S12で取得された物理アドレスを、選択されたエントリの物理アドレスの欄に書き込む(S62)。図3に示す例の場合、プロセッサ11は、NS側仮想アドレス「0xffff0000」から変換された物理アドレスを、エントリへ書き込む。
プロセッサ11は、選択されたエントリのサイズの欄に、保護対象とする領域のサイズを設定する(S63)。第1の実施形態のS17にて、プロセッサ11は、NS側例外ハンドラコード137のうち、スーパーバイザコールハンドラにある命令を、SMC命令に置き換えている。プロセッサ11は、設定された物理アドレスの位置から、S17での命令の置き換えがあった領域までを含む範囲が保護対象に含まれるように、サイズを設定する。
図3に示す例の場合、アドレス「0xffff0000」から、命令の置き換えがあったハンドラ「svc_handler:」を含む範囲、例えば「0x20」が、サイズとして設定される。
プロセッサ11は、選択されたエントリに、保護属性を設定する(S64)。プロセッサ11は、セキュア状態でのデータの読み出しおよび書き込みを許可、ノンセキュア状態でのデータの読み出しを許可、かつノンセキュア状態でのデータの書き込みを禁止、とする保護属性を設定する。この場合、図9に示すS(read),S(write),NS(read),NS(write)の各欄に、それぞれ「1」,「1」,「1」および「0」を書き込む。
以上により、メモリ保護コントローラ設定コード151の実行による、アクセス制限の設定のための処理を終了する。プロセッサ11は、S64の処理に続いて、第1の実施形態のS19における処理を実施する。
アクセス制限の設定により、情報処理装置は、NS側例外ハンドラコード137のうち命令が置き換えられた領域について、ノンセキュア状態での動作によるデータの書き換えを阻止する。
第3の実施形態によると、情報処理装置は、メモリ保護コントローラ設定コード151を実行することで、NS側例外ハンドラコード137のうち命令が置き換えられた領域へのアクセス制限を設定する。情報処理装置は、ノンセキュア状態での動作によるNS側例外ハンドラコード137の再度の書き換えを阻止する。情報処理装置は、スーパーバイザコールをチェックする機能を維持可能とすることで、セキュリティをさらに強化できる。
(第4の実施形態)
図11は、第4の実施形態の情報処理装置の構成を示すブロック図である。第1の実施形態と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
図11は、第4の実施形態の情報処理装置の構成を示すブロック図である。第1の実施形態と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
第4の実施形態の情報処理装置は、NS側例外ハンドラコード137の書き換えを、セキュアモニタコール呼び出しに応じて実施するほか、他の要因に応じても実施可能とする。第4の実施形態では、セキュアモニタコール呼び出し以外に、タイマ割り込みに応じてNS側例外ハンドラコード137の書き換えのための処理を実施する。第4の実施形態の情報処理装置は、第1の実施形態の構成に加えて、タイマ割り込みを発生させるための構成を備える。
第4の実施形態の情報処理装置は、プロセッサ11の内部にタイマ117を備える。タイマ117は、時間を計測し、所定の時間が経過したときにタイマ割り込みを発生させる。
情報処理装置は、プロセッサ11内のタイマ117に代えて、プロセッサ11の外部にタイマを設けることとしても良い。プロセッサ11外部のタイマは、バス12に接続され、バス12を介してプロセッサ11へタイマ割り込みを指示する。この場合、情報処理装置は、プロセッサ11外部からタイマ割り込みを指示する以外は、プロセッサ11内部にタイマ117を備える場合と同様に動作する。
第4の実施形態において、タイマ設定コード171は、セキュア領域14に配置される。タイマ設定コード171は、情報処理装置の起動により外部記憶装置(図示省略)からメモリ13に読み込まれ、メモリ13上にて展開される。タイマ設定コード171は、タイマ117の動作を設定するためのプログラムコードである。
プロセッサ11の起動後、セキュア状態での初期化の間であってノンセキュア状態への遷移より前に、プロセッサ11は、セキュア領域14からタイマ設定コード171を読み出す。プロセッサ11は、タイマ設定コード171を実行することで、タイマ設定コード171の内容に応じてタイマ117の動作を設定する。タイマ設定コード171は、一定の時間が経過するごとにタイマ割り込みを発生させるための命令を含む。
情報処理装置は、プロセッサ11がノンセキュア状態にて動作しているときにタイマ割り込みが発生した場合、プロセッサ11をセキュア状態へ切り換える。情報処理装置では、セキュア状態にて設定された割り込みがノンセキュア状態での動作時に発生した場合に、ノンセキュア状態からセキュア状態へ状態が切り換えられることが、ハードウェアの仕様として決められている。
図12は、タイマによる割り込みに応じてNS側例外ハンドラコードを書き換える処理を説明するフローチャートである。ノンセキュア状態での動作において一定の時間が経過すると、タイマ117は、タイマ割り込みを発生させる(S71)。
プロセッサ11は、タイマ割り込みに応じて、実行中の処理を強制的に中断する(S72)。プロセッサ11は、ノンセキュア状態からセキュア状態へ切り換える。セキュア状態にて、プロセッサ11は、セキュア領域14からS側例外ハンドラコード131を呼び出す。
プロセッサ11は、呼び出されたS側例外ハンドラコード131を実行することで、セキュア領域14からNS側例外ハンドラ書き換えコード132を呼び出す。プロセッサ11は、NS側例外ハンドラ書き換えコード132の実行により、第1の実施形態と同様のS11からS19までの処理を行う。第4の実施形態では、NS側例外ハンドラ書き換えコード132の実行による処理に、S81、S82およびS83の処理が追加されている。
プロセッサ11は、NS側仮想アドレス読み出し(S11)、アドレス変換(S12)を行う。S12に続き、プロセッサ11は、S12でのアドレス変換に成功したか否かを判定する(S81)。
アドレス変換に成功している場合(S81、Yes)、プロセッサ11は、マッピング(S13)、NS側例外ハンドラコード137からの命令読み出し(S14)、戻り先アドレスの取得(S15)を行う。S15に続き、プロセッサ11は、S15での命令の解釈に成功した否かを判定する(S82)。
命令の解釈に成功している場合(S82、Yes)、プロセッサ11は、戻り先アドレスの格納(S16)、命令の置き換え(S17)を実施する。
S17に続き、プロセッサ11は、タイマ117の設定を解除する(S83)。そして、プロセッサ11は、マッピング解除(S18)、状態切り換え(S19)を行う。
S15での命令の解釈に失敗した場合(S82、No)、プロセッサ11は、S16,S17およびS83の処理をスキップし、S18からの処理を行う。
S12でのアドレス変換に失敗した場合(S81、No)、プロセッサ11は、S13からS18までの処理をスキップし、S19からの処理を行う。
S19での処理に続いて、プロセッサ11は、ノンセキュア状態でのプログラム実行を、タイマ割り込みによる中断があった命令から再開させる(S73)。第4の実施形態は、強制的に中断された命令から処理を再開させる点で、SMC命令115の次の命令から処理を再開させる第1の実施形態の場合とは異なる。以上により、プロセッサ11は、タイマ割り込みが発生した場合における一連の処理を終了する。
タイマ割り込みは、ノンセキュア状態において例外ハンドラが初期化されるよりも前に発生する可能性がある。例外ハンドラが初期化されるよりも前にタイマ割り込みが発生した場合、アドレス変換(S12)および命令の解釈(S15)のいずれかが失敗することになる。
プロセッサ11は、アドレス変換あるいは命令解釈が失敗した場合に、NS側例外ハンドラコード137の書き換えを行わずに、ノンセキュア状態における処理を再開させる。この場合、プロセッサ11は、再びタイマ割り込みが発生したときに、再度NS側例外ハンドラコード137の書き換えを試みる。プロセッサ11は、S81およびS82での判定を実施することで、例外ハンドラの初期化がなされていない場合における書き換え処理を回避可能とする。
情報処理装置は、セキュアモニタコール呼び出しがない場合でも、一定時間が経過したときに、スーパーバイザコールをチェックする機能を有効とすることができる。プロセッサ11は、タイマ割り込み以外の割り込みに応じて、NS側例外ハンドラコード137を書き換えることとしても良い。
第4の実施形態によると、情報処理装置は、割り込みの発生に応じて、NS側例外ハンドラコード137の書き換えのための処理を実施する。情報処理装置は、セキュアモニタコール呼び出しがない場合でも、割り込みが発生したときに、スーパーバイザコールをチェックする機能を有効とすることができる。情報処理装置は、セキュアモニタコール呼び出しの有無に関わらずスーパーバイザコールをチェック可能とすることで、セキュリティをさらに強化できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
11 プロセッサ、13 メモリ、14 セキュア領域、15 ノンセキュア領域、16 メモリ保護コントローラ、117 タイマ、132 NS側例外ハンドラ書き換えコード、134 NS側SVCチェックコード、135 NS側戻り先データ、137 NS側例外ハンドラコード、141 NS側メモリ読み出しコード、151 メモリ保護コントローラ設定コード、171 タイマ設定コード。
Claims (6)
- 第1の状態、または、前記第1の状態に対し低いセキュリティレベルを備える第2の状態に切り換えて動作するプロセッサと、
前記プロセッサが、前記第1の状態でアクセスする第1領域と、前記第2の状態でアクセスする第2領域とを備えるメモリと、を有し、
前記第2領域に、オペレーションシステムが提供する機能の呼び出しがあったときに実行される第1のプログラムコードが書き込まれ、
前記第1領域に、前記第1のプログラムコードの書き換えのための第2のプログラムコードが書き込まれ、
前記プロセッサは、前記第2のプログラムコードを実行することで、前記第1のプログラムコードに含まれる第1の命令を、前記第2の状態と前記第1の状態とを切り換える第2の命令に置き換えることを特徴とする情報処理装置。 - 前記プロセッサは、前記第2のプログラムコードの実行において前記第1の命令を解釈し、解釈によって得られたデータを前記第1領域に格納することを特徴とする請求項1に記載の情報処理装置。
- 前記呼び出しにおいて要求されている処理の内容をチェックするためのチェックコードが前記第1領域に書き込まれ、
前記プロセッサは、前記第2の状態において前記呼び出しがあったとき、前記第2の命令の実行により前記第1の状態へ切り換えてから、前記チェックコードを実行することを特徴とする請求項1に記載の情報処理装置。 - 前記チェックコードは、前記第2の状態にて前記プロセッサがアクセス可能なメモリ領域からデータを読み出すための読み出しコードを含むことを特徴とする請求項3に記載の情報処理装置。
- 前記メモリ内の領域に対するアクセスを制御するコントローラをさらに有し、
前記プロセッサは、前記第1のプログラムコードが格納されている領域のうち前記第1の命令から前記第2の命令へ命令が置き換えられた領域に対するデータの書き換えを禁止するためのアクセス制限を前記コントローラに設定することを特徴とする請求項1に記載の情報処理装置。 - タイマ割り込みを発生させるタイマをさらに有し、
前記プロセッサは、前記第2の状態において前記タイマが前記タイマ割り込みを発生させた場合に、前記第1の状態へ切り換え、かつ前記第2のプログラムコードを実行することを特徴とする請求項1に記載の情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015126277A JP2017010347A (ja) | 2015-06-24 | 2015-06-24 | 情報処理装置 |
US14/929,135 US20160378693A1 (en) | 2015-06-24 | 2015-10-30 | Information processing apparatus and program execution method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015126277A JP2017010347A (ja) | 2015-06-24 | 2015-06-24 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017010347A true JP2017010347A (ja) | 2017-01-12 |
Family
ID=57605253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015126277A Pending JP2017010347A (ja) | 2015-06-24 | 2015-06-24 | 情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20160378693A1 (ja) |
JP (1) | JP2017010347A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019057811A (ja) * | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | データ蓄積装置 |
US10474494B2 (en) | 2016-09-16 | 2019-11-12 | Kabushiki Kaisha Toshiba | Information processing apparatus, information processing method, and computer program product |
US11531769B2 (en) | 2019-03-11 | 2022-12-20 | Kabushiki Kaisha Toshiba | Information processing apparatus, information processing method, and computer program product |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10824572B2 (en) * | 2016-09-09 | 2020-11-03 | Cylance Inc. | Memory space protection |
US11520913B2 (en) * | 2018-05-11 | 2022-12-06 | International Business Machines Corporation | Secure execution support for A.I. systems (and other heterogeneous systems) |
-
2015
- 2015-06-24 JP JP2015126277A patent/JP2017010347A/ja active Pending
- 2015-10-30 US US14/929,135 patent/US20160378693A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474494B2 (en) | 2016-09-16 | 2019-11-12 | Kabushiki Kaisha Toshiba | Information processing apparatus, information processing method, and computer program product |
JP2019057811A (ja) * | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | データ蓄積装置 |
US11531769B2 (en) | 2019-03-11 | 2022-12-20 | Kabushiki Kaisha Toshiba | Information processing apparatus, information processing method, and computer program product |
Also Published As
Publication number | Publication date |
---|---|
US20160378693A1 (en) | 2016-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101799261B1 (ko) | 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한 | |
JP6306578B2 (ja) | メモリ保護装置及び保護方法 | |
JP4989543B2 (ja) | メモリドメインを基にしたデータ処理システム内のセキュリティ制御 | |
JP4939382B2 (ja) | 情報処理装置及びそのプログラム実行制御方法 | |
US8132254B2 (en) | Protecting system control registers in a data processing apparatus | |
JP2017010347A (ja) | 情報処理装置 | |
JP7304359B2 (ja) | 有界ポインタを記憶するための装置及び方法 | |
JP2018523211A (ja) | 保護された例外処理 | |
US9116741B2 (en) | Computer program product, and information processing apparatus and method | |
KR102346255B1 (ko) | 조건부 메모리 액세스 프로그램 명령에 대한 허가 제어 | |
JP7432586B2 (ja) | スタック・ポインタを検証すること | |
KR20180088678A (ko) | 제한 포인터의 관리 장치 및 방법 | |
JP7376571B2 (ja) | 有界ポインタの使用を制御するための装置及び方法 | |
CN112256396B (zh) | 内存管理方法、系统及安全处理装置、数据处理装置 | |
JP5338435B2 (ja) | 情報処理プログラム、情報処理装置および情報処理方法 | |
US8443451B2 (en) | Manually controlled application security environments | |
KR20200010308A (ko) | 자격 도메인을 관리하는 장치 및 방법 | |
JP2005316599A (ja) | 割込制御装置 | |
JP2009009232A (ja) | コンピュータとカーネル保護方法並びにコンピュータソフトウエア | |
KR102547479B1 (ko) | 명령 세트의 변경을 제어하는 장치 및 방법 | |
JP2012212431A (ja) | セキュリティサービスに実装するシステムおよび方法 | |
US20090260050A1 (en) | Authenticating device for controlling application security environments | |
JP2010186386A (ja) | プロセッサ | |
KR100791815B1 (ko) | 컴퓨터 시스템 및 컴퓨터 시스템에서 인스트럭션을 실행하는 방법 | |
US8028142B2 (en) | Controller of storage device, storage device, and control method of storage device |