JP4098478B2 - マイクロプロセッサ - Google Patents

マイクロプロセッサ Download PDF

Info

Publication number
JP4098478B2
JP4098478B2 JP2001024480A JP2001024480A JP4098478B2 JP 4098478 B2 JP4098478 B2 JP 4098478B2 JP 2001024480 A JP2001024480 A JP 2001024480A JP 2001024480 A JP2001024480 A JP 2001024480A JP 4098478 B2 JP4098478 B2 JP 4098478B2
Authority
JP
Japan
Prior art keywords
key
instruction
process identifier
read
microprocessor
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 - Fee Related
Application number
JP2001024480A
Other languages
English (en)
Other versions
JP2002232417A (ja
Inventor
幹生 橋本
健治 白川
圭一 寺本
謙作 藤本
哲 尾崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001024480A priority Critical patent/JP4098478B2/ja
Priority to US10/059,217 priority patent/US7136488B2/en
Priority to EP02250667A priority patent/EP1229427A3/en
Publication of JP2002232417A publication Critical patent/JP2002232417A/ja
Application granted granted Critical
Publication of JP4098478B2 publication Critical patent/JP4098478B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

Description

【0001】
【発明の属する技術分野】
本発明は、マルチタスクのプログラム実行環境下で、実行コードや処理対象であるデータの不正な改変を防止することのできるマイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法に関する。
【0002】
【従来の技術】
オープンシステムが広く普及している。オープンシステムでは、PCなどの一般ユーザ向けコンピュータのハードウェアやOSと呼ばれるシステムプログラムの情報が開示されており、システムプログラムを変更して望んだ改良を加えることができる。
【0003】
このような環境で、アプリケーションプログラムが扱う情報の著作権保護や、プログラム自体の著作権保護を保証するには、システムのOSがアプリケーションに対して敵対的動作をとることを前提としたハードウェアが必要となる。このようなハードウェア、特にマイクロプロセッサの提案が行われている(橋本他、特願2000−35398,Lie他,“Architectural Support for Copy and Tamper Resistant Software”;Computer Architecture News 28(5):p168−)。このようなマイクロプロセッサは、マルチタスク環境でプログラムとそれが扱う情報の覗き見、改変から守るためにそれら情報を暗号化する機能を備えている。以下、このようなマイクロプロセッサを耐タンパマイクロプロセッサと呼ぶ。
【0004】
アプリケーションプログラムを構成する3要素(プログラム、コンテキスト、データ)を、プロセッサ外部において暗号化して保護する機構については橋本らによる文献で開示されている。この従来例においては、外部メモリ上で暗号化された3要素の情報が、プロセッサ内部のキャッシュメモリおよびプロセッサレジスタでは、復号化された状態で処理される。
【0005】
情報を厳密に守るためには、プログラムAが動作することによってプロセッサ内部に読み込まれ、平文状態で保持される情報が、OSや別のプログラムBによって読み出されることを防ぐ機構が必要となる。
【0006】
このとき、第1の前提は、プログラムの識別は、プログラムの命令が暗号化された暗号鍵によって識別されることである。例えば、あるプログラムAがKaという鍵で暗号化されているとき、平文のプログラムBや別の暗号鍵Kcで暗号化されたプログラムCからは、プログラムAの情報3要素(プログラム、コンテキスト、データ)を読み出すことはできないことが、耐タンパマイクロプロセッサに対する基本的な要求条件である。プログラムAについては、プログラム提供者のみが知るその暗号鍵Kaによって暗号化したプログラムを配布し、Kaを秘密としておくことで、他のプログラム作成者のプログラムと、プログラムAとを区別することができる。以下、プログラムAの命令の暗号鍵Kaを、プログラムAの「命令鍵」と呼ぶこととする。
【0007】
この要求条件を実現する機構として、従来から存在するプロセッサのタグメモリによるアクセス制御機構を利用することが効率的である。これは白川らによる特願2000−333635に開示されている。
【0008】
だが、従来のシステムでは、タグの管理はOSに委ねられていた。ところが、耐タンパプロセッサのシステムでは、タグの管理はユーザによる改変操作が可能なソフトウェアのOSではなく、プロセッサ内部にあらかじめ組み込まれていてユーザによる改変が困難なハードウェアまたはソフトウェアの機構によって行われる必要がある。
【0009】
このような機構はプロセッサ内部に組み込まれるため、できる限り単純にすることでプロセッサを安価にし、できる限り処理を単純にしてタグ管理によるオーバヘッドを小さくすることが望ましい。また、有限の資源であるタグを再利用するために必要となる、鍵値の書換え操作の前後に置いても前記の要求条件に参照して違反や矛盾が生じることなくタグ管理が行われなければならない。
【0010】
また、オーバヘッドについてはシステム全体の処理速度の観点と、プロセスの起動または切り替え時の応答時間の観点とがある。この両者を小さくすることも求められる。さらに、従来例では命令を復号化する鍵を取得するための公開鍵復号化処理と、取得した鍵を使用してのプログラム復号化と実行がひとつの命令で実行されていた。一般のプロセッサでは命令の実行中に例外をうけつけることはできない。例えば、1024ビットの公開鍵復号化処理は、現時点で最も高速なハードウェアでも1msec以上の時間を必要とする。これは現在の一般的なリアルタイム処理の応答性能の要求である数十μsecと比較して非常に長く、システムのリアルタイム応答性能を低下させる原因となる。
【0011】
【発明が解決しようとする課題】
本発明は、上記事情を考慮してなされたもので、キャッシュメモリ管理手順において、初期登録における公開鍵処理時間による応答不感時間を短縮して、リアルタイム処理性能を向上させることのできるマイクロプロセッサを提供することを目的とする。
【0012】
また、本発明は、キャッシュメモリのアクセス制御に使われるタグの安全な管理を可能にしたマイクロプロセッサを提供することを目的とする。
【0013】
また、本発明は、連鎖によってプログラムの暗号鍵を推定されにくくすると同時に効率的な命令実行を実現するプログラム復号化手段を持つマイクロプロセッサを提供することを目的とする。
【0014】
また、本発明は、複数のプロセスが同一の暗号鍵によって暗号化されているデータを共有をするときの処理効率を向上させることのできるマイクロプロセッサを提供することを目的とする。
【0015】
また、本発明は、安全なプログラム利用の利便性と秘密の安全性という、相反する要素を、プログラム提供者の意志にしたがって実現するコンテキスト保存手段を持つマイクロプロセッサを提供することを目的とする。
【0016】
【課題を解決するための手段】
本発明は、外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、プロセスを識別するプロセス識別子対応に、前記命令鍵を保持するテーブルと、前記テーブルに前記プロセス識別子対応に命令鍵を登録する登録手段と、登録の完了を命令実行部に通知する通知手段と、実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、外部の記憶手段の所定のアドレスの内容を前記プロセス識別子保持手段によって指示される前記テーブルに格納された命令鍵によって復号化する第2の復号化手段と、外部の記憶手段から読み込んだ命令および前記第2の復号化手段により復号化された命令を実行する命令実行手段と、前記第1の復号化手段に命令鍵を復号化させるステップと、該命令において指定されたプロセス識別子と前記命令鍵とを対応づけて前記テーブルに登録するステップと、登録の完了を命令実行部に通知するステップとを実行する第1の命令実行手段と、前記プロセス識別子保持手段に、該命令において指定されるプロセス識別子を設定するステップと、該命令において指定される外部の記憶手段のアドレスにプログラム実行制御を移すステップとを実行する第2の命令実行手段とを備えたことを特徴とする。
【0017】
本発明は、外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、前記復号化された命令鍵を、プロセス識別子に対応づけて保持する第1のテーブルと、前記テーブルに前記プロセス識別子対応に命令鍵を登録する登録手段と、実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、前記プロセス識別子をプログラム読出し要求に付随して出力するプログラム実行手段と、前記プログラム読出し要求に付随する前記プロセス識別子によって該キャッシュラインの暗号鍵が選択され、復号化が行われる第2の復号化手段と、前記第2の復号化手段の復号化結果と前記読出し要求に付随するプロセス識別子と対応付けてキャッシュライン毎に保持する手段と、前記キャッシュメモリのキャッシュラインに保持されるプロセス識別子とプログラム実行手段から出力されるプログラム読出し要求のプロセス識別子とが一致したときのみ読出しを許可するキャッシュメモリと、前記登録手段が第1のテーブルの第1のプロセス識別子に対応する命令鍵を書き換えるとき、前記第1のプロセス識別子を保持する前記キャッシュメモリ上のキャッシュラインをフラッシュする鍵管理手段とを備えたことを特徴とする。
【0018】
本発明は、外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、外部の記憶手段におかれている、暗号単位間の連鎖の有無を定義する連鎖情報を読み込む連鎖情報取得手段と、プロセスを識別するプロセス識別子対応に、前記復号化された命令鍵を保持するテーブルと、前記連鎖情報取得手段が読み込んだ連鎖情報に基づいて、外部の記憶手段の所定のアドレスにおかれた複数の暗号単位を前記命令鍵によって復号化する第2の復号化手段とを備えたことを特徴とする。
【0019】
本発明は、外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、登録される鍵の値についてテーブル内での一意性を保証する鍵登録機構を持つ、復号鍵を保持する第1のテーブルと、プロセス識別子によって参照され、前記第1のテーブルへの参照を保持する第2のテーブルと、キャッシュメモリ参照において、前記プロセス識別子に基づいて前記第2のテーブルを参照し、前記第1のテーブルへの参照に変換を行い、前記第1のテーブルへの参照情報をキャッシュタグとするタグ変換手段と、キャッシュメモリと、キャッシュメモリと外部メモリとのデータ読み書きにおいて、キャッシュメモリから提示されたタグ値に基づいて、前記第1のテーブルから対応する前記復号鍵を取得し、データの暗号化もしくは復号化を行う暗号手段とを備えたことを特徴と。
【0020】
本発明は、外部へ読み出すことのできない固有の第1の秘密鍵および第2の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、あらかじめ前記第1の秘密鍵に対応する公開鍵によって一体として暗号化された命令鍵および永続化許可フラグをマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、前記第1の読み出し手段で読み出した前記命令鍵および永続化許可フラグを、前記秘密鍵を用いて復号化する第1の復号化手段と、プロセスを識別するプロセス識別子対応に、前記命令鍵および前記永続化許可フラグおよび共通鍵を保持するテーブルと、実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、前記プロセス識別子対応に、プロセスの実行中断時のレジスタ値を前記共通鍵で暗号化してレジスタ情報として外部の記憶手段に保存するレジスタ値保存手段と、前記プロセス識別子対応に、保存された前記レジスタ情報を前記共通鍵により復号化してレジスタに読み込むコンテキスト復帰手段と、該命令において指定されるプロセス識別子に対応する前記永続化許可フラグの値が所定の値をとる場合のみ、前記プロセス識別子に対応する前記共通鍵を前記プロセッサの第2の秘密鍵により暗号化して外部の記憶手段に書き出すステップを実行する所定の命令実行手段とを備えたことを特徴とする。
【0021】
本発明は、外部へ読み出すことのできない固有の第1の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、あらかじめ前記秘密鍵に対応する公開鍵によって一体として暗号化された命令鍵およびフィードバック鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、前記第1の読み出し手段で読み出した前記命令鍵およびフィードバック鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、プロセスを識別するプロセス識別子対応に、前記命令鍵およびフィードバック鍵、ならびに共通鍵を保持するテーブルと、実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、前記プロセス識別子対応に、プロセスの実行中断時のレジスタ値を前記共通鍵で暗号化してレジスタ情報として外部の記憶手段に保存するレジスタ値保存手段と、該命令において指定される所定のプロセス識別子に対応する前記共通鍵を前記フィードバック鍵により暗号化して外部の記憶手段に書き出すステップを実行する所定の命令実行手段とを備えたことを特徴とする。
【0022】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための)プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【0023】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0024】
(第1の実施形態)
第1の実施形態では、プロセッサ内部において平文状態で格納される情報のアクセス制御のための鍵情報(実効鍵識別子)の安全かつ効率的な管理方法について説明する。本実施形態では、鍵情報管理機能はハードウェアによる実装として説明しているが、ユーザによる改変が不可能であるという前提が保証されれば、鍵管理機能がプロセッサ内蔵ROMに格納されたファームウェアによる実装であってもよい。
【0025】
はじめに本実施形態における用語を定義する。
【0026】
「暗号化」は、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの両方を含めて、平文の情報を暗号化することを意味する。
【0027】
同様に、「復号化」は、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの両方を含めて、暗号化された情報を復号化して平文に戻すことを意味する。
【0028】
「暗号鍵」は、上記暗号化、復号化で使われる鍵を暗号化、復号化の両方の場合を含んで用いる。
【0029】
「共通鍵」は、共通鍵アルゴリズムで暗号化、復号化に共通に使われる鍵を意味する。
【0030】
「暗号化鍵」は、公開鍵アルゴリズムで暗号化に使われる鍵を意味する。
【0031】
「復号化鍵」は、公開鍵アルゴリズムで復号化に使われる鍵を意味する。
【0032】
本実施形態のマイクロプロセッサは、外部から読み出し不能な復号化鍵(秘密鍵以下、Ksと表記)を備える。プロセッサの秘密鍵Ksに対応する暗号化鍵(公開鍵:以下、Kpと表記する)は公開されている。
【0033】
「暗号化プログラム」は、命令が、あるひとつの共通鍵(ここでは、Kxと表記)によって暗号化されたプログラムを意味する。
【0034】
あるプログラム作成者が暗号化プログラムを作成するとき、プログラムを暗号化する適切な共通鍵Kxを選び、プログラムの命令を暗号化する(ただし、必ずしもプログラムの全体が暗号化されている必要はない)。
【0035】
本実施形態のプロセッサにおいて、プログラムの同一性はこの共通鍵Kxによって判定される。この共通鍵Kxを、その暗号化プログラムの命令鍵と呼ぶ。
【0036】
そして、ターゲットのプロセッサの公開鍵Kpで命令鍵Kxを暗号化した値(E_Kp[Kx]と表記)を、配布鍵と呼ぶ。プログラム作成者は、命令鍵で暗号化されたプログラム本体と、配布鍵をターゲットのシステムに配布する。
【0037】
また、コンテキスト情報の暗号処理に使われる暗号鍵をコンテキスト鍵、データの暗号処理に使われる暗号鍵をデータ鍵と呼ぶ。
【0038】
キャッシュメモリとメインメモリとの間での情報の復号化・暗号化では、命令、データ、コンテキストで何種類もの暗号鍵が使われる。ある特定のキャッシュラインの暗号処理に使われる共通鍵を実効鍵と呼ぶ。
【0039】
本実施形態での暗号アルゴリズムの扱いでは、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの区別は重要だが、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの中での方式、例えば、DES,Riandal,RSA,Elgamalなどの暗号方式の違いは重要ではない。したがって、対称(共通)鍵アルゴリズムではDES,Riandalなどが、非対称(公開)鍵アルゴリズムではRSA,Elgamalなどのいずれを用いてもよい。
【0040】
プログラムは、命令と静的データで構成される。暗号化プログラムでは、命令は暗号化されているが、静的データは暗号化されていても平文でもどちらでもよい。
【0041】
プロセスとは、プログラムがターゲットシステムのOSの管理のマルチタスク環境下で、実行中の、または実行を中断されている状態をあらわす。プロセスは、命令、実行状態、データからなる。データには静的データと動的データとがある。プロセスの実行は、プログラムの命令が(暗号化プログラムの場合は復号化されて)プロセッサに読み込まれ、実行されることで行われる。プロセスの実行は、割り込みなどの原因で中断されることがある。OSはそのときプロセスがプロセッサ内部に保持する状態、一般にはレジスタ情報を実行状態(コンテキスト情報とも呼ばれる)としてプロセッサ外部のメモリに保存する。割り込みサービスや別のプログラムを実行した後、プロセスの実行を再開するときはメモリに保存した実行状態を再度プロセッサ内部に読み込んで実行を再開する。
【0042】
ひとつのプログラムから複数のプロセスが作られ、同時に実行されることがある。暗号化プログラムの場合、これらの共通の起源をもつプロセスの間で復化された命令を共有することが可能である。
【0043】
また、本発明ではキャッシュメモリ上におけるプロセスの秘密情報のアクセス制御をキャッシュタグによって行っているが、このアクセス制御機構と、従来から存在する仮想記憶機構におけるプロセスのアクセス制御機構(UNIXカーネル)とは併用が可能である。本発明が新たに導入する前者の機構は、アプリケーションプログラムの作成者が意図する秘密保護が正しくプロセッサ上で実現されることを保証する機構である。具体的にはプログラム1の命令が、他のプログラムから読み取られることなどを防ぐものである。
【0044】
一方、後者はターゲットシステムのOSのシステム管理意図を正しく実現するために用いられる。具体的には、あるプロセス1のメモリアクセスを、他のプロセスから隔離し、互いの動作の干渉を防ぐなどを目的とする。
【0045】
以下ではこの2種類の機構をそれぞれプロセスの暗号化属性保護、記憶領域保護と呼ぶこととする。本実施形態では、これらの機構はともにキャッシュメモリ上のタグと呼ばれる属性を利用して効率的に実装される。後述のように、タグについては暗号化属性保護、記憶領域保護の領域が設けられている。この両者を区別するとき、暗号化属性(保護)タグ、記憶領域(保護)タグと呼ぶこととする。あるキャッシュデータが暗号処理をうける際の暗号鍵は暗号化属性タグによって決定される。このときの暗号鍵を暗号化属性タグに対する実効鍵と呼ぶ。
【0046】
なお、第1の実施形態においては、プロセッサの鍵管理機構を説明するため、暗号化された命令の実行のみを説明する。アプリケーションプログラムの残りの要素である実効状態やデータの暗号化は第2の実施形態以降で説明する。
【0047】
(プログラミングモデル)
はじめに本実施形態のプロセッサにおいて、暗号化プログラムの命令の実行手順をおおまかに説明し、その後、プログラムの秘密を守るプロセッサ内部の機構について詳細に説明する。
【0048】
図1に、本実施形態に係るマイクロプロセッサの全体構成例を示す。
【0049】
図1において、101はプロセッサ全体を、102は内部データバスを、103は外部バスインタフェースをそれぞれ表す。外部バスインタフェース103は、外部メモリ(図示せず)との間でデータをやり取りする。なお、図1ではアドレスバスは省略されているが、実際にはアドレスバスがある。201はプロセッサコアであり、命令キャッシュ301、データキャッシュ401、鍵管理部701に接続されている。
【0050】
第1の実施形態では、命令のみが暗号化されており、データの暗号化を行わないので、命令復号化機能501は命令キャッシュ対応のみ設けられている。プロセッサコア201からは、アドレスとその他の属性からなるキャッシュタグが出力され、タグが一致すると、プロセッサコア201に命令が出力される。
【0051】
[平文プログラムの実行]
本実施形態のプロセッサは、メインメモリにおかれた、平文の命令と暗号化された命令が混在したプログラムを実行可能である。
【0052】
図2で1001はメモリ空間全体を表す。プログラムはメインメモリ上の1002〜1004の領域に置かれる。1002,1004は平文の領域であり、1003は暗号化された領域である。領域1005は1003を復号化するための鍵情報が格納されている。
【0053】
[暗号化済み命令の実行]
次に、暗号化された命令(以下、暗号化済み命令と呼ぶ)を実行する場合を説明する。本実施形態のプロセッサには、平文命令の実行と暗号化済み命令の実行の2つの状態があり、この状態を制御する2種類の命令が備えられている。ひとつは平文命令の実行から暗号化済み命令の実行に移行する暗号実行開始命令であり、もうひとつはその逆の平文復帰命令である。これら2つに加えて命令鍵を登録するための鍵登録命令がある。
【0054】
[鍵登録命令]
鍵登録命令は、次のニーモニックsetkeyで表記され、ふたつのオペランドをとる。
setkey Ra, Rb
Raは任意のレジスタであり、プログラムの配布鍵のアドレスが格納されていることを前提とする。Rbはプロセス識別子を指定する。
【0055】
OSは暗号化プログラムを実行する前の準備としてそのプログラムの配布鍵アドレスをパラメータとしてsetkey命令を発行する。setkey命令を実行したプロセッサは配布鍵を読み取り、それをプロセッサ固有の秘密鍵によって復号化して命令鍵を取り出し、プロセッサ内部に登録する。
【0056】
次に、登録の内部動作を説明する。
【0057】
図3に鍵管理部の構成例を示し、図4に鍵登録処理の手順例を示す。
【0058】
[鍵テーブルの初期化と登録、割り込みによる通知]
setkey命令が実行されると、配布鍵のアドレスとプロセス識別子が鍵管理部701の状態管理機能702に送られる(S1101)。setkey命令の実行はこれで完了し、続く命令が実行されるが、登録作業は鍵管理部701によって並行して行われ、登録が完了するとプロセッサコアへ割り込み要求として通知される。
【0059】
鍵管理部701での登録作業は大きく2つに分けられる。ひとつは命令鍵の鍵テーブルへの登録であり、もうひとつは命令キャッシュに存在する、新たに登録されるプロセス識別子(#nとする)の暗号化属性タグを持つキャッシュラインを無効化することである。
【0060】
前者については、状態管理機能702がプロセッサコア201から受け取った配布鍵のアドレスを配布鍵読み出し機能703に送り、内部バス102を通じて外部メモリから配布鍵を読み込み、実効鍵復号化機能705へと送る(S1102)。実効鍵復号化機能705はプロセッサ固有の秘密鍵704によって配布鍵を復号化して実効鍵を得る。この復号化は公開鍵アルゴリズムの復号化のため、複数命令サイクルの非常に長いクロック数を必要とする。復号の結果得られた実効鍵は、実効鍵テーブル706のプロセス識別子で指定されたエントリに格納される。この作業が終了すると状態管理機能702に完了が通知される。
【0061】
この作業と並行して、状態管理機能702は、命令キャッシュ301にプロセス識別子#nの属性を持つキャッシュエントリを無効化する(S1102)。無効化が完了すると同様に状態管理機能702に通知される。
【0062】
状態管理機能702は、このふたつの作業の両方の完了を確認して(S1103)、実効鍵テーブルの対応するエントリの鍵値を古い値からステップS1102での復号化の結果得られた値に書き換える。
【0063】
702−1は、プロセス状態管理テーブルであり、プロセス対応に鍵登録の状態(書き換え中または登録済み)を保持するものであり、上記鍵操作の間、操作中のプロセスに対応するエントリの値は書き換え中となり、操作が完了すると登録済みとなる。この値は、プロセッサコアからの読み出し要求によって随時読み出される。
【0064】
(キャッシュ無効化の効果)
あるプロセス識別子に対して、以前に登録されていたものとは異なる別の実効鍵Knを登録して、命令を実行するとき、命令キャッシュに以前に登録されていた実効鍵Koによって復号化されたキャッシュラインが存在していると、新たに実効鍵を登録した暗号化プログラムは、本来はプログラムが実行できるはずのない別の暗号化プログラムの命令を実行できることになり、暗号化プログラムの秘密が保護されないことになる。本発明では、鍵登録において登録する実行鍵の属性を持つキャッシュラインの無効化を行うことにより、暗号化プログラムの秘密保護を厳密に保証できる。
【0065】
また、鍵登録を構成する公開鍵の復号化処理と、キャッシュラインの無効化という、1命令サイクルで完了しない作業に対して、その実行を1命令で行わずに登録の完了を非同期的に割り込みで通知することにより、登録作業中に他のプログラムを実行したり、別の割り込み要求に応えることを可能として、システムの性能と応答性能を高める効果がある。
【0066】
この2つの作業が完了すると(S1103)、状態管理機能702は、プロセッサコアに鍵登録の完了を割り込みによって通知する。鍵登録状態を取得する命令をもうけ、OSがポーリングによって鍵登録状態を取得してもよい。OSは鍵登録完了割り込みの通知を受けると、暗号化プログラムの実行を開始する(S1105)。
【0067】
[暗号実行開始命令]
暗号実行開始命令は、次のニーモニックstrtencで表記され、ふたつのオペランドをとる。
strtenc Ra, Rb
Raはレジスタを表し、制御を移す暗号化命令の先頭を示すアドレスが、Rbは先に登録した実行鍵の識別子がOSによってそれぞれ格納されていることを前提とする。この場合、Raには暗号化命令列の先頭アドレスstart(図2中、1008)が格納され、Rbには#nが指定されている。
【0068】
この他に制御レジスタとして、後述の暗号連鎖ベクトルの格納アドレスと暗号連鎖の先頭オフセットアドレスを格納するレジスタが存在する。暗号連鎖ベクトルレジスタにはchainaddr(図2中、1010)が、暗号連鎖オフセットレジスタにはstart(図2中、1008)が設定されている。
【0069】
strtenc命令が実行されると、実行鍵識別子#nが実行鍵識別子格納レジスタ202に読み込まれ、アドレスstartから暗号化プログラムの実行が始まる。
【0070】
[命令の復号化と連鎖]
命令の復号化と連鎖の処理について説明する。
【0071】
図5に、命令復号化処理部501の構成例を示す。
【0072】
プロセッサコア201は、命令を読み込むため、アドレスstartと記憶領域タグ、暗号化属性タグからなる属性情報を、命令キャッシュ301に送る。キャッシュがヒットしない場合、アドレス情報が命令復号化処理部501に送られ、外部メモリから暗号化プログラムを読み出し、復号化してキャッシュに読み込む。
【0073】
アドレス情報処理部502は、命令キャッシュ301からアドレス情報を受け取る。メモリアドレスは外部バスインタフェース103に送られ、対応するデータが外部メモリから読み出される。一方、暗号化属性タグは鍵管理部701に送られる。その結果として、実効鍵値が鍵管理部701から復号化機能503に送られ、復号化された平文データがバッファ504に格納される。
【0074】
ここで、連鎖ベクトルについて説明する。
【0075】
連鎖ベクトルは、暗号ブロックであるキャッシュラインごとに、暗号化に連鎖を使っているかどうか0/1の1ビット値のつらなりからなるベクトルであり、プロセッサの連鎖ベクトルアドレス格納レジスタで指定された場所に置かれる。先頭のビットは連鎖ベースアドレスレジスタで指定されたキャッシュラインに対応する。あるキャッシュラインに対応するビットが1の場合、そのキャッシュラインがひとつ前のキャッシュラインとの間に連鎖の関係を持っていることを表す。
【0076】
プログラムの先頭は連鎖を取れないので、先頭のビットは必ず0となる。プログラムが先頭から順次実行されていく場合、命令復号化処理部501(連鎖計算機能505)では順次連鎖が計算され、復号化が行える。
【0077】
だが、プログラムには分岐やエントリポイントがある。プログラムのエントリポイントや、大域的な分岐点も0とすることが望ましい。もしあるプログラムの先頭を除いて全ての連鎖属性が1となっていた場合、プログラムの最後に対応する部分への分岐を行って、そのキャッシュラインを復号化するには、プログラムの先頭からの連鎖を全て計算しなければならないことになり、大きなオーバヘッドとなってしまう。
【0078】
暗号化プログラムのキャッシュメモリへの読み込みが、連鎖の途中から開始された場合、復号化処理機能では、連鎖属性が0となるまで前のキャッシュラインを読み込み、順次連鎖の値のみを計算して、読み込んだデータは捨て、最終的に目的のキャッシュラインを復号化して命令キャッシュへと送る。
【0079】
本実施形態では、連鎖ベクトルとそれに対応する復号化処理機能を設けたことにより、連鎖による暗号強度の向上と、分岐における処理の効率化の両方を達成している。
【0080】
[命令キャッシュへの読み込み]
復号化されたキャッシュラインが命令キャッシュのあるエントリに格納されると、そのタグ領域に実効鍵識別子を含むタグ情報が書き込まれる。もしキャッシュがフラッシュされないうちにそのプロセスが再度同じアドレスをアクセスすれば、キャッシュがヒットしてキャッシュ上にある平文データが読み出される。
【0081】
[鍵属性不一致の場合の処理]
さて、本実施形態では、キャッシュタグのアドレスが要求したアドレスと一致しても、実行中のプログラムのプロセス識別子と、キャッシュタグの実効鍵識別子が異なる場合はキャッシュヒットとはみなさない。代わりに、現在有効な実効鍵で復号化されたキャッシュラインが新たに読み込まれ、実行される。
【0082】
ここでは、命令キャッシュを対象としているので、書き込みは行われないが、第2の実施形態以降での、データキャッシュで同様の不一致が起こった場合、もしそのキャッシュラインに書き込みが行われてdirty flagがセットされていれば、一度キャッシュをフラッシュして、メインメモリにデータが(最初に読み込まれたときの共通鍵で暗号化されて)外部メモリに書き戻され、再び現在有効な共通鍵で復号化されて読み込まれる。
【0083】
このように、キャッシュアクセスで暗号化属性が一致しないには、現在有効な暗号化属性で再度外部メモリからその命令またはデータを読み出す処理を行い、例外は発生させない。この動作は、実行中のプログラムから見れば、そのキャッシュラインが読み込まれていない場合と、まったく同一である。もしそのキャッシュラインが読み込まれていなければ、外部メモリから、現在有効な暗号化属性によって復号化された命令が読み込まれるからである(それは必ずしも正しく実行される保証はない)。
【0084】
[平文その他]
なお、命令鍵識別子が0は平文プログラムの実行に使われる。復号化処理機能から、命令鍵識別子0の復号化鍵値の要求があると、鍵管理部701は、予め定められた復号化をしないことを示す値を返す。
【0085】
また、ある実行鍵識別子#xに対する鍵登録処理が行われている間、プロセッサコアから命令キャッシュのタグ#xを持つキャッシュエントリのアクセスは禁止される。
【0086】
(第2の実施形態)
第1の実施形態ではシステムの応答性を改善する非同期的な鍵登録処理と、命令のみの暗号化について効率的かつ安全な鍵管理方法を中心に説明した。第2の実施形態では、命令に加えてコンテキストとデータの効率的かつ安全な暗号鍵管理方式を説明する。本実施形態では、第1の実施形態と相違する点を中心にして説明する。
【0087】
図6に、本実施形態に係るマイクロプロセッサの全体構成例を示す。第1の実施形態の場合に対して、データ暗号化・復号化処理部601が追加されている。また、プロセッサコアにデータ暗号化属性レジスタ206が追加されている。
【0088】
図7に、本実施形態における鍵管理部701の構成例を示す。命令鍵テーブルに加えてコンテキスト鍵テーブル709、データ鍵テーブル710が追加されている。
【0089】
コンテキスト鍵テーブル709には、プロセス識別子対応に1つずつの共通鍵を格納する領域が設けられる。プロセス識別子iに対しては709−iが対応する。また、データ鍵テーブル710には、プロセス識別子対応に2つずつの共通鍵を格納する領域が設けられる。プロセス識別子iに対しては、710−i−1と710−i−2が対応する。
【0090】
これらの実効鍵をキャッシュ上で識別するため、暗号化属性タグは2ビット追加され、プロセス識別子と、2ビットの種別フィールドの組み合わせで実効鍵が決定される。
【0091】
実効鍵テーブルは、鍵の値を格納するテーブル一般を指示し、命令鍵テーブル、コンテキスト鍵テーブル、データ鍵テーブルは、実効鍵テーブルであって格納する鍵がそれぞれ命令鍵、コンテキスト鍵、データ鍵であるものを指示する。第1の実施形態においては、命令鍵を格納するテーブルを実効鍵テーブルとして説明したが、第2の実施形態以下においては、3種類のテーブルを区別するため、命令鍵テーブル、コンテキスト鍵テーブル、データ鍵テーブルと呼ぶことにする。
【0092】
(命令鍵登録、命令実行開始)
暗号化プログラムの実行には、まず、命令鍵を命令鍵テーブルに登録する。命令鍵の登録手順は基本的には第1の実施形態の場合と同様であり、上述した鍵再割り当てに伴う命令キャッシュの無効化も行われる。
【0093】
ただ、プロセス毎のコンテキスト鍵、データ鍵の独立性を保証するために鍵登録時の内部動作が異なっている。命令鍵の登録と同時に、コンテキスト鍵テーブル709、データ鍵テーブル710についても、プロセス識別子で指定されたエントリが初期化されることである。例えば、プロセス識別子iの命令鍵が登録されるときは、コンテキスト鍵テーブル709−iとデータ鍵テーブル710−i−1,710−i−2の値が予め定められた平文アクセスに対応する値に初期化される。そして、単に値が初期化されるだけでなく、これらの実効鍵識別子を持つデータキャッシュのラインがフラッシュされる。もし外部メモリに書き戻されていないデータがあればキャッシュから外部メモリにデータが書き戻される。このとき、キャッシュデータの書き戻しに古いコンテキスト鍵、データ鍵の値が必要なので、フラッシュが完了するまでは、古いコンテキスト鍵、データ鍵の値を保持しておく必要がある。
【0094】
プロセス識別子に対応する命令鍵の登録と、コンテキスト鍵、データ鍵の初期化、そして命令、データキャッシュのフラッシュが完了すると状態制御部はプロセッサコアに登録完了を通知する。
【0095】
(命令実行開始)
命令実行の開始手順も第1の実施形態と同一である。
【0096】
異なるのは、例外発生時のコンテキスト情報保護処理と、データ暗号化処理である。
【0097】
はじめに例外発生時のデータ暗号化処理を説明する。データ暗号化機能は、暗号化プロセスのみが使うことができる。データ暗号化機能は、データ暗号化属性レジスタによって制御されるが、暗号化プログラムの実行開始時にはデータ暗号化属性レジスタの有効ビットがクリアされている。また、暗号化属性を変更する前には、必ず有効ビットを一度クリアしなければならない。有効ビットをクリアすると、対応するタグをもつキャッシュエントリは全てフラッシュされる。
【0098】
データ暗号化機能を使うには、データ暗号化レジスタの暗号化属性を設定する。暗号化属性は、開始アドレス、対象領域の長さ、データ鍵からなる。これらのパラメータをデータ暗号化属性レジスタに書き込み、有効ビットをセットする。すると、データ鍵のデータ鍵テーブルへの登録と、アドレス−データ鍵識別子変換表の構築が行われる。
【0099】
データ鍵の登録は、データ鍵テーブルのプロセス識別子と補助情報によって指定されたエントリにデータ鍵の値を書き込むだけである。この時点では、対応するキャッュラインは全てフラッシュされているので、あらためてキャッシュのフラッシュを待つ必要はない。
【0100】
データ鍵の登録と並行して、アドレス‐データ鍵識別子変換表の構築が行われる。アドレス‐データ鍵識別子変換表は、プロセッサ内部のメモリ管理機能の中にある(図示せず)。データ暗号化レジスタの開始アドレス、長さの情報から、アドレス範囲に対してどのデータ鍵識別子が使われるかを対応付けるテーブルが構築される。そして、暗号化対象範囲のキャッシュされたデータは、全てフラッシュされる。
【0101】
有効ビットをセットする命令の実行が完了すると、データ暗号化機能が有効な状態となり、データ暗号化属性レジスタに指定された領域のメモリへの読み書きは、全て暗号化されて行われる。
【0102】
キャッシュされたメモリへの書き込みは、平文状態で行われるが、対応するデータ鍵識別子のタグが付加される。そのラインがフラッシュされるときはデータ鍵識別子が鍵管理部701に送られ、データ鍵テーブル710で検索されたデータ鍵が、データ暗号化・復号化処理部601に読み込まれ、データは暗号化されてメモリに書き込まれる。
【0103】
暗号化により、わずか1ビットのデータの書き換えでも同じキャッシュラインに対応する外部メモリの内容が全面的に書き換わることに注意が必要である。
【0104】
読み込みの場合はこの一連の処理の逆が行われる。
【0105】
アドレス‐データ鍵識別子変換表は、現在実行中のプロセスに対応したもののみがプロセッサコアに保持される。実行するプロセスが切り替えられると、アドレス‐データ鍵識別子変換表も再構築される。ただし、プロセスの切り替えではキャッシュのフラッシュを行う必要はない。切り替えの前後で同一のデータ鍵識別子に対応する鍵の値は変わらないからである。
【0106】
一方、データ鍵テーブルには、全ての暗号化プロセスのデータ鍵が保持される。これは、フラッシュはキャッシュラインは、現在実行中のプロセスのタグがついたものとは限らないからである。
【0107】
上記のデータ鍵管理機能により、プロセスの切り替えや、データ暗号化対象アドレスやデータ暗号鍵の変更があっても、データの安全性、整合性が保障され、同時に効率的なデータの暗号化が実現できる。
【0108】
次に、例外発生時のコンテキスト保護処理を説明する。
【0109】
暗号化命令の実行中に例外が発生すると、レジスタの内容がレジスタバッファに退避され、下のレジスタは初期化された後に例外ハンドラの処理が開始される。レジスタの退避のときプロセス識別子もレジスタバッファに退避される。レジスタバッファには有効フラグがあり、暗号化プログラムの実行中に例外が発生すると有効フラグが1にセットされる。レジスタバッファは他のプログラムから読み出すことができないので、暗号化プログラムが処理中のレジスタの内容が、例外ハンドラによって読み出されることはない。
【0110】
例外ハンドラではレジスタバッファに保存されている中断されたプログラムのレジスタ情報を、次に説明するコンテキスト保存命令によってキャッシュメモリに保存する。
【0111】
コンテキスト保存命令(savereg)は次のような形式で表され、一つのオペランドをとる。オペランドdestはレジスタバッファの内容が保存されるアドレスを示す。
savereg dest
savereg命令が発行されるとレジスタバッファの内容がアドレスdestに対応するキャッシュラインに書き込まれる。上述のように通常メモリへのデータ書き込みでは書き込み命令を発行したプロセスのデータ暗号化属性が使われるが、コンテキスト保存命令の書き込みの際には、アクセスに使うタグとして、レジスタバッファに保存されたプロセスのコンテキスト鍵識別子が使われる。
【0112】
コンテキストは複数のキャッシュラインに保存され、連鎖ビットが設定される。連鎖により、コンテキストの秘密はより安全になる。
【0113】
コンテキスト鍵の扱いは命令鍵、データ鍵とはかなり異なる。あるコンテキスト鍵の値は、乱数生成装置によって決定される。そして、そのプロセスの実行を再開するとき、コンテキストが復号化されるまでプロセッサ内部で保持され、復号化が完了すると捨てられる。
【0114】
あるプロセスのコンテキスト鍵は、プロセッサ内部に保持され、外部には読み出せない。物理乱数発生装置などの特性のよい乱数発生装置を使うことにより、同じ鍵が使われる可能性や、鍵の系列を予想することを極めて困難とすることができる。
【0115】
これらの機構によってあるプロセスのコンテキスト情報を偽造して、プロセスの動作を変更するような攻撃や、コンテキスト情報を解析する攻撃をきわめて困難にして、安全性を高めることができる。
【0116】
同時に、コンテキスト情報の暗号化機構は、データ暗号化と共通のものを使うことが可能になり、安価なプロセッサの提供が可能となる。
【0117】
説明が前後したが、暗号化プロセスの実行を再開するとき、rcvrreg(recover register)命令を発行する。
rcvrreg Ra, Rb
この命令は2つのレジスタオペランドをとる。Raには保存したコンテキストのアドレスを格納する。Rbにはプロセス識別子を指定する。
【0118】
この命令を実行したプロセッサコアは、コンテキストのアドレスに、プロセス識別子のコンテキスト鍵を示すタグをつけて、データキャッシュにメモリ読み出し要求を発行する。もしデータキャッシュに保存したコンテキスト情報が残っていれば、それがそのまま読み出されてレジスタに復帰され、そのままプロセスの実行が再開される。
【0119】
もしコンテキスト情報がフラッシュされていれば、復号化機能が、プロセスのコンテキスト鍵を鍵管理機能に要求し、そこから読み出されたコンテキスト鍵が復号化に使われ、データキャッシュにコンテキスト情報が平文で読み込まれ、レジスタ情報が復帰されてプロセスの実行が再開される。
【0120】
他のプロセスがデータキャッシュ上に平文で存在するコンテキスト情報を読みだそうとしても、タグが一致しないため、読み出すことはできず、コンテキスト情報は安全である。
【0121】
(第3の実施形態)
本実施形態では、第2の実施形態と相違する点を中心にして説明する。
【0122】
第3の実施形態では、共有メモリの高速処理を実現する実施形態を説明する。プロセス間の通信の実現には、多くの場合何らかの共有メモリが用いられる。第2の実施形態の機構により、2つのプロセスの間での安全な鍵交換手法(寺本特許)を行い、データ暗号鍵を共有することにより、プロセッサの暗号機能を利用した効率的かつ安全なプロセス間通信が実現できる。
【0123】
しかしながら、第2の実施形態の機構では、プロセッサ内に復号化されたキャッシュラインを、外部メモリへのフラッシュ無しに複数のプロセス間で共有することはできない。例えば、プロセスAがレジスタD1に格納された鍵Kaでデータを復号化してデータキャッシュに読み込んだとする。このキャッシュラインには暗号化属性(#a,D1)が付与される。別のプロセスBがレジスタD1に鍵Kaを保持していて、そのキャッシュラインを参照すると、プロセスのメモリ参照タグの暗号化属性(#b,D1)はキャッシュラインの暗号化属性(#a,D1)と一致しないので、そのキャッシュラインはフラッシュされ、一度タグ(#a,D1)に対応する暗号鍵Kaで暗号化されてメインメモリに書き出され、再度タグ(#b,D1)に対応する暗号鍵Kaで復号化されてキャッシュに読み込まれる。
【0124】
ここでは不要なメインメモリへのアクセスが2度起きている。
【0125】
このオーバヘッドを削減し、効率のよいメモリ参照を行う一実施形態を以下に説明する。
【0126】
図8に、本実施形態に係るマイクロプロセッサの全体構成例を示す。第2の実施形態との違いは、プロセッサコア201とキャッシュメモリ301,401との間に、鍵インデックス変換機能801が追加されたことである。
【0127】
図9に、鍵インデックス変換機能801と鍵管理部701のより詳細な構成例を示す。鍵インデックス変換機能801は、内部に間接鍵値参照テーブル802を持つ。鍵管理部701は、内部に実効鍵の値を保持する鍵値テーブル804を持つ。間接鍵値参照テーブルは、プロセス識別子と鍵タイプ識別子によって参照され、鍵値テーブル804のエントリへのインデックスを保持する。図9においては、鍵値テーブルのエントリ#Nへの参照を、間接鍵値テーブルの(#1,D2)でインデックスされるエントリが保持している。
【0128】
鍵値テーブルの管理は、実効鍵値テーブル管理機能805が行う。実効鍵値テーブル管理機能805は、テーブル内で鍵の値が一意になるよう、登録、削除処理を行う。また、鍵値テーブルには、エントリが有効な鍵値を保持しているかどうかを判定するため、鍵値への参照数を保持するフィールドが設けられている。
【0129】
図10に鍵登録時の動作例を示し、図11に鍵登録処理の手順例を示す。
【0130】
まず、プロセッサコア201から状態管理機能702へ、プロセス識別子と鍵タイプ、鍵値情報が提示される。鍵値は直接値が提示されるとは限らず、プログラム鍵の場合は配布鍵が格納されたアドレスが提示され、コンテキスト鍵の場合は鍵値は鍵管理部内で生成される。
【0131】
鍵値Kaは実効鍵値テーブル管理機能805に提示される。実効鍵値テーブル管理機能805は、鍵値をテーブルで検索し、一致するエントリが存在しない場合には新たに値を登録し、参照カウンタの値を0から1に増やす。ここで鍵値Kaはエントリ#Nに登録されているので、その参照カウンタの値を1から2に増やす。ここでは、暗号鍵の共有にはテーブル上の鍵値の一意性が必要なことに留意しなければならない。一意性を保証するには、テーブルの値を検索する必要が生じるが、その実装には連想メモリ(CAM)を使う方法、平行ツリー(AVLtree)を使うなどの検索の高速化手法が可能である。もし鍵を新たに登録することができなかった場合、状態管理機能702へ通知する。
【0132】
登録に成功すると、実効鍵値テーブル管理機能805は、鍵値が格納されたエントリへのインデックス#Nを間接鍵値参照テーブル管理機能803へ提示する。間接鍵値参照テーブル管理機能803は、状態管理機能702からプロセス識別子と鍵タイプ(#n,D1)を提示されており、これでインデックスされたエントリに、鍵値のインデックス#Nを格納する。格納の完了は状態管理機能702に通知される。
【0133】
(鍵値の参照)
プロセス#1がデータ鍵D2によって参照するとき、プロセッサコアからは、プロセス識別子、鍵タイプ(#1,D2)が鍵インデックス変換機能801に提示される。鍵インデックス変換機能801は、間接鍵値参照テーブルを参照して、このプロセス識別子、鍵タイプを鍵値インデックスに対応するタグ#Nに変換して、キャッシュタグとしてデータキャッシュに提示する。データキャッシュは、キャッシュミスヒットの場合、アドレスに対応する外部メモリの内容を読み込み、タグ#Nに対応する鍵で復号化されたデータをキャッシュラインに読み込み、タグ#Nを付加する。
【0134】
このキャッシュラインを別のプロセス#nがデータ鍵D1によって参照するとき、鍵インデックス変換機能801が出力するタグは同一の#Nとなり、復号化されたキャッシュラインが外部メモリを参照することなく利用できる。異なるプロセスが同一のタグを利用するには、実効鍵値テーブルに登録された鍵の値が同一である必要があるため、鍵の値を知らないプロセスが不正に復号化されたデータを読み出すことはない。
【0135】
(鍵エントリ削除処理)
図12に鍵エントリ削除時の動作例を示し、図13に鍵エントリ削処理の手順例を示す。
【0136】
プロセッサコア201は、削除する鍵に対応するプロセス識別子、鍵タイプ(#n,D1)を状態管理機能702に提示する。状態管理機能702は、間接鍵値参照テーブル管理機能803にプロセス識別子、鍵タイプ(#n,D1)を提示し、間接鍵値参照テーブル管理機能803は、テーブルから鍵値テーブルインデックス#Nを取得し、同時に値を#0に書き換える。間接鍵値参照テーブル管理機能803は、鍵値テーブルインデックス#Nを実効鍵値テーブル管理機能805に提示し、削除を要求する。実効鍵値テーブル管理機能805は、#Nの参照カウンタの値を2から1に減らして削除が完了すると、状態管理機能702に通知する。
【0137】
(第4の実施形態)
本実施形態では、第2の実施形態と相違する点を中心にして説明する。
【0138】
第4の実施形態では、実効鍵の外部メモリへの保存による、プロセスの永続化制御機能と、安全なフィードバック情報の保存機能を説明する。
【0139】
第2の実施形態のマイクロプロセッサでは、コンテキスト情報を暗号化して外部メモリに保存するための鍵情報(コンテキスト鍵)がプロセッサ内部のテーブル709に保持されていた。ここで、コンテキスト鍵はコンテキスト保存の都度更新されるため、一度保存されたコンテキスト情報を再度利用することはできなくなり、攻撃者が、攻撃者がコンテキスト情報を別のプロセスや同じプロセスの別の時点で保存したものにすりかえる攻撃を防ぐことができる。
【0140】
しかしながら、コンテキスト鍵がプロセッサ内部に保持されていることには次の2種類の欠点もある。ひとつの問題は、プログラムの動作に不具合が発見されたとき、プログラムの開発者にとっても、プログラムがどのような状態で実行されていたかがわからない、すなわちプログラム開発者へのフィードバックが不可能なことである。
【0141】
もうひとつの問題は、コンテキスト鍵テーブルの数を越えたプロセスを同時に実行することや、プロセッサの電源断をはさんで同一のプロセスの実行を継続することができず、利便性が損なわれることである。
【0142】
特に後者は上記のプロセスのコンテキストすり替えを防ぐセキュリティ上の安全性とユーザの利便性のトレードオフとなる。
【0143】
この2つの問題を解決する実施形態を以下に示す。
【0144】
図14に、本実施形態に係るマイクロプロセッサの全体構成例を示す。第2の実施形態の場合に対して、プロセス状態入出力機能901が付加されている。プロセス状態入出力機能901には、プロセス状態鍵暗号・復号化機能902とプロセス状態保存用秘密鍵903がある。プロセス状態鍵暗号・復号化機能902は共通鍵アルゴリズムの暗号化・復号化機能を行うものであり、プロセス状態保存用秘密鍵903はプロセッサ固有であるとする。
【0145】
第4の実施形態では、プログラムの配布鍵として図15に示す形式の情報がプロセッサ公開鍵により暗号化されて配布される。フィードバック鍵と永続化フラグの2つの情報が付加されている。また、ハッシュフィールドがもうけられ、命令鍵、フィードバック鍵、永続化フラグに対するハッシュ値が合致しない場合鍵のテーブルへの登録は中止される。配布鍵はプロセッサの秘密鍵により復号化され、命令鍵テーブルに格納される。命令鍵テーブルの形式を図16に示す。命令鍵テーブル1501には#0〜#nのエントリがある。エントリには命令鍵格納フィールド1501−0−p,フィードバック鍵1501−0−f,永続化制御フラグ1501−0−eがある。
【0146】
(フィードバック情報)
フィードバック鍵は、プログラム開発者が任意に決める共通鍵である。プログラム(通常はOS)があるプロセスのフィードバック情報を保存するときにはフィードバック情報保存命令を発行する。保存対象のプロセスはコンテキストが保存され、実行が中断されていることが前提とする。フィードバック情報保存命令はオペランドとしてプロセス識別子と保存先メモリアドレスをとる。フィードバック情報保存命令の発行により、プロセスの鍵情報(命令鍵、コンテキスト鍵、データ鍵)はフィードバック鍵によって暗号化され、フィードバック情報としてプロセッサ外部メモリの指定アドレスに保存される。
【0147】
フィードバック鍵を知るプログラム開発者はフィードバック情報を復号化して、中断時のプロセスの状態を知ることができるが、プロセッサにはフィードバック情報から鍵情報を復元する機構をそなえない。このため、フィードバック情報がプロセスにあやまった状態を与えるために悪用されるおそれはなく、フィードバック情報から命令鍵やコンテキスト鍵を特定することもフィードバック鍵を知らないユーザには不可能である。
【0148】
(永続化制御)
図17に、永続化のためのプロセス鍵の保存手順の一例を示す。
【0149】
また、配布鍵の永続化フラグもプログラム開発者が決める情報である。プログラムの利便性を重視して永続化を許すとき、プログラム開発者は永続化フラグを1とした配布鍵を提供する。プログラムの安全性を重視して永続化を許さないとき、プログラム開発者は永続化フラグを0として配布鍵を提供する。
【0150】
あるプロセスの鍵情報を保存するときは、プロセス状態保存命令をプロセス識別子と保存先メモリアドレスをオペランドとして発行する。プロセス状態入出力機能は、命令鍵テーブルのプロセス識別子に対応するエントリを参照して、永続化フラグが1のときのみ、プロセス状態保存処理を行い、永続化フラグが0の場合は例外を発生させる。
【0151】
保存処理では、プロセスの鍵情報(命令鍵、コンテキスト鍵、データ鍵)はプロセス状態保存用秘密鍵によって暗号化され、指定された外部メモリアドレスに書き出される。
【0152】
保存したプロセスの鍵情報を復帰するときは、プロセス状態復帰命令をプロセス識別子と保存先メモリアドレスをオペランドとして発行する。プロセッサはプロセス状態保存用秘密鍵により、プロセス鍵を復号化して、指定したプロセス識別子に対応するテーブルに登録する。その後、対応するコンテキスト情報とプロセス識別子を指定してプロセス再開命令を発行することにより、プロセスの実行が再開される。
【0153】
保存されたプロセス状態は、プロセッサ固有のプロセス状態保存用秘密鍵によって暗号化されているので、他のプロセッサに対してプロセス状態を移動することはできず、プログラムの不正利用の可能性を低減することができる。
【0154】
永続化制御フラグは配布鍵に含まれ、暗号化とハッシュによって守られているため、永続化フラグを変更することは正しい命令鍵を知らない限り不可能である。そして、復号化された永続化制御フラグにもとづいて、プロセス状態入出力機能によるプロセス鍵情報の保存処理の可否を判断することにより、プロセスの永続性と、安全性という相反する要素を、(一般に)プログラムの著作権者であるプログラム開発者が制御可能とする効果が本発明により実現される。
【0155】
なお、以上の各機能は、ソフトウェアとして実現可である。
また、本実施形態は、コンピュータに所定の手段を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0156】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、プロセッサとしての発明、プロセッサ内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【0157】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0158】
【発明の効果】
本発明によれば、キャッシュメモリ管理手順において、初期登録における公開鍵処理時間による応答不感時間を短縮して、リアルタイム処理性能を向上させることのできるマイクロプロセッサを提供することができる。
【0159】
また、本発明によれば、キャッシュメモリのアクセス制御に使われるタグの安全な管理を可能にしたマイクロプロセッサを提供することができる。
【0160】
また、本発明によれば、連鎖によってプログラムの暗号鍵を推定されにくくすると同時に効率的な命令実行を実現するプログラム復号化手段を持つマイクロプロセッサを提供することができる。
【0161】
また、本発明によれば、複数のプロセスが同一の暗号鍵によって暗号化されているデータを共有をするときの処理効率を向上させることのできるマイクロプロセッサを提供することができる。
【0162】
また、本発明によれば、安全なプログラム利用の利便性と秘密の安全性という、相反する要素を、プログラム提供者の意志にしたがって実現するコンテキスト保存手段を持つマイクロプロセッサを提供することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係るマイクロプロセッサの全体構成例を示す図
【図2】プログラムのメモリ上配置について説明するための図
【図3】同実施形態の鍵管理部の構成例を示す図
【図4】同実施形態の鍵登録処理の一例を示すフローチャート
【図5】同施形態の命令復号化処理部の構成例を示す図
【図6】本発明の第2の実施形態に係るマイクロプロセッサの基本構成例を示す図
【図7】同実施形態の鍵管理部の構成例を示す図
【図8】本発明の第3の実施形態に係るマイクロプロセッサの基本構成例を示す図
【図9】同実施形態の鍵管理部の構成例を示す図
【図10】同実施形態の鍵登録処理について説明するための図
【図11】同実施形態の鍵登録処理の一例を示すフローチャート
【図12】同実施形態の鍵削除処理について説明するための図
【図13】同実施形態の鍵削除処理の一例を示すフローチャート
【図14】本発明の第4の実施形態に係るマイクロプロセッサの鍵管理部の構成例を示す図
【図15】同施形態の配布鍵形式の一例を示す図
【図16】同実施形態の命令鍵テーブル形式の一例を示す図
【図17】同実施形態のプロセス鍵保存手順の一例を示すフローチャート
【符号の説明】
101…プロセッサ
102…内部データバス
103…外部バスインタフェース
201…プロセッサコア
202…実行鍵識別子格納レジスタ
203…制御レジスタ
204…レジスタ・制御レジスタ
205…プロセス識別子格納レジスタ
206…データ暗号化制御レジスタ
301…命令キャッシュ
401…データキャッシュ
501…復号化処理部
502…アドレス処理部
503…復号化機能
504…バッファ
505…連鎖計算機能
601…データ暗号化・復号化処理部
701…鍵管理部
702…状態管理機能
702−1…プロセス状態管理テーブル
703…配布鍵読み出し機能
704…秘密鍵
705…実効鍵復号化機能
706…鍵テーブル
707…命令鍵管理機能
708…乱数発生機能
709…コンテキスト鍵テーブル
710…データ鍵テーブル
801…鍵インデックス変換機能
802…間接鍵値参照テーブル
803…間接鍵値参照テーブル管理機能
804…鍵値テーブル
805…実効鍵値テーブル管理機能
901…プロセス状態入出力機能
902…プロセス状態保存用秘密鍵
903…プロセス状態鍵暗号・復号化機能

Claims (6)

  1. 外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、
    あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、
    前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、
    プロセスを識別するプロセス識別子対応に、前記命令鍵を保持するテーブルと、
    前記テーブルに前記プロセス識別子対応に命令鍵を登録する登録手段と、
    登録の完了を命令実行部に通知する通知手段と、
    実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、
    外部の記憶手段の所定のアドレスの内容を前記プロセス識別子保持手段によって指示される前記テーブルに格納された命令鍵によって復号化する第2の復号化手段と、
    外部の記憶手段から読み込んだ命令および前記第2の復号化手段により復号化された命令を実行する命令実行手段と、
    前記第1の復号化手段に命令鍵を復号化させるステップと、該命令において指定されたプロセス識別子と前記命令鍵とを対応づけて前記テーブルに登録するステップと、登録の完了を命令実行部に通知するステップとを実行する第1の命令実行手段と、
    前記プロセス識別子保持手段に、該命令において指定されるプロセス識別子を設定するステップと、該命令において指定される外部の記憶手段のアドレスにプログラム実行制御を移すステップとを実行する第2の命令実行手段とを備えたことを特徴とするマイクロプロセッサ。
  2. 外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、
    あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、
    前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、
    前記復号化された命令鍵を、プロセス識別子に対応づけて保持する第1のテーブルと、
    前記テーブルに前記プロセス識別子対応に命令鍵を登録する登録手段と、
    実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、
    前記プロセス識別子をプログラム読出し要求に付随して出力するプログラム実行手段と、
    前記プログラム読出し要求に付随する前記プロセス識別子によって該キャッシュラインの暗号鍵が選択され、復号化が行われる第2の復号化手段と、
    前記第2の復号化手段の復号化結果と前記読出し要求に付随するプロセス識別子と対応付けてキャッシュライン毎に保持する手段と、
    前記キャッシュメモリのキャッシュラインに保持されるプロセス識別子とプログラム実行手段から出力されるプログラム読出し要求のプロセス識別子とが一致したときのみ読出しを許可するキャッシュメモリと、前記登録手段が第1のテーブルの第1のプロセス識別子に対応する命令鍵を書き換えるとき、前記第1のプロセス識別子を保持する前記キャッシュメモリ上のキャッシュラインをフラッシュする鍵管理手段とを備えたことを特徴とするマイクロプロセッサ。
  3. 外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、
    あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、
    前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、
    外部の記憶手段におかれている、暗号単位間の連鎖の有無を定義する連鎖情報を読み込む連鎖情報取得手段と、
    プロセスを識別するプロセス識別子対応に、前記復号化された命令鍵を保持するテーブルと、
    前記連鎖情報取得手段が読み込んだ連鎖情報に基づいて、外部の記憶手段の所定のアドレスにおかれた複数の暗号単位を前記命令鍵によって復号化する第2の復号化手段とを備えたことを特徴とするマイクロプロセッサ。
  4. 外部へ読み出すことのできない固有の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、
    あらかじめ前記秘密鍵に対応する公開鍵によって暗号化された命令鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、
    前記第1の読み出し手段で読み出した前記命令鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、
    実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、
    登録される鍵の値についてテーブル内での一意性を保証する鍵登録機構を持つ、復号鍵を保持する第1のテーブルと、
    プロセス識別子によって参照され、前記第1のテーブルへの参照を保持する第2のテーブルと、
    キャッシュメモリ参照において、前記プロセス識別子に基づいて前記第2のテーブルを参照し、前記第1のテーブルへの参照に変換を行い、前記第1のテーブルへの参照情報をキャッシュタグとするタグ変換手段と、
    キャッシュメモリと、キャッシュメモリと外部メモリとのデータ読み書きにおいて、キャッシュメモリから提示されたタグ値に基づいて、前記第1のテーブルから対応する前記復号鍵を取得し、データの暗号化もしくは復号化を行う暗号手段とを備えたことを特徴とするマイクロプロセッサ。
  5. 外部へ読み出すことのできない固有の第1の秘密鍵および第2の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、
    あらかじめ前記第1の秘密鍵に対応する公開鍵によって一体として暗号化された命令鍵および永続化許可フラグをマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、
    前記第1の読み出し手段で読み出した前記命令鍵および永続化許可フラグを、前記秘密鍵を用いて復号化する第1の復号化手段と、
    プロセスを識別するプロセス識別子対応に、前記命令鍵および前記永続化許可フラグおよび共通鍵を保持するテーブルと、
    実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、
    前記プロセス識別子対応に、プロセスの実行中断時のレジスタ値を前記共通鍵で暗号化してレジスタ情報として外部の記憶手段に保存するレジスタ値保存手段と、
    前記プロセス識別子対応に、保存された前記レジスタ情報を前記共通鍵により復号化してレジスタに読み込むコンテキスト復帰手段と、
    該命令において指定されるプロセス識別子に対応する前記永続化許可フラグの値が所定の値をとる場合のみ、前記プロセス識別子に対応する前記共通鍵を前記プロセッサの第2の秘密鍵により暗号化して外部の記憶手段に書き出すステップを実行する所定の命令実行手段とを備えたことを特徴とするマイクロプロセッサ。
  6. 外部へ読み出すことのできない固有の第1の秘密鍵を内部に保持した1チップまたは1パッケージのマイクロプロセッサであって、
    あらかじめ前記秘密鍵に対応する公開鍵によって一体として暗号化された命令鍵およびフィードバック鍵をマイクロプロセッサ外部の記憶手段から読み出す第1の読み出し手段と、
    前記第1の読み出し手段で読み出した前記命令鍵およびフィードバック鍵を、前記秘密鍵を用いて復号化する第1の復号化手段と、
    プロセスを識別するプロセス識別子対応に、前記命令鍵およびフィードバック鍵、ならびに共通鍵を保持するテーブルと、
    実行中のプロセスプロセス識別子を保持するプロセス識別子保持手段と、
    前記プロセス識別子対応に、プロセスの実行中断時のレジスタ値を前記共通鍵で暗号化してレジスタ情報として外部の記憶手段に保存するレジスタ値保存手段と、
    該命令において指定される所定のプロセス識別子に対応する前記共通鍵を前記フィードバック鍵により暗号化して外部の記憶手段に書き出すステップを実行する所定の命令実行手段とを備えたことを特徴とするマイクロプロセッサ。
JP2001024480A 2001-01-31 2001-01-31 マイクロプロセッサ Expired - Fee Related JP4098478B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001024480A JP4098478B2 (ja) 2001-01-31 2001-01-31 マイクロプロセッサ
US10/059,217 US7136488B2 (en) 2001-01-31 2002-01-31 Microprocessor using asynchronous public key decryption processing
EP02250667A EP1229427A3 (en) 2001-01-31 2002-01-31 Microprocessor using public key decryption processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001024480A JP4098478B2 (ja) 2001-01-31 2001-01-31 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2002232417A JP2002232417A (ja) 2002-08-16
JP4098478B2 true JP4098478B2 (ja) 2008-06-11

Family

ID=18889616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001024480A Expired - Fee Related JP4098478B2 (ja) 2001-01-31 2001-01-31 マイクロプロセッサ

Country Status (3)

Country Link
US (1) US7136488B2 (ja)
EP (1) EP1229427A3 (ja)
JP (1) JP4098478B2 (ja)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4098478B2 (ja) 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US7890771B2 (en) * 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
WO2003096159A2 (en) * 2002-05-09 2003-11-20 Kestrel Wireless, Inc. Method and system for enabling electronic transactions via a personal device
JP3880933B2 (ja) * 2003-01-21 2007-02-14 株式会社東芝 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
JP2004246637A (ja) * 2003-02-14 2004-09-02 Fainaaku Kk 固有情報化プロセッサ、これを備えた処理装置および記憶装置、関連するプログラム実行方法、およびコンピュータプログラム
JP4375980B2 (ja) * 2003-03-11 2009-12-02 株式会社エヌ・ティ・ティ・ドコモ マルチタスク実行システム及びマルチタスク実行方法
US7257718B2 (en) * 2003-05-12 2007-08-14 International Business Machines Corporation Cipher message assist instructions
CA2530368A1 (en) * 2003-06-23 2005-01-06 Kestrel Wireless, Inc. Method and apparatus for activating optical media
EP1680724B1 (en) 2003-08-26 2019-05-08 Panasonic Intellectual Property Corporation of America Program execution device
JP4309726B2 (ja) * 2003-09-01 2009-08-05 株式会社東芝 マイクロプロセッサ
JP4263976B2 (ja) * 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
FR2861234A1 (fr) 2003-10-17 2005-04-22 St Microelectronics Sa Chiffrement de donnees dans un appareil electronique a plusieurs processeurs symetriques
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US7590845B2 (en) * 2003-12-22 2009-09-15 Lenovo Singapore Pte. Ltd. Key cache management through multiple localities
JP4282472B2 (ja) * 2003-12-26 2009-06-24 株式会社東芝 マイクロプロセッサ
GB0403705D0 (en) * 2004-02-19 2004-03-24 Waterleaf Ltd Gaming facility and method of operation thereof
JP4612461B2 (ja) * 2004-06-24 2011-01-12 株式会社東芝 マイクロプロセッサ
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
JP4204522B2 (ja) * 2004-07-07 2009-01-07 株式会社東芝 マイクロプロセッサ
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
KR100735577B1 (ko) * 2004-08-12 2007-07-04 삼성전자주식회사 무선 네트워크의 적응형 키검색장치 및 방법
JP2006085676A (ja) * 2004-08-20 2006-03-30 Matsushita Electric Ind Co Ltd 暗号化命令処理装置
US20060059372A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Integrated circuit chip for encryption and decryption having a secure mechanism for programming on-chip hardware
US20060075254A1 (en) * 2004-09-27 2006-04-06 Cisco Technology, Inc. (A California Corporation) Smart card functionality from a security co-processor and symmetric key in ROM
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
US8954751B2 (en) 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
US20060095385A1 (en) * 2004-10-26 2006-05-04 Paul Atkinson Method and network for selectively controlling the utility a target
US20070194945A1 (en) * 2004-12-07 2007-08-23 Paul Atkinson Mobile Device for Selectively Activating a Target and Method of Using Same
US20060132285A1 (en) * 2004-12-07 2006-06-22 Paul Atkinson Device and method for selectively controlling a processing device
US20060192653A1 (en) * 2005-02-18 2006-08-31 Paul Atkinson Device and method for selectively controlling the utility of an integrated circuit device
US8086871B2 (en) * 2005-04-26 2011-12-27 International Business Machines Corporation Method for fast decryption of processor instructions in an encrypted instruction power architecture
US8050406B2 (en) * 2005-06-07 2011-11-01 Sony Corporation Key table and authorization table management
US8165302B2 (en) * 2005-06-07 2012-04-24 Sony Corporation Key table and authorization table management
JP4836504B2 (ja) * 2005-06-30 2011-12-14 富士通株式会社 Icチップ、ボード、情報処理装置及びコンピュータプログラム
WO2007006005A2 (en) * 2005-07-06 2007-01-11 Kestrel Wireless Inc. Device and method for authenticating and securing transactions using rf communication
US20070008169A1 (en) * 2005-07-11 2007-01-11 Conero Ronald S A Radio Frequency Activated Integrated Circuit and Method of Disabling the Same
US7783896B2 (en) * 2005-09-06 2010-08-24 Research In Motion Limited System and method for management of plaintext data in a mobile data processing device
WO2007047841A2 (en) * 2005-10-18 2007-04-26 Kestrel Wireless Inc. Activation confirmation feedback circuits and methods
DE602005021120D1 (de) * 2005-10-28 2010-06-17 Emma Mixed Signal Cv Zugriffskontrolle auf eine Entschlüsselungstabelle von ASIC bzw. ASSP
WO2007085016A2 (en) * 2006-01-20 2007-07-26 Kestrel Wireless Inc. Optical media with reduced areal-sized optical shutters
US7877565B1 (en) 2006-01-31 2011-01-25 Nvidia Corporation Constant versioning for multi-threaded processing
US8094158B1 (en) * 2006-01-31 2012-01-10 Nvidia Corporation Using programmable constant buffers for multi-threaded processing
US20080046114A1 (en) * 2006-08-15 2008-02-21 White Charles A System, packaging, and method for distributing products
JP4767129B2 (ja) * 2006-08-17 2011-09-07 株式会社エヌ・ティ・ティ・ドコモ Os切替装置及びos切替方法
US20080244275A1 (en) * 2007-03-30 2008-10-02 Motorola, Inc. Instruction Transform for the Prevention and Propagation of Unauthorized Code Injection
JP4976991B2 (ja) * 2007-11-22 2012-07-18 株式会社東芝 情報処理装置、プログラム検証方法及びプログラム
EP2196937A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for instruction level software encryption
JP5322620B2 (ja) 2008-12-18 2013-10-23 株式会社東芝 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム
JP4865839B2 (ja) * 2009-06-02 2012-02-01 パナソニック株式会社 半導体集積回路装置
US8578175B2 (en) 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
DE112009005466T5 (de) * 2009-12-22 2012-10-31 Intel Corporation Verfahren und Vorrichtung zum Bereitstellen einer sicheren Anwendungsausführung
US8700919B2 (en) 2010-05-25 2014-04-15 Via Technologies, Inc. Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8812871B2 (en) * 2010-05-27 2014-08-19 Cisco Technology, Inc. Method and apparatus for trusted execution in infrastructure as a service cloud environments
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
CN102156843B (zh) * 2011-03-28 2015-04-08 威盛电子股份有限公司 数据加密方法与系统以及数据解密方法
US8725788B2 (en) * 2011-05-27 2014-05-13 Adobe Systems Incorporated System and method for decryption of content including partial-block discard
US8850557B2 (en) 2012-02-29 2014-09-30 International Business Machines Corporation Processor and data processing method with non-hierarchical computer security enhancements for context states
CN103198242A (zh) * 2013-04-02 2013-07-10 厦门亿联网络技术股份有限公司 一种利用芯片实现加密的方法
JP6068325B2 (ja) * 2013-12-19 2017-01-25 インテル・コーポレーション セキュアなアプリケーションの実行を提供するプロセッサ
US10223289B2 (en) 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
CN106714075B (zh) * 2015-08-10 2020-06-26 华为技术有限公司 一种处理授权的方法和设备
US10721067B2 (en) * 2016-08-10 2020-07-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Secure processor for multi-tenant cloud workloads
JP6480403B2 (ja) * 2016-12-22 2019-03-13 インテル・コーポレーション 装置
CN108667600B (zh) * 2017-03-30 2021-09-14 上海诺亚投资管理有限公司 一种区块链上用户交易密钥的管理方法和系统
US10296741B2 (en) * 2017-07-27 2019-05-21 International Business Machines Corporation Secure memory implementation for secure execution of virtual machines
CN110069422B (zh) * 2018-01-23 2021-06-18 普天信息技术有限公司 基于mips多核处理器的内存缓冲区回收方法
US11139959B2 (en) * 2018-02-01 2021-10-05 The University Of Chicago Stream ciphers for digital storage encryption
US11169717B2 (en) 2018-12-28 2021-11-09 Micron Technology, Inc. Unauthorized access command logging using a key for a protected region of memory
JP6777288B2 (ja) * 2019-02-07 2020-10-28 インテル・コーポレーション プロセッサ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US5224166A (en) * 1992-08-11 1993-06-29 International Business Machines Corporation System for seamless processing of encrypted and non-encrypted data and instructions
US5666411A (en) * 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US6101255A (en) * 1997-04-30 2000-08-08 Motorola, Inc. Programmable cryptographic processing system and method
US6188602B1 (en) * 2000-01-25 2001-02-13 Dell Usa, L.P. Mechanism to commit data to a memory device with read-only access
JP4098478B2 (ja) 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ

Also Published As

Publication number Publication date
EP1229427A3 (en) 2004-09-22
US7136488B2 (en) 2006-11-14
EP1229427A2 (en) 2002-08-07
US20020101995A1 (en) 2002-08-01
JP2002232417A (ja) 2002-08-16

Similar Documents

Publication Publication Date Title
JP4098478B2 (ja) マイクロプロセッサ
US11550962B2 (en) Secure processor and a program for a secure processor
JP4226816B2 (ja) マイクロプロセッサ
JP3866597B2 (ja) 内部メモリ型耐タンパプロセッサおよび秘密保護方法
US7673152B2 (en) Microprocessor with program and data protection function under multi-task environment
JP4226760B2 (ja) マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP3880933B2 (ja) 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
JP3801833B2 (ja) マイクロプロセッサ
JP2002202720A (ja) 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
JP2003051819A (ja) マイクロプロセッサ
JP4282472B2 (ja) マイクロプロセッサ
JP4643702B2 (ja) マイクロプロセッサ
CN115994389A (zh) 一种基于risc-v架构的硬件内存加密系统及其应用
JP2009253490A (ja) メモリシステムの暗号化方式
JP2010055423A (ja) マイクロプロセッサ
JP2005018379A (ja) プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080313

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

Free format text: PAYMENT UNTIL: 20110321

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120321

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130321

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130321

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140321

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees