線形フィードバックレジスタと、該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、2つに分割された動的フィードバックレジスタと、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、前記非線形関数の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器と、を備えたことを特徴とするストリーム暗号の暗号化装置。前記非線形変換手段が、4つの内部メモリを内部状態として備え、該4つの内部メモリ間で非線形関数器を介した結線構造を有することを特徴とする請求項1に記載のストリーム暗号の暗号化装置。前記非線形変換手段が出力する暗号文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とする請求項1に記載のストリーム暗号の暗号化装置。暗号化処理の実行後に、すべてのデータを0とした平文を入力して空まわし処理を指定回数実行することを特徴とする請求項1に記載のストリーム暗号の暗号化装置。前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とする請求項4に記載のストリーム暗号の暗号化装置。請求項1から請求項5に記載のストリーム暗号の暗号化装置により生成された暗号文を復号するストリーム暗号の復号化装置であって、線形フィードバックレジスタと、該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、2つに分割された動的フィードバックレジスタと、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、前記非線形関数の出力データと入力した暗号文との排他的論理和演算を行い平文を出力する排他的論理和演算器と、を備えたことを特徴とするストリーム暗号の復号化装置。前記非線形変換手段が、4つの内部メモリを内部状態として備え、該4つの内部メモリ間で非線形関数器を介した結線構造を有することを特徴とする請求項6に記載のストリーム暗号の復号化装置。前記非線形変換手段が出力する平文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とする請求項6に記載のストリーム暗号の復号化装置。復号化処理の実行後に、すべてのデータを0とした暗号文を入力して空まわし処理を指定回数実行することを特徴とする請求項6に記載のストリーム暗号の暗号化装置。前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とする請求項9に記載のストリーム暗号の復号化装置。初期鍵、初期ベクトルを読み込む第1のステップと、初期化処理を実施する第2のステップと、鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップと、該生成した暗号文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップと、該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第6のステップと、該メッセージ認証子を暗号文に添付して出力する第7のステップと、を備えたことを特徴とするストリーム暗号の暗号化方法。前記請求項11に記載のストリーム暗号の暗号化方法により暗号化された暗号文を復号するストリーム暗号の復号化方法であって、初期鍵、初期ベクトルを読み込む第1のステップと、初期化処理を実施する第2のステップと、鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、暗号文とメッセージ認証子とを受信する第4のステップと、該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップと、該生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、前記暗号文の入力が終了した後も、前記暗号文をオールゼロとして空回しを実行する第6のステップと、該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第7のステップと、該メッセージ認証子を平文に添付して出力する第8のステップと、前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップと、を備えたことを特徴とするストリーム暗号の復号化方法。初期鍵、初期ベクトルを読み込む第1のステップと、初期化処理を実施する第2のステップと、鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップと、該生成した暗号文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップと、該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第6のステップと、該メッセージ認証子を暗号文に添付して出力する第7のステップと、をコンピュータに実行させるためのプログラム。前記請求項13に記載のプログラムにより暗号化された暗号文を復号するプログラムであって、初期鍵、初期ベクトルを読み込む第1のステップと、初期化処理を実施する第2のステップと、鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、暗号文とメッセージ認証子とを受信する第4のステップと、該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップと、該生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、前記暗号文の入力が終了した後も、前記暗号文をオールゼロとして空回しを実行する第6のステップと、該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第6のステップと、該メッセージ認証子を平文に添付して出力する第7のステップと、前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップと、をコンピュータに実行させるためのプログラム。しかしながら、これまで、ストリーム暗号を認証付き暗号にするためには、アルゴリズムの再設計が必要であった。または、設計の段階から認証機能の組み込みを考慮する必要があった。さらには、認証付きストリーム暗号のほとんどすべてが攻撃により破られており、安全な認証付きストリーム暗号はほとんど無いという状況である。そこで、本発明は、上述の課題に鑑みてなされたものであり、安全でしかも効率的な認証を実現できるストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムを提供することを目的とする。本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。1本発明は、線形フィードバックレジスタ例えば、図1の線形フィードバックレジスタ200に相当と、該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数例えば、図1のフィードバック関数100に相当と、2つに分割された動的フィードバックレジスタ例えば、図1の動的フィードバックレジスタ400、500に相当と、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数例えば、図1の動的フィードバックレジスタ300に相当と、前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段例えば、図1の非線形変換部600に相当と、前記非線形関数の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器例えば、図1の排他的論理和演算器760、770に相当と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。この発明によれば、ストリーム暗号の暗号化装置は、線形フィードバックレジスタと、線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、2つに分割された動的フィードバックレジスタと、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、2つの動的フィードバックレジスタからの入力データと線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、非線形関数の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器と、を備えている。つまり、上記の構成とすることにより、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。2本発明は、1のストリーム暗号の暗号化装置について、前記非線形変換手段が、4つの内部メモリ例えば、図2の内部メモリL1、L2、R1、R2に相当を内部状態として備え、該4つの内部メモリ間で非線形関数器例えば、図2の非線形関数620a、620b、620c、620dに相当を介した結線構造を有することを特徴とするストリーム暗号の暗号化装置を提案している。この発明によれば、非線形変換手段が、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造を有する。つまり、非線形変換手段をこうした構成とすることにより、安全性を相乗的に増加させることができる。3本発明は、1のストリーム暗号の暗号化装置について、前記非線形変換手段が出力する暗号文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とするストリーム暗号の暗号化装置を提案している。この発明によれば、非線形変換手段が出力する暗号文を動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力する。つまり、動的フィードバックレジスタを分割し、暗号文を入力するレジスタ間に距離を持たせることにより、安全性を高めることができる。4本発明は、1のストリーム暗号の暗号化装置について、暗号化処理の実行後に、すべてのデータを0とした平文を入力して空まわし処理を指定回数実行することを特徴とするストリーム暗号の暗号化装置を提案している。この発明によれば、暗号化処理の実行後に、すべてのデータを0とした平文を入力して空まわし処理を指定回数実行する。つまり、この処理を実行することにより、メッセージ認証子を作成することができるため、安全な認証付きストリーム暗号を生成することができる。5本発明は、4のストリーム暗号の暗号化装置について、前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とするストリーム暗号の暗号化装置を提案している。この発明によれば、空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力する。つまり、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。6本発明は、1から5のストリーム暗号の暗号化装置により生成された暗号文を復号するストリーム暗号の復号化装置であって、線形フィードバックレジスタ例えば、図4の線形フィードバックレジスタ200に相当と、該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数例えば、図4のフィードバック関数100に相当と、2つに分割された動的フィードバックレジスタ例えば、図4の動的フィードバックレジスタ400、500に相当と、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数例えば、図4の動的フィードバックレジスタ300に相当と、前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段例えば、図4の非線形変換部600に相当と、前記非線形関数の出力データと入力した暗号文との排他的論理和演算を行い平文を出力する排他的論理和演算器例えば、図4の排他的論理和演算器760、770に相当と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。この発明によれば、ストリーム暗号の復号化装置は、線形フィードバックレジスタと、線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、2つに分割された動的フィードバックレジスタと、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、2つの動的フィードバックレジスタからの入力データと線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、非線形関数の出力データと入力した暗号文との排他的論理和演算を行い平文を出力する排他的論理和演算器と、を備えている。つまり、上記の構成とすることにより、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。7本発明は、6のストリーム暗号の復号化装置について、前記非線形変換手段が、4つの内部メモリ例えば、図5の内部メモリL1、L2、R1、R2に相当を内部状態として備え、該4つの内部メモリ間で非線形関数器例えば、図5の非線形関数620a、620b、620c、620dに相当を介した結線構造を有することを特徴とするストリーム暗号の暗号化装置を提案している。この発明によれば、非線形変換手段が、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造を有する。つまり、非線形変換手段をこうした構成とすることにより、安全性を相乗的に増加させることができる。8本発明は、6のストリーム暗号の復号化装置について、前記非線形変換手段が出力する平文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とするストリーム暗号の復号化装置を提案している。この発明によれば、非線形変換手段が出力する平文を動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力する。つまり、動的フィードバックレジスタを分割し、平文を入力するレジスタ間に距離を持たせることにより、安全性を高めることができる。9本発明は、6のストリーム暗号の復号化装置について、復号化処理の実行後に、すべてのデータを0とした暗号文を入力して空まわし処理を指定回数実行することを特徴とするストリーム暗号の暗号化装置を提案している。この発明によれば、復号化処理の実行後に、すべてのデータを0とした平文を入力して空まわし処理を指定回数実行する。つまり、この処理を実行することにより、メッセージ認証子を作成することができるため、安全な認証付き平文を生成することができる。10本発明は、9のストリーム暗号の復号化装置について、前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とするストリーム暗号の復号化装置を提案している。この発明によれば、空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力する。つまり、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。11本発明は、初期鍵、初期ベクトルを読み込む第1のステップ例えば、図3のステップS101に相当と、初期化処理を実施する第2のステップ例えば、図3のステップS102に相当と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ例えば、図3のステップS103に相当と、該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップ例えば、図3のステップS104に相当と、該生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップ例えば、図3のステップS105に相当と、該空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力する第6のステップ例えば、図3のステップS106に相当と、該メッセージ認証子を暗号文に添付して出力する第7のステップ例えば、図3のステップS107に相当と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成し、生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する。そして、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力し、メッセージ認証子を暗号文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。また、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。12本発明は、11のストリーム暗号の暗号化方法により暗号化された暗号文を復号するストリーム暗号の復号化方法であって、初期鍵、初期ベクトルを読み込む第1のステップ例えば、図6のステップS201に相当と、初期化処理を実施する第2のステップ例えば、図6のステップS202に相当と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ例えば、図6のステップS203に相当と、暗号文とメッセージ認証子とを受信する第4のステップ例えば、図6のステップS204に相当と、該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップ例えば、図6のステップS205に相当と、該生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、前記暗号文の入力が終了した後も、前記暗号文をオールゼロとして空回しを実行する第6のステップ例えば、図6のステップS206に相当と、該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第7のステップ例えば、図6のステップS207に相当と、該メッセージ認証子を平文に添付して出力する第7のステップと、前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップ例えば、図6のステップS208に相当と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と暗号文との排他的論理和演算を実行することにより平文を生成し、生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行する。そして、空回し終了後に、分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とし、メッセージ認証子を平文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。また、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。13本発明は、初期鍵、初期ベクトルを読み込む第1のステップ例えば、図3のステップS101に相当と、初期化処理を実施する第2のステップ例えば、図3のステップS102に相当と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ例えば、図3のステップS103に相当と、該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップ例えば、図3のステップS104に相当と、該生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップ例えば、図3のステップS105に相当と、該空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力する第6のステップ例えば、図3のステップS106に相当と、該メッセージ認証子を暗号文に添付して出力する第7のステップ例えば、図3のステップS107に相当と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成し、生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する。そして、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力し、メッセージ認証子を暗号文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。また、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。14本発明は、前記請求項13に記載のプログラムにより暗号化された暗号文を復号するプログラムであって、初期鍵、初期ベクトルを読み込む第1のステップ例えば、図6のステップS201に相当と、初期化処理を実施する第2のステップ例えば、図6のステップS202に相当と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ例えば、図6のステップS203に相当と、暗号文とメッセージ認証子とを受信する第4のステップ例えば、図6のステップS204に相当と、該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップ例えば、図6のステップS205に相当と、該生成した平文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行する第5のステップ例えば、図6のステップS206に相当と、該空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力する第7のステップ例えば、図6のステップS207に相当と、該メッセージ認証子を平文に添付して出力する第7のステップと、前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップ例えば、図6のステップS208に相当と、をコンピュータに実行させるためのプログラムを提案している。この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した平文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行し、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力し、メッセージ認証子を平文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。また、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。本発明によれば、安全かつ効率的な認証付きストリーム暗号を生成できるという効果がある。また、復号処理においても安全かつ効率的な処理を実現できるという効果がある。以下、本発明の実施形態について、図面を用いて、詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。図1から図6を用いて、本発明に係るストリーム暗号の暗号化装置および復号化装置について説明する。<第1の実施形態>図1から図3を用いて、本実施形態に係るストリーム暗号の暗号化装置について説明する。<ストリーム暗号の暗号化装置の概略構成>図1に示すように、本実施形態に係るストリーム暗号の暗号化装置は、フィードバック関数100と、線形フィードバックシフトレジスタ200と、動的フィードバック関数300と、動的フィードバックレジスタA400と、動的フィードバックレジスタB500と、非線形変換部600と、非線形関数Msub710、720と、排他的論理和演算器730、740、750とから構成されている。線形フィードバックシフトレジスタ200は、レジスタの各セルにフィードバックをかけるシフトレジスタである。フィードバック関数100は、線形フィードバックシフトレジスタ200から取得したデータに演算処理を行い、演算結果に基づいて、演算処理後のデータを線形フィードバックシフトレジスタ200の最終レジスタにフィードバックするか否かを制御する。動的フィードバックレジスタA400および動的フィードバックレジスタB500は、動的フィードバック関数300の処理結果により動的に構造が変化する線形フィードバックシフトレジスタである。したがって、より安全に暗号化処理および認証子の導出を行うことができる。また、本実施形態においては、動的フィードバックレジスタが2つに分割されて配置されており、暗号文を動的フィードバック関数および分割された一方の動的フィードバックレジスタA400および動的フィードバックレジスタB500の最終レジスタに出力する。つまり、動的フィードバックレジスタを分割し、暗号文を入力するレジスタ間に距離を持たせることにより、安全性を高めることができる。非線形変換部600は、線形シフトレジスタ200および動的フィードバックレジスタA400、動的フィードバックレジスタB500から入力したデータについて、非線形変換の処理を行う。非線形関数Msub710は、動的フィードバック関数300からの出力に対して、AES暗号のMixColumn処理、S-Box処理、MixColumn処理を順番に行い、処理結果を動的フィードバックレジスタA400の最終レジスタに出力する。非線形関数Msub720は、動的フィードバックレジスタA400の出力レジスタの値と非線形変換部600から出力される暗号文とを排他的論理和演算器730において演算した値に対して、AES暗号のMixColumn処理、S-Box処理、MixColumn処理を順番に行い、処理結果を動的フィードバックレジスタB500の最終レジスタに出力する。排他的論理和演算器740、750は、非線形変換部600からの出力と平文との排他的論理和演算を行って、暗号文を生成する。なお、暗号化処理終了後は、平文の値をオール0として空回しを指定回数実行し、空回し後に、指定ビット長の鍵系列を出力して、メッセージ認証子とする。さらに、生成した暗号文とメッセージ認証子とを結合して、最終的な出力とする。<ストリーム暗号の暗号化装置の具体的な構成>図2に示すように、フィードバック関数100は、複数の排他的論理和演算器により構成されている。また、動的フィードバック関数300は、複数の排他的論理和演算器と加算器により構成されており、図2の場合には、線形フィードバックシフトレジスタ200の2番目のレジスタにおける4ビットのデータにより、フィードバック処理において、加算器を選択するのか、排他的論理和演算器を選択するのかを制御する。このような制御を行うことにより、ストリーム暗号装置全体の安全性を向上させることができる。非線形変換部600は、内部メモリ610a、610b、610c、610d、610eと、非線形関数Sub620a、620b、620c、620d、620eと、加算器630a、630b、630c、630d、630eと、排他的論理和演算器640a、640bとから構成されている。加算器630aは、動的フィードバックシフトレジスタA400と内部メモリL2とに接続されており、内部メモリL2の値と動的フィードバックシフトレジスタA400からの出力値とを加算して、非線形関数620bに出力する。加算器630bは、動的フィードバックシフトレジスタB500と内部メモリR2とに接続されており、内部メモリR2の値と動的フィードバックシフトレジスタB500からの出力値とを加算して、非線形関数620cに出力する。なお、非線形関数Sub620a、620b、620c、620d、620eは、AES暗号のS-Box処理、MixColumn処理を順番に行い、処理結果を各内部メモリ610a、610b、610c、610d、610eに出力する。加算器630cは、内部メモリL2610cと内部メモリL1610aとに接続されており、内部メモリL2610cと内部メモリL1610aとを加算して、排他的論理和演算器640aに出力する。加算器630dは、内部メモリR2610dと内部メモリR1610bとに接続されており、内部メモリR2610dと内部メモリR1610bとを加算して、排他的論理和演算器640bに出力する。内部メモリL1610aは、非線形関数620cの出力値を保存し、内部メモリR1610bは、非線形関数620cの出力値を保存し、内部メモリL2610cは、非線形関数620aの出力値を保存し、内部メモリR2610dは、非線形関数620dの出力値を保存する。このように、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造とすることにより、安全性を相乗的に増加させることができる。排他的論理和演算器640aは、加算器630cの出力値と線形フィードバックシフトレジスタ100の出力値との排他的論理和演算を行って、演算結果を排他的論理和演算器740に出力する。排他的論理和演算器640bは、加算器630dの出力値と線形フィードバックシフトレジスタ100からの値との排他的論理和演算を行って、演算結果を排他的論理和演算器750に出力する。<ストリーム暗号の暗号化装置の処理>図3を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。まず、初期鍵、初期ベクトルを読み込んでステップS101、初期化処理を実施するステップS102。次に、鍵系列生成処理を実行し、鍵系列を生成しステップS103。生成した鍵系列と平文を排他的論理和することにより暗号文を生成するステップS104。さらに、生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行しステップS105、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子とするステップS106。そして、メッセージ認証子を暗号文に添付して送信するステップS107。以上、説明したように、本実施形態によれば、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。また、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。<第2の実施形態>図4から図6を用いて、本実施形態に係るストリーム暗号の復号化装置について説明する。なお、本実施形態に係るストリーム暗号の復号化装置は、第1の実施形態において暗号化されたデータを復号するものである。<ストリーム暗号の復号化装置の概略構成>図4に示すように、本実施形態に係るストリーム暗号の復号化装置は、フィードバック関数100と、線形フィードバックシフトレジスタ200と、動的フィードバック関数300と、動的フィードバックレジスタA400と、動的フィードバックレジスタB500と、非線形変換部600と、非線形関数Msub710、720と、排他的論理和演算器730、740、750とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素は、同一の機能を有することから、その詳細な説明は省略する。<ストリーム暗号の復号化装置の処理>図6を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。まず、初期鍵、初期ベクトルを読み込んでステップS201、初期化処理を実施するステップS202。次に、鍵系列生成処理を実行し、鍵系列を生成しステップS203暗号文とメッセージ認証子を受信するステップS204。次に、生成した鍵系列と暗号文を排他的論理和することにより平文を生成するステップS205。さらに、生成した平文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行しステップS206、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力するステップS207。そして、受信したメッセージ認証子と生成したメッセージ認証子とを照合するステップS208。以上、説明したように、本実施形態によれば、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。また、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。なお、ストリーム暗号の暗号器あるいはストリーム暗号の復号器の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の暗号器あるいはストリーム暗号の復号器に読み込ませ、実行することによって本発明のストリーム暗号の暗号器あるいはストリーム暗号の復号器を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。また、コンピュータシステムは、WWWWorldWideWebシステムを利用している場合であれば、ホームページ提供環境あるいは表示環境も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する伝送媒体は、インターネット等のネットワーク通信網や電話回線等の通信回線通信線のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル差分プログラムであっても良い。以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。