(57)【要約】  一つのデータ変換は、入力データの特定のビットを当該入力データの他のビットに基づいて並べ替える。もう一つのデータ変換は、入力データの一つのセグメントに、予め定義されたモジュラスの関数に対して素であるもう一つのセグメントの関数の指数を乗ずる。当該モジュラスはその結果に適用され、変換されたデータが構成される。一つの導出鍵を生成するアプリケーションにおいては、マスター鍵の一つのセグメントがハッシュされる。マスター鍵の他のセグメントから二つの数が導出される。汎用ハッシュ関数は、当該ハッシュの結果に適用され、導出鍵としてのビットが選択される。他の実施例では、符号化されたカウンタがマスター鍵のセグメントに結合される。その結果がハッシュされ、導出鍵としてのビットが選択される。これらのアルゴリズムは、互いに結合しさらに鍵包みアルゴリズムあるいは暗号化アルゴリズムと結合して、これらの他のアプリケーションのセキュリティを向上させることができる。【選択図】  図５
2008510185.tif 000002
【特許請求の範囲】
【請求項１】
データを受信する入力ポートと、
前記データを第一のセグメントと第二のセグメントに分割するとともに、当該第二のセグメントを少なくとも一つの群に分割する分割器と、
前記第一のセグメントの対応するビットに従って前記群の少なくとも一つを転置群に転置する転置関数の実行を含むパミュータと、
前記第一のセグメントと前記転置群を、変換されたデータとして出力する出力ポートと、を含むデータ変換器。
【請求項２】
前記分割器が、前記第二のセグメントの前記群の数と前記第一のセグメントのビット数が等しくなるように、当該第二のセグメントを複数の群に分割するよう動作する請求項１に記載のデータ変換器。
【請求項３】
前記複数の群はそれぞれ予め定義されたサイズを有しており、前記分割器は前記第二のセグメントをそのような複数の群に分割するよう動作する請求項１に記載のデータ変換器。
【請求項４】
前記分割器が、前記複数の群のそれぞれが前記予め定義されたサイズを有するように、前記第二のセグメントをパッドするパッダを含む請求項３に記載のデータ変換器。
【請求項５】
前記パミュータが、少なくとも二つの転置関数の実行を含む請求項１に記載のデータ変換器。
【請求項６】
前記転置関数の数が、前記第二のセグメントの前記群の数と等しい請求項５に記載のデータ変換器。
【請求項７】
前記パミュータが、前記第一のセグメントの対応する前記ビットに従って、前記転置関数の内一つを使用して前記群のそれぞれを転置するよう動作する請求項６に記載のデータ変換器。
【請求項８】
前記転置関数の前記実行が、
基本の転置関数の実行と、
前記基本の転置関数の累乗の実行と、を含む請求項５に記載のデータ変換器。
【請求項９】
データを受信する入力ポートと、
前記データを第一のセグメントと第二のセグメントに分割するとともに、当該第二のセグメントをそれぞれが予め定義されたサイズを有する少なくとも二つの群に分割するようになっており、前記第二のセグメントの分割は、前記第二のセグメントの群の数と前記第一のセグメントのビット数が等しくなるように分割する分割器と、
前記第一のセグメントの対応するビットに従って、前記群の少なくとも一つを転置群に転置する転置関数の実行を含むパミュータと、
前記第一のセグメントと前記一つの転置群を変換されたデータとして出力する出力ポートと、を含むデータ変換器と、
前記変換されたデータを安全にするセキュリティアルゴリズムの実行と、を含むことを特徴とするデータセキュリティ装置。
【請求項１０】
前記入力データがマスター鍵を含み、
前記セキュリティアルゴリズムの実行が、前記変換されたデータを使用して前記マスター鍵の導出鍵を生成する鍵導出機能の実行を含む請求項９に記載のデータセキュリティ装置。
【請求項１１】
前記入力データが包まれる鍵を含み、
前記セキュリティアルゴリズムの実行が、前記変換されたデータを包む鍵包み機能の実行を含む請求項９に記載のデータセキュリティ装置。
【請求項１２】
前記鍵包み機能の前記実行が、前記変換されたデータを包むＲＳＡの実行を含む請求項１１に記載のデータセキュリティ装置。
【請求項１３】
前記セキュリティアルゴリズムの前記実行が、前記変換されたデータを使用して前記入力データを暗号化する暗号化アルゴリズムの実行を含む請求項９に記載のデータセキュリティ装置。
【請求項１４】
前記セキュリティアルゴリズムの前記実行が、前記変換されたデータを使用して前記入力データを暗号化するＡＥＳの実行を含む請求項１３に記載のデータセキュリティ装置。
【請求項１５】
さらに、入力を少なくとも二つのブロックに分割する第二の分割器を備え、前記データ変換器が各ブロックに個別に動作するようになっている請求項９に記載のデータセキュリティ装置。
【請求項１６】
さらに、前記各ブロックに対するデータ変換の結果を、前記セキュリティアルゴリズムの前記実行により安全にされる一つの変換されたデータに結合する結合器を含む請求項１５に記載のデータセキュリティ装置。
【請求項１７】
前記パミュータが、少なくとも二つの転置関数の実行を含み、当該転置関数の数が前記第二のセグメントの前記群の数と等しい請求項９に記載のデータセキュリティ装置。
【請求項１８】
前記パミュータが、前記第一のセグメントの対応する前記ビットに従って、前記転置関数の内の一つを使用して、前記群のそれぞれを転置するよう動作する請求項１７に記載のデータセキュリティ装置。
【請求項１９】
前記転置関数の前記実行が、
基本の転置関数の実行と、
前記基本の転置関数の累乗の実行と、を含む請求項１７に記載のデータセキュリティ装置。
【請求項２０】
入力データを受信するステップと、
前記入力データをそれぞれが少なくとも１ビットを有する第一のセグメントと第二のセグメントに分割するステップと、
前記第二のセグメントの前記ビットを少なくとも一つの群にまとめるステップと、
前記群のそれぞれを前記第一のセグメントのビットと関連付けるステップと、
前記第一のセグメントの前記関連付けられたビットに従って、前記群の少なくとも一つに転置関数を適用するステップと、
前記第一のセグメントと前記転置関数が適用された群から変換されたデータを構築するステップと、を含むことを特徴とするデータ変換を生成する方法。
【請求項２１】
前記第二のセグメントの前記ビットをまとめるステップが、当該第二のセグメントの前記ビットを複数の群にまとめるステップを含み、当該複数の群の数が前記第一のセグメントのビット数と等しい請求項２０に記載の方法。
【請求項２２】
前記ビットをまとめるステップが、前記第二のセグメントの前記ビットをそれぞれが同じビット数を有する少なくとも二つの群にまとめるステップを含む請求項２０に記載の方法。
【請求項２３】
前記ビットをまとめるステップが、前記第二のセグメントがそれぞれが同じビット数を有する群にまとめられるように前記データをパッドするステップを含む請求項２２に記載の方法。
【請求項２４】
さらに、前記転置関数を定義するステップを含む請求項２０に記載の方法。
【請求項２５】
前記転置関数を定義するステップが、複数の転置関数の数を定義するステップを含み、定義された転置関数の数が前記群の数と等しい請求項２４に記載の方法。
【請求項２６】
前記転置関数を適用するステップが、前記第一のセグメントの前記対応するビットに従って、前記群のそれぞれに異なる転置関数を適用するステップを含む請求項２５に記載の方法。
【請求項２７】
前記転置関数の数を定義するステップが、当該転置関数のそれぞれにインデックス付けをするステップを含み、
前記異なる転置関数を適用するステップが、前記群と関連付けられた前記第一のセグメントの前記ビット数に対応するインデックスを有する前記転置関数を選択するステップを含む請求項２６に記載の方法。
【請求項２８】
前記複数の転置関数の数を定義するステップが、
基本の転置関数を定義するステップと、
残りの前記転置関数のそれぞれを前記基本の転置関数の累乗として定義するステップと、を含む請求項２５に記載の方法。
【請求項２９】
入力データを受信するステップと、
前記データを、それぞれが少なくとも１ビットを含む第一のセグメントと第二のセグメントに分割するステップと、
前記第二のセグメントの前記ビットを複数の群にまとめるステップであって、前記群の数が前記第一のセグメントのビット数と等しいステップと、
前記複数の群のそれぞれを前記第一のセグメントのビットと関連付けるステップと、
前記第一のセグメントの前記関連付けられたビットに従って、前記群の少なくとも一つに転置関数を適用するステップと、
前記第一のセグメントと前記転置関数が適用された転置群から変換されたデータを構築するステップと、を含むデータ変換ステップと、
前記変換されたデータを安全にするために、当該変換されたデータにセキュリティアルゴリズムの実行を適用するステップと、を含むデータセキュリティを強化する方法。
【請求項３０】
前記入力データを受信するステップが、導出鍵を生成するマスター鍵を受信するステップを含み、
前記セキュリティアルゴリズムの実行を適用するステップが、鍵導出機能の実行を前記変換されたデータに適用し、前記マスター鍵の導出鍵を生成するステップを含む請求項２９に記載の方法。
【請求項３１】
鍵導出機能の実行を適用するステップが、
前記変換されたデータを符号化されたカウンタと結合して、結合された結果を生成するステップと、
前記結合された結果を安全にハッシュしてハッシュを生成するステップと、
前記ハッシュにおけるビットのサブセットを前記導出鍵として選択するステップと、を含む請求項３０に記載の方法。
【請求項３２】
前記入力データを変換するステップが、さらに、前記マスター鍵をカウンタと結合して当該データを生成するステップを含み、
鍵導出機能の実行を適用するステップが、
前記変換されたデータを安全にハッシュしてハッシュを生成するステップと、
前記ハッシュにおけるビットのサブセットを前記導出鍵として選択するステップと、を含む請求項３０に記載の方法。
【請求項３３】
前記入力データを受信するステップが、包まれる鍵を当該入力データとして受信するステップを含み、
前記セキュリティアルゴリズムの実行を適用するステップが、鍵包み機能の実行を前記変換されたデータに適用して前記鍵を包むステップを含む請求項２９に記載の方法。
【請求項３４】
前記鍵包み機能の実行を適用するステップが、ＲＳＡの実行を前記変換されたデータに適用して前記鍵を包むステップを含む請求項３３に記載の方法。
【請求項３５】
前記セキュリティアルゴリズムの実行を適用するステップが、前記入力データを暗号化する鍵として前記変換されたデータを使用して、暗号化アルゴリズムの実行を適用するステップを含む請求項２９に記載の方法。
【請求項３６】
前記暗号化アルゴリズムの実行を適用するステップが、前記入力データを暗号化する前記鍵として前記変換されたデータを使用するＡＥＳの実行を適用するステップを含む請求項３５に記載の方法。
【請求項３７】
前記ビットをまとめるステップが、前記第二のセグメントの前記ビットを複数の群にまとめるステップを含み、当該複数の群の数が前記第一のセグメントの前記ビット数と等しく、それぞれの群が同じビット数を有する請求項２９に記載の方法。
【請求項３８】
さらに、前記転置関数を定義するステップを含む請求項２９に記載の方法。
【請求項３９】
前記転置関数を定義するステップが、複数の転置関数を定義するステップを含み、定義された転置関数の数が前記複数の群の数と等しい請求項３８に記載の方法。
【請求項４０】
前記転置関数の数を定義するステップが、
一つの基本の転置関数を定義するステップと、
残りの前記転置関数のそれぞれを前記基本の転置関数の累乗と定義するステップと、を含む請求項３９に記載の方法。
【請求項４１】
さらに、入力を少なくとも二つのブロックに分割し、各ブロックを個別にデータ変換するステップと、
前記各ブロックに対する前記データ変換の結果を、前記セキュリティアルゴリズムの実行により安全にされる一つの変換されたデータに結合するステップと、を含む請求項２９に記載の方法。
【請求項４２】
複数のビットを含むデータを受信する入力ポートと、
前記データを第一のセグメントと第二のセグメントに分割する分割器と、
前記第一のセグメント、前記第二のセグメント及び予め定義されたモジュラスを使用して前記データの指数的転置を演算する計算機と、
前記第一のセグメントと前記指数的転置を変換されたデータとして出力する出力ポートと、を含むことを特徴とするデータ変換器。
【請求項４３】
前記計算機が、前記第一のセグメントの関数として、前記予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をする第一の式の実行を含む請求項４２に記載のデータ変換器。
【請求項４４】
前記計算器がさらに、前記第二のセグメントの関数を前記指数に乗じた結果を演算する第二の式の実行を含む請求項４３に記載のデータ変換器。
【請求項４５】
前記計算機が、さらに前記結果を前記予め定義されたモジュラスで割った剰余として前記指数的転置を演算する第三の式の実行を含む請求項４４に記載のデータ変換器。
【請求項４６】
複数のビットを含むデータを受信する入力ポートと、
前記データを第一のセグメントと第二のセグメントに分割する分割器と、
前記データの指数的転置を、前記第一のセグメント、前記第二のセグメント及び予め定義されたモジュラスを使用して演算する計算機と、を含み
前記計算機が、
前記第一のセグメントの関数として、前記予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をする第一の式の実行と、
前記第二のセグメントの関数に前記指数を乗じた結果を演算する第二の式の実行と、
前記結果を前記予め定義されたモジュラスで割った剰余として、前記指数的転置を演算する第三の式の実行と、を含み、
さらに、前記第一のセグメントと前記指数的転置を変換されたデータとして出力する出力ポートと、を含むデータ変換器と、
前記変換されたデータを安全にするセキュリティアルゴリズムの実行と、を含むデータセキュリティ装置。
【請求項４７】
前記入力データが、マスター鍵を含み、
前記セキュリティアルゴリズムの実行が、前記変換されたデータを使用して前記マスター鍵の導出鍵を生成する鍵導出機能の実行を含む請求項４６に記載のデータセキュリティ装置。
【請求項４８】
前記入力データが包まれる鍵を含み、
前記セキュリティアルゴリズムの実行が、前記変換されたデータを包む鍵包み機能の実行を含む請求項４６に記載のデータセキュリティ装置。
【請求項４９】
前記鍵包み機能の実行が前記変換されたデータを包むＲＳＡの実行を含む請求項４８に記載のデータセキュリティ装置。
【請求項５０】
前記セキュリティアルゴリズムの実行が、前記変換されたデータを前記入力データを暗号化する鍵として使用する暗号化アルゴリズムの実行を含む請求項４６に記載のデータセキュリティ装置。
【請求項５１】
前記セキュリティアルゴリズムの実行が、前記入力データを暗号化する前記鍵を使用するＡＥＳの実行を含む請求項５０に記載のデータセキュリティ装置。
【請求項５２】
さらに、入力を少なくとも二つのブロックに分割する第二の分割器を備え、前記データ変換器が各ブロックに個別に動作するようになっている請求項４６に記載のデータセキュリティ装置。
【請求項５３】
さらに、前記各ブロックに対するデータ変換の結果を、前記セキュリティアルゴリズムの実行により安全にされる一つの変換されたデータに結合する結合器を含む請求項５２に記載のデータセキュリティ装置。
【請求項５４】
複数のビットを含むデータを受信するステップと、
前記データを、それぞれが少なくとも１ビットを含む第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメント、前記第二のセグメント、及び予め定義されたモジュラスを使用する指数的転置を演算するステップと、
前記第一のセグメントと前記指数的転置から変換されたデータを構築するステップと、を含むことを特徴とするデータ変換の生成の方法。
【請求項５５】
前記指数的転置を演算するステップが、前記第一のセグメントの関数として、前記予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップを含む請求項５４に記載の方法。
【請求項５６】
前記指数的転置を演算するステップが、さらに前記第二のセグメントの関数を前記指数に乗じた結果を演算するステップを含む請求項５５に記載の方法。
【請求項５７】
前記指数的転置を演算するステップが、前記結果を前記予め定義されたモジュラスで割った剰余として前記指数的転置を演算するステップを含む請求項５６に記載の方法。
【請求項５８】
複数のビットを含むデータを受信するステップと、
前記データを、それぞれが少なくとも１ビットを含む第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントの関数として、前記予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第二のセグメントの関数を前記指数に乗じた結果を演算するステップと、
前記結果を前記予め定義されたモジュラスで割った剰余として指数的転置を演算するステップと、
前記第一のセグメントと前記演算された指数的転置から変換されたデータを構築するステップと、を含むデータ変換ステップと、
前記変換されたデータを安全にするために当該変換されたデータにセキュリティアルゴリズムの実行を適用するステップと、を含むデータセキュリティを強化する方法。
【請求項５９】
前記データを受信するステップが、導出鍵を生成するマスター鍵を受信するステップを含み、
前記セキュリティアルゴリズムの実行を適用するステップが、鍵導出機能の実行を前記変換されたデータに適用し前記マスター鍵の導出鍵を生成するステップを含む請求項５８に記載の方法。
【請求項６０】
前記鍵導出機能の実行を適用するステップが、
前記変換されたデータを符号化されたカウンタと結合して結合された結果を生成するステップと、
前記結合された結果を安全にハッシュしてハッシュを生成するステップと、
前記ハッシュにおけるビットのサブセットを前記導出鍵として選択するステップと、を含む請求項５９に記載の方法。
【請求項６１】
前記データを受信するステップが、当該データとして包まれる鍵を受信するステップを含み、
前記セキュリティアルゴリズムの実行を適用するステップが、前記変換されたデータを包む鍵包み機能の実行を適用するステップを含む請求項５８に記載の方法。
【請求項６２】
前記鍵包み機能の実行を適用するステップが、前記変換されたデータを包むＲＳＡの実行を適用するステップを含む請求項６１に記載の方法。
【請求項６３】
前記セキュリティアルゴリズムの実行を適用するステップが、前記データを暗号化する鍵として前記変換されたデータを使用する暗号化アルゴリズムの実行を適用するステップを含む請求項５８に記載の方法。
【請求項６４】
前記暗号化アルゴリズムの実行を適用するステップが、前記データを暗号化する前記鍵として前記変換されたデータを使用するＲＳＡの実行を適用するステップを含む請求項６３に記載の方法。
【請求項６５】
さらに、入力を少なくとも二つのブロックに分割し、各ブロックを個別に変換するステップと、
各ブロックの前記変換されたデータの結果を、前記セキュリティアルゴリズムの実行により安全にされる一つの変換されたデータに結合するステップと、を含む請求項６３に記載の方法。
【請求項６６】
マスター鍵を受信する入力ポートと、
汎用ハッシュアルゴリズムの実行と、
ハッシュアルゴリズムの実行と、
前記汎用ハッシュアルゴリズムと前記ハッシュアルゴリズムの前記実行を使用して前記マスター鍵から導出鍵を生成する手段と、
前記導出鍵を出力する出力ポートと、を含むことを特徴とする装置。
【請求項６７】
前記汎用ハッシュアルゴリズムの実行が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項６６に記載の装置。
【請求項６８】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記ハッシュアルゴリズムの実行が、
前記第一のセグメントを前記カウンタと結合し、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムの実行を使用して前記変更された第一のセグメントをハッシュ値にハッシュする手段と、を含み、
さらに、前記汎用ハッシュアルゴリズムの実行が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含むことを特徴とする請求項６６に記載の装置。
【請求項６９】
前記生成する手段が、
前記マスター鍵と一緒に前記汎用ハッシュアルゴリズムの実行を使用して結果を生成する手段と、
前記結果とカウンタと一緒に前記ハッシュアルゴリズムの実行を使用して前記導出鍵を生成する手段と、を含む請求項６６に記載の装置。
【請求項７０】
前記汎用ハッシュアルゴリズムの実行が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項６９に記載の装置。
【請求項７１】
前記生成する手段が、
前記マスター鍵とカウンタと一緒に前記ハッシュアルゴリズムの実行を使用して結果を生成する手段と、
前記結果と一緒に前記汎用ハッシュアルゴリズムの実行を使用して前記導出鍵を生成する手段と、を含む請求項６６に記載の装置。
【請求項７２】
前記生成する手段が、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記ハッシュアルゴリズムの実行を使用する前記手段が、
前記第一のセグメントを前記カウンタと結合し、変更された第一のセグメントを生成する結合器と、
前記変更された第一のセグメントをハッシュ値にハッシュする前記ハッシュアルゴリズムの実行を使用する手段と、を含み、
前記汎用ハッシュアルゴリズムの実行を使用する前記手段が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項７１に記載の装置。
【請求項７３】
マスター鍵を受信する入力ポートと、
汎用ハッシュアルゴリズムを実行する第一の計算機と、
ハッシュアルゴリズムを実行する第二の計算機と、
前記第一の計算機と前記第二の数計算機を使用して前記マスター鍵から導出鍵を生成する鍵導出機能部と、
前記生成された導出鍵を出力する出力ポートと、を含むことを特徴とする装置。
【請求項７４】
前記鍵導出機能部が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行を行う第三の計算機と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行を行う第四の計算機と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項７３に記載の装置。
【請求項７５】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記第二の計算機が、
前記第一のセグメントを前記カウンタと結合して、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムを実行し、前記変更された第一のセグメントをハッシュ値にハッシュする第五の計算機と、を含み、
前記第一の計算機が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式を実行する第六の計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項７３に記載の装置。
【請求項７６】
前記鍵導出が、
前記マスター鍵と一緒に前記汎用ハッシュアルゴリズムを実行して結果を生成する第三の計算機と、
前記結果とカウンタと一緒に前記ハッシュアルゴリズムを実行して前記導出鍵を生成する第四の計算機と、を含む請求項７３に記載の装置。
【請求項７７】
前記第一の計算機が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行を行う第五の計算機と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行を行う第六の計算機と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項７６に記載の装置。
【請求項７８】
前記鍵導出が、
前記マスター鍵とカウンタと一緒に前記汎用ハッシュアルゴリズムを実行して結果を生成する第三の計算機と、
前記結果と一緒に前記ハッシュアルゴリズムを実行して前記導出鍵を生成する第四の計算機と、を含む請求項７３に記載の装置。
【請求項７９】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記第三の計算機が、
前記第一のセグメントを前記カウンタと結合して、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムを実行し、前記変更された第一のセグメントをハッシュ値にハッシュする第三の計算機と、を含み、
前記第四の計算機が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式を含む第五の計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項７８に記載の装置。
【請求項８０】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
前記第一のセグメントとカウンタを連結し、変更された第一のセグメントを生成する連結器と、
前記変更された第一のセグメントをハッシュ値へハッシュするハッシャと、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から得られたビットのセットを導出鍵として選択するビットセレクタと、を含むことを特徴とする装置。
【請求項８１】
さらに、前記導出鍵を出力する出力ポートを含む請求項８０に記載の装置。
【請求項８２】
前記計算機が、
前記ハッシュ値と前記第一の数の積を演算する第一の関数の実行と、
前記積と前記第二の数の和を演算する第二の関数の実行と、
前記和をモジュラスで割った剰余の前記結果を演算する第三の関数の実行と、を含む請求項８０に記載の装置。
【請求項８３】
前記決定部が、前記第一の数と前記第二の数を、前記モジュラスで割った剰余を決定するように動作する請求項８２に記載の装置。
【請求項８４】
前記第三の関数の前記実行が、前記和を素数のモジュラスで割った剰余の前記結果を演算する前記第三の関数の実行を含む請求項８２に記載の装置。
【請求項８５】
前記ビットセレクタが前記導出鍵として、前記結果から最下位ビットのセットを選択するよう動作する請求項８０に記載の装置。
【請求項８６】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
前記第一のセグメントをカウンタと連結、変更された第一のセグメントを生成する連結器と、
前記変更された第一のセグメントをハッシュ値にハッシュするハッシャと、
前記第二のセグメントをモジュラスで割った剰余から第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から得られたビットのセットを導出鍵として選択するビットセレクタと、を含む鍵導出装置と、
前記導出鍵を使用してデータを暗号化するエンクリプタと、を含むことを特徴とするデータセキュリティ装置。
【請求項８７】
さらに、データ変換器を含む請求項８６に記載のデータセキュリティ装置。
【請求項８８】
前記データ変換器が元のマスター鍵を前記マスター鍵に変換するよう動作する請求項８７に記載のデータセキュリティ装置。
【請求項８９】
前記データ変換器が、前記導出鍵を変換された導出鍵に変換するよう動作する請求項８７に記載のデータセキュリティ装置。
【請求項９０】
前記計算機が、
前記ハッシュ値と前記第一の数の積を演算する第一の関数の実行と、
前記積と前記第二の数の和を演算する第二の関数の実行と、
前記和を前記モジュラスで割った剰余から前記結果を演算する第三の関数の実行と、を含む請求項８６に記載のデータセキュリティ装置。
【請求項９１】
前記第三の関数の前記実行が、前記和を素数のモジュラスで割った剰余から前記結果を演算する前記第三の関数の実行を含む請求項８６に記載のデータセキュリティ装置。
【請求項９２】
マスター鍵をハッシュしてハッシュ値を生成するステップと、
前記マスター鍵から第一の数と第二の数を決定するステップと、
前記ハッシュ値の汎用ハッシュ関数、前記第一の数、及び前記第二の数を演算して結果を生成するステップと、
前記結果のビットから導出鍵を選択するステップと、を含むことを特徴とする鍵導出の実行の方法。
【請求項９３】
前記方法は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップを含み、
前記マスター鍵をハッシュするステップが、前記第一のセグメントをハッシュして前記ハッシュ値を生成するステップを含み、
前記第一の数と第二の数を決定するステップが、前記第二のセグメントから前記第一の数と前記第二の数を決定するステップを含む請求項９２に記載の方法。
【請求項９４】
前記方法は、さらに、カウンタを決定するステップを含み、
前記第一のセグメントをハッシュするステップが、前記第一のセグメントと前記カウンタを結合させるステップを含む請求項９３に記載の方法。
【請求項９５】
前記第一の数と第二の数を決定するステップが、
前記マスター鍵から第三の数と第四の数を導出するステップと、
前記第一の数を、前記第三の数をモジュラスで割った剰余として演算するステップと、
前記第二の数を、前記第四の数をモジュラスで割った剰余として演算するステップと、を含む請求項９２に記載の方法。
【請求項９６】
前記汎用ハッシュ関数を演算するステップが、
前記第一の数と前記ハッシュ値の積を演算するステップと、
前記積と前記第二の数の和を演算するステップと、
前記和をモジュラスで割った剰余として前記結果を演算するステップと、を含む請求項９２に記載の方法。
【請求項９７】
前記結果を演算するステップが、前記和を素数の除数で割った剰余として前記結果を演算するステップを含む請求項９６に記載の方法。
【請求項９８】
前記導出鍵を選択するステップが、前記結果の前記最下位ビットのセットから当該導出鍵を選択するステップを含む請求項９６に記載の方法。
【請求項９９】
マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントをハッシュしてハッシュ値を生成するステップと、
第一の数と第二の数を前記第二のセグメントから決定するステップと、
前記第一の数と前記ハッシュ値の積を演算するステップと、
前記積と前記第二の数の和を演算するステップと、
前記和をモジュラスで割った剰余として結果を演算するステップと、
前記結果のビットから導出鍵を選択するステップと、を含む導出鍵生成ステップと、
前記導出鍵を使用してデータを暗号化するステップと、とを含むことを特徴とする導出鍵の暗号化の方法。
【請求項１００】
さらに、前記導出鍵を生成する前に、データ変換を前記マスター鍵に適用するステップを含む請求項９９に記載の方法。
【請求項１０１】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれのセグメントが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群にまとめるステップであって、当該複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
転置関数を、前記第三のセグメントの前記関連付けられたビットに従って、前記群の少なくとも一つに適用するステップと、
前記データ変換が適用されたマスター鍵を、前記第三のセグメントと前記転置群から構築するステップと、を含む請求項１００に記載の方法。
【請求項１０２】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれのセグメントが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、第二のモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数を前記指数に乗じた結果を演算するステップと、
前記結果を前記第二のモジュラスで割った剰余として指数的転置を演算するステップと、
前記データ変換が適用されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項１００に記載の方法。
【請求項１０３】
さらに、データ変換を前記導出鍵に適用するステップを含む請求項９９に記載の方法。
【請求項１０４】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
転置関数を、前記第三のセグメントの前記関連付けられたビットに従って、前記複数の群の少なくとも一つに適用するステップと、
前記データ変換が適用されたマスター鍵を、前記第三のセグメントと前記転置群から構築するステップと、を含む請求項９９に記載の方法。
【請求項１０５】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、第二のモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数を前記指数に乗じた結果を演算するステップと、
前記結果を前記第二のモジュラスで割った剰余として指数的転置を演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項１０３に記載の方法。
【請求項１０６】
さらに、前記導出鍵の暗号化を行うステップを含む請求項９９に記載の方法。
【請求項１０７】
さらに、前記暗号化された導出鍵を送信するステップを含む請求項１０６に記載の方法。
【請求項１０８】
さらに、前記暗号化されたデータを送信するステップを含む請求項９９に記載の方法。
【請求項１０９】
さらに、カウンタを決定するステップを含み、
前記第一のセグメントをハッシュするステップが、前記第一のセグメントと前記カウンタを結合するステップを含む請求項９９に記載の方法。
【請求項１１０】
前記第一の数と第二の数を決定するステップが、
第三の数と第四の数を、前記第二のセグメントから導出するステップと、
前記第一の数を、前記第三の数をモジュラスで割った剰余として演算するステップと、
前記第二の数を、前記第四の数を前記モジュラスで割った剰余として演算するステップと、を含む請求項９９に記載の方法。
【請求項１１１】
導出鍵を選択するステップが、前記結果の最下位ビットのセットから当該導出鍵を選択するステップを含む請求項９９に記載の方法。
【請求項１１２】
マスター鍵を受信する入力ポートと、
前記マスター鍵と一つの値を結合し変更されたマスター鍵を生成する結合器と、
前記変更されたマスター鍵をハッシュしてハッシュ値とするハッシャと、
前記ハッシュ値からビットのセットを選択して導出鍵とするビットセレクタと、を含むことを特徴とする装置。
【請求項１１３】
前記装置は、さらに、前記値を繰り返し、符号化された値をより長いビットパターンとして構成するリピータを含み、
前記結合器が前記マスター鍵と前記符号化された値を結合し、変更されたマスター鍵を生成するよう動作する請求項１１２に記載の装置。
【請求項１１４】
前記カウンタが、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記結合器が、前記符号化された値、前記第一のセグメント、及び前記第二のセグメントを結合し、前記変更されたマスター鍵を生成する請求項１１２に記載の装置。
【請求項１１５】
前記結合器が、さらに、
前記第一のセグメントと前記符号化された値に対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化された値に対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果と前記第二の結果を結合し、前記変更されたマスター鍵を生成する結合器と、を含む請求項１１４に記載の装置。
【請求項１１６】
前記結合器が、前記第一の結果と前記第二の結果を連結し、前記変更されたマスター鍵を生成する連結器を含む請求項１１５に記載の装置。
【請求項１１７】
前記ビットセレクタが、前記導出鍵として前記ハッシュ値から最下位ビット部分を選択するよう動作する請求項１１２に記載の装置。
【請求項１１８】
前記結合器が、前記マスター鍵とカウンタを結合し、前記変更されたマスター鍵を生成するよう動作する請求項１１２に記載の装置。
【請求項１１９】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
一つの値を繰り返し、符号化された値をより長いビットパターンとして構成するリピータと、
前記第一のセグメントと前記符号化された値を演算して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化された値を演算して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化された値を結合し、前記変更されたマスター鍵を生成する結合器と、
前記変更されたマスター鍵をハッシュしてハッシュ値とするハッシャと、
前記結果から得られるビットのセットを導出鍵として選択するビットセレクタと、を含む導出鍵と、
前記導出鍵を使用してデータを暗号化するエンクリプタと、を含むことを特徴とするデータセキュリティ装置。
【請求項１２０】
さらに、データ変換器を含む請求項１１９に記載のデータセキュリティ装置。
【請求項１２１】
前記データ変換器が元のマスター鍵を前記マスター鍵に変換するよう動作する請求項１２０に記載のデータセキュリティ装置。
【請求項１２２】
前記データ変換器が、前記導出鍵を変換された導出鍵に変換するよう動作する請求項１２０に記載のデータセキュリティ装置。
【請求項１２３】
前記リピータが、カウンタを繰り返し、前記符号化された値をより長いビットパターンに構成するよう動作する請求項１１９に記載のデータセキュリティ装置。
【請求項１２４】
マスター鍵を、一つの値と結合し変更されたマスター鍵を生成するステップと、
前記変更されたマスター鍵をハッシュしてハッシュ値を生成するステップと、
前記ハッシュ値のビットから導出鍵を選択するステップと、を含むことを特徴とする鍵導出実行の方法。
【請求項１２５】
さらに、前記値のビットパターンを繰り返し、より長いビットパターンを構成するステップを含む請求項１２４に記載の方法。
【請求項１２６】
前記マスター鍵を一つの値と結合させるステップが、当該マスター鍵と当該値を使用してビット単位のバイナリ関数を演算するステップを含む請求項１２４に記載の方法。
【請求項１２７】
前記マスター鍵を前記値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第二のセグメントを前記値と結合して第二の結果を生成するステップと、
前記第一の結果と前記第二の結果を結合して前記変更されたマスター鍵を生成するステップと、を含む請求項１２４に記載の方法。
【請求項１２８】
前記第一の結果と前記第二の結果を結合するステップが、当該第一の結果と当該第二の結果を連結して前記変更されたマスター鍵を生成するステップを含む請求項１２７に記載の方法。
【請求項１２９】
前記導出鍵を選択するステップが、前記ハッシュ値の最下位ビット部分から当該導出鍵を選択するステップを含む請求項１２４に記載の方法。
【請求項１３０】
前記マスター鍵を一つの値と結合し変更されたマスター鍵を生成するステップが、当該マスター鍵とカウンタを結合し前記変更されたマスター鍵を生成するステップを含む請求項１２４に記載の方法。
【請求項１３１】
マスター鍵を一つの値と結合し変更されたマスター鍵を生成するステップと、
前記変更されたマスター鍵をハッシュしてハッシュ値を生成するステップと、
前記ハッシュ値のビットから導出鍵を選択するステップと、
前記導出鍵を使用してデータを暗号化するステップと、を含むことを特徴とする鍵導出を暗号化する方法。
【請求項１３２】
さらに、前記導出鍵の生成の前に、データ変換を前記マスター鍵に適用するステップを含む請求項１３１に記載の方法。
【請求項１３３】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群の数にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
前記第三のセグメントの関連付けられたビットに従って、転置関数を少なくとも一つの前記群に適用するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記転置群から構築するステップと、を含む請求項１３２に記載の方法。
【請求項１３４】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数に、前記指数を乗じた結果を演算するステップと、
指数的転置を、前記結果を前記予め定義されたモジュラスで割った剰余として演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項１３２に記載の方法。
【請求項１３５】
さらに、データ変換を前記導出鍵に適用するステップを含む請求項１３１に記載の方法。
【請求項１３６】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群の数にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
前記第三のセグメントの関連付けられたビットに従って、転置関数を少なくとも一つの前記群に適用するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記転置群から構築するステップと、を含む請求項１３５に記載の方法。
【請求項１３７】
前記データ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも１ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数に、前記指数を乗じた結果を演算するステップと、
指数的転置を、前記結果を前記予め定義されたモジュラスで割った剰余として演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項１３５に記載の方法。
【請求項１３８】
さらに、前記導出鍵を暗号化するステップを含む請求項１３１に記載の方法。
【請求項１３９】
さらに、前記暗号化された導出鍵を送信するステップを含む請求項１３８に記載の方法。
【請求項１４０】
さらに、前記暗号化されたデータを送信するステップを含む請求項１３１に記載の方法。
【請求項１４１】
前記マスター鍵を一つの値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第二のセグメントを前記値と結合して第二の結果を生成するステップと、
前記第一の結果と前記第二の結果を結合して前記変更されたマスター鍵を生成するステップと、を含む請求項１３１に記載の方法。
【請求項１４２】
前記第一の結果と前記第二の結果を結合するステップが、当該第一の結果と当該第二の結果を連結して前記変更されたマスター鍵を生成するステップを含む請求項１４１に記載の方法。
【請求項１４３】
前記マスター鍵を一つの値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第一の結果を前記第二のセグメントと結合して前記変更されたマスター鍵を生成するステップと、を含む請求項１３１に記載の方法。
【請求項１４４】
前記マスター鍵を一つの値と結合して変更されたマスター鍵を生成するステップが、当該マスター鍵をカウンタと結合して変更されたマスター鍵を生成するステップを含む請求項１３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データセキュリティに関し、より詳しくはセキュリティ強化のための転置データ変換(permutation data transform)に関する。
【背景技術】
【０００２】
何千年にわたって、人類は秘密を守ることが必要であると認識してきた。しかし、歴史の大部分において秘密を守る技法はゆっくりと発達した。ジュリアス・シーザー自身によって使われたとされるシーザーシフト暗号（The Caesar shift cipher）は、アルファベットの文字を先にずらしてメッセージを隠すものであった。したがって、“Ａ”は“Ｄ”、“Ｂ”は“Ｅ”などと置き換えられた。これは一般に非常に弱い暗号化と考えられるのだが、何世紀も後になるまでより優れた暗号化アルゴリズムはほとんど開発されてこなかった。
【０００３】
暗号化は二度の世界大戦の間熱心な研究の焦点となった。敵が解読できないコードの開発と、敵の暗号化メールの解読方法の習得に多くの取り組みがなされた。暗号化を助ける機械装置も設計された。ドイツのエニグママシンはこの時代の唯一の機械的な暗号機ではないが最も有名なものの一つである。
【０００４】
そしてコンピュータの到来により暗号化の使用の環境は大きく変わった。もはや複雑な機械や、何時間もの手作業を必要とせずに、コンピュータにより高速かつわずかな費用でメッセージの暗号化や複合化が可能となった。また、コンピュータの基礎をなす数学の理解によっても新しい暗号化アルゴリズムが導入された。ディフィー(Diffie)とヘルマン(Hellman)の研究は、「素数を法とする指数演算(exponential arithmetic modulo primes)」を使用して秘密鍵を交換する方法を導いた。これは、公開情報で生成された共有鍵を計算することは計算量的に実行不可能であるという事実に基づくものである。また、よく知られる(発明者のR.Rivest, A.Shamir及び L.Adlemanにちなんで名付けられた)ＲＳＡアルゴリズムは、暗号化されたデータを復号化するために大きな数を因数分解することもまた計算量的に実行不可能であるという事実に基づくものである。ディフィーとヘルマンにより研究されたアルゴリズムとＲＳＡアルゴリズムは論理的には解読できるが、これらのアルゴリズムの解読のためには未解決の数学的問題を解決しなければならない。（余談として、ＲＳＡアルゴリズムはまた、復号化と暗号化に異なる鍵を使用する最初の公開鍵暗号方式の一つであった。これによって安全性を損なうことなく一つの鍵を公に配送することが可能となった。）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、どのような暗号化アルゴリズムにも永久に解けないものはない。例えば、ＤＥＳ(データ暗号化標準)は元々1976年に発表された。政府は当初その耐用年数を１０年と見積もっていた。ＤＥＳは当初見積もられた耐用年数よりはるかに長く存続しているが、その比較的短い鍵ゆえにＤＥＳは、理想には劣るものと考えられている。ＤＥＳは、政府基準としてはすでにＡＥＳ（次世代暗号標準）に取って代わられているが、未だに広く使用され続けている。ＤＥＳに対し様々な改良が行われているが、これらの改良によってもＤＥＳを永久に安全なものとすることはできない。結局、ＤＥＳは一般に安全でないと考えられるであろう。よって既存の暗号化アルゴリズムの安全性を高める方法は依然として必要とされる。
【発明を実施するための最良の形態】
【０００６】
一つの実施例において、本発明は転置データ変換の方法と装置である。当該データは二つのセグメントに分割される。第一のセグメントのビットは、第ニのセグメントのビット群への転置関数の適用を制御する。変換されたデータは、第一のセグメントと第二のセグメントの転置群（転置されたビット群）を含む。
【０００７】
第二の実施例において、本発明は指数データ変換の方法と装置である。当該データは二つのセグメントに分割される。第二のセグメントは、第一のセグメントの関数に累乗される。そしてモジュラスがその結果に適用される。変換されたデータは、第一のセグメントとモジュラスを法とした剰余を含む。
【０００８】
第三の実施例において、本発明はマスター鍵から鍵を導出する方法と装置である。一つの実施例において、マスター鍵の一部がハッシュされ、マスター鍵の別の部分から二つの数が導出される。この二つの数を使用した汎用ハッシュ関数がハッシュの結果に適用され、その結果から導出鍵としてのビットが選択される。
【０００９】
第四の実施例において、汎用ハッシュ関数が符号化されたカウンタを使用してマスター鍵の一部に適用され、その結果が結合さる。この結合された結果はハッシュされ、導出鍵としてのビットが選択される。
【００１０】
本発明に関する上述したまたはそれ以外の特徴、目的及び利点は、下記に記載される説明及び添付の図面により、より容易に理解されるであろう。
【００１１】
図１は、マスター鍵から導出鍵(derivative key)を生成するセキュアハッシュアルゴリズム(secure hash algorithm)の一般的な実行方式を示している。その一般概念は、マスター鍵105がハッシュアルゴリズム110へ入力されるということである。セキュアハッシュアルゴリズムの一つの例はＳＨＡ−１(Secure Hash Algorithm 1)である。その入力の結果が導出鍵115-1である。セキュアハッシュアルゴリズム110は複数回使用できる。セキュアハッシュアルゴリズム110の実行の仕方によっては、マスター鍵105を変更してまたは変更しないまま、セキュアハッシュアルゴリズム110に繰り返し入力することができる。例えば、セキュアハッシュアルゴリズム110がその出力を制御するクロックを用いれば、マスター鍵105を変更しないで使用して、導出鍵115-2及び115-3を生成することができる。そうでなければ、マスター鍵105を何らかの方法でカウンタと結合しマスター鍵105を変更して、導出鍵115-2及び115-3を導出鍵115-1と十分に異なるものとすることができる。セキュアハッシュアルゴリズム110が適切に実行されると、マスター鍵105のシングルビット程度の小さな変更だけで、導出鍵115-2と115-3を導出鍵115-1と完全に無関係なものとすることができる。
【００１２】
図２は図１のセキュアハッシュアルゴリズムの典型的な動作を示している。図示するように、ハッシュアルゴリズムは、入力を複数のハッシュ値へマッピングする。図２において、ハッシュ値は0と何らかの値を示すnとの間で変化する。ハッシュアルゴリズムの出力はバスケットと呼ぶことができる。図２はバスケット205、210、215等からバスケット220までを示している。
【００１３】
入力を複数のバスケットへマッピングするのに所望のマッピング方法を使用することができる汎用ハッシュアルゴリズム(general hash algorism)と異なり、セキュアハッシュアルゴリズムは予測不可能である(時には、「衝突なし」とも呼ばれる)。一つの入力が特定の出力を生じることを知っていても、同じ出力を生じる他の入力をどのように見つけるかは分からない。例えば、入力「5」がバスケット215にマッピングされることを知っていても、同じくバスケット215にマッピングされる他の入力値は分からない。実際、いくつかの特定のハッシュアルゴリズムでは、バスケット215にマッピングされる入力は他にないかもしれない。このことによりセキュアハッシュアルゴリズム110は、所望の出力にマッピングされる他の入力を見つける容易な方法がないという意味で「安全」となる。ある特定の出力にマッピングされる他の入力を見つける唯一の方法は、その所望の出力にマッピングされる他の値を発見することを期待して、異なるいくつもの入力を試してみることである。
【００１４】
セキュアハッシュアルゴリズムの弱点は、バスケットがすべて等しくマッピングされない可能性があるということである。つまり、バスケット215にマッピングされるのはただ一つの入力かもしれないが、バスケット205へマッピングされるのは100の入力があるかもしれない。また、上述したように、いくつかのバスケットは、そこにマッピングされる入力がないかもしれない。
【００１５】
汎用ハッシュアルゴリズムはセキュアハッシュアルゴリズムが欠いている分配の特徴を備えている。図３に示すように、汎用ハッシュアルゴリズム305もバスケット310、315、320、325まで入力をマッピングする。しかし、図２のセキュアハッシュアルゴリズムと異なり、汎用ハッシュアルゴリズム305はその入力を複数のバスケットに均等に分配する。したがって、バスケット310は、バスケット315、320、325などと同じ頻度でマッピングされる。
【００１６】
汎用ハッシュアルゴリズムの弱点は、同じバスケットにマッピングされる他の入力を見つけるのが一般に容易であることである。例えば、入力の最後の桁に対応するバスケットを選択して0〜9に付番された10のバスケットにマッピングする汎用ハッシュアルゴリズムがあるとする。このハッシュアルゴリズムがすべてのバスケットに均等にその出力を分配することは容易に分かる。しかし、所定の入力として同じバスケットにマッピングされる他の入力をどのようにして見つけるかということも容易である。例えば、1、11、21、31などすべてがバスケット315にマッピングされる。
【００１７】
したがって、セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方にメリットとデメリットがあることを理解すべきである。安全性の観点から最適な解決策はセキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方のメリットを何らかの方法で組み合わせることである。図４は、本発明の実施例に従って、図１及び２のセキュアハッシュアルゴリズムと図３の汎用ハッシュアルゴリズムをいかに組み合わせてより安全な導出鍵を生成することができるかを示している。シーケンス405においては、マスター鍵105は、最初にセキュアハッシュアルゴリズム110に送られる。当該セキュアハッシュアルゴリズム110の結果は次に、汎用ハッシュアルゴリズム305への入力として使用され、その結果から導出鍵115-1が生成される。
【００１８】
シーケンス405は、セキュアハッシュアルゴリズム110が汎用ハッシュアルゴリズム305より先に使用される状況を示しているのに対し、シーケンス410はこの順番を逆にしている。したがって、マスター鍵105は汎用ハッシュアルゴリズム305への入力として使用される。汎用ハッシュアルゴリズム305の結果は次に、セキュアハッシュアルゴリズム110への入力として使用され、その結果から導出鍵115-1が生成され得る。
【００１９】
セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305は所望の構成(form)で実行することができる。例えば、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305は、多様なRead Only Memory(ROM)やファームウェアにおいて実行ができ、あるいは記憶装置に格納されたソフトウェアとして実行可能であり、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305が汎用プロセッサにより実行されるいくつかの例が提供される。これらの実行には専用機器における実行を含めることもできる。例えば、プロセッサにセキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305を実行するような特別な設計をすることも可能である。したがって、他の例として、セキュアハッシュアルゴリズム110か汎用ハッシュアルゴリズム305のいずれかを実行するように計算機を設計することもできる。当業者であれば、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305の両方を実行することができる他の方法を理解するであろう。
【００２０】
図５は、本発明の実施例に係るデータ変換、鍵生成、鍵包み(key wrapping)、及びデータ暗号化を実行できるサーバと装置を示す。図５にはサーバ505が示されている。サーバ505は、データ変換器510、鍵導出機能（以下、「鍵導出機能部」とする）515、鍵包み機能（以下、「鍵包み機能部」とする）520、及び暗号化機能（以下、「暗号化機能部」とする）525を含む。データ変換器510はデータ変換の実行をつかさどる。図８−９、１０Ａ−１０Ｃ、及び１１を参照して下記に説明するように、データ変換は本質的に安全でないが、符号化されたデータにスクランブルをかけることにより当該データの複雑さが増し、それにより暗号解読がより難しくなる。例えば、データ変換により、符号化されたデータ（変換はされてないデータ）のパターンにマスクをかけることができる。
【００２１】
鍵導出機能部515はデータの暗号化に使用する鍵を導出することをつかさどる。どのような鍵でもデータの暗号化に使用することができるのは確かであるが、特定の鍵を使用すればするほどその鍵が暗号解読で発見される可能性は高くなる。そのため、いくつかのシステムでは、マスター鍵を利用して複数の導出鍵を生成し、これらの導出鍵がデータを暗号化するのに使用される。新しい導出鍵は必要に応じて生成することができる。導出鍵だけを使用して暗号化されたデータは、そのような新しい導出鍵で暗号化されたメッセージを解読するのに役に立たない。いくつかの既存の鍵導出機能が存在しており、それらの中から三つの新しい鍵導出機能を図１２−１３及び１５−１６を参照して以下において説明する。
【００２２】
鍵包み機能部520は送信のために鍵を包むことをつかさどる。鍵包みは一般に送信のために鍵を暗号化することにより行われる。一つの例として、鍵を暗号化する(すなわち、包む)のにＲＳＡを使用することができる。現時点で十分に安全性が確保された鍵は、安全ではない接続上であっても、他のマシンに送信することができ、そこで鍵の包みを解いて（復号化して）、データの暗号化／復号化に使用することができる。
【００２３】
通常は、包まれた鍵は、秘密鍵(private key)あるいは対称暗号方式(symmetric, cryptosystem)で使用される鍵であり、それは公開鍵(public key)あるいは非対称暗号方式(asymmetric, cryptosystem)を使って包まれる。秘密鍵暗号方式は、暗号化及び復号化に異なる鍵を使用する公開鍵暗号方式とは反対に、暗号化及び復号化に同じ鍵を使用するものである。例えば、ＤＥＳとＡＥＳは秘密鍵暗号方式で、ＲＳＡは公開鍵暗号方式である。公開鍵暗号方式は安全に鍵を配布（配信）することができるが（第三者が秘密のメッセージを復号化するのに鍵を傍受して使用できるという心配が全くない）、公開鍵暗号方式は多くの場合、秘密鍵暗号方式と比べて処理に時間がかかり、その結果メッセージが長くなる。公開鍵暗号方式を使用して鍵を包むということは、サーバ505が包まれた鍵が送られる装置の公開鍵を知る必要があるのは明らかである。しかし、当業者であれば、鍵を包むのにいかなる暗号アルゴリズムも使用でき、包まれる鍵はいかなる種類の暗号方式にも対応できることを理解するであろう。
【００２４】
暗号化機能部525はデータを暗号化するために使用される。通常は、データは鍵包み機能部520で包まれる鍵を使用して暗号化されるが、当業者であればどんな鍵もデータを暗号化することに使用でき、そのデータは暗号化を希望するどんなデータでもよく、また所望のどんな暗号化機能を使用することができることを理解するであろう。
【００２５】
また、図５は、本発明の実施例に係るデータ変換、鍵包み、及びデータ暗号化を実行することが可能な装置530を示している。装置530が携帯情報端末（PDA）に似ているという事実にもかかわらず、当業者であれば、装置530がサーバ505と同様にセキュリティアルゴリズムを使用するどのような装置であってもよいことを理解するであろう。したがって、例えば、装置530は、ファイルをサーバ505とやりとりするコンピュータ(例えば、デスクトップまたはノートパソコン)であってもよい(ファイルをやりとりする相手は、サーバそのものではなく、普通のコンピュータであってもよい)。また、装置530は、例えばデジタルコンテンツをユーザに提供するデジタル媒体装置でもよく、その場合サーバ505がそのコンテンツを装置530に提供する。あるいはまた、装置530は、合法的な情報源からコンテンツを受信してもよく、その場合サーバ505はコンテンツに関し装置530に与えられた権利を特定する。また、装置530は、コンピュータのような汎用マシンとともに使用される何らかの媒体に格納された何らかの機能を実行するソフトウェアであってもよい。これらのバリエーションにおいて、装置530を図５に示したシステムの部分とならしめるのは、装置530のハードウェアよりむしろ、装置530により実行されるソフトウェアである。当業者であれば、そのソフトウェアが、所望の機能を実行することができ、フロッピーディスク、各種のコンパクトディスク（CD）やデジタルビデオディスク（時にはデジタル多用途ディスクと呼ばれるDVD）、テープ媒体、またはユニバーサルシリアルバス（USB）キーなどの適切な媒体に格納され、より一般受けする可能性のあるいくつかの命名を施すこともできることを理解するであろう。または、装置530が携帯電話でサーバ505が基地局であってもよく、その場合携帯電話と基地局は暗号化された方法で通信する。当業者であれば、装置530とサーバ505の他の態様を理解し、またサーバ505と装置530の通信態様はどのような通信態様であってもよいことを理解するであろう。例えば、有線、無線または他の通信態様であってもよい。
【００２６】
装置530は、データ変換器510、鍵包み機能部520、及び暗号化機能部525を有している点において、図５のサーバ505と類似している。図５のサーバ505と異なり、装置530は鍵導出機能部515を有していないことに留意する必要がある。これは鍵導出が一般にサーバ505だけで必要とされるからである。他の装置と通信する方法があるのならば、一つの装置だけが導出鍵を生成する必要がある。もちろん、安全に導出鍵を送信する方法がなくても双方の装置が正確に同じ導出鍵を生成することが可能であれば、装置530は(鍵包み機能部520を必要としないかもしれないが)鍵導出機能部515を備えることができる。
【００２７】
図６は、本発明の実施例に係るデータセキュリティ装置を示している。このデータセキュリティ装置は、鍵包み機能部や鍵導出機能部や暗号化機能部と組み合わせてデータ変換器を使用して、安全性（セキュリティ）を高めるよう動作可能になっている。データセキュリティ装置605は、必要に応じて構成要素を付加または除去する変更を施したうえで、図５のサーバ505か装置530のいずれかの部分として機能することができる。データセキュリティ装置605において、入力ポート610はデータの受信をつかさどる。そのデータは、マスター鍵のデータであってもよく、このマスター鍵から、いくつかある可能性のなかでも特に、導出鍵、包まれる鍵、または暗号化されるデータが生成される。分割器615はデータを複数のブロックに分割するのをつかさどる。図１２−１３及び１４−１６を参照して以下に説明するように、これらの機能部は、入力データの複数の部分に対してデータ変換を適用する。すなわち、分割器615は、入力データを所望のサイズの複数のブロックに分割し、データ変換器510が各ブロックに適用できるようにする。さらに、図１２−１３及び１４−１６を参照して下記に説明するように、データ変換器510はデータ変換の実行をつかさどる。結合器620(Combiner)は、各ブロックのデータ変換をした後で適切なセキュリティ機能を持たせるために、各ブロックを結合することをつかさどる。使用可能な様々なセキュリティ機能は、鍵導出機能部515の機能、鍵包み機能部520の機能、または暗号化機能部525の機能を含む。最後に、出力ポート625は、データ変換及び／またはセキュリティ機能が適用された後に、当該データを出力する。
【００２８】
一般に分割器615は、データをデータ変換アルゴリズムのサイズに適合するブロックに分割するが、これは必ずしも必要ではないことに留意する必要がある。したがって、分割器615は、データ変換器510への予想される入力よりも小さいか、あるいは大きいブロックにデータを分割するかもしれない。もし、分割器615がデータ変換器510により予想されるより小さいブロックにデータを分割するなら、それらのブロックを十分大きくするようデータをパッド(pad)することができる。また、もし、分割器615がデータ変換器510により予想されるより大きいブロックにデータを分割するなら、データ変換器510は必要とされるビット数のデータだけに対してデータ変換を行うことができる。例えば、データ変換器510が図１０の実施例で説明されるように動作するのであれば、データ変換器510は8バイトの入力を処理する。もし、データ変換器510が8バイト以上の入力を受けとった場合には、データ変換器510は当該入力の8バイトにだけに対応することができる。この8バイトは、データ中のどのような8バイトであってもよい。例えば、最初の8バイト、最後の8バイト、その他所望の組み合わせの8バイトであってもよい。
【００２９】
また、どのようなデータも変換ができることにも留意する必要がある。したがって、変換されるデータは、マスター鍵のデータでもよく、その場合には、変換されたマスター鍵が複数の導出鍵を生成するために使用される。また、変換されるデータは、送信前に包まれる導出鍵のデータであってもよい。あるいは、暗号化アルゴリズムの実行により暗号化されるデータであってもよい。当業者であれば、変換され得る他のタイプのデータを理解するであろう。
【００３０】
図７Ａ−７Ｂは、本発明の実施例に係る図６のデータセキュリティ装置を使用するためのフローチャートを示している。図７Ａのブロック705において、データが複数のブロックに分割される。ブロック710において、各ブロックはデータ変換を使用して変換される。各ブロックは、必要に応じて、個別にデータ変換をしてもよく、またそのようにしなくてもよい。つまり、いくつかのブロックは変換されるかもしれないし、他のブロックは変換されないかもしれない。ブロック715において、これらのブロックは再構築される。破線720で示されているとおり、ブロック705-715は選択的であり、必要であれば省略することが可能である。
【００３１】
図７Ｂでは、データセキュリティ装置は異なる方法で使用される。ブロック725では、鍵包みアルゴリズムがデータに適用される。ブロック730では、鍵導出アルゴリズムがデータに適用される。そして、ブロック735で、データ暗号化アルゴリズムがデータに適用される。
【００３２】
図８は、本発明の実施例に係る図５及び６のデータ変換器の詳細を示している。図８に示されるデータ変換器510の実施例において、データ変換器510は、転置関数(permutation functions)を使用してビット群を転置する（並べ替える）ことにより動作する。データ変換器510は、変換するデータを受信する入力ポート805を有するとともに変換されたデータを出力する分割器810、パッダ(padder)815、パミュータ（permuter）820、及び出力ポート825を有する。分割器810は、転置関数の適用のために入力データをビット群に分割することをつかさどる。実際、分割器810はまず、データを二つのセグメントに分割する。第一のセグメントは、第二のセグメントから分けられたビット群に対する転置関数の適用を制御するために使用されるビットを含む。一つの実施例では、データは64ビットを有する。第一のセグメントは8ビットを有する。そして、第二のセグメントは八つの7ビット群を有する。しかし、当業者であれば、データがどのような長さのものでもよく、当該データは所望の長さの群に分割することができ、異なる群が異なる長さを有するように分割することも可能であることを理解するであろう。最後に、転置群の適用を制御するビットを含む第一のセグメントは、個々の群が常に並べ替えられるのであれば、省略することが可能である。
【００３３】
データ変換器510が(データがいつも固定サイズのものであるという前提ではなく)予測できないサイズのデータ受信をサポートしている場合、分割器810はデータを適切にビット群に分割できない可能性がある。パッダ815は、データが適切に分割されるべく適度な長さを有するように、データを追加ビットでパッドするために使用することができる。
【００３４】
一つの実施例において、転置関数の適用は第一のセグメントのビットにより制御される。第一のセグメントに対応するビットが設定されていると、ビット群は特定の転置関数を使用して転置される。例えば、対応するビットが1の値を有していれば、それに対応する群は適切な転置関数を使用して転置される。もし、対応するビットが0の値を有していれば、それに対応する群は転置されない。また、他のやり方として、対応するビットが0の値を有していれば、対応するビット群は、同一転置関数(the identity permutation function) を使用して並べ替えられていると判断することができる。また、転置関数にインデックス付けをすることもできる。もし、転置関数の数が第二のセグメントのビット群の数と一致すれば (したがって、第一のセグメントのビット数とも一致するのであれば)、一つのインデックスにより三つの対応する要素を特定することができる。すなわち、第一のセグメントのビット、第二のセグメントのビット群、及び当該ビット群に適用する転置関数を特定することができる。
【００３５】
パミュータ820は第二のセグメントのビット群の転置（並べ替え）を制御することをつかさどる。当業者であれば、どのような転置関数でも使用できることを理解するであろうが、一つの実施例において、パミュータ820は下記の表１に示される転置関数に従って転置を行う。
表１
2008510185.tif 000003
【００３６】
表１に示す転置には、いくつかの興味深い特徴がある。一つ目は、それぞれの転置関数は転置関数P1の累乗である。従って、P2 = P1оP1、P3 = P2оP1 (= P1оP1оP1)等となる。P6оP1は再びP1となるため、P7とP8は、P1の前の累乗を繰り返して決定される。これは、データ変換器510が、一つの転置関数の実行のみを知る必要があることを意味する。つまり、残りの転置関数は基本の転置関数から生じる（派生する）。二つ目は、表１の順列は、ＲＳＡ、ＤＥＳ、ＡＥＳ、ＳＨＡ−１等の暗号化関数でみられるデータ構造と同様のデータ構造は導入していないということである。
【００３７】
転置関数は可逆（反転可能）であるため、表1の転置関数の適用により生じるデータ変換は容易に反転することができる。表２は表１の転置関数の逆の転置関数（反転した転置関数）を示す。
表２
2008510185.tif 000004
【００３８】
従って、表１の転置関数を適用したデータ変換を反転する（逆にする）には、表２の転置関数を適用した第二のデータ変換を適用するだけで足りる。この逆の変換を可能とするために、出力ポート825は転置群とともに第一のセグメントのビットを直接出力する。そうしないと、変換されたデータの受信側がどのビット群が転置されているにかが（並べ替えられているのかが）分からなくなる。
【００３９】
表１の転置関数と同様に、一つの基本の関数（この場合P6-1）から、表２の転置関数のすべてを得ることができる。従って、P5-1 = P6-1оP6-1、P4-1 = P5-1оP6-1(= P6-1оP6-1оP6-1)等である。
【００４０】
図９は、本発明の別の実施例に係る図５及び６のデータ変換器の詳細を示す。図９では、入力ポート905及び出力ポート910は図８のデータ変換器510と同様の動作をする。しかし、図９のデータ変換器510は、転置関数を使用したデータの転置よりもむしろ、当該データの指数的転置(an exponential permutation)の演算により動作をする。この演算は計算機915により行われる。一つの実施例として、データ変換器510は3バイト長の入力データの変換を行う。その最初のセグメントは、最後の2バイトへの累乗の演算に使用される。そして、その演算結果をモジュラス（モジュラスとなる素数）で割った剰余(modulo a modulus)が得られる。例えば、一つの実施例では、データ変換をY = ((B+1)(2A+1) mod 65537) 1 と演算する。ここで、Aはその入力データの最初のバイト、Bは入力データの最後の２バイトである。そして変換されたデータはAとYを含んで3バイト長である。しかし、当業者であれば、その入力が異なる長さのものでもよく、また異なる指数的転置関数が適用できることを理解するであろう。
【００４１】
上に示される指数的転置関数にはいくつかの利点がある。まず、抽象代数学は、指数とそのモジュラスから1を引いた値が互いに素になるとき、その関数は1とモジュラスの間のすべての可能な値を循環することを示している。これは、その指数的転置関数は転置することを意味する。素数として65537を選択することにより、65537より1つ小さい素数は2の累乗の65536となる。したがって、Aの値にかかわらず(2A+1)は奇数となり、65536に互いに素である。次に、Aが0ならば出力データは変化しない。最後に、図９のデータ変換器510の構造は、図８の転置データ変換器と同様に、ＲＳＡ、ＤＥＳ、ＡＥＳ、ＳＨＡ−１などの暗号アルゴリズムに存在しない構造である。
【００４２】
もし、データ変換器510が(データがいつも固定サイズのものであると仮定する代わりに)予測できないサイズのデータ受信をサポートしている場合、分割器920はデータを適切なサイズのセグメントに分割できない可能性がある。図８のデータ変換器のパッダ815と同様に、パッダ925は、データが適切な長さに適切に分割されるように、追加ビットによってそのデータをパッドするために使用することができる。
【００４３】
図８の転置データ変換器と同様に、図９のデータ変換器510も反転可能である。変換されたデータの反転を可能とするために、出力ポート910はYとともに変更されていないAを出力する。そして、指数的転置を反転させるために、計算機915は、「2A+1 modulo 65536 (すなわち、65537-1)」の逆数（2A+1を65536で割った剰余の逆数）を演算する。この逆数をeとするならば、反転された指数的転置は((Y+l)e mod 65537 ) - 1である。この計算の結果、元のバイトBに戻る。よって、指数的転置は、データ変換の指数を変更して第二のデータ変換を適用することにより簡単に反転する（逆にする）ことができる。
【００４４】
以上において図８と９に示された装置について説明したので、次に、それらの使用方法を説明する。図１０Ａ−１０Ｃは、本発明の実施例に係る図８のデータ変換器を使用するためのフローチャートを示している。図１０Ａのブロック1005では、データが受信される。ブロック1010では、データが二つのセグメントに分割される(ビット群の転置が第一のセグメントのビットによって制御されると仮定する)。ブロック1015では、データ変換器が第二のデータセグメントを均等に群に分割できるかどうかを調べる。もし均等に分割できなければ、ブロック1020において、第二のセグメントを均等なサイズの群に分割するのをサポートするためにデータがパッドされる。（これは、データ変換器が、入力データを均等なサイズの群へ分割しようとしていることを前提とする。もしデータ変換器が、入力データを均等なサイズの群へ分割する必要がないのであれば、ブロック1015と1020は省略できる。）
【００４５】
ブロック1025(図１０Ｂ)では、第二のセグメントは複数のビット群に分割される。上述のとおり、ブロック1025では、第二のセグメントを等しいサイズの群に分割すると説明したが、データ変換器がサポートしていれば異なるサイズの群に分割することも可能である。ブロック1030では、各群が第一のセグメントのビットと関連付けられる。ブロック1035では、基本の転置関数が定義される。ブロック1040では、他の転置関数が基本の転置関数の累乗として定義される。(しかし、他の転置関数が基本の転置関数の累乗である必要はない。各転置関数は互いに無関係であってもよく、その場合ブロック1035と1040は変更または省略可能である。) ブロック1045では、これらの転置関数にインデックス付けがなされる。
【００４６】
ブロック1050(図１０Ｃ)では、データ変換器は、(第二のセグメントのビット群に対する転置関数の適用を制御する)第一のセグメントに調べられていないビットがあるかどうかを調べる。もし調べられていないビットがあれば、ブロック1055において、データ変換器はビットが設定されているかどうかを調べる。もしビットが設定されていれば、ブロック1060で、ビットによりインデックス付けがされた転置関数が特定され、そしてブロック1065で、特定された転置関数が関連する転置群に適用される。制御はブロック1050に戻り、第一のセグメントでさらに調べられていないビットがあるかどうかを調べる。結局、第一のセグメントのすべてのビットが調べられ、そしてブロック1070で、データ変換器は第一のセグメント及び転置されたビット群からデータ変換（変換されたデータ）を構築する。
【００４７】
図１１は、本発明の実施例に係る図９のデータ変換器を使用するためのフローチャートを示している。ブロック1105では、データ変換器はデータを受信する。ブロック1110では、データ変換器はデータを二つのセグメントに分割する。ブロック1115では、第一のセグメントが使用され、選択されたモジュラスに対して素である指数（乗数）を生成する。ブロック1120では、第二のセグメントが演算された指数に乗じられる。ブロック1125では、その指数を乗じた結果を前記モジュラスで割った剰余が演算される。最後にブロック1130では、第一のセグメントと当該剰余からデータ変換（変換されたデータ）が構築される。
【００４８】
図５を参照して上述したとおり、いくつかの既存の鍵導出機能が存在している。しかし、図４を参照して上述したとおり、これらの既存の存在する鍵導出機能はセキュアハッシュ関数と汎用ハッシュ関数の双方の利点を備えていない。図１２はセキュアハッシュ関数と汎用ハッシュ関数の利点を組み合わせた一つの鍵導出機能部の詳細を示している。図１２において、鍵導出機能部515は、鍵導出機能部への入力及び導出鍵の出力のそれぞれに使用される入力ポート1205と出力ポート1210を含む。また、鍵導出機能部515は、分割器1215、結合器1220、ハッシュ部（ハッシャ／hasher）1225、決定部（determiner）1230、計算機1235及びビットセレクタ1240を含む。
【００４９】
分割器1215はマスター鍵を二つの部分に分割する。結合器はマスター鍵の第一の部分をカウンタと結合し、入力データの一部とする。マスター鍵をカウンタに結合する一つの方法は、マスター鍵の第一の部分をどのようなサイズ(例えば、4バイト)にもなり得るカウンタと連結することである。この連結はどちらの順序でも行うことができる。つまり、マスター鍵の第一の部分及びカウンタのどちらが組み合わせの先になってもよい。そして、この組み合わせの結果がハッシュ関数1225を使用してハッシュされ、セキュアハッシュ関数となる。(この実施例において、このハッシュ関数1225は図４のシーケンス405のセキュアハッシュアルゴリズム110に取って代わる。)
【００５０】
決定部1230は、マスター鍵の第二の部分から二つの数を決定するために使用される。一つの実施例において、これらの二つの数aとbは、マスター鍵の第二の部分の最初と最後の32バイトを素数ｐで割った剰余として決定される。このようにaとbを選択するためには、マスター鍵の第二の部分が64バイト長となるのに十分な長さを有するマスター鍵が要求される。しかし、当業者であればマスター鍵が必ずしもこの長さである必要はないことを理解するであろう。例えば、aとbをｐで割った剰余の計算でａとｂのビット数が十分に変わるのであれば、aとbはそれらの数の元のビットがマスター鍵の第二の部分の中から重複するような態様で選択されてもよい。
【００５１】
当業者であれば、他の素数も代わりに選択され得ることを理解するであろうが、素数の特定の選択は、p192 = 2192-264-1とすることができる。計算機1235は次に、汎用ハッシュ関数のax+b mod p (ここでxはハッシュ部1225の結果)を実行することができる。(この汎用ハッシュ関数は図４のシーケンス405の汎用ハッシュアルゴリズム305に取って代わる。) 最終的にビットセレクタ1240は、後に出力され得る導出鍵の汎用ハッシュ関数の結果からビットを選択することができる。例えば、ビットセレクタ1240は、導出鍵として汎用ハッシュ関数の結果の最下位桁ビットを選ぶことができる。
【００５２】
図１３は、本発明の他の実施例に係る図５と６の鍵導出機能部の詳細を示している。図４のシーケンス405に係る鍵導出機能部を実行する図１２に示された本発明の実施例と対照的に、図１３の鍵導出機能部515は、セキュアハッシュアルゴリズムの後で汎用ハッシュアルゴリズムを適用しない。代わりに、図１３に示される本発明の実施例は、セキュアハッシュアルゴリズムへの入力に対して線形マッピング(a liner mapping)を適用する。
【００５３】
図１２の鍵導出機能部515と同様に、図１３の鍵導出機能部515は、入力ポート1305と出力ポート1310を有する。入力ポート1305は、入力としてマスター鍵を受信し、また出力ポート1310は、導出鍵を出力する。また、図１３の鍵導出機能部515は、分割器1315、エンコーダ1320、結合器1325、ハッシュ部（ハッシャ／hasher）1330、及びビットセレクタ1335を有している。
【００５４】
分割器1315は、図１２の分割器1215と同様に、マスター鍵を二つの部分に分割する。次に、エンコーダ1320はカウンタを符号化する。エンコーダ1320は所望の態様で動作できる。例えば、エンコーダ1320はカウンタを繰り返し、マスター鍵の第一の部分の長さまで拡張することにより動作できる。したがって、例えばマスター鍵の第一の部分が64バイト長でカウンタが4バイトを使用するのであれば、エンコーダ1320は、この4バイトを16回繰り返してカウンタを64バイト長まで拡張することができる。次に、結合器1325は、マスター鍵の各部分にそれぞれ符号化されたカウンタを結合することができる。例えば、結合器1325は、マスター鍵の部分と符号化されたカウンタをビットレベルで結合することができる。一つの実施例では、マスター鍵の部分と符号化されたカウンタを結合するためにＸＯＲバイナリ関数(XOR binary function)を使用する。しかし、当業者であれば、結合器1325は、マスター鍵の部分と符号化されたカウンタを結合するために、どのようなビット単位の関数、あるいは実際にどのような関数であっても使用できることを理解するであろう。結合器1325は、次に、（符号化されたカウンタとの結合後）マスター鍵の二つの部分を再び結合することができる。例えば、二つの部分は一緒に連結することができる(しかし、当業者であれば、他の方法でも結合器1325がマスター鍵の二つの部分を再結合することができることを理解するであろう)。また、結合器1325はマスター鍵の再結合された部分を符号化されたカウンタともう一度連結することもできる。
【００５５】
ハッシュ部1330は、結合器1325の出力を得てハッシュする。ハッシュ1330部は、セキュアハッシュ関数となり得る。そしてビットセレクタ1335は、図１２のビットセレクタ1240と同様に、ハッシュ部1330の結果から導出鍵としてのビットを選択できる。
【００５６】
以上において図１２と１３に示された装置について説明したので、次に、それらの使用方法を説明する。図１４は、本発明の実施例に係る図１２の鍵導出機能部を使用するためのフローチャートを示している。ブロック1405では、マスター鍵は複数のセグメントに分割される。ブロック1410では、第一のセグメントが符号化されたカウンタに結合される。図１２を参照して上述したとおり、この結合は第一のセグメントと符号化されたカウンタとの連結となり得る。ブロック1415では、結合された第一のセグメントがハッシュされる。
【００５７】
ブロック1420では、二つの数が第二のセグメントから決定される。図１２を参照して上述したとおり、これらの二つの数がモジュラスに対して決定され得る。ブロック1425では、汎用ハッシュ関数が、二つの決定された数とモジュラスを使用して定義される。ブロック1430では、ハッシュの結果が汎用ハッシュ関数に適用される。ブロック1435では、当該汎用ハッシュの結果から導出鍵としてビットが選ばれる。
【００５８】
図１５は、本発明の実施例に係る図１３の鍵導出機能部を使用するためのフローチャートを示している。ブロック1505では、マスター鍵が複数のセグメントに分割される。ブロック1510では、各セグメントが符号化されたカウンタに結合される。図１３を参照して上述したとおり、これは、符号化されたカウンタとともに、各セグメントに個別にＸＯＲビット関数を適用して行うことができる。ブロック1515では、結合されたブロックが再度結合されて、(図１３を参照して上述したとおり)再び符号化されたカウンタと結合させることができる。ブロック1520では、この変更されたマスター鍵が次にハッシュされ、そしてブロック1525で、ハッシュの結果から導出鍵としてのビットが選択される。
【００５９】
図１２−１５に示される鍵導出機能部は二つの例にすぎない。セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの利点を組み合わせた他の鍵導出機能部も使用することができる。図１６は本発明の実施例に係る図５のデータセキュリティ装置における他の鍵導出機能部のフローチャートを示す。ブロック1605では、マスター鍵が複数のセグメントに分割される。ブロック1610では、セグメントがデータ変換を使用して変換される。セグメントは一般にデータ変換器が使用できるよりも大きくなるので、セグメントのサブセットだけが使用される。例えば、データ変換で必要とされる最初のバイトのみが使用される。ブロック1615では、これらの変換されたセグメントは結合され、符号化されたカウンタに結合される。例えば、これらのセグメント及び符号化されたカウンタは一緒に連結され得る。ブロック1620では、変換された結果がハッシュされ、そしてブロック1625で、ハッシュされた結果から導出鍵としてのビットが選択される。
【００６０】
図１２−１３の装置及び図１４−１６のフローチャートは、マスター鍵から単一の導出鍵が生成されるのを示しているが、本発明の実施例は、繰り返し複数の導出鍵を生成するために容易に適用することができることに留意する必要がある。これらの追加的な導出鍵は数多くの方法により生成することができる。例えば、図１４−１６のフローチャートはすべてカウンタを含む。それぞれの追加的な導出鍵のために、カウンタを増加させることができる。従って、第一の鍵を導出するためにカウンタは値１を使用し、第二の鍵を導出するためにカウンタは値2を使用することなどが可能である。
【００６１】
他の実施例において、導出鍵のビットを選択するために図１２のビットセレクタ1240または図１３のビットセレクタ1335を使用するよりむしろ、すべての導出鍵に対して結合された結果からビットを選択すると一度で十分な結果を生成することができる。例えば、それぞれkビット長のu鍵を希望すると仮定し、さらに、図１２−１３の装置及び／または図１４−１６のフローチャートの結果が、ビット選択の前にlビットを作ると仮定する。もし、鍵導出機能部がm回適用されて、m*l ≧ u*kとすれば、u導出鍵はすべてm*lの結果のビットと同時に選ばれる。例えば、m*lの結果のビットはすべて一緒に連結されるかもしれない。あるいは、すべてのu鍵が選択されるまで、第一の鍵は、第一のkビットとして選択されるかもしれず、第二の鍵は第二のkビットとして選択されるかもしれない。
【００６２】
以下に、本発明の一定の態様を実施する適切なマシンの簡単な一般的な説明をする。通常、マシンは、例えばプロセッサ、メモリ（例えば、ランダムアクセスメモリー(RAM)やリードオンリーメモリ(ROM)や他の状態保存媒体）、記憶装置、映像インターフェース及び出力／入力インターフェースポートなどが取付けられるシステムバスを含む。マシンは少なくとも一部分において、キーボード、マウスなどの従来の入力デバイスからの入力及び別のマシンから受けた指示、バーチャルリアリティ(VR)環境、生体フィードバックまたは他の入力信号との情報交換によって制御することが可能である。
【００６３】
本件明細書で使用されているマシン（machine）という語は、単一のマシンまたは、一緒に作動するマシンやデバイスと結合するコミュニケーションシステムを広く包含することを意図する。典型的なマシンは、自動車、列車、タクシーなどの個人的または公共の交通機関といった移動手段に加えて、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、携帯端末、電話、タブレットなどのコンピュータデバイスを含む。
【００６４】
また、マシンは、プログラマブルまたは非プログラマブル論理デバイスやアレイのような内蔵コントローラやASIC（Application Specific Integrated Circuits）や内蔵コンピュータやスマートカードなどを含んでもよい。また、マシンは、ネットワーク・インターフェース、モデムまたは他のコミュニケーションの接続を経由して、一つまたは複数のリモートマシンへの一つまたは複数の接続を利用してもよい。さらに、マシンは、イントラネット、インターネット、ローカル・エリア・ネットワーク、広域ネットワークなどのような物理的、及び/または、論理的なネットワークを通して相互接続され得る。当業者であれば、ネットワークコミュニケーションが、無線周波数(RF)、衛星、電子レンジ、電気電子技術学会(IEEE)、802.11、ブルートゥース、光学の、赤外線のケーブル、レーザなどを含む様々な有線及び/または無線の短距離または長距離キャリアとプロトコルを利用できることを理解するであろう。
【００６５】
本発明は、機能、手順、データ構造、アプリケーションプログラムなどを含む関連データを参照するか、あるいはそれらとの関連で説明することができる。これらの関連データは、マシンによりアクセスされたとき、当該マシンにタスクを実行させるか、あるいは抽象データ型か低レベルのハードウェアコンテキストを定義することになる。関連データは、例えば、RAM、ROMなどの揮発性及び/または非揮発性メモリ、またはハードドライブ、フロッピーディスク、光記憶装置、テープ、フラッシュメモリ、メモリースティック、デジタルビデオディスク、生物学的記憶装置などを含む他の記憶装置とそれらの関連記憶媒体に格納することができる。また、関連データは、物理的及び/または論理的なネットワークを含む通信環境で、パケット、シリアルデータ、並列データ、伝播された信号などの形で送信され、圧縮または暗号化された形式で使用できる。また、関連データは、分散環境で使用され、マシンのアクセスのために、局所的及び/または遠隔的に格納され得る。
【００６６】
図示された実施例に基づいて本発明の原理を記載しかつ説明したが、図示された実施例が係る原理から逸脱することなくその構成と詳細において変更することができることを理解されたい。そして、以上の説明は特定の実施例に焦点を合わせたが、他の構成も考えることができる。特に、「一つの実施例において」という表現、または同様の表現がここで使用されるが、これらの語句は一般に参考実施例となり得ることを意味し、本発明を特定の実施例の構成に制限することは意図していない。ここに使用されるように、これらの語句は、他の実施例と結合可能な同一または異なる実施例を表してもよい。
【００６７】
結論として、ここに説明された実施例へ多種多様に置き換えることができることを鑑みると、この詳細な説明及び添付図面は例示のみを意図しており、発明の範囲を制限するものとして捕らえるべきではない。したがって、本発明として要求されていることは、クレームとその同等物の範囲及び精神を逸脱しないようなすべての変更を含むものである。
【図面の簡単な説明】
【００６８】
【図１】図１は、マスター鍵から複数の導出鍵を生成するセキュアハッシュアルゴリズムの一般的な実行を示す。
【図２】図２は、図１のセキュアハッシュアルゴリズムの典型的な動作を示す。
【図３】図３は、汎用ハッシュアルゴリズムの典型的な動作を示す。
【図４】図４は、本発明の実施例に係るより安全な導出鍵を生成するために図２のセキュアハッシュアルゴリズムと図３の汎用ハッシュアルゴリズムを組み合わす異なる方法を示す。
【図５】図５は、本発明の実施例に係る、データ変換、鍵生成、鍵包み、及びデータ暗号化を実行可能とするサーバと装置を示す。
【図６】図６は、本発明の実施例に係る、鍵包み、鍵導出、または暗号化機能と組み合わせてデータ変換器を使用することにより安全性を高めるよう動作可能なデータセキュリティ装置を示す。
【図７Ａ】図７Ａは、本発明の実施例に係る図６のデータセキュリティ装置を使用するためのフローチャートを示す。
【図７Ｂ】図７Ｂは、本発明の実施例に係る図６のデータセキュリティ装置を使用するためのフローチャートを示す（図７Ａの続き）。
【図８】図８は、本発明の実施例に係る図５及び６のデータ変換器の詳細を示す。
【図９】図９は、本発明の他の実施例に係る図５及び６のデータ変換器の詳細を示す。
【図１０Ａ】図１０Ａは、本発明の実施例に係る図８のデータ変換器を使用するためのフローチャートを示す。
【図１０Ｂ】図１０Ｂは、本発明の実施例に係る図８のデータ変換器を使用するためのフローチャートを示す（図１０Ａの続き）。
【図１０Ｃ】図１０Ｃは、本発明の実施例に係る図８のデータ変換器を使用するためのフローチャートを示す（図１０Ｂの続き）。
【図１１】図１１は、本発明の実施例に係る図９のデータ変換器を使用するためのフローチャートを示す。
【図１２】図１２は、本発明の実施例に係る図５及び６の鍵導出機能部の詳細を示す。
【図１３】図１３は、本発明の他の実施例に係る図５及び６の鍵導出機能部の詳細を示す。
【図１４】図１４は、本発明の実施例に係る図１２の鍵導出機能部を使用するためのフローチャートを示す。
【図１５】図１５は、本発明の実施例に係る図１３の鍵導出機能部を使用するためのフローチャートを示す。
【図１６】図１６は、本発明の実施例に係る図５のデータセキュリティ装置で鍵導出機能部を使用するためのフローチャートを示す。
【図１】
2008510185.tif 000005
【図２】
2008510185.tif 000006
【図３】
2008510185.tif 000007
【図４】
2008510185.tif 000008
【図５】
2008510185.tif 000009
【図６】
2008510185.tif 000010
【図７Ａ】
2008510185.tif 000011
【図７Ｂ】
2008510185.tif 000012
【図８】
2008510185.tif 000013
【図９】
2008510185.tif 000014
【図１０Ａ】
2008510185.tif 000015
【図１０Ｂ】
2008510185.tif 000016
【図１０Ｃ】
2008510185.tif 000017
【図１１】
2008510185.tif 000018
【図１２】
2008510185.tif 000019
【図１３】
2008510185.tif 000020
【図１４】
2008510185.tif 000021
【図１５】
2008510185.tif 000022
【図１６】
2008510185.tif 000023
【国際調査報告】
2008510185.tif 000024