一つの実施例において、本発明は転置データ変換の方法と装置である。当該データは二つのセグメントに分割される。第一のセグメントのビットは、第ニのセグメントのビット群への転置関数の適用を制御する。変換されたデータは、第一のセグメントと第二のセグメントの転置群(転置されたビット群)を含む。
第二の実施例において、本発明は指数データ変換の方法と装置である。当該データは二つのセグメントに分割される。第二のセグメントは、第一のセグメントの関数に累乗される。そしてモジュラスがその結果に適用される。変換されたデータは、第一のセグメントとモジュラスを法とした剰余を含む。
第三の実施例において、本発明はマスター鍵から鍵を導出する方法と装置である。一つの実施例において、マスター鍵の一部がハッシュされ、マスター鍵の別の部分から二つの数が導出される。この二つの数を使用した汎用ハッシュ関数がハッシュの結果に適用され、その結果から導出鍵としてのビットが選択される。
第四の実施例において、汎用ハッシュ関数が符号化されたカウンタを使用してマスター鍵の一部に適用され、その結果が結合さる。この結合された結果はハッシュされ、導出鍵としてのビットが選択される。
本発明に関する上述したまたはそれ以外の特徴、目的及び利点は、下記に記載される説明及び添付の図面により、より容易に理解されるであろう。
図1は、マスター鍵から導出鍵(derivative key)を生成するセキュアハッシュアルゴリズム(secure hash algorithm)の一般的な実行方式を示している。その一般概念は、マスター鍵105がハッシュアルゴリズム110へ入力されるということである。セキュアハッシュアルゴリズムの一つの例はSHA−1(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と完全に無関係なものとすることができる。
図2は図1のセキュアハッシュアルゴリズムの典型的な動作を示している。図示するように、ハッシュアルゴリズムは、入力を複数のハッシュ値へマッピングする。図2において、ハッシュ値は0と何らかの値を示すnとの間で変化する。ハッシュアルゴリズムの出力はバスケットと呼ぶことができる。図2はバスケット205、210、215等からバスケット220までを示している。
入力を複数のバスケットへマッピングするのに所望のマッピング方法を使用することができる汎用ハッシュアルゴリズム(general hash algorism)と異なり、セキュアハッシュアルゴリズムは予測不可能である(時には、「衝突なし」とも呼ばれる)。一つの入力が特定の出力を生じることを知っていても、同じ出力を生じる他の入力をどのように見つけるかは分からない。例えば、入力「5」がバスケット215にマッピングされることを知っていても、同じくバスケット215にマッピングされる他の入力値は分からない。実際、いくつかの特定のハッシュアルゴリズムでは、バスケット215にマッピングされる入力は他にないかもしれない。このことによりセキュアハッシュアルゴリズム110は、所望の出力にマッピングされる他の入力を見つける容易な方法がないという意味で「安全」となる。ある特定の出力にマッピングされる他の入力を見つける唯一の方法は、その所望の出力にマッピングされる他の値を発見することを期待して、異なるいくつもの入力を試してみることである。
セキュアハッシュアルゴリズムの弱点は、バスケットがすべて等しくマッピングされない可能性があるということである。つまり、バスケット215にマッピングされるのはただ一つの入力かもしれないが、バスケット205へマッピングされるのは100の入力があるかもしれない。また、上述したように、いくつかのバスケットは、そこにマッピングされる入力がないかもしれない。
汎用ハッシュアルゴリズムはセキュアハッシュアルゴリズムが欠いている分配の特徴を備えている。図3に示すように、汎用ハッシュアルゴリズム305もバスケット310、315、320、325まで入力をマッピングする。しかし、図2のセキュアハッシュアルゴリズムと異なり、汎用ハッシュアルゴリズム305はその入力を複数のバスケットに均等に分配する。したがって、バスケット310は、バスケット315、320、325などと同じ頻度でマッピングされる。
汎用ハッシュアルゴリズムの弱点は、同じバスケットにマッピングされる他の入力を見つけるのが一般に容易であることである。例えば、入力の最後の桁に対応するバスケットを選択して0〜9に付番された10のバスケットにマッピングする汎用ハッシュアルゴリズムがあるとする。このハッシュアルゴリズムがすべてのバスケットに均等にその出力を分配することは容易に分かる。しかし、所定の入力として同じバスケットにマッピングされる他の入力をどのようにして見つけるかということも容易である。例えば、1、11、21、31などすべてがバスケット315にマッピングされる。
したがって、セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方にメリットとデメリットがあることを理解すべきである。安全性の観点から最適な解決策はセキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方のメリットを何らかの方法で組み合わせることである。図4は、本発明の実施例に従って、図1及び2のセキュアハッシュアルゴリズムと図3の汎用ハッシュアルゴリズムをいかに組み合わせてより安全な導出鍵を生成することができるかを示している。シーケンス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の両方を実行することができる他の方法を理解するであろう。
図5は、本発明の実施例に係るデータ変換、鍵生成、鍵包み(key wrapping)、及びデータ暗号化を実行できるサーバと装置を示す。図5にはサーバ505が示されている。サーバ505は、データ変換器510、鍵導出機能(以下、「鍵導出機能部」とする)515、鍵包み機能(以下、「鍵包み機能部」とする)520、及び暗号化機能(以下、「暗号化機能部」とする)525を含む。データ変換器510はデータ変換の実行をつかさどる。図8−9、10A−10C、及び11を参照して下記に説明するように、データ変換は本質的に安全でないが、符号化されたデータにスクランブルをかけることにより当該データの複雑さが増し、それにより暗号解読がより難しくなる。例えば、データ変換により、符号化されたデータ(変換はされてないデータ)のパターンにマスクをかけることができる。
鍵導出機能部515はデータの暗号化に使用する鍵を導出することをつかさどる。どのような鍵でもデータの暗号化に使用することができるのは確かであるが、特定の鍵を使用すればするほどその鍵が暗号解読で発見される可能性は高くなる。そのため、いくつかのシステムでは、マスター鍵を利用して複数の導出鍵を生成し、これらの導出鍵がデータを暗号化するのに使用される。新しい導出鍵は必要に応じて生成することができる。導出鍵だけを使用して暗号化されたデータは、そのような新しい導出鍵で暗号化されたメッセージを解読するのに役に立たない。いくつかの既存の鍵導出機能が存在しており、それらの中から三つの新しい鍵導出機能を図12−13及び15−16を参照して以下において説明する。
鍵包み機能部520は送信のために鍵を包むことをつかさどる。鍵包みは一般に送信のために鍵を暗号化することにより行われる。一つの例として、鍵を暗号化する(すなわち、包む)のにRSAを使用することができる。現時点で十分に安全性が確保された鍵は、安全ではない接続上であっても、他のマシンに送信することができ、そこで鍵の包みを解いて(復号化して)、データの暗号化/復号化に使用することができる。
通常は、包まれた鍵は、秘密鍵(private key)あるいは対称暗号方式(symmetric, cryptosystem)で使用される鍵であり、それは公開鍵(public key)あるいは非対称暗号方式(asymmetric, cryptosystem)を使って包まれる。秘密鍵暗号方式は、暗号化及び復号化に異なる鍵を使用する公開鍵暗号方式とは反対に、暗号化及び復号化に同じ鍵を使用するものである。例えば、DESとAESは秘密鍵暗号方式で、RSAは公開鍵暗号方式である。公開鍵暗号方式は安全に鍵を配布(配信)することができるが(第三者が秘密のメッセージを復号化するのに鍵を傍受して使用できるという心配が全くない)、公開鍵暗号方式は多くの場合、秘密鍵暗号方式と比べて処理に時間がかかり、その結果メッセージが長くなる。公開鍵暗号方式を使用して鍵を包むということは、サーバ505が包まれた鍵が送られる装置の公開鍵を知る必要があるのは明らかである。しかし、当業者であれば、鍵を包むのにいかなる暗号アルゴリズムも使用でき、包まれる鍵はいかなる種類の暗号方式にも対応できることを理解するであろう。
暗号化機能部525はデータを暗号化するために使用される。通常は、データは鍵包み機能部520で包まれる鍵を使用して暗号化されるが、当業者であればどんな鍵もデータを暗号化することに使用でき、そのデータは暗号化を希望するどんなデータでもよく、また所望のどんな暗号化機能を使用することができることを理解するであろう。
また、図5は、本発明の実施例に係るデータ変換、鍵包み、及びデータ暗号化を実行することが可能な装置530を示している。装置530が携帯情報端末(PDA)に似ているという事実にもかかわらず、当業者であれば、装置530がサーバ505と同様にセキュリティアルゴリズムを使用するどのような装置であってもよいことを理解するであろう。したがって、例えば、装置530は、ファイルをサーバ505とやりとりするコンピュータ(例えば、デスクトップまたはノートパソコン)であってもよい(ファイルをやりとりする相手は、サーバそのものではなく、普通のコンピュータであってもよい)。また、装置530は、例えばデジタルコンテンツをユーザに提供するデジタル媒体装置でもよく、その場合サーバ505がそのコンテンツを装置530に提供する。あるいはまた、装置530は、合法的な情報源からコンテンツを受信してもよく、その場合サーバ505はコンテンツに関し装置530に与えられた権利を特定する。また、装置530は、コンピュータのような汎用マシンとともに使用される何らかの媒体に格納された何らかの機能を実行するソフトウェアであってもよい。これらのバリエーションにおいて、装置530を図5に示したシステムの部分とならしめるのは、装置530のハードウェアよりむしろ、装置530により実行されるソフトウェアである。当業者であれば、そのソフトウェアが、所望の機能を実行することができ、フロッピー(登録商標)ディスク、各種のコンパクトディスク(CD)やデジタルビデオディスク(時にはデジタル多用途ディスクと呼ばれるDVD)、テープ媒体、またはユニバーサルシリアルバス(USB)キーなどの適切な媒体に格納され、より一般受けする可能性のあるいくつかの命名を施すこともできることを理解するであろう。または、装置530が携帯電話でサーバ505が基地局であってもよく、その場合携帯電話と基地局は暗号化された方法で通信する。当業者であれば、装置530とサーバ505の他の態様を理解し、またサーバ505と装置530の通信態様はどのような通信態様であってもよいことを理解するであろう。例えば、有線、無線または他の通信態様であってもよい。
装置530は、データ変換器510、鍵包み機能部520、及び暗号化機能部525を有している点において、図5のサーバ505と類似している。図5のサーバ505と異なり、装置530は鍵導出機能部515を有していないことに留意する必要がある。これは鍵導出が一般にサーバ505だけで必要とされるからである。他の装置と通信する方法があるのならば、一つの装置だけが導出鍵を生成する必要がある。もちろん、安全に導出鍵を送信する方法がなくても双方の装置が正確に同じ導出鍵を生成することが可能であれば、装置530は(鍵包み機能部520を必要としないかもしれないが)鍵導出機能部515を備えることができる。
図6は、本発明の実施例に係るデータセキュリティ装置を示している。このデータセキュリティ装置は、鍵包み機能部や鍵導出機能部や暗号化機能部と組み合わせてデータ変換器を使用して、安全性(セキュリティ)を高めるよう動作可能になっている。データセキュリティ装置605は、必要に応じて構成要素を付加または除去する変更を施したうえで、図5のサーバ505か装置530のいずれかの部分として機能することができる。データセキュリティ装置605において、入力ポート610はデータの受信をつかさどる。そのデータは、マスター鍵のデータであってもよく、このマスター鍵から、いくつかある可能性のなかでも特に、導出鍵、包まれる鍵、または暗号化されるデータが生成される。分割器615はデータを複数のブロックに分割するのをつかさどる。図12−13及び14−16を参照して以下に説明するように、これらの機能部は、入力データの複数の部分に対してデータ変換を適用する。すなわち、分割器615は、入力データを所望のサイズの複数のブロックに分割し、データ変換器510が各ブロックに適用できるようにする。さらに、図12−13及び14−16を参照して下記に説明するように、データ変換器510はデータ変換の実行をつかさどる。結合器620(Combiner)は、各ブロックのデータ変換をした後で適切なセキュリティ機能を持たせるために、各ブロックを結合することをつかさどる。使用可能な様々なセキュリティ機能は、鍵導出機能部515の機能、鍵包み機能部520の機能、または暗号化機能部525の機能を含む。最後に、出力ポート625は、データ変換及び/またはセキュリティ機能が適用された後に、当該データを出力する。
一般に分割器615は、データをデータ変換アルゴリズムのサイズに適合するブロックに分割するが、これは必ずしも必要ではないことに留意する必要がある。したがって、分割器615は、データ変換器510への予想される入力よりも小さいか、あるいは大きいブロックにデータを分割するかもしれない。もし、分割器615がデータ変換器510により予想されるより小さいブロックにデータを分割するなら、それらのブロックを十分大きくするようデータをパッド(pad)することができる。また、もし、分割器615がデータ変換器510により予想されるより大きいブロックにデータを分割するなら、データ変換器510は必要とされるビット数のデータだけに対してデータ変換を行うことができる。例えば、データ変換器510が図10の実施例で説明されるように動作するのであれば、データ変換器510は8バイトの入力を処理する。もし、データ変換器510が8バイト以上の入力を受けとった場合には、データ変換器510は当該入力の8バイトにだけに対応することができる。この8バイトは、データ中のどのような8バイトであってもよい。例えば、最初の8バイト、最後の8バイト、その他所望の組み合わせの8バイトであってもよい。
また、どのようなデータも変換ができることにも留意する必要がある。したがって、変換されるデータは、マスター鍵のデータでもよく、その場合には、変換されたマスター鍵が複数の導出鍵を生成するために使用される。また、変換されるデータは、送信前に包まれる導出鍵のデータであってもよい。あるいは、暗号化アルゴリズムの実行により暗号化されるデータであってもよい。当業者であれば、変換され得る他のタイプのデータを理解するであろう。
図7A−7Bは、本発明の実施例に係る図6のデータセキュリティ装置を使用するためのフローチャートを示している。図7Aのブロック705において、データが複数のブロックに分割される。ブロック710において、各ブロックはデータ変換を使用して変換される。各ブロックは、必要に応じて、個別にデータ変換をしてもよく、またそのようにしなくてもよい。つまり、いくつかのブロックは変換されるかもしれないし、他のブロックは変換されないかもしれない。ブロック715において、これらのブロックは再構築される。破線720で示されているとおり、ブロック705-715は選択的であり、必要であれば省略することが可能である。
図7Bでは、データセキュリティ装置は異なる方法で使用される。ブロック725では、鍵包みアルゴリズムがデータに適用される。ブロック730では、鍵導出アルゴリズムがデータに適用される。そして、ブロック735で、データ暗号化アルゴリズムがデータに適用される。
図8は、本発明の実施例に係る図5及び6のデータ変換器の詳細を示している。図8に示されるデータ変換器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は下記の表1に示される転置関数に従って転置を行う。
表1
表1に示す転置には、いくつかの興味深い特徴がある。一つ目は、それぞれの転置関数は転置関数P1の累乗である。従って、P2 = P1оP1、P3 = P2оP1 (= P1оP1оP1)等となる。P6оP1は再びP1となるため、P7とP8は、P1の前の累乗を繰り返して決定される。これは、データ変換器510が、一つの転置関数の実行のみを知る必要があることを意味する。つまり、残りの転置関数は基本の転置関数から生じる(派生する)。二つ目は、表1の順列は、RSA、DES、AES、SHA−1等の暗号化関数でみられるデータ構造と同様のデータ構造は導入していないということである。
転置関数は可逆(反転可能)であるため、表1の転置関数の適用により生じるデータ変換は容易に反転することができる。表2は表1の転置関数の逆の転置関数(反転した転置関数)を示す。
表2
従って、表1の転置関数を適用したデータ変換を反転する(逆にする)には、表2の転置関数を適用した第二のデータ変換を適用するだけで足りる。この逆の変換を可能とするために、出力ポート825は転置群とともに第一のセグメントのビットを直接出力する。そうしないと、変換されたデータの受信側がどのビット群が転置されているにかが(並べ替えられているのかが)分からなくなる。
表1の転置関数と同様に、一つの基本の関数(この場合P6 -1)から、表2の転置関数のすべてを得ることができる。従って、P5 -1 = P6 -1оP6 -1、P4 -1 = P5 -1оP6 -1(= P6 -1оP6 -1оP6 -1)等である。
図9は、本発明の別の実施例に係る図5及び6のデータ変換器の詳細を示す。図9では、入力ポート905及び出力ポート910は図8のデータ変換器510と同様の動作をする。しかし、図9のデータ変換器510は、転置関数を使用したデータの転置よりもむしろ、当該データの指数的転置(an exponential permutation)の演算により動作をする。この演算は計算機915により行われる。一つの実施例として、データ変換器510は3バイト長の入力データの変換を行う。その最初のセグメントは、最後の2バイトへの累乗の演算に使用される。そして、その演算結果をモジュラス(モジュラスとなる素数)で割った剰余(modulo a modulus)が得られる。例えば、一つの実施例では、データ変換をY = ((B+1)(2A+1) mod 65537) -1 と演算する。ここで、Aはその入力データの最初のバイト、Bは入力データの最後の2バイトである。そして変換されたデータはAとYを含んで3バイト長である。しかし、当業者であれば、その入力が異なる長さのものでもよく、また異なる指数的転置関数が適用できることを理解するであろう。
上に示される指数的転置関数にはいくつかの利点がある。まず、抽象代数学は、指数とそのモジュラスから1を引いた値が互いに素になるとき、その関数は1とモジュラスの間のすべての可能な値を循環することを示している。これは、その指数的転置関数は転置することを意味する。素数として65537を選択することにより、65537より1つ小さい素数は2の累乗の65536となる。したがって、Aの値にかかわらず(2A+1)は奇数となり、65536に互いに素である。次に、Aが0ならば出力データは変化しない。最後に、図9のデータ変換器510の構造は、図8の転置データ変換器と同様に、RSA、DES、AES、SHA−1などの暗号アルゴリズムに存在しない構造である。
もし、データ変換器510が(データがいつも固定サイズのものであると仮定する代わりに)予測できないサイズのデータ受信をサポートしている場合、分割器920はデータを適切なサイズのセグメントに分割できない可能性がある。図8のデータ変換器のパッダ815と同様に、パッダ925は、データが適切な長さに適切に分割されるように、追加ビットによってそのデータをパッドするために使用することができる。
図8の転置データ変換器と同様に、図9のデータ変換器510も反転可能である。変換されたデータの反転を可能とするために、出力ポート910はYとともに変更されていないAを出力する。そして、指数的転置を反転させるために、計算機915は、「2A+1 modulo 65536 (すなわち、65537-1)」の逆数(2A+1を65536で割った剰余の逆数)を演算する。この逆数をeとするならば、反転された指数的転置は((Y+l)e mod 65537 ) - 1である。この計算の結果、元のバイトBに戻る。よって、指数的転置は、データ変換の指数を変更して第二のデータ変換を適用することにより簡単に反転する(逆にする)ことができる。
以上において図8と9に示された装置について説明したので、次に、それらの使用方法を説明する。図10A−10Cは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示している。図10Aのブロック1005では、データが受信される。ブロック1010では、データが二つのセグメントに分割される(ビット群の転置が第一のセグメントのビットによって制御されると仮定する)。ブロック1015では、データ変換器が第二のデータセグメントを均等に群に分割できるかどうかを調べる。もし均等に分割できなければ、ブロック1020において、第二のセグメントを均等なサイズの群に分割するのをサポートするためにデータがパッドされる。(これは、データ変換器が、入力データを均等なサイズの群へ分割しようとしていることを前提とする。もしデータ変換器が、入力データを均等なサイズの群へ分割する必要がないのであれば、ブロック1015と1020は省略できる。)
ブロック1025(図10B)では、第二のセグメントは複数のビット群に分割される。上述のとおり、ブロック1025では、第二のセグメントを等しいサイズの群に分割すると説明したが、データ変換器がサポートしていれば異なるサイズの群に分割することも可能である。ブロック1030では、各群が第一のセグメントのビットと関連付けられる。ブロック1035では、基本の転置関数が定義される。ブロック1040では、他の転置関数が基本の転置関数の累乗として定義される。(しかし、他の転置関数が基本の転置関数の累乗である必要はない。各転置関数は互いに無関係であってもよく、その場合ブロック1035と1040は変更または省略可能である。) ブロック1045では、これらの転置関数にインデックス付けがなされる。
ブロック1050(図10C)では、データ変換器は、(第二のセグメントのビット群に対する転置関数の適用を制御する)第一のセグメントに調べられていないビットがあるかどうかを調べる。もし調べられていないビットがあれば、ブロック1055において、データ変換器はビットが設定されているかどうかを調べる。もしビットが設定されていれば、ブロック1060で、ビットによりインデックス付けがされた転置関数が特定され、そしてブロック1065で、特定された転置関数が関連する転置群に適用される。制御はブロック1050に戻り、第一のセグメントでさらに調べられていないビットがあるかどうかを調べる。結局、第一のセグメントのすべてのビットが調べられ、そしてブロック1070で、データ変換器は第一のセグメント及び転置されたビット群からデータ変換(変換されたデータ)を構築する。
図11は、本発明の実施例に係る図9のデータ変換器を使用するためのフローチャートを示している。ブロック1105では、データ変換器はデータを受信する。ブロック1110では、データ変換器はデータを二つのセグメントに分割する。ブロック1115では、第一のセグメントが使用され、選択されたモジュラスに対して素である指数(乗数)を生成する。ブロック1120では、第二のセグメントが演算された指数に乗じられる。ブロック1125では、その指数を乗じた結果を前記モジュラスで割った剰余が演算される。最後にブロック1130では、第一のセグメントと当該剰余からデータ変換(変換されたデータ)が構築される。
図5を参照して上述したとおり、いくつかの既存の鍵導出機能が存在している。しかし、図4を参照して上述したとおり、これらの既存の存在する鍵導出機能はセキュアハッシュ関数と汎用ハッシュ関数の双方の利点を備えていない。図12はセキュアハッシュ関数と汎用ハッシュ関数の利点を組み合わせた一つの鍵導出機能部の詳細を示している。図12において、鍵導出機能部515は、鍵導出機能部への入力及び導出鍵の出力のそれぞれに使用される入力ポート1205と出力ポート1210を含む。また、鍵導出機能部515は、分割器1215、結合器1220、ハッシュ部(ハッシャ/hasher)1225、決定部(determiner)1230、計算機1235及びビットセレクタ1240を含む。
分割器1215はマスター鍵を二つの部分に分割する。結合器はマスター鍵の第一の部分をカウンタと結合し、入力データの一部とする。マスター鍵をカウンタに結合する一つの方法は、マスター鍵の第一の部分をどのようなサイズ(例えば、4バイト)にもなり得るカウンタと連結することである。この連結はどちらの順序でも行うことができる。つまり、マスター鍵の第一の部分及びカウンタのどちらが組み合わせの先になってもよい。そして、この組み合わせの結果がハッシュ関数1225を使用してハッシュされ、セキュアハッシュ関数となる。(この実施例において、このハッシュ関数1225は図4のシーケンス405のセキュアハッシュアルゴリズム110に取って代わる。)
決定部1230は、マスター鍵の第二の部分から二つの数を決定するために使用される。一つの実施例において、これらの二つの数aとbは、マスター鍵の第二の部分の最初と最後の32バイトを素数pで割った剰余として決定される。このようにaとbを選択するためには、マスター鍵の第二の部分が64バイト長となるのに十分な長さを有するマスター鍵が要求される。しかし、当業者であればマスター鍵が必ずしもこの長さである必要はないことを理解するであろう。例えば、aとbをpで割った剰余の計算でaとbのビット数が十分に変わるのであれば、aとbはそれらの数の元のビットがマスター鍵の第二の部分の中から重複するような態様で選択されてもよい。
当業者であれば、他の素数も代わりに選択され得ることを理解するであろうが、素数の特定の選択は、p192 = 2192-264-1とすることができる。計算機1235は次に、汎用ハッシュ関数のax+b mod p (ここでxはハッシュ部1225の結果)を実行することができる。(この汎用ハッシュ関数は図4のシーケンス405の汎用ハッシュアルゴリズム305に取って代わる。) 最終的にビットセレクタ1240は、後に出力され得る導出鍵の汎用ハッシュ関数の結果からビットを選択することができる。例えば、ビットセレクタ1240は、導出鍵として汎用ハッシュ関数の結果の最下位桁ビットを選ぶことができる。
図13は、本発明の他の実施例に係る図5と6の鍵導出機能部の詳細を示している。図4のシーケンス405に係る鍵導出機能部を実行する図12に示された本発明の実施例と対照的に、図13の鍵導出機能部515は、セキュアハッシュアルゴリズムの後で汎用ハッシュアルゴリズムを適用しない。代わりに、図13に示される本発明の実施例は、セキュアハッシュアルゴリズムへの入力に対して線形マッピング(a liner mapping)を適用する。
図12の鍵導出機能部515と同様に、図13の鍵導出機能部515は、入力ポート1305と出力ポート1310を有する。入力ポート1305は、入力としてマスター鍵を受信し、また出力ポート1310は、導出鍵を出力する。また、図13の鍵導出機能部515は、分割器1315、エンコーダ1320、結合器1325、ハッシュ部(ハッシャ/hasher)1330、及びビットセレクタ1335を有している。
分割器1315は、図12の分割器1215と同様に、マスター鍵を二つの部分に分割する。次に、エンコーダ1320はカウンタを符号化する。エンコーダ1320は所望の態様で動作できる。例えば、エンコーダ1320はカウンタを繰り返し、マスター鍵の第一の部分の長さまで拡張することにより動作できる。したがって、例えばマスター鍵の第一の部分が64バイト長でカウンタが4バイトを使用するのであれば、エンコーダ1320は、この4バイトを16回繰り返してカウンタを64バイト長まで拡張することができる。次に、結合器1325は、マスター鍵の各部分にそれぞれ符号化されたカウンタを結合することができる。例えば、結合器1325は、マスター鍵の部分と符号化されたカウンタをビットレベルで結合することができる。一つの実施例では、マスター鍵の部分と符号化されたカウンタを結合するためにXORバイナリ関数(XOR binary function)を使用する。しかし、当業者であれば、結合器1325は、マスター鍵の部分と符号化されたカウンタを結合するために、どのようなビット単位の関数、あるいは実際にどのような関数であっても使用できることを理解するであろう。結合器1325は、次に、(符号化されたカウンタとの結合後)マスター鍵の二つの部分を再び結合することができる。例えば、二つの部分は一緒に連結することができる(しかし、当業者であれば、他の方法でも結合器1325がマスター鍵の二つの部分を再結合することができることを理解するであろう)。また、結合器1325はマスター鍵の再結合された部分を符号化されたカウンタともう一度連結することもできる。
ハッシュ部1330は、結合器1325の出力を得てハッシュする。ハッシュ1330部は、セキュアハッシュ関数となり得る。そしてビットセレクタ1335は、図12のビットセレクタ1240と同様に、ハッシュ部1330の結果から導出鍵としてのビットを選択できる。
以上において図12と13に示された装置について説明したので、次に、それらの使用方法を説明する。図14は、本発明の実施例に係る図12の鍵導出機能部を使用するためのフローチャートを示している。ブロック1405では、マスター鍵は複数のセグメントに分割される。ブロック1410では、第一のセグメントが符号化されたカウンタに結合される。図12を参照して上述したとおり、この結合は第一のセグメントと符号化されたカウンタとの連結となり得る。ブロック1415では、結合された第一のセグメントがハッシュされる。
ブロック1420では、二つの数が第二のセグメントから決定される。図12を参照して上述したとおり、これらの二つの数がモジュラスに対して決定され得る。ブロック1425では、汎用ハッシュ関数が、二つの決定された数とモジュラスを使用して定義される。ブロック1430では、ハッシュの結果が汎用ハッシュ関数に適用される。ブロック1435では、当該汎用ハッシュの結果から導出鍵としてビットが選ばれる。
図15は、本発明の実施例に係る図13の鍵導出機能部を使用するためのフローチャートを示している。ブロック1505では、マスター鍵が複数のセグメントに分割される。ブロック1510では、各セグメントが符号化されたカウンタに結合される。図13を参照して上述したとおり、これは、符号化されたカウンタとともに、各セグメントに個別にXORビット関数を適用して行うことができる。ブロック1515では、結合されたブロックが再度結合されて、(図13を参照して上述したとおり)再び符号化されたカウンタと結合させることができる。ブロック1520では、この変更されたマスター鍵が次にハッシュされ、そしてブロック1525で、ハッシュの結果から導出鍵としてのビットが選択される。
図12−15に示される鍵導出機能部は二つの例にすぎない。セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの利点を組み合わせた他の鍵導出機能部も使用することができる。図16は本発明の実施例に係る図5のデータセキュリティ装置における他の鍵導出機能部のフローチャートを示す。ブロック1605では、マスター鍵が複数のセグメントに分割される。ブロック1610では、セグメントがデータ変換を使用して変換される。セグメントは一般にデータ変換器が使用できるよりも大きくなるので、セグメントのサブセットだけが使用される。例えば、データ変換で必要とされる最初のバイトのみが使用される。ブロック1615では、これらの変換されたセグメントは結合され、符号化されたカウンタに結合される。例えば、これらのセグメント及び符号化されたカウンタは一緒に連結され得る。ブロック1620では、変換された結果がハッシュされ、そしてブロック1625で、ハッシュされた結果から導出鍵としてのビットが選択される。
図12−13の装置及び図14−16のフローチャートは、マスター鍵から単一の導出鍵が生成されるのを示しているが、本発明の実施例は、繰り返し複数の導出鍵を生成するために容易に適用することができることに留意する必要がある。これらの追加的な導出鍵は数多くの方法により生成することができる。例えば、図14−16のフローチャートはすべてカウンタを含む。それぞれの追加的な導出鍵のために、カウンタを増加させることができる。従って、第一の鍵を導出するためにカウンタは値1を使用し、第二の鍵を導出するためにカウンタは値2を使用することなどが可能である。
他の実施例において、導出鍵のビットを選択するために図12のビットセレクタ1240または図13のビットセレクタ1335を使用するよりむしろ、すべての導出鍵に対して結合された結果からビットを選択すると一度で十分な結果を生成することができる。例えば、それぞれkビット長のu鍵を希望すると仮定し、さらに、図12−13の装置及び/または図14−16のフローチャートの結果が、ビット選択の前に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などの揮発性及び/または非揮発性メモリ、またはハードドライブ、フロッピー(登録商標)ディスク、光記憶装置、テープ、フラッシュメモリ、メモリースティック、デジタルビデオディスク、生物学的記憶装置などを含む他の記憶装置とそれらの関連記憶媒体に格納することができる。また、関連データは、物理的及び/または論理的なネットワークを含む通信環境で、パケット、シリアルデータ、並列データ、伝播された信号などの形で送信され、圧縮または暗号化された形式で使用できる。また、関連データは、分散環境で使用され、マシンのアクセスのために、局所的及び/または遠隔的に格納され得る。
図示された実施例に基づいて本発明の原理を記載しかつ説明したが、図示された実施例が係る原理から逸脱することなくその構成と詳細において変更することができることを理解されたい。そして、以上の説明は特定の実施例に焦点を合わせたが、他の構成も考えることができる。特に、「一つの実施例において」という表現、または同様の表現がここで使用されるが、これらの語句は一般に参考実施例となり得ることを意味し、本発明を特定の実施例の構成に制限することは意図していない。ここに使用されるように、これらの語句は、他の実施例と結合可能な同一または異なる実施例を表してもよい。
結論として、ここに説明された実施例へ多種多様に置き換えることができることを鑑みると、この詳細な説明及び添付図面は例示のみを意図しており、発明の範囲を制限するものとして捕らえるべきではない。したがって、本発明として要求されていることは、クレームとその同等物の範囲及び精神を逸脱しないようなすべての変更を含むものである。