(57)【特許請求の範囲】
【請求項１】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段と、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付ける手段と、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出する手段と、
前記暗号化処理結果を前記クライアントに提供する手段と、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取る手段と、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換する手段と、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える手段とを備え、
前記準同型性が付与された前記暗号データが、次式：
ｃ１＝ｅ１Ａ＋ｐｅ２
ｃ２＝ｅ１Ｐ＋ｐｅ３＋ｍ
ｃ＝（ｃ１，ｃ２）
ここで、ｅ１、ｅ２は、それぞれ、成分数がｎのベクトルで各成分は分散ｓ２の離散ガウス分布からサンプリングした整数。ｅ３は、成分数がｌのベクトルで各成分は分散ｓ２の離散ガウス分布からサンプリングした整数。ｍは平文ベクトルで、成分数がｌで各成分はｐを法として表された整数。
ｎ、ｓ、ｌ、ｐ、Ａ、Ｐは以下による。
ｎは正の整数。ｓは正の実数。ｌは正の整数。ｐは正の整数でｐとｑは互いに素。ｑは正の整数。Ａは、ｎ行ｎ列の正方行列で、各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数。ＰはＰ＝ｐＲ−ＡＳによる。Ｒ、Ｓは、それぞれ、ｎ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数。
により生成された暗号データｃであるサーバ。
【請求項２】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段と、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付ける手段と、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出する手段と、
前記暗号化処理結果を前記クライアントに提供する手段と、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取る手段と、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換する手段と、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える手段とを備え、
前記更新鍵が、前記公開鍵、該公開鍵に対応する秘密鍵、前記新公開鍵、および該新公開鍵に対応する新秘密鍵を用いて、次式：
Ｘ：  ｎκ行ｎｎｅｗ列の行列で各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数
Ｙ＝−ＸＳｎｅｗ＋ｐＥ＋Ｐｏｗｅｒ２（Ｓ）
ここで、ｎは正の整数。κはκ＝ｃｅｉｌｉｎｇ（ｌｏｇ２ｑ）による。ｑは正の整数。ｎｎｅｗは、ｎより大の正の整数。Ｓｎｅｗは、ｎｎｅｗ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数。ｌは正の整数。ｐは正の整数でｐとｑは互いに素。Ｅは、ｎκ行ｌ列の行列で各要素は分散ｓｎｅｗ２の離散ガウス分布からサンプリングした整数。ｓｎｅｗは正の実数。Ｓは、ｎ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数。ｓは正の実数。Ｐｏｗｅｒ２（Ｓ）はｎκ行ｌ列の行列で、Ｂｉｔｓ（ｃ）・Ｐｏｗｅｒ２（Ｓ）＝ｃ・ＳとなるようにＳを変換する関数。Ｂｉｔｓ（ｃ）は、成分数がｎで各成分がｑを法として表された整数であるベクトルｃについてその各成分をビット化し、成分数がｎκになったベクトル。そして、前記公開鍵が（Ａ，Ｐ，ｎ，ｓ）、前記秘密鍵がＳ、前記新公開鍵が（Ａｎｅｗ，Ｐｎｅｗ，ｎｎｅｗ，ｓｎｅｗ）、前記新秘密鍵がＳｎｅｗである。Ａは、ｎ行ｎ列の正方行列で各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数。Ｐは、ｎ行ｌ列の行列で各要素はｑを法として表された整数。Ａｎｅｗは、ｎｎｅｗ行ｎｎｅｗ列の正方行列で各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数。Ｐｎｅｗは、ｎｎｅｗ行ｌ列の行列で各要素はｑを法として表された整数。
により生成された鍵（Ｘ，Ｙ）であるサーバ。
【請求項３】
前記更新暗号データが、次式：
Ｆ＝［Ｂｉｔｓ（ｃ１）Ｘ ｜ Ｂｉｔｓ（ｃ１）Ｙ＋ｃ２］
Ｅ（０）＝ｆ１［Ａｎｅｗ｜Ｐｎｅｗ］＋ｐ［ｆ２｜ｆ３］
ここで、（ｃ１，ｃ２）が前記暗号データである。ｃ１は、成分数がｎのベクトルで各成分はｑを法として表された整数。ｃ２は、成分数がｌのベクトルで各成分はｑを法として表された整数。Ｂｉｔｓ（ｃ１）は、成分数がｎで各成分がｑを法として表された整数であるベクトルｃ１についてその各成分をビット化し、成分数がｎκになったベクトル。ｆ１、ｆ２は、それぞれ、成分数がｎｎｅｗのベクトルで各成分は分散ｓｎｅｗ２の離散ガウス分布からサンプリングした整数。
により生成された暗号データＦ＋Ｅ（０）である請求項２記載のサーバ。
【請求項４】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持し、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付け、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出し、
前記暗号化処理結果を前記クライアントに提供し、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取り、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換し、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換えるサービス方法であって、
前記準同型性が付与された前記暗号データが、次式：
ｃ１＝ｅ１Ａ＋ｐｅ２
ｃ２＝ｅ１Ｐ＋ｐｅ３＋ｍ
ｃ＝（ｃ１，ｃ２）
ここで、ｅ１、ｅ２は、それぞれ、成分数がｎのベクトルで各成分は分散ｓ２の離散ガウス分布からサンプリングした整数。ｅ３は、成分数がｌのベクトルで各成分は分散ｓ２の離散ガウス分布からサンプリングした整数。ｍは平文ベクトルで、成分数がｌで各成分はｐを法として表された整数。
ｎ、ｓ、ｌ、ｐ、Ａ、Ｐは以下による。
ｎは正の整数。ｓは正の実数。ｌは正の整数。ｐは正の整数でｐとｑは互いに素。ｑは正の整数。Ａは、ｎ行ｎ列の正方行列で、各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数。ＰはＰ＝ｐＲ−ＡＳによる。Ｒ、Ｓは、それぞれ、ｎ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数。
により生成された暗号データｃである
サービス方法。
【請求項５】
クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持し、
前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付け、
前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出し、
前記暗号化処理結果を前記クライアントに提供し、
前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取り、
前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換し、
前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換えるサービス方法であって、
前記更新鍵が、前記公開鍵、該公開鍵に対応する秘密鍵、前記新公開鍵、および該新公開鍵に対応する新秘密鍵を用いて、次式：
Ｘ：  ｎκ行ｎｎｅｗ列の行列で各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数
Ｙ＝−ＸＳｎｅｗ＋ｐＥ＋Ｐｏｗｅｒ２（Ｓ）
ここで、ｎは正の整数。κはκ＝ｃｅｉｌｉｎｇ（ｌｏｇ２ｑ）による。ｑは正の整数。ｎｎｅｗは、ｎより大の正の整数。Ｓｎｅｗは、ｎｎｅｗ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数。ｌは正の整数。ｐは正の整数でｐとｑは互いに素。Ｅは、ｎκ行ｌ列の行列で各要素は分散ｓｎｅｗ２の離散ガウス分布からサンプリングした整数。ｓｎｅｗは正の実数。Ｓは、ｎ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数。ｓは正の実数。Ｐｏｗｅｒ２（Ｓ）はｎκ行ｌ列の行列で、Ｂｉｔｓ（ｃ）・Ｐｏｗｅｒ２（Ｓ）＝ｃ・ＳとなるようにＳを変換する関数。Ｂｉｔｓ（ｃ）は、成分数がｎで各成分がｑを法として表された整数であるベクトルｃについてその各成分をビット化し、成分数がｎκになったベクトル。そして、前記公開鍵が（Ａ，Ｐ，ｎ，ｓ）、前記秘密鍵がＳ、前記新公開鍵が（Ａｎｅｗ，Ｐｎｅｗ，ｎｎｅｗ，ｓｎｅｗ）、前記新秘密鍵がＳｎｅｗである。Ａは、ｎ行ｎ列の正方行列で各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数。Ｐは、ｎ行ｌ列の行列で各要素はｑを法として表された整数。Ａｎｅｗは、ｎｎｅｗ行ｎｎｅｗ列の正方行列で各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数。Ｐｎｅｗは、ｎｎｅｗ行ｌ列の行列で各要素はｑを法として表された整数。
により生成された鍵（Ｘ，Ｙ）であるサービス方法。
【請求項６】
前記更新暗号データが、次式：
Ｆ＝［Ｂｉｔｓ（ｃ１）Ｘ ｜ Ｂｉｔｓ（ｃ１）Ｙ＋ｃ２］
Ｅ（０）＝ｆ１［Ａｎｅｗ｜Ｐｎｅｗ］＋ｐ［ｆ２｜ｆ３］
ここで、（ｃ１，ｃ２）が前記暗号データである。ｃ１は、成分数がｎのベクトルで各成分はｑを法として表された整数。ｃ２は、成分数がｌのベクトルで各成分はｑを法として表された整数。Ｂｉｔｓ（ｃ１）は、成分数がｎで各成分がｑを法として表された整数であるベクトルｃ１についてその各成分をビット化し、成分数がｎκになったベクトル。ｆ１、ｆ２は、それぞれ、成分数がｎｎｅｗのベクトルで各成分は分散ｓｎｅｗ２の離散ガウス分布からサンプリングした整数。
により生成された暗号データＦ＋Ｅ（０）である請求項５記載のサービス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化されたデータを記憶保持し、要求に応じて当該暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバおよびサービス方法に係り、特に、暗号セキュリティのアップデートに対応するサーバおよびサービス方法に関する。
【背景技術】
【０００２】
クラウドサーバのように、クライアントに代わってデータを記憶保持するサービスが存在する。これを利用し、クライアントが開示している公開鍵で暗号化したデータを第三者がサーバにアップロードすると、クライアントはこのデータをクラウド管理者に内容秘匿のまま自身が解読（復号）可能な暗号データとしてサーバ上に置かれた状態で管理できる。例えばデータとしてセンサー出力や医療検査結果など秘匿性の高いデータを扱う場合に都合がよい。
【０００３】
また、クラウドサーバでは、クライアントのデータを記憶保持し、リソースが限られたクライアントからの要求に応じてこのデータを用いてクライアントに代わって計算処理を行いその結果をクライアントに提供するサービスが存在する（代理計算）。この場合、通常、データとして暗号データは扱えない。暗号データで計算処理を行うと当然、平文データでの処理結果と一般に一致しないためである。
【０００４】
一方、暗号データでの計算処理が平文データでの処理結果と対応するような暗号データ（＝準同型性のある暗号データ）は、現在いくつか知られている。かかる暗号データを用いれば、サーバで一定の計算処理を行っても結果を同じ形式の暗号データで得ることができ、これをクライアントに提供できる。クライアントは対応する秘密鍵でこれを復号できる。つまり、準同型性のある暗号データを利用すれば、サーバ上で行うデータの計算処理に関しても、これをクラウド管理者に内容秘匿でクライアントが管理できる。
【０００５】
データの記憶保持および計算処理に関しては、現状、上記のように暗号データ（とりわけ準同型性を有する暗号データ）を用いてその利点を享受できるものの、一般に暗号データは危殆化する可能性を有しており、長期的視点ではセキュリティの更新（アップデート）が必要不可欠である。暗号データのセキュリティを更新するには、一旦平文に復号してから再度アップデートに対応した暗号化を行うか、平文に復号せず直接に暗号データに対してセキュリティ更新の処理を行うかのいずれかになる。いずれも処理負担が軽いとは限られず、クライアントではなくサーバの側で行うのが好ましいと考えられる。
【０００６】
サーバの側で暗号データのセキュリティ更新の処理を行うと、前者の場合では、その処理時にクラウド管理者に対するデータ内容の秘匿性がくずれる。よって、データの記憶保持、計算処理、セキュリティ更新という一連のサービスで一貫した秘匿性を保てず、サービスとして不備が含まれたものになってしまう。そこで、準同型性を有する暗号データを扱ってなおかつ直接に暗号データにセキュリティ更新の処理ができるサーバが望まれる。このとき、セキュリティ更新の処理を行っても暗号データに準同型性が保たれることが前提になる。準同型性のない暗号データに更新されると、サーバ上で行うデータの計算処理に関するサービスがその後提供できなくなる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】ＵＳ8,565,435特許明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、暗号化されたデータを記憶保持し、要求に応じて当該暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバおよびサービス方法において、当該暗号データに対してセキュリティのアップデートが可能なサーバおよびサービス方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様であるサーバは、クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段と、前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付ける手段と、前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出する手段と、前記暗号化処理結果を前記クライアントに提供する手段と、前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取る手段と、前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換する手段と、前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える手段とを具備する。前記準同型性が付与された前記暗号データが、次式：ｃ１＝ｅ１Ａ＋ｐｅ２、ｃ２＝ｅ１Ｐ＋ｐｅ３＋ｍ、ｃ＝（ｃ１，ｃ２）により生成された暗号データｃである。ここで、ｅ１、ｅ２はそれぞれ、成分数がｎのベクトルで各成分は分散ｓ２の離散ガウス分布からサンプリングした整数、ｅ３は成分数がｌのベクトルで各成分は分散ｓ２の離散ガウス分布からサンプリングした整数、ｍは平文ベクトルで、成分数がｌで各成分はｐを法として表された整数である。ｎ、ｓ、ｌ、ｐ、Ａ、Ｐは以下による、ｎは正の整数、ｓは正の実数、ｌは正の整数、ｐは正の整数でｐとｑは互いに素、ｑは正の整数、Ａはｎ行ｎ列の正方行列で、各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数、ＰはＰ＝ｐＲ−ＡＳによる、Ｒ、Ｓはそれぞれ、ｎ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数である。
【００１０】
このサーバは、クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持する手段を有している。この手段自体は一般的な記憶保持手段で足りる。このような暗号データの記憶保持により、データの記憶保持およびその計算処理の点で、クラウド管理者を含めたクライアント以外の者への秘匿性を保つことができる。つまり、クライアントから、このサーバにある暗号データをソースとして行う計算処理の要求を受けてこれを準同型演算として行い、その結果として得た、同じ公開鍵で暗号化された形式を有する暗号化処理結果をクライアントに提供する、というサービスを行える。
【００１１】
そして、暗号データに対してセキュリティ更新を行うための鍵である、上記公開鍵との関係性を有する更新鍵およびセキュリティ更新がされたあとのクライアントの公開鍵である新公開鍵をクライアントから受け取り、これらの更新鍵および新公開鍵を用いて、暗号データを、新公開鍵により暗号化された形式を有しかつもとの準同型性と同様の準同型性を有する更新暗号データに変換する。この後、暗号データを破棄して更新暗号データで置き換える、という動作を行う。このような一連の動作によって、暗号データのセキュリティ更新後もその準同型性を維持する。よって、要求に応じて暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバにおいて、暗号データに対するセキュリティのアップデートが可能である。
【００１２】
また、別の態様であるサービス方法は、クライアントの公開鍵で暗号化されたデータである、準同型性が付与された暗号データを複数記憶保持し、前記クライアントから、複数の前記暗号データをソースとして行う計算処理をなすことの要求がされたときに該要求を受け付け、前記要求に基づいて、複数の前記暗号データをソースに前記計算処理を準同型演算として行い、該計算処理の結果である、前記公開鍵で暗号化された形式を有する暗号化処理結果を算出し、前記暗号化処理結果を前記クライアントに提供し、前記暗号データに対してセキュリティ更新を行うための鍵である、前記公開鍵との関係性を有する更新鍵、および該セキュリティ更新がされたあとの前記クライアントの公開鍵である新公開鍵が前記クライアントから送付されたときに該更新鍵および該新公開鍵を受け取り、前記暗号データに行う前記セキュリティ更新として、前記更新鍵および前記新公開鍵を用いて、前記暗号データを、前記新公開鍵により暗号化された形式を有しかつ前記準同型性と同様の準同型性を有するデータである更新暗号データに変換し、前記暗号データが前記更新暗号データに変換されたあと、前記暗号データを破棄して該暗号データを前記更新暗号データで置き換える。
【００１３】
このサービス方法は、上記のサーバに対応する方法である。
【発明の効果】
【００１４】
本発明によれば、暗号化されたデータを記憶保持し、要求に応じて当該暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバおよびサービス方法において、当該暗号データに対してセキュリティのアップデートが可能なサーバおよびサービス方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】一実施形態であるサーバ、およびこれを含むシステムを示す構成図。
【図２】図１中に示したパラメータ生成保持部３１の機能を示す説明図。
【図３】図１中に示した鍵生成部３２の機能を示す説明図。
【図４】図１中に示した処理部２１の暗号化機能を示す説明図。
【図５】図１中に示した一般処理部３５の復号機能を示す説明図。
【図６】図１中に示したサーバ１０で行われ得る準同型演算についてその性質を示す説明図。
【図７】図１中に示したサーバ１０で行われ得る準同型演算が可能な例として線形回帰計算を示す説明図。
【図８】図１中に示した更新鍵生成部３６の機能を示す説明図。
【図９】図１中に示したセキュリティ更新処理部１４の機能を示す説明図。
【発明を実施するための形態】
【００１６】
以上を踏まえ、以下では本発明の実施形態を図面を参照しながら説明する。図１は、一実施形態であるサーバおよびこれを含むシステムを示している。同図において、サーバ１０は例えばクラウドサーバであり、一方、クライアント３０はサーバ１０が提供するサービスを享受する機器である。ひとつのサーバ１０にクライアント３０は多数存在し得る（ほかのクライアントは不図示）。サーバ１０とクライアント３０とは管理主体が異なる前提で以下説明するが、データの暗号化により、第三者機器２０からは、見掛け上サーバ１０がクライアント３０の一部であるかのようになっている。
【００１７】
すなわち、クライアント３０は、その管理するデータをサーバ１０上では暗号化された状態で記憶保持させている。この暗号化に必要な公開鍵はクライアント３０が開示している。したがって、クライアント３０が開示している公開鍵で第三者機器２０が暗号化したデータをサーバ１０にアップロードすると、クライアント３０はこのデータをクラウド管理者（サーバ１０の管理者）に内容秘匿のまま自身が秘密鍵で解読（復号）可能な暗号データとしてサーバ１０上に置かれた状態で管理できる。例えばデータとしてセンサー出力や医療検査結果など秘匿性の高いデータを扱う場合に都合がよい。
【００１８】
サーバ１０は、通信インターフェース１１、暗号データ記憶保持部１２、計算処理部（算出部）１３、セキュリティ更新処理部（変換部、置き換え部）１４を有する。クライアント３０は、パラメータ生成保持部３１、鍵生成部３２、鍵保持部３３、通信インターフェース３４、一般処理部３５（要求内容生成、その結果の復号を行う）、更新鍵生成部３６を有する。第三者機器２０は、処理部（暗号化部）２１、通信インターフェース２２を有する。
【００１９】
以下、サーバ１０、クライアント３０、および第三者機器２０の各内部構成についてその機能を説明するが、理解の便宜のため一連の動作に沿って説明するので、必ずしも機器ごとにまとまった説明にならない点を断っておく。また、機能ブロック図として描いた図１を中心に参照して説明するが、適宜、説明図である図２ないし図９を参照する。
【００２０】
（公開鍵および秘密鍵の生成）
公開鍵および秘密鍵の生成のため、まず、クライアント３０は、パラメータ生成保持部３１によりパラメータ（ｑ，ｌ，ｐ）を生成する。ｑは正の整数、ｌは正の整数、ｐは正の整数で、ｐとｑは互いに素（つまり最小公倍数が１）である。ｌは、平文ベクトルの成分数として設定された数である。平文ベクトルは、成分数がｌで各成分がｐを法として表された整数とする。以上図２を参照することができる。生成されたパラメータはパラメータ生成保持部３１に保持されるとともに、鍵生成部３２に渡される。なお、「ベクトル」は断りのない限り横ベクトルを意味する（以下でも同様）。
【００２１】
鍵生成部３２は、パラメータ生成部３１から渡されたパラメータ（ｑ，ｌ，ｐ）に基づき公開鍵および秘密鍵を生成する。手順は以下であり図３を参照できる。まず、ｓを決めｎを決める。ｓは正の実数で、離散ガウス分布の標準偏差として設定する。ｎは正の整数でセキュリティ（安全性）に関連する数であり、ｑ、ｓ、ｎで暗号としての安全性が定まる。ちなみに、本実施形態で例えばｑ＝２１１４、ｓ＝８．０、ｎ＝２６６１とした場合には、８０ビットセキュリティの暗号が得られる。一般にＮビットセキュリティの暗号とは、２Ｎ回の解読計算で鍵（秘密鍵）が見つかる暗号である。
【００２２】
次に、鍵生成部３２は、正規ランダム行列Ｒ、Ｓを生成する。すなわち、Ｒ、Ｓは、それぞれ、ｎ行ｌ列の行列で各要素は分散ｓ２の離散ガウス分布からサンプリングした整数である。加えて、鍵生成部３２は、一様ランダム行列Ａを生成する。すなわち、Ａは、ｎ行ｎ列の正方行列で、各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数である。
【００２３】
さらに、鍵生成部３２はＰを計算する。計算式はＰ＝ｐＲ−ＡＳである。Ｐは、ｎ行ｌ列の行列で、各要素はｑを法として表された整数になる。以上の一連の手順により、公開鍵は（Ａ，Ｐ，ｎ，ｓ）として、秘密鍵はＳとして、それぞれ生成される。生成された各鍵は鍵保持部３３に渡され、そこで記憶保持される。秘密鍵Ｓは、クライアント３０の外に流出しないように管理される一方、公開鍵（Ａ，Ｐ，ｎ，ｓ）は、第三者機器２０のため開示される。第三者機器２０は、例えば医療機関やエネルギー提供会社などの秘匿性のあるデータを取り扱う者が有する機器を想定することができる。
【００２４】
（暗号化）
図１に示すシステムでは、データの暗号化を公開鍵でクライアント３０が行い、その結果である暗号データをサーバ１０に送ってサーバ１０上に記憶保持させることができる。同様に、第三者機器２０がその有する、秘匿が必要な平文のデータをクライアント３０の公開鍵で暗号化し、その結果である暗号データをサーバ１０に送ってサーバ１０上に記憶保持させることもできる。暗号化の処理自体は両者とも変わらないが、後者の動作として以下説明する。手順は以下であり図４を参照できる。
【００２５】
まず、第三者機器２０の処理部２１はノイズｅ１、ｅ２を生成する。ｅ１、ｅ２は、それぞれ、成分数がｎのベクトルで、各成分は分散ｓ２の離散ガウス分布からサンプリングした整数である。加えて、処理部２１はノイズｅ３を生成する。ｅ３は、成分数がｌのベクトルで、各成分は分散ｓ２の離散ガウス分布からサンプリングした整数である。
【００２６】
次に、処理部２１はｃ１を計算する。計算式はｃ１＝ｅ１Ａ＋ｐｅ２である。ｃ１は、成分数がｎのベクトルで、各成分はｑを法として表された整数になる。加えて、処理部２１はｃ２を計算する。計算式はｃ２＝ｅ１Ｐ＋ｐｅ３＋ｍである。ｍは第三者機器２０において生成された平文ベクトルで、成分数がｌで各成分はｐを法として表された整数である。ｃ２は、成分数がｌのベクトルで各成分はｑを法として表された整数になる。
【００２７】
以上の一連の手順により、暗号データｃはｃ＝（ｃ１，ｃ２）として生成される。なお、第三者機器２０は、以上の一連の手順で公開鍵（Ａ，Ｐ，ｎ，ｓ）が必要であるが、これ以外に少なくともパラメータ（ｌ，ｐ）が必要である。パラメータ（ｌ，ｐ）は第三者機器２０において前提として了解されているものとする。生成された暗号データは、処理部２１から通信インターフェース２２に渡され、通信インターフェース２２は、渡された暗号データを通信路を介してサーバ１０に向けて送る。
【００２８】
サーバ１０は、第三者機器２０から送られてきた暗号データを通信インターフェース１１で受け取る。通信インターフェース１１で受け取られた暗号データは、通信インターフェース１１から暗号データ記憶保持部１２に渡される。暗号データ記憶保持部１２は、通信インターフェース１１から渡された暗号データを記憶保持する。この暗号データは、すなわち、サーバ１０の管理者に内容秘匿のままクライアント３０のみが復号可能な暗号データとしてサーバ１０上に置かれたデータになっている。
【００２９】
（復号）
図１に示すシステムで復号はもっぱらクライアント３０で行われる。これにより、サーバ１０の管理者に対するデータの秘匿性が保たれる。単に復号する場合の動作を以下説明する。暗号データ記憶保持部１２に記憶保持された暗号データをクライアント３０が復号して平文データに戻す場合には、クライアント３０は、その暗号データｃ＝（ｃ１，ｃ２）を提出することの要求をサーバ１０に対して行う。そのため、その旨の情報を一般処理部３５で生成する。この要求の旨の情報は、一般処理部３５から通信インターフェース３４に渡される。
【００３０】
通信インターフェース３４に渡された要求の旨の情報は、通信インターフェース３４から通信路を介してサーバ１０に送られる。サーバ１０は、クライアント３０から送られてきた要求の旨の情報を通信インターフェース１１で受け取る。通信インターフェース１１で受け取られた要求の旨の情報は通信インターフェース１１から計算処理部１３に渡される。計算処理部１３は、渡された要求の内容に従い、暗号データ記憶処理部１２から該当の暗号データｃ＝（ｃ１，ｃ２）を取り出す。そして、計算処理部１３は、取り出した暗号データに対してこの場合特に処理を行わずに通信インターフェース１１に渡す。なお、一般には計算処理部１３が暗号データに対して一定の計算処理を行う場合もあるがその場合については後述する。
【００３１】
通信インターフェース１１に渡された暗号データは、通信インターフェース１１から通信路を介してクライアント３０に送られる。クライアント３０は、サーバ１０から送られてきた暗号データを通信インターフェース３４で受け取る。通信インターフェース３４で受け取られた暗号データｃ＝（ｃ１，ｃ２）は通信インターフェース３４から一般処理部３５に渡される。
【００３２】
一般処理部３５は、暗号データｃ＝（ｃ１，ｃ２）の復号動作として以下を行う。この点は図５を参照できる。まず、ｍバーを計算する。計算式は、ｍバー＝ｍ＝ｃ１Ｓ＋ｃ２である。Ｓは前述してあるように秘密鍵であり、鍵保持部３３に保持されている。次に平文ベクトルｍを計算する。計算式は、ｍ＝ｍバー ｍｏｄ ｐである。ｍは復号で得られた平文ベクトル（＝復号結果）になる。当然ながら、この復号は秘密鍵Ｓを保持しているクライアント３０以外では実行できない。秘密鍵はクライアント３０の外に流出しないように管理されている。
【００３３】
以上により、サーバ１０が行うクライアント３０のためのデータの記憶保持というサービスの点で、サーバ管理者に対するデータの秘匿性が保たれることを説明した。
【００３４】
（暗号データの性質）
次に、上記で説明したように生成された暗号データに特有な性質について説明する。図２、図３、図４に示された手順で生成された暗号データには、一定の準同型性がある。そのひとつは加算の準同型性であり、一般に、ｃ＋ｃ’＝Ｅｎｃ（ｐｋ，ｍ＋ｍ’）  が成り立っている。ここで「Ｅｎｃ」は、上記で説明した暗号化を平文データｍ＋ｍ’に対して公開鍵ｐｋで行うことの関数を意味し、ここで公開鍵ｐｋ（ｐｕｂｌｉｃ  ｋｅｙ）＝（Ａ，Ｐ，ｎ，ｓ）である。
【００３５】
つまり、暗号データｃ、ｃ’とその対応する平文データｍ、ｍ’とで、暗号データで行った加算ｃ＋ｃ’の演算結果は、平文データで行った加算ｍ＋ｍ’の演算結果を暗号化したものに等しくなっている。この点は、図２〜図４を参照して追ってみれば確かめることができる。
【００３６】
かかる暗号データであることから、サーバ１０で加算の演算処理を行うとその結果を、同じ形式で暗号化されたデータとしてクライアント３０に提供できる。クライアント３０は対応する秘密鍵Ｓでこれを復号できる。つまり、一定の準同型性のある暗号データを利用することにより、サーバ１０上で行うデータの一定の演算処理に関しても、これをサーバ管理者に内容秘匿でクライアント３０が管理できる。
【００３７】
図２、図３、図４に示された手順で生成された暗号データには、もうひとつの準同型性が備わっている。すなわち、この暗号データは、一般にｃＴｃ’＝Ｅｎｃ（ｐｋ，ｍＴｍ’）が成り立っている。ここで、ｃＴ、ｍＴはそれぞれ、横ベクトルｃ、ｍを縦ベクトルに直したものである。つまり、暗号データｃ、ｃ’とその対応する平文データｍ、ｍ’とで、暗号データで行ったテンソル積ｃＴｃ’（＝ｎ＋ｌ行ｎ＋ｌ列の正方行列）の演算結果は、平文データで行ったテンソル積ｍＴｍ’の演算結果を暗号化したもの（＝ｎ＋ｌ行ｎ＋ｌ列の正方行列）に、要素ごとに等しくなっている。この点は、図２〜図４を参照して追ってみれば確かめることができる。
【００３８】
よって、このような乗算の準同型性のある暗号データを利用することにより、サーバ１０上で行う積を求める演算処理に関しても、これをサーバ管理者に内容秘匿でクライアント３０が管理できる。クライアント３０はその演算結果を秘密鍵Ｓで復号できる。
【００３９】
以上の点をまとめると、図２、図３、図４に示された手順で生成された暗号データは、２次形式の計算を行う処理についてサーバ１０で扱うことができることを意味する。サーバ１０でこのような処理を行うと、その結果はもとの公開鍵で暗号化された形式を有する、平文データで同様な処理を行った結果に対応したデータになる。したがって、クライアント３０に代わって計算処理をサーバ１０で行いその結果をクライアント３０に提供しクライアント３０はこれを秘密鍵で復号できる。すなわち、２次形式の計算処理に関して、これをサーバ管理者に内容秘匿でクライアント３０が管理できることになる。
【００４０】
以上説明した準同型性と２次形式の計算との関係をもう一度説明したものが図６である。図６は以上の点から容易に理解できると思われるが簡単におさらいする。まず、図２〜図４によれば、平文ベクトルｍ、ｍ’とその暗号文ベクトルｃ、ｃ’とに関して以下が成り立つ。
ｃ＋ｃ’＝Ｅｎｃ（ｐｋ，ｍ＋ｍ’）      ・・・加算の準同型性
ｃＴｃ’＝Ｅｎｃ（ｐｋ，ｍＴｍ’）      ・・・テンソル積の乗算の準同型性
【００４１】
次に、例えば、平文データｘｉ、ｙｉの各暗号データＥｎｃ（ｐｋ，ｘｉ）、Ｅｎｃ（ｐｋ，ｙｉ）を用いた２次形式の計算：
Ｎ
Σ  ａｉ・Ｅｎｃ（ｐｋ，ｘｉ）・Ｅｎｃ（ｐｋ，ｙｉ）        （ｉはデータ番号）
ｉ＝１
の結果は、次式、平文データを用いた２次形式の計算結果を暗号化したものに等しい。
Ｎ
Ｅｎｃ（ｐｋ，Σ  ａｉ・ｘｉｙｉ）
ｉ＝１
【００４２】
したがって、サーバ管理者に対して平文データｘｉ、ｙｉを秘匿したままサーバ１０で計算処理を行い、その後クライアント３０は復号でその計算結果を得ることができる。
【００４３】
（準同型演算が適用可能な例）
サーバ１０で行う準同型演算が適用可能な例を図７を参照して説明する。同図に示すように平文データ列（ｘｘ（ｉ），ｙｙ（ｉ））を考える（ここで、ｉはデータ番号で１〜Ｎ、ベクトルｘｘ（ｉ）は成分数がｎｆ、ｙｙ（ｉ）はスカラー）。平文データ列（ｘｘ（ｉ），ｙｙ（ｉ））に想定される関係式として以下：
ｙｙ（ｉ）＝θ０＋θ・ｘｘ（ｉ）＋ε（ｉ）＝ｈθ（ｘｘ（ｉ））＋ε（ｉ）    （すなわち、ほぼ線形な関係式。ε（ｉ）は誤差）
が成り立つとする。
【００４４】
線形回帰計算として、平文データ列（ｘｘ（ｉ），ｙｙ（ｉ））から（θ０，θ）を求めるには、以下のようにすればよい。すなわち、
与えられた初期偏回帰係数（θ０，θ１，・・・，θｎｆ，）＝（θ０，θ）
与えられた重み係数 α
を用いて、次の反復計算を行う。
ｊ＝０〜ｎｆについて
Ｎ
θｊ ← θｊ−（α／Ｎ）Σ （ｈθ（ｘｘ（ｉ））−ｙｙ（ｉ））ｘｘ（ｉ）ｊ 
ｉ＝１
（ｘｘ（ｉ）ｊは、第ｊ成分）
を（θ０，θ）が収束するまで行う。収束した（θ０，θ）が解答である。
【００４５】
以上の線形回帰計算は、その必要な計算が２次形式の計算処理に限られるため、平文データに代えて暗号データを用いて処理しても平文データに対応した結果が得られる。すなわち、クライアント３０に代わってサーバ１０で計算処理（暗号データを用いた計算処理）を行いその結果をクライアント３０に提供することにより、クライアント３０は意図する解答を復号で得ることができる。
【００４６】
図２〜図４に示した暗号化による暗号データにおいて適用可能な処理の例には、上記以外にも種々考えられる。例えば、ｍとｍ’とのハミング距離の計算も可能である。ここでｍ、ｍ’には具体的にそれぞれ例えば生体認証情報の場合を挙げることができる。サーバ１０で準同型演算が可能な暗号データが取り扱われる場合、リソースが限られたクライアント３０からの要求に応じてクライアント３０に代わって計算処理を行いその結果をクライアント３０に提供するサービスを、データ内容秘匿のまま行うことができる。
【００４７】
クライアント３０からサーバ１０に対して計算処理を要求してその結果をクライアント３０が得るまでの手順を以下補足的に説明する。まず、クライアント３０は、暗号データをソースとして行う特定の計算処理とその結果の提供とをサーバ１０に要求するため、その旨の要求情報を一般処理部３５で生成する。この要求情報は、一般処理部３５から通信インターフェース３４に渡される。
【００４８】
通信インターフェース３４に渡された要求情報は、通信インターフェース３４から通信路を介してサーバ１０に送られる。サーバ１０は、クライアント３０から送られてきた要求情報を通信インターフェース１１で受け付ける。通信インターフェース１１で受け付けられた要求情報は通信インターフェース１１から計算処理部１３に渡される。計算処理部１３は、渡された要求情報に従い、暗号データ記憶処理部１２から計算に必要な暗号データを取り出してこれをソースとして準同型演算で計算処理し結果を算出する。そして、計算処理部１３は、その結果である、公開鍵で暗号化された形式を有するデータを通信インターフェース１１に渡す。
【００４９】
通信インターフェース１１に渡された暗号データは、通信インターフェース１１から通信路を介してクライアント３０に送られ、提供される。クライアント３０は、サーバ１０から送られてきた暗号データを通信インターフェース３４で受け取る。通信インターフェース３４で受け取られた暗号データは通信インターフェース３４から一般処理部３５に渡される。一般処理部３５は、通信インターフェース３４から渡された暗号データを、すでに説明した手順により復号する。
【００５０】
以上により、準同型性のある暗号データを利用し、サーバ１０上で行うデータの計算処理に関して、これをサーバ管理者に内容秘匿でクライアント３０が管理できる点を説明した。
【００５１】
（更新鍵の生成）
次に、暗号データ記憶保持部１２に記憶保持された暗号データについてそのセキュリティを更新する手順を説明する。セキュリティ更新が必要になる理由は、一般に暗号データは長期的視点で危殆化する可能性を有しているためである。暗号データのセキュリティを更新するには、一般に、一旦平文データに復号してから再度アップデートに対応した暗号化を行うか、平文データに復号せず直接に暗号データに対してセキュリティ更新の処理を行うかのいずれかになる。いずれも処理負担が軽いとは限られず、クライアント３０ではなくサーバ１０の側で処理を行う方が好ましいと考えられる。
【００５２】
サーバ１０の側で暗号データのセキュリティ更新の処理を行うと、前者の場合では、その処理時にサーバ管理者に対するデータ内容の秘匿性がくずれる。よって、データの記憶保持、計算処理、セキュリティ更新という一連のサービスで一貫した秘匿性を保てず、サービスとして不備が含まれたものになってしまう。そこで、このサーバ１０は、準同型性を有する暗号データを扱ってなおかつ直接に暗号データにセキュリティ更新の処理ができるように構成されている。そして、セキュリティ更新の処理を行っても暗号データの準同型性が保たれる。
【００５３】
セキュリティ更新のための動作はクライアント３０での更新鍵の生成から始まる。以下の手順は図８を参照することができる。まず、クライアント３０の鍵生成部３２は、公開鍵（Ａ，Ｐ，ｎ，ｓ）と同様に生成させた新公開鍵（Ａｎｅｗ，Ｐｎｅｗ，ｎｎｅｗ，ｓｎｅｗ）、および秘密鍵Ｓと同様に生成させた新秘密鍵Ｓｎｅｗを用意する。この動作は図３を参照できる。ｎｎｅｗは正の整数でｎより大（＝セキュリティの向上ため）である。新公開鍵および新秘密鍵は、鍵生成部３２から鍵保持部３３に渡されて保持され、さらに鍵保持部３３から更新鍵生成部３６に渡される。なお、公開鍵（Ａ，Ｐ，ｎ，ｓ）および秘密鍵Ｓも鍵保持部３３から更新鍵生成部３６に渡される。
【００５４】
更新鍵生成部３６は、まず、κ＝ｃｅｉｌｉｎｇ（ｌｏｇ２ｑ）を計算する。ｃｅｉｌｉｎｇ（ ）は天井関数であり、括弧内の数をそれ以上の最小の整数に変換する関数である。次に、更新鍵生成部３６は、ランダム行列Ｘ、Ｅを生成する。すなわち、Ｘは、ｎκ行ｎｎｅｗ列の行列で各要素は整数の集合（０，…，ｑ−１）から無作為にサンプリングした整数である。Ｅは、ｎκ行ｌ列の行列で各要素は分散ｓｎｅｗ２の離散ガウス分布からサンプリングした整数である。
【００５５】
さらに、更新鍵生成部３６はＹを計算する。計算式はＹ＝−ＸＳｎｅｗ＋ｐＥ＋Ｐｏｗｅｒ２（Ｓ）である。ここで、Ｐｏｗｅｒ２（Ｓ）はｎκ行ｌ列の行列で、Ｂｉｔｓ（ｃ）・Ｐｏｗｅｒ２（Ｓ）＝ｃ・ＳとなるようにＳを変換する関数である。さらにここで、Ｂｉｔｓ（ｃ）は、成分数がｎで各成分がｑを法として表された整数であるベクトルｃについてその各成分をビット化し、成分数がｎκになったベクトルである。Ｙは、ｎκ行ｌ列の行列で各要素はｑを法として表された整数になる。
【００５６】
以上の一連の手順により、更新鍵生成部３６で更新鍵は（Ｘ，Ｙ）として生成される。この更新鍵は、公開鍵と一定の関係性を有するように生成されている。そして、この更新鍵、および鍵保持部３３に保持された新公開鍵は、それぞれ、更新鍵生成部３６、鍵保持部３３から通信インターフェース３４に渡される。通信インターフェース３４に渡された更新鍵および新公開鍵は、通信インターフェース３４から通信路を介してサーバ１０に送付される。
【００５７】
サーバ１０は、クライアント３０から送付されてきた更新鍵および新公開鍵を通信インターフェース１１で受け取る。通信インターフェース１１で受け取られた更新鍵および新公開鍵は、通信インターフェース１１からセキュリティ更新処理部１４に渡される。セキュリティ更新処理部１４は、渡された更新鍵および新公開鍵を用いて、暗号データ記憶処理部１２に記憶保持された暗号データに対してセキュリティを更新する処理を行う（以下で説明する）。
【００５８】
（セキュリティ更新）
サーバ１０は、クライアント３０から送付されてきた更新鍵（Ｘ，Ｙ）および新公開鍵（Ａｎｅｗ，Ｐｎｅｗ，ｎｎｅｗ，ｓｎｅｗ）を用いて暗号データ記憶処理部１２に記憶保持された暗号データに対してセキュリティを更新する処理を行う。この動作はセキュリティ更新処理部１４による。セキュリティ更新処理部１４は、暗号データに行うセキュリティ更新として、更新鍵および新公開鍵を用いて、暗号データを、新公開鍵により暗号化された形式を有しかつもとの準同型性と同様の準同型性を有するデータである更新暗号データに変換する。手順は以下であり図９を参照できる。
【００５９】
まず、セキュリティ更新処理部１４は、ノイズｆ１、ｆ２を生成する。ｆ１、ｆ２は、それぞれ、成分数がｎｎｅｗのベクトルで、各成分は分散ｓｎｅｗ２の離散ガウス分布からサンプリングした整数である。加えて、セキュリティ更新処理部１４は、ノイズｆ３を生成する。ｆ３は、成分数がｌのベクトルで、各成分は分散ｓｎｅｗ２の離散ガウス分布からサンプリングした整数である。
【００６０】
次に、セキュリティ更新処理部１４は、Ｆを計算する。計算式はＦ＝［Ｂｉｔｓ（ｃ１）Ｘ ｜ Ｂｉｔｓ（ｃ１）Ｙ＋ｃ２］である。ここで記号「｜」は、行列の連結を意味する。Ｆは、成分数がｎｎｅｗ＋ｌのベクトルで、各成分はｑを法として表された整数になる。ｃ１、ｃ２については、暗号データ（ｃ１，ｃ２）を暗号データ記憶処理部１２から取り出して用いる。さらに、セキュリティ更新処理部１４は、ゼロの暗号データＥ（０）を計算する。計算式は、Ｅ（０）＝ｆ１［Ａｎｅｗ｜Ｐｎｅｗ］＋ｐ［ｆ２｜ｆ３］（図４参照）である。
【００６１】
以上の一連の手順により、セキュリティ更新後の暗号データである更新暗号データｃｎｅｗ＝（ｃｎｅｗ１，ｃｎｅｗ２）は、Ｆ＋Ｅ（０）として算出される。もとの暗号データｃ＝（ｃ１，ｃ２）から変換され算出された更新暗号データｃｎｅｗ＝（ｃｎｅｗ１，ｃｎｅｗ２）は、セキュリティ更新処理部１４から暗号データ記憶保持部１２に渡される。セキュリティ更新処理部１４は、もとの暗号データを破棄して更新暗号データで置き換える。
【００６２】
以上説明した、暗号データから更新暗号データへの変換は、暗号データとしてもとの準同型性が保たれたものになる。この点は、図８、図９、および図２〜図４を参照して追ってみれば確かめることができる。よって、要求に応じて暗号データを用いて一定の計算処理を行い暗号で結果を提供するサーバ１０において、暗号データに対するセキュリティのアップデートが可能である。
【００６３】
そして、このセキュリティ更新は、暗号データに対してサーバ１０の動作として行われるので、リソースが限られているクライアント３０の処理負担ならない。また、このセキュリティ更新は、暗号解読技術が進展して安全性が低下しても何度も繰り返すことができる。もとよりサーバ１０として、データの記憶保持、計算処理、セキュリティ更新という一連のサービスで、一貫して秘匿性が保たれているという大きな効果を有している。なお、セキュリティ更新がされたあとは、当然ながらクライアント３０は、これまでの公開鍵に代わり新公開鍵を開示し、その結果、その後第三者機器２０は、新公開鍵を用いて暗号化が必要な平文データを暗号化しこれをサーバ１０に送る（アップロードする）ことになる。
【００６４】
以上、本発明の実施形態を説明したが、実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６５】
１０…サーバ、１１…通信インターフェース、１２…暗号データ記憶保持部、１３…計算処理部（算出部）、１４…セキュリティ更新処理部（変換部、置き換え部）、２０…第三者機器、２１…処理部（暗号化部）、２２…通信インターフェース、３０…クライアント、３１…パラメータ生成保持部、３２…鍵生成部、３３…鍵保持部、３４…通信インターフェース。３５…一般処理部（要求内容生成部、結果の復号部）、３６…更新鍵生成部。
【図１】
0006490429.tif 000002
【図２】
0006490429.tif 000003
【図３】
0006490429.tif 000004
【図４】
0006490429.tif 000005
【図５】
0006490429.tif 000006
【図６】
0006490429.tif 000007
【図７】
0006490429.tif 000008
【図８】
0006490429.tif 000009
【図９】
0006490429.tif 000010