特許第6490429号(P6490429)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 独立行政法人情報通信研究機構の特許一覧

<>
  • 特許6490429-サーバ、サービス方法 図000002
  • 特許6490429-サーバ、サービス方法 図000003
  • 特許6490429-サーバ、サービス方法 図000004
  • 特許6490429-サーバ、サービス方法 図000005
  • 特許6490429-サーバ、サービス方法 図000006
  • 特許6490429-サーバ、サービス方法 図000007
  • 特許6490429-サーバ、サービス方法 図000008
  • 特許6490429-サーバ、サービス方法 図000009
  • 特許6490429-サーバ、サービス方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6490429
(24)【登録日】2019年3月8日
(45)【発行日】2019年3月27日
(54)【発明の名称】サーバ、サービス方法
(51)【国際特許分類】
   H04L 9/30 20060101AFI20190318BHJP
   G06F 21/60 20130101ALI20190318BHJP
【FI】
   H04L9/00 663Z
   G06F21/60 320
【請求項の数】6
【全頁数】17
(21)【出願番号】特願2015-4024(P2015-4024)
(22)【出願日】2015年1月13日
(65)【公開番号】特開2016-131271(P2016-131271A)
(43)【公開日】2016年7月21日
【審査請求日】2017年12月15日
(73)【特許権者】
【識別番号】301022471
【氏名又は名称】国立研究開発法人情報通信研究機構
(74)【代理人】
【識別番号】110001092
【氏名又は名称】特許業務法人サクラ国際特許事務所
(72)【発明者】
【氏名】レ チュウ フォン
(72)【発明者】
【氏名】青野 良範
(72)【発明者】
【氏名】林 卓也
(72)【発明者】
【氏名】王 立華
【審査官】 中里 裕正
(56)【参考文献】
【文献】 特開2005−252384(JP,A)
【文献】 国際公開第2014/010202(WO,A1)
【文献】 一色寿幸,準同型暗号を用いたプライバシー保護型統計演算のソフトウェア実装報告,電子情報通信学会技術研究報告,2012年 2月23日,第111巻 第455号,p.135-140
【文献】 AONO, Y. et al.,Key-private proxy re-encryption under LWE,Lecuture Notes in Computer Science,2013年,Vol.8250,p.1-18
【文献】 GENTRY, C. et al.,Homomorphic Encryption from Learning with Erros: Conceptually-Simpler, Asymptotically-Faster, Attribute-Based,Lecuture Notes in Computer Science,2013年,Vol.8042,p.75-92
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/30
G06F 21/60
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段と、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付ける手段と、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出する手段と、
前記暗号化処理結果を前記クライアントに提供する手段と、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取る手段と、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換する手段と、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える手段とを備え、
前記準同型性が付与された前記暗号データが、次式:
=eA+pe
=eP+pe+m
c=(c,c
ここで、e、eは、それぞれ、成分数がnのベクトルで各成分は分散sの離散ガウス分布からサンプリングした整数。eは、成分数がlのベクトルで各成分は分散sの離散ガウス分布からサンプリングした整数。mは平文ベクトルで、成分数がlで各成分はpを法として表された整数。
n、s、l、p、A、Pは以下による。
nは正の整数。sは正の実数。lは正の整数。pは正の整数でpとqは互いに素。qは正の整数。Aは、n行n列の正方行列で、各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数。PはP=pR−ASによる。R、Sは、それぞれ、n行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数。
により生成された暗号データcであるサーバ。
【請求項2】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段と、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付ける手段と、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出する手段と、
前記暗号化処理結果を前記クライアントに提供する手段と、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取る手段と、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換する手段と、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える手段とを備え、
前記更新鍵が、前記公開鍵、該公開鍵に対応する秘密鍵、前記新公開鍵、および該新公開鍵に対応する新秘密鍵を用いて、次式:
X: nκ行nnew列の行列で各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数
Y=−XSnew+pE+Power2(S)
ここで、nは正の整数。κはκ=ceiling(logq)による。qは正の整数。nnewは、nより大の正の整数。Snewは、nnew行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数。lは正の整数。pは正の整数でpとqは互いに素。Eは、nκ行l列の行列で各要素は分散snewの離散ガウス分布からサンプリングした整数。snewは正の実数。Sは、n行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数。sは正の実数。Power2(S)はnκ行l列の行列で、Bits(c)・Power2(S)=c・SとなるようにSを変換する関数。Bits(c)は、成分数がnで各成分がqを法として表された整数であるベクトルcについてその各成分をビット化し、成分数がnκになったベクトル。そして、前記公開鍵が(A,P,n,s)、前記秘密鍵がS、前記新公開鍵が(Anew,Pnew,nnew,snew)、前記新秘密鍵がSnewである。Aは、n行n列の正方行列で各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数。Pは、n行l列の行列で各要素はqを法として表された整数。Anewは、nnew行nnew列の正方行列で各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数。Pnewは、nnew行l列の行列で各要素はqを法として表された整数。
により生成された鍵(X,Y)であるサーバ。
【請求項3】
記更新暗号データが、次式:
F=[Bits(c)X | Bits(c)Y+c
E(0)=f[Anew|Pnew]+p[f|f
ここで、(c,c)が前記暗号データである。cは、成分数がnのベクトルで各成分はqを法として表された整数。cは、成分数がlのベクトルで各成分はqを法として表された整数。Bits(c)は、成分数がnで各成分がqを法として表された整数であるベクトルcについてその各成分をビット化し、成分数がnκになったベクトル。f、fは、それぞれ、成分数がnnewのベクトルで各成分は分散snewの離散ガウス分布からサンプリングした整数。
により生成された暗号データF+E(0)である請求項2記載のサーバ。
【請求項4】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持し、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付け、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出し、
前記暗号化処理結果を前記クライアントに提供し、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取り、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換し、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換えるサービス方法であって、
前記準同型性が付与された前記暗号データが、次式:
=eA+pe
=eP+pe+m
c=(c,c
ここで、e、eは、それぞれ、成分数がnのベクトルで各成分は分散sの離散ガウス分布からサンプリングした整数。eは、成分数がlのベクトルで各成分は分散sの離散ガウス分布からサンプリングした整数。mは平文ベクトルで、成分数がlで各成分はpを法として表された整数。
n、s、l、p、A、Pは以下による。
nは正の整数。sは正の実数。lは正の整数。pは正の整数でpとqは互いに素。qは正の整数。Aは、n行n列の正方行列で、各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数。PはP=pR−ASによる。R、Sは、それぞれ、n行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数。
により生成された暗号データcである
サービス方法。
【請求項5】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持し、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付け、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出し、
前記暗号化処理結果を前記クライアントに提供し、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取り、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換し、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換えるサービス方法であって、
前記更新鍵が、前記公開鍵、該公開鍵に対応する秘密鍵、前記新公開鍵、および該新公開鍵に対応する新秘密鍵を用いて、次式:
X: nκ行nnew列の行列で各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数
Y=−XSnew+pE+Power2(S)
ここで、nは正の整数。κはκ=ceiling(logq)による。qは正の整数。nnewは、nより大の正の整数。Snewは、nnew行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数。lは正の整数。pは正の整数でpとqは互いに素。Eは、nκ行l列の行列で各要素は分散snewの離散ガウス分布からサンプリングした整数。snewは正の実数。Sは、n行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数。sは正の実数。Power2(S)はnκ行l列の行列で、Bits(c)・Power2(S)=c・SとなるようにSを変換する関数。Bits(c)は、成分数がnで各成分がqを法として表された整数であるベクトルcについてその各成分をビット化し、成分数がnκになったベクトル。そして、前記公開鍵が(A,P,n,s)、前記秘密鍵がS、前記新公開鍵が(Anew,Pnew,nnew,snew)、前記新秘密鍵がSnewである。Aは、n行n列の正方行列で各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数。Pは、n行l列の行列で各要素はqを法として表された整数。Anewは、nnew行nnew列の正方行列で各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数。Pnewは、nnew行l列の行列で各要素はqを法として表された整数。
により生成された鍵(X,Y)であるサービス方法。
【請求項6】
前記更新暗号データが、次式:
F=[Bits(c)X | Bits(c)Y+c
E(0)=f[Anew|Pnew]+p[f|f
ここで、(c,c)が前記暗号データである。cは、成分数がnのベクトルで各成分はqを法として表された整数。cは、成分数がlのベクトルで各成分はqを法として表された整数。Bits(c)は、成分数がnで各成分がqを法として表された整数であるベクトルcについてその各成分をビット化し、成分数がnκになったベクトル。f、fは、それぞれ、成分数がnnewのベクトルで各成分は分散snewの離散ガウス分布からサンプリングした整数。
により生成された暗号データF+E(0)である請求項5記載のサービス方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化されたデータを記憶保持し、要求に応じて当該暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバおよびサービス方法に係り、特に、暗号セキュリティのアップデートに対応するサーバおよびサービス方法に関する。
【背景技術】
【0002】
クラウドサーバのように、クライアントに代わってデータを記憶保持するサービスが存在する。これを利用し、クライアントが開示している公開鍵で暗号化したデータを第三者がサーバにアップロードすると、クライアントはこのデータをクラウド管理者に内容秘匿のまま自身が解読(復号)可能な暗号データとしてサーバ上に置かれた状態で管理できる。例えばデータとしてセンサー出力や医療検査結果など秘匿性の高いデータを扱う場合に都合がよい。
【0003】
また、クラウドサーバでは、クライアントのデータを記憶保持し、リソースが限られたクライアントからの要求に応じてこのデータを用いてクライアントに代わって計算処理を行いその結果をクライアントに提供するサービスが存在する(代理計算)。この場合、通常、データとして暗号データは扱えない。暗号データで計算処理を行うと当然、平文データでの処理結果と一般に一致しないためである。
【0004】
一方、暗号データでの計算処理が平文データでの処理結果と対応するような暗号データ(=準同型性のある暗号データ)は、現在いくつか知られている。かかる暗号データを用いれば、サーバで一定の計算処理を行っても結果を同じ形式の暗号データで得ることができ、これをクライアントに提供できる。クライアントは対応する秘密鍵でこれを復号できる。つまり、準同型性のある暗号データを利用すれば、サーバ上で行うデータの計算処理に関しても、これをクラウド管理者に内容秘匿でクライアントが管理できる。
【0005】
データの記憶保持および計算処理に関しては、現状、上記のように暗号データ(とりわけ準同型性を有する暗号データ)を用いてその利点を享受できるものの、一般に暗号データは危殆化する可能性を有しており、長期的視点ではセキュリティの更新(アップデート)が必要不可欠である。暗号データのセキュリティを更新するには、一旦平文に復号してから再度アップデートに対応した暗号化を行うか、平文に復号せず直接に暗号データに対してセキュリティ更新の処理を行うかのいずれかになる。いずれも処理負担が軽いとは限られず、クライアントではなくサーバの側で行うのが好ましいと考えられる。
【0006】
サーバの側で暗号データのセキュリティ更新の処理を行うと、前者の場合では、その処理時にクラウド管理者に対するデータ内容の秘匿性がくずれる。よって、データの記憶保持、計算処理、セキュリティ更新という一連のサービスで一貫した秘匿性を保てず、サービスとして不備が含まれたものになってしまう。そこで、準同型性を有する暗号データを扱ってなおかつ直接に暗号データにセキュリティ更新の処理ができるサーバが望まれる。このとき、セキュリティ更新の処理を行っても暗号データに準同型性が保たれることが前提になる。準同型性のない暗号データに更新されると、サーバ上で行うデータの計算処理に関するサービスがその後提供できなくなる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】US8,565,435特許明細書
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、暗号化されたデータを記憶保持し、要求に応じて当該暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバおよびサービス方法において、当該暗号データに対してセキュリティのアップデートが可能なサーバおよびサービス方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の一態様であるサーバは、クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段と、前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付ける手段と、前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出する手段と、前記暗号化処理結果を前記クライアントに提供する手段と、前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取る手段と、前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換する手段と、前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える手段とを具備する。前記準同型性が付与された前記暗号データが、次式:c=eA+pe、c=eP+pe+m、c=(c,c)により生成された暗号データcである。ここで、e、eはそれぞれ、成分数がnのベクトルで各成分は分散sの離散ガウス分布からサンプリングした整数、eは成分数がlのベクトルで各成分は分散sの離散ガウス分布からサンプリングした整数、mは平文ベクトルで、成分数がlで各成分はpを法として表された整数である。n、s、l、p、A、Pは以下による、nは正の整数、sは正の実数、lは正の整数、pは正の整数でpとqは互いに素、qは正の整数、Aはn行n列の正方行列で、各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数、PはP=pR−ASによる、R、Sはそれぞれ、n行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数である。
【0010】
このサーバは、クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段を有している。この手段自体は一般的な記憶保持手段で足りる。このような暗号データの記憶保持により、データの記憶保持およびその計算処理の点で、クラウド管理者を含めたクライアント以外の者への秘匿性を保つことができる。つまり、クライアントから、このサーバにある暗号データをソースとして行う計算処理の要求を受けてこれを準同型演算として行い、その結果として得た、同じ公開鍵で暗号化された形式を有する暗号化処理結果をクライアントに提供する、というサービスを行える。
【0011】
そして、暗号データに対してセキュリティ更新を行うための鍵である、上記公開鍵との関係性を有する更新鍵およびセキュリティ更新がされたあとのクライアントの公開鍵である新公開鍵をクライアントから受け取り、これらの更新鍵および新公開鍵を用いて、暗号データを、新公開鍵により暗号化された形式を有しかつもとの準同型性と同様の準同型性を有する更新暗号データに変換する。この後、暗号データを破棄して更新暗号データで置き換える、という動作を行う。このような一連の動作によって、暗号データのセキュリティ更新後もその準同型性を維持する。よって、要求に応じて暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバにおいて、暗号データに対するセキュリティのアップデートが可能である。
【0012】
また、別の態様であるサービス方法は、クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持し、前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付け、前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出し、前記暗号化処理結果を前記クライアントに提供し、前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取り、前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換し、前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える。
【0013】
このサービス方法は、上記のサーバに対応する方法である。
【発明の効果】
【0014】
本発明によれば、暗号化されたデータを記憶保持し、要求に応じて当該暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバおよびサービス方法において、当該暗号データに対してセキュリティのアップデートが可能なサーバおよびサービス方法を提供することができる。
【図面の簡単な説明】
【0015】
図1】一実施形態であるサーバ、およびこれを含むシステムを示す構成図。
図2図1中に示したパラメータ生成保持部31の機能を示す説明図。
図3図1中に示した鍵生成部32の機能を示す説明図。
図4図1中に示した処理部21の暗号化機能を示す説明図。
図5図1中に示した一般処理部35の復号機能を示す説明図。
図6図1中に示したサーバ10で行われ得る準同型演算についてその性質を示す説明図。
図7図1中に示したサーバ10で行われ得る準同型演算が可能な例として線形回帰計算を示す説明図。
図8図1中に示した更新鍵生成部36の機能を示す説明図。
図9図1中に示したセキュリティ更新処理部14の機能を示す説明図。
【発明を実施するための形態】
【0016】
以上を踏まえ、以下では本発明の実施形態を図面を参照しながら説明する。図1は、一実施形態であるサーバおよびこれを含むシステムを示している。同図において、サーバ10は例えばクラウドサーバであり、一方、クライアント30はサーバ10が提供するサービスを享受する機器である。ひとつのサーバ10にクライアント30は多数存在し得る(ほかのクライアントは不図示)。サーバ10とクライアント30とは管理主体が異なる前提で以下説明するが、データの暗号化により、第三者機器20からは、見掛け上サーバ10がクライアント30の一部であるかのようになっている。
【0017】
すなわち、クライアント30は、その管理するデータをサーバ10上では暗号化された状態で記憶保持させている。この暗号化に必要な公開鍵はクライアント30が開示している。したがって、クライアント30が開示している公開鍵で第三者機器20が暗号化したデータをサーバ10にアップロードすると、クライアント30はこのデータをクラウド管理者(サーバ10の管理者)に内容秘匿のまま自身が秘密鍵で解読(復号)可能な暗号データとしてサーバ10上に置かれた状態で管理できる。例えばデータとしてセンサー出力や医療検査結果など秘匿性の高いデータを扱う場合に都合がよい。
【0018】
サーバ10は、通信インターフェース11、暗号データ記憶保持部12、計算処理部(算出部)13、セキュリティ更新処理部(変換部、置き換え部)14を有する。クライアント30は、パラメータ生成保持部31、鍵生成部32、鍵保持部33、通信インターフェース34、一般処理部35(要求内容生成、その結果の復号を行う)、更新鍵生成部36を有する。第三者機器20は、処理部(暗号化部)21、通信インターフェース22を有する。
【0019】
以下、サーバ10、クライアント30、および第三者機器20の各内部構成についてその機能を説明するが、理解の便宜のため一連の動作に沿って説明するので、必ずしも機器ごとにまとまった説明にならない点を断っておく。また、機能ブロック図として描いた図1を中心に参照して説明するが、適宜、説明図である図2ないし図9を参照する。
【0020】
(公開鍵および秘密鍵の生成)
公開鍵および秘密鍵の生成のため、まず、クライアント30は、パラメータ生成保持部31によりパラメータ(q,l,p)を生成する。qは正の整数、lは正の整数、pは正の整数で、pとqは互いに素(つまり最小公倍数が1)である。lは、平文ベクトルの成分数として設定された数である。平文ベクトルは、成分数がlで各成分がpを法として表された整数とする。以上図2を参照することができる。生成されたパラメータはパラメータ生成保持部31に保持されるとともに、鍵生成部32に渡される。なお、「ベクトル」は断りのない限り横ベクトルを意味する(以下でも同様)。
【0021】
鍵生成部32は、パラメータ生成部31から渡されたパラメータ(q,l,p)に基づき公開鍵および秘密鍵を生成する。手順は以下であり図3を参照できる。まず、sを決めnを決める。sは正の実数で、離散ガウス分布の標準偏差として設定する。nは正の整数でセキュリティ(安全性)に関連する数であり、q、s、nで暗号としての安全性が定まる。ちなみに、本実施形態で例えばq=2114、s=8.0、n=2661とした場合には、80ビットセキュリティの暗号が得られる。一般にNビットセキュリティの暗号とは、2回の解読計算で鍵(秘密鍵)が見つかる暗号である。
【0022】
次に、鍵生成部32は、正規ランダム行列R、Sを生成する。すなわち、R、Sは、それぞれ、n行l列の行列で各要素は分散sの離散ガウス分布からサンプリングした整数である。加えて、鍵生成部32は、一様ランダム行列Aを生成する。すなわち、Aは、n行n列の正方行列で、各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数である。
【0023】
さらに、鍵生成部32はPを計算する。計算式はP=pR−ASである。Pは、n行l列の行列で、各要素はqを法として表された整数になる。以上の一連の手順により、公開鍵は(A,P,n,s)として、秘密鍵はSとして、それぞれ生成される。生成された各鍵は鍵保持部33に渡され、そこで記憶保持される。秘密鍵Sは、クライアント30の外に流出しないように管理される一方、公開鍵(A,P,n,s)は、第三者機器20のため開示される。第三者機器20は、例えば医療機関やエネルギー提供会社などの秘匿性のあるデータを取り扱う者が有する機器を想定することができる。
【0024】
(暗号化)
図1に示すシステムでは、データの暗号化を公開鍵でクライアント30が行い、その結果である暗号データをサーバ10に送ってサーバ10上に記憶保持させることができる。同様に、第三者機器20がその有する、秘匿が必要な平文のデータをクライアント30の公開鍵で暗号化し、その結果である暗号データをサーバ10に送ってサーバ10上に記憶保持させることもできる。暗号化の処理自体は両者とも変わらないが、後者の動作として以下説明する。手順は以下であり図4を参照できる。
【0025】
まず、第三者機器20の処理部21はノイズe、eを生成する。e、eは、それぞれ、成分数がnのベクトルで、各成分は分散sの離散ガウス分布からサンプリングした整数である。加えて、処理部21はノイズeを生成する。eは、成分数がlのベクトルで、各成分は分散sの離散ガウス分布からサンプリングした整数である。
【0026】
次に、処理部21はcを計算する。計算式はc=eA+peである。cは、成分数がnのベクトルで、各成分はqを法として表された整数になる。加えて、処理部21はcを計算する。計算式はc=eP+pe+mである。mは第三者機器20において生成された平文ベクトルで、成分数がlで各成分はpを法として表された整数である。cは、成分数がlのベクトルで各成分はqを法として表された整数になる。
【0027】
以上の一連の手順により、暗号データcはc=(c,c)として生成される。なお、第三者機器20は、以上の一連の手順で公開鍵(A,P,n,s)が必要であるが、これ以外に少なくともパラメータ(l,p)が必要である。パラメータ(l,p)は第三者機器20において前提として了解されているものとする。生成された暗号データは、処理部21から通信インターフェース22に渡され、通信インターフェース22は、渡された暗号データを通信路を介してサーバ10に向けて送る。
【0028】
サーバ10は、第三者機器20から送られてきた暗号データを通信インターフェース11で受け取る。通信インターフェース11で受け取られた暗号データは、通信インターフェース11から暗号データ記憶保持部12に渡される。暗号データ記憶保持部12は、通信インターフェース11から渡された暗号データを記憶保持する。この暗号データは、すなわち、サーバ10の管理者に内容秘匿のままクライアント30のみが復号可能な暗号データとしてサーバ10上に置かれたデータになっている。
【0029】
(復号)
図1に示すシステムで復号はもっぱらクライアント30で行われる。これにより、サーバ10の管理者に対するデータの秘匿性が保たれる。単に復号する場合の動作を以下説明する。暗号データ記憶保持部12に記憶保持された暗号データをクライアント30が復号して平文データに戻す場合には、クライアント30は、その暗号データc=(c,c)を提出することの要求をサーバ10に対して行う。そのため、その旨の情報を一般処理部35で生成する。この要求の旨の情報は、一般処理部35から通信インターフェース34に渡される。
【0030】
通信インターフェース34に渡された要求の旨の情報は、通信インターフェース34から通信路を介してサーバ10に送られる。サーバ10は、クライアント30から送られてきた要求の旨の情報を通信インターフェース11で受け取る。通信インターフェース11で受け取られた要求の旨の情報は通信インターフェース11から計算処理部13に渡される。計算処理部13は、渡された要求の内容に従い、暗号データ記憶処理部12から該当の暗号データc=(c,c)を取り出す。そして、計算処理部13は、取り出した暗号データに対してこの場合特に処理を行わずに通信インターフェース11に渡す。なお、一般には計算処理部13が暗号データに対して一定の計算処理を行う場合もあるがその場合については後述する。
【0031】
通信インターフェース11に渡された暗号データは、通信インターフェース11から通信路を介してクライアント30に送られる。クライアント30は、サーバ10から送られてきた暗号データを通信インターフェース34で受け取る。通信インターフェース34で受け取られた暗号データc=(c,c)は通信インターフェース34から一般処理部35に渡される。
【0032】
一般処理部35は、暗号データc=(c,c)の復号動作として以下を行う。この点は図5を参照できる。まず、mバーを計算する。計算式は、mバー=m=cS+cである。Sは前述してあるように秘密鍵であり、鍵保持部33に保持されている。次に平文ベクトルmを計算する。計算式は、m=mバー mod pである。mは復号で得られた平文ベクトル(=復号結果)になる。当然ながら、この復号は秘密鍵Sを保持しているクライアント30以外では実行できない。秘密鍵はクライアント30の外に流出しないように管理されている。
【0033】
以上により、サーバ10が行うクライアント30のためのデータの記憶保持というサービスの点で、サーバ管理者に対するデータの秘匿性が保たれることを説明した。
【0034】
(暗号データの性質)
次に、上記で説明したように生成された暗号データに特有な性質について説明する。図2図3図4に示された手順で生成された暗号データには、一定の準同型性がある。そのひとつは加算の準同型性であり、一般に、c+c’=Enc(pk,m+m’) が成り立っている。ここで「Enc」は、上記で説明した暗号化を平文データm+m’に対して公開鍵pkで行うことの関数を意味し、ここで公開鍵pk(public key)=(A,P,n,s)である。
【0035】
つまり、暗号データc、c’とその対応する平文データm、m’とで、暗号データで行った加算c+c’の演算結果は、平文データで行った加算m+m’の演算結果を暗号化したものに等しくなっている。この点は、図2図4を参照して追ってみれば確かめることができる。
【0036】
かかる暗号データであることから、サーバ10で加算の演算処理を行うとその結果を、同じ形式で暗号化されたデータとしてクライアント30に提供できる。クライアント30は対応する秘密鍵Sでこれを復号できる。つまり、一定の準同型性のある暗号データを利用することにより、サーバ10上で行うデータの一定の演算処理に関しても、これをサーバ管理者に内容秘匿でクライアント30が管理できる。
【0037】
図2図3図4に示された手順で生成された暗号データには、もうひとつの準同型性が備わっている。すなわち、この暗号データは、一般にcc’=Enc(pk,mm’)が成り立っている。ここで、c、mはそれぞれ、横ベクトルc、mを縦ベクトルに直したものである。つまり、暗号データc、c’とその対応する平文データm、m’とで、暗号データで行ったテンソル積cc’(=n+l行n+l列の正方行列)の演算結果は、平文データで行ったテンソル積mm’の演算結果を暗号化したもの(=n+l行n+l列の正方行列)に、要素ごとに等しくなっている。この点は、図2図4を参照して追ってみれば確かめることができる。
【0038】
よって、このような乗算の準同型性のある暗号データを利用することにより、サーバ10上で行う積を求める演算処理に関しても、これをサーバ管理者に内容秘匿でクライアント30が管理できる。クライアント30はその演算結果を秘密鍵Sで復号できる。
【0039】
以上の点をまとめると、図2図3図4に示された手順で生成された暗号データは、2次形式の計算を行う処理についてサーバ10で扱うことができることを意味する。サーバ10でこのような処理を行うと、その結果はもとの公開鍵で暗号化された形式を有する、平文データで同様な処理を行った結果に対応したデータになる。したがって、クライアント30に代わって計算処理をサーバ10で行いその結果をクライアント30に提供しクライアント30はこれを秘密鍵で復号できる。すなわち、2次形式の計算処理に関して、これをサーバ管理者に内容秘匿でクライアント30が管理できることになる。
【0040】
以上説明した準同型性と2次形式の計算との関係をもう一度説明したものが図6である。図6は以上の点から容易に理解できると思われるが簡単におさらいする。まず、図2図4によれば、平文ベクトルm、m’とその暗号文ベクトルc、c’とに関して以下が成り立つ。
c+c’=Enc(pk,m+m’) ・・・加算の準同型性
c’=Enc(pk,mm’) ・・・テンソル積の乗算の準同型性
【0041】
次に、例えば、平文データx、yの各暗号データEnc(pk,x)、Enc(pk,y)を用いた2次形式の計算:

Σ a・Enc(pk,x)・Enc(pk,y) (iはデータ番号)
i=1
の結果は、次式、平文データを用いた2次形式の計算結果を暗号化したものに等しい。

Enc(pk,Σ a・x
i=1
【0042】
したがって、サーバ管理者に対して平文データx、yを秘匿したままサーバ10で計算処理を行い、その後クライアント30は復号でその計算結果を得ることができる。
【0043】
(準同型演算が適用可能な例)
サーバ10で行う準同型演算が適用可能な例を図7を参照して説明する。同図に示すように平文データ列(xx(i),yy(i))を考える(ここで、iはデータ番号で1〜N、ベクトルxx(i)は成分数がn、yy(i)はスカラー)。平文データ列(xx(i),yy(i))に想定される関係式として以下:
yy(i)=θ+θ・xx(i)+ε(i)=hθ(xx(i))+ε(i) (すなわち、ほぼ線形な関係式。ε(i)は誤差)
が成り立つとする。
【0044】
線形回帰計算として、平文データ列(xx(i),yy(i))から(θ,θ)を求めるには、以下のようにすればよい。すなわち、
与えられた初期偏回帰係数(θ,θ,・・・,θnf,)=(θ,θ)
与えられた重み係数 α
を用いて、次の反復計算を行う。
j=0〜nについて

θ ← θ−(α/N)Σ (hθ(xx(i))−yy(i))xx(i)
i=1
(xx(i)は、第j成分)
を(θ,θ)が収束するまで行う。収束した(θ,θ)が解答である。
【0045】
以上の線形回帰計算は、その必要な計算が2次形式の計算処理に限られるため、平文データに代えて暗号データを用いて処理しても平文データに対応した結果が得られる。すなわち、クライアント30に代わってサーバ10で計算処理(暗号データを用いた計算処理)を行いその結果をクライアント30に提供することにより、クライアント30は意図する解答を復号で得ることができる。
【0046】
図2図4に示した暗号化による暗号データにおいて適用可能な処理の例には、上記以外にも種々考えられる。例えば、mとm’とのハミング距離の計算も可能である。ここでm、m’には具体的にそれぞれ例えば生体認証情報の場合を挙げることができる。サーバ10で準同型演算が可能な暗号データが取り扱われる場合、リソースが限られたクライアント30からの要求に応じてクライアント30に代わって計算処理を行いその結果をクライアント30に提供するサービスを、データ内容秘匿のまま行うことができる。
【0047】
クライアント30からサーバ10に対して計算処理を要求してその結果をクライアント30が得るまでの手順を以下補足的に説明する。まず、クライアント30は、暗号データをソースとして行う特定の計算処理とその結果の提供とをサーバ10に要求するため、その旨の要求情報を一般処理部35で生成する。この要求情報は、一般処理部35から通信インターフェース34に渡される。
【0048】
通信インターフェース34に渡された要求情報は、通信インターフェース34から通信路を介してサーバ10に送られる。サーバ10は、クライアント30から送られてきた要求情報を通信インターフェース11で受け付ける。通信インターフェース11で受け付けられた要求情報は通信インターフェース11から計算処理部13に渡される。計算処理部13は、渡された要求情報に従い、暗号データ記憶処理部12から計算に必要な暗号データを取り出してこれをソースとして準同型演算で計算処理し結果を算出する。そして、計算処理部13は、その結果である、公開鍵で暗号化された形式を有するデータを通信インターフェース11に渡す。
【0049】
通信インターフェース11に渡された暗号データは、通信インターフェース11から通信路を介してクライアント30に送られ、提供される。クライアント30は、サーバ10から送られてきた暗号データを通信インターフェース34で受け取る。通信インターフェース34で受け取られた暗号データは通信インターフェース34から一般処理部35に渡される。一般処理部35は、通信インターフェース34から渡された暗号データを、すでに説明した手順により復号する。
【0050】
以上により、準同型性のある暗号データを利用し、サーバ10上で行うデータの計算処理に関して、これをサーバ管理者に内容秘匿でクライアント30が管理できる点を説明した。
【0051】
(更新鍵の生成)
次に、暗号データ記憶保持部12に記憶保持された暗号データについてそのセキュリティを更新する手順を説明する。セキュリティ更新が必要になる理由は、一般に暗号データは長期的視点で危殆化する可能性を有しているためである。暗号データのセキュリティを更新するには、一般に、一旦平文データに復号してから再度アップデートに対応した暗号化を行うか、平文データに復号せず直接に暗号データに対してセキュリティ更新の処理を行うかのいずれかになる。いずれも処理負担が軽いとは限られず、クライアント30ではなくサーバ10の側で処理を行う方が好ましいと考えられる。
【0052】
サーバ10の側で暗号データのセキュリティ更新の処理を行うと、前者の場合では、その処理時にサーバ管理者に対するデータ内容の秘匿性がくずれる。よって、データの記憶保持、計算処理、セキュリティ更新という一連のサービスで一貫した秘匿性を保てず、サービスとして不備が含まれたものになってしまう。そこで、このサーバ10は、準同型性を有する暗号データを扱ってなおかつ直接に暗号データにセキュリティ更新の処理ができるように構成されている。そして、セキュリティ更新の処理を行っても暗号データの準同型性が保たれる。
【0053】
セキュリティ更新のための動作はクライアント30での更新鍵の生成から始まる。以下の手順は図8を参照することができる。まず、クライアント30の鍵生成部32は、公開鍵(A,P,n,s)と同様に生成させた新公開鍵(Anew,Pnew,nnew,snew)、および秘密鍵Sと同様に生成させた新秘密鍵Snewを用意する。この動作は図3を参照できる。nnewは正の整数でnより大(=セキュリティの向上ため)である。新公開鍵および新秘密鍵は、鍵生成部32から鍵保持部33に渡されて保持され、さらに鍵保持部33から更新鍵生成部36に渡される。なお、公開鍵(A,P,n,s)および秘密鍵Sも鍵保持部33から更新鍵生成部36に渡される。
【0054】
更新鍵生成部36は、まず、κ=ceiling(logq)を計算する。ceiling( )は天井関数であり、括弧内の数をそれ以上の最小の整数に変換する関数である。次に、更新鍵生成部36は、ランダム行列X、Eを生成する。すなわち、Xは、nκ行nnew列の行列で各要素は整数の集合(0,…,q−1)から無作為にサンプリングした整数である。Eは、nκ行l列の行列で各要素は分散snewの離散ガウス分布からサンプリングした整数である。
【0055】
さらに、更新鍵生成部36はYを計算する。計算式はY=−XSnew+pE+Power2(S)である。ここで、Power2(S)はnκ行l列の行列で、Bits(c)・Power2(S)=c・SとなるようにSを変換する関数である。さらにここで、Bits(c)は、成分数がnで各成分がqを法として表された整数であるベクトルcについてその各成分をビット化し、成分数がnκになったベクトルである。Yは、nκ行l列の行列で各要素はqを法として表された整数になる。
【0056】
以上の一連の手順により、更新鍵生成部36で更新鍵は(X,Y)として生成される。この更新鍵は、公開鍵と一定の関係性を有するように生成されている。そして、この更新鍵、および鍵保持部33に保持された新公開鍵は、それぞれ、更新鍵生成部36、鍵保持部33から通信インターフェース34に渡される。通信インターフェース34に渡された更新鍵および新公開鍵は、通信インターフェース34から通信路を介してサーバ10に送付される。
【0057】
サーバ10は、クライアント30から送付されてきた更新鍵および新公開鍵を通信インターフェース11で受け取る。通信インターフェース11で受け取られた更新鍵および新公開鍵は、通信インターフェース11からセキュリティ更新処理部14に渡される。セキュリティ更新処理部14は、渡された更新鍵および新公開鍵を用いて、暗号データ記憶処理部12に記憶保持された暗号データに対してセキュリティを更新する処理を行う(以下で説明する)。
【0058】
(セキュリティ更新)
サーバ10は、クライアント30から送付されてきた更新鍵(X,Y)および新公開鍵(Anew,Pnew,nnew,snew)を用いて暗号データ記憶処理部12に記憶保持された暗号データに対してセキュリティを更新する処理を行う。この動作はセキュリティ更新処理部14による。セキュリティ更新処理部14は、暗号データに行うセキュリティ更新として、更新鍵および新公開鍵を用いて、暗号データを、新公開鍵により暗号化された形式を有しかつもとの準同型性と同様の準同型性を有するデータである更新暗号データに変換する。手順は以下であり図9を参照できる。
【0059】
まず、セキュリティ更新処理部14は、ノイズf、fを生成する。f、fは、それぞれ、成分数がnnewのベクトルで、各成分は分散snewの離散ガウス分布からサンプリングした整数である。加えて、セキュリティ更新処理部14は、ノイズfを生成する。fは、成分数がlのベクトルで、各成分は分散snewの離散ガウス分布からサンプリングした整数である。
【0060】
次に、セキュリティ更新処理部14は、Fを計算する。計算式はF=[Bits(c)X | Bits(c)Y+c]である。ここで記号「|」は、行列の連結を意味する。Fは、成分数がnnew+lのベクトルで、各成分はqを法として表された整数になる。c、cについては、暗号データ(c,c)を暗号データ記憶処理部12から取り出して用いる。さらに、セキュリティ更新処理部14は、ゼロの暗号データE(0)を計算する。計算式は、E(0)=f[Anew|Pnew]+p[f|f](図4参照)である。
【0061】
以上の一連の手順により、セキュリティ更新後の暗号データである更新暗号データcnew=(cnew1,cnew2)は、F+E(0)として算出される。もとの暗号データc=(c,c)から変換され算出された更新暗号データcnew=(cnew1,cnew2)は、セキュリティ更新処理部14から暗号データ記憶保持部12に渡される。セキュリティ更新処理部14は、もとの暗号データを破棄して更新暗号データで置き換える。
【0062】
以上説明した、暗号データから更新暗号データへの変換は、暗号データとしてもとの準同型性が保たれたものになる。この点は、図8図9、および図2図4を参照して追ってみれば確かめることができる。よって、要求に応じて暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバ10において、暗号データに対するセキュリティのアップデートが可能である。
【0063】
そして、このセキュリティ更新は、暗号データに対してサーバ10の動作として行われるので、リソースが限られているクライアント30の処理負担ならない。また、このセキュリティ更新は、暗号解読技術が進展して安全性が低下しても何度も繰り返すことができる。もとよりサーバ10として、データの記憶保持、計算処理、セキュリティ更新という一連のサービスで、一貫して秘匿性が保たれているという大きな効果を有している。なお、セキュリティ更新がされたあとは、当然ながらクライアント30は、これまでの公開鍵に代わり新公開鍵を開示し、その結果、その後第三者機器20は、新公開鍵を用いて暗号化が必要な平文データを暗号化しこれをサーバ10に送る(アップロードする)ことになる。
【0064】
以上、本発明の実施形態を説明したが、実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0065】
10…サーバ、11…通信インターフェース、12…暗号データ記憶保持部、13…計算処理部(算出部)、14…セキュリティ更新処理部(変換部、置き換え部)、20…第三者機器、21…処理部(暗号化部)、22…通信インターフェース、30…クライアント、31…パラメータ生成保持部、32…鍵生成部、33…鍵保持部、34…通信インターフェース。35…一般処理部(要求内容生成部、結果の復号部)、36…更新鍵生成部。
図1
図2
図3
図4
図5
図6
図7
図8
図9