(57)【特許請求の範囲】
【請求項１】
平文を入力し、暗号文を出力するとともに、該暗号文を入力にフィードバックする自己同期型ストリーム暗号の暗号化装置であって、
攪拌関数部により結合されたｎ個（ｎは正の整数）のレジスタをｍ−１段（ｍは正の整数）配列して、データ入力端に配置される攪拌関数部に前記暗号文と拡大鍵生成部において生成された拡大鍵との排他的論理和の演算結果を入力するとともに、ｍ段目にｎ個のレジスタを配置し、該ｎ個のレジスタを前記攪拌関数部と非線形関数部とで結合し、データ入力端に配置される攪拌関数部に前記暗号文と前記拡大鍵との排他的論理和の演算結果と前記拡大鍵とを前記非線形関数部に入力した出力結果を入力し、前記ｍ段目に配列されたレジスタからのすべての出力値をフィルタ関数部によりフィルタ関数処理した結果と入力した平文との排他的論理和演算を行って暗号文を生成することを特徴とする自己同期型ストリーム暗号の暗号化装置。
【請求項２】
暗号文を入力し、平文を出力するとともに、該平文を入力にフィードバックする自己同期型ストリーム暗号の復号化装置であって、
攪拌関数部により結合されたｎ個（ｎは正の整数）のレジスタをｍ−１段（ｍは正の整数）配列して、データ入力端に配置される攪拌関数部に前記平文と拡大鍵生成部において生成された拡大鍵との排他的論理和の演算結果を入力するとともに、ｍ段目にｎ個のレジスタを配置し、該ｎ個のレジスタを前記攪拌関数部と非線形関数部とで結合し、データ入力端に配置される攪拌関数部に前記平文と前記拡大鍵との排他的論理和の演算結果と前記拡大鍵とを前記非線形関数部に入力した出力結果を入力し、前記ｍ段目に配列されたレジスタからのすべての出力値をフィルタ関数部によりフィルタ関数処理した結果と入力した暗号文との排他的論理和演算を行って平文を生成することを特徴とする自己同期型ストリーム暗号の復号化装置。
【請求項３】
前記請求項１に記載の自己同期型ストリーム暗号の暗号化装置と前記請求項２に記載の自己同期型ストリーム暗号の復号化装置とを備えて構成されることを特徴とする自己同期型ストリーム暗号システム。
【請求項４】
平文を入力し、暗号文を出力するとともに、該暗号文を入力にフィードバックして最終的な暗号文をメッセージ認証子として出力するＭＡＣ生成装置であって、
攪拌関数部により結合されたｎ個（ｎは正の整数）のレジスタをｍ−１段（ｍは正の整数）配列して、データ入力端に配置される攪拌関数部に前記暗号文と拡大鍵生成部において生成された拡大鍵との排他的論理和の演算結果を入力するとともに、ｍ段目にｎ個のレジスタを配置し、該ｎ個のレジスタを前記攪拌関数部と非線形関数部とで結合し、データ入力端に配置される攪拌関数部に前記暗号文と前記拡大鍵との排他的論理和の演算結果と前記拡大鍵とを前記非線形関数部に入力した出力結果を入力し、前記ｍ段目に配列されたレジスタからのすべての出力値をフィルタ関数部によりフィルタ関数処理した結果と入力した平文との排他的論理和演算を行って最終的な暗号文をメッセージ認証子として生成することを特徴とするＭＡＣ生成装置。
【請求項５】
請求項１に記載の自己同期型ストリーム暗号の暗号化装置を用いた自己同期型ストリーム暗号の暗号化方法であって、
拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップと、
前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップと、
前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、暗号文を生成する第３のステップと、
各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された暗号文を入力する第４のステップと、
前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、
を備えたことを特徴とする自己同期型ストリーム暗号の暗号化方法。
【請求項６】
請求項２に記載の自己同期型ストリーム暗号の復号化装置を用いた自己同期型ストリーム暗号の復号化方法であって、
拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットする第１のステップと、
前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップと、
前記第２のステップで生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する第３のステップと、
各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された平文を入力する第４のステップと、
前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、
を備えたことを特徴とする自己同期型ストリーム暗号の復号化方法。
【請求項７】
請求項４に記載のＭＡＣ生成装置を用いたＭＡＣ生成方法であって、
拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップと、
前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップと、
前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、メッセージ認証子を生成する第３のステップと、
各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成されたメッセージ認証子を入力する第４のステップと、
すべての平文を入力したか否かを判断する第５のステップと、
前記第５のステップにおいて、すべての平文を入力したと判断したときに、メッセージ認証子を出力する第６のステップと、
を備えたことを特徴とするＭＡＣ生成方法。
【請求項８】
請求項１に記載の自己同期型ストリーム暗号の暗号化装置を用いた自己同期型ストリーム暗号の暗号化方法をコンピュータに実行させるプログラムであって、
拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップと、
前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップと、
前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、暗号文を生成する第３のステップと、
各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された暗号文を入力する第４のステップと、
前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、
をコンピュータに実行させるプログラム。
【請求項９】
請求項２に記載の自己同期型ストリーム暗号の復号化装置を用いた自己同期型ストリーム暗号の復号化方法をコンピュータに実行させるプログラムであって、
拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットする第１のステップと、
前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップと、
前記第２のステップで生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する第３のステップと、
各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された平文を入力する第４のステップと、
前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、
をコンピュータに実行させるプログラム。
【請求項１０】
請求項４に記載のＭＡＣ生成装置を用いたＭＡＣ生成方法をコンピュータに実行させるプログラムであって、
拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップと、
前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップと、
前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、メッセージ認証子を生成する第３のステップと、
各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成されたメッセージ認証子を入力する第４のステップと、
すべての平文を入力したか否かを判断する第５のステップと、
前記第５のステップにおいて、すべての平文を入力したと判断したときに、メッセージ認証子を出力する第６のステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自己同期型ストリーム暗号の暗号化装置、復号化装置、自己同期型ストリーム暗号システム、ＭＡＣ生成装置、暗号化方法、復号化方法、ＭＡＣ生成方法およびプログラムに関する。
【背景技術】
【０００２】
近年、インターネットの目覚しい普及により、コンピュータを利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、その通信内容を秘匿化するために暗号が利用されている。ここで、暗号方式としては、１つの鍵で暗号化と復号化とを行う共通鍵暗号方式が一般的であるが、この共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式とに大別される。
【０００３】
ストリーム暗号方式は、ブロック暗号方式よりも高速な処理が期待できるため、例えば、映画等の大容量データを伝送するための方式として、近年、注目を浴びているが、ストリーム暗号方式の場合には、暗号処理と復号処理との同期をとらなければならないという問題があった。そのため、一定サイズ以上の誤りなく受信した暗号文を利用して、同期を自動的に回復する自己同期型のストリーム暗号装置が提案されている（例えば、特許文献１参照。）。
【特許文献１】特開２００１−１６１９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、従来の方法では、自動的に同期を回復できるものの、処理単位が１ビットずつであったために、処理に時間がかかるといった問題があった。そこで、本発明は、上述の課題に鑑みてなされたものであり、自動的な同期回復処理を高速に実行することができる自己同期型ストリーム暗号の暗号化装置、復号化装置、自己同期型ストリーム暗号システム、ＭＡＣ生成装置、暗号化方法、復号化方法、ＭＡＣ生成方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の事項を提案している。
（１）本発明は、平文を入力し、暗号文を出力するとともに、該暗号文を入力にフィードバックする自己同期型ストリーム暗号の暗号化装置であって、攪拌関数部（例えば、図１の攪拌関数１ａ、１ｂ、１ｃ、１ｄ・・・１ｎに相当）により結合されたｎ個（ｎは正の整数）のレジスタをｍ−１段（ｍは正の整数）配列して、データ入力端に配置される攪拌関数部に前記暗号文と拡大鍵生成部において生成された拡大鍵との排他的論理和の演算結果を入力するとともに、ｍ段目にｎ個のレジスタを配置し、該ｎ個のレジスタを前記攪拌関数部と非線形関数部（例えば、図１の非線形関数２ａ、２ｂ、２ｃ、２ｄ・・・２ｎに相当）とで結合し、データ入力端に配置される攪拌関数部に前記暗号文と前記拡大鍵との排他的論理和の演算結果と前記拡大鍵とを前記非線形関数部に入力した出力結果を入力し、前記ｍ段目に配列されたレジスタからのすべての出力値をフィルタ関数部（例えば、図１のフィルタ関数３に相当）によりフィルタ関数処理した結果と入力した平文との排他的論理和演算を行って暗号文を生成することを特徴とする自己同期型ストリーム暗号の暗号化装置を提案している。
【０００６】
この発明によれば、生成した暗号文を入力側にフィードバックする構成となっているため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【０００７】
（２）本発明は、暗号文を入力し、平文を出力するとともに、該平文を入力にフィードバックする自己同期型ストリーム暗号の復号化装置であって、攪拌関数部（例えば、図３の攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎに相当）により結合されたｎ個（ｎは正の整数）のレジスタをｍ−１段（ｍは正の整数）配列して、データ入力端に配置される攪拌関数部に前記平文と拡大鍵生成部において生成された拡大鍵との排他的論理和の演算結果を入力するとともに、ｍ段目にｎ個のレジスタを配置し、該ｎ個のレジスタを前記攪拌関数部と非線形関数部（例えば、図３の非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎに相当）とで結合し、データ入力端に配置される攪拌関数部に前記平文と前記拡大鍵との排他的論理和の演算結果と前記拡大鍵とを前記非線形関数部に入力した出力結果を入力し、前記ｍ段目に配列されたレジスタからのすべての出力値をフィルタ関数部（例えば、図３のフィルタ関数３に相当）によりフィルタ関数処理した結果と入力した暗号文との排他的論理和演算を行って平文を生成することを特徴とする自己同期型ストリーム暗号の復号化装置を提案している。
【０００８】
この発明によれば、生成した平文を入力側にフィードバックする構成となっているため、仮に、同期が乱れた場合であっても、所定の暗号文を受信できれば、自動的に同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【０００９】
（３）本発明は、前記（１）に記載の自己同期型ストリーム暗号の暗号化装置と前記（２）に記載の自己同期型ストリーム暗号の復号化装置とを備えて構成されることを特徴とする自己同期型ストリーム暗号システムを提案している。
【００１０】
この発明によれば、（１）に記載の自己同期型ストリーム暗号の暗号化装置と前記（２）に記載の自己同期型ストリーム暗号の復号化装置とを組み合わせることにより、同期を自動的に回復することができる自己同期型ストリーム暗号システムを構築することができる。
【００１１】
（４）本発明は、平文を入力し、暗号文を出力するとともに、該暗号文を入力にフィードバックして最終的な暗号文をメッセージ認証子として出力するＭＡＣ生成装置であって、攪拌関数部により結合されたｎ個（ｎは正の整数）のレジスタをｍ−１段（ｍは正の整数）配列して、データ入力端に配置される攪拌関数部（例えば、図５の攪拌関数１ａ、１ｂ、１ｃ、１ｄ・・・１ｎに相当）に前記暗号文と拡大鍵生成部において生成された拡大鍵との排他的論理和の演算結果を入力するとともに、ｍ段目にｎ個のレジスタを配置し、該ｎ個のレジスタを前記攪拌関数部と非線形関数部（例えば、図５の非線形関数２ａ、２ｂ、２ｃ、２ｄ・・・２ｎに相当）とで結合し、データ入力端に配置される攪拌関数部に前記暗号文と前記拡大鍵との排他的論理和の演算結果と前記拡大鍵とを前記非線形関数部に入力した出力結果を入力し、前記ｍ段目に配列されたレジスタからのすべての出力値をフィルタ関数部（例えば、図５のフィルタ関数３に相当）によりフィルタ関数処理した結果と入力した平文との排他的論理和演算を行って最終的な暗号文をメッセージ認証子として生成することを特徴とするＭＡＣ生成装置を提案している。
【００１２】
この発明によれば、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００１３】
（５）本発明は、（１）に記載の自己同期型ストリーム暗号の暗号化装置を用いた自己同期型ストリーム暗号の暗号化方法であって、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップ（例えば、図２のステップＳ１０２に相当）と、前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、暗号文を生成する第３のステップ（例えば、図２のステップＳ１０３に相当）と、各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された暗号文を入力する第４のステップ（例えば、図２のステップＳ１０４に相当）と、前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、を備えたことを特徴とする自己同期型ストリーム暗号の暗号化方法を提案している。
【００１４】
この発明によれば、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする。そして、前記ｍ段目に配置されたｎ個のレジスタからの値をフィルタ関数部に入力し、乱数列を生成するとともに、生成された乱数列と入力した平文との排他的論理和演算を行って、暗号文を生成する。さらに、各レジスタの出力値をシフトするとともに、データ入力端に配置された排他的論理演算部に生成された暗号文を入力し、これらの処理を順次繰り返し実行する。したがって、生成した暗号文を入力側にフィードバックするため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００１５】
（６）本発明は、（２）に記載の自己同期型ストリーム暗号の復号化装置を用いた自己同期型ストリーム暗号の復号化方法であって、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットする第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップ（例えば、図４のステップＳ２０２に相当）と、前記第２のステップで生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する第３のステップ（例えば、図４のステップＳ２０３に相当）と、各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された平文を入力する第４のステップ（例えば、図４のステップＳ２０４に相当）と、前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、を備えたことを特徴とする自己同期型ストリーム暗号の復号化方法を提案している。
【００１６】
この発明によれば、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットする。そして、前記ｍ段目に配置されたｎ個のレジスタからの値をフィルタ関数部に入力し、乱数列を生成するとともに、生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する。さらに、各レジスタの出力値をシフトするとともに、データ入力端に配置された排他的論理演算部に生成された平文を入力し、これらの処理を順次繰り返し実行する。したがって、生成した平文を入力側にフィードバックするため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００１７】
（７）本発明は、（４）に記載のＭＡＣ生成装置を用いたＭＡＣ生成方法であって、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップ（例えば、図６のステップＳ３０１に相当）と、前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップ（例えば、図６のステップＳ３０２に相当）と、前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、メッセージ認証子を生成する第３のステップ（例えば、図６のステップＳ３０３に相当）と、各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成されたメッセージ認証子を入力する第４のステップ（例えば、図６のステップＳ３０４に相当）と、すべての平文を入力したか否かを判断する第５のステップ（例えば、図６のステップＳ３０５に相当）と、前記第５のステップにおいて、すべての平文を入力したと判断したときに、メッセージ認証子を出力する第６のステップ（例えば、図６のステップＳ３０６に相当）と、を備えたことを特徴とするＭＡＣ生成方法を提案している。
【００１８】
この発明によれば、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする。そして、前記ｍ段目に配置されたｎ個のレジスタからの値をフィルタ関数部に入力し、乱数列を生成するとともに、生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する。さらに、各レジスタの出力値をシフトするとともに、データ入力端に配置された排他的論理演算部に生成された平文を入力し、これらの処理を順次繰り返し実行する。したがって、生成した平文を入力側にフィードバックするため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００１９】
（８）本発明は、（１）に記載の自己同期型ストリーム暗号の暗号化装置を用いた自己同期型ストリーム暗号の暗号化方法をコンピュータに実行させるプログラムであって、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップ（例えば、図２のステップＳ１０２に相当）と、前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、暗号文を生成する第３のステップ（例えば、図２のステップＳ１０３に相当）と、各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された暗号文を入力する第４のステップ（例えば、図２のステップＳ１０４に相当）と、前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、をコンピュータに実行させるプログラムを提案している。
【００２０】
この発明によれば、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする。そして、前記ｍ段目に配置されたｎ個のレジスタからの値をフィルタ関数部に入力し、乱数列を生成するとともに、生成された乱数列と入力した平文との排他的論理和演算を行って、暗号文を生成する。さらに、各レジスタの出力値をシフトするとともに、データ入力端に配置された排他的論理演算部に生成された暗号文を入力し、これらの処理を順次繰り返し実行する。したがって、生成した暗号文を入力側にフィードバックするため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００２１】
（９）本発明は、（２）に記載の自己同期型ストリーム暗号の復号化装置を用いた自己同期型ストリーム暗号の復号化方法をコンピュータに実行させるプログラムであって、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットする第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップ（例えば、図４のステップＳ２０２に相当）と、前記第２のステップで生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する第３のステップ（例えば、図４のステップＳ２０３に相当）と、各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成された平文を入力する第４のステップ（例えば、図４のステップＳ２０４に相当）と、前記第２のステップから第４のステップにおけるまでの処理を順次繰り返し実行する第５のステップと、をコンピュータに実行させるプログラムを提案している。
【００２２】
この発明によれば、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットする。そして、前記ｍ段目に配置されたｎ個のレジスタからの値をフィルタ関数部に入力し、乱数列を生成するとともに、生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する。さらに、各レジスタの出力値をシフトするとともに、データ入力端に配置された排他的論理演算部に生成された平文を入力し、これらの処理を順次繰り返し実行する。したがって、生成した平文を入力側にフィードバックするため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００２３】
（１０）本発明は、（４）に記載のＭＡＣ生成装置を用いたＭＡＣ生成方法をコンピュータに実行させるプログラムであって、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする第１のステップ（例えば、図６のステップＳ３０１に相当）と、前記ｍ段目に配置されたｎ個のレジスタからの値を前記フィルタ関数部に入力し、乱数列を生成する第２のステップ（例えば、図６のステップＳ３０２に相当）と、前記第２のステップで生成された乱数列と入力した平文との排他的論理和演算を行って、メッセージ認証子を生成する第３のステップ（例えば、図６のステップＳ３０３に相当）と、各レジスタの出力値をシフトするとともに、前記データ入力端に配置された排他的論理演算部に第３のステップで生成されたメッセージ認証子を入力する第４のステップ（例えば、図６のステップＳ３０４に相当）と、すべての平文を入力したか否かを判断する第５のステップ（例えば、図６のステップＳ３０５に相当）と、前記第５のステップにおいて、すべての平文を入力したと判断したときに、メッセージ認証子を出力する第６のステップ（例えば、図６のステップＳ３０６に相当）と、をコンピュータに実行させるプログラム。
【００２４】
この発明によれば、拡大鍵を生成し、生成した拡大鍵を排他的論理演算部および非線形関数部にセットするとともに、初期値をｍｗビット分生成して、これをデータ入力端に配置されるそれぞれの排他的論理演算部にセットする。そして、前記ｍ段目に配置されたｎ個のレジスタからの値をフィルタ関数部に入力し、乱数列を生成するとともに、生成された乱数列と入力した暗号文との排他的論理和演算を行って、平文を生成する。さらに、各レジスタの出力値をシフトするとともに、データ入力端に配置された排他的論理演算部に生成された平文を入力し、これらの処理を順次繰り返し実行する。したがって、生成した平文を入力側にフィードバックするため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。  
【発明の効果】
【００２５】
本発明によれば、高速かつ安全で、自動的に同期回復を行うことができるストリーム暗号を実現することができるという効果がある。
【発明を実施するための最良の形態】
【００２６】
以下、図面を用いて、本発明の実施形態について詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２７】
＜自己同期型ストリーム暗号の暗号化装置の構成＞
本実施形態に係る自己同期型ストリーム暗号の暗号化装置は、図１に示すように、攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎと、非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎと、フィルタ関数３と、第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍと、初期値スケジューリングアルゴリズム５と、キースケジューリングアルゴリズム６と、第２の排他的論理演算器７と、ｎ×ｍ個のレジスタとから構成されている。
【００２８】
攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎは、ｍ個のレジスタを攪拌する処理を実行する。なお、本処理は、ワード長での処理を基本とし、例えば、ワード長単位で処理を行うＭＤＳ（Ｍａｘｉｍｕｍ  Ｄｉｓｔａｎｃｅ  Ｓｅｐａｒａｂｌｅ）行列などを用いて構成することができる。
【００２９】
非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎは、入出力長が一致した全単射関数であり、例えば、ブロック暗号に用いられているＳ−Ｂｏｘなどの代数次数、非線形性などが最良となる置換関数で構成される。なお、非線形関数２ａ、２ｂ、２ｃ、２ｄ・・・２ｎには、キースケジューリングアルゴリズム６で生成される拡大鍵が入力される。
【００３０】
フィルタ関数３は、最下段（ｍ段目）のレジスタからの出力値を入力し、ｎ＞ｍの条件を満たすｍｗビットの鍵系列を出力する圧縮関数である。なお、フィルタ関数は、安全性に影響を及ぼす関数であり、線形処理と非線形処理とを組み合わせて構成される。
【００３１】
第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍは、初期処理段階では、初期値スケジューリングアルゴリズム５で生成されたｗビットの初期値とキースケジューリングアルゴリズム６で生成される拡大鍵とが入力されて、これらの排他的論理和が演算され、それ以降は、ｗビットの暗号文と拡大鍵とが入力されて、これらの排他的論理和が演算される。
【００３２】
初期値スケジューリングアルゴリズム５は、初期値を入力して、拡大したｍ×ｗビットの初期値を生成し、第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍに入力する。キースケジューリングアルゴリズム６は、鍵を入力して、拡大鍵を生成し、これを第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍおよび非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎにセットする。
【００３３】
第２の排他的論理演算器７は、フィルタ関数３から出力されるｍｗビットの乱数列と入力した平文との排他的論理和演算を実行し、ｍｗビットの暗号文を出力する。また、ｍ×ｎ個のレジスタは、攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎからの出力を一時的に保持する記憶手段である。
【００３４】
＜自己同期型ストリーム暗号の暗号化装置の処理動作＞
次に、図３を用いて、自己同期型ストリーム暗号の暗号化装置の処理動作について説明する。
まず、初期処理を行って、ストリーム暗号の内部状態をセットする。具体的には、鍵をキースケジューリングアルゴリズム６に入力して、拡大鍵を生成し、生成した拡大鍵を第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍおよび非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎにセットする。一方、初期値スケジューリングアルゴリズム５に初期値を入力し、秘密鍵をアルゴリズムにセットして、拡大した初期値をｎ×ｗビット分生成し、これを第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍに入力する（ステップＳ１０１）。
【００３５】
次に、最下段のレジスタの出力値をフィルタ関数３に入力してｍｗビットの乱数列を得る（ステップＳ１０２）。そして、入力した平文とフィルタ関数３から出力されたｍｗビットの乱数列との排他的論理和演算を第２の排他的論理演算器７で行い、ｍｗビットの暗号文を得る（ステップＳ１０３）。
【００３６】
次に、内部状態、すなわち、各レジスタの更新処理を実行する。具体的には、すべてのレジスタの保持値を１つ左へずらす処理を実行する。なお、このとき、非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎおよび攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎでの処理を行う。また、最左行のレジスタ（図中、Ｓｎ、１、Ｓｎ、２、Ｓｎ、３、・・・Ｓｎ、ｍ）からはみ出た値は、これを消去する処理を実行する（ステップＳ１０４）。
【００３７】
内部状態の更新処理（ステップＳ１０４）を終了すると、ステップＳ１０２に戻って、ステップＳ１０２からステップＳ１０４までの処理を繰り返し実行する。
【００３８】
以上説明したように、本実施形態に係る自己同期型ストリーム暗号の暗号化装置によれば、生成した暗号文を入力側にフィードバックする構成となっているため、仮に、同期が乱れた場合であっても、自動的に、同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００３９】
＜自己同期型ストリーム暗号の復号化装置の構成＞
本実施形態に係る自己同期型ストリーム暗号の復号化装置は、図３に示すように、攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎと、非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎと、フィルタ関数３と、キースケジューリングアルゴリズム６と、第１の排他的論理演算器８ａ、８ｂ、８ｃ、・・・８ｍと、第２の排他的論理演算器９と、ｎ×ｍ個のレジスタとから構成されている。なお、図１と同一の符号を付した構成要素については、同様の機能を有するものであることから、その詳細な説明は省略する。
【００４０】
第１の排他的論理演算器８ａ、８ｂ、８ｃ、・・・８ｍは、受信したｗビットの暗号文と拡大鍵とを入力して、これらの排他的論理和を演算する。第２の排他的論理演算器９は、フィルタ関数３から出力されるｍｗビットの乱数列と受信した暗号文との排他的論理和演算を実行し、ｍｗビットの平文を出力する。
【００４１】
＜自己同期型ストリーム暗号の復号化装置の処理動作＞
次に、図４を用いて、自己同期型ストリーム暗号の復号化装置の処理動作について説明する。
まず、初期処理を行って、ストリーム暗号の内部状態をセットする。具体的には、鍵をキースケジューリングアルゴリズム６に入力して、拡大鍵を生成し、生成した拡大鍵を第１の排他的論理演算器８ａ、８ｂ、８ｃ、・・・８ｍおよび非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎにセットする（ステップＳ２０１）。
【００４２】
次に、最下段のレジスタの出力値をフィルタ関数３に入力してｍｗビットの乱数列を得る（ステップＳ２０２）。そして、受信した暗号文とフィルタ関数３から出力されたｍｗビットの乱数列との排他的論理和演算を第２の排他的論理演算器９で行い、ｍｗビットの平文を得る（ステップＳ２０３）。
【００４３】
次に、内部状態、すなわち、各レジスタの更新処理を実行する。具体的には、すべてのレジスタの保持値を１つ左へずらす処理を実行する。なお、このとき、非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎおよび攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎでの処理を行う。また、最左行のレジスタ（図中、Ｓｎ、１、Ｓｎ、２、Ｓｎ、３、・・・Ｓｎ、ｍ）からはみ出た値は、これを消去する処理を実行する（ステップＳ２０４）。
【００４４】
内部状態の更新処理（ステップＳ２０４）を終了すると、ステップＳ２０２に戻って、ステップＳ２０２からステップＳ２０４までの処理を繰り返し実行する。
【００４５】
以上説明したように、本実施形態に係る自己同期型ストリーム暗号の復号化装置によれば、生成した平文を入力側にフィードバックする構成となっているため、仮に、同期が乱れた場合であっても、所定の暗号文を受信できれば、自動的に同期を回復することができる。また、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。また、すでに説明した自己同期型ストリーム暗号の暗号化装置と自己同期型ストリーム暗号の復号化装置とを組み合わせることにより、同期を自動的に回復することができる自己同期型ストリーム暗号システムを構築することができる。
【００４６】
＜ＭＡＣ生成装置の構成＞
ＭＡＣ生成装置の構成は、図５に示したように、基本的に、すでに説明した自己同期型ストリーム暗号の暗号化装置と同様の構成であり、平文を入力し、出力されたｍｗビットの暗号文から連続するＳビットのメッセージ認証子を出力する。
【００４７】
＜ＭＡＣ生成装置の処理動作＞
次に、図６を用いて、ＭＡＣ生成装置の処理動作について説明する。
まず、初期処理を行って、ストリーム暗号の内部状態をセットする。具体的には、鍵をキースケジューリングアルゴリズム６に入力して、拡大鍵を生成し、生成した拡大鍵を第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍおよび非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎにセットする。一方、初期値スケジューリングアルゴリズム５に初期値を入力し、秘密鍵をアルゴリズムにセットして、拡大した初期値をｎ×ｗビット分生成し、これを第１の排他的論理演算器４ａ、４ｂ、４ｃ、・・・４ｍに入力する（ステップＳ３０１）。
【００４８】
次に、最下段のレジスタの出力値をフィルタ関数３に入力してｍｗビットの乱数列を得る（ステップＳ３０２）。そして、入力した平文とフィルタ関数３から出力されたｍｗビットの乱数列との排他的論理和演算を第２の排他的論理演算器７で行い、ｍｗビットの暗号文を得る（ステップＳ３０３）。
【００４９】
次に、内部状態、すなわち、各レジスタの更新処理を実行する。具体的には、すべてのレジスタの保持値を１つ左へずらす処理を実行する。なお、このとき、非線形関数２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎおよび攪拌関数１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎでの処理を行う。また、最左行のレジスタ（図中、Ｓｎ、１、Ｓｎ、２、Ｓｎ、３、・・・Ｓｎ、ｍ）からはみ出た値は、これを消去する処理を実行する（ステップＳ３０４）。
【００５０】
次に、すべての平文を入力したか否かを判断し（ステップＳ３０５）、すべての平文を入力していない場合（ステップＳ３０５の「ＮＯ」）には、ステップＳ３０２に戻って、ステップＳ３０２からステップＳ３０４の処理を実行する。一方、すべての平文を入力した場合（ステップＳ３０５の「ＹＥＳ」）には、Ｓビットのメッセージ認証子を出力し（ステップＳ３０６）、すべての処理を終了する。
【００５１】
以上説明したように、本実施形態に係るＭＡＣ生成装置によれば、入力を多段構成としたことから、これらを同時並行的に処理することにより、処理の高速化を図ることができる。さらに、各レジスタに非線形関数を結合せずに、最下段のレジスタのみに非線形関数を結合し、他のレジスタについては攪拌関数を結合する構成としたことから、特に、処理負荷の重い非線形関数を最小限に抑えることにより、処理の高速化を図ることができる。
【００５２】
なお、上述の一連の処理をプログラムとしてコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを自己同期型ストリーム暗号の暗号化装置、自己同期型ストリーム暗号の復号化装置、自己同期型ストリーム暗号システム、ＭＡＣ生成装置に読み込ませ、実行することによって本発明の自己同期型ストリーム暗号の暗号化装置、自己同期型ストリーム暗号の復号化装置、自己同期型ストリーム暗号システム、ＭＡＣ生成装置を実現することができる。
【００５３】
また、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００５４】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００５５】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００５６】
【図１】本発明の自己同期型ストリーム暗号の暗号化装置の構成図である。
【図２】本発明の自己同期型ストリーム暗号の暗号化装置の処理フロー図である。
【図３】本発明の自己同期型ストリーム暗号の復号化装置の構成図である。
【図４】本発明の自己同期型ストリーム暗号の復号化装置の処理フロー図である。
【図５】本発明のＭＡＣ生成装置の構成図である。
【図６】本発明のＭＡＣ生成装置の処理フロー図である。
【符号の説明】
【００５７】
１ａ、１ｂ、１ｃ、１ｄ、・・・１ｎ    攪拌関数
２ａ、２ｂ、２ｃ、２ｄ、・・・２ｎ    非線形関数
３    フィルタ関数
４ａ、４ｂ、４ｃ、・・・４ｍ、８ａ、８ｂ、８ｃ、・・・８ｍ    第１の排他的論理演算器
５    初期値スケジューリングアルゴリズム
６    キースケジューリングアルゴリズム
７、９    第２の排他的論理演算器
【図１】
0004819576.tif 000002
【図２】
0004819576.tif 000003
【図３】
0004819576.tif 000004
【図４】
0004819576.tif 000005
【図５】
0004819576.tif 000006
【図６】
0004819576.tif 000007