(57)【特許請求の範囲】
【請求項１】
相互差分一様シーケンス・ジェネレータ及びエンクリプタを実装するコンピュータの処理により、ｎビットのブロック暗号を使用して平文メッセージ・シーケンスを暗号化する方法であって、
第１及び第２の秘密鍵を選択するステップと、
初期化ベクトルを初期化するステップと、
前記第２の秘密鍵及び前記初期化ベクトルを使用して前記相互差分一様シーケンス・ジェネレータを初期化するステップと、
複数の平文メッセージのうちの少なくとも１つをブロック暗号の列を含む前記エンクリプタに入力するステップと、
前記相互差分一様シーケンス・ジェネレータを使用して相互差分一様乱数シーケンスを生成するステップと、
前記相互差分一様シーケンス・ジェネレータを更新するステップと、
前記初期化ベクトルを更新するステップと、
前記エンクリプタにおいて、複数の平文メッセージのうちの前記少なくとも１つと、前記初期化ベクトルと、前記相互差分一様乱数と、前記第１の秘密鍵とを処理して、メッセージ完全性検査が埋め込まれた暗号化された複数の暗号文メッセージのうちの少なくとも１つを生成するステップとを含み、
前記暗号化された複数の暗号文メッセージのうちの少なくとも１つを生成するステップは、
前記複数の平文メッセージのうちの前記１つを複数の平文ブロックに分割するステップと、
前記複数の平文ブロックの各々を前記相互差分一様乱数の対応する１つに結合して、複数の合成された平文ブロックを生成するステップと、
前記複数の合成された平文ブロックを同時に前記ブロック暗号の列に並行して通過させるステップであって、前記複数の合成された平文ブロックの各々を前記ブロック暗号の列の対応する１つのブロック暗号に通過させ、当該平文ブロックの１つを当該対応する１つのブロック暗号に通過させることにより、前記メッセージ完全性検査が埋め込まれた暗号化された複数の暗号文メッセージのうちの少なくとも１つを生成する、ステップと、を含む方法。
【請求項２】
前記相互差分一様シーケンス・ジェネレータを初期化する前記ステップは、前記ジェネレータを前記第２の秘密鍵にセットするステップを含む、請求項１に記載の方法。
【請求項３】
前記相互差分一様シーケンス・ジェネレータを初期化する前記ステップは、前記ジェネレータを前記第２の秘密鍵と前記初期化ベクトルとの積にセットするステップを含む、請求項１に記載の方法。
【請求項４】
前記積は、ガロア体ＧＦ（２ｎ）内の値である、請求項３に記載の方法。
【請求項５】
前記積は、素ガロア体内の値である、請求項３に記載の方法。
【請求項６】
前記相互差分一様乱数シーケンスは、増分的に生成される、請求項１に記載の方法。
【請求項７】
前記相互差分一様シーケンス・ジェネレータを更新する前記ステップは、前記ジェネレータを前記相互差分一様乱数シーケンスの最後の要素にセットするステップを含む、請求項１に記載の方法。
【請求項８】
前記初期化ベクトルを更新する前記ステップは、複数の平文メッセージのうちの前記１つの長さから求められる値を前記初期化ベクトルに加算するステップを含む、請求項１に記載の方法。
【請求項９】
前記加算するステップは、複数の平文メッセージのうちの前記１つの長さをｎビット・ブロック単位で計算し、前記長さを定数値だけ増分するステップを含む、請求項８に記載の方法。
【請求項１０】
前記暗号化された複数の暗号文メッセージのうちの少なくとも１つを生成するステップは、
複数の平文メッセージのうちの前記１つを複数のｎビット平文ブロックに分割するステップと、
前記複数の平文ブロックを少なくとも１つのチェックサム・ブロックに組み合わせるステップと、
前記ブロック暗号と、前記第１の秘密鍵と、前記相互差分一様乱数シーケンスとを使用して前記複数の平文ブロック及び前記チェックサム・ブロックを暗号化し、それによって複数の暗号文ブロックを取得するステップと、
前記相互差分一様乱数シーケンスを利用して前記複数の暗号文ブロックにメッセージ完全性検査を埋め込むステップと、をさらに含む、請求項１に記載の方法。
【請求項１１】
前記組み合わせるステップは、前記複数の平文ブロックのｎビットの排他的論理和を計算するステップを含む、請求項１０に記載の方法。
【請求項１２】
前記初期化ベクトルは、ｎ／２ビットのみを使用して表現され、前記初期化ベクトルと、前記複数の平文ブロックのｎ／２ビットにトランケートされた排他的論理和の合計値と、を連結して前記チェックサム・ブロックが取得される、請求項１０に記載の方法。
【請求項１３】
前記暗号化するステップは、
前記複数の平文ブロック及び前記チェックサム・ブロックと、前記相互差分一様乱数シーケンスとを対にするステップと、
前記対毎に前記ブロック暗号及び前記第１の秘密鍵を使用して暗号文ブロックを計算するステップと、を含む、請求項１０に記載の方法。
【請求項１４】
前記ブロック暗号を使用して暗号文ブロックを計算する前記ステップは、前記ブロック暗号を前記第１の秘密鍵と共に復号化モードで利用するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記暗号化するステップは、
前記複数の平文ブロック及び前記チェックサム・ブロックと、前記相互差分一様乱数シーケンスとを対にするステップと、
前記対を２つの集合に更に分割し、１つ目の前記集合内の前記対毎に前記ブロック暗号を暗号化モードで利用することにより、前記ブロック暗号及び前記第１の秘密鍵を使用して暗号文ブロックを計算し、２つ目の前記集合内の前記対毎に前記ブロック暗号を復号化モードで利用することにより、前記ブロック暗号及び前記第１の秘密鍵を使用して暗号文ブロックを計算するステップと、を含む、請求項１０に記載の方法。
【請求項１６】
平文メッセージ・シーケンスのうちの少なくとも１つを暗号化する装置であって、
複数の初期化ベクトルのうちの少なくとも１つを生成するとともに、前記複数の初期化ベクトルのうちの前記少なくとも１つを使用して複数の相互差分一様乱数シーケンスのうちの少なくとも１つを生成する相互差分一様シーケンス・ジェネレータと、
前記平文メッセージ・シーケンスのうちの少なくとも１つを複数の平文ブロックに分割し、前記平文ブロックをブロック暗号の列に１回通過させて暗号化して、複数の暗号文メッセージのうちの少なくとも１つを形成するエンクリプタと、
複数の平文ブロックのうちの前記少なくとも１つを少なくとも１つのチェックサムに組み合わせるチェックサム・ジェネレータと、
複数の前記相互差分一様乱数シーケンスのうちの少なくとも１つを利用して前記複数の暗号文メッセージのうちの前記少なくとも１つにメッセージ完全性検査を埋め込むメッセージ完全性エンベダと、を備え、
前記エンクリプタは、
前記複数の平文ブロックの各々を前記相互差分一様乱数の対応する１つに結合して、複数の合成された平文ブロックを生成し、
前記複数の合成された平文ブロックを同時に前記ブロック暗号の列に並行して通過させ、当該通過が、前記複数の合成された平文ブロックの各々を前記ブロック暗号の列の対応する１つのブロック暗号に通過させることを含み、前記平文ブロックの１つを対応するブロック暗号に通過させることにより、前記複数の暗号化された暗号文メッセージのうちの少なくとも１つを生成する、装置。
【請求項１７】
複数の平文メッセージ・シーケンスを暗号化し、
前記相互差分一様シーケンス・ジェネレータは、複数の相互差分一様乱数シーケンスを生成し、
前記エンクリプタは、前記複数の相互差分一様乱数シーケンスのうちの１つを使用して前記複数の平文メッセージのうちの１つを暗号化する、請求項１６に記載の装置。
【請求項１８】
前記相互差分一様シーケンス・ジェネレータは、複数の初期化ベクトルを生成し、前記複数の初期化ベクトルのうちの１つを使用して前記複数の相互差分一様乱数のうちの１つを生成する、請求項１７に記載の装置。
【請求項１９】
前記複数の初期化ベクトルは、第１の初期化ベクトル及び後続の初期化ベクトルを含むシーケンスの形で生成され、前記シーケンス内の前記後続の初期化ベクトルはそれぞれ、前記シーケンス内の前記初期化ベクトルのうち、前記後続の各初期化ベクトルの直前の初期化ベクトルを使用して計算される、請求項１８に記載の装置。
【請求項２０】
前記後続の初期化ベクトルはそれぞれ、前記直前の初期化ベクトルに定義済みの値を加えた値と等しい、請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ完全性（ｍｅｓｓａｇｅ  ｉｎｔｅｇｒｉｔｙ）を保証しながら入力メッセージを出力メッセージに暗号変換する方法及び装置に関するものである。
【背景技術】
【０００２】
データ処理分野では暗号システムが知られている。一般に、これらのシステムは、平文入力メッセージの暗号化処理を実行し、暗号鍵及び対称鍵ブロック暗号を使用して暗号文メッセージを生成することによって動作する。その後、暗号化されたメッセージは、秘密鍵を共有する受信側に信頼性も安全性も低いチャネルを介して送信される可能性がある。暗号化されたメッセージの受信側は、同一の鍵を使用して平文ブロックを復元することによって対応する復号化処理を実行する。メッセージの送信側と受信側の両方で同一の鍵が使用されることから、このプロセスは「対称鍵」プロセスと呼ばれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７，０９３，１２６号
【特許文献２】米国特許第６，９６３，９７６号
【特許文献３】米国特許第７，０４６，８０２号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メッセージ完全性に関する問題が存在する。詳しく言うと、暗号文メッセージの受信側は、暗号文を復号化することはできるが、その暗号文が送信中に偶然又は故意に改変されていないことを確かめることはできない。メッセージ完全性を保証するために、暗号文メッセージにはメッセージ認証コード（ｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ：ＭＡＣ）が付加される。このＭＡＣは、送信側で暗号化ハッシュ関数を使用して暗号文から生成される。
【０００５】
近年、米国特許第７，０９３，１２６号及び同６，９６３，９７６号に記載されるＩＡＣＢＣ及びＩＡＰＭを含めた様々なワン・パス認証暗号化方式が提案されている。これらの方式は、暗号化とメッセージ完全性の両方を実現する。これらの方式の更なる変形例は、米国特許第７，０４６，８０２号のＯＣＢ方式に記載されている。
【０００６】
しかしながら、これらの方式ではそれぞれのメカニズムにおいて追加的なステップが必要となり、その結果１０〜１００％の計算コスト増となる可能性がある。更に、これらの方式では、必ずしもハードウェア及びソフトウェアの最適化を最大限利用することができない。
【課題を解決するための手段】
【０００７】
本発明の一目的は、メッセージ完全性を保証するための検査が組み込まれた暗号文を安全に生成する改良型暗号化方式及び装置を提供することである。
【０００８】
本発明の別の目的は、少なくともＭＡＣベース方式及び他の認証暗号化方式と同一のセキュリティ・レベルを保持しながら、メッセージ完全性を備えた暗号文をシングル・パスで生成し、追加的な計算コストが少ない暗号化／復号化方式及び装置を提供することである。
【０００９】
上記及び他の目的は、本発明の暗号化／復号化方法及び装置によって達成される。本発明の方法及び装置は、固定ブロック・サイズの暗号化及び復号化をサポートする所定のブロック暗号を使用する。これらの方法及び装置は、通常秘密にされるブロック暗号用の鍵も使用する。
【００１０】
一実施形態に係る方法は、ユーザから供給されるセーフ初期化ベクトル（ｓａｆｅ  ｉｎｉｔｉａｌ  ｖｅｃｔｏｒ）を使用して、平文メッセージを複数の平文ブロックに分割することによって前記平文メッセージを暗号化するステップと、前記セーフ初期化ベクトル及び前記ブロック暗号を使用して前記平文ブロックを暗号化して複数の暗号文ブロックを形成するステップと、を含む。本プロセスでは、シングル・パス技法を使用して前記暗号文ブロックにメッセージ完全性検査（ｍｅｓｓａｇｅ  ｉｎｔｅｇｒｉｔｙ  ｃｈｅｃｋ）が埋め込まれるが、ここでも前記セーフ初期化ベクトルが使用される。前記方法は更に、前記ブロック暗号及び同一の鍵を使用して前記暗号文ブロックを復号化して前記平文ブロックを再形成するステップと、前記暗号文ブロック内の前記メッセージ完全性検査をテストして、再形成された前記平文ブロックの完全性をテストするステップと、を含む。
【００１１】
多くの場合、セーフ初期化ベクトルを使用し、当該セーフ初期化ベクトルを展開して、それぞれ独立しているが、以下で定義する意味で相互に差分一様性を有する（ｐａｉｒ‐ｗｉｓｅ  ｄｉｆｆｅｒｅｎｔｉａｌｌｙ  ｕｎｉｆｏｒｍ）１組の擬似乱数を生成し、前記暗号文ブロックが形成されるときに前記１組の擬似乱数を使用して前記メッセージ完全性検査を前記暗号文ブロックに埋め込むことにより、前記メッセージ完全性検査が前記暗号文ブロックに埋め込まれる諸実施形態を利用することが有利である。これらの実施形態では、前記復号化プロセスの間に、前記暗号文ブロックから前記セーフ初期化ベクトル及び前記１組の擬似乱数が取得され、前記暗号文ブロックが復号化されるときに、それらの１組の擬似乱数を使用して前記暗号文ブロックから前記平文ブロックが再形成される。また、前記テストするステップは、再形成された前記平文ブロックに所定のテストを適用して、再形成された前記平文ブロックの完全性をテストするステップを含むことが有利である。
【００１２】
別の実施形態において、前記メッセージ完全性検査は、前記暗号文ブロック及び部分ブロック・タグ（ｐａｒｔｉａｌ‐ｂｌｏｃｋ  ｔａｇ）に埋め込まれる。かかる一実施形態において、再形成された前記平文ブロックは、別の暗号化又は復号化ステップを含むこともある所定のテストを使用して前記タグと突き合わせてテストされる。
【００１３】
別の実施形態において、前記方法は、ユーザから供給される初期化ベクトル（ＩＶ）を使用して、平文メッセージを複数の平文ブロックに分割し、前記平文ブロックを２つの集合に分割することで前記平文ブロックを暗号化することによって前記平文メッセージを暗号化するステップと、一方の集合に対しては前記ブロック暗号を暗号化モードで使用し、他方の集合に対しては前記ブロック暗号を復号化モードで使用して複数の暗号文ブロックを形成するステップと、を含む。前記方法は更に、前記暗号文ブロックを対応する２つの集合に分割することによって復号化するステップと、一方の集合に対しては前記ブロック暗号を暗号化モードで使用し、他方の集合に対しては前記ブロック暗号を復号化モードで使用して平文ブロックを再形成するステップと、を含む。前記メッセージ完全性検査は、上述の各実施形態の場合と同様に埋め込まれる。
【００１４】
それぞれの長さが最大ｌｅｎ［ｉ］ブロック（索引ｉの範囲は１〜ｔ）であるｔ個の平文メッセージ・シーケンスを暗号化するとき、一続きのｎビットの数（又は初期化ベクトル・シーケンス）ＩＶ１、ＩＶ２、．．．、ＩＶｔは、互いに異なるすべてのメッセージ索引ｉ及びｉ１（１〜ｔの範囲）、ならびに数ｊ（０〜ｌｅｎ［ｉ］＋１の範囲）及び数ｊ１（０〜ｌｅｎ［ｉ１］＋１の範囲）に関してＩＶｉ＋ｊとＩＶｉ１＋ｊ１とが等しくならない場合に、安全であると言われる。
【００１５】
一実施形態において、各メッセージ毎の前記初期化ベクトルはランダムに且つ独立して選択することができ、そのように選択された前記初期化ベクトルが安全である確率は、上記の定義から極めて高くなる。
【００１６】
別の実施形態において、同一の秘密鍵を使用して最初に暗号化されるメッセージに関しては、前記初期化ベクトルを１にセットすることができる。換言すると、ＩＶ１を１に初期化することができる。帰納的に言えば、その後、次のメッセージのＩＶは「前のメッセージのＩＶ」＋「前のメッセージの整数ブロック単位の長さ」＋「２」にセットされ得る。これにより、セーフ初期化ベクトルを増分的に生成する方法が提供される。
【００１７】
ｎビットの乱数シーケンスＳ１、Ｓ２、．．．、Ｓｍは、各Ｓｉが一様に分布しており、且つ１〜ｍの範囲の互いに異なる各ｉ及びｉ１、ならびにｎビットの各定数ｃ毎に、ＳｉとＳｉ１のｎビットの排他的論理和がｃと等しくなる確率が最大でも２−ｎである場合に、「相互に差分一様性を有する（ｐａｉｒ‐ｗｉｓｅ  ｄｉｆｆｅｒｅｎｔｉａｌｌｙ  ｕｎｉｆｏｒｍ）」と言われる。このようなシーケンスは、暗号用語では「ＸＯＲユニバーサル（ＸＯＲ‐ｕｎｉｖｅｒｓａｌ）」とも呼ばれる。
【００１８】
本発明の他の利益及び利点は、以下の詳細な説明を本発明の例示的な諸実施形態が具体的に示される添付図面を参照しながら読めば明らかとなるだろう。
【図面の簡単な説明】
【００１９】
【図１】従来技術の暗号化／復号化手順を示す概略図である。
【図２】従来技術の暗号化メカニズムを示す図である。
【図３】従来技術の復号化メカニズムを示す図である。
【図４】メッセージ完全性も保証する従来技術の暗号化プロセスを示す図である。
【図５】図４のジェネレータがどのように動作するかを示すフローチャートである。
【図６】従来技術の復号化プロセスの一例を示す概略図である。
【図７】従来技術の復号化プロセスの動作をより詳細に示す図である。
【図８】従来技術の並列化可能な暗号化メカニズムを示す図である。
【図９】メッセージ完全性を備える従来技術の暗号化装置を示す図である。
【図１０】従来技術の復号化装置を示す図である。
【図１１】本発明を実施する暗号化プロセスを示す図である。
【図１２】セーフ初期化ベクトルを生成する手順を示す図である。
【図１３】本発明の一実施形態に係る相互差分一様シーケンス・ジェネレータ（ｐａｉｒ‐ｗｉｓｅ  ｄｉｆｆｅｒｅｎｔｉａｌｌｙ  ｕｎｉｆｏｒｍ  ｓｅｑｕｅｎｃｅ  ｇｅｎｅｒａｔｏｒ）の動作を示すフローチャートである。
【図１４】本発明を実施する代替的な暗号化プロセスを示す図である。
【図１５】図１４のジェネレータがどのように動作するかを示すフローチャートである。
【図１６】図１４のジェネレータを使用するメッセージ完全性を備える暗号化装置を示す図である。
【図１７】エンクリプタとデクリプタの両方を使用した認証暗号化方法を示す図である。
【図１８】代替的な認証暗号化プロセスを示す図である。
【図１９】出力メッセージのサイズを減少させる本発明の別の代替実施形態を示す図である。
【図２０】図１９のチェックサム／ｒコンバイナ（ｃｈｅｃｋｓｕｍ  ａｎｄ  Ｒ  ｃｏｍｂｉｎｅｒ）の動作を示す図である。
【発明を実施するための形態】
【００２０】
本明細書及び添付図面において、平文メッセージは「Ｐ」と表示され、暗号文メッセージは「Ｃ」と表示される。平文及び暗号文の長さはブロック単位で測定される。ブロックは、本構造で使用されるブロック暗号の入出力ビット数に相当する。ブロック・サイズと呼ばれるこの数は、ｎで示される。そのため、平文Ｐの長さをｍブロックとした場合、そのメッセージの個々のブロックはＰ１、Ｐ２、．．．、Ｐｍで示される。同様に、暗号文ブロックはＣ１、Ｃ２、．．．、Ｃｍで示される。
【００２１】
以下では更に、同一の鍵を使用した暗号化手順のいくつかの応用例について言及する。ここでは、例えば平文メッセージＰ１、Ｐ２、．．．、Ｐｔが同一の鍵を使用して暗号化され得る。メッセージの索引は上付き文字とされ、特定のメッセージ内のブロック番号の索引は下付き文字とされる。
【００２２】
図１乃至図３は、暗号ブロック連鎖（ｃｉｐｈｅｒ  ｂｌｏｃｋ  ｃｈａｉｎｉｎｇ：ＣＢＣ）と呼ばれるタイプの暗号化／復号化手順を概略的に示す。このプロセスでは、送信側はブロック暗号１０１を使用して一定のサイズ、例えばＡＥＳであればｎ＝１２８ビットの平文メッセージを暗号化し、暗号化されたメッセージは、安全でない又は非セキュアな通信媒体１０２を介して受信側に送信される。この受信側では、復号化モード１０３で同一のブロック暗号を使用してメッセージを復号する。送信側も受信側も同一の秘密鍵Ｋを利用することに留意していただきたい。
【００２３】
図２及び図３は、それぞれ基礎となるブロック暗号のブロック・サイズの倍数のサイズのメッセージに関する暗号化／復号化メカニズムを示している。図２を参照すると、メカニズム２００は、図１と同様の一連の暗号ブロック１０１を含む。各暗号ブロックには同一の鍵Ｋが提供される。１番目のブロック１０１ａにはｎビット長の乱数ｒも提供される。チェーン内の後続の各暗号ブロックには、平文の１つのブロック（即ちｎビット）と、チェーン内の前のブロックの出力とが提供される。有利なことに、１番目の暗号ブロック以降の各暗号ブロック毎に、当該暗号ブロックに該当する２つのテキスト・ブロックに対して排他的論理和関数が適用される。各暗号ブロック１０１ａ〜１０１ｍはそれぞれ暗号文の１つのブロックを出力する。
【００２４】
図３を参照すると、メカニズム２００によって生成される長い暗号文ブロックを復号化するメカニズム３００は、復号化モードにおける一連の暗号ブロック又は暗号ブロック・チェーン１０３を含む。各ブロックには同一の鍵Ｋと、暗号文ブロックのうちの１つ（それぞれｎビット）とが提供される。チェーン１０３内の１番目のブロック１０３ａでは、当該ブロックの出力と１番目の暗号文ブロックとの排他的論理和演算が適用される。チェーン１０３内の他のブロックでは、当該ブロックの出力と前のブロックの入力との排他的論理和演算が適用される。各暗号ブロックの出力に対して実行される排他的論理和演算によって元の平文ブロックが生成される。
【００２５】
図４乃至図１０は、メッセージ完全性を保証する従来技術の暗号化／復号化プロセスを示す。一般に、暗号化プロセスは３つのステップを含む。１つ目のステップは、ランダム性の生成とその展開（ｅｘｐａｎｓｉｏｎ）である。２つ目のステップは、ランダム性の更なる展開であり、３つ目のステップは、上記で生成されたランダム性を使用して暗号文を生成し、それによって平文を実際に暗号化することである。
【００２６】
図４は、メッセージ完全性も保証する従来技術の暗号化プロセス４００を示す。より具体的には、１つ目のステップで乱数ｒが生成される。ランダム性ｒは、周知の任意のランダム性生成技法によって生成することができる。この数ｒが鍵Ｋ２を有するブロック暗号１０１ｘに加えられ、それによって擬似乱数Ｒが生成される。数Ｒは、他の周知の任意のランダム性展開手段によっても求めることができる。
【００２７】
この数Ｒは、相互差分一様シーケンス・ジェネレータ４０２に供給される。このジェネレータは、後述のプロセスを使用してそれぞれｎビット長の一連のＳ値Ｓ０、Ｓ１、Ｓ２、．．．、Ｓｍを出力する。
【００２８】
図５は、ジェネレータ４０２がどのように動作するかを示すフローチャート５００である。
【００２９】
このジェネレータは、周知の線形フィードバック・シフト・レジスタ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ：ＬＦＳＲ）として働くことができる。まず、ガロア体ＧＦ（２ｎ）を表す原始多項式ｇ（ｘ）が選択される。このような多項式は周知であり、文献に発表されている。ｇ（ｘ）−ｘｎを表すｎビットの数をｇとする。ステップ５０１で、変数ｉが０にセットされ、Ｓ０がＲにセットされ、その後ステップ５０２で、ｉとｍとの比較が行われる。ｉがｍよりも大きい場合には、ルーチンは終了する。そうでない場合には、ルーチンは５０３、５０４、５０５に進む。ステップ５０３で、変数Ｓｉが一時変数ｔにコピーされる。ステップ５０４で、ｔは１ビット左シフトされる。ステップ５０５では、事前のシフト演算で桁上がりが発生したかどうかが検査される。桁上がりが発生した場合には、量ｇ及びｔがビット単位排他的論理和演算にかけられ、それによって新しいｔが生成される。桁上がりが発生しなかった場合には、ｔはそのままとなる。ステップ５０７で、変数Ｓｉ＋１がｔにセットされ、Ｉが１だけ増分され、ステップ５０２に戻る。このプロセスの重要な利点は、ブロック暗号呼び出しの場合と異なり展開に暗号化処理を必要としないことである。
【００３０】
再び図４を参照すると、ｒ及び各Ｓ値が生成された後、平文の各ブロックＰ１〜Ｐｍが暗号化され、それによって暗号文ブロックＣ０〜Ｃｍ＋１が取得される。この処理は、ｍ＋２個の一連の暗号ブロック１０１を使用して行われる。各暗号ブロックには鍵Ｋ１が提供される。１番目のブロック１０１ａには乱数ｒも提供される。最後の暗号ブロック１０１ｎを除いた後続の各暗号ブロックには、平文ブロックのうちの１つと前の暗号ブロックの出力との組合せが提供される。具体的には、この組合せは、２つの入力に対してビット位置毎に実行される排他的論理和演算の結果である。一連の暗号ブロック内の最後の暗号ブロック１０１ｎには、（ｉ）前のブロックの出力と、（ｉｉ）平文ブロックＰ１、Ｐ２、．．．、Ｐｍに対して実行される一連の排他的論理和演算の結果ΣＰとの組合せが提供される。この組合せは、２つの入力に対して実行される排他的論理和演算の結果である。
【００３１】
１番目の暗号ブロック１０１ａの出力は、暗号文Ｃ０の１番目のブロックとなる。他の暗号文ブロックＣ１〜Ｃｍは、各暗号ブロックの出力及び各Ｐ値に対する排他的論理和演算をビット位置毎に実行することによって取得される。具体的には、Ｐ１〜Ｐｍはそれぞれブロック１０１ｂ〜１０１ｍの出力に加えられ、ΣＰは最後のブロック１０１ｎの出力に加えられる。
【００３２】
図６は、復号化プロセスの一例を概略的に示す。このプロセスでは、暗号文ブロックが復号化６０１（図７）に加えられ、そこから平文ブロックＰが出力される。次に、これらの平文ブロックを使用して、Ｐｍ＋１が、排他的論理和関数を平文ブロック・シーケンスＰ１、．．．、Ｐｍにビット位置毎に適用することによって求められた結果と等しいかどうかが判定される。メッセージ完全性検査の成功／失敗は、Ｐｍ＋１が当該結果と等しいか否かに応じて決まる。
【００３３】
図７は、復号化６０１の一例の動作をより詳細に示す。図７に示されるように、復号化６０１は、復号化モード又は逆モードにおける一連の暗号ブロック１０３を含む。各暗号ブロックには鍵Ｋ１と、暗号文ブロックＣ０、．．．、Ｃｍ＋１のうちの１つとが提供される。１番目のブロック１０３ａを除いた各ブロックには、Ｓ値のうちの１つも提供される。具体的には、ビット位置１０３ｂ〜１０３ｍにはそれぞれＳ１〜Ｓｍが提供され、最後の暗号ブロック１０３ｎにはＳ０が提供される。各暗号ブロックに提供されるＣ及びＳ値に対して排他的論理和演算が実行される。
【００３４】
１番目の暗号ブロック１０３ａの出力は、乱数ｒである。暗号ブロック１０３ｂ〜１０３ｎの各ブロック毎に、当該ブロックの出力と前のブロックの入力とに対して排他的論理和関数が適用され、それによって各平文ブロックＰ１〜Ｐｍ＋１が取得される。
【００３５】
以下の疑似コードは、相互差分一様ランダム・シーケンスＳ０、Ｓ１、．．．、Ｓｍを生成する一代替手法である。この代替手法でも原始多項式ｇ（ｘ）及びガロア体演算が使用される。
【数１】
0005462636.tif 000002
【００３６】
相互差分一様ランダム・シーケンスＳ０、Ｓ１、．．．、Ｓｍの生成技法には、また別の周知技法も存在する。ここでもやはり原始多項式ｇ（ｘ）が使用される。以下は、周知のグレイ・コード（Ｇｒａｙ  ｃｏｄｅ）を使用してシーケンスを生成する疑似コードである。
【数２】
0005462636.tif 000003
【００３７】
このような相互差分一様シーケンスを生成する手法は、他にも多数存在する。シーケンスが相互差分一様性を満足する限り、上述のような埋め込みを行ってメッセージ完全性を備える暗号化方式を保証することができる。
【００３８】
図８は、並列化可能な暗号化メカニズム８００を示す。本メカニズムにおいて、各ブロックには鍵Ｋ１が提供される。１番目のブロック１０１ａには乱数ｒも提供される。最後の暗号ブロックを除いた後続の各暗号ブロックには、それぞれ平文ブロックのうちの１つとＳ値のうちの１つとの組合せが提供される。具体的には、この組合せは、２つの入力に対してビット位置毎に実行される排他的論理和演算の結果である。一連の暗号ブロック内の最後の暗号ブロック１０１ｎには、（ｉ）Ｓｍ＋１と、（ｉｉ）平文ブロック・シーケンスＰ１、Ｐ２、．．．、Ｐｍに対して実行される一連の排他的論理和演算の結果ΣＰとの組合せが提供される。この組合せは、２つの入力に対して実行される排他的論理和演算の結果である。
【００３９】
図４のシステムの場合と同様に、メカニズム８００内の１番目の暗号ブロック１０１ａの出力は、暗号文Ｃ０の１番目のブロックとなる。他の暗号文ブロックＣ１〜Ｃｍは、各暗号ブロックの出力及び各Ｓ値に対する排他的論理和演算をビット位置毎に実行することによって取得される。具体的には、Ｓ１〜Ｓｍはそれぞれブロック１０１ｂ〜１０１ｍの出力に加えられ、Ｓ０は一連のブロック内の最後のブロックの出力に加えられる。
【００４０】
図９は、メッセージ完全性を備える暗号化装置９００を示す。図示の装置は、第１の乱数を生成するランダム性ジェネレータ９０１と、前記第１の乱数を第１の擬似乱数に変換するランダム性トランスフォーマ９０２と、前記第１の乱数又は前記第１の擬似乱数あるいはその両方のランダム性を、１組の相互差分一様擬似乱数（ｐａｉｒ‐ｗｉｓｅ ｄｉｆｆｅｒｅｎｔｉａｌｌｙ‐ｕｎｉｆｏｒｍ ｐｓｅｕｄｏ ｒａｎｄｏｍ
ｎｕｍｂｅｒ）に更に展開する相互差分一様シーケンス・ジェネレータ９０３と、前記平文メッセージ９０４を複数の平文ブロックに分割し、前記平文ブロックを暗号化して複数の暗号文ブロックを形成するエンクリプタ９０５と、前記複数の平文ブロックを少なくとも１つのチェックサムに組み合わせるチェックサム・ジェネレータ９０８と、前記１組の相互差分一様擬似乱数を前記第１の乱数又は前記第１の擬似乱数あるいはその両方と共に利用してメッセージ完全性検査を前記暗号文ブロックに埋め込む完全性エンベダ（Ｉｎｔｅｇｒｉｔｙ
Ｅｍｂｅｄｄｅｒ）９０７と、を含む。
【００４１】
図１０は、復号化装置１０００を示す。図示の装置は、前記暗号文メッセージ１００４を複数の暗号文ブロックに分割し、複数の平文ブロック１００６を形成する際に前記暗号文ブロックを復号化するデクリプタ１００５と、前記平文ブロックのうちの少なくとも１つを第１の擬似乱数に変換するランダム性トランスフォーマ１００２と、前記平文ブロックのうちの少なくとも１つ又は前記第１の擬似乱数あるいはその両方を１組の相互差分一様擬似乱数に更に展開する相互差分一様シーケンス・ジェネレータ１００３と、前記第１の擬似乱数、又は前記１組の相互差分一様擬似乱数、又は前記少なくとも１つの平文ブロック、あるいはそれらのすべてを組み合わせて少なくとも２つのチェックサムを形成するとともに複数の出力ブロックを形成するチェックサム・ジェネレータ１００８と、メッセージ完全性検査の成功を宣言する際に前記少なくとも２つのチェックサムを比較する完全性エクストラクタ／チェッカー１００７と、を含む。
【００４２】
以上、従来技術の既知の認証暗号化方法、即ちメッセージ完全性を備えたシングル・パスの暗号化方法について説明した。上述の方法のいくつかは並列化も可能である。
【００４３】
図１１は、図８の従来技術と組み合わせることが可能な本発明を示す。本発明は、ブロック暗号１０１ｘを使用してランダム性ｒを新しいランダム性Ｒに展開するのではなく、ブロック暗号自体を必要としない。その代わりにセーフＩＶ（又は初期化ベクトル）ジェネレータ１１０１が使用され、それにより、相互差分一様シーケンス・ジェネレータを適用する前にｒをＲに変換する必要がないような形でｒが生成される。図１１の相互差分一様シーケンス・ジェネレータは、図５のプロセス５００の代わりに図１３に関して後述するプロセス１３００を使用するため、１１０２と標示される。後で明らかとなるように、プロセス１３００はプロセス５００と異なる。様々な実施形態で示されるように、セーフＩＶジェネレータの使用により、コストが掛かるブロック暗号１０１ｘのステップの必要性が解消される。ブロック暗号呼び出しであるステップ１０１ｘと、やはりブロック暗号呼び出しであるステップ１０１ａ〜１０１ｎとはコストの点で同一であると思われるかもしれないが、ステップ１０１ａ〜１０１ｎは並列実行が可能である一方、プロセス８００のステップ１０１ｘは、ステップ１０１ａ〜１０１ｎのいずれかが実行可能となる前に実行しなければならないことに留意していただきたい。更に、各応用例ではせいぜいプロセス８００又は１１００の１つ又は２つのステップ１０１しか存在せず、即ちｍ＝０又は１となる。
【００４４】
図１２は、セーフＩＶジェネレータの一実施形態を示す。１番目のメッセージが秘密鍵を使用して暗号化される場合、初期化ベクトルは１にセットされ、変数カウントも１にセットされる。その後、次のメッセージの初期化ベクトルは、「前のメッセージの初期化ベクトル」＋「前のメッセージのブロック単位の長さ」＋「２」となるように計算される。図１２から分かるように、この実装環境では、従来技術のようなブロック暗号を使用する場合と比べて非常に高い節約性がもたらされる。
【００４５】
図１３は、新しい相互差分一様シーケンス・ジェネレータ１３００がどのように実装されるかを示す。このプロセスはプロセス５００と対比可能である。唯一の変更は１番目のステップ、即ち１３０１に存在することに留意していただきたい。ステップ１３０１では、ステップ５０１のようにＲを使用する代わりに、Ｓ０が、ｒにガロア体ＧＦ（２ｎ）内の鍵ｋ２を乗じた値にセットされる。この乗算ステップはややコスト高となる可能性があり、以下の実施形態では、このステップが省略可能となる手法についても示していく。
【００４６】
図１４は、セーフＩＶを生成するステップと相互差分一様シーケンスを生成するステップとを１つのステップ１４０１に組み合わせた本発明の別の実施形態を示す。この組合せの全体的な利点は、初期化ベクトルｒと相互差分一様シーケンスの両方が異なるメッセージ間でも増分的に生成されることである。この処理は、１つのメッセージ暗号化から次のメッセージ暗号化まで状態が維持されるので、ステートフル（ｓｔａｔｅｆｕｌ）であると言われる。
【００４７】
図１５は、ジェネレータ１４０１がどのように動作するかを示すフローチャート１５００である。このジェネレータは、すべてのメッセージにわたって増分的である点を除き図５と同様である、周知の線形フィードバック・シフト・レジスタ（ＬＦＳＲ）として働く。ジェネレータ５００の場合と同様に、まず、ガロア体ＧＦ（２ｎ）を表す原始多項式ｇ（ｘ）が選択される。ｇ（ｘ）−ｘｎを表すｎビットの数をｇとする。ステップ１５０１は、平文メッセージを入力する。ステップ１５０２〜１５０７は、ステップ５０２〜５０７と同一である。これらのステップでは、多項式で表される現在のＳ値Ｓｉに体ＧＦ（２ｎ）内のｘが乗じられる。新規性ある部分は、ステップ１５０８〜１５１２を含む。出力対象の初期化ベクトルは変数ｒ内に維持され、変数ｒは、１番目のメッセージが既に現在の秘密鍵を使用して暗号化されていれば、１にセットされる。
【００４８】
また、１番目のメッセージに関しては、ステップ１５１０でＳ０が２番目の秘密鍵ｋ２に初期化される。その平文メッセージが１番目のメッセージでない場合には、Ｓ０は、前のメッセージの計算値Ｓ［ｍ＋１］である変数「ｐｒｅｖ」に初期化される。シーケンスＳ０〜Ｓ［ｍ＋１］が計算され、ステップ１５０２で検査された後、ステップ１５１１で初期化ベクトルｒ及びシーケンスＳが出力される。その後、ステップ１５１２で、ｒは「それ自体の現在値」＋「現在のメッセージの長さｍ」＋「２」に増分され、その値が次のメッセージで使用されるｒ内に保存される。また、変数「ｐｒｅｖ」は、先ほど計算されたＳ［ｍ＋１］にセットされる。
【００４９】
本発明の重要な一利点は、これまでに証明したように、セーフ初期化ベクトル方式及び増分ジェネレータ１５００方式が従来技術の認証暗号化と同等の安全性を有することに由来する。
【００５０】
秘密鍵ｋ２は、図１４の１０１ａ〜１０１ｎで使用される鍵ｋ１とは異なる追加的な鍵であるが、実際には定数、例えばゼロを鍵ｋ１及び所与のブロック暗号１０１で暗号化することによって鍵ｋ１自体から生成することが可能である。ｋ１からｋ２を生成するこの手法は安全であることが証明され得る。
【００５１】
図１６は、拡張機能増分差分一様シーケンス・ジェネレータ（ａｄｖａｎｃｅｄ ｉｎｃｒｅｍｅｎｔａｌ ｄｉｆｆｅｒｅｎｔｉａｌｌｙ ｕｎｉｆｏｒｍ
ｓｅｑｕｅｎｃｅ ｇｅｎｅｒａｔｏｒ）１４０１を有し、メッセージ完全性を備える暗号化装置１６００を示す。本装置は、前記平文メッセージ１６０２を複数の平文ブロックに分割し、前記平文ブロックを暗号化して複数の暗号文ブロック１６０４を形成するエンクリプタ１６０３と、前記複数の平文ブロックを少なくとも１つのチェックサムに組み合わせるチェックサム・ジェネレータ１６０６と、前記１組の相互差分一様擬似乱数を利用してメッセージ完全性検査を前記暗号文ブロックに埋め込む完全性エンベダ１６０５と、を含む。
【００５２】
図１７は、エンクリプタ１０１とデクリプタ１０３の両方を使用しながら長いメッセージを暗号化する点で新規性を有する認証暗号化方法１７００を示す。対照的に、従来技術（例えば図４及び図８参照）では、長いメッセージを暗号化する際にすべてのメッセージ・ブロックに関して同一のエンクリプタ１０１が使用される。同様に、長いメッセージを復号化する際は、従来技術（図７参照）ではすべてのブロックに関して同一のデクリプタ１０３が使用される。図１７に記載される方法の重要な一側面は、長いメッセージを暗号化する際に、前記平文ブロック（図８）を２つの集合に分割することができ、例えば１つ目の集合に関してはエンクリプタ１０１を利用し、２つ目の集合に関してはデクリプタ１０３を利用することができる点である。これにより、大部分のハードウェア・ソリューションで１０１と１０３の両方のエンジンが提供される利点がもたらされ、また、本発明によればスループットを２倍に高めることが可能となる。
【００５３】
図１８は、図１４に記載の発明も含む本発明の代替実施形態１８００を示す。デクリプタ１０３は一部のブロックに関して使用され、エンクリプタ１０１は他のブロックに関して使用されることに留意していただきたい。本発明の重要な一側面は、このようなデクリプタ及びエンクリプタの使用が暗号化方式のセキュリティに何ら影響を及ぼさないことが証明されている点である。
【００５４】
図１９は、出力メッセージのサイズを１ブロック分減少させる認証暗号化の一代替実施形態１９００を示す。本代替実施形態は、出力をストレージ・デバイスに記憶しなければならない状況で、当該ストレージ・デバイスのストレージ空間が限られている場合に有利である可能性がある。図１９と図８（従来技術）を比較していただきたい。図８との重要な差異は、出力ブロックＣ０が存在しないこと、及びエンクリプタ１０１ｎに対する入力が異なることである。以前にＣ０として出力された値ｒはここで、チェックサム／ｒコンバイナ１９０１を利用してＣ［ｍ＋１］に組み込まれる。１０１ｎの出力に対するＳ０によるポスト・ホワイトニング（ｐｏｓｔ‐ｗｈｉｔｅｎｉｎｇ）は行われないこと（図８と対照的）に留意していただきたい。このことは、Ｓ０がｒに依存し、復号化プロセスでｒを利用することができない場合はＳ０を計算することができなくなるため重要である。しかしながら、この方式は、従来技術の認証暗号化方式と同等の安全性を有することが証明され得る。
【００５５】
図２０は、チェックサム／ｒコンバイナ１９０１を示す。平文ブロックは、ステップ１９０２に示されている。まず、ステップ１９０３で、前記平文ブロック（図８）からｎビットのチェックサムが計算される。例えば、１２８ビットのＡＥＳを使用する場合は、ｎ＝１２８となる。
【００５６】
次に、ステップ１９０４で、チェックサムは、ｎ／２ビット、即ち本例のＡＥＳでは６４ビットにトランケートされる。次に、本実施形態では、１９０５に示すように、ｒ自体は明確にｎ／２ビットのみで表現され得ると仮定する。それ故、ステップ１９０６で、トランケートされたチェックサムとｒを連結すると、１９０７に示すように、ｎビットが得られる。
【００５７】
本発明は、ハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組合せの形で実現することができる。本発明は、１つのコンピュータ・システムにおいて集中的な構成で実現することも、様々な要素がいくつかの相互接続コンピュータ・システムに分散する分散的な構成で実現することもできる。本明細書に記載の各方法を実行するように適合されるコンピュータ・システム又は他の装置は、いかなる種類のものであってもよい。ハードウェアとソフトウェアの典型的な組合せは、それらがロードされ実行されたときに本明細書に記載の各方法をそれぞれ実行するようなコンピュータ・システムを制御するコンピュータ・プログラムを備えた汎用コンピュータ・システムとすることもできる。本発明は、本明細書に記載の各方法の実施を実現し、それらがコンピュータ・システムにロードされたときに各方法を実行することが可能なすべての機能を備えるコンピュータ・プログラムの形で実施することもできる。
【００５８】
本明細書の文脈において、「コンピュータ・プログラム手段」又は「コンピュータ・プログラム」という用語は、情報処理能力を有するシステムに特定の機能を直接実行させ、あるいは別の言語、コード、又は表記法への変換、又は異なる素材の形での再現、あるいはその両方が行われた後に特定の機能を実行させるように意図された、任意の言語、コード、又は表記法の１組の命令に関する任意の表現を含む。
【００５９】
他の有益な結果は、本明細書に開示の発明を様々な形で適用すること、あるいは当業者に知られている様々な手法で修正することによって実現することができる。
【００６０】
本明細書に開示の発明は上述の目的を達成するように上手く計算されていることが分かるが、当業者なら様々な修正形態及び実施形態を考案することができるはずであり、また、添付の特許請求範囲は、本発明の真の趣旨及び範囲に含まれるすべての修正形態及び実施形態を包含することが本出願人の意図するところである。
【図１】
0005462636.tif 000004
【図２】
0005462636.tif 000005
【図３】
0005462636.tif 000006
【図４】
0005462636.tif 000007
【図５】
0005462636.tif 000008
【図６】
0005462636.tif 000009
【図７】
0005462636.tif 000010
【図８】
0005462636.tif 000011
【図９】
0005462636.tif 000012
【図１０】
0005462636.tif 000013
【図１１】
0005462636.tif 000014
【図１２】
0005462636.tif 000015
【図１３】
0005462636.tif 000016
【図１４】
0005462636.tif 000017
【図１５】
0005462636.tif 000018
【図１６】
0005462636.tif 000019
【図１７】
0005462636.tif 000020
【図１８】
0005462636.tif 000021
【図１９】
0005462636.tif 000022
【図２０】
0005462636.tif 000023