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

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

▶ 合同会社ジャノムの特許一覧

特開2024-61277プログラム、情報処理装置、方法、及び情報処理システム
<>
  • 特開-プログラム、情報処理装置、方法、及び情報処理システム 図1
  • 特開-プログラム、情報処理装置、方法、及び情報処理システム 図2
  • 特開-プログラム、情報処理装置、方法、及び情報処理システム 図3
  • 特開-プログラム、情報処理装置、方法、及び情報処理システム 図4
  • 特開-プログラム、情報処理装置、方法、及び情報処理システム 図5
  • 特開-プログラム、情報処理装置、方法、及び情報処理システム 図6
  • 特開-プログラム、情報処理装置、方法、及び情報処理システム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024061277
(43)【公開日】2024-05-07
(54)【発明の名称】プログラム、情報処理装置、方法、及び情報処理システム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240425BHJP
   G06F 21/60 20130101ALI20240425BHJP
   G06F 21/62 20130101ALI20240425BHJP
   G06F 16/28 20190101ALI20240425BHJP
   G06F 16/903 20190101ALI20240425BHJP
【FI】
G09C1/00 620Z
G06F21/60 360
G06F21/62 327
G06F16/28
G06F16/903
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022169128
(22)【出願日】2022-10-21
(71)【出願人】
【識別番号】522413939
【氏名又は名称】合同会社ジャノム
(74)【代理人】
【識別番号】110002815
【氏名又は名称】IPTech弁理士法人
(72)【発明者】
【氏名】日向 理彦
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175BA01
5B175DA10
(57)【要約】
【課題】巨大なデータベースに対して安全かつ実用的な時間で所望のデータを取得することができるようにする。
【解決手段】プロセッサを備えるコンピュータに処理を行わせるプログラムであって、前記プロセッサに、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップと、完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップと、前記暗号化クエリを、前記サーバに送信するステップと、前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップと、前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップと、を実行させる。
【選択図】図6
【特許請求の範囲】
【請求項1】
プロセッサを備えるコンピュータと、サーバと、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータに処理を行わせるプログラムであって、前記プロセッサに、
前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップと、
完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップと、
前記暗号化クエリを、前記サーバに送信するステップと、
前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップと、
前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップと、
を実行させるプログラム。
【請求項2】
プロセッサを備えるコンピュータと、クライアント端末と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータに処理を行わせるプログラムであって、前記プロセッサに、
前記クライアント端末から、完全準同型でない準同型の暗号方式を用いて、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを受信するステップと、
前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記特定のデータ要素を含む暗号化された応答を生成するステップと、
前記応答を、前記クライアント端末に送信するステップと、
を実行させるプログラム。
【請求項3】
前記暗号方式は、暗号文と平文とが1対1で対応する、
請求項1又は請求項2に記載のプログラム。
【請求項4】
前記暗号方式は、EC-ElGamal暗号又はPaillier暗号である、
請求項1又は請求項2に記載のプログラム。
【請求項5】
前記情報処理システムは、ブロックチェーンを用いる暗号資産管理システムであり、
前記特定のデータ要素は、暗号資産である、
請求項1又は請求項2の何れかに記載のプログラム。
【請求項6】
プロセッサを備える情報処理装置と、サーバと、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおける情報処理装置であって、前記プロセッサが、
前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップと、
完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップと、
前記暗号化クエリを、前記サーバに送信するステップと、
前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップと、
前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップと、
を実行する情報処理装置。
【請求項7】
プロセッサを備える情報処理装置と、クライアント端末と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおける情報処理装置であって、前記プロセッサが、
前記クライアント端末から、完全準同型でない準同型の暗号方式を用いて、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを受信するステップと、
前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記特定のデータ要素を含む暗号化された応答を生成するステップと、
前記応答を、前記クライアント端末に送信するステップと、
を実行する情報処理装置。
【請求項8】
プロセッサを備えるコンピュータと、サーバと、複数のデータ要素を多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータが
前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップと、
完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップと、
前記暗号化クエリを、前記サーバに送信するステップと、
前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップと、
前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップと、
を実行する方法。
【請求項9】
プロセッサを備えるコンピュータと、クライアント端末と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータが、
前記クライアント端末から、完全準同型でない準同型の暗号方式を用いて、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを受信するステップと、
前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記特定のデータ要素を含む暗号化された応答を生成するステップと、
前記応答を、前記クライアント端末に送信するステップと、
を実行する方法。
【請求項10】
クライアント端末と、サーバと、データベースとを含む情報処理システムであって、
前記クライアント端末は、
前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップと、
完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップと、
前記暗号化クエリを、前記サーバに送信するステップと、
前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップと、
前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップと、
を実行し、
前記サーバは、
前記クライアント端末から、前記暗号化クエリを受信するステップと、
前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記応答を生成するステップと、
前記応答を、前記クライアント端末に送信するステップと、
を実行し、
前記データベースは、前記複数のデータ要素を、多次元配列として格納する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラム、情報処理装置、方法、及び情報処理システムに関する。
【背景技術】
【0002】
ユーザがどのデータを取得するかを明らかにすることなく、データベースを所有するサーバから特定のデータを取得できるようにするPIR(Private Information Retrieval)という技術がある(非特許文献1)。しかし、PIRでは、通信の複雑さがO(N)になってしまうという問題があった。これを解消するため、データベースがデータを多次元配列として格納する方法が知られている(非特許文献2)。
【先行技術文献】
【特許文献】
【0003】
【非特許文献1】E. Kushilevitz and R. Ostrovsky. Replication is not needed: Single database, computationally-private information retrieval. In Proc. of the 38th Annu. IEEE Symp. on Foundations of Computer Science, pages 364-373, 1997.
【非特許文献2】S.Angel, H.Chen, K.Laine and S.Setty, PIR with compressed queries and amortized query processing, https://eprint.iacr.org/2017/1142.pdf, 2017.
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献2の技術は、LWE(Learning With Errors)をベースとした完全準同型暗号を用いることで、暗号化したクエリによる所定の演算を行い、所望のデータをクライアントが復号する。
しかし、LWEベースの完全準同型暗号を用いる場合、複数の平文を一度にパッキングしてベクトル状(v=(v1,v2,...))に表現する必要があるため、例えばv1とv2とを暗号化したまま加算を行う場合には、ベクトルvをローテーションさせたv’=(v2,v3,...)というベクトルを作った上で、v+v’=(v1+v2,v2+v3,...)とする必要がある。また、このベクトルを暗号化した場合、暗号文が非常に長ってしまう。
このため、従来技術では、暗号化手順を並列化するには複雑になり、複数のコアで効率的に分散させることができない。よって、巨大なデータベースに対して検索を行う場合、実用的な時間で計算処理を実行することが困難である、という問題があった。
【0005】
本開示の目的は、巨大なデータベースに対して安全かつ実用的な時間で所望のデータを取得することができる技術を提供することにある。
【課題を解決するための手段】
【0006】
本開示の一態様のプログラムは、プロセッサを備えるコンピュータと、サーバと、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータに処理を行わせるプログラムであって、前記プロセッサに、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップと、完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップと、前記暗号化クエリを、前記サーバに送信するステップと、前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップと、前記応答を、前記復号化することにより、前記特定のデータ要素を抽出するステップと、を実行させる。
【0007】
本開示の一態様のプログラムは、プロセッサを備えるコンピュータと、クライアント端末と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータに処理を行わせるプログラムであって、前記プロセッサに、前記クライアント端末から、完全準同型でない準同型の暗号方式を用いて、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを受信するステップと、前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記特定のデータ要素を含む暗号化された応答を生成するステップと、前記応答を、前記クライアント端末に送信するステップと、を実行させる。
【発明の効果】
【0008】
本開示の技術は、巨大なデータベースに対して安全かつ実用的な時間で所望のデータを取得することができる。
【図面の簡単な説明】
【0009】
図1】本開示の情報処理システム1の構成を示すブロック図である。
図2】本開示のクライアント端末10の構成を示すブロック図である。
図3】本開示のサーバ20の構成を示すブロック図である。
図4】本開示のクライアント端末10の機能構成を示すブロック図である。
図5】本開示のサーバ20の機能構成を示すブロック図である。
図6】本開示のクライアント端末10による情報取得処理を示すフローチャートである。
図7】本開示のサーバ20による情報取得処理を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本開示の一実施形態について、図面に基づいて詳細に説明する。なお、実施形態を説明するための図面において、同一の構成要素には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0011】
<本開示に関する理論>
(準同型暗号を用いたPIR)
シンプルなPIRでは、データベースは、データを順にインデックス化して格納している。例えば、データベースは、N個データをd1~dNとして格納している。PIRのアルゴリズムは、以下のようになる。
【0012】
ステップ1:クライアント端末は、欲しいデータのインデックスiを決定する。
ステップ2:クライアント端末は、暗号化クエリである、配列{ck}を計算する(kは1~Nの整数)。
ここで、ckは、k=iであればEnc(1)、そうでなければ、Enc(0)となる。Enc()は準同型の暗号方式による暗号化を行う関数である。
ステップ3:クライアント端末は、暗号化クエリ{ck}を、サーバに送信する。
ステップ4:サーバは、クライアント端末から、暗号化クエリ{ck}を受信する。
ステップ5:サーバは、応答rを計算する(下記式(1))。
r=Σkk○ck (1)
ここで、演算“○”は、準同型である演算である。演算“○”は、暗号方式によって異なる。すなわち、準同型暗号において、暗号化された要素a及びbは群をなすため、 Enc(a)○Enc(b)=Enc(a○b) となる。このため、 r=Σkk○ck=Enc(di) となる。
ステップ6:サーバは、応答rを、クライアント端末に送信する。
ステップ7:クライアント端末は、応答rをサーバから受信する。
【0013】
ステップ8:クライアント端末は、自己の復号鍵を用いて、rを復号する。具体的には、クライアント端末は、下記式により、データdiを応答rから求めることができる。
i=Dec(r)=Dec(Enc(di))
【0014】
従来のPIRでは、O(N)の通信の複雑さがある。これは、サーバから全てのデータを取得するのとほぼ同じデータ転送量である。クライアント端末がサーバから全てのデータを取得し、求めていないデータを破棄する場合、PIRを使用する必要がない。従って、O(N)の下での通信の複雑さを軽減することが本質的に重要である。
【0015】
(Multiple-Dementional PIRsについて)
上記PIRの課題であるO(N)の下での通信の複雑さを軽減するために、データベースがデータを多次元配列として格納する方法が知られている。以下、この方法をMDPIRsと呼ぶ。MDPIRsでは、データベースは、データをd次元の配列として格納する。ここでは簡単のため、d=2の場合を例に説明する。すなわち、データベースは、N×M個データをd1,1~dN,Mとして格納している(N,Mは任意の整数)。この場合、MDPIRsのアルゴリズムは、以下のようになる。
【0016】
ステップ1:クライアント端末は、欲しいデータのインデックス(i,j)を決定する。
ステップ2:クライアント端末は、暗号化クエリである、配列{c0,k}及び配列{c1,s}を計算する(kは1~N、sは1~Mの整数)。
ここで、c0,kは、k=iであればEnc(1)、そうでなければ、Enc(0)となる。また、c1,sは、s=jであればEnc(1)、そうでなければ、Enc(0)となる。
ステップ3:クライアント端末は、暗号化クエリ{c0,k}及び{c1,k}を、サーバに送信する。
ステップ4:サーバは、クライアント端末から、暗号化クエリ{c0,k}及び{c1,k}を受信する。
ステップ5:サーバは、応答rを計算する(下記式(2))。
r=ΣnSer(rn)○c1,n=Enc(Ser(Enc(di,j))) …(2)
ここで、rnは下記式(3)で表される。
n=Σmn,m○c0,m=Enc(dn,i) …(3)
また、Ser()は、シリアル化関数である。
ステップ6:サーバは、応答rを、クライアント端末に送信する。
ステップ7:クライアント端末は、応答rをサーバから受信する。
ステップ8:クライアント端末は、自己の復号鍵を用いて、rを復号する。
【0017】
このアルゴリズムにより、MDPIRsにおいて、通信の複雑さはO(√N)まで減らすことができる。上記では、2次元配列の場合であるが、d次元の場合、通信の複雑さはO(
d√N)となる。
【0018】
(本開示のPIRについて)
MDPIRsは、LWEをベースとした完全準同型暗号を用いている。このため、MDPIRsは、複数の平文を一度にパッキングしてベクトル状v=(v1,v2,…)に表現する必要がある。このため、MDPIRsは、暗号化したまま完全準同型の演算を行う場合、ベクトルvをローテーションさせたベクトルv´を生成した上で、vとv´との演算を行う必要がある。例えば、MDPIRsは、ベクトルvの要素であるv1とv2とを暗号化したまま加算を行う場合、ベクトルvをローテーションさせたv´=(v2,v3,…)というベクトルを作った上で、v+v´=(v1+v2,v2+v3,...)の演算をする必要がある。
【0019】
また、このベクトルvを暗号化した場合、暗号文が非常に長くなってしまう。
【0020】
このため、従来のMDPIRsでは、暗号化手順を並列化することに適しない複雑性を持つこととなる。よって、クライアント端末やサーバは、MDPIRsの処理を複数のコアに対して、効率的に分散させることができない。よって、巨大なデータベースに対して検索を行う場合、実用的な時間で計算処理を実行することが困難である、という問題があった。
【0021】
本開示の技術は、多次元配列を用いるPIRにおいて、暗号方式に、完全準同型でない準同型暗号であって、暗号文と平文とが1対1に対応するものをあえて用いる。このような準同型暗号は、例えば、EC-ElGamal暗号又はPaillier暗号である。EC-ElGamalやPaillier暗号は、加法のみ準同型となり、乗法については準同型とならない。本開示の技術は、このような準同型暗号をあえて用いることで、ベクトルのローテーションといった複雑な操作を不要とし、個々の平文を暗号化したまま操作することを可能とする。
【0022】
上記のMDPIRsと比較して、本開示の技術は、ベクトル状に表現する操作が、EC-ElGamal暗号などの準同型暗号を用いることにより不要となる。このため、ベクトル状に表現することによる計算の複雑さを解消させることができ、データが巨大となった場合のプロセッサに対する並列度を向上させることができる。
【0023】
また、多次元配列を用いるPIRにおいて、完全準同型暗号を用いず、暗号文と平文とが1対1で対応する暗号方式を用いるとことで、暗号文の長さを抑えることができる。
【0024】
このように、完全準同型暗号でない準同型暗号であって、暗号文と平文とが1対1で対応する暗号方式を用いることにより、並列度を容易に向上させることができ、巨大なデータベースに対して実用的な時間で計算処理を実行することができる。例えば、GPUのような多数のコアプロセッサを有する情報処理装置において、高い並列度を実現することができる。
【0025】
<1.情報処理システム1の構成>
以下、本開示の技術である、暗号方式としてEC-ElGamal暗号を採用した多次元配列のPIRを用いる情報処理システムについて説明する。図1は、本開示の情報処理システム1の構成を示す図である。
【0026】
図1に示すように、本開示の情報処理システム1は、クライアント端末10と、サーバ20とネットワーク30とを含んで構成される。クライアント端末10とサーバ20とは、有線又は無線の通信規格を用いて、ネットワーク30を介して相互に通信可能に接続されている。
【0027】
クライアント端末10は、データをサーバに問い合わせる装置である。図2は、本開示のクライアント端末10の構成を示す図である。
【0028】
クライアント端末10は、例えば、ラップトップパソコン又はラックマウント型若しくはタワー型等のコンピュータ、スマートフォン等である。
【0029】
クライアント端末10は、プロセッサ11と、メモリ12と、ストレージ13と、通信IF14と、入出力IF15とを含んで構成される。
【0030】
プロセッサ11は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。また、プロセッサ11は、複数のプロセッサにより構成されてもよい。
【0031】
メモリ12は、プログラム、及び、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。
【0032】
ストレージ13は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)、SSD(Solid State Drive)である。
【0033】
通信IF14は、クライアント端末10が外部の装置と通信するため、信号を入出力するためのインタフェースである。通信IF14は、インターネット、広域イーサネット等のネットワークに有線又は無線により接続する。
【0034】
入出力IF15は、入力操作を受け付けるための入力装置(例えば、マウス等のポインティングデバイス、キーボード)、及び、情報を提示するための出力装置(ディスプレイ、スピーカ等)とのインタフェースとして機能する。
【0035】
サーバ20は、クライアント端末10の要求に応じて、所定の処理を行い、応答をクライアント端末10に送信する装置である。
【0036】
図3は、サーバ20の構成を示す図である。サーバ20は、例えば、ラップトップパソコン又はラックマウント型若しくはタワー型等のコンピュータ、スマートフォン等である。サーバ20は、複数のサーバ20により、1つのシステムとして構成される、冗長化構成される等の構成であってもよい。情報処理システム1を実現することに要する複数の機能の配分の仕方は、各ハードウェアの処理能力、情報処理システム1に求められる仕様等に鑑みて適宜決定することができる。
【0037】
サーバ20は、プロセッサ21と、メモリ22と、ストレージ23と、通信IF24と、入出力IF25とを含んで構成される。
【0038】
プロセッサ21は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。サーバ20は、複数のプロセッサ21を含むように構成される。プロセッサ21は、GPUであってもよい。
【0039】
メモリ22は、プログラム、及び、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。
【0040】
ストレージ23は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)、SSD(Solid State Drive)である。また、ストレージ23は、大量のデータを保存可能なデータベースとして構成されてもよい。
【0041】
通信IF24は、サーバ20が外部の装置と通信するため、信号を入出力するためのインタフェースである。通信IF24は、インターネット、広域イーサネット等のネットワークに有線又は無線により接続する。
【0042】
入出力IF25は、入力操作を受け付けるための入力装置(例えば、マウス等のポインティングデバイス、キーボード)、及び、情報を提示するための出力装置(ディスプレイ、スピーカ等)とのインタフェースとして機能する。
【0043】
ネットワーク30は、有線又は無線ネットワークにより構成される。ネットワーク30は、例えばインターネット、広域イーサネットなどの様々なネットワークを含んでもよい。
【0044】
<2.クライアント端末10の機能構成>
図4を用いて、本開示に係るクライアント端末10の機能構成について説明する。図4は、クライアント端末10の機能構成を示すブロック図である。図4に示すように、クライアント端末10は、通信部110と、記憶部120と、制御部130とを含む。
【0045】
通信部110は、クライアント端末10が外部の装置と通信するための処理を行う。
【0046】
記憶部120は、クライアント端末10が使用するデータ及びプログラムを記憶する。また、記憶部120は、暗号化に用いる暗号鍵、復号化に用いる復号鍵などを記憶する。
【0047】
制御部130は、クライアント端末10のプロセッサ11がプログラムに従って処理を行うことにより、受信制御部131、送信制御部132、入力部133、生成部134、抽出部135、及び出力部136に示す機能を発揮する。
【0048】
受信制御部131は、クライアント端末10が外部の装置(例えば、サーバ20)から通信プロトコルに従って信号を受信する処理を制御する。
【0049】
送信制御部132は、クライアント端末10が外部の装置(例えば、サーバ20)に対し通信プロトコルに従って信号を送信する処理を制御する。
【0050】
入力部133は、データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報の入力を受け付ける。
【0051】
具体的には、入力部133は、ユーザの操作を受け付け、当該操作により、ユーザが所望する特定のデータ要素のインデックスを決定する。当該操作は、ユーザがGUIを操作して所定の項目を選択する操作などである。入力部133は、例えば、操作において選択された項目について、記憶部120に記憶されているデータベースのインデックス情報を参照することなどにより、インデックスを決定する。インデックスは、d次元のインデックス情報であり、上記MDPIRsの場合と同様である。例えば、d=2であれば、インデックスは、要素i,jの2つを持つインデックス(i,j)となる。
【0052】
生成部134は、完全準同型でない準同型の暗号方式を用いて、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成する。
【0053】
具体的には、生成部134は、まず、記憶部120から、暗号鍵を取得する。次に、生成部134は、完全準同型でない準同型暗号であって、暗号文と平文とが1対1に対応する暗号方式を用いて、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成する。本開示において、暗号方式は、EC-ElGamal暗号を採用する場合を例に説明する。より具体的には、生成部134は、例えば、上記MDPIRsの場合と同様に、暗号化クエリとして、配列{c0,k}及び配列{c1,k}を計算することにより求める。すなわち、Enc()は、EC-ElGamal暗号により暗号化するための関数となる。
【0054】
そして、生成部134は、送信制御部132に、暗号化クエリをサーバ20に対して送信させる。
【0055】
抽出部135は、受信制御部131が、サーバ20から特定のデータ要素を含む暗号化された応答を受信すると、当該応答を復号化することにより、特定のデータ要素を抽出する。
【0056】
具体的には、抽出部135は、EC-ElGamal暗号による暗号化クエリを暗号化した暗号鍵に対する復号鍵を、記憶部120から取得する。次に、抽出部135は、当該復号鍵を用いて、サーバ20から受信した応答を復号化することにより、特定のデータ要素を抽出する。
【0057】
出力部136は、抽出した特定のデータ要素を出力する。出力部136は、例えば、ユーザに、画面に表示するなどの方法により、特定のデータ要素を出力する。
【0058】
<3.サーバ20の機能構成>
図5を用いて、本開示に係るサーバ20の機能構成について説明する。図4は、サーバ20の機能構成を示すブロック図である。図4に示すように、サーバ20は、通信部210と、記憶部220と、制御部230とを含む。
【0059】
通信部210は、サーバ20が外部の装置と通信するための処理を行う。
【0060】
記憶部220は、サーバ20が使用するデータ及びプログラムを記憶する。記憶部120は、第1データDB221等を記憶する。
【0061】
第1データDB221は、複数のデータ要素を保持するデータベースである。第1データDB221は、複数のデータ要素を、d次元の配列として予め格納している。なお、複数のデータ要素を、必ずしもd次元の配列として格納されている必要はなく、サーバ20の処理などにおいて、配列化して取り扱うなどにより、d次元の配列として取り扱えればよい。あくまで本開示では、複数のデータ要素は、予めd次元の配列として格納されている場合を例に説明する。
【0062】
制御部230は、サーバ20のプロセッサ21がプログラムに従って処理を行うことにより、受信制御部231、送信制御部232、取得部233、及び生成部234に示す機能を発揮する。
【0063】
受信制御部231は、サーバ20が外部の装置(例えば、クライアント端末10)から通信プロトコルに従って信号を受信する処理を制御する。
【0064】
送信制御部132は、サーバ20が外部の装置(例えば、クライアント端末10)に対し通信プロトコルに従って信号を送信する処理を制御する。
【0065】
取得部233は、クライアント端末10から、暗号化クエリを取得する。具体的には、取得部233は、受信制御部231が、クライアント端末10から暗号化クエリを受信することにより、当該暗号化クエリを取得する。
【0066】
なお、取得部233は、第1データDB221において、複数のデータ要素がd次元の配列となっていない場合、配列化する機能を有していてもよい。
【0067】
生成部234は、暗号化クエリを用いて、第1データDB221に格納された複数のデータ要素に対して、上記暗号方式における準同型の演算を行うことにより、特定のデータ要素を含む暗号化された応答を生成する。
【0068】
具体的には、生成部234は、暗号化クエリを暗号化した状態で、暗号化クエリと、複数のデータ要素とによる所定の演算を行う。生成部234は、例えば、上記式(2)を用いて、応答を計算する。ここで、上記式(2)において、演算“○”は、EC-ElGamal暗号における準同型の演算である加法である。なお、他の暗号方式であれば、当該演算は、乗法であったり、他の演算であったりする。
【0069】
そして、生成部234は、送信制御部232に、生成した応答をクライアント端末10に対して送信させる。
【0070】
<4.動作>
以下では、クライアント端末10における処理について図面を参照しながら説明する。
【0071】
<4.1.クライアント端末10の情報取得処理>
図6は、クライアント端末10による情報取得処理を行う流れの一例を示すフローチャートである。クライアント端末10は、当該処理を、任意のタイミング(例えば、ユーザによる所定の操作を受け付けたタイミングなど)において実行する。
【0072】
ステップS101において、入力部133は、データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報の入力を受け付ける。
【0073】
ステップS102において、生成部134は、記憶部120から、暗号鍵を取得する。
【0074】
ステップS103において、生成部134は、完全準同型でない準同型の暗号方式を用いて、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成する。
【0075】
ステップS104において、生成部134は、送信制御部132に、暗号化クエリをサーバ20に対して送信させる。
【0076】
ステップS105において、受信制御部131は、サーバ20から特定のデータ要素を含む暗号化された応答を受信する。
【0077】
ステップS106において、抽出部135は、暗号鍵に対する復号鍵を、記憶部120から取得し、当該応答を復号化することにより、特定のデータ要素を抽出する。
【0078】
ステップS107において、出力部136は、抽出した特定のデータ要素を出力し、処理を終了する。
【0079】
<4.2.サーバ20により情報取得処理>
図7は、サーバ20による情報取得処理を行う流れの一例を示すフローチャートである。サーバ20は、当該処理を、クライアント端末10からクエリを受信すること等により実行する。
【0080】
ステップS201において、受信制御部231は、クライアント端末10から暗号化クエリを受信する。
【0081】
ステップS202において、生成部234は、暗号化クエリを用いて、第1データDB221に格納された複数のデータ要素に対して、上記暗号方式における準同型の演算を行うことにより、特定のデータ要素を含む暗号化された応答を生成する。
【0082】
ステップS203において、生成部234は、送信制御部232に、生成した応答をクライアント端末10に対して送信させ、処理を終了する。
【0083】
<5.小括>
以上説明したように、本開示の技術は、クライアント端末と、サーバと、データベースとを含む情報処理システムに関する。当該クライアント端末は、データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得し、完全準同型でない準同型の暗号方式を用いて、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成する。当該クライアント端末は、暗号化クエリを、サーバに送信し、当該サーバから、特定のデータ要素を含む暗号化された応答を受信し、当該応答を復号化することにより、特定のデータ要素を抽出する。当該サーバは、クライアント端末から受信した暗号化クエリを用いて、データベースに格納された複数のデータ要素に対して、暗号方式における準同型の演算を行うことにより、応答を生成する。当該サーバは、生成した応答を、クライアント端末に送信する。そして、データベースは、前複数のデータ要素を、多次元配列として格納する。これにより、クライアント端末は、巨大なデータベースに対して安全かつ実用的な時間で所望のデータを取得することができる。
【0084】
また、暗号方式は、暗号文と平文とが1対1で対応するものである。多次元配列を用いるPIRにおいて、完全準同型暗号を用いず、暗号文と平文とが1対1で対応する暗号方式を用いるとことで、暗号文の長さを抑えることができる。
【0085】
また、暗号方式は、例えば、EC-ElGamal暗号又はPaillier暗号である。コアプロセッサを有する情報処理装置において、高い並列度を実現することができる。特に、EC-ElGamal暗号のような楕円曲線暗号を用いると、暗号文が平文長の二倍程度のデータ量に抑えることができるため、通信コストを更に抑えることができる。
【0086】
以上、開示に係る実施形態について説明したが、これらはその他の様々な形態で実施することが可能であり、種々の省略、置換及び変更を行なって実施することができる。これらの実施形態及び変形例ならびに省略、置換及び変更を行なったものは、特許請求の範囲の技術的範囲とその均等の範囲に含まれる。
【0087】
また、本開示の技術は、様々な情報検索を用いるシステムに応用することができる。例えば、暗号資産において、昨今ではブロックチェーンを用いてトランザクションなどの管理を行っている。このような秘匿性の高い情報については、サーバ側に特にどのようなデータを検索したかなどを知られたくない場合が多い。このようなブロックチェーンを用いる暗号資産管理システムに、本開示の技術を採用することができる。
【0088】
具体的には、情報処理システム1が、ブロックチェーンを用いる暗号資産管理システムであり、特定のデータ要素は、暗号資産であるとすることができる。暗号資産は、例えば預金、ビットコインなどの残高などである。ブロックチェーンを用いる暗号資産の管理において、本開示の技術を用いることにより、ユーザが暗号資産を参照する際に、サーバを運営するウォレット事業者が、ユーザが参照する暗号資産の内容を参照できないようにすることができる。
【0089】
また、例えば、クライアント端末10及びサーバ20の各機能を、他の装置に構成してもよい。例えば、記憶部220の第1データDB221は、外部のデータベースとして構築してもよい。複数のデータの数が巨大になる場合も想定できるため、第1データDB221は、複数のデータベースから構成されていてもよい。また、複数のデータベースは、例えば同一のデータセンターに設置されていても、様々な場所に設置されていてもよい。
【0090】
<付記>
以上の各実施形態で説明した事項を、以下に付記する。
(付記1)プロセッサ(11)を備えるコンピュータ(例えば、クライアント端末10)と、サーバ(20)と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータに処理を行わせるプログラムであって、前記プロセッサに、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップ(S101)と、完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップ(S103)と、前記暗号化クエリを、前記サーバに送信するステップ(S104)と、前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップ(S105)と、前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップ(S106)と、を実行させるプログラム。
【0091】
(付記2)プロセッサ(21)を備えるコンピュータ(例えば、サーバ20)と、クライアント端末(10)と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータに処理を行わせるプログラムであって、前記プロセッサに、前記クライアント端末から、完全準同型でない準同型の暗号方式を用いて、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを受信するステップ(S201)と、前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記特定のデータ要素を含む暗号化された応答を生成するステップ(S202)と、前記応答を、前記クライアント端末に送信するステップ(S203)と、を実行させるプログラム。
【0092】
(付記3)前記暗号方式は、暗号文と平文とが1対1で対応する、(付記1)又は(付記2)に記載のプログラム。
【0093】
(付記4)前記暗号方式は、EC-ElGamal暗号である、(付記1)~(付記3)の何れかに記載のプログラム。
【0094】
(付記5)前記情報処理システムは、ブロックチェーンを用いる暗号資産管理システムであり、前記特定のデータ要素は、暗号資産である、(付記1)~(付記4)の何れかに記載のプログラム。
【0095】
(付記6)プロセッサ(11)を備える情報処理装置(10)と、サーバ(20)と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおける情報処理装置であって、前記プロセッサが、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップ(S101)と、完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップ(S103)と、前記暗号化クエリを、前記サーバに送信するステップ(S104)と、前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップ(S105)と、前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップ(S106)と、を実行する情報処理装置。
【0096】
(付記7)プロセッサ(21)を備える情報処理装置(20)と、クライアント端末(10)と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおける情報処理装置であって、前記プロセッサが、前記クライアント端末から、完全準同型でない準同型の暗号方式を用いて、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを受信するステップ(S201)と、前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記特定のデータ要素を含む暗号化された応答を生成するステップ(S202)と、前記応答を、前記クライアント端末に送信するステップ(S203)と、を実行する情報処理装置。
【0097】
(付記8)プロセッサ(11)を備えるコンピュータ(例えば、クライアント端末10)と、サーバ(20)と、複数のデータ要素を多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータが、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップ(S101)と、完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップ(S103)と、前記暗号化クエリを、前記サーバに送信するステップ(S104)と、前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップ(S105)と、前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップ(S106)と、を実行する方法。
【0098】
(付記9)プロセッサ(21)を備えるコンピュータ(例えば、サーバ20)と、クライアント端末(10)と、複数のデータ要素を、多次元配列として格納しているデータベースとを含む情報処理システムにおいて、前記コンピュータが、前記クライアント端末から、完全準同型でない準同型の暗号方式を用いて、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを受信するステップ(S201)と、前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記特定のデータ要素を含む暗号化された応答を生成するステップ(S202)と、前記応答を、前記クライアント端末に送信するステップ(S203)と、を実行する方法。
【0099】
(付記10)クライアント端末(10)と、サーバ(20)と、データベースとを含む情報処理システムであって、前記クライアント端末は、前記データベースに格納された複数のデータ要素のうち、特定のデータ要素に関する情報を取得するステップ(S101)と、完全準同型でない準同型の暗号方式を用いて、前記特定のデータ要素を取得するためのクエリを暗号化した暗号化クエリを生成するステップ(S103)と、前記暗号化クエリを、前記サーバに送信するステップ(S104)と、前記サーバから、前記特定のデータ要素を含む暗号化された応答を受信するステップ(S105)と、前記応答を、復号化することにより、前記特定のデータ要素を抽出するステップ(S106)と、を実行し、前記サーバは、前記クライアント端末から、前記暗号化クエリを受信するステップ(S201)と、前記暗号化クエリを用いて、前記データベースに格納された複数のデータ要素に対して、前記暗号方式における準同型の演算を行うことにより、前記応答を生成するステップ(S202)と、前記応答を、前記クライアント端末に送信するステップ(S203)と、を実行し、前記データベースは、前記複数のデータ要素を、多次元配列として格納する、情報処理システム。
【符号の説明】
【0100】
1 :情報処理システム
10 :クライアント端末
11 :プロセッサ
12 :メモリ
13 :ストレージ
14 :通信IF
15 :入出力IF
20 :サーバ
21 :プロセッサ
22 :メモリ
23 :ストレージ
24 :通信IF
25 :入出力IF
30 :ネットワーク
110 :通信部
120 :記憶部
130 :制御部
131 :受信制御部
132 :送信制御部
133 :入力部
134 :生成部
135 :抽出部
136 :出力部
210 :通信部
220 :記憶部
221 :第1データDB
230 :制御部
231 :受信制御部
232 :送信制御部
233 :取得部
234 :生成部
図1
図2
図3
図4
図5
図6
図7