(57)【要約】【課題】高速処理が必要な通信装置や暗号アクセラレータに搭載することを目的に、以前に提案した暗号回路の構成をさらに改良し、ハードウェア規模を同等以下でより高速な回路構成と、速度低下を最小限に抑えながらコンパクトなハードウェアで実行する回路構成を提供する。【解決手段】処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路と、処理ブロック１２８ビットのデータに対するＢ関数処理とＩ関数処理とを同時に実行するＢ＋Ｉ関数回路と、Ｒ＋Ｉ／２関数回路の出力およびＢ＋Ｉ関数回路の出力のいずれか１つを選択的に出力する第１セレクタと、入力データまたは第１セレクタの出力を格納するとともにＲ＋Ｉ／２関数回路およびＢ＋Ｉ関数回路にデータを供給するレジスタ回路とを実装する。【選択図】　　　図２
2004038103.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行するデータスクランブル回路であって、
Ｉ関数を処理した後、Ｂ関数、Ｉ関数、Ｒ関数、Ｒ関数、Ｉ関数の順に処理を行う処理ブロックを６回処理し、その後、Ｂ関数、Ｉ関数の順に処理を行うために、処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路と、処理ブロック１２８ビットのデータに対するＢ関数処理とＩ関数処理とを同時に実行するＢ＋Ｉ関数回路と、前記Ｒ＋Ｉ／２関数回路の出力および前記Ｂ＋Ｉ関数回路の出力のいずれか１つを選択的に出力する第１セレクタと、入力データまたは前記第１セレクタの出力を格納するとともに前記Ｒ＋Ｉ／２関数回路およびＢ＋Ｉ関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路。
【請求項２】
前記レジスタ回路と第１セレクタとの間に、Ｒ＋Ｉ／２関数回路とＢ＋Ｉ関数回路とが並列に接続され、第１セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、請求項１に記載のデータスクランブル回路。
【請求項３】
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、
前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第１〜第３中間鍵選択回路と、
前記第１中間鍵選択回路で選択された中間鍵に基づいて第１拡大鍵を生成する第１拡大鍵生成回路と、
前記第２中間鍵選択回路で選択された中間鍵に基づいて第２拡大鍵を生成する第２拡大鍵生成回路と、
前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第３中間鍵選択回路で選択された中間鍵に基づいて第３拡大鍵および第４拡大鍵を生成する鍵演算回路と、
を備える鍵スケジュール回路。
【請求項４】
前記鍵スケジュール回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）から算出される初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を格納する入力レジスタ回路を備え、
前記鍵演算回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）、入力レジスタ回路内に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）および第３中間鍵選択回路の出力（ＫＥＹＸ，ＬＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）を入力として、
前記レジスタ回路の第１出力（Ｋ’Ｏ）および第３出力（Ｋ’２）のうちいずれかを出力する第４セレクタと、
前記レジスタ回路の第２出力（Ｋ’１）および第４出力（Ｋ’３）のうちのいずれかを出力する第５セレクタと、
前記第５セレクタの出力、前記第５セレクタの出力を１ビット左シフトしたデータおよびデータ’０’のうちのいずれかを出力する第６セレクタと、
前記第４セレクタの出力と前記第３中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータのうちいずれかを出力する第７セレクタと、
前記第３中間鍵選択回路の第２出力（ＫＥＹＹ）と定数Ｍ（ｉ）（ｉ＝０〜１１）とのうちいずれかを出力する第８セレクタと、
前記第５セレクタの出力と前記第３中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータのうちいずれかを出力する第９セレクタと、
前記第６セレクタの出力と前記第３中間鍵選択回路の第４出力（ＫＥＹＷ）にＩＮＶ処理を行ったデータとのうちいずれか一方を出力する第１０セレクタと、
データ’０’とデータ’１’のうちいずれかを出力する第１１セレクタと、
前記第７セレクタの出力と第８セレクタの出力を加算する第１加算回路と、
前記第１１セレクタの出力を最下位ビットへのキャリとして前記第９セレクタの出力と第１０セレクタの出力とを加算する第２加算回路と、
前記第２加算回路の出力と前記第２加算回路の出力を１ビット左ローテーションしたデータのうちのいずれかを出力する第１２セレクタと、
前記第１加算回路の出力と第１２セレクタの出力との排他的論理和演算を行いその出力を第３拡大鍵として出力する第１１ＸＯＲ回路と、
前記第１１ＸＯＲ回路の出力を一時的に格納し第４拡大鍵として出力する出力レジスタ回路と、
前記出力レジスタ回路の出力と暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）のいずれかを出力する第１３セレクタと、
前記第１３セレクタの出力に対してＭ関数処理を行いその結果を中間鍵として出力するＭ関数回路と、
を備える請求項３に記載の鍵スケジュール回路。
【請求項５】
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行する暗号回路であって、
Ｉ関数を処理した後、Ｂ関数、Ｉ関数、Ｒ関数、Ｒ関数、Ｉ関数の順に処理を行う処理ブロックを６回処理し、その後、Ｂ関数、Ｉ関数の順に処理を行うために、処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路と、処理ブロック１２８ビットのデータに対するＢ関数処理とＩ関数処理とを同時に実行するＢ＋Ｉ関数回路と、前記Ｒ＋Ｉ／２関数回路の出力および前記Ｂ＋Ｉ関数回路の出力のいずれか１つを選択的に出力する第１セレクタと、入力データまたは前記第１セレクタの出力を格納するとともに前記Ｒ＋Ｉ／２関数回路およびＢ＋Ｉ関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、
前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第１〜第３中間鍵選択回路と、前記第１中間鍵選択回路で選択された中間鍵に基づいて第１拡大鍵を生成する第１拡大鍵生成回路と、前記第２中間鍵選択回路で選択された中間鍵に基づいて第２拡大鍵を生成する第２拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第３中間鍵選択回路で選択された中間鍵に基づいて第３拡大鍵および第４拡大鍵を生成する鍵演算回路とを備える鍵スケジュール回路と、
を含む暗号回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、暗号装置に用いられるデータスクランブル回路、データスクランブル回路で用いる拡大鍵を生成するための中間鍵生成回路および拡大鍵生成回路、さらにこれらデータスクランブル回路、中間鍵生成回路および拡大鍵生成回路を備える暗号化／復号化回路に関する。
【０００２】
【従来の技術】
現在広く使用されている共通鍵暗号として、ＤＥＳ（Ｄａｔａ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）が知られている。ＤＥＳは、１９７７年に米国政府の標準局ＮＩＳＴ（ＮａｔｉｏｎａｌＩｎｓｔｉｔｕｔｅ　ｏｆ　Ｓｔａｎｄａｒｄ　Ｔｅｃｈｎｏｌｏｇｙ）が定めた標準であり、６４ビット入出力、鍵長６４ビット（そのうち８ビットはパリティであり実質的には鍵長５６ビット）のブロック暗号である。
ＤＥＳは、Ｆ関数と呼ばれる非線形関数処理を１６回繰り返し行うアルゴリズムである。このため、ＤＥＳによる暗号化／復号化を処理するための暗号回路は、たとえば特開２０００−７５７８５号公報に示されるように、Ｆ関数を繰り返し行うクロック同期ループ構成で実現することが可能である。
【０００３】
ＤＥＳにより暗号化された暗号文を暗号鍵の総当たり法により解読する場合、鍵長６４ビット（５６ビット）の場合であっても、計算量的安全性評価の範囲内であると数年前では考えられていた。しかながら、コンピュータの性能向上に伴い、鍵長６４ビット（５６ビット）でも十分な計算量的安全性を確保することが困難となってきている。このため、複数の暗号鍵を用いて、処理を複数回繰り返す多段ＤＥＳが用いられる。たとえば、２〜３の暗号鍵を用いて処理を３回繰り返すトリプルＤＥＳが一般的に多く用いられている。
このようなＤＥＳに代わる次世代共通鍵暗号として、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの暗号ＡＥＳ（Ａｄｖａｎｃｅｄ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）を標準化しようとする動きがあり、米国標準としてのＡＥＳが固まりつつある。
【０００４】
本件出願人は、このようなＡＥＳに準拠した仕様（鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビット）で高い安全性を維持するとともに高速処理を実現するためのアルゴリズムＳＣ２０００を発表し、このＳＣ２０００に用いる演算装置および演算方法として特願２０００−２１２４８２号、このＳＣ２０００に用いる拡大鍵生成装置として特願２０００−２１２８１４号において提案している。
このＳＣ２０００は、ＤＥＳと同様にいくつかの基本関数を繰り返し行うアルゴリズムであり、各関数処理回路をハードウェアで構成する場合、ループ回路を構成して繰り返し処理を実行するように構成できる。しかしながら、ＳＣ２０００の暗号方式では、ＤＥＳにようにＦ関数だけで構成される暗号方式とは異なり、単純に１つの関数処理回路を１つの同期ループ内で処理できるように構成することができず、各種関数処理回路による関数処理を同期ループ内で効率的に行えるように、各種関数処理回路をいかに配置するかがハードウェア実装時における大きな課題となっている。
【０００５】
本件出願人は、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号であるＳＣ２０００のアルゴリズムを高速かつコンパクトなハードウェアで実行する回路構成、および電子商取引や電子マネーに応用されるスマートカードに暗号回路を搭載するために、ＳＣ２０００アルゴリズムをさらにコンパクトなハードウェアで実行する回路構成を、国際出願番号ＰＣＴ／ＪＰ０１／０５０９５号（出願日：２００１年６月１日）、特願２００２−０１８５３８（出願日：２００２年１月２８日）において提案している。
本発明は、高速処理が必要な通信装置や暗号アクセラレータに搭載することを目的に、上述した暗号回路の構成をさらに改良し、ハードウェア規模を同等以下でより高速な回路構成と、速度低下を最小限に抑えながらコンパクトなハードウェアで実行する回路構成を提供する。
【０００６】
【課題を解決するための手段】
本発明に係るデータスクランブル回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行するデータスクランブル回路であって、Ｉ関数を処理した後、Ｂ関数、Ｉ関数、Ｒ関数、Ｒ関数、Ｉ関数の順に処理を行う処理ブロックを６回処理し、その後、Ｂ関数、Ｉ関数の順に処理を行うために、処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路と、処理ブロック１２８ビットのデータに対するＢ関数処理とＩ関数処理とを同時に実行するＢ＋Ｉ関数回路と、前記Ｒ＋Ｉ／２関数回路の出力および前記Ｂ＋Ｉ関数回路の出力のいずれか１つを選択的に出力する第１セレクタと、入力データまたは前記第１セレクタの出力を格納するとともに前記Ｒ＋Ｉ／２関数回路およびＢ＋Ｉ関数回路にデータを供給するレジスタ回路とを実装する。
【０００７】
ここで、レジスタ回路と第１セレクタとの間に、Ｒ＋Ｉ／２関数回路とＢ＋Ｉ関数回路とが並列に接続され、第１セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成することができる。
また、Ｒ＋Ｉ／２関数回路は、３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）のうち入力データＣに対して非線形処理であるＭ関数処理を実行する第１Ｍ関数回路と、入力データＤに対して非線形処理であるＭ関数処理を実行する第２Ｍ関数回路と、前記第１Ｍ関数回路の出力と定数”０ｘ５５５５５５５５”，　”０ｘ３３３３３３３３”のうちいずれかの論理積演算を行う第１ＡＮＤ回路と、前記第１ＡＮＤ回路の出力と前記第２Ｍ関数回路の出力との排他的論理和演算を行う第１ＸＯＲ回路と、前記第２Ｍ関数回路の出力と定数”０ｘＡＡＡＡＡＡＡＡ”，”０ｘＣＣＣＣＣＣＣＣ”のうちいずれかの論理積演算を行う第２ＡＮＤ回路と、前記第２ＡＮＤ回路の出力と前記第１Ｍ関数回路の出力との排他的論理和演算を行う第２ＸＯＲ回路と、前記第１ＸＯＲ回路の出力と入力データＡとの排他的論理和演算を行ってその結果を出力データＣとして出力する第３ＸＯＲ回路と、前記第２ＸＯＲ回路の出力と入力データＢとの排他的論理和演算を行ってその結果を出力データＤとして出力する第４ＸＯＲ回路と、入力データＣと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第５ＸＯＲ回路と、入力データＤと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第６ＸＯＲ回路とを備える構成とすることができる。
【０００８】
また、Ｂ＋Ｉ関数回路は、３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）が（Ｃ，Ｄ，Ａ，Ｂ）の順に並び替えて入力され、４ビット×３２の出力データに変換する入力データ変換部と、前記入力データ変換部のｉ番目（ｉ＝１〜３２）の出力データに対して非線形処理を実行する３２個の４ビットＳｂｏｘ処理回路と、前記入力データ変換部のｉ番目の出力データに対して前記Ｓｂｏｘ処理回路の逆変換処理を実行する３２個の４ビットＳ−１ｂｏｘ処理回路と、前記入力データ変換部のｉ番目の出力データ、ｉ番目の４ビットＳｂｏｘ処理回路の出力およびｉ番目の４ビットＳ−１ｂｏｘ処理回路の出力のうちいずれかを出力する３２個のセレクタ（Ｂｉ）と、前記セレクタ（Ｂｉ）から出力される４ビット×３２個の出力データを３２ビット×４の出力データに変換する出力データ変換部と、前記出力データ変換部の出力のうち第１の３２ビット出力データと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第７ＸＯＲ回路と、前記出力データ変換部の出力のうち第２の３２ビット出力データと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第８ＸＯＲ回路と、第３拡大鍵とデータ”０”のいずれかを選択的に出力する第２セレクタと、前記出力データ変換部の出力のうち第３の３２ビット出力データと前記第２セレクタの出力との排他的論理和演算を行ってその結果を出力データＣとして出力する第９ＸＯＲ回路と、第４拡大鍵とデータ”０”のいずれかを選択的に出力する第３セレクタと、前記出力データ変換部の出力のうち第４の３２ビット出力データと前記第３セレクタの出力との排他的論理和演算を行ってその結果を出力データＤとして出力する第１０ＸＯＲ回路とを備える構成とすることができる。
【０００９】
本発明に係る鍵スケジュール回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第１〜第３中間鍵選択回路と、前記第１中間鍵選択回路で選択された中間鍵に基づいて第１拡大鍵を生成する第１拡大鍵生成回路と、前記第２中間鍵選択回路で選択された中間鍵に基づいて第２拡大鍵を生成する第２拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第３中間鍵選択回路で選択された中間鍵に基づいて第３拡大鍵および第４拡大鍵を生成する鍵演算回路とを備える。
【００１０】
ここで、前記鍵スケジュール回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）から算出される初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を格納する入力レジスタ回路を備え、前記鍵演算回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）、入力レジスタ回路内に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）および第３中間鍵選択回路の出力（ＫＥＹＸ，ＬＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）を入力として、前記レジスタ回路の第１出力（Ｋ’Ｏ）および第３出力（Ｋ’２）のうちいずれかを出力する第４セレクタと、前記レジスタ回路の第２出力（Ｋ’１）および第４出力（Ｋ’３）のうちのいずれかを出力する第５セレクタと、前記第５セレクタの出力、前記第５セレクタの出力を１ビット左シフトしたデータおよびデータ’０’のうちのいずれかを出力する第６セレクタと、前記第４セレクタの出力と前記第３中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータのうちいずれかを出力する第７セレクタと、前記第３中間鍵選択回路の第２出力（ＫＥＹＹ）と定数Ｍ（ｉ）（ｉ＝０〜１１）とのうちいずれかを出力する第８セレクタと、前記第５セレクタの出力と前記第３中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータのうちいずれかを出力する第９セレクタと、前記第６セレクタの出力と前記第３中間鍵選択回路の第４出力（ＫＥＹＷ）にＩＮＶ処理を行ったデータとのうちいずれか一方を出力する第１０セレクタと、データ’０’とデータ’１’のうちいずれかを出力する第１１セレクタと、前記第７セレクタの出力と第８セレクタの出力を加算する第１加算回路と、前記第１１セレクタの出力を最下位ビットへのキャリとして前記第９セレクタの出力と第１０セレクタの出力とを加算する第２加算回路と、前記第２加算回路の出力と前記第２加算回路の出力を１ビット左ローテーションしたデータのうちのいずれかを出力する第１２セレクタと、前記第１加算回路の出力と第１２セレクタの出力との排他的論理和演算を行いその出力を第３拡大鍵として出力する第１１ＸＯＲ回路と、前記第１１ＸＯＲ回路の出力を一時的に格納し第４拡大鍵として出力する出力レジスタ回路と、前記出力レジスタ回路の出力と暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）のいずれかを出力する第１３セレクタと、前記第１３セレクタの出力に対してＭ関数処理を行いその結果を中間鍵として出力するＭ関数回路とを備える構成とすることができる。
【００１１】
また、中間鍵生成時には暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）をＭ関数回路によりＭ関数処理した初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を用いて演算された中間鍵（ＩＭＫＥＹ）を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第１拡大鍵生成回路で生成される第１拡大鍵（ＥＸＫＥＹ１）、第２拡大鍵生成回路で生成される第２拡大鍵（ＥＸＫＥＹ２）、鍵演算回路で生成される第３拡大鍵（ＥＸＫＥＹ３）および第４拡大鍵（ＥＸＫＥＹ４）をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用するように構成できる。
さらに、前記第１拡大鍵生成回路および第２拡大鍵生成回路は、それぞれ前記第１中間鍵選択回路および第２中間鍵選択回路の出力　（ＫＥＹＸ，ＫＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）と入力とし、前記中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータと中間鍵選択回路の第２出力（ＫＥＹＹ）との加算処理を行う鍵生成回路内加算回路と、前記中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータと中間鍵選択回路の第４出力（ＫＥＹＷ）との減算処理を行う鍵生成回路内減算回路と、前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を１ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内ＸＯＲ回路とを備える構成とすることができる。
【００１２】
本発明に係る暗号回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行する暗号回路であって、Ｉ関数を処理した後、Ｂ関数、Ｉ関数、Ｒ関数、Ｒ関数、Ｉ関数の順に処理を行う処理ブロックを６回処理し、その後、Ｂ関数、Ｉ関数の順に処理を行うために、処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路と、処理ブロック１２８ビットのデータに対するＢ関数処理とＩ関数処理とを同時に実行するＢ＋Ｉ関数回路と、前記Ｒ＋Ｉ／２関数回路の出力および前記Ｂ＋Ｉ関数回路の出力のいずれか１つを選択的に出力する第１セレクタと、入力データまたは前記第１セレクタの出力を格納するとともに前記Ｒ＋Ｉ／２関数回路およびＢ＋Ｉ関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第１〜第３中間鍵選択回路と、前記第１中間鍵選択回路で選択された中間鍵に基づいて第１拡大鍵を生成する第１拡大鍵生成回路と、前記第２中間鍵選択回路で選択された中間鍵に基づいて第２拡大鍵を生成する第２拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第３中間鍵選択回路で選択された中間鍵に基づいて第３拡大鍵および第４拡大鍵を生成する鍵演算回路とを備える鍵スケジュール回路とを含んでいる。
【００１３】
ここで、前記レジスタ回路と第１セレクタとの間に、Ｒ＋Ｉ／２関数回路とＢ＋Ｉ関数回路とが並列に接続され、第１セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成することができる。
また、前記Ｒ＋Ｉ／２関数回路は、３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）のうち入力データＣに対して非線形処理であるＭ関数処理を実行する第１Ｍ関数回路と、入力データＤに対して非線形処理であるＭ関数処理を実行する第２Ｍ関数回路と、前記第１Ｍ関数回路の出力と定数”０ｘ５５５５５５５５”，　”０ｘ３３３３３３３３”のうちいずれかの論理積演算を行う第１ＡＮＤ回路と、前記第１ＡＮＤ回路の出力と前記第２Ｍ関数回路の出力との排他的論理和演算を行う第１ＸＯＲ回路と、前記第２Ｍ関数回路の出力と定数”０ｘＡＡＡＡＡＡＡＡ”，”０ｘＣＣＣＣＣＣＣＣ”のうちいずれかの論理積演算を行う第２ＡＮＤ回路と、前記第２ＡＮＤ回路の出力と前記第１Ｍ関数回路の出力との排他的論理和演算を行う第２ＸＯＲ回路と、前記第１ＸＯＲ回路の出力と入力データＡとの排他的論理和演算を行ってその結果を出力データＣとして出力する第３ＸＯＲ回路と、前記第２ＸＯＲ回路の出力と入力データＢとの排他的論理和演算を行ってその結果を出力データＤとして出力する第４ＸＯＲ回路と、入力データＣと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第５ＸＯＲ回路と、入力データＤと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第６ＸＯＲ回路とを備える構成とすることができる。
【００１４】
また、前記Ｂ＋Ｉ関数回路は、３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）が（Ｃ，Ｄ，Ａ，Ｂ）の順に並び替えて入力され、４ビット×３２の出力データに変換する入力データ変換部と、前記入力データ変換部のｉ番目（ｉ＝１〜３２）の出力データに対して非線形処理を実行する３２個の４ビットＳｂｏｘ処理回路と、前記入力データ変換部のｉ番目の出力データに対して前記Ｓｂｏｘ処理回路の逆変換処理を実行する３２個の４ビットＳ−１ｂｏｘ処理回路と、前記入力データ変換部のｉ番目の出力データ、ｉ番目の４ビットＳｂｏｘ処理回路の出力およびｉ番目の４ビットＳ−１ｂｏｘ処理回路の出力のうちいずれかを出力する３２個のセレクタ（Ｂｉ）と、前記セレクタ（Ｂｉ）から出力される４ビット×３２個の出力データを３２ビット×４の出力データに変換する出力データ変換部と、前記出力データ変換部の出力のうち第１の３２ビット出力データと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第７ＸＯＲ回路と、前記出力データ変換部の出力のうち第２の３２ビット出力データと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第８ＸＯＲ回路と、第３拡大鍵とデータ”０”のいずれかを選択的に出力する第２セレクタと、前記出力データ変換部の出力のうち第３の３２ビット出力データと前記第２セレクタの出力との排他的論理和演算を行ってその結果を出力データＣとして出力する第９ＸＯＲ回路と、第４拡大鍵とデータ”０”のいずれかを選択的に出力する第３セレクタと、前記出力データ変換部の出力のうち第４の３２ビット出力データと前記第３セレクタの出力との排他的論理和演算を行ってその結果を出力データＤとして出力する第１０ＸＯＲ回路とを備える構成とすることができる。
【００１５】
さらに、前記鍵スケジュール回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）から算出される初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を格納する入力レジスタ回路を備え、前記鍵演算回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）、入力レジスタ回路内に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）および第３中間鍵選択回路の出力（ＫＥＹＸ，ＬＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）を入力として、前記レジスタ回路の第１出力（Ｋ’Ｏ）および第３出力（Ｋ’２）のうちいずれかを出力する第４セレクタと、前記レジスタ回路の第２出力（Ｋ’１）および第４出力（Ｋ’３）のうちのいずれかを出力する第５セレクタと、前記第５セレクタの出力、前記第５セレクタの出力を１ビット左シフトしたデータおよびデータ’０’のうちのいずれかを出力する第６セレクタと、前記第４セレクタの出力と前記第３中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータのうちいずれかを出力する第７セレクタと、前記第３中間鍵選択回路の第２出力（ＫＥＹＹ）と定数Ｍ（ｉ）（ｉ＝０〜１１）とのうちいずれかを出力する第８セレクタと、前記第５セレクタの出力と前記第３中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータのうちいずれかを出力する第９セレクタと、前記第６セレクタの出力と前記第３中間鍵選択回路の第４出力（ＫＥＹＷ）にＩＮＶ処理を行ったデータとのうちいずれか一方を出力する第１０セレクタと、データ’０’とデータ’１’のうちいずれかを出力する第１１セレクタと、前記第７セレクタの出力と第８セレクタの出力を加算する第１加算回路と、前記第１１セレクタの出力を最下位ビットへのキャリとして前記第９セレクタの出力と第１０セレクタの出力とを加算する第２加算回路と、前記第２加算回路の出力と前記第２加算回路の出力を１ビット左ローテーションしたデータのうちのいずれかを出力する第１２セレクタと、前記第１加算回路の出力と第１２セレクタの出力との排他的論理和演算を行いその出力を第３拡大鍵として出力する第１１ＸＯＲ回路と、前記第１１ＸＯＲ回路の出力を一時的に格納し第４拡大鍵として出力する出力レジスタ回路と、前記出力レジスタ回路の出力と暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）のいずれかを出力する第１３セレクタと、前記第１３セレクタの出力に対してＭ関数処理を行いその結果を中間鍵として出力するＭ関数回路とを備える構成とすることができる。
【００１６】
また、中間鍵生成時には暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）をＭ関数回路によりＭ関数処理した初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を用いて演算された中間鍵（ＩＭＫＥＹ）を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第１拡大鍵生成回路で生成される第１拡大鍵（ＥＸＫＥＹ１）、第２拡大鍵生成回路で生成される第２拡大鍵（ＥＸＫＥＹ２）、鍵演算回路で生成される第３拡大鍵（ＥＸＫＥＹ３）および第４拡大鍵（ＥＸＫＥＹ４）をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用するように構成できる。
また、前記第１拡大鍵生成回路および第２拡大鍵生成回路は、それぞれ前記第１中間鍵選択回路および第２中間鍵選択回路の出力　（ＫＥＹＸ，ＫＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）と入力とし、前記中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータと中間鍵選択回路の第２出力（ＫＥＹＹ）との加算処理を行う鍵生成回路内加算回路と、前記中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータと中間鍵選択回路の第４出力（ＫＥＹＷ）との減算処理を行う鍵生成回路内減算回路と、前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を１ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内ＸＯＲ回路とを備える構成とすることができる。
【００１７】
【発明の実施の形態】
〔基本構成〕
本発明に係る暗号回路の基本構成を図１に示す。
暗号回路１は、データスクランブル回路２と鍵スケジュール回路５とから構成されている。
データスクランブル回路２は、データを一時的に格納するレジスタ回路３と、内部に複数種の関数処理回路を備えた暗号処理回路４とを備えている。データスクランブル回路２は、暗号処理回路４の出力がレジスタ回路３にフィードバックされたクロック同期ループを構成している。レジスタ回路３は、暗号鍵、平文、暗号文、暗号処理回路４で演算される１サイクル毎の演算結果などを一時的に格納する。
【００１８】
鍵スケジュール回路５は、データスクランブル回路２に対して拡大鍵を提供するものであって、暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路６と、中間鍵記憶回路６に格納されている中間鍵から鍵スケジュールに応じた中間鍵を選択する第１中間鍵選択回路８〜第３中間鍵選択回路１０と、第１中間鍵選択回路８で選択された中間鍵に基づいて第１拡大鍵を生成する第１拡大鍵生成回路１１と、第２中間鍵選択回路９で選択された中間鍵に基づいて第２拡大鍵を生成する第２拡大鍵生成回路１２と、暗号鍵に基づいて複数の中間鍵を生成するとともに第３中間鍵選択回路１０で選択された中間鍵に基づいて第３拡大鍵および第４拡大鍵を生成する鍵演算回路７とを備えている。鍵演算回路７が中間鍵を生成する際には、データスクランブル回路２のレジスタ回路３を利用するように構成することが可能である。
【００１９】
ＳＣ２０００暗号では、拡大鍵とデータとの排他的論理和演算を実行するＩ関数処理、データのビットを撹拌するＢ関数処理およびＲ関数処理とを所定の順で実行するものであり、本発明では鍵長１２８ビット専用の暗号化／復号化を実行する暗号回路を提案する。ＳＣ２０００暗号では、鍵長１２８ビットの場合、Ｉ−Ｂ−Ｉ−Ｒ−Ｒ−Ｉ−Ｂ−Ｉ−Ｒ−Ｒ−Ｉ−Ｂ−Ｉ−Ｒ−Ｒ−Ｉ−Ｂ−Ｉ−Ｒ−Ｒ−Ｉ−Ｂ−Ｉ−Ｒ−Ｒ−Ｉ−Ｂ−Ｉ−Ｒ−Ｒ−Ｉ−Ｂ−Ｉの順に処理を行うように構成され、（Ｂ−Ｉ−Ｒ−Ｒ−Ｉ）処理の繰り返し部分を考慮すると、Ｉ−（Ｂ−Ｉ−Ｒ−Ｒ−Ｉ）６−Ｂ−Ｉと表記することができる。このような暗号処理において、Ｉ関数処理を２回に分けて処理するＩ／２関数処理回路とＲ関数を処理するＲ関数処理回路とを結合したＲ＋Ｉ／２関数回路と、Ｂ関数を処理するＢ関数処理回路とＩ関数を処理するＩ関数処理回路とを結合したＢ＋Ｉ関数回路とを備える構成とすることにより、（Ｂ−Ｉ−Ｒ−Ｒ−Ｉ）処理の部分を、（Ｂ＋Ｉ）−（Ｒ＋Ｉ／２）−（Ｒ＋Ｉ／２）の順に処理することで３サイクルで処理が可能である。最初のＩ関数処理、最後のＢ関数処理およびＩ関数処理も同様に、Ｂ＋Ｉ関数回路を用いて処理することが可能となる。
【００２０】
鍵スケジュール回路５は、データスクランブル回路２のＩ関数処理に利用する拡大鍵を生成するものであって、ここでは、Ｉ−（Ｂ−Ｉ−Ｒ−Ｒ−Ｉ）６−Ｂ−Ｉの処理中の１４個のＩ関数処理に対して５６個の３２ビット拡大鍵を生成して供給することとなる。入力される暗号鍵（ユーザ鍵）は１２８ビットデータでなり、非線形処理であるＭ関数処理の後、レジスタ回路３に３２ビット×４の入力データとして格納される。鍵演算回路７は、レジスタ回路３の３２ビット×４個のデータのうちから２個を選択して、所定値の加算や所定値の乗算を行い、各演算結果の排他的論理和を演算し、さらにＭ関数処理を行うように構成される。鍵演算回路７では、暗号鍵に基づいて３２ビット×１２個の中間鍵を生成し、中間鍵記憶回路６に格納する。
【００２１】
このように、暗号回路１では、入力される暗号鍵（ユーザ鍵）に基づいて、鍵演算回路７で中間鍵を生成しこれを中間鍵記憶回路６に格納する。第１中間鍵選択回路８〜第３中間鍵選択回路１０が鍵スケジュールに応じて中間鍵記憶回路６内に格納されている中間鍵を選択し、それぞれ第１拡大鍵生成回路１１、第２拡大鍵生成回路１２および鍵演算回路７に選択した中間鍵を入力する。第１拡大鍵生成回路１１は第１拡大鍵を生成し、第２拡大鍵生成回路は第２拡大鍵を生成し、鍵演算回路７は第３拡大鍵および第４拡大鍵を生成する。
データスクランブル回路２は、入力される平文を鍵スケジュール回路５から供給される拡大鍵に基づいて暗号化を行い暗号文を出力し、入力される暗号文を鍵スケジュール回路５から供給される拡大鍵に基づいて復号化して平文を出力する。
【００２２】
〔データスクランブル回路〕
データスクランブル回路２は、図２に示すようなレジスタ回路３と暗号処理回路４から構成されている。レジスタ回路３は、３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）を格納することが可能となっており、この入力データ（Ａ，Ｂ，Ｃ，Ｄ）を暗号処理回路４に供給する。
暗号処理回路４は、処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路４１と、処理ブロック１２８ビットのデータに対してＢ関数処理とＩ関数処理を同時に実行するＢ＋Ｉ関数回路４２と、Ｒ＋Ｉ／２関数回路の出力とＢ＋Ｉ関数回路の出力のうちいずれかを出力する第１セレクタ４３とを含んでいる。
【００２３】
暗号処理回路４の第１セレクタ４３の出力はレジスタ回路３にフィードバックされてクロック同期ループを構成している。したがって、レジスタ回路３内に格納されているデータに基づいて暗号処理回路４が１クロックで演算処理を実行した結果が、レジスタ回路３に格納される。
（Ｒ＋Ｉ／２関数回路）
Ｒ＋Ｉ／２関数回路４１の構成を図３に示す。
Ｒ＋Ｉ／２関数回路４１は、図３の左側に位置するＲ回路と右側に位置するＩ／２回路で構成されている。
Ｒ回路は、３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）のうち入力データＣに対して非線形処理であるＭ関数処理を実行する第１Ｍ関数回路４１１と、入力データＤに対して非線形処理であるＭ関数処理を実行する第２Ｍ関数回路４１２と、第１Ｍ関数回路４１１の出力と定数”０ｘ５５５５５５５５”，　”０ｘ３３３３３３３３”のうちいずれかの論理積演算を行う第１ＡＮＤ回路４１３と、第１ＡＮＤ回路４１３の出力と第２Ｍ関数回路４１２の出力との排他的論理和演算を行う第１ＸＯＲ回路４１４と、第２Ｍ関数回路４１２の出力と定数”０ｘＡＡＡＡＡＡＡＡ”，”０ｘＣＣＣＣＣＣＣＣ”のうちいずれかの論理積演算を行う第２ＡＮＤ回路４１５と、第２ＡＮＤ回路４１５の出力と第１Ｍ関数回路４１１の出力との排他的論理和演算を行う第２ＸＯＲ回路４１６と、第１ＸＯＲ回路４１４の出力と入力データＡとの排他的論理和演算を行ってその結果を出力データＣとして出力する第３ＸＯＲ回路４１７と、第２ＸＯＲ回路４１６の出力と入力データＢとの排他的論理和演算を行ってその結果を出力データＤとして出力する第４ＸＯＲ回路４１８とを備えている。
【００２４】
Ｉ／２回路は、入力データＣと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第５ＸＯＲ回路４１９と、入力データＤと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第６ＸＯＲ回路４２０とを備えている。
（Ｂ＋Ｉ関数回路）
Ｂ＋Ｉ関数回路４２の構成を図４に示す。
Ｂ＋Ｉ関数回路４２は、図４の上部に位置するＢ関数回路と、図４の下部に位置するＩ関数回路とから構成されている。
Ｂ関数回路は、３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）が（Ｃ，Ｄ，Ａ，Ｂ）の順で入力され、４ビット×３２の出力データに変換する入力データ変換部４２１と、入力データ変換部４２１のｉ番目（ｉ＝１〜３２）の出力データに対して非線形処理を実行する３２個の４ビットＳｂｏｘ処理回路４２２（ｉ）と、入力データ変換部のｉ番目の出力データに対してＳｂｏｘ処理回路４２２（ｉ）の逆変換処理を実行する３２個の４ビットＳ−１ｂｏｘ処理回路４２３（ｉ）と、入力データ変換部４２１のｉ番目の出力データ、ｉ番目の４ビットＳｂｏｘ処理回路４２２（ｉ）の出力およびｉ番目の４ビットＳ−１ｂｏｘ処理回路４２３（ｉ）の出力のうちいずれかを出力する３２個のセレクタ４２４（ｉ）と、セレクタ４２４（ｉ）から出力される４ビット×３２個の出力データを３２ビット×４の出力データに変換する出力データ変換部４２５とを備えている。
【００２５】
Ｉ関数回路は、出力データ変換部４２５の出力のうち第１の３２ビット出力データと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第７ＸＯＲ回路４２６と、出力データ変換部４２５の出力のうち第２の３２ビット出力データと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第８ＸＯＲ回路４２７と、第３拡大鍵とデータ”０”のいずれかを選択的に出力する第２セレクタ４２８と、出力データ変換部４２５の出力のうち第３の３２ビット出力データと第２セレクタ４２８の出力との排他的論理和演算を行ってその結果を出力データＣとして出力する第９ＸＯＲ回路４２９と、第４拡大鍵とデータ”０”のいずれかを選択的に出力する第３セレクタ４３０と、出力データ変換部４２５の出力のうち第４の３２ビット出力データと第３セレクタ４３０の出力との排他的論理和演算を行ってその結果を出力データＤとして出力する第１０ＸＯＲ回路４３１とを備えている。
【００２６】
（各関数処理）
上述したデータスクランブル回路２において、各関数処理を実行する場合の動作を説明する。
最初のＩ関数処理を行う場合には、第１サイクルにおいて第１セレクタ４３を’Ｒ’に設定し、第２セレクタ４２８および第３セレクタ４３０を’Ｚ’に設定し、さらにセレクタ４２４（ｉ）を’Ｉ’に設定し、Ｂ＋Ｉ関数回路４２のうちＩ関数部分の半分だけの演算処理を実行する。この演算結果はレジスタ回路３にフィードバックされて格納される。
第２サイクルでは、同様にして第１セレクタ４３を’Ｒ’に設定し、第２セレクタ４２８および第３セレクタ４３０を’Ｚ’に設定し、セレクタ４２４（ｉ）を’Ｉ’に設定して、Ｂ＋Ｉ関数回路４２のうちＩ関数部分の半分だけの演算処理を実行する。このことにより、第１サイクルおよび第２サイクルの２サイクルで最初のＩ関数処理を完了する。
【００２７】
Ｂ関数処理とＩ関数処理が続く場合には、Ｂ＋Ｉ関数回路４２を用いて同時に処理を実行することが可能である。この場合、第１サイクルでは、第１セレクタ４３を’Ｒ’に設定し、第２セレクタ４２８および第３セレクタ４３０を’Ｋ’に設定し、セレクタ４２４（ｉ）を’Ｅ’に設定する。
このことにより、Ｂ＋Ｉ関数回路４２のＢ関数部によりＢ関数処理を実行した後、Ｉ関数部によりＩ関数処理が行われ、演算結果がレジスタ回路３にフィードバックされて格納される。したがって、１サイクルで（Ｂ−Ｉ）の処理を完了させることができる。なお、復号化処理を行う場合には、セレクタ４２４（ｉ）を’Ｄ’に設定する以外は同様の設定で処理を行うことができる。
Ｒ関数処理が２回とＩ関数処理が１回続く場合には、Ｒ＋Ｉ／２関数回路４１を用いて処理することができる。この場合、第１サイクルで、第１セレクタ４３を’Ｌ’に設定することで、Ｒ＋Ｉ／２関数回路４１におけるＲ＋Ｉ／２関数処理が行われ、その結果がレジスタ回路３にフィードバックされて格納される。第２サイクルでも同様に処理を行い、２サイクルで（Ｒ−Ｒ−Ｉ）処理を完了することができる。
【００２８】
平文がレジスタ回路３に格納されると、まず２サイクルでＩ関数処理を実行する。この後、（Ｂ−Ｉ）処理、（Ｒ−Ｒ−Ｉ）処理からなる（Ｂ−Ｉ−Ｒ−Ｒ−Ｉ）処理を３サイクルで実行する処理を６回繰り返す。最後に、（Ｂ−Ｉ）処理を１サイクルで実行し、その結果をレジスタ回路３にフィードバックして格納し、暗号文である最終結果を出力することとなる。この暗号化の手順は、２１サイクルで構成され、各サイクルにおける第１セレクタ４３、第２セレクタ４２８、第３セレクタ４３０、セレクタ４２４（ｉ）の切換制御テーブルを表１のＳＥＬ１項目、ＳＥＬ２，３項目およびＳＥＬＢ項目に示す。
【００２９】
【表１】
2004038103.tif 000003
復号化時においても、同様の手順で処理が実行される。暗号文がレジスタ回路３に格納されると、まず２サイクルでＩ関数処理を実行する。次に、（Ｂ−Ｉ）処理および（Ｒ−Ｒ−Ｉ）処理からなる（Ｂ−Ｉ−Ｒ−Ｒ−Ｉ）処理を３サイクルで実行する処理を６回繰り返す。最後に（Ｂ−Ｉ）処理を１サイクルで実行し、その結果をレジスタ回路３にフィードバックして格納し、平文である最終結果を出力することとなる。この復号化の手順は、２１サイクルで構成され、各サイクルにおける第１セレクタ４３、第２セレクタ４２８、第３セレクタ４３０、セレクタ４２４（ｉ）の切換制御テーブルを表２のＳＥＬ１項目、ＳＥＬ２，３項目、ＳＥＬＢ項目に示す。
【００３０】
【表２】
2004038103.tif 000004
なお、図４における入力データ変換部４２１および出力データ変換部４２５は、結線だけで実現することが可能であり、回路規模増大にならない。
〔鍵スケジュール回路〕
上述したようなデータスクランブル回路２で用いる拡大鍵を生成するための鍵スケジュール回路５を図５〜図９に示す。
鍵スケジュール回路５の鍵演算回路７、中間鍵記憶回路６、第１中間鍵選択回路８、第２中間鍵選択回路９、第３中間鍵選択回路１０、第１拡大鍵生成回路１１、第２拡大鍵生成回路１２の接続は図９に示すように構成されており、データスクランブル回路４１のレジスタ回路３を共用するためにレジスタ回路３の出力が鍵演算回路７に接続されている。
【００３１】
鍵スケジュール回路５による鍵スケジュール処理は、暗号鍵（ユーザ鍵）から中間鍵を生成するフェーズと、中間鍵から拡大鍵を生成するフェーズとを含んでおり、本構成では両フェーズにおいて鍵演算回路７と中間鍵記憶回路６とを共用するように構成している。
（鍵演算回路）
鍵演算回路７は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）、入力レジスタ回路３内に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）および第３中間鍵選択回路１０の出力（ＫＥＹＸ，ＬＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）を入力として、中間鍵（ＩＭＫＥＹ）、第３拡大鍵（ＥＸＫＥＹ３）、第４拡大鍵（ＥＸＫＥＹ４）を出力するものであり、図５に示すような構成となっている。
鍵演算回路７は、レジスタ回路３の第１出力（Ｋ’Ｏ）および第３出力（Ｋ’２）のうちいずれかを出力する第４セレクタ７０１と、レジスタ回路３の第２出力（Ｋ’１）および第４出力（Ｋ’３）のうちのいずれかを出力する第５セレクタ７０２と、第５セレクタ７０２の出力を１ビット左シフトするシフト部７０３、第５セレクタ７０２の出力、シフト部７０３の出力およびデータ’０’のうちのいずれかを出力する第６セレクタ７０４と、第３中間鍵選択回路１０の第１出力（ＫＥＹＸ）を１ビット左ローテーションするローテーション部７０５、第４セレクタ７０１の出力とローテーション部７０５の出力のうちいずれかを出力する第７セレクタ７０６と、第３中間鍵選択回路１０の第２出力（ＫＥＹＹ）と定数Ｍ（ｉ）（ｉ＝０〜１１）とのうちいずれかを出力する第８セレクタ７０７と、第３中間鍵選択回路１０の第３出力（ＫＥＹＺ）を１ビット左ローテーションするローテーション部７０８と、第５セレクタ７０２の出力とローテーション部７０８の出力とのうちいずれかを出力する第９セレクタ７０９と、第３中間鍵選択回路１０の第４出力（ＫＥＹＷ）にＩＮＶ処理を行うＩＮＶ処理部７１０と、第６セレクタ７０４の出力とＩＮＶ処理部７１０の出力のうちいずれか一方を出力する第１０セレクタ７１１と、データ’０’とデータ’１’のうちいずれかを出力する第１１セレクタ７１２と、第７セレクタ７０６の出力と第８セレクタ７０７の出力を加算する第１加算回路７１３と、第１１セレクタ７１２の出力を最下位ビットへのキャリとして第９セレクタ７０９の出力と第１０セレクタ７１１の出力とを加算する第２加算回路７１４と、第２加算回路７１４の出力を１ビット左ローテーションするローテーション部７１５と、第２加算回路７１４の出力とローテーション部７１５の出力のうちのいずれかを出力する第１２セレクタ７１６と、第１加算回路７１３の出力と第１２セレクタ７１６の出力との排他的論理和演算を行いその出力を第３拡大鍵（ＥＸＫＥＹ３）として出力する第１１ＸＯＲ回路７１７と、第１１ＸＯＲ回路７１７の出力を一時的に格納し第４拡大鍵（ＥＸＫＥＹ４）として出力する出力レジスタ回路７１８と、出力レジスタ回路７１８の出力と入力される暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）のいずれかを出力する第１３セレクタ７１９と、第１３セレクタ７１９の出力に対してＭ関数処理を行いその結果を中間鍵（ＩＭＫＥＹ）として出力するＭ関数回路７２０とを備えている。
【００３２】
なお、シフト部７０３、ローテーション部７０５，７０８，７１５は結線だけ実現することが可能であり、回路規模の増加はない。
鍵演算回路７の出力である中間鍵（ＩＭＫＥＹ）は、レジスタ回路３および中間鍵記憶回路６に入力されており、第３拡大鍵（ＥＸＫＥＹ３）および第４拡大鍵（ＥＸＫＥＹ４）はデータスクランブル回路２に入力されている。
（暗号鍵入力）
暗号鍵（ユーザ鍵）の入力時には、図５に示すように、第１３セレクタ７１９が’Ｌ’に設定され、第１３セレクタ７１９およびＭ関数回路７２０だけが使用される。入力された暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）は、Ｍ関数回路７２０によるＭ関数処理が実行され、初期値（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）としてレジスタ回路３に格納される。
【００３３】
（中間鍵生成）
鍵演算回路７による中間鍵生成は、図６に示すような接続により実行される。この中間鍵生成時には、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）を入力としてＭ関数処理を行った初期値（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）がレジスタ回路３から入力され、これに基づいて中間鍵（ＩＭＫＥＹ）を演算する。
中間鍵生成時には、第７セレクタ７０６、第８セレクタ７０７、第９セレクタ７０９、第１０セレクタ７１１、第１１セレクタ７１２および第１２セレクタ７１６はそれぞれ’Ｌ’に設定され、第１３セレクタ７１９は’Ｒ’に設定される。また、第４セレクタ７０１、第５セレクタ７０２および第６セレクタ７０４は、中間鍵ａ０〜ｄ２のいずれを生成するかによって切換が変わるものであり、各セレクタの切換制御テーブルを表３に示す。
【００３４】
【表３】
2004038103.tif 000005
鍵演算回路７で処理されたデータは出力レジスタ回路７１８に一旦格納され、次のサイクルでＭ関数回路７２０によるＭ関数処理が実行されて中間鍵記憶回路６に格納される。出力レジスタ回路７１８は、遅延短縮用のパイプライン用のレジスタを構成しており、このため１３クロックで１２個の中間鍵を生成することができる。
なお、中間鍵生成で使用されるレジスタ回路３は、回路規模削減のためにデータスクランブル回路２のレジスタ回路３を共用するものである。同様に、中間鍵生成時においてＭ関数処理を実行するＭ関数回路７２０は、暗号鍵入力時に使用されるＭ関数回路と共用することができる。
【００３５】
（拡大鍵生成）
データスクランブル回路２では、Ｒ＋Ｉ／２関数回路４１によるＩ／２関数処理時およびＢ＋Ｉ関数回路４２によるＩ関数処理時においてそれぞれ２個または４個の拡大鍵が必要となる。このため、鍵スケジュール回路５では、第１中間鍵選択回路８および第１拡大鍵生成回路１１により第１拡大鍵（ＥＸＫＥＹ１）を生成し、第２中間鍵選択回路９および第２拡大鍵生成回路１２により第２拡大鍵（ＥＸＫＥＹ２）を生成し、第３中間鍵選択回路１０および鍵演算回路７により第３拡大鍵（ＥＸＫＥＹ３）および第４拡大鍵（ＥＸＫＥＹ４）を生成するように構成している。この鍵スケジュール回路５により同時に生成可能な拡大鍵は最大３個である。
第１中間鍵選択回路８は図８に示すように、中間鍵記憶回路６の各レジスタに格納されているデータのうちデータ（ａ０，ａ１，ａ２）を入力として選択的にいずれか１つを出力するセレクタＸ（ＳＥＬＸ１）１０１、データ（ｂ０，ｂ１，ｂ２）を入力として選択的にいずれか１つを出力するセレクタＹ（ＳＥＬＹ１）１０２、データ（ｃ０，ｃ１，ｃ２）を入力として選択的にいずれか１つを出力するセレクタＺ（ＳＥＬＺ１）１０３、データ（ｄ０，ｄ１，ｄ２）を入力として選択的にいずれか１つを出力するセレクタＷ（ＳＥＬＷ１）１０４およびセレクタＸ１０１〜セレクタＷ１０４の出力切換を行うスイッチ１０５を備えている。
【００３６】
同様に、第２中間鍵選択回路９は図８に示すように、中間鍵記憶回路６の各レジスタに格納されているデータのうちデータ（ａ０，ａ１，ａ２）を入力として選択的にいずれか１つを出力するセレクタＸ（ＳＥＬＸ２）１１１、データ（ｂ０，ｂ１，ｂ２）を入力として選択的にいずれか１つを出力するセレクタＹ（ＳＥＬＹ２）１１２、データ（ｃ０，ｃ１，ｃ２）を入力として選択的にいずれか１つを出力するセレクタＺ（ＳＥＬＺ２）１１３、データ（ｄ０，ｄ１，ｄ２）を入力として選択的にいずれか１つを出力するセレクタＷ（ＳＥＬＷ２）１１４およびセレクタＸ１１１〜セレクタＷ１１４の出力切換を行うスイッチ１１５を備えている。
さらに、第３中間鍵選択回路１０は図７に示すように、中間鍵記憶回路６の各レジスタに格納されているデータのうちデータ（ａ０，ａ１，ａ２）を入力として選択的にいずれか１つを出力するセレクタＸ（ＳＥＬＸ３）１２１、データ（ｂ０，ｂ１，ｂ２）を入力として選択的にいずれか１つを出力するセレクタＹ（ＳＥＬＹ３）１２２、データ（ｃ０，ｃ１，ｃ２）を入力として選択的にいずれか１つを出力するセレクタＺ（ＳＥＬＺ３）１２３、データ（ｄ０，ｄ１，ｄ２）を入力として選択的にいずれか１つを出力するセレクタＷ（ＳＥＬＷ３）１２４およびセレクタＸ１２１〜セレクタＷ１２４の出力切換を行うスイッチ１２５を備えている。
【００３７】
第１拡大鍵生成回路１１および第２拡大鍵生成回路１２は、図８に示すように、それぞれ第１中間鍵選択回路８および第２中間鍵選択回路９の出力　（ＫＥＹＸ，ＫＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）と入力とし、中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションするローテーション部２０１と、ローテーション部２０１の出力と中間鍵選択回路の第２出力（ＫＥＹＹ）との加算処理を行う鍵生成回路内加算回路２０２と、中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションするローテーション部２０３と、ローテーション部２０３の出力と中間鍵選択回路の第４出力（ＫＥＹＷ）との減算処理を行う鍵生成回路内減算回路２０４と、鍵生成回路内減算回路の出力を１ビット左ローテーションするローテーション部２０５と、鍵生成回路内加算回路２０２の出力とローテーション部２０５の出力との排他的論理和演算を行う鍵生成回路内ＸＯＲ回路２０６とを備えている。
【００３８】
拡大鍵生成時における鍵演算回路７は図７に示すような接続で用いられる。ここでは、第７セレクタ７０６、第８セレクタ７０７、第９セレクタ７０９、第１０セレクタ７１１、第１１セレクタ７１２および第１２セレクタ７１６は、暗号化時（表１参照）および復号化時（表２参照）のいずれの場合も常に’Ｒ’が選択される。このことにより、鍵演算回路７は、第１拡大鍵生成回路１１および第２拡大鍵生成回路１２と同様の回路構成となり、第３中間鍵選択回路１０の第１出力（ＫＥＹＸ）を１ビット左ローテーションするローテーション部７０５と、ローテーション部７０５の出力と第３中間鍵選択回路の第２出力（ＫＥＹＹ）との加算処理を行う第１加算回路７１３と、第３中間鍵選択回路１０の第３出力（ＫＥＹＺ）を１ビット左ローテーションするローテーション部７０８と、ローテーション部７０８の出力と第３中間鍵選択回路の第４出力（ＫＥＹＷ）との減算処理を行うＩＮＶ処理部７１０−第１１セレクタ７１２−第２加算回路７１４、第２加算回路７１４の出力を１ビット左ローテーションするローテーション部７１５と、第１加算回路７１３の出力とローテーション部７１５の出力との排他的論理和演算を行う第１１ＸＯＲ回路７１７とを備える構成となる。
【００３９】
鍵演算回路７を用いた拡大生成では、中間鍵保存回路６に格納された１２個の中間鍵（ａ０〜ｄ２）から第３中間鍵選択回路１０により４つの中間鍵を選択し、選択された４つの中間鍵を用いて鍵演算回路７による拡大鍵生成処理を実行する。
鍵演算回路７から出力される拡大鍵は、第１１ＸＯＲ回路７１７から直接出力される第３拡大鍵（ＥＸＫＥＹ３）と、遅延短縮パイプラインを構成する出力レジスタ回路７１８に一旦格納されて次のサイクルで出力される第４拡大鍵（ＥＸＫＥＹ４）とがある。
第１中間鍵選択回路８、第１拡大鍵生成回路１１および第２中間鍵選択回路９、第２拡大鍵生成回路１２は図８に示すような構成であり、データスクランブル回路２によるＩ関数処理またはＩ／２関数処理を実行する際に、それぞれ第１拡大鍵（ＥＸＫＥＹ１）および第２拡大鍵（ＥＸＫＥＹ２）を生成してデータスクランブル回路２に供給する。第１中間鍵選択回路８および第２中間鍵生成回路９はそれぞれ中間鍵記憶回路６に格納されている１２個の中間鍵（ａ０〜ｄ２）からそれぞれ４個の中間鍵を選択し、第１拡大鍵生成回路１１および第２拡大鍵生成回路１２に（ＫＥＹＸ，ＫＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）として出力する。第１拡大鍵生成回路１１および第２拡大鍵生成回路１２では、それぞれ入力される中間鍵（ＫＥＹＸ，ＫＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）に基づいて拡大鍵生成処理を実行し、各サイクルにおいて１個ずつ、計２個ずつの拡大鍵（ＥＸＫＥＹ１，ＥＸＫＥＹ２）を生成する。
【００４０】
データスクランブル回路２では、第１〜第２サイクルにおいてＢ＋Ｉ関数回路４２を用いてＩ／２関数処理を行う場合およびそれ以外のサイクルにおいてＲ＋Ｉ／２関数回路４１を用いてＩ／２関数処理を行う際に２個の拡大鍵を必要とし、この場合には第１拡大鍵生成回路１１および第２拡大鍵生成回路１２から生成される第１拡大鍵（ＥＸＫＥＹ１）および第２拡大鍵（ＥＸＫＥＹ２）を用いる。
また、データスクランブル回路２のＢ＋Ｉ関数回路４２を用いてＩ関数処理を実行する際には４個の拡大鍵が必要となる。この場合、直前の拡大鍵が２個必要となるサイクルにおいて、鍵演算回路７から出力される拡大鍵（ＥＸＫＥＹ３）を使用せずに出力レジスタ回路７１８に一旦保存し、鍵演算回路７で新たに生成されるデータを第３拡大鍵（ＥＸＫＥＹ３）として出力し、出力レジスタ回路７１８に保存されたデータを第４拡大鍵（ＥＸＫＥＹ４）として出力する。このことから、鍵スケジュール回路５は、第１拡大鍵生成回路１１から出力される第１拡大鍵（ＥＸＫＥＹ１）、第２拡大鍵生成回路１２から出力される第２拡大鍵（ＥＸＫＥＹ２）、鍵演算回路７から出力される第３〜第４拡大鍵（ＥＸＫＥＹ３，ＥＸＫＥＹ４）により４個の拡大鍵をデータスクランブル回路２に供給することが可能となる。
【００４１】
暗号化処理時における中間鍵選択回路の各セレクタ（ＳＥＬＸ１〜ＳＥＬＷ３）およびスイッチ（ＳＷＩＴＣＨ１〜ＳＷＩＴＣＨ３）の制御テーブルは表１に示す通りであり、また復号化処理時における中間鍵選択回路の各セレクタ（ＳＥＬＸ１〜ＳＥＬＷ３）およびスイッチ（ＳＷＩＴＣＨ１〜ＳＷＩＴＣＨ３）の制御テーブルは表２に示す通りである。
＜付記＞
（付記１）
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行するデータスクランブル回路であって、
Ｉ関数を処理した後、Ｂ関数、Ｉ関数、Ｒ関数、Ｒ関数、Ｉ関数の順に処理を行う処理ブロックを６回処理し、その後、Ｂ関数、Ｉ関数の順に処理を行うために、処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路と、処理ブロック１２８ビットのデータに対するＢ関数処理とＩ関数処理とを同時に実行するＢ＋Ｉ関数回路と、前記Ｒ＋Ｉ／２関数回路の出力および前記Ｂ＋Ｉ関数回路の出力のいずれか１つを選択的に出力する第１セレクタと、入力データまたは前記第１セレクタの出力を格納するとともに前記Ｒ＋Ｉ／２関数回路およびＢ＋Ｉ関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路。
【００４２】
（付記２）
前記レジスタ回路と第１セレクタとの間に、Ｒ＋Ｉ／２関数回路とＢ＋Ｉ関数回路とが並列に接続され、第１セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、付記１に記載のデータスクランブル回路。
（付記３）
前記Ｒ＋Ｉ／２関数回路は、
３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）のうち入力データＣに対して非線形処理であるＭ関数処理を実行する第１Ｍ関数回路と、
入力データＤに対して非線形処理であるＭ関数処理を実行する第２Ｍ関数回路と、
前記第１Ｍ関数回路の出力と定数”０ｘ５５５５５５５５”，　”０ｘ３３３３３３３３”のうちいずれかの論理積演算を行う第１ＡＮＤ回路と、
前記第１ＡＮＤ回路の出力と前記第２Ｍ関数回路の出力との排他的論理和演算を行う第１ＸＯＲ回路と、
前記第２Ｍ関数回路の出力と定数”０ｘＡＡＡＡＡＡＡＡ”，”０ｘＣＣＣＣＣＣＣＣ”のうちいずれかの論理積演算を行う第２ＡＮＤ回路と、
前記第２ＡＮＤ回路の出力と前記第１Ｍ関数回路の出力との排他的論理和演算を行う第２ＸＯＲ回路と、
前記第１ＸＯＲ回路の出力と入力データＡとの排他的論理和演算を行ってその結果を出力データＣとして出力する第３ＸＯＲ回路と、
前記第２ＸＯＲ回路の出力と入力データＢとの排他的論理和演算を行ってその結果を出力データＤとして出力する第４ＸＯＲ回路と、
入力データＣと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第５ＸＯＲ回路と、
入力データＤと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第６ＸＯＲ回路と、
を備える、付記２に記載のデータスクランブル回路。
【００４３】
（付記４）
前記Ｂ＋Ｉ関数回路は、
３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）が（Ｃ，Ｄ，Ａ，Ｂ）の順に並び替えて入力され、４ビット×３２の出力データに変換する入力データ変換部と、
前記入力データ変換部のｉ番目（ｉ＝１〜３２）の出力データに対して非線形処理を実行する３２個の４ビットＳｂｏｘ処理回路と、
前記入力データ変換部のｉ番目の出力データに対して前記Ｓｂｏｘ処理回路の逆変換処理を実行する３２個の４ビットＳ−１ｂｏｘ処理回路と、
前記入力データ変換部のｉ番目の出力データ、ｉ番目の４ビットＳｂｏｘ処理回路の出力およびｉ番目の４ビットＳ−１ｂｏｘ処理回路の出力のうちいずれかを出力する３２個のセレクタ（Ｂｉ）と、
前記セレクタ（Ｂｉ）から出力される４ビット×３２個の出力データを３２ビット×４の出力データに変換する出力データ変換部と、
前記出力データ変換部の出力のうち第１の３２ビット出力データと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第７ＸＯＲ回路と、
前記出力データ変換部の出力のうち第２の３２ビット出力データと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第８ＸＯＲ回路と、
第３拡大鍵とデータ”０”のいずれかを選択的に出力する第２セレクタと、
前記出力データ変換部の出力のうち第３の３２ビット出力データと前記第２セレクタの出力との排他的論理和演算を行ってその結果を出力データＣとして出力する第９ＸＯＲ回路と、
第４拡大鍵とデータ”０”のいずれかを選択的に出力する第３セレクタと、
前記出力データ変換部の出力のうち第４の３２ビット出力データと前記第３セレクタの出力との排他的論理和演算を行ってその結果を出力データＤとして出力する第１０ＸＯＲ回路と、
を備える、付記１〜３のいずれかに記載のデータスクランブル回路。
【００４４】
（付記５）
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行するデータスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、
前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第１〜第３中間鍵選択回路と、
前記第１中間鍵選択回路で選択された中間鍵に基づいて第１拡大鍵を生成する第１拡大鍵生成回路と、
前記第２中間鍵選択回路で選択された中間鍵に基づいて第２拡大鍵を生成する第２拡大鍵生成回路と、
前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第３中間鍵選択回路で選択された中間鍵に基づいて第３拡大鍵および第４拡大鍵を生成する鍵演算回路と、
を備える鍵スケジュール回路。
【００４５】
（付記６）
前記鍵スケジュール回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）から算出される初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を格納する入力レジスタ回路を備え、
前記鍵演算回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）、入力レジスタ回路内に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）および第３中間鍵選択回路の出力（ＫＥＹＸ，ＬＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）を入力として、
前記レジスタ回路の第１出力（Ｋ’Ｏ）および第３出力（Ｋ’２）のうちいずれかを出力する第４セレクタと、
前記レジスタ回路の第２出力（Ｋ’１）および第４出力（Ｋ’３）のうちのいずれかを出力する第５セレクタと、
前記第５セレクタの出力、前記第５セレクタの出力を１ビット左シフトしたデータおよびデータ’０’のうちのいずれかを出力する第６セレクタと、
前記第４セレクタの出力と前記第３中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータのうちいずれかを出力する第７セレクタと、
前記第３中間鍵選択回路の第２出力（ＫＥＹＹ）と定数Ｍ（ｉ）（ｉ＝０〜１１）とのうちいずれかを出力する第８セレクタと、
前記第５セレクタの出力と前記第３中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータのうちいずれかを出力する第９セレクタと、
前記第６セレクタの出力と前記第３中間鍵選択回路の第４出力（ＫＥＹＷ）にＩＮＶ処理を行ったデータとのうちいずれか一方を出力する第１０セレクタと、
データ’０’とデータ’１’のうちいずれかを出力する第１１セレクタと、
前記第７セレクタの出力と第８セレクタの出力を加算する第１加算回路と、
前記第１１セレクタの出力を最下位ビットへのキャリとして前記第９セレクタの出力と第１０セレクタの出力とを加算する第２加算回路と、
前記第２加算回路の出力と前記第２加算回路の出力を１ビット左ローテーションしたデータのうちのいずれかを出力する第１２セレクタと、
前記第１加算回路の出力と第１２セレクタの出力との排他的論理和演算を行いその出力を第３拡大鍵として出力する第１１ＸＯＲ回路と、
前記第１１ＸＯＲ回路の出力を一時的に格納し第４拡大鍵として出力する出力レジスタ回路と、
前記出力レジスタ回路の出力と暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）のいずれかを出力する第１３セレクタと、
前記第１３セレクタの出力に対してＭ関数処理を行いその結果を中間鍵として出力するＭ関数回路と、
を備える付記５に記載の鍵スケジュール回路。
【００４６】
（付記７）
中間鍵生成時には暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）をＭ関数回路によりＭ関数処理した初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を用いて演算された中間鍵（ＩＭＫＥＹ）を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第１拡大鍵生成回路で生成される第１拡大鍵（ＥＸＫＥＹ１）、第２拡大鍵生成回路で生成される第２拡大鍵（ＥＸＫＥＹ２）、鍵演算回路で生成される第３拡大鍵（ＥＸＫＥＹ３）および第４拡大鍵（ＥＸＫＥＹ４）をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用することを特徴とする付記６に記載の鍵スケジュール回路。
【００４７】
（付記８）
前記第１拡大鍵生成回路および第２拡大鍵生成回路は、それぞれ前記第１中間鍵選択回路および第２中間鍵選択回路の出力　（ＫＥＹＸ，ＫＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）と入力とし、
前記中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータと中間鍵選択回路の第２出力（ＫＥＹＹ）との加算処理を行う鍵生成回路内加算回路と、
前記中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータと中間鍵選択回路の第４出力（ＫＥＹＷ）との減算処理を行う鍵生成回路内減算回路と、
前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を１ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内ＸＯＲ回路と、
を備える付記５〜７のいずれかに記載の鍵スケジュール回路。
【００４８】
（付記９）
暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するＩ関数と、データのビットを攪拌するＢ関数およびＲ関数とを用いてデータスクランブルを行い、鍵長１２８／１９２／２５６ビット、処理ブロック１２８ビットの共通鍵ブロック暗号の暗号化／復号化を、鍵長１２８ビット専用で実行する暗号回路であって、
Ｉ関数を処理した後、Ｂ関数、Ｉ関数、Ｒ関数、Ｒ関数、Ｉ関数の順に処理を行う処理ブロックを６回処理し、その後、Ｂ関数、Ｉ関数の順に処理を行うために、処理ブロック１２８ビットのデータに対して１２８ビット分のＲ関数処理と６４ビット分のＩ関数処理を同時に実行するＲ＋Ｉ／２関数回路と、処理ブロック１２８ビットのデータに対するＢ関数処理とＩ関数処理とを同時に実行するＢ＋Ｉ関数回路と、前記Ｒ＋Ｉ／２関数回路の出力および前記Ｂ＋Ｉ関数回路の出力のいずれか１つを選択的に出力する第１セレクタと、入力データまたは前記第１セレクタの出力を格納するとともに前記Ｒ＋Ｉ／２関数回路およびＢ＋Ｉ関数回路にデータを供給するレジスタ回路とを実装するデータスクランブル回路と、
前記データスクランブル回路に対して拡大鍵を提供する鍵スケジュール回路であって、前記暗号鍵に基づいて生成される複数の中間鍵を格納する中間鍵記憶回路と、前記中間鍵記憶回路に格納されている中間鍵から鍵スケジュールに応じて中間鍵を選択する第１〜第３中間鍵選択回路と、前記第１中間鍵選択回路で選択された中間鍵に基づいて第１拡大鍵を生成する第１拡大鍵生成回路と、前記第２中間鍵選択回路で選択された中間鍵に基づいて第２拡大鍵を生成する第２拡大鍵生成回路と、前記暗号鍵に基づいて複数の中間鍵を生成するとともに、前記第３中間鍵選択回路で選択された中間鍵に基づいて第３拡大鍵および第４拡大鍵を生成する鍵演算回路とを備える鍵スケジュール回路と、
を含む暗号回路。
【００４９】
（付記１０）
前記レジスタ回路と第１セレクタとの間に、Ｒ＋Ｉ／２関数回路とＢ＋Ｉ関数回路とが並列に接続され、第１セレクタの出力がレジスタ回路にフィードバックされたクロック同期ループを構成する、付記９に記載の暗号回路。
（付記１１）
前記Ｒ＋Ｉ／２関数回路は、
３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）のうち入力データＣに対して非線形処理であるＭ関数処理を実行する第１Ｍ関数回路と、
入力データＤに対して非線形処理であるＭ関数処理を実行する第２Ｍ関数回路と、
前記第１Ｍ関数回路の出力と定数”０ｘ５５５５５５５５”，　”０ｘ３３３３３３３３”のうちいずれかの論理積演算を行う第１ＡＮＤ回路と、
前記第１ＡＮＤ回路の出力と前記第２Ｍ関数回路の出力との排他的論理和演算を行う第１ＸＯＲ回路と、
前記第２Ｍ関数回路の出力と定数”０ｘＡＡＡＡＡＡＡＡ”，”０ｘＣＣＣＣＣＣＣＣ”のうちいずれかの論理積演算を行う第２ＡＮＤ回路と、
前記第２ＡＮＤ回路の出力と前記第１Ｍ関数回路の出力との排他的論理和演算を行う第２ＸＯＲ回路と、
前記第１ＸＯＲ回路の出力と入力データＡとの排他的論理和演算を行ってその結果を出力データＣとして出力する第３ＸＯＲ回路と、
前記第２ＸＯＲ回路の出力と入力データＢとの排他的論理和演算を行ってその結果を出力データＤとして出力する第４ＸＯＲ回路と、
入力データＣと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第５ＸＯＲ回路と、
入力データＤと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第６ＸＯＲ回路と、
を備える、付記１０に記載の暗号回路。
【００５０】
（付記１２）
前記Ｂ＋Ｉ関数回路は、
３２ビット×４の入力データ（Ａ，Ｂ，Ｃ，Ｄ）が（Ｃ，Ｄ，Ａ，Ｂ）の順に並び替えて入力され、４ビット×３２の出力データに変換する入力データ変換部と、
前記入力データ変換部のｉ番目（ｉ＝１〜３２）の出力データに対して非線形処理を実行する３２個の４ビットＳｂｏｘ処理回路と、
前記入力データ変換部のｉ番目の出力データに対して前記Ｓｂｏｘ処理回路の逆変換処理を実行する３２個の４ビットＳ−１ｂｏｘ処理回路と、
前記入力データ変換部のｉ番目の出力データ、ｉ番目の４ビットＳｂｏｘ処理回路の出力およびｉ番目の４ビットＳ−１ｂｏｘ処理回路の出力のうちいずれかを出力する３２個のセレクタ（Ｂｉ）と、
前記セレクタ（Ｂｉ）から出力される４ビット×３２個の出力データを３２ビット×４の出力データに変換する出力データ変換部と、
前記出力データ変換部の出力のうち第１の３２ビット出力データと第１拡大鍵との排他的論理和演算を行ってその結果を出力データＡとして出力する第７ＸＯＲ回路と、
前記出力データ変換部の出力のうち第２の３２ビット出力データと第２拡大鍵との排他的論理和演算を行ってその結果を出力データＢとして出力する第８ＸＯＲ回路と、
第３拡大鍵とデータ”０”のいずれかを選択的に出力する第２セレクタと、
前記出力データ変換部の出力のうち第３の３２ビット出力データと前記第２セレクタの出力との排他的論理和演算を行ってその結果を出力データＣとして出力する第９ＸＯＲ回路と、
第４拡大鍵とデータ”０”のいずれかを選択的に出力する第３セレクタと、
前記出力データ変換部の出力のうち第４の３２ビット出力データと前記第３セレクタの出力との排他的論理和演算を行ってその結果を出力データＤとして出力する第１０ＸＯＲ回路と、
を備える、付記９〜１１のいずれかに記載の暗号回路。
【００５１】
（付記１３）
前記鍵スケジュール回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）から算出される初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を格納する入力レジスタ回路を備え、
前記鍵演算回路は、暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）、入力レジスタ回路内に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）および第３中間鍵選択回路の出力（ＫＥＹＸ，ＬＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）を入力として、
前記レジスタ回路の第１出力（Ｋ’Ｏ）および第３出力（Ｋ’２）のうちいずれかを出力する第４セレクタと、
前記レジスタ回路の第２出力（Ｋ’１）および第４出力（Ｋ’３）のうちのいずれかを出力する第５セレクタと、
前記第５セレクタの出力、前記第５セレクタの出力を１ビット左シフトしたデータおよびデータ’０’のうちのいずれかを出力する第６セレクタと、
前記第４セレクタの出力と前記第３中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータのうちいずれかを出力する第７セレクタと、
前記第３中間鍵選択回路の第２出力（ＫＥＹＹ）と定数Ｍ（ｉ）（ｉ＝０〜１１）とのうちいずれかを出力する第８セレクタと、
前記第５セレクタの出力と前記第３中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータのうちいずれかを出力する第９セレクタと、
前記第６セレクタの出力と前記第３中間鍵選択回路の第４出力（ＫＥＹＷ）にＩＮＶ処理を行ったデータとのうちいずれか一方を出力する第１０セレクタと、
データ’０’とデータ’１’のうちいずれかを出力する第１１セレクタと、
前記第７セレクタの出力と第８セレクタの出力を加算する第１加算回路と、
前記第１１セレクタの出力を最下位ビットへのキャリとして前記第９セレクタの出力と第１０セレクタの出力とを加算する第２加算回路と、
前記第２加算回路の出力と前記第２加算回路の出力を１ビット左ローテーションしたデータのうちのいずれかを出力する第１２セレクタと、
前記第１加算回路の出力と第１２セレクタの出力との排他的論理和演算を行いその出力を第３拡大鍵として出力する第１１ＸＯＲ回路と、
前記第１１ＸＯＲ回路の出力を一時的に格納し第４拡大鍵として出力する出力レジスタ回路と、
前記出力レジスタ回路の出力と暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）のいずれかを出力する第１３セレクタと、
前記第１３セレクタの出力に対してＭ関数処理を行いその結果を中間鍵として出力するＭ関数回路と、
を備える付記９〜１１のいずれかに記載の暗号回路。
【００５２】
（付記１４）
中間鍵生成時には暗号鍵（Ｋ０，Ｋ１，Ｋ２，Ｋ３）をＭ関数回路によりＭ関数処理した初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を入力レジスタ回路に格納した後、入力レジスタ回路に格納された初期データ（Ｋ’０，Ｋ’１，Ｋ’２，Ｋ’３）を用いて演算された中間鍵（ＩＭＫＥＹ）を中間鍵記憶回路に格納し、拡大鍵生成時には中間鍵記憶回路に格納された中間鍵に基づいて第１拡大鍵生成回路で生成される第１拡大鍵（ＥＸＫＥＹ１）、第２拡大鍵生成回路で生成される第２拡大鍵（ＥＸＫＥＹ２）、鍵演算回路で生成される第３拡大鍵（ＥＸＫＥＹ３）および第４拡大鍵（ＥＸＫＥＹ４）をデータスクランブル回路に出力することによって、前記鍵演算回路を中間鍵生成時と拡大鍵生成時において共用することを特徴とする付記１３に記載の暗号回路。
【００５３】
（付記１５）
前記第１拡大鍵生成回路および第２拡大鍵生成回路は、それぞれ前記第１中間鍵選択回路および第２中間鍵選択回路の出力　（ＫＥＹＸ，ＫＥＹＹ，ＫＥＹＺ，ＫＥＹＷ）と入力とし、
前記中間鍵選択回路の第１出力（ＫＥＹＸ）を１ビット左ローテーションしたデータと中間鍵選択回路の第２出力（ＫＥＹＹ）との加算処理を行う鍵生成回路内加算回路と、
前記中間鍵選択回路の第３出力（ＫＥＹＺ）を１ビット左ローテーションしたデータと中間鍵選択回路の第４出力（ＫＥＹＷ）との減算処理を行う鍵生成回路内減算回路と、
前記鍵生成回路内加算回路の出力と鍵生成回路内減算回路の出力を１ビット左ローテーションしたデータとの排他的論理和演算を行う鍵生成回路内ＸＯＲ回路と、
を備える付記１３または１４に記載の暗号回路。
【００５４】
【発明の効果】
本発明によれば、鍵長１２８ビット専用の暗号回路を構成し、データスクランブル回路と鍵スケジュール回路の一部を共通化することによって回路規模を削減することが可能であるとともに、拡大鍵生成に関する回路を複数設け、特定関数処理回路の処理データ単位を集約することにより、ＳＣ２０００アルゴリズムを高速かつコンパクトな回路で実現することが可能となる。
本発明では、回路規模２４ｋ程度で処理速度１．４Ｇｂｐｓとすることができるため、回路規模６０ｋ程度で処理速度０．９Ｇｂｐｓを実現可能な国際出願番号ＰＣＴ／ＪＰ０１／０５０９５号で提案した暗号回路に比して、回路規模を１／３程度に削減するとともに処理速度を１．５倍に高速化することができる。また、回路規模１０ｋ程度で処理速度２４０Ｍｂｐｓを実現可能な特願２００２−０１８５３８号で提案した暗号回路に比して、回路規模は２．４倍に増加するが、処理速度は６倍に向上させることが可能となる。
【図面の簡単な説明】
【図１】本発明の概略構成を示すブロック図。
【図２】データスクランブル回路の構成を示すブロック図。
【図３】Ｒ＋Ｉ／２関数回路の構成を示すブロック図。
【図４】Ｂ＋Ｉ関数回路の構成を示すブロック図。
【図５】暗号鍵入力時における鍵演算回路の接続状態を示すブロック図。
【図６】中間鍵生成時における鍵演算回路の接続状態を示すブロック図。
【図７】拡大鍵生成時における鍵演算回路の接続状態を示すブロック図。
【図８】拡大鍵生成時における中間鍵選択回路と拡大鍵生成回路の接続状態を示すブロック図。
【図９】拡大鍵生成時における鍵スケジュール回路の接続状態を示すブロック図。
【図１】
2004038103.tif 000006
【図２】
2004038103.tif 000007
【図３】
2004038103.tif 000008
【図４】
2004038103.tif 000009
【図５】
2004038103.tif 000010
【図６】
2004038103.tif 000011
【図７】
2004038103.tif 000012
【図８】
2004038103.tif 000013
【図９】
2004038103.tif 000014