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

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

▶ 株式会社日立製作所の特許一覧

<>
  • 特許-計算機システム及び情報処理方法 図1
  • 特許-計算機システム及び情報処理方法 図2
  • 特許-計算機システム及び情報処理方法 図3
  • 特許-計算機システム及び情報処理方法 図4
  • 特許-計算機システム及び情報処理方法 図5
  • 特許-計算機システム及び情報処理方法 図6A
  • 特許-計算機システム及び情報処理方法 図6B
  • 特許-計算機システム及び情報処理方法 図7
  • 特許-計算機システム及び情報処理方法 図8A
  • 特許-計算機システム及び情報処理方法 図8B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-26
(45)【発行日】2024-09-03
(54)【発明の名称】計算機システム及び情報処理方法
(51)【国際特許分類】
   G06F 21/74 20130101AFI20240827BHJP
   G06F 21/60 20130101ALI20240827BHJP
【FI】
G06F21/74
G06F21/60 320
【請求項の数】 15
(21)【出願番号】P 2021182743
(22)【出願日】2021-11-09
(65)【公開番号】P2023070519
(43)【公開日】2023-05-19
【審査請求日】2024-03-21
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】藤原 啓成
(72)【発明者】
【氏名】佐藤 尚宜
【審査官】岸野 徹
(56)【参考文献】
【文献】特開2021-039143(JP,A)
【文献】米国特許出願公開第2014/0075502(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/74
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
少なくとも一つの計算機を備える計算機システムであって、
前記少なくとも一つの計算機は、プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続されるネットワークインタフェースを有し、
前記プロセッサは、前記メモリに、セキュリティが確保され、かつ、論理的に隔離された信頼領域を設定するための機能を有し、
前記少なくとも一つの計算機は、
複数のブロック処理を含み、かつ、機密情報を含むデータが暗号化された暗号化データに対する処理の実行要求を受け付け、
一つの前記ブロック処理を実行する場合、当該ブロック処理において前記暗号化データの復号が必要か否かを判定し、
前記ブロック処理において前記暗号化データの復号が必要でない場合、前記信頼領域とは異なる領域を用いて当該ブロック処理を実行し、
前記ブロック処理において前記暗号化データの復号が必要である場合、前記信頼領域を用いて当該ブロック処理を実行することを特徴とする計算機システム。
【請求項2】
請求項1に記載の計算機システムであって、
前記少なくとも一つの計算機は、
前記暗号化データの復号が必要である場合、一つの前記ブロック処理の実行に必要なメモリ使用量と前記信頼領域の容量とを比較し、前記比較の結果に基づいてページング処理が発生するか否かを判定し、
ページング処理が発生する場合、前記ブロック処理を複数のピース処理に分割し、
前記信頼領域を用いて、前記複数のピース処理の各々を順次実行することを特徴とする計算機システム。
【請求項3】
請求項2に記載の計算機システムであって、
前記少なくとも一つの計算機は、ページング処理が発生しない一つの前記ブロック処理及び一つの前記ピース処理のいずれかが完了した場合、前記信頼領域に格納されるデータを削除することを特徴とする計算機システム。
【請求項4】
請求項2に記載の計算機システムであって、
前記少なくとも一つの計算機は、
前記処理の結果を暗号化し、
暗号化された前記処理の結果を出力することを特徴とする計算機システム。
【請求項5】
請求項2に記載の計算機システムであって、
複数の前記計算機を備え、
一つの前記計算機は、他の前記計算機に、少なくとも一つの前記ブロック処理を割り当てて実行させることを特徴とする計算機システム。
【請求項6】
請求項5に記載の計算機システムであって、
前記複数の計算機の各々は、複数の領域に分散して配置され、
前記ブロック処理が割り当てられた前記計算機は、当該計算機が存在する前記領域において取得できる前記暗号化データを用いて前記ブロック処理を実行することを特徴とする計算機システム。
【請求項7】
請求項6に記載の計算機システムであって、
前記計算機は、前記複数のブロック処理の結果を集約し、前記処理の結果として出力することを特徴とする計算機システム。
【請求項8】
請求項1に記載の計算機システムであって、
管理端末を備え、
前記管理端末は、
前記処理を実現するプログラムを解析し、
前記解析の結果に基づいて、前記暗号化データの復号が必要な前記ブロック処理を特定するための情報を前記プログラムに埋め込み、ユーザに提供することを特徴とする計算機システム。
【請求項9】
計算機システムが実行する情報処理方法であって、
前記計算機システムは、少なくとも一つの計算機を含み、
前記少なくとも一つの計算機は、プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続されるネットワークインタフェースを有し、
前記プロセッサは、前記メモリに、セキュリティが確保され、かつ、論理的に隔離された信頼領域を設定するための機能を有し、
前記情報処理方法は、
前記少なくとも一つの計算機が、複数のブロック処理を含み、かつ、機密情報を含むデータが暗号化された暗号化データに対する処理の実行要求を受け付ける第1のステップと、
前記少なくとも一つの計算機が、一つの前記ブロック処理を実行する場合、当該ブロック処理において前記暗号化データの復号が必要か否かを判定する第2のステップと、
前記ブロック処理において前記暗号化データの復号が必要でない場合、前記少なくとも一つの計算機が、前記信頼領域とは異なる領域を用いて当該ブロック処理を実行する第3のステップと、
前記ブロック処理において前記暗号化データの復号が必要である場合、前記少なくとも一つの計算機が、前記信頼領域を用いて当該ブロック処理を実行する第4のステップと、を含むことを特徴とする情報処理方法。
【請求項10】
請求項9に記載の情報処理方法であって、
前記第4のステップは、
前記少なくとも一つの計算機が、一つの前記ブロック処理の実行に必要なメモリ使用量と前記信頼領域の容量とを比較し、前記比較の結果に基づいてページング処理が発生するか否かを判定する第5のステップと、
前記少なくとも一つの計算機が、ページング処理が発生する場合、前記ブロック処理を複数のピース処理に分割する第6のステップと、
前記少なくとも一つの計算機が、前記信頼領域を用いて、前記複数のピース処理の各々を順次実行する第7のステップと、を含むことを特徴とする情報処理方法。
【請求項11】
請求項10に記載の情報処理方法であって、
前記第4のステップは、前記少なくとも一つの計算機が、ページング処理が発生しない、一つの前記ブロック処理が完了した場合、前記信頼領域に格納されるデータを削除するステップを含み、
前記第7のステップは、前記少なくとも一つの計算機が、一つの前記ピース処理が完了した場合、前記信頼領域に格納されるデータを削除するステップを含むことを特徴とする情報処理方法。
【請求項12】
請求項10に記載の情報処理方法であって、
前記計算機システムは、複数の前記計算機を含み、
前記情報処理方法は、一つの前記計算機が、他の前記計算機に、少なくとも一つの前記ブロック処理を割り当てて実行させるステップを含むことを特徴とする情報処理方法。
【請求項13】
請求項12に記載の情報処理方法であって、
前記複数の計算機の各々は、複数の領域に分散して配置され、
前記情報処理方法は、前記ブロック処理が割り当てられた前記計算機が、当該計算機が存在する前記領域において取得できる前記暗号化データを用いて前記ブロック処理を実行するステップを含むことを特徴とする情報処理方法。
【請求項14】
請求項13に記載の情報処理方法であって、
前記情報処理方法は、前記計算機が、前記複数のブロック処理の結果を集約し、前記処理の結果として出力するステップを含むことを特徴とする情報処理方法。
【請求項15】
請求項9に記載の情報処理方法であって、
前記計算機システムは、管理端末を含み、
前記情報処理方法は、
前記管理端末が、前記処理を実現するプログラムを解析するステップと、
前記管理端末が、前記解析の結果に基づいて、前記暗号化データの復号が必要な前記ブロック処理を特定するための情報を前記プログラムに埋め込み、ユーザに提供するステップと、を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、個人情報等の機密情報が秘匿された状態で処理を実行するシステム及びその情報処理方法に関する。
【背景技術】
【0002】
近年、官民が連携した個人データ活用スキームが進展している。例えば、公共サービス及び民間サービスの連携等、多様な情報を連携した新たな価値の創出されている。多様な情報を連携した新たな価値を創出するためには、回帰分析等の統計解析及びCNN(Convolutional Neural Network)等の機械学習が有効とされる。統計解析及びの機械学習は、安価に利用可能なパブリッククラウド等を用いて、様々な企業が容易に実行できる基盤も提供されている。
【0003】
一方、プライバシーの保護を目的とした規制強化も進展している。したがって、病院及び銀行等のデータホルダが所有する機密情報を秘匿したまま活用する技術が求められる。
【0004】
従来技術では、データを暗号化したまま特定の処理を可能とすることで、機密情報を秘匿した状態の活用を実現している。しかし、従来技術で実行可能な処理は、検索及び順序比較等の基本的な処理に限定されており、処理の自由度に限界があった。そのため、処理の高い自由度が必要とされる高度な統計処理及びCNN(Convolutional Neural Network)等の機械学習を用いた画像処理に対応できる技術が求められている。
【0005】
近年、CPU(Central Processing Unit)にはTEE(Trusted Execution Environment)機能が搭載されている。TEE機能は秘匿情報の処理に有効であると考えられる。TEE機能は、コンピュータ上で稼働するOSの管理者権限を奪われても情報を読み取られない信頼領域を提供する機能である。信頼領域内で暗号化データの復号及び処理の実行を行うことで、安全かつ高度な処理が可能となる。
【0006】
TEE機能の信頼領域を機械学習に利用する技術として、特許文献1に記載の技術がある。特許文献1は、TEEの信頼された実行環境(信頼領域)を利用した秘匿転送学習のための方法を開示している。
【0007】
特許文献1に記載の技術は、秘匿転送学習のための安全な携帯型DNN(Deep Neural Network)に関し、秘匿転送学習の方法のために開示される。方法は、訓練API(Application Programming Interface)及び推論APIを含む機械学習モデルを生成することを含む。方法は、所定の暗号化機構を用いて機械学習モデルを暗号化することを更に含む。方法は、加えて、暗号化された機械学習モデルをTEEへコピーすることを含む。方法は、推論APIを用いてTEEの機械学習モデルも実行することを含む。
【先行技術文献】
【特許文献】
【0008】
【文献】米国特許出願公開第2021/0125051号明細書
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、特許文献1に記載の方法では、機械学習モデル及び機械学習アプリケーション、並びに、その入出力データに必要なメモリ使用量が、信頼領域の容量より大きくなる場合、信頼領域に収まらないデータを外部に書き出して必要時に再度読み込むページング処理が発生し、処理時間が増大する。例えば、信頼領域の容量が約100MBであるのに対し、機械学習モデルのパラメータ量が約140MB、機械学習モデルを実行する機械学習アプリケーションが約150MBである場合、機械学習アプリケーションによる機械学習モデルの実行に必要なメモリ使用量は信頼領域の容量より大きいため、ページング処理が発生する。
【0010】
そこで、本発明の一態様は、TEE機能を用いた秘匿情報処理において、実行に必要なメモリ使用量が信頼領域の容量を超える場合のページング処理の発生を防ぎ、処理を高速化することを目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するために本発明の一態様は以下の構成を採用する。少なくとも一つの計算機を備える計算機システムであって、前記少なくとも一つの計算機は、プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続されるネットワークインタフェースを有し、前記プロセッサは、前記メモリに、セキュリティが確保され、かつ、論理的に隔離された信頼領域を設定するための機能を有し、前記少なくとも一つの計算機は、複数のブロック処理を含み、かつ、機密情報を含むデータが暗号化された暗号化データに対する処理の実行要求を受け付け、一つの前記ブロック処理を実行する場合、当該ブロック処理において前記暗号化データの復号が必要か否かを判定し、前記ブロック処理において前記暗号化データの復号が必要でない場合、前記信頼領域とは異なる領域を用いて当該ブロック処理を実行し、前記ブロック処理において前記暗号化データの復号が必要である場合、前記信頼領域を用いて当該ブロック処理を実行する。
【発明の効果】
【0012】
本発明の一態様によれば、ページング処理の発生を抑止し、TEE機能を用いた、高速な秘匿情報処理を実現できる。上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0013】
図1】実施例1の秘匿情報処理システムの構成例を示すブロック図である。
図2】秘匿情報処理システムのハードウェア構成例を示すブロック図である。
図3】実施例1の秘匿情報処理システムにおける秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
図4】実施例1の秘匿情報処理サーバの機能構成の一例を示すブロック図である。
図5】実施例1の秘匿情報処理サーバが実行する秘匿情報処理の一例を示すフローチャートである。
図6A】実施例2の秘匿情報処理システムにおける秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
図6B】実施例2の秘匿情報処理システムにおける秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
図7】実施例3の秘匿情報処理サービスのシステム構成例を示すブロック図である。
図8A】実施例3の秘匿情報処理システムにおける秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
図8B】実施例3の秘匿情報処理システムにおける秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0015】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【0016】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【実施例1】
【0017】
(1-1)秘匿情報処理システムの構成例
図1は、実施例1の秘匿情報処理システムの構成例を示すブロック図である。秘匿情報処理システム1は、個人情報及び企業秘密等の機密情報を保持するサービス利用者(データホルダ)から暗号化された機密情報を含むデータを受信し、受信したデータを、機密情報が外部に対して秘匿化された状態で処理を実行し、当該処理の結果をサービス利用者に提供する。ここで、外部とは、クラウド管理者及びサービス管理者を含む概念である。
【0018】
秘匿情報処理システム1は、例えば、ユーザ端末10、秘匿情報処理サーバ30、及びサービス管理者端末20を含む。ユーザ端末10、秘匿情報処理サーバ30、及びサービス管理者端末20は、インターネット等のネットワーク40を介して互いに接続される。ここで、ネットワーク40は、有線通信若しくは無線通信によるインターネット、社内ネットワーク等のイントラネット、又は衛星回線等の通信ネットワークである。
【0019】
ユーザ端末10は、サービスを利用するサービス利用者又はデータを提供するデータホルダが使用する端末である。なお、サービス利用者及びデータホルダは同一である場合がある。データホルダは、ユーザ端末10を用いて、データを暗号化し、秘匿情報処理サーバ30に送信する。サービス利用者は、ユーザ端末10を用いて、サービスの利用申請及び処理の実行要求の送信を行う。サービス管理者端末20は、秘匿情報処理サービスを提供するサービス管理者が使用する端末である。サービス管理者は、サービス管理者端末20を用いて、サービス利用者からの秘匿情報処理サービスの利用申請を受け付け、また、秘匿情報処理サーバ30の環境構築、運用、及び管理を行う。秘匿情報処理サーバ30は、サービス利用者から受信したデータを用いた処理の実行要求を受信した場合、データが外部に対して秘匿された状態で処理を実行し、当該処理の結果をサービス利用者に送信する。
【0020】
なお、秘匿情報処理システム1は、複数のユーザ端末10を含んでもよいし、複数のサービス管理者端末20を含んでもよいし、また、複数の秘匿情報処理サーバ30を含んでもよい。なお、秘匿情報処理システム1が複数のユーザ端末10を含む場合、機密情報を送信するユーザ端末10と、処理の結果を利用するユーザ端末10とを分けてもよい。
【0021】
図2は、秘匿情報処理システム1のハードウェア構成例を示すブロック図である。図2を用いて、ユーザ端末10、サービス管理者端末20、及び秘匿情報処理サーバ30の各々のハードウェア構成について説明する。
【0022】
ユーザ端末10は、例えば、パーソナルコンピュータ、スマートフォン、又はサーバ装置等の計算機である。ユーザ端末10は、例えば内部通信線で互いに接続された、CPU(Control Processing Unit)11、メモリ12、補助記憶装置13、ネットワークインタフェース14、表示装置15、及び入力装置16を備える。
【0023】
CPU11は、演算装置の一例であり、メモリ12に格納されたプログラムを実行する。メモリ12は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、例えば、BIOS(Basic Input/Output System)等不変のプログラムを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、CPU11が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【0024】
本実施例のCPU11は、TEE(Trusted Execution Environment)機能を有するTEE対応のCPUである。CPU11は、TEE機能を用いて、ハードウェア的な記憶領域であって、他の領域から隔離された信頼領域17をメモリ12に生成する。信頼領域17は、メモリ12の全記憶領域に対して小さい容量(例えば、128MB)であるものとする。処理の実行に必要なメモリ使用量が信頼領域17の容量がより大きい場合、ページング処理の発生によって、当該領域を用いた処理の処理速度が低下する。
【0025】
なお、CPU11はTEE機能を有していなくてもよい。なお、信頼領域17は、処理の実行時に生成されてもよいし、処理の開始前に生成されてもよい。なお、信頼領域17の容量に特に制限を設けなくてもよい。
【0026】
補助記憶装置13は、例えば、磁気記憶装置(HDD:Hard Disk Drive)、フラッシュメモリ(SSD:Solid State Drive)等の大容量かつ不揮発性の記憶装置であり、CPU11が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置13から読み出されて、メモリ12にロードされて、CPU11によって実行される。
【0027】
表示装置15は、ディスプレイ及びプリンタ等の、プログラムの実行結果をユーザが視認可能な形式で出力する装置である。入力装置16は、キーボード及びマウス等の、ユーザからの入力を受け付ける装置である。ネットワークインタフェース14は、所定のプロトコルにしたがって、他の装置との通信を制御する。また、ネットワークインタフェース14は、例えば、USB等のシリアルインターフェースを含んでもよい。
【0028】
CPU11が実行するプログラムは、予め、コンピュータ読み取り可能な非一時的記憶媒体である不揮発性の補助記憶装置13に格納されていてもよいし、非一時的記憶媒体であるリムーバブルメディア(CD-ROM、フラッシュメモリなど)又は、他の装置の非一時的記憶装置からネットワークを介してユーザ端末10に提供され、補助記憶装置13に格納されてもよい。このため、ユーザ端末10は、リムーバブルメディアからデータを読み込むインターフェースを有してもよい。これは、サービス管理者端末20及び秘匿情報処理サーバ30においても同様である。
【0029】
サービス管理者端末20は、例えば、パーソナルコンピュータ、スマートフォン、又はサーバ装置等の計算機である。サービス管理者端末20は、例えば、内部通信線で互いに接続された、CPU21、メモリ22、補助記憶装置23、ネットワークインタフェース24、表示装置25、及び入力装置26を備える。
【0030】
CPU21、メモリ22、補助記憶装置23、ネットワークインタフェース24、表示装置25、及び入力装置26のハードウェアとしての説明は、それぞれ、CPU11、メモリ12、補助記憶装置13、ネットワークインタフェース14、表示装置15、及び入力装置16のハードウェアとしての説明と同様である。但し、CPU21はTEE機能を有している必要はない。
【0031】
秘匿情報処理サーバ30は、例えば、パーソナルコンピュータ、スマートフォン、及びサーバ装置等の計算機である。秘匿情報処理サーバ30は、例えば、バス等の内部通信線で互いに接続された、CPU31、メモリ32、補助記憶装置33、ネットワークインタフェース34、表示装置35、入力装置36、及びGPU(Graphics Processing Unit)39を備える。
【0032】
CPU31、メモリ32、補助記憶装置33、ネットワークインタフェース34、表示装置35、及び入力装置36のハードウェアとしての説明は、それぞれ、CPU11、メモリ12、補助記憶装置13、ネットワークインタフェース14、表示装置15、及び入力装置16のハードウェアとしての説明と同様である。但し、秘匿情報処理サーバ30のCPU31は、TEE機能を有し、メモリ32に信頼領域38を生成することができる。GPU39は、メモリ32の信頼領域38とは異なる領域(通常領域)を用いて、メモリ32に格納されたプログラムを高速に実行する。なお、秘匿情報処理サーバ30はGPU39を有していなくてもよい。
【0033】
なお、本実施例では、メモリ上に隔離された安全な領域での処理を実現する機能としてTEE機能を用いているが、異なる方式を採用してもよい。
【0034】
なお、CPU11、CPU21、CPU31、及びGPU39によって実行される処理の一部又は全部が、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)等のハードウェアによって実行されてもよい。
【0035】
なお、ユーザ端末10、サービス管理者端末20、及び秘匿情報処理サーバ30は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムとして実現してもよい。また、ユーザ端末10、サービス管理者端末20、及び秘匿情報処理サーバ30は、同一の計算機上で別個のスレッドとして実現してもよいし、複数の物理的計算機資源上を用いて構築された仮想計算機として実現してもよい。
【0036】
なお、本実施例において、秘匿情報処理システム1が使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよく、例えば、リスト、テーブル、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。
【0037】
(1-2)秘匿情報処理システムによる秘匿情報処理サービスの提供フロー例
図3は、実施例1の秘匿情報処理システム1における秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
【0038】
まず、本実施例の秘匿情報処理システム1が提供する秘匿情報処理サービスについて説明する。秘匿情報処理サービスは、サービス管理者によるクラウド上の秘匿情報処理サーバ30の構築及び運用管理によって、秘匿情報処理サーバ30を用いた高度かつセキュリティが確保された情報処理機能をサービス利用者に提供するサービスである。
【0039】
秘匿情報処理サービスの提供する価値は、サービス利用者に対し、機密情報が秘匿された状態でクラウド上の安価かつ高機能な計算機リソースを利用可能とすることである。サービス利用者は、秘匿情報処理サービスを利用することで、顧客サイトにおいて高価な計算機及びソフトウェア等のリソースの購入、環境構築、及び運用管理を行う必要がない。これによって、AI学習及びAI推論等の高度な情報処理の結果を、クラウド管理者及びサービス管理者に対して機密情報を開示することなく得ることができる。
【0040】
以下、図3を参照しながら、上述した秘匿情報処理サービスの提供の流れの一例を説明する。
【0041】
まず、サービス利用者は、ユーザ端末10を操作して、秘匿情報処理サービスの利用申請をサービス管理者端末20へ送信する(ステップS301)。
【0042】
次に、サービス管理者は、サービス管理者端末20を操作して、クラウド上にサービス環境に構築する(ステップS302)。
【0043】
具体的には、サービス管理者は、サービス管理者端末20を用いて、秘匿情報処理サーバ30の構築、秘匿情報処理サーバ30上での秘匿情報処理サービスの起動等を行う。ここで、クラウド管理者は、クラウドのデータセンタにおける特権ユーザであり、クラウド上におけるサービス管理者の操作ログ等を監視している。また、サービス管理者は、サービス管理者端末20を用いて、処理を実現するプログラムを解析し、暗号化されたデータの復号が必要であるか否かを示す情報をプログラムに埋め込む。なお、処理に含まれるタスクごとに前述の情報を付与してもよい。
【0044】
次に、サービス管理者は、サービス管理者端末20を操作して、秘匿情報処理サービスの開始通知をユーザ端末10へ送信する(ステップS303)。
【0045】
次に、サービス利用者は、ユーザ端末10を操作して、秘匿情報処理サーバ30に送信する機密情報を暗号化するための鍵の発行要求を秘匿情報処理サーバ30へ送信する(ステップS304)。
【0046】
秘匿情報処理サーバ30は、当該発行要求を受信した場合、信頼領域38内に公開鍵暗号のキーペアを生成し(ステップS305)、キーペアのうち秘密鍵を信頼領域38に保持し、キーペアのうち公開鍵をユーザ端末10へ送信する(ステップS306)。ここでは、秘密鍵331及び公開鍵332が生成されるものとする。
【0047】
次に、サービス利用者は、ユーザ端末10を操作して、機密情報、処理内容又は処理結果の暗号化/復号化に用いる共通鍵を生成する(ステップS307)。ここでは、共通鍵301が生成されるものとする。サービス利用者は、ユーザ端末10を操作して、共通鍵を用いて秘匿情報処理サービスの処理対象であるデータに含まれる機密情報を暗号化し(ステップS308)、さらに、公開鍵を用いて共通鍵を暗号化する(ステップS309)。また、サービス利用者は、ユーザ端末10を操作して、暗号化したデータ及び暗号化した共通鍵を含む実行要求を秘匿情報処理サーバ30に送信する(ステップS310)。
【0048】
秘匿情報処理サーバ30は、受信したデータに含まれる機密情報を信頼領域38内で復号して情報処理を行う秘匿情報処理を実行し(ステップS311)、共通鍵を用いて暗号した処理結果をユーザ端末10へ送信する(ステップS312)。また、秘匿情報処理サーバ30は、秘匿情報処理の実行ログ等をサービス管理者端末20へ送信する(ステップS313)。
【0049】
サービス利用者は、ユーザ端末10を操作して、共通鍵を用いて、受信した処理結果を復号し(ステップS314)、機密情報を含むデータに対する秘匿情報処理の処理結果を得る。
【0050】
(1-3)秘匿情報処理サーバの機能構成例及び秘匿CNN処理のデータ処理例
図4は、実施例1の秘匿情報処理サーバ30の機能構成の一例を示すブロック図である。
【0051】
秘匿情報処理の一例として、秘匿CNN(Convolutional Neural Network)処理を実行する秘匿情報処理サーバ30の機能構成を、図4を参照しながら説明する。
【0052】
秘匿情報処理サーバ30は、例えば、通常のCPU及びメモリ並びにGPU等のアクセラレーションチップによる高速処理を行うための通常領域410と、TEE機能によって生成される、安全性が高く、かつ、隔離された信頼領域38とを含む。
【0053】
通常領域410には、例えば、ネットワークフロー制御部411、判定処理部412、及びパラメータ情報413が格納される。ネットワークフロー制御部411は、CNN等の多層型ネットワーク構造の機械学習(以下、CNNを例にとって説明をする)処理の一部であり、各層間のネットワーク関係に基づく暗号化データの入出力のデータフローの制御処理を実行する。判定処理部412は、処理の実行に必要なメモリ使用量、入出力データのサイズ、及びパラメータ情報等に基づく処理の分割要否判定処理、及び高速化方式判定処理を実行する。パラメータ情報413は、CNNの層数、各層の計算処理の種類等のCNNのネットワーク構成、及び重み等を含む。パラメータ情報413は、秘匿情報処理サーバ30の補助記憶装置33に格納され、ネットワークフロー制御部411が必要時に通常領域410に読み出す。
【0054】
信頼領域38には、例えば、復号処理部421、前処理部422、部分処理部423、暗号化処理部424、共通鍵301、及び秘密鍵331が格納される。部分処理部423は、CNNの層の処理を実行する。復号処理部421は、信頼領域38に保存されている秘密鍵331を用いて、公開鍵332により暗号化された共通鍵301を復号し、信頼領域38に保存する。暗号化処理部424は、信頼領域38に保存された共通鍵301を用いて、部分処理部423が出力する処理結果を暗号化する。
【0055】
図5は、実施例1の秘匿情報処理サーバ30が実行する秘匿情報処理の一例を示すフローチャートである。
【0056】
以下、図5を参照しながら秘匿情報処理サーバ30が実行する秘匿情報処理(CNN処理)の一例を説明する。
【0057】
秘匿情報処理サーバ30は、共通鍵を用いて暗号化されたデータ、及び公開鍵332を用いて暗号化された共通鍵301を含む処理の実行要求を受信した場合、以下で説明する秘匿情報処理を実行する。
【0058】
秘匿情報処理サーバ30のネットワークフロー制御部411は、処理の実行要求を受信した場合、暗号化されたデータに対する秘匿CNN処理で使用するCNNのネットワークフロー制御に用いる変数i、変数j、及び変数b_numの各々の値を1に初期化する(ステップS501)。このとき、ネットワークフロー制御部411は、補助記憶装置33から秘匿CNN処理で使用するCNNのパラメータ情報413を読み出し、通常領域410に格納する。ネットワークフロー制御部411は、パラメータ情報413に基づいて、秘匿CNN処理を行うネットワークフローの処理を開始する。
【0059】
次に、ネットワークフロー制御部411は判定処理部412を呼び出す。判定処理部412は、パラメータ情報413に含まれる第i層の処理(ブロック処理)に関連するパラメータ(関連パラメータ)に基づいて、第i層の処理の実行に必要なメモリ使用量Siを算出する(ステップS502)。
【0060】
次に、判定処理部412は、メモリ使用量Siが、ページングを発生することなく処理できる、信頼領域38の容量の上限値Smax以下であるか否かを判定する(ステップS503)。
【0061】
メモリ使用量Siが上限値Smax以下である場合、判定処理部412は、第i層の処理の関連パラメータに基づいて、第i層の処理の実行に適した高速化方式を判定し、信頼領域38に隔離実行プロセスであるエンクレイブとして、復号処理部421、前処理部422,第i層の処理を行う部分処理部423、及び暗号化処理部424を生成する(ステップS504)。また、判定処理部412は、第i層の関連パラメータ、第i層に対する入力データをエンクレイブに入力する。判定処理部412は、エンクレイブからの応答を待つ。
【0062】
例えば、判定処理部412は、第i層で使用される入力データが大きい場合、第i層の処理を高速化するために、入力データを分割する方式を採用する。
【0063】
次に、復号処理部421は、秘密鍵331を用いて、暗号化された共通鍵を復号し、復号した共通鍵を用いて、暗号化されたデータを復号する(ステップS505)。
【0064】
次に、前処理部422は、第i層の処理の関連パラメータ及び復号したデータに基づいて、第i層の処理の高速実行に有効なデータ処理のマルチスレッド化向けの分割及び整形処理等による前処理を実行する(ステップS506)。
【0065】
次に、部分処理部423は、第i層の関連パラメータ及び前処理が実行されたデータを用いて、第i層の処理を実行する(ステップS507)。具体的には、CNNを構成する各層の処理(Convolution処理、Pooling処理、Dense処理等)が実行される。
【0066】
次に、暗号化処理部424は、復号された共通鍵301を用いて、ステップS507の処理結果のパラメータ情報又はデータを暗号化し、判定処理部412へ出力する(ステップS508)。
【0067】
次に、判定処理部412は、信頼領域38からエンクレイブを削除し(ステップS509)、その後、ステップS520に進む。エンクレイブを削除することによって、他の処理が利用できる信頼領域38の容量を確保できる。
【0068】
ステップS503において、メモリ使用量Siが上限値Smaxより大きい場合、判定処理部412は、分割数を算出し、変数b_numに分割数を設定する(ステップS510)。ここで、分割数は、メモリ使用量が信頼領域38の容量より小さく、ページングが発生しないピース処理の数である。
【0069】
例えば、式(1)を用いて分割数が算出される。ceiling()は小数点以下を切り上げ、自然数を算出する演算を表す。
【0070】
【数1】
【0071】
次に、判定処理部412は、第i層の関連パラメータ及び入力データをb_num個に分割する(ステップS511)。すなわち、第i層の処理がb_num個のピース処理に分割される。
【0072】
次に、判定処理部412は、第i層の関連パラメータに基づいて、j番目のピース処理の実行に適する高速化方式を判定し、信頼領域38にエンクレイブを生成する(ステップS512)。また、判定処理部412は、第i層の関連パラメータ、第i層に対する入力データをエンクレイブに入力する。判定処理部412は、エンクレイブからの応答を待つ。ステップS512の処理はステップS504の処理と同様の処理である。
【0073】
次に、復号処理部421は、秘密鍵331を用いて、暗号化された共通鍵301を復号し、復号した共通鍵301を用いて、暗号化されたデータを復号する(ステップS513)。ステップS513の処理はステップS505の処理と同様の処理である。
【0074】
次に、前処理部422は、第i層の関連パラメータ及び復号したデータに基づいて、前処理を実行する(ステップS514)。ステップS514の処理はステップS506の処理と同様の処理である。
【0075】
次に、部分処理部423は、j番目のピース処理の関連パラメータ及び前処理が実行されたデータを用いて、ピース処理を実行する(ステップS515)。ピース処理では、ページング処理を発生することなく処理できるSmaxを超えないように、分割又は整形されたパラメータ及びデータを用いて処理が行われる。したがって、ページング処理の発生に伴う処理時間の増大を抑止できる。
【0076】
次に、暗号化処理部424は、復号された共通鍵301を用いて、ステップS515の処理結果のパラメータ情報又はデータを暗号化し、判定処理部412へ出力する(ステップS516)。ステップS516の処理はステップS508の処理と同様の処理である。
【0077】
次に、判定処理部412は、信頼領域38からエンクレイブを削除する(ステップS517)。ステップS517の処理はステップS509の処理と同様の処理である。
【0078】
次に、判定処理部412は、変数jの値に1を加算し(ステップS518)、変数jの値が変数b_numの値より小さいか否かを判定する(ステップS519)。
【0079】
変数jの値が変数b_numの値より小さい場合、判定処理部412は、ステップS512に戻り、同様の処理を実行する。変数jの値が変数b_numの値以上の場合、判定処理部412はステップS520に進む。
【0080】
ステップS520では、判定処理部412は、ネットワークフロー制御部411を呼び出す。ネットワークフロー制御部411は、変数iの値に1を加算する(ステップS520)。また、ネットワークフロー制御部411は、第i層が存在するか否かを判定する(ステップS521)。
【0081】
第i層が存在する場合、ネットワークフロー制御部411は、ステップS502に戻り、判定処理部412を呼び出す。第i層が存在しない場合、ネットワークフロー制御部411は、秘匿情報処理を終了する。ネットワークフロー制御部411は、暗号化された処理結果が複数存在する場合、複数の処理結果を集約して一つの処理結果を生成する。
【0082】
なお、図5では、CNNの全ての層の処理を復号が必要な処理としたが、CNNの少なくとも一つの層の処理は復号を必要としない処理でもよい。この場合、判定処理部412は、ステップS502において、復号が必要なブロック処理であるか否かを判定する。復号が必要でない場合、判定処理部412は、通常領域410に、エンクレイブとして前処理部422及び部分処理部423を生成し、前処理及び第iの処理を実行し、その後、エンクレイブを削除する。通常領域410を用いる場合にはピース処理の分割は行われない。このように、一つの処理をより小さな単位の処理に分割して、処理を制御することによって、セキュリティを確保し、かつ、速度を高速化ができる。
【0083】
(1-3)実施例1の効果
以上に説明したように、秘匿情報処理サーバ30は、複数のブロック処理から構成される処理について、ブロック処理単位で信頼領域38を使用した処理を実行することによって、ページング処理の発生を抑止できる。また、秘匿情報処理サーバ30は、ブロック処理をさらに細かいピース処理に分割し、ピース処理単位で信頼領域38を使用した処理を実行することによって、ページング処理の発生を抑止することができる。すなわち、本実施例によれば、アプリケーション(例:数100MBの機械学習アプリケーション、数100MBから数GBの多層型CNNモデル等)のサイズ、パラメータ情報、及び扱うデータ量が信頼領域を超える場合でもページング処理の発生を防ぐことができる。これによって、セキュリティを確保しつつ、処理時間の増大を抑制することができる。
【実施例2】
【0084】
実施例2では、複数の秘匿情報処理サーバ30を用いて秘匿情報処理を実行する点が実施例1と異なる。以下、実施例1との差異を中心に実施例2を説明する。
【0085】
(2-1)秘匿情報処理システムの構成
実施例2の秘匿情報処理システム1のシステム構成は、実施例1と同様である。実施例2のユーザ端末10、サービス管理者端末20、及び秘匿情報処理サーバ30の各々のハードウェア構成例は実施例1と同様である。実施例2の秘匿情報処理サーバ30の機能構成は実施例1と同様である。
【0086】
実施例2では、ユーザ端末10が保持する機密情報を用いた秘匿情報処理の実行要求が複数の秘匿情報処理サーバ30に送信される。複数の秘匿情報処理サーバ30は、当該実行要求を受信した場合、機密情報を用いた推論/学習処理等の秘匿情報処理を並列に実行し、処理結果をユーザ端末10へ送信する。これによって、秘匿情報処理を高速化できるため、秘匿情報処理サービスの価値の向上できる。
【0087】
(2-2)秘匿情報処理サービスの提供フロー
図6A及び図6Bは、実施例2の秘匿情報処理システム1における秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
【0088】
以下、図6を参照しながら実施例2の秘匿情報処理サービスの提供の流れの一例を説明する。なお、図6を用いた説明において、実施例1と同様の処理については説明を省略し、主に相違点を説明する。
【0089】
まず、サービス利用者は、ユーザ端末10を操作して、秘匿情報処理サービスの利用申請をサービス管理者端末20へ送信する(ステップS301)。
【0090】
次に、サービス管理者は、サービス管理者端末20を操作して、クラウド上にサービス環境を構築する(ステップS302)。ここでは、三つの秘匿情報処理サーバ30-1、30-2、30-3が構築され、秘匿情報処理サービスが起動される。なお、秘匿情報処理サーバ30-1、30-2、30-3を区別しない場合、秘匿情報処理サーバ30と記載する。
【0091】
次に、サービス管理者は、サービス管理者端末20を操作して、秘匿情報処理サービスの開始通知をユーザ端末10へ送信する(ステップS303)。
【0092】
次に、サービス利用者は、ユーザ端末10を操作して、秘匿情報処理サーバ30に送信する機密情報を暗号化するための鍵の発行要求を一つの秘匿情報処理サーバ30へ送信する(ステップS304)。送信先はサービス管理者によって通知されているものとする。ここでは、秘匿情報処理サーバ30-1に送信されるものとする。
【0093】
ユーザ端末10から鍵の発行要求を受信した秘匿情報処理サーバ30は、他の秘匿情報処理サーバ30に鍵の発行要求を送信する(ステップS351)。ここでは、秘匿情報処理サーバ30-1が、二つの秘匿情報処理サーバ30-2、30-3に鍵の発行要求を送信する。
【0094】
他の秘匿情報処理サーバ30から鍵の発行要求を受信した秘匿情報処理サーバ30は、信頼領域38内に公開鍵暗号のキーペアを生成し(ステップS352)、キーペアのうち秘密鍵を信頼領域38に保持し、キーペアのうち公開鍵を秘匿情報処理サーバ30へ送信する(ステップS353)。ここでは、秘匿情報処理サーバ30-2は秘密鍵341及び公開鍵342を生成し、秘匿情報処理サーバ30-3は秘密鍵351及び公開鍵352を生成するものとする。
【0095】
ユーザ端末10から鍵の発行要求を受信した秘匿情報処理サーバ30は、信頼領域38内に公開鍵暗号のキーペアを生成し(ステップS305)、キーペアのうち秘密鍵を信頼領域38に保持し、キーペアのうち公開鍵をユーザ端末10へ送信する(ステップS306)。ここでは、秘密鍵331及び公開鍵332が生成されるものとする。
【0096】
次に、サービス利用者は、ユーザ端末10を操作して、機密情報、処理内容又は処理結果の暗復化/復号化に用いる共通鍵を生成する(ステップS307)。ここでは、共通鍵301が生成されるものとする。サービス利用者は、ユーザ端末10を操作して、共通鍵を用いて秘匿情報処理サービスの処理対象とするデータに含まれる機密情報を暗号化し(ステップS308)、さらに公開鍵を用いて共通鍵を暗号化する(ステップS309)。また、サービス利用者は、ユーザ端末10を操作して、暗号化したデータ及び暗号化した共通鍵を含む実行要求を、公開鍵を送信した秘匿情報処理サーバ30へ送信する(ステップS310)。ここでは、秘匿情報処理サーバ30-1に実行要求が送信される。
【0097】
ユーザ端末10から実行要求を受信した秘匿情報処理サーバ30は、他の秘匿情報処理サーバ30と連携して、秘匿情報処理を実行する(ステップS354)。
【0098】
秘匿情報処理が秘匿CNN処理である場合、図5で説明した処理フローが一部異なる。具体的には、ステップS511の処理の後に以下の(処理1)から(処理3)を繰り返し実行される。
【0099】
(処理1)秘匿情報処理サーバ30-1は、j+1番目のピース処理の暗号化に使用する共通鍵343と、j+2番目のピース処理の暗号化に使用する共通鍵353を生成する。秘匿情報処理サーバ30-1は、共通鍵343を用いて、j+1番目のピース処理の入力データを暗号化し、公開鍵342を用いて共通鍵343を暗号化する。秘匿情報処理サーバ30-1は、暗号化された入力データ及び暗号化された共通鍵343を秘匿情報処理サーバ30-2へ送信する。秘匿情報処理サーバ30-1は、共通鍵353を用いて、j+2番目のピース処理の入力データを暗号化し、公開鍵352を用いて共通鍵353を暗号化する。秘匿情報処理サーバ30-1は、暗号化された入力データ及び暗号化された共通鍵353を秘匿情報処理サーバ30-3へ送信する。
【0100】
(処理2)秘匿情報処理サーバ30-2は、信頼領域38内で、秘密鍵341を用いて共通鍵343を復号し、共通鍵343を用いて入力データを復号する。秘匿情報処理サーバ30-2は、入力データ等を用いてj+1番目のピース処理を実行し、共通鍵343を用いて処理結果を暗号化し、秘匿情報処理サーバ30-1へ送信する。処理の流れは、ステップS512からステップS517までの処理の流れと同様である。
【0101】
(処理3)秘匿情報処理サーバ30-3は、信頼領域38内で、秘密鍵351を用いて共通鍵353を復号し、共通鍵353を用いて入力データを復号する。秘匿情報処理サーバ30-3は、入力データ等を用いてj+2番目のピース処理を実行し、共通鍵353を用いて処理結果を暗号化し、秘匿情報処理サーバ30-1へ送信する。処理の流れは、ステップS512からステップS517までの処理の流れと同様である。
【0102】
秘匿情報処理サーバ30-1は、秘匿情報処理サーバ30-2、30-3から暗号化された処理結果を受信した場合、共通鍵343、353を用いて復号する。また、秘匿情報処理サーバ30-1は、(処理1)と並列して、j番目のピース処理についてステップS512からステップS517の処理を実行する。ステップS518では、秘匿情報処理サーバ30-1は変数jの値に3を加算する。秘匿情報処理サーバ30は、並列して実行されたピース処理又はブロック処理の結果を集約する。図6Bの説明に戻る。
【0103】
次に、ユーザ端末10から実行要求を受信した秘匿情報処理サーバ30の暗号化処理部424は、ユーザ端末10から受信した共通鍵を用いて暗号化された処理結果を、ユーザ端末10へ送信する(ステップS312)。また、各秘匿情報処理サーバ30は、秘匿情報処理における実行ログ等をサービス管理者端末20へ送信する(ステップS313)。
【0104】
最後に、サービス利用者は、ユーザ端末10を操作して、共通鍵を用いて、処理結果を復号し(ステップS314)、機密情報を含むデータに対する秘匿情報処理の処理結果を得る。
【0105】
(2-3)実施例2の効果
以上に説明したように、実施例2の秘匿情報処理システム1では、複数の秘匿情報処理サーバ30を用いて秘匿情報処理が実行されることによって、秘匿情報処理を高速化できる。これによって、サービスの応答時間を短縮できる。
【実施例3】
【0106】
実施例3では、複数の領域に秘匿情報処理サーバ30が配置される点が実施例1及び実施例2と異なる。以下、実施例1及び実施例2の差異を中心に、実施例3について説明する。
【0107】
(3-1)秘匿情報処理システムの構成
図7は、実施例3の秘匿情報処理サービスのシステム構成例を示すブロック図である。実施例3では、複数の領域700-1、700-2、700-3に、秘匿情報処理サーバ30及びユーザ端末10が存在する。以下の説明では、領域700-1、700-2、700-3を区別しない場合、領域700と記載する。ここで、領域700は、例えば国、地域、又は企業等の組織を表す。
【0108】
各領域700のデータホルダは、領域700内でのみ扱うことができる機密情報を保持するものとする。また、少なくとも一つの領域700にサービス管理者が存在するものとする。
【0109】
実施例3のユーザ端末10、サービス管理者端末20、及び秘匿情報処理サーバ30の各々のハードウェア構成例は実施例1と同様である。実施例3の秘匿情報処理サーバ30の機能構成は実施例1と同様である。
【0110】
実施例3の秘匿情報処理サービスでは、サービス管理者は、任意の領域700のユーザ端末10からサービスの利用申請を受信した場合、各領域700に秘匿情報処理サーバ30を構築し、各領域700の秘匿情報処理サーバ30に領域内の機密情報を用いた秘匿情報処理を実行させ、各領域700の処理結果を集約し、サービス利用者に提供する。
【0111】
(3-2)秘匿情報処理サービス提供フロー
図8A及び図8Bは、実施例3の秘匿情報処理システム1における秘匿情報処理サービスの提供の流れの一例を示すシーケンス図である。
【0112】
以下、図8を参照しながら、実施例3の秘匿情報処理サービスの提供の流れの一例を説明する。なお、図8を用いた説明において、実施例1及び実施例2と同様の内容については説明を省略し、主に相違点を説明する。
【0113】
各領域700のサービス利用者は、ユーザ端末10を操作して、秘匿情報処理サービスの利用申請をサービス管理者のサービス管理者端末20へ送信する(ステップS301)。
【0114】
次に、サービス管理者は、サービス管理者端末20を操作して、各領域700のクラウド上にサービス環境を構築する(ステップS302)。
【0115】
次に、サービス管理者は、サービス管理者端末20を操作して、秘匿情報処理サービスのサービス開始通知を各領域700のユーザ端末10に送信する(ステップS303)。
【0116】
各領域700のユーザ端末10及び秘匿情報処理サーバ30の間では、ステップS304からステップS310の処理が実行される。領域700-1では、秘密鍵331、公開鍵332、及び共通鍵301が生成され、領域700-2では、秘密鍵651、公開鍵652、及び共通鍵601が生成され、領域700-3では、秘密鍵751、公開鍵752、及び共通鍵701が生成されるものとする。
【0117】
任意の領域700のサービス利用者は、ユーザ端末10を操作して、各領域700の秘匿情報処理の集約依頼を秘匿情報処理サーバ30へ送信する(ステップS361)。
【0118】
秘匿情報処理サーバ30は、集約依頼を暗号化するための鍵の発行要求を、集約依頼を行ったユーザ端末10が存在する領域700以外の領域700の秘匿情報処理サーバ30へ送信する(ステップS362)。
【0119】
鍵の発行要求を受信した秘匿情報処理サーバ30は、信頼領域38内に公開鍵暗号のキーペアを生成し(ステップS363)、キーペアのうち秘密鍵を信頼領域38に保持し、キーペアのうち公開鍵を、鍵の発行要求を送信した秘匿情報処理サーバ30へ送信する(ステップS364)。ここでは、領域700-2の秘匿情報処理サーバ30は秘密鍵661及び公開鍵662を生成し、領域700-3の秘匿情報処理サーバ30は秘密鍵761及び公開鍵762を生成するものとする。
【0120】
集約依頼を受信した秘匿情報処理サーバ30は、機密データ、処理依頼内容、又は処理結果の暗号化/復号化に用いる共通鍵を生成する(ステップS365)。ここでは、共通鍵343が生成される。また、秘匿情報処理サーバ30は、共通鍵を用いて各領域700に送信する処理内容及び入力情報を暗号化し(ステップS366)、各領域700の秘匿情報処理サーバ30から受信した公開鍵を用いて共通鍵を暗号化する(ステップS367)。ここでは、公開鍵662及び公開鍵762の各々を用いて共通鍵343が暗号化される。
【0121】
集約依頼を受信した秘匿情報処理サーバ30は、暗号化した処理内容及び暗号化した共通鍵を含む実行要求を、各領域700の秘匿情報処理サーバ30へ送信する(ステップS368)。
【0122】
実行要求を受信した秘匿情報処理サーバ30は、各信頼領域38内で、ステップS363で生成された秘密鍵を用いて、暗号化された処理内容及び共通鍵を復号し、ステップS305で生成された秘密鍵を用いて、ユーザ端末10から受信したデータを復号し、秘匿情報処理を実行する(ステップS369)。また、秘匿情報処理サーバ30は、共通鍵を用いて処理結果を暗号化し、実行要求を送信した秘匿情報処理サーバ30へ送信する(ステップS370)。
【0123】
集約依頼を受信した秘匿情報処理サーバ30は、ステップS364で生成された共通鍵を用いて、暗号化された処理結果を復号し、秘匿集約処理依頼の内容に基づいて、複数の処理結果を集計、分析、機械学習等を実行することによって集約を行い、ステップS307で生成された共通鍵を用いて、集約結果を暗号化する(ステップS371)。ここでは、共通鍵343を用いて復号が行われ、共通鍵301を用いて暗号化が行われる。秘匿情報処理サーバ30は、集約依頼を送信したユーザ端末10へ集約結果を送信する(ステップS372)。
【0124】
集約結果を受信したユーザ端末10は、共通鍵を用いて受信した集約結果を復号し、サービス利用者へ画面表示等により集約結果を提示する(ステップS370)。ここでは、共通鍵301を用いて復号が行われる。
【0125】
(3-3)実施例3の効果
以上に説明したように、実施例3の秘匿情報処理システム1では、各領域の秘匿情報処理サーバ30が領域内のユーザ端末10が保持する機密情報を用いた秘匿情報処理を実行し、一つの領域の秘匿情報処理サーバ30が、各領域の処理結果が一つの領域に集約し、ユーザ端末10へ送信する。これによって、各領域の法規制又は企業の規定等によって領域外へ移動できない機密情報を用いた処理の結果をサービス利用者に提供することができる。
【0126】
また、実施例1から実施例3で説明した秘匿情報処理システム1では、秘匿情報処理サーバ30は、信頼領域38でのみ暗号化された機密情報及び処理要求の内容を復号して処理を行うため、機密情報及び処理要求の内容をサービス管理者、クラウド管理者、及び他のデータホルダに対して秘匿できる。
【0127】
このように、実施例1から実施例3で説明した秘匿情報処理システム1は、サービス利用者に対し、サービス管理者及びクラウド管理者に機密情報が秘匿された状態で、複数のサービス利用者が保持するデータを組合わせた秘匿情報処理を高速に実行する秘匿情報処理サービスを提供できる。
【0128】
本発明は上述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、上述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部について、他の構成の追加、削除、置換をしてもよい。
【0129】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【0130】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0131】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0132】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0133】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【0134】
また、本発明は、個人情報に加えて営業機密等、機密性が高く社内規則等で社外への公開が制限されている機密情報を秘匿化して社外組織等に提供する場合にも、同様の効果を得ることができる。
【0135】
そして本発明は、顧客情報及び医療情報等の個人情報、及び営業機密等の機密情報を扱う複数の組織において、個人情報及び営業機密情報を秘匿したまま高度なDeep Learning等の処理効率を向上することができるため、多様な機密情報を連携する公共/民間サービス向けの情報処理システムに広く適用することができる。
【符号の説明】
【0136】
1 秘匿情報処理システム
10 ユーザ端末
20 サービス管理者端末
30 秘匿情報処理サーバ
11、21、31 CPU
12、22、32 メモリ
13、23、33 補助記憶装置
14、24、34 ネットワークインタフェース
15、25、35 表示装置
16、26、36 入力装置
17、38 信頼領域
39 GPU
40 ネットワーク
410 通常領域
411 ネットワークフロー制御部
412 判定処理部
413 パラメータ情報
421 復号処理部
422 前処理部
423 部分処理部
424 暗号化処理部
700 領域
図1
図2
図3
図4
図5
図6A
図6B
図7
図8A
図8B