(57)【要約】  カスケードブロック暗号化システムにおけるデータの暗号化は、第１当事者と第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、第１暗号化アルゴリズムを適用するステップと、前記秘密インナーキーを使用して複数の平文データブロックから複数の暗号文データブロックを生成するため、所定のラウンド数の第２暗号化アルゴリズムを適用するステップと、前記第１暗号化アルゴリズムと前記第２暗号化アルゴリズムを適用するステップを繰り返すステップとにより実現される。
2008523728.tif 000002
【特許請求の範囲】
【請求項１】
データを暗号化する方法であって、
第１当事者と第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、第１暗号化アルゴリズムを適用するステップと、
前記秘密インナーキーを使用して複数の平文データブロックから複数の暗号文データブロックを生成するため、所定のラウンド数の第２暗号化アルゴリズムを適用するステップと、
前記第１暗号化アルゴリズムと前記第２暗号化アルゴリズムを適用するステップを繰り返すステップと、
を有する方法。
【請求項２】
前記第２暗号化アルゴリズムの計算は、前記第１暗号化アルゴリズムの計算より少なく、
前記第２暗号化アルゴリズムは、前記第１暗号化アルゴリズムより弱い、請求項１記載の方法。
【請求項３】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムから構成される、請求項１記載の方法。
【請求項４】
前記第２暗号化アルゴリズムは、Ｒｉｊｎｄａｅｌアルゴリズムから構成される、請求項１記載の方法。
【請求項５】
前記所定のラウンド数は２又は３である、請求項４記載の方法。
【請求項６】
前記第２暗号化アルゴリズムは、Ｓｅｒｐｅｎｔアルゴリズムから構成される、請求項１記載の方法。
【請求項７】
前記所定のラウンド数は３又は４である、請求項６記載の方法。
【請求項８】
前記共有される秘密は、セッションキーから構成される、請求項１記載の方法。
【請求項９】
前記第１及び第２当事者は、該当事者の間で共有される秘密を交換するためキー交換手順を実行する、請求項１記載の方法。
【請求項１０】
前記第１暗号化アルゴリズムを適用するステップと、前記第２暗号化アルゴリズムを適用するステップと、前記繰り返すステップとを、すべての平文データブロックが暗号文データに暗号化されるまで繰り返すステップをさらに有する、請求項１記載の方法。
【請求項１１】
複数のマシーン可読命令を有する記憶媒体から構成される物であって、
前記命令がプロセッサにより実行されると、前記命令は、平文データを暗号文データに暗号化し、前記命令は、
第１当事者と第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、第１暗号化アルゴリズムを適用するステップと、
前記秘密インナーキーを使用して複数の平文データブロックから複数の暗号文データブロックを生成するため、所定のラウンド数の第２暗号化アルゴリズムを適用するステップと、
前記第１暗号化アルゴリズムと前記第２暗号化アルゴリズムを適用するステップを繰り返すステップと、
を実行することから構成される物。
【請求項１２】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムから構成される、請求項１１記載の物。
【請求項１３】
前記第２暗号化アルゴリズムは、ＲｉｊｎｄａｅｌアルゴリズムとＳｅｒｐｅｎｔアルゴリズムの少なくとも１つから構成され、
前記所定のラウンド数は、２、３及び４の少なくとも１つから構成される、請求項１１記載の物。
【請求項１４】
第１当事者と第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成する第１暗号化ユニットと、
前記秘密インナーキーを使用して複数の平文データブロックから複数の暗号文データブロックを生成する所定のラウンド数について動作する第２暗号化ユニットと、
を有するカスケードブロック暗号化システム。
【請求項１５】
前記共有される秘密は、セッションキーから構成される、請求項１４記載のシステム。
【請求項１６】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムを実現する、請求項１４記載のシステム。
【請求項１７】
前記第２暗号化アルゴリズムは、ＲｉｊｎｄａｅｌアルゴリズムとＳｅｒｐｅｎｔアルゴリズムの少なくとも１つから構成され、
前記所定のラウンド数は、２、３及び４の少なくとも１つから構成される、請求項１４記載のシステム。
【請求項１８】
データを解読する方法であって、
第１当事者と第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、第１暗号化アルゴリズムを適用するステップと、
前記秘密インナーキーを使用して複数の暗号文データブロックから複数の平文データブロックを生成するため、所定のラウンド数の解読アルゴリズムを適用するステップと、
前記第１暗号化アルゴリズムと前記解読アルゴリズムを適用するステップを繰り返すステップと、
を有する方法。
【請求項１９】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムから構成される、請求項１８記載の方法。
【請求項２０】
前記解読アルゴリズムは、ＲｉｊｎｄａｅｌアルゴリズムとＳｅｒｐｅｎｔアルゴリズムの少なくとも１つから構成され、
前記所定のラウンド数は、２、３及び４の少なくとも１つから構成される、請求項１８記載の方法。
【請求項２１】
データを暗号化する方法であって、
第１当事者と第２当事者との間で共有される秘密を使用して共有秘密状態を生成するステップと、
前記第１当事者と前記第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、カウンタを暗号化するカウンタモードにより第１暗号化アルゴリズムを適用するステップと、
前記秘密インナーキーと前記共有秘密状態とを使用して複数の平文データブロックから複数の暗号文データブロックを生成するため、所定のラウンド数の第２暗号化アルゴリズムを適用するステップと、
各ラウンドの間に前記共有秘密状態を更新するステップと、
前記カウンタを変更し、前記第１暗号化アルゴリズムを適用するステップと、前記第２暗号化アルゴリズムを適用するステップと、前記更新するステップとを繰り返すステップと、
を有する方法。
【請求項２２】
第２の所定のラウンド数の後、新たな共有秘密状態を生成するステップをさらに有する、請求項２１記載の方法。
【請求項２３】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムから構成される、請求項２１記載の方法。
【請求項２４】
前記第２暗号化アルゴリズムは、Ｒｉｊｎｄａｅｌアルゴリズムから構成される、請求項２１記載の方法。
【請求項２５】
前記所定のラウンド数は２又は３である、請求項２４記載の方法。
【請求項２６】
前記第２暗号化アルゴリズムは、Ｓｅｒｐｅｎｔアルゴリズムから構成される、請求項２１記載の方法。
【請求項２７】
前記所定のラウンド数は３又は４である、請求項２６記載の方法。
【請求項２８】
前記共有される秘密は、セッションキーから構成される、請求項２１記載の方法。
【請求項２９】
前記第１及び第２当事者は、該当事者の間で共有される秘密を交換するためキー交換手順を実行する、請求項２１記載の方法。
【請求項３０】
前記第１暗号化アルゴリズムを適用するステップと、前記第２暗号化アルゴリズムを適用するステップと、前記繰り返すステップとを、すべての平文データブロックが暗号文データに暗号化されるまで繰り返すステップをさらに有する、請求項３１記載の方法。
【請求項３１】
複数のマシーン可読命令を有する記憶媒体から構成される物であって、
前記命令がプロセッサにより実行されると、前記命令は、平文データを暗号文データに暗号化し、前記命令は、
第１当事者と第２当事者との間で共有される秘密を使用して共有秘密状態を生成するステップと、
前記第１当事者と前記第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、カウンタを暗号化するカウンタモードにより第１暗号化アルゴリズムを適用するステップと、
前記秘密インナーキーと前記共有秘密状態とを使用して複数の平文データブロックから複数の暗号文データブロックを生成するため、所定のラウンド数の第２暗号化アルゴリズムを適用するステップと、
各ラウンドの間に前記共有秘密状態を更新するステップと、
前記カウンタを変更し、前記第１暗号化アルゴリズムを適用するステップと、前記第２暗号化アルゴリズムを適用するステップと、前記更新するステップとを繰り返すステップと、
を実行する物。
【請求項３２】
第２の所定のラウンド数の後、新たな共有秘密状態を生成するステップを実行する命令をさらに有する、請求項３１記載の物。
【請求項３３】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムから構成される、請求項３１記載の物。
【請求項３４】
前記第２暗号化アルゴリズムは、ＲｉｊｎｄａｅｌアルゴリズムとＳｅｒｐｅｎｔアルゴリズムの少なくとも１つから構成され、
前記所定のラウンド数は、２、３及び４の少なくとも１つから構成される、請求項３１記載の物。
【請求項３５】
第１当事者と第２当事者とにより知られている共有秘密状態と、
前記第１当事者と前記第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、カウンタを暗号化するためカウンタモードにより動作する第１暗号化ユニットと、
前記秘密インナーキーと前記共有秘密状態とを使用して暗号化マスクを生成するため、所定のラウンド数により動作する第２暗号化ユニットと、
複数の平文データブロックと前記暗号化マスクとから複数の暗号文データブロックを生成する排他的論理和（ＸＯＲ）ロジックと、
ラウンドの間で前記共有秘密状態を変更する第１更新ユニットと、
を有するカスケードブロック暗号化システム。
【請求項３６】
第２の所定のラウンド数の後、新たな共有秘密状態を生成する第２更新ユニットをさらに有する、請求項３５記載のシステム。
【請求項３７】
前記共有される秘密は、セッションキーから構成される、請求項３５記載のシステム。
【請求項３８】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムを実現する、請求項３５記載のシステム。
【請求項３９】
前記第２暗号化アルゴリズムは、ＲｉｊｎｄａｅｌアルゴリズムとＳｅｒｐｅｎｔアルゴリズムの少なくとも１つから構成され、
前記所定のラウンド数は、２、３及び４の少なくとも１つから構成される、請求項３５記載のシステム。
【請求項４０】
データを解読する方法であって、
第１当事者と第２当事者との間で共有される秘密を使用して共有秘密状態を生成するステップと、
前記第１当事者と前記第２当事者との間で共有される秘密をキーとして使用して秘密インナーキーを生成するため、カウンタを暗号化するカウンタモードにより第１暗号化アルゴリズムを適用するステップと、
前記秘密インナーキーと前記共有秘密状態とを使用して複数の暗号文データブロックから複数の平文データブロックを生成するため、所定のラウンド数の解読アルゴリズムを適用するステップと、
各ラウンドの間に前記共有秘密状態を更新するステップと、
前記カウンタを変更し、前記第１暗号化アルゴリズムを適用するステップと、前記解読アルゴリズムを適用するステップと、前記更新するステップとを繰り返すステップと、
を有する方法。
【請求項４１】
前記第１暗号化アルゴリズムは、カウンタモード（ＣＴＲ）により動作するＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）暗号化アルゴリズムから構成される、請求項４０記載の方法。
【請求項４２】
前記解読アルゴリズムは、ＲｉｊｎｄａｅｌアルゴリズムとＳｅｒｐｅｎｔアルゴリズムの少なくとも１つから構成され、
前記所定のラウンド数は、２、３及び４の少なくとも１つから構成される、請求項４０記載の方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本特許文献の開示の一部は、著作権管理を受ける題材を含む。著作権所有者は特許商標庁の特許ファイル又はレコードに現れるとき、特許文献又は特許開示の何れかによるファクシミリ再生に異議を唱えるものではないが、そうでない場合には、如何なるすべての著作権を留保する。
【０００２】
［背景］
１．分野
本発明は、一般に暗号化に関し、より詳細には、暗号化及び解読処理に関する。
２．説明
暗号化アルゴリズムが、認証されていないアクセスから平文データのコンテンツをプロテクトするため、平文データを暗号文データに暗号化するのに使用される。この処理を実行するため、各種暗号化アルゴリズムが当該分野において知られている。暗号化は、ハードウェア又はソフトウェアにより実現されるかもしれない。ソフトウェアにより実現されるとき、一部の暗号化アルゴリズムはかなりの処理リソースを消費するかもしれない。例えば、平文データが未圧縮の高品位ビデオコンテンツを表すとき、ソフトウェアベースの暗号化は、一部のアプリケーションについて遅すぎるかもしれない。このため、暗号化処理をスピードアップしつつ、適切なセキュリティを提供する技術が所望される。さらに、解読処理をスピードアップするための対応する技術がまた所望される。
【０００３】
［詳細な説明］
本発明の実施例は、高速かつセキュアに暗号化アルゴリズムを実行するための方法及び装置から構成される。本発明の実施例は、縮小ラウンド（ｒｅｄｕｃｅｄ  ｒｏｕｎｄ）暗号化アルゴリズムと共に強力カウンタモード（ｓｔｒｏｎｇ  ｃｏｕｎｔｅｒ  ｍｏｄｅ）暗号化アルゴリズムを利用して、より高速な暗号化を実現し、さらに強力なセキュリティを維持する。実施例は、鍵の材料（インナーキー）を生成するためカウンタモードにおいて強力なアウター暗号（ｏｕｔｅｒ  ｃｉｐｈｅｒ）と、各生成されたインナーキーによる限られた回数の暗号化を実行するより高速であって相対的に弱いインナー暗号（ｉｎｎｎｅｒ  ｃｉｐｈｅｒ）とを使用するカスケードブロック暗号システムを含む。インナーキーは、敵対者がインナー暗号を破るのに十分な平文／暗号文ペアを取得することができないように、しばしば変更されてもよい。さらに、敵対者が１つのインナーキーを計算することができたとしても、この事実は、敵対者が他の何れかのインナーキーを計算することに役立つものでない。一部の実施例では、共有秘密状態が、暗号化処理全体のセキュリティを向上させるため、カウンタモードにより対称暗号化アルゴリズムから生成されてもよい。さらに、対応する技術が、解読処理に利用されてもよい。
【０００４】
本明細書における本発明の“一実施例”又は“実施例”という表現は、当該実施例に関して記載される特定の特徴、構成又は特性が本発明の少なくとも１つの実施例に含まれることを意味する。従って、明細書を通じて各所に現れる“一実施例では”という表現が現れることは、必ずしもすべてが同一の実施例を参照しているとは限らない。
【０００５】
図１は、本発明の実施例による暗号化ユニットを示す。暗号化ユニット１００は、ｋ個の平文データブロックＰ（０．．ｋ−１）１０２を暗号文データＣ（０．．ｋ−１）１０４に変換するための暗号化処理を実行する。いくつかの実施例によると、暗号化ユニット１００は、以下でさらに規定されるような暗号化処理を実行するのに共有秘密１０６と共有秘密状態１０８の各値を利用する。暗号化ユニット１００は、ハードウェア又はソフトウェアの何れかにより実現されてもよい。解読を実行するため、解読ユニット（図示せず）は、対応する解読処理を利用して暗号文ブロックを平文に変換する。
【０００６】
図２は、本発明の実施例による暗号化ユニット１００により実行される暗号化処理を示すフロー図２０００である。プロテクトされた状態によりデータを交換することを所望する２つの当事者が存在すると仮定する。第１当事者と第２当事者は、ブロック２０２において共有秘密１０６を規定するため、周知のキー交換手順を実行する。一実施例では、周知のＤｉｆｆｉｅ−Ｈｅｌｌｍａｎキー交換手順が利用されるかもしれない。一実施例では、共有秘密は、共有秘密の少なくとも一部であるセッションキーから構成される。セッションキーは、対称暗号化処理に利用される暗号キーであるかもしれない。他の実施例では、共有秘密は、何れかの長さのビット文字列（１０２４ビット、２０４８ビットなど）から構成され、セッションキーは、入力パラメータとして共有秘密を使用する計算によって共有秘密から求められてもよい。
【０００７】
ブロック２０４において、インナーキーカウンタｊが初期化される。ブロック２０６において、平文データを暗号化することを所望する当事者が第ｊインナーキーを生成する。ここで、各インナーキー（ｊ＝０．．インナーキーの個数−１）は、キーとしてセッションキーを使用するカウンタｊの対称暗号化に等しい。一実施例では、対称暗号化演算は、インナーキーストリームを生成するため、ＡＥＳ  Ｃｏｕｎｔｅｒ（ＣＴＲ）モードによる周知のＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）アルゴリズム（ｔｈｅ  Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ（ＮＩＳＴ）  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−３８Ａ，２００１  ｅｄｉｔｉｏｎにおいて規定されるような）のアプリケーションから構成される。ＡＥＳのカウンタモードの典型的な使用では、カウンタｊの暗号化が、Ｃ（ｉ）＝Ｐ（ｉ）  ＸＯＲ  ＡＥＳ（ｊ）など、平文ブロックＰ（ｉ）を暗号文ブロックに直接暗号化するのに使用される。ここで、ＡＥＳ（ｊ）は、ＡＥＳキーとしてセッションキーを使用するカウンタｊのＡＥＳ暗号化を表す。しかしながら、本発明の実施例では、インナーキーはここに記載されるような異なる新規な方法により利用されてもよい。ＩｎｎｅｒＫｅｙ（ｊ）＝ＡＥＳ（ｊ）を第ｊインナーキーを表すとする。ブロック２０８において、暗号化の当事者は、平文ブロックＣ（ｊ＊ｋ＋０），Ｃ（ｊ＊ｋ＋１），．．．，Ｃ（ｊ＊ｋ＋ｋ−１）を形成するため、ＩｎｎｅｒＫｅｙ（ｊ）及び既知の選択された“ｌｉｇｈｔｗｅｉｇｈｔ”暗号化（ＬＷＥ）アルゴリズムを利用して、ｋ個の平文ブロックＰ（ｊ＊ｋ＋０），Ｐ（ｊ＊ｋ＋１），．．．，Ｐ（ｊ＊ｋ＋ｋ−１）を暗号化する。
【０００８】
一実施例では、ブロック２０８の暗号化は以下のように実行される。
【０００９】
ｉ＝ｊ＊ｋ＋０，．．ｊ＊ｋ＋ｋ−１に対して、“ｌｉｇｈｔｗｅｉｇｈｔ”暗号化アルゴリズム（ＬＷＥ）を用いてＩｎｎｅｒＫｅｙ（ｊ）により暗号化されたＣ（ｉ）＝Ｐ（ｉ）とする。
【００１０】
次に、ブロック２１０において、インナーキーカウンタｊがインクリメントされる。ブロック２１２において、平文データのすべてのブロックが暗号化されている場合、処理は終了する。そうでない場合には、さらなる平文データブロックが暗号化され、カウンタｊのインクリメントされた値を用いて、ブロック２０６において次のｋ個のブロックのセットに処理が継続する。
【００１１】
実施例では、“ｌｉｇｈｔｗｅｉｇｈｔ”暗号化（ＬＷＥ）アルゴリズムは、暗号化が標準的な実現形態よりはるかに高速となるように、より少ないラウンドを使用した周知の標準的な暗号化アルゴリズムから構成されてもよい。例えば、周知のＲｉｊｎｄａｅｌアルゴリズムの２又は３のみのラウンドが１０の代わりに使用されてもよい。あるいは、３２ラウンドの代わりに、周知のＳｅｒｐｅｎｔアルゴリズムの３又は４ラウンドのみが使用されてもよい。より少数のラウンドにもかかわらず、結果として得られる暗号化は、本発明に関して十分なセキュリティを提供する。Ｒｉｊｎｄａｅｌ及びＳｅｒｐｅｎｔアルゴリズムに関する詳細は、“Ｔｈｅ  Ｆｉｒｓｔ  ＡＥＳ  Ｃａｎｄｉｄａｔｅ  Ｃｏｎｆｅｒｅｎｃｅ”、ＮＩＳＴ，Ａｕｇｕｓｔ  ２０−２２，１９９８の会報に見つけることができる。他の実施例では、これらのアルゴリズムの何れかの他の数のラウンドが使用されてもよく、又は他の暗号化アルゴリズムが使用されてもよい。
【００１２】
本実施例では、強力カウンタモード暗号化アルゴリズム（ＡＥＳなど）が、より高速な暗号化を実現すると共に、強力なセキュリティを維持するため、縮小ラウンド暗号化アルゴリズム（少数のラウンドのＲｉｊｎｄａｅｌやＳｅｒｐｅｎｔなど）と共に使用されてもよい。
【００１３】
テーブルＩにおいて、本発明の実施例の擬似コードが示される。
【００１４】
【表１】
2008523728.tif 000003
【００１５】
図３は、本発明の実施例による暗号化システムの図である。図３のカスケードブロック暗号では、カウンタ値３０４が、セッションキー３０２などの共有秘密と、カウンタモード３０６によりＡＥＳなどの対称暗号化アルゴリズムを使用してインナーキー３０８を生成するため暗号化されてもよい。インナーキー３０８は、平文１０２のブロックを暗号文１０４に暗号化するため、ｌｉｇｈｔｗｅｉｇｈｔ暗号化（ＬＷＥ）ユニットにより使用されるかもしれない。一実施例では、ＬＷＥユニットは、周知のＲｉｊｎｄａｅｌアルゴリズムの２又は３ラウンドの実現形態から構成される。あるいは、ＬＷＥユニットは、周知のＳｅｒｐｅｎｔアルゴリズムの３又は４ラウンドを実現してもよい。インナーキー３０８は、カウンタ値３０４を変更し、この変更されたカウンタ値とカウンタモードによるＡＥＳアルゴリズムを用いて新たなインナーキーを生成することによって、頻繁に変更されるかもしれない。一実施例では，カウンタ値は、選択されたｋ個の平文データ毎にインクリメントされてもよい。インナーキーを頻繁に変更することによって、結果として得られる暗号文のセキュリティは向上するかもしれない。
【００１６】
図４は、本発明のさらなる実施例による暗号化ユニット１００により実行される暗号化処理を示すフロー図である。本実施例では、カウンタモードによるＡＥＳなどの暗号化アルゴリズムは、インナーキーと共有状態を提供するためアウター暗号として使用されてもよく、より弱くて高速な暗号化アルゴリズムが、暗号化マスクを生成するためインナー暗号として使用されてもよい。暗号化マスクは、暗号文データを生成するため、平文データと排他的論理和演算されてもよい。
【００１７】
カスケード暗号構成は、アウター及びインナー暗号を有する。アウター暗号は、インナー暗号に使用されるキーを生成するためのキーストリーム生成装置として使用されるかもしれない。アウター暗号はまた、暗号化マスクの生成においてインナー暗号により使用される共有秘密状態の状態生成装置として使用されるかもしれない。インナー暗号は、大量のデータを処理するため、暗号のスピードを向上させ、処理パワー量を低減するのにより少ないラウンド数により使用されてもよい。インナー暗号は、平文データと排他的論理和演算されたビットストリームを生成するため、状態を暗号化するのに使用されるかもしれない。共有秘密状態のすべてが暗号化された後、共有秘密状態を変更するため、アップデート関数が適用されてもよい。その後、新たな共有秘密状態がビットストリームを拡張するのに暗号化されるかもしれない。インナー暗号の縮小された長さにより、インナー暗号が使用されることが許されるブロック数が小さく維持される。ブロックリミットに達すると、アウター暗号が新たなインナー暗号キーと共有秘密状態を生成するため再使用される。
【００１８】
プロテクトされた状態によりデータを交換することを所望する２つの当事者がいると仮定する。第１当事者と第２当事者は、ブロック６００において、共有秘密１０６を規定するため周知のキー交換手順を実行する。一実施例では、共有秘密は、共有秘密の一部であるセッションキーを有する。セッションキーは、対称暗号化処理に使用される暗号キーであるかもしれない。他の実施例では、共有秘密は、何れかの長さのビット文字列から構成される。共有秘密は、共有秘密状態Ｒ１０８として知られる複数の暗号化パラメータを生成するのに使用されるかもしれない。ブロック６０２において、各当事者は、共有秘密に基づき共有秘密状態Ｒの自らのコピーを生成する。共有秘密状態Ｒの暗号化パラメータを生成するための１つの方法は、既知の暗号化ハッシュ関数を適用することである。各暗号化パラメータに対して、パラメータの名前と共有秘密が、暗号化パラメータを形成するためハッシュ関数を適用することによって一緒にハッシュ処理されるかもしれない。共有秘密状態Ｒの暗号化パラメータを生成する他の方法は、既知の暗号化関数（ＡＥＳなど）を適用することである。各暗号化パラメータに対して、暗号化パラメータを形成するため、パラメータの名前が共有秘密１０６により暗号化される。他の実施例では、他の方法がまた使用されてもよい。このため、これら２つの当事者が共有秘密１０６を有するため、それらは他の共有秘密１０８を構成することができる。ブロック６０３において、インナーキーカウンタｊが初期化されてもよい。
【００１９】
ブロック６０４において、平文データを暗号化することを所望する当事者が、第ｊインナーキーを生成する。ここで、各インナーキー（ｊ＝０．．インナーキーの個数−１）は、キーとして共有秘密を用いるカウンタｊの対称暗号化に等しい。一実施例では、用いられる共有秘密はセッションキーから構成される。一実施例では、対称暗号化処理は、インナーキーストリームを生成するため、ＡＥＳ  Ｃｏｕｎｔｅｒ（ＣＴＲ）モードによる周知のＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）アルゴリズム（ｔｈｅ  Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ（ＮＩＳＴ）  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−３８Ａ，２００１  ｅｄｉｔｉｏｎにおいて規定されるような）のアプリケーションから構成される。ＡＥＳのカウンタモードの典型的な使用では、キーｊの暗号化が、Ｃ（ｉ）＝Ｐ（ｉ）  ＸＯＲ  キーＡＥＳ（ｊ）など、平文ブロックＰ（ｉ）を暗号文ブロックに直接暗号化するのに使用される。ここで、ＡＥＳ（ｊ）は、ＡＥＳキーとしてセッションキーを使用するカウンタｊのＡＥＳ暗号化を表す。しかしながら、本発明の実施例では、インナーキーはここに記載されるような異なる新規な方法により利用されてもよい。
【００２０】
一実施例では、Ｒ０，Ｒ１，．．．，Ｒｋ−１は共有秘密状態Ｒを示すとする。ここで、ｋはブロック６０２において生成される暗号化パラメータの個数である。ブロック６０６において、暗号化を行う当事者が、暗号文ブロックＣ（０），Ｃ（１），．．．，Ｃ（ｋ−１）を構成するため、ブロック６０４において生成されたインナーキーと共有秘密状態Ｒを利用してｋ個の平文ブロックＰ（０），Ｐ（１），．．．，Ｐ（ｋ−１）を暗号化する。
【００２１】
一実施例では、ブロック６０６の暗号化は以下のように実行される。
【００２２】
ｉ＝０．．ｋ−１に対して、Ｔ（ｉ）＝Ｒ（ｉ）を“ｌｉｇｈｔｗｅｉｇｈｔ”暗号化アルゴリズム（ＬＷＥ）を用いてインナーキー（ｊ）により暗号化されるとする。ここで、Ｔは暗号化ユニット内の一時的なストレージであり、このとき、Ｃ（ｉ）＝Ｐ（ｉ）  ＸＯＲ  Ｔ（ｉ）とする。
【００２３】
次にブロック６０８において、共有秘密状態Ｒが、“ｌｉｇｈｔｗｅｉｇｈｔ”形式により更新されてもよい。一実施例では、ｌｉｇｈｔｗｅｉｇｈｔ更新は、インナー暗号として２ラウンドＡＥＳ暗号により実行されてもよい。他の実施例では、ｌｉｇｈｔｗｅｉｇｈｔ更新は、インナー暗号として３ラウンドＳｅｒｐｅｎｔ暗号により実行されてもよい。これらはキー拡張関数に類似し、Ｒ（ｉ）値の非線形ミキシングを提供し、ＬＷＥアルゴリズムより良好なパフォーマンスを提供する。
【００２４】
共有秘密状態のｌｉｇｈｔｗｅｉｇｈｔ更新（ＬＷＵＤ）のＡＥＳの実施例では、ＬＷＵＤとＡＥＳキースケジュールの間の相違は、ＬＷＵＤは最後のブロック値を用いてＲ（ｉ）値の間のミキシングを提供するということである。インナー暗号としてＡＥＳと共に使用されるＬＷＵＤ関数は、キースケジュールに類似したプロセスを使用する。ＬＷＵＤ関数は、状態データ内の１つのＲ（ｉ）値に対して機能する。各Ｒ（ｉ）値は、ＦＩＰＳ１９７に記載され、逐次的に更新されるように処理される４つの３２ビット値として扱われる。第１の３２ビット値Ｒｉ，０は、前のブロックの最後のワードＲｉ−１，３からの入力を含むＳボックスルックアップを利用する。インデックスｉがゼロである場合、ＲＲＣＯＵＮＴ−１，３の値（ラップアラウンド）が使用されてもよい。以下の処理シーケンスが、Ｒｉ，０を更新するのに利用されてもよい。
【００２５】
１．ｉがゼロである場合、ｔｅｍｐをＲｉ−１，３に設定し、そうでない場合、ｔｅｍｐをＲＲＣＯＵＮＴ−１，３に設定する。
【００２６】
２．標準的なＡＥＳ  ＲｏｔＷｏｒｄ（）変換をｔｅｍｐに適用する。リトルエンディアンプロセッサでは、これは３２値の２４ビット左回転に等価である。
【００２７】
３．ｔｅｍｐの各バイトをそれの標準的なＡＥＳのＳボックス値と置換させるため、標準的なＡＥＳ  ＳｕｂＢｙｔｅｓ（）変換をｔｅｍｐに適用する。
【００２８】
４．Ｒｉ，０をｔｅｍｐ  ＸＯＲ  Ｒｉ，０に設定する。
【００２９】
残りの値であるＲｉ，１からＲｉ，３は、それらをそれら自体のＸＯＲに設定することによって、ブロックの前のワードにより更新される。例えば、Ｒｉ，２は、Ｒｉ，２  ＸＯＲ  Ｒｉ，１に設定される。一実施例では、さらなる行シフトがこのポイントで追加可能であり、これにより、行２は左に１バイト循環的にシフトされ、行３は左に２バイト循環的にシフトされ、行４は左に３バイト循環的にシフトされる。他の実施例では、ステップ３の後でなくステップ３の前に、ｔｅｍｐとＲｉ，０のＸＯＲを行うことも可能である。
【００３０】
Ｒｉ−１，３のラップアラウンドリファレンスを処理するための最適化は以下の通りである。新たな状態データが生成された後、ｔｅｍｐをＲＲＣＯＵＮＴ−１，３に設定する。これは、最初に状態ブロックＲ０が更新されるラップアラウンドケースを扱う。さらに、ブロックが更新されるときは常に、ｔｅｍｐをＲｉ，３に設定する。これは、インナーキーが置換されるまで、すべてのブロック更新についてラップアラウンドケースを含むすべてのケースを自動的に扱う。
【００３１】
Ｓｅｒｐｅｎｔの実施例では、異なるＬＷＵＤ関数が使用されるかもしれない。Ｓｅｒｐｅｎｔ暗号化により使用されるアップデート関数は、各々が１２８ビットの４つの標準的なＳｅｒｐｅｎｔブロックのシーケンスに対して機能する。図５は、１６ワードの各セットを更新された関数によって使用される格子パターンにマッピングすることを示している。これらのワードが、メモリ順に示される。上記の推奨されたパラメータを使用して、状態データの８つの１２８ビットＳｅｒｐｅｎｔブロックが、２つの格子データセットに構成される。
【００３２】
図６は、本実施例の全体的な状態アップデート関数のフローを示す。本プロセスは、アップデートステップ間でデータを伝搬するのに使用される一時的な４×４の“アップデート格子”（図示せず）を利用する。この図を左から右に追跡することによって、推奨されたパラメータによる状態の交信を完了させるのに実行される処理が示される。アップデート関数は、以下のステップを利用する。
【００３３】
１．状態データの直近の格子をアップデート格子にコピーする。
【００３４】
２．データ回転処理をアップデート格子に適用する。
【００３５】
３．状態の各格子に対して、以下を実行する。
【００３６】
４．Ｓボックス置換をアップデート格子に適用する。
【００３７】
５．アップデート格子の各ワードをそれ自体と現在の状態格子の対応するワードとのＸＯＲにより置換する。
【００３８】
６．現在の状態格子のコンテンツをアップデート格子のコンテンツにより上書きする。
【００３９】
回転段階は、状態アップデート関数の開始時に１回だけ実行される（上記ステップ２）。それは、状態データのすべてのビット間の重たいやりとりを生じさせる。それは、処理の一部がその他のアップデート処理と比較して“低速”であるため、状態データの各格子の処理では実行されない。
【００４０】
図４に戻って、ブロック６１０において、現在のＩｎｎｅｒＫｅｙ（ｊ）を使用して、ブロック６０６と６０８の暗号化及び更新が選択された回数（ここではｇにより示される）繰り返されるようにしてもよい。その後、ブロック６１２において新たなインナーキーが生成され、平文データＰのｋ＊ｇ個のブロックに対して、ブロック６０６、６０８及び６１０が繰り返されてもよい。ブロック６１４において、選択された回数の繰り返しｆ毎に、新たな共有秘密状態Ｒが生成されるようにしてもよい。一実施例では、新たな共有秘密状態Ｒの生成は、“強力なアップデート”により新たなインナーキーを使用して共有秘密状態の各パラメータを暗号化するＡＥＳ暗号化アルゴリズムの適用を有する。他の実施例では、新たな共有秘密状態Ｒの生成は、カウンタｊをインクリメントし、Ｒ０，Ｒ１，．．．，Ｒｋ−１の各値についてカウンタの次のＫ個の値の暗号化を使用することによって実現されるかもしれない。すべての平文データブロックが暗号文データに処理されると、処理は終了する。
【００４１】
一実施例では、ｆ＊ｋ＊ｇが２５６以下になるように、ｋ、ｇ及びｆのパラメータが選択されるかもしれない。実施例では、共有秘密状態Ｒの各コンポーネントは、１２８ビットキーを共有秘密として使用して暗号化されてもよい。
【００４２】
本発明の実施例は、テーブルＩＩの擬似コードにより以下でより形式的に定義される。
【００４３】
【表２】
2008523728.tif 000004
【００４４】
本発明の実施例の効率性は、周知のＡＥＳアルゴリズムの実現形態に対して有利である。ＬＷＥアルゴリズムが周知のＲｉｊｎｄａｅｌアルゴリズムの２ラウンド又は周知のＳｅｒｐｅｎｔアルゴリズムの３ラウンドである場合、ＬＷＥの処理時間は、ＡＥＳの処理時間の約１／５となる。ｆ＊ｇ＊ｋ個の平文ブロックを暗号化するためのＡＥＳ暗号化の回数をカウントする。ＬＷＵＤとＳＵＤ方法は上述された具体例のものであると仮定する。ｆ個のマスクを計算するためｆ回のＡＥＳ暗号化が存在する。また、ｍａｓｋ（ｊ）を使用するのにＬＷＥを設定するため、ｆ回のキー拡張処理が存在する。これをＡＥＳ暗号化とほぼ同一の時間として近似する。ＳＵＤを計算するため（ｋ＋１）回のＡＥＳ暗号化が存在する。ＬＷＵＤを計算するためｇ＊ｆ回のＬＷＥ暗号化が存在し、Ｔ（ｉｋ）のものを計算するためｆ＊ｇ＊ｋ回のＬＷＥ暗号化が存在する。これにより、合計の処理時間は、およそ（２ｆ＋ｋ＋１＋ｇ＊ｆ／５＋ｆ＊ｇ＊ｋ／５）回のＡＥＳ暗号化となる。平文ブロック毎に償却された計算量を取得するため、これをｆ＊ｇ＊ｋにより除算する場合、２／（ｇｋ）＋１／（ｆｇ）＋１／（ｆｇｋ）＋１／（５ｋ）＋１／５を得る。ｆ＝ｇ＝ｋ＝１６と設定すると、４以上の予測されるスピードの向上に対して、この和はＡＥＳ暗号化の約２３％となる。一部の実施例では、Ｒｉｊｎｄａｅｌの３ラウンド又はＳｅｒｐｅｎｔの４ラウンドが好適であるが、スピードの向上はより少なくなる。
【００４５】
図７は、本発明のさらなる実施例による暗号化システムの図である。図７のカスケードブロック暗号では、カウンタ値７０４は、セッションキーなどの共有秘密と、カウンタモード７０６によるＡＥＳなどの対称暗号化アルゴリズムを用いてインナーキー７０８を生成するため、暗号化されてもよい。一実施例では、ＡＥＳはまた、共有秘密状態７１２を生成するため使用されてもよい。インナーキー７０８は、平文ブロック１０２を暗号文１０４に暗号化するためにＸＯＲ関数７１４に入力される暗号化マスクＴ７１１を生成するため、ｌｉｇｈｔｗｅｉｇｈｔ暗号化（ＬＷＥ）ユニット７１０により使用されてもよい。ｌｉｇｈｔｗｅｉｇｈｔアップデートユニット７１３が、共有秘密状態７１２を更新するため使用されてもよい。一実施例では、ＬＷＥユニットは、周知のＲｉｊｎｄａｅｌアルゴリズムの２ラウンドの実現形態を有する。あるいは、ＬＷＥユニットは、周知のＳｅｒｐｅｎｔアルゴリズムの３ラウンドを実現するようにしてもよい。あるいは、Ｒｉｊｎｄａｅｌの３ラウンド又はＳｅｒｐｅｎｔの４ラウンドが使用されてもよい。インナーキー７０８は、カウンタ値７０４を変更し、この変更されたカウンタ値とカウンタモードによるＡＥＳアルゴリズムを使用して、新たなインナーキーを生成することによって、頻繁に変更されてもよい。一実施例では、カウンタ値は、平文データの選択されたｋ個のブロック毎にインクリメントされてもよい。インナーキーを頻繁に変更することによって、結果として得られる暗号文のセキュリティは向上するかもしれない。定期的に、共有秘密状態７１２が強力なアップデートユニット７１６により再生成されてもよい。
【００４６】
ここでは各種実施例について暗号化処理が詳細に説明されたが、当業者は、本発明に基づく解読処理のパフォーマンスが平文データを生成するため暗号文に対する適切な逆処理を必要とするということを認識するであろう。
【００４７】
ここに開示された処理はシーケンシャルな処理として説明されたが、実際には、処理の一部はパラレル又は同時に実行されてもよい。さらに、一部の実施例では、処理の順序は本発明の趣旨から逸脱することなく再調整されてもよい。
【００４８】
ここに記載された技術は、何れか特定のハードウェア又はソフトウェアコンフィギュレーションに限定されず、任意の計算又は処理環境において適用可能である。当該技術は、ハードウェア、ソフトウェア又は上記の組み合わせにより実現されてもよい。当該技術は、各々がプロセッサ、当該プロセッサにより可読な記憶媒体（揮発性及び不揮発性メモリ並びに／又は記憶要素を含む）、少なくとも１つの入力装置、及び１以上の出力装置を含む、モバイル又は固定式コンピュータ、携帯情報端末、セットトップボックス、携帯電話及びページャ、並びに他の電子装置などプログラム可能なマシーン上で実行されるプログラムにより実現可能である。プログラムコードは、上記機能を実行し、出力情報を生成するため、入力装置を用いて入力されるデータに適用される。この出力情報は、１以上の出力装置に適用されてもよい。当業者は、本発明がマルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータなどを含む各種コンピュータシステムコンフィギュレーションにより実現可能であるということを理解するかもしれない。本発明はまた、通信ネットワークを介しリンクするリモート処理装置によりタスクが実行可能な分散計算環境において実現可能である。
【００４９】
各プログラムは、処理システムと通信するためハイレベル手続き型又はオブジェクト指向型のプログラミング言語により実現されてもよい。しかしながら、プログラムは、所望の場合には、アセンブリ又はマシーン語により実現されてもよい。何れのケースでも、言語はコンパイル又はインタープリットされるかもしれない。
【００５０】
プログラム命令は、当該命令によりプログラムされた汎用又は特定用途処理システムにここに記載された処理を実行させるのに使用されるかもしれない。あるいは、当該処理は、当該処理を実行するためのハードワイヤロジックを含む特定のハードウェアコンポーネントによって、又はプログラムされたコンピュータコンポーネントとカスタムハードウェアコンポーネントの何れかの組み合わせによって実行されてもよい。ここに記載された方法は、当該方法を実行するため処理システム又は他の電子装置をプログラムするのに使用される命令を格納したマシーン可読媒体を含むコンピュータプログラムプロダクトとして提供されてもよい。ここで使用される“マシーン可読媒体”という用語は、マシーンによる実行のための命令シーケンスを格納又は符号化することが可能であって、マシーンにここに記載された方法の何れかを実行させる何れかの媒体を含む。“マシーン可読媒体”という用語は、以下に限定されるものではないが、ソリッドステートメモリ、光及び磁気ディスク、並びにデータ信号を符号化する搬送波を含む。さらに、あるアクションを実行するものとして又はある結果を生じさせるものとして１つの又は他の形式（プログラム、手順、プロセス、アプリケーション、モジュール、ロジックなど）によりソフトウェアを表現することは当該分野において一般的である。このような表現は単に、処理システムがあるプロセッサにアクションを実行させ、又はある結果を生成させることによって、ソフトウェアの実行を記述する簡略化された方法である。
【００５１】
本発明が、例示的な実施例を参照して説明されたが、本説明は限定的な意味に解釈されるべきでない。例示的な実施例の各種変更と共に、当業者に明らかである本発明の他の実施例が、本発明の趣旨及び範囲内に属するとみなされる。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明の実施例による暗号化ユニットの図である。
【図２】図２は、本発明の実施例による暗号化処理を示すフロー図である。
【図３】図３は、本発明の実施例による暗号化システムの図である。
【図４】図４は、本発明のさらなる実施例による暗号化処理を示すフロー図である。
【図５】図５は、本発明の実施例によるｌｉｇｈｔｗｅｉｇｈｔアップデート関数のためのワードセットの格子パターンへのマッピングの図である。
【図６】図６は、本発明の実施例によるｌｉｇｈｔｗｅｉｇｈｔアップデート関数のフロー図である。
【図７】図７は、本発明のさらなる実施例による暗号化システムの図である。
【図１】
2008523728.tif 000005
【図２】
2008523728.tif 000006
【図３】
2008523728.tif 000007
【図４】
2008523728.tif 000008
【図５】
2008523728.tif 000009
【図６】
2008523728.tif 000010
【図７】
2008523728.tif 000011
【国際調査報告】
2008523728.tif 000012
2008523728.tif 000013
2008523728.tif 000014