(57)【特許請求の範囲】
【請求項１】
乱数系列のビットデータを入力し、変換されたビットデータを複数の内部メモリから出力する非線形関数器であって、
前記入力する乱数系列のビットデータのうち一部のビットデータと前記複数の内部メモリのうち一部の内部メモリデータとを演算する第１の演算器と、該第１の演算器のうち一部の演算器の演算結果と前記一部の内部メモリデータとは異なる内部メモリデータとを演算する第２の演算器と、前記入力する乱数系列のビットデータのうち一部のビットデータとは異なるビットデータと前記第２の演算器の演算結果とを演算する第３の演算器と、を備えた第１の回路網と、
第１の内部メモリ、第２の内部メモリ、第３の内部メモリ、第４の内部メモリ、第１の非線形置換器、第２の非線形置換器、第３の非線形置換器、第４の非線形置換器、第１の逆変換行列、第２の逆変換行列、第３の逆変換行列、第４の逆変換行列、第１の変換行列と、第２の変換行列とからなり、前記第１の内部メモリが、前記第１の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第１の逆変換行列に出力し、前記第１の逆変換行列により逆変換されたデータが、前記第１の演算器の一部である第１の加算器および第２の加算器に出力され、前記第２の加算器が前記第１の逆変換行列から入力したデータと前記入力する乱数系列のビットデータのうち一部のビットデータとの加算処理を行なって、前記第１の変換行列に出力し、前記第１の変換行列により変換されたデータが前記第２の非線形置換器に出力され、前記第２の非線形置換器が、前記第１の変換行列から入力したデータに対して、非線形置換処理を行なったデータを前記第２の内部メモリに出力し、前記第２の内部メモリが、前記第２の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第３の非線形置換器および第２の逆変換行列に出力し、前記第２の逆変換行列により逆変換されたデータが、前記第２の演算器の一部である第１の排他的論理和演算器に出力され、前記第３の非線形置換器が、前記第２の内部メモリから入力したデータに対して、非線形置換処理を行なったデータを前記第３の内部メモリに出力し、前記第３の内部メモリが、前記第３の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第３の逆変換行列に出力し、前記第３の逆変換行列により逆変換されたデータが、前記第１の演算器の一部である第３の加算器および第４の加算器に出力され、前記第３の加算器が前記第３の逆変換行列から入力したデータと前記入力する乱数系列のビットデータのうち一部のビットデータとの加算処理を行なって、前記第２の変換行列に出力し、前記第第２の変換行列により変換されたデータが前記第４の非線形置換器に出力され、前記第４の非線形置換器が、前記第２の変換行列から入力したデータに対して、非線形置換処理を行なったデータを前記第４の内部メモリに出力し、前記第４の内部メモリが、前記第４の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第１の非線形置換器および第４の逆変換行列に出力し、前記第４の逆変換行列により逆変換されたデータを前記第２の演算器の一部である第２の排他的論理和演算器に出力する環状に接続された第２の回路網と、
を備え、
前記第２の回路網が、３２ビット以下のｍ（ｍ：正の整数）ビットの入力データに対して、内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行することを特徴とする非線形関数器。
【請求項２】
前記変換行列が１バイトのデータをｘ（ｘ：正の整数）ビットの元からｎ（ｎ：ｘ＞ｎの正の整数）ビットの元に変換し、前記逆変換行列が１バイトのデータをｎ（ｎ：ｘ＞ｎの正の整数）ビットの元からｘ（ｘ：正の整数）ビットの元に変換することを特徴とする請求項１に記載の非線形関数器。
【請求項３】
前記非線形置換器が、非線形置換処理部と線形攪拌処理部とからなり、該非線形置換処理部がさらに、逆元変換処理部とアフィン変換処理部とからなる処理ブロックを３２／ｌ（ｌ：正の整数）系統備え、逆元変換処理部およびアフィン変換処理部が各処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行することを特徴とする請求項１または請求項２に記載の非線形関数器。
【請求項４】
前記逆元変換処理部が２乗算器と、乗算器と、加算器とから構成されることを特徴とする請求項３に記載の非線形関数器。
【請求項５】
前記アフィン変換処理部の処理が行列演算により実行されることを特徴とする請求項３に記載の非線形関数器。
【請求項６】
前記線形攪拌処理部が、加算器と、定数乗算器とから構成されることを特徴とする請求項３に記載の非線形関数器。
【請求項７】
前記請求項１から請求項６のいずれかに記載の非線形関数器と、
前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、
前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、
該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、暗号文を出力する排他的論理和演算手段と、
を備えたことを特徴とするストリーム暗号の暗号化装置。
【請求項８】
前記請求項１から請求項６のいずれかに記載の非線形関数器と、
前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、
前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、
該鍵系列データ生成手段において生成された鍵系列のビットデータと暗号文との排他的論理和演算を行って、平文を出力する排他的論理和演算手段と、
を備えたことを特徴とするストリーム暗号の復号化装置。
【請求項９】
前記請求項１から請求項６のいずれかに記載の非線形関数器と、
前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、
前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、
該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、演算結果を前記乱数系列データ生成手段にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する排他的論理和演算手段と、
を備えたことを特徴とするＭＡＣ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非線形関数器、ストリーム暗号の暗号化装置、復号化装置、ＭＡＣ生成装置に関する。
【背景技術】
【０００２】
近年、インターネットの目覚しい普及により、コンピュータを利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、その通信内容を秘匿化するために暗号が利用されている。ここで、暗号方式としては、１つの鍵で暗号化と復号化とを行う共通鍵暗号方式が一般的であるが、この共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式とに大別される。
【０００３】
ストリーム暗号方式は、ブロック暗号方式よりも高速な処理が期待できるため、例えば、映画等の大容量データを伝送するための方式として、近年、注目を浴びているが、ストリーム暗号方式の場合には、暗号処理と復号処理との同期をとらなければならないという問題があった。そのため、一定サイズ以上の誤りなく受信した暗号文を利用して、同期を自動的に回復する自己同期型のストリーム暗号装置が提案されている（例えば、特許文献１参照。）。
【０００４】
ここで、ストリーム暗号の構成要素として、周期系列を生成する生成器と非線形フィルタとが存在するが、その安全性は主に非線形フィルタの構成方法に依存している。そのため、ストリーム暗号の安全性を高めるために、図１２に示すように複数の内部メモリ（図中、Ｌ１，Ｌ２、Ｒ１、Ｒ２）が非線形置換器（図中、Ｓｕｂ）や演算器を介して、環状に接続することにより、安全性を相乗的に高める非線形フィルタの構成方法も考えられる。
【特許文献１】特開２００１−１６１９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の構成では、ソフトウエア実装を念頭に構成されているため、これをハードウエア実装しようとすると、１つのユニットの演算単位が、例えば８ビットと大きいために、部品の共有化が進まず回路規模が大きくなる等の問題点がある。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、安全性を維持しつつ、実装する回路の小規模化を可能とする非線形関数器およびこれを用いたストリーム暗号の暗号化装置、復号化装置、ＭＡＣ生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【０００８】
（１）本発明は、乱数系列のビットデータ（例えば、図１のＢ１、Ｂ５、Ｂ１０、Ｂ１１、Ａ１、Ａ５）を入力し、変換されたビットデータを複数の内部メモリ（例えば、図１の内部メモリ２１、２２、２３、２４）から出力する非線形関数器であって、前記入力する乱数系列のビットデータのうち一部のビットデータ（例えば、図１のＢ１、Ｂ５、Ｂ１０、Ｂ１１）と前記複数の内部メモリのうち一部の内部メモリデータとを演算する第１の演算器（例えば、図１の２５ａ、２５ｂ、２５ｃ、２５ｄ）と、該第１の演算器のうち一部の演算器（例えば、図１の２５ａ、２５ｄ）の演算結果と前記一部の内部メモリデータとは異なる内部メモリデータとを演算する第２の演算器（例えば、図１の２７ａ、２７ｃ）と、前記入力する乱数系列のビットデータのうち一部のビットデータとは異なるビットデータ（例えば、図１のＡ１、Ａ５）と前記第２の演算器の演算結果とを演算する第３の演算器（例えば、図１の２７ｂ、２７ｄ）と、を備えた第１の回路網と、第１の内部メモリ（例えば、図１のＬ２に相当）、第２の内部メモリ（例えば、図１のＲ１に相当）、第３の内部メモリ（例えば、図１のＲ２に相当）、第４の内部メモリ（例えば、図１のＬ１に相当）、第１の非線形置換器（例えば、図１の２６ａに相当）、第２の非線形置換器（例えば、図１の２６ｂに相当）、第３の非線形置換器（例えば、図１の２６ｄに相当）、第４の非線形置換器（例えば、図１の２６ｃに相当）、第１の逆変換行列（例えば、図１の２９ａに相当）、第２の逆変換行列（例えば、図１の２９ｄに相当）、第３の逆変換行列（例えば、図１の２９ｂに相当）、第４の逆変換行列（例えば、図１の２９ｃに相当）、第１の変換行列（例えば、図１の２８ａに相当）と、第２の変換行列（例えば、図１の２８ｂに相当）とからなり、前記第１の内部メモリが、前記第１の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第１の逆変換行列に出力し、前記第１の逆変換行列により逆変換されたデータが、前記第１の演算器の一部である第１の加算器および第２の加算器に出力され、前記第２の加算器が前記第１の逆変換行列から入力したデータと前記入力する乱数系列のビットデータのうち一部のビットデータとの加算処理を行なって、前記第１の変換行列に出力し、前記第１の変換行列により変換されたデータが前記第２の非線形置換器に出力され、前記第２の非線形置換器が、前記第１の変換行列から入力したデータに対して、非線形置換処理を行なったデータを前記第２の内部メモリに出力し、前記第２の内部メモリが、前記第２の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第３の非線形置換器および第２の逆変換行列に出力し、前記第２の逆変換行列により逆変換されたデータが、前記第２の演算器の一部である第１の排他的論理和演算器に出力され、前記第３の非線形置換器が、前記第２の内部メモリから入力したデータに対して、非線形置換処理を行なったデータを前記第３の内部メモリに出力し、前記第３の内部メモリが、前記第３の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第３の逆変換行列に出力し、前記第３の逆変換行列により逆変換されたデータが、前記第１の演算器の一部である第３の加算器および第４の加算器に出力され、前記第３の加算器が前記第３の逆変換行列から入力したデータと前記入力する乱数系列のビットデータのうち一部のビットデータとの加算処理を行なって、前記第２の変換行列に出力し、前記第第２の変換行列により変換されたデータが前記第４の非線形置換器に出力され、前記第４の非線形置換器が、前記第２の変換行列から入力したデータに対して、非線形置換処理を行なったデータを前記第４の内部メモリに出力し、前記第４の内部メモリが、前記第４の非線形置換器からのデータを格納し、前ラウンドに格納したデータを前記第１の非線形置換器および第４の逆変換行列に出力し、前記第４の逆変換行列により逆変換されたデータを前記第２の演算器の一部である第２の排他的論理和演算器に出力する環状に接続された第２の回路網と、を備え、前記第２の回路網が、３２ビット以下のｍ（ｍ：正の整数）ビットの入力データに対して、内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行することを特徴とする非線形関数器を提案している。
【０００９】
この発明によれば、入力した乱数系列のビットデータと複数の内部メモリのうち一部の内部メモリデータとを演算する演算器と、入力ビットデータを非線形置換する非線形置換器と、を備え、複数の内部メモリが非線形置換器および演算器を介して、環状に接続されるとともに、乱数系列のビットデータが入力され、演算器により演算された出力データの元を変換する変換行列を設け、内部メモリの出力端に変換行列に対応する逆変換行列を設けて、３２ビット以下のｍ（ｍ：正の整数）ビットの入力データに対して、内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行する。したがって、非線形置換器の入力に入力データの元を変換（写像）する変換行列を設けたため、３２ビット以下のｍ（ｍ：正の整数）ビットの入力データに対して、内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行することができる。
【００１０】
（２）本発明は、（１）の非線形関数器について、前記変換行列が１バイトのデータをｘ（ｘ：正の整数）ビットの元からｎ（ｎ：ｘ＞ｎの正の整数）ビットの元に変換し、前記逆変換行列が１バイトのデータをｎ（ｎ：ｘ＞ｎの正の整数）ビットの元からｘ（ｘ：正の整数）ビットの元に変換することを特徴とする非線形関数器を提案している。
【００１１】
この発明によれば、変換行列が１バイトのデータをｘ（ｘ：正の整数）ビットの元からｎ（ｎ：ｘ＞ｎの正の整数）ビットの元に変換し、前記逆変換行列が１バイトのデータをｎ（ｎ：ｘ＞ｎの正の整数）ビットの元からｘ（ｘ：正の整数）ビットの元に変換する。したがって、３２ビット以下のｍ（ｍ：正の整数）ビットの入力データに対して、非線形置換器の内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行することができる。
【００１２】
（３）本発明は、（１）または（２）の非線形関数器について、前記非線形置換器が、非線形置換処理部（例えば、図３の非線形置換処理部３１に相当）と線形攪拌処理部（例えば、図３の線形攪拌処理部３２に相当）とからなり、該非線形置換処理部がさらに、逆元変換処理部とアフィン変換処理部とからなる処理ブロックを３２／ｌ（ｌ：正の整数）系統備え、逆元変換処理部およびアフィン変換処理部が各処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行する非線形関数器を提案している。
【００１３】
この発明によれば、非線形置換器が、非線形置換処理部と線形攪拌処理部とからなり、この非線形置換処理部がさらに、逆元変換処理部とアフィン変換処理部とからなる処理ブロックを３２／ｌ（ｌ：正の整数）系統備え、逆元変換処理部およびアフィン変換処理部が各処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行する。したがって、３２ビット以下のｍ（ｍ：正の整数）ビットビットの入力データに対して、非線形置換器の内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行することができる。
【００１４】
（４）本発明は、（３）の非線形関数器について、前記逆元変換処理部が２乗算器と、乗算器と、加算器とから構成されることを特徴とする非線形関数器提案している。
【００１５】
この発明によれば、逆元変換処理部が２乗算器と、乗算器と、加算器とから構成される。したがって、逆元変換処理部の内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行するとともに、簡易な回路要素により処理回路を構成したことから、回路の小規模化を図ることができる。
【００１６】
（５）本発明は、（３）の非線形関数器について、前記アフィン変換処理部の処理が行列演算により実行されることを特徴とする非線形関数器を提案している。
【００１７】
この発明によれば、アフィン変換処理部の処理が行列演算により実行される。したがって、アフィン変換処理部の内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行するとともに、簡易な回路要素により処理回路を構成したことから、回路の小規模化を図ることができる。
【００１８】
（６）本発明は、（３）の非線形関数器について、前記線形攪拌処理部が、加算器と、定数乗算器とから構成されることを特徴とする非線形関数器を提案している。
【００１９】
この発明によれば、線形攪拌処理部が、加算器と、定数乗算器とから構成される。したがって、線形攪拌処理部の内部処理をｎ（ｎ：ｍ＞ｎの正の整数）ビットのデータ単位で実行するとともに、簡易な回路要素により処理回路を構成したことから、回路の小規模化を図ることができる。
【００２０】
（７）本発明は、（１）から（６）のいずれかに記載の非線形関数器と、前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、暗号文を出力する排他的論理和演算手段と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【００２１】
この発明によれば、（１）から（６）のいずれかの非線形関数器を用いて、ストリーム暗号の暗号化装置を構成することができる。したがって、安全でかつ高速な処理を行うとともに、実装する回路の小規模化を可能とするストリーム暗号の暗号化装置を構成することができる。
【００２２】
（８）本発明は、（１）から（６）のいずれかに記載の非線形関数器と、前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、該鍵系列データ生成手段において生成された鍵系列のビットデータと暗号文との排他的論理和演算を行って、平文を出力する排他的論理和演算手段と、  を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【００２３】
この発明によれば、（１）から（６）のいずれかの非線形関数器を用いて、ストリーム暗号の復号化装置を構成することができる。したがって、安全でかつ高速な処理を行うとともに、実装する回路の小規模化を可能とするストリーム暗号の復号化装置を構成することができる。
【００２４】
（９）本発明は、（１）から（６）のいずれかに記載の非線形関数器と、前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、演算結果を前記乱数系列データ生成手段にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する排他的論理和演算手段と、を備えたことを特徴とするＭＡＣ生成装置を提案している。
【００２５】
この発明によれば、（１）から（６）のいずれかの非線形関数器を用いて、ＭＡＣ生成装置を構成することができる。したがって、安全でかつ高速な処理を行うとともに、実装する回路の小規模化を可能とするＭＡＣ生成装置を構成することができる。
【発明の効果】
【００２６】
本発明によれば、複数の内部メモリが非線形置換器および演算器を介して、環状に接続されているため、これをストリーム暗号装置等に用いた場合には、安全性を相乗的に増加させることができるという効果がある。また、非線形関数器の内部処理を従来の８ビット単位での処理からこれよりも小さいｎ（ｎ：正の整数）ビット単位の処理とするとともに、簡易な回路要素で全体の回路を構成したため、ハードウエア実装における回路規模を小規模化することができるという効果がある。
【発明を実施するための最良の形態】
【００２７】
以下、図面を用いて、本発明の実施形態について詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２８】
＜非線形関数器の構成および処理＞
本実施形態に係る非線形関数器２０は、従来、ＧＦ（２８）上の元として８ビットごとのデータに対して行われていた処理を、ＧＦ（（２４）２）上の元として、４ビットごとのデータに対して内部処理を行い、ハードウエア実装における回路の小規模化を図るものである。以下に、その構成と処理の詳細について説明する。
【００２９】
非線形関数器２０は、図１に示すように、複数の内部メモリ２１、２２、２３、２４（図中、Ｌ１、Ｌ２、Ｒ１、Ｒ２）と、加算器２５ａ、２５ｂ、２５ｃ、２５ｄ（第１の演算器）と、非線形置換器（Ｓｕｂ）２６ａ、２６ｂ、２６ｃ、２６ｄと、排他的論理和演算器（ＸＯＲ）２７ａ、２７ｃ（第２の演算器）、２７ｂ、２７ｄ（第３の演算器）と、変換行列２８ａ、２８ｂと、逆変換行列２９ａ、２９ｂ、２９ｃ、２９ｄとから構成されている。
【００３０】
本実施形態に係る非線形関数器２０は、図１に示すように、Ｌ２→逆変換行列２９ａ→加算器２５ｂ→変換行列２８ａ→非線形置換器（Ｓｕｂ）２６ｂ→Ｒ１→非線形置換器（Ｓｕｂ）２６ｄ→Ｒ２→逆変換行列２９ｂ→加算器２５ｃ→変換行列２８ｂ→非線形置換器（Ｓｕｂ）２６ｃ→Ｌ１→非線形置換器（Ｓｕｂ）２６ａ→Ｌ２といった複数の内部メモリ２１、２２、２３、２４が非線形置換器（Ｓｕｂ）２６ａ、２６ｂ、２６ｃ、２６ｄや加算器２５ａ、２５ｂ、２５ｃ、２５ｄを介して、環状に接続されている。このような構成をとることにより、非線形置換の効果を相乗的に増加させて、暗号化装置等の安全性を向上させることができる。
【００３１】
複数の内部メモリ２１、２２、２３、２４は、上記のような構成になっているため、隣接する内部メモリのデータを非線形置換器（Ｓｕｂ）２６ａ、２６ｂ、２６ｃ、２６ｄにより非線形置換したデータに更新され、更新されたデータを変換されたビット列として出力する。
【００３７】
加算器２５ａ、２５ｂ、２５ｃ、２５ｄは、入力される乱数系列のビット列と複数の内部メモリ２１、２２、２３、２４のうちの一部のメモリに格納されているビット列データを逆変換行列２９ａ、２９ｂ、２９ｃ、２９ｄにより元を逆変換したビット列データとを加算する演算器である。なお、本実施形態では、加算器２５ａ、２５ｂ、２５ｃ、２５ｄを例示したが、これに代えて排他的論理和演算器（ＸＯＲ）を用いてもよい。
【００３８】
変換行列２８ａ、２８ｂ（図中、Ｔと示す）は、バイト単位に変換を行う処理である。ここでは、１バイトのデータをＧＦ（２８）の元からＧＦ（（２４）２）の元への変換を行う。この変換は、数１の行列を用いて行うことができる。
【００３９】
【数１】
0005726394.tif 000002
【００４０】
つまり、１バイトのデータを数２とし、縦行列とみなしたとき、数３となる。
【００４１】
【数２】
0005726394.tif 000003
【００４２】
【数３】
0005726394.tif 000004
【００４３】
逆変換行列２９ａ、２９ｂ、２９ｃ、２９ｄ（図中、Ｔ−１と示す）は、変換行列２８ａ、２８ｂ（図中、Ｔと示す）の逆処理を行う処理である。ここでは、バイト単位に１バイトのデータをＧＦ（（２４）２）の元からＧＦ（２８）の元への変換を行う。この変換は、数４の逆行列を用いて行うことができる。
【００４４】
【数４】
0005726394.tif 000005
【００４５】
つまり、１バイトのデータを数５とし、縦行列とみなしたとき、数６となる。
【００４６】
【数５】
0005726394.tif 000006
【００４７】
【数６】
0005726394.tif 000007
【００４８】
非線形置換器（Ｓｕｂ）２６ａ、２６ｂ、２６ｃ、２６ｄは、入力するビット列データを非線形置換する。さらに、非線形置換器（Ｓｕｂ）２６ａ、２６ｂ、２６ｃ、２６ｄは、図３に示すように、非線形置換処理部３１と、線形攪拌処理部３２とから構成されている。
【００４９】
ここでの非線形変換は、各バイトをＧＦ（（２４）２）の元に変換されたデータに対して処理を行うことになる。なお、各バイトをＧＦ（（２４）２）の元と見た場合でも、ＧＦ（２８）の場合と同様に非線形置換処理と線形攪拌処理とに分けて考えることができる。
【００５０】
非線形置換処理は、従来、バイト単位にバイト非線形変換を行う処理であった。そのため、本実施形態では、ＧＦ（（２４）２）の元に対して、バイト非線形変換を行う。また、バイト非線形変換は、図４に示すように、逆元変換部３３ａ、３３ｂ、３３ｃ、３３ｄによる逆元変換と、アフィン変換部３４ａ、３４ｂ、３４ｃ、３４ｄによるアフィン変換とからなる。
【００５１】
なお、本実施形態では、３２ビットの入力データに対して、上記逆元変換部３３ａ、３３ｂ、３３ｃ、３３ｄとアフィン変換部３４ａ、３４ｂ、３４ｃ、３４ｄとからなる処理ブロックを４系統設け、それぞれの入力を８ビット単位とするとともに、後述する内部回路構成により、それぞれの逆元変換部３３ａ、３３ｂ、３３ｃ、３３ｄおよびアフィン変換部３４ａ、３４ｂ、３４ｃ、３４ｄの内部では、４ビット単位の処理を実現している。
【００５２】
＜逆元変換処理＞
数式を用いて、逆元変換処理について説明する。
まず、Ａ∈ＧＦ（（２４）２）に対して、Ｂ∈ＧＦ（（２４）２）をＢ＝Ａ−１とする。ここで、ＧＦ（（２４）２）の生成元βを用いて、ＡおよびＢを数７、数８とする。
【００５３】
【数７】
0005726394.tif 000008
【００５４】
【数８】
0005726394.tif 000009
【００５５】
このとき、数７および数８から、数９、数１０のように求められ、Ａの逆元Ｂが算出される。なお、数９、数１０において、Δは、数１１のように表わされる。また、ここでの演算はすべてＧＦ（２４）上の演算として実行される。
【００５６】
【数９】
0005726394.tif 000010
【００５７】
【数１０】
0005726394.tif 000011
【００５８】
【数１１】
0005726394.tif 000012
【００５９】
上記の処理を回路構成で示すと図７のようになる。ここで、加算（＋）はＧＦ（２４）上の加算を表す。つまり、排他的論理和（ＸＯＲ）処理となる。また、２乗算、乗算（×）はそれぞれＧＦ（２４）上の２乗算、乗算（×）であり、逆元はＧＦ（２４）上で逆元を求める計算である。また、×ω14はＧＦ（２４）の生成元であるωの１４乗を掛ける処理となる。
【００６０】
さらに、逆元演算は、図８に示すように、２乗算と乗算とで構成される。したがって、逆元変換処理部の内部処理を４ビットのデータ単位で実行するとともに、簡易な回路要素により処理回路を構成したことから、回路の小規模化を図ることができる。
【００６１】
＜アフィン変換処理＞
次に、数式を用いて、アフィン変換処理について説明する。
アフィン変換は入力をａ∈ＧＦ（２８）、出力をｂ∈ＧＦ（２８）としたとき、従来は、行列を用いて次の数１２のように表される変換であった。ここで、Ｐは８×８の行列であり、ｑはＧＦ（２８）の元である。
【００６２】
【数１２】
0005726394.tif 000013
【００６３】
今、上記のアフィン変換をＧＦ（（２４）２）上で考える。そこで、入力をＡ∈ＧＦ（（２４）２）、出力をＢ∈ＧＦ（（２４）２）とすると、行列Ｐとの演算は、従来、ＧＦ（２８）の元に対して行われていたため、入力の元ＧＦ（（２４）２）をＧＦ（２８）に変換する必要がある。そのため、出力Ｂは、数１３のようになる。また、Ｐ、ｑの値から、ＴＰＴ−１、Ｔｑは、それぞれ、数１４、数１５となる。
【００６４】
【数１３】
0005726394.tif 000014
【００６５】
【数１４】
0005726394.tif 000015
【００６６】
【数１５】
0005726394.tif 000016
【００６７】
したがって、アフィン変換処理部の処理が行列演算により実行されるため、アフィン変換処理部の内部処理を４ビットのデータ単位で実行するとともに、簡易な回路要素により処理回路を構成したことから、回路の小規模化を図ることができる。
【００６８】
＜線形攪拌処理＞
次に、数式を用いて、線形攪拌処理について説明する。
線形攪拌処理は、入力値を数１６、出力値を数１７としたときに、従来は、数１８のように求められた。つまり、ｂ０は、数１９のようになっていた。
【００６９】
【数１６】
0005726394.tif 000017
【００７０】
【数１７】
0005726394.tif 000018
【００７１】
【数１８】
0005726394.tif 000019
【００７２】
【数１９】
0005726394.tif 000020
【００７３】
そこで、この計算をＧＦ（（２４）２）上で考える。つまり、入力値と出力値をそれぞれ、数２０、数２１とすると、Ｂ０は、数２２のようになる。
【００７４】
【数２０】
0005726394.tif 000021
【００７５】
【数２１】
0005726394.tif 000022
【００７６】
【数２２】
0005726394.tif 000023
【００７７】
ここで、任意のｘ∈ＧＦ（（２４）２）に対して、（Ｔ０１）・ｘ＝ｘであり、Ｔ０３＝Ｔ（０２＋０１）＝Ｔ０２＋Ｔ０１であるから、Ｂ０は、数２３のように表わすことができる。なお、Ｂ１、Ｂ２、Ｂ３についても同様に求めることができる。
【００７８】
【数２３】
0005726394.tif 000024
【００７９】
また、ｘ、ｙ∈ＧＦ（（２４）２）を数２４とし、ｘ、ｙをそれぞれ数２５、数２６と表記した場合、ｙ０、ｙ１は、数２７、数２８となる。
【００８０】
【数２４】
0005726394.tif 000025
【００８１】
【数２５】
0005726394.tif 000026
【００８２】
【数２６】
0005726394.tif 000027
【００８３】
【数２７】
0005726394.tif 000028
【００８４】
【数２８】
0005726394.tif 000029
【００８５】
上記の処理を回路構成で示すと図５のようになる。ここで、加算はＧＦ（（２４）２）上の加算を表す。つまり、排他的論理和（ＸＯＲ）処理となる。また、（Ｔ０２）・ｘはＴ０２を乗算する処理である。さらに、（Ｔ０２）・ｘの処理は、図６に示すような回路構成となる。ここで、加算（＋）はＧＦ（２４）上の加算を表す。つまり、排他的論理和（ＸＯＲ）処理となる。また、×ωはＧＦ（２４）の生成元であるωを、×ω11はωの11乗を掛ける処理である。
【００８６】
したがって、線形攪拌処理部の内部処理を４ビットのデータ単位で実行するとともに、簡易な回路要素により処理回路を構成したことから、回路の小規模化を図ることができる。
【００８７】
［第１の応用例］
本応用例に係るストリーム暗号の暗号化装置は、図９に示すように、周期系列生成装置１０と、非線形関数器２０と、鍵系列生成部３０と、排他的論理和演算器（ＸＯＲ）４０とから構成されている。なお、非線形関数器２０については、その内容について、上記にて説明したため、詳細な説明は、省略する。
【００８８】
周期系列生成装置１０は、乱数系列のビット列を生成し、非線形関数部２０に供給する。鍵系列生成部３０は、非線形関数部２が出力した変換されたビット列から鍵系列のビット列を生成する。排他的論理和演算器（ＸＯＲ）４０は、鍵系列生成部３が生成した鍵系列のビット列と平文とを入力し、これらの排他的論理和演算を実行することにより暗号文を出力する。
【００８９】
したがって、本応用例のストリーム暗号の暗号化装置においては、上記の非線形関数器により装置を構成したことから、安全かつ高速な処理を実現するとともに、ハードウエア実装において、回路を小規模化することができる。
【００９０】
［第２の応用例］
本応用例に係るストリーム暗号の復号化装置は、図１０に示すように、周期系列生成装置１０と、非線形関数器２０と、鍵系列生成部３０と、排他的論理和演算器（ＸＯＲ）５０とから構成されている。なお、第１の応用例と同様の符号を付す要素については、同様の機能を有するものであるから、詳細な説明は省略する。本応用例に係るストリーム暗号の復号化装置においては、第１の応用例に係るストリーム暗号の暗号化装置に比べて、排他的論理和演算器（ＸＯＲ）５０が鍵系列生成部３０により生成された鍵系列のビット列と暗号文とを入力し、これらの排他的論理和演算を実行することにより平文を出力する構成となっている点で相違している。
【００９１】
したがって、本応用例のストリーム暗号の復号化装置においては、上記の非線形関数器により装置を構成したことから、安全かつ高速な処理を実現するとともに、ハードウエア実装において、回路を小規模化することができる。
【００９２】
［第３の応用例］
本応用例に係るＭＡＣ生成装置は、図１１に示すように、周期系列生成装置１０と、非線形関数器２０と、鍵系列生成部３０と、排他的論理和演算器（ＸＯＲ）４０とから構成されている。なお、第１の応用例と同様の符号を付す要素については、同様の機能を有するものであるから、詳細な説明は省略する。本応用例に係るＭＡＣ生成装置の基本構成は、第１の応用例に係るストリーム暗号の暗号化装置と同様であるが、排他的論理和演算器（ＸＯＲ）４０から出力される暗号文を周期系列生成装置１０にフィードバックする点が異なっている。
【００９３】
したがって、本応用例のＭＡＣ生成装置においては、上記の非線形関数部により装置を構成したことから、安全かつ高速な処理を実現するとともに、ハードウエア実装において、回路を小規模化することができる。
【００９４】
なお、本発明は、様々なストリーム暗号の評価に広く適用することができる。したがって、ストリーム暗号を使用するようなブロードバンド事業や携帯電話をはじめとするモバイル通信におけるシステム構築に広く利用することが可能である。
【００９５】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。例えば、本実施形態においては、従来８ビット単位で行われていた非線形関数器の処理を４ビットごとに行う例について説明したが、これに限らず、より小さなビット単位で処理するようにしてもよい。
【図面の簡単な説明】
【００９６】
【図１】本発明に係る非線形関数器の構成を示す図である。
【図２】あるラウンドｉにおけるレジスタ値、内部メモリ、内部メモリのＧＦ（（２４）２）上のデータの関係を示した図である。
【図３】非線形置換器（ｓｕｂ）の構成を示す図である。
【図４】非線形置換処理部の構成を示す図である。
【図５】線形攪拌処理部の回路構成を示す図である。
【図６】線形攪拌処理部の回路内における定数演算部の回路構成を示す図である。
【図７】逆元変換部の回路構成を示す図である。
【図８】逆元処理を行う回路の構成を示す図である。
【図９】第１の応用例に係るストリーム暗号の暗号化装置の構成を示す図である。
【図１０】第２の応用例に係るストリーム暗号の復号化装置の構成を示す図である。
【図１１】第３の応用例に係るＭＡＣ生成装置の構成を示す図である
【図１２】従来の非線形関数器の構成を示す図である。
【符号の説明】
【００９７】
１０・・・周期系列生成装置
２０・・・非線形関数部
３０・・・鍵系列生成部
４０、５０・・・ＸＯＲ
２１、２２、２３、２４・・・内部メモリ（Ｌ１、Ｌ２、Ｒ１、Ｒ２）
２５ａ、２５ｂ、２５ｃ、２５ｄ・・・加算器
２６ａ、２６ｂ、２６ｃ、２６ｄ・・・非線形置換器（ｓｕｂ）
２７ａ、２７ｂ、２７ｃ、２７ｄ・・・排他的論理和演算器（ＸＯＲ）
２８ａ、２８ｂ・・・変換行列
２９ａ、２９ｂ、２９ｃ、２９ｄ・・・逆変換行列
３１・・・非線形置換処理部
３２・・・線形攪拌処理部
【図１】
0005726394.tif 000030
【図３】
0005726394.tif 000031
【図４】
0005726394.tif 000032
【図５】
0005726394.tif 000033
【図６】
0005726394.tif 000034
【図７】
0005726394.tif 000035
【図８】
0005726394.tif 000036
【図９】
0005726394.tif 000037
【図１０】
0005726394.tif 000038
【図１１】
0005726394.tif 000039
【図１２】
0005726394.tif 000040