(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-12-04
(45)【発行日】2024-12-12
(54)【発明の名称】情報処理方法、情報処理プログラム、および情報処理システム
(51)【国際特許分類】
H04L 9/08 20060101AFI20241205BHJP
【FI】
H04L9/08 A
(21)【出願番号】P 2024559008
(86)(22)【出願日】2024-07-28
(86)【国際出願番号】 JP2024026899
【審査請求日】2024-10-15
(31)【優先権主張番号】P 2023127422
(32)【優先日】2023-08-03
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】518334141
【氏名又は名称】EAGLYS株式会社
(74)【代理人】
【識別番号】100210815
【氏名又は名称】西田 聡子
(72)【発明者】
【氏名】丸山 祐丞
(72)【発明者】
【氏名】長尾 太介
【審査官】塩澤 如正
(56)【参考文献】
【文献】特開2022-151535(JP,A)
【文献】国際公開第2019/130528(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-21/88
H04L 9/00- 9/40
(57)【特許請求の範囲】
【請求項1】
ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムにおいて用いられる方法であって、
前記ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成するステップと、
前記ユーザ制御部が、前記第1の秘密鍵を、前記第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記スイッチ鍵を記憶するステップと、
前記ユーザ記憶部が、少なくとも前記第1の公開鍵、および前記第2の秘密鍵を記憶するステップと、
前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記暗号文に基づいて、演算処理を実行するステップと、
前記実行領域が、前記演算処理の結果に対し、前記スイッチ鍵を用いてキースイッチ処理を実行するステップと、
前記ユーザ制御部が、前記実行領域が実行した前記キースイッチ処理の結果を取得し、前記第2の秘密鍵を用いて復号するステップと、
を備える情報処理方法。
【請求項2】
前記演算処理は、準同型性を有する暗号文の加法または乗法に関する処理を少なくとも含む、請求項1に記載の情報処理方法。
【請求項3】
前記キースイッチ処理は、準同型性を有する暗号文の暗号鍵を、別の暗号鍵にスイッチする処理である、請求項1に記載の情報処理方法。
【請求項4】
前記ユーザ制御部が、前記スイッチ鍵を生成した後に、前記第1の秘密鍵を削除するステップをさらに含む、請求項1に記載の情報処理方法。
【請求項5】
前記実行領域は、プロセッサのセキュリティ機構である信頼可能な実行環境を含む、請求項1から請求項4のいずれか一項に記載の情報処理方法。
【請求項6】
前記実行領域は、鍵管理領域と演算領域とに分けられる、請求項1から請求項4のいずれか一項に記載の情報処理方法。
【請求項7】
ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムにおいて用いられるプログラムであって、
前記ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成するステップと、
前記ユーザ制御部が、前記第1の秘密鍵を、前記第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記スイッチ鍵を記憶するステップと、
前記ユーザ記憶部が、少なくとも前記第1の公開鍵、および前記第2の秘密鍵を記憶するステップと、
前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記暗号文に基づいて、演算処理を実行するステップと、
前記実行領域が、前記演算処理の結果に対し、前記スイッチ鍵を用いてキースイッチ処理を実行するステップと、
前記ユーザ制御部が、前記実行領域が実行した前記キースイッチ処理の結果を取得し、前記第2の秘密鍵を用いて復号するステップと、
を備える情報処理プログラム。
【請求項8】
ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムであって、
前記ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成し、
前記ユーザ制御部が、前記第1の秘密鍵を、前記第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成し、
前記実行領域が、前記ユーザ制御部から取得した前記スイッチ鍵を記憶し、
前記ユーザ記憶部が、少なくとも前記第1の公開鍵、および前記第2の秘密鍵を記憶し、
前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成しと、
前記実行領域が、前記ユーザ制御部から取得した前記暗号文に基づいて、演算処理を実行し、
前記実行領域が、前記演算処理の結果に対し、前記スイッチ鍵を用いてキースイッチ処理を実行し、
前記ユーザ制御部が、前記実行領域が実行した前記キースイッチ処理の結果を取得し、前記第2の秘密鍵を用いて復号する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理方法、情報処理プログラム、および情報処理システムに関する。
【背景技術】
【0002】
近年、様々な分野において、企業が保有するデータを社内で活用するだけでなく、社外の企業や組織とネットワークを介して連携し、利活用する機運が高まっている。そのため、個人情報や営業秘密等の機密性が高い機密情報に対するセキュリティ対策がますます重要となる。
【0003】
このようなセキュリティ対策として、暗号化状態のまま演算をすることができる暗号技術が知られている。例えば、非特許文献1では、暗号文に演算処理を行うことが可能な準同型暗号方式を用いた技術が開示されている。
【先行技術文献】
【非特許文献】
【0004】
【文献】C. Gentry, “Fully Homomorphic Encryption Using Ideal Lattices”, STOC 2009, pp. 169-178, 2009.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、機密情報を準同型暗号方式により暗号化して、暗号文のまま演算処理を行うことが可能だとしても、ひとたび暗号鍵が流出すると、暗号化された機密情報が復号され、情報が漏洩してしまう虞がある。
【0006】
そこで、本開示では、上記課題を解決すべくなされたものであって、その目的は、暗号鍵の流出を防止する情報処理方法を提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本開示に係る情報処理方法は、ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、演算を行う実行領域を有する演算装置と、を備えるシステムにおいて用いられる方法であって、ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成するステップと、ユーザ制御部が、第1の秘密鍵を、第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成するステップと、実行領域が、ユーザ制御部から取得したスイッチ鍵を記憶するステップと、ユーザ記憶部が、少なくとも第1の公開鍵、および第2の秘密鍵を記憶するステップと、ユーザ制御部が、平文を、第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、実行領域が、ユーザ制御部から取得した暗号文に基づいて、演算処理を実行するステップと、実行領域が、演算処理の結果に対し、スイッチ鍵を用いてキースイッチ処理を実行するステップと、ユーザ制御部が、実行領域が実行したキースイッチ処理の結果を取得し、第2の秘密鍵を用いて復号するステップと、を備える。
【0008】
また、上記目的を達成するため、本開示に係る情報処理プログラムは、ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、演算を行う実行領域を有する演算装置と、を備えるシステムにおいて用いられるプログラムであって、ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成するステップと、ユーザ制御部が、第1の秘密鍵を、第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成するステップと、実行領域が、ユーザ制御部から取得したスイッチ鍵を記憶するステップと、ユーザ記憶部が、少なくとも第1の公開鍵、および第2の秘密鍵を記憶するステップと、ユーザ制御部が、平文を、第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、実行領域が、ユーザ制御部から取得した暗号文に基づいて、演算処理を実行するステップと、実行領域が、演算処理の結果に対し、スイッチ鍵を用いてキースイッチ処理を実行するステップと、ユーザ制御部が、実行領域が実行したキースイッチ処理の結果を取得し、第2の秘密鍵を用いて復号するステップと、を備える。
【0009】
また、上記目的を達成するため、本開示に係る情報処理システムは、ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、演算を行う実行領域を有する演算装置と、を備えるシステムであって、ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成し、ユーザ制御部が、第1の秘密鍵を、第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成し、実行領域が、ユーザ制御部から取得したスイッチ鍵を記憶し、ユーザ記憶部が、少なくとも第1の公開鍵、および第2の秘密鍵を記憶し、ユーザ制御部が、平文を、第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成し、実行領域が、ユーザ制御部から取得した暗号文に基づいて、演算処理を実行し、実行領域が、演算処理の結果に対し、スイッチ鍵を用いてキースイッチ処理を実行し、ユーザ制御部が、実行領域が実行したキースイッチ処理の結果を取得し、第2の秘密鍵を用いて復号する。
【発明の効果】
【0010】
本開示によれば、暗号鍵の漏洩を防止する情報処理方法を提供することができる。
【図面の簡単な説明】
【0011】
【
図2】演算装置100のハードウェア構成を示す図である。
【
図3】演算装置100の機能的構成を示すブロック図である。
【
図4】端末装置200の機能的構成を示すブロック図である。
【
図5】情報処理システム1における情報処理の一例を示したフロー図である。
【
図6】キースイッチ処理の概念を説明する図である。
【
図8】演算装置400の機能的構成を示すブロック図である。
【
図9】端末装置500の機能的構成を示すブロック図である。
【
図10】情報処理システム3における情報処理の一例を示したフロー図である。
【
図12】情報処理システム4における情報処理の一例を示したフロー図である。
【発明を実施するための形態】
【0012】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【0013】
<本発明の概要>
本発明に係る情報処理システムでは、暗号化状態のまま演算可能な暗号方式である準同型暗号により暗号化された暗号文の演算や、準同型暗号の暗号化に用いられた暗号鍵Aを、暗号文を復号することなく別の暗号鍵Bにスイッチする、ブートストラッピング(Bootstrapping)を利用したキースイッチ処理を、プロセッサのセキュリティ機構である信頼可能な実行環境(TEE:Trusted Execution Environment)において行う。ハードウェアレベルで厳重に保護された領域において、準同型暗号によって暗号化された暗号文の演算や、キースイッチ処理を行うことで、鍵の流出や計算結果の改竄攻撃による情報漏洩を防止する。
【0014】
図6は、キースイッチ処理の概念を説明する図である。
図6を参照して、周知技術であるキースイッチ処理の概念について説明する。なお、キースイッチ処理の詳細は、文献Aに記載されている。
文献A:Ilaria Chillotti, Nicolas Gama, Mariya Georgieva & Malika Izabachene, “TFHE: Fast Fully Homomorphic Encryption Over the Torus”, Journal of Cryptology 33,34-91(2020)
【0015】
キースイッチ処理とは、準同型暗号方式により暗号化した暗号文を生成する際に用いた暗号鍵を、暗号文を復号することなく、別の暗号鍵にスイッチ(変換)する処理である。
図6の例では、平文mに対する暗号鍵を第1の公開鍵PK1から第2の公開鍵PK2にスイッチする処理について説明する。なお、
図6の説明において、「暗号化」とは、準同型暗号方式による暗号化を意味する。
【0016】
図6において、まず、第1の秘密鍵SK1を、第2の公開鍵PK2を用いて暗号化し、スイッチ鍵SWK(=Enc(SK1,PK2))を生成する(矢印A1)。一方、平文mを、第1の公開鍵PK1を用いて暗号化し、暗号文Enc(m,PK1)を生成する(矢印A2)。そして、生成した暗号文Enc(m,PK1)を、スイッチ鍵SWKを用いて暗号化することでキースイッチ処理を行い、平文mを第2の公開鍵PK2により暗号化された暗号文Enc(m,PK2)に鍵をスイッチすることができる(矢印A3)。暗号文Enc(m,PK2)は、第2の秘密鍵SK2により復号することができる(矢印A4)。
【0017】
平文mは第1の公開鍵PK1により暗号化され、また、暗号文Enc(m,PK1)を復号する第1の秘密鍵SK1は第2の公開鍵PK2により暗号化されているため、スイッチ鍵SWKを用いてキースイッチ処理を行う者は、平文mの内容、および第1の秘密鍵SK1を知ることなく、暗号文Enc(m,PK1)の暗号鍵(第1の公開鍵PK1)を別の暗号鍵(第2の公開鍵PK2)にスイッチすることができる。
【0018】
本発明に係る情報処理システムでは、上述のようなキースイッチ処理を信頼可能な実行領域であるTEEにおいて実行することで、外部への情報漏洩を防止し、さらに、TEEが不正な攻撃を受けたとしても、キースイッチ処理により生成された暗号文を復号する復号鍵(第2の秘密鍵)をスイッチ鍵の生成側で安全に保管しておくことにより、鍵の流出リスクを低減させることができる。
【実施例1】
【0019】
(情報処理システム1の構成)
図1は、情報処理システム1の全体図である。
図1を参照して、本実施形態に係る情報処理システムの全体図について説明する。
【0020】
本実施形態に係る情報処理システム1は、演算装置100と、ユーザによって使用される一つ以上の端末装置200とを備える。演算装置100と、端末装置200とは、ネットワークNWを介して通信可能に接続される。ネットワークNWは、WAN(Wide Area Network)、LAN(Local Area Network)等から構成される。情報処理システム1では、演算装置100が、端末装置200から送信されるデータについて暗号化された状態のまま、統計処理やデータベース検索処理、または機械学習の学習処理、推論処理等の演算処理を行う。
【0021】
演算装置100は、TEE10を有する。TEE(Trusted Execution Environment:信頼可能な実行環境)は、セキュアハードウェアの一種であり、プロセッサのセキュリティ機構である。TEE10は、例えば、メモリ上にエンクレーブ(Enclave)と呼ばれる、ハードウェアレベルで厳重に保護された隔離領域を生成することにより、秘密性の高いデータを保護しつつプログラムを実行することができる。
【0022】
端末装置200は、ユーザからの入力を受け付け、その入力内容を、ネットワークNWを介して演算装置100に送信する。また、端末装置200は、演算装置100からネットワークNWを介して送信されたデータを受信し、ユーザに提示する。なお、端末装置200は、複数であってもよい。端末装置200から送信されたデータに対し、演算装置100が演算処理した結果は、他の端末装置200が取得してもよい。
【0023】
(演算装置100のハードウェア構成)
図2は、演算装置100のハードウェア構成を示す図である。
図2を参照して、本実施形態に係る演算装置100のハードウェア構成について説明する。
【0024】
演算装置100は、例えば、ワークステーション、サーバコンピュータ、据え置き型のPC(Personal Computer)、ラップトップPC等のような汎用コンピュータにより実現されてもよいし、クラウド・コンピューティングによって論理的に実現されてもよい。
【0025】
演算装置100は、プロセッサ11と、メモリ12と、ストレージ13と、通信IF14と、入出力IF15と、を備える。
【0026】
プロセッサ11は、プログラムに記述された命令セットを実行するためのハードウェアであり、コンピュータ全体の動作を制御する。プロセッサ11は、TEE10を備える。TEE10のエンクレーブ内では、外部から参照不能な状態でプログラムが実行され、また、外部から参照不能な状態でデータが記憶される。
【0027】
メモリ12は、プログラム、および、プログラム等で処理されるデータ等を一時的に記憶するためのものである。メモリ12は、例えば、DRAM(Dynamic Random Access Memory)等の揮発性のメモリにより実現される。メモリ12に記憶されるプログラムは、本発明に係る情報処理方法を実行するプログラム等である。
【0028】
ストレージ13は、データを保存するための記憶装置である。ストレージ13は、例えば、フラッシュメモリ、HDD(Hard Disc Drive)等により実現される。
【0029】
通信IF14は、演算装置100が外部の装置と通信するため、信号を送受信するためのインタフェースである。例えば、無線通信を行うための無線通信機、シリアル通信のためのUSB(Universal Serial Bus)コネクタ等である。
【0030】
入出力IF15は、ユーザからの入力を受け付けるための入力装置、および、ユーザに対し情報を提示するための出力装置とのインタフェースである。入力装置は、例えば、キーボードやマウス、タッチパネル、ボタン、マイクロフォン等により実現される。出力装置は、例えば、ディスプレイやプリンタ、スピーカ等により実現される。
【0031】
なお、端末装置200のハードウェア構成を、
図2に示したハードウェア構成からTEE10を省略した構成としてもよい。端末装置200の各構成要素の動作は、上述の演算装置100と同様に、メモリ12に記憶されたプログラムに従ったプロセッサ11により実現する。
【0032】
(演算装置100の機能的構成)
図3は、演算装置100の機能的構成を示すブロック図である。
図3を参照して、実施形態1に係る演算装置100の機能的構成について説明する。
【0033】
演算装置100は、通信部110と、記憶部120と、入力部130と、出力部140と、制御部150とを備える。
【0034】
通信部110は、演算装置100が他の装置と通信するための処理を行う。ここでいう他の装置とは、ネットワークで接続されたPCでもよいし、スマートフォン、タブレットなどの端末であってもよい。また、他の装置は、入出力装置、例えば、フラッシュメモリやHDDなどによりデータの入出力を行う装置であってもよい。
【0035】
通信部110は、また、ネットワークNWを介した装置やローカルに接続された装置等と、セキュリティが確保されたセキュアな通信チャンネルでデータを送受信する。セキュアな通信チャンネルの構築や、通信方法は、共通鍵(セッション鍵など)や公開鍵等を用いた周知の技術であるため、説明を省略する。
【0036】
記憶部120は、例えば、RAM等の揮発性のメモリ、フラッシュメモリ、HDD等により構成され、演算装置100が使用するデータ、および各種処理に用いられるコンピュータプログラムを記憶する。コンピュータプログラムは、所定のサーバ等からインストールされてもよいし、コンピュータ読み取り可能な可搬型記録媒体から公知のセットアッププログラム等を用いてインストールされてもよい。可搬型記録媒体は、例えばCD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)等である。
【0037】
記憶部120は、例えば、演算装置100において使用する機械学習モデルを記憶する機械学習モデルデータベースを含んでもよい。また、記憶部120は、例えば、後述する制御部150が、データを暗号化し、または暗号化されたデータを復号するための鍵や、通信用の鍵を記憶する鍵データベースを含んでもよい。鍵データベースには、例えば、後述する端末装置200で生成される公開鍵が含まれてもよい。なお、鍵は、演算装置100内で記憶するのではなく、演算装置100とネットワークを介して、または直接的に接続される、セキュアな鍵管理装置(不図示)において記憶するようにしてもよい。
【0038】
入力部130は、演算装置100のユーザ入力を受け付けるインタフェースである。入力部130は、例えば、キーボードや、タッチパネル、音声入力を検出するマイクであるが、これらに限られない。
【0039】
出力部140は、情報を出力して演算装置100のユーザに通知するインタフェースである。出力部140は、例えば、ディスプレイや、音声出力するスピーカであるが、これらに限られない。出力部140は、例えば、端末装置200等から受信したデータをディスプレイに表示する。
【0040】
制御部150は、演算装置100の各機能を制御し、予め記憶部120に記憶されているプログラムに基づいて動作するCPU(Central Processing Unit)等のプロセッサである。
【0041】
制御部150は、TEE10を備える。TEE10は、信頼可能な実行領域であり、上述したように、TEE10のエンクレーブ内では、外部から参照不能な状態でプログラムが実行され、また、外部から参照不能な状態でデータが記憶される。なお、制御部150は、TEE以外の実行領域(REE;Rich Execution Environment、
図3において不図示)を備える。REEは、TEEと隔離された実行領域であり、プロセッサの基本的な機能を実現する。
【0042】
TEE10は、後述する端末装置200から取得したスイッチ鍵を記憶する。本実施形態では、当該スイッチ鍵により、暗号文の暗号鍵を、第1の公開鍵から第2の公開鍵へスイッチすることができる。また、TEE10は、端末装置200から取得した第1の公開鍵、および/または第2の公開鍵を記憶してもよい。
【0043】
また、TEE10は、端末装置200から通信部110を介して取得した暗号文に基づいて、演算処理を実行する。演算処理は、準同型性を有する暗号文同士の加法または乗法に関する処理を少なくとも含み、統計処理やデータベース検索処理、または機械学習の学習処理、推論処理等を行ってもよい。例えば、推論処理を行う際は、推論対象の暗号文に用いられる暗号鍵と同じ暗号鍵(第1の公開鍵または第2の公開鍵)を用いて、上述の機械学習モデルを準同型暗号方式で暗号化するようにしてもよい。推論対象の暗号文に用いられる暗号鍵と同じ暗号鍵で機械学習モデルを暗号化しておけば、異なる暗号鍵を用いるよりも、キースイッチ処理を行う手間を省くことができ、計算効率が良くなる。
【0044】
なお、準同型性を有する暗号方式としては、例えば、Paillier方式、ElGamal方式、Lifted-ElGamal方式、Somewhat Homomorphic Encryption方式、Fully Homomorphic Encryption方式、RSA方式、楕円曲線暗号方式、楕円曲線暗号(L1構成)方式、格子暗号(BFV,BGV)方式、格子暗号(CKKS)方式、格子暗号(TFHE)方式、格子暗号(TFHE亜種)方式、Goldwasser-Micali暗号方式、NTRU暗号方式、DGHV(Dijk, Gentry, Halevi, and Vaikuntanathan)暗号方式等を含む。また、TEEで利用できるメモリが演算処理を実行できる程度に大きくない場合は、演算処理を、制御部150のTEE10以外のセキュアな実行領域で実行するように構成してもよい。セキュアな実行領域は、例えば、仮想的な実行領域を一時的に構築することで、外部からのアクセスが困難となる領域により実現してもよい。また、演算処理を、REEで実行するように構成してもよい。
【0045】
また、TEE10は、演算処理の結果に対し、スイッチ鍵を用いてキースイッチ処理を実行する。キースイッチ処理は、準同型性を有する暗号文の暗号鍵を、別の暗号鍵にスイッチする処理である。本実施形態では、TEE10は、スイッチ鍵を用いてキースイッチ処理を実行することにより、暗号文の暗号鍵を第1の公開鍵から第2の公開鍵へスイッチする。
【0046】
(端末装置200の機能的構成)
図4は、端末装置200の機能的構成を示すブロック図である。
図4を参照して、実施形態1に係る端末装置200の機能的構成について説明する。
【0047】
端末装置200は、「ユーザ端末」であって、通信部210と、記憶部220と、入力部230と、出力部240と、制御部250とを備える。
【0048】
通信部210は、端末装置200が他の装置と通信するための処理を行う。通信部210の機能は、演算装置100の通信部110と同様であるので、重複する説明は省略する。
【0049】
記憶部220は、「ユーザ記憶部」として機能し、例えば、RAM等の揮発性のメモリ、フラッシュメモリ、HDD等により構成される。記憶部220は、端末装置200が使用するデータ、および各種処理に用いられるコンピュータプログラムを記憶する。記憶部220の機能は、端末装置200の記憶部220と同様であるので、重複する説明は省略する。
【0050】
記憶部220は、後述する制御部250が生成する第1の公開鍵、および第2の秘密鍵を少なくとも記憶する。なお、これらの鍵は、端末装置200内で記憶するのではなく、端末装置200とネットワークを介して、または直接的に接続される、セキュアな鍵管理装置(不図示)において記憶するようにしてもよい。
【0051】
入力部230および出力部240の機能は、演算装置100の入力部130および出力部140と同様であるので、重複する説明は省略する。
【0052】
制御部250は、「ユーザ制御部」として機能し、端末装置200の各機能を制御し、予め記憶部220に記憶されているプログラムに基づいて動作するCPU(Central Processing Unit)等のプロセッサである。
【0053】
制御部250は、2組の鍵対を生成する。具体的には、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成する。なお、これら2組の鍵対は、上述したような鍵管理装置によって生成されてもよい。
【0054】
また、制御部250は、第1の秘密鍵を、第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成する。制御部250は、生成したスイッチ鍵を、通信部210を介して、演算装置100に送信する。制御部250は、スイッチ鍵を演算装置100に送信後、削除してもよいし、記憶部220に記憶させてもよい。
【0055】
また、制御部250は、通信部210や入力部230を介して入力された平文を、第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成する。
【0056】
また、制御部250は、通信部210を介して、TEE10が実行した第2の演算処理の結果を取得し、第2の秘密鍵を用いて復号する。これにより、第2の演算処理の結果の内容を外部に知られることなく取得することができる。
【0057】
なお、制御部250は、スイッチ鍵を生成した後に、第1の秘密鍵を削除してもよい。第1の秘密鍵を削除する(消滅させる)ことにより、第1の秘密鍵が外部に流出することがなくなり、第1の公開鍵を用いて暗号化して生成された暗号文が、他者に復号されるリスクを低減することができる。
【0058】
図5は、情報処理システム1における情報処理の一例を示したフロー図である。
図5を参照して、情報処理システム1における情報処理の流れについて説明する。なお、処理の流れは一例であり、
図5に示す順序に限られない。
【0059】
ステップS101において、端末装置200の制御部250は、2組の鍵対を生成する。具体的には、第1の秘密鍵SK1および第1の公開鍵PK1、ならびに第2の秘密鍵SK2および第2の公開鍵PK2を生成する。なお、これらの鍵対は、端末装置200外の鍵管理装置により生成し、端末装置200が取得するようにしてもよい。
【0060】
ステップS102において、端末装置200の制御部250は、第1の秘密鍵SK1を、第2の公開鍵PK2を用いて準同型暗号方式で暗号化して、スイッチ鍵SWKを生成する。
【0061】
ステップS103において、演算装置100のTEE10は、ステップS102において生成されたスイッチ鍵SWKを端末装置200から取得して、記憶する。また、TEE10または記憶部120は、第1の公開鍵PK1または、第2の公開鍵PK2を端末装置200から取得して、記憶してもよい。
【0062】
また、端末装置200の記憶部220は、第1の公開鍵、および第2の秘密鍵を少なくとも記憶する。なお、端末装置200の制御部250は、第1の秘密鍵SK1は、スイッチ鍵SWKの生成後に削除してもよい。第1の秘密鍵SK1を削除することにより、第1の公開鍵を用いて暗号化して生成された暗号文が復号されるリスクを低減することができる。
【0063】
ステップS104において、端末装置200の制御部250は、平文mを、第1の公開鍵PK1を用いて準同型暗号方式で暗号化し、暗号文Enc(m,PK1)を生成する。
【0064】
ステップS105において、演算装置100のTEE10は、端末装置200から暗号文Enc(m,PK1)を取得し、演算処理を実行する。例えば、端末装置200のユーザからの要求に基づいて、暗号文Enc(m,PK1)を暗号化したまま、統計処理やデータベース検索処理、または機械学習の学習処理、推論処理等を行う。なお、暗号文Enc(m,PK1)について、他の暗号文と乗算や加算を効率的に行う場合は、当該他の暗号文は、第1の公開鍵PK1により暗号化されているとよい。
【0065】
ステップS106において、演算装置100のTEE10は、演算処理の結果に対し、スイッチ鍵SWKを用いてキースイッチ処理を実行する。具体的には、演算処理の結果である暗号文Enc(m’,PK1)に対し、スイッチ鍵SWKを用いてキースイッチ処理を行い、第2の公開鍵PK2により暗号化した暗号文Enc(m’,PK2)を生成する。
【0066】
ステップS107において、端末装置200の制御部250は、演算装置100からキースイッチ処理の結果である暗号文Enc(m’,PK2)を取得し、第2の秘密鍵SK2を用いて復号する。このように、端末装置200は、キースイッチ処理の結果を復号することで、平文mに対する演算処理の結果m’を安全に取得することができる。
【0067】
なお、端末装置200は、第2の秘密鍵を他の端末装置200と共有し、キースイッチ処理の結果を他の端末装置200に提供してもよい。端末装置200で保有していた平文mを開示することなく、演算処理の結果m’を他の端末装置200に提供することができる。
【0068】
(効果の説明)
上述したように、本発明に係る情報処理システムでは、暗号化状態のまま演算可能な暗号方式である準同型暗号により暗号化された暗号文の演算や、準同型暗号の暗号化に用いられた暗号鍵Aを、暗号文を復号することなく別の暗号鍵Bにスイッチするキースイッチ処理を、プロセッサのセキュリティ機構である信頼可能な実行環境(TEE)において行う。データの暗号化に用いる鍵とデータの復号に用いる鍵を異なる鍵生成プロセスによって生成し、TEEや準同型暗号といった情報漏えい防止のための技術を用いると同時に、キースイッチ処理を実施することで、鍵の流出や計算結果の改竄攻撃による情報漏えいを防止することができる。
【0069】
また、TEEを用いることにより、ハードウェアレベルで信頼可能性が高まり、外部からデータへのアクセスが困難となるため、情報漏洩を防ぐことができる。
【0070】
また、TEEを用いることにより、プログラムの健全性をリモートの信頼できる認証局等によって検証するプロセス(リモートアテステーション)に基づいて、システムがセキュアな状態であることを保証することができる。
【0071】
また、本発明に係る情報処理システムでは、スイッチ鍵を生成した後に、第1の秘密鍵を削除する。第1の公開鍵を用いて暗号化して生成された暗号文は、演算装置100においてセキュリティ強度が非常に高い実行環境であるTEEで扱われるため、攻撃者による奪取は極めて困難である。したがって、第1の公開鍵を用いて暗号化される暗号文の復号は実質的に不可能であり、暗号化の対象である元データのセキュリティを非常に強固にすることができる。
【0072】
<実施例1の変形例>
本変形例に係る情報処理システム2は、実施形態1に係る情報処理システム1の演算装置100(
図1参照)に代えて、演算装置300を備える点で相違する以外は、情報処理システム1と同様の構成である。したがって、実施形態1と同様の構成については説明を省略する。
【0073】
情報処理システム2の演算装置300では、演算装置100のTEE10が行っていた処理を、オペレーティングシステム(OS;Operating System)における通常の実行環境が行う。具体的には、演算装置300の通常の実行環境は、スイッチ鍵を記憶する処理(
図5のステップS103に相当)、演算処理の実行(
図5のステップS105に相当)、キースイッチ処理の実行(
図5のステップS106に相当)を行う。
【0074】
演算装置300の通常の実行環境では、メモリ空間等の実行領域が、鍵管理領域と演算領域とに分けられてもよい。鍵管理領域はスイッチ鍵を管理するための専用領域である。OSやアプリケーションは、鍵管理領域には直接アクセスできない。演算領域は、演算処理が実行される領域である。演算領域において鍵管理領域からスイッチ鍵を取得するためには、安全なプロトコルを介して行う必要がある。このように領域を分けることで、スイッチ鍵が不正にアクセスされるリスクを低減し、システムの全体的なセキュリティを高めることができる。
【0075】
実施形態1では、キースイッチ処理等を、信頼可能な実行環境(TEE)が行った。TEEは、ハードウェアレベルで厳重に保護された実行環境であるためセキュリティが高い。その一方で、ハードウェアのコストがかかる、データの処理量が制限される、などの課題がある。本変形例に係る構成は、TEEを用いるよりも、ハードウェアのコストを低減することができる。また、データの処理量に応じたリソースの供給を容易にすることができる。
【0076】
また、本変形例では、スイッチ鍵を生成した後に、第1の秘密鍵を削除することで、第1の公開鍵を用いて暗号化して生成された暗号文が復号されるリスクを低減させることができる。第1の公開鍵を用いて暗号化された暗号文を復号するには、当該第1の公開鍵に対応する第1の秘密鍵が必要となる。すなわち、第1の秘密鍵が削除されている場合は、第1の公開鍵を用いて暗号化された暗号文の復号は不可能である。一方で、第1の秘密鍵が削除されていたとしても、暗号鍵を第1の公開鍵から第2の公開鍵へキースイッチ処理するスイッチ鍵、およびキースイッチ処理後の暗号文を復号する第2の秘密鍵があれば、第1の公開鍵を用いて暗号化された暗号文を復号することは可能である。しかしながら、この場合、攻撃者は、ローカル(端末装置200)で保管されている第2の秘密鍵だけではなく、クラウド(演算装置300)で保管されているスイッチ鍵までも取得する必要がある。2つの鍵を取得することは非常に困難であるため、暗号文を復号することは、実質的に不可能である。したがって、本変形例では、TEEを用いない実行環境であっても、第1の公開鍵を用いて暗号化して生成された暗号文を復号することは実質的に不可能であり、高いセキュリティを実現することができる。
【0077】
また、演算装置300の実行環境は、仮想的な実行環境を構築することによって実現してもよい。
【実施例2】
【0078】
実施形態1では、1ユーザ(1つの端末装置)が生成する準同型性を有する暗号文に対してキースイッチ処理を行った。本実施形態では、複数のユーザが生成する準同型性を有する暗号文に対してキースイッチ処理を行う。
【0079】
準同型暗号は、ある公開鍵を用いて暗号化された暗号文に対して暗号化状態のまま演算することが可能な暗号方式である。しかしながら、複数の暗号文を対象とした演算処理を可能とするためには、これらの暗号文が同一の暗号化空間にある、すなわち、同一の暗号鍵(公開鍵)により暗号化されている必要がある。本実施形態では、複数のユーザが異なる暗号鍵を用いて生成する準同型性を有する暗号文の演算処理を可能とするために、それらの暗号文の暗号鍵を、同一の暗号鍵にスイッチするキースイッチ処理を行う。そして、演算処理を実行後、その実行結果(暗号文)の暗号鍵を、それぞれのユーザが生成した暗号鍵(公開鍵)へスイッチするキースイッチ処理を行う。これにより、それぞれのユーザが保有する復号鍵(秘密鍵)で復号することが可能になり、自組織の保有するデータを秘匿にしつつ、他組織のデータも活用した演算処理を実行することができる。すなわち、各ユーザが保有するデータは、開示されることなく暗号化状態のまま演算処理が実行され、演算結果のみ各ユーザが復号して閲覧することができる。
【0080】
(情報処理システム3の構成)
図7は、情報処理システム3の全体図である。
図7を参照して、本実施形態に係る情報処理システムの全体図について説明する。
【0081】
本実施形態に係る情報処理システム3は、演算装置400と、ユーザによって使用される端末装置500-1,500-2,…,500-N(Nは自然数。)と、を備える。以下の説明では、端末装置500-1,500-2,…,500-Nは、特に区別する必要のない限り、端末装置500と記載する。情報処理システム3は、当該システムに参加する各組織(ユーザ)が、それぞれの組織が保有するデータを、他組織にデータの詳細な内容を開示することなく利用できるプラットフォームである。なお、組織とは、企業や団体に限られず、役割ごとに区切られた部門、課、グループ、チーム等の集団であってもよい。端末装置500は、プラットフォームに参加する組織と関連付けられている。
【0082】
演算装置400は、TEE40を有する。演算装置400は、演算装置100と同様のハードウェア構成を有しており、TEE40は、上述したTEE10と同様のセキュリティ機構である。
【0083】
端末装置500は、ユーザからの入力を受け付け、その入力内容を、ネットワークNWを介して演算装置400に送信する。また、端末装置500は、演算装置400からネットワークNWを介して送信されたデータを受信し、ユーザに提示する。
【0084】
(演算装置400の機能的構成)
図8は、演算装置400の機能的構成を示すブロック図である。
図8を参照して、実施形態2に係る演算装置400の機能的構成について説明する。なお、演算装置100と共通する構成要素には同一の符号を付しており、繰り返しの説明を省略する。
【0085】
演算装置400は、通信部110と、記憶部120と、入力部130と、出力部140と、制御部450とを備える。制御部450は、演算装置400の各機能を制御し、予め記憶部120に記憶されているプログラムに基づいて動作するCPU等のプロセッサである。
【0086】
制御部450は、TEE40を備える。TEE40は、中間秘密鍵および中間公開鍵を生成する。例えば、TEE40内に備える鍵アプリケーションによって鍵対を生成してもよい。制御部450は、通信部110に対し、中間公開鍵を各端末装置500へ送信するよう制御する。また、制御部450は、通信部110を介して、各端末装置500において生成された第2の公開鍵(後述)を取得する。TEE40は、中間秘密鍵を、それぞれの端末装置500から取得した第2の公開鍵を用いて準同型暗号方式で暗号化して、第2のスイッチ鍵を生成する。第2のスイッチ鍵により、暗号文の暗号鍵を、中間公開鍵から第2の公開鍵へスイッチすることができる。
【0087】
TEE40は、後述する端末装置500のそれぞれから取得した第1のスイッチ鍵、および上述のように生成した第2のスイッチ鍵を記憶する。なお、第2の公開鍵は、記憶部120等において記憶してもよい。また、中間秘密鍵は、第2のスイッチ鍵を生成後、削除してもよい。
【0088】
また、TEE40は、通信部110を介して端末装置500から取得した暗号文に対し、当該暗号文を生成した端末装置500に対応する第1のスイッチ鍵を用いて第1のキースイッチ処理を実行する。第1のキースイッチ処理により、端末装置500から取得した暗号文の暗号鍵が、第1の公開鍵から中間公開鍵へスイッチされる。
【0089】
また、TEE40は、第1のキースイッチ処理が実行された暗号文に基づいて演算処理を実行する。演算処理は、準同型性を有する暗号文同士の加法または乗法に関する処理を少なくとも含む。より具体的には、各端末装置500-K(Kは、1≦K≦Nを満たす自然数。)から取得した暗号文についての加法または乗法に関する処理であって、統計処理やデータベース検索処理、機械学習の学習処理、推論処理等であってもよい。第1のスイッチ鍵を用いた第1のキースイッチ処理により、各端末装置500から取得した暗号文は、同一の暗号化空間にある暗号文に変換されているので、加法または乗法に関する処理等を行うことができる。
【0090】
また、TEE40は、演算処理の結果(暗号文)に対し、第2のスイッチ鍵を用いて第2のキースイッチ処理を実行する。第2のキースイッチ処理により、演算処理の結果(暗号文)の暗号鍵が、中間公開鍵から第2の公開鍵へスイッチされる。
【0091】
(端末装置500の機能的構成)
図9は、端末装置500の機能的構成を示すブロック図である。
図9を参照して、実施形態2に係る端末装置500の機能的構成について説明する。なお、端末装置200と共通する構成要素には同一の符号を付しており、繰り返しの説明を省略する。
【0092】
端末装置500は、「ユーザ端末」であって、通信部210と、記憶部520と、入力部230と、出力部240と、制御部550とを備える。
【0093】
記憶部520は、「ユーザ記憶部」として機能し、記憶部220と同様の機能を有する。記憶部520は、後述する制御部550が生成する第1の公開鍵、および第2の秘密鍵を少なくとも記憶する。なお、これらの鍵は、端末装置500内で記憶するのではなく、端末装置500とネットワークを介して、または直接的に接続される、セキュアな鍵管理装置(不図示)において記憶するようにしてもよい。
【0094】
制御部550は、「ユーザ制御部」として機能し、端末装置500の各機能を制御し、予め記憶部520に記憶されているプログラムに基づいて動作するCPU等のプロセッサである。
【0095】
制御部550は、2組の鍵対を生成する。具体的には、第1の秘密鍵および公開鍵、ならびに第2の秘密鍵および公開鍵を生成する。なお、これら2組の鍵対は、上述したような鍵管理装置によって生成されてもよい。また、各端末装置500で生成される第1の秘密鍵および公開鍵、ならびに第2の秘密鍵および公開鍵は、それぞれ異なる鍵である。
【0096】
また、制御部550は、第1の秘密鍵を、中間公開鍵を用いて準同型暗号方式で暗号化して、第1のスイッチ鍵を生成する。第1のスイッチ鍵により、暗号文の暗号鍵を、第1の公開鍵から中間公開鍵へスイッチすることができる。制御部550は、生成した第1のスイッチ鍵を、通信部210を介して、演算装置400に送信する。制御部550は、第1のスイッチ鍵を演算装置400に送信後、第1のスイッチ鍵を記憶部220に記憶させてもよいし、削除してもよい。
【0097】
なお、制御部550は、第1のスイッチ鍵を生成した後に、第1の秘密鍵を削除してもよい。第1の秘密鍵を削除する(消滅させる)ことにより、第1の秘密鍵が外部に流出することがなくなり、第1の公開鍵を用いて暗号化して生成された暗号文が、他者に復号されるリスク、すなわち、平文(元データ)が流出するリスクを低減することができる。
【0098】
また、制御部550は、通信部210や入力部230を介して入力された平文を、第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成する。
【0099】
また、制御部550は、通信部210を介して、第2のキースイッチ処理が実行された演算処理の結果を演算装置400から取得し、第2の秘密鍵を用いて復号する。
【0100】
図10は、情報処理システム3における情報処理の一例を示したフロー図である。
図10を参照して、情報処理システム3における情報処理の流れについて説明する。なお、処理の流れは一例であり、
図10に示す順序に限られない。また、
図10では、説明を簡単にするために、2台の端末装置(端末装置500-1と端末装置500-2)を記載しているが、端末装置500が3台以上であってもよい。また、
図10において、端末装置500-Kの第1の秘密鍵をSK1_k、第1の公開鍵をPK1_k、第2の秘密鍵をSK2_k、第2の公開鍵をPK2_kと記載する。
【0101】
ステップS201において、端末装置500-1の制御部550は、2組の鍵対を生成する。具体的には、第1の秘密鍵SK1_1および公開鍵PK1_1、ならびに第2の秘密鍵SK2_1および公開鍵PK2_1を生成する。なお、これらの鍵対は、端末装置500-1外の鍵管理サーバにより生成し、端末装置500が取得するようにしてもよい。
【0102】
ステップS202において、演算装置400のTEE40は、中間秘密鍵InSKおよび中間公開鍵InPKを生成する。
【0103】
ステップS203において、端末装置500-1の制御部550は、演算装置400から中間公開鍵InPKを取得する。
【0104】
ステップS204において、端末装置500-1の制御部550は、第1の秘密鍵SK1_1を、ステップS203で取得した中間公開鍵InPKを用いて準同型暗号方式で暗号化して、第1のスイッチ鍵SWK1(SK1_1,InPK)を生成する。
【0105】
ステップS205において、演算装置400のTEE40は、端末装置500-1から第1のスイッチ鍵SWK1(SK1_1,InPK)および第2の公開鍵PK2_1を取得する。なお、TEE40は、第1のスイッチ鍵SWK1(SK1_1,InPK)および第2の公開鍵PK2_1を別々のタイミングで取得してもよい。
【0106】
ステップS206において、演算装置400のTEE40は、中間秘密鍵InSKを、端末装置500-1から取得した第2の公開鍵PK2_1を用いて準同型暗号方式で暗号化して、端末装置500-1に対応する第2のスイッチ鍵SWK2(InSK,PK2_1)を生成する。
【0107】
ステップS207において、端末装置500-1の記憶部520は、第1の公開鍵PK1_1、および第2の秘密鍵SK2_1を記憶する。なお、端末装置500-1の制御部550は、第1のスイッチ鍵SWK(SK1_1,InPK)を生成した後、第1の秘密鍵SK1_1を削除してもよい。第1の秘密鍵SK1_1を削除することにより、第1の公開鍵PK1_1を用いて暗号化して生成された暗号文が復号されるリスクを低減することができる。
【0108】
ステップS208において、端末装置500-2および演算装置400は、ステップS200~S207において端末装置500-1と演算装置400が行ったのと同様の鍵処理を行う。すなわち、端末装置500-2の制御部550は、第1の秘密鍵SK1_2および公開鍵PK1_2、ならびに第2の秘密鍵SK2_2および公開鍵PK2_2を生成する。また、端末装置500-2の制御部550は、演算装置400から中間公開鍵InPKを取得し、第1のスイッチ鍵SWK1(SK1_2,InPK)を生成する。演算装置400のTEE40は、端末装置500-2から第1のスイッチ鍵SWK1(SK1_2,InPK)および第2の公開鍵PK2_2を取得する。そして、演算装置400のTEE40は、端末装置500-2に対応する第2のスイッチ鍵SWK2(InSK,PK2_2)を生成する。なお、各端末装置500で生成される第1の秘密鍵および公開鍵、ならびに第2の秘密鍵および公開鍵は、それぞれ異なる鍵である。また、ステップS208の処理は、ステップS200~S207において端末装置500-1と演算装置400が行う鍵処理と同時に行われてもよいし、先に行われてもよい。
【0109】
ステップS209において、演算装置400のTEE40は、各端末装置500-K(
図10において、K=1,2)に対応する第1のスイッチ鍵SWK1(SK1_k,InPK)、および第2のスイッチ鍵SWK2(InSK,PK2_k)を記憶する。
【0110】
なお、演算装置400のTEE40は、各端末装置500-Kに対応する第2のスイッチ鍵SWK(InSK,PK2_k)を生成した後、中間秘密鍵InSKを記憶領域から削除してもよい。中間秘密鍵InSKを削除することにより、攻撃者が中間秘密鍵InSKを奪取して、各端末装置500-Kの第1のスイッチ鍵を用いてキースイッチ処理を実行した後の暗号文を復号し、平文(元データ)が流出することを防ぐことができる。
【0111】
また、第1の秘密鍵SK1_k、および中間秘密鍵InSKの削除は、どちらか一方についてのみ行ってもよいし、両方行ってもよい。
【0112】
ステップS210において、端末装置500-1の制御部550は、平文m_1を、第1の公開鍵PK1_1を用いて準同型暗号方式で暗号化し、暗号文Enc(m_1,PK1_1)を生成する。
【0113】
ステップS211において、演算装置400のTEE40は、端末装置500-1から暗号文Enc(m_1,PK1_1)を取得する。
【0114】
ステップS212において、端末装置500-2の制御部550は、平文m_2を、第1の公開鍵PK1_2を用いて準同型暗号方式で暗号化し、暗号文Enc(m_2,PK1_2)を生成する。
【0115】
ステップS213において、演算装置400のTEE40は、端末装置500-2から暗号文Enc(m_2,PK1_2)を取得する。
【0116】
ステップS214において、演算装置400のTEE40は、各端末装置500-Kから取得した暗号文Enc(m_k,PK1_k)に対し、暗号文を生成した端末装置500-Kに対応する第1のスイッチ鍵SWK(SK1_k,InPK)を用いて、第1のキースイッチ処理を実行する。具体的には、端末装置500-1から取得した暗号文Enc(m_1,PK1_1)に対しては、端末装置500-1に対応する第1のスイッチ鍵SWK(SK1_1,InPK)を用いてキースイッチ処理を実行する。端末装置500-2から取得した暗号文Enc(m_2,PK1_2)に対しては、端末装置500-2に対応する第1のスイッチ鍵SWK(SK1_2,InPK)を用いてキースイッチ処理を実行する。ステップS214におけるキースイッチ処理により、各端末装置500から取得した暗号文の暗号鍵は、各端末装置500-Kで生成された第1の公開鍵PK1_kから中間公開鍵InPKにスイッチされる。
【0117】
ステップS215において、演算装置400のTEE40は、第1のキースイッチ処理が実行された各暗号文Enc(m_k,InPK)に基づいて、演算処理を実行する。例えば、端末装置500-1のユーザからの要求に応じて、各暗号文Enc(m_k,InPK)を暗号化したまま、機械学習の学習処理、推論処理等を行う。
【0118】
ステップS216において、演算装置400のTEE40は、演算処理の結果(m’)の送信要求に応じて、演算処理の結果に対し、送信要求した端末装置500-Kに対応する第2のスイッチ鍵SWK2(InSK,PK2_k)を用いてキースイッチ処理を実行する。具体的には、例えば、端末装置500-1の演算処理の結果の送信要求に応じて、演算処理の結果である暗号文Enc(m’,InPK)に対し、端末装置500-1に対応する第2のスイッチ鍵SWK2(InSK,PK2_1)を用いてキースイッチ処理を行い、暗号文Enc(m’,PK2_1)、すなわち、端末装置500-1が生成した第2の公開鍵PK2_1により暗号化された暗号文を生成する。
【0119】
同様に、例えば、端末装置500-2の演算処理の結果要求に応じて、キースイッチ処理を行い、暗号文Enc(m’,PK2_2)、すなわち、端末装置500-2が生成した第2の公開鍵PK2_2により暗号化された暗号文を生成する。
【0120】
ステップS217において、端末装置500-1は、暗号文Enc(m’,PK2_1)を取得する。また、端末装置500-2は、暗号文Enc(m’,PK2_2)を取得する。
【0121】
ステップS218において、端末装置500-1の制御部550は、第2の秘密鍵SK2_1を用いて暗号文Enc(m’,PK2_1)を復号する。このように、端末装置500-1は、キースイッチ処理の結果を復号することで、平文m_1と他の端末装置500-Kが保有する平文m_kとの演算処理の結果m’を安全に取得することができる。
【0122】
ステップS219において、端末装置500-2の制御部550は、第2の秘密鍵を用いて暗号文Enc(m’,PK2_2)を復号する。端末装置500-1と同様に、端末装置500-2は、平文m_2と他の端末装置500-Kが保有する平文m_kとの演算処理の結果m’を安全に取得することができる。
【0123】
なお、実施形態2においても、実施形態1の変形例と同様に、演算装置400のTEE40が行っていた処理を、演算装置400のOSにおける通常の実施環境が行ってもよい。通常の実施環境が行う場合は、TEEを用いるよりも、ハードウェアのコストを低減することができる。また、演算装置400の実行環境は、仮想的な実行環境を構築することによって実現してもよい。
【0124】
また、実施形態1の変形例と同様に、演算装置400の通常の実行環境では、メモリ空間等の実行領域が、鍵管理領域と演算領域とに分けられてもよい。このように領域を分けることで、スイッチ鍵が不正にアクセスされるリスクを低減し、システムの全体的なセキュリティを高めることができる。
【0125】
(効果の説明)
上述したように、本実施形態では、複数のユーザが異なる暗号鍵を用いて生成する準同型性を有する暗号文の暗号鍵を、同一の暗号鍵にスイッチするキースイッチ処理を行う。そして、演算処理を実行後、その実行結果(暗号文)の暗号鍵を、それぞれのユーザが生成した暗号鍵(公開鍵)へスイッチするキースイッチ処理を行う。これにより、それぞれのユーザが保有する復号鍵(秘密鍵)で復号することが可能になり、自組織の保有するデータを秘匿にしつつ、他組織のデータも活用した演算処理を実行できる。すなわち、各ユーザが保有するデータは、開示されることなく暗号化状態のまま演算処理が実行され、演算結果のみ各ユーザが復号して閲覧することができる。
【0126】
また、本実施形態では、各端末装置において第1のスイッチ鍵を生成した後に、第1の秘密鍵を削除するステップ、または、演算装置において、各端末装置に対応する第2のスイッチ鍵を生成した後、中間秘密鍵を記憶領域から削除するステップの、少なくともいずれか一方のステップを行う。秘密鍵を削除することで、当該秘密鍵と対になる公開鍵で暗号化された暗号文は復号が不可能となる。すなわち、第1の秘密鍵および/または中間秘密鍵が削除されることにより、各端末装置において第1の公開鍵により暗号化された暗号文を平文(元データ)に復号することは不可能となり、セキュリティを非常に強固にすることができる。
【実施例3】
【0127】
本実施形態に係る情報処理システムは、演算装置および端末装置に加えて、管理装置をさらに備える。管理装置自体はデータを提供しないが、各端末装置から暗号化して提供されるデータや、各端末装置から暗号化して提供されるデータに基づいて演算処理された演算結果を復号し、閲覧することができる。
図11は、情報処理システム4の全体図である。
図11を参照して、本実施形態に係る情報処理システムについて説明する。
【0128】
情報処理システム4は、演算装置600と、端末装置700-1,…,700-Nと、管理装置800と、を備える。
【0129】
管理装置800は、情報処理システム4に参加する各組織を管理、統括するユーザに関連付けられており、機密性の高い情報を集約的に扱う。管理装置800のユーザは、例えば、人事部門や生産管理部門等であって、各端末装置700が保有するデータや、各端末装置700が保有するデータに基づいて演算処理された結果を閲覧する権限を有する。管理装置800は、管理制御部810と、管理記憶部820と、を有する。管理記憶部820は、管理公開鍵および管理秘密鍵を記憶する。なお、管理公開鍵および管理秘密鍵は、管理制御部810が生成して管理記憶部820が記憶するようにしてもよいし、外部の鍵管理装置が管理(生成および記憶)してもよい。
【0130】
演算装置600のTEE60は、管理装置800の管理記憶部820が記憶する管理公開鍵を取得し、中間秘密鍵を、管理公開鍵を用いて準同型暗号方式で暗号化して、管理スイッチ鍵を生成する。また、第1のキースイッチ処理がされた暗号文に基づいて実行された演算処理の結果に対し、管理スイッチ鍵を用いてキースイッチ処理を実行する。キースイッチ処理が実行された演算処理の結果は、管理装置800の管理制御部810によって、管理秘密鍵を用いて復号される。
【0131】
このように、管理装置800のユーザは、管理スイッチ鍵を用いたキースイッチ処理により、演算処理の結果を閲覧することができる。また、演算装置600のTEE60において演算処理された演算結果ではなく、各端末装置700から送信された暗号文も、同様に管理スイッチ鍵を用いたキースイッチ処理により閲覧可能である。
【0132】
端末装置700は、制御部および記憶部を有する(
図11において不図示)。端末装置700の制御部は、第1の秘密鍵および公開鍵を生成する。また、端末装置700の記憶部は、公開鍵を記憶する。なお、第1の秘密鍵および公開鍵は、上述したような鍵管理装置によって管理(生成および記憶等)されてもよい。
【0133】
端末装置700の制御部は、演算装置600から中間公開鍵を取得し、第1の秘密鍵を、中間公開鍵を用いて準同型暗号方式で暗号化して、第1のスイッチ鍵を生成し、演算装置600に送信する。演算装置600のTEE60は、第1のスイッチ鍵を用いて、各端末装置700から取得した暗号文について第1のキースイッチ処理を実行する。なお、演算装置600、端末装置700の機能構成は、それぞれ、演算装置400、端末装置500と同様であるため、重複する説明は省略する。
【0134】
図12は、情報処理システム4における情報処理の一例を示したフロー図である。
図12を参照して、情報処理システム4における情報処理の流れについて説明する。なお、処理の流れは一例であり、
図12に示す順序に限られない。また、
図12では、説明を簡単にするために、1または複数の端末装置700を、端末装置700-K(Kは、1≦K≦Nを満たす自然数。)と記載する。
【0135】
ステップS301において、端末装置700-Kは、1組の鍵対を生成する。具体的には、第1の秘密鍵SK1_kおよび公開鍵PK1_kを生成する。なお、鍵対は、端末装置700-K外の鍵管理装置により生成し、端末装置700-Kが取得するようにしてもよい。
【0136】
ステップS302において、演算装置600のTEE60は、中間秘密鍵InSKおよび中間公開鍵InPKを生成する。
【0137】
ステップS303において、端末装置700-Kは、演算装置600から中間公開鍵InPKを取得する。
【0138】
ステップS304において、端末装置700-Kは、第1の秘密鍵SK1_kを、ステップS303で取得した中間公開鍵InPKを用いて準同型暗号方式で暗号化して、第1のスイッチ鍵SWK1(SK1_k,InPK)を生成する。
【0139】
ステップS305において、演算装置600のTEE60は、端末装置700-Kから第1のスイッチ鍵SWK1(SK1_k,InPK)を取得する。
【0140】
ステップS306において、管理装置800の管理制御部810は、管理秘密鍵AdSKおよび管理公開鍵AdPKを生成する。
【0141】
ステップS307において、演算装置600のTEE60は、管理装置800から管理公開鍵AdPKを取得する。
【0142】
ステップS308において、演算装置600のTEE60は、中間秘密鍵InSKを、管理装置800から取得した管理公開鍵AdPKを用いて準同型暗号方式で暗号化して、管理スイッチ鍵SWK2(InSK,AdPK)を生成する。
【0143】
ステップS309において、演算装置600のTEE60は、管理スイッチ鍵SWK2(InSK,AdPK)、および各端末装置700-Kに対応する第1のスイッチ鍵SWK1(SK1_k,InPK)を記憶する。
【0144】
ステップS310において、端末装置700-Kは、第1の公開鍵PK1_kを記憶する。
【0145】
ステップS311において、管理装置800の管理記憶部820は、管理秘密鍵AdSKを記憶する。
【0146】
なお、鍵対の生成(ステップS301,302,306)は同時に行われてもよいし、個別のタイミングで行われてもよい。鍵の記憶(ステップS309,310,311)についても同様である。
【0147】
ステップS312において、端末装置700-Kは、平文m_kを、第1の公開鍵PK1_kを用いて準同型暗号方式で暗号化し、暗号文Enc(m_k,PK1_k)を生成する。
【0148】
ステップS313において、演算装置600のTEE60は、端末装置700-Kから暗号文Enc(m_k,PK1_k)を取得する。
【0149】
ステップS314において、演算装置600のTEE60は、各端末装置700-Kから取得した暗号文Enc(m_k,PK1_k)に対し、暗号文を生成した端末装置700-Kに対応する第1のスイッチ鍵SWK1(SK1_k,InPK)を用いて、第1のキースイッチ処理を実行する。具体的には、端末装置700-Kから取得した暗号文Enc(m_k,PK1_k)に対しては、端末装置700-Kに対応する第1のスイッチ鍵SWK1(SK1_1,InPK)を用いてキースイッチ処理を実行する。ステップS314における第1のキースイッチ処理により、各端末装置700から取得した暗号文の暗号鍵は、各端末装置700-Kで生成された第1の公開鍵PK1_kから中間公開鍵InPKにスイッチされる。
【0150】
ステップS315において、演算装置600のTEE60は、第1のキースイッチ処理が実行された各暗号文Enc(m_k,InPK)に基づいて、演算処理を実行する。例えば、端末装置700-Kや管理装置800のユーザからの要求に応じて、各暗号文Enc(m_k,InPK)を暗号化したまま、機械学習の学習処理、推論処理等を行う。
【0151】
ステップS316において、演算装置600のTEE60は、演算処理の結果(m’)の送信要求を管理装置800から受け付ける。
【0152】
ステップS317において、演算装置600のTEE60は、演算処理の結果(m’)の送信要求に応じて、演算処理の結果に対し、送信要求した管理装置800に対応する管理スイッチ鍵SWK2(InSK,AdPK)を用いて、第2のキースイッチ処理を実行する。具体的には、管理装置800の演算処理の結果の送信要求に応じて、演算処理の結果である暗号文Enc(m’,InPK)に対し、管理スイッチ鍵SWK2(InSK,AdPK)を用いてキースイッチ処理を行い、暗号文Enc(m’,AdPK)、すなわち、管理装置800が生成した管理公開鍵AdPKにより暗号化された暗号文を生成する。なお、演算装置600は、予め、演算処理の結果(m’)を管理装置800に対応する管理スイッチ鍵SWK2(InSK,AdPK)を用いて第2のキースイッチ処理を実行して記憶部等に記憶しておき、管理装置800からの送信要求に応じて、第2のキースイッチ処理が実行された演算処理の結果を管理装置800に送信するようにしてもよい。
【0153】
ステップS318において、管理装置800は、暗号文Enc(m’,AdPK)を取得する。
【0154】
ステップS319において、管理装置800は、管理秘密鍵AdSKを用いて暗号文Enc(m’,AdPK)を復号する。このように、管理装置800は、キースイッチ処理の結果を復号することで、端末装置700-Kが保有する平文m_kの演算処理の結果m’を安全に取得することができる。また、管理装置800は、端末装置700-Kが保有する平文m_kについても、同様のキースイッチ処理により取得し、復号することができる。
【0155】
なお、実施形態3においても、実施形態1の変形例と同様に、演算装置600のTEE60が行っていた処理を、演算装置600のOSにおける通常の実施環境が行ってもよい。通常の実施環境が行う場合は、TEEを用いるよりも、ハードウェアのコストを低減することができる。また、演算装置400の実行環境は、仮想的な実行環境を構築することによって実現してもよい。
【0156】
また、実施形態1の変形例と同様に、演算装置600の通常の実行環境では、メモリ空間等の実行領域が、鍵管理領域と演算領域とに分けられてもよい。このように領域を分けることで、スイッチ鍵が不正にアクセスされるリスクを低減し、システムの全体的なセキュリティを高めることができる。
【0157】
(効果の説明)
上述したように、本実施形態では、演算装置および端末装置に加えて、管理装置をさらに備える。管理装置自体はデータを提供しないが、管理スイッチ鍵を用いたキースイッチ処理により、各端末装置から暗号化して提供されるデータや、各端末装置から暗号化して提供されるデータに基づいて演算処理された演算結果を、管理装置のみが復号し閲覧することができる。これにより、プラットフォームにおける管理権限のコントロールを容易に行うことができる。
【0158】
<実施例3の変形例>
実施形態3の変形例では、情報処理システム4において、端末装置700に第1の秘密鍵および公開鍵に加え、第2の秘密鍵および公開鍵を生成させてもよい。端末装置700が第2の秘密鍵および公開鍵を生成し、演算装置600において第2のスイッチ鍵を生成することにより、端末装置700においても、第2のキースイッチ処理をした暗号文を復号することができる。
【0159】
(効果の説明)
情報処理システム4に参加する各組織(ユーザ)が保有するデータは、開示されることなく暗号化状態のまま演算処理が実行され、演算結果等を各ユーザが復号して閲覧することができるとともに、データを提供していない管理装置においても、各組織が保有するデータやその演算結果を閲覧することができる。
【0160】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【0161】
また、本発明は、以下の各付記に示す態様であってもよい。
[付記1]
ユーザ制御部と、ユーザ記憶部と、を有する複数のユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムにおいて用いられる方法であって、
それぞれの前記ユーザ端末において、前記ユーザ制御部が、第1の秘密鍵および公開鍵、ならびに第2の秘密鍵および公開鍵を生成するステップと、
前記実行領域が、中間秘密鍵および中間公開鍵を生成するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記中間公開鍵を取得するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記第1の秘密鍵を、前記中間公開鍵を用いて準同型暗号方式で暗号化して、第1のスイッチ鍵を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部が生成した前記第1のスイッチ鍵、および前記第2の公開鍵を取得するステップと、
前記実行領域が、前記中間秘密鍵を、前記それぞれのユーザ端末から取得した前記第2の公開鍵を用いて準同型暗号方式で暗号化して、第2のスイッチ鍵を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末に対応する前記第1のスイッチ鍵および前記第2のスイッチ鍵を記憶するステップと、
前記それぞれのユーザ端末における前記ユーザ記憶部が、当該ユーザ端末のユーザ制御部が生成した前記第1の公開鍵、および前記第2の秘密鍵を記憶するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部から取得した前記暗号文に対し、当該暗号文を生成したユーザ端末に対応する前記第1のスイッチ鍵を用いて第1のキースイッチ処理を実行するステップと、
前記実行領域が、前記第1のキースイッチ処理が実行された暗号文に基づいて、演算処理を実行するステップと、
前記実行領域が、前記演算処理の結果の送信要求を前記ユーザ端末から受け付けるステップと、
前記実行領域が、前記演算処理の結果に対し、前記送信要求したユーザ端末に対応する前記第2のスイッチ鍵を用いて第2のキースイッチ処理を実行するステップと、
前記送信要求したユーザ端末における前記ユーザ制御部が、前記第2のキースイッチ処理が実行された演算処理の結果を取得し、当該ユーザ端末における前記ユーザ記憶部が記憶する前記第2の秘密鍵を用いて復号するステップと、
を備える情報処理方法。
[付記2]
前記それぞれのユーザ端末が生成する、第1の秘密鍵および公開鍵、ならびに第2の秘密鍵および公開鍵は、それぞれ異なる鍵である、[付記1]に記載の情報処理方法。
[付記3]
前記演算処理は、準同型性を有する暗号文の加法または乗法に関する処理を少なくとも含む、[付記1]に記載の情報処理方法。
[付記4]
前記キースイッチ処理は、準同型性を有する暗号文の暗号鍵を、別の暗号鍵にスイッチする処理である、[付記1]に記載の情報処理方法。
[付記5]
前記複数のユーザ端末の少なくとも一つが前記第1のスイッチ鍵を生成した後で、当該ユーザ端末が生成した前記第1の秘密鍵を削除するステップ、または
前記実行領域が前記第2のスイッチ鍵を生成した後で、前記中間秘密鍵を削除するステップ、の少なくともいずれか一方のステップをさらに備える、[付記1]に記載の情報処理方法。
[付記6]
ユーザ制御部と、ユーザ記憶部と、を有する複数のユーザ端末と、
管理制御部と、管理記憶部と、を有する管理装置と、
演算を行う実行領域を有する演算装置と、
を備えるシステムにおいて用いられる方法であって、
それぞれの前記ユーザ端末において、前記ユーザ制御部が、第1の秘密鍵および公開鍵を生成するステップと、
前記実行領域が、中間秘密鍵および中間公開鍵を生成するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記中間公開鍵を取得するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記第1の秘密鍵を、前記中間公開鍵を用いて準同型暗号方式で暗号化して、第1のスイッチ鍵を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部が生成した前記第1のスイッチ鍵を取得するステップと、
前記管理装置の前記管理制御部が、管理公開鍵および管理秘密鍵を生成するステップと、
前記実行領域が、前記管理公開鍵を取得するステップと、
前記実行領域が、前記中間秘密鍵を、前記管理装置から取得した前記管理公開鍵を用いて準同型暗号方式で暗号化して、管理スイッチ鍵を生成するステップと、
前記実行領域が、前記管理スイッチ鍵、および前記それぞれのユーザ端末に対応する前記第1のスイッチ鍵を記憶するステップと、
前記それぞれのユーザ端末における前記ユーザ記憶部が、当該ユーザ端末のユーザ制御部が生成した前記第1の公開鍵を記憶するステップと、
前記管理装置の前記管理記憶部が、前記管理秘密鍵を記憶するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部から取得した前記暗号文に対し、当該暗号文を生成したユーザ端末に対応する前記第1のスイッチ鍵を用いて第1のキースイッチ処理を実行するステップと、
前記実行領域が、前記第1のキースイッチ処理が実行された暗号文に基づいて、演算処理を実行するステップと、
前記実行領域が、前記演算処理の結果の送信要求を前記管理装置から受け付けるステップと、
前記実行領域が、前記演算処理の結果に対し、前記管理スイッチ鍵を用いて第2のキースイッチ処理を実行するステップと、
前記管理装置の前記管理制御部が、前記第2のキースイッチ処理が実行された演算処理の結果を取得し、前記管理秘密鍵を用いて復号するステップと、
を備える情報処理方法。
[付記7]
前記実行領域は、プロセッサのセキュリティ機構である信頼可能な実行環境を含む、[付記1]から[付記6]のいずれか一項に記載の情報処理方法。
[付記8]
前記実行領域は、鍵管理領域と演算領域とに分けられる、[付記1]から[付記6]のいずれか一項に記載の情報処理方法。
[付記9]
ユーザ制御部と、ユーザ記憶部と、を有する複数のユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムにおいて用いられるプログラムであって、
それぞれの前記ユーザ端末において、前記ユーザ制御部が、第1の秘密鍵および公開鍵、ならびに第2の秘密鍵および公開鍵を生成するステップと、
前記実行領域が、中間秘密鍵および中間公開鍵を生成するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記中間公開鍵を取得するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記第1の秘密鍵を、前記中間公開鍵を用いて準同型暗号方式で暗号化して、第1のスイッチ鍵を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部が生成した前記第1のスイッチ鍵、および前記第2の公開鍵を取得するステップと、
前記実行領域が、前記中間秘密鍵を、前記それぞれのユーザ端末から取得した前記第2の公開鍵を用いて準同型暗号方式で暗号化して、第2のスイッチ鍵を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末に対応する前記第1のスイッチ鍵および前記第2のスイッチ鍵を記憶するステップと、
前記それぞれのユーザ端末における前記ユーザ記憶部が、当該ユーザ端末のユーザ制御部が生成した前記第1の公開鍵、および前記第2の秘密鍵を記憶するステップと、
前記それぞれのユーザ端末における前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部から取得した前記暗号文に対し、当該暗号文を生成したユーザ端末に対応する前記第1のスイッチ鍵を用いて第1のキースイッチ処理を実行するステップと、
前記実行領域が、前記第1のキースイッチ処理が実行された暗号文に基づいて、演算処理を実行するステップと、
前記実行領域が、前記演算処理の結果の送信要求を前記ユーザ端末から受け付けるステップと、
前記実行領域が、前記演算処理の結果に対し、前記送信要求したユーザ端末に対応する前記第2のスイッチ鍵を用いて第2のキースイッチ処理を実行するステップと、
前記送信要求したユーザ端末における前記ユーザ制御部が、前記第2のキースイッチ処理が実行された演算処理の結果を取得し、当該ユーザ端末における前記ユーザ記憶部が記憶する前記第2の秘密鍵を用いて復号するステップと、
を備える情報処理プログラム。
[付記10]
ユーザ制御部と、ユーザ記憶部と、を有する複数のユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムであって、
それぞれの前記ユーザ端末において、前記ユーザ制御部が、第1の秘密鍵および公開鍵、ならびに第2の秘密鍵および公開鍵を生成し、
前記実行領域が、中間秘密鍵および中間公開鍵を生成し、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記中間公開鍵を取得し、
前記それぞれのユーザ端末における前記ユーザ制御部が、前記第1の秘密鍵を、前記中間公開鍵を用いて準同型暗号方式で暗号化して、第1のスイッチ鍵を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部が生成した前記第1のスイッチ鍵、および前記第2の公開鍵を取得しと、
前記実行領域が、前記中間秘密鍵を、前記それぞれのユーザ端末から取得した前記第2の公開鍵を用いて準同型暗号方式で暗号化して、第2のスイッチ鍵を生成するステップと、
前記実行領域が、前記それぞれのユーザ端末に対応する前記第1のスイッチ鍵および前記第2のスイッチ鍵を記憶し、
前記それぞれのユーザ端末における前記ユーザ記憶部が、当該ユーザ端末のユーザ制御部が生成した前記第1の公開鍵、および前記第2の秘密鍵を記憶し、
前記それぞれのユーザ端末における前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成し、
前記実行領域が、前記それぞれのユーザ端末における前記ユーザ制御部から取得した前記暗号文に対し、当該暗号文を生成したユーザ端末に対応する前記第1のスイッチ鍵を用いて第1のキースイッチ処理を実行し、
前記実行領域が、前記第1のキースイッチ処理が実行された暗号文に基づいて、演算処理を実行し、
前記実行領域が、前記演算処理の結果の送信要求を前記ユーザ端末から受け付け、
前記実行領域が、前記演算処理の結果に対し、前記送信要求したユーザ端末に対応する前記第2のスイッチ鍵を用いて第2のキースイッチ処理を実行し、
前記送信要求したユーザ端末における前記ユーザ制御部が、前記第2のキースイッチ処理が実行された演算処理の結果を取得し、当該ユーザ端末における前記ユーザ記憶部が記憶する前記第2の秘密鍵を用いて復号する、
情報処理システム。
[付記11]
ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムにおいて用いられる方法であって、
前記ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成するステップと、
前記ユーザ制御部が、前記第1の秘密鍵を、前記第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記スイッチ鍵を記憶するステップと、
前記ユーザ記憶部が、少なくとも前記第1の公開鍵、および前記第2の秘密鍵を記憶するステップと、
前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記暗号文に基づいて、演算処理を実行するステップと、
前記実行領域が、前記演算処理の結果に対し、前記スイッチ鍵を用いてキースイッチ処理を実行するステップと、
前記ユーザ制御部が、前記実行領域が実行した前記キースイッチ処理の結果を取得し、前記第2の秘密鍵を用いて復号するステップと、
を備える情報処理方法。
[付記12]
前記演算処理は、準同型性を有する暗号文の加法または乗法に関する処理を少なくとも含む、[付記11]に記載の情報処理方法。
[付記13]
前記キースイッチ処理は、準同型性を有する暗号文の暗号鍵を、別の暗号鍵にスイッチする処理である、[付記11]に記載の情報処理方法。
[付記14]
前記ユーザ制御部が、前記スイッチ鍵を生成した後に、前記第1の秘密鍵を削除するステップをさらに含む、[付記11]に記載の情報処理方法。
[付記15]
前記実行領域は、プロセッサのセキュリティ機構である信頼可能な実行環境を含む、[付記11]から[付記14]のいずれか一項に記載の情報処理方法。
[付記16]
前記実行領域は、鍵管理領域と演算領域とに分けられる、[付記11]から[付記14]のいずれか一項に記載の情報処理方法。
[付記17]
ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムにおいて用いられるプログラムであって、
前記ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成するステップと、
前記ユーザ制御部が、前記第1の秘密鍵を、前記第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記スイッチ鍵を記憶するステップと、
前記ユーザ記憶部が、少なくとも前記第1の公開鍵、および前記第2の秘密鍵を記憶するステップと、
前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成するステップと、
前記実行領域が、前記ユーザ制御部から取得した前記暗号文に基づいて、演算処理を実行するステップと、
前記実行領域が、前記演算処理の結果に対し、前記スイッチ鍵を用いてキースイッチ処理を実行するステップと、
前記ユーザ制御部が、前記実行領域が実行した前記キースイッチ処理の結果を取得し、前記第2の秘密鍵を用いて復号するステップと、
を備える情報処理プログラム。
[付記18]
ユーザ制御部と、ユーザ記憶部と、を有するユーザ端末と、
演算を行う実行領域を有する演算装置と、
を備えるシステムであって、
前記ユーザ制御部が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成し、
前記ユーザ制御部が、前記第1の秘密鍵を、前記第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成し、
前記実行領域が、前記ユーザ制御部から取得した前記スイッチ鍵を記憶し、
前記ユーザ記憶部が、少なくとも前記第1の公開鍵、および前記第2の秘密鍵を記憶し、
前記ユーザ制御部が、平文を、前記第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成しと、
前記実行領域が、前記ユーザ制御部から取得した前記暗号文に基づいて、演算処理を実行し、
前記実行領域が、前記演算処理の結果に対し、前記スイッチ鍵を用いてキースイッチ処理を実行し、
前記ユーザ制御部が、前記実行領域が実行した前記キースイッチ処理の結果を取得し、前記第2の秘密鍵を用いて復号する、
情報処理システム。
【符号の説明】
【0162】
1,2,3,4 情報処理システム、10,40,60 TEE、100,300,400,600 演算装置、200,500,700 端末装置、110,210 通信部、120,220,520 記憶部、130,230 入力部、140,240 出力部、150,250,450,550 制御部、800 管理装置、810 管理制御部、820 管理記憶部。
【要約】
ユーザ端末と、演算を行う実行領域を有する演算装置と、を備えるシステムにおいて、ユーザ端末が、第1の秘密鍵および第1の公開鍵、ならびに第2の秘密鍵および第2の公開鍵を生成し、第1の秘密鍵を、第2の公開鍵を用いて準同型暗号方式で暗号化して、スイッチ鍵を生成する。実行領域が、ユーザ端末から取得したスイッチ鍵を記憶する。ユーザ端末が、平文を、第1の公開鍵を用いて準同型暗号方式で暗号化し、暗号文を生成し、実行領域が、ユーザ端末から取得した暗号文に基づいて、演算処理を実行する。そして、実行領域が、演算処理の結果に対し、スイッチ鍵を用いてキースイッチ処理を実行し、ユーザ端末が、実行領域が実行したキースイッチ処理の結果を取得し、第2の秘密鍵を用いて復号する。