JP5316592B2 - Secure processor program - Google Patents
Secure processor program Download PDFInfo
- Publication number
- JP5316592B2 JP5316592B2 JP2011129097A JP2011129097A JP5316592B2 JP 5316592 B2 JP5316592 B2 JP 5316592B2 JP 2011129097 A JP2011129097 A JP 2011129097A JP 2011129097 A JP2011129097 A JP 2011129097A JP 5316592 B2 JP5316592 B2 JP 5316592B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- secure
- page
- encryption
- instruction
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims abstract description 250
- 230000008569 process Effects 0.000 claims abstract description 177
- 230000015654 memory Effects 0.000 claims description 225
- 239000000872 buffer Substances 0.000 claims description 29
- 238000012546 transfer Methods 0.000 claims description 28
- 238000013519 translation Methods 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 claims description 9
- 230000010365 information processing Effects 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 214
- 238000003860 storage Methods 0.000 description 110
- 238000010586 diagram Methods 0.000 description 70
- 238000001514 detection method Methods 0.000 description 32
- 238000007726 management method Methods 0.000 description 22
- 230000004044 response Effects 0.000 description 21
- 238000012795 verification Methods 0.000 description 12
- 230000004075 alteration Effects 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013478 data encryption standard Methods 0.000 description 3
- 230000008034 disappearance Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- KJLPSBMDOIVXSN-UHFFFAOYSA-N 4-[4-[2-[4-(3,4-dicarboxyphenoxy)phenyl]propan-2-yl]phenoxy]phthalic acid Chemical compound C=1C=C(OC=2C=C(C(C(O)=O)=CC=2)C(O)=O)C=CC=1C(C)(C)C(C=C1)=CC=C1OC1=CC=C(C(O)=O)C(C(O)=O)=C1 KJLPSBMDOIVXSN-UHFFFAOYSA-N 0.000 description 1
- 102100022103 Histone-lysine N-methyltransferase 2A Human genes 0.000 description 1
- 101001045846 Homo sapiens Histone-lysine N-methyltransferase 2A Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000008033 biological extinction Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
Abstract
Description
本発明は、計算機などの情報処理システムの安全性確保方式に係り、さらに詳しくは計算機や各種プロセッサ組込機器などにおいて悪意を持った実行コードの動作を防止することが可能なセキュアプロセッサ、およびセキュアプロセッサ用プログラムに関する。 The present invention relates to a method for ensuring the safety of an information processing system such as a computer. More specifically, the present invention relates to a secure processor capable of preventing malicious code operation in a computer, various processor-embedded devices, and the like. The present invention relates to a processor program.
プロセッサを使用するシステムでは、動作をプログラムによって記述することができ、ハードウェアによってすべてを構成するシステムに比べ、その動作の柔軟性が大きく、多種類の機能を実装することが容易である。これらの特徴のために、プロセッサはパーソナルコンピュータ、PDA、携帯電話、情報家電など多くのシステムに使用されており、またその普及とともに電子商取引のように高度にセキュリティを要求される処理も広範に行われるようになっている。セキュリティを強固にするために回線データに対する暗号化、ユーザ認証などの各種のシステム的な措置が施されているが、近年ではシステムレベルでの安全性のみならず、コンピュータウィルスや不正アクセス等の蔓延に対応するために、ソフトウェアレベル、プロセッサレベルの安全性が問題となっている。 In a system using a processor, the operation can be described by a program, and the flexibility of the operation is greater than that of a system in which everything is configured by hardware, and it is easy to implement various types of functions. Because of these features, processors are used in many systems such as personal computers, PDAs, mobile phones, and information appliances. Along with their widespread use, processing that requires a high level of security, such as electronic commerce, is also widely performed. It has come to be. Various system measures such as encryption of line data and user authentication have been taken to strengthen security, but in recent years not only system level safety but also the spread of computer viruses and unauthorized access etc. Therefore, software level and processor level safety is a problem.
例えば携帯電話や情報家電など、各種のプロセッサ組込機器などがネットワークに接続されることにより、パーソナルコンピュータ等に対すると同等の脅威をこれらの機器も外部から受ける可能性が高くなっている。不正侵入などを細かく見ると、悪意を持った実行コードが端末内で動作することにその原因がある。悪意のあるコード、所望しないコードをプロセッサ上で動作させないようにすることが重要であるが、従来においては悪意のあるコードを動作させないようにするためのプロセッサ側の対策があまり十分ではなく、結果的に安全なソフトウェア実行環境が提供されていないという問題点があった。 For example, various types of processor-embedded devices such as mobile phones and information home appliances are connected to a network, so that there is a high possibility that these devices will receive the same threat from the outside as against personal computers. If you look closely at unauthorized intrusion, the cause is that malicious execution code runs in the terminal. It is important to prevent malicious and undesired code from running on the processor, but in the past, there were not enough measures on the processor side to prevent malicious code from running on the processor. There is a problem that a secure software execution environment is not provided.
次に従来においては、例えばデータや命令の実行コードを主記憶装置や二次記憶装置に格納するに当り、安全性を確保するために暗号化を行って、実際の命令実行に当って暗号化されたデータなどを復号し、プロセッサ内のキャッシュメモリに格納して処理を実行することも行われているが、このような場合暗号処理を実行するハードウェアなどはプロセッサチップと別のチップに搭載され、外付けで使用されるために処理速度など、暗号処理性能が低くなってしまうという問題点があった。 Next, in the past, for example, when data or instruction execution codes are stored in the main storage device or secondary storage device, encryption is performed to ensure safety and encryption is performed for actual instruction execution. It is also possible to decrypt the processed data, store it in the cache memory in the processor, and execute the processing. In such a case, the hardware that performs the cryptographic processing is mounted on a separate chip from the processor chip. However, since it is used externally, there is a problem that the cryptographic processing performance such as processing speed is lowered.
またこのような暗号化処理において、データなどの暗号化に用いられる暗号鍵は、外付けされたチップ上の暗号処理側で決定されており、プロセッサ側で実行される命令の種類やスーパバイザ/ユーザモードなどの区別、あるいはデータや命令フェッチのアクセスアドレスなどに無関係であり、プロセッサ側の実行ユニットが暗号化、および復号において用いられるべき鍵を指定することができないために、実行中の命令に対応して適切な暗号鍵を選択することができないという問題点もあった。 In such encryption processing, the encryption key used for encryption of data and the like is determined on the encryption processing side on the externally attached chip, and the type of instruction executed on the processor side and the supervisor / user Corresponds to the instruction being executed because the execution unit on the processor side cannot specify the key to be used for encryption and decryption, regardless of the mode distinction or the access address of data or instruction fetch. As a result, there is a problem that an appropriate encryption key cannot be selected.
このようなソフトウェア実行環境の安全性に関する従来技術として次の文献がある。
特許文献1:特開2002−353960号公報 「コード実行装置およびコード配布方法」
この文献には暗号化された実行コードの認証を行って暗号化コードの有効性を確認し、セキュアプロセッサがその暗号化コードに対応する命令をフェッチし、セキュアタスクとして実行するコード実行装置が開示されている。
There are the following documents as conventional techniques related to the safety of such software execution environment.
Patent Document 1: Japanese Patent Laid-Open No. 2002-353960 “Code Execution Device and Code Distribution Method”
This document discloses a code execution device that authenticates an encrypted execution code, confirms the validity of the encryption code, fetches an instruction corresponding to the encryption code, and executes it as a secure task Has been.
しかしながらこのコード実行装置では実行コードに対応するプロセスと認証に用いられる鍵との間に関連が無く、例えばオペレーティングシステム(OS)に対して悪意のある操作が行われ、プログラムに別の認証鍵が割り付けられると、結果的に悪意のあるコードが動作してしまうという問題点を解決できなかった。 However, in this code execution device, there is no relationship between the process corresponding to the execution code and the key used for authentication, for example, a malicious operation is performed on the operating system (OS), and another authentication key is assigned to the program. If assigned, the problem that malicious code would work as a result could not be solved.
本発明の第1の課題は、暗号化された命令コードを書き換え不可能な形式で記憶するメモリの記憶内容を基本として、例えば二次記憶装置上に格納されているプログラムの実行コードを次々と認証し、確実に信頼できるアプリケーションの範囲を段階的に広げ、信頼できる動作だけを実行することが可能なセキュアプロセッサを提供することである。 A first problem of the present invention is that, based on the storage contents of a memory that stores encrypted instruction codes in a non-rewritable format, for example, the execution codes of programs stored in a secondary storage device one after another It is to provide a secure processor capable of performing authentication and performing a reliable operation in a step-by-step manner to expand the range of reliable applications.
本発明の第2の課題は、暗号処理ブロックを、例えばプロセッサと同一チップ上に備えて暗号処理性能を向上させるとともに、実行中の命令によってデータや実行コードの暗号化/復号に用いるべき鍵を選択可能とすることである。 The second problem of the present invention is that a cryptographic processing block is provided on the same chip as a processor, for example, to improve cryptographic processing performance, and a key to be used for encryption / decryption of data and execution code by an instruction being executed. It is to be selectable.
本発明の第3の課題は、プロセスの実行コードの主記憶への格納のタイミングでプロセスに対応する認証鍵を用いて実行コードの認証を行い、認証に成功した実行コードのみを実行可能とすることによって、プロセッサによる情報処理の安全性を向上させることである。 The third problem of the present invention is that the execution code is authenticated using the authentication key corresponding to the process at the timing when the execution code of the process is stored in the main memory, and only the execution code that has been successfully authenticated can be executed. This is to improve the safety of information processing by the processor.
図1は本発明のセキュアプロセッサの原理構成ブロック図である。同図において本発明のセキュアプロセッサ1は、固有鍵記憶手段2、命令コード記憶手段3、認証処理手段4、および暗号処理手段5を備える。
FIG. 1 is a block diagram showing the principle configuration of the secure processor of the present invention. In the figure, the
固有鍵記憶手段2は、セキュアプロセッサにおいて命令コードを実行するコアに固有の鍵、例えばCPU固有鍵を記憶するものであり、命令コード記憶手段3、例えば暗号化ROMコード領域は暗号化された命令コードを書き換え不可能な形式で記憶するものであり、認証処理手段4は固有鍵を用いて命令コード記憶手段3に記憶された命令コードを含む命令コードの認証を行うものであり、暗号処理手段5はコアと外部のメモリとの間で入出力されるデータを暗号化するものである。 The unique key storage means 2 stores a key unique to the core for executing the instruction code in the secure processor, for example, a CPU unique key. The instruction code storage means 3, for example, the encrypted ROM code area is an encrypted instruction. The code is stored in a non-rewritable format, and the authentication processing means 4 authenticates the instruction code including the instruction code stored in the instruction code storage means 3 using the unique key, and the encryption processing means 5 encrypts data input and output between the core and an external memory.
発明の実施の形態においては、暗号処理手段5が、認証された命令コードを暗号化してページ単位でセキュアプロセッサ1に接続された記憶装置、例えば主記憶に格納することもでき、また認証処理手段4が認証対象とする命令コードに認証情報が付加されていることもできる。
In the embodiment of the invention, the encryption processing means 5 can encrypt the authenticated instruction code and store the encrypted instruction code in a storage device connected to the
次に図1のセキュアプロセッサ1において、命令コードを実行するコアとして認証処理手段4によって認証された命令コードのみを実行するセキュアコアと、認証されていない通常の命令コードを実行するノーマルコアとを備えることもできる。
Next, in the
この場合、命令コード記憶手段3に記憶された暗号化された命令コードを用いてセキュアコアがブート(起動)されるとともに、セキュアコアがそのブート完了後にノーマルコアのブートを行わせるノーマルコアブート手段を備えることもでき、さらにセキュアコアがノーマルコアのブート後にノーマルコアの動作を監視し、異常状態を検出した時、ノーマルコアの動作停止、または特定処理への分岐を行わせるノーマルコア監視手段を備えることもできる。 In this case, the secure core is booted (started up) using the encrypted instruction code stored in the instruction code storage means 3, and the normal core boot means causes the secure core to boot the normal core after the boot is completed. In addition, the normal core monitoring means for monitoring the operation of the normal core after booting the normal core and detecting the abnormal state or branching to the specific processing when the secure core detects an abnormal state. It can also be provided.
次に本発明のセキュアプロセッサ用プログラムは、暗号化された命令コードが書き換え不可能な形式で記憶されたメモリ内のプログラムを用いて起動処理を行う手順と、そのメモリ内に記憶された命令コードを含む命令コードの認証処理を行う認証処理ブロックと、プロセッサ固有の鍵を管理する鍵管理処理と、認証処理ブロックによって認証された命令コードの暗号化/復号処理に用いられる鍵が格納された鍵テーブルに対する操作処理とをセットアップする手順と、認証処理ブロックを用いて二次記憶上のプログラムの認証処理を行う手順と、起動されたオペレーティングシステムを含み、認証処理済のプログラムの実行時に必要となる鍵処理を実行する鍵処理モニタとしての動作を行う手順とを計算機に実行させるものである。 Next, a program for a secure processor according to the present invention includes a procedure for performing startup processing using a program in a memory in which an encrypted instruction code is stored in a non-rewritable format, and an instruction code stored in the memory. Including an authentication processing block for performing an authentication process of an instruction code including a key, a key management process for managing a processor-specific key, and a key in which a key used for an encryption / decryption process of an instruction code authenticated by the authentication processing block is stored Necessary for executing an authentication-processed program including a procedure for setting up operation processing for a table, a procedure for performing authentication processing of a program on a secondary storage using an authentication processing block, and a started operating system And a procedure for performing an operation as a key processing monitor for executing key processing.
本発明のセキュアプロセッサは、命令を実行する命令実行手段、例えば実行ユニットと、命令実行手段からのコマンドに対応して外部のメモリに対するデータのロード/ストアを制御するロード/ストア制御手段、例えばロードストアユニットと、ロード/ストア制御手段と外部のメモリとの間でデータの暗号化/復号化を行う暗号処理手段、例えば暗号化回路と復号化回路とを備え、命令実行手段が、実行中の命令に対応して暗号処理手段に対してデータ暗号化/復号化に使用すべき鍵を指定するものである。 The secure processor of the present invention includes an instruction execution means for executing an instruction, for example, an execution unit, and a load / store control means for controlling the load / store of data to an external memory in response to a command from the instruction execution means, for example, a load And a cryptographic processing means for performing encryption / decryption of data between the store unit, the load / store control means and the external memory, for example, an encryption circuit and a decryption circuit, and the instruction execution means is executing The key to be used for data encryption / decryption is designated to the encryption processing means in response to the instruction.
発明の実施の形態においては、このセキュアプロセッサにおいて複数個の鍵を記憶する鍵記憶手段、例えば鍵テーブルメモリをさらに備え、命令実行手段が、鍵記憶手段に対して前述の鍵を指定する鍵番号を出力し、該鍵記憶手段がその鍵番号に対応して暗号処理手段に対して、データ暗号化/復号化に使用すべき鍵を与えることもできる。 In an embodiment of the invention, the secure processor further includes key storage means for storing a plurality of keys, for example, a key table memory, and the instruction execution means specifies a key number for specifying the key to the key storage means. And the key storage means can give the key to be used for data encryption / decryption to the encryption processing means corresponding to the key number.
またこのセキュアプロセッサにおいて、外部からロードされた命令フェッチデータの復号に使用されるべき鍵を記憶する鍵記憶手段をさらに備え、命令実行手段が命令フェッチ状態にある時、鍵記憶手段が暗号処理手段に対してフェッチされた命令の復号に使用されるべき鍵を与えることもできる。 The secure processor further includes key storage means for storing a key to be used for decrypting the instruction fetch data loaded from the outside. When the instruction execution means is in the instruction fetch state, the key storage means is the encryption processing means. Can also be given a key to be used to decrypt the fetched instruction.
また本発明のセキュアプロセッサは命令を実行する命令実行手段と、命令実行手段からのコマンドに対応して外部のメモリに対するデータのロード/ストアを制御するロード/ストア制御手段と、ロード/ストア制御手段と外部のメモリとの間でデータの暗号化/復号化を行う暗号処理手段とを備え、命令実行手段が、実行中の命令によるデータ/命令フェッチのアクセスアドレスに対応させて、暗号処理手段に対してデータ、および命令の暗号化/復号化に使用すべき鍵を指定する信号を与えるものである。 The secure processor of the present invention includes an instruction execution means for executing an instruction, a load / store control means for controlling loading / store of data to / from an external memory in response to a command from the instruction execution means, and a load / store control means. Encryption processing means for encrypting / decrypting data between the external memory and the external memory, the instruction execution means corresponding to the access address of the data / instruction fetch by the instruction being executed in the encryption processing means On the other hand, a signal for designating data and a key to be used for encryption / decryption of instructions is given.
発明の実施の形態においては、このセキュアプロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、命令実行手段が、前述のアクセスアドレスとしての論理アドレスを出力し、鍵記憶手段がその論理アドレスに対応して暗号処理手段に対して暗号化/復号化に使用すべき鍵を与えることもできる。 In an embodiment of the invention, the secure processor further includes key storage means for storing a plurality of keys, the instruction execution means outputs a logical address as the access address, and the key storage means has the logical address. Corresponding to the above, a key to be used for encryption / decryption can be given to the encryption processing means.
あるいはこのセキュアプロセッサにおいて、複数個の鍵を記憶する鍵記憶手段をさらに備え、ロード/ストア制御手段が、命令実行手段から与えられるコマンドに対応してアクセスアドレスとしての物理アドレスを出力し、鍵記憶手段がその物理アドレスに対応して暗号処理手段に対して暗号化/復号化に使用すべき鍵を与えることもできる。 Alternatively, the secure processor further includes key storage means for storing a plurality of keys, and the load / store control means outputs a physical address as an access address corresponding to a command given from the instruction execution means, and stores the key. It is also possible for the means to give a key to be used for encryption / decryption to the encryption processing means corresponding to the physical address.
本発明のセキュアプロセッサは、実行コードに対応するプロセスの実行に先立ってその実行コードが正しく認証されたことを示すセキュアページフラグが設定されるページに対応するセキュアプロセス識別子と比較するためのセキュアプロセス識別子を、そのプロセスの生成命令が発行された時点で生成するセキュアプロセス(コンテキスト)識別子生成手段と、生成されたセキュアプロセス識別子をそのプロセスに関連する情報として保持するプロセス情報保持手段、例えばコンテキスト情報格納部とを備える。 The secure processor of the present invention includes a secure process for comparing with a secure process identifier corresponding to a page in which a secure page flag indicating that the execution code is correctly authenticated prior to execution of the process corresponding to the execution code. Secure process (context) identifier generating means for generating the identifier when the process generation instruction is issued, and process information holding means for holding the generated secure process identifier as information related to the process, for example, context information And a storage unit.
発明の実施の形態においては、前述のプロセスに対応する実行コードに認証情報が付与されるとともに、プロセス情報保持手段が生成されたプロセスの生存期間中に行われる実行コード認証のための認証鍵をさらに保持することもできる。 In the embodiment of the invention, authentication information is given to the execution code corresponding to the above-mentioned process, and an authentication key for executing code authentication performed during the lifetime of the process in which the process information holding means is generated is provided. It can also be held.
またこのセキュアプロセッサは、前述のプロセスに対応する実行コードがメモリの空きページに格納され、そのページのアドレスに対応させてセキュアプロセス識別子がプロセッサ内のバッファに格納された後に、ページ単位の認証鍵を用いてその実行コードの認証を行い、認証が成功した時、そのバッファにセキュアページフラグをセットする認証手段をさらに備えることもできる。 The secure processor stores an execution code corresponding to the above-described process in an empty page of the memory, stores a secure process identifier in a buffer in the processor in association with the address of the page, and then authenticates each page. Authenticating the execution code using, and when authentication is successful, can further comprise an authentication means for setting a secure page flag in the buffer.
あるいはこのセキュアプロセッサは、実行コードの実際の実行に先立って前述のバッファ内に格納されたセキュアプロセス識別子であって、対応するセキュアページフラグがセットされているセキュアプロセス識別子と、プロセス情報保持手段に保持され、実行すべき命令コードに対応するセキュアプロセス識別子とを比較し、両者が一致した時に実行コードが格納されたメモリ上のページへのアクセスを、命令を実行する命令実行部に許可するメモリアクセス制御手段をさらに備えることもできる。 Alternatively, the secure processor includes a secure process identifier stored in the above-mentioned buffer prior to the actual execution of the execution code, the corresponding secure page flag being set, and a process information holding unit. A memory that compares the secure process identifier corresponding to the instruction code that is held and that is to be executed, and permits the instruction execution unit that executes the instruction to access the page on the memory in which the execution code is stored when the two match Access control means may be further provided.
またこのセキュアプロセッサは、それぞれ命令実行ユニットとキャッシュとを備えるコアとして、認証された実行コードのみを実行するセキュアコアと、認証されていない通常の実行コードを実行するノーマルコアとを備えることもできる。 The secure processor can also include a secure core that executes only an authenticated execution code and a normal core that executes an unauthenticated normal execution code as cores each including an instruction execution unit and a cache. .
さらにこのセキュアプロセッサは、実行コードのメモリへの格納と並行して実行コードの認証に必要となる演算を行い、その演算の結果を保持して認証手段に与える直接メモリアクセス手段をさらに備えることもできる。 Further, the secure processor further includes a direct memory access unit that performs an operation necessary for authenticating the execution code in parallel with storing the execution code in the memory, and holds the result of the operation and gives the result to the authentication unit. it can.
次に本発明のセキュアプロセッサ用プログラムは、実行コードを含むページをメモリにページインする計算機によって使用されるプログラムであり、計算機内の直接メモリアクセス機構に前述のページのメモリへの転送を依頼する手順と、その転送の成功後に計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに、そのページ内の実行コードに対応するプロセスの実行に先立ってその実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するための識別子であって、そのプロセスの生成命令が発行された時点で生成されたセキュアプロセス識別子を含み、そのページについてのデータを設定する手順と、前述のページの認証と、認証の成功を示すセキュアページフラグのページ・テーブル・エントリへのセットとをハードウェアに要求する手順とを計算機に実行させるものである。 Next, the secure processor program of the present invention is a program used by a computer for page-in a page including an execution code into the memory, and requests the direct memory access mechanism in the computer to transfer the page to the memory. The page that stores the execution code in the page table entry in the computer's translation lookaside buffer after the transfer is successful, prior to execution of the process corresponding to the execution code in that page, is correct. It is an identifier for comparing with a secure process identifier corresponding to a page for which a secure page flag indicating authentication has been set, and includes a secure process identifier generated when a generation instruction for the process is issued, The procedure for setting the data for that page, And authentication over di-, is a set of page table entries of the secure page flag indicating successful authentication as to execute the steps of requesting the hardware in the computer.
さらに本発明のセキュアプロセッサ用プログラムは、実行コードを含むページの認証を行う計算機によって使用されるプログラムであって、メモリに読み込まれたページに対するハッシュ演算を行う手順と、そのページに付加されている認証情報を復号する手順と、ハッシュ演算結果と復号結果とを比較する手順と、比較の結果として一致が検出された時、その計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリにページの認証が成功したことを示すセキュアページフラグをセットする手順とを計算機に実行させるものである。 Further, the secure processor program of the present invention is a program used by a computer for authenticating a page including an execution code, and a procedure for performing a hash operation on the page read into the memory and the page are added to the page. The procedure for decrypting the authentication information, the procedure for comparing the hash operation result and the decryption result, and when a match is detected as the comparison result, the page table entry in the translation lookaside buffer of the computer And a procedure for setting a secure page flag indicating that the authentication of the page is successful.
本発明によれば、プロセッサ内に保持されている書き換え不可能な形式の暗号化された命令コードを基本的な信頼点として、例えばオペレーティングシステムを含むプログラムの認証を行い、信頼できるプログラムの範囲を拡大していくことによって、システムのセキュリティレベルを本質的に向上させることが可能となる。 According to the present invention, an encrypted instruction code in a non-rewritable format held in a processor is used as a basic trust point, for example, a program including an operating system is authenticated, and the range of reliable programs is increased. By expanding, the security level of the system can be essentially improved.
また本発明によれば、暗号処理ブロックを、例えばプロセッサと同一チップ内に備え、暗号処理性能を向上させるとともに、実行中の命令に応じたデータや実行コードの暗号化を行うことが可能となる。実行中の命令に対応して、例えば暗号化のレベルを変化させることもでき、システムとしてのセキュリティレベルを向上させることができる。 Further, according to the present invention, the cryptographic processing block is provided in, for example, the same chip as the processor, so that the cryptographic processing performance can be improved and the data and the execution code can be encrypted according to the instruction being executed. . Corresponding to the command being executed, for example, the encryption level can be changed, and the security level as the system can be improved.
さらに本発明によれば、命令コードの実行の前にその命令コードの認証を行い、セキュアページフラグがセットされたプロセスに対応するプロセス識別子と実行中のプロセスのプロセス識別子との一致を検出してプロセスの実行を行うことにより、悪意を持って改ざんされた実行コードのプロセッサ上での動作を防止することができ、安全なソフトウェア実行環境が提供される。 Further, according to the present invention, the instruction code is authenticated before the execution of the instruction code, and a match between the process identifier corresponding to the process for which the secure page flag is set and the process identifier of the process being executed is detected. By executing the process, it is possible to prevent the execution code executed maliciously on the processor, and a safe software execution environment is provided.
以下、本発明の実施形態について詳細に説明するが、まず本発明のセキュアプロセッサの全体的な構成と、その処理の概要を第1の実施例として説明する。
図2は、第1の実施例としてのセキュアプロセッサの基本構成を示すブロック図である。同図においてプロセッサ10は、実行ユニットとキャッシュを含むコア11、外部インタフェースとのコマンド処理およびバスデータ(プログラムのコードまたはデータ)の暗号化やその復号などを行う暗号処理ブロック12、命令コードの認証を行うコード認証処理ブロック13、プロセッサの起動時に用いられる最も基本的なプログラムなどが暗号化されて格納されている暗号化ROMコード領域14、およびこのコード領域14に格納されているプログラムなどの復号などを行うためのCPU固有鍵15を備えている。なお、暗号処理ブロック12の動作については後述の第3の実施例などで、コード認証処理ブロック13の動作については第5の実施例などでより詳細に説明する。
Hereinafter, embodiments of the present invention will be described in detail. First, an overall configuration of a secure processor of the present invention and an outline of the processing will be described as a first embodiment.
FIG. 2 is a block diagram showing the basic configuration of the secure processor as the first embodiment. In the figure, a
そしてコア11と暗号処理ブロック12との間では、コマンド、およびデータのやり取りが行われるとともに暗号化のための鍵の制御が行われ、またコア11とコード認証処理ブロック13との間には認証インタフェースが備えられる。さらに暗号処理ブロック12、およびコード認証処理ブロック13は主記憶17に対するアクセスを実行し、またコード認証処理ブロック13は二次記憶18に対するアクセスを実行するものとする。
Commands and data are exchanged between the core 11 and the
図3は、第1の実施例におけるセキュアプロセッサの全体処理フローチャートである。同図において電源が投入されると、図2のコア11はステップS1で暗号化ROMコード領域14に格納されているプログラムをCPU固有鍵15を用いて復号し、ブート(起動)処理を実行する。内蔵ROMであるため、プログラムの改ざんは本来物理的に困難であるが、もし何らかの方法で改ざんされた場合でも、プログラムは暗号化されており、意味のある改ざんは困難である。従って正確にブートできた場合は、プログラムの改ざんがなかったと判断でき、暗号化ROMコード領域14に格納されているプログラムは絶対的に信頼できるものといえることになり、この状態をプログラムの基本的な信頼点として定義することが可能となる。
FIG. 3 is an overall process flowchart of the secure processor in the first embodiment. In FIG. 2, when the power is turned on, the core 11 shown in FIG. 2 decrypts the program stored in the encrypted
なお、暗号化ROMコード領域14については、64ビット単位の暗号化を行うDES(データ・エンクリプション・スタンダード)方式よりも秘匿強度の大きいAES(アドバンスド・エンクリプション・スタンダード)方式を用いる場合などはプロセッサ内部ではなく外付けとすることもできる。その場合には命令コードのNOP、データパターンのALL0/ALL1など、頻発するパターンに対応して暗号鍵の推定を可能とさせないように、同一の平文に対して常に同一の暗号文が出力されるECB(エレクトリック・コードブック)以外のモードを使用することも可能である。
For the encryption
続いてステップS2で暗号処理ブロック12内に備えられ、後述する鍵テーブル(メモリ)に対する操作処理、CPU固有鍵15を用いた公開鍵や秘密鍵の生成などを行う鍵管理処理、およびコード認証処理ブロック13のセットアップなどが実行され、これらの処理の内容は同様な信頼点として定義される。
Subsequently, in step S2, provided in the
続いてステップS3で二次記憶18に格納されているプログラムに対する認証処理が行われる。この第1の実施例ではオペレーティングシステム(OS)を含む一般のプログラムは、ハードディスクやネットワーク経由など二次記憶18上に格納されており、これらのプログラムに対する認証処理が実行される。この認証処理については、さらに後述する。
Subsequently, an authentication process for the program stored in the
前述の鍵テーブル操作処理などを実行するためのプログラム群はライブラリィ化され、鍵処理モニタと呼ばれる。暗号処理ブロック12、コード認証処理ブロック13、およびCPU固有鍵15等のセキュアハードウェア20に対するアクセスは、ステップS4でこの鍵処理モニタの動作している区間だけに制限される。この鍵処理モニタが動作し、セキュアハードウェア20にアクセス可能となる状態をアクセスレベル1と呼ぶことにする。アクセスレベル1は、プログラムカウンタが、固定領域にあるステップS4の鍵処理モニタのアドレスを指しているかどうかの監視を行うハードウェアにより実現する。
A group of programs for executing the above-described key table operation processing is made into a library and is called a key processing monitor. Access to the
このアクセスレベル1に比較して前述のOSを含む一般のプログラムによる動作はアクセスレベル2、またはアクセスレベル3に分類される。第1の実施例ではOSはアクセスレベル2に分類され、ステップS5でOSなどの起動が行われると、ステップS6で認証済みプログラムの実行が行われる。アクセスレベル2における認証済みプログラムは、アクセスレベル1におけるステップS4、すなわち鍵処理モニタに対し、鍵処理を依頼する事が出来、自空間の暗号化、データの暗号化や復号など鍵処理モニタ経由で間接的に行うことができる。このようにCPU外部からのプログラムであっても、認証されたものについてはアクセスレベル2として位置づけられ、鍵処理を行うことが出来るが、公開鍵以外のすべての鍵またはセキュアハードウェア20には直接アクセスすることは出来ないため、レベル2のプログラムに何らかの障害が生じたとしても公開鍵を除く鍵情報が外部に流出することはない。
Compared with the
アクセスレベル3における未認証のプログラムの実行は、ステップS7においてステップS5のOSなどの起動の後に行われるが、このアクセスレベル3のプログラムは公開鍵以外のすべての鍵へのアクセス、および鍵処理モニタへの鍵処理の依頼などを行うことは一切できないものとする。なおステップS4からステップS7の処理は各アクセスレベルのプログラム間のプロセス間通信を利用して実行される。
The execution of the unauthenticated program at the
以上説明したように第1の実施例においては、まずプロセッサの起動時に暗号化ROMコード領域14に格納されたプログラムを用いて行われるブート処理の成功の時点でプログラムの基本的な信頼点が確立され、その後その信頼点を用いてOSを含む各種のプログラムの認証を行いながら信頼できるプログラム範囲を拡大していくことによって、システムのセキュリティレベルをプロセッサ自らが段階的に向上させるという目的が達成される。また運用開始後は認証単位毎にコードやデータの暗号化を行うことも可能となり、プログラムの間の秘密性保持に関しても十分な信頼性を維持することができる。なおこの第1の実施例では、アクセスレベル1の処理をプロセッサのコアが実行するソフトウェアとして実現する方式を説明したが、このレベル1の処理の一部、または全てをマイクロコード、あるいはワイヤードロジックとして実現することも可能である。
As described above, in the first embodiment, first, the basic trust point of the program is established at the time of successful boot processing performed using the program stored in the encryption
図4は、図2のコード認証処理ブロック13と暗号処理ブロック12による処理の概要を示すフローチャートである。同図においてまずステップS10のコード認証処理ブロックによる処理に続いて、ステップS11で暗号処理ブロックによる処理が行われるものとする。
FIG. 4 is a flowchart showing an outline of processing by the code
図4においてまずステップS12で、例えば主記憶17、または二次記憶18に格納されているプログラムに対するコード認証処理が実行される。この処理の詳細については後述する。そしてステップS13で認証が成功したか失敗したかが判定され、失敗した場合にはステップS14でコード実行に対する停止処理が実行される。
In FIG. 4, first, in step S12, for example, a code authentication process for a program stored in the
認証が成功した場合には、暗号処理ブロックによる処理が開始され、ステップS16で暗号化のための鍵が、例えばページ単位に指定されているか否かが判定され、指定されていない場合にはステップS17で乱数生成器などを用いてランダム鍵が生成され、指定されている場合にはステップS18でその指定鍵が取り出される。ここで、鍵が指定されていない場合とは、新規にそのページが生成される場合などが含まれ、鍵が指定されている場合とは、生成されたページが一度ページアウト後、再度ページインする場合や、外部からの暗号化ページの格納などが含まれる。鍵が確定後、ステップS19で暗号化ページエントリ、すなわち後述するトランスレーション・ルックアサイド・バッファ(TLB)内のページ・テーブル・エントリ(PTE)が生成され、暗号化ページが割り当てられてコードまたはデータの暗号化が行われる。 If the authentication is successful, processing by the cryptographic processing block is started, and it is determined in step S16 whether or not a key for encryption is designated, for example, in units of pages. In S17, a random key is generated using a random number generator or the like, and if it is specified, the specified key is extracted in Step S18. Here, the case where the key is not specified includes the case where the page is newly generated. The case where the key is specified means that the generated page is once paged out and then paged in again. And storage of encrypted pages from the outside. After the key is determined, an encrypted page entry, that is, a page table entry (PTE) in a translation lookaside buffer (TLB), which will be described later, is generated in step S19, and an encrypted page is allocated to code or data. Is encrypted.
図5は、同一プロセスの命令領域とデータ領域とにそれぞれ異なる暗号鍵が割り当てられてコードの暗号化が行われる場合の、コード認証とその暗号化処理の全体フローチャートである。同図においてステップS10、すなわちコード認証処理ブロックによる処理は図4における場合と同様である。 FIG. 5 is an overall flowchart of code authentication and its encryption processing when different encryption keys are assigned to the instruction area and data area of the same process and code encryption is performed. In FIG. 4, step S10, that is, the processing by the code authentication processing block is the same as in FIG.
図5においてコード認証が成功すると、ステップS21で命令領域に対する鍵としての命令鍵の指定があるか否かが判定され、指定がない場合にはステップS22でランダム鍵が生成され、指定がある場合にはステップS23でその指定鍵が取り出され、ステップS24でランダム鍵、または指定鍵が使用されて、暗号化命令ページ・テーブル・エントリ、すなわちPTEが生成され、暗号化ページが命令領域に割り当てられて命令領域の暗号化が行われる。 If the code authentication is successful in FIG. 5, it is determined in step S21 whether or not an instruction key as a key for the instruction area is specified. If there is no specification, a random key is generated in step S22 and there is a specification. In step S23, the designated key is extracted. In step S24, the random key or the designated key is used to generate an encrypted instruction page table entry, that is, a PTE, and the encrypted page is assigned to the instruction area. The command area is encrypted.
その後ステップS26でデータ領域に対する暗号鍵としてのデータ鍵の指定があるか否かが判定され、指定がない場合にはステップS27でランダム鍵が生成され、指定がある場合にはステップS28で指定された鍵が取り出され、ステップS29でデータに対するページ・テーブル・エントリが生成され、暗号化ページが割り当てられてデータ領域に対する暗号化が実行される。 Thereafter, in step S26, it is determined whether or not a data key is designated as an encryption key for the data area. If there is no designation, a random key is generated in step S27, and if designated, it is designated in step S28. In step S29, a page table entry for the data is generated, an encrypted page is allocated, and encryption for the data area is executed.
続いて第1の実施例における暗号鍵の取得動作について図6から図9を用いて説明する。図6、および図7は、暗号鍵取得動作例(その1)におけるプロセッサ内部の構成例とその処理のフローチャートである。この例ではプロセッサ固有のRSA秘密鍵が予め安全な方式によってプロセッサ内部に保持されており、対応するRSA公開鍵は何らかの方法によってプロセッサの外部に出力され、外部から与えられる暗号鍵はこの公開鍵によって暗号化されているものとする。すなわち、例えばページ単位の暗号化、および復号用の暗号鍵は共通鍵であり、その秘密性保持のために公開鍵による再暗号化が必須のものとなっている。 Next, the encryption key acquisition operation in the first embodiment will be described with reference to FIGS. FIG. 6 and FIG. 7 are flowcharts of an example of the internal configuration of a processor and its processing in an example of encryption key acquisition operation (part 1). In this example, the processor-specific RSA private key is held in advance in the processor in a secure manner, the corresponding RSA public key is output to the outside of the processor by some method, and the encryption key given from the outside is determined by this public key. It shall be encrypted. That is, for example, an encryption key for encryption and decryption in units of pages is a common key, and re-encryption with a public key is indispensable for maintaining its confidentiality.
図6は、プロセッサ内部への暗号鍵設定処理実行のためのプロセッサ10の構成を示し、プロセッサの内部には必要なブロックとして暗号鍵設定部21、復号部22、プロセッサ固有RSA秘密鍵23、およびトランスレーション・ルックアサイド・バッファ(TLB)24が備えられ、TLBの内部には前述のページ・テーブル・エントリ(PTE)に相当する論理アドレステーブル25、物理アドレステーブル26、および鍵テーブル27が備えられている。そして暗号鍵設定部21に対して、プロセッサ固有のRSA公開鍵で暗号化された暗号鍵を含む暗号鍵設定要求が外部から与えられる。
FIG. 6 shows the configuration of the
図7は、暗号鍵取得処理のフローチャートである。同図において処理が開始されると、まずステップS31で暗号鍵設定部21によって暗号鍵設定要求が受付けられ、ステップS32で復号部22によって受け取った暗号化暗号鍵がプロセッサ固有RSA秘密鍵23を用いて復号され、ステップS33で暗号鍵設定部21によって復号された暗号鍵がTLB24の内部の鍵テーブル27に格納されて処理を終了する。
FIG. 7 is a flowchart of the encryption key acquisition process. When processing is started in the figure, an encryption key setting request is accepted by the encryption
図8は、暗号鍵取得動作例(その2)におけるプロセッサの構成例である。同図においては、その1の例における図6と比較すると、プロセッサ10の内部に復号部22に代わって署名検証部28が備えられ、またプロセッサ固有RSA秘密鍵23の代わりに認証局公開鍵としての認証局証明書29が格納されている点が異なっている。この認証局証明書29はその不正な置き換えが不可能なようにプロセッサ内部に記録されているものとし、暗号鍵設定部21に対しては、認証局の署名が付けられた暗号鍵を含む暗号鍵設定要求が与えられるものとする。
FIG. 8 is a configuration example of the processor in the encryption key acquisition operation example (part 2). In FIG. 6, compared with FIG. 6 in the first example, a
図9は、暗号鍵取得動作例(その2)における処理のフローチャートである。同図において処理が開始されると、まずステップS36で暗号鍵設定部21によって暗号鍵が署名とともに受付けられ、ステップS37で署名検証部28によって受け取った暗号鍵が署名と認証局公開鍵を用いて検証され、ステップS38で検証が成功したか否かが判定され、成功した場合にはステップS39で暗号鍵設定部21によって受け取った暗号鍵がTLB24の内部の鍵テーブル27に格納された後に、また検証が失敗した場合には直ちに処理を終了する。なおさらに暗号鍵の信頼性を向上させるためにその1の動作例、すなわち暗号鍵の秘密性保持と、動作例その2、すなわち暗号鍵の身元証明とを組み合わせて実施することも当然可能である。
FIG. 9 is a flowchart of processing in the encryption key acquisition operation example (part 2). When the processing is started in the figure, first, the encryption key is received together with the signature by the encryption
図10は、第1の実施例において暗号化された命令領域の命令を実行中に不正命令を検出した場合の不正命令対応処理のフローチャートである。同図においてステップS41で不正命令が検出されると、ステップS42でその不正命令が暗号化ページ内の命令であるか否かが判定され、非暗号化ページ内の命令である場合にはステップS43で通常の不正命令対応処理が行われるが、暗号化ページ内の命令であると判定されるとステップS44で命令改ざんが行われたと判定され、その改ざんに対する命令改ざん対応処理としてプロセスのロックダウンや、保留中処理のキャンセルなどの処理が実行され、その命令コードの実行は停止される。 FIG. 10 is a flowchart of illegal instruction handling processing when an illegal instruction is detected while executing an instruction in the encrypted instruction area in the first embodiment. If an illegal instruction is detected in step S41 in the figure, it is determined in step S42 whether or not the illegal instruction is an instruction in an encrypted page. If the illegal instruction is an instruction in an unencrypted page, step S43 is determined. In step S44, it is determined that the instruction has been tampered with. If the instruction is determined to be an instruction in the encrypted page, a process lockdown or Then, processing such as cancellation of pending processing is executed, and execution of the instruction code is stopped.
図11は、図5で説明したように同一プロセスの命令領域とデータ領域とに異なる暗号鍵が割り当てられている場合に、例えばデータ領域に格納されている命令コードの実行に先立ってその命令が不正命令として検出されることを防ぐための鍵付け替え処理のフローチャートである。このような命令コードのデータ領域への格納はプログラムドIO(PIO)、すなわちプログラムによる命令のコピーの実行時に起こるものである。 FIG. 11 shows that when different encryption keys are assigned to the instruction area and the data area of the same process as described in FIG. 5, for example, the instruction is executed prior to the execution of the instruction code stored in the data area. It is a flowchart of the key change process for preventing detecting as an illegal command. Such storage of the instruction code in the data area occurs at the time of execution of a programmed IO (PIO), that is, a copy of the instruction by the program.
図11においてまずステップS46で命令コードがPIOによってデータ領域にコピーされたものとし、ステップS47で鍵付け替え処理が起動される。この処理ではステップS48で命令が格納されていたデータページに対応するデータPTEが読み出され、ステップS49でそのエントリに格納されていた暗号鍵が取り出された後にそのPTEが消去され、ステップS50でそのデータPTEの内容、すなわち暗号鍵を用いて、その暗号鍵が、例えば図6の鍵テーブル27に格納された命令PTEが生成され、ステップS51でその命令PTEがTLBに書き込まれた後にステップS52で命令がコピーされた領域への分岐が行われ、その後の処理、すなわちコピー領域に格納された命令の実行処理が行われる。 In FIG. 11, first, it is assumed that the instruction code is copied to the data area by the PIO in step S46, and the key change process is started in step S47. In this process, the data PTE corresponding to the data page in which the instruction is stored in step S48 is read, and after the encryption key stored in the entry is extracted in step S49, the PTE is deleted, and in step S50. Using the contents of the data PTE, that is, the encryption key, an instruction PTE in which the encryption key is stored in, for example, the key table 27 of FIG. 6 is generated, and after the instruction PTE is written to the TLB in step S51, step S52 is performed. Then, branching to the area where the instruction is copied is performed, and the subsequent processing, that is, execution processing of the instruction stored in the copy area is performed.
このように第1の実施例では、図2で説明したようにプロセッサ10の内部に実行ユニットとキャッシュを含むコア11が1つだけ備えられ、そのコア11がセキュアコアとしてセキュアプロセッサとしての動作の中心的役割を果たすものとしたが、マルチプロセッサシステム、あるいはマルチコアシステムと呼ばれるシステムでは、例えば複数のコアを、セキュア動作を実行するセキュアコアと、ノーマル動作を実行するノーマルコアとに分類し、処理を分担させることも可能である。そのようなプロセッサシステムを次に第2の実施例として説明する。
Thus, in the first embodiment, as described with reference to FIG. 2, only one
図12は、第2の実施例としてのプロセッサの基本構成ブロック図である。同図においては第1の実施例を示す図2と比較すると、コア11に代わってセキュアコア31とノーマルコア32とが備えられ、またこれらの2つのコア31、32と暗号処理ブロック12、およびコード認証処理ブロック13との間にバスインタフェース33が備えられ、またセキュアコア31と暗号処理ブロック12との間では鍵制御が行われ、セキュアコア31とコード認証処理ブロック13との間で認証制御が行われ、さらにCPU固有鍵15はセキュアコア31だけに接続されている点が異なっている。すなわち第2の実施例では、図3で説明したセキュアハードウェア20としての暗号処理ブロック12、コード認証処理ブロック13、およびCPU固有鍵15に対する制御がセキュアコア31だけによって行われるという点に基本的な特徴がある。
FIG. 12 is a block diagram of the basic configuration of the processor as the second embodiment. Compared with FIG. 2 showing the first embodiment in FIG. 2, a
この第2の実施例では、セキュアハードウェア20に対するアクセスはセキュアコア31のみに限定される。第1の実施例ではセキュア動作としての図2のステップS4における鍵処理モニタの動作においてユーザのソフトウェアが介在する余地があり、そのため前述のようにプログラムカウンタのハードウェア監視によるアクセス制限などが行われるが、第2の実施例ではこのようなソフトウェアの介在がなく、ソフトウェアバグによる問題も発生しない。
In the second embodiment, access to the
また、第1の実施例では例えば同一のコアを使用して時分割方式でアクセスレベル間の共有を行うことも必要となるが、第2の実施例ではコアが別になるため、アクセスレベル切替時点におけるレジスタクリアなどのソフトウェアに対する要求処理量も少なくなる。 In the first embodiment, for example, it is necessary to share the access levels in a time division manner using the same core. However, in the second embodiment, since the cores are different, the access level switching point The amount of processing required for software such as register clearing in the system is also reduced.
図13は、第2の実施例におけるプロセッサの基本処理フローチャートである。第1の実施例における図3と比較して異なる処理を中心にその処理を説明する。図12におけるセキュアコア31とノーマルコア32とが基本的に対等な関係にあるものとすると、電源が投入された時点でそれぞれのコアは、暗号化ROMコード領域14に格納されたプログラムを用いてブート処理を実行する。すなわち前述のようにステップS1でセキュアコアによるブート処理においてCPU固有鍵15を用いて暗号化されたプログラムが復号され、ブート処理が実行される。このブート処理が成功した場合には、前述のようにその状態がプログラムの基本的な信頼点として定義され、セキュアコアはその後、例えばもっぱら鍵処理モニタとしての動作を継続することになる。
FIG. 13 is a basic processing flowchart of the processor in the second embodiment. The processing will be described focusing on processing different from that in FIG. 3 in the first embodiment. Assuming that the
これに対してノーマルコア32は、主としてOSなどのアクセスレベル2に相当する処理を担当することになる。図13のステップS3ではセキュアコア側で二次記憶上のプログラムの認証処理が実行されるのに対応してノーマルコア32側で電源がオンとなり、ステップS55で暗号化ROMコード領域14内のプログラムによるブート処理が実行される。この時点では、セキュアコア31によって暗号化ROMコード領域14内のプログラムは絶対的に信頼可能であることが判明しているものとすると、ノーマルコア側のブート処理は基本的に問題なく終了し、ステップS5におけるOSなどの起動処理が続いて実行されることになる。
On the other hand, the
図14は、第2の実施例においてセキュアコアとノーマルコアとが対等な関係でなく、セキュリティの厳密な適用を行うために、セキュアコアによってノーマルコアの制御が行われる場合のプロセッサの構成ブロック図である。セキュアコア31とノーマルコア32とが基本的に対等な関係にある図12と比較してプロセッサの構成要素は同一であるが、セキュアコア31からノーマルコア32に対してコア制御信号が与えられる点が異なっている。このコア制御信号の具体的な例としてはリセット信号や割込み信号などが挙げられる。
FIG. 14 is a block diagram of the configuration of the processor in the case where the normal core is controlled by the secure core so that the secure core and the normal core are not in an equal relationship but the security is strictly applied in the second embodiment. It is. Compared to FIG. 12 in which the
図15は、図14のプロセッサによる全体処理のフローチャートである。同図においてセキュアコア31側では、ステップS1のブート処理に続いてステップS57でステップS2の代わりに、鍵テーブル操作処理、鍵管理処理、および認証処理ブロックのセットアップに加えてシステム監査が行われる。このシステム監査では、システム構成の変更の有無や、二次記憶上のプログラムの変更の有無などの検証が行われ、システムのセキュリティ機能、およびシステム構成に問題がないことが確認される。
FIG. 15 is a flowchart of the overall processing by the processor of FIG. In the figure, on the
その後ステップS58でセキュアコア31側からノーマルコアの起動が行われ、これに対応してノーマルコア32側では、ステップS59で暗号化ROMコード領域14に格納されたプログラムを用いた起動処理が実行される。その後の処理は、例えば図3における場合と同様である。
Thereafter, in step S58, the normal core is activated from the
図16は、図14のプロセッサにおけるセキュアコア31によるノーマルコア32の制御処理の1つとしてのノーマルコアの停止制御処理の説明図である。同図において、例えばノーマルコア側でステップS6の認証済みプログラムの実行において、セキュアコア31側にデータなどの認証のための鍵処理が依頼され、ステップS4における鍵処理モニタの動作において認証の失敗や、セキュリティ基準への違反が検出された場合には、セキュアコア31側からの指示によってノーマルコア32による処理、すなわちステップS6の認証済みプログラムの実行、およびステップS7の未認証プログラムの実行が停止される。
FIG. 16 is an explanatory diagram of a normal core stop control process as one of the control processes of the
図17は、図14におけるセキュアコア31によるノーマルコア32の制御処理のフローチャートである。セキュアコア31側ではステップS61でブート処理が実行され、ステップS62でその処理が完了すると、ノーマルコア32側への起動制御が行われ、ステップS63でノーマルコアの起動が行われ、ステップS64で公開鍵以外の鍵や認証処理を必要としない通常処理がノーマルコア側で実行される。セキュアコア31側では、常にステップS65でノーマルコア32側から送られる監視情報を用いた認証・監視処理を行っており、ステップS66でエラー発生があったか否かを判定し、発生がない場合にはステップS65以降の処理を続行し、エラー発生があった場合にはノーマルコア32側に対する停止要求、または割込みを行ってノーマルコア32側の処理を停止させる。セキュアコアによるノーマルコアの制御については、前述のようにリセット信号をその例として用いるものとしたが、その他の方法としてはCPUに対するNMI(マスク不可割込み)を利用することもできる。
FIG. 17 is a flowchart of the control process of the
図18は、第2の実施例において鍵生成機構を有するプロセッサの構成ブロック図である。同図において図12の構成に加えて、鍵生成機構34を備えている点が異なっている。
FIG. 18 is a block diagram showing the configuration of a processor having a key generation mechanism in the second embodiment. In the figure, in addition to the configuration of FIG. 12, a
図19は、第2の実施例におけるセキュアコアによる鍵の生成と、生成された鍵を用いた暗号化処理の説明図である。同図においてプロセッサ内のセキュアコア31はCPU固有鍵15、および鍵生成機構34を用いて公開鍵Ke、N、および秘密鍵Kd35を生成し、例えばノーマルコア32を経由して公開鍵Ke、Nを外部に通知するものとする。このときノーマルコア32側には秘密鍵Kdが渡されることはなく、ノーマルコア32は前述のように公開鍵以外の鍵処理を実行することはできない。
FIG. 19 is an explanatory diagram of key generation by the secure core and encryption processing using the generated key in the second embodiment. In the figure, a
そして例えば外部において公開鍵と原文Pを用いて暗号化された暗号文Cがノーマルコア32に入力されると、ノーマルコア32は秘密鍵Kdを保持していないためセキュアコア31に復号処理を依頼する。セキュアコア31は秘密鍵Kdを用いて原文Pを復号する。
For example, when the ciphertext C encrypted using the public key and the original text P is input to the
次に本発明の第3の実施例について説明する。図20は、第3の実施例におけるプロセッサの基本構成ブロック図である。同図においてプロセッサ40は実行ユニット41、ロードストアユニット42、暗号化回路43、および復号化回路44を備え、またロードストアユニット42は、キャッシュメモリ45とメモリ管理ユニット46を備えている。
Next, a third embodiment of the present invention will be described. FIG. 20 is a block diagram of the basic configuration of the processor in the third embodiment. In the figure, the
この第3の実施例は前述の第1、および第2の実施例と同様に基本的にはセキュアな動作を実行するプロセッサであるが、プロセッサ40の内部で第1の実施例における暗号処理ブロックと同様にストアデータの暗号化を行う暗号化回路43と、フェッチされる命令を含むロードデータを復号する復号化回路44とに対して、実行ユニット41からストア用の暗号化鍵とロード用の復号化鍵の指定が行われるところに基本的な特徴がある。
The third embodiment is basically a processor that executes a secure operation in the same manner as the first and second embodiments described above. However, the cryptographic processing block in the first embodiment is provided inside the
図20の第3の実施例において、実行ユニット41からロードストアユニット42に対しては、コマンドとストアデータとしての平文が与えられ、ロードストアユニット42から実行ユニット41に対しては平文としてのロードデータが与えられる。このうちコマンドはロードストアユニット42を介して、例えば図2で説明した主記憶や二次記憶に与えられるが、平文としてのストアデータは暗号化回路43に与えられ、暗号化されたストアデータとして、例えば主記憶に出力され、また例えば主記憶から入力される暗号化されたロードデータは復号化回路44によって復号され、平文としてのロードデータとしてロードストアユニット42に与えられる。
In the third embodiment of FIG. 20, a plaintext as a command and store data is given from the
図21は、第3の実施例において暗号化鍵、復号化鍵を格納する鍵テーブルメモリを備えるプロセッサの構成ブロック図である。同図において鍵テーブルメモリ47はストアデータ暗号化用の暗号化鍵を格納するものであり、また鍵テーブルメモリ48はロードデータを復号するための復号化鍵を格納するものである。実行ユニット41からは鍵テーブルメモリ47に対してストア用の鍵番号指示とストア用の暗号化鍵の更新の指示が与えられ、また鍵テーブルメモリ48に対してはロード用の鍵番号の指示とロード用復号化鍵の更新の指示が与えられる。鍵テーブルメモリの構成については後述する。
FIG. 21 is a block diagram showing the configuration of a processor having a key table memory for storing an encryption key and a decryption key in the third embodiment. In the figure, a
図22は、第3の実施例においてフェッチされる命令の復号を行うための命令フェッチ用復号化鍵を格納する鍵テーブルメモリを備えるプロセッサの構成ブロック図である。同図において実行ユニット41は、例えば主記憶に格納されている命令をフェッチする命令アクセス状態の処理を行っており、例えば主記憶からのロードデータとして命令フェッチデータが復号化回路44に与えられ、このとき実行ユニット41は鍵テーブルメモリ48に対して命令アクセス状態フラグを与え、復号化回路44は鍵テーブルメモリ48から出力される命令フェッチ用復号化鍵を用いて命令フェッチデータの復号を行い、平文としての命令フェッチデータはロードストアユニット42を介して実行ユニット41に与えられる。実行ユニット41からは鍵テーブルメモリ48に対して、必要に応じて命令フェッチ用復号化鍵の更新の指示が与えられる。
FIG. 22 is a block diagram showing a configuration of a processor including a key table memory for storing an instruction fetch decryption key for decrypting an instruction fetched in the third embodiment. In the figure, the
図23は、第3の実施例において鍵テーブルメモリに対して使用すべき鍵番号の指示を与える鍵選択レジスタを備えるプロセッサの構成ブロック図である。同図においてストア用暗号化鍵を格納する鍵テーブルメモリ47と実行ユニット41の間にストア用鍵番号指示を鍵テーブルメモリ47に与える鍵選択レジスタ51が、またロード用復号化鍵を格納する鍵テーブルメモリ48と実行ユニット41の間に鍵テーブルメモリ48にロード用鍵番号指示を与える鍵選択レジスタ52が備えられる。実行ユニット41から鍵選択レジスタ51に対してはストア用鍵選択レジスタの更新指示が与えられ、また鍵選択レジスタ52に対してはロード用鍵選択レジスタの更新指示が与えられる。
FIG. 23 is a configuration block diagram of a processor including a key selection register for giving an instruction of a key number to be used for the key table memory in the third embodiment. In the figure, a
すなわち図21では実行ユニット41からは実行命令のそれぞれに対応して鍵番号の指示が出力されるのに対して、図23では命令のある区間毎にレジスタの更新指示が与えられ、次の更新指示が与えられるまでは同一の鍵を使用して暗号化/復号化が行われる。なお実行ユニットから鍵テーブルメモリに対して直接に鍵番号指示を与える経路と、鍵選択レジスタを経由した経路との両方を設け、例えば実行ユニット41が実行命令に対応してどちらの経路の指示を用いるべきかの信号を鍵テーブルメモリに与えるような構成も当然可能である。
That is, in FIG. 21, the
図24は、第3の実施例において実行ユニットの命令アクセス状態に対応する鍵選択レジスタを備えるプロセッサの構成ブロック図である。同図においては図22におけると同様に、実行ユニット41は、例えば主記憶から命令フェッチを行うべき命令アクセス状態であり、実行ユニット41から鍵選択レジスタ52に対して命令アクセス状態フラグが与えられ、鍵選択レジスタ52は、それに対応して命令フェッチ用の鍵番号指示を、命令フェッチ用復号化鍵を格納する鍵テーブルメモリ48に与える。
FIG. 24 is a block diagram showing the configuration of a processor including a key selection register corresponding to the instruction access state of the execution unit in the third embodiment. In FIG. 22, as in FIG. 22, the
図25は、第3の実施例における鍵テーブルメモリの構成例の説明図である。同図において鍵テーブルメモリには、暗号鍵とその属性とが対応して格納されており、実行ユニット41から直接に、あるいは鍵選択レジスタを介して鍵番号の指示が与えられ、その鍵番号がリードアドレスとして用いられ、暗号化鍵、または復号化鍵が暗号化回路43、または復号化回路44に対する暗号化方式の指定情報や、暗号化の可否を指示する属性データとともに与えられる。また実行ユニット41から与えられる鍵更新番号指示がライトアドレスとして用いられ、鍵更新データの書込みが行われる。
FIG. 25 is an explanatory diagram of a configuration example of the key table memory in the third embodiment. In the figure, the key table memory stores an encryption key and its attribute in correspondence with each other, and a key number instruction is given directly from the
各エントリの属性データはエントリの有効/無効、暗号化のオン/オフ、暗号化方式および暗号化モードなどを示し、暗号鍵は指定された暗号化方式に依存するものとなる。なお暗号化のオン/オフを指示するデータは後述するように暗号化/復号化を行うことなく平文データをロード、ストアする場合の指示に対応する。 The attribute data of each entry indicates entry validity / invalidity, encryption on / off, encryption method, encryption mode, and the like, and the encryption key depends on the specified encryption method. Note that the data for instructing encryption on / off corresponds to an instruction for loading and storing plaintext data without performing encryption / decryption, as will be described later.
図26は、第3の実施例における暗号化回路、および復号化回路の構成例の説明図である。例えば図20の復号化回路44は、復号パイプ55とバスアービタ57とによって基本的に構成され、復号パイプ55は実行ユニット51からのコマンドバッファ59を介したコマンド情報の入力に対応して動作する。復号パイプ55は、例えば主記憶からバスを介して入力される暗号データを平文データに復号するためのN段のパイプであり、このN段のパイプは共通鍵暗号処理一段の概念的な例である処理56がN段接続されたものである。復号パイプ55から出力される平文データは、バスアービタ57を介して、例えば図20のキャッシュメモリ45に格納される。
FIG. 26 is an explanatory diagram of a configuration example of the encryption circuit and the decryption circuit in the third embodiment. For example, the
暗号化回路43は暗号パイプ60とバスアービタ61とによって基本的に構成される。暗号パイプ60に対しては、キャッシュメモリ45から例えば32bitの平文データが与えられ、実行ユニット41から指定される暗号化の鍵を用いてN段のパイプによって暗号化された暗号データが出力され、その暗号データはバスアービタ61を介して、例えば主記憶に接続されたバスに与えられる。暗号パイプ60の動作は復号パイプ55と同様にコマンドバッファ59を介して実行ユニット41から与えられるコマンド情報によって制御される。また暗号パイプ60の各段における処理の基本構造は復号パイプ55におけると同様である。さらに暗号方式としてはAES128、DES、およびSC2000などの各種の暗号化方式を用いることができる。なおAES方式としてはAES192、AES256の仕様も規定されている。
The
なお例えばバスアービタ61は主記憶装置や二次記憶装置に接続されたバスに対する調停を行うものであり、本発明におけるセキュアプロセッサの動作とは基本的に無関係である。
For example, the
図27は、第3の実施例において全てのデータを暗号化するのではなく、一部のデータを平文データのままで、例えば主記憶との間で入出力するためのデータ追い越し機能付き暗号化回路と復号化回路の構成を示すブロック図である。同図において暗号化回路と復号化回路の基本的な構成は図26におけると同様であるが、例えば暗号化回路側では、キャッシュメモリ45から与えられる平文データのうちで暗号化の必要がないデータについては暗号パイプ60を介することなく、直接にバイパスセレクタ63にそのデータが与えられ、暗号パイプ60から出力された暗号化データとともに複数のバイパスバッファ64の何れかに格納され、バスアービタ61を介して、例えば主記憶に接続されたバスに与えられる。
In FIG. 27, not all data is encrypted in the third embodiment, but part of the data is kept as plain text data, for example, encryption with data overtaking function for input / output to / from main memory. It is a block diagram which shows the structure of a circuit and a decoding circuit. In this figure, the basic configurations of the encryption circuit and the decryption circuit are the same as those in FIG. 26. However, for example, on the encryption circuit side, data that does not need to be encrypted among plaintext data provided from the
バイパスセレクタ63による平文データ、または暗号化データの選択もコマンドバッファ59を介した実行ユニット41からのコマンド情報によって制御される。暗号パイプ60による処理は時間を要するため、暗号化の必要のない平文データは、バイパスセレクタ63の制御によって暗号化データを追い越して主記憶側に与えられることが可能となる。なお図27で暗号化に必要な鍵は鍵レジスタ69を介して暗号パイプ60に与えられている。
Selection of plaintext data or encrypted data by the
例えば主記憶に接続されたバスからのデータのうち、暗号化されていない平文データは復号パイプ55を経由することなく直接にバイパスセレクタ66に与えられ、復号パイプ55によって復号された平文データとともにバイパスセレクタ66によって複数のバイパスバッファ67のいずれかに格納され、バスアービタ57を介してキャッシュメモリ45に出力される。
For example, unencrypted plaintext data among the data from the bus connected to the main memory is directly supplied to the
図28は、第3の実施例においてライトスルーキャッシュ方式に対応するためのリード・モディファイ・ライト方式の説明図である。キャッシュメモリ45がライトスルー方式を採用している場合には、ストア時にキャッシュミスが発生するとキャッシュメモリ45にそのデータが格納されず主記憶にそのままデータの格納が行われる。ストアすべきデータが、例えば1バイトしか無いような場合には、主記憶に1バイトデータの格納が行われる。しかしながら第3の実施例においては、基本的にストアデータは暗号化回路43によって暗号化された後に主記憶に格納されるものであり、一般に暗号化の処理においてはストアデータとしてある程度の量のデータを必要とし、1バイトだけのデータを暗号化して主記憶に格納したとしてもその正しい復号は困難である。
FIG. 28 is an explanatory diagram of the read-modify-write method for supporting the write-through cache method in the third embodiment. When the
図28のロードストアユニット42は、例えば1バイトのデータを主記憶に格納する必要があるときに、暗号化の処理に必要な長さのデータを主記憶からロードし、ロードされたデータとストアすべき1バイトのデータを結合し、結合されたデータを暗号化して主記憶に格納するリード・モディファイ・ライト動作を行うものである。
For example, when it is necessary to store 1 byte of data in the main memory, the load /
すなわち、例えば1バイトのデータをキャッシュにストアすべきキャッシュストア命令(1)が(2)でキャッシュミスと判定されると、(3)でキャッシュメモリ45から主記憶に対してコマンドとしてのロードが発行され、(4)で復号化回路44を介して平文のロードデータがリード・モディファイ・ライト(RMW)バッファ71に格納され、(5)でストアすべきデータがRMWバッファ71に与えられ、(6)でストアすべきデータとロードデータとを結合したデータが暗号化回路43に与えられ、(7)でコマンドとしてのストアが主記憶に対して発行される。
That is, for example, if a cache store instruction (1) for storing 1-byte data in the cache is determined as a cache miss in (2), a load as a command is loaded from the
次に本発明の第4の実施例について説明する。この第4の実施例では、第3の実施例において暗号化回路によって使用される暗号化鍵、および復号化回路によって使用される復号化鍵の例えば鍵番号が実行ユニット41によって指定されるのに対して、実行ユニット41による命令実行時にストア、またはロード対象となるデータのアクセスアドレスが実行ユニット41によって指定され、そのアドレスに応じて暗号化鍵、または復号化鍵が選択される点が異なっている。
Next, a fourth embodiment of the present invention will be described. In the fourth embodiment, the
図29は、第4の実施例におけるプロセッサの基本構成ブロック図である。同図においてプロセッサ40は実行ユニット41、暗号化回路43、復号化回路44に加えて、実行ユニット41から与えられるアドレスに対応してストア用暗号化鍵を暗号化回路43に与え、ロード用復号化鍵を復号化回路44に与える鍵テーブルメモリ73を備えている。
FIG. 29 is a block diagram of the basic configuration of the processor in the fourth embodiment. In addition to the
図30は、実行ユニットから指定されるストアデータ、またはロードデータの論理アドレスに対応して鍵が選択されるプロセッサの構成ブロック図である。同図においてプロセッサ40は、図29と異なってストア用暗号化鍵を格納する鍵テーブルメモリ74と、ロード用復号化鍵を格納する鍵テーブルメモリ75とを備えるとともに、キャッシュメモリ45、メモリ管理ユニット46を備えるロードストアユニット42を、例えば図20とおけると同様に備えている。実行ユニット41からロードストアユニット42に与えられるアドレス、すなわちストアデータ、またはロードデータのアドレスは論理アドレスであり、この論理アドレスが鍵テーブルメモリ74、または75に与えられてストア用暗号化鍵、またはロード用復号化鍵が選択され、それぞれ暗号化回路43、または復号化回路44に与えられる。また実行ユニット41から鍵テーブルメモリ74に対してはストア用暗号化鍵の更新の指示が、鍵テーブルメモリ75に対してはロード用復号化鍵の更新の指示が与えられる。
FIG. 30 is a block diagram showing the configuration of a processor in which a key is selected corresponding to a logical address of store data or load data specified by an execution unit. Unlike FIG. 29, the
図31は、第4の実施例においてデータの物理アドレスに対応して鍵が選択されるプロセッサの構成ブロック図である。同図を図30と比較すると、鍵テーブルメモリ74と75のそれぞれに対してロードストアユニット42からストアデータの物理アドレス、またはロードデータの物理アドレスが与えられ、そのアドレスに対応してストア用暗号化鍵が暗号化回路43に与えられ、ロード用復号化鍵が復号化回路44にそれぞれ与えられることになる。
FIG. 31 is a block diagram showing a configuration of a processor in which a key is selected corresponding to a physical address of data in the fourth embodiment. Compared to FIG. 30, the physical address of the store data or the physical address of the load data is given from the load /
図32は、第4の実施例における鍵テーブルメモリの構成図である。同図を第3の実施例における図25と比較すると、実行ユニット側からデータのアクセスアドレスとして0bit目から31bit目までの32bitが与えられると、そのアドレスをリードアドレスとして格納されている暗号鍵が選択され、暗号化回路43、または復号化回路44に暗号属性とともに与えられる。メモリのリードアドレスとして4kバイト毎に異なる鍵が使用される場合には、アドレスの12bit目から31bit目が使用されて暗号鍵の選択が行われる。なおこの4kバイトは後述するように例えば主記憶における1ページの大きさに相当する。またこの4kバイトを暗号化のアドレス単位と呼ぶことにすると、鍵テーブルメモリのエントリデータには全エントリ数×アドレス単位分を除いたアドレスタグが含まれる。例えば全エントリ数が32(5ビット)であれば、アドレスの17ビット目から31ビット目までがタグとなる。
FIG. 32 is a block diagram of the key table memory in the fourth embodiment. When this figure is compared with FIG. 25 in the third embodiment, when 32 bits from the 0th bit to the 31st bit are given as the data access address from the execution unit side, the encryption key stored as the read address becomes the encryption key. It is selected and given to the
図33は、第3の実施例において複数のウエイの構成を持つ鍵テーブルメモリの説明図である。同図において鍵テーブルメモリは、鍵テーブル1から鍵テーブル4までの複数のテーブルによって構成されており、実行ユニット側から与えられるアクセスアドレスに対応して4つのテーブルのうちの何れかに格納されている鍵と暗号属性とが選択され、暗号化回路43、または復号化回路44に与えられる。
FIG. 33 is an explanatory diagram of a key table memory having a plurality of ways in the third embodiment. In the figure, the key table memory is composed of a plurality of tables from the key table 1 to the key table 4, and is stored in one of the four tables corresponding to the access address given from the execution unit side. The key and the encryption attribute are selected and given to the
図34は、連想記憶方式を用いる鍵テーブルメモリの構成例の説明図である。同図においてはアクセスアドレス32bitが比較選択器77によって格納されている暗号鍵のそれぞれに対応する対象アドレス範囲の何れかに分類され、その範囲に対応する暗号鍵が選択されて、暗号属性とともに暗号化回路43、または復号化回路44に与えられる。なお図34では全エントリ数に無関係にアドレス単位分を除いたアドレスタグがエントリに含まれる。アドレス単位が4kバイトのときには、アドレスの12ビット目から31ビット目がタグとなる。
FIG. 34 is an explanatory diagram of a configuration example of a key table memory using an associative memory method. In the figure, the
図35は、第4の実施例においてデータの論理アドレス、または物理アドレスの何れかに対応して鍵を選択するプロセッサの構成ブロック図である。同図において実行ユニット41からはデータの論理アドレスが、またロードストアユニット42からは物理アドレスがそれぞれ鍵テーブルメモリ74、75に与えられ、また実行ユニット41から鍵テーブルメモリ74に対してはストアデータの論理アドレスと物理アドレスの選択指示が与えられ、鍵テーブルメモリ75に対してはロードデータの論理アドレスと物理アドレスの選択指示が与えられる。そしてこれらの選択指示に対応して論理アドレス、または物理アドレスの何れかに対応する鍵が選択されて暗号化回路43、復号化回路44に与えられる。
FIG. 35 is a block diagram showing the configuration of a processor that selects a key corresponding to either a logical address or a physical address of data in the fourth embodiment. In the figure, a logical address of data is given to the
図36は、鍵テーブルメモリに対して論理アドレスと物理アドレスの選択指示を与える鍵選択レジスタを備えるプロセッサの構成例である。同図を図35と比較すると実行ユニット41と鍵テーブルメモリ74、75との間にそれぞれ鍵選択レジスタ78、79が備えられ、それぞれストアデータに対する論理アドレスと物理アドレスの選択指示、ロードデータに対する論理アドレスと物理アドレスの選択指示を鍵テーブルメモリ74、75に出力する。実行ユニット41から鍵選択レジスタ78、79に対してはそれぞれ鍵選択レジスタの更新指示が与えられる。
FIG. 36 is a configuration example of a processor including a key selection register that gives a selection instruction of a logical address and a physical address to the key table memory. Compared with FIG. 35, key selection registers 78 and 79 are provided between the
図37は、図35と図36における鍵テーブルメモリの構成例を示す。同図において鍵テーブルメモリは、物理アドレス鍵テーブルと論理アドレス鍵テーブルとを備え、それぞれ物理アドレスと論理アドレスに対応して物理鍵、論理鍵を出力し、実行ユニット41側からの鍵選択指示、または鍵選択レジスタからの選択指示に対応して物理・論理鍵選択部81によって物理鍵、または論理鍵の何れかが暗号属性とともに暗号化回路43、または復号化回路44に出力される。
FIG. 37 shows a configuration example of the key table memory in FIG. 35 and FIG. In the figure, the key table memory includes a physical address key table and a logical address key table, and outputs a physical key and a logical key corresponding to the physical address and the logical address, respectively, and a key selection instruction from the
図38は、第4の実施例において鍵テーブルメモリの内容を鍵テーブルとしてロードストアユニット42の内部のメモリ管理ユニット(MMU)46に備えたプロセッサの構成例である。
FIG. 38 shows a configuration example of a processor provided in the memory management unit (MMU) 46 in the load /
図39、および図40は、このメモリ管理ユニット内の鍵情報の格納形式とキャッシュメモリアクセス方式の説明図である。一般的にMMU46の内部のトランスレーション・ルックアサイド・バッファ(TLB)には論理アドレスと物理アドレスとの対応が、例えば物理メモリ内の各ページに対応して各エントリに格納されているが、図39ではTLBの各エントリにそのページに対応する鍵情報を格納し、例えばデータアクセスアドレスが論理アドレスである場合には論理アドレスが一致するエントリが選択され、そのエントリに対応するデータの属性とアクセス属性とが属性チェック83によってチェックされ、キャッシュコマンド生成84によって生成されたコマンドがキャッシュメモリ45に送られる。
FIG. 39 and FIG. 40 are explanatory diagrams of the storage format of the key information in the memory management unit and the cache memory access method. In general, the translation lookaside buffer (TLB) in the
キャッシュメモリ45側では、受け取ったコマンドの内容に対応してタグを検索し、キャッシュヒットの場合には直ちにデータ応答を実行ユニット41側に返すことになるが、キャッシュミスの場合には暗号化回路43、復号化回路44を含む暗号化・復号化バスインタフェース85に対してタグに対応するコマンドが発行される。このときエントリから読み出された鍵情報や物理アドレスが使用され、例えば主記憶からの応答データが復号化された後にキャッシュメモリに格納され、実行ユニット41にデータ応答が返されることになる。
On the
図40は、メモリ管理ユニット内にTLBに代わるアドレス・マップ・レジスタ(AMR)を設けた場合の鍵情報格納形式の説明図である。同図においてはTLBの格納内容に対応する情報がメモリでなくレジスタに格納されており、例えばページサイズを可変とすることができ、大きなデータ領域を1つのエントリでカバーすることも可能となる。 FIG. 40 is an explanatory diagram of a key information storage format when an address map register (AMR) instead of TLB is provided in the memory management unit. In the figure, information corresponding to the stored contents of the TLB is stored not in the memory but in a register. For example, the page size can be made variable, and a large data area can be covered by one entry.
図41は、ロードストアユニットの内部のメモリ管理ユニット(MMU)が動作停止の状態、すなわちOFFの状態において実行ユニット41から暗号化鍵を暗号化回路43に与え、復号化鍵を復号化回路44に与えるプロセッサの構成例である。同図においてMMUのON/OFF信号は暗号化回路43と復号化回路44に与えられ、その信号がOFFのときには暗号化回路43、復号化回路44は実行ユニット41から与えられる鍵、ONのときにはメモリ管理ユニット46の内部のTLB87、またはAMR88から与えられる鍵を用いて暗号化、または復号化の処理を実行することになる。
FIG. 41 shows that the
図42は、図41の暗号化回路、復号化回路における鍵の切り替え方式の説明図である。同図において暗号化回路、および復号化回路の構成は第3の実施例における図26と基本的に同じであるが、鍵セレクタ90が追加され、実行ユニットから与えられるMMUON/OFF信号の値に応じてOFFの時には実行ユニットから与えられる鍵が、ONの時にはTLB、またはAMRから与えられる鍵の何れかが鍵セレクタ90によって選択され、暗号パイプ60、復号パイプ55に与えられる。
FIG. 42 is an explanatory diagram of a key switching method in the encryption circuit and the decryption circuit of FIG. In the figure, the configurations of the encryption circuit and the decryption circuit are basically the same as those in FIG. 26 in the third embodiment, but a
図43は、第3の実施例、および第4の実施例における実行ユニットの入出力信号の説明図である。まず第3の実施例における図20では、出力信号としてロード復号化鍵、ストア暗号化鍵、ストアデータ、およびコマンド、入力信号としてロードデータが必須の信号(○印)であり、アクセスアドレス、ロード・ストア状態信号などは構成的には存在する信号(△印)である。 FIG. 43 is an explanatory diagram of input / output signals of the execution unit in the third embodiment and the fourth embodiment. First, in FIG. 20 in the third embodiment, the load decryption key, the store encryption key, the store data, and the command are output signals, and the load data is an indispensable signal (circle mark), and the access address, load The store status signal is a signal (Δ mark) that exists structurally.
図21に対しては、ロード復号化鍵の代わりにロード鍵番号指示、ストア暗号化鍵の代わりにストア鍵番号指示の出力信号が必須のものとなる。また図21では、鍵テーブルメモリに対する更新が、実行ユニットから見てレジスタアクセスと等価であるため、レジスタ関連の入出力信号も必須となる。 For FIG. 21, the output signal of the load key number instruction instead of the load decryption key and the store key number instruction instead of the store encryption key are essential. In FIG. 21, since the update to the key table memory is equivalent to the register access from the viewpoint of the execution unit, the register related input / output signals are also essential.
図22に対しては、命令アクセス状態に対応する入出力信号が必要であり、出力信号として実行状態信号、入力信号として命令フェッチデータが必須となる。
図23、図24では、図20、図21に加え鍵選択レジスタを使用するため、レジスタ関連の入出力信号も必須となる。
For FIG. 22, an input / output signal corresponding to the instruction access state is required, and an execution state signal is required as an output signal and instruction fetch data is essential as an input signal.
In FIGS. 23 and 24, since the key selection register is used in addition to FIGS. 20 and 21, input / output signals related to the register are also essential.
以下説明を簡略化し、特徴的な部分について説明すると図21+図22+図23では3つの図を組み合わせた場合の入出力信号に加えて、スーパバイザ、あるいはユーザのいずれに対応するプロセスの実行であるかを示すスーパバイザ・ユーザ状態信号とコンテキスト、すなわちプロセスのID(識別子)のデータが追加された場合が示されている。これらスーパバイザ/ユーザ状態信号とコンテキストIDデータは、第3の実施例において実行ユニットから出力される鍵番号指示の信号に加えて暗号化鍵、復号化鍵の選択のために用いられる。 In the following, the description will be simplified, and the characteristic part will be described. In FIG. 21 + FIG. 22 + FIG. 23, in addition to the input / output signals when the three figures are combined, whether the process corresponds to the supervisor or the user. In this case, a supervisor user state signal and a context, that is, a process ID (identifier) data is added. These supervisor / user status signal and context ID data are used for selecting an encryption key and a decryption key in addition to a key number instruction signal output from the execution unit in the third embodiment.
図29以降は第4の実施例に対応するものであり、データへのアクセスアドレスが必須の出力信号となるとともに、図35、図36では論理アドレスと物理アドレスの何れかを選択するための鍵選択指示信号が出力される。 FIG. 29 and subsequent figures correspond to the fourth embodiment, and an access address to data is an indispensable output signal. In FIGS. 35 and 36, a key for selecting either a logical address or a physical address is used. A selection instruction signal is output.
図38に対しては、メモリ管理ユニットの内部のTLBに鍵テーブルが併設されるために、レジスタ関係の信号が構成的には存在する信号となり、またスーパバイザ・ユーザ状態信号とコンテキストIDデータとが追加された場合が示されている。これら追加された信号も第3の実施例と同様にアクセスアドレスとともに暗号化鍵、復号化鍵の選択に用いられる。 For FIG. 38, since a key table is added to the TLB inside the memory management unit, a register-related signal is a signal that exists structurally, and a supervisor user status signal and context ID data are included. The added case is shown. These added signals are also used for selecting an encryption key and a decryption key together with an access address, as in the third embodiment.
図41に対しては、メモリ管理ユニット(MMU)のON/OFFを示す状態信号の値に対応して実行ユニットから出力される鍵が用いられる場合と、例えばTLBから出力される鍵が用いられる場合とがあり、スーパバイザ・ユーザ状態信号、コンテキストIDデータも追加されて、すべての入出力信号が必須のものとなっている。 For FIG. 41, a case where a key output from the execution unit corresponding to the value of the state signal indicating ON / OFF of the memory management unit (MMU) is used, and a key output from the TLB, for example, is used. In some cases, supervisor / user status signals and context ID data are also added, and all input / output signals are indispensable.
以上のように第3、第4の実施例ではデータや命令コードの暗号化/復号化用の鍵が実行ユニットから指定されるために、実行される命令に対応したレベルで暗号化処理を行うことも可能となる。また、鍵選択レジスタ、あるいはアクセスアドレスによる暗号化/復号化鍵の指定により、プログラム単位またはアクセス単位での暗号化処理も可能であり、様々な状況に応じて使い分けることが可能である。 As described above, in the third and fourth embodiments, since the key for encrypting / decrypting data and instruction code is designated by the execution unit, encryption processing is performed at a level corresponding to the instruction to be executed. It is also possible. Also, by specifying an encryption / decryption key using a key selection register or an access address, encryption processing can be performed in program units or access units, and can be used properly according to various situations.
続いて本発明の第5の実施例について説明する。この第5の実施例としては、例えば第1の実施例としてのセキュアプロセッサのセキュア動作を実現するためのより詳細な構成を示し、その構成に対応させてプロセス(プログラム)の信頼点を拡大していくための認証鍵の設定や、プロセスの認証などの動作について詳細に説明する。 Next, a fifth embodiment of the present invention will be described. As the fifth embodiment, for example, a more detailed configuration for realizing the secure operation of the secure processor as the first embodiment is shown, and the process (program) reliability point is expanded corresponding to the configuration. Operations such as setting an authentication key for authentication and process authentication will be described in detail.
図44は、第5の実施例を説明するためのプロセッサ内の必要な機能構成図である。同図においてプロセッサ100は、物理メモリ101、例えば図2では主記憶17と、I/O装置102、例えば二次記憶18と接続されている。
FIG. 44 is a diagram showing the functional configuration required in the processor for explaining the fifth embodiment. In FIG. 2, a
プロセッサ100は、物理メモリ101、およびI/O装置102へのアクセスを制御するメモリアクセス制御部105、実行すべき命令を解釈する命令解釈部106、実行コードの格納されているページの認証などを行う認証部107、例えば認証後のページの暗号化/復号などを行う暗号化/復号、署名生成/検証部108、プロセスの生成時にそのプロセス、すなわちコンテキストに対応するセキュアコンテキスト識別子を生成するセキュアコンテキスト識別子生成部109、プロセスの消滅時に対応する識別子を消滅させるセキュアコンテキスト識別子消滅部110、暗号化などに用いられるプロセッサ固有鍵111、例えば物理メモリ101に格納されている物理ページに対応する認証情報を格納する認証情報一次格納部112、メモリアクセス時に直接メモリアクセスを行うためのセキュアDMA113を備えている。
The
プロセッサ100の内部には、さらに例えば図39で説明したトランスレーション・ルックアサイド・バッファ(TLB)114とコンテキスト情報格納部115が備えられている。TLB114には、例えば物理ページに対応させて論理アドレスと物理アドレスとの対応などを示すページ・テーブル・エントリ(PTE)122が格納され、コンテキスト情報格納部115にはプログラムカウンタ(の値を保持するカウンタ)117、セキュアコンテキスト識別子を格納するセキュアコンテキスト識別子レジスタ118、認証に必要な鍵を格納する認証鍵レジスタ119、およびレジスタ群120を備えている。
The
また物理メモリ101には、例えば実行コードが物理ページ124の単位で格納されており、I/O装置102には実行コードやデータがページ125の単位で認証情報126が付加された形式で格納されている。なお第7の実施例では、セキュアコンテキスト識別子レジスタ118にセキュアコンテキスト識別子が格納されたコンテキスト(プロセス)の実行コードの認証は認証鍵レジスタ119に格納される認証鍵を用いて行われる。
The
図45は、プロセッサ上で動作するプログラム、例えばユーザによって使用されるプログラムが起動されて、コンテキスト生成命令を発行した時点でのそのコンテキストに対応するセキュアコンテキスト識別子の生成方法の説明図である。コンテキスト生成命令は、プロセッサ内部の命令解釈部106に与えられ、その解釈結果に対応してセキュアコンテキスト識別子生成部109によってセキュアコンテキスト識別子が生成され、セキュアコンテキスト識別子レジスタ118にその値がセットされる。第5の実施例ではセキュアコンテキスト識別子レジスタ118への値のセットはこの方法によってのみ可能となるように構成される。これによってセキュアコンテキスト識別子を改ざんし、他のコンテキストになりすますことは不可能となる。なおコンテキストは基本的にオブジェクト指向プログラミングにおける概念であり、より一般的にはプロセス、すなわちプログラムの実行状態に対応するが、この第5の実施例ではプロセスの代わりにコンテキストという用語を用いる。
FIG. 45 is an explanatory diagram of a method for generating a secure context identifier corresponding to a context when a program operating on the processor, for example, a program used by a user is started and a context generation instruction is issued. The context generation instruction is given to the
図46は、セキュアコンテキスト識別子の具体的な生成方法の説明図である。その生成には図に示すように乱数発生器127を用いることも、また単調増加カウンタ128を用いることもできる。乱数として同じ値が生成される確率は0でなく、カウンタの値も一巡すると同じ値になるため、厳密には識別子としてのユニーク性が保証できないが、十分長いビット長のセキュアコンテキスト識別子を用いることによって実質的に問題が起きないようにすることができる。
FIG. 46 is an explanatory diagram of a specific method for generating a secure context identifier. For the generation, a
あるいは図に示すようにプロセッサが持つ既存のコンテキストIDと乱数発生器127の出力とを結合部129で結合するか、単調増加カウンタ128の出力と結合することによってセキュアコンテキスト識別子を生成しても良い。なお既存のコンテキストIDは、例えばOSによって設定される任意の値であり、一般にユニーク性が保証されているものではない。
Alternatively, as shown in the figure, the secure context identifier may be generated by combining the existing context ID of the processor and the output of the
図47は、セキュアコンテキスト識別子消滅方法の説明図である。同図においてプロセッサ上で動作するプログラムがコンテキスト消滅命令を発行した場合に、プロセッサはセキュアコンテキスト識別子レジスタ118の内容を無効とする。無効とする方法は0クリアでも良く、レジスタ中に有効/無効を表すフラグの格納領域を設け、そのフラグを無効にセットしても良い。
FIG. 47 is an explanatory diagram of the secure context identifier disappearance method. In the figure, when a program operating on the processor issues a context disappearance instruction, the processor invalidates the contents of the secure
図48は、図44において例えばページ単位の実行コード125に付加される認証情報126の説明図である。プロセッサ内のコンテキスト情報115の内部の認証鍵レジスタ119には認証情報126を用いて実行コード125を認証処理するための鍵が格納される。認証情報として、例えばRSAによる電子署名を用いる場合には、認証鍵はRSA公開鍵となり、共通鍵系のSHA(セキュアハッシュアルゴリズム)−1HMAC(ハッシュベースド・メッセージ・オーセンティケーション・コード)を用いる場合には認証鍵は20バイトの値となる。
FIG. 48 is an explanatory diagram of the
認証鍵レジスタ119への鍵の格納は、OSによるコンテキストの生成時、すなわちコンテキスト情報が初期化される段階で行われ、同時に認証鍵の正当性のチェックがおこなわれる。認証鍵自体が悪意を持った者によって生成され、その鍵によって悪意を持った実行コードに対応する認証情報が生成されてしまうと、認証処理自体は何の問題もなく成功し、プロセッサによる認証機能が働かなくなることになる。従って認証鍵の正当性をいかに保証するかは重要な課題である。
The key is stored in the authentication
図49は、認証鍵が公開鍵の場合の認証鍵レジスタへの鍵設定方式の説明図である。同図において認証鍵はRSA公開鍵であるものとし、認証局証明書、すなわち認証局公開鍵134は、例えばプロセッサ内に工場出荷時に埋め込まれ、それ以降その置き換えや変更は不可能となっているものとする。認証鍵レジスタ119に設定すべき認証鍵は認証局秘密鍵による署名が付与された形で、例えばコンテキスト生成の時点でプロセッサに対して認証鍵設定命令として与えられ、その命令は命令解釈部106によって解釈され、署名検証部108によって認証鍵の検証が行われた後に認証鍵レジスタ119に格納される。これにより認証局のお墨付きのある公開鍵のみが認証鍵レジスタに設定される。
FIG. 49 is an explanatory diagram of a key setting method for the authentication key register when the authentication key is a public key. In the figure, it is assumed that the authentication key is an RSA public key, and the certificate authority certificate, that is, the certificate authority
図50は、図49における認証鍵設定処理のフローチャートである。同図においてまずステップS71で命令解釈部106によって認証鍵設定命令がフェッチされ、ステップS72で署名検証部108によってフェッチされた公開鍵が署名と認証局公開鍵を用いて検証され、ステップS73で検証が成功した否かが判定され、成功した場合には命令解釈部106によってフェッチした設定命令に含まれる公開鍵が認証鍵レジスタ119に格納された後に、検証が失敗した場合には直ちに処理を終了する。
FIG. 50 is a flowchart of the authentication key setting process in FIG. First, in step S71, an instruction key setting command is fetched by the
図51は認証鍵が共通鍵の場合の鍵設定方式を示し、図52は鍵設定処理のフローチャートである。証明鍵として共通鍵を用いる場合には、実行コードに対して認証情報を付加する側から安全な方法で認証鍵を受け取る必要がある。ここではRSA公開鍵を用いて暗号化されたHMAC鍵を認証鍵設定命令とともに受け取るものとし、プロセッサ側でプロセッサ固有RSA秘密鍵137を用いて復号部108によって復号した後に認証鍵レジスタ119に格納するものとする。
51 shows a key setting method when the authentication key is a common key, and FIG. 52 is a flowchart of the key setting process. When a common key is used as a certification key, it is necessary to receive the authentication key by a secure method from the side that adds the authentication information to the execution code. Here, it is assumed that the HMAC key encrypted using the RSA public key is received together with the authentication key setting command, decrypted by the
図52のフローチャートにおいて、まずステップS76で命令解釈部106によって認証鍵設定命令がフェッチされ、ステップS77でその命令に含まれる暗号化されたHMAC鍵がプロセッサ固有RSA秘密鍵137を用いて復号部108によって復号され、ステップS78で復号されたHMAC鍵が命令解釈部106によって認証鍵レジスタ119に格納されて処理を終了する。
In the flowchart of FIG. 52, first, in step S76, the
図53は既にセキュアコンテキスト識別子が生成されているコンテキストの実行コードを主記憶、すなわち物理メモリ101の物理ページに格納し、その物理ページの認証を行って処理の実行開始を可能とするためのページイン方式の説明図であり、図54はこのページインにおける処理のフローチャートである。
FIG. 53 is a page for storing the execution code of a context in which a secure context identifier has already been generated in the main memory, that is, the physical page of the
このページインの処理では、まずOSによって実行コードの物理ページへの格納やページ・テーブル・エントリ(PTE)内の各種データの設定が行われた後に、OSから認証部107に対してコンテキスト、すなわち物理ページの認証要求としてのセキュアページフラグフィールドのセット要求がなされ、その要求に対応して認証部107によって物理ページの認証が行われた後にセキュアページフラグフィールドのフラグがセットされ、以後PTE使用が可能となる。
In this page-in process, first, after the execution code is stored in the physical page and various data in the page table entry (PTE) is set by the OS, a context, that is, an
図54の処理フローチャートにおいて処理が開始されると、ステップS80でOSによって空き物理ページに実行コードが格納され、ステップS81でOSによってその物理ページの先頭アドレスと対応する論理ページの先頭アドレスとが物理アドレス、論理アドレスとしてTLBの内部のPTEにセットされ、ステップS82でセキュアコンテキスト識別子の値がそのPTEにセットされる。例えば図45、46で説明したようにコンテキスト生成命令の発行時点で生成され、セキュアコンテキスト識別子レジスタ118に格納されたセキュアコンテキスト識別子がOSによって読み出し可能となっているものとして、OSは読み出したセキュアコンテキスト識別子をPTEに設定する。
When the process is started in the process flowchart of FIG. 54, the execution code is stored in the empty physical page by the OS in step S80, and the start address of the physical page and the start address of the corresponding logical page are physically set by the OS in step S81. An address and a logical address are set in the PTE inside the TLB, and the value of the secure context identifier is set in the PTE in step S82. For example, as described with reference to FIGS. 45 and 46, it is assumed that the secure context identifier generated when the context generation instruction is issued and stored in the secure
その後ステップS83でOSによって、必要に応じてそのページに対するリード/ライト属性などがPTEにセットされ、ステップS84でOSから、例えばハードウェアとしての認証部107に対してセキュアページフラグフィールドのセットが要求される。なお、OS自体は既に認証済みであることは大前提であり、セキュアページフラグフィールドのセットは基本的にOSの仕事であるが、ここでは認証済みのOSからハードウェアに対してフラグのセット要求が行われる。
Thereafter, in step S83, the OS sets the read / write attribute, etc. for the page to the PTE as necessary, and in step S84, the OS requests the
ステップS85で認証部107による認証処理が実行される。この処理の詳細については後述する。この処理ではセキュアコンテキスト識別子に対応するコンテキストの認証鍵と、認証情報一次格納部112に格納された認証情報とを用いて物理ページの認証が行われ、ステップS86で認証が成功したか否かが判定され、成功した場合にはセキュアページフラグフィールドのフラグがセットされ、以後そのPTEが使用可能となる。これに対して失敗した場合にはそのフィールドのフラグはリセットされ、そのPTEは使用不可とされ、ステップS89でOSによるリカバリまたはエラー処理が行われる。
In step S85, authentication processing by the
なお例えば図54の処理はTLB内のPTEに対して直接に値の設定可能なプロセッサを対象としているが、例えば主記憶上のPTEに値が設定され、TLBはそのキャッシュとして働くようなプロセッサにおいては、ステップS80からステップS83までの処理が主記憶上のPTEに対して行われ、その内容をTLBにキャッシュするタイミングでステップS84以降の動作が行われることになる。 For example, the processing in FIG. 54 is intended for a processor whose value can be directly set for the PTE in the TLB. For example, in a processor in which a value is set in the PTE on the main memory and the TLB serves as its cache. The processes from step S80 to step S83 are performed on the PTE in the main memory, and the operations after step S84 are performed at the timing when the contents are cached in the TLB.
図55は図53の認証部107の構成例であり、図56は図54におけるステップS85の認証処理のフローチャートである。ここではページ全体からSHA−1ハッシュ値が計算され、電子署名の復号結果と比較されるものとする。なお図56に示すように認証部107の動作をハードウェアによってではなく、ソフトウェアによる処理として実現することも当然可能である。
55 is a configuration example of the
図55において物理ページ125は64バイトずつに分割され、SHA−1ハッシュ演算器140に与えられ、ページ全体のハッシュ値が計算されて比較器142に与えられる。一方、認証情報一次格納部112に格納されたRSA電子署名は、認証鍵レジスタ119に格納されたRSA公開鍵とともにRSA復号器141に与えられ、その出力としての復号済みハッシュ値が比較器142によってSHA−1ハッシュ演算器140の出力と比較されて一致する場合には認証成功、不一致の場合には失敗と判定される。
In FIG. 55, the
図56の認証処理において、まずステップS90で物理ページが64バイト単位で読み込まれ、ステップS91でハッシュ演算が行われ、ステップS92でページ終端に達したか否かが判定され、達していない場合にはステップS90以降の処理が繰り返される。 In the authentication processing of FIG. 56, first, a physical page is read in 64-byte units in step S90, a hash operation is performed in step S91, and it is determined whether or not the page end has been reached in step S92. The process after step S90 is repeated.
終端に達した場合にはステップS93でRSA公開鍵を用いて電子署名が復号処理され、ステップS94で復号結果とハッシュ演算の結果が比較され、一致している場合にはステップS95でセキュアページフラグフィールドがセットされ、不一致の場合にはステップS96でセキュアページフラグフィールドがリセットされて処理を終了する。 If the end has been reached, the digital signature is decrypted using the RSA public key in step S93, the decryption result and the hash operation result are compared in step S94, and if they match, the secure page flag is determined in step S95. If the fields are set and they do not match, the secure page flag field is reset in step S96, and the process ends.
以上のように第5の実施例では、実行コードの物理メモリ(主記憶)へのページインにあたって実行コードの認証が行われ、認証が成功したことを示すセキュアページフラグのセットが行われる。 As described above, in the fifth embodiment, the execution code is authenticated when the execution code is paged into the physical memory (main memory), and the secure page flag indicating that the authentication is successful is set.
次に本発明における物理ページ上の命令実行時のメモリアクセス制御について第6の実施例として説明する。図57は、物理ページ上の命令実行時のメモリアクセス制御方式の説明図である。同図においてセキュアコンテキスト識別子レジスタ118に意味のある値が入っており、またPTE122のセキュアページフラグフィールドがセットされており、さらにセキュアコンテキスト識別子レジスタ118内に格納されている識別子の値と、PTE122上のコンテキスト識別子の値が一致する場合に物理ページ124上の命令の実行が許可される。この制御はメモリアクセス制御部105によって行われる。なお物理ページに対するデータのリード/ライト属性やスーパバイザ属性などのチェックは本発明の内容と直接の関係はなく、別途行われているものとする。
Next, memory access control at the time of execution of an instruction on a physical page in the present invention will be described as a sixth embodiment. FIG. 57 is an explanatory diagram of a memory access control method when executing an instruction on a physical page. In the figure, the secure
図58は、メモリアクセス制御部105の動作例の説明図である。同図において太い一点鎖線の中味がメモリアクセス制御部105に相当し、またTLB114の内部のPTEの属性データとしてセキュアページフラグフィールドやセキュアコンテキスト識別子が含まれるものとする。
FIG. 58 is an explanatory diagram of an operation example of the memory
図39と同様に、例えば論理アドレスをアクセスアドレスとしたアクセスが行われると、そのアドレスによって選択されたPTEの属性データが読み出され、アクセス属性と属性チェック146によって比較され、チェック結果がOKであれば論理アドレスに対応して読み出された物理アドレスと属性チェック結果を用いてキャッシュコマンド生成147が行われ、例えば図20のキャッシュメモリ45の内部のタグ148が検索されて、キャッシュヒット時の場合にはそのままデータ応答が返され、キャッシュミス時の場合にはキューおよびバスインタフェース149を介して、例えば主記憶からロードされたデータがキャッシュメモリに格納されるとともにデータ応答が実行ユニットに返される。
Similarly to FIG. 39, for example, when an access using a logical address as an access address is performed, the attribute data of the PTE selected by the address is read, compared with the access attribute and the
図59は、命令フェッチ時のメモリアクセス制御部105の処理フローチャートである。図57の命令実行部144によって命令フェッチのための論理アドレスが出力されると、ステップS98で指定された論理アドレスに対応するPTEの属性データが選択され、ステップS99でカレントコンテキスト、すなわち現在実行すべきコンテキストがセキュアコンテキストであるか否か、すなわち有効なセキュアコンテキスト識別子を持っているかどうかがチェックされる。セキュアコンテキストである場合には、ステップS100でそのコンテキストに対応するPTEのセキュアページフラグフィールド(SPF)がセットされているか否かがチェックされ、セットされている場合にはステップS101でカレントコンテキストのセキュアコンテキスト識別子、すなわちセキュアコンテキスト識別子レジスタ118に格納されている識別子とPTEに格納されているセキュアコンテキスト識別子が一致しているか否かが判定される。
FIG. 59 is a processing flowchart of the memory
一致している場合にはステップS102で、例えばコンテキストに対応するページの属性としてのリード/ライト属性やスーパバイザ属性などのチェックが行われ、OKの場合にはステップS103で命令フェッチのための物理アドレスをキャッシュに出力するためのキャッシュコマンドが生成されて処理を終了する。 If they match, in step S102, for example, a read / write attribute or a supervisor attribute as a page attribute corresponding to the context is checked. If OK, a physical address for instruction fetch in step S103. Is generated to output to the cache, and the process ends.
ステップS99でカレントコンテキストが有効なセキュアコンテキスト識別子を持っていない場合には、対応するPTEの中のセキュアページフラグフィールド(SPF)がセットされているかが否かがステップS104で判定され、セットされていない場合にはセキュアコンテキスト識別子が設定されておらず、また認証の行われていない従来と同様の実行コードを処理すべきことになり、ステップS102の処理に移行する。ステップS100、S101における判定結果がNoである場合、またステップS104の判定結果がYesである場合、ステップS102の判定結果がNoである場合にはいずれもステップS105でエラー処理が行われて処理を終了する。なおここでは論理アドレスを論理ページの先頭アドレスとページ内のオフセットの値とに分解する処理と、物理ページの先頭アドレスとそのオフセットの値を加算する処理が必要であるが、これらの処理については本発明と直接の関係はなくその説明を省略する。 If the current context does not have a valid secure context identifier in step S99, it is determined in step S104 whether or not the secure page flag field (SPF) in the corresponding PTE is set. If not, a secure context identifier is not set, and an execution code similar to the conventional one that is not authenticated is to be processed, and the process proceeds to step S102. If the determination result in steps S100 and S101 is No, if the determination result in step S104 is Yes, or if the determination result in step S102 is No, error processing is performed in step S105 and processing is performed. finish. Note that here, processing to decompose the logical address into the top address of the logical page and the offset value in the page and processing to add the top address of the physical page and the offset value are necessary. There is no direct relationship with the present invention, and a description thereof is omitted.
図60は、セキュアコアとノーマルコアとが備えられたプロセッサにおけるメモリアクセス制御方式の説明図である。同図においてノーマルコア152は、第1の実施例における図12と同様に暗号処理ブロック12とコード認証処理ブロック13による処理とは無関係の従来と同様の処理だけを行うものであり、セキュアコア151は図44においては説明しない暗号処理ブロックによる動作の制御を含めて、コード認証処理ブロックの認証制御を含むセキュア動作を実行可能なものである。
FIG. 60 is an explanatory diagram of a memory access control method in a processor provided with a secure core and a normal core. In the figure, the
図60においてメモリアクセス制御部105の制御によって、セキュアコア151からはセキュアページフラグフィールドのセットされたPTEに対応する物理ページの使用は許可されるが、ノーマルコアからはそのページが利用できないようにする制御が行われる。
60, the use of a physical page corresponding to the PTE in which the secure page flag field is set is permitted from the
なお図44において、セキュアコアから制御されるコード認証処理ブロックはメモリアクセス制御部105を含み、認証部107、暗号化/復号、署名生成/検証部108、セキュアコンテキスト識別子生成部109、セキュアコンテキスト識別子消滅部110、プロセッサ固有鍵111、認証情報一次格納部112、セキュアDMA113、セキュアコンテキスト識別子レジスタ118、認証鍵レジスタ119、およびPTE122の内部のセキュアページフラグフィールドとセキュアコンテキスト識別子に相当する。
44, the code authentication processing block controlled from the secure core includes a memory
なお図60においてセキュアコア151は、認証処理が終了し、セキュアページフラグフィールドがPTEにセットされた物理ページ内の実行コードのみを実行し、ノーマルコア152は認証されていない通常コードのみを実行することを基本とするが、ノーマルコアが通常コードに加えて認証されたコードを実行可能とするよう構成することも可能である。
In FIG. 60, the
図61は、セキュアモードとノーマルモードとを切り替えるコアを備えるプロセッサの構成ブロック図である。同図においてはコア154の内部にモードレジスタ155が備えられ、セキュアモードの場合だけセキュアページフラグフィールドが設定されたページを利用可能とするものである。なおセキュアモードとノーマルモードの切り替えは、例えば通常のユーザモードとカーネルモードとの切り替えのように割込みをトリガとする方法でもよく、他の方法を用いても良い。
FIG. 61 is a configuration block diagram of a processor including a core that switches between a secure mode and a normal mode. In the figure, a
図62はメモリアクセス制御方式としての、図44におけるセキュアDMA113による物理メモリ101へのページデータ転送方式の説明図であり、図63はセキュアDMA113によるデータ転送処理のフローチャートである。例えば図53や図54のページイン処理では、物理ページに実行コードとしてのページデータが格納された後にその実行コードの認証を行うものとしたが、認証処理においてはハッシュ値の計算などの処理を必要とするため、ここではページデータの転送単位毎にハッシュ値を計算し、その結果をハッシュ演算の中間結果として保持する動作を繰返し、転送終了時点ではハッシュ演算を終了して、その結果をその後の認証処理に利用するものである。
FIG. 62 is an explanatory diagram of a page data transfer method to the
図62においてセキュアDMA113は、コア154からのデータの転送元アドレス、転送先アドレス、転送サイズを受け取る転送管理部157、I/O装置102からデータを読み出すデータ読み出し器158、ハッシュ演算を行うハッシュ演算器159、物理メモリ101にページデータを書き込むデータ書込み器160、物理ページの先頭アドレスとそのページに対するハッシュ値を保持する物理ページ先頭アドレス保持部161を備えている。
62, the
図63において処理が開始されると、コア154上で動作するプログラム、一般にはOSから転送元アドレスなどの指示を受けた転送管理部157によって、データ読み出し器158に対してI/O装置102から次の64バイトのデータの読み出しが指示され、ステップS111でデータ読み出し器158によって64バイトのデータが読み出され、ステップS112で転送管理部157によってハッシュ演算器159に対してハッシュ演算が指示され、ステップS113でハッシュ演算器159によってハッシュ演算が行われ、その中間結果が内部に保持され、ステップS114で転送管理部157からデータ書き込み器160に対して物理メモリ101への64バイトのデータの書込みが指示され、ステップS115でデータ書き込み器160によって64バイトのデータが物理メモリ101に書き込まれ、ステップS116で1ページのデータ転送が終了したか否かが判定され、終了していない場合にはステップS110からの処理が繰り返され、終了している場合には転送管理部157によって転送先アドレスとしての物理ページ先頭アドレスとハッシュ値のペアが保持部161に与えられて処理を終了する。
When the processing is started in FIG. 63, the program running on the
図64はメモリアクセスの制御を含むコード実行時の処理フローチャートである。同図は代表的にはOSによるページイン時の処理のフローチャートであり、本発明の特徴は太線で囲まれた処理にある。処理が開始されるとまずステップS120でセキュアDMA113に対して転送元/先アドレス、転送サイズなどが指示され、ステップS121で転送が成功したか否かが判定され、成功した場合にはステップS122で図54のステップS81からS83におけると同様にTLB内のPTEに各種情報が設定され、ステップS123でステップS84と同様にセキュアページフラグフィールドのセットが要求され、認証部による認証処理が実行された後にステップS124でフラグのセットが成功したか否かが判定され、成功した場合には処理を終了する。またステップS121で転送が失敗した場合、ステップS124でセットが失敗した場合には直ちに処理を終了する。
FIG. 64 is a process flowchart at the time of code execution including control of memory access. This figure is typically a flowchart of processing at the time of page-in by the OS, and the feature of the present invention is in processing surrounded by a thick line. When the processing is started, first, in step S120, the
以上のように第6の実施例によれば、既に認証が成功した実行コードへのアクセスに対してもセキュアコンテキスト識別子やセキュアページフラグフィールドのチェックが行われた後にアクセスが許可される。 As described above, according to the sixth embodiment, access to an execution code that has already been successfully authenticated is permitted after the secure context identifier and the secure page flag field are checked.
最後に本発明の第7の実施例について図65から図74を用いて説明する。この第7の実施例では、例えばコンテキストスイッチに対応したコンテキスト情報やPTEの、例えば主記憶への退避に当って、データを保護するための暗号化、または改ざん検出情報の付加が行われる。例えば第1の実施例では認証された実行コードが暗号化されて物理メモリに格納されるものとしたが、第7の実施例では、例えばコンテキスト情報が暗号化されて物理メモリに格納される。 Finally, a seventh embodiment of the present invention will be described with reference to FIGS. In the seventh embodiment, for example, when saving context information and PTE corresponding to a context switch to, for example, main memory, encryption for protecting data or addition of alteration detection information is performed. For example, in the first embodiment, the authenticated execution code is encrypted and stored in the physical memory. However, in the seventh embodiment, for example, context information is encrypted and stored in the physical memory.
図65は、そのコンテキスト情報暗号化方式の説明図である。同図においては図44で説明したコンテキスト情報格納部115に格納されているコンテキスト情報のすべてが暗号器165によってプロセッサ固有鍵111を用いて暗号化され、暗号化コンテキスト情報166として物理メモリ101に格納される。
FIG. 65 is an explanatory diagram of the context information encryption method. In the figure, all of the context information stored in the context
図66は、図65に対応するコンテキスト情報の復号方式の説明図である。物理メモリ101に格納されている暗号化コンテキスト情報166は、コンテキストスイッチによって必要となった時点でプロセッサ固有鍵111を用いて復号器168によって復号され、コンテキスト情報格納部115に格納される。
FIG. 66 is an explanatory diagram of a context information decoding method corresponding to FIG. The
図67は、コンテキスト情報への改ざん検出情報の付加方式の説明図である。同図においてコンテキスト情報格納部115に格納されているコンテキスト情報に対して、プロセッサ固有鍵111を用いて改ざん検出情報170が改ざん検出情報生成器169によって生成され、物理メモリ101にコンテキスト情報とともに格納される。
FIG. 67 is an explanatory diagram of a method for adding falsification detection information to context information. In the figure, for the context information stored in the context
図68は、図67に対応する改ざん検出情報を用いたコンテキスト情報に対する改ざん検出方式の説明図である。同図においてコンテキスト情報に付加された改ざん検出情報170を用いて、改ざん検出器172によってプロセッサ固有鍵111を用いた改ざん検出が行われる。
68 is an explanatory diagram of a falsification detection method for context information using falsification detection information corresponding to FIG. In the figure, the falsification detection using the processor
図69は、コンテキスト情報格納部115に格納されたコンテキスト情報のうちでセキュアな動作に必要となるコンテキスト情報と、通常のコンテキスト情報とを区分し、セキュア動作用コンテキスト情報175だけを暗号化するコンテキスト情報暗号化方式の説明図である。この方式では、プロセッサの核となる部分の変更は極力行わないように通常のコンテキスト情報176、すなわち既存コンテキストIDなどのコンテキスト情報は従来と同様に暗号化せずに扱うこととし、認証鍵レジスタ119、セキュアコンテキスト識別子レジスタ118の格納内容をセキュア動作用コンテキスト情報175として暗号化するものである。
FIG. 69 illustrates a context in which context information necessary for secure operation and normal context information are distinguished from context information stored in the context
既存コンテキストIDとしては、例えばOSの動作としてセキュアコンテキスト識別子と同じ値を格納することも可能であるものとする。例えばOSが悪意をもったコードに書き換えられたような場合には2つの識別子の値が同じとなる保証がなくなるが、同じ値であるときのみプロセッサを動作可能とさせるように構成することで、同じ値でない場合には動作しないという安全サイドに倒れ、問題は発生しない。 As the existing context ID, for example, it is possible to store the same value as the secure context identifier as the operation of the OS. For example, when the OS is rewritten with malicious code, there is no guarantee that the values of the two identifiers will be the same, but by configuring the processor to be operable only when the values are the same, If it is not the same value, it will fall to the safe side that it will not work, and no problem will occur.
図69においてセキュア動作用コンテキスト情報175だけがプロセッサ固有鍵111を用いて暗号器/復号器174によって暗号化され、暗号化コンテキスト情報177として物理メモリ101に格納され、通常のコンテキスト情報176は平文コンテキスト情報176としてそのまま物理メモリ101に格納される。
In FIG. 69, only the secure
図70は、セキュア動作用コンテキスト情報175に対して改ざん検出情報を付加して物理メモリ101に格納するコンテキスト情報格納方式の説明図である。同図においては改ざん検出情報生成器/改ざん検出器179によって、プロセッサ固有鍵111を用いてセキュア動作用コンテキスト情報175に対する改ざん検出情報180が生成され、物理メモリ101にセキュア動作用コンテキスト情報175と通常のコンテキスト情報、すなわち平文コンテキスト情報176とともに格納される。なおここでは通常のコンテキスト情報としてのプログラムカウンタの値やレジスタ群の値に対しては暗号化などを行わないものとしたが、さらに信頼性を向上させるためにはこのような通常コンテキスト情報についても暗号化、あるいは改ざん検出情報の付加を行うことも当然可能である。
FIG. 70 is an explanatory diagram of a context information storage method in which falsification detection information is added to the secure
図71から図74は、ページ・テーブル・エントリ(PTE)122の格納内容の保護方式の説明図である。図71はPTEの暗号化方式を示し、PTE122の格納内容、すなわちセキュアページフラグフィールド、セキュアコンテキスト識別子、論理アドレス、および物理アドレスの値がプロセッサ固有鍵111を用いて暗号器165によって暗号化され、暗号化PTE183として物理メモリ内のページテーブル182に格納される。
FIG. 71 to FIG. 74 are explanatory diagrams of the protection method for the stored contents of the page table entry (PTE) 122. FIG. 71 shows the PTE encryption method, and the stored contents of the
図72は、図71に対応する暗号化PTEの復号方式の説明図である。同図において物理メモリ101に格納されている暗号化PTE183は、プロセッサ固有鍵111を用いて復号器168によって復号され、TLB114の内部にPTEとして格納される。
FIG. 72 is an explanatory diagram of the decryption method of the encrypted PTE corresponding to FIG. In the figure, the
図73はPTEへの改ざん検出情報付加方式、図74はPTEに対する改ざん検出方式の説明図である。図73においては改ざん検出情報生成器169によってプロセッサ固有鍵111を用いてPTE122に対する改ざん検出情報185が生成され、PTE122とともにページテーブル182に格納される。
FIG. 73 is an explanatory diagram of a falsification detection information addition method for PTE, and FIG. 74 is an explanatory diagram of a falsification detection method for PTE. In FIG. 73, the falsification
図74においては改ざん検出情報185とプロセッサ固有鍵111とを用いて、改ざん検出器172によってページテーブル182に格納されているPTE122に対する改ざん検出が行われる。
In FIG. 74, falsification detection for the
以上のように第7の実施例では、セキュアプロセッサによって使用されるコンテキスト情報とPTEに対しても暗号化や改ざん検出の処理が行われ、情報処理の安全性がさらに向上する。 As described above, in the seventh embodiment, the context information and PTE used by the secure processor are also processed for encryption and tampering detection, thereby further improving the security of information processing.
以上において本発明のセキュアプロセッサ、およびセキュアプロセッサ用プログラムについてその詳細を説明したが、このセキュアプロセッサを一般的なコンピュータシステムの基本要素とすることが可能である。図75はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。 Although the details of the secure processor and the secure processor program of the present invention have been described above, the secure processor can be a basic element of a general computer system. FIG. 75 is a block diagram showing the configuration of such a computer system, that is, a hardware environment.
図75においてコンピュータシステムは中央処理装置(CPU)200、リードオンリメモリ(ROM)201、ランダムアクセスメモリ(RAM)202、通信インタフェース203、記憶装置204、入出力装置205、可搬型記憶媒体の読取り装置206、およびこれらの全てが接続されたバス207によって構成されている。
75, the computer system includes a central processing unit (CPU) 200, a read only memory (ROM) 201, a random access memory (RAM) 202, a
記憶装置204としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置204、またはROM201に図3〜図5、図7、図9〜図11、その他のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項7、19、および20のプログラムなどが格納され、そのようなプログラムがCPU200によって実行されることにより、本実施形態におけるセキュアプロセッサの動作、暗号鍵の設定、コード認識処理、および暗号処理などが可能となる。
Various types of storage devices such as a hard disk and a magnetic disk can be used as the
このようなプログラムは、プログラム提供者208からネットワーク209、および通信インタフェース203を介して、例えば記憶装置204に格納されることも、また市販され、流通している可搬型記憶媒体210に格納され、読取り装置206にセットされて、CPU200によって実行されることも可能である。可搬型記憶媒体210としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVDなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取り装置206によって読取られることにより、本実施形態におけるセキュアプロセッサの動作が可能となる。
Such a program is stored in, for example, the
(付記1)
命令コードを実行するコアを備えるプロセッサであって、
該コアに固有の鍵を記憶する鍵記憶手段と、
暗号化された命令コードを書き換え不可能な形式で記憶する命令コード記憶手段と、
該命令コード記憶手段に記憶された命令コードを含む命令コードの認証を前記固有鍵あるいは固有鍵による認証済鍵を用いて行う認証処理手段と、
該コアと外部との間で入出力されるデータを暗号化する暗号処理手段とを備えることを特徴とするセキュアプロセッサ。
(付記2)
前記暗号処理手段が、前記認証処理手段によって認証された命令コードを暗号化し、ページ単位で前記セキュアプロセッサに接続された記憶装置に格納することを特徴とする付記1記載のセキュアプロセッサ。
(付記3)
前記記憶装置に格納されたページ単位の暗号化命令コードの実行時に不正命令が検出された時、該ページ単位の暗号化命令コードの実行を停止する不正命令実行停止手段を備えることを特徴とする付記2記載のセキュアプロセッサ。
(付記4)
前記認証処理手段が認証対象とする命令コードに認証情報が付加されていることを特徴とする付記1記載のセキュアプロセッサ。
(付記5)
前記認証情報内に暗号化の鍵が指定されている時、前記暗号処理手段が該指定されている鍵を使用してさらに前記命令コードの暗号化を行うことを特徴とする付記4記載のセキュアプロセッサ。
(付記6)
前記認証情報内に暗号化の鍵が指定されていない時、前記暗号処理手段が任意のページ鍵を使用してさらに前記命令コードの暗号化を行うことを特徴とする付記4記載のセキュアプロセッサ。
(付記7)
前記暗号処理手段が、前記認証された命令コードに対応する同一プロセスのデータに対して、該命令コードに対する暗号鍵と異なる暗号鍵を用いて該データの暗号化を行うことを特徴とする付記1記載のセキュアプロセッサ。
(付記8)
前記セキュアプロセッサに接続された記憶装置内でデータの格納領域に格納された命令コードの実行時に前記異なる暗号鍵に代わって命令コードに対する暗号鍵を使用することを特徴とする付記7記載のセキュアプロセッサ。
(付記9)
前記セキュアプロセッサにおいて、
前記認証処理手段による認証が失敗した命令コードの実行を停止させるコード実行停止処理手段をさらに備えることを特徴とする付記1記載のセキュアプロセッサ。
(付記10)
前記コアとして、
前記認証処理手段によって認証された命令コードのみを実行するセキュアコアと、
前記認証処理手段によって認証されていない通常の命令コードも実行可能なノーマルコアとを備えることを特徴とする付記1記載のセキュアプロセッサ。
(付記11)
前記命令コード記憶手段に記憶された暗号化命令コードを用いて前記セキュアコアがブートされるとともに、
該セキュアコアが該ブート完了後に前記ノーマルコアのブートを行わせるノーマルコアブート手段を備えることを特徴とする付記10記載のセキュアプロセッサ。
(付記12)
前記セキュアコアが、前記ノーマルコアのブート後に該ノーマルコアの動作を監視し、異常状態を検出した時、該ノーマルコアの動作停止、または特定処理への分岐を行わせるノーマルコア監視手段を備えることを特徴とする付記11記載のセキュアプロセッサ。
(付記13)
前記セキュアコアが、前記ノーマルコアに対してコア制御信号を与え、ノーマルコアの動作を制御することを特徴とする付記10記載のセキュアプロセッサ。
(付記14)
前記コア固有鍵に対するアクセスが、前記セキュアコアに対して許可され、前記ノーマルコアに対して禁止されることを特徴とする付記10記載のセキュアプロセッサ。
(付記15)
前記セキュアコアの制御のもとで、前記コア固有鍵を用いて公開鍵と秘密鍵のペア、および共通鍵を生成する鍵生成手段をさらに備えることを特徴とする付記14記載のセキュアプロセッサ。
(付記16)
前記セキュアコアが、前記ノーマルコアを経由して前記鍵生成手段によって生成された公開鍵を外部に通知し、
外部から該公開鍵によって暗号化された原文をノーマルコアを経由して受け取り、前記秘密鍵を用いて原文を復号することを特徴とする付記15記載のセキュアプロセッサ。
(付記17)
前記原文が情報の暗号化に使用された鍵であることを特徴とする付記16記載のセキュアプロセッサ。
(付記18)
プロセッサにおいて命令コードを実行するコアによって使用されるプログラムであって、
暗号化された命令コードが書き換え不可能な形式で記憶されたメモリ内のプログラムを用いて自コアの起動処理を行う手順と、
該メモリ内に記憶された命令コードを含む命令コードの認証処理を行う認証処理ブロックと、前記コア固有の鍵を管理する鍵管理処理と、該認証処理ブロックによって認証された命令コードの暗号化/復号処理に用いられる鍵が格納された鍵テーブルに対する操作処理とをセットアップする手順と、
前記認証処理ブロックを用いて二次記憶上のプログラムの認証処理を行う手順と、
起動されたオペレーティングシステムを含む該認証処理済みのプログラムの実行時に前記命令コードの暗号化/復号のための鍵処理を含む処理を実行する鍵処理モニタとしての動作を行う手順とを計算機に実行させるためのセキュアコア用プログラム。
(付記19)
プロセッサにおいて命令コードを実行するコアによって使用されるプログラムであって、
暗号化された命令コードが書き換え不可能な形式で記憶されたメモリ内のプログラムを用いて、自コアの起動処理を行う手順と、
オペレーティングシステムを起動する手順と、
該プロセッサ内で前記メモリ内に記憶された命令コードを含む命令コードの認証処理を行う認証処理ブロックによって認証されたプログラム、または認証されていないプログラムを実行し、該認証されたプログラムの実行処理としては、該認証された実行コードに対応して、暗号化/復号用の鍵を用いた処理を含む鍵処理を実行する鍵処理モニタに対する鍵処理の依頼を含みうる処理を実行する手順とを計算機に実行させることを特徴とするノーマルコア用プログラム。
(付記20)
命令を実行する命令実行手段と、
該命令実行手段からのコマンドに対応して外部のメモリに対するデータのロード/ストアを制御するロード/ストア制御手段と、
該ロード/ストア制御手段と外部のメモリとの間でデータの暗号化/復号化を行う暗号処理手段とを備え、
前記命令実行手段が、実行中の命令に対応して該暗号処理手段に対してデータ暗号化/復号化に使用すべき鍵を指定することを特徴とするセキュアプロセッサ。
(付記21)
前記プロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が、該鍵記憶手段に対して前記鍵を指定する鍵番号を出力し、該鍵記憶手段が該鍵番号に対応して前記暗号処理手段に対して、データ暗号化/復号化に使用すべき鍵を与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記22)
前記セキュアプロセッサにおいて、外部からロードされた命令フェッチデータの復号化に使用されるべき鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が命令フェッチ状態にある時、該鍵記憶手段が前記暗号処理手段に対して該復号化用の鍵を与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記23)
前記セキュアプロセッサにおいて、
複数個の鍵を記憶する鍵記憶手段と、
前記命令実行手段によって出力され、前記鍵を指定するための鍵番号を記憶する鍵番号記憶手段とを備え、
該鍵記憶手段が、該鍵番号記憶手段から与えられる鍵番号に対応して前記データ暗号化/復号化に使用すべき鍵を前記暗号処理手段に対して与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記24)
前記セキュアプロセッサにおいて、
外部からロードされる命令フェッチデータの復号化に使用されるべき鍵を含む複数の鍵を記憶する鍵記憶手段と、
外部からロードされた命令フェッチデータの復号化に使用されるべき鍵の鍵番号を記憶する鍵番号記憶手段とをさらに備え、
前記命令実行手段が命令フェッチ状態にある時、該鍵番号記憶手段から出力される鍵番号に対応して該鍵記憶手段が、命令フェッチデータの復号化に使用されるべき鍵を前記暗号処理手段に与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記25)
前記命令実行手段が、前記鍵を指定するための信号として鍵の番号に加えて命令に対応するスーパバイザ/ユーザ切り替え信号を出力することを特徴とする付記20記載のセキュアプロセッサ。
(付記26)
前記命令実行手段が、前記鍵を指定するための信号として鍵の番号に加えて実行中の命令が含まれるプロセスの識別子を出力することを特徴とする付記20記載のセキュアプロセッサ。
(付記27)
前記ロード/ストア制御手段が、
ライトスルー方式のキャッシュメモリと、
外部のメモリにストアすべきデータと該外部メモリから前記暗号処理手段を介してロードされたデータとを結合して暗号処理手段に与えるリードモディファイライト手段とをさらに備えることを特徴とする付記20記載のセキュアプロセッサ。
(付記28)
前記セキュアプロセッサにおいて、
前記ロード/ストア制御手段と外部メモリとの間で、前記暗号処理手段をバイパスして、暗号化/復号化を行うことなく、平文データの転送を行うデータバイパス手段をさらに備えることを特徴とする付記20記載のセキュアプロセッサ。
(付記29)
命令を実行する命令実行手段と、
該命令実行手段からのコマンドに対応して外部のメモリに対するデータのロード/ストアを制御するロード/ストア制御手段と、
該ロード/ストア制御手段と外部のメモリとの間でデータの暗号化/復号化を行う暗号処理手段とを備え、
前記命令実行手段が、実行中の命令によるデータ/命令フェッチのアクセスアドレスに対応させて、該暗号処理手段に対してデータ暗号化/復号化に使用すべき鍵を指定する信号を与えることを特徴とするセキュアプロセッサ。
(付記30)
前記プロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が、前記アクセスアドレスとしての論理アドレスを該鍵記憶手段に対して出力し、該鍵記憶手段が該論理アドレスに対応して前記データ暗号化/復号化用の鍵を前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記31)
前記セキュアプロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、
前記ロード/ストア制御手段が、前記命令実行手段から与えられるコマンドに対応して前記アクセスアドレスとしての物理アドレスを該鍵記憶手段に対して出力し、該鍵記憶手段が該物理アドレスに対応して前記データ暗号化/復号化用の鍵を前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記32)
前記セキュアプロセッサにおいて、前記アクセスアドレスとしての論理アドレスと物理アドレスとのそれぞれに対応させてそれぞれ複数の鍵を記憶する鍵記憶手段をさらに備え、
該鍵記憶手段に対して前記ロード/ストア制御手段から与えられる前記アクセスアドレスとしての物理アドレスと、前記命令実行手段から与えられる論理アドレスとのいずれを選択すべきかを示す該命令実行手段からの指示に対応して、該鍵記憶手段が選択したアドレスに対応する前記データ暗号化/復号化用の鍵を前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記33)
前記セキュアプロセッサにおいて、
前記アクセスアドレスとしての論理アドレスと物理アドレスとのそれぞれに対応させてそれぞれ複数の鍵を記憶する鍵記憶手段と、
前記命令実行手段によって出力され、前記暗号処理手段に対して論理アドレスと物理アドレスのいずれに対応する鍵を与えるべきかを示すアドレス選択指示のデータを記憶するアドレス選択指示記憶手段とをさらに備え、
該鍵記憶手段が、該アドレス選択指示記憶手段の記憶内容に従って論理アドレスと物理アドレスとのいずれかに対応する鍵を前記データ暗号化/復号化用の鍵として前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記34)
前記ロード/ストア制御手段が、前記アクセスアドレスに対応して複数の鍵を記憶する鍵記憶手段をさらに備え、
該ロード/ストア制御手段が、前記命令実行手段から命令実行中に与えられたアクセスアドレスに対応して該鍵記憶手段に記憶された鍵を選択し、前記データ暗号化/復号化用の鍵として前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記35)
前記命令実行手段が前記暗号処理手段に対して、前記鍵記憶手段のON/OFFを示す信号と、該鍵記憶手段がOFFの時に前記データ暗号化/復号化に使用されるべき鍵を与える信号とを出力し、
該暗号処理手段が前記ON/OFF信号に対応して、前記鍵記憶手段がONの時には鍵記憶手段から与えられる鍵を、OFFの時には該命令実行手段から与えられる鍵を前記データ暗号化/復号化用の鍵として使用することを特徴とする付記34記載のセキュアプロセッサ。
(付記36)
前記命令実行手段が前記鍵を指定するための信号として、前記アクセスアドレスに加えて、実行中の命令に対応するスーパバイザ/ユーザ切り替え信号を出力することを特徴とする付記29記載のセキュアプロセッサ。
(付記37)
前記命令実行手段が、前記鍵を指定するための信号として前記アクセスアドレスに加えて、実行中の命令が含まれるプロセスの識別子を出力することを特徴とする付記29記載のセキュアプロセッサ。
(付記38)
前記ロード/ストア制御手段が、
ライトスルー方式のキャッシュメモリと、
外部のメモリにストアすべきデータと該外部メモリから前記暗号処理手段を介してロードされたデータを結合して該暗号処理手段に与えるリードモディファイライト手段とをさらに備えることを特徴とする付記29記載のセキュアプロセッサ。
(付記39)
前記セキュアプロセッサにおいて、前記ロード/ストア制御手段と外部メモリとの間で前記暗号処理手段をバイパスして、暗号化/復号化を行うことなく、平文データの転送を行うデータバイパス手段をさらに備えることを特徴とする付記29記載のセキュアプロセッサ。
(付記40)
実行コードに対応するプロセスの実行に先立って、該実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するためのセキュアプロセス識別子を、該プロセスの生成命令が発行された時点で生成するセキュアプロセス識別子生成手段と、
該生成されたセキュアプロセス識別子を該プロセスに関連する情報として保持するプロセス情報保持手段とを備えることを特徴とするセキュアプロセッサ。
(付記41)
前記生成され、前記プロセス情報保持手段に保持されているセキュアプロセス識別子を、前記プロセスの消滅時に消去するセキュアプロセス識別子消去手段をさらに備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記42)
前記プロセスに対応する実行コードに認証情報が付与されるとともに、
前記プロセス情報保持手段が、前記生成されたプロセスの生存期間中に行われる実行コード認証のための認証鍵をさらに保持することを特徴とする付記40記載のセキュアプロセッサ。
(付記43)
前記実行コードに付与された認証情報がメモリにおけるページ単位の情報であることを特徴とする付記42記載のセキュアプロセッサ。
(付記44)
前記プロセスに対応する実行コードがメモリの空きページに格納され、該ページのアドレスに対応させて前記セキュアプロセス識別子が前記プロセッサ内のバッファに格納された後に前記ページ単位の認証鍵を用いた該実行コードの認証が成功した時、該バッファに前記セキュアページフラグをセットする認証手段をさらに備えることを特徴とする付記43記載のセキュアプロセッサ。
(付記45)
前記セキュアプロセッサにおいて、
前記実行コードの実際の実行に先立って前記バッファ内に格納されたセキュアプロセス識別子であって、対応する前記セキュアページフラグがセットされているセキュアプロセス識別子と、前記プロセス情報保持手段に保持され、実行すべき命令コードに対応するセキュアプロセス識別子とを比較し、両者が一致した時に前記実行コードが格納されたメモリ上のページへのアクセスを、命令を実行する命令実行部に許可するメモリアクセス制御手段をさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記46)
前記セキュアプロセッサにおいて、
前記実行コードのメモリへの格納に並行して前記実行コードの認証に必要となる演算を行い、該演算の結果を保持して前記認証手段に与える直接メモリアクセス手段をさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記47)
前記セキュアプロセッサにおいて、該プロセッサに固有の暗号化/復号化用の鍵と、
前記バッファ内に格納されたセキュアページフラグ、セキュアプロセス識別子、および実行コードが格納されたメモリページのアドレスの情報を外部に退避、または外部から復帰するに当り、該プロセッサ固有鍵を用いて該情報の暗号化/復号化を行う暗号処理手段とをさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記48)
前記セキュアプロセッサにおいて、
該プロセッサに固有の鍵と、
前記バッファ内に格納されたセキュアページフラグ、セキュアプロセス識別子、および実行コードが格納されたメモリページのアドレスの情報を外部に退避するに当り、該プロセッサ固有鍵を用いて該情報に対する改ざん検出情報を生成して付与し、外部から復帰するに当り該固有鍵を用いて該情報に対する改ざん検出を行う改ざん検出手段とをさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記49)
前記セキュアプロセッサにおいて、それぞれ命令実行ユニットとキャッシュとを備えるコアであって、
前記認証された実行コードのみを実行するセキュアコアと、
該認証されていない通常の実行コードを実行するノーマルコアとを備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記50)
前記ノーマルコアが前記通常コードに加えて前記認証されたコードをも実行することを特徴とする付記49記載のセキュアプロセッサ。
(付記51)
前記セキュアプロセッサにおいて、
実行ユニットとキャッシュメモリとを備えるコアが、前記認証された実行コードのみを実行すべきセキュアモードと、認証されていない通常の実行コードのみを実行すべきノーマルモードとのいずれかの指示が設定されるモード指定手段をさらに備え、
該コアが該指示に対応してセキュアモード、またはノーマルモードのいずれかを実行することを特徴とする付記40記載のセキュアプロセッサ。
(付記52)
前記セキュアプロセッサにおいて、
該プロセッサに固有の暗号化/復号化用の鍵と、
前記プロセス情報保持手段に保持され、前記セキュアプロセス識別子を含む情報を外部に退避、または外部から復帰するに当り、該プロセッサ固有鍵を用いて該情報の暗号化/復号を行う暗号処理手段とをさらに備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記53)
前記セキュアプロセッサにおいて、
該プロセッサに固有の鍵と、
前記プロセス情報保持手段に保持され、前記セキュアプロセス識別子を含む情報を外部に退避するに当り、該プロセッサ固有鍵を用いて該情報に対する改ざん検出情報を生成して付与し、外部から復帰するに当り該固有鍵を用いて該情報に対する改ざん検出を行う改ざん検出手段とをさらに備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記54)
実行コードを含むページをメモリにページインする計算機によって使用されるプログラムであって、
該計算機内の直接メモリアクセス機構に前記ページのメモリへの転送を依頼する手順と、
該転送の成功後に、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに、該ページ内の実行コードに対応するプロセスの実行に先立って該実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するための識別子であって、該プロセスの生成命令が発行された時点で生成されたセキュアプロセス識別子を含み、該ページについてのデータを設定する手順と、
前記ページの認証と、該認証の成功を示すセキュアページフラグの該ページ・テーブル・エントリへのセットとをハードウェアに要求する手順とを計算機に実行させることを特徴とするセキュアプロセッサ用プログラム。
(付記55)
実行コードを含むページをメモリにページインする計算機によって使用される記憶媒体であって、
該計算機内の直接メモリアクセス機構に前記ページのメモリへの転送を依頼するステップと、
該転送の成功後に、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに、該ページ内の実行コードに対応するプロセスの実行に先立って該実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するための識別子であって、該プロセスの生成命令が発行された時点で生成されたセキュアプロセス識別子を含み、該ページについてのデータを設定するステップと、
前記ページの認証と、該認証の成功を示すセキュアページフラグの該ページ・テーブル・エントリへのセットとをハードウェアに要求するステップとを計算機に実行させるセキュアプロセッサ用プログラムを格納した計算機読出し可能可搬型記憶媒体。
(付記56)
実行コードを含むページの認証を行う計算機によって使用されるプログラムであって、
メモリに読み込まれた該ページに対するハッシュ演算を行う手順と、
該ページに付与されている認証情報を復号する手順と、
該ハッシュ演算結果と該復号結果とを比較する手順と、
該比較の結果として一致が検出された時、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに該ページの認証が成功したことを示すセキュアページフラグをセットする手順とを計算機に実行させることを特徴とするセキュアプロセッサ用プログラム。
(付記57)
実行コードを含むページの認証を行う計算機によって使用される記憶媒体であって、
メモリに読み込まれた該ページに対するハッシュ演算を行うステップと、
該ページに付与されている認証情報を復号するステップと、
該ハッシュ演算結果と該復号結果とを比較するステップと、
該比較の結果として一致が検出された時、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに該ページの認証が成功したことを示すセキュアページフラグをセットするステップとを計算機に実行させるセキュアプロセッサ用プログラムを格納した計算機読出し可能可搬型記憶媒体。
(Appendix 1)
A processor comprising a core for executing instruction codes,
Key storage means for storing a key unique to the core;
Instruction code storage means for storing the encrypted instruction code in a non-rewritable format;
Authentication processing means for authenticating an instruction code including the instruction code stored in the instruction code storage means by using the unique key or an authenticated key by the unique key;
A secure processor comprising: encryption processing means for encrypting data input / output between the core and the outside.
(Appendix 2)
The secure processor according to
(Appendix 3)
An illegal instruction execution stop means is provided for stopping execution of the encrypted instruction code for each page when an illegal instruction is detected when executing the encrypted instruction code for each page stored in the storage device. The secure processor according to
(Appendix 4)
The secure processor according to
(Appendix 5)
The secure code according to
(Appendix 6)
The secure processor according to
(Appendix 7)
The encryption processing means encrypts the data of the same process corresponding to the authenticated instruction code using an encryption key different from the encryption key for the instruction code. The described secure processor.
(Appendix 8)
The secure processor according to
(Appendix 9)
In the secure processor,
The secure processor according to
(Appendix 10)
As the core,
A secure core that executes only the instruction code authenticated by the authentication processing means;
The secure processor according to
(Appendix 11)
The secure core is booted using the encrypted instruction code stored in the instruction code storage means,
The secure processor according to
(Appendix 12)
The secure core includes normal core monitoring means for monitoring the operation of the normal core after the normal core is booted and detecting an abnormal state, and causing the normal core to stop operating or branch to a specific process. The secure processor according to
(Appendix 13)
The secure processor according to
(Appendix 14)
The secure processor according to
(Appendix 15)
15. The secure processor according to
(Appendix 16)
The secure core notifies the public key generated by the key generation means via the normal core to the outside,
16. The secure processor according to
(Appendix 17)
The secure processor according to
(Appendix 18)
A program used by a core executing instruction code in a processor,
A procedure for starting the own core using a program in a memory in which an encrypted instruction code is stored in a non-rewritable format;
An authentication processing block for performing an authentication process of an instruction code including an instruction code stored in the memory, a key management process for managing the core-specific key, and an encryption / encryption of the instruction code authenticated by the authentication processing block A procedure for setting up an operation process for a key table in which a key used for the decryption process is stored;
A procedure for performing authentication processing of a program on secondary storage using the authentication processing block;
Causing the computer to execute a procedure for performing an operation as a key processing monitor for executing processing including key processing for encryption / decryption of the instruction code when the authenticated processing program including the activated operating system is executed. Program for secure core.
(Appendix 19)
A program used by a core executing instruction code in a processor,
Using the program in the memory in which the encrypted instruction code is stored in a non-rewritable format, the procedure for starting the own core,
Instructions for booting the operating system;
As an execution process of the authenticated program by executing a program authenticated by an authentication processing block that performs an authentication process of an instruction code including an instruction code stored in the memory or an unauthenticated program in the processor The computer executes a procedure for executing processing that may include a key processing request to a key processing monitor that executes key processing including processing using a key for encryption / decryption, corresponding to the authenticated execution code. A program for a normal core characterized by being executed.
(Appendix 20)
An instruction execution means for executing the instruction;
Load / store control means for controlling data load / store to an external memory in response to a command from the instruction execution means;
Encryption processing means for encrypting / decrypting data between the load / store control means and an external memory,
A secure processor, wherein the instruction execution means designates a key to be used for data encryption / decryption to the encryption processing means in response to an instruction being executed.
(Appendix 21)
The processor further comprises key storage means for storing a plurality of keys,
The instruction execution means outputs a key number designating the key to the key storage means, and the key storage means performs data encryption / decryption to the encryption processing means corresponding to the key number. 21. The secure processor according to
(Appendix 22)
The secure processor further comprises key storage means for storing a key to be used for decrypting the instruction fetch data loaded from the outside,
The secure processor according to
(Appendix 23)
In the secure processor,
Key storage means for storing a plurality of keys;
Key number storage means for storing a key number for designating the key, outputted by the instruction execution means,
The
(Appendix 24)
In the secure processor,
Key storage means for storing a plurality of keys including a key to be used for decrypting instruction fetch data loaded from the outside;
Key number storage means for storing a key number of a key to be used for decryption of instruction fetch data loaded from the outside,
When the instruction execution means is in the instruction fetch state, the key storage means corresponds to the key number output from the key number storage means, and the encryption processing means assigns a key to be used for decrypting the instruction fetch data.
(Appendix 25)
The secure processor according to
(Appendix 26)
The secure processor according to
(Appendix 27)
The load / store control means includes:
Write-through cache memory,
(Appendix 28)
In the secure processor,
The data processing apparatus further comprises a data bypass means for transferring plaintext data between the load / store control means and the external memory without bypassing the encryption processing means and performing encryption / decryption. The secure processor according to
(Appendix 29)
An instruction execution means for executing the instruction;
Load / store control means for controlling data load / store to an external memory in response to a command from the instruction execution means;
Encryption processing means for encrypting / decrypting data between the load / store control means and an external memory,
The instruction execution means provides a signal for designating a key to be used for data encryption / decryption to the encryption processing means in correspondence with an access address of data / instruction fetch by an instruction being executed. A secure processor.
(Appendix 30)
The processor further comprises key storage means for storing a plurality of keys,
The instruction execution means outputs a logical address as the access address to the key storage means, and the key storage means performs the encryption processing on the data encryption / decryption key corresponding to the logical address. The secure processor according to
(Appendix 31)
A key storage means for storing a plurality of keys in the secure processor;
The load / store control means outputs a physical address as the access address to the key storage means in response to a command given from the instruction execution means, and the key storage means corresponds to the physical address. 30. The secure processor according to
(Appendix 32)
The secure processor further comprises key storage means for storing a plurality of keys corresponding to each of the logical address and the physical address as the access address,
An instruction from the instruction execution means indicating which of a physical address as the access address given from the load / store control means to the key storage means and a logical address given from the instruction execution means should be selected 30. The secure processor according to
(Appendix 33)
In the secure processor,
Key storage means for storing a plurality of keys corresponding to each of a logical address and a physical address as the access address;
Address selection instruction storage means for storing data of an address selection instruction that is output by the instruction execution means and that indicates whether a key corresponding to a logical address or a physical address should be given to the cryptographic processing means;
The key storage means provides the encryption processing means with a key corresponding to either a logical address or a physical address as the data encryption / decryption key according to the stored contents of the address selection instruction storage means. The secure processor according to
(Appendix 34)
The load / store control means further comprises key storage means for storing a plurality of keys corresponding to the access addresses;
The load / store control means selects a key stored in the key storage means corresponding to an access address given during instruction execution from the instruction execution means, and uses the key as the data encryption / decryption key. The secure processor according to
(Appendix 35)
The instruction execution means provides the encryption processing means with a signal indicating ON / OFF of the key storage means and a signal for giving a key to be used for data encryption / decryption when the key storage means is OFF And
In response to the ON / OFF signal, the encryption processing means encrypts / decrypts the key given from the key storage means when the key storage means is ON, and the key given from the instruction execution means when the key storage means is OFF. 35. The secure processor according to
(Appendix 36)
30. The secure processor according to
(Appendix 37)
The secure processor according to
(Appendix 38)
The load / store control means includes:
Write-through cache memory,
The
(Appendix 39)
The secure processor further includes data bypass means for transferring plaintext data without bypassing the encryption processing means between the load / store control means and the external memory without performing encryption / decryption.
(Appendix 40)
Prior to execution of a process corresponding to an execution code, a secure process identifier for comparison with a secure process identifier corresponding to a page in which a secure page flag indicating that the page storing the execution code is correctly authenticated is set Secure process identifier generation means for generating the process generation instruction when it is issued;
A secure processor comprising: process information holding means for holding the generated secure process identifier as information related to the process.
(Appendix 41)
41. The secure processor according to
(Appendix 42)
Authentication information is given to the execution code corresponding to the process,
41. The secure processor according to
(Appendix 43)
43. The secure processor according to
(Appendix 44)
Execution code corresponding to the process is stored in an empty page in the memory, and the secure process identifier is stored in a buffer in the processor in association with the address of the page, and then the execution using the authentication key for each
(Appendix 45)
In the secure processor,
A secure process identifier stored in the buffer prior to the actual execution of the execution code, the secure process identifier corresponding to the secure page flag being set, and held in the process information holding means and executed A memory access control unit that compares a secure process identifier corresponding to an instruction code to be executed and permits an instruction execution unit that executes the instruction to access a page on the memory in which the execution code is stored when the two
(Appendix 46)
In the secure processor,
The apparatus further comprises a direct memory access unit that performs an operation necessary for authentication of the execution code in parallel with storing the execution code in a memory, holds the result of the operation, and gives the result to the authentication unit. The secure processor according to
(Appendix 47)
In the secure processor, an encryption / decryption key unique to the processor;
When the secure page flag stored in the buffer, the secure process identifier, and the address information of the memory page storing the execution code are saved outside or restored from the outside, the processor unique key is used to store the information. 45. The secure processor according to
(Appendix 48)
In the secure processor,
A key specific to the processor;
When the information of the address of the memory page storing the secure page flag, the secure process identifier, and the execution code stored in the buffer is saved to the outside, falsification detection information for the information is stored using the processor unique key. 45. The secure processor according to
(Appendix 49)
In the secure processor, each core includes an instruction execution unit and a cache,
A secure core that executes only the authenticated executable code;
41. The secure processor according to
(Appendix 50)
The secure processor according to appendix 49, wherein the normal core executes the authenticated code in addition to the normal code.
(Appendix 51)
In the secure processor,
The core having the execution unit and the cache memory is set to either a secure mode in which only the authenticated execution code is executed or a normal mode in which only a normal execution code that is not authenticated is executed. Further comprising mode designation means,
The secure processor according to
(Appendix 52)
In the secure processor,
An encryption / decryption key specific to the processor;
An encryption processing means for encrypting / decrypting the information using the processor unique key when the information including the secure process identifier is saved outside or restored from the outside, held in the process
(Appendix 53)
In the secure processor,
A key specific to the processor;
When the information including the secure process identifier held in the process information holding unit is saved to the outside, falsification detection information for the information is generated and attached using the processor unique key, and the information is restored from the outside. 41. The secure processor according to
(Appendix 54)
A program used by a computer that pages a page containing executable code into memory,
Requesting the direct memory access mechanism in the computer to transfer the page to memory;
After the transfer is successful, the page table entry in the translation lookaside buffer of the computer correctly authenticates the page that stores the execution code prior to execution of the process corresponding to the execution code in the page. An identifier for comparing with a secure process identifier corresponding to a page in which a secure page flag indicating that the process has been set is included, and includes a secure process identifier generated when the process generation instruction is issued, How to set up data about the page,
A program for a secure processor, which causes a computer to execute authentication of the page and a procedure for requesting hardware to set a secure page flag indicating success of the authentication to the page table entry.
(Appendix 55)
A storage medium used by a computer that pages a page containing executable code into memory,
Requesting the direct memory access mechanism in the computer to transfer the page to memory;
After the transfer is successful, the page table entry in the translation lookaside buffer of the computer correctly authenticates the page that stores the execution code prior to execution of the process corresponding to the execution code in the page. An identifier for comparing with a secure process identifier corresponding to a page in which a secure page flag indicating that the process has been set is included, and includes a secure process identifier generated when the process generation instruction is issued, Setting up data about the page;
Computer readable storing a program for a secure processor that causes a computer to execute authentication of the page and a step of requesting hardware to set a secure page flag indicating success of the authentication to the page table entry. Portable storage medium.
(Appendix 56)
A program used by a computer that authenticates a page containing an execution code,
A procedure for performing a hash operation on the page read into the memory;
A procedure for decrypting the authentication information given to the page;
A procedure for comparing the hash operation result and the decryption result;
When a match is detected as a result of the comparison, the computer sets a secure page flag indicating that the page has been successfully authenticated in a page table entry in the translation lookaside buffer of the computer. A program for a secure processor that is executed by the program.
(Appendix 57)
A storage medium used by a computer for authenticating a page including an execution code,
Performing a hash operation on the page read into memory;
Decrypting the authentication information given to the page;
Comparing the hash operation result with the decryption result;
When a match is detected as a result of the comparison, setting a secure page flag in the page table entry in the translation lookaside buffer of the calculator to indicate that the page has been successfully authenticated. A computer-readable portable storage medium storing a program for a secure processor to be executed.
10、40、100 プロセッサ
11、154 コア
12 暗号処理ブロック
13 コード認証処理ブロック
14 暗号化ROMコード領域
15 CPU固有鍵
17 主記憶
18 二次記憶
20 セキュアハードウェア
21 暗号鍵設定部
22 復号部
23、137 プロセッサ固有RSA秘密鍵
24、114 トランスレーション・ルックアサイド・バッファ(TLB)
25 論理アドレステーブル
26 物理アドレステーブル
27 鍵テーブル
28 署名検証部
29、134 認証局証明書(認証局公開鍵)
31、151 セキュアコア
32、152 ノーマルコア
34 鍵生成機構
41 実行ユニット
42 ロードストアユニット
43 暗号化回路
44 復号化回路
45 キャッシュメモリ
46 メモリ管理ユニット
47、48、73、74、75 鍵テーブルメモリ
51、52、78、79 鍵選択レジスタ
71 リードモデファイライトバッファ
88 アドレスマップレジスタ(AMR)
101 物理ページ
102 I/O装置
105 メモリアクセス制御部
106 命令解釈部
107 認証部
108 暗号化/復号、署名生成/検証部
109 セキュアコンテキスト識別子生成部
110 セキュアコンテキスト識別子消滅部
111 プロセッサ固有鍵
112 認証情報一次格納部
113 セキュアDMA
115 コンテキスト情報格納部
117 プログラムカウンタ
118 セキュアコンテキスト識別子レジスタ
119 認証鍵レジスタ
120 レジスタ群
124 物理ページ
125 ページ
126 認証情報
140 SHA−1ハッシュ演算器
141 RSA復号器
142 比較器
144 命令実行部
155 モードレジスタ
165 暗号器
168 復号器
169 改ざん検出情報生成器
172 改ざん検出器
174 暗号器/復号器
179 改ざん検出情報生成器/改ざん検出器
10, 40, 100
25 Logical address table 26 Physical address table 27 Key table 28
31, 151
101 Physical Page 102 I /
115 Context
Claims (2)
該計算機内の直接メモリアクセス機構に前記ページのメモリへの転送を依頼する手順と、
該転送の成功後に、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに、該ページ内の実行コードに対応するプロセスの実行に先立って該実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するための識別子であって、該プロセスの生成命令が発行された時点で生成されたセキュアプロセス識別子を含み、該ページについてのデータを設定する手順と、
前記ページの認証と、該認証の成功を示すセキュアページフラグの該ページ・テーブル・エントリへのセットとをハードウェアに要求する手順とを計算機に実行させることを特徴とするセキュアプロセッサ用プログラム。 A program used by a computer that pages a page containing executable code into memory,
Requesting the direct memory access mechanism in the computer to transfer the page to memory;
After the transfer is successful, the page table entry in the translation lookaside buffer of the computer correctly authenticates the page that stores the execution code prior to execution of the process corresponding to the execution code in the page. An identifier for comparing with a secure process identifier corresponding to a page in which a secure page flag indicating that the process has been set is included, and includes a secure process identifier generated when the process generation instruction is issued, How to set up data about the page,
A program for a secure processor, which causes a computer to execute authentication of the page and a procedure for requesting hardware to set a secure page flag indicating success of the authentication to the page table entry.
メモリに読み込まれた該ページに対するハッシュ演算を行う手順と、
該ページに付与されている認証情報を復号する手順と、
該ハッシュ演算結果と該復号結果とを比較する手順と、
該比較の結果として一致が検出された時、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに該ページの認証が成功したことを示すセキュアページフラグをセットする手順とを計算機に実行させることを特徴とするセキュアプロセッサ用プログラム。 A program used by a computer that authenticates a page containing an execution code,
A procedure for performing a hash operation on the page read into the memory;
A procedure for decrypting the authentication information given to the page;
A procedure for comparing the hash operation result and the decryption result;
When a match is detected as a result of the comparison, the computer sets a secure page flag indicating that the page has been successfully authenticated in a page table entry in the translation lookaside buffer of the computer. A program for a secure processor that is executed by the program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011129097A JP5316592B2 (en) | 2011-06-09 | 2011-06-09 | Secure processor program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011129097A JP5316592B2 (en) | 2011-06-09 | 2011-06-09 | Secure processor program |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009185006A Division JP4783452B2 (en) | 2009-08-07 | 2009-08-07 | Secure processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011181107A JP2011181107A (en) | 2011-09-15 |
JP5316592B2 true JP5316592B2 (en) | 2013-10-16 |
Family
ID=44692485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011129097A Expired - Lifetime JP5316592B2 (en) | 2011-06-09 | 2011-06-09 | Secure processor program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5316592B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9753867B2 (en) | 2014-06-20 | 2017-09-05 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628579B2 (en) | 2009-06-26 | 2020-04-21 | International Business Machines Corporation | System and method for supporting secure objects using a memory access control monitor |
WO2016097954A1 (en) * | 2014-12-15 | 2016-06-23 | International Business Machines Corporation | System and method for supporting secure objects using memory access control monitor |
US11206128B2 (en) * | 2019-03-08 | 2021-12-21 | International Business Machines Corporation | Secure paging with page change detection |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757919A (en) * | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
JP4226816B2 (en) * | 2001-09-28 | 2009-02-18 | 株式会社東芝 | Microprocessor |
JP3866597B2 (en) * | 2002-03-20 | 2007-01-10 | 株式会社東芝 | Internal memory tamper resistant processor and secret protection method |
EP1542112A4 (en) * | 2002-07-09 | 2008-04-09 | Fujitsu Ltd | Open type general-purpose attack-resistant cpu, and application system thereof |
-
2011
- 2011-06-09 JP JP2011129097A patent/JP5316592B2/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9753867B2 (en) | 2014-06-20 | 2017-09-05 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP2011181107A (en) | 2011-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4447977B2 (en) | Secure processor and program for secure processor. | |
JP5443599B2 (en) | Method and apparatus for providing secure application execution | |
US10313111B2 (en) | Key protecting method and apparatus | |
JP5316592B2 (en) | Secure processor program | |
JP5365664B2 (en) | Secure processor | |
JP6068325B2 (en) | Processor that provides secure application execution | |
JP4783452B2 (en) | Secure processor | |
JP4783451B2 (en) | Secure processor | |
JP2019109910A (en) | Processor | |
JP6085320B2 (en) | Processor, program, system and method | |
JP6480403B2 (en) | apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110609 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130531 |
|
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: 20130611 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130624 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5316592 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |