説明

メッセージデータの非順次着信に対する許容度を有するメッセージ完全性のための処理方法

本発明の1つの例示的な実施形態が、送信のためのアプリケーションパケットを処理するための方法を開示し、このアプリケーションパケットを複数のセグメントに分割し、第1の擬似ランダムビットを作成し、および、この複数のセグメントのそれぞれと、この複数のセグメントのそれぞれに関連する第1の擬似ランダムビットの諸部分とに基づいて、部分的タグを生成することを含む。この方法は、アプリケーションパケットの最後のセグメントに関連する最後の部分的タグを含め、部分的タグを組み合わせて、蓄積されたタグを作成し、この蓄積されたタグと、第2の擬似ランダムビットとに基づいて、認証タグを生成し、この認証タグを格納し、およびこの認証タグを含む複数のセグメントを送信することをさらに含む。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は、米国法典第35編119条(e)(2)の下で、全体が組み込まれている開示である、2006年10月23日に出願した仮出願第60/853,646号の優先権を主張するものである。
【0002】
本発明は、送信のためにアプリケーションパケットを処理するための方法に関する。
【背景技術】
【0003】
暗号化とメッセージ認証/完全性の両方が、ワイヤレス無線インタフェースを介してセキュリティをもたらすのに必要とされる。メッセージ暗号化が、メッセージのプライバシーを保護するのに対して、メッセージ認証は、このメッセージを不正操作から保護する。
【0004】
メッセージ認証プロセスにおいて、秘密鍵およびメッセージ認証アルゴリズムを使用する送信側が、メッセージに付加される短いタグを計算する。また、受信側も、その秘密鍵の知識に基づいて、受信されたメッセージに関するタグを計算し、この計算されたタグを、受信されたタグと比較する。これらのタグが同一である場合、受信側は、そのメッセージを受け入れ、同一でない場合、そのメッセージは、破棄される。
【0005】
既存のメッセージ認証アルゴリズム、例えば、鍵付きHMAC−SHA(Hash Message Authentication Code−Secure Hash Algorithm)およびAES−CBC(Advanced Encryption Standard−Cipher Algorithm in Cipher Block Chaining)は、逐次演算であり、ビットが、送信された順序で処理されることを要求するため、アウトオブオーダーパケット処理を許さない。このため、メッセージ認証の従来のアプローチは、データをRAMに送り、CP(中央プロセッサ)にデータパケットを並べ替えさせて、アプリケーションパケット(メッセージ)を再組み立てさせ、このアプリケーションパケットを、メッセージ認証を行うべきハードウェアに送らなければならない。このことにより、バス上のトラフィックが相当に増大し、パケット処理の際の待ち時間が相当に増す可能性がある。
【0006】
さらに、既存のメッセージ認証アルゴリズムは、一度にブロック単位に対して作用する。その結果、ブロックレベルアルゴリズムは、非ブロック境界で終わるメッセージセグメントに対して作用することが不可能である。メッセージ認証タグ検証を実行することを始める前に、すべてのメッセージセグメントからアプリケーションパケット全体を再組み立てすることが必要である。
【発明の概要】
【課題を解決するための手段】
【0007】
本発明の例示的な実施形態においては、送信のためにアプリケーションパケットを処理するための方法が、このアプリケーションパケットを複数のセグメントに分割し、第1の擬似ランダムビットを作成し、および、この複数のセグメントのそれぞれと、この複数のセグメントのそれぞれに関連する第1の擬似ランダムビットの諸部分とに基づいて、部分的タグを生成することを含む。この方法は、アプリケーションパケットの最後のセグメントに関連する最後の部分的タグを含め、部分的タグを組み合わせて、蓄積されたタグを作成し、この蓄積されたタグと、第2の擬似ランダムビットとに基づいて、認証タグを生成し、この認証タグを格納し、およびこの認証タグを含む複数のセグメントを送信することをさらに含む。
【0008】
別の例示的な実施形態においては、受信されたアプリケーションパケットセグメントを処理する方法が、認証タグを含むアプリケーションパケットの複数のセグメントを受信し、第1の擬似ランダムビットを作成し、および、この受信された複数のセグメントのそれぞれと、この受信された複数のセグメントのそれぞれに関連する第1の擬似ランダムビットの諸部分とに基づいて、部分的タグを生成することを含む。この方法は、これらの部分的タグ、この受信された複数のセグメント、および、この受信された認証タグをメモリの中に格納し、この受信された複数のセグメントを組み合わせて、アプリケーションパケットを作成し、これらの部分的タグを組み合わせて、計算されたタグを作成し、および、この計算されたタグと、この受信された認証タグとに基づいて、アプリケーションパケットの真正性を検証することをさらに含む。
【0009】
本発明の例示的な実施形態は、本明細書の後段で与えられる詳細な説明、ならびに、単に例示として与えられ、したがって、本発明の例示的な実施形態を限定するものではない、添付の図面から、より完全に理解されよう。
【図面の簡単な説明】
【0010】
【図1】本発明の例示的な実施形態による論理暗号化方法を示す流れ図である。
【図2】図1における実施形態の例を表す図である。
【図3】本発明の例示的な実施形態による完全性タグを作成することの流れ図である。
【図4A】図3に示される完全性タグ作成方法の例を表す図である。
【図4B】図3の方法による蓄積操作を示す図である。
【図5】本発明の例示的な実施形態によるRLPセグメントの再送に関する流れ図である。
【図6】本発明の例示的な実施形態による解読およびインライン完全性検査を示す流れ図である。
【図7】本発明の例示的な実施形態によるブロックサイズセグメントの非倍数に関する部分的タグ計算を示す図である。
【図8】本発明の例示的な実施形態による可変長アプリケーションパケットに関する部分的タグ計算を示す図である。
【発明を実施するための形態】
【0011】
「第1の」、「第2の」、「第3の」などの用語が、様々な要素、構成要素、領域、および/またはセクションを説明するのに本明細書で使用されるものの、これらの要素、構成要素、領域、および/またはセクションは、これらの用語によって限定されるべきではないことが理解されよう。これらの用語は、1つの要素、構成要素、領域、またはセクションを、別の領域またはセクションと区別するためにだけ使用される可能性がある。このため、後段で説明される第1の要素、第1の構成要素、第1の領域、または第1のセクションは、本発明の教示を逸脱することなく、第2の要素、第2の構成要素、第2の領域、または第2のセクションと呼ばれることも可能である。
【0012】
本明細書で使用される用語法は、特定の例示的な実施形態を説明することだけを目的とし、限定することは意図していない。本明細書で使用される「ある」および「その」という単数形は、文脈によって、そうでないことが明らかに示されない限り、複数形も含むことが意図される可能性がある。「含む(comprises)」および/または「含む(comprising)」という用語は、本明細書で使用される場合、言明される特徴、完全体、ステップ、操作、要素、および/または構成要素の存在を明示するが、他の1つまたは複数の特徴、完全体、ステップ、操作、要素、構成要素、および/または以上のグループの存在または追加を排除しないことがさらに理解されよう。
【0013】
例示的な実施形態は、理想化された実施形態(および中間構造)の概略図であることが可能な断面図を参照して、本明細書で説明される可能性がある。このため、例示的な実施形態は、本明細書で示される特定の配置および構成に限定されると解釈されるべきではなく、そのような配置および構成からの逸脱を含むべきである。
【0014】
特に定義されない限り、本明細書で説明されるすべての用語(技術用語および科学用語を含む)は、当業者によって一般に理解されるのと同一の意味を有する。一般に使用される辞書において定義される用語などの用語は、当技術分野の文脈における、それらの用語の意味と合致する意味を有すると解釈されるべきであり、理想化された意味、または過度に形式的な意味で解釈されることは、本明細書でそのように明確に定義されない限り、ないことがさらに理解されよう。
【0015】
本発明は、送信側と受信側の間のメッセージ認証に関する。送信側は、パケット通信を送信することができる任意のよく知られている無線通信システムにおける任意の通信デバイスであることが可能である。例えば、送信側は、移動局、基地局などであることが可能である。理解されるとおり、移動局は、移動電話機、PDA、ポータブルコンピュータなどであることが可能である。受信側は、移動局、基地局などの、送信側の任意の受信する相手であることが可能である。さらに、本発明は、無線通信および/またはネットワーク通信に適用されることが可能であることが理解されよう。
【0016】
メッセージ認証を最もよく理解するのに、本発明の実施形態に従って、メッセージ暗号化が、最初に説明される。さらに、暗号化を理解するために、無線リンクプロトコルが、最初に説明される。
【0017】
(無線リンクプロトコル)
RLP(無線リンクプロトコル)は、AT(アクセス端末装置)(移動局としても知られる)と、AN(アクセスノード)(基地局としても知られる)との間のワイヤレス無線インタフェースを介して機能するセグメント化−再組み立てプロトコルである。RLPは、アプリケーションパケットをRLPセグメントまたはRLPパケットに細分化(セグメント化)して、これらのセグメントまたはパケットが、RFリンクを介して効率的に送信されることが可能であるようにすることを担う。さらに、RLPは、受信機におけるRLPセグメントの再組み立て、順序の乱れたパケットの並べ替え、および伝送中にセグメントが失われた場合の再送も担う。
【0018】
(メッセージ暗号化)
暗号化および/または認証/完全性は、RLPセグメントに対して実行されることが可能である。例えば、よく知られたCTR(カウンタモード)暗号化を使用して、RLPセグメントが暗号化されることが可能である。
【0019】
暗号化されるべきRLPセグメント、例えば、メッセージ、データ、音声などは、通常、平文と呼ばれ、暗号化プロセスの結果は、暗号文と呼ばれる。しばしば、この暗号化プロセスには、平文に対して暗号化アルゴリズムを実行して、暗号文を得ることがかかわる。DES(データ暗号化表示)、AES(高度暗号化表示)などの多くの暗号化アルゴリズムには、暗号化プロセスにおける鍵の使用がかかわる。暗号化鍵は、暗号化アルゴリズムにおいて暗号文を生成するのに使用されるビットシーケンスである。この暗号化鍵は、通信の送信側と受信側の両方で知られており、さらに、受信側において、この暗号化鍵を使用して、暗号文が平文に解読される。
【0020】
ANとATの間で送信される情報のフレームの暗号化がかかわる無線通信環境における暗号化の場合、同一の情報(すなわち、同一の平文)が、異なる2つのフレームの中で送信される場合、問題が生じる。その状況では、同一の暗号文が、その2つのフレームのそれぞれに関して生成される。このため、この暗号文に関する情報が漏れたという言い方がされる。そのような漏れた暗号文に伴って行われる可能性がある反射攻撃を防止するのに、暗号同期を使用する暗号化技術が、開発された。暗号同期は、例えば、暗号化のための暗号同期の各回の使用後にインクリメントされるカウント値を含む。このようにして、暗号同期は、時とともに変化する。暗号同期の通常の使用において、暗号化アルゴリズムは、あたかも暗号同期が平文であるかのように、暗号同期に適用される。もたらされる出力は、マスクと呼ばれる。次に、このマスクが、暗号化のために情報(例えば、RLPセグメント)と排他論理和演算されて、暗号文が生成される。暗号化鍵の場合と同様に、暗号同期は、送信側と受信側の両方で知られており、さらに、受信側において、暗号同期を使用して、暗号文が平文に解読される。
【0021】
(アプリケーションパケット暗号化)
本発明の実施形態によるメッセージ完全性をよりよく理解するのに、メッセージ完全性に適用される場合の、アプリケーションパケットを暗号化する方法の簡単方法の説明が、与えられる。
【0022】
図1は、本発明の例示的な実施形態による論理暗号化方法の流れ図であり、さらに、図2は、このプロセスの図表による例を示す。
【0023】
例示的な実施形態において、アプリケーションパケットのRLP(無線リンクプロトコル)セグメントが、別のアプリケーションパケットのRLPセグメントとインタリーブされることなしに、暗号化のために送られるという想定が、存在する。また、単に例示の目的で、768バイトのアプリケーションパケットが、RLPストリームの第8000番のバイト上で送信されており、RLPセグメント数は、4バイトの倍数であることも想定される。つまり、RLPセグメントは、ブロックサイズの倍数である。当業者には理解されるとおり、アプリケーションパケットサイズ、RLPバイトストリーム、およびRLPセグメントのサイズはすべて、変えられることが可能である。
【0024】
図1および図2を参照すると、送信側が、アプリケーションパケット、つまり、768バイトの長さを有するデータパケットを、ブロックサイズ例えば、32ビット(4バイト)の倍数の平文ブロックM−M192に論理的に分割する(ステップS100で)。図2は、ブロックMからMを示す。
【0025】
2つの引数(入力)、例えば、鍵kと、バイト番号に基づく暗号同期値とを用いるAES(高度暗号化標準)を使用して、第1の擬似ランダムブロック(ビット)AES(0,8000)−AES(0,8016)が、ステップS110で作成されることが可能である。図2において、表示、すなわち、TYPE、「0」を使用して、第1の擬似ランダムビットが、他の擬似ランダムビットと区別される。後段を参照されたい。
【0026】
さらに詳細には、第1の擬似ランダムビットAES(0,8000)−AES(0,8016)は、以下のとおり書かれることが可能である。すなわち、
第1の擬似ランダムビット(OUTPUT)=AES(k,INPUT)
である。
【0027】
AESに対する暗号同期値(INPUT)は、2つの部分、TYPE(例えば、8ビット)と、COUNTER(例えば、64ビット)とに分割されることが可能であり、INPUTビットの残りの部分は、0に設定されることが可能である。一般に知られているとおり、COUTER値は、INPUT値全体が、AESに対して決して繰り返されることがないことを保証するために、ある特定のTYPE値に関して、決して繰り返されてはならない。この場合も、「TYPE」を使用して、AESの使用を区別して、様々な擬似ランダムビットが作成される。第1の擬似ランダムビットを作成するのに、ある特定のストリームに関して、BYTE_NUMBERは、決して繰り返されないため、RLPストリームにおけるバイト番号が、COUNTER値として使用されることが可能である。したがって、鍵kおよび暗号同期値を使用して、128ビットの出力が作成されることが可能である。暗号同期値のサイズは、変えられることが可能であり、さらに、暗号同期値は、他の入力、例えば、flowID、リセットカウンタなどを含んでもよい。さらなる詳細は、後段で与えられる。
【0028】
次に、ステップS120で、送信側が、平文ブロックMからMに対して、第1の擬似ランダムビットAES(0,8000)−AES(0,8016)とのXOR演算(排他論理和演算)を実行して、図2に示されるとおり、暗号化された(暗号文)ブロックCからCを作成する。
【0029】
前段でRLPセグメントを暗号化するのにCTR(カウンタモード)暗号化が説明されたものの、他のよく知られた暗号化方法、例えば、OFB(出力フィードバック)モード、CFB(暗号フィードバック)モードなどが使用されてもよい。
【0030】
(メッセージ完全性)
アプリケーションパケット、より具体的には、RLPセグメントが暗号化されると、本発明の実施形態による完全性プロセスが、RLPセグメントに対して実行されて、アプリケーションパケットのための認証タグが生成されることが可能である。
【0031】
図3は、本発明の例示的な実施形態による完全性(認証)タグを作成することの流れ図を示す。図4Aは、このプロセスの図表による例を示す。簡明のため、暗号文ブロックという用語と、RLPセグメントという用語は、本開示全体にわたって互換的に使用される。
【0032】
図3を参照すると、ステップS200で、送信側が、第2の擬似ランダムビットAiを作成する。詳細には、この場合も、2つの引数(入力)、例えば、鍵kと、バイト番号に基づく暗号同期値とを用いるAES(高度暗号化標準)を使用して、第2の擬似ランダムビットAES(0,8000)−AES(0,8016)が、作成されることが可能である。図4Aにおいて、表示、すなわち、TYPE、「1」を使用して、第2の擬似ランダムビットが、他の擬似ランダムビット、例えば、第1の擬似ランダムビットと区別される。
【0033】
さらに詳細には、第2の擬似ランダムビットAES(0,8000)−AES(0,8016)は、以下のとおり書かれることが可能である。すなわち、
第2の擬似ランダムビット(OUTPUT)=AES(k,INPUT)
である。
【0034】
AESに対する暗号同期(cryptosync)値(INPUT)は、2つの部分、TYPE(例えば、8ビット)と、COUNTER(例えば、64ビット)とに分割されることが可能であり、INPUTビットの残りの部分は、0に設定されることが可能である。一般に知られているとおり、COUTER値は、INPUT値全体が、AESに対して決して繰り返されることがないことを保証するために、ある特定のTYPE値に関して、決して繰り返されてはならない。この場合も、「TYPE」を使用して、AESの使用を区別して、様々な擬似ランダムビットが作成される。第2の擬似ランダムビットを作成するのに、ある特定のストリームに関して、BYTE_NUMBERは、決して繰り返されないため、RLPストリームにおけるバイト番号が、COUNTER値として使用されることが可能である。
例えば、
OUTPUT[0]=AES(k,TYPE,0)は、128ビット長、つまり、16バイト長である。次に、OUTPUT[16]=AES(k,TYPE,16)もやはり、128ビット長であり、OUTPUT[32]=AES(k,TYPE,32)もやはり、128ビット長であるといった具合である。
【0035】
OUTPUTは、一度に32ビット長でラベルが付けられる。したがって、
A0=OUTPUT[0]の最初の4バイト
A1=OUTPUT[0]の第2番目の4バイト
A2=OUTPUT[0]の第3番目の4バイト
A3=OUTPUT[0]の最後の4バイト
A4=OUTPUT[16]の最初の4バイト
A5=OUTPUT[16]の第2番目の4バイト
A6=OUTPUT[16]の第3番目の4バイト
A7=OUTPUT[16]の最後の4バイト
A8=OUTPUT[32]の最初の4バイト
A9=OUTPUT[32]の第2番目4バイト
A10=OUTPUT[32]の第3番目4バイト
A11=OUTPUT[32]の最後の4バイト
である。
一般化すると、
【数1】

【0036】
したがって、鍵kおよび暗号同期値を使用して、128ビットの出力が作成されることが可能である。暗号同期値のサイズは、変えられることが可能であり、さらに、暗号同期値は、他の入力、例えば、flowID、リセットカウンタなどを含んでもよい。
【0037】
次に図3を参照すると、ステップS210で、図1のステップS120で作成された各暗号文ブロック(RLPセグメント)に、第2の擬似ランダムビットAiのそれぞれのビットが掛けられて、部分的タグが作成される。
【0038】
次にステップS220で、送信側は、RLPセグメントが最後のRLPセグメントであるかどうかを判定する。RLPセグメントのヘッダの中のフラグが、先頭のセグメント、中央のセグメント、または最後のセグメントを示すように設定されることが可能である。RLPセグメントが、最後のRLPセグメントではない場合、部分的タグ、例えば、32ビットの部分的タグは、ステップS230で、送信側におけるアキュムレータ(図示せず)に送られる。送信側は、ステップS240で、RLPセグメントを受信機に送信する。
【0039】
RLPセグメントが、最後のRLPセグメントである場合、ステップS235で、最後の部分的タグは、アキュムレータに送られる。最後の部分的タグをアキュムレータに送るプロセスは、最後でない部分的タグをアキュムレータに送るプロセスと同一である。図4Bに示されるとおり、最後の部分的タグが、アキュムレータに送られた後、ステップS245で、それらの部分的タグを足して、32ビットの蓄積されたタグを作成することによって、蓄積されたタグが形成される。理解されるとおり、部分的タグは、代わりに、各部分的タグが生成された後、部分的に蓄積されたタグに足されてもよい。次に、ステップS250で、送信側は、蓄積されたタグを、第3の擬似ランダムビットAES(2,LastByteNumber)のlsb(最下位ビット)とXOR演算することによって、蓄積されたタグを暗号化して、認証タグを作成する。第3の擬似ランダムビットの形成は、以上の説明から直ちに明らかであるため、簡明のために、第3の擬似ランダムビットを作成することの説明は、省略する。
【0040】
ステップS260で、RLPセグメント再送の場合、認証タグは、やはりメモリに送られる。ステップS270で、認証タグは、最後のRLPセグメントに付加されて、復号のために受信機に送信される。メモリは、RAM、あるいはCP(中央プロセッサ)によって制御される他の任意の記憶デバイスであることが可能であり、あるいはメモリデバイスは、ASIC(特定用途向け集積回路)の一部である、またはASICによって制御されることが可能である。アプリケーションパケットの最後のRLPパケットに関してだけ、認証タグは、格納される。
【0041】
図4の実施形態に対する多数の変形が、この実施形態によって与えられる全体的な教示を逸脱することなく、可能であることが認識されよう。例えば、ステップS210およびS220は、逆の順序で実行されてもよく、あるいは並行に実行されてもよい。別の例として、ステップS260およびS270は、並行に、かつ/または順次に実行されてもよい。
【0042】
(再送)
一般に知られているとおり、受信機は、送信側または送信機からの送信されたすべてのRLPセグメントを受信するわけではない可能性がある。受信機が、送信されたすべてのRLPセグメントを受信するわけではない可能性がある、多くの理由が存在する。簡明のため、RLPセグメントが失われる理由の詳細は、省略する。受信機が、すべてのRLPセグメントを受信するわけではない場合、受信されなかったRLPセグメントは、送信側によって再送される可能性がある。
【0043】
送信側における中央プロセッサが、送信および再送のためのハードウェアにRLPセグメントを送る際、中央プロセッサは、このRLPセグメントが再送であるかどうかを示すビットも送る。再送を要求するプロセスは、当技術分野でよく知られており、したがって、このプロセスの説明もやはり、簡明のために省略する。
【0044】
図5を参照すると、ステップS300で、送信側または送信機が、RLPセグメントの再送を求める要求を受信する。ステップS310で、送信側は、この再送要求が、アプリケーションパケットの最後のRLPセグメントに関するか、または最後ではないRLPセグメントに関するかを判定する。要求が、最後ではないRLPセグメントに関する場合、ステップS320で、そのRLPセグメントが暗号化されて、再送される。
【0045】
ステップS310で、要求が、アプリケーションパケットの最後のRLPセグメントを求めるものである場合、ステップS330で、CP/RAMの中に格納されていた、蓄積された認証タグが、暗号化され、最後のRLPセグメントに付加される。ステップS340で、この暗号化された最後のRLPセグメントが、暗号化された認証タグと一緒に、受信機に再送される。
【0046】
任意選択で、ステップS310とステップS330の間で、最後のRLPセグメントは、さらに再細分化されてもよい。例えば、送信機が、送信条件に基づいて、最後のRLPセグメント全体が、負荷を低減するように、より小さい断片にさらに分割されるべきであると決定することが可能である。これらの、より小さいセグメントのそれぞれは、異なるタイムスロット上で送信される。この場合、これらの、より小さい断片の最後の断片だけに、再送に先立って、暗号化された認証タグが付加される。
【0047】
(解読およびインライン完全性検査)
受信機が、認証タグを含め、すべてのRLPセグメントを適切に受信した場合、受信機は、これらのRLPセグメントを、これらのセグメントが暗号化されていた場合、解読し、さらに、完全性検査を実行しなければならない。
【0048】
図6は、本発明の例示的な実施形態による解読およびインライン完全性検査の方法を例示する流れ図を示す。この場合、「インライン」とは、完全性計算が、RLPセグメント全体を受信するのを待ってではなく、受信機によってRLPセグメントが受信されるにつれて、行われることを意味する。
【0049】
受信機においてすべてのRLPセグメントが受信された後、ステップS400で、第4の擬似ランダムビットが、作成される。図4のステップS200の場合と同様に、AESが、第4の擬似ランダムビットを作成するのに使用されることが可能である。第4の擬似ランダムビットの形成は、以上の説明から直ちに明らかであるため、簡明のために、第4の擬似ランダムビットを作成することの説明は、省略する。
【0050】
ステップS410で、受信されたRLPセグメントに関して部分的タグが作成される。これらの部分的タグは、32ビットの部分的タグであることが可能である。次にステップS420で、受信機が、RLPセグメントが最後のRLPセグメントであるかどうかを判定する。RLPセグメントが、最後のRLPセグメントではない場合、ステップS430で、このRLPセグメントが、解読され、さらに、部分的タグと一緒に、受信機のメモリに送られる。送信機と同様に、受信機のメモリは、RAM、あるいはCP(中央プロセッサ)によって制御される他の任意の記憶デバイスであることが可能であり、あるいはメモリデバイスは、ASIC(特定用途向け集積回路)の一部である、またはASICによって制御されることが可能である。図3および図4に関連して前述したステップとやはり同様に、この部分的タグ作成ステップと、RLPセグメントが最後のRLPセグメントであるかどうか判定するステップは、逆転されてもよい。解読方法は、当技術分野においてよく知られており、したがって、解読方法の説明は、簡明のため、省略する。
【0051】
ステップS420で、受信機が、RLPセグメントが最後のRLPセグメントであると判定した場合、ステップS440で、最後のRLPパケットが、解読される。やはりステップS440で、最後のRLPセグメントの部分的タグが、第5の擬似ランダムビットAES(2,LastByteNumber)のlsbとXOR演算され、ステップS270からの認証タグと一緒に、メモリに送られる。第5の擬似ランダムビットの作成の説明は、簡明のため、省略される。さらに、第4の擬似ランダムビット、および第5の擬似ランダムビットを作成する方法は、それぞれ、前述した第2の擬似ランダムビット、および第3の擬似ランダムビットを作成する方法と同一であることが、当業者には明白となろう。
【0052】
CP(中央プロセッサ)が、アプリケーションパケットを形成するように、すべてのRLPセグメントを組み立てる。また、CPは、ステップS430およびS440において受信されたすべての部分的タグを足す。ステップS450で、計算された部分的タグの合計が、受信された認証タグと等しい場合、そのアプリケーションパケットは、検証される。
【0053】
(ブロックサイズの非倍数)
前述した例示的な実施形態において、完全性方法、暗号化方法、および解読方法は、ブロックサイズ、例えば、32ビット(4バイト)の倍数であるRLPセグメントに関して説明された。つまり、RLPセグメントは、32ビットという標準のブロックサイズであった。以下の例示的な実施形態において、標準のブロックサイズではない、例えば、32ビットの倍数ではないRLPパケットが、説明される。簡明のため、標準のRLPセグメントブロックサイズと非標準のRLPセグメントブロックサイズの間で相違する態様(ステップ)だけが、説明される。
【0054】
アプリケーションパケットのRLPセグメントが、ブロックサイズの倍数でない、例えば、32ビットの倍数でないものと想定し、さらに、あるビットシーケンス番号を所与として、32ビットの倍数である先頭バイトを識別することが可能である。32ビットの倍数である先頭バイトが識別されると、汎用ハッシュが、この32ビット値に対して実行されることが可能である。
【0055】
理解されるとおり、この「32ビットの倍数」に先行するビット、および終端ビットが、適切に扱われなければならない。32ビットの倍数ではないRLPセグメントには、RLPセグメントの先頭に0が付加されることが可能であり、かつ/またはRLPセグメントの終端に0が付加されて、32ビットの暗号文ブロックCiを完成させることも可能である。例えば、32ビットの暗号文は、多項式tとして書かれることが可能である。すなわち、
i,a×t24+Ci,b×t16+Ci,c×t+Ci,d×t
したがって、A×Cは、以下のとおり書き換えられることが可能である。すなわち、
×Ci,a×t24+A×Ci,b×t16+A×Ci,c×t+A×Ci,d×t
加算および乗算は、ガロア体(232)に基づいて計算されることが可能であり、あるいは、例えば、32ビットより大きいモジュレータプライムに対して作用する他の体が、変更のために使用されることが可能である。完全な32ビットAiが、そのブロックCiに関連付けられることが可能である。
【0056】
詳細には、図7を参照して、第1のRLPセグメント(RLP1)が、RLPセグメント1が3つの追加のバイトで終わることを意味する、7バイト長であるものと想定されたい。次のセグメント、RLPセグメント2は、4バイトの倍数が始まる前に、残りのバイト(3バイト)を有する。32ビットCは、32ビット、Ci,a、Ci,b、Ci,c、およびCi,dから成る。したがって、Cの3バイトは、RLPセグメント1の一部であり、最後のバイトは、RLPセグメント2の一部である。さらに、32ビットのA2が、作成され、RLPセグメント1とRLPセグメント2の両方によって使用されて、部分的32ビットタグが作成される。このため、RLPセグメント1に関する32ビット部分的タグは、以下のとおり足され、
×Ci,a×t24+A×Ci,b×t16+A×Ci,c×t
さらに、RLPセグメント2に関する32ビット部分的タグは、以下のとおり足される、
×Ci,d×t
暗号化プロセスおよび部分的タグ作成プロセスの残りの部分は、前出の図1〜図4に関連して説明されるプロセスと同様である。さらに、前段で開示される認証タグ作成、RLPパケットの解読、RLPパケットの再送、および検証の方法は、同一である。図5〜図6、およびこれらの図の説明を参照されたい。
【0057】
(可変長アプリケーションパケット)
アプリケーションパケットは、様々なバイト長を有することも可能である。したがって、本発明の例示的な実施形態が、これらのアプリケーションパケットにどのように適用されることが可能であるかの説明が、次に与えられる。簡明のため、前述した例示的な実施形態と異なる態様だけが、説明される。
【0058】
アプリケーションパケットは、可変バイト長を有することが可能である。従来技術において、可変バイト長を有するアプリケーションパケットは、長さ(ブロック数)パラメータを、汎用ハッシュ計算の一部として、またはタグ暗号化への入力として含めることによって、扱われる可能性がある。例えば、パディングを使用して、最後の部分的に埋められたブロックが埋められることが可能である。しかし、この方法は、RLPセグメントが、乱れた順序で受信される場合、長さが分からないため、例示的な実施形態において使用され得ない。
【0059】
先頭バイトおよび最後のバイトのバイト番号が、バイト長値に取って代わるように使用されることが可能である。C0値が、先頭バイトの番号に設定されることが可能であり、このことは、以下のとおり、項に寄与することが可能である。すなわち、C0×A0。例えば、A0は、擬似ランダムの、事前計算された、固定の値であることが可能であり、あるいはA0は、例えば、擬似ランダムストリームAiにおいてA1に先行する32ビットの値であることが可能であり、C0は、アプリケーションパケットに先行する先頭ビットである。
【0060】
A0が、32ビット境界の倍数にはない、任意のC0(先頭バイト番号)に関する擬似ランダムストリームAiにおいてA1に先行する32ビットの値であるものと想定して、A0が、先頭バイト番号を含むブロックに先行する32ビット擬似ランダムブロックに設定される。また、RLPフローの最先頭、例えば、バイト0、1、2、および3に関して、先行するブロックが全く存在しないため、さらなるステップも要求される。例示として、A0が、第6の擬似ランダムビットAES(3,0)の最後のバイトであるように設定されることが可能であり、つまり、A0=AES(1,264−1)として設定されることが可能であり、AES(1,264−1)は、0 mod 264に先行する値である。RLPストリームが、264の32ビットブロックに達することは、事実上、不可能であることに留意されたい。したがって、AESに入力されるバイト番号全体は、64ビットであるものと想定される。したがって、部分的32ビットタグを作成するのに、C0が、先頭バイト番号(32ビット)であり、さらに、A0が、擬似ランダムストリームAiにおいてA1に先行する32ビットマスク、例えば、A0=先行するAES(1,...)出力ビットの最後の32ビットである。RLPフローの最先頭の4バイトに関するC0に関するA0は、特に、前述したとおり作成される。
【0061】
第7の擬似ランダムビットAES(2,LastByteNumber)を使用して、暗号化されたタグ(認証タグ)を作成する際、異なるバイト番号で終わるアプリケーションパケットは、異なる暗号化タグを有する。やはり、第7の擬似ランダムビットを作成する方法は、前述した、第3の擬似ランダムビット、および第5の擬似ランダムビットを作成する方法と同一であることが可能である。タグを暗号化するのに、128ビットのブロック番号は、使用されず、AES入力として正確な最後のバイト番号が、使用されることが可能である。異なる2つのメッセージ、例えば、32ビット長のメッセージMの倍数、およびメッセージMと、その後に続く0のバイトが、同一のタグを作成する可能性がある。しかし、各メッセージは、ランダムなストリングが、各メッセージに関して追加されるため、異なる仕方で暗号化される。
【0062】
32ビットの非倍数で始まり、32ビットの非倍数で終わるが、同一のアプリケーションパケットに属するRLPセグメントに関して、Aiは、RLPセグメントの先頭バイトにおいて、さらに、次のRLPセグメントの先頭バイトにおいても、再使用されることが可能である。図8を参照して、32ビットの非倍数で終わるアプリケーションパケットと、32ビットの非倍数で始まる次のアプリケーションパケットとが、説明される。
【0063】
RLPパケットは、4バイトCiを完成させるように0で満たされることが可能である。この場合、Aiは、両方のアプリケーションパケットに関して再使用されることが可能である。つまり、Aiは、第1のアプリケーションパケットの終端で使用され、第2のアプリケーションパケットの先頭で再び使用される。
【0064】
第2のアプリケーションパケットの先頭バイトは、現在のiに基づいて、4バイトAiを使用しつづけ、ただし、iは、(LastByteNumber/4)に等しい。第1のアプリケーションパケットの終端バイト、例えば、4X+1バイト、4X+2バイト、または4X+3バイトに関して、最後のバイトに関連する32ビットAi、すなわち、(LastByteNumber/4)に等しいiが、使用される。
【0065】
本発明の例示的な実施形態は、アプリケーションパケット全体を再組み立てするのを待つ必要なしに、データが受信されるにつれて、メッセージ認証タグ検証を「オンザフライ」で可能にする。これらの例示的な実施形態は、バイトレベルの暗号化処理および認証処理、ならびにアウトオブオーダー処理を可能にする。
【0066】
本発明の例示的な実施形態が、このように説明されたので、これらの実施形態が、多くの仕方で変更されることが可能であることが明白となろう。そのような変形形態は、本発明からの逸脱と見なされるべきではなく、そのようなすべての修正形態は、本発明の範囲に含められるべきものとする。

