(57)【特許請求の範囲】
【請求項１】
初期鍵と初期ベクトルとを用いて、初期化処理を行う初期化処理手段と、
該初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する選択手段と、
該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する演算手段と、
を備え、
前記平文の長さが前記内部状態の半分よりも大きい場合には、１ビット以上、かつ、内部状態の半分以下の平文について処理を行い、残りの平文の暗号化する場合には、前記初期化処理手段が初期ベクトルを変更して、再度、初期化処理を行うことを特徴とするストリーム暗号の暗号化装置。
【請求項２】
前記請求項１に記載のストリーム暗号の暗号化装置により出力された暗号文を平文に復号するストリーム暗号の復号化装置であって、
初期鍵と初期ベクトルとを用いて、初期化処理を行う初期化処理手段と、
該初期化処理終了後に、内部状態の中から暗号文と同じ長さのビット列を選択する選択手段と、
該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する演算手段と、
を備え、
前記暗号文の長さが前記内部状態の半分よりも大きい場合には、１ビット以上、かつ、内部状態の半分以下の暗号文について処理を行い、残りの暗号文の復号化する場合には、前記初期化処理手段が初期ベクトルを変更して、再度、初期化処理を行うことを特徴とするストリーム暗号の復号化装置。
【請求項３】
初期化処理手段と選択手段と演算手段とを備えたストリーム暗号の暗号化装置を用いた入力する平文の長さが内部状態の半分以上である場合のストリーム暗号の暗号化方法であって、
前記初期化処理手段が、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップと、
前記演算手段が、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第３のステップと、
前記初期化処理手段が、初期ベクトルのみを変更して、初期化処理を行う第４のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第５のステップと、
前記演算手段が、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第６のステップと、
前記第４のステップから第６のステップまでの処理を残りの平文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップと、
前記出力されたすべての暗号文を連結して、前記平文に対応する暗号文を出力する第８のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項４】
初期化処理手段と選択手段と演算手段とを備えたストリーム暗号の復号化装置を用いて前記請求項３に記載のストリーム暗号の暗号化方法により生成された暗号文を平文に復号するストリーム暗号の復号化方法であって、
前記初期化処理手段が、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップと、
前記演算手段が、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第３のステップと、
前記初期化処理手段が、初期ベクトルのみを変更して、初期化処理を行う第４のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下に等しいビット列を選択する第５のステップと、
前記演算手段が、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第６のステップと、
前記第４のステップから第６のステップまでの処理を残りの暗号文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップと、
前記出力されたすべての平文を連結して、前記暗号文に対応する平文を出力する第８のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項５】
初期化処理手段と選択手段と演算手段とを備えたストリーム暗号の暗号化装置を用いた入力する平文の長さが内部状態の半分以上である場合のストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、
前記初期化処理手段が、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップと、
前記演算手段が、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第３のステップと、
前記初期化処理手段が、初期ベクトルのみを変更して、初期化処理を行う第４のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第５のステップと、
前記演算手段が、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第６のステップと、
前記第４のステップから第６のステップまでの処理を残りの平文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップと、
前記出力されたすべての暗号文を連結して、前記平文に対応する暗号文を出力する第８のステップと、
をコンピュータに実行させるためのプログラム。
【請求項６】
初期化処理手段と選択手段と演算手段とを備えたストリーム暗号の復号化装置を用いて前記請求項５に記載のプログラムにより生成された暗号文を平文に復号するプログラムであって、
前記初期化処理手段が、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップと、
前記演算手段が、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第３のステップと、
前記初期化処理手段が、初期ベクトルのみを変更して、初期化処理を行う第４のステップと、
前記選択手段が、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下に等しいビット列を選択する第５のステップと、
前記演算手段が、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第６のステップと、
前記第４のステップから第６のステップまでの処理を残りの暗号文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップと、
前記出力されたすべての平文を連結して、前記暗号文に対応する平文を出力する第８のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、インターネットの目覚しい普及により、コンピュータを利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、その通信内容を秘匿化するために暗号が利用されている。ここで、暗号方式としては、１つの鍵で暗号化と復号化とを行う共通鍵暗号方式が一般的であるが、この共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式とに大別される。
【０００３】
ストリーム暗号方式は、ブロック暗号方式よりも高速な処理が期待できるため、例えば、映画等の大容量データを伝送するための方式として、近年、注目を浴びているが、ストリーム暗号方式の場合には、暗号処理と復号処理との同期をとらなければならないという問題があった。そのため、一定サイズ以上の誤りなく受信した暗号文を利用して、同期を自動的に回復する自己同期型のストリーム暗号装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１６１９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところが、ストリーム暗号は、初期鍵を初期化処理により攪拌して、初期の内部状態を生成し、生成した状態を逐次更新しながら、暗号化の各系列を生成する。また、従来のストリーム暗号では、初期化ののち、さらに鍵系列生成処理を行っていた。そのため、従来のストリーム暗号では、鍵系列生成処理を行わないと、暗号化処理ができず、短い平文を暗号化する場合には冗長な処理となっていたという問題があった。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、異なるロジックを追加する事無く、短い平文あるいは暗号文に対する暗号化処理あるいは復号化処理の効率化を図るストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００８】
（１）本発明は、初期鍵と初期ベクトルとを用いて、初期化処理を行う初期化処理手段（例えば、図１の初期化処理部１０１に相当）と、該初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する選択手段（例えば、図１のビット選択部１０２に相当）と、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する演算手段（例えば、図１の排他的論理和演算部１０３に相当）と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【０００９】
この発明によれば、初期化処理手段は、初期鍵と初期ベクトルとを用いて、初期化処理を行う。選択手段は、初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する。演算手段は、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。したがって、短い平文について、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００１０】
（２）本発明は、（１）のストリーム暗号の暗号化装置について、前記選択されたビット列が１ビット以上、かつ、前記内部状態の半分以下であることを特徴とするストリーム暗号の暗号化装置を提案している。
【００１１】
この発明によれば、選択されたビット列が１ビット以上、かつ、内部状態の半分以下である。つまり、ストリーム暗号の内部状態に対して、半分以下の短い平文を暗号化する場合に、内部状態のビット列を直接使うことで処理負荷を軽減する。
【００１２】
（３）本発明は、（２）のストリーム暗号の暗号化装置について、前記平文の長さが前記内部状態の半分よりも大きい場合には、１ビット以上、かつ、内部状態の半分以下の平文について処理を行い、残りの平文の暗号化する場合には、前記初期化処理手段が初期ベクトルを変更して、再度、初期化処理を行うことを特徴とするストリーム暗号の暗号化装置を提案している。
【００１３】
この発明によれば、平文の長さが内部状態の半分よりも大きい場合には、１ビット以上、かつ、内部状態の半分以下の平文について処理を行い、残りの平文の暗号化する場合には、初期化処理手段が初期ベクトルを変更して、再度、初期化処理を行う。つまり、平文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、暗号化の処理を実行する。これにより、平文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００１４】
（４）本発明は、初期鍵と初期ベクトルとを用いて、初期化処理を行う初期化処理手段（例えば、図５の初期化処理部１０１に相当）と、該初期化処理終了後に、内部状態の中から暗号文と同じ長さのビット列を選択する選択手段（例えば、図５のビット選択部１０２に相当）と、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する演算手段（例えば、図５の排他的論理和演算部２０１に相当）と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【００１５】
この発明によれば、初期化処理手段は、初期鍵と初期ベクトルとを用いて、初期化処理を行う。選択手段は、初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する。演算手段は、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。したがって、短い暗号文について、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【００１６】
（５）本発明は、（４）のストリーム暗号の復号化装置について、前記選択されたビット列が１ビット以上、かつ、前記内部状態の半分以下であることを特徴とするストリーム暗号の復号化装置を提案している。
【００１７】
この発明によれば、選択されたビット列が１ビット以上、かつ、内部状態の半分以下である。つまり、ストリーム暗号の内部状態に対して、半分以下の短い暗号文を復号化する場合に、内部状態のビット列を直接使うことで処理負荷を軽減する。
【００１８】
（６）本発明は、（５）のストリーム暗号の復号化装置について、前記暗号文の長さが前記内部状態の半分よりも大きい場合には、１ビット以上、かつ、内部状態の半分以下の暗号文について処理を行い、残りの暗号文の復号化する場合には、前記初期化処理手段が初期ベクトルを変更して、再度、初期化処理を行うことを特徴とするストリーム暗号の復号化装置を提案している。
【００１９】
この発明によれば、暗号文の長さが内部状態の半分よりも大きい場合には、１ビット以上、かつ、内部状態の半分以下の暗号文について処理を行い、残りの暗号文の復号化する場合には、初期化処理手段が初期ベクトルを変更して、再度、初期化処理を行う。つまり、暗号文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、復号化の処理を実行する。これにより、暗号文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【００２０】
（７）本発明は、入力する平文の長さが１ビット以上、かつ、内部状態の半分以下である場合のストリーム暗号の暗号化方法であって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図２のステップＳ１０１に相当）と、該初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する第２のステップ（例えば、図２のステップＳ１０２に相当）と、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第３のステップ（例えば、図２のステップＳ１０３に相当）と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【００２１】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する。そして、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。したがって、短い平文について、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００２２】
（８）本発明は、入力する平文の長さが内部状態の半分以上である場合のストリーム暗号の暗号化方法であって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図４のステップＳ２０１に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップ（例えば、図４のステップＳ２０２に相当）と、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第３のステップ（例えば、図４のステップＳ２０３に相当）と、初期ベクトルのみを変更して、初期化処理を行う第４のステップ（例えば、図４のステップＳ２０４に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第５のステップ（例えば、図４のステップＳ２０５に相当）と、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第６のステップ（例えば、図４のステップＳ２０６に相当）と、前記第４のステップから第６のステップまでの処理を残りの平文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップ（例えば、図４のステップＳ２０７に相当）と、前記出力されたすべての暗号文を連結して、前記平文に対応する暗号文を出力する第８のステップ（例えば、図４のステップＳ２０８に相当）と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【００２３】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。次に、初期ベクトルのみを変更して、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。そして、第４のステップから第６のステップまでの処理を残りの平文の長さが１ビット以上、かつ、内部状態の半分以下になるまで、続行し、出力されたすべての暗号文を連結して、平文に対応する暗号文を出力する。したがって、平文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、暗号化の処理を実行する。これにより、平文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００２４】
（９）本発明は、入力する暗号文の長さが１ビット以上、かつ、内部状態の半分以下である場合のストリーム暗号の復号化方法であって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図６のステップＳ３０１に相当）と、該初期化処理終了後に、内部状態の中から暗号文と同じ長さのビット列を選択する第２のステップ（例えば、図６のステップＳ３０２に相当）と、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第３のステップ（例えば、図６のステップＳ３０３に相当）と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【００２５】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、内部状態の中から暗号文と同じ長さのビット列を選択する。そして、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。したがって、短い暗号文について、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【００２６】
（１０）本発明は、入力する暗号文の長さが内部状態の半分以上である場合のストリーム暗号の復号化方法であって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図８のステップＳ４０１に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップ（例えば、図８のステップＳ４０２に相当）と、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第３のステップ（例えば、図８のステップＳ４０３に相当）と、初期ベクトルのみを変更して、初期化処理を行う第４のステップ（例えば、図８のステップＳ４０４に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下に等しいビット列を選択する第５のステップ（例えば、図８のステップＳ４０５に相当）と、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第６のステップ（例えば、図８のステップＳ４０６に相当）と、前記第４のステップから第６のステップまでの処理を残りの暗号文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップ（例えば、図８のステップＳ４０７に相当）と、前記出力されたすべての平文を連結して、前記暗号文に対応する平文を出力する第８のステップ（例えば、図８のステップＳ４０８に相当）と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【００２７】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。次に、初期ベクトルのみを変更して、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。そして、第４のステップから第６のステップまでの処理を残りの暗号文の長さが１ビット以上、かつ、内部状態の半分以下になるまで、続行し、出力されたすべての平文を連結して、暗号文に対応する平文を出力する。したがって、暗号文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、復号化の処理を実行する。これにより、暗号文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【００２８】
（１１）本発明は、入力する平文の長さが１ビット以上、かつ、内部状態の半分以下である場合のストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図２のステップＳ１０１に相当）と、該初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する第２のステップ（例えば、図２のステップＳ１０２に相当）と、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第３のステップ（例えば、図２のステップＳ１０３に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００２９】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する。そして、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。したがって、短い平文について、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００３０】
（１２）本発明は、入力する平文の長さが内部状態の半分以上である場合のストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図４のステップＳ２０１に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップ（例えば、図４のステップＳ２０２に相当）と、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第３のステップ（例えば、図４のステップＳ２０３に相当）と、初期ベクトルのみを変更して、初期化処理を行う第４のステップ（例えば、図４のステップＳ２０４に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第５のステップ（例えば、図４のステップＳ２０５に相当）と、該選択したビット列と前記平文との排他的論理和演算を行い、暗号文を出力する第６のステップ（例えば、図４のステップＳ２０６に相当）と、前記第４のステップから第６のステップまでの処理を残りの平文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップ（例えば、図４のステップＳ２０７に相当）と、前記出力されたすべての暗号文を連結して、前記平文に対応する暗号文を出力する第８のステップ（例えば、図４のステップＳ２０８に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３１】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。次に、初期ベクトルのみを変更して、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。そして、第４のステップから第６のステップまでの処理を残りの平文の長さが１ビット以上、かつ、内部状態の半分以下になるまで、続行し、出力されたすべての暗号文を連結して、平文に対応する暗号文を出力する。したがって、平文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、暗号化の処理を実行する。これにより、平文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００３２】
（１３）本発明は、入力する暗号文の長さが１ビット以上、かつ、内部状態の半分以下である場合のストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図６のステップＳ３０１に相当）と、該初期化処理終了後に、内部状態の中から暗号文と同じ長さのビット列を選択する第２のステップ（例えば、図６のステップＳ３０２に相当）と、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第３のステップ（例えば、図６のステップＳ３０３に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３３】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、内部状態の中から暗号文と同じ長さのビット列を選択する。そして、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。したがって、短い暗号文について、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【００３４】
（１４）本発明は、入力する暗号文の長さが内部状態の半分以上である場合のストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、初期鍵と初期ベクトルとを用いて、初期化処理を行う第１のステップ（例えば、図８のステップＳ４０１に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する第２のステップ（例えば、図８のステップＳ４０２に相当）と、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第３のステップ（例えば、図８のステップＳ４０３に相当）と、初期ベクトルのみを変更して、初期化処理を行う第４のステップ（例えば、図８のステップＳ４０４に相当）と、該初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下に等しいビット列を選択する第５のステップ（例えば、図８のステップＳ４０５に相当）と、該選択したビット列と前記暗号文との排他的論理和演算を行い、平文を出力する第６のステップ（例えば、図８のステップＳ４０６に相当）と、前記第４のステップから第６のステップまでの処理を残りの暗号文の長さが１ビット以上、かつ、前記内部状態の半分以下になるまで、続行する第７のステップ（例えば、図８のステップＳ４０７に相当）と、前記出力されたすべての平文を連結して、前記暗号文に対応する平文を出力する第８のステップ（例えば、図８のステップＳ４０８に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３５】
この発明によれば、初期鍵と初期ベクトルとを用いて、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。次に、初期ベクトルのみを変更して、初期化処理を行い、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択して、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。そして、第４のステップから第６のステップまでの処理を残りの暗号文の長さが１ビット以上、かつ、内部状態の半分以下になるまで、続行し、出力されたすべての平文を連結して、暗号文に対応する平文を出力する。したがって、暗号文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、復号化の処理を実行する。これにより、暗号文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【発明の効果】
【００３６】
本発明によれば、ストリーム暗号の内部状態に対して、短い平文あるいは暗号文を暗号化あるいは復号化する場合に、内部状態のビット列を直接使うことで処理負荷を軽減することができるという効果がある。
【図面の簡単な説明】
【００３７】
【図１】第１の実施形態に係る暗号化装置の構成を示す図である。
【図２】第１の実施形態に係る暗号化装置の処理を示す図である。
【図３】第２の実施形態に係る暗号化装置の構成を示す図である。
【図４】第２の実施形態に係る暗号化装置の処理を示す図である。
【図５】第３の実施形態に係る復号化装置の構成を示す図である。
【図６】第３の実施形態に係る復号化装置の処理を示す図である。
【図７】第４の実施形態に係る復号化装置の構成を示す図である。
【図８】第４の実施形態に係る復号化装置の処理を示す図である。
【発明を実施するための形態】
【００３８】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３９】
＜第１の実施形態＞
図１および図２を用いて、本実施形態に係るストリーム暗号の暗号化装置について説明する。
【００４０】
＜ストリーム暗号の暗号化装置の構成＞
図１に示すように、本実施形態に係るストリーム暗号の暗号化装置は、初期化処理部１０１と、ビット選択部１０２と、排他的論理和演算部１０３とから構成されている。なお、本実施形態に係るストリーム暗号の暗号化装置は、短い平文に対して好適な暗号化装置である。
【００４１】
初期化処理部１０１は、初期鍵と初期ベクトルとを用いて、初期化処理を行う。ビット選択部１０２は、初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する。排他的論理和演算部１０３は、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する。なお、本実施形態では、安全性を担保するために、平文の長さは、内部状態の大きさの半分以下であることが望ましい。
【００４２】
＜ストリーム暗号の暗号化装置の処理＞
図２を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
初期化処理部１０１が、初期鍵と初期ベクトルとを用いて、初期化処理を行う（ステップＳ１０１）。ビット選択部１０２は、初期化処理終了後に、内部状態の中から平文と同じ長さのビット列を選択する（ステップＳ１０２）。そして、排他的論理和演算部１０３が、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する（ステップＳ１０３）。
【００４３】
したがって、本実施形態によれば、短い平文について、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００４４】
＜第２の実施形態＞
図３および図４を用いて、本実施形態に係るストリーム暗号の暗号化装置について説明する。
【００４５】
＜ストリーム暗号の暗号化装置の構成＞
図３に示すように、本実施形態に係るストリーム暗号の暗号化装置は、初期化処理部１０１と、ビット選択部１０２と、排他的論理和演算部１０３と、初期ベクトル供給部１０４と、結合部１０５とから構成されている。なお、本実施形態に係るストリーム暗号の暗号化装置は、平文の合計の長さが内部状態の半分よりも大きい場合に好適な暗号化装置である。また、第１の実施形態と同一の符号を付す構成要素については、同一の機能を有するものであることから、その詳細な説明は、省略する。
【００４６】
初期ベクトル供給部１０４は、平文の合計の長さが内部状態の半分よりも大きく、残りの部分を暗号化する場合に、初期化処理部１０１に新たな初期ベクトルを供給する。これにより、初期化処理部１０１は、再度、初期化処理を実行する。結合部１０５は、平文の合計の長さが内部状態の半分よりも大きく、何回かに分けて暗号化を行った場合に、順次、排他的論理和演算部１０３から出力される暗号文を結合して、最終的な暗号文を生成する。
【００４７】
＜ストリーム暗号の暗号化装置の処理＞
図４を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
初期化処理部１０１は、初期鍵と初期ベクトルとを用いて、初期化処理を行う（ステップＳ２０１）。ビット選択部１０２は、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する（ステップＳ２０２）。
【００４８】
排他的論理和演算部１０３は、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する（ステップＳ２０３）。次に、平文の合計の長さが内部状態の半分よりも大きい場合には、残りの平文を暗号化するために、初期ベクトル供給部１０４により、初期ベクトルのみを変更して、初期化処理部１０１が、再度、初期化処理を行う（ステップＳ２０４）。
【００４９】
ビット選択部１０２は、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する（ステップＳ２０５）。排他的論理和演算部１０３は、その選択したビット列と平文との排他的論理和演算を行い、暗号文を出力する（ステップＳ２０６）。
【００５０】
そして、ステップＳ２０４からステップＳ２０６までの処理を残りの平文の長さが１ビット以上、かつ、内部状態の半分以下になるまで、続行する（ステップＳ２０７）。そして、排他的論理和演算部１０３から、順次出力されたすべての暗号文を結合部１０５が連結して、平文に対応する暗号文を出力する（ステップＳ２０８）。
【００５１】
したがって、本実施形態によれば、平文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、暗号化の処理を実行する。これにより、平文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに暗号化を行うため、異なるロジックを追加する必要がなく、暗号化処理の効率化を図ることができる。
【００５２】
＜第３の実施形態＞
図５および図６を用いて、本実施形態に係るストリーム暗号の復号化装置について説明する。
【００５３】
＜ストリーム暗号の復号化装置の構成＞
図５に示すように、本実施形態に係るストリーム暗号の復号化装置は、初期化処理部１０１と、ビット選択部１０２と、排他的論理和演算部２０１とから構成されている。なお、本実施形態に係るストリーム暗号の復号化装置は、短い平文に対して好適な復号化装置である。また、第１の実施形態と同一の符号を付す構成要素については、同一の機能を有するものであることから、その詳細な説明は、省略する。
【００５４】
排他的論理和演算部２０１は、ビット選択部１０２が選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する。なお、本実施形態では、安全性を担保するために、平文の長さは、内部状態の大きさの半分以下であることが望ましい。
【００５５】
＜ストリーム暗号の復号化装置の処理＞
図６を用いて、本実施形態に係るストリーム暗号の復号化装置の処理について説明する。
初期化処理部１０１が、初期鍵と初期ベクトルとを用いて、初期化処理を行う（ステップＳ３０１）。ビット選択部１０２は、初期化処理終了後に、内部状態の中から暗号文と同じ長さのビット列を選択する（ステップＳ３０２）。そして、排他的論理和演算部２０１が、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する（ステップＳ３０３）。
【００５６】
したがって、本実施形態によれば、短い暗号文について、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【００５７】
＜第４の実施形態＞
図７および図８を用いて、本実施形態に係るストリーム暗号の復号化装置について説明する。
【００５８】
＜ストリーム暗号の復号化装置の構成＞
図７に示すように、本実施形態に係るストリーム暗号の復号暗号化装置は、初期化処理部１０１と、ビット選択部１０２と、初期ベクトル供給部１０４と、排他的論理和演算部２０１と、結合部２０２とから構成されている。なお、本実施形態に係るストリーム暗号の復号化装置は、暗号文の合計の長さが内部状態の半分よりも大きい場合に好適な復号化装置である。また、第２および第３の実施形態と同一の符号を付す構成要素については、同一の機能を有するものであることから、その詳細な説明は、省略する。
【００５９】
結合部２０２は、暗号文の合計の長さが内部状態の半分よりも大きく、何回かに分けて復号化を行った場合に、順次、排他的論理和演算部２０１から出力される平文を結合して、最終的な平文を生成する。
【００６０】
＜ストリーム暗号の復号化装置の処理＞
図８を用いて、本実施形態に係るストリーム暗号の復号化装置の処理について説明する。
初期化処理部１０１は、初期鍵と初期ベクトルとを用いて、初期化処理を行う（ステップＳ４０１）。ビット選択部１０２は、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する（ステップＳ４０２）。
【００６１】
排他的論理和演算部２０１は、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する（ステップＳ４０３）。次に、暗号文の合計の長さが内部状態の半分よりも大きい場合には、残りの暗号文を復号化するために、初期ベクトル供給部１０４により、初期ベクトルのみを変更して、初期化処理部１０１が、再度、初期化処理を行う（ステップＳ４０４）。
【００６２】
ビット選択部１０２は、初期化処理終了後に、１ビット以上、かつ、内部状態の半分以下のビット列を選択する（ステップＳ４０５）。排他的論理和演算部２０１は、その選択したビット列と暗号文との排他的論理和演算を行い、平文を出力する（ステップＳ４０６）。
【００６３】
そして、ステップＳ４０４からステップＳ４０６までの処理を残りの暗号文の長さが１ビット以上、かつ、内部状態の半分以下になるまで、続行する（ステップＳ４０７）。そして、排他的論理和演算部２０１から、順次出力されたすべての平文を結合部２０３が連結して、暗号文に対応する平文を出力する（ステップＳ４０８）。
【００６４】
したがって、本実施形態によれば、暗号文の長さが内部状態の半分よりも大きい場合には、少なくとも、内部状態の半分以下のビット列に区切って、それぞれについて、再度、初期化処理を行い、復号化の処理を実行する。これにより、暗号文の長さが内部状態の半分よりも大きい場合であっても、鍵系列生成処理を実行せずに復号化を行うため、異なるロジックを追加する必要がなく、復号化処理の効率化を図ることができる。
【００６５】
なお、ストリーム暗号の暗号化装置およびストリーム暗号の復号化装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の暗号化装置およびストリーム暗号の復号化装置に読み込ませ、実行することによって本発明のストリーム暗号の暗号化装置およびストリーム暗号の復号化装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００６６】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００６７】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６８】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６９】
１０１；初期化処理部
１０２；ビット選択部
１０３；排他的論理和演算部
１０４；初期ベクトル供給部
１０５；結合部
２０１；排他的論理和演算部
２０２；結合部
【図１】
0005489696.tif 000002
【図２】
0005489696.tif 000003
【図３】
0005489696.tif 000004
【図４】
0005489696.tif 000005
【図５】
0005489696.tif 000006
【図６】
0005489696.tif 000007
【図７】
0005489696.tif 000008
【図８】
0005489696.tif 000009