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