(57)【要約】【課題】  簡単な回路構成を有し、多数の動作モードを支援する暗号化装置、しかも性能の極大化、ＣＰＵの処理作業の最少化、ＣＰＵと暗号化装置との間のデータの送受信の最少化による通信システムの性能向上を図ることができる暗号化装置を提供する。【解決手段】  小さくて簡単な素子を利用してＥＣＢ、ＣＢＣ、ＣＢＣ−ＭＡＣ、カウンタ及びＯＣＢモードなどで動作することができる暗号化装置を構成する。暗号化装置内に構成される入力バッファ及び出力バッファは各々少なくとも二つのブロックを貯蔵するように構成する。さらに、暗号化装置がゼロ−パディング機能を支援する。【選択図】      図２
2004226966.tif 000002
【特許請求の範囲】
【請求項１】
メモリに貯蔵されたデータを暗号化するための暗号化装置において、
外部から提供される暗号化情報に応答して制御信号を生成する制御ユニットと、
前記メモリから前記データを読み出すメモリコントローラと、
前記メモリコントローラによって読み出されたデータを貯蔵するための入力バッファと、
前記入力バッファに貯蔵されたデータブロックを暗号化するための暗号化ユニットと、
前記暗号化ユニットにより暗号化されたデータを貯蔵するための出力バッファとを含み、
前記メモリコントローラは前記出力バッファに貯蔵された前記暗号化されたデータを前記メモリに書き込み、
前記メモリコントローラ、前記入力バッファ、前記暗号化ユニット及び前記出力バッファは前記制御信号に応答して動作することを特徴とする暗号化装置。
【請求項２】
前記制御ユニットは、
前記暗号化情報に応答して初期ベクタ及び動作モードを示す動作モード信号を生成することを特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記動作モードは、ＥＣＢモード、ＣＢＣモード、ＣＢＣ−ＭＡＣモードまたはＣＮＴモードのうちいずれか一つであることを特徴とする請求項２に記載の暗号化装置。
【請求項４】
前記暗号化ユニットは、
前記入力バッファから提供されたデータを貯蔵するためのデータ入力レジスタと、
前記データ入力レジスタに貯蔵されたデータを暗号化する暗号化器と、
前記暗号化器によって暗号化されたデータを貯蔵するためのデータ出力レジスタとを含むことを特徴とする請求項３に記載の暗号化装置。
【請求項５】
前記暗号化ユニットは前記ＥＣＢモードで動作することを特徴とする請求項４に記載の暗号化装置。
【請求項６】
前記暗号化ユニットは、
前記制御ユニットから提供された初期ベクタを貯蔵するための初期ベクタレジスタと、
前記初期ベクタレジスタに貯蔵された前記初期ベクタと前記データ入力レジスタに貯蔵されたデータを論理演算する第１論理演算器とをさらに含むことを特徴とする請求項４に記載の暗号化装置。
【請求項７】
前記暗号化ユニットは前記ＣＢＣまたはＣＢＣ−ＭＡＣモードのうちいずれか一つで動作することを特徴とする請求項６に記載の暗号化装置。
【請求項８】
前記暗号化ユニットが前記ＣＢＣ−ＭＡＣモードで動作する時に、
前記メモリコントローラは前記出力バッファに貯蔵された暗号化されたデータを前記メモリに書き込まないことを特徴とする請求項７に記載の暗号化装置。
【請求項９】
前記暗号化ユニットは、
前記制御ユニットから提供された初期ベクタを貯蔵するための初期ベクタレジスタと、
前記初期ベクタレジスタに貯蔵されたデータに予め設定された値を加えて前記初期ベクタレジスタに再貯蔵する加算器と、
前記初期ベクタレジスタに貯蔵されたデータを暗号化する暗号化器と、
前記入力バッファから提供されたデータを貯蔵するためのデータ入力レジスタと、
前記暗号化器によって暗号化されたデータと前記データ入力レジスタに貯蔵されたデータを論理演算するための第２論理演算器と、
前記第２論理演算器の出力を貯蔵するためのデータ出力レジスタとを含むことを特徴とする請求項３に記載の暗号化装置。
【請求項１０】
前記暗号化ユニットは前記ＣＮＴモードで動作することを特徴とする請求項９に記載の暗号化装置。
【請求項１１】
前記暗号化ユニットは、
前記制御ユニットからの初期ベクタを貯蔵する初期ベクタレジスタと、
前記入力バッファからの前記データを貯蔵するデータ入力レジスタと、
入力データを暗号化する暗号化器と、
前記出力バッファに提供されるデータを貯蔵するデータ出力レジスタと、
加算器と、
前記動作モード信号に応答して、前記初期ベクタレジスタに貯蔵されたデータ、前記初期ベクタレジスタに貯蔵されたデータ及び前記データ入力レジスタに貯蔵されたデータを論理演算した結果データ、または前記データ入力レジスタに貯蔵されたデータのうち一つを前記暗号化器の入力データとして提供し、前記動作モード信号に応答して、前記初期ベクタレジスタに貯蔵されたデータを前記加算器に伝達する第１選択回路と、
前記動作モード信号に応答して、前記データ入力レジスタに貯蔵されたデータ及び前記ブロック暗号化器によって暗号化されたデータを論理演算した結果データまたは前記ブロック暗号化器によって暗号化されたデータを前記データ出力レジスタに伝達し、前記動作モード信号に応答して、前記暗号化器によって暗号化されたデータを前記初期ベクタレジスタに伝達する第２選択回路とを含み、
前記加算器は前記第１選択回路から提供されたデータに予め設定された値を加えて前記初期ベクタレジスタに貯蔵することを特徴とする請求項３に記載の暗号化装置。
【請求項１２】
前記第１選択回路は、
第１マルチプレクサと、
第１論理演算器と、
前記モード信号に応答して、前記初期ベクタレジスタに貯蔵されたデータを前記加算器と前記第１マルチプレクサに、または前記第１論理演算器に伝達する第２マルチプレクサと、
前記モード信号に応答して、前記データ入力レジスタに貯蔵されたデータを前記第１論理演算器または前記第１マルチプレクサに伝達する第３マルチプレクサとを含み、
前記第１論理演算器は前記第２及び第３マルチプレクサからの出力を受け入れて論理演算し、
前記第１マルチプレクサは前記モード信号に応答して、前記第２マルチプレクサ、前記第１論理演算器または前記第３マルチプレクサの出力を前記ブロック暗号化器に伝達することを特徴とする請求項１２に記載の暗号化装置。
【請求項１３】
前記第２選択回路は、
第４マルチプレクサと、
第２論理演算器と、
前記モード信号に応答して、前記暗号化器の出力を前記第２論理演算器または前記第４マルチプレクサまたは／および前記初期ベクタレジスタに伝達する第５マルチプレクサとを含み、
前記第２論理演算器は前記第３及び第５マルチプレクサの出力を受け入れて論理演算し、
前記第４マルチプレクサは前記第２論理演算器または前記第５マルチプレクサの出力を前記データ出力データに伝達することを特徴とする請求項１２に記載の暗号化装置。
【請求項１４】
前記制御ユニットは、
前記入力バッファに貯蔵されたデータがブロック単位に前記暗号化ユニットに提供されるように制御することを特徴とする請求項１に記載の暗号化装置。
【請求項１５】
前記制御ユニットは、
前記入力バッファに貯蔵された最後のデータが予め設定されたブロックサイズより小さい時に、ゼロ−パディング(zero-padding)を実行することを特徴とする請求項１４に記載の暗号化装置。
【請求項１６】
前記入力バッファはＦＩＦＯバッファであることを特徴とする請求項１に記載の暗号化装置。
【請求項１７】
前記入力バッファは少なくとも二つのデータブロックを貯蔵することを特徴とする請求項１に記載の暗号化装置。
【請求項１８】
前記出力バッファはＦＩＦＯバッファであることを特徴とする請求項１に記載の暗号化装置。
【請求項１９】
前記出力バッファは少なくとも二つの暗号化されたデータブロックを貯蔵することを特徴とする請求項１に記載の暗号化装置。
【請求項２０】
前記メモリコントローラは、
ＤＭＡコントローラであることを特徴とする請求項１に記載の暗号化装置。
【請求項２１】
通信システムにおいて
メモリと、
前記メモリに貯蔵されたデータを暗号化するための暗号化装置と、
前記暗号化装置の動作を制御する中央処理装置とを含み、
前記暗号化装置は、
前記中央処理装置から提供される暗号化情報に応答して制御信号を生成する制御ユニットと、
前記メモリから前記データを読み出すメモリコントローラと、
前記メモリコントローラによって読み出されたデータを貯蔵するための入力バッファと、
前記入力バッファに貯蔵されたデータブロックを暗号化するための暗号化ユニットと、
前記暗号化ユニットにより暗号化されたデータを貯蔵するための出力バッファとを含み、
前記メモリコントローラは前記出力バッファに貯蔵された前記暗号化されたデータを前記メモリに書き込み、
前記メモリコントローラ、前記入力バッファ、前記暗号化ユニット及び前記出力バッファは前記制御信号に応答して動作することを特徴とする暗号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ暗号化に関するものであり、さらに具体的には、データを暗号化／復号化する暗号化装置に関するものである。
【背景技術】
【０００２】
暗号化技術はメッセージ送信の安全を保障するためによく使われている。暗号化技術は送信側（ｔｒａｎｓｍｉｓｓｉｏｎ  ｓｉｄｅ）でメッセージ(以下、プレーンテキスト（ｐｌａｉｎ  ｔｅｘｔ）という）を符号化し、受信側（ｒｅｃｅｉｖｉｎｇ  ｓｉｄｅ）でメッセージ(以下、サイファテキスト（ｃｉｐｈｅｒ  ｔｅｘｔ）という)を解読または復号化する。このようなメッセージの符号化及び復号化は暗号化技術として広く知られている。
【０００３】
データ暗号化標準(Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ：ＤＥＳ)は多くの国々とＡＮＳＩ（Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｓ  Ｉｎｓｔｉｔｕｔｅ）で標準に採用されたブロック単位暗号化プロトコルである。これ以外にも、暗号化プロトコルには３−ＤＥＳ及びＡＥＳなどがある。ブロック単位暗号化プロトコルでは多様な動作モードすなわち、ＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ）、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）、ＯＦＢ（Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ）、及びＣＦＢ（Ｃｉｐｈｅｒ  Ｆｅｅｄｂａｃｋ）などを定義している。最近では、カウンタ（ｃｏｕｎｔｅｒ）モード及びＯＣＢ（Ｏｆｆｓｅｔ  Ｃｏｄｅｂｏｏｋ）モードなども提案された。
【０００４】
このような多様な動作モードは個別的なハードウェアで実現することができる。しかし、多様な動作モードを一つのチップで実現するためには、多数のゲートが必要である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、多数の動作モードを支援する暗号化装置を提供することにある。
【０００６】
本発明の他の目的は、簡単な回路構成を有し、多数の動作モードを支援する暗号化装置を提供することにある。
【０００７】
本発明のさらに他の目的は、多数の動作モードを支援する通信システムを提供することにある。
【課題を解決するための手段】
【０００８】
上述のような目的を達成するために、本発明の特徴によると、メモリに貯蔵されたデータを暗号化するための暗号化装置は、外部から提供される暗号化情報に応答して制御信号を生成する制御ユニットと、前記メモリから前記データを読み出すメモリコントローラと、前記メモリコントローラによって読み出されたデータを貯蔵するための入力バッファと、前記入力バッファに貯蔵されたデータブロックを暗号化するための暗号化ユニットと、前記暗号化ユニットにより暗号化されたデータを貯蔵するための出力バッファとを含む。前記メモリコントローラは前記出力バッファに貯蔵された前記暗号化されたデータを前記メモリに書き込み、前記メモリコントローラ、前記入力バッファ、前記暗号化ユニット及び前記出力バッファは前記制御信号に応答して動作する。
【０００９】
望ましい形態において、前記制御ユニットは、前記暗号化情報に応答して初期ベクタ及び動作モードを示す動作モード信号を生成する。
【００１０】
この形態において、前記動作モードは、ＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ）モード、ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モード、ＣＢＣ−ＭＡＣ（ＣＢＣ−Ｍｅｓｓａｇｅ  Ａｕｔｈｅｔｉｃａｔｉｏｎ  Ｃｏｄｅ）モードまたはＣＮＴ（Ｃｏｕｎｔｅｒ）モードのうちいずれか一つである。
【００１１】
この形態において、前記暗号化ユニットは、前記入力バッファから提供されたデータを貯蔵するためのデータ入力レジスタと、前記データ入力レジスタに貯蔵されたデータを暗号化する暗号化器と、前記暗号化器によって暗号化されたデータを貯蔵するためのデータ出力レジスタとを含む。
【００１２】
この形態において、前記暗号化ユニットは前記ＥＣＢモードで動作する。
【００１３】
望ましい形態において、前記暗号化ユニットは、前記制御ユニットから提供された初期ベクタを貯蔵するための初期ベクタレジスタと、前記初期ベクタレジスタに貯蔵された前記初期ベクタと前記データ入力レジスタに貯蔵されたデータを論理演算する第１論理演算器とをさらに含む。
【００１４】
この形態において、前記暗号化ユニットは前記ＣＢＣまたはＣＢＣ−ＭＡＣモードのうちいずれか一つで動作する。
【００１５】
この形態において、前記暗号化ユニットが前記ＣＢＣ−ＭＡＣモードで動作する時に、前記メモリコントローラは前記出力バッファに貯蔵された暗号化されたデータを前記メモリに書き込まない。
【００１６】
望ましい形態において、前記暗号化ユニットは、前記制御ユニットから提供された初期ベクタを貯蔵するための初期ベクタレジスタと、前記初期ベクタレジスタに貯蔵されたデータに予め設定された値を加えて前記初期ベクタレジスタに再貯蔵する加算器と、前記初期ベクタレジスタに貯蔵されたデータを暗号化する暗号化器と、前記入力バッファから提供されたデータを貯蔵するためのデータ入力レジスタと、前記暗号化器によって暗号化されたデータと前記データ入力レジスタに貯蔵されたデータを論理演算するための第２論理演算器と、前記第２論理演算器の出力を貯蔵するためのデータ出力レジスタとを含む。
【００１７】
この形態において、前記暗号化ユニットは前記ＣＮＴモードで動作する。
【００１８】
望ましい形態において、前記暗号化ユニットは、前記制御ユニットからの初期ベクタを貯蔵する初期ベクタレジスタと、前記入力バッファからの前記データを貯蔵するデータ入力レジスタと、入力データを暗号化する暗号化器と、前記出力バッファに提供されるデータを貯蔵するデータ出力レジスタと、加算器と、前記動作モード信号に応答して、前記初期ベクタレジスタに貯蔵されたデータ、前記初期ベクタレジスタに貯蔵されたデータ及び前記データ入力レジスタに貯蔵されたデータを論理演算した結果データ、または前記データ入力レジスタに貯蔵されたデータのうち一つを前記暗号化器の入力データとして提供し、前記動作モード信号に応答して、前記初期ベクタレジスタに貯蔵されたデータを前記加算器に伝達する第１選択回路と、前記動作モード信号に応答して、前記データ入力レジスタに貯蔵されたデータ及び前記ブロック暗号化器によって暗号化されたデータを論理演算した結果データまたは前記ブロック暗号化器によって暗号化されたデータを前記データ出力レジスタに伝達し、前記動作モード信号に応答して、前記暗号化器によって暗号化されたデータを前記初期ベクタレジスタに伝達する第２選択回路とを含む。前記加算器は前記第１選択回路から提供されたデータに予め設定された値を加えて前記初期ベクタレジスタに貯蔵する。
【００１９】
この形態において、前記第１選択回路は、第１マルチプレクサと、第１論理演算器と、前記モード信号に応答して、前記初期ベクタレジスタに貯蔵されたデータを前記加算器と前記第１マルチプレクサに、または前記第１論理演算器に伝達する第２マルチプレクサと、前記モード信号に応答して、前記データ入力レジスタに貯蔵されたデータを前記第１論理演算器または前記第１マルチプレクサに伝達する第３マルチプレクサとを含む。前記第１論理演算器は前記第２及び第３マルチプレクサからの出力を受け入れて論理演算し、前記第１マルチプレクサは前記モード信号に応答して、前記第２マルチプレクサ、前記第１論理演算器または前記第３マルチプレクサの出力を前記ブロック暗号化器に伝達する。前記第２選択回路は、第４マルチプレクサ、第２論理演算器、及び前記モード信号に応答して、前記暗号化器の出力を前記第２論理演算器または前記第４マルチプレクサまたは／および前記初期ベクタレジスタに伝達する第５マルチプレクサを含む。前記第２論理演算器は前記第３及び第５マルチプレクサの出力を受け入れて論理演算し、前記第４マルチプレクサは前記第２論理演算器または前記第５マルチプレクサの出力を前記データ出力データに伝達する。
【００２０】
望ましい形態において、前記制御ユニットは、前記入力バッファに貯蔵されたデータがブロック単位に前記暗号化ユニットに提供されるように制御する。
【００２１】
この形態において、前記制御ユニットは、前記入力バッファに貯蔵された最後のデータが予め設定されたブロックサイズより小さい時に、ゼロ−パディング（ｚｅｒｏ−ｐａｄｄｉｎｇ)を実行する。
【００２２】
望ましい形態において、前記入力バッファはＦＩＦＯ(Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ)バッファであり、少なくとも二つのデータブロックを貯蔵する。
【００２３】
望ましい形態において、前記出力バッファはＦＩＦＯバッファであり、少なくとも二つの暗号化されたデータブロックを貯蔵する。
【００２４】
望ましい形態において、前記メモリコントローラは、ＤＭＡ(Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ)コントローラである。
【００２５】
本発明の他の特徴によると、通信システムは、メモリと、前記メモリに貯蔵されたデータを暗号化するための暗号化装置と、前記暗号化装置の動作を制御する中央処理装置とを含む。前記暗号化装置は、前記中央処理装置から提供される暗号化情報に応答して制御信号を生成する制御ユニットと、前記メモリから前記データを読み出すメモリコントローラと、前記メモリコントローラによって読み出されたデータを貯蔵するための入力バッファと、前記入力バッファに貯蔵されたデータブロックを暗号化するための暗号化ユニットと、前記暗号化ユニットによって暗号化されたデータを貯蔵するための出力バッファとを含む。前記メモリコントローラは前記出力バッファに貯蔵された前記暗号化されたデータを前記メモリに書き込み、前記メモリコントローラ、前記入力バッファ、前記暗号化ユニット及び前記出力バッファは前記制御信号に応答して動作する。
【発明の効果】
【００２６】
本発明によると、小さくて簡単な素子を利用してＥＣＢ、ＣＢＣ、ＣＢＣ−ＭＡＣ、カウンタ及びＯＣＢモードなどで動作することができる暗号化装置が実現される。また、ＣＰＵと暗号化装置との間のデータの送受信を最少化することによって、通信システムの性能を向上させる。一方、暗号化装置内に構成される入力バッファ及び出力バッファが各々少なくとも二つのブロックを貯蔵することができるように構成することによって、暗号化装置の性能を極大化することができる。さらに、暗号化装置がゼロ−パディング機能を支援することによって、ＣＰＵが処理しなければならない作業を最少化する。
【発明を実施するための最良の形態】
【００２７】
以下本発明の望ましい実施の形態を添付の図面を参照して詳細に説明する。
【００２８】
図１は本発明の望ましい実施の形態による暗号化装置を具備した通信システムを示す図である。暗号化装置を具備した通信システムにはデスクトップコンピュータ、携帯用コンピュータ、ＰＤＡ及び携帯電話などがある。図１を参照すると、通信システムは、ＣＰＵ１０、メモリ２０、暗号化装置３０、アービタ４０、及びシステムバス５０を含む。
【００２９】
メモリ２０は暗号化プログラムを貯蔵しており、プレーンテキストとサイファテキストを貯蔵する。ＣＰＵ１０はメモリ２０に貯蔵された暗号化プログラムに応じて暗号化装置３０が動作するように制御する。アービタ４０はシステムバス５０にいくつかのＤＭＡマスタが連結されている時に、バス５０を使用することができる権限を特定ＤＭＡマスタに付与する。図１に示した通信システムでは、ＣＰＵ１０と暗号化ユニット３０がＤＭＡマスタとして機能するので、アービタ４０が必要である。
【００３０】
図２は図１に示した暗号化装置３０の詳細な構成を示すブロック図である。図２を参照すると、暗号化装置３０は制御ユニット３１、ＤＭＡコントローラ３２、入力バッファ３３、出力バッファ３４、及びブロック暗号化ユニット３５を含む。
【００３１】
制御ユニット３１はＣＰＵ１０から提供される暗号化情報すなわち、ソースアドレス(Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ、ＳＡ)、目的アドレス(Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ、ＤＡ)、データサイズ(ｄａｔａ  ｓｉｚｅ：Ｄ＿ＳＩＺＥ)、ブロックサイズ(ｂｌｏｃｋ  ｓｉｚｅ：Ｂ＿ＳＩＺＥ)、キー(ｋｅｙ ：Ｋ)、キーサイズ(ｋｅｙ  ｓｉｚｅ)、方向(ｄｉｒｅｃｔｉｏｎ)暗号化(ｅｎｃｒｙｐｔｉｏｎ)または復号化(ｄｅｃｒｙｐｔｉｏｎ)、初期ベクタ(Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｖｅｃｔｏｒ)及び動作モードが入力されれば、暗号化装置３０内の構成要素を制御する。ＤＭＡコントローラ３２は制御ユニット３１の制御に応答して、メモリ２０のソースアドレスＳＡに貯蔵されたプレーンテキストを読み出して入力バッファ３３に貯蔵し、出力バッファ３４に貯蔵されたサイファテキストをメモリ２０の目標アドレスＤＡに貯蔵する。入力バッファ３３に貯蔵されたプレーンテキストはブロック単位にブロック暗号化ユニット３５に伝達される。例えば、ブロック暗号化ユニット３５が１２８ビットＡＥＳで構成される場合に、入力バッファ３３からブロック暗号化ユニット３５に伝達されるブロックのサイズは１２８ビットである。出力バッファ３４はブロック暗号化ユニット３５からのサイファテキストブロックを貯蔵し、制御ユニット３１の制御に従って貯蔵されたサイファテキストをＤＭＡコントローラ３２に伝達する。入力バッファ３３及び出力バッファ３４は各々ＦＩＦＯバッファで構成され、サイズはブロック暗号化ユニット３５で処理するブロックのサイズの２倍である。したがって、入力バッファ３３及び出力バッファ３４は二つのブロックを各々貯蔵することができる。例えば、ブロック暗号化ユニット３５が一回に処理するプレーンテキストブロックのサイズが１２８ビットであれば、入力バッファ３３及び出力バッファ３４のサイズは各々２５６ビットである。この実施の形態で、入力バッファ３３及び出力バッファ３４は各々二つのブロックを貯蔵することができると説明したが、入力バッファ３３及び出力バッファ３４のサイズは多様に変更することができる。ブロック暗号化ユニット３５は例えば、ＡＥＳ(Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ)ブロック暗号化器を含む。ブロック暗号化ユニット３５の詳細な回路構成及び動作は以下詳細に説明される。
【００３２】
図３乃至図５は図２に示したブロック暗号化ユニット３５の動作モードによる回路構成を示す図である。先ず、図３は図２に示したブロック暗号化ユニット３５がＥＣＢ(Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ)モードで動作するために必要な回路構成を示している。図３を参照すると、ＥＣＢモードのブロック暗号化ユニット３５ａはデータ入力レジスタ１１０、データ出力レジスタ１２０、及びブロック暗号化器１３０を含む。図２に示した入力バッファ３３からのプレーンテキストブロックはデータ入力レジスタ１１０を通じてブロック暗号化器１３０に入力される。ブロック暗号化器１３０は制御ユニット３１から与えられるキーＫに従って暗号化を実行し、サイファテキストをデータ出力レジスタ１２０に出力する。データ出力レジスタ１２０に貯蔵されたデータは図２に示した出力バッファ３４に出力される。
【００３３】
図４は図２に示したブロック暗号化ユニット３５がＣＢＣモードまたはＣＢＣ−ＭＡＣで動作するために必要な回路構成を示す。
【００３４】
図４を参照すると、ブロック暗号化ユニット３５ｂは初期値レジスタ２１０、データ入力レジスタ２２０、データ出力レジスタ２３０、ＥＸＣＬＵＳＩＶＥ−ＯＲ演算器２４０、及びブロック暗号化器２５０を含む。データ入力レジスタ２２０を通じて図２に示した入力バッファ３３から入力されたプレーンテキストブロックと初期値レジスタ２１０に設定された初期ベクタ(ｉｎｉｔｉａｌｉｚａｔｏｎ  ｖｅｃｔｏｒ)データはＥＸＣＬＵＳＩＶＥ−ＯＲ演算器２４０でＥＸＣＬＵＳＩＶＥ−ＯＲ演算される。初期値レジスタ２１０に設定される初期ベクタデータは制御ユニット３１から提供される。ＥＸＣＬＵＳＩＶＥ−ＯＲ演算器２４０の演算結果はブロック暗号化器２５０に伝達される。ブロック暗号化器２５０は制御ユニット３１から提供されたキーＫに従ってＥＸＣＬＵＳＩＶＥ−ＯＲ演算器２４０の演算結果を暗号化する。ブロック暗号化器２５０からのサイファテキストはデータ出力レジスタ２３０と初期値レジスタ２１０に貯蔵される。データ出力レジスタ２３０に貯蔵されたデータは、ＣＢＣモードである時は、図２の出力バッファ３４に出力されるが、ＣＢＣ−ＭＡＣモードである時は、出力バッファ３４に出力されない。ＣＢＣ−ＭＡＣモードでは、メモリ２０に貯蔵されたプレーンテキストが全部暗号化された後に、初期値レジスタ２１０に貯蔵された最終データだけが出力バッファ３４に出力される。
【００３５】
図５は図２に示したブロック暗号化ユニット３５がＣＮＴ(Ｃｏｕｎｔｅｒ)モードで動作するために必要な回路構成を示す。図５を参照すると、ブロック暗号化ユニット３５ｃは、レジスタ３１０、データ入力レジスタ３２０、データ出力レジスタ３３０、加算器３４０、ブロック暗号化器３５０、及びＥＸＣＬＵＳＩＶＥ−ＯＲ演算器３６０を含む。
【００３６】
レジスタ３１０には制御ユニット３１から提供された初期データが貯蔵される。加算器３４０はレジスタ３１０に貯蔵されたデータに１を加える。加算器３４０の出力はレジスタ３１０に再貯蔵される。ブロック暗号化器３５０は制御ユニット３１から提供されたキーＫに従ってレジスタ３１０に貯蔵されたデータを暗号化する。データ入力レジスタ３２０は図２に示した入力バッファ３３からのプレーンテキストブロックを貯蔵する。ＥＸＣＬＵＳＩＶＥ−ＯＲ演算器３６０はブロック暗号化器３５０からの出力とデータ入力レジスタ３２０に貯蔵されたプレーンテキストをＥＸＣＬＵＳＩＶＥ−ＯＲ演算し、その結果をデータ出力レジスタ３３０に貯蔵する。データ出力レジスタ３３０に貯蔵されたデータはサイファテキストとして、図２の出力バッファ３４に出力される。
【００３７】
図３乃至図５に示したように、ブロック暗号化ユニット３５は暗号化モードに従って少しずつ異なる回路構成を要する。しかし、各々のモードのための回路を個別的に構成したら、回路面積は大きくなるであろう。本発明では簡単な回路構成を有し、先の説明の暗号化モードで全部動作することができるブロック暗号化ユニットを提供する。図６は本発明の望ましい実施の形態によるブロック暗号化ユニット３５を示す。
【００３８】
図６を参照すると、ブロック暗号化ユニット３５はレジスタ４１０、データ入力レジスタ４２０、データ出力レジスタ４３０、加算器４４０、マルチプレクサ４５０〜４５４、ＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６１、４６２、及びブロック暗号化器４７０を含む。ＷＬＡＮに本発明が適用される場合に、図６に示したブロック暗号化器４７０はＡＥＳ(Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ)ブロック暗号化器で構成されるが、他の応用分野ではＤＥＳ(Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄｒｄ)または３−ＤＥＳなど他のブロック暗号化器で構成することができる。
【００３９】
レジスタ４１０はＣＢＣ、ＣＢＣ−ＭＡＣ及びＣＮＴモードで使用され、図２の制御ユニット３１により初期値が設定される。データ入力レジスタ４２０は図２の入力バッファ３３から入力されるプレーンテキストブロックを貯蔵する。データ出力レジスタ４３０はマルチプレクサ４５２から出力されるサイファテキストを貯蔵する。マルチプレクサ４５０〜４５４は制御ユニット３１からのモード信号ＭＤに応答して各々動作する。モード信号ＭＤはブロック暗号化ユニット３５の動作モードを示す信号として、多数のビットで構成される。この実施の形態で、ブロック暗号化ユニット３５はＥＣＢ、ＣＢＣ、ＣＢＣ−ＭＡＣまたはＣＮＴモードで動作することができるので、モード信号ＭＤは２ビットである。例えば、モード信号ＭＤが‘００’であればＥＣＢモード、‘０１’であればＣＢＣモード、‘１０’であればＣＢＣ−ＭＡＣモード、‘１１’であればＣＮＴモードを示す。図６で、太い点線はＣＮＴモードでのデータ移動経路を示し、太い実線はＣＢＣまたはＣＢＣ−ＭＡＣモードでのデータ移動経路、細い点線はＥＣＢモードでのデータ移動経路を示す。そして細い実線はすべてのモードでのデータ移動経路を示す。
【００４０】
マルチプレクサ４５０はモード信号ＭＤがＣＮＴモードを示す時に、レジスタ４１０に貯蔵されたデータを加算器４４０とマルチプレクサ４５３に伝達し、モード信号ＭＤが ＣＢＣモードまたはＣＢＣ−ＭＡＣモードを示す時に、レジスタ４１０に貯蔵されたデータをＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６１に伝達する。マルチプレクサ４５１はモード信号ＭＤがＣＢＣモードまたはＣＢＣ−ＭＡＣモードを示す時に、レジスタ４２０に貯蔵されたプレーンテキストブロックをＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６１に伝達し、モード信号ＭＤがＥＣＢモードを示す時に、レジスタ４２０に貯蔵されたプレーンテキストブロックをマルチプレクサ４５３に伝達し、モード信号ＭＤがＣＮＴモードを示す時に、レジスタ４２０に貯蔵されたプレーンテキストブロックをＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６１に伝達する。マルチプレクサ４５３はモード信号ＭＤに応答してマルチプレクサ４５０、４５１またはＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６１の出力のうち一つをブロック暗号化器４７０に伝達する。すなわち、マルチプレクサ４５３は、モード信号ＭＤがＣＮＴモードを示す時に、マルチプレクサ４５０の出力を、モード信号ＭＤがＣＢＣまたはＣＢＣ−ＭＡＣモードを示す時に、ＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６１の出力を、モード信号ＭＤがＥＣＢモードを示す時に、マルチプレクサ４５１の出力をブロック暗号化器４７０に伝達する。
【００４１】
マルチプレクサ４５４はモード信号ＭＤに応答してブロック暗号化器４７０から出力されるサイファテキストをＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６２、マルチプレクサ４５２または／およびレジスタ４１０に伝達する。すなわち、マルチプレクサ４５４は、モード信号ＭＤがＣＮＴモードを示す時に、ブロック暗号化器４７０からのサイファテキストをＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６２に、モード信号ＭＤがＥＣＢモードを示す時に、ブロック暗号化器４７０からのサイファテキストをマルチプレクサ４５２に、そしてモード信号ＭＤがＣＢＣ及びＣＢＣ−ＭＡＣモードを示す時に、ブロック暗号化器４７０からのサイファテキストをマルチプレクサ４５２及びレジスタ４１０に伝達する。マルチプレクサ４５２はモード信号ＭＤがＣＮＴモードを示す時に、ＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６２からの演算結果を、そしてＥＣＢ、ＣＢＣまたはＣＢＣ−ＭＡＣモードである時に、マルチプレクサ４５４の出力をデータ出力レジスタ４３０に伝達する。
【００４２】
上述のように、本発明のブロック暗号化ユニット３５は、レジスタ４１０、４２０、４３０、加算器４４０、マルチプレクサ４５０〜４５４、ＥＸＣＬＵＳＩＶＥ−ＯＲ演算器４６１、４６２、及びブロック暗号化器４７０を含み、ＥＣＢ、ＣＢＣ、ＣＢＣ−ＭＡＣ及びＣＮＴモードを全部実行することができる。
【００４３】
図７は図１に示した暗号化装置３０とメモリ２０との間のデータの送受信を例示的に示している。暗号化装置３０はＣＰＵ１０から提供されたソースアドレスＳＡ、目標アドレスＤＡ及びデータサイズＤ＿ＳＩＺＥなどに従ってメモリ２０をアクセスする。図７に示したように、暗号化装置３０はメモリ２０のソースアドレスＳＡに貯蔵されたプレーンテキストを読み出して暗号化を実行する。そして、暗号化装置３０は暗号化されたサイファテキストをメモリ２０の目標アドレスＤＡに貯蔵する。暗号化装置３０は第０読み出し段階Ｒ０で読み出されたプレーンテキストＰＴ０に対する暗号化が完了すると、第０書き込み段階Ｗ０でサイファテキストＣＴ０をメモリ２０に書き込む。このような方法で、残りの読み出し段階Ｒ１、Ｒ２及びＲ３と残りの書き込み段階Ｗ０、Ｗ１及びＷ２が順次に実行される。しかし、暗号化装置３０が第０読み出し段階Ｒ０を実行した後に、第０書き込み段階Ｗ０を実行し、再び第１読み出し段階Ｒ１を実行することは、暗号化装置３０の性能低下を誘発する。なぜなら、暗号化装置３０がメモリ２０にサイファテキストを書き込む間暗号化装置３０内のブロック暗号化ユニット３５はどのような動作もしなくて休むようになるためである。本発明では、このような問題を解決するため、先の説明のように、入力バッファ３３と出力バッファ３４(図２参照)を各々ブロックサイズの２倍サイズで構成する。したがって、Ｒ０、Ｗ０、Ｒ１及びＷ１のように読み出し段階と書き込み段階を順次にせず、読み出し段階と書き込み段階を多様に変形することができる。読み出し及び書き込み方法について以下詳細に説明する。
【００４４】
先の説明のように、暗号化装置３０が最大の性能を発揮することができるように、ブロック暗号化ユニット３５のアイドル時間(ｉｄｌｅ  ｔｉｍｅ)を最少化しなければならない。そのためには、入力データの欠乏(ｓｔａｒｖａｔｉｏｎ)状態を防止することが重要である。本発明では入力バッファ３３のサイズがブロック暗号化ユニット３５に入力されるブロックのサイズの２倍すなわち、入力バッファ３３が二つのブロックを貯蔵する。したがって、ブロック暗号化ユニット３５が暗号化プロセスを実行する間入力バッファ３３には新しいデータが書き込まれるようにすることができる。また、ブロック暗号化ユニット３５から出力されたサイファテキストが出力バッファ３４に一時貯蔵されることによって、メモリ２０にサイファテキストが書き込まれる前でも、ブロック暗号化ユニット３５は次のプレーンテキストブロックに対する暗号化プロセスを実行することができるようになる。
【００４５】
一方、ＤＭＡコントローラ３２はメモリ２０からプレーンテキストを読み出す動作とサイファテキストをメモリ２０に書き込む動作を同時に実行することができない。したがって、制御ユニット３１は予め設定された優先順位に応じてＤＭＡコントローラ３２が読み出し及び書き込みプロセスを実行するように制御する。次の表１は入力バッファ３３と出力バッファ３４に貯蔵されたブロックの個数によるＤＭＡコントローラ３２の動作優先順位を示す。
【００４６】
【表１】
2004226966.tif 000003
【００４７】
表１の基本概念は入力バッファ３３に空いている空間があれば、読み出し動作が優先順位であり、出力バッファ３４に少なくとも一つのブロックが貯蔵されていれば、書き込み動作に優先順位があることである。表１で、入力バッファ３３が完全に空いており、出力バッファ３４が完全に満たされている時に、ブロック暗号化ユニット３５が動作していなかったら、入力バッファ３３にプレーンテキストブロックを入れる読み出し動作を実行してブロック暗号化ユニット３５が動作することができるように制御した後に、出力バッファ３４に貯蔵されたサイファテキストをメモリ２０に書き込むことが望ましい。しかし、入力バッファ３３が完全に空いており、出力バッファ３４が完全に満たされている時に、ブロック暗号化ユニット３５が動作していたら、読み出しまたは書き込み動作のうちどれを先に実行してもよい。しかし、動作の基準は必要であるので、このような場合には、ＤＭＡコントローラ３２が読み出し動作を実行すると設定する。表１のＮＯＰ(ｎｏ  ｏｐｅｒａｔｉｏｎ)はＤＭＡコントローラ３２がどのような動作も実行しないことを示す。
【００４８】
このように、入力バッファ３３と出力バッファ３４が各々少なくとも二つのブロックを貯蔵することができるように構成することによって、システムバス５０が動作ＢＵＳＹ状態にあっても、暗号化ユニット３５はバッファ３３、３４を利用してブロック暗号化プロセスを実行することができる。
【００４９】
図８は図２に示したＤＭＡコントローラ３２のＦＳＭ(Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ)を示す。図８で、読み出し制御信号ＭＯＲＥ＿ＤＡＴＡＲは、メモリ２０のソースアドレスＳＡから読み出して暗号化プロセスを実行しなければならない全体データのサイズＤ＿ＳＩＺＥが現在までＤＭＡコントローラ３２によってメモリ２０から読み出されたデータのサイズより大きい時に１、そして同一、またはより小さい時に０である。書き込み制御信号ＭＯＲＥ＿ＤＡＴＡＷは、暗号化プロセスが実行された後に、メモリ２０の目標アドレスＤＡに書き込まれる全体データのサイズＤＡＴＡ＿ＳＩＺＥが現在までＤＭＡ コントローラ３２によって書き込まれたデータのサイズより大きい時に１、そして同一、またはより小さい時に０になる。
【００５０】
制御ユニット３１は次の数1を満足する時に、ＤＭＡコントローラ３２が休止状態５１０から読み出し状態５２０に遷移するように制御する。
【００５１】
［数１］
ＭＯＲＥ＿ＤＡＴＡＲ＆＆(ＲＢＵＦＣＮＴ！＝２)＆＆(ＲＢＵＦＣＮＴ！＝１||ＷＢＵＦＣＮＴ！＝２)＝１
【００５２】
ＤＭＡコントローラ３２はメモリ２０からデータを読み出す動作ＤＭＡ_ＲＥＡＤが完了すると、読み出し完了信号ＤＭＡ_ＲＥＡＤ＿ＤＯＮＥを活性化し、読み出し状態５２０から休止状態５１０に遷移する。この時に、読み出しカウントＤＭＡ＿ＲＥＡＤ＿ＣＮＴ値が１だけ増加する。
【００５３】
制御ユニット３１は次の数２を満足する時に、ＤＭＡコントローラ３２が休止状態５１０から書き込み状態５３０に遷移する。
【００５４】
［数２］
ＭＯＲＥ＿ＤＡＴＡＷ＆＆((ＲＢＵＦＣＮＴ＝２)||(ＲＢＵＦＣＮＴ＝１＆＆ＷＢＵＦＣＮＴ＝２))＆＆！ＣＢＣ−ＭＡＣ＝１
【００５５】
ＤＭＡコントローラ３２はメモリ２０にデータを書き込む動作ＤＭＡ_ＷＲＩＴＥが完了すると、書き込み完了信号ＤＭＡ＿ＷＲＩＴＥ＿ＤＯＮＥを活性化し、書き込み状態５３０から休止状態５１０に遷移する。この時に、書き込みカウントＤＭＡ＿ＷＲＩＴＥ＿ＣＮＴ値が１だけ増加する。読み出し完了信号ＤＭＡ＿ＲＥＡＤ＿ＤＯＮＥと書き込み完了信号ＤＭＡ＿ＷＲＩＴＥ＿ＤＯＮＥは制御ユニット３１に提供され、読み出しカウントＤＭＡ＿ＲＥＡＤ＿ＣＮＴと書き込みカウントＤＭＡ＿ＷＲＩＴＥ＿ＣＮＴは制御ユニット３１内に構成されたカウンタ(図示しない)の値である。
【００５６】
メモリ２０から読み出されるデータのサイズＤＡＴＡ＿ＳＩＺＥと読み出しカウントＤＭＡ＿ＲＥＡＤ＿ＣＮＴの関係による読み出し制御信号ＭＯＲＥ＿ＤＡＴＡＲの状態、そしてメモリ２０に書き込まれるデータのサイズＤＡＴＡ＿ＳＩＺＥと書き込みカウントＤＭＡ＿ＷＲＩＴＥ＿ＣＮＴの関係による書き込み制御信号ＭＯＲＥ＿ＤＡＴＡＷの状態が次の表２及び表３に各々整理されている。
【００５７】
【表２】
2004226966.tif 000004
【００５８】
【表３】
2004226966.tif 000005
【００５９】
図９は図２に示した入力バッファ３３、出力バッファ３４、及びブロック暗号化ユニット３５の関係によるＦＳＭを示している。図９を参照すると、制御ユニット３１は、ブロック暗号化ユニット３５で処理しなければならないデータが残っていれば(すなわち、読み出し制御信号ＭＯＲＥ＿ＤＡＴＡＲが１であれば)ブロック暗号化ユニット３５を休止状態６１０からブロック暗号化ユニット３５チェック状態６２０に遷移させる。ブロック暗号化ユニット３５は暗号化プロセスを始める準備が完了した時に、入力準備信号ＩＮＰＵＴ＿ＲＥＡＤＹを１に活性化し、現在入力されたブロックに対する暗号化プロセスが終了した時に、終了信号ＯＵＴＰＵＴ＿ＲＥＡＤＹを１に活性化する。
【００６０】
チェック状態６２０に置かれたブロック暗号化ユニット３５は、入力準備信号ＩＮＰＵＴ＿ＲＥＡＤＹが１であり、そして入力バッファ３３に少なくとも一つのデータがあれば、入力バッファ３３からブロック暗号化ユニット３５にデータを送信する状態６４０に遷移する。入力バッファ３３からブロック暗号化ユニット３５にデータ送信が完了すれば、ブロック暗号化ユニット３５は入力完了信号ＩＮＰＵＴ＿ＤＯＮＥを活性化し、再びチェック状態６２０に遷移する。
【００６１】
チェック状態６２０に置かれたブロック暗号化ユニット３５は、出力準備信号ＯＵＴＰＵＴ＿ＲＥＡＤＹが１であり、そして出力バッファ３４がいっぱいになっていなければ、ブロック暗号化ユニット３５から出力バッファ３４にデータを送信する状態６４０に遷移する。ブロック暗号化ユニット３５から出力バッファ３４にデータ送信が完了すると、ブロック暗号化ユニット３５は出力完了信号ＯＵＴＰＵＴ＿ＤＯＮＥを活性化し、再びチェック状態６２０に遷移する。
【００６２】
図８及び図９で、ＣＢＣ＿ＭＡＣモードの場合に、各ブロックに対する暗号化プロセスが完了した時に生成されるサイファテキストは不要であるので、メモリ２０に書き込む必要がない。したがって、暗号化装置３０のシステムバス５０の使用を最少化するために、ＣＢＣ−ＭＡＣモードでは、各ブロックに対するサイファテキストをメモリ２０に書き込まない。ＣＢＣ−ＭＡＣモードでは、すべてのブロックに対する暗号化プロセスが終了した時に、レジスタ４１０に貯蔵されたデータをメモリ２０の目標アドレスＤＡに一回書き込めばよい。
【００６３】
図１０および図１１はデータの最後に‘０’を挿入するゼロ−パディングを例示的に示している。図１０を参照すると、データフレームがｎ個のブロックで構成され、１ブロックのサイズはＬ１である時に、最後のｎ番目のブロックのサイズは常にＬ１ではない。例えば、ｎ番目のブロックのサイズＬ２がＬ１より小さければ、ｎ番目のブロックのサイズがＬ１になるように、データの最後に‘０’を挿入するゼロ−パディングが実行される。本発明ではＣＰＵ１０と暗号化装置３０との間のデータの送受信を最少化するために暗号化装置３０内でゼロ−パディングを実行する。すなわち、制御ユニット３１は初期にＣＰＵ１０から受信されるデータサイズがブロックサイズの整数倍でなければ、ＤＭＡコントローラ３２を通じて入力バッファ３３に入力された最後のブロックにゼロ−パディングを実行する。図１１に示したように、制御ユニット３１は入力バッファ３３に貯蔵されたｎ番目のブロックの最後に‘０’を挿入してｎ番目のブロックのサイズがＬ１になるようにする。
【００６４】
整理すると、ＣＰＵ１０と暗号化装置３０との間に送受信されるデータは次の通りである。先ず、ＣＰＵ１０は制御情報を暗号化装置３０の制御ユニット３１に伝達する。制御情報にはソースアドレス、目標アドレス、データサイズ、キー、キーサイズ、方向(暗号化または復号化)、初期ベクタ、及び動作モードがある。
【００６５】
基本的に、暗号化されるデータすなわち、プレーンテキストはメモリ２０のソースアドレスに貯蔵されていなければならない。 その後に、ＣＰＵ１０が制御情報を暗号化装置３０に知らせれば暗号化装置３０は暗号化プロセスを実行し、処理結果であるサイファテキストを目標アドレスに貯蔵する。このような本発明によると、ＣＰＵ１０と暗号化装置３０との間の相互接続が最少化してシステムの性能の低下を防止する。
【００６６】
一方、動作モードに従って、ＣＰＵ１０と暗号化装置３０との間に送受信される制御情報とデータが異なる。ＥＣＢモードで、プレーンテキストはメモリ２０のソースアドレスに貯蔵されていなければならず、サイファテキストはメモリ２０の目標アドレスに貯蔵される。ＥＣＢモードで、ソースアドレスと目標アドレスは同一であってもよい。ＣＰＵ１０が暗号化装置３０に提供しなければならない制御情報はソースアドレス、目標アドレス、キー、キーサイズ、データサイズ、方向、及び動作モードである。ＥＣＢモードでは、各ブロックに対する暗号化プロセスが完了するごとにサイファテキストがメモリ２０の目標アドレスに貯蔵されなければならない。
【００６７】
ＣＢＣモードはＥＣＢモードと類似であるが、制御情報に初期ベクタが含まれなければならない。ＣＢＣ−ＭＡＣモードでは各ブロックに対するサイファテキストが不要であるので、毎ブロックごとにサイファテキストをメモリ２０に書き込まなくても良い。但し、すべてのブロックに対する暗号化プロセスが終了した後に、レジスタ４１０に貯蔵されたデータがＣＰＵ１０に送信されなければならない。
【００６８】
ＯＣＢ(ｏｆｆｓｅｔ  ｃｏｄｅｂｏｏｋ)モードはＣＰＵ１０の演算を多く要する。図１２はＯＣＢモードの暗号化プロセスを、そして図１３はＯＣＢモードの復号化プロセスを概念的に示している。ＯＣＢモードに関する詳細な説明は米国公開公報２０００−５１５３７に開示されている。本発明の暗号化装置３０は予め作成されたコードブック(ｃｏｄｅｂｏｏｋ)とオフセット(ｏｆｆｓｅｔ)に従って各ブロックのサイファテキストを生成する。図１２で、符号７１０及び７２０の点線枠で囲まれた部分はＣＰＵ１０によって実行され、符号７３０、７４０及び７５０の点線枠で囲まれた第１乃至第３ステージは暗号化装置３０により実行される。
【００６９】
図１４は図１に示したメモリ２０のソースアドレスＳＡ０〜ＳＡｍ＋１に貯蔵されたデータブロックＩ０〜Ｉｍ＋１と目標アドレスＤＡ０〜ＤＡｍ＋１に貯蔵されたデータブロック００〜０ｍ＋１を示している。
【００７０】
図１２及び図１４を参照すると、暗号化装置３０はＯＣＢモードの間ＥＣＢモードと同一に動作する。第1ステージ７３０で、メモリ２０のソースアドレスＳＡ０に貯蔵されたデータブロックＩ０はデータ入力レジスタ４２０(図６)に貯蔵される。ブロック暗号化器４７０はデータ入力レジスタ４２０に貯蔵されたデータブロックＩ０に対する暗号化プロセスを実行し、その結果をデータ出力レジスタ４３０に貯蔵する。データ出力レジスタ４３０に貯蔵されたデータはオフセットＯｆｆｓｅｔ０としてＣＰＵ１０に伝達される。ＣＰＵ１０は暗号化装置３０から提供されたオフセットＯｆｆｓｅｔ０と予め設定されたコードブックＬｎｔｚ（１）〜Ｌｎｔｚ＿（ｍ）に従ってオフセットＯｆｆｓｅｔ１〜Ｏｆｆｓｅｔｍを計算し、さらにメモリ２０の所定の領域に貯蔵されたプレーンテキストＭ１〜Ｍｍと計算されたオフセットＯｆｆｓｅｓｔ１〜ＯｆｆｓｅｔｍをＥＸＣＬＵＳＩＶＥ−ＯＲ演算し、演算結果をメモリ２０のソースアドレスＳＡ１〜ＳＡｍ＋１に貯蔵する。
【００７１】
第２ステージ７４０で、暗号化装置３０はメモリ２０のソースアドレスＳＡ１〜ＳＡｍに貯蔵されたデータブロックを順次に読み出して暗号化プロセスを実行し、暗号化されたデータブロック０１〜０ｍをメモリ２０の目標アドレスＤＡ１〜ＤＡｍに貯蔵する。
【００７２】
ＣＰＵ１０は暗号化装置３０の第２ステージ７４０が完了すると、目標アドレスＤＡ１〜ＤＡｍに貯蔵されたデータブロック０１〜０ｍ、及びオフセットＯｆｆｓｅｔ１〜Ｏｆｆｓｅｔｍ−１及びプレーンテキストＭｍに対するＥＸＣＬＵＳＩＶＥ−ＯＲ演算を実行してサイファテキストＣ１〜Ｃｍを生成する。さらに、ＣＰＵ１０はチェックサム(Ｃｈｅｃｋｓｕｍ)とオフセット(Ｏｆｆｓｅｔｍ)に対するＥＸＣＬＵＳＩＶＥ−ＯＲ演算を実行して結果をソースアドレスＳＡｍ＋１に貯蔵する。
【００７３】
第３ステージ７５０で、暗号化装置３０はソースアドレスＳＡｍ＋１に貯蔵されたデータブロックＩｍ＋１を読み出して暗号化プロセスを実行し、暗号化されたデータブロック０ｍ＋１をメモリ２０の目標アドレスＤＡｍ＋１に貯蔵する。ＣＰＵ１０はメモリ２０の目標アドレスＤＡｍ＋１に貯蔵されたデータ０ｍ＋１を読み出し、データ０ｍ＋１の一部をＭＩＣとして取得する。
【００７４】
図１３を参照して、ＯＣＢモードの復号化過程が説明される。図１３で、符号８１０及び８２０の点線枠で囲まれた部分はＣＰＵ１０によって実行され、符号８３０、８４０、８５０及び８６０の点線枠で囲まれた第１乃至第４ステージは暗号化装置３０によって実行される。ＯＣＢモードの復号化過程は図１２に示したＯＣＢモードの暗号化過程の逆の順序で実行されるが、暗号化装置３０の４段のステージ８３０〜８６０を通じて復号化が実行される。ここで、ＯＣＢモードの復号化も暗号化装置３０をＥＣＢ  モードの復号化に設定した後に実行される。
【００７５】
以上で例示的な望ましい実施の形態を利用して本発明を説明したが、本発明の範囲は開示された実施の形態に限定されないことはよく理解されるであろう。むしろ、本発明の範囲には多様な変形例及びその類似の構成が全部含まれる。したがって、特許請求の範囲はそのような変形例及び類似の構成全部を含むように可能な限り幅広く解釈されなければならない。
【図面の簡単な説明】
【００７６】
【図１】本発明の望ましい実施の形態による暗号化装置を具備した通信システムを示す図。
【図２】図１に示した暗号化装置の詳細な構成を示すブロック図。
【図３】図２に示したブロック暗号化ユニットの動作モードによる回路構成を示す図。
【図４】図２に示したブロック暗号化ユニットがＣＢＣモードまたはＣＢＣ−ＭＡＣモードで動作するために必要な回路構成を示す図。
【図５】図２に示したブロック暗号化ユニットがＣＮＴモードで動作するために必要な回路構成を示す図。
【図６】本発明の望ましい実施の形態によるブロック暗号化ユニットを示す図。
【図７】図１に示した暗号化装置とメモリとの間のデータの送受信を例示的に示す図。
【図８】図２に示したＤＭＡコントローラのＦＳＭを示す図。
【図９】図２に示した入力バッファ、出力バッファ、及びブロック暗号化ユニットの関係によるＦＳＭを示す図。
【図１０】データの最後に‘０’を挿入するゼロ−パディングを例示的に示す図。
【図１１】データの最後に‘０’を挿入するゼロ−パディングを例示的に示す図。
【図１２】ＯＣＢモードの暗号化プロセスを示す図。
【図１３】ＯＣＢモードの復号化プロセスを概念的に示す図。
【図１４】図１に示したメモリのソースアドレスＳＡ０〜ＳＡｍ＋１に貯蔵されたデータブロックＩ０〜Ｉｍ＋１と目標アドレスＤＡ０〜ＤＡｍ＋１に貯蔵されたデータブロック００〜Ｏｍ＋１を示す図。
【符号の説明】
【００７７】
３０    暗号化装置
３１    制御ユニット
３２    ＤＭＡコントローラ
３３    入力バッファ
３４    出力バッファ
３５    ブロック暗号化ユニット
５０    システムバス
【図１】
2004226966.tif 000006
【図２】
2004226966.tif 000007
【図３】
2004226966.tif 000008
【図４】
2004226966.tif 000009
【図５】
2004226966.tif 000010
【図６】
2004226966.tif 000011
【図７】
2004226966.tif 000012
【図８】
2004226966.tif 000013
【図９】
2004226966.tif 000014
【図１０】
2004226966.tif 000015
【図１１】
2004226966.tif 000016
【図１２】
2004226966.tif 000017
【図１３】
2004226966.tif 000018
【図１４】
2004226966.tif 000019