(57)【特許請求の範囲】
【請求項１】
準同型疑似乱数生成器(H-PRNG)を用いて、（１）暗号化鍵key1をシードとして生成した疑似乱数(H-PRNG(key1))を生成し、（２）データＭと前記疑似乱数H-PRNG(Key1)とにより前記データＭの暗号文Ｃを生成し、生成した前記暗号文Ｃを送信する暗号化処理部、及び、前記暗号化鍵key1の逆元（key1-1）および新しい暗号化鍵key2から、鍵更新用データKeyUDを生成し、生成した前記鍵更新用データKeyUDを送信する暗号化鍵処理部を有する端末、並びに、
受信した前記暗号文Ｃを格納する記憶装置、及び、（３）受信した前記鍵更新用データKeyUDをシードとして生成した疑似乱数(KeyUD)および（４）前記暗号文Ｃと前記疑似乱数H-PRNG(KeyUD)とにより暗号化鍵更新済み暗号文Ｃ’を生成し、前記暗号文Cに替えて暗号化鍵更新済み暗号文Ｃ’を前記記憶装置に格納する鍵更新処理部を有するストレージ装置を含むことを特徴とする暗号化鍵更新システム。
【請求項２】
前記暗号化鍵key1をシードとして生成した疑似乱数(H-PRNG(key1))をr1||r2||…とし（ここでri (i=1,2,…)は所定のビット長のビット列、||はビット列の結合を表す）、前記データＭをm1||m2||…（miはriと同じビット長のビット列）としたとき、
前記データＭの前記暗号文Ｃはc1||c2||…=(r1+m1)||(r2+m2)||…であり、
前記鍵更新用データKeyUDをkey1-1＊key2とし、前記鍵更新用データKeyUDをシードとして生成した前記疑似乱数H-PRNG(KeyUD)をt1||t2||…としたとき、前記暗号化鍵更新済み暗号文Ｃ’はＣ’=c’1||c’2||…=(c1+t1)||(c2+t2)||…であることを特徴とする請求項１記載の暗号化鍵更新システム。
【請求項３】
前記暗号化処理部は、予め用意したseedをシードとして疑似乱数生成器（PRNG）を用いて疑似乱数列PRNG(seed)=r1||r2||…（ここでri(i=1,2,…) は所定のビット長のビット列、||はビット列の結合を表す）を生成し、生成した前記疑似乱数列PRNG(seed)の各ビット列ri、前記データＭ=m1||m2||…（miはriと同じビット長のビット列）の各ビット列mi、および素数pによりci = rikey1 * mi mod pを求め、前記暗号文C=c1||c2||…（ここでci(i=1,2,…) は所定のビット長のビット列）を生成し、
前記暗号化鍵処理部は、前記鍵更新用データKeyUDとしてKeyUD= key2- key1 mod (p-1)（key1のp-1を法とした加算の逆元(-key1) mod (p-1)とkey2との法p-1での加算結果）を生成し、生成した前記鍵更新用データKeyUDと共に、前記seedおよび前記素数pを、前記ストレージ装置に送信し、
前記鍵更新処理部は、受信した前記seedをシードとして、前記疑似乱数生成器（PRNG）により前記疑似乱数列PRNG(seed)=r1||r2||…を生成し、生成した前記疑似乱数列PRNG(seed)の各ビット列ri、受信した前記鍵更新用データKeyUD、前記素数p、および、前記記憶装置に格納している前記暗号文C（= c1||c2||…）から、c’i = riKeyUD * ci mod pを求め、前記暗号化鍵更新済み暗号文Ｃ’ = c’1||c’2||…（ただし、H-PRNG(KeyUD)=(r1KeyUD mod p)||(r2 KeyUD mod p)||…である）を生成することを特徴とする請求項１記載の暗号化鍵更新システム。
【請求項４】
前記暗号化処理部は、予め用意したseedをシードとして疑似乱数生成器（PRNG）を用いて疑似乱数列PRNG(seed)=r1||r2||…（ここでri(i=1,2,…)は所定のビット長のビット列、||はビット列の結合を表す）を生成し、生成した前記疑似乱数列PRNG(seed)の各ビット列riおよび前記データＭ=m1||m2||…（miはriと同じビット長のビット列）の各ビット列miの結合ri||miが素数pを超えないように、前記miおよび前記riの所定のビット長を選択し、前記ri、前記mi、および前記素数pによりci=(ri||mi)* key1 mod pを求め、前記暗号文C=c1||c2||…（ここでci(i=1,2,…) は所定のビット長のビット列）を生成し、
前記暗号化鍵処理部は、前記鍵更新用データKeyUDとしてKeyUD = key2 * key1-1 mod pを生成し、生成した前記鍵更新用データKeyUDと共に前記素数pを、前記ストレージ装置に送信し、
前記鍵更新処理部は、受信した前記鍵更新用データKeyUD、前記素数p、および、前記記憶装置に格納している前記暗号文C（= c1||c2||…）から、c'i = KeyUD * ci mod pを求め、前記暗号化鍵更新済み暗号文Ｃ’ = c’1||c’2||…を生成することを特徴とする請求項１記載の暗号化鍵更新システム。
【請求項５】
前記暗号化処理部は、予め用意したseedをシードとして疑似乱数生成器（PRNG）により疑似乱数列PRNG(seed)=r1||r2||…（ここでri(i=1,2,…) は所定のビット長のビット列、||はビット列の結合を表す）を生成し、生成した前記疑似乱数列PRNG(seed)および前記データＭ=m1||m2||…（miはriと同じビット長のビット列）の、各ビット列について、ci = (ri||(mi＋h(ri)))＋key1（ここで、hはハッシュ関数を、＋はビットごとの排他的論理和を表す。）を求め、前記暗号文C=c1||c2||…を生成し、
前記暗号化鍵処理部は、前記暗号化鍵key1と前記新しい暗号化鍵key2とのビットごとの排他的論理和を前記鍵更新用データKeyUDとし、
前記鍵更新処理部は、前記鍵更新用データKeyUDおよび前記記憶装置に格納している前記暗号文C（= c1||c2||…）から、c’i = KeyUD ＋ ciを求め、前記暗号化鍵更新済み暗号文Ｃ’ = c’1||c’2||…を生成することを特徴とする請求項１記載の暗号化鍵更新システム。
【請求項６】
前記暗号化処理部は、乱数ｒｎを生成し、生成した前記乱数ｒｎをシードとして擬似乱数生成器（PRNG）を用いて前記データＭと同じ長さの擬似乱数列PRNG（ｒｎ）を生成し、Ｍ＋PRNG（ｒｎ）を求め（ここで、＋はビットごとの排他的論理和を表す）、前記暗号文Ｃ＝（ｒｎ||Ｍ＋PRNG（ｒｎ））＋key1を生成し、
前記暗号化鍵処理部は、前記暗号化鍵key1と前記新しい暗号化鍵key2とのビットごとの排他的論理和を前記鍵更新用データKeyUDとし、
前記鍵更新処理部は、前記鍵更新用データKeyUDおよび前記記憶装置に格納している前記暗号文Ｃから前記暗号化鍵更新済み暗号文Ｃ’＝KeyUD+Ｃ（＋はビットごとの排他的論理和を表す）を生成することを特徴とする請求項１記載の暗号化鍵更新システム。
【請求項７】
ストレージ装置が持つ記憶装置に格納されている、暗号化鍵key1により暗号化された暗号文Ｃを、前記ストレージ装置に接続する端末から、新しい暗号化鍵key2により暗号化された暗号化鍵更新済み暗号文Ｃ’に更新する暗号化鍵更新方法であって、
前記端末は、準同型疑似乱数生成器(H-PRNG)を用いて、（１）前記暗号化鍵key1をシードとして生成した疑似乱数H-PRNG(key1)を生成し、（２）データＭと前記疑似乱数H-PRNG(Key1)とにより前記データＭの前記暗号文Ｃを生成し、生成した前記暗号文Ｃを前記記憶装置に格納するために前記ストレージ装置に送信し、
前記端末は、前記暗号化鍵key1の逆元（key1-1）および前記新しい暗号化鍵key2から、鍵更新用データKeyUDを生成し、生成した前記鍵更新用データKeyUDを前記ストレージ装置に送信し、
前記ストレージ装置は、（３）受信した前記鍵更新用データKeyUDをシードとして生成した疑似乱数(KeyUD)および（４）前記暗号文Ｃと前記疑似乱数H-PRNG(KeyUD)とにより暗号化鍵更新済み暗号文Ｃ’を生成し、前記暗号文Cに替えて暗号化鍵更新済み暗号文Ｃ’を前記記憶装置に格納することを特徴とする暗号化鍵更新方法。
【請求項８】
前記暗号化鍵key1をシードとして生成した疑似乱数(H-PRNG(key1))をr1||r2||…とし（ここでri (i=1,2,…)は所定のビット長のビット列、||はビット列の結合を表す）、前記データＭをm1||m2||…（miはriと同じビット長のビット列）としたとき、
前記データＭの前記暗号文Ｃはc1||c2||…=(r1+m1)||(r2+m2)||…であり、
前記鍵更新用データKeyUDをkey1-1＊key2とし、前記鍵更新用データKeyUDをシードとして生成した前記疑似乱数H-PRNG(KeyUD)をt1||t2||…としたとき、前記暗号化鍵更新済み暗号文Ｃ’はＣ’=c’1||c’2||…=(c1+t1)||(c2+t2)||…であることを特徴とする請求項７記載の暗号化鍵更新方法。
【請求項９】
前記端末は、予め用意したseedをシードとして疑似乱数生成器（PRNG）を用いて疑似乱数列PRNG(seed)=r1||r2||…（ここでri(i=1,2,…) は所定のビット長のビット列、||はビット列の結合を表す）を生成し、生成した前記疑似乱数列PRNG(seed)の各ビット列ri、前記データＭ=m1||m2||…（miはriと同じビット長のビット列）の各ビット列mi、および素数pによりci = rikey1 * mi mod pを求め、前記暗号文C=c1||c2||…（ここでci(i=1,2,…) は所定のビット長のビット列）を生成し、
前記端末は、前記鍵更新用データKeyUDとしてKeyUD= key2- key1 mod (p-1)（key1のp-1を法とした加算の逆元(-key1) mod (p-1)とkey2との法p-1での加算結果）を生成し、生成した前記鍵更新用データKeyUDと共に、前記seedおよび前記素数pを、前記ストレージ装置に送信し、
前記ストレージ装置は、受信した前記seedをシードとして、前記疑似乱数生成器（PRNG）により前記疑似乱数列PRNG(seed)=r1||r2||…を生成し、生成した前記疑似乱数列PRNG(seed)の各ビット列ri、受信した前記鍵更新用データKeyUD、前記素数p、および、前記記憶装置に格納している前記暗号文C（= c1||c2||…）から、c’i = riKeyUD * ci mod pを求め、前記暗号化鍵更新済み暗号文Ｃ’ = c’1||c’2||…（ただし、H-PRNG(KeyUD)=(r1KeyUD mod p)||(r2 KeyUD mod p)||…である）を生成することを特徴とする請求項７記載の暗号化鍵更新方法。
【請求項１０】
前記端末は、予め用意したseedをシードとして疑似乱数生成器（PRNG）を用いて疑似乱数列PRNG(seed)=r1||r2||…（ここでri(i=1,2,…)は所定のビット長のビット列、||はビット列の結合を表す）を生成し、生成した前記疑似乱数列PRNG(seed) の各ビット列riおよび前記データＭ=m1||m2||…（miはriと同じビット長のビット列）の各ビット列miとの結合ri||miが素数pを超えないように、前記miおよび前記riの所定のビット長を選択し、前記ri、前記mi、および前記素数pによりci=(ri||mi)* key1 mod pを求め、前記暗号文C=c1||c2||…（ここでci(i=1,2,…) は所定のビット長のビット列）を生成し、
前記端末は、前記鍵更新用データKeyUDとしてKeyUD = key2 * key1-1 mod pを生成し、生成した前記鍵更新用データKeyUDと共に前記素数pを、前記ストレージ装置に送信し、
前記ストレージ装置は、受信した前記鍵更新用データKeyUD、前記素数p、および、前記記憶装置に格納している前記暗号文C（= c1||c2||…）から、c'i = KeyUD * ci mod pを求め、前記暗号化鍵更新済み暗号文Ｃ’ = c’1||c’2||…を生成することを特徴とする請求項７記載の暗号化鍵更新方法。
【請求項１１】
前記端末は、予め用意したseedをシードとして疑似乱数生成器（PRNG）により疑似乱数列PRNG(seed)=r1||r2||…（ここでri(i=1,2,…) は所定のビット長のビット列、||はビット列の結合を表す）を生成し、生成した前記疑似乱数列PRNG(seed)および前記データＭ=m1||m2||…（miはriと同じビット長のビット列）の、各ビット列について、ci = (ri||(mi＋h(ri)))＋key1（ここで、hはハッシュ関数を、＋はビットごとの排他的論理和を表す。）を求め、前記暗号文C=c1||c2||…を生成し、
前記端末は、前記暗号化鍵key1と前記新しい暗号化鍵key2とのビットごとの排他的論理和を前記鍵更新用データKeyUDとし、
前記ストレージ装置は、前記鍵更新用データKeyUDおよび前記記憶装置に格納している前記暗号文C（= c1||c2||…）から、c’i = KeyUD ＋ ciを求め、前記暗号化鍵更新済み暗号文Ｃ’ = c’1||c’2||…を生成することを特徴とする請求項７記載の暗号化鍵更新方法。
【請求項１２】
前記端末は、乱数ｒｎを生成し、生成した前記乱数ｒｎをシードとして擬似乱数生成器（PRNG）を用いて前記データＭと同じ長さの擬似乱数列PRNG（ｒｎ）を生成し、Ｍ＋PRNG（ｒｎ）を求め（ここで、＋はビットごとの排他的論理和を表す）、前記暗号文Ｃ＝（ｒｎ||Ｍ＋PRNG（ｒｎ））＋key1を生成し、
前記端末は、前記暗号化鍵key1と前記新しい暗号化鍵key2とのビットごとの排他的論理和を前記鍵更新用データKeyUDとし、
前記ストレージ装置は、前記鍵更新用データKeyUDおよび前記記憶装置に格納している前記暗号文Ｃから前記暗号化鍵更新済み暗号文Ｃ’＝KeyUD+Ｃ（＋はビットごとの排他的論理和を表す）を生成することを特徴とする請求項７記載の暗号化鍵更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化したデータ（暗号文）の暗号化鍵を更新するシステムに関する。
【背景技術】
【０００２】
情報システムの開発の効率化、運用管理費の低減などを目的に、近年、情報システムを自身で保持せず、外部業者に委託するクラウドと呼ばれる運用管理形態の利用が広がっている。しかし、効率化やコスト低減の反面、クラウドにおいては、情報システムの管理者や担当者は、情報システムを利用するユーザとは異なるため、ユーザは外部業者も含めた第三者への機密情報漏洩について不安を抱くことになる。
【０００３】
第三者への機密情報漏洩については、同じ組織内であっても同様である。同じ組織内であっても、情報システムの管理者や担当者と、情報システムに格納するデータを管理するユーザ（情報システムの利用者）とは異なることがほとんどである。
【０００４】
機密情報漏洩の対策としては、暗号技術が有効であり、ＡＥＳ暗号などの従来技術により安全にかつ効率よく秘匿化をすることが可能である。
【０００５】
しかし、ストレージ装置を持つ情報システムにデータを暗号化して格納したとしても、情報システム担当者の交代や、より高いセキュリティを確保するためなどの理由により、適宜、暗号化鍵を更新することが望ましい。
【０００６】
従来の通常の暗号方式では新しい暗号化鍵に変更する際、いったん暗号文を復号し、新しい暗号化鍵を用いて暗号化することが必須である。ユーザが端末から情報システムにに元の暗号化鍵と新しい暗号化鍵を開示して、情報システムが暗号化鍵を更新するか、情報システムが格納している暗号化データを端末に一旦返送し、ユーザが端末で元の暗号化鍵で復号し、さらに新しい暗号化鍵で再暗号化するしか暗号化鍵を更新する方法がない。
【０００７】
情報システム側にに暗号化鍵を開示すると当然ながら情報システムの管理者や担当者に暗号化鍵を開示することに繋がり、機密情報漏洩に繋がりかねない。またユーザが端末で、情報システムに格納している暗号化データの暗号化鍵を更新する場合、暗号化データのデータ量が多いと、往復の通信量と暗復号化の計算量が膨大となり、非現実的で、クラウドのメリットを損なう。
【０００８】
特許文献１のように、１回のみ暗号化鍵の更新が可能な方法も知られているが、情報システムの管理者や担当者の交代ごとに、または定期的に繰り返して鍵更新を行う必要があり、不十分である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際公開公報ＷＯ２０１２／１４７８６９Ａ１
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記のように、ユーザが必要に応じて暗号化鍵を更新する際、データを格納する情報システムに元の暗号化鍵と新しい暗号化鍵を提供することなく、暗号化鍵を更新できることが求められる。
【課題を解決するための手段】
【００１１】
開示する暗号化鍵更新システムは、ストレージ装置が持つ記憶装置に格納されている、暗号化鍵key1により暗号化された暗号文Ｃを、ストレージ装置に接続する端末から、新しい暗号化鍵key2により暗号化された暗号化鍵更新済み暗号文Ｃ’に更新する。端末は、準同型疑似乱数生成器(H-PRNG)を用いて、暗号化鍵key1をシードとして生成した疑似乱数H-PRNG(key1)を生成し、データＭと前記疑似乱数H-PRNG(Key1)とによりデータＭの暗号文Ｃを生成し、生成した暗号文を送信する暗号化処理部、及び、暗号化鍵key1の逆元（key1-1）と新しい暗号化鍵key2から、鍵更新用データKeyUDを生成し、生成した鍵更新用データKeyUDをストレージ装置に送信する暗号化鍵処理部を有する。ストレージ装置は、受信した暗号文Ｃを格納する記憶装置、及び、受信した鍵更新用データKeyUDをシードとして生成した疑似乱数(KeyUD)と、暗号文Ｃと前記疑似乱数H-PRNG(KeyUD)とにより暗号化鍵更新済み暗号文Ｃ’を生成し、暗号文Ｃに替えて暗号化鍵更新済み暗号文Ｃ’を記憶装置に格納する鍵更新処理部を有する。
【発明の効果】
【００１２】
暗号化鍵を更新する際、暗号文を格納する情報システム(ストレージ装置)に元の暗号化鍵と新しい暗号化鍵を提供することなく、暗号化鍵を更新できる。
【図面の簡単な説明】
【００１３】
【図１】暗号化鍵更新システムの概略図である。
【図２】実施例１の暗号化処理部の処理フローチャートである。
【図３】実施例１の暗号化鍵処理部の処理フローチャートである。
【図４】実施例１の鍵更新処理部の処理フローチャートである。
【図５】実施例２の暗号化処理部の処理フローチャートである。
【図６】実施例２の暗号化鍵処理部の処理フローチャートである。
【図７】実施例２の鍵更新処理部の処理フローチャートである。
【図８】実施例４の暗号化処理部の処理フローチャートである。
【図９】実施例４の暗号化鍵処理部の処理フローチャートである。
【図１０】実施例４の鍵更新処理部の処理フローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００１５】
図１は、暗号化鍵更新システムの概略図である。図示するように、暗号化鍵更新システムは、ユーザが使用する端末100と情報システムの管理者や担当者が管理するストレージ装置200を、ネットワーク300を介して接続している。
【００１６】
端末100は、準同型疑似乱数生成器を用いてデータ（平文）を暗号化した暗号文を、ストレージ装置200に送信する。ストレージ装置200は、接続する記憶装置220に、受信した暗号文を格納する。
【００１７】
端末100は、ストレージ装置200に既に格納している暗号文の暗号化鍵を新しい暗号化鍵に更新するために、元の暗号化鍵と新しい暗号化鍵との間で後述する所定の演算を実行し、その暗号化鍵演算結果をストレージ装置200に送信する。ストレージ装置200は、端末100から受信した暗号化鍵演算結果を用いて、格納している暗号文に対して、後述する所定の処理を実行して、暗号文を平文に復号することなく、元の暗号化鍵から新しい暗号化鍵へ暗号化鍵を更新する。
【００１８】
端末100は、処理部110及び記憶部（記憶装置）120を有するコンピュータであり、入出力装置130を接続し、ネットワーク300を介してストレージ装置200と接続する。
【００１９】
記憶部120は、データ記憶部121および暗号化鍵記憶部122を備える。データ記憶部130は、暗号化の対象のデータ（平文）や、データを暗号化した暗号文を格納する。暗号化鍵記憶部122は、データを暗号化するための暗号化鍵を格納する。ここでは、暗号化鍵記憶部122に格納されている暗号化鍵は、データを最初に暗号化した暗号化鍵（元の暗号化鍵key1）と更新する暗号化鍵（新しい暗号化鍵key2）である。
【００２０】
処理部110は、暗号鍵生成部111、暗号化処理部112、および暗号化鍵処理部113を含んでいる。暗号鍵生成部111は、暗号鍵を生成し、生成した暗号鍵を暗号化鍵記憶部122に格納する。暗号化処理部112は、データ記憶部121に格納されている、暗号化対象のデータを、暗号化鍵記憶部122に格納されている暗号化鍵（ここでは、元の暗号化鍵key1）を用いて暗号化し、暗号化した暗号文をデータ記憶部121に格納し、暗号文をネットワーク300を介してストレージ装置200に送信する。
【００２１】
暗号化鍵処理部113は、データの暗号化に用いた元の暗号化鍵key1を新しい暗号化鍵key2に更新するとき、暗号化鍵記憶部122に格納されている元の暗号化鍵（key1）と、暗号化鍵生成部111により新たに生成され、暗号化鍵記録部122に格納されている暗号化鍵（key2）との間で、後述する所定の演算を実行し、鍵更新用データを生成する。生成した鍵更新用データは、ネットワーク300を介してストレージ装置200に送信される。
【００２２】
ストレージ装置200は、処理部210を有するコンピュータであり、記憶装置220および入出力装置230を接続し、ネットワーク300を介して端末100と接続する。
【００２３】
記憶装置220は、ユーザ端末100から受信した暗号文231を格納する。
【００２４】
処理部210は、鍵更新処理部211を含んでいる。鍵更新処理部211は、ユーザ端末100から送信された鍵更新用データを用いて、記憶装置220に格納している暗号文の暗号化鍵を、この暗号文が生成されたときの元の暗号化鍵key1から新しい暗号化鍵key2に更新する。
【００２５】
以下、鍵更新に係る、端末100及びストレージ装置200の動作を説明する。
【実施例１】
【００２６】
図２に、端末100の暗号化処理部112の処理フローチャートを示す。暗号化処理部112は準同型疑似乱数生成器（H-PRNG）を含んでいる。準同型疑似乱数生成器は、たとえば、暗号化鍵key1及びkey2をシードとした疑似乱数をそれぞれr1||r2||…とs1||s2||…とするとき（ここでri、si(i＝1,2,…)は所定のビット長のビット列、||はビット列の結合を表す）、暗号化鍵key1とkey2の二項演算と、対応する疑似乱数のビット列同士の二項演算との関係が、暗号化鍵key1＊key2（＊は、通常の乗算とは限らない）をシードとした疑似乱数が(r1＋s1)||(r2＋s2)||…（＋は、通常の加算とは限らない）を満たすものである。
【００２７】
暗号化処理部112の準同型疑似乱数生成器（H-PRNG）は、暗号鍵と暗号化の対象のデータ(平文)に関しても前述と同様に動作する。暗号化処理部112は、暗号化鍵（key1）をシードとした疑似乱数がr1||r2||…であり、データ記憶部121に格納されている、暗号化対象のデータ（平文）Ｍをm1||m2||…（miはri、siと同じビット長のビット列）とすると、データＭ＝m1||m2||…の暗号文として(r1＋m1)||(r2＋m2)||…を出力する。
【００２８】
暗号化処理部112は、データ記憶部121に格納されている、暗号化の対象のデータＭ(平文)を所定のビット長のビット列miに分割する（S201）。暗号化処理部112は、暗号化鍵記憶部122に格納されている暗号化鍵key1をシードとした疑似乱数(H-PRNG(key1))を生成し、生成した疑似乱数を、ビット列miと同じ所定のビット長のビット列riに分割する（S202）。暗号化処理部112は、ビット列miとビット列riから暗号文Ｃ（＝c1||c2||…＝(r1＋m1)||(r2＋m2)||…）を生成する（S203）。暗号化処理部112は、暗号文Ｃをストレージ装置200に、ネットワーク300を介して送信する（S204）。図示を省略するが、ストレージ装置200は、受信した暗号文Ｃを記憶装置220に格納する。
【００２９】
図３に、端末100の暗号化鍵処理部113の処理フローチャートを示す。暗号化鍵記憶部122に格納されている暗号化鍵key1は、暗号化の対象のデータＭを暗号化して暗号文Ｃを生成するために用いた元の暗号化鍵であり、暗号化鍵記憶部122に格納されている暗号化鍵key2は、暗号化鍵生成部111が新たに生成した新しい暗号化鍵であり、暗号化鍵処理部113は、暗号文Ｃ の暗号化鍵をkey1からkey2に更新する。換言すると、暗号化鍵処理部113は、ストレージ装置200の記憶装置220に格納されている暗号文Ｃ（key1を用いて、データＭを暗号化した暗号文）を、暗号文Ｃを復号しないで（データＭを求めないで）、あたかもkey2を用いてデータＭを暗号化した暗号文Ｃ’に更新するための鍵更新用データKeyUDを生成し、生成した鍵更新用データKeyUDをストレージ装置200に送信する。
【００３０】
暗号化鍵処理部113は、元の暗号化鍵key1の逆元（key1-1）と新しい暗号化鍵key2から、鍵更新用データKeyUD（KeyUD＝key1-1＊key2）を生成する（S301）。暗号化鍵処理部113は、生成した鍵更新用データKeyUDをストレージ装置200にネットワーク300を介して送信する（S302）。
【００３１】
図４は、鍵更新処理部211の処理フローチャートを示す。鍵更新処理部211も、準同型疑似乱数生成器（H-PRNG）を含んでいる。鍵更新処理部211は、ストレージ装置200が端末100から受信した鍵更新用データKeyUDを用いて、記憶装置220に格納している暗号文Ｃを、あたかも暗号化鍵key2を用いてデータＭを暗号化した暗号文Ｃ’に更新する。すなわち、鍵更新用データKeyUDを用いて、データＭを暗号化するための暗号化鍵をkey1からkey2へ更新する。
【００３２】
鍵更新処理部211は、受信した鍵更新用データKeyUD（KeyUD＝key1-1＊key2）をシードとして、記憶装置220に格納している暗号文Ｃ（＝c1||c2||…＝(r1＋m1)||(r2＋m2)||…）と同じ所定のビット長のビット列t1||t2||…を生成する（S401）。鍵更新処理部211は、暗号化鍵更新済み暗号文Ｃ’を、Ｃ’＝c’1||c’2||…＝(c1＋t1)||(c2＋t2)||…として生成し（S402）、生成した暗号文Ｃ’を暗号文Ｃに替えて記憶装置220に格納する（S403）。鍵更新処理部211は、受信した暗号化鍵更新用データKeyUDを破棄する（S404）。
【００３３】
ここで、各iについて、c'i＝ ci＋tiであるが、tiはKeyUD＝key1-1*key2をシードとした準同型擬似乱数生成器の出力であるから、準同型擬似乱数生成器の定義からti＝-ri＋siであり、またci＝ri＋miであったから、c'i＝ri＋mi＋(-ri＋si)＝si＋miであり、key2による暗号化の結果となっている。
【００３４】
実施例２以降の各実施例は本実施例を具体化したものであるので、実施例２以降では暗号化鍵がkey1からkey2へ更新されたことの上記説明を省略する。
【００３５】
本実施例によれば、暗号化鍵をkey1からkey2へ更新する際、暗号文Ｃを格納する情報システムに元の暗号化鍵key1と新しい暗号化鍵key2を提供することなく、暗号化鍵を更新した暗号文Ｃ’を生成できる。
【実施例２】
【００３６】
図５に、端末100の暗号化処理部112の処理フローチャートを示す。本実施例の暗号化処理部112は、準同型疑似乱数生成器（H-PRNG）と共に、通常の疑似乱数生成器（PRNG）を含む。ユーザ端末100のデータ記憶部121に、暗号化の対象のデータＭの他に、素数p、および、疑似乱数生成器（PRNG）のためのシードseedを予め格納しておく。
【００３７】
暗号化処理部112は、seedをシードとして疑似乱数生成器（PRNG）により疑似乱数列PRNG(seed)＝r1||r2||…（ここでri(i＝1,2,…) は所定のビット長のビット列、||はビット列の結合を表す）を生成する（S501）。暗号化処理部112は、ci＝rikey1 * mi mod pを求め、暗号文Ｃ＝c1||c2||…を生成する（S502）。ここでa mod pはビット列aを定められた手順で整数とみなし、その整数をpで割ったときの余り（小数点以下を省略した整数）を表す。暗号化処理部112は、暗号文Ｃ＝c1||c2||…をストレージ装置200に、ネットワーク300を介して送信する（S503）。図示を省略するが、ストレージ装置200は、受信した暗号文Ｃを記憶装置220に格納する。
【００３８】
図６にユーザ端末100の暗号化鍵処理部113の処理フローチャートを示す。暗号化鍵処理部113は、暗号化処理部112が暗号化の対象のデータＭを暗号化するために用いた元の暗号化鍵key1、新しい暗号化鍵key2（実施例1と同様に、暗号化鍵生成部111が新たに生成した新しい暗号化鍵）、及び、データ記憶部121に格納されている素数pと、疑似乱数生成器（PRNG）のためのシードseedから、鍵更新用データKeyUD（KeyUD＝ key2- key1 mod (p-1)）を生成し(S601)、生成した鍵更新用データKeyUD、疑似乱数生成器（PRNG）のためのシードseed、および素数pを、ストレージ装置200に送信する（S602）。鍵更新用データKeyUD は、key1のp-1を法とした加算の逆元(-key1) mod (p-1)とkey2との法p-1での加算結果である。
【００３９】
図７に、鍵更新処理部211の処理フローチャートを示す。鍵更新処理部211も、前述の準同型疑似乱数生成器（H-PRNG）および通常の疑似乱数生成器（PRNG）を含む。鍵更新処理部211は、ユーザ端末100から受信したseedをシードとして、端末100の暗号化処理部112のS501と同様に、疑似乱数生成器（PRNG）により疑似乱数列PRNG(seed)＝r1||r2||…を生成する（S701）。鍵更新処理部211は、生成した各ビット列ri、端末100から受信した鍵更新用データKeyUDおよび素数p、並びに、記憶装置220に格納している暗号文Ｃ（＝c1||c2||…）から、c’i ＝ riKeyUD * ci mod pを求め、暗号化鍵更新済み暗号文Ｃ’＝c’1||c’2||…を生成する（S702）。ただし、H-PRNG(KeyUD)＝(r1KeyUD mod p)||(r2 KeyUD mod p)||…である。鍵更新処理部211は、生成した暗号文Ｃ’を、暗号文Ｃに替えて記憶装置220に格納する（S703）。鍵更新処理部211は、受信した暗号化鍵更新用データKeyUDおよび素数pを破棄する（S704）。
【００４０】
本実施例において、素数pを、端末100と、ストレージ装置200で別途共有しておくことにより、暗号化鍵処理部113のS602でpを送信する手順を省略できる。
【実施例３】
【００４１】
実施例２は、鍵更新処理部211のS702において、pを法としたべき乗計算を必要とする。べき乗計算は計算コストが高いため、平文サイズ（データＭのビット長）が大きくなると、ストレージ装置200の鍵更新時の処理コストが高くなる。本実施例では、実施例２に比べて効率の良い鍵更新の処理を説明する。
【００４２】
端末100の暗号化処理部112は、疑似乱数列PRNG(seed)＝riとデータＭのビット列miの結合ri||miが素数pを超えないように、miとriの所定のビット長を選択し、図５のS502のci＝rikey1 * mi mod pの代わりに、ci＝(ri||mi)* key1 mod pを生成する。
【００４３】
鍵更新処理部211は、図６のS601（KeyUD＝ key2- key1 mod (p-1)）の代わりに鍵更新用データKeyUD＝key2 * key1-1 mod pを生成する。鍵更新処理部211は、図６のS602において、疑似乱数生成器（PRNG）のためのシードseedをストレージ装置200に送信しなくてもよい。さらに鍵更新処理部211は、図７のS701を省略し、S702（c’i＝riKeyUD * ci mod p）の代わりにc'i＝KeyUD * ci mod pを生成する。
【００４４】
本実施例によれば、鍵更新の処理でべき乗を必要としないため、鍵更新を効率的に処理できる。
【実施例４】
【００４５】
図８は、端末100の暗号化処理部112の処理フローチャートを示す。本実施例の暗号化処理部112は、準同型疑似乱数生成器（H-PRNG）と共に、通常の疑似乱数生成器（PRNG）を含む。
【００４６】
ユーザ端末100のデータ記憶部121に、暗号化の対象のデータＭの他に、疑似乱数生成器（PRNG）のためのシードとしてのseedを予め格納しておく。また、暗号化鍵記憶部122に準同型疑似乱数生成器（H-PRNG）のためのシードとしての暗号化鍵key1を格納している。
【００４７】
暗号化処理部112は、seedをシードとして疑似乱数生成器（PRNG）により疑似乱数列PRNG(seed)＝r1||r2||…（ここでri(i＝1,2,…) は所定のビット長のビット列、||はビット列の結合を表す）を生成する（S801）。暗号化処理部112は、各iについて、ci＝(ri||(mi＋h(ri)))＋key1を求め、暗号文Ｃ＝c1||c2||…を生成する（S802）。暗号化処理部112は、暗号文Ｃ＝c1||c2||…をストレージ装置200に、ネットワーク300を介して送信する（S803）。図示を省略するが、ストレージ装置200は、受信した暗号文Ｃを記憶装置220に格納する。
【００４８】
ここで、hはハッシュ関数を、＋はビットごとの排他的論理和を表す。また、各iに対するriは真正の乱数でもよい。hは疑似ランダム関数でもよい。
【００４９】
図９は、暗号化鍵処理部113の処理フローチャートを示す。暗号化鍵処理部113は、暗号化処理部112が暗号化の対象のデータＭを暗号化するために用いた元の暗号化鍵key1と新しい暗号化鍵key2（実施例1と同様に、暗号化鍵生成部114が新たに生成した新しい暗号化鍵）とのビットごとの排他的論理和を求め、求めた排他的論理和の結果をKeyUDとし（S901）、このKeyUDをストレージ装置200に送信する（S902）。
【００５０】
図１０は、鍵更新処理部211の処理フローチャートを示す。鍵更新処理部211は、端末100から受信した鍵更新用データKeyUDおよび記憶装置220に格納している暗号文Ｃ（＝c1||c2||…）から、c’i＝KeyUD＋ciを求め、暗号化鍵更新済み暗号文Ｃ’＝c’1||c’2||…を生成する（S1001）。ここで＋はビットごとの排他的論理和を表す。鍵更新処理部211は、暗号化鍵更新済み暗号文である、生成した暗号文Ｃ’を、暗号文Ｃに替えて記憶装置220に格納する（S1002）。鍵更新処理部211は、受信した暗号化鍵更新用データKeyUDを破棄する（S1003）。
【００５１】
以上の実施例４では、暗号化対象のデータ(平文)Mを所定のビット長に分割し、各ビット列に対して暗号化処理を実行するが、データMを分割せずに、そのかわりにデータMをマスクするために擬似乱数生成器の出力を用いてもよい。
【００５２】
具体的には、暗号化処理部112は乱数ｒｎを生成し、それをシードとして擬似乱数生成器（PRNG）によりデータＭと同じ長さの擬似乱数列PRNG（ｒｎ）を生成する。暗号化処理部112はＭ＋PRNG（ｒｎ）を計算する。ここで＋はビットごとの排他的論理和を表す。さらに暗号化処理部112は暗号文Ｃ＝（ｒ||Ｍ＋PRNG（ｒｎ））＋key1を生成する。
【００５３】
暗号化鍵処理部113は、暗号化処理部112が暗号化の対象のデータＭを暗号化するために用いた元の暗号化鍵key1と新しい暗号化鍵key2（実施例１と同様に、暗号化鍵生成部が新たに生成した新しい暗号化鍵）とのビットごとの排他的論理和を求め、求めた排他的論理和の結果をKeyUDとし、このKeyUDをストレージ装置200に送信する。
【００５４】
鍵更新処理部211は、端末100から受信した鍵更新用データKeyUDおよび記憶装置220に格納している暗号文ＣからＣ’＝KeyUD＋Ｃを求め、暗号化鍵更新済み暗号文Ｃ’を生成する。ここで＋はビットごとの排他的論理和を表す。鍵更新処理部211は、暗号化鍵更新済み暗号文である、生成した暗号文Ｃ’を、暗号文Ｃに替えて記憶装置220に格納する。鍵更新処理部211は、受信した暗号化鍵更新用データKeyUDを破棄する。
【００５５】
以上説明した本実施形態によれば、暗号化鍵を更新する際、データを格納する情報システムに元の暗号化鍵と新しい暗号化鍵を提供することなく、暗号化鍵を更新できる。
【符号の説明】
【００５６】
１００：端末、１１０：処理部、１１１：暗号化鍵生成部、１１２：暗号化処理部、１１３：暗号化鍵処理部、１２０：記録部、１２１：データ記憶部、１２２：暗号化鍵記憶部２１２、１３０：入出力装置、２００：ストレージ装置、２１０：処理部、２１１：鍵更新処理部、２２０：記憶装置、２３０：：入出力装置、３００：ネットワーク。
【図１】
0006033741.tif 000002
【図２】
0006033741.tif 000003
【図３】
0006033741.tif 000004
【図４】
0006033741.tif 000005
【図５】
0006033741.tif 000006
【図６】
0006033741.tif 000007
【図７】
0006033741.tif 000008
【図８】
0006033741.tif 000009
【図９】
0006033741.tif 000010
【図１０】
0006033741.tif 000011