(57)【特許請求の範囲】
【請求項１】
初期鍵と初期値とを入力して初期化処理を行う初期化処理手段と、
該初期化処理手段から入力したビット列から鍵系列を生成する非線形手段と、
該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する排他的論理和演算器と、
を備え、
前記初期化処理手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とするストリーム暗号の暗号化装置。
【請求項２】
前記非線形手段内の非線形置換関数器が、複数の非線形関数器と線形変換手段とから構成され、演算実行時に、前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２の演算テーブル生成手段を備え、該生成した前記第２の演算テーブルを用いて、鍵系列を生成することを特徴とする請求項１に記載のストリーム暗号の暗号化装置。
【請求項３】
前記請求項１または請求項２に記載のストリーム暗号の暗号化装置から出力される暗号文を復号するストリーム暗号の復号化装置であって、
初期鍵と初期値とを入力して初期化処理を行う初期化処理手段と、
該初期化処理手段から入力したビット列から鍵系列を生成する非線形手段と、
該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する排他的論理和演算器と、
を備え、
前記初期化処理手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とするストリーム暗号の復号化装置。
【請求項４】
前記非線形手段内の非線形置換関数器が、複数の非線形関数器と線形変換手段とから構成され、演算実行時に、前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２の演算テーブル生成手段を備え、該生成した前記第２の演算テーブルを用いて、鍵系列を生成することを特徴とする請求項３に記載のストリーム暗号の復号化装置。
【請求項５】
第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
初期化処理手段が、初期化処理時に、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップと、
非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップと、
排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第４のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項６】
第１の演算テーブル生成手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
第２の演算テーブル生成手段が、演算実行時に、複数の非線形関数器と線形変換手段とからなる非線形手段内の非線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップと、
初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップと、
非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップと、
排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第５のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項７】
前記請求項５または請求項６に記載のストリーム暗号の暗号化方法により生成された暗号文を復号するストリーム暗号の復号化方法であって、
第１の演算テーブル生成手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップと、
非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップと、
排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第４のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項８】
前記請求項５または請求項６に記載のストリーム暗号の暗号化方法により生成された暗号文を復号するストリーム暗号の復号化方法であって、
第１の演算テーブル生成手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
第２の演算テーブル生成手段が、演算実行時に、複数の非線形関数器と線形変換手段とからなる非線形手段内の非線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップと、
初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップと、
非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップと、
排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第５のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項９】
コンピュータに、
第１の演算テーブル生成手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップと、
非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップと、
排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第４のステップと、
を実行させるためのプログラム。
【請求項１０】
コンピュータに、
第１の演算テーブル生成手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
第２の演算テーブル生成手段が、演算実行時に、複数の非線形関数器と線形変換手段とからなる非線形手段内の非線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップと、
初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップと、
非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップと、
排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第５のステップと、
を実行させるためのプログラム。
【請求項１１】
前記請求項９に記載のプログラムにより生成された暗号文を復号するストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、
第１の演算テーブル生成手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップと、
非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップと、
排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第４のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１２】
前記請求項１０に記載のプログラムにより生成された暗号文を復号するストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、
第１の演算テーブル生成手段が、初期化処理時に、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップと、
第２の演算テーブル生成手段が、演算実行時に、複数の非線形関数器と線形変換手段とからなる非線形手段内の非線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップと、
初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップと、
非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップと、
排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第５のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実装規模を抑えつつ、演算処理の高速化を図るストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスに置いては、通信の秘匿を実現するため、暗号が利用される。暗号方式として最も一般的なものは、１つの鍵で暗号化・復号化を行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の２つに分けられる。前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。
【０００３】
ストリーム暗号が注目を浴びる要因としては、公開鍵暗号方式に基づく秘密共有方式は計算量が多く、鍵同期を取るまでに時間がかかるという問題があり、また、上記公開鍵暗号方式に基づく秘密共有方式を用いると、ハードウェア規模が大きくなるといった問題があるためである。
【０００４】
一方、ストリーム暗号は、初期鍵を初期化処理により攪拌して、初期の内部状態を生成し、生成した状態を逐次更新しながら、暗号化の各系列を生成するものであり、公開鍵暗号方式に基づく秘密共有方式よりも、実装規模が小さく、演算速度が速いという特色があるが、非線形処理を用いて、更なる高速化を行う技術が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２０９１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の技術では、未だに、初期化処理および非線形処理の処理負荷が大きいという問題がある。この問題を回避するために、諸々の演算を事前計算しておきテーブルとして持つという手法があるが、このテーブルによって実装規模（プログラムサイズ等）が大きくなってしまうという問題点があった。
【０００７】
そこで、本発明は、上述の課題に鑑みてなされたものであり、演算に使用するテーブルを動的に生成するストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００９】
（１）本発明は、初期鍵と初期値とを入力して初期化処理を行う初期化処理手段（例えば、図１の初期化処理部１００に相当）と、該初期化処理手段から入力したビット列から鍵系列を生成する非線形手段（例えば、図１の非線形処理部２００に相当）と、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する排他的論理和演算器（例えば、図１の排他的論理和演算器３００に相当）と、を備え、前記初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段（例えば、図１の第１の演算テーブル生成部４００に相当）を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とするストリーム暗号の暗号化装置を提案している。
【００１０】
本発明によれば、初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、第１の演算テーブル生成手段が、フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する。したがって、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【００１１】
（２）本発明は、（１）のストリーム暗号の暗号化装置について、前記非線形手段内の線形置換関数器が、複数の非線形関数器と線形変換手段とから構成され、前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２の演算テーブル生成手段（例えば、図４の第２の演算テーブル生成部５００に相当）を備え、該生成した前記第２の演算テーブルを用いて、鍵系列を生成することを特徴とするストリーム暗号の暗号化装置を提案している。
【００１２】
本発明によれば、非線形手段内の線形置換関数器が、複数の非線形関数器と線形変換手段とから構成され、第２の演算テーブル生成手段が、非線形関数器ごとに、非線形関数器の入力ビット列と線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する。したがって、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【００１３】
（３）本発明は、（１）または（２）に記載のストリーム暗号の暗号化装置から出力される暗号文を復号するストリーム暗号の復号化装置であって、初期鍵と初期値とを入力して初期化処理を行う初期化処理手段と、該初期化処理手段から入力したビット列から鍵系列を生成する非線形手段と、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する排他的論理和演算器（例えば、図８の排他的論理和演算器６００に相当）と、を備え、前記初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とするストリーム暗号の復号化装置を提案している。
【００１４】
本発明によれば、初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、第１の演算テーブル生成手段が、フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する。したがって、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【００１５】
（４）本発明は、（３）のストリーム暗号の復号化装置について、前記非線形手段内の線形置換関数器が、複数の非線形関数器と線形変換手段とから構成され、非線形関数器ごとに、非線形関数器の入力ビット列と線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２の演算テーブル生成手段を備え、該生成した前記第２の演算テーブルを用いて、鍵系列を生成することを特徴とするストリーム暗号の復号化装置を提案している。
【００１６】
本発明によれば、非線形手段内の線形置換関数器が、複数の非線形関数器と線形変換手段とから構成され、第２の演算テーブル生成手段が、非線形関数器ごとに、非線形関数器の入力ビット列と線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する。したがって、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【００１７】
（５）本発明は、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図３のステップＳ１０１に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップ（例えば、図３のステップＳ１０２に相当）と、非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップ（例えば、図３のステップＳ１０３に相当）と、排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第４のステップ（例えば、図３のステップＳ１０４に相当）と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【００１８】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行う。そして、非線形手段が、初期化処理後のビット列から鍵系列を生成し、排他的論理和演算器が、生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する。したがって、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【００１９】
（６）本発明は、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図７のステップＳ２０１に相当）と、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップ（例えば、図７のステップＳ２０２に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップ（例えば、図７のステップＳ２０３に相当）と、非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップ（例えば、図７のステップＳ２０４に相当）と、排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第５のステップ（例えば、図７のステップＳ２０５に相当）と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【００２０】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の非線形関数器ごとに、非線形関数器の入力ビット列と線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する。そいて、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い、非線形手段が、第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成して、排他的論理和演算器が、生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する。したがって、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【００２１】
（７）本発明は、（５）または（６）に記載のストリーム暗号の暗号化方法により生成された暗号文を復号するストリーム暗号の復号化方法であって、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図９のステップＳ３０１に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップ（例えば、図９のステップＳ３０２に相当）と、非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップ（例えば、図９のステップＳ３０３に相当）と、排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第４のステップ（例えば、図９のステップＳ３０３に相当）と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【００２２】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行う。そして、非線形手段が、初期化処理後のビット列から鍵系列を生成し、排他的論理和演算器が、生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する。したがって、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【００２３】
（８）本発明は、（５）または（６）に記載のストリーム暗号の暗号化方法により生成された暗号文を復号するストリーム暗号の復号化方法であって、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図１１のステップＳ４０１に相当）と、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップ（例えば、図１１のステップＳ４０２に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップ（例えば、図１１のステップＳ４０３に相当）と、非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップ（例えば、図１１のステップＳ４０４に相当）と、排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第５のステップ（例えば、図１１のステップＳ４０５に相当）と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【００２４】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の非線形関数器ごとに、非線形関数器の入力ビット列と線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する。そいて、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い、非線形手段が、第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成して、排他的論理和演算器が、生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する。したがって、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【００２５】
（９）本発明は、コンピュータに、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図３のステップＳ１０１に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップ（例えば、図３のステップＳ１０２に相当）と、非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップ（例えば、図３のステップＳ１０３に相当）と、排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第４のステップ（例えば、図３のステップＳ１０４に相当）と、を実行させるためのプログラムを提案している。
【００２６】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行う。そして、非線形手段が、初期化処理後のビット列から鍵系列を生成し、排他的論理和演算器が、生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する。したがって、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【００２７】
（１０）本発明は、コンピュータに、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図７のステップＳ２０１に相当）と、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップ（例えば、図７のステップＳ２０２に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップ（例えば、図７のステップＳ２０３に相当）と、非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップ（例えば、図７のステップＳ２０４に相当）と、排他的論理和演算器が、該生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する第５のステップ（例えば、図７のステップＳ２０５に相当）と、を実行させるためのプログラムを提案している。
【００２８】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の非線形関数器ごとに、非線形関数器の入力ビット列と線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する。そいて、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い、非線形手段が、第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成して、排他的論理和演算器が、生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する。したがって、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【００２９】
（１１）本発明は、（９）または（１０）に記載のストリーム暗号の暗号化方法により生成された暗号文を復号するストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図９のステップＳ３０１に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第２のステップ（例えば、図９のステップＳ３０２に相当）と、非線形手段が、初期化処理後のビット列から鍵系列を生成する第３のステップ（例えば、図９のステップＳ３０３に相当）と、排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第４のステップ（例えば、図９のステップＳ３０３に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３０】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行う。そして、非線形手段が、初期化処理後のビット列から鍵系列を生成し、排他的論理和演算器が、生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する。したがって、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【００３１】
（１２）本発明は、（９）または（１０）に記載のストリーム暗号の暗号化方法により生成された暗号文を復号するストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段の前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１のステップ（例えば、図１１のステップＳ４０１に相当）と、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の前記非線形関数器ごとに、前記非線形関数器の入力ビット列と前記線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する第２のステップ（例えば、図１１のステップＳ４０２に相当）と、初期化処理手段が、初期鍵と初期値とを入力し、前記生成した前記第１の演算テーブルを用いて、初期化処理を行う第３のステップ（例えば、図１１のステップＳ４０３に相当）と、非線形手段が、前記第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成する第４のステップ（例えば、図１１のステップＳ４０４に相当）と、排他的論理和演算器が、該生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する第５のステップ（例えば、図１１のステップＳ４０５に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３２】
本発明によれば、第１の演算テーブル生成手段が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理手段のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成し、第２の演算テーブル生成手段が、複数の非線形関数器と線形変換手段とからなる非線形手段内の線形置換関数器の非線形関数器ごとに、非線形関数器の入力ビット列と線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する。そいて、初期化処理手段が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い、非線形手段が、第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成して、排他的論理和演算器が、生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する。したがって、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【発明の効果】
【００３３】
本発明によれば、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができるという効果がある。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができるという効果がある。さらに、第２の演算テーブルを動的に生成することにより、非線形処理の演算処理速度についても高速化することができるという効果がある。
【図面の簡単な説明】
【００３４】
【図１】本発明の第１の実施形態に係るストリーム暗号の暗号化装置の構成を示す図である。
【図２】本発明の第１の実施形態に係るストリーム暗号の暗号化装置の初期化処理部の詳細な構成を示す図である。
【図３】本発明の第１の実施形態に係るストリーム暗号の暗号化装置の処理を示す図である。
【図４】本発明の第２の実施形態に係るストリーム暗号の暗号化装置の構成を示す図である。
【図５】本発明の第２の実施形態に係るストリーム暗号の暗号化装置の非線形処理部の詳細な構成を示す図である。
【図６】本発明の第２の実施形態に係るストリーム暗号の暗号化装置の非線形置換部（Ｓｕｂ）の詳細な構成を示す図である。
【図７】本発明の第２の実施形態に係るストリーム暗号の暗号化装置の処理を示す図である。
【図８】本発明の第３の実施形態に係るストリーム暗号の復号化装置の構成を示す図である。
【図９】本発明の第３の実施形態に係るストリーム暗号の復号化装置の処理を示す図である。
【図１０】本発明の第４の実施形態に係るストリーム暗号の復号化装置の構成を示す図である。
【図１１】本発明の第４の実施形態に係るストリーム暗号の復号化装置の処理を示す図である。
【発明を実施するための形態】
【００３５】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３６】
以下、図１から図１１を用いて、本発明の実施形態について説明する。
【００３７】
＜第１の実施形態＞
図１から図３を用いて、本実施形態に係るストリーム暗号の暗号化装置について説明する。
【００３８】
＜ストリーム暗号の暗号化装置の構成＞
図１に示すように、本実施形態に係るストリーム暗号の暗号化装置は、初期化処理部１００と、非線形処理部２００と、排他的論理和演算器３００と、第１の演算テーブル生成部４００とから構成されている。
【００３９】
初期化処理部１００は、初期鍵と初期値とを入力し、攪拌処理を行うことにより、内部状態を生成する。非線形処理部２００は、初期化処理部１００から入力したビット列に対して、非線形処理を行い、鍵系列を生成する。排他的論理和演算器３００は、非線形処理部２００において生成された鍵系列と平文との排他的論理和演算を実行して、暗号文を生成する。
【００４０】
第１の演算テーブル生成部４００は、初期化処理部１００の一部を構成するフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する。
【００４１】
＜初期化処理部の詳細な構成＞
図２に示すように、初期化処理部１００は、フィードバックシフトレジスタ１１０、１２０と、フィードバック演算器１３０、１４０、１５０と、クロックコントローラ１６０とから構成されている。
【００４２】
フィードバックシフトレジスタ１１０、１２０は、入力ビットが直前の状態の線形写像になっているシフトレジスタであり、その値を構成するビット列の一部の排他的論理和を入力ビットとするシフトレジスタである。
【００４３】
フィードバック演算器１３０、１４０、１５０は、フィードバックシフトレジスタ１１０、１２０から入力されるビット列に対し、係数を乗算してフィードバックするビット列を生成する。クロックコントローラ１６０は、クロックに同期して、フィードバック演算器１３０、１４０、１５０にビット列を出力する。
【００４４】
＜第１の演算テーブル生成部の処理＞
いま、フィードバックシフトレジスタ１１０（ＬＦＳＲ−Ａ）は、１レジスタあたり３２ｂｉｔの５つのレジスタから構成され、フィードバック関数ｆＡ（ｘ）は、数１とする。ここで、α０は３２ｂｉｔから３２ｂｉｔへの変換を与える。
【００４５】
【数１】
0005822757.tif 000002
【００４６】
時刻ｔ≧０のときのフィードバックシフトレジスタ１１０（ＬＦＳＲ−Ａ）の値を、数２とすると、Ａｔ+５はフィードバック関数より数３で与えられる。
【００４７】
【数２】
0005822757.tif 000003
【００４８】
【数３】
0005822757.tif 000004
【００４９】
α０は、ＧＦ（２３２）の元で、数４の根とする。但し、βは、原始多項式数５の根である。
【００５０】
【数４】
0005822757.tif 000005
【００５１】
【数５】
0005822757.tif 000006
【００５２】
したがって、α０変換は、ＧＦ（２３２）内の乗算で表される。
つまり、数６の関係となる。
【００５３】
【数６】
0005822757.tif 000007
【００５４】
ここで、Ａを数７としたとき、α０を用いて、Ａは、数８で表される。
【００５５】
【数７】
0005822757.tif 000008
【００５６】
【数８】
0005822757.tif 000009
【００５７】
したがって、α０・Ａは、数９のように表され、ベクトル表記を用いると、数１０のように表される。
【００５８】
【数９】
0005822757.tif 000010
【００５９】
【数１０】
0005822757.tif 000011
【００６０】
ここで、ａ３→（ａ３β２４、ａ３β３、ａ３β１２、ａ３β７１）変換をテーブル化すると数１１のようになる。
【００６１】
【数１１】
0005822757.tif 000012
【００６２】
このテーブルを用いると、α０変換は次の数１２のように計算できる。
【００６３】
【数１２】
0005822757.tif 000013
【００６４】
このテーブルｋ２＿ａｌｐｈａ０＿ｍｕｌを実行時に動的に生成する。具体的には、その前のステップ、ａ３→（ａ３β２４、ａ３β３、ａ３β１２、ａ３β７１）をすべてのａ３に対して、実行時に計算することで、テーブルを生成する。なお、フィードバックシフトレジスタ１２０（ＬＦＳＲ−Ｂ）についても同様の処理となる。
【００６５】
＜ストリーム暗号の暗号化装置の処理＞
図３を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
【００６６】
まず、第１の演算テーブル生成部４００が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理部１００のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する（ステップＳ１０１）。
【００６７】
そして、初期化処理部１００が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い（ステップＳ１０２）、非線形手段が、初期化処理後のビット列から鍵系列を生成して（ステップＳ１０３）、排他的論理和演算器が、生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する（ステップＳ１０４）。
【００６８】
以上、説明したように、本実施形態によれば、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【００６９】
＜第２の実施形態＞
図４から図７を用いて、本発明に係る第２の実施形態について説明する。
【００７０】
＜ストリーム暗号の暗号化装置の構成＞
図４に示すように、本実施形態に係るストリーム暗号の暗号化装置は、初期化処理部１００と、非線形処理部２００と、排他的論理和演算器３００と、第１の演算テーブル生成部４００と、第２の演算テーブル生成部５００とから構成されている。なお、第１の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は省略する。
【００７１】
第２の演算テーブル生成部５００は、演算実行時に、非線形処理部２００内の非線形置換関数器を構成する非線形関数器ごとに、非線形関数器の入力ビット列と非線形処理部２００の一部をなす線形変換手段の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する。
【００７２】
＜非線形処理部の詳細な構成＞
図５に示すように、非線形処理部２００は、加算器２１１、２１２、２１３、２１４と、内部メモリ２２１、２２２、２２３、２２４と、非線形置換関数器（Ｓｕｂ）２３０、２４０、２５０、２６０と、排他的論理和演算器２７１、２７２、２７３、２７４とから構成されている。
【００７３】
また、非線形置換関数器（Ｓｕｂ）２３０、２４０、２５０、２６０は、図６に示すように、非線形関数器２３１、２３２、２３３、２３４と、線形変換部２３５とから構成されている。第２の演算テーブル生成部５００は、非線形関数器２３１、２３２、２３３、２３４の入力ビット列と線形変換部２３５の出力ビット列とを対応づけた図６のテーブルＡ、テーブルＢ、テーブルＣ、テーブルＤに対応する第２の演算テーブルを動的に生成する。
【００７４】
＜第２の演算テーブル生成部の処理＞
第２の演算テーブル生成部は、上記のように、非線形置換関数器（Ｓｕｂ）２３０、２４０、２５０、２６０の処理をテーブル化するものである。
【００７５】
非線形置換（Ｓｕｂ）は、数１３に示すように、Ｓｕｂｓｔｉｔｕｔｉｏｎ処理（非線形関数器２３１、２３２、２３３、２３４による処理）とＰｅｒｍｕｔａｔｉｏｎ処理（線形変換部２３５による処理）とからなり、３２ｂｉｔから３２ｂｉｔへの変換を与える。
【００７６】
【数１３】
0005822757.tif 000014
【００７７】
まず始めに、入力された値に対しＳｕｂｓｔｉｔｕｔｉｏｎ処理を行う。Ｓｕｂｓｔｉｔｕｔｉｏｎｓ処理は、入力された３２ｂｉｔデータを８ｂｉｔ単位でＢｙｔｅＳｕｂ変換を行う。ＢｙｔｅＳｕｂ変換は、８ｂｉｔから８ｂｉｔへの変換を与えるものである（詳細は後述）。つまり、Ｓｕｂｓｔｉｔｕｔｉｏｎ処理は、入力値を数１４とし、出力値を数１５とすると、ＢｙｔｅＳｕｂ変換を用いて、数１６のようになる。
【００７８】
【数１４】
0005822757.tif 000015
【００７９】
【数１５】
0005822757.tif 000016
【００８０】
【数１６】
0005822757.tif 000017
【００８１】
ＢｙｔｅＳｕｂ変換は８ｂｉｔから８ｂｉｔへの変換で、２つの変換関数ｆ、ｇを用いて、数１７のように表される。
【００８２】
【数１７】
0005822757.tif 000018
【００８３】
変換関数ｆは既約多項式ｍ（ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ＋１を法としたときの逆元を与える関数である。また、変換関数ｇは行列を用い、数１８のように表される。
【００８４】
【数１８】
0005822757.tif 000019
【００８５】
ここで、ｔｂ、ｔｃは、数１９の転置行列で、数２０と表される。
【００８６】
【数１９】
0005822757.tif 000020
【００８７】
【数２０】
0005822757.tif 000021
【００８８】
次に、Ｓｕｂｓｔｉｔｕｔｉｏｎ処理後の値に対しＰｅｒｍｕｔａｔｉｏｎ処理を行う。Ｐｅｒｍｕｔａｔｉｏｎ処理は、出力値を数２１としたとき、数２２によって求められる。
【００８９】
【数２１】
0005822757.tif 000022
【００９０】
【数２２】
0005822757.tif 000023
【００９１】
ここで、行列の乗算は、既約多項式ｍ（ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ＋１を法として計算される。つまりｂ０は、数２３のようになる。
【００９２】
【数２３】
0005822757.tif 000024
【００９３】
そして、Ｐｅｒｍｕｔａｔｉｏｎ処理の結果である数２４が、非線形置換（Ｓｕｂ）の出力値となる。
【００９４】
【数２４】
0005822757.tif 000025
【００９５】
以上の非線形置換処理をテーブルによって演算する手法は以下の通りである。非線形置換（Ｓｕｂ）は、入力値を数２５とし、出力値を数２６とした場合、したがって、Ｂは、数２７となる。数２８を整理すると、数２９となる。
【００９６】
【数２５】
0005822757.tif 000026
【００９７】
【数２６】
0005822757.tif 000027
【００９８】
【数２７】
0005822757.tif 000028
【００９９】
【数２８】
0005822757.tif 000029
【０１００】
【数２９】
0005822757.tif 000030
【０１０１】
ここで、数３０で示す４つのテーブルを作成する。
【０１０２】
【数３０】
0005822757.tif 000031
【０１０３】
このテーブルを用いると、Ｓｕｂ変換は、数３１のように計算できる。
【０１０４】
【数３１】
0005822757.tif 000032
【０１０５】
このＴ０、Ｔ１、Ｔ２、Ｔ３の４つのテーブルを実行時に動的に生成する。具体的には、その前のステップ（数３２に示す）、をすべての数３３のそれぞれに対して、実行時に計算することで、テーブルを生成する。
【０１０６】
【数３２】
0005822757.tif 000033
【０１０７】
【数３３】
0005822757.tif 000034
【０１０８】
＜ストリーム暗号の暗号化装置の処理＞
図７を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
【０１０９】
まず、第１の演算テーブル生成部４００が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理部１００のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する（ステップＳ１０１）。
【０１１０】
次いで、第２の演算テーブル生成部５００が、演算実行時に、複数の非線形関数器と線形変換部とからなる非線形処理部内の非線形置換関数器の非線形関数器ごとに、非線形関数器の入力ビット列と線形変換部の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する（ステップＳ１０２）。
【０１１１】
そして、初期化処理部１００が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い（ステップＳ１０３）、非線形手段が、生成した第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成して（ステップＳ１０４）、排他的論理和演算器が、生成された鍵系列と平文との排他的論理和演算を行い暗号文を生成する（ステップＳ１０５）。
【０１１２】
以上、説明したように、本実施形態によれば、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【０１１３】
＜第３の実施形態＞
図８および図９を用いて、本実施形態に係るストリーム暗号の復号化装置について説明する。
【０１１４】
＜ストリーム暗号の復号化装置の構成＞
図８に示すように、本実施形態に係るストリーム暗号の復号化装置は、初期化処理部１００と、非線形処理部２００と、排他的論理和演算器６００と、第１の演算テーブル生成部４００とから構成されている。なお、第１の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は、省略する。
【０１１５】
排他的論理和演算器６００は、非線形処理部２００において生成された鍵系列と暗号文との排他的論理和演算を実行して、平文を生成する。
【０１１６】
＜ストリーム暗号の復号化装置の処理＞
図９を用いて、本実施形態に係るストリーム暗号の復号化装置の処理について説明する。
【０１１７】
まず、第１の演算テーブル生成部４００が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理部１００のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する（ステップＳ３０１）。
【０１１８】
そして、初期化処理部１００が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い（ステップＳ３０２）、非線形手段が、初期化処理後のビット列から鍵系列を生成して（ステップＳ３０３）、排他的論理和演算器が、生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する（ステップＳ３０４）。
【０１１９】
以上、説明したように、本実施形態によれば、第１の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルを用いて、初期化処理の演算処理するため、演算速度を高速化することができる。
【０１２０】
＜第４の実施形態＞
図１０および図１１を用いて、本発明に係る第４の実施形態について説明する。
【０１２１】
＜ストリーム暗号の復号化装置の構成＞
図１０に示すように、本実施形態に係るストリーム暗号の復号化装置は、初期化処理部１００と、非線形処理部２００と、排他的論理和演算器６００と、第１の演算テーブル生成部４００と、第２の演算テーブル生成部５００とから構成されている。なお、上記の構成要素は、第１の実施形態および第２の実施形態において説明したものと同一のものであることから、その詳細な説明は省略する。
【０１２２】
＜ストリーム暗号の復号化装置の処理＞
図１１を用いて、本実施形態に係るストリーム暗号の復号化装置の処理について説明する。
【０１２３】
まず、第１の演算テーブル生成部４００が、フィードバックシフトレジスタとフィードバック演算器とからなる初期化処理部１００のフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する（ステップＳ４０１）。
【０１２４】
次いで、第２の演算テーブル生成部５００が、演算実行時に、複数の非線形関数器と線形変換部とからなる非線形処理部内の非線形置換関数器の非線形関数器ごとに、非線形関数器の入力ビット列と線形変換部の出力ビット列とを対応づけた第２の演算テーブルを動的に生成する（ステップＳ４０２）。
【０１２５】
そして、初期化処理部１００が、初期鍵と初期値とを入力し、生成した第１の演算テーブルを用いて、初期化処理を行い（ステップＳ４０３）、非線形手段が、生成した第２の演算テーブルを用いて、初期化処理後のビット列から鍵系列を生成して（ステップＳ４０４）、排他的論理和演算器が、生成された鍵系列と暗号文との排他的論理和演算を行い平文を生成する（ステップＳ４０５）。
【０１２６】
以上、説明したように、本実施形態によれば、第１の演算テーブルおよび第２の演算テーブルを動的に生成するため、実装規模の拡大を抑制することができる。また、第１の演算テーブルおよび第２の演算テーブルを用いて、初期化処理および非線形処理の演算処理するため、演算速度を高速化することができる。
【０１２７】
なお、ストリーム暗号の暗号化装置およびストリーム暗号の復号化装置の処理をコンピュータシステムが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを情報収集システムに読み込ませ、実行することによって本発明のストリーム暗号の暗号化装置およびストリーム暗号の復号化装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【０１２８】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【０１２９】
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【０１３０】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１３１】
１００；初期化処理部
１１０；フィードバックシフトレジスタ
１２０；フィードバックシフトレジスタ
１３０；フィードバック演算器
１４０；フィードバック演算器
１５０；フィードバック演算器
１６０；クロックコントローラ
２００；非線形処理部
２１１；加算器
２１２；加算器
２１３；加算器
２１４；加算器
２２１；内部メモリ
２２２；内部メモリ
２２３；内部メモリ
２２４；内部メモリ
２３０；非線形置換関数器（Ｓｕｂ）
２３１；非線形関数器
２３２；非線形関数器
２３３；非線形関数器
２３４；非線形関数器
２３５；線形変換部
２４０；非線形置換関数器（Ｓｕｂ）
２５０；非線形置換関数器（Ｓｕｂ）
２６０；非線形置換関数器（Ｓｕｂ）
２７１；排他的論理和演算器
２７２；排他的論理和演算器
２７３；排他的論理和演算器
２７４；排他的論理和演算器
３００；排他的論理和演算器
４００；第１の演算テーブル生成部
５００；第２の演算テーブル生成部
６００；排他的論理和演算器
【図１】
0005822757.tif 000035
【図２】
0005822757.tif 000036
【図３】
0005822757.tif 000037
【図４】
0005822757.tif 000038
【図５】
0005822757.tif 000039
【図６】
0005822757.tif 000040
【図７】
0005822757.tif 000041
【図８】
0005822757.tif 000042
【図９】
0005822757.tif 000043
【図１０】
0005822757.tif 000044
【図１１】
0005822757.tif 000045