(57)【要約】【課題】安全な認証付きストリーム暗号を実現する。【解決手段】線形シフトレジスタ１０１と、線形シフトレジスタからの値を非線形変換する非線形変換手段と、入力された平文と非線形変換手段からの出力との排他的論理和演算を行って、ストリーム暗号の暗号文を出力する排他的論理和演算手段１１０ｃ、１１０ｄと、出力されたストリーム暗号の暗号文を入力してＭＡＣ値を出力するレジスタ１０３ａ、１０３ｂと、を備える。【選択図】図１
2012039180.tif 000002
【特許請求の範囲】
【請求項１】
線形シフトレジスタと、
該線形シフトレジスタからの値を非線形変換する非線形変換手段と、
入力された平文と前記非線形変換手段からの出力との排他的論理和演算を行って、ストリーム暗号の暗号文を出力する排他的論理和演算手段と、
該出力されたストリーム暗号の暗号文を入力してＭＡＣ値を出力するレジスタと、
を備えたことを特徴とするストリーム暗号の暗号器。
【請求項２】
前記線形シフトレジスタが制御信号により、その構造が動的に変化する動的フィードバックシフトレジスタであることを特徴とする請求項１に記載のストリーム暗号の暗号器。
【請求項３】
前記レジスタの出力が前記非線形変換手段に入力されることを特徴とする請求項１または請求項２に記載のストリーム暗号の暗号器。
【請求項４】
前記レジスタが前記ＭＡＣ値の上位ビットを出力する第１のレジスタと前記ＭＡＣ値の下位ビットを出力する第２のレジスタとから構成されていることを特徴とする請求項１から請求項３に記載のストリーム暗号の暗号器。
【請求項５】
線形シフトレジスタと、
該線形シフトレジスタからの値を非線形変換する非線形変換手段と、
入力された暗号文と前記非線形変換手段からの出力との排他的論理和演算を行って、ストリーム暗号の復号文を出力する排他的論理和演算手段と、
該出力されたストリーム暗号の復号文を入力してＭＡＣ値を出力するレジスタと、
を備えたことを特徴とするストリーム暗号の復号器。
【請求項６】
前記線形シフトレジスタが制御信号により、その構造が動的に変化する動的フィードバックシフトレジスタであることを特徴とする請求項５に記載のストリーム暗号の復号器。
【請求項７】
前記レジスタの出力が前記非線形変換手段に入力されることを特徴とする請求項５または請求項６に記載のストリーム暗号の復号器。
【請求項８】
前記レジスタが前記ＭＡＣ値の上位ビットを出力する第１のレジスタと前記ＭＡＣ値の下位ビットを出力する第２のレジスタとから構成されていることを特徴とする請求項５から請求項７に記載のストリーム暗号の復号器。
【請求項９】
初期鍵、初期ベクトルを読み込む第１のステップと、
初期化処理を実施する第２のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第３のステップと、
該生成した鍵系列と平文を排他的論理和することにより暗号文を生成する第４のステップと、
暗号文をメッセージ認証子作成用メモリに逐次入力し、平文が終了した後も、平文をオールゼロとして空回しを実行する第５のステップと、
該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップと、
メッセージ認証子を暗号文に添付して送信する第７のステップと、
を備えたストリーム暗号の暗号方法。
【請求項１０】
初期鍵、初期ベクトルを読み込む第１のステップと、
初期化処理を実施する第２のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第３のステップと、
該生成した鍵系列と暗号文を排他的論理和することにより平文を生成する第４のステップと、
暗号文をメッセージ認証子作成用メモリに逐次入力し、暗号文が終了した後も、暗号文をオールゼロとして空回しを実行する第５のステップと、
該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップと、
受信したメッセージ認証子と生成したメッセージ認証子とを比較して両者が一致するか否かを検証する第７のステップと、
を備えたストリーム暗号の復号方法。
【請求項１１】
ストリーム暗号の暗号方法をコンピュータに実行させるためのプログラムであって、
初期鍵、初期ベクトルを読み込む第１のステップと、
初期化処理を実施する第２のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第３のステップと、
該生成した鍵系列と平文を排他的論理和することにより暗号文を生成する第４のステップと、
暗号文をメッセージ認証子作成用メモリに逐次入力し、平文が終了した後も、平文をオールゼロとして空回しを実行する第５のステップと、
該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップと、
メッセージ認証子を暗号文に添付して送信する第７のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１２】
ストリーム暗号の復号方法をコンピュータに実行させるためのプログラムであって、
初期鍵、初期ベクトルを読み込む第１のステップと、
初期化処理を実施する第２のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第３のステップと、
該生成した鍵系列と暗号文を排他的論理和することにより平文を生成する第４のステップと、
暗号文をメッセージ認証子作成用メモリに逐次入力し、暗号文が終了した後も、暗号文をオールゼロとして空回しを実行する第５のステップと、
該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップと、
受信したメッセージ認証子と生成したメッセージ認証子とを比較して両者が一致するか否かを検証する第７のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証付きストリーム暗号の暗号化あるいは復号化を実現するストリーム暗号の暗号器、ストリーム暗号の復号器、ストリーム暗号の暗号方法、ストリーム暗号の復号方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスに置いては、通信の秘匿を実現するため、暗号が利用される。暗号方式として最も一般的なものは、１つの鍵で暗号化および復号化を行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の２つに分けられる。
【０００３】
ここで、前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。一方、認証付き暗号という方式がある。これは、１つのアルゴリズムでメッセージ認証と暗号化を同時に実現しようとするアルゴリズムである（例えば、非特許文献１参照。）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｐｈｉｌｉｐ  Ｈａｗｋｅｓ, Ｃａｍｅｒｏｎ  ＭｃＤｏｎａｌｄ, Ｍｉｃｈａｅｌ  Ｐａｄｄｏｎ, Ｇｒｅｇｏｒｙ  Ｇ. Ｒｏｓｅ,   ａｎｄ Ｍｉｒｉａｍ  Ｗｉｇｇｅｒｓ ｄｅ  Ｖｒｉｅｓ, “Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  ＮＬＳｖ２ ,” Ｎｅｗ  Ｓｔｒｅａｍ  Ｃｉｐｈｅｒ  Ｄｅｓｉｇｎｓ,  Ｌｎｃｓ, Ｖｏｌ．４９８６、２００８．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、これまで、ストリーム暗号を認証付き暗号にするためには、アルゴリズムの再設計が必要であった。または、設計の段階から認証機能の組み込みを考慮する必要があった。さらには、認証付きストリーム暗号のほとんどすべてが攻撃により破られており、安全な認証付きストリーム暗号はほとんど無いという状況である。
【０００６】
そこで、本発明は、上述の課題に鑑みて、安全な認証付きストリーム暗号を実現するストリーム暗号の暗号器、ストリーム暗号の復号器、ストリーム暗号の暗号方法、ストリーム暗号の復号方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００８】
（１）本発明は、線形シフトレジスタ（例えば、図１の１０１に相当）と、該線形シフトレジスタからの値を非線形変換する非線形変換手段と、入力された平文と前記非線形変換手段からの出力との排他的論理和演算を行って、ストリーム暗号の暗号文を出力する排他的論理和演算手段（例えば、図１の１１０ｃ、１１０ｄに相当）と、該出力されたストリーム暗号の暗号文を入力してＭＡＣ値を出力するレジスタ（例えば、図１の１０３ａ、１０３ｂに相当）と、を備えたことを特徴とするストリーム暗号の暗号器を提案している。
【０００９】
この発明によれば、線形シフトレジスタは、入力データを一時記憶し、所定のタイミングでデータを順次シフトして出力する。非線形変換手段は、線形シフトレジスタからの値を非線形変換する。排他的論理和演算手段は、入力された平文と非線形変換手段からの出力との排他的論理和演算を行って、ストリーム暗号の暗号文を出力する。レジスタは、出力されたストリーム暗号の暗号文を入力してＭＡＣ値を出力する。したがって、上記の構成によれば、任意のデータをＭＡＣ値を伴った認証付きのストリーム暗号に暗号化することができる。
【００１０】
（２）本発明は、（１）のストリーム暗号の暗号器について、前記線形シフトレジスタが制御信号により、その構造が動的に変化する動的フィードバックシフトレジスタであることを特徴とするストリーム暗号の暗号器を提案している。
【００１１】
この発明によれば、線形シフトレジスタが制御信号により、その構造が動的に変化する動的フィードバックシフトレジスタである。したがって、動的フィードバックシフトレジスタを用いることにより、より安全に任意のデータをＭＡＣ値を伴った認証付きのストリーム暗号に暗号化することができる。
【００１２】
（３）本発明は、（１）または（２）のストリーム暗号の暗号器について、前記レジスタの出力が前記非線形変換手段に入力されることを特徴とするストリーム暗号の暗号器を提案している。
【００１３】
この発明によれば、レジスタの出力が非線形変換手段に入力される。したがって、ＭＡＣ値の安全性をも高めることができるため、認証の信頼度が向上する。
【００１４】
（４）本発明は、（１）から（３）のストリーム暗号の暗号器について、前記レジスタが前記ＭＡＣ値の上位ビットを出力する第１のレジスタと前記ＭＡＣ値の下位ビットを出力する第２のレジスタとから構成されていることを特徴とするストリーム暗号の暗号器を提案している。
【００１５】
この発明によれば、レジスタがＭＡＣ値の上位ビットを出力する第１のレジスタとＭＡＣ値の下位ビットを出力する第２のレジスタとから構成されている。つまり、ＭＡＣ値を出力するレジスタを２つ設け、さらに、その出力を非線形変換手段に入力することにより、ＭＡＣ値の安全性を高め、認証の信頼度を向上させることができる。
【００１６】
（５）本発明は、線形シフトレジスタ（例えば、図３の２０１に相当）と、該線形シフトレジスタからの値を非線形変換する非線形変換手段と、入力された暗号文と前記非線形変換手段からの出力との排他的論理和演算を行って、ストリーム暗号の復号文を出力する排他的論理和演算手段（例えば、図３の２１０ｃ、２１０ｄに相当）と、該出力されたストリーム暗号の復号文を入力してＭＡＣ値を出力するレジスタ（例えば、図３の２０３ａ、２０３ｂに相当）と、を備えたことを特徴とするストリーム暗号の復号器を提案している。
【００１７】
この発明によれば、線形シフトレジスタは、入力データを一時記憶し、所定のタイミングでデータを順次シフトして出力する。非線形変換手段は、線形シフトレジスタからの値を非線形変換する。排他的論理和演算手段は、入力されたストリーム暗号の暗号文と非線形変換手段からの出力との排他的論理和演算を行って、平文を出力する。レジスタは、出力された平文を入力してＭＡＣ値を出力する。したがって、上記の構成によれば、任意のデータをＭＡＣ値を伴った認証付きの平文を得ることができる。
【００１８】
（６）本発明は、（５）のストリーム暗号の復号器について、前記線形シフトレジスタが制御信号により、その構造が動的に変化する動的フィードバックシフトレジスタであることを特徴とするストリーム暗号の復号器を提案している。
【００１９】
この発明によれば、線形シフトレジスタが制御信号により、その構造が動的に変化する動的フィードバックシフトレジスタである。したがって、動的フィードバックシフトレジスタを用いることにより、より安全にストリーム暗号の暗号文からＭＡＣ値を伴った認証付きの平文を得ることができる。
【００２０】
（７）本発明は、（５）または（６）のストリーム暗号の復号器について、前記レジスタの出力が前記非線形変換手段を入力することを特徴とするストリーム暗号の復号器を提案している。
【００２１】
この発明によれば、レジスタの出力が非線形変換手段に入力される。したがって、ＭＡＣ値の安全性をも高めることができるため、認証の信頼度が向上する。
【００２２】
（８）本発明は、（５）から（７）のストリーム暗号の復号器について、前記レジスタが前記ＭＡＣ値の上位ビットを出力する第１のレジスタと前記ＭＡＣ値の下位ビットを出力する第２のレジスタとから構成されていることを特徴とするストリーム暗号の復号器を提案している。
【００２３】
この発明によれば、レジスタがＭＡＣ値の上位ビットを出力する第１のレジスタとＭＡＣ値の下位ビットを出力する第２のレジスタとから構成されている。つまり、ＭＡＣ値を出力するレジスタを２つ設け、さらに、その出力を非線形変換手段に入力することにより、ＭＡＣ値の安全性を高め、認証の信頼度を向上させることができる。
【００２４】
（９）本発明は、初期鍵、初期ベクトルを読み込む第１のステップ（例えば、図２のステップＳ１０１に相当）と、初期化処理を実施する第２のステップ（例えば、図２のステップＳ１０２に相当）と、鍵系列生成処理を実行し、鍵系列を生成する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該生成した鍵系列と平文を排他的論理和することにより暗号文を生成する第４のステップ（例えば、図２のステップＳ１０４に相当）と、暗号文をメッセージ認証子作成用メモリに逐次入力し、平文が終了した後も、平文をオールゼロとして空回しを実行する第５のステップ（例えば、図２のステップＳ１０５に相当）と、該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップ（例えば、図２のステップＳ１０６に相当）と、メッセージ認証子を暗号文に添付して送信する第７のステップ（例えば、図２のステップＳ１０７に相当）と、を備えたストリーム暗号の暗号方法を提案している。
【００２５】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次に、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と平文を排他的論理和することにより暗号文を生成する。暗号文をメッセージ認証子作成用メモリに逐次入力し、平文が終了した後も、平文をオールゼロとして空回しを実行し、空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とし、メッセージ認証子を暗号文に添付して送信する。したがって、任意のデータをＭＡＣ値を伴った認証付きのストリーム暗号に安全に暗号化することができる。
【００２６】
（１０）本発明は、初期鍵、初期ベクトルを読み込む第１のステップ（例えば、図４のステップＳ２０１に相当）と、初期化処理を実施する第２のステップ（例えば、図４のステップＳ２０２に相当）と、鍵系列生成処理を実行し、鍵系列を生成する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該生成した鍵系列と暗号文を排他的論理和することにより平文を生成する第４のステップ（例えば、図４のステップＳ２０４に相当）と、暗号文をメッセージ認証子作成用メモリに逐次入力し、暗号文が終了した後も、暗号文をオールゼロとして空回しを実行する第５のステップ（例えば、図４のステップＳ２０５に相当）と、該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップ（例えば、図４のステップＳ２０６に相当）と、受信したメッセージ認証子と生成したメッセージ認証子とを比較して両者が一致するか否かを検証する第７のステップ（例えば、図４のステップＳ２０７に相当）と、を備えたストリーム暗号の復号方法を提案している。
【００２７】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次に、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と暗号文を排他的論理和することにより平文を生成する。暗号文をメッセージ認証子作成用メモリに逐次入力し、暗号文が終了した後も、暗号文をオールゼロとして空回しを実行し、空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする。そして、受信したメッセージ認証子と生成したメッセージ認証子とを比較して両者が一致するか否かを検証する。したがって、ＭＡＣ値を伴った認証付きのストリーム暗号の暗号文を安全に復号化し、かつ、その認証も行うことができる。
【００２８】
（１１）本発明は、ストリーム暗号の暗号方法をコンピュータに実行させるためのプログラムであって、初期鍵、初期ベクトルを読み込む第１のステップ（例えば、図２のステップＳ１０１に相当）と、初期化処理を実施する第２のステップ（例えば、図２のステップＳ１０２に相当）と、鍵系列生成処理を実行し、鍵系列を生成する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該生成した鍵系列と平文を排他的論理和することにより暗号文を生成する第４のステップ（例えば、図２のステップＳ１０４に相当）と、暗号文をメッセージ認証子作成用メモリに逐次入力し、平文が終了した後も、平文をオールゼロとして空回しを実行する第５のステップ（例えば、図２のステップＳ１０５に相当）と、該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップ（例えば、図２のステップＳ１０６に相当）と、メッセージ認証子を暗号文に添付して送信する第７のステップ（例えば、図２のステップＳ１０７に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００２９】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次に、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と平文を排他的論理和することにより暗号文を生成する。暗号文をメッセージ認証子作成用メモリに逐次入力し、平文が終了した後も、平文をオールゼロとして空回しを実行し、空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とし、メッセージ認証子を暗号文に添付して送信する。したがって、任意のデータをＭＡＣ値を伴った認証付きのストリーム暗号に安全に暗号化することができる。
【００３０】
（１２）本発明は、ストリーム暗号の復号方法をコンピュータに実行させるためのプログラムであって、初期鍵、初期ベクトルを読み込む第１のステップ（例えば、図４のステップＳ２０１に相当）と、初期化処理を実施する第２のステップ（例えば、図４のステップＳ２０２に相当）と、鍵系列生成処理を実行し、鍵系列を生成する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該生成した鍵系列と暗号文を排他的論理和することにより平文を生成する第４のステップ（例えば、図４のステップＳ２０４に相当）と、暗号文をメッセージ認証子作成用メモリに逐次入力し、暗号文が終了した後も、暗号文をオールゼロとして空回しを実行する第５のステップ（例えば、図４のステップＳ２０５に相当）と、該空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第６のステップ（例えば、図４のステップＳ２０６に相当）と、受信したメッセージ認証子と生成したメッセージ認証子とを比較して両者が一致するか否かを検証する第７のステップ（例えば、図４のステップＳ２０７に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３１】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次に、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と暗号文を排他的論理和することにより平文を生成する。暗号文をメッセージ認証子作成用メモリに逐次入力し、暗号文が終了した後も、暗号文をオールゼロとして空回しを実行し、空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする。そして、受信したメッセージ認証子と生成したメッセージ認証子とを比較して両者が一致するか否かを検証する。したがって、ＭＡＣ値を伴った認証付きのストリーム暗号の暗号文を安全に復号化し、かつ、その認証も行うことができる。
【発明の効果】
【００３２】
本発明によれば、安全な認証付きストリーム暗号を実現できるという効果がある。また、従来の方式と比べ安全性が向上しながらより高速な処理を実現できるという効果がある。
【図面の簡単な説明】
【００３３】
【図１】本発明の第１の実施形態に係るストリーム暗号の暗号器の構成を示す図である。
【図２】本発明の第１の実施形態に係るストリーム暗号の暗号器の処理を示す図である。
【図３】本発明の第２の実施形態に係るストリーム暗号の復号器の構成を示す図である。
【図４】本発明の第２の実施形態に係るストリーム暗号の復号器の処理を示す図である。
【発明を実施するための形態】
【００３４】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３５】
＜第１の実施形態＞
図１および図２を用いて、本発明の第１の実施形態に係るストリーム暗号の暗号器について説明する。
【００３６】
＜ストリーム暗号の暗号器の構成＞
図１を用いて、本実施形態に係るストリーム暗号の暗号器の構成について説明する。本実施形態に係るストリーム暗号の暗号器は、図１に示すように、動的フィードバックシフトレジスタ１０１と、動的フィードバック制御部１０２と、レジスタ１０３ａおよび１０３ｂと、加算器１０４ａ〜１０４ｆと、内部メモリ（Ｌ１、Ｌ２、Ｒ１、Ｒ２）１０５〜１０８と、Ｓｕｂ１０９ａおよび１０９ｂと、排他的論理和演算器１１０ａ〜１１０ｄとから構成されている。
【００３７】
動的フィードバックシフトレジスタ１０１は、動的フィードバック制御部１０２の制御により動的に構造が変化する線形シフトレジスタである。したがって、より安全に暗号化処理および認証子の導出を行うことができる。
【００３８】
レジスタ１０３ａおよび１０３ｂは、認証子としてのＭＡＣ値を出力する素子である。本実施形態では、レジスタ１０３ａがＭＡＣ値の上位ビットを出力し、レジスタ１０３ｂがＭＡＣ値の下位ビットを出力する。したがって、２つのレジスタの値を結合することによって、ＭＡＣ値が得られる。
【００３９】
加算器１０４ａは、動的フィードバックシフトレジスタ１０１と内部メモリＬ２と排他的論理和演算器１１０ａに接続されており、内部メモリＬ２の値と動的フィードバックシフトレジスタ１０１からの出力値とを加算して、排他的論理和演算器１１０ａに出力する。
【００４０】
加算器１０４ｂは、動的フィードバックシフトレジスタ１０１と内部メモリＬ２と加算器１０４ｅに接続されており、内部メモリＬ２の値と動的フィードバックシフトレジスタ１０１からの出力値とを加算して、加算器１０４ｅに出力する。
【００４１】
加算器１０４ｃは、動的フィードバックシフトレジスタ１０１と内部メモリＲ２と加算器１０４ｆに接続されており、内部メモリＲ２の値と動的フィードバックシフトレジスタ１０１からの出力値とを加算して、加算器１０４ｆに出力する。
【００４２】
加算器１０４ｄは、動的フィードバックシフトレジスタ１０１と内部メモリＲ２と排他的論理和演算器１１０ｂに接続されており、内部メモリＲ２の値と動的フィードバックシフトレジスタ１０１からの出力値とを加算して、排他的論理和演算器１１０ｂに出力する。
【００４３】
加算器１０４ｅは、加算器１０４ｂとレジスタ１０３ａと内部メモリＲ１とに接続されており、加算器１０４ｂの値とレジスタ１０３ａの値とを加算して、内部メモリＲ１に出力する。
【００４４】
加算器１０４ｆは、加算器１０４ｃとレジスタ１０３ｂと内部メモリＬ１とに接続されており、加算器１０４ｃの値とレジスタ１０３ｂの値とを加算して、内部メモリＬ１に出力する。
【００４５】
内部メモリ１０５は、加算器１０４ｆの出力値を保存し、内部メモリ１０６は、内部メモリ１０５から取り出したデータをＳｕｂ１０９ａで非線形置換した値を格納する。また、内部メモリ１０７は、加算器１０４ｅの出力値を保存し、内部メモリ１０８は、内部メモリ１０７から取り出したデータをＳｕｂ１０９ｂで非線形置換した値を格納する。
【００４６】
排他的論理和演算器１１０ａは、加算器１０４ａの出力値と内部メモリＬ１の値との排他的論理和演算を行って、演算結果を排他的論理和演算器１１０ｃに出力する。排他的論理和演算器１１０ｂは、加算器１０４ｄの出力値と内部メモリＲ１の値との排他的論理和演算を行って、演算結果を排他的論理和演算器１１０ｄに出力する。
【００４７】
排他的論理和演算器１１０ｃは、排他的論理和演算器１１０ａの演算結果と入力された平文データとの排他的論理和演算を行って、暗号文を出力する。排他的論理和演算器１１０ｄは、排他的論理和演算器１１０ｂの演算結果と入力された平文データとの排他的論理和演算を行って、暗号文を出力する。
【００４８】
＜ストリーム暗号の暗号器の処理＞
図２を用いて、本実施形態に係るストリーム暗号の暗号器の処理について説明する。
【００４９】
まず、初期鍵、初期ベクトルを読み込んで（ステップＳ１０１）、初期化処理を実施する（ステップＳ１０２）。次に、鍵系列生成処理を実行し、鍵系列を生成し（ステップＳ１０３）。生成した鍵系列と平文を排他的論理和することにより暗号文を生成する（ステップＳ１０４）。
【００５０】
さらに、暗号文をメッセージ認証子作成用メモリに逐次入力し、平文が終了した後も、平文をオールゼロとして空回しを実行し（ステップＳ１０５）、空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする（ステップＳ１０６）。そして、メッセージ認証子を暗号文に添付して送信する（ステップＳ１０７）。
【００５１】
以上、説明したように、本実施形態によれば、安全な認証付きストリーム暗号を実現できる。また、従来の方式と比べ安全性が向上しながらより高速な処理を実現できる。
【００５２】
＜第２の実施形態＞
図３および図４を用いて、本発明の第２の実施形態に係るストリーム暗号の復号器について説明する。
【００５３】
＜ストリーム暗号の復号器の構成＞
図３を用いて、本実施形態に係るストリーム暗号の復号器の構成について説明する。本実施形態に係るストリーム暗号の復号器は、図３に示すように、動的フィードバックシフトレジスタ２０１と、動的フィードバック制御部２０２と、レジスタ２０３ａおよび２０３ｂと、加算器２０４ａ〜２０４ｆと、内部メモリ（Ｌ１、Ｌ２、Ｒ１、Ｒ２）２０５〜２０８と、Ｓｕｂ２０９ａおよび２０９ｂと、排他的論理和演算器２１０ａ〜２１０ｄとから構成されている。
【００５４】
動的フィードバックシフトレジスタ２０１は、動的フィードバック制御部２０２の制御により動的に構造が変化する線形シフトレジスタである。したがって、より安全に復号化処理および認証子の導出を行うことができる。
【００５５】
レジスタ２０３ａおよび２０３ｂは、認証子としてのＭＡＣ値を出力する素子である。本実施形態では、レジスタ２０３ａがＭＡＣ値の上位ビットを出力し、レジスタ２０３ｂがＭＡＣ値の下位ビットを出力する。したがって、２つのレジスタの値を結合することによって、ＭＡＣ値が得られる。
【００５６】
加算器２０４ａは、動的フィードバックシフトレジスタ２０１と内部メモリＬ２と排他的論理和演算器２１０ａに接続されており、内部メモリＬ２の値と動的フィードバックシフトレジスタ２０１からの出力値とを加算して、排他的論理和演算器２１０ａに出力する。
【００５７】
加算器２０４ｂは、動的フィードバックシフトレジスタ２０１と内部メモリＬ２と加算器２０４ｅに接続されており、内部メモリＬ２の値と動的フィードバックシフトレジスタ２０１からの出力値とを加算して、加算器２０４ｅに出力する。
【００５８】
加算器２０４ｃは、動的フィードバックシフトレジスタ２０１と内部メモリＲ２と加算器２０４ｆに接続されており、内部メモリＲ２の値と動的フィードバックシフトレジスタ２０１からの出力値とを加算して、加算器２０４ｆに出力する。
【００５９】
加算器２０４ｄは、動的フィードバックシフトレジスタ２０１と内部メモリＲ２と排他的論理和演算器２１０ｂに接続されており、内部メモリＲ２の値と動的フィードバックシフトレジスタ２０１からの出力値とを加算して、排他的論理和演算器２１０ｂに出力する。
【００６０】
加算器２０４ｅは、加算器２０４ｂとレジスタ２０３ａと内部メモリＲ１とに接続されており、加算器２０４ｂの値とレジスタ２０３ａの値とを加算して、内部メモリＲ１に出力する。
【００６１】
加算器２０４ｆは、加算器２０４ｃとレジスタ２０３ｂと内部メモリＬ１とに接続されており、加算器２０４ｃの値とレジスタ２０３ｂの値とを加算して、内部メモリＬ１に出力する。
【００６２】
内部メモリ２０５は、加算器２０４ｆの出力値を保存し、内部メモリ２０６は、内部メモリ２０５から取り出したデータをＳｕｂ２０９ａで非線形置換した値を格納する。また、内部メモリ２０７は、加算器２０４ｅの出力値を保存し、内部メモリ２０８は、内部メモリ２０７から取り出したデータをＳｕｂ２０９ｂで非線形置換した値を格納する。
【００６３】
排他的論理和演算器２１０ａは、加算器２０４ａの出力値と内部メモリＬ１の値との排他的論理和演算を行って、演算結果を排他的論理和演算器２１０ｃに出力する。排他的論理和演算器２１０ｂは、加算器２０４ｄの出力値と内部メモリＲ１の値との排他的論理和演算を行って、演算結果を排他的論理和演算器２１０ｄに出力する。
【００６４】
排他的論理和演算器２１０ｃは、排他的論理和演算器２１０ａの演算結果と入力された暗号文データとの排他的論理和演算を行って、平文を出力する。排他的論理和演算器２１０ｄは、排他的論理和演算器２１０ｂの演算結果と入力された暗号文データとの排他的論理和演算を行って、平文を出力する。
【００６５】
＜ストリーム暗号の復号器の処理＞
図４を用いて、本実施形態に係るストリーム暗号の復号器の処理について説明する。
【００６６】
まず、初期鍵、初期ベクトルを読み込んで（ステップＳ２０１）、初期化処理を実施する（ステップＳ２０２）。次に、鍵系列生成処理を実行し、鍵系列を生成し（ステップＳ２０３）。生成した鍵系列と暗号文を排他的論理和することにより平文を生成する（ステップＳ２０４）。
【００６７】
さらに、暗号文をメッセージ認証子作成用メモリに逐次入力し、暗号文が終了した後も、暗号文をオールゼロとして空回しを実行し（ステップＳ２０５）、空回し終了後の左右のメッセージ認証子用メモリの値を結合し、メッセージ認証子とする（ステップＳ２０６）。そして、受信したメッセージ認証子と生成したメッセージ認証子とを比較して両者が一致するか否かを検証する（ステップＳ２０７）。
【００６８】
以上、説明したように、本実施形態によれば、ＭＡＣ値を伴った認証付きのストリーム暗号の暗号文を安全に復号化し、かつ、その認証も行うことができる。また、従来の方式と比べ安全性が向上しながらより高速な処理を実現できる。
【００６９】
なお、ストリーム暗号の暗号器あるいはストリーム暗号の復号器の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の暗号器あるいはストリーム暗号の復号器に読み込ませ、実行することによって本発明のストリーム暗号の暗号器あるいはストリーム暗号の復号器を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００７０】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００７１】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７２】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００７３】
１０１、２０１；動的フィードバックシフトレジスタ
１０２、２０２；動的フィードバック制御部
１０３ａ、１０３ｂ、２０３ａ、２０３ｂ；レジスタ
１０４ａ〜１０４ｆ、２０４ａ〜２０４ｆ；加算器
１０５〜１０８、２０５〜２０８；内部メモリ（Ｌ１、Ｌ２、Ｒ１、Ｒ２）
１０９ａ、１０９ｂ、２０９ａ、２０９ｂ；Ｓｕｂ（非線形関数）
１１０ａ〜１１０ｄ、２１０ａ〜２１０ｄ；排他的論理和演算器
【図１】
2012039180.tif 000003
【図２】
2012039180.tif 000004
【図３】
2012039180.tif 000005
【図４】
2012039180.tif 000006