【文献】
Stefan Lucks,Two-Pass Authenticated Encryption Faster Than Generic Composition,LNCS, International Workshop Fast Software Encryption,2005年,Volume 3557,pp. 284-298
【文献】
峯松 一彦,ブロック暗号を用いた認証暗号の構成方法について,2014年 暗号と情報セキュリティシンポジウム SCIS2014 [CD−ROM],日本,2014年 暗号と情報セキュリティシンポジウム実行委員会,2014年 1月21日,1F2−2,pp.1−8
【文献】
Phillip Rogaway,Nonce-Based Symmetric Encryption,LNCS, International Workshop on Fast Software Encryption,2004年,Volume 3017,pp.348-359
【文献】
Gernot R. Bauer, et al.,Comparing Block Ciper Modes of Operation on MICAz Sensor Nodes,2009 17th Euromicro International Conference on Parallel, Distributed and Network-based Processing,米国,IEEE,2009年 2月18日,pp.371-378
【文献】
Tetsu Iwata, et al.,CLOC: Authenticated Encryption for Short Input,Fast Software Encryption - 20th International Workshop (FSE 2014),[オンライン],2014年 3月 3日,Authenticated Encryption,pp.149-167,[検索日: 平成31年 2月13日]、インターネット,URL,<https://www.iacr.org/archive/fse2014/85400186/85400186.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
平文メッセージ(10)から、暗号文メッセージ(50)と前記暗号文メッセージ(50)を認証するためのグローバルタグ(52)とを提供するために巡回反復を用いるブロック暗号方法であって、前記平文メッセージ(10)は、既定のビット長を有する複数の順序付けられた平文ブロック(11)に変換され、前記平文ブロック(11)の各々は、巡回の間に現在の平文ブロックとして順序付けられた方式で連続的に処理され、前記方法は、
・第1のデータ(21)をレジスタ(23)内にロードする動作と、
・ブロック暗号アルゴリズム(35)内に入力データ(20)を入力するための第1のステップであって、前記入力データ(20)は、前記レジスタ(23)のデータ(21)と再現可能なデータ(22)とを備える第1のステップと、
・前記ブロック暗号アルゴリズム(35)内で、単一の暗号鍵(34)を用いて前記入力データ(20)を暗号化することによって暗号文(30)を計算するための第2のステップであって、前記暗号文(30)は、第1のセグメント(31)と第2のセグメント(32)とを備え、後者は認証ローカルタグとして定義される第2のステップと、
・前記第1のセグメント(31)、前記認証ローカルタグ、及び前記現在の平文ブロック(11)をオペランドとして使用して第1の演算(41)を実行することによって暗号文ブロック(51)を計算するための第3のステップと
の各ステップを実行することによって前記巡回を実行する動作と、
・すべての前記平文ブロック(11)が巡回において処理されていない限り、前記暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記第1のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ(22)に更新関数を適用する動作と、
・前記順序付けられた方式において、すべての巡回の前記暗号文ブロック(51)を連結することによって前記暗号文メッセージ(50)を決定する動作と、
・その後、最後に計算された暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記巡回の最初の2ステップのみを実行する前に前記再現可能なデータ(22)に対して前記更新関数を適用する動作と、
・その後、オペランドとして前記計算された認証ローカルタグ(32)をすべて用いて第2の演算(42)によって前記グローバルタグ(52)を計算する動作と
を備えることを特徴とする方法。
前記レジスタ(23)の前記第1のデータ(21)及び前記再現可能なデータ(22)が同じビット長を有していなくても、前記第1のデータ(21)と前記再現可能なデータ(22)との間の共通のビット長を回復するための予備的なステップであって、ブロック暗号アルゴリズム(35)内に前記入力データ(20)を入力する前に講じられる前記予備的なステップを更に備える請求項1に記載のブロック暗号方法。
前記平文メッセージ(10)が前記平文ブロック(11)のビット数の倍数でないビット数を有するケースにおいて、少なくとも1デフォルトビットにより終端の平文ブロック(11)をパディングするためのステップを更に備える請求項1〜5のいずれか1項に記載のブロック暗号方法。
暗号文メッセージ(50)から、平文メッセージ(10)と、前記平文メッセージを認証するためのグローバルタグ(52)とを提供するために巡回反復を用いるブロック復号方法であって、前記暗号文メッセージ(50)は、同じビット長を有する複数の順序付けられた暗号文ブロック(51)に変換され、前記暗号文ブロック(51)の各々は、巡回の間に現在の暗号文ブロックとして順序付けられた方式で連続的に処理され、前記方法は、
・第1のデータ(21)をレジスタ(23)内にロードする動作と、
・ブロック復号アルゴリズム(35)内に入力データ(20)を入力するための第1のステップであって、前記入力データ(20)は、前記レジスタ(23)のデータ(21)と再現可能なデータ(22)とを備える第1のステップと、
・前記ブロック復号アルゴリズム(35)内で、単一の暗号鍵(34)を用いて前記入力データ(20)を復号化することによって第1の出力(30)を計算するための第2のステップであって、前記第1の出力は、第1のセグメント(31)と第2のセグメント(32)とを備え、後者は認証ローカルタグとして定義される第2のステップと、
・前記第1のセグメント(31)、前記認証ローカルタグ、及び前記現在の暗号文ブロック(51)をオペランドとして使用して第1の演算(41)を実行することによって平文ブロック(11)を計算するための第3のステップと
の各ステップを実行することによって前記巡回を実行する動作と、
・すべての前記暗号文ブロック(51)が巡回において処理されていない限り、前記現在の暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記第1のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ(22)に更新関数を適用する動作と、
・前記順序付けられた方式において、すべての前記巡回の前記平文ブロック(11)を連結することによって前記平文メッセージ(10)を決定する動作と、
・その後、前記現在の暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記巡回の最初の2ステップのみを実行する前に前記再現可能なデータ(22)に対して前記更新関数を適用する動作と、
・その後、オペランドとして前記計算された認証ローカルタグ(32)をすべて用いて第2の演算(42)によって前記グローバルタグ(52)を計算する動作と
を備えることを特徴とする方法。
前記レジスタ(23)の前記第1のデータ(21)及び前記再現可能なデータ(22)が同じビット長を有していなくても、前記第1のデータ(21)と前記再現可能なデータ(22)との間の共通のビット長を回復するための予備的なステップであって、ブロック暗号アルゴリズム(35)内に前記入力データ(20)を入力する前に講じられる前記予備的なステップを更に備える請求項8に記載のブロック復号方法。
前記暗号文メッセージ(50)は、認証データを更に備え、前記方法は、前記認証データが前記グローバルタグ(52)と同一であるか否かをチェックするためのステップを更に備え、そうでなければ、暗号文メッセージ(50)は、信頼性がないものとして宣言される請求項8〜12のいずれか1項に記載のブロック復号方法。
平文メッセージ(10)から、暗号文メッセージ(50)と、前記暗号文メッセージ(50)を認証するためのグローバルタグ(52)と、を提供するために巡回反復を用いるブロック暗号方法を実施するための暗号装置(60)であって、
・第1のデータを受信するためのレジスタ(23)と、
・更新関数に従って再現可能なデータ(22)を更新するためのアップデータ(25)と、
・少なくとも前記平文メッセージ(10)を受信するためのインタフェース(61)と、
・同じビット長を有する複数の順序付けられた平文ブロック(11)に、前記平文メッセージ(10)を変換し格納するための変換装置(62)と、
・巡回の間に現在の平文ブロックとして、順序付けられた方式で前記平文ブロック(11)の各々を連続的に処理するための処理装置(64)であって、ブロック暗号アルゴリズム(35)をホスティングする暗号装置(65)と単一の暗号鍵(34)を格納するメモリ(66)とを更に備える前記処理装置(64)と
を備え、
・各巡回は、
・前記ブロック暗号アルゴリズム(35)内に入力データ(20)を入力するための第1のステップであって、前記入力データ(20)は、前記レジスタ(23)のデータ(21)と再現可能なデータ(22)とを備える第1のステップと、
・前記ブロック暗号アルゴリズム(35)内で、前記単一の暗号鍵(34)を用いて前記入力データ(20)を暗号化することによって暗号文(30)を計算するための第2のステップであって、前記暗号文(30)は、第1のセグメント(31)と第2のセグメント(32)とを備え、後者は、認証ローカルタグとして定義されており、前記メモリ(66)内に格納される第2のステップと、
・前記第1のセグメント(31)、前記認証ローカルタグ、及び前記現在の平文ブロック(11)をオペランドとして使用して第1の演算(41)を実行することによって暗号文ブロック(51)を計算して前記メモリ(66)に格納するための第3のステップと
を備え、
・前記平文ブロック(11)のすべてが巡回において処理されていない限り、前記処理装置(64)は、前記暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記第1のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ(22)を更新するように更に構成され、
− 前記変換装置(62)は、前記順序付けられた方式ですべての前記巡回の前記暗号文ブロック(51)を連結することによって、前記暗号文メッセージ(50)を決定するように更に構成され、
・前記処理装置(64)は、前記最後に計算された暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記巡回の最初の2ステップのみを実行する前にそれを更新するために前記再現可能なデータ(22)に前記更新関数を適用し、その後、すべての計算された認証ローカルタグ(32)をオペランドとして使用して、前記メモリ(66)から、第2の演算(42)によって前記グローバルタグ(52)を計算するように更に構成され、
・前記インタフェース(61)は、前記暗号文メッセージ(50)及び前記グローバルタグ(52)を出力するように更に構成されたことを特徴とする暗号装置。
暗号文メッセージ(50)から、平文メッセージ(10)と、前記平文メッセージを認証するためのグローバルタグ(52)とを提供するために巡回反復を用いるブロック復号方法を実施するための暗号装置(60’)であって、
・第1のデータ(21)を受信するためのレジスタ(23)と、
・更新関数に従って再現可能なデータ(22)を更新するためのアップデータ(25)と、
・少なくとも前記暗号文メッセージ(50)を受信するためのインタフェース(61)と、
・同じビット長を有する複数の順序付けられた暗号文ブロック(51)に、前記暗号文メッセージ(50)を変換し格納するための変換装置(62)と、
・巡回の間に現在の暗号文ブロックとして、順序付けられた方式で前記暗号文ブロック(51)の各々を連続的に処理するための処理装置(64)であって、
ブロック復号アルゴリズム(35)をホスティングする復号装置(65)と単一の暗号鍵(34)を備えるメモリ(66)とを更に備える前記処理装置(64)と
を備え、
・各巡回は、
・前記ブロック復号アルゴリズム(35)内に入力データ(20)を入力するための第1のステップであって、前記入力データ(20)は、前記レジスタ(23)のデータ(21)と再現可能なデータ(22)とを備える第1のステップと、
・前記ブロック暗号アルゴリズム(35)内で、前記単一の暗号鍵(34)を用いて前記入力データ(20)を処理することによって第1の出力(30)を計算するための第2のステップであって、前記第1の出力(30)は、第1のセグメント(31)と第2のセグメント(32)とを備え、後者は、認証ローカルタグとして定義されており、前記メモリ(66)内に格納される第2のステップと、
・前記第1のセグメント(31)、前記認証ローカルタグ、及び前記現在の暗号文ブロック(51)をオペランドとして使用して第1の演算(41)を実行することによって平文ブロック(11)を計算して前記メモリ(66)に格納するための第3のステップと
を備え、
・前記暗号文ブロック(51)が巡回において処理されていない限り、前記処理装置(64)は、前記暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記第1のステップから再び開始することによって新たな巡回を実行する前に前記再現可能なデータ(22)を更新するように更に構成され、
・前記変換装置(62)は、前記順序付けられた方式ですべての前記巡回の前記平文ブロック(11)を連結することによって、前記平文メッセージ(10)を決定するように更に構成され、
・その後、前記処理装置(64)は、前記現在の暗号文ブロック(51)を前記レジスタ(23)に再ロードし、前記巡回の最初の2ステップのみを実行する前にそれを更新するために前記再現可能なデータ(22)に前記更新関数を適用し、その後、すべての計算された認証ローカルタグ(32)をオペランドとして使用して、前記メモリ(66)から、第2の演算(42)によって前記グローバルタグ(52)を計算するように更に構成され、
・前記インタフェース(61)は、前記平文メッセージ(10)を出力するように更に構成されたことを特徴とする暗号装置。
前記処理装置(64)は、前記グローバルタグ(52)が前記暗号文メッセージ(50)と共に提供された認証データと同一であるか否かをチェックし、そうでなければ、適切な動作を講じるように更に構成される請求項15に記載の暗号装置(60’)。
【背景技術】
【0002】
第1のエンティティから第2のものに対して機密に属すメッセージを送信しなければならない場合、メッセージのプライバシ及びその完全性/確実性を保護することは一般的である。過去においては、メッセージ認証コード(MAC:message authentication code)又はデジタル署名を用いることによって典型的に取り扱われる完全性保護が、異なる手段によって完全に実現されるべき目標であったということが考慮されたため、これらの2つのセキュリティ目標は、別々に取り扱われてきた。
【0003】
分離された確実性モードと共に機密性モードを実施することは困難であり且つエラーを起こしやすい可能性があるということに気づいた後、単一の暗号方式に機密性と完全性/確実性との両方を組み合わせる動作モードを提供することが示唆された。動作モードは、暗号アルゴリズム、特に、対称暗号化方式に基づくあらゆるアルゴリズムの効果を向上させるための技術と見なすことができる。認証付き暗号化(AE)方式は、単一のコンパクトな動作モードにおいて処理されたメッセージのプライバシ及び完全性/確実性を同時に保護するように設計される。一例として、提供者がクライアントに対して機密情報を送信したい場合、データプライバシは、情報が内密のままであるということを保証するように要求される。更に、完全性及び確実性は、情報を送信したエンティティが実際に前記の提供者であり、且つ情報がその通過の間に変更されなかったということを保証するように更に要求される。
【0004】
AEモードは、それが必要とするデータ上のパスの数に従って分類されることができる。いくつかのAEモードは、データ上に1つのパスのみを用いるが、他のAEモードは、2つのパスを用いる。単一パスモードは、メッセージの単一処理の直後に、認証付き暗号化を提供する。2パスモードは、(暗号及び認証の両方に1個の鍵をそのまま用いる)2つのフェーズにおいてデータを処理する。
【0005】
メッセージがこのような「統合された」認証付き暗号化方式によって暗号化される場合、暗号文は、付加的情報と共に送信されるかもしれない。これは、ある者があなたの暗号化されたメッセージに対して暗号化されていないヘッダを添付することができるということを意味する。メッセージと共にこのようなパケットヘッダ(平文メッセージに対して結合されたクリアテキストヘッダ)を認証する必要があるが、それを暗号化する必要はない。実際に、ネットワークパケットにおいて典型的には、ペイロードは、暗号化されて認証されるべきであるが、ヘッダは、認証のみされるべきである(即ち、それは暗号化されないままであるべきである)。理由は、それらを正しくルーティングする方法を知るためにルータがパケットのヘッダを読み取ることが可能でなければならない、ということである。いくつかの動作モードは、暗号文メッセージに関連づけられたデータを効率的に認証するのに特に適切である。このようなモードは、関連データによる認証付き暗号化(AEAD:Authenticated Encryption with Associated Data)と称される。それらは、関連データが方式内に入力として含まれることを可能にする。
【0006】
AE方式及びAEAD方式の短所の1つは、それらが一次差分電力解析(DPA:first-order Differential Power Analysis)攻撃になりやすいということである。電力解析は、ハッカーが暗号装置の電源消費を調査するサイドチャネル攻撃(非侵襲性攻撃)の形式である。このような装置は、マイクロプロセッサカード、バッジ、鍵、プリント回路基板の集積回路チップ、デスクランブラモジュール内のセキュリティモジュールを指すことができるか、又はソフトウェア形式のみにおいて実施される関数であることが可能である。回路の電流及び電圧入力及び出力(又は装置のタイミング若しくは更に電磁気放射)を調査することによって、通常の装置動作の間に用いられる暗号鍵などの秘密情報を発見することが可能になるかもしれない。実際には、いくつかの演算は、更に多くの消費電力を必要とする。従って、デジタルオシロスコープ及び従来のパーソナルコンピュータを用いることによって、変動及びスパイクの分析は、暗号解読者に引き出される貴重な情報である可能性がある。
【0007】
単純電力解析(SPA:Simple Power Analysis)は、装置の消費電力の直接観察を通じて秘密キーを回復し、その一方で、DPA攻撃は、複数の消費電力測定から秘密鍵情報を抽出するために統計的手法を利用する。DPAは、複数の暗号演算から、典型的には何千もの演算から、収集されたデータを統計的に分析することによって暗号計算内の中間値を計算することを可能にする電力解析の高度な形式である。DPA攻撃は、SPAを用いて分析することができないあまりにも多くのノイズを含む測定結果から秘密を抽出することができる信号処理及びエラー訂正の特性を有する。DPA攻撃を用いて、ハッカーは、脆弱な暗号系上で実行される複数の暗号演算から消費電力測定結果を分析することによって秘密キーを取得することができる。
【0008】
このようなサイドチャネル攻撃を解決するために、対抗策が開発された。これらの対抗策のいくつかは、例えば、暗号演算を切り抜ける数学的関係によって実効値に関するデータ上で暗号演算を実行することによる、暗号アルゴリズムの改良を含む。1つのアプローチは、更に適切な結果を生しながら、暗号系によって操作されたデータをランダム化するためのブラインドパラメータを含む。消費電力測定(サイドチャネル)とオリジナルの中間値との間の相関性を低減するために、予測不能の情報が中間値の中に組み込まれる。別のアプローチによれば、信号対ノイズ比(S/N)を減少させるために信号の振幅を故意に低減することによって、原信号をマスク化することが可能である。変形において、1つのアプローチは、また、S/N比を減少させるために消費電力測定の中に振幅又は時間的なノイズを追加することができる。他の対抗策は、例えば、電気信号を非同期させるためにチップの内部クロック周期数を変えることによる、ハードウェア改良を含むことができるし、又は、例えば、暗号系の存続期間の間に継続的に秘密を回復させて更新することによる暗号のプロトコル改良を含むことができる。
【発明を実施するための形態】
【0017】
図1を参照すると、後半(the latter)は、付加的な入力データ20による本発明によって処理される平文メッセージ(M)10と、前記入力データ20によるこの平文メッセージ10の主な変換ステップと、補完データ52による処理から出力される暗号文メッセージ(C)50とを概略的に示す。オプションとして、平文メッセージ10は、典型的には、平文メッセージ10のヘッダに関連することができる関連データ(AD)15を備えていてもよい。
【0018】
好ましい実施形態によれば、前述の入力データ20は、第1のデータ21、例えば初期化ベクトル(IV)と、任意のデフォルト値に初期設定(リセット)されることができる再現可能なデータ22とを備える。この再現可能なデータは、好ましくはカウンタデータ(CDt)、即ち、カウンタによって提供される値などのデータである。但し、このようなデータを厳密な意味でカウンタによって提供されるデータに限定する必要はないので、それは所謂再現可能なデータと称される。それらが用いられる前に予め定義されていない場合を除き、「再現可能(reproducible)」という用語は、あらゆるランダムデータを排除する。従って、前述の再現可能なデータが、任意のデータ、即ち、更新関数又は再生関数と見なすことができる再現可能な処理又は関数によって再生されることができる値を指すということは理解されるべきである。例えば、当該処理又は関数は、ハッシュ関数、又は初期値に対して適用されるインクリメント関数若しくはデクリメント関数に関することができる。また、それは、一定の順序で連続的にとられた既定のリスト又は一連の乱数若しくは擬似乱数を、再現可能なデータと称してもよい。好ましくは、これらのすべての数は、あらゆる反復を回避するために異なる数になる。本明細書において、表現「カウンタデータ(counter data)」は、好ましい実施形態によって、即ち非限定的な例として、用いられる。補完データ52は、以降で更に説明するように、タグに、特に複数のローカルタグから決定されるグローバルタグ(TG)に関する。グローバルタグ52は、処理の終端で暗号文メッセージ50を認証するための認証データとして用いられる。
【0019】
図1に示すように、平文メッセージ10は、複数の平文ブロック(m1、m2、m3、…mi)に変換される。この図において、これらの平文ブロックの各々は、共通の符号11によって識別される。平文ブロックメッセージ10を複数の平文ブロック11に変換するために用いられる変換処理は、主に、平文メッセージ10を同じビット長を有するブロックに分割することを意図する。平文メッセージ10が、平文ブロックのビット数の倍数でないビット長を有する場合において、変換処理は、少なくとも1デフォルトビットにより(例えばゼロに等しいビットにより)、2つの終端の平文ブロックの少なくとも1つ(例えば最後の平文ブロック及び/又は最初の平文ブロック)をパディングするためのステップを更に備えることになる。パディングするステップの目的は、終端ブロックに他のブロックと同じビット長を提供することである。
【0020】
平文ブロック11は、特定の順序で処理されていなければならず、その結果、同じ順序は暗号文メッセージを復号化することを目的とする逆方向処理の間に適用されることができる。従って、平文ブロック11は、順序付けられた方式で配置される。代替え的に、各ブロックは、このような特定の順序を決定するために識別可能な位置と共にアサインされる。これらのブロックの順序によって、暗号文メッセージ50から平文メッセージ10を再建することが可能になる。好ましくは、平文メッセージ10がブロック11に分割される場合、後者(the latter)は混合されないが、それらが分割された順序が維持される。このような順序の維持は、例えば、ブロックの双方のコンテンツ及びメッセージ10内の位置を記録に格納することによって、実現され得る。変形において、インデックスは、そのインデックス1、2、3、…iによって任意のブロックm1、m2、m3、…miの適正位置を検索することを可能にするように、各ブロックのコンテンツに関連づけられることができるかもしれない。
【0021】
その後、これらの平文ブロック11の各々は、方法の巡回Rの間のこのような順序付けられた方式において、所謂現在の平文ブロックとして、連続的に処理される。各々の巡回の終端において、暗号文ブロック51は、現在の平文ブロック11の対応関係において取得される。例えば、
図1に示す平文ブロックm1は、巡回の出力において暗号文ブロックc1を提供する。
【0022】
各巡回は、また、タグ、特に同じ巡回によって関連する暗号文ブロック51の出力と対応するローカルタグ32、を提供する。暗号文ブロック51を演算することを可能にする反復のセットは、方法の第1のパスを構成する。1つの実施形態において、第2のパスは、計算されてきたローカルタグ32をすべて用いることによってグローバルタグ52を決定することを目的とする。
【0023】
暗号文メッセージ50は、平文メッセージ10内のブロック11と暗号文メッセージ50内の対応するブロック51との間のそれぞれの位置を保持するように、暗号文ブロック51をすべてともに組み合わせることによって、特に、前述の順序付けられた方式に従ってチェーンを形成するようにそれらを連結することによって、取得される。関連データ15が典型的にはメッセージ10のヘッダである可能性があるならば、従って、それは暗号化されないままであり、暗号文メッセージ50に対して単に添付される。処理の終端において、暗号文メッセージ50、その関連データ15(もしあれば)、及びグローバルタグ52は、3つの統合された関連エンティティをともに形成する。
【0024】
本発明を実施する好ましい方法は、暗号化フェーズの間に講じられた複数の反復(IT1、IT2、IT3、…ITi)を通じて、動作及びステップを示す
図2によって、更に詳細な記述においてここで説明されることになる。これらの反復の各々は、1セットのステップ及び動作の終端において1つの暗号文ブロック51を提供する。
【0025】
第1の動作は、第1のデータ21をレジスタ23内にロードすることである。好ましくは、及び
図2において表現された実施形態に示すように、第1の反復IT1の第1のデータ21は、任意の乱数又は偽似乱数生成器によって生成されることができる初期化ベクトルIVである。次の動作は、以下の3つの主ステップを実行することによって方法の巡回を実行するように意図する。
【0026】
巡回の第1のステップは、ブロック暗号アルゴリズム(E)35内に入力データ20を入力するために用いられる。このアルゴリズムは、DES、IDEA、AES、又は任意の他のブロック暗号アルゴリズムを指すことができる総括的なブロック暗号化方式である。入力データ20は、レジスタ23内にロードされたデータ、即ち第1のデータ21及びカウンタデータ(CDti)22を備える。カウンタデータ22は、カウンタ(CTR)25によって提供される値を指す。このカウンタは、新たな反復ITnが講じられる度に、それが更新される、即ちインクリメントされる(又はデクリメントされる)ので、アップデータ(即ち更新するための装置)として見なされることができる。従って、各巡回は、新たなカウンタデータ(CDt1、CDt2、…CDti、CDti+1)とともに開始する。カウンタデータは、所謂「ノンス(nonce)」として、即ち「1回だけ用いられる数(number used once)」として、用いられる。実際は、カウンタによって提供される各値は、すべての処理されたブロック11にわたってユニークである。
【0027】
巡回の第2のステップの間に、暗号文30は、単一の暗号鍵(K)34を用いて入力データ20を暗号化することによって、計算され、その後ブロック暗号アルゴリズム35から出力される。この暗号文30は、第1のセグメント(S1)31と第2のセグメント32とを備える。後者は、認証タグ(Tn)であるものとして、特に、第1のセグメント31を認証するローカルタグであるものとして、定義される。好ましくは、グローバルタグが各反復の間に漸進的に決定されるケースにおいて、グローバルタグ52が計算されるか、又は少なくとも一時的に次の巡回の次のローカルタグ32と共に中間の計算が実行されるまで、ローカルタグ32は、メモリ内に格納される。
【0028】
巡回の第3のステップは、現在の平文ブロック11の暗号文ブロック51を計算することに専念する。このため、暗号文ブロック51は、第1のセグメント31、現在の平文ブロック11、及びローカルタグ32をオペランドとして使用して、第1の演算41を実行することによって決定される。従って、暗号文ブロック51は、3つのデータ上で実行された演算結果である。
【0029】
この第1の演算41が3つのオペランドを用いるとすれば、従って、それは2ステップにおいて、即ち第1の演算子を用いて第1のサブ演算OP11を実行することによって、その後第2の演算子を用いて第2のサブ演算OP12を実行することによって、実行される。典型的には、2つのサブ演算OP11、OP12は、論理演算(ブール代数)、典型的には可換演算である。更に好ましくは、演算子の少なくとも1つは、排他的論理和演算(XOR演算)である。
【0030】
それに加えて、XORサブ演算の交換法則に起因して、3つのオペランドが第1の演算41内で任意の順序において処理されていることができる、ということは注目されるべきである。
図1の例に示すように、現在の平文ブロック11は、第1のサブ演算OP11によって第1のセグメント31と共に処理され、その後、この第1のサブ演算の結果は、第2のサブ演算OP12によってローカルタグ32と共に処理される。その結果、第2のサブ演算OP12は、暗号文ブロック51を提供し、第1の反復IT1を終了する。
【0031】
XOR演算等のブール演算を用いる代わりに、第2のサブ演算OP12が、入力として用いられる2つのオペランドの1つが未知の場合、所与の暗号文ブロック51に対して(即ち所与の出力に対して)他のオペランドを演算することが可能にならないように、これらの2つのオペランドの分散を混合することができる任意の他の関数に基づくことができる、ということは注目されるべきである。しかしながら、関数は、確実に可逆的なままでなければならず、さもなければ、復号化の実現は可能ではないだろう。例えば、モジュラー加算が暗号化フェーズの間に演算として用いられると、モジュラー減算が、復号化フェーズの間にモジュラー加算の代わりに用いられることになる。従って、復号化フェーズの間に実行される演算は、暗号化フェーズの間に実行された演算の逆になる。
【0032】
XOR演算は、最も当然の選択であるが、モジュラー減算又はそれぞれのモジュラー除算が復号化フェーズとして用いられれば、暗号化フェーズの間にこのような演算を実行するためにモジュラー加算又はモジュラー乗算が用いられ得る、ということが注目されるべきである。但し、このようなモジュラー演算は、それらが他のサイドチャネル攻撃によって用いられ得る情報(例えばモジュラー加算における繰り上げビット)をリリースするかもしれないので、それほど適切ではない。
【0033】
すべての平文ブロック11が完全には処理されていない限り、レジスタ23には、その後、暗号文ブロック51が(即ち
図2に示したように、現在若しくは最後に計算された暗号文ブロック51が)再ロードされ、更新関数、例えばインクリメント関数は、新たな巡回を実行する前に(即ち上述の巡回の第1のステップから再開する前に)カウンタデータ22に対して適用される。従って、第2の反復IT2の第1のデータ21は、第1の反復IT1から生じた暗号文ブロック51に対応することになり、第2の反復のカウンタデータCDt2は、第1の反復IT1のカウンタデータCDT1に対して適用されたインクリメント関数の結果に対応することになる。本明細書において、表現「インクリメント関数(incrementing function)」は、「更新関数(updating function)」の好ましい実施形態として用いられることになる。従って、「インクリメント関数」を任意の「更新関数」で置き換えることができるということは理解されるべきである。同様に、本明細書において言及されるカウンタ25は、既に上で記されているような「アップデータ(updater)」と見なすことができる。
【0034】
平文ブロック11がすべて処理されると、レジスタ23には、最後に計算された暗号文ブロック51が再ロードされ、カウンタのインクリメント関数は、先の反復のように、(現在の)カウンタデータCDTiに対して適用される。但し、巡回の2つの第1のステップのみが、その後、暗号鍵34を用いてブロック暗号アルゴリズム35内で処理された入力データ20から(即ちci及びCDti+1から)暗号文30を得るために実行される。従って、これらの動作は、(前に行われたものとして)完了した反復を指すことはないが、むしろ部分的な反復であると見なされるべきである。この最後の暗号文30から、ローカルタグ(Ti+1)32は、その後、計算されたすべてのローカルタグ、即ち第1の反復IT1から計算されたすべてのローカルタグを用いて第2の演算(OP2)42によってグローバルタグ52を計算するために用いられる。この部分的な反復のローカルタグ(第2のセグメント32)のみが用いられるということは注目されるべきである。従って、第1のセグメント31の決定は、オプションのままであるが、単一のデータとして処理された暗号文30の計算を通じて暗に行われる。
【0035】
第2の演算(OP2)の結果は、グローバルタグ52を提供する。この結果は、第1の演算(OP1)の結果を決定することと同様の方法で、即ち複数のサブ演算(OP21〜OP2i)によって、計算される。好ましくは、各サブ演算は、関連する反復ITnのローカルタグTnと、先の反復ITn−1において決定された先のサブ演算の結果とを、オペランドとして用いる。第2の演算OP2の性質(即ち種類)は、第1の演算OP1の性質と同様又は同一である。同じことが、グローバルタグ52を決定するためにオペランドが用いられる順序の点で当てはまる。すべてのローカルタグからのグローバルタグ52の決定は、動作モードの第2のパスに対応する。
【0036】
暗号文メッセージ50は、以降に記載される逆方向処理の間に暗号文メッセージ50から平文メッセージ10を回復するために再使用される特定の順序において、すべての暗号文ブロック51をともに組み合わせる(連結する)ことによって決定される。例えば、このような順序は、平文ブロック11が処理された順序と同一にすることができる。変形において、これらのブロックが処理されたときの順序を識別するために各暗号文ブロック51に対してインデックスがアサインされ得る。
【0037】
有利的には、2つのオペランドの代わりに3つのオペランドを用いることにより第1の演算OP1を実行することによって、暗号文ブロック51は、単一の演算から起因しないが、2つの連続的な演算、即ち第1のサブ演算OP11及び第2のサブ演算OP12から起因する。第1のサブ演算は、入力として3つのオペランドのうちの2つを用い、第2のサブ演算は、入力として第3のオペランドと第1のサブ演算の結果とを用いる。多くの入力(例えば100,000のパワートレースを観測するために100,000回)にわたってブロック暗号アルゴリズムを実行することによって、このような処理上にDPA攻撃を実行するつもりの攻撃者は、最初の2つのオペランドに基づいて決定される中間出力に対してアクセスできないことになる。それどころか、攻撃者は、第2のサブ演算OP12の後に提供される出力を観測することができるのみである。従って、攻撃者は、第1のサブ演算OP11を分析することができる前に、まず第2のサブ演算を攻撃する必要があることになる。しかしながら、第2のサブ演算は、2つの未知の値に基づくのであり、双方は、一様に分散し相互に関連しない。その結果、DPAは作動しないか、又は、従来技術の処理の1つにこのような攻撃を適用するよりも本発明の主題に対してこのような攻撃を適用するほうが、少なくともはるかに困難であろう。
【0038】
1つの実施形態によれば、方法は、第1のデータ21(即ちレジスタ23内にロードされたデータ)とカウンタデータ22との間の共通のビット長を回復するための予備的なステップを更に備える。この予備的なステップは、第1のデータ21及びカウンタデータ22が同じビット長を有しないケースにおいて実行される。好ましくは、この予備的なステップは、ブロック暗号アルゴリズム35に、又はアルゴリズム35自体の内部に、前記入力データ20を入力する前に講じられる。好ましくは、第1のセグメント31及びローカルタグ32は、同じビット長を有する。そうでなければ、方法は、これらの2つのセグメント間で同じビット長を回復するために、付加的なステップ(パディングステップ)を更に備えてもよい。更に、好ましくは、第1のデータ21(例えばIV)、カウンタデータ22、第1のセグメント31、及び第2のセグメント32(ローカルタグ)は、すべて、同じビット長、即ち入力データ20のビット長の半分)を有する。
【0039】
図3に示す1つの実施形態によれば、第1のデータ21は、オペランドとして平文関連データ(AD)24を用いた初期演算(OP0)43の結果であることができる。この図の例に示すように、初期化ベクトルIVは、初期演算43の第2のオペランドとして用いられてもよい。関連データ24は、典型的には、平文メッセージ10のヘッダに関してもよい。この場合、ヘッダ(即ち関連データ)がメッセージ自身と同じ方法で処理されないが、それはメッセージの付録のままである、ということは理解されるべきである。初期演算OP0の性質は、第1の演算OP1の性質、又は第2の演算OP2の性質と同様又は同一である。通常、関連データは、初期化ベクトルに対して追加される。
【0040】
図4を参照すると、
図4は、
図2に示す暗号化フェーズに従って取得された暗号文メッセージ50の復号化フェーズを示す。平文メッセージ10(
図2)を暗号化するための動作モードが可逆的な暗号化処理に関するならば、
図4に示す復号方法は、
図2の暗号方法と非常に類似する。
【0041】
より具体的には、
図4は、暗号文メッセージ50から、平文メッセージ10と前記平文メッセージを認証するためのグローバルタグ52とを提供するための巡回反復を用いるブロック復号方法を表現する。暗号文メッセージ50は、複数の順序付けられた暗号文ブロック51に変換され、それらはすべて同じビット長を有する(このような演算は、
図4には示さないが、
図1に示したものと類似する)。特に、このビット長は、暗号化フェーズ(
図2)の間に、この暗号文メッセージ50の起源であった平文メッセージ10から平文ブロック11を取得するために定義されたものと同一である。暗号化フェーズに関して説明されるように、もしあれば、終端ブロック(関連する暗号化フェーズの間にパディングされたブロックに応じた第1のブロック又は最後のブロック)に対してもパディングステップを適用することができる。暗号文ブロック51の各々は、巡回の間に現在の暗号文ブロックとして順序付けられた方式で連続的に処理される。特に、この順序付けられた方式は、平文メッセージ10内のブロック11と暗号文メッセージ50内の対応するブロック51との間のそれぞれの位置を保持することを可能にする。
【0042】
概して言えば、暗号化フェーズの間に実行された動作と同じ動作が講じられ、即ち第1のデータ21をレジスタ23内にロードし、その後、以下のステップを実行することによって巡回を実行する。
【0043】
ブロック復号アルゴリズム35内に入力データ20を入力するための第1のステップ。この入力データは、レジスタ23内にロードしたデータとカウンタデータ22とを備える。
【0044】
ブロック復号アルゴリズム35内で、単一の暗号鍵34(即ち暗号化フェーズに用いられたものと同じ鍵K)を用いて入力データ20を復号化することによって第1の出力30を計算するための第2のステップ。この第1の出力30は、第1のセグメント31と第2のセグメント32とを備え、後者は認証ローカルタグとして定義される。
【0045】
第1のセグメント31、現在の暗号文ブロック51、及び第2のセグメント32(即ち現在の反復によって提供されたローカルタグ)をオペランドとして使用して第1の演算(OP1)41を実行することによって平文ブロック11を計算するための第3のステップ。従って、平文ブロック11は、3つのデータ上で実行された演算結果である。この第1の演算41が3つのオペランドを用いるとすれば、従って、それは暗号化フェーズに関して既に説明されたような2つのステップにおいて実行される。
【0046】
復号化フェーズ(
図4)の間に実行された演算(OP1)41が、暗号化フェーズ(
図2)の間に実行された演算(OP1)41とは逆であるということが注目されるべきである。更に、これらの演算41の各々が2つの連続的なサブ演算(即ち第1のOP11及びその後のOP12)を備えるので、暗号化フェーズにおいて実行された第2のサブ演算OP12の逆に対して、復号化フェーズの間に実行された第1のサブ演算OP11が対応するということが理解されるべきである。同様に、復号化フェーズの間に実行された第2のサブ演算OP12は、復号化フェーズの間に第1に実行したサブ演算OP11の逆に対応する。
【0047】
すべての暗号文ブロック51が完全には処理されていない限り、レジスタには、現在の暗号文ブロック51が(即ち、
図4に示すように、最後に計算された暗号文ブロック51が)次の反復の間に再ロードされ、インクリメント関数は、新たなカウンタデータ22を得るために先の反復のカウンタデータ上に、カウンタ25によって、適用される。本復号方法の第1のステップから再び開始することによって、現在の新たな反復において、新たな巡回を実行するときに、この新たなカウンタデータ22が用いられることになる。特に、インクリメント関数は、暗号化フェーズの間に用いられる関数と同じ関数である。更に、復号化フェーズの間に開始値として(即ち第1の反復IT1’によって)用いられる第1のカウンタデータ(CDt1)は、暗号化フェーズの間に開始値として(第1の反復IT1によって)用いられるものと同じである。この理由のために、暗号文メッセージ50を復号化することを担当している復号化装置に対して暗号化フェーズの第1のカウンタデータ(CDt1)を送信できる。典型的には、例えば暗号文メッセージ50の(暗号化されていない)ヘッダにおいて暗号文メッセージ50と共にこのようなカウンタデータ(CDt1)が送信され得る。更に、このデータが任意の理由のために(例えば送信器と受信器との間の再同期化の目的のために)復号化装置に対して再送信されるべき場合において、暗号化装置内部にこのカウンタデータ(CDt1)を少なくとも一時的に格納することもできる。同じことは、第1のデータ21(IV)に関しても当てはまる。別の方法によれば、初期のカウンタデータ(CDt1)は、それを通信する必要がないように、デフォルト値に設定することができる(例えば、1に設定することができる)。実際には、第1の反復IT1とIT1’との間で、レジスタ内に同じ第1のデータ21をロードしなければならない。従って、第1のカウンタデータと同じような方法によって第1のデータ21(IV)が送信され得るし、又は同じ理由のために暗号化装置内に格納され得るし、又は通信される必要がなくデフォルト値に設定することができる。変形において、初期化フェーズの間に、暗号化装置と復号化装置との間で、第1のカウンタデータ(CDt1)、第1のデータ21(IV)、及び暗号鍵34(K)及び/又はカウンタ25のインクリメント関数などの変化するかもしれない他のデータは、少なくとも一旦共有され得る。例えば、システムをリセットするか又はシステムを更新するために、このような初期化フェーズを後で再び行うことができる。
【0048】
平文メッセージ10は、暗号文メッセージ50を提供するために暗号化フェーズの間に元来用いられた平文メッセージを検索するように、上記のように、同じ順序ですべての巡回の間に取得された平文ブロック11を組み合わせること(連結すること)によって決定される。
【0049】
その後、レジスタ23には、現在の暗号文ブロック51が(即ち、最後の反復ITi’の間に処理された最後の暗号文ブロック51が)再ロードされ、インクリメント関数は、(部分的な反復を参照する際に暗号化フェーズの間に実行されたものと同様に)巡回の最初の2ステップのみを実行する前に最後のカウンタデータ22にもう1回適用される。この最後の第1の出力30から、ローカルタグ(Ti+1)32は、その後、オペランドとして計算された認証ローカルタグ32をすべて用いる第2の演算(OP2)42によってグローバルタグ52(TG)を計算するために用いられる。暗号化フェーズに関して既に説明されたように、第2の演算OP2から起因するグローバルタグ52は、第1の演算(OP1)の結果を決定することと同様の方式で、即ち複数のサブ演算(OP21〜OP2i)によって、計算される。暗号化フェーズの間に言及されたものと同じ種類の演算及び変形は、復号化フェーズの間に適用されることができる。
【0050】
暗号化フェーズ又は復号化フェーズに関係なく、一旦ブロック11及び51がすべて処理されていれば、サブ演算(OP21〜OP2i)は、必ずしも計算されない、ということは注目されるべきである。実際は、これらのサブ演算は、中間結果を決定することによって、各反復の間に1つずつ漸進的に計算され得る。次の反復(又は処理の終端における部分的な反復)によって提供された次のローカルタグ(第2のオペランド)によりオペランドとして処理されるまで、この中間結果をメモリ内に格納することができる。それぞれのブロック11、51からメッセージ10、50を決定するための同じ原理が適用されることができる。
【0051】
それに加えて、アルゴリズム35の逆方向特性のために、暗号化フェーズにおいて言及されたブロック暗号アルゴリズムが復号化フェーズのブロック復号アルゴリズムと同じである、ということに留意するべきである。更に、アルゴリズム35によって提供される結果が復号化フェーズにおける所謂「第1の出力」30であるとして定義される、ということに留意するべきである。この表現は、この出力がむしろ復号化されたデータであると見なされるべきであるので、用語暗号文の代わりに選択されている(技術的に言うと、アルゴリズム35には所謂第1の出力と所謂暗号文との間に違いがないが)。
【0052】
1つの実施形態によれば、ブロック復号方法は、レジスタ23内にロードされた第1のデータ21とカウンタデータ22との間の共通のビット長を回復するための予備的なステップを更に備える。この予備的なステップは、第1のデータ21及びカウンタデータ22が同じビット長を有しないケースにおいて用いられる。このような予備的なステップは、ブロック暗号アルゴリズム35内に入力データ20を入力する前に講じられることになる。
【0053】
暗号化フェーズに関して既に言及されたように、第1のデータ21は、初期化ベクトルIV、特に、カウンタデータ22のビット長と同じビット長を有する単一のブロックにすることができる。
【0054】
1つの実施形態によれば、及び
図3に示したものと同様に、第1のデータ21は、平文関連データ24をオペランドとして用いる初期演算OP0の結果であってもよい。好ましくは、この初期演算OP0、第1の演算OP1及び第2の演算OP2は、排他的論理和演算である。しかしながら、及び前述のように、他の種類の演算を用いることもできる。
【0055】
更に、本復号方法の暗号文メッセージ50は、認証データ(特に、関連するブロック暗号方法によって暗号化フェーズの間に取得されるグローバルタグ)に更に関連づけられることができる、ということに留意するべきである。このような場合において、本復号方法は、この関連する認証データが復号方法の第2のパスによって決定されたグローバルタグ52と同一であるか否かをチェックするためのステップを更に備えることができる。グローバルタグ52が暗号文メッセージ50に関連づけられた認証データと同一でなければ、後者は信頼性がないものとして宣言されることになる。
【0056】
暗号化フェーズ及び復号化フェーズが、暗号化方法及び復号化方法としてそれぞれ提示されてきたが、本発明は、また、暗号化フェーズ及び復号化フェーズの両方を備える単一の方法に言及することもできる。
【0057】
本発明は、また、本明細書において開示された方法又は実施形態の1つを実施するための暗号装置60、60’に言及する。
図1、
図2、及び
図5を参照すると、第1の暗号装置60は、平文メッセージ10から、暗号文メッセージ50と暗号文メッセージを認証するためのグローバルタグ52とを提供するための巡回反復を用いるブロック暗号方法の実施に専用である。このため、暗号装置60は、以下の構成要素、即ち、
・第1のデータ21を受信するための、典型的にはメモリ(例えばメモリセル)の形式の、レジスタ23と、
・更新関数fに従って再現可能なデータ22を更新するためのアップデータ25であって、例えば、それは、インクリメント関数(f)に従ってカウンタデータ22をインクリメントするためのカウンタ25を指してもよいアップデータ25と、
・少なくとも平文メッセージ10を受信するためのインタフェース61と、
・全く同じビット長を有する複数の順序付けられた平文ブロック11(m1、m2、…mi)に、平文メッセージ10を変換して好ましくは格納するための変換装置62と、
・巡回の間に現在の平文ブロックとして、順序付けられた方式で平文ブロック11の各々を連続的に処理するための処理装置64であって、ブロック暗号アルゴリズム35をホスティングする暗号装置65と、単一の暗号鍵34(K)を備えるメモリ66とを更に備える処理装置64と
を備える。
【0058】
各巡回は、
・ブロック暗号アルゴリズム35内に入力データ20を(例えば
図5に示すような処理装置64を通じて)入力するための第1のステップであって、この入力データ20は、レジスタ23のデータ21と再現可能なデータ(カウンタデータ22)とを備える第1のステップと、
・単一の暗号鍵34を用いて入力データ20を暗号化することによって暗号文30を、ブロック暗号アルゴリズム35内で計算するための第2のステップであって、暗号文30は第1のセグメント31と第2のセグメント32とを備え、後者は、認証ローカルタグとして定義されており、例えば、処理装置64の内部又は外部に配置されたメモリ66内のメモリ内に格納される第2のステップと、
・第1のセグメント31、現在の平文ブロック11、及び第2のセグメント32(即ちローカルタグ)をオペランドとして使用して第1の演算OP1を実行することによって、暗号文ブロック51を計算し、例えばこのようなメモリ66内に格納するための第3のステップと
を備える。
【0059】
すべての平文ブロック11が完全には処理されていない限り、処理装置64は、現在の暗号文ブロック51(即ち最後に計算された暗号文ブロック51)をレジスタ23に再ロードし、第1のステップから再び開始することによって新たな巡回を実行する前にカウンタデータ22をインクリメントするように(即ち再現可能なデータを更新するように)更に構成される。
【0060】
変換装置62は、平文メッセージ10内のブロック11と暗号文メッセージ50内の対応するブロック51との間のそれぞれの位置を保持するように、順序付けられた方式で、特に前述の順序付けられた方式で、すべての巡回の暗号文ブロック51(c1、c2、…ci)を連結することによって暗号文メッセージ50を決定するように更に構成される。
【0061】
処理装置64は、最後に計算された暗号文ブロック51をレジスタ23に再ロードし、巡回の最初の2ステップのみを実行する前にそれをインクリメントするためにカウンタデータ22にインクリメント関数(f)を適用するように更に構成される。その後、処理装置64は、すべての計算された認証ローカルタグ(32)をオペランドとして使用して、例えばメモリ66から、第2の演算OP2によってグローバルタグ52を計算するように構成される。
【0062】
インタフェース61(又は任意の他のインタフェース)は、暗号文メッセージ50及びグローバルタグ52を出力するように更に構成される。
【0063】
変換装置62によって実行される変換演算は、平文メッセージ10を同じビット長を有するブロック11に分割し、もしあれば、1回分割されたこの平文メッセージの2つの終端ブロック11の少なくとも1つに適用されるパディング演算に関係することができる。
【0064】
暗号装置60は、本明細書に開示された実施形態のいずれかによる方法を実施するために用いることができる初期化ベクトル(IV)を生成するための生成器67(又は擬生成器)を更に含むことができる。このようなジェネレータ(又は別のもの)は、初期値によってカウンタ25を初期設定するために、典型的にはリセット目的のために、用いられ得る。それに加えて、レジスタ23、カウンタ25、及びもしあれば生成器67は、処理装置64内に配置され得る、ということは注目されるべきである。
【0065】
第1の装置として、特に送信器側において、動作する場合、暗号化装置60は、第2の装置として、特に受信器側において動作する、復号化装置60’によってその後復号化されることになる平文メッセージ10を暗号化するために用いられるように典型的には意図される。復号化フェーズが暗号化フェーズの逆方向処理に対応するならば、暗号化装置を形成する電子構成要素は、復号化装置の電子構成要素と同一又は類似する。復号化装置のいくつかの構成要素に関連づけられた関数のみが、暗号化装置の構成要素とは異なることができる。従って、本発明の復号化装置も、また、
図5の構成要素を参照して以降記載されることになる。
【0066】
従って、この第2の装置は、暗号文メッセージ50から、平文メッセージ10と平文メッセージを認証するためのグローバルタグ52とを提供するための巡回反復を用いてブロック復号方法を実施する暗号装置60’に関する。この暗号装置60’は、
・第1のデータ21を受信するための、典型的にはメモリ(又はメモリセル)の形式の、レジスタ23と、
・更新関数fに従って再現可能なデータ22を更新するためのアップデータ25であって、例えば、それは、インクリメント関数(f)に従ってカウンタデータ22をインクリメントするためのカウンタ25を指してもよいアップデータ25と、
・少なくとも暗号文メッセージ50を受信するためのインタフェース61と、
・全く同じビット長を有する複数の順序付けられた暗号文ブロック51内に暗号文メッセージ50を変換して好ましくは格納するための変換装置62と、
・巡回の間に現在の暗号文ブロックとして、順序付けられた方式で暗号文ブロック51の各々を連続的に処理するための処理装置64であって、ブロック復号アルゴリズム35をホスティングする暗号装置65と、単一の暗号鍵34(K)を備えるメモリ66とを更に備える処理装置64と
を備える。
【0067】
各巡回は、
・ブロック復号アルゴリズム35内に入力データ20を入力するための第1のステップであって、この入力データは、レジスタ23内にロードされたデータ21と再現可能なデータ(カウンタデータ22)とを備える第1のステップと、
・単一の暗号鍵34を用いて入力データ20を処理することによって第1の出力30を、ブロック暗号アルゴリズム35内で計算するための第2のステップであって、第1の出力30は第1のセグメント31及び第2のセグメント32を備え、後者は、認証ローカルタグとして定義されており、メモリ、例えばメモリ66内に(少なくとも一時的に)格納される第2のステップと、
・第1のセグメント31、現在の暗号文ブロック11、及び第2のセグメント32(即ちローカルタグ)をオペランドとして使用して第1の演算OP1を実行することによって、平文ブロック11を計算し、その後、(例えばこのようなメモリ66内に)格納するための第3のステップと
を備える。
【0068】
すべての暗号文ブロック51が完全には処理されていない限り、処理装置64は、現在の暗号文ブロック51(即ち最後に計算された暗号文ブロック51)をレジスタ23に再ロードし、第1のステップから再び開始することによって新たな巡回を実行する前に再現可能なデータを更新するように(即ちカウンタ25のインクリメント関数によってカウンタデータ22をインクリメントするように)更に構成される。
【0069】
変換装置62は、平文メッセージ10内のブロック11と暗号文メッセージ50内の対応するブロック51との間のそれぞれの位置を保持するために、順序付けられた方式で、特に前述の順序付けられた方式で、すべての巡回の平文ブロック11を連結することによって平文メッセージ10を決定するように更に構成される。
【0070】
処理装置64は、現在の平文ブロック(即ち、処理されてきた最後の暗号文ブロック)をレジスタ23に再ロードし、巡回の最初の2ステップのみを実行する前にそれをインクリメントするためにカウンタデータ22にインクリメント関数(f)を適用するように更に構成される。その後、処理装置64は、すべての計算された認証ローカルタグ(32)をオペランドとして使用して、例えばメモリ66から、第2の演算OP2によってグローバルタグ52を計算するように構成される。
【0071】
好ましくは、暗号装置60’の処理装置64は、暗号文メッセージ50と共に提供された認証データとグローバルタグ52とが同一であるか否かをチェックするように更に構成される。このような認証データは、典型的には、暗号装置60によって暗号化フェーズの間に決定されたグローバルタグ52になる。暗号装置60、60’の各々によって提供されるグローバルタグ52間の相違がある(同じメッセージ50に対して)ケースにおいて、これは、平文メッセージ10(又は暗号文メッセージ50)に信頼性がないということを意味する。従って、処理装置64は、適切な動作を講じることができ、例えば、警告メッセージを作動させてもよい、平文メッセージ10のリリースを中断してもよい、及び/又は、報告データとして情報を送信してもよい。
【0072】
もちろん、インタフェース61は、一旦平文メッセージ10が回復されれば、平文メッセージ10を出力するように更に構成される。
【0073】
暗号装置60の暗号アルゴリズムが暗号装置60’の復号アルゴリズムとして同じである、ということは注目されるべきである。実際は、このようなアルゴリズム35は、復号化することに加えて暗号化するために用いることができる。
【0074】
それに加えて、グローバルタグ52を決定することを考慮して、メモリ66(又は別のメモリ)は、グローバルタグが各反復間に漸進的に決定されるという場合には、ローカルタグ32又は中間結果をすべて格納するために用いられることになる。1つの実施形態において、同じ方法で暗号文メッセージ50又は平文メッセージ10を決定することができる。
【0075】
暗号装置60、60’のメモリ66は、安全なメモリとすることができる。1つの実施形態において、暗号装置60、60’の構成要素は、単一的な装置内に備えられ、そのため、それは単一的な装置を破壊することなく、構成要素に、特に少なくとも機密に属する構成要素に物理的にアクセスすることができないだろう。
【0076】
暗号鍵34は、暗号装置60、60’によって暗号化又は復号化の両方の目的のために使用される。
【0077】
本開示の実施形態が具体例の実施形態に関連して記載されてきたが、様々な改良及び変更が、これらの実施形態の広い範囲から逸脱せずに、これらの実施形態に対して行われてもよいことは明らかだろう。従って、明細書及び図面は、限定的な観念ではなく、むしろ例示的な観念として見なされるべきである。これに関して一部分を形成する添付の図面は、限定ではなく、実例として、発明の主題が実施されることができる特定の実施形態を示す。図示される実施形態は、本明細書に開示された教示を当業者が実施することを可能にするのに十分に詳細な記述で記載されているものと確信する。他の実施形態が、この開示の範囲から逸脱せずに構造及び論理的な置換及び変更がなされ得るように、そこから利用され、導き出されてもよい。この詳細な説明は、従って、限定的な意味にとることはできないし、様々な実施形態の範囲は、添付された特許請求の範囲が権利をもつすべての範囲の等価物に加えて、添付の特許請求の範囲によってのみ規定される。
【0078】
発明の主題のこのような実施形態は、実際上1つ以上が開示されるいかなる単一の発明の概念に、この出願の範囲を自発的に限定する意図を伴わずに、単に利便性のために用語「発明」によって、本明細書において、個々に及び/又は総体として参照されてもよい。このように、特定の実施形態が本明細書に図示され記載されたが、同じ目的を実現するように計画された任意の設備が、示された特定の実施形態の代わりに用いられてもよい、ということは認識されるべきである。この開示は、様々な実施形態のあらゆる適応又は変形を網羅するように意図される。上記の実施形態の組み合わせ、及び特に本明細書に記載されない他の実施形態は、上記の明細書の検討に際して当業者にとって明らかになる。