[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4783451B2 - Secure processor - Google Patents

Secure processor Download PDF

Info

Publication number
JP4783451B2
JP4783451B2 JP2009185005A JP2009185005A JP4783451B2 JP 4783451 B2 JP4783451 B2 JP 4783451B2 JP 2009185005 A JP2009185005 A JP 2009185005A JP 2009185005 A JP2009185005 A JP 2009185005A JP 4783451 B2 JP4783451 B2 JP 4783451B2
Authority
JP
Japan
Prior art keywords
key
secure
instruction
encryption
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2009185005A
Other languages
Japanese (ja)
Other versions
JP2009301565A (en
Inventor
誠司 後藤
順 蒲田
大司 田宮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2009185005A priority Critical patent/JP4783451B2/en
Publication of JP2009301565A publication Critical patent/JP2009301565A/en
Application granted granted Critical
Publication of JP4783451B2 publication Critical patent/JP4783451B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

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.

特開2002−353960号公報JP 2002-353960 A

本発明の第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 secure processor 1 of the present invention comprises a unique key storage means 2, an instruction code storage means 3, an authentication processing means 4, and an encryption processing means 5.

固有鍵記憶手段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 secure processor 1 in units of pages, for example, main memory, or authentication processing means. Authentication information can also be added to the instruction code 4 to be authenticated.

次に図1のセキュアプロセッサ1において、命令コードを実行するコアとして認証処理手段4によって認証された命令コードのみを実行するセキュアコアと、認証されていない通常の命令コードを実行するノーマルコアとを備えることもできる。   Next, in the secure processor 1 in FIG. 1, a secure core that executes only the instruction code authenticated by the authentication processing means 4 as a core for executing the instruction code, and a normal core that executes a normal instruction code that is not authenticated. It can also be provided.

この場合、命令コード記憶手段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.

本発明のキュアプロセッサの原理構成ブロック図である。It is a principle block diagram of the cure processor of the present invention. 第1の実施例におけるプロセッサの基本構成を示すブロック図である。It is a block diagram which shows the basic composition of the processor in a 1st Example. 第1の実施例におけるプロセッサの基本処理フローチャートである。It is a basic processing flowchart of a processor in the 1st example. コード認証処理ブロックと暗号処理ブロックによる処理のフローチャートである。It is a flowchart of the process by a code | cord | chord authentication process block and an encryption process block. 命令領域とデータ領域とによって異なる鍵が指定されている場合の暗号処理ブロックの処理フローチャートである。It is a processing flowchart of a cryptographic processing block when different keys are specified for an instruction area and a data area. 公開鍵で暗号化された暗号鍵の格納方式の説明図である。It is explanatory drawing of the storage system of the encryption key encrypted with the public key. 公開鍵で暗号化された暗号鍵の格納処理フローチャートである。It is a storage process flowchart of the encryption key encrypted with the public key. 認証局の署名が付与された暗号鍵の格納方式の説明図である。It is explanatory drawing of the storage method of the encryption key to which the signature of the certification authority was given. 認証局の署名が付与された暗号鍵の格納処理フローチャートである。It is a storage process flowchart of the encryption key provided with the signature of the certificate authority. 不正命令検出時の処理フローチャートである。It is a processing flowchart at the time of illegal command detection. データ領域に格納された命令に対する鍵付け替え処理のフローチャートである。It is a flowchart of the key change process with respect to the instruction | command stored in the data area. 第2の実施例におけるプロセッサの基本構成を示すブロック図である。It is a block diagram which shows the basic composition of the processor in a 2nd Example. 第2の実施例におけるプロセッサの基本処理フローチャートである。It is a basic processing flowchart of a processor in the 2nd example. セキュアコアとノーマルコアを備えるプロセッサの基本構成を示すブロック図である。It is a block diagram which shows the basic composition of a processor provided with a secure core and a normal core. 図14のプロセッサにおける処理の基本フローチャートである。It is a basic flowchart of the process in the processor of FIG. 図14のプロセッサにおけるセキュアコアによるノーマルコアの動作の停止制御方式の説明図である。It is explanatory drawing of the stop control system of the operation | movement of the normal core by the secure core in the processor of FIG. 図14のプロセッサにおけるセキュアコアによるノーマルコアの動作の停止制御処理のフローチャートである。It is a flowchart of the stop control process of the operation | movement of the normal core by the secure core in the processor of FIG. セキュアコアに対応する鍵生成機構を備えるプロセッサの構成ブロック図である。It is a block diagram of a processor including a key generation mechanism corresponding to a secure core. 図18のプロセッサにおける鍵処理方式の具体例の説明図である。It is explanatory drawing of the specific example of the key processing system in the processor of FIG. 第3の実施例におけるプロセッサの基本構成を示すブロック図である。It is a block diagram which shows the basic composition of the processor in a 3rd Example. 第3の実施例において鍵テーブルメモリを備えるプロセッサの構成ブロック図である。It is a block diagram of the configuration of a processor having a key table memory in the third embodiment. 第3の実施例において命令アクセス状態にあるプロセッサの構成を示すブロック図である。It is a block diagram which shows the structure of the processor in the instruction access state in the 3rd Example. 鍵テーブルメモリに対する鍵選択レジスタを備えるプロセッサの構成ブロック図である。It is a block diagram of a processor including a key selection register for a key table memory. 命令アクセス状態にあり、鍵テーブルメモリに対する鍵選択レジスタを備えるプロセッサの構成ブロック図である。It is a block diagram of the configuration of a processor that is in an instruction access state and includes a key selection register for a key table memory. 鍵テーブルメモリの構成例を示す図である。It is a figure which shows the structural example of a key table memory. 暗号化回路、復号化回路の構成例を示すブロック図である。It is a block diagram which shows the structural example of an encryption circuit and a decoding circuit. データ追い越し機能付き暗号化回路、復号化回路の構成例を示す図である。It is a figure which shows the structural example of the encryption circuit with a data overtaking function, and a decoding circuit. キャッシュスルー方式のロードストアユニットに対応するリードモディファイライト方式の説明図である。It is explanatory drawing of the read modify write system corresponding to the load store unit of a cash through system. 第4の実施例におけるプロセッサの基本構成を示すブロック図である。It is a block diagram which shows the basic composition of the processor in a 4th Example. 論理アドレスが与えられる鍵テーブルメモリを備えるプロセッサの構成ブロック図である。It is a block diagram of a processor including a key table memory to which a logical address is given. 物理アドレスが与えられる鍵テーブルメモリを備えるプロセッサの構成ブロック図である。It is a block diagram of a processor including a key table memory to which a physical address is given. 第4の実施例における鍵テーブルメモリの構成例(その1)を示す図である。It is a figure which shows the structural example (the 1) of the key table memory in a 4th Example. 第4の実施例における鍵テーブルメモリの構成例(その2)を示す図である。It is a figure which shows the structural example (the 2) of the key table memory in a 4th Example. 第4の実施例における鍵テーブルメモリの構成例(その3)を示す図である。It is a figure which shows the structural example (the 3) of the key table memory in a 4th Example. 論理アドレスと物理アドレスとが与えられる鍵テーブルメモリを備えるプロセッサの構成を示すブロック図である。It is a block diagram which shows the structure of a processor provided with the key table memory to which a logical address and a physical address are given. 図35の鍵テーブルメモリに対してアドレス選択指示を与える鍵選択レジスタを備えるプロセッサの構成ブロック図である。FIG. 36 is a configuration block diagram of a processor including a key selection register for giving an address selection instruction to the key table memory of FIG. 35. 図35、図36における鍵テーブルメモリの構成例を示す図である。It is a figure which shows the structural example of the key table memory in FIG. 35, FIG. メモリ管理ユニット内に鍵テーブルが備えられるプロセッサの構成を示すブロック図である。It is a block diagram which shows the structure of the processor by which a key table is provided in a memory management unit. 図38におけるデータアクセス方式の説明図である。It is explanatory drawing of the data access system in FIG. アドレスマップレジスタに鍵テーブルが併設されている場合のデータアクセス方式の説明図である。It is explanatory drawing of the data access system in case the key table is attached to the address map register. メモリ管理ユニットのON/OFF状態に応じて鍵を切り替えるプロセッサの構成を示すブロック図である。It is a block diagram which shows the structure of the processor which switches a key according to the ON / OFF state of a memory management unit. メモリ管理ユニットのON/OFF状態に応じて鍵を切り替える暗号化/復号方式の説明図である。It is explanatory drawing of the encryption / decryption system which switches a key according to the ON / OFF state of a memory management unit. 第3、および第4の実施例における実行ユニットの入出力信号の説明図である。It is explanatory drawing of the input / output signal of the execution unit in the 3rd and 4th Example. 第5の実施例におけるプロセッサシステムの詳細構成ブロック図である。It is a detailed block diagram of the processor system in a 5th Example. セキュアコンテキスト識別子生成方式の説明図である。It is explanatory drawing of a secure context identifier production | generation system. セキュアコンテキスト識別子生成方法の説明図である。It is explanatory drawing of the secure context identifier production | generation method. セキュアコンテキスト識別子消滅方式の説明図である。It is explanatory drawing of a secure context identifier extinction system. 実行コードに付加された認証情報の説明図である。It is explanatory drawing of the authentication information added to the execution code. 公開鍵の認証鍵レジスタへの格納方式の説明図である。It is explanatory drawing of the storage method to the authentication key register | resistor of a public key. 公開鍵の認証鍵レジスタへの格納処理のフローチャートである。It is a flowchart of the storing process to the authentication key register | resistor of a public key. 暗号化された共通鍵の認証鍵レジスタへの格納方式の説明図である。It is explanatory drawing of the storage method to the authentication key register | resistor of the encrypted common key. 暗号化された共通鍵の認証鍵レジスタへの格納処理フローチャートである。It is a storage process flowchart to the authentication key register | resistor of the encrypted common key. 物理メモリへのページイン時の処理方式の説明図である。It is explanatory drawing of the processing system at the time of page-in to a physical memory. 物理メモリへのページイン時の処理フローチャートである。It is a process flowchart at the time of page-in to a physical memory. 認証部の構成を示すブロック図である。It is a block diagram which shows the structure of an authentication part. 認証部の動作フローチャートである。It is an operation | movement flowchart of an authentication part. 第5の実施例におけるページ利用時のメモリアクセス制御部によるアクセスチェック方式の説明図である。It is explanatory drawing of the access check system by the memory access control part at the time of the page utilization in a 5th Example. メモリアクセス制御部の動作例を説明する図である。It is a figure explaining the operation example of a memory access control part. 命令フェッチ時のメモリアクセス制御部の処理フローチャートである。It is a process flowchart of the memory access control part at the time of instruction fetch. セキュアコアとノーマルコアからのページ利用時のアクセス制御方式を説明する図である。It is a figure explaining the access control system at the time of page use from a secure core and a normal core. セキュアモードとノーマルモードを切り替えるためのモードレジスタを備えるプロセッサの構成図である。It is a block diagram of a processor provided with a mode register for switching between a secure mode and a normal mode. セキュアDMAの構成を示すブロック図である。It is a block diagram which shows the structure of secure DMA. セキュアDMAによるデータ転送処理のフローチャートである。It is a flowchart of the data transfer process by secure DMA. OSによるページイン時の処理のフローチャートである。It is a flowchart of the process at the time of page-in by OS. 第7の実施例におけるコンテキスト情報暗号化方式の説明図である。It is explanatory drawing of the context information encryption system in a 7th Example. コンテキスト情報の復号方式の説明図である。It is explanatory drawing of the decoding method of context information. コンテキスト情報に対する改ざん検出情報付加方式の説明図である。It is explanatory drawing of the alteration detection information addition system with respect to context information. コンテキスト情報に対する改ざん検出方式の説明図である。It is explanatory drawing of the alteration detection system with respect to context information. セキュア動作用コンテキスト情報の暗号化方式の説明図である。It is explanatory drawing of the encryption system of context information for secure operations. セキュア動作用コンテキスト情報に対する改ざん検出情報付加方式の説明図である。It is explanatory drawing of the alteration detection information addition system with respect to context information for secure operation | movement. ページ・テーブル・エントリの暗号化方式の説明図である。It is explanatory drawing of the encryption method of a page table entry. ページ・テーブル・エントリの復号方式の説明図である。It is explanatory drawing of the decoding method of a page table entry. ページ・テーブル・エントリへの改ざん検出情報付加方式の説明図である。It is explanatory drawing of the falsification detection information addition system to a page table entry. ページ・テーブル・エントリに対する改ざん検出方式の説明図である。It is explanatory drawing of the falsification detection system with respect to a page table entry. 本発明を実現するためのプログラムのコンピュータへのローディングを説明する図である。It is a figure explaining the loading to the computer of the program for implement | achieving this invention.

以下、本発明の実施形態について詳細に説明するが、まず本発明のセキュアプロセッサの全体的な構成と、その処理の概要を第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 processor 10 includes a core 11 including an execution unit and a cache, command processing with an external interface, encryption processing block 12 for performing encryption and decryption of bus data (program code or data), and instruction code authentication. Code authentication processing block 13 for performing the encryption, the encryption ROM code area 14 in which the most basic program used at the time of starting the processor is encrypted and stored, and the decryption of the program stored in the code area 14 The CPU unique key 15 for performing the above is provided. The operation of the encryption processing block 12 will be described in detail in a third embodiment to be described later, and the operation of the code authentication processing block 13 will be described in more detail in a fifth embodiment.

そしてコア11と暗号処理ブロック12との間では、コマンド、およびデータのやり取りが行われるとともに暗号化のための鍵の制御が行われ、またコア11とコード認証処理ブロック13との間には認証インタフェースが備えられる。さらに暗号処理ブロック12、およびコード認証処理ブロック13は主記憶17に対するアクセスを実行し、またコード認証処理ブロック13は二次記憶18に対するアクセスを実行するものとする。   Commands and data are exchanged between the core 11 and the cryptographic processing block 12 and a key for encryption is controlled. Also, authentication between the core 11 and the code authentication processing block 13 is performed. An interface is provided. Further, it is assumed that the encryption processing block 12 and the code authentication processing block 13 execute access to the main memory 17 and the code authentication processing block 13 executes access to the secondary storage 18.

図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 code area 14 using the CPU unique key 15 in step S1, and executes a boot (startup) process. . Since it is a built-in ROM, alteration of the program is inherently physically difficult, but even if it is altered by some method, the program is encrypted, and meaningful alteration is difficult. Therefore, if the boot can be performed correctly, it can be determined that the program has not been tampered with, and the program stored in the encryption ROM code area 14 can be said to be absolutely reliable. It can be defined as a reliable trust point.

なお、暗号化ROMコード領域14については、64ビット単位の暗号化を行うDES(データ・エンクリプション・スタンダード)方式よりも秘匿強度の大きいAES(アドバンスド・エンクリプション・スタンダード)方式を用いる場合などはプロセッサ内部ではなく外付けとすることもできる。その場合には命令コードのNOP、データパターンのALL0/ALL1など、頻発するパターンに対応して暗号鍵の推定を可能とさせないように、同一の平文に対して常に同一の暗号文が出力されるECB(エレクトリック・コードブック)以外のモードを使用することも可能である。   For the encryption ROM code area 14, when the AES (Advanced Encryption Standard) method, which has a higher secret strength than the DES (Data Encryption Standard) method that performs 64-bit unit encryption, is used. It can also be external rather than inside the processor. In that case, the same ciphertext is always output for the same plaintext so that the encryption key cannot be estimated corresponding to the frequently occurring pattern such as the instruction code NOP and the data pattern ALL0 / ALL1. It is also possible to use modes other than ECB (Electric Codebook).

続いてステップS2で暗号処理ブロック12内に備えられ、後述する鍵テーブル(メモリ)に対する操作処理、CPU固有鍵15を用いた公開鍵や秘密鍵の生成などを行う鍵管理処理、およびコード認証処理ブロック13のセットアップなどが実行され、これらの処理の内容は同様な信頼点として定義される。   Subsequently, in step S2, provided in the encryption processing block 12, an operation process for a key table (memory) described later, a key management process for generating a public key and a secret key using the CPU unique key 15, and a code authentication process The setup of block 13 and the like are executed, and the contents of these processes are defined as similar trust points.

続いてステップS3で二次記憶18に格納されているプログラムに対する認証処理が行われる。この第1の実施例ではオペレーティングシステム(OS)を含む一般のプログラムは、ハードディスクやネットワーク経由など二次記憶18上に格納されており、これらのプログラムに対する認証処理が実行される。この認証処理については、さらに後述する。   Subsequently, an authentication process for the program stored in the secondary storage 18 is performed in step S3. In the first embodiment, general programs including an operating system (OS) are stored on the secondary storage 18 such as via a hard disk or a network, and authentication processing for these programs is executed. This authentication process will be further described later.

前述の鍵テーブル操作処理などを実行するためのプログラム群はライブラリィ化され、鍵処理モニタと呼ばれる。暗号処理ブロック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 secure hardware 20 such as the cryptographic processing block 12, the code authentication processing block 13, and the CPU unique key 15 is restricted to the section in which the key processing monitor is operating in step S4. A state in which the key processing monitor operates and the secure hardware 20 can be accessed is referred to as an access level 1. Access level 1 is realized by hardware that monitors whether the program counter points to the address of the key processing monitor in step S4 in the fixed area.

このアクセスレベル1に比較して前述のOSを含む一般のプログラムによる動作はアクセスレベル2、またはアクセスレベル3に分類される。第1の実施例ではOSはアクセスレベル2に分類され、ステップS5でOSなどの起動が行われると、ステップS6で認証済みプログラムの実行が行われる。アクセスレベル2における認証済みプログラムは、アクセスレベル1におけるステップS4、すなわち鍵処理モニタに対し、鍵処理を依頼する事が出来、自空間の暗号化、データの暗号化や復号など鍵処理モニタ経由で間接的に行うことができる。このようにCPU外部からのプログラムであっても、認証されたものについてはアクセスレベル2として位置づけられ、鍵処理を行うことが出来るが、公開鍵以外のすべての鍵またはセキュアハードウェア20には直接アクセスすることは出来ないため、レベル2のプログラムに何らかの障害が生じたとしても公開鍵を除く鍵情報が外部に流出することはない。   Compared with the access level 1, the operations by the general program including the OS described above are classified into the access level 2 or the access level 3. In the first embodiment, the OS is classified into access level 2, and when the OS or the like is activated in step S5, the authenticated program is executed in step S6. The authenticated program at access level 2 can request key processing to step S4 at access level 1, that is, the key processing monitor, via the key processing monitor such as encryption of its own space, data encryption and decryption. Can be done indirectly. As described above, even if the program is from the outside of the CPU, the authenticated one is positioned as the access level 2 and can perform key processing, but all keys other than the public key or the secure hardware 20 are directly accessed. Therefore, even if some trouble occurs in the level 2 program, the key information excluding the public key does not leak to the outside.

アクセスレベル3における未認証のプログラムの実行は、ステップS7においてステップS5のOSなどの起動の後に行われるが、このアクセスレベル3のプログラムは公開鍵以外のすべての鍵へのアクセス、および鍵処理モニタへの鍵処理の依頼などを行うことは一切できないものとする。なおステップS4からステップS7の処理は各アクセスレベルのプログラム間のプロセス間通信を利用して実行される。   The execution of the unauthenticated program at the access level 3 is performed after the activation of the OS or the like at step S5 in step S7. The program at the access level 3 accesses all keys other than the public key and the key processing monitor. It is not possible to make a request for key processing to the client. Note that the processing from step S4 to step S7 is executed using inter-process communication between programs of each access level.

以上説明したように第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 ROM code area 14 when the processor is started up. After that, by extending the range of programs that can be trusted while authenticating various programs including the OS using the trust points, the purpose of the processor itself to improve the security level of the system in stages is achieved. The In addition, after the operation is started, code and data can be encrypted for each authentication unit, and sufficient reliability can be maintained with respect to maintaining confidentiality between programs. In the first embodiment, the method of realizing the access level 1 processing as software executed by the processor core has been described. However, part or all of the level 1 processing is performed as microcode or wired logic. It can also be realized.

図4は、図2のコード認証処理ブロック13と暗号処理ブロック12による処理の概要を示すフローチャートである。同図においてまずステップS10のコード認証処理ブロックによる処理に続いて、ステップS11で暗号処理ブロックによる処理が行われるものとする。   FIG. 4 is a flowchart showing an outline of processing by the code authentication processing block 13 and the encryption processing block 12 of FIG. In the figure, it is assumed that the processing by the encryption processing block is performed in step S11 following the processing by the code authentication processing block in step S10.

図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 main memory 17 or the secondary memory 18 is executed. Details of this processing will be described later. In step S13, it is determined whether the authentication has succeeded or failed. If the authentication has failed, a stop process for code execution is executed in step S14.

認証が成功した場合には、暗号処理ブロックによる処理が開始され、ステップ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 processor 10 for executing the encryption key setting process inside the processor. The encryption key setting unit 21, the decryption unit 22, the processor-specific RSA private key 23, A translation lookaside buffer (TLB) 24 is provided, and a logical address table 25, a physical address table 26, and a key table 27 corresponding to the aforementioned page table entry (PTE) are provided in the TLB. ing. Then, an encryption key setting request including an encryption key encrypted with the processor-specific RSA public key is given to the encryption key setting unit 21 from the outside.

図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 key setting unit 21 in step S31, and the encrypted encryption key received by the decryption unit 22 in step S32 uses the processor-specific RSA private key 23. In step S33, the encryption key decrypted by the encryption key setting unit 21 is stored in the key table 27 in the TLB 24, and the process ends.

図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 signature verification unit 28 is provided in the processor 10 in place of the decryption unit 22, and the certificate authority public key is used instead of the processor-specific RSA private key 23. The certificate authority certificate 29 is stored. It is assumed that the certificate authority certificate 29 is recorded in the processor so that the unauthorized replacement cannot be performed, and the encryption key setting unit 21 is provided with an encryption including an encryption key signed by the certificate authority. It is assumed that a key setting request is given.

図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 key setting unit 21 in step S36, and the encryption key received by the signature verification unit 28 in step S37 uses the signature and the CA public key. In step S38, it is determined whether or not the verification is successful. If the verification is successful, the encryption key received by the encryption key setting unit 21 is stored in the key table 27 in the TLB 24 in step S39. If the verification fails, the process is immediately terminated. Further, in order to further improve the reliability of the encryption key, it is naturally possible to combine the first operation example, that is, maintaining the confidentiality of the encryption key and the second operation example, that is, the identification of the encryption key. .

図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 core 11 including an execution unit and a cache is provided in the processor 10, and the core 11 operates as a secure processor as a secure core. In a system called multi-processor system or multi-core system, for example, a plurality of cores are classified into a secure core that executes a secure operation and a normal core that executes a normal operation. Can also be shared. Such a processor system will now be described as a second embodiment.

図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 secure core 31 and a normal core 32 are provided in place of the core 11, and these two cores 31, 32 and the cryptographic processing block 12, and A bus interface 33 is provided between the code authentication processing block 13, key control is performed between the secure core 31 and the cryptographic processing block 12, and authentication control is performed between the secure core 31 and the code authentication processing block 13. Further, the CPU unique key 15 is different from the secure core 31 only in that it is connected. That is, in the second embodiment, basically, the encryption processing block 12, the code authentication processing block 13, and the CPU unique key 15 as the secure hardware 20 described in FIG. There is a special feature.

この第2の実施例では、セキュアハードウェア20に対するアクセスはセキュアコア31のみに限定される。第1の実施例ではセキュア動作としての図2のステップS4における鍵処理モニタの動作においてユーザのソフトウェアが介在する余地があり、そのため前述のようにプログラムカウンタのハードウェア監視によるアクセス制限などが行われるが、第2の実施例ではこのようなソフトウェアの介在がなく、ソフトウェアバグによる問題も発生しない。   In the second embodiment, access to the secure hardware 20 is limited to the secure core 31 only. In the first embodiment, there is room for user software to intervene in the operation of the key processing monitor in step S4 of FIG. 2 as a secure operation. For this reason, as described above, access restriction by hardware monitoring of the program counter is performed. However, in the second embodiment, there is no such software intervention, and a problem due to a software bug does not occur.

また、第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 secure core 31 and the normal core 32 in FIG. 12 are basically in an equal relationship, each core uses a program stored in the encryption ROM code area 14 when the power is turned on. Execute the boot process. That is, as described above, the program encrypted using the CPU unique key 15 in the boot process by the secure core is decrypted in step S1, and the boot process is executed. If this boot process is successful, the state is defined as the basic trust point of the program as described above, and the secure core then continues to operate exclusively as a key process monitor, for example.

これに対してノーマルコア32は、主としてOSなどのアクセスレベル2に相当する処理を担当することになる。図13のステップS3ではセキュアコア側で二次記憶上のプログラムの認証処理が実行されるのに対応してノーマルコア32側で電源がオンとなり、ステップS55で暗号化ROMコード領域14内のプログラムによるブート処理が実行される。この時点では、セキュアコア31によって暗号化ROMコード領域14内のプログラムは絶対的に信頼可能であることが判明しているものとすると、ノーマルコア側のブート処理は基本的に問題なく終了し、ステップS5におけるOSなどの起動処理が続いて実行されることになる。   On the other hand, the normal core 32 is mainly in charge of processing corresponding to the access level 2 such as OS. In step S3 of FIG. 13, the power is turned on on the normal core 32 side in response to the authentication process of the program on the secondary storage being executed on the secure core side, and the program in the encrypted ROM code area 14 is turned on in step S55. The boot process is executed. At this point, assuming that the program in the encrypted ROM code area 14 is absolutely reliable by the secure core 31, the boot process on the normal core side basically ends without any problem. The startup process of the OS or the like in step S5 is subsequently executed.

図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 secure core 31 and the normal core 32 are basically in an equal relationship, the components of the processor are the same, but a core control signal is given from the secure core 31 to the normal core 32. Is different. Specific examples of the core control signal include a reset signal and an interrupt signal.

図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 secure core 31 side, system auditing is performed in addition to the key table operation processing, key management processing, and authentication processing block setup instead of step S2 in step S57 following the boot processing in step S1. In this system audit, whether or not the system configuration has been changed and whether or not the program on the secondary storage has been changed is verified, and it is confirmed that there is no problem in the system security function and the system configuration.

その後ステップS58でセキュアコア31側からノーマルコアの起動が行われ、これに対応してノーマルコア32側では、ステップS59で暗号化ROMコード領域14に格納されたプログラムを用いた起動処理が実行される。その後の処理は、例えば図3における場合と同様である。   Thereafter, in step S58, the normal core is activated from the secure core 31 side. In response to this, on the normal core 32 side, activation processing using the program stored in the encrypted ROM code area 14 is executed in step S59. The The subsequent processing is the same as in FIG. 3, for example.

図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 normal core 32 by the secure core 31 in the processor of FIG. In the figure, for example, in the execution of the authenticated program in step S6 on the normal core side, the secure core 31 side is requested to perform key processing for authentication of data and the like, and in the operation of the key processing monitor in step S4, When a violation of the security standard is detected, processing by the normal core 32, that is, execution of the authenticated program in step S6 and execution of the unauthenticated program in step S7 are stopped by an instruction from the secure core 31 side. 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 normal core 32 by the secure core 31 in FIG. On the secure core 31 side, the boot process is executed in step S61. When the process is completed in step S62, the activation control to the normal core 32 side is performed, the normal core is activated in step S63, and released in step S64. Normal processing that does not require a key other than the key or authentication processing is executed on the normal core side. The secure core 31 always performs authentication / monitoring processing using the monitoring information sent from the normal core 32 in step S65. In step S66, it is determined whether an error has occurred. The processing after step S65 is continued, and if an error occurs, a stop request or interruption to the normal core 32 side is performed to stop the processing on the normal core 32 side. For the normal core control by the secure core, the reset signal is used as an example as described above. However, as another method, an NMI (non-maskable interrupt) for the CPU can also be used.

図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 key generation mechanism 34 is provided.

図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 secure core 31 in the processor generates a public key Ke, N and a secret key Kd35 using a CPU unique key 15 and a key generation mechanism 34. For example, a public key Ke, N via a normal core 32 is generated. Shall be notified to the outside. At this time, the secret key Kd is not passed to the normal core 32 side, and the normal core 32 cannot execute a key process other than the public key as described above.

そして例えば外部において公開鍵と原文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 normal core 32, the normal core 32 does not hold the secret key Kd, so the secure core 31 is requested to perform decryption processing. To do. The secure core 31 decrypts the original text P using the secret key Kd.

次に本発明の第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 processor 40 includes an execution unit 41, a load store unit 42, an encryption circuit 43, and a decryption circuit 44, and the load store unit 42 includes a cache memory 45 and a memory management unit 46.

この第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 processor 40. Similarly to the encryption circuit 43 that encrypts the store data and the decryption circuit 44 that decrypts the load data including the fetched instruction, the execution unit 41 sends the store encryption key and the load data. There is a basic feature in that a decryption key is designated.

図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 execution unit 41 to the load / store unit 42, and a plaintext is loaded from the load / store unit 42 to the execution unit 41. Data is given. Of these, the command is given to the main memory and the secondary memory described in FIG. 2 through the load store unit 42, for example, but the store data as plaintext is given to the encryption circuit 43 as encrypted store data. For example, the encrypted load data output to the main memory and input from the main memory, for example, is decrypted by the decryption circuit 44 and supplied to the load store unit 42 as load data as plain text.

図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 key table memory 47 stores an encryption key for encrypting store data, and a key table memory 48 stores a decryption key for decrypting load data. The execution unit 41 gives a key number instruction for storing and an instruction to update the encryption key for storing to the key table memory 47, and an instruction for a key number for loading to the key table memory 48. An instruction to update the decryption key for loading is given. The configuration of the key table memory will be described later.

図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 execution unit 41 performs, for example, an instruction access state process for fetching an instruction stored in the main memory. For example, the instruction fetch data is given to the decoding circuit 44 as load data from the main memory. At this time, the execution unit 41 gives an instruction access status flag to the key table memory 48, and the decryption circuit 44 decrypts the instruction fetch data using the decryption key for instruction fetch output from the key table memory 48, The instruction fetch data as plain text is given to the execution unit 41 via the load / store unit 42. The execution unit 41 gives an instruction to update the instruction fetch decryption key to the key table memory 48 as necessary.

図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 key selection register 51 for giving a key number for store key to the key table memory 47 between the key table memory 47 for storing the store encryption key and the execution unit 41, and a key for storing the decryption key for load A key selection register 52 is provided between the table memory 48 and the execution unit 41 to give a key number for loading to the key table memory 48. The execution unit 41 gives an instruction to update the store key selection register to the key selection register 51, and gives an instruction to update the load key selection register to the key selection register 52.

すなわち図21では実行ユニット41からは実行命令のそれぞれに対応して鍵番号の指示が出力されるのに対して、図23では命令のある区間毎にレジスタの更新指示が与えられ、次の更新指示が与えられるまでは同一の鍵を使用して暗号化/復号化が行われる。なお実行ユニットから鍵テーブルメモリに対して直接に鍵番号指示を与える経路と、鍵選択レジスタを経由した経路との両方を設け、例えば実行ユニット41が実行命令に対応してどちらの経路の指示を用いるべきかの信号を鍵テーブルメモリに与えるような構成も当然可能である。   That is, in FIG. 21, the execution unit 41 outputs a key number instruction corresponding to each execution instruction, whereas in FIG. 23, a register update instruction is given for each section of the instruction, and the next update is performed. Until the instruction is given, encryption / decryption is performed using the same key. It is to be noted that both a path for directly giving a key number instruction from the execution unit to the key table memory and a path via the key selection register are provided. For example, the execution unit 41 instructs which path in response to the execution instruction. It is naturally possible to adopt a configuration in which a signal indicating whether to use is given to the key table memory.

図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 execution unit 41 is in an instruction access state to be fetched from main memory, for example, and an instruction access state flag is given from the execution unit 41 to the key selection register 52. Correspondingly, the key selection register 52 gives an instruction fetch key number instruction to the key table memory 48 that stores the instruction fetch decryption key.

図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 execution unit 41 or via the key selection register. It is used as a read address, and an encryption key or a decryption key is given together with designation information of an encryption method for the encryption circuit 43 or the decryption circuit 44 and attribute data indicating whether encryption is possible. The key update number instruction given from the execution unit 41 is used as a write address, and key update data is written.

各エントリの属性データはエントリの有効/無効、暗号化のオン/オフ、暗号化方式および暗号化モードなどを示し、暗号鍵は指定された暗号化方式に依存するものとなる。なお暗号化のオン/オフを指示するデータは後述するように暗号化/復号化を行うことなく平文データをロード、ストアする場合の指示に対応する。   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 decoding circuit 44 shown in FIG. 20 basically includes a decoding pipe 55 and a bus arbiter 57, and the decoding pipe 55 operates in response to input of command information from the execution unit 51 via the command buffer 59. The decryption pipe 55 is an N-stage pipe for decrypting, for example, encrypted data input from the main memory via the bus into plaintext data, and this N-stage pipe is a conceptual example of one stage of common key encryption processing. A certain process 56 is connected in N stages. The plain text data output from the decryption pipe 55 is stored, for example, in the cache memory 45 of FIG. 20 via the bus arbiter 57.

暗号化回路43は暗号パイプ60とバスアービタ61とによって基本的に構成される。暗号パイプ60に対しては、キャッシュメモリ45から例えば32bitの平文データが与えられ、実行ユニット41から指定される暗号化の鍵を用いてN段のパイプによって暗号化された暗号データが出力され、その暗号データはバスアービタ61を介して、例えば主記憶に接続されたバスに与えられる。暗号パイプ60の動作は復号パイプ55と同様にコマンドバッファ59を介して実行ユニット41から与えられるコマンド情報によって制御される。また暗号パイプ60の各段における処理の基本構造は復号パイプ55におけると同様である。さらに暗号方式としてはAES128、DES、およびSC2000などの各種の暗号化方式を用いることができる。なおAES方式としてはAES192、AES256の仕様も規定されている。   The encryption circuit 43 is basically composed of an encryption pipe 60 and a bus arbiter 61. For example, 32-bit plain text data is given from the cache memory 45 to the encryption pipe 60, and the encryption data encrypted by the N-stage pipe using the encryption key specified by the execution unit 41 is output. The encrypted data is given to, for example, a bus connected to the main memory via the bus arbiter 61. The operation of the encryption pipe 60 is controlled by command information given from the execution unit 41 via the command buffer 59 in the same manner as the decryption pipe 55. The basic structure of processing at each stage of the encryption pipe 60 is the same as that in the decryption pipe 55. Furthermore, various encryption methods such as AES128, DES, and SC2000 can be used as the encryption method. As the AES method, specifications of AES192 and AES256 are also defined.

なお例えばバスアービタ61は主記憶装置や二次記憶装置に接続されたバスに対する調停を行うものであり、本発明におけるセキュアプロセッサの動作とは基本的に無関係である。   For example, the bus arbiter 61 performs arbitration for the bus connected to the main storage device or the secondary storage device, and is basically irrelevant to the operation of the secure processor in the present invention.

図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 cache memory 45. Is directly supplied to the bypass selector 63 without passing through the encryption pipe 60, and is stored in one of the plurality of bypass buffers 64 together with the encrypted data output from the encryption pipe 60, via the bus arbiter 61. For example, it is given to a bus connected to the main memory.

バイパスセレクタ63による平文データ、または暗号化データの選択もコマンドバッファ59を介した実行ユニット41からのコマンド情報によって制御される。暗号パイプ60による処理は時間を要するため、暗号化の必要のない平文データは、バイパスセレクタ63の制御によって暗号化データを追い越して主記憶側に与えられることが可能となる。なお図27で暗号化に必要な鍵は鍵レジスタ69を介して暗号パイプ60に与えられている。   Selection of plaintext data or encrypted data by the bypass selector 63 is also controlled by command information from the execution unit 41 via the command buffer 59. Since processing by the encryption pipe 60 takes time, plain text data that does not need to be encrypted can be given to the main memory side by overtaking the encrypted data under the control of the bypass selector 63. In FIG. 27, the key necessary for encryption is given to the encryption pipe 60 via the key register 69.

例えば主記憶に接続されたバスからのデータのうち、暗号化されていない平文データは復号パイプ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 bypass selector 66 without passing through the decryption pipe 55 and bypassed together with the plaintext data decrypted by the decryption pipe 55. The data is stored in one of the plurality of bypass buffers 67 by the selector 66 and output to the cache memory 45 via the bus arbiter 57.

図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 cache memory 45 employs the write-through method, if a cache miss occurs during storage, the data is not stored in the cache memory 45 but is stored in the main memory as it is. If the data to be stored is, for example, only 1 byte, 1 byte data is stored in the main memory. However, in the third embodiment, the store data is basically stored in the main memory after being encrypted by the encryption circuit 43. In general, a certain amount of data is stored as store data in the encryption process. Even if data of only 1 byte is encrypted and stored in the main memory, correct decryption is difficult.

図28のロードストアユニット42は、例えば1バイトのデータを主記憶に格納する必要があるときに、暗号化の処理に必要な長さのデータを主記憶からロードし、ロードされたデータとストアすべき1バイトのデータを結合し、結合されたデータを暗号化して主記憶に格納するリード・モディファイ・ライト動作を行うものである。   For example, when it is necessary to store 1 byte of data in the main memory, the load / store unit 42 in FIG. 28 loads data of a length necessary for the encryption process from the main memory, and stores the loaded data and the store. A read-modify-write operation is performed in which 1-byte data to be combined is encrypted, and the combined data is encrypted and stored in the main memory.

すなわち、例えば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 cache memory 45 to the main memory in (3). In (4), plain text load data is stored in the read-modify-write (RMW) buffer 71 via the decryption circuit 44, and data to be stored is given to the RMW buffer 71 in (5). Data obtained by combining the data to be stored and the load data is provided to the encryption circuit 43 in 6), and a store as a command is issued to the main memory in (7).

次に本発明の第4の実施例について説明する。この第4の実施例では、第3の実施例において暗号化回路によって使用される暗号化鍵、および復号化回路によって使用される復号化鍵の例えば鍵番号が実行ユニット41によって指定されるのに対して、実行ユニット41による命令実行時にストア、またはロード対象となるデータのアクセスアドレスが実行ユニット41によって指定され、そのアドレスに応じて暗号化鍵、または復号化鍵が選択される点が異なっている。   Next, a fourth embodiment of the present invention will be described. In the fourth embodiment, the execution unit 41 specifies the encryption key used by the encryption circuit and the decryption key used by the decryption circuit in the third embodiment. In contrast, the execution unit 41 specifies an access address of data to be stored or loaded when an instruction is executed by the execution unit 41, and an encryption key or a decryption key is selected according to the address. Yes.

図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 execution unit 41, the encryption circuit 43, and the decryption circuit 44, the processor 40 provides the store encryption key to the encryption circuit 43 corresponding to the address given from the execution unit 41, and decrypts the load. A key table memory 73 is provided for providing the encryption key to the decryption circuit 44.

図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 processor 40 includes a key table memory 74 for storing a store encryption key and a key table memory 75 for storing a load decryption key, as well as a cache memory 45, a memory management unit. For example, a load store unit 42 including 46 is provided as in FIG. The address given from the execution unit 41 to the load store unit 42, that is, the address of the store data or the load data is a logical address, and this logical address is given to the key table memory 74 or 75 to store an encryption key, or A load decryption key is selected and applied to the encryption circuit 43 or the decryption circuit 44, respectively. The execution unit 41 gives an instruction to update the store encryption key to the key table memory 74, and gives an instruction to update the decryption key for load to the key table memory 75.

図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 / store unit 42 to each of the key table memories 74 and 75, and the store encryption is corresponding to the address. The encryption key is given to the encryption circuit 43, and the decryption key for loading is given to the decryption circuit 44, respectively.

図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 encryption circuit 43 or the decryption circuit 44 together with the encryption attribute. When a different key is used for every 4 kbytes as the read address of the memory, the encryption key is selected using the 12th to 31st bits of the address. As will be described later, this 4 kbyte corresponds to the size of one page in the main memory, for example. If this 4 kbyte is called an encryption address unit, the entry data in the key table memory includes an address tag excluding the total number of entries × address unit. For example, if the total number of entries is 32 (5 bits), the 17th to 31st bits of the address are tags.

図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 encryption circuit 43 or the decryption circuit 44.

図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 access address 32 bits is classified into one of the target address ranges corresponding to each of the encryption keys stored by the comparison / selector 77, and the encryption key corresponding to the range is selected and encrypted together with the encryption attribute. To the decoding circuit 43 or the decoding circuit 44. In FIG. 34, the address tag excluding the address unit is included in the entry regardless of the total number of entries. When the address unit is 4 kbytes, the 12th to 31st bits of the address are tags.

図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 key table memories 74 and 75 from the execution unit 41, and a physical address is given to the key table memory 74 from the load store unit 42, and store data is given to the key table memory 74 from the execution unit 41. Are selected, and the key table memory 75 is given a load data logical address and physical address selection instruction. In response to these selection instructions, a key corresponding to either a logical address or a physical address is selected and provided to the encryption circuit 43 and the decryption circuit 44.

図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 execution unit 41 and the key table memories 74 and 75, respectively, and a logical address and physical address selection instruction for store data and a logical for load data are provided. An instruction for selecting an address and a physical address is output to the key table memories 74 and 75. The execution unit 41 gives an instruction to update the key selection register to the key selection registers 78 and 79, respectively.

図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 execution unit 41 side. Alternatively, either the physical key or the logical key is output to the encryption circuit 43 or the decryption circuit 44 together with the encryption attribute by the physical / logical key selection unit 81 in response to the selection instruction from the key selection register.

図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 / store unit 42 using the contents of the key table memory as a key table in the fourth embodiment.

図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 MMU 46 stores the correspondence between the logical address and the physical address in each entry corresponding to each page in the physical memory, for example. In 39, key information corresponding to the page is stored in each entry of the TLB. For example, when the data access address is a logical address, the entry having the same logical address is selected, and the attribute and access of the data corresponding to the entry are selected. The attribute is checked by the attribute check 83, and the command generated by the cache command generation 84 is sent to the cache memory 45.

キャッシュメモリ45側では、受け取ったコマンドの内容に対応してタグを検索し、キャッシュヒットの場合には直ちにデータ応答を実行ユニット41側に返すことになるが、キャッシュミスの場合には暗号化回路43、復号化回路44を含む暗号化・復号化バスインタフェース85に対してタグに対応するコマンドが発行される。このときエントリから読み出された鍵情報や物理アドレスが使用され、例えば主記憶からの応答データが復号化された後にキャッシュメモリに格納され、実行ユニット41にデータ応答が返されることになる。   On the cache memory 45 side, a tag is searched according to the content of the received command, and in the case of a cache hit, a data response is immediately returned to the execution unit 41 side. 43, a command corresponding to the tag is issued to the encryption / decryption bus interface 85 including the decryption circuit 44. At this time, the key information and physical address read from the entry are used. For example, response data from the main memory is decrypted and stored in the cache memory, and a data response is returned to the execution unit 41.

図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 execution unit 41 gives an encryption key to the encryption circuit 43 and the decryption key is sent to the decryption circuit 44 when the memory management unit (MMU) inside the load / store unit is in an operation stop state, that is, in an OFF state. FIG. In the figure, the ON / OFF signal of the MMU is given to the encryption circuit 43 and the decryption circuit 44. When the signal is OFF, the encryption circuit 43 and the decryption circuit 44 are the keys given from the execution unit 41. When the signal is ON, Encryption or decryption processing is executed using a key given from the TLB 87 or the AMR 88 inside the memory management unit 46.

図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 key selector 90 is added to the value of the MMUON / OFF signal given from the execution unit. Accordingly, when the key is OFF, the key given from the execution unit is selected by the key selector 90 and either the TLB or the key given from the AMR is selected when the key is ON, and given to the encryption pipe 60 and the decryption pipe 55.

図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 processor 100 is connected to a physical memory 101, for example, a main memory 17 in FIG. 2, and an I / O device 102, for example, a secondary memory 18.

プロセッサ100は、物理メモリ101、およびI/O装置102へのアクセスを制御するメモリアクセス制御部105、実行すべき命令を解釈する命令解釈部106、実行コードの格納されているページの認証などを行う認証部107、例えば認証後のページの暗号化/復号などを行う暗号化/復号、署名生成/検証部108、プロセスの生成時にそのプロセス、すなわちコンテキストに対応するセキュアコンテキスト識別子を生成するセキュアコンテキスト識別子生成部109、プロセスの消滅時に対応する識別子を消滅させるセキュアコンテキスト識別子消滅部110、暗号化などに用いられるプロセッサ固有鍵111、例えば物理メモリ101に格納されている物理ページに対応する認証情報を格納する認証情報一次格納部112、メモリアクセス時に直接メモリアクセスを行うためのセキュアDMA113を備えている。   The processor 100 performs a memory access control unit 105 that controls access to the physical memory 101 and the I / O device 102, an instruction interpretation unit 106 that interprets an instruction to be executed, authentication of a page in which an execution code is stored, and the like. Authentication unit 107 to perform, for example, encryption / decryption to perform encryption / decryption of a page after authentication, signature generation / verification unit 108, secure context identifier that generates a secure context identifier corresponding to the process, that is, the context when the process is generated An identifier generation unit 109, a secure context identifier annihilation unit 110 that annihilates a corresponding identifier when the process disappears, a processor unique key 111 used for encryption, for example, authentication information corresponding to a physical page stored in the physical memory 101 Authentication information primary storage 112 to store, It is equipped with a secure DMA113 for performing a direct memory access at the time of memory access.

プロセッサ100の内部には、さらに例えば図39で説明したトランスレーション・ルックアサイド・バッファ(TLB)114とコンテキスト情報格納部115が備えられている。TLB114には、例えば物理ページに対応させて論理アドレスと物理アドレスとの対応などを示すページ・テーブル・エントリ(PTE)122が格納され、コンテキスト情報格納部115にはプログラムカウンタ(の値を保持するカウンタ)117、セキュアコンテキスト識別子を格納するセキュアコンテキスト識別子レジスタ118、認証に必要な鍵を格納する認証鍵レジスタ119、およびレジスタ群120を備えている。   The processor 100 further includes, for example, a translation lookaside buffer (TLB) 114 and a context information storage unit 115 described with reference to FIG. In the TLB 114, for example, a page table entry (PTE) 122 indicating a correspondence between a logical address and a physical address in association with a physical page is stored, and the context information storage unit 115 holds a value of a program counter ( Counter) 117, a secure context identifier register 118 for storing a secure context identifier, an authentication key register 119 for storing a key necessary for authentication, and a register group 120.

また物理メモリ101には、例えば実行コードが物理ページ124の単位で格納されており、I/O装置102には実行コードやデータがページ125の単位で認証情報126が付加された形式で格納されている。なお第7の実施例では、セキュアコンテキスト識別子レジスタ118にセキュアコンテキスト識別子が格納されたコンテキスト(プロセス)の実行コードの認証は認証鍵レジスタ119に格納される認証鍵を用いて行われる。   The physical memory 101 stores, for example, execution codes in units of physical pages 124, and the I / O device 102 stores execution codes and data in a format in which authentication information 126 is added in units of pages 125. ing. In the seventh embodiment, the authentication of the execution code of the context (process) in which the secure context identifier is stored in the secure context identifier register 118 is performed using the authentication key stored in the authentication key register 119.

図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 instruction interpretation unit 106 in the processor, a secure context identifier is generated by the secure context identifier generation unit 109 corresponding to the interpretation result, and the value is set in the secure context identifier register 118. In the fifth embodiment, the setting of the value in the secure context identifier register 118 is made possible only by this method. This makes it impossible to falsify the secure context identifier and impersonate other contexts. The context is basically a concept in object-oriented programming, and more generally corresponds to a process, that is, an execution state of a program. In the fifth embodiment, the term context is used instead of a process.

図46は、セキュアコンテキスト識別子の具体的な生成方法の説明図である。その生成には図に示すように乱数発生器127を用いることも、また単調増加カウンタ128を用いることもできる。乱数として同じ値が生成される確率は0でなく、カウンタの値も一巡すると同じ値になるため、厳密には識別子としてのユニーク性が保証できないが、十分長いビット長のセキュアコンテキスト識別子を用いることによって実質的に問題が起きないようにすることができる。   FIG. 46 is an explanatory diagram of a specific method for generating a secure context identifier. For the generation, a random number generator 127 can be used as shown in the figure, or a monotonically increasing counter 128 can be used. The probability that the same value is generated as a random number is not 0, and the counter value will be the same value after a round. Therefore, it is not possible to guarantee uniqueness as an identifier, but a secure context identifier with a sufficiently long bit length should be used. Can substantially prevent problems.

あるいは図に示すようにプロセッサが持つ既存のコンテキスト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 random number generator 127 by the combining unit 129 or combining with the output of the monotonically increasing counter 128. . Note that the existing context ID is an arbitrary value set by the OS, for example, and generally does not guarantee uniqueness.

図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 context identifier register 118. The invalidation method may be 0 clear, or a register storage area for valid / invalid may be provided in the register, and the flag may be set invalid.

図48は、図44において例えばページ単位の実行コード125に付加される認証情報126の説明図である。プロセッサ内のコンテキスト情報115の内部の認証鍵レジスタ119には認証情報126を用いて実行コード125を認証処理するための鍵が格納される。認証情報として、例えばRSAによる電子署名を用いる場合には、認証鍵はRSA公開鍵となり、共通鍵系のSHA(セキュアハッシュアルゴリズム)−1 HMAC(ハッシュベースド・メッセージ・オーセンティケーション・コード)を用いる場合には認証鍵は20バイトの値となる。   FIG. 48 is an explanatory diagram of the authentication information 126 added to the execution code 125 in page units in FIG. A key for authenticating the execution code 125 using the authentication information 126 is stored in the authentication key register 119 inside the context information 115 in the processor. For example, when an electronic signature by RSA is used as the authentication information, the authentication key is an RSA public key, and SHA (secure hash algorithm) -1 HMAC (hash-based message authentication code) of a common key system is used. In this case, the authentication key has a value of 20 bytes.

認証鍵レジスタ119への鍵の格納は、OSによるコンテキストの生成時、すなわちコンテキスト情報が初期化される段階で行われ、同時に認証鍵の正当性のチェックがおこなわれる。認証鍵自体が悪意を持った者によって生成され、その鍵によって悪意を持った実行コードに対応する認証情報が生成されてしまうと、認証処理自体は何の問題もなく成功し、プロセッサによる認証機能が働かなくなることになる。従って認証鍵の正当性をいかに保証するかは重要な課題である。   The key is stored in the authentication key register 119 when the context is generated by the OS, that is, when the context information is initialized, and at the same time, the validity of the authentication key is checked. If the authentication key itself is generated by a malicious person and the authentication information corresponding to the malicious execution code is generated by the key, the authentication process itself succeeds without any problems, and the authentication function by the processor Will not work. Therefore, how to ensure the authenticity of the authentication key is an important issue.

図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 public key 134 is embedded in, for example, a processor at the time of factory shipment, and thereafter cannot be replaced or changed. Shall. The authentication key to be set in the authentication key register 119 is given as a certificate key setting command to the processor at the time of context generation, for example, in a form with a signature by the certificate authority private key. After being interpreted and verified by the signature verification unit 108, it is stored in the authentication key register 119. As a result, only the public key with the certificate authority's certificate is set in the authentication key register.

図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 command interpretation unit 106 in step S71, and the public key fetched by the signature verification unit 108 is verified using the signature and the certificate authority public key in step S72, and verified in step S73. If successful, the public key included in the setting instruction fetched by the instruction interpretation unit 106 is stored in the authentication key register 119. If the verification fails, the process is immediately terminated. To do.

図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 decryption unit 108 using the processor-specific RSA private key 137 on the processor side, and stored in the authentication key register 119. Shall.

図52のフローチャートにおいて、まずステップS76で命令解釈部106によって認証鍵設定命令がフェッチされ、ステップS77でその命令に含まれる暗号化されたHMAC鍵がプロセッサ固有RSA秘密鍵137を用いて復号部108によって復号され、ステップS78で復号されたHMAC鍵が命令解釈部106によって認証鍵レジスタ119に格納されて処理を終了する。   In the flowchart of FIG. 52, first, in step S76, the instruction interpretation unit 106 fetches the authentication key setting instruction, and in step S77, the encrypted HMAC key included in the instruction is decrypted using the processor-specific RSA private key 137. And the HMAC key decrypted in step S78 is stored in the authentication key register 119 by the instruction interpretation unit 106, and the process is terminated.

図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 physical memory 101, and enabling the execution of processing by authenticating the physical page. FIG. 54 is a flowchart of processing in this page-in.

このページインの処理では、まず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 authentication unit 107 is set from the OS. A request to set a secure page flag field as a physical page authentication request is made. After the physical page is authenticated by the authentication unit 107 in response to the request, the flag of the secure page flag field is set. It becomes possible.

図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 context identifier register 118 can be read by the OS. Set the identifier to PTE.

その後ステップ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 authenticating unit 107 as hardware to set the secure page flag field. Is done. It should be noted that the OS itself is already authenticated, and the setting of the secure page flag field is basically the job of the OS, but here the flag setting request from the authenticated OS to the hardware. Is done.

ステップS85で認証部107による認証処理が実行される。この処理の詳細については後述する。この処理ではセキュアコンテキスト識別子に対応するコンテキストの認証鍵と、認証情報一次格納部112に格納された認証情報とを用いて物理ページの認証が行われ、ステップS86で認証が成功したか否かが判定され、成功した場合にはセキュアページフラグフィールドのフラグがセットされ、以後そのPTEが使用可能となる。これに対して失敗した場合にはそのフィールドのフラグはリセットされ、そのPTEは使用不可とされ、ステップS89でOSによるリカバリまたはエラー処理が行われる。   In step S85, authentication processing by the authentication unit 107 is executed. Details of this processing will be described later. In this process, the physical page is authenticated using the authentication key of the context corresponding to the secure context identifier and the authentication information stored in the authentication information primary storage unit 112, and whether or not the authentication is successful in step S86. If the determination is successful, the flag in the secure page flag field is set, and the PTE can be used thereafter. On the other hand, if it fails, the flag of the field is reset, the PTE is disabled, and recovery or error processing by the OS is performed in step S89.

なお例えば図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 authentication unit 107 in FIG. 53, and FIG. 56 is a flowchart of the authentication processing in step S85 in FIG. Here, it is assumed that the SHA-1 hash value is calculated from the entire page and compared with the decryption result of the electronic signature. As shown in FIG. 56, it is naturally possible to realize the operation of the authentication unit 107 not as hardware but as software processing.

図55において物理ページ125は64バイトずつに分割され、SHA−1ハッシュ演算器140に与えられ、ページ全体のハッシュ値が計算されて比較器142に与えられる。一方、認証情報一次格納部112に格納されたRSA電子署名は、認証鍵レジスタ119に格納されたRSA公開鍵とともにRSA復号器141に与えられ、その出力としての復号済みハッシュ値が比較器142によってSHA−1ハッシュ演算器140の出力と比較されて一致する場合には認証成功、不一致の場合には失敗と判定される。   In FIG. 55, the physical page 125 is divided into 64 bytes each and is given to the SHA-1 hash calculator 140, and the hash value of the entire page is calculated and given to the comparator 142. On the other hand, the RSA electronic signature stored in the authentication information primary storage unit 112 is given to the RSA decoder 141 together with the RSA public key stored in the authentication key register 119, and the decrypted hash value as an output thereof is output by the comparator 142. If they match with the output of the SHA-1 hash calculator 140, they are determined to be successful, and if they do not match, they are determined to be failed.

図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 context identifier register 118 contains a meaningful value, the secure page flag field of the PTE 122 is set, and the identifier value stored in the secure context identifier register 118 and the PTE 122 When the context identifier values match, execution of the instruction on the physical page 124 is permitted. This control is performed by the memory access control unit 105. Note that it is assumed that the data read / write attribute and supervisor attribute for the physical page are not directly related to the contents of the present invention and are separately performed.

図58は、メモリアクセス制御部105の動作例の説明図である。同図において太い一点鎖線の中味がメモリアクセス制御部105に相当し、またTLB114の内部のPTEの属性データとしてセキュアページフラグフィールドやセキュアコンテキスト識別子が含まれるものとする。   FIG. 58 is an explanatory diagram of an operation example of the memory access control unit 105. In the figure, it is assumed that the content of the thick one-dot chain line corresponds to the memory access control unit 105, and the secure page flag field and the secure context identifier are included as attribute data of the PTE inside the TLB 114.

図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 attribute check 146, and the check result is OK. If there is, the cache command generation 147 is performed using the physical address read in correspondence with the logical address and the attribute check result. For example, the tag 148 in the cache memory 45 in FIG. In this case, the data response is returned as it is, and in the case of a cache miss, for example, data loaded from the main memory is stored in the cache memory via the queue and the bus interface 149 and the data response is returned to the execution unit. .

図59は、命令フェッチ時のメモリアクセス制御部105の処理フローチャートである。図57の命令実行部144によって命令フェッチのための論理アドレスが出力されると、ステップS98で指定された論理アドレスに対応するPTEの属性データが選択され、ステップS99でカレントコンテキスト、すなわち現在実行すべきコンテキストがセキュアコンテキストであるか否か、すなわち有効なセキュアコンテキスト識別子を持っているかどうかがチェックされる。セキュアコンテキストである場合には、ステップS100でそのコンテキストに対応するPTEのセキュアページフラグフィールド(SPF)がセットされているか否かがチェックされ、セットされている場合にはステップS101でカレントコンテキストのセキュアコンテキスト識別子、すなわちセキュアコンテキスト識別子レジスタ118に格納されている識別子とPTEに格納されているセキュアコンテキスト識別子が一致しているか否かが判定される。   FIG. 59 is a processing flowchart of the memory access control unit 105 at the time of instruction fetch. When a logical address for instruction fetch is output by the instruction execution unit 144 of FIG. 57, PTE attribute data corresponding to the logical address specified in step S98 is selected, and in step S99, the current context, that is, the current execution is executed. It is checked whether the context to be secured is a secure context, i.e. has a valid secure context identifier. If it is a secure context, it is checked in step S100 whether or not the secure page flag field (SPF) of the PTE corresponding to that context is set. If it is set, in step S101, the current context is secured. It is determined whether or not the context identifier, that is, the identifier stored in the secure context identifier register 118 matches the secure context identifier stored in the PTE.

一致している場合にはステップ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 normal core 152 performs only the same processing as the conventional processing unrelated to the processing by the encryption processing block 12 and the code authentication processing block 13 as in FIG. 12 in the first embodiment. Can execute a secure operation including an authentication control of a code authentication processing block, including an operation control by an encryption processing block not described in FIG.

図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 secure core 151 by the control of the memory access control unit 105, but the page cannot be used from the normal core. Control is performed.

なお図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 access control unit 105, and includes an authentication unit 107, encryption / decryption, signature generation / verification unit 108, secure context identifier generation unit 109, secure context identifier. It corresponds to the extinguishing unit 110, the processor unique key 111, the authentication information primary storage unit 112, the secure DMA 113, the secure context identifier register 118, the authentication key register 119, and the secure page flag field and secure context identifier inside the PTE 122.

なお図60においてセキュアコア151は、認証処理が終了し、セキュアページフラグフィールドがPTEにセットされた物理ページ内の実行コードのみを実行し、ノーマルコア152は認証されていない通常コードのみを実行することを基本とするが、ノーマルコアが通常コードに加えて認証されたコードを実行可能とするよう構成することも可能である。   In FIG. 60, the secure core 151 executes the authentication process, executes only the execution code in the physical page whose secure page flag field is set to PTE, and the normal core 152 executes only the normal code that is not authenticated. However, it is also possible to configure the normal core to execute the authenticated code in addition to the normal code.

図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 mode register 155 is provided in the core 154, and a page in which the secure page flag field is set can be used only in the secure mode. Note that switching between the secure mode and the normal mode may be performed using an interrupt as a trigger, for example, as in switching between the normal user mode and the kernel mode, or other methods may be used.

図62はメモリアクセス制御方式としての、図44におけるセキュアDMA113による物理メモリ101へのページデータ転送方式の説明図であり、図63はセキュアDMA113によるデータ転送処理のフローチャートである。例えば図53や図54のページイン処理では、物理ページに実行コードとしてのページデータが格納された後にその実行コードの認証を行うものとしたが、認証処理においてはハッシュ値の計算などの処理を必要とするため、ここではページデータの転送単位毎にハッシュ値を計算し、その結果をハッシュ演算の中間結果として保持する動作を繰返し、転送終了時点ではハッシュ演算を終了して、その結果をその後の認証処理に利用するものである。   FIG. 62 is an explanatory diagram of a page data transfer method to the physical memory 101 by the secure DMA 113 in FIG. 44 as a memory access control method, and FIG. 63 is a flowchart of data transfer processing by the secure DMA 113. For example, in the page-in process of FIGS. 53 and 54, the execution code is authenticated after the page data as the execution code is stored in the physical page. In the authentication process, processing such as calculation of a hash value is performed. In this case, the hash value is calculated for each transfer unit of page data, and the operation of holding the result as an intermediate result of the hash operation is repeated. At the end of the transfer, the hash operation is terminated, and the result is This is used for authentication processing.

図62においてセキュアDMA113は、コア154からのデータの転送元アドレス、転送先アドレス、転送サイズを受け取る転送管理部157、I/O装置102からデータを読み出すデータ読み出し器158、ハッシュ演算を行うハッシュ演算器159、物理メモリ101にページデータを書き込むデータ書込み器160、物理ページの先頭アドレスとそのページに対するハッシュ値を保持する物理ページ先頭アドレス保持部161を備えている。   62, the secure DMA 113 includes a transfer management unit 157 that receives the transfer source address, transfer destination address, and transfer size of data from the core 154, a data reader 158 that reads data from the I / O device 102, and a hash calculation that performs hash calculation. 159, a data writer 160 that writes page data to the physical memory 101, and a physical page head address holding unit 161 that holds the head address of the physical page and a hash value for the page.

図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 core 154, generally the transfer management unit 157 that has received an instruction such as the transfer source address from the OS, sends the data reader 158 from the I / O device 102. Next, reading of the next 64 bytes of data is instructed. In step S111, 64 bytes of data is read by the data reader 158. In step S112, the transfer management unit 157 instructs the hash calculator 159 to perform a hash operation. In step S113, a hash operation is performed by the hash calculator 159, and the intermediate result is held therein. In step S114, the transfer management unit 157 writes 64-byte data to the physical memory 101 to the data writer 160. Instructed to write data in step S115 In step S116, it is determined whether or not the data transfer for one page has been completed. If not, the process from step S110 is repeated and the process ends. If so, the transfer management unit 157 gives a pair of a physical page head address and a hash value as a transfer destination address to the holding unit 161 and ends the process.

図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 secure DMA 113 is instructed about the transfer source / destination address, the transfer size, etc., and in step S121, it is determined whether or not the transfer is successful. 54. After various information is set in the PTE in the TLB as in steps S81 to S83 in FIG. 54, the secure page flag field is requested in step S123 as in step S84, and authentication processing by the authentication unit is executed. In step S124, it is determined whether or not the flag has been successfully set. If successful, the process is terminated. If the transfer fails in step S121, or if the set fails in step S124, the process ends immediately.

以上のように第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 information storage unit 115 described with reference to FIG. 44 is encrypted by the encryptor 165 using the processor unique key 111 and stored in the physical memory 101 as the encrypted context information 166. Is done.

図66は、図65に対応するコンテキスト情報の復号方式の説明図である。物理メモリ101に格納されている暗号化コンテキスト情報166は、コンテキストスイッチによって必要となった時点でプロセッサ固有鍵111を用いて復号器168によって復号され、コンテキスト情報格納部115に格納される。   FIG. 66 is an explanatory diagram of a context information decoding method corresponding to FIG. The encrypted context information 166 stored in the physical memory 101 is decrypted by the decryptor 168 using the processor unique key 111 at a time point required by the context switch, and stored in the context information storage unit 115.

図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 information storage unit 115, falsification detection information 170 is generated by the falsification detection information generator 169 using the processor unique key 111 and stored in the physical memory 101 together with the context information. The

図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 unique key 111 is performed by the falsification detector 172 using the falsification detection information 170 added to the context information.

図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 information storage unit 115, and only the secure operation context information 175 is encrypted. It is explanatory drawing of an information encryption system. In this method, normal context information 176, that is, context information such as an existing context ID is handled without being encrypted as in the past so that the core part of the processor is not changed as much as possible, and the authentication key register 119 is used. The content stored in the secure context identifier register 118 is encrypted as secure operation context information 175.

既存コンテキスト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 operation context information 175 is encrypted by the encryptor / decryptor 174 using the processor unique key 111 and stored in the physical memory 101 as the encrypted context information 177. The normal context information 176 is the plaintext context. Information 176 is stored in the physical memory 101 as it is.

図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 operation context information 175 and stored in the physical memory 101. In the figure, the falsification detection information generator / falsification detector 179 generates the falsification detection information 180 for the secure operation context information 175 using the processor unique key 111, and the secure operation context information 175 and the normal operation context information 175 are stored in the physical memory 101. Context information, that is, plaintext context information 176 is stored. In this example, the program counter value and the register group value as normal context information are not encrypted. However, in order to further improve the reliability, such normal context information is also included. Of course, it is also possible to add encryption or alteration detection information.

図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 PTE 122, that is, the values of the secure page flag field, the secure context identifier, the logical address, and the physical address are encrypted by the encryptor 165 using the processor unique key 111. The encrypted PTE 183 is stored in the page table 182 in the physical memory.

図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 encrypted PTE 183 stored in the physical memory 101 is decrypted by the decoder 168 using the processor unique key 111 and stored as PTE inside the TLB 114.

図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 detection information generator 169 generates falsification detection information 185 for the PTE 122 using the processor unique key 111 and stores it in the page table 182 together with the PTE 122.

図74においては改ざん検出情報185とプロセッサ固有鍵111とを用いて、改ざん検出器172によってページテーブル182に格納されているPTE122に対する改ざん検出が行われる。   In FIG. 74, falsification detection for the PTE 122 stored in the page table 182 is performed by the falsification detector 172 using the falsification detection information 185 and the processor unique key 111.

以上のように第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 communication interface 203, a storage device 204, an input / output device 205, and a portable storage medium reading device. 206, and a bus 207 to which all of these are connected.

記憶装置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 storage device 204, and such a storage device 204 or ROM 201 is used in FIGS. 3 to 5, 7, 9 to 11, and the like. The program shown in the flowchart, the program of claims 7, 19, and 20 of the claims of the present invention are stored, and such a program is executed by the CPU 200, whereby the secure processor in the present embodiment is stored. Operation, encryption key setting, code recognition processing, encryption processing, and the like are possible.

このようなプログラムは、プログラム提供者208からネットワーク209、および通信インタフェース203を介して、例えば記憶装置204に格納されることも、また市販され、流通している可搬型記憶媒体210に格納され、読取り装置206にセットされて、CPU200によって実行されることも可能である。可搬型記憶媒体210としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVDなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取り装置206によって読取られることにより、本実施形態におけるセキュアプロセッサの動作が可能となる。   Such a program is stored in, for example, the storage device 204 from the program provider 208 via the network 209 and the communication interface 203, or stored in the portable storage medium 210 that is commercially available and distributed, It can also be set in the reading device 206 and executed by the CPU 200. Various types of storage media such as CD-ROM, flexible disk, optical disk, magneto-optical disk, and DVD can be used as the portable storage medium 210, and a program stored in such a storage medium is read by the reading device 206. By reading, the operation of the secure processor in the present embodiment becomes possible.

(付記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 1, wherein the encryption processing means encrypts the instruction code authenticated by the authentication processing means and stores it in a storage device connected to the secure processor in units of pages.
(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 2.
(Appendix 4)
The secure processor according to appendix 1, wherein authentication information is added to an instruction code to be authenticated by the authentication processing means.
(Appendix 5)
The secure code according to appendix 4, wherein when the encryption key is specified in the authentication information, the encryption processing means further encrypts the instruction code using the specified key. Processor.
(Appendix 6)
The secure processor according to appendix 4, wherein when the encryption key is not specified in the authentication information, the encryption processing means further encrypts the instruction code using an arbitrary page key.
(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 7, wherein an encryption key for the instruction code is used instead of the different encryption key when executing an instruction code stored in a data storage area in a storage device connected to the secure processor .
(Appendix 9)
In the secure processor,
The secure processor according to appendix 1, further comprising code execution stop processing means for stopping execution of an instruction code for which authentication by the authentication processing means has failed.
(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 claim 1, further comprising a normal core that can execute a normal instruction code that is not authenticated by the authentication processing unit.
(Appendix 11)
The secure core is booted using the encrypted instruction code stored in the instruction code storage means,
The secure processor according to claim 10, further comprising normal core boot means for causing the secure core to boot the normal core after the boot is completed.
(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 11, characterized by:
(Appendix 13)
The secure processor according to claim 10, wherein the secure core provides a core control signal to the normal core to control the operation of the normal core.
(Appendix 14)
The secure processor according to appendix 10, wherein access to the core unique key is permitted for the secure core and prohibited for the normal core.
(Appendix 15)
15. The secure processor according to appendix 14, further comprising key generation means for generating a public key / private key pair and a common key using the core unique key under the control of the secure core.
(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 15, wherein an original text encrypted with the public key is received from outside via a normal core, and the original text is decrypted using the secret key.
(Appendix 17)
The secure processor according to appendix 16, wherein the original text is a key used for encrypting information.
(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 20, wherein a key to be used is provided.
(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 20, wherein the key storage means gives the decryption key to the encryption processing means when the instruction execution means is in the instruction fetch state.
(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 20 characterized in that the key storage means provides the encryption processing means with a key to be used for the data encryption / decryption in correspondence with a key number given from the key number storage means. Secure processor.
(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. Item 20. The secure processor according to appendix 20, wherein
(Appendix 25)
The secure processor according to appendix 20, wherein the instruction execution means outputs a supervisor / user switching signal corresponding to the instruction in addition to the key number as a signal for designating the key.
(Appendix 26)
The secure processor according to appendix 20, wherein the instruction execution means outputs an identifier of a process including an instruction being executed in addition to a key number as a signal for designating the key.
(Appendix 27)
The load / store control means includes:
Write-through cache memory,
Appendix 20 further comprising a read-modify-write unit that combines data to be stored in an external memory and data loaded from the external memory via the cryptographic processing unit and applies the combined data to the cryptographic processing unit. Secure processor.
(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 20.
(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 29, wherein the secure processor is provided to the means.
(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 29, wherein the data encryption / decryption key is given to the encryption processing means.
(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 29, wherein the key for data encryption / decryption corresponding to the address selected by the key storage means is provided to the encryption processing means.
(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 29.
(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 29, wherein the secure processor is provided to the cryptographic processing means.
(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 34, wherein the secure processor is used as an encryption key.
(Appendix 36)
30. The secure processor according to appendix 29, wherein the instruction execution means outputs a supervisor / user switching signal corresponding to a command being executed in addition to the access address as a signal for designating the key.
(Appendix 37)
The secure processor according to appendix 29, wherein the instruction execution means outputs an identifier of a process including an instruction being executed in addition to the access address as a signal for designating the key.
(Appendix 38)
The load / store control means includes:
Write-through cache memory,
The supplementary note 29, further comprising: a read-modify-write unit that combines data to be stored in an external memory and data loaded from the external memory via the cryptographic processing unit and supplies the combined data to the cryptographic processing unit. Secure processor.
(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. Item 34. The secure processor according to appendix 29.
(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 40, further comprising secure process identifier erasing means for erasing the generated secure process identifier held in the process information holding means when the process disappears.
(Appendix 42)
Authentication information is given to the execution code corresponding to the process,
41. The secure processor according to appendix 40, wherein the process information holding means further holds an authentication key for execution code authentication performed during the lifetime of the generated process.
(Appendix 43)
43. The secure processor according to appendix 42, wherein the authentication information given to the execution code is page unit information in a memory.
(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 page 44. The secure processor according to appendix 43, further comprising authentication means for setting the secure page flag in the buffer when code authentication is successful.
(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 match 45. The secure processor according to appendix 44, further comprising:
(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 44.
(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 44, further comprising: encryption processing means for performing encryption / decryption of.
(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 44, further comprising: falsification detection means for performing falsification detection on the information using the unique key upon generation and assignment and returning from the outside.
(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 40, further comprising a normal core that executes the unauthenticated normal execution code.
(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 40, wherein the core executes either a secure mode or a normal mode in response to the instruction.
(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 information holding means 41. The secure processor according to appendix 40, further comprising:
(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 40, further comprising a falsification detection unit that detects falsification of the information using the unique key.
(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 Processor 11, 154 Core 12 Encryption processing block 13 Code authentication processing block 14 Encryption ROM code area 15 CPU unique key 17 Main memory 18 Secondary storage 20 Secure hardware 21 Encryption key setting unit 22 Decoding unit 23, 137 Processor-specific RSA private key 24, 114 Translation Lookaside Buffer (TLB)
25 Logical address table 26 Physical address table 27 Key table 28 Signature verification unit 29, 134 Certificate authority certificate (certificate authority public key)
31, 151 Secure core 32, 152 Normal core 34 Key generation mechanism 41 Execution unit 42 Load store unit 43 Encryption circuit 44 Decryption circuit 45 Cache memory 46 Memory management unit 47, 48, 73, 74, 75 Key table memory 51, 52, 78, 79 Key selection register 71 Read modify write buffer 88 Address map register (AMR)
101 Physical Page 102 I / O Device 105 Memory Access Control Unit 106 Instruction Interpretation Unit 107 Authentication Unit 108 Encryption / Decryption, Signature Generation / Verification Unit 109 Secure Context Identifier Generation Unit 110 Secure Context Identifier Termination Unit 111 Processor Unique Key 112 Authentication Information Primary storage unit 113 secure DMA
115 Context Information Storage Unit 117 Program Counter 118 Secure Context Identifier Register 119 Authentication Key Register 120 Register Group 124 Physical Page 125 Page 126 Authentication Information 140 SHA-1 Hash Calculator 141 RSA Decoder 142 Comparator 144 Instruction Execution Unit 155 Mode Register 165 Encryptor 168 Decryptor 169 Tamper Detection Information Generator 172 Tamper Detector 174 Encryptor / Decryptor 179 Tamper Detection Information Generator / Tamper Detector

Claims (3)

命令を実行する命令実行手段と、
該命令実行手段からのコマンドに対応して外部のメモリに対するデータのロード/ストアを制御するロード/ストア制御手段と、
該ロード/ストア制御手段と外部のメモリとの間でデータの暗号化/復号化を行う暗号処理手段とを備え、
前記命令実行手段が、実行中の命令に対応して該暗号処理手段に対しデータ暗号化/復号化に使用すべき鍵として命令毎又は命令の区間毎に異なる鍵を指定することを特徴とするセキュアプロセッサ。
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,
It said instruction execution means, to the encryption processing means in response to the instruction being executed, and characterized by specifying the instruction-dependent or instruction section different keys for each of the key to be used for data encryption / decryption Secure processor.
前記プロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が、該鍵記憶手段に対して前記鍵を指定する鍵番号を出力し、該鍵記憶手段が該鍵番号に対応して前記暗号処理手段に対して、データ暗号化/復号化に使用すべき鍵を与えることを特徴とする請求項1記載のセキュアプロセッサ。
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. 2. The secure processor according to claim 1, wherein a key to be used is provided.
前記セキュアプロセッサにおいて、外部からロードされた命令フェッチデータの復号化に使用されるべき鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が命令フェッチ状態にある時、該鍵記憶手段が前記暗号処理手段に対して該復号化用の鍵を与えることを特徴とする請求項1記載のセキュアプロセッサ。
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,
2. The secure processor according to claim 1, wherein when the instruction execution means is in an instruction fetch state, the key storage means gives the decryption key to the encryption processing means.
JP2009185005A 2009-08-07 2009-08-07 Secure processor Expired - Lifetime JP4783451B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009185005A JP4783451B2 (en) 2009-08-07 2009-08-07 Secure processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009185005A JP4783451B2 (en) 2009-08-07 2009-08-07 Secure processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004194951A Division JP4447977B2 (en) 2004-06-30 2004-06-30 Secure processor and program for secure processor.

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011136617A Division JP5365664B2 (en) 2011-06-20 2011-06-20 Secure processor

Publications (2)

Publication Number Publication Date
JP2009301565A JP2009301565A (en) 2009-12-24
JP4783451B2 true JP4783451B2 (en) 2011-09-28

Family

ID=41548338

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009185005A Expired - Lifetime JP4783451B2 (en) 2009-08-07 2009-08-07 Secure processor

Country Status (1)

Country Link
JP (1) JP4783451B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461435B2 (en) * 2017-12-18 2022-10-04 University Of Central Florida Research Foundation, Inc. Techniques for securely executing code that operates on encrypted data on a public computer

Also Published As

Publication number Publication date
JP2009301565A (en) 2009-12-24

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
KR20060108710A (en) Trusted mobile platform architecture
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
JP6085320B2 (en) Processor, program, system and method
JP2019109910A (en) Processor
JP6480403B2 (en) apparatus

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110620

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110708

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

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4783451

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