(57)【要約】【課題】  暗号化時間短縮及びデータ処理量の向上を図ることができ、例外事項が発生した場合も送受信中に入力データを暗号化、復号化できる高速のオフセットコードブックモードのためのブロック暗号化装置及びその方法を提供する。【解決手段】  暗号化装置は、データパケットの送信または受信中にオフセットコードブックモードを実行する。この時に、分割、伝送及び再試行例外事項を定義し、該当例外事項が発生すれば、これに対応してオフセットコードブックモードを実行する。したがって、例外事項が発生しても、これを解決するためのアルゴリズムを通じて送受信中に入力データを暗号化、復号化する。【選択図】      図３
2004254313.tif 000002
【特許請求の範囲】
【請求項１】
暗号化装置において、
外部から暗号化または復号化するための入力データを受けて貯蔵し、貯蔵された入力データをブロック単位のパケットとして出力する入力部と、
前記入力データの大きさ情報を受け入れ、前記入力データをブロック単位のパケットとして出力するように制御し、前記入力データを送信または受信中に暗号化または復呼化するようにオフセットコードブックモードを制御する制御部と、
前記入力部から前記パケットのヘッダ情報を受けて前記制御部に伝送し、前記ヘッダ情報から前記パケットの送信または受信時分割、伝送または再試行による例外事項が発生したか否かを判別して、少なくとも一つの例外事項が発生すれば、前記制御部に前記発生した例外事項に対応する情報を出力する例外事項処理部と、
前記パケットを暗号化及び復号化するためのオフセットコードブックと、タグ及びメッセージ認証コードを生成、貯蔵し、前記制御部から暗号キーを受けてオフセットコードブックモードに前記パケットを暗号化及び復号化する暗号化処理部と、
前記制御部により制御され、前記暗号化処理部から出力される暗号化または復号化されたパケットを受けて外部に出力する出力部とを含むことを特徴とする暗号化装置。
【請求項２】
前記入力部は、
外部から暗号化または復号化するための入力データを受けて貯蔵する入力バッファと、
前記入力バッファから前記入力データをブロック単位のパケットで受けて、前記例外事項処理部及び前記暗号処理部にルーティングする入力バス制御部とを含むことを特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記暗号化処理部は、
前記制御部から暗号キーを受けて、暗号化または復号化するための標準アルゴリズムを利用してオフセットコードブックモードを処理するブロックサイファエンジンと、
前記パケットを暗号化及び復号化するためのオフセットコードブックと、前記オフセットコードブックを生成するためのタグとメッセージ認証コードを生成、貯蔵し、前記制御部の制御に対応して前記ブロックサイファエンジンと連係してオフセットコードブックモードに前記パケットを暗号化及び復号化する暗号処理ユニットと、
前記暗号処理ユニットから生成されたオフセットコードブックを貯蔵するオフセットコードブックメモリと、
前記例外事項のうち伝送例外事項を処理するためのチェックサムと送信側アドレスを貯蔵するチェックサムメモリとを含むことを特徴とする請求項１に記載の暗号化装置。
【請求項４】
前記暗号処理ユニットは、
送信及び受信時に動作してオフセットコードブックを生成して、前記オフセットコードブックメモリに貯蔵するオフセットコードブック初期化部と、
受信時に動作して以前のオフセットコードブックを利用して、次のオフセットコードブックを生成し、前記入力部から前記ブロック単位のパケットを復号化し、前記チェックサムメモリに貯蔵されたタグを生成するためのチェックサムをアップデートするブロック復号化部と、
受信時に動作し、以前のオフセットコードブックを利用して次のオフセットコードブックを生成して、前記パケットのうち最後のブロックを復号化し、前記タグを生成するためのチェックサムをアップデートする最後のブロック復号化部と、
受信時に動作し、前記ブロック復号化部及び前記最後のブロック復号化部によってアップデートされたチェックサム値を利用してタグを生成するタグ生成部と、
受信時に動作し、前記タグ生成部によって生成されたタグと伝送されたメッセージ認証コードとを比較して、伝送状態によるエラー可否を判別して出力するタグ比較部と、
送信時に動作し、以前のオフセットコードブックを利用して次のオフセットコードブックを生成し、伝送する入力データの最後ではないブロックを暗号化し、メッセージ認証コードを生成するためのチェックサムをアップデートするブロック暗号化部と、
送信時に動作し、以前のオフセットコードブックを利用して次のオフセットコードブックを生成し、伝送する入力データの最後のブロックを暗号化し、メッセージ認証コードを生成するためのチェックサムをアップデートする最後のブロック暗号化部と、
送信時に動作し、前記ブロック暗号化部及び前記最後のブロック暗号化部によってアップデートされたチェックサムを利用してメッセージ認証コードを生成するメッセージ認証コード生成部とを含むことを特徴とする請求項３に記載の暗号化装置。
【請求項５】
前記例外事項処理部は、
前記入力部から前記ヘッダ情報を受けて、前記例外事項が発生したか否かを判別するための情報を貯蔵するヘッダ情報メモリと、
前記入力部から前記パケットのうち最初のパケットのヘッダ情報を受けて、前記パケットのどのようなブロックまたはメッセージ認証コードが中間で分割されたか否かを判別し、判別の結果を前記制御部に伝達する分割例外事項処理ユニットと、
前記ヘッダ情報メモリと前記入力部から前記ヘッダ情報を受けて、前記パケットのうち以前のパケットと次のパケットが互いに異なる送信側から送信されたか否かを判別し、判別結果を前記制御部に伝達する伝送例外事項処理ユニットと、
前記ヘッダ情報から受信された以前のパケットが前記入力データの最後のパケットではなくて、現在受信されるパケットの再試行であるか、または送信したパケットにエラーが発生したか否かを判別し、判別結果を前記制御部に伝達する再試行例外事項処理ユニットとを含むことを特徴とする請求項１に記載の暗号化装置。
【請求項６】
前記制御部は、
前記例外事項処理部から分割例外事項が発生すれば、前記パケットの少なくとも一つのブロックを残しておいて、暗号化または復号化するように制御することを特徴とする請求項１または５に記載の暗号化装置。
【請求項７】
前記制御部は、
前記例外事項処理部から伝送例外事項が発生すれば、前記入力バッファをクリアして前記受信されたパケットを除去するように制御することを特徴とする請求項１または５に記載の暗号化装置。
【請求項８】
前記制御部は、
前記例外事項処理部から伝送例外事項が発生すれば、前記パケットのうち以前のパケットと次のパケットの送信側ソースを判別して復号化するように制御することを特徴とする請求項１または５に記載の暗号化装置。
【請求項９】
前記制御部は、
前記例外事項処理部から再試行例外事項が発生し、前記受信されたパケットが以前のパケットであれば、オフセットコードブックモードを実行しないように制御することを特徴とする請求項１または５に記載の暗号化装置。
【請求項１０】
前記制御部は、
前記例外事項処理部から再試行例外事項が発生すれば、前記送信されるパケットをオフセットコードブックモードに再伝送するように制御することを特徴とする請求項１または５に記載の暗号化装置。
【請求項１１】
データネットワークで、パケットの送／受信中にオフセットコードブックモード方法を利用して暗号化／復号化する方法において、
分割されたフレームを示す二つ以上のパケットの少なくとも一番目のパケットのためのヘッダ情報を受け入れる段階と、
前記二つ以上のパケットを各々より小さいブロックに分割する段階と、
前記ヘッダ情報から前記ブロックの暗号化／復号化する間に、分割例外事項、伝送例外事項及び再試行例外事項のうちいずれか一つが発生するか否かを判別する段階と、
前記判別された例外事項に対応してオフセットコードブックモード暗号化／復号化を実行する段階とを含むことを特徴とする暗号化／復号化方法。
【請求項１２】
前記オフセットコードブックモード暗号化／復号化を実行する段階は、
前記判別の結果、前記分割例外事項が発生すれば、以前のパケットの少なくとも一つのブロックを残し、次のパケットの暗号化／復号化を実行する段階と、
以前受信されたパケットと現在受信されたパケットの復号化から各々現在受信されたパケットを復号化することにより伝送例外事項を処理する段階と、
再試行例外事項が差し迫れば、現在受信されたパケットを削除することにより再試行例外事項を処理する段階とを含むことを特徴とする請求項１１に記載の暗号化／復号化方法。
【請求項１３】
前記分割例外事項は最後のブロックのパケットまたはメッセージ認証コードの一部が分割する時に発生し、
オフセットコードブックモード暗号化／復号化を実行する段階は、
分割例外事項は前記最後のブロックが分割されて発生すれば、前記最後のブロックを残し、
メッセージ認証コードが分割されて発生すれば、前記最後のブロックと、前記最後のブロックの以前の少なくとも一つのブロックを残すことを特徴とする請求項１１に記載の暗号化／復号化方法。
【請求項１４】
データ送信／受信時に、オフセットコードブックモードの動作のためのブロックレベル暗号化／復号化方法において、
暗号化／復号化されたデータのフレームを受け入れる段階と、
前記フレームを完全に受ける前に、前記フレームを少なくとも二つのパケットに分割する段階と、
前記フレームを完全に受ける前に、少なくとも一つの前記パケットを二つ以上のブロックに分割する段階と、
前記フレームを完全に受ける前に、暗号化／復号化のために前記少なくとも一つのパケットの前記ブロックを出力する段階と、
前記フレームを完全に受ける前に、前記少なくとも一つのパケットの前記ブロックを暗号化／復号化する段階とを含むことを特徴とする暗号化／復号化方法。
【請求項１５】
前記最後のパケットの前記最後のブロックを除いたすべてのブロックは前記フレームを完全に受ける前に、暗号化／復号化することを特徴とする請求項１４に記載の暗号化／復号化方法。
【請求項１６】
分割例外事項、伝送例外事項及び再試行例外事項のうちいずれか一つが発生するか否かを認識し、
前記暗号化／復号化することは前記分割例外事項、前記伝送例外事項及び前記再試行例外事項のうちいずれか一つが発生すれば、これに対応して異なることを特徴とする請求項１４に記載の暗号化／復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号化装置に関するものであり、さらに具体的には、高速のブロック単位のオフセットコードブックモードを実現するための暗号化装置及びその方法に関するものである。
【背景技術】
【０００２】
暗号化のための標準アルゴリズムでは、データ暗号化標準（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ：ＤＥＳ）と、拡張暗号化標準（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ：ＡＥＳ）などがあり、例えばデータ暗号化標準ＤＥＳはＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ）、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）、ＯＦＢ（Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ）及びＣＦＢ（Ｃｉｐｈｅｒ  Ｆｅｅｄｂａｃｋ）モードを定義しており、最近ではカウンタモード及びＯＣＢ（Ｏｆｆｓｅｔ  Ｃｏｄｅｂｏｏｋ）モードなどが提案された。
【０００３】
したがって、データネットワークでデータ保安のためにブロックサイファ(ｂｌｏｃｋ  ｃｉｐｈｅｒ)と、それを利用して実際暗号化を実行する様々な動作モード(ｍｏｄｅ  ｏｆ  ｏｐｅｒａｔｉｏｎ)を使う。
【０００４】
ブロックサイファは暗号文を作るために、暗号キーとアルゴリズムがデータブロック単位に適用される暗号化方法であり、プレインテキスト(ｐｌａｉｎｔｅｘｔ)の同一のブロックが一つのメッセージで同一の暗号文にコーディングされないようにするため、以前の暗号ブロックの暗号文を次のブロックに順次に適用する。例えば、同時間に暗号化された同一のメッセージが同暗号文を作らないように、乱数発生器による初期化ベクタをプレインテキストの第１ブロックに組み合わせることによって、次のブロックが以前の暗号ブロックと異なる暗号文になる。
【０００５】
しかし、一般的な暗号化装置は、データネットワークでパケットを受けた後、または伝送する前に暗号化を実行するので、暗号化時間だけの遅延時間が発生し、また暗号化機能を実行するために追加に使われるシステム資源すなわち、オーバヘッド(ｏｖｅｒｈｅａｄ)が増加してデータ処理量(ｄａｔａ  ｔｈｒｏｕｇｈｐｕｔ)を弱化させる。さらに、もし、送ろうとするフレームを分割する前に暗号化をしたら、伝送または受信中に暗号化ができなくなる問題点がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、上述の問題点を解決し、オフセットコードブックモードでパケットを送受信する間に暗号化を実行して、データ処理量を向上させる暗号化装置及びその処理方法を提供することにある。このような暗号化装置及び方法を適用しながら、発生する例外事項を定義し、これらに対する問題点の解決方法を提示する。
【０００７】
本発明の他の目的は、上述の問題点を解決し、無線ＬＡＮ（ＷＬＡＮ）を利用するモバイルシステムでのブロック暗号化動作時、高速な暗号化装置及びその処理方法を提供することにある。
【課題を解決するための手段】
【０００８】
上述の目的を達成するために本発明の一特徴によると、暗号化装置は、外部から暗号化または復号化するための入力データを受けて貯蔵し、貯蔵された入力データをブロック単位のパケットとして出力する入力部と、前記入力データの大きさ情報を受け入れ、前記入力データをブロック単位のパケットとして出力するように制御し、前記入力データを送信または受信中に暗号化または復号化するようにオフセットコードブックモードを制御する制御部と、前記入力部から前記パケットのヘッダ情報を受けて前記制御部に伝送し、前記ヘッダ情報から前記パケットの送信または受信時分割、伝送または再試行による例外事項が発生したか否かを判別して、少なくとも一つの例外事項が発生すれば、前記制御部に前記発生した例外事項に対応する情報を出力する例外事項処理部と、前記パケットを暗号化及び復号化するためのオフセットコードブックと、タグ及びメッセージ認証コードを生成、貯蔵し、前記制御部から暗号キーを受けてオフセットコードブックモードに前記パケットを暗号化及び復号化する暗号化処理部と、前記制御部により制御され、前記暗号化処理部から出力される暗号化または復号化されたパケットを受けて外部に出力する出力部とを含む。
【０００９】
望ましい形態において、前記入力部は、外部から暗号化または復号化するための入力データを受けて貯蔵する入力バッファと、前記入力バッファから前記入力データをブロック単位のパケットで受けて、前記例外事項処理部及び前記暗号処理部にルーティング(ｒｏｕｔｉｎｇ)する入力バス制御部とを含む。
【００１０】
望ましい形態において、前記暗号化処理部は、前記制御部から暗号キーを受けて、暗号化または復号化するための標準アルゴリズムを利用してオフセットコードブックモードを処理するブロックサイファエンジンと、前記パケットを暗号化及び復号化するためのオフセットコードブックと、前記オフセットコードブックを生成するためのタグとメッセージ認証コードを生成、貯蔵し、前記制御部の制御に対応して前記ブロックサイファエンジンと連係してオフセットコードブックモードに前記パケットを暗号化及び復号化する暗号処理ユニットと、前記暗号処理ユニットから生成されたオフセットコードブックを貯蔵するオフセットコードブックメモリと、前記例外事項のうち伝送例外事項を処理するためのチェックサムと送信側アドレスを貯蔵するチェックサムメモリとを含む。
【００１１】
この形態において、前記暗号処理ユニットは、送信及び受信時に動作してオフセットコードブックを生成して、前記オフセットコードブックメモリに貯蔵するオフセットコードブック初期化部と、受信時に動作して以前のオフセットコードブックを利用して次のオフセットコードブックを生成し、前記入力部から前記ブロック単位のパケットを復号化し、前記チェックサムメモリに貯蔵されたタグを生成するためのチェックサムをアップデートするブロック復号化部と、受信時に動作し、以前のオフセットコードブックを利用して次のオフセットコードブックを生成して、前記パケットのうち最後のブロックを復号化し、前記タグを生成するためのチェックサムをアップデートする最後のブロック復号化部と、受信時に動作し、前記ブロック復号化部及び前記最後のブロック復号化部によってアップデートされたチェックサム値を利用してタグを生成するタグ生成部と、受信時に動作し、前記タグ生成部によって生成されたタグと伝送されたメッセージ認証コードとを比較して、伝送状態によるエラー可否を判別して出力するタグ比較部と、送信時に動作し、以前のオフセットコードブックを利用して次のオフセットコードブックを生成し、伝送する入力データの最後ではないブロックを暗号化し、メッセージ認証コードを生成するためのチェックサムをアップデートするブロック暗号化部と、送信時に動作し、以前のオフセットコードブックを利用して次のオフセットコードブックを生成し、伝送する入力データの最後のブロックを暗号化し、メッセージ認証コードを生成するためのチェックサムをアップデートする最後のブロック暗号化部と、送信時に動作し、前記ブロック暗号化部及び前記最後のブロック暗号化部によってアップデートされたチェックサムを利用してメッセージ認証コードを生成するメッセージ認証コード生成部とを含む。
【００１２】
望ましい形態において、前記例外事項処理部は、前記入力部から前記ヘッダ情報を受けて、前記例外事項が発生するか否かを判別するための情報を貯蔵するヘッダ情報メモリと、前記入力部から前記パケットのうち最初のパケットのヘッダ情報を受けて、前記パケットのどのようなブロックまたはメッセージ認証コードが中間で分割されたか否かを判別し、判別の結果を前記制御部に伝達する分割例外事項処理ユニットと、前記ヘッダ情報メモリと前記入力部から前記ヘッダ情報を受けて、前記パケットのうち以前のパケットと次のパケットが互いに異なる送信側から伝送されたか否かを判別し、判別結果を前記制御部に伝達する伝送例外事項処理ユニットと、前記ヘッダ情報から受信された以前のパケットが前記入力データの最後のパケットではなくて、現在受信されるパケットの再試行であるか、または送信したパケットにエラーが発生したか否かを判別し、判別結果を前記制御部に伝達する再試行例外事項処理ユニットとを含む。
【００１３】
望ましい形態において、前記制御部は、前記例外事項処理部から分割例外事項が発生すれば、前記パケットの少なくとも一つのブロックを残しておいて暗号化または復号化するように制御し、前記例外事項処理部から伝送例外事項が発生すれば、前記入力バッファをクリアして前記受信されたパケットを除去するように制御する。また、前記制御部は前記例外事項処理部から伝送例外事項が発生すれば、前記パケットのうち以前のパケットと次のパケットの送信側ソースを判別して復号化するように制御する。
【００１４】
望ましい形態において、前記制御部は前記例外事項処理部から再試行例外事項が発生し、前記受信されたパケットが以前のパケットであれば、オフセットコードブックモードを実行しないように制御する。
【００１５】
望ましい形態において、前記制御部は前記例外事項処理部から再試行例外事項が発生すれば、前記送信されるパケットをオフセットコードブックモードに再伝送するように制御する。
【００１６】
データネットワークで、パケットの送／受信中にオフセットコードブックモード方法を利用して暗号化／復号化する方法は、分割されたフレームを示す二つ以上のパケットの少なくとも一番目のパケットのためのヘッダ情報を受け入れる段階と、前記二つ以上のパケットを各々より小さいブロックに分割する段階と、前記ヘッダ情報から前記ブロックの暗号化／復号化する間に、分割例外事項、伝送例外事項及び再試行例外事項のうちいずれか一つが発生するか否かを判別する段階と、前記判別された例外事項に対応してオフセットコードブックモード暗号化／復号化を実行する段階とを含むことを特徴とする。
【００１７】
望ましい形態において、前記オフセットコードブックモード暗号化／復号化を実行する段階は、前記判別の結果、前記分割例外事項が発生すれば、以前のパケットの少なくとも一つのブロックを残し、次のパケットの暗号化／復号化を実行する段階と、以前受信されたパケットと現在受信されたパケットの復号化から各々現在受信されたパケットを復号化することにより伝送例外事項を処理する段階と、再試行例外事項が差し迫れば、現在受信されたパケットを削除することにより再試行例外事項を処理する段階とを含む。
【００１８】
望ましい形態において、前記分割例外事項は最後のブロックのパケットまたはメッセージ認証コードの一部が分割する時に発生し、オフセットコードブックモード暗号化／復号化を実行する段階は、分割例外事項は前記最後のブロックが分割されて発生すれば、前記最後のブロックを残し、メッセージ認証コードが分割されて発生すれば、前記最後のブロックと、前記最後のブロックの以前の少なくとも一つのブロックを残す。
【００１９】
データ送信／受信時に、オフセットコードブックモードの動作のためのブロックレベル暗号化／復号化方法は、暗号化／復号化されたデータのフレームを受け入れる段階と、前記フレームを完全に受ける前に、前記フレームを少なくとも二つのパケットに分割する段階と、前記フレームを完全に受ける前に、少なくとも一つの前記パケットを二つ以上のブロックに分割する段階と、前記フレームを完全に受ける前に、暗号化／復号化のために前記少なくとも一つのパケットの前記ブロックを出力する段階と、前記フレームを完全に受ける前に、前記少なくとも一つのパケットの前記ブロックを暗号化／復号化する段階とを含むことを特徴とする。
【００２０】
望ましい形態において、前記最後のパケットの前記最後のブロックを除いたすべてのブロックは前記フレームを完全に受ける前に、暗号化／復号化する。また、分割例外事項、伝送例外事項及び再試行例外事項のうちいずれか一つが発生するか否かを認識し、前記暗号化／復号化することは前記分割例外事項、前記伝送例外事項及び前記再試行例外事項のうちいずれか一つが発生すれば、これに対応して異なるようにする。
【発明の効果】
【００２１】
したがって、本発明によると、データネットワークでデータパケットの送受信中に暗号化を実行することができることによって、暗号化装置及びこれを備えるシステムのデータ処理量を向上させる。
【００２２】
本発明の暗号化装置はパケットを送受信する間に暗号化を実行することによって、送信または受信時間と暗号化時間をオーバラップさせることができるようになって、暗号化時に発生する遅延時間を最小化し、データ処理量により大きい損害なしに、データ保安機能を提供することができる。
【００２３】
また、本発明の暗号化装置及びこれを備えるシステムで、送受信中に暗号化することによって、暗号化装置及びシステムのデータ処理量を向上させることができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態を添付の図面に基づいて詳細に説明する。
【００２５】
先ず、本発明の実施の形態で使われる用語を定義すると、次の通りである。
【００２６】
分割(ｆｒａｇｍｅｎｔａｔｉｏｎ)は、データ通信の効率性のため、伝送されるデータを一定の大きさに分けることを意味する。この時に、データが分けられたことをフラグメント(ｆｒａｇｍｅｎｔ)といい、分割する一定の大きさをフラグメントスレッショルド（ｆｒａｇｍｅｎｔ  ｔｈｒｅｓｈｏｌｄ）と言う。
【００２７】
フレームは送ろうとするデータ単位に分割する以前のデータを意味し、分割されるフレームの大きさがフラグメントスレッショルドより大きければ、多数の断片に分けられ、小さければ、フレーム自体を一つの断片と判断する。
【００２８】
パケットはフレームが分割されて生じた各々の断片を意味し、フラグメントとも称する。パケットは実際に伝送されるデータ単位である。
【００２９】
ブロックはブロックサイファが一回に伝送処理するデータ単位であり、その大きさはブロックサイファごとに異なり、いくつかの大きさを支援する場合もある。そして‘ブロックのバイト単位大きさ’を‘ＢｌｏｃｋＳｉｚｅ’と称する。
【００３０】
ボディは、パケットでヘッダ部分を除いたペイロード(ｐａｙｌｏａｄ)部分を意味する。
【００３１】
メッセージ認証コード(Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ：ＭＡＣ)はデータが伝送中にデータが変更されたか否かを確認するための手段であり、一般的に、フレームまたはパケット単位にメッセージ認証コードＭＡＣを計算して、フレームまたはパケットの後部分に結合する。‘ＭＡＣのバイト単位の大きさ’を‘ＭＡＣＳｉｚｅ’と称する。
【００３２】
ノンス(ｎｏｎｃｅ)はサイファで使われるキーと共に使う値であり、同一のキーに対して各々のフレームまたはパケットごとに別の値を有する。一般的に、ノンスはフレームまたはパケットに結合して伝送し、実際のペイロードと結合することもでき、またはヘッダと結合することもできる。本発明では、ヘッダに含まれると仮定する。
【００３３】
バッファはオフセットコードブックの前と後にＦＩＦＯタイプのようなバッファを置いて、入力内容を前のバッファに順次に貯蔵して、オフセットコードブックが必要なだけのデータのみをフェッチしてアルゴリズムを実行し、後のバッファに結果を出力する。バッファの大きさの制約はないと仮定する。
【００３４】
関数‘ＲｏｕｎｄＵｐ（ｘ）’はｘ値を切り上げることを意味する。ｘ値に小数点以下の数字があれば、ｘ＋１であり、ｘ値に小数点以下の数字がなければ、そのままｘ値を出力する。
【００３５】
図１は分割されないフレーム(ａ)がパケットとして伝送される時に、本発明と典型的なオフセットコードブックモードを適用する二つの方法による所要時間を比較した図である。ここでは、フレーム、パケット及びフラグメントが同一の場合を利用して受信することを説明する。
【００３６】
図１を参照すると、新しい方法(ｃ)は本発明のアルゴリズムを適用した時に、パケットの送受信中に、ブロック単位にオフセットコードブックモードを実行する。したがって、パケット全体が送受信されるまでオフセットコードブックモードを実行することができずに、待たなければならない典型的な方法(ｂ)より暗号化にかかる時間を節減する効果を示す。
【００３７】
新しい方法(ｃ)は、先ず、ヘッダ情報を獲得してオフセットコードブックモードに必要なパラメータ(例えば、パケットの大きさ、アドレスなど)を決め、第１ブロックＢ１がバッファに入力されれば、本発明によるオフセットコードブックモードを実行する。もし、ブロックサイファの実行速度が十分に速ければ、図に示したように、次の第２ブロックＢ２がバッファに入力される間に第１ブロックＢ１の復号化処理を完了することができる。したがって、第２ブロックＢ２がバッファに受信されるようになれば、上記の処理を繰り返すようになる。受信されたすべてのブロックＢ１〜Ｂｎの処理が完了すると、タグ生成ＴＡＧ＿ＧＥＮ及びタグ比較ＴＡＧ＿ＣＯＭＰを実行して復号化が終了する。
【００３８】
上述の新しい方法(ｃ)を利用すると、パケットの送受信を始めると同時に、オフセットコードブックモードを始めることができ、パケットの送受信が完了するとほとんど同時に、オフセットコードブックモードを完了することができる。一方、典型的な方法(ｂ)を利用する場合には、パケットを全部受信した後にオフセットコードブックモードを始めるので、図に示したように、動作モード時間が多くかかる。
【００３９】
図２はフレームを分割する前にオフセットコードブックモードを適用する時に、本発明と典型的な方法による所要時間を比較した図であり、ここでは、多数のパケットＰａｃｋｅｔ１〜Ｐａｃｋｅｔ３で構成されたフレーム(ａ)を伝送する場合を利用して説明する。
【００４０】
図２を参照すると、典型的な方法(ｂ)は、すべてのパケット(ａ)が受信された後、デフラグメンテーションをしてフレームを復元した後に、オフセットコードブックモードを適用する。しかし、新しい方法(ｃ)は本発明で提案するアルゴリズムを使った時に、各パケットが伝送される間にオフセットコードブックモードを実行して暗号化するのにかかる時間を節減する効果を得ることができる。すなわち、第１パケットＰａｃｋｅｔ１を受ける間にブロック単位Ｂ１〜Ｂｎにオフセットコードブックモードを実行すれば、第１パケットＰａｃｋｅｔ１の受信が完了するとほとんど同時に、オフセットコードブックモードを完了することができる。したがって、第２パケットＰａｃｋｅｔ２が入って来ても、続いて同一の処理方法を繰り返すことができるので、最後の第３パケットＰａｃｋｅｔ３が受信されるとほとんど同時に、オフセットコードブックモードを実行し、デフラグメンテーションＤＥＦＲＡＧを実行することによって暗号化動作が完了する。但し、この場合には、分割動作により後に説明される問題点が発生する。したがって、これら問題点を解決するための‘例外事項’を定義し、これを解決するためのアルゴリズムを利用してオフセットコードブックモードを実行する。本発明によって定義された例外事項及び該当のアルゴリズムは後で詳細に説明する。
【００４１】
図３乃至図１７を利用して本発明による暗号化装置の構成及びオフセットコードブックモード動作の手順を具体的に詳細に説明する。
【００４２】
図３は本発明による暗号化装置の構成を示したブロック図である。
【００４３】
図３を参照すると、前記暗号化装置１００は制御ユニット（ＣＯＮＴＲＯＬ  ＵＮＩＴ）１０２と、例外事項処理ユニット（ＥＸＣＥＰＴＩＯＮ  ＰＲＯＣＥＳＳＩＮＧ  ＵＮＩＴ）１２０と、暗号処理ユニット（ＣＲＹＰＴＯＰＲＯＣＥＳＳＩＮＧ  ＵＮＩＴ）１３０とを含む。さらに暗号化装置１００は、入力バッファ（ＦＩＦＯ）１０４と、入力／出力バス制御部（ＩＮＰＵＴ／ＯＵＴＰＵＴ  ＢＵＳ  ＣＴＲＬ）１０６，１１４と、ブロック暗号エンジン（ＢＬＯＣＫ  ＣＩＰＨＥＲ  ＥＮＧＩＮＥ）１０８と、オフセットコードブックメモリ（ＯＦＦＳＥＴ  ＣＯＤＥＢＯＯＫ  ＭＥＭＯＲＹ）１１０と、チェックサムメモリ（ＣＨＥＣＫＳＵＭ  ＭＥＭＯＲＹ）１１２とを含む。
【００４４】
前記入力バッファ１０４は、外部から暗号化、復号化するための入力データＩＮＰＵＴを受けて貯蔵するＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）タイプに具備され、貯蔵されたデータの大きさ情報を制御ユニット１０２に提供し、かつ貯蔵されたデータを暗号化、復号化するために入力バス制御部１０６に伝達する。
【００４５】
前記入力バス制御部１０６は入力バッファ１０４から伝送されたデータを制御ユニット１０２の制御を受けて例外事項処理ユニット１２０、または暗号処理ユニット１３０に提供するようにルーティングする。
【００４６】
前記制御ユニット１０２は入力バッファ１０４に貯蔵されたデータの大きさ情報を受け入れ、例外事項処理ユニット１２０から例外事項が発生したか否かを判別し、例外事項が発生すれば、該当情報を受けて残りのユニット１０６、１０８、１２０を例外事項に適するように駆動させる有限状態マシーン(Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ：ＦＳＭ)を具備する。
【００４７】
前記制御ユニット１０２は入力バッファ１０４に貯蔵されたデータをブロック単位に暗号化するために、ブロックサイズＢｌｏｃｋＳｉｚｅだけ貯蔵される度に、暗号処理ユニット１３０に伝達するように、入力バス制御部１０６を制御して、オフセットコードブック機能を実行する。さらにブロック暗号エンジン１０８に暗号キーを伝達し、暗号化であるか、復号化であるかを知らせる。
【００４８】
前記出力バス制御部１１４は制御ユニット１０２から制御信号を受けて、暗号処理ユニット１３０によって処理されたデータを受け入れて出力する。
【００４９】
前記例外事項処理ユニット１２０は、送受信時、データのヘッダ情報から例外事項が発生したか否かを判別し、例外事項が発生すれば、前記制御ユニット１０２に例外事項が発生したことを知らせる情報を提供する。具体的に、図４に示したように、前記例外事項処理ユニット１２０は、分割例外事項処理ユニット（ＦＲＡＧＭＥＮＴＡＴＩＯＮ  ＥＸＣＥＰＴＩＯＮ  ＰＲＯＣＥＳＳＩＮＧ  ＵＮＩＴ）１２２と、伝送例外事項処理ユニット（ＴＲＡＮＳＭＩＴＴＥＲ  ＥＸＣＥＰＴＩＯＮ  ＰＲＯＣＥＳＳＩＮＧ  ＵＮＩＴ）１２４と、再試行例外事項処理ユニット（ＲＥＴＲＹ  ＥＸＣＥＰＴＩＯＮ  ＰＲＯＣＥＳＳＩＮＧ  ＵＮＩＴ）１２６と、ヘッダメモリ（ＨＥＡＤＥＲ  ＭＥＭＯＲＹ）１２８とを具備する。このような例外事項処理ユニット１２０は前記入力バス制御部１０６からパケットの一番初めのヘッダ情報を受け入れ、ヘッダ情報のうちＭｏｒｅＦｒａｇビットと、送信アドレス(Ｔｒｎｓｍｉｔｔｅｒ  Ａｄｄｒｅｓｓ：ＴＡ)及び再試行ビットを各々の処理ユニット１２２〜１２６に提供する。各処理ユニット１２２〜１２６は自分が処理する例外事項が発生しれたか否かを判断して、例外事項が発生すれば、前記制御ユニット１０２に該当例外事項を処理するように知らせる。また前記ヘッダ情報全体、またはヘッダ情報のうち送信アドレスＴＡとＭｏｒＦｒａｇビットをヘッダメモリ１２８に貯蔵し、次に入力されるパケットの例外事項が発生するか否かを確認するために貯蔵されたヘッダ情報を使う。さらに例外事項処理ユニット１２０はヘッダ情報から抽出したノンス(ｎｏｎｃｅ)とパケット長さ(Ｐａｃｋｅｔ  Ｌｅｎｇｔｈ)及び送信アドレスＴＡを前記制御ユニット１０２に伝達する。
【００５０】
ここで、本発明によるオフセットコードブックモード実行時に発生する例外事項に対して詳細に説明する。
【００５１】
本発明によると、オフセットコードブックモードを分割されたパケット単位に実行すれば、分割されないフレーム単位に実行する場合よりブロック暗号化にかかる時間を節約することができるので、暗号化装置及びこれを具備するシステムの処理速度を向上させることができる。しかし、この時に発生する問題点すなわち例外事項があり、これを解決することが本発明の最大のキーポイントである。このような例外事項を定義し、その解決方法を提示する。
【００５２】
先ず、本発明による例外事項は大きく分けて‘分割例外(Ｆｒａｇｍｅｎｔａｔｉｏｎ  Ｅｘｃｅｐｔｉｏｎ)事項’、及び‘伝送例外(Ｔｒａｎｓｍｉｔｔｅｒ  Ｅｘｃｅｐｔｉｏｎ)事項’及び‘再試行例外(Ｒｅｔｒｙ  Ｅｘｃｅｐｔｉｏｎ)事項’がある。これら例外事項を解決するためのアルゴリズム(以下例外事項アルゴリズムという)を実現することが本発明の目的である。
【００５３】
先ず、‘分割例外事項’は、分割する時に、フレームがブロックサイズ単位に分割されるのではなくて、バイト単位に分割されるので、ブロックの中間で分割されることをいう。このような場合には、中間で分割されたブロックの前部分が含まれたフラグメントの最後のブロックを暗号化または復号化することができず、次のフレームが来る時まで待たなければならない。この例外事項を‘ブロックフラグ例外(ＢｌｏｃｋＦｒａｇ  Ｅｘｃｅｐｔｉｏｎ)事項’と定義し、パケットが最後のフラグメントではなくて、同時にフレームボディの大きさがブロックサイズの倍数でない場合に発生する。
【００５４】
例えば、図１６に示したように、ヘッダ情報ｈｄｒを除いたパケットの長さが７０バイトであり、フラグメントスレッショルドが４４バイト、ブロックサイズが１６バイト、ＭＡＣサイズが８バイトの場合に、第１及び第２フラグメントＦｒａｇｍｅｎｔ０、Ｆｒａｇｍｅｎｔ１は各々４４バイトと２６バイトに分割される。ブロックサイズが１６バイトであるので、第１フラグメントＦｒａｇｍｅｎｔ０は最後のブロックである第３ブロックＢｌｏｃｋ２の中間で分割されて、第１フラグメントＦｒａｇｍｅｎｔ０の最後のブロック１２バイトは送受信中に暗号化または復号化することができない。したがって、‘ブロックフラグ例外事項’が発生する。
【００５５】
また分割する時に、フレームのメッセージ認証コードＭＡＣを考慮せずに切るので、フレームのメッセージ認証コードの中間で切られる場合が発生する。このような場合にはフラグメントされたパケットを暗号化または復号化する時に、最後のフラグメントを受けるまでは、どのブロックが最後のブロックであるかがわからない。このような例外事項を‘ＭＡＣフラグ例外事項’と定義し、受信の場合には、最後のフラグメントを受けてボディの大きさがＭＡＣサイズ未満の時に、そして送信の場合には、最後のフラグメントのボディの大きさがフラグメントスレッショルドよりＭＡＣサイズ以内で小さい時に発生する。但し、フラグメントスレッショルドがＭＡＣサイズより大きい時に、このような条件が成り立つ。一般的に、ＭＡＣサイズがブロックサイズ以下であり、フラグメントスレッショルドがブロックサイズより大きいので、このような条件を使うことができる。
【００５６】
すなわち、図１７（Ａ）に示したように、ヘッダ情報を除いたパケットの長さが５２バイトであり、フラグメントスレッショルドが４８バイト、ブロックサイズが１６バイト、ＭＡＣサイズが８バイトの場合に、第１及び第２フラグメントは各々４８バイトと４バイトに分割される。第１フラグメントＦｒａｇｍｅｎｔ０の第３ブロックＢｌｏｃｋ２はメッセージ認証コードの中間で分割されるので、第２フラグメントＦｒａｇｍｅｎｔ１をすべて受けなければ暗号化または復号化が可能とならない。したがって、‘ＭＡＣフラグ例外事項’が発生する。
【００５７】
上述の‘ブロックフラグ例外事項’と、‘ＭＡＣフラグ例外事項’を合わせて‘分割例外事項’と定義し、これを解決するための方法を提示する。
【００５８】
すなわち、ＭＡＣサイズがブロックサイズ以下の場合に、受信する時ヘッダ情報を受けて今度のパケットがフラグメントの最後でなければ、最後の二つのブロックは復号化せず、バッファに貯蔵しておく。
【００５９】
例えば、図１７（Ｂ）に示したように、ヘッダ情報を除いたパケットの長さが５４バイトであり、フラグメントスレッショルドが５２バイト、ブロックサイズが１６バイト、ＭＡＣサイズが８バイトの場合に、最後から二番目のブロックＢｌｏｃｋ１の大きさはブロックサイズであり、最後のブロックＢｌｏｃｋ２の大きさは１４バイトで、ブロックサイズ以下である。
【００６０】
ここで‘ブロックフラグ例外事項’の場合には、最後の一つのブロックだけバッファに残しておけば、問題を解決することができるが、二つのブロックを残しておく理由は、最後のブロックＢｌｏｃｋ３の大きさ４バイトと次のパケットＦｒａｇｍｅｎｔ１の大きさ２バイトが合わせて６バイトでＭＡＣサイズにならない場合に、最後から二番目のブロックＢｌｏｃｋ２に最後のブロックとメッセージ認証コードの一部分が含まれるためである。したがって、次のパケットＦｒａｇｍｅｎｔ１が最後のフラグメントでなければ、続いてパケットが受信され、次のパケットＦｒａｇｍｅｎｔ１が最後のフラグメントであれば、前に残った大きさ４バイトと次のメッセージプロトコルデータユニット(Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ：ＭＰＤＵ)の大きさを合わせて、後ろからＭＡＣサイズはメッセージ認証コードであり、残りの前部分はブロックと最後のブロックの合計、または最後のブロックである。ここで、メッセージプロトコルデータユニットＭＰＤＵはメッセージ通信システムから他のメッセージ通信システムにデータを伝送するために、下位階層にデータを伝送する時のプロトコルデータ単位を意味する。
【００６１】
ＭＡＣサイズがブロックサイズより大きい場合は、ＭＡＣサイズをブロックサイズに分けた値を切り上げて１を加えただけ(ＲｏｕｎｄＵｐ(ＭＡＣｓｉｚｅ／Ｂｌｏｃｋｓｉｚｅ)＋１)のブロックを残しておけば、問題解決が可能である。
【００６２】
送信の場合には、ブロックサイズの倍数でだけフラグメントスレッショルドを設定可能にする。すなわち、メッセージ認証コードがヘッダ情報に含まれる場合には、ＭＡＣフラグ例外事項が発生しないので、ブロックフラグ例外事項のために、最後の一つのブロックのみをバッファに残しておけば、解決が可能である。
【００６３】
本発明で定義する例外事項のうちの一つである‘伝送例外事項’は、フラグメントされたパケットが連続して受信されずに、中間に他のソース(すなわち、送信側)から送ったパケットが挿入されれば、チェックサムレジスタの値が変形(ｃｏｒｒｕｐｔ)される問題である。この問題は、受信の場合にだけ該当し、‘伝送例外事項’と定義する。直前に受信されたパケットが最後のフラグメントではなくて、今受信されたパケットのソースが以前受信されたものと異なる時に発生する。
【００６４】
このような問題を解決するためには、以前に受信されたパケットが除去され、直前に受信したパケットの最後のブロックがバッファに残っているので、バッファをクリアする。この方法はＩＥＥＥ８０２，１１標準の無線ＬＡＮの場合のように、フラグメントをバーストトランスミッションする場合に用いられることが適する。実際に、フラグメントを受信する間に、他のソースアドレスからのパケットを受ける場合が少ないためである。もし、ＩＰパケットのように、間に他のアドレスからパケットを受ける場合が多い時は、受信されたパケットを貯蔵する時に、チェックサムの値も共に貯蔵して、各々のパケットを受信し始める度に、以前チェックサム値を利用すれば良い。
【００６５】
最後に、‘再試行例外事項’は、通信中にエラーが発生すれば、再試行をするようになり、本発明のアルゴリズムでは、最後のタグ生成部で使うためにチェックサムを各々のブロックごとに計算するので、再試行をするようになれば、チェックサムを以前の状態に戻さなければならないという問題である。このような問題を‘再試行例外事項’と定義し、受信の場合には、以前に受信されたパケットが最後のフラグメントではなくて、現在受信されたパケットが再試行の場合に、送信の場合には、送信したパケットがフラグメントされたフレームであり、エラーが発生した場合に、この例外事項が発生する。
【００６６】
解決方法として、受信の場合には、以前に受けたことがあるパケットであれば、オフセットコードブックモードを実行せず無視する。一方、受けたことがないパケットであれば、オフセットコードブックモードを実行する。また、送信の場合には、再試行するパケットであるか否かを確認し、再試行パケットであれば、このパケットに対してオフセットコードブックモードを実行する間に、チェックサムを計算してバイパスする。
【００６７】
再び図３を参照すると、前記暗号処理ユニット１３０は送受信時に入力されたデータを暗号化または復号化するためにオフセットコードブックを生成し、タグ及びメッセージ認証コードを生成する。具体的に、図５に示したように、前記暗号処理ユニット１３０はオフセットコードブック初期化部(ＯＣＢ＿ＩＮＩＴ)１３２と、ブロック復号化部(ＢＬＯＣＫ＿ＤＥＣＩＰＨＥＲ)１３４と、最後のブロック復号化部(ＬＡＳＴ＿ＢＬＯＣＫ＿ＤＥＣＩＰＨＥＲ)１３６と、タグ生成部（ＴＡＧ＿ＧＥＮＥＲＡＴＯＲ）１３８と、タグ比較部（ＴＡＧ＿ＣＯＭＰＡＲＡＴＯＲ）１４０とを含む。さらに暗号処理ユニット１３０はブロック暗号化部（ＢＬＯＣＫ＿ＥＮＣＩＰＨＥＲ）１４２と、最後のブロック暗号化部（ＬＡＳＴ＿ＢＬＯＣＫ＿ＥＮＣＩＰＨＥＲ）１４４と、メッセージ認証コード（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ：ＭＡＣ）生成部（ＭＡＣ＿ＧＥＮＥＲＡＴＯＲ）１４６とを含む。
【００６８】
このような暗号処理ユニット１３０は復号化するために、オフセットコードブック初期化部１３２と、ブロック復号化部１３４と、最後のブロック復号化部１３６と、タグ生成部１３８と、タグ比較部１４０とを利用し、暗号化するために、オフセットコードブック初期化部１３２と、ブロック暗号化部１４２と、最後のブロック暗号化部１４４と、メッセージ認証コード生成部１４６とを利用する。
【００６９】
具体的に、前記オフセットコードブック初期化部１３２は、送信及び受信時に動作し、オフセットコードブック（Ｏｆｆｓｅｔ  ＣｏｄｅＢｏｏｋ）を作成して、前記オフセットコードブックメモリ１１０に貯蔵する。さらにオフセットコードブック初期化部１３２は、ノンスとオフセットコードブックを使って、オフセットコードブック初期値ｏｆｆｓｅｔ０を生成し、オフセット変数のためのメモリ(またはレジスタ)に貯蔵する。
【００７０】
前記ブロック復号化部１３４は受信時に動作し、以前のオフセットコードブックｏｆｆｓｅｔ（ｉ）値を有し、次のオフセットコードブックｏｆｆｓｅｔ（ｉ＋１）値を生成して、オフセット変数のためのメモリ(またはレジスタ)に貯蔵する。さらにブロック復号化部１３４は伝送されたブロックを復号化し、前記チェックサムメモリ１１２に貯蔵された タグを生成するためのチェックサム値をアップデートする。
【００７１】
前記最後のブロック復号化部１３６は受信時に動作し、以前のオフセットコードブックｏｆｆｓｅｔ（ｉ）値を有し、次のオフセットコードブックｏｆｆｓｅｔ（ｉ＋１）値を生成して、オフセット変数のためのメモリ(またはレジスタ)に貯蔵する。さらに最後のブロック復号化部１３６は伝送された最後のブロックを復号化し、タグを生成するためのチェックサム値をアップデートする。
【００７２】
前記タグ生成部１３８は受信時に動作し、前記ブロック復号化部１３４及び前記最後のブロック復号化部１３６によってアップデートされたチェックサム値を利用してタグを生成する。
【００７３】
前記タグ比較部１４０は受信時に動作し、前記タグ生成部１３８によって生成されたタグと伝送されたメッセージ認証コードＭＡＣとを比較して伝送状態によるエラーの可否を判別する。例えば、タグとメッセージ認証コードが互いに異なれば、エラーを発生させる。
【００７４】
前記ブロック暗号化部１４２は送信時に動作し、以前のオフセットコードブック ｏｆｆｓｅｔ（ｉ）値を有し、次のオフセットコードブックｏｆｆｓｅｔ（ｉ＋１）値を生成して、オフセット変数に貯蔵する。さらにブロック暗号化部１４２は伝送するフレームで、最後ではないブロックを暗号化し、メッセージ認証コードＭＡＣを生成するためのチェックサム値をアップデートする。
【００７５】
前記最後のブロック暗号化部１４４は送信時に動作し、以前のオフセットコードブックｏｆｆｓｅｔ（ｉ）値を有し、次のオフセットコードブックｏｆｆｓｅｔ（ｉ＋１）値を生成してオフセット変数に貯蔵する。さらに最後のブロック暗号化部１４４は伝送するフレームの最後のブロックを暗号化し、そしてメッセージ認証コードＭＡＣを生成するためのチェックサム値をアップデートする。
【００７６】
前記メッセージ認証コード生成部１４６は送信時に動作し、前記ブロック暗号化部１４２及び前記最後のブロック暗号化部１４４によってアップデートされたチェックサム値を利用してメッセージ認証コードＭＡＣを生成する。
【００７７】
再び図３を参照すると、前記ブロック暗号エンジン１０８は前記制御ユニット１０２から暗号キーを受けて、標準暗号化アルゴリズム(例えば、ＤＥＳ、ＡＥＳなど)を利用してオフセットコードブックモードに暗号化または復号化機能を実行するように、前記暗号処理ユニット１３０と連係する。
【００７８】
前記オフセットコードブックメモリ１１０は前記暗号処理ユニット１３０から生成されたオフセットコードブックを貯蔵する。
【００７９】
前記チェックサムメモリ１１２は‘伝送例外事項’を処理するためのメモリであり、送信アドレスとチェックサム値を一対の単位に貯蔵する。したがって、前記暗号処理ユニット１３０は以前パケットと別の送信側からパケットを受けるようになれば、前記チェックサムメモリ１１２からの該当送信アドレスを利用して計算する。
【００８０】
したがって、前記暗号化装置１００は前記入力バッファ１０４からブロックサイズのデータを入力バス制御部１０６に伝達し、入力バス制御部１０６は前記制御ユニット１０２からの制御信号を受けて該当ユニット１２０、１３０にデータを伝達する。該当ユニット１２０、１３０は動作中に各々ブロックサイズのデータを処理して出力バス制御部１１４に伝達する。また前記暗号処理ユニット１３０のうちタグ比較部１４０を除いたすべてのユニット１３２〜１３８、１４２〜１４６は動作中に前記ブロック暗号エンジン１０８を利用して処理し、オフセットコードブック初期化部１３２で生成されたオフセットコードブックはオフセットコードブックメモリ１１０に貯蔵されて、ブロック復号化部１３４と、最後のブロック復号化部１３６と、ブロック暗号化部１４２及び最後のブロック暗号化部１４４でオフセットコードブックを生成する時に使う。またタグ生成部１３８とメッセージ認証コード生成部１４６では、ブロック暗号エンジン１０８に入力される値を計算する。
【００８１】
続いて、本発明による暗号化装置の受信及び送信動作手順を図６乃至図１５を利用して詳細に説明する。
【００８２】
先ず、メッセージ認証コードのバイトの長さをＭＡＣサイズＭＡＣＳｉｚｅと称し、‘ＭＡＣＳｉｚｅ’という常数を定義する。またバッファに係わる二つの重要な変数があり、一つは‘ｂｙｔｅｓＬｅｆｔ’という変数で、以前パケットをオフセットコードブックモード処理し、バイトがバッファにどのくらい残っているかを示す変数である。変数‘ｂｙｔｅＬｅｆｔ’は、本発明のアルゴリズムでアップデートされる。他の一つは、‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’という変数であり、これは実際にバイトが現在バッファの中にどのくらい貯蔵されているかを示す。この変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’は、バッファにデータを書き込む主体例えば受信の場合にモデムによってアップデートされる。またオフセットコードブックモードで実行中にもデータを続いて受けることができるので、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’はオフセットコードブックモード実行中にも、オフセットコードブックモードアルゴリズムが知らぬ間に続いて変わることができる値である。
【００８３】
図６は本発明による暗号化装置の受信動作を概略的に示す流れ図である。この手順は前記暗号化装置のメモリ装置(図示しない)に具備されるプログラムであり、このプログラムは前記暗号化装置の制御ユニットによって処理される。
【００８４】
図６を参照すると、段階Ｓ２００で、ヘッダ情報を受信するルーチンＲＸ＿ＨＤＲを実行し、本発明により定義された例外事項が少なくとも一つ発生すれば、段階Ｓ２１０で例外事項処理ルーチンＥＸ＿ＨＡＮＤＬＥを実行し、そうでなければ、受信動作を終了する。
【００８５】
段階Ｓ２３０では、例外事項に対応してオフセットコードブックモード処理ルーチンＯＣＢを実行し、処理するブロックが最後のブロックであるか否かを判別して、段階Ｓ２６０で最後のブロック受信処理ルーチンＲＸ＿ＬＡＳＴを実行する。段階Ｓ２８０で最後のブロックではない場合の受信処理ルーチンＲＸ＿ＮＯＴ＿ＬＡＳＴを実行する。
【００８６】
具体的に、前記ヘッダ情報受信ルーチンＳ２００は、図７に示したように、段階Ｓ２０２でヘッダ情報を受信し、段階Ｓ２０４で受信されたヘッダ情報からデータの大きさ情報Ｌを獲得し、変数‘ｃｏｕｎｔｅｒ’を初期化する。データの大きさ情報はパケットのヘッダ情報を受信した後に、ヘッダの長さを除いたパケットの長さをバイト単位に示す。一般的に、ヘッダにはパケットの長さが貯蔵されており、また本発明では、ノンスもヘッダに含まれていると仮定する。変数‘ｃｏｕｎｔｅｒ’は受信されたパケットのうち何番目のブロックまで復号化したかを貯蔵する。
【００８７】
続いて、前記例外事項処理ルーチンＳ２１０を実行する。この例外事項処理ルーチンＳ２１０は図８に示したように、段階Ｓ２１２で、以前パケットと送信アドレス情報を貯蔵する変数を定義する。例えば、グローバル変数‘ｐｒｅｖＭｏｒｅＦｒａｇ’は以前に受けたパケットが最後のフラグメントであるか否かに対する情報を貯蔵する。変数‘ｐｒｅｖＴＡ’は送信側のアドレス情報を貯蔵する。
【００８８】
段階Ｓ２１４で、変数‘ｐｒｅｖＭｏｒｅＦｒａｇ’が１でなければ、すなわち、現在伝送されたパケットと関係なく、以前パケットが最後のフラグメントであれば、例外事項アルゴリズムが適用されない。したがって、段階Ｓ２２４に進行して次の回のパケットに備えて二つの変数をアップデートし、例外事項処理ルーチンＳ２１０を終了する。すなわち、現在伝送されたパケットの最後のフラグメントであるか否かに対する情報と送信側アドレス情報を貯蔵する変数‘ｃｕｒＭｏｒｅＦｌａｇ’と変数‘ｃｕｒＴＡ’を次回のパケットに対する変数‘ｐｒｅｖＭｏｒｅＦｒａｇ’と‘ｐｒｅｖＴＡ’にアップデートする。
【００８９】
一方、段階Ｓ２１４で、‘ｐｒｅｖＭｏｒｅＦｒａｇ’が１であれば、以前パケットが最後のフラグメントでないので、手順は段階Ｓ２１６に進行して、以前パケットの送信側アドレスｐｒｅｖＴＡと現在パケットの送信側アドレスｃｕｒＴＡとを比較する。
【００９０】
比較の結果、二つの送信側アドレスが同一でなければ、伝送例外事項が発生するので、手順は段階Ｓ２１８に進行して、以前の変数‘ｐｒｅｖＴＡ’から受けたパケットをメモリから全部削除し、変数‘ｂｙｔｅｓＬｅｆｔ’値のバッファ内容も削除する。また、変数‘ｂｙｔｅｓＬｅｆｔ’ 値を初期化する。また伝送例外事項が発生すれば、前記段階Ｓ２１８でチェックサムメモリに貯蔵された適当なチェックサム値を利用して処理することもできる。
【００９１】
また前記段階Ｓ２１６での比較の結果、二つの送信側アドレスが同一であれば、伝送例外事項が発生していないので、段階Ｓ２２０に進行する。ここで、変数‘ｂｙｔｅｓＬｅｆｔ’はバッファで、以前パケットのうちオフセットコードブックモードを処理した後、残っているバイトを示す。
【００９２】
続いて、段階Ｓ２２０で、現在受けたパケットが再試行の場合であれば、段階Ｓ２２２に進行して、再試行例外事項による処理過程を実行する。再試行は一般的に、伝送されたパケットのヘッダ情報に再試行であるか否かに対する情報を含んでいる。
【００９３】
再試行例外事項処理ルーチンは、段階Ｓ２２２で受信されたパケットが既に受けたパケットであるか否かを判別する。判別結果、受信されたパケットが既に受けたパケットであれば、段階Ｓ２２６に進行して現在受けるパケットを除去する。続いて、受信動作を終了し、次のパケットが受信されるまで待機する。
【００９４】
一方、判別結果、受信されたパケットが以前に受けなかった新しいパケットであれば、手順は段階Ｓ２２４に進行して変数をアップデートし、図６に示すオフセットコードブックモード処理ルーチンＳ２３０を実行する。
【００９５】
図９は、図６に示したオフセットコードブックモード処理ルーチンＳ２３０の手順を詳細に示す流れ図である。ここで、図９（Ａ）はフラグメントされたパケットを処理する手順であり、図９（Ｂ）はフラグメントされないパケットを処理する手順を示す。
【００９６】
図９（Ａ）を参照すると、オフセットコードブックモード処理ルーチンＳ２３０は段階Ｓ２３２で現在受信中であるパケットがフラグメントされたパケットであるか否かを判別する。すなわち、受信中であるパケットがフラグメントされたパケットであれば、手順は段階Ｓ２３４に進行して、オフセットコードブックモード初期化機能を実行して、オフセットコードブックモードを準備する。
【００９７】
続いて段階Ｓ２３６で受信されたパケットが最後のフラグメントされたパケットであるか否かを判別し、最後のフラグメントされたパケットであれば、手順は段階Ｓ２３８に進行してブロック個数ｍと最後のブロックのバイト長さ変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’を計算し、バッファに残っているバイト数と、以後受信するパケットのバイト数を加えて、変数‘ｂｙｔｅｓＬｅｆｔ’に貯蔵する。続いて、最後のブロック受信処理ルーチンを実行する。
【００９８】
一方、段階Ｓ２３６で最後のフラグメントされたパケットではないと判断されると、手順は段階Ｓ２４０に進行してブロック個数ｍとバッファに残っているバイト数と、以後受信するバイト数を加えて、変数‘ｂｙｔｅｓＬｅｆｔ’に貯蔵する。続いて、最後のブロックではない場合の受信処理ルーチンを実行する。
【００９９】
続いて、図９（Ｂ）を参照すると、オフセットコードブックモード処理ルーチンＳ２３０は、段階Ｓ２３２で現在受信されたパケットがフラグメントされたパケットではないと判断されると、段階Ｓ２４２に進行してブロック個数ｍを計算する。ブロック個数ｍは受信されたデータの大きさ(Ｌ＿からＭＡＣサイズ値ＭＡＣＳｉｚｅ)を引いた値をブロックサイズＢｌｏｃｋＳｉｚｅで割った値を切り上げた値(Ｒｏｕｎｄ（（Ｌ−ＭＡＣＳｉｚｅ）／ＢｌｏｃｋＳｉｚｅ）)である。そして以前に受信されたパケットがバッファに残っている可能性があるので、バッファをクリアし、オフセットコードブックモード初期化機能を実行してオフセットコードブックモードを準備する。
【０１００】
続いて、段階Ｓ２４４で変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であるか否かを判別する。
【０１０１】
判別の結果、変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であれば、手順は段階Ｓ２４６に進行して、バッファのデータ長さすなわち変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’がブロックサイズ‘ＢｌｏｃｋＳｉｚｅ’以上であるか否かを判別する。判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’がブロックサイズ‘ＢｌｏｃｋＳｉｚｅ’以上であれば、手順は段階Ｓ２４８に進行してブロック復号化機能を実行して、ブロック別に復号化を実行する。続いて、変数‘ｃｏｕｎｔｅｒ’値を１だけ増加させ、段階Ｓ２４４に進行して変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’がブロックサイズ‘ＢｌｏｃｋＳｉｚｅ’以上にならなくなるまで前記段階Ｓ２４６〜Ｓ２４８を繰り返して実行する。
【０１０２】
段階Ｓ２４４で変数‘ｃｏｕｎｔｅｒ’値がｍ−１になれば、手順は段階Ｓ２５０に進行して変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であるか否かを判別する。
【０１０３】
判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であれば、手順は段階Ｓ２５２に進行して、最後のブロック復号化機能と、タグ生成機能を実行する。続いて、段階Ｓ２５４で、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＭＡＣＳｉｚｅ’値以上であるか否かを判別する。判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数“ＭＡＣＳｉｚｅ‘値以上であれば、手順は段階 Ｓ２５６に進行してタグ比較機能を実行し、続いて、変数’ｂｙｔｅｓＬｅｆｔ‘値を初期化する。そして受信動作を終了して、次のパケットが受信されるまで待機する。
【０１０４】
図１０を参照すると、最後のブロック受信処理ルーチンＳ２６０は、段階Ｓ２６２で変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であるか否かを判別する。判別の結果、変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であれば、手順は段階Ｓ２６４に進行して変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であるか否かを判別する。判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であれば、段階Ｓ２６６でブロック復号化機能を実行し、変数‘ｃｏｕｎｔｅｒ’値を１増加させる。続いて、段階Ｓ２６２に進行して変数‘ｃｏｕｎｔｅｒ’値がｍ−１になるまで前記段階Ｓ２６２〜Ｓ２６６を繰り返して実行する。
【０１０５】
前記段階Ｓ２６２で、変数‘ｃｏｕｎｔｅｒ’値がｍ−１であると判断されると、手順は段階Ｓ２６８に進行して、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であるか否かを判別する。
【０１０６】
判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であれば、手順は段階Ｓ２７０に進行して最後のブロック復号化機能とタグ生成機能を実行する。
【０１０７】
さらに段階Ｓ２７２で、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＭＡＣＳｉｚｅ’値以上であると判断されると、手順は段階Ｓ２７４に進行してタグ比較機能を実行し、かつ変数‘ｂｙｔｅｓＬｅｆｔ’値を初期化する。続いて、受信動作を終了し、次のパケットが受信されるまで待機する。
【０１０８】
図１１を参照すると、最後のブロックではない場合の受信処理ルーチンＳ２８０は、段階Ｓ２８２で変数‘ｃｏｕｎｔｅｒ’値がｍ−ＲｏｕｎｄＵｐ（ＭＡＣＳｉｚｅ／ＢｌｏｃｋＳｉｚｅ）−１未満であるか否かを判別し、判別の結果、変数‘ｃｏｕｎｔｅｒ’値が ｍ−ＲｏｕｎｄＵｐ（ＭＡＣＳｉｚｅ／ＢｌｏｃｋＳｉｚｅ）−１未満であれば、手順は段階Ｓ２８４に進行して、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であるか否かを判別する。判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であれば、手順は段階Ｓ２８６に進行してブロック復号化機能を実行し、変数‘ｃｏｕｎｔｅｒ’値を１増加させ、変数‘ｂｙｔｅｓＬｅｆｔ’値を変数‘ＢｌｏｃｋＳｉｚｅ’値だけ減少させた後に、段階Ｓ２８２に進行して前記段階Ｓ２８２〜Ｓ２８６を繰り返す。そして前記段階Ｓ２８２で、変数‘ｃｏｕｎｔｅｒ’値が ｍ−ＲｏｕｎｄＵｐ（ＭＡＣＳｉｚｅ／ＢｌｏｃｋＳｉｚｅ）−１であると判断されると、受信動作を終了し、次のパケットが受信されるまで待機する。
【０１０９】
図１２は本発明による高速のオフセットコードブックモードを処理する暗号化装置の送信処理手順を示した流れ図である。この手順も、前記暗号化装置の制御ユニットによって処理されるプログラムであり、そのプログラムは前記暗号化装置のメモリ装置(図示しない)に具備される。また、図１２に示した送信処理手順は、図６乃至図１１に示した受信処理手順と、いくつかの機能を除いては、類似に処理される。例えば、受信時の復号化機能は送信時の暗号化機能に変わり、受信時の例外事項処理ルーチンは、送信時再試行事項をチェックしてチェックサム計算をバイパスすることに変更される。また受信時、タグ生成機能は送信時メッセージ認証コード生成機能に代わって実行し、送信時の手順では、タグ比較機能は実行されない。
【０１１０】
図１２を参照すると、送信手順は、段階Ｓ３００でヘッダ情報送信ルーチンを実行する。続いて、段階Ｓ３３０で最後のブロック送信ルーチンを実行し、段階Ｓ３５０で、最後のブロックではない場合の送信ルーチンを実行する。
【０１１１】
具体的に、前記ヘッダ情報送信ルチンＳ３００は、図１３（Ａ）に示したように、まず段階Ｓ３０２で送信されるパケットのデータ長さをバイトに計算し、変数‘ｃｏｕｎｔｅｒ’値を初期化する。
【０１１２】
続いて、段階Ｓ３０４で送信されるパケットが再試行であるか否かを判別する。送信されるパケットが再試行の場合は、段階Ｓ３０６でチェックサム値の計算を無視し、段階Ｓ３０８に進行する。一方、送信されるパケットが再試行でなければ、手順は段階Ｓ３０８に進行して送信されるパケットがフラグメントされたパケットであるか否かを判別する。
【０１１３】
判別の結果、フラグメントされたパケットであれば、手順は段階Ｓ３１０に進行してオフセットコードブック初期化機能を実行する。
【０１１４】
さらに段階Ｓ３１２で受信されたパケットが最後のフラグメントされたパケットであるか否かを判別し、最後のフラグメントされたパケットであれば、手順は段階Ｓ３１４に進行して、ブロック個数ｍと最後のブロックのバイト長さ変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’を計算して、バッファに残っているバイト数と、以後受信するバイト数を加えて変数‘ｂｙｔｅｓＬｅｆｔ’に貯蔵する。続いて、最後のブロック処理ルーチンＳ３３０を実行する。
【０１１５】
一方、段階Ｓ３１２で最後のフラグメントされたパケットではないと判断されると、手順は段階Ｓ３１６に進行してブロック個数ｍとバッファに残っているバイト数と、以後受信するバイト数を加えて変数‘ｂｙｔｅｓＬａｓｔ’に貯蔵する。続いて、最後のブロックではない場合の処理ルーチンＳ３５０を実行する。
【０１１６】
前記段階Ｓ３０８で、判別結果、フラグメントされたパケットでなければ、手順は図１３（Ｂ）の段階Ｓ３１８に進行してブロック個数ｍを計算し、以前に受信されたパケットがバッファに残っている可能性があるので、バッファをクリアする。そしてオフセットコードブックモード初期化機能を実行して、オフセットコードブックモードを準備する。
【０１１７】
続いて、段階Ｓ３２０で変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であるか否かを判別する。
【０１１８】
判別の結果、変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であれば、手順は段階Ｓ３２２に進行してバッファのデータ長さすなわち変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’がブロックサイズ‘ＢｌｏｃｋＳｉｚｅ’以上であるか否かを判別する。判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’がブロックサイズ‘ＢｌｏｃｋＳｉｚｅ’以上であれば、手順は段階Ｓ３２４に進行してブロック暗号化機能を実行して、ブロック別に暗号化を実施する。続いて、変数‘ｃｏｕｎｔｅｒ’値を１だけ増加させ、段階Ｓ３２０に進行して変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’がブロックサイズ‘ＢｌｏｃｋＳｉｚｅ’以上にならなくなるまで前記段階Ｓ３２０〜Ｓ３２４を繰り返して実行する。
【０１１９】
前記段階Ｓ３２０で、変数‘ｃｏｕｎｔｅｒ’値がｍ−１と判断されると、手順は段階Ｓ３２６に進行して、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であるか否かを判別する。
【０１２０】
判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であれば、手順は段階Ｓ３２８に進行して、最後のブロック暗号化機能と、メッセージ認証コード生成機能を実行する。そして変数‘ｂｙｔｅｓＬｅｆｔ’値を初期化し、送信動作を終了する。
【０１２１】
前記最後のブロック送信処理ルーチンＳ３３０は、図１４に示したように、段階Ｓ３３２で変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であるか否かを判別する。判別の結果、変数‘ｃｏｕｎｔｅｒ’値がｍ−１未満であれば、手順は段階Ｓ３３４に進行して、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であるか否かを判別する。判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であれば、段階Ｓ３３６でブロック暗号化機能を実行し、変数‘ｃｏｕｎｔｅｒ’値を１増加させる。続いて、段階Ｓ３３２に進行して変数‘ｃｏｕｎｔｅｒ’値がｍ−１になるまで前記段階Ｓ３３２〜Ｓ３３６を繰り返して実行する。
【０１２２】
前記段階Ｓ３３２で、変数‘ｃｏｕｎｔｅｒ’値がｍ−１であると判断されると、手順は段階Ｓ３３８に進行して変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であるか否かを判別する。
【０１２３】
判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ｂｙｔｅｓＬａｓｔＢｌｏｃｋ’値以上であれば、手順は段階Ｓ３４０に進行して最後のブロック暗号化機能とメッセージ認証コード生成機能を実行する。そして変数‘ｂｙｔｅｓＬｅｆｔ’値を初期化した後に、送信動作を終了する。
【０１２４】
前記最後のブロックではない場合の伝送処理ルーチンＳ３５０は、図１５に示したように、段階Ｓ３５２で変数‘ｃｏｕｎｔｅｒ’値がｍ−ＲｏｕｎｄＵｐ（ＭＡＣＳｉｚｅ／ＢｌｏｃｋＳｉｚｅ）−１未満であるか否かを判別し、その結果、変数‘ｃｏｕｎｔｅｒ’値が ｍ−ＲｏｕｎｄＵｐ（ＭＡＣＳｉｚｅ／ＢｌｏｃｋＳｉｚｅ）−１未満であれば、手順は段階Ｓ３５４に進行して変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であるか否かを判別する。判別の結果、変数‘ｂｙｔｅｓＩｎＢｕｆｆｅｒ’が変数‘ＢｌｏｃｋＳｉｚｅ’値以上であれば、手順は段階Ｓ３５６に進行して、ブロック暗号化機能を実行する。さらに変数‘ｃｏｕｎｔｅｒ’値を１増加させ、変数‘ｂｙｔｅｓＬｅｆｔ’値を変数‘ＢｌｏｃｋＳｉｚｅ’値だけ減少させた後に、段階Ｓ３５２に進行して前記段階Ｓ３５２〜Ｓ３５６を続いて繰り返す。
【０１２５】
前記段階Ｓ３５２で変数‘ｃｏｕｎｔｅｒ’値が ｍ−ＲｏｕｎｄＵｐ（ＭＡＣＳｉｚｅ／ＢｌｏｃｋＳｉｚｅ）−１であると判断されると、受信動作を終了する。
【０１２６】
上述のように、本発明の暗号化装置は、フラグメントされたパケットを伝送または受信する間にオフセットコードブックモードを実行するために、バッファに一つのブロックを残しておいて‘ブロックフラグ例外事項’で定義した例外事項を解決する。また、バッファに二つまたは ＲｏｕｎｄＵｐ（ＭＡＣＳｉｚｅ／ＢｌｏｃｋＳｉｚｅ）＋１だけのブロックを残しておいて‘ＭＡＣフラグ例外事項’で定義した例外事項を解決する。さらに受信されたパケットを無視し、バッファをクリアして‘伝送例外事項’で定義した例外事項を解決する。
【０１２７】
受信の場合に、受信されたパケットを貯蔵する時に、チェックサム値も共に貯蔵して各々のパケットを受信し始める時に、送信側アドレス値を使って、以前値をさがして利用するようにして、‘伝送例外事項’で定義した例外事項を解決する。さらに以前に受けたことがあるパケットであれば、オフセットコードブックモードを実行せず、無視して‘再試行例外事項’で定義した例外事項を解決する。
【０１２８】
さらに送信の場合に、再試行するパケットであれば、そのパケットに対してオフセットコードブックモードを実行する間、チェックサム計算をバイパスして‘再試行例外事項’で定義した例外事項を解決する。
【０１２９】
したがって、本発明によると、パケットを送信または受信する間に、バッファにブロックサイズだけのデータを受ければ、一つまたは多数のブロックサイファでオフセットコードブックモードのうち適当な部分を実行して、暗号化時間を減らすことができる。
【０１３０】
図１８は本発明の実施の形態によるモバイルシステムの構成を示したブロック図である。
【０１３１】
図１８を参照すると、前記モバイルシステム４００は新規な暗号化装置４１２を含み、この暗号化装置４１２はモデム４１０の内部に具備される。また、前記モバイルシステム４００は典型的なモバイルシステムの構成要素例えば、中央処理装置４０２、メモリ装置４０４及びモデム４１０などを具備する。そして前記モバイルシステム４００は無線ＬＡＮ方式を利用してデータ通信を実行する。
【０１３２】
前記暗号化装置４１２は送信時、前記メモリ装置４０４からデータを読み出して暗号化して伝送し、受信時に復号化してメモリ装置４０４に出力する。
【０１３３】
特に、前記モデム４１０は本発明の実施の形態による暗号化装置４１２を具備してデータパケットを伝送または受信する間に、オフセットコードブックモードを利用して暗号化処理することによって、暗号化時間を減らすことができ、暗号化処理速度を向上させる。
【図面の簡単な説明】
【０１３４】
【図１】分割されないフレームの受信時、オフセットコードブックモードによる本発明と典型的な暗号化方法による所要時間を比較した図である。
【図２】分割されたフレームの受信時、オフセットコードブックモードによる本発明と典型的な暗号化方法による所要時間を比較した図である。
【図３】本発明によるオフセットコードブックモードのための暗号化装置の構成を示したブロック図である。
【図４】図３に示した例外アルゴリズム処理ユニットの詳細な構成を示すブロック図である。
【図５】図３に示した暗号処理ユニットの詳細な構成を示すブロック図である。
【図６】本発明による高速のオフセットコードブックモードを処理する暗号化装置の受信時の処理手順を示す流れ図である。
【図７】図６に示したヘッダ情報受信ルーチン手順を示した流れ図である。
【図８】図６に示した例外事項処理ルーチン手順を詳細に示す流れ図である。
【図９】（Ａ），（Ｂ）は、図６に示したオフセットコードブックモード処理ルーチン手順を詳細に示した流れ図である。
【図１０】図６に示した最後のブロック処理ルーチン手順を詳細に示す流れ図である。
【図１１】図６に示した最後のブロックではない場合の処理ルーチン手順を詳細に示す流れ図である。
【図１２】本発明による高速のオフセットコードブックモードを処理する暗号化装置の送信処理手順を示した流れ図である。
【図１３】（Ａ），（Ｂ）は、図１２に示したヘッダ情報送信ルーチン手順を詳細に示した流れ図である。
【図１４】図１２に示した最終ブロック伝送処理ルーチン手順を詳細に示した流れ図である。
【図１５】図１２に示した最終ブロックではない場合の送信処理ルーチン手順を示した流れ図である。
【図１６】本発明によるブロックフラッグ例外事項を説明するための図である。
【図１７】（Ａ），（Ｂ）は、本発明によるＭＡＣフラグ例外事項を説明するための図である。
【図１８】本発明の実施の形態によるモバイルシステムの構成を示すブロック図である。
【符号の説明】
【０１３５】
１００    暗号化装置
１０２    制御ユニット
１０４    入力バッファ
１０６    入力バス制御部
１０８    ブロック暗号エンジン
１１０    オフセットコードブックメモリ
１１２    チェックサムメモリ
１１４    出力バス制御部
１２０    例外事項処理ユニット
１２２    分割例外事項処理ユニット
１２４    伝送例外事項処理ユニット
１２６    再試行例外事項処理ユニット
１２８    ヘッダメモリ
１３０    暗号処理ユニット
１３２    オフセットコードブック初期化部
１３４    ブロック復号化部
１３６    最後のブロック復号化部
１３８    タグ生成部
１４０    タグ比較部
１４２    ブロック暗号化部
１４４    最後のブロック暗号化部
１４６    メッセージ認証コード生成部
４００    モバイルシステム
４０２    中央処理装置
４０４    メモリ装置
４１０    モデム
４１２    暗号化装置
【図１】
2004254313.tif 000003
【図２】
2004254313.tif 000004
【図３】
2004254313.tif 000005
【図４】
2004254313.tif 000006
【図５】
2004254313.tif 000007
【図６】
2004254313.tif 000008
【図７】
2004254313.tif 000009
【図８】
2004254313.tif 000010
【図９（Ａ）】
2004254313.tif 000011
【図９（Ｂ）】
2004254313.tif 000012
【図１０】
2004254313.tif 000013
【図１１】
2004254313.tif 000014
【図１２】
2004254313.tif 000015
【図１３（Ａ）】
2004254313.tif 000016
【図１３（Ｂ）】
2004254313.tif 000017
【図１４】
2004254313.tif 000018
【図１５】
2004254313.tif 000019
【図１６】
2004254313.tif 000020
【図１７（Ａ）】
2004254313.tif 000021
【図１７（Ｂ）】
2004254313.tif 000022
【図１８】
2004254313.tif 000023