【特許請求の範囲】
【請求項1】
送信のためのアプリケーションパケットを処理するための方法であって、
アプリケーションパケットを複数のセグメントに分割し、
第1の擬似ランダムビットを作成し、
複数のセグメントのそれぞれと、複数のセグメントのそれぞれに関連する第1の擬似ランダムビットの諸部分とに基づいて、部分的タグを生成し、
アプリケーションパケットの最後のセグメントに関連する最後の部分的タグを含め、部分的タグを組み合わせて、蓄積されたタグを作成し、
蓄積されたタグと、第2の擬似ランダムビットとに基づいて、認証タグを生成し、
認証タグを格納し、および
認証タグを含む複数のセグメントを送信することを含む、方法。
【請求項2】
認証タグを生成することが、蓄積されたタグと、第2の擬似ランダムビットに対して排他論理和演算を実行することを含む、請求項1に記載の方法。
【請求項3】
第2の擬似ランダムビットが、第2の擬似ランダムビットのlsb(最下位ビット)である、請求項2に記載の方法。
【請求項4】
複数のセグメントに対して、第3の擬似ランダムビットのそれぞれの部分との排他論理和演算を実行することによって、複数のセグメントを暗号化して、暗号文ブロックを作成することをさらに含む、請求項1に記載の方法。
【請求項5】
第1の擬似ランダムビット、第2の擬似ランダムビット、および第3の擬似ランダムビットが、鍵kと、暗号同期値とを用いるAES(高度暗号化標準)を使用して作成される、請求項4に記載の方法。
【請求項6】
部分的タグの生成が、アプリケーションパケットの先頭バイト番号に、鍵kと、そのアプリケーションパケットに先行するバイト番号である暗号同期値とを用いるAESを使用して作成された第4の擬似ランダムビットを掛けることを含む、請求項5に記載の方法。
【請求項7】
複数のセグメントの最後のセグメントの再送を求める要求を受信し、
複数のセグメントの最後のセグメントに、格納された認証タグを付加し、および
最後のセグメントと、認証タグとを再送することをさらに含む、請求項1に記載の方法。
【請求項8】
最後のセグメントを複数の断片に再細分化することをさらに含み、再送することが、複数の断片と、認証タグとを送信する、請求項7に記載の方法。
【請求項9】
複数のセグメントのそれぞれが、ブロックサイズの倍数である、請求項1に記載の方法。
【請求項10】
複数のセグメントが、ブロックサイズの倍数ではない場合、
ブロックサイズの倍数であるセグメントを識別し、および
ブロックサイズセグメントの倍数の先頭に0を予め付加することと、ブロックサイズセグメントの倍数の終端に0を付加することの少なくとも1つを実行することをさらに含む、請求項1に記載の方法。
【請求項11】
受信されたアプリケーションパケットセグメントを処理する方法であって、
認証タグを含むアプリケーションパケットの複数のセグメントを受信し、
第1の擬似ランダムビットを作成し、
受信された複数のセグメントのそれぞれと、受信された複数のセグメントのそれぞれに関連する第1の擬似ランダムビットの諸部分とに基づいて、部分的タグを生成し、
部分的タグ、受信された複数のセグメント、および受信された認証タグをメモリの中に格納し、
受信された複数のセグメントを組み合わせて、アプリケーションパケットを作成し、
部分的タグを組み合わせて、計算されたタグを作成し、および
計算されたタグと、受信された認証タグとに基づいて、アプリケーションパケットの真正性を検証することを含む、方法。
【請求項12】
第1の擬似ランダムビットが、鍵kと、暗号同期値とを用いるAES(高度暗号化標準)を使用して作成される、請求項11に記載の方法。
【請求項13】
複数のセグメントの受信された最後のセグメントに関する最後の部分的タグを作成し、および
最後の部分的タグに対して、第2の擬似ランダムビットのlsb(最下位ビット)との排他論理和演算を実行することをさらに含む、請求項11に記載の方法。
【請求項14】
第2の擬似ランダムビットが、鍵kと、暗号同期値とを用いるAES(高度暗号化標準)を使用して作成される、請求項13に記載の方法。
【請求項15】
複数のセグメントの最後のセグメントの再送を受信し、
複数のセグメントの受信された最後のセグメントに関する最後の部分的タグを作成し、および
最後の部分的タグに対して、第2の擬似ランダムビットのlsb(最下位ビット)との排他論理和演算を実行することをさらに含む、請求項11に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2010−507982(P2010−507982A)
【公表日】平成22年3月11日(2010.3.11)
【国際特許分類】
【出願番号】特願2009−534610(P2009−534610)
【出願日】平成19年10月22日(2007.10.22)
【国際出願番号】PCT/US2007/022409
【国際公開番号】WO2008/108828
【国際公開日】平成20年9月12日(2008.9.12)
【出願人】(596092698)アルカテル−ルーセント ユーエスエー インコーポレーテッド (965)
【Fターム(参考)】