(57)【要約】【課題】ストリーム暗号処理部の構成を変更することなく、メッセージ認証を付与する。【解決手段】初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成し、生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する。次に、出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択し、複数のレジスタで構成されたメッセージ認証用レジスタにおいて、入力した内部状態に応じて、各レジスタの格納データの更新処理を、すべての暗号文について実行する。そして、所定の固定ビットデータ列を入力して更新処理を実行し、メッセージ認証用レジスタからメッセージ認証子を出力する。【選択図】図３
2015114434.tif 000002
【特許請求の範囲】
【請求項１】
初期鍵と初期ベクトルを入力し、内部状態を更新して、生成した鍵系列（乱数）を生成する初期化処理手段と、
該生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する排他的論理和演算器と、
該出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する選択関数器と、
複数のレジスタで構成され、該選択した内部状態を格納するメッセージ認証用レジスタと、
前記メッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新を前記選択関数器からの出力がなくなるまで実行し、その後、所定の固定ビットデータ列を入力して、さらに、前記各レジスタの格納データの更新を実行する更新手段と、
該更新手段の処理終了後に、前記メッセージ認証用レジスタに格納されているデータをメッセージ認証子として出力させる出力制御手段と、
該出力されたメッセージ認証子と前記排他的論理和演算器が出力する暗号文とを結合してメッセージ認証子付き暗号文を出力する出力手段と、
を備えたことを特徴とするストリーム暗号の暗号化装置。
【請求項２】
前記選択関数器は、前記入力した暗号文（数値データ）に対して、ｍｏｄｎ（ｎ；正の整数からなる定数）の演算処理を行い、その剰余をインデックスとして、前記複数のレジスタ内に格納された内部状態のうち、該インデックスに対応するレジスタの内部状態を選択することを特徴とする請求項１に記載のストリーム暗号の暗号化装置。
【請求項３】
前記初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とする請求項１または請求項２に記載のストリーム暗号の暗号化装置。
【請求項４】
請求項１または請求項２に記載のストリーム暗号の暗号化装置により生成されるメッセージ認証子付き暗号文を復号するストリーム暗号の復号化装置であって、
前記メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離する分離手段と、
該分離したメッセージ認証子を格納する格納手段と、
初期値と初期ベクトルを入力し、内部状態を更新して、生成した鍵系列（乱数）を生成する初期処理手段と、
該生成した鍵系列と前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する排他的論理和演算器と、
該分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する選択関数器と、
複数のレジスタで構成され、該選択した内部状態を格納するメッセージ認証用レジスタと、
前記メッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新を前記選択関数器からの出力がなくなるまで実行し、その後、所定の固定ビットデータ列を入力して、さらに、前記各レジスタの格納データの更新を実行する更新手段と、
該更新手段の処理終了後に、前記メッセージ認証用レジスタに格納されているデータをメッセージ認証子として出力させる出力制御手段と、
前記格納手段に格納されたメッセージ認証子と前記出力されたメッセージ認証子とを照合する照合手段と、
を備えたことを特徴とするストリーム暗号の復号化装置。
【請求項５】
前記選択関数器は、前記入力した暗号文（数値データ）に対して、ｍｏｄｎ（ｎ；正の整数からなる定数）の演算処理を行い、その剰余をインデックスとして、前記複数のレジスタ内に格納された内部状態のうち、該インデックスに対応するレジスタの内部状態を選択することを特徴とする請求項４に記載のストリーム暗号の復号化装置。
【請求項６】
前記初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とする請求項４または請求項５に記載のストリーム暗号の復号化装置。
【請求項７】
コンピュータが、
初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第１のステップと、
該生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する第２のステップと、
該出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第３のステップと、
複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第３のステップからの出力がなくなるまで実行する第４のステップと、
所定の固定ビットデータ列を入力して前記更新処理を実行する第５のステップと、
前記メッセージ認証用レジスタからメッセージ認証子を出力する第６のステップと、
前記第６のステップで出力されるメッセージ認証子と前記第２のステップで出力される暗号文とを結合して出力する第７のステップと、
を実行することを特徴とするストリーム暗号の暗号化方法。
【請求項８】
請求項７に記載のストリーム暗号の暗号化方法により生成されるメッセージ認証子付き暗号文を復号するストリーム暗号の復号化方法であって、
コンピュータが、
前記メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離する第１のステップと、
該分離したメッセージ認証子を格納する第２のステップと、
初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第３のステップと、
該生成した鍵系列と前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する第４のステップと、
前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文を入力し、入力した該暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第５のステップと、
複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第５のステップからの出力がなくなるまで実行する第６のステップと、
所定の固定ビットデータ列を入力して前記更新処理を実行する第７のステップと、
前記メッセージ認証用レジスタからメッセージ認証子を出力する第８のステップと、
該出力されたメッセージ認証子と前記格納されたメッセージ認証子とを照合する第９のステップと、
を実行することを特徴とするストリーム暗号の復号化方法。
【請求項９】
コンピュータに、
初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第１のステップと、
該生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する第２のステップと、
該出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第３のステップと、
複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第３のステップからの出力がなくなるまで実行する第４のステップと、
所定の固定ビットデータ列を入力して前記更新処理を実行する第５のステップと、
前記メッセージ認証用レジスタからメッセージ認証子を出力する第６のステップと、
前記第６のステップで出力されるメッセージ認証子と前記第２のステップで出力される暗号文とを結合して出力する第７のステップと、
を実行させるためのプログラム。
【請求項１０】
請求項７に記載のストリーム暗号の暗号化方法により生成されるメッセージ認証子付き暗号文を復号するストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、
コンピュータに、
前記メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離する第１のステップと、
該分離したメッセージ認証子を格納する第２のステップと、
初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第３のステップと、
該生成した鍵系列と前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する第４のステップと、
前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文を入力し、入力した該暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第５のステップと、
複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第５のステップからの出力がなくなるまで実行する第６のステップと、
所定の固定ビットデータ列を入力して前記更新処理を実行する第７のステップと、
前記メッセージ認証用レジスタからメッセージ認証子を出力する第８のステップと、
該出力されたメッセージ認証子と前記格納されたメッセージ認証子とを照合する第９のステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム暗号処理部の構成を変更することなく、メッセージ認証を付与するストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスにおいては、通信の秘匿を実現するため、暗号が利用される。暗号方式として最も一般的なものは、１つの鍵で暗号化および復号化を行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の２つに分けられる。前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。ここで、ストリーム暗号は、初期鍵を初期化処理により攪拌して、初期の内部状態を生成し、生成した状態を逐次更新しながら、暗号化の各系列を生成する（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２０９１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のストリーム暗号では、暗号化機能のみを提供するが、改ざん防止を行うためのメッセージ認証機能を提供することはできなかったという問題があった。
【０００５】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ストリーム暗号処理部の構成を変更することなく、メッセージ認証を付与するストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【０００７】
（１）本発明は、初期鍵と初期ベクトルを入力し、内部状態を更新して、生成した鍵系列（乱数）を生成する初期化処理手段と、該生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する排他的論理和演算器と、該出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する選択関数器と、複数のレジスタで構成され、該選択した内部状態を格納するメッセージ認証用レジスタと、前記メッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新を前記選択関数器からの出力がなくなるまで実行し、その後、所定の固定ビットデータ列を入力して、さらに、前記各レジスタの格納データの更新を実行する更新手段と、該更新手段の処理終了後に、前記メッセージ認証用レジスタに格納されているデータをメッセージ認証子として出力させる出力制御手段と、該出力されたメッセージ認証子と前記排他的論理和演算器が出力する暗号文とを結合して出力する出力手段と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【０００８】
（２）本発明は、（１）のストリーム暗号の暗号化装置について、前記選択関数器は、前記入力した暗号文（数値データ）に対して、ｍｏｄｎ（ｎ；正の整数からなる定数）の演算処理を行い、その剰余をインデックスとして、前記複数のレジスタ内に格納された内部状態のうち、該インデックスに対応するレジスタの内部状態を選択することを特徴とするストリーム暗号の暗号化装置を提案している。
【０００９】
（３）本発明は、（１）または（２）のストリーム暗号の暗号化装置について、前記初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とするストリーム暗号の暗号化装置を提案している。
【００１０】
（４）本発明は、（１）または（２）に記載のストリーム暗号の暗号化装置により生成されるメッセージ認証子付き暗号文を復号するストリーム暗号の復号化装置であって、前記メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離する分離手段と、該分離したメッセージ認証子を格納する格納手段と、初期値と初期ベクトルを入力し、内部状態を更新して、生成した鍵系列（乱数）を生成する初期処理手段と、該生成した鍵系列と前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する排他的論理和演算器と、該分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する選択関数器と、複数のレジスタで構成され、該選択した内部状態を格納するメッセージ認証用レジスタと、前記メッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新を前記選択関数器からの出力がなくなるまで実行し、その後、所定の固定ビットデータ列を入力して、さらに、前記各レジスタの格納データの更新を実行する更新手段と、該更新手段の処理終了後に、前記メッセージ認証用レジスタに格納されているデータをメッセージ認証子として出力させる出力制御手段と、前記格納手段に格納されたメッセージ認証子と前記出力されたメッセージ認証子とを照合する照合手段と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【００１１】
（５）本発明は、（４）のストリーム暗号の復号化装置について、前記選択関数器は、前記入力した暗号文（数値データ）に対して、ｍｏｄｎ（ｎ；正の整数からなる定数）の演算処理を行い、その剰余をインデックスとして、前記複数のレジスタ内に格納された内部状態のうち、該インデックスに対応するレジスタの内部状態を選択することを特徴とするストリーム暗号の復号化装置を提案している。
【００１２】
（６）本発明は、（４）または（５）のストリーム暗号の復号化装置について、前記初期化処理手段が、フィードバックシフトレジスタとフィードバック演算器とから構成され、前記フィードバック演算器の入力ビット列と出力ビット列とを対応づけ、前記出力ビット列が異なるビット列となるよう長周期化する第１の演算テーブルを動的に生成する第１の演算テーブル生成手段を備え、該生成した前記第１の演算テーブルを用いて、初期化処理を行うことを特徴とするストリーム暗号の復号化装置を提案している。
【００１３】
（７）本発明は、コンピュータが、初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第１のステップと、該生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する第２のステップと、該出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第３のステップと、複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第３のステップからの出力がなくなるまで実行する第４のステップと、所定の固定ビットデータ列を入力して前記更新処理を実行する第５のステップと、前記メッセージ認証用レジスタからメッセージ認証子を出力する第６のステップと、前記第６のステップで出力されるメッセージ認証子と前記第２のステップで出力される暗号文とを結合して出力する第７のステップと、を実行することを特徴とするストリーム暗号の暗号化方法を提案している。
【００１４】
（８）本発明は、（７）に記載のストリーム暗号の暗号化方法により生成されるメッセージ認証子付き暗号文を復号するストリーム暗号の復号化方法であって、コンピュータが、前記メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離する第１のステップと、該分離したメッセージ認証子を格納する第２のステップと、初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第３のステップと、該生成した鍵系列と前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する第４のステップと、前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文を入力し、入力した該暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第５のステップと、複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第５のステップからの出力がなくなるまで実行する第６のステップと、所定の固定ビットデータ列を入力して前記更新処理を実行する第７のステップと、前記メッセージ認証用レジスタからメッセージ認証子を出力する第８のステップと、該出力されたメッセージ認証子と前記格納されたメッセージ認証子とを照合する第９のステップと、を実行することを特徴とするストリーム暗号の復号化方法を提案している。
【００１５】
（９）本発明は、コンピュータに、初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第１のステップと、該生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する第２のステップと、該出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第３のステップと、複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第３のステップからの出力がなくなるまで実行する第４のステップと、所定の固定ビットデータ列を入力して前記更新処理を実行する第５のステップと、前記メッセージ認証用レジスタからメッセージ認証子を出力する第６のステップと、前記第６のステップで出力されるメッセージ認証子と前記第２のステップで出力される暗号文とを結合して出力する第７のステップと、を実行させるためのプログラムを提案している。
【００１６】
（１０）本発明は、（７）に記載のストリーム暗号の暗号化方法により生成されるメッセージ認証子付き暗号文を復号するストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、コンピュータに、前記メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離する第１のステップと、該分離したメッセージ認証子を格納する第２のステップと、初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する第３のステップと、該生成した鍵系列と前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する第４のステップと、前記分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文を入力し、入力した該暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択する第５のステップと、複数のレジスタで構成されたメッセージ認証用レジスタにおいて、前記入力した内部状態に応じて、各レジスタの格納データの更新処理を、前記第５のステップからの出力がなくなるまで実行する第６のステップと、所定の固定ビットデータ列を入力して前記更新処理を実行する第７のステップと、前記メッセージ認証用レジスタからメッセージ認証子を出力する第８のステップと、該出力されたメッセージ認証子と前記格納されたメッセージ認証子とを照合する第９のステップと、を実行させるためのプログラムを提案している。
【発明の効果】
【００１７】
本発明によれば、ストリーム暗号処理部の構成を変更することなく、メッセージ認証を付与することができるという効果がある。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係るストリーム暗号の暗号化装置の構成を示す図である。
【図２】本発明の実施形態に係る初期処理部の構成を示す図である。
【図３】本発明の実施形態に係るストリーム暗号の暗号化装置の処理を示す図である。
【図４】本発明の実施形態に係るストリーム暗号の復号化装置の構成を示す図である。
【図５】本発明の実施形態に係るストリーム暗号の復号化装置の処理を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２０】
＜ストリーム暗号の暗号化装置の構成＞
図１に示すように、本実施形態に係るストリーム暗号の暗号化装置は、初期化処理部１００と、排他的論理和演算器２００と、選択関数器３００と、メッセージ認証子用レジスタ４００と、更新部５００と、出力制御部６００、出力部６５０とから構成されている。
【００２１】
初期化処理部１００は、初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成する。ここで、得られた内部状態は、内部に設けた複数のレジスタに格納される。また、複数のレジスタには、それぞれインデックスが付されている。なお、初期化処理部１００の詳細な構成については、後述する。排他的論理和演算器２００は、生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する。
【００２２】
選択関数器３００は、排他的論理和演算器２００から出力された暗号文を入力し、入力した暗号文に応じて、初期化処理部１００の内部に設けた複数のレジスタ内に格納された内部状態から１つの内部状態を選択して更新部５００に出力する。例えば、入力した暗号文（数値データ）に対して、ｍｏｄｎ（ｎ；正の整数からなる定数）の演算処理を行い、その剰余をインデックスとして、複数のレジスタ内に格納された内部状態のうち、そのインデックスに対応するレジスタの内部状態を選択する。なお、上記の演算処理は、暗号文を例えば、２進数や１０進数に変換して行なってもよい。
【００２３】
メッセージ認証子用レジスタ４００は、複数の単位レジスタから構成される。なお、メッセージ認証子用レジスタ４００のビットサイズは、要求されるセキュリティ要件に応じたビットサイズになるように、構成する単位レジスタの個数が決められている。
【００２４】
更新部５００は、メッセージ認証子用レジスタ４００において、選択関数器３００が出力した内部状態に応じて、各レジスタの格納データの更新を選択関数器３００からの出力がなくなるまで実行し、その後、所定の固定ビットデータ列を入力して、さらに、各レジスタの格納データの更新を実行する。例えば、選択関数器３００が出力した内部状態に応じた各レジスタの格納データの更新は、メッセージ認証用のレジスタを各３２ビットのレジスタ４つで構成した場合に、第１レジスタの値と、入力される内部状態の値を加算し、第２レジスタデータを第１レジスタに、第３レジスタのデータを第２レジスタに、第４レジスタのデータを第３レジスタに移動させ、空となった第４レジスタに、先ほど加算した値を入力するような処理によって行なわれる。なお、所定の固定ビットとは、すべてが１のデータ列、すべてが０のデータ列等でもよいし、初期ベクトルを用いてもよい。また、この際、更新処理は、少なくとも１回行なうが、回数を増やすことが好ましい。これらの更新処理は、暗号文の内容がすべてのデータに伝播するように、攪拌するものであり、これにより、第三者の攻撃に対して、耐性を高めることができる。
【００２５】
出力制御部６００は、更新手段の処理終了後に、前記メッセージ認証用レジスタに格納されているデータをメッセージ認証子として出力させる。出力部６５０は、出力されたメッセージ認証子と排他的論理和演算器が出力する暗号文とを結合して出力する。
＜初期化処理部の詳細な構成＞
【００２６】
図２に示すように、初期化処理部１００は、フィードバックシフトレジスタ１１０、１２０と、フィードバック演算器１３０、１４０、１５０と、クロックコントローラ１６０とから構成されている。
【００２７】
フィードバックシフトレジスタ１１０、１２０は、入力ビットが直前の状態の線形写像になっているシフトレジスタであり、その値を構成するビット列の一部の排他的論理和を入力ビットとするシフトレジスタである。
【００２８】
フィードバック演算器１３０、１４０、１５０は、フィードバックシフトレジスタ１１０、１２０から入力されるビット列に対し、係数を乗算してフィードバックするビット列を生成する。クロックコントローラ１６０は、クロックに同期して、フィードバック演算器１３０、１４０、１５０にビット列を出力する。
【００２９】
図２に示すような初期化処理部１００には、初期化処理部１００の一部を構成するフィードバック演算器の入力ビット列と出力ビット列とを対応づけ、出力ビット列が異なるビット列となるよう長周期化する演算テーブルが動的に生成される。この演算テーブルの処理について、以下、説明する。
【００３０】
いま、フィードバックシフトレジスタ１１０（ＬＦＳＲ−Ａ）は、１レジスタあたり３２ｂｉｔの５つのレジスタから構成され、フィードバック関数ｆＡ（ｘ）は、数１とする。ここで、α０は３２ｂｉｔから３２ｂｉｔへの変換を与える。
【００３１】
【数１】
2015114434.tif 000003
【００３２】
時刻ｔ≧０のときのフィードバックシフトレジスタ１１０（ＬＦＳＲ−Ａ）の値を、数２とすると、Ａｔ+５はフィードバック関数より数３で与えられる。
【００３３】
【数２】
2015114434.tif 000004
【００３４】
【数３】
2015114434.tif 000005
【００３５】
α０は、ＧＦ（２３２）の元で、数４の根とする。但し、βは、原始多項式数５の根である。
【００３６】
【数４】
2015114434.tif 000006
【００３７】
【数５】
2015114434.tif 000007
【００３８】
したがって、α０変換は、ＧＦ（２３２）内の乗算で表される。
つまり、数６の関係となる。
【００３９】
【数６】
2015114434.tif 000008
【００４０】
ここで、Ａを数７としたとき、α０を用いて、Ａは、数８で表される。
【００４１】
【数７】
2015114434.tif 000009
【００４２】
【数８】
2015114434.tif 000010
【００４３】
したがって、α０・Ａは、数９のように表され、ベクトル表記を用いると、数１０のように表される。
【００４４】
【数９】
2015114434.tif 000011
【００４５】
【数１０】
2015114434.tif 000012
【００４６】
ここで、ａ３→（a３β２４、a３β３、a３β１２、a３β７１）変換をテーブル化すると数１１のようになる。
【００４７】
【数１１】
2015114434.tif 000013
【００４８】
このテーブルを用いると、α０変換は次の数１２のように計算できる。
【００４９】
【数１２】
2015114434.tif 000014
【００５０】
このテーブルｋ２＿ａｌｐｈａ０＿ｍｕｌを実行時に動的に生成する。具体的には、その前のステップ、ａ３→（a３β２４、a３β３、a３β１２、a３β７１）をすべてのａ３に対して、実行時に計算することで、テーブルを生成する。なお、フィードバックシフトレジスタ１２０（ＬＦＳＲ−Ｂ）についても同様の処理となる。
【００５１】
＜ストリーム暗号の暗号化装置の処理＞
図３を用いて、本発明の実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
【００５２】
まず、初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成し（ステップＳ１１０）、生成した鍵系列と鍵系列のデータサイズに応じて分割した平文との排他的論理和演算を行なって、暗号文を出力する（ステップＳ１２０）。
【００５３】
次に、出力された暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択し（ステップＳ１３０）、複数のレジスタで構成されたメッセージ認証用レジスタにおいて、入力した内部状態に応じて、各レジスタの格納データの更新処理を、選択関数器３００からの出力がなくなるまで実行する（ステップＳ１４０）。
【００５４】
そして、所定の固定ビットデータ列を入力して更新処理を実行し（ステップＳ１５０）、メッセージ認証用レジスタからメッセージ認証子を出力する（ステップＳ１６０）。そして、このメッセージ認証子と暗号文とを結合して最終の出力とする（ステップＳ１７０）。
【００５５】
以上、説明したように、本実施形態によれば、ストリーム暗号処理部の構成を変更することなく、メッセージ認証を付与することができる。
【００５６】
＜ストリーム暗号の復号化装置の構成＞
図４に示すように、本実施形態に係るストリーム暗号の復号化装置は、初期化処理部１００と、排他的論理和演算器２１０と、選択関数器３００と、メッセージ認証子用レジスタ４００と、更新部５００と、出力制御部６００と、分離部７００と、格納部８００と、照合部９００とから構成されている。なお、ストリーム暗号の暗号化装置と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は、省略する。
【００５７】
分離部７００は、メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離する。排他的論理和演算器２１０は、初期化処理部１００が生成した鍵系列と分離部７００が分離した暗号文とを鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する。格納部８００は、分離部７００が分離したメッセージ認証子を格納する。照合部９００は、格納部８００に格納されたメッセージ認証子とメッセージ認証子用レジスタ４００から出力されたメッセージ認証子とを照合する。
【００５８】
＜ストリーム暗号の復号化装置の処理＞
図５を用いて、本発明の実施形態に係るストリーム暗号の復号化装置の処理について説明する。
【００５９】
まず、メッセージ認証子付き暗号文を暗号文とメッセージ認証子に分離し（ステップＳ２１０）、分離したメッセージ認証子を格納する（ステップＳ２２０）。
【００６０】
次いで、初期鍵と初期ベクトルを入力し、内部状態を更新して、鍵系列（乱数）を生成し（ステップＳ２３０）、生成した鍵系列と分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文との排他的論理和演算を行なって、平文を出力する（ステップＳ２４０）。
【００６１】
さらに、分離した暗号文を鍵系列のデータサイズに応じて分割した暗号文を入力し、入力した暗号文に応じて、複数のレジスタ内に格納された内部状態から１つの内部状態を選択し（ステップＳ２５０）、複数のレジスタで構成されたメッセージ認証用レジスタにおいて、入力した内部状態に応じて、各レジスタの格納データの更新処理を、選択関数器３００からの出力がなくなるまで実行（ステップＳ２６０）した後、所定の固定ビットデータ列を入力して、同様に、更新処理を実行する（ステップＳ２７０）。
【００６２】
そして、メッセージ認証用レジスタからメッセージ認証子を出力し（ステップＳ２８０）、出力されたメッセージ認証子と格納されたメッセージ認証子とを照合する（ステップＳ２９０）。
【００６３】
以上、説明したように、本実施形態によれば、ストリーム暗号処理部の構成を変更することなく、簡易に、メッセージ認証を実行することができる。
【００６４】
なお、ストリーム暗号の暗号化装置およびストリーム暗号の復号化装置の処理をコンピュータシステムが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを情報収集システムに読み込ませ、実行することによって本発明のストリーム暗号の暗号化装置およびストリーム暗号の復号化装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００６５】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００６６】
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００６７】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６８】
１００；初期化処理部
１１０；フィードバックシフトレジスタ
１２０；フィードバックシフトレジスタ
１３０；フィードバック演算器
１４０；フィードバック演算器
１５０；フィードバック演算器
１６０；クロックコントローラ
２００；排他的論理和演算器
２１０；排他的論理和演算器
３００；選択関数器
４００；メッセージ認証子用レジスタ
５００；更新部
６００；出力制御部
６５０；出力部
７００；分離部
８００；格納部
９００；照合部
【図１】
2015114434.tif 000015
【図２】
2015114434.tif 000016
【図３】
2015114434.tif 000017
【図４】
2015114434.tif 000018
【図５】
2015114434.tif 000019