(57)【要約】【課題】十分な安全性を有することが証明可能であり、しかも、処理速度が高速なストリーム暗号の暗号化装置等を提供する。【解決手段】初期鍵および初期ベクトルをメモリ内のレジスタに読み込み、読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する。次に、メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力し、ルールビットに従って、鍵系列生成関数がメモリ内のレジスタから所定の値を選択する。そして、鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力し、このとき、メモリ内のレジスタの値を更新する。そして、鍵系列生成関数が出力した鍵系列と平文との排他的論理和演算を実行することにより暗号化する。【選択図】図１
2008286964.tif 000002
【特許請求の範囲】
【請求項１】
初期鍵および初期ベクトルを初期値としてレジスタに格納する格納手段と、
該格納手段のレジスタに格納された値を鍵系列が生成されるごとに更新する更新手段と、
前記格納手段から出力される選択ルールビット列に基づいて、前記格納手段のレジスタに格納される値を選択して入力し、鍵系列を生成する鍵系列生成関数と、
該生成された鍵系列と平文との排他的論理和演算を実行して、暗号文を出力する出力手段と、
を備えたことを特徴とするストリーム暗号の暗号化装置。
【請求項２】
前記鍵系列生成関数がナップザック問題を計算する関数であることを特徴とする請求項１に記載のストリーム暗号の暗号化装置。
【請求項３】
前記鍵系列生成関数が最短ベクトル問題を計算する関数であることを特徴とする請求項１に記載のストリーム暗号の暗号化装置。
【請求項４】
前記格納手段が所定値以上の容量を有することを特徴とする請求項１から３のいずれかに記載のストリーム暗号の暗号化装置。
【請求項５】
初期鍵および初期ベクトルを初期値としてレジスタに格納する格納手段と、
該格納手段のレジスタに格納された値を鍵系列が生成されるごとに更新する更新手段と、
前記格納手段から出力される選択ルールビット列に基づいて、前記格納手段のレジスタに格納される値を選択して入力し、鍵系列を生成する鍵系列生成関数と、
該生成された鍵系列と暗号文との排他的論理和演算を実行して、平文を出力する出力手段と、
を備えたことを特徴とするストリーム暗号の復号化装置。
【請求項６】
初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップと、
該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップと、
前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップと、
該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップと、
前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップと、
該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップと、
前記鍵系列生成関数が出力した鍵系列と平文との排他的論理和演算を実行することにより暗号化する第７のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項７】
初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップと、
該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップと、
前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップと、
該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップと、
前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップと、
該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップと、
前記鍵系列生成関数が出力した鍵系列と暗号文との排他的論理和演算を実行することにより復号化する第７のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項８】
コンピュータに、
初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップと、
該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップと、
前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップと、
該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップと、
前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップと、
該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップと、
前記鍵系列生成関数が出力した鍵系列と平文との排他的論理和演算を実行することにより暗号化する第７のステップと、
を実行させることを特徴とするプログラム。
【請求項９】
コンピュータに、
初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップと、
該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップと、
前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップと、
該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップと、
前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップと、
該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップと、
前記鍵系列生成関数が出力した鍵系列と暗号文との排他的論理和演算を実行することにより復号化する第７のステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム暗号の暗号化装置、復号化装置、暗号化方法、復号化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、インターネットの目覚しい普及により、コンピュータを利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、その通信内容を秘匿化するために暗号が利用されている。ここで、暗号方式としては、１つの鍵で暗号化と復号化とを行う共通鍵暗号方式が一般的であるが、この共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式とに大別される。
【０００３】
ストリーム暗号方式は、ブロック暗号方式よりも高速な処理が期待できるため、例えば、映画等の大容量データを伝送するための方式として、近年、注目を浴びている。なお、記したストリーム暗号を生成するための方法および装置の一例が以下の特許文献１に開示されている。
【特許文献１】特表２００２−５３６９１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ストリーム暗号は、その処理速度において優れているものの、その安全性を証明できる高速なストリーム暗号は、いままでに存在していない。
【０００５】
そこで、本発明は、上述の課題に鑑みてなされたものであり、十分な安全性を有することが証明可能であり、しかも、処理速度が高速なストリーム暗号の暗号化装置、復号化装置、暗号化方法、復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の事項を提案している。
（１）本発明は、初期鍵および初期ベクトルを初期値としてレジスタに格納する格納手段（例えば、図１の内部メモリ１２に相当）と、該格納手段のレジスタに格納された値を鍵系列が生成されるごとに更新する更新手段（例えば、図１の内部メモリ更新関数１１に相当）と、前記格納手段から出力される選択ルールビット列に基づいて、前記格納手段のレジスタに格納される値を選択して入力し、鍵系列を生成する鍵系列生成関数（例えば、図１の鍵系列生成関数１３に相当）と、該生成された鍵系列と平文との排他的論理和演算を実行して、暗号文を出力する出力手段（例えば、図１の排他的論理和演算器（ＸＯＲ）１４に相当）と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【０００７】
この発明によれば、格納手段が、初期鍵および初期ベクトルを初期値としてレジスタに格納し、更新手段が、格納手段のレジスタに格納された値を鍵系列が生成されるごとに更新する。そして、鍵系列生成関数が、格納手段から出力される選択ルールビット列に基づいて、格納手段のレジスタに格納される値を選択して入力し、鍵系列を生成し、出力手段が、生成された鍵系列と平文との排他的論理和演算を実行して、暗号文を出力する。したがって、更新手段と鍵系列生成関数とを分離した構成を用いることから、相互の相関性が無くなり、容易に鍵系列を解析することができないため、安全性が向上する。また、更新手段と鍵系列生成関数とを分離することにより、従来のテーブル参照型のストリーム暗号に比べて、プログラムコードサイズを小さくすることができる。さらに、ストリーム暗号を用いることから、優れた処理速度が期待できる。
【０００８】
（２）本発明は、（１）のストリーム暗号の暗号化装置について、前記鍵系列生成関数がナップザック問題を計算する関数であることを特徴とするストリーム暗号の暗号化装置を提案している。
【０００９】
この発明によれば、鍵系列生成関数として、安全性を有するナップザック問題を計算する関数を用いてストリーム暗号の暗号化装置を構成することから、安全性を確保しつつ、処理速度の速い暗号化装置を構成することができる。
【００１０】
（３）本発明は、（１）のストリーム暗号の暗号化装置について、前記鍵系列生成関数が最短ベクトル問題を計算する関数であることを特徴とするストリーム暗号の暗号化装置を提案している。
【００１１】
この発明によれば、鍵系列生成関数として、安全性を有する最短ベクトル問題を計算する関数を用いてストリーム暗号の暗号化装置を構成することから、安全性を確保しつつ、処理速度の速い暗号化装置を構成することができる。また、最短ベクトル問題を計算する関数は、２次元のデータビットをその処理対象とするため、格納手段のメモリサイズを小さくすることができる。さらに、２次元のデータビットをその処理対象とするため、計算の難易度が上がって、より安全性を高めることができる。
【００１２】
（４）本発明は、（１）から（３）のストリーム暗号の暗号化装置について、前記格納手段が所定値以上の容量を有することを特徴とするストリーム暗号の暗号化装置を提案している。
【００１３】
この発明によれば、格納手段が所定値以上の容量を有することから、鍵系列生成関数における計算の難易度を一定以上に保持することができる。
【００１４】
（５）本発明は、初期鍵および初期ベクトルを初期値としてレジスタに格納する格納手段（例えば、図３の内部メモリ１２に相当）と、該格納手段のレジスタに格納された値を鍵系列が生成されるごとに更新する更新手段（例えば、図３の内部メモリ更新関数１１に相当）と、前記格納手段から出力される選択ルールビット列に基づいて、前記格納手段のレジスタに格納される値を選択して入力し、鍵系列を生成する鍵系列生成関数（例えば、図３の鍵系列生成関数１３に相当）と、該生成された鍵系列と暗号文との排他的論理和演算を実行して、平文を出力する出力手段（例えば、図３の排他的論理和演算器（ＸＯＲ）１４に相当）と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【００１５】
この発明によれば、格納手段が、初期鍵および初期ベクトルを初期値としてレジスタに格納し、更新手段が、格納手段のレジスタに格納された値を鍵系列が生成されるごとに更新する。そして、鍵系列生成関数が、格納手段から出力される選択ルールビット列に基づいて、格納手段のレジスタに格納される値を選択して入力し、鍵系列を生成し、出力手段が、生成された鍵系列と暗号文との排他的論理和演算を実行して、平文を出力する。したがって、更新手段と鍵系列生成関数とを分離した構成を用いることから、相互の相関性が無くなり、容易に鍵系列を解析することができないため、安全性が向上する。
【００１６】
（６）本発明は、初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップ（例えば、図２のステップＳ１０１に相当）と、該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップ（例えば、図２のステップＳ１０２に相当）と、前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップ（例えば、図２のステップＳ１０４に相当）と、前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップ（例えば、図２のステップＳ１０５に相当）と、該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップ（例えば、図２のステップＳ１０７に相当）と、前記鍵系列生成関数が出力した鍵系列と平文との排他的論理和演算を実行することにより暗号化する第７のステップ（例えば、図２のステップＳ１０６に相当）と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【００１７】
この発明によれば、初期鍵および初期ベクトルをメモリ内のレジスタに読み込み、読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する。次に、メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力し、ルールビットに従って、鍵系列生成関数がメモリ内のレジスタから所定の値を選択する。そして、鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力し、このとき、メモリ内のレジスタの値を更新する。そして、鍵系列生成関数が出力した鍵系列と平文との排他的論理和演算を実行することにより暗号化する。したがって、安全性の高い鍵系列生成関数を用いて、ストリーム暗号の暗号化を実行するため、高い安全性を確保しつつ、高速な暗号化処理が可能となる。
【００１８】
（７）本発明は、初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップ（例えば、図４のステップＳ２０１に相当）と、該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップ（例えば、図４のステップＳ２０２に相当）と、前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップ（例えば、図４のステップＳ２０４に相当）と、前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップ（例えば、図４のステップＳ２０５に相当）と、該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップ（例えば、図４のステップＳ２０７に相当）と、前記鍵系列生成関数が出力した鍵系列と暗号文との排他的論理和演算を実行することにより復号化する第７のステップ（例えば、図４のステップＳ２０６に相当）と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【００１９】
この発明によれば、初期鍵および初期ベクトルをメモリ内のレジスタに読み込み、読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する。次に、メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力し、ルールビットに従って、鍵系列生成関数がメモリ内のレジスタから所定の値を選択する。そして、鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力し、このとき、メモリ内のレジスタの値を更新する。そして、鍵系列生成関数が出力した鍵系列と暗号文との排他的論理和演算を実行することにより復号化する。したがって、安全性の高い鍵系列生成関数を用いて、ストリーム暗号の復号化を実行するため、高い安全性を確保しつつ、高速な復号化処理が可能となる。
【００２０】
（８）本発明は、コンピュータに、初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップ（例えば、図２のステップＳ１０１に相当）と、該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップ（例えば、図２のステップＳ１０２に相当）と、前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップ（例えば、図２のステップＳ１０４に相当）と、前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップ（例えば、図２のステップＳ１０５に相当）と、該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップ（例えば、図２のステップＳ１０７に相当）と、前記鍵系列生成関数が出力した鍵系列と平文との排他的論理和演算を実行することにより暗号化する第７のステップ（例えば、図２のステップＳ１０６に相当）と、を実行させることを特徴とするプログラムを提案している。
【００２１】
この発明によれば、初期鍵および初期ベクトルをメモリ内のレジスタに読み込み、読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する。次に、メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力し、ルールビットに従って、鍵系列生成関数がメモリ内のレジスタから所定の値を選択する。そして、鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力し、このとき、メモリ内のレジスタの値を更新する。そして、鍵系列生成関数が出力した鍵系列と平文との排他的論理和演算を実行することにより暗号化する。したがって、安全性の高い鍵系列生成関数を用いて、ストリーム暗号の暗号化を実行するため、高い安全性を確保しつつ、高速な暗号化処理が可能となる。
【００２２】
（９）本発明は、コンピュータに、初期鍵および初期ベクトルをメモリ内のレジスタに読み込む第１のステップ（例えば、図４のステップＳ２０１に相当）と、該読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する第２のステップ（例えば、図４のステップＳ２０２に相当）と、前記メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該ルールビットに従って、前記鍵系列生成関数が前記メモリ内のレジスタから所定の値を選択する第４のステップ（例えば、図４のステップＳ２０４に相当）と、前記鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力する第５のステップ（例えば、図４のステップＳ２０５に相当）と、該鍵系列が出力されるごとに、前記メモリ内のレジスタの値を更新する第６のステップ（例えば、図４のステップＳ２０７に相当）と、前記鍵系列生成関数が出力した鍵系列と暗号文との排他的論理和演算を実行することにより復号化する第７のステップ（例えば、図４のステップＳ２０６に相当）と、を実行させることを特徴とするプログラムを提案している。
【００２３】
この発明によれば、初期鍵および初期ベクトルをメモリ内のレジスタに読み込み、読み込んだ初期鍵および初期ベクトルをメモリ内部で攪拌する。次に、メモリ内のレジスタから選択する値を定義するルールビットを鍵系列生成関数に入力し、ルールビットに従って、鍵系列生成関数がメモリ内のレジスタから所定の値を選択する。そして、鍵系列生成関数が選択した値を全て加算あるいは乗算を行い、その演算結果を鍵系列のデータサイズで除した剰余を得て、この剰余を鍵系列として出力し、このとき、メモリ内のレジスタの値を更新する。そして、鍵系列生成関数が出力した鍵系列と暗号文との排他的論理和演算を実行することにより復号化する。したがって、安全性の高い鍵系列生成関数を用いて、ストリーム暗号の復号化を実行するため、高い安全性を確保しつつ、高速な復号化処理が可能となる。
【発明の効果】
【００２４】
本発明によれば、安全性の高い鍵系列生成関数を用いて装置を構成することにより、高い安全性を確保できるという効果がある。また、格納手段内のレジスタの値を更新する手段（関数）と鍵系列生成関数とを分離させた構成となっているため、相互の相関性が無くなり、鍵系列の解析を困難とすることにより安全性をさらに向上させることができるという効果がある。さらに、ストリーム暗号を用いた装置構成となっているため、優れた処理速度が期待できるという効果がある。
【発明を実施するための最良の形態】
【００２５】
以下、図面を用いて、本発明の実施形態について詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２６】
＜暗号化装置の構成＞
本実施形態に係る暗号化装置は、図１に示すように、内部メモリ更新関数１１と、内部メモリ１２と、鍵系列生成関数１３と、排他的論理和演算器（ＸＯＲ）１４とから構成されている。
【００２７】
内部メモリ更新関数１１は、初期処理として、内部メモリ１２を攪拌するとともに、鍵系列生成関数１３が鍵系列を出力するごとに内部メモリ１２を更新する。内部メモリ１２は、鍵系列を生成するために必要な値を内部のレジスタに格納している。また、内部メモリ内のレジスタに格納された値のうち、どの値を鍵系列の生成のために用いるかを決定する選択ルールビットも格納している。なお、内部メモリ１２は、所定値以上の容量を有している。これにより、鍵系列生成関数１３における計算の難易度を一定以上に保持することができる。
【００２８】
鍵系列生成関数１３は、選択された内部メモリ１２の値をすべて加算、ないし乗算を行い、この値を鍵系列のデータサイズに対応する数値で除することにより得られる剰余を鍵系列として出力する。なお、鍵系列生成関数１３としては、具体的に、ナップザック問題を計算する関数あるいは最短ベクトル問題を計算する関数等が考えられる。いずれの場合も安全性を有する関数であるが、特に、最短ベクトル問題を計算する関数については、２次元のデータビットをその処理対象とするため、内部メモリ１２のメモリサイズを小さくすることができ、さらに、計算の難易度が上がって、より安全性を高めることができる。
【００２９】
排他的論理和演算器（ＸＯＲ）１４は、平文と鍵系列生成関数１３において生成された鍵系列との排他的論理和演算を実行して、暗号文を出力する。
【００３０】
上記のように、本実施形態に係る暗号化装置は、内部メモリ更新関数１１と鍵系列生成関数１３とを分離した構成を用いることから、相互の相関性が無くなり、容易に鍵系列を解析することができないため、安全性が向上する。また、内部メモリ更新関数１１と鍵系列生成関数１３とを分離することにより、従来のテーブル参照型のストリーム暗号に比べて、プログラムコードサイズを小さくすることができる。
【００３１】
＜暗号化処理＞
次に、図２を用いて、暗号化の処理について説明する。
まず、内部メモリ１２に初期鍵、初期ベクトルを読み込む（ステップＳ１０１）。そして、内部メモリ更新関数１１が、初期攪拌処理により内部メモリ１２を攪拌する（ステップＳ１０２）。次に、鍵系列生成関数１３が、例えば、内部メモリ１２の最右の値を選択ルールビットとして入力する（ステップＳ１０３）。
【００３２】
鍵系列生成関数１３は、選択ルールビットに従って、内部メモリ１２の値を選択し（ステップＳ１０４）、選択した内部メモリ１２の値をすべて加算、ないし乗算を行い、鍵系列のビットサイズに相当する値について剰余を取り、この値を鍵系列として出力する（ステップＳ１０５）。
【００３３】
そして、排他的論理和演算器（ＸＯＲ）１４において、鍵系列と平文とを排他的論理和処理することにより、暗号化する（ステップＳ１０６）。一方、鍵系列生成関数１３から鍵系列が出力されると、内部メモリ更新関数１１は、内部メモリ１２の値を更新して、上記のステップＳ１０３からステップＳ１０６の処理を継続して実行する。
【００３４】
したがって、本実施形態に係る暗号化装置によれば、内部メモリ更新関数１１と鍵系列生成関数１３とを分離した構成を用いることから、相互の相関性が無くなり、容易に鍵系列を解析することができないため、安全性が向上する。また、内部メモリ更新関数１１と鍵系列生成関数１３とを分離することにより、従来のテーブル参照型のストリーム暗号に比べて、プログラムコードサイズを小さくすることができる。さらに、ストリーム暗号を用いることから、優れた処理速度が期待できる。
【００３５】
＜復号化装置の構成＞
本実施形態に係る復号化装置は、図３に示すように、内部メモリ更新関数１１と、内部メモリ１２と、鍵系列生成関数１３と、排他的論理和演算器（ＸＯＲ）２１とから構成されている。なお、上記の暗号化装置と同一の符号を付す構成要素については、同一の機能を有することから、その詳細な説明は省略する。
【００３６】
ここで、排他的論理和演算器（ＸＯＲ）２１は、暗号文と鍵系列生成関数１３において生成された鍵系列との排他的論理和演算を実行して、平文を出力する。
【００３７】
＜復号化処理＞
次に、図４を用いて、暗号化の処理について説明する。
まず、内部メモリ１２に初期鍵、初期ベクトルを読み込む（ステップＳ２０１）。そして、内部メモリ更新関数１１が、初期攪拌処理により内部メモリ１２を攪拌する（ステップＳ２０２）。次に、鍵系列生成関数１３が、例えば、内部メモリ１２の最右の値を選択ルールビットとして入力する（ステップＳ２０３）。
【００３８】
鍵系列生成関数１３は、選択ルールビットに従って、内部メモリ１２の値を選択し（ステップＳ２０４）、選択した内部メモリ１２の値をすべて加算、ないし乗算を行い、鍵系列のビットサイズに相当する値について剰余を取り、この値を鍵系列として出力する（ステップＳ２０５）。
【００３９】
そして、排他的論理和演算器（ＸＯＲ）１４において、鍵系列と暗号文とを排他的論理和処理することにより、復号化する（ステップＳ２０６）。一方、鍵系列生成関数１３から鍵系列が出力されると、内部メモリ更新関数１１は、内部メモリ１２の値を更新して、上記のステップＳ２０３からステップＳ２０６の処理を継続して実行する。
【００４０】
したがって、本実施形態に係る復号化装置によれば、内部メモリ更新関数１１と鍵系列生成関数１３とを分離した構成を用いることから、相互の相関性が無くなり、容易に鍵系列を解析することができないため、安全性が向上する。また、内部メモリ更新関数１１と鍵系列生成関数１３とを分離することにより、従来のテーブル参照型のストリーム暗号に比べて、プログラムコードサイズを小さくすることができる。さらに、ストリーム暗号を用いることから、優れた処理速度が期待できる。
【００４１】
なお、上述の一連の処理をプログラムとしてコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の暗号化装置、ストリーム暗号の復号化装置に読み込ませ、実行することによって本発明のストリーム暗号の暗号化装置、ストリーム暗号の復号化装置を実現することができる。
【００４２】
また、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００４３】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００４４】
また、本発明は、様々なストリーム暗号の評価に広く適用することができる。したがって、ストリーム暗号を使用するようなブロードバンド事業や携帯電話をはじめとするモバイル通信におけるシステム構築に広く利用することが可能である。
【００４５】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００４６】
【図１】本実施形態に係る暗号化装置の構成図である。
【図２】本実施形態に係る暗号化装置における暗号化処理のフローである。
【図３】本実施形態に係る暗号化装置の構成図である。
【図４】本実施形態に係る暗号化装置における暗号化処理のフローである。
【符号の説明】
【００４７】
１１・・・内部メモリ更新関数、１２・・・内部メモリ、１３・・・鍵系列生成関数、１４、２１・・・排他的論理和演算器（ＸＯＲ）
【図１】
2008286964.tif 000003
【図２】
2008286964.tif 000004
【図３】
2008286964.tif 000005
【図４】
2008286964.tif 000006