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

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

▶ グーグル インコーポレイテッドの特許一覧

特表2022-534364プライベートグループにおけるべき乗演算のアウトソーシング
<>
  • 特表-プライベートグループにおけるべき乗演算のアウトソーシング 図1
  • 特表-プライベートグループにおけるべき乗演算のアウトソーシング 図2
  • 特表-プライベートグループにおけるべき乗演算のアウトソーシング 図3
  • 特表-プライベートグループにおけるべき乗演算のアウトソーシング 図4
  • 特表-プライベートグループにおけるべき乗演算のアウトソーシング 図5
  • 特表-プライベートグループにおけるべき乗演算のアウトソーシング 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-29
(54)【発明の名称】プライベートグループにおけるべき乗演算のアウトソーシング
(51)【国際特許分類】
   G06F 16/903 20190101AFI20220722BHJP
   G06F 21/62 20130101ALI20220722BHJP
【FI】
G06F16/903
G06F21/62 318
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021568063
(86)(22)【出願日】2019-12-10
(85)【翻訳文提出日】2021-12-22
(86)【国際出願番号】 US2019065563
(87)【国際公開番号】W WO2020231471
(87)【国際公開日】2020-11-19
(31)【優先権主張番号】16/411,646
(32)【優先日】2019-05-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ヨー、ケビン
(72)【発明者】
【氏名】パテル、サルバール
(72)【発明者】
【氏名】ショップマン、フィリップ
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175BA01
(57)【要約】
プライベートグループでべき乗演算をアウトソーシングする方法(500)は、サーバに記憶されたクエリ要素に関連する法(134)の2つ以上の素数(135)の素因数分解を選択することで、非信頼サーバ(111)に記憶されたクエリ要素(152)を引き出すクエリ命令(130)を実行する工程を備える。方法はさらに、素数のそれぞれ1つを生成するように構成されたグループ要素(133)を取得する工程と、素因数分解およびグループ要素を用いて一連の底値(162)を生成する工程と、一連の底値をクライアント装置(10)からサーバに送信する工程と、を備える。サーバは、一連の底値を用いて、サーバに記憶された指数(154)を伴うグループ要素のべき乗演算を決定するように構成される。本方法はまた、指数を用いたグループ要素のべき乗演算に基づき、サーバから結果(192)を受け取る工程を備える。
【特許請求の範囲】
【請求項1】
クライアント装置(10)のデータ処理ハードウェア(124)において、非信頼サーバ(111)に記憶されているクエリ要素(152)を引き出すべくクエリ命令(130)を実行する工程であって、前記クエリ命令(130)を実行する工程は、
前記非信頼サーバ(111)に記憶されている前記クエリ要素(152)に関連する法(134)の素因数分解を選択する工程であって、前記素因数分解は2つ以上の素数(135)を備えている、前記素因数分解を選択する工程と、
前記素因数分解の前記2つ以上の素数(135)のそれぞれ1つを生成するように構成されたグループ要素(133)を取得する工程と、
前記法(134)の前記素因数分解と前記グループ要素(133)とを用いて、一連の底値(162)を生成する工程と、
前記一連の底値(162)を前記クライアント装置(10)から前記非信頼サーバ(111)に送信する工程であって、前記非信頼サーバ(111)は、前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶されている指数(154)を伴う前記グループ要素(133)のべき乗演算を決定するように構成されている、前記一連の底値(162)を送信する工程と、
によって行われる、前記クエリ命令(130)を実行する工程と、および
前記データ処理ハードウェア(124)において、前記非信頼サーバ(111)から結果(192)を受け取る工程であって、前記結果(192)は、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算に基づく、前記結果(192)を受け取る工程と、
を備えている、方法(500)。
【請求項2】
前記一連の底値(162)を生成する工程は、
前記法(134)の素因数分解と前記グループ要素(133)とを用いて、一連の初期底値(162)を生成する工程と、
一連の法削減底値(162)を生成するべく、前記一連の初期底値(162)における各初期底値(162)を前記法(134)によって削減する工程であって、各法削減底値(162)は、前記法(134)によって削減された前記一連の初期底値(162)におけるそれぞれの初期底値(162)を備えている、各初期底値(162)を前記法(134)によって削減する工程と、
を備えており、
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程は、前記一連の法削減底値(162)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、前記一連の法削減底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)のべき乗演算を決定するように構成されている、
請求項1に記載の方法(500)。
【請求項3】
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程はさらに、前記法(134)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、
前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定する工程と、
前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記法(134)で減らすことで、前記結果(192)を生成する工程と、
前記結果(192)を前記クライアント装置(10)に送信する工程と、
を実行するように構成されている、
請求項1または2に記載の方法(500)。
【請求項4】
前記方法(500)はさらに、前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記結果(192)が備えている場合に、前記データ処理ハードウェア(124)によって、前記法(134)で前記結果(192)を削減する工程を備えている、
請求項1~3のいずれか一項に記載の方法(500)。
【請求項5】
前記一連の底値(162)を生成する工程は、
前記非信頼サーバ(111)に記憶された前記指数(154)を表す位取り記数法(100)を取得する工程と、
前記位取り記数法(100)における桁位置に対応するそれぞれの基数要素(136)による前記グループ要素(133)のべき乗演算に基づき、前記一連の底値(162)内の各底値(162)を生成する工程と
を備えている、請求項1~4のいずれか一項に記載の方法(500)。
【請求項6】
前記非信頼サーバ(111)に記憶された前記指数(154)を表す前記位取り記数法(100)は、前記クライアント装置(10)と前記非信頼サーバ(111)との間の通信についての帯域幅制限に基づき、前記クライアント装置(10)または前記非信頼サーバ(111)によって選択される、
請求項5に記載の方法(500)。
【請求項7】
前記位取り記数法(100)は、2進法、16進法、または10進法のうちの1つを備えている、
請求項5または6に記載の方法(500)。
【請求項8】
前記非信頼サーバ(111)に記憶されている前記指数(154)を表す前記位取り記数法(100)を取得する工程はさらに、前記位取り記数法(100)によって表される前記指数(154)の桁数(212)を取得する工程を備えており、
前記指数(154)の前記桁数(212)は、実行された前記クエリ命令(130)によって生成された前記一連の底値(162)のうちの底値(162)の数に等しい、
請求項5~7のいずれか一項に記載の方法(500)。
【請求項9】
前記クライアント装置(10)から受け取った前記一連の底値(162)の各底値(162)について、前記指数(154)のそれぞれの桁位置における値を伴う前記底値(162)の前記べき乗演算を決定する工程と、
前記指数(154)のそれぞれの前記桁位置における値を伴う前記底値(162)の前記べき乗演算同士を一緒に乗算する工程と、
によって、前記非信頼サーバ(111)は、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、
請求項1~8のいずれか一項に記載の方法(500)。
【請求項10】
前記結果(192)は、被クエリ要素に関連付けられている、
請求項1~9のいずれか一項に記載の方法(500)。
【請求項11】
前記クライアント装置(10)は、前記法(134)の前記素因数分解を、前記非信頼サーバ(111)に決して明らかにしない、
請求項1~10のいずれか一項に記載の方法(500)。
【請求項12】
クライアント装置(10)のデータ処理ハードウェア(124)と、および
前記データ処理ハードウェア(124)に通信するメモリハードウェア(122)であって、前記データ処理ハードウェア(124)上で実行されると前記データ処理ハードウェア(124)に動作を実行させる命令を記憶する前記メモリハードウェア(122)と、
を備えているシステム(100)であって、前記動作は、
非信頼サーバ(111)に記憶されているクエリ要素(152)を引き出すべくクエリ命令(130)を実行する工程であって、前記クエリ命令(130)を実行する工程は、
前記非信頼サーバ(111)に記憶されている前記クエリ要素(152)に関連する法(134)の素因数分解を選択する工程であって、前記素因数分解は2つ以上の素数(135)を備えている、前記素因数分解を選択する工程と、
前記素因数分解の前記2つ以上の素数(135)のそれぞれ1つを生成するように構成されたグループ要素(133)を取得する工程と、
前記法(134)の前記素因数分解と前記グループ要素(133)とを用いて、一連の底値(162)を生成する工程と、
前記一連の底値(162)を前記クライアント装置(10)から前記非信頼サーバ(111)に送信する工程であって、前記非信頼サーバ(111)は、前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶されている指数(154)を伴う前記グループ要素(133)のべき乗演算を決定するように構成されている、前記一連の底値(162)を送信する工程と、
によって行われる、前記クエリ命令(130)を実行する工程と、および
前記非信頼サーバ(111)から結果(192)を受け取る工程であって、前記結果(192)は、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算に基づく、前記結果(192)を受け取る工程と、を備えている、
システム(100)。
【請求項13】
前記一連の底値(162)を生成する工程は、
前記法(134)の前記素因数分解と前記グループ要素(133)とを用いて、一連の初期底値(162)を生成する工程と、
一連の法削減底値(162)を生成するべく、前記一連の初期底値(162)における各初期底値(162)を前記法(134)によって削減する工程であって、各法削減底値(162)は、前記法(134)によって削減された前記一連の初期底値(162)におけるそれぞれの初期底値(162)を備えている、各初期底値(162)を前記法(134)によって削減する工程と、
を備えており、
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程は、前記一連の法削減底値(162)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、前記一連の法削減底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)のべき乗演算を決定するように構成されている、
請求項12に記載のシステム(100)。
【請求項14】
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程はさらに、前記法(134)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、
前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定する工程と、
前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記法(134)で減らすことで、前記結果(192)を生成する工程と、
前記結果(192)を前記クライアント装置(10)に送信する工程と、
を実行するように構成されている、
請求項12または13に記載のシステム(100)。
【請求項15】
前記動作はさらに、前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記結果(192)が備えている場合に、前記法(134)で前記結果(192)を削減する工程を備えている、
請求項12~14のいずれか一項に記載のシステム(100)。
【請求項16】
前記一連の底値(162)を生成する工程は、
前記非信頼サーバ(111)に記憶された前記指数(154)を表す位取り記数法(100)を取得する工程と、
前記位取り記数法(100)における桁位置に対応するそれぞれの基数要素(136)による前記グループ要素(133)のべき乗演算に基づき、前記一連の底値(162)内の各底値(162)を生成する工程と、
を備えている、請求項12~15のいずれか一項に記載のシステム(100)。
【請求項17】
前記非信頼サーバ(111)に記憶された前記指数(154)を表す前記位取り記数法(100)は、前記クライアント装置(10)と前記非信頼サーバ(111)との間の通信についての帯域幅制限に基づき、前記クライアント装置(10)または前記非信頼サーバ(111)によって選択される、
請求項16に記載のシステム(100)。
【請求項18】
前記位取り記数法(100)は、2進法、16進法、または10進法のうちの1つを備えている、
請求項16または17に記載のシステム(100)。
【請求項19】
前記非信頼サーバ(111)に記憶されている前記指数(154)を表す前記位取り記数法(100)を取得する工程はさらに、前記位取り記数法(100)によって表される前記指数(154)の桁数(212)を取得する工程を備えており、
前記指数(154)の前記桁数(212)は、実行された前記クエリ命令(130)によって生成された前記一連の底値(162)のうちの底値(162)の数に等しい、
請求項16~18のいずれか一項に記載のシステム(100)。
【請求項20】
前記クライアント装置(10)から受け取った前記一連の底値(162)の各底値(162)について、前記指数(154)のそれぞれの桁位置における値を伴う前記底値(162)の前記べき乗演算を決定する工程と、
前記指数(154)のそれぞれの前記桁位置における値を伴う前記底値(162)の前記べき乗演算同士を一緒に乗算する工程と、
によって、前記非信頼サーバ(111)は、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、
請求項12~19のいずれか一項に記載のシステム(100)。
【請求項21】
前記結果(192)は、被クエリ要素に関連付けられている、
請求項12~20のいずれか一項に記載のシステム(100)。
【請求項22】
前記クライアント装置(10)は、前記法(134)の前記素因数分解を前記非信頼サーバ(111)に明らかにすることはない、
請求項12~21のいずれか一項に記載のシステム(100)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プライベートグループにおけるべき乗演算のアウトソーシングに関する。
【背景技術】
【0002】
プライベート情報引出(PIR:Private Information Retrival)スキームは、ユーザが1つまたは複数のストレージ装置からデータを引出(retrieve)することを可能にする一方で、ユーザまたは引き出されたデータに関するいかなる知識も、1つまたは複数のストレージ装置をホストするサーバに明らかにしない。プライベート情報引出PIRでは、サーバのストレージ装置は一般的に保護されておらず、プライベート情報は、パブリックなストレージ装置から、もしくはストレージ装置全体からデータをダウンロードすることが許可されている加入者のグループがいるサーバのストレージ装置のいずれかから、取得される。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Cachin C ら、「Computationally Private Information Retrieval with Polylogarithmic Communication」,Electronic Publishing,Artistic Imaging, and Digital Typography,Lecture Notes in Computer Science,ISSN 0302-9743、Springer Verlag,DE,vol.1592,1999年1月1日,402~414頁,XP002346989,DOI:10.1007/3-540-48910-X_28,ISBN:978-3-540-24128-7,Section1,Section3.2
【発明の概要】
【発明が解決しようとする課題】
【0004】
アクセスパターンが明らかにならないように、ユーザはサーバストレージ装置からすべてのコンテンツをダウンロードすればよいが、複数のストレージ装置にまたがるクラウドストレージサービスからすべてのコンテンツをダウンロードしなければならない場合には、時間がかかりすぎる。また、従来のプライベート情報引出PIR方式では、大量の帯域を消費したり、膨大な計算を必要としたりしていた。
【課題を解決するための手段】
【0005】
本開示の一態様は、プライベートグループにおいてべき乗演算(Exponentiation)をアウトソーシングする方法を提供する。本方法は、クライアント装置のデータ処理ハードウェアにおいて、非信頼(untrusted)サーバに記憶されているクエリ要素に関連する法(ほう:modulus)の素因数分解(prime factorization)を選択することで、非信頼サーバに記憶されているクエリ要素を引き出すべくクエリ命令を実行する工程を備えている。素因数分解は、2つ以上の素数(prime numbers)を備えている。本方法は、素因数分解の2つ以上の素数のそれぞれ1つを生成するように構成されたグループ要素を取得する工程と、法の素因数分解とグループ要素とを用いて(using the prime factorization of the modulus and the groug element)、一連の底値(a series of base values)を生成する工程とを備えている。また、本方法は、一連の底値をクライアント装置から非信頼サーバに送信する工程を備えている。非信頼サーバは、一連の底値を用いて、非信頼サーバに記憶されている指数(exponent)を伴うグループ要素のべき乗演算を決定するように構成されている。本方法はまた、データ処理ハードウェアにおいて、非信頼サーバから結果を受け取る工程を備えている。結果は、非信頼サーバに記憶されている指数を伴うグループ要素のべき乗演算に基づく。
【0006】
本開示の実装は、以下の任意の特徴のうちの1つまたは複数を備えていることができる。いくつかの実装では、一連の底値を生成する工程は、法の素因数分解とグループ要素とを用いて一連の初期底値を生成する工程と、一連の初期底値内の各初期底値を法で削減して一連の法削減底値(法で削減された底値)を生成する工程とを備えている。各法削減底値は、法によって削減された一連の初期底値のうちのそれぞれの初期底値を備えている。一連の底値を非信頼サーバに送信する工程は、いくつかの例では、一連の法削減底値を非信頼サーバに送信する工程を備えている。非信頼サーバは、一連の法削減底値を用いて、非信頼サーバに記憶された指数を伴うグループ要素のべき乗演算を決定するように構成される。
【0007】
いくつかの実装では、一連の底値を非信頼サーバに送信する工程はさらに、法を非信頼サーバに送信する工程を備えている。非信頼サーバは、一連の底値を用いて、非信頼サーバに記憶されている指数を伴うグループ要素のべき乗演算を決定するように構成されてもよい。また、非信頼サーバは、指数を伴うグループ要素のべき乗演算を法で削減することで結果を生成するとともに、その結果をクライアント装置に送信するように構成されてもよい。いくつかの例では、本方法はさらに、指数を伴うグループ要素のべき乗演算を結果が備えている場合、データ処理ハードウェアによって、結果を法で削減する工程を備えている。
【0008】
任意に、一連の底値を生成する工程は、非信頼サーバに記憶された指数を表す位取り記数法(numeral position system:数字位置システム)を取得する工程と、位取り記数法の桁位置に対応するそれぞれの基数要素(base element:ベース要素。底要素)によるグループ要素のべき乗演算に基づき、一連の底値における各底値を生成する工程とを備えている。非信頼サーバに記憶された指数を表す位取り記数法は、いくつかの例では、クライアント装置と非信頼サーバとの間の通信についての帯域幅制限に基づき、クライアント装置または非信頼サーバによって選択される。位取り記数法は、2進法、16進法、または10進法(十進法)のうちの1つを備えてもよい。
【0009】
非信頼サーバに記憶されている指数を表す位取り記数法を取得する工程はさらに、いくつかの実装において、位取り記数法によって表される指数の桁数を取得する工程を備えている。指数の桁数は、実行されたクエリ命令によって生成された一連の底値のうちの底値の数に等しい。クライアント装置から受け取った一連の底値の各底値について、指数のそれぞれの桁位置における値を伴う底値のべき乗演算を決定する工程と、指数のそれぞれの桁位置における値を伴う底値のべき乗演算同士を一緒に乗算する工程とによって、非信頼サーバは、非信頼サーバに記憶された指数を伴うグループ要素のべき乗演算を決定するように構成されてもよい。結果は、被クエリ要素(照会された要素)に関連付けられてもよく、クライアント装置は、いくつかの例では、法の素因数分解を非信頼サーバに決して明らかにしなくてもよい。
【0010】
本開示の別の態様は、プライベートグループでべき乗演算をアウトソーシングするためのシステムを提供する。システムは、クライアント装置のデータ処理ハードウェアと、データ処理ハードウェアに通信するメモリハードウェアとを備えている。メモリハードウェアは、データ処理ハードウェア上で実行されるとデータ処理ハードウェアに動作を実行させる命令を記憶する。動作は、非信頼サーバに記憶されているクエリ要素に関連する法の素因数分解を選択することで、非信頼サーバに記憶されているクエリ要素を引き出すべくクエリ命令を実行する工程を備えている。素因数分解は、2つ以上の素数を備えている。また動作は、素因数分解の2つ以上の素数のそれぞれ1つを生成するように構成されたグループ要素を取得する工程と、法の素因数分解およびグループ要素を用いて一連の底値を生成する工程とを備えている。前記動作は、一連の底値をクライアント装置から非信頼サーバに送信する工程も備えている。非信頼サーバは、一連の底値を用いて、非信頼サーバに記憶されている指数を伴うグループ要素のべき乗演算を決定するように構成されている。動作はまた、非信頼サーバから結果を受け取る工程を備えている。結果は、非信頼サーバに記憶されている指数を伴うグループ要素のべき乗演算に基づく。
【0011】
この態様は、以下の任意の機能のうちの1つまたは複数を備えてもよい。いくつかの実装では、一連の底値を生成する工程は、法の素因数分解とグループ要素とを用いて一連の初期底値を生成する工程と、一連の初期底値における各初期底値を法によって削減して一連の法削減底値を生成する工程とを備えている。各法削減底値は、法によって削減された一連の初期底値のうちのそれぞれの初期底値を備えている。一連の底値を非信頼サーバに送信する工程は、いくつかの例では、一連の法で削減された底値を非信頼サーバに送信する工程を備えている。非信頼サーバは、一連の法削減された底値を用いて、非信頼サーバに記憶されている指数を伴うグループ要素のべき乗演算を決定するように構成される。
【0012】
いくつかの実装では、一連の底値を非信頼サーバに送信する工程はさらに、法を非信頼サーバに送信する工程を備えている。非信頼サーバは、一連の底値を用いて、非信頼サーバに記憶されている指数を伴うグループ要素のべき乗演算を決定するように構成されてもよい。また、非信頼サーバは、指数を伴うグループ要素のべき乗演算を法で削減することで結果を生成するとともに、その結果をクライアント装置に送信するように構成されてもよい。いくつかの例では、動作はさらに、指数を伴うグループ要素のべき乗演算を結果が備えている場合、結果を法で削減する工程を備えている。
【0013】
任意で、一連の底値を生成する工程は、非信頼サーバに記憶された指数を表す位取り記数法を取得する工程と、位取り記数法の桁位置に対応するそれぞれの基数要素によるグループ要素のべき乗演算に基づき、一連の底値における各底値を生成する工程とを備えている。非信頼サーバに記憶された指数を表す位取り記数法は、いくつかの例では、クライアント装置と非信頼サーバとの間の通信についての帯域幅制限に基づき、クライアント装置または非信頼サーバによって選択される。位取り記数法は、2進法、16進法、または10進法のいずれか1つを備えてもよい。
【0014】
非信頼サーバに記憶されている指数を表す位取り記数法を取得する工程はさらに、いくつかの実装において、位取り記数法によって表される指数の桁数を取得する工程を備えている。指数の桁数は、実行されたクエリ命令によって生成された一連の底値のうちの底値の数に等しい。クライアント装置から受け取った一連の底値の各底値について、指数のそれぞれの桁位置における値を伴う底値のべき乗演算を決定する工程と、指数のそれぞれの桁位置における値を伴う底値のべき乗演算同士を一緒に乗算する工程とによって、非信頼サーバは、非信頼サーバに記憶された指数を伴うグループ要素のべき乗演算を決定するように構成されてもよい。結果は、被クエリ(問い合わせられた)要素に関連付けられてもよく、クライアント装置は、いくつかの例では、法(ほう:modulus)の素因数分解を非信頼サーバに明らかにすることはない。
【0015】
本開示の1つまたは複数の実装の詳細は、添付の図面および以下の説明に記載されている。他の態様、特徴、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0016】
図1】分散システムの非一時的なデータストレージに記憶されたデータブロックに気付かれずにアクセスする際に、べき乗演算をアウトソースする例示的なプライベート情報引出PIRシステムの概略図。
図2図1のシステムの例示的なセレクタの模式図。
図3図1のシステムの構成要素および例示的な位取り記数法の概略図。
図4】一連の底値を生成するための、例示的な動作のフローチャート。
図5】プライベートグループの中にべき乗演算をアウトソーシングする方法のための動作の、例示的な配置のフローチャート。
図6】本明細書に記載されたシステムおよび方法を実施するべく用いることができる、例示的なコンピューティング装置の概略図。
【発明を実施するための形態】
【0017】
様々な図面における同様の参照記号は、同様の要素を示す。
べき乗演算(Exponentiation)は、底(ベース)と指数(exponent)との間の一般的な数学的操作であり、べき乗演算は、底の繰り返しの乗算に相当する。べき乗演算は、生物学、物理学、およびコンピュータサイエンスなど、多くの分野で広く用いられている。しかし、指数が非常に大きくなると、べき乗演算が超線形になるので、計算が困難になる。つまり、指数が大きくなると、生の計算難易度は、線形よりも速い速度で増加する。しかし、大きなべき乗演算の結果を計算する難しさを軽減する方法がある。例えば、いわゆる「指数のべき乗則」は、指数の因子(ファクター)が既知の場合、計算を大幅に軽減する。
【0018】
しかし、整数の因数分解も、既知の難問である。実際、十分に大きな整数では、効率的で既知の因数分解の手段は無い。この難問は、現代の暗号技術の多くの基礎を形成している。例えば、2つの大きな素数は秘密にしておくことができ(例えば、秘密鍵)、一方で、2つの大きな素数の掛け算は、秘密の素数を明らかにすることなく共有することができる(例えば、公開鍵)。
【0019】
べき乗演算と素因数分解は、プライベート情報引出(PIR)スキームにおいても重要な役割を果たすことができる。プライベート情報引出PIRスキームは、ユーザが1つまたは複数のストレージ装置からデータを引き出すことを可能にする一方で、ユーザまたは引き出されたデータに関するいかなる知識も、1つまたは複数のストレージ装置をホストするサーバに明らかにしない。例えば、サーバは、同じ長さのn個のブロックB,...,Bを備えているパブリックデータベースを保存している場合がある。ユーザは、ブロックBのダウンロードを希望する。プライバシー上の理由から、ユーザは、ダウンロードしたデータブロックのインデックスを、サーバ(または他の誰か)に公開したくない。つまり、ユーザは、選択されたデータブロックを気付かれずに取得したいと考えている。この問題に対する1つの解決策は、クライアントにデータベース全体をダウンロードさせることである。効果的ではあるが、帯域幅のコストがかかるので、かなりのサイズのデータベースの場合、この解決策は実現不可能である。
【0020】
別のアプローチは、べき乗演算(Exponentiation)を用いることである。例えば、サーバはデータベースを、整数の指数Eとして表現することができる。データベースのサイズに応じて、Eはかなり大きくなる可能性がある(例えば、数千桁または数百万桁)。クライアントは、非信頼サーバ上のデータブロック(例えば、保存されているクエリ要素)に関連付けられた法(ほう:modulus)Mで表されるグループGを取得する。クライアントは、グループ要素gを選択することができる。ここで、gは、クライアントがダウンロードしたいと考えているサーバに記憶されたデータブロック(例えば、クエリ要素)に関連付けられている。クライアントは、選択したデータブロックを気付かれずに取得するべくその結果を用いることができるので、gmod_Mを解くことを望む。クライアントはMの素因数分解を知っているが、その素因数分解を秘密にしておきたいと考えている。
【0021】
この状況では、クライアントは単にgとMをサーバに送り、サーバにgmod_Mを計算させることができる。しかし、先に述べたように、べき乗演算は超線形問題であり、指数Eが十分な大きさ(例えば、データベースの大きさ)であると、計算要件は法外に高くなる。サーバは、法の素因数(prime factors)を知ることで(例えば、フェルマーの小定理を利用することで)計算を大幅に簡略化できるが、クライアントは素因数を秘密にしておきたいと考えている。したがって、クライアントが素因数分解を用いて効率的な計算を行うとともに、残りのべき乗演算をサーバにアウトソースすることは、データベース全体(すなわち、指数)を送信する際の帯域幅コストと、法の素因数分解にアクセスすることなくサーバが完全なべき乗演算を行う際の計算コストと、の両方を回避するべく有利である。
【0022】
本明細書の実装は、法(ほう:modulus)の素因数分解を明らかにすることなく、プライベートグループでべき乗演算をアウトソーシングするためのルーチンに向けられている。このルーチンは、クライアントに、法の秘密の素因数分解を用いて効率的なべき乗演算を実行させ、サーバが保持する指数を使用せずに一連の底値を生成することで、帯域幅と計算との実用的なバランスをとることができる。クライアントは、素因数分解を提供することなく、サーバが保持する指数を用いてさらなる計算を行うべく、一連の底値をサーバに送信する。
【0023】
図1を参照すると、いくつかの実装において、例示的なシステム100は、それぞれのユーザまたはクライアント12に関連するユーザ装置10(クライアント装置10とも呼ばれる)を備えており、ネットワーク112を介してリモートシステム111(本明細書ではサーバとも呼ばれ、または非信頼サーバ(信頼されていないサーバ)とも呼ばれる)に通信する。ユーザ装置10は、デスクトップワークステーション、ラップトップワークステーション、またはモバイル装置(すなわち、スマートフォン)などの、任意のコンピューティング装置に対応してもよい。リモートシステム111は、単一のコンピュータであるか、複数のコンピュータであるか、または、スケーラブル/エラスティックなコンピューティングリソース118(例えば、データ処理ハードウェア)および/またはストレージリソース116(例えば、メモリハードウェア)を有する分散システム(例えば、クラウド環境)であってもよい。非信頼データストア150(例えば、「非信頼ストレージ装置」または「非信頼サーバ」)は、クライアントまたはコンピューティングリソース118の1つまたは複数によるストレージリソース116のスケーラブルな使用を可能にするべく、ストレージリソース116にオーバーレイされる。非信頼データストア150は、クライアント装置10によるダウンロードに利用可能な複数のデータブロック152、152a~152nを記憶するように構成されている。
【0024】
例えば、非信頼データストア150は、公知で暗号化されていないn個のデータブロック(B)152を備えており、クライアント装置10によるデータブロック(B)152上の引出機能を保持しつつ1つまたは複数のクライアント装置10がアクセスパターンを隠蔽するようにデータブロック(B)152を気付かれずに(obliviously)引き出すべくプライベート情報引出PIRを用いることを可能にする。このように、クライアント装置10は、データブロック152を所有していなくてもよく、データブロック152の内容は、いくつかの構成では公開されている。あるいは、データブロック152は、特定のクライアント12に対してプライベートなものであってもよいが、クライアント12は、依然として、非信頼データストア150からのアクセスパターンを隠蔽したいと考えている。データブロック152は、整数で表されてもよい。すなわち、非信頼データストア150またはサーバ111は、各データブロック152を処理して、データブロック152のすべてを代表する単一の整数を生成してもよい。例えば、サーバ111は、「中国の剰余定理」(チャイニーズリマインダセオリー)を用いて、各データブロック152を明瞭(distinct)な小素数(small prime)で符号化してもよい。
【0025】
クライアント12に関連付けられたクライアント装置10(例えば、コンピュータ)は、関連付けられたメモリハードウェア122と、関連付けられたデータ処理ハードウェア124とを備えてもよい。各クライアント装置10は、関連するメモリハードウェア122を活用して、クエリ命令130と、法(M)134で表されるグループ(G)132と、位取り基数(positional base:位置ベース、位置底)(B)136と、および位取りカウント(positional count:位置カウント)(m)138とを保持または記憶してもよい。いくつかの例では、データ処理ハードウェア124は、リモートシステム111に発行された一連の底値162を生成するためのジェネレータ160を実行するが、このリモートシステム111は、本明細書では、「非信頼環境で実行されるサーバ」とも呼ばれることがある。
【0026】
ジェネレータ160は、いくつかの例では、クエリ命令130を実行して、非信頼データストア150に記憶されているクエリ要素(すなわち、データブロック(B)152)を引き出す。この目的のために、ジェネレータ160は、非信頼データストア150上に記憶されたクエリ要素152に関連する法(M)134を取得または受取または生成する。法(modulus)134は、2つ以上の素数135の積である。素数135はユーザ装置10によって選択され、秘密鍵の基礎を形成してもよい。したがって、素数135は、他のすべての当事者(サーバ111を含む)から、秘密のままである。また、ジェネレータ160は、1つまたは複数のグループ要素(g)133を備えているグループ(G)132を取得または受取または生成する。グループ132は法134によって表され、グループ132の各グループ要素133は、素数135のサブグループのジェネレータである。
【0027】
次に図2を参照すると、いくつかの実装では、データ処理ハードウェア122は、クエリ命令130を受け取るセレクタ200を実行する。クエリ命令130は、1つまたは複数のデータブロック選択131を備えている。各データブロック選択131は、非信頼データストア150から気付かれずに取得されるデータブロック152(例えば、クエリ要素)に対応する。セレクタ200は、サーバ111(例えば、メモリハードウェア116)に記憶されたデータブロック素数データストア210に通信している。データブロック素数データストア210は、いくつかの例では、非信頼データストア150に記憶された各データブロック152に関連付けられた、それぞれのデータブロック素数220を記憶する。すなわち、データブロック素数ストア210は、データストア150から引き出されるデータブロック152に対応する、データブロック素数220を提供してもよい。セレクタ200は、クエリ命令130からのデータブロック選択131を用いて、データブロック選択131に関連するデータブロック152に対応するデータブロック素数220を取得してもよい。得られたデータブロック素数220を用いて、セレクタ200は、法134の素因数分解を選択する。素因数分解は2つ以上の素数135を備えており、素数135のうちの少なくとも1つはデータブロック素数220に対応する。同様に、法134およびグループ要素133の両方が、非信頼データストア150から取得されるデータブロック152に関連するデータブロック素数220に関連付けられるように、グループ要素133は、データブロック選択131に基づき選択される。すなわち、グループ要素133は、法M134の素因数分解の素数135のそれぞれ1つを生成するように構成されている。
【0028】
図1に戻ると、ジェネレータ160は、いくつかの実装では、位取り基数(B)136も受け取りまたは決定する。位取り基数136は、サーバが保持する指数154の底(radixとも呼ばれる)である。すなわち、指数154は、2に等しい底(すなわち、2進数)またはそれ以上の任意の底で表すことができ、位取り基数136は、指数154を表すべくクライアント装置10またはサーバ111によって選択される。位取り基数136は、いくつかの例ではユーザ12によって選択され、他の例ではユーザ装置10は位取り基数136を自動的に決定する。追加の例では、サーバは位取り基数136を決定し、クライアント装置10に中継する。位取り基数136に加えて、ジェネレータ160は、位取りカウント138を受け取ってもよい。以下でより詳細に説明するように、位取りカウント138は、位取り基数136で指数154を表すのに必要な桁数212(図3)を表す。
【0029】
ジェネレータ160は、素因数135を用いて、一連の底値162、162a~162nを生成する。各底値162は、いくつかの例では、グループ要素133を位取り基数136でべき乗演算したものであり、これは、位取り記数法(位置数字システム)における桁位置における値に対応する。ここで図3を参照すると、位取り基数136が10に等しい場合(すなわち、10進数の位取り記数法を用いる場合)、例示的な指数154は「153729」に等しい。任意の位取り記数法(すなわち、位取り基数136)が選択され得ることが理解される。例えば、位取り記数法は、2進数、16進数、または10進数を備えてもよい。典型的には、指数154は極めて大きいが、本例では、分かりやすくするべく小さい数字が使用されている。選択された位取り基数136(ここでは「10」)で指数154を解釈したサーバ111は、位取りカウント138を決定する。すなわち、サーバ111は、位取り基数136で指数154を表すべく必要な桁数212を決定する。図示の例では、指数154(すなわち、「153729」)は、10進法(すなわち、b=「10」)では6桁212で表現できる。したがって、位取りカウント138は、(10進数では)「6」に相当する。選択された位取り基数136にかかわらず、指数は次の式(1)のように表すことができる。
【0030】
【数1】
【0031】
ここで、指数154は、10進法(すなわち、位取り基数が「10」に等しい)では、9+(2×10)+(7×100)+(3×1000)+(5×10000)+(1×100000)と表され、合計で「153729」となる。次に、図4を参照すると、式(1)470によって、gを次の式(2)のように書き換えることができる。
【0032】
【数2】
【0033】
式(2)480から明らかなように、gの一部は、サーバ保有の指数154を用いずに、計算されてもよい。即ち、ジェネレータ160は、一連の底値162を、一連の式(3)として生成してもよい。
【0034】
【数3】
【0035】
選択された位取り基数136は、一連の底値162a~162nにおける底値162の数(すなわち、変数m)に影響を与えるので、したがって、位取り基数136は、一連の底値162を送信する際の通信コストに直接影響を与えることが明らかである。より大きな位取り基数136はより困難な計算を必要とするので、位取り基数136の選択は、通信コストと計算コストとの間のトレードオフを直接提供する。いくつかの例では、位取り基数136(すなわち、位取り記数法)は、クライアント装置10とサーバ111との間の通信についての帯域幅制限に基づき、クライアント装置10またはサーバ111によって選択される。他の例では、位取り基数136は、選択された位取り記数法(位置数字システム)において指数154を表すべく必要な桁数212の、約半分になるように選択される。例えば、選択によって、5000個の位取り基数で表されたときに、10000桁を必要とする指数154が得られる場合がある。
【0036】
いくつかの実装形態では、サーバ111は、指数154の位取りカウント138を、ジェネレータ160に送信する。ジェネレータ160は、位取りカウント138を用いて、生成する底値162の数を決定してもよい。図示の例では、値「153729」が6つの桁数212で表されるので、ジェネレータ160は6つの底値162を生成してもよい。ジェネレータ160は素因数135にアクセスできるので、ジェネレータ160はサーバ保持の指数154を使用せずに(例えば、フェルマーの小定理を用いたり、オイラーの定理、カーマイケルの定理、または「中国の剰余定理」などの他の技術を用いたりして)、一連の底値162を効率的に生成する。ジェネレータ160は、一連の底値162をサーバ111に送信してもよい。
【0037】
いくつかの実施例では、一連の底値162は、一連の初期底値162A、162Aa~162Anを表す。すなわち、いくつかの例では、ジェネレータ160は、法134の素因数分解とグループ要素133とを用いて、一連の初期底値162Aを生成する。ジェネレータ160は、各初期底値162Aを法134によって(すなわち、法Mによって)削減することで、一連の法削減された底値162B、162Ba~162Bnを生成してもよい。したがって、各法削減された底値162Bは、法134によって削減された一連の初期底値162Aのうちのそれぞれの初期底値162Aを備えている。一連の初期底値162Aの代わりに、ジェネレータ160は、一連の法削減された底値162Bを、非信頼サーバ111に送信してもよい。すなわち、サーバ111に送信される一連の底値162は、一連の初期底値162Aと、または一連の法削減された底値162Bとのうちのいずれかを備えている。初期底値162Aを法Mで削減すると、サーバ11に送信される底値162Bのサイズが大幅に減少し、したがって一連の底値162Bをサーバ111に送信するのに必要な帯域幅が大幅に減少する。法演算はべき乗演算よりも計算が容易であるので、余分(エクストラ)な法演算を行うことは有利であると考えられる。
【0038】
図1に戻って、いくつかの実装では、サーバ111は、指数乗算器170を実行する。指数乗算器170は、クライアント装置10(例えば、ジェネレータ160)から一連の底値162を受け取るとともに、非信頼データストア150から指数154を受け取る。任意で、クライアント装置10はまた、結果192を生成する際に指数乗算器170が用いるべく、グループ要素133および/または法134をサーバ111に提供してもよい。いくつかの例では、指数乗算器170(または、サーバ111上で実行される別のモジュール)は、非信頼データストア150のデータブロック152から、指数154を決定する。指数乗算器170は、クライアントが生成した一連の底値162および指数154を用いて、gを計算する。いくつかの例では、一連の底値162の各底値162について、指数154のそれぞれの桁位置における値482(図4)を伴う底値162のべき乗演算を決定することと、指数154のそれぞれの桁位置における値482を伴う底値162のべき乗演算同士を一緒に乗算して結果192を生成することで、サーバ111は、非信頼サーバ111に記憶された指数154を伴うグループ要素133のべき乗演算を決定する。結果192は、被クエリ(照会された)要素(すなわち、データブロック選択131によって選択されたデータブロック152)に関連付けられる。
【0039】
サーバ111は現在、この計算をm個の底とm個の指数とを乗算する標準的な問題に一般化することができるので、サーバ111は結果192を効率的に決定するべく多くのアルゴリズムを利用することができる。例えば、サーバ111は、Pippenger(ピッペンガー)のべき乗演算アルゴリズムまたは他の加算鎖べき乗演算法を用いてもよい。gを決定した後、サーバ111は、gを結果192としてユーザ装置10に送り返してもよい。あるいは、サーバ111は、結果192を生成するべく法M(すなわち、法134)によってgを削減してもよく、これは結果192のサイズを大幅に削減することができるからであり、また前述したように法演算はべき乗演算よりも計算が容易であるからである。結果192は、非信頼データストア150に記憶されている指数154を伴うべき乗演算に基づく。すなわち、結果192は、データブロック選択131によって選択されたデータブロック152の値に対応する。
【0040】
システム100は、それぞれがlog(M)ビットで表される可能性のあるm個の指数を送信するだけなので、指数154全体をクライアント装置10に送信することに比べて、著しく削減された帯域幅使用を提供する。法134(M)は、典型的には、指数154よりもはるかに小さく、m×log(M)<Eである。さらに、非信頼サーバ111または非信頼データストア150に決して明らかにされない法134の素因数分解をユーザ装置10が知っていることを利用するので、サーバがグループ要素133のべき乗演算を完全に計算することに比べて、システム100は著しく削減された計算を提供する。このように、システムが大きな問題(すなわち、非常に大きな指数を用いたべき乗演算)をいくつかの小さな問題(すなわち、より小さな底値162の指数)に分割することで、クライアント装置10が法134の素因数分解を非信頼サーバ111に決して明らかにすることなく、システム100は、計算の全体的なコスト(漸近的(asymptotic)および具体的の両方)を削減する。システム100は、通信コスト(例えば、帯域幅)と計算コストとの間のバランスを提供するとともに、ユーザ装置10およびサーバ111の両方が効率的に計算できるようにする。例えば、システム100は、計算および通信の標準的なコストを用いて、より素朴なアプローチ(例えば、完全な指数154を送信すること、またはサーバがgを完全に計算することを許可すること)と比較して、10倍から100倍の間で改善することができる。本明細書の例はプライベート情報引出PIRに向けられているが、べき乗演算をアウトソーシングするための説明された方法は、他の多くの分野(例えば、ブロックチェーン)において有利である可能性がある。
【0041】
図5は、プライベートグループのべき乗演算をアウトソーシングするための例示的な方法500のフローチャートである。方法500は、動作502において、クライアント装置10のデータ処理ハードウェア122において、非信頼サーバ111、150に記憶されたクエリ要素152を引き出すクエリ命令130を実行する工程と、動作504において、非信頼サーバ111、150に記憶されたクエリ要素152に関連する法134の素因数分解を選択する工程とで始まる。素因数分解は、2つ以上の素数135を備えている。動作506において、方法500は、素因数分解の2つ以上の素数135のうちのそれぞれの1つを生成するように構成されたグループ要素133を取得する工程を備えている。動作508において、方法500は、法134の素因数分解とグループ要素133とを用いて一連の底値162を生成する工程と、動作510において、一連の底値162をクライアント装置10から非信頼サーバ111、150に送信する工程と、を備えている。非信頼サーバ111、150は、一連の底値162を用いて、非信頼サーバに記憶された指数154を伴う(による)グループ要素133のべき乗演算を決定するように構成される。動作512において、方法500は、データ処理ハードウェア122において、非信頼サーバ111、150から結果192を受け取る工程を備えている。結果192は、非信頼サーバ111、150に記憶されている指数154を伴う(による)、グループ要素133のべき乗演算に基づく。
【0042】
図6は、本書で説明したシステムおよび方法を実施するべく用いることができる例示的なコンピューティング装置600の概略図である。コンピューティング装置600は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことを意図している。ここに示されている構成要素、それらの接続および関係、ならびにそれらの機能は、例示的なものであることを意図しており、本書に記載および/または請求されている発明の実施を制限することを意図していない。
【0043】
コンピューティング装置600は、プロセッサ610と、メモリ620と、ストレージ装置630と、メモリ620および高速拡張ポート650に接続する高速インタフェース/コントローラ640と、および低速バス670およびストレージ装置630に接続する低速インタフェース/コントローラ660とを備えている。構成要素610、620、630、640、650、660のそれぞれは、様々なバスを用いて相互に接続されており、共通のマザーボードに搭載されていてもよいし、適宜他の態様で搭載されていてもよい。プロセッサ610は、高速インタフェース640に結合されたディスプレイ680などの外部入出力装置にグラフィカルユーザインタフェース(GUI)のためのグラフィカル情報を表示するべく、メモリ620またはストレージ装置630に記憶された命令を備えている、コンピューティング装置600内で実行するための命令を処理することができる。他の実装では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよびメモリの種類とともに、適宜使用されてもよい。また、複数のコンピューティング装置600が接続され、各装置が必要な動作の一部を提供してもよい(例えば、サーババンク、ブレードサーバグループ、またはマルチプロセッサシステムとして)。
【0044】
メモリ620は、コンピューティング装置600内の情報を非一時的に記憶する。メモリ620は、コンピュータ読取可能媒体、揮発性メモリユニット(複数可)、または不揮発性メモリユニット(複数可)であってもよい。不揮発性メモリ620は、コンピューティング装置600による使用のために、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラムの状態情報)を一時的または永久的に記憶するべく使用される物理装置であってもよい。不揮発性メモリの例には、フラッシュメモリおよびリードオンリーメモリ(ROM)/プログラマブルリードオンリーメモリ(PROM)/消去可能プログラマブルリードオンリーメモリ(EPROM)/電子的消去可能プログラマブルリードオンリーメモリ(EEPROM)(例えば、ブートプログラムなどのファームウェアに典型的に使用される)が含まれるが、これらに限定されない。揮発性メモリの例としては、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、フェイズチェンジメモリ(PCM)のほか、ディスクやテープなどが挙げられるが、これらに限定されるものではない。
【0045】
ストレージ装置630は、コンピューティング装置600に大容量記憶を提供することができる。いくつかの実施態様において、ストレージ装置630は、コンピュータ読取可能媒体である。様々な異なる実装において、ストレージ装置630は、フロッピー(登録商標)ディスク装置、ハードディスク装置、光ディスク装置、またはテープ装置、フラッシュメモリまたは他の類似のソリッドステートメモリ装置、またはストレージエリアネットワークまたは他の構成の装置を備えている、装置のアレイであってもよい。追加の実装では、コンピュータプログラム製品が、情報キャリア(担体)に有形的に具現化される。コンピュータプログラム製品は、実行されると上述したような1つまたは複数の方法を実行する命令を備えている。情報キャリアは、メモリ620、ストレージ装置630、またはプロセッサ610上のメモリなどの、コンピュータ読取可能媒体または機械読取可能媒体である。
【0046】
高速コントローラ640は、コンピューティング装置600のための帯域幅集中型の動作を管理し、低速コントローラ660は、より低い帯域幅集中型の動作を管理する。このような職務の割り当ては、例示的なものに過ぎない。いくつかの実装では、高速コントローラ640は、メモリ620に、ディスプレイ680(例えば、グラフィックプロセッサまたはアクセラレータを介して)に、および、様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート650に結合される。いくつかの実装では、低速コントローラ660は、ストレージ装置630および低速拡張ポート690に結合される。様々な通信ポート(例えば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、ワイヤレスイーサネット(登録商標))を備えてもよい低速拡張ポート690は、キーボード、ポインティング装置、スキャナ、またはスイッチやルータなどのネットワーク装置などの1つまたは複数の入出力装置に、例えばネットワークアダプタを介して結合されてもよい。
【0047】
コンピューティング装置600は、図に示すように、いくつかの異なる形態で実装されてもよい。例えば、標準的なサーバ600aまたはそのようなサーバ600aのグループにおける複数倍として、ラップトップコンピュータ600bとして、またはラックサーバシステム600cの一部として、実装されてもよい。
【0048】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子および/または光学回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現することができる。これらの様々な実装には、ストレージ装置、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受け取るとともに、それら装置にデータおよび命令を送信するように結合された、特殊用途または汎用用途の少なくとも1つのプログラマブルプロセッサを備えているプログラマブルシステム上で実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムでの実装が含まれ得る。
【0049】
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)は、コンピューティング装置にタスクを実行させるコンピュータソフトウェアを指すことがある。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と呼ばれることがある。アプリケーションの例としては、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワードプロセッシングアプリケーション、表計算アプリケーション、メッセージングアプリケーション、媒体ストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、ゲームアプリケーションなどがあるが、これらに限定されるものではない。
【0050】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとも呼ばれる)は、プログラマブルなプロセッサのための機械命令を備えており、高レベルの手続き型および/またはオブジェクト指向のプログラミング言語、および/またはアセンブリ/機械言語で実装することができる。本明細書において、「機械読取可能媒体」および「コンピュータ読取可能媒体」という用語は、機械読取可能信号として機械命令を受け取る機械読取可能媒体を備えている、機械命令および/またはデータをプログラマブルプロセッサに提供するべく使用される任意のコンピュータプログラム製品、非一時的なコンピュータ読取可能媒体、アパレイタスおよび/または装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理装置(PLD))を意味する。「機械読取可能信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するべく使用される任意の信号を指す。
【0051】
本明細書に記載されている処理および論理フローは、データ処理ハードウェアとも呼ばれる1つまたは複数のプログラマブルプロセッサが、1つまたは複数のコンピュータプログラムを実行して、入力データを操作して出力を生成することで機能を実行することができる。また、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの特殊な論理回路によっても処理や論理フローを実行することができる。コンピュータプログラムの実行に適したプロセッサには、一例として、汎用および特殊目的のマイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサが含まれる。一般に、プロセッサは、読み取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令とデータを受け取る。コンピュータの本質的な要素は、命令を実行するためのプロセッサと、命令やデータを記憶するための1つまたは複数のメモリ装置である。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量ストレージ装置、例えば、磁気ディスク、光磁気ディスク、または光ディスクを備えているか、またはそれらからデータを受け取るか、またはデータを転送するようにそれらに動作可能に結合されるか、または両方である。しかし、コンピュータはそのような装置を持っている必要はない。コンピュータプログラムの命令やデータを記憶するのに適したコンピュータ読取可能媒体には、あらゆる形態の不揮発性メモリ、媒体、およびメモリ装置が含まれ、例として、半導体メモリ装置、例えばEPROM、EEPROM、およびフラッシュメモリ装置、磁気ディスク、例えば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスクが挙げられる。プロセッサとメモリは、特別な目的のための論理回路によって補完されたり、組み込まれたりする。
【0052】
ユーザとのインタラクションを提供するべく、本開示の1つまたは複数の態様は、ユーザに情報を表示するためのディスプレイ装置、例えばCRT(cathode ray tube)、LCD(liquid crystal display)モニタ、またはタッチスクリーンと、任意でユーザがコンピュータに入力を提供することができるキーボードおよびポインティング装置、例えばマウスまたはトラックボールとを有するコンピュータ上で実装することができる。ユーザとのインタラクションを提供するべく同様に他の種類の装置が使用されることができ、例えば、ユーザに提供されるフィードバックは、視覚的なフィードバック、聴覚的なフィードバック、触覚的なフィードバックなど、あらゆる形態の感覚的なフィードバックであり、ユーザからの入力は、音響的な入力、音声的な入力、触覚的な入力など、あらゆる形態で受け取ることができる。さらに、コンピュータは、ユーザが用いる装置にドキュメントを送信したり、装置からドキュメントを受け取ったりすることで、ユーザと対話することができる。例えば、ユーザのクライアント装置上のウェブブラウザに、ウェブブラウザから受け取ったリクエストに応じてウェブページを送信することができる。
【0053】
多数の実施例を説明してきた。それにもかかわらず、本開示の精神および範囲から逸脱することなく、様々な変更を行うことができることが理解されるであろう。したがって、他の実施態様は、以下の請求項の範囲内にある。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2022-07-06
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
クライアント装置(10)のデータ処理ハードウェア(124)において、非信頼サーバ(111)に記憶されているクエリ要素(152)を引き出すべくクエリ命令(130)を実行する工程であって、前記クエリ命令(130)を実行する工程は、
前記非信頼サーバ(111)に記憶されている前記クエリ要素(152)に関連する法(134)の素因数分解を選択する工程であって、前記素因数分解は2つ以上の素数(135)を備えている、前記素因数分解を選択する工程と、
前記素因数分解の前記2つ以上の素数(135)のそれぞれ1つを生成するように構成されたグループ要素(133)を取得する工程と、
前記法(134)の前記素因数分解と前記グループ要素(133)とを用いて、一連の底値(162)を生成する工程であって、前記一連の底値(162)を生成する工程は、
前記非信頼サーバ(111)に記憶された指数(154)を表す位取り記数法(100)を取得する工程であって、前記位取り記数法(100)は前記クライアント装置(10)と前記非信頼サーバ(111)との間の通信についての帯域幅制限に基づき、前記クライアント装置(10)または前記非信頼サーバ(111)によって選択される、前記位取り記数法(100)を取得する工程と、
前記位取り記数法(100)における桁位置に対応するそれぞれの基数要素(136)による前記グループ要素(133)のべき乗演算に基づき、前記一連の底値(162)内の各底値(162)を生成する工程と
を備えている、前記一連の底値(162)を生成する工程と、
前記一連の底値(162)を前記クライアント装置(10)から前記非信頼サーバ(111)に送信する工程であって、前記非信頼サーバ(111)は、前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、前記一連の底値(162)を送信する工程と、
によって行われる、前記クエリ命令(130)を実行する工程と、および
前記データ処理ハードウェア(124)において、前記非信頼サーバ(111)から結果(192)を受け取る工程であって、前記結果(192)は、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算に基づく、前記結果(192)を受け取る工程と、
を備えている、方法(500)。
【請求項2】
前記一連の底値(162)を生成する工程は、
前記法(134)の素因数分解と前記グループ要素(133)とを用いて、一連の初期底値(162)を生成する工程と、
一連の法削減底値(162)を生成するべく、前記一連の初期底値(162)における各初期底値(162)を前記法(134)によって削減する工程であって、各法削減底値(162)は、前記法(134)によって削減された前記一連の初期底値(162)におけるそれぞれの初期底値(162)を備えている、各初期底値(162)を前記法(134)によって削減する工程と、
を備えており、
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程は、前記一連の法削減底値(162)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、前記一連の法削減底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、
請求項1に記載の方法(500)。
【請求項3】
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程はさらに、前記法(134)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、
前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定する工程と、
前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記法(134)で減らすことで、前記結果(192)を生成する工程と、
前記結果(192)を前記クライアント装置(10)に送信する工程と、
を実行するように構成されている、
請求項1または2に記載の方法(500)。
【請求項4】
前記方法(500)はさらに、前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記結果(192)が備えている場合に、前記データ処理ハードウェア(124)によって、前記法(134)で前記結果(192)を削減する工程を備えている、
請求項1~3のいずれか一項に記載の方法(500)。
【請求項5】
前記位取り記数法(100)は、2進法、16進法、または10進法のうちの1つを備えている、
請求項1~4のいずれか一項に記載の方法(500)。
【請求項6】
前記非信頼サーバ(111)に記憶されている前記指数(154)を表す前記位取り記数法(100)を取得する工程はさらに、前記位取り記数法(100)によって表される前記指数(154)の桁数(212)を取得する工程を備えており、
前記指数(154)の前記桁数(212)は、実行された前記クエリ命令(130)によって生成された前記一連の底値(162)のうちの底値(162)の数に等しい、
請求項1~4のいずれか一項に記載の方法(500)。
【請求項7】
前記クライアント装置(10)から受け取った前記一連の底値(162)の各底値(162)について、前記指数(154)のそれぞれの桁位置における値を伴う前記底値(162)の前記べき乗演算を決定する工程と、
前記指数(154)のそれぞれの前記桁位置における値を伴う前記底値(162)の前記べき乗演算同士を一緒に乗算する工程と、
によって、前記非信頼サーバ(111)は、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、
請求項1~のいずれか一項に記載の方法(500)。
【請求項8】
前記結果(192)は、被クエリ要素に関連付けられている、
請求項1~のいずれか一項に記載の方法(500)。
【請求項9】
前記クライアント装置(10)は、前記法(134)の前記素因数分解を、前記非信頼サーバ(111)に決して明らかにしない、
請求項1~のいずれか一項に記載の方法(500)。
【請求項10】
クライアント装置(10)のデータ処理ハードウェア(124)と、および
前記データ処理ハードウェア(124)に通信するメモリハードウェア(122)であって、前記データ処理ハードウェア(124)上で実行されると前記データ処理ハードウェア(124)に動作を実行させる命令を記憶する前記メモリハードウェア(122)と、
を備えているシステム(100)であって、前記動作は、
非信頼サーバ(111)に記憶されているクエリ要素(152)を引き出すべくクエリ命令(130)を実行する工程であって、前記クエリ命令(130)を実行する工程は、
前記非信頼サーバ(111)に記憶されている前記クエリ要素(152)に関連する法(134)の素因数分解を選択する工程であって、前記素因数分解は2つ以上の素数(135)を備えている、前記素因数分解を選択する工程と、
前記素因数分解の前記2つ以上の素数(135)のそれぞれ1つを生成するように構成されたグループ要素(133)を取得する工程と、
前記法(134)の前記素因数分解と前記グループ要素(133)とを用いて、一連の底値(162)を生成する工程であって、前記一連の底値(162)を生成する工程は、
前記非信頼サーバ(111)に記憶された指数(154)を表す位取り記数法(100)を取得する工程であって、前記位取り記数法(100)は前記クライアント装置(10)と前記非信頼サーバ(111)との間の通信についての帯域幅制限に基づき、前記クライアント装置(10)または前記非信頼サーバ(111)によって選択される、前記位取り記数法(100)を取得する工程と、
前記位取り記数法(100)における桁位置に対応するそれぞれの基数要素(136)による前記グループ要素(133)のべき乗演算に基づき、前記一連の底値(162)内の各底値(162)を生成する工程と、
を備えている、前記一連の底値(162)を生成する工程と、
前記一連の底値(162)を前記クライアント装置(10)から前記非信頼サーバ(111)に送信する工程であって、前記非信頼サーバ(111)は、前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、前記一連の底値(162)を送信する工程と、
によって行われる、前記クエリ命令(130)を実行する工程と、および
前記非信頼サーバ(111)から結果(192)を受け取る工程であって、前記結果(192)は、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算に基づく、前記結果(192)を受け取る工程と、を備えている、
システム(100)。
【請求項11】
前記一連の底値(162)を生成する工程は、
前記法(134)の前記素因数分解と前記グループ要素(133)とを用いて、一連の初期底値(162)を生成する工程と、
一連の法削減底値(162)を生成するべく、前記一連の初期底値(162)における各初期底値(162)を前記法(134)によって削減する工程であって、各法削減底値(162)は、前記法(134)によって削減された前記一連の初期底値(162)におけるそれぞれの初期底値(162)を備えている、各初期底値(162)を前記法(134)によって削減する工程と、
を備えており、
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程は、前記一連の法削減底値(162)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、前記一連の法削減底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、
請求項10に記載のシステム(100)。
【請求項12】
前記一連の底値(162)を前記非信頼サーバ(111)に送信する工程はさらに、前記法(134)を前記非信頼サーバ(111)に送信する工程を備えており、
前記非信頼サーバ(111)は、
前記一連の底値(162)を用いて、前記非信頼サーバ(111)に記憶された前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定する工程と、
前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記法(134)で減らすことで、前記結果(192)を生成する工程と、
前記結果(192)を前記クライアント装置(10)に送信する工程と、
を実行するように構成されている、
請求項10または11に記載のシステム(100)。
【請求項13】
前記動作はさらに、前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を前記結果(192)が備えている場合に、前記法(134)で前記結果(192)を削減する工程を備えている、
請求項1012のいずれか一項に記載のシステム(100)。
【請求項14】
前記位取り記数法(100)は、2進法、16進法、または10進法のうちの1つを備えている、
請求項10~13のいずれか一項に記載のシステム(100)。
【請求項15】
前記非信頼サーバ(111)に記憶されている前記指数(154)を表す前記位取り記数法(100)を取得する工程はさらに、前記位取り記数法(100)によって表される前記指数(154)の桁数(212)を取得する工程を備えており、
前記指数(154)の前記桁数(212)は、実行された前記クエリ命令(130)によって生成された前記一連の底値(162)のうちの底値(162)の数に等しい、
請求項10~14のいずれか一項に記載のシステム(100)。
【請求項16】
前記クライアント装置(10)から受け取った前記一連の底値(162)の各底値(162)について、前記指数(154)のそれぞれの桁位置における値を伴う前記底値(162)の前記べき乗演算を決定する工程と、
前記指数(154)のそれぞれの前記桁位置における値を伴う前記底値(162)の前記べき乗演算同士を一緒に乗算する工程と、
によって、前記非信頼サーバ(111)は、前記非信頼サーバ(111)に記憶されている前記指数(154)を伴う前記グループ要素(133)の前記べき乗演算を決定するように構成されている、
請求項10~15のいずれか一項に記載のシステム(100)。
【請求項17】
前記結果(192)は、被クエリ要素に関連付けられている、
請求項10~16のいずれか一項に記載のシステム(100)。
【請求項18】
前記クライアント装置(10)は、前記法(134)の前記素因数分解を前記非信頼サーバ(111)に明らかにすることはない、
請求項10~17のいずれか一項に記載のシステム(100)。
【国際調査報告】