説明

プロセッサ及びプロセッサシステム

【課題】わずかな回路の追加で、安全かつ高速なメモリアクセスを実現するプロセッサを提供する。
【解決手段】命令コードを実行するCPUコアと複数のウェイを有するキャッシュメモリ部とを備えるプロセッサにて、コアに対して入出力されるデータを共通鍵暗号方式で暗号化又は復号する暗号化カウンタデータを複数のウェイの内の1つのウェイに格納し、暗号化カウンタデータと入出力されるデータとをXOR演算するようにして、暗号化又は復号をする度に暗号化カウンタデータを生成する共通鍵暗号処理を行わず、安全性を損なうことなく高速なメモリアクセスを実現できるようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサ及びプロセッサシステムに関し、プロセッサで扱うデータの暗号化技術に関する。
【背景技術】
【0002】
コンピュータや携帯情報端末などの機器においては、動作をプログラムによって制御でき、多様な機能の実装が容易であることから、プロセッサが使用されることが多い。近年、これらの機器が普及するにつれ、機器で実行されるプログラムに関するセキュリティの重要性が高まっている。
【0003】
プロセッサを使用するシステムの多くでは、命令の実行コードやデータが格納される大容量のメモリが、プロセッサとは別のチップにて実装される。このようにデータ等を格納したメモリが別のチップでプロセッサの外部に実装されることは、情報漏洩や解析対策の観点では好ましくない。メモリインタフェースを暗号化することも考えられるが、メモリアクセス時間の大幅な増加を伴う。
【0004】
前述のような問題を解決するために、一般的にはデータ等を暗号化し、ソフトウェアによる処理によってメモリ上に復号した後、実行するなどの対策が取られている。しかし、この方法は、短い時間であってもメモリ上に復号されたデータが存在することになる。
【0005】
セキュリティの問題に関しては、プロセッサの外側で扱われるデータには暗号化を施し、内側にはアクセス保護を施すことで、データを直接読み取ることを不可能とするセキュアプロセッサが用いられる場合がある。例えば、命令の実行コードやデータ等を暗号化して外部の主記憶装置や二次記憶装置などに格納し、プロセッサが命令を実行する際には、暗号化された実行コードを復号し、それをプロセッサ内のキャッシュメモリに格納して処理を実行する。本出願人は、このようなセキュアプロセッサをすでに提案している(特許文献1参照)。
【0006】
また、キャッシュメモリのメモリエントリにおいて、データ領域に格納されたデータの符号化に利用される暗号鍵を示す情報を格納するメモリフィールドを有し、示される暗号鍵により対応するデータ領域のデータを符号化及び復号化する技術が提案されている(例えば、特許文献2参照。)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2006−18528号公報
【特許文献2】特表2005−512192号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
例えば、特許文献1に記載の技術によれば、プロセッサの外部ではデータ等が暗号化されているので処理の安全性が高まり、またプロセッサから見ると暗号化されていることには関係なく命令の実行等が可能である。しかし、命令の実行コードやデータを外部のメモリから取得して、それを復号しながら命令を実行するために、処理時間が増大してしまう。また、データ等を暗号化及び復号するための暗号処理回路の追加などによって回路規模が非常に大きくなる。
【課題を解決するための手段】
【0009】
本発明の一観点によれば、命令コードを実行するコアと複数のウェイを有するキャッシュメモリ部とを備えるプロセッサが提供される。キャッシュメモリ部は、複数のウェイの内の1つのウェイにコアに対して入出力されるデータを共通鍵暗号方式で暗号化又は復号する暗号化カウンタデータが格納され、格納された暗号化カウンタデータと入出力されるデータとを排他的論理和演算処理する演算回路を有する。
【発明の効果】
【0010】
開示のプロセッサによれば、予め暗号化処理済の暗号化カウンタデータをキャッシュメモリ部に格納してコアに対して入出力されるデータの暗号化又は復号を行う。したがって、暗号化又は復号を行う度に暗号化カウンタデータを生成する共通鍵暗号処理を行う必要がなく、安全性を損なうことなく高速なメモリアクセスを実現することができる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施形態におけるプロセッサシステムの構成例を示す図である。
【図2】図1に示した命令処理部の構成例を示す図である。
【図3】図1に示したキャッシュメモリ部の構成例を示す図である。
【図4】本実施形態におけるキャッシュメモリ部の構成例を示す図である。
【図5】本実施形態における暗号化カウンタデータを説明するための図である。
【図6】図6(A)は本実施形態における暗号化カウンタデータの生成処理の一例を示すフローチャートであり、図6(B)は本実施形態における暗号化カウンタデータのセットアップ処理の一例を示すフローチャートである。
【図7】本実施形態でのデータの入出力タイミングを説明するためのタイミングチャートである。
【図8】本実施形態におけるキャッシュメモリ部の他の構成例を示す図である。
【図9】暗号処理回路の実装例を示す図である。
【図10】図9に示したシステム構成でのデータの入出力タイミングを説明するためのタイミングチャートである。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を図面に基づいて説明する。
【0013】
本実施形態において、データ等を暗号化及び復号する暗号方式は、暗号化及び復号に共通の鍵を使用する共通鍵暗号方式(例えばAES(Advanced Encryption Standard)暗号方式)を用いる。共通鍵暗号方式におけるブロック暗号の利用モードとしては、ECB(Electronic CodeBook)、CBC(Cipher Block Chaining)、CFB(Cipher FeedBack)、OFB(Output FeedBack)、及びCTR(CounTeR)が代表的なモードとして知られている。これらのモードのうち、プロセッサによる一般的なメモリアクセス、すなわちランダムアクセスに使用可能なものは、ECBモード及びCTRモードの2つである。しかし、ECBモードでは暗号化を一つの鍵で行うため、暗号化されていない平文と暗号文との関係が常に同じになることから、出現頻度が高い情報(例えば、0x00、0xFFなど)のパターン解析により暗号強度が相対的に弱くなる。そのため、ランダムアクセスが行われる場合、暗号化にはCTRモードが使用されることが多い。
【0014】
以下に説明する本発明の実施形態では、共通鍵暗号方式のCTR(カウンタ)モードでデータ等の暗号化及び復号を行う。CTRモードでは、アクセスするデータに依存するカウンタデータを暗号化し、暗号化カウンタデータを生成する。そして、暗号化カウンタデータと平文とをXOR(排他的論理和)演算することで平文から暗号文に暗号化し、暗号化カウンタデータと暗号文とをXOR演算することで暗号文から平文に復号する。
【0015】
図9は、共通鍵暗号方式のCTRモードでデータ等を暗号化及び復号する暗号処理回路を実装したシステムの一例を示す図である。図9において、101はCPU(Central Processing Unit)やDMA(Direct Memory Access)コントローラなどの上位バスモジュール、102はメモリコントローラ、103は外部メモリ、104は暗号処理回路である。
【0016】
上位バスモジュール101、メモリコントローラ102、及び暗号処理回路104が1つのチップ内に実装され、そのチップとは別のチップとして外部メモリ103が実装されている。上位バスモジュール101と暗号処理回路104とは、バス制御信号CB1A、アドレス信号A1A、出力データバスDO1A、及び入力データバスDI1Aにより接続されている。また、メモリコントローラ102と暗号処理回路104とは、バス制御信号CB1B、アドレス信号A1B、出力データバスDO1B、及び入力データバスDI1Bにより接続されている。メモリコントローラ102は、上位バスモジュール101からのメモリアクセス要求を外部メモリ103に対する制御信号に変換し、アドレス信号A2、メモリ制御信号CM2、出力データバスDO2、及び入力データバスDI2を用いてメモリアクセスを行う。アドレス信号A2、メモリ制御信号CM2、出力データバスDO2、及び入力データバスDI2は、チップの外部ピンPAD、PCM、PDTを介して、アドレス信号A3、メモリ制御信号CM3、データバスD3として外部メモリ103に接続される。
【0017】
暗号処理回路104は、共通鍵暗号方式のCTRモードで暗号化及び復号を行う。暗号処理回路104は、バス制御回路111、アドレス保持レジスタ112、共通鍵暗号処理制御部113、暗号処理演算器(AES演算器)114、アドレス上位レジスタ115、鍵レジスタ116、及び演算結果保持レジスタ117を有する。また、暗号処理回路104は、出力データ保持レジスタ118、XOR演算回路119、入力データ保持レジスタ120、及びXOR演算回路121を有する。
【0018】
バス制御回路111は、バス制御信号CB1Aにより入力されるコマンド等に応じて各種信号の入出力を制御する。また、バス制御回路111は、入力されたコマンドがリードアクセスを要求するリードコマンドの場合には、アドレスラッチ信号ADL及び入力データラッチ信号IDLをそれぞれ所定のタイミングで出力する。また、バス制御回路111は、入力されたコマンドがライトアクセスを要求するライトコマンドの場合には、アドレスラッチ信号ADL及び出力データラッチ信号ODLをそれぞれ所定のタイミングで出力する。アドレス保持レジスタ112は、アドレス信号A1Aにより入力されるアドレス(アクセスアドレス)を、アドレスラッチ信号ADLに応じてラッチして保持する。
【0019】
共通鍵暗号処理制御部113は、共通鍵暗号処理(AES処理)に係る制御を行う。共通鍵暗号処理では入力と鍵を用いた処理(計算)を何回行ったものを暗号化データとするかが規定されているので、共通鍵暗号処理制御部113は、例えば演算対象データ(入力、鍵)を入力したり演算結果を出力したりする演算に係るタイミングの制御等を行う。暗号処理演算器114は、共通鍵暗号処理における演算処理を行う。
【0020】
共通鍵暗号処理はCTRモードで行うが、カウンタデータの要素として、上位にはアドレス上位レジスタ115に設定された任意の値を用い、下位にはアドレス保持レジスタ112に保持された値を用い、それらを組み合わせて(連結して)カウンタデータとする。また、暗号鍵は、鍵レジスタ116に設定された値を用いる。なお、アドレス上位レジスタ115及び鍵レジスタ116には、ソフトウェア等によって予め値を設定しておく。アドレス上位レジスタ115の値とアドレス保持レジスタ112の値との連結値を入力とし、鍵レジスタ116の値を鍵として、共通鍵暗号処理制御部113によってタイミング等を制御し、暗号処理演算器114で演算処理することで共通鍵暗号処理が行われる。共通鍵暗号処理の演算結果は、演算結果保持レジスタ117に格納される。
【0021】
出力データ保持レジスタ118は、出力データバスDO1Aにより入力されるデータ(ライトデータ)を、出力データラッチ信号ODLに応じてラッチして保持する。XOR演算回路119は、演算結果保持レジスタ117に保持されている暗号処理結果と出力データ保持レジスタ118の出力値とのXOR演算を行い、演算結果を暗号化ライトデータとして出力データバスDO1Bにより出力する。
【0022】
入力データ保持レジスタ120は、入力データバスDI1Bにより入力されるデータ(リードデータ)を、入力データラッチ信号IDLに応じてラッチして保持する。XOR演算回路121は、演算結果保持レジスタ117に保持されている暗号処理結果と入力データ保持レジスタ120の出力値とのXOR演算を行い、演算結果を復号リードデータとして入力データバスDI1Aにより出力する。
【0023】
図9に示したシステムでのライトアクセス処理における暗号処理回路104の動作について、図10(A)を参照して説明する。図10(A)は、ライトアクセス処理における暗号処理回路104の動作を説明するためのタイミングチャートである。
【0024】
上位バスモジュール101からのライトコマンド及びアクセスアドレスが、バス制御信号CB1A及びアドレス信号A1Aにより暗号処理回路104に入力される。暗号処理回路104に入力されたライトコマンドは、バス制御回路111にて保持されるとともに、コマンド判定が行われ要求されたメモリアクセスがライトアクセスであると判断される。また、暗号処理回路104に入力されたアクセスアドレスは、コマンドと同様のタイミングでアドレス保持レジスタ112に保持された後、共通鍵暗号処理制御部113に供給される。そして、供給されたアクセスアドレスの値を用いた共通鍵暗号処理(AES処理)が、共通鍵暗号処理制御部113及び暗号処理演算器114により開始される。
【0025】
また、上位バスモジュール101からライトコマンド及びアクセスアドレスの出力後の次のサイクルにて出力されたライトデータが、出力データバスDO1Aにより暗号処理回路104に入力されて、出力データ保持レジスタ118に保持される。バス制御回路111、アドレス保持レジスタ112、及び出力データ保持レジスタ118は、共通鍵暗号処理の実行中において、それぞれ保持しているライトコマンド、アクセスアドレス、及びライトデータを継続して保持する。
【0026】
共通鍵暗号処理制御部113及び暗号処理演算器114による共通鍵暗号処理が完了すると、暗号処理結果(演算結果)が演算結果保持レジスタ117に保持される。また、共通鍵暗号処理完了と同時に、保持されているライトコマンド及びアクセスアドレスが、バス制御信号CB1B及びアドレス信号A1Bによりメモリコントローラ102に出力される。さらに、それに続いて、保持されているライトデータと暗号処理結果とをXOR演算回路119でXOR演算した結果が、暗号化ライトデータとして出力データバスDO1Bによりメモリコントローラ102に出力される。
【0027】
次に、図9に示したシステムでのリードアクセス処理における暗号処理回路104の動作について、図10(B)を参照して説明する。図10(B)は、リードアクセス処理における暗号処理回路104の動作を説明するためのタイミングチャートである。
【0028】
上位バスモジュール101からのリードコマンド及びアクセスアドレスが、バス制御信号CB1A及びアドレス信号A1Aにより暗号処理回路104に入力される。暗号処理回路104に入力されたリードコマンドは、バス制御回路111にて保持されるとともに、コマンド判定が行われ要求されたメモリアクセスがリードアクセスであると判断される。また、暗号処理回路104に入力されたアクセスアドレスは、コマンドと同様のタイミングでアドレス保持レジスタ112に保持された後、共通鍵暗号処理制御部113に供給される。そして、供給されたアクセスアドレスの値を用いた共通鍵暗号処理(AES処理)が、共通鍵暗号処理制御部113及び暗号処理演算器114により開始される。この共通鍵暗号処理の実行中において、バス制御回路111及びアドレス保持レジスタ112は、それぞれ保持しているリードコマンド及びアクセスアドレスを継続して保持する。
【0029】
共通鍵暗号処理制御部113及び暗号処理演算器114による共通鍵暗号処理が完了すると、暗号処理結果(演算結果)が演算結果保持レジスタ117に保持される。また、共通鍵暗号処理完了と同時に、保持されているリードコマンド及びアクセスアドレスが、バス制御信号CB1B及びアドレス信号A1Bによりメモリコントローラ102に出力される。
【0030】
そして、リードコマンドに対する応答として、メモリコントローラ102からリードデータが、入力データバスDI1Bにより暗号処理回路104に入力されて、入力データ保持レジスタ120に保持される。そして、入力データ保持レジスタ120に保持されたリードデータと暗号処理結果とをXOR演算回路121でXOR演算した結果が、復号リードデータとして入力データバスDI1Aにより入力される。
【0031】
しかしながら、前述したような構成では、メモリアクセスが発生する度に、共通鍵暗号処理を行うため、処理時間が大幅に増大する。例えば、ライトアクセス処理では、図10(A)に示したように共通鍵暗号処理に要する処理時間だけ遅延し、またリードアクセス処理では、図10(B)に示したように共通鍵暗号処理に要する処理時間に1サイクル時間加えた時間だけ遅延する。また、共通鍵暗号処理の実行に係る暗号処理回路により回路規模が増大する。
【0032】
そこで、本発明における実施形態では、プロセッサのキャッシュメモリを用いて暗号処理機能を実現する。これにより、メモリアクセスに係る高速性を損なうことなく、安全性の高い暗号処理機能を実現する。
【0033】
図1は、本発明の一実施形態におけるプロセッサシステムの構成例を示す図である。
図1において、1はプロセッサであり、プロセッサ1内の各機能部は1チップ上に実装される。プロセッサ1は、CPUコア2、キャッシュメモリ部(一次レベルキャッシュ/二次レベルキャッシュ)3、暗号化CTRテーブル4、ROM5、メモリコントローラ6、DMAコントローラ7、及びレジスタインタフェース8を有する。キャッシュメモリ部3、暗号化CTRテーブル4、ROM5、メモリコントローラ6、DMAコントローラ7、及びレジスタインタフェース8は、メインバス9を介して互いに通信可能に接続される。また、10はプロセッサ1とは別チップとして実装される外部メモリである。また、後述するように、CTRテーブルを外部ROM12に格納するようにして外部ROM12からデータを取得するROMインタフェース11を有するようにしても良い。
【0034】
図2は、図1に示した命令処理部13の構成例を示すブロック図である。図2に示す命令処理部13の動作は以下のようになる。
【0035】
(1)命令フェッチ
実行するための命令を外部バスより外部バスインタフェース35を介して獲得する。なお、ここでいう外部バスは、図1に示したメインバス9に相当する。まず、プログラムカウンタ21の指し示す命令が命令バッファ22に存在するかを確認し、ない場合、命令バッファ22は命令をフェッチする要求を命令アクセスMMU23に送る。命令アクセスMMU23はプログラムが使用する論理アドレスから、ハードウェアのマッピング順序に依存する物理アドレスに変換する。そのアドレスを用いて命令アクセス一次キャッシュタグ24を検索し、一致すれば命令アクセス一次キャッシュデータ25に該当データが存在するため、読み出しアドレスを送り、命令データを命令バッファ22に返す。存在しない場合は、更に二次キャッシュタグ26を検索し、なお存在しない場合は外部バスというように要求を発行し、戻りデータを順次、二次キャッシュデータ27、命令アクセス一次キャッシュデータ25へと補充する。このとき、補充されたことを二次キャッシュタグ26、命令アクセス一次キャッシュタグ24の更新により記憶する。補充されたデータは、命令アクセス一次キャッシュデータ25に存在しているときと同じ要領で、命令バッファ22に格納する。
【0036】
(2)命令の実行
命令バッファ22に格納された命令列は、実行ユニット28に送られ、それぞれの命令の種別に応じて演算器29、ロードストアユニット30に転送される。演算命令や分岐命令は演算器29の出力を汎用レジスタファイル31に記録するか、あるいはプログラムカウンタ(不図示)を更新する、といった処理を行う。また、ロードストア命令は、ロードストアユニット30にて、命令アクセスと同様にデータアクセスMMU32−データアクセス一次キャッシュタグ33−データアクセス一次キャッシュデータ34と順次アクセスし、そのデータを汎用レジスタファイル31にコピーするロード命令、あるいは、そのエントリに対し、汎用レジスタファイル31からコピーするストア命令、と命令に応じて実行する。一次キャッシュにない場合は、命令実行機構と共用の二次キャッシュ、あるいは外部バスよりデータを獲得して、同様に実行する。実行の完了後、プログラムカウンタは逐次加算されるか、あるいは、分岐指示アドレスに更新され、再度(1)の命令フェッチを行う。
【0037】
(3)全体
このように命令フェッチ、命令実行を繰り返し、マイクロプロセッサは動作する。
【0038】
図3は、4ウェイセットアソシアティブキャッシュメモリのデータアクセス機構の構成図である。なお、図3に示す構成は、例えば図2に示した命令アクセス一次キャッシュタグ24と命令アクセス一次キャッシュデータ25との組、あるいはデータアクセス一次キャッシュタグ33とデータアクセス一次キャッシュデータ34との組に相当する。
アクセスリクエスト/アドレス(命令フェッチ/ロードストア)SS1はMMU41に送られ、物理アドレスSS2に変換された後、キャッシュタグ43−0、43−1、43−2、43−3及びキャッシュデータ44−0、44−1、44−2、44−3にアドレスとして送られる。ここで、例えばキャッシュタグ43−0及びキャッシュデータ44−0がウェイ0に対応し、キャッシュタグ43−1及びキャッシュデータ44−1がウェイ1に対応する。同様にキャッシュタグ43−2及びキャッシュデータ44−2がウェイ2に対応し、キャッシュタグ43−3及びキャッシュデータ44−3がウェイ3に対応する。
【0039】
同一下位アドレス(インデックス)で検索されたタグ出力のうち、タグ出力が示すアドレス上位ビット(タグ)が、MMU41からのリクエストアドレスと一致したものがあれば、それはキャッシュデータ44−0〜44−3内に有効なデータが存在する(ヒット)ことを示す。これらの一致検出を比較器46で行い、同時にそのヒット情報SS3でセレクタ47を起動する。ヒットしていれば、そのデータは命令データSS4等として命令バッファ等に送られる。ヒットしなかった場合は、キャッシュミスリクエストSS5−1、キャッシュミスアドレスSS5−2が、二次キャッシュに出力される。その後、二次キャッシュからの戻りデータは、キャッシュタグ43−0〜43−3及びキャッシュデータ44−0〜44−3を更新し、同様に命令バッファ等にデータを返す。キャッシュタグ43−0〜43−3及びキャッシュデータ44−0〜44−3を更新する場合には、書き込みアドレスSS6がMMU41から出力される。キャッシュタグ43−0〜43−3及びキャッシュデータ44−0〜44−3の更新は、タグ更新制御部42及びデータ更新制御部45により行われる。Nウェイ構成の場合、比較器46及びセレクタ47の入力がNになる。
【0040】
図4は、本実施形態におけるキャッシュメモリ部の構成例を示す図である。なお、以下の説明では、説明を簡略化するために2ウェイセットアソシアティブキャッシュメモリを一例として例示し説明する。
【0041】
図4(a)は、2ウェイセットアソシアティブキャッシュメモリの構成例を示す図である。図4(a)において、61−0はウェイ0のキャッシュタグメモリ、61−1はウェイ1のキャッシュタグメモリである。62−0はウェイ0のキャッシュデータメモリ、62−1はウェイ1のキャッシュデータメモリである。また、63は図3に示した比較器に対応するヒット判定部であり、64は図3に示したセレクタ47に対応するウェイ選択セレクタである。
【0042】
図4(a)に示すように、キャッシュタグメモリ61−0、61−1には、アクセスアドレスにおける下位アドレス(インデックス)TWAD及び上位アドレス(タグ)TWDTが供給される。また、キャッシュデータメモリ62−0、62−1には、アクセスアドレスにおける下位アドレス(インデックス)WAD及びライトデータWDTが供給される。そして、アクセスアドレスの下位アドレス(インデックス)に応じて、ウェイ0又1のキャッシュタグメモリ61−0、61−1、及びキャッシュデータメモリ62−0、62−1にアクセスアドレスの上位アドレス(タグ)及びライトデータが書き込まれる。
【0043】
また、キャッシュタグメモリ61−0、61−1には、リードアクセス時にアクセスアドレスにおける下位アドレス(インデックス)TRADが供給され、それにより検索されたタグ出力がタグリードデータTRDT0、TRDT1として出力される。同様に、キャッシュデータメモリ62−0、62−1には、リードアクセス時にアクセスアドレスにおける下位アドレス(インデックス)RADが供給され、それにより検索されたデータ出力がリードデータRDT0、RDT1として出力される。ここで、キャッシュタグメモリ61−0、61−1から出力されるタグリードデータTRDT0、TRDT1は、インデックスに応じて検索されたアクセスアドレスにおける上位アドレス(タグ)である。ヒット判定部63は、タグリードデータTRDT0、TRDT1として出力された値とアクセスアドレスADDにおけるタグに相当する部分とを比較する。ヒット判定部63での比較結果に応じてウェイ選択セレクタ64によりリードデータRDT0、RDT1が選択されてリードデータRDATとしてCPUコア2に出力される。
【0044】
本実施形態においては、図4(b)に示すように、1つのウェイのキャッシュデータメモリに共通鍵暗号方式のCTRモードで用いる暗号化カウンタデータ(CTR−DATA)を格納することで暗号処理機能を実現する。図4(b)に示す例は、ウェイ1を暗号化カウンタデータの格納に用いた場合を示している。図4(b)において、71−0、71−1はキャッシュタグメモリであり、図4(a)に示したキャッシュタグメモリ61−0、61−1に対応する。また、72−0、72−1はキャッシュデータメモリであり、図4(a)に示したキャッシュデータメモリ62−0、62−1に対応する。ただし、本実施形態では、ウェイ1に対応するキャッシュタグメモリ71−1は使用せず、ウェイ1に対応するキャッシュデータメモリ72−1には暗号化カウンタデータ(CTR−DATA)が格納される。73はヒット判定部であり、74、75はXOR演算回路である。
【0045】
ライトアクセス時には、アクセスアドレスにおける下位アドレス(インデックス)TWAD及び上位アドレス(タグ)TWDTがキャッシュタグメモリ71−0に供給される。同様に、アクセスアドレスにおける下位アドレス(インデックス)WADがキャッシュデータメモリ72−0、72−1に供給される。これにより、キャッシュデータメモリ72−1からアクセスアドレスにおける下位アドレス(インデックス)に応じた暗号化カウンタデータがリードデータRDT1としてXOR演算回路75に出力される。XOR演算回路75は、キャッシュデータメモリ72−1から出力された暗号化カウンタデータとライトデータWDATとをXOR演算し、演算結果をライトデータWDTとしてキャッシュデータメモリ72−0に出力する。ここで、XOR演算回路75からキャッシュデータメモリ72−0に供給されるライトデータWDTは、平文のライトデータWDATを暗号化カウンタデータにより暗号化した暗号文データである。そして、アクセスアドレスの下位アドレス(インデックス)に応じて、ウェイ0のキャッシュタグメモリ71−0及びキャッシュデータメモリ72−0にアクセスアドレスの上位アドレス(タグ)及び暗号化したライトデータが書き込まれる。
【0046】
また、リードアクセス時には、アクセスアドレスにおける下位アドレス(インデックス)TRADがキャッシュタグメモリ71−0に供給され、それにより検索されたタグ出力がタグリードデータTRDT0として出力される。同様に、アクセスアドレスにおける下位アドレス(インデックス)RADがキャッシュデータメモリ72−0、72−1に供給される。これにより、検索されたデータ出力がリードデータRDT0、RDT1として出力される。ここで、キャッシュデータメモリ72−1から出力されるリードデータRDT1は、インデックスに応じた暗号化カウンタデータである。また、キャッシュタグメモリ71−0から出力されるタグリードデータTRDT0は、インデックスに応じて検索されたアクセスアドレスにおける上位アドレス(タグ)である。ヒット判定部73は、タグリードデータTRDT0として出力された値とアクセスアドレスADDにおけるタグに相当する部分とを比較する。その結果、一致した場合には、キャッシュデータメモリ72−0、72−1からそれぞれ出力されたリードデータと暗号化カウンタデータとをXOR演算回路74によりXOR演算した結果をリードデータRDATとしてCPUコア2に対して出力させる。ここで、XOR演算回路74から出力されるリードデータRDTは、暗号文のリードデータRDT0を暗号化カウンタデータにより復号したデータとなる。
【0047】
図5は、キャッシュデータメモリに格納される暗号化カウンタデータの一例を示す図である。図5に示す例は、32ビット幅のアドレスを有するシステムでの暗号化カウンタデータの例を示している。共通鍵暗号方式では、所定のブロックサイズ毎に暗号化又は復号され、ここでは128ビット毎に暗号化又は復号されるものとする。
【0048】
図5(A)に示したように、キャッシュサイズ(1つのウェイにおけるエントリ数)分のアドレス(インデックス)値に応じたデータを設定する。図5(A)に示した例では、上位96ビットを任意の値とし、下位32ビットをアドレス値に応じたカウンタ値としている。この図5(A)に示したデータをカウンタデータとして、暗号鍵を用いて暗号化することで図5(B)に示すようなブロックサイズを有する暗号化カウンタデータを取得し、キャッシュデータメモリに格納する。したがって、キャッシュデータメモリに格納された暗号化カウンタデータは、アクセスアドレスの下位ビット(インデックス)に依存したデータとなり、共通鍵暗号方式のCTRモードでの暗号化又は復号が可能となる。
【0049】
なお、前述した説明では、上位ビットに任意の値を用い、下位ビットにアドレス値を用いたカウンタデータを暗号化して暗号化カウンタデータを生成するようにしているが、これに限定されるものではない。アドレスに応じて暗号化カウンタデータが一意に決定されれば良く、カウンタデータは任意である。
【0050】
前述した暗号化カウンタデータは、図6に示す処理フローに従ってキャッシュデータメモリに格納すれば良い。
【0051】
図6(A)は、暗号化カウンタデータの生成処理の一例を示すフローチャートであり、この処理は予めコンピュータを用いたソフトウェア処理等により実行しておく。
まず、生成処理では、キャッシュ1ウェイ分、すなわちキャッシュサイズ(エントリ数)のカウンタデータを準備する(ステップS11)。次に、共通鍵暗号方式における鍵(任意)によりカウンタデータを暗号化する(ステップS12)。これにより、キャッシュサイズ分の暗号化カウンタデータが完成する(ステップS13)。完成した暗号化カウンタデータは、システム動作時にキャッシュデータメモリに供給可能なように、内部ROMに焼き付けたり、あるいは外部ROM等に外部データとして保存したりしておく(ステップS14)。
【0052】
図6(B)は、キャッシュメモリを用いた暗号処理機能を実現する際に、キャッシュメモリに暗号化カウンタデータを設定するセットアップ処理の一例を示すフローチャートである。図6(B)に示す処理を実行するプログラムは、例えばプロセッサチップ内部のROMに書き込まれ、リセット解除後CPU等により実行される。
システムに電源供給が開始され(パワーオン)、キャッシュメモリを用いて暗号処理機能を実現するように設定がなされている場合には、キャッシュメモリをCTR−RAMモードに設定する(ステップS21)。ここで、CTR−RAMモードは、キャッシュメモリを用いて暗号処理機能を実現する場合の動作モードであり、キャッシュメモリにおける1ウェイが暗号化カウンタデータを格納するために用いられるモードである。次に、暗号化CTRテーブル4、ROM5、又は外部ROM12からキャッシュメモリ(キャッシュデータメモリ)に暗号化カウンタデータが転送される(ステップS22)。その後、暗号化カウンタデータが格納されたキャッシュメモリの値を書き換えできないようロックする(ステップS23)。なお、キャッシュメモリをロックする方法は、任意である。例えば暗号化カウンタデータが格納されたキャッシュメモリのライトイネーブル信号WEをマスクするようにしても良いし、又はそのキャッシュメモリが最古のものとならないように管理するようにしても良い。
【0053】
本実施形態によれば、キャッシュメモリに予め暗号化処理済の暗号化カウンタデータを格納してデータ等の暗号化又は復号を行うことにより、その都度、共通鍵暗号処理(暗号化カウンタデータの計算等)を行う必要がない。また、暗号機能を実現するために設けるXOR演算回路は、従来のキャッシュメモリが備えるウェイ選択用のセレクタと論理段数(処理に要するサイクル数)はほぼ同じである。したがって、図7に示すように暗号化しない場合のアクセスと同様のタイミングで処理することが可能であり、遅延時間が増大することもない。以上のように、本実施形態におけるプロセッサシステムでは、安全性を維持しつつ高速なメモリアクセスを実現することができる。図7は本実施形態におけるデータの入出力タイミングを示しており、図7(A)及び(C)が通常動作時を示しており、図7(B)及び(D)が暗号処理実行時を示している。なお、図7(A)及び(B)がリードアクセス時を示し、図7(C)及び(D)がライトアクセス時を示している。
【0054】
なお、図8に示すように、外部からの設定信号EROMに応じて、キャッシュメモリを通常のキャッシュメモリとして使用するか、暗号処理機能を実現するために使用するかを切り替え可能なようにしても良い。なお、この図8において、図4に示した構成要素等と同一の構成要素等には同一の符号を付している。
【0055】
図8において、81−0、81−1はウェイ0、ウェイ1のキャッシュタグメモリであり、82−0、82−1はウェイ0、ウェイ1のキャッシュデータメモリである。83はヒット判定部、84はリードアクセス時のウェイ選択セレクタ、85,86はXOR演算回路である。また、87はウェイ選択セレクタ84の出力又はXOR演算回路85の出力を選択するセレクタであり、88はOR(論理和)演算回路、89はAND(論理積)演算回路である。
【0056】
図8に示すように設定信号EROMが真のとき(暗号処理機能がオン)には、OR演算回路88によりキャッシュデータメモリ82−1のライトイネーブル信号WE1をマスクする。また、AND回路89によりキャッシュデータメモリ82−1からの暗号化カウンタデータがXOR演算回路86に供給されるようにする。また、セレクタ87が、XOR演算回路85の出力をリードデータRDATとして出力するよう制御する。
【0057】
一方、設定信号EROMが偽のとき(暗号処理機能がオフ)には、OR演算回路88によりキャッシュデータメモリ82−1のライトイネーブル信号WE1を非マスク化する。また、AND回路89によりキャッシュデータメモリ82−1からの暗号化カウンタデータをマスクする。また、セレクタ87が、ウェイ選択セレクタ84の出力をリードデータRDATとして出力するよう制御する。以上のように構成すれば、設定信号EROMに応じて、キャッシュメモリを通常のキャッシュメモリとしても使用することが可能になる。
【0058】
なお、前述した説明では、説明を簡略化するために2ウェイセットアソシアティブのキャッシュメモリを例示して説明したが、複数のウェイを有するマルチウェイ(多ウェイ)セットアソシアティブのキャッシュメモリに本実施形態は適用可能である。Nウェイセットアソシアティブのキャッシュメモリの場合でも、1つのウェイを暗号化カウンタデータの格納に用い、残りのウェイは通常と同様に使用することで本実施形態における暗号処理機能を実現することができる。
【0059】
また、暗号化カウンタデータは1つに限らず、複数種類の暗号化カウンタデータを備え、適宜切り替えるようにしても良い。例えば、図1に示す暗号化CTRテーブルに複数種類の暗号化カウンタデータをテーブルとして記憶しておき、外部からの設定等に応じてキャッシュメモリに格納する暗号化カウンタテーブルを切り替えるようにしても良い。このようにすれば、暗号強度が低下することを抑制することができる。
【0060】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0061】
1 プロセッサ
2 CPUコア
3 キャッシュメモリ部
4 暗号化CTRテーブル
5 ROM
6 メモリコントローラ
10 メモリ
61−0、61−1、71−1、71−2 キャッシュタグメモリ
62−0、62−1、72−1、72−2 キャッシュデータメモリ
63、73 ヒット判定部
64 セレクタ
74、75 XOR演算回路

