セキュリティ強化のための転置データ変換
【課題】暗号化アルゴリズムの安全性を高める。
【解決手段】マスター鍵を受信する入力ポートと、分割器、データ変換器、結合器、ハッシュ部、鍵導出機能部、鍵包み機能部、暗号化機能部、出力ポートを有し、マスター鍵を第一のセグメントと第二のセグメントに分割し、第一のセグメントを符号化されたカウンタと結合し、結合された第一のセグメントをハッシュし、第二のセグメントをモジュラスで割った剰余から二つの数を決定し、二つの数とモジュラスを使用して汎用ハッシュ関数を定義し、ハッシュの結果を汎用ハッシュ関数に適用し、二回目のハッシュの結果からビットを導出鍵として選択する。
【解決手段】マスター鍵を受信する入力ポートと、分割器、データ変換器、結合器、ハッシュ部、鍵導出機能部、鍵包み機能部、暗号化機能部、出力ポートを有し、マスター鍵を第一のセグメントと第二のセグメントに分割し、第一のセグメントを符号化されたカウンタと結合し、結合された第一のセグメントをハッシュし、第二のセグメントをモジュラスで割った剰余から二つの数を決定し、二つの数とモジュラスを使用して汎用ハッシュ関数を定義し、ハッシュの結果を汎用ハッシュ関数に適用し、二回目のハッシュの結果からビットを導出鍵として選択する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データセキュリティに関し、より詳しくはセキュリティ強化のための転置データ変換(permutation data transform)に関する。
【背景技術】
【0002】
何千年にわたって、人類は秘密を守ることが必要であると認識してきた。しかし、歴史の大部分において秘密を守る技法はゆっくりと発達した。ジュリアス・シーザー自身によって使われたとされるシーザーシフト暗号(The Caesar shift cipher)は、アルファベットの文字を先にずらしてメッセージを隠すものであった。したがって、“A”は“D”、“B”は“E”などと置き換えられた。これは一般に非常に弱い暗号化と考えられるのだが、何世紀も後になるまでより優れた暗号化アルゴリズムはほとんど開発されてこなかった。
【0003】
暗号化は二度の世界大戦の間熱心な研究の焦点となった。敵が解読できないコードの開発と、敵の暗号化メールの解読方法の習得に多くの取り組みがなされた。暗号化を助ける機械装置も設計された。ドイツのエニグママシンはこの時代の唯一の機械的な暗号機ではないが最も有名なものの一つである。
【0004】
そしてコンピュータの到来により暗号化の使用の環境は大きく変わった。もはや複雑な機械や、何時間もの手作業を必要とせずに、コンピュータにより高速かつわずかな費用でメッセージの暗号化や複合化が可能となった。また、コンピュータの基礎をなす数学の理解によっても新しい暗号化アルゴリズムが導入された。ディフィー(Diffie)とヘルマン(Hellman)の研究は、「素数を法とする指数演算(exponential arithmetic modulo primes)」を使用して秘密鍵を交換する方法を導いた。これは、公開情報で生成された共有鍵を計算することは計算量的に実行不可能であるという事実に基づくものである。また、よく知られる(発明者のR.Rivest, A.Shamir及び L.Adlemanにちなんで名付けられた)RSAアルゴリズムは、暗号化されたデータを復号化するために大きな数を因数分解することもまた計算量的に実行不可能であるという事実に基づくものである。ディフィーとヘルマンにより研究されたアルゴリズムとRSAアルゴリズムは論理的には解読できるが、これらのアルゴリズムの解読のためには未解決の数学的問題を解決しなければならない。(余談として、RSAアルゴリズムはまた、復号化と暗号化に異なる鍵を使用する最初の公開鍵暗号方式の一つであった。これによって安全性を損なうことなく一つの鍵を公に配送することが可能となった。)
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、どのような暗号化アルゴリズムにも永久に解けないものはない。例えば、DES(データ暗号化標準)は元々1976年に発表された。政府は当初その耐用年数を10年と見積もっていた。DESは当初見積もられた耐用年数よりはるかに長く存続しているが、その比較的短い鍵ゆえにDESは、理想には劣るものと考えられている。DESは、政府基準としてはすでにAES(次世代暗号標準)に取って代わられているが、未だに広く使用され続けている。DESに対し様々な改良が行われているが、これらの改良によってもDESを永久に安全なものとすることはできない。結局、DESは一般に安全でないと考えられるであろう。よって既存の暗号化アルゴリズムの安全性を高める方法は依然として必要とされる。
【発明を実施するための最良の形態】
【0006】
一つの実施例において、本発明は転置データ変換の方法と装置である。当該データは二つのセグメントに分割される。第一のセグメントのビットは、第ニのセグメントのビット群への転置関数の適用を制御する。変換されたデータは、第一のセグメントと第二のセグメントの転置群(転置されたビット群)を含む。
【0007】
第二の実施例において、本発明は指数データ変換の方法と装置である。当該データは二つのセグメントに分割される。第二のセグメントは、第一のセグメントの関数に累乗される。そしてモジュラスがその結果に適用される。変換されたデータは、第一のセグメントとモジュラスを法とした剰余を含む。
【0008】
第三の実施例において、本発明はマスター鍵から鍵を導出する方法と装置である。一つの実施例において、マスター鍵の一部がハッシュされ、マスター鍵の別の部分から二つの数が導出される。この二つの数を使用した汎用ハッシュ関数がハッシュの結果に適用され、その結果から導出鍵としてのビットが選択される。
【0009】
第四の実施例において、汎用ハッシュ関数が符号化されたカウンタを使用してマスター鍵の一部に適用され、その結果が結合さる。この結合された結果はハッシュされ、導出鍵としてのビットが選択される。
【0010】
本発明に関する上述したまたはそれ以外の特徴、目的及び利点は、下記に記載される説明及び添付の図面により、より容易に理解されるであろう。
【0011】
図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と完全に無関係なものとすることができる。
【0012】
図2は図1のセキュアハッシュアルゴリズムの典型的な動作を示している。図示するように、ハッシュアルゴリズムは、入力を複数のハッシュ値へマッピングする。図2において、ハッシュ値は0と何らかの値を示すnとの間で変化する。ハッシュアルゴリズムの出力はバスケットと呼ぶことができる。図2はバスケット205、210、215等からバスケット220までを示している。
【0013】
入力を複数のバスケットへマッピングするのに所望のマッピング方法を使用することができる汎用ハッシュアルゴリズム(general hash algorism)と異なり、セキュアハッシュアルゴリズムは予測不可能である(時には、「衝突なし」とも呼ばれる)。一つの入力が特定の出力を生じることを知っていても、同じ出力を生じる他の入力をどのように見つけるかは分からない。例えば、入力「5」がバスケット215にマッピングされることを知っていても、同じくバスケット215にマッピングされる他の入力値は分からない。実際、いくつかの特定のハッシュアルゴリズムでは、バスケット215にマッピングされる入力は他にないかもしれない。このことによりセキュアハッシュアルゴリズム110は、所望の出力にマッピングされる他の入力を見つける容易な方法がないという意味で「安全」となる。ある特定の出力にマッピングされる他の入力を見つける唯一の方法は、その所望の出力にマッピングされる他の値を発見することを期待して、異なるいくつもの入力を試してみることである。
【0014】
セキュアハッシュアルゴリズムの弱点は、バスケットがすべて等しくマッピングされない可能性があるということである。つまり、バスケット215にマッピングされるのはただ一つの入力かもしれないが、バスケット205へマッピングされるのは100の入力があるかもしれない。また、上述したように、いくつかのバスケットは、そこにマッピングされる入力がないかもしれない。
【0015】
汎用ハッシュアルゴリズムはセキュアハッシュアルゴリズムが欠いている分配の特徴を備えている。図3に示すように、汎用ハッシュアルゴリズム305もバスケット310、315、320、325まで入力をマッピングする。しかし、図2のセキュアハッシュアルゴリズムと異なり、汎用ハッシュアルゴリズム305はその入力を複数のバスケットに均等に分配する。したがって、バスケット310は、バスケット315、320、325などと同じ頻度でマッピングされる。
【0016】
汎用ハッシュアルゴリズムの弱点は、同じバスケットにマッピングされる他の入力を見つけるのが一般に容易であることである。例えば、入力の最後の桁に対応するバスケットを選択して0〜9に付番された10のバスケットにマッピングする汎用ハッシュアルゴリズムがあるとする。このハッシュアルゴリズムがすべてのバスケットに均等にその出力を分配することは容易に分かる。しかし、所定の入力として同じバスケットにマッピングされる他の入力をどのようにして見つけるかということも容易である。例えば、1、11、21、31などすべてがバスケット315にマッピングされる。
【0017】
したがって、セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方にメリットとデメリットがあることを理解すべきである。安全性の観点から最適な解決策はセキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方のメリットを何らかの方法で組み合わせることである。図4は、本発明の実施例に従って、図1及び2のセキュアハッシュアルゴリズムと図3の汎用ハッシュアルゴリズムをいかに組み合わせてより安全な導出鍵を生成することができるかを示している。シーケンス405においては、マスター鍵105は、最初にセキュアハッシュアルゴリズム110に送られる。当該セキュアハッシュアルゴリズム110の結果は次に、汎用ハッシュアルゴリズム305への入力として使用され、その結果から導出鍵115-1が生成される。
【0018】
シーケンス405は、セキュアハッシュアルゴリズム110が汎用ハッシュアルゴリズム305より先に使用される状況を示しているのに対し、シーケンス410はこの順番を逆にしている。したがって、マスター鍵105は汎用ハッシュアルゴリズム305への入力として使用される。汎用ハッシュアルゴリズム305の結果は次に、セキュアハッシュアルゴリズム110への入力として使用され、その結果から導出鍵115-1が生成され得る。
【0019】
セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305は所望の構成(form)で実行することができる。例えば、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305は、多様なRead Only Memory(ROM)やファームウェアにおいて実行ができ、あるいは記憶装置に格納されたソフトウェアとして実行可能であり、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305が汎用プロセッサにより実行されるいくつかの例が提供される。これらの実行には専用機器における実行を含めることもできる。例えば、プロセッサにセキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305を実行するような特別な設計をすることも可能である。したがって、他の例として、セキュアハッシュアルゴリズム110か汎用ハッシュアルゴリズム305のいずれかを実行するように計算機を設計することもできる。当業者であれば、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305の両方を実行することができる他の方法を理解するであろう。
【0020】
図5は、本発明の実施例に係るデータ変換、鍵生成、鍵包み(key wrapping)、及びデータ暗号化を実行できるサーバと装置を示す。図5にはサーバ505が示されている。サーバ505は、データ変換器510、鍵導出機能(以下、「鍵導出機能部」とする)515、鍵包み機能(以下、「鍵包み機能部」とする)520、及び暗号化機能(以下、「暗号化機能部」とする)525を含む。データ変換器510はデータ変換の実行をつかさどる。図8−9、10A−10C、及び11を参照して下記に説明するように、データ変換は本質的に安全でないが、符号化されたデータにスクランブルをかけることにより当該データの複雑さが増し、それにより暗号解読がより難しくなる。例えば、データ変換により、符号化されたデータ(変換はされてないデータ)のパターンにマスクをかけることができる。
【0021】
鍵導出機能部515はデータの暗号化に使用する鍵を導出することをつかさどる。どのような鍵でもデータの暗号化に使用することができるのは確かであるが、特定の鍵を使用すればするほどその鍵が暗号解読で発見される可能性は高くなる。そのため、いくつかのシステムでは、マスター鍵を利用して複数の導出鍵を生成し、これらの導出鍵がデータを暗号化するのに使用される。新しい導出鍵は必要に応じて生成することができる。導出鍵だけを使用して暗号化されたデータは、そのような新しい導出鍵で暗号化されたメッセージを解読するのに役に立たない。いくつかの既存の鍵導出機能が存在しており、それらの中から三つの新しい鍵導出機能を図12−13及び15−16を参照して以下において説明する。
【0022】
鍵包み機能部520は送信のために鍵を包むことをつかさどる。鍵包みは一般に送信のために鍵を暗号化することにより行われる。一つの例として、鍵を暗号化する(すなわち、包む)のにRSAを使用することができる。現時点で十分に安全性が確保された鍵は、安全ではない接続上であっても、他のマシンに送信することができ、そこで鍵の包みを解いて(復号化して)、データの暗号化/復号化に使用することができる。
【0023】
通常は、包まれた鍵は、秘密鍵(private key)あるいは対称暗号方式(symmetric, cryptosystem)で使用される鍵であり、それは公開鍵(public key)あるいは非対称暗号方式(asymmetric, cryptosystem)を使って包まれる。秘密鍵暗号方式は、暗号化及び復号化に異なる鍵を使用する公開鍵暗号方式とは反対に、暗号化及び復号化に同じ鍵を使用するものである。例えば、DESとAESは秘密鍵暗号方式で、RSAは公開鍵暗号方式である。公開鍵暗号方式は安全に鍵を配布(配信)することができるが(第三者が秘密のメッセージを復号化するのに鍵を傍受して使用できるという心配が全くない)、公開鍵暗号方式は多くの場合、秘密鍵暗号方式と比べて処理に時間がかかり、その結果メッセージが長くなる。公開鍵暗号方式を使用して鍵を包むということは、サーバ505が包まれた鍵が送られる装置の公開鍵を知る必要があるのは明らかである。しかし、当業者であれば、鍵を包むのにいかなる暗号アルゴリズムも使用でき、包まれる鍵はいかなる種類の暗号方式にも対応できることを理解するであろう。
【0024】
暗号化機能部525はデータを暗号化するために使用される。通常は、データは鍵包み機能部520で包まれる鍵を使用して暗号化されるが、当業者であればどんな鍵もデータを暗号化することに使用でき、そのデータは暗号化を希望するどんなデータでもよく、また所望のどんな暗号化機能を使用することができることを理解するであろう。
【0025】
また、図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の通信態様はどのような通信態様であってもよいことを理解するであろう。例えば、有線、無線または他の通信態様であってもよい。
【0026】
装置530は、データ変換器510、鍵包み機能部520、及び暗号化機能部525を有している点において、図5のサーバ505と類似している。図5のサーバ505と異なり、装置530は鍵導出機能部515を有していないことに留意する必要がある。これは鍵導出が一般にサーバ505だけで必要とされるからである。他の装置と通信する方法があるのならば、一つの装置だけが導出鍵を生成する必要がある。もちろん、安全に導出鍵を送信する方法がなくても双方の装置が正確に同じ導出鍵を生成することが可能であれば、装置530は(鍵包み機能部520を必要としないかもしれないが)鍵導出機能部515を備えることができる。
【0027】
図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は、データ変換及び/またはセキュリティ機能が適用された後に、当該データを出力する。
【0028】
一般に分割器615は、データをデータ変換アルゴリズムのサイズに適合するブロックに分割するが、これは必ずしも必要ではないことに留意する必要がある。したがって、分割器615は、データ変換器510への予想される入力よりも小さいか、あるいは大きいブロックにデータを分割するかもしれない。もし、分割器615がデータ変換器510により予想されるより小さいブロックにデータを分割するなら、それらのブロックを十分大きくするようデータをパッド(pad)することができる。また、もし、分割器615がデータ変換器510により予想されるより大きいブロックにデータを分割するなら、データ変換器510は必要とされるビット数のデータだけに対してデータ変換を行うことができる。例えば、データ変換器510が図10の実施例で説明されるように動作するのであれば、データ変換器510は8バイトの入力を処理する。もし、データ変換器510が8バイト以上の入力を受けとった場合には、データ変換器510は当該入力の8バイトにだけに対応することができる。この8バイトは、データ中のどのような8バイトであってもよい。例えば、最初の8バイト、最後の8バイト、その他所望の組み合わせの8バイトであってもよい。
【0029】
また、どのようなデータも変換ができることにも留意する必要がある。したがって、変換されるデータは、マスター鍵のデータでもよく、その場合には、変換されたマスター鍵が複数の導出鍵を生成するために使用される。また、変換されるデータは、送信前に包まれる導出鍵のデータであってもよい。あるいは、暗号化アルゴリズムの実行により暗号化されるデータであってもよい。当業者であれば、変換され得る他のタイプのデータを理解するであろう。
【0030】
図7A−7Bは、本発明の実施例に係る図6のデータセキュリティ装置を使用するためのフローチャートを示している。図7Aのブロック705において、データが複数のブロックに分割される。ブロック710において、各ブロックはデータ変換を使用して変換される。各ブロックは、必要に応じて、個別にデータ変換をしてもよく、またそのようにしなくてもよい。つまり、いくつかのブロックは変換されるかもしれないし、他のブロックは変換されないかもしれない。ブロック715において、これらのブロックは再構築される。破線720で示されているとおり、ブロック705-715は選択的であり、必要であれば省略することが可能である。
【0031】
図7Bでは、データセキュリティ装置は異なる方法で使用される。ブロック725では、鍵包みアルゴリズムがデータに適用される。ブロック730では、鍵導出アルゴリズムがデータに適用される。そして、ブロック735で、データ暗号化アルゴリズムがデータに適用される。
【0032】
図8は、本発明の実施例に係る図5及び6のデータ変換器の詳細を示している。図8に示されるデータ変換器510の実施例において、データ変換器510は、転置関数(permutation functions)を使用してビット群を転置する(並べ替える)ことにより動作する。データ変換器510は、変換するデータを受信する入力ポート805を有するとともに変換されたデータを出力する分割器810、パッダ(padder)815、パミュータ(permuter)820、及び出力ポート825を有する。分割器810は、転置関数の適用のために入力データをビット群に分割することをつかさどる。実際、分割器810はまず、データを二つのセグメントに分割する。第一のセグメントは、第二のセグメントから分けられたビット群に対する転置関数の適用を制御するために使用されるビットを含む。一つの実施例では、データは64ビットを有する。第一のセグメントは8ビットを有する。そして、第二のセグメントは八つの7ビット群を有する。しかし、当業者であれば、データがどのような長さのものでもよく、当該データは所望の長さの群に分割することができ、異なる群が異なる長さを有するように分割することも可能であることを理解するであろう。最後に、転置群の適用を制御するビットを含む第一のセグメントは、個々の群が常に並べ替えられるのであれば、省略することが可能である。
【0033】
データ変換器510が(データがいつも固定サイズのものであるという前提ではなく)予測できないサイズのデータ受信をサポートしている場合、分割器810はデータを適切にビット群に分割できない可能性がある。パッダ815は、データが適切に分割されるべく適度な長さを有するように、データを追加ビットでパッドするために使用することができる。
【0034】
一つの実施例において、転置関数の適用は第一のセグメントのビットにより制御される。第一のセグメントに対応するビットが設定されていると、ビット群は特定の転置関数を使用して転置される。例えば、対応するビットが1の値を有していれば、それに対応する群は適切な転置関数を使用して転置される。もし、対応するビットが0の値を有していれば、それに対応する群は転置されない。また、他のやり方として、対応するビットが0の値を有していれば、対応するビット群は、同一転置関数(the identity permutation function) を使用して並べ替えられていると判断することができる。また、転置関数にインデックス付けをすることもできる。もし、転置関数の数が第二のセグメントのビット群の数と一致すれば (したがって、第一のセグメントのビット数とも一致するのであれば)、一つのインデックスにより三つの対応する要素を特定することができる。すなわち、第一のセグメントのビット、第二のセグメントのビット群、及び当該ビット群に適用する転置関数を特定することができる。
【0035】
パミュータ820は第二のセグメントのビット群の転置(並べ替え)を制御することをつかさどる。当業者であれば、どのような転置関数でも使用できることを理解するであろうが、一つの実施例において、パミュータ820は下記の表1に示される転置関数に従って転置を行う。
表1
【0036】
表1に示す転置には、いくつかの興味深い特徴がある。一つ目は、それぞれの転置関数は転置関数P1の累乗である。従って、P2 = P1оP1、P3 = P2оP1 (= P1оP1оP1)等となる。P6оP1は再びP1となるため、P7とP8は、P1の前の累乗を繰り返して決定される。これは、データ変換器510が、一つの転置関数の実行のみを知る必要があることを意味する。つまり、残りの転置関数は基本の転置関数から生じる(派生する)。二つ目は、表1の順列は、RSA、DES、AES、SHA−1等の暗号化関数でみられるデータ構造と同様のデータ構造は導入していないということである。
【0037】
転置関数は可逆(反転可能)であるため、表1の転置関数の適用により生じるデータ変換は容易に反転することができる。表2は表1の転置関数の逆の転置関数(反転した転置関数)を示す。
表2
【0038】
従って、表1の転置関数を適用したデータ変換を反転する(逆にする)には、表2の転置関数を適用した第二のデータ変換を適用するだけで足りる。この逆の変換を可能とするために、出力ポート825は転置群とともに第一のセグメントのビットを直接出力する。そうしないと、変換されたデータの受信側がどのビット群が転置されているにかが(並べ替えられているのかが)分からなくなる。
【0039】
表1の転置関数と同様に、一つの基本の関数(この場合P6-1)から、表2の転置関数のすべてを得ることができる。従って、P5-1 = P6-1оP6-1、P4-1 = P5-1оP6-1(= P6-1оP6-1оP6-1)等である。
【0040】
図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バイト長である。しかし、当業者であれば、その入力が異なる長さのものでもよく、また異なる指数的転置関数が適用できることを理解するであろう。
【0041】
上に示される指数的転置関数にはいくつかの利点がある。まず、抽象代数学は、指数とそのモジュラスから1を引いた値が互いに素になるとき、その関数は1とモジュラスの間のすべての可能な値を循環することを示している。これは、その指数的転置関数は転置することを意味する。素数として65537を選択することにより、65537より1つ小さい素数は2の累乗の65536となる。したがって、Aの値にかかわらず(2A+1)は奇数となり、65536に互いに素である。次に、Aが0ならば出力データは変化しない。最後に、図9のデータ変換器510の構造は、図8の転置データ変換器と同様に、RSA、DES、AES、SHA−1などの暗号アルゴリズムに存在しない構造である。
【0042】
もし、データ変換器510が(データがいつも固定サイズのものであると仮定する代わりに)予測できないサイズのデータ受信をサポートしている場合、分割器920はデータを適切なサイズのセグメントに分割できない可能性がある。図8のデータ変換器のパッダ815と同様に、パッダ925は、データが適切な長さに適切に分割されるように、追加ビットによってそのデータをパッドするために使用することができる。
【0043】
図8の転置データ変換器と同様に、図9のデータ変換器510も反転可能である。変換されたデータの反転を可能とするために、出力ポート910はYとともに変更されていないAを出力する。そして、指数的転置を反転させるために、計算機915は、「2A+1 modulo 65536 (すなわち、65537-1)」の逆数(2A+1を65536で割った剰余の逆数)を演算する。この逆数をeとするならば、反転された指数的転置は((Y+l)e mod 65537 ) - 1である。この計算の結果、元のバイトBに戻る。よって、指数的転置は、データ変換の指数を変更して第二のデータ変換を適用することにより簡単に反転する(逆にする)ことができる。
【0044】
以上において図8と9に示された装置について説明したので、次に、それらの使用方法を説明する。図10A−10Cは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示している。図10Aのブロック1005では、データが受信される。ブロック1010では、データが二つのセグメントに分割される(ビット群の転置が第一のセグメントのビットによって制御されると仮定する)。ブロック1015では、データ変換器が第二のデータセグメントを均等に群に分割できるかどうかを調べる。もし均等に分割できなければ、ブロック1020において、第二のセグメントを均等なサイズの群に分割するのをサポートするためにデータがパッドされる。(これは、データ変換器が、入力データを均等なサイズの群へ分割しようとしていることを前提とする。もしデータ変換器が、入力データを均等なサイズの群へ分割する必要がないのであれば、ブロック1015と1020は省略できる。)
【0045】
ブロック1025(図10B)では、第二のセグメントは複数のビット群に分割される。上述のとおり、ブロック1025では、第二のセグメントを等しいサイズの群に分割すると説明したが、データ変換器がサポートしていれば異なるサイズの群に分割することも可能である。ブロック1030では、各群が第一のセグメントのビットと関連付けられる。ブロック1035では、基本の転置関数が定義される。ブロック1040では、他の転置関数が基本の転置関数の累乗として定義される。(しかし、他の転置関数が基本の転置関数の累乗である必要はない。各転置関数は互いに無関係であってもよく、その場合ブロック1035と1040は変更または省略可能である。) ブロック1045では、これらの転置関数にインデックス付けがなされる。
【0046】
ブロック1050(図10C)では、データ変換器は、(第二のセグメントのビット群に対する転置関数の適用を制御する)第一のセグメントに調べられていないビットがあるかどうかを調べる。もし調べられていないビットがあれば、ブロック1055において、データ変換器はビットが設定されているかどうかを調べる。もしビットが設定されていれば、ブロック1060で、ビットによりインデックス付けがされた転置関数が特定され、そしてブロック1065で、特定された転置関数が関連する転置群に適用される。制御はブロック1050に戻り、第一のセグメントでさらに調べられていないビットがあるかどうかを調べる。結局、第一のセグメントのすべてのビットが調べられ、そしてブロック1070で、データ変換器は第一のセグメント及び転置されたビット群からデータ変換(変換されたデータ)を構築する。
【0047】
図11は、本発明の実施例に係る図9のデータ変換器を使用するためのフローチャートを示している。ブロック1105では、データ変換器はデータを受信する。ブロック1110では、データ変換器はデータを二つのセグメントに分割する。ブロック1115では、第一のセグメントが使用され、選択されたモジュラスに対して素である指数(乗数)を生成する。ブロック1120では、第二のセグメントが演算された指数に乗じられる。ブロック1125では、その指数を乗じた結果を前記モジュラスで割った剰余が演算される。最後にブロック1130では、第一のセグメントと当該剰余からデータ変換(変換されたデータ)が構築される。
【0048】
図5を参照して上述したとおり、いくつかの既存の鍵導出機能が存在している。しかし、図4を参照して上述したとおり、これらの既存の存在する鍵導出機能はセキュアハッシュ関数と汎用ハッシュ関数の双方の利点を備えていない。図12はセキュアハッシュ関数と汎用ハッシュ関数の利点を組み合わせた一つの鍵導出機能部の詳細を示している。図12において、鍵導出機能部515は、鍵導出機能部への入力及び導出鍵の出力のそれぞれに使用される入力ポート1205と出力ポート1210を含む。また、鍵導出機能部515は、分割器1215、結合器1220、ハッシュ部(ハッシャ/hasher)1225、決定部(determiner)1230、計算機1235及びビットセレクタ1240を含む。
【0049】
分割器1215はマスター鍵を二つの部分に分割する。結合器はマスター鍵の第一の部分をカウンタと結合し、入力データの一部とする。マスター鍵をカウンタに結合する一つの方法は、マスター鍵の第一の部分をどのようなサイズ(例えば、4バイト)にもなり得るカウンタと連結することである。この連結はどちらの順序でも行うことができる。つまり、マスター鍵の第一の部分及びカウンタのどちらが組み合わせの先になってもよい。そして、この組み合わせの結果がハッシュ関数1225を使用してハッシュされ、セキュアハッシュ関数となる。(この実施例において、このハッシュ関数1225は図4のシーケンス405のセキュアハッシュアルゴリズム110に取って代わる。)
【0050】
決定部1230は、マスター鍵の第二の部分から二つの数を決定するために使用される。一つの実施例において、これらの二つの数aとbは、マスター鍵の第二の部分の最初と最後の32バイトを素数pで割った剰余として決定される。このようにaとbを選択するためには、マスター鍵の第二の部分が64バイト長となるのに十分な長さを有するマスター鍵が要求される。しかし、当業者であればマスター鍵が必ずしもこの長さである必要はないことを理解するであろう。例えば、aとbをpで割った剰余の計算でaとbのビット数が十分に変わるのであれば、aとbはそれらの数の元のビットがマスター鍵の第二の部分の中から重複するような態様で選択されてもよい。
【0051】
当業者であれば、他の素数も代わりに選択され得ることを理解するであろうが、素数の特定の選択は、p192 = 2192-264-1とすることができる。計算機1235は次に、汎用ハッシュ関数のax+b mod p (ここでxはハッシュ部1225の結果)を実行することができる。(この汎用ハッシュ関数は図4のシーケンス405の汎用ハッシュアルゴリズム305に取って代わる。) 最終的にビットセレクタ1240は、後に出力され得る導出鍵の汎用ハッシュ関数の結果からビットを選択することができる。例えば、ビットセレクタ1240は、導出鍵として汎用ハッシュ関数の結果の最下位桁ビットを選ぶことができる。
【0052】
図13は、本発明の他の実施例に係る図5と6の鍵導出機能部の詳細を示している。図4のシーケンス405に係る鍵導出機能部を実行する図12に示された本発明の実施例と対照的に、図13の鍵導出機能部515は、セキュアハッシュアルゴリズムの後で汎用ハッシュアルゴリズムを適用しない。代わりに、図13に示される本発明の実施例は、セキュアハッシュアルゴリズムへの入力に対して線形マッピング(a liner mapping)を適用する。
【0053】
図12の鍵導出機能部515と同様に、図13の鍵導出機能部515は、入力ポート1305と出力ポート1310を有する。入力ポート1305は、入力としてマスター鍵を受信し、また出力ポート1310は、導出鍵を出力する。また、図13の鍵導出機能部515は、分割器1315、エンコーダ1320、結合器1325、ハッシュ部(ハッシャ/hasher)1330、及びビットセレクタ1335を有している。
【0054】
分割器1315は、図12の分割器1215と同様に、マスター鍵を二つの部分に分割する。次に、エンコーダ1320はカウンタを符号化する。エンコーダ1320は所望の態様で動作できる。例えば、エンコーダ1320はカウンタを繰り返し、マスター鍵の第一の部分の長さまで拡張することにより動作できる。したがって、例えばマスター鍵の第一の部分が64バイト長でカウンタが4バイトを使用するのであれば、エンコーダ1320は、この4バイトを16回繰り返してカウンタを64バイト長まで拡張することができる。次に、結合器1325は、マスター鍵の各部分にそれぞれ符号化されたカウンタを結合することができる。例えば、結合器1325は、マスター鍵の部分と符号化されたカウンタをビットレベルで結合することができる。一つの実施例では、マスター鍵の部分と符号化されたカウンタを結合するためにXORバイナリ関数(XOR binary function)を使用する。しかし、当業者であれば、結合器1325は、マスター鍵の部分と符号化されたカウンタを結合するために、どのようなビット単位の関数、あるいは実際にどのような関数であっても使用できることを理解するであろう。結合器1325は、次に、(符号化されたカウンタとの結合後)マスター鍵の二つの部分を再び結合することができる。例えば、二つの部分は一緒に連結することができる(しかし、当業者であれば、他の方法でも結合器1325がマスター鍵の二つの部分を再結合することができることを理解するであろう)。また、結合器1325はマスター鍵の再結合された部分を符号化されたカウンタともう一度連結することもできる。
【0055】
ハッシュ部1330は、結合器1325の出力を得てハッシュする。ハッシュ1330部は、セキュアハッシュ関数となり得る。そしてビットセレクタ1335は、図12のビットセレクタ1240と同様に、ハッシュ部1330の結果から導出鍵としてのビットを選択できる。
【0056】
以上において図12と13に示された装置について説明したので、次に、それらの使用方法を説明する。図14は、本発明の実施例に係る図12の鍵導出機能部を使用するためのフローチャートを示している。ブロック1405では、マスター鍵は複数のセグメントに分割される。ブロック1410では、第一のセグメントが符号化されたカウンタに結合される。図12を参照して上述したとおり、この結合は第一のセグメントと符号化されたカウンタとの連結となり得る。ブロック1415では、結合された第一のセグメントがハッシュされる。
【0057】
ブロック1420では、二つの数が第二のセグメントから決定される。図12を参照して上述したとおり、これらの二つの数がモジュラスに対して決定され得る。ブロック1425では、汎用ハッシュ関数が、二つの決定された数とモジュラスを使用して定義される。ブロック1430では、ハッシュの結果が汎用ハッシュ関数に適用される。ブロック1435では、当該汎用ハッシュの結果から導出鍵としてビットが選ばれる。
【0058】
図15は、本発明の実施例に係る図13の鍵導出機能部を使用するためのフローチャートを示している。ブロック1505では、マスター鍵が複数のセグメントに分割される。ブロック1510では、各セグメントが符号化されたカウンタに結合される。図13を参照して上述したとおり、これは、符号化されたカウンタとともに、各セグメントに個別にXORビット関数を適用して行うことができる。ブロック1515では、結合されたブロックが再度結合されて、(図13を参照して上述したとおり)再び符号化されたカウンタと結合させることができる。ブロック1520では、この変更されたマスター鍵が次にハッシュされ、そしてブロック1525で、ハッシュの結果から導出鍵としてのビットが選択される。
【0059】
図12−15に示される鍵導出機能部は二つの例にすぎない。セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの利点を組み合わせた他の鍵導出機能部も使用することができる。図16は本発明の実施例に係る図5のデータセキュリティ装置における他の鍵導出機能部のフローチャートを示す。ブロック1605では、マスター鍵が複数のセグメントに分割される。ブロック1610では、セグメントがデータ変換を使用して変換される。セグメントは一般にデータ変換器が使用できるよりも大きくなるので、セグメントのサブセットだけが使用される。例えば、データ変換で必要とされる最初のバイトのみが使用される。ブロック1615では、これらの変換されたセグメントは結合され、符号化されたカウンタに結合される。例えば、これらのセグメント及び符号化されたカウンタは一緒に連結され得る。ブロック1620では、変換された結果がハッシュされ、そしてブロック1625で、ハッシュされた結果から導出鍵としてのビットが選択される。
【0060】
図12−13の装置及び図14−16のフローチャートは、マスター鍵から単一の導出鍵が生成されるのを示しているが、本発明の実施例は、繰り返し複数の導出鍵を生成するために容易に適用することができることに留意する必要がある。これらの追加的な導出鍵は数多くの方法により生成することができる。例えば、図14−16のフローチャートはすべてカウンタを含む。それぞれの追加的な導出鍵のために、カウンタを増加させることができる。従って、第一の鍵を導出するためにカウンタは値1を使用し、第二の鍵を導出するためにカウンタは値2を使用することなどが可能である。
【0061】
他の実施例において、導出鍵のビットを選択するために図12のビットセレクタ1240または図13のビットセレクタ1335を使用するよりむしろ、すべての導出鍵に対して結合された結果からビットを選択すると一度で十分な結果を生成することができる。例えば、それぞれkビット長のu鍵を希望すると仮定し、さらに、図12−13の装置及び/または図14−16のフローチャートの結果が、ビット選択の前にlビットを作ると仮定する。もし、鍵導出機能部がm回適用されて、m*l ≧ u*kとすれば、u導出鍵はすべてm*lの結果のビットと同時に選ばれる。例えば、m*lの結果のビットはすべて一緒に連結されるかもしれない。あるいは、すべてのu鍵が選択されるまで、第一の鍵は、第一のkビットとして選択されるかもしれず、第二の鍵は第二のkビットとして選択されるかもしれない。
【0062】
以下に、本発明の一定の態様を実施する適切なマシンの簡単な一般的な説明をする。通常、マシンは、例えばプロセッサ、メモリ(例えば、ランダムアクセスメモリー(RAM)やリードオンリーメモリ(ROM)や他の状態保存媒体)、記憶装置、映像インターフェース及び出力/入力インターフェースポートなどが取付けられるシステムバスを含む。マシンは少なくとも一部分において、キーボード、マウスなどの従来の入力デバイスからの入力及び別のマシンから受けた指示、バーチャルリアリティ(VR)環境、生体フィードバックまたは他の入力信号との情報交換によって制御することが可能である。
【0063】
本件明細書で使用されているマシン(machine)という語は、単一のマシンまたは、一緒に作動するマシンやデバイスと結合するコミュニケーションシステムを広く包含することを意図する。典型的なマシンは、自動車、列車、タクシーなどの個人的または公共の交通機関といった移動手段に加えて、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、携帯端末、電話、タブレットなどのコンピュータデバイスを含む。
【0064】
また、マシンは、プログラマブルまたは非プログラマブル論理デバイスやアレイのような内蔵コントローラやASIC(Application Specific Integrated Circuits)や内蔵コンピュータやスマートカードなどを含んでもよい。また、マシンは、ネットワーク・インターフェース、モデムまたは他のコミュニケーションの接続を経由して、一つまたは複数のリモートマシンへの一つまたは複数の接続を利用してもよい。さらに、マシンは、イントラネット、インターネット、ローカル・エリア・ネットワーク、広域ネットワークなどのような物理的、及び/または、論理的なネットワークを通して相互接続され得る。当業者であれば、ネットワークコミュニケーションが、無線周波数(RF)、衛星、電子レンジ、電気電子技術学会(IEEE)、802.11、ブルートゥース、光学の、赤外線のケーブル、レーザなどを含む様々な有線及び/または無線の短距離または長距離キャリアとプロトコルを利用できることを理解するであろう。
【0065】
本発明は、機能、手順、データ構造、アプリケーションプログラムなどを含む関連データを参照するか、あるいはそれらとの関連で説明することができる。これらの関連データは、マシンによりアクセスされたとき、当該マシンにタスクを実行させるか、あるいは抽象データ型か低レベルのハードウェアコンテキストを定義することになる。関連データは、例えば、RAM、ROMなどの揮発性及び/または非揮発性メモリ、またはハードドライブ、フロッピーディスク、光記憶装置、テープ、フラッシュメモリ、メモリースティック、デジタルビデオディスク、生物学的記憶装置などを含む他の記憶装置とそれらの関連記憶媒体に格納することができる。また、関連データは、物理的及び/または論理的なネットワークを含む通信環境で、パケット、シリアルデータ、並列データ、伝播された信号などの形で送信され、圧縮または暗号化された形式で使用できる。また、関連データは、分散環境で使用され、マシンのアクセスのために、局所的及び/または遠隔的に格納され得る。
【0066】
図示された実施例に基づいて本発明の原理を記載しかつ説明したが、図示された実施例が係る原理から逸脱することなくその構成と詳細において変更することができることを理解されたい。そして、以上の説明は特定の実施例に焦点を合わせたが、他の構成も考えることができる。特に、「一つの実施例において」という表現、または同様の表現がここで使用されるが、これらの語句は一般に参考実施例となり得ることを意味し、本発明を特定の実施例の構成に制限することは意図していない。ここに使用されるように、これらの語句は、他の実施例と結合可能な同一または異なる実施例を表してもよい。
【0067】
結論として、ここに説明された実施例へ多種多様に置き換えることができることを鑑みると、この詳細な説明及び添付図面は例示のみを意図しており、発明の範囲を制限するものとして捕らえるべきではない。したがって、本発明として要求されていることは、クレームとその同等物の範囲及び精神を逸脱しないようなすべての変更を含むものである。
【図面の簡単な説明】
【0068】
【図1】図1は、マスター鍵から複数の導出鍵を生成するセキュアハッシュアルゴリズムの一般的な実行を示す。
【図2】図2は、図1のセキュアハッシュアルゴリズムの典型的な動作を示す。
【図3】図3は、汎用ハッシュアルゴリズムの典型的な動作を示す。
【図4】図4は、本発明の実施例に係るより安全な導出鍵を生成するために図2のセキュアハッシュアルゴリズムと図3の汎用ハッシュアルゴリズムを組み合わす異なる方法を示す。
【図5】図5は、本発明の実施例に係る、データ変換、鍵生成、鍵包み、及びデータ暗号化を実行可能とするサーバと装置を示す。
【図6】図6は、本発明の実施例に係る、鍵包み、鍵導出、または暗号化機能と組み合わせてデータ変換器を使用することにより安全性を高めるよう動作可能なデータセキュリティ装置を示す。
【図7A】図7Aは、本発明の実施例に係る図6のデータセキュリティ装置を使用するためのフローチャートを示す。
【図7B】図7Bは、本発明の実施例に係る図6のデータセキュリティ装置を使用するためのフローチャートを示す(図7Aの続き)。
【図8】図8は、本発明の実施例に係る図5及び6のデータ変換器の詳細を示す。
【図9】図9は、本発明の他の実施例に係る図5及び6のデータ変換器の詳細を示す。
【図10A】図10Aは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示す。
【図10B】図10Bは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示す(図10Aの続き)。
【図10C】図10Cは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示す(図10Bの続き)。
【図11】図11は、本発明の実施例に係る図9のデータ変換器を使用するためのフローチャートを示す。
【図12】図12は、本発明の実施例に係る図5及び6の鍵導出機能部の詳細を示す。
【図13】図13は、本発明の他の実施例に係る図5及び6の鍵導出機能部の詳細を示す。
【図14】図14は、本発明の実施例に係る図12の鍵導出機能部を使用するためのフローチャートを示す。
【図15】図15は、本発明の実施例に係る図13の鍵導出機能部を使用するためのフローチャートを示す。
【図16】図16は、本発明の実施例に係る図5のデータセキュリティ装置で鍵導出機能部を使用するためのフローチャートを示す。
【技術分野】
【0001】
本発明は、データセキュリティに関し、より詳しくはセキュリティ強化のための転置データ変換(permutation data transform)に関する。
【背景技術】
【0002】
何千年にわたって、人類は秘密を守ることが必要であると認識してきた。しかし、歴史の大部分において秘密を守る技法はゆっくりと発達した。ジュリアス・シーザー自身によって使われたとされるシーザーシフト暗号(The Caesar shift cipher)は、アルファベットの文字を先にずらしてメッセージを隠すものであった。したがって、“A”は“D”、“B”は“E”などと置き換えられた。これは一般に非常に弱い暗号化と考えられるのだが、何世紀も後になるまでより優れた暗号化アルゴリズムはほとんど開発されてこなかった。
【0003】
暗号化は二度の世界大戦の間熱心な研究の焦点となった。敵が解読できないコードの開発と、敵の暗号化メールの解読方法の習得に多くの取り組みがなされた。暗号化を助ける機械装置も設計された。ドイツのエニグママシンはこの時代の唯一の機械的な暗号機ではないが最も有名なものの一つである。
【0004】
そしてコンピュータの到来により暗号化の使用の環境は大きく変わった。もはや複雑な機械や、何時間もの手作業を必要とせずに、コンピュータにより高速かつわずかな費用でメッセージの暗号化や複合化が可能となった。また、コンピュータの基礎をなす数学の理解によっても新しい暗号化アルゴリズムが導入された。ディフィー(Diffie)とヘルマン(Hellman)の研究は、「素数を法とする指数演算(exponential arithmetic modulo primes)」を使用して秘密鍵を交換する方法を導いた。これは、公開情報で生成された共有鍵を計算することは計算量的に実行不可能であるという事実に基づくものである。また、よく知られる(発明者のR.Rivest, A.Shamir及び L.Adlemanにちなんで名付けられた)RSAアルゴリズムは、暗号化されたデータを復号化するために大きな数を因数分解することもまた計算量的に実行不可能であるという事実に基づくものである。ディフィーとヘルマンにより研究されたアルゴリズムとRSAアルゴリズムは論理的には解読できるが、これらのアルゴリズムの解読のためには未解決の数学的問題を解決しなければならない。(余談として、RSAアルゴリズムはまた、復号化と暗号化に異なる鍵を使用する最初の公開鍵暗号方式の一つであった。これによって安全性を損なうことなく一つの鍵を公に配送することが可能となった。)
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、どのような暗号化アルゴリズムにも永久に解けないものはない。例えば、DES(データ暗号化標準)は元々1976年に発表された。政府は当初その耐用年数を10年と見積もっていた。DESは当初見積もられた耐用年数よりはるかに長く存続しているが、その比較的短い鍵ゆえにDESは、理想には劣るものと考えられている。DESは、政府基準としてはすでにAES(次世代暗号標準)に取って代わられているが、未だに広く使用され続けている。DESに対し様々な改良が行われているが、これらの改良によってもDESを永久に安全なものとすることはできない。結局、DESは一般に安全でないと考えられるであろう。よって既存の暗号化アルゴリズムの安全性を高める方法は依然として必要とされる。
【発明を実施するための最良の形態】
【0006】
一つの実施例において、本発明は転置データ変換の方法と装置である。当該データは二つのセグメントに分割される。第一のセグメントのビットは、第ニのセグメントのビット群への転置関数の適用を制御する。変換されたデータは、第一のセグメントと第二のセグメントの転置群(転置されたビット群)を含む。
【0007】
第二の実施例において、本発明は指数データ変換の方法と装置である。当該データは二つのセグメントに分割される。第二のセグメントは、第一のセグメントの関数に累乗される。そしてモジュラスがその結果に適用される。変換されたデータは、第一のセグメントとモジュラスを法とした剰余を含む。
【0008】
第三の実施例において、本発明はマスター鍵から鍵を導出する方法と装置である。一つの実施例において、マスター鍵の一部がハッシュされ、マスター鍵の別の部分から二つの数が導出される。この二つの数を使用した汎用ハッシュ関数がハッシュの結果に適用され、その結果から導出鍵としてのビットが選択される。
【0009】
第四の実施例において、汎用ハッシュ関数が符号化されたカウンタを使用してマスター鍵の一部に適用され、その結果が結合さる。この結合された結果はハッシュされ、導出鍵としてのビットが選択される。
【0010】
本発明に関する上述したまたはそれ以外の特徴、目的及び利点は、下記に記載される説明及び添付の図面により、より容易に理解されるであろう。
【0011】
図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と完全に無関係なものとすることができる。
【0012】
図2は図1のセキュアハッシュアルゴリズムの典型的な動作を示している。図示するように、ハッシュアルゴリズムは、入力を複数のハッシュ値へマッピングする。図2において、ハッシュ値は0と何らかの値を示すnとの間で変化する。ハッシュアルゴリズムの出力はバスケットと呼ぶことができる。図2はバスケット205、210、215等からバスケット220までを示している。
【0013】
入力を複数のバスケットへマッピングするのに所望のマッピング方法を使用することができる汎用ハッシュアルゴリズム(general hash algorism)と異なり、セキュアハッシュアルゴリズムは予測不可能である(時には、「衝突なし」とも呼ばれる)。一つの入力が特定の出力を生じることを知っていても、同じ出力を生じる他の入力をどのように見つけるかは分からない。例えば、入力「5」がバスケット215にマッピングされることを知っていても、同じくバスケット215にマッピングされる他の入力値は分からない。実際、いくつかの特定のハッシュアルゴリズムでは、バスケット215にマッピングされる入力は他にないかもしれない。このことによりセキュアハッシュアルゴリズム110は、所望の出力にマッピングされる他の入力を見つける容易な方法がないという意味で「安全」となる。ある特定の出力にマッピングされる他の入力を見つける唯一の方法は、その所望の出力にマッピングされる他の値を発見することを期待して、異なるいくつもの入力を試してみることである。
【0014】
セキュアハッシュアルゴリズムの弱点は、バスケットがすべて等しくマッピングされない可能性があるということである。つまり、バスケット215にマッピングされるのはただ一つの入力かもしれないが、バスケット205へマッピングされるのは100の入力があるかもしれない。また、上述したように、いくつかのバスケットは、そこにマッピングされる入力がないかもしれない。
【0015】
汎用ハッシュアルゴリズムはセキュアハッシュアルゴリズムが欠いている分配の特徴を備えている。図3に示すように、汎用ハッシュアルゴリズム305もバスケット310、315、320、325まで入力をマッピングする。しかし、図2のセキュアハッシュアルゴリズムと異なり、汎用ハッシュアルゴリズム305はその入力を複数のバスケットに均等に分配する。したがって、バスケット310は、バスケット315、320、325などと同じ頻度でマッピングされる。
【0016】
汎用ハッシュアルゴリズムの弱点は、同じバスケットにマッピングされる他の入力を見つけるのが一般に容易であることである。例えば、入力の最後の桁に対応するバスケットを選択して0〜9に付番された10のバスケットにマッピングする汎用ハッシュアルゴリズムがあるとする。このハッシュアルゴリズムがすべてのバスケットに均等にその出力を分配することは容易に分かる。しかし、所定の入力として同じバスケットにマッピングされる他の入力をどのようにして見つけるかということも容易である。例えば、1、11、21、31などすべてがバスケット315にマッピングされる。
【0017】
したがって、セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方にメリットとデメリットがあることを理解すべきである。安全性の観点から最適な解決策はセキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの双方のメリットを何らかの方法で組み合わせることである。図4は、本発明の実施例に従って、図1及び2のセキュアハッシュアルゴリズムと図3の汎用ハッシュアルゴリズムをいかに組み合わせてより安全な導出鍵を生成することができるかを示している。シーケンス405においては、マスター鍵105は、最初にセキュアハッシュアルゴリズム110に送られる。当該セキュアハッシュアルゴリズム110の結果は次に、汎用ハッシュアルゴリズム305への入力として使用され、その結果から導出鍵115-1が生成される。
【0018】
シーケンス405は、セキュアハッシュアルゴリズム110が汎用ハッシュアルゴリズム305より先に使用される状況を示しているのに対し、シーケンス410はこの順番を逆にしている。したがって、マスター鍵105は汎用ハッシュアルゴリズム305への入力として使用される。汎用ハッシュアルゴリズム305の結果は次に、セキュアハッシュアルゴリズム110への入力として使用され、その結果から導出鍵115-1が生成され得る。
【0019】
セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305は所望の構成(form)で実行することができる。例えば、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305は、多様なRead Only Memory(ROM)やファームウェアにおいて実行ができ、あるいは記憶装置に格納されたソフトウェアとして実行可能であり、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305が汎用プロセッサにより実行されるいくつかの例が提供される。これらの実行には専用機器における実行を含めることもできる。例えば、プロセッサにセキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305を実行するような特別な設計をすることも可能である。したがって、他の例として、セキュアハッシュアルゴリズム110か汎用ハッシュアルゴリズム305のいずれかを実行するように計算機を設計することもできる。当業者であれば、セキュアハッシュアルゴリズム110と汎用ハッシュアルゴリズム305の両方を実行することができる他の方法を理解するであろう。
【0020】
図5は、本発明の実施例に係るデータ変換、鍵生成、鍵包み(key wrapping)、及びデータ暗号化を実行できるサーバと装置を示す。図5にはサーバ505が示されている。サーバ505は、データ変換器510、鍵導出機能(以下、「鍵導出機能部」とする)515、鍵包み機能(以下、「鍵包み機能部」とする)520、及び暗号化機能(以下、「暗号化機能部」とする)525を含む。データ変換器510はデータ変換の実行をつかさどる。図8−9、10A−10C、及び11を参照して下記に説明するように、データ変換は本質的に安全でないが、符号化されたデータにスクランブルをかけることにより当該データの複雑さが増し、それにより暗号解読がより難しくなる。例えば、データ変換により、符号化されたデータ(変換はされてないデータ)のパターンにマスクをかけることができる。
【0021】
鍵導出機能部515はデータの暗号化に使用する鍵を導出することをつかさどる。どのような鍵でもデータの暗号化に使用することができるのは確かであるが、特定の鍵を使用すればするほどその鍵が暗号解読で発見される可能性は高くなる。そのため、いくつかのシステムでは、マスター鍵を利用して複数の導出鍵を生成し、これらの導出鍵がデータを暗号化するのに使用される。新しい導出鍵は必要に応じて生成することができる。導出鍵だけを使用して暗号化されたデータは、そのような新しい導出鍵で暗号化されたメッセージを解読するのに役に立たない。いくつかの既存の鍵導出機能が存在しており、それらの中から三つの新しい鍵導出機能を図12−13及び15−16を参照して以下において説明する。
【0022】
鍵包み機能部520は送信のために鍵を包むことをつかさどる。鍵包みは一般に送信のために鍵を暗号化することにより行われる。一つの例として、鍵を暗号化する(すなわち、包む)のにRSAを使用することができる。現時点で十分に安全性が確保された鍵は、安全ではない接続上であっても、他のマシンに送信することができ、そこで鍵の包みを解いて(復号化して)、データの暗号化/復号化に使用することができる。
【0023】
通常は、包まれた鍵は、秘密鍵(private key)あるいは対称暗号方式(symmetric, cryptosystem)で使用される鍵であり、それは公開鍵(public key)あるいは非対称暗号方式(asymmetric, cryptosystem)を使って包まれる。秘密鍵暗号方式は、暗号化及び復号化に異なる鍵を使用する公開鍵暗号方式とは反対に、暗号化及び復号化に同じ鍵を使用するものである。例えば、DESとAESは秘密鍵暗号方式で、RSAは公開鍵暗号方式である。公開鍵暗号方式は安全に鍵を配布(配信)することができるが(第三者が秘密のメッセージを復号化するのに鍵を傍受して使用できるという心配が全くない)、公開鍵暗号方式は多くの場合、秘密鍵暗号方式と比べて処理に時間がかかり、その結果メッセージが長くなる。公開鍵暗号方式を使用して鍵を包むということは、サーバ505が包まれた鍵が送られる装置の公開鍵を知る必要があるのは明らかである。しかし、当業者であれば、鍵を包むのにいかなる暗号アルゴリズムも使用でき、包まれる鍵はいかなる種類の暗号方式にも対応できることを理解するであろう。
【0024】
暗号化機能部525はデータを暗号化するために使用される。通常は、データは鍵包み機能部520で包まれる鍵を使用して暗号化されるが、当業者であればどんな鍵もデータを暗号化することに使用でき、そのデータは暗号化を希望するどんなデータでもよく、また所望のどんな暗号化機能を使用することができることを理解するであろう。
【0025】
また、図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の通信態様はどのような通信態様であってもよいことを理解するであろう。例えば、有線、無線または他の通信態様であってもよい。
【0026】
装置530は、データ変換器510、鍵包み機能部520、及び暗号化機能部525を有している点において、図5のサーバ505と類似している。図5のサーバ505と異なり、装置530は鍵導出機能部515を有していないことに留意する必要がある。これは鍵導出が一般にサーバ505だけで必要とされるからである。他の装置と通信する方法があるのならば、一つの装置だけが導出鍵を生成する必要がある。もちろん、安全に導出鍵を送信する方法がなくても双方の装置が正確に同じ導出鍵を生成することが可能であれば、装置530は(鍵包み機能部520を必要としないかもしれないが)鍵導出機能部515を備えることができる。
【0027】
図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は、データ変換及び/またはセキュリティ機能が適用された後に、当該データを出力する。
【0028】
一般に分割器615は、データをデータ変換アルゴリズムのサイズに適合するブロックに分割するが、これは必ずしも必要ではないことに留意する必要がある。したがって、分割器615は、データ変換器510への予想される入力よりも小さいか、あるいは大きいブロックにデータを分割するかもしれない。もし、分割器615がデータ変換器510により予想されるより小さいブロックにデータを分割するなら、それらのブロックを十分大きくするようデータをパッド(pad)することができる。また、もし、分割器615がデータ変換器510により予想されるより大きいブロックにデータを分割するなら、データ変換器510は必要とされるビット数のデータだけに対してデータ変換を行うことができる。例えば、データ変換器510が図10の実施例で説明されるように動作するのであれば、データ変換器510は8バイトの入力を処理する。もし、データ変換器510が8バイト以上の入力を受けとった場合には、データ変換器510は当該入力の8バイトにだけに対応することができる。この8バイトは、データ中のどのような8バイトであってもよい。例えば、最初の8バイト、最後の8バイト、その他所望の組み合わせの8バイトであってもよい。
【0029】
また、どのようなデータも変換ができることにも留意する必要がある。したがって、変換されるデータは、マスター鍵のデータでもよく、その場合には、変換されたマスター鍵が複数の導出鍵を生成するために使用される。また、変換されるデータは、送信前に包まれる導出鍵のデータであってもよい。あるいは、暗号化アルゴリズムの実行により暗号化されるデータであってもよい。当業者であれば、変換され得る他のタイプのデータを理解するであろう。
【0030】
図7A−7Bは、本発明の実施例に係る図6のデータセキュリティ装置を使用するためのフローチャートを示している。図7Aのブロック705において、データが複数のブロックに分割される。ブロック710において、各ブロックはデータ変換を使用して変換される。各ブロックは、必要に応じて、個別にデータ変換をしてもよく、またそのようにしなくてもよい。つまり、いくつかのブロックは変換されるかもしれないし、他のブロックは変換されないかもしれない。ブロック715において、これらのブロックは再構築される。破線720で示されているとおり、ブロック705-715は選択的であり、必要であれば省略することが可能である。
【0031】
図7Bでは、データセキュリティ装置は異なる方法で使用される。ブロック725では、鍵包みアルゴリズムがデータに適用される。ブロック730では、鍵導出アルゴリズムがデータに適用される。そして、ブロック735で、データ暗号化アルゴリズムがデータに適用される。
【0032】
図8は、本発明の実施例に係る図5及び6のデータ変換器の詳細を示している。図8に示されるデータ変換器510の実施例において、データ変換器510は、転置関数(permutation functions)を使用してビット群を転置する(並べ替える)ことにより動作する。データ変換器510は、変換するデータを受信する入力ポート805を有するとともに変換されたデータを出力する分割器810、パッダ(padder)815、パミュータ(permuter)820、及び出力ポート825を有する。分割器810は、転置関数の適用のために入力データをビット群に分割することをつかさどる。実際、分割器810はまず、データを二つのセグメントに分割する。第一のセグメントは、第二のセグメントから分けられたビット群に対する転置関数の適用を制御するために使用されるビットを含む。一つの実施例では、データは64ビットを有する。第一のセグメントは8ビットを有する。そして、第二のセグメントは八つの7ビット群を有する。しかし、当業者であれば、データがどのような長さのものでもよく、当該データは所望の長さの群に分割することができ、異なる群が異なる長さを有するように分割することも可能であることを理解するであろう。最後に、転置群の適用を制御するビットを含む第一のセグメントは、個々の群が常に並べ替えられるのであれば、省略することが可能である。
【0033】
データ変換器510が(データがいつも固定サイズのものであるという前提ではなく)予測できないサイズのデータ受信をサポートしている場合、分割器810はデータを適切にビット群に分割できない可能性がある。パッダ815は、データが適切に分割されるべく適度な長さを有するように、データを追加ビットでパッドするために使用することができる。
【0034】
一つの実施例において、転置関数の適用は第一のセグメントのビットにより制御される。第一のセグメントに対応するビットが設定されていると、ビット群は特定の転置関数を使用して転置される。例えば、対応するビットが1の値を有していれば、それに対応する群は適切な転置関数を使用して転置される。もし、対応するビットが0の値を有していれば、それに対応する群は転置されない。また、他のやり方として、対応するビットが0の値を有していれば、対応するビット群は、同一転置関数(the identity permutation function) を使用して並べ替えられていると判断することができる。また、転置関数にインデックス付けをすることもできる。もし、転置関数の数が第二のセグメントのビット群の数と一致すれば (したがって、第一のセグメントのビット数とも一致するのであれば)、一つのインデックスにより三つの対応する要素を特定することができる。すなわち、第一のセグメントのビット、第二のセグメントのビット群、及び当該ビット群に適用する転置関数を特定することができる。
【0035】
パミュータ820は第二のセグメントのビット群の転置(並べ替え)を制御することをつかさどる。当業者であれば、どのような転置関数でも使用できることを理解するであろうが、一つの実施例において、パミュータ820は下記の表1に示される転置関数に従って転置を行う。
表1
【0036】
表1に示す転置には、いくつかの興味深い特徴がある。一つ目は、それぞれの転置関数は転置関数P1の累乗である。従って、P2 = P1оP1、P3 = P2оP1 (= P1оP1оP1)等となる。P6оP1は再びP1となるため、P7とP8は、P1の前の累乗を繰り返して決定される。これは、データ変換器510が、一つの転置関数の実行のみを知る必要があることを意味する。つまり、残りの転置関数は基本の転置関数から生じる(派生する)。二つ目は、表1の順列は、RSA、DES、AES、SHA−1等の暗号化関数でみられるデータ構造と同様のデータ構造は導入していないということである。
【0037】
転置関数は可逆(反転可能)であるため、表1の転置関数の適用により生じるデータ変換は容易に反転することができる。表2は表1の転置関数の逆の転置関数(反転した転置関数)を示す。
表2
【0038】
従って、表1の転置関数を適用したデータ変換を反転する(逆にする)には、表2の転置関数を適用した第二のデータ変換を適用するだけで足りる。この逆の変換を可能とするために、出力ポート825は転置群とともに第一のセグメントのビットを直接出力する。そうしないと、変換されたデータの受信側がどのビット群が転置されているにかが(並べ替えられているのかが)分からなくなる。
【0039】
表1の転置関数と同様に、一つの基本の関数(この場合P6-1)から、表2の転置関数のすべてを得ることができる。従って、P5-1 = P6-1оP6-1、P4-1 = P5-1оP6-1(= P6-1оP6-1оP6-1)等である。
【0040】
図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バイト長である。しかし、当業者であれば、その入力が異なる長さのものでもよく、また異なる指数的転置関数が適用できることを理解するであろう。
【0041】
上に示される指数的転置関数にはいくつかの利点がある。まず、抽象代数学は、指数とそのモジュラスから1を引いた値が互いに素になるとき、その関数は1とモジュラスの間のすべての可能な値を循環することを示している。これは、その指数的転置関数は転置することを意味する。素数として65537を選択することにより、65537より1つ小さい素数は2の累乗の65536となる。したがって、Aの値にかかわらず(2A+1)は奇数となり、65536に互いに素である。次に、Aが0ならば出力データは変化しない。最後に、図9のデータ変換器510の構造は、図8の転置データ変換器と同様に、RSA、DES、AES、SHA−1などの暗号アルゴリズムに存在しない構造である。
【0042】
もし、データ変換器510が(データがいつも固定サイズのものであると仮定する代わりに)予測できないサイズのデータ受信をサポートしている場合、分割器920はデータを適切なサイズのセグメントに分割できない可能性がある。図8のデータ変換器のパッダ815と同様に、パッダ925は、データが適切な長さに適切に分割されるように、追加ビットによってそのデータをパッドするために使用することができる。
【0043】
図8の転置データ変換器と同様に、図9のデータ変換器510も反転可能である。変換されたデータの反転を可能とするために、出力ポート910はYとともに変更されていないAを出力する。そして、指数的転置を反転させるために、計算機915は、「2A+1 modulo 65536 (すなわち、65537-1)」の逆数(2A+1を65536で割った剰余の逆数)を演算する。この逆数をeとするならば、反転された指数的転置は((Y+l)e mod 65537 ) - 1である。この計算の結果、元のバイトBに戻る。よって、指数的転置は、データ変換の指数を変更して第二のデータ変換を適用することにより簡単に反転する(逆にする)ことができる。
【0044】
以上において図8と9に示された装置について説明したので、次に、それらの使用方法を説明する。図10A−10Cは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示している。図10Aのブロック1005では、データが受信される。ブロック1010では、データが二つのセグメントに分割される(ビット群の転置が第一のセグメントのビットによって制御されると仮定する)。ブロック1015では、データ変換器が第二のデータセグメントを均等に群に分割できるかどうかを調べる。もし均等に分割できなければ、ブロック1020において、第二のセグメントを均等なサイズの群に分割するのをサポートするためにデータがパッドされる。(これは、データ変換器が、入力データを均等なサイズの群へ分割しようとしていることを前提とする。もしデータ変換器が、入力データを均等なサイズの群へ分割する必要がないのであれば、ブロック1015と1020は省略できる。)
【0045】
ブロック1025(図10B)では、第二のセグメントは複数のビット群に分割される。上述のとおり、ブロック1025では、第二のセグメントを等しいサイズの群に分割すると説明したが、データ変換器がサポートしていれば異なるサイズの群に分割することも可能である。ブロック1030では、各群が第一のセグメントのビットと関連付けられる。ブロック1035では、基本の転置関数が定義される。ブロック1040では、他の転置関数が基本の転置関数の累乗として定義される。(しかし、他の転置関数が基本の転置関数の累乗である必要はない。各転置関数は互いに無関係であってもよく、その場合ブロック1035と1040は変更または省略可能である。) ブロック1045では、これらの転置関数にインデックス付けがなされる。
【0046】
ブロック1050(図10C)では、データ変換器は、(第二のセグメントのビット群に対する転置関数の適用を制御する)第一のセグメントに調べられていないビットがあるかどうかを調べる。もし調べられていないビットがあれば、ブロック1055において、データ変換器はビットが設定されているかどうかを調べる。もしビットが設定されていれば、ブロック1060で、ビットによりインデックス付けがされた転置関数が特定され、そしてブロック1065で、特定された転置関数が関連する転置群に適用される。制御はブロック1050に戻り、第一のセグメントでさらに調べられていないビットがあるかどうかを調べる。結局、第一のセグメントのすべてのビットが調べられ、そしてブロック1070で、データ変換器は第一のセグメント及び転置されたビット群からデータ変換(変換されたデータ)を構築する。
【0047】
図11は、本発明の実施例に係る図9のデータ変換器を使用するためのフローチャートを示している。ブロック1105では、データ変換器はデータを受信する。ブロック1110では、データ変換器はデータを二つのセグメントに分割する。ブロック1115では、第一のセグメントが使用され、選択されたモジュラスに対して素である指数(乗数)を生成する。ブロック1120では、第二のセグメントが演算された指数に乗じられる。ブロック1125では、その指数を乗じた結果を前記モジュラスで割った剰余が演算される。最後にブロック1130では、第一のセグメントと当該剰余からデータ変換(変換されたデータ)が構築される。
【0048】
図5を参照して上述したとおり、いくつかの既存の鍵導出機能が存在している。しかし、図4を参照して上述したとおり、これらの既存の存在する鍵導出機能はセキュアハッシュ関数と汎用ハッシュ関数の双方の利点を備えていない。図12はセキュアハッシュ関数と汎用ハッシュ関数の利点を組み合わせた一つの鍵導出機能部の詳細を示している。図12において、鍵導出機能部515は、鍵導出機能部への入力及び導出鍵の出力のそれぞれに使用される入力ポート1205と出力ポート1210を含む。また、鍵導出機能部515は、分割器1215、結合器1220、ハッシュ部(ハッシャ/hasher)1225、決定部(determiner)1230、計算機1235及びビットセレクタ1240を含む。
【0049】
分割器1215はマスター鍵を二つの部分に分割する。結合器はマスター鍵の第一の部分をカウンタと結合し、入力データの一部とする。マスター鍵をカウンタに結合する一つの方法は、マスター鍵の第一の部分をどのようなサイズ(例えば、4バイト)にもなり得るカウンタと連結することである。この連結はどちらの順序でも行うことができる。つまり、マスター鍵の第一の部分及びカウンタのどちらが組み合わせの先になってもよい。そして、この組み合わせの結果がハッシュ関数1225を使用してハッシュされ、セキュアハッシュ関数となる。(この実施例において、このハッシュ関数1225は図4のシーケンス405のセキュアハッシュアルゴリズム110に取って代わる。)
【0050】
決定部1230は、マスター鍵の第二の部分から二つの数を決定するために使用される。一つの実施例において、これらの二つの数aとbは、マスター鍵の第二の部分の最初と最後の32バイトを素数pで割った剰余として決定される。このようにaとbを選択するためには、マスター鍵の第二の部分が64バイト長となるのに十分な長さを有するマスター鍵が要求される。しかし、当業者であればマスター鍵が必ずしもこの長さである必要はないことを理解するであろう。例えば、aとbをpで割った剰余の計算でaとbのビット数が十分に変わるのであれば、aとbはそれらの数の元のビットがマスター鍵の第二の部分の中から重複するような態様で選択されてもよい。
【0051】
当業者であれば、他の素数も代わりに選択され得ることを理解するであろうが、素数の特定の選択は、p192 = 2192-264-1とすることができる。計算機1235は次に、汎用ハッシュ関数のax+b mod p (ここでxはハッシュ部1225の結果)を実行することができる。(この汎用ハッシュ関数は図4のシーケンス405の汎用ハッシュアルゴリズム305に取って代わる。) 最終的にビットセレクタ1240は、後に出力され得る導出鍵の汎用ハッシュ関数の結果からビットを選択することができる。例えば、ビットセレクタ1240は、導出鍵として汎用ハッシュ関数の結果の最下位桁ビットを選ぶことができる。
【0052】
図13は、本発明の他の実施例に係る図5と6の鍵導出機能部の詳細を示している。図4のシーケンス405に係る鍵導出機能部を実行する図12に示された本発明の実施例と対照的に、図13の鍵導出機能部515は、セキュアハッシュアルゴリズムの後で汎用ハッシュアルゴリズムを適用しない。代わりに、図13に示される本発明の実施例は、セキュアハッシュアルゴリズムへの入力に対して線形マッピング(a liner mapping)を適用する。
【0053】
図12の鍵導出機能部515と同様に、図13の鍵導出機能部515は、入力ポート1305と出力ポート1310を有する。入力ポート1305は、入力としてマスター鍵を受信し、また出力ポート1310は、導出鍵を出力する。また、図13の鍵導出機能部515は、分割器1315、エンコーダ1320、結合器1325、ハッシュ部(ハッシャ/hasher)1330、及びビットセレクタ1335を有している。
【0054】
分割器1315は、図12の分割器1215と同様に、マスター鍵を二つの部分に分割する。次に、エンコーダ1320はカウンタを符号化する。エンコーダ1320は所望の態様で動作できる。例えば、エンコーダ1320はカウンタを繰り返し、マスター鍵の第一の部分の長さまで拡張することにより動作できる。したがって、例えばマスター鍵の第一の部分が64バイト長でカウンタが4バイトを使用するのであれば、エンコーダ1320は、この4バイトを16回繰り返してカウンタを64バイト長まで拡張することができる。次に、結合器1325は、マスター鍵の各部分にそれぞれ符号化されたカウンタを結合することができる。例えば、結合器1325は、マスター鍵の部分と符号化されたカウンタをビットレベルで結合することができる。一つの実施例では、マスター鍵の部分と符号化されたカウンタを結合するためにXORバイナリ関数(XOR binary function)を使用する。しかし、当業者であれば、結合器1325は、マスター鍵の部分と符号化されたカウンタを結合するために、どのようなビット単位の関数、あるいは実際にどのような関数であっても使用できることを理解するであろう。結合器1325は、次に、(符号化されたカウンタとの結合後)マスター鍵の二つの部分を再び結合することができる。例えば、二つの部分は一緒に連結することができる(しかし、当業者であれば、他の方法でも結合器1325がマスター鍵の二つの部分を再結合することができることを理解するであろう)。また、結合器1325はマスター鍵の再結合された部分を符号化されたカウンタともう一度連結することもできる。
【0055】
ハッシュ部1330は、結合器1325の出力を得てハッシュする。ハッシュ1330部は、セキュアハッシュ関数となり得る。そしてビットセレクタ1335は、図12のビットセレクタ1240と同様に、ハッシュ部1330の結果から導出鍵としてのビットを選択できる。
【0056】
以上において図12と13に示された装置について説明したので、次に、それらの使用方法を説明する。図14は、本発明の実施例に係る図12の鍵導出機能部を使用するためのフローチャートを示している。ブロック1405では、マスター鍵は複数のセグメントに分割される。ブロック1410では、第一のセグメントが符号化されたカウンタに結合される。図12を参照して上述したとおり、この結合は第一のセグメントと符号化されたカウンタとの連結となり得る。ブロック1415では、結合された第一のセグメントがハッシュされる。
【0057】
ブロック1420では、二つの数が第二のセグメントから決定される。図12を参照して上述したとおり、これらの二つの数がモジュラスに対して決定され得る。ブロック1425では、汎用ハッシュ関数が、二つの決定された数とモジュラスを使用して定義される。ブロック1430では、ハッシュの結果が汎用ハッシュ関数に適用される。ブロック1435では、当該汎用ハッシュの結果から導出鍵としてビットが選ばれる。
【0058】
図15は、本発明の実施例に係る図13の鍵導出機能部を使用するためのフローチャートを示している。ブロック1505では、マスター鍵が複数のセグメントに分割される。ブロック1510では、各セグメントが符号化されたカウンタに結合される。図13を参照して上述したとおり、これは、符号化されたカウンタとともに、各セグメントに個別にXORビット関数を適用して行うことができる。ブロック1515では、結合されたブロックが再度結合されて、(図13を参照して上述したとおり)再び符号化されたカウンタと結合させることができる。ブロック1520では、この変更されたマスター鍵が次にハッシュされ、そしてブロック1525で、ハッシュの結果から導出鍵としてのビットが選択される。
【0059】
図12−15に示される鍵導出機能部は二つの例にすぎない。セキュアハッシュアルゴリズムと汎用ハッシュアルゴリズムの利点を組み合わせた他の鍵導出機能部も使用することができる。図16は本発明の実施例に係る図5のデータセキュリティ装置における他の鍵導出機能部のフローチャートを示す。ブロック1605では、マスター鍵が複数のセグメントに分割される。ブロック1610では、セグメントがデータ変換を使用して変換される。セグメントは一般にデータ変換器が使用できるよりも大きくなるので、セグメントのサブセットだけが使用される。例えば、データ変換で必要とされる最初のバイトのみが使用される。ブロック1615では、これらの変換されたセグメントは結合され、符号化されたカウンタに結合される。例えば、これらのセグメント及び符号化されたカウンタは一緒に連結され得る。ブロック1620では、変換された結果がハッシュされ、そしてブロック1625で、ハッシュされた結果から導出鍵としてのビットが選択される。
【0060】
図12−13の装置及び図14−16のフローチャートは、マスター鍵から単一の導出鍵が生成されるのを示しているが、本発明の実施例は、繰り返し複数の導出鍵を生成するために容易に適用することができることに留意する必要がある。これらの追加的な導出鍵は数多くの方法により生成することができる。例えば、図14−16のフローチャートはすべてカウンタを含む。それぞれの追加的な導出鍵のために、カウンタを増加させることができる。従って、第一の鍵を導出するためにカウンタは値1を使用し、第二の鍵を導出するためにカウンタは値2を使用することなどが可能である。
【0061】
他の実施例において、導出鍵のビットを選択するために図12のビットセレクタ1240または図13のビットセレクタ1335を使用するよりむしろ、すべての導出鍵に対して結合された結果からビットを選択すると一度で十分な結果を生成することができる。例えば、それぞれkビット長のu鍵を希望すると仮定し、さらに、図12−13の装置及び/または図14−16のフローチャートの結果が、ビット選択の前にlビットを作ると仮定する。もし、鍵導出機能部がm回適用されて、m*l ≧ u*kとすれば、u導出鍵はすべてm*lの結果のビットと同時に選ばれる。例えば、m*lの結果のビットはすべて一緒に連結されるかもしれない。あるいは、すべてのu鍵が選択されるまで、第一の鍵は、第一のkビットとして選択されるかもしれず、第二の鍵は第二のkビットとして選択されるかもしれない。
【0062】
以下に、本発明の一定の態様を実施する適切なマシンの簡単な一般的な説明をする。通常、マシンは、例えばプロセッサ、メモリ(例えば、ランダムアクセスメモリー(RAM)やリードオンリーメモリ(ROM)や他の状態保存媒体)、記憶装置、映像インターフェース及び出力/入力インターフェースポートなどが取付けられるシステムバスを含む。マシンは少なくとも一部分において、キーボード、マウスなどの従来の入力デバイスからの入力及び別のマシンから受けた指示、バーチャルリアリティ(VR)環境、生体フィードバックまたは他の入力信号との情報交換によって制御することが可能である。
【0063】
本件明細書で使用されているマシン(machine)という語は、単一のマシンまたは、一緒に作動するマシンやデバイスと結合するコミュニケーションシステムを広く包含することを意図する。典型的なマシンは、自動車、列車、タクシーなどの個人的または公共の交通機関といった移動手段に加えて、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、携帯端末、電話、タブレットなどのコンピュータデバイスを含む。
【0064】
また、マシンは、プログラマブルまたは非プログラマブル論理デバイスやアレイのような内蔵コントローラやASIC(Application Specific Integrated Circuits)や内蔵コンピュータやスマートカードなどを含んでもよい。また、マシンは、ネットワーク・インターフェース、モデムまたは他のコミュニケーションの接続を経由して、一つまたは複数のリモートマシンへの一つまたは複数の接続を利用してもよい。さらに、マシンは、イントラネット、インターネット、ローカル・エリア・ネットワーク、広域ネットワークなどのような物理的、及び/または、論理的なネットワークを通して相互接続され得る。当業者であれば、ネットワークコミュニケーションが、無線周波数(RF)、衛星、電子レンジ、電気電子技術学会(IEEE)、802.11、ブルートゥース、光学の、赤外線のケーブル、レーザなどを含む様々な有線及び/または無線の短距離または長距離キャリアとプロトコルを利用できることを理解するであろう。
【0065】
本発明は、機能、手順、データ構造、アプリケーションプログラムなどを含む関連データを参照するか、あるいはそれらとの関連で説明することができる。これらの関連データは、マシンによりアクセスされたとき、当該マシンにタスクを実行させるか、あるいは抽象データ型か低レベルのハードウェアコンテキストを定義することになる。関連データは、例えば、RAM、ROMなどの揮発性及び/または非揮発性メモリ、またはハードドライブ、フロッピーディスク、光記憶装置、テープ、フラッシュメモリ、メモリースティック、デジタルビデオディスク、生物学的記憶装置などを含む他の記憶装置とそれらの関連記憶媒体に格納することができる。また、関連データは、物理的及び/または論理的なネットワークを含む通信環境で、パケット、シリアルデータ、並列データ、伝播された信号などの形で送信され、圧縮または暗号化された形式で使用できる。また、関連データは、分散環境で使用され、マシンのアクセスのために、局所的及び/または遠隔的に格納され得る。
【0066】
図示された実施例に基づいて本発明の原理を記載しかつ説明したが、図示された実施例が係る原理から逸脱することなくその構成と詳細において変更することができることを理解されたい。そして、以上の説明は特定の実施例に焦点を合わせたが、他の構成も考えることができる。特に、「一つの実施例において」という表現、または同様の表現がここで使用されるが、これらの語句は一般に参考実施例となり得ることを意味し、本発明を特定の実施例の構成に制限することは意図していない。ここに使用されるように、これらの語句は、他の実施例と結合可能な同一または異なる実施例を表してもよい。
【0067】
結論として、ここに説明された実施例へ多種多様に置き換えることができることを鑑みると、この詳細な説明及び添付図面は例示のみを意図しており、発明の範囲を制限するものとして捕らえるべきではない。したがって、本発明として要求されていることは、クレームとその同等物の範囲及び精神を逸脱しないようなすべての変更を含むものである。
【図面の簡単な説明】
【0068】
【図1】図1は、マスター鍵から複数の導出鍵を生成するセキュアハッシュアルゴリズムの一般的な実行を示す。
【図2】図2は、図1のセキュアハッシュアルゴリズムの典型的な動作を示す。
【図3】図3は、汎用ハッシュアルゴリズムの典型的な動作を示す。
【図4】図4は、本発明の実施例に係るより安全な導出鍵を生成するために図2のセキュアハッシュアルゴリズムと図3の汎用ハッシュアルゴリズムを組み合わす異なる方法を示す。
【図5】図5は、本発明の実施例に係る、データ変換、鍵生成、鍵包み、及びデータ暗号化を実行可能とするサーバと装置を示す。
【図6】図6は、本発明の実施例に係る、鍵包み、鍵導出、または暗号化機能と組み合わせてデータ変換器を使用することにより安全性を高めるよう動作可能なデータセキュリティ装置を示す。
【図7A】図7Aは、本発明の実施例に係る図6のデータセキュリティ装置を使用するためのフローチャートを示す。
【図7B】図7Bは、本発明の実施例に係る図6のデータセキュリティ装置を使用するためのフローチャートを示す(図7Aの続き)。
【図8】図8は、本発明の実施例に係る図5及び6のデータ変換器の詳細を示す。
【図9】図9は、本発明の他の実施例に係る図5及び6のデータ変換器の詳細を示す。
【図10A】図10Aは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示す。
【図10B】図10Bは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示す(図10Aの続き)。
【図10C】図10Cは、本発明の実施例に係る図8のデータ変換器を使用するためのフローチャートを示す(図10Bの続き)。
【図11】図11は、本発明の実施例に係る図9のデータ変換器を使用するためのフローチャートを示す。
【図12】図12は、本発明の実施例に係る図5及び6の鍵導出機能部の詳細を示す。
【図13】図13は、本発明の他の実施例に係る図5及び6の鍵導出機能部の詳細を示す。
【図14】図14は、本発明の実施例に係る図12の鍵導出機能部を使用するためのフローチャートを示す。
【図15】図15は、本発明の実施例に係る図13の鍵導出機能部を使用するためのフローチャートを示す。
【図16】図16は、本発明の実施例に係る図5のデータセキュリティ装置で鍵導出機能部を使用するためのフローチャートを示す。
【特許請求の範囲】
【請求項1】
マスター鍵を受信する入力ポートと、
汎用ハッシュアルゴリズムの実行と、
ハッシュアルゴリズムの実行と、
前記汎用ハッシュアルゴリズムと前記ハッシュアルゴリズムの前記実行を使用して前記マスター鍵から導出鍵を生成する手段と、
前記導出鍵を出力する出力ポートと、を含むことを特徴とする装置。
【請求項2】
前記汎用ハッシュアルゴリズムの実行が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項1に記載の装置。
【請求項3】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記ハッシュアルゴリズムの実行が、
前記第一のセグメントを前記カウンタと結合し、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムの実行を使用して前記変更された第一のセグメントをハッシュ値にハッシュする手段と、を含み、
さらに、前記汎用ハッシュアルゴリズムの実行が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含むことを特徴とする請求項1に記載の装置。
【請求項4】
前記生成する手段が、
前記マスター鍵と一緒に前記汎用ハッシュアルゴリズムの実行を使用して結果を生成する手段と、
前記結果とカウンタと一緒に前記ハッシュアルゴリズムの実行を使用して前記導出鍵を生成する手段と、を含む請求項1に記載の装置。
【請求項5】
前記汎用ハッシュアルゴリズムの実行が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項4に記載の装置。
【請求項6】
前記生成する手段が、
前記マスター鍵とカウンタと一緒に前記ハッシュアルゴリズムの実行を使用して結果を生成する手段と、
前記結果と一緒に前記汎用ハッシュアルゴリズムの実行を使用して前記導出鍵を生成する手段と、を含む請求項1に記載の装置。
【請求項7】
前記生成する手段が、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記ハッシュアルゴリズムの実行を使用する前記手段が、
前記第一のセグメントを前記カウンタと結合し、変更された第一のセグメントを生成する結合器と、
前記変更された第一のセグメントをハッシュ値にハッシュする前記ハッシュアルゴリズムの実行を使用する手段と、を含み、
前記汎用ハッシュアルゴリズムの実行を使用する前記手段が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項6に記載の装置。
【請求項8】
マスター鍵を受信する入力ポートと、
汎用ハッシュアルゴリズムを実行する第一の計算機と、
ハッシュアルゴリズムを実行する第二の計算機と、
前記第一の計算機と前記第二の数計算機を使用して前記マスター鍵から導出鍵を生成する鍵導出機能部と、
前記生成された導出鍵を出力する出力ポートと、を含むことを特徴とする装置。
【請求項9】
前記鍵導出機能部が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行を行う第三の計算機と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行を行う第四の計算機と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項8に記載の装置。
【請求項10】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記第二の計算機が、
前記第一のセグメントを前記カウンタと結合して、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムを実行し、前記変更された第一のセグメントをハッシュ値にハッシュする第五の計算機と、を含み、
前記第一の計算機が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式を実行する第六の計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項8に記載の装置。
【請求項11】
前記鍵導出が、
前記マスター鍵と一緒に前記汎用ハッシュアルゴリズムを実行して結果を生成する第三の計算機と、
前記結果とカウンタと一緒に前記ハッシュアルゴリズムを実行して前記導出鍵を生成する第四の計算機と、を含む請求項8に記載の装置。
【請求項12】
前記第一の計算機が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行を行う第五の計算機と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行を行う第六の計算機と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項11に記載の装置。
【請求項13】
前記鍵導出が、
前記マスター鍵とカウンタと一緒に前記汎用ハッシュアルゴリズムを実行して結果を生成する第三の計算機と、
前記結果と一緒に前記ハッシュアルゴリズムを実行して前記導出鍵を生成する第四の計算機と、を含む請求項8に記載の装置。
【請求項14】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記第三の計算機が、
前記第一のセグメントを前記カウンタと結合して、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムを実行し、前記変更された第一のセグメントをハッシュ値にハッシュする第三の計算機と、を含み、
前記第四の計算機が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式を含む第五の計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項13に記載の装置。
【請求項15】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
前記第一のセグメントとカウンタを連結し、変更された第一のセグメントを生成する連結器と、
前記変更された第一のセグメントをハッシュ値へハッシュするハッシャと、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から得られたビットのセットを導出鍵として選択するビットセレクタと、を含むことを特徴とする装置。
【請求項16】
さらに、前記導出鍵を出力する出力ポートを含む請求項15に記載の装置。
【請求項17】
前記計算機が、
前記ハッシュ値と前記第一の数の積を演算する第一の関数の実行と、
前記積と前記第二の数の和を演算する第二の関数の実行と、
前記和をモジュラスで割った剰余の前記結果を演算する第三の関数の実行と、を含む請求項15に記載の装置。
【請求項18】
前記決定部が、前記第一の数と前記第二の数を、前記モジュラスで割った剰余を決定するように動作する請求項17に記載の装置。
【請求項19】
前記第三の関数の前記実行が、前記和を素数のモジュラスで割った剰余の前記結果を演算する前記第三の関数の実行を含む請求項17に記載の装置。
【請求項20】
前記ビットセレクタが前記導出鍵として、前記結果から最下位ビットのセットを選択するよう動作する請求項15に記載の装置。
【請求項21】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
前記第一のセグメントをカウンタと連結、変更された第一のセグメントを生成する連結器と、
前記変更された第一のセグメントをハッシュ値にハッシュするハッシャと、
前記第二のセグメントをモジュラスで割った剰余から第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から得られたビットのセットを導出鍵として選択するビットセレクタと、を含む鍵導出装置と、
前記導出鍵を使用してデータを暗号化するエンクリプタと、を含むことを特徴とするデータセキュリティ装置。
【請求項22】
さらに、データ変換器を含む請求項21に記載のデータセキュリティ装置。
【請求項23】
前記データ変換器が元のマスター鍵を前記マスター鍵に変換するよう動作する請求項22に記載のデータセキュリティ装置。
【請求項24】
前記データ変換器が、前記導出鍵を変換された導出鍵に変換するよう動作する請求項22に記載のデータセキュリティ装置。
【請求項25】
前記計算機が、
前記ハッシュ値と前記第一の数の積を演算する第一の関数の実行と、
前記積と前記第二の数の和を演算する第二の関数の実行と、
前記和を前記モジュラスで割った剰余から前記結果を演算する第三の関数の実行と、を含む請求項21に記載のデータセキュリティ装置。
【請求項26】
前記第三の関数の前記実行が、前記和を素数のモジュラスで割った剰余から前記結果を演算する前記第三の関数の実行を含む請求項21に記載のデータセキュリティ装置。
【請求項27】
マスター鍵をハッシュしてハッシュ値を生成するステップと、
前記マスター鍵から第一の数と第二の数を決定するステップと、
前記ハッシュ値の汎用ハッシュ関数、前記第一の数、及び前記第二の数を演算して結果を生成するステップと、
前記結果のビットから導出鍵を選択するステップと、を含むことを特徴とする鍵導出の実行の方法。
【請求項28】
前記方法は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップを含み、
前記マスター鍵をハッシュするステップが、前記第一のセグメントをハッシュして前記ハッシュ値を生成するステップを含み、
前記第一の数と第二の数を決定するステップが、前記第二のセグメントから前記第一の数と前記第二の数を決定するステップを含む請求項27に記載の方法。
【請求項29】
前記方法は、さらに、カウンタを決定するステップを含み、
前記第一のセグメントをハッシュするステップが、前記第一のセグメントと前記カウンタを結合させるステップを含む請求項28に記載の方法。
【請求項30】
前記第一の数と第二の数を決定するステップが、
前記マスター鍵から第三の数と第四の数を導出するステップと、
前記第一の数を、前記第三の数をモジュラスで割った剰余として演算するステップと、
前記第二の数を、前記第四の数をモジュラスで割った剰余として演算するステップと、を含む請求項27に記載の方法。
【請求項31】
前記汎用ハッシュ関数を演算するステップが、
前記第一の数と前記ハッシュ値の積を演算するステップと、
前記積と前記第二の数の和を演算するステップと、
前記和をモジュラスで割った剰余として前記結果を演算するステップと、を含む請求項27に記載の方法。
【請求項32】
前記結果を演算するステップが、前記和を素数の除数で割った剰余として前記結果を演算するステップを含む請求項31に記載の方法。
【請求項33】
前記導出鍵を選択するステップが、前記結果の前記最下位ビットのセットから当該導出鍵を選択するステップを含む請求項31に記載の方法。
【請求項34】
マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントをハッシュしてハッシュ値を生成するステップと、
第一の数と第二の数を前記第二のセグメントから決定するステップと、
前記第一の数と前記ハッシュ値の積を演算するステップと、
前記積と前記第二の数の和を演算するステップと、
前記和をモジュラスで割った剰余として結果を演算するステップと、
前記結果のビットから導出鍵を選択するステップと、を含む導出鍵生成ステップと、
前記導出鍵を使用してデータを暗号化するステップと、とを含むことを特徴とする導出鍵の暗号化の方法。
【請求項35】
さらに、前記導出鍵を生成する前に、データ変換を前記マスター鍵に適用するステップを含む請求項34に記載の方法。
【請求項36】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれのセグメントが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群にまとめるステップであって、当該複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
転置関数を、前記第三のセグメントの前記関連付けられたビットに従って、前記群の少なくとも一つに適用するステップと、
前記データ変換が適用されたマスター鍵を、前記第三のセグメントと前記転置群から構築するステップと、を含む請求項35に記載の方法。
【請求項37】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれのセグメントが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、第二のモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数を前記指数に乗じた結果を演算するステップと、
前記結果を前記第二のモジュラスで割った剰余として指数的転置を演算するステップと、
前記データ変換が適用されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項35に記載の方法。
【請求項38】
さらに、データ変換を前記導出鍵に適用するステップを含む請求項34に記載の方法。
【請求項39】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
転置関数を、前記第三のセグメントの前記関連付けられたビットに従って、前記複数の群の少なくとも一つに適用するステップと、
前記データ変換が適用されたマスター鍵を、前記第三のセグメントと前記転置群から構築するステップと、を含む請求項34に記載の方法。
【請求項40】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、第二のモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数を前記指数に乗じた結果を演算するステップと、
前記結果を前記第二のモジュラスで割った剰余として指数的転置を演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項38に記載の方法。
【請求項41】
さらに、前記導出鍵の暗号化を行うステップを含む請求項34に記載の方法。
【請求項42】
さらに、前記暗号化された導出鍵を送信するステップを含む請求項41に記載の方法。
【請求項43】
さらに、前記暗号化されたデータを送信するステップを含む請求項34に記載の方法。
【請求項44】
さらに、カウンタを決定するステップを含み、
前記第一のセグメントをハッシュするステップが、前記第一のセグメントと前記カウンタを結合するステップを含む請求項34に記載の方法。
【請求項45】
前記第一の数と第二の数を決定するステップが、
第三の数と第四の数を、前記第二のセグメントから導出するステップと、
前記第一の数を、前記第三の数をモジュラスで割った剰余として演算するステップと、
前記第二の数を、前記第四の数を前記モジュラスで割った剰余として演算するステップと、を含む請求項34に記載の方法。
【請求項46】
導出鍵を選択するステップが、前記結果の最下位ビットのセットから当該導出鍵を選択するステップを含む請求項34に記載の方法。
【請求項47】
マスター鍵を受信する入力ポートと、
前記マスター鍵と一つの値を結合し変更されたマスター鍵を生成する結合器と、
前記変更されたマスター鍵をハッシュしてハッシュ値とするハッシャと、
前記ハッシュ値からビットのセットを選択して導出鍵とするビットセレクタと、を含むことを特徴とする装置。
【請求項48】
前記装置は、さらに、前記値を繰り返し、符号化された値をより長いビットパターンとして構成するリピータを含み、
前記結合器が前記マスター鍵と前記符号化された値を結合し、変更されたマスター鍵を生成するよう動作する請求項47に記載の装置。
【請求項49】
前記カウンタが、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記結合器が、前記符号化された値、前記第一のセグメント、及び前記第二のセグメントを結合し、前記変更されたマスター鍵を生成する請求項47に記載の装置。
【請求項50】
前記結合器が、さらに、
前記第一のセグメントと前記符号化された値に対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化された値に対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果と前記第二の結果を結合し、前記変更されたマスター鍵を生成する結合器と、を含む請求項49に記載の装置。
【請求項51】
前記結合器が、前記第一の結果と前記第二の結果を連結し、前記変更されたマスター鍵を生成する連結器を含む請求項50に記載の装置。
【請求項52】
前記ビットセレクタが、前記導出鍵として前記ハッシュ値から最下位ビット部分を選択するよう動作する請求項47に記載の装置。
【請求項53】
前記結合器が、前記マスター鍵とカウンタを結合し、前記変更されたマスター鍵を生成するよう動作する請求項47に記載の装置。
【請求項54】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
一つの値を繰り返し、符号化された値をより長いビットパターンとして構成するリピータと、
前記第一のセグメントと前記符号化された値を演算して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化された値を演算して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化された値を結合し、前記変更されたマスター鍵を生成する結合器と、
前記変更されたマスター鍵をハッシュしてハッシュ値とするハッシャと、
前記結果から得られるビットのセットを導出鍵として選択するビットセレクタと、を含む導出鍵と、
前記導出鍵を使用してデータを暗号化するエンクリプタと、を含むことを特徴とするデータセキュリティ装置。
【請求項55】
さらに、データ変換器を含む請求項54に記載のデータセキュリティ装置。
【請求項56】
前記データ変換器が元のマスター鍵を前記マスター鍵に変換するよう動作する請求項55に記載のデータセキュリティ装置。
【請求項57】
前記データ変換器が、前記導出鍵を変換された導出鍵に変換するよう動作する請求項55に記載のデータセキュリティ装置。
【請求項58】
前記リピータが、カウンタを繰り返し、前記符号化された値をより長いビットパターンに構成するよう動作する請求項54に記載のデータセキュリティ装置。
【請求項59】
マスター鍵を、一つの値と結合し変更されたマスター鍵を生成するステップと、
前記変更されたマスター鍵をハッシュしてハッシュ値を生成するステップと、
前記ハッシュ値のビットから導出鍵を選択するステップと、を含むことを特徴とする鍵導出実行の方法。
【請求項60】
さらに、前記値のビットパターンを繰り返し、より長いビットパターンを構成するステップを含む請求項59に記載の方法。
【請求項61】
前記マスター鍵を一つの値と結合させるステップが、当該マスター鍵と当該値を使用してビット単位のバイナリ関数を演算するステップを含む請求項59に記載の方法。
【請求項62】
前記マスター鍵を前記値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第二のセグメントを前記値と結合して第二の結果を生成するステップと、
前記第一の結果と前記第二の結果を結合して前記変更されたマスター鍵を生成するステップと、を含む請求項59に記載の方法。
【請求項63】
前記第一の結果と前記第二の結果を結合するステップが、当該第一の結果と当該第二の結果を連結して前記変更されたマスター鍵を生成するステップを含む請求項62に記載の方法。
【請求項64】
前記導出鍵を選択するステップが、前記ハッシュ値の最下位ビット部分から当該導出鍵を選択するステップを含む請求項59に記載の方法。
【請求項65】
前記マスター鍵を一つの値と結合し変更されたマスター鍵を生成するステップが、当該マスター鍵とカウンタを結合し前記変更されたマスター鍵を生成するステップを含む請求項59に記載の方法。
【請求項66】
マスター鍵を一つの値と結合し変更されたマスター鍵を生成するステップと、
前記変更されたマスター鍵をハッシュしてハッシュ値を生成するステップと、
前記ハッシュ値のビットから導出鍵を選択するステップと、
前記導出鍵を使用してデータを暗号化するステップと、を含むことを特徴とする鍵導出を暗号化する方法。
【請求項67】
さらに、前記導出鍵の生成の前に、データ変換を前記マスター鍵に適用するステップを含む請求項66に記載の方法。
【請求項68】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群の数にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
前記第三のセグメントの関連付けられたビットに従って、転置関数を少なくとも一つの前記群に適用するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記転置群から構築するステップと、を含む請求項67に記載の方法。
【請求項69】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数に、前記指数を乗じた結果を演算するステップと、
指数的転置を、前記結果を前記予め定義されたモジュラスで割った剰余として演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項67に記載の方法。
【請求項70】
さらに、データ変換を前記導出鍵に適用するステップを含む請求項66に記載の方法。
【請求項71】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群の数にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
前記第三のセグメントの関連付けられたビットに従って、転置関数を少なくとも一つの前記群に適用するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記転置群から構築するステップと、を含む請求項70に記載の方法。
【請求項72】
前記データ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数に、前記指数を乗じた結果を演算するステップと、
指数的転置を、前記結果を前記予め定義されたモジュラスで割った剰余として演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項70に記載の方法。
【請求項73】
さらに、前記導出鍵を暗号化するステップを含む請求項66に記載の方法。
【請求項74】
さらに、前記暗号化された導出鍵を送信するステップを含む請求項73に記載の方法。
【請求項75】
さらに、前記暗号化されたデータを送信するステップを含む請求項66に記載の方法。
【請求項76】
前記マスター鍵を一つの値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第二のセグメントを前記値と結合して第二の結果を生成するステップと、
前記第一の結果と前記第二の結果を結合して前記変更されたマスター鍵を生成するステップと、を含む請求項66に記載の方法。
【請求項77】
前記第一の結果と前記第二の結果を結合するステップが、当該第一の結果と当該第二の結果を連結して前記変更されたマスター鍵を生成するステップを含む請求項76に記載の方法。
【請求項78】
前記マスター鍵を一つの値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第一の結果を前記第二のセグメントと結合して前記変更されたマスター鍵を生成するステップと、を含む請求項66に記載の方法。
【請求項79】
前記マスター鍵を一つの値と結合して変更されたマスター鍵を生成するステップが、当該マスター鍵をカウンタと結合して変更されたマスター鍵を生成するステップを含む請求項66に記載の方法。
【請求項1】
マスター鍵を受信する入力ポートと、
汎用ハッシュアルゴリズムの実行と、
ハッシュアルゴリズムの実行と、
前記汎用ハッシュアルゴリズムと前記ハッシュアルゴリズムの前記実行を使用して前記マスター鍵から導出鍵を生成する手段と、
前記導出鍵を出力する出力ポートと、を含むことを特徴とする装置。
【請求項2】
前記汎用ハッシュアルゴリズムの実行が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項1に記載の装置。
【請求項3】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記ハッシュアルゴリズムの実行が、
前記第一のセグメントを前記カウンタと結合し、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムの実行を使用して前記変更された第一のセグメントをハッシュ値にハッシュする手段と、を含み、
さらに、前記汎用ハッシュアルゴリズムの実行が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含むことを特徴とする請求項1に記載の装置。
【請求項4】
前記生成する手段が、
前記マスター鍵と一緒に前記汎用ハッシュアルゴリズムの実行を使用して結果を生成する手段と、
前記結果とカウンタと一緒に前記ハッシュアルゴリズムの実行を使用して前記導出鍵を生成する手段と、を含む請求項1に記載の装置。
【請求項5】
前記汎用ハッシュアルゴリズムの実行が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項4に記載の装置。
【請求項6】
前記生成する手段が、
前記マスター鍵とカウンタと一緒に前記ハッシュアルゴリズムの実行を使用して結果を生成する手段と、
前記結果と一緒に前記汎用ハッシュアルゴリズムの実行を使用して前記導出鍵を生成する手段と、を含む請求項1に記載の装置。
【請求項7】
前記生成する手段が、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記ハッシュアルゴリズムの実行を使用する前記手段が、
前記第一のセグメントを前記カウンタと結合し、変更された第一のセグメントを生成する結合器と、
前記変更された第一のセグメントをハッシュ値にハッシュする前記ハッシュアルゴリズムの実行を使用する手段と、を含み、
前記汎用ハッシュアルゴリズムの実行を使用する前記手段が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項6に記載の装置。
【請求項8】
マスター鍵を受信する入力ポートと、
汎用ハッシュアルゴリズムを実行する第一の計算機と、
ハッシュアルゴリズムを実行する第二の計算機と、
前記第一の計算機と前記第二の数計算機を使用して前記マスター鍵から導出鍵を生成する鍵導出機能部と、
前記生成された導出鍵を出力する出力ポートと、を含むことを特徴とする装置。
【請求項9】
前記鍵導出機能部が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行を行う第三の計算機と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行を行う第四の計算機と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項8に記載の装置。
【請求項10】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記第二の計算機が、
前記第一のセグメントを前記カウンタと結合して、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムを実行し、前記変更された第一のセグメントをハッシュ値にハッシュする第五の計算機と、を含み、
前記第一の計算機が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式を実行する第六の計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項8に記載の装置。
【請求項11】
前記鍵導出が、
前記マスター鍵と一緒に前記汎用ハッシュアルゴリズムを実行して結果を生成する第三の計算機と、
前記結果とカウンタと一緒に前記ハッシュアルゴリズムを実行して前記導出鍵を生成する第四の計算機と、を含む請求項8に記載の装置。
【請求項12】
前記第一の計算機が、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
カウンタを繰り返し、より長いビットパターンとして符号化されたカウンタを生成するリピータと、
前記第一のセグメントと前記符号化されたカウンタに対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行を行う第五の計算機と、
前記第二のセグメントと前記符号化されたカウンタに対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行を行う第六の計算機と、
前記第一の結果、前記第二の結果、及び前記符号化されたカウンタを結合して前記結果を生成する結合器と、を含む請求項11に記載の装置。
【請求項13】
前記鍵導出が、
前記マスター鍵とカウンタと一緒に前記汎用ハッシュアルゴリズムを実行して結果を生成する第三の計算機と、
前記結果と一緒に前記ハッシュアルゴリズムを実行して前記導出鍵を生成する第四の計算機と、を含む請求項8に記載の装置。
【請求項14】
前記装置は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記第三の計算機が、
前記第一のセグメントを前記カウンタと結合して、変更された第一のセグメントを生成する結合器と、
前記ハッシュアルゴリズムを実行し、前記変更された第一のセグメントをハッシュ値にハッシュする第三の計算機と、を含み、
前記第四の計算機が、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式を含む第五の計算機と、
前記結果から、導出鍵としてビットのセットを選択するビットセレクタと、を含む請求項13に記載の装置。
【請求項15】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
前記第一のセグメントとカウンタを連結し、変更された第一のセグメントを生成する連結器と、
前記変更された第一のセグメントをハッシュ値へハッシュするハッシャと、
前記第二のセグメントから第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から得られたビットのセットを導出鍵として選択するビットセレクタと、を含むことを特徴とする装置。
【請求項16】
さらに、前記導出鍵を出力する出力ポートを含む請求項15に記載の装置。
【請求項17】
前記計算機が、
前記ハッシュ値と前記第一の数の積を演算する第一の関数の実行と、
前記積と前記第二の数の和を演算する第二の関数の実行と、
前記和をモジュラスで割った剰余の前記結果を演算する第三の関数の実行と、を含む請求項15に記載の装置。
【請求項18】
前記決定部が、前記第一の数と前記第二の数を、前記モジュラスで割った剰余を決定するように動作する請求項17に記載の装置。
【請求項19】
前記第三の関数の前記実行が、前記和を素数のモジュラスで割った剰余の前記結果を演算する前記第三の関数の実行を含む請求項17に記載の装置。
【請求項20】
前記ビットセレクタが前記導出鍵として、前記結果から最下位ビットのセットを選択するよう動作する請求項15に記載の装置。
【請求項21】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
前記第一のセグメントをカウンタと連結、変更された第一のセグメントを生成する連結器と、
前記変更された第一のセグメントをハッシュ値にハッシュするハッシャと、
前記第二のセグメントをモジュラスで割った剰余から第一の数と第二の数を決定する決定部と、
前記ハッシュ値、前記第一の数、及び前記第二の数を使用した結果を演算する計算式の実行を含む計算機と、
前記結果から得られたビットのセットを導出鍵として選択するビットセレクタと、を含む鍵導出装置と、
前記導出鍵を使用してデータを暗号化するエンクリプタと、を含むことを特徴とするデータセキュリティ装置。
【請求項22】
さらに、データ変換器を含む請求項21に記載のデータセキュリティ装置。
【請求項23】
前記データ変換器が元のマスター鍵を前記マスター鍵に変換するよう動作する請求項22に記載のデータセキュリティ装置。
【請求項24】
前記データ変換器が、前記導出鍵を変換された導出鍵に変換するよう動作する請求項22に記載のデータセキュリティ装置。
【請求項25】
前記計算機が、
前記ハッシュ値と前記第一の数の積を演算する第一の関数の実行と、
前記積と前記第二の数の和を演算する第二の関数の実行と、
前記和を前記モジュラスで割った剰余から前記結果を演算する第三の関数の実行と、を含む請求項21に記載のデータセキュリティ装置。
【請求項26】
前記第三の関数の前記実行が、前記和を素数のモジュラスで割った剰余から前記結果を演算する前記第三の関数の実行を含む請求項21に記載のデータセキュリティ装置。
【請求項27】
マスター鍵をハッシュしてハッシュ値を生成するステップと、
前記マスター鍵から第一の数と第二の数を決定するステップと、
前記ハッシュ値の汎用ハッシュ関数、前記第一の数、及び前記第二の数を演算して結果を生成するステップと、
前記結果のビットから導出鍵を選択するステップと、を含むことを特徴とする鍵導出の実行の方法。
【請求項28】
前記方法は、さらに、前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップを含み、
前記マスター鍵をハッシュするステップが、前記第一のセグメントをハッシュして前記ハッシュ値を生成するステップを含み、
前記第一の数と第二の数を決定するステップが、前記第二のセグメントから前記第一の数と前記第二の数を決定するステップを含む請求項27に記載の方法。
【請求項29】
前記方法は、さらに、カウンタを決定するステップを含み、
前記第一のセグメントをハッシュするステップが、前記第一のセグメントと前記カウンタを結合させるステップを含む請求項28に記載の方法。
【請求項30】
前記第一の数と第二の数を決定するステップが、
前記マスター鍵から第三の数と第四の数を導出するステップと、
前記第一の数を、前記第三の数をモジュラスで割った剰余として演算するステップと、
前記第二の数を、前記第四の数をモジュラスで割った剰余として演算するステップと、を含む請求項27に記載の方法。
【請求項31】
前記汎用ハッシュ関数を演算するステップが、
前記第一の数と前記ハッシュ値の積を演算するステップと、
前記積と前記第二の数の和を演算するステップと、
前記和をモジュラスで割った剰余として前記結果を演算するステップと、を含む請求項27に記載の方法。
【請求項32】
前記結果を演算するステップが、前記和を素数の除数で割った剰余として前記結果を演算するステップを含む請求項31に記載の方法。
【請求項33】
前記導出鍵を選択するステップが、前記結果の前記最下位ビットのセットから当該導出鍵を選択するステップを含む請求項31に記載の方法。
【請求項34】
マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントをハッシュしてハッシュ値を生成するステップと、
第一の数と第二の数を前記第二のセグメントから決定するステップと、
前記第一の数と前記ハッシュ値の積を演算するステップと、
前記積と前記第二の数の和を演算するステップと、
前記和をモジュラスで割った剰余として結果を演算するステップと、
前記結果のビットから導出鍵を選択するステップと、を含む導出鍵生成ステップと、
前記導出鍵を使用してデータを暗号化するステップと、とを含むことを特徴とする導出鍵の暗号化の方法。
【請求項35】
さらに、前記導出鍵を生成する前に、データ変換を前記マスター鍵に適用するステップを含む請求項34に記載の方法。
【請求項36】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれのセグメントが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群にまとめるステップであって、当該複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
転置関数を、前記第三のセグメントの前記関連付けられたビットに従って、前記群の少なくとも一つに適用するステップと、
前記データ変換が適用されたマスター鍵を、前記第三のセグメントと前記転置群から構築するステップと、を含む請求項35に記載の方法。
【請求項37】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれのセグメントが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、第二のモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数を前記指数に乗じた結果を演算するステップと、
前記結果を前記第二のモジュラスで割った剰余として指数的転置を演算するステップと、
前記データ変換が適用されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項35に記載の方法。
【請求項38】
さらに、データ変換を前記導出鍵に適用するステップを含む請求項34に記載の方法。
【請求項39】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
転置関数を、前記第三のセグメントの前記関連付けられたビットに従って、前記複数の群の少なくとも一つに適用するステップと、
前記データ変換が適用されたマスター鍵を、前記第三のセグメントと前記転置群から構築するステップと、を含む請求項34に記載の方法。
【請求項40】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、第二のモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数を前記指数に乗じた結果を演算するステップと、
前記結果を前記第二のモジュラスで割った剰余として指数的転置を演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項38に記載の方法。
【請求項41】
さらに、前記導出鍵の暗号化を行うステップを含む請求項34に記載の方法。
【請求項42】
さらに、前記暗号化された導出鍵を送信するステップを含む請求項41に記載の方法。
【請求項43】
さらに、前記暗号化されたデータを送信するステップを含む請求項34に記載の方法。
【請求項44】
さらに、カウンタを決定するステップを含み、
前記第一のセグメントをハッシュするステップが、前記第一のセグメントと前記カウンタを結合するステップを含む請求項34に記載の方法。
【請求項45】
前記第一の数と第二の数を決定するステップが、
第三の数と第四の数を、前記第二のセグメントから導出するステップと、
前記第一の数を、前記第三の数をモジュラスで割った剰余として演算するステップと、
前記第二の数を、前記第四の数を前記モジュラスで割った剰余として演算するステップと、を含む請求項34に記載の方法。
【請求項46】
導出鍵を選択するステップが、前記結果の最下位ビットのセットから当該導出鍵を選択するステップを含む請求項34に記載の方法。
【請求項47】
マスター鍵を受信する入力ポートと、
前記マスター鍵と一つの値を結合し変更されたマスター鍵を生成する結合器と、
前記変更されたマスター鍵をハッシュしてハッシュ値とするハッシャと、
前記ハッシュ値からビットのセットを選択して導出鍵とするビットセレクタと、を含むことを特徴とする装置。
【請求項48】
前記装置は、さらに、前記値を繰り返し、符号化された値をより長いビットパターンとして構成するリピータを含み、
前記結合器が前記マスター鍵と前記符号化された値を結合し、変更されたマスター鍵を生成するよう動作する請求項47に記載の装置。
【請求項49】
前記カウンタが、前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器を含み、
前記結合器が、前記符号化された値、前記第一のセグメント、及び前記第二のセグメントを結合し、前記変更されたマスター鍵を生成する請求項47に記載の装置。
【請求項50】
前記結合器が、さらに、
前記第一のセグメントと前記符号化された値に対して動作して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化された値に対して動作して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果と前記第二の結果を結合し、前記変更されたマスター鍵を生成する結合器と、を含む請求項49に記載の装置。
【請求項51】
前記結合器が、前記第一の結果と前記第二の結果を連結し、前記変更されたマスター鍵を生成する連結器を含む請求項50に記載の装置。
【請求項52】
前記ビットセレクタが、前記導出鍵として前記ハッシュ値から最下位ビット部分を選択するよう動作する請求項47に記載の装置。
【請求項53】
前記結合器が、前記マスター鍵とカウンタを結合し、前記変更されたマスター鍵を生成するよう動作する請求項47に記載の装置。
【請求項54】
マスター鍵を受信する入力ポートと、
前記マスター鍵を第一のセグメントと第二のセグメントに分割する分割器と、
一つの値を繰り返し、符号化された値をより長いビットパターンとして構成するリピータと、
前記第一のセグメントと前記符号化された値を演算して第一の結果を生成する第一のビット単位のバイナリ関数の実行と、
前記第二のセグメントと前記符号化された値を演算して第二の結果を生成する第二のビット単位のバイナリ関数の実行と、
前記第一の結果、前記第二の結果、及び前記符号化された値を結合し、前記変更されたマスター鍵を生成する結合器と、
前記変更されたマスター鍵をハッシュしてハッシュ値とするハッシャと、
前記結果から得られるビットのセットを導出鍵として選択するビットセレクタと、を含む導出鍵と、
前記導出鍵を使用してデータを暗号化するエンクリプタと、を含むことを特徴とするデータセキュリティ装置。
【請求項55】
さらに、データ変換器を含む請求項54に記載のデータセキュリティ装置。
【請求項56】
前記データ変換器が元のマスター鍵を前記マスター鍵に変換するよう動作する請求項55に記載のデータセキュリティ装置。
【請求項57】
前記データ変換器が、前記導出鍵を変換された導出鍵に変換するよう動作する請求項55に記載のデータセキュリティ装置。
【請求項58】
前記リピータが、カウンタを繰り返し、前記符号化された値をより長いビットパターンに構成するよう動作する請求項54に記載のデータセキュリティ装置。
【請求項59】
マスター鍵を、一つの値と結合し変更されたマスター鍵を生成するステップと、
前記変更されたマスター鍵をハッシュしてハッシュ値を生成するステップと、
前記ハッシュ値のビットから導出鍵を選択するステップと、を含むことを特徴とする鍵導出実行の方法。
【請求項60】
さらに、前記値のビットパターンを繰り返し、より長いビットパターンを構成するステップを含む請求項59に記載の方法。
【請求項61】
前記マスター鍵を一つの値と結合させるステップが、当該マスター鍵と当該値を使用してビット単位のバイナリ関数を演算するステップを含む請求項59に記載の方法。
【請求項62】
前記マスター鍵を前記値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第二のセグメントを前記値と結合して第二の結果を生成するステップと、
前記第一の結果と前記第二の結果を結合して前記変更されたマスター鍵を生成するステップと、を含む請求項59に記載の方法。
【請求項63】
前記第一の結果と前記第二の結果を結合するステップが、当該第一の結果と当該第二の結果を連結して前記変更されたマスター鍵を生成するステップを含む請求項62に記載の方法。
【請求項64】
前記導出鍵を選択するステップが、前記ハッシュ値の最下位ビット部分から当該導出鍵を選択するステップを含む請求項59に記載の方法。
【請求項65】
前記マスター鍵を一つの値と結合し変更されたマスター鍵を生成するステップが、当該マスター鍵とカウンタを結合し前記変更されたマスター鍵を生成するステップを含む請求項59に記載の方法。
【請求項66】
マスター鍵を一つの値と結合し変更されたマスター鍵を生成するステップと、
前記変更されたマスター鍵をハッシュしてハッシュ値を生成するステップと、
前記ハッシュ値のビットから導出鍵を選択するステップと、
前記導出鍵を使用してデータを暗号化するステップと、を含むことを特徴とする鍵導出を暗号化する方法。
【請求項67】
さらに、前記導出鍵の生成の前に、データ変換を前記マスター鍵に適用するステップを含む請求項66に記載の方法。
【請求項68】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群の数にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
前記第三のセグメントの関連付けられたビットに従って、転置関数を少なくとも一つの前記群に適用するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記転置群から構築するステップと、を含む請求項67に記載の方法。
【請求項69】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数に、前記指数を乗じた結果を演算するステップと、
指数的転置を、前記結果を前記予め定義されたモジュラスで割った剰余として演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項67に記載の方法。
【請求項70】
さらに、データ変換を前記導出鍵に適用するステップを含む請求項66に記載の方法。
【請求項71】
前記マスター鍵にデータ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第四のセグメントの前記ビットを複数の群の数にまとめるステップであって、前記複数の群の数が前記第三のセグメントのビット数と等しく、それぞれの群が同じビット数を有するステップと、
前記複数の群のそれぞれを前記第三のセグメントのビットと関連付けるステップと、
前記第三のセグメントの関連付けられたビットに従って、転置関数を少なくとも一つの前記群に適用するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記転置群から構築するステップと、を含む請求項70に記載の方法。
【請求項72】
前記データ変換を適用するステップが、
前記マスター鍵を、それぞれが少なくとも1ビットを含む第三のセグメントと第四のセグメントに分割するステップと、
前記第三のセグメントの関数として、予め定義されたモジュラスの関数に対して素である指数を乗ずる演算をするステップと、
前記第四のセグメントの関数に、前記指数を乗じた結果を演算するステップと、
指数的転置を、前記結果を前記予め定義されたモジュラスで割った剰余として演算するステップと、
前記変換されたマスター鍵を前記第三のセグメントと前記演算された指数的転置から構築するステップと、を含む請求項70に記載の方法。
【請求項73】
さらに、前記導出鍵を暗号化するステップを含む請求項66に記載の方法。
【請求項74】
さらに、前記暗号化された導出鍵を送信するステップを含む請求項73に記載の方法。
【請求項75】
さらに、前記暗号化されたデータを送信するステップを含む請求項66に記載の方法。
【請求項76】
前記マスター鍵を一つの値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第二のセグメントを前記値と結合して第二の結果を生成するステップと、
前記第一の結果と前記第二の結果を結合して前記変更されたマスター鍵を生成するステップと、を含む請求項66に記載の方法。
【請求項77】
前記第一の結果と前記第二の結果を結合するステップが、当該第一の結果と当該第二の結果を連結して前記変更されたマスター鍵を生成するステップを含む請求項76に記載の方法。
【請求項78】
前記マスター鍵を一つの値と結合するステップが、
前記マスター鍵を第一のセグメントと第二のセグメントに分割するステップと、
前記第一のセグメントを前記値と結合して第一の結果を生成するステップと、
前記第一の結果を前記第二のセグメントと結合して前記変更されたマスター鍵を生成するステップと、を含む請求項66に記載の方法。
【請求項79】
前記マスター鍵を一つの値と結合して変更されたマスター鍵を生成するステップが、当該マスター鍵をカウンタと結合して変更されたマスター鍵を生成するステップを含む請求項66に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8】
【図9】
【図10A】
【図10B】
【図10C】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8】
【図9】
【図10A】
【図10B】
【図10C】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2009−71854(P2009−71854A)
【公開日】平成21年4月2日(2009.4.2)
【国際特許分類】
【出願番号】特願2008−282834(P2008−282834)
【出願日】平成20年11月4日(2008.11.4)
【分割の表示】特願2007−525746(P2007−525746)の分割
【原出願日】平成17年8月9日(2005.8.9)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(507044631)シー エム エル エー, リミテッド ライアビリティ カンパニー (5)
【氏名又は名称原語表記】CMLA, LLC.
【住所又は居所原語表記】c/o Intel Corporation 2111 NE 25th Avenue, M/S JF2−98 Hillsboro, Oregon 97124 United States of America
【Fターム(参考)】
【公開日】平成21年4月2日(2009.4.2)
【国際特許分類】
【出願日】平成20年11月4日(2008.11.4)
【分割の表示】特願2007−525746(P2007−525746)の分割
【原出願日】平成17年8月9日(2005.8.9)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(507044631)シー エム エル エー, リミテッド ライアビリティ カンパニー (5)
【氏名又は名称原語表記】CMLA, LLC.
【住所又は居所原語表記】c/o Intel Corporation 2111 NE 25th Avenue, M/S JF2−98 Hillsboro, Oregon 97124 United States of America
【Fターム(参考)】
[ Back to top ]