(57)【要約】【課題】鍵の正当性を検証するために行う共通鍵暗号化アルゴリズムによる暗号化／復号の処理回数を減らすことによって、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムを提供すること。【解決手段】鍵暗号化装置１０は、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、データ鍵から一方向性関数を用いて算出する固定長データ算出部１１と、算出された固定長データとデータ鍵とを結合する結合部１２と、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する暗号化部１３と、を備える。【選択図】図１
2013134414.tif 000002
【特許請求の範囲】
【請求項１】
データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置であって、
暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する固定長データ算出手段と、
算出された固定長データと前記データ鍵とを結合する結合手段と、
前記算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する暗号化手段と、
を備えることを特徴とする鍵暗号化装置。
【請求項２】
前記一方向性関数が、ハッシュ関数またはＭＡＣ関数であることを特徴とする請求項１に記載の鍵暗号化装置。
【請求項３】
前記暗号化手段が、所定の処理を複数回実行し、前記算出された固定長データと結合されたデータ鍵から前記鍵暗号化データを生成するラウンド関数から構成され、
前記ラウンド関数が、入力されたアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項１または２に記載の鍵暗号化装置。
【請求項４】
前記固定長データ算出手段が、
前記データ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段と、
前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段と、
を備え、
前記ラウンド関数処理手段が、入力された第２のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項１から３のいずれか１項に記載の鍵暗号化装置。
【請求項５】
データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置であって、
前記鍵暗号化データを前記鍵暗号化鍵で復号する復号手段と、
復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する固定長データ算出手段と、
前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する検証手段と、
を備えることを特徴とする鍵復号装置。
【請求項６】
前記一方向性関数が、ハッシュ関数またはＭＡＣ関数であることを特徴とする請求項５に記載の鍵復号装置。
【請求項７】
前記復号手段が、所定の処理を複数回実行し、前記固定長データが前記所定の位置に結合されたデータ鍵を前記鍵暗号化データから生成するラウンド関数から構成され、
前記ラウンド関数が、入力された第３のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項５または６に記載の鍵復号装置。
【請求項８】
前記固定長データ算出手段が、
前記抽出されたデータ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段と、
前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段と、
を備え、
前記ラウンド関数処理手段が、入力された第４のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする請求項５から７のいずれか１項に記載の鍵復号装置。
【請求項９】
固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法であって、
前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第１のステップと、
前記結合手段が、算出された固定長データと前記データ鍵とを結合する第２のステップと、
前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第３のステップと、
を含むことを特徴とする鍵暗号化方法。
【請求項１０】
復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法であって、
前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第１のステップと、
前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第２のステップと、
前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第３のステップと、
を含むことを特徴とする鍵復号方法。
【請求項１１】
固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法をコンピュータに実行させるプログラムであって、
前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第１のステップと、
前記結合手段が、算出された固定長データと前記データ鍵とを結合する第２のステップと、
前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第３のステップと、
をコンピュータに実行させるプログラム。
【請求項１２】
復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法をコンピュータに実行させるプログラムであって、
前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第１のステップと、
前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第２のステップと、
前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第３のステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵を暗号化する鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムに関する。
【背景技術】
【０００２】
一般に、ネットワークを介して販売・流通されるコンテンツは、コンテンツを暗号化し、さらに、このコンテンツの暗号化に用いた鍵（コンテンツ鍵）をユーザ毎に異なる鍵（ユーザ鍵）で暗号化する手法が用いられている。この手法を用いることにより、コンテンツがネットワーク上の盗聴やコンテンツ権利者の意図しない二次配布等の理由で漏洩するのを防止することができる。また、コンテンツ鍵を用いることにより、サイズの大きなコンテンツをユーザ鍵で個別に暗号化する必要がなくなり、処理を効率的に行うことができる。
【０００３】
このようなデータの暗号化に用いられた鍵を別の鍵で暗号化するための鍵暗号化アルゴリズムは、鍵の暗号化アルゴリズムと復号アルゴリズムとからなり、鍵を秘匿するだけでなく、鍵の復号時に鍵の正当性を検証することもできる。
【０００４】
鍵暗号化アルゴリズムには、例えば、ＮＩＳＴが提案している、ＡＥＳを利用し暗号鍵を暗号化するために設計されたＡＥＳ  Ｋｅｙ  Ｗａｒｐ（例えば、非特許文献１参照。）、ＴＷＫＷ（例えば、非特許文献２参照。）、ＡＫＷ１およびＡＫＷ２（例えば、非特許文献３参照。）、がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｍｉｃｒｏｓｏｆｔ，”ＳｅｃｕｒｉｔｙＡｌｇｏｒｉｔｈｍＳｕｉｔｅ  Ｃｌａｓｓ”，ｈｔｔｐ：／／ｍｓｄｎ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｅｎ−ｕｓ／ｌｉｂｒａｒｙ／ｓｙｓｔｅｍ．ｓｅｒｖｉｃｅｍｏｄｅｌ．ｓｅｃｕｒｉｔｙ．ｓｅｃｕｒｉｔｙａｌｇｏｒｉｔｈｍｓｕｉｔｅ．ａｓｐｘ［２０１１年１１月８日検索］
【非特許文献２】Ｊ．Ｓｃｈａａｄ，Ｒ．Ｈｏｕｓｌｅｙ”Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）  Ｋｅｙ  Ｗｒａｐ  Ａｌｇｏｒｉｔｈｍ”，Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：３３９４，ｈｔｔｐ：／／ｔｏｏｌｓ．ｉｅｔｆ．ｏｒｇ／ｈｔｍｌ／ｒｆｃ３３９４［２０１１年１１月４日検索］
【非特許文献３】”Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｒｅｖｉｅｗ  ｏｆ  Ｋｅｙ  Ｗｒａｐ  Ａｌｇｏｒｉｔｈｍｓ．”，ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００４／３４０．ｐｄｆ［２０１１年１１月４日検索］
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、鍵暗号化アルゴリズムは、鍵自体を暗号化／復号するとともに、復号時に暗号化された鍵の正当性を検証するために、例えば、ＡＥＳ  Ｋｅｙ  Ｗａｒｐは１２８ビットの鍵を暗号化／復号する際に、ＡＥＳによる暗号化／復号を６回も行わなければならず、その他の鍵暗号化アルゴリズムにおいても、１２８ビットの鍵を暗号化／復号する際には、共通鍵暗号化アルゴリズムで暗号化／復号を複数回行わなければならないという問題点があった。また、鍵暗号化アルゴリズムは、正当な権利なく、コンテンツを入手しようとする攻撃者からの解析対象となりやすい一方、アルゴリズムが解析されてしまうとそのアルゴリズムは２度と使用できないという問題点もあった。
【０００７】
そこで、本発明は、上述の課題に鑑みてなされたものであり、鍵の正当性を検証するために行う共通鍵暗号化アルゴリズムによる暗号化／復号の処理回数を減らすことによって、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムを提供することを目的とする。また、アルゴリズムを変化させることができる鍵暗号化アルゴリズムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００９】
（１）  本発明は、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置であって、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する固定長データ算出手段（例えば、固定長データ算出部１１に相当）と、算出された固定長データと前記データ鍵とを結合する結合手段（例えば、結合部１２に相当）と、前記算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する暗号化手段（例えば、暗号化部１３に相当）と、を備えることを特徴とする鍵暗号化装置を提案している。
【００１０】
この発明によれば、固定長データ検出手算出段は、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、データ鍵から一方向性関数を用いて算出する。結合手段は、算出された固定長データとデータ鍵とを結合する。暗号化手段は、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する。したがって、暗号化の処理を１回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて１回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置を構築することができる。
【００１１】
（２）  本発明は、（１）の鍵暗号化装置について、一方向性関数が、ハッシュ関数またはＭＡＣ関数であることを特徴とする鍵暗号化装置を提案している。
【００１２】
この発明によれば、一方向性関数が、ハッシュ関数またはＭＡＣ関数である。したがって、鍵暗号化鍵により暗号化された鍵の正当性を検証するための固定長データを、ハッシュ関数およびＭＡＣ関数により生成することができる。それにより、データ鍵の正当性を検証するために用いる固定長データの生成に、従来の共通鍵暗号化アルゴリズムに代わってハッシュ関数またはＭＡＣ関数を用いることにより、データ鍵の正当性を検証するために用いる固定長データのデータ長に制約をなくすことができる。
【００１３】
（３）  本発明は、（１）または（２）の鍵暗号化装置について、前記暗号化手段が、所定の処理を複数回実行し、前記算出された固定長データと結合されたデータ鍵から前記鍵暗号化データを生成するラウンド関数（例えば、図３に相当）から構成され、前記ラウンド関数が、入力されたアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵暗号化装置を提案している。
【００１４】
この発明によれば、暗号化手段は、所定の処理を複数回実行し、算出された固定長データと結合されたデータ鍵から鍵暗号化データを生成するラウンド関数から構成される。ラウンド関数は、入力されたアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有する。したがって、暗号化手段がアルゴリズムの特定部分を可変にできるラウンド関数から構成されることから、鍵暗号化装置のアルゴリズムを可変型とすることができる。
【００１５】
（４）  本発明は、（１）から（３）の鍵暗号化装置について、前記固定長データ算出手段が、前記データ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段（例えば、図２のラウンド関数処理部１００に相当）と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段（例えば、図２の終端処理部２００に相当）と、を備え、前記ラウンド関数処理手段が、入力された第２のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵暗号化装置を提案している。
【００１６】
この発明によれば、ラウンド関数処理手段は、入力された第２のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有し、データ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、固定長データを生成する。したがって、固定長データ算出手段が、アルゴリズムの特定部分を可変にできるラウンド関数処理手段を備えつつ、終端処理手段を備えることにより、固定長データの一方向性を確保しつつ、鍵暗号化装置のアルゴリズムを可変型とすることができる。
【００１７】
（５）  本発明は、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置であって、前記鍵暗号化データを前記鍵暗号化鍵で復号する復号手段（例えば、図７の復号部２１に相当）と、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する固定長データ算出手段（例えば、図７の固定長データ算出部２２に相当）と、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する検証手段（例えば、図７の検証部２３に相当）と、を備えることを特徴とする鍵復号装置を提案している。
【００１８】
この発明によれば、復号手段は、データの暗号化に用いたデータ鍵と、データ鍵の所定の位置に結合され、データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを鍵暗号化鍵で復号する。固定長データ算出手段は、復号された鍵暗号化データから、固定長データの位置およびデータ鍵の鍵長に基づいてデータ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する。検証手段は、復号された鍵暗号化データのうち、抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、抽出されたデータ鍵の正当性を検証する。したがって、復号の処理を１回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて１回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵復号装置を構築することができる。
【００１９】
（６）  本発明は、（５）の鍵復号装置について、前記一方向性関数が、ハッシュ関数またはＭＡＣ関数であることを特徴とする鍵復号装置を提案している。
【００２０】
この発明によれば、一方向性関数が、ハッシュ関数またはＭＡＣ関数である。したがって、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するための固定長データを、ハッシュ関数およびＭＡＣ関数により生成することができる。それにより、データ鍵の正当性を検証するために用いる固定長データの生成に、従来の共通鍵暗号化アルゴリズムに代わってハッシュ関数またはＭＡＣ関数を用いることから、データ鍵の正当性を検証するために用いる固定長データのデータ長に制約をなくすことができる。
【００２１】
（７）  本発明は、（５）または（６）の鍵復号装置について、前記復号手段が、所定の処理を複数回実行し、前記固定長データが前記所定の位置に結合されたデータ鍵を前記鍵暗号化データから生成するラウンド関数（例えば、図３に相当）から構成され、前記ラウンド関数が、入力された第３のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵復号装置を提案している。
【００２２】
この発明によれば、復号手段が、所定の処理を複数回実行し、固定長データが所定の位置に結合されたデータ鍵を鍵暗号化データから生成するラウンド関数から構成される。ラウンド関数が、入力された第３のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有する。したがって、復号手段がアルゴリズムの特定部分を可変にできるラウンド関数から構成されることから、鍵復号装置のアルゴリズムを可変型とすることができる。
【００２３】
（８）  本発明は、（５）から（７）の鍵復号装置について、前記固定長データ算出手段が、前記抽出されたデータ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行するラウンド関数処理手段（例えば、図２のラウンド関数処理部１００に相当）と、前記ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、前記固定長データを生成する終端処理手段（例えば、図２の終端処理部２００に相当）と、を備え、前記ラウンド関数処理手段が、入力された第４のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有することを特徴とする鍵復号装置を提案している。
【００２４】
この発明によれば、ラウンド関数処理手段は、入力された第４のアルゴリズム鍵のビット情報に応じてアルゴリズムが可変する部分を有し、抽出されたデータ鍵を所定ビット毎に区切った複数のデータ群それぞれに、所定の処理を複数回実行する。終端処理手段は、ラウンド関数処理手段で処理が実行された複数のデータ群に対して排他的論理和演算を実行し、固定長データを生成する。したがって、固定長データ算出手段が、アルゴリズムの特定部分を可変にできるラウンド関数処理手段を備えつつ、終端処理手段を備えることにより、固定長データの一方向性を確保しつつ、鍵復号装置のアルゴリズムを可変型とすることができる。
【００２５】
（９）  本発明は、固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法であって、前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第１のステップ（例えば、図６のステップＳ１に相当）と、前記結合手段が、算出された固定長データと前記データ鍵とを結合する第２のステップ（例えば、図６のステップＳ２に相当）と、前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第３のステップ（例えば、図６のステップＳ３に相当）と、を含むことを特徴とする鍵暗号化方法を提案している。
【００２６】
この発明によれば、まず、第１のステップにおいて、固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、データ鍵から一方向性関数を用いて算出する。次に、第２のステップにおいて、結合手段が、算出された固定長データとデータ鍵とを結合する。次に、第３のステップにおいて、暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する。したがって、暗号化の処理を１回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて１回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化方法を提供することができる。
【００２７】
（１０）  本発明は、復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法であって、前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第１のステップ（例えば、図８のステップＳ１１に相当）と、前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第２のステップ（例えば、図８のステップＳ１２に相当）と、前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第３のステップ（例えば、図８のステップＳ１３〜Ｓ１５に相当）と、を含むことを特徴とする鍵復号方法を提案している。
【００２８】
この発明によれば、まず、第１のステップにおいて、復号手段が、データの暗号化に用いたデータ鍵と、データ鍵の所定の位置に結合され、データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを鍵暗号化鍵で復号する。次に、第２のステップにおいて、固定長データ算出手段が、復号された鍵暗号化データから、固定長データの位置およびデータ鍵の鍵長に基づいてデータ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する。次に、第３のステップにおいて、検証手段が、復号された鍵暗号化データのうち、抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、抽出されたデータ鍵の正当性を検証する。したがって、復号の処理を１回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて１回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵復号方法を提供することができる。
【００２９】
（１１）  本発明は、固定長データ算出手段と、結合手段と、暗号化手段とを備え、データの暗号化に用いたデータ鍵を暗号化する鍵暗号化装置における鍵暗号化方法をコンピュータに実行させるプログラムであって、前記固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、前記データ鍵から一方向性関数を用いて算出する第１のステップ（例えば、図６のステップＳ１に相当）と、前記結合手段が、算出された固定長データと前記データ鍵とを結合する第２のステップ（例えば、図６のステップＳ２に相当）と、前記暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する第３のステップ（例えば、図６のステップＳ３に相当）と、をコンピュータに実行させるプログラムを提案している。
【００３０】
この発明によれば、まず、第１のステップにおいて、固定長データ算出手段が、暗号化されたデータ鍵の復号時に、復号されたデータ鍵の正当性を検証するために用いる固定長データを、データ鍵から一方向性関数を用いて算出する。次に、第２のステップにおいて、結合手段が、算出された固定長データとデータ鍵とを結合する。次に、第３のステップにおいて、暗号化手段が、算出された固定長データが結合されたデータ鍵を鍵暗号化鍵で暗号化し、鍵暗号化データを生成する。したがって、暗号化の処理を一方向性関数を用いて１回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を１回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用したプログラムを提供することができる。
【００３１】
（１２）  本発明は、復号手段と、固定長データ算出手段と、検証手段とを備え、データの暗号化に用いたデータ鍵と、当該データ鍵の所定の位置に結合され、当該データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを復号する鍵復号装置における鍵復号方法をコンピュータに実行させるプログラムであって、前記復号手段が、前記鍵暗号化データを前記鍵暗号化鍵で復号する第１のステップ（例えば、図８のステップＳ１１に相当）と、前記固定長データ算出手段が、復号された鍵暗号化データから、前記固定長データの位置および前記データ鍵の鍵長に基づいて当該データ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する第２のステップ（例えば、図８のステップＳ１２に相当）と、前記検証手段が、前記復号された鍵暗号化データのうち、前記抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、前記抽出されたデータ鍵の正当性を検証する第３のステップ（例えば、図８のステップＳ１３〜Ｓ１５に相当）と、をコンピュータに実行させるプログラムを提案している。
【００３２】
この発明によれば、まず、第１のステップにおいて、復号手段が、データの暗号化に用いたデータ鍵と、データ鍵の所定の位置に結合され、データ鍵の正当性を検証するために用いる固定長データとを鍵暗号化鍵で暗号化した鍵暗号化データを鍵暗号化鍵で復号する。次に、第２のステップにおいて、固定長データ算出手段が、復号された鍵暗号化データから、固定長データの位置およびデータ鍵の鍵長に基づいてデータ鍵を抽出し、抽出されたデータ鍵から一方向性関数を用いて、固定長データを算出する。次に、第３のステップにおいて、検証手段が、復号された鍵暗号化データのうち、抽出されたデータ鍵を除いた残りのデータと、算出された固定長データとを比較し、抽出されたデータ鍵の正当性を検証する。したがって、復号の処理を１回、鍵暗号化鍵により暗号化されたデータ鍵の正当性を検証するために用いる固定長データを生成する処理を一方向性関数を用いて１回とすることにより、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用したプログラムを提供することができる。
【発明の効果】
【００３３】
本発明によれば、暗号化対象の鍵の正当性を検証するために行っていた共通鍵暗号化アルゴリズムによる暗号化／復号の処理を一方向性関数で行うことによって、処理回数を減らし、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムを提供することができる。また、一方向性関数処理もしくは暗号化処理の少なくとも１つのアルゴリズムを可変にすることにより、鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムに適用する鍵暗号化アルゴリズムを可変にすることができる。
【図面の簡単な説明】
【００３４】
【図１】本実施形態に係る鍵暗号化装置の機能構成を示す図である。
【図２】本実施形態に係るアルゴリズム可変型固定長データ算出部の機能構成を示す図である。
【図３】本実施形態に係るアルゴリズム可変型暗号化部の機能構成を示す図である。
【図４】可変型暗号化アルゴリズムを用いて１２８ビット級安全を有する、本実施形態に係る暗号化処理を示す図である。
【図５】可変型暗号化アルゴリズムを用いて２５６ビット級安全を有する、本実施形態に係る暗号化処理を示す図である。
【図６】本実施形態に係る鍵暗号化装置における鍵暗号化処理のフローを示す図である。
【図７】本実施形態に係る鍵復号装置の機能構成を示す図である。
【図８】本実施形態に係る鍵復号装置における鍵復号処理のフローを示す図である。
【発明を実施するための形態】
【００３５】
以下、図面を用いて、本発明の実施形態について詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含むさまざまなバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３６】
＜鍵暗号化装置の機能構成＞
図１は、本実施形態に係る鍵暗号化装置１０の機能構成を示す図である。鍵暗号化装置１０は、データの暗号化に用いた鍵（以下、対象鍵とする）を暗号化する装置であって、図１に示すように、固定長データ算出部１１と、結合部１２と、暗号化部１３とから構成される。
【００３７】
固定長データ算出部１１は、一方向性関数を用いて、対象鍵から固定長データを算出する。固定長データ算出部１１により算出される固定長データは、後述する暗号化部１３で暗号化された対象鍵を後述する鍵復号装置２０で復号する時に、復号された対象鍵の正当性を検証するために用いられる。
【００３８】
一方向性関数として、例えば、ハッシュ関数やＭＡＣ関数を用いることができる。従来、復号された対象鍵の正当性を検証するために用いる固定長データは共通鍵暗号化アルゴリズムを用いて生成されていたため、データ長は共通鍵暗号化アルゴリズムのブロック長に制約をうけていた。しかし、本実施形態では、復号された対象鍵の正当性を検証するために用いる固定長データを一方向性関数を用いて生成するために、固定長データのデータ長は制約をうけず、任意の長さとすることができる。また、従来、固定長データは、共通鍵暗号化アルゴリズムによる暗号化を複数回実行することにより生成されていたが、本実施形態においては、一方向性関数による処理を１回行うことで生成することができる。
【００３９】
固定長データ算出部１１は、出願人が先に出願した特願２０１１−２３９６５１号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型とすることができる。ここでは、特願２０１１−２３９６５１号に記載の方法を提供した固定長データ算出部１１について、図２を用いて簡便に説明する。図２では、５１２ビットの対象鍵から２５６ビットの固定長データを生成する場合について例示している。
【００４０】
固定長データ算出部１１は、アルゴリズムが可変であるラウンド関数処理部１００と、一方向性を確保するための排他的論理和演算を行う終端処理部２００とから構成される。ラウンド関数処理部１００は、巡回シフト部Ｎ１〜Ｎ４と、排他的論理和演算部１１０ａ〜１１０ｆと、スイッチＳ１〜Ｓ６と、攪拌部Ｃ１〜Ｃ４とから構成される。
【００４１】
巡回シフト部Ｎ１〜Ｎ４は、対象鍵を所定ビット毎に区切った複数のブロックそれぞれに、入力されたアルゴリズム鍵のビット情報に応じて決定したビットの巡回シフトを行う。ここで、アルゴリズム鍵は、ラウンド関数処理部１００のアルゴリズムを決定するための鍵であって、一方向性関数がＭＡＣ関数の場合にはＭＡＣ鍵、ハッシュ関数の場合には任意の固定値である。
【００４２】
排他的論理和演算部１１０ａ〜１１０ｆは、２つの入力データに対して、排他的論理和演算を実行する。スイッチＳ１〜Ｓ６は、アルゴリズム鍵のビット情報に応じて開閉を決定し、排他的論理和演算部１１０ｃ〜１１０ｆによる演算の実行の有無を制御する。攪拌部Ｃ１〜Ｃ４は、排他的論理和演算部１１０ａ〜１１０ｆの演算結果に対して非線形処理を行う。
【００４３】
このように、入力されたアルゴリズム鍵に基づいて、巡回シフト部Ｎ１〜Ｎ４において巡回シフトを行うビット数と、排他的論理和演算部１１０ａ〜１１０ｆでの演算の実施の有無を制御するスイッチＳ１〜Ｓ６の開閉とを決定することにより、ラウンド関数処理部１００のアルゴリズムを可変にし、固定長データ算出部１１のアルゴリズムを可変にすることができる。
【００４４】
図１に戻って、結合部１２は、固定長データ算出部１１で算出された固定長データを、対象鍵と結合する。具体的には、対象鍵の所定の位置、例えば、対象鍵の先頭や末尾に、固定長データを結合する。
【００４５】
暗号化部１３は、結合部１２で固定長データを結合した対象鍵を、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで暗号化して、鍵暗号化データを生成する。なお、鍵暗号化鍵は、ユーザ毎に、乱数やユーザの固有な情報を利用して生成される。暗号化部１３は、共通鍵暗号化アルゴリズムとしてＡＥＳ等を用いることができる。また、暗号化部１３は、出願人が先に出願した特願２０１１−３０５５３号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型の共通鍵暗号化アルゴリズムを用いることもできる。ここでは、特願２０１１−３０５５３号に記載の方法を適用した暗号化部１３について、図３を用いて簡便に説明する。図３では、１２８ビットの対象鍵を暗号化する場合について例示している。
【００４６】
暗号化部１３は、ラウンド関数から構成され、その詳細は、図３に示すように、巡回シフト部Ｎ５、Ｎ６と、排他的論理和演算部１２０ａ、１２０ｂと、演算決定部１３０ａ、１３０ｂと、非線形関数器Ｌ１、Ｌ２とから構成されている。
【００４７】
巡回シフト部Ｎ５、Ｎ６は、入力されたデータを所定ビット毎に区切ったブロックを、入力されたアルゴリズム鍵のビット情報に応じて入れ替える。具体的には、１２８ビットの入力データを４バイトの倍数分、例えば、右へ巡回シフトするものとする。ここで、アルゴリズム鍵は、暗号化部１３のアルゴリズムを決定するための鍵である。
【００４８】
排他的論理和演算部１２０ａ、１２０ｂは、２つの入力データに対して、排他的論理和演算を実行する。
【００４９】
演算決定部１３０ａ、１３０ｂは、巡回シフト部Ｎ５、Ｎ６に接続される排他的論理和演算部１２０ａ、１２０ｂにおいて演算の実行の有無を鍵ビット情報に応じて決定する。具体的には、鍵ビットに応じてデータに「０」をかけるか「１」をかけるかを決定し、排他的論理和演算部１２０ａ、１２０ｂにおいて演算の実行の有無を制御する。
【００５０】
非線形関数器Ｌ１、Ｌ２は、非線形置換と線形変換とから構成される関数であって、排他的論理和演算部１２０ａ、１２０ｂの演算結果に対して非線形処理を行う。
【００５１】
このように、入力されたアルゴリズム鍵に基づいて、巡回シフト部Ｎ５、Ｎ６において巡回シフトを行うビット数と、排他的論理和演算部１２０ａ、１２０ｂでの演算の実施の有無を制御する演算決定部１３０ａ、１３０ｂの処理とを決定し、ラウンド関数のアルゴリズムを可変にすることによって、暗号化部１３の共通鍵暗号化アルゴリズムを可変にすることができる。
【００５２】
上述したアルゴリズム可変型の共通鍵暗号化アルゴリズムを用いて、鍵暗号化装置１０が１２８ビット級の安全性を有する場合の暗号化部１３における暗号化処理について、図４を用いて説明する。なお、鍵長およびブロック長が２５６ビットであって、アルゴリズム可変型の共通鍵暗号化アルゴリズムを用いる。
【００５３】
鍵暗号化装置１０が１２８ビット級の安全性を有するので、対象鍵は１２８ビットであるが、暗号化部１３の共通鍵暗号化アルゴリズムの鍵長およびブロック長は２５６ビットであるので、対象鍵は、０でパディングし２５６ビットとする。そして、２５６ビットの対象鍵を、暗号化部１３に入力する。暗号化部１３は、任意長のアルゴリズム鍵により共通鍵暗号化アルゴリズムを決定し、決定された共通鍵暗号化アルゴリズムで鍵暗号化鍵を用いて２５６ビットの対象鍵を暗号化し、２５６ビットの暗号文１を生成する。
【００５４】
一方、固定長データには、対象鍵から生成された２５６ビットのデータを用いる。固定長データは、例えば、ＳＨＡ−２５６を用いて生成された２５６ビットのハッシュ値である。固定長データは２５６ビットであるので、そのまま暗号化部１３に入力する。暗号化部１３は、対象鍵の場合と同様に、任意長のアルゴリズム鍵により共通鍵暗号化アルゴリズムを決定し、決定した共通鍵暗号化アルゴリズムで鍵暗号化鍵を用いて２５６ビットの固定長データを暗号化し、２５６ビットの暗号文２を生成する。
【００５５】
次に、アルゴリズム可変型の共通鍵暗号化アルゴリズムを用いて、鍵暗号化装置１０が２５６ビット級の安全性を有する場合の暗号化部１３における暗号化処理について、図５を用いて説明する。この場合、対象鍵は２５６ビットであるので、そのまま暗号化部１３に入力する。そして、暗号化部１３は、任意長のアルゴリズム鍵により共通鍵暗号化アルゴリズムを決定し、決定した共通鍵暗号化アルゴリズムで鍵暗号化鍵を用いて２５６ビットの暗号文３を生成する。
【００５６】
一方、固定長データには、対象鍵から生成された５１２ビットのデータを用いる。固定長データは、例えば、ＳＨＡ−５１２を用いて生成された５１２ビットのハッシュ値である。暗号化部１３は、固定長データが５１２ビットであるので、２５６ビットずつ暗号化を行う。具体的には、暗号化部１３は、任意長のアルゴリズム鍵により共通化暗号化アルゴリズムが決定し、決定した共通化暗号化アルゴリズムで鍵暗号化鍵を用いて、固定長データを２５６ビットずつ暗号化し、２５６ビットの暗号文４および暗号文５を生成する。
【００５７】
＜鍵暗号化処理＞
図６は、本実施形態に係る鍵暗号化装置１０における鍵暗号化処理フローを示す図である。鍵暗号化装置１０に、対象鍵が入力されると処理が開始する。
【００５８】
まず、ステップＳ１において、固定長データ算出部１１は、一方向性関数を用いて、対象鍵から固定長データを算出する。
【００５９】
次に、ステップＳ２において、結合部１２は、ステップＳ１で算出された固定長データを、対象鍵に結合する。
【００６０】
次に、ステップＳ３において、暗号化部１３は、ステップＳ２で固定長データが結合された対象鍵を、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで暗号化して、鍵暗号化データを生成する。
【００６１】
＜鍵復号装置の機能構成＞
図７は、本実施形態に係る鍵復号装置２０の機能構成を示す図である。鍵復号装置２０は、上述した鍵暗号化装置１０で暗号化された鍵暗号化データを復号して、対象鍵を取得する。鍵復号装置２０は、図７に示すように、復号部２１と、固定長データ算出部２２と、検証部２３とから構成される。
【００６２】
復号部２１は、鍵暗号化データを、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで復号する。復号された鍵暗号化データは、固定長データと結合された対象鍵である。復号部２１は、共通鍵暗号化アルゴリズムとしてＡＥＳ等を用いることができる。また、復号部２１は、出願人が先に出願した特願２０１１−３０５５３号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型の共通鍵暗号化アルゴリズムを用いることもできる。特願２０１１−３０５５３号に記載の方法を適用した復号部２１は、図３を用いて説明した特願２０１１−３０５５３号に記載の方法を適用した暗号化部１３の巡回シフト部Ｎ５、Ｎ６の巡回方向を逆方向とし、非線形関数器Ｌ１、Ｌ２の非線形関数に逆関数を用いることにより実現することができる。
【００６３】
固定長データ算出部２２は、復号された鍵暗号化データから、対象鍵を抽出する。具体的には、対象鍵の所定の位置に固定長データは結合されているので、固定長データの所定の位置から対象鍵の位置を求め、求められた対象鍵の位置と対象鍵の鍵長とに基づいて、復号された鍵暗号化データから対象鍵自体を抽出する。例えば、対象鍵の先頭に固定長データが結合されている場合には、復号された鍵暗号化データの末尾から対象鍵の鍵長分のデータを復号された鍵暗号化データから取得することで、対象鍵自体を取得することができる。
【００６４】
そして、固定長データ算出部２２は、抽出した対象鍵から、一方向性関数を用いて固定長データを算出する。一方向性関数には、鍵暗号化装置１０の固定長データ算出部１１と同様に、ハッシュ関数やＭＡＣ関数を用いることができる。鍵復号装置２０の固定長データ算出部２２も、鍵暗号化装置１０の固定長データ算出部１１同様に、図３を用いて説明した、出願人が先に出願した特願２０１１−２３９６５１号に記載の方法を適用し、アルゴリズムが変化するアルゴリズム可変型とすることができる。
【００６５】
検証部２３は、復号された鍵暗号化データのうち対象鍵を除いた残りのデータ、すなわち、復号された鍵暗号化データに含まれる固定長データと、固定長データ算出部２２で算出された固定長データとを比較し、復号された鍵暗号化データの対象鍵の正当性を検証する。両者が一致し、対象鍵の正当性が確認できた場合には、対象鍵を出力する。一方、両者が一致せず、対象鍵の正当性が確認できない場合には、エラーを出力する。
【００６６】
＜鍵復号処理＞
図８は、本実施形態に係る鍵復号装置２０における鍵復号処理フローを示す図である。鍵暗号化データが入力されると処理が開始する。
【００６７】
まず、ステップＳ１１において、復号部２１は、鍵暗号化データを、鍵暗号化鍵を用いて共通鍵暗号化アルゴリズムで復号する。
【００６８】
次に、ステップＳ１２において、固定長データ算出部２２は、ステップＳ１１で復号された鍵暗号化データから対象鍵を抽出し、抽出した対象鍵から一方向性関数を用いて固定長データを算出する。
【００６９】
次に、ステップＳ１３において、検証部２３は、復号された鍵暗号化データに含まれる固定長データと、ステップＳ１２で算出された固定長データとを比較し、対象鍵の正当性を検証する。両者が一致し、対象鍵の正当性が確認できた場合には、ステップＳ１４に処理をすすめる。一方、両者が一致せず、対象鍵の正当性が確認できない場合には、ステップＳ１５に処理を進める
【００７０】
次に、ステップＳ１４において、検証部２３は、ステップＳ１２で抽出した対象鍵を出力する。
【００７１】
次に、ステップＳ１５において、検証部２３は、エラーを出力する。
【００７２】
以上説明したように、本実施形態によれば、暗号化対象の鍵の正当性を検証するために行っていた共通鍵暗号化アルゴリズムによる暗号化／復号の処理を一方向性関数で行うことによって、処理回数を減らし、従来と比較して処理を効率化した鍵暗号化アルゴリズムを適用した鍵暗号化装置、鍵復号装置、鍵暗号化方法、鍵復号方法、およびプログラムを提供することができる。また、一方向性関数の処理もしくは暗号化処理の少なくとも１つのアルゴリズムを可変にすることにより、鍵暗号化アルゴリズムを可変にすることができる。
【００７３】
なお、鍵暗号化装置および鍵復号装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを鍵暗号化装置および鍵復号装置に読み込ませ、実行することによって本発明の鍵暗号化装置および鍵復号装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００７４】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００７５】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７６】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００７７】
１０  鍵暗号化装置
１１  固定長データ算出部
１２  結合部
１３  暗号化部
【図１】
2013134414.tif 000003
【図２】
2013134414.tif 000004
【図３】
2013134414.tif 000005
【図４】
2013134414.tif 000006
【図５】
2013134414.tif 000007
【図６】
2013134414.tif 000008
【図７】
2013134414.tif 000009
【図８】
2013134414.tif 000010