(57)【特許請求の範囲】
【請求項１】
データの暗号化システムであって、
第１キーを用いた第１暗号化方式で前記データを暗号化し、第１暗号化データを生成するための第１暗号化部と、
第２キーを用いた第２暗号化方式で前記第１暗号化データを暗号化し、第２暗号化データを生成するための第２暗号化部とを備え、前記第２暗号化方式は、データのシフト量を規定している前記第２キーに基づいてシフト演算を行う暗号化方式、または、データの反転位置を規定している前記第２キーに基づいてＸＯＲ演算を行う暗号化方式であり、
生成された前記第２暗号化データを格納するためのデータ記憶部と、
現在の前記第１キーおよび現在の前記第２キーの両方の更新指示を受け付けたことに基づいて、現在の前記第１キーを新たな前記第１キーに更新するとともに、現在の前記第２キーを新たな前記第２キーに更新するためのキー更新部と、
現在の前記第２キーの更新時に、現在の前記第２キーで暗号化されている前記第２暗号化データを、新たな前記第２キーで暗号化されている状態に変換するデータ更新部と、
現在の前記第２キーと新たな前記第２キーとの間の差分を算出するための算出部とを備え、
前記データ更新部は、前記差分を用いて、現在の前記第２キーで暗号化されている前記第２暗号化データを、現在の前記第２キーで復号化せずに、新たな前記第２キーで暗号化されている状態に変換し、
前記キー更新部による更新後の前記第２キーで、前記データ更新部による変換後の前記第２暗号化データを前記第１暗号化データに復号化するための第１復号化部と、
前記キー更新部による更新前の前記第１キーで、前記第１復号化部による復号化で得られた前記第１暗号化データを前記データに復号化するための第２復号化部とを備える、暗号化システム。
【請求項２】
前記データ更新部は、前記第２暗号化データの変換後に、前記差分を削除する、請求項１に記載の暗号化システム。
【請求項３】
変換処理前における前記第２暗号化データのデータサイズと、変換処理後における前記第２暗号化データのデータサイズとは等しい、請求項１または２に記載の暗号化システム。
【請求項４】
前記データ記憶部は、前記第２暗号化データと当該第２暗号化データの更新日時とを互いに関連付けて格納し、
前記暗号化システムは、さらに、
過去の前記第１キーと当該第１キーの生成日時とを現在の第１キーで暗号化した上で履歴情報として格納する履歴情報記憶部と、
現在の前記第２キーを現在の前記第１キーで暗号化した上で第２キー情報として格納するための第２キー記憶部とを備える、請求項１〜３のいずれか１項に記載の暗号化システム。
【請求項５】
前記キー更新部は、
現在の前記第１キーの更新指示を受け付けたことに基づいて、前記履歴情報を現在の前記第１キーで復号化し、
現在の前記第１キーを過去の第１キーとして当該第１キーと当該第１キーの生成日時とを前記履歴情報に追加し、
当該履歴情報を新たな前記第１キーで暗号化する、請求項４に記載の暗号化システム。
【請求項６】
前記キー更新部は、
現在の前記第２キーの更新指示を受け付けたことに基づいて、前記第２キー情報を現在の前記第１キーで復号化し、
復号化処理後の前記第２キー情報に含まれる現在の前記第２キーを新たな前記第２キーで置換し、
置換処理後の前記第２キー情報を新たな前記第１キーで暗号化する、請求項４または５に記載の暗号化システム。
【請求項７】
前記暗号化システムは、前記第２暗号化データの更新日時が保管期間を過ぎたことに基づいて、前記第２暗号化データを削除するための削除部をさらに備え、
前記キー更新部は、
前記第２暗号化データが削除されたことに基づいて、前記履歴情報を現在の前記第１キーで復号化し、
復号化処理後の前記履歴情報に含まれる過去の第１キーの中から前記保管期間が過ぎている第１キーを削除し、
削除処理後の前記履歴情報を現在の前記第１キーで再び暗号化する、請求項４〜６のいずれか１項に記載の暗号化システム。
【請求項８】
前記第２復号化部は、生成日時が前記第２暗号化データの更新日時よりも前である最新の第１キーで前記第１暗号化データを前記データに復号化する、請求項４〜７のいずれか１項に記載の暗号化システム。
【請求項９】
前記暗号化システムは、互いにネットワークで接続されているクライアントとサーバーとを備え、
前記クライアントは、
現在の前記第１キーを格納するための第１キー記憶部を含み、
前記サーバーは、
前記第２キー記憶部と、
前記履歴情報記憶部と、
前記データ記憶部とを含む、請求項４〜８のいずれか１項に記載の暗号化システム。
【請求項１０】
前記暗号化システムは、互いにネットワークで接続されているクライアントとサーバーとを備え、
前記クライアントは、
現在の前記第１キーを格納するための第１キー記憶部と、
前記第２キー記憶部と、
前記履歴情報記憶部とを含み、
前記サーバーは、
前記データ記憶部を含む、請求項４〜８のいずれか１項に記載の暗号化システム。
【請求項１１】
前記データから前記第２暗号化データへの暗号化処理および前記第２暗号化データから前記データへの復号化処理は、前記クライアントおよび前記サーバーの少なくとも一方によって実行される、請求項９または１０に記載の暗号化システム。
【請求項１２】
データの暗号化システムにおけるコンピュータによって実行されるデータの暗号化時に用いられるキーの更新方法であって、
前記コンピュータが、第１キーを用いた第１暗号化方式で前記データを暗号化し、第１暗号化データを生成するステップと、
前記コンピュータが、第２キーを用いた第２暗号化方式で前記第１暗号化データを暗号化し、第２暗号化データを生成するステップとを備え、前記第２暗号化方式は、データのシフト量を規定している前記第２キーに基づいてシフト演算を行う暗号化方式、または、データの反転位置を規定している前記第２キーに基づいてＸＯＲ演算を行う暗号化方式であり、
前記コンピュータが、生成された前記第２暗号化データを前記暗号化システムの記憶装置に格納するステップと、
前記コンピュータが、現在の前記第１キーおよび現在の前記第２キーの両方の更新指示を受け付けたことに基づいて、現在の前記第１キーを新たな前記第１キーに更新するとともに、現在の前記第２キーを新たな前記第２キーに更新するステップと、
前記コンピュータが、現在の前記第２キーの更新時に、現在の前記第２キーで暗号化されている前記第２暗号化データを、新たな前記第２キーで暗号化されている状態に変換するステップと、
前記コンピュータが、現在の前記第２キーと新たな前記第２キーとの間の差分を算出するステップと、
を備え、
前記変換するステップでは、前記コンピュータが前記差分を用いたビットの操作を実行することで、現在の前記第２キーで暗号化されている前記第２暗号化データを、現在の前記第２キーで復号化せずに、新たな前記第２キーで暗号化されている状態に変換する処理を実行し、
前記更新するステップでの更新後の前記第２キーで、前記変換するステップでの変換後の前記第２暗号化データを前記第１暗号化データに復号化するステップと、
前記更新するステップでの更新前の前記第１キーで、前記復号化するステップで得られた前記第１暗号化データを前記データに復号化するステップとを備える、更新方法。
【請求項１３】
データの暗号化システムにおけるコンピュータによって実行可能で、データの暗号化時に用いられるキーの更新プログラムであって、
前記コンピュータに、
第１キーを用いた第１暗号化方式で前記データを暗号化し、第１暗号化データを生成するステップと、
第２キーを用いた第２暗号化方式で前記第１暗号化データを暗号化し、第２暗号化データを生成するステップとを実行させ、前記第２暗号化方式は、データのシフト量を規定している前記第２キーに基づいてシフト演算を行う暗号化方式、または、データの反転位置を規定している前記第２キーに基づいてＸＯＲ演算を行う暗号化方式であり、
前記コンピュータに、さらに、
生成された前記第２暗号化データを前記コンピュータの記憶装置に格納するステップと、
現在の前記第１キーおよび現在の前記第２キーの更新指示を受け付けたことに基づいて、現在の前記第１キーを新たな前記第１キーに更新するとともに、現在の前記第２キーを新たな前記第２キーに更新するステップと、
現在の前記第２キーの更新時に、現在の前記第２キーで暗号化されている前記第２暗号化データを、新たな前記第２キーで暗号化されている状態に変換するステップと、
現在の前記第２キーと新たな前記第２キーとの間の差分を算出するステップと、
を実行させ、
前記変換するステップでは、前記差分を用いたビットの操作が実行されることで、現在の前記第２キーで暗号化されている前記第２暗号化データを、現在の前記第２キーで復号化せずに、新たな前記第２キーで暗号化されている状態に変換する処理を実行させ、
前記コンピュータに、さらに、
前記更新するステップでの更新後の前記第２キーで、前記変換するステップでの変換後の前記第２暗号化データを前記第１暗号化データに復号化するステップと、
前記更新するステップでの更新前の前記第１キーで、前記復号化するステップで得られた前記第１暗号化データを前記データに復号化するステップとを実行させる、更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、暗号化されたデータを管理する暗号化システム、データの暗号化時に用いられるキーの更新方法、および当該キーの更新プログラムに関する。
【背景技術】
【０００２】
近年、クラウドサービスが普及している。クラウドサービスの利用により、たとえば、社内システムによって従業員に提供されていたサービスが、クラウド上のサーバーによって安価に提供される。社内システムにおいては、社内の運用者がデータベースを管理するため、情報が外部に漏えいするリスクが少ない。クラウドサービスにおいては、サーバー内のデータベースが第三者の運用者に閲覧され得るため、情報が外部に漏えいするリスクがある。したがって、機密データは、クラウドサーバーでは暗号化された上で管理されることが望ましい。
【０００３】
このような暗号化技術に関し、特開２０１４−１７７６３号公報（特許文献１）は、「暗号更新を希望する利用者側の装置の負荷を軽減しながら、暗号化データが記憶されたデータベースの管理者に平文や復号用情報を与えることなく、暗号更新を行う技術」を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７７６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、データの暗号化には暗号化キー（以下、「キー」ともいう。）が用いられる。キーは、定期的に更新されることがセキュリティ上好ましい。キーの更新時には、データベースは、更新後のキーに合わせて再暗号化される必要がある。
【０００６】
再暗号化処理は、たとえば、ネットワークを介してクラウドサーバーに接続されているクライアントによって実行される。より具体的には、クライアントは、クラウドサーバーからデータを取得し、当該データを更新前のキーで復号化し、当該データを更新後のキーで再暗号化し、当該データをクラウドサーバーに格納する。数百万件のデータがデータベース上で管理されている場合には、再暗号化処理に時間がかかり、サービスの提供に支障が生じる可能性がある。
【０００７】
特許文献１に開示される技術は、新たな暗号化キーを生成する度に、暗号化されているデータを新たな暗号化キーで暗号化する。このように、当該技術においては、データが暗号化キーで何重にも暗号化されているため、データの復号時に時間がかかる。また、データのサイズは、暗号化キーの更新の度に増大する。
【０００８】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、暗号化キーの更新に起因して暗号化処理および復号化処理の効率が低下することを防止できる暗号化システムを提供することである。他の局面における目的は、暗号化キーの更新に起因して暗号化処理および復号化処理の効率が低下することを防止できるキー更新方法を提供することである。さらに他の局面における目的は、暗号化キーの更新に起因して暗号化処理および復号化処理の効率が低下することを防止できるキー更新プログラムを提供することである。
【課題を解決するための手段】
【０００９】
ある局面に従うと、データの暗号化システムは、第１キーを用いた第１暗号化方式でデータを暗号化し、第１暗号化データを生成するための第１暗号化部と、第２キーを用いた第２暗号化方式で第１暗号化データを暗号化し、第２暗号化データを生成するための第２暗号化部とを備える。第２暗号化方式は、データのシフト量を規定している第２キーに基づいてシフト演算を行う暗号化方式、または、データの反転位置を規定している第２キーに基づいてＸＯＲ演算を行う暗号化方式である。暗号化システムは、生成された第２暗号化データを格納するためのデータ記憶部と、現在の第１キーおよび現在の第２キーの両方の更新指示を受け付けたことに基づいて、現在の第１キーを新たな第１キーに更新するとともに、現在の第２キーを新たな第２キーに更新するためのキー更新部と、現在の第２キーの更新時に、現在の第２キーで暗号化されている第２暗号化データを、新たな第２キーで暗号化されている状態に変換するデータ更新部と、現在の第２キーと新たな第２キーとの間の差分を算出するための算出部とを備える。データ更新部は、差分を用いて、現在の第２キーで暗号化されている第２暗号化データを、現在の第２キーで復号化せずに、新たな第２キーで暗号化されている状態に変換する。暗号化システムは、キー更新部による更新後の第２キーで、データ更新部による変換後の第２暗号化データを第１暗号化データに復号化するための第１復号化部と、キー更新部による更新前の第１キーで、第１復号化部による復号化で得られた第１暗号化データをデータに復号化するための第２復号化部とを備える。
【００１１】
好ましくは、データ更新部は、第２暗号化データの変換後に、差分を削除する。
好ましくは、変換処理前における第２暗号化データのデータサイズと、変換処理後における第２暗号化データのデータサイズとは等しい。
【００１２】
好ましくは、データ記憶部は、第２暗号化データと当該第２暗号化データの更新日時とを互いに関連付けて格納する。暗号化システムは、さらに、過去の第１キーと当該第１キーの生成日時とを現在の第１キーで暗号化した上で履歴情報として格納する履歴情報記憶部と、現在の第２キーを現在の第１キーで暗号化した上で第２キー情報として格納するための第２キー記憶部とを備える。
【００１３】
好ましくは、キー更新部は、現在の第１キーの更新指示を受け付けたことに基づいて、履歴情報を現在の第１キーで復号化し、現在の第１キーを過去の第１キーとして当該第１キーと当該第１キーの生成日時とを履歴情報に追加し、当該履歴情報を新たな第１キーで暗号化する。
【００１４】
好ましくは、キー更新部は、現在の第２キーの更新指示を受け付けたことに基づいて、第２キー情報を現在の第１キーで復号化し、復号化処理後の第２キー情報に含まれる現在の第２キーを新たな第２キーで置換し、置換処理後の第２キー情報を新たな第１キーで暗号化する。
【００１５】
好ましくは、暗号化システムは、第２暗号化データの更新日時が保管期間を過ぎたことに基づいて、第２暗号化データを削除するための削除部をさらに備える。キー更新部は、第２暗号化データが削除されたことに基づいて、履歴情報を現在の第１キーで復号化し、復号化処理後の履歴情報に含まれる過去の第１キーの中から保管期間が過ぎている第１キーを削除し、削除処理後の履歴情報を現在の第１キーで再び暗号化する。
【００１６】
好ましくは、第２復号化部は、生成日時が第２暗号化データの更新日時よりも前である最新の第１キーで第１暗号化データをデータに復号化する。
【００１７】
好ましくは、暗号化システムは、互いにネットワークで接続されているクライアントとサーバーとを備える。クライアントは、現在の第１キーを格納するための第１キー記憶部を含む。サーバーは、第２キー記憶部と、履歴情報記憶部と、データ記憶部とを含む。
【００１８】
好ましくは、暗号化システムは、互いにネットワークで接続されているクライアントとサーバーとを備える。クライアントは、現在の第１キーを格納するための第１キー記憶部と、第２キー記憶部と、履歴情報記憶部とを含む。サーバーは、データ記憶部を含む。
【００１９】
好ましくは、データから第２暗号化データへの暗号化処理および第２暗号化データからデータへの復号化処理は、クライアントおよびサーバーの少なくとも一方によって実行される。
【００２０】
他の局面に従うと、データの暗号化システムにおけるコンピュータによって実行されるデータの暗号化時に用いられるキーの更新方法であって、コンピュータが、第１キーを用いた第１暗号化方式でデータを暗号化し、第１暗号化データを生成するステップと、コンピュータが、第２キーを用いた第２暗号化方式で第１暗号化データを暗号化し、第２暗号化データを生成するステップとを備える。第２暗号化方式は、データのシフト量を規定している第２キーに基づいてシフト演算を行う暗号化方式、または、データの反転位置を規定している第２キーに基づいてＸＯＲ演算を行う暗号化方式である。更新方法は、コンピュータが、生成された第２暗号化データを暗号化システムの記憶装置に格納するステップと、コンピュータが、現在の第１キーおよび現在の第２キーの両方の更新指示を受け付けたことに基づいて、現在の第１キーを新たな第１キーに更新するとともに、現在の第２キーを新たな第２キーに更新するステップと、コンピュータが、現在の第２キーの更新時に、現在の第２キーで暗号化されている第２暗号化データを、新たな第２キーで暗号化されている状態に変換するステップと、コンピュータが、現在の第２キーと新たな第２キーとの間の差分を算出するステップと、備える。変換するステップでは、コンピュータが差分を用いたビットの操作を実行することで、現在の第２キーで暗号化されている第２暗号化データを、現在の第２キーで復号化せずに、新たな第２キーで暗号化されている状態に変換する処理を実行する。更新方法は、更新するステップでの更新後の第２キーで、変換するステップでの変換後の第２暗号化データを第１暗号化データに復号化するステップと、更新するステップでの更新前の第１キーで、復号化するステップで得られた第１暗号化データをデータに復号化するステップとを備える。
【００２１】
さらに他の局面に従うと、データの暗号化システムにおけるコンピュータによって実行可能で、データの暗号化時に用いられるキーの更新プログラムであって、コンピュータに、第１キーを用いた第１暗号化方式でデータを暗号化し、第１暗号化データを生成するステップと、第２キーを用いた第２暗号化方式で第１暗号化データを暗号化し、第２暗号化データを生成するステップとを実行させる。第２暗号化方式は、データのシフト量を規定している第２キーに基づいてシフト演算を行う暗号化方式、または、データの反転位置を規定している第２キーに基づいてＸＯＲ演算を行う暗号化方式である。コンピュータに、さらに、生成された第２暗号化データをコンピュータの記憶装置に格納するステップと、現在の第１キーおよび現在の第２キーの更新指示を受け付けたことに基づいて、現在の第１キーを新たな第１キーに更新するとともに、現在の第２キーを新たな第２キーに更新するステップと、現在の第２キーの更新時に、現在の第２キーで暗号化されている第２暗号化データを、新たな第２キーで暗号化されている状態に変換するステップと、現在の第２キーと新たな第２キーとの間の差分を算出するステップと、を実行させる。変換するステップでは、差分を用いたビットの操作が実行されることで、現在の第２キーで暗号化されている第２暗号化データを、現在の第２キーで復号化せずに、新たな第２キーで暗号化されている状態に変換する処理を実行させる。コンピュータに、さらに、更新するステップでの更新後の第２キーで、変換するステップでの変換後の第２暗号化データを第１暗号化データに復号化するステップと、更新するステップでの更新前の第１キーで、復号化するステップで得られた第１暗号化データをデータに復号化するステップとを実行させる。
【発明の効果】
【００２２】
ある局面において、暗号化キーの更新に起因して暗号化処理および復号化処理の効率が低下することを防止できる。
【００２３】
本発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００２４】
【図１】関連技術に従う暗号化システムによる暗号化キーの更新処理を概略的に示す概念図である。
【図２】第１の実施の形態に従う暗号化システムが利用するデータの内容を概略的に示す概念図である。
【図３】第１の実施の形態に従う暗号化システムのキー更新時における機能構成の一例を示す図である。
【図４】第１の実施の形態に従う暗号化システムのキー更新処理を表わすフローチャートである。
【図５】第１の実施の形態に従う暗号化システムの暗号化時における機能構成の一例を示す図である。
【図６】第１の実施の形態に従う暗号化システムの暗号化処理を表わすフローチャートである。
【図７】第１の実施の形態に従う暗号化システムの復号化時における機能構成の一例を示す図である。
【図８】第１の実施の形態に従う暗号化システムの復号化時における機能構成の他の例を示す図である。
【図９】第１の実施の形態に従う暗号化システムの復号化処理を表わすフローチャートである。
【図１０】第１の実施の形態に従う暗号化システムの主要なハードウェア構成を示すブロック図である。
【図１１】第２の実施の形態に従う暗号化システムのキー削除時における機能構成の一例を示す図である。
【図１２】第２の実施の形態に従う暗号化システムの削除処理を表わすフローチャートである。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００２６】
＜関連技術＞
まず、以下の各実施の形態についての理解を深めるために、図１を参照して、関連技術に従う暗号化システム３００Ｘについて説明する。図１は、暗号化システム３００Ｘによる暗号化キーの更新処理を概略的に示す概念図である。図１に示されるように、暗号化システム３００Ｘは、互いにネットワーク上で接続されているクライアント１００Ｘとサーバー２００Ｘとを含む。
【００２７】
クライアント１００Ｘは、暗号化対象のデータを受け付けると、当該データを二段階で暗号化する。以下では、一段階目の暗号化処理で用いられる暗号化キーを「メインキー」ともいう。二段階目の暗号化処理で用いられる暗号化キーを「サブキー」ともいう。クライアント１００Ｘは、暗号化対象のデータをメインキーＡ０で暗号化し、当該暗号化により得られるデータをさらにサブキーＢ０で暗号化する。クライアント１００Ｘは、メインキーＡ０およびサブキーＢ０で暗号化されたデータＤＸをサーバー２００Ｘに送信する。サーバー２００Ｘは、クライアント１００Ｘから受信したデータＤＸを格納する。
【００２８】
クライアント１００Ｘは、メインキーＡ０およびサブキーＢ０の更新指示を受け付けると、現在のメインキーＡ０に代わる新たなメインキーＡ１を生成するとともに、現在のサブキーＢ０に代わる新たなサブキーＢ１を生成する。クライアント１００Ｘは、新たなメインキーＡ１とサブキーＢ１とをサーバー２００Ｘに送信するとともに、メインキーＡ１で暗号化された更新前のサブキーＢ０をサーバー２００Ｘに送信する。サーバー２００Ｘの更新部２０Ｘは、メインキーＡ１およびサブキーＢ１を受信したことに基づいて、サブキーＢ０で暗号化されているデータＤＸと、メインキーＡ１で暗号化されているサブキーＢ０とをサブキーＢ１でさらに暗号化する。このように、サーバー２００がデータＤＸを復号化せずにキーを更新するため、データＤＸの内容がサーバー２００Ｘの管理者に漏えいするリスクが少ない。
【００２９】
暗号化システム３００Ｘは、キーの更新の度にデータＤＸを新たなサブキーで暗号化し、更新前のサブキーを順次記憶する。そのため、サーバー２００Ｘ上のデータサイズは、キーの更新の度に大きくなる。また、データＤＸの復号時には、サブキーで何重にも暗号化されているデータＤＸを順に復号化する必要があるため、キーの更新回数が多くなるほど復号化処理にかかる時間が長くなる。
【００３０】
以下で説明する実施の形態に従う暗号化システム３００は、これらの問題を解決することができる。すなわち、暗号化システム３００は、キーの更新の度に、サーバー上のデータサイズが大きくなることを防止するとともに、当該更新処理に起因して復号化処理の効率が低下することを防止する。
【００３１】
＜第１の実施の形態＞
［データ構造］
図２を参照して、第１の実施の形態に従う暗号化システム３００が利用するデータの内容について説明する。図２は、暗号化システム３００が利用するデータの内容を概略的に示す概念図である。
【００３２】
図２に示されるように、暗号化システム３００は、互いにネットワーク上で接続されているクライアント１００とサーバー２００とを含む。
【００３３】
クライアント１００は、メインキー情報１１１を含む。メインキー情報１１１は、たとえば、クライアント１００の記憶装置１１０（図１０参照）に格納されている。メインキー情報１１１には、現在のメインキーに関する情報が含まれる。図２の例では、メインキー情報１１１には、メインキーＡ０と、メインキーＡ０の生成日時とが含まれている。
【００３４】
サーバー２００は、メインキー履歴情報２１１と、サブキー情報２１２と、データベース２１３とを含む。メインキー履歴情報２１１と、サブキー情報２１２と、データベース２１３とは、サーバー２００の記憶装置２１０（図１０参照）に格納されている。
【００３５】
メインキー履歴情報２１１には、過去のメインキーに関する情報が含まれる。一例として、メインキー履歴情報２１１は、過去のメインキーＡａ〜ＡｚとメインキーＡａ〜Ａｚの生成日時とを含む。メインキー履歴情報２１１は、現在のメインキーＡ０で暗号化されている。
【００３６】
サブキー情報２１２は、現在のサブキーに関する情報を含む。サブキー情報２１２は、現在のメインキーＡ０で暗号化されている。一例として、サブキー情報２１２は、サブキーＢ０を含む。
【００３７】
データベース２１３は、管理対象のデータと、当該データに関する情報とを含む。管理対象のデータは、メインキーで暗号化された上で、さらに、サブキーで暗号化されている。一例として、データベース２１３においては、暗号化されたデータと、当該データの更新日時とが互いに関連付けられている。
【００３８】
なお、メインキー情報１１１、メインキー履歴情報２１１、サブキー情報２１２、およびデータベース２１３の格納場所は、図２の例に限定されない。すなわち、これらの格納場所は任意である。たとえば、メインキー情報１１１、メインキー履歴情報２１１、およびサブキー情報２１２がクライアント１００に格納されて、データベース２１３がサーバー２００に格納されてもよい。
【００３９】
［暗号化システム３００の処理］
暗号化システム３００によって実行される処理として、キー更新処理と、暗号化処理と、復号化処理とが挙げられる。暗号化システム３００は、キー更新処理を実行することで、暗号化および復号化に用いられるキーを更新する。暗号化システム３００は、暗号化処理を実行することで、平文のデータを暗号化し、暗号化データを生成する。暗号化システム３００は、復号化処理を実行することで、暗号化データを復号化し、平文のデータを生成する。
【００４０】
以下では、暗号化システム３００のキー更新処理、暗号化処理、および復号化処理について順に説明する。
【００４１】
（キー更新処理）
図３および図４を参照して、暗号化システム３００のキー更新処理について説明する。図３は、キー更新時における暗号化システム３００の機能構成の一例を示す図である。図４は、暗号化システム３００のキー更新処理を表わすフローチャートである。図４の処理は、クライアント１００のＣＰＵ（Central  Processing  Unit）１０２（図１０参照）およびサーバー２００のＣＰＵ２０２（図１０参照）がキー更新プログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【００４２】
図３に示されるように、クライアント１００は、キー更新処理を実現するための機能構成として、キー生成部１５０と、キー更新部１５２と、算出部１５４とを含む。サーバー２００は、データ更新部２５０を含む。
【００４３】
ステップＳ５０において、キー生成部１５０は、メインキーＡ０およびサブキーＢ０を更新する指示を受け付けたことに基づいて、現在のメインキーＡ０に代わるメインキーＡ１と、現在のサブキーＢ０に代わるサブキーＢ１とを新たに生成する。一例として、キーの更新指示は、予め設定されている期間（たとえば、一日）ごとに発せられる。あるいは、キーの更新指示は、クライアント１００に対するキー更新操作に基づいて応じて発せられる。キー生成部１５０は、新たに生成したメインキーＡ１をキー更新部１５２に出力するとともに、新たに生成したサブキーＢ１を算出部１５４に出力する。
【００４４】
ステップＳ５２において、キー更新部１５２は、メインキー履歴情報２１１をサーバー２００から取得する。メインキー履歴情報２１１は、更新前のメインキーＡ０で暗号化されているため、キー更新部１５２は、メインキー履歴情報２１１をメインキーＡ０で復号化する。キー更新部１５２は、新たなメインキーＡ１と当該メインキーＡ１の生成日時とを、復号化後のメインキー履歴情報２１１に追加する。その後、キー更新部１５２は、新たなメインキーＡ１でメインキー履歴情報２１１を暗号化し、当該メインキー履歴情報２１１をサーバー２００に送信する。サーバー２００は、受信したメインキー履歴情報２１１を格納する。
【００４５】
ステップＳ５４において、キー更新部１５２は、クライアント１００に格納されているメインキー情報１１１を更新する。より具体的には、キー更新部１５２は、メインキー情報１１１に含まれるメインキーＡ０を新たなメインキーＡ１に置換するとともに、メインキー情報１１１に含まれるメインキーＡ０の生成日時をメインキーＡ１の生成日時に置換する。
【００４６】
ステップＳ５６において、算出部１５４は、現在のサブキーＢ０と新たなサブキーＢ１との差分Ｃを算出する。算出部１５４は、算出した差分Ｃをデータ更新部２５０に出力する。
【００４７】
ステップＳ５８において、キー更新部１５２は、サブキー情報２１２をサーバー２００から取得する。サブキー情報２１２は、更新前のメインキーＡ０で暗号化されているため、キー更新部１５２は、サブキー情報２１２をメインキーＡ０で復号化する。キー更新部１５２は、サブキー情報２１２に含まれるサブキーＢ０を新たなサブキーＢ１で置換する。その後、キー更新部１５２は、新たなメインキーＡ１でサブキー情報２１２を暗号化し、当該サブキー情報２１２をサーバー２００に送信する。サーバー２００は、受信したサブキー情報２１２を格納する。
【００４８】
ステップＳ６０において、データ更新部２５０は、サブキーＢ０の更新時に、更新前のサブキーＢ０で暗号化されているデータベース２１３を更新後の新たなサブキーＢ１で暗号化されている状態に変換する。より具体的には、データ更新部２５０は、差分Ｃを用いて、データベース２１３をサブキーＢ０で復号化せずに、データベース２１３をサブキーＢ１で暗号化されている状態に変換する。
【００４９】
ステップＳ６０における更新処理について具体例を挙げてさらに詳細に説明する。ある局面において、サブキーによる暗号化は、データをビットシフトさせることで実現される。この場合、サブキーには、データのシフト量が規定されている。一例として、サブキーＢ０には、シフト量として「３ビット右シフト」が規定されているとする。サブキーＢ１には、シフト量として「９ビット右シフト」が規定されているとする。この場合、算出部１５４は、サブキーＢ１からサブキーＢ０を差分した「６ビット右シフト」を差分Ｃとして算出する。
【００５０】
データ更新部２５０は、差分Ｃに基づいて、サブキーＢ０で暗号化されているデータベース２１３を６ビット右シフトさせることで、データベース２１３をサブキーＢ１で暗号化されている状態にする。このように、データ更新部２５０は、データベース２１３を更新前のサブキーＢ０で復号化せずに、更新後のサブキーＢ１で暗号化した状態にデータベース２１３を変換する。これにより、データ更新部２５０は、キー更新時におけるデータベース２１３の変換処理を高速化することができる。結果として、キー更新中における暗号化システム３００への負荷が軽減される。
【００５１】
他の局面において、サブキーによる暗号化は、ビット反転により実現される。この場合、サブキーには、１バイト（すなわち、８ビット）のデータにおいて反転するビット位置が規定されている。一例として、サブキーＢ０には、反転位置として「１ビット目、３ビット目」が規定されているとする。サブキーＢ１には、反転位置として「１ビット目、４ビット目」が規定されているとする。この場合、算出部１５４は、サブキーＢ１からサブキーＢ０を差分した「３ビット目、４ビット目」を差分Ｃとして算出する。
【００５２】
データ更新部２５０は、差分Ｃに基づいて、データベース２１３の１バイトごとのそれぞれのデータについて３，４ビット目を反転する。このように、データ更新部２５０は、データベース２１３を更新前のサブキーＢ０で復号化せずに、更新後のサブキーＢ１で暗号化した状態にデータベース２１３を変換することができる。
【００５３】
サーバー２００は、新たなサブキーＢ１を用いずにデータベース２１３を変換するため、サブキーＢ１がサーバー２００の管理者に漏えいすることはない。さらに、サブキーが頻繁に更新されることにより、仮にサーバー２００の管理者が過去のサブキーを入手したとしても、当該管理者は、データベース２１３を復号化することができない。そのため、データベース２１３の内容が当該管理者に漏えいリスクは低い。
【００５４】
好ましくは、変換処理前におけるデータベース２１３のデータサイズと、変換処理後におけるデータベース２１３のデータサイズとは等しい。これにより、データ更新部２５０は、サーバー２００上でデータサイズがキーの更新の度に増大することを防止する。
【００５５】
さらに好ましくは、データ更新部２５０は、データベース２１３の変換後に、差分Ｃを削除する。これにより、データ更新部２５０は、キーの更新の度に差分Ｃが蓄積されることを防止でき、キーの更新処理に起因してサーバー２００上でデータサイズが増大することを防止できる。
【００５６】
（暗号化システム３００の暗号化処理）
図５および図６を参照して、暗号化システム３００の暗号化処理について説明する。図５は、暗号化時における暗号化システム３００の機能構成の一例を示す図である。図６は、暗号化システム３００の暗号化処理を表わすフローチャートである。図６の処理は、クライアント１００のＣＰＵ１０２（図１０参照）およびサーバー２００のＣＰＵ２０２（図１０参照）が暗号化プログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【００５７】
図５に示されるように、クライアント１００は、暗号化処理を実現するための機能構成として、データ暗号化部１３０と、データ暗号化部１３４と、キー復号化部１４２とを含む。サーバー２００は、暗号化処理を実現するための機能構成として、データ更新部２５０を含む。
【００５８】
ステップＳ１０において、データ暗号化部１３０は、暗号化対象のデータを取得する。暗号化対象のデータは、たとえば、クライアント１００の管理者によって指定されたデータである。あるいは、暗号化対象のデータは、クライアント１００において予め設定されているフォルダのデータである。
【００５９】
ステップＳ１２において、データ暗号化部１３０は、メインキー情報１１１から現在のメインキーＡ０を取得する。データ暗号化部１３０は、メインキーＡ０を用いた第１暗号化方式で暗号化対象のデータを暗号化し、データＤ０を生成する。好ましくは、第１暗号化方式には、後述する第２暗号化方式よりも暗号化強度が高い暗号化アルゴリズムが採用される。第１暗号化方式としては、たとえば、ＡＥＳ（Advanced  Encryption  Standard）−２５６ｂｉｔやＲＳＡ（Rivest  Shamir  Adleman）等が挙げられる。データ暗号化部１３０は、暗号化後のデータＤ０をデータ暗号化部１３４に出力する。
【００６０】
ステップＳ１４において、キー復号化部１４２は、サブキー情報２１２をサーバー２００から受信する。サブキー情報２１２は、現在のメインキーＡ０で暗号化されているため、キー復号化部１４２は、サブキー情報２１２をメインキーＡ０で復号化する。キー復号化部１４２は、復号化後のサブキー情報２１２からサブキーＢ０を取得し、当該サブキーＢ０をデータ暗号化部１３４に出力する。
【００６１】
ステップＳ１６において、データ暗号化部１３４は、サブキーＢ０を用いた第２暗号化方式でデータＤ０を暗号化し、データＤ１を生成する。データ暗号化部１３４は、データＤ１を生成した時刻を更新日時として、当該更新日時とデータＤ１とをサーバー２００に送信する。
【００６２】
一例として、第２暗号化方式には、第１暗号化方式よりも高速な暗号化方式が採用される。好ましくは、第２暗号化方式には、サブキーの種類によらず暗号化前後でデータサイズが同じになる方式が採用される。さらに好ましくは、第２暗号化方式には、異なるサブキー同士で差分が可能な方式が採用される。
【００６３】
一例として、第２暗号化方式には、ＸＯＲ演算、シフト演算、小サイズの変換テーブルに基づいたデータ変換アルゴリズム等が採用される。ＸＯＲ演算においては、データ暗号化部１３４は、サブキーを種として乱数を発生させ、当該乱数に基づいて１バイト内の反転させるビット位置を決定する。データ暗号化部１３４は、データＤ０の１バイトごとのそれぞれのデータについてビット反転する。シフト演算においては、データ暗号化部１３４は、サブキーを種として乱数を発生させ、当該乱数に基づいてシフト量を決定する。データ暗号化部１３４は、決定したシフト量の分だけデータＤ０をビットシフトする。
【００６４】
ステップＳ１８において、データ更新部２５０は、クライアント１００から受信したデータＤ１と更新日時とを一つのレコードとしてデータベース２１３に格納する。
【００６５】
なお、上述では、クライアント１００が暗号化処理を実行する例について説明したが、クライアント１００およびサーバー２００間の通信経路のセキュリティに問題がなく、暗号化処理中のデータをサーバー２００の管理者に秘匿できれば、サーバー２００が暗号化処理を実行してもよい。すなわち、暗号化処理は、クライアント１００およびサーバー２００の少なくとも一方によって実行され得る。
【００６６】
（暗号化システム３００の復号化処理）
図７〜図９を参照して、暗号化システム３００の復号化処理について説明する。図７は、復号化時における暗号化システム３００の機能構成の一例を示す図である。図８は、復号化時における暗号化システム３００の機能構成の他の例を示す図である。図９は、暗号化システム３００の復号化処理を表わすフローチャートである。図９の処理は、クライアント１００のＣＰＵ１０２（図１０参照）およびサーバー２００のＣＰＵ２０２（図１０参照）が復号化プログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【００６７】
図７および図８に示されるように、クライアント１００は、復号化処理を実現するためのデータ復号化部１４０と、キー復号化部１４２と、キー復号化部１４４と、データ復号化部１４６とを含む。
【００６８】
ステップＳ３０において、データ復号化部１４０は、復号化対象のデータＤ１と当該データＤ１の更新日時とをサーバー２００のデータベース２１３から取得する。復号化対象のデータＤ１は、たとえば、クライアント１００の管理者によって指定される。
【００６９】
ステップＳ３２において、キー復号化部１４２は、サブキー情報２１２をサーバー２００から取得する。サブキー情報２１２は、現在のメインキーＡ０で暗号化されているため、キー復号化部１４２は、メインキー情報１１１に含まれるメインキーＡ０でサブキー情報２１２を復号化する。キー復号化部１４２は、復号化後のサブキー情報２１２からサブキーＢ０を取得する。キー復号化部１４２は、サブキーＢ０をデータ復号化部１４０に出力する。
【００７０】
ステップＳ３４において、データ復号化部１４０は、サブキーＢ０で暗号化されているデータＤ１をサブキーＢ０で復号化し、データＤ０を生成する。データ復号化部１４０は、データＤ０をデータ復号化部１４６に出力する。
【００７１】
ステップＳ３６において、クライアント１００は、データＤ１の更新日時が現在のメインキーＡ０の生成日時よりも新しいか否かを判断する。クライアント１００は、データＤ１の更新日時が現在のメインキーＡ０の生成日時よりも新しいと判断した場合（ステップＳ３６においてＹＥＳ）、制御をステップＳ３８に切り替える。そうでない場合には（ステップＳ３６においてＮＯ）、クライアント１００は、制御をステップＳ４０に切り替える。
【００７２】
ステップＳ３８において、データ復号化部１４６は、メインキー情報１１１からメインキーＡ０を取得し、データＤ０をメインキーＡ０で復号化する。これにより、データ復号化部１４６は、平文のデータを取得することができる。
【００７３】
ステップＳ４０において、キー復号化部１４４は、サーバー２００からメインキー履歴情報２１１を取得する。メインキー履歴情報２１１は、現在のメインキーＡ０で暗号化されているため、キー復号化部１４４は、メインキーＡ０でメインキー履歴情報２１１を復号化する。その結果、過去のメインキーと、当該メインキーの生成日時が得られる。取得された情報は、クライアント１００の内部にキャッシュとして保持されてもよい。これにより、次回の復号化処理が高速化される。キー復号化部１４４は、生成日時が暗号化データの更新日時よりも古いメインキーをメインキー履歴情報２１１に含まれるメインキーの中から選択し、選択したメインキーの中で最も新しいメインキーＡａを取得する。キー復号化部１４４は、メインキーＡａをデータ復号化部１４６に出力する。
【００７４】
ステップＳ４２において、データ復号化部１４６は、データＤ０をメインキーＡａで復号化する。以上のようにして、データ復号化部１４６は、データＤ１の更新日時よりも前に生成されたメインキーＡａでデータＤ１を平文のデータに復号化する。
【００７５】
なお、図７および図８では、クライアント１００が復号化処理を実行する例について説明したが、クライアント１００およびサーバー２００間の通信経路のセキュリティに問題がなく、復号化処理中のデータをサーバー２００の管理者に秘匿できれば、サーバー２００が復号化処理を実行してもよい。すなわち、復号化処理は、クライアント１００およびサーバー２００の少なくとも一方によって実行され得る。
【００７６】
［暗号化システム３００のハードウェア構成］
図１０を参照して、暗号化システム３００のハードウェア構成の一例について説明する。図１０は、暗号化システム３００の主要なハードウェア構成を示すブロック図である。図１０に示されるように、暗号化システム３００は、クライアント１００と、サーバー２００とを含む。クライアント１００およびサーバー２００は、互いにネットワーク接続されている。以下では、クライアント１００のハードウェア構成と、サーバー２００のハードウェア構成とについて順に説明する。
【００７７】
（クライアント１００のハードウェア構成）
図１０に示されるように、クライアント１００は、ＲＯＭ（Read  Only  Memory）１０１と、ＣＰＵ１０２と、ＲＡＭ（Random  Access  Memory）１０３と、ネットワークＩ／Ｆ（インタフェース）１０４と、モニタ１０５と、記憶装置１１０とを含む。
【００７８】
ＲＯＭ１０１は、クライアント１００のオペレーティングシステム、クライアント１００で実行される制御プログラム等を格納する。ＣＰＵ１０２は、オペレーティングシステムやクライアント１００の制御プログラム等の各種プログラムを実行することで、クライアント１００の動作を制御する。ＲＡＭ１０３は、ワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
【００７９】
ネットワークＩ／Ｆ１０４には、アンテナやＮＩＣ（Network  Interface  Card）等の通信機器が接続される。クライアント１００は、当該通信機器を介して、他の通信端末との間でデータを送受信する。他の通信端末は、たとえば、サーバー２００、その他の端末等を含む。クライアント１００は、本実施の形態に従う各種の処理を実現するためのプログラム１１５を、ネットワークＩ／Ｆ１０４を介してダウンロードできるように構成されてもよい。
【００８０】
モニタ１０５は、プログラム１１５を実行することで表示される各種画面を表示する。モニタ１０５は、タッチセンサ（図示しない）と組み合わされてタッチパネルとして実現されてもよい。タッチパネルは、暗号化対象のデータや復号化対象のデータを選択するための操作を受け付けたり、キーを更新するための操作を受け付けたりする。
【００８１】
記憶装置１１０は、たとえば、ハードディスクや外付けの記憶装置等の記憶媒体である。一例として、記憶装置１１０は、メインキー情報１１１と、本実施の形態に従うプログラム１１５とを含む。メインキー情報１１１は、たとえば、記憶装置１１０の所定の記憶領域であるメインキー記憶部に格納される。プログラム１１５は、データの暗号化を実現するための暗号化プログラム、暗号化されたデータの復号化を実現するための復号化プログラム、暗号化処理に用いられるキーの更新処理を実現するための更新プログラム等を含む。
【００８２】
なお、プログラム１１５は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う暗号化システム３００の趣旨を逸脱するものではない。さらに、プログラム１１５によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも１つのサーバーが本実施の形態に従う処理を実現する、所謂クラウドサービスのような形態でクライアント１００が構成されてもよい。さらに、プログラム１１５によって提供される機能の一部または全部は、クライアント１００およびサーバー２００が協働することで実現されてもよい。
【００８３】
（サーバー２００のハードウェア構成）
次に、サーバー２００のハードウェア構成について説明する。図１０に示されるように、サーバー２００は、ＲＯＭ２０１と、ＣＰＵ２０２と、ＲＡＭ２０３と、ネットワークＩ／Ｆ２０４と、モニタ２０５と、記憶装置２１０とを含む。
【００８４】
ＲＯＭ２０１は、サーバー２００のオペレーティングシステム、サーバー２００で実行される制御プログラム等を格納する。ＣＰＵ２０２は、オペレーティングシステムやサーバー２００の制御プログラム等の各種プログラムを実行することで、サーバー２００の動作を制御する。ＲＡＭ２０３は、ワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
【００８５】
ネットワークＩ／Ｆ２０４には、アンテナやＮＩＣ等の通信機器が接続される。サーバー２００は、当該通信機器を介して、他の通信端末との間でデータを送受信する。他の通信端末は、たとえば、クライアント１００、その他の端末等を含む。サーバー２００は、本実施の形態に従う各種の処理を実現するためのプログラム２１５を、ネットワークＩ／Ｆ２０４を介してダウンロードできるように構成されてもよい。
【００８６】
モニタ２０５は、プログラム２１５を実行することで表示される各種画面を表示する。モニタ２０５は、タッチセンサ（図示しない）と組み合わされてタッチパネルとして実現されてもよい。
【００８７】
記憶装置２１０は、たとえば、ハードディスクや外付けの記憶装置等の記憶媒体である。一例として、記憶装置２１０は、メインキー履歴情報２１１と、サブキー情報２１２と、データベース２１３と、本実施の形態に従うプログラム２１５とを含む。メインキー履歴情報２１１は、たとえば、記憶装置２１０の所定の記憶領域である履歴情報記部に格納される。サブキー情報２１２は、たとえば、記憶装置２１０の所定の記憶領域であるサブキー記憶部に格納される。データベース２１３は、たとえば、記憶装置２１０の所定の記憶領域であるデータ記憶部に格納される。プログラム２１５は、データの暗号化を実現するための暗号化プログラム、暗号化されたデータの復号化を実現するための復号化プログラム、暗号化処理に用いられたキーの更新処理を実現するための更新プログラム等を含む。
【００８８】
なお、プログラム２１５は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う暗号化システム３００の趣旨を逸脱するものではない。さらに、プログラム２１５によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも１つのサーバーが本実施の形態に従う処理を実現する、所謂クラウドサービスのような形態でサーバー２００が構成されてもよい。さらに、プログラム２１５によって提供される機能の一部または全部は、クライアント１００およびサーバー２００が協働することで実現されてもよい。
【００８９】
［小括］
以上のようにして、本実施の形態に従う暗号化システム３００は、キーの更新時において、更新前のサブキーで暗号化されている暗号化データを、更新後の新たなサブキーで暗号化されている状態に変換する。すなわち、暗号化システム３００は、キーの更新時において、更新前のサブキーで暗号化データを復号化する必要はない。これにより、キーの更新処理の効率が改善される。また、暗号化データの復号時には、更新前のサブキーを用いる必要はないため、復号化処理の効率も改善される。
【００９０】
さらに、キー更新時における暗号化データの変換前後でデータサイズは変わらない。そのため、キーの更新の度にデータサイズが増大していくことに起因して暗号化処理の効率が低下することを防止できる。
【００９１】
＜第２の実施の形態＞
［概要］
第２の実施の形態に従う暗号化システム３００は、データベース２１３に含まれるデータのうち保管期間が過ぎているデータを削除するとともに、メインキー履歴情報２１１に含まれるメインキーのうち保管期間が過ぎているメインキーを削除する。これにより、暗号化システム３００でのデータ量が抑制される。また、データ量が抑制されることで、暗号化処理および復号化処理にかかる時間が短縮される。
【００９２】
第２の実施の形態に従う暗号化システム３００のハードウェア構成等その他の点については、第１の実施の形態に従う暗号化システム３００と同じであるので、それらの説明は繰り返さない。
【００９３】
［暗号化システム３００の削除処理］
図１１および図１２を参照して、暗号化システム３００の削除処理について説明する。図１１は、キー削除時における暗号化システム３００の機能構成の一例を示す図である。図１２は、暗号化システム３００の削除処理を表わすフローチャートである。図１２の処理は、クライアント１００のＣＰＵ１０２（図１０参照）およびサーバー２００のＣＰＵ２０２（図１０参照）がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【００９４】
図１１に示されるように、暗号化システム３００は、クライアント１００とサーバー２００とを含む。クライアント１００は、削除処理を実現するための機能構成として、キー更新部１５２を含む。サーバー２００は、削除処理を実現するための機能構成として、データ削除部２５２を含む。
【００９５】
ステップＳ７０において、データ削除部２５２は、現在時刻を取得し、データの保管期間を決定する。データの保管期間は、たとえば、現在時刻から所定時間前（たとえば、１週間前）までの期間である。当該所定時間は、設計時に予め設定されていてもよいし、クライアント１００やサーバー２００の管理者によって設定されてもよい。データ削除部２５２は、保管期間をキー更新部１５２に送信する。
【００９６】
ステップＳ７２において、データ削除部２５２は、データベース２１３に含まれている暗号化データの内から保管期間が過ぎている暗号化データを削除する。すなわち、データ削除部２５２は、データベース２１３のデータに関連付けられている更新日時を参照し、当該更新日時が保管期間外であるデータを削除する。これにより、データ削除部２５２は、データベース２１３のデータサイズが増大することを防止できる。
【００９７】
ステップＳ７４において、キー更新部１５２は、メインキー履歴情報２１１をサーバー２００から取得する。メインキー履歴情報２１１は、現在のメインキーＡ０で暗号化されているため、キー更新部１５２は、メインキーＡ０でメインキー履歴情報２１１を復号化する。キー更新部１５２は、復号化処理後のメインキー履歴情報２１１の中から保管期間が過ぎているメインキーを削除する。すなわち、キー更新部１５２は、メインキー履歴情報２１１のメインキーに関連付けられている生成微を参照し、当該生成微が保管期間外であるデータを削除する。これにより、キー更新部１５２は、メインキー履歴情報２１１のデータサイズが増大することを防止できる。キー更新部１５２は、削除処理後のメインキー履歴情報２１１を現在のメインキーＡ０で再び暗号化する。その後、キー更新部１５２は、メインキー履歴情報２１１をサーバー２００に送信する。サーバー２００は、受信したメインキー履歴情報２１１を格納する。
【００９８】
［小括］
以上のようにして、本実施の形態に従う暗号化システム３００は、保管期間が過ぎているデータをデータベース２１３から削除するとともに、保管期間が過ぎているメインキーをメインキー履歴情報２１１から削除する。これにより、データベース２１３およびメインキー履歴情報２１１のデータサイズを一定に保つことができ、暗号化システム３００のパフォーマンスを維持することができる。
【００９９】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１００】
２０Ｘ  更新部、１００，１００Ｘ  クライアント、１０１，２０１  ＲＯＭ、１０２，２０２  ＣＰＵ、１０３，２０３  ＲＡＭ、１０４，２０４  ネットワークＩ／Ｆ、１０５，２０５  モニタ、１１０，２１０  記憶装置、１１１  メインキー情報、１１５，２１５  プログラム、１３０，１３４  データ暗号化部、１４２，１４４  キー復号化部、１４０，１４６  データ復号化部、１５０  キー生成部、１５２  キー更新部、１５４  算出部、２００，２００Ｘ  サーバー、２１１  メインキー履歴情報、２１２  サブキー情報、２１３  データベース、２５０  データ更新部、２５２  データ削除部、３００，３００Ｘ  暗号化システム。
【図１】
0006576699.tif 000002
【図２】
0006576699.tif 000003
【図３】
0006576699.tif 000004
【図４】
0006576699.tif 000005
【図５】
0006576699.tif 000006
【図６】
0006576699.tif 000007
【図７】
0006576699.tif 000008
【図８】
0006576699.tif 000009
【図９】
0006576699.tif 000010
【図１０】
0006576699.tif 000011
【図１１】
0006576699.tif 000012
【図１２】
0006576699.tif 000013