(57)【特許請求の範囲】
【請求項１】
データを暗号化して保管する暗号化記憶システムであって、
前記システムは、
データを入出力するインターフェースI/Fと、
暗号化鍵生成装置と、
暗号処理装置と、
データ管理装置と、
前記暗号化鍵生成装置で生成された秘密鍵を記憶する第１の記憶装置と、
前記暗号処理装置で暗号化されたデータを記憶する第２の記憶装置及び第３の記憶装置と、
前記装置のそれぞれを制御する制御装置と、を備え、
前記暗号処理装置は、
セレクタと、
前記暗号処理装置に入力されたデータを受け取り、入力ビットのすべての値が出力ビットのそれぞれの値に影響を与える変換を行うＡＯＮT装置と、
前記ＡＯＮＴ装置の出力を分割し、秘匿化対象以外の第１の保存データと秘匿化対象の第１の中間データを出力するデータ分割装置とを備え、
前記暗号化記憶システムは前記第１の保存データを前記第３の記憶装置に記憶し、
さらに、前記暗号処理装置は、
前記暗号化鍵生成装置で生成された秘密鍵をパラメータとし、前記セレクタの出力を入力としてデータ攪拌を行い、第２の保存データを出力するパラメータ付きデータ攪拌装置を備え、
前記暗号化記憶システムは前記第２の保存データを前記第２の記憶装置に記憶し、
前記暗号処理装置は、さらに、
前記第１の記憶装置に記憶された秘密鍵をパラメータとし、前記第２の記憶装置に記憶された前記第２の保存データを入力として前記パラメータ付きデータ攪拌装置の逆攪拌を行い、第２の中間データを出力するパラメータ付きデータ逆攪拌装置と、
前記第２の中間データと、前記第３の記憶装置に記憶された前記第１の保存データを結合するデータ結合装置と、
前記データ結合装置で結合されたデータを受け取り、前記ＡＯＮＴ装置により逆変換を行い、暗号処理装置の出力を生成するＡＯＮＴ逆変換装置と、を備え、
前記セレクタは、前記データ分割装置と前記パラメータ付きデータ逆攪拌装置の出力を前記制御装置の指示に従って切り替える
ことを特徴とする暗号化記憶システム。
【請求項２】
請求項１に記載の暗号化記憶システムであって、
前記制御装置は、再暗号化要求の制御信号を受信すると、
前記第１の記憶装置から前記秘密鍵を読み出し、前記第２の記憶装置から前記第２の保存データを読み出し、
前記秘密鍵をパラメータとして、前記パラメータ付きデータ逆攪拌装置を用いて前記第２の保存データを逆攪拌して再暗号化用の前記第２の中間データを生成し、
前記暗号化鍵生成装置で新しい秘密鍵を生成し、
前記新しい秘密鍵をパラメータとして、前記パラメータ付きデータ攪拌装置で前記再暗号化用の前記第２の中間データを攪拌し、前記攪拌の出力である前記第２の保存データを前記第２の記憶装置に記憶し、
前記新しい秘密鍵を前記第１の記憶装置に記憶する、
ことを特徴とする暗号化記憶システム。
【請求項３】
請求項１に記載の暗号化記憶システムであって、
前記パラメータ付きデータ攪拌装置は、第１の疑似乱数生成装置と第１の加算器とを備え、前記第１の疑似乱数生成装置は、前記秘密鍵に基づいて暗号化用鍵ストリームを生成し、前記鍵ストリームと前記セレクタの出力するデータを前記加算器で加算することでデータの攪拌処理を行ない、
前記暗号化記憶システムは、前記鍵ストリームを前記第１の記憶装置に記憶することを特徴とする暗号化記憶システム。
【請求項４】
請求項３に記載の暗号化記憶システムであって、
前記パラメータ付きデータ逆攪拌装置は減算器を備え、
前記制御装置が復号処理要求の制御信号を受信すると、前記パラメータ付きデータ逆攪拌装置は前記第１の記憶装置から前記鍵ストリームを読み出し、前記第２の記憶装置から前記第２の保存データを読み出し、前記減算器で減算処理を行い、データの逆攪拌を行うことを特徴とする暗号化記憶システム。
【請求項５】
請求項４に記載の暗号化記憶システムであって、
前記暗号処理装置は、さらに第2の加算器を備え、前記制御装置が再暗号化要求の制御信号を受信すると、
前記第１の記憶装置に記憶されている前記鍵ストリームを第１の鍵ストリームとして読み出し、前記第２の記憶装置から前記第２の保存データを読み出し、
前記暗号化鍵生成装置で新しい秘密鍵を生成し、
前記疑似乱数生成装置は前記新しい秘密鍵に基づいて新しい鍵ストリームを第２の鍵ストリームとして生成し、
前記第１の鍵ストリームと前記第２の保存データを前記第１の加算器で加算することで前記第２の保存データを更新し、前記第２の記憶装置に書き込み、
前記第１の鍵ストリームと前記第２の鍵ストリームを前記第２の加算器で加算することで前記第１の鍵ストリームを更新し、前記第１の記憶装置に書き込む
ことを特徴とする暗号化記憶システム。
【請求項６】
請求項１に記載の暗号化記憶システムであって、
前記データ管理装置はデータベースを備え、前記第１の記憶装置に記憶されているデータと、前記第２の記憶装置に記憶されているデータと、前記第３の記憶装置に記憶されているデータとの対応を管理することを特徴とする暗号化記憶システム。
【請求項７】
請求項１に記載の暗号化記憶システムであって、
前記ＡＯＮＴ装置は、ｎ１ビットのハッシュ値を生成する第１ハッシュ関数及び第２のハッシュ関数と、ｎ１ビットのデータを入力とする疑似乱数生成器とを備え、
暗号化対象のデータを構成する所定の長さの単位データを、ｎ１ビットの第１のデータとｎ２ビットの第２のデータに分割し、
前記第１のハッシュ関数によって前記第２のデータから生成したハッシュ値と前記第１のデータとの排他的論理和により第１の内部データを生成し、
前記第１の内部データを入力として前記疑似乱数生成装置によって生成した疑似乱数と前記第２のデータとの排他的論理和により第２の内部データを生成し、
前記第２のハッシュ関数２によって前記第２の内部データから生成したハッシュ値と前記第１の内部データとの排他的論理和により第３の内部データを生成し、
前記第３の内部データと前記第２の内部データを連結して出力データとして中間データを生成する、
ことを特徴とする暗号化記憶システム。
【請求項８】
請求項１に記載の暗号化記憶システムであって、
前記ＡＯＮＴ装置は、乱数生成装置と、ｎ１ビットのデータを入力とする疑似乱数生成器と、ｎ１ビットの圧縮値を生成するデータ圧縮装置とを備え、
前記乱数生成装置で生成したｎ１ビットの第１のデータを入力として前記疑似乱数生成装置によって生成した乱数データと、暗号化対象のデータを構成するｎ２ビットの第２のデータとの排他的論理和により第１の内部データを生成し、
前記第１の内部データを前記データ圧縮装置によって圧縮した圧縮データと、ｎ１ビットのデータとの排他的論理和により第２の内部データを生成し、
前記第２の内部データと前記第１の内部データを連結してｎ１＋ｎ２ビットの出力データとして中間データを生成する、
ことを特徴とする暗号化記憶システム。
【請求項９】
請求項８に記載の暗号化記憶システムであって、
入力データを詰め込むことによりｎ１ビットの倍数のデータに成形し、前記データ圧縮装置は、前記計算の途中結果の前記第１の内部データをｎ１ビットずつに分割して排他的論理和する
ことを特徴とする暗号化記憶システム。
【請求項１０】
請求項１に記載の暗号化記憶システムであって、
前記暗号化装置は、さらに第1のＭＡＣ値生成装置と、ＭＡＣ用乱数生成装置と、第４の記憶装置とを備え、
前記第３の記憶装置は、前記第１のＭＡＣ値生成装置と同じ処理を行う第２のＭＡＣ値生成装置を備えることを特徴とする暗号化記憶システム。
【請求項１１】
請求項１０に記載の暗号化記憶システムであって、
前記制御装置がデータの書き込み信号と保存期間に関する情報を受信すると、
前記ＭＡＣ用乱数生成装置は保存期間に応じて少なくとも一つの乱数を生成し、
前記第１のＭＡＣ値生成装置は、それぞれの乱数を鍵として、前記少なくとも１つの乱数のそれぞれに対応して、前記第１の保存データのＭＡＣ値を計算し、
前記暗号化記憶システムは、前記計算の結果を前記第４の記憶装置に記憶する、
ことを特徴とする暗号化記憶システム。
【請求項１２】
請求項１１に記載の暗号化記憶システムであって、
前記制御装置がデータの保持証明信号を受信すると、
前記管理装置は、前記データに対応する、前記第４の記憶装置に記憶した当該乱数を読み出し、前記データを特定する情報と合わせて、前記第３の記憶装置に送信し、
前記第３の記憶装置は、前記データを特定する情報に従って該当データを読み出し、
前記第２のＭＡＣ生成装置は、前記受信した前記当該乱数を鍵として、前記該当データのＭＡＣ値Ｔを計算し、
前記第３の記憶装置は、前記ＭＡＣ値Ｔを前記管理装置に送信し、
前記管理装置は、前記データと前記当該乱数に対応する、前記第４の記憶装置に記憶されているＭＡＣ値を読み出し、受信した前記ＭＡＣ値Ｔとを比較し、一致していれば正しくデータ保持されているという信号を、一致しなければ不正であるという信号を返信する、
ことを特徴とする暗号化記憶システム。
【請求項１３】
請求項１０に記載の暗号化記憶システムであって、
前記暗号化装置は、さらに署名用ハッシュ値生成装置と、電子署名生成装置と、第５の記憶装置とを備え、
前記制御装置がデータの書き込み信号を受信すると、
前記署名用ハッシュ値生成装置は、前記Ｉ／Ｆを介して受信したデータのハッシュ値を計算し、
前記電子署名生成装置は、前記ハッシュ値を入力として署名値を生成し、
前記暗号化記憶システムは、前記ハッシュ値と、前記署名値を前記第５の記憶装置に記憶する、
ことを特徴とする暗号化記憶システム。
【請求項１４】
請求項１３に記載の暗号化システムであって、
前記制御装置がデータの再署名信号を受信すると、
前記管理装置は、前記第１のＭＡＣ値生成装置と前記第２のＭＡＣ値生成装置を用いて、データの保持証明を行ない、
正しくデータ保持されていることが確認できれば、前記第５の記憶装置に記憶した、前記ハッシュ値を読み出し、
前記電子署名生成装置は、前記ハッシュ値に対して新しい署名鍵で署名値を生成し、前記署名値を前記新しく生成した署名値で更新する、
ことを特徴とする暗号化記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの暗号化処理技術とその応用技術に関する。
【背景技術】
【０００２】
ＩＴ技術の普及が進むと共に、公文書など重要な文書データについても電子的に保存するようになっている。このような重要データは、長期間の保存が必要であり、最長で３０年程度の保存が義務付けられている場合もある。これらの重要文書データは今後増加の一途をたどり、ストレージを大量に消費するため、データセンタなどクラウドを利用して保存していくことになると考えられる。これらのデータは概ね暗号化された上で保管されているが、アルゴリズム危殆化や鍵漏えいの観点から、秘密鍵は定期的にと変える必要がある。たとえば、ＮＩＳＴ (National Institute of Standards and Technology)は少なくとも５年に１度、秘密鍵を更新することを要求している。しかし、データの再暗号化はデータのread/writeが大量に発生し、ストレージの性能にも影響を与える作業である。【０００３】
また、クラウドサービスでは、外部ストレージを利用する場合が多々あり、個々のストレージを完全に管理することが困難であり、鍵更新を含めたデータ管理を厳密に行うようなデータセンタやストレージは利用コストがかさむことが予想される。その一方で、鍵管理をクラウドのサービサが集約して行う場合には、再暗号化に際して、外部ストレージからネットワークを介してデータを取り出し、再暗号化を施し、さらにネットワークを介して外部ストレージに再委託するという一連の作業が必要である。【０００４】
データの再暗号化については、たとえば、以下の非特許文献１で取り上げられている。非特許文献１は、ユーザのアクセス権失効させるときに、対象データを新しい鍵で暗号化する方法を提案している。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】高山 一樹，外１名，「平文を生成しない分散ストレージ上での再暗号化手法」 ，日本データベース学会論文誌 ，日本データベース学会，２００８年１２月，第７巻、第３号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非特許文献１では、再暗号化処理の委託を実現しているが、再暗号化処理のコスト自体を削減しているわけではない。また、外部ストレージが再暗号化を正しく実行したことを検証することができない。したがって、計算および通信コストが小さい再暗号化処理技術が望まれている。
【課題を解決するための手段】
【０００７】
本発明は上記のような課題に鑑みてなされたもので、サービサ（もしくはデータの所有者）が暗号化処理を実行する方式であって、暗号化の処理コストが小さい再暗号化処理方法またはシステムを提供する。【０００８】
本発明は、また、上記システムにおいて、外部ストレージがデータを正しく保持していることを確認する方法と、データに対する電子署名を更新する方法を提供する。【０００９】
本発明は以下の2点を特徴とする。【００１０】
１．出力すべてが揃わないと入力を復元できないような変換であるAll-or-Nothing Transform (ＡＯＮＴ)と呼ばれる可逆変換と部分暗号化処理を組み合わせてデータ全体の暗号化を行い、暗号文を、部分暗号化を施した部分とそれ以外の部分に分割し、それぞれを異なる記憶装置に保存する。【００１１】
２． 秘密鍵と、部分暗号化処理した部分のみを用いて再暗号化処理を行う。【００１２】
具体的には、データを暗号化して保管する本発明の暗号化記憶システムは、データを入出力するインターフェースＩ／Ｆと、暗号化鍵生成装置と、暗号処理装置と、データ管理装置と、前記暗号化鍵生成装置で生成された秘密鍵を記憶する第１の記憶装置と、前記暗号処理装置で暗号化されたデータを記憶する第２及び第３の記憶装置と、上記装置を制御する制御装置とを備え、
前記暗号処理装置は、セレクタと、前記暗号処理装置に入力されたデータを受け取り、入力ビットのすべての値が出力ビットのそれぞれの値に影響を与える変換を行うAll-or-Nothing変換(ＡＯＮＴ)装置と、前記ＡＯＮＴ装置の出力を分割し、第１の保存データと第１の中間データを出力するデータ分割装置とを備え、
前記暗号化記憶システムは前記第１の保存データを前記第３の記憶装置に記憶し、
さらに、前記暗号処理装置は、前記暗号化鍵生成装置で生成された秘密鍵をパラメータとし、前記セレクタの出力を入力としてデータ変換を行い、第２の保存データを出力するパラメータ付きデータ攪拌装置を備え、
前記暗号化記憶システムは前記第２の保存データを前記第２の記憶装置に記憶し、
前記暗号処理装置は、さらに、前記第１の記憶装置に記憶された秘密鍵をパラメータとし、前記第２の記憶装置に記憶された前記第２の保存データを入力として前記パラメータ付きデータ攪拌装置の逆変換を行い、第２の中間データを出力するパラメータ付きデータ逆攪拌装置と、前記第２の中間データと、前記第３の記憶装置に記憶された前記第１の保存データを結合するデータ結合装置と、前記データ結合装置で結合されたデータを受け取り、前記ＡＯＮＴ装置の逆変換を行い、暗号処理装置の出力を生成するＡＯＮＴ逆変換装置とを備え、
前記セレクタは、前記データ分割装置と前記パラメータ付きデータ逆攪拌装置の出力を前記制御装置の指示に従って切り替える。
【発明の効果】
【００１３】
本発明によれば、暗号化されたデータの一部の保管を外部ストレージに委託するシステムで、外部ストレージに保管した大量のデータに影響を与えることなく、暗号化データの鍵を更新する（再暗号化する）暗号化処理方法を提供できる。
【図面の簡単な説明】
【００１４】
【図１】実施例における暗号化記憶システムの概略構成を例示する図である。
【図２】実施例における分割されたデータの対応付けを例示する図である。
【図３】実施例における暗号化記憶システムで遠隔保存の場合の機器概略構成を例示する図である。
【図４】実施例における暗号化処理装置の構成を例示する図である。
【図５】実施例における暗号化処理を例示するシーケンス図である。
【図６】実施例における復号処理を例示するシーケンス図である。
【図７】実施例における再暗号化処理を例示するシーケンス図である。
【図８】実施例におけるＡＯＮＴ変換装置の構成を例示する図である。
【図９】実施例におけるＡＯＮＴ変換装置の別構成を例示する図である。
【図１０】実施例における暗号化処理装置の別の構成を例示する図である。
【図１１】図８の暗号化処理装置における再暗号化処理を例示するシーケンス図である。
【図１２】暗号化及び復号処理におけるデータの流れを示す図である。
【発明を実施するための形態】
【００１５】
まず始めに用語を説明する。
・All-or-Nothing Transform (AONT)：出力すべてが揃わないと、入力を復元できないような変換。
・ハッシュ関数(hash function)：任意の有限長のデータから固定長の疑似乱数(ハッシュ値)を生成する関数。
・疑似乱数(pseudorandom number)：有限、もしくは無限のビット列であり、どのような方法でも真性乱数と区別することができないもの。
・真性乱数：無限ビット列であり、任意の連続する部分列が与えられても、次の1ビットを推定することができないような列のこと。
・共通鍵暗号(symmetric-key encryption)：暗号化処理と復号処理に同じ鍵を用いる暗号化技術。
・鍵：暗号化処理の際に用いる秘匿パラメータ。
・平文(plaintext)：暗号化処理前、または復号処理後のデータであり、ディジタル化されたマルチメディアデータも含まれる。
・暗号文(ciphertext)：暗号化処理されたデータ。
・ブロック暗号：入力データを一定長のデータごとに区切り(区切られた一定長データをブロックという)、鍵と共に攪拌処理を行うことで暗号化処理(encryption)または復号処理(decryption)を行う暗号技術。
・ストリーム暗号：疑似乱数生成装置に乱数列を決定する情報を与えて乱数列を生成し、この乱数列と平文を攪拌することで暗号文を生成する暗号技術。
【００１６】
以下、本発明の実施形態を、図を用いて説明する。
【実施例１】
【００１７】
（システム構成）
図１は本実施形態における暗号化処理装置を備えたデータセンタ（以下、暗号化記憶システム）の機能構成を表す図である。以下、図１に従って暗号化記憶システム（１００）の構成を説明する。【００１８】
本システムは、３つの記憶装置（記憶装置１（１０１）、記憶装置２（１０２）、記憶装置３（１０３））、暗号処理装置（１０４）、暗号化鍵生成装置（１０５）、データ管理装置（１０６）、外部とデータを送受信するインターフェース（Ｉ／Ｆ）（１０７）と、これらの装置を制御する制御装置（１０８）で構成される。また、図１に示す暗号化記憶システムは、ＣＰＵ、メモリ、記憶装置、及び入出力端末を有する計算機で実現できる。【００１９】
一般に、記憶装置１（１０１）は秘密鍵を保存するための記憶装置であり、秘密鍵はセキュアな領域に保存することが望ましい。記憶装置の各容量は特段限定されないが、以下では、記憶装置１（１０１）、２（１０２）に比べると、記憶装置３は大規模な記憶容量を持っているものとする。記憶装置２（１０２）、及び記憶装置３（１０３）は暗号文を格納するための記憶領域を提供する。暗号化鍵生成装置（１０５）は、乱数生成器であり、制御装置（１０８）の要求に応じて定められた長さのランダムなビット列（秘密鍵）を生成する。制御装置（１０８）に入力される信号（１０９）は、データ書き込み（暗号化）要求、データ読み出し（復号）要求、及びデータ再暗号化（鍵更新）要求の３つである。【００２０】
（データの対応付け）
データ管理装置（１０６）は、データのヘッダ情報や、３つの記憶装置に保存されているデータの対応付けを管理するデータベースであり、制御装置（１０８）の要求に応じて、それぞれの記憶装置から該当するデータを読み出し、暗号処理装置（１０４）に渡す。また、データ管理装置（１０６）は、暗号処理装置（１０４）から受け取ったデータをそれぞれの記憶装置に渡し、データベースにその対応を記憶する。【００２１】
図２は、データ管理装置（１０６）のデータベースで管理されているテーブル（２０１）を例示したものである。データベースで管理されるテーブル（２０１）には、データのＩＤ（２０１ａ）、データ所有者のＩＤ（２０１ｂ）、データを検索するための検索キー（２０１ｃ）など一般的な項目の他、長期保存を目的として保存期間（２０１ｄ）と、それぞれの記憶装置について、データを書き込んだ領域のアドレス（２０１ｅ、２０１ｆ、２０１ｇ）が項目として含まれる。【００２２】
なお、図１では、データ管理装置（１０６）が中心となってデータの読み書きを行っているが、データの読み書きは暗号処理装置（１０４）が直接行い、その結果をデータ管理装置（１０６）に伝えて管理してもよい。【００２３】
（システムの概要）
図３は、図１の暗号化記憶システム（１００）を、それぞれが計算機を有する２つのデータセンタで構成したシステムの概要図である。【００２４】
図３のシステムでは、暗号化記憶システム（３００）はデータセンタ１（３０１）とデータセンタ２（３０２）およびこれら２つのデータセンタを接続するネットワーク（３０３）で構成される。データセンタ１（３０１）は、記憶装置１（３１１）と記憶装置２（３１２）、暗号処理装置（３１３）、データ管理装置（３１４）、通信装置１（３１５）で構成され、データセンタ２（３０２）は記憶装置３（３２１）と通信装置２（３２２）で構成される。このような構成例として、データセンタ１（３０１）をセキュアなプライベートクラウド(private cloud)とし、データセンタ２（３０２）をコストの安いストレージであるパブリッククラウド(public cloud)とすることで、データ記憶の役割の分担を図ることができる。ネットワーク（３０３）は専用線でもよいし、インターネットなどの一般回線でもよい。【００２５】
図３のシステムにおいて、データ所有者（３０４）は、保管して欲しいデータ（３０５）を、ネットワーク（３０３）を介してサービサ（３０６）に委託する。サービサ（３０６）を介して暗号化記憶システム（３００）に委託されたデータは、暗号処理装置（３１３）で暗号化され、データ所有者（３０４）の指示に基づいて、保管して欲しいデータ（３０５）を、秘匿化すべきデータとそうでないデータとに分け、これらのデータはデータセンタ１（３０１）とデータセンタ２（３０２）に分割して保存される。記憶装置２（３１２）と記憶装置３（３２１）には、保管して欲しいデータ（３０５）を暗号化したデータが格納されるが、記憶装置２（３１２）に格納される秘匿化すべきデータに対しては、秘匿化のレベルを高めるために上記の変換（暗号化）に加えて、更にデータの攪拌処理が行われる。なお、ネットワーク（３０３）がインターネットなどの一般回線の場合には、ＩＰＳｅｃやＴＬＳなどの暗号機能により、通信路全般を保護することが望ましい。【００２６】
また、個人が大量のデータを保持しており、その大部分をパブリッククラウドに保存したい場合に、記憶装置１（３１１）および記憶装置２（３１２）として手元のハードディスクやＵＳＢメモリなどを利用し、記憶装置３（３２１）としてパブリッククラウドを利用してもよい。【００２７】
（暗号処理装置の機能）
図４は本実施形態における暗号処理装置（１０４）の機能構成を表す図である。【００２８】
暗号処理装置（４００）は、暗号化処理で用いられるＡＯＮＴ装置（又はＡＯＮＴ変換装置）（４０１）、データ所有者（３０４）の指示に基づいてデータ（３０５）を分割するデータ分割装置（４０２）、暗号化されたデータを更に攪拌させるためのパラメータ付きデータ攪拌装置（４０３）と、復号処理で用いられるＡＯＮＴ逆変換装置（４０４）、分割されたデータを元の１つのデータに結合するデータ結合装置（４０５）、攪拌されたデータを元に戻すパラメータ付きデータ逆攪拌装置（４０６）、およびパラメータ付きデータ攪拌装置（４０３）へのデータ入力を制御するセレクタ（４０７）で構成される。セレクタ（４０７）は、データ書き込み要求があった場合にはデータ分割装置（４０２）の出力をパラメータ付きデータ攪拌装置（４０３）に渡し、データ再暗号化要求があった場合には、パラメータ付きデータ逆攪拌装置（４０６）の出力をパラメータ付きデータ攪拌装置（４０３）に渡す。【００２９】
ここで、ＡＯＮＴ(All-or-Nothing Transform)は、出力すべてが揃わないと入力を復元できないようなデータ変換であり、可逆変換と部分暗号化処理を組み合わせたデータ全体の暗号化である。【００３０】
パラメータ付きデータ攪拌装置（４０３）および逆攪拌装置（４０６）は、たとえばブロック暗号やストリーム暗号などを用いてもよい。また、公開鍵を用いてもよい。以下の実施例では共通鍵暗号を用いる場合について説明する。この場合、秘密鍵がパラメータに相当する。ブロック暗号は、入力データを一定長のデータごとに区切り(区切られた一定長データをブロックという)、鍵と共に攪拌処理を行うことで暗号化処理(encryption)または復号処理(decryption)を行う暗号技術であり、ストリーム暗号は、疑似乱数生成装置に乱数列を決定する情報を与えて乱数列を生成し、この乱数列と平文を攪拌することで暗号文を生成する暗号技術である。【００３１】
（暗号化及び復号処理におけるデータの流れ）    
図１２に、図４に示した暗号処理装置（１０４）によって実行される暗号化及び復号の処理におけるデータの流れを示す。図１２は、図４における各部の関連をデータの流れとして示したものである。図１２及び以下の説明では、Ｄは、ＡＯＮＴ装置（４０１）によりＤを変換したデータを表し、Ｄ→Ｄは、ＡＯＮＴ逆変換装置（４０４）による逆変換を表し、Ｄ＊は、パラメータ付きデータ攪拌装置（４０３）によりＤを攪拌したデータを表し、Ｄ＊→Ｄは、パラメータ付きデータ逆攪拌装置（４０６）による逆攪拌を表す。【００３２】
（１）データ分割：  平文である入力データＤをＡＯＮＴ装置（４０１）で変換して得られたＤを、データ分割装置（４０２）で、非書き換えデータである第１の保存データＤＲと書き換えデータである第１の中間データＤＭとに分割し、第１の保存データＤＲを記憶装置３（４１３）に保存する。【００３３】
（２）データ攪拌：  暗号鍵生成装置（４１５）で生成した秘密鍵Ｋ１を記憶装置１（４１１）に保存すると共に、秘密鍵Ｋ１を用いて、パラメータ付きデータ攪拌装置（４０３）により、第１の中間データＤＭをデータ攪拌した第２の保存データＤＭ＊を生成し、記憶装置２（４１２）に保存する。【００３４】
（３）データ逆攪拌：  記憶装置１（４１１）から取り出した秘密鍵Ｋ１を用いて、パラメータ付きデータ逆攪拌装置（４０６）により、記憶装置２（４１２）から取り出した第２の保存データＤＭ＊をデータ逆攪拌して第２の中間データＤＭを生成する。【００３５】
（４）データ合成：  生成した第２の中間データＤＭと記憶装置３（４１３）から取り出した第１の保存データＤＲとを、データ結合装置（４０５）により、データ合成してデータＤを生成し、データ合成した結果をＡＯＮＴ逆変換装置（４０４）により逆変換すると出力データＤ（入力データの平文と同じ）が得られる。【００３６】
（５）再暗号化：  上記ステップ（３）で用いた秘密鍵Ｋ１を用いて、記憶装置２（４１２）に保存されていた第２の保存データＤＭ＊をデータ逆攪拌して第２の中間データＤＭを生成し、これを再度、新たな秘密鍵を用いて、上記ステップ（２）と同等に、データ攪拌して第２の保存データＤＭ＊を生成して、記憶装置２（４１２）に保存する。【００３７】
パラメータ付きデータ攪拌装置（４０３）の入力には、通常のデータ攪拌のためのデータ、あるいは、再暗号化のためのデータのいずれかを選択するセレクタ（４０７）が設けられている。また、データ攪拌はデータの暗号化処理に相当し、データ逆攪拌はデータの復号処理に相当する。【００３８】
（暗号化処理のシーケンス）
図５は本実施形態における暗号化記憶システム（１００）のデータ書き込み処理の流れを表すシーケンス図である。以下、図５に沿って暗号化記憶システム（１００）の暗号化処理手順を説明する。【００３９】
ステップ１（５０２）：暗号化記憶システム（１０１）は、外部からデータ書き込み要求を受け取ると、Ｉ／Ｆ（１０７）を介して平文データを受信する。受信したデータは暗号処理装置（１０４）に入力される。【００４０】
ステップ２（５０３）：暗号化鍵生成装置（１０５）は、制御装置（１０８）からデータ書き込み要求信号を受け取ると、秘密鍵を生成する。【００４１】
ステップ３（５０４）：暗号処理装置（４００（１０４））は、平文データを受け取り、ＡＯＮＴ装置（４０１）を用いて平文データを変換（暗号化）する。【００４２】
ステップ４（５０５）：ＡＯＮＴ装置（４０１）の出力（中間データ）をデータ分割装置（４０２）で２つ（秘匿化すべきデータ２（第１の中間データ）、そうでないデータ３（第１の保存データ））に分割する。データ３は、データ管理装置（４１４（１０６））を介して記憶装置３（４１３（１０３））に格納する。データをどのように分割するか、即ち、データのどの部分を秘匿化するかは、ユーザの指示に基づいて決められる。【００４３】
ステップ５（５０６、５０７）：ステップ２（５０３）で生成した秘密鍵をパラメータとして、パラメータ付きデータ攪拌装置（４０３）でデータ２を攪拌する。パラメータ付きデータ攪拌装置（４０３）の出力はデータ管理装置（４１４（１０６））を介して記憶装置２（４１２（１０２））に格納する。【００４４】
ステップ６（５０８）：秘密鍵を記憶装置１（４１５（１０５））に格納する。【００４５】
（復号処理のシーケンス）
図６は本実施形態における暗号化記憶システム（１００）のデータ読み出し処理の流れを表すシーケンス図である。以下、図６に沿って暗号化記憶システム（１００）の復号処理手順を説明する。【００４６】
ステップ１（６０２）：暗号化記憶システム（１００）は、外部からデータ読み出し要求を受け取ると、記憶装置１（４１１（１０１））から読み出し要求に従って該当する秘密鍵を、記憶装置２（４１２（１０２））からデータ２を、記憶装置３からデータ３をデータ管理装置（４１３（１０３））を介してそれぞれ読み出す。【００４７】
ステップ２（６０３）：パラメータ付き逆攪拌装置（４０６）は、秘密鍵をパラメータとして、データ２を変換（逆攪拌）する。【００４８】
ステップ３（６０４）：データ結合装置（４０５）は、パラメータ付き逆攪拌装置（４０６）の出力とデータ３を結合する。【００４９】
ステップ４（６０５）：ＡＯＮＴ逆変換装置（４０７）は、結合したデータを変換（復号）する。【００５０】
ステップ５（６０６）：ステップ４（６０５）の出力である平文データを、インターフェース（１０７）を介して出力データ（１１０）として出力する。【００５１】
（再暗号化処理のシーケンス）
図７は本実施形態における暗号化記憶システム（１００）の再暗号化処理の流れを表すシーケンス図である。以下、図７に沿って暗号化記憶システム（１００）の再暗号化処理手順を説明する。【００５２】
ステップ１（７０２）：暗号化記憶システム（１００）は、外部からデータ読み出し要求を受け取ると、記憶装置１（４１１（１０１））から読み出し要求に従って該当する秘密鍵を読み出し、記憶装置２（４１２（１０２））からデータ２を読み出す。【００５３】
ステップ２（７０３）：パラメータ付き逆攪拌装置（４０６）は、秘密鍵をパラメータとして、データ２を変換（逆攪拌）する。【００５４】
ステップ３（７０４）：暗号化鍵生成装置（４１５（１０５））は、新しい秘密鍵を生成する。【００５５】
ステップ４（７０５）：パラメータ付き攪拌装置（４０３）は、新しい秘密鍵をパラメータとして、ステップ２で変換されたデータを変換（攪拌）する。【００５６】
ステップ５（７０６）：ステップ３で生成した新しい秘密鍵で、記憶装置１（４１１（１０１））に格納されていた秘密鍵のデータを上書きする。【００５７】
ステップ６（７０６）：ステップ４の出力で、記憶装置２（４１２（１０２））に格納されていたデータ２を上書きする。【００５８】
このように、本実施形態における再暗号化処理では、ＡＯＮＴ装置（４０１）の出力を記憶装置２（４１２（１０２））と記憶装置３（４１３（１０３））に分割しておくことで、記憶装置１（４１１（１０１））と記憶装置２（４１２（１０２））に記憶されているデータだけで再暗号化処理を行うことができる。すなわち、再暗号化を行わないデータが格納されている記憶装置３（４１３（１０３））に対するアクセスが発生しないため、通信負荷および記憶装置の処理負荷を小さくすることができる。記憶装置３（４１３（１０３））がネットワーク上にある外部ストレージであり、記憶装置３（４１３（１０３））に分割されたデータの大部分が格納されている場合に、特に上記の効果が顕著である。【００５９】
（ＡＯＮＴサンプル（１））
図８は本実施形態におけるＡＯＮＴ変換装置（８００（４０１））の機能構成およびデータ処理フローを表す図である。図８は２つのハッシュ関数（８１１、８１２）と１つの疑似乱数生成装置（８１３）、排他的論理和を用いて構成される。図中の「○に十文字」の記号は排他的論理和処理を表す。ハッシュ関数(hash function)は、任意の有限長のデータから固定長の疑似乱数(ハッシュ値)を生成する関数である。【００６０】
図８に示したＡＯＮＴ変換装置（８００（４０１））による暗号化処理を説明する。
（１）平文データ（８０１）を構成する所定の長さのデータＸを、ｎ１ビットのデータ（ＸＬ）とｎ２ビットのデータ（ＸＲ）に分割する。
（２）ハッシュ関数１（８１１）によってＸＲから生成したハッシュ値とＸＬとの排他的論理和により第１のデータ（Ｔ１）を生成する。
（３）第１のデータ（Ｔ１）を入力として疑似乱数生成装置（８１３）によって生成した疑似乱数とＸＲとの排他的論理和により第２のデータ（Ｔ２）を生成する。
（４）ハッシュ関数２（８１２）によって第２のデータ（Ｔ２）から生成したハッシュ値と第１のデータ（Ｔ１）との排他的論理和により第３のデータ（Ｔ３）を生成する。
（５）第３のデータ（Ｔ３）と第２のデータ（Ｔ２）を連結して出力データ（Ｙ）として中間データ（８０２）を生成する。【００６１】
２つのハッシュ関数（８１１、８１２）は同じ関数を用いてもよいし、別の関数を用いてもよい。異なるハッシュ関数を用いる代わりに、ハッシュ関数の入力の一部を定数とし、ハッシュ関数１（８１１）とハッシュ関数２（８１２）で異なる定数を用いてもよい。ＡＯＮＴ逆変換装置（４０４）は、図８の処理を下から逆順に行えばよい。【００６２】
データ分割装置（４０２）は、ＡＯＮＴ変換装置（４０１）の出力に対して任意の分割を行えばよい。ただし、セキュリティ上の観点から、分割の断片があまりに小さいことは望ましくない。一般的に、それぞれの断片は１２８ビット以上であることが望ましい。データ結合装置（４０５）は、データ分割装置（４０２）で分割したデータを結合して元通りに復元する処理を行う。【００６３】
（ＡＯＮＴサンプル（２））
図９は本実施形態におけるＡＯＮＴ変換装置（４０１）を実現する別の方法について、機能構成およびデータ処理フローを表す図である。図９のＡＯＮＴ変換装置（９００（４０１））は、乱数生成装置（９１１）、疑似乱数生成装置（９１２）、データ圧縮装置（９１３）、および排他的論理和で構成される。【００６４】
図９に示したＡＯＮＴ変換装置（８００（４０１））による暗号化処理を説明する。
（１）乱数生成装置（９１１）で生成したｎ１ビットのデータ（Ｘ１）を入力として疑似乱数生成装置（９１２）によって生成した乱数データと、平文データ（９０１）を構成するｎ２ビットのデータ（Ｘ２）との排他的論理和により第１のデータ（Ｚ１）を生成する。
（２）第１のデータ（Ｚ１）をデータ圧縮装置（９１３）によって圧縮した圧縮データと、ｎ１ビットのデータ（Ｘ１）との排他的論理和により第２のデータ（Ｚ２）を生成する。
（３）第２のデータ（Ｚ２）と第１のデータ（Ｚ１）を連結してｎ１＋ｎ２ビットの出力データ（Ｙ）として中間データ（９０２）を生成する。【００６５】
データ圧縮装置（９１３）は、ハッシュ関数を用いてもよいし、ｎ２ビットのデータをｎ１ビットごとに区切って排他的論理和してもよい。データ圧縮装置を排他的論理和で構成した場合には、データ分割装置（４０２）はＡＯＮＴ変換装置（９００（４０１））の出力を左側ｎ１ビットと右側ｎ２ビットに分割する。疑似乱数生成装置（９１２）は、ＭＵＧＩやＥｎｏｃｏｒｏなどを用いてもよいし、ＡＥＳをカウンタモードで用いてもよい。また、ハッシュ関数を使った鍵導出関数を用いてもよい。【００６６】
疑似乱数(pseudorandom number)は、有限、もしくは無限のビット列であり、どのような方法でも真性乱数と区別することができないものであり、真性乱数は、無限ビット列であり、任意の連続する部分列が与えられても、次の1ビットを推定することができないような列のことである。【００６７】
また、本実施形態におけるＡＯＮＴ変換装置（４０１）は、図８、図９に挙げた方法に限らず、一般的に知られている他の方法を適用してもよい。
【実施例２】
【００６８】
（後処理がストリーム暗号の場合の再暗号化処理（機能構成））
図１０は、図４の暗号処理装置（４００）で、パラメータ付きデータ攪拌装置（４０３）およびパラメータ付きデータ逆攪拌装置（４０６）をストリーム暗号の暗号化関数と復号関数で実現した場合の実施例２の機能構成を表す図である。【００６９】
パラメータ付きデータ攪拌装置（４００）は、疑似乱数生成装置（１０５１）と加算装置２（１０５２）で構成され、パラメータ付きデータ逆攪拌装置（４０６）は減算装置（１０５３）で構成される。データの再暗号化では、疑似乱数生成器と（１０５１）と加算装置１（１０５４）を用いる。ここで、加算装置１、２（１０５４、１０５２）は算術加算もしくは排他的論理和を行う装置である。また、減算装置（１０５３）は加算装置の逆演算、即ち、ｘ＋ｙのデータをｘとｙに分ける演算を行う装置である。【００７０】
図１０の機能構成では、暗号化鍵生成装置（１００４（１０５））の出力をそのまま記憶装置１（１００１（１０１））に格納するのではなく、加算装置１（１０５４）の出力を書き込む。初回書き込み時には、あらかじめ記憶装置１（１００１（１０１））のデータをゼロリセットしておく。【００７１】
図１０の再暗号化処理では、暗号化鍵生成装置（１００４（１０５））で生成された鍵に基づいて、疑似乱数生成装置（１０５１）によって乱数を生成する。その後、加算装置２（１０５２）により、この乱数と、記憶装置２（１００２（１０２））に保存された第２の保存データ（あるいは、入力された平文を変換（暗号化）した結果を分割した秘匿化対象の第１の中間データ）を加算した結果を記憶装置２（１００２（１０２））に保存する。同様に、加算装置１（１０５４）により、この乱数と、記憶装置１（１００１（１０１））に保存された鍵情報を加算した結果を記憶装置１（１００１（１０１））に保存する。上記の処理を、再暗号化の際に実行することで、保存データ及び鍵情報のストリーム暗号が生成される。即ち、再暗号化の際に、実施例１のデータ攪拌及びデータ逆攪拌の代わりに、実施例２ではストリーム暗号が生成される。【００７２】
また、減算装置（１０５３）により、記憶装置２（１００２（１０２））に保存されていた第２の保存データから、加算されていた乱数を減算した結果と、記憶装置３（１００３（１０３））に保存されていた第１の保存データとを合成し、更に、この合成結果を逆変換（復号）することで元の平文を出力データとして出力できる。（データ出力時の処理の詳細は実施例１と同様であるため、図１０ではその詳細は図示せず。）
（後処理がストリーム暗号の場合の再暗号化処理のシーケンス）
図１１は、図１０の暗号処理装置（１０００（１０４））で再暗号化処理を行う場合の処理の流れを表すシーケンス図である。以下、図１１に沿って暗号化記憶システム（１００）の再暗号化処理手順を説明する。【００７３】
ステップ１（１１０１）：暗号化記憶システム（１００）は、外部からデータ読み出し要求を受け取ると、記憶装置１（１００１（１０１））から読み出し要求に従って該当するデータ１（鍵データ）を、記憶装置２（１００２（１０２））からデータ２（中間データ）を読み出す。【００７４】
ステップ２（１１０２）：暗号化鍵生成装置（１００４（１０５））は、新しい秘密鍵を生成する。疑似乱数生成装置（１０５１）は、新しい秘密鍵から鍵ストリームを生成する。【００７５】
ステップ３（１１０３）：加算装置１（１０５４）は、データ１に鍵ストリームを加算し、その計算結果で記憶装置１（１００１（１０１））に格納されているデータ１を上書きする。【００７６】
ステップ４（１１０４）：加算装置２（１０５２）は、データ２に鍵ストリームを加算し、その計算結果で記憶装置２（１００２（１０２））に格納されているデータ２を上書きする。【００７７】
このように、図４の暗号処理装置において、パラメータ付きデータ攪拌装置（４０３）をストリーム暗号で実現した場合、復号を行わずに再暗号化処理を行うことが可能であり、一般的な構成に比べて情報漏えいの危険性が低いと期待できる。
【実施例３】
【００７８】
（追加機能１：データの保持証明）
記憶装置３（１０３）が外部ストレージである場合、暗号化記憶システム（１００）は、外部ストレージが正しくデータを保管しており、データの紛失や改ざんが行われていないことを確認できる機能を持っていることが望ましい。これは、たとえば、外部ストレージが保管している管理ログなどにより確認できる。【００７９】
ただし、管理ログは外部ストレージ自身が生成しているものであるため、暗号学的な信頼性は保証できない。そこで、管理装置（１０６）もしくは暗号処理装置（１０４）がＭＡＣ(Message Authentication Code) 生成装置１を備え、暗号化記憶システム（１００）がＭＡＣ用鍵とＭＡＣを保存する記憶装置４を備えている場合に、暗号学的にデータの保持証明を行う方法について説明する。【００８０】
一般に、ＭＡＣは、共通鍵とメッセージを入力とする、ハッシュ関数に類似したＭＡＣ関数の出力であり、一種の「タグ」である。送信側は、共通鍵を用いてメッセージから生成されたＭＡＣとメッセージを受信側に送信し、受信側では、共通鍵を用いて受け取ったメッセージから生成したＭＡＣと送信側から送られたＭＡＣとが一致するかどうかを判定して、メッセージの真正性を確認する。また、下記のデータ保持証明では、受信側の記憶装置３に上記の送信側のＭＡＣ生成装置と同じ演算を行うＭＡＣ生成装置２が必要である。【００８１】
（１）事前準備（データの保存時の処理）
ステップ１：暗号化記憶システム（１００）は、データの書き込み要求を受けるごとに、複数個の乱数ｒ＿１、ｒ＿２、…、ｒ＿Ｔを生成する。乱数の生成には、暗号化鍵生成装置（１０５）を用いてもよいし、別途乱数生成器を用意してもよい。【００８２】
ステップ２：暗号化記憶システム（１００）は、それぞれの乱数を鍵として、記憶装置３（１０３）に書き込むデータのＭＡＣ値を計算し、乱数とＭＡＣ値をペアにして保管しておく。このデータを保持する記憶装置４は、記憶装置１（１０１）と同じくセキュアに管理された領域であることが望ましい。【００８３】
（２）データの保持証明
ステップ１：暗号化記憶システム（１００）は、記憶装置３（１０３）を保持する外部ストレージに乱数ｒ＿ｉと、データのＩＤ＿ｊを送信する。【００８４】
ステップ２：外部ストレージは、乱数ｒ＿ｉとデータＤ＿ｊを用いてＭＡＣ値を計算し、暗号化記憶システム（の本体）に返信する。【００８５】
ステップ３：暗号化記憶システム（１０１）は、受信したＭＡＣ値が記憶装置４に保管されているＭＡＣ値と一致するかどうか（データが真正であるかどうか）を確認する。【００８６】
上記の方法により、一定回数のデータ保持確認が可能である。外部ストレージが独自に再暗号化を行う場合には、記憶装置３（１０３）に保管されているデータが書き換えられてしまうため、上記のデータ保持証明方法は適用できない。たとえば、非特許文献１の再暗号化方法で再暗号化を行った場合、上記の方法では、データの真正性を確認することができない。上記のデータ保持証明方法は、再暗号化により記憶装置３のデータが書き換えられない場合に適用可能な方法である。【００８７】
一般に、文書の長期保存が義務付けられているケースでは、保存しなければならない年数が決まっていることが多い。そこで、図３のようなシステムであれば、データ所有者がデータの暗号化及び保管をサービサに依頼する際に、保存期間を設定することで、事前に計算しておく乱数の個数を決めることができる。これにより、乱数およびＭＡＣ値を保存するためのストレージ領域を最適化することができる。【００８８】
データの保持証明を行う場合には、図２に記載したデータ管理装置（１０６）が保持しているデータベース（２０１）に、乱数とＭＡＣ値の対をすべて保存し、データの対応付けを行う。乱数とＭＡＣ値は外部に漏れないよう、暗号化して保存する。この秘密鍵は、記憶装置１（１０１）などのセキュアな領域に保存する。または、乱数とＭＡＣ値そのものを記憶装置１（１０１）などのセキュアな領域に保存してもよい。
【実施例４】
【００８９】
（追加機能２：署名の更新）
データの真正性が要求される文書の場合、データには電子署名が付されていることが一般的である。これらの電子署名についても、署名鍵や公開鍵証明書には有効期限が設定されており、定期的な再署名が必要となる。そこで、本発明の実施形態に合わせて電子署名の更新を行う方法について説明する。以下のシーケンスでは、管理装置（１０６）もしくは暗号処理装置（１０４）が電子署名生成装置を備えているものとする。【００９０】
ステップ１：記憶装置３（１０３）を管理する外部ストレージに対して、データの存在証明を行い、データに対する改ざんが行われていないことを確認する。【００９１】
ステップ２：もともと計算されていたハッシュ値に対して、新しい署名鍵で再署名を施す。【００９２】
署名についても、データの保持証明と同じように、データ管理装置（１０６）が保持しているデータベース（２０１）に電子署名値を保存する。【００９３】
データ所有者（３０４）が署名処理を行う必要がある場合には、サービサ（３０６）がデータの保持証明を行った後で、該当データのハッシュ値をデータ所有者（３０４）に送信し、再署名処理を行えばよい。【００９４】
上記の再署名方式では、平文データのハッシュ値を再計算するのではなく、データに改ざんが無いことを確認したうえで、平文データのハッシュ値に再署名を施すことで、再署名に要する通信量と計算量を大幅に削減している。厳密な管理が要求されるような場合であれば、ステップ１の結果にタイムスタンプを付して保管しておくことで、再署名手続きの妥当性を保証することができる。
【符号の説明】
【００９５】
１００：暗号化記憶システム、１０１：記憶装置１、１０２：記憶装置２、１０３：記憶装置３、１０４：暗号処理装置、１０５：暗号化鍵生成装置、１０６：データ管理装置、１０７：Ｉ／Ｆ、１０８：制御装置、２０１：データベース、４０１：ＡＯＮＴ装置、４０２：データ分割装置、４０３：パラメータ付きデータ攪拌装置、４０４：ＡＯＮＴ逆変換装置、４０５：データ結合装置、４０６：パラメータ付きデータ逆攪拌装置
【図１】
0005964460.tif 000002
【図２】
0005964460.tif 000003
【図３】
0005964460.tif 000004
【図４】
0005964460.tif 000005
【図５】
0005964460.tif 000006
【図６】
0005964460.tif 000007
【図７】
0005964460.tif 000008
【図８】
0005964460.tif 000009
【図９】
0005964460.tif 000010
【図１０】
0005964460.tif 000011
【図１１】
0005964460.tif 000012
【図１２】
0005964460.tif 000013