データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置であって、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する固定長データ算出手段と、算出された固定長データと前記データ鍵とを結合する結合手段と、前記算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する暗号化手段と、を備えることを特徴とする鍵暗号化装置。前記一方向性関数が、ハッシュ関数またはMAC関数であることを特徴とする請求項1に記載の鍵暗号化装置。前記暗号化手段が、所定の処理を複数回実行し、前記算出された固定長データと結合されたデータ鍵から前記鍵暗号化データを生成するラウンド関数から構成され、前記ラウンド関数が、入力されたアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項1または2に記載の鍵暗号化装置。前記固定長データ算出手段が、前記データ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段と、を備え、前記ラウンド関数処理手段が、入力された第2のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項1から3のいずれか1項に記載の鍵暗号化装置。データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置であって、前記鍵暗号化データを前記鍵暗号化鍵で復号する復号手段と、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する固定長データ算出手段と、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する検証手段と、を備えることを特徴とする鍵復号装置。前記一方向性関数が、ハッシュ関数またはMAC関数であることを特徴とする請求項5に記載の鍵復号装置。前記復号手段が、所定の処理を複数回実行し、前記固定長データが前記所定の位置に結合されたデータ鍵を前記鍵暗号化データから生成するラウンド関数から構成され、前記ラウンド関数が、入力された第3のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項5または6に記載の鍵復号装置。前記固定長データ算出手段が、前記抽出されたデータ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段と、を備え、前記ラウンド関数処理手段が、入力された第4のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項5から7のいずれか1項に記載の鍵復号装置。固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法であって、前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第1のステップと、前記結合手段が、算出された固定長データと前記データ鍵とを結合する第2のステップと、前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第3のステップと、を含むことを特徴とする鍵暗号化方法。復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法であって、前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第1のステップと、前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第2のステップと、前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第3のステップと、を含むことを特徴とする鍵復号方法。固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法をコンピュータに実行させるプログラムであって、前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第1のステップと、前記結合手段が、算出された固定長データと前記データ鍵とを結合する第2のステップと、前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第3のステップと、をコンピュータに実行させるプログラム。復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法をコンピュータに実行させるプログラムであって、前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第1のステップと、前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第2のステップと、前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第3のステップと、をコンピュータに実行させるプログラム。しかしながら、鍵暗号化アルゴリズムは、鍵自体を暗号化/復号するとともに、復号時に暗号化された鍵の正当性を検証するために、例えば、AESKeyWarpは128ビットの鍵を暗号化/復号する際に、AESによる暗号化/復号を6回も行わなければならず、その他の鍵暗号化アルゴリズムにおいても、128ビットの鍵を暗号化/復号する際には、共通鍵暗号化アルゴリズムで暗号化/復号を複数回行わなければならないという問題点があった。また、鍵暗号化アルゴリズムは、正当な権利なく、コンテンツを入手しようとする攻撃者からの解析対象となりやすい一方、アルゴリズムが解析されてしまうとそのアルゴリズムは2度と使用できないという問題点もあった。そこで、本発明は、上述の課題に鑑みてなされたものであり、鍵の正当性を検証するために行う共通鍵暗号化アルゴリズムによる暗号化/復号の処理回数を減らすことによって、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムを提供することを目的とする。また、アルゴリズムを変化させることができる鍵暗号化アルゴリズムを提供することを目的とする。本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。1本発明は、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置であって、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する固定長データ算出手段例えば、固定長データ算出部11に相当と、算出された固定長データと前記データ鍵とを結合する結合手段例えば、結合部12に相当と、前記算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する暗号化手段例えば、暗号化部13に相当と、を備えることを特徴とする鍵暗号化装置を提案している。この発明によれば、固定長データ検出手算出段は、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、データ鍵から一方向性関数を用いて算出する。結合手段は、算出された固定長データとデータ鍵とを結合する。暗号化手段は、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する。したがって、暗号化の処理を1回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて1回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置を構築することができる。2本発明は、1の鍵暗号化装置について、一方向性関数が、ハッシュ関数またはMAC関数であることを特徴とする鍵暗号化装置を提案している。この発明によれば、一方向性関数が、ハッシュ関数またはMAC関数である。したがって、鍵暗号化鍵により暗号化された鍵の正当性を検証するための固定長データを、ハッシュ関数およびMAC関数により生成することができる。それにより、データ鍵の正当性を検証するために用いる固定長データの生成に、従来の共通鍵暗号化アルゴリズムに代わってハッシュ関数またはMAC関数を用いることにより、データ鍵の正当性を検証するために用いる固定長データのデータ長に制約をなくすことができる。3本発明は、1または2の鍵暗号化装置について、前記暗号化手段が、所定の処理を複数回実行し、前記算出された固定長データと結合されたデータ鍵から前記鍵暗号化データを生成するラウンド関数例えば、図3に相当から構成され、前記ラウンド関数が、入力されたアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵暗号化装置を提案している。この発明によれば、暗号化手段は、所定の処理を複数回実行し、算出された固定長データと結合されたデータ鍵から鍵暗号化データを生成するラウンド関数から構成される。ラウンド関数は、入力されたアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有する。したがって、暗号化手段がアルゴリズムの特定部分を可変にできるラウンド関数から構成されることから、鍵暗号化装置のアルゴリズムを可変型とすることができる。4本発明は、1から3の鍵暗号化装置について、前記固定長データ算出手段が、前記データ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段例えば、図2のラウンド関数処理部100に相当と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段例えば、図2の終端処理部200に相当と、を備え、前記ラウンド関数処理手段が、入力された第2のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵暗号化装置を提案している。この発明によれば、ラウンド関数処理手段は、入力された第2のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有し、データ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、固定長データを生成する。したがって、固定長データ算出手段が、アルゴリズムの特定部分を可変にできるラウンド関数処理手段を備えつつ、終端処理手段を備えることにより、固定長データの一方向性を確保しつつ、鍵暗号化装置のアルゴリズムを可変型とすることができる。5本発明は、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置であって、前記鍵暗号化データを前記鍵暗号化鍵で復号する復号手段例えば、図7の復号部21に相当と、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する固定長データ算出手段例えば、図7の固定長データ算出部22に相当と、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する検証手段例えば、図7の検証部23に相当と、を備えることを特徴とする鍵復号装置を提案している。この発明によれば、復号手段は、データの暗号化に用いたデータ鍵と、データ鍵の所定の位置に結合され、データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを鍵暗号化鍵で復号する。固定長データ算出手段は、復号された鍵暗号化データから、固定長データの位置およびデータ鍵の鍵長に基づいてデータ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する。検証手段は、復号された鍵暗号化データのうち、抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、抽出されたデータ鍵の正当性を検証する。したがって、復号の処理を1回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて1回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵復号装置を構築することができる。6本発明は、5の鍵復号装置について、前記一方向性関数が、ハッシュ関数またはMAC関数であることを特徴とする鍵復号装置を提案している。この発明によれば、一方向性関数が、ハッシュ関数またはMAC関数である。したがって、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するための固定長データを、ハッシュ関数およびMAC関数により生成することができる。それにより、データ鍵の正当性を検証するために用いる固定長データの生成に、従来の共通鍵暗号化アルゴリズムに代わってハッシュ関数またはMAC関数を用いることから、データ鍵の正当性を検証するために用いる固定長データのデータ長に制約をなくすことができる。7本発明は、5または6の鍵復号装置について、前記復号手段が、所定の処理を複数回実行し、前記固定長データが前記所定の位置に結合されたデータ鍵を前記鍵暗号化データから生成するラウンド関数例えば、図3に相当から構成され、前記ラウンド関数が、入力された第3のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵復号装置を提案している。この発明によれば、復号手段が、所定の処理を複数回実行し、固定長データが所定の位置に結合されたデータ鍵を鍵暗号化データから生成するラウンド関数から構成される。ラウンド関数が、入力された第3のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有する。したがって、復号手段がアルゴリズムの特定部分を可変にできるラウンド関数から構成されることから、鍵復号装置のアルゴリズムを可変型とすることができる。8本発明は、5から7の鍵復号装置について、前記固定長データ算出手段が、前記抽出されたデータ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段例えば、図2のラウンド関数処理部100に相当と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段例えば、図2の終端処理部200に相当と、を備え、前記ラウンド関数処理手段が、入力された第4のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵復号装置を提案している。この発明によれば、ラウンド関数処理手段は、入力された第4のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有し、抽出されたデータ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、固定長データを生成する。したがって、固定長データ算出手段が、アルゴリズムの特定部分を可変にできるラウンド関数処理手段を備えつつ、終端処理手段を備えることにより、固定長データの一方向性を確保しつつ、鍵復号装置のアルゴリズムを可変型とすることができる。9本発明は、固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法であって、前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第1のステップ例えば、図6のステップS1に相当と、前記結合手段が、算出された固定長データと前記データ鍵とを結合する第2のステップ例えば、図6のステップS2に相当と、前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第3のステップ例えば、図6のステップS3に相当と、を含むことを特徴とする鍵暗号化方法を提案している。この発明によれば、まず、第1のステップにおいて、固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、データ鍵から一方向性関数を用いて算出する。次に、第2のステップにおいて、結合手段が、算出された固定長データとデータ鍵とを結合する。次に、第3のステップにおいて、暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する。したがって、暗号化の処理を1回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて1回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化方法を提供することができる。10本発明は、復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法であって、前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第1のステップ例えば、図8のステップS11に相当と、前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第2のステップ例えば、図8のステップS12に相当と、前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第3のステップ例えば、図8のステップS13~S15に相当と、を含むことを特徴とする鍵復号方法を提案している。この発明によれば、まず、第1のステップにおいて、復号手段が、データの暗号化に用いたデータ鍵と、データ鍵の所定の位置に結合され、データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを鍵暗号化鍵で復号する。次に、第2のステップにおいて、固定長データ算出手段が、復号された鍵暗号化データから、固定長データの位置およびデータ鍵の鍵長に基づいてデータ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する。次に、第3のステップにおいて、検証手段が、復号された鍵暗号化データのうち、抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、抽出されたデータ鍵の正当性を検証する。したがって、復号の処理を1回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて1回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵復号方法を提供することができる。11本発明は、固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法をコンピュータに実行させるプログラムであって、前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第1のステップ例えば、図6のステップS1に相当と、前記結合手段が、算出された固定長データと前記データ鍵とを結合する第2のステップ例えば、図6のステップS2に相当と、前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第3のステップ例えば、図6のステップS3に相当と、をコンピュータに実行させるプログラムを提案している。この発明によれば、まず、第1のステップにおいて、固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、データ鍵から一方向性関数を用いて算出する。次に、第2のステップにおいて、結合手段が、算出された固定長データとデータ鍵とを結合する。次に、第3のステップにおいて、暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する。したがって、暗号化の処理を一方向性関数を用いて1回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を1回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用したプログラムを提供することができる。12本発明は、復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法をコンピュータに実行させるプログラムであって、前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第1のステップ例えば、図8のステップS11に相当と、前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第2のステップ例えば、図8のステップS12に相当と、前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第3のステップ例えば、図8のステップS13~S15に相当と、をコンピュータに実行させるプログラムを提案している。この発明によれば、まず、第1のステップにおいて、復号手段が、データの暗号化に用いたデータ鍵と、データ鍵の所定の位置に結合され、データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを鍵暗号化鍵で復号する。次に、第2のステップにおいて、固定長データ算出手段が、復号された鍵暗号化データから、固定長データの位置およびデータ鍵の鍵長に基づいてデータ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する。次に、第3のステップにおいて、検証手段が、復号された鍵暗号化データのうち、抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、抽出されたデータ鍵の正当性を検証する。したがって、復号の処理を1回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて1回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用したプログラムを提供することができる。本発明によれば、暗号化対象の鍵の正当性を検証するために行っていた共通鍵暗号化アルゴリズムによる暗号化/復号の処理を一方向性関数で行うことによって、処理回数を減らし、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムを提供することができる。また、一方向性関数処理もしくは暗号化処理の少なくとも1つのアルゴリズムを可変にすることにより、鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムに適用する鍵暗号化アルゴリズムを可変にすることができる。以下、図面を用いて、本発明の実施形態について詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含むさまざまなバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。<鍵暗号化装置の機能構成>図1は、本実施形態に係る鍵暗号化装置10の機能構成を示す図である。鍵暗号化装置10は、データの暗号化に用いた鍵以下、対象鍵とするを暗号化する装置であって、図1に示すように、固定長データ算出部11と、結合部12と、暗号化部13とから構成される。固定長データ算出部11は、一方向性関数を用いて、対象鍵から固定長データを算出する。固定長データ算出部11により算出される固定長データは、後述する暗号化部13で暗号化された対象鍵を後述する鍵復号装置20で復号する時に、復号された対象鍵の正当性を検証するために用いられる。一方向性関数として、例えば、ハッシュ関数やMAC関数を用いることができる。従来、復号された対象鍵の正当性を検証するために用いる固定長データは共通鍵暗号化アルゴリズムを用いて生成されていたため、データ長は共通鍵暗号化アルゴリズムのブロック長に制約をうけていた。しかし、本実施形態では、復号された対象鍵の正当性を検証するために用いる固定長データを一方向性関数を用いて生成するために、固定長データのデータ長は制約をうけず、任意の長さとすることができる。また、従来、固定長データは、共通鍵暗号化アルゴリズムによる暗号化を複数回実行することにより生成されていたが、本実施形態においては、一方向性関数による処理を1回行うことで生成することができる。固定長データ算出部11は、出願人が先に出願した特願2011-239651号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型とすることができる。ここでは、特願2011-239651号に記載の方法を提供した固定長データ算出部11について、図2を用いて簡便に説明する。図2では、512ビットの対象鍵から256ビットの固定長データを生成する場合について例示している。固定長データ算出部11は、アルゴリズムが可変であるラウンド関数処理部100と、一方向性を確保するための排他的論理和演算を行う終端処理部200とから構成される。ラウンド関数処理部100は、巡回シフト部N1~N4と、排他的論理和演算部110a~110fと、スイッチS1~S6と、攪拌部C1~C4とから構成される。巡回シフト部N1~N4は、対象鍵を所定ビット毎に区切った複数のブロックそれぞれに、入力されたアルゴリズム鍵のビット情報に応じて決定したビットの巡回シフトを行う。ここで、アルゴリズム鍵は、ラウンド関数処理部100のアルゴリズムを決定するための鍵であって、一方向性関数がMAC関数の場合にはMAC鍵、ハッシュ関数の場合には任意の固定値である。排他的論理和演算部110a~110fは、2つの入力データに対して、排他的論理和演算を実行する。スイッチS1~S6は、アルゴリズム鍵のビット情報に応じて開閉を決定し、排他的論理和演算部110c~110fによる演算の実行の有無を制御する。攪拌部C1~C4は、排他的論理和演算部110a~110fの演算結果に対して非線形処理を行う。このように、入力されたアルゴリズム鍵に基づいて、巡回シフト部N1~N4において巡回シフトを行うビット数と、排他的論理和演算部110a~110fでの演算の実施の有無を制御するスイッチS1~S6の開閉とを決定することにより、ラウンド関数処理部100のアルゴリズムを可変にし、固定長データ算出部11のアルゴリズムを可変にすることができる。図1に戻って、結合部12は、固定長データ算出部11で算出された固定長データを、対象鍵と結合する。具体的には、対象鍵の所定の位置、例えば、対象鍵の先頭や末尾に、固定長データを結合する。暗号化部13は、結合部12で固定長データを結合した対象鍵を、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで暗号化して、鍵暗号化データを生成する。なお、鍵暗号化鍵は、ユーザ毎に、乱数やユーザの固有な情報を利用して生成される。暗号化部13は、共通鍵暗号化アルゴリズムとしてAES等を用いることができる。また、暗号化部13は、出願人が先に出願した特願2011-30553号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型の共通鍵暗号化アルゴリズムを用いることもできる。ここでは、特願2011-30553号に記載の方法を適用した暗号化部13について、図3を用いて簡便に説明する。図3では、128ビットの対象鍵を暗号化する場合について例示している。暗号化部13は、ラウンド関数から構成され、その詳細は、図3に示すように、巡回シフト部N5、N6と、排他的論理和演算部120a、120bと、演算決定部130a、130bと、非線形関数器L1、L2とから構成されている。巡回シフト部N5、N6は、入力されたデータを所定ビット毎に区切ったブロックを、入力されたアルゴリズム鍵のビット情報に応じて入れ替える。具体的には、128ビットの入力データを4バイトの倍数分、例えば、右へ巡回シフトするものとする。ここで、アルゴリズム鍵は、暗号化部13のアルゴリズムを決定するための鍵である。排他的論理和演算部120a、120bは、2つの入力データに対して、排他的論理和演算を実行する。演算決定部130a、130bは、巡回シフト部N5、N6に接続される排他的論理和演算部120a、120bにおいて演算の実行の有無を鍵ビット情報に応じて決定する。具体的には、鍵ビットに応じてデータに0をかけるか1をかけるかを決定し、排他的論理和演算部120a、120bにおいて演算の実行の有無を制御する。非線形関数器L1、L2は、非線形置換と線形変換とから構成される関数であって、排他的論理和演算部120a、120bの演算結果に対して非線形処理を行う。このように、入力されたアルゴリズム鍵に基づいて、巡回シフト部N5、N6において巡回シフトを行うビット数と、排他的論理和演算部120a、120bでの演算の実施の有無を制御する演算決定部130a、130bの処理とを決定し、ラウンド関数のアルゴリズムを可変にすることによって、暗号化部13の共通鍵暗号化アルゴリズムを可変にすることができる。上述したアルゴリズム可変型の共通鍵暗号化アルゴリズムを用いて、鍵暗号化装置10が128ビット級の安全性を有する場合の暗号化部13における暗号化処理について、図4を用いて説明する。なお、鍵長およびブロック長が256ビットであって、アルゴリズム可変型の共通鍵暗号化アルゴリズムを用いる。鍵暗号化装置10が128ビット級の安全性を有するので、対象鍵は128ビットであるが、暗号化部13の共通鍵暗号化アルゴリズムの鍵長およびブロック長は256ビットであるので、対象鍵は、0でパディングし256ビットとする。そして、256ビットの対象鍵を、暗号化部13に入力する。暗号化部13は、任意長のアルゴリズム鍵により共通鍵暗号化アルゴリズムを決定し、決定された共通鍵暗号化アルゴリズムで鍵暗号化鍵を用いて256ビットの対象鍵を暗号化し、256ビットの暗号文1を生成する。一方、固定長データには、対象鍵から生成された256ビットのデータを用いる。固定長データは、例えば、SHA-256を用いて生成された256ビットのハッシュ値である。固定長データは256ビットであるので、そのまま暗号化部13に入力する。暗号化部13は、対象鍵の場合と同様に、任意長のアルゴリズム鍵により共通鍵暗号化アルゴリズムを決定し、決定した共通鍵暗号化アルゴリズムで鍵暗号化鍵を用いて256ビットの固定長データを暗号化し、256ビットの暗号文2を生成する。次に、アルゴリズム可変型の共通鍵暗号化アルゴリズムを用いて、鍵暗号化装置10が256ビット級の安全性を有する場合の暗号化部13における暗号化処理について、図5を用いて説明する。この場合、対象鍵は256ビットであるので、そのまま暗号化部13に入力する。そして、暗号化部13は、任意長のアルゴリズム鍵により共通鍵暗号化アルゴリズムを決定し、決定した共通鍵暗号化アルゴリズムで鍵暗号化鍵を用いて256ビットの暗号文3を生成する。一方、固定長データには、対象鍵から生成された512ビットのデータを用いる。固定長データは、例えば、SHA-512を用いて生成された512ビットのハッシュ値である。暗号化部13は、固定長データが512ビットであるので、256ビットずつ暗号化を行う。具体的には、暗号化部13は、任意長のアルゴリズム鍵により共通化暗号化アルゴリズムが決定し、決定した共通化暗号化アルゴリズムで鍵暗号化鍵を用いて、固定長データを256ビットずつ暗号化し、256ビットの暗号文4および暗号文5を生成する。<鍵暗号化処理>図6は、本実施形態に係る鍵暗号化装置10における鍵暗号化処理フローを示す図である。鍵暗号化装置10に、対象鍵が入力されると処理が開始する。まず、ステップS1において、固定長データ算出部11は、一方向性関数を用いて、対象鍵から固定長データを算出する。次に、ステップS2において、結合部12は、ステップS1で算出された固定長データを、対象鍵に結合する。次に、ステップS3において、暗号化部13は、ステップS2で固定長データが結合された対象鍵を、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで暗号化して、鍵暗号化データを生成する。<鍵復号装置の機能構成>図7は、本実施形態に係る鍵復号装置20の機能構成を示す図である。鍵復号装置20は、上述した鍵暗号化装置10で暗号化された鍵暗号化データを復号して、対象鍵を取得する。鍵復号装置20は、図7に示すように、復号部21と、固定長データ算出部22と、検証部23とから構成される。復号部21は、鍵暗号化データを、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで復号する。復号された鍵暗号化データは、固定長データと結合された対象鍵である。復号部21は、共通鍵暗号化アルゴリズムとしてAES等を用いることができる。また、復号部21は、出願人が先に出願した特願2011-30553号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型の共通鍵暗号化アルゴリズムを用いることもできる。特願2011-30553号に記載の方法を適用した復号部21は、図3を用いて説明した特願2011-30553号に記載の方法を適用した暗号化部13の巡回シフト部N5、N6の巡回方向を逆方向とし、非線形関数器L1、L2の非線形関数に逆関数を用いることにより実現することができる。固定長データ算出部22は、復号された鍵暗号化データから、対象鍵を抽出する。具体的には、対象鍵の所定の位置に固定長データは結合されているので、固定長データの所定の位置から対象鍵の位置を求め、求められた対象鍵の位置と対象鍵の鍵長とに基づいて、復号された鍵暗号化データから対象鍵自体を抽出する。例えば、対象鍵の先頭に固定長データが結合されている場合には、復号された鍵暗号化データの末尾から対象鍵の鍵長分のデータを復号された鍵暗号化データから取得することで、対象鍵自体を取得することができる。そして、固定長データ算出部22は、抽出した対象鍵から、一方向性関数を用いて固定長データを算出する。一方向性関数には、鍵暗号化装置10の固定長データ算出部11と同様に、ハッシュ関数やMAC関数を用いることができる。鍵復号装置20の固定長データ算出部22も、鍵暗号化装置10の固定長データ算出部11同様に、図3を用いて説明した、出願人が先に出願した特願2011-239651号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型とすることができる。検証部23は、復号された鍵暗号化データのうち対象鍵を除いた残りのデータ、すなわち、復号された鍵暗号化データに含まれる固定長データと、固定長データ算出部22で算出された固定長データとを比較し、復号された鍵暗号化データの対象鍵の正当性を検証する。両者が一致し、対象鍵の正当性が確認できた場合には、対象鍵を出力する。一方、両者が一致せず、対象鍵の正当性が確認できない場合には、エラーを出力する。<鍵復号処理>図8は、本実施形態に係る鍵復号装置20における鍵復号処理フローを示す図である。鍵暗号化データが入力されると処理が開始する。まず、ステップS11において、復号部21は、鍵暗号化データを、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで復号する。次に、ステップS12において、固定長データ算出部22は、ステップS11で復号された鍵暗号化データから対象鍵を抽出し、抽出した対象鍵から一方向性関数を用いて固定長データを算出する。次に、ステップS13において、検証部23は、復号された鍵暗号化データに含まれる固定長データと、ステップS12で算出された固定長データとを比較し、対象鍵の正当性を検証する。両者が一致し、対象鍵の正当性が確認できた場合には、ステップS14に処理をすすめる。一方、両者が一致せず、対象鍵の正当性が確認できない場合には、ステップS15に処理を進める次に、ステップS14において、検証部23は、ステップS12で抽出した対象鍵を出力する。次に、ステップS15において、検証部23は、エラーを出力する。以上説明したように、本実施形態によれば、暗号化対象の鍵の正当性を検証するために行っていた共通鍵暗号化アルゴリズムによる暗号化/復号の処理を一方向性関数で行うことによって、処理回数を減らし、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムを提供することができる。また、一方向性関数の処理もしくは暗号化処理の少なくとも1つのアルゴリズムを可変にすることにより、鍵暗号化アルゴリズムを可変にすることができる。なお、鍵暗号化装置および鍵復号装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを鍵暗号化装置および鍵復号装置に読み込ませ、実行することによって本発明の鍵暗号化装置および鍵復号装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。また、コンピュータシステムは、WWWWorldWideWebシステムを利用している場合であれば、ホームページ提供環境あるいは表示環境も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する伝送媒体は、インターネット等のネットワーク通信網や電話回線等の通信回線通信線のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル差分プログラムであっても良い。以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。