JP4153653B2 - マイクロプロセッサおよびデータ保護方法 - Google Patents
マイクロプロセッサおよびデータ保護方法 Download PDFInfo
- Publication number
- JP4153653B2 JP4153653B2 JP2000333635A JP2000333635A JP4153653B2 JP 4153653 B2 JP4153653 B2 JP 4153653B2 JP 2000333635 A JP2000333635 A JP 2000333635A JP 2000333635 A JP2000333635 A JP 2000333635A JP 4153653 B2 JP4153653 B2 JP 4153653B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- data
- key pair
- program
- storage area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
Description
【発明の属する技術分野】
本発明は、マルチタスクのプログラム実行環境を支援するマイクロプロセッサと、このマイクロプロセッサによるデータ保護方法に関する。
【0002】
【従来の技術】
計算機システムでプログラムを実行するにあたり、保護機能を持つプロセッサが求められている。現在実用化されているプロセッサにおいては、仮想メモリ管理おける保護機能や、周辺入出力デバイスへのアクセスの制約などの機構は、マルチタスクの実行環境を提供する計算機システムの安全性を確保するうえで、必須の条件とされている。
【0003】
さらに近年では、保護機構を考える上で、それ自体が保護されるべき一群のプログラムが特に重要な保護対象となってきている。たとえば、著作権により保護されているプログラムは、著作権を侵害する形で実行することが認められない。また、第三者から秘匿すべきデータを扱うプログラムもある。秘匿すべきデータを扱うプログラムが、その実行状態とともに解析される可能性があるとしたら、データの秘匿性が保証できなくなり、厳重な保護が要求される。
【0004】
これらプログラムを安全に実行するために、暗号学的に安全性を保証するシステムが提案され、実用化されている。その一つが、耐タンパ・ソフトウェアである(David Aucsmith et.al; ``Tamper Resistant Software: An Implementation'', Proceeding of the 1996, Intel Software Developer's Conference)。これは、プログラムの一部あるいは全部を暗号化して配布・保存し、これを利用する直前に自らプログラムとデータを復号化して実行し、終了時に必要であれば再び暗号化する技術である。
【0005】
しかし、耐タンパソフトウェア技術は、基本的に逆アセンブラ、デバッガなどの解析ツールによる解析を繁雑にするだけのものである。プログラムがプロセッサによって実行可能である以上、プログラムの開始時から順を追って解析していけば必ずプログラムの実行過程を解読分析することが可能である。つまり、プログラムの配布の過程においては、安全ではあっても、一旦実行するに至ると、実行する計算機システムにアクセスする手段をもつ第三者からは、プログラムとそのデータを秘匿することはできないものであった。
【0006】
ソフトウェアによって暗号・復号化を行なうのではなく、暗号化/複号化の処理機能自体をマイクロプロセッサに内蔵し、復号したプログラムをマイクロプロセッサの外部から隠匿するという一連の技術がある。これらは、Hampsonによる米国特許第4,47,902号、Hartmanの米国特許第5,224,166号、Davisの米国特許第5,806,706号、Takahasiの米国特許第5,825,878号、Leonard et.alの米国特許第6,003,117号、特開平11-282756号などに開示されている。
【0007】
マイクロプロセッサに暗号/複号処理機能を内蔵する方式に特徴的なことは、マイクロプロセッサが、秘密データを外部から物理的に隠蔽された形で保持できる点にある。すなわち、マイクロプロセッサの破壊的な検査によっても秘密が開示されない形で、秘密データが保持される。これを次のように利用する。公開鍵暗号系でいう秘密鍵を、秘密データとしてあらかじめマイクロプロセッサに内蔵させる。プログラムは、たとえばプログラムベンダーにより、ある暗号鍵(共通鍵暗号系を用いることが一般的である)で暗号化されて、マイクロプロセッサに配布される。このとき、暗号鍵を、プロセッサの秘密鍵に対応する公開鍵でさらに暗号化してプログラムに添付する。
【0008】
この機構により、プログラム自体を安全な形で提供することが可能であり、その実行過程を逆アセンブルなどの解析手法を用いて復元することはできない。また、プログラムの暗号鍵を知ることなくプログラムを意図する形に改変することは、暗号学的に困難である。
【0009】
しかし、暗号プログラムを実行するこれらのマイクロプロセッサには、大きな問題点があった。それは、これらマイクロプロセッサは、通常、マルチタスク環境を実現するオペレーティング・システム(以下、「OS」という)のもとで使用されることである。マルチタスク環境においては、コンテキスト・スイッチという操作でマイクロプロセッサを時分割することで、複数のプログラムを見かけ上同時に実行する。このコンテキスト・スイッチの過程において、OSは、プロセッサの実行状態の全てを読み書きすることが可能である。したがって、OSの挙動を解析すること、あるいはOS自体を改竄することにより、暗号で保護されているはずのプログラムも、その実行状態が全て解析されるおそれがある。
【0010】
この問題に対して、従来技術は部分的な解決策を提案している。たとえば、特開平第11-282756号公報は、アプリケーションの持つ秘密情報を保存するためにプロセッサ内に設けられた秘密メモリの技術を開示している。この例では秘密メモリの中のデータへアクセスするために、予め定められた参照値を必要とする。しかしながら、同一のプロセッサで複数のプログラムが走っている場合に、特にオペレーティング・システムから、秘密データのアクセス権を得るための参照値をどのように保護するかは、なんら開示されていない。
【0011】
また、特許出願番号第2000−135010号公報に開示される技術では、コンテキスト・スイッチをハードウェアで行ない、そのときにレジスタファイルの内容を暗号化した上でメモリに一時的に退避することにより、オペレーティング・システムからプログラムの実行状態を隠匿している。これにより、メモリに退避したプロセッサの実行状態を解析して秘密データを復元することは暗号学的に困難となり、暗号プログラムの安全性を保証することができる。しかしながら、この技術にも、次のような問題がある。
【0012】
【発明が解決しようとする課題】
第1の問題は、暗号による保護の対象がレジスタファイルに限定されている点である。マイクロプロセッサ内部に、レジスタファイル以外に多数あるいは大容量のメモリを持つ場合も想定され、その場合、コンテキスト・スイッチングの負荷は容量に比例して大きくなると思われる。しかし上記公報には、これら内部メモリをどのように保護するか、あるいはコンテキスト・スイッチの負荷をいかに軽減するかは、まったく開示されていない。
【0013】
たとえばプロセッサが大容量の内部メモリを持つ場合、従来の技術では、メモリのすべてを保護できないため、保護データの漏洩は避けられない。また、すべてを保護しようとすると、大容量のため暗号処理に伴う性能劣化を招き、実用化する上での大きな制約となっている。
【0014】
大容量のキャッシュ・メモリを持つプロセッサにおいて、コンテキスト・スイッチの負荷を軽減させるために用いられる手法に、キャッシュの連想メモリ部でのヒット・ミスヒットの判定に用いるタグに、キャッシュされているデータを所有するプロセスを特定する識別子を含ませるという方法が知られている(以下、プロセス・タグ方式と呼ぶ)。
【0015】
しかし、この方法を単純に適用することは難しい。プロセスとは、オペレーティング・システムがプロセッサを仮想化するために用いる概念であり、プロセッサそのものがプロセスを特定する識別子を扱うことは困難だからである。また、仮に、プロセッサがプロセスを特定する識別子によってデータへのアクセスを保護する仕組みを持つとしても、プロセス識別子がオペレーティング・システムの管理下にある以上、オペレーティング・システムの改竄による秘密の漏洩に対しては、とるべき措置がない。
【0016】
第2の問題点は、コンテキストのスイッチングがハードウェアで固定されており、すべてのレジスタが保存あるいは復帰されることになり、柔軟性に欠ける点である。たとえば、頻繁に起きる例外の処理のときには、レジスタファイルの一部だけを保存・復帰するといった最適化が望まれるが、特許出願番号第2000−135010号公報に開示される技術では、レジスタファイルの内容がすべて一括して保存・復帰される。
【0017】
そこで、本発明の第1の目的は、プログラム自体の秘密と、プログラムが扱うデータの秘密の双方を暗号学的に保証するとともに、マルチタスク環境下でコンテキスト・スイッチの負荷を軽減させることのできるマイクロプロセッサを提供することにある。
【0018】
本発明の第2の目的は、マルチタスク環境下で、必要な部分だけのデータの保存・復帰を可能にするために、保護対象の処理の最適化を行なうことにある。
【0019】
【課題を解決するための手段】
上記第1および第2の目的を同時に達成するために、本発明では、基本的に、公開鍵暗号系によるプログラムの暗号化鍵の配布方式を前提とし、公開鍵暗号系で与えられる、暗号プログラムを復号するためのプログラム鍵(第1の鍵)と、このプログラムによって処理されたデータを暗号化/複号化するためにマイクロプロセッサが生成するデータ鍵(第2の鍵)とを、鍵ペアとして関連付けて保持する鍵管理方式を提案する。この方式によれば、マイクロプロセッサは、暗号化されたプログラムを第1の鍵を用いて復号化し、第1の鍵に対応する第2の鍵を生成するとともに、これらの鍵の組み合わせに対して識別子を与える。第1の鍵と第2の鍵は、鍵ペアとして鍵ペアテーブルに書き込まれ、前記識別子はこの鍵ペアを特定するために以降の処理で使用される。復号化されたプログラムの実行中には、このプログラムの復号に用いた第1の鍵の鍵ペアに与えられた識別子を提示しておく。割り込みなどにより、復号されたプログラムの実行が中断される場合は、このプログラムによって処理されていたデータを、現在の識別子に対応する第2の鍵で暗号化し、外部のメモリ等に退避させる。処理されたデータに対するアクセス権の判定には、鍵ペアの一致を用いることで、プロセス間のデータの保護を暗号学的に保証する。
【0020】
このような方式を実現するために、本発明に係るマイクロプロセッサは、暗号化されたプログラムを第1の暗号鍵(たとえばプログラム鍵)を用いて復号化する命令復号処理部と、復号化されたプログラムによって実行されていたデータ(すなわちプロセスの実行状態)を第2の暗号鍵(たとえばデータ鍵)を用いて暗号化/復号化するデータ暗号/複号処理部と、第1および第2の鍵をペアにして格納する第1の記憶領域(たとえば鍵ペアテーブル)を有する鍵ペア管理部と、この鍵ペアを特定するタグ(識別子)を、前記プログラムに関連するデータとともに格納する第2の記憶領域(たとえばレジスタファイル)とを有する。
【0021】
プログラム鍵とデータ鍵のペアは不可分に格納され、これをプログラムの側から操作するときには、鍵ペアをプロセッサに固有の秘密鍵で暗号化した形でのみ操作される。これにより、暗号化プログラムの実行にあたり、プログラム自体の解析を暗号学的に困難とし、かつプログラムの実行状態の解析をオペレーティング・システムからも困難とする。また、鍵ペアを特定するタグを対応する各データに添付することによって、暗号処理を伴うデータ転送を、秘密保持に必要最小限の範囲で行なうことができる。
【0022】
暗号化プログラムを復号するためのプログラム鍵は、公開鍵暗号系で与えられる。マイクロプロセッサは、データ鍵生成部をさらに有し、新たなプログラム鍵が与えられた場合に、このプログラム鍵で復号されたプログラムによって実行されるデータを暗号化/複号化するためのデータ鍵を生成する。このようにして生成された鍵のペアは、鍵ペアテーブルに格納される。
【0023】
マイクロプロセッサは、現在実行中のプログラムに用いられている有効な鍵ペアの識別子である、実効鍵ペア識別子を格納する第3の記憶領域(システムレジスタ)を有する。プログラムが、ユーザモードで実行しているときに、割り込みなどによりカーネルモードに遷移すると、実効鍵ペア識別子は、カーネルモードを示す特定の値に切り替わる。これにより、ユーザモードのプログラムと、割り込み処理プログラムとを明確に区別することができる。割り込み処理プログラムが、ユーザモードのプログラムによって第2の記憶領域に納められていたデータを外部に一時的に退避させるにあたって、データ暗号/復号処理部は、そのデータに付随する識別子が指定する暗号鍵を用いて、外部メモリに転送する。これにより、割り込み等による例外発生時にも、データの安全は保護される。
【0024】
鍵ペアテーブルは、第1の鍵(プログラム鍵)と第2の鍵(データ鍵)を1対1対応でペアにして、複数の鍵ペアを格納する。
【0025】
あるいは、鍵ペアテーブルは、第1の鍵のインデックスと、第2の鍵のインデックスとを関連付けて格納する参照格納領域と、第1および第2の鍵を個別に格納する鍵格納領域とを含む構成としてもよい。この場合、鍵のインデックス自体はサイズが小さく、参照領域の記憶容量は少なくてすむ。また、個別に格納された第1および第2の鍵は、インデックスによって指定されることになるので、たとえば、マルチタスク環境下で、同じひとつのプログラムに対して異なる種類のデータが処理されている場合など、インデックスを用いて、プログラムの鍵と、処理データの鍵とを適正に組み合わせて複数の鍵ペアを特定することが可能になる。
【0026】
マイクロプロセッサは、第2の記憶領域と第3の記憶領域に接続されるメモリアクセス部をさらに有する。メモリアクセス部は、転送すべきデータに添付された鍵ペアの識別子と、実効鍵ペア識別子とに基づいてデータ転送の可否を判断するデータ転送判定部を有する。
【0027】
マイクロプロセッサはまた、第2の記憶領域と第3の記憶領域に接続される論理演算部をさらに有する。論理演算部は、演算のオペランドに添付された識別子と、実効鍵ペア識別子とに基づいて演算実効の可否を判断する演算実効判定部を有する。
【0028】
このように、鍵ペアを特定する識別子を、マイクロプロセッサ内で扱うデータに付加し、データ転送や演算操作の際に、データに付随する鍵ペアの識別子をアクセス権や演算可否の判断に用いることによって、データの安全性を一層向上することができる。
【0029】
第2の記憶領域は、複数のエントリから成り、各エントリが、プログラムに関連するデータと、そのデータに用いられる鍵ペアを特定する識別子とを有する。この構成により、たとえば割り込みによりカーネルモードでの処理が希望され、第3記憶領域の実効鍵ペア識別子の値がカーネルモードを示す値を取った場合に、所望のエントリのデータおよび対応する識別子だけを暗号化して、外部メモリに退避させることが可能になる。すなわち、割り込み発生時に、第2記憶領域内にあるデータ全体の退避に加えて、その一部だけを暗号化して退避させることが可能になる。
【0030】
本発明のその他の特徴、効果は、以下の詳細な説明でいっそう明確になる。
【0031】
【発明の実施の形態】
<第1実施形態>
図1から図15を参照して、本発明の第一実施形態にかかるマイクロプロセッサを説明する。本発明において、マイクロプロセッサは、暗号化プログラムをマルチタスク環境下で実行することを前提とする。
【0032】
図1は、本発明の第一実施形態に係るマイクロプロセッサ101の機能構成を示すブロック図である。マイクロプロセッサ101は、プログラムを実行するプロセッサ・コア201、プログラムの命令列を一時的に格納する命令キャッシュ301、このプログラムによって処理されるデータを一時的に格納するデータキャッシュ401、暗号化されたプログラムを実行時に復号してプロセッサコアに供給する命令復号処理部501、復号されたプログラムによって実行されていたデータを暗号化あるいは復号化するデータ暗号/複号処理部601と、鍵ペア管理部701を有する。
【0033】
命令復号処理部501において、暗号化プログラムの復号には、公開鍵系で与えられるプログラム鍵を用いる。また、プログラムが実行していたデータの暗号化/複号化には、プログラム鍵に対応して生成されたデータ鍵を用いる。第1実施形態の特徴として、鍵ペア管理部701は、このプログラム鍵とデータ鍵とを1対1対応でペアにして格納する鍵ペアテーブルを有するが、これについての詳細は後述する。
【0034】
また、プロセッサ・コア201は、システムレジスタ210と、レジスタファイル230を含む。システムレジスタ210は、現在実行中のプログラムのための鍵ペアを特定するタグ(識別子)を提示する。レジスタファイルは、プログラムデータあるいは処理データを、それに対応する鍵ペアのタグとともに格納する。これらの機能の詳細については後述する。
【0035】
マイクロプロセッサ101はさらに、プロセッサ・バス102、外部バス・インタフェース103を有し、マイクロプロセッサの外部にあるメモリや周辺デバイスと外部バス・インタフェース103を介して接続される。
【0036】
プロセッサ・コア201、命令キャッシュ301、データ・キャッシュ401は、図1において破線104で示される保護領域内にある。マイクロプロセッサ101の保護領域104は、外部あるいはOSから保護される領域であり、この領域内部ではデータは平文状態で取り扱われる。一方、保護領域104の外部では、秘匿すべきデータは必ず暗号化されている。保護領域外部から、暗号化されたデータが保護領域104の内部に読み込まれるときに、それが命令として読み込まれるときには命令復号化部501で復号化され、データとして読み込まれるときには、データ暗号復号化部601で復号化される。復号化にあたって使用するプログラム鍵およびデータ鍵は、鍵ペア管理部701から供給される。
【0037】
上述したように、第1実施形態の特徴として、復号化された平文状態のデータには、暗号操作を経たことを示す属性として、復号処理に用いた鍵ペアを特定するタグが付加され、プロセッサコア201内のレジスタファイル230に格納される。
【0038】
図2および図3は、マイクロプロセッサ101の処理操作の大まかな流れを示す。
【0039】
まず、図2に示すように、ステップS21で、マイクロプロセッサ101の外部のメモリに格納された暗号化プログラムの命令列を、現在実行中のプログラムの有効な鍵ペア(以下、「実効鍵ペア」と称する)のプログラム鍵を用いて復号化する。現在の実効鍵ペアは、システムレジスタに鍵ペアのタグが提示されているので、このタグに基づいて知ることができる。図2の例では、実効ペアタグの値は#1である。このタグ値に基づいて、鍵ペア管理部の鍵ペアテーブルからタグ#1に対応するプログラム鍵を読み出す。
【0040】
次に、ステップS23に示すように、復号化されて平文状態になった命令列にしたがって、プログラムを実行する。このプログラムの実行、すなわち演算操作の結果得られたデータには、鍵ペアタグが添付されて、レジスタファイル230に格納される。
【0041】
次にステップS25に示すように、レジスタファイルのデータをいったんデータキャッシュ401に転送する。
【0042】
最後に、ステップS27に示すように、このデータに添付された鍵ペアタグに基づいて、鍵ペアテーブルからデータ鍵を取りだし、データ鍵でデータを暗号化する。暗号化されたデータを外部メモリに転送する(退避させる)。
【0043】
図3は、退避させたデータの復帰処理フローである。まず、復帰するにあたって使用するべき鍵ペアタグを特定する。そして、外部メモリから暗号化されたデータをマイクロプロセッサ内部に取り込む。鍵ペアタグが指定するデータ鍵を鍵ペアテーブルから取り出し、これを用いてデータを復号し、保護領域の内にあるデータキャッシュ401にキャッシュする。
【0044】
次に、ステップS33に示すように、データキャッシュ401上の平文データをレジスタファイル230に転送する。そして、ステップS35に示すように、レジスタファイル230上のデータに対する演算操作を再開する。
【0045】
図4から図11は、このような操作を行なうマイクロプロセッサ101の各構成要素の詳細図である。これらの図に基づいて、各要素の構成と、鍵ペア・タグによる保護機能について説明する。
【0046】
図4は、プロセッサ・コア201の詳細な構成例を示す。以下の説明においては、MIPS Technologies社のRISC型マイクロプロセッサのアーキテクチャに、本発明に基づく変更を加えたものを例にとって説明する。より具体的には、プロセッサのパイプライン構成については、MIPS Technologies社のR3000系のものを、命令セットについては、MIPS-IないしはMIPS-IV命令セットを例にとって説明するが、これは本発明の適用範囲をMIPS Technologies 社のプロセッサに限定するものではない。
【0047】
なお、図4のプロセッサ・コア201の5つのパイプラインステージIF(instruction fetch)、RF(register read)、EX(execution)、MEM(memory access)、WB(write back)を左端に示す。
【0048】
プロセッサ・コア201は、システムレジスタ210と、命令フェッチ・デコーダ220と、レジスタファイル230と、演算部250と、メモリアクセス部260を含む。
【0049】
システムレジスタ210は、MIPS R3000のCP0に相当するシステム・レジスタをもとにして、仮想アドレス管理や例外処理機能に追加して、現在実行しているプロセスを特定する有効な鍵ペアのタグを格納する実効鍵ペアタグ・レジスタ211を備える。すなわち、実効鍵ペアタグ・レジスタ211は、現在実行中の有効なプログラムと、このプログラムによって処理されているデータとを暗号処理する鍵のペアを示すタグを格納している。
【0050】
命令フェッチ・デコーダ220は、プログラムカウンタ221と、命令バッファ222と、命令実行制御部223を含む。命令実行制御部223の制御のもとに、プログラムカウンタ221の指すアドレスから、命令を命令バッファ222にフェッチし、これをデコードして、各データ・パスを制御する信号(図中では省略)を生成する。
【0051】
第1実施形態では、命令キャッシュ301への読み出し要求のパラメータとして、命令アドレスに加えて、現在実行中のプロセスを示す実効鍵ペアタグ・レジスタ211の値も送られる。
【0052】
レジスタファイル230は、各レジスタ231において、レジスタデータ部231−1とともに、本発明に特徴的なレジスタタグ部231−2を持つ。レジスタタグ部231−2は、そのレジスタに格納されたデータの暗号による保護属性を示す鍵ペア・タグが格納される。
【0053】
命令実行パイプラインのRF(レジスタ・リード)フェーズでは、レジスタデータ部231−1の内容がオペランド・バス240に、レジスタタグ部231−2の内容がオペランドタグ・バス241に置かれる。
【0054】
算術論理演算部250は、命令実行パイプラインのEXフェーズに相当する。第1実施形態では、算術論理演算部250は、通常の演算器(演算データパス)251の他に、演算オペランドタグ判定部252を備える。図5に示すように、演算オペランドのタグ判定部252は、少くとも、演算の種類、演算のオペランドに付加されたタグの値、および実効鍵ペア・タグの三つの値に応じて、演算の実行の可否を決定する機能を持つ。演算の種類は、実効制御部223からタグ判定部252に入力され、タグ値は、レジスタファイルのタグ部231−2から入力される。現在の実効鍵ペア・タグは、システムレジスタ210の実効鍵ペア・タグ・レジスタ211から入力される。タグ判定部252によって実行が否決された場合には、プロセッサ・コア201は、再開のできない例外を発生し、その命令はアボートされる。実行が可決された場合には、命令に実行結果が存在すれば、その結果のデータがリザルト・バス280に、結果の鍵ペア・タグがリザルトタグ・バス281に置かれる。
【0055】
メモリアクセス部260は、命令実行パイプラインのEX/MEMフェーズに相当する。第1実施形態では、メモリアクセス部260は、通常のアドレス計算部261の他に、データ転送タグ判定部262を有する。メモリアクセス部260は、データ・キャッシュ401への読み書き要求のパラメータとして、アドレス計算部261で求めたデータ・アドレスに加えて、オペランドに付加されたタグの値あるいは実効鍵ペア・タグの値の、いずれか一方も送出する。データ転送タグ判定部262は、少くとも、データの転送元、データの転送先、転送するデータに付加されたタグの値、および実効鍵ペア・タグの四つの値に応じて、転送の実行の可否を決定する機能を持つ。実行が否決された場合には、プロセッサ・コアは、再開のできない例外を発生し、その命令はアボートされる。実行が可決された場合には、命令に実行結果が存在すれば、その結果のデータがリザルト・バス280に、結果の鍵ペア・タグがリザルトタグ・バス281に置かれる。
【0056】
鍵ペア管理部インタフェース270は、本発明に固有のものであり、後述する鍵ペア管理部701を制御するためのものである。
【0057】
命令実行パイプラインのWBステージでは、リザルト・バス280上のデータと、リザルトタグ・バス281上の鍵ペア・タグが、必要であれば、レジスタファイル230に書き戻される。
【0058】
図6は、現在の実効鍵ペア・タグを提示するシステムレジスタ210の構成図である。実効鍵ペア・タグ・レジスタ211は、現在実行中のプログラムの有効な鍵ペアのタグを提示する。第1実施形態では、鍵ペア・タグのうち、2つのタグ値を、特別な用途のために予約している。
【0059】
一つは、暗号処理を行わないことを示すためのタグ値である(これをゼロ・タグと呼ぶ)。命令復号処理部501と、データ暗号処理部601においては、鍵ペア・タグとしてゼロ・タグ(Tag-0)が提示されると、暗号操作を行わずに、データ(あるいは命令)をそのまま転送する。
【0060】
もう一つは、プロセッサの動作モードとして、カーネルモードが選択されている時に用いるために予約されているタグ値(tag-K)である。このタグ値に対応する鍵ペアには、カーネルモードで実行するプロセス(通常の計算機システムにおいては、オペレーティング・システム)のプログラム鍵およびデータ鍵が登録される。
【0061】
実効鍵ペア・タグ・レジスタ211は、カーネルモードでの鍵ペア・タグを格納するカーネル鍵ペアタグ・レジスタ211ー1と、ユーザモードでの鍵ペア・タグを格納するユーザ鍵ペアタグ・レジスタ211−2を備え、そのときのプロセッサの実効モードによりいずれかが選択されて、以下の処理で有効な鍵ペアタグ(実効鍵ペアタグ)として出力される。
【0062】
図7は、命令キャッシュ301の詳細な構成例を示す。命令キャッシュ301は、複数の命令キャッシュライン302の配列で構成される。本発明のキャッシュラインは、キャッシュ中のアドレスの検索方法は公知の手法で行うが、本発明に特徴的な要素として、各命令キャッシュラインは、そのラインにキャッシュされているプログラムデータの保護属性を示す、すなわちキャッシュされているプログラムデータに作用させるべきプログラム鍵を示す鍵ペア・タグを格納する領域302−1を有する。鍵ペア・タグ領域302−1の大きさは、後述する鍵ペアテーブルの全エントリをインデックスできるだけのビット数があればよい。たとえば64エントリの鍵ペアテーブルを用いるとすれば、6ビットあれば十分である。なお、プログラムデータの外部メモリでの所在を示すアドレスや、その状態を示す領域も、各キャッシュラインに設けられている。
【0063】
図8は、データ・キャッシュ401の詳細な構成例を示す。データキャッシュ401は、複数のデータキャッシュライン402の配列で構成される。データキャッシュラインもまた、そのラインにキャッシュされている処理データの保護属性を示す、すなわちキャッシュされている処理データに作用させるべきデータ鍵を示す鍵ペア・タグを格納する領域402−1を有する。外部メモリのアドレスおよび状態を示す領域が設けられているのは、命令キャッシュ301と同様である。
【0064】
図9は、命令復号処理部501の詳細な構成例とその動作を示す。命令復号処理部501は、復号化処理の対象となっているプログラムデータやその暗号鍵を一時的に保持するコマンドデータ・レジスタ502と、共通鍵による復号化を行う命令復号演算器503と、これらを制御するための命令復号制御部504とから構成される。
【0065】
命令復号処理部501はまず、命令キャッシュ301から読み出し要求を受ける。このときのパラメータは、外部メモリのアドレスと、読み出したプログラムデータに対して作用させる暗号鍵(プログラム鍵)を特定する鍵ペア・タグである。まず、アドレスをパラメータとして外部メモリに読み出し要求を出す。また、鍵ペア・タグをパラメータとして、鍵ペア管理部701にプログラム鍵の読み出し要求を出す。
【0066】
これらの読み出し要求に応じて外部メモリから送られてきた暗号化プログラムデータとプログラム鍵は、コマンドデータ・レジスタ502に格納される。命令復号演算器503は、コマンドデータ・レジスタ502上の暗号化されているプログラムデータに対してプログラム鍵を作用させ、暗号プログラムデータを復号化する。復号化が完了すると、平文のデータが命令キャッシュへと出力される。
【0067】
図10は、データ暗号処理部601の詳細な構成例とその動作を示す。データ暗号処理部601は、プログラムによって処理された平文状態あるいは暗号状態のデータを一時的に格納するコマンドデータ・レジスタ602と、共通鍵による暗号化/復号化を行なうデータ暗号/復号演算器603と、これらを制御するためのデータ暗号制御部604とから構成される。
【0068】
データ暗号処理部601は、データキャッシュ401から読み出しおよび書き込み要求を受ける。読み出し要求は、たとえば割り込みによる例外発生時に、一時的に外部のメモリに退避させておいたデータを、割り込み処理後に呼び戻す場合に、発せられる。書き込み命令は、割り込み発生時に、それまで処理していたデータを護るためにいったん暗号化して外部のメモリに書き込む場合に発せられる。
【0069】
読み出し要求のパラメータは、外部メモリのアドレスと、読み出したデータに対して作用させる暗号鍵を特定する鍵ペア・タグである。まず、アドレスをパラメータとして外部メモリに読み出し要求を出す。また、鍵ペア・タグをパラメータとして鍵ペア管理部701にデータ鍵の読み出し要求を出す。外部メモリに暗号化された状態で格納されていた処理データと、鍵ペア管理部701からのデータ鍵は、コマンドデータ・レジスタ601に格納される。データ暗号演算器602は、コマンドデータ・レジスタ602上のデータに対してデータ鍵を作用させ、暗号化されていたデータを復号化する。復号化が完了すると、平文のデータがデータ・キャッシュへと出力される。
【0070】
一方、書き込み要求のパラメータは、処理データを書き込むべき(すなわち一時的に退避させるべき)外部メモリのアドレスと、転送するデータと、データに対して作用させる暗号鍵を特定する鍵ペア・タグである。まず、鍵ペア・タグをパラメータとして鍵ペア管理部701にデータ鍵の読み出し要求を出す。データ暗号/復号演算器603は、コマンドデータ・レジスタ602上の平文データに対してデータ鍵を作用させ、平文データを暗号化する。暗号化が完了すると、暗号化されたデータが外部メモリへと出力される。
【0071】
図11は、鍵ペア管理部701の詳細な構成例を示す。鍵ペア管理部701は、プロセッサ・コア201とのインタフェース702と、命令復号処理部501とのインタフェース703と、データ暗号処理部601とのインタフェース704と、鍵ペア・テーブル710と、鍵ペア制御部720とから構成される。
【0072】
鍵ペア・テーブル710は、複数の鍵ペアのエントリー711を有する。それぞれの鍵ペアは、プログラム鍵711−1とデータ鍵711−2とから構成される。本発明でいう鍵ペア・タグとは、この鍵ペアの配列からなる鍵ペア・テーブル710のインデックスである。鍵ペア・テーブル710の動作は、以下で説明する三つの読み出し操作と、一つの書き込み操作である。
【0073】
(1)プログラム鍵の読み出し
命令復号処理部501と鍵ペア管理部701との間で行われる動作であり、命令復号処理部インタフェース703と接続されるポートを介する読み出し操作である。命令復号処理部501のレジスタにある鍵ペア・タグ(すなわちインデックス)によって特定される鍵ペアのプログラム鍵を取り出して出力する。
【0074】
(2)データ鍵の読み出し
データ暗号/復号処理部601と鍵ペア管理部701との間で行われる動作であり、データ暗号処理部インタフェース704と接続されるポートを介する読み出し操作である。データ暗号/復号処理部601のレジスタにある鍵ペア・タグ(すなわちインデックス)により特定される鍵ペアのデータ鍵を取り出して出力する。
【0075】
(3)鍵ペアの読み出し
プロセッサ・コア201と鍵ペア管理部701との間で行われる動作であり、鍵ペア制御部710と接続されるポートを介する読み出し操作である。鍵ペア・タグにより特定される鍵ペアのプログラム鍵とデータ鍵の両方を出力する。
【0076】
(4)鍵ペアの書き込み
鍵ペア制御部720と接続されるポートを介する書き込み操作であって、パラメータとして与えられるプログラム鍵とデータ鍵とを、インデックスにより指定される鍵ペアテーブル上の鍵ペアとして格納する。
【0077】
鍵ペア管理部701の鍵ペア制御部720は、プロセッサ・コア201からの要求に従い、次の三つの操作を行なう。
【0078】
(1)新しい鍵ペアの登録
新規の暗号プログラムを実行する場合、その暗号プログラムを復号するためのプログラム鍵と、このプログラムによって実行処理されたデータを暗号化/復号化するためのデータ鍵をペアにして新規に登録する必要がある。鍵ペア制御部720は、プロセッサ・コア201から、プログラム鍵をプロセッサの公開鍵で暗号化したプログラム鍵データと、これに用いられることになる鍵ペア・タグを提示される。プログラム鍵データは、鍵登録用レジスタ721に格納され、一方、鍵ペア・タグは鍵ペア・テーブル710へのインデックスとして用いられる。
【0079】
公開鍵暗号処理部722は、プロセッサの秘密鍵を用いて、鍵登録用レジスタ721上の鍵データを復号化し、鍵ペア・レジスタ724のプログラム鍵格納領域724−1に格納する。また、データ鍵生成部723は、任意の手段、たとえば乱数発生機能でデータ鍵を生成し、これを鍵ペア・レジスタ724のデータ鍵格納領域724−2に格納する。鍵ペア制御部720は、これら二つの鍵がレジスタ724に格納されると、鍵ペア・テーブル710の鍵ペア書き込み操作に基づいて、鍵ペア・テーブル710に新規の鍵ペアを登録する。
【0080】
(2)既存の鍵ペアの読み出し
鍵ペア制御部720は、プロセッサ・コア201から、必要な鍵ペア・タグを提示する。この鍵ペア・タグは鍵ペア・テーブル710へのインデックスとして用いられる。鍵ペア・テーブル710は、その読み出し操作によって、インデックスが指定する鍵ペアを取り出し、その結果を鍵ペア制御部720の鍵ペア・レジスタ724に格納する。鍵ペア暗号処理部725は、鍵ペア・レジスタ724上に格納されている平文状態のプログラム鍵724−1とデータ鍵724−2とを、一つのデータとしてプロセッサの秘密鍵を用いて暗号化し、その結果を暗号化鍵ペア・レジスタ726に格納する。鍵ペア制御部720は、暗号化鍵ペア・レジスタ726上のデータをプロセッサ・コアへの出力とする。
【0081】
(3)既存の鍵ペアの書き込み
鍵ペア制御部720は、プロセッサ・コア201から、鍵ペア・タグ、およびプロセッサの秘密鍵で暗号化された鍵ペアである鍵ペア・データが提示される。鍵ペア・データは暗号化鍵ペア・レジスタ726に格納され、鍵ペア・タグは鍵ペア・テーブル710へのインデックスとして用いられる。 鍵ペア暗号処理部725は、暗号化鍵ペア・レジスタ726上のデータを、プロセッサの秘密鍵を用いて復号化する。結果として得られた平文データは、プログラム鍵およびデータ鍵の2つの鍵として、鍵ペア・レジスタ724に格納される。鍵ペアテーブル710は、その書き込み操作に基づいて、レジスタ724上の鍵ペアを書き戻す。
【0082】
本発明のマイクロプロセッサには、内部にデータを格納するためのメモリが複数存在する。さらに、外部メモリ・インタフェース103を介してアクセスされる外部メモリが存在する。これらのうち、マイクロプロセッサの内部にあって、鍵ペア・タグを格納する領域が付加されているメモリ(たとえばシステムレジスタ210、レジスタファイル230など)を、「内部メモリ」と呼ぶ。内部メモリのうち、さらにこれがキャッシュ・メモリ(たとえば命令キャッシュ301、データキャッシュ401など)である場合には、「内部キャッシュ・メモリ」と呼ぶ。プロセッサの外部にあるメモリ、あるいは、プロセッサの内部にあるが鍵ペア・タグを格納する領域を持たないメモリは、「外部メモリ」と呼ぶ。
【0083】
以下で、これらのメモリの間でのデータ転送の詳細について述べる。メモリ間の転送には、転送元と転送先が、内部であるか外部であるかによって、(i)内部メモリから内部メモリへ、(ii)内部メモリから外部メモリへ、(iii)外部メモリから内部メモリへ、(iv)外部メモリから外部メモリへ、の4通りの場合がある。
【0084】
また、本実施形態では、RISC型のプロセッサを仮定しているので、データ転送を転送の要因別に分けるとすると、次のように場合分けされる。なお、転送の際に転送先が持つべき鍵ペア・タグの指定についても、示す。
【0085】
(1)プロセッサ・コア201の命令フェッチデコーダ220による命令フェッチの結果生じるデータ転送
このときの転送先の鍵ペア・タグは、現在実行中の実効鍵ペアのタグである。
【0086】
(2)プロセッサ・コア201のメモリ・アクセス部260でロード命令あるいはストア命令が実行された結果生じるデータ転送
このときの転送先の鍵ペア・タグは、現在実行中の実効鍵ペアのタグである。ただし、本発明では、MIPSのロード命令、ストア命令に加えて、新たに、転送先が持つべき鍵ペア・タグを命令のオペランドとして指定するタグ指定付きロード命令、ストア命令を追加する。これらの命令の命令フォーマットや、オペランドの指定方法については、任意である。
【0087】
(3)プロセッサ・コア201の算術論理演算部250で命令が実行された結果生じるデータ転送
RISC型のプロセッサにおいては、演算命令は、レジスタのみをデータ転送先とするので、この場合のデータ転送は、レジスタファイル230上のレジスタ間のデータ転送でしかあり得ない。転送先の鍵ペア・タグは、現在の実効鍵ペアのタグである。
【0088】
次に、本実施形態において、秘匿すべきデータを保護するための機構について説明する。データの保護は、算術論理演算部250の演算オペランド・タグ判定部252、メモリ・アクセス部260のデータ転送タグ判定部262、および命令実行制御部223において実現される。いずれにおいても、共通したタグ判定規約に従って、データ転送の成立の可否が決定される。判定の基準に用いるものは、▲1▼データの転送元を特定する識別子、▲2▼転送するデータに付加された鍵ペア・タグ(「データタグ」と呼ぶ)、および▲3▼転送先の持つべき鍵ペア・タグ(「転送先タグ」と呼ぶ)である。
【0089】
データ転送に伴うタグ判定の規約として最低限必要な規約を、以下にリストする。実施の形態によっては、さらに転送を否決する形で限定する規約を加えてもよい。また、データ転送に伴い、必要であれば暗号処理が施される。
【0090】
(1)内部メモリ間のデータ転送であって、転送元が内部キャッシュであるときには、データタグと転送先のタグが一致しているときに限り、転送を許可する。データはそのまま転送され、転送先には、データタグが付加される。
【0091】
(2)内部メモリ間のデータ転送であって、転送元が内部キャッシュではないときは、無条件にデータ転送を許可し、データタグを転送先のタグとする。
【0092】
(3)内部メモリから外部メモリへのデータ転送にあたっては、無条件にデータ転送を許可する。このとき、データは、データタグが指定する鍵ペアの保持する暗号鍵(データ鍵)で暗号化される。すなわち、内部メモリから外部メモリへデータを転送する場合は、まず、データ暗号処理部601でデータタグが指定する鍵ペアの保持するデータ鍵を用いて暗号化される。命令フェッチは、読み出し専用であり、外部に書き出すという操作は存在しない。
【0093】
(4)外部メモリから内部メモリへのデータ転送にあたっては、無条件にデータ転送を許可する。このとき、データは、転送先タグが指定する鍵ペアの保持する暗号鍵で復号化される。すなわち、外部メモリから内部メモリにデータを転送する場合は、それが命令フェッチに由来するデータ転送である時には、命令復号処理部501を経由して、転送先タグが指定する鍵ペアの保持するプログラム鍵を用いて復号化される。命令フェッチ以外では、データ暗号処理部601を経由して、転送先タグが指定する鍵ペアのデータ鍵を用いて復号化される。
【0094】
(5)外部メモリ間のデータ転送には、本実施形態のプロセッサは関与しない。従って、外部メモリ間のデータ転送の挙動については、従来技術と同様である。
【0095】
次に、このような保護機能を用いた処理の例として、オペレーティング・システム(OS)の基本的な処理であるコンテキスト・スイッチについて、図12〜14を参照して説明する。前述の通り、例として用いるのは、MIPS Technologies社のR3000系プロセッサである。
【0096】
前提条件として、ステップS1201に示すように、暗号化されたプログラムprogram-1がユーザ・モードで実行されている。そのプログラムを復号するためのプログラム鍵progkey-1と、この鍵の新規登録時に生成されたデータ鍵datakey-1とが、鍵ペアとして鍵ペア・テーブル710に格納されている。この鍵ペアを特定する鍵ペア・タグをtag-1とする。
【0097】
ここで、外部からの割り込み等を理由として、プロセッサに例外が発生したとする。プロセッサは、ステップS1203に示すように、現在のプログラムカウンタの値を例外復帰用レジスタに退避させる。このとき、実効鍵ペア・タグも例外復帰用レジスタに退避される。ステップS1205に示すように、プロセッサの動作モードはユーザ・モードからカーネル・モードに遷移する。タグの値は実効鍵ペアのタグ値から、カーネル・モード用に予約されたタグ値tag-Kに切り替わる。動作モードとタグ値の切り替えによって、ステップS1207に示すように、OSの一部である例外処理ルーチンが起動される。例外処理ルーチンが終了したら、ステップS1209に示すように、再度ユーザ・モードに切り替わり、コンテキストが復帰する。
【0098】
図13は、例外処理ルーチンS1207の詳細なステップを示す。まず、ステップS1301に示すように、例外発生時に実行していたプログラムのコンテキスト、すなわちレジスタファイル230の内容を、外部のメモリに格納するストア命令を実行する。さらに、ステップS1303で、退避した実効鍵ペアタグ(tag-1)が特定する鍵ペアを、鍵ペア管理部701からレジスタファイル230に読み出す(既存の鍵ペア読み出し操作)。なお、レジスタファイル230に読み出した鍵ペアデータは、OSのデータであるため、tag-Kが付加されている。ステップS1305で、鍵ペアデータをメモリに転送する。この一連の操作において、OSが不当にユーザモードのデータ(これにはtag-1が付加されている)に算術論理演算を行ったとすれば、それは前述した演算の制約条件から不許可となる。一方、ユーザモードでのデータを外部に転送する操作は、データ転送の制約条件で許可されるデータ転送である。この時点でユーザのコンテキストはレジスタファイル230の外に退避されたが、その退避先がデータキャッシュ上(内部メモリ)であるか、外部メモリにまで到達したかは、データキャッシュの状態に依存する。ただし、OSの動作という視点からは、レジスタファイル230からのコンテキストの退避は完了している。そして、ステップS1307で割り込み処理を実行する。
【0099】
図14は、例外処理ルーチンが完了した後の、ユーザのコンテキストの復帰処理(すなわちプログラムの再開)のフローを示す。まず、ステップS1401で、メモリに退避させておりた鍵ペアをOSのデータとしてメモリからロードする。ステップS1403で、この鍵ペアをtag-1に対応する鍵ペアとして鍵ペア・テーブル710に格納する(既存の鍵ペア書き込み操作)。ステップS1405で、メモリに退避してあったコンテキストをレジスタファイル230に復帰させる。このときに行うのは、転送先タグ付ロード命令である。転送先タグとしてはtag-1を指定する。さらに、ステップS1407で、例外復帰用レジスタに、復帰するプログラムカウンタの値と、実効鍵ペア・タグ(tag-1)とを格納する。最後に、ステップS1409で、例外復帰命令(MIPS-IVではERET命令)を用いてユーザ・モードに遷移することで、コンテキスト復帰が完了する。この一連の操作でのデータ転送も、前述したデータ転送の規約条件で許可されるデータ転送である。
【0100】
コンテキストの保存と復帰の際に、tag-1が付加されているデータが保護されていることは、以下のことからも確認される。まず、データ転送の規約条件により、tag-1以外の鍵ペア・タグを実効鍵ペア・タグとして実行しているときには、tag-1のデータは演算の対象となり得ない。一方、tag-1で特定されるプログラム鍵で復号されたプログラムの実行中は、実効鍵ペア・タグの値はtag-1であり、マイクロプロセッサ内部の処理について、OSは知ることができない。実行されていたデータが、割り込み等によって外部メモリへと転送されるときには、tag-1で特定される鍵ペアのデータ鍵で暗号化される。このデータ鍵は、プロセッサの秘密鍵を知ることなしに得ることは不可能である。また、コンテキスト復帰時には、タグ付きロード命令でデータを取り戻したが、このタグはOSの実効鍵ペア・タグとは異なるタグなので、OSからのアクセスは許可されない。逆に、OS自身の実効鍵を、復帰したユーザのコンテキストの鍵ペア・タグであるtag-1にすりかえたとしても、このときは、OSにとって知ることのできないプログラム鍵をもって、自らの命令列を復号することになり、予期できない命令を実行することになる。
【0101】
このように、プログラム鍵とデータ鍵を鍵ペアとして不可分に扱うことにより、特権モードで実行するプログラムからも、秘密データを秘匿することが可能となる。
【0102】
<第2実施形態>
図15は、本発明の第2実施形態にかかるマイクロプロセッサで使用する鍵ペアテーブル810の構成図である。第1実施形態においては、一つのプログラム鍵と一つのデータ鍵とを1対1対応で関連付けて扱う方法について述べたが、第二の実施形態においては、一つのプログラム鍵に複数のデータ鍵を関連付けて扱う方法について述べる。
【0103】
マルチタスク環境下では、同じひとつのプログラムについて、異なる種類のデータ処理がなされる場合もある。そのような場合は、プログラムの復号鍵(プログラム鍵)はひとつであるが、実行処理されたデータを暗号化/復号化するためのデータ鍵は別々である。これら別々のデータ鍵のすべてについてプログラム鍵とのペアを作って格納しようとすると、膨大な記憶容量を要することになる。
【0104】
そこで第2実施形態では、プログラム鍵のインデックスとデータ鍵のインデックスとをペアにして格納し、さらに、プログラム鍵およびデータ鍵をばらばらに格納しておく。
【0105】
図15は、第2実施形態の鍵ペア・テーブル810の構成例を示す。鍵ペア・テーブル810は、鍵自体を保持する鍵テーブル820と、鍵を間接参照する形でインデックスで構成した鍵ペア参照テーブル830とで構成される。
【0106】
鍵テーブル820は、プログラム鍵とデータ鍵とを個別にエントリした配列から構成される。一方、鍵ペア参照テーブル830は、鍵ペアを表わすものではあるが、鍵のペアを直接格納するのではなく、プログラム鍵のインデックス831−1と、データ鍵のインデックス831−2から構成される。これらのインデックスを用いて、ある特定のプログラムと、このプログラムによって実行される複数種類のデータとを特定することが可能になる。たとえば、図14の例では、インデックスを用いて、プログラム鍵#3で復号化された同じプログラムについて、データ鍵#4で暗号化/復号化されるデータと、データ鍵#5で暗号化/復号化されるデータとを、それぞれ組み合わせることができる。
【0107】
鍵テーブル820の動作は、次の読み出し操作と、書き込み操作である。
【0108】
(1)鍵の読み出し
パラメータとして与えられるインデックスにより特定される鍵エントリの共通鍵が、鍵テーブル820から取り出される。
【0109】
(2)鍵の書き込み
まず、使用されていない鍵エントリを一つ割り当てる。その鍵エントリに、パラメータとして与えられる共通鍵(プログラム鍵またはデータ鍵)を格納する。割り当てた鍵エントリを特定するインデックスを出力する。
【0110】
鍵ペア・テーブル810の動作は、第1実施形態で述べた鍵テーブル710の動作と基本的に同じである。ただし、鍵ペア・テーブル810は、鍵テーブル820と鍵ペア参照テーブル830とに分割されていることから、鍵の読み出し、書き込みの詳細については、次のようになる。
【0111】
(1)プログラム鍵の読み出し
命令復号処理部インタフェース703と接続されるポートを介する読み出し操作である。参照テーブル830のインデックスペアで特定される鍵のうち、プログラム鍵のインデックスを用いて鍵テーブル820の鍵読み出し操作を行ない、その結果を出力する。
【0112】
(2)データ鍵読み出し
データ暗号処理部インタフェース704と接続されるポートを介する読み出し操作である。参照テーブル830のインデックスペアで特定される鍵のうち、データ鍵のインデックを用いて鍵テーブル820の鍵読み出し操作を行ない、その結果を出力する。
【0113】
(3)鍵ペアの読み出し
鍵ペア制御部720と接続されるポートを介する読み出し操作である。参照テーブル830のインデックスペアにより特定されるペアのプログラム鍵とデータ鍵の双方のインデックスを用いて、それぞれの鍵を鍵テーブル820から読み出し、得られた2つの鍵を出力する。
【0114】
(4)鍵ペアの書き込み
鍵ペア制御部720と接続されるポートを介する書き込み操作である。パラメータとして与えられるプログラム鍵とデータ鍵とを、それぞれ鍵テーブル820の書き込み操作で鍵テーブル820に格納する。結果として得られる鍵エントリのインデックスを、参照テーブル830のプログラム鍵インデックスとデータ鍵インデックスに格納する。
【0115】
鍵ペア・テーブル810は、鍵ペア制御部720から見て同じ動作を提供するインタフェースを備えている。したがって、鍵ペア制御部720の動作であるところの、新規鍵ペアの登録、既存の鍵ペアの読み出し、既存の鍵ペアの書き込み、の3つの操作は、第1実施形態で述べたものと同一である。
【0116】
ただし、第2実施形態では、一つのプロセスが複数のデータ鍵を用いる手段を提供するために、鍵ペア・テーブル810と鍵ペア制御部720に、第1実施形態での操作の他に、次の操作を追加する。
【0117】
まず、鍵ペア・テーブル810に追加する操作は、以下の通りである。
【0118】
*データ鍵の書き込み
鍵ペア制御部720と接続されるポートを介する書き込み操作であって、パラメータとして、プログラム鍵インデックスと、データ鍵と、鍵ペア・タグを受け取る。まず、データ鍵を、鍵テーブル820の書き込み操作で、鍵テーブル820に格納する。結果として得られる鍵エントリのインデックスと、パラメータとして受け取ったプログラム鍵インデックスとを、鍵ペア・タグがインデックスとして指定する鍵ペアのプログラム鍵インデックス831−1とデータ鍵インデックス831−2のそれぞれに格納する。
【0119】
次に、鍵ペア制御部720に以下の操作を追加する。
【0120】
*新しいデータ鍵の登録
プロセッサ・コア201からは、データ鍵を所有するプロセスを特定する第1の鍵ペア・タグと、新たに登録するデータ鍵を特定するための第2の鍵ペア・タグと、登録するデータ鍵を第1の鍵ペア・タグのプログラム鍵で暗号化した鍵データとが提示される。鍵データは、鍵ペアデータではないが、暗号化鍵ペア・レジスタ726に格納される。
【0121】
まず、第1の鍵ペア・タグをインデックスとして、鍵テーブル820の鍵ペアの読み出し操作を行い、鍵ペアを鍵ペア・レジスタ724に読み出す。
【0122】
鍵ペア暗号処理部725は、暗号化鍵ペア・レジスタ上のデータを、暗号化された鍵とみなして、鍵ペア・レジスタ724のプログラム鍵724−1を用いて復号化し、その結果を鍵ペア・レジスタ724のデータ鍵724−2に格納する。
【0123】
鍵ペア制御部720は、第1の鍵ペア・タグを利用して読み出したプログラム鍵のインデックスと、鍵ペア・レジスタ724のデータ鍵724−2とを、鍵ペアテーブル810のデータ鍵書き込み操作を用いて、鍵ペアとして登録する。
【0124】
この操作により、登録したデータ鍵のインデックスと、そのデータ鍵とともに用いられるプログラム鍵のインデックスとを一組にした新しい鍵インデックスのペアが作成される。
【0125】
言い換えれば、複数の鍵ペアを、プログラム鍵が共通であることによりグループ化する操作である。しかも、グループに追加する操作においては、プログラム鍵による暗号処理を必要とするため、プログラム鍵を知るプロセスにのみ可能なものである。
【0126】
上述のデータ鍵登録操作は、プログラム鍵で暗号化したデータとして与えるものであるが、プログラム鍵ではない別の鍵、たとえばプロセッサの公開鍵あるいは別のデータ鍵で暗号化したデータとして与えるという変形も可能である。このときは、プログラム鍵に基づいたグループ化ではなく、別の鍵をもとにしたグループ化となり、プログラム間で鍵を共有する状況に適用できる。
【0127】
第1実施形態において、データ転送および演算操作に対して、鍵ペア・タグの値が一致することを、その操作が成功するための条件する制約機構について述べた。第2実施形態においては、異なる鍵ペア・タグであっても、同一のプロセスが生成した鍵ペアであれば、データ転送や演算操作を許可するものとする。すなわち、データ転送や演算操作の成立条件判定に、第1実施形態での鍵ペア・タグの値そのものに加え、その鍵ペア・タグが指定する鍵ペアの、プログラム鍵インデックスとデータ鍵インデックスを条件判定に用いる。
【0128】
第1実施形態で例示した、オペレーティング・システムによるコンテキスト・スイッチの実施例は、第2実施形態においても同様に動作する。
【0129】
第1および第2実施形態を、ともに機能を実現する要素をブロック図を用いて説明したが、これらは機能の論理的な分割方法を示したものであり、機能ブロックのプロセッサ上での物理的な配置を示すものではない。例えば、実施形態の説明で鍵ペアは一つのテーブルに一組にして保持するものとしたが、プロセッサ上の物理的な配置としては、プログラム鍵を集めたテーブルは命令復号処理部の近くに、データ鍵を集めたテーブルはデータ暗号処理部の近くに配置する、といった物理的な構成方法を除外するものではない。
【0130】
【発明の効果】
以上説明したように、本発明によれば、プログラムを復号化するためのプログラム鍵と、データを暗号化するためのデータ鍵とが、暗号学的に不可分のものとしてプロセッサ内部で扱われるため、プログラムを実行する主体であるプロセスを、オペレーティング・システムを介することなく、プロセッサが保護することが可能となる。したがって、他のユーザ・プログラムのみならず、オペレーティング・システムからも、プログラムの持つ秘密情報を守ることができる。
【0131】
また、本発明によれば、プロセッサによる保護の対象であるプロセスを識別するためのタグをプロセッサ内部のデータに付加することにより、保護の対象となるデータを、復号化した状態で内部メモリに保持したまま、プロセスの切替えを行なうことができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係るマイクロプロセッサの全体構成例を示す図である。
【図2】本発明の基本的な処理フローのうち、データを暗号化して退避させる流れを示す図である。
【図3】本発明の基本的な処理フローのうち、退避させたデータを復帰させる流れを示す図である。
【図4】図1に示すプロセッサ・コアの構成図である。
【図5】図4に示す算術論理演算部の詳細図である。
【図6】図4に示すシステムレジスタの詳細図である。
【図7】図1に示す命令キャッシュの図である。
【図8】図1に示すデータキャッシュの図である。
【図9】図1に示す命令暗号処理部の図である。
【図10】図1に示すデータ暗号/復号処理部の図である。
【図11】図1に示す鍵ペア管理部の図である。
【図12】本発明のマイクロプロセッサにおける割り込み発生時の処理フローを示す図である。
【図13】図12の例外処理ルーチンの詳細を示す図である。
【図14】図12のコンテキスト復帰ステップの詳細を示す図である。
【図15】本発明の第2実施形態にかかる鍵ペア・テーブルの図である。
【符号の説明】
101 マイクロプロセッサ
102 プロセッサ・バス
103 外部バス・インタフェース
201 プロセッサ・コア
210 システム・レジスタ群(第3の記憶領域)
230 レジスタ・ファイル(第2の記憶領域)
250 算術論理演算部
252 演算オペランド・タグ判定部
260 メモリ・アクセス部
262 データ転送タグ判定部
270 鍵ペア管理部インタフェース
301 命令キャッシュ
401 データ・キャッシュ
501 命令復号処理部
601 データ暗号/復号処理部
701 鍵ペア管理部
710、810 鍵ペア・テーブル(第1の記憶領域)
720 鍵ペア制御部
725 鍵ペア暗号化部
726 暗号化鍵ペア・レジスタ
820 鍵テーブル
830 鍵ペア参照テーブル
Claims (14)
- 暗号化されたプログラムを第1の暗号鍵を用いて復号化する命令復号処理部と、
前記復号化されたプログラムの実行対象であるデータを、第2の暗号鍵を用いて暗号化/復号化するデータ暗号/複号処理部と、
前記命令復号処理部およびデータ暗号/復号処理部に接続され、前記第1および第2の鍵を鍵ペアとして関連付けて格納する第1の記憶領域を有する鍵ペア管理部と、
前記鍵ペアを特定する識別子を、前記プログラムによって実行処理されるデータとともに格納する第2の記憶領域と
を備えるマイクロプロセッサ。 - 前記プログラムを復号するための第1の暗号鍵は、公開鍵暗号系で与えられ、
前記鍵ペア管理部は、前記第1の暗号鍵が与えられた場合に、当該第1の暗号鍵で復号されたプログラムによって実行されるデータを暗号化/複号化するための第2の暗号鍵を生成する鍵生成部をさらに備えることを特徴とする請求項1に記載のマイクロプロセッサ。 - 前記マイクロプロセッサは、現在実行中のプログラムに用いられている有効な鍵ペアの識別子を格納する第3の記憶領域をさらに有し、
前記第3記憶領域の有効な鍵ペアの識別子の値が、特定の値を取る場合に、前記データ暗号/復号処理部は、前記第2の記憶領域に格納されていたデータを、そのデータに付随する識別子が指定する暗号鍵を用いて外部メモリに転送することを特徴とする請求項1に記載のマイクロプロセッサ。 - 前記第1の記憶領域は、前記第1の鍵と第2の鍵を1対1対応で関連付けて格納することを特徴とする請求項1に記載のマイクロプロセッサ。
- 前記第1の記憶領域は、前記第1の鍵のインデックスと、前記第2の鍵のインデックスとをペアにして格納する参照格納領域と、前記第1および第2の鍵を個別に格納する鍵格納領域とを含むことを特徴とする請求項1に記載のマイクロプロセッサ。
- 前記マイクロプロセッサは、前記第2の記憶領域および第3の記憶領域に接続されるメモリアクセス部をさらに有し、
前記メモリアクセス部は、転送すべきデータに添付された鍵ペアの識別子と、前記第3記憶領域に格納されている現在有効な鍵ペアの識別子とに基づいてデータ転送の可否を判断するデータ転送判定部を有することを特徴とする請求項3に記載のマイクロプロセッサ。 - 前記マイクロプロセッサは、前記第2の記憶領域および第3の記憶領域に接続される論理演算部をさらに有し、
前記論理演算部は、演算のオペランドに添付された識別子と、前記第3の記憶領域に格納されている有効な鍵ペアの識別子とに基づいて演算実行の可否を判断する演算実行判定部を有することを特徴とする請求項3に記載のマイクロプロセッサ。 - 前記第2の記憶領域は、複数のエントリから成り、各エントリが、プログラムによって実行処理されるデータと、そのデータに用いられる鍵ペアを特定する識別子とを有し、
前記第3記憶領域の有効な鍵ペアの識別子の値が特定の値をとる場合に、前記データ暗号/復号化処理部は、所望のエントリのデータおよび対応する識別子を暗号化して外部メモリに格納することを特徴とする請求項3に記載のマイクロプロセッサ。 - 前記第3記憶領域の有効な鍵ペアの識別子は、例外発生時に前記特定の値をとることを特徴とする請求項3に記載のマイクロプロセッサ。
- 前記鍵ペア管理部は、前記第1および第2の鍵のペアをプロセッサの秘密鍵で暗号化して格納する暗号化鍵ペア格納領域をさらに有することを特徴とする請求項2に記載のマイクロプロセッサ。
- マイクロプロセッサが、
暗号化されたプログラムを第1の鍵で復号するステップと、
前記第1の鍵に対応して、前記復号したプログラムによって実行されるデータを暗号化/復号化するための第2の鍵を生成するステップと、
前記第1の鍵と第2の鍵とを関連付けた鍵ペアとして記憶領域に格納するステップと、
前記鍵ペアに、該鍵ペアを特定する識別子を与えるステップと、
前記プログラムの実行中に例外が発生した場合に、前記識別子に基づいて前記第1の記憶領域から前記第2の鍵を読み出し、前記データを第2の鍵で暗号化して外部メモリに退避させるステップと
を含むデータ保護方法。 - 前記マイクロプロセッサが、前記例外の終了後に、前記暗号化して退避させたデータを外部メモリから読み出して、前記識別子に基づき、前記第2の鍵で復号するステップをさらに含む請求項11に記載のデータ保護方法。
- 前記マイクロプロセッサは、前記第1の鍵と第2の鍵とを1対1対応で直接組み合わせて鍵ペアとして格納することを特徴とする請求項11に記載のデータ保護方法。
- 前記マイクロプロセッサが、前記第1の鍵のインデックスおよび第2の鍵のインデックスを生成し、第1の鍵のインデックスと第2の鍵のインデックスとをペアにして記憶領域に格納するステップを含むことを特徴とする請求項11に記載のデータ保護方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000333635A JP4153653B2 (ja) | 2000-10-31 | 2000-10-31 | マイクロプロセッサおよびデータ保護方法 |
DE60124845T DE60124845T2 (de) | 2000-10-31 | 2001-10-30 | Mikroprozessor mit Programm- und Datenschutzfunktion in einer Multitasking Umgebung |
EP01309182A EP1202150B1 (en) | 2000-10-31 | 2001-10-30 | Microprocessor with program and data protection function under multi-task environment |
US09/984,407 US7065215B2 (en) | 2000-10-31 | 2001-10-30 | Microprocessor with program and data protection function under multi-task environment |
US11/335,601 US7673152B2 (en) | 2000-10-31 | 2006-01-20 | Microprocessor with program and data protection function under multi-task environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000333635A JP4153653B2 (ja) | 2000-10-31 | 2000-10-31 | マイクロプロセッサおよびデータ保護方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002140236A JP2002140236A (ja) | 2002-05-17 |
JP4153653B2 true JP4153653B2 (ja) | 2008-09-24 |
Family
ID=18809679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000333635A Expired - Fee Related JP4153653B2 (ja) | 2000-10-31 | 2000-10-31 | マイクロプロセッサおよびデータ保護方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7065215B2 (ja) |
EP (1) | EP1202150B1 (ja) |
JP (1) | JP4153653B2 (ja) |
DE (1) | DE60124845T2 (ja) |
Families Citing this family (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549056B2 (en) | 1999-03-19 | 2009-06-16 | Broadcom Corporation | System and method for processing and protecting content |
US7797550B2 (en) | 2002-09-25 | 2010-09-14 | Broadcom Corporation | System and method for securely buffering content |
US6983374B2 (en) | 2000-02-14 | 2006-01-03 | Kabushiki Kaisha Toshiba | Tamper resistant microprocessor |
GB0015276D0 (en) * | 2000-06-23 | 2000-08-16 | Smith Neale B | Coherence free cache |
US7603703B2 (en) | 2001-04-12 | 2009-10-13 | International Business Machines Corporation | Method and system for controlled distribution of application code and content data within a computer network |
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
EP1471405A4 (en) * | 2001-11-12 | 2010-01-13 | Gerite Associates Ltd | METHOD AND SYSTEM FOR PROTECTING INFORMATION AGAINST UNAUTHORIZED USE |
US7107459B2 (en) * | 2002-01-16 | 2006-09-12 | Sun Microsystems, Inc. | Secure CPU and memory management unit with cryptographic extensions |
US7065651B2 (en) * | 2002-01-16 | 2006-06-20 | Microsoft Corporation | Secure video card methods and systems |
US7350069B2 (en) * | 2002-04-18 | 2008-03-25 | Herz Frederick S M | System and method which employs a multi user secure scheme utilizing shared keys |
US7515173B2 (en) * | 2002-05-23 | 2009-04-07 | Microsoft Corporation | Head pose tracking system |
JP2004023351A (ja) * | 2002-06-14 | 2004-01-22 | Oki Electric Ind Co Ltd | マイクロコンピュータのプログラム保護方法 |
US8155314B2 (en) | 2002-06-24 | 2012-04-10 | Microsoft Corporation | Systems and methods for securing video card output |
JP2004054834A (ja) | 2002-07-24 | 2004-02-19 | Matsushita Electric Ind Co Ltd | プログラム開発方法、プログラム開発支援装置およびプログラム実装方法 |
US20040023646A1 (en) * | 2002-07-31 | 2004-02-05 | Satoshi Inami | Information processing terminal and information processing method |
JP3881942B2 (ja) * | 2002-09-04 | 2007-02-14 | 松下電器産業株式会社 | 暗号化部を有する半導体装置 |
JP2004133087A (ja) * | 2002-10-09 | 2004-04-30 | Sony Corp | ブロック暗号方法およびブロック暗号回路 |
JP4099039B2 (ja) * | 2002-11-15 | 2008-06-11 | 松下電器産業株式会社 | プログラム更新方法 |
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 | 株式会社エヌ・ティ・ティ・ドコモ | マルチタスク実行システム及びマルチタスク実行方法 |
US7529367B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode cryptographic functions |
US7900055B2 (en) | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US7529368B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback mode cryptographic functions |
US7321910B2 (en) | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7542566B2 (en) | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
US7925891B2 (en) | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7536560B2 (en) | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
US8060755B2 (en) | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
US7502943B2 (en) | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7519833B2 (en) | 2003-04-18 | 2009-04-14 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
US7539876B2 (en) | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7392400B2 (en) | 2003-04-18 | 2008-06-24 | Via Technologies, Inc. | Microprocessor apparatus and method for optimizing block cipher cryptographic functions |
US7532722B2 (en) | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
US7844053B2 (en) | 2003-04-18 | 2010-11-30 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
JP2007526590A (ja) * | 2003-06-23 | 2007-09-13 | ケストレル ワイヤレス,インク. | 光メディア作動方法並びに装置 |
WO2005020043A2 (en) * | 2003-08-26 | 2005-03-03 | Matsushita Electric Industrial Co., Ltd. | Program execution device |
JP4263976B2 (ja) * | 2003-09-24 | 2009-05-13 | 株式会社東芝 | オンチップマルチコア型耐タンパプロセッサ |
JP4282472B2 (ja) * | 2003-12-26 | 2009-06-24 | 株式会社東芝 | マイクロプロセッサ |
JP4696449B2 (ja) * | 2004-01-09 | 2011-06-08 | ソニー株式会社 | 暗号化装置およびその方法 |
JP4294514B2 (ja) * | 2004-03-05 | 2009-07-15 | シャープ株式会社 | 半導体装置および電子装置 |
US20050210274A1 (en) * | 2004-03-22 | 2005-09-22 | Frantz Gene A | Apparatus and method for intellectual property protection using the microprocessor serial number |
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 | 株式会社東芝 | マイクロプロセッサ |
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 |
US7657756B2 (en) * | 2004-10-08 | 2010-02-02 | International Business Machines Corporaiton | Secure memory caching structures for data, integrity and version values |
US20060095385A1 (en) * | 2004-10-26 | 2006-05-04 | Paul Atkinson | Method and network for selectively controlling the utility a target |
KR20070111453A (ko) * | 2004-12-07 | 2007-11-21 | 케스트럴 와이어리스 인코포레이티드 | 타깃의 유틸리티를 선택적으로 제어하는 장치 및 그 방법 |
US20070194945A1 (en) * | 2004-12-07 | 2007-08-23 | Paul Atkinson | Mobile Device for Selectively Activating a Target and Method of Using Same |
US20060126827A1 (en) * | 2004-12-14 | 2006-06-15 | Dan P. Milleville | Encryption methods and apparatus |
US20070180539A1 (en) * | 2004-12-21 | 2007-08-02 | Michael Holtzman | Memory system with in stream data encryption / decryption |
US8045714B2 (en) * | 2005-02-07 | 2011-10-25 | Microsoft Corporation | Systems and methods for managing multiple keys for file encryption and decryption |
US7254768B2 (en) * | 2005-02-18 | 2007-08-07 | Broadcom Corporation | Memory command unit throttle and error recovery |
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 |
US20110181981A1 (en) * | 2005-05-09 | 2011-07-28 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Method and system for rotational control of data storage devices |
US7916615B2 (en) * | 2005-06-09 | 2011-03-29 | The Invention Science Fund I, Llc | Method and system for rotational control of data storage devices |
US7596073B2 (en) * | 2005-05-09 | 2009-09-29 | Searete Llc | Method and system for fluid mediated disk activation and deactivation |
US9396752B2 (en) * | 2005-08-05 | 2016-07-19 | Searete Llc | Memory device activation and deactivation |
US7916592B2 (en) | 2005-05-09 | 2011-03-29 | The Invention Science Fund I, Llc | Fluid mediated disk activation and deactivation mechanisms |
US8140745B2 (en) * | 2005-09-09 | 2012-03-20 | The Invention Science Fund I, Llc | Data retrieval methods |
US8218262B2 (en) * | 2005-05-09 | 2012-07-10 | The Invention Science Fund I, Llc | Method of manufacturing a limited use data storing device including structured data and primary and secondary read-support information |
US8121016B2 (en) * | 2005-05-09 | 2012-02-21 | The Invention Science Fund I, Llc | Rotation responsive disk activation and deactivation mechanisms |
US8220014B2 (en) * | 2005-05-09 | 2012-07-10 | The Invention Science Fund I, Llc | Modifiable memory devices having limited expected lifetime |
US7565596B2 (en) * | 2005-09-09 | 2009-07-21 | Searete Llc | Data recovery systems |
US8159925B2 (en) * | 2005-08-05 | 2012-04-17 | The Invention Science Fund I, Llc | Limited use memory device with associated information |
US8099608B2 (en) * | 2005-05-09 | 2012-01-17 | The Invention Science Fund I, Llc | Limited use data storing device |
US8462605B2 (en) * | 2005-05-09 | 2013-06-11 | The Invention Science Fund I, Llc | Method of manufacturing a limited use data storing device |
US20070007358A1 (en) * | 2005-07-06 | 2007-01-11 | White Charles A | Device and System for Authenticating and Securing Transactions Using RF Communication |
WO2007008916A2 (en) * | 2005-07-11 | 2007-01-18 | Kestrel Wireless Inc. | A radio frequency activated integrated circuit and method of disabling the same |
CN100424611C (zh) * | 2005-07-28 | 2008-10-08 | 国际商业机器公司 | 用于处理加密软件的方法和中央处理单元 |
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 |
US20070223692A1 (en) * | 2005-10-18 | 2007-09-27 | Paul Atkinson | Activation confirmation feedback circuits and methods |
US20080028420A1 (en) * | 2006-01-20 | 2008-01-31 | Paul Atkinson | Optical Media with Reduced Areal-Sized Optical shutters |
US7594101B2 (en) * | 2006-02-06 | 2009-09-22 | Stmicroelectronics S.A. | Secure digital processing unit and method for protecting programs |
JP4795812B2 (ja) | 2006-02-22 | 2011-10-19 | 富士通セミコンダクター株式会社 | セキュアプロセッサ |
WO2008054456A2 (en) * | 2006-02-22 | 2008-05-08 | Luna Innovations Inc. | Hardware-facilitated secure software execution environment |
US8264928B2 (en) * | 2006-06-19 | 2012-09-11 | The Invention Science Fund I, Llc | Method and system for fluid mediated disk activation and deactivation |
US7870336B2 (en) | 2006-11-03 | 2011-01-11 | Microsoft Corporation | Operating system protection against side-channel attacks on secrecy |
JP4976991B2 (ja) * | 2007-11-22 | 2012-07-18 | 株式会社東芝 | 情報処理装置、プログラム検証方法及びプログラム |
US20090268902A1 (en) * | 2008-04-25 | 2009-10-29 | Koolspan, Inc. | System for and method of cryptographic provisioning |
US8842836B2 (en) * | 2007-11-26 | 2014-09-23 | Koolspan, Inc. | System for and method of cryptographic provisioning |
US8515080B2 (en) * | 2007-12-19 | 2013-08-20 | International Business Machines Corporation | Method, system, and computer program product for encryption key management in a secure processor vault |
US8085148B2 (en) * | 2008-11-11 | 2011-12-27 | Monster Medic, Inc. | Mobile monitoring and alert system |
JP5322620B2 (ja) | 2008-12-18 | 2013-10-23 | 株式会社東芝 | 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム |
US20120011144A1 (en) * | 2010-07-12 | 2012-01-12 | Frederik Transier | Aggregation in parallel computation environments with shared memory |
US8468365B2 (en) * | 2010-09-24 | 2013-06-18 | Intel Corporation | Tweakable encryption mode for memory encryption with protection against replay attacks |
US10127281B2 (en) | 2010-12-23 | 2018-11-13 | Sap Se | Dynamic hash table size estimation during database aggregation processing |
US8516271B2 (en) * | 2011-03-11 | 2013-08-20 | Hewlett-Packard Development Company, L. P. | Securing non-volatile memory regions |
JP5775738B2 (ja) * | 2011-04-28 | 2015-09-09 | 富士通株式会社 | 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム |
JP5700481B2 (ja) * | 2011-06-29 | 2015-04-15 | インテル・コーポレーション | 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置 |
EP2653992A1 (en) * | 2012-04-17 | 2013-10-23 | Itron, Inc. | Microcontroller configured for external memory decryption |
GB2515047B (en) * | 2013-06-12 | 2021-02-10 | Advanced Risc Mach Ltd | Security protection of software libraries in a data processing apparatus |
US9442864B2 (en) * | 2013-12-27 | 2016-09-13 | Intel Corporation | Bridging circuitry between a memory controller and request agents in a system having multiple system memory protection schemes |
CN106714075B (zh) * | 2015-08-10 | 2020-06-26 | 华为技术有限公司 | 一种处理授权的方法和设备 |
GB201607476D0 (en) * | 2016-04-29 | 2016-06-15 | Eitc Holdings Ltd | Operating system for blockchain IOT devices |
US10721067B2 (en) * | 2016-08-10 | 2020-07-21 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Secure processor for multi-tenant cloud workloads |
US10198349B2 (en) * | 2016-09-19 | 2019-02-05 | Advanced Micro Devices, Inc. | Programming in-memory accelerators to improve the efficiency of datacenter operations |
US10417433B2 (en) | 2017-01-24 | 2019-09-17 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Encryption and decryption of data owned by a guest operating system |
US10896267B2 (en) * | 2017-01-31 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Input/output data encryption |
EP3731453B1 (en) * | 2018-02-06 | 2023-08-02 | Sony Group Corporation | Information processing device, information processing method, program, and information processing system |
EP4088214A4 (en) * | 2020-02-21 | 2023-08-30 | Hewlett-Packard Development Company, L.P. | COMPUTING DEVICES FOR ENCRYPTION AND DECRYPTION OF DATA |
US20220414270A1 (en) * | 2021-06-24 | 2022-12-29 | International Business Machines Corporation | Encrypted data processing design including cleartext register files |
US11868275B2 (en) | 2021-06-24 | 2024-01-09 | International Business Machines Corporation | Encrypted data processing design including local buffers |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4278837A (en) * | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
US4465901A (en) * | 1979-06-04 | 1984-08-14 | Best Robert M | Crypto microprocessor that executes enciphered programs |
GB2122777A (en) * | 1982-06-16 | 1984-01-18 | Open Computer Services Limited | Software protection apparatus and method |
US4847902A (en) | 1984-02-10 | 1989-07-11 | Prime Computer, Inc. | Digital computer system for executing encrypted programs |
US5224166A (en) | 1992-08-11 | 1993-06-29 | International Business Machines Corporation | System for seamless processing of encrypted and non-encrypted data and instructions |
JP3627384B2 (ja) * | 1996-01-17 | 2005-03-09 | 富士ゼロックス株式会社 | ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法 |
JPH09259044A (ja) * | 1996-03-21 | 1997-10-03 | Fuji Xerox Co Ltd | 機密保護機能付き情報処理装置および機密保護方法 |
US5825878A (en) | 1996-09-20 | 1998-10-20 | Vlsi Technology, Inc. | Secure memory management unit for microprocessor |
US6003117A (en) * | 1997-10-08 | 1999-12-14 | Vlsi Technology, Inc. | Secure memory management unit which utilizes a system processor to perform page swapping |
JPH11282756A (ja) | 1998-03-31 | 1999-10-15 | Nakamichi Corp | 秘密デ−タ管理方法 |
US6311270B1 (en) * | 1998-09-14 | 2001-10-30 | International Business Machines Corporation | Method and apparatus for securing communication utilizing a security processor |
JP2002529815A (ja) * | 1998-11-05 | 2002-09-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 複数の暗号化アルゴリズムを用いるセキュアメモリ管理ユニット |
JP4161466B2 (ja) * | 1999-04-22 | 2008-10-08 | 日本ビクター株式会社 | コンテンツ情報記録方法及びコンテンツ情報処理装置 |
JP4226760B2 (ja) * | 2000-05-08 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 |
-
2000
- 2000-10-31 JP JP2000333635A patent/JP4153653B2/ja not_active Expired - Fee Related
-
2001
- 2001-10-30 US US09/984,407 patent/US7065215B2/en not_active Expired - Fee Related
- 2001-10-30 DE DE60124845T patent/DE60124845T2/de not_active Expired - Lifetime
- 2001-10-30 EP EP01309182A patent/EP1202150B1/en not_active Expired - Lifetime
-
2006
- 2006-01-20 US US11/335,601 patent/US7673152B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20060126849A1 (en) | 2006-06-15 |
JP2002140236A (ja) | 2002-05-17 |
EP1202150B1 (en) | 2006-11-29 |
DE60124845T2 (de) | 2007-04-19 |
US20020051536A1 (en) | 2002-05-02 |
US7673152B2 (en) | 2010-03-02 |
DE60124845D1 (de) | 2007-01-11 |
US7065215B2 (en) | 2006-06-20 |
EP1202150A3 (en) | 2003-07-30 |
EP1202150A2 (en) | 2002-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4153653B2 (ja) | マイクロプロセッサおよびデータ保護方法 | |
JP4098478B2 (ja) | マイクロプロセッサ | |
JP4226760B2 (ja) | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 | |
Lie et al. | Implementing an untrusted operating system on trusted hardware | |
KR101457355B1 (ko) | 보안 애플리케이션 실행을 제공하는 방법 및 장치 | |
US10152602B2 (en) | Protecting state information for virtual machines | |
KR100375158B1 (ko) | 변조방지 마이크로프로세서 | |
JP4226816B2 (ja) | マイクロプロセッサ | |
US7694151B1 (en) | Architecture, system, and method for operating on encrypted and/or hidden information | |
US11841956B2 (en) | Systems and methods for data lifecycle protection | |
US20110167278A1 (en) | Secure processor and a program for a secure processor | |
Gilmont et al. | Enhancing security in the memory management unit | |
JP3801833B2 (ja) | マイクロプロセッサ | |
CN109359487A (zh) | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 | |
JP2003051819A (ja) | マイクロプロセッサ | |
JP2016523421A (ja) | ハイパーバイザに制御されるシステムにおいてゲスト・イベントを処理するための方法、データ処理プログラム、コンピュータ・プログラム製品、およびデータ処理システム | |
JP2006507548A (ja) | 認証コード方法及び装置 | |
CN110069935A (zh) | 基于标记内存的内部敏感数据保护方法及系统 | |
JP4643702B2 (ja) | マイクロプロセッサ | |
Steinegger et al. | Servas! secure enclaves via risc-v authenticryption shield | |
EP4055488A1 (en) | Confidential computing mechanism | |
JP4375980B2 (ja) | マルチタスク実行システム及びマルチタスク実行方法 | |
EP3314502B1 (en) | Protecting state information for virtual machines | |
EP3819774B1 (en) | Confidential computing mechanism | |
Platte et al. | A combined hardware and software architecture for secure computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050307 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080401 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080530 |
|
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: 20080624 |
|
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: 20080704 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120711 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130711 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |