(57)【特許請求の範囲】
【請求項１】
平文メッセージ（１０）から、暗号文メッセージ（５０）と前記暗号文メッセージ（５０）を認証するためのグローバルタグ（５２）とを提供するために巡回反復を用いるブロック暗号方法であって、前記平文メッセージ（１０）は、既定のビット長を有する複数の順序付けられた平文ブロック（１１）に変換され、前記平文ブロック（１１）の各々は、巡回の間に現在の平文ブロックとして順序付けられた方式で連続的に処理され、前記方法は、
・第１のデータ（２１）をレジスタ（２３）内にロードする動作と、
・ブロック暗号アルゴリズム（３５）内に入力データ（２０）を入力するための第１のステップであって、前記入力データ（２０）は、前記レジスタ（２３）のデータ（２１）と再現可能なデータ（２２）とを備える第１のステップと、
・前記ブロック暗号アルゴリズム（３５）内で、単一の暗号鍵（３４）を用いて前記入力データ（２０）を暗号化することによって暗号文（３０）を計算するための第２のステップであって、前記暗号文（３０）は、第１のセグメント（３１）と第２のセグメント（３２）とを備え、後者は認証ローカルタグとして定義される第２のステップと、
・前記第１のセグメント（３１）、前記認証ローカルタグ、及び前記現在の平文ブロック（１１）をオペランドとして使用して第１の演算（４１）を実行することによって暗号文ブロック（５１）を計算するための第３のステップと
の各ステップを実行することによって前記巡回を実行する動作と、
・すべての前記平文ブロック（１１）が巡回において処理されていない限り、前記暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記第１のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ（２２）に更新関数を適用する動作と、
・前記順序付けられた方式において、すべての巡回の前記暗号文ブロック（５１）を連結することによって前記暗号文メッセージ（５０）を決定する動作と、
・その後、最後に計算された暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記巡回の最初の２ステップのみを実行する前に前記再現可能なデータ（２２）に対して前記更新関数を適用する動作と、
・その後、オペランドとして前記計算された認証ローカルタグ（３２）をすべて用いて第２の演算（４２）によって前記グローバルタグ（５２）を計算する動作と
を備えることを特徴とする方法。
【請求項２】
前記レジスタ（２３）の前記第１のデータ（２１）及び前記再現可能なデータ（２２）が同じビット長を有していなくても、前記第１のデータ（２１）と前記再現可能なデータ（２２）との間の共通のビット長を回復するための予備的なステップであって、ブロック暗号アルゴリズム（３５）内に前記入力データ（２０）を入力する前に講じられる前記予備的なステップを更に備える請求項１に記載のブロック暗号方法。
【請求項３】
前記第１のデータ（２１）は、初期化ベクトルである請求項１又は２に記載のブロック暗号方法。
【請求項４】
前記第１のデータ（２１）は、オペランドとして平文テキスト関連データ（２４）を用いた初期演算（４３）の結果である請求項１又は２に記載のブロック暗号方法。
【請求項５】
前記初期演算（４３）と前記第１の演算（４１）及び前記第２の演算（４２）とは、排他的論理和演算である請求項１〜４のいずれか１項に記載のブロック暗号方法。
【請求項６】
前記平文メッセージ（１０）が前記平文ブロック（１１）のビット数の倍数でないビット数を有するケースにおいて、少なくとも１デフォルトビットにより終端の平文ブロック（１１）をパディングするためのステップを更に備える請求項１〜５のいずれか１項に記載のブロック暗号方法。
【請求項７】
前記第３のステップにおける前記第１の演算（４１）が、第１のサブ演算（ＯＰ１1）及び第２のサブ演算（ＯＰ１2）を含み、前記第１のサブ演算（ＯＰ１1）がオペランドとして現在の平文ブロック及び第１のセグメント（３１）を使用し、前記第２のサブ演算（ＯＰ１2）がオペランドとして前記認証ローカルタグ及び前記第１のサブ演算（ＯＰ１1）の結果を使用する請求項１に記載のブロック暗号方法。
【請求項８】
暗号文メッセージ（５０）から、平文メッセージ（１０）と、前記平文メッセージを認証するためのグローバルタグ（５２）とを提供するために巡回反復を用いるブロック復号方法であって、前記暗号文メッセージ（５０）は、同じビット長を有する複数の順序付けられた暗号文ブロック（５１）に変換され、前記暗号文ブロック（５１）の各々は、巡回の間に現在の暗号文ブロックとして順序付けられた方式で連続的に処理され、前記方法は、
・第１のデータ（２１）をレジスタ（２３）内にロードする動作と、
・ブロック復号アルゴリズム（３５）内に入力データ（２０）を入力するための第１のステップであって、前記入力データ（２０）は、前記レジスタ（２３）のデータ（２１）と再現可能なデータ（２２）とを備える第１のステップと、
・前記ブロック復号アルゴリズム（３５）内で、単一の暗号鍵（３４）を用いて前記入力データ（２０）を復号化することによって第１の出力（３０）を計算するための第２のステップであって、前記第１の出力は、第１のセグメント（３１）と第２のセグメント（３２）とを備え、後者は認証ローカルタグとして定義される第２のステップと、
・前記第１のセグメント（３１）、前記認証ローカルタグ、及び前記現在の暗号文ブロック（５１）をオペランドとして使用して第１の演算（４１）を実行することによって平文ブロック（１１）を計算するための第３のステップと
の各ステップを実行することによって前記巡回を実行する動作と、
・すべての前記暗号文ブロック（５１）が巡回において処理されていない限り、前記現在の暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記第１のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ（２２）に更新関数を適用する動作と、
・前記順序付けられた方式において、すべての前記巡回の前記平文ブロック（１１）を連結することによって前記平文メッセージ（１０）を決定する動作と、
・その後、前記現在の暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記巡回の最初の２ステップのみを実行する前に前記再現可能なデータ（２２）に対して前記更新関数を適用する動作と、
・その後、オペランドとして前記計算された認証ローカルタグ（３２）をすべて用いて第２の演算（４２）によって前記グローバルタグ（５２）を計算する動作と
を備えることを特徴とする方法。
【請求項９】
前記レジスタ（２３）の前記第１のデータ（２１）及び前記再現可能なデータ（２２）が同じビット長を有していなくても、前記第１のデータ（２１）と前記再現可能なデータ（２２）との間の共通のビット長を回復するための予備的なステップであって、ブロック暗号アルゴリズム（３５）内に前記入力データ（２０）を入力する前に講じられる前記予備的なステップを更に備える請求項８に記載のブロック復号方法。
【請求項１０】
前記第１のデータ（２１）は、初期化ベクトルである請求項８又は９に記載のブロック復号方法。
【請求項１１】
前記第１のデータ（２１）は、オペランドとして平文関連データ（２４）を用いた初期演算（４３）の結果である請求項８又は９に記載のブロック復号方法。
【請求項１２】
前記初期演算（４３）と前記第１の演算（４１）及び前記第２の演算（４２）とは、排他的論理和演算である請求項８〜１１のいずれか１項に記載のブロック復号方法。
【請求項１３】
前記暗号文メッセージ（５０）は、認証データを更に備え、前記方法は、前記認証データが前記グローバルタグ（５２）と同一であるか否かをチェックするためのステップを更に備え、そうでなければ、暗号文メッセージ（５０）は、信頼性がないものとして宣言される請求項８〜１２のいずれか１項に記載のブロック復号方法。
【請求項１４】
平文メッセージ（１０）から、暗号文メッセージ（５０）と、前記暗号文メッセージ（５０）を認証するためのグローバルタグ（５２）と、を提供するために巡回反復を用いるブロック暗号方法を実施するための暗号装置（６０）であって、
・第１のデータを受信するためのレジスタ（２３）と、
・更新関数に従って再現可能なデータ（２２）を更新するためのアップデータ（２５）と、
・少なくとも前記平文メッセージ（１０）を受信するためのインタフェース（６１）と、
・同じビット長を有する複数の順序付けられた平文ブロック（１１）に、前記平文メッセージ（１０）を変換し格納するための変換装置（６２）と、
・巡回の間に現在の平文ブロックとして、順序付けられた方式で前記平文ブロック（１１）の各々を連続的に処理するための処理装置（６４）であって、ブロック暗号アルゴリズム（３５）をホスティングする暗号装置（６５）と単一の暗号鍵（３４）を格納するメモリ（６６）とを更に備える前記処理装置（６４）と
を備え、
・各巡回は、
・前記ブロック暗号アルゴリズム（３５）内に入力データ（２０）を入力するための第１のステップであって、前記入力データ（２０）は、前記レジスタ（２３）のデータ（２１）と再現可能なデータ（２２）とを備える第１のステップと、
・前記ブロック暗号アルゴリズム（３５）内で、前記単一の暗号鍵（３４）を用いて前記入力データ（２０）を暗号化することによって暗号文（３０）を計算するための第２のステップであって、前記暗号文（３０）は、第１のセグメント（３１）と第２のセグメント（３２）とを備え、後者は、認証ローカルタグとして定義されており、前記メモリ（６６）内に格納される第２のステップと、
・前記第１のセグメント（３１）、前記認証ローカルタグ、及び前記現在の平文ブロック（１１）をオペランドとして使用して第１の演算（４１）を実行することによって暗号文ブロック（５１）を計算して前記メモリ（６６）に格納するための第３のステップと
を備え、
・前記平文ブロック（１１）のすべてが巡回において処理されていない限り、前記処理装置（６４）は、前記暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記第１のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ（２２）を更新するように更に構成され、
−  前記変換装置（６２）は、前記順序付けられた方式ですべての前記巡回の前記暗号文ブロック（５１）を連結することによって、前記暗号文メッセージ（５０）を決定するように更に構成され、
・前記処理装置（６４）は、前記最後に計算された暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記巡回の最初の２ステップのみを実行する前にそれを更新するために前記再現可能なデータ（２２）に前記更新関数を適用し、その後、すべての計算された認証ローカルタグ（３２）をオペランドとして使用して、前記メモリ（６６）から、第２の演算（４２）によって前記グローバルタグ（５２）を計算するように更に構成され、
・前記インタフェース（６１）は、前記暗号文メッセージ（５０）及び前記グローバルタグ（５２）を出力するように更に構成されたことを特徴とする暗号装置。
【請求項１５】
暗号文メッセージ（５０）から、平文メッセージ（１０）と、前記平文メッセージを認証するためのグローバルタグ（５２）とを提供するために巡回反復を用いるブロック復号方法を実施するための暗号装置（６０’）であって、
・第１のデータ（２１）を受信するためのレジスタ（２３）と、
・更新関数に従って再現可能なデータ（２２）を更新するためのアップデータ（２５）と、
・少なくとも前記暗号文メッセージ（５０）を受信するためのインタフェース（６１）と、
・同じビット長を有する複数の順序付けられた暗号文ブロック（５１）に、前記暗号文メッセージ（５０）を変換し格納するための変換装置（６２）と、
・巡回の間に現在の暗号文ブロックとして、順序付けられた方式で前記暗号文ブロック（５１）の各々を連続的に処理するための処理装置（６４）であって、
ブロック復号アルゴリズム（３５）をホスティングする復号装置（６５）と単一の暗号鍵（３４）を備えるメモリ（６６）とを更に備える前記処理装置（６４）と
を備え、
・各巡回は、
・前記ブロック復号アルゴリズム（３５）内に入力データ（２０）を入力するための第１のステップであって、前記入力データ（２０）は、前記レジスタ（２３）のデータ（２１）と再現可能なデータ（２２）とを備える第１のステップと、
・前記ブロック暗号アルゴリズム（３５）内で、前記単一の暗号鍵（３４）を用いて前記入力データ（２０）を処理することによって第１の出力（３０）を計算するための第２のステップであって、前記第１の出力（３０）は、第１のセグメント（３１）と第２のセグメント（３２）とを備え、後者は、認証ローカルタグとして定義されており、前記メモリ（６６）内に格納される第２のステップと、
・前記第１のセグメント（３１）、前記認証ローカルタグ、及び前記現在の暗号文ブロック（５１）をオペランドとして使用して第１の演算（４１）を実行することによって平文ブロック（１１）を計算して前記メモリ（６６）に格納するための第３のステップと
を備え、
・前記暗号文ブロック（５１）が巡回において処理されていない限り、前記処理装置（６４）は、前記暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記第１のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ（２２）を更新するように更に構成され、
・前記変換装置（６２）は、前記順序付けられた方式ですべての前記巡回の前記平文ブロック（１１）を連結することによって、前記平文メッセージ（１０）を決定するように更に構成され、
・その後、前記処理装置（６４）は、前記現在の暗号文ブロック（５１）を前記レジスタ（２３）に再ロードし、前記巡回の最初の２ステップのみを実行する前にそれを更新するために前記再現可能なデータ（２２）に前記更新関数を適用し、その後、すべての計算された認証ローカルタグ（３２）をオペランドとして使用して、前記メモリ（６６）から、第２の演算（４２）によって前記グローバルタグ（５２）を計算するように更に構成され、
・前記インタフェース（６１）は、前記平文メッセージ（１０）を出力するように更に構成されたことを特徴とする暗号装置。
【請求項１６】
前記処理装置（６４）は、前記グローバルタグ（５２）が前記暗号文メッセージ（５０）と共に提供された認証データと同一であるか否かをチェックし、そうでなければ、適切な動作を講じるように更に構成される請求項１５に記載の暗号装置（６０’）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証付き暗号化（ＡＥ：authenticated encryption ）のためのブロック暗号動作モード（block cipher mode of operation）を用いるメッセージの暗号化及び逆方向動作モード（reverse mode of operation）を用いるメッセージの復号化の分野に関する。より具体的には、本発明は、認証付き暗号化方式に関し、特に、所謂カウンタ暗号フィードバック（ＣＣＦＢ：Counter Cipher FeedBack）方式の改良に関する。変形において、本発明は、また、関連データによる認証付き暗号化方式（ＡＥＡＤ：Authenticated Encryption schemes with Associated Data）に対する、特にＣＣＦＢ＋Ｈ方式の改良に対する、拡張機能を備える。最終的に、本発明は、また、同様の方式を用いる逆方向暗号演算（reverse cryptographic operation）に関する。
【背景技術】
【０００２】
第１のエンティティから第２のものに対して機密に属すメッセージを送信しなければならない場合、メッセージのプライバシ及びその完全性／確実性を保護することは一般的である。過去においては、メッセージ認証コード（ＭＡＣ:message authentication code）又はデジタル署名を用いることによって典型的に取り扱われる完全性保護が、異なる手段によって完全に実現されるべき目標であったということが考慮されたため、これらの２つのセキュリティ目標は、別々に取り扱われてきた。
【０００３】
分離された確実性モードと共に機密性モードを実施することは困難であり且つエラーを起こしやすい可能性があるということに気づいた後、単一の暗号方式に機密性と完全性／確実性との両方を組み合わせる動作モードを提供することが示唆された。動作モードは、暗号アルゴリズム、特に、対称暗号化方式に基づくあらゆるアルゴリズムの効果を向上させるための技術と見なすことができる。認証付き暗号化（ＡＥ）方式は、単一のコンパクトな動作モードにおいて処理されたメッセージのプライバシ及び完全性／確実性を同時に保護するように設計される。一例として、提供者がクライアントに対して機密情報を送信したい場合、データプライバシは、情報が内密のままであるということを保証するように要求される。更に、完全性及び確実性は、情報を送信したエンティティが実際に前記の提供者であり、且つ情報がその通過の間に変更されなかったということを保証するように更に要求される。
【０００４】
ＡＥモードは、それが必要とするデータ上のパスの数に従って分類されることができる。いくつかのＡＥモードは、データ上に１つのパスのみを用いるが、他のＡＥモードは、２つのパスを用いる。単一パスモードは、メッセージの単一処理の直後に、認証付き暗号化を提供する。２パスモードは、（暗号及び認証の両方に１個の鍵をそのまま用いる）２つのフェーズにおいてデータを処理する。
【０００５】
メッセージがこのような「統合された」認証付き暗号化方式によって暗号化される場合、暗号文は、付加的情報と共に送信されるかもしれない。これは、ある者があなたの暗号化されたメッセージに対して暗号化されていないヘッダを添付することができるということを意味する。メッセージと共にこのようなパケットヘッダ（平文メッセージに対して結合されたクリアテキストヘッダ）を認証する必要があるが、それを暗号化する必要はない。実際に、ネットワークパケットにおいて典型的には、ペイロードは、暗号化されて認証されるべきであるが、ヘッダは、認証のみされるべきである（即ち、それは暗号化されないままであるべきである）。理由は、それらを正しくルーティングする方法を知るためにルータがパケットのヘッダを読み取ることが可能でなければならない、ということである。いくつかの動作モードは、暗号文メッセージに関連づけられたデータを効率的に認証するのに特に適切である。このようなモードは、関連データによる認証付き暗号化（ＡＥＡＤ：Authenticated Encryption with Associated Data）と称される。それらは、関連データが方式内に入力として含まれることを可能にする。
【０００６】
ＡＥ方式及びＡＥＡＤ方式の短所の１つは、それらが一次差分電力解析（ＤＰＡ：first-order Differential Power Analysis）攻撃になりやすいということである。電力解析は、ハッカーが暗号装置の電源消費を調査するサイドチャネル攻撃（非侵襲性攻撃）の形式である。このような装置は、マイクロプロセッサカード、バッジ、鍵、プリント回路基板の集積回路チップ、デスクランブラモジュール内のセキュリティモジュールを指すことができるか、又はソフトウェア形式のみにおいて実施される関数であることが可能である。回路の電流及び電圧入力及び出力（又は装置のタイミング若しくは更に電磁気放射）を調査することによって、通常の装置動作の間に用いられる暗号鍵などの秘密情報を発見することが可能になるかもしれない。実際には、いくつかの演算は、更に多くの消費電力を必要とする。従って、デジタルオシロスコープ及び従来のパーソナルコンピュータを用いることによって、変動及びスパイクの分析は、暗号解読者に引き出される貴重な情報である可能性がある。
【０００７】
単純電力解析（ＳＰＡ：Simple Power Analysis）は、装置の消費電力の直接観察を通じて秘密キーを回復し、その一方で、ＤＰＡ攻撃は、複数の消費電力測定から秘密鍵情報を抽出するために統計的手法を利用する。ＤＰＡは、複数の暗号演算から、典型的には何千もの演算から、収集されたデータを統計的に分析することによって暗号計算内の中間値を計算することを可能にする電力解析の高度な形式である。ＤＰＡ攻撃は、ＳＰＡを用いて分析することができないあまりにも多くのノイズを含む測定結果から秘密を抽出することができる信号処理及びエラー訂正の特性を有する。ＤＰＡ攻撃を用いて、ハッカーは、脆弱な暗号系上で実行される複数の暗号演算から消費電力測定結果を分析することによって秘密キーを取得することができる。
【０００８】
このようなサイドチャネル攻撃を解決するために、対抗策が開発された。これらの対抗策のいくつかは、例えば、暗号演算を切り抜ける数学的関係によって実効値に関するデータ上で暗号演算を実行することによる、暗号アルゴリズムの改良を含む。１つのアプローチは、更に適切な結果を生しながら、暗号系によって操作されたデータをランダム化するためのブラインドパラメータを含む。消費電力測定（サイドチャネル）とオリジナルの中間値との間の相関性を低減するために、予測不能の情報が中間値の中に組み込まれる。別のアプローチによれば、信号対ノイズ比（Ｓ／Ｎ）を減少させるために信号の振幅を故意に低減することによって、原信号をマスク化することが可能である。変形において、１つのアプローチは、また、Ｓ／Ｎ比を減少させるために消費電力測定の中に振幅又は時間的なノイズを追加することができる。他の対抗策は、例えば、電気信号を非同期させるためにチップの内部クロック周期数を変えることによる、ハードウェア改良を含むことができるし、又は、例えば、暗号系の存続期間の間に継続的に秘密を回復させて更新することによる暗号のプロトコル改良を含むことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、消費電力におけるわずかな変動さえもが攻撃に利用できる弱点に結びつく可能性があるので、ＤＰＡ攻撃の防止は、極めて難易度が高い。更に、特許によって付与された保護のため、多くの場合、このような対抗策に対して自由にアクセスできない。従って、これらの短所を少なくとも部分的に克服するために、新たなＡＥ方式を提供する必要がある。
【課題を解決するための手段】
【００１０】
ＤＰＡ攻撃から暗号系を保護するための新たな対抗策を提供する代わりに、本発明は、ＤＰＡ攻撃を留意しながら、改良型の動作モードを示唆する。このため、本発明は、ＤＰＡ攻撃を緩和するのに一層よく適した、ＣＣＦＢ方式に基づく、動作モードに言及する。特に、本発明は、平文メッセージから、暗号文メッセージと前記暗号文メッセージを認証するためのグローバルタグとを提供するための巡回反復（round repetition）を用いるブロック暗号方法を示唆する。平文メッセージは、すべて同じビット長を有する複数の順序付けられた平文ブロックに変換される（特に、もしあれば分割しパディングする）。これらの平文ブロックの各々は、巡回（round）の間に現在の平文ブロック（current plaintext block）として順序付けられた方法で連続的に処理される。方法は、
・第１のデータをレジスタ内にロードする動作と、
・ブロック暗号アルゴリズム内に入力データを入力するための第１のステップであって、当該入力データはレジスタのデータと例えばカウンタデータ又は任意の他の再現可能なデータ（reproducible data）系列などの再現可能なデータとを備える第１のステップと、
・ブロック暗号アルゴリズム内で、単一の暗号鍵を用いて入力データを暗号化することによって暗号文を計算するための第２のステップであって、この暗号文は第１のセグメントと第２のセグメントとを備え、後者は認証ローカルタグとして定義される第２のステップと、
・第１のセグメント、認証ローカルタグ、及び現在の平文ブロックをオペランドとして使用して、第１の演算を実行することによって暗号文ブロックを計算するための第３のステップと
の各ステップを実行することによって巡回を実行する動作と、
・すべての前述の平文ブロックが当該巡回において処理されていない限り、最後に計算された暗号文ブロックをレジスタに再ロードし、前記第１のステップから再び開始することによって新たな巡回を実行する前に、再現可能なデータに対して例えばインクリメント関数などの更新関数を適用する動作と、
・順序付けられた方法において、好ましくは前述の順序付けられた方式において、すべての巡回によって提供された暗号文ブロックを連結することによって暗号文メッセージを決定する動作と、
・その後、最後に計算された暗号文ブロックをレジスタに再ロードし、巡回の最初の２ステップのみを実行する前に再現可能なデータに対して更新関数を適用する動作と、
・その後、オペランドとして計算された認証ローカルタグをすべて用いて第２の演算によってグローバルタグを計算する動作と
を備える方法である。
【００１１】
上記の方法から、本発明の新たな動作モードがカウンタ暗号フィードバック（ＣＣＦＢ）方式に基づくということは注目されるべきである。厳密に言うと、ＣＣＦＢ方式は、その構造が、ワンパス解決手段のものと非常に類似する２パスＡＥ方式である。開示された革新的方法は、好ましくは、暗号と認証との両方を提供するための２つの動作モード、即ち、カウンタモード（ＣＴＲ：counter mode）と暗号フィードバック（ＣＦＢ：Cipher Feedback）モードとの独特な組み合わせを採用する。この実施形態によれば、暗号文の第２のセグメントの計算から起因する認証ローカルタグは、第２のパスの間にグローバルタグを計算するために用いられるだけでなく、各暗号文ブロックを計算するための第１のパスの間にも有利的に用いられる。従って、既知の攻撃に対する耐性を含む（但しこれらに限定されない）、確実なコンピューティングシステムの演算に対する改良を実現することができる、ということが提案される。
【００１２】
付加的な実施形態は、上述の方法を実施するための装置を記載する。好ましくは、これらの装置の１つは、特に、メッセージを暗号化することに専用であるが、その一方で、他の装置は、逆方向処理（reverse process）に専用である。それらが同様な構成要素を備えるとすれば、これらの装置は、両方とも、極めて類似し、以下の詳細な説明において更に多くの詳細な記述にて記載されることになる。
【００１３】
本発明の目的及び効果は、独立の方法クレームの主題と一致する暗号方法によって、及び他の独立の装置クレームの主題と一致する装置によって実現される。
【００１４】
他の効果及び実施形態は、以下の詳細な説明において提示されることになる。
【００１５】
本発明は、以下の添付の図面によって一層良く理解されることになる。
【図面の簡単な説明】
【００１６】
【図１】平文メッセージの暗号文メッセージへの変換処理を概略的に表現する。
【図２】本発明の暗号方法の、特に暗号化フェーズの好ましい実施形態を示すフローチャートである。
【図３】図２に基づく方法の部分的な図示による別の実施形態を示す。
【図４】図２と全く同様であるが、復号化フェーズに関する。
【図５】本発明の暗号方法の任意の実施形態を実施するための、特にこの方法の任意のフェーズ（暗号化又は復号化）を実施するための装置の実施形態を示す。
【発明を実施するための形態】
【００１７】
図１を参照すると、後半（the latter）は、付加的な入力データ２０による本発明によって処理される平文メッセージ（Ｍ）１０と、前記入力データ２０によるこの平文メッセージ１０の主な変換ステップと、補完データ５２による処理から出力される暗号文メッセージ（Ｃ）５０とを概略的に示す。オプションとして、平文メッセージ１０は、典型的には、平文メッセージ１０のヘッダに関連することができる関連データ（ＡＤ）１５を備えていてもよい。
【００１８】
好ましい実施形態によれば、前述の入力データ２０は、第１のデータ２１、例えば初期化ベクトル（ＩＶ）と、任意のデフォルト値に初期設定（リセット）されることができる再現可能なデータ２２とを備える。この再現可能なデータは、好ましくはカウンタデータ（ＣＤｔ）、即ち、カウンタによって提供される値などのデータである。但し、このようなデータを厳密な意味でカウンタによって提供されるデータに限定する必要はないので、それは所謂再現可能なデータと称される。それらが用いられる前に予め定義されていない場合を除き、「再現可能（reproducible）」という用語は、あらゆるランダムデータを排除する。従って、前述の再現可能なデータが、任意のデータ、即ち、更新関数又は再生関数と見なすことができる再現可能な処理又は関数によって再生されることができる値を指すということは理解されるべきである。例えば、当該処理又は関数は、ハッシュ関数、又は初期値に対して適用されるインクリメント関数若しくはデクリメント関数に関することができる。また、それは、一定の順序で連続的にとられた既定のリスト又は一連の乱数若しくは擬似乱数を、再現可能なデータと称してもよい。好ましくは、これらのすべての数は、あらゆる反復を回避するために異なる数になる。本明細書において、表現「カウンタデータ（counter data）」は、好ましい実施形態によって、即ち非限定的な例として、用いられる。補完データ５２は、以降で更に説明するように、タグに、特に複数のローカルタグから決定されるグローバルタグ（ＴＧ）に関する。グローバルタグ５２は、処理の終端で暗号文メッセージ５０を認証するための認証データとして用いられる。
【００１９】
図１に示すように、平文メッセージ１０は、複数の平文ブロック（ｍ１、ｍ２、ｍ３、…ｍｉ）に変換される。この図において、これらの平文ブロックの各々は、共通の符号１１によって識別される。平文ブロックメッセージ１０を複数の平文ブロック１１に変換するために用いられる変換処理は、主に、平文メッセージ１０を同じビット長を有するブロックに分割することを意図する。平文メッセージ１０が、平文ブロックのビット数の倍数でないビット長を有する場合において、変換処理は、少なくとも１デフォルトビットにより（例えばゼロに等しいビットにより）、２つの終端の平文ブロックの少なくとも１つ（例えば最後の平文ブロック及び／又は最初の平文ブロック）をパディングするためのステップを更に備えることになる。パディングするステップの目的は、終端ブロックに他のブロックと同じビット長を提供することである。
【００２０】
平文ブロック１１は、特定の順序で処理されていなければならず、その結果、同じ順序は暗号文メッセージを復号化することを目的とする逆方向処理の間に適用されることができる。従って、平文ブロック１１は、順序付けられた方式で配置される。代替え的に、各ブロックは、このような特定の順序を決定するために識別可能な位置と共にアサインされる。これらのブロックの順序によって、暗号文メッセージ５０から平文メッセージ１０を再建することが可能になる。好ましくは、平文メッセージ１０がブロック１１に分割される場合、後者（the latter）は混合されないが、それらが分割された順序が維持される。このような順序の維持は、例えば、ブロックの双方のコンテンツ及びメッセージ１０内の位置を記録に格納することによって、実現され得る。変形において、インデックスは、そのインデックス１、２、３、…ｉによって任意のブロックｍ１、ｍ２、ｍ３、…ｍｉの適正位置を検索することを可能にするように、各ブロックのコンテンツに関連づけられることができるかもしれない。
【００２１】
その後、これらの平文ブロック１１の各々は、方法の巡回Ｒの間のこのような順序付けられた方式において、所謂現在の平文ブロックとして、連続的に処理される。各々の巡回の終端において、暗号文ブロック５１は、現在の平文ブロック１１の対応関係において取得される。例えば、図１に示す平文ブロックｍ１は、巡回の出力において暗号文ブロックｃ１を提供する。
【００２２】
各巡回は、また、タグ、特に同じ巡回によって関連する暗号文ブロック５１の出力と対応するローカルタグ３２、を提供する。暗号文ブロック５１を演算することを可能にする反復のセットは、方法の第１のパスを構成する。１つの実施形態において、第２のパスは、計算されてきたローカルタグ３２をすべて用いることによってグローバルタグ５２を決定することを目的とする。
【００２３】
暗号文メッセージ５０は、平文メッセージ１０内のブロック１１と暗号文メッセージ５０内の対応するブロック５１との間のそれぞれの位置を保持するように、暗号文ブロック５１をすべてともに組み合わせることによって、特に、前述の順序付けられた方式に従ってチェーンを形成するようにそれらを連結することによって、取得される。関連データ１５が典型的にはメッセージ１０のヘッダである可能性があるならば、従って、それは暗号化されないままであり、暗号文メッセージ５０に対して単に添付される。処理の終端において、暗号文メッセージ５０、その関連データ１５（もしあれば）、及びグローバルタグ５２は、３つの統合された関連エンティティをともに形成する。
【００２４】
本発明を実施する好ましい方法は、暗号化フェーズの間に講じられた複数の反復（ＩＴ１、ＩＴ２、ＩＴ３、…ＩＴｉ）を通じて、動作及びステップを示す図２によって、更に詳細な記述においてここで説明されることになる。これらの反復の各々は、１セットのステップ及び動作の終端において１つの暗号文ブロック５１を提供する。
【００２５】
第１の動作は、第１のデータ２１をレジスタ２３内にロードすることである。好ましくは、及び図２において表現された実施形態に示すように、第１の反復ＩＴ１の第１のデータ２１は、任意の乱数又は偽似乱数生成器によって生成されることができる初期化ベクトルＩＶである。次の動作は、以下の３つの主ステップを実行することによって方法の巡回を実行するように意図する。
【００２６】
巡回の第１のステップは、ブロック暗号アルゴリズム（Ｅ）３５内に入力データ２０を入力するために用いられる。このアルゴリズムは、ＤＥＳ、ＩＤＥＡ、ＡＥＳ、又は任意の他のブロック暗号アルゴリズムを指すことができる総括的なブロック暗号化方式である。入力データ２０は、レジスタ２３内にロードされたデータ、即ち第１のデータ２１及びカウンタデータ（ＣＤｔｉ）２２を備える。カウンタデータ２２は、カウンタ（ＣＴＲ）２５によって提供される値を指す。このカウンタは、新たな反復ＩＴｎが講じられる度に、それが更新される、即ちインクリメントされる（又はデクリメントされる）ので、アップデータ（即ち更新するための装置）として見なされることができる。従って、各巡回は、新たなカウンタデータ（ＣＤｔ１、ＣＤｔ２、…ＣＤｔｉ、ＣＤｔｉ＋１）とともに開始する。カウンタデータは、所謂「ノンス（nonce）」として、即ち「１回だけ用いられる数（number used once）」として、用いられる。実際は、カウンタによって提供される各値は、すべての処理されたブロック１１にわたってユニークである。
【００２７】
巡回の第２のステップの間に、暗号文３０は、単一の暗号鍵（Ｋ）３４を用いて入力データ２０を暗号化することによって、計算され、その後ブロック暗号アルゴリズム３５から出力される。この暗号文３０は、第１のセグメント（Ｓ１）３１と第２のセグメント３２とを備える。後者は、認証タグ（Ｔｎ）であるものとして、特に、第１のセグメント３１を認証するローカルタグであるものとして、定義される。好ましくは、グローバルタグが各反復の間に漸進的に決定されるケースにおいて、グローバルタグ５２が計算されるか、又は少なくとも一時的に次の巡回の次のローカルタグ３２と共に中間の計算が実行されるまで、ローカルタグ３２は、メモリ内に格納される。
【００２８】
巡回の第３のステップは、現在の平文ブロック１１の暗号文ブロック５１を計算することに専念する。このため、暗号文ブロック５１は、第１のセグメント３１、現在の平文ブロック１１、及びローカルタグ３２をオペランドとして使用して、第１の演算４１を実行することによって決定される。従って、暗号文ブロック５１は、３つのデータ上で実行された演算結果である。
【００２９】
この第１の演算４１が３つのオペランドを用いるとすれば、従って、それは２ステップにおいて、即ち第１の演算子を用いて第１のサブ演算ＯＰ１１を実行することによって、その後第２の演算子を用いて第２のサブ演算ＯＰ１２を実行することによって、実行される。典型的には、２つのサブ演算ＯＰ１１、ＯＰ１２は、論理演算（ブール代数）、典型的には可換演算である。更に好ましくは、演算子の少なくとも１つは、排他的論理和演算（ＸＯＲ演算）である。
【００３０】
それに加えて、ＸＯＲサブ演算の交換法則に起因して、３つのオペランドが第１の演算４１内で任意の順序において処理されていることができる、ということは注目されるべきである。図１の例に示すように、現在の平文ブロック１１は、第１のサブ演算ＯＰ１１によって第１のセグメント３１と共に処理され、その後、この第１のサブ演算の結果は、第２のサブ演算ＯＰ１２によってローカルタグ３２と共に処理される。その結果、第２のサブ演算ＯＰ１２は、暗号文ブロック５１を提供し、第１の反復ＩＴ１を終了する。
【００３１】
ＸＯＲ演算等のブール演算を用いる代わりに、第２のサブ演算ＯＰ１２が、入力として用いられる２つのオペランドの１つが未知の場合、所与の暗号文ブロック５１に対して（即ち所与の出力に対して）他のオペランドを演算することが可能にならないように、これらの２つのオペランドの分散を混合することができる任意の他の関数に基づくことができる、ということは注目されるべきである。しかしながら、関数は、確実に可逆的なままでなければならず、さもなければ、復号化の実現は可能ではないだろう。例えば、モジュラー加算が暗号化フェーズの間に演算として用いられると、モジュラー減算が、復号化フェーズの間にモジュラー加算の代わりに用いられることになる。従って、復号化フェーズの間に実行される演算は、暗号化フェーズの間に実行された演算の逆になる。
【００３２】
ＸＯＲ演算は、最も当然の選択であるが、モジュラー減算又はそれぞれのモジュラー除算が復号化フェーズとして用いられれば、暗号化フェーズの間にこのような演算を実行するためにモジュラー加算又はモジュラー乗算が用いられ得る、ということが注目されるべきである。但し、このようなモジュラー演算は、それらが他のサイドチャネル攻撃によって用いられ得る情報（例えばモジュラー加算における繰り上げビット）をリリースするかもしれないので、それほど適切ではない。
【００３３】
すべての平文ブロック１１が完全には処理されていない限り、レジスタ２３には、その後、暗号文ブロック５１が（即ち図２に示したように、現在若しくは最後に計算された暗号文ブロック５１が）再ロードされ、更新関数、例えばインクリメント関数は、新たな巡回を実行する前に（即ち上述の巡回の第１のステップから再開する前に）カウンタデータ２２に対して適用される。従って、第２の反復ＩＴ２の第１のデータ２１は、第１の反復ＩＴ１から生じた暗号文ブロック５１に対応することになり、第２の反復のカウンタデータＣＤｔ２は、第１の反復ＩＴ１のカウンタデータＣＤＴ１に対して適用されたインクリメント関数の結果に対応することになる。本明細書において、表現「インクリメント関数（incrementing function）」は、「更新関数（updating function）」の好ましい実施形態として用いられることになる。従って、「インクリメント関数」を任意の「更新関数」で置き換えることができるということは理解されるべきである。同様に、本明細書において言及されるカウンタ２５は、既に上で記されているような「アップデータ（updater）」と見なすことができる。
【００３４】
平文ブロック１１がすべて処理されると、レジスタ２３には、最後に計算された暗号文ブロック５１が再ロードされ、カウンタのインクリメント関数は、先の反復のように、（現在の）カウンタデータＣＤＴｉに対して適用される。但し、巡回の２つの第１のステップのみが、その後、暗号鍵３４を用いてブロック暗号アルゴリズム３５内で処理された入力データ２０から（即ちｃｉ及びＣＤｔｉ＋１から）暗号文３０を得るために実行される。従って、これらの動作は、（前に行われたものとして）完了した反復を指すことはないが、むしろ部分的な反復であると見なされるべきである。この最後の暗号文３０から、ローカルタグ（Ｔｉ＋１）３２は、その後、計算されたすべてのローカルタグ、即ち第１の反復ＩＴ１から計算されたすべてのローカルタグを用いて第２の演算（ＯＰ２）４２によってグローバルタグ５２を計算するために用いられる。この部分的な反復のローカルタグ（第２のセグメント３２）のみが用いられるということは注目されるべきである。従って、第１のセグメント３１の決定は、オプションのままであるが、単一のデータとして処理された暗号文３０の計算を通じて暗に行われる。
【００３５】
第２の演算（ＯＰ２）の結果は、グローバルタグ５２を提供する。この結果は、第１の演算（ＯＰ１）の結果を決定することと同様の方法で、即ち複数のサブ演算（ＯＰ２１〜ＯＰ２ｉ）によって、計算される。好ましくは、各サブ演算は、関連する反復ＩＴｎのローカルタグＴｎと、先の反復ＩＴｎ−１において決定された先のサブ演算の結果とを、オペランドとして用いる。第２の演算ＯＰ２の性質（即ち種類）は、第１の演算ＯＰ１の性質と同様又は同一である。同じことが、グローバルタグ５２を決定するためにオペランドが用いられる順序の点で当てはまる。すべてのローカルタグからのグローバルタグ５２の決定は、動作モードの第２のパスに対応する。
【００３６】
暗号文メッセージ５０は、以降に記載される逆方向処理の間に暗号文メッセージ５０から平文メッセージ１０を回復するために再使用される特定の順序において、すべての暗号文ブロック５１をともに組み合わせる（連結する）ことによって決定される。例えば、このような順序は、平文ブロック１１が処理された順序と同一にすることができる。変形において、これらのブロックが処理されたときの順序を識別するために各暗号文ブロック５１に対してインデックスがアサインされ得る。
【００３７】
有利的には、２つのオペランドの代わりに３つのオペランドを用いることにより第１の演算ＯＰ１を実行することによって、暗号文ブロック５１は、単一の演算から起因しないが、２つの連続的な演算、即ち第１のサブ演算ＯＰ１１及び第２のサブ演算ＯＰ１２から起因する。第１のサブ演算は、入力として３つのオペランドのうちの２つを用い、第２のサブ演算は、入力として第３のオペランドと第１のサブ演算の結果とを用いる。多くの入力（例えば１００，０００のパワートレースを観測するために１００，０００回）にわたってブロック暗号アルゴリズムを実行することによって、このような処理上にＤＰＡ攻撃を実行するつもりの攻撃者は、最初の２つのオペランドに基づいて決定される中間出力に対してアクセスできないことになる。それどころか、攻撃者は、第２のサブ演算ＯＰ１２の後に提供される出力を観測することができるのみである。従って、攻撃者は、第１のサブ演算ＯＰ１１を分析することができる前に、まず第２のサブ演算を攻撃する必要があることになる。しかしながら、第２のサブ演算は、２つの未知の値に基づくのであり、双方は、一様に分散し相互に関連しない。その結果、ＤＰＡは作動しないか、又は、従来技術の処理の１つにこのような攻撃を適用するよりも本発明の主題に対してこのような攻撃を適用するほうが、少なくともはるかに困難であろう。
【００３８】
１つの実施形態によれば、方法は、第１のデータ２１（即ちレジスタ２３内にロードされたデータ）とカウンタデータ２２との間の共通のビット長を回復するための予備的なステップを更に備える。この予備的なステップは、第１のデータ２１及びカウンタデータ２２が同じビット長を有しないケースにおいて実行される。好ましくは、この予備的なステップは、ブロック暗号アルゴリズム３５に、又はアルゴリズム３５自体の内部に、前記入力データ２０を入力する前に講じられる。好ましくは、第１のセグメント３１及びローカルタグ３２は、同じビット長を有する。そうでなければ、方法は、これらの２つのセグメント間で同じビット長を回復するために、付加的なステップ（パディングステップ）を更に備えてもよい。更に、好ましくは、第１のデータ２１（例えばＩＶ）、カウンタデータ２２、第１のセグメント３１、及び第２のセグメント３２（ローカルタグ）は、すべて、同じビット長、即ち入力データ２０のビット長の半分）を有する。
【００３９】
図３に示す１つの実施形態によれば、第１のデータ２１は、オペランドとして平文関連データ（ＡＤ）２４を用いた初期演算（ＯＰ０）４３の結果であることができる。この図の例に示すように、初期化ベクトルＩＶは、初期演算４３の第２のオペランドとして用いられてもよい。関連データ２４は、典型的には、平文メッセージ１０のヘッダに関してもよい。この場合、ヘッダ（即ち関連データ）がメッセージ自身と同じ方法で処理されないが、それはメッセージの付録のままである、ということは理解されるべきである。初期演算ＯＰ０の性質は、第１の演算ＯＰ１の性質、又は第２の演算ＯＰ２の性質と同様又は同一である。通常、関連データは、初期化ベクトルに対して追加される。
【００４０】
図４を参照すると、図４は、図２に示す暗号化フェーズに従って取得された暗号文メッセージ５０の復号化フェーズを示す。平文メッセージ１０（図２）を暗号化するための動作モードが可逆的な暗号化処理に関するならば、図４に示す復号方法は、図２の暗号方法と非常に類似する。
【００４１】
より具体的には、図４は、暗号文メッセージ５０から、平文メッセージ１０と前記平文メッセージを認証するためのグローバルタグ５２とを提供するための巡回反復を用いるブロック復号方法を表現する。暗号文メッセージ５０は、複数の順序付けられた暗号文ブロック５１に変換され、それらはすべて同じビット長を有する（このような演算は、図４には示さないが、図１に示したものと類似する）。特に、このビット長は、暗号化フェーズ（図２）の間に、この暗号文メッセージ５０の起源であった平文メッセージ１０から平文ブロック１１を取得するために定義されたものと同一である。暗号化フェーズに関して説明されるように、もしあれば、終端ブロック（関連する暗号化フェーズの間にパディングされたブロックに応じた第１のブロック又は最後のブロック）に対してもパディングステップを適用することができる。暗号文ブロック５１の各々は、巡回の間に現在の暗号文ブロックとして順序付けられた方式で連続的に処理される。特に、この順序付けられた方式は、平文メッセージ１０内のブロック１１と暗号文メッセージ５０内の対応するブロック５１との間のそれぞれの位置を保持することを可能にする。
【００４２】
概して言えば、暗号化フェーズの間に実行された動作と同じ動作が講じられ、即ち第１のデータ２１をレジスタ２３内にロードし、その後、以下のステップを実行することによって巡回を実行する。
【００４３】
ブロック復号アルゴリズム３５内に入力データ２０を入力するための第１のステップ。この入力データは、レジスタ２３内にロードしたデータとカウンタデータ２２とを備える。
【００４４】
ブロック復号アルゴリズム３５内で、単一の暗号鍵３４（即ち暗号化フェーズに用いられたものと同じ鍵Ｋ）を用いて入力データ２０を復号化することによって第１の出力３０を計算するための第２のステップ。この第１の出力３０は、第１のセグメント３１と第２のセグメント３２とを備え、後者は認証ローカルタグとして定義される。
【００４５】
第１のセグメント３１、現在の暗号文ブロック５１、及び第２のセグメント３２（即ち現在の反復によって提供されたローカルタグ）をオペランドとして使用して第１の演算（ＯＰ１）４１を実行することによって平文ブロック１１を計算するための第３のステップ。従って、平文ブロック１１は、３つのデータ上で実行された演算結果である。この第１の演算４１が３つのオペランドを用いるとすれば、従って、それは暗号化フェーズに関して既に説明されたような２つのステップにおいて実行される。
【００４６】
復号化フェーズ（図４）の間に実行された演算（ＯＰ１）４１が、暗号化フェーズ（図２）の間に実行された演算（ＯＰ１）４１とは逆であるということが注目されるべきである。更に、これらの演算４１の各々が２つの連続的なサブ演算（即ち第１のＯＰ１１及びその後のＯＰ１２）を備えるので、暗号化フェーズにおいて実行された第２のサブ演算ＯＰ１２の逆に対して、復号化フェーズの間に実行された第１のサブ演算ＯＰ１１が対応するということが理解されるべきである。同様に、復号化フェーズの間に実行された第２のサブ演算ＯＰ１2は、復号化フェーズの間に第１に実行したサブ演算ＯＰ１１の逆に対応する。
【００４７】
すべての暗号文ブロック５１が完全には処理されていない限り、レジスタには、現在の暗号文ブロック５１が（即ち、図４に示すように、最後に計算された暗号文ブロック５１が）次の反復の間に再ロードされ、インクリメント関数は、新たなカウンタデータ２２を得るために先の反復のカウンタデータ上に、カウンタ２５によって、適用される。本復号方法の第１のステップから再び開始することによって、現在の新たな反復において、新たな巡回を実行するときに、この新たなカウンタデータ２２が用いられることになる。特に、インクリメント関数は、暗号化フェーズの間に用いられる関数と同じ関数である。更に、復号化フェーズの間に開始値として（即ち第１の反復ＩＴ１’によって）用いられる第１のカウンタデータ（ＣＤｔ１）は、暗号化フェーズの間に開始値として（第１の反復ＩＴ１によって）用いられるものと同じである。この理由のために、暗号文メッセージ５０を復号化することを担当している復号化装置に対して暗号化フェーズの第１のカウンタデータ（ＣＤｔ１）を送信できる。典型的には、例えば暗号文メッセージ５０の（暗号化されていない）ヘッダにおいて暗号文メッセージ５０と共にこのようなカウンタデータ（ＣＤｔ１）が送信され得る。更に、このデータが任意の理由のために（例えば送信器と受信器との間の再同期化の目的のために）復号化装置に対して再送信されるべき場合において、暗号化装置内部にこのカウンタデータ（ＣＤｔ１）を少なくとも一時的に格納することもできる。同じことは、第１のデータ２１（ＩＶ）に関しても当てはまる。別の方法によれば、初期のカウンタデータ（ＣＤｔ１）は、それを通信する必要がないように、デフォルト値に設定することができる（例えば、１に設定することができる）。実際には、第１の反復ＩＴ１とＩＴ１’との間で、レジスタ内に同じ第１のデータ２１をロードしなければならない。従って、第１のカウンタデータと同じような方法によって第１のデータ２１（ＩＶ）が送信され得るし、又は同じ理由のために暗号化装置内に格納され得るし、又は通信される必要がなくデフォルト値に設定することができる。変形において、初期化フェーズの間に、暗号化装置と復号化装置との間で、第１のカウンタデータ（ＣＤｔ１）、第１のデータ２１（ＩＶ）、及び暗号鍵３４（Ｋ）及び／又はカウンタ２５のインクリメント関数などの変化するかもしれない他のデータは、少なくとも一旦共有され得る。例えば、システムをリセットするか又はシステムを更新するために、このような初期化フェーズを後で再び行うことができる。
【００４８】
平文メッセージ１０は、暗号文メッセージ５０を提供するために暗号化フェーズの間に元来用いられた平文メッセージを検索するように、上記のように、同じ順序ですべての巡回の間に取得された平文ブロック１１を組み合わせること（連結すること）によって決定される。
【００４９】
その後、レジスタ２３には、現在の暗号文ブロック５１が（即ち、最後の反復ＩＴｉ’の間に処理された最後の暗号文ブロック５１が）再ロードされ、インクリメント関数は、（部分的な反復を参照する際に暗号化フェーズの間に実行されたものと同様に）巡回の最初の２ステップのみを実行する前に最後のカウンタデータ２２にもう１回適用される。この最後の第１の出力３０から、ローカルタグ（Ｔｉ＋１）３２は、その後、オペランドとして計算された認証ローカルタグ３２をすべて用いる第２の演算（ＯＰ２）４２によってグローバルタグ５２（ＴＧ）を計算するために用いられる。暗号化フェーズに関して既に説明されたように、第２の演算ＯＰ２から起因するグローバルタグ５２は、第１の演算（ＯＰ１）の結果を決定することと同様の方式で、即ち複数のサブ演算（ＯＰ２１〜ＯＰ２ｉ）によって、計算される。暗号化フェーズの間に言及されたものと同じ種類の演算及び変形は、復号化フェーズの間に適用されることができる。
【００５０】
暗号化フェーズ又は復号化フェーズに関係なく、一旦ブロック１１及び５１がすべて処理されていれば、サブ演算（ＯＰ２１〜ＯＰ２ｉ）は、必ずしも計算されない、ということは注目されるべきである。実際は、これらのサブ演算は、中間結果を決定することによって、各反復の間に１つずつ漸進的に計算され得る。次の反復（又は処理の終端における部分的な反復）によって提供された次のローカルタグ（第２のオペランド）によりオペランドとして処理されるまで、この中間結果をメモリ内に格納することができる。それぞれのブロック１１、５１からメッセージ１０、５０を決定するための同じ原理が適用されることができる。
【００５１】
それに加えて、アルゴリズム３５の逆方向特性のために、暗号化フェーズにおいて言及されたブロック暗号アルゴリズムが復号化フェーズのブロック復号アルゴリズムと同じである、ということに留意するべきである。更に、アルゴリズム３５によって提供される結果が復号化フェーズにおける所謂「第１の出力」３０であるとして定義される、ということに留意するべきである。この表現は、この出力がむしろ復号化されたデータであると見なされるべきであるので、用語暗号文の代わりに選択されている（技術的に言うと、アルゴリズム３５には所謂第１の出力と所謂暗号文との間に違いがないが）。
【００５２】
１つの実施形態によれば、ブロック復号方法は、レジスタ２３内にロードされた第１のデータ２１とカウンタデータ２２との間の共通のビット長を回復するための予備的なステップを更に備える。この予備的なステップは、第１のデータ２１及びカウンタデータ２２が同じビット長を有しないケースにおいて用いられる。このような予備的なステップは、ブロック暗号アルゴリズム３５内に入力データ２０を入力する前に講じられることになる。
【００５３】
暗号化フェーズに関して既に言及されたように、第１のデータ２１は、初期化ベクトルＩＶ、特に、カウンタデータ２２のビット長と同じビット長を有する単一のブロックにすることができる。
【００５４】
１つの実施形態によれば、及び図３に示したものと同様に、第１のデータ２１は、平文関連データ２４をオペランドとして用いる初期演算ＯＰ０の結果であってもよい。好ましくは、この初期演算ＯＰ０、第１の演算ＯＰ１及び第２の演算ＯＰ２は、排他的論理和演算である。しかしながら、及び前述のように、他の種類の演算を用いることもできる。
【００５５】
更に、本復号方法の暗号文メッセージ５０は、認証データ（特に、関連するブロック暗号方法によって暗号化フェーズの間に取得されるグローバルタグ）に更に関連づけられることができる、ということに留意するべきである。このような場合において、本復号方法は、この関連する認証データが復号方法の第２のパスによって決定されたグローバルタグ５２と同一であるか否かをチェックするためのステップを更に備えることができる。グローバルタグ５２が暗号文メッセージ５０に関連づけられた認証データと同一でなければ、後者は信頼性がないものとして宣言されることになる。
【００５６】
暗号化フェーズ及び復号化フェーズが、暗号化方法及び復号化方法としてそれぞれ提示されてきたが、本発明は、また、暗号化フェーズ及び復号化フェーズの両方を備える単一の方法に言及することもできる。
【００５７】
本発明は、また、本明細書において開示された方法又は実施形態の１つを実施するための暗号装置６０、６０’に言及する。図１、図２、及び図５を参照すると、第１の暗号装置６０は、平文メッセージ１０から、暗号文メッセージ５０と暗号文メッセージを認証するためのグローバルタグ５２とを提供するための巡回反復を用いるブロック暗号方法の実施に専用である。このため、暗号装置６０は、以下の構成要素、即ち、
・第１のデータ２１を受信するための、典型的にはメモリ（例えばメモリセル）の形式の、レジスタ２３と、
・更新関数ｆに従って再現可能なデータ２２を更新するためのアップデータ２５であって、例えば、それは、インクリメント関数（ｆ）に従ってカウンタデータ２２をインクリメントするためのカウンタ２５を指してもよいアップデータ２５と、
・少なくとも平文メッセージ１０を受信するためのインタフェース６１と、
・全く同じビット長を有する複数の順序付けられた平文ブロック１１（ｍ１、ｍ２、…ｍｉ）に、平文メッセージ１０を変換して好ましくは格納するための変換装置６２と、
・巡回の間に現在の平文ブロックとして、順序付けられた方式で平文ブロック１１の各々を連続的に処理するための処理装置６４であって、ブロック暗号アルゴリズム３５をホスティングする暗号装置６５と、単一の暗号鍵３４（Ｋ）を備えるメモリ６６とを更に備える処理装置６４と
を備える。
【００５８】
各巡回は、
・ブロック暗号アルゴリズム３５内に入力データ２０を（例えば図５に示すような処理装置６４を通じて）入力するための第１のステップであって、この入力データ２０は、レジスタ２３のデータ２１と再現可能なデータ（カウンタデータ２２）とを備える第１のステップと、
・単一の暗号鍵３４を用いて入力データ２０を暗号化することによって暗号文３０を、ブロック暗号アルゴリズム３５内で計算するための第２のステップであって、暗号文３０は第１のセグメント３１と第２のセグメント３２とを備え、後者は、認証ローカルタグとして定義されており、例えば、処理装置６４の内部又は外部に配置されたメモリ６６内のメモリ内に格納される第２のステップと、
・第１のセグメント３１、現在の平文ブロック１１、及び第２のセグメント３２（即ちローカルタグ）をオペランドとして使用して第１の演算ＯＰ１を実行することによって、暗号文ブロック５１を計算し、例えばこのようなメモリ６６内に格納するための第３のステップと
を備える。
【００５９】
すべての平文ブロック１１が完全には処理されていない限り、処理装置６４は、現在の暗号文ブロック５１（即ち最後に計算された暗号文ブロック５１）をレジスタ２３に再ロードし、第１のステップから再び開始することによって新たな巡回を実行する前にカウンタデータ２２をインクリメントするように（即ち再現可能なデータを更新するように）更に構成される。
【００６０】
変換装置６２は、平文メッセージ１０内のブロック１１と暗号文メッセージ５０内の対応するブロック５１との間のそれぞれの位置を保持するように、順序付けられた方式で、特に前述の順序付けられた方式で、すべての巡回の暗号文ブロック５１（ｃ１、ｃ２、…ｃｉ）を連結することによって暗号文メッセージ５０を決定するように更に構成される。
【００６１】
処理装置６４は、最後に計算された暗号文ブロック５１をレジスタ２３に再ロードし、巡回の最初の２ステップのみを実行する前にそれをインクリメントするためにカウンタデータ２２にインクリメント関数（ｆ）を適用するように更に構成される。その後、処理装置６４は、すべての計算された認証ローカルタグ（３２）をオペランドとして使用して、例えばメモリ６６から、第２の演算ＯＰ２によってグローバルタグ５２を計算するように構成される。
【００６２】
インタフェース６１（又は任意の他のインタフェース）は、暗号文メッセージ５０及びグローバルタグ５２を出力するように更に構成される。
【００６３】
変換装置６２によって実行される変換演算は、平文メッセージ１０を同じビット長を有するブロック１１に分割し、もしあれば、１回分割されたこの平文メッセージの２つの終端ブロック１１の少なくとも１つに適用されるパディング演算に関係することができる。
【００６４】
暗号装置６０は、本明細書に開示された実施形態のいずれかによる方法を実施するために用いることができる初期化ベクトル（ＩＶ）を生成するための生成器６７（又は擬生成器）を更に含むことができる。このようなジェネレータ（又は別のもの）は、初期値によってカウンタ２５を初期設定するために、典型的にはリセット目的のために、用いられ得る。それに加えて、レジスタ２３、カウンタ２５、及びもしあれば生成器６７は、処理装置６４内に配置され得る、ということは注目されるべきである。
【００６５】
第１の装置として、特に送信器側において、動作する場合、暗号化装置６０は、第２の装置として、特に受信器側において動作する、復号化装置６０’によってその後復号化されることになる平文メッセージ１０を暗号化するために用いられるように典型的には意図される。復号化フェーズが暗号化フェーズの逆方向処理に対応するならば、暗号化装置を形成する電子構成要素は、復号化装置の電子構成要素と同一又は類似する。復号化装置のいくつかの構成要素に関連づけられた関数のみが、暗号化装置の構成要素とは異なることができる。従って、本発明の復号化装置も、また、図５の構成要素を参照して以降記載されることになる。
【００６６】
従って、この第２の装置は、暗号文メッセージ５０から、平文メッセージ１０と平文メッセージを認証するためのグローバルタグ５２とを提供するための巡回反復を用いてブロック復号方法を実施する暗号装置６０’に関する。この暗号装置６０’は、
・第１のデータ２１を受信するための、典型的にはメモリ（又はメモリセル）の形式の、レジスタ２３と、
・更新関数ｆに従って再現可能なデータ２２を更新するためのアップデータ２５であって、例えば、それは、インクリメント関数（ｆ）に従ってカウンタデータ２２をインクリメントするためのカウンタ２５を指してもよいアップデータ２５と、
・少なくとも暗号文メッセージ５０を受信するためのインタフェース６１と、
・全く同じビット長を有する複数の順序付けられた暗号文ブロック５１内に暗号文メッセージ５０を変換して好ましくは格納するための変換装置６２と、
・巡回の間に現在の暗号文ブロックとして、順序付けられた方式で暗号文ブロック５１の各々を連続的に処理するための処理装置６４であって、ブロック復号アルゴリズム３５をホスティングする暗号装置６５と、単一の暗号鍵３４（Ｋ）を備えるメモリ６６とを更に備える処理装置６４と
を備える。
【００６７】
各巡回は、
・ブロック復号アルゴリズム３５内に入力データ２０を入力するための第１のステップであって、この入力データは、レジスタ２３内にロードされたデータ２１と再現可能なデータ（カウンタデータ２２）とを備える第１のステップと、
・単一の暗号鍵３４を用いて入力データ２０を処理することによって第１の出力３０を、ブロック暗号アルゴリズム３５内で計算するための第２のステップであって、第１の出力３０は第１のセグメント３１及び第２のセグメント３２を備え、後者は、認証ローカルタグとして定義されており、メモリ、例えばメモリ６６内に（少なくとも一時的に）格納される第２のステップと、
・第１のセグメント３１、現在の暗号文ブロック１１、及び第２のセグメント３２（即ちローカルタグ）をオペランドとして使用して第１の演算ＯＰ１を実行することによって、平文ブロック１１を計算し、その後、（例えばこのようなメモリ６６内に）格納するための第３のステップと
を備える。
【００６８】
すべての暗号文ブロック５１が完全には処理されていない限り、処理装置６４は、現在の暗号文ブロック５１（即ち最後に計算された暗号文ブロック５１）をレジスタ２３に再ロードし、第１のステップから再び開始することによって新たな巡回を実行する前に再現可能なデータを更新するように（即ちカウンタ２５のインクリメント関数によってカウンタデータ２２をインクリメントするように）更に構成される。
【００６９】
変換装置６２は、平文メッセージ１０内のブロック１１と暗号文メッセージ５０内の対応するブロック５１との間のそれぞれの位置を保持するために、順序付けられた方式で、特に前述の順序付けられた方式で、すべての巡回の平文ブロック１１を連結することによって平文メッセージ１０を決定するように更に構成される。
【００７０】
処理装置６４は、現在の平文ブロック（即ち、処理されてきた最後の暗号文ブロック）をレジスタ２３に再ロードし、巡回の最初の２ステップのみを実行する前にそれをインクリメントするためにカウンタデータ２２にインクリメント関数（ｆ）を適用するように更に構成される。その後、処理装置６４は、すべての計算された認証ローカルタグ（３２）をオペランドとして使用して、例えばメモリ６６から、第２の演算ＯＰ２によってグローバルタグ５２を計算するように構成される。
【００７１】
好ましくは、暗号装置６０’の処理装置６４は、暗号文メッセージ５０と共に提供された認証データとグローバルタグ５２とが同一であるか否かをチェックするように更に構成される。このような認証データは、典型的には、暗号装置６０によって暗号化フェーズの間に決定されたグローバルタグ５２になる。暗号装置６０、６０’の各々によって提供されるグローバルタグ５２間の相違がある（同じメッセージ５０に対して）ケースにおいて、これは、平文メッセージ１０（又は暗号文メッセージ５０）に信頼性がないということを意味する。従って、処理装置６４は、適切な動作を講じることができ、例えば、警告メッセージを作動させてもよい、平文メッセージ１０のリリースを中断してもよい、及び／又は、報告データとして情報を送信してもよい。
【００７２】
もちろん、インタフェース６１は、一旦平文メッセージ１０が回復されれば、平文メッセージ１０を出力するように更に構成される。
【００７３】
暗号装置６０の暗号アルゴリズムが暗号装置６０’の復号アルゴリズムとして同じである、ということは注目されるべきである。実際は、このようなアルゴリズム３５は、復号化することに加えて暗号化するために用いることができる。
【００７４】
それに加えて、グローバルタグ５２を決定することを考慮して、メモリ６６（又は別のメモリ）は、グローバルタグが各反復間に漸進的に決定されるという場合には、ローカルタグ３２又は中間結果をすべて格納するために用いられることになる。１つの実施形態において、同じ方法で暗号文メッセージ５０又は平文メッセージ１０を決定することができる。
【００７５】
暗号装置６０、６０’のメモリ６６は、安全なメモリとすることができる。１つの実施形態において、暗号装置６０、６０’の構成要素は、単一的な装置内に備えられ、そのため、それは単一的な装置を破壊することなく、構成要素に、特に少なくとも機密に属する構成要素に物理的にアクセスすることができないだろう。
【００７６】
暗号鍵３４は、暗号装置６０、６０’によって暗号化又は復号化の両方の目的のために使用される。
【００７７】
本開示の実施形態が具体例の実施形態に関連して記載されてきたが、様々な改良及び変更が、これらの実施形態の広い範囲から逸脱せずに、これらの実施形態に対して行われてもよいことは明らかだろう。従って、明細書及び図面は、限定的な観念ではなく、むしろ例示的な観念として見なされるべきである。これに関して一部分を形成する添付の図面は、限定ではなく、実例として、発明の主題が実施されることができる特定の実施形態を示す。図示される実施形態は、本明細書に開示された教示を当業者が実施することを可能にするのに十分に詳細な記述で記載されているものと確信する。他の実施形態が、この開示の範囲から逸脱せずに構造及び論理的な置換及び変更がなされ得るように、そこから利用され、導き出されてもよい。この詳細な説明は、従って、限定的な意味にとることはできないし、様々な実施形態の範囲は、添付された特許請求の範囲が権利をもつすべての範囲の等価物に加えて、添付の特許請求の範囲によってのみ規定される。
【００７８】
発明の主題のこのような実施形態は、実際上１つ以上が開示されるいかなる単一の発明の概念に、この出願の範囲を自発的に限定する意図を伴わずに、単に利便性のために用語「発明」によって、本明細書において、個々に及び／又は総体として参照されてもよい。このように、特定の実施形態が本明細書に図示され記載されたが、同じ目的を実現するように計画された任意の設備が、示された特定の実施形態の代わりに用いられてもよい、ということは認識されるべきである。この開示は、様々な実施形態のあらゆる適応又は変形を網羅するように意図される。上記の実施形態の組み合わせ、及び特に本明細書に記載されない他の実施形態は、上記の明細書の検討に際して当業者にとって明らかになる。
【図１】
0006557727.tif 000002
【図２】
0006557727.tif 000003
【図３】
0006557727.tif 000004
【図４】
0006557727.tif 000005
【図５】
0006557727.tif 000006