(57)【要約】【課題】安全かつ高速な処理を可能とする非線形関数器およびこれを用いたストリーム暗号の暗号化装置等を提供する。【解決手段】乱数系列のビットデータを入力し、変換されたビットデータを複数の内部メモリ１１〜１４から出力する非線形関数器であって、入力した乱数系列のビットデータと複数の内部メモリのうち一部の内部メモリデータとを加算する加算器１５ａ、１５ｂと、入力データを非線形置換する非線形置換器１６ａ〜１６ｄと、を備え、複数の内部メモリ１１〜１４が少なくとも非線形置換器１６ａ〜１６ｄを介して、環状に接続されている。【選択図】図２
2008139742.tif 000002
【特許請求の範囲】
【請求項１】
乱数系列のビットデータを入力し、変換されたビットデータを複数の内部メモリから出力する非線形関数器であって、
前記入力した乱数系列のビットデータと前記複数の内部メモリのうち一部の内部メモリデータとを演算する演算器と、
入力ビットデータを非線形置換する非線形置換器と、
を備え、
前記複数の内部メモリが前記非線形置換器を介して、環状に接続されていることを特徴とする非線形関数器。
【請求項２】
乱数系列のビットデータを入力し、変換されたビットデータを複数の内部メモリから出力する非線形関数器であって、
前記入力した乱数系列のビットデータと前記複数の内部メモリのうち一部の内部メモリデータとを演算する演算器と、
入力ビットデータを非線形置換する非線形置換器と、
を備え、
前記複数の内部メモリが前記非線形置換器および前記演算器を介して、環状に接続されていることを特徴とする非線形関数器。
【請求項３】
前記乱数系列のビットデータのビット長が前記複数の内部メモリから出力される前記変換されたビットデータのビット長よりも長いことを特徴とする請求項１または請求項２に記載の非線形関数器。
【請求項４】
前記非線形置換器が予め格納されたデータテーブルに基づいて、非線形置換処理を実行することを特徴とする請求項１から請求項３のいずれかに記載の非線形関数器。
【請求項５】
前記請求項１から請求項４のいずれかに記載の非線形関数器と、
前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、
前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、
該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、暗号文を出力する排他的論理和演算手段と、
を備えたことを特徴とするストリーム暗号の暗号化装置。
【請求項６】
前記請求項１から請求項４のいずれかに記載の非線形関数器と、
前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、
前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、
該鍵系列データ生成手段において生成された鍵系列のビットデータと暗号文との排他的論理和演算を行って、平文を出力する排他的論理和演算手段と、
を備えたことを特徴とするストリーム暗号の復号化装置。
【請求項７】
前記請求項１から請求項４のいずれかに記載の非線形関数器と、
前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段と、
前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段と、
該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、演算結果を前記乱数系列データ生成手段にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する排他的論理和演算手段と、
を備えたことを特徴とするＭＡＣ生成装置。
【請求項８】
乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第３の内部メモリに格納する第１のステップと、
乱数系列のビットデータと第２の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップと、
第３の内部メモリデータに非線形処理を施して第２の内部メモリに格納する第３のステップと、
第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップと、
更新された各内部メモリのデータを変換されたビット列として出力する第５のステップと、
該変換されたビット列から鍵系列を演算する第６のステップと、
該演算された鍵系列と平文との排他的論理和演算を行って、暗号文を出力する第７のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項９】
乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップと、
乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップと、
第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップと、
第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップと、
更新された各内部メモリのデータを変換されたビット列として出力する第５のステップと、
該変換されたビット列から鍵系列を演算する第６のステップと、
該演算された鍵系列と暗号文との排他的論理和演算を行って、平文を出力する第７のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項１０】
周期系列装置から入力した乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップと、
周期系列装置から入力した乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップと、
第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップと、
第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップと、
更新された各内部メモリのデータを変換されたビット列として出力する第５のステップと、
該変換されたビット列から鍵系列を演算する第６のステップと、
該演算された鍵系列と平文との排他的論理和演算を行って、演算結果を前記周期系列装置にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する第７のステップと、
を備えたことを特徴とするＭＡＣ生成方法。
【請求項１１】
ストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップと、
乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップと、
第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップと、
第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップと、
更新された各内部メモリのデータを変換されたビット列として出力する第５のステップと、
該変換されたビット列から鍵系列を演算する第６のステップと、
該演算された鍵系列と平文との排他的論理和演算を行って、暗号文を出力する第７のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１２】
ストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、
乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップと、
乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップと、
第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップと、
第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップと、
更新された各内部メモリのデータを変換されたビット列として出力する第５のステップと、
該変換されたビット列から鍵系列を演算する第６のステップと、
該演算された鍵系列と暗号文との排他的論理和演算を行って、平文を出力する第７のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１３】
ＭＡＣ生成方法をコンピュータに実行させるためのプログラムであって、
周期系列装置から入力した乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップと、
周期系列装置から入力した乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップと、
第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップと、
第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップと、
更新された各内部メモリのデータを変換されたビット列として出力する第５のステップと、
該変換されたビット列から鍵系列を演算する第６のステップと、
該演算された鍵系列と平文との排他的論理和演算を行って、演算結果を前記周期系列装置にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する第７のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非線形関数器、ストリーム暗号の暗号化装置、復号化装置、ＭＡＣ生成装置、ストリーム暗号の暗号化方法、復号化方法、ＭＡＣ生成方法およびプログラムに関する。
【背景技術】
【０００２】
近年、インターネットの目覚しい普及により、コンピュータを利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、その通信内容を秘匿化するために暗号が利用されている。ここで、暗号方式としては、１つの鍵で暗号化と復号化とを行う共通鍵暗号方式が一般的であるが、この共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式とに大別される。
【０００３】
ストリーム暗号方式は、ブロック暗号方式よりも高速な処理が期待できるため、例えば、映画等の大容量データを伝送するための方式として、近年、注目を浴びているが、ストリーム暗号方式の場合には、暗号処理と復号処理との同期をとらなければならないという問題があった。そのため、一定サイズ以上の誤りなく受信した暗号文を利用して、同期を自動的に回復する自己同期型のストリーム暗号装置が提案されている（例えば、特許文献１参照。）。
【特許文献１】特開２００１−１６１９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ここで、ストリーム暗号の構成要素として、周期系列を生成する生成器と非線形フィルタとが存在するが、その安全性は主に非線形フィルタの構成方法に依存している。ところが、従来は、ビット単位での非線形処理を行っているために、処理速度が十分ではなく、また、安全性に欠けるといった問題があった。
【０００５】
そこで、本発明は、上述の課題に鑑みてなされたものであり、安全かつ高速な処理を可能とする非線形関数器およびこれを用いたストリーム暗号の暗号化装置、復号化装置、ＭＡＣ生成装置、ストリーム暗号の暗号化方法、復号化方法、ＭＡＣ生成方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の事項を提案している。
（１）本発明は、乱数系列のビットデータを入力し、変換されたビットデータを複数の内部メモリから出力する非線形関数器であって、前記入力した乱数系列のビットデータと前記複数の内部メモリのうち一部の内部メモリデータとを演算する演算器（例えば、図２の加算器１５ａ、１５ｂに相当）と、入力ビットデータを非線形置換する非線形置換器（例えば、図２の非線形置換器１６ａ、１６ｂ、１６ｃ、１６ｄに相当）と、を備え、前記複数の内部メモリが前記非線形置換器を介して、環状に接続されていることを特徴とする非線形関数器を提案している。
【０００７】
この発明によれば、複数の内部メモリが非線形置換器を介して、環状に接続されている。したがって、これをストリーム暗号装置等に用いた場合には、安全性を相乗的に増加させることができる。
【０００８】
（２）本発明は、乱数系列のビットデータを入力し、変換されたビットデータを複数の内部メモリから出力する非線形関数器であって、前記入力した乱数系列のビットデータと前記複数の内部メモリのうち一部の内部メモリデータとを演算する演算器（例えば、図３の加算器１５ａ、１５ｂに相当）と、入力ビットデータを非線形置換する非線形置換器（例えば、図２の非線形置換器１６ａ、１６ｄに相当）と、を備え、前記複数の内部メモリが前記非線形置換器および前記演算器を介して、環状に接続されていることを特徴とする非線形関数器を提案している。
【０００９】
この発明によれば、複数の内部メモリが前記非線形置換器および前記演算器を介して、環状に接続されている。したがって、非線形置換器の数が少ない分、処理を高速化することができる。
【００１０】
（３）本発明は、（１）または（２）の非線形関数器について、前記乱数系列のビットデータのビット長が前記複数の内部メモリから出力される前記変換されたビットデータのビット長よりも長いことを特徴とする非線形関数器を提案している。
【００１１】
この発明によれば、非線形関数器の入力ビット長に対して出力ビット長が長い構成になっている。したがって、これによりストリーム暗号全体の性能を向上させることができる。
【００１２】
（４）本発明は、（１）から（３）の非線形関数器について、前記非線形置換器が予め格納されたデータテーブルに基づいて、非線形置換処理を実行することを特徴とする非線形関数器を提案している。
【００１３】
この発明によれば、非線形置換器が予め格納されたデータテーブルに基づいて、非線形置換処理を実行する。したがって、ソフトウェア実装における高速化を実現することができる。
【００１４】
（５）本発明は、（１）から（４）のいずれかの非線形関数器（例えば、図１の非線形関数部２に相当）と、前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段（例えば、図１の周期系列生成装置１に相当）と、前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段（例えば、図１の鍵系列生成部３に相当）と、該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、暗号文を出力する排他的論理和演算手段（例えば、図１のＸＯＲ４に相当）と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【００１５】
この発明によれば、（１）から（４）のいずれかの非線形関数器を用いて、ストリーム暗号の暗号化装置を構成することができる。したがって、安全かつ高速な処理を可能とするストリーム暗号の暗号化装置を構成することができる。
【００１６】
（６）本発明は、（１）から（４）のいずれかの非線形関数器（例えば、図４の非線形関数部２に相当）と、前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段（例えば、図４の周期系列生成装置１に相当）と、前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段（例えば、図４の鍵系列生成部３に相当）と、該鍵系列データ生成手段において生成された鍵系列のビットデータと暗号文との排他的論理和演算を行って、平文を出力する排他的論理和演算手段（例えば、図１のＸＯＲ５に相当）と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【００１７】
この発明によれば、（１）から（４）のいずれかの非線形関数器を用いて、ストリーム暗号の復号化装置を構成することができる。したがって、安全かつ高速な処理を可能とするストリーム暗号の復号化装置を構成することができる。
【００１８】
（７）本発明は、（１）から（４）のいずれかの非線形関数器（例えば、図６の非線形関数部２に相当）と、前記非線形関数器に入力する乱数系列のビットデータを生成する乱数系列データ生成手段（例えば、図６の周期系列生成装置１に相当）と、前記非線形関数器から出力される変換されたビットデータから鍵系列のビットデータを生成する鍵系列データ生成手段（例えば、図６の鍵系列生成部３に相当）と、該鍵系列データ生成手段において生成された鍵系列のビットデータと平文との排他的論理和演算を行って、演算結果を前記乱数系列データ生成手段にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する排他的論理和演算手段（例えば、図６のＸＯＲ４に相当）と、を備えたことを特徴とするＭＡＣ生成装置を提案している。
【００１９】
この発明によれば、（１）から（４）のいずれかの非線形関数器を用いて、ＭＡＣ生成装置を構成することができる。したがって、安全かつ高速な処理を可能とするＭＡＣ生成装置を構成することができる。
【００２０】
（８）本発明は、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップ（例えば、図３のステップＳ１０１、Ｓ１０２に相当）と、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップ（例えば、図３のステップＳ１０１、Ｓ１０２に相当）と、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップ（例えば、図３のステップＳ１０３に相当）と、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップ（例えば、図３のステップＳ１０３に相当）と、更新された各内部メモリのデータを変換されたビット列として出力する第５のステップ（例えば、図３のステップＳ１０４に相当）と、該変換されたビット列から鍵系列を演算する第６のステップ（例えば、図３のステップＳ１０５に相当）と、該演算された鍵系列と平文との排他的論理和演算を行って、暗号文を出力する第７のステップ（例えば、図３のステップＳ１０６に相当）と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【００２１】
この発明によれば、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する。次いで、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する。そして、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納するとともに、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納し、更新された各内部メモリのデータを変換されたビット列として出力する。さらに、変換されたビット列から鍵系列を演算し、演算された鍵系列と平文との排他的論理和演算を行って、暗号文を出力する。したがって、上記によれば、安全かつ高速に平文を暗号文に暗号化することができる。
【００２２】
（９）本発明は、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップ（例えば、図５のステップＳ２０１、Ｓ２０２に相当）と、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップ（例えば、図５のステップＳ２０１、Ｓ２０２に相当）と、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップ（例えば、図５のステップＳ２０３に相当）と、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップ（例えば、図５のステップＳ２０３に相当）と、更新された各内部メモリのデータを変換されたビット列として出力する第５のステップ（例えば、図５のステップＳ２０４に相当）と、該変換されたビット列から鍵系列を演算する第６のステップ（例えば、図５のステップＳ２０５に相当）と、該演算された鍵系列と暗号文との排他的論理和演算を行って、平文を出力する第７のステップ（例えば、図５のステップＳ２０６に相当）と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【００２３】
この発明によれば、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する。次いで、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する。そして、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納するとともに、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納し、更新された各内部メモリのデータを変換されたビット列として出力する。さらに、変換されたビット列から鍵系列を演算し、演算された鍵系列と暗号文との排他的論理和演算を行って、平文を出力する。したがって、上記によれば、安全かつ高速に暗号文を平文に復号化することができる。
【００２４】
（１０）本発明は、周期系列装置から入力した乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップ（例えば、図７のステップＳ３０１、Ｓ３０２に相当）と、周期系列装置から入力した乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップ（例えば、図７のステップＳ３０１、Ｓ３０２に相当）と、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップ（例えば、図７のステップＳ３０３に相当）と、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップ（例えば、図７のステップＳ３０３に相当）と、更新された各内部メモリのデータを変換されたビット列として出力する第５のステップ（例えば、図７のステップＳ３０４に相当）と、該変換されたビット列から鍵系列を演算する第６のステップ（例えば、図７のステップＳ３０５に相当）と、該演算された鍵系列と平文との排他的論理和演算を行って、演算結果を前記周期系列装置にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する第７のステップ（例えば、図７のステップＳ３０６、Ｓ３０７、Ｓ３０８に相当）と、を備えたことを特徴とするＭＡＣ生成方法を提案している。
【００２５】
この発明によれば、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する。次いで、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する。そして、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納するとともに、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納し、更新された各内部メモリのデータを変換されたビット列として出力する。さらに、変換されたビット列から鍵系列を演算し、演算された鍵系列と平文との排他的論理和演算を行って、演算結果を周期系列装置にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する。したがって、上記によれば、安全かつ高速にＭＡＣを生成することができる。
【００２６】
（１１）本発明は、ストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップ（例えば、図３のステップＳ１０１、Ｓ１０２に相当）と、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップ（例えば、図３のステップＳ１０１、Ｓ１０２に相当）と、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップ（例えば、図３のステップＳ１０３に相当）と、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップ（例えば、図３のステップＳ１０３に相当）と、更新された各内部メモリのデータを変換されたビット列として出力する第５のステップ（例えば、図３のステップＳ１０４に相当）と、該変換されたビット列から鍵系列を演算する第６のステップ（例えば、図３のステップＳ１０５に相当）と、該演算された鍵系列と平文との排他的論理和演算を行って、暗号文を出力する第７のステップ（例えば、図３のステップＳ１０６に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００２７】
この発明によれば、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する。次いで、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する。そして、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納するとともに、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納し、更新された各内部メモリのデータを変換されたビット列として出力する。さらに、変換されたビット列から鍵系列を演算し、演算された鍵系列と平文との排他的論理和演算を行って、暗号文を出力する。したがって、上記によれば、安全かつ高速に平文を暗号文に暗号化することができる。
【００２８】
（１２）本発明は、ストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップ（例えば、図５のステップＳ２０１、Ｓ２０２に相当）と、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップ（例えば、図５のステップＳ２０１、Ｓ２０２に相当）と、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップ（例えば、図５のステップＳ２０３に相当）と、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップ（例えば、図５のステップＳ２０３に相当）と、更新された各内部メモリのデータを変換されたビット列として出力する第５のステップ（例えば、図５のステップＳ２０４に相当）と、該変換されたビット列から鍵系列を演算する第６のステップ（例えば、図５のステップＳ２０５に相当）と、該演算された鍵系列と暗号文との排他的論理和演算を行って、平文を出力する第７のステップ（例えば、図５のステップＳ２０６に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００２９】
この発明によれば、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する。次いで、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する。そして、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納するとともに、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納し、更新された各内部メモリのデータを変換されたビット列として出力する。さらに、変換されたビット列から鍵系列を演算し、演算された鍵系列と暗号文との排他的論理和演算を行って、平文を出力する。したがって、上記によれば、安全かつ高速に暗号文を平文に復号化することができる。
【００３０】
（１３）本発明は、ＭＡＣ生成方法をコンピュータに実行させるためのプログラムであって、周期系列装置から入力した乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する第１のステップ（例えば、図７のステップＳ３０１、Ｓ３０２に相当）と、周期系列装置から入力した乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する第２のステップ（例えば、図７のステップＳ３０１、Ｓ３０２に相当）と、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納する第３のステップ（例えば、図７のステップＳ３０３に相当）と、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納する第４のステップ（例えば、図７のステップＳ３０３に相当）と、更新された各内部メモリのデータを変換されたビット列として出力する第５のステップ（例えば、図７のステップＳ３０４に相当）と、該変換されたビット列から鍵系列を演算する第６のステップ（例えば、図７のステップＳ３０５に相当）と、該演算された鍵系列と平文との排他的論理和演算を行って、演算結果を前記周期系列装置にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する第７のステップ（例えば、図７のステップＳ３０６、Ｓ３０７、Ｓ３０８に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３１】
この発明によれば、乱数系列のビットデータと第１の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第２の内部メモリに格納する。次いで、乱数系列のビットデータと第３の内部メモリデータとを算術加算し、算術加算されたビットデータに非線形処理を施して第４の内部メモリに格納する。そして、第２の内部メモリデータに非線形処理を施して第３の内部メモリに格納するとともに、第４の内部メモリデータに非線形処理を施して第１の内部メモリに格納し、更新された各内部メモリのデータを変換されたビット列として出力する。さらに、変換されたビット列から鍵系列を演算し、演算された鍵系列と平文との排他的論理和演算を行って、演算結果を周期系列装置にフィードバックするとともに、最終的な暗号文をメッセージ認証子として出力する。したがって、上記によれば、安全かつ高速にＭＡＣを生成することができる。
【発明の効果】
【００３２】
本発明によれば、複数の内部メモリが少なくとも非線形置換器を介して、環状に接続されているため、これをストリーム暗号装置等に用いた場合には、安全性を相乗的に増加させることができるという効果がある。また、非線形関数器の入力ビット長に対して出力ビット長が長い構成になっているため、これによりストリーム暗号全体の性能を向上させることができるという効果がある。さらに、非線形置換器が予め格納されたデータテーブルに基づいて、非線形置換処理を実行するため、ソフトウェア実装における高速化を実現することができるという効果がある。
【発明を実施するための最良の形態】
【００３３】
以下、図面を用いて、本発明の実施形態について詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３４】
［第１の実施形態］
＜ストリーム暗号の暗号化装置の構成＞
本実施形態に係るストリーム暗号の暗号化装置は、図１に示すように、周期系列生成装置１と、非線形関数部２と、鍵系列生成部３と、排他的論理和演算器（ＸＯＲ）４とから構成されている。
【００３５】
周期系列生成装置１は、乱数系列のビット列を生成し、非線形関数部２に供給する。非線形関数部２は、供給された乱数系列のビット列を入力し、変換されたビット列を出力する。なお、構成の詳細については、後述する。鍵系列生成部３は、非線形関数部２が出力した変換されたビット列から鍵系列のビット列を生成する。排他的論理和演算器（ＸＯＲ）４は、鍵系列生成部３が生成した鍵系列のビット列と平文とを入力し、これらの排他的論理和演算を実行することにより暗号文を出力する。
【００３６】
＜非線形関数部の構成＞
非線形関数部２は、図２に示すように、複数の内部メモリ１１、１２、１３、１４（図中、Ｌ１、Ｌ２、Ｒ１、Ｒ２）と、加算器１５ａ、１５ｂと、非線形置換器（ｓｕｂ）１６ａ、１６ｂ、１６ｃ、１６ｄとから構成されている。本実施形態に係る非線形関数部は、図２に示すように、Ｌ２→加算器１５ａ→非線形置換器（ｓｕｂ）１６ｂ→Ｒ２→非線形置換器（ｓｕｂ）１６ｄ→Ｒ２→加算器１５ｂ→非線形置換器（ｓｕｂ）１６ｃ→Ｌ１→非線形置換器（ｓｕｂ）１６ａ→Ｌ２といった複数の内部メモリ１１、１２、１３、１４が非線形置換器（ｓｕｂ）１６ａ、１６ｂ、１６ｃ、１６ｄを介して、環状に接続されている点に特徴がある。このような構成をとることにより、非線形置換の効果を相乗的に増加させて、暗号化装置等の安全性を向上させることができる。
【００３７】
複数の内部メモリ１１、１２、１３、１４は、上記のような構成になっているため、隣接する内部メモリのデータを非線形置換器（ｓｕｂ）１６ａ、１６ｂ、１６ｃ、１６ｄにより非線形置換したデータに更新され、更新されたデータを変換されたビット列として出力する。
【００３８】
加算器１５ａ、１５ｂは、上記周期系列生成装置１から出力される乱数系列のビット列と複数の内部メモリ１１、１２、１３、１４のうちの一部のメモリに格納されているビット列データとを加算する演算器である。なお、本実施形態では、加算器１５ａ、１５ｂを例示したが、これに代えて排他的論理和演算器（ＸＯＲ）を用いてもよい。
【００３９】
非線形置換器（ｓｕｂ）１６ａ、１６ｂ、１６ｃ、１６ｄは、入力するビット列データを非線形置換する。なお、非線形置換器（ｓｕｂ）１６ａ、１６ｂ、１６ｃ、１６ｄには、図示しない予め所望の関数により演算された結果を入力ビット列データに対応付けて記憶するデータテーブルが備えられている。これにより、ソフトウェア実装における処理の高速化を実現することができる。また、本実施形態の非線形関数部は、図２に示すように、２入力４出力の構成となっている。このように、入力ビット長に対して出力ビット長を大きくすることにより、ストリーム暗号全体の性能を向上させることができる。さらに、加算器１５ａ、１５ｂおよび非線形置換器（ｓｕｂ）１６ａ、１６ｂ、１６ｃ、１６ｄの入力長、出力長はともに、ＣＰＵのワード長（例えば、３２ｂｉｔｓ）となっている。そのため、効率的にソフトウェア実装が可能となる。
【００４０】
なお、図３に示すように、Ｌ２→加算器１５ａ→Ｒ２→非線形置換器（ｓｕｂ）１６ｄ→Ｒ２→加算器１５ｂ→Ｌ１→非線形置換器（ｓｕｂ）１６ａ→Ｌ２といった複数の内部メモリ１１、１２、１３、１４が非線形置換器（ｓｕｂ）１６ａ、１６ｄと加算器１５ａ、１５ｂを介して、環状に接続されるような構成であってもよい。この場合には、非線形置換器（ｓｕｂ）の個数が少なくなるために、処理速度を向上させることができる利点がある。
【００４１】
＜ストリーム暗号の暗号化装置の処理＞
次に、図４を用いて、ストリーム暗号の暗号化装置の処理について説明する。
まず、周期系列生成装置１から入力されたビット列と、内部メモリＬ２、Ｒ２とを加算器１５ａ、１５ｂにおいて、個別に算術加算処理を行い、その後、非線形置換器（ｓｕｂ）１６ｂ、１６ｃにおいて、非線形置換処理を実施する（ステップＳ１０１）。そして、内部メモリＬ２から計算された値は内部メモリＲ１に、内部メモリＲ２から計算された値は、内部メモリＬ１に格納する（ステップＳ１０２）。
【００４２】
次に、元々内部メモリＬ１、Ｒ１に格納されていた値については、非線形置換器（ｓｕｂ）１６ａ、１６ｄにおいて、非線形置換を施した後、内部メモリＬ２、Ｒ２へ格納する（ステップＳ１０３）。そして、更新された内部メモリＲ１、Ｒ２、Ｌ１、Ｌ２の情報を変換されたビット列として出力する（ステップＳ１０４）。
【００４３】
さらに、鍵系列生成部３において、出力したビット列から鍵系列のビット列を計算して出力し（ステップＳ１０５）、この鍵系列のビット列と平文とを排他的論理和演算器（ＸＯＲ）４に入力し、排他的論理和演算を行って暗号文として出力する（ステップＳ１０６）。
【００４４】
したがって、本実施形態のストリーム暗号の暗号化装置においては、上記の非線形関数部により装置を構成したことから、安全かつ高速な処理を実現することができる。
【００４５】
［第２の実施形態］
＜ストリーム暗号の復号化装置の構成＞
本実施形態に係るストリーム暗号の復号化装置は、図５に示すように、周期系列生成装置１と、非線形関数部２と、鍵系列生成部３と、排他的論理和演算器（ＸＯＲ）５とから構成されている。なお、第１の実施形態と同様の符号を付す要素については、同様の機能を有するものであるから、詳細な説明は省略する。本実施形態に係るストリーム暗号の復号化装置においては、第１の実施形態に係るストリーム暗号の暗号化装置に比べて、排他的論理和演算器（ＸＯＲ）５が鍵系列生成部３により生成された鍵系列のビット列と暗号文とを入力し、これらの排他的論理和演算を実行することにより平文を出力する構成となっている点で相違している。
【００４６】
＜ストリーム暗号の復号化装置の処理＞
次に、図６を用いて、ストリーム暗号の復号化装置の処理について説明する。
まず、周期系列生成装置１から入力されたビット列と、内部メモリＬ２、Ｒ２とを加算器１５ａ、１５ｂにおいて、個別に算術加算処理を行い、その後、非線形置換器（ｓｕｂ）１６ｂ、１６ｃにおいて、非線形置換処理を実施する（ステップＳ２０１）。そして、内部メモリＬ２から計算された値は内部メモリＲ１に、内部メモリＲ２から計算された値は、内部メモリＬ１に格納する（ステップＳ２０２）。
【００４７】
次に、元々内部メモリＬ１、Ｒ１に格納されていた値については、非線形置換器（ｓｕｂ）１６ａ、１６ｄにおいて、非線形置換を施した後、内部メモリＬ２、Ｒ２へ格納する（ステップＳ２０３）。そして、更新された内部メモリＲ１、Ｒ２、Ｌ１、Ｌ２の情報を変換されたビット列として出力する（ステップＳ２０４）。
【００４８】
さらに、鍵系列生成部３において、出力したビット列から鍵系列のビット列を計算して出力し（ステップＳ２０５）、この鍵系列のビット列と暗号文とを排他的論理和演算器（ＸＯＲ）５に入力し、排他的論理和演算を行って平文として出力する（ステップＳ２０６）。
【００４９】
したがって、本実施形態のストリーム暗号の復号化装置においては、上記の非線形関数部により装置を構成したことから、安全かつ高速な処理を実現することができる。
【００５０】
［第３の実施形態］
＜ＭＡＣ生成装置の構成＞
本実施形態に係るＭＡＣ生成装置は、図７に示すように、周期系列生成装置１と、非線形関数部２と、鍵系列生成部３と、排他的論理和演算器（ＸＯＲ）４とから構成されている。なお、第１の実施形態と同様の符号を付す要素については、同様の機能を有するものであるから、詳細な説明は省略する。本実施形態に係るＭＡＣ生成装置の基本構成は、第１の実施形態に係るストリーム暗号の暗号化装置と同様であるが、排他的論理和演算器（ＸＯＲ）４から出力される暗号文を周期系列生成装置１にフィードバックする点が異なっている。
【００５１】
＜ＭＡＣ生成装置の処理＞
次に、図８を用いて、ＭＡＣ生成装置の処理について説明する。
まず、周期系列生成装置１から入力されたビット列と、内部メモリＬ２、Ｒ２とを加算器１５ａ、１５ｂにおいて、個別に算術加算処理を行い、その後、非線形置換器（ｓｕｂ）１６ｂ、１６ｃにおいて、非線形置換処理を実施する（ステップＳ３０１）。そして、内部メモリＬ２から計算された値は内部メモリＲ１に、内部メモリＲ２から計算された値は、内部メモリＬ１に格納する（ステップＳ３０２）。
【００５２】
次に、元々内部メモリＬ１、Ｒ１に格納されていた値については、非線形置換器（ｓｕｂ）１６ａ、１６ｄにおいて、非線形置換を施した後、内部メモリＬ２、Ｒ２へ格納する（ステップＳ３０３）。そして、更新された内部メモリＲ１、Ｒ２、Ｌ１、Ｌ２の情報を変換されたビット列として出力する（ステップＳ３０４）。
【００５３】
さらに、鍵系列生成部３において出力したビット列から鍵系列のビット列を計算して出力し（ステップＳ３０５）、この鍵系列のビット列と平文とを排他的論理和演算器（ＸＯＲ）４に入力し、排他的論理和演算を行って暗号文として出力し、これを周期系列生成装置１にフィードバックする（ステップＳ３０６）。
【００５４】
そして、すべての平文を入力したか否かを判断し（ステップＳ３０７）、すべての平文を入力したと判断したときには（ステップＳ３０７の「Ｙｅｓ」）、メッセージ認証子を出力し（ステップＳ３０８）、すべての平文を入力していないと判断したときには（ステップＳ３０７の「Ｎｏ」）、ステップＳ３０１に戻って、処理を続行する。
【００５５】
したがって、本実施形態のＭＡＣ生成装置においては、上記の非線形関数部により装置を構成したことから、安全かつ高速な処理を実現することができる。
【００５６】
なお、上述の一連の処理をプログラムとしてコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ＭＡＣ生成装置に読み込ませ、実行することによって本発明のストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ＭＡＣ生成装置を実現することができる。
【００５７】
また、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００５８】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００５９】
なお、本発明は、様々なストリーム暗号の評価に広く適用することができる。したがって、ストリーム暗号を使用するようなブロードバンド事業や携帯電話をはじめとするモバイル通信におけるシステム構築に広く利用することが可能である。
【００６０】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００６１】
【図１】第１の実施形態に係るストリーム暗号の暗号化装置の構成を示す図である。
【図２】第１の実施形態に係る非線形関数部の構成を示す図である。
【図３】第１の実施形態に係る非線形関数部の構成を示す変形例である。
【図４】第１の実施形態に係るストリーム暗号の暗号化装置の処理フローである。
【図５】第２の実施形態に係るストリーム暗号の復号化装置の構成を示す図である。
【図６】第２の実施形態に係るストリーム暗号の復号化装置の処理フローである。
【図７】第３の実施形態に係るＭＡＣ生成装置の構成を示す図である。
【図８】第３の実施形態に係るＭＡＣ生成装置の処理フローである。
【符号の説明】
【００６２】
１・・・周期系列生成装置
２・・・非線形関数部
３・・・鍵系列生成部
４、５・・・ＸＯＲ
１１、１２、１３、１４・・・内部メモリ（Ｌ１、Ｌ２、Ｒ１、Ｒ２）
１５ａ、１５ｂ・・・加算器
１６ａ、１６ｂ、１６ｃ、１６ｄ・・・非線形置換器（ｓｕｂ）
【図１】
2008139742.tif 000003
【図２】
2008139742.tif 000004
【図３】
2008139742.tif 000005
【図４】
2008139742.tif 000006
【図５】
2008139742.tif 000007
【図６】
2008139742.tif 000008
【図７】
2008139742.tif 000009
【図８】
2008139742.tif 000010