(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-01-04
(45)【発行日】2024-01-15
(54)【発明の名称】演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラム
(51)【国際特許分類】
G06F 21/57 20130101AFI20240105BHJP
【FI】
G06F21/57 350
(21)【出願番号】P 2023546151
(86)(22)【出願日】2023-06-29
(86)【国際出願番号】 JP2023024185
【審査請求日】2023-07-28
(31)【優先権主張番号】P 2022104907
(32)【優先日】2022-06-29
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】521131030
【氏名又は名称】セーラ・ネットワークス株式会社
(74)【代理人】
【識別番号】100207066
【氏名又は名称】米山 毅
(72)【発明者】
【氏名】小塚 真啓
(72)【発明者】
【氏名】川西 智也
(72)【発明者】
【氏名】大平 健司
【審査官】小林 秀和
(56)【参考文献】
【文献】米国特許第09584517(US,B1)
【文献】米国特許出願公開第2019/0034218(US,A1)
【文献】特開2021-124992(JP,A)
【文献】米国特許出願公開第2017/0032119(US,A1)
【文献】特表2022-522643(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
外部からセキュアプログラムを取得可能な演算処理装置であって、
CPU、入出力装置及び記憶装置を少なくとも含むハードウェアと、前記ハードウェアを管理するハイパバイザと、前記ハイパバイザにより仮想的な演算処理環境を提供された1つ以上の仮想演算処理装置と、を少なくとも備え、
前記仮想演算処理装置が、ゲストOSと、メモリと、を少なくとも有し、
前記ハードウェアが前記仮想演算処理装置のみから利用できる形で、外部から仮想演算処理装置毎に前記メモリにブートローダを転送し、
前記ブートローダが、前記仮想演算処理装置において、前記セキュアプログラムを起動
し、
前記ブートローダが、前記ゲストOS、又は前記セキュアプログラムの少なくともいずれか1つを取得し、
前記ゲストOSが、前記ブートローダによって取得され、起動されたものであり、
前記ゲストOSが、前記セキュアプログラムを取得することを特徴とする演算処理装置。
【請求項2】
前記ゲストOSが、前記セキュアプログラムとしてセキュアハイパバイザを取得することを特徴とする請求項1に記載の演算処理装置。
【請求項3】
前記ブートローダの転送と共に、前記ゲストOS、又は前記セキュアプログラ
ムの少なくともいずれか1つを転送することを特徴とする請求項1に記載の演算処理装置。
【請求項4】
前記セキュアプログラムとしてセキュアハイパバイザを転送することを特徴とする請求項3に記載の演算処理装置。
【請求項5】
前記仮想演算処理装置が前記セキュアハイパバイザにより管理され、
前記セキュアハイパバイザが、外部の情報提供装置から取得した提供情報に添付された付加情報によって規定された使用条件の範囲内で演算処理が行われるように管理することを特徴とする請求項
2又は4に記載の演算処理装置。
【請求項6】
前記セキュアプログラムは、セキュアハイパバイザ、OS、ゲーム、データサイエンスの処理基盤、AI、及び、リバースエンジニアリングを防ぎたいような知的財産的価値が含まれるプログラムのいずれか少なくとも1つを含むプログラムであることを特徴とする請求項1に記載の演算処理装置。
【請求項7】
請求項1記載の演算処理装置と、前記演算処理装置を管理する管理サーバと、を少なくとも備えた演算処理システムであって、
前記管理サーバが前記仮想演算処理装置に提供する前記セキュアプログラムを管理するセキュアプログラム管理部を少なくとも有することを特徴とする演算処理システム。
【請求項8】
外部からセキュアプログラムを取得可能な演算処理装置による演算処理方法であって、
前記演算処理装置は、CPU、入出力装置及び記憶装置を少なくとも含むハードウェアと、前記ハードウェアを管理するハイパバイザと、前記ハイパバイザにより仮想的な演算処理環境を提供された1つ以上の仮想演算処理装置と、を少なくとも備え、
前記仮想演算処理装置が、ゲストOSと、メモリと、を少なくとも有し、
前記ハードウェアが前記仮想演算処理装置のみから利用できる形で、外部から仮想演算処理装置毎に前記メモリにブートローダを転送するステップと、
前記ブートローダが、前記仮想演算処理装置において、前記セキュアプログラムを起動するステップと、
前記ブートローダが、前記ゲストOS、又は前記セキュアプログラムの少なくともいずれか1つを取得するステップと、
前記ゲストOSが、前記ブートローダによって取得され、起動されるステップと、
前記ゲストOSが、前記セキュアプログラムを取得するステップと、
を含むことを特徴とする演算処理方法。
【請求項9】
前記セキュアプログラムは、セキュアハイパバイザ、OS、ゲーム、データサイエンスの処理基盤、AI、及び、リバースエンジニアリングを防ぎたいような知的財産的価値が含まれるプログラムのいずれか少なくとも1つを含むプログラムであることを特徴とする請求項
8に記載の演算処理方法。
【請求項10】
請求項
8又は9に記載の演算処理方法の各ステップをコンピュータにより実行することを特徴とする演算処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラムに関する。
【背景技術】
【0002】
従来、ハイパバイザを用いて複数の仮想計算機を動作させる計算機システムが知られている。特許文献1には、クライアントから利用される仮想計算機に割り当てられている記憶空間に格納された全てのコード群をスキャンできる計算機システムが開示されている。特許文献1記載の計算機システムでは、クライアントから利用される一般仮想計算機の外部に、クライアントに対して隠蔽される特殊仮想計算機が用意され、特殊仮想計算機が一般仮想計算機に割り当てられている記憶空間から読み出されたコード群をスキャンする。
【0003】
また、特許文献2には、ゲストOS上に特別なエージェントを設置することなしに、ゲストOSやゲストOS上で動作しているアプリケーションに対してセキュリティポリシの強制を行うことができる仮想計算機システムが開示されている。特許文献2記載の仮想計算機システムでは、仮想計算機システムに適用されるセキュリティポリシがゲストOSの種類またはアプリケーションの種類に応じた設定項目の設定値からなる設定項目情報を保持する設定項目情報保持手段、ゲストOSが実行する命令および物理デバイスの出力を監視して、設定項目情報保持手段の設定項目に設定されている設定値または変更されようとしている設定値を検出する設定検出手段、及び、設定検出手段によって検出された設定値と設定項目情報で示される設定値とが相違するとき、設定項目の設定対象であるゲストOSまたはアプリケーションに、設定項目情報で示される設定値を適用させる設定適用手段をハイパバイザが備えている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2010-055318号公報
【文献】国際公開第2009/081530号
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記特許文献1に記載の仮想計算機システムでは、スキャナが、一般仮想計算機の記憶空間からコード群を読み出すアシストと、読み出されたコード群をスキャンするエンジンとで構成され、エンジンが、特殊仮想計算機で実行され、アシストが、ハイパバイザで実行される。このため、一般仮想計算機の記憶空間にあるコード群がハイパバイザにより管理されるため、一般仮想計算機の利用者にとって、ハイパバイザが信頼できるシステムであることが前提であればセキュア環境が維持されるが、一般的なネットワーク上において、全ての仮想計算機システムにおけるハイパバイザが信頼できるとは限らないため、セキュア環境を維持することは困難である。
【0006】
上記特許文献2に記載の仮想計算機システムでは、ハイパバイザが設定検出手段によって検出された設定値と設定項目情報で示される設定値とが相違するとき、設定項目の設定対象であるゲストOSまたはアプリケーションに、設定項目情報で示される設定値を適用させる設定適用手段を備えており、ゲストOSやゲストOS上で動作しているアプリケーションに対してセキュリティポリシの強制を行うことができるものであるが、ハイパバイザが信頼できるシステムであることが前提となる。ところが、上述のとおり、一般的なネットワーク上において、全ての仮想計算機システムにおけるハイパバイザが信頼できるとは限らないため、ゲストOS利用者にとって、セキュア環境を維持することは困難である。
【0007】
そこで、本発明の目的は、ハイパバイザが信頼できないシステムにおいても、演算処理装置、演算処理システム、演算処理方法、又は演算処理プログラムをセキュアに演算処理できる環境を提供することにある。
【0008】
本発明の上記目的は、以下の構成によって達成できる。すなわち、本発明の第1の態様の演算処理装置は、外部からセキュアプログラムを取得可能な演算処理装置であって、CPU、入出力装置及び記憶装置を少なくとも含むハードウェアと、前記ハードウェアを管理するハイパバイザと、前記ハイパバイザにより仮想的な演算処理環境を提供された1つ以上の仮想演算処理装置と、を少なくとも備え、前記仮想演算処理装置が、ゲストOSと、メモリと、を少なくとも有し、前記ハードウェアが前記仮想演算処理装置のみから利用できる形で、外部から仮想演算処理装置毎に前記メモリにブートローダを転送し、前記ブートローダが、前記仮想演算処理装置において、前記セキュアプログラムを起動し、前記ブートローダが、前記ゲストOS、又は前記セキュアプログラムの少なくともいずれか1つを取得し、前記ゲストOSが、前記ブートローダによって取得され、起動されたものであり、前記ゲストOSが、前記セキュアプログラムを取得することを特徴とする。
【0012】
本発明の第2の態様の演算処理装置は、第1の態様の演算処理装置において、前記ゲストOSが、前記セキュアプログラムとしてセキュアハイパバイザを取得することを特徴とする。
【0013】
本発明の第3の態様の演算処理システムは、第1態様の演算処理装置において、前記ブートローダの転送と共に、前記ゲストOS、又は前記セキュアプログラムの少なくともいずれか1つを転送することを特徴とする。
本発明の第4の態様の演算処理システムは、第3態様の演算処理装置において、前記セキュアプログラムとしてセキュアハイパバイザを転送することを特徴とする。
【0014】
本発明の第5の態様の演算処理システムは、第2又は第4の態様の演算処理装置において、前記仮想演算処理装置が前記セキュアハイパバイザにより管理され、前記セキュアハイパバイザが、外部の情報提供装置から取得した提供情報に添付された付加情報によって規定された使用条件の範囲内で演算処理が行われるように管理することを特徴とする。
【0015】
本発明の第6の態様の演算処理システムは、第1の態様の演算処理装置において、前記セキュアプログラムは、セキュアハイパバイザ、OS、ゲーム、データサイエンスの処理基盤、AI、及び、リバースエンジニアリングを防ぎたいような知的財産的価値が含まれるプログラムのいずれか少なくとも1つを含むプログラムであることを特徴とする。
【0016】
本発明の第7の態様の演算処理システムは、第1の態様の演算処理装置と、前記演算処理装置を管理する管理サーバと、を少なくとも備えた演算処理システムであって、前記管理サーバが前記仮想演算処理装置に提供する前記セキュアプログラムを管理するセキュアプログラム管理部を少なくとも有することを特徴とする。
【0017】
本発明の第8の態様の演算処理方法は、外部からセキュアプログラムを取得可能な演算処理装置による演算処理方法であって、前記演算処理装置は、CPU、入出力装置及び記憶装置を少なくとも含むハードウェアと、前記ハードウェアを管理するハイパバイザと、前記ハイパバイザにより仮想的な演算処理環境を提供された1つ以上の仮想演算処理装置と、を少なくとも備え、前記仮想演算処理装置が、ゲストOSと、メモリと、を少なくとも有し、前記ハードウェアが前記仮想演算処理装置のみから利用できる形で、外部から仮想演算処理装置毎に前記メモリにブートローダを転送するステップと、前記ブートローダが、前記仮想演算処理装置において、前記セキュアプログラムを起動するステップと、前記ブートローダが、前記ゲストOS、又は前記セキュアプログラムの少なくともいずれか1つを取得するステップと、前記ゲストOSが、前記ブートローダによって取得され、起動されるステップと、前記ゲストOSが、前記セキュアプログラムを取得するステップと、を含むことを特徴とする。
【0018】
本発明の第9の態様の演算処理方法は、第8の態様の演算処理方法において、前記セキュアプログラムは、セキュアハイパバイザ、OS、ゲーム、データサイエンスの処理基盤、AI、及び、リバースエンジニアリングを防ぎたいような知的財産的価値が含まれるプログラムのいずれか少なくとも1つを含むプログラムであることを特徴とする。
【0019】
本発明の第10の態様の演算処理プログラムは、第8又は第9態様の演算処理方法の各ステップをコンピュータにより実行することを特徴とする。
【発明の効果】
【0020】
本発明の実施形態によれば、ハイパバイザが信頼できないシステムにおいても、セキュアな演算処理環境を提供することができる。
【図面の簡単な説明】
【0021】
【
図5】セキュアプログラムをダウンロードするフロー図である。
【発明を実施するための形態】
【0022】
以下、図面を参照して本発明の実施形態に係る演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラムを説明する。但し、以下に示す実施形態は本発明の技術思想を具体化するための演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラムを例示するものであって、本発明をこれらに特定するものではなく、特許請求の範囲に含まれるその他の実施形態のものにも等しく適用し得るものである。
【0023】
[第1実施形態]
本発明の第1実施形態に係る演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラムについて、
図1~
図5を参照して説明する。まず、
図1~
図3を用いて、演算処理システムの一例として、セキュアハイパバイザ24の下で演算処理を行う仮想演算処理装置50を挙げて説明する。なお、本実施形態では、セキュアプログラム54として、セキュアハイパバイザ24を例に挙げて説明するが、本発明はこれに限定されるものではなく、第2実施形態で説明するように、セキュアプログラム54としては、例えばOS自体、ゲーム等、さまざまなプログラムが含まれる。
【0024】
図1は、演算処理システムの全体ブロック図である。演算処理システムは、情報提供装置10、演算処理装置20及び管理サーバ30を備えており、情報提供装置10、演算処理装置20及び管理サーバ30はそれぞれ情報ネットワーク40により相互に接続されている。情報提供装置10及び演算処理装置20は1個以上設けられている。
【0025】
図2は、演算処理システムの動作説明図である。情報提供装置10は、検証データ作成部11及びデータベース12を備えている。検証データ作成部11とデータベース12とは相互に接続され、検証データ作成部11を介してデータベース12の情報は、演算処理装置20に提供可能とされている。
【0026】
検証データ作成部11は演算処理装置20のデータ要求部22からのデータ要求情報に応じて、管理サーバ30のセキュアプログラム管理部31から提供された情報提供装置用プログラムに基づくCPU(図示省略)による演算により、後述のように検証用データ、及び、演算処理検証に用いられる検証用演算結果データを出力する。また、検証データ作成部11は、同様に、例えば予め入出力手段(図示省略)等により設定され、あるいは、データベース12に保管されたデータ利用制限情報に基づき、情報提供装置用プログラムに従ったCPUによる演算により、演算処理装置20に対する権限リストのデータを作成する。さらに、検証データ作成部11は、情報提供装置用プログラムに従って、データベース12にアクセスして要求データ、すなわち、実際に演算処理装置20の演算に用いられるデータを取得する。そして、検証データ作成部11は、これらのデータを提供情報として、演算処理装置20のプログラム検証部23に送信する。
【0027】
演算処理装置20は、後述のとおり、1つ以上の仮想演算処理装置50を備えている。仮想演算処理装置50は、演算処理プログラム実行部21、データ要求部22、プログラム検証部23を有している。演算処理プログラム実行部21、データ要求部22、プログラム検証部23はいずれもセキュアハイパバイザ24により管理されている。ここで、セキュアハイパバイザ24とは、OS(ここでは仮想演算処理装置50のゲストOS51)が管理している資源を排他的に、例えば閲覧をはじめとする他者の利用をそのままでは許さないように管理するプログラム、別の表現では、OSを統制が取れた環境の下で管理するプログラムを意味する。なお、排他的とは、例えば他者に漏洩、改ざんされないような管理を意図している(以下同様)。本実施形態では、後述のセキュアプログラム54の一例として、セキュアハイパバイザ24を採用した場合を挙げて説明する。ここで、セキュアプログラム54とは、セキュアな仮想環境の下において実行されるプログラムである。
例えばセキュアプログラム管理部31から提供された演算処理装置用プログラムに基づき、OSが管理している資源を排他的に管理することができる。例えば、後述の
図4のような仮想演算処理システムの場合、演算処理装置20のハードウェア61を管理するハイパバイザ60が信頼できないようなシステムにおいても、セキュアハイパバイザ24を、各仮想演算処理装置50にインストールしておくことで、管理サーバ30により統制が取れた環境を維持し、セキュアな仮想演算処理装置50を提供することができる。
【0028】
演算処理プログラム実行部21からデータ要求部22に対して、演算処理プログラムが要求するデータを情報提供装置10に対して要求し、この要求に応じて情報提供装置10からプログラム検証部23へ要求データを含む提供情報が送信される。プログラム検証部23においては、演算処理プログラムが検証され、適正であった場合には、演算処理プログラム実行部21に要求データが提供される。
【0029】
データ要求部22及びプログラム検証部23はいずれも、演算処理装置用プログラムに従ってセキュアハイパバイザ24により管理されており、セキュアなOS環境の中で、データ要求部22によるデータ要求情報の演算処理や、プログラム検証部23によるプログラム検証及び演算処理プログラムへの要求データの提供処理等の各種演算処理が仮想演算処理装置50により実行される。同様に、演算処理プログラム実行部21における処理も同様に、セキュアなOS(ゲストOS51)環境の整った仮想演算処理装置50により実行される。
【0030】
情報提供装置10及び仮想演算処理装置50は、管理サーバ30に接続されており、情報提供装置10の検証データ作成部11及び仮想演算処理装置50のセキュアハイパバイザ24のプログラムは、管理サーバ30のセキュアプログラム管理部31から提供され、これらのプログラムはセキュアプログラム管理部31により管理されている。これにより、演算処理システムは、情報提供プラットフォーム上で統制がとれた環境の中で情報の提供及び情報の利用が行われる。情報提供装置10と演算処理装置20との通信を行う際のデータの暗号化、復号及び電子署名のアルゴリズムも、このセキュアプログラム管理部31により管理されている。
【0031】
仮想演算処理装置50に対して、情報提供装置10から要求データが提供される手順について説明する。
【0032】
(1)演算処理プログラム実行部21からの要求に応じて、データ要求部22において、演算処理プログラムが必要とする要求データを各情報提供装置10に対して要求するためのデータ要求情報を作成する。
【0033】
(2)データ要求部22から情報提供装置10の検証データ作成部11に対して、データ要求情報が送信される。
【0034】
(3)検証データ作成部11において、対象とする演算処理プログラムを検証するための検証データを作成する。
【0035】
(4)検証データ作成部11から演算処理装置20のプログラム検証部23へ、データベース12に保管されている要求データ及び演算処理プログラムに許容される演算処理の範囲や使用制限の条件を規定した付加情報が含まれる提供情報が送信される。
【0036】
(5)プログラム検証部23において、対象とする演算処理プログラムが認証された場合には、演算処理プログラム実行部21に要求データが提供され、演算処理プログラムによる演算処理が実行される。
【0037】
上記(1)のデータ要求情報の作成について詳しく説明する。演算処理プログラム実行部21で実行される処理対象の演算処理プログラムは、例えば次の演算処理プログラムP1のようなRustのプログラムである。演算処理プログラムP1は、線形回帰分析の例であり、要求データ(データ群)に対して、最小二乗法(OLS)を用いた線形回帰を行う。
【0038】
【0039】
データ要求情報には、要求データに関する指示である、最小二乗法を用いた線形回帰を行うための要求データの情報に加え、処理対象となる演算プログラムとしての演算処理プログラムP1の情報、例えばソースプログラムの情報が含まれる。なお、演算処理プログラムの情報としては、ソースプログラムだけに限られるものではなく、入力に対する出力の関係を特定できる情報、例えば、処理内容が事前に検証され、確認されている専用ハードウェアを直接に接続する、そのようなハードウェアを直列したものに接続する等、演算処理プログラムの処理内容が把握できるものであればどのような情報であってもかまわない。
【0040】
上記(2)においては、データ要求部22から情報提供装置10の検証データ作成部11に対して、データ要求情報が送信される。データ要求情報はセキュアプログラム管理部31で管理されるプロトコルに従って暗号化されることが望ましい。
【0041】
上記(3)の検証データ作成部11における検証データ作成について詳しく説明する。検証データ作成部11では、データ要求情報が暗号化されている場合には、セキュアプログラム管理部31で管理されるプロトコルに従って復号される。次に、検証データ作成部11では、演算処理装置20において処理対象の演算処理プログラムに許容する演算処理の範囲を規定するための情報を生成する。
【0042】
検証データ作成部11では、データ要求情報に付与された演算処理プログラムの処理内容を解析し、演算処理プログラムが適正であるかどうかを検証するために必要な情報を生成し、提供情報に付加する。このため検証データ作成部11からプログラム検証部23に送信される提供情報には、次の情報が含まれている。
(a)演算処理装置20において演算処理プログラムに許容される演算処理の範囲や使用制限の条件を規定した権限情報、例えば権限リスト
(b)検証用データ
(c)演算処理検証に用いられる検証用演算結果データ
(d)要求データ(実際の演算に用いられるデータ)
【0043】
上記(4)では、検証データ作成部11から演算処理装置20のプログラム検証部23へ要求データ及び演算処理プログラムに許容される演算処理の範囲を規定した付加情報が含まれる提供情報が送信される。提供情報の中、少なくとも上記(b)(c)及び(d)はセキュアプログラム管理部31で管理されるプロトコルに従って暗号化されることが望ましい。上記(a)も併せて暗号化を行ってもよい。さらに、提供情報に電子署名を付加することにより、より確実に改ざんを防ぐことができる。
【0044】
上記(5)のプログラム検証部23の処理について詳細に説明する。プログラム検証部23においては、提供情報に含まれている上記(b)及び(c)を用いて、上記(b)の検証用データを用いてデータ処理対象の処理プログラムを実行した場合の結果が、上記(c)の演算処理検証に用いられる検証用演算結果データと一致するかどうかを検証する。
【0045】
さらに、上記(b)の検証用データを用いてデータ処理対象の処理プログラムを実行した場合に、処理プログラムが上記(a)の権限情報で許される範囲を超えた処理をしていないかどうかが判定される。
【0046】
例えば、権限情報としての権限リストに、データ保存に関し、演算結果の保存が許可されているが、要求データ自体の保存は許可されていない場合には、演算処理装置20が、演算結果を保存することは許可されるが、要求データ自体を別途保存しておくことは許可されない。このため、上記(b)の検証用データを用いてデータ処理対象の処理プログラムを実行した場合に、データ保存が権限リストの範囲にあるかどうかが検証される。
【0047】
仮想演算処理装置50のセキュアハイパバイザ24は、セキュアプログラム管理部31により提供されたプログラムにより、常に統制された環境で動作されている。このため、仮想演算処理装置50のプログラム検証部23及び演算処理プログラム実行部21において実行される演算処理プログラムの演算処理はセキュアハイパバイザ24により常に監視することが可能であり、データの保存、転送、削除等の処理内容は常に把握されている。このために、本実施例の演算処理システムにおいては、上記(b)の検証用データを用いてデータ処理対象の処理プログラムを実行した場合に、データ保存が権限リストの範囲にあるかどうかを適切に検証することが可能である。
【0048】
上記(b)の検証用データを用いてプログラム検証部23にて処理対象の演算処理プログラムを実行した場合の結果が、上記(c)の演算処理検証に用いられる検証用演算結果データと一致し、かつ、上記(b)の検証用データを用いてデータ処理対象の処理プログラムを実行した場合に、処理プログラムが上記(a)の権限情報で許される範囲を越えた処理をしていないと判定された場合に、処理対象の演算処理プログラムは適正であると判断され、すなわち、適正な演算処理プログラムとして認証される。
【0049】
演算処理プログラムが適正なプログラムとして認証されると、上記(d)の要求データが演算処理プログラムに提供され、演算処理プログラム実行部21において、演算処理プログラムは要求データを用いて実際の演算を行う。
【0050】
図3は、仮想演算処理装置50の動作説明図である。データ要求部22、プログラム検証部23、演算処理プログラム実行部21、メモリ25及びそれ以外の入出力装置(図示省略)等は、全てセキュアハイパバイザ24により管理された環境の中で処理されている。これによりセキュアハイパバイザ24によりゲストOS51の全ての動作を管理できる状態、すなわち、ゲストOS51のセキュアな実行環境を実現することができる。なお、
図3の仮想演算処理装置50の動作説明図は、本実施形態の一例であり、他の様々な構成によって、OSのセキュア化を実現することもできる。
【0051】
演算処理プログラム実行部21において関数28は、全てのデータ29を、ライブラリ27を介して送受している。メモリ25内には、ライブラリ27だけがアクセス可能なライブラリ専用領域が仮想的に設けられており、例えば、プログラム検証部23を介して入手された要求データはメモリ25内のライブラリ専用領域に格納される。また、例えば
図3において、データ29はメモリ25内のライブラリ専用領域に記憶されているものである。関数28は、メモリ25内のライブラリ専用領域に格納された要求データにアクセスできる。そして、関数28は、メモリ25のデータ29を、ライブラリ27を経由して受け取る。関数28は受け取ったデータ29を用いて、演算処理装置20のCPUにより関数28に従って演算を行う。関数28の演算の終了後、演算処理プログラムによる最終的な演算結果リストだけがユーザに提供され、メモリ25内のデータ29の領域にある演算途中に用いられたデータ29は完全に削除される。データ29を完全に削除する方法としては、特に限定されるものではないが、例えばデータを全て「0」で埋めること等の適宜の方法を採用可能である。また、関数28は、演算結果のリストのみをユーザに提供する。
【0052】
このように、関数28は、セキュアハイパバイザ24の完全な管理のもと、ライブラリ27を介して全てのデータ29の送受を行っているため、演算処理装置20内におけるメモリ25内のライブラリ専用領域以外の領域に要求データや演算途中のデータ29を残すことがなく、要求データはライブラリ27内にのみセキュアハイパバイザ24が管理可能な状態で格納されている。したがって、セキュアハイパバイザ24は、情報提供装置10から受信した権限リストに規定された権限の範囲内で要求データを使用し、ライブラリ27内で要求データを確実に管理することができる。また、上述のとおり、メモリ25内のライブラリ専用領域のデータ29は完全に削除することが可能である。
【0053】
ここでは、OS(ゲストOS51)をセキュア化する例を説明したが、演算処理プログラム実行部21の演算で用いられるアプリケーションを仮想化することにより、演算処理装置20の動作をセキュアハイパバイザ24により管理することも可能である。この場合には、アプリケーションによる演算が開始された後、アプリケーションにより要求データが呼び出される前に、セキュアハイパバイザ24が全ての動作を管理する仮想的な環境(以下「セキュア環境」という。)内でアプリケーションを動作させる。次に、アプリケーションから演算結果を出力されると、セキュアハイパバイザ24は、ユーザに対して演算結果のリストだけを提供すると共に、要求データ及び演算途中のデータ29を削除した後に、アプリケーションはセキュア環境から演算処理装置20の通常演算環境での動作に戻される。したがって、アプリケーション仮想化の場合にも、セキュアハイパバイザ24は、アプリケーションをセキュア環境において管理するため、情報提供装置10から受信した権限リストに規定された権限の範囲内であることを監視する。すわなち、権限リストの規定に応じて、コンソールへの出力を制限すること、ファイルに書き込むこと、ネットワーク通信を行うこと等を禁止する。また、例えば認証されたGPUを用いることにより、セキュアハイパバイザ24の管理のもとでユーザに対して演算結果のみを提示することができる。
【0054】
ここでは、1つのプログラム毎に認証する例を示したが、本実施例はこれに限定されるものではなく、例えば、複数のプログラムを予め認証しておき、認証済みの複数のプログラムを組み合わせて演算を行うことも可能である。
【0055】
図4は、演算処理装置20のブロック図である。演算処理装置20は、1つ以上の仮想演算処理装置50、ハイパバイザ60、及びハードウェア61を備えている。ハイパバイザ60は演算処理装置20のハードウェア61を管理し、仮想演算処理装置50に対し仮想的な物理環境としての演算処理環境を提供する。ハードウェア61はCPU、入出力装置及び記憶装置を少なくとも含む演算処理装置20のハードウェア資源である。また、演算処理装置20は、ホストOS62及び管理者ユーザインターフェイス63を備えている。なお、演算処理装置20は、仮想演算処理装置50用のユーザインターフェイス等も備えているが、図示省略されている。
【0056】
仮想演算処理装置50は、ゲストOS51、メモリ52及びセキュアハイパバイザ24を備えている。また、メモリ52には、ブートローダ53及びセキュアプログラム54が格納されている。ブートローダ53は、セキュアプログラム54を取得するためのものであり、セキュアプログラム管理部31から、ハイパバイザ60に監視されることなく、すなわち、ハイパバイザ60に情報の内容を読まれることなく(以下同様)、ハードウェア61の機能を利用してメモリ52に転送される。なお、ブートローダ53は各ゲストOS51に対して同一の内容とすることができる。ここで、セキュアプログラム54とは、セキュアな仮想環境の下において実行されるプログラムである。特に限定されるものではないが、本実施形態では、セキュアプログラム54として、セキュアハイパバイザ24を採用した場合を例示して説明する。また、メモリ52は、ハードウェア61の機能を利用して暗号化されているため、ハイパバイザ60やホストOS62、管理者ユーザインターフェイス63、他の仮想演算処理装置50はその内容を読み書きすることはできない。
【0057】
ゲストOS51は第1公開鍵により暗号化されており、ブートローダ53によってセキュアプログラム管理部31から取得され、第1秘密鍵を用いて復号されて起動される。なお、第1秘密鍵とは、ゲストOSを取得するためにブートローダ53に組み込まれている秘密鍵である。セキュアプログラム54は第2公開鍵により暗号化されており、ゲストOS51によってセキュアプログラム管理部31から取得され、第2秘密鍵によって、復号される。なお、第2秘密鍵とは、セキュアプログラム54を取得するために、ゲストOS51に含まれている秘密鍵である。そして、セキュアハイパバイザ24はセキュアプログラム54を立ち上げることにより、有効化される。
【0058】
セキュアハイパバイザ24の管理のもと、ゲストOS51が管理サーバ30により管理されている情報提供装置10から情報を取得し、仮想演算処理装置50においては、事前に承認された情報利用条件の範囲内で、すなわち要求データ及び演算処理プログラムに許容される演算処理の範囲や使用制限の条件を規定した付加情報の範囲内で、演算処理を実行する。
【0059】
ここで、演算処理装置20のCPUを含むハードウェア61は信頼できる。ここで、信頼できるとは、例えば改ざんや漏洩を起こさないものとして信頼できることを意味する(以下同様)。ただし、演算処理装置20のハイパバイザ60は必ずしも信頼できるとは限らないので、本実施形態では、ハイパバイザ60が信頼できない環境であっても、安全に、セキュアにセキュアハイパバイザ24を各仮想演算処理装置50にインストールする手段を提供することができる。
【0060】
次に、
図5を参照して、仮想演算処理装置50において、セキュアハイパバイザ24が有効化されるまでの手順を説明する。
図5は、セキュアプログラム54をダウンロードするフロー図である。仮想演算処理装置50のセキュアハイパバイザ24は、セキュアプログラム管理部31から取得されて有効化されるが、ハイパバイザ60が信頼できない環境においては、ハイパバイザ60に読み取られない暗号通信を用いて各ゲストOS51に対応する仮想演算処理装置50にインストールする必要がある。
【0061】
(手順1)管理サーバ30との手続(S1)
管理サーバ30のセキュアプログラム管理部31により管理されたセキュア環境において、情報提供装置10から提供された提供情報が悪用されることがないように管理しながら、演算処理装置20において提供情報を利用した演算処理を実行して、その演算結果を活用することができるようにする。このために、演算処理装置20の管理者は、各仮想演算処理装置50にブートローダ53及びセキュアハイパバイザ24をインストールするために、管理者ユーザインターフェイス63からの入力により、管理サーバ30に対してハードウェア61の情報をセキュアプログラム管理部31に登録する(S1)。管理者ユーザインターフェイス63からの登録要求時の通信を暗号通信とした場合には、セキュアプログラム管理部31がハードウェア61が真正なものかどうかを判別することができる。例えば、仮想演算処理装置50毎にメモリ52を暗号化できる機能を持つCPU、具体的にはAMDのSEVでは、ハードウェア61(CPU)の公開鍵を登録する。ハードウェア61を登録するための情報は、管理者ユーザインターフェイス63から、ハイパバイザ60、ハードウェア61を介して、セキュアプログラム管理部31に送信される。
【0062】
(手順2)ブートローダ53の転送(S2-S3)
S2では、演算処理装置20の管理者は、管理者ユーザインターフェイス63から、セキュアプログラム管理部31に対して、ハイパバイザ60、ハードウェア61を介して、ブートローダ53の転送要求を行う。具体的には、ハイパバイザ60がハードウェア61の公開鍵を用いて、ハードウェア61を介し、セキュアプログラム管理部31に対して、ブートローダ53の転送要求を行う。
【0063】
S3では、セキュアプログラム管理部31は、ハードウェア61、ハイパバイザ60を介して、メモリ52にブートローダ53を転送する。このとき、ブートローダ53の転送要求の内容についてはハイパバイザ60からは読めない形で、ブートローダ53の転送処理が行われる。この際に、ブートローダ53の転送情報は、仮想演算処理装置50のみから利用できる形で、例えば、実行しているハードウェア61のみが読める形で暗号化されているので、第1秘密鍵を含むプログラムの内容はハイパバイザ60では読むことができない。このため、ハイパバイザ60で監視されることなく、セキュアプログラム管理部31から、ハードウェア61の機能を利用してブートローダ53をメモリ52に転送することができる。また、ここではメモリ52に転送することを説明したが、本実施形態はこれに限定されるものではなく、例えばハードディスク等に保存しておいても良い。ハードディスク等に保存しておく場合には、仮想演算処理装置50を起動する度にブートローダ53の転送を繰り返す必要がなくなる。
【0064】
(手順3)メモリ52の暗号化(S4-S5)
S4では、管理者ユーザインターフェイス63から、ハイパバイザ60を介して、ハードウェア61に仮想演算処理装置50の起動要求を行う。
【0065】
S5では、ハイパバイザ60からの指令により、ハードウェア61がメモリ52の暗号化を行う。ハイパバイザ60はメモリ52を仮想演算処理装置50毎に暗号化されるようにハードウェア61に指示する。すると、ハードウェア61はメモリ52を仮想演算処理装置50毎に暗号化する。例えば、AMDのSEVでは、仮想演算処理装置50毎に自動的に異なる暗号鍵を用いてメモリ52が暗号化される。このとき、ハイパバイザ60はメモリ52を暗号化する指令について、暗号化に用いられる暗号鍵を読むことができない。なお、ここではS2からS5までのフローを説明したが、本実施形態はこのフローに限定されるものではなく、例えばS2におけるブートローダ53の転送要求及びS3におけるブートローダ53の転送については、S5におけるメモリ52の暗号化の後に行ってもよいし、すでにハードディスク等にブートローダ53が格納されている場合には、仮想演算処理装置50の起動のたびにブートローダ53を再度読み込む必要はない。
【0066】
(手順4)ブートローダ53の各メモリ52への展開(S6)
S4において、管理者ユーザインターフェイス63から、ハイパバイザ60を介して、ハードウェア61に仮想演算処理装置50の起動要求が行われると、S5の後に、S6では、ハードウェア61は、ブートローダ53をメモリ52毎に展開する。このとき、ハイパバイザ60は、メモリ52毎に展開される第1秘密鍵を含むブートローダ53のプログラムを読むことはできない。
【0067】
S3では、ブートローダ53は、ハードウェア61の機能を利用してメモリ52に転送されると共に、S6では、ブートローダ53は、ハードウェア61の機能を利用して各メモリ52に展開される。この際に、仮想演算処理装置50の起動要求により転送される情報は仮想演算処理装置50のみから利用できる形で、例えば、実行しているハードウェア61のみが読むことができる形で暗号化されているので、第1秘密鍵が含まれるプログラムの内容はハイパバイザ60では読むことができない。このため、ハイパバイザ60で監視されることなく、セキュアプログラム管理部31から、ハードウェア61の機能を利用してブートローダ53をメモリ52に転送し、各メモリ52に展開することができる。例えば、このブートローダ53の各メモリ52への転送及び展開には、ハードウェア61のCPUが有している、ある仮想演算処理装置50の実行状態を保存し、別の仮想演算処理装置50の下で実行できるようにするマイグレーション(Migration)機能を利用することができる。このMigration機能を用いれば、メモリ52が暗号化されている仮想演算処理装置50の場合でも、別の仮想演算処理装置50のメモリ52にその内容を展開することができる。
【0068】
例えば、CPUがAMD社のSEVである場合には、Migration機能をサポートしており、演算処理装置20の管理者は、ハイパバイザ60に監視されることなく、SEVの機能として、ブートローダ53をメモリ52に転送すると共に、仮想演算処理装置50毎に各メモリ52にブートローダ53を展開することができる。SEVのMigration機能においては、ブートローダ53は、転送時にはハードウェア61毎に暗号化されており、また、ブートローダ53の仮想演算処理装置50毎に暗号化されたメモリイメージをつくることができ、演算処理装置20内の全ての仮想演算処理装置50に対して、同一のメモリ52の内容を仮想演算処理装置50毎に暗号化された形で展開することができる。
【0069】
また、S6において、ハードウェア61はメモリ52に展開されたブートローダ53を仮想演算処理装置50毎に立ち上げる。
【0070】
(手順4)ゲストOS51の立上げ(S7-S8)
S7では、ブートローダ53が、セキュアプログラム管理部31に対して、ゲストOS51立上げ要求を送信する。ゲストOS51立上げ要求は、ブートローダ53からハードウェア61を介して、セキュアプログラム管理部31に送信される。S8では、このゲストOS51立上げ要求を受け取ると、セキュアプログラム管理部31はメモリ52へゲストOS51を転送する。ゲストOS51は、セキュアプログラム管理部31から、ハードウェア61を介して、メモリ52に送信される。このとき、ブートローダ53は第1秘密鍵を用いて、仮想演算処理装置50毎にゲストOS51を立ち上げる。すなわち、セキュアプログラム管理部31がメモリ52にゲストOS51を転送する際の暗号通信は、第1公開鍵によって暗号化されており、第1秘密鍵がないと復号できないため、ハイパパイザから監視されることはない。この暗号通信には、例えば、TLS1.3を用いることができる。
【0071】
(手順5)セキュアプログラム54の取得(S9-S10)
ゲストOS51は第2秘密鍵を用いた暗号通信によりセキュアプログラム管理部31からセキュアプログラム54を取得し、メモリ52に格納する。S9にて、ゲストOS51は、セキュアプログラム54の取得要求を、ハードウェア61を介して、セキュアプログラム管理部31に送信する。セキュアプログラム54の取得要求を受け取ると、セキュアプログラム管理部31は、S10にて、セキュアプログラム54をハードウェア61を介して、メモリ52に送信する。このセキュアプログラム54を転送する際の暗号通信は、第2公開鍵によって暗号化されており、また、暗号化されたメモリ52にセキュアプログラム54が格納されるため、仮想演算処理装置50はハイパバイザ60により監視されることなく、セキュアプログラム54を取得することができる。この暗号通信には、例えば、TLS1.3を用いることができる。
【0072】
(手順6)セキュアハイパバイザ24の起動(S11-S12)
S11にて、ゲストOS51は、手順5で取得されてメモリ52に保存されているセキュアプログラム54を起動し、S12ではセキュアハイパバイザ24が実行され、これにより、仮想演算処理装置50において、セキュアハイパバイザ24が有効化される。
図4は、セキュアハイパバイザ24が有効となっている場合のブロック図である。ゲストOS51は、セキュアハイパバイザ24による管理のもと、秘密鍵を用いた暗号通信により、管理サーバ30により管理されている情報提供装置10から提供情報を取得し、付加情報によって規定された使用条件の範囲内で演算処理を行う。なお、
図4には省略されているが、仮想演算処理装置50には、
図2で説明したように、演算処理プログラム実行部21、データ要求部22及びプログラム検証部23が設けられており、セキュアハイパバイザ24により管理された状態で、提供情報の取得及び演算処理が行われる。
【0073】
以上の手順によって、仮想演算処理装置50にセキュアハイパバイザ24がインストールされる。ハードウェア61のCPUの持つMigration機能や暗号化機能を用いて、信頼性のないハイパバイザ60を備える演算処理装置20であっても、各仮想演算処理装置50においてセキュアハイパバイザ24によるセキュアな環境を構築することができる。暗号化には公開鍵暗号方式が用いられているため、パスワード管理などの煩わしさを解消することができる。公開鍵および秘密鍵は、セキュアプログラム管理部31において自由に設定可能である。
【0074】
暗合通信には例えばTLS1.3通信を用いることができる。二方向の認証ができる通信である。管理サーバ30側が秘密鍵を持つ場合には、公開鍵が広く公開されている中で、管理サーバ30自身が真正な管理サーバであることを保証する。一方、ゲストOS51側が秘密鍵を持つ場合には、ゲストOS51自身が真正なOSであることを保証する。このため、公開鍵暗号方式を使わない場合と比べて、ワンタイムパスワードの配信等、パスワード管理を省略することができる。
【0075】
また、本実施形態においては、第1秘密鍵の暗号の壁の中で、さらに第2秘密鍵を保持しているため、信頼性が高い仮想演算処理装置50を提供できる。すなわち、ブートローダ53がゲストOS51を立ち上げる際に、セキュアプログラム管理部31からメモリ52に転送されるゲストOS51は第2秘密鍵を含んだ形で、第1公開鍵により暗号化されていて、第1秘密鍵がないと復号できない。そして、ゲストOS51がセキュアプログラム54をダウンロードする際に、第2公開鍵により暗号化された通信が利用され、第2秘密鍵がなければ復号できない。ブートローダ53を転送する時点で第1秘密鍵が仮想演算処理装置50に配信されており、この第1秘密鍵は暗号化されたメモリ52の中で保護される。
【0076】
上記手順2において、S2及びS3では、セキュアプログラム管理部31がメモリ52にブートローダ53を転送するものとして説明したが、本実施形態はこの手順に限定されるものではなく、例えば、ブートローダ53を転送と共に、ゲストOS51、セキュアプログラム54、又はセキュアハイパバイザ24の少なくともいずれか1つを転送するようにしてもよい。そして、このようなプログラムの転送の際にも同様に、ハイパバイザ60に監視されることがないため、ハイパバイザ60が信頼できない環境であっても、各仮想演算処理装置50に安全に各プログラム(ブートローダ53、ゲストOS51、セキュアプログラム54、及びセキュアハイパバイザ24等)をメモリ52に転送することが可能である。また、ブートリーダ53の転送と共に他のプログラムを同時に転送した場合には、その後の手順は必ずしも上記手順3~6に限定されるものではなく、プログラムの転送の際にハイパバイザ60に監視されることがない限りにおいては、任意の手順とすることができる。
【0077】
[第2実施形態]
本発明の第2実施形態に係る演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラムについて説明する。第1実施形態では、セキュアプログラム54がセキュアハイパバイザ24である例を説明したが、本実施形態では、セキュアプログラム54がセキュアハイパバイザ24以外の例について説明する。本実施形態のように、仮想環境のもとでは、セキュアプログラム54として、OS自体、ゲーム、データサイエンスの処理基盤、AI、リバースエンジニアリングを防ぎたいような知的財産的価値が含まれるプログラム等、他にも様々なプログラムを利用することができる。例えば、データサイエンスの処理基盤としては、データ収集、データ蓄積、データ加工、及びデータ分析等が含まれる。AIの例としては、機械学習等が挙げられる。また、リバースエンジニアリングを防ぎたいような知的財産的価値が含まれるプログラムとは、プログラムに使用されているアルゴリズムに発明が含まれているもの、プログラムで使用するデータ構造に発明や著作権が含まれているもの、プログラムで使用するデータに営業秘密ないし不正競争法で保護される情報が含まれているもの、機械学習の学習済みモデルや学習データが含まれているもの等であり、プログラム自体又は当該プログラムが使用するデータに、発明、著作権、営業秘密、不正競争防止法で保護される情報等が含まれているプログラムを意味する。いずれのセキュアプログラム54をメモリ52に転送する際にも、第1実施形態と同様に、ハイパバイザ60に監視されることがない。そのため、ハイパバイザ60が信頼できない環境であっても、各仮想演算処理装置50に安全にセキュアプログラム54をメモリ52に転送することが可能である。
【0078】
セキュアプログラム54がOS自体である場合には、第1実施形態におけるS1~S8と同様の手順で、OSを立ち上げることが可能である。また、セキュアプログラム54がゲーム、データサイエンスの処理基盤、AI、リバースエンジニアリングを防ぎたいような知的財産的価値が含まれるプログラム等である場合には、第1実施形態におけるS1~S10と同様の手順で、メモリ52にセキュアプログラム54の転送を行うことができる。
【0079】
また、第1実施形態においては、手順4において、S7では、ブートローダ53が、セキュアプログラム管理部31に対して、ゲストOS51立上げ要求を送信し、まずゲストOS51が、セキュアプログラム管理部31から、ハードウェア61を介して、メモリ52に送信されるものとして説明したが、本実施形態はこの手順に限定されるものではなく、ブートローダ53は、ゲストOS51、セキュアプログラム54、又はセキュアハイパバイザ24の少なくともいずれか1つを取得するものであればよい。このため、例えばブートローダ53が、ゲストOS51の転送と同時に、あるいは、ゲストOS51の転送に替えて、セキュアプログラム54、又はセキュアハイパバイザ24の転送を行うようにするようにしてもよい。すなわち、第1実施形態ではゲストOS51の立ち上げ後にセキュアプログラム54を転送するものとして説明したが、必ずしもゲストOS51の立ち上げや、その手順が必須であるものではなく、ブートローダ53は、任意のセキュアプログラム54の転送を行うことができ、このセキュアプログラム54の転送の際には、実施形態1と同様にハイパバイザ60に監視されることがない。そのため、ハイパバイザ60が信頼できない環境であっても、各仮想演算処理装置50に安全にセキュアプログラム54をメモリ52に転送することが可能である。
【0080】
以上、本発明のいくつかの実施形態について説明したが、これらの実施形態における本発明の技術思想を具体化するための演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラムを例示するものであって、本発明をこれらに特定するものではなく、その他の実施形態のものにも等しく適用し得るものであり、また、これらの実施形態の一部を省略、追加、変更することや、各実施形態の態様を組み合わせることが可能である。
【符号の説明】
【0081】
10…情報提供装置
11…検証データ作成部
12…データベース
20…演算処理装置
21…演算処理プログラム実行部
22…データ要求部
23…プログラム検証部
24…セキュアハイパバイザ
25…メモリ
27…ライブラリ
28…関数
29…データ
30…管理サーバ
31…セキュアプログラム管理部
40…情報ネットワーク
50…仮想演算処理装置
51…ゲストOS
52…メモリ
53…ブートローダ
54…セキュアプログラム
60…ハイパバイザ
61…ハードウェア
62…ホストOS
63…管理者ユーザインターフェイス
【要約】
ハイパバイザが信頼できないシステムにおいても、セキュアな演算処理環境を提供すること。本発明の1つの実施形態に係る演算処理装置は、外部からセキュアプログラムを取得可能な演算処理装置であって、CPU、入出力装置及び記憶装置を少なくとも含むハードウェアと、前記ハードウェアを管理するハイパバイザと、前記ハイパバイザにより仮想的な演算処理環境を提供された1つ以上の仮想演算処理装置と、を少なくとも備え、前記仮想演算処理装置が、ゲストOSと、メモリと、を少なくとも有し、前記ハードウェアが前記仮想演算処理装置のみから利用できる形で、外部から仮想演算処理装置毎に前記メモリにブートローダを転送し、前記ブートローダが、前記セキュアプログラムを取得し、前記仮想演算処理装置において、当該セキュアプログラムを起動することを特徴とする。