伝送されるメッセージに対する、暗号に基づくメッセージ認証コードを生成する方法であって、プロセッサと、該プロセッサにより実行されて前記方法を実現するためのプログラムが格納されたメモリとを備えたコンピュータシステムにより実行される方法において、前記メッセージは、複数のバイトで構成され、前記方法は、前記プロセッサが、前記メッセージの少なくとも2バイト又は前記メッセージの前処理した2バイトに排他的OR演算を施すステップを備えていることを特徴とする暗号に基づくメッセージ認証コードの生成方法。前記プロセッサが、前記メッセージに基づいて、バイトの行及びバイトの列から構成される状態配列を生成するステップと、前記プロセッサが、前記状態配列の前記少なくとも2バイトに排他的OR演算を施すステップと、をさらに備えていることを特徴とする請求項1に記載の方法。前記プロセッサが、前記メッセージの半分に相当するバイトに、前記メッセージの他の半分に相当するバイトとの排他的OR演算を施すことによって、前記暗号に基づくメッセージ認証コードを計算するステップを備えていることを特徴とする請求項1に記載の方法。前記プロセッサが、前記状態配列の半分に相当するバイトに、前記状態配列の他の半分に相当するバイトとの排他的OR演算を施すことによって、前記暗号に基づくメッセージ認証コードを計算するステップを備えていることを特徴とする請求項2に記載の方法。本発明の目的は、DPA攻撃を困難にする、暗号に基づくメッセージ認証コードの生成方法を提供することにある。本発明によれば、この目的は、次のステップを備えた、暗号に基づくメッセージ認証コードの生成方法により達成される:伝送されるメッセージに基づいて、バイトの行とバイトの列とから構成される状態配列を生成するステップと、この状態配列の少なくとも1行のバイトを保持することにより、上記メッセージに対する、暗号に基づくメッセージ認証コードを計算するステップ。本明細書の導入部にて述べたように、暗号に基づくメッセージ認証コードCMACは、メッセージを認証するために用いられる情報である。CMACを生成するための1つの入力は、認証されるメッセージである。CMACの生成中に、伝送されるメッセージに基づく状態配列を生成する。従来のCMACの生成もこの状態配列に基づくが、この状態配列の最上位8バイトをCMAC用に保持する。しかしながら、本発明の方法によれば、CMACは状態配列の少なくとも1行からのバイトを利用して計算する。残りの行のバイトは捨てる。これにより、本発明の方法に対して差分電力攻撃を実行することが、より困難になるという結果を得ることができる。本発明による方法の1つの好適例によれば、2行のバイトを利用し、残りの行のバイトは捨てる。特に、その行のバイトを捨てる1行は、本発明のCMAC計算用に当該行のバイトを保持する2行の間にある。状態配列が4行と4列で構成される場合は、本発明のCMAC計算のためにバイトが保持される2行は、この状態配列の2つの偶数行又は2つの奇数行とすることができる。状態配列の少なくとも1行のバイトを保持することによりCMACを計算する代わりに、メッセージに対する暗号に基づくメッセージ認証コードは、このメッセージの少なくとも2バイト又はこのメッセージの前処理された2バイトに排他的OR演算を施すことにより、計算することができる。メッセージのバイトを前処理して、例えば、メッセージに基づくバイトの行とバイトの列で構成される状態配列を生成することができる。そして、この状態配列の少なくとも2バイトに、排他的OR演算を施すことができる。排他的OR演算は通常、XOR演算と称する。暗号に基づくメッセージ認証コードは、メッセージの半分に相当するバイトにメッセージのもう半分に相当するバイトとの排他的OR演算を施すことにより、生成することができる。メッセージが前処理されて状態配列が生成されている場合は、暗号に基づくメッセージ認証コードは、この状態配列の半分に相当するバイトに、この状態配列のもう半分に対応するバイトとの排他的OR演算を施すことにより、計算することができる。そして、メッセージの全てのバイト又は状態配列の全てのバイトを用いて、DPA攻撃が成功する可能性が低減される。このような方法を攻撃するためには、差分電力解析DPA攻撃は、最終ラウンド鍵からの2つの鍵バイトについての仮定を同時に構成しテストする必要がある。攻撃者の相関解析は、各ラウンド鍵バイト対についての仮説を裏付ける内部バイト信号対を探索する必要がある。よって、最初のDPA解析は、規格に従った従来のCMAC計算を用いるのに比べて、より困難になる。状態配列は、特に、例えば連邦情報処理標準FIPS文書197、2001年11月26日非特許文献2に開示されかつ本明細書の導入部で簡潔に説明した、次世代暗号方式AESに従って、生成することができる。そして、暗号に基づくメッセージ認証コードCMACを本発明の方法により計算するために用いられる状態配列は、ちょうど4行のバイトとちょうど4列のバイトとを備える。上記状態配列は、AES規格に従って計算される必要はなく、よって4行と4列を必ずしも備えているわけではない。一般的に、任意数の行又は列を用いることができる。より一般的な概念はRijndaelと称される。特に、状態配列は、ちょうど4行のバイトと6列のバイト、又は4行のバイトと8列のバイトを備えることができる。そのメッセージに対してCMACが計算されるメッセージは、単一ブロックのメッセージとすることができる。これにより、メッセージは、例えばAES規格に基づく際は、単一の状態配列により表すことができる。換言すれば、メッセージのサイズは、暗号ブロック長以下である。この変形例によれば、差分電力解析攻撃に対する耐性を向上させることができる。以下、図面に示す実施例を参照しながら、非限定的な例として、本発明をより詳細に説明する。図1と2については、本明細書の導入部で説明している。図3~5は、本発明の方法により計算したCMACに対してあり得る差分電力攻撃を例示する図である。好適な実施例については、CMACの計算に用いる状態配列25は、本明細書の導入部で説明したように得られる。状態配列25は、4つの行31~34及び4つの列41~44で構成される。これに加えて、状態配列25のもとになるメッセージは、図1に示す状態配列1により表される単一ブロックのメッセージである。好適な実施例については、CMACは、状態配列25の4つの行31~34のうち2行のバイト29、30を保持することにより計算する。残りの行のバイトは捨てる。図に示す例では、図3~5中で陰影を付けた行32と行34のバイト29、30は保持し、残りの行31、33のバイトは捨てる。よって、好適な実施例については、状態配列25の偶数番目のバイトは、CMACの計算のために保持する。あり得る差分電力解析は、次のことをもたらす:本明細書の導入部における前の説明に類似したメカニズムにより、ShiftRows演算とSubBytes演算は、当該行に相当するバイトに陰影を付けた、選択した行中のバイトのみをDPA攻撃者に対して露出させるものと見ることができ、さらに、攻撃者が回復できる最終ラウンド鍵のバイトは、これらの同じ2行に限定される。同じ攻撃戦略で、攻撃者は今度は、図4に示すように、鍵拡張を逆向きに実行して、最後から2番目のラウンド鍵の複数バイトを得ることができる選択した行に限定されたままである。このことを純然たる計算処理として適用することは、図に示す個別例では、攻撃者が最後から2番目のラウンド鍵21の陰影を付けて示す6バイトを回復できるようにするにすぎない。これは、n=0mod4である際の、バイトのローテーションを含む条件付き変換の効果によるものである。このことを明確にするために、図6に示すように、最後から2番目のラウンド鍵21の一番左の列に影響を与える反復関係のバイトは、既知のバイトについてはA、B、CそしてDとラベル付けしており、は未知のバイトを示している。行n-4を計算するにあたって、条件付き変換Tを用いて、図6から判るように、どのバイトも計算上使用可能ではない。図6の表には、次の反復関係を示す。wn4Twnなお、条件付き変換T中に実行されるローテーションにより、T中の既知のバイトは、wn内の未知のバイトと整列し、その逆も同様であるため、最後から2番目のラウンド鍵21のさらなるバイトは計算により使用可能ではない。図6の表のTを与える行中に示す16進数値は、適切なRconst値のバイトである。図5に例示するように、攻撃者は、自分のDPA解析を拡張することにより依然として最後から2番目のラウンド鍵21のさらなる2バイト27、28を回復することができる、というのは、攻撃者は、自分が集めたすべての手がかりについて、対応する状態位置にあるバイトを知っているからである。それにもかかわらず、このさらなる処理によっては攻撃者の立場は改善されない、というのは、いかなるラウンド鍵21、26も8バイトを越えて回復されていないからである。残された攻撃の複雑性は264であり、これは、標準化されたMAC切り詰め方法を用いることにより生じる、残された耐性の大幅な改善である。これより前例えば、最後から3番目のラウンド鍵バイトは計算することができるが、これは攻撃者にさらなる利益を生じさせない。図7は、CMAC計算の他の実施例を示す。好適な実施例については、CMACを計算するために用いられる状態配列25は、上述したように得る。状態配列25は、4つの行31~34及び4つの列41~44から構成される。これに加えて、状態配列25のもとになるメッセージは、図1に示す状態配列1により表されるように単一ブロックのメッセージである。状態配列25は、16バイトs0~s15からなる。好適な実施例については、CMACは、状態配列25の少なくとも2バイトs0~s15に排他的OR演算を施すことにより計算する。特に図7に示す実施例では、CMACは、行34、32のバイトs0、s2、s4、s6、s8、s10、s12、s14と、行33、31のバイトs1、s3、s5、s7、s9、s11、s13、s15とのXORをとることにより計算する。特に、好適な実施例については、CMACは次式のように計算する:CMACs0s1s2s3s4s5s6s7s8s9s10s11s12s13s14s15ここで、は排他的OR演算を示す。最後に、前述した実施例は本発明を限定するものではなく例示するものであり、当業者は、特許請求の範囲に規定する発明の範囲から逸脱することなく、多くの代案実施例を設計することができる。備えているや備える等は、請求項又は明細書全体中に記載した以外の要素又はステップの存在を排除するものではない。各要素は複数存在し得る。単に、特定の方策が互いに異なる従属請求項中に記載されていることは、これらの方策の組み合わせを有利に用いることができないことを示すものではない。