JP4020197B2 - Efficient packet encryption method - Google Patents

Efficient packet encryption method Download PDF

Info

Publication number
JP4020197B2
JP4020197B2 JP2002382422A JP2002382422A JP4020197B2 JP 4020197 B2 JP4020197 B2 JP 4020197B2 JP 2002382422 A JP2002382422 A JP 2002382422A JP 2002382422 A JP2002382422 A JP 2002382422A JP 4020197 B2 JP4020197 B2 JP 4020197B2
Authority
JP
Japan
Prior art keywords
processor
variable
byte
vector
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002382422A
Other languages
Japanese (ja)
Other versions
JP2003234732A (en
JP2003234732A5 (en
Inventor
ガースティン マーク
アール. ギルマン ロバート
エル. ロビンソン リチャード
シディクイ アンワー
ウツケ マーク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avaya Technology LLC
Original Assignee
Avaya Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Avaya Technology LLC filed Critical Avaya Technology LLC
Publication of JP2003234732A publication Critical patent/JP2003234732A/en
Publication of JP2003234732A5 publication Critical patent/JP2003234732A5/ja
Application granted granted Critical
Publication of JP4020197B2 publication Critical patent/JP4020197B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

Description

【0001】
【発明の属する技術分野】
(発明の分野)
本発明は、電気通信伝送、特に、伝送中に紛失および/または順序が狂って送達されるパケットのストリームに関する演算処理が効率的なパケット暗号化方法に関する。
【0002】
【従来の技術】
(問題)
パケット伝送の分野において、暗号化セキュリティを高めて、伝送されたパケットを、承認されないデバイスが傍受および復号化することを防ぎ、他方、平文を暗号化および復号化する演算処理時間を増加させないパケット暗号化方法を提供することが問題である。パケット伝送の分野における第2の問題は、パケットのシーケンスを宛先で組立て直し、他方、パケットストリームを復号化および組立て直すために受信器が過度の時間を要求しないパケット暗号化方法を提供することである。第3の問題は、紛失または順序が狂ったパケットが存在する状態において、受信されたパケットの復号化を同期化することである。
【0003】
有線または無線の両方のパケット交換において、平文のパケットは、ネットワークを介してソースから宛先へ送信される。パケットは、パケットアセンブラ/ディスアセンブラによって、平文の個々のパケットに組立てられ、および組立て直される。各パケットは、一意に定まる識別番号、すなわちシーケンスナンバーを有し、各パケットは、3つの基本要素、すなわち、ヘッダ、ペイロード、および任意にトレイラを含む。ヘッダは、シーケンスナンバー、同期ビット、宛先アドレス、ソースアドレス、パケット長さといった制御情報(control information)を含む。ペイロードは、伝送される平文であり、トレイラはパケットフラグの端ならびに誤り検出ビットおよび誤り訂正ビットを含む。
【0004】
パケット交換ネットワーク上で伝送するために、媒体ストリームは「パケット」に分解される。各パケットは、ネットワークを介して、利用可能なノードを通って宛先に移動し、帯域幅が伝送のために利用可能になると、ノードからノードへ伝送される。宛先ノードにおいて、パケットを元の連続するストリームに分解する試みがなされる。パケットは、異なったルートをたどるネットワーク該Sベクトル内の該次の連続的暗号化バイトEを介して移動するので、宛先において、順序が狂った状態で到着することがよくある。他のパケットは、ネットワーク内で紛失され得る。紛失したパケットおよび/または順序が狂った状態で受信されるパケットの伝送し直しをリクエストし、パケットを元の連続するメッセージに分解するために、宛先において、さらなる処理時間が要求される。
【0005】
パケット伝送の分野において、2つの暗号化方法、すなわち、RC4およびWEP(Wired Equivalency Privacy)が一般的に用いられる。RC4は、CDPD(Cellular Degital Packet Data)で支援される暗号化方法であり、WEPは、IEEE802.11標準規格により支援される暗号化方法である。電気電子技術者協会(IEEE)は、ローカルエリアネットワーク(LAN)で用いられるもの、802シリーズの標準規格を含む、多くの電気通信および演算処理の標準規格化を担う団体である。IEEE802パート11b(802.11b)は、普通、LANの構築において益々一般的になる無線のために用いられる。
【0006】
WEPおよびRC4は、「ストリーム型」暗号であり、ソースにおいて、ランダムな暗号化バイトの文字列を生成し、これらの文字列の全ては平文バイトと論理和をとり、暗号文を形成する。逆に、暗号文は、同じ暗号化ストリームと排他的論理和をとり得、宛先で平文を復元(restore)する。
【0007】
【発明が解決しようとする課題】
(RC4暗号化方法)
RC4は、単一ストリーム生成器、非常に長いストリームの生成器として開始から終了まで動作する。RC4は、暗号化方法内でパケットシーケンスナンバーを用いない。その代わりに、ペイロード平文の次のバイトのシーケンスが用いられる。換言すると、各バイトの暗号化/復号化は、ストリーム全体の中のバイトの位置に依存する。RC4は、256バイトまでの鍵を用いて、256バイトのSベクトルを生成する。このSベクトルは、ペイロード平文の各連続的なバイトを逐次的に暗号化する。Sベクトルアルゴリズムは、2つの変数を用い、Sベクトルは、各バイトが暗号化された後に並べ換えられ、従って、各暗号化ストリームの値は、すでに暗号化または復号化されたペイロードバイトの数に依存する。従って、Sベクトルは、時間の経過とともに進化し、RC4を再同期化することを非実用的にする。
【0008】
ペイロード平文のバイトの全てが暗号化されると、暗号文は、パケットに組立てられ、ヘッダおよびトレイラは、伝送用に各パケットに付加される。問題は、データのパケットが伝送中に紛失されるときに起こる。宛先は、パケットが紛失されたこと(まだ受信されていないこと)を知る。なぜなら、各ヘッダはシーケンスナンバーを含むからである。第2のパケットが宛先に到着しない場合、この宛先は、第1のパケット内のペイロード暗号文のバイトを復号化することができる。しかしながら、宛先は、受信された第3のパケットを復号化し得ない。なぜなら、宛先は、行方不明の第2のパケットでどれだけのペイロード暗号文のバイトが伝送されたかを知らないからである。従って、宛先は、受信されないすべてのパケットの再伝送をリクエストすることを要求する。これは、リアルタイムの媒体ストリームにとって実用的でない。平文の全てのバイトは、逐次的に暗号文に変換されたので、暗号文のバイトは、復号化と同じ順序で処理されなければならない。
【0009】
上述のRC4暗号化方法は、パケットが伝送中に回復不可能に紛失された場合、すぐ次の受信されたパケットを復号化する方法を提供することができない。
【0010】
(Wired Equivalency Privacy(WEP)法)
IEEE802.11bは、Wired Equivalency Privacy(WEP)法を用いる。RC4とWEPとの類似性は、WEPが、各パケットが鍵の1部としてシーケンスナンバーを用いる方法を再初期化することによりRC4を用いることである。WEP暗号化方法は、新しい鍵を用いて新しいSベクトルを入力し直す(rekeying)(新しい鍵を選択する)ことにより再初期化される。
【0011】
RC4を用いて生成された問題を解決するために、WEPはRC4を用いるが、その際、WEPが、各パケットについて、同様にインクリメントされたSベクトルを用いるのに対して、RC4は、ぺイロードの各バイトについて、インクリメントされたSベクトルを用いるという例外を伴う。各パケットについて新しいSベクトルを生成することによって、宛先は、受信された任意の順序で、およびパケットが紛失した状態の下で、各パケットを復号化することができる。換言すると、WEPは、1つのパケットの開始から終了まで動作し、これに対して、RC4は、各ぺイロードストリームのために伝送されたパケットの数に関係なく、各ペイロードストリームについて開始から終了まで動作する。これは、音声通信などの小さいパケットに対してWEPを非効率にする。なぜなら、新しいSベクトルは各パケットごとに計算される必要があるからである。
【0012】
紛失したパケットが宛先における復号化を妨げる問題が解決される一方で、各パケットごとに方法を入力し直しかつ再初期化する工程は、計算量が多く、安全でないことが示された。WEPには安全上の欠点があることが示されている。Stubblefieldらによる「Using the Fluhrer,Martin,and Shamir attack to break WEP」http://www.cs.rice.edu/〜astubble/wep/wep attack.html
および「Weaknesses in the Key SchedulingMethod of RC4」
http://www.eyetap.org/〜rguerra/toronto2001/rc4_ksaproc.pdf
を参照されたい。いくつかのPCカードは、初期化される毎に、パケットシーケンスナンバーをゼロにリセットし、その後、使用毎に1度ずつインクリメントする。この方法は処理時間を低減するが、他方、この方法は、鍵ストリームが再利用される高い尤度をもたらし、暗号文に対する単純な暗号解析攻撃およびメッセージトラフィックの復号に至る。ハッカーが1つのパケットの暗号コードを破ることができた場合、ハッカーは、すべてのパケットを復号化し得る。WEPの別の問題は、WEPの計算量が多いことである。Sベクトルループは、(256バイトのベクトルに対して)256のステップを要求し、各パケットについてSベクトルが計算し直される。
【0013】
RC4は、ペイロード平文ストリームにおける各バイトのSベクトルをインクリメントし、パケットがネットワーク内で紛失したときにすぐに回復できないという犠牲のもとに、RC4暗号化方法の計算量を少なくする。WEPは、計算量が多い、あまり安全でない暗号化方法を提供することにより問題を解決し、従って、平文ストリームを暗号化および暗号文ストリームを復号化するために必要とされるオーバーヘッドタイムを増加させる。
【0014】
上述の暗号化方法は、ペイロード平文のストリームを効率的に暗号化する方法を提供することはできないが、他方、パケットが伝送中に紛失した場合、受信されたパケットを復号化することを可能にする。
【0015】
この理由によって、ペイロード平文を暗号化するため、およびペイロード暗号文を復号化するために必要とされる時間を増加させず、パケットの紛失またはパケット(単数または複数)が順序が狂って到着した後にそれを回復する能力を有する、効率的なパケット暗号化方法が必要である。
【0016】
本発明は、上記事情に鑑みてなされたものであり、平文データの連続的パケットを暗号化および復号化する計算時間を低減し、パケットの紛失またはパケットが順序が狂って到着した後でも、回復する能力を有する、効率的なパケット暗号化方法を提供することを目的とする。
【0017】
【課題を解決するための手段】
(解決)
本効率的なパケット暗号化方法は、上に概要が説明された問題を克服し、各パケットについてSベクトルを計算し直さない方法を提供することによって技術を進歩させ、従って、ペイロード平文を暗号化およびペイロード暗号文を復号化するために要求される時間を低減する。本効率的なパケット暗号化方法は、さらに、パケットが紛失または順序が狂うという問題を克服する。これは、パケットシーケンスナンバーを利用して、暗号化方法内で2つの変数を初期化する方法を提供することによって行なわれる。第3および第4の変数は、計算の中に注入され、暗号化計算内で用いられる値の予測可能性を最小化し、暗号化ストリームが反復する頻度を低減する。
【0018】
本効率的なパケット暗号化方法は、標準RC4方法を利用し、秘密鍵を用いて初期Sベクトルを生成する。各連続的なパケットについて新しいSベクトルを生成するWEPと異なって、Sベクトルは、平文ストリーム全体を暗号化するために一度生成され、従って、各すぐ次のパケットについて新しいSベクトルを生成するために必要な時間を削除する。
【0019】
本発明の効率的なパケット暗号化方法は、平文の少なくとも1つのバイトを暗号化して、暗号文の少なくとも1つのバイトを生成する方法であって、該方法は、秘密鍵を選択して、標準暗号化方法に従ってSベクトルを生成する工程と、シーケンスナンバーをセットする工程であって、該シーケンスナンバーは、第1の部分と第2の部分とを有する、工程と、該シーケンスナンバーの第1の部分として第1の変数をセットする工程と、該シーケンスナンバーの該第2の部分として第2の変数をセットする工程と、バイトシーケンスナンバーをセットする工程と、該第2の変数と該バイトシーケンスナンバーとの合計として第3の変数を計算する工程と、該バイトシーケンスナンバーを1つずつインクリメントする工程と、該第1の変数に、該第3の変数により示されるSベクトル内の値を加算することにより、第4の変数を計算する工程と、暗号化バイトを特定する工程であって、該Sベクトル内の該暗号化バイトの位置は、該第3の変数と該第4の変数によって示される該Sベクトル内の値との合計によって示される、工程と、該暗号化バイトは、平文の少なくとも1つのバイトと排他的論理和をとり、暗号文の少なくとも1つのバイトを生成する工程とを包含する。
【0020】
上記本発明の方法において、第2の変数をセットする工程は、前記シーケンスナンバーの前記第2の部分と、前記第1の変数により示される前記Sベクトル内の前記値とが排他的論理和をとる工程をさらに包含することが好ましい。
【0021】
上記本発明の方法において、第4の変数を計算する工程は、カウンタの値をセットする工程と、前記第1の変数に、前記第3の変数と前記カウンタにより示される前記Sベクトル内の前記値とによって示される該Sベクトル内の値を加算する工程とをさらに包含することが好ましい。
【0022】
また、本発明の方法は、平文の1つ以上のパケットを暗号化する方法であって、平文の該1つ以上のパケットは、平文の複数のバイトを有し、該方法は、秘密鍵を取得する工程と、該秘密鍵を用いてSベクトルを生成する工程と、平文の各連続的な1つ以上のパケットについて、第1の部分および第2の部分を有するシーケンスナンバーを取得する工程と、該シーケンスナンバーの該第1の部分を用いて、第1の変数をセットする工程と、該シーケンスナンバーの該第2の部分を用いて、第2の変数をセットする工程と、ゼロと等しいバイトシーケンスナンバーをセットする工程と、平文の複数のバイトの各次のバイトについて、次の暗号化バイトを計算する工程であって、該計算する工程は、該第2の変数を該バイトシーケンスナンバーに加算して第3の変数を生成する工程と、該第1の変数を、該第3の変数により示される該Sベクトル内の値に加算することにより第4の変数を計算する工程と、該第3の変数により示される該Sベクトル内の値を、ポインタを計算して該次の暗号化バイトを特定する該第4の変数に加算することにより該Sベクトル内の次の暗号化バイトを特定する工程とを包含する、計算工程と、該第2の変数と該第3の変数を等しくセットする工程と、該バイトシーケンスナンバーを1つずつインクリメントする工程とを包含する。
【0023】
上記本発明の方法において、第2の変数を計算する工程は、前記シーケンスナンバーの前記第2の部分が前記第1の変数により示される前記Sベクトル内の値と排他的論理和をとる工程を包含することが好ましい。
【0024】
上記本発明の方法において、送信器において、各次の暗号化されたバイトについて、前記次の暗号化バイトが平文の該複数のバイトの前記次のバイトと排他的論理和をとることによって、次の暗号文バイトを計算する工程をさらに包含することが好ましい。
【0025】
上記本発明の方法において、受信器において、各次の暗号化バイトについて、前記次の暗号化バイトが、平文の各1つ以上のパケット内の前記次の暗号文と排他的論理和をとることによって、受信された次の平文バイトを計算する工程をさらに包含することが好ましい。
【0026】
上記本発明の方法において、第4の変数を計算する工程は、カウンタをセットする工程と、前記第1の変数を、前記第3の変数と該カウンタとによって示される前記Sベクトル内の値に加算することによって、該第4の変数を計算する工程と、平文の各次の1つ以上のパケットについて、予め決定されたスケジュールにより、該カウンタの値をインクリメントする工程とをさらに包含することが好ましい。
【0027】
上記本発明の方法において、カウンタをセットする工程は、平文の1つ以上のパケットのうちの第1のパケットについて、ロールオーバカウンタをゼロにリセットする工程と、平文の各次の1つ以上のパケットについて、前記シーケンスナンバーをインクリメントすることが該シーケンスナンバーの値を1からすべて0に変換させる場合、該ロールオーバカウンタをインクリメントする工程をさらに包含することが好ましい。
【0028】
上記本発明の方法において、平文の前記複数のバイトの各次のバイトについて、前記Sベクトルを並べ替える工程であって、前記Sベクトルのコピーを保存する工程と、前記第3の変数、および前記第4の変数により示される該Sベクトル内の値により示される該Sベクトル内の値を入れ替える工程であって、該Sベクトル内の該値は、前記次の暗号化バイトが特定された後に入れ替えられる、工程と、平文の各次の1つ以上のパケットについて、保存された該Sベクトルを復元する工程とをさらに包含することが好ましい。
【0029】
また、本発明の方法は、平文Pの複数のバイトを有する1つ以上のパケットを、複数の暗号文バイトCを有する1つ以上のパケットに変換する方法であって、該方法は、秘密鍵を取得する工程と、該秘密鍵を用いて、複数のSベクトルバイトを有するSベクトルを計算する工程と、第1の部分と第2の部分とを有するシーケンスナンバーをランダムにセットする工程と、各連続的な1つ以上のパケットについて、該シーケンスナンバーをインクリメントする工程と、j=該シーケンスナンバーの第1の部分により、第1の変数jをセットする工程と、i=該シーケンスナンバーの第2の部分により、第2の変数iを計算する工程と、平文Pの該複数のバイトの各連続的バイトについて、次の連続的暗号文バイトCを計算する工程であって、該計算する工程は、j=j+S[i]により、該第1の変数をさらに計算する工程と、第3の変数kをセットする工程と、i=i+kにより、該第2の変数iをさらに計算する工程と、E=S[S[i]+S[j]]により、該Sベクトル内の該次の連続的暗号化バイトEを特定する工程と、該次の連続的暗号化バイトEを、C=E+Pにより、次の連続的暗号文バイトCに変換する工程とを包含する工程と、平文Pの該複数のバイトの最後のバイトが該1つ以上のパケットの該次のパケットについて暗号文バイトCに変換された場合、該1つ以上のパケットの該次の連続的パケットを受信器に伝送する工程とを包含する。
【0030】
上記本発明の方法において、第2の変数を計算する工程は、下位シーケンスナンバー、および第1の変数により示される前記Sベクトル内の値が、i=(該シーケンスナンバーの下位)+S[j]により、排他的論理和を取る工程をさらに包含することが好ましい。
【0031】
上記本発明の方法において、前記第1の変数jをさらに計算する工程は、
カウンタrをセットする工程と、j=j+S[i]+S[r]により、該第1の変数jをさらに計算する工程と、1つ以上のパケットの各連続的パケットに関して、該カウンタrの値をインプリメントする工程とをさらに包含することが好ましい。
【0032】
上記本発明の方法において、次の連続的暗号化バイトEを計算する工程は、前記Sベクトルを並べ替える工程であって、該Sベクトルのコピーを保存する工程と、前記第1の変数jにより示される複数のSベクトルのバイトと、前記第2の変数iにより示される複数のSベクトルのバイトとを入れ替える工程とを包含する、工程と、平文Pの複数のバイトの最後のバイトが、次の1つ以上のパケットについて、複数の暗号文バイトCに変換される場合、該保存されたSベクトルを復元する工程とをさらに包含することが好ましい。
【0033】
また、本発明の方法は、平文Pの複数のバイトを有する1つ以上のパケットを、複数の暗号文バイトCを有する1つ以上のパケットに変換する方法であって、該方法は、秘密鍵を取得する工程と、該秘密鍵を用いて、複数のSベクトルバイトを有するSベクトルを計算する工程と、高位または下位を有するシーケンスナンバーをランダムにセットする工程と、各連続的な1つ以上のパケットに関して、該シーケンスナンバーをインクリメントする工程と平文Pの該複数のバイトの各連続的バイトについて、次の連続する暗号化バイトEを計算する工程であって、j=該シーケンスナンバーの高位により、第1の変数jをセットする工程と、i=(シーケンスナンバーの下位)+S[j]により、第2の変数iを計算する工程と、カウンタrをセットする工程と、j=j+S[i]+S[r]により、該第1の変数をさらに計算する工程と、第3の変数kをセットする工程と、i=i+kにより、該第2の変数iをインクリメントする工程と、E=S[S[i]+S[j]]により、該Sベクトル内の該次の連続的暗号化バイトEを特定する工程とを包含する工程と、該次の連続的暗号化バイトEを、C=E+Pにより、次の連続的暗号文バイトCに変換する工程と、平文Pの該複数のバイトの最後のバイトが、1つ以上のパケットの次のパケットに関して、暗号文バイトCに変換された場合、該1つ以上のパケットの該次の連続的パケットを受信器に伝送する工程と、を包含する。
【0034】
(変数計算)
2つの変数iおよびjは、パケット内の平文の各バイトと排他的論理和をとる暗号化ストリームを生成するために用いられる。変数iおよびjの新しい値は、パケット内の連続的な平文バイトについて計算される。変数iおよびjが最初にゼロにセットされ、ペイロードにおけるすぐ次の平文バイトに関してインクリメントされるRC4と異なって、初期Sベクトルが生成された後、第1のパケットに対して開始シーケンスナンバーが生成される。シーケンスナンバーの第1の部分は、変数jを表し、シーケンスナンバーの第2の部分は変数iを計算するために用いられる。
【0035】
1実施形態において、変数iは、シーケンスナンバーの第2の部分がS[j]の値と排他的論理和をとることによって計算される。ここで、S[j]はSベクトルから導き出される。第3の変数S[j]を変数iの開始値の計算工程に注入することは、従って、本効率的なパケット暗号化方法は、公知の平文攻撃に対してより安全であるようにする。変数iおよびjの新しい開始値は、各すぐ次のパケットについて計算される。シーケンスナンバーを用いて、暗号化ストリームを生成することは、パケットが受信される順序に関係なく、宛先においてパケットを解読する方法を提供する。これは、さらに、パケットが紛失された後、受信されたすぐ次のパケットを解読する方法を提供し、従って、平文の連続的パケットを暗号化、伝送および解読する時間を低減する。
【0036】
(連続的暗号化および暗号文バイトの計算)
パケット内の次の連続的バイトが暗号化されていな場合、変数iおよびjは、パケット内の各連続的バイトについて計算し直される。第2の変数iは、前の繰返しからの第2の変数iと、第4の変数kとの合計として計算し直される。ここで、kはパケットペイロード内のバイトシーケンスナンバーである。各パケットの開始において、kはリセットされ、kはパケット内の平文の各連続的バイトについてインクリメントされる。第4の変数kは、第2の変数iを計算するために用いられ、本効率的なパケット暗号化方法が、平文の大きいペイロードを暗号化するために利用されるとき、異なったパケット内で同じ暗号化ストリームの部分が利用される可能性を低減する。第1の変数jは、前の繰返しに第3の変数S[i]およびs[j]をそれぞれ加えることによって、第1の変数の合計として計算し直される。ここで、S[i]およびs[j]はSベクトルから導き出される。
【0037】
S[r]を暗号化方法に注入することは、暗号化ストリームを生成し、ここで、暗号化ストリームは、パケットの長いシーケンスにわたって反復しない。S[r]を含むことなく、暗号化ストリームは、1秒毎に100個のパケットでほぼ11分毎に反復する。S[r]を計算の中に注入することは、暗号化ストリームを生成し、この暗号化ストリームは、46時間毎に反復し、従って、本効率的なパケット暗号化方法をより安全にする。
【0038】
別の実施形態において、Sベクトルは、各連続的パケットが暗号化される間に並べ替えられる。この実施形態において、Sベクトルが最初に計算され、Sベクトルのコピーが保存される。暗号化された平文の各連続的バイトに関して、第1の変数jおよび第2の変数iにより示されるSベクトル内の値が入れ替えられる。
平文の各連続的バイトについて、Sベクトル内の値を入れ替えることによって、Sベクトルは、時間の経過とともに並べ替えられ、従って、長い平文ペイロードのために生成された暗号化ストリームは、パケット内で反復する確率が低い。パケット内の平文のすべてのバイトが暗号化されている場合、初期Sベクトルは、次のパケットの暗号化および復号化に用いるために復元される。
【0039】
(第1の暗号化および暗号文バイトの計算)
暗号化ストリームの第1のバイトは、式E=[S[i]+S[j]]を用いてSベクトルから導き出される。S[i]とS[j]との合計によって示されるSベクトル内の位置は、暗号化ストリームの次のバイトを含む。送信器において、暗号ストリームの次のバイトを計算するために、暗号化ストリームの次のバイトが用いられる。暗号化ストリームにおける次のバイトは、パケットペイロードにおける次の平文バイトと排他的論理和(XOR)をとる。
【0040】
受信器において、受信された次の暗号文バイトは、次に受信された暗号文バイトが次に計算された暗号文バイトと排他的論理和をとることによって復号化され、次の平文バイトを回復する。本効率的なパケット暗号化方法における次のステップは、第1のパケットペイロードにおける最後の平文が暗号化されているかどうかを決定することである。
【0041】
次のパケット内のすべての連続する平文バイトが暗号化されていると、パケットシーケンスナンバーはインクリメントされ、方法は出発点に戻り、次の連続的パケットシーケンスナンバーから変数iおよびjについての新しい値を計算する。最初に生成されたSベクトルは、すべての連続的パケットのために用いられる。
【0042】
本効率的なパケット暗号化方法の第1の利点は、パケット毎の処理時間が低減されることである。連続的パケットに同じSベクトルを用いることは、平文ストリームを暗号化または暗号文ストリームを復号化するパケット毎の処理時間を低減し、本効率的なパケット暗号化方法を、上述のWEP方法等の従来の暗号化方法よりも効率的にする。本効率的なパケット暗号化方法の第2の利点は、この方法がWEPを安全でなくする同じ攻撃を受けないことである。
【0043】
本効率的なパケット暗号化方法の第3の利点は、この方法が、パケットが紛失および/または狂った順序で受信される状態において、容易に再同期化するように設計されることである。本効率的なパケット暗号化方法は、各パケットシーケンスナンバーを用いて、変数iおよびjの初期値を選択し、連続的パケットのパケットシーケンスナンバーをインクリメントする。RC4は、シーケンスナンバーを用いず、従って、受信器は、暗号ストリームの最初からバイトをカウントしなければならない。
【0044】
シーケンスナンバーを用いて変数iおよび変数jを初期化することは、次の値を予測可能にする。変数iの初期値の計算が、変数iおよびjの値を決定する予測可能性を排除するとき、第3の変数S[j]を注入することは、本効率的なパケット暗号化方法をより安全にする。S[r]を計算の中に注入することは、パケット暗号化ストリームが、頻繁に反復しない暗号化ストリームを生成し、ハッカーに対するさらなる保護を提供する。同様に、バイトシーケンスナンバーkは、暗号化ストリームの断片が長いシーケンスにわたるどこかで反復する尤度を低減するために注入される。
【0045】
(詳細な説明)
上述の、および記載された請求項により定義された効率的パケット暗号化方法は、添付の図面と関連付けて読まれるべきである以下の詳細な説明を参照することによって、より良好に理解され得る。好適な実施形態の本詳細な説明は、記載された請求項を限定することを意図しないが、その特定の例示として利用される。さらに、本明細書中に用いられる語法および用語は、説明する目的で用いられ、限定する目的で用いられるのではない。
【0046】
有線および無線の両方のパケット交換において、ペイロード平文のパケットは、ネットワークを介してソースから宛先に伝送される。パケットは、パケット組立て器/分解器(Packet Assembler/Disassembler)により、ペイロードデータの個々のパケットに組立ておよび分解される。各パケットは、一意に定まる識別番号、すなわちシーケンスナンバーを有し、各パケットは、3つの基本要素、すなわち、ヘッダ、ペイロード、および任意にトレイラを含む。ヘッダは、シーケンスナンバー、同期ビット、宛先アドレス、ソースアドレス、パケット長さといった制御情報(control information)を含む。ペイロードは、伝送される平文であり、トレイラはパケットフラグの端ならびに誤り検出ビットおよび誤り訂正ビットを含む。
【0047】
【発明の実施の形態】
(パケット交換−図1)
図1を参照して、パケット交換ネットワーク100上での伝送のために、単一メッセージ、またはデータストリーム110が「パケット」に解体される。それぞれ1〜4で表示される各パケット112、114、116および118は、ネットワーク100を介して利用可能なノード120、122、124、126、128および130を通って宛先に移動し、帯域幅が伝送のために利用可能になると、ノードからノードへ伝送される。宛先ノード130において、パケット112、114、116および118は、もとの連続したメッセージまたはストリームの中に組立て直される。パケットは、異なったルートをたどるネットワーク100を介して移動するので、パケットは、順序が狂った状態で宛先130に到着することがよくある。他のパケットは、ネットワーク内で紛失され得る。紛失したパケットの伝送をリクエストし、パケットを元の連続したメッセージに組立て直すために、宛先においてさらなる処理時間が必要とされる。多くの場合、紛失したパケットの再伝送は、適時に達成され得ない。そのために、紛失したパケットは回復不可能である。
【0048】
パケット交換の主な特徴は、伝送リンクが必要に応じて共有される方法である。各パケットは適切なリンクが利用可能になるとすぐに伝送され、送信するものを何も有さないソースにより保持されるリンクはない。ソースノード120が第1のパケット112を伝送した後、このソースノードは、残りのパケットを送信するために同じプロセスをたどらなければならない。各パケットは、ソースノード120と宛先ノード130との間の異なったルートを進み得、各パケットは、シーケンスナンバーを有する。本実施例において、シーケンスナンバー1〜4が宛先ノード130で用いられ、パケットをもとの連続したメッセージ110に組立て直す。例えば、第1のパケット112は、ソースノード120から第1のノード122へと移動する。第2のパケット114はソースノード120を去り、第1のノード122へ移動するが、他方、第1のパケット112は、宛先ノード130へと移動し、宛先ノード130に最初に到着し、順序正しく到着する。第3のパケット116が第1のノード122から宛先ノード130に移動すると、第3のパケット116はソースノード120を去り、第3のノード126に移動する。最後のパケット118は、ソースノード120から第1のノード122に移動するが、他方、第3のパケット116は宛先ノード130に移動する。第3のパケットのルート116(the route third packet)116は、ルートが最後のパケット118よりも伝搬時間が長いので、最後のパケット118および第3のパケット116は、宛先ノード130において乱れた順序で到着し得る。
【0049】
同様に、ネットワーク上の別のノードがパケットの順序を狂わせて伝送する場合、このパケットはソースノード120によって伝送されるパケットのうちの1つと衝突し、結果としてパケットが紛失され得る。従って、宛先ノード130は、4つのパケットのうちの3つを受信する。プロセッサが宛先ノード130においてパケットを組立て直すと、プロセッサは、パケットが行方不明であることを理解する。上述のRC4およびWEP暗号化方法を用いて、宛先ノード130は、狂った順序で受信されたパケットまたは紛失パケットの後に受信された任意のパケットを復号することはできない。
【0050】
暗号化スキームは、2つの一般的なカテゴリーに分類される。すなわち、対称暗号化方式および非対称暗号化方式である。例えば、Data Encryption Standard(DES)に属するような対称暗号化方式において、発信者がデータを暗号化するため(すなわち、平文を暗号文に変換する)、および受信者が同じデータを復号するために(すなわち、暗号文をもとの平文に変換する)同じ鍵が用いられる。本効率的なパケット暗号化方法は対称型である。
【0051】
(Sベクトルの生成 図2)
本効率的なパケット暗号化方法は、標準的RC4法を利用して、開始Sベクトルを生成する。図2を参照して、送信器および受信器は、ブロック210における平文を暗号化/復号化するために秘密鍵が用いられることに同意する。送信器は、秘密鍵をランダムに生成し得、その秘密鍵を第1のパケットヘッダにおける受信器に伝送するか、または2つのデバイスが呼出しセットアップ(call set−up)中に特定の鍵を用いることに同意し得る。図示するために、本効率的暗号化方法は、256の構成要素のベクトルを含んで記載および図示されるが、他の長さのベクトルで代用され得る。
【0052】
ブロック220において、秘密鍵は反復され、必要ならば、256の構成要素のKベクトルを秘密鍵のバイトで逐次的に満たす。256の構成要素のKベクトル内の各バイトの値は256よりも小さい。ブロック230において、256の構成要素のSベクトルは初期化され、0〜255のすべてのiに関してS[i]=iになるようにする。標準RC4法を用いて、ブロック240において、初期Sベクトルは、Kベクトルを用いてスクランブルがかけられる。すべての算術演算にモジューロ256が実行される。
【0053】
ステップ1
秘密鍵を受信し、この秘密鍵を用いてKベクトルを生成する
標準暗号化方法に従ってSベクトルを初期化する
ただし、すべての0≦i<255についてS[i]=iになるようにする
Kベクトルを用いて初期Sベクトルにスクランブルをかける
ここでj=0
i=0〜255であるため
j=j+S[i]+K[i]
S[i]とS[j]とを入れ替える
ここで、S[i]、S[j]およびK[i]の値は、SベクトルおよびKベクトルから導き出される。初期Sベクトルが生成された後、平文のパケットを暗号化するための変数が計算される。
【0054】
(変数の計算−図3)
パケット平文を暗号化するために用いられる変数はiおよびjである。iおよびjが最初にゼロにセットされ、暗号化計算において平文ストリーム内の平文の次のバイトについてインクリメントされるRC4、または各パケットの開始においてRC4が再初期化されるWEP法と異なって、本効率的なパケット暗号化法は、シーケンスナンバーを用いて、各パケットについて暗号化処理を開始する。初期シーケンスナンバーは、ランダムに生成されたシーケンスナンバーであり得る。シーケンスナンバーはインクリメントされ、次のシーケンスナンバーは各次のパケットを暗号化するために用いられる。図2におけるフローチャートを参照して、ロールオーバカウンタrは、最初、ブロック310においてゼロにリセットされ、初期シーケンスナンバーは、第1のパケットについて、ブロック320においてランダムに生成される。
【0055】
ステップ2
初期シーケンスナンバーをセット(連続的パケットのシーケンスナンバーをインクリメントする)
初期ロールオーバカウンタr=0をセット
(シーケンスナンバー=0の場合、r、モジューロ256をインクリメントする)
バイトシーケンスナンバーk=0をリセット
ロールオーバカウンタrの値は、暗号化ストリームを生成するために利用される変数jを計算するときに用いられる。同様に、パケット間で同じ暗号化シーケンスが用いられることを回避するために、暗号化ストリームを生成する際に用いられる変数iを計算するためにバイトシーケンスナンバーkが用いられる。
【0056】
シーケンスナンバーは、少なくとも2つのバイト、すなわち下位バイトおよびそのバイトの次のバイトを含む。シーケンスナンバーが2つより多いバイトを含む場合、超過した高位部分がロールオーバカウンタrとして(モジューロ256)が用いられる。変数jは、ブロック330におけるシーケンスナンバーの高位バイトと等しくなるように初期化される。変数iは、ブロック330において、シーケンスナンバーの下位バイトがS[j]と排他的論理和をとるように計算される。
【0057】
ステップ3
変数iおよびjをセットする
j=高位シーケンスナンバー
i=(下位シーケンスナンバー)+S[j}
ここで、S[j]は、前に生成されたSベクトルから導き出される。シーケンスナンバーを用いて、変数iおよびjの初期値を設定することは、パケットが受信された順序に関わらず、受信器においてパケットの復号化を組立て直すか、または同期化する方法を提供する。
【0058】
平文パケットの暗号化においてシーケンスナンバーのみを用いることは、変数iおよびjの次の値を予測可能にし、従って、暗号化法は安全でない。公知の平文攻撃を用いて、一度いくつかのパケットの復号化が成功すると、攻撃者はSベクトルの成分に関する情報を導き出すことができる。この攻撃を用いて、一度Sベクトル成分に関する十分な情報が導き出されると、残りのSベクトルを決定し、暗号文を復号化することが可能である。変数S[j]をブロック330における変数iの初期値の計算の中に注入することは、変数iの予測可能性を低減する。なぜなら、S[j]の値はSベクトルから導き出されるからである。従って、Sベクトルに対する特定の公知の平文攻撃を防止する。下位シーケンスナンバーがS[j]と排他的論理和をとることは、公知の平文攻撃から獲得された任意の関係が非線形であることを保証する。従って、本効率的なパケット暗号化法は、公知の平文攻撃に対してより安全である。
【0059】
(連続的パケット変数の計算)
本効率的なパケット暗号化法のセキュリティをさらに高めるために、変数iおよびjは、平文の各次のバイトについて、第2の計算を用いてブロック340においてさらに計算される。
【0060】
ステップ4
i=i+k
j=j+S[i]+S[r]を用いて
変数iおよびjを計算する
ここで、rは、ロールオーバカウンタの値であり、S[i」およびS[r]は、Sベクトルから導き出され、kはパケット内のバイトシーケンスナンバーである。上述のように、1実施形態において、暗号化法が初期化されると、ロールオーバカウンタはブロック320においてゼロにセットされる。本実施形態におけるロールオーバカウンタはインクリメントされ、シーケンスナンバーはすべての1が0にインクリメントする。暗号化法が初期化されると、シーケンスナンバーはロールオーバカウンタと置き替えられ得、ロールオーバカウンタをインクリメントすることに関する上述のようにインクリメントされる。
【0061】
1実施形態において、第2の変数iは、前の繰返しからの第2の変数と、第4の変数kとの合計として計算し直される。ここで、kは、パケットペイロードバイトシーケンスナンバーである。各パケットの開始において、kはリセットされ、kはパケット内の平文の各連続的バイトについてインクリメントされる。第4の変数kは、第2の変数iを計算する際に用いられ、本効率的なパケット暗号化法が利用される場合、異なったパケットにおいて暗号化ストリームの部分が再利用される可能性を低減する。第1の変数jは、前の繰返しからの第1の変数と第3の変数S[i]と第4の変数S[r]との合計として計算し直される。ここで、S[i]およびS[r]は、Sベクトルから導き出される。第2の変数iが、パケット内の各次の平文バイトについて1ずつインクリメントされるにすぎないが、他方、1つのパケットに対して用いられる暗号化ストリームの部分は、任意の他のパケットのために再利用される。従って、バイトシーケンスナンバーを用いて、パケット内の平文の連続的バイトの変数iを計算し直すことは、ペイロードの反復が2256バイト未満のペイロードの反復を防止し、従って、本効率的なパケット暗号化法にさらなる安全性を付加する。
【0062】
次のパケットについて、必要に応じて、ブロック340において、S[r]を暗号化計算の中に注入し、ブロック320において、rの値をインクリメントすることは、暗号化ストリームが反復する頻度を低減する。連続的j変数を計算する際に、S[r]を用いずに、毎秒100個のパケットを暗号化することは、暗号化ストリームを11分毎に反復させる。S[r]をパケット内の各バイトの変数jの計算の中に注入し、必要に応じて、rを次のパケット毎にインクリメントして、暗号化ストリームは約46時間毎に繰返す。従って、さらなるロールオーバカウンタの変数rを本効率的なパケット暗号化法の中に注入することは、ハッカーに対するさらなるセキュリティを提供する。
【0063】
変数iおよびjの計算が、ロールオーバカウンタまたはシーケンスナンバーから直接的に得られた変数rを用いて説明されたが、他方、r値をセットする他の方法が代用され得る。r値を生成する他の公知の方法は、開始r値をランダムに選択し、r値をヘッダの部分として配信することを含むか、またはrの値はRTP以外のプロトコルから導き出され得る。同様に、カウンタを更新する代替的方法は、シーケンスナンバーがすべて1のシリーズからすべて0のシリーズにインクリメントする場合、カウンタをインクリメントすることと置き替えられ得る。ブロック340において生成された変数iおよびjを用いて、ブロック350において暗号化バイトが計算される。
【0064】
(第1の暗号化および暗号文バイトの計算)
暗号化ストリームの第1のバイトは、前のステップ4において計算された変数iおよびjの値を用いてブロック350において計算される。
【0065】
ステップ5
E[k]=S[S[i]+S[j]]を用いて、パケット暗号化ストリームにおける次のバイトを計算する
ここで、S[i]およびS[j]のバイナリ値はSベクトルから導き出される。S[i]とS[j]との合計により示されるSベクトル内の位置は、暗号化ストリームの次のバイトを含む。暗号化ストリームの次のバイトを用いて、暗号ストリームの次のバイトがブロック360において計算される。
【0066】
選択的実施形態において、各連続的パケットの暗号化が行なわれる間、Sベクトルはブロック380において並べ替えられるか、またはスクランブルがかけられる。本実施形態において、パケット内の平文の第1のバイトを暗号化する前に、Sベクトルのコピーが保存される。平文の各連続的バイトについて、第1の変数jおよび第2の変数iによって示されるSベクトル内の値は入れ替えられる。平文の各連続的バイトのSベクトル内の値を入れ替えることによって、Sベクトルは時間の経過とともに並べ換えられ、長い平文ペイロードについて生成された暗号化ストリームがパケット内で反復する確率が低い。パケット内の平文のすべてのバイトが暗号化された場合、初期Sベクトルは、次のパケットの暗号化または復号化に用いるために復元される。
【0067】
送信器および受信器の両方は、ステップ1〜ステップ5に従い、同じ暗号化ストリームを生成する。送信器において、暗号化ストリームが用いられ、暗号文ストリームを生成する。受信器において、暗号文のストリームが受信され、暗号化ストリームは、暗号文を解読し平文を回復するために用いられる。
【0068】
ステップ6
送信器:C[k]=E+P[k]ただしP[k]=平文のk番目のバイトを用いて、次のバイト暗号文ストリームを計算する
受信器:P[k]=E+C[k]
を用いて、次のバイト平文ストリームを計算する
ここで、P[k]は、パケットペイロードにおける平文の次のバイトである。ステップ4において、送信器において、暗号化ストリームにおける次のバイトは、パケットペイロードにおける次の平文バイトと排他的論理和をとり、次のバイト暗号文を生成する。
【0069】
ステップ7
バイトシーケンスをインクリメントする
k=k+1
平文の次のバイトがブロック360において暗号文に変換された後、バイトシーケンスkは、ブロック390において1つずつインクリメントされる。本効率的なパケット暗号化方法における次のステップは、第1のパケットペイロードにおける最後の平文バイトが暗号化されたかどうかをブロック370において決定することである。パケットペイロード内の平文の次のバイトが暗号化されていない場合、この方法はペイロードの各連続的バイトに関するステップ3〜ステップ6を繰返す。ペイロード平文ストリーム内のすべてのバイトが暗号化/復号化されると、この方法は次のパケットについてのステップ2に戻る。
【0070】
ブロック230および240において生成されたSベクトルは、ブロック330〜350において、伝送されるべき平文の各ペイロードについてすべての変数を計算するために用いられる。Sベクトルが各パケットについて再計算されるWEPと異なって、本効率的なパケット暗号化方法において、Sベクトルは、ペイロード平文の現在のストリームについて再初期化されない。Sベクトル成分の任意の入れ替えがインクリメントされる場合、このSベクトルは復元され得ない。送信器がペイロード平文の新しいストリームを発信する準備を整えるまで、Sベクトルは計算し直されない。
【0071】
本効率的なパケット暗号化方法は、平文データの連続的パケットを暗号化および復号化する計算時間を低減する。Sベクトルが生成され、平文の連続的パケットを暗号化するために用いられ、従って、パケット毎の暗号化/復号化時間を低減する。連続的パケットを暗号化する式は、変数の予測可能性を排除するために注入された第3の変数を用いるパケットシーケンスナンバーの使用を含み、従って、本効率的なパケット暗号化法をより安全にする。第4の変数は、計算の中に注入され、頻繁に反復されない暗号化ストリームを生成し、ハッカーに対するさらなるセキュリティを提供する。平文の長いペイロードを有するパケットを暗号化するために、パケットバイトシーケンスナンバーが用いられ、特定のパケット内で反復する確率が低い暗号化ストリームを生成する。
【0072】
本効率的なパケット暗号化法を利用することは、セキュリティのレベルを益々向上させる一方で、ペイロード平文のストリーム全体の伝送を成功させるための計算時間を低減する。パケット毎の再計算を排除することは、各パケットの新しいSベクトルを生成する計算ステップを排除する。
【0073】
本効率的なパケット暗号化法を用いることは、時間を節約するためにセキュリティを犠牲にしない。その代わりに、計算工程にさらなる変数、変数iを注入してセキュリティを向上させる。同様に、変数jを計算するために用いられるカウンタを含むことは、反復頻度が低い暗号化ストリームを生成することによって、本効率的なパケット暗号化法のセキュリティをさらに向上させる。
【0074】
代替的実施形態に関して、当業者は、本効率的なパケット暗号化法が初期シーケンスナンバーおよび変数rの初期値を生成する種々の方法を用いて生成され得ることを理解する。本効率的なパケット暗号化法が、第1のランダムシーケンスナンバーを生成し、ロールオーバカウンタrをゼロにセットすることが説明および図示されたが、代替的方法が用いられてもよい。同様に、予め設定する効率的なパケット暗号化法は256の構成要素ベクトルを用いて図示および説明されたが、当業者は構成要素の代替的数を有するベクトルが代用され得ることを理解する。
【0075】
上述の目的、目標および利点を完全に満たす効率的なパケット暗号化法が記載されたことは明らかである。効率的パケット暗号化法は、その特定の実施形態と関連付けて説明されたが、一方で、複数の代替案、改変および/または変形が上述の記載に照らして当業者によって考案され得る。従って、本記載は、添付の請求項の趣旨および範囲内に含まれる、すべてのそのような代替案、改変および変形を容認することが意図される。
【0076】
【発明の効果】
以上に説明したように、本発明の効率的なパケット暗号化方法は、秘密鍵を選択して、標準暗号化方法に従ってSベクトルを生成する工程と、シーケンスナンバーをセットする工程であって、該シーケンスナンバーは、第1の部分と第2の部分とを有する、工程と、該シーケンスナンバーの第1の部分として第1の変数をセットする工程と、該シーケンスナンバーの該第2の部分として第2の変数をセットする工程と、バイトシーケンスナンバーをセットする工程と、該第2の変数と該バイトシーケンスナンバーとの合計として第3の変数を計算する工程と、該バイトシーケンスナンバーを1つずつインクリメントする工程と、該第1の変数に、該第3の変数により示されるSベクトル内の値を加算することにより、第4の変数を計算する工程と、暗号化バイトを特定する工程であって、該Sベクトル内の該暗号化バイトの位置は、該第3の変数と該第4の変数によって示される該Sベクトル内の値との合計によって示される、工程と、該暗号化バイトは、平文の少なくとも1つのバイトと排他的論理和をとり、暗号文の少なくとも1つのバイトを生成する工程とを包含し、これにより、本願は、ペイロード平文を暗号化するため、およびペイロード暗号文を復号化するために必要とされる時間を増加させず、パケットの紛失またはパケット(単数または複数)が順序が狂って到着した後にそれを回復する能力を有する、効率的なパケット暗号化方法を提供することができる。
【図面の簡単な説明】
【図1】図1は、パケット交換ネットワークにわたって伝送するためのペイロード平文のシーケンスを示す。
【図2】図2は、標準的Sベクトルを生成する従来技術のRC4方法のフローチャートを示す。
【図3】図3は、本効率的なパケット暗号化方法のフローチャートを示す。
[0001]
BACKGROUND OF THE INVENTION
(Field of Invention)
The present invention relates to a telecommunications transmission, and in particular to a packet encryption method that is efficient in computing on a stream of packets that are lost and / or delivered out of order during the transmission.
[0002]
[Prior art]
(problem)
In the field of packet transmission, packet encryption that increases encryption security and prevents transmitted devices from intercepting and decrypting transmitted packets, while not increasing the processing time to encrypt and decrypt plaintext It is a problem to provide a conversion method. A second problem in the field of packet transmission is to provide a packet encryption method that reassembles a sequence of packets at the destination, while the receiver does not require excessive time to decrypt and reassemble the packet stream. is there. A third problem is to synchronize the decoding of received packets in the presence of lost or out-of-order packets.
[0003]
In both wired and wireless packet switching, plaintext packets are sent from the source to the destination over the network. Packets are assembled and reassembled into plaintext individual packets by the packet assembler / disassembler. Each packet has a uniquely determined identification number, or sequence number, and each packet includes three basic elements: a header, a payload, and optionally a trailer. The header includes control information such as a sequence number, a synchronization bit, a destination address, a source address, and a packet length. The payload is the plaintext to be transmitted and the trailer includes the end of the packet flag and error detection and error correction bits.
[0004]
For transmission over a packet switched network, the media stream is broken down into “packets”. Each packet travels through the network through an available node to a destination, and is transmitted from node to node as bandwidth becomes available for transmission. At the destination node, an attempt is made to break up the packet into the original continuous stream. Since packets travel through the next consecutive encrypted byte E in the network S vector following a different route, they often arrive out of order at the destination. Other packets can be lost in the network. Further processing time is required at the destination in order to request re-transmission of lost packets and / or packets received out of order and to break up the packets into the original contiguous message.
[0005]
In the field of packet transmission, two encryption methods are commonly used, namely RC4 and WEP (Wired Equivalence Privacy). RC4 is an encryption method supported by CDPD (Cellular Digital Packet Data), and WEP is an encryption method supported by the IEEE 802.11 standard. The Institute of Electrical and Electronics Engineers (IEEE) is an organization responsible for standardization of many telecommunication and computing processes, including those used in local area networks (LANs) and the 802 series standards. IEEE 802 part 11b (802.11b) is usually used for radio that is becoming more and more common in LAN construction.
[0006]
WEP and RC4 are “stream-type” ciphers, which generate random encrypted byte character strings at the source, all of which are logically ORed with plaintext bytes to form a ciphertext. Conversely, the ciphertext can be exclusive-ORed with the same encrypted stream, and the plaintext is restored at the destination.
[0007]
[Problems to be solved by the invention]
(RC4 encryption method)
RC4 operates from start to finish as a single stream generator, a very long stream generator. RC4 does not use a packet sequence number in the encryption method. Instead, the next sequence of bytes in the payload plaintext is used. In other words, the encryption / decryption of each byte depends on the position of the byte in the entire stream. RC4 generates a 256-byte S vector using a key of up to 256 bytes. This S vector sequentially encrypts each successive byte of the payload plaintext. The S vector algorithm uses two variables and the S vector is reordered after each byte is encrypted, so the value of each encrypted stream depends on the number of payload bytes already encrypted or decrypted. To do. Thus, the S vector evolves over time, making it impractical to resynchronize RC4.
[0008]
Once all of the payload plaintext bytes are encrypted, the ciphertext is assembled into packets, and a header and trailer are added to each packet for transmission. The problem occurs when a packet of data is lost during transmission. The destination knows that the packet has been lost (not yet received). This is because each header includes a sequence number. If the second packet does not arrive at the destination, the destination can decrypt the payload ciphertext bytes in the first packet. However, the destination cannot decrypt the received third packet. This is because the destination does not know how many payload ciphertext bytes have been transmitted in the missing second packet. Thus, the destination requests to request retransmission of all packets not received. This is not practical for real-time media streams. Since all the plaintext bytes are sequentially converted to ciphertext, the ciphertext bytes must be processed in the same order as decryption.
[0009]
The RC4 encryption method described above cannot provide a method for decrypting the next received packet if the packet is lost unrecoverably during transmission.
[0010]
(Wired Equivalence Privacy (WEP) method)
IEEE 802.11b uses the Wired Equivalent Privacy (WEP) method. The similarity between RC4 and WEP is that WEP uses RC4 by reinitializing the way each packet uses the sequence number as part of the key. The WEP encryption method is reinitialized by rekeying a new S vector with a new key (selecting a new key).
[0011]
To solve the problem generated using RC4, WEP uses RC4, where WEP uses a similarly incremented S-vector for each packet, whereas RC4 uses payload. For each byte, with the exception of using an incremented S vector. By generating a new S vector for each packet, the destination can decode each packet in any order received and under the condition that the packet is lost. In other words, WEP operates from the start to the end of one packet, whereas RC4 is from start to end for each payload stream, regardless of the number of packets transmitted for each payload stream. Operate. This makes WEP inefficient for small packets such as voice communications. This is because a new S vector needs to be calculated for each packet.
[0012]
While the problem of lost packets preventing decryption at the destination was solved, the process of re-entering and re-initializing the method for each packet has been shown to be computationally intensive and insecure. WEP has been shown to have safety drawbacks. “Using the Fluhler, Martin, and Shamir attack to break WEP” by Stubblefield et al.http: // www. cs. rice. edu / ~ astable / wep / wep attack. html
And “Weaknesses in the Key Scheduling Method of RC4”
http: // www. eyeapap. org / ~ rguerera / toronto2001 / rc4_ksaproc. pdf
Please refer to. Some PC cards reset the packet sequence number to zero each time they are initialized, and then increment once every use. While this method reduces processing time, this method, on the other hand, provides a high likelihood that the key stream is reused, leading to a simple cryptographic analysis attack on the ciphertext and decryption of the message traffic. If the hacker can break the encryption code of one packet, the hacker can decrypt all the packets. Another problem with WEP is that it requires a large amount of computation. The S vector loop requires 256 steps (for a 256 byte vector) and the S vector is recalculated for each packet.
[0013]
RC4 increments the S vector of each byte in the payload plaintext stream, reducing the computational complexity of the RC4 encryption method at the cost of being unable to recover immediately when a packet is lost in the network. WEP solves the problem by providing a computationally intensive and less secure encryption method, thus increasing the overhead time required to encrypt the plaintext stream and decrypt the ciphertext stream. .
[0014]
The encryption method described above cannot provide a way to efficiently encrypt the payload plaintext stream, but allows the received packet to be decrypted if the packet is lost during transmission. To do.
[0015]
For this reason, it does not increase the time required to encrypt the payload plaintext and to decrypt the payload ciphertext, and after the packet is lost or the packet (s) arrive out of order. There is a need for an efficient packet encryption method that has the ability to recover it.
[0016]
The present invention has been made in view of the above circumstances, reduces the calculation time for encrypting and decrypting continuous packets of plaintext data, and recovers even after a packet is lost or arrives out of order. It is an object of the present invention to provide an efficient packet encryption method having the ability to
[0017]
[Means for Solving the Problems]
(Resolution)
This efficient packet encryption method overcomes the problems outlined above and advances the technology by providing a method that does not recalculate the S-vector for each packet, thus encrypting the payload plaintext And reduce the time required to decrypt the payload ciphertext. This efficient packet encryption method further overcomes the problem of lost or out of order packets. This is done by providing a way to initialize two variables within the encryption method using the packet sequence number. The third and fourth variables are injected into the calculation to minimize the predictability of the values used in the encryption calculation and reduce the frequency with which the encrypted stream repeats.
[0018]
This efficient packet encryption method uses the standard RC4 method and generates an initial S vector using a secret key. Unlike WEP, which generates a new S vector for each successive packet, the S vector is generated once to encrypt the entire plaintext stream, and thus to generate a new S vector for each immediately following packet. Delete the required time.
[0019]
An efficient packet encryption method of the present invention is a method of encrypting at least one byte of plaintext to generate at least one byte of ciphertext, the method selecting a secret key, Generating an S vector according to an encryption method; and setting a sequence number, the sequence number having a first part and a second part, and a first of the sequence numbers Setting a first variable as a part; setting a second variable as the second part of the sequence number; setting a byte sequence number; the second variable and the byte sequence Calculating a third variable as a sum of the number, incrementing the byte sequence number by one, and adding the first variable to the first variable, Calculating a fourth variable by adding the values in the S vector indicated by the three variables, and identifying the encrypted byte, wherein the position of the encrypted byte in the S vector is: The encrypted byte is exclusively OR'ed with at least one byte of plaintext, indicated by the sum of the value in the S vector indicated by the third variable and the fourth variable. Generating at least one byte of ciphertext.
[0020]
In the method of the present invention, the step of setting a second variable includes the step of setting an exclusive OR between the second part of the sequence number and the value in the S vector indicated by the first variable. It is preferable to further include the step of taking.
[0021]
In the method of the present invention, the step of calculating the fourth variable includes the step of setting a value of a counter, and the first variable includes the third variable and the S vector in the S vector indicated by the counter. And adding the values in the S vector indicated by the values.
[0022]
The method of the present invention is also a method for encrypting one or more plaintext packets, wherein the one or more packets in plaintext have a plurality of plaintext bytes, the method comprising: Obtaining an S vector using the secret key; obtaining a sequence number having a first part and a second part for each successive one or more packets of plaintext; Using the first part of the sequence number to set a first variable and using the second part of the sequence number to set a second variable equal to zero Setting a byte sequence number; and calculating a next encrypted byte for each next byte of the plurality of plaintext bytes, wherein the calculating step sets the second variable to the byte sequence number. In Calculating a third variable; calculating a fourth variable by adding the first variable to a value in the S vector indicated by the third variable; The next encrypted byte in the S vector is added by adding the value in the S vector indicated by the third variable to the fourth variable that computes a pointer to identify the next encrypted byte. Including a step of specifying, a step of setting, the step of setting the second variable and the third variable equal, and the step of incrementing the byte sequence number by one.
[0023]
In the method of the present invention, the step of calculating the second variable includes the step of exclusive ORing the value in the S vector indicated by the first variable with the second part of the sequence number. It is preferable to include.
[0024]
In the above method of the present invention, for each next encrypted byte, the next encrypted byte is XORed with the next byte of the plurality of plaintext bytes at the transmitter to Preferably, the method further includes the step of calculating the ciphertext bytes.
[0025]
In the method of the present invention, at the receiver, for each next encrypted byte, the next encrypted byte is exclusive-ORed with the next ciphertext in each one or more packets of plaintext. Preferably further includes the step of calculating the next received plaintext byte.
[0026]
In the method of the present invention, the step of calculating the fourth variable includes the step of setting a counter, and the first variable is set to a value in the S vector indicated by the third variable and the counter. Further comprising calculating the fourth variable by adding and incrementing the value of the counter according to a predetermined schedule for each one or more subsequent packets of plaintext. preferable.
[0027]
In the method of the present invention, the step of setting a counter comprises resetting a rollover counter to zero for a first packet of one or more plaintext packets, Preferably, for a packet, if incrementing the sequence number causes the sequence number value to be converted from 1 to all 0s, the method further includes incrementing the rollover counter.
[0028]
Reordering the S vector for each next byte of the plurality of bytes in plain text, storing a copy of the S vector, the third variable, and Replacing a value in the S vector indicated by a value in the S vector indicated by a fourth variable, wherein the value in the S vector is replaced after the next encrypted byte is specified. Preferably, the method further comprises the steps of: restoring the stored S-vector for each one or more packets of plaintext.
[0029]
The method of the present invention is a method for converting one or more packets having a plurality of bytes of plaintext P into one or more packets having a plurality of ciphertext bytes C, the method comprising: Obtaining an S vector having a plurality of S vector bytes using the secret key; randomly setting a sequence number having a first part and a second part; For each successive one or more packets, incrementing the sequence number, j = setting the first variable j according to the first part of the sequence number, and i = the number of the sequence number Calculating a second variable i according to part 2 and calculating a next successive ciphertext byte C for each successive byte of the plurality of bytes of plaintext P, comprising: The step of calculating further calculates the first variable by j = j + S [i], sets the third variable k, and further calculates the second variable i by i = i + k. Identifying the next consecutive encrypted byte E in the S vector by E = S [S [i] + S [j]], and the next consecutive encrypted byte E, Converting C = E + P to the next continuous ciphertext byte C, and the last byte of the plurality of bytes of plaintext P is ciphertext for the next packet of the one or more packets If converted to byte C, transmitting the next consecutive packet of the one or more packets to a receiver.
[0030]
In the method of the present invention, the step of calculating the second variable includes the step of calculating a lower sequence number and a value in the S vector indicated by the first variable by i = (lower order of the sequence number) + S [j] It is preferable to further include the step of taking an exclusive OR.
[0031]
In the method of the present invention, the step of further calculating the first variable j includes:
Setting the counter r; further calculating the first variable j by j = j + S [i] + S [r]; and for each successive packet of one or more packets, the value of the counter r It is preferable that the method further includes a step of implementing.
[0032]
In the method of the present invention, the step of calculating the next consecutive encrypted byte E is a step of rearranging the S vector, the step of storing a copy of the S vector, and the first variable j. Including the step of replacing the plurality of S vector bytes indicated with the plurality of S vector bytes indicated by the second variable i, and the last byte of the plurality of bytes of the plaintext P is: When one or more of the packets are converted into a plurality of ciphertext bytes C, it is preferable to further include a step of restoring the stored S vector.
[0033]
The method of the present invention is a method for converting one or more packets having a plurality of bytes of plaintext P into one or more packets having a plurality of ciphertext bytes C, the method comprising: A step of calculating an S vector having a plurality of S vector bytes using the secret key, a step of randomly setting a sequence number having a high order or a low order, and each successive one or more Incrementing the sequence number and computing the next consecutive encrypted byte E for each successive byte of the plurality of bytes of plaintext P, where j = higher of the sequence number , Setting the first variable j, calculating the second variable i by i = (lower order of sequence number) + S [j], and counter r A step of further calculating the first variable by j = j + S [i] + S [r], a step of setting a third variable k, and the second variable by i = i + k Including incrementing the variable i; identifying the next consecutive encrypted byte E in the S vector by E = S [S [i] + S [j]]; Converting the continuous encrypted byte E of the next encrypted ciphertext byte C by C = E + P, and the last byte of the plurality of bytes of plaintext P is the next packet of one or more packets And, when converted to ciphertext byte C, transmitting the next consecutive packet of the one or more packets to a receiver.
[0034]
(Variable calculation)
The two variables i and j are used to generate an encrypted stream that is exclusive OR'd with each plaintext byte in the packet. New values for variables i and j are calculated for successive plaintext bytes in the packet. Unlike RC4, where variables i and j are initially set to zero and incremented with respect to the next plaintext byte in the payload, a starting sequence number is generated for the first packet after the initial S vector is generated. The The first part of the sequence number represents the variable j and the second part of the sequence number is used to calculate the variable i.
[0035]
In one embodiment, the variable i is calculated by taking the second part of the sequence number as an exclusive OR with the value of S [j]. Here, S [j] is derived from the S vector. Injecting the third variable S [j] into the calculation process of the starting value of the variable i thus makes the present efficient packet encryption method more secure against known plaintext attacks. New starting values for variables i and j are calculated for each immediately following packet. Using the sequence number to generate the encrypted stream provides a way to decrypt the packet at the destination, regardless of the order in which the packets are received. This further provides a way to decrypt the next packet received after the packet is lost, thus reducing the time to encrypt, transmit and decrypt plaintext consecutive packets.
[0036]
(Continuous encryption and ciphertext byte calculation)
If the next consecutive byte in the packet is not encrypted, the variables i and j are recalculated for each consecutive byte in the packet. The second variable i is recalculated as the sum of the second variable i from the previous iteration and the fourth variable k. Here, k is a byte sequence number in the packet payload. At the start of each packet, k is reset and k is incremented for each successive byte of plaintext in the packet. The fourth variable k is used to calculate the second variable i, and when this efficient packet encryption method is used to encrypt a large plaintext payload, Reduce the likelihood that parts of the same encrypted stream will be used. The first variable j is recalculated as the sum of the first variables by adding the third variables S [i] and s [j] to the previous iteration, respectively. Here, S [i] and s [j] are derived from the S vector.
[0037]
Injecting S [r] into the encryption method generates an encrypted stream, where the encrypted stream does not repeat over a long sequence of packets. Without including S [r], the encrypted stream repeats approximately every 11 minutes with 100 packets per second. Injecting S [r] into the computation produces an encrypted stream that repeats every 46 hours, thus making the efficient packet encryption method more secure.
[0038]
In another embodiment, the S vector is reordered while each successive packet is encrypted. In this embodiment, the S vector is calculated first and a copy of the S vector is saved. For each successive byte of encrypted plaintext, the values in the S vector indicated by the first variable j and the second variable i are swapped.
For each successive byte of plaintext, the S vector is reordered over time by swapping the values in the S vector, so the encrypted stream generated for a long plaintext payload is repeated in the packet. The probability of doing is low. If all plaintext bytes in a packet are encrypted, the initial S vector is restored for use in encrypting and decrypting the next packet.
[0039]
(First encryption and ciphertext byte calculation)
The first byte of the encrypted stream is derived from the S vector using the equation E = [S [i] + S [j]]. The position in the S vector, indicated by the sum of S [i] and S [j], contains the next byte of the encrypted stream. At the transmitter, the next byte of the encrypted stream is used to calculate the next byte of the encrypted stream. The next byte in the encrypted stream is XORed with the next plaintext byte in the packet payload.
[0040]
At the receiver, the next received ciphertext byte is decrypted by exclusive ORing the next received ciphertext byte with the next calculated ciphertext byte to recover the next plaintext byte. To do. The next step in this efficient packet encryption method is to determine whether the last plaintext in the first packet payload is encrypted.
[0041]
When all consecutive plaintext bytes in the next packet have been encrypted, the packet sequence number is incremented and the method returns to the starting point and takes the new values for variables i and j from the next consecutive packet sequence number. calculate. The first generated S vector is used for all successive packets.
[0042]
The first advantage of this efficient packet encryption method is that the processing time for each packet is reduced. Using the same S vector for consecutive packets reduces the processing time for each packet for encrypting the plaintext stream or decrypting the ciphertext stream, and this efficient packet encryption method is the same as the above-mentioned WEP method. More efficient than conventional encryption methods. A second advantage of this efficient packet encryption method is that it does not suffer from the same attacks that make WEP insecure.
[0043]
A third advantage of this efficient packet encryption method is that it is designed to easily resynchronize in situations where packets are received in a lost and / or out of order. This efficient packet encryption method uses each packet sequence number to select initial values for variables i and j and increments the packet sequence number of successive packets. RC4 does not use a sequence number, so the receiver must count bytes from the beginning of the cipher stream.
[0044]
Initializing variable i and variable j with the sequence number makes the next value predictable. Injecting the third variable S [j] makes the efficient packet encryption method more efficient when the calculation of the initial value of the variable i eliminates the predictability of determining the values of the variables i and j. Make it safe. Injecting S [r] into the computation generates an encrypted stream that the packet encryption stream does not repeat frequently and provides additional protection against hackers. Similarly, the byte sequence number k is injected to reduce the likelihood that a fragment of the encrypted stream will repeat somewhere over a long sequence.
[0045]
(Detailed explanation)
The efficient packet encryption method defined above and by the appended claims can be better understood with reference to the following detailed description that should be read in conjunction with the accompanying drawings. This detailed description of the preferred embodiments is not intended to limit the recited claims, but is used as a specific illustration thereof. Moreover, the terminology and terminology used herein is used for the purpose of explanation and not for the purpose of limitation.
[0046]
In both wired and wireless packet switching, payload plaintext packets are transmitted from the source to the destination over the network. Packets are assembled and disassembled into individual packets of payload data by a packet assembler / disassembler. Each packet has a uniquely determined identification number, or sequence number, and each packet includes three basic elements: a header, a payload, and optionally a trailer. The header includes control information such as a sequence number, a synchronization bit, a destination address, a source address, and a packet length. The payload is the plaintext to be transmitted and the trailer includes the end of the packet flag and error detection and error correction bits.
[0047]
DETAILED DESCRIPTION OF THE INVENTION
(Packet exchange-Fig. 1)
With reference to FIG. 1, for transmission over a packet switched network 100, a single message, or data stream 110, is broken up into "packets". Each packet 112, 114, 116 and 118, denoted 1 to 4 respectively, travels to a destination through nodes 120, 122, 124, 126, 128 and 130 that are available via the network 100, with bandwidth When it becomes available for transmission, it is transmitted from node to node. At destination node 130, packets 112, 114, 116 and 118 are reassembled into the original continuous message or stream. Because packets travel through the network 100 following different routes, the packets often arrive at the destination 130 out of order. Other packets can be lost in the network. Additional processing time is required at the destination to request transmission of the lost packet and reassemble the packet into the original continuous message. In many cases, retransmission of lost packets cannot be achieved in a timely manner. Therefore, lost packets cannot be recovered.
[0048]
The main feature of packet switching is the way in which transmission links are shared as needed. Each packet is transmitted as soon as the appropriate link is available, and no link is held by a source that has nothing to send. After the source node 120 transmits the first packet 112, this source node must follow the same process to send the remaining packets. Each packet may travel a different route between the source node 120 and the destination node 130, and each packet has a sequence number. In this embodiment, sequence numbers 1-4 are used at the destination node 130 to reassemble the packet into the original continuous message 110. For example, the first packet 112 moves from the source node 120 to the first node 122. The second packet 114 leaves the source node 120 and moves to the first node 122, while the first packet 112 moves to the destination node 130 and arrives first at the destination node 130, in order. arrive. As the third packet 116 moves from the first node 122 to the destination node 130, the third packet 116 leaves the source node 120 and moves to the third node 126. The last packet 118 moves from the source node 120 to the first node 122, while the third packet 116 moves to the destination node 130. Since the route 116 of the third packet 116 has a longer propagation time than the last packet 118, the last packet 118 and the third packet 116 are in a disordered order at the destination node 130. You can arrive.
[0049]
Similarly, if another node on the network transmits an out-of-order packet, this packet may collide with one of the packets transmitted by the source node 120, resulting in a lost packet. Accordingly, destination node 130 receives three of the four packets. When the processor reassembles the packet at the destination node 130, the processor understands that the packet is missing. Using the RC4 and WEP encryption methods described above, the destination node 130 cannot decrypt packets received out of order or any packets received after a lost packet.
[0050]
Encryption schemes fall into two general categories. That is, a symmetric encryption method and an asymmetric encryption method. For example, in a symmetric encryption scheme belonging to Data Encryption Standard (DES), the sender encrypts data (ie, converts plaintext to ciphertext) and the receiver decrypts the same data. The same key is used (ie to convert the ciphertext to the original plaintext). This efficient packet encryption method is symmetric.
[0051]
(Generation of S vector)
The efficient packet encryption method uses a standard RC4 method to generate a starting S vector. With reference to FIG. 2, the transmitter and receiver agree that a secret key is used to encrypt / decrypt the plaintext in block 210. The transmitter may randomly generate a secret key and transmit the secret key to the receiver in the first packet header, or the two devices will use a specific key during call set-up You can agree. For purposes of illustration, the present efficient encryption method is described and illustrated including 256 component vectors, although other length vectors may be substituted.
[0052]
At block 220, the secret key is repeated, and if necessary, 256 constituent K vectors are sequentially filled with secret key bytes. The value of each byte in the K vector of 256 components is less than 256. At block 230, the 256 component S vectors are initialized so that S [i] = i for all i between 0 and 255. Using the standard RC4 method, at block 240, the initial S vector is scrambled with the K vector. Modulo 256 is performed for all arithmetic operations.
[0053]
Step 1
Receive a secret key and generate a K vector using this secret key
Initialize S vector according to standard encryption method
However, S [i] = i is satisfied for all 0 ≦ i <255.
Scramble the initial S vector using the K vector
Where j = 0
Because i = 0 to 255
j = j + S [i] + K [i]
Swap S [i] and S [j]
Here, the values of S [i], S [j] and K [i] are derived from the S vector and the K vector. After the initial S vector is generated, a variable for encrypting the plaintext packet is calculated.
[0054]
(Calculation of variables-Fig. 3)
The variables used to encrypt the packet plaintext are i and j. Unlike RC4, where i and j are initially set to zero and incremented for the next byte of plaintext in the plaintext stream in the encryption computation, or RC4 is reinitialized at the start of each packet, An efficient packet encryption method starts an encryption process for each packet using a sequence number. The initial sequence number may be a randomly generated sequence number. The sequence number is incremented and the next sequence number is used to encrypt each next packet. Referring to the flowchart in FIG. 2, the rollover counter r is initially reset to zero in block 310 and an initial sequence number is randomly generated in block 320 for the first packet.
[0055]
Step 2
Set initial sequence number (increment sequence number of consecutive packets)
Set initial rollover counter r = 0
(If sequence number = 0, increment r and modulo 256)
Reset byte sequence number k = 0
The value of the rollover counter r is used when calculating a variable j used for generating the encrypted stream. Similarly, in order to avoid using the same encryption sequence between packets, the byte sequence number k is used to calculate the variable i used in generating the encrypted stream.
[0056]
The sequence number includes at least two bytes, the lower byte and the next byte. If the sequence number contains more than two bytes, the excess higher part is used as the rollover counter r (modulo 256). Variable j is initialized to be equal to the high order byte of the sequence number in block 330. The variable i is calculated at block 330 such that the lower byte of the sequence number is exclusive ORed with S [j].
[0057]
Step 3
Set variables i and j
j = high sequence number
i = (lower sequence number) + S [j}
Here, S [j] is derived from the previously generated S vector. Using sequence numbers to set initial values for variables i and j provides a way to reassemble or synchronize the decoding of packets at the receiver, regardless of the order in which the packets were received.
[0058]
Using only the sequence number in plaintext packet encryption makes the next values of the variables i and j predictable, so the encryption method is not secure. Using a known plaintext attack, once several packets are successfully decoded, the attacker can derive information about the components of the S vector. Once sufficient information about the S vector component is derived using this attack, the remaining S vectors can be determined and the ciphertext can be decrypted. Injecting the variable S [j] into the initial value calculation of the variable i in block 330 reduces the predictability of the variable i. This is because the value of S [j] is derived from the S vector. Therefore, certain known plaintext attacks on the S vector are prevented. The exclusive OR of the lower sequence number with S [j] ensures that any relation obtained from a known plaintext attack is non-linear. Thus, this efficient packet encryption method is safer against known plaintext attacks.
[0059]
(Continuous packet variable calculation)
To further increase the security of this efficient packet encryption method, variables i and j are further computed at block 340 using a second computation for each next byte of plaintext.
[0060]
Step 4
i = i + k
Using j = j + S [i] + S [r]
Compute variables i and j
Where r is the value of the rollover counter, S [i] and S [r] are derived from the S vector, and k is the byte sequence number in the packet. As described above, in one embodiment, the rollover counter is set to zero at block 320 when the encryption method is initialized. In this embodiment, the rollover counter is incremented, and all 1's are incremented to 0 in the sequence number. When the encryption method is initialized, the sequence number can be replaced with a rollover counter and incremented as described above with respect to incrementing the rollover counter.
[0061]
In one embodiment, the second variable i is recalculated as the sum of the second variable from the previous iteration and the fourth variable k. Here, k is a packet payload byte sequence number. At the start of each packet, k is reset and k is incremented for each successive byte of plaintext in the packet. The fourth variable k is used when calculating the second variable i, and if this efficient packet encryption method is used, the portion of the encrypted stream may be reused in different packets. Reduce. The first variable j is recalculated as the sum of the first variable, the third variable S [i] and the fourth variable S [r] from the previous iteration. Here, S [i] and S [r] are derived from the S vector. The second variable i is only incremented by 1 for each next plaintext byte in the packet, whereas the portion of the encrypted stream used for one packet is for any other packet To be reused. Thus, recalculating the plaintext continuous byte variable i in the packet using the byte sequence number would result in 2 repetitions of the payload.256Prevents repetition of sub-byte payloads, thus adding additional security to this efficient packet encryption method.
[0062]
For the next packet, if necessary, in block 340, S [r] is injected into the encryption calculation, and in block 320, incrementing the value of r reduces the frequency with which the encrypted stream repeats. To do. Encrypting 100 packets per second without using S [r] when calculating the continuous j variable causes the encrypted stream to repeat every 11 minutes. S [r] is injected into the calculation of the variable j for each byte in the packet, and if necessary, r is incremented for each subsequent packet, and the encrypted stream repeats approximately every 46 hours. Thus, injecting a further rollover counter variable r into the efficient packet encryption method provides additional security against hackers.
[0063]
While the calculation of variables i and j has been described using a variable r obtained directly from a rollover counter or sequence number, other methods of setting the r value can be substituted. Other known methods for generating r values include randomly selecting a starting r value and delivering the r value as part of the header, or the value of r can be derived from protocols other than RTP. Similarly, an alternative method of updating the counter can be replaced by incrementing the counter if the sequence number increments from a series of all 1s to a series of all 0s. Using the variables i and j generated at block 340, an encrypted byte is calculated at block 350.
[0064]
(First encryption and ciphertext byte calculation)
The first byte of the encrypted stream is calculated at block 350 using the values of variables i and j calculated in the previous step 4.
[0065]
Step 5
Calculate the next byte in the packet encrypted stream using E [k] = S [S [i] + S [j]]
Here, the binary values of S [i] and S [j] are derived from the S vector. The position in the S vector, indicated by the sum of S [i] and S [j], contains the next byte of the encrypted stream. Using the next byte of the encrypted stream, the next byte of the encrypted stream is calculated at block 360.
[0066]
In an alternative embodiment, the S vector is reordered or scrambled at block 380 while encryption of each successive packet is performed. In this embodiment, a copy of the S vector is saved before encrypting the plaintext first byte in the packet. For each successive byte of plaintext, the values in the S vector indicated by the first variable j and the second variable i are swapped. By swapping the values in the S vector of each successive byte of plaintext, the S vector is reordered over time, and the probability that the encrypted stream generated for a long plaintext payload will repeat in the packet is low. If all the plaintext bytes in a packet are encrypted, the initial S vector is restored for use in encrypting or decrypting the next packet.
[0067]
Both the transmitter and the receiver generate the same encrypted stream according to steps 1-5. At the transmitter, the encrypted stream is used to generate a ciphertext stream. At the receiver, a stream of ciphertext is received and the encrypted stream is used to decrypt the ciphertext and recover the plaintext.
[0068]
Step 6
Transmitter: C [k] = E + P [k] where P [k] = kull byte of plaintext is used to calculate the next byte ciphertext stream
Receiver: P [k] = E + C [k]
Is used to compute the next byte plaintext stream
Here, P [k] is the next byte of plaintext in the packet payload. In step 4, at the transmitter, the next byte in the encrypted stream is XORed with the next plaintext byte in the packet payload to generate the next byte ciphertext.
[0069]
Step 7
Increment byte sequence
k = k + 1
After the next byte of plaintext is converted to ciphertext at block 360, the byte sequence k is incremented by one at block 390. The next step in the present efficient packet encryption method is to determine at block 370 whether the last plaintext byte in the first packet payload has been encrypted. If the next plaintext byte in the packet payload is not encrypted, the method repeats steps 3 through 6 for each successive byte of the payload. Once all bytes in the payload plaintext stream have been encrypted / decrypted, the method returns to step 2 for the next packet.
[0070]
The S vectors generated in blocks 230 and 240 are used in blocks 330-350 to calculate all variables for each plaintext payload to be transmitted. Unlike WEP, where the S vector is recalculated for each packet, in this efficient packet encryption method, the S vector is not reinitialized for the current stream of payload plaintext. If any permutation of the S vector component is incremented, this S vector cannot be restored. The S vector is not recalculated until the transmitter is ready to send a new stream of payload plaintext.
[0071]
This efficient packet encryption method reduces the computation time for encrypting and decrypting continuous packets of plaintext data. S vectors are generated and used to encrypt continuous plaintext packets, thus reducing the per-packet encryption / decryption time. The formula for encrypting consecutive packets involves the use of a packet sequence number with a third variable injected to eliminate the predictability of the variable, thus making this efficient packet encryption method more secure To. The fourth variable is injected into the calculation and generates an encrypted stream that is not frequently repeated, providing additional security against hackers. In order to encrypt packets with long plaintext payloads, packet byte sequence numbers are used to generate an encrypted stream with a low probability of repetition within a particular packet.
[0072]
Utilizing this efficient packet encryption method further increases the level of security while reducing the computation time for successful transmission of the entire stream of payload plaintext. Eliminating per-packet recalculation eliminates the computational step of generating a new S vector for each packet.
[0073]
Using this efficient packet encryption method does not sacrifice security to save time. Instead, a further variable, variable i, is injected into the calculation process to improve security. Similarly, including a counter used to calculate the variable j further improves the security of the efficient packet encryption method by generating an encrypted stream with a low iteration frequency.
[0074]
With respect to alternative embodiments, those skilled in the art will appreciate that this efficient packet encryption method can be generated using various methods for generating an initial sequence number and an initial value for variable r. Although this efficient packet encryption method has been described and illustrated to generate a first random sequence number and set the rollover counter r to zero, alternative methods may be used. Similarly, although preset efficient packet encryption methods have been illustrated and described using 256 component vectors, those skilled in the art will appreciate that vectors having alternative numbers of components can be substituted.
[0075]
Clearly, an efficient packet encryption method has been described that fully satisfies the objectives, goals and advantages described above. While efficient packet encryption methods have been described in connection with specific embodiments thereof, multiple alternatives, modifications and / or variations can be devised by those skilled in the art in light of the above description. Accordingly, the description is intended to embrace all such alternatives, modifications, and variations that fall within the spirit and scope of the appended claims.
[0076]
【The invention's effect】
As described above, the efficient packet encryption method of the present invention includes a step of selecting a secret key, generating an S vector according to a standard encryption method, and a step of setting a sequence number, The sequence number has a first portion and a second portion, a step of setting a first variable as the first portion of the sequence number, and a second portion of the sequence number as the second portion. A step of setting a variable of 2, a step of setting a byte sequence number, a step of calculating a third variable as a sum of the second variable and the byte sequence number, and one byte sequence number An incrementing step and a step of calculating a fourth variable by adding a value in the S vector indicated by the third variable to the first variable. Identifying an encrypted byte, wherein the position of the encrypted byte in the S vector is the sum of the third variable and the value in the S vector indicated by the fourth variable Wherein the encrypted bytes are XOR'ed with at least one byte of plaintext to generate at least one byte of ciphertext, whereby the present application The ability to recover the packet after it has been lost or the packet or packets arrive out of order, without increasing the time required to encrypt and decrypt the payload ciphertext It is possible to provide an efficient packet encryption method.
[Brief description of the drawings]
FIG. 1 shows a sequence of payload plaintext for transmission over a packet switched network.
FIG. 2 shows a flowchart of a prior art RC4 method for generating a standard S vector.
FIG. 3 shows a flowchart of the efficient packet encryption method.

Claims (15)

平文の少なくとも1つのバイトを暗号化することにより、暗号文の少なくとも1つのバイトを生成するパケット暗号化方法であって、
パケット暗号化方法は、
プロセッサが、秘密鍵を選択することにより、RC4暗号化方法に従うSベクトルを生成するステップと、
該プロセッサが、シーケンスナンバーを設定するステップであって、該シーケンスナンバーは、第1の部分と第2の部分とを有する、ステップと、
該プロセッサが、該シーケンスナンバーの該第1の部分として第1の変数を設定するステップと、
該プロセッサが、該シーケンスナンバーの該第2の部分として第2の変数を設定するステップと、
該プロセッサが、バイトシーケンスナンバーを設定するステップと、
該プロセッサが、該第2の変数と該バイトシーケンスナンバーとの合計として第3の変数を計算するステップと、
該プロセッサが、該バイトシーケンスナンバーを1つインクリメントするステップと、
該プロセッサが、該第1の変数と、該第3の変数により示される該Sベクトル内の値とを所定の数を法として加算することにより、第4の変数を計算するステップと、
該プロセッサが、暗号化バイトを特定するステップであって、該Sベクトル内の該暗号化バイトの位置は、該第3の変数により示される該Sベクトル内の値と該第4の変数により示される該Sベクトル内の値との合計により示される、ステップと、
該プロセッサが、該暗号化バイトと該平文の少なくとも1つのバイトとの排他的論理和をとることにより、該暗号文の少なくとも1つのバイトを生成するステップ
を包含する、パケット暗号化方法。
A packet encryption method for generating at least one byte of ciphertext by encrypting at least one byte of plaintext, comprising:
The packet encryption method is:
And step processor by selecting a secret key, to generate the S-vector according to the RC4 encryption method,
Said processor comprising: setting a sequence number, the sequence number includes a first portion and a second portion, comprising the steps,
A step of the processor sets the first variable as the first portion of the sequence number,
A step of the processor sets the second variable as second portion of the sequence number,
A step of the processor sets the byte sequence number,
Said processor calculating a third variable as the sum of the second variable and the byte sequence number,
Said processor incrementing one said byte sequence number,
A step the processor is to calculate the said first variable, by adding the values in the S vector represented by the variables of the third predetermined number modulo the fourth variable,
Said processor, comprising the steps of identifying the encrypted byte position of dark Goka byte within the S-vector is indicated by the value and the fourth variable in the S vector represented by the third variable as indicated by the sum of the values in the S vector, the steps,
The processor, by taking the exclusive OR of the at least one byte of dark Goka bytes and plaintext, comprising the steps of generating at least one byte of dark ciphertext, packet encryption method.
前記第2の変数を設定するステップは、
前記プロセッサが、前記シーケンスナンバーの前記第2の部分と前記第1の変数により示される前記Sベクトル内の値との排他的論理和をとるステップを包含する、請求項1に記載のパケット暗号化方法。
Step of setting the second variable,
Wherein the processor, wherein comprises the step of taking the exclusive OR of the value in the S vector the a second portion represented by the first variable, packet encryption of claim 1 of the sequence number Method.
前記第4の変数を計算するステップは、
前記プロセッサが、カウンタに対して値を設定するステップと、
該プロセッサが、前記第1の変数と前記第3の変数により示される前記Sベクトル内の
値と該カウンタにより示される該Sベクトル内の値とを合計するステップ
をさらに包含する、請求項1に記載のパケット暗号化方法。
Calculating a fourth variable,
Wherein the processor, and setting a value for the counter,
Said processor further comprises the step of summing the values within the S-vector indicated by the value and the counter in the S vector represented by the first variable and the third variable, claim 1 Packet encryption method described in 1.
平文の1つ以上のパケットを暗号化するパケット暗号化方法であって、該平文の1つ以上のパケットは、該平文の複数のバイトを有し、
パケット暗号化方法は、
プロセッサが、秘密鍵を取得するステップと、
該プロセッサが、該秘密鍵を用いてSベクトルを生成するステップと、
該平文の各連続的な1つ以上のパケットに対して、
該プロセッサが、第1の部分と第2の部分とを有するシーケンスナンバーを取得するステップと、
該プロセッサが、該シーケンスナンバーの該第1の部分を用いて、第1の変数を設定するステップと、
該プロセッサが、該シーケンスナンバーの該第2の部分を用いて、第2の変数を設定するステップと、
該プロセッサが、ゼロと等しくなるようにバイトシーケンスナンバーを設定するステップと、
該プロセッサが、該平文の複数のバイトのうちの各次のバイトに対して、次の暗号化バイトを計算するステップと
を包含し、
該計算するステップは、
該プロセッサが、該第2の変数と該バイトシーケンスナンバーとを所定の数を法として加算することにより、第3の変数を生成するステップと、
該プロセッサが、該第1の変数と、該第3の変数により示される該Sベクトル内の値とを該所定の数を法として加算することにより、第4の変数を計算するステップと、
該プロセッサが、該第3の変数により示される該Sベクトル内の値と、該第4の変数とを該所定の数を法として加算することにより、次の暗号化バイトを特定するポインタを計算することによって、該Sベクトル内の該次の暗号化バイトを特定するステップ
プロセッサが、該第3の変数等しくなるように該第2の変数を設定するステップと、
該プロセッサが、該バイトシーケンスナンバーを1つインクリメントするステップ
を包含する、パケット暗号化方法。
A packet encryption method for encrypting one or more plaintext packets, the one or more plaintext packets having a plurality of plaintext bytes,
The packet encryption method is:
And step processor, to retrieve the secret key,
Said processor generating a S-vector using the secret key,
For each successive one or more packets of the plaintext,
Said processor includes the steps of acquiring a sequence number having a first portion and a second portion,
A step of the processor, using the first portion of the sequence number, sets the first variable,
A step of the processor, using the second portion of the sequence number, sets the second variable,
A step of the processor sets the byte sequence number to be equal to zero,
It said processor, for each next byte of the plurality of bytes of plaintext, calculating a next encryption byte
Including
The calculating step includes:
By the processor adds the second variable and the byte sequence number a predetermined number modulo the steps of generating a third variable,
A step the processor is to calculate the said first variable, by adding the values in the S vector represented by the variables of the third modulo said predetermined number, the fourth variable,
The processor calculates a pointer identifying the next encrypted byte by adding the value in the S vector indicated by the third variable and the fourth variable modulo the predetermined number by, identifying the encrypted bytes said next in the S vector,
A step of the processor sets the second variable to be equal to the third variable,
Said processor includes incrementing one said byte sequence number, a packet encryption method.
前記第2の変数を設定するステップは、
前記プロセッサが、前記シーケンスナンバーの前記第2の部分と前記第1の変数により示される前記Sベクトル内の値との排他的論理和をとるステップを包含する、請求項4に記載のパケット暗号化方法。
Step of setting the second variable,
Wherein the processor, wherein the second portion the indicated by the first variable comprising the step of taking the exclusive OR of the values in the S-vector, packet encryption of claim 4 of the sequence number Method.
前記プロセッサが、各次の暗号化バイトに対して、前記次の暗号化バイトと前記平文の複数のバイトのうちの次のバイトとの排他的論理和をとることによって、次の暗号文バイトを計算するステップをさらに包含する、請求項4に記載のパケット暗号化方法。For each next encrypted byte, the processor obtains the next ciphertext byte by performing an exclusive OR operation between the next encrypted byte and the next byte of the plurality of plaintext bytes. The packet encryption method according to claim 4, further comprising the step of calculating. 前記プロセッサが、各次の暗号化バイトに対して、前記次の暗号化バイトと前記平文の各1つ以上のパケット内の次の暗号文バイトとの排他的論理和をとることによって、受信された次の平文バイトを計算するステップをさらに包含する、請求項4に記載のパケット暗号化方法。The processor receives for each next encrypted byte an exclusive OR of the next encrypted byte and the next ciphertext byte in each one or more packets of the plaintext. 5. The packet encryption method of claim 4, further comprising the step of calculating the next plaintext byte. 前記第4の変数を計算するステップは、
前記プロセッサが、カウンタを設定するステップと、
該プロセッサが、前記第1の変数と、前記第3の変数および該カウンタにより示される前記Sベクトル内の値とを前記所定の数を法として加算することにより、該第4の変数を計算するステップと、
該プロセッサが、前記平文の各次の1つ以上のパケットに対して、予め決定されたスケジュールにより、該カウンタの値をインクリメントするステップ
をさらに包含する、請求項4に記載のパケット暗号化方法。
Calculating a fourth variable,
Wherein the processor, and setting a counter,
The processor calculates the fourth variable by adding the first variable and the value in the S vector indicated by the third variable and the counter modulo the predetermined number. Steps ,
5. The packet encryption method according to claim 4, further comprising the step of incrementing the value of the counter according to a predetermined schedule for each one or more next packets of the plaintext. .
前記カウンタを設定するステップは、
前記プロセッサが、前記平文の1つ以上のパケットのうちの第1のパケットに対して、ロールオーバカウンタをゼロにリセットするステップと、
該プロセッサが、該平文の各次の1つ以上のパケットに対して、前記シーケンスナンバーをインクリメントするステップが該シーケンスナンバーの値をオール1からオール0に遷移させる場合に該ロールオーバカウンタをインクリメントするステップ
を包含する、請求項8に記載のパケット暗号化方法。
The step of setting the counter includes
Wherein the processor is for the first packet of the one or more packets of the plaintext, and resetting the rollover counter to zero,
Said processor, for each next one or more packets of plaintext, incrementing the sequence number increments the rollover counter when transitioning to the all 0 the value of the sequence number from the all-1 The packet encryption method according to claim 8, comprising the steps of :
前記プロセッサが、前記平文の複数のバイトのうちの各次のバイトに対して、前記Sベクトルを並び替えるステップであって、
該並び替えるステップは、
該プロセッサが、前記Sベクトルのコピーを保存するステップと、
該プロセッサが、前記第3の変数により示される該Sベクトル内の値と前記第4の変数により示される該Sベクトル内の値とを入れ替えるステップであって、該Sベクトル内の値は、前記次の暗号化バイトを特定した後に入れ替えられる、ステップ
を包含する、ステップと、
該プロセッサが、該平文の各次の1つ以上のパケットに対して、該保存されたSベクトルを復元するステップ
をさらに包含する、請求項4に記載のパケット暗号化方法。
Wherein the processor, for each next byte of the plurality of bytes of the plaintext, the a changing step arranges the S-vector,
The reordering step includes:
A step the processor is to save a copy of the S-vector,
Said processor, comprising the steps of replacing the values in the S vector indicated by the value and the fourth variable in the S vector represented by the third variable, the value within the S-vector, the is replaced after identifying the next encryption byte, including the steps, the steps,
It said processor, for each next one or more packets of plaintext, further comprising, a packet encryption method according to claim 4 and restoring the saved S-vector.
平文Pの複数のバイトを有する1つ以上のパケットを複数の暗号文バイトCを有する1つ以上のパケットに変換するパケット暗号化方法であって、
パケット暗号化方法は、
プロセッサが、秘密鍵を取得するステップと、
該プロセッサが、該秘密鍵を用いて、複数のSベクトルバイトを有するSベクトルを計算するステップと、
該プロセッサが、第1の部分と第2の部分とを有するシーケンスナンバーをランダムに設定するステップと、
該プロセッサが、各連続的な1つ以上のパケットに対して、該シーケンスナンバーをインクリメントするステップと、
該プロセッサが、j=(該シーケンスナンバーの第1の部分)に従って、第1の変数jを設定するステップと、
該プロセッサが、i=(該シーケンスナンバーの第2の部分)に従って、第2の変数iを計算するステップと、
該プロセッサが、該平文Pの複数のバイトのうちの各連続的バイトに対して、次の連続的暗号文バイトCを計算するステップであって、
該計算するステップは、
該プロセッサが、j=j+S[i]に従って、該第1の変数をさらに計算するステップと、
該プロセッサが、第3の変数kを設定するステップと、
該プロセッサが、i=i+kに従って、該第2の変数iをさらに計算するステップと、
該プロセッサが、E=S[S[i]+S[j]]に従って、該Sベクトル内の該次の連続的暗号化バイトEを特定するステップと、
該プロセッサが、C=E
Figure 0004020197
Pに従って、該次の連続的暗号化バイトEを次の連続的暗号文バイトCに変換するステップ
を包含する、ステップと、
該プロセッサが、該平文Pの複数のバイトのうちの最後のバイトが該1つ以上のパケットのうちの次のパケットに対して暗号文バイトCに変換された場合、該プロセッサが、該1つ以上のパケットのうちの次の連続的パケットを受信器に伝送するステップ
を包含する、パケット暗号化方法。
A packet encryption method for converting one or more packets having a plurality of plaintext P bytes into one or more packets having a plurality of ciphertext bytes C,
The packet encryption method is:
And step processor, to retrieve the secret key,
A step of the processor, using the private key, to calculate the S-vector having a plurality of S-vector bytes,
A step of the processor sets a sequence number having a first portion and a second portion at random,
Said processor, for each successive one or more packets, incrementing the sequence number,
The processor, j = according (a first portion of the sequence number), and setting a first variable j,
Said processor, i = according (second part of the sequence number), calculating a second variable i,
Said processor, for each successive byte of the plurality of bytes of plaintext P, and calculating the next successive ciphertext byte C,
The calculating step includes:
A step wherein the processor according to j = j + S [i] , that further calculating the first variable,
A step of the processor sets the third variable k,
A step the processor is in accordance with i = i + k, which further calculates a second variable i,
The processor, according to E = S [S [i] + S [j]], identifying successive encryption byte E in said next in the S vector,
The processor has C = E
Figure 0004020197
According P, comprising the steps of converting a continuous encryption byte E of this next to the next successive ciphertext byte C, a step,
If the processor converts the last byte of the plurality of bytes of the plaintext P to ciphertext byte C for the next packet of the one or more packets, the processor the following includes a step of transmitting to the receiver a continuous packet, the packet encryption method of the above packets.
前記第2の変数iを計算するステップは、
前記プロセッサが、i=(前記シーケンスナンバーの下位)
Figure 0004020197
S[j]に従って、該下位シーケンスナンバーと第1の変数により示される前記Sベクトル内の値との排他的論理和をとるステップを包含する、請求項11に記載のパケット暗号化方法。
Calculating a second variable i,
The processor is: i = (subordinate to the sequence number)
Figure 0004020197
The packet encryption method according to claim 11, comprising the step of taking an exclusive OR of the lower sequence number and a value in the S vector indicated by a first variable according to S [j].
前記第1の変数jをさらに計算するステップは、
前記プロセッサが、カウンタrを設定するステップと、
該プロセッサが、j=j+S[i]+S[r]に従って、該第1の変数jをさらに計算するステップと、
該プロセッサが、前記1つ以上のパケットのうちの各連続的パケットに対して、該カウンタrの値をインクリメントするステップ
を包含する、請求項11に記載のパケット暗号化方法。
The step of further calculating the first variable j includes:
A step wherein the processor is to set the counter r,
A step the processor is further to calculate the j = j + S [i] + according S [r], the first variable j,
It said processor, for each successive packet of the one or more packets, comprising a step of incrementing the value of the counter r, packet encryption method according to claim 11.
前記次の連続的暗号化バイトEを計算するステップは、
前記プロセッサが、前記Sベクトルを並び替えるステップであって、
該並び替えるステップは、
該プロセッサが、該Sベクトルのコピーを保存するステップと、
該プロセッサが、前記第1の変数jにより示される前記複数のSベクトルバイトのうちのバイトと、前記第2の変数iにより示される該複数のSベクトルバイトのうちのバイトとを入れ替えるステップ
を包含する、ステップと、
該プロセッサが、前記平文Pの複数のバイトのうちの最後のバイトが前記次の1つ以上のパケットに対して前記複数の暗号文バイトCに変換された場合、該保存されたSベクトルを復元するステップ
をさらに包含する、請求項11に記載のパケット暗号化方法。
Calculating said next successive encryption byte E is
It said processor, comprising the steps of: rearranging the S vector,
The reordering step includes:
Said processor and storing a copy of the S-vector,
The processor comprises a byte of the plurality of S-vector bytes indicated by the first variable j, the step of replacing a byte of the plurality of S-vector bytes indicated by said second variable i Including, steps ,
When the last byte of the plurality of bytes of the plaintext P is converted into the plurality of ciphertext bytes C for the next one or more packets, the processor restores the stored S vector further comprising, a packet encryption method of claim 11, comprising the steps of.
平文Pの複数のバイトを有する1つ以上のパケットを複数の暗号文バイトCを有する1つ以上のパケットに変換するパケット暗号化方法であって、
パケット暗号化方法は、
プロセッサが、秘密鍵を取得するステップと、
該プロセッサが、該秘密鍵を用いて、複数のSベクトルバイトを有するSベクトルを計算するステップと、
該プロセッサが、高位および下位を有するシーケンスナンバーをランダムに設定するステップと、
該プロセッサが、各連続的な1つ以上のパケットに対して、該シーケンスナンバーをインクリメントするステップ
該プロセッサが、該平文Pの複数のバイトのうちの各連続的バイトに対して、次の連続的暗号化バイトEを計算するステップであって、
該計算するステップは、
該プロセッサが、j=(該シーケンスナンバーの高位)に従って、第1の変数jを設定するステップと、
該プロセッサが、i=(該シーケンスナンバーの下位)
Figure 0004020197
S[j]に従って、第2の変数iを計算するステップと、
該プロセッサが、カウンタrを設定するステップと、
該プロセッサが、j=j+S[i]+S[r]に従って、該第1の変数をさらに計算するステップと、
該プロセッサが、第3の変数kを設定するステップと、
該プロセッサが、i=i+kに従って、該第2の変数iをインクリメントするステップと、
該プロセッサが、E=S[S[i]+S[j]]に従って、該Sベクトル内の該次の連続的暗号化バイトEを特定するステップと、
該プロセッサが、C=E
Figure 0004020197
Pに従って、該次の連続的暗号化バイトEを次の連続的暗号文バイトCに変換するステップ
を包含する、ステップと、
該プロセッサが、該平文Pの複数のバイトのうちの最後のバイトが該1つ以上のパケットのうちの次のパケットに対して暗号文バイトCに変換された場合、該プロセッサが、該1つ以上のパケットのうちの次の連続的パケットを受信器に伝送するステップ
を包含する、パケット暗号化方法。
A packet encryption method for converting one or more packets having a plurality of plaintext P bytes into one or more packets having a plurality of ciphertext bytes C,
The packet encryption method is:
And step processor, to retrieve the secret key,
A step of the processor, using the private key, to calculate the S-vector having a plurality of S-vector bytes,
A step of the processor sets a sequence number having a high and a low order randomly,
Said processor, for each successive one or more packets, steps and the processor for incrementing the sequence number for each successive byte of the plurality of bytes of plaintext P, the next successive and calculating the encryption byte E,
The calculating step includes:
The processor, j = according (high of the sequence number), and setting a first variable j,
When the processor: i = (subordinate to the sequence number)
Figure 0004020197
According S [j], calculating a second variable i,
A step of the processor sets a counter r,
The processor according to j = j + S [i] + S [r], the steps of further calculating a first variable,
A step of the processor sets the third variable k,
A step the processor is in accordance with i = i + k, for incrementing the second variable i,
The processor, according to E = S [S [i] + S [j]], identifying successive encryption byte E in said next in the S vector,
The processor has C = E
Figure 0004020197
According P, comprising the steps of converting a continuous encryption byte E of this next to the next successive ciphertext byte C, a step,
If the processor converts the last byte of the plurality of bytes of the plaintext P to ciphertext byte C for the next packet of the one or more packets, the processor the following includes a step of transmitting to the receiver a continuous packet, the packet encryption method of the above packets.
JP2002382422A 2002-01-04 2002-12-27 Efficient packet encryption method Expired - Fee Related JP4020197B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/038,295 US7006628B2 (en) 2002-01-04 2002-01-04 Efficient packet encryption method
US10/038295 2002-01-04

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007044679A Division JP2007140566A (en) 2002-01-04 2007-02-23 Efficient packet encryption method

Publications (3)

Publication Number Publication Date
JP2003234732A JP2003234732A (en) 2003-08-22
JP2003234732A5 JP2003234732A5 (en) 2005-03-10
JP4020197B2 true JP4020197B2 (en) 2007-12-12

Family

ID=21899121

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2002382422A Expired - Fee Related JP4020197B2 (en) 2002-01-04 2002-12-27 Efficient packet encryption method
JP2007044679A Pending JP2007140566A (en) 2002-01-04 2007-02-23 Efficient packet encryption method

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2007044679A Pending JP2007140566A (en) 2002-01-04 2007-02-23 Efficient packet encryption method

Country Status (5)

Country Link
US (1) US7006628B2 (en)
EP (1) EP1326367B1 (en)
JP (2) JP4020197B2 (en)
CA (1) CA2415508A1 (en)
DE (1) DE60301147T2 (en)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167476B1 (en) * 2002-04-12 2007-01-23 Juniper Networks, Inc. Systems and methods for routing data in a network device
JP2004133087A (en) * 2002-10-09 2004-04-30 Sony Corp Block encryption method and block encryption circuit
JP3821086B2 (en) * 2002-11-01 2006-09-13 ソニー株式会社 Streaming system, streaming method, client terminal, data decoding method, and program
US7457954B2 (en) * 2003-06-18 2008-11-25 Denso Corporation Communications system and packet structure
US20050081029A1 (en) * 2003-08-15 2005-04-14 Imcentric, Inc. Remote management of client installed digital certificates
US8437475B2 (en) * 2004-03-19 2013-05-07 Verizon Corporate Services Group Inc. Packet-based and pseudo-packet-based cryptographic synchronization systems and methods
US7831825B2 (en) * 2004-03-19 2010-11-09 Verizon Corporate Services Group Inc. Packet-based and pseudo-packet based cryptographic communications systems and methods
US7406595B1 (en) 2004-05-05 2008-07-29 The United States Of America As Represented By The Director, National Security Agency Method of packet encryption that allows for pipelining
US20050273853A1 (en) * 2004-05-24 2005-12-08 Toshiba America Research, Inc. Quarantine networking
US7620181B2 (en) * 2005-04-20 2009-11-17 Harris Corporation Communications system with minimum error cryptographic resynchronization
US8228917B2 (en) 2005-04-26 2012-07-24 Qualcomm Incorporated Method and apparatus for ciphering and re-ordering packets in a wireless communication system
US8447968B2 (en) 2005-10-28 2013-05-21 Alcatel Lucent Air-interface application layer security for wireless networks
US8842834B2 (en) * 2007-03-19 2014-09-23 Harris Corporation Robust delivery of packet based secure voice
US8848924B2 (en) * 2008-06-27 2014-09-30 University Of Washington Privacy-preserving location tracking for devices
US8724548B2 (en) * 2010-04-22 2014-05-13 Qualcomm Incorporated Counter check procedure for packet data transmission
US10708246B1 (en) * 2017-12-08 2020-07-07 Amazon Technologies, Inc. Extending cryptographic-key lifespan in network encryption protocols
CN108377182A (en) * 2018-01-12 2018-08-07 电子科技大学 A kind of the RC4 stream ciphers generating means and method of high safety
US20200177540A1 (en) * 2018-07-26 2020-06-04 Secturion Systems, Inc. In-line transmission control protocol processing engine using a systolic array

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3384434B2 (en) * 1995-12-08 2003-03-10 日本電信電話株式会社 Scramble communication method and system
US6490354B2 (en) * 1998-06-23 2002-12-03 Microsoft Corporation Lightweight word-oriented technique for generating a pseudo-random sequence for use in a keystream of a stream cipher
US6549622B1 (en) * 1998-11-23 2003-04-15 Compaq Computer Corporation System and method for a fast hardware implementation of RC4
JP2000315997A (en) * 1999-04-30 2000-11-14 Toshiba Corp Encryption communication method and node unit
US20020044651A1 (en) * 2000-05-16 2002-04-18 Tuvell Walter E. Method and apparatus for improving the security of cryptographic ciphers
US7277542B2 (en) * 2000-09-25 2007-10-02 Broadcom Corporation Stream cipher encryption application accelerator and methods thereof
US6862354B1 (en) * 2000-09-29 2005-03-01 Cisco Technology, Inc. Stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a key stream
US6990199B2 (en) * 2001-06-12 2006-01-24 Corrent Corporation Apparatus and method for cipher processing system using multiple port memory and parallel read/write operations

Also Published As

Publication number Publication date
EP1326367A1 (en) 2003-07-09
JP2003234732A (en) 2003-08-22
EP1326367B1 (en) 2005-08-03
DE60301147D1 (en) 2005-09-08
JP2007140566A (en) 2007-06-07
US20030131233A1 (en) 2003-07-10
US7006628B2 (en) 2006-02-28
CA2415508A1 (en) 2003-07-04
DE60301147T2 (en) 2006-06-08

Similar Documents

Publication Publication Date Title
JP2007140566A (en) Efficient packet encryption method
KR101387799B1 (en) Encryption method for message authentication
KR101527979B1 (en) Information transmission security method
JP4836493B2 (en) Method for real-time transfer protocol (RTP) packet authentication
US8249255B2 (en) System and method for securing communications between devices
KR102609221B1 (en) Methods and systems for improved authenticated encryption in counter-based cryptographic systems
WO2006086554A2 (en) Methods and systems for incremental crypto processing of fragmented packets
US8204216B2 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data
KR20170137872A (en) Generate a cryptographic checksum
KR101088549B1 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data
Wool A note on the fragility of the" Michael" message integrity code
US20080165953A1 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data
EP3729716B1 (en) Stream ciphering
KR101150577B1 (en) Method of generating a cryptosync
KR100551992B1 (en) encryption/decryption method of application data
KR100797106B1 (en) Method for encrypting and decrypting transmmited and received packet in wireless lan
Ahmad et al. Energy efficient sensor network security using Stream cipher mode of operation
WO2003049363A1 (en) System and method for symmetrical cryptography
KR20060091018A (en) Apparatus for encapsulation and decapsulation using ccmp in wireless lan
EP2087643B1 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data
Yu et al. Secure Broadcast in Wireless Sensor Networks
Ramakrishnan Wireless network security using a low cost pseudo random number generator

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040402

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040402

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060824

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061122

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070702

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070830

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070918

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111005

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121005

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131005

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees