(57)【要約】【課題】処理速度の低下を防ぎつつ、コンピュータへの不正アクセス等の不正行為を防止することのできるプロセッサを提供する。【解決手段】メモリに格納されたデータを利用して演算を行うプロセッサ１０であって、メモリ２０において発生される乱数と同一の乱数を発生する乱数発生器１３０と、乱数発生器１３０が発生した乱数と、メモリ２０におけるアクセスすべき領域のアドレスとの排他的論理和演算を行う排他的論理和演算手段１４０と、排他的論理和演算手段１４０による演算結果である演算後アドレスを送出する演算後アドレス送出手段１４０とを備えた。【選択図】        図１
2006277411.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されたデータを利用して演算を行うプロセッサであって、
メモリにおいて発生される乱数と同一の乱数を発生する乱数発生器と、
前記乱数発生器が発生した乱数と、前記メモリにおけるアクセスすべき領域のアドレスとの排他的論理和演算を行う排他的論理和演算手段と、
前記排他的論理和演算手段による演算結果である演算後アドレスを送出する演算後アドレス送出手段と
を備えたことを特徴とするプロセッサ。
【請求項２】
当該プロセッサが送出するデータを、当該データを格納すべき前記メモリにおける領域のアドレスに基づいて暗号化し、暗号化データを得る暗号手段と、
前記暗号手段により暗号化された前記暗号化データを送出する暗号化データ送出手段と
をさらに備えたことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記暗号手段は、前記データに含まれる複数の部分データの配列を、前記データのアドレスに基づいて置換することにより前記暗号化データを得ることを特徴とする請求項２に記載のプロセッサ。
【請求項４】
データを一時的に格納するキャッシュメモリと、
前記キャッシュメモリに格納されているキャッシュライン単位のデータを格納すべき前記メモリの連続するアドレスのアクセス順序を、所定の情報に基づいて決定するアクセス順序決定手段と
をさらに備え、
前記演算後アドレス送出手段は、前記アクセス順序決定手段によって決定された順序で前記演算後アドレスを送出することを特徴とする請求項１に記載のプロセッサ。
【請求項５】
データを一時的に格納するキャッシュメモリと、
前記キャッシュメモリにおけるキャッシュライン単位のデータが格納されている連続する複数のアドレスのアクセス順序を、所定の情報に基づいて決定するアクセス順序決定手段と
をさらに備え、
前記演算後アドレス送出手段は、前記アクセス順序決定手段によって決定された順序で前記演算後アドレスを送出することを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記アドレスに基づいて暗号化された暗号化データを取得する暗号化データ取得手段と、
前記暗号化データ取得手段が取得した前記暗号化データを、前記アドレスに基づいて復号化することによりデータを得る復号手段と
をさらに備えたことを特徴とする請求項１に記載のプロセッサ。
【請求項７】
前記暗号化データ取得手段は、前記アドレスに基づいて、前記データに含まれる部分データの配列が置換された暗号化データを取得し、
前記復号手段は、前記暗号化データ取得手段が取得した前記暗号化データに含まれる前記部分データの配列を、前記アドレスに基づいて置換することにより前記データを得ることを特徴とする請求項６に記載のプロセッサ。
【請求項８】
プロセッサが利用するデータを格納するメモリであって、
前記プロセッサがアクセスすべき、当該メモリにおけるアドレスと、前記プロセッサにおいて発生される乱数との排他的論理和演算の結果である演算後アドレスを、前記プロセッサから取得する演算後アドレス取得手段と、
前記プロセッサが発生する乱数と同一の乱数を発生する乱数発生手段と、
前記演算後アドレス取得手段が取得した前記演算後アドレスと、前記乱数発生手段が発生した乱数との排他的論理和演算を行うことにより前記データのアドレスを特定する排他的論理和演算手段と、
前記排他的論理和演算手段によって特定された前記アドレスへのアクセスを許可する制御手段と
を備えたことを特徴とするメモリ。
【請求項９】
前記プロセッサから、前記データのアドレスに基づいて暗号化された暗号化データを取得する暗号化データ取得手段と、
前記暗号化データ取得手段が取得した前記暗号化データを前記排他的論理和演算手段が特定した前記アドレスに基づいて復号化する復号化手段と
をさらに備えたことを特徴とする請求項８に記載のメモリ。
【請求項１０】
前記プロセッサから、前記データのアドレスに基づいて暗号化された暗号化データを取得する暗号化データ取得手段をさらに備え、
前記制御手段は、前記暗号化データ取得手段が取得した前記暗号化データを前記アドレスに格納することを特徴とする請求項８に記載のメモリ。
【請求項１１】
前記暗号化データ取得手段は、前記データに含まれる複数の部分データの配列が前記アドレスに基づいて置換された前記暗号化データを取得することを特徴とする請求項９または１０に記載のメモリ。
【請求項１２】
演算を行うプロセッサと、当該プロセッサが利用するデータを格納するメモリとを備えたコンピュータシステムであって、
前記プロセッサは、
メモリにおいて発生される乱数と同一の乱数を発生する乱数発生器と、
前記乱数発生器が発生した乱数と、前記メモリにおけるアクセスすべき領域のアドレスとの排他的論理和演算を行う排他的論理和演算手段と、
前記排他的論理和演算手段による演算結果である演算後アドレスを送出する演算後アドレス送出手段と
を有し、
前記メモリは、
前記プロセッサから前記演算後アドレスを取得する演算後アドレス取得手段と、
前記プロセッサの前記乱数発生器が発生する乱数と同一の乱数を発生する乱数発生手段と、
前記演算後アドレス取得手段が取得した前記演算後アドレスと、前記乱数発生手段が発生した乱数との排他的論理和演算を行うことにより、前記アクセスすべき領域のアドレスを特定する排他的論理和演算手段と、
前記排他的論理和演算手段によって特定された前記アドレスへのアクセスを許可する制御手段と
を有することを特徴とするコンピュータシステム。
【請求項１３】
演算を行うプロセッサと、当該プロセッサが利用するデータを格納するメモリとの間のデータ転送方法であって、
前記プロセッサが、前記メモリにおいて発生される乱数と同一の乱数を発生させる乱数発生ステップと、
前記プロセッサが、前記乱数発生ステップにおいて発生した乱数と、前記メモリにおける前記プロセッサがアクセスすべき領域のアドレスとの排他的論理和演算を行う排他的論理和演算ステップと、
前記プロセッサが、前記排他的論理和演算ステップにおいて得られた演算結果である演算後アドレスを送出する演算後アドレス送出ステップと、
前記メモリが、前記プロセッサから前記演算後アドレスを取得する演算後アドレス取得ステップと、
前記メモリが、前記乱数発生ステップにおいて前記プロセッサが発生した乱数と同一の乱数を発生させる乱数発生ステップと、
前記メモリが、前記演算後アドレス取得ステップにおいて取得した前記演算後アドレスと、前記乱数発生ステップにおいて前記メモリが発生させた乱数との排他的論理和演算を行うことにより前記アクセスすべき領域のアドレスを特定する排他的論理和演算ステップと、
前記メモリが、前記排他的論理和演算ステップにおいて特定された前記アドレスへのアクセスを許可する制御ステップと
を有することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算を行うプロセッサと、当該プロセッサが利用するデータを格納するメモリと、プロセッサおよびメモリを備えたコンピュータシステムと、コンピュータシステムにおけるデータ転送方法に関するものである。
【背景技術】
【０００２】
デジタルカメラ、デジタルテレビ、ＤＶＤプレーヤ、ＤＶＤ／ＨＤＤレコーダ、ゲーム機、携帯電話、携帯型オーディオプレーヤ、自動車の制御など、数多くの機器にコンピュータが組み込まれている。このようなコンピュータを組み込んだ機器やシステムは、著作権保護されたコンテンツの処理を行っている。また、個人情報や課金情報などの重要な情報を扱っている。
【０００３】
このような機器においては、機器を不正に改造して、暗号を解いた後のコンテンツを不正にコピーしたり、不正なプログラムを実行させて個人情報を取り出したり、課金情報を改竄するなどの不正行為が問題となっている。
【０００４】
プロセッサとメモリを接続するバス上の信号を観測することによりデータ（プログラムも含む）が不正に取り出されるのを防ぐ方法としては、プロセッサがメモリにデータを書き込む時には暗号化して書き込み、暗号化されたデータをメモリから読み出したプロセッサは復号してから処理を行う方法が知られている（例えば、「特許文献１」参照）。これにより、プロセッサとメモリをつなぐバス上には暗号化したデータのみが流れることとなり、復号する鍵を知らない限りデータを読むことができない。
【０００５】
【特許文献１】特開２００３−２９８５６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、データを暗号化する場合、第三者による解読を防止するため、例えば公開鍵暗号などの強力な暗号を用いることが必要になる。しかし、強力な暗号は暗号化や復号の処理コストが大きく、プロセッサの処理速度を向上することができない。
【０００７】
本発明は、上記に鑑みてなされたものであって、処理速度の低下を防ぎつつ、コンピュータへの不正アクセス等の不正行為を防止することのできるプロセッサ、メモリ、コンピュータシステムおよびデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、メモリに格納されたデータを利用して演算を行うプロセッサであって、メモリにおいて発生される乱数と同一の乱数を発生する乱数発生器と、前記乱数発生器が発生した乱数と、前記メモリにおけるアクセスすべき領域のアドレスとの排他的論理和演算を行う排他的論理和演算手段と、前記排他的論理和演算手段による演算結果である演算後アドレスを送出する演算後アドレス送出手段とを備えたことを特徴とする。
【０００９】
また、本発明の他の形態は、プロセッサが利用するデータを格納するメモリであって、前記プロセッサがアクセスすべき、当該メモリにおけるアドレスと、前記プロセッサにおいて発生される乱数との排他的論理和演算の結果である演算後アドレスを、前記プロセッサから取得する演算後アドレス取得手段と、前記プロセッサが発生する乱数と同一の乱数を発生する乱数発生手段と、前記演算後アドレス取得手段が取得した前記演算後アドレスと、前記乱数発生手段が発生した乱数との排他的論理和演算を行うことにより前記データのアドレスを特定する排他的論理和演算手段と、前記排他的論理和演算手段によって特定された前記アドレスへのアクセスを許可する制御手段とを備えたことを特徴とする。
【００１０】
また、本発明の他の形態は、演算を行うプロセッサと、当該プロセッサが利用するデータを格納するメモリとを備えたコンピュータシステムであって、前記プロセッサは、メモリにおいて発生される乱数と同一の乱数を発生する乱数発生器と、前記乱数発生器が発生した乱数と、前記メモリにおけるアクセスすべき領域のアドレスとの排他的論理和演算を行う排他的論理和演算手段と、前記排他的論理和演算手段による演算結果である演算後アドレスを送出する演算後アドレス送出手段とを有し、前記メモリは、前記プロセッサから前記演算後アドレスを取得する演算後アドレス取得手段と、前記プロセッサの前記乱数発生器が発生する乱数と同一の乱数を発生する乱数発生手段と、前記演算後アドレス取得手段が取得した前記演算後アドレスと、前記乱数発生手段が発生した乱数との排他的論理和演算を行うことにより、前記アクセスすべき領域のアドレスを特定する排他的論理和演算手段と、前記排他的論理和演算手段によって特定された前記アドレスへのアクセスを許可する制御手段とを有することを特徴とする。
【００１１】
また、本発明は、演算を行うプロセッサと、当該プロセッサが利用するデータを格納するメモリとの間のデータ転送方法であって、前記プロセッサが、前記メモリにおいて発生される乱数と同一の乱数を発生させる乱数発生ステップと、前記プロセッサが、前記乱数発生ステップにおいて発生した乱数と、前記メモリにおける前記プロセッサがアクセスすべき領域のアドレスとの排他的論理和演算を行う排他的論理和演算ステップと、前記プロセッサが、前記排他的論理和演算ステップにおいて得られた演算結果である演算後アドレスを送出する演算後アドレス送出ステップと、前記メモリが、前記プロセッサから前記演算後アドレスを取得する演算後アドレス取得ステップと、前記メモリが、前記乱数発生ステップにおいて前記プロセッサが発生した乱数と同一の乱数を発生させる乱数発生ステップと、前記メモリが、前記演算後アドレス取得ステップにおいて取得した前記演算後アドレスと、前記乱数発生ステップにおいて前記メモリが発生させた乱数との排他的論理和演算を行うことにより前記アクセスすべき領域のアドレスを特定する排他的論理和演算ステップと、前記メモリが、前記排他的論理和演算ステップにおいて特定された前記アドレスへのアクセスを許可する制御ステップとを有することを特徴とする。
【発明の効果】
【００１２】
本発明にかかるプロセッサは、乱数発生器が、メモリにおいて発生される乱数と同一の乱数を発生し、排他的論理和演算手段が、乱数発生器が発生した乱数と、メモリにおけるアクセスすべき領域のアドレスとの排他的論理和演算を行い、演算後アドレス送出手段が、排他的論理和演算手段による演算結果である演算後アドレスを送出するので、処理速度の低下を防ぎつつ、コンピュータへの不正アクセス等の不正行為を防止することができるという効果を奏する。
【００１３】
また、本発明の他の形態にかかるメモリは、演算後アドレス取得手段が、プロセッサがアクセスすべき、当該メモリにおけるアドレスと、プロセッサにおいて発生される乱数との排他的論理和演算の結果である演算後アドレスを、プロセッサから取得し、乱数発生手段が、プロセッサが発生する乱数と同一の乱数を発生し、排他的論理和演算手段が、演算後アドレス取得手段が取得した演算後アドレスと、乱数発生手段が発生した乱数との排他的論理和演算を行うことによりデータのアドレスを特定し、制御手段が、排他的論理和演算手段によって特定されたアドレスへのアクセスを許可するので、処理速度の低下を防ぎつつ、コンピュータへの不正アクセス等の不正行為を防止することができるという効果を奏する。
【００１４】
また、本発明の他の形態にかかるコンピュータシステムは、プロセッサにおいて、乱数発生器が、メモリにおいて発生される乱数と同一の乱数を発生し、排他的論理和演算手段が、乱数発生器が発生した乱数と、メモリにおけるアクセスすべき領域のアドレスとの排他的論理和演算を行い、演算後アドレス送出手段が、排他的論理和演算手段による演算結果である演算後アドレスを送出し、メモリにおいて、演算後アドレス取得手段が、プロセッサから演算後アドレスを取得し、乱数発生手段が、プロセッサの乱数発生器が発生する乱数と同一の乱数を発生し、排他的論理和演算手段が、演算後アドレス取得手段が取得した演算後アドレスと、乱数発生手段が発生した乱数との排他的論理和演算を行うことにより、アクセスすべき領域のアドレスを特定し、制御手段が、排他的論理和演算手段によって特定されたアドレスへのアクセスを許可するので、処理速度の低下を防ぎつつ、コンピュータへの不正アクセス等の不正行為を防止することができるという効果を奏する。
【００１５】
また、本発明の他の形態にかかるプロセッサとメモリとの間のデータ転送方法は、乱数発生ステップにおいて、プロセッサが、メモリにおいて発生される乱数と同一の乱数を発生させ、排他的論理和演算ステップにおいて、プロセッサが、乱数発生ステップにおいて発生した乱数と、メモリにおけるプロセッサがアクセスすべき領域のアドレスとの排他的論理和演算を行い、演算後アドレス送出ステップにおいて、プロセッサが、排他的論理和演算ステップにおいて得られた演算結果である演算後アドレスを送出し、演算後アドレス取得ステップにおいて、メモリが、プロセッサから演算後アドレスを取得し、乱数発生ステップにおいて、メモリが、乱数発生ステップにおいてプロセッサが発生した乱数と同一の乱数を発生させ、排他的論理和演算ステップにおいて、メモリが、演算後アドレス取得ステップにおいて取得した演算後アドレスと、乱数発生ステップにおいてメモリが発生させた乱数との排他的論理和演算を行うことによりアクセスすべき領域のアドレスを特定し、制御ステップにおいて、メモリが、排他的論理和演算ステップにおいて特定されたアドレスへのアクセスを許可するので、処理速度の低下を防ぎつつ、コンピュータへの不正アクセス等の不正行為を防止することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明にかかるプロセッサ、メモリ、コンピュータシステムおよびデータ転送方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１７】
（実施の形態１）
図１は、実施の形態１にかかるコンピュータシステム１の全体構成を示すブロック図である。コンピュータシステム１は、プロセッサ１０とメモリ２０とを備えている。プロセッサ１０は、記憶制御装置１００と、演算装置１１０と、制御装置１２０と、乱数発生器１３０と、排他的論理和演算器１４０とを有している。メモリ２０は、記憶素子２００と、乱数発生器２３０と、排他的論理和演算器２４０とを有している。また、プロセッサ１０とメモリ２０とは、バスを介して接続している。
【００１８】
バスとしては、アドレスバス３００と、データバス３１０と、コントロールバス３２０とがある。アドレスバス３００には、記憶素子を指定するアドレス信号が流れる。データバス３１０には、指定したアドレスに対応するデータ信号が流れる。コントロールバス３２０には、読み書きを指示するコントロール信号が流れる。
【００１９】
プロセッサ１０の記憶制御装置１００は、メモリ２０からデータを読み込む。また、メモリ２０にデータを書き込む。演算装置１１０は、一時的にデータを記憶するレジスタを有している。演算装置１１０は、記憶制御装置１００を介してメモリ２０からデータを取得し、レジスタを利用してデータの加工を行う。制御装置１２０は、演算装置１１０におけるプログラムの実行を管理する。
【００２０】
乱数発生器１３０は、設定されたシード（種）、すなわち初期値に基づいて定まる乱数系列を生成する。本実施の形態にかかる乱数発生器１３０は、アドレスと同じビット長の乱数を生成する。乱数発生器１３０としては、具体的には、リニアフィードバックシフトレジスタ（ＬＦＳＲ）を利用する。
【００２１】
排他的論理和演算器１４０は、乱数発生器１３０が生成した乱数と、記憶制御装置１００を介して取得したアドレスとの排他的論理和を算出する。すなわち、アドレスバス３００上に出力すべきアドレスとの排他的論理和を算出する。
【００２２】
なお、本実施の形態にかかる排他的論理和演算器１４０は、特許請求の範囲に記載の排他的論理和演算手段および演算後アドレス送出手段に対応する。
【００２３】
メモリ２０の記憶素子２００は、演算装置１１０が利用するデータなどを記憶している。乱数発生器２３０は、乱数発生器１３０と同様に設定されたシードに基づいて定まる乱数系列を生成する。排他的論理和演算器２４０は、排他的論理和演算器１４０と同様に乱数発生器２３０が生成した乱数との排他的論理和を算出する。乱数発生器１３０と乱数発生器２３０は、同一のシードに対する乱数系列を発生する。
【００２４】
なお、本実施の形態にかかる排他的論理和演算器２４０は、特許請求の範囲に記載の排他的論理和演算手段および演算後アドレス送出手段に対応する。
【００２５】
例えば、プロセッサ１０からメモリ２０にアドレスバス３００を介してアドレス「Ａ」を送る場合、排他的論理和演算器１４０は、対象となるアドレス「Ａ」と乱数「Ｂ」との排他的論理和「Ｃ」を算出する。そして、この排他的論理和「Ｃ」がアドレスバス３００を介してメモリ２０に送られる。
【００２６】
メモリ２０は、この排他的論理和「Ｃ」を受け取る。そして、排他的論理和演算器２４０は、受け取った値「Ｃ」と乱数発生器２３０が生成した乱数「Ｂ」との排他的論理和を算出する。乱数発生器１３０と乱数発生器２３０は同一の乱数を発生している。したがって、排他的論理和演算器２４０による演算により得られた値はアドレス「Ａ」である。
【００２７】
そして、記憶素子２００のうち得られたアドレス「Ａ」により指定される領域に対しコントロール信号で指定された読み書き処理が行われる。
【００２８】
このように、アドレスバス３００には、アドレスの排他的論理和「Ｃ」が流れるのみであるので、悪意の第三者がアドレスバス３００を流れるアドレスを読み出した場合であっても、アドレスそのものが特定されるのを防ぐことができる。
【００２９】
なお、セキュリティを向上させる観点からは、乱数発生器１３０および乱数発生器２３０は、プロセッサ１０からメモリ２０にアクセスする度に新しい乱数を生成するのが好ましい。この場合、乱数発生器１３０および乱数発生器２３０が同一のタイミングで生成する乱数は同一である。
【００３０】
このように、アドレスを暗号化することで、たとえデータバス３１０のモニターによってデータを獲得できた場合であっても、対応するアドレスを特定することができないので、メモリの状態を再現することができない。
【００３１】
また、コンピュータの扱うデータには値が０であることが多いのに対し、アドレスには０は少ない。また、ＤＲＡＭなどのようにアドレスの上位と下位を分けて指定するメモリの場合には、たとえアドレスをインクリメントしながらアクセスする場合でもアドレスバス上ではアドレスの上位が混在して流れるため必ずしも単調にインクリメントしないなど、データを暗号化するのに比べてアドレスを暗号化する方が暗号の解読に対して強くなる。
【００３２】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００３３】
そうした第１の変更例としては、乱数発生器１３０および乱数発生器２３０がシードを共有する場合には、プロセッサ１０とメモリ２０が同一のシードを安全に共有する必要がある。この観点から、例えば、プロセッサ１０がシードを決定し、そのシードを暗号化してメモリ２０の排他的論理和演算器２４０に伝えることとしてもよい。
【００３４】
このときの暗号化の方法としては、共通鍵暗号を用いてもよい。また、公開鍵暗号を用いてもよい。また、起動時にのみプロセッサとメモリの間で乱数のシードを共有するだけでなく、動作中も新しいシードに変更して乱数発生の系列を変更するように実施することが望ましい。
【００３５】
また、第２の変更例としては、本実施の形態においては、プロセッサ１０とメモリ２０の間のバスを流れるアドレスを暗号化する場合について説明したが、これに限定されるものではない。例えば、ビデオプロセッサや入出力装置とメモリやプロセッサの間のバスにも同様に実施できる。
【００３６】
（実施の形態２）
図２は、実施の形態２にかかるコンピュータシステム１の全体構成を示すブロック図である。実施の形態２にかかるコンピュータシステム１のプロセッサ１０は、実施の形態１にかかるプロセッサ１０の構成に加えて暗号復号装置１５０をさらに有している。また、実施の形態２にかかるメモリ２０は、実施の形態１にかかるメモリ２０の構成に加えて暗号復号装置２５０をさらに有している。
【００３７】
暗号復号装置１５０は、排他的論理和演算器１４０が排他的論理和を算出する前のアドレスまたはその一部を用いてデータバス３１０に送出するデータを暗号化する。暗号復号装置２５０は、排他的論理和演算器２４０が算出したアドレスまたはその一部を鍵としてデータを復号化する。なお、暗号化および復号化には、共通鍵暗号方式を利用する。
【００３８】
このように、実施の形態２にかかるコンピュータシステム１においては、アドレスの値そのものではなく排他的論理和の値がアドレスバス３００に送出される。すなわち、アドレスは暗号化されて送出される。したがって、アドレスバス３００をモニターしてもアドレスの値は特定できない。
【００３９】
具体的にはプロセッサ１０がメモリ２０にデータを書き込む場合には、暗号復号装置１５０がデータを暗号化してデータバス３１０に送出する。そして、暗号復号装置２５０は、データバス３１０を介して受け取った暗号化されたデータを排他的論理和演算器２４０により得られたアドレスまたはその一部を用いて復号化する。
【００４０】
逆に、プロセッサ１０がメモリ２０を読み出す場合には、暗号復号装置２５０がデータを暗号化してデータバス３１０に送出する。そして、暗号復号装置１５０は、データバス３１０を介して受け取った暗号化されたデータをアドレスを用いて復号化する。
【００４１】
このように、アドレスの排他的論理和をアドレスバス３００に送出するのに加えて、さらにデータを暗号化してデータバス３１０に送出することにより、セキュリティの向上を図ることができる。
【００４２】
実施の形態２にかかるコンピュータシステム１のこれ以外の構成および処理は、実施の形態１にかかるコンピュータシステム１の構成および処理と同様である。
【００４３】
他の例としては、本実施の形態においては、暗号方式として、共通鍵暗号方式を用いたが、これに限定されるものではなく、例えば公開鍵暗号方式を利用してもよい。
【００４４】
（実施の形態３）
図３は、実施の形態３にかかるコンピュータシステム１の全体構成を示すブロック図である。実施の形態３にかかるコンピュータシステム１のプロセッサ１０は、暗号復号装置１５０にかえて、置換逆置換回路１６０を有する。また、メモリ２０は、暗号復号装置２５０にかえて、置換逆置換回路２６０を有する。
【００４５】
実施の形態３にかかるコンピュータシステム１においては、置換逆置換回路１６０は、データのビットまたはワード単位で順番を置換する。また、置換されているデータを逆置換する。すなわち、元の並び順に戻す。置換逆置換回路２６０も同様にデータのビット等の単位で順番を置換または逆置換する。
【００４６】
例えば、図３に示すように、「Ａ」、「Ｂ」、「Ｃ」および「Ｄ」の４バイトからなる１ワードをメモリ２０に書き込む際には、置換逆置換回路１６０は、４バイトの並び順を置換する。具体的には、排他的論理和が算出される前のアドレスの値によって定まる置換方法にしたがって、バイト単位で位置を入れ替える。なお、より具体的には、置換逆置換回路１６０は、アドレスに基づいて置換方法を決定するためのルールを格納しており、このルールにしたがって、置換方法を決定する。置換逆置換回路１６０は、例えばアドレス値と置換方法とを対応付ける対応テーブルを格納してもよい。
【００４７】
図３に示す例においては、置換逆置換回路１６０は、「Ａ」、「Ｂ」、「Ｃ」および「Ｄ」の並び順を「Ｃ」、「Ａ」、「Ｄ」および「Ｂ」に置換している。そして、この置換後のデータがデータバス３１０に送出される。
【００４８】
置換逆置換回路２６０は、データバス３１０から置換後のデータを受け取る。そして、排他的論理和演算器２４０によって得られたアドレスによって決まる置換方法に従って定まる置換方法、すなわち置換逆置換回路１６０が置換した置換方法と同一の置換方法にしたがって、逆置換を行う。これにより、置換前のデータ「Ａ」、「Ｂ」、「Ｃ」および「Ｄ」を得ることができる。このデータをメモリ２０に書き込む。
【００４９】
実施の形態３にかかるコンピュータシステム１のこれ以外の構成および処理は、他の実施の形態にかかるコンピュータシステム１の構成および処理と同様である。
【００５０】
他の例としては、本実施の形態においては４バイトからなる１ワードを単位としてデータの並び替えを行ったが、このときの基本範囲は本実施の形態に限定されるものではない。例えば、２ワードを単位としてデータの並び替えを行ってもよい。
【００５１】
（実施の形態４）
図４は、実施の形態４にかかるコンピュータシステム１の全体構成を示すブロック図である。実施の形態４にかかるコンピュータシステム１は、暗号復号装置２５０を備えない点を除いて、実施の形態２にかかるコンピュータシステム１の構成と同様である。
【００５２】
実施の形態４にかかるコンピュータシステム１においては、プロセッサ１０は、暗号復号装置１５０によって暗号化されたデータをデータバス３１０に送出する。そして、メモリ２０は、データバス３１０から受け取った暗号化されたデータを、暗号化された状態のまま記憶素子２００に記憶する。そして、このデータをプロセッサ１０が読み出す場合には、プロセッサ１０の暗号復号装置１５０が再び暗号化に用いたアドレスにより復号化する。
【００５３】
このように、記憶素子２００に暗号化したデータを記憶しておくことにより、悪意の第三者が記憶素子２００に格納されているデータを読み出した場合であっても、データを特定することはできないので、セキュリティを向上させることができる。
【００５４】
なお、実施の形態４において説明した構成を実施の形態３に適用してもよいことはいうまでもない。
【００５５】
（実施の形態５）
次に、実施の形態５にかかるコンピュータシステム１について説明する。実施の形態５にかかるコンピュータシステム１の全体構成は、図１を参照しつつ説明した実施の形態１にかかるコンピュータシステム１の全体構成と同様である。実施の形態５にかかるコンピュータシステム１は、記憶制御装置１００の詳細な構成および処理が実施の形態１にかかるコンピュータシステム１と異なっている。
【００５６】
図５は、実施の形態５にかかるコンピュータシステム１の記憶制御装置１００の詳細な機能構成を示すブロック図である。記憶制御装置１００は、キャッシュメモリ１０２と、キャッシュ管理部１０４と、転送順序変更部１０６と、乱数発生器１０８とを有している。
【００５７】
キャッシュメモリ１０２は、メモリ２０のデータを格納する。なお、キャッシュメモリ１０２とメモリ２０の間のデータ転送は、キャッシュラインと呼ばれる単位（例えば４ワードや８ワードなどの大きさ）で行われる。通常は、メモリ２０の読み書きのデータのサイズよりもキャッシュラインのサイズのほうが大きい。したがって、ひとつのキャッシュラインの読み書きは、複数の連続するアドレスに対するメモリ２０の読み書きによって実現される。
【００５８】
キャッシュ管理部１０４は、キャッシュメモリ１０２を管理する。また、転送順序変更部１０６に対し、キャッシュライン単位でのメモリからの読み出しやあるいはメモリへの書き込みを指示する。
【００５９】
転送順序変更部１０６は、キャッシュ管理部１０４の指示に基づいて、連続メモリアクセス時のアクセス順序を入れ替える。すなわち、メモリ２０中の指定されたアドレスから連続するデータを指定されたキャッシュラインに読み込む順序を変更する。または、指定されたキャッシュラインのデータをメモリ２０中の指定されたアドレス以降に連続して書き込む順序を変更する。
【００６０】
より具体的には、メモリ２０上の連続する領域に、指定されたアドレスから順次アクセスするのではなく、乱数発生器１０８が生成した乱数によって決まる順序でアクセスを行う。なお、転送順序変更部１０６は、乱数から順序を決定するためのルールを格納している。転送順序変更部１０６は、このルールに基づいて、順序を決定する。乱数発生器１０８は、転送順序変更部１０６における転送順序の決定に用いる乱数を生成する。
【００６１】
たとえメモリバスのアドレスを暗号化したとしても、キャッシュラインの読み書きを行っているときは、連続するアドレスに対する読み書きを行うこととなる。本実施の形態にかかるコンピュータシステム１においては、キャッシュラインの読み書きのように連続するメモリアクセス時において、メモリアクセスの順序を入れ替えるので、悪意の第三者によりアクセス順序が推測されるのを防止することができる。
【００６２】
図６は、実施の形態５にかかるコンピュータシステム１におけるキャッシュラインとメモリの間のデータ転送時のバスの使用状況を模式的に示す図である。図６に示す例においては、キャッシュラインはメモリのデータ幅の４倍であり、１つのキャッシュラインのデータを転送するのに４回のメモリアクセスが必要であるとする。ここではキャッシュラインの４ワードのデータを、アドレスＡ０から始まる４ワードの領域に転送している。
【００６３】
図６には、転送順序変更部１０６により、「Ａ２」、「Ａ０」、「Ａ３」および「Ａ１」の順で転送することに決定された場合の例を示している。このとき、バス上のアドレス信号には、まず「Ａ２」を暗号化した「Ａ２’」、次に「Ａ０」を暗号化した「Ａ０’」、次に「Ａ３」を暗号化した「Ａ３’」、最後に「Ａ１」を暗号化した「Ａ１’」が順次流れる。
【００６４】
さらにデータバス３１０においては、「Ｄ２」、「Ｄ０」、「Ｄ３」および「Ｄ１」の順序でデータが流れる。すなわち、サイクルｎにおいて「Ｄ２」が転送され、サイクルｎ＋１において「Ｄ０」が転送され、サイクルｎ＋２において「Ｄ３」が転送され、サイクルｎ＋３において、「Ｄ１」が転送される。
【００６５】
なお、本実施の形態においては、記憶制御装置１００が転送順序変更部１０６を有したが、記憶制御装置１００以外の部分に転送順序変更部１０６が設けられてもよい。
【００６６】
転送順序変更部１０６は、メモリアクセスを行う際に１ワードのメモリアクセスか複数ワードのメモリアクセスかを示す信号を利用して、１ワードのメモリアクセスか複数ワードのメモリアクセスかを特定する。そして、複数ワードのメモリアクセスである場合には、メモリアクセスの順序を入れ替えてデータバス３１０に送出する。一方、１ワードのメモリアクセスであればそのままデータバス３１０に送出する。なお、データの読み出しの際も同様である。すなわち、複数ワードのメモリアクセスである場合には、変更された順序でデータを取得する。
【００６７】
また、本実施の形態においては、乱数発生器１０８が生成した乱数に基づいて、転送順序を入れ替えたが、乱数以外の情報であってもよい。例えば、プロセッサ１０に予め設定されている値であってもよい。なお、セキュリティの観点からは、実施の形態において説明したように、データを転送する度に乱数を生成し、生成した乱数により転送順序を変更するのが好ましい。
【００６８】
また、本実施の形態においては、キャッシュとメモリ間のデータ転送について説明したが、これに限定されるものではない。例えばＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）など様々な連続するデータ転送に対しても同様に実施することができる。
【図面の簡単な説明】
【００６９】
【図１】実施の形態１にかかるコンピュータシステム１の全体構成を示すブロック図である。
【図２】実施の形態２にかかるコンピュータシステム１の全体構成を示すブロック図である。
【図３】実施の形態３にかかるコンピュータシステム１の全体構成を示すブロック図である。
【図４】実施の形態４にかかるコンピュータシステム１の全体構成を示すブロック図である。
【図５】実施の形態５にかかるコンピュータシステム１の記憶制御装置１００の詳細な機能構成を示すブロック図である。
【図６】実施の形態５にかかるコンピュータシステム１におけるキャッシュラインとメモリの間のデータ転送時のバスの使用状況を模式的に示す図である。
【符号の説明】
【００７０】
１  コンピュータシステム
１０  プロセッサ
２０  メモリ
１００  記憶制御装置
１０２  キャッシュメモリ
１０４  キャッシュ管理部
１０６  転送順序変更部
１０８  乱数発生器
１１０  演算装置
１２０  制御装置
１３０  乱数発生器
１４０  排他的論理和演算器
１５０  暗号復号装置
１６０  置換逆置換回路
２００  記憶素子
２３０  乱数発生器
２４０  排他的論理和演算器
２５０  暗号復号装置
２６０  置換逆置換回路
３００  アドレスバス
３１０  データバス
３２０  コントロールバス
【図１】
2006277411.tif 000003
【図２】
2006277411.tif 000004
【図３】
2006277411.tif 000005
【図４】
2006277411.tif 000006
【図５】
2006277411.tif 000007
【図６】
2006277411.tif 000008