(57)【要約】【課題】複数の第２鍵のうちの一部を更新する。【解決手段】実施形態の生成装置は、第１鍵生成部と、第２鍵生成部と、出力部と、更新部とを備える。第１鍵生成部は、乱数に基づきビットの系列である第１鍵を生成するための第１鍵規則に基づいて、第１鍵を生成する。第２鍵生成部は、第１鍵に基づき一部に互いに相関を有するビットの系列である複数の第２鍵を生成するための第２鍵規則に基づいて、複数の第２鍵を生成する。出力部は、第１鍵と複数の第２鍵のうち少なくとも１つの第２鍵とを出力する。更新部は、複数の第２鍵のうち一部の第２鍵を更新する場合、更新対象の第２鍵における、更新対象となっていない他の第２鍵と相関の無い部分系列を更新するための更新情報を生成する。【選択図】図５
2015019333.tif 000002
【特許請求の範囲】
【請求項１】
乱数に基づきビットの系列である第１鍵を生成するための第１鍵規則に基づいて、前記第１鍵を生成する第１鍵生成部と、
前記第１鍵に基づき一部に互いに相関を有するビットの系列である複数の第２鍵を生成するための第２鍵規則に基づいて、前記複数の第２鍵を生成する第２鍵生成部と、
前記第１鍵と前記複数の第２鍵のうち少なくとも１つの第２鍵とを出力する出力部と、
前記複数の第２鍵のうち一部の第２鍵を更新する場合、更新対象の第２鍵における、更新対象となっていない他の第２鍵と相関の無い部分系列を更新するための更新情報を生成する更新部と、
を備える生成装置。
【請求項２】
前記更新部は、前記出力部から出力された前記更新対象の第２鍵を更新するための第１の更新情報を生成するとともに、前記出力部から出力された前記第１鍵と前記第２鍵規則との少なくとも一方を更新することにより、前記第１鍵と前記第２鍵規則とにより生成される更新対象の第２鍵を更新するための第２の更新情報を生成する
請求項１に記載の生成装置。
【請求項３】
前記第２鍵は、暗号化鍵を生成するための種であり、
前記第２鍵生成部は、前記複数の第２鍵のそれぞれ毎に、対応する前記第２鍵を暗号化鍵に変換するための変換関数を生成し、
前記出力部は、前記第２鍵とともに対応する前記変換関数を出力し、
前記更新部は、前記更新対象の第２鍵または前記更新対象の第２鍵に対応する変換関数を更新するための第１の更新情報を生成する
請求項２に記載の生成装置。
【請求項４】
前記更新部は、前記第１鍵における、前記更新対象の第２鍵の種となり且つ更新対象ではない第２鍵の種となっていないビットを更新することにより更新対象の第２鍵を更新するための第２の更新情報を生成する
請求項２に記載の生成装置。
【請求項５】
前記第２鍵規則は、生成する前記複数の第２鍵のそれぞれに対応して異なる複数の関数を含み、
前記出力部は、前記第１鍵とともに、マスター鍵から前記第２鍵規則を生成するためのマスター関数を出力し、
前記更新部は、前記マスター鍵を更新することにより、前記第２鍵規則に含まれる更新対象の第２鍵に対応する関数を更新して更新対象の第２鍵を更新する第２の更新情報を生成する
請求項２に記載の生成装置。
【請求項６】
前記第２鍵規則は、生成する前記複数の第２鍵のそれぞれに対応して異なる関数を含み、
前記更新部は、前記第２鍵規則に含まれる更新対象の第２鍵に対応する関数を更新して更新対象の第２鍵を更新する第２の更新情報を生成する
請求項２に記載の生成装置。
【請求項７】
前記第２鍵規則は、前記複数の第２鍵のうちのいずれか１つを指定するインデックス、前記第１鍵、および、マスター鍵に基づき、前記インデックスにより指定された第２鍵を生成し、
前記更新部は、前記マスター鍵を更新することにより前記更新対象の第２鍵を更新するための第２の更新情報を生成する
請求項２に記載の生成装置。
【請求項８】
乱数に基づきビットの系列である第１鍵を生成するための第１鍵規則に基づいて、前記第１鍵を生成する第１鍵生成ステップと、
前記第１鍵に基づき一部に互いに相関を有するビットの系列である複数の第２鍵を生成するための第２鍵規則に基づいて、前記複数の第２鍵を生成する第２鍵生成ステップと、
前記第１鍵と前記複数の第２鍵のうち少なくとも１つの第２鍵とを出力する出力ステップと、
前記複数の第２鍵のうち一部の第２鍵を更新する場合、更新対象の第２鍵における、更新対象となっていない他の第２鍵と相関の無い部分系列を更新するための更新情報を生成する更新ステップと、
を含む生成方法。
【請求項９】
乱数に基づきビットの系列である第１鍵を生成するための第１鍵規則に基づいて、前記第１鍵を生成する第１鍵生成ステップと、
前記第１鍵に基づき一部に互いに相関を有するビットの系列である複数の第２鍵を生成するための第２鍵規則に基づいて、前記複数の第２鍵を生成する第２鍵生成ステップと、
前記第１鍵と前記複数の第２鍵のうち少なくとも１つの第２鍵とを出力する出力ステップと、
前記複数の第２鍵のうち一部の第２鍵を更新する場合、更新対象の第２鍵における、更新対象となっていない他の第２鍵と相関の無い部分系列を更新するための更新情報を生成する更新ステップと、
をコンピュータに実行させるためのプログラム。
【請求項１０】
第１のクライアント端末から、平文と第１のクライアント鍵とを排他的論理和演算した第１暗号文を受信する受信部と、
前記第１のクライアント鍵とマスター鍵とを排他的論理和演算した第１再暗号化鍵と、第２のクライアント端末が保持する第２のクライアント鍵と前記マスター鍵とを排他的論理和演算した第２再暗号化鍵とを取得する取得部と、
前記第１再暗号化鍵と前記第２再暗号化鍵とを排他的論理和演算した合成鍵を生成する合成鍵生成部と、
前記第１暗号文と前記合成鍵とを排他的論理和演算した第２暗号文を生成する再暗号化部と、
前記第２暗号文を前記第２のクライアント端末に送信する送信部と
を備える再暗号化装置。
【請求項１１】
第１のクライアント端末から、平文と第１のクライアント鍵とを排他的論理和演算した第１暗号文を受信する受信ステップと、
前記第１のクライアント鍵とマスター鍵とを排他的論理和演算した第１再暗号化鍵と、第２のクライアント端末が保持する第２のクライアント鍵と前記マスター鍵とを排他的論理和演算した第２再暗号化鍵とを取得する取得ステップと、
前記第１再暗号化鍵と前記第２再暗号化鍵とを排他的論理和演算した合成鍵を生成する合成鍵生成ステップと、
前記第１暗号文と前記合成鍵とを排他的論理和演算した第２暗号文を生成する再暗号化ステップと、
前記第２暗号文を前記第２のクライアント端末に送信する送信ステップと
を含む再暗号化方法。
【請求項１２】
第１のクライアント端末から、平文と第１のクライアント鍵とを排他的論理和演算した第１暗号文を受信する受信ステップと、
前記第１のクライアント鍵とマスター鍵とを排他的論理和演算した第１再暗号化鍵と、第２のクライアント端末が保持する第２のクライアント鍵と前記マスター鍵とを排他的論理和演算した第２再暗号化鍵とを取得する取得ステップと、
前記第１再暗号化鍵と前記第２再暗号化鍵とを排他的論理和演算した合成鍵を生成する合成鍵生成ステップと、
前記第１暗号文と前記合成鍵とを排他的論理和演算した第２暗号文を生成する再暗号化ステップと、
前記第２暗号文を前記第２のクライアント端末に送信する送信ステップと
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、暗号化鍵の生成装置、再暗号化装置、方法およびプログラムに関する。
【背景技術】
【０００２】
個人の既往歴または健康情報等の医療データは、将来における未病あるいは適切な医療対処のために長期間にわたり保管される。しかし、医療情報は、個人情報を含んでいるため情報漏洩時の被害が大きい。
【０００３】
また、情報は、保管期間が長いほど漏洩のリスクが増大する。長期間にわたって情報を安全に秘匿する技術として、情報理論的に安全性を保証する暗号技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−８０２１４号公報
【特許文献２】特開２００７−１４３０９１号公報
【非特許文献】
【０００５】
【非特許文献１】C.  E.  Shannon,  Communication  theory  of  secrecy  systems,  Bell  System  Technical  Journal,  vol.28,  no.4,  pp.  656-715,  1949
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報理論的に安全性を保証する暗号技術を用いる場合には、通信装置は、通信相手ごとに、通信する平文と同じ長さの暗号化鍵を必要とする。そのため、通信相手の数が多い場合および通信する平文の長さが長い場合には、通信装置が管理すべき暗号化鍵のサイズが増大してしまう。従って、複数の通信相手が保持する複数の暗号化鍵を、まとめて小型化して一括管理できることが望ましい。
【０００７】
また、暗号化には、平文と同じビット長の暗号化鍵が必要なので、継続的に暗号通信を行うには、一定の暗号化回数または一定時間毎に更新をする必要がある。しかし、複数の暗号化鍵をまとめて小型化して一括管理した場合、これらの複数の暗号化鍵を一括して更新をしなければならない。このため、複数の暗号化鍵のうち一部のみについて更新が必要な場合も、複数の暗号化鍵の全てについて更新をしなければならない。
【課題を解決するための手段】
【０００８】
実施形態の生成装置は、第１鍵生成部と、第２鍵生成部と、出力部と、更新部とを備える。第１鍵生成部は、乱数に基づきビットの系列である第１鍵を生成するための第１鍵規則に基づいて、第１鍵を生成する。第２鍵生成部は、第１鍵に基づき一部に互いに相関を有するビットの系列である複数の第２鍵を生成するための第２鍵規則に基づいて、複数の第２鍵を生成する。出力部は、第１鍵と複数の第２鍵のうち少なくとも１つの第２鍵とを出力する。更新部は、複数の第２鍵のうち一部の第２鍵を更新する場合、更新対象の第２鍵における、更新対象となっていない他の第２鍵と相関の無い部分系列を更新するための更新情報を生成する。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態の暗号処理システムの構成図。
【図２】サーバ鍵と複数のクライアント鍵との関係図。
【図３】クライアント鍵のビットの更新位置を示す図。
【図４】クライアント鍵のビットの更新位置を示す他の図。
【図５】生成装置の構成図。
【図６】クライアント端末の構成図。
【図７】サーバの構成図。
【図８】生成装置の処理フロー図。
【図９】サーバ鍵関数の内容を示す図。
【図１０】クライアント鍵関数の内容を示す図。
【図１１】サーバ鍵関数の内容を関数で表した図。
【図１２】クライアント鍵関数の内容を関数で表した図。
【図１３】第１例に係る更新部の構成図。
【図１４】第１例に係る更新部の処理フロー図。
【図１５】第１例に係るクライアント端末およびサーバの構成図。
【図１６】第２例に係る更新部の構成図。
【図１７】第２例に係る更新部の処理フロー図。
【図１８】第２例に係るクライアント端末およびサーバの構成図。
【図１９】第３例に係る更新部の構成図。
【図２０】第３例に係る更新部の処理フロー図。
【図２１】第３例に係るクライアント端末およびサーバの構成図。
【図２２】第４例に係る更新部の構成図。
【図２３】第４例に係る更新部の処理フロー図。
【図２４】第４例に係るクライアント端末およびサーバの構成図。
【図２５】第５例に係る更新部の構成図。
【図２６】第５例に係る更新部の処理フロー図。
【図２７】第５例に係るクライアント端末およびサーバの構成図。
【図２８】第２実施形態に係る暗号処理システムの構成図。
【図２９】再暗号化装置の構成図。
【図３０】第２実施形態に係る暗号処理システムの処理フロー図。
【図３１】コンピュータのハードウェア構成図。
【発明を実施するための形態】
【００１０】
（第１実施形態）
図１は、第１実施形態に係る暗号処理システム１０の構成を示す図である。暗号処理システム１０は、生成装置２０と、複数のクライアント端末３０と、サーバ４０とを備える。
【００１１】
生成装置２０は、コンピュータ等の情報処理装置である。生成装置２０は、サーバ鍵規則（第１鍵規則）に基づいて、乱数からサーバ鍵（第１鍵）ＫＳを生成する。また、生成装置２０は、クライアント鍵規則（第２鍵規則）に基づいて、サーバ鍵ＫＳから、一部に互いに相関を有するビットの系列である複数個（本例ではｎ個）のクライアント鍵（第２鍵）Ｋｉ（＝Ｋ１，Ｋ２，…，Ｋｎ）を生成する。
【００１２】
ｎは、１つのサーバ鍵ＫＳから生成されるクライアント鍵Ｋｉの数を表し、２以上の整数である。また、ｉは、それぞれのクライアント鍵Ｋｉを識別する値であり、インデックスと呼ぶ。ｉは、複数のクライアント鍵Ｋｉの全てに対応付けられており、本例では、１以上、ｎ以下の整数である。
【００１３】
ｎ個のクライアント鍵Ｋｉのそれぞれは、平文を暗号化して暗号文を生成するため、および、その暗号文から平文を復号するためのビットの系列である。すなわち、クライアント鍵Ｋｉは、暗号用および復号用が同一のデータ系列の暗号化鍵である。ｎ個のクライアント鍵Ｋｉのそれぞれは、秘匿して管理がされる秘密情報である。
【００１４】
なお、ｎ個のクライアント鍵Ｋｉのそれぞれは、暗号化鍵ＥＫｉ（＝ＥＫ１，ＥＫ２，…，ＥＫｎ）の生成の種となるビットの系列であってもよい。暗号化鍵ＥＫｉのそれぞれは、平文を暗号化して暗号文を生成するため、および、その暗号文から平文を復号するためのビットの系列である。従って、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種となる場合には、クライアント鍵Ｋｉ自体は、鍵とはならない。
【００１５】
また、この場合、生成装置２０は、複数のクライアント鍵Ｋｉのそれぞれに対応して、変換関数Ｆδｉ（＝Ｆδ１，Ｆδ２，…，Ｆδｎ）を生成する。変換関数Ｆδｉは、コンピュータがビットの変換をするための関数またはプログラム等である。変換関数Ｆδｉは、一例として、一対一関数または擬似ランダム関数等である。
【００１６】
サーバ鍵ＫＳは、ｎ個のクライアント鍵Ｋｉの生成の種となるビットの系列である。なお、サーバ鍵ＫＳは、そのデータ系列自体が、何からの平文の暗号化鍵となっていない。サーバ鍵ＫＳは、秘匿して管理がされる秘密情報である。
【００１７】
サーバ鍵規則およびクライアント鍵規則は、コンピュータにより実行が可能な形式で記述されている電子データであって、例えば、コンピュータにより実行される関数またはプログラム等である。サーバ鍵規則は、乱数に基づきサーバ鍵ＫＳを生成する規則（関数またはプログラム等）である。また、クライアント鍵規則は、サーバ鍵ＫＳに基づきクライアント鍵Ｋｉを生成する規則（関数またはプログラム等）である。
【００１８】
より詳細には、クライアント鍵規則とは、サーバ鍵ＫＳの１つ以上の部分系列を抽出してクライアント鍵Ｋｉを生成するための規則である。すなわち、クライアント鍵規則は、クライアント鍵Ｋｉを定めるための規則である。クライアント鍵Ｋｉは、１つ以上の部分系列を要素とする第１部分系列集合に基づいて定められる。複数のクライアント鍵Ｋｉのうち、いずれか２つのクライアント鍵Ｋｉの第１部分系列集合の少なくとも１つの部分系列が共通する。部分系列とは、サーバ鍵ＫＳの部分情報である。なお、サーバ鍵規則およびクライアント鍵規則は、公開された情報（すなわち、秘匿されていない情報）であってもよいし、秘匿して管理される秘密情報であってもよい。
【００１９】
生成装置２０は、複数のクライアント端末３０のそれぞれとクライアント鍵Ｋｉのインデックスｉとの対応関係を示すインデックス情報を生成する。一つのクライアント端末３０は、複数のインデックスｉと対応してよい。生成装置２０は、生成したｎ個のクライアント鍵Ｋｉのそれぞれを、インデックスｉに対応するクライアント端末３０に送信する。また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、生成装置２０は、クライアント鍵Ｋｉのそれぞれに対応して、対応する変換関数Ｆδｉのそれぞれをクライアント端末３０に送信する。
【００２０】
生成装置２０は、生成したサーバ鍵ＫＳおよびクライアント鍵規則をサーバ４０に送信する。クライアント鍵規則が公開されている場合、生成装置２０は、クライアント鍵規則をサーバ４０に送信しなくてもよい。また、生成装置２０は、インデックス情報もサーバ４０に送信する。また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、生成装置２０は、インデックスｉのそれぞれに対応した変換関数Ｆδｉのそれぞれをサーバ４０に送信する。
【００２１】
生成装置２０は、サーバ鍵ＫＳおよび複数のクライアント鍵Ｋｉを生成してから所定回数の暗号通信後または所定期間を経過した後、複数のクライアント鍵Ｋｉのうちのいずれかを更新するためのサーバ鍵更新情報ｓｒｉおよびクライアント鍵更新情報ｃｒｉを生成する。生成装置２０は、サーバ鍵更新情報ｓｒｉをサーバ４０に送信する。また、生成装置２０は、クライアント鍵更新情報ｃｒｉを、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０に送信する。
【００２２】
サーバ４０は、データ処理を実行する情報処理装置（第１情報処理装置）の一例である。サーバ４０は、サーバ鍵ＫＳおよびクライアント鍵規則を生成装置２０から受信する。なお、クライアント鍵規則が公開されている場合、サーバ４０は、公開元の情報処理装置等からクライアント鍵規則を取得する。また、サーバ４０は、複数のクライアント端末３０のそれぞれと、そのクライアント端末３０が受信したクライアント鍵Ｋｉのインデックスｉとの対応関係を示すインデックス情報も、生成装置２０から受信する。また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ４０は、インデックスｉのそれぞれに対応した変換関数Ｆδｉのそれぞれを生成装置２０から受信する。
【００２３】
サーバ４０は、サーバ鍵ＫＳを受信してから所定回数の暗号通信後または所定期間を経過した後、サーバ鍵更新情報ｓｒｉを生成装置２０から受信する。サーバ４０は、受信したサーバ鍵更新情報ｓｒｉに基づき、保持しているサーバ鍵ＫＳおよびクライアント鍵規則の少なくとも一方を更新する。また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ４０は、受信したサーバ鍵更新情報ｓｒｉに基づき、更新対象のクライアント鍵Ｋｉに対応する変換関数Ｆδｉを更新してもよい。
【００２４】
複数のクライアント端末３０のそれぞれは、データ処理を実行する情報処理装置（第２情報処理装置）の一例である。複数のクライアント端末３０のそれぞれは、情報処理装置を内蔵した各種の医療機器または電子機器等であってもよい。複数のクライアント端末３０のそれぞれは、生成装置２０から対応するクライアント鍵Ｋｉを受信する。また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、複数のクライアント端末３０のそれぞれは、クライアント鍵Ｋｉに対応した変換関数Ｆδｉを生成装置２０から受信する。
【００２５】
更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０は、クライアント鍵Ｋｉを受信してから所定回数の暗号通信後または所定期間を経過した後、クライアント鍵更新情報ｃｒｉを生成装置２０から受信する。クライアント端末３０は、受信したクライアント鍵更新情報ｃｒｉに基づき、保持しているクライアント鍵Ｋｉを更新する。また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、クライアント端末３０は、受信したクライアント鍵更新情報ｃｒｉに基づき、変換関数Ｆδｉを更新してもよい。
【００２６】
このような構成の暗号処理システム１０において、サーバ４０と、複数のクライアント端末３０のそれぞれとの間で、クライアント鍵Ｋｉを用いた暗号通信がされる。クライアント端末３０からサーバ４０へと暗号文を伝達する場合、次のように処理がされる。
【００２７】
複数のクライアント端末３０のそれぞれは、平文Ｍｉ（＝Ｍ１，Ｍ２，…，Ｍｎ）を、対応するクライアント鍵Ｋｉ（＝Ｋ１，Ｋ２，…，Ｋｎ）で暗号化して、暗号文Ｃｉ（＝Ｃ１，Ｃ２，…，Ｃｎ）を生成する。複数のクライアント端末３０のそれぞれは、一例として、互いに同一のビット長の、平文Ｍｉとクライアント鍵Ｋｉとを排他的論理和演算して、暗号文Ｃｉを生成する。そして、複数のクライアント端末３０のそれぞれは、生成した暗号文Ｃｉをサーバ４０へと送信する。
【００２８】
なお、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、複数のクライアント端末３０のそれぞれは、対応するクライアント鍵Ｋｉ（＝Ｋ１，Ｋ２，…，Ｋｎ）と対応する変換関数Ｆδｉ（＝Ｆδ１，Ｆδ２，…，Ｆδｎ）とから、暗号化鍵ＥＫｉ（＝ＥＫ１，ＥＫ２，…，ＥＫｎ）を生成する。ここで、ＥＫｉ＝Ｆδｉ（Ｋｉ）である。そして、複数のクライアント端末３０のそれぞれは、対応する暗号化鍵ＥＫｉで暗号化して、暗号文Ｃｉ（＝Ｃ１，Ｃ２，…，Ｃｎ）を生成する。
【００２９】
サーバ４０は、クライアント端末３０から暗号文Ｃｉを受信する。サーバ４０は、インデックス情報を参照して、暗号文Ｃｉを送信したクライアント端末３０の端末情報から、暗号文Ｃｉを暗号化したクライアント鍵Ｋｉのインデックスｉを検出する。サーバ４０は、検出したインデックスｉとサーバ鍵ＫＳとをクライアント鍵規則に入力して、対応するクライアント鍵Ｋｉを生成する。そして、サーバ４０は、生成したクライアント鍵Ｋｉにより暗号文Ｃｉを復号して、平文Ｍｉを生成する。なお、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ４０は、生成したクライアント鍵Ｋｉと対応する変換関数Ｆδｉとから暗号化鍵ＥＫｉを生成し、生成した暗号化鍵ＥＫｉにより平文Ｍｉを生成する。
【００３０】
また、サーバ４０からクライアント端末３０へと暗号文を伝達する場合、次のように処理がされる。サーバ４０は、インデックス情報を参照して、送信先のクライアント端末３０の端末情報から、送信先のクライアント端末３０が保持しているクライアント鍵Ｋｉのインデックスｉを検出する。サーバ４０は、検出したインデックスｉとサーバ鍵ＫＳとをクライアント鍵規則に入力して、対応するクライアント鍵Ｋｉを生成する。サーバ４０は、平文Ｍｉをクライアント鍵Ｋｉで暗号化して、暗号文Ｃｉを生成する。そして、サーバ４０は、生成した暗号文Ｃｉを対応するクライアント端末３０へと送信する。暗号文Ｃｉを受信したクライアント端末３０は、保持しているクライアント鍵Ｋｉにより暗号文Ｃｉを復号して、平文Ｍｉを生成する。
【００３１】
なお、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ４０は、生成したクライアント鍵Ｋｉと対応する変換関数Ｆδｉとから暗号化鍵ＥＫｉを生成し、生成した暗号化鍵ＥＫｉにより暗号文Ｃｉを生成する。また、暗号文Ｃｉを受信したクライアント端末３０は、保持しているクライアント鍵Ｋｉと対応する変換関数Ｆδｉとから暗号化鍵ＥＫｉを生成し、生成した暗号化鍵ＥＫｉにより平文Ｍｉを生成する。
【００３２】
このような構成の暗号処理システム１０は、例えば、多数のクライアント端末３０が有するプライバシー情報等をサーバ４０に収集させて、一括して管理することができる。例えば、暗号処理システム１０は、患者の状態を検出するセンサ（体温計、血圧計、脈拍計）等をクライアント端末３０として機能させることにより、複数のセンサから検出データをサーバ４０が収集して一括して管理する医療システムに適用することができる。そして、サーバ４０は、検出データの出力が必要な場合には、サーバ鍵ＫＳおよびクライアント鍵規則から対応するクライアント鍵Ｋｉを生成して、検出データを復号することができる。
【００３３】
また、暗号処理システム１０は、一例として、所定のグループ毎（病院毎、病棟毎、診療科毎または担当医者毎）に、サーバ鍵ＫＳおよびクライアント鍵Ｋｉを変更して、グループ外に対する秘匿性を高めてもよい。
【００３４】
図２は、サーバ鍵ＫＳと複数のクライアント鍵Ｋｉとの関係を示す図である。
【００３５】
ここで、生成装置２０は、一部に互いに相関を有するビットの系列である複数のクライアント鍵Ｋｉを生成するためのクライアント鍵規則に基づいて、複数のクライアント鍵Ｋｉを生成する。互いに相関を有するビットの系列とは、ビットパターンが完全に同一である関係、または、ビットパターンが完全に同一ではないが予め定められたデータ変換（例えばビット反転、一対一関数または線形変換等）をすれば同一となる関係等をいう。
【００３６】
暗号処理システム１０は、ｎ個のクライアント鍵Ｋｉの間にこのような相関性をもたせることにより、サーバ鍵ＫＳの同一の部分系列から、複数のクライアント鍵Ｋｉの一部分を生成することができる。これにより、暗号処理システム１０は、サーバ鍵ＫＳのビット長を、ｎ個のクライアント鍵Ｋｉの合計のビット長よりも短くすることができる。この結果、暗号処理システム１０によれば、サーバ４０が、ｎ個のクライアント鍵Ｋｉの全てを保持したり、ｎ個のクライアント鍵Ｋｉの合計と同一のビット長のサーバ鍵ＫＳを保持したりしなくてよいので、ｎ個のクライアント鍵Ｋｉの管理を容易にすることができる。
【００３７】
なお、１つのクライアント鍵Ｋｉの系列の中には、異なる２以上のクライアント鍵Ｋｉと相関を有する複数の部分系列を含んでいてもよい。例えば、第１のクライアント鍵Ｋ１の系列の中は、第２のクライアント鍵Ｋ２と相関を有する部分系列と、第３のクライアント鍵Ｋ３と相関を有する部分系列とを含んでもよい。これにより、生成装置２０は、サーバ鍵ＫＳを効率良く短くすることが可能なクライアント鍵Ｋｉを生成することができる。
【００３８】
また、１つのクライアント鍵Ｋｉの系列の中には、複数のクライアント鍵Ｋｉと同時に相関を有する部分系列を含んでいてもよい。例えば、第１のクライアント鍵Ｋ１の系列の中には、第２のクライアント鍵Ｋ２および第３のクライアント鍵Ｋ３の両方に相関を有する部分系列を含んでもよい。これにより、生成装置２０は、サーバ鍵ＫＳを効率良く短くすることが可能なクライアント鍵Ｋｉを生成することができる。
【００３９】
また、それぞれのクライアント鍵Ｋｉの系列の中には、他のクライアント鍵Ｋｉと相関の無い部分系列を含んでいてもよい。これにより、生成装置２０は、攻撃者が他のクライアント鍵Ｋｉを獲得した場合における、安全性を高くすることができる。
【００４０】
なお、クライアント鍵Ｋｉの系列は、他のクライアント鍵Ｋｉと相関の無い部分系列を長くすれば、他のクライアント鍵Ｋｉを獲得した攻撃者による攻撃耐性が高まり安全性が高くなるが、サーバ鍵ＫＳのビット長を長くしてしまう。反対に、クライアント鍵Ｋｉの系列は、他のクライアント鍵Ｋｉと相関を有する部分系列を長くすれば、サーバ鍵ＫＳのビット長を短くすることができるが、他のクライアント鍵Ｋｉを取得した攻撃者による攻撃耐性が低まり安全性が低くなる。
【００４１】
このため、暗号処理システム１０は、それぞれのクライアント鍵Ｋｉにおける他のクライアント鍵Ｋｉに対する相関の強さ（例えば、相関の有る系列と無い系列との比率、および、同一の系列と相関がある他のクライアント鍵Ｋｉの数等）を、使用する状況等に応じて調整してもよい。これにより、暗号処理システム１０は、ユーザの意図した安全性を有するクライアント鍵Ｋｉを生成することができる。
【００４２】
図３および図４は、サーバ鍵ＫＳおよびクライアント鍵Ｋｉのビットの更新位置を示す図である。
【００４３】
生成装置２０は、サーバ鍵ＫＳおよび複数のクライアント鍵Ｋｉを生成した後に、複数のクライアント鍵Ｋｉのうちの一部のクライアント鍵Ｋｉを更新することができる。この場合、生成装置２０は、更新対象のクライアント鍵Ｋｉにおける、更新対象となっていない他のクライアント鍵Ｋｉと相関の無い部分系列を更新する。
【００４４】
さらに、生成装置２０は、サーバ鍵ＫＳの系列の一部を更新する。具体的には、生成装置２０は、サーバ鍵ＫＳの系列中における、更新対象のクライアント鍵Ｋｉの更新する部分系列に対応する部分を更新する。この場合、生成装置２０は、更新後のサーバ鍵ＫＳとクライアント鍵規則とから、更新後のクライアント鍵Ｋｉの系列が生成されるように、サーバ鍵ＫＳを更新する。
【００４５】
また、生成装置２０は、クライアント鍵規則の一部を更新してもよい。例えば、生成装置２０は、更新対象のクライアント鍵Ｋ１を構成する部分系列からクライアント鍵Ｋ１へ変換するための変換関数を更新する。この場合も、生成装置２０は、サーバ鍵ＫＳと更新後のクライアント鍵規則とから、更新後のクライアント鍵Ｋｉの系列が生成されるように、クライアント鍵規則を更新する。
【００４６】
また、生成装置２０は、サーバ鍵ＫＳおよびクライアント鍵規則の両者を更新してもよい。
【００４７】
例えば、図３に示すように、１つのクライアント鍵Ｋ１を更新し、他のクライアント鍵Ｋ２，Ｋ３，Ｋ４を更新しない場合、生成装置２０は、クライアント鍵Ｋ１の系列中おける、他のいずれのクライアント鍵Ｋ２，Ｋ３，Ｋ４とも相関の無い部分系列を変更する。また、生成装置２０は、サーバ鍵ＫＳの系列中における対応する部分、および、クライアント鍵規則の対応する部分の少なくとも一方も変更する。
【００４８】
また、例えば、図４に示すように、２つのクライアント鍵Ｋ１，Ｋ２を更新し、他のクライアント鍵Ｋ３，Ｋ４を更新しない場合、生成装置２０は、クライアント鍵Ｋ１，Ｋ２の系列中おける、他のいずれのクライアント鍵Ｋ３，Ｋ４とも相関の無い部分系列を変更する。なお、この場合には、生成装置２０は、クライアント鍵Ｋ１とクライアント鍵Ｋ２との間でのみ相関がある系列も変更してもよい。また、この場合も、生成装置２０は、サーバ鍵ＫＳの系列中における対応する部分、および、クライアント鍵規則の対応する部分の少なくとも一方も変更する。
【００４９】
このように暗号処理システム１０は、複数のクライアント鍵Ｋｉの間に相関性を持たせた場合であっても、複数のクライアント鍵Ｋｉのうちの一部のクライアント鍵Ｋｉを個別に更新することができる。これにより、暗号処理システム１０は、複数のクライアント鍵Ｋｉを効率良く更新することができる。
【００５０】
図５は、第１実施形態に係る生成装置２０の構成を示す図である。生成装置２０は、入力部５１と、乱数発生部５２と、サーバ鍵生成部（第１鍵生成部）５３と、クライアント鍵生成部（第２鍵生成部）５４と、出力部５５と、更新部６０とを有する。
【００５１】
入力部５１は、ユーザから与えられた鍵生成のリクエストを入力する。また、入力部５１は、サーバ鍵規則およびクライアント鍵規則を、外部の情報処理装置等から入力する。なお、入力部５１は、サーバ鍵規則およびクライアント鍵規則を外部の情報処理装置等から入力するのではなく、内部に秘密に保持されているサーバ鍵規則およびクライアント鍵規則を取得してもよい。入力部５１は、サーバ鍵規則をサーバ鍵生成部５３に渡し、クライアント鍵規則をクライアント鍵生成部５４および出力部５５に渡す。
【００５２】
乱数発生部５２は、乱数を発生し、発生した乱数をサーバ鍵生成部５３に渡す。サーバ鍵生成部５３は、入力部５１から受け取ったサーバ鍵規則に基づいて、乱数発生部５２により発生された乱数に基づきサーバ鍵ＫＳを生成する。サーバ鍵生成部５３は、生成したサーバ鍵ＫＳをクライアント鍵生成部５４および出力部５５に渡す。
【００５３】
クライアント鍵生成部５４は、入力部５１から受け取ったクライアント鍵規則に基づいて、サーバ鍵生成部５３から受け取ったサーバ鍵ＫＳから、ｎ個のクライアント鍵Ｋｉを生成する。クライアント鍵生成部５４は、生成したｎ個のクライアント鍵Ｋｉを出力部５５に渡す。また、クライアント鍵生成部５４は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、ｎ個の変換関数Ｆδｉも生成して、出力部５５に渡す。
【００５４】
出力部５５は、サーバ鍵生成部５３から受け取ったサーバ鍵ＫＳ、および、入力部５１から受け取ったクライアント鍵規則をサーバ４０に対して出力する。なお、出力部５５は、サーバ４０が外部の情報処理装置等からクライアント鍵規則を取得可能な場合には、クライアント鍵規則をサーバ４０に対して出力しなくてもよい。
【００５５】
また、出力部５５は、クライアント鍵生成部５４から受け取ったｎ個のクライアント鍵Ｋｉのそれぞれを、対応するクライアント端末３０に対して出力する。さらに、出力部５５は、クライアント端末３０と、そのクライアント端末３０に出力したクライアント鍵Ｋｉのインデックスｉとの対応関係を示すインデックス情報をサーバ４０に出力する。また、出力部５５は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、ｎ個の変換関数Ｆδｉのそれぞれを、対応するクライアント端末３０に対して出力する。
【００５６】
更新部６０は、ユーザから更新のリクエストを入力する。さらに、更新部６０は、更新対象のクライアント鍵Ｋｉのインデックスｉの集合を入力する。更新部６０は、入力部５１が入力したサーバ鍵規則およびクライアント鍵規則を受け取る。更新部６０は、サーバ鍵規則およびクライアント鍵規則に基づき、更新対象のクライアント鍵Ｋｉを更新するためのサーバ鍵更新情報ｓｒｉおよびクライアント鍵更新情報ｃｒｉを生成する。ここで、サーバ鍵更新情報ｓｒｉおよびクライアント鍵更新情報ｃｒｉは、乱数、公開情報、システム管理番号および鍵のリビジョン番号等に基づいて生成される。
【００５７】
更新部６０は、クライアント鍵更新情報ｃｒｉをクライアント端末３０に出力する。また、更新部６０は、サーバ鍵更新情報ｓｒｉをサーバ４０に出力する。なお、更新部６０の構成の詳細については、図１３以降でさらに説明する。
【００５８】
図６は、第１実施形態に係るクライアント端末３０の構成を示す図である。クライアント端末３０は、クライアント内保持部６１と、クライアント内変換部６２と、クライアント内暗号化部６３と、クライアント内送信部６４と、クライアント内受信部６５と、クライアント内復号部６６と、クライアント内更新部６７とを有する。
【００５９】
クライアント内保持部６１は、生成装置２０から出力されたクライアント鍵Ｋｉを受け取って保持する。また、クライアント内保持部６１は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、生成装置２０から出力された変換関数Ｆδｉを受け取って保持する。
【００６０】
クライアント内変換部６２は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、クライアント内保持部６１に保持されているクライアント鍵Ｋｉを、変換関数Ｆδｉに基づき暗号化鍵ＥＫｉに変換する。なお、クライアント端末３０は、クライアント鍵Ｋｉがそのまま暗号化鍵となる場合には、クライアント内変換部６２を備えなくてよい。
【００６１】
サーバ４０へ暗号文Ｃｉを送信する場合、クライアント内暗号化部６３は、平文Ｍｉを例えば機器本体等から受け取る。クライアント内暗号化部６３は、受け取った平文Ｍｉを、クライアント内保持部６１に保持されているクライアント鍵Ｋｉまたはクライアント内変換部６２により変換された暗号化鍵ＥＫｉにより暗号化して、暗号文Ｃｉを生成する。クライアント内暗号化部６３は、生成した暗号文Ｃｉをクライアント内送信部６４に渡す。そして、クライアント内送信部６４は、クライアント内暗号化部６３から受け取った暗号文Ｃｉを、サーバ４０へと送信する。
【００６２】
暗号文Ｃｉをサーバ４０から受信する場合、クライアント内受信部６５は、サーバ４０から送信された暗号文Ｃｉを受信し、受信した暗号文Ｃｉをクライアント内復号部６６に渡す。クライアント内復号部６６は、クライアント内受信部６５から受け取った暗号文Ｃｉを、クライアント内保持部６１に保持されているクライアント鍵Ｋｉまたはクライアント内変換部６２により変換された暗号化鍵ＥＫｉにより復号して、平文Ｍｉを生成する。そして、クライアント内復号部６６は、生成した平文Ｍｉを例えば機器本体等に出力する。なお、暗号化および復号が同一処理により実行される場合には、クライアント内暗号化部６３およびクライアント内復号部６６は共通のモジュール等により実現されていてもよい。
【００６３】
クライアント内更新部６７は、生成装置２０から出力されたクライアント鍵更新情報ｃｒｉを受け取る。クライアント内更新部６７は、受け取ったクライアント鍵更新情報ｃｒｉに応じて、クライアント内保持部６１に保持されているクライアント鍵Ｋｉまたは変換関数Ｆδｉを更新する。
【００６４】
なお、クライアント内変換部６２は、暗号文Ｃｉの送信時および受信時毎に、クライアント鍵Ｋｉを暗号化鍵ＥＫｉに変換するのではなく、生成装置２０からクライアント鍵Ｋｉおよび変換関数Ｆδｉを最初に受け取ったとき、または、生成装置２０により更新された時に、クライアント鍵Ｋｉを暗号化鍵ＥＫｉに変換してもよい。この場合、クライアント内保持部６１は、クライアント内変換部６２により変換された暗号化鍵ＥＫｉを保持する。そして、クライアント内暗号化部６３およびクライアント内復号部６６は、暗号文Ｃｉの送信時および受信時毎に、クライアント内保持部６１から暗号化鍵ＥＫｉを取得する。
【００６５】
図７は、第１実施形態に係るサーバ４０の構成を示す図である。サーバ４０は、サーバ内保持部７１と、サーバ内受信部７２と、サーバ内クライアント鍵生成部７３と、サーバ内変換部７４と、サーバ内復号部７５と、サーバ内暗号化部７６と、サーバ内送信部７７と、サーバ内更新部７８とを有する。
【００６６】
サーバ内保持部７１は、生成装置２０から出力されたサーバ鍵ＫＳおよびクライアント鍵規則を受け取って保持する。なお、サーバ内保持部７１は、クライアント鍵規則が公開されている場合には、公開元の情報処理装置からクライアント鍵規則を受け取る。また、サーバ内保持部７１は、それぞれのクライアント端末３０とクライアント鍵Ｋｉのインデックスｉとの関係を示すインデックス情報を生成装置２０から受け取って、保持する。また、サーバ内保持部７１は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、生成装置２０から出力されたｎ個の変換関数Ｆδｉを受け取って保持する。
【００６７】
サーバ内受信部７２は、クライアント端末３０から送信された暗号文Ｃｉを受信し、受信した暗号文Ｃｉをサーバ内復号部７５に渡す。サーバ内受信部７２は、さらに暗号文Ｃｉを送信したクライアント端末３０を特定する端末情報を、サーバ内クライアント鍵生成部７３に渡す。
【００６８】
暗号文Ｃｉを受信した場合には、サーバ内クライアント鍵生成部７３は、サーバ内受信部７２から受け取った端末情報、および、サーバ内保持部７１に保持されているインデックス情報に基づき、暗号文Ｃｉを生成したクライアント鍵Ｋｉのインデックスｉを特定する。サーバ内クライアント鍵生成部７３は、インデックスｉを特定すると、サーバ内保持部７１に保持されているクライアント鍵規則に基づいて、サーバ内保持部７１に保持されているサーバ鍵ＫＳから、インデックスｉに対応するクライアント鍵Ｋｉを生成する。
【００６９】
サーバ内変換部７４は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、サーバ内クライアント鍵生成部７３が生成したクライアント鍵Ｋｉを受け取る。サーバ内変換部７４は、受け取ったクライアント鍵Ｋｉを、サーバ内保持部７１に保持された対応する変換関数Ｆδｉに基づき暗号化鍵ＥＫｉに変換する。なお、サーバ４０は、クライアント鍵Ｋｉがそのまま暗号化鍵となる場合には、サーバ内変換部７４を備えなくてよい。また、サーバ４０は、サーバ内クライアント鍵生成部７３とサーバ内変換部７４とを合成したブロックを有してもよい。この場合、この合成したブロックは、クライアント鍵規則および変換関数を合成した合成関数を実行して、インデックスｉから暗号化鍵ＥＫｉを直接生成する。
【００７０】
サーバ内復号部７５は、サーバ内受信部７２から受け取った暗号文Ｃｉを、サーバ内クライアント鍵生成部７３により生成されたクライアント鍵Ｋｉまたはサーバ内変換部７４により変換された暗号化鍵ＥＫｉにより復号して、平文Ｍｉを生成する。そして、サーバ内復号部７５は、生成した平文Ｍｉを出力する。
【００７１】
暗号文Ｃｉを送信する場合には、サーバ内クライアント鍵生成部７３は、暗号文の送信先のクライアント端末３０を特定する端末情報を取得する。サーバ内クライアント鍵生成部７３は、受け取った端末情報、および、サーバ内保持部７１に保持されているインデックス情報に基づき、送信先のクライアント端末３０が保持しているクライアント鍵Ｋｉのインデックスｉを特定する。サーバ内クライアント鍵生成部７３は、インデックスｉを特定すると、サーバ内保持部７１に保持されているクライアント鍵規則に基づいて、サーバ内保持部７１に保持されているサーバ鍵ＫＳから、インデックスｉに対応するクライアント鍵Ｋｉを生成する。
【００７２】
サーバ内変換部７４は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、サーバ内クライアント鍵生成部７３が生成したクライアント鍵Ｋｉを受け取る。サーバ内変換部７４は、受け取ったクライアント鍵Ｋｉを、サーバ内保持部７１に保持された対応する変換関数Ｆδｉに基づき暗号化鍵ＥＫｉに変換する。
【００７３】
サーバ内暗号化部７６は、平文Ｍｉを外部から受け取る。サーバ内暗号化部７６は、受け取った平文Ｍｉを、サーバ内クライアント鍵生成部７３から受け取ったクライアント鍵Ｋｉまたはサーバ内変換部７４により変換された暗号化鍵ＥＫｉにより暗号化して、暗号文Ｃｉを生成する。サーバ内暗号化部７６は、生成した暗号文Ｃｉをサーバ内送信部７７に渡す。そして、サーバ内送信部７７は、サーバ内暗号化部７６から受け取った暗号文Ｃｉを、送信先となるクライアント端末３０へと送信する。なお、暗号化および復号が同一処理により実行される場合には、サーバ内復号部７５およびサーバ内暗号化部７６は共通のモジュール等により実現されていてもよい。
【００７４】
図８は、第１実施形態に係る生成装置２０の処理フローを示す図である。まず、ステップＳ１１において、生成装置２０の入力部５１は、鍵生成のリクエストを入力する。続いて、ステップＳ１２において、入力部５１は、サーバ鍵規則およびクライアント鍵規則を取得する。また、ステップＳ１２において、入力部５１は、クライアント鍵Ｋｉのビット系列を暗号化鍵ＥＫｉのビット系列に変換するための変換関数Ｆδｉを取得してもよい。
【００７５】
続いて、ステップＳ１３において、生成装置２０のサーバ鍵生成部５３は、サーバ鍵規則を実行して、乱数に基づきサーバ鍵ＫＳを生成する。ここで、本例において、サーバ鍵規則は、下記の式（１）に示されるような、乱数ｒを入力してサーバ鍵ＫＳのビットの系列を出力するサーバ鍵関数である。なお、式（１）のサーバ鍵関数の内容については、図９を参照して詳細を後述する。
【数１】
2015019333.tif 000003
【００７６】
続いて、生成装置２０のクライアント鍵生成部５４は、インデックスｉ毎に、ステップＳ１４からステップＳ１７のループ処理を実行する。本例においては、クライアント鍵生成部５４は、ｉ＝１からｉ＝ｎまで、ｉを１ずつ増加させながら、ステップＳ１５およびステップＳ１６の処理を実行する。
【００７７】
クライアント鍵生成部５４は、ステップＳ１５において、クライアント鍵規則を実行して、サーバ鍵ＫＳに基づき、インデックスｉに対応するクライアント鍵Ｋｉを生成する。ここで、本例において、クライアント鍵規則は、下記の式（２）に示されるような、サーバ鍵ＫＳおよびインデックスｉを入力してクライアント鍵Ｋｉのビットの系列を出力するクライアント鍵関数である。なお、式（２）のクライアント鍵関数の内容については、図１０等を参照して詳細を後述する。
【数２】
2015019333.tif 000004
【００７８】
続いて、クライアント鍵生成部５４は、ステップＳ１６において、クライアント鍵Ｋｉのビット系列を暗号化鍵ＥＫｉのビット系列に変換するための変換関数Ｆδｉを生成する。クライアント鍵生成部５４は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、ステップＳ１６を実行し、クライアント鍵Ｋｉのビット系列がそのまま暗号化鍵となる場合には、ステップＳ１６を実行しない。また、クライアント鍵生成部５４は、ステップＳ１２で既に変換関数Ｆδｉを取得している場合も、ステップＳ１６を実行しない。
【００７９】
ステップＳ１７において、クライアント鍵生成部５４は、ｉ＝ｎとなるとループ処理を抜けて、処理をステップＳ１８に進める。ステップＳ１８において、生成装置２０の出力部５５は、サーバ鍵ＫＳおよびクライアント鍵規則をサーバ４０に対して出力する。なお、出力部５５は、サーバ４０が外部からクライアント鍵規則を取得可能な場合には、クライアント鍵規則をサーバ４０に対して出力しなくてもよい。また、出力部５５は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、ｎ個の変換関数Ｆδｉもサーバ４０に対して出力する。
【００８０】
また、出力部５５は、ｎ個のクライアント鍵Ｋｉのそれぞれを、対応するクライアント端末３０に対して出力する。また、出力部５５は、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、ｎ個の変換関数Ｆδｉのそれぞれも対応するクライアント端末３０に対して出力する。そして、生成装置２０は、ステップＳ１８の処理が完了すると、本フローを終了する。
【００８１】
図９は、サーバ鍵関数ＳＫｅｙＧｅｎ（ｒ）の内容の一例を示す図である。サーバ鍵関数は、乱数ｒが入力される。
【００８２】
サーバ鍵関数は、入力された乱数ｒを、複数の部分系列に分割する。さらに、サーバ鍵関数は、複数の集合Ｄのそれぞれに対して、複数の部分系列のそれぞれを対応付ける。
【００８３】
ここで、集合Ｄは、インデックスを要素とする集合であって、１からｎまでのインデックスの全ての組み合わせを表す。例えば、ｎ＝３である場合（すなわち、ｉ＝１，２，３である場合）、集合Ｄ＝｛１｝，｛２｝，｛３｝，｛１，２｝，｛１，３｝，｛２，３｝，｛１，２，３｝となる。なお、｛ｘ，ｙ，ｚ｝は、ｘとｙとｚとの組み合わせの集合を表す。
【００８４】
また、集合Ｄに対応付けた部分系列を、ＫＤと表す。従って、乱数ｒは、一例として、下記の式（３）のように表される。なお、‖は、左右のビット列を結合する演算子である。また、部分系列ＫＤは、集合Ｄの要素に対応するクライアント鍵Ｋｉの生成に用いられる情報であることを意味する。例えば、Ｋ｛１，２｝は、クライアント鍵Ｋ１、Ｋ２の生成に用いられる情報である。
【数３】
2015019333.tif 000005
【００８５】
また、それぞれの部分系列のビット長は、サーバ鍵関数により定められる。部分系列ＫＤのビット長を、ｌＤと表す。ｌＤは０以上の整数である。
【００８６】
さらに、サーバ鍵関数は、複数の部分系列ＫＤを一列に配列して、連結する。サーバ鍵関数は、一例として、対応付けられた集合Ｄに含まれているインデックス（要素）の数が少ないほど左側に配置し、インデックス（要素）の数が同一の場合にはより小さい値のインデックス（要素）を含むほど左側に配置する。
【００８７】
例えば、サーバ鍵関数は、Ｋ｛１｝とＫ｛２，３｝とであれば、インデックス（要素）の数が少ないＫ｛１｝を左側に配置する。また、例えば、サーバ鍵関数は、Ｋ｛１，２｝とＫ｛２，３｝とであればより小さい値のインデックス（要素）を含むＫ｛１，２｝を左側に配置する。また、例えば、サーバ鍵関数は、Ｋ｛１，２｝とＫ｛１，３｝とであればより小さい値のインデックス（要素）を含むＫ｛１，２｝を左側に配置する。
【００８８】
そして、サーバ鍵関数は、このように配置した複数の部分系列を連結して、下記の式（４）のように表されるサーバ鍵ＫＳを出力する。なお、図９には、ｎ＝３の場合の配列例が示されている。
【数４】
2015019333.tif 000006
【００８９】
このようなサーバ鍵関数は、例えば、ｌｒビットの乱数から、ｌＳビットのサーバ鍵ＫＳを生成することができる。この場合、ｌｒ＝ｌＳとなる。なお、配列の方法は、予め定められた方法であれば、どのような方法であってもよい。
【００９０】
図１０は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）の内容の一例を示す図である。クライアント鍵関数は、サーバ鍵ＫＳおよびインデックスの値ｉが入力される。
【００９１】
クライアント鍵関数は、入力されたサーバ鍵ＫＳから、複数の部分系列ＫＤを抽出する。すなわち、クライアント鍵関数は、下記式（５）に示されるように、部分系列を抽出する。なお、図１０の（ａ）には、ｎ＝３の場合に抽出される部分系列が示されている。
【数５】
2015019333.tif 000007
【００９２】
続いて、クライアント鍵関数は、抽出された複数の部分系列の中から、入力されたインデックスの値ｉを要素に含む集合に対応する２以上の部分系列を選択する。例えば、クライアント鍵関数は、ｉ＝１の場合には、下記式（６）に示されるような部分系列を選択する。なお、図１０の（ｂ）には、ｎ＝３、ｉ＝１の場合に選択される部分系列が示されている。
【数６】
2015019333.tif 000008
【００９３】
また、例えば、クライアント鍵関数は、ｉ＝２の場合には、下記式（７）に示されるような部分系列を選択する。なお、図１０の（ｃ）には、ｎ＝３、ｉ＝２の場合に選択される部分系列が示されている。
【数７】
2015019333.tif 000009
【００９４】
また、例えば、クライアント鍵関数は、ｉ＝ｎの場合には、下記式（８）に示されるような部分系列を選択する。なお、図１０の（ｄ）には、ｎ＝３、ｉ＝３の場合に選択される部分系列が示されている。
【数８】
2015019333.tif 000010
【００９５】
続いて、クライアント鍵関数は、選択した２以上の部分系列ＫＤを一列に配列して、連結する。クライアント鍵関数は、一例として、対応付けられた集合Ｄに含まれているインデックス（要素）の数が少ないほど左側に配置し、インデックス（要素）の数が同一の場合にはより小さい値の要素を含むほど左側に配置する。この配列方法は、サーバ鍵関数と同様である。
【００９６】
そして、クライアント鍵関数は、このように配置した複数の部分系列を連結してクライアント鍵Ｋｉを出力する。例えば、クライアント鍵関数は、ｉ＝１の場合には、下記式（９）に示されるようなクライアント鍵Ｋ１を出力する。なお、図１０の（ｅ）には、ｎ＝３、ｉ＝１の場合に出力されるクライアント鍵Ｋ１が示されている。
【数９】
2015019333.tif 000011
【００９７】
例えば、クライアント鍵関数は、ｉ＝２の場合には、下記式（１０）に示されるようなクライアント鍵Ｋ２を出力する。なお、図１０の（ｆ）には、ｎ＝３、ｉ＝２の場合に出力されるクライアント鍵Ｋ２が示されている。
【数１０】
2015019333.tif 000012
【００９８】
例えば、クライアント鍵関数は、ｉ＝ｎの場合には、下記式（１１）に示されるようなクライアント鍵Ｋｎを出力する。なお、図１０の（ｇ）には、ｎ＝３、ｉ＝３の場合に出力されるクライアント鍵Ｋ３が示されている。
【数１１】
2015019333.tif 000013
【００９９】
なお、配列の方法は、予め定められた方法であれば、どのような方法であってもよい。
【０１００】
このように生成されたクライアント鍵Ｋｉは、含まれているインデックス（要素）の数が２個以上の集合Ｄに対応する部分系列が、他のクライアント鍵Ｋｉと相関が有る。これにより、第１実施形態に係る生成装置２０によれば、このようなクライアント鍵関数をクライアント鍵規則とすることにより、ｎ個のクライアント鍵Ｋｉの合計のビット長を、サーバ鍵ＫＳのビット長ｌＳよりも短くすることができる。
【０１０１】
図１１は、サーバ鍵関数の内容を関数で表した図である。サーバ鍵関数は、図９で説明した内容の関数に限らず、乱数ｒに対してデータ変換（第１データ変換Ｆα）をしてサーバ鍵ＫＳを生成する関数であってもよい。
【０１０２】
例えば、第１データ変換Ｆαは、下記の式（２１）に示されるように、乱数ｒをそのままサーバ鍵ＫＳとして出力する関数であってもよい。
【数１２】
2015019333.tif 000014
【０１０３】
また、例えば、第１データ変換Ｆαは、下記の式（２２）に示されるように、乱数ｒを関数Ｆ１により変換した系列を出力してもよい。Ｆ１は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。また、Ｆ１は、ｌｒビットの入力に対して、ｌＳビット（ｌｒ≧ｌＳ）を出力する。
【数１３】
2015019333.tif 000015
【０１０４】
また、例えば、第１データ変換Ｆαは、下記の式（２３）に示されるように、乱数ｒと、乱数ｒを関数Ｆ２により変換した系列との排他的論理和を出力してもよい。Ｆ２は、一例として、一対一関数、擬似ランダム関数、ハッシュ関数または定数関数等である。また、Ｆ２は、ｌＳビットの入力に対して、ｌＳビットを出力する。
【数１４】
2015019333.tif 000016
【０１０５】
また、例えば、第１データ変換Ｆαは、下記の式（２４）に示されるように、乱数ｒを関数Ｆ１により変換した系列と、乱数ｒを関数Ｆ３により変換した系列との、排他的論理和を出力してもよい。Ｆ３は、一例として、一対一関数、擬似ランダム関数、ハッシュ関数または定数関数等である。また、Ｆ３は、ｌｒビットの入力に対して、ｌＳビット（ｌｒ≧ｌＳ）を出力する。
【数１５】
2015019333.tif 000017
【０１０６】
図１２は、クライアント鍵関数の内容を関数で表した図である。クライアント鍵関数は、サーバ鍵ＫＳの系列に対してデータ変換（第２データ変換Ｆβ）をし、変換後のサーバ鍵ＫＳ´の系列に基づき複数のクライアント鍵Ｋｉを生成する関数であってもよい。
【０１０７】
例えば、第２データ変換Ｆβは、下記の式（３１）に示されるように、サーバ鍵ＫＳをそのまま変換後サーバ鍵ＫＳ´として出力する関数であってもよい。
【数１６】
2015019333.tif 000018
【０１０８】
また、例えば、第２データ変換Ｆβは、下記の式（３２）に示されるように、サーバ鍵ＫＳを関数Ｆ４により変換した系列を、変換後サーバ鍵ＫＳ´として出力してもよい。Ｆ４は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。また、Ｆ４は、ｌＳビットの入力に対して、ｌＳビットを出力する。
【数１７】
2015019333.tif 000019
【０１０９】
また、例えば、第２データ変換Ｆβは、下記の式（３３）に示されるように、サーバ鍵ＫＳと、サーバ鍵ＫＳを関数Ｆ５により変換した系列との排他的論理和を、変換後サーバ鍵ＫＳ´として出力してもよい。Ｆ５は、一例として、一対一関数、擬似ランダム関数、ハッシュ関数または定数関数等である。また、Ｆ５は、ｌＳビットの入力に対して、ｌＳビットを出力する。
【数１８】
2015019333.tif 000020
【０１１０】
また、例えば、第２データ変換Ｆβは、下記の式（３４）に示されるように、サーバ鍵ＫＳを関数Ｆ４により変換した系列と、サーバ鍵ＫＳを関数Ｆ５により変換した系列との、排他的論理和を、変換後サーバ鍵ＫＳ´として出力してもよい。
【数１９】
2015019333.tif 000021
【０１１１】
また、クライアント鍵関数は、変換後サーバ鍵ＫＳ´の系列から、部分系列ＫＤを選択および配列した系列（変換前クライアント鍵Ｋｉ´）に対して、データ変換（第３データ変換Ｆγ）をしてクライアント鍵Ｋｉを生成する関数であってもよい。
【０１１２】
例えば、第３データ変換Ｆγは、下記の式（４１）に示されるように、変換前クライアント鍵Ｋｉ´をそのままクライアント鍵Ｋｉとして出力する関数であってもよい。
【数２０】
2015019333.tif 000022
【０１１３】
また、例えば、第３データ変換Ｆγは、下記の式（４２）に示されるように、変換前クライアント鍵Ｋｉ´を関数Ｆ６により変換した系列を、クライアント鍵Ｋｉとして出力してもよい。Ｆ６は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。また、Ｆ６は、ｌｉビットの入力に対して、ｌｉビットを出力する。
【数２１】
2015019333.tif 000023
【０１１４】
Ｆ６は、下記の式（４３）に示されるように、Ｋｉ´を行ベクトルと考え右から正則行列Ｒをかけてもよい。例えば、Ｋｉ´の１ビットをベクトルの１要素とし、Ｒをｌｉ×ｌｉの正則行列として計算する。また、例えば、Ｋｉ´の複数ビットが示す数をベクトルの１つの要素としてもよい。ここで、Ｒは公開してもよい。変換前クライアント鍵Ｋｉ´に正則行列Ｒをかけることで、共通の部分系列を有する複数のクライアント鍵Ｋｉで、共通の部分系列のビット位置を変えることができる。攻撃者がクライアント鍵Ｋｉを持っていてもクライアント鍵Ｋｊのビット系列の中でクライアント鍵Ｋｉと共通の部分系列のビット位置を推測不能にする。
【数２２】
2015019333.tif 000024
【０１１５】
また、例えば、第３データ変換Ｆγは、下記の式（４４）に示されるように、変換前クライアント鍵Ｋｉ´と、変換前クライアント鍵Ｋｉ´を関数Ｆ７により変換した系列との排他的論理和を、クライアント鍵Ｋｉとして出力してもよい。Ｆ７は、一例として、一対一関数、擬似ランダム関数、ハッシュ関数または定数関数等である。また、Ｆ７は、ｌｉビットの入力に対して、ｌｉビットを出力する。
【数２３】
2015019333.tif 000025
【０１１６】
また、例えば、第３データ変換Ｆγは、下記の式（４５）に示されるように、変換前クライアント鍵Ｋｉ´を関数Ｆ６により変換した系列と、変換前クライアント鍵Ｋｉ´を関数Ｆ７により変換した系列との、排他的論理和を、クライアント鍵Ｋｉとして出力してもよい。
【数２４】
2015019333.tif 000026
【０１１７】
また、例えば、第３データ変換Ｆγは、下記の式（４６）に示されるように、変換前クライアント鍵Ｋｉ´と、集合Ｄとを関数Ｆ８により変換した系列を、クライアント鍵Ｋｉとして出力してもよい。Ｆ８は、集合Ｄに対応する部分系列ＫＤをＫｉ´から削除する。
【数２５】
2015019333.tif 000027
【０１１８】
また、例えば、第３データ変換Ｆγは、下記の式（４７）に示されるように、複数の変換前クライアント鍵Ｋｉ´を関数Ｆ９により変換した系列を、複数のクライアント鍵Ｋｉ，Ｋｊとして出力してもよい。なお、Ｋｊは、Ｋｉとは異なるクライアント鍵を表す。Ｆ９は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。
【数２６】
2015019333.tif 000028
【０１１９】
また、Ｆ９は、下記の式（４８）に示されるように、複数のクライアント鍵Ｋｉ´を１つの行ベクトルと考え右から正則行列Ｒをかけてもよい。式（４７）、（４８）は、変換前クライアント鍵Ｋｉ´が２つの場合の例であるが、変換前クライアント鍵Ｋｉ´が３つ以上であってもよい。
【数２７】
2015019333.tif 000029
【０１２０】
また、クライアント鍵関数ＣＫｅｙＧｅｎ（ｒ）は、第２データ変換Ｆβ、部分系列の選択，配列処理および第３データ変換Ｆγを一括して実行する関数であってもよい。
【０１２１】
また、生成装置２０は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）と変換関数Ｆδｉとを合成した合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を生成してもよい。この場合、生成装置２０は、生成した合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）をサーバ４０に送信して、サーバ４０にサーバ鍵ＫＳおよびインデックスｉから、暗号化鍵ＥＫｉを直接生成させる。
【０１２２】
図１３は、第１例に係る更新部６０の構成をクライアント端末３０およびサーバ４０とともに示す図である。
【０１２３】
第１例において、クライアント鍵Ｋｉは、暗号化鍵ＥＫｉを生成するための種情報である。従って、第１例においては、生成装置２０は、複数のクライアント鍵Ｋｉのそれぞれ毎に、対応するクライアント鍵Ｋｉを暗号化鍵ＥＫｉに変換するための変換関数Ｆδｉを生成する。第１例において、生成装置２０は、それぞれのクライアント端末３０に対して、対応する変換関数Ｆδｉを出力する。そして、第１例において、更新部６０は、変換関数Ｆδｉを更新する。
【０１２４】
第１例において、更新部６０は、図１３に示すように、入力部８０と、乱数発生部８１と、更新情報生成部８２と、出力部８３とを有する。
【０１２５】
入力部８０は、更新対象のクライアント鍵Ｋｉを指定するためのインデックスｉの集合を入力する。インデックスｉの集合には、１つのインデックスｉのみが含まれていてもよいし、複数のインデックスｉが含まれていてもよい。乱数発生部８１は、予め定められた桁数の乱数を発生する。
【０１２６】
更新情報生成部８２は、乱数発生部８１により発生された乱数に基づき、入力部８０が入力したそれぞれのインデックスｉに対応してマスター鍵ｇｉを生成する。マスター鍵ｇｉは、インデックスｉに対応する変換関数Ｆδｉを生成するための種となる情報である。
【０１２７】
出力部８３は、インデックスｉおよびマスター鍵ｇｉをサーバ鍵更新情報ｓｒｉとしてサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに対して、対応するインデックスｉおよびマスター鍵ｇｉをクライアント鍵更新情報ｃｒｉとして出力する。
【０１２８】
なお、更新情報生成部８２は、マスター鍵ｇｉに代えて、インデックスｉに対応する変換関数Ｆδｉを生成してもよい。この場合、出力部８３は、マスター鍵ｇｉに代えて対応する変換関数Ｆδｉを、サーバ鍵更新情報ｓｒｉとしてサーバ４０に出力する。また、この場合、出力部８３は、マスター鍵ｇｉに代えて対応する変換関数Ｆδｉをクライアント端末３０にクライアント鍵更新情報ｃｒｉとして出力する。
【０１２９】
ここで、変換関数Ｆδｉとして、以下の例がある。なお、更新情報生成部８２は、マスター鍵ｇｉに加えてシステム管理番号およびリビジョン番号等の情報に基づいて変換関数Ｆδｉを生成してもよい。ここでは、マスター鍵ｇｉ以外の情報を管理情報ｗと表す。管理情報ｗは、秘匿情報であってもよいし、公開情報であってもよい。
【０１３０】
例えば、変換関数Ｆδｉは、下記の式（６０）〜式（６２）に示されるように、クライアント鍵Ｋｉとマスター鍵ｇｉとの算術和、算術積または排他的論理和を出力する関数であってもよい。なお、式（６２）は、Ｋｉとｇｉとのビット長が等しい場合の式である。
【数２８】
2015019333.tif 000030
【０１３１】
また、例えば、変換関数Ｆδｉは、下記の式（６３）に示されるように、クライアント鍵Ｋｉとマスター鍵ｇｉと管理情報ｗとの演算結果を出力する関数であってもよい。なお、○は、算術加算、算術乗算、排他的論理和演算などの演算子であり、他の式でも同様である。
【数２９】
2015019333.tif 000031
【０１３２】
また、例えば、変換関数Ｆδｉは、下記の式（６４）に示されるように、クライアント鍵Ｋｉとマスター鍵ｇｉと管理情報ｗとの和、積または排他的論理和を関数Ｆ１０により変換した系列を出力する関数であってもよい。Ｆ１０は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。また、Ｆ１０は、ｌｉビットの入力に対して、ｌｉビットを出力する。
【数３０】
2015019333.tif 000032
【０１３３】
また、例えば、変換関数Ｆδｉは、下記の式（６５）に示されるように、Ｋｉを行ベクトルと考え右から正則行列ｇｉをかけてもよい。例えば、変換関数Ｆδｚは、Ｋｉの１ビットをベクトルの１要素とし１×ｌｉの行ベクトルとし、ｇｉをｌｉ×ｌｉの正則行列として計算する。また、例えば、変換関数Ｆδｚは、Ｋｉの複数ビットが示す数をベクトルの１つの要素として計算してもよい。
【数３１】
2015019333.tif 000033
【０１３４】
また、例えば、変換関数Ｆδｉは、下記の式（６６）に示されるように、Ｋｉを列ベクトルと考え、行列ｗと列ベクトルｇｉの積を加えてもよい。例えば、変換関数Ｆδｚは、Ｋｉの１ビットをベクトルの１要素とし、ｌｉ×１の列ベクトルとし、ｗをｌｉ×ｌｇ行列とし、ｇｉをｌｇ×１の列ベクトルとして計算する。また、例えば、変換関数Ｆδｚは、Ｋｉ、ｇｉ、ｗの複数ビットが示す数をベクトルの１つの要素として計算してもよい。
【数３２】
2015019333.tif 000034
【０１３５】
また、例えば、変換関数Ｆδｉは、下記の式（６７）に示されるように、クライアント鍵Ｋｉを関数Ｆ１０により変換した系列と、マスター鍵ｇｉを関数Ｆ１１により変換した系列との、演算結果を出力してもよい。Ｆ１１は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。
【数３３】
2015019333.tif 000035
【０１３６】
なお、変換関数Ｆδｉは、このような関数に限らず、クライアント鍵Ｋｉを、マスター鍵ｇｉまたは管理情報ｗ等によって変換する関数であればよい。
【０１３７】
図１４は、第１例に係る更新部６０の処理フローを示す図である。まず、ステップＳ１１１において、更新部６０の入力部８０は、更新対象のクライアント鍵Ｋｉを指定するためのインデックスｉの集合を入力する。続いて、ステップＳ１１２において、更新情報生成部８２は、乱数に基づき、入力部８０が入力したそれぞれのインデックスｉに対応してマスター鍵ｇｉを生成する。
【０１３８】
そして、ステップＳ１１３において、出力部８３は、インデックスｉおよびマスター鍵ｇｉをサーバ４０に出力する。さらに、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０に、対応するインデックスｉおよびマスター鍵ｇｉを出力する。
【０１３９】
図１５は、第１例に係るクライアント端末３０およびサーバ４０の構成の一部を更新部６０とともに示す図である。
【０１４０】
第１例において、更新対象のクライアント端末３０のクライアント内更新部６７は、更新部６０からインデックスｉおよびマスター鍵ｇｉを取得する。クライアント内更新部６７は、取得したインデックスｉおよびマスター鍵ｇｉを、予め保持しているマスター関数Ｇｆ（ｇｉ，ｉ）に入力して、変換関数Ｆδｉを生成する。マスター関数Ｇｆ（ｇｉ，ｉ）は、マスター鍵ｇｉおよびインデックスｉから、変換関数Ｆδｉを生成するための関数である。マスター関数Ｇｆ（ｇｉ，ｉ）は、公開情報であってもよいし、生成装置２０により生成された秘匿情報であってもよい。また、マスター関数は、管理情報ｗを引数にとるＧｆ（ｇｉ，ｉ，ｗ）であってもよい。また、マスター関数が出力する変換関数Ｆδｉは、例えば、式（６０）〜（６７）に示す関数である。
【０１４１】
そして、クライアント内更新部６７は、クライアント内保持部６１に保持されている変換関数Ｆδｉを、新たに生成した変換関数Ｆδｉに置き換える。なお、クライアント内更新部６７は、更新部６０から、マスター鍵ｇｉに代えて変換関数Ｆδｉを取得してもよい。この場合、クライアント内更新部６７は、クライアント内保持部６１に保持されている変換関数Ｆδｉを、取得した変換関数Ｆδｉに置き換える。
【０１４２】
暗号化時または復号時において、クライアント内変換部６２は、クライアント内保持部６１に保持されている既存のクライアント鍵Ｋｉと、新たな変換関数Ｆδｉとに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、クライアント端末３０は、新たな暗号化鍵ＥＫｉを用いてサーバ４０との間で暗号通信をすることができる。
【０１４３】
第１例において、サーバ４０のサーバ内更新部７８は、更新部６０からインデックスｉおよびマスター鍵ｇｉを取得する。サーバ内更新部７８は、取得したインデックスｉおよびマスター鍵ｇｉをマスター関数Ｇｆ（ｇｉ，ｉ）に入力して、変換関数Ｆδｉを生成する。マスター関数Ｇｆ（ｇｉ，ｉ）は、対応するクライアント端末３０が保持しているものと同一である。
【０１４４】
そして、サーバ内更新部７８は、サーバ内保持部７１に保持されている変換関数Ｆδｉを、新たに生成した変換関数Ｆδｉに置き換える。なお、サーバ内更新部７８は、更新部６０から、マスター鍵ｇｉに代えて変換関数Ｆδｉを取得してもよい。この場合、サーバ内更新部７８は、サーバ内保持部７１に保持されている変換関数Ｆδｉを、取得した変換関数Ｆδｉに置き換える。
【０１４５】
暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、クライアント鍵Ｋｉを生成する。サーバ内変換部７４は、生成されたクライアント鍵Ｋｉと、新たな変換関数Ｆδｉとに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、サーバ４０は、新たな暗号化鍵ＥＫｉを用いてクライアント端末３０と暗号通信をすることができる。
【０１４６】
第１例に係る更新部６０によれば、変換関数Ｆδｉを更新することにより、暗号化鍵ＥＫｉを更新することができる。
【０１４７】
図１６は、第２例に係る更新部６０の構成をクライアント端末３０およびサーバ４０とともに示す図である。なお、第２例を説明するに当たり、第１例と略同一の構成および機能を有する部材には同一の符号を付けて、相違点を除き説明を省略する。
【０１４８】
第２例において、生成装置２０は、更新対象のクライアント鍵Ｋｉを更新する。これとともに、生成装置２０は、サーバ鍵ＫＳにおける一部のビットを更新する。具体的には、生成装置２０は、サーバ鍵ＫＳにおける更新対象のクライアント鍵Ｋｉの種となり且つ更新対象ではないクライアント鍵Ｋｉの種となっていないビットを更新する。
【０１４９】
第２例において、更新部６０は、図１６に示すように、入力部８０と、乱数発生部８１と、第１更新情報生成部８４と、第２更新情報生成部８５と、出力部８３とを有する。
【０１５０】
第１更新情報生成部８４は、サーバ鍵更新情報ｓｒｉを生成する。第１更新情報生成部８４は、位置検出部９１と、値生成部９２とを含む。
【０１５１】
位置検出部９１は、入力部８０が入力したそれぞれのインデックスｉに基づき、サーバ鍵ＫＳにおける、更新対象のクライアント鍵Ｋｉの種となり且つ更新対象ではないクライアント鍵Ｋｉの種となっていないビット位置（更新位置Ｐ）を検出する。すなわち、位置検出部９１は、そのビットの値を変更すると、更新対象のクライアント鍵Ｋｉは変更されるが、更新対象ではないクライアント鍵Ｋｉは変更されないビット位置を検出する。
【０１５２】
例えば、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）が、図１０に示した変換をする場合、サーバ鍵ＫＳにおける、部分系列のビット位置は予め判明している。従って、図１０に示した変換をする場合、位置検出部９１は、予め判明している情報に基づき、更新対象のクライアント鍵Ｋｉの種となり且つ更新対象ではないクライアント鍵Ｋｉの種となっていないビット位置（更新位置Ｐ）を検出する。
【０１５３】
また、例えば、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）が、図１２に示した変換をする場合、位置検出部９１は、このようなビット位置を、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を逆に辿って検出する。以下逆に辿る場合の例について説明する。図１２で、変換前クライアント鍵Ｋｉ’に対応する変換後サーバ鍵ＫＳ’は、部分系列の選択、配置方法が定まっているため分かっている。従って、位置検出部９１は、変換後サーバ鍵ＫＳ’と変換前サーバ鍵ＫＳとの対応に基づき、変換前サーバ鍵ＫＳのうち更新できるビット位置を検出する。
【０１５４】
第２例は、第２データ変換Ｆβが置換または線形変換の場合に適用できる。このため、ＫＳ’＝Ｆβ（ＫＳ）＝φ（ＫＳ）の場合を考える。φは、行列であり、置換または線形変換を表す。Ｂは、ＫＳ’の更新するビット位置集合を表す。ｂ∈Ｂ行目が１であるような列の位置を更新位置Ｐとする。なお、ｂが含まれる行とｂが含まれない行とが共に１である列が、行列φに含まれる場合は適用できない。
【０１５５】
具体的に示すと以下の通りである。ＫＳ’およびＫＳを以下の通りとする。ｘｉ、ｙｉは、１ビットである。
【数３４】
2015019333.tif 000036
【０１５６】
ＫＳ’で更新する値をｘ１、ｙ３とすると、更新するビット位置は１ビット目と３ビット目である。従って、ＫＳ’の更新するビット位置集合は、Ｂ＝｛１，３｝である。ｂ＝１行目が１である列は、２列目と５列目である。ｂ＝３行目が１である列は、１列目と５列目である。すなわち、この具体例の場合には、変換前サーバ鍵ＫＳの更新位置は、Ｐ＝１，２，５となる。
【０１５７】
なお、逆に辿ってビット位置を検出するので、第２例においては、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）は、ビット位置の配置変更または線形変換をする関数である必要がある。従って、第２例において、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）は、ビット位置を逆に辿ることができない、擬似ランダム関数およびハッシュ関数等ではない。
【０１５８】
また、位置検出部９１は、さらに、検出したビット位置の合計のビット数ｌを示す情報を生成する。
【０１５９】
値生成部９２は、乱数発生部８１により発生された乱数に基づき、位置検出部９１が生成したビット数ｌ分の更新値Ｖを生成する。
【０１６０】
第２更新情報生成部８５は、クライアント鍵更新情報ｃｒｉを生成する。第２更新情報生成部８５は、サーバ鍵生成部９３と、クライアント鍵生成部９４とを含む。
【０１６１】
サーバ鍵生成部９３は、更新前のサーバ鍵ＫＳ、更新位置Ｐおよび更新値Ｖに基づき、更新後の新たなサーバ鍵ＫＳを生成する。具体的には、サーバ鍵生成部９３は、更新前のサーバ鍵ＫＳにおける更新位置Ｐに示されたビット位置の値を、更新値Ｖに示された値に置き換える。クライアント鍵生成部９４は、入力部８０が入力したインデックスｉ、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および更新後の新たなサーバ鍵ＫＳに基づき、新たなクライアント鍵Ｋｉを生成する。
【０１６２】
出力部８３は、第１更新情報生成部８４が生成した更新位置Ｐおよび更新値Ｖをサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、第２更新情報生成部８５が生成した新たなクライアント鍵Ｋｉを出力する。
【０１６３】
図１７は、第２例に係る更新部６０の処理フローを示す図である。まず、ステップＳ１２１において、更新部６０の入力部８０は、更新対象のクライアント鍵Ｋｉを指定するためのインデックスｉの集合を入力する。
【０１６４】
続いて、ステップＳ１２２において、第１更新情報生成部８４は、入力部８０が入力したそれぞれのインデックスｉに基づき、サーバ鍵ＫＳにおける、更新対象のクライアント鍵Ｋｉの種となり且つ更新対象ではないクライアント鍵Ｋｉの種となっていないビット位置（更新位置Ｐ）、および、ビット数ｌを検出する。続いて、ステップＳ１２３において、第１更新情報生成部８４は、乱数に基づき、ビット数ｌ分の更新値Ｖを生成する。
【０１６５】
続いて、ステップＳ１２４において、第２更新情報生成部８５は、更新位置Ｐ、更新値Ｖおよび更新前のサーバ鍵ＫＳに基づき、更新後の新たなサーバ鍵ＫＳを生成する。続いて、ステップＳ１２５において、第２更新情報生成部８５は、入力部８０が入力したインデックスｉ、更新後の新たなサーバ鍵ＫＳおよび既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に基づき、新たなクライアント鍵Ｋｉを生成する。
【０１６６】
そして、ステップＳ１２６において、出力部８３は、更新位置Ｐおよび更新値Ｖをサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、新たなクライアント鍵Ｋｉを出力する。
【０１６７】
図１８は、第２例に係るクライアント端末３０およびサーバ４０の構成の一部を更新部６０とともに示す図である。第２例において、更新対象のクライアント端末３０のクライアント内更新部６７は、更新部６０からクライアント鍵Ｋｉを取得する。そして、クライアント内更新部６７は、クライアント内保持部６１に保持されているクライアント鍵Ｋｉを、取得した新たなクライアント鍵Ｋｉに置き換える。
【０１６８】
これにより、クライアント端末３０は、暗号化時または復号時において、クライアント内保持部６１に保持されている新たなクライアント鍵Ｋｉを用いてサーバ４０との間で暗号通信をすることができる。
【０１６９】
なお、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、クライアント内変換部６２は、クライアント内保持部６１に保持されている新たなクライアント鍵Ｋｉと、既存の変換関数Ｆδｉとに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、クライアント端末３０は、新たな暗号化鍵ＥＫｉを用いてサーバ４０との間で暗号通信をすることができる。
【０１７０】
第２例において、サーバ４０のサーバ内更新部７８は、更新部６０から、更新位置Ｐおよび更新値Ｖを取得する。サーバ内更新部７８は、更新前の既存のサーバ鍵ＫＳ、更新位置Ｐおよび更新値Ｖに基づき、更新後の新たなサーバ鍵ＫＳを生成する。具体的には、サーバ内更新部７８は、更新前のサーバ鍵ＫＳにおける更新位置Ｐに示されたビット位置の値を、更新値Ｖに示された値に置き換える。そして、サーバ内更新部７８は、サーバ内保持部７１に保持されている既存のサーバ鍵ＫＳを、更新後の新たなサーバ鍵ＫＳに置き換える。
【０１７１】
暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および更新後の新たなサーバ鍵ＫＳに基づき、新たなクライアント鍵Ｋｉを生成する。これにより、サーバ４０は、新たなクライアント鍵Ｋｉを用いてクライアント端末３０と暗号通信をすることができる。
【０１７２】
なお、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ内変換部７４は、生成された新たなクライアント鍵Ｋｉと、既存の変換関数Ｆδｉとに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、サーバ４０は、新たな暗号化鍵ＥＫｉを用いてクライアント端末３０と暗号通信をすることができる。
【０１７３】
また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ４０は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および変換関数Ｆδｉを合成した合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を用いてもよい。この場合、サーバ内保持部７１は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および変換関数Ｆδｉに代えて、合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を保持する。そして、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている既存の合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）および新たなサーバ鍵ＫＳに基づき、新たな暗号化鍵ＥＫｉを生成する。
【０１７４】
また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、更新部６０は、更新後の新たなクライアント鍵Ｋｉに代えて新たな暗号化鍵ＥＫｉを生成して、クライアント端末３０に送信してもよい。この場合、クライアント内更新部６７は、クライアント内保持部６１に保持されている暗号化鍵ＥＫｉを、取得した新たな暗号化鍵ＥＫｉに置き換える。
【０１７５】
第２例に係る更新部６０によれば、サーバ鍵ＫＳの一部を更新することにより、クライアント鍵Ｋｉまたは暗号化鍵ＥＫｉを更新することができる。
【０１７６】
図１９は、第３例に係る更新部６０の構成をクライアント端末３０およびサーバ４０とともに示す図である。なお、第３例を説明するに当たり、第２例と略同一の構成および機能を有する部材には同一の符号を付けて、相違点を除き説明を省略する。
【０１７７】
第３例において、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）は、複数のクライアント鍵Ｋｉのそれぞれに対応して異なる複数の関数を含む。例えば、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）は、複数のクライアント鍵Ｋｉのそれぞれに対応する複数の関数から構成される。例えば、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）は、図１２に示した、更新対象のクライアント鍵Ｋ１を構成する部分系列からクライアント鍵Ｋ１へ変換するための第３データ変換Ｆγに対応した複数の部分関数を含む。従って、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）は、指定されたインデックスｉに対応する関数部分が変更されることにより、この指定されたインデックスｉに対応して生成するクライアント鍵Ｋｉが変更される。
【０１７８】
また、生成装置２０は、サーバ鍵ＫＳとともに、マスター関数Ｇｆ（ｇｉ，ｉ）を出力する。第３例において、マスター関数Ｇｆ（ｇｉ，ｉ）は、マスター鍵ｇｉおよびインデックスｉから、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に含まれる指定されたインデックスｉに対応する関数部分を生成するための関数である。すなわち、マスター関数Ｇｆ（ｇｉ，ｉ）にマスター鍵ｇｉおよびインデックスｉを入力すると、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に含まれるインデックスｉに対応する関数部分が生成される。
【０１７９】
第３例においては、更新部６０は、更新対象のクライアント鍵Ｋｉを更新する。これとともに、更新部６０は、マスター鍵ｇｉを更新して、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に含まれる更新対象のクライアント鍵Ｋｉに対応する関数部分を更新する。
【０１８０】
クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）が、図１２に示す変換で、第３データ変換Ｆγがクライアント毎に異なる場合、第３データ変換Ｆγが指定されたインデックスｉに対応する関数部分となる。インデックスｉに対応する第３データ変換ＦγをＦγｉとする。
【０１８１】
マスター関数Ｇｆ（ｇｉ，ｉ）は、例えば、以下に示すような例の第３データ変換Ｆγを出力する。ここで、なお、更新情報生成部８２は、マスター鍵ｇｉに加えてシステム管理番号およびリビジョン番号等の情報に基づいて第３データ変換Ｆγを生成してもよい。ここでは、マスター鍵ｇｉ以外を管理情報ｗと表す。管理情報ｗは、秘匿情報であってもよいし、公開情報であってもよい。このとき、マスター関数Ｇｆ（ｇｉ，ｉ，ｗ）は、第３データ変換Ｆγを出力する。
【０１８２】
例えば、第３データ変換Ｆγは、下記の式（７０）〜（７２）に示されるように、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉとの算術和、算術積または排他的論理和を出力する関数であってもよい。なお、式（７２）は、Ｋｉ’とｇｉとのビット長が等しい場合の式である。
【数３５】
2015019333.tif 000037
【０１８３】
また、例えば、第３データ変換Ｆγｉは、下記の式（７３）に示されるように、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉと管理情報ｗとの演算結果を出力する関数であってもよい。
【数３６】
2015019333.tif 000038
【０１８４】
また、例えば、第３データ変換Ｆγｉは、下記の式（７４）に示されるように、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉと管理情報ｗとの和、積または排他的論理和を関数Ｆ１２により変換した系列を出力する関数であってもよい。Ｆ１２は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。また、Ｆ１２は、ｌｉビットの入力に対して、ｌｉビットを出力する。
【数３７】
2015019333.tif 000039
【０１８５】
また、例えば、第３データ変換Ｆγｉは、下記の式（７５）に示されるように、Ｋｉ’を行ベクトルと考え右から正則行列ｇｉをかけてもよい。例えば、第３データ変換Ｆγｉは、Ｋｉの１ビットをベクトルの１要素とし、１×ｌｉの行ベクトルとし、ｇｉをｌｉ×ｌｉの正則行列として計算する。また、例えば、第３データ変換Ｆγｉは、Ｋｉ’の複数ビットが示す数をベクトルの１つの要素として計算してもよい。
【数３８】
2015019333.tif 000040
【０１８６】
また、例えば、第３データ変換Ｆγｉは、下記の式（７６）に示されるように、Ｋｉ’を列ベクトルと考え、行列ｗと列ベクトルｇｉの積を加えてもよい。例えば、第３データ変換Ｆγｉは、Ｋｉ’の１ビットをベクトルの１要素とし、ｌｉ×１の列ベクトルとし、ｗをｌｉ×ｌｇ行列とし、ｇｉをｌｇ×１の列ベクトルとして計算する。また、例えば、第３データ変換Ｆγｉは、Ｋｉ’、ｇｉ、ｗの複数ビットが示す数をベクトルの１つの要素として計算してもよい。
【数３９】
2015019333.tif 000041
【０１８７】
また、例えば、第３データ変換Ｆγｉは、下記の式（７７）に示されるように、クライアント鍵Ｋｉを関数Ｆ１２により変換した系列と、マスター鍵ｇｉを関数Ｆ１３により変換した系列との、演算結果を出力してもよい。Ｆ１３は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。
【数４０】
2015019333.tif 000042
【０１８８】
なお、第３データ変換Ｆγｉは、このような関数に限らず、変換前クライアント鍵Ｋｉ’を、マスター鍵ｇｉまたは管理情報ｗ等によってクライアント鍵Ｋｉに変換する関数であればよい。
【０１８９】
クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）が、関数Ｈ（ｉ）の出力値がＫＳのビット位置を示すと考え、ＫＳの該当位置のビットを連結させてクライアント鍵を生成する場合を考える。ここで、関数Ｈはハッシュ関数または疑似ランダム関数等である。この場合、マスター関数Ｇｆ（ｇｉ，ｉ，ｗ）は、関数Ｈ（ｉ○ｇｉ○ｗ）を出力する。
【０１９０】
更新部６０は、図１９に示すように、入力部８０と、乱数発生部８１と、第１更新情報生成部８４と、第２更新情報生成部８５と、出力部８３とを有する。
【０１９１】
第１更新情報生成部８４は、マスター鍵生成部９５を含む。マスター鍵生成部９５は、乱数発生部８１により発生された乱数に基づき、マスター鍵ｇｉを生成する。
【０１９２】
第２更新情報生成部８５は、関数生成部９６と、クライアント鍵生成部９４とを含む。関数生成部９６は、マスター関数Ｇｆ（ｇｉ，ｉ）を保持し、入力部８０が入力したインデックスｉおよびマスター鍵生成部９５により生成されたマスター鍵ｇｉに基づき、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に含まれる、入力部８０が入力したインデックスｉに対応する関数部分を生成する。そして、関数生成部９６は、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）における入力部８０が入力したインデックスｉに対応する部分を新たな関数に置き換えて、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を生成する。
【０１９３】
クライアント鍵生成部９４は、入力部８０が入力したインデックスｉ、関数生成部９６が生成した新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たなクライアント鍵Ｋｉを生成する。
【０１９４】
出力部８３は、第１更新情報生成部８４が生成したマスター鍵ｇｉおよび入力部８０が入力したインデックスｉをサーバ鍵更新情報ｓｒｉとしてサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、第２更新情報生成部８５が生成した新たなクライアント鍵Ｋｉをクライアント鍵更新情報ｃｒｉとして出力する。
【０１９５】
なお、第３例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、マスター関数Ｇｆ（ｇｉ，ｉ）は、マスター鍵ｇｉおよびインデックスｉから、指定されたインデックスｉに対応する変換関数Ｆδｉを生成してもよい。この場合、関数生成部９６は、インデックスｉおよびマスター鍵ｇｉに基づき、新たな変換関数Ｆδｉを生成する。また、この場合、クライアント鍵生成部９４は、入力部８０が入力したインデックスｉ、関数生成部９６が生成した新たな変換関数Ｆδｉ、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たな暗号化鍵ＥＫｉを生成する。そして、出力部８３は、新たな暗号化鍵ＥＫｉをクライアント鍵更新情報ｃｒｉとして出力する。また、出力部８３は、クライアント鍵Ｋｉおよび変換関数Ｆδｉをクライアント鍵更新情報ｃｒｉとして出力してもよい。
【０１９６】
また、第３例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、関数生成部９６は、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）と既存の変換関数Ｆδｉとを合成した合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）、または、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）と新たな変換関数Ｆδｉとを合成した合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を生成してもよい。出力部８３は、この合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）をサーバ鍵更新情報ｓｒｉとしてサーバ４０に送信してもよい。また、この場合、クライアント鍵生成部９４は、入力部８０が入力したインデックスｉ、合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たな暗号化鍵ＥＫｉを生成する。そして、この場合、出力部８３は、新たな暗号化鍵ＥＫｉをクライアント鍵更新情報ｃｒｉとして出力する。
【０１９７】
図２０は、第３例に係る更新部６０の処理フローを示す図である。まず、ステップＳ１３１において、更新部６０の入力部８０は、更新対象のクライアント鍵Ｋｉを指定するためのインデックスｉの集合を入力する。
【０１９８】
続いて、ステップＳ１３２において、第１更新情報生成部８４は、乱数に基づきマスター鍵ｇｉを生成する。続いて、ステップＳ１３３において、第２更新情報生成部８５は、マスター鍵ｇｉに基づき、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を生成する。
【０１９９】
続いて、ステップＳ１３４において、第２更新情報生成部８５は、入力部８０が入力したインデックスｉ、既存のサーバ鍵ＫＳおよび新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に基づき、新たなクライアント鍵Ｋｉを生成する。
【０２００】
そして、ステップＳ１３５において、出力部８３は、マスター鍵ｇｉおよびインデックスｉをサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、新たなクライアント鍵Ｋｉを出力する。
【０２０１】
図２１は、第３例に係るクライアント端末３０およびサーバ４０の構成の一部を更新部６０とともに示す図である。第３例において、更新対象のクライアント端末３０のクライアント内更新部６７は、更新部６０からクライアント鍵Ｋｉを取得する。そして、クライアント内更新部６７は、クライアント内保持部６１に保持されているクライアント鍵Ｋｉを、取得した新たなクライアント鍵Ｋｉに置き換える。これにより、クライアント端末３０は、暗号化時または復号時において、クライアント内保持部６１に保持されている新たなクライアント鍵Ｋｉを用いてサーバ４０との間で暗号通信をすることができる。
【０２０２】
なお、第３例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、クライアント内変換部６２は、クライアント内保持部６１に保持されている新たなクライアント鍵Ｋｉと、既存の変換関数Ｆδｉとに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、クライアント端末３０は、新たな暗号化鍵ＥＫｉを用いてサーバ４０との間で暗号通信をすることができる。
【０２０３】
また、第３例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、クライアント内更新部６７は、更新部６０から、更新後の新たなクライアント鍵Ｋｉに代えて新たな暗号化鍵ＥＫｉを取得してもよい。この場合、クライアント内更新部６７は、クライアント内保持部６１に保持されている暗号化鍵ＥＫｉを、取得した新たな暗号化鍵ＥＫｉに置き換える。
【０２０４】
第３例において、サーバ４０のサーバ内更新部７８は、更新部６０からインデックスｉおよびマスター鍵ｇｉを取得する。サーバ内更新部７８は、取得したマスター鍵ｇｉおよびインデックスｉを、予め保持しているマスター関数Ｇｆ（ｇｉ，ｉ）に入力して、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に含まれる、入力部８０が入力したインデックスｉに対応する関数部分を生成する。この関数部分は、更新部６０が更新する関数部分に対応する。サーバ内更新部７８は、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）における入力部８０が入力したインデックスｉに対応する部分を新たな関数に置き換えて、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を生成する。そして、サーバ内更新部７８は、サーバ内保持部７１に保持されている既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に置き換える。
【０２０５】
暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たなクライアント鍵Ｋｉを生成する。これにより、サーバ４０は、新たなクライアント鍵Ｋｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２０６】
なお、第３例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合であって、且つ、マスター関数Ｇｆ（ｇｉ，ｉ）が変換関数Ｆδｉを生成するための関数である場合には、サーバ内更新部７８は、マスター鍵ｇｉに基づき、新たな変換関数Ｆδｉを生成する。この場合、サーバ内変換部７４は、既存のクライアント鍵Ｋｉと新たな変換関数Ｆδｉとに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、サーバ４０は、新たな暗号化鍵ＥＫｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２０７】
また、第３例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ内更新部７８は、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）と既存の変換関数Ｆδｉとを合成した新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）、または、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）と新たな変換関数Ｆδｉとを合成した新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を生成してもよい。また、サーバ内更新部７８は、合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を生成装置２０から取得してもよい。また、この場合、サーバ内更新部７８は、サーバ内保持部７１に保持されている合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を、新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）に置き換える。そして、暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、サーバ４０は、新たな暗号化鍵ＥＫｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２０８】
第３例に係る更新部６０によれば、マスター鍵ｇｉを用いてクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を更新することにより、クライアント鍵Ｋｉまたは暗号化鍵ＥＫｉを更新することができる。
【０２０９】
図２２は、第４例に係る更新部６０の構成をクライアント端末３０およびサーバ４０とともに示す図である。なお、第４例を説明するに当たり、第３例と略同一の構成および機能を有する部材には同一の符号を付けて、相違点を除き説明を省略する。
【０２１０】
第４例においては、更新部６０は、更新対象のクライアント鍵Ｋｉを更新する。これとともに、更新部６０は、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を生成して、サーバ４０が保持するクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を更新する。
【０２１１】
更新部６０は、図２２に示すように、入力部８０と、乱数発生部８１と、第１更新情報生成部８４と、第２更新情報生成部８５と、出力部８３とを有する。
【０２１２】
第１更新情報生成部８４は、マスター鍵生成部９５と、関数生成部９６とを含む。第２更新情報生成部８５は、クライアント鍵生成部９４を含む。
【０２１３】
出力部８３は、第１更新情報生成部８４が生成した新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）をサーバ鍵更新情報ｓｒｉとしてサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、第２更新情報生成部８５が生成した新たなクライアント鍵Ｋｉをクライアント鍵更新情報ｃｒｉとして出力する。
【０２１４】
なお、第４例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、マスター関数Ｇｆ（ｇｉ，ｉ）は、マスター鍵ｇｉおよびインデックスｉから、指定されたインデックスｉに対応する変換関数Ｆδｉを生成してもよい。この場合、関数生成部９６は、インデックスｉおよびマスター鍵ｇｉに基づき、新たな変換関数Ｆδｉを生成する。そして、出力部８３は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に代えて、新たな変換関数Ｆδｉをサーバ鍵更新情報ｓｒｉとしてサーバ４０に出力する。
【０２１５】
図２３は、第４例に係る更新部６０の処理フローを示す図である。まず、ステップＳ１４１において、更新部６０の入力部８０は、更新対象のクライアント鍵Ｋｉを指定するためのインデックスｉの集合を入力する。
【０２１６】
続いて、ステップＳ１４２において、第１更新情報生成部８４は、乱数に基づきマスター鍵ｇｉを生成する。続いて、ステップＳ１４３において、第１更新情報生成部８４は、マスター鍵ｇｉに基づき、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を生成する。
【０２１７】
続いて、ステップＳ１４４において、第２更新情報生成部８５は、入力部８０が入力したインデックスｉ、既存のサーバ鍵ＫＳおよび新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に基づき、新たなクライアント鍵Ｋｉを生成する。
【０２１８】
そして、ステップＳ１４５において、出力部８３は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）をサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、新たなクライアント鍵Ｋｉを出力する。
【０２１９】
図２４は、第４例に係るクライアント端末３０およびサーバ４０の構成の一部を更新部６０とともに示す図である。
【０２２０】
第４例において、サーバ４０のサーバ内更新部７８は、更新部６０から新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を取得する。サーバ内更新部７８は、サーバ内保持部７１に保持されている既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を、取得した新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に置き換える。
【０２２１】
暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たなクライアント鍵Ｋｉを生成する。これにより、サーバ４０は、新たなクライアント鍵Ｋｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２２２】
なお、第４例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合であって、且つ、マスター関数Ｇｆ（ｇｉ，ｉ）が変換関数Ｆδｉを生成するための関数である場合には、サーバ内更新部７８は、更新部６０から、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）に代えて新たな変換関数Ｆδｉを取得する。そして、サーバ内更新部７８は、サーバ内保持部７１に保持されている既存の変換関数Ｆδｉを、取得した新たな変換関数Ｆδｉに置き換える。この場合、暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、クライアント鍵Ｋｉを生成する。サーバ内変換部７４は、生成されたクライアント鍵Ｋｉと、サーバ内保持部７１に保持されている新たな変換関数Ｆδｉとに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、サーバ４０は、新たな暗号化鍵ＥＫｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２２３】
また、第４例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、サーバ内更新部７８は、新たなクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）と既存の変換関数Ｆδｉとを合成した新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）、または、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）と新たな変換関数Ｆδｉとを合成した新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を、更新部６０から取得してもよい。この場合、サーバ内更新部７８は、サーバ内保持部７１に保持されている合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）を、取得した新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）に置き換える。そして、暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、サーバ４０は、新たな暗号化鍵ＥＫｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２２４】
第４例に係る更新部６０によれば、サーバ４０に保持されているクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ）を更新することにより、クライアント鍵Ｋｉまたは暗号化鍵ＥＫｉを更新することができる。
【０２２５】
図２５は、第５例に係る更新部６０の構成をクライアント端末３０およびサーバ４０とともに示す図である。なお、第５例を説明するに当たり、第４例と略同一の構成および機能を有する部材には同一の符号を付けて、相違点を除き説明を省略する。
【０２２６】
第５例において、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）は、インデックスｉ、サーバ鍵ＫＳ、および、マスター鍵ｇｉに基づき、インデックスｉにより指定されたクライアント鍵Ｋｉを生成する。すなわち、第５例に係るクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）は、引数としてマスター鍵ｇｉが追加されている。
【０２２７】
第５例においては、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）は、図１２に示す第２データ変換Ｆβおよび第３データ変換Ｆγにより構成される。このとき、第３データ変換は、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉを引数にとるＦγｉ（Ｋｉ’，ｇｉ）である。また、第５例においては、クライアント鍵関数をＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ，ｗ）とし、インデックスｉ、サーバ鍵ＫＳ、マスター鍵ｇｉおよび管理情報ｗに基づき、インデックスｉにより指定されたクライアント鍵Ｋｉを生成してもよい。このとき、第３データ変換をＦγｉ（Ｋｉ’,ｇｉ，ｗ）とし、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉおよび管理情報ｗに基づき、変換後クライアント鍵Ｋｉを生成してもよい。
【０２２８】
例えば、第３データ変換Ｆγは、下記の式（８０）〜式（８２）に示されるように、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉとの算術和、算術積または排他的論理和を出力する関数であってもよい。なお、式（８２）は、Ｋｉ’とｇｉとのビット長が等しい場合の式である。
【数４１】
2015019333.tif 000043
【０２２９】
また、例えば、第３データ変換Ｆγｉは、下記の式（８３）に示されるように、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉと管理情報ｗとの演算結果を出力する関数であってもよい。
【数４２】
2015019333.tif 000044
【０２３０】
また、例えば、例えば、第３データ変換Ｆγｉは、下記の式（８４）に示されるように、変換前クライアント鍵Ｋｉ’とマスター鍵ｇｉと管理情報ｗとの和、積または排他的論理和を関数Ｆ１２により変換した系列を出力する関数であってもよい。Ｆ１２は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。また、Ｆ１２は、ｌｉビットの入力に対して、ｌｉビットを出力する。
【数４３】
2015019333.tif 000045
【０２３１】
また、例えば、第３データ変換Ｆγｉは、下記の式（８５）に示されるように、Ｋｉ’を行ベクトルと考え右から正則行列ｇｉをかけてもよい。例えば、第３データ変換Ｆγｉは、Ｋｉの１ビットをベクトルの１要素とし、１×ｌｉの行ベクトルとし、ｇｉをｌｉ×ｌｉの正則行列として計算する。また、例えば、第３データ変換Ｆγｉは、Ｋｉ’の複数ビットが示す数をベクトルの１つの要素として計算してもよい。
【数４４】
2015019333.tif 000046
【０２３２】
また、例えば、第３データ変換Ｆγｉは、下記の式（８６）に示されるように、Ｋｉ’を列ベクトルと考え、行列ｗと列ベクトルｇｉの積を加えてもよい。例えば、第３データ変換Ｆγｉは、Ｋｉ’の１ビットをベクトルの１要素とし、ｌｉ×１の列ベクトルとし、ｗをｌｉ×ｌｇ行列とし，ｇｉをｌｇ×１の列ベクトルとして計算する。また、例えば、第３データ変換Ｆγｉは、Ｋｉ’，ｇｉ，ｗの複数ビットが示す数をベクトルの１つの要素として計算してもよい。
【数４５】
2015019333.tif 000047
【０２３３】
また、例えば、第３データ変換Ｆγｉは、下記の式（８７）に示されるように、クライアント鍵Ｋｉを関数Ｆ１２により変換した系列と、マスター鍵ｇｉを関数Ｆ１３により変換した系列との、演算結果を出力してもよい。Ｆ１３は、一例として、一対一関数、擬似ランダム関数またはハッシュ関数等である。
【数４６】
2015019333.tif 000048
【０２３４】
なお、第３データ変換Ｆγｉは、このような関数に限らず、変換前クライアント鍵Ｋｉ’を、マスター鍵ｇｉまたは管理情報ｗ等によってクライアント鍵Ｋｉに変換する関数であればよい。
【０２３５】
クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ，ｇｉ）が、関数Ｈ（ｉ）の出力値がＫＳのビット位置を示すと考え、ＫＳの該当位置のビットを連結させてクライアント鍵を生成する場合を考える。ここで、関数Ｈはハッシュ関数または疑似ランダム関数等である。クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ，ｇｉ）を構成する関数Ｈ（ｉ○ｇｉ）は、インデックスｉおよびマスター鍵ｇｉに基づいて、サーバ鍵ＫＳのビット位置を出力する。また、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｉ，ｇｉ,ｗ）を構成する関数Ｈ（ｉ○ｇｉ○ｗ）は、インデックスｉ、マスター鍵ｇｉおよび管理情報ｗに基づいて、サーバ鍵ＫＳのビット位置を出力してもよい。
【０２３６】
そして、第５例において、更新部６０は、更新対象のクライアント鍵Ｋｉを更新するとともに、マスター鍵ｇｉを更新することにより更新対象のクライアント鍵Ｋｉを更新する。
【０２３７】
更新部６０は、図２５に示すように、入力部８０と、乱数発生部８１と、第１更新情報生成部８４と、第２更新情報生成部８５と、出力部８３とを有する。
【０２３８】
第１更新情報生成部８４は、マスター鍵生成部９５を含む。マスター鍵生成部９５は、乱数発生部８１により発生された乱数に基づき、新たなマスター鍵ｇｉを生成する。
【０２３９】
第２更新情報生成部８５は、クライアント鍵生成部９４を含む。クライアント鍵生成部９４は、入力部８０が入力したインデックスｉ、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）、新たなマスター鍵ｇｉおよび既存のサーバ鍵ＫＳに基づき、新たなクライアント鍵Ｋｉを生成する。
【０２４０】
出力部８３は、第１更新情報生成部８４が生成した新たなマスター鍵ｇｉをサーバ鍵更新情報ｓｒｉとしてサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、第２更新情報生成部８５が生成した新たなクライアント鍵Ｋｉをクライアント鍵更新情報ｃｒｉとして出力する。
【０２４１】
また、第５例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合には、クライアント鍵生成部９４は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）と変換関数Ｆδｉとを合成した合成関数ＣＥＫＧｅｎ（ＫＳ，ｇｉ，ｉ）を保持していてもよい。この場合、クライアント鍵生成部９４は、入力部８０が入力したインデックスｉ、合成関数ＣＥＫＧｅｎ（ＫＳ，ｇｉ，ｉ）、新たなマスター鍵ｇｉおよび既存のサーバ鍵ＫＳに基づき、新たな暗号化鍵ＥＫｉを生成する。そして、この場合、出力部８３は、新たな暗号化鍵ＥＫｉをクライアント鍵更新情報ｃｒｉとして出力する。
【０２４２】
図２６は、第５例に係る更新部６０の処理フローを示す図である。まず、ステップＳ１５１において、更新部６０の入力部８０は、更新対象のクライアント鍵Ｋｉを指定するためのインデックスｉの集合を入力する。
【０２４３】
続いて、ステップＳ１５２において、第１更新情報生成部８４は、乱数に基づきマスター鍵ｇｉを生成する。続いて、ステップＳ１５３において、第２更新情報生成部８５は、入力部８０が入力したインデックスｉ、既存のサーバ鍵ＫＳ、新たなマスター鍵ｇｉおよび既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）に基づき、新たなクライアント鍵Ｋｉを生成する。
【０２４４】
そして、ステップＳ１５４において、出力部８３は、マスター鍵ｇｉをサーバ４０に出力する。また、出力部８３は、更新対象のクライアント鍵Ｋｉを保持するクライアント端末３０のそれぞれに、新たなクライアント鍵Ｋｉを出力する。
【０２４５】
図２７は、第５例に係るクライアント端末３０およびサーバ４０の構成の一部を更新部６０とともに示す図である。第５例において、サーバ４０のサーバ内更新部７８は、マスター鍵ｇｉを取得する。サーバ内更新部７８は、サーバ内保持部７１に保持されている既存のマスター鍵ｇｉを、取得した新たなマスター鍵ｇｉに置き換える。
【０２４６】
暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、サーバ内保持部７１に保持されている新たなマスター鍵ｇｉ、既存のクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たなクライアント鍵Ｋｉを生成する。これにより、サーバ４０は、新たなクライアント鍵Ｋｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２４７】
なお、第５例において、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、サーバ内保持部７１は、クライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）と変換関数Ｆδｉとを合成した新たな合成関数ＣＥＫＧｅｎ（ＫＳ，ｇｉ，ｉ）を保持していてもよい。この場合、暗号化時または復号時において、サーバ内クライアント鍵生成部７３は、インデックスｉ、新たなマスター鍵ｇｉ、サーバ内保持部７１に保持されている合成関数ＣＥＫＧｅｎ（ＫＳ，ｇｉ，ｉ）および既存のサーバ鍵ＫＳに基づき、新たな暗号化鍵ＥＫｉを生成する。これにより、サーバ４０は、新たな暗号化鍵ＥＫｉを用いてクライアント端末３０と暗号通信をすることができる。
【０２４８】
第５例に係る更新部６０によれば、マスター鍵ｇｉを用いてクライアント鍵関数ＣＫｅｙＧｅｎ（ＫＳ，ｇｉ，ｉ）を更新することにより、クライアント鍵Ｋｉまたは暗号化鍵ＥＫｉを更新することができる。なお、生成装置２０がサーバ鍵更新情報ｓｒｉおよびクライアント鍵更新情報ｃｒｉを送信する通信路は、安全な通信路が望ましいが、そうでない通信路であってもよい。
【０２４９】
以上のように、第１実施形態に係る暗号処理システム１０によれば、複数のクライアント鍵Ｋｉのそれぞれの一部を他のクライアント鍵Ｋｉと相関を持たせた場合であっても、複数のクライアント鍵Ｋｉまたは暗号化鍵ＥＫｉの一部を容易に更新することができる。また、クライアント鍵Ｋｉが暗号化鍵ＥＫｉの生成の種である場合、クライアント鍵更新情報ｃｒｉは、クライアント鍵Ｋｉ、マスター鍵ｇｉまたは変換関数Ｆδｉであるが、これらの何れかが漏えいした場合にも、暗号化鍵ＥＫｉは漏洩せず、安全に鍵を更新することができる。
【０２５０】
（第２実施形態）
図２８は、第２実施形態に係る暗号処理システム１１０の構成を示す図である。暗号処理システム１１０は、生成装置１２０と、第１のクライアント端末１３１と、第２のクライアント端末１３２と、サーバ１４０と、再暗号化装置１５０とを備える。
【０２５１】
生成装置１２０は、第１のクライアント鍵Ｋ１、第２のクライアント鍵Ｋ２、および、マスター鍵Ｋｒを生成する。生成装置１２０は、一例として、乱数発生器により発生された乱数に基づき、クライアント鍵Ｋ１、クライアント鍵Ｋ２およびマスター鍵Ｋｒを生成する。
【０２５２】
生成装置１２０は、第１のクライアント鍵Ｋ１を第１のクライアント端末１３１に出力する。生成装置１２０は、第２のクライアント鍵Ｋ２を第２のクライアント端末１３２に出力する。さらに、生成装置１２０は、第１のクライアント鍵Ｋ１、第２のクライアント鍵Ｋ２およびマスター鍵Ｋｒをサーバ１４０に出力する。なお、生成装置１２０は、第１のクライアント鍵Ｋ１および第２のクライアント鍵Ｋ２に代えて、第１実施形態の生成装置２０と同様に、第１のクライアント鍵Ｋ１および第２のクライアント鍵Ｋ２を生成するためのサーバ鍵ＫＳおよびクライアント鍵規則をサーバ１４０に出力してもよい。
【０２５３】
サーバ１４０は、クライアント鍵Ｋ１、クライアント鍵Ｋ２およびマスター鍵Ｋｒを生成装置１２０から取得する。サーバ１４０は、第１のクライアント鍵Ｋ１をマスター鍵Ｋｒにより暗号化した第１再暗号化鍵Ｋ１（ｒ）を生成する。また、サーバ１４０は、第２のクライアント鍵Ｋ２をマスター鍵Ｋｒにより暗号化した第２再暗号化鍵Ｋ２（ｒ）を生成する。サーバ１４０は、再暗号化装置１５０からのリクエストに応じて、第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）を再暗号化装置１５０に出力する。なお、生成装置１２０およびサーバ１４０は、一体の構成であってもよい。
【０２５４】
第１のクライアント端末１３１は、生成装置１２０から第１のクライアント鍵Ｋ１を取得して保持する。第１のクライアント端末１３１は、平文ｍを第１のクライアント鍵Ｋ１で暗号化した第１暗号文Ｃ１（＝Ｅｎｃ（ｋ１，ｍ））を生成する。第１のクライアント端末１３１は、第１暗号文Ｃ１を再暗号化装置１５０に出力する。
【０２５５】
再暗号化装置１５０は、第１のクライアント端末１３１から第１暗号文Ｃ１を取得する。再暗号化装置１５０は、第１暗号文Ｃ１を取得したことに応じてサーバ１４０にリクエストを出力して、第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）を取得する。
【０２５６】
再暗号化装置１５０は、第１暗号文Ｃ１、第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）に基づき、平文ｍを第２のクライアント鍵Ｋ２で暗号化した第２暗号文Ｃ２（＝Ｅｎｃ（ｋ２，ｍ））を生成する。そして、再暗号化装置１５０は、第２暗号文Ｃ２を第２のクライアント端末１３２に出力する。
【０２５７】
第２のクライアント端末１３２は、生成装置１２０から第２のクライアント鍵Ｋ２を取得して保持する。第２のクライアント端末１３２は、再暗号化装置１５０から第２暗号文Ｃ２を取得する。第２のクライアント端末１３２は、第２のクライアント鍵Ｋ２により第２暗号文Ｃ２を復号して、平文ｍを生成する。
【０２５８】
以下、暗号化処理として、排他的論理和演算を用いる場合の再暗号化装置１５０の構成を説明する。この場合、平文ｍ、第１のクライアント鍵Ｋ１、第２のクライアント鍵Ｋ２、マスター鍵Ｋｒ、第１再暗号化鍵Ｋ１（ｒ）、第２再暗号化鍵Ｋ２（ｒ）、合成鍵Ｋ１，２（ｒ）、第１暗号文Ｃ１および第２暗号文Ｃ２は、全て同一ビット長の２進数データである。
【０２５９】
図２９は、再暗号化装置１５０の構成を示す図である。再暗号化装置１５０は、受信部１５１と、取得部１５２と、合成鍵生成部１５３と、再暗号化部１５４と、送信部１５５とを有する。
【０２６０】
受信部１５１は、第１のクライアント端末１３１から、平文ｍと第１のクライアント鍵Ｋ１とを排他的論理和演算した第１暗号文Ｃ１を受信する。取得部１５２は、第１のクライアント鍵Ｋ１とマスター鍵Ｋｒとを排他的論理和演算した第１再暗号化鍵Ｋ１（ｒ）をサーバ１４０から取得する。また、取得部１５２は、第２のクライアント鍵Ｋ２とマスター鍵Ｋｒとを排他的論理和演算した第２再暗号化鍵Ｋ２（ｒ）を取得する。
【０２６１】
合成鍵生成部１５３は、取得部１５２が取得した第１再暗号化鍵Ｋ１（ｒ）と第２再暗号化鍵Ｋ２（ｒ）とを排他的論理和演算して、合成鍵Ｋ１，２（ｒ）を生成する。再暗号化部１５４は、受信部１５１が受信した第１暗号文Ｃ１と、合成鍵生成部１５３が生成した合成鍵Ｋ１，２（ｒ）とを排他的論理和演算して、第２暗号文Ｃ２を生成する。送信部１５５は、再暗号化部１５４が生成した第２暗号文Ｃ２を第２のクライアント端末１３２に送信する。
【０２６２】
図３０は、第２実施形態に係る暗号処理システム１１０の処理フローを示す図である。第１のクライアント端末１３１から第２のクライアント端末１３２へ暗号通信により平文ｍを転送する場合、以下のステップＳ２０１からステップＳ２１０の処理が実行される。
【０２６３】
まず、ステップＳ２０１において、第１のクライアント端末１３１は、下記の式（１０１）に示すように、平文ｍと第１のクライアント鍵Ｋ１とを排他的論理和演算した第１暗号文Ｃ１を生成する。
【数４７】
2015019333.tif 000049
【０２６４】
続いて、ステップＳ２０２において、第１のクライアント端末１３１は、第１暗号文Ｃ１を再暗号化装置１５０に出力する。この場合に、第１のクライアント端末１３１は、送信先（第２のクライアント端末１３２）を指定する情報も再暗号化装置１５０に出力する。
【０２６５】
続いて、ステップＳ２０３において、再暗号化装置１５０は、第１のクライアント端末１３１から第１暗号文Ｃ１を取得したことに応じて、サーバ１４０にリクエストを出力する。この場合に、再暗号化装置１５０は、送信元（第１のクライアント端末１３１）および送信先（第２のクライアント端末１３２）を指定する情報もサーバ１４０に出力する。
【０２６６】
続いて、ステップＳ２０４において、サーバ１４０は、送信元の第１のクライアント端末１３１が保持する第１のクライアント鍵Ｋ１、送信先の第２のクライアント端末１３２が保持する第２のクライアント鍵Ｋ２、および、マスター鍵Ｋｒを取得する。サーバ１４０は、一例として、第１のクライアント鍵Ｋ１、第２のクライアント鍵Ｋ２およびマスター鍵Ｋｒを、生成装置１２０から予め取得して保持している。また、サーバ１４０は、一例として、再暗号化装置１５０からリクエストを受けた後に、生成装置１２０から取得してもよい。また、サーバ１４０は、生成装置１２０からマスター鍵Ｋｒを取得するのではなく、内部に備える乱数発生器により発生された乱数をマスター鍵Ｋｒとしてもよい。
【０２６７】
続いて、ステップＳ２０５において、サーバ１４０は、下記の式（１０２）に示すように、第１のクライアント鍵Ｋ１とマスター鍵Ｋｒとを排他的論理和演算した第１再暗号化鍵Ｋ１（ｒ）を生成する。また、サーバ１４０は、下記の式（１０３）に示すように、第２のクライアント鍵Ｋ２とマスター鍵Ｋｒとを排他的論理和演算した第２再暗号化鍵Ｋ２（ｒ）を生成する。
【数４８】
2015019333.tif 000050
【０２６８】
続いて、ステップＳ２０６において、サーバ１４０は、第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）を再暗号化装置１５０に返信する。
【０２６９】
続いて、ステップＳ２０７において、再暗号化装置１５０は、第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）を取得したことに応じて、下記の式（１０４）に示すように、第１再暗号化鍵Ｋ１（ｒ）と第２再暗号化鍵Ｋ２（ｒ）とを排他的論理和演算して、合成鍵Ｋ１，２（ｒ）を生成する。
【数４９】
2015019333.tif 000051
【０２７０】
続いて、ステップＳ２０８において、再暗号化装置１５０は、下記の式（１０５）に示すように、第１暗号文Ｃ１と合成鍵Ｋ１，２（ｒ）とを排他的論理和演算して、第２暗号文Ｃ２を生成する。
【数５０】
2015019333.tif 000052
【０２７１】
続いて、ステップＳ２０９において、再暗号化装置１５０は、第２暗号文Ｃ２を第２のクライアント端末１３２に送信する。
【０２７２】
ここで、第２暗号文Ｃ２と第１のクライアント鍵Ｋ１とを排他的論理和演算した式は、下記の式（１０６）のように表される。
【数５１】
2015019333.tif 000053
【０２７３】
また、第１暗号文Ｃ１は、式（１０１）に示したように、第１のクライアント鍵Ｋ１と平文ｍとを排他的論理和した値である。また、合成鍵Ｋ１，２（ｒ）は、下記の式（１０７）に示すように、第１のクライアント鍵Ｋ１と第２のクライアント鍵Ｋ２とを排他的論理和した値である。
【数５２】
2015019333.tif 000054
【０２７４】
従って、式（１０１）および式（１０７）を式（１０６）に代入すると、右辺には平文ｍだけが残る。
【０２７５】
そこで、ステップＳ２１０において、第２のクライアント端末１３２は、第２暗号文Ｃ２を受信したことに応じて、下記式（１０８）に示すように、第２暗号文Ｃ２と第２のクライアント鍵Ｋ２とを排他的論理和演算して平文ｍを生成する。これにより、第２のクライアント端末１３２は、第１のクライアント端末１３１から送信された平文ｍを取得することができる。
【数５３】
2015019333.tif 000055
【０２７６】
なお、再暗号化装置１５０は、予め、第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）の一方または全部をサーバ１４０から取得していてもよい。この場合、サーバ１４０は、第１のクライアント鍵Ｋ１および第２のクライアント鍵Ｋ２の更新時に、更新した第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）を再暗号化装置１５０に送信する。再暗号化装置１５０は、更新した第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）を、元の第１再暗号化鍵Ｋ１（ｒ）および第２再暗号化鍵Ｋ２（ｒ）に追加してもよいし、上書きしてもよい。
【０２７７】
以上のように、第２実施形態に係る再暗号化装置１５０は、第１のクライアント鍵Ｋ１および第２のクライアント鍵Ｋ２を知らずに、平文ｍを第１のクライアント鍵Ｋ１により暗号化した第１暗号文Ｃ１を、平文ｍを第２のクライアント鍵Ｋ２により暗号化した第２暗号文Ｃ２に変換することができる。
【０２７８】
図３１は、生成装置２０、クライアント端末３０、サーバ４０および再暗号化装置１５０のハードウェア構成の一例を示す図である。生成装置２０、クライアント端末３０、サーバ４０および再暗号化装置１５０は、ＣＰＵ（Central  Processing  Unit）２０１などの制御装置と、ＲＯＭ（Read  Only  Memory）２０２やＲＡＭ（Random  Access  Memory）２０３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ２０４と、各部を接続するバスを備えている。
【０２７９】
実施形態に係る生成装置２０、クライアント端末３０、サーバ４０および再暗号化装置１５０で実行されるプログラムは、ＲＯＭ２０２等に予め組み込まれて提供される。また、このプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０２８０】
さらに、このプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、このプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０２８１】
実施形態に係る生成装置２０で実行されるプログラムは、コンピュータを上述した生成装置２０の各部（入力部５１、乱数発生部５２、サーバ鍵生成部５３、クライアント鍵生成部５４、出力部５５）として機能させうる。なお、入力部５１、乱数発生部５２、サーバ鍵生成部５３、クライアント鍵生成部５４、出力部５５は、一部または全部がハードウェアにより構成されていてもよい。
【０２８２】
実施形態に係るクライアント端末３０で実行されるプログラムは、コンピュータを上述したクライアント端末３０の各部（クライアント内保持部６１、クライアント内変換部６２、クライアント内暗号化部６３、クライアント内送信部６４、クライアント内受信部６５、クライアント内復号部６６およびクライアント内更新部６７）として機能させうる。なお、クライアント内保持部６１、クライアント内変換部６２、クライアント内暗号化部６３、クライアント内送信部６４、クライアント内受信部６５、クライアント内復号部６６およびクライアント内更新部６７は、一部または全部がハードウェアにより構成されていてもよい。
【０２８３】
実施形態に係るサーバ４０で実行されるプログラムは、コンピュータを上述したサーバ４０の各部（サーバ内保持部７１、サーバ内受信部７２、サーバ内クライアント鍵生成部７３、サーバ内変換部７４、サーバ内復号部７５、サーバ内暗号化部７６、サーバ内送信部７７およびサーバ内更新部７８）として機能させうる。なお、サーバ内保持部７１、サーバ内受信部７２、サーバ内クライアント鍵生成部７３、サーバ内変換部７４、サーバ内復号部７５、サーバ内暗号化部７６、サーバ内送信部７７およびサーバ内更新部７８は、一部または全部がハードウェアにより構成されていてもよい。
【０２８４】
実施形態に係る再暗号化装置１５０で実行されるプログラムは、コンピュータを上述した再暗号化装置１５０の各部（受信部１５１、取得部１５２、合成鍵生成部１５３、再暗号化部１５４および送信部１５５）として機能させうる。なお、受信部１５１、取得部１５２、合成鍵生成部１５３、再暗号化部１５４および送信部１５５は、一部または全部がハードウェアにより構成されていてもよい。
【０２８５】
そして、このコンピュータは、ＣＰＵ２０１がコンピュータ読取可能な記憶媒体から上述した各プログラムを主記憶装置上に読み出して実行することができる。
【０２８６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２８７】
１０  暗号処理システム
２０  生成装置
３０  クライアント端末
４０  サーバ
５１  入力部
５２  乱数発生部
５３  サーバ鍵生成部
５４  クライアント鍵生成部
５５  出力部
６０  更新部
６１  クライアント内保持部
６２  クライアント内変換部
６３  クライアント内暗号化部
６４  クライアント内送信部
６５  クライアント内受信部
６６  クライアント内復号部
６７  クライアント内更新部
７１  サーバ内保持部
７２  サーバ内受信部
７３  サーバ内クライアント鍵生成部
７４  サーバ内変換部
７５  サーバ内復号部
７６  サーバ内暗号化部
７７  サーバ内送信部
７８  サーバ内更新部
８０  入力部
８１  乱数発生部
８２  更新情報生成部
８３  出力部
８４  第１更新情報生成部
８５  第２更新情報生成部
９１  位置検出部
９２  値生成部
９３  サーバ鍵生成部
９４  クライアント鍵生成部
９５  マスター鍵生成部
９６  関数生成部
１１０  暗号処理システム
１３１  第１のクライアント端末
１３２  第２のクライアント端末
１４０  サーバ
１５０  再暗号化装置
１５１  受信部
１５２  取得部
１５３  合成鍵生成部
１５４  再暗号化部
１５５  送信部
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  通信Ｉ／Ｆ
【図１】
2015019333.tif 000056
【図２】
2015019333.tif 000057
【図３】
2015019333.tif 000058
【図４】
2015019333.tif 000059
【図５】
2015019333.tif 000060
【図６】
2015019333.tif 000061
【図７】
2015019333.tif 000062
【図８】
2015019333.tif 000063
【図９】
2015019333.tif 000064
【図１０】
2015019333.tif 000065
【図１１】
2015019333.tif 000066
【図１２】
2015019333.tif 000067
【図１３】
2015019333.tif 000068
【図１４】
2015019333.tif 000069
【図１５】
2015019333.tif 000070
【図１６】
2015019333.tif 000071
【図１７】
2015019333.tif 000072
【図１８】
2015019333.tif 000073
【図１９】
2015019333.tif 000074
【図２０】
2015019333.tif 000075
【図２１】
2015019333.tif 000076
【図２２】
2015019333.tif 000077
【図２３】
2015019333.tif 000078
【図２４】
2015019333.tif 000079
【図２５】
2015019333.tif 000080
【図２６】
2015019333.tif 000081
【図２７】
2015019333.tif 000082
【図２８】
2015019333.tif 000083
【図２９】
2015019333.tif 000084
【図３０】
2015019333.tif 000085
【図３１】
2015019333.tif 000086