(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
(発明の基礎となった知見)
暗号化したまま類似検索する方法がある。しかしながら、この場合サーバ側は暗号化した距離の計算は行うものの、対応する秘密鍵を持たないので指定した類似値に合致しているかどうかの判定はできなかった。判定を行うためにはユーザ端末の秘密鍵を用いた復号が必要であり、ユーザ端末で実現するには、計算量や通信量が大きくなっていた。
【0012】
このような課題を解決するために、類似情報検索方法は、端末装置から提供される情報に基づいて、サーバ装置が類似情報を検索して前記端末装置に提供する類似情報検索方法であって、前記サーバ装置が、前記端末装置から、暗号化された特徴量である暗号化特徴量を受信する特徴量受信ステップと、前記サーバ装置が、前記端末装置から、類似の度合を示す類似値を暗号化した情報である暗号化類似値を受信する類似値受信ステップと、前記サーバ装置が、複数の参照特徴量の少なくとも一つについての前記参照特徴量と、前記サーバ装置で受信された前記暗号化特徴量との類似の度合を示す暗号化距離を算出する距離算出ステップと、前記サーバ装置が、算出された前記暗号化距離が前記サーバ装置で受信された前記暗号化類似値とが一致するか否かを判定する判定ステップと、前記サーバ装置が、前記判定ステップで一致すると判定された場合に、前記暗号化距離の算出に用いられた前記参照特徴量に対応するデータである参照データを暗号化した情報である暗号化参照データを生成し、生成した前記暗号化参照データを前記端末装置に送信する参照データ送信ステップとを含む。
【0013】
この構成によれば、サーバ装置が暗号化特徴量と暗号化類似値とを端末装置から受信し、サーバ装置が暗号化特徴量と暗号化類似値とから暗号化距離を算出する。そして、サーバ装置は、暗号化距離が暗号化類似値と一致していれば、暗号化参照データを生成し、端末装置に送信する。このため、端末装置が暗号化距離と暗号化類似値とが一致するか否かを判断する場合に比べ、この類似情報検索方法では、端末装置の処理計算が減少する。
【0014】
また、このサーバ装置では、暗号化距離と暗号化類似値とが一致する場合に、暗号化参照データを生成し、生成した暗号化参照データを端末装置に送信する。このため、端末装置が暗号化距離と暗号化類似値とが一致するか否かを判断する場合に比べ、サーバ装置と端末装置との通信回数が増加し難い。
【0015】
したがって、この類似情報検索方法では、端末装置の処理計算が軽量化し、かつ、サーバ装置と端末装置との通信回数が減少することができる。
【0016】
また、この類似情報検索方法では、前記類似値受信ステップでは、複数の類似の度合を示す複数の類似値のそれぞれを暗号化した情報である複数の暗号化類似値を受信し、前記サーバ装置は、受信した前記複数の暗号化類似値のそれぞれについて、前記距離算出ステップ、前記判定ステップ及び前記参照データ送信ステップを実行する。
【0017】
この構成によれば、端末装置の処理計算がより軽量化し、かつ、サーバ装置と端末装置との通信回数がより減少する。
【0018】
また、この類似情報検索方法では、前記暗号化距離は、前記参照特徴量と前記暗号化特徴量とのユークリッド距離であってもよい。
【0019】
この構成によれば、この類似情報検索方法をより具体化することができる。
【0020】
また、この類似情報検索方法では、さらに、前記サーバ装置が、前記端末装置が保持する秘密鍵を所定関数で変換した情報である鍵変換値を受信する鍵受信ステップを含み、前記類似値受信ステップでは、前記暗号化類似値として、前記類似値を前記所定関数で変換した情報である変換類似値を受信し、前記判定ステップでは、前記判定として、前記鍵変換値を用いて前記暗号化距離を復号することで変換距離を生成し、生成した前記変換距離が前記変換類似値と一致するか否かを判定する。
【0021】
この構成によれば、乱数を含んだ確率的暗号について、ユーザが同一の情報に基づいて検索を行っても、暗号化された特徴量が同じ値にならない。このため、この類似値検索方法によれば、ユーザ端末装置からデータ演算装置への送信上及びデータ演算装置内でも、ユーザが検索した情報の秘匿性をより高めることができる。その結果、確率的暗号を用いることで暗号文の頻度などからの解析が困難となり、安全性を向上させることができる。
【0022】
また、この類似情報検索方法では、前記所定関数は、一方向性関数である。
【0023】
この構成によれば、復号するための鍵は一方向性関数を用いて変換するため、サーバ装置は鍵そのものを求めることは困難である。このため、類似情報検索方法では、ユーザにおける情報の秘匿性が守られ易い。
【0024】
また、この類似情報検索方法では、さらに、前記端末装置が、データを取得し、取得したデータから、前記データの特徴を示す特徴量を算出し、算出した特徴量を暗号化することで前記暗号化特徴量を生成し、生成した前記暗号化特徴量を前記サーバ装置に送信する特徴量送信ステップと、前記端末装置が、類似の度合を示す類似値を設定し、設定した類似値を暗号化することで前記暗号化類似値を生成し、生成した前記暗号化類似値を前記サーバ装置に送信する類似値送信ステップと、前記端末装置が、前記サーバ装置から前記暗号化参照データを受信し、受信した前記暗号化参照データを復号する復号ステップとを含む。
【0025】
この構成によれば、端末装置は、特徴量送信ステップ、類似値送信ステップ及び復号ステップを行うと、サーバ装置から類似情報を得ることができる。このため、サーバ装置が参照特徴量と暗号化特徴量との暗号化距離の算出を行い、サーバ装置からの暗号化類似値を受け取った端末装置が復号を行って暗号化類似値が一致するか否かの判断をする場合に比べ、この類似情報検索方法では、端末装置の処理計算が減少する。つまり、端末装置は、暗号化距離と暗号化類似値とが一致するか否かの判断を行わない。このため、端末装置の処理計算が減少し、かつ、サーバ装置と端末装置との通信回数が減少することができる。
【0026】
また、この類似情報検索方法では、前記暗号化特徴量、前記暗号化類似値及び前記参照特徴量は、準同型暗号方式で暗号化されている。
【0027】
この構成によれば、準同型暗号方式は、サーバ装置では復号できない暗号方式であり、このときに用いる鍵は、端末装置の公開鍵である。このため、端末装置からサーバ装置への送信上及びサーバ装置内でも、ユーザが検索した情報の秘匿性を高めることができる。
【0028】
このような課題を解決するために、サーバ装置は、端末装置から提供される情報に基づいて、類似情報を検索して前記端末装置に提供するサーバ装置であって、前記端末装置から、暗号化された特徴量である暗号化特徴量を受信し、受信した前記暗号化特徴量と、複数の参照特徴量の少なくとも一つについての前記参照特徴量との類似の度合を示す暗号化距離を算出する距離算出計算部と、類似の度合を示す類似値を暗号化した情報である暗号化類似値を受信し、受信した前記暗号化類似値が、算出された前記暗号化距離と一致するか否かを判定する参照類似値抽出部と、前記参照類似値抽出部で一致すると判定された場合に、前記暗号化距離の算出に用いられた前記参照特徴量に対応するデータである参照データを暗号化した情報である暗号化参照データを生成し、生成した前記暗号化参照データを前記端末装置に送信する暗号化参照データ抽出部とを備える。
【0029】
また、このような課題を解決するために、この類似情報検索システムは、端末装置と、前記端末装置から提供される情報に基づいて、類似情報を検索して前記端末装置に提供する請求項7記載のサーバ装置とを備える。
【0030】
この構成によっても、サーバ装置が暗号化特徴量と暗号化類似値とを端末装置から受信し、サーバ装置が暗号化特徴量と暗号化類似値とから暗号化距離を算出する。そして、サーバ装置は、暗号化距離が暗号化類似値と一致していれば、暗号化参照データを生成し、端末装置に送信する。このため、端末装置が暗号化距離と暗号化類似値とが一致するか否かを判断する場合に比べ、類似情報検索方法では、端末装置の処理計算が減少する。
【0031】
また、このサーバ装置では、暗号化距離と暗号化類似値とが一致する場合に、暗号化参照データを生成し、生成した暗号化参照データを端末装置に送信するだけである。このため、サーバ装置と端末装置との通信回数が増加し難い。
【0032】
したがって、このサーバ装置及び類似情報検索システムでは、端末装置の処理計算が減少し、かつ、サーバ装置と端末装置との通信回数が減少することができる。
【0033】
なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることも出来る。
【0034】
以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることも出来る。
【0035】
(提供するサービスの全体像)
まず、本実施の形態における情報管理システムが提供するサービスの全体像について、
図1A、
図1B及び
図1Cを用いて説明する。
【0036】
図1Aは、実施の形態1において情報管理システムが提供するサービスの全体像を示すブロック図である。
図1Bは、実施の形態1において機器メーカがデータセンタ運営会社に該当する例を示すブロック図である。
図1Cは、実施の形態1において機器メーカ及び管理会社の両者又はいずれか一方がデータセンタ運営会社に該当する例を示すブロック図である。
【0037】
情報管理システムは、グループ1000、データセンタ運営会社1110及びサービスプロバイダ1120を備える。
【0038】
グループ1000は、例えば企業、団体又は家庭などであり、その規模を問わない。グループ1000は、第1の機器及び第2の機器を含む複数の機器1101と、ホームゲートウェイ1102とを有する。複数の機器1101は、インターネットと接続可能な機器(例えば、スマートフォン、パーソナルコンピュータ(PC)又はテレビなど)、及びそれ自身ではインターネットと接続不可能な機器(例えば、照明、洗濯機又は冷蔵庫など)を含む。複数の機器1101は、それ自身ではインターネットと接続不可能であっても、ホームゲートウェイ1102を介してインターネットと接続可能となる機器を含んでもよい。また、ユーザ1010は、グループ1000内の複数の機器1101を使用する。
【0039】
データセンタ運営会社1110は、クラウドサーバ1111を備える。クラウドサーバ1111は、インターネットを介して様々な機器と連携する仮想化サーバである。クラウドサーバ1111は、主に通常のデータベース管理ツールなどで扱うことが困難な巨大なデータ(ビッグデータ)などを管理する。データセンタ運営会社1110は、データの管理、クラウドサーバ1111の管理、及びそれらを行うデータセンタの運営などを行っている。データセンタ運営会社1110が行っている役務の詳細については後述する。
【0040】
ここで、データセンタ運営会社1110は、データの管理又はクラウドサーバ1111の管理のみを行っている会社に限らない。例えば、
図1Bに示すように、複数の機器1101のうちの一つの機器を開発又は製造している機器メーカが、データの管理又はクラウドサーバ1111の管理などを行っている場合は、機器メーカがデータセンタ運営会社1110に該当する。また、データセンタ運営会社1110は一つの会社に限らない。例えば、
図1Cに示すように、機器メーカ及び管理会社が共同又は分担してデータの管理又はクラウドサーバ1111の管理を行っている場合は、両者又はいずれか一方がデータセンタ運営会社1110に該当する。
【0041】
サービスプロバイダ1120は、サーバ1121を備える。ここで言うサーバ1121とは、その規模は問わず、例えば、個人用PC内のメモリなども含む。また、サービスプロバイダ1120がサーバ1121を備えていない場合もある。
【0042】
なお、上記の情報管理システムにおいて、ホームゲートウェイ1102は必須ではない。例えば、クラウドサーバ1111が全てのデータ管理を行っている場合などは、ホームゲートウェイ1102は不要となる。また、情報管理システムでは、家庭内の全ての機器がインターネットに接続されている場合のように、それ自身ではインターネットと接続不可能な機器は存在しない場合もある。
【0043】
次に、上記の情報管理システムにおける情報の流れを説明する。
【0044】
まず、グループ1000の第1の機器又は第2の機器は、各ログ情報をデータセンタ運営会社1110のクラウドサーバ1111にそれぞれ送信する。クラウドサーバ1111は、第1の機器又は第2の機器のログ情報を集積する(
図1Aの矢印1131)。ここで、ログ情報とは、複数の機器1101の例えば運転状況又は動作日時などを示す情報である。例えば、ログ情報は、テレビの視聴履歴、レコーダーの録画予約情報、洗濯機の運転日時、洗濯物の量、冷蔵庫の開閉日時、及び冷蔵庫の開閉回数などを含むが、これらの情報に限らず、種々の機器から取得が可能な種々の情報を含んでもよい。なお、ログ情報は、インターネットを介して複数の機器1101自体から直接クラウドサーバ1111に提供されてもよい。また、ログ情報は、複数の機器1101から一旦ホームゲートウェイ1102に集積され、ホームゲートウェイ1102からクラウドサーバ1111に提供されてもよい。
【0045】
次に、データセンタ運営会社1110のクラウドサーバ1111は、集積したログ情報を一定の単位でサービスプロバイダ1120に提供する。ここで、一定の単位とは、データセンタ運営会社1110が集積した情報を整理してサービスプロバイダ1120に提供することの出来る単位でもよいし、サービスプロバイダ1120が要求する単位でもよい。また、一定の単位で提供するとしているが、一定の単位でなくてもよく、状況に応じて提供する情報量が変化してもよい。ログ情報は、必要に応じてサービスプロバイダ1120が保有するサーバ1121に保存される(
図1Aの矢印1132)。
【0046】
そして、サービスプロバイダ1120は、ログ情報をユーザに提供するサービスに適合する情報に整理し、ユーザに提供する。情報が提供されるユーザは、複数の機器1101を使用するユーザ1010でもよいし、外部のユーザ1020でもよい。ユーザ1010,1020への情報を提供する方法としては、例えば、サービスプロバイダ1120から直接ユーザ1010,1020へ情報が提供されてもよい(
図1Aの破線で示す矢印1133,1134)。また、ユーザ1010への情報を提供する方法としては、例えば、データセンタ運営会社1110のクラウドサーバ1111を再度経由して、ユーザ1010に情報が提供されてもよい(
図1Aの矢印1135,1136)。また、データセンタ運営会社1110のクラウドサーバ1111は、ログ情報をユーザ1020に提供するサービスに適合する情報に整理し、サービスプロバイダ1120に提供してもよい。
【0047】
なお、ユーザ1010は、ユーザ1020と異なっていても同一であってもよい。
【0048】
(実施の形態1)
ここでは、本発明の実施の形態として、本発明に関わる類似情報検索システムについて図面を参照しながら説明する。
【0049】
1.1 類似情報検索システムの全体構成
図2は、実施の形態1において類似情報検索システムの全体構成を示すブロック図である。
【0050】
図2に示すように、類似情報検索システム10は、データ演算装置200に対して検索を要求するユーザ端末装置100(端末装置の一例)と、ユーザ端末装置100から提供される情報に基づいて、類似情報を検索してユーザ端末装置100に提供するデータ演算装置200(サーバ装置の一例である)とを備える。
【0051】
ユーザ端末装置100とデータ演算装置200とは、それぞれ1つずつ備えているが、それぞれ複数であり、例えば複数のユーザ端末装置100が1つのデータ演算装置200に接続されてもよいし、複数のデータ演算装置200が1つのユーザ端末装置100に接続されてもよい。また、各装置間の接続形態は、有線のインターネット線、無線通信、専用通信などのいずれであってもよい。なお、この類似情報検索システム10では、リアルタイムでの通信が必ずしも必要ではなく、例えば、ユーザ端末装置100は、センシングした情報や類似検索の要求をある程度集めてから、合わせてデータ演算装置に送信してもよい。
【0052】
1.2 ユーザ端末装置
図3は、実施の形態1においてユーザ端末装置の構成を示すブロック図である。
【0053】
図3に示すように、ユーザ端末装置100は、類似情報を検索するデータ演算装置に対して検索を要求する。ユーザ端末装置100は、センシング部101、特徴量算出部102、特徴量暗号部103、類似値設定部104、類似値暗号部105、参照データ利用部106、復号部107及び鍵格納部108を有している。
【0054】
特徴量暗号部103、類似値暗号部105及び復号部107は、それぞれデータ演算装置200(
図4に示す)の、A,B,Cで図示する箇所と接続されるものとする。ユーザ端末装置100は、例えば、ユーザの血圧や顔色、CTスキャン情報などユーザに関する情報をセンシングし、取得されたデータの特徴を示す特徴量を抽出する。そして、データ演算装置は、この特徴量に類似した症状の参照データ(後述する、参照特徴量に対応するデータ)をデータ演算装置に要求し、得られた参照データをユーザへのサービスに利用する。なお、ユーザ端末装置100がユーザに関する情報をセンシングするにあたっては、ユーザより所定の同意を得て行うものとする。同意を取得するなどの手続きについては、本発明の範囲外とする。
【0055】
1.2.1 センシング部
センシング部101は、ユーザをセンシングする。センシングしたデータは、例えばユーザの血圧や体温などのバイタルデータや、ユーザの顔画像やエコーやCTスキャンによるデータなどの画像データ、受け答えの声のデータなどである。なお、センシングしたデータは、ユーザの位置情報(GPS(Global Positioning System)情報)や買い物の履歴情報であってもよい。
【0056】
1.2.2 特徴量算出部
特徴量算出部102は、センシング部101で取得したデータから特徴量を算出する。ここで算出した特徴量は、例えば、顔などの画像情報における特徴的なパラメータの主成分や、ある領域の位置や面積や幅などのデータであってよい。また、特徴量は、履歴情報からその時間軸に対応した傾向を例えば多項式に変換し、その係数であってもよい。さらに、特徴量は、数値であっても、数値を並べたベクトル値であってもよい。
【0057】
1.2.3 特徴量暗号部
特徴量暗号部103は、特徴量算出部102で算出したデータの特徴を示す特徴量を暗号化することで、暗号化特徴量を生成する。特徴量暗号部103は、生成した暗号化特徴量をデータ演算装置に送信する。ここでは、暗号化を行う方法は、データ演算装置にて特徴量を暗号化したまま、類似情報の検索のための演算が可能となる準同型暗号を用いるものとする。データ演算装置に特徴量を秘匿する場合には、後述の鍵格納部108に格納されているユーザ端末装置100の公開鍵を用いるものとする。
【0058】
1.2.4 類似値設定部
類似値設定部104は、検索する場合における類似の度合を示す類似値を設定する。ここでの類似値は、データ演算装置において、特徴量とどの程度近いものを検索するのかを示す値である。例えば、データ演算装置は、特徴量と参照特徴量との間のユークリッド距離を算出し、その値がある値D未満であるものを検索する場合に、ある値Dを類似値として設定する。あるいは、ある値Dの類似値である0,1、・・・、D−1の値をすべて設定してもよい。また、あるいは、類似値は、特徴量のベクトル値ごとに設定してもよい。
【0059】
1.2.5 類似値暗号部
類似値暗号部105は、類似の度合を示す類似値を暗号化することで暗号化類似値を生成する。類似値暗号部105は、生成した暗号化類似値をデータ演算装置に送信する。暗号化類似値は、データ演算装置において、暗号化した状態で暗号化特徴量との類似値を判定し、判定の条件に合う参照IDを抽出するために用いる。
【0060】
1.2.6 復号部
復号部107は、ユーザ端末装置100による類似情報の検索によって、暗号化特徴量と暗号化類似値とから生成された参照データ(類似検索の結果)を暗号化した情報である暗号化参照データをデータ演算装置から受信する。そして、復号部107は、受信した暗号化参照データを復号する。
【0061】
1.2.7 参照データ利用部
参照データ利用部106は、復号部107において復号して得た参照データを利用する。例えば、参照データ利用部106は、参照データをユーザ端末にグラフや統計値として表示したり、これらの情報を用いて、ユーザへの生活習慣の改善アドバイスや、お勧めの食事などのアドバイスを行ったりする。
【0062】
1.2.8 鍵格納部
鍵格納部108は、特徴量暗号部103、類似値暗号部105及び復号部107に用いる鍵を格納する。それぞれで用いる暗号方式および鍵は、同じであってもよく、異なっていてもよい。例えば、特徴量暗号部103と類似値暗号部105とで用いる鍵は、準同型暗号方式のユーザ端末装置100の公開鍵(対応する秘密鍵も、本鍵格納部に格納)であって、復号部107で用いる鍵は、準同型暗号方式ではない公開鍵暗号方法のユーザ端末装置100の秘密鍵(対応する公開鍵は、データ演算装置と共有)であってもよい。また、復号部107で用いる鍵は、特徴量暗号部103で用いた鍵と同じ準同型暗号のユーザ端末装置100の秘密鍵としてもよい。
【0063】
1.3 データ演算装置
図4は、実施の形態1においてデータ演算装置の構成を示すブロック図である。
【0064】
図4に示すように、データ演算装置200は、ユーザ端末装置から提供される情報に基づいて(ユーザからの検索の要求に応じて)類似情報を検索し、検索した情報をユーザ端末装置に提供する。データ演算装置200は、参照特徴量格納部201、暗号化距離計算部202、参照類似値抽出部203、暗号化参照データ抽出部204及び参照データ格納部205を有している。暗号化距離計算部202、参照類似値抽出部203及び暗号化参照データ抽出部204は、それぞれユーザ端末装置100(
図3)の、図示する箇所と接続されるものとする。
【0065】
1.3.1 参照特徴量格納部(
図5A)
図5Aは、実施の形態1においてデータ演算装置における参照特徴量格納部の例を示す図である。
図5Aは、参照特徴量格納部201に格納されている参照特徴量の例を示している。
【0066】
図5Aに示すように、参照特徴量格納部201は、データ演算装置が類似検索を行う際に、検索の対象となる参照特徴量Yiを格納する。なお、識別子IDがiに対応しており、参照特徴量をYiと記載する。識別子IDと参照特徴量とは、参照特徴量格納部201に対で格納される。
図5Aでは、識別子IDは1,2、・・とし、各識別子IDに対応する各参照特徴量Y1、Y2、・・が格納されている。この例では、各参照特徴量は、ベクトル値であらわされているものとする。なお、参照特徴量は暗号化して格納しておいてもよい。
【0067】
1.3.2 暗号化距離計算部
暗号化距離計算部202は、ユーザ端末装置から、準同型暗号方式で暗号化された特徴量である暗号化特徴量を受信する。暗号化距離計算部202は、受信した暗号化特徴量と、複数の参照特徴量の少なくとも一つについての参照特徴量との類似の度合を示す距離の暗号化した値を、特徴量と参照特徴量とを暗号化したまま算出する。つまり、暗号化距離計算部202は、ユーザ端末装置が生成した特徴量とデータ演算装置200に格納している参照特徴量との距離を算出する。具体的には、暗号化距離計算部202は、ユーザ端末装置から受信した暗号化特徴量と、参照特徴量格納部201から受信した参照特徴量を暗号化して、それぞれ暗号化したまま距離を算出する。そして、暗号化距離計算部202は、この暗号化したままの距離(暗号化距離)を参照類似値抽出部203に出力する。距離は、参照特徴量と特徴量とのユークリッド距離である。なお、距離は、例えば、それぞれの特徴量が数値の場合では差の絶対値であってもよいし、それぞれの特徴量が数値を要素とするベクトルの場合では対応するベクトル要素の差の絶対値を加算したものであってもよい。また、暗号化距離は、それぞれのベクトル要素を積和したコサイン類似度であってもよい。具体的には、特徴量と参照特徴量とが数値を要素とするベクトルにおいて、特徴量が(x1,x2,x3,・・xn)、参照特徴量が(y11,y12,y13,・・y1n)の場合に、ベクトル要素の差の絶対値の加算することによって得た距離はΣ|xi−y1i|で表され、コサイン類似度はΣxi×y1iで表され、ユークリッド距離はΣ(xi−y1i)^2で表される。暗号化距離計算部202は、これらの計算を特徴量と参照特徴量とを暗号化したまま行うため、準同型暗号方式を用いる。準同型暗号方式の演算では、ベクトル値の要素ごとに計算をしてもよいし、計算を高速化するために、特徴量のベクトル値を多項式の各係数とした多項式にマッピングし、準同型暗号の距離計算を多項式間の演算で行ってもよい。
【0068】
1.3.3 参照類似値抽出部
参照類似値抽出部203は、類似値暗号部から暗号化類似値を受信する。暗号化類似値とは、類似の度合を示す類似値を暗号化した情報である。なお、この暗号化した情報は、準同型暗号方式で暗号化されていることが好ましい。
【0069】
参照類似値抽出部203は、類似値暗号部から受信した暗号化類似値と、暗号化距離計算部202から受信した暗号化距離とを用いて、距離と類似値とが一致しているか否かを判断する(暗号化距離と暗号化類似値とが一致することは、距離と類似値とが一致することと同一)。参照類似値抽出部203は、距離と類似値とが一致すると判断された場合に、対応する参照特徴量の識別子IDを抽出する。参照類似値抽出部203は、暗号化類似値と暗号化距離とが一致すると判断しなかった場合に、対応する参照特徴量の識別子IDを抽出しない。
【0070】
1.3.4 参照データ格納部(
図5B)
図5Bは、実施の形態1においてデータ演算装置における参照データ格納部の例を示す図である。
図5Bは、参照データ格納部に格納されている識別子IDと参照データの例を示している。
【0071】
図5Bに示すように、参照データ格納部205は、データ演算装置が類似検索を行うために、検索の対象となる参照データを格納する。識別子IDと参照データとは、参照データ格納部に対で格納される。参照データ格納部205には、識別子IDを1、2、・・iとし、各識別子IDに対応する各参照データZ1、Z2、・・Ziが格納されている。なお、識別子IDがiに対応しており、参照データをZiと記載する。参照データとしては、例えば、血圧測定値の傾向を示す特徴量(
図5Aの参照特徴量)に対応した、病気や治療の履歴(
図5Bの参照データ)や、ユーザの位置情報を示す特徴量(
図5Aの参照特徴量)に対応した、購入した商品の履歴(
図5Bの参照データ)などであってもよい。
図5Bの例では、識別子IDが1のユーザは2013年10月に脳梗塞で入院、識別子IDが2のユーザは1999年2月に糖尿病で加療開始、といった病気や治療の履歴などを蓄積している。参照データは、暗号化して格納しておいてもよい。
【0072】
1.3.5 暗号化参照データ抽出部
暗号化参照データ抽出部204は、参照類似値抽出部203で一致すると判定された場合に、暗号化参照データを生成する。暗号化参照データは、暗号化距離の算出に用いられた参照特徴量に対応するデータである参照データを暗号化した情報である。暗号化参照データ抽出部204は、生成した暗号化参照データをユーザ端末装置の復号部に送信する。具体的には、暗号化参照データ抽出部204は、参照類似値抽出部203において抽出した識別子IDに対応した参照データを、参照データ格納部205から抽出し、これをユーザ端末装置の復号部に送信する。暗号化参照データ抽出部204は、送信時に通信路上のデータを保護するために暗号化して送信する。なお、暗号化の前に、参照データから対応するユーザを特定できないように匿名化してもよい。また、データ演算装置200は、抽出した複数の参照データから、平均や頻度といった統計情報を求めて、これを暗号化してユーザ端末装置の復号部に送信してもよい。
【0073】
1.4 類似情報検索システムの動作
1.4.1 動作概要
類似情報検索システム10の動作を、
図6を用いて説明する。
【0074】
図6は、実施の形態1において類似情報検索システムの動作を示すシーケンス図である。
【0075】
図6に示すように、ステップS101において、ユーザ端末装置100は、センシング部で情報を取得する。
【0076】
ステップS102において、特徴量算出部102は、センシング部がセンシングした情報から特徴量Xを算出する。例えば、特徴量Xは、次のように、要素が数値のm次ベクトルであってもよい。
【0078】
ステップS103において、類似値設定部は、検索する際の判定基準となる類似値を設定する。例えば、距離D未満となるデータを検索するもの場合は、類似値としての各距離0、1、2、・・、D−1を設定する。
【0079】
ステップS104において、特徴量暗号部は、データを取得し、取得したデータから、データの特徴を示す特徴量を準同型暗号方式で暗号化することで暗号化特徴量を生成する。また、類似値暗号部は、類似値を準同型暗号方式で暗号化することで暗号化類似値を生成する。準同型暗号方式は、データ演算装置200では復号できない暗号方式であり、このときに用いる鍵は、ユーザ端末装置100の公開鍵である。
【0080】
暗号化の関数をEncとすると、暗号化した暗号化特徴量は、
Ex=(Enc(x1),Enc(x2),・・、Enc(xm))と表し、暗号化した暗号化類似値は、
Enc(0)、Enc(1)、・・、Enc(D−1)
と表すことができる。
【0081】
ステップS105において、ユーザ端末装置100は、暗号化特徴量と暗号化類似値とを示し、条件を満たす類似の参照データを要求する。つまり、暗号化特徴量は暗号化距離計算部に送信し、暗号化類似値は参照類似値抽出部に送信する(ステップS102、ステップS104及びステップS105が特徴量送信ステップの一例、ステップS103〜ステップS105が類似値送信ステップの一例)。
【0082】
具体的には、暗号化距離計算部は、特徴量暗号部から、準同型暗号方式で暗号化された特徴量であるこの暗号化特徴量を受信する(特徴量受信ステップ)。また、参照類似値抽出部は、類似値暗号部から、類似の度合を示す類似値を暗号化した情報である暗号化類似値を受信する(類似値受信ステップ)。なお、暗号化した情報である暗号化類似値は、準同型暗号方式で暗号化されていることが好ましい。
【0083】
また、類似値受信ステップでは、複数の類似の度合を示す複数の類似値のそれぞれを暗号化した情報である複数の暗号化類似値を受信してもよい。
【0084】
ステップS106において、データ演算装置200は、i番目の識別子IDの参照特徴量格納部から参照特徴量Yi=(yi1、yi2、・・、yim)を選択する。
【0085】
ステップS107において、暗号化距離計算部は、複数の参照特徴量の少なくとも一つについて、暗号化された参照特徴量と、データ演算装置200で受信された暗号化特徴量との類似の度合を示す距離を暗号化したまま計算する。暗号化された参照特徴量は、
Ey=(Enc(yi1),Enc(yi2),・・、Enc(yim))
と表すことができる。なお、複数の参照特徴量の少なくとも一つについて暗号化された参照特徴量は、準同型暗号方式で暗号化されていることが好ましい。
【0086】
暗号化距離計算部は、特徴量Xと参照特徴量Yiとの各ベクトルの差分を求めて加算し、準同型暗号方式の性質を用いて以下の暗号化距離EDiを計算する。
【0087】
EDi=Enc(|x1−yi1|+|x2−yi2|+・・+|xm−yim|)
【0088】
ステップS107が距離算出ステップの一例である。なお、上記では、各ベクトル要素の差の絶対値を、累算したものを暗号化距離としている。また、なお、データ演算装置200は、複数の暗号化類似値のそれぞれについて、距離算出ステップを実行してもよい。
【0089】
ステップS108において、参照類似値抽出部は、暗号化距離と、暗号化類似値とを用いて条件を満たすか否かを確認する(判定ステップの一例)。つまり、判定ステップは、算出された暗号化距離がデータ演算装置200で受信された暗号化類似値と一致するか否かを判定する。なお、データ演算装置200は、複数の暗号化類似値のそれぞれについて、判定ステップを実行してもよい。
【0090】
確認の仕方の例としては、暗号化距離EDiは、暗号化の関数Enc(0)、Enc(1)、・・、Enc(D−1)のいずれかと一致しているか否かを確認する。もし、一致していれば、暗号化距離EDiの暗号化の関数Encの中身、つまり特徴量と参照特徴量との距離である|x1−yi1|+|x2−yi2|+・・+|xm−yim|が、類似値としての各距離0、1、・・、D−1のいずれかであることを意味する。
【0091】
もし、いずれとも一致しなければ(満たさない)、次の識別子IDを選択して、ステップS106に戻る。
【0092】
もし、いずれかと一致していれば(満たす)、ステップS109において、参照類似値抽出部は、これら特徴量間の距離が類似値D未満であることにより、この時の識別子IDを記録する。そして、ステップS106からステップS109を参照特徴量格納部の各識別子IDに関して繰り返す。
【0093】
ステップS110において、暗号化参照データ抽出部は、判定ステップで一致すると判定された場合に、暗号化距離の算出に用いられた参照特徴量に対応するデータである参照データを暗号化した情報である暗号化参照データを生成する。つまり、ステップS110において、暗号化参照データ抽出部は、ステップS109で抽出したすべての識別子IDに対応した参照データを、参照データ格納部から抽出し、ユーザ端末装置100の公開鍵を用いて暗号化する。
【0094】
ステップS111において、暗号化参照データ抽出部は、生成した暗号化参照データをユーザ端末装置に送信する(ステップS110及びステップS111が参照データ送信ステップの一例)。なお、暗号化参照データ抽出部は、複数の暗号化類似値のそれぞれについて、参照データ送信ステップを実行してもよい。
【0095】
ステップS112において、複合部は、暗号化参照データ抽出部から暗号化参照データを受信する。そして、ユーザ端末装置100は、データ演算装置200から受信した暗号化参照データを復号して参照データを利用する(復号ステップの一例)。
【0096】
1.4.2 特徴量の算出例
ステップS102における特徴量の算出としては、例えば、センシング部で顔やエコー情報などの画像データを取得した場合に、その画像情報の特徴的なパラメータの主成分や、ある領域の位置や面積や幅などであってもよい。また、血圧情報を取得した場合に、ユーザ端末装置100に別途格納されている今まで計測した血圧測定情報の履歴(
図3には図示せず)から、その時間軸に対応した傾向を例えば多項式に変換し、その係数を特徴量としてもよい。時間軸に対応した傾向の多項式の例を、
図9に示す。
【0097】
図9は、実施の形態1においてユーザ端末装置が表示する時間と特徴量との算出例を示すグラフである。
図9では、時間は、過去(例えば、1年前)から現在までの時間を表している。また、
図9では、各特徴量の各測定値(×で示す)から近似曲線を求め、その近似曲線の係数を特徴量とする。
【0098】
1.4.3 暗号化距離の算出例
ステップS107における暗号化距離の算出として、上記では、ユーザ端末装置100で求めた特徴量と、データ演算装置200における参照特徴量との対応するベクトル値の差分の累算を、暗号化したまま求めている。暗号化距離は、参照特徴量と暗号化特徴量とのユークリッド距離である。なお、この他に、暗号化距離の算出例は、例えば、コサイン類似度の算出方法であってもよい。ただし、この場合は、加算と乗算の両方を暗号化したまま求めることができる完全準同型暗号あるいは、乗算の回数に制限のある制限付き準同型暗号(サムホワット準同型暗号)を用いるとよい。
【0099】
1.4.4 ユーザ端末装置とデータ演算装置間のデータ交換(
図7A、
図7B)
図7Aは、実施の形態1においてユーザ端末とデータ装置との間のデータフォーマット例を示す図である。
図7Bは、実施の形態1においてユーザ端末とデータ装置との間のデータフォーマット例を示す図である。
図7A及び
図7Bは、ステップS105及びステップS111で、ユーザ端末装置100とデータ演算装置200との間で交換されるデータのフォーマット例を示し、送信者の識別子ID、受信者の識別子ID、コマンド及びデータとからなる。なお、複数のユーザ端末装置100と複数のデータ演算装置200との間で並行してコマンドがやり取りされる場合は、ステップS105及びステップS111の対応をとるための、識別子を追加してもよい。
【0100】
1.4.5 表示例(
図8A、
図8B)
図8Aは、実施の形態1においてユーザ端末装置の表示の例を示す図である。
図8Bは、実施の形態1においてユーザ端末装置の表示の例を示す図である。
【0101】
図8Aは、
図6のステップS101におけるユーザ端末装置100における表示の例である。ここでは、ユーザがStartをクリック(選択)すると、センシング部が始動し、血圧の測定を行う。そして、ユーザは、最近の血圧の傾向から類似症例を検索するか否かを、「はい」、「取りやめ」のいずれかにより選択する。ユーザが「はい」をクリックして同意した場合は、ユーザ端末装置がその測定値と最近の履歴情報を用いて傾向から特徴量を算出する。また、ユーザが「取りやめ」をクリックして同意しない場合、ユーザ端末装置は、類似症例の検索を行うようにデータ演算装置に情報を送信しない。
【0102】
図8Bは、検索した参照類似データ(この場合は、血圧変動の傾向が類似のユーザの、その後発症した病気)を用いてユーザに食事や運動のアドバイスする場合の、表示の例である。ここでは、ユーザ端末装置は、ユーザの情報を基に、過去から現在までの血圧の傾向と、参照類似データと表示する。このユーザ端末装置では、ユーザの情報に基づいたアドバイスをおこなうことにより、より実感を伴ったアドバイスとなり、ユーザにとって有用となる。
【0103】
1.5 実施の形態1の効果
実施の形態1では、データ演算装置がユーザ端末装置から暗号化特徴量と暗号化類似値とを受信し、暗号化参照データ抽出部が暗号化参照データを抽出する。データ演算装置は、類似値D未満である暗号化参照データだけを抽出してユーザ端末装置に送信するため、ユーザ端末装置の計算量と、データ演算装置とユーザ端末装置との間の通信量とを削減することができる。また、ユーザ端末装置では、ユーザの意思に応じて柔軟に類似値を設定することができる。
【0104】
また、暗号化特徴量は、準同型暗号方式で暗号化されており、データ演算装置では復号できない。このため、この類似情報検索方法などでは、ユーザ端末装置からデータ演算装置への送信上及びデータ演算装置内でも、ユーザが検索した情報の秘匿性を高めることができる。
【0105】
(実施の形態2)
ここでは、本発明の実施の形態2として、本発明に関わる類似情報検索システムについて、図面を参照しながら説明する。実施の形態2と実施の形態1との相違点は次のとおりである。実施の形態1では、ステップS108において、参照類似値抽出部は、暗号化距離と暗号化類似値とが一致するか否かで判定した。これは、もとのデータが同一であれば、その時に限り、その暗号化されたデータも一致する決定的暗号方式を利用することを前提としている。一方で、実施の形態2では、暗号化時に乱数を生成し、乱数も含めて暗号化することにより、もとのデータが同一であってもその暗号化されたデータが同一の値にはならない、確率的暗号方式を用いる場合がある。確率的暗号方式を用いれば、暗号文の頻度などからの解析が困難となり、安全性を向上させることができる。その一方で、実施の形態1の決定的暗号方式において、暗号化時に乱数を用いた場合では、暗号化距離と暗号化類似値とが一致するか否かの判定を行うことができなくなる。
【0106】
実施の形態2では、確率的暗号方式を用いる場合について、暗号化したまま類似情報の検索のための演算が可能な方法について述べる。そのため、類似情報検索システムでは、ユーザ端末装置から、復号のための鍵を変換してデータ演算装置に渡し、データ演算装置において変換した距離を復号する。そして、類似情報検索システムでは、復号することにより乱数の要素が取り除かれ、変換距離と変換類似値とが一致するか否かの判定を行うことができる。また、復号のための鍵は、一方向性関数を用いて変換するため、データ演算装置が鍵そのものを求めることができない。以下では、主に実施の形態2と実施の形態1との異なる点について説明し、実施の形態1と実施の形態2と同一の構成については、同一の符号を付して構成に関する詳細な説明を省略する。
【0107】
2.1 ユーザ端末装置
図10は、実施の形態2におけるユーザ端末装置の構成を示すブロック図である。
【0108】
図10に示すように、このユーザ端末装置100は、実施の形態1の構成に加え、鍵変換部109と類似値変換部110とを備えている。なお、
図3と同一の符号が付与されている
図10のブロック図は、
図3と同一の機能を有するため、説明を省略する。
図10における特徴量暗号部103、類似値変換部110、鍵変換部109及び復号部107は、それぞれ
図11のD,E,F,Gに接続しているものとする。
【0109】
2.1.1 鍵変換部
鍵変換部109は、鍵変換値を算出する。鍵変換値は、ユーザ端末装置100の秘密鍵を一方向性関数を用いて変換した情報である。一方向性関数の例としては、秘密鍵をべきとするべき乗演算である。一方向性関数を用いた変換とは、秘密鍵からべき乗演算することは容易であるが、この反対である、べき乗値からそのべき値を求めることが難しいことを意味する。べき乗値からそのべき値を求めることは、離散対数領域でのLOG演算が困難であることに帰着する。
【0110】
2.1.2 類似値変換部
類似値変換部110は、鍵変換部109で用いたものと同一の一方向性関数を用いて設定した類似値を変換する。データ演算装置では、変換距離(暗号化距離と変換復号鍵とを用いて、復号することで求める変換領域での距離)、同様に、一方向性関数を用いて変換した類似値との一致により、類似しているか否かを判定する。
【0111】
2.2 データ演算装置(
図11)
図11は、実施の形態2においてデータ演算装置の構成を示すブロック図である。
【0112】
図11に示すように、データ演算装置200は、実施の形態1の構成に加え、変換距離復号部206と、実施の形態1の参照類似値抽出部の代わりに参照変換類似値抽出部207とを備える。なお、
図4と同一の符号が付与されている
図11のブロック図は、
図4と同一の機能を有するため、説明を省略する。また、
図11のD,E,F,Gは、
図10の対応する箇所に接続している。
【0113】
2.2.1 変換距離復号部
変換距離復号部206は、変換領域において、鍵変換部がユーザ端末装置の秘密鍵を一方向性関数を用いて変換した情報である鍵変換値を用いて暗号化距離を復号することで得られる変換距離を求める(生成する)。ここで用いる準同型暗号方式は、確率的な方法であるため、暗号化距離に乱数要素が含まれている。しかし、変換復号鍵を用いて復号することで求めた変換距離は、乱数要素が除去されている。
【0114】
2.2.2 参照変換類似値抽出部
参照変換類似値抽出部207は、変換領域において、変換距離と変換された変換類似値とが一致しているか否かを判定する。参照変換類似値抽出部207は、変換距離が変換された変換類似値のいずれかと一致している場合に、変換距離が設定した変換類似値の条件を満足するものと判断して対応する識別子IDを抽出する。いずれとも一致しない場合は、対応する識別子IDを抽出しない。
【0115】
2.3 類似情報検索システムの動作
実施の形態2における類似情報検索システム10の動作を、
図12に示すシーケンス図を用いて説明する。
【0116】
図12は、実施の形態2において類似情報検索システムの動作を示すシーケンス図である。
【0117】
図12に示すように、ステップS101において、ユーザ端末装置100は、センシング部で情報を取得する。
【0118】
ステップS102において、特徴量算出部102は、センシング部がセンシングした情報から特徴量Xを算出する。例えば、特徴量Xは次のように、各要素が数値のm次ベクトルであってもよい。
【0120】
ステップS103において、類似値設定部は、検索する際の判定基準となる類似値を決定する。例えば、距離D未満となるデータを検索するもの場合は、類似値として各距離0、1、2、・・、D−1を設定する。
【0121】
ステップS104において、特徴量暗号部は、センシング部から特徴量算出部を介してデータを取得し、その取得したデータから、データの特徴を示す特徴量を準同型暗号方式で暗号化することで暗号化特徴量を生成する。また、類似値変換部は、類似値の一方向性関数値を求める。つまり、類似値変換部は、暗号化類似値として類似値を準同型暗号方式で変換することで変換類似値を生成する。準同型暗号方式は、データ演算装置200では復号できない暗号方式である。このときに用いる鍵は、ユーザ端末装置100の公開鍵とする。実施の形態2では、実施の形態1と異なり、準同型暗号方式が乱数要素を含めた確率的暗号方式とする。
【0122】
ここで、暗号化の関数をEnc1とすると、暗号化特徴量は、
E1x=(Enc1(x1),Enc1(x2),・・、Enc1(xm))
と表す。また、類似値を変換するための一方向性関数をFとすると、変換類似値(一方向性関数値)は、
F(0)、F(1)、・・、F(D−1)
と表すことができる。
【0123】
ステップS113において、鍵変換部は、ユーザ端末装置100が保持する秘密鍵sを所定関数で変換した情報である鍵変換値F(s)を算出する。所定関数は、一方向性関数である。鍵変換部は、必要に応じて秘密鍵sの演算値(例えば、sのべき乗値)である鍵変換値を算出する。
【0124】
ステップS105において、ユーザ端末装置100は、暗号化特徴量、変換類似値及び鍵変換値を示し、条件を満たす類似の参照データを要求する。つまり、ユーザ端末装置100が暗号化特徴量、変換類似値及び鍵変換値をデータ演算装置200に送信し、データ演算装置200がこれらを受信する(ステップS102、ステップS104、ステップS113及びステップS105が特徴量受信ステップの一例、ステップS103、ステップS104、ステップS113及びステップS105が類似値受信ステップの一例、ステップS113及びステップS105が鍵受信ステップの一例)。
【0125】
具体的には、特徴量暗号部は、暗号化特徴量を暗号化距離計算部に送信し、暗号化距離計算部が受信する(特徴量受信ステップの一例)。また、類似値変換部は、変換類似値を変換距離復号部に送信し、変換距離復号部が受信する(類似値受信ステップの一例)。さらに、鍵変換部は、鍵変換値を参照変換類似値抽出部に送信し、参照変換類似値抽出部が受信する(鍵受信ステップの一例)。
【0126】
また、類似値受信ステップでは、データ演算装置200は、暗号化類似値として、複数の類似の度合を示す複数の類似値のそれぞれを一方向性関数で暗号化した情報である複数の変換類似値を受信してもよい。
【0127】
ステップS106において、データ演算装置200は、i番目の識別子IDの参照特徴量格納部から参照特徴量Yi=(yi1、yi2、・・、yim)を選択する。
【0128】
ステップS107において、暗号化距離計算部は、暗号化の関数Enc1で暗号化された参照特徴量と暗号化特徴量との距離を暗号化したまま計算する(距離算出ステップの一例)。暗号化された参照特徴量は、
E1y=(Enc1(yi1),Enc1(yi2),・・、Enc1(yim))
と表すことができる。これにより、暗号化距離計算部は、特徴量Xと参照特徴量Yiの各ベクトルの差分を求めて加算すれば、準同型暗号方式の性質を用いて暗号化距離ED1iを計算することができる。
【0129】
ED1i=Enc1(|x1−yi1|+|x2−yi2|+・・+|xm−yim|)
【0130】
なお、上記では、各ベクトル要素の差の絶対値を、累算したものを距離としている。
【0131】
ステップS114において、変換距離復号部は、鍵変換値を用いて、変換領域で暗号化距離を復号する。復号の結果、
F(|x1−yi1|+|x2−yi2|+・・+|xm−yim|)を求める(この値を、変換距離と呼ぶ)。なお、暗号化距離ED1iは、暗号化時に生成した乱数を含んでおり、暗号化の関数Enc1は入力が同じであっても出力は一致しない。一方、一方向性関数Fは、入力が同一の場合に、出力が一致する。
【0132】
ステップS108において、変換距離復号部は、鍵変換値を用いて暗号化距離を復号することで変換距離を生成する。また、参照変換類似値抽出部は、生成した変換距離が変換類似値と一致するか否かを判定する(ステップS108が判定ステップの一例)。つまり、参照変換類似値抽出部は、変換距離が変換類似値F(0)、F(1)、・・、F(D−1)のいずれかと一致しているかを確認する。もし、一致していれば、一方向性関数Fの中身、つまり特徴量と参照特徴量との距離である|x1−yi1|+|x2−yi2|+・・+|xm−yim|が各距離0、1、・・、D−1のいずれかであることを意味する。
【0133】
もし、いずれとも一致しなければ(満たさない)、参照変換類似値抽出部が次の識別子IDを選択して、ステップS106に戻る。
【0134】
もし、いずれかと一致していれば(満たす)、ステップS109において、参照変換類似値抽出部は、この時の識別子IDを記録する。そして、ステップS106からステップS109を参照特徴量格納部の各識別子IDに関して繰り返す。
【0135】
ステップS110において、暗号化参照データ抽出部は、S109で抽出したすべての識別子IDに対応した参照データを、参照データ格納部から抽出し、ユーザ端末装置100の公開鍵を用いて暗号化する。つまり、暗号化参照データ抽出部は、ステップS108(判定ステップ)で一致すると判定された場合に、暗号化距離の算出に用いられた参照特徴量に対応するデータである参照データを暗号化した情報である暗号化参照データを生成する。
【0136】
ステップS111において、暗号化参照データ抽出部は、生成した暗号化参照データをユーザ端末装置100に送信する(ステップS110及びステップS111が参照データ送信ステップの一例)。
【0137】
ステップS112において、復号部は、暗号化特徴量と暗号化類似値とから生成された参照データを暗号化した情報である暗号化参照データをデータ演算装置200から受信する。そして、復号部は、暗号化参照データ抽出部から送信されてきた、暗号化参照データ(類似検索の結果)を受信し、これを復号して参照データを利用する(復号ステップの一例)。
【0138】
2.3.1 リングLWE(Learning With Errors)の場合の具体的な計算例
上記Enc1の具体例として、リングLWEを用いた準同型暗号方式の鍵生成、暗号化、復号、暗号文の乗算について以下、説明する。なお、リングLWEについては、非特許文献1の第13章に説明がある。
【0139】
鍵生成:nは2のべきとして構成し、pはp−1が2nの倍数であるような素数として環R、Rpを構成する。pより小さい素数をtとする。Rt=(Z/tZ)[x]/(x^n+1)を平文空間とする。なお、ここで、Zは整数を意味し、Rtはt以下の整数を係数とする多項式を(x^n+1)で除した剰余体である。また、秘密鍵sを任意に選択し、eを任意に選択し、a1をRpから任意に選択する。そして、(a0=−(a1×s+t×e),a1)を公開鍵とする。
【0140】
暗号化:平文m(∈Rt)の暗号化は、公開鍵(a0、a1)を用いて以下の通りとする。e1、e2、e3を任意に選び、
Enc1(m)=(m+a0×e1+t×e3、a1×e1+t×e2)
【0141】
復号:暗号文c=(c0、c1、・・、ck)の復号は、秘密鍵sを用いて以下の通りとする。
【0142】
Dec1(c)=c0×s^0+c1×s^1+c2×s^2+・・・+ck×s^k (∈Rq)
Dec1(c)は、m+t×e4 (ただし、|t×e4|<p/2)となる。
【0143】
暗号文の乗算:暗号文c=(c0、c1、・・、ck)と暗号文d=(d0、d1、・・、dl)との乗算は、h=(h0、h1、・・・、hk+l)とする。
【0144】
ここで、hiは、
Σcj×di−j=c0×di+c1×di−1+・・+ci×d0
で求める。
【0145】
暗号文の加算:暗号文c=(c0、c1、・・、ck)と暗号文d=(d0、d1、・・、dl)の加算は、短いほうのベクトルに0を追加して同じ長さにした後、各要素を加算して求める。
【0146】
以上の暗号化の関数Enc1を用いて、
図12のシーケンスの具体的な計算を以下に示す。
【0147】
ステップS104において、特徴量暗号部は、暗号化特徴量と変換類似値とはそれぞれ、以下の通りである。ここで、rは任意の乱数とする。
【0148】
E1x=(Enc1(x1),Enc1(x2),・・、Enc1(xm))
F(0)=r^0、F(1)=r^1、・・、F(D−1)=r^D−1
【0149】
ステップS113において、鍵変換部は、次の鍵変換値F(s)を求める。
【0150】
F(s)=r^s、F(s^2)=r^(s^2)、・・、F(s^k)=r^(s^k)
【0151】
ステップS106において、暗号化された参照特徴量は次のとおりである。
【0152】
E1y=(Enc1(y1),Enc1(y2),・・、Enc1(ym))
【0153】
ステップS107において、暗号化距離計算部は、暗号化特徴量E1xと暗号化された参照特徴量E1yを用いて暗号化距離EDiを求める。暗号化の関数Enc1の加法及び乗法における準同型により、
ED1i=Enc1(特徴量Xと参照特徴量Yiとの距離)
が求められる。暗号化距離ED1iを(c0、c1、・・・、ck)とおく。
【0154】
ステップS114において、変換距離復号部は、暗号化距離ED1i及び鍵変換値F(s)を用いて、以下を計算する。
【0155】
r^c0+F(s)^c1+・・+F(s^k)^ck
【0156】
この値は、上記より、r^Dec1(ED1i)となる。この計算値のべきを示すDec1(ED1i)は、特徴量Xと参照特徴量Yiとの距離となる。
【0157】
ステップS108において、上記で求めた値と変換類似値F(0)=r^0、F(1)=r^1、・・、F(D−1)=r^(D−1)とをそれぞれ比較(一致するか否かを判断)する。変換距離が変換類似値と一致すれば、特徴量Xと参照特徴量Yiとが各距離0〜(D−1)のいずれかであるため、参照特徴量が類似条件を満たすと判断する。なお、rのべき乗を求める一方向性関数は、厳密には異なる入力の関数出力が一致する場合(衝突と呼ぶ)があるが、ここでは、確率的にはほぼ無視できると考える。
【0158】
2.3.2 BGN暗号の場合の具体的な計算例
暗号化の関数Enc1の第2の具体例として、BGN暗号の鍵生成、暗号化、復号、暗号文の乗算について以下、説明する。なお、BNG暗号については、非特許文献2に説明がある。
【0159】
鍵生成:q1、q2をそれぞれ素数とし、N=q1×q2を求める。GとG’とを位数がNとなる情報についての有限巡回群とし、Gの生成元gと、h=u^q2(ここでuはGの生成元)とを生成する。また、eはG×G→G’のペアリングとする。ペアリングは、任意のu,v∈Gとa,b∈整数に対して、e(u^a,v^b)=e(u,v)^(ab)が成り立つ関数である。
【0160】
以上のうち、秘密鍵をq1とし、公開鍵を(N、e、g、h)とする。
【0161】
暗号化:平文m∈{0,1、・・・、T}(T<q2)(ここでの平文空間は離散対数問題が解法可能な程度)の暗号化は、公開鍵(N、e、g、h)を用いて以下の通りとする。乱数rを任意に選び、
Enc1(m)=(g^m)×(h^r)=c
を、暗号文とする。
【0162】
復号:暗号文cの復号は、秘密鍵q1を用いて以下の通りとする。
【0163】
Dec1(c)=c^q1
Dec1(c)は、(g^m)^q1×(h^r)^q1
=(g^q1)^m×u^(Nr)
=(g^q1)^m
ここから、離散対数問題を解法して、mを復号する。
【0164】
暗号文の乗算:m1の暗号文E(m1)とm2の暗号文E(m2)との間で1回だけの乗法準同型性が満たされ、g1= e(g、g)、h1= e(g、h)とする。
【0165】
u=g^αとおくと、h=u^q2=g^αq2となる。このとき、次のように、E1(m1),E1(m2)からm1m2に対する暗号文を作成できる。
【0166】
E1(m1)=(g^m1)×(h^r1)
E1(m2)=(g^m2)×(h^r2)
e(E1(m1)、E1(m2))h1^r=(g1^(m1m2))h1^r3∈G’
【0167】
ここで、r3=m1r2+r2m1+αq2r1r2+rとなる。
【0168】
暗号文の加算:m1の暗号文E1(m1)とm2の暗号文E1(m2)との間で、次の加法準同型性が満たされる。つまり、暗号文E1(m1)及び暗号文E1(m2)からm1+m2に対する暗号文を作成できる。
【0169】
E1(m1)×E1(m2)=(g^(m1+m2))×h^(r1+r2)=E1(m1+m2)
【0170】
以上の暗号化の関数Enc1を用いて、
図12のシーケンスの具体的な計算を以下に示す。
【0171】
ステップS104において、暗号化特徴量と変換類似値とは、それぞれ以下の通りである。ここで、rは任意の乱数とする。
【0172】
E1x=(Enc1(x1),Enc1(x2),・・、Enc1(xm))
F(0)=g1^Q、F(1)=g1^(2Q)、・・、F(D−1)=g1^((D−1)Q)
【0173】
ステップS113において、鍵変換部は、任意の乱数Rを生成し、次の鍵変換値を求める。
【0175】
ステップS106において、暗号化した参照特徴量は次のとおりである。
【0176】
E1y=(Enc1(y1),Enc1(y2),・・、Enc1(ym))
【0177】
ステップS107において、暗号化距離計算部は、暗号化特徴量E1xと暗号化された参照特徴量E1yとを用いて暗号化距離EDiを求める。Enc1の加法及び乗法における準同型により次の式を満たす。
【0178】
ED1i=Enc1(xとyの距離)
が求められる。なお、xとyとの距離としては、例えばこれらの差でもよいし、1回だけの乗法準同型性を用いて、コサイン類似度(x1y1+x2y2+・・+xmym)でもよい。
【0179】
なお、ED1iは、(g1^(xとyの距離))×(h^r4)の形式であり、乱数要素を含んでいる。
【0180】
ステップS114において、暗号化距離ED1iおよび鍵変換値を用いて、以下を計算する。
【0181】
(ED1i)^F(s)=((g1^(xとyの距離))×(h^r4))^(R×q1)
=(g1^(xとyの距離))^Q
=(g1^Q)^(xとyの距離)
【0182】
ステップS108において、変換距離復号部は、上記求めた値F(0)=g1^Q、F(1)=g1^(2Q)、・・、F(D−1)=g1^((D−1)Q)
をそれぞれ比較する。これらの値のうち、いずれかが成り立てば、特徴量Xと参照特徴量Yiとが各距離0〜(D−1)のうちのいずれかであるため、参照特徴量が類似条件を満たすと判断する。
【0183】
2.4 実施の形態2の効果
実施の形態2では、ユーザ端末装置が乱数を含んだ確率的暗号を用いてデータ演算装置に送信するため、安全性を強化することができる。また、データ演算装置は、ユーザ端末装置から暗号化特徴量、暗号化類似値及び鍵変換値を受信して暗号化参照データを抽出する。データ演算装置は、類似値D未満の類似データだけを抽出してユーザ端末装置に送信するため、ユーザ端末装置の計算量、データ演算装置とユーザ端末装置との間の通信量とを削減することができる。また、ユーザ端末装置では、ユーザの意思に応じて柔軟に類似値を設定することができる。
【0184】
また、乱数を含んだ確率的暗号については、ユーザが同一の情報に基づいて検索を行っても、暗号化された特徴量が同じ値にならない。このため、この類似値検索方法などによれば、ユーザ端末装置からデータ演算装置への送信上及びデータ演算装置内でも、ユーザが検索した情報の秘匿性をより高めることができる。その結果、確率的暗号を用いることで暗号文の頻度などからの解析が困難となり、安全性を向上させることができる。
【0185】
(その他の変形例)
なお、本発明を上記各実施の形態に基づいて説明してきたが、本発明は、上記各実施の形態に限定されないのは勿論である。また、以下のような場合も本発明に含まれる。
【0186】
(1)実施の形態1、2では、特徴量をベクトルで説明したが、数値であってもよい。また、この数値をマッピングしてもよい。
【0187】
(2)実施の形態1,2では、類似値をD未満の連続した値としたが、例えば、完全一致(つまり、類似値をゼロのみとする)や離散的な値としてもよい。
【0188】
(3)
図13は、その他の変形例において統計化参照データを取得する場合のデータ演算装置の構成を示すブロック図である。
【0189】
図13に示すように、統計値を求めるための暗号化参照データ統計化部209を追加している。実施の形態1,2では、データ演算装置は、参照データをそれぞれ暗号化してユーザ端末装置に送信していたが、データ演算装置において、参照データから例えば平均や分散などの統計値や頻度情報を求めて、ユーザ端末装置に送信してもよい。この場合、参照データそのものではない統計値をユーザ端末装置に提示することにより、参照データが外部に流出してもその持ち主であるユーザを特定することが困難である。このため、プライバシー保護に配慮した構成となる。
【0190】
(4)実施の形態1,2では、データ演算装置における参照特徴量格納部及び参照データ格納部は、それぞれ平文でデータを保存していたが、暗号化してもよい。この場合は、参照データ格納部からデータを抽出して復号して用いることもでき、安全性が向上する。また、データ演算装置では、ユーザ端末装置の公開鍵で暗号化したデータを保存しておいてもよい。この場合は、そのままの状態で暗号化距離計算やユーザ端末装置への参照データを送付することができる。
【0191】
(5)実施の形態1,2では、ユーザ端末装置の公開鍵及び秘密鍵は、鍵格納部に格納しているが、例えば、ユーザが利用する際に、ユーザ端末装置に装着することができるユーザ端末装置とは別の媒体であってもよい。
【0192】
(6)実施の形態1,2では、ユーザ端末装置の公開鍵及び秘密鍵は、ユーザ端末装置の鍵としているが、鍵格納部にユーザごとの鍵を保管しておいてもよい。この場合、ユーザとユーザ端末装置との間で認証を行い、認証が成功した場合に、鍵格納部から特定のユーザに一致したその鍵を選択して利用することができる。なお、
図7に示すデータフォーマット例では、ユーザ端末装置の識別子IDの換わりに、ユーザの識別子IDを利用する。
【0193】
(7)実施の形態1,2では、特徴量算出部は、データベースをもち、ユーザごとにセンシングした情報を蓄積し、過去にセンシングした情報から特徴量を算出してもよい。この場合、ユーザを識別する方法は、例えば、ユーザが識別子IDの入力などによりユーザ端末装置がユーザを認証してもよい。
【0194】
(8)実施の形態1,2では、データ演算装置は、特徴量算出部は、別媒体のデータベースから過去にセンシングした情報を取得して、特徴量を算出してもよい。この場合、ユーザの識別子IDを別媒体で保持し、ユーザ端末装置に読み取らせてもよい。
【0195】
(9)実施の形態1,2では、データ演算装置は、血圧などのバイタルデータを対象として特徴量から類似の傾向をもつユーザの参照データ(この場合、例えば病歴や治療履歴など)を検索するとしたが、特徴量及び参照データはこの場合に限らない。例えばGPSなどを用いて行動範囲を示すデータから特徴量を算出し、この特徴量から類似の傾向をもつユーザの参照データ(例えば、購入履歴や飲食場所の履歴など)を検索してもよい。
【0196】
(10)実施の形態1,2では、ユーザ端末装置は、類似値を暗号化してデータ演算装置に送信するが、この暗号化はデータ演算装置側で行ってもよい。つまり、ユーザ端末装置の類似値暗号部は、データ演算装置に設けられていてもよい。なお、類似値を秘匿する必要がない場合は、暗号化しなくてもよい。
【0197】
(11)実施の形態1,2では、データ演算装置は、参照データ格納部を備えているが、データ演算装置とは異なる別の装置が参照データ格納部を備えていてもよい。この場合、特徴量が類似値として抽出した識別子IDをデータ演算装置とは異なる別の装置に通知し、この別の装置が対応する参照データを算出してもよい。
【0198】
(12)実施の形態1,2では、特徴量と類似するとして抽出した識別子IDに対応した参照データの全てをユーザ端末装置に送信しているが、常にその全てを送信しなくてもよい。つまり、データ演算装置は、参照データの内の一部をピックアップし、ピックアップされた一部の参照データをユーザ端末装置に送信してもよい。
【0199】
また、データ演算装置は、参照データ格納部のすべての識別子IDに対し、類似値0〜D−1を用いて類似しているか否かを確認しているが(
図12、
図16に示す通り)、例えば、まず、類似値0ですべての識別子IDに関して確認し、次に類似値1で確認するということを繰り返し、類似値D−1までを順次確認する(ネスティング)といった方法であってもよい。そして、この確認のうち、いずれかが一致すれば、対応する識別子IDを抽出する。
【0200】
さらに、例えば、データ演算装置は、ユーザ端末装置に送信する暗号化参照データの最大個数を予め定めておき、
図12、
図16に示すデータ演算装置が繰り返して確認を行っている間に、予め定めた個数に至ったところでこの繰り返しを中断し、抽出した識別子IDに対して参照データを抽出して暗号化し、ユーザ端末装置に暗号化参照データを返答するといった方法であってもよい。
【0201】
なお、上記態様において説明した技術は、例えば、以下のクラウドサービスの類型において実現され得る。しかし、上記態様において説明された技術が実現されるクラウドサービスの類型は、これらに限られるものでない。
【0202】
(サービスの類型1:自社データセンタ型クラウドサービス)
図14は、サービスの類型1(自社データセンタ型クラウドサービス)における情報管理システムが提供するサービスの全体像を示すブロック図である。
【0203】
図14に示すように、本類型では、サービスプロバイダ1120がグループ1000から情報を取得し、ユーザに対してサービスを提供する。本類型では、サービスプロバイダ1120がデータセンタ運営会社の機能を有している。すなわち、サービスプロバイダ1120はビッグデータを管理するクラウドサーバ1111を保有している。したがって、データセンタ運営会社は存在しない。
【0204】
本類型では、サービスプロバイダ1120は、データセンタ(クラウドサーバ)1203を運営及び管理している。また、サービスプロバイダ120は、オペレーティングシステム(OS)1202及びアプリケーション1201を管理する。サービスプロバイダ1120は、サービスプロバイダ1120が管理するOS1202及びアプリケーション1201を用いてサービスを提供する(矢印1204)。
【0205】
(サービスの類型2:IaaS利用型クラウドサービス)
図15は、サービスの類型2(IaaS利用型クラウドサービス)における情報管理システムが提供するサービスの全体像を示すブロック図である。ここで、IaaS(Infrastructure as a Service)とは、コンピュータシステムを構築および稼動させるための基盤そのものを、インターネット経由のサービスとして提供するクラウドサービス提供モデルである。
【0206】
図15に示すように、本類型では、データセンタ運営会社1110が、データセンタ(クラウドサーバ)1203を運営及び管理している。また、サービスプロバイダ1120は、OS1202及びアプリケーション1201を管理する。サービスプロバイダ1120は、サービスプロバイダ1120が管理するOS1202及びアプリケーション1201を用いてサービスを提供する(矢印1204)。
【0207】
(サービスの類型3:PaaS利用型クラウドサービス)
図16は、サービスの類型3(PaaS利用型クラウドサービス)における情報管理システムが提供するサービスの全体像を示すブロック図である。ここで、PaaS(Platform as a Service)とは、ソフトウェアを構築および稼動させるための土台となるプラットフォームを、インターネット経由のサービスとして提供するクラウドサービス提供モデルである。
【0208】
図16に示すように、本類型では、データセンタ運営会社1110は、OS1202を管理し、データセンタ(クラウドサーバ)1203を運営及び管理している。また、サービスプロバイダ1120は、アプリケーション1201を管理する。サービスプロバイダ1120は、データセンタ運営会社1110が管理するOS1202及びサービスプロバイダ1120が管理するアプリケーション1201を用いてサービスを提供する(矢印1204)。
【0209】
(サービスの類型4:SaaS利用型クラウドサービス)
図17は、サービスの類型4(SaaS利用型クラウドサービス)における情報管理システムが提供するサービスの全体像を示すブロック図である。ここで、SaaS(Software as a Service)利用型クラウドサービスは、例えば、データセンタ(クラウドサーバ)1203を保有しているプラットフォーム提供者が提供するアプリケーション1201を、データセンタ(クラウドサーバ)1203を保有していない会社又は個人などの利用者がインターネットなどのネットワーク経由で使用できる機能を有するクラウドサービス提供モデルである。
【0210】
図17に示すように、本類型では、データセンタ運営会社1110は、アプリケーション1201を管理し、OS1202を管理し、データセンタ(クラウドサーバ)1203を運営及び管理している。また、サービスプロバイダ1120は、データセンタ運営会社1110が管理するOS1202及びアプリケーション1201を用いてサービスを提供する(矢印1204)。
【0211】
以上、いずれのクラウドサービスの類型1〜4においても、サービスプロバイダ1120がサービスを提供する。また、例えば、サービスプロバイダ又はデータセンタ運営会社は、OS、アプリケーション又はビックデータのデータベースなどを自ら開発してもよいし、また、第三者に外注させてもよい。
【0212】
その他、実施の形態1、2、その他の変形例及びサービスの類型1〜4に対して当業者が思いつく各種変形を施して得られる形態や、本発明の趣旨を逸脱しない範囲で実施の形態1、2、その他の変形例及びサービスの類型1〜4における構成要素及び機能を任意に組み合わせることで実現される形態も本発明に含まれる。