【特許請求の範囲】
【請求項1】
命令コードを実行するコアと、
複数のウェイを有し、前記コアに対して入出力されるデータが格納されるキャッシュメモリ部とを備え、
前記キャッシュメモリ部は、
前記複数のウェイの内の1つのウェイに前記入出力されるデータを共通鍵暗号方式で暗号化又は復号する暗号化カウンタデータが格納され、
格納された前記暗号化カウンタデータと前記入出力されるデータとを排他的論理和演算処理する演算回路を有することを特徴とするプロセッサ。
【請求項2】
予め作成された前記暗号化カウンタデータを記憶する記憶部をさらに備えることを特徴とする請求項1記載のプロセッサ。
【請求項3】
前記記憶部は、一群の暗号化カウンタデータを有する暗号化カウンタデータテーブルを複数記憶していることを特徴とする請求項2記載のプロセッサ。
【請求項4】
前記暗号化カウンタデータは、前記キャッシュメモリ部におけるインデックスの値に応じたデータ値を有することを特徴とする請求項1記載のプロセッサ。
【請求項5】
前記キャッシュメモリ部の前記1つのウェイに前記暗号化カウンタデータを格納する第1の動作モードと、前記1つのウェイを前記コアに対して入出力されるデータを格納するキャッシュとして使用する第2の動作モードとを設定に応じて切り替えることを特徴とする請求項1記載のプロセッサ。
【請求項6】
前記コアに対して入出力されるデータをAES暗号方式のCTRモードで暗号化又は復号することを特徴とする請求項1記載のプロセッサ。
【請求項7】
命令コードを実行するコア、及び複数のウェイを有し、前記コアに対して入出力されるデータが格納されるキャッシュメモリ部とを有するプロセッサと、
前記プロセッサとは別のチップで実装され、前記プロセッサに入出力されるデータを記憶するメモリとを備え、
前記キャッシュメモリ部は、
前記複数のウェイの内の1つのウェイに前記入出力されるデータを共通鍵暗号方式で暗号化又は復号する暗号化カウンタデータが格納され、
格納された前記暗号化カウンタデータと前記入出力されるデータとを排他的論理和演算処理する演算回路を有することを特徴とするプロセッサシステム。
【請求項8】
予め作成された前記暗号化カウンタデータを記憶する記憶部をさらに備えることを特徴とする請求項7記載のプロセッサシステム。
【請求項9】
前記記憶部は、前記プロセッサの外部に設けられることを特徴とする請求項8記載のプロセッサシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−4661(P2012−4661A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−135179(P2010−135179)
【出願日】平成22年6月14日(2010.6.14)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】