(57)【要約】      （修正有）【課題】従来技術の欠点の解決策に対する代替策を提供する暗号化モードを提供する。【解決手段】暗号化連鎖モードは平文ブロックNを取り（９１０）、暗号化鍵N−1と平文ブロックN−1をXORして暗号化鍵Nを生成し（９２０）、暗号化して（９３０）暗号文ブロックNを出力する（９４０）。最初の平文ブロックについての暗号化鍵は、ランダムな初期化ベクトル（IV）とランダムな初期化鍵KをXORすることによって生成される。初期化鍵Kは、鍵スケジュール・アルゴリズムから帰結するサブ鍵であり、および暗号化鍵N−1は単にサブ鍵のうちの一つである。最初の平文ブロックについての暗号化鍵はランダムな初期化ベクトル（IV）と鍵スケジュール・アルゴリズムから帰結する一つのサブ鍵とをXORすることによって生成される。また、対応する復号方法、暗号化装置および復号装置も提供される。【選択図】図９
2010140026.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも二つの平文ブロックの順序付けられた系列に属するデジタル・データの現在の平文ブロックを暗号化するための鍵を生成する方法であって、ある装置において：
現在の平文ブロックを取得し；
前の平文ブロックを第一の暗号化鍵と組み合わせることによって現在の平文ブロックについての第二の暗号化鍵を生成する段階を有しており、前記第一の暗号化鍵は前の平文ブロックの暗号化に使われた暗号化鍵であり、前記前の平文ブロックは、前記順序付けられた系列において現在の平文ブロックの直前の平文ブロックである、
方法。
【請求項２】
前記第一の暗号化鍵が初期化暗号化鍵である、請求項１記載の方法。
【請求項３】
少なくとも二つの平文ブロックの順序付けられた系列に属するデジタル・データの現在の平文ブロックを暗号化する方法であって、暗号化装置において：
請求項１記載の方法を使って暗号化鍵を生成し；
生成された暗号化鍵とともにある暗号化アルゴリズムを使って現在の平文ブロックを暗号化する段階を有する、
方法。
【請求項４】
少なくとも二つの暗号文ブロックの順序付けられた系列に属するデジタル・データの現在の暗号文ブロックを復号するための鍵を生成する方法であって、ある装置において：
現在の暗号文ブロックを取得し；
前に得られた平文ブロックを第一の復号鍵と組み合わせることによって現在の暗号文ブロックについての第二の復号鍵を生成する段階を有し、前記第一の復号鍵は、前の平文ブロックを得るのに使われた復号鍵であり、前記前の平文ブロックは、前記順序付けられた系列において現在の暗号文ブロックの直前の暗号文ブロックに対応する、
方法。
【請求項５】
前記第二の復号鍵生成段階において、前記組み合わせの前に、前に得られた平文ブロックに一方向性関数が適用される、請求項４記載の方法。
【請求項６】
前記前の平文ブロックの復号に使われた復号鍵は、鍵スケジュール・アルゴリズムから帰結する複数のサブ鍵のうちのあるサブ鍵または前の平文ブロックの復号に使われた複数のサブ鍵のうちのサブ鍵である、請求項４記載の方法。
【請求項７】
少なくとも二つの平文ブロックの順序付けられた系列に属するデジタル・データの現在の暗号文ブロックを復号する方法であって、復号装置において：
請求項４記載の方法を使って復号鍵を取得し；
その生成された復号鍵とともにある復号アルゴリズムを使って現在の暗号文ブロックを復号する段階を有する、
方法。
【請求項８】
少なくとも二つの平文ブロックの順序付けられた系列に属するデジタル・データの現在の平文ブロックを暗号化するための暗号化鍵を生成する装置であって：
現在の平文ブロックを取得するよう適応された通信ユニットと；
前の平文ブロックを第一の暗号化鍵と組み合わせることによって現在の平文ブロックについての第二の暗号化鍵を生成するよう適応されたプロセッサとを有し、前記第一の暗号化鍵は前の平文ブロックの暗号化に使われた暗号化鍵であり、前記前の平文ブロックは、前記順序付けられた系列において現在の平文ブロックの直前の平文ブロックである、
装置。
【請求項９】
少なくとも二つの暗号文ブロックの順序付けられた系列に属するデジタル・データの現在の暗号文ブロックを復号するための復号鍵を生成する装置であって：
現在の暗号文ブロックを取得するよう適応された通信ユニットと；
前に得られた平文ブロックを第一の復号鍵と組み合わせることによって現在の暗号文ブロックについての第二の復号鍵を生成するよう適応されたプロセッサとを有し、前記第一の復号鍵は前の平文ブロックを得るために使われた復号鍵であり、前記前の平文ブロックは、前記順序付けられた系列において現在の暗号文ブロックの直前の暗号文ブロックである、
装置。
【請求項１０】
暗号文ブロックを復号するために複数のサブ鍵が使われ、前記プロセッサは、前記前の平文ブロックと組み合わせるべき、前記複数のサブ鍵のうちからの少なくとも一つのサブ鍵を見出すよう適応されている、請求項９記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概括的には暗号に、詳細にはブロックごとのデータの連鎖暗号化に関する。
【背景技術】
【０００２】
このセクションは、下記で記載および／または特許請求される本発明のさまざまな側面に関係しうる当技術分野のさまざまな側面を読者に紹介することを意図している。この議論は、本発明のさまざまな側面のよりよい理解を助けるための背景情報を読者に提供する助けとなるものと思われる。よって、これらの陳述がこの観点で読まれるべきであり、従来技術の自認として読まれるべきでないことは理解しておくべきである。
【０００３】
テキスト、オーディオおよびビデオのようなデジタル・データを暗号化し、保護するための多くの従来式の暗号化モード（encryption  mode）がある。これらのモードの大半は暗号化すべきデータをブロックに分割するものであり、連鎖ステップを含む。そのようなモードの例は暗号ブロック連鎖（CBC:  Cipher  Block  Chaining）、暗号フィードバック・モード（CFB:  Cipher  FeedBack  Mode）および出力フィードバック・モード（OFB:  Output  FeedBack  Mode）である。これらのモードの共通した特徴は、連鎖するステップが直前の暗号化されたデータ・ブロックに基づいているということである。これらのモードの説明は例えば、非特許文献１に見出されうる。
【０００４】
たとえば、特許文献１にも記載され、図１に示されているCBCは、現在のデータ・ブロックを暗号化するために直前の暗号化データ・ブロックを使用する。図１は、第一のデータ・ブロック「平文ブロック１」が初期化ベクトル（initialization  vector）IVとXORされ、その出力が先進暗号化標準（AES:  Advanced  Encryption  Standard）アルゴリズムおよび鍵を使って暗号化されて、第一の暗号化データ・ブロック「暗号ブロック１」を生成する様子を示している。この第一の暗号化データ・ブロックが、次のデータ・ブロックの暗号化の際に、次のデータ・ブロック「平文ブロック２」とXORされる。このプロセスは、最後のデータ・ブロックが暗号化されるまで繰り返される。復号は逆向きに実行される。すなわち、第一の暗号化データ・ブロックがAESおよび鍵を使って復号され、その出力がIVとXORされて第一のデータ・ブロックが得られる。
【０００５】
特許文献１は平文ブロック連鎖（PCB:  Plaintext  Block  Chaining）をも記載している。これは、暗号化に使われる鍵が直前の平文ブロックおよび暗号化全体を通じて同一の暗号化鍵から生成されるものである。この先行技術文献はまた、平文ブロックの暗号化のためにCBCとPCBを交互に使うことも記載している。
【０００６】
CBCの平文に何らかの変化があればどこまでも伝搬するが、暗号文の変化は伝搬しない。この欠点を克服するため、伝搬暗号ブロック連鎖モード（PCBC:  Propagating  Cipher  Block  Chaining  Mode）が開発された。PCBCは図２に示されている。
【０００７】
PCBCは、CBCで暗号化されるべき各平文ブロックがまず直前の平文ブロックとXORされるようにしたものと言ってもよい。見て取れるように、平文ブロック２はまず平文ブロック１とXORされ、その出力が次いでCBCと同様に処理される。すなわち、直前の暗号文ブロック「暗号文ブロック１」とXORされ、それが暗号化されて暗号文ブロック２を生成し、この暗号文ブロック２が次の平文ブロックについてのXOR演算において使用される。第一の平文ブロックは、直前の平文ブロックがないので、本質的には、空のブロックとXORされる。
【０００８】
しかしながら、ブロックどうしの入れ換えが、入れ換えられたブロックより先の平文ブロックには影響しないことが発見された。これは、そうした変化がどこまでも伝搬されるのではないということを意味する。
【０００９】
この欠点を克服するため、修正PCBC（MPCBC:  Modified  PCBC）と呼ばれるモードが提案されている。MPCBCは図３に示されている。このモードによるPCBCの修正は、直前の平文ブロックとのXORの位置を暗号化前から暗号化後に変えることである。見て取れるように、平文ブロック「平文ブロック２」が直前の暗号文ブロック「暗号文ブロック１」とXORされて暗号化のための入力を与え、暗号化された出力は次いで直前の平文ブロック「平文ブロック１」とXORされて暗号文「暗号文ブロック２」が与えられる。
【００１０】
MPCBCはうまく機能するように見えるが、当業者は、暗号プロトコルは、安全だと信じられているプロトコルが実際には予期されないセキュリティの破れを含むことがありうることを認識するであろう。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】国際公開第２００７／１１８８２９号パンフレット
【非特許文献】
【００１２】
【非特許文献１】ブルース・シュナイアー（Bruce  Schneier）、『暗号技術大全（Applied  Cryptography）第２版』、1996年、ジョン・ワイリー・アンド・サンズ社（John  Wiley  &  Sons,  Inc.）、米国
【発明の概要】
【発明が解決しようとする課題】
【００１３】
したがって、従来技術の欠点の解決策に対する代替策を提供する暗号化モードが必要とされている。本発明はそのような代替策を提供する。
【課題を解決するための手段】
【００１４】
第一の側面では、本発明は、デジタル・データの現在の平文ブロックを暗号化するための鍵を生成する方法に向けられる。現在の平文ブロックは少なくとも二つの平文ブロックの順序付けられた系列に属する。装置が現在の平文ブロックを取得し、前の平文ブロックを第一の暗号化鍵と組み合わせることによって現在の平文ブロックについての第二の暗号化鍵を生成する。
【００１５】
第一の好ましい実施形態では、第一の暗号化鍵は初期化暗号化鍵である。
【００１６】
第二の好ましい実施形態では、第一の暗号化鍵は、前の平文ブロックの暗号化に使われた暗号化鍵である。前記前の平文ブロックは、前記順序付けられた系列において現在の平文ブロックの直前の平文ブロックである。
【００１７】
第二の側面では、本発明は、デジタル・データの現在の平文ブロックを暗号化する方法に向けられる。現在の平文ブロックは少なくとも二つの平文ブロックの順序付けられた系列に属する。暗号化装置が本発明の第一の側面の方法を使って暗号化鍵を取得し、その生成された暗号化鍵とともにある暗号化アルゴリズムを使って現在の平文ブロックを暗号化する。
【００１８】
第三の側面では、本発明は、デジタル・データの現在の暗号文ブロックを復号するための鍵を生成する方法に向けられる。現在の暗号文ブロックは少なくとも二つの暗号文ブロックの順序付けられた系列に属する。復号装置が現在の暗号文ブロックを取得し、前に得られた平文ブロックを第一の復号鍵と組み合わせることによって現在の暗号文ブロックについての第二の復号鍵を生成する。
【００１９】
第一の好ましい実施形態では、第一の復号鍵は、前の平文ブロックを得るのに使われた復号鍵である。前記前の平文ブロックは、前記順序付けられた系列において現在の暗号文ブロックの直前の暗号文ブロックに対応する。
【００２０】
第二の好ましい実施形態では、第二の復号鍵生成ステップにおいて、前記組み合わせの前に、前に得られた平文ブロックに一方向性関数が適用される。
【００２１】
第三の好ましい実施形態では、前の平文ブロックの復号に使われた復号鍵は、鍵スケジュール・アルゴリズムから帰結する複数のサブ鍵のうちのあるサブ鍵または前の平文ブロックの復号に使われた複数のサブ鍵のうちのあるサブ鍵である。
【００２２】
第四の側面では、本発明は、デジタル・データの現在の暗号文ブロックを復号する方法に向けられる。現在の暗号文ブロックは少なくとも二つの平文ブロックの順序付けられた系列に属する。復号装置が前記第三の側面の方法を使って復号鍵を取得し、その生成された復号鍵とともにある復号アルゴリズムを使って現在の暗号文ブロックを復号する。
【００２３】
第五の側面では、本発明は、デジタル・データの現在の平文ブロックを暗号化するための暗号化鍵を生成する装置に向けられる。現在の平文ブロックは少なくとも二つの平文ブロックの順序付けられた系列に属する。本装置は、現在の平文ブロックを取得するよう適応された通信ユニットと、前の平文ブロックを第一の暗号化鍵と組み合わせることによって現在の平文ブロックについての第二の暗号化鍵を生成するよう適応されたプロセッサとを有する。
【００２４】
第六の側面では、本発明は、デジタル・データの現在の暗号文ブロックを復号するための復号鍵を生成する装置に向けられる。現在の暗号文ブロックは少なくとも二つの暗号文ブロックの順序付けられた系列に属する。本装置は、現在の暗号文ブロックを取得するよう適応された通信ユニットと、前に得られた平文ブロックを第一の復号鍵と組み合わせることによって現在の暗号文ブロックについての第二の復号鍵を生成するよう適応されたプロセッサとを有する。
【００２５】
ある好ましい実施形態では、暗号文ブロックを復号するために複数のサブ鍵が使われ、プロセッサは、前の平文ブロックと組み合わせるべき、複数のサブ鍵のうちからの少なくとも一つのサブ鍵を見出すよう適応される。
【００２６】
本発明の好ましい特徴についてこれから、付属の図面を参照しつつ、限定しない例として、述べる。
【図面の簡単な説明】
【００２７】
【図１】すでに述べたように、従来技術の暗号ブロック連鎖（CBC）モードを示す図である。
【図２】すでに述べたように、従来技術の伝搬暗号ブロック連鎖（PCBC）モードを示す図である。
【図３】すでに述べたように、従来技術の修正伝搬暗号ブロック連鎖（MPCBC）モードを示す図である。
【図４】本発明の第一の好ましい実施形態に基づく連鎖モードを示す図である。
【図５】本発明の第二の好ましい実施形態に基づく連鎖モードを示す図である。
【図６】本発明の変形実施形態に基づく連鎖モードを示す図である。
【図７】鍵スケジュール・アルゴリズムを示す図である。
【図８】本発明に基づく方法のさらなる変形実施形態を示す図である。
【図９】本発明の連鎖モードのある好ましい実施形態に基づく平文ブロックの暗号化の方法を示す図である。
【図１０】本発明の連鎖モードのある好ましい実施形態に基づく平文ブロックの復号の方法を示す図である。
【図１１】本発明のある好ましい実施形態に基づく連鎖モードを使った暗号化および復号のための装置を示す図である。
【発明を実施するための形態】
【００２８】
本発明は、少なくとも二つの平文ブロックの順序付けられた系列に属するデジタル・データの現在の平文ブロックを暗号化するための暗号化鍵を生成する方法に向けられる。現在の平文ブロックが取得され、現在の平文ブロックについての第二の暗号化鍵が、前の平文ブロックを第一の暗号化鍵と組み合わせることによって生成される。
【００２９】
本発明は少なくとも二つの変形がある：逐次式変形および非逐次式変形である。逐次式変形では、第一の暗号化鍵は、前の平文ブロックを暗号化するのに使われた暗号化鍵である。前記前の平文ブロックは、順序付けられた系列において現在の平文ブロックの直前の平文ブロックである。非逐次的な例では、第一の暗号化鍵は初期化暗号化鍵であり、これは、少なくとも二つの平文ブロックについての暗号化鍵の生成について一定のままである。復号側では、これらの変形は復号鍵の生成にも適用される。
【００３０】
図４は、本発明の第一の好ましい実施形態、「非逐次的変形」に基づく連鎖モードを示している。図の上半分は暗号化を例解し、図の下半分は復号を例解する。
【００３１】
第一の平文ブロック「平文ブロック１」は、先行する平文ブロックがないので特別な仕方で扱う必要がある。この目的に向け、従来技術と同様に、図４の方法は、すでに知られている、好ましくはランダムな初期化鍵Kおよび好ましくはランダムな初期化ベクトルIVを使う。IVは保護されない形で送ることができるが、鍵は暗号化されたコンテンツの受信者に安全に伝送される必要がある。当業者は、鍵Kはたとえば受信者の装置鍵で暗号化されて受信者に送信されてもよいことを認識するであろう。この暗号化ステップは、公開鍵暗号法または対称鍵暗号法を使って実行されうる。対称鍵を使って行われる場合には、本発明は初期化鍵Kの暗号化のためにも使われてもよい。
【００３２】
平文ブロック１は、初期化鍵KをランダムなIVとXORしたものから帰結する暗号化鍵を使って暗号化され、それにより暗号文ブロック１が生成される。その後の各平文ブロックは、前の平文ブロックおよび初期化鍵KをXORすることによって得られる新しい暗号化鍵を使って暗号化される。得られた暗号文ブロックは、暗号化されるとすぐに一つずつ送信されてもよいが、二つ以上（全部でもよい）の暗号文ブロックを送信のためにまとめることも可能である。
【００３３】
暗号文ブロック１は、初期化鍵KとIVの間のXORから帰結する復号鍵を使って復号され、平文ブロック１を生成する。その後の各暗号文ブロックは、前の生成された平文ブロックと初期化鍵KをXORすることによって得られる新しい復号鍵を使って復号される。
【００３４】
当業者は、暗号化鍵および復号鍵が有利には同一であることを認識するであろう。
【００３５】
復号プロセスは暗号化時に定義された順序、たとえば暗号文ブロック１、次いで暗号文ブロック２、……、暗号文ブロックNの順でしか実行できないが、暗号化プロセスはこの第一の好ましい実施形態ではいかなる順序で実行されることもできることがわかる。暗号化鍵は少なくとも前の平文ブロックと初期化鍵のような一つの基本鍵に依存するからである。たとえば、逆順に実行することもできる。すなわち、まず暗号文ブロックN、次いで暗号文ブロックN−1、……、暗号文ブロック１と暗号化していくのである。これは、復号時における順序には影響しない。復号時における順序は、暗号文ブロック１、次いで暗号文ブロック２、……、暗号文ブロックNのままである。これが可能なのは、暗号化鍵を修正するのに使われるのが平文ブロックであるためである。
【００３６】
図５は、本発明の第二の好ましい実施形態「逐次式変形」に基づく連鎖モードを示している。図の上半分は暗号化を例解し、図の下半分は復号を例解する。
【００３７】
第一の平文ブロック「平文ブロック１」は、先行する平文ブロックがないので特別な仕方で扱う必要がある。この目的に向け、従来技術と同様に、図５および図６の方法は、すでに知られている、好ましくはランダムな初期化鍵Kおよび好ましくはランダムな初期化ベクトルIVを使う。IVは保護されない形で送ることができるが、鍵は暗号化されたコンテンツの受信者に安全に送信される必要がある。当業者は、鍵Kはたとえば受信者の装置鍵で暗号化されて受信者に送信されてもよいことを認識するであろう。この暗号化ステップは、公開鍵暗号法または対称鍵暗号法を使って実行されうる。対称鍵を使って行われる場合には、本発明は初期化鍵Kの暗号化のためにも使われてもよい。
【００３８】
平文ブロック１は、初期化鍵KをランダムなIVとXORしたものから帰結する暗号化鍵を使って暗号化され、それにより暗号文ブロック１が生成される。その後の各平文ブロックは、前の平文ブロックと前の平文ブロックを暗号化するのに使われた鍵とをXORすることによって得られる新しい暗号化鍵を使って暗号化される。得られた暗号文ブロックは、暗号化されるとすぐに一つずつ送信されてもよいが、二つ以上（全部でもよい）の暗号文ブロックを送信のためにまとめることも可能である。
【００３９】
暗号文ブロック１は、初期化鍵KとIVの間のXORから帰結する復号鍵を使って復号され、平文ブロック１を生成する。その後の各暗号文ブロックは、前の生成された平文ブロックと前の暗号文ブロックを復号するのに使われた鍵とをXORすることによって得られる新しい復号鍵を使って復号される。
【００４０】
当業者は、暗号化鍵および復号鍵が有利には同一であることを認識するであろう。
【００４１】
逐次式変形と非逐次式変形は種々の仕方で実装されることができる。たとえば、暗号化および復号のためにいかなるブロック暗号アルゴリズムが使われることもできる。好ましいアルゴリズムはAESである。もう一つの例は、鍵と平文ブロックとを組み合わせるためにXOR以外の関数を使うことである。たとえばxを鍵Kのビット長として2xを法とする加算などである。平文ブロックを、鍵と組み合わせる前に、たとえば一方向性関数の適用によって修正することも可能である。
【００４２】
また、本発明は、CBCのような他のいかなるブロック連鎖モード動作と組み合わせることもできる。CBCモードと組み合わされる場合、本発明は、修正伝搬暗号ブロック連鎖モード（MPCBC）に対する興味深い代替を提供する。本方法の第二の好ましい実施形態とCBCとの組み合わせが図６に示されている。見て取れるように、図５に対して追加された特徴は、平文ブロックが暗号化の前に前の暗号文ブロックと（XORによって）組み合わされるということである。
【００４３】
以下では、提案される連鎖モードを一層効率的かつ一層安全にすることのできる具体的な機構について述べる。各ラウンドはデータを処理するためにラウンド鍵またはサブ鍵を使う。各ラウンドの構成は、サブ鍵が変更されるというほかは同じである。すなわち、データは各ラウンドで逐次的に暗号化される。したがって、たいていのブロック暗号は、マスター鍵Kからサブ鍵を計算する鍵スケジュール・アルゴリズムを含む。より正確には、鍵スケジュール・アルゴリズムが鍵Kおよび方向（「暗号化」または「復号」）を処理して、R個のサブ鍵のシーケンス、つまり方向が暗号化であればEK0、EK1、……、EKR-1、方向が復号であればDK0、DK1、……、DKR-1を生成する。暗号化は図７に描かれるようにRラウンドを通じて実行される。小さな暗号化アルゴリズム（TEA:  Tiny  Encryption  Algorithm）のようないくつかのブロック暗号は128ビットのマスター鍵Kが４つの32ビット・ラウンド鍵に分割されて相続くラウンドで反復的に使用される単純な鍵スケジュールをもつ。他のブロック暗号はより複雑な鍵スケジュールをもつ。たとえばAESの場合がそうで、AESは鍵Kをマスター鍵Kと同じ長さをもついくつかのラウンド鍵に拡大する。
【００４４】
いくつかのブロックを同じ鍵Kで暗号化するとき、鍵スケジュール・アルゴリズムは一般には、はじめに、第一の平文ブロックの暗号化の前に、一度呼び出される。一連の平文ブロックの暗号化は、前に計算されたサブ鍵を使って行われる。これがCBCやPCBCのような従来技術の方法でのやり方である。本発明では、各ブロックの暗号化のために鍵が変化するということのため、鍵スケジュール・アルゴリズムは複数回、平文ブロックの総数と同じ回数、実行される必要がある。これは、パフォーマンスに対する遅延を導入し、暗号化／復号のスピードを遅くする。これは望ましくないことがありうる。
【００４５】
よって、この欠点を回避する本方法の変形実施形態をもつことが有利である。鍵を組み合わせる代わりに、少なくとも一つのサブ鍵を前の平文ブロックと組み合わせる。たとえば、XOR演算は、前のブロックを暗号化／復号するために使われる少なくとも一つのサブ鍵と前の平文ブロック自身との間で行われる。
【００４６】
図８は、AESを使った本発明に基づく方法の変形実施形態を示している。AESの128ビット・バージョンは128ビットの鍵Kを、鍵スケジュール・アルゴリズムを通じて方向が暗号化のときは10個の128ビット・サブ鍵EK0、EK1、……、EK9に拡大する。平文ブロック１は10個のサブ鍵を使って逐次反復的に暗号化される。ここで、第一のサブ鍵はEK0とIVとの間のXORから帰結し、他のすべてのサブ鍵EKi（i≠0）は鍵スケジュールによってもともと生成されたサブ鍵と同一のままである。その後の各平文ブロックNは、（前の平文ブロックを暗号化するのに使われた）前の諸サブ鍵を取り、前の平文ブロックN−1をサブ鍵EKnとXORすることによって得られる新しい暗号化サブ鍵を使って逐次反復的に暗号化される。ここで、nはN−1を10で割った余りである（すなわち、n＝N−1  ％  10）。他のすべてのサブ鍵EKi（i≠n）は前の平文ブロックを暗号化するサブ鍵EKiと同一のままである。たとえば、図８は、初期サブ鍵EK0ないしEK9が各平文ブロックについてどのように修正されるかを示している。平文ブロック１についてはEK0だけが修正され、平文ブロック２についてはEK1だけがさらに修正される、などとなる。
【００４７】
復号の際には、鍵Kは鍵スケジュール・アルゴリズムを通じて10個の128ビット・サブ鍵DK0、DK1、……、DK9に拡大される。暗号文ブロック１は10個のサブ鍵を使って逐次反復的に復号される。ここで、第一のサブ鍵はDK0とIVとの間のXORから帰結し、他のすべてのサブ鍵DKi（i≠0）は鍵スケジュールによって平文ブロック１を生成するために生成されたサブ鍵と同一である。その後の各暗号文ブロックNは、（前の暗号文ブロックを復号するのに使われた）前の諸サブ鍵を取り、前の平文ブロックN−1をサブ鍵DKnとXORすることによって得られる新しい復号サブ鍵を使って逐次反復的に復号される。ここで、nはN−1を10で割った余りである（すなわち、n＝N−1  ％  10）。他のすべてのサブ鍵DKi（i≠n）は前の暗号文ブロックを復号するサブ鍵DKiと同一のままである。
【００４８】
復号プロセスが所定の順序（まず暗号文ブロック１、次いで暗号文ブロック２、など）でしか行えないことを考えると、復号装置は、所与の暗号文ブロックの復号のために、どのサブ鍵を前の平文ブロックと組み合わせるべきかを知ることができる。各ブロック復号動作の後、正しいサブ鍵をポイントするためにカウンタ／変数が使用されてもよい。
【００４９】
各ブロック暗号化において一つのサブ鍵だけをそれを前の平文とXORすることによって修正することは、古典的な連鎖モードよりいささかも多くない演算を有することを可能にする（各ブロック暗号化において一つのXOR演算が加わるだけである）。よって、この変形実施形態は従来技術の連鎖モードと同じくらい効率的であることが理解されるであろう。
【００５０】
本方法は、鍵Kを任意個のサブ鍵に拡大するブロック暗号に一般化できる。サブ鍵の総数がRであれば、各ブロックNは、（前のブロックを暗号化／復号するために使用された）前のサブ鍵を取り、前の平文ブロックN−1をサブ鍵EKn／DKnとXORすることによって得られる新しいサブ鍵を使って暗号化／復号される。ここで、nはn−1をRで割った余りである（すなわち、n＝N−1  ％  R）。
【００５１】
別の変形例では、暗号化／復号サブ鍵は、前の暗号文ブロックを暗号化／復号するのに使われたすべての前のサブ鍵を前の平文ブロックN−1とXORすることによって生成される。第一の平文／暗号文ブロックについては、暗号化／復号サブ鍵はみな初期化ベクトルIVとXORされる。
【００５２】
別の変形例では、暗号化／復号サブ鍵は、常に同じサブ鍵、たとえばEK0／DK0を前の平文ブロックN−1とXORすることによって生成され、最初のブロックについてはEK0／DK0はIVとXORされる。
【００５３】
あるさらなる変形例では、暗号化／復号サブ鍵は、（前の暗号文ブロックを暗号化／復号するのに使われた）少なくとも二つの前のサブ鍵(EKi,EKj)／(DKi,DKj)の任意の組み合わせを、前の平文ブロックと一緒に使って生成される。組み合わせ演算は、これに制約されるものではないが、任意の一方向性関数を使ってもよい。
【００５４】
セキュリティの観点からは、いくつかのブロック暗号アルゴリズムは、鍵スケジュールの弱さのために、関係鍵攻撃（related-key  attack）の問題がある。メモリ・フットプリントを最小にし、スピードを最大にするよう設計された小さな暗号化アルゴリズム（TEA:  Tiny  Encryption  Algorithm）の場合がそうである。TEAの弱点は、その鍵スケジュール・アルゴリズムの過度に単純な設計から生じる。
【００５５】
ブロック暗号に対する関係鍵攻撃を防ぐため、強力な鍵スケジュールが好ましい。そのような鍵スケジュールは次のような性質をもつべきである：
性質１：任意のサブ鍵が与えられたとき、単に使用されている諸関数を逆にすることによって他のサブ鍵またはマスター鍵にたどり着くことが実行不能であるべきである。
性質２：サブ鍵とマスター鍵Kとの間のビット漏れ（bit  leakage）をなくすべきである。
【００５６】
第二の性質は、たとえば、サブ鍵EKiとサブ鍵EKi-1またはサブ鍵EKi+1が多くのビット情報を共通してもたないことを保証する。いくつかの攻撃はサブ鍵の間の関係を利用するので、これらの関係が存在しなければ、そうした攻撃はより高い複雑さ（complexity）をもつことになる。
【００５７】
本発明に基づく方法を使うと、鍵スケジュール出力は鍵Kのみに依存するのではなく、暗号化すべき平文にも依存することになる。これは、平文が知られていない場合に鍵スケジュールを逆にする（invert）のをより困難にする。これが性質１によって期待されることである。換言すれば、脆弱な鍵スケジュール出力をいくつかの平文ブロックと混合することによって、鍵スケジュールの脆弱性が低下する。
【００５８】
さらに、各ブロック暗号化において修正されるサブ鍵を変更することは性質２を可能にする。実際、鍵スケジュールが脆弱であり、ブロックNの暗号化について多くのビット情報を共通にもつ二つのサブ鍵EKn-1およびEKnを生成する場合、対（EKn-1  XOR  Pn-1およびEKn  XOR  Pn）は、二つの平文ブロックPn-1とPnが異なっている可能性が高いので、より少ない情報を共通にもつことになる。これが、サブ鍵EKn／DKnが各ブロック暗号化／復号において修正されるときになされることである（ここで、n＝N−1  ％  Rで、Rはブロック暗号アルゴリズムにおけるラウンド数）。このようにして、二つのサブ鍵の間の、さらにはサブ鍵とマスター鍵Kとの間の共通情報が解消される。
【００５９】
さらに、実際上攻撃をセットアップすることはしばしば、平文が異なっているが同じ鍵で暗号化された膨大な数の暗号文を必要とする。従来技術の方法では、長いメッセージを暗号化するとき、メッセージは異なるブロックに分割され、同じ鍵で暗号化される。するとこれは、攻撃を実施するために必要とされる量の暗号文を集めるときに助けとなりうる。本発明に基づく方法は、長いメッセージについて各ブロックの暗号化について鍵が変化するので、これをずっと困難にする。
【００６０】
図９は、本発明のある好ましい実施形態に基づく一般的な暗号化方法をさらに例示している。図９では、単一の平文ブロックが暗号化されるが、本方法を逐次反復によって一般化することが可能であることは認識されるであろう。まず、平文ブロックNが取得され９１０、暗号化鍵Nが平文ブロックN−1および暗号化鍵N−1を使って生成される９２０。ある好ましい実施形態では、平文ブロックN−1および暗号化鍵N−1はXORを使って組み合わされる。ステップ９１０はステップ９２０のあとに行われてもよいことは理解されるであろう。次いで、平文ブロックNは、暗号化アルゴリズムおよび暗号化鍵Nを使って暗号化される９３０。これにより、その後送信または記憶されうる暗号文ブロックNが得られる９４０。前述したように、本方法は、1増やしたNを用いて反復されてもよい。
【００６１】
図１０は、本発明のある好ましい実施形態に基づく復号方法をさらに例示している。図１０では、単一の暗号文ブロックが復号されるが、本方法を逐次反復によって一般化することが可能であることは認識されるであろう。まず、暗号文ブロックNが取得され１０１０、復号鍵Nが平文ブロックN−1および復号鍵N−1を使って生成される１０２０。ある好ましい実施形態では、平文ブロックN−1および復号鍵N−1はXORを使って組み合わされる。ステップ１０１０はステップ１０２０のあとに行われてもよいことは理解されるであろう。次いで、暗号文ブロックNは、復号アルゴリズムおよび復号鍵Nを使って復号される１０３０。これにより、平文ブロックNが得られる１０４０。前述したように、本方法は、1増やしたNを用いて反復されてもよい。
【００６２】
先に暗号化方法について述べたように、第一のブロックは、復号ユニットによってあらかじめ知られていてもよいしあるいは復号が始まる前に復号ユニットによって受信されてもよい初期化鍵を使って復号される。
【００６３】
図１１は、本発明のある好ましい実施形態に基づく暗号化システムを示している。暗号化システム１１００は暗号化装置１１１０および復号装置１１２０を有する。暗号化装置１１１０は平文を受領し、受領した平文を暗号化し、得られた暗号文を出力するよう適応されている。同様に、復号装置１１２０は暗号文を受領し、受領した暗号文を復号し、得られた平文を出力するよう適応されている。
【００６４】
より詳細には、暗号化装置１１１０は、平文を受領し、暗号文を出力するよう適応された少なくとも一つの通信ユニット「I/O」１１１６と、好ましくは、有利には平文、中間結果、暗号文および少なくとも一つの暗号化鍵を記憶するよう適応された少なくとも一つのメモリ１１１４とを有する。装置１１１０はさらに、一つまたは複数の装置秘密鍵を記憶するよう適応された保護された領域１１１８を有する。装置秘密鍵は、送信前に初期化鍵Kを暗号化するために使われる。暗号化装置１１１０によって使用されるべき装置鍵の選択は、暗号化されたデータの受信者に依存する。保護された領域１１１８は好ましくは、ソフトウェア変更および物理的工作に対して耐性がある。保護された領域１１１８は、初期化鍵Kが非対称暗号法を使って暗号化される場合には、暗号化装置１１１０は暗号化のために公開鍵を使うことになるので、必要ない。さらに、暗号化装置１１１０は、本稿で記載された方法の諸実施形態の任意のものに基づいて平文の暗号化を実行するよう適応されたプロセッサ１１１２を有する。
【００６５】
同様に、より詳細には、復号装置１１２０は暗号文を受領し、平文を出力するよう適応された少なくとも一つの通信ユニット「I/O」１１２６と、好ましくは、有利には平文、中間結果、暗号文および少なくとも一つの復号鍵を記憶するよう適応された少なくとも一つのメモリ１１２４とを有する。装置１１２０はさらに、装置秘密鍵を記憶するよう適応された保護された領域１１２８を有する。装置秘密鍵は、復号装置１１２０に送信される前に初期化鍵Kを暗号化するために暗号化装置１１１０によって使われたものである。保護された領域１１２８は好ましくは、ソフトウェア変更および物理的工作に対して耐性である。保護された領域１１２８を使うことが好ましい。というのも、初期化鍵Kが非対称暗号法を使って暗号化されるとしても、復号装置１１２０はKの復号のために秘密鍵を使うことになり、この秘密鍵は保護され、安全な領域に記憶する必要があるからである。さらに、復号装置１１２０は、本稿で記載された方法の諸実施形態の任意のものに基づいて平文の復号を実行するよう適応されたプロセッサ１１２２を有する。
【００６６】
図にはまた、プロセッサにおいて実行されたときに本稿に記載された方法の諸実施形態の任意のものに基づく暗号化方法または復号方法をそれぞれ実行させるコンピュータ可読命令が記憶されているデータ記憶媒体１１３０、１１４０が示されている。
【００６７】
理解されるであろうように、本発明は、修正された平文および暗号ブロック連鎖モード（MPCBC:  Modified  Plain  &  Cipher  Block  Chaining  Mode）に対するより安全な代替策を、少なくともある実施形態では同等の効率でありながら、提供する。
【００６８】
本明細書および（該当する場合には）請求項および図面において開示される各特徴は独立して、あるいは任意の適切な組み合わせにおいて設けられてもよい。ハードウェアにおいて実装されるように記載されている特徴がソフトウェアにおいて実装されてもよく、逆にソフトウェアにおいて実装されるように記載されている特徴がハードウェアにおいて実装されてもよい。
【００６９】
請求項に参照符号があったとしても単に例示のためであり、特許請求の範囲を制限する効果をもつものではない。
【符号の説明】
【００７０】
９１０  平文ブロックNを取得
９２０  平文ブロックN−1に基づいて暗号化鍵Nを生成
９３０  暗号化鍵Nを使って平文ブロックNを暗号化
９４０  暗号文ブロックNを取得
１０１０  暗号文ブロックNを取得
１０２０  復号された平文ブロックN−1に基づいて復号鍵Nを生成
１０３０  復号鍵Nを使って暗号文ブロックNを復号
１０４０  平文ブロックNを取得
１１１０  暗号化装置
１１１２  プロセッサ
１１１４  メモリ
１１１６  I/O
１１１８  保護された領域
１１２０  復号装置
１１２２  プロセッサ
１１２４  メモリ
１１２６  I/O
１１２８  保護された領域
【図１】
2010140026.tif 000003
【図２】
2010140026.tif 000004
【図３】
2010140026.tif 000005
【図４】
2010140026.tif 000006
【図５】
2010140026.tif 000007
【図６】
2010140026.tif 000008
【図７】
2010140026.tif 000009
【図８】
2010140026.tif 000010
【図９】
2010140026.tif 000011
【図１０】
2010140026.tif 000012
【図１１】
2010140026.tif 000013
【外国語明細書】
2010140026000001.pdf