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

マイクロプロセッサ Download PDF

Info

Publication number
JP4309726B2
JP4309726B2 JP2003309359A JP2003309359A JP4309726B2 JP 4309726 B2 JP4309726 B2 JP 4309726B2 JP 2003309359 A JP2003309359 A JP 2003309359A JP 2003309359 A JP2003309359 A JP 2003309359A JP 4309726 B2 JP4309726 B2 JP 4309726B2
Authority
JP
Japan
Prior art keywords
key
encryption
decryption
data
work
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
JP2003309359A
Other languages
English (en)
Other versions
JP2005078459A (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 JP2003309359A priority Critical patent/JP4309726B2/ja
Publication of JP2005078459A publication Critical patent/JP2005078459A/ja
Application granted granted Critical
Publication of JP4309726B2 publication Critical patent/JP4309726B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、マルチタスクのプログラム実行環境下で、プログラム対応に複数の暗号/復号鍵を使用できる暗号処理機能を持つことによって、プログラム自身の実行コードや処理対象のデータの秘密を守り、不正な改変を防止することのできる耐タンパマイクロプロセッサに関する。
耐タンパプロセッサは、マルチタスクのコンピュータシステムにおいて、マルチベンダのプログラムに対して、プログラムの秘密の安全性を確保するメカニズムを備えたプロセッサである(例えば、特許文献1参照)。
耐タンパプロセッサの基本構成を図8に示す。耐タンパプロセッサでは、マルチタスクOSの管理下で、プロセッサハードウェアによりマルチベンダのプログラムの秘密を保護する。OSが信頼できないことを前提として、耐タンパプロセッサはプロセッサパッケージ単体のハードウェア機能で完結するプログラムの秘密保護機能を提供する。プログラムは、実行時には、プロセスとしてOSに管理される。耐タンパプロセッサハードウェアにおけるプログラム実行は、通常のOSの場合と同様、プロセスを単位として行われる。大きな違いは、従来のOSが管理していたプロセス情報の一部をプロセッサハードウェアが直接管理すること、及び、プログラム自身の暗号/復号処理が内部のハードウェアによって処理されることである。正しいプロセス実行においては、OSとプロセッサによるプロセス情報の管理は一致して行われるはずであるが、悪意のあるOS、あるいは、バグのあるOSを前提とした場合、OSとプロセッサが管理するプロセス情報の間に食い違いが生じることを前提としなければならない。以下の説明では、OSによるプロセス情報の管理と、プロセッサによる管理を明確に区別するため、耐タンパプロセッサハードウェアが管理するプロセスを実行制御ユニット(ECU)と呼ぶ。耐タンパプロセッサは、マルチタスク環境をサポートするため、複数のECUを擬似並行的に実行できる。プロセッサ上で、ECUはECUIDにより一意に識別される。
図8において、111はプロセッサコアを、112は実行中のECUIDを保持するECUIDレジスタをそれぞれ表す。121はキャッシュコントローラであり、内部に命令キャッシュ(I Cache)122とデータキャッシュ(D Cache)124をそれぞれ持つ。命令キャッシュ122、データキャッシュ124にはそれぞれメモリ123,125があり、各メモリは、キャッシュライン123−1〜n、125−1〜nで構成されている。各キャッシュラインはタグフィールドとデータフィールドからなる。231はバスインタフェースユニット(BIU)であり、プロセッサ外部との入出力を行う。BIU231には鍵テーブル232、セレクタ233、暗号/復号コントローラ234が備えられている。鍵テーブル232は、232−0〜232−mのm+1個のエントリを持つ。各エントリは、ECUに対応して設けられており、それぞれエントリにプログラム共通鍵Kxとデータ共通鍵Kdの2つのフィールドがある。暗号/復号コントローラ234は、内部に暗号モジュール235、復号モジュール236を持つ。102は外部メモリ、141はECU状態管理機能部、151は2次キャッシュ、161は公開鍵復号機能部をそれぞれ表す。
以下、プログラムPがプロセスpとして実行し、プロセスpにはECUID#1を割り当てて実行する例を図に従って説明する。
(暗号化プロセスの実行)
プログラムPは、外部メモリ102上では所定の暗号鍵KxPで暗号化されている。この鍵は、プログラム供給者がプログラムごとに個別に設定できる。プログラムをECU(プロセス)として実行するときは、ECUID、及び、IDに対応する鍵テーブル232のエントリを1つ割り当てて管理する。
鍵登録の流れを図9を用いて説明する。
(a)ステップ301において、暗号化プログラムの実行前に、OSから鍵登録命令が発行される。
(b)ステップ302において、鍵登録命令が発行されると、鍵データがプロセッサ外部から読み込まれ、公開鍵復号機能部161により復号化されたプログラム共通鍵K1x、データ共通鍵K1dを獲得する。
(c)ステップ303において、これら鍵データは、ECU状態管理機能部141から獲得したECUIDxに対応する鍵テーブルのエントリ232−1−x、232−1−dに書き込まれる。
ECUID#1を持つプロセスpの実行を開始するとき、OSはECUID#1を指定して特殊命令である実行開始命令を発行する。すると、プロセッサコア111のECUIDレジスタ(カレントタスクレジスタ)112に#1が書き込まれ、以後、ECUID#1のプログラム実行では、外部メモリ102に格納されている暗号化された命令ではなく、命令読み込み時に、このカレントタスクレジスタ112で指定されるエントリ232−1−x内のプログラム共通鍵、すなわち、K1xで復号化された命令列がキャッシュメモリに格納され、実行される。
なお、OSを含む非暗号化プロセスには、ECUID#0が割り当てられており、カレントタスクレジスタ112の値が#0の場合は、暗号/復号処理を行わない。プロセスpの開始前、OSが実行されている状態では、カレントタスクIDは#0となる。
暗号化されたプログラムの実行で、ECUID#1の実行による命令フェッチでアドレスXのメモリ内容が読み込まれたとき、BIU231は、Xのアドレスに相当する暗号化された命令列のメモリ内容を読み出す。そして、実行中のECUID#1に対応する鍵テーブル232のエントリ232−1−xより取り出したプログラム共通鍵K1xによって復号し、キャッシュライン123−1に格納する。プロセッサコアは、キャッシュライン123−1から復号された命令列を取り込み、順次実行する。
(暗号化プロセスによるデータの書き込み)
耐タンパプロセッサでは、データの暗号化処理も行う。以下の説明では、データ処理に使われる鍵をデータ鍵と呼ぶ。ECUID#1のデータ鍵はエントリ232−1−dに格納されている。
データ鍵の値は、プロセスの開始時に設定する方法と、プロセスが実行中に設定する方法があるが、ここでは、プロセスの開始時に設定されているものとする。以下、データ処理について、図10乃至図12を使用して説明する。
図10は、暗号化プロセスによるデータの書き込み、及び、読み込みのシーケンス図である。プロセッサコア111は、キャッシュメモリにアドレスX2のワード読み出し要求を発行する(シーケンスS401)。データキャッシュ124はアドレスX2のキャッシュ存在判定を行う。ここでは、アドレスX2の内容はキャッシュされていないので、キャッシュメモリはBIU231を通じて外部メモリ102へアドレスX2を含むアドレス範囲X〜X+31のメモリ読み出し要求を発行する一方、BIU231に対してカレントECUID#1を伝達する(シーケンスS402)。外部メモリ102からのECU#1のデータの読み込みは、キャッシュライン単位で行われる。
図11は復号処理のシーケンス図である。BIU231は、外部メモリ102に対して、メモリ読み出し要求を行う一方、鍵テーブル232及び、セレクタ233によりデータ鍵K1dを獲得し、暗号/復号コントローラ234に設定する(シーケンスS501)。暗号/復号コントローラ234は、データ鍵K1d、及び、暗号化されたデータが設定されると、復号モジュール236を用いて、暗号化されたデータの復号化を行う(シーケンスS502)。暗号/復号コントローラ234は、復号化データをBIU231に転送する(シーケンスS503)。
図10に戻って、BIU231にあるキャッシュデータC(X)は、キャッシュライン125−xに格納され、タグにID#1が書き込まれる(シーケンスS404)。プロセッサコア111はキャッシュラインから要求したアドレスのメモリ内容C(X2)=aを読み込む(シーケンスS405)。外部メモリ102から内容を読み込んだ状態では、該当キャッシュライン125−xのタグの状態ビット125−x−dは“クリーン(clean)”の状態になる。
一方、プロセッサコア111からデータの書き込みがあった場合、対象アドレスがキャッシュにヒットすれば、キャッシュにデータを書き込む(シーケンスS406)。ここでは、ライトバックキャッシュアルゴリズムが採用されているため、変更されたデータはすぐには外部メモリ102には書き戻されない。書き込みがあったキャッシュライン125−xの状態ビット125−x−dは“ダーティ(dirty)”状態になる。
(データのライトバック)
キャッシュライン125−xがフラッシュされ、書き戻されるとき、暗号化が行われる。
例として、アドレスXの内容が保持されているキャッシュライン125−xについて競合する、アドレスX+m*32の読み込み要求がプロセッサコア111から発行されるとする(シーケンスS407)。そのとき、キャッシュライン125−xの書き戻しが始まる。データの書き込みに先立ってデータの暗号化が行われる。キャッシュコントローラ121により、該当ラインを読み込んだときのECUIDを格納するキャッシュタグ125−x−tが参照され、ECUID#1が取り出される。キャッシュは、BIU231に対してメモリ書き出し要求を発行し、同時にキャッシュに格納されたECUIDを伝達する(シーケンスS408)。
図12は、暗号処理のシーケンス図である。BIU231は、鍵テーブル232、及び、セレクタ233により獲得したデータ鍵K1dを用いて暗号/復号コントローラ234に暗号化要求を行う(シーケンスS601)。暗号/復号コントローラ234は、キャッシュデータC’(X)、データ鍵K1dが設定されると、暗号モジュール235を用いて暗号化を行う(シーケンスS602)。暗号/復号コントローラ234は、暗号結果をBIU231に送る(シーケンスS603)。
図10に戻って、BIU231にある暗号化されたデータは外部メモリ102のアドレスXに書き戻される(シーケンスS409)。
書き換え対象のラインに残されていたデータの書き戻しが終わると、中断していたアドレスX+m*32のメモリ読み出しが再開される(シーケンスS410)。メモリ読み出し再開時に、キャッシュからBIU231へカレントECUID#1が伝達される。ECUIDを受け取ったBIU231は、鍵テーブル232内のエントリ232−1−dから対応するデータ鍵K1dを獲得する。外部メモリ102から読み出されたアドレスX+m*32に対応する内容E[C(X+m*32)]は、データ鍵K1dを用いて復号モジュール236によって復号化されて、結果がキャッシュライン125−xに格納され、タグにID#1が書き込まれる(シーケンスS411)。そして、キャッシュライン125−xからプロセッサコア111が要求したアドレスのワードが読み込まれる(シーケンスS412)。
暗号/復号コントローラ234で共通のハードウェアを用いるためには、別途、仕様上の鍵から暗号作業用鍵、及び、復号作業用鍵を作成する必要がある(例えば、特許文献2参照)。たとえば、アドバンスド・エンクリプション・スタンダード(AES)の場合には、暗号作業用鍵が仕様上の鍵として定義されており、復号作業用鍵は、暗号作業用鍵の拡張演算によって求める必要がある(非特許文献1)。
特開2001−318787号公報 特開2000−66586号公報 エヌ・アイ・エス・ティー(NIST)(米国国立標準技術研究所)、コンピュータ・セキュリティー・リソース・センターのホームページ(http://csrc.nist.gov/)
耐タンパプロセッサを設計する上で、問題となるのがコストである。プロセッサコストを下げるための解決策の1つとして、ハード規模の縮小が効果的である。鍵暗号を扱うハードウェアにおいて、暗号処理と復号処理で別々のハードウェアを用いる場合と、暗号処理と復号処理で共通のハードウェアを用いる場合がある。ハードウェア規模を縮小するためには、暗号処理と復号処理で共通のハードウェアを用いることが好ましい。
耐タンパプロセッサにおいてはバス暗号処理において、複数のソフトウェアに対応する鍵が頻繁に切り替えて使用されるだけでなく、同一鍵によるデータの暗号化と復号化も頻繁に切り替えが発生する。一方ハードウェア規模の削減によるコスト提言の目的に照らせば、暗号と復号のハードウェアは共通化することが望ましい。だが、暗号・復号のハードウェアを共通化して規模を縮小した場合に、暗号用と復号用に別の鍵が必要となる場合が多い。従来のシステムにおいては切り替え時にソフトウェア処理で暗号作業用鍵から復号作業用鍵を生成していたが、耐タンパプロセッサのようにバスの暗号化にソフトウェアによる鍵生成手法を適用した場合、鍵切り替え時の鍵生成によるメモリアクセス遅延が著しく大きくなってしまう。
また、耐タンパプロセッサでは、あるプロセスが使うデータ用暗号鍵の作成、登録はプロセスの初期化登録時およびプロセスによる明示的な鍵変更登録操作がある場合に限られ、その頻度はデータフェッチによる暗号、復号の切り替えと比べて低い。
本発明の目的は、同一のハードウェアによって暗号と復号の両方を処理させ、暗号ハードウェアの縮小を図るときに、暗号作業用鍵と復号作業用鍵とをそれぞれ保持するテーブルを持つことにより、暗号と復号の切り替えが頻繁に行われる場合でも、鍵切り替え時のメモリアクセス遅延を一定に押さえることによりスループットの低下を押さえることができるプロセッサを提供することにある。
上記目的を達成するため、本発明の第1の特徴は、(イ)プロセッサコアと、該プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号コントローラとを有するバスインタフェースユニットとを備え、外部のメモリとデータの送受信を行なうマイクロプロセッサであって、(ロ)前記鍵テーブルは、前記外部のメモリとの間の読み書き可能なデータについての暗号作業用データ鍵、及び、復号作業用データ鍵を対にして保持し、(ハ−1)前記マイクロプロセッサは、前記プロセスを一意に識別する識別子と前記データに対する読み出し/書き込み信号に基づいて前記暗号作業用データ鍵および前記復号作業用データ鍵を選択するセレクタである第1の手段と、(ハ−2)暗号/復号コントローラ内に保持され、暗号/復号共通のハードウェアで共通鍵暗号方式における暗号/復号処理を行う暗号/復号共通モジュールからなる第2の手段と、(ハ−3)前記外部のメモリから読み出したデータを、前記第1の手段により選択された鍵で復号して、前記キャッシュコントローラに通知する第3の手段と、(ハ−4)前記前記プロセスにより、前記キャッシュコントローラに通知した復号されたデータを前記第1の手段で選択された鍵で暗号化して前記外部のメモリへ出力する第4の手段とを備えるマイクロプロセッサであることを要旨とする。
本発明の第2の特徴は、(イ)プロセッサコアと、該プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号コントローラとを有するバスインタフェースユニットとを備え、外部のメモリとデータの送受信を行なうマイクロプロセッサであって、(ロ)前記鍵テーブル内は、前記外部のメモリとの間の読み書き可能なデータについての暗号作業用データ鍵、及び、復号作業用データ鍵を対にして保持し、(ハ−1)前記マイクロプロセッサは、前記プロセスを一意に識別する識別子と前記データに対する読み出し/書き込み信号に基づいて前記暗号作業用データ鍵および前記復号作業用データ鍵を選択するセレクタである第1の手段と、(ハ−2)前記暗号/復号コントローラ内に保持され、暗号/復号共通のハードウェアで共通鍵暗号方式における暗号/復号処理を行う暗号/復号共通モジュールからなる第2の手段と、(ハ−3)前記外部のメモリから読み出したデータを、前記第1の手段により選択された鍵で復号して、前記キャッシュコントローラに通知する第3の手段と、(ハ−4)前記プロセスにより、前記キャッシュコントローラに通知した復号されたデータを前記第1の手段で選択された鍵で暗号化して前記外部のメモリへ出力する第4の手段と、(ハ−5)ソフトウェアが前記暗号作業用データ鍵を指定して、前記鍵テーブルへの鍵登録を前記マイクロプロセッサに指示した時、前記暗号/復号共通モジュールによって、前記暗号作業用データ鍵で暗号化された前記データを復号するための前記復号作業用データ鍵を生成し、前記暗号作業用データ鍵、及び、前記復号作業用データ鍵を対応する前記鍵テーブルに書き込む暗号/復号作業用鍵生成器からなる第5の手段とを備えるマイクロプロセッサであることを要旨とする。
本発明では、同一のハードウェアによって暗号と復号の両方を処理させ、暗号ハードウェアの縮小を図るときに、暗号作業用鍵と復号作業用鍵とをそれぞれ保持するテーブルを持つことにより、暗号と復号の切り替えが頻繁に行われる場合でも、鍵切り替え時のメモリアクセス遅延を一定に押さえることによりスループットの低下を押さえることができる。
本発明では暗号鍵の登録操作があったとき、対応する復号作業用鍵を生成することにより、上記暗号鍵と復号作業用鍵を持つテーブル構築している。さらに、ある種の暗号ハードウェアでは、ほとんど回路規模を増やすことなく暗号鍵から復号作業用鍵を暗号1ブロックの処理と同等の短時間で生成する機能を持つことができる。このようなハードウェアを前提として、本発明では上記鍵登録操作において、復号作業用鍵の生成をソフトウェアではなく暗号ハードウェアの支援を受けることにより、鍵登録操作をより高速化している。
次に、図面を参照して、本発明の実施例を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施例は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
(データの暗号/復号)
図1が本発明による耐タンパプロセッサの構成である。ここでは、図8と異なる部分のみを説明する。131はBIUであり、プロセッサ外部との入出力を行う。BIU131には、鍵テーブル132、セレクタ133、暗号/復号コントローラ134、暗号/復号作業用鍵生成器136が備えられている。鍵テーブル132は、132−0〜132−mのm+1個のエントリを持つ。各エントリは、ECUに対応して設けられており、それぞれのエントリにプログラム共通鍵K1x、暗号作業用データ鍵K1dEと復号作業用データ鍵K1dDの3つフィールドがある。セレクタ133では、命令キャッシュ122、データキャッシュ124、読み出し/書き込み信号126から鍵選択を実行する。暗号/復号コントローラ134は、内部に暗号/復号共通のハードウェアである暗号/復号共通モジュール135を持つ。暗号/復号コントローラ134では、読み出し/書き込み信号126から暗号、復号の選択を実行する。以下の説明では、暗号/復号共通のハードウェアを用いてデータの暗号処理するために必要となる鍵を暗号作業用データ鍵、暗号/復号共用のハードウェアを用いて暗号化データの復号化処理するために必要となる鍵を復号作業用データ鍵と呼ぶ。
(作業用鍵の作成)
本発明で利用する暗号作業用データ鍵、及び、復号作業用データ鍵は、あらかじめプログラム供給者が準備しておく場合と、プログラム供給者は暗号作業用データ鍵、あるいは、復号作業用データ鍵のどちらか一方だけを配り、プロセッサ内部にある暗号/復号作業用鍵生成器136によってもう一方を作成する場合がある。前者の方法の場合は、暗号化プロセス実行前に2つの鍵を登録する必要がある。後者の方法は、適用対象の暗号ハードを用いることによって、一方の作業用鍵からもう一方の作業用鍵を導き出すことができることに起因する。
以下では、図2を用いて、プログラム供給者が暗号作業用データ鍵のみを配布した場合の鍵登録処理について説明する。
(a)ステップ701において、暗号化プログラムの実行前に、OSから鍵登録命令が発行される。
(b)ステップ702において、鍵登録命令が発行されると、暗号化された鍵データがプロセッサ外部から読み込まれ、公開鍵復号機能部161により復号化されたプログラム共通鍵K1x、暗号作業用データ鍵K1dEを獲得する。
(c)次に、ステップ703において、暗号作業用データ鍵K1dEから、暗号/復号作業用鍵生成器136によって、復号作業用データ鍵K1dDが作成される。
(d)そして、次にステップ704において、ECU状態管理機能部141から獲得したECUIDxに対応する鍵テーブル132のエントリ132−1−xにプログラム共通鍵K1x、暗号作業用データ鍵K1dE、及び復号作業用データ鍵K1dDを書き込む。
(メモリ読み込み/復号化処理)
暗号化されたプログラムからは、データの暗号化もハードウェアの支援を受けることができる。図3乃至図5は本発明の耐タンパプロセッサにおけるデータ処理を示す。ここでは、図10と比べて異なる部分であるBIU処理部のみを説明する。
図4を用いて、本発明の耐タンパプロセッサにおける復号化処理の例を説明する。BIU131は、外部メモリ102に対して、メモリ読み出し要求を行う一方、鍵テーブル132、及び、セレクタ133から、エントリ132−1−d−d内の獲得した復号作業用データ鍵K1dDを暗号/復号コントローラ134に伝達する。外部メモリ102から暗号化されたデータE[C(X)]が暗号/復号コントローラ134に読み出される(シーケンスS901)。暗号/復号コントローラ134は、復号作業用データ鍵k1dD、及び、暗号化されたデータE[C(X)]が設定されると、暗号/復号共通モジュール135を用いて、暗号化されたデータの復号化を行う(シーケンスS902)。暗号/復号コントローラ134は、復号化キャッシュデータC(X)をBIU131に返す(シーケンスS903)。
(暗号化処理/メモリ書き込み)
アドレスXとキャッシュラインが競合するアドレスX+32*mへのアクセスがあったとき、キャッシュラインがフラッシュされる。そのとき、暗号処理が行われる。図5を用いて、本発明の耐タンパプロセッサにおける暗号処理の例を説明する。BIU131は、ECUID#1を用いて鍵テーブル132、及び、セレクタ133から、エントリ132−1−d−e内の暗号作業用データ鍵K1dEを獲得し、暗号/復号コントローラ134にキャッシュデータC’(X)の暗号化要求を行う(シーケンスS1002)。暗号/復号コントローラ134は、キャッシュデータC’(X)、暗号作業用データ鍵K1dEが設定されると、暗号/復号共通モジュール135を用いて暗号化を行う(シーケンスS1003)。
(コンテキストの暗号化/復号化)
耐タンパプロセッサでは、データの暗号化/復号化だけでなく、コンテキストの暗号化/復号化を行う。以下の説明では、暗号/復号共通のハードウェアを用いてコンテキストの暗号化処理するために必要となる鍵を暗号作業用コンテキスト鍵、暗号/復号共用のハードウェアを用いて暗号化されたコンテキストの復号化処理するために必要となる鍵を復号作業用コンテキスト鍵と呼ぶ。
コンテキストの暗号化/復号化にも対応した本発明の耐タンパプロセッサの構成を図6に示す。ここでは、図1と異なる部分のみを説明する。1131はBIUであり、プロセッサ外部との入出力を行う。BIU1131には、鍵テーブル1132、セレクタ1133、暗号/復号コントローラ134、暗号/復号作業用鍵生成器136が備えられている。鍵テーブル1132は、1132−0〜1132−mのm+1個のエントリを持つ。各エントリは、ECUに対応して設けられており、それぞれのエントリにプログラム共通鍵Kx、暗号作業用データ鍵KdE、復号作業用データ鍵KdD、暗号作業用コンテキスト鍵KcE、復号作業用コンテキスト鍵KcDの5つフィールドがある。
(作業用鍵の登録)
図6の耐タンパプロセッサで利用する暗号作業用コンテキスト鍵KcE、及び、復号作業用コンテキスト鍵KcDは、プログラム供給者が両方の鍵を準備しておく場合、プログラム供給者が片方の鍵を準備し、片方の鍵を暗号/復号作業用鍵生成器136によって作成する場合、両方の鍵をBIU1131にコンテキスト鍵生成器を加えた耐タンパプロセッサによって作成する場合がある。本実施例2では、プログラム配布者があらかじめ暗号作業用データ鍵KdE、暗号作業用コンテキスト鍵KcDのみを準備すると仮定する。この場合の作業用鍵の登録方法について、図7を用いて説明する。
(a)ステップ1201において、暗号化プログラムの実行前に、OSから鍵登録命令が発行される。
(b)ステップ1202において、鍵登録命令が発行されると、鍵データがプロセッサ外部から読み込まれ、公開鍵復号機能部161により復号化されたプログラム共通鍵KxP、暗号作業用データ鍵KdE、暗号作業用コンテキスト鍵KcEを獲得する。
(c)ステップ1203において、データの暗号作業用データ鍵KdEから、暗号/復号作業用鍵生成器136によって、復号作業用データ鍵KdDが作成される。
(d)ステップ1204において、暗号作業用コンテキスト鍵KcEから、暗号/復号作業用鍵生成器136によって、復号作業用コンテキスト鍵KcDが作成される。
(e)そして、ステップ1205において、ECU状態管理機能部141から獲得したECUIDxに対応する鍵テーブル1132内のエントリ1132−1−xにプログラム共通鍵KxP、暗号作業用データ鍵KdE、復号作業用データ鍵KdD及び、暗号作業用コンテキスト鍵KcE、復号作業用コンテキスト鍵KcDを書き込む。
(コンテキストの保存/再開)
プログラム実行中に割り込み処理が呼び出されるとき、耐タンパプロセッサでは、プロセッサコア111からコンテキスト保存要求が出される。そのとき、データとは異なる特殊なタグとコンテキストをキャッシュ上に書き出す。コンテキストが保存されたキャッシュラインがフラッシュされるとき、BIU1131は、特殊なタグを用いて鍵テーブル1132から暗号作業用のコンテキスト鍵を取り出し、暗号化を行う。暗号化の手順は、鍵の選択を除いて、実施例1のデータの暗号化と同じである。
割り込み処理が完了し、プログラムが再開されるとき、耐タンパプロセッサでは、プロセッサコア111からコンテキスト再開要求が出される。プロセッサコア111は、キャッシュに対してコンテキスト読み出し要求を出す。キャッシュからフラッシュされている場合に、BIU1131は、再開するプロセスのIDから復号作業用のコンテキスト鍵を取り出し、メモリから読み出した暗号化コンテキストの復号化を行う。復号化の手順は、鍵の選択を除いて、実施例1のデータの復号化と同じである。
上記のように、本発明は実施例によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施例、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
その他、本発明の要旨を逸脱しない範囲で、様々に変形して実施することができる。なお、上記各実施例は、それぞれ組み合わせて実施することができる。このように、本発明はここでは記載していない様々な実施例等を含むことは勿論である。
実施例1の耐タンパプロセッサの内部構成図。 実施例1の耐タンパプロセッサにおける鍵登録処理フローチャート図。 実施例1の耐タンパプロセッサにおけるキャッシュアクセスシーケンス図。 実施例1の耐タンパプロセッサにおける復号処理シーケンス図。 実施例1の耐タンパプロセッサにおける暗号処理シーケンス図。 実施例2の耐タンパプロセッサ内部構成図。 実施例2の耐タンパプロセッサにおける鍵登録処理フローチャート図。 従来の耐タンパプロセッサ内部構成図。 従来の耐タンパプロセッサにおける鍵登録処理フローチャート図。 従来の耐タンパプロセッサにおけるキャッシュアクセスシーケンス図。 従来の耐タンパプロセッサにおける復号処理シーケンス図。 従来の耐タンパプロセッサにおける暗号処理シーケンス図。
符号の説明
101,201,1101…マイクロプロセッサ
102…外部メモリ
111…プロセッサコア
112…カレントタスクレジスタ(ECUIDレジスタ)
121…キャッシュコントローラ
122…命令キャッシュ(Iキャッシュ)
123,125…メモリ
124…データキャッシュ(Dキャッシュ)
123−1〜123−n,125−1〜125−n…キャッシュライン
125−x−t…キャッシュタグ
125−x−C…キャッシュ内容
125−x−d…状態ビット
126…読み出し/書き込み信号ライン
131,231,1131…バスインタフェースユニット(BIU)
132,232,1132…鍵テーブル
133,233…セレクタ
134,234…暗号/復号処理部
135…暗号/復号共通モジュール
136…暗号/復号作業用鍵生成器
141…ECU状態管理機能部
151…2次キャッシュ
161…公開鍵復号機能部
235…暗号モジュール
236…復号モジュール
301〜303,701〜704,1201〜1205…ステップ
S401〜S412,S501〜S503,S601〜S603,S901〜S903,S1001〜S1003…シーケンス
232−0〜232−m,232−1−x,232−1−d,132−1−d−d,132−1−d−e,1132−1−d−e,1132−1−d−d,1132−1−c−e,1132−1−c−d…エントリ
Kx,K1x,K2x…プログラム共通鍵
Kd,K1d,K2d〜Kmd…データ共通鍵
KdE,K1dE,K2dE〜KmdE…暗号作業用データ鍵
K1dD,K2dD〜KmdD…復号作業用データ鍵
KcE…暗号作業用コンテキスト鍵
KcD…復号作業用コンテキスト鍵
KxP…暗号鍵
P…プログラム
p…プロセス
X〜X+31…アドレス
C(X),C’(X)…キャッシュデータ

Claims (6)

  1. プロセッサコアと、該プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号コントローラとを有するバスインタフェースユニットとを備え、外部のメモリとデータの送受信を行なうマイクロプロセッサであって、
    前記鍵テーブルは、前記外部のメモリとの間の読み書き可能なデータについての暗号作業用データ鍵、及び、復号作業用データ鍵を対にして保持し、
    前記マイクロプロセッサは、
    前記プロセスを一意に識別する識別子と前記データに対する読み出し/書き込み信号に基づいて前記暗号作業用データ鍵および前記復号作業用データ鍵を選択するセレクタである第1の手段と、
    前記暗号/復号コントローラ内に保持され、暗号/復号共通のハードウェアで共通鍵暗号方式における暗号/復号処理を行う暗号/復号共通モジュールからなる第2の手段と、
    前記外部のメモリから読み出したデータを、前記第1の手段により選択された鍵で復号して、前記キャッシュコントローラに通知する第3の手段と、
    前記プロセスにより、前記キャッシュコントローラに通知し復号されたデータを前記第1の手段で選択された鍵で暗号化して前記外部のメモリへ出力する第4の手段とを備える
    ことを特徴とするマイクロプロセッサ。
  2. 前記鍵テーブルは、前記外部のメモリとの間の読み書き可能なコンテキストについての暗号作業用コンテキスト鍵、及び、復号作業用コンテキスト鍵を対にして保持し、
    第1の手段は、前記プロセスの識別子と前記コンテキストに対する読み出し/書き込み信号に基づいて前記暗号作業用コンテキスト鍵および前記復号作業用コンテキスト鍵を選択する
    ことを特徴とする請求項1記載のマイクロプロセッサ。
  3. プロセッサコアと、該プロセッサコアに接続され、複数のキャッシュラインを有するキャッシュコントローラと、前記キャッシュコントローラと接続され、少なくともプロセスと対応付けられた鍵を含む鍵テーブルと暗号/復号コントローラとを有するバスインタフェースユニットとを備え、外部のメモリとデータの送受信を行なうマイクロプロセッサであって、
    前記鍵テーブルは、前記外部のメモリとの間の読み書き可能なデータについての暗号作業用データ鍵、及び、復号作業用データ鍵を対にして保持し、
    前記マイクロプロセッサは、
    前記プロセスを一意に識別する識別子と前記データに対する読み出し/書き込み信号に基づいて前記暗号作業用データ鍵および前記復号作業用データ鍵を選択するセレクタである第1の手段と、
    前記暗号/復号コントローラ内に保持され、暗号/復号共通のハードウェアで共通鍵暗号方式における暗号/復号処理を行う暗号/復号共通モジュールからなる第2の手段と、
    前記外部のメモリから読み出したデータを、前記第1の手段により選択された鍵で復号して、前記キャッシュコントローラに通知する第3の手段と、
    前記プロセスにより、前記キャッシュコントローラに通知し復号されたデータを前記第1の手段で選択された鍵で暗号化して前記外部のメモリへ出力する第4の手段と、
    ソフトウェアが前記暗号作業用データ鍵を指定して、前記鍵テーブルへの鍵登録を前記マイクロプロセッサに指示した時、前記暗号/復号共通モジュールによって、前記暗号作業用データ鍵で暗号化された前記データを復号するための前記復号作業用データ鍵を生成し、前記暗号作業用データ鍵、及び、前記復号作業用データ鍵を対応する前記鍵テーブルに書き込む暗号/復号作業用鍵生成器からなる第5の手段と
    を備えることを特徴とするマイクロプロセッサ。
  4. 前記第5の手段は、ソフトウェアが前記復号作業用データ鍵を指定して、前記鍵テーブルへの鍵登録を前記マイクロプロセッサに指示した時、前記暗号/復号共通モジュールによって、前記復号作業用データ鍵で復号された前記データを復号前の暗号化データにするための前記暗号作業用データ鍵を生成し、前記暗号作業用データ鍵、及び、前記復号作業用データ鍵を対応する前記鍵テーブルに書き込むことを特徴とする請求項3のマイクロプロセッサ。
  5. 前記鍵テーブルは、前記外部のメモリとの間の読み書き可能なコンテキストについての暗号作業用コンテキスト鍵、及び、復号作業用コンテキスト鍵を対にして保持し、
    第1の手段は、前記プロセスの識別子と前記コンテキストに対する読み出し/書き込み信号に基づいて前記暗号作業用コンテキスト鍵および前記復号作業用コンテキスト鍵を選択し、
    前記第5の手段は、ソフトウェアが前記鍵テーブルへの鍵登録を前記マイクロプロセッサに指示したとき、前記暗号/復号共通モジュールによって、前記暗号作業用コンテキスト鍵で暗号化された前記コンテキストを復号するための前記復号作業用コンテキスト鍵を生成し、前記暗号作業用コンテキスト鍵、及び、前記復号作業用コンテキスト鍵を対応する前記鍵テーブルに書き込むことを特徴とする請求項3記載のマイクロプロセッサ。
  6. 前記第5の手段は、ソフトウェアが前記鍵テーブルへの鍵登録を前記マイクロプロセッサに指示したとき、前記暗号/復号共通モジュールによって、前記復号作業用コンテキスト鍵で復号された前記コンテキストを復号前の暗号化されたコンテキストにするための前記暗号作業用コンテキスト鍵を生成し、前記暗号作業用コンテキスト鍵、及び、前記復号作業用コンテキスト鍵を対応する前記鍵テーブルに書き込むことを特徴とする請求項5記載のマイクロプロセッサ。
JP2003309359A 2003-09-01 2003-09-01 マイクロプロセッサ Expired - Fee Related JP4309726B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003309359A JP4309726B2 (ja) 2003-09-01 2003-09-01 マイクロプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003309359A JP4309726B2 (ja) 2003-09-01 2003-09-01 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2005078459A JP2005078459A (ja) 2005-03-24
JP4309726B2 true JP4309726B2 (ja) 2009-08-05

Family

ID=34411547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003309359A Expired - Fee Related JP4309726B2 (ja) 2003-09-01 2003-09-01 マイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP4309726B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
JP4762752B2 (ja) 2006-02-16 2011-08-31 富士通セミコンダクター株式会社 半導体メモリ
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4098478B2 (ja) * 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
JP2002334019A (ja) * 2001-05-09 2002-11-22 Matsushita Electric Ind Co Ltd プログラマブル論理素子及びプログラマブル論理素子用データ書換システム
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ

Also Published As

Publication number Publication date
JP2005078459A (ja) 2005-03-24

Similar Documents

Publication Publication Date Title
US7590869B2 (en) On-chip multi-core type tamper resistant microprocessor
US7107459B2 (en) Secure CPU and memory management unit with cryptographic extensions
US7136488B2 (en) Microprocessor using asynchronous public key decryption processing
US8191155B2 (en) Microprocessor
US8516271B2 (en) Securing non-volatile memory regions
JP3880933B2 (ja) 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
US9280675B2 (en) Encrypting and storing confidential data
WO2019109967A1 (en) Storage apparatus and method for address scrambling
JP2006350782A (ja) プロセッサ及びシステム
JP4843531B2 (ja) 暗号変換装置、暗号変換方法および暗号変換プログラム
US10019603B2 (en) Secured memory system and method therefor
RU2005121915A (ru) Команды для поддержки обработки шифрованного сообщения
US8745407B2 (en) Virtual machine or hardware processor for IC-card portable electronic devices
US20190215160A1 (en) Managing a set of cryptographic keys in an encrypted system
US20210319117A1 (en) Secure asset management system
JP4643702B2 (ja) マイクロプロセッサ
CN112514320A (zh) 动态密码术密钥扩展
JP4309726B2 (ja) マイクロプロセッサ
JP3642533B2 (ja) プログラムカード及びこれを用いた計算機
JP2006254099A (ja) マイクロプロセッサ
JP4021810B2 (ja) プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法
JP2010055423A (ja) マイクロプロセッサ
JP2007043345A (ja) 通信装置およびそれにおける処理方法
CN117421747A (zh) 计算机系统以及系统内存加解密方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090323

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

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

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

Free format text: PAYMENT UNTIL: 20120515

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120515

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130515

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130515

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140515

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees