IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特開2024-53012プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム
<>
  • 特開-プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム 図1
  • 特開-プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム 図2
  • 特開-プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム 図3
  • 特開-プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム 図4
  • 特開-プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム 図5
  • 特開-プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム 図6
  • 特開-プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024053012
(43)【公開日】2024-04-12
(54)【発明の名称】プログラム実行システム、データ処理装置、データ保持装置、プログラム実行方法、及びプログラム
(51)【国際特許分類】
   H04L 9/14 20060101AFI20240405BHJP
   G06F 21/60 20130101ALI20240405BHJP
   G06F 21/12 20130101ALI20240405BHJP
【FI】
H04L9/14
G06F21/60 320
G06F21/12
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2024033659
(22)【出願日】2024-03-06
(62)【分割の表示】P 2022561232の分割
【原出願日】2020-11-13
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】奥田 哲矢
(72)【発明者】
【氏名】千田 浩司
(72)【発明者】
【氏名】彈 雄一郎
(72)【発明者】
【氏名】鈴木 亮平
(57)【要約】
【課題】データ保持装置の不正を防止する。
【解決手段】データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムであって、前記データ保持装置が、共通鍵で暗号化した暗号化データを前記データ処理装置に送信し、前記データ処理装置は、前記セキュア領域において、前記共通鍵で前記暗号化データを復号することによりデータを取得し、前記データに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化し、前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、前記データ保持装置は、暗号化した前記実行結果を、秘密鍵又は前記共通鍵を用いて復号することで前記実行結果を取得する。
【選択図】図4
【特許請求の範囲】
【請求項1】
データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムであって、
前記データ保持装置が、共通鍵で暗号化した暗号化データを前記データ処理装置に送信し、
前記データ処理装置は、前記セキュア領域において、前記共通鍵で前記暗号化データを復号することによりデータを取得し、前記データに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化し、
前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、
前記データ保持装置は、暗号化した前記実行結果を、秘密鍵又は前記共通鍵を用いて復号することで前記実行結果を取得する
プログラム実行システム。
【請求項2】
データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムであって、
前記データ処理装置は、前記データ保持装置の公開鍵で暗号化した暗号化データを事前に保持し、
前記データ保持装置が、共通鍵で暗号化した暗号化秘密鍵を前記データ処理装置に送信し、
前記データ処理装置は、前記セキュア領域において、前記共通鍵で前記暗号化秘密鍵を復号することにより秘密鍵を取得し、当該秘密鍵で前記暗号化データを復号することによりデータを取得し、前記データに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化し、
前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、
前記データ保持装置は、暗号化した前記実行結果を、秘密鍵又は前記共通鍵を用いて復号することで前記実行結果を取得する
プログラム実行システム。
【請求項3】
前記データ処理装置は、インタプリタを含むアプリケーションを実行することにより、前記プログラムが含まれるセキュア領域を起動し、前記インタプリタが、前記プログラムの解釈を行う
請求項2に記載のプログラム実行システム。
【請求項4】
前記データ処理装置は、前記セキュア領域において、前記プログラムを実行した後に、前記データと前記実行結果とを廃棄する
請求項1ないし3のうちいずれか1項に記載のプログラム実行システム。
【請求項5】
データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムにおける前記データ処理装置であって、
前記データ保持装置から、共通鍵で暗号化した暗号化データを受信する受信手段と、
前記セキュア領域において、前記共通鍵で前記暗号化データを復号することによりデータを取得し、前記データに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化する処理手段と、
暗号化した前記実行結果を前記データ保持装置に送信する送信手段と
を備えるデータ処理装置。
【請求項6】
データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムにおける前記データ処理装置であって、
前記データ保持装置の公開鍵で暗号化した暗号化データを保持する格納手段と、
前記データ保持装置から、共通鍵で暗号化した暗号化秘密鍵を受信する受信手段と、
前記セキュア領域において、前記共通鍵で前記暗号化秘密鍵を復号することにより秘密鍵を取得し、当該秘密鍵で前記暗号化データを復号することによりデータを取得し、前記データに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化する処理手段と、
暗号化した前記実行結果を前記データ保持装置に送信する送信手段と
を備えるデータ処理装置。
【請求項7】
データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムにおける前記データ保持装置であって、
共通鍵で暗号化した暗号化データを前記データ処理装置に送信する送信手段と、
前記データ処理装置が、前記セキュア領域において、前記共通鍵で前記暗号化データを復号することにより取得したデータに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化した実行結果を受信する受信手段と、
秘密鍵又は前記共通鍵を用いて復号することで前記実行結果を取得する復号手段と
を備えるデータ保持装置。
【請求項8】
データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムにおける前記データ保持装置であって、
共通鍵で暗号化した暗号化秘密鍵を前記データ処理装置に送信する送信手段と、
前記データ処理装置が、前記セキュア領域において、前記共通鍵で前記暗号化秘密鍵を復号することにより取得した秘密鍵で、暗号化データを復号することにより取得したデータに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化した実行結果を受信する受信手段と、
秘密鍵又は前記共通鍵を用いて復号することで前記実行結果を取得する復号手段と
を備えるデータ保持装置。
【請求項9】
データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムにおけるプログラム実行方法であって、
前記データ保持装置が、共通鍵で暗号化した暗号化データを前記データ処理装置に送信し、
前記データ処理装置は、前記セキュア領域において、前記共通鍵で前記暗号化データを復号することによりデータを取得し、前記データに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化し、
前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、
前記データ保持装置は、暗号化した前記実行結果を、秘密鍵又は前記共通鍵を用いて復号することで前記実行結果を取得する
プログラム実行方法。
【請求項10】
コンピュータを、請求項5又は6に記載のデータ処理装置における各手段として機能させるためのプログラム。
【請求項11】
コンピュータを、請求項7又は8に記載のデータ保持装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報通信分野における秘匿実行技術に関連するものである。
【背景技術】
【0002】
クラウド事業者にデータやプログラムを秘匿したまま計算を行う従来技術として、例えば、Confidential Computing(非特許文献1)やConfidential VM(先行技術文献2)等がある。これらの技術により、例えば、機密性の高いデータがクラウドで処理されている間も、そのデータを隔離して秘密に保つことができる。
【0003】
しかし、これらの従来技術では、データとプログラムを別々のユーザが所持している場合に、お互いのユーザにデータやプログラムが漏れるリスクについては考慮していない。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Microsoft Azure Confidential Computing 公式ページhttps://docs.microsoft.com/ja-jp/azure/confidential-computing/overview
【非特許文献2】Google Confidential VM 公式ページhttps://cloud.google.com/compute/confidential-vm/docs?hl=ja
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は上記の点に鑑みてなされたものであり、秘匿計算機構を備えるデータ処理装置により、プログラム提供者のプログラムでデータ保持者のデータを処理する場合において、プログラム提供者にはデータが漏れず、データ保持者にはプログラムが漏れないようにする技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
開示の技術によれば、データ保持装置と、セキュア領域を備えるデータ処理装置とを備えるプログラム実行システムであって、
前記データ保持装置が、共通鍵で暗号化した暗号化データを前記データ処理装置に送信し、
前記データ処理装置は、前記セキュア領域において、前記共通鍵で前記暗号化データを復号することによりデータを取得し、前記データに対してプログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記共通鍵で暗号化し、
前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、
前記データ保持装置は、暗号化した前記実行結果を、秘密鍵又は前記共通鍵を用いて復号することで前記実行結果を取得する
プログラム実行システムが提供される。
【発明の効果】
【0007】
開示の技術によれば、秘匿計算機構を備えるデータ処理装置により、プログラム提供者のプログラムでデータ保持者のデータを処理する場合において、プログラム提供者にはデータが漏れず、データ保持者にはプログラムが漏れないようにする技術が提供される。
【図面の簡単な説明】
【0008】
図1】本発明の実施の形態におけるシステム構成図である。
図2】データ処理装置の機能構成図である。
図3】セキュア領域での処理のイメージを示す図である。
図4】実施例1における処理の流れを示すシーケンス図である。
図5】実施例2における処理の流れを示すシーケンス図である。
図6】実施例3における処理の流れを示すシーケンス図である。
図7】装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。なお、以下の説明において、プログラムをPと表記し、Pの処理対象となるデータをDと表記し、PによるDの処理結果をP(D)と表記する。
【0010】
(システム構成)
【0011】
図1に本発明の実施の形態におけるプログラム実行システムの構成例を示す。図1に示すように、本実施の形態におけるプログラム実行システムは、データ処理装置100、データ保持装置200、プログラム提供装置300を有する。
【0012】
データ処理装置100、データ保持装置200、プログラム提供装置300はそれぞれ物理マシン(コンピュータ)であってもよいし、クラウド上の仮想マシンであってもよい。また、データ保持装置200とプログラム提供装置300はそれぞれ、物理マシンあるいは仮想マシン上で動作する機能(例:Webブラウザ)であってもよい。
【0013】
本実施の形態では、データ処理装置100は、データ処理を既存のOSから隔離して実行するTrusted Execution Environment(TEE)機能(秘密計算機構あるいは秘匿計算機構と呼んでもよい)を有している。本実施の形態では、この機能として、例えばIntel(登録商標)のSGXを想定しているが、これは例であり、本発明はどのようなTEE機能にも適用可能である。例えば、AMD(登録商標)のSEV、Arm(登録商標)のTrustZone(登録商標)等にも本発明を適用可能である。
【0014】
図1に示すように、データ処理装置100とデータ保持装置200との間、及びデータ処理装置100とプログラム提供装置300との間にはセキュアチャネル400が構築され、データやプログラムを安全に送受信できる。このセキュアチャネルは、例えば、SGXにおけるRemote Attestationと呼ばれる遠隔認証プロトコルにより構築される。ただし、これは例であり、セキュアチャネルをどのような手段で構築してもよい。
【0015】
本実施の形態では、プログラム提供装置300からプログラムPがデータ処理装置100に送信され、データ保持装置200からデータDがデータ処理装置100に送信され、データ処理装置100がプログラムPによりデータDを処理し、実行結果P(D)をデータ保持装置200に提供する。
【0016】
データ処理装置100は、その秘密計算機構により、プログラムPとデータDをセキュア領域の外部(例えば、データ処理装置100が動作しているクラウド上)に漏らさないようになっている。本実施の形態では、これに加えて、データ保持装置200にプログラムPが漏れず、プログラム提供装置300にデータDが漏れない仕組みを実現している。
【0017】
これにより、本実施の形態のプログラム実行システムでは、秘密計算機構をデータ流通に適用したユースケースにおいて、機密性の高いデータDを有するデータホルダ(データ保持装置200)と機密性の高いプログラムPを有するプログラムオーサ(プログラム提供装置300)が、データ/プログラムを互いに秘匿したまま組み合わせて実行可能となる。
【0018】
(データ処理装置の構成例)
図2に、データ処理装置100の機能構成例を示す。図2に示すように、データ処理装置100は、セキュア領域110、通信部120、データ格納部130、データ処理部140を有する。
【0019】
セキュア領域110は機密性が保たれた保護領域であり、この中のデータやプログラムについては、外部からその内容を知ることができない。セキュア領域110の外部では、通常のデータ格納、データ処理(プログラム実行)、送受信を行うことが可能である。通信部120により、アクセス制御を行うことも可能である。
【0020】
セキュア領域110内では機密性を保ったままデータ格納、データ処理(プログラムの実行)が可能である。図2には、セキュア領域110内でこれらを行う機能部として、セキュアデータ格納部111、セキュア処理部112が示されている。
【0021】
セキュア領域110自体は既存技術により実現可能である。セキュア領域110を実現する既存技術としてどのような技術を使用してもよい。例えば、メインのCPUやメモリとはハードウェア的に独立した別チップとしてセキュア領域110を実現してもよいし、暗号技術・認証技術を活用してソフトウェア的にセキュア領域110を実現してもよい。ソフトウェア的にセキュア領域110を実現する技術として、例えば、前述したSGXがあり、本実施の形態では一例としてSGXを使用することを想定している。
【0022】
セキュア領域110をEnclaveと呼んでもよい。後述するように、本実施の形態におけるセキュア領域110は、データ処理装置100において、TA(Trusted Application)を実行することで起動(生成)される。
【0023】
図3にセキュア領域110でのデータ処理のイメージを示す。なお、本実施の形態において、「Enc」は暗号化を意味する。例えば、Enc(D)は、暗号化されたデータである。
【0024】
図3に示すように、データ処理装置100は、Enc(D)をデータ保持装置200から受信し、Enc(P)をプログラム提供装置300から受信する。
【0025】
セキュア領域110において、Enc(D)とEnc(P)はそれぞれ復号され、DとPが得られる。更に、セキュア領域110において、P(D)が計算され、更にEnc(P(D))が計算される。Enc(P(D))は、データ保持装置200に送信される。このように、セキュア領域110での計算と暗号化通信の組み合わせにより、データ保持装置200にプログラムPが漏れず、プログラム提供装置300にデータDが漏れない仕組みを実現している。
【0026】
以下、本実施の形態における処理フローの例として、実施例1~3を説明する。以下の各実施例において、共通鍵の生成(共有)においては、Remote Attestationの仕組みを使用することを想定している。より具体的には、楕円曲線ディフィーヘルマン鍵共有プロトコル(ECDHKE)に、データ処理装置100を検証する仕組みを差し込んだプロトコルを使用する。本実施の形態では、これをAttestation付きECDHEと呼ぶ。
【0027】
データ処理装置100の検証においては、第三者検証機関(例:IAS(Intel Attestation Service))が介在するが、第三者検証機関が介在して共通鍵の生成を行う処理自体は、Remote Attestationとして既存技術であるため、実施例1~3の説明では、Remote Attestationに関わる処理の説明は概要のみとし、本発明に関わる部分を詳細に説明している。
【0028】
以下の説明において、HAはホストアプリケーションであり、例えば標準入出力等のプログラムである。HAは、データ処理装置100におけるセキュア領域110の外部で動作するプログラムである。PKp、SKpはそれぞれ、プログラム提供装置300の公開鍵、秘密鍵である。PKd、SKdはそれぞれ、データ保持装置200の公開鍵、秘密鍵である。また、Enc(A,B)は、B(鍵)でAを暗号化した情報を意味する。H(A)は、Aのハッシュ値を意味する。Sig(H(A),B)は、B(秘密鍵)によるAに対する署名を意味する。MAC(A,B)は、B(共通鍵)を用いたAに対するメッセージ認証コードである。
【0029】
(実施例1)
まず、図4を参照して、実施例1を説明する。図4の処理フローの前提として、データ保持装置200は、D、PKd、SKdを保持し、プログラム提供装置300は、HA,TA、P、PKp、SKpを保持する。なお、プログラム提供装置300において、PをTA、HAとともにパッケージング出来るように、事前にTA、HAをSDKあるいはライブラリ形式で、データ処理装置100の運営事業者からプログラム提供装置300に提供してもよい。
【0030】
また、実施例1では、データ処理装置100が、各ユーザ(データ保持装置200、プログラム提供装置300)にWebサービスを提供することを想定しており、一般的なWebサービスで利用される、ユーザ認証(各ユーザ)及びサーバ認証(データ処理装置100)は行われている前提とする。
【0031】
S101において、Attestation付きECDHEにより、データ処理装置100とプログラム提供装置300はそれぞれ共通鍵Ktを生成(計算)する。
【0032】
S102において、プログラム提供装置300は、Enc(TA,Kt)、PKp、MAC(PKp,Kt)、Sig(H(Enc(TA,Kt)),SKp)をデータ処理装置100に送信する。
【0033】
データ処理装置100は、S102で受信した情報から、署名を検証して、Ktを用いてTAを復号するとともに、PKpを得る。S103において、データ処理装置100は、TAを実行することにより、セキュア領域110を起動(生成)する。
【0034】
なお、データ処理装置100がPKpを取得する方法は上記の方法に限られない。例えば、公開鍵を管理する外部の信頼されたサーバから、PKpを取得してもよい。
【0035】
S104において、Attestation付きECDHEにより、データ処理装置100とプログラム提供装置300はそれぞれ共通鍵Kpを生成し保持する。データ処理装置100では、セキュア領域110において共通鍵Kpを生成し、セキュア領域110に共通鍵Kpが保持される。
【0036】
S105において、Attestation付きECDHEにより、データ処理装置100とデータ保持装置200はそれぞれ共通鍵Kdを生成し保持する。データ処理装置100では、セキュア領域110で共通鍵Kdを生成し、セキュア領域110に共通鍵Kdが保持される。
【0037】
なお、S103の前に、データ処理装置100は、プログラム提供装置300の署名を検証済であるが、データ保持装置200に対する署名は検証していない。そこで、データ処理装置100は、S105を実行する前に、セキュア領域110がデータ保持装置200と鍵交換してよいかどうかを判断するアクセス制御を実行してもよい。例えば、プログラム提供装置300により許可されたデータ保持装置200を記載したアクセスリストを用いることで、プログラム提供装置300により許可されたデータ保持装置200とのみ鍵交換を行うことができる。
【0038】
S106において、プログラム提供装置300は、KpでPを暗号化する。S107において、プログラム提供装置300は、Enc(P,Kp)、SIG(H(Enc(P,Kp)),SKp)をデータ処理装置100に送信する。
【0039】
S108において、データ処理装置100は、署名を検証し、セキュア領域110において、KpでPを復号し、Pを保持する。
【0040】
S109において、データ保持装置200は、KdでDを暗号化する。S110において、データ保持装置200は、Enc(D,Kd)、PKd、MAC(PKd,Kd)をデータ処理装置100に送信する。
【0041】
S111において、データ処理装置100は、MACを検証し、セキュア領域110において、KdでDを復号し、P(D)を計算する。また、データ処理装置100は、セキュア領域110にPKdを保持する。
【0042】
S112において、データ処理装置100は、セキュア領域110に保持しているDを廃棄する。この廃棄のタイミングは、PによるDの処理が終了した直後でよい。PについてもDと同様に破棄してもよい。
【0043】
S113において、データ処理装置100は、セキュア領域110に保持しているP(D)を、PKdを用いて暗号化することで、HybEnc(P(D),PKd)を得る。
【0044】
S114において、データ処理装置100は、HybEnc(P(D),PKd)をデータ保持装置200に送信する。S115において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、HybEnc(P(D),PKd)を生成した直後、あるいは、HybEnc(P(D),PKd)を送信した直後でよい。HybEnc(P(D),PKd)については、監査やバックアップ等のために保管しておいてもよい。
【0045】
S116において、データ保持装置200は、SKdを用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0046】
なお、上記の例では、PKd、SKdを用いることにより公開鍵ベースでP(D)の暗号化、復号を行っているが、これに代えて、Kdを用いてP(D)の暗号化、復号を行ってもよい。すなわち、下記のようにしてもよい。
【0047】
S113において、データ処理装置100は、セキュア領域110に保持しているP(D)を、Kdを用いて暗号化することで、Enc(P(D),Kd)を得る。
【0048】
S114において、データ処理装置100は、Enc(P(D),Kd)をデータ保持装置200に送信する。S115において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、Enc(P(D),Kd)を生成した直後、あるいは、Enc(P(D),Kd)を送信した直後でよい。Enc(P(D),Kd)については、監査やバックアップ等のために保管しておいてもよい。
【0049】
S116において、データ保持装置200は、Kdを用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0050】
なお、上記の処理フローにおいて、データ処理装置100の通信部120は、PあるいはDに関わるセキュア領域110による通信以外の通信を遮断することとしてもよい。特に、データ保持装置200以外へのダウンロード通信を遮断することとしてもよい。
【0051】
実施例1によれば、主にプログラムオーサ(プログラム提供装置300)の視点で、P、Dをデータ処理装置100に対して秘匿しつつ、Pをデータホルダ(データ保持装置200)に対して秘匿しつつ、D、P(D)をプログラムオーサ(プログラム提供装置300)が与り知ることなく、P(D)の実行結果をデータホルダ(データ保持装置200)に提供できる。
【0052】
(実施例2)
次に、図5を参照して、実施例2を説明する。図5の処理フローの前提として、データ保持装置200は、D、PKd、SKdを保持し、プログラム提供装置300は、HA,TA、P、PKp、SKpを保持する。なお、プログラム提供装置300において、PをTA、HAとともにパッケージング出来るように、事前にTA、HAをSDKあるいはライブラリ形式で、データ処理装置100の運営事業者からプログラム提供装置300に提供してもよい。
【0053】
また、実施例2では、データ処理装置100が、各ユーザ(データ保持装置200、プログラム提供装置300)にWebサービスを提供することを想定しており、一般的なWebサービスで利用される、ユーザ認証(各ユーザ)及びサーバ認証(データ処理装置100)は行われている前提とする。
【0054】
S201において、データ保持装置200は、DをPKdで暗号化したHybEnc(D,PKd)をデータ処理装置100に送信する。S202において、プログラム提供装置300は、PをPKpで暗号化したHybEnc(P,PKp)をデータ処理装置100に送信する。
【0055】
HybEnc(D,PKd)とHybEnc(P,PKp)はそれぞれデータ処理装置100のストレージ(セキュア領域110の外にあるデータ格納部130)に格納される。なお、HybEnc(D,PKd)とHybEnc(P,PKp)はオフラインでデータ処理装置100に格納されてもよい。
【0056】
S203において、Attestation付きECDHEにより、データ処理装置100とプログラム提供装置300はそれぞれ共通鍵Ktを生成(計算)する。
【0057】
S204において、プログラム提供装置300は、Enc(TA,Kt)、PKp、MAC(PKp,Kt)、Sig(H(Enc(TA,Kt)),SKp)をデータ処理装置100に送信する。
【0058】
データ処理装置100は、S204で受信した情報からPKpを得るとともに、Ktを用いてTAを復号する。S205において、データ処理装置100は、TAを実行することにより、セキュア領域110を起動(生成)する。
【0059】
なお、データ処理装置100がPKpを取得する方法は上記の方法に限られない。例えば、公開鍵を管理する外部の信頼されたサーバから、PKpを取得してもよい。
【0060】
S206において、Attestation付きECDHEにより、データ処理装置100とプログラム提供装置300はそれぞれ共通鍵Kpを生成し保持する。データ処理装置100では、セキュア領域110で共通鍵Kpを生成し、セキュア領域110に共通鍵Kpが保持される。
【0061】
S207において、Attestation付きECDHEにより、データ処理装置100とデータ保持装置200はそれぞれ共通鍵Kdを生成し保持する。データ処理装置100では、セキュア領域110で共通鍵Kdを生成し、セキュア領域110に共通鍵Kdが保持される。
【0062】
なお、S205の前に、データ処理装置100は、プログラム提供装置300の署名を検証済であるが、データ保持装置200に対する署名は検証していない。そこで、データ処理装置100は、S207を実行する前に、セキュア領域110がデータ保持装置200と鍵交換してよいかどうかを判断するアクセス制御を実行してもよい。例えば、プログラム提供装置300により許可されたデータ保持装置200を記載したアクセスリストを用いることで、プログラム提供装置300により許可されたデータ保持装置200とのみ鍵交換を行うことができる。
【0063】
S208において、プログラム提供装置300は、KpでSKpを暗号化する。S209において、プログラム提供装置300は、Enc(SKp,Kp)、SIG(H(Enc(SKp,Kp)),SKp)をデータ処理装置100に送信する。
【0064】
S210において、データ処理装置100は、署名検証を行って、セキュア領域110において、KpでSKpを復号し、SKpでHybEnc(P,PKp)からPを復号する。SKpを用いた復号完了後、データ処理装置100は、SKpを廃棄する。
【0065】
S211において、データ保持装置200は、KdでSKdを暗号化する。S212において、データ保持装置200は、Enc(SKd,Kd)、PKd、MAC(PKd,Kd)をデータ処理装置100に送信する。
【0066】
S213において、データ処理装置100は、署名検証を行って、セキュア領域110において、KdでSKdを復号し、SKdでHybEnc(D,PKd)からDを復号する。SKdを用いた復号完了後、データ処理装置100は、SKdを廃棄する。また、セキュア領域110において、PKdを保持する。
【0067】
S214において、データ処理装置100は、セキュア領域110において、P(D)を計算する。S215において、データ処理装置100は、セキュア領域110に保持しているDを廃棄する。この廃棄のタイミングは、PによるDの処理が終了した直後でよい。また、PについてもDと同様に破棄してもよい。
【0068】
S216において、データ処理装置100は、セキュア領域110に保持しているP(D)を、PKdを用いて暗号化することで、HybEnc(P(D),PKd)を得る。
【0069】
S217において、データ処理装置100は、HybEnc(P(D),PKd)をデータ保持装置200に送信する。S218において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、HybEnc(P(D),PKd)を生成した直後、あるいは、HybEnc(P(D),PKd)を送信した直後でよい。HybEnc(P(D),PKd)については、監査やバックアップ等のために保管しておいてもよい。
【0070】
S219において、データ保持装置200は、SKdを用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0071】
なお、上記の例では、PKd、SKdを用いることにより公開鍵ベースでP(D)の暗号化、復号を行っているが、これに代えて、データ処理装置100とデータ保持装置200とで共有される共通鍵(ここでは、第2共通鍵、Kd2と呼ぶ)を用いてP(D)の暗号化、復号を行ってもよい。すなわち、下記のようにしてもよい。
【0072】
S216において、データ処理装置100は、セキュア領域110に保持しているP(D)を、Kd2を用いて暗号化することで、Enc(P(D),Kd2)を得る。
【0073】
S217において、データ処理装置100は、Enc(P(D),Kd2)をデータ保持装置200に送信する。S218において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、Enc(P(D),Kd2)を生成した直後、あるいは、Enc(P(D),Kd2)を送信した直後でよい。Enc(P(D),Kd2)については、監査やバックアップ等のために保管しておいてもよい。
【0074】
S219において、データ保持装置200は、Kd2を用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0075】
また、上記の例では、S201、S202において、公開鍵でD、Pを暗号化しているが、これに代えて、共通鍵を用いてD、Pを暗号化してもよい。すなわち、下記のようにしてもよい。
【0076】
S201において、データ保持装置200は、DをKd2で暗号化したEnc(D,Kd2)をデータ処理装置100に送信する。S202において、プログラム提供装置300は、PをKp2で暗号化したEnc(P,Kp2)をデータ処理装置100に送信する。
【0077】
Enc(D,Kd2)とEnc(P,Kp2)はそれぞれデータ処理装置100のストレージ(セキュア領域110の外にあるデータ格納部130)に格納される。なお、Enc(D,Kd2)とEnc(P,Kp2)はオフラインでデータ処理装置100に格納されてもよい。
【0078】
このケースの場合、秘密鍵/公開鍵をプログラム提供装置300/データ保持装置200からデータ処理装置100に送信する必要はない。ただし、S208~S210で説明したSKpを送受信する処理と同様の処理で、プログラム提供装置300からデータ処理装置100に対してKp2を送信し、データ処理装置100はKp2を取得する。また、S211~S213で説明したSKdを送受信する処理と同様の処理で、データ保持装置200からデータ処理装置100に対してKd2を送信し、データ処理装置100はKd2を取得する。
【0079】
S205においてセキュア領域が起動された後、データ処理装置100は、Kd2でDを復号し、Kp2でPを復号する。S214において、データ処理装置100は、セキュア領域110において、P(D)を計算する。S215において、データ処理装置100は、セキュア領域110に保持しているDを廃棄する。この廃棄のタイミングは、PによるDの処理が終了した直後でよい。また、PについてもDと同様に破棄してもよい。
【0080】
S216において、データ処理装置100は、セキュア領域110に保持しているP(D)を、Kd2を用いて暗号化することで、Enc(P(D),Kd2)を得る。
【0081】
S217において、データ処理装置100は、Enc(P(D),Kd2)をデータ保持装置200に送信する。S218において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、Enc(P(D),Kd2)を生成した直後、あるいは、Enc(P(D),Kd2)を送信した直後でよい。Enc(P(D),Kd2)については、監査やバックアップ等のために保管しておいてもよい。
【0082】
S219において、データ保持装置200は、Kd2を用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0083】
なお、上記の処理フローにおいて、データ処理装置100の通信部120は、PあるいはDに関わるセキュア領域110による通信以外の通信を遮断することとしてもよい。特に、データ保持装置200以外へのダウンロード通信を遮断することとしてもよい。
【0084】
実施例1と同様に、実施例2によれば、主にプログラムオーサ(プログラム提供装置300)の視点で、P、Dをデータ処理装置100に対して秘匿しつつ、Pをデータホルダ(データ保持装置200)に対して秘匿しつつ、D、P(D)をプログラムオーサ(プログラム提供装置300)が与り知ることなく、P(D)の実行結果をデータホルダ(データ保持装置200)に提供できる。
【0085】
また、実施例2によれば、PとDを暗号化して予めデータ処理装置100に格納しておくので、サイズの小さい鍵(SKp、SKd)をデータ処理装置100に送るだけで、PとDを用いた所望のデータ処理を実現できる。これにより、プログラムPやデータDのサイズが大きい場合でも、アップロード時間などのユーザ待ち時間が増加しない。
【0086】
また、データ処理装置100の具体的実現形態の一例として想定されるクラウドにおけるクラウドストレージを、暗号化したPとDの格納場所として利用できるので、クラウドストレージを利用しているユーザに対して実施例2に係るサービスを容易に提供できる。
【0087】
(実施例3)
次に、図6を参照して、実施例3を説明する。図6の処理フローの前提として、データ保持装置200は、D、PKd、SKdを保持し、プログラム提供装置300は、HA,TA、P、PKp、SKpを保持する。なお、プログラム提供装置300において、PをTA、HAとともにパッケージング出来るように、事前にTA、HAをSDKあるいはライブラリ形式で、データ処理装置100の運営事業者からプログラム提供装置300に提供してもよい。
【0088】
また、実施例3では、データ処理装置100が、各ユーザ(データ保持装置200、プログラム提供装置300)にWebサービスを提供することを想定しており、一般的なWebサービスで利用される、ユーザ認証(各ユーザ)及びサーバ認証(データ処理装置100)は行われている前提とする。
【0089】
S301において、データ保持装置200は、DをPKdで暗号化したHybEnc(D,PKd)をデータ処理装置100に送信する。S302において、プログラム提供装置300は、HAと、インタプリタを含むTAと、PをPKpで暗号化したHybEnc(P,PKp)と、SKpによる署名である、「HA+TA(含interpreter)+HybEnc(P,PKp)&Sig(H(TA+HybEnc(P,PKp)),SKp)」をデータ処理装置100に送信する。
【0090】
HybEnc(D,PKd)と「HA+TA(含interpreter)+HybEnc(P,PKp)&Sig(H(TA+HybEnc(P,PKp)),SKp)」はそれぞれデータ処理装置100のストレージ(セキュア領域110の外にあるデータ格納部130)に格納される。なお、HybEnc(D,PKd)と「HA+TA(含interpreter)+HybEnc(P,PKp)&Sig(H(TA+HybEnc(P,PKp)),SKp)」はオフラインでデータ処理装置100に格納されてもよい。
【0091】
ここで、上記のインタプリタ(interpreter)について説明する。実施例3では、TA(含interpreter)とHybEnc(P,PKp)がセットとして構成されているので、TA(含interpreter)によるセキュア領域110の起動時(初期化時)に、Pは暗号化した状態で、TAに含まれるインタプリタとセットでセキュア領域110に固定される。後述するように、セキュア領域110においてPはSKpにより復号され、インプリタにより解釈されて実行される。
【0092】
セキュア領域においてインタプリタを使用する技術として、セキュア領域が起動した後に、プログラムをセキュア領域に挿入する技術が考えられる。しかし、この技術では、不正なプログラムが挿入されて実行される可能性がある。それに対して、実施例3の技術では、TA(含interpreter)とセットになっている暗号化されたPのみが復号されて解釈・実行されるので、不正なプログラムが実行される可能性をなくすことができる。
【0093】
S303において、プログラム提供装置300は、PKpとSig(PKp,SKp)をデータ処理装置100に送信する。
【0094】
データ処理装置100は、S303で受信した情報から、署名を検証し、PKpを得る。S304において、データ処理装置100は、ストレージに格納されているTA(含interpreter)を実行することにより、セキュア領域110を起動(生成)する。セキュア領域110にはインタプリタが組み込まれる。また、暗号化したPが固定される。
【0095】
なお、データ処理装置100がPKpを取得する方法は上記の方法に限られない。例えば、公開鍵を管理する外部の信頼されたサーバから、PKpを取得してもよい。
【0096】
S305において、Attestation付きECDHEにより、データ処理装置100とプログラム提供装置300はそれぞれ共通鍵Kpを生成し保持する。データ処理装置100では、セキュア領域110で共通鍵Kpを生成し、セキュア領域110に共通鍵Kpが保持される。
【0097】
S306において、Attestation付きECDHEにより、データ処理装置100とデータ保持装置200はそれぞれ共通鍵Kdを生成し保持する。データ処理装置100では、セキュア領域110で共通鍵Kdを生成し、セキュア領域110に共通鍵Kdが保持される。
【0098】
なお、S304の前に、データ処理装置100は、プログラム提供装置300の署名を検証済であるが、データ保持装置200に対する署名は検証していない。そこで、データ処理装置100は、S306を実行する前に、セキュア領域110がデータ保持装置200と鍵交換してよいかどうかを判断するアクセス制御を実行してもよい。例えば、プログラム提供装置300により許可されたデータ保持装置200を記載したアクセスリストを用いることで、プログラム提供装置300により許可されたデータ保持装置200とのみ鍵交換を行うことができる。
【0099】
S307において、プログラム提供装置300は、KpでSKpを暗号化する。S308において、プログラム提供装置300は、Enc(SKp,Kp)とSIG(H(Enc(SKp,Kp)),SKp)をデータ処理装置100に送信する。
【0100】
S309において、データ処理装置100は、セキュア領域110において、KpでSKpを復号し、SKpでHybEnc(P,PKp)からPを復号する。SKpを用いた復号完了後、データ処理装置100は、SKpを廃棄する。
【0101】
S310において、データ保持装置200は、KdでSKdを暗号化する。S311において、データ保持装置200は、Enc(SKd,Kd)、PKd、MAC(PKd,Kd)をデータ処理装置100に送信する。
【0102】
S312において、データ処理装置100は、MACを検証し、セキュア領域110において、KdでSKdを復号し、SKdでHybEnc(D,PKd)からDを復号する。SKdを用いた復号完了後、データ処理装置100は、SKdを廃棄する。また、セキュア領域110において、PKdを保持する。
【0103】
S313において、データ処理装置100は、セキュア領域110において、P(D)を計算する。S314において、データ処理装置100は、セキュア領域110に保持しているDを廃棄する。この廃棄のタイミングは、PによるDの処理が終了した直後でよい。また、PについてもDと同様に破棄してもよい。
【0104】
S315において、データ処理装置100は、セキュア領域110に保持しているP(D)を、PKdを用いて暗号化することで、HybEnc(P(D),PKd)を得る。
【0105】
S316において、データ処理装置100は、HybEnc(P(D),PKd)をデータ保持装置200に送信する。S317において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、HybEnc(P(D),PKd)を生成した直後、あるいは、HybEnc(P(D),PKd)を送信した直後でよい。HybEnc(P(D),PKd)については、監査やバックアップ等のために保管しておいてもよい。
【0106】
S318において、データ保持装置200は、SKdを用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0107】
なお、上記の例では、PKd、SKdを用いることにより公開鍵ベースでP(D)の暗号化、復号を行っているが、これに代えて、データ処理装置100とデータ保持装置200とで共有される共通鍵(ここでは、第2共通鍵、Kd2と呼ぶ)を用いてP(D)の暗号化、復号を行ってもよい。すなわち、下記のようにしてもよい。
【0108】
S315において、データ処理装置100は、セキュア領域110に保持しているP(D)を、Kd2を用いて暗号化することで、Enc(P(D),Kd2)を得る。
【0109】
S316において、データ処理装置100は、Enc(P(D),Kd2)をデータ保持装置200に送信する。S317において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、Enc(P(D),Kd2)を生成した直後、あるいは、Enc(P(D),Kd2)を送信した直後でよい。Enc(P(D),Kd2)については、監査やバックアップ等のために保管しておいてもよい。
【0110】
S318において、データ保持装置200は、Kd2を用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0111】
また、上記の例では、S301、S302において、公開鍵でD、Pを暗号化しているが、これに代えて、共通鍵を用いてD、Pを暗号化してもよい。すなわち、下記のようにしてもよい。
【0112】
S301において、データ保持装置200は、DをKd2で暗号化したEnc(D,Kd2)をデータ処理装置100に送信する。S302において、プログラム提供装置300は、HAと、インタプリタを含むTAと、PをKp2で暗号化したEnc(P,Kp2)とを含む「HA+TA(含interpreter)+Enc(P,Kp2)」をデータ処理装置100に送信する。なお、「HA+TA(含interpreter)+Enc(P,Kp2)」に署名が付されていてもよい。
【0113】
Enc(D,Kd2)と「HA+TA(含interpreter)+Enc(P,Kp2)」はそれぞれデータ処理装置100のストレージ(セキュア領域110の外にあるデータ格納部130)に格納される。なお、Enc(D,Kd2)と「HA+TA(含interpreter)+Enc(P,Kp2)」はオフラインでデータ処理装置100に格納されてもよい。
【0114】
このケースの場合、秘密鍵/公開鍵をプログラム提供装置300/データ保持装置200からデータ処理装置100に送信する必要はない。ただし、S307~S309で説明したSKpを送受信する処理と同様の処理で、プログラム提供装置300からデータ処理装置100に対してKp2を送信し、データ処理装置100はKp2を取得する。また、S310~S312で説明したSKdを送受信する処理と同様の処理で、データ保持装置200からデータ処理装置100に対してKd2を送信し、データ処理装置100はKd2を取得する。
【0115】
S304においてセキュア領域が起動された後、データ処理装置100は、Kd2でDを復号し、Kp2でPを復号する。S313において、データ処理装置100は、セキュア領域110において、P(D)を計算する。S314において、データ処理装置100は、セキュア領域110に保持しているDを廃棄する。この廃棄のタイミングは、PによるDの処理が終了した直後でよい。また、PについてもDと同様に破棄してもよい。
【0116】
S315において、データ処理装置100は、セキュア領域110に保持しているP(D)を、Kd2を用いて暗号化することで、Enc(P(D),Kd2)を得る。
【0117】
S316において、データ処理装置100は、Enc(P(D),Kd2)をデータ保持装置200に送信する。S317において、データ処理装置100は、P(D)を廃棄する。そのタイミングは、Enc(P(D),Kd2)を生成した直後、あるいは、Enc(P(D),Kd2)を送信した直後でよい。Enc(P(D),Kd2)については、監査やバックアップ等のために保管しておいてもよい。
【0118】
S318において、データ保持装置200は、Kd2を用いてP(D)を復号する。これにより、データ保持装置200は、P(D)を得ることができる。
【0119】
なお、上記の処理フローにおいて、データ処理装置100の通信部120は、PあるいはDに関わるセキュア領域110による通信以外の通信を遮断することとしてもよい。特に、データ保持装置200以外へのダウンロード通信を遮断することとしてもよい。
【0120】
実施例1と同様に、実施例3によれば、主にプログラムオーサ(プログラム提供装置300)の視点で、P、Dをデータ処理装置100に対して秘匿しつつ、Pをデータホルダ(データ保持装置200)に対して秘匿しつつ、D、P(D)をプログラムオーサ(プログラム提供装置300)が与り知ることなく、P(D)の実行結果をデータホルダ(データ保持装置200)に提供できる。
【0121】
また、実施例3によれば、実施例2と同様に、PとDを暗号化して予めデータ処理装置100に格納しておくので、サイズの小さい鍵(SKp、SKd)をデータ処理装置100に送るだけで所望のデータ処理を実現できる。これにより、プログラムPやデータDのサイズが大きい場合でも、アップロード時間などのユーザ待ち時間が増加しない。
【0122】
また、データ処理装置100の具体的実現形態の一例として想定されるクラウドにおけるクラウドストレージを、暗号化したPとDの格納場所として利用できるので、クラウドストレージを利用しているユーザに対して実施例3に係るサービスを容易に提供できる。
【0123】
また、セキュア領域上のインタプリタとして、セキュア領域上のプログラムの自由度を上げるために、後からプログラムを挿入する構成が考えられるが、この構成では、セキュア領域上で不正なプログラムを挿入して実行される可能性が高くなる。
【0124】
一方、実施例3の技術によれば、プログラム提供者により自由に作成したPを、セキュア領域110の起動時にセキュア領域110内に固定できるので、プログラムの自由度を維持しつつ、不正なプログラムが後から挿入される可能性を抑えることが出来る。
【0125】
(ハードウェア構成例)
データ処理装置100、データ保持装置200、プログラム提供装置300はいずれも、例えば、コンピュータにプログラムを実行させることにより実現できる。このコンピュータは、物理的なコンピュータであってもよいし、クラウド上の仮想マシンであってもよい。データ処理装置100、データ保持装置200、プログラム提供装置300を総称して「装置」と呼ぶ。
【0126】
すなわち、当該装置は、コンピュータに内蔵されるCPUやメモリ等のハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【0127】
図7は、上記コンピュータのハードウェア構成例を示す図である。図7のコンピュータは、それぞれバスBSで相互に接続されているドライブ装置1000、補助記憶装置1002、メモリ装置1003、CPU1004、インタフェース装置1005、表示装置1006、入力装置1007、出力装置1008等を有する。なお、これらのうち、一部の装置を備えないこととしてもよい。例えば、表示を行わない場合、表示装置1006を備えなくてもよい。
【0128】
当該コンピュータでの処理を実現するプログラムは、例えば、CD-ROM又はメモリカード等の記録媒体1001によって提供される。プログラムを記憶した記録媒体1001がドライブ装置1000にセットされると、プログラムが記録媒体1001からドライブ装置1000を介して補助記憶装置1002にインストールされる。但し、プログラムのインストールは必ずしも記録媒体1001より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置1002は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0129】
メモリ装置1003は、プログラムの起動指示があった場合に、補助記憶装置1002からプログラムを読み出して格納する。CPU1004は、メモリ装置1003に格納されたプログラムに従って、当該装置に係る機能を実現する。インタフェース装置1005は、ネットワークに接続するためのインタフェースとして用いられ、送信部及び受信部として機能する。表示装置1006はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置1007はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。出力装置1008は演算結果を出力する。
【0130】
(適用分野の例)
本実施の形態で説明した技術は様々なユースケースに適用可能である。ユースケースの例を列挙すると下記のとおりである。
【0131】
・交通流シミュレータ(http://www.jste.or.jp/sim/models/index.html)
・人流シミュレータ(https://info.hitachi-ics.co.jp/product/h_flow/)
・心臓シミュレータ(https://blog.global.fujitsu.com/jp/2018-05-10/01/)
・脳シミュレータ(https://bicr.atr.jp/cbi/research-ja/%E8%84%B3%E6%B4%BB%E5%8B%95%E8%A8%88%E6%B8%AC%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF/)
・材料物性シミュレータ(https://www.jsol-cae.com/product/material/jocta/)
・ロボットシミュレータ(http://www.idec-fs.com/robodk/)
・FPGAシミュレータ(https://www.intel.co.jp/content/www/jp/ja/software/programmable/quartus-prime/model-sim.html)
・宇宙シミュレータ(http://www.astro.phys.s.chiba-u.ac.jp/netlab/astro/index2.html)
・バーチャルペット(https://www.discoverychannel.jp/0000007144/)
・音声合成(https://cloud.google.com/text-to-speech?hl=ja)
【0132】
(実施の形態の効果)
以上、説明したとおり、本実施の形態に係る技術によれば、秘匿計算機構を備えるデータ処理装置により、プログラム提供者のプログラムでデータ保持者のデータを処理する場合において、プログラム提供者にはデータが漏れず、データ保持者にはプログラムが漏れないようにする技術が提供される。
【0133】
(実施の形態のまとめ)
本明細書には、少なくとも下記各項のプログラム実行システム、データ処理装置、プログラム実行方法、及びプログラムが開示されている。
(第1項)
データ保持装置と、プログラム提供装置と、セキュア領域において秘密計算を行う機構を備えるデータ処理装置とを備えるプログラム実行システムであって、
前記データ保持装置が、第1共通鍵で暗号化した暗号化データを前記データ処理装置に送信し、前記プログラム提供装置が、第2共通鍵で暗号化した暗号化プログラムを前記データ処理装置に送信し、
前記データ処理装置は、前記セキュア領域において、前記第1共通鍵で前記暗号化データを復号することによりデータを取得し、前記第2共通鍵で前記暗号化プログラムを復号することによりプログラムを取得し、前記データに対して前記プログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記第1共通鍵で暗号化し、
前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、
前記データ保持装置は、暗号化した前記実行結果を、秘密鍵又は前記第1共通鍵を用いて復号することで前記実行結果を取得する
プログラム実行システム。
(第2項)
データ保持装置と、プログラム提供装置と、セキュア領域において秘密計算を行う機構を備えるデータ処理装置とを備えるプログラム実行システムであって、
前記データ処理装置は、前記データ保持装置の公開鍵である第1公開鍵で暗号化した暗号化データと、前記プログラム提供装置の公開鍵である第2公開鍵で暗号化した暗号化プログラムとを事前に保持し、
前記データ保持装置が、第1共通鍵で暗号化した暗号化第1秘密鍵を前記データ処理装置に送信し、前記プログラム提供装置が、第2共通鍵で暗号化した暗号化第2秘密鍵を前記データ処理装置に送信し、
前記データ処理装置は、前記セキュア領域において、前記第1共通鍵で前記暗号化第1秘密鍵を復号することにより第1秘密鍵を取得し、当該第1秘密鍵で前記暗号化データを復号することによりデータを取得し、前記第2共通鍵で前記暗号化第2秘密鍵を復号することにより第2秘密鍵を取得し、当該第2秘密鍵で前記暗号化プログラムを復号することによりプログラムを取得し、前記データに対して前記プログラムを実行し、その実行結果を前記データ保持装置の公開鍵で暗号化し、
前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、
前記データ保持装置は、暗号化した前記実行結果を、秘密鍵を用いて復号することで前記実行結果を取得する
プログラム実行システム。
(第3項)
前記データ処理装置は、インタプリタを含むアプリケーションを実行することにより、前記暗号化プログラムが含まれるセキュア領域を起動し、前記インタプリタが、復号された前記プログラムの解釈を行う
第2項に記載のプログラム実行システム。
(第4項)
前記データ処理装置は、前記セキュア領域において、前記プログラムを実行した後に、前記データと前記実行結果とを廃棄する
第1項ないし第3項のうちいずれか1項に記載のプログラム実行システム。
(第5項)
データ保持装置と、プログラム提供装置と、セキュア領域において秘密計算を行う機構を備えるデータ処理装置とを備えるプログラム実行システムにおける前記データ処理装置であって、
前記データ保持装置から、第1共通鍵で暗号化した暗号化データを受信し、前記プログラム提供装置から、第2共通鍵で暗号化した暗号化プログラムを受信する受信手段と、
前記セキュア領域において、前記第1共通鍵で前記暗号化データを復号することによりデータを取得し、前記第2共通鍵で前記暗号化プログラムを復号することによりプログラムを取得し、前記データに対して前記プログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記第1共通鍵で暗号化する処理手段と、
暗号化した前記実行結果を前記データ保持装置に送信する送信手段と
を備えるデータ処理装置。
(第6項)
データ保持装置と、プログラム提供装置と、セキュア領域において秘密計算を行う機構を備えるデータ処理装置とを備えるプログラム実行システムにおける前記データ処理装置であって、
前記データ保持装置の公開鍵である第1公開鍵で暗号化した暗号化データと、前記プログラム提供装置の公開鍵である第2公開鍵で暗号化した暗号化プログラムとを保持する格納手段と、
前記データ保持装置から、第1共通鍵で暗号化した暗号化第1秘密鍵を受信し、前記プログラム提供装置から、第2共通鍵で暗号化した暗号化第2秘密鍵を受信する受信手段と、
前記セキュア領域において、前記第1共通鍵で前記暗号化第1秘密鍵を復号することにより第1秘密鍵を取得し、当該第1秘密鍵で前記暗号化データを復号することによりデータを取得し、前記第2共通鍵で前記暗号化第2秘密鍵を復号することにより第2秘密鍵を取得し、当該第2秘密鍵で前記暗号化プログラムを復号することによりプログラムを取得し、前記データに対して前記プログラムを実行し、その実行結果を前記データ保持装置の公開鍵で暗号化する処理手段と、
暗号化した前記実行結果を前記データ保持装置に送信する送信手段と
を備えるデータ処理装置。
(第7項)
データ保持装置と、プログラム提供装置と、セキュア領域において秘密計算を行う機構を備えるデータ処理装置とを備えるプログラム実行システムにおけるプログラム実行方法であって、
前記データ保持装置が、第1共通鍵で暗号化した暗号化データを前記データ処理装置に送信し、前記プログラム提供装置が、第2共通鍵で暗号化した暗号化プログラムを前記データ処理装置に送信し、
前記データ処理装置は、前記セキュア領域において、前記第1共通鍵で前記暗号化データを復号することによりデータを取得し、前記第2共通鍵で前記暗号化プログラムを復号することによりプログラムを取得し、前記データに対して前記プログラムを実行し、その実行結果を前記データ保持装置の公開鍵又は前記第1共通鍵で暗号化し、
前記データ処理装置は、暗号化した前記実行結果を前記データ保持装置に送信し、
前記データ保持装置は、暗号化した前記実行結果を、秘密鍵又は前記第1共通鍵を用いて復号することで前記実行結果を取得する
プログラム実行方法。
(第8項)
コンピュータを、第5項又は第6項に記載のデータ処理装置における各手段として機能させるためのプログラム。
【0134】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0135】
100 データ処理装置
200 データ保持装置
300 プログラム提供装置
110 セキュア領域
111 セキュアデータ格納部
112 セキュア処理部
120 通信部
130 データ格納部
140 データ処理部
1000 ドライブ装置
1001 記録媒体
1002 補助記憶装置
1003 メモリ装置
1004 CPU
1005 インタフェース装置
1006 表示装置
1007 入力装置
1008 出力装置
図1
図2
図3
図4
図5
図6
図7