(57)【要約】【課題】マルチコアプロセッサを用いて計算処理を実行する際、プロセッサごとの動作を制御する特別なセキュリティ回路を備えていない場合であっても、セキュアに計算処理を実行できるセキュア計算システムを提供する。【解決手段】一のコア８０は、他のコア９０からのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段８１と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段８２とを備える。復号手段８３は、他のコアから受信した暗号化データを復号鍵を用いて復号した平文データを作成し、その平文データを平文データ記憶手段８７に記憶させる。平文データ計算手段８４は、平文データ記憶手段８７に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果を結果データ記憶手段８６に記憶させる。【選択図】図１１
2012147095.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアプロセッサを用いたセキュア計算システムであって、
一のコアは、
他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、
自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段と、
暗号化されたデータを復号する復号手段と、
前記復号手段が復号したデータである平文データに対して指定された計算処理を行う平文データ計算手段とを備え、
前記他コアアクセス可能記憶手段は、
他のコアから受信した暗号化データを記憶する暗号化データ記憶手段と、
前記平文データ計算手段による計算結果を記憶する結果データ記憶手段とを含み、
前記自コア内アクセス可能記憶手段は、
前記平文データを記憶する平文データ記憶手段と、
受信した暗号化データを復号する復号鍵を記憶する復号鍵記憶手段とを含み、
前記復号手段は、他のコアから受信した暗号化データを前記復号鍵を用いて復号した平文データを作成し、当該平文データを前記平文データ記憶手段に記憶させ、
前記平文データ計算手段は、前記平文データ記憶手段に記憶された平文データに対して指定された計算処理を行い、当該計算処理による計算結果を前記結果データ記憶手段に記憶させる
ことを特徴とするセキュア計算システム。
【請求項２】
マルチコアプロセッサを用いたセキュア計算システムであって、
一のコアは、
他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、
自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段と、
暗号化されたデータを復号する復号手段と、
前記復号手段が復号したデータである平文データに対して指定された計算処理を行う平文データ計算手段と、
他のコアから指定された暗号鍵を用いてデータを暗号化する暗号化手段とを備え、
前記他コアアクセス可能記憶手段は、
他のコアから受信した暗号化データを記憶する暗号化データ記憶手段と、
前記平文データ計算手段による計算結果を記憶する結果データ記憶手段と、
他のコアから指定された暗号鍵を記憶する暗号鍵記憶手段とを含み、
前記自コア内アクセス可能記憶手段は、
前記平文データを記憶する平文データ記憶手段と、
受信した暗号化データを復号する復号鍵を記憶する復号鍵記憶手段と、
前記復号手段が復号した平文データを記憶する平文結果データ記憶手段とを含み、
前記復号手段は、他のコアから受信した暗号化データを前記復号鍵を用いて復号した平文データを作成し、当該平文データを前記平文データ記憶手段に記憶させ、
前記平文データ計算手段は、前記平文データ記憶手段に記憶された平文データに対して指定された計算処理を行い、当該計算処理による計算結果を前記平文結果データ記憶手段に記憶させ、
前記暗号化手段は、前記暗号鍵記憶手段に記憶された暗号鍵を用いて前記平文結果データ記憶手段に記憶された計算結果を暗号化し、暗号化した計算結果を前記結果データ記憶手段に記憶させる
ことを特徴とするセキュア計算システム。
【請求項３】
暗号化手段は、平文結果データ記憶手段に記憶された計算結果を削除する
請求項２記載のセキュア計算システム。
【請求項４】
平文データ計算手段は、平文データ記憶手段に記憶された平文データを削除する
請求項１から請求項３のうちのいずれか１項に記載のセキュア計算システム。
【請求項５】
他コアアクセス可能記憶手段は、一のコアにおけるキャッシュであり、
自コア内アクセス可能記憶手段は、一のコアにおけるローカルメモリである
請求項１から請求項４のうちのいずれか１項に記載のセキュア計算システム。
【請求項６】
他コアアクセス可能記憶手段は、一のコアにおけるキャッシュであり、
自コア内アクセス可能記憶手段は、前記キャッシュにおいて他のコアにおけるキャッシュとの一貫性制御が停止された領域である
請求項１から請求項４のうちのいずれか１項に記載のセキュア計算システム。
【請求項７】
少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを用いたセキュア計算方法であって、
前記一のコアが、前記自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、
前記一のコアが、前記平文データを前記自コア内アクセス可能記憶手段に記憶させ、
前記一のコアが、前記自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、
前記一のコアが、前記計算処理による計算結果を前記他コアアクセス可能記憶手段に記憶させる
ことを特徴とするセキュア計算方法。
【請求項８】
少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを用いたセキュア計算方法であって、
前記一のコアが、前記自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、
前記一のコアが、前記平文データを前記自コア内アクセス可能記憶手段に記憶させ、
前記一のコアが、前記自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、
前記一のコアが、前記計算処理による計算結果を前記自コア内アクセス可能記憶手段に記憶させ、
前記一のコアが、他のコアから指定された暗号鍵を用いて前記計算結果を暗号化し、
前記一のコアが、暗号化した計算結果を前記他コアアクセス可能記憶手段に記憶させる
ことを特徴とするセキュア計算方法。
【請求項９】
少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを有するコンピュータに適用されるセキュア計算用プログラムであって、
前記コンピュータに、
前記自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、当該平文データを前記自コア内アクセス可能記憶手段に記憶させる復号処理、および、
前記自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、当該計算処理による計算結果を前記他コアアクセス可能記憶手段に記憶させる平文データ計算処理
を実行させるためのセキュア計算用プログラム。
【請求項１０】
少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを有するコンピュータに適用されるセキュア計算用プログラムであって、
前記コンピュータに、
前記自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、当該平文データを前記自コア内アクセス可能記憶手段に記憶させる復号処理、
前記自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、当該計算処理による計算結果を前記自コア内アクセス可能記憶手段に記憶させる平文データ計算処理、および、
前記他コアアクセス可能記憶手段に記憶された暗号鍵を用いて前記平文結果データ記憶手段に記憶された計算結果を暗号化し、暗号化した計算結果を前記他コアアクセス可能記憶手段に記憶させる暗号処理
を実行させるためのセキュア計算用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサを利用してセキュアに計算を実行できるセキュア計算用システム、セキュア計算用方法およびセキュア計算用プログラムに関する。
【背景技術】
【０００２】
一般的なセキュアシステムの一例が、特許文献１に記載されている。特許文献１に記載されたセキュアシステムを用いてセキュアなデータ処理およびデータ伝送を行う方法では、セルアーキテクチャと呼ばれる特殊なプロセッサを用いることを前提にしている。図１３は、セルアーキテクチャを用いたプロセッサ装置を示す説明図である。図１３に示すプロセッサ装置は、ローカルメモリと、そのローカルメモリとの間で情報の伝送を可能にするバスと、ローカルメモリの動作を制御可能に接続され、データを処理する１つ以上のプロセッサと、三つの動作モードのうちいずれかの動作モードにプロセッサ装置を設定可能なセキュリティ回路とを備えている。
【０００３】
第一の動作モードは、演算処理ユニットと、プロセッサ装置と通信可能に接続された外部デバイスとが、バスを介してローカルメモリの情報をプロセッサ装置の外部に転送することを開始でき、かつ、プロセッサ装置の外部の情報をローカルメモリに転送することを開始できるモードである。
【０００４】
第二の動作モードは、演算処理ユニットとプロセッサ装置の外部デバイスとが、バスを介してローカルメモリの情報をプロセッサ装置の外部に転送することを開始できず、かつ、プロセッサ装置の外部の情報をローカルメモリに転送することも開始できないモードである。
【０００５】
第三の動作モードは、演算処理ユニットがバスを介してローカルメモリの情報をローカルメモリに転送することを開始でき、かつ、プロセッサ装置の外部の情報をローカルメモリに転送することを開始できる。その一方で、プロセッサ装置の外部デバイスはバスを介してローカルメモリの情報を外部に転送することを開始できず、かつ、プロセッサ装置の外部の情報をローカルメモリに転送することも開始できないモードである。
【０００６】
セキュリティ回路は、プロセッサ装置が認証ルーチンを実行する場合には、プロセッサ装置を第２のモードに設定し、認証が成功した場合にはプロセッサ装置を第３のモードに設定する。このようにモードを設定することで、セキュアなデータ処理を実現する。
【０００７】
また、近年のマルチコアプロセッサは、上記のセルアーキテクチャと類似の構成を備える一方で、ローカルメモリの代わりに、キャッシュメモリを有する。キャッシュメモリは、上記のセルアーキテクチャのように明示的にモードが切り替えられることはない。
【０００８】
さらに、近年のマルチコアプロセッサには、キャッシュ以外に、ローカルメモリを内蔵するものも存在する。このようなマルチコアプロセッサのローカルメモリは、上記セルアーキテクチャのローカルメモリのように明示的にモードが切り替えられることはない。一方で、ローカルメモリに書き込まれたデータを、別のコアから参照することはできない。
【０００９】
また、特許文献２には、同一構成のプロセッサを複数有する対称型のマルチプロセッサが記載されている。特許文献２に記載されたマルチプロセッサでは、各プロセッサがバスで接続され、それぞれのプロセッサにはキャッシュメモリが含まれる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−１３９７８５号公報
【特許文献２】特開２００７−２６５１４３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、特許文献１に記載されたプロセッサ装置は、セルアーキテクチャのように、プロセッサごとにセキュリティのモードを指定してデータを処理可能なセキュリティ回路を備えていることを前提にしている。すなわち、上述する特別なセキュリティ回路をプロセッサに実装しなければ、セキュアに計算処理を実行できないという問題がある。
【００１２】
また、特許文献２に記載されたマルチプロセッサは、処理時間の短縮や処理効率の向上を図ることを目的として使用されるものであり、プロセッサ内のセキュリティについては考慮されていない。そのため、特許文献２に記載されたマルチプロセッサを用いても、セキュアに計算処理を実行できるとは言い難い。
【００１３】
そこで、本発明は、マルチコアプロセッサを用いて計算処理を実行する際、プロセッサごとの動作を制御する特別なセキュリティ回路を備えていない場合であっても、セキュアに計算処理を実行できるセキュア計算システム、セキュア計算方法およびセキュア計算用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明によるセキュア計算システムは、マルチコアプロセッサを用いたセキュア計算システムであって、一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段と、暗号化されたデータを復号する復号手段と、復号手段が復号したデータである平文データに対して指定された計算処理を行う平文データ計算手段とを備え、他コアアクセス可能記憶手段が、他のコアから受信した暗号化データを記憶する暗号化データ記憶手段と、平文データ計算手段による計算結果を記憶する結果データ記憶手段とを含み、自コア内アクセス可能記憶手段が、平文データを記憶する平文データ記憶手段と、受信した暗号化データを復号する復号鍵を記憶する復号鍵記憶手段とを含み、復号手段が、他のコアから受信した暗号化データを復号鍵を用いて復号した平文データを作成し、その平文データを平文データ記憶手段に記憶させ、平文データ計算手段が、平文データ記憶手段に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果を結果データ記憶手段に記憶させることを特徴とする。
【００１５】
本発明による他のセキュア計算システムは、マルチコアプロセッサを用いたセキュア計算システムであって、一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段と、暗号化されたデータを復号する復号手段と、復号手段が復号したデータである平文データに対して指定された計算処理を行う平文データ計算手段と、他のコアから指定された暗号鍵を用いてデータを暗号化する暗号化手段とを備え、他コアアクセス可能記憶手段が、他のコアから受信した暗号化データを記憶する暗号化データ記憶手段と、平文データ計算手段による計算結果を記憶する結果データ記憶手段と、他のコアから指定された暗号鍵を記憶する暗号鍵記憶手段とを含み、自コア内アクセス可能記憶手段が、平文データを記憶する平文データ記憶手段と、受信した暗号化データを復号する復号鍵を記憶する復号鍵記憶手段と、復号手段が復号した平文データを記憶する平文結果データ記憶手段とを含み、復号手段が、他のコアから受信した暗号化データを復号鍵を用いて復号した平文データを作成し、その平文データを平文データ記憶手段に記憶させ、平文データ計算手段は、平文データ記憶手段に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果を平文結果データ記憶手段に記憶させ、暗号化手段が、暗号鍵記憶手段に記憶された暗号鍵を用いて平文結果データ記憶手段に記憶された計算結果を暗号化し、暗号化した計算結果を結果データ記憶手段に記憶させることを特徴とする。
【００１６】
本発明によるセキュア計算方法は、少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを用いたセキュア計算方法であって、一のコアが、自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、一のコアが、平文データを自コア内アクセス可能記憶手段に記憶させ、一のコアが、自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、一のコアが、計算処理による計算結果を他コアアクセス可能記憶手段に記憶させることを特徴とする。
【００１７】
本発明による他のセキュア計算方法は、少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを用いたセキュア計算方法であって、一のコアが、自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、一のコアが、平文データを自コア内アクセス可能記憶手段に記憶させ、一のコアが、自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、一のコアが、計算処理による計算結果を自コア内アクセス可能記憶手段に記憶させ、一のコアが、他のコアから指定された暗号鍵を用いて計算結果を暗号化し、一のコアが、暗号化した計算結果を他コアアクセス可能記憶手段に記憶させることを特徴とする。
【００１８】
本発明によるセキュア計算用プログラムは、少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを有するコンピュータに適用されるセキュア計算用プログラムであって、コンピュータに、自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、その平文データを自コア内アクセス可能記憶手段に記憶させる復号処理、および、自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果を他コアアクセス可能記憶手段に記憶させる平文データ計算処理を実行させることを特徴とする。
【００１９】
本発明による他のセキュア計算用プログラムは、少なくとも一のコアが、他のコアからのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段とを備えたマルチコアプロセッサを有するコンピュータに適用されるセキュア計算用プログラムであって、コンピュータに、自コア内アクセス可能記憶手段に記憶された復号鍵を用いて、他のコアから受信した暗号化データを復号したデータである平文データを作成し、その平文データを自コア内アクセス可能記憶手段に記憶させる復号処理、自コア内アクセス可能記憶手段に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果を自コア内アクセス可能記憶手段に記憶させる平文データ計算処理、および、他コアアクセス可能記憶手段に記憶された暗号鍵を用いて平文結果データ記憶手段に記憶された計算結果を暗号化し、暗号化した計算結果を他コアアクセス可能記憶手段に記憶させる暗号処理を実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、マルチコアプロセッサを用いて計算処理を実行する際、プロセッサごとの動作を制御する特別なセキュリティ回路を備えていない場合であっても、セキュアに計算処理を実行できる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態におけるセキュア計算システムの例を示すブロック図である。
【図２】第１の実施形態におけるコア４−２の例を示すブロック図である。
【図３】キャッシュ、ローカルメモリ、メモリの内容の一例を示す説明図である。
【図４】第１の実施形態におけるセキュア計算システムの動作の例を示すフローチャートである。
【図５】本発明の第２の実施形態におけるセキュア計算システムの例を示すブロック図である。
【図６】第２の実施形態におけるコア４−３の例を示すブロック図である。
【図７】キャッシュ、ローカルメモリ、メモリの内容の一例を示す説明図である。
【図８】第２の実施形態におけるセキュア計算システムの動作の例を示すフローチャートである。
【図９】サーバごとに通信データ量の統計計算を行う動作の例を示す説明図である。
【図１０】サーバごとに通信データ量の統計計算を行う動作の例を示す説明図である。
【図１１】本発明によるセキュア計算システムの最小構成の例を示すブロック図である。
【図１２】本発明によるセキュア計算システムの他の最小構成の例を示すブロック図である。
【図１３】セルアーキテクチャを用いたプロセッサ装置を示す説明図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態を図面を参照して説明する。
【００２３】
実施形態１．
図１は、本発明の第１の実施形態におけるセキュア計算システムの例を示すブロック図である。本実施形態におけるセキュア計算システムは、コンピュータ１により実現される。コンピュータ１は、少なくとも、マルチコアプロセッサ２とメモリ３とを備えている。また、コンピュータ１は、プログラム制御により動作する。
【００２４】
マルチコアプロセッサ２は、少なくとも２つのコア（より詳しくは、コア４−１とコア４−２と）を含む。さらに、この２つのコアは、それぞれキャッシュ（より詳しくは、キャッシュ５−１とキャッシュ５−２）と、ローカルメモリ（より詳しくは、ローカルメモリ６−１とローカルメモリ６−２）とを有する。
【００２５】
マルチコアプロセッサ２は、メモリ３から読み込んだ命令列（セキュア計算用プログラム）を実行し、また、メモリ３からデータを読み込んで、何らかの計算処理を行い、その処理結果をメモリ３に記憶させる。以下、メモリ等にデータを記憶させることを、メモリにデータを書き出すと記し、メモリ等がデータを記憶することを、メモリがデータを保持すると記すこともある。
【００２６】
各コア（より詳しくは、コア４−１とコア４−２と）では、キャッシュに記憶されたデータを参照して処理が行われ、処理結果がキャッシュに一時的に記憶される。なお、キャッシュへのアクセス（例えば、読み書き）は、メモリ３へのアクセスの結果として同時に（自動的に）行われ、キャッシュに対する明示的なアクセス操作は行われない。
【００２７】
キャッシュ（より詳しくは、キャッシュ５−１とキャッシュ５−２と）は、コアがメモリ３に記憶された命令やデータなどの情報にアクセスする際に、それらの情報を一時的に保持する。キャッシュは、他のコアからのアクセスが可能な状態で情報を記憶する。
【００２８】
ローカルメモリ（より詳しくは、ローカルメモリ６−１とローカルメモリ６−２）は、各コアでのみアクセス可能なメモリである。ローカルメモリに対しては、メモリ３から読み込んだ情報の書き出し操作を各コアが明示的に行う。
【００２９】
本実施形態では、計算処理の実行指示を行うプログラム（以下、ユーザプログラムと記す。）および計算処理の実行指示を受けて暗号化されたデータの復号および計算処理を行うプログラム（以下、暗号化計算プログラムと記す。）がそれぞれ実行されるものとする。また、本実施形態におけるセキュア計算システムでは、後述するコア４−１のユーザプログラム処理部９がユーザプログラムを実行し、コア４−２の暗号化計算プログラム処理部７が暗号化計算プログラムを実行する。各プログラムを実行するコアの割り当ては初期化時に行われ、その後、コアの割り当ては変化しない。さらに、暗号化計算プログラム処理部７が復号に用いる暗号鍵は、ローカルメモリの一部として、後述する暗号鍵保持部１６へ初期化時に記憶される。
【００３０】
次に、各コアの内容について具体的に説明する。コア４−１は、ユーザプログラム処理部９と、ローカルメモリ６−１と、キャッシュ５−１とを含む。なお、ローカルメモリ６−１およびキャッシュ５−１の内容は、上述するローカルメモリおよびキャッシュの説明の通りである。
【００３１】
ユーザプログラム処理部９は、暗号化済みのデータを通信ネットワーク（図示せず）を介して受信する、または、磁気ディスク装置等（図示せず）から読み取ると、暗号化データを暗号化計算プログラム処理部７に送信し、計算指示を行う。そして、ユーザプログラム処理部９は、暗号化計算プログラム処理部７から計算結果を受け取る。ユーザプログラム処理部９は、例えば、数字の配列が暗号化された暗号化データを入手すると、その暗号化データを暗号化計算プログラム処理部７に送信して、配列内の数字の総和を計算させる。
【００３２】
コア４−２は、暗号化計算プログラム処理部７と、ローカルメモリ６−２と、キャッシュ５−２とを含む。なお、ローカルメモリ６−２およびキャッシュ５−２の内容は、上述するローカルメモリおよびキャッシュの説明の通りである。
【００３３】
暗号化計算プログラム処理部７は、暗号化済みのデータを受け取り、それを内部で復号した後で特定の計算を行い、計算終了の通知をユーザプログラム処理部９に行う。暗号化計算プログラム処理部７は、公開鍵暗号を用いて復号を行う。すなわち、受け取った暗号化データが公開鍵により暗号化されており、暗号化計算プログラム処理部７は、受け取った暗号化データを秘密鍵を使って復号する。なお、復号に必要な秘密鍵は、ローカルメモリ６−２に記憶されている。ここで、特定の計算とは、例えば、総和を求める計算である。この場合、暗号化計算プログラム処理部７は、数字の配列が暗号化された暗号化データを受け取り、それを復号した結果として得られた配列の各要素を加算する。
【００３４】
次に、コア４−２の内容について、より詳細に説明する。図２は、本実施形態におけるコア４−２の例を示すブロック図である。キャッシュ５−２は、暗号化データ保持部１１と、結果データ保持部１２とを含み、ローカルメモリ６−２は、平文データ保持部１５と、暗号鍵保持部１６とを含み、暗号化計算プログラム処理部７は、復号化部１３と、計算部１７とを含む。
【００３５】
暗号化データ保持部１１は、別のコア（本実施形態では、コア４−１）から渡された暗号化済みデータを保持する。暗号化データ保持部１１は、キャッシュ５−２の一部であるが、メモリ３の一部であってもよい。暗号化データ保持部１１が記憶する暗号化済みデータは、別のコアからアクセス（例えば、参照）可能である。また、暗号化データ保持部１１は、計算部１７が使用する引数や環境変数などを記憶していてもよい。なお、引数や環境変数に関しては、必ずしも、暗号化しておく必要はない。
【００３６】
結果データ保持部１２は、計算部１７による計算結果を保持する。結果データ保持部１２は、キャッシュ５−２の一部であるが、メモリ３の一部であってもよい。暗号化データ保持部１１と同様、結果データ保持部１２が記憶する計算結果のデータは、別のコア（本実施形態では、コア４−１）からアクセス（例えば、参照）可能である。
【００３７】
平文データ保持部１５は、復号化部１３により復号された暗号化データ（以下、平文データと記す。）を記憶する。また、暗号鍵保持部１６は、受信した暗号化データを復号する暗号鍵を記憶する。なお、この暗号鍵のことを復号鍵と記すこともある。平文データ保持部１５と、暗号鍵保持部１６とは、ローカルメモリ６−２の一部であり、ローカルメモリ６−２に記憶されたデータは、他のコアからアクセス（例えば、参照）することはできない。
【００３８】
復号化部１３は、暗号化計算プログラム処理部７が別のコアから計算要求を受けとると、暗号鍵保持部１６に記憶された暗号鍵を用いて、暗号化データ保持部１１に保持されている暗号化済みデータを復号し、復号した結果の平文データを平文データ保持部１５に記憶させる。
【００３９】
計算部１７は、特定の計算を行う機能を提供するものであり、平文データ保持部１５に記憶された平文データを入力として、計算を実行する。具体的には、計算部１７は、平文データ保持部１５に記憶された平文データをもとに、特定の計算処理を行う。さらに、計算部１７は、計算結果を結果データ保持部１２に記憶させ、計算の要求元であるユーザプログラム処理部９に計算終了を通知する。そして、計算部１７は、平文データ保持部１５に記憶されたデータを計算終了の通知と合わせて消去する。なお、計算部１７が計算中に利用するメモリ領域（スタックやヒープ）には、ローカルメモリ６−２が使用される。
【００４０】
図３は、キャッシュ、ローカルメモリおよびメモリの内容の一例を示す説明図である。キャッシュ５−１およびキャッシュ５−２には、暗号化データ保持部１１に対応するキャッシュエントリおよび結果データ保持部１２に対応するキャッシュエントリが確保される。また、メモリ３には、暗号化データ保持部１１に対応するメモリ領域および結果データ保持部１２に対応するメモリ領域が確保される。さらに、ローカルメモリ６−２には、平文データ保持部１５および暗号鍵保持部１６が含まれる。なお、本実施形態では、ローカルメモリ６−１に記憶させる情報がないため、図３に例示するローカルメモリ６−１には、記憶する内容を特に記載していない。
【００４１】
次に、動作について説明する。図４は、第１の実施形態におけるセキュア計算システムの動作の例を示すフローチャートである。ユーザプログラム処理部９は、暗号化プログラム処理部７に計算要求を行い、合わせて、暗号化済みデータをキャッシュ５-２上の暗号化データ保持部１１に記憶させる（ステップＳ１）。このとき、暗号化済みデータは、キャッシュ５−１の中の暗号化データ保持部１１に対応するキャッシュエントリを経由して、暗号化プログラム処理部７に渡される。
【００４２】
暗号化計算プログラム処理部７が計算要求を受け取ると、復号化部１３は、暗号鍵保持部１６に記憶された暗号鍵を用いて、暗号化データ保持部１１に保持されている暗号化済みデータを復号し、復号した結果の平文データを平文データ保持部１５に記憶させる（ステップＳ２）。
【００４３】
計算部１７は、平文データ保持部１５に記憶された平文データを入力として計算処理を実行し、さらに、計算結果を結果データ保持部１２に記憶させる。同時に、計算部１７は、平文データ保持部１５に記憶された平文データを消去する（ステップＳ３）。そして、計算部１７は、計算処理の要求元であるユーザプログラム処理部９に計算が終了した旨を通知する（ステップＳ４）。
【００４４】
ユーザプログラム処理部９は、計算部１７からの通知を受け取ると、キャッシュ５−１の中の結果データ保持部１２に対応するキャッシュエントリから、計算結果のデータを読み出す（ステップＳ５）。具体的には、ユーザプログラム処理部９は、結果データ保持部１２に対応するメモリ領域をアクセスすることで、結果的に、キャッシュ５−１の中の結果データ保持部１２に対応するキャッシュエントリから、計算結果のデータを読み出す。
【００４５】
以上のように、本実施形態によれば、コア４−２の復号化部１３が、ローカルメモリ６−２の暗号鍵保持部１６に記憶された復号鍵を用いて、コア４−１から受信した暗号化データを復号した平文データを作成し、その平文データをローカルメモリ６−２の平文データ保持部１５に記憶させる。そして、コア４−２の計算部１７が、平文データ保持部１５に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果をキャッシュ５−２の結果データ保持部１２に記憶させる。
【００４６】
すなわち、本実施形態では、他のコアからはアクセスできないローカルメモリ６−２を利用して暗号化計算プログラム処理部７が復号や計算処理を行うように構成されているため、特別なセキュリティ回路を備えていない場合であっても、セキュアな計算処理を実現できる。
【００４７】
なお、第１の実施形態では、コアを対称にするため、コア４−１にローカルメモリ６−１が含まれる構成を例に説明した。ただし、本発明におけるセキュア計算システムでは、コア４−１がローカルメモリを含まない非対称な構成であってもよい。なお、この場合、ハードウェア構成（すなわち、コア４−１にローカルメモリ６−１を含まない構成）以外の構成および動作は、上述する内容と同様である。
【００４８】
また、第１の実施形態では、ローカルメモリとキャッシュの両方がコアに含まれる構成を例に説明した。ただし、本発明におけるセキュア計算システムにおいて、キャッシュの一部の一貫性制御を停止できるマルチコアプロセッサであれば、ローカルメモリを含まない構成であってもよい。ここで、一貫性制御とは、キャッシュ上の一のデータが他のデータに変更されたことに伴い、そのキャッシュを含むコア以外のコアに含まれるキャッシュに記憶された一のデータを他のデータに変更する制御である。
【００４９】
一貫性制御を停止されたキャッシュ領域に記憶されたデータがあるコアによって変更されたとしても、別のコアからはその変更内容を取得することはできず、その部分の領域をローカルメモリのように使うことが可能なためである。すなわち、一貫性制御が停止されたキャッシュの一部領域を自コアからのみアクセスが可能な領域として用いることができる。この場合、初期化時などに、キャッシュの一部の一貫性制御を停止させ、その停止させた部分を、第１の実施形態におけるローカルメモリと同様に利用すればよい。その場合の動作については、上述する内容と同様である。
【００５０】
次に、第１の実施形態における変形例について説明する。第１の実施形態では、暗号化計算プログラム処理部７が、特定の１種類の計算処理を行う場合について説明した。本変形では、暗号化計算プログラム処理部７が複数の計算処理の中から１つを選択して計算処理を行う場合について説明する。この場合、ユーザプログラム処理部９は、暗号化計算プログラム処理部７への引数として、計算の種類を示す識別子を渡す。暗号化計算プログラム処理部７の計算部１７は、複数の計算式を保持し、計算の種類を示す識別子に基づいて、計算式を選択し、計算処理を行う。
【００５１】
すなわち、本実施形態の変形例では、特別なセキュリティ回路を備えていない場合であっても、セキュアな計算処理を実現できるという第１の実施形態の効果に加えて、複数の計算式から一つの計算式を選択して、暗号化計算を行うことができるという効果が得られる。
【００５２】
実施形態２．
図５は、本発明の第２の実施形態におけるセキュア計算システムの例を示すブロック図である。なお、第１の実施形態と同様の構成については、図１と同一の符号を付し、説明を省略する。本実施形態におけるセキュア計算システムも、コンピュータ１により実現され、コンピュータ１は、少なくとも、マルチコアプロセッサ２とメモリ３とを備えている。また、コンピュータ１は、プログラム制御により動作する。
【００５３】
マルチコアプロセッサ２は、少なくとも２つのコア（より詳しくは、コア４−１とコア４−３と）を含む。さらに、この２つのコアは、それぞれキャッシュ（より詳しくは、キャッシュ５−１とキャッシュ５−３）と、ローカルメモリ（より詳しくは、ローカルメモリ６−１とローカルメモリ６−３）とを有する。
【００５４】
本実施形態におけるセキュア計算システムでは、後述するコア４−１のユーザプログラム処理部９がユーザプログラムを実行し、コア４−３の暗号化計算プログラム処理部８が暗号化計算プログラムを実行する。
【００５５】
次に、各コアの内容について具体的に説明する。コア４−１については、第１の実施形態と同様である。コア４−３は、暗号化計算プログラム処理部８と、ローカルメモリ６−３と、キャッシュ５−３とを含む。なお、ローカルメモリ６−３およびキャッシュ５−３の内容は、第１の実施形態におけるローカルメモリおよびキャッシュの説明の通りである。
【００５６】
暗号化計算プログラム処理部８は、第１の実施形態における暗号化計算プログラム処理部７と同様、暗号化済みのデータを受け取り、それを内部で復号した後で特定の計算処理を行い、計算終了の通知をユーザプログラム処理部９に行う。
【００５７】
次に、コア４−３の内容について、より詳細に説明する。図６は、本実施形態におけるコア４−３の例を示すブロック図である。キャッシュ５−３は、暗号化データ保持部１１と、結果データ保持部１２と、第２の暗号鍵保持部２０とを含み、ローカルメモリ６−３は、平文データ保持部１５と、暗号鍵保持部１６と、平文結果データ保持部１８とを含み、暗号化計算プログラム処理部８は、復号化部１３と、暗号化部１４と、計算部１９とを含む。
【００５８】
コア４−３は、暗号化部１４、平文結果データ保持部１８、計算部１９および第２の暗号鍵保持部２０を含んでいる点において第１の実施形態におけるコア４−２と異なる。それ以外の構成内容については、第１の実施形態の構成内容と同様である。すなわち、暗号化データ保持部１１は、別のコアから渡された暗号化済みデータを保持し、暗号鍵保持部１６は、暗号鍵を保持する。また、復号化部１３は、暗号化データ保持部１１に保持されている暗号化済みデータを復号し、平文データ保持部１５は、復号後の平文データを保持する。また、結果データ保持部１２は、計算結果のデータを保持する。
【００５９】
また、暗号化データ保持部１１と結果データ保持部１２とは、キャッシュ５−３の一部であるが、メモリ３の一部であってもよい。また、平文データ保持部１５と暗号鍵保持部１６とは、ローカルメモリ６−３の一部である。
【００６０】
計算部１９は、特定の計算を行う機能を提供するものであり、平文データ保持部１５に記憶された平文データを入力として、計算を実行する。具体的には、計算部１９は、平文データ保持部１５に記憶された平文データをもとに、特定の計算処理を行う。さらに、計算部１９は、計算結果を平文結果データ保持部１８に記憶させ、暗号化部１４に計算結果の暗号化を指示する。なお、計算部１９が計算中に利用するメモリ領域（スタックやヒープ）には、ローカルメモリ６−３が使用される。
【００６１】
平文結果データ保持部１８は、計算部１９による計算結果を一時的に記憶する。平文結果データ保持部１８は、ローカルメモリ６−３の一部であり、ローカルメモリ６−３に記憶されたデータは、自コアからのみアクセス可能であり、他のコアからアクセス（例えば、参照）することはできない。
【００６２】
第２の暗号鍵保持部２０は、ユーザプログラム処理部９から送信される公開暗号鍵を記憶する。なお、第２の暗号鍵保持部２０は、ローカルメモリ６−３の一部であってもよく、メモリ３の一部であってもよい。
【００６３】
暗号化部１４は、計算部１９から暗号化の指示を受け取ると、平文結果データ保存部１８から平文の計算結果のデータを読み取り、そのデータを第２の暗号鍵保持部２０が記憶する暗号鍵を用いて暗号化する。そして、暗号化部１４は、暗号化した結果を結果データ保持部１２に記憶させる。同時に、暗号化部１４は、平文結果データ保持部１８に記憶されたデータを消去する。そして、暗号化部１４は、計算処理の要求元であるユーザプログラム処理部９に計算が終了した旨を通知する。
【００６４】
図７は、キャッシュ、ローカルメモリおよびメモリの内容の一例を示す説明図である。キャッシュ５−１およびキャッシュ５−３には、暗号化データ保持部１１に対応するキャッシュエントリおよび結果データ保持部１２に対応するキャッシュエントリが確保される。また、メモリ３には、暗号化データ保持部１１に対応するメモリ領域および結果データ保持部１２に対応するメモリ領域が確保される。さらに、ローカルメモリ６−３には、平文データ保持部１５、暗号鍵保持部１６および平文結果データ保持部１８が含まれる。本実施形態でも、ローカルメモリ６−１に記憶させる情報がないため、図７に例示するローカルメモリ６−１には、記憶する内容を特に記載していない。
【００６５】
次に、動作について説明する。図８は、第２の実施形態におけるセキュア計算システムの動作の例を示すフローチャートである。ユーザプログラム処理部９は、暗号化プログラム処理部８に計算要求を行い、合わせて、暗号化済みデータをキャッシュ５−３上の暗号化データ保持部１１に記憶させる（ステップＳ１１）。このとき、暗号化済みデータは、キャッシュ５−１の中の暗号化データ保持部１１に対応するキャッシュエントリを経由して、暗号化プログラム処理部８に渡される。
【００６６】
暗号化計算プログラム処理部８が計算要求を受け取ると、復号化部１３は、暗号鍵保持部１６に記憶された暗号鍵を用いて、暗号化データ保持部１１に保持されている暗号化済みデータを復号し、復号した結果の平文データを平文データ保持部１５に記憶させる（ステップＳ１２）。
【００６７】
計算部１９は、平文データ保持部１５に記憶された平文データを入力として計算処理を実行し、さらに、計算結果を平文結果データ保持部１８に記憶させる。同時に、計算部１９は、平文データ保持部１５に記憶された平文データを消去する（ステップＳ１３）。
【００６８】
暗号化部１４は、平文結果データ保存部１８から平文の計算結果のデータを読み取り、そのデータを第２の暗号鍵保持部２０が記憶する暗号鍵を用いて暗号化する。そして、暗号化部１４は、暗号化した結果を結果データ保持部１２に記憶させる。同時に、暗号化部１４は、平文結果データ保持部１８に記憶されたデータを消去する（ステップＳ１４）。
【００６９】
そして、暗号化部１４は、計算処理の要求元であるユーザプログラム処理部９に計算が終了した旨を通知する（ステップＳ１５）。
【００７０】
ユーザプログラム処理部９は、計算部１７からの通知を受け取ると、キャッシュ５−１の中の結果データ保持部１２に対応するキャッシュエントリから、計算結果のデータを読み出す（ステップＳ１６）。具体的には、ユーザプログラム処理部９は、結果データ保持部１２に対応するメモリ領域をアクセスすることで、結果的に、キャッシュ５−１の中の結果データ保持部１２に対応するキャッシュエントリから、計算結果のデータを読み出す。
【００７１】
以上のように、本実施形態によれば、コア４−３の復号化部１３が、ローカルメモリ６−３の暗号鍵保持部１６に記憶された復号鍵を用いて、コア４−１から受信した暗号化データを復号した平文データを作成し、その記平文データをローカルメモリ６−３の平文データ保持部１５に記憶させる。そして、コア４−３の計算部１９が、平文データ保持部１５に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果をローカルメモリ６−３の平文データ結果保持部１８に記憶させる。さらに、コア４−３の暗号化部１４がコア４−１から指定された暗号鍵を用いて計算結果を暗号化し、暗号化した計算結果をキャッシュ５−３の結果データ保持部１２に記憶させる。
【００７２】
すなわち、本実施形態では、他のコアからはアクセスできないローカルメモリ６−３を利用して、暗号化計算プログラム処理部８が計算結果を暗号化し、暗号化されたデータをユーザプログラム処理部９が取得するように構成されている。よって、第１の実施形態よりも、さらに、セキュアな計算処理を実現できる。
【実施例１】
【００７３】
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。本発明によるセキュア計算システムは、セキュアな統計計算に適用できる。第１の実施例では、第１の実施形態におけるセキュア計算システムを用いて統計計算を行う動作について説明する。
【００７４】
図９は、サーバごとに通信データ量の統計計算を行う動作の例を示す説明図である。コンピュータ１は、暗号化データとして、ユーザＩＤとアクセス先を示す情報と通信データ量とを含むアクセス履歴を定期的にサーバなど（図示せず）から受け取る。そして、ユーザプログラム処理部９が暗号化計算プログラム処理部７にアクセス履歴を送信し、計算指示を行う。暗号化計算プログラム処理部７は、アクセス履歴を受け取り、サーバごとにパケット量などを合算した結果をサーバごとの通信データ量として計算する。そして、コンピュータ１は、この通信データ量を要求されたサーバ等（図示せず）に返す。
【００７５】
具体的には、暗号化データ保持部１１に暗号化されたデータ（アクセス履歴）が記憶されると、復号化部１３がそのデータを復号し、復号された平文データを平文データ保持部１５に記憶させる。図９に示す例では、平文データ保持部１５は、復号化後の平文データ（アクセス履歴）として、ユーザＩＤとアクセス先を示す情報（アクセス先）とデータ量とを対応付けて記憶する。
【００７６】
次に、計算部１７は、アクセス先を示す情報に含まれるサーバＩＤを検索キーにして、アクセス履歴を検索する。ここでは、サーバＩＤ「ａ．ｂ．ｃ」を検索キーにしてアクセス履歴を検索するものとする。そして、計算部１７は、検索の結果絞り込まれたエントリにおけるデータ量の総和を計算する。この場合、データ量の総和は、１０００＋１０００＋５００００００＝５００２０００（バイト）と計算される。計算部１７は、他のサーバに関しても同様にデータ量の総和を計算する。
【００７７】
そして、計算部１７は、計算結果を結果データ保持部１２に記憶させる。図９に示す例では、結果データ保持部１２は、計算結果として、サーバごとのＵＲＬと合計データ量とを対応付けて記憶する。
【００７８】
ユーザごとのアクセス履歴は、プライバシーにかかわる重大な情報であるため、秘匿すべきである。一方で、サーバごとの統計情報は、負荷分散などのために重要な指標である。本実施例では、復号後のアクセス履歴が他のコアからアクセスできないローカルメモリ上に記憶されて統計処理が行われるため、ユーザごとのアクセス履歴を知られることなく、サーバ単位のアクセス統計情報を取得することができる。すなわち、本発明におけるセキュア計算システムにより、プライバシー情報の秘匿と有益な情報の抽出という２点を両立できる。
【実施例２】
【００７９】
本発明によるセキュア計算システムは、課金システムにも適用できる。第２の実施例では、第２の実施形態におけるセキュア計算システムを用いて統計計算を行う動作について説明する。
【００８０】
図１０は、サーバごとに通信データ量の統計計算を行う動作の例を示す説明図である。コンピュータ１は、暗号化データとして、ユーザＩＤとアクセス先を示す情報と通信データ量とを含むアクセス履歴を定期的にサーバなど（図示せず）から受け取る。そして、ユーザプログラム処理部９が暗号化計算プログラム処理部８にアクセス履歴を送信し、計算指示を行う。暗号化計算プログラム処理部８は、アクセス履歴を受け取り、ユーザＩＤごとにパケット量などを合算した結果をユーザごとの課金データとして計算する。そして、コンピュータ１は、この課金データを要求されたサーバ等（図示せず）に返す。このとき、課金データは、暗号化された状態で返される。
【００８１】
具体的には、暗号化データ保持部１１に暗号化されたデータ（アクセス履歴）が記憶されると、復号化部１３がそのデータを復号し、復号された平文データを平文データ保持部１５に記憶させる。図１０に示す例では、平文データ保持部１５は、復号化後の平文データ（アクセス履歴）として、ユーザＩＤとアクセス先を示す情報（アクセス先）とデータ量とを対応付けて記憶する。
【００８２】
次に、計算部１９は、引数として与えられたユーザＩＤを検索キーにして、アクセス履歴を検索する。ここでは、ユーザＩＤ「ｔｏｍ」が検索キーとして与えられたものとする。そして、計算部１９は、検索の結果絞り込まれたエントリにおけるデータ量の総和を計算する。この場合、データ量の総和は、１０００＋５００００００＋２０００＝５００３０００（バイト）と計算される。そして、計算部１９は、計算結果を平文結果データ保持部１８に記憶させる。図１０に示す例では、平文結果データ保持部１８は、計算結果として、ユーザＩＤと合計データ量とを対応付けて記憶する。
【００８３】
暗号化部１４は、ユーザプログラム処理部９から送信された暗号鍵（具体的には、第２の暗号鍵保持部２０に記憶された公開暗号鍵）を使って計算結果を暗号化し、暗号化した計算結果を結果データ保持部１２に記憶させる。以降、ユーザプログラム処理部９は、暗号化された計算結果を結果データ保持部１２を介して取得する。
【００８４】
本実施例では、ユーザプログラム処理部９から送信された公開暗号鍵を使って計算結果を暗号化しているため、この公開暗号鍵に対応する秘密暗号鍵を知るものによってのみユーザごとのアクセス統計情報を処理できる。
【００８５】
次に、本発明の最小構成の例を説明する。図１１は、本発明によるセキュア計算システムの最小構成の例を示すブロック図である。本発明によるセキュア計算システムは、マルチコアプロセッサ９９（例えば、マルチコアプロセッサ２）を用いたセキュア計算システムであって、一のコア８０（例えば、コア４−２）は、他のコア９０（例えば、コア４−１）からのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段８１（例えば、キャッシュ５−２）と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段８２（例えば、ローカルメモリ６−２）と、暗号化されたデータを復号する復号手段８３（例えば、復号化部１３）と、復号手段８３が復号したデータである平文データに対して指定された計算処理（例えば、通信データ量の統計計算）を行う平文データ計算手段８４（例えば、計算部１７）とを備えている。
【００８６】
他コアアクセス可能記憶手段８１は、他のコアから受信した暗号化データを記憶する暗号化データ記憶手段８５（例えば、暗号化データ保持部１１）と、平文データ計算手段８４による計算結果を記憶する結果データ記憶手段８６（例えば、結果データ保持部１２）とを含む。
【００８７】
自コア内アクセス可能記憶手段８２は、平文データを記憶する平文データ記憶手段８７（例えば、平文データ保持部１５）と、受信した暗号化データを復号する復号鍵を記憶する復号鍵記憶手段８８（例えば、暗号鍵保持部１６）とを含む。
【００８８】
復号手段８３は、他のコアから受信した暗号化データを復号鍵を用いて復号した平文データを作成し、その平文データを平文データ記憶手段８７に記憶させる。平文データ計算手段８４は、平文データ記憶手段８７に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果を結果データ記憶手段８６に記憶させる。
【００８９】
そのような構成により、マルチコアプロセッサを用いて計算処理を実行する際、プロセッサごとの動作を制御する特別なセキュリティ回路を備えていない場合であっても、セキュアに計算処理を実行できる。
【００９０】
また、図１２は、本発明によるセキュア計算システムの他の最小構成の例を示すブロック図である。本発明による他のセキュア計算システムは、マルチコアプロセッサ９９（例えば、マルチコアプロセッサ２）を用いたセキュア計算システムであって、一のコア６０（例えば、コア４−３）は、他のコア９０（例えば、コア４−１）からのアクセスが可能な状態で情報を記憶する他コアアクセス可能記憶手段６１（例えば、キャッシュ５−３）と、自コアからのみアクセスが可能な状態で情報を記憶する自コア内アクセス可能記憶手段６２（例えば、ローカルメモリ６−３）と、暗号化されたデータを復号する復号手段６３（例えば、復号化部１３）と、復号手段６３が復号したデータである平文データに対して指定された計算処理（例えば、通信データ量の統計計算）を行う平文データ計算手段６４（例えば、計算部１９）と、他のコアから指定された暗号鍵を用いてデータを暗号化する暗号化手段６５（例えば、暗号化部１４）を備えている。
【００９１】
他コアアクセス可能記憶手段６１は、他のコアから受信した暗号化データを記憶する暗号化データ記憶手段６６（例えば、暗号化データ保持部１１）と、平文データ計算手段６４による計算結果を記憶する結果データ記憶手段６７（例えば、結果データ保持部１２）と、他のコアから指定された暗号鍵を記憶する暗号鍵記憶手段６８（例えば、第２の暗号鍵保持部２０）とを含む。
【００９２】
自コア内アクセス可能記憶手段６２は、平文データを記憶する平文データ記憶手段６９（例えば、平文データ保持部１５）と、受信した暗号化データを復号する復号鍵を記憶する復号鍵記憶手段７０（例えば、暗号鍵保持部１６）と、復号手段６３が復号した平文データを記憶する平文結果データ記憶手段７１（例えば、平文結果データ保持部１８）とを含む。
【００９３】
復号手段６３は、他のコアから受信した暗号化データを復号鍵を用いて復号した平文データを作成し、その平文データを平文データ記憶手段６９に記憶させる。平文データ計算手段６４は、平文データ記憶手段６９に記憶された平文データに対して指定された計算処理を行い、その計算処理による計算結果を平文結果データ記憶手段７１に記憶させる。暗号化手段６５は、暗号鍵記憶手段６８に記憶された暗号鍵を用いて平文結果データ記憶手段７１に記憶された計算結果を暗号化し、暗号化した計算結果を結果データ記憶手段６７に記憶させる。
【００９４】
そのような構成であっても、セキュアに計算処理を実行できる。
【００９５】
また、暗号化手段６５は、平文結果データ記憶手段７１に記憶された計算結果を削除してもよい。
【００９６】
また、平文データ計算手段８４（平文データ計算手段６４）は、平文データ記憶手段８７（平文データ記憶手段６９）に記憶された平文データを削除してもよい。
【００９７】
また、他コアアクセス可能記憶手段８１（他コアアクセス可能記憶手段６１）は、一のコア８０（一のコア６０）におけるキャッシュであり、自コア内アクセス可能記憶手段８２（自コア内アクセス可能記憶手段６２）は、一のコア８０（一のコア６０）におけるローカルメモリであってもよい。
【００９８】
また、他コアアクセス可能記憶手段８１（他コアアクセス可能記憶手段６１）は、一のコア８０（一のコア６０）におけるキャッシュであり、自コア内アクセス可能記憶手段８２（自コア内アクセス可能記憶手段６２）は、キャッシュにおいて他のコア８０（他のコア６０）におけるキャッシュとの一貫性制御が停止された領域であってもよい。
【産業上の利用可能性】
【００９９】
データセンターで各マシンの使用状況を収集し、統計情報を計算する機能を持つ管理サーバに本発明を適用可能である。また、ＯｐｅｎＦｌｏｗネットワークシステムにおいて、ネットワーク全体の制御を行うコントローラにも本発明を適用可能である。
【符号の説明】
【０１００】
１  コンピュータ
２  マルチコアプロセッサ
３  メモリ
４−１，４−２  コア
５−１，５−２  キャッシュ
６−１，６−２  ローカルメモリ
７，８  暗号化計算プログラム処理部
９  ユーザプログラム処理部
１１  暗号化データ保持部
１２  結果データ保持部
１３  復号化部
１４  暗号化部
１５  平文データ保持部
１６  暗号鍵保持部
１７，１９  計算部
１８  平文結果データ保持部
２０  第２の暗号鍵保持部
【図１】
2012147095.tif 000003
【図２】
2012147095.tif 000004
【図３】
2012147095.tif 000005
【図４】
2012147095.tif 000006
【図５】
2012147095.tif 000007
【図６】
2012147095.tif 000008
【図７】
2012147095.tif 000009
【図８】
2012147095.tif 000010
【図９】
2012147095.tif 000011
【図１０】
2012147095.tif 000012
【図１１】
2012147095.tif 000013
【図１２】
2012147095.tif 000014
【図１３】
2012147095.tif 000015