情報処理装置および情報処理方法
【課題】情報処理装置において、CPUなどのデータ処理部に対する機密性が要求される機密データについての機密性を確保する。
【解決手段】情報処理装置1は、データを読み込んで処理するデータ処理部11と、データ処理部11により読み込み可能な機密データ19を記憶可能な第1被アクセス部13と、第1被アクセス部13とデータ処理部11とを接続するバス17と、バス17を監視し、バス17上のデータを処理するバス処理部15とを有する。バス処理部15は、バス17を通じてデータ処理部11が第1被アクセス部13から機密データ19を読み込む場合、第1被アクセス部13がバス17へ出力した機密データ19に暗号をかけて、暗号化された機密データをデータ処理部11に読み込ませる。
【解決手段】情報処理装置1は、データを読み込んで処理するデータ処理部11と、データ処理部11により読み込み可能な機密データ19を記憶可能な第1被アクセス部13と、第1被アクセス部13とデータ処理部11とを接続するバス17と、バス17を監視し、バス17上のデータを処理するバス処理部15とを有する。バス処理部15は、バス17を通じてデータ処理部11が第1被アクセス部13から機密データ19を読み込む場合、第1被アクセス部13がバス17へ出力した機密データ19に暗号をかけて、暗号化された機密データをデータ処理部11に読み込ませる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機密性が要求される機密データを利用可能な情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
情報処理装置において、CPUは、記憶部などに記憶されたデータを読み込んで処理する。
このような情報処理装置において、CPUに対する機密性が要求される機密データを利用することがある。
たとえばCPU以外の周辺デバイスで利用される暗号キー、パスワード、乱数の初期値(シード値)などである。
これらの周辺デバイスで利用される機密データは、たとえば記憶部に記憶され、CPUにより記憶部から周辺デバイスへ転送され、周辺デバイスに利用される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平11−203237号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、このようにCPUに対する機密性が要求される機密データをCPUにより転送可能にした場合、CPUは、機密データに自由にアクセス可能である。
また、機密データを利用するソフトウェアプログラムの設計者などは、機密データの格納元アドレスを知ることが可能である。
そのため、ソフトウェアプログラムの設計者などは、たとえば機密データを読み出して表示するプログラムをCPUに実行させることにより、簡単に機密データの内容を知ることができる。
【0005】
ところで、データを保護する方法には、たとえばバス・スクランブル方法がある(特許文献1を参照)。
バス・スクランブル方法では、記憶部は、データにスクランブルをかけてバスへ出力し、CPUは、バスから入力されたデータのスクランブルを解除して読み込む。これにより、バス上のデータは、暗号化されて保護される。
しかしながら、このバス・スクランブル方法を用いたとしても、CPUに読み込まれた後のデータは、暗号化されていない。
その結果、データを保護するためにバス・スクランブル方法を採用したとしても、機密データを利用するソフトウェアプログラムの設計者などに対して機密データを保護することにはならない。
【0006】
このように情報処理装置では、CPUなどのデータ処理部に対する機密性が要求される機密データについての機密性を確保することが求められている。
【課題を解決するための手段】
【0007】
本発明の第1の観点の情報処理装置は、データを読み込んで処理するデータ処理部と、データ処理部により読み込み可能なデータとして、データ処理部に対する機密性が要求される機密データを記憶可能な第1被アクセス部と、第1被アクセス部とデータ処理部とを接続するバスと、バスを監視し、バス上のデータを処理するバス処理部とを有する。そして、バス処理部は、バスを通じてデータ処理部が第1被アクセス部から機密データを読み込む場合、第1被アクセス部がバスへ出力した機密データに暗号をかけて、暗号化された機密データをデータ処理部に読み込ませる。
【0008】
第1の観点では、機密データは、バス処理部により暗号化された状態でデータ処理部に読み込まれる。
すなわち、データ処理部に読み込まれた機密データの内容は、データ処理部に対して隠蔽される。
【0009】
本発明の第2の観点の情報処理方法は、データを読み込んで処理するデータ処理部と、データ処理部に対する機密性が要求される機密データをデータ処理部により読み込み可能に記憶する第1被アクセス部とがバスにより接続された情報処理装置についてのバス上で、データ処理部による第1被アクセス部からの機密データの読み込みを検出するステップと、バス上で機密データの読み込みを検出した場合に、第1被アクセス部がバスへ出力した機密データに暗号をかけて、暗号化された機密データをデータ処理部に読み込ませるステップとを備える。
【発明の効果】
【0010】
本発明では、データ処理部に対する機密性が要求される機密データについての機密性を確保することができる。
【図面の簡単な説明】
【0011】
【図1】図1は、本発明の実施形態に係る情報処理装置の概略ブロック図である。
【図2】図2は、図1のCPUバスおよびその周辺部を示す説明図である。
【図3】図3は、CPUがアクセス可能な記憶領域のアドレスマップの一例である。
【図4】図4は、機密リードデータの読出し時の図1のバス制御部でのデータ遷移図である。
【図5】図5は、機密ライトデータの書き込み時のバス制御部でのデータ遷移図である。
【図6】図6は、リードアクセス時に機能するバス制御部の構成を示すブロック図である。
【図7】図7は、リードアクセス時のタイミングチャートである。
【図8】図8は、ライトアクセス時に機能するバス制御部の構成を示すブロック図である。
【図9】図9は、ライトアクセス時のタイミングチャートである。
【図10】図10は、図1のスクランブルメモリの全体的なデータ構造の説明図である。
【図11】図11は、図10のスクランブルメモリの詳細なデータ構造の説明図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を図面に関連付けて説明する。
説明は以下の順に行う。
1.情報処理装置の構成。
2.情報処理装置におけるデータの遷移。
3.機密データなどへのリードアクセス動作。
4.機密データなどへのライトアクセス動作。
5.スクランブルメモリについての説明。
【0013】
[情報処理装置1の構成]
図1は、本発明の実施形態に係る情報処理装置1の概略ブロック図である。
図1には、情報処理装置1のCPUバス・アーキテクチャ・システムが図示されている。
図1の情報処理装置1は、集積回路装置2を有する。
集積回路装置2は、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15、セレクタ16、およびCPUバス17を有する。
これらの回路11から17は、集積回路装置2のたとえば1チップの半導体基板上に集積化される。
【0014】
CPU11は、たとえばクロック毎に命令を実行するRISC(Reduced Instruction Set Computer)コアである。なお、CPU11は、CISC(Complex Instruction Set Computer)コアであってもよい。
CPU11は、通常データブロック12などからプログラムを読み込んで実行する。これにより、CPU11は、情報処理装置1の制御部として機能する。
また、CPU11は、通常データブロック12などからデータを読み込んで処理する。
たとえば、CPU11は、情報処理装置1のCPUバス17の利用を管理するバスマスタとして機能する。
CPU11は、CPUバス17を使用して、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14またはバス制御部15にアクセスする。
CPU11によるCPUバス17を使用した周辺デバイス12〜15へのアクセスには、リードアクセスと、ライトアクセスとがある。
【0015】
通常データブロック12は、たとえばCPU11によりライトアクセスおよびリードアクセス可能な通常の記憶部である。
通常の記憶部は、たとえばハードディスクドライブ、不揮発性の半導体メモリ、コンピュータ読み取り可能な記録媒体を有する。
そして、通常データブロック12は、CPU11が読み込んで実行するプログラム、CPU11がプログラムの実行に用いるデータなどを記憶する。
以下、通常データブロック12に記憶され、CPU11により書き換え可能なデータを、通常データ18と呼ぶ。
通常データ18は、CPU11において利用されるため、CPU11に対する機密性は要求されない。
【0016】
機密データ読み出しブロック13は、たとえばCPU11によりリードアクセスのみ可能な読出し専用の記憶部である。
読出し専用の記憶部は、たとえばCPU11によりデータの書き換えができないROM、EEPROMなどの不揮発性の半導体メモリを有する。
そして、機密データ読み出しブロック13は、CPU11以外の周辺デバイス、たとえば機密データ書き込みブロック14などで使用される機密リードデータ19を記憶する。
機密リードデータ19には、たとえば機密データ書き込みブロック14で利用される暗号キー、パスワード、乱数の初期値などがある。
機密リードデータ19は、CPU11以外で使用されるため、CPU11に対して機密性が要求される。
【0017】
機密データ書き込みブロック14は、たとえばCPU11によりライトアクセスのみ可能な書き込み専用の記憶部、通信部、暗号処理部である。
書き込み専用の記憶部は、たとえばCPU11によりデータの書き込みが可能なRAM、ハードディスクドライブ、半導体メモリ、コンピュータ読み取り可能な記録媒体を有する。
そして、機密データ書き込みブロック14は、CPU11により書き込まれるデータを記憶する。
以下、CPU11により機密データ読み出しブロック13から機密データ書き込みブロック14へ転送された暗号キー、パスワード、乱数の初期値などのデータを、機密ライトデータ20とよぶ。
機密ライトデータ20は、機密リードデータ19と同様に、CPU11に対して機密性が要求される。
【0018】
この機密ライトデータ20および機密リードデータ19のように、CPU11に対して機密性が要求されるデータは、CPU11による転送処理を許可しても、それ以外の目的外処理、たとえば内容の表示処理などを許可したくない。
なお、通常データブロック12、機密データ読み出しブロック13、および機密データ書き込みブロック14が共に記憶部である場合、これらのブロックが物理的に1つの記憶デバイスにより実現されてもよい。
【0019】
図2は、図1のCPUバス17およびその周辺部を示す説明図である。
図2のCPUバス17は、アドレスバス21、データバス22、制御バス23を有する。
CPUバス17のアドレスバス21、データバス22および制御バス23は、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15に接続される。
【0020】
アドレスバス21は、複数のアドレスバス信号線により構成される。
CPU11は、たとえば通常データブロック12などにアクセスする場合、アクセス先のアドレス信号をアドレスバス21へ出力する。
CPU11が出力したアドレス信号は、アドレスバス21を通じて、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15へ出力される。
【0021】
図3は、CPU11がアクセス可能な記憶領域のアドレスマップの一例である。
図3のアドレスマップでは、0x0000(16進数の0000。以下、同様。)から0xDFFFまでのアドレスに通常データブロック12が割り当てられている。
0xE000から0xEFFFまでのアドレスに機密データ読み出しブロック13が割り当てられている。以下、機密データ読み出しブロック13に割り当てられたアドレス範囲を読出しアドレス範囲31という。
0xF000から0xFFFFまでのアドレスに機密データ書き込みブロック14が割り当てられている。以下、機密データ書き込みブロック14に割り当てられたアドレス範囲を書込みアドレス範囲32という。
【0022】
そして、CPU11は、アクセス先のアドレスを示すアドレス信号をアドレスバス21へ出力し、所定の記憶領域にアクセスする。
通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15は、アドレスバス21を通じて割り当てられたアドレスが入力されると、CPU11にそのアドレスの記憶領域をアクセスさせる。
【0023】
図2のデータバス22は、CPU11と周辺デバイス12〜15との間でのデータの送受に用いられる。
データバス22は、複数のバイトレーン24により構成される。
バイトレーン24は、複数本のデータバス信号線で構成される。
図2には、第1バイトレーン24、第2バイトレーン24、第3バイトレーン24、第4バイトレーン24が図示されている。
【0024】
CPU11は、複数のバイトレーン24を任意の組み合わせて選択し、選択したバイトレーン24を用いてアクセスする。
たとえばバイトレーン24が4個である場合、CPU11は、4個のバイトレーン24の内の1個のバイトレーン24を用いてバイトアクセス可能である。
また、CPU11は、4個のバイトレーン24の内の2個のバイトレーン24を用いてハーフワードアクセス可能である。
また、CPU11は、4個のすべてのバイトレーン24を用いてワードアクセス可能である。
CPU11は、CPUバス17の状況、データやアクセスの内容に応じて任意のバイトレーン24を選択し、アクセスを実行する。
ライトアクセスの場合、CPU11は、選択したバイトレーン24に、ライトデータの信号を出力する。
ライトデータの信号は、バイトレーン24を通じて、アドレスバス21で指定された書き込み先のブロック、たとえば機密データ書き込みブロック14へ入力される。
リードアクセスの場合、アドレスバス21で指定された読出し元のブロック、たとえば機密データ読み出しブロック13は、リードデータの信号を、バイトイネーブル信号線26により指定されたバイトレーン24へ出力する。
リードデータの信号は、バイトレーン24を通じて、CPU11へ入力される。
【0025】
制御バス23は、CPU11などがアクセス内容や状態を示す制御信号を出力するバスである。
制御バス23には、たとえばライトイネーブル信号線25、バイトイネーブル信号線26などがある。
【0026】
ライトイネーブル信号線25は、CPU11がライトイネーブル信号を出力する信号線である。
ライトイネーブル信号は、たとえばライトアクセスの場合にハイレベルとされ、それ以外のたとえばリードアクセスの場合にローレベルとされる。
【0027】
バイトイネーブル信号線26は、CPU11がバイトイネーブル信号を出力する信号線である。バイトイネーブル信号は、データバス22の複数のバイトレーン24の各々についての有効/無効を示す信号である。
CPU11は、たとえばライトデータを出力したバイトレーン24を有効とし、残りのバイトレーン24を無効とするバイトイネーブル信号を、バイトイネーブル信号線26へ出力する。
【0028】
図1のセレクタ16は、図2に示すように、データバス22に接続される。
これにより、CPU11と周辺デバイス12〜15とは、セレクタ16を介して接続されることになる。
【0029】
以下、CPU11とセレクタ16とを接続するマスタ側のデータバス22を上位データバス22−1といい、CPUバス17のうち、上位データバス22−1を含む部分を上位CPUバス17−1という。
また、セレクタ16と周辺ブロックとを接続するスレーブ側のデータバス22を下位データバス22−2といい、CPUバス17のうち、下位データバス22−2を含む部分を下位CPUバス17−2という。
【0030】
また、セレクタ16は、バス制御部15に接続される。
バス制御部15は、選択信号と、CPUバス17上のデータを変換したデータの信号とをセレクタ16へ出力する。
リードアクセスの場合、セレクタ16は、下位CPUバス17−2およびバス制御部15の一方を選択信号に応じて選択し、上位CPUバス17−1に接続する。
ライトアクセスの場合、セレクタ16は、上位CPUバス17−1およびバス制御部15の一方を選択信号に応じて選択し、下位CPUバス17−2に接続する。
【0031】
図1のバス制御部15は、図2に示すように、上位CPUバス17−1と、下位データバス22−2と、セレクタ16とに接続される。
バス制御部15は、CPUバス17を監視し、CPUバス17上のデータを暗号化または復号化し、セレクタ16へ出力する。
また、バス制御部15は、上位CPUバス17−1のデータに基づく判断処理を実行し、判断結果に対応する選択信号をセレクタ16へ出力する。
【0032】
[情報処理装置1におけるデータの遷移]
図4は、CPU11が機密データ読み出しブロック13から機密リードデータ19を読出す場合の、図1のバス制御部15におけるデータの遷移図である。
機密データ読み出しブロック13が下位データバス22−2へ出力した機密リードデータ19は、バス制御部15に入力される。
バス制御部15は、後述する乱数発生部41により乱数データを生成し、この乱数データを用いて機密リードデータ19を暗号化する。これにより、機密リードデータ19を暗号化したスクランブルリードデータが生成される。
また、バス制御部15は、スクランブルリードデータをセレクタ16へ出力し、セレクタ16へ選択信号を出力する。
セレクタ16がスクランブルリードデータを選択すると、スクランブルリードデータは、下位データバス22−2上の機密リードデータ19の替わりに、上位データバス22−1を通じてCPU11に入力される。
また、スクランブルリードデータは、乱数データと対応付けて、後述するスクランブルメモリ43に保存される。
【0033】
図5は、CPU11が機密データ書き込みブロック14へ機密ライトデータ20を書き込む場合の、バス制御部15におけるデータの遷移図である。
CPU11は、機密ライトデータ20を暗号化したスクランブルライトデータを上位データバス22−1へ出力する。スクランブルライトデータは、バス制御部15に入力される。
バス制御部15は、入力されたスクランブルライトデータが、後述するスクランブルメモリ43に保存されているスクランブルリードデータと一致する場合、スクランブルリードデータと対応する乱数データを用いて、スクランブルライトデータを復号する。
これにより、スクランブルライトデータを復号した機密ライトデータ20が生成される。
また、バス制御部15は、機密ライトデータ20をセレクタ16へ出力し、セレクタ16へ選択信号を出力する。
セレクタ16が機密ライトデータ20を選択すると、機密ライトデータ20は、上位データバス22−1上のスクランブルライトデータの替わりに、下位データバス22−2を通じて機密データ書き込みブロック14に入力される。
また、使用されたスクランブルリードデータは、乱数データとともに、スクランブルメモリ43から削除される。
【0034】
[機密データなどへのリードアクセス動作]
図6は、図1のCPU11がリードアクセスする場合に機能するバス制御部15の構成を示すブロック図である。
図6に示すように、リードアクセス時には、バス制御部15において、乱数発生部41と、データ暗号化用の排他論理和演算部42と、スクランブルメモリ43と、リードアドレスレジスタ44と、リードアドレス比較器45とが機能する。
また、図6には、上位データバス22−1と下位データバス22−2との間に接続されたセレクタ16が示されている。
【0035】
リードアドレスレジスタ44は、CPU11に対する機密性が要求されるデータの読出し元アドレスを記憶する。
具体的には、リードアドレスレジスタ44は、図3の読出しアドレス範囲31を記憶する。
なお、リードアドレスレジスタ44は、図3の読出しアドレス範囲31および書込みアドレス範囲32の両方を記憶してもよい。
【0036】
リードアドレス比較器45は、リードアドレスレジスタ44と、アドレスバス21とが接続される。
そして、リードアドレス比較器45は、アドレスバス21上のアドレスと、リードアドレスレジスタ44のアドレス範囲とを比較する。
アドレスバス21上のアドレスがリードアドレスレジスタ44のアドレス範囲である場合、リードアドレス比較器45は、アドレス一致検出信号を出力する。
【0037】
乱数発生部41は、乱数データを発生する。
【0038】
排他論理和演算部42は、下位データバス22−2と、乱数発生部41とに接続される。
そして、排他論理和演算部42は、下位データバス22−2上のスクランブルリードデータと、乱数データとの排他論理和を演算する。
【0039】
セレクタ16は、下位データバス22−2と、排他論理和演算部42とに接続される。
そして、セレクタ16は、リードアドレス比較器45のアドレス一致検出信号(選択信号)に基づいて、下位データバス22−2および排他論理和演算部42の一方を選択する。
具体的には、セレクタ16は、選択信号が入力されている場合には排他論理和演算部42を選択し、それ以外の場合には下位データバス22−2を選択する。
また、セレクタ16は、選択した側のデータの信号を、上位データバス22−1へ出力する。
たとえば排他論理和演算部42を選択した場合、セレクタ16は、スクランブルリードデータの信号を、上位データバス22−1へ出力する。
【0040】
スクランブルメモリ43は、上位データバス22−1と、乱数発生部41と、バイトイネーブル信号線26と、リードアドレス比較器45とに接続される。
そして、スクランブルメモリ43は、リードアドレス比較器45からアドレス一致信号が入力されると、入力中のスクランブルリードデータおよび乱数データとを対応付けて、1つのデータセットとして記憶する。
スクランブルメモリ43は、バイトイネーブル信号線26に基づいて有効とされているバイトレーン24のデータを記憶する。
【0041】
また、スクランブルメモリ43は、乱数有効信号を乱数発生部41へ出力する。
乱数有効信号は、スクランブルメモリ43から出力され、スクランブルメモリ43が既に記憶しているデータセットと、入力中のデータセットとが一致する場合に無効となり、それ以外の不一致などの場合に有効となる。
乱数発生部41は、乱数有効信号が無効である場合、有効になるまで新たな乱数の発生を繰り返す。
これにより、スクランブルメモリ43に複数の同一のスクランブルリードデータが記憶されなくなり、スクランブルメモリ43に記憶される複数のスクランブルリードデータは、互いに識別可能となる。
【0042】
CPU11が機密データ読み出しブロック13にリードアクセスする場合、リードアドレス比較器45は、CPU11がCPUバス17へ出力したアドレスと、リードアドレスレジスタ44のアドレスとを比較する。
リードアドレス比較器45がアドレス一致検出信号を出力すると、セレクタ16は、排他論理和演算部42を選択する。
排他論理和演算部42は、機密データ読み出しブロック13が下位データバス22−2へ出力した機密リードデータ19と、乱数データの排他論理和を演算している。
これにより、上位データバス22−1には、排他論理和演算部42により暗号化されたデータが出力される。
CPU11は、機密リードデータ19の替わりに、この機密リードデータ19を暗号化したスクランブルデータを読み込む。
【0043】
これに対して例えばCPU11が通常データブロック12にリードアクセスする場合、リードアドレス比較器45は、CPU11がCPUバス17へ出力したアドレスが、リードアドレスレジスタ44のアドレスと一致しないと判断する。
セレクタ16は、下位データバス22−2を選択する。
これにより、上位データバス22−1には、通常データブロック12が下位データバス22−2へ出力した通常データ18が出力される。
CPU11は、通常データ18を読み込む。
【0044】
以上のように、バス制御部15は、CPU11が機密データ読み出しブロック13から読み出した機密リードデータ19をCPUバス17上で暗号化し、暗号化された機密リードデータ19をCPU11に読み込ませることができる。
【0045】
図7は、図1の情報処理装置1での機密リードデータ19の読出し動作を示すタイミングチャートである。
図7(A)はアドレスバス21、図7(B)は下位データバス22−2上のデータ、図7(C)は上位データバス22−1上のデータである。
そして、たとえば通常データ18を読み出す場合にはセレクタ16は下位データバス22−2を選択するため、通常データブロック12が下位データバス22−2へ出力した通常データ18がそのまま上位データバス22−1へ出力されている。
この場合、CPU11は、通常データブロック12から読み出した通常データ18をそのまま読み込むことができる。
【0046】
これに対して、機密リードデータ19を読み出す場合にはセレクタ16は排他論理和演算部42を選択する。このため、機密データ読み出しブロック13が下位データバス22−2へ出力した機密リードデータ19が暗号化(スクランブル化)されて上位データバス22−1へ出力されている。
この場合、CPU11は、機密データ読み出しブロック13から読み出された機密リードデータ19を暗号化した状態で読み込むことになる。
【0047】
[機密データなどへのライトアクセス動作]
図8は、図1のCPU11がライトアクセスする場合に機能するバス制御部15の構成を示すブロック図である。
【0048】
図8に示すように、ライトアクセス時には、バス制御部15において、バイトマスク部51と、スクランブルメモリ43と、データ比較器52と、データ復号用の排他論理和演算部42とが機能する。
また、バス制御部15では、ライトアドレスレジスタ54と、ライトアドレス比較器55と、デスクランブルレジスタ56と、第1論理積演算部57と、第2論理積演算部58とが機能する。
また、図8には、上位データバス22−1と下位データバス22−2との間に接続されたセレクタ16が示されている。
【0049】
ライトアドレスレジスタ54は、CPU11に対する機密性が要求されるデータの書き込み先アドレスを記憶する。
具体的には、ライトアドレスレジスタ54は、図3の書込みアドレス範囲32を記憶する。
なお、ライトアドレスレジスタ54は、図3の読出しアドレス範囲31および書込みアドレス範囲32の両方を記憶してもよい。
【0050】
ライトアドレス比較器55は、ライトアドレスレジスタ54と、アドレスバス21とが接続される。
そして、ライトアドレス比較器55は、アドレスバス21上のアドレスと、ライトアドレスレジスタ54のアドレス範囲とを比較する。
アドレスバス21上のアドレスがライトアドレスレジスタ54のアドレス範囲である場合、ライトアドレス比較器55は、たとえばハイレベルのアドレス一致検出信号を出力する。
【0051】
デスクランブルレジスタ56は、スクランブルライトデータのデスクランブル(復号)のオンオフを示す値を記憶する。デスクランブルレジスタ56の値は、CPU11により書き換え可能である。
【0052】
第1論理積演算部57は、ライトアドレス比較器55と、デスクランブルレジスタ56とに接続される。
そして、アドレス一致信号が一致を示すハイレベルの信号であり、かつ、デスクランブルレジスタ56が復号有効を示すハイレベルの信号を出力している場合、第1論理積演算部57は、ハイレベルの信号を出力する。
それ以外の場合は、第1論理積演算部57は、ローレベルの信号を出力する。
【0053】
バイトマスク部51は、上位データバス22−1と、バイトイネーブル信号線26とに接続される。
バイトマスク部51は、バイトイネーブル信号に基づいてCPU11がライトデータを出力している有効なバイトレーン24と、無効なバイトレーン24とを判別する。
また、バイトマスク部51は、無効なバイトレーン24をマスクする。具体的にはバイトマスク部51は、無効なバイトレーン24を例えば0にマスクする。
バイトマスク部51は、バス制御部15の内部バス59へ、マスクしたデータを出力する。
【0054】
スクランブルメモリ43は、バイトイネーブル信号線26に接続される。
スクランブルメモリ43は、記憶しているスクランブルリードデータを出力する。
スクランブルメモリ43は、バイトイネーブル信号に基づいて有効なバイトレーン24を判断し、有効なバイトレーン24へスクランブルリードデータを出力する。
また、スクランブルメモリ43は、無効なバイトレーン24へ0を出力する。
【0055】
データ比較器52は、バイトマスク部51と、スクランブルメモリ43とに接続される。
そして、データ比較器52は、バイトマスク部51により無効レーンをマスクされた上位データバス22−1上のスクランブルライトデータと、スクランブルメモリ43が出力するスクランブルリードデータとを比較する。
スクランブルライトデータとスクランブルリードデータとが一致する場合、データ比較器52は、データ一致検出信号を出力する。
【0056】
第2論理積演算部58は、データ比較器52と、第1論理積演算部57とに接続される。
データ比較器52がデータの一致を示すハイレベルを出力し、第1論理積演算部57がハイレベルの信号を出力している場合、第2論理積演算部58は、ハイレベルの信号を出力する。
それ以外の場合は、第2論理積演算部58は、ローレベルの信号を出力する。
【0057】
データ復号用の排他論理和演算部42は、バイトマスク部51と、スクランブルメモリ43とに接続される。
そして、排他論理和演算部42は、バイトマスク部51が内部バス59へ出力したデータを、スクランブルメモリ43から出力される乱数データにより復号する。
【0058】
セレクタ16は、内部バス59と、排他論理和演算部42と、第2論理積演算部58とに接続される。
そして、第2論理積演算部58がハイレベルの信号を出力している場合、セレクタ16は、排他論理和演算部42を選択する。
セレクタ16は、排他論理和演算部42により復号化された機密ライトデータ20を下位データバス22−2へ出力する。
また、第2論理積演算部58がローレベルの信号を出力している場合、セレクタ16は、内部バス59を選択する。
セレクタ16は、上位データバス22−1からバイトマスク部51へ入力されたスクランブルライトデータを下位データバス22−2へ出力する。
【0059】
CPU11が機密データ書き込みブロック14にライトアクセスする場合、ライトアドレス比較器55は、CPU11がCPUバス17へ出力したアドレスと、ライトアドレスレジスタ54のアドレスとを比較し、アドレス一致検出信号を出力する。
第1論理積演算部57は、デスクランブルレジスタ56がデスクランブル有効を示すハイレベルの信号を出力している場合、ハイレベルの信号を出力する。
【0060】
また、バイトマスク部51は、上位データバス22−1のうち、無効なバイトレーンを0にマスクする。
データ比較器52は、データバス22のバス幅において、マスクされた上位データバス22−1上のデータと、スクランブルメモリ43に記憶されているデータとを比較する。
これらのデータが完全に一致する場合、データ比較器52は、ハイレベルの信号を出力する。第2論理積演算部58は、ハイレベルの信号を出力する。
これにより、セレクタ16は、排他論理和演算部42を選択する。
【0061】
スクランブルメモリ43は、データの一致を判定されたデータセットの乱数データを排他論理和演算部42へ出力する。
排他論理和演算部42は、CPU11が上位データバス22−1へ出力したスクランブルライトデータと、当該スクランブルライトデータの暗号化に用いた乱数データとの排他論理和を演算する。
これにより、下位データバス22−2には、排他論理和演算部42により復号されることにより生成された機密ライトデータ20へ出力される。
機密データ書き込みブロック14は、スクランブルライトデータの替わりに、この機密ライトデータ20を書き込む。
【0062】
これに対して、例えばCPU11が通常データブロック12にライトアクセスする場合、リードアドレス比較器45は、CPU11がCPUバス17へ出力したアドレスが、リードアドレスレジスタ44のアドレスと一致しないと判断する。
セレクタ16は、上位データバス22−1を選択する。
これにより、下位データバス22−2には、CPU11が上位データバス22−1へ出力した通常データ18が出力される。
通常データブロック12には、CPU11が出力した通常データ18が書き込まれる。
【0063】
以上のように、バス制御部15は、CPU11がスクランブルライトデータを機密データ書き込みブロック14に書き込む場合に、CPU11から出力されたスクランブルライトデータをCPUバス17上で復号する。
これにより、機密データ書き込みブロック14には、復号された機密ライトデータ20が書き込まれる。
【0064】
図9は、図1の情報処理装置1での機密ライトデータ20の書き込み動作を示すタイミングチャートである。
図9(A)はアドレスバス21、図9(B)は下位データバス22−2上のデータ、図9(C)は上位データバス22−1上のデータである。
【0065】
そして、たとえば通常データ18を書き込む場合にはセレクタ16はバイトマスク部51を選択するため、CPU11が上位データバス22−1へ出力した通常データ18がそのまま下位データバス22−2へ出力されている。
この場合、CPU11は、自ら出力した書込みデータをそのまま書き込むことができる。
これに対して、スクランブルライトデータを書き込む場合にはセレクタ16は排他論理和演算部42を選択する。
CPU11が上位データバス22−1へ出力したスクランブルライトデータは、復号化(デスクランブル化)された上で下位データバス22−2へ出力されている。
この場合、CPU11が出力した暗号化された機密データは、CPUバス17上で復号化されて、機密データ書き込みブロック14に書き込まれることになる。
【0066】
[スクランブルメモリ43についての説明]
図10および図11は、図1のスクランブルメモリ43のデータ構造の説明図である。
図10に示すように、スクランブルメモリ43は、複数組のデータセットを、データサイズ毎に分類して記憶する。
データセットは、図11に示すように、機密リードデータ19を暗号化したスクランブルリードデータと、その暗号化に用いた乱数データとを有する。
【0067】
図1のCPU11は、データバス22の4個のバイトレーン24から、1個のバイトレーン24を選択するバイトアクセス、2個のバイトレーン24を選択するハーフワードアクセス、または4個のバイトレーン24を選択するワードアクセスを実行する。
スクランブルメモリ43は、このバイトアクセス、ハーフワードアクセスおよびワードアクセス毎に複数組のデータセットを記憶する。
そのため、CPU11が機密データ読み出しブロック13から機密リードデータ19を読出す場合には、スクランブルメモリ43には、図10に示すように、新たなデータセットとバイトイネーブル信号とが入力される。
そして、スクランブルメモリ43は、バイトイネーブル信号の情報から、どのデータサイズに格納するかを判断する。
【0068】
また、スクランブルメモリ43は、図11に示すように、新たに入力されたスクランブルリードデータと乱数データとを対応付けて、該当するデータサイズのデータセットとして記憶する。
例えば、有効なバイトレーンがビット15〜8で、データバスの値が「0x01234567」の場合、データバスのサイズはバイトとなるので、バイトサイズのメモリ領域を選択し、「0x45」を保存する。
ただし、作成されたスクランブルリードデータと同じ値のスクランブルリードデータがスクランブルメモリ43にすでに存在する場合は、再度乱数の生成からやり直し、異なるスクランブルリードデータが得られるまで処理を繰り返す。
なお、スクランブル化の精度は乱数の品質に依存するので、より安全性を高めたい場合は品質の良い乱数を使用するか、または単純な排他論理和演算によるスクランブル化ではなく、暗号化処理を実施してもよい。
【0069】
次に、CPU11が、機密データ読み出しブロック13から読み出したスクランブルリードデータを、スクランブルライトデータとして機密データ書き込みブロック14へ書き込む場合について説明する。
この場合、スクランブルメモリ43には、図10に示すように、新たなデータセットとバイトイネーブル信号とが入力される。
スクランブルメモリ43は、バイトイネーブル信号の情報から、どのバイトレーン24へデータを出力するのかを判断する。
スクランブルメモリ43は、特定したバイトレーン24へ、自ら記憶していた、対応するデータサイズのスクランブルリードデータを出力する。
また、スクランブルメモリ43は、対応する乱数データも出力する。
【0070】
そして、スクランブルメモリ43は、第2論理積演算部58の出力がハイレベルになるまで、複数のスクランブルリードデータを順番に出力する。
第2論理積演算部58の出力がハイレベルになると、スクランブルメモリ43は、そのときの出力を保持する。
また、出力中のデータセットが復号に使用されると、図11に示すように、スクランブルメモリ43は、当該データセットを破棄する。
スクランブルメモリ43は、たとえば第2論理積演算部58の出力がハイレベルからローレベルに変化することに基づいて、当該データセットを破棄すればよい。
【0071】
このように、スクランブルメモリ43は、有効なバイトレーン24のデータのみを記憶することにより、所定数のデータセットを記憶するために必要となる容量を削減できる。
スクランブルメモリ43からスクランブルリードデータを読み出すときは、データバス22のどのバイトレーン24が有効であるかを示すバイトイネーブル信号を参照する。
有効なバイトレーン24情報からデータバス22のサイズを確認し、データバス22のサイズに合わせたメモリ領域から、比較するスクランブルリードデータを選択する。
このとき選択するスクランブルリードデータは、有効なバイトレーン24へ出力され、無効なバイトレーン24には0が埋め込まれる。
例えば、有効なバイトレーン24がビット15〜8の場合、データバス22のサイズは1バイトとなるので、バイトサイズのメモリ領域からスクランブルリードデータを選択する。
選択されたスクランブルリードデータの値が「0x01234567」の場合、有効なバイトレーン24がビット15〜8のため、「0x45」が有効となり、他のビットは0埋めされる。
このため、最終的にスクランブルメモリ43から出力されるスクランブルリードデータの値は、「0x00004500」となる。
【0072】
データバス22の値は、無効なバイトレーン24を0でマスクするバイトマスク部51を通ってから、スクランブルリードデータと一致するかを比較される。
バイトマスク部51では、データバス22のどのバイトレーン24が有効であるかを示すバイトイネーブル信号を参照し、無効なバイトレーン24を0でマスクする。
例えば、有効なバイトレーン24がビット15〜8で、データバス22の値が「0x01234567」の場合、バイトマスク(13)から出力されるデータバス22の値は「0x00004500」となる。
【0073】
スクランブルメモリ43の容量は有限のため、スクランブルメモリ43の上限に達した場合は、古いデータに対して上書きを行い、古いデータのデスクランブルができなくなる。
よって、一度に読み出せるスクランブルリードデータの読み出しサイズは、スクランブルメモリ43のサイズまでとなる。
【0074】
なお、機密データ書き込みブロック14に、スクランブルライトデータと同じ値のデータの書き込みを行う場合(つまり、デスクランブルしないで書き込みを行いたい場合)、CPU11は、以下の処理を実施する。
すなわち、CPU11は、まず、データをデスクランブルしてしまわないように、事前にバス制御部15のデスクランブルレジスタ56を設定する。
その後、CPU11は、スクランブルライトデータの書き込みを実行する。
デスクランブルレジスタ56の設定がOnの場合には、スクランブルライトデータの書き込み時にバス制御部15においてデスクランブル処理が実行される。
【0075】
これに対して、デスクランブルレジスタ56の設定がOffの場合、ライトデータの書き込み時にバス制御部15においてデスクランブル処理が実行されない。
CPU11が書き込みを行ったデータバス22は、そのままの値で機密データ書き込みブロック14に書き込まれる。
【0076】
以上のように、本実施形態では、機密データ読み出しブロック13に記憶されている機密リードデータ19は、バス制御部15の乱数発生部41で生成した乱数データによりスクランブル化され、CPU11へ読み込まれる。
これにより、CPU11から機密リードデータ19を隠蔽できる。
また、CPU11は、スクランブルリードデータを、スクランブルライトデータとして機密データ書き込みブロック14に書き込むことができる。
この際、スクランブルライトデータは、スクランブルメモリ43に保持されている乱数データによりデスクランブルされ、機密データ書き込みブロック14に書き込まれる。
このようにCPU11は、CPU11に対して機密性を要求される機密データについては、スクランブル化された状態でしかリードライトアクセスできなくなる。
ソフトウェアによってCPU11を制御可能なソフトウェア設計者は、機密データの内容を知ることができない。
また、機密データは、機密データ読み出しブロック13と機密データ書き込みブロック14と間でCPU11により転送可能である。
【0077】
このように本実施形態では、CPU11に機密データの内容を知られることなく、機密データの転送が可能になる。
よって、本実施形態では、たとえば機密データの開示を許可されていないソフトウェア開発者がソフトウェアによってCPU11を制御可能な状態であるとしても、機密データを保護できる。
また、本実施形態では、外部の攻撃者が強制的にCPU11をテストモードに遷移させてCPU11を直接制御可能な状態だとしても、機密データを保護できる。
たとえば、機密データの開示を認められない開発者でも、機密データの転送に関するソフトウェアを開発することができる。
ソフトウェア開発用のテストモードの場合においても、機密データの安全性を確保することができる。
また、悪意のある外部の攻撃者によってCPU11が乗っ取られた場合でも、CPU11が機密データをそのまま読み出すことはできないため、機密データの機密性は保たれる。
【0078】
これに対して、本実施形態を適用しない場合には、情報処理装置では、CPU11アクセスから機密データを保護する仕組みが存在しない。このため、ソフトウェア設計者などは、情報処理装置において簡単に機密データの内容を読み出すことができる。
【0079】
以上の実施形態は、本発明の好適な実施形態の例であるが、本発明は、これに限定されるものではなく、発明の要旨を逸脱しない範囲において種々の変形または変更が可能である。
【0080】
たとえば上記実施形態では、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、およびバス制御部15は、同じCPUバス17に接続されている。
この他にも例えば、CPU11は第1バスに接続され、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14などは第2バスに接続され、情報処理装置1は第1バスと第2バスとが接続されるブリッジ回路を有してもよい。
この場合、バス制御部15は、第1バスを監視しても、第2バスを監視してもよい。
【0081】
上記実施形態では、バス制御部15は、リードアクセスの場合にはアドレスのみに基づいて、機密データ読み出しブロック13が出力した機密リードデータ19と、機密リードデータ19を暗号化したスクランブルリードデータとの選択を切り替えている。
また、バス制御部15は、ライトアクセスの場合にはアドレス、データバス22上のデータおよびバイトイネーブル信号に基づいて、CPU11が出力したスクランブルライトデータと、それを復号した機密ライトデータ20との選択を切り替えている。
この他にも例えば、バス制御部15は、ライトアクセスの場合にアドレスのみに基づいて、CPU11が出力したスクランブルライトデータと、スクランブルライトデータを復号した機密ライトデータ20との選択を切り替えてもよい。
【0082】
上記実施形態では、機密データ読み出しブロック13と、機密データ書き込みブロック14とが別々のブロックとされている。
この他にも例えば、機密データ読み出しブロック13と機密データ書き込みブロック14とが1個のブロックとされてもよい。
【0083】
上記実施形態では、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、およびバス制御部15は、CPUバス17とともに1チップの集積回路装置2に組み込まれている。
この他にも例えば、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、およびバス制御部15は、別々の集積回路装置2に組み込まれてもよい。
【符号の説明】
【0084】
1…情報処理装置、2…集積回路装置、11…CPU(データ処理部)、13…機密データ読み出しブロック(第1被アクセス部)、14…機密データ書き込みブロック(第2被アクセス部)、15…バス制御部(バス処理部)、16…セレクタ、17…CPUバス(バス)、19…機密リードデータ(機密データ)、20…機密ライトデータ(機密データ)、21…アドレスバス、22…データバス、24…バイトレーン、41…乱数発生部、42…排他論理和演算部(暗号処理部、復号処理部)、43…スクランブルメモリ(記憶部)、51…バイトマスク部(マスク部)、52…データ比較器(比較部)、56…デスクランブルレジスタ(レジスタ)
【技術分野】
【0001】
本発明は、機密性が要求される機密データを利用可能な情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
情報処理装置において、CPUは、記憶部などに記憶されたデータを読み込んで処理する。
このような情報処理装置において、CPUに対する機密性が要求される機密データを利用することがある。
たとえばCPU以外の周辺デバイスで利用される暗号キー、パスワード、乱数の初期値(シード値)などである。
これらの周辺デバイスで利用される機密データは、たとえば記憶部に記憶され、CPUにより記憶部から周辺デバイスへ転送され、周辺デバイスに利用される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平11−203237号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、このようにCPUに対する機密性が要求される機密データをCPUにより転送可能にした場合、CPUは、機密データに自由にアクセス可能である。
また、機密データを利用するソフトウェアプログラムの設計者などは、機密データの格納元アドレスを知ることが可能である。
そのため、ソフトウェアプログラムの設計者などは、たとえば機密データを読み出して表示するプログラムをCPUに実行させることにより、簡単に機密データの内容を知ることができる。
【0005】
ところで、データを保護する方法には、たとえばバス・スクランブル方法がある(特許文献1を参照)。
バス・スクランブル方法では、記憶部は、データにスクランブルをかけてバスへ出力し、CPUは、バスから入力されたデータのスクランブルを解除して読み込む。これにより、バス上のデータは、暗号化されて保護される。
しかしながら、このバス・スクランブル方法を用いたとしても、CPUに読み込まれた後のデータは、暗号化されていない。
その結果、データを保護するためにバス・スクランブル方法を採用したとしても、機密データを利用するソフトウェアプログラムの設計者などに対して機密データを保護することにはならない。
【0006】
このように情報処理装置では、CPUなどのデータ処理部に対する機密性が要求される機密データについての機密性を確保することが求められている。
【課題を解決するための手段】
【0007】
本発明の第1の観点の情報処理装置は、データを読み込んで処理するデータ処理部と、データ処理部により読み込み可能なデータとして、データ処理部に対する機密性が要求される機密データを記憶可能な第1被アクセス部と、第1被アクセス部とデータ処理部とを接続するバスと、バスを監視し、バス上のデータを処理するバス処理部とを有する。そして、バス処理部は、バスを通じてデータ処理部が第1被アクセス部から機密データを読み込む場合、第1被アクセス部がバスへ出力した機密データに暗号をかけて、暗号化された機密データをデータ処理部に読み込ませる。
【0008】
第1の観点では、機密データは、バス処理部により暗号化された状態でデータ処理部に読み込まれる。
すなわち、データ処理部に読み込まれた機密データの内容は、データ処理部に対して隠蔽される。
【0009】
本発明の第2の観点の情報処理方法は、データを読み込んで処理するデータ処理部と、データ処理部に対する機密性が要求される機密データをデータ処理部により読み込み可能に記憶する第1被アクセス部とがバスにより接続された情報処理装置についてのバス上で、データ処理部による第1被アクセス部からの機密データの読み込みを検出するステップと、バス上で機密データの読み込みを検出した場合に、第1被アクセス部がバスへ出力した機密データに暗号をかけて、暗号化された機密データをデータ処理部に読み込ませるステップとを備える。
【発明の効果】
【0010】
本発明では、データ処理部に対する機密性が要求される機密データについての機密性を確保することができる。
【図面の簡単な説明】
【0011】
【図1】図1は、本発明の実施形態に係る情報処理装置の概略ブロック図である。
【図2】図2は、図1のCPUバスおよびその周辺部を示す説明図である。
【図3】図3は、CPUがアクセス可能な記憶領域のアドレスマップの一例である。
【図4】図4は、機密リードデータの読出し時の図1のバス制御部でのデータ遷移図である。
【図5】図5は、機密ライトデータの書き込み時のバス制御部でのデータ遷移図である。
【図6】図6は、リードアクセス時に機能するバス制御部の構成を示すブロック図である。
【図7】図7は、リードアクセス時のタイミングチャートである。
【図8】図8は、ライトアクセス時に機能するバス制御部の構成を示すブロック図である。
【図9】図9は、ライトアクセス時のタイミングチャートである。
【図10】図10は、図1のスクランブルメモリの全体的なデータ構造の説明図である。
【図11】図11は、図10のスクランブルメモリの詳細なデータ構造の説明図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を図面に関連付けて説明する。
説明は以下の順に行う。
1.情報処理装置の構成。
2.情報処理装置におけるデータの遷移。
3.機密データなどへのリードアクセス動作。
4.機密データなどへのライトアクセス動作。
5.スクランブルメモリについての説明。
【0013】
[情報処理装置1の構成]
図1は、本発明の実施形態に係る情報処理装置1の概略ブロック図である。
図1には、情報処理装置1のCPUバス・アーキテクチャ・システムが図示されている。
図1の情報処理装置1は、集積回路装置2を有する。
集積回路装置2は、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15、セレクタ16、およびCPUバス17を有する。
これらの回路11から17は、集積回路装置2のたとえば1チップの半導体基板上に集積化される。
【0014】
CPU11は、たとえばクロック毎に命令を実行するRISC(Reduced Instruction Set Computer)コアである。なお、CPU11は、CISC(Complex Instruction Set Computer)コアであってもよい。
CPU11は、通常データブロック12などからプログラムを読み込んで実行する。これにより、CPU11は、情報処理装置1の制御部として機能する。
また、CPU11は、通常データブロック12などからデータを読み込んで処理する。
たとえば、CPU11は、情報処理装置1のCPUバス17の利用を管理するバスマスタとして機能する。
CPU11は、CPUバス17を使用して、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14またはバス制御部15にアクセスする。
CPU11によるCPUバス17を使用した周辺デバイス12〜15へのアクセスには、リードアクセスと、ライトアクセスとがある。
【0015】
通常データブロック12は、たとえばCPU11によりライトアクセスおよびリードアクセス可能な通常の記憶部である。
通常の記憶部は、たとえばハードディスクドライブ、不揮発性の半導体メモリ、コンピュータ読み取り可能な記録媒体を有する。
そして、通常データブロック12は、CPU11が読み込んで実行するプログラム、CPU11がプログラムの実行に用いるデータなどを記憶する。
以下、通常データブロック12に記憶され、CPU11により書き換え可能なデータを、通常データ18と呼ぶ。
通常データ18は、CPU11において利用されるため、CPU11に対する機密性は要求されない。
【0016】
機密データ読み出しブロック13は、たとえばCPU11によりリードアクセスのみ可能な読出し専用の記憶部である。
読出し専用の記憶部は、たとえばCPU11によりデータの書き換えができないROM、EEPROMなどの不揮発性の半導体メモリを有する。
そして、機密データ読み出しブロック13は、CPU11以外の周辺デバイス、たとえば機密データ書き込みブロック14などで使用される機密リードデータ19を記憶する。
機密リードデータ19には、たとえば機密データ書き込みブロック14で利用される暗号キー、パスワード、乱数の初期値などがある。
機密リードデータ19は、CPU11以外で使用されるため、CPU11に対して機密性が要求される。
【0017】
機密データ書き込みブロック14は、たとえばCPU11によりライトアクセスのみ可能な書き込み専用の記憶部、通信部、暗号処理部である。
書き込み専用の記憶部は、たとえばCPU11によりデータの書き込みが可能なRAM、ハードディスクドライブ、半導体メモリ、コンピュータ読み取り可能な記録媒体を有する。
そして、機密データ書き込みブロック14は、CPU11により書き込まれるデータを記憶する。
以下、CPU11により機密データ読み出しブロック13から機密データ書き込みブロック14へ転送された暗号キー、パスワード、乱数の初期値などのデータを、機密ライトデータ20とよぶ。
機密ライトデータ20は、機密リードデータ19と同様に、CPU11に対して機密性が要求される。
【0018】
この機密ライトデータ20および機密リードデータ19のように、CPU11に対して機密性が要求されるデータは、CPU11による転送処理を許可しても、それ以外の目的外処理、たとえば内容の表示処理などを許可したくない。
なお、通常データブロック12、機密データ読み出しブロック13、および機密データ書き込みブロック14が共に記憶部である場合、これらのブロックが物理的に1つの記憶デバイスにより実現されてもよい。
【0019】
図2は、図1のCPUバス17およびその周辺部を示す説明図である。
図2のCPUバス17は、アドレスバス21、データバス22、制御バス23を有する。
CPUバス17のアドレスバス21、データバス22および制御バス23は、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15に接続される。
【0020】
アドレスバス21は、複数のアドレスバス信号線により構成される。
CPU11は、たとえば通常データブロック12などにアクセスする場合、アクセス先のアドレス信号をアドレスバス21へ出力する。
CPU11が出力したアドレス信号は、アドレスバス21を通じて、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15へ出力される。
【0021】
図3は、CPU11がアクセス可能な記憶領域のアドレスマップの一例である。
図3のアドレスマップでは、0x0000(16進数の0000。以下、同様。)から0xDFFFまでのアドレスに通常データブロック12が割り当てられている。
0xE000から0xEFFFまでのアドレスに機密データ読み出しブロック13が割り当てられている。以下、機密データ読み出しブロック13に割り当てられたアドレス範囲を読出しアドレス範囲31という。
0xF000から0xFFFFまでのアドレスに機密データ書き込みブロック14が割り当てられている。以下、機密データ書き込みブロック14に割り当てられたアドレス範囲を書込みアドレス範囲32という。
【0022】
そして、CPU11は、アクセス先のアドレスを示すアドレス信号をアドレスバス21へ出力し、所定の記憶領域にアクセスする。
通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、バス制御部15は、アドレスバス21を通じて割り当てられたアドレスが入力されると、CPU11にそのアドレスの記憶領域をアクセスさせる。
【0023】
図2のデータバス22は、CPU11と周辺デバイス12〜15との間でのデータの送受に用いられる。
データバス22は、複数のバイトレーン24により構成される。
バイトレーン24は、複数本のデータバス信号線で構成される。
図2には、第1バイトレーン24、第2バイトレーン24、第3バイトレーン24、第4バイトレーン24が図示されている。
【0024】
CPU11は、複数のバイトレーン24を任意の組み合わせて選択し、選択したバイトレーン24を用いてアクセスする。
たとえばバイトレーン24が4個である場合、CPU11は、4個のバイトレーン24の内の1個のバイトレーン24を用いてバイトアクセス可能である。
また、CPU11は、4個のバイトレーン24の内の2個のバイトレーン24を用いてハーフワードアクセス可能である。
また、CPU11は、4個のすべてのバイトレーン24を用いてワードアクセス可能である。
CPU11は、CPUバス17の状況、データやアクセスの内容に応じて任意のバイトレーン24を選択し、アクセスを実行する。
ライトアクセスの場合、CPU11は、選択したバイトレーン24に、ライトデータの信号を出力する。
ライトデータの信号は、バイトレーン24を通じて、アドレスバス21で指定された書き込み先のブロック、たとえば機密データ書き込みブロック14へ入力される。
リードアクセスの場合、アドレスバス21で指定された読出し元のブロック、たとえば機密データ読み出しブロック13は、リードデータの信号を、バイトイネーブル信号線26により指定されたバイトレーン24へ出力する。
リードデータの信号は、バイトレーン24を通じて、CPU11へ入力される。
【0025】
制御バス23は、CPU11などがアクセス内容や状態を示す制御信号を出力するバスである。
制御バス23には、たとえばライトイネーブル信号線25、バイトイネーブル信号線26などがある。
【0026】
ライトイネーブル信号線25は、CPU11がライトイネーブル信号を出力する信号線である。
ライトイネーブル信号は、たとえばライトアクセスの場合にハイレベルとされ、それ以外のたとえばリードアクセスの場合にローレベルとされる。
【0027】
バイトイネーブル信号線26は、CPU11がバイトイネーブル信号を出力する信号線である。バイトイネーブル信号は、データバス22の複数のバイトレーン24の各々についての有効/無効を示す信号である。
CPU11は、たとえばライトデータを出力したバイトレーン24を有効とし、残りのバイトレーン24を無効とするバイトイネーブル信号を、バイトイネーブル信号線26へ出力する。
【0028】
図1のセレクタ16は、図2に示すように、データバス22に接続される。
これにより、CPU11と周辺デバイス12〜15とは、セレクタ16を介して接続されることになる。
【0029】
以下、CPU11とセレクタ16とを接続するマスタ側のデータバス22を上位データバス22−1といい、CPUバス17のうち、上位データバス22−1を含む部分を上位CPUバス17−1という。
また、セレクタ16と周辺ブロックとを接続するスレーブ側のデータバス22を下位データバス22−2といい、CPUバス17のうち、下位データバス22−2を含む部分を下位CPUバス17−2という。
【0030】
また、セレクタ16は、バス制御部15に接続される。
バス制御部15は、選択信号と、CPUバス17上のデータを変換したデータの信号とをセレクタ16へ出力する。
リードアクセスの場合、セレクタ16は、下位CPUバス17−2およびバス制御部15の一方を選択信号に応じて選択し、上位CPUバス17−1に接続する。
ライトアクセスの場合、セレクタ16は、上位CPUバス17−1およびバス制御部15の一方を選択信号に応じて選択し、下位CPUバス17−2に接続する。
【0031】
図1のバス制御部15は、図2に示すように、上位CPUバス17−1と、下位データバス22−2と、セレクタ16とに接続される。
バス制御部15は、CPUバス17を監視し、CPUバス17上のデータを暗号化または復号化し、セレクタ16へ出力する。
また、バス制御部15は、上位CPUバス17−1のデータに基づく判断処理を実行し、判断結果に対応する選択信号をセレクタ16へ出力する。
【0032】
[情報処理装置1におけるデータの遷移]
図4は、CPU11が機密データ読み出しブロック13から機密リードデータ19を読出す場合の、図1のバス制御部15におけるデータの遷移図である。
機密データ読み出しブロック13が下位データバス22−2へ出力した機密リードデータ19は、バス制御部15に入力される。
バス制御部15は、後述する乱数発生部41により乱数データを生成し、この乱数データを用いて機密リードデータ19を暗号化する。これにより、機密リードデータ19を暗号化したスクランブルリードデータが生成される。
また、バス制御部15は、スクランブルリードデータをセレクタ16へ出力し、セレクタ16へ選択信号を出力する。
セレクタ16がスクランブルリードデータを選択すると、スクランブルリードデータは、下位データバス22−2上の機密リードデータ19の替わりに、上位データバス22−1を通じてCPU11に入力される。
また、スクランブルリードデータは、乱数データと対応付けて、後述するスクランブルメモリ43に保存される。
【0033】
図5は、CPU11が機密データ書き込みブロック14へ機密ライトデータ20を書き込む場合の、バス制御部15におけるデータの遷移図である。
CPU11は、機密ライトデータ20を暗号化したスクランブルライトデータを上位データバス22−1へ出力する。スクランブルライトデータは、バス制御部15に入力される。
バス制御部15は、入力されたスクランブルライトデータが、後述するスクランブルメモリ43に保存されているスクランブルリードデータと一致する場合、スクランブルリードデータと対応する乱数データを用いて、スクランブルライトデータを復号する。
これにより、スクランブルライトデータを復号した機密ライトデータ20が生成される。
また、バス制御部15は、機密ライトデータ20をセレクタ16へ出力し、セレクタ16へ選択信号を出力する。
セレクタ16が機密ライトデータ20を選択すると、機密ライトデータ20は、上位データバス22−1上のスクランブルライトデータの替わりに、下位データバス22−2を通じて機密データ書き込みブロック14に入力される。
また、使用されたスクランブルリードデータは、乱数データとともに、スクランブルメモリ43から削除される。
【0034】
[機密データなどへのリードアクセス動作]
図6は、図1のCPU11がリードアクセスする場合に機能するバス制御部15の構成を示すブロック図である。
図6に示すように、リードアクセス時には、バス制御部15において、乱数発生部41と、データ暗号化用の排他論理和演算部42と、スクランブルメモリ43と、リードアドレスレジスタ44と、リードアドレス比較器45とが機能する。
また、図6には、上位データバス22−1と下位データバス22−2との間に接続されたセレクタ16が示されている。
【0035】
リードアドレスレジスタ44は、CPU11に対する機密性が要求されるデータの読出し元アドレスを記憶する。
具体的には、リードアドレスレジスタ44は、図3の読出しアドレス範囲31を記憶する。
なお、リードアドレスレジスタ44は、図3の読出しアドレス範囲31および書込みアドレス範囲32の両方を記憶してもよい。
【0036】
リードアドレス比較器45は、リードアドレスレジスタ44と、アドレスバス21とが接続される。
そして、リードアドレス比較器45は、アドレスバス21上のアドレスと、リードアドレスレジスタ44のアドレス範囲とを比較する。
アドレスバス21上のアドレスがリードアドレスレジスタ44のアドレス範囲である場合、リードアドレス比較器45は、アドレス一致検出信号を出力する。
【0037】
乱数発生部41は、乱数データを発生する。
【0038】
排他論理和演算部42は、下位データバス22−2と、乱数発生部41とに接続される。
そして、排他論理和演算部42は、下位データバス22−2上のスクランブルリードデータと、乱数データとの排他論理和を演算する。
【0039】
セレクタ16は、下位データバス22−2と、排他論理和演算部42とに接続される。
そして、セレクタ16は、リードアドレス比較器45のアドレス一致検出信号(選択信号)に基づいて、下位データバス22−2および排他論理和演算部42の一方を選択する。
具体的には、セレクタ16は、選択信号が入力されている場合には排他論理和演算部42を選択し、それ以外の場合には下位データバス22−2を選択する。
また、セレクタ16は、選択した側のデータの信号を、上位データバス22−1へ出力する。
たとえば排他論理和演算部42を選択した場合、セレクタ16は、スクランブルリードデータの信号を、上位データバス22−1へ出力する。
【0040】
スクランブルメモリ43は、上位データバス22−1と、乱数発生部41と、バイトイネーブル信号線26と、リードアドレス比較器45とに接続される。
そして、スクランブルメモリ43は、リードアドレス比較器45からアドレス一致信号が入力されると、入力中のスクランブルリードデータおよび乱数データとを対応付けて、1つのデータセットとして記憶する。
スクランブルメモリ43は、バイトイネーブル信号線26に基づいて有効とされているバイトレーン24のデータを記憶する。
【0041】
また、スクランブルメモリ43は、乱数有効信号を乱数発生部41へ出力する。
乱数有効信号は、スクランブルメモリ43から出力され、スクランブルメモリ43が既に記憶しているデータセットと、入力中のデータセットとが一致する場合に無効となり、それ以外の不一致などの場合に有効となる。
乱数発生部41は、乱数有効信号が無効である場合、有効になるまで新たな乱数の発生を繰り返す。
これにより、スクランブルメモリ43に複数の同一のスクランブルリードデータが記憶されなくなり、スクランブルメモリ43に記憶される複数のスクランブルリードデータは、互いに識別可能となる。
【0042】
CPU11が機密データ読み出しブロック13にリードアクセスする場合、リードアドレス比較器45は、CPU11がCPUバス17へ出力したアドレスと、リードアドレスレジスタ44のアドレスとを比較する。
リードアドレス比較器45がアドレス一致検出信号を出力すると、セレクタ16は、排他論理和演算部42を選択する。
排他論理和演算部42は、機密データ読み出しブロック13が下位データバス22−2へ出力した機密リードデータ19と、乱数データの排他論理和を演算している。
これにより、上位データバス22−1には、排他論理和演算部42により暗号化されたデータが出力される。
CPU11は、機密リードデータ19の替わりに、この機密リードデータ19を暗号化したスクランブルデータを読み込む。
【0043】
これに対して例えばCPU11が通常データブロック12にリードアクセスする場合、リードアドレス比較器45は、CPU11がCPUバス17へ出力したアドレスが、リードアドレスレジスタ44のアドレスと一致しないと判断する。
セレクタ16は、下位データバス22−2を選択する。
これにより、上位データバス22−1には、通常データブロック12が下位データバス22−2へ出力した通常データ18が出力される。
CPU11は、通常データ18を読み込む。
【0044】
以上のように、バス制御部15は、CPU11が機密データ読み出しブロック13から読み出した機密リードデータ19をCPUバス17上で暗号化し、暗号化された機密リードデータ19をCPU11に読み込ませることができる。
【0045】
図7は、図1の情報処理装置1での機密リードデータ19の読出し動作を示すタイミングチャートである。
図7(A)はアドレスバス21、図7(B)は下位データバス22−2上のデータ、図7(C)は上位データバス22−1上のデータである。
そして、たとえば通常データ18を読み出す場合にはセレクタ16は下位データバス22−2を選択するため、通常データブロック12が下位データバス22−2へ出力した通常データ18がそのまま上位データバス22−1へ出力されている。
この場合、CPU11は、通常データブロック12から読み出した通常データ18をそのまま読み込むことができる。
【0046】
これに対して、機密リードデータ19を読み出す場合にはセレクタ16は排他論理和演算部42を選択する。このため、機密データ読み出しブロック13が下位データバス22−2へ出力した機密リードデータ19が暗号化(スクランブル化)されて上位データバス22−1へ出力されている。
この場合、CPU11は、機密データ読み出しブロック13から読み出された機密リードデータ19を暗号化した状態で読み込むことになる。
【0047】
[機密データなどへのライトアクセス動作]
図8は、図1のCPU11がライトアクセスする場合に機能するバス制御部15の構成を示すブロック図である。
【0048】
図8に示すように、ライトアクセス時には、バス制御部15において、バイトマスク部51と、スクランブルメモリ43と、データ比較器52と、データ復号用の排他論理和演算部42とが機能する。
また、バス制御部15では、ライトアドレスレジスタ54と、ライトアドレス比較器55と、デスクランブルレジスタ56と、第1論理積演算部57と、第2論理積演算部58とが機能する。
また、図8には、上位データバス22−1と下位データバス22−2との間に接続されたセレクタ16が示されている。
【0049】
ライトアドレスレジスタ54は、CPU11に対する機密性が要求されるデータの書き込み先アドレスを記憶する。
具体的には、ライトアドレスレジスタ54は、図3の書込みアドレス範囲32を記憶する。
なお、ライトアドレスレジスタ54は、図3の読出しアドレス範囲31および書込みアドレス範囲32の両方を記憶してもよい。
【0050】
ライトアドレス比較器55は、ライトアドレスレジスタ54と、アドレスバス21とが接続される。
そして、ライトアドレス比較器55は、アドレスバス21上のアドレスと、ライトアドレスレジスタ54のアドレス範囲とを比較する。
アドレスバス21上のアドレスがライトアドレスレジスタ54のアドレス範囲である場合、ライトアドレス比較器55は、たとえばハイレベルのアドレス一致検出信号を出力する。
【0051】
デスクランブルレジスタ56は、スクランブルライトデータのデスクランブル(復号)のオンオフを示す値を記憶する。デスクランブルレジスタ56の値は、CPU11により書き換え可能である。
【0052】
第1論理積演算部57は、ライトアドレス比較器55と、デスクランブルレジスタ56とに接続される。
そして、アドレス一致信号が一致を示すハイレベルの信号であり、かつ、デスクランブルレジスタ56が復号有効を示すハイレベルの信号を出力している場合、第1論理積演算部57は、ハイレベルの信号を出力する。
それ以外の場合は、第1論理積演算部57は、ローレベルの信号を出力する。
【0053】
バイトマスク部51は、上位データバス22−1と、バイトイネーブル信号線26とに接続される。
バイトマスク部51は、バイトイネーブル信号に基づいてCPU11がライトデータを出力している有効なバイトレーン24と、無効なバイトレーン24とを判別する。
また、バイトマスク部51は、無効なバイトレーン24をマスクする。具体的にはバイトマスク部51は、無効なバイトレーン24を例えば0にマスクする。
バイトマスク部51は、バス制御部15の内部バス59へ、マスクしたデータを出力する。
【0054】
スクランブルメモリ43は、バイトイネーブル信号線26に接続される。
スクランブルメモリ43は、記憶しているスクランブルリードデータを出力する。
スクランブルメモリ43は、バイトイネーブル信号に基づいて有効なバイトレーン24を判断し、有効なバイトレーン24へスクランブルリードデータを出力する。
また、スクランブルメモリ43は、無効なバイトレーン24へ0を出力する。
【0055】
データ比較器52は、バイトマスク部51と、スクランブルメモリ43とに接続される。
そして、データ比較器52は、バイトマスク部51により無効レーンをマスクされた上位データバス22−1上のスクランブルライトデータと、スクランブルメモリ43が出力するスクランブルリードデータとを比較する。
スクランブルライトデータとスクランブルリードデータとが一致する場合、データ比較器52は、データ一致検出信号を出力する。
【0056】
第2論理積演算部58は、データ比較器52と、第1論理積演算部57とに接続される。
データ比較器52がデータの一致を示すハイレベルを出力し、第1論理積演算部57がハイレベルの信号を出力している場合、第2論理積演算部58は、ハイレベルの信号を出力する。
それ以外の場合は、第2論理積演算部58は、ローレベルの信号を出力する。
【0057】
データ復号用の排他論理和演算部42は、バイトマスク部51と、スクランブルメモリ43とに接続される。
そして、排他論理和演算部42は、バイトマスク部51が内部バス59へ出力したデータを、スクランブルメモリ43から出力される乱数データにより復号する。
【0058】
セレクタ16は、内部バス59と、排他論理和演算部42と、第2論理積演算部58とに接続される。
そして、第2論理積演算部58がハイレベルの信号を出力している場合、セレクタ16は、排他論理和演算部42を選択する。
セレクタ16は、排他論理和演算部42により復号化された機密ライトデータ20を下位データバス22−2へ出力する。
また、第2論理積演算部58がローレベルの信号を出力している場合、セレクタ16は、内部バス59を選択する。
セレクタ16は、上位データバス22−1からバイトマスク部51へ入力されたスクランブルライトデータを下位データバス22−2へ出力する。
【0059】
CPU11が機密データ書き込みブロック14にライトアクセスする場合、ライトアドレス比較器55は、CPU11がCPUバス17へ出力したアドレスと、ライトアドレスレジスタ54のアドレスとを比較し、アドレス一致検出信号を出力する。
第1論理積演算部57は、デスクランブルレジスタ56がデスクランブル有効を示すハイレベルの信号を出力している場合、ハイレベルの信号を出力する。
【0060】
また、バイトマスク部51は、上位データバス22−1のうち、無効なバイトレーンを0にマスクする。
データ比較器52は、データバス22のバス幅において、マスクされた上位データバス22−1上のデータと、スクランブルメモリ43に記憶されているデータとを比較する。
これらのデータが完全に一致する場合、データ比較器52は、ハイレベルの信号を出力する。第2論理積演算部58は、ハイレベルの信号を出力する。
これにより、セレクタ16は、排他論理和演算部42を選択する。
【0061】
スクランブルメモリ43は、データの一致を判定されたデータセットの乱数データを排他論理和演算部42へ出力する。
排他論理和演算部42は、CPU11が上位データバス22−1へ出力したスクランブルライトデータと、当該スクランブルライトデータの暗号化に用いた乱数データとの排他論理和を演算する。
これにより、下位データバス22−2には、排他論理和演算部42により復号されることにより生成された機密ライトデータ20へ出力される。
機密データ書き込みブロック14は、スクランブルライトデータの替わりに、この機密ライトデータ20を書き込む。
【0062】
これに対して、例えばCPU11が通常データブロック12にライトアクセスする場合、リードアドレス比較器45は、CPU11がCPUバス17へ出力したアドレスが、リードアドレスレジスタ44のアドレスと一致しないと判断する。
セレクタ16は、上位データバス22−1を選択する。
これにより、下位データバス22−2には、CPU11が上位データバス22−1へ出力した通常データ18が出力される。
通常データブロック12には、CPU11が出力した通常データ18が書き込まれる。
【0063】
以上のように、バス制御部15は、CPU11がスクランブルライトデータを機密データ書き込みブロック14に書き込む場合に、CPU11から出力されたスクランブルライトデータをCPUバス17上で復号する。
これにより、機密データ書き込みブロック14には、復号された機密ライトデータ20が書き込まれる。
【0064】
図9は、図1の情報処理装置1での機密ライトデータ20の書き込み動作を示すタイミングチャートである。
図9(A)はアドレスバス21、図9(B)は下位データバス22−2上のデータ、図9(C)は上位データバス22−1上のデータである。
【0065】
そして、たとえば通常データ18を書き込む場合にはセレクタ16はバイトマスク部51を選択するため、CPU11が上位データバス22−1へ出力した通常データ18がそのまま下位データバス22−2へ出力されている。
この場合、CPU11は、自ら出力した書込みデータをそのまま書き込むことができる。
これに対して、スクランブルライトデータを書き込む場合にはセレクタ16は排他論理和演算部42を選択する。
CPU11が上位データバス22−1へ出力したスクランブルライトデータは、復号化(デスクランブル化)された上で下位データバス22−2へ出力されている。
この場合、CPU11が出力した暗号化された機密データは、CPUバス17上で復号化されて、機密データ書き込みブロック14に書き込まれることになる。
【0066】
[スクランブルメモリ43についての説明]
図10および図11は、図1のスクランブルメモリ43のデータ構造の説明図である。
図10に示すように、スクランブルメモリ43は、複数組のデータセットを、データサイズ毎に分類して記憶する。
データセットは、図11に示すように、機密リードデータ19を暗号化したスクランブルリードデータと、その暗号化に用いた乱数データとを有する。
【0067】
図1のCPU11は、データバス22の4個のバイトレーン24から、1個のバイトレーン24を選択するバイトアクセス、2個のバイトレーン24を選択するハーフワードアクセス、または4個のバイトレーン24を選択するワードアクセスを実行する。
スクランブルメモリ43は、このバイトアクセス、ハーフワードアクセスおよびワードアクセス毎に複数組のデータセットを記憶する。
そのため、CPU11が機密データ読み出しブロック13から機密リードデータ19を読出す場合には、スクランブルメモリ43には、図10に示すように、新たなデータセットとバイトイネーブル信号とが入力される。
そして、スクランブルメモリ43は、バイトイネーブル信号の情報から、どのデータサイズに格納するかを判断する。
【0068】
また、スクランブルメモリ43は、図11に示すように、新たに入力されたスクランブルリードデータと乱数データとを対応付けて、該当するデータサイズのデータセットとして記憶する。
例えば、有効なバイトレーンがビット15〜8で、データバスの値が「0x01234567」の場合、データバスのサイズはバイトとなるので、バイトサイズのメモリ領域を選択し、「0x45」を保存する。
ただし、作成されたスクランブルリードデータと同じ値のスクランブルリードデータがスクランブルメモリ43にすでに存在する場合は、再度乱数の生成からやり直し、異なるスクランブルリードデータが得られるまで処理を繰り返す。
なお、スクランブル化の精度は乱数の品質に依存するので、より安全性を高めたい場合は品質の良い乱数を使用するか、または単純な排他論理和演算によるスクランブル化ではなく、暗号化処理を実施してもよい。
【0069】
次に、CPU11が、機密データ読み出しブロック13から読み出したスクランブルリードデータを、スクランブルライトデータとして機密データ書き込みブロック14へ書き込む場合について説明する。
この場合、スクランブルメモリ43には、図10に示すように、新たなデータセットとバイトイネーブル信号とが入力される。
スクランブルメモリ43は、バイトイネーブル信号の情報から、どのバイトレーン24へデータを出力するのかを判断する。
スクランブルメモリ43は、特定したバイトレーン24へ、自ら記憶していた、対応するデータサイズのスクランブルリードデータを出力する。
また、スクランブルメモリ43は、対応する乱数データも出力する。
【0070】
そして、スクランブルメモリ43は、第2論理積演算部58の出力がハイレベルになるまで、複数のスクランブルリードデータを順番に出力する。
第2論理積演算部58の出力がハイレベルになると、スクランブルメモリ43は、そのときの出力を保持する。
また、出力中のデータセットが復号に使用されると、図11に示すように、スクランブルメモリ43は、当該データセットを破棄する。
スクランブルメモリ43は、たとえば第2論理積演算部58の出力がハイレベルからローレベルに変化することに基づいて、当該データセットを破棄すればよい。
【0071】
このように、スクランブルメモリ43は、有効なバイトレーン24のデータのみを記憶することにより、所定数のデータセットを記憶するために必要となる容量を削減できる。
スクランブルメモリ43からスクランブルリードデータを読み出すときは、データバス22のどのバイトレーン24が有効であるかを示すバイトイネーブル信号を参照する。
有効なバイトレーン24情報からデータバス22のサイズを確認し、データバス22のサイズに合わせたメモリ領域から、比較するスクランブルリードデータを選択する。
このとき選択するスクランブルリードデータは、有効なバイトレーン24へ出力され、無効なバイトレーン24には0が埋め込まれる。
例えば、有効なバイトレーン24がビット15〜8の場合、データバス22のサイズは1バイトとなるので、バイトサイズのメモリ領域からスクランブルリードデータを選択する。
選択されたスクランブルリードデータの値が「0x01234567」の場合、有効なバイトレーン24がビット15〜8のため、「0x45」が有効となり、他のビットは0埋めされる。
このため、最終的にスクランブルメモリ43から出力されるスクランブルリードデータの値は、「0x00004500」となる。
【0072】
データバス22の値は、無効なバイトレーン24を0でマスクするバイトマスク部51を通ってから、スクランブルリードデータと一致するかを比較される。
バイトマスク部51では、データバス22のどのバイトレーン24が有効であるかを示すバイトイネーブル信号を参照し、無効なバイトレーン24を0でマスクする。
例えば、有効なバイトレーン24がビット15〜8で、データバス22の値が「0x01234567」の場合、バイトマスク(13)から出力されるデータバス22の値は「0x00004500」となる。
【0073】
スクランブルメモリ43の容量は有限のため、スクランブルメモリ43の上限に達した場合は、古いデータに対して上書きを行い、古いデータのデスクランブルができなくなる。
よって、一度に読み出せるスクランブルリードデータの読み出しサイズは、スクランブルメモリ43のサイズまでとなる。
【0074】
なお、機密データ書き込みブロック14に、スクランブルライトデータと同じ値のデータの書き込みを行う場合(つまり、デスクランブルしないで書き込みを行いたい場合)、CPU11は、以下の処理を実施する。
すなわち、CPU11は、まず、データをデスクランブルしてしまわないように、事前にバス制御部15のデスクランブルレジスタ56を設定する。
その後、CPU11は、スクランブルライトデータの書き込みを実行する。
デスクランブルレジスタ56の設定がOnの場合には、スクランブルライトデータの書き込み時にバス制御部15においてデスクランブル処理が実行される。
【0075】
これに対して、デスクランブルレジスタ56の設定がOffの場合、ライトデータの書き込み時にバス制御部15においてデスクランブル処理が実行されない。
CPU11が書き込みを行ったデータバス22は、そのままの値で機密データ書き込みブロック14に書き込まれる。
【0076】
以上のように、本実施形態では、機密データ読み出しブロック13に記憶されている機密リードデータ19は、バス制御部15の乱数発生部41で生成した乱数データによりスクランブル化され、CPU11へ読み込まれる。
これにより、CPU11から機密リードデータ19を隠蔽できる。
また、CPU11は、スクランブルリードデータを、スクランブルライトデータとして機密データ書き込みブロック14に書き込むことができる。
この際、スクランブルライトデータは、スクランブルメモリ43に保持されている乱数データによりデスクランブルされ、機密データ書き込みブロック14に書き込まれる。
このようにCPU11は、CPU11に対して機密性を要求される機密データについては、スクランブル化された状態でしかリードライトアクセスできなくなる。
ソフトウェアによってCPU11を制御可能なソフトウェア設計者は、機密データの内容を知ることができない。
また、機密データは、機密データ読み出しブロック13と機密データ書き込みブロック14と間でCPU11により転送可能である。
【0077】
このように本実施形態では、CPU11に機密データの内容を知られることなく、機密データの転送が可能になる。
よって、本実施形態では、たとえば機密データの開示を許可されていないソフトウェア開発者がソフトウェアによってCPU11を制御可能な状態であるとしても、機密データを保護できる。
また、本実施形態では、外部の攻撃者が強制的にCPU11をテストモードに遷移させてCPU11を直接制御可能な状態だとしても、機密データを保護できる。
たとえば、機密データの開示を認められない開発者でも、機密データの転送に関するソフトウェアを開発することができる。
ソフトウェア開発用のテストモードの場合においても、機密データの安全性を確保することができる。
また、悪意のある外部の攻撃者によってCPU11が乗っ取られた場合でも、CPU11が機密データをそのまま読み出すことはできないため、機密データの機密性は保たれる。
【0078】
これに対して、本実施形態を適用しない場合には、情報処理装置では、CPU11アクセスから機密データを保護する仕組みが存在しない。このため、ソフトウェア設計者などは、情報処理装置において簡単に機密データの内容を読み出すことができる。
【0079】
以上の実施形態は、本発明の好適な実施形態の例であるが、本発明は、これに限定されるものではなく、発明の要旨を逸脱しない範囲において種々の変形または変更が可能である。
【0080】
たとえば上記実施形態では、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、およびバス制御部15は、同じCPUバス17に接続されている。
この他にも例えば、CPU11は第1バスに接続され、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14などは第2バスに接続され、情報処理装置1は第1バスと第2バスとが接続されるブリッジ回路を有してもよい。
この場合、バス制御部15は、第1バスを監視しても、第2バスを監視してもよい。
【0081】
上記実施形態では、バス制御部15は、リードアクセスの場合にはアドレスのみに基づいて、機密データ読み出しブロック13が出力した機密リードデータ19と、機密リードデータ19を暗号化したスクランブルリードデータとの選択を切り替えている。
また、バス制御部15は、ライトアクセスの場合にはアドレス、データバス22上のデータおよびバイトイネーブル信号に基づいて、CPU11が出力したスクランブルライトデータと、それを復号した機密ライトデータ20との選択を切り替えている。
この他にも例えば、バス制御部15は、ライトアクセスの場合にアドレスのみに基づいて、CPU11が出力したスクランブルライトデータと、スクランブルライトデータを復号した機密ライトデータ20との選択を切り替えてもよい。
【0082】
上記実施形態では、機密データ読み出しブロック13と、機密データ書き込みブロック14とが別々のブロックとされている。
この他にも例えば、機密データ読み出しブロック13と機密データ書き込みブロック14とが1個のブロックとされてもよい。
【0083】
上記実施形態では、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、およびバス制御部15は、CPUバス17とともに1チップの集積回路装置2に組み込まれている。
この他にも例えば、CPU11、通常データブロック12、機密データ読み出しブロック13、機密データ書き込みブロック14、およびバス制御部15は、別々の集積回路装置2に組み込まれてもよい。
【符号の説明】
【0084】
1…情報処理装置、2…集積回路装置、11…CPU(データ処理部)、13…機密データ読み出しブロック(第1被アクセス部)、14…機密データ書き込みブロック(第2被アクセス部)、15…バス制御部(バス処理部)、16…セレクタ、17…CPUバス(バス)、19…機密リードデータ(機密データ)、20…機密ライトデータ(機密データ)、21…アドレスバス、22…データバス、24…バイトレーン、41…乱数発生部、42…排他論理和演算部(暗号処理部、復号処理部)、43…スクランブルメモリ(記憶部)、51…バイトマスク部(マスク部)、52…データ比較器(比較部)、56…デスクランブルレジスタ(レジスタ)
【特許請求の範囲】
【請求項1】
データを読み込んで処理するデータ処理部と、
前記データ処理部により読み込み可能なデータとして、前記データ処理部に対する機密性が要求される機密データを記憶可能な第1被アクセス部と、
前記第1被アクセス部と前記データ処理部とを接続するバスと、
前記バスを監視し、前記バス上のデータを処理するバス処理部と
を有し、
前記バス処理部は、
前記バスを通じて前記データ処理部が前記第1被アクセス部から前記機密データを読み込む場合、前記第1被アクセス部が前記バスへ出力した機密データに暗号をかけて、暗号化された機密データを前記データ処理部に読み込ませる
情報処理装置。
【請求項2】
前記データ処理部によりデータを書き込み可能な第2被アクセス部を有し、
前記データ処理部は、
前記第1被アクセス部から読み込んだ暗号化された前記機密データを、前記バスを通じて前記第2被アクセス部に書き込み、
前記バスアクセス部は、
前記バスを通じて前記データ処理部が前記第2被アクセス部に暗号化された前記機密データを書き込む場合、前記データ処理部が前記バスへ出力した暗号化された機密データの暗号を解除して、復号された機密データを前記第2被アクセス部に書き込ませる
請求項1記載の情報処理装置。
【請求項3】
前記バスアクセス部は、
前記データ処理部により値を設定可能なレジスタを有し、
前記レジスタの値に応じて前記暗号化された機密データの暗号の解除を制御する
請求項2記載の情報処理装置。
【請求項4】
前記バス処理部は、
前記第2被アクセス部にアクセスする場合に前記データ処理部が用いるアドレスと、前記データ処理部が前記バスへ出力したアドレスとを比較し、これらのアドレスが一致する場合に前記データ処理部が前記バスへ出力した暗号化されたデータの暗号を解除する
請求項2または3記載の情報処理装置。
【請求項5】
前記バス処理部は、
前記第1被アクセス部にアクセスする場合に前記データ処理部が用いるアドレスと、前記データ処理部が前記バスへ出力したアドレスとを比較し、これらのアドレスが一致する場合に前記データ処理部が前記バスを通じて読み込む機密データに暗号をかける
請求項1から4のいずれか一項記載の情報処理装置。
【請求項6】
前記バス処理部は、
前記機密データを暗号化するための乱数を発生する乱数発生部と、
前記乱数を用いて前記機密データを暗号化する暗号処理部と、
暗号化された機密データと前記乱数とを対応付けて記憶する記憶部と、
前記記憶部に記憶された前記乱数を用いて、前記データ処理部が前記バスへ出力した暗号化された機密データを復号する復号処理部と、
前記データ処理部が前記バスへ出力した暗号化された機密データと前記記憶部に記憶されている前記暗号化された機密データとを比較する比較部と、
前記比較部で比較されるデータ同士が一致する場合に、前記データ処理部が前記バスへ出力したデータの替わりに、前記復号処理部により復号された機密データを前記バスを通じて前記第2被アクセス部へ出力するセレクタと
を有する請求項2から5のいずれか一項記載の情報処理装置。
【請求項7】
前記バスは、
前記データ処理部がデータサイズを切り替えてデータを入出力可能な複数のバイトレーンからなるデータバスを有し、
前記バス処理部は、
前記データバスについて、前記データ処理部が有効なデータを出力していないバイトレーンをマスクするマスク部を有し、
前記記憶部は、
前記データバスの有効なデータが出力されているデータサイズの前記暗号化された機密データを、前記データ処理部が有効なデータを出力しているバイトレーンへ出力し、
前記比較部は、
前記マスク部によりマスクされたデータバス上のデータと、前記記憶部が出力した機密データとを、前記データバスの前記複数のバイトレーンにおいて比較する
請求項6記載の情報処理装置。
【請求項8】
前記データ処理部、前記第1被アクセス部、前記バス、および前記バス処理部は、1個の集積回路装置に組み込まれている
請求項1から7のいずれか一項記載の情報処理装置。
【請求項9】
データを読み込んで処理するデータ処理部と、前記データ処理部に対する機密性が要求される機密データを前記データ処理部により読み込み可能に記憶する第1被アクセス部とがバスにより接続された情報処理装置についての前記バス上で、前記データ処理部による前記第1被アクセス部からの前記機密データの読み込みを検出するステップと、
前記バス上で前記機密データの読み込みを検出した場合に、前記第1被アクセス部が前記バスへ出力した機密データに暗号をかけて、暗号化された機密データを前記データ処理部に読み込ませるステップと
を備える情報処理方法。
【請求項1】
データを読み込んで処理するデータ処理部と、
前記データ処理部により読み込み可能なデータとして、前記データ処理部に対する機密性が要求される機密データを記憶可能な第1被アクセス部と、
前記第1被アクセス部と前記データ処理部とを接続するバスと、
前記バスを監視し、前記バス上のデータを処理するバス処理部と
を有し、
前記バス処理部は、
前記バスを通じて前記データ処理部が前記第1被アクセス部から前記機密データを読み込む場合、前記第1被アクセス部が前記バスへ出力した機密データに暗号をかけて、暗号化された機密データを前記データ処理部に読み込ませる
情報処理装置。
【請求項2】
前記データ処理部によりデータを書き込み可能な第2被アクセス部を有し、
前記データ処理部は、
前記第1被アクセス部から読み込んだ暗号化された前記機密データを、前記バスを通じて前記第2被アクセス部に書き込み、
前記バスアクセス部は、
前記バスを通じて前記データ処理部が前記第2被アクセス部に暗号化された前記機密データを書き込む場合、前記データ処理部が前記バスへ出力した暗号化された機密データの暗号を解除して、復号された機密データを前記第2被アクセス部に書き込ませる
請求項1記載の情報処理装置。
【請求項3】
前記バスアクセス部は、
前記データ処理部により値を設定可能なレジスタを有し、
前記レジスタの値に応じて前記暗号化された機密データの暗号の解除を制御する
請求項2記載の情報処理装置。
【請求項4】
前記バス処理部は、
前記第2被アクセス部にアクセスする場合に前記データ処理部が用いるアドレスと、前記データ処理部が前記バスへ出力したアドレスとを比較し、これらのアドレスが一致する場合に前記データ処理部が前記バスへ出力した暗号化されたデータの暗号を解除する
請求項2または3記載の情報処理装置。
【請求項5】
前記バス処理部は、
前記第1被アクセス部にアクセスする場合に前記データ処理部が用いるアドレスと、前記データ処理部が前記バスへ出力したアドレスとを比較し、これらのアドレスが一致する場合に前記データ処理部が前記バスを通じて読み込む機密データに暗号をかける
請求項1から4のいずれか一項記載の情報処理装置。
【請求項6】
前記バス処理部は、
前記機密データを暗号化するための乱数を発生する乱数発生部と、
前記乱数を用いて前記機密データを暗号化する暗号処理部と、
暗号化された機密データと前記乱数とを対応付けて記憶する記憶部と、
前記記憶部に記憶された前記乱数を用いて、前記データ処理部が前記バスへ出力した暗号化された機密データを復号する復号処理部と、
前記データ処理部が前記バスへ出力した暗号化された機密データと前記記憶部に記憶されている前記暗号化された機密データとを比較する比較部と、
前記比較部で比較されるデータ同士が一致する場合に、前記データ処理部が前記バスへ出力したデータの替わりに、前記復号処理部により復号された機密データを前記バスを通じて前記第2被アクセス部へ出力するセレクタと
を有する請求項2から5のいずれか一項記載の情報処理装置。
【請求項7】
前記バスは、
前記データ処理部がデータサイズを切り替えてデータを入出力可能な複数のバイトレーンからなるデータバスを有し、
前記バス処理部は、
前記データバスについて、前記データ処理部が有効なデータを出力していないバイトレーンをマスクするマスク部を有し、
前記記憶部は、
前記データバスの有効なデータが出力されているデータサイズの前記暗号化された機密データを、前記データ処理部が有効なデータを出力しているバイトレーンへ出力し、
前記比較部は、
前記マスク部によりマスクされたデータバス上のデータと、前記記憶部が出力した機密データとを、前記データバスの前記複数のバイトレーンにおいて比較する
請求項6記載の情報処理装置。
【請求項8】
前記データ処理部、前記第1被アクセス部、前記バス、および前記バス処理部は、1個の集積回路装置に組み込まれている
請求項1から7のいずれか一項記載の情報処理装置。
【請求項9】
データを読み込んで処理するデータ処理部と、前記データ処理部に対する機密性が要求される機密データを前記データ処理部により読み込み可能に記憶する第1被アクセス部とがバスにより接続された情報処理装置についての前記バス上で、前記データ処理部による前記第1被アクセス部からの前記機密データの読み込みを検出するステップと、
前記バス上で前記機密データの読み込みを検出した場合に、前記第1被アクセス部が前記バスへ出力した機密データに暗号をかけて、暗号化された機密データを前記データ処理部に読み込ませるステップと
を備える情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−175464(P2011−175464A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−39104(P2010−39104)
【出願日】平成22年2月24日(2010.2.24)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願日】平成22年2月24日(2010.2.24)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]