(57)【特許請求の範囲】
【請求項１】
クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化装置であって、
キー情報から第１の擬似乱数列を生成する第１の擬似乱数生成手段と、
前記第１の擬似乱数列に基づいて前記クロックコントローラにより行われるクロック制御に従い第２の擬似乱数列を生成する第２の擬似乱数生成手段と、
前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成するキーストリーム生成手段と、
前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する暗号化手段と、
を具備し、
前記クロックコントローラは、前記第２の擬似乱数列を生成するために使用される次数２の有限体を定義する多項式の根αを用い、前記第２の擬似乱数生成手段を構成する線形フィードバックシフトレジスタのフィードバック多項式または特性多項式のビットシフトにおいてα^ｎ（但し、ｎは前記クロックコントローラにより決定されたクロック数）を掛けることにより、前記第２の擬似乱数生成手段に対しクロック制御を行う
ことを特徴とするストリーム暗号化装置。
【請求項２】
前記第１の擬似乱数生成手段は、
線形フィードバックシフトレジスタにより構成されることを特徴とする請求項１に記載のストリーム暗号化装置。
【請求項３】
前記キーストリーム生成手段は、
前記第２の擬似乱数列を入力とし、非線形関数演算を施してプリキーストリームを生成し、前記プリキーストリームと、前記第１もしくは第２の擬似乱数列とを排他的論理和演算し、その結果を線形攪拌処理してキーストリームを生成することを特徴とする請求項１または請求項２に記載のストリーム暗号化装置。
【請求項４】
前記キーストリームと、前記第１または第２の擬似乱数列とを算術加算もしくは排他的論理和演算をして得られるデータに基づき更新され、前記第２の擬似乱数列とともに前記キーストリーム生成手段への入力データとして供給する内部メモリと、
を具備することを特徴とする請求項３に記載のストリーム暗号化装置。
【請求項５】
前記暗号化テキストに所定の間隔で付与される自己同期用の識別情報を参照し、前記識別情報が付与された暗号化テキストを復号した後、前記暗号化テキストを初期値とし、当該初期値と前記キー情報とに基づき前記第１の擬似乱数生成手段と第２の擬似乱数生成手段の内部状態を設定する内部状態設定手段を備え、
前記第１の擬似乱数生成手段は、前記設定された内部状態に基づき第１の擬似乱数列を生成する
ことを特徴とする請求項１から請求項４のいずれか１の項に記載のストリーム暗号化装置。
【請求項６】
クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化方法であって、
キー情報から第１の擬似乱数列を生成する第１のステップと、
前記第１の擬似乱数列に基づいて前記クロックコントローラにより行われるクロック制御に従い第２の擬似乱数列を生成する第２のステップと、
前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成する第３のステップと、
前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する第４のステップと、
を有し、
前記クロック制御は、前記第２の擬似乱数列を生成するために使用される次数２の有限体を定義する多項式の根αを用い、前記第２の擬似乱数列を生成する手段である線形フィードバックシフトレジスタのフィードバック多項式または特性多項式のビットシフトにおいてα^ｎ（但し、ｎは前記クロックコントローラにより決定されたクロック数）を掛けることにより行われる制御である
ことを特徴とするストリーム暗号化方法。
【請求項７】
前記第３のステップは、
前記第２の擬似乱数列を入力とし、非線形関数演算を施してプリキーストリームを生成するサブステップと、
前記プリキーストリームと、前記第１もしくは第２の擬似乱数列とを排他的論理和演算し、その結果を線形攪拌処理してキーストリームを生成するサブステップとを含むことを特徴とする請求項６に記載のストリーム暗号化方法。
【請求項８】
前記ストリーム暗号の内部状態に基づき第１の擬似乱数列を生成するステップと、
前記暗号化テキストに所定の間隔で付与される自己同期用の識別情報を参照し、前記識別情報が付与された暗号化テキストを復号した後、前記暗号化テキストを初期値とし、当該初期値とキー情報とに基づき前記線形フィードバックシフトレジスタの内部状態を設定するステップを有し、
前記第１のステップは、前記設定された内部状態に基づき第１の擬似乱数列を生成するステップである
ことを特徴とする請求項６または請求項７に記載のストリーム暗号化方法。
【請求項９】
クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化装置に用いられるブログラムであって、
キー情報から第１の擬似乱数列を生成する第１の処理と、
前記第１の擬似乱数列に基づいて、次数２の有限体を定義する多項式の根αを用い、線形フィードバックシフトレジスタのフィードバック多項式または特性多項式のビットシフトにおいてα^ｎ（但し、ｎは前記クロックコントローラにより決定されたクロック数）を掛けることによりクロック制御を行って、第２の擬似乱数列を生成する第２の処理と、
前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成する第３の処理と、
前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する第４の処理と、
をコンピュータに実行させるプログラム。
【請求項１０】
前記第３の処理は、
前記第２の擬似乱数列を入力とし、非線形関数演算を施してプリキーストリームを生成するサブ処理と、
前記プリキーストリームと、前記第１もしくは第２の擬似乱数列とを排他的論理和演算し、その結果を線形攪拌処理してキーストリームを生成するサブ処理と、を含むことを特徴とする請求項９に記載のプログラム。
【請求項１１】
前記暗号化テキストに所定の間隔で付与される自己同期用の識別情報を参照し、前記識別情報が付与された暗号化テキストを復号した後、前記暗号化テキストを初期値とし、当該初期値とキー情報とに基づき前記線形フィードバックシフトレジスタの内部状態を設定する処理を含み、
前記第１の処理は、前記設定された内部状態に基づき前記第１の擬似乱数列を生成する処理である
ことを特徴とする請求項９または請求項１０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロックコントローラを用い、ワード単位で暗号化処理を行う、ストリーム暗号化装置および方法ならびにプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスにおいては、通信の秘匿を実現するために、暗号が利用される。暗号化方式として、最も一般的なものは、一つの鍵で暗号化・復号化を行う共通鍵暗号化方式であるが、この共通暗号化方式は、ブロック暗号方式とストリーム暗号方式の２つに大別される。
前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、注目を集められている。【０００３】
上記したストリーム暗号を生成するための方法および装置の一例が以下の特許文献に開示されている。
【特許文献１】特表２００２−５３６９１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、ビット単位で暗号化処理を行うストリーム暗号化方式において、クロック制御は最も一般的な構成の一つとして利用されている。
しかしながら、ワード単位で暗号化するストリーム暗号化方式においては、クロック制御により、ワード長×Ｎ（Ｎはクロック数）のキーストリームが捨てられ、暗号化、復号化の効率が著しく損なわれることから、クロック制御が用いられていない。【０００５】
また、独立した鍵スケジューリングアルゴリズムを持たないため、内部状態が漏洩した場合、秘密鍵が部分的に漏洩してしまうといった安全性の面での問題が指摘されていた。更に、送受信（暗号化／復号化）側で同期ずれが発生した場合の復旧の仕方についても対策が困難であった。【０００６】
本発明は上記事情に基づいてなされたものであり、ワード単位で暗号化を行う際に効率的な処理を実現しながら安全性を向上させ、かつ、乱数性と周期性を保証することができる、キーストリーム暗号化装置および方法ならびにプログラムを提供することを目的とする。
また、暗号化されたデータを用いて自己同期をはかることにより、送受信側で同期ずれが発生しても受信側で自動修復可能な、キーストリーム暗号化装置および方法ならびにプログラムを提供することも目的とする。
【課題を解決するための手段】
【０００７】
上記した課題を解決するために本発明は、クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化装置であって、キー情報から第１の擬似乱数列を生成する第１の擬似乱数生成手段と、前記第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成する第２の擬似乱数生成手段と、前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成するキーストリーム生成手段と、前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する暗号化手段と、を具備することを特徴とする。【０００８】
また、本発明において、前記第１、もしくは第２の擬似乱数生成手段は、線形フィードバックシフトレジスタにより構成されることを特徴とする。【０００９】
また、本発明において、前記第２の擬似乱数生成手段は、
前記第２の擬似乱数を生成するために使用される次数２の有限体を定義する多項式の根αを用い、前記第２の擬似乱数生成手段を構成する線形フィードバックシフトレジスタのフィードバック多項式または特性多項式のビットシフトにおいて、α^ｎを掛けてクロック制御を行う（但し、Ｎはワード長、ｎは決定されたクロック数）ことを特徴とする。【００１０】
また、本発明において、前記第１の擬似乱数発生手段は、前記キー情報に一方向性関数を用いて前記第１の乱数を生成することを特徴とする。【００１１】
また、本発明において、前記キーストリーム生成手段は、前記第２の擬似乱数列を入力とし、非線形関数演算を施してプリキーストリームを生成し、前記プリキーストリームと、前記第１もしくは第２の擬似乱数列とを排他的論理輪演算し、その結果を線形攪拌処理してキーストリームを生成することを特徴とする。【００１２】
また、本発明において、前記キーストリームと、前記第１または第２の擬似乱数列とを算術加算もしくは排他的論理和演算をして得られるデータに基づき更新され、前記第２の擬似乱数とともに前記プリキーストリーム生成手段への入力データとして供給する内部メモリと、を具備することを特徴とする。【００１３】
また、本発明は、クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化装置であって、前記ストリーム暗号の内部状態に基づき第１の擬似乱数列を生成する第１の擬似乱数生成手段と、前記第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成する第２の擬似乱数生成手段と、前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成するキーストリーム生成手段と、前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する暗号化手段と、前記暗号化テキストに所定の間隔で付与される自己同期用の識別情報を参照し、前記識別情報が付与された暗号化テキストを復号した後、前記暗号化テキストを初期値とし、当該初期値と前記キー情報とに基づき前記第１の擬似乱数生成手段と第２の擬似乱数生成手段の内部状態を設定する内部状態設定手段と、を具備することを特徴とする。【００１４】
また、本発明は、クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化方法であって、キー情報から第１の擬似乱数列を生成する第１のステップと、前記第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成する第２のステップと、前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成する第３のステップと、前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する第４のステップと、を有することを特徴とする。【００１５】
また、本発明において、前記第３のステップは、前記第２の擬似乱数列を入力とし、非線形関数演算を施してプリキーストリームを生成するサブステップと、前記プリキーストリームと、前記第１もしくは第２の擬似乱数列とを排他的論理輪演算し、その結果を線形攪拌処理してキーストリームを生成するサブステップとを含むことを特徴とする。【００１６】
また、本発明は、クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化方法であって、前記ストリーム暗号の内部状態に基づき第１の擬似乱数列を生成するステップと、前記第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成するステップと、前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成するステップと、前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成するステップと、前記暗号化テキストに所定の間隔で付与される自己同期用の識別情報を参照し、前記識別情報が付与された暗号化テキストを復号した後、前記暗号化テキストを初期値とし、当該初期値とキー情報とに基づき前記内部状態を設定するステップと、を有することを特徴とする。【００１７】
また、本発明は、クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化装置に用いられるブログラムであって、キー情報から第１の擬似乱数列を生成する第１の処理と、前記第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成する第２の処理と、前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成する第３の処理と、前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する第４の処理と、をコンピュータに実行させることを特徴とする。【００１８】
また、本発明において、前記第３の処理は、前記第２の擬似乱数列を入力とし、非線形関数演算を施してプリキーストリームを生成するサブ処理と、前記プリキーストリームと、前記第１もしくは第２の擬似乱数列とを排他的論理輪演算し、その結果を線形攪拌処理してキーストリームを生成するサブ処理と、を含むことを特徴とする。【００１９】
また、本発明は、クロックコントローラを用いワード単位で暗号化処理を行うストリーム暗号化装置に用いられるプログラムであって、前記ストリーム暗号の内部状態に基づき第１の擬似乱数列を生成する処理と、前記第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成する処理と、前記第２の擬似乱数列を入力とし、非線形関数演算を施してキーストリームを生成する処理と、前記生成されるキーストリームとプレーンテキストとを排他的論理和演算して暗号化テキストを生成する処理と、前記暗号化テキストに所定の間隔で付与される自己同期用の識別情報を参照し、前記識別情報が付与された暗号化テキストを復号した後、前記暗号化テキストを初期値とし、当該初期値とキー情報とに基づき前記内部状態を設定する処理と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、キー情報から第１の擬似乱数列を生成し、当該第１の擬似乱数列に基づいて行われるクロック制御に従って第２の擬似乱数列を生成し、非線形関数演算を施してキーストリームを生成することでワード単位での暗号化の特徴を生かしたクロック制御を行うことができ、効率を落とすことなく安全性を向上させることができる。また、クロックが直接キーストリームに反映されないため、解析方法が限定されるといった効果も得られる。【００２１】
更に、非線形関数演算手段で非線形関数演算処理を施した出力と、非線形関数演算処理を施す前の出力との排他的論理和演算を行い、線形攪拌処理部が、排他的論理和演算を行った後の出力を線形攪拌処理することで、第１と第２の擬似乱数生成手段が元々持つ乱数性と、非線形関数演算手段が元々持つ周期性とを均一化することができ、このことにより、安全性はもとより、乱数性と周期性を保証することができる。【００２２】
また、送信（暗号化）側で暗号化テキストに所定の間隔で自己同期用の識別情報を付与し、受信（復号化）側でその識別情報を参照し、暗号化テキストに自己同期用の識別情報が付与されていれば、復号した後、その暗号化テキストを初期値とし、当該初期値とキー情報とに基づき第１の擬似乱数生成手段と第２の擬似乱数生成手段の内部状態を設定し、上記した一連の処理を実行することにより、送受信側で同期ずれが発生しても受信側で自動的に修復が可能となり、より、安全性が確保される。
【図面の簡単な説明】
【００２３】
【図１】第１の実施形態に係るストリーム暗号化装置の内部構成を示すブロック図である。
【図２】第１の実施形態におけるストリーム暗号化方法の各工程を説明するために引用したフローチャートである。
【図３】第１の実施形態におけるストリーム暗号化方法の各工程を説明するために引用したフローチャートである。
【図４】第２の実施形態に係るストリーム暗号化装置の内部構成を示すブロック図である。
【図５】第２の実施形態におけるストリーム暗号化方法の各工程を説明するために引用したフローチャートである。
【図６】第２の実施形態におけるストリーム暗号化方法の各工程を説明するために引用したフローチャートである。
【図７】第２の実施形態に係るストリーム暗号化装置による線形攪拌処理の一例を説明するために引用した図である。
【図８】第２の実施形態に係るストリーム暗号化装置の応用例の内部構成を示すブロック図である。
【図９】図８に示すストリーム暗号化装置の動作を説明するために引用したフローチャートである。
【符号の説明】
【００２４】
１  内部状態生成部、
２  ＬＦＳＲ−Ａ（第１の擬似乱数列発生手段）、
３  クロックコントローラ、
４  ＬＦＳＲ−Ｂ（第２の擬似乱数列発生手段）、
５  内部メモリ、
６  非線型関数発生器（プリキーストリーム生成手段）、
７  ＸＯＲ演算器（キーストリーム生成手段）、
８  線形攪拌処理部（キーストリーム生成手段）、
９  ＸＯＲ演算器（暗号化手段）、
１０  加算器、
１１  識別情報付与部
【発明を実施するための最良の形態】
【００２５】
＜第１の実施形態＞
図１は、本発明の実施形態に係るストリーム暗号化装置の内部構成を示すブロック図である。
本発明の実施形態に係るストリーム暗号化装置は、内部状態生成部１と、ＬＦＳＲ−Ａ（第１の擬似乱数列生成部）２と、クロックコントローラ３と、ＬＦＳＲ−Ｂ（第２の擬似乱数列生成部）４と、内部メモリ５と、非線形関数演算器６と、排他的論理和（ＸＯＲ）演算器７とで構成される。【００２６】
内部状態生成部１は、外部から秘密鍵（ＩＫ）と初期値（ＩＶ）とを入力として、内蔵のキースケジュールアルゴリズムを実行して決定される内部状態を第１の擬似乱数生成手段として用いられる線形フィードバックシフトレジスタＬＦＳＲ−Ａ（２）と、第２の擬似乱数列生成手段として用いられる線形フィードバックシフトレジスタＬＦＳＲ−Ｂ（４）のそれぞれに設定する。【００２７】
ここで、ＬＦＳＲ−Ｂ（４）により生成されるキーストリーム（第２の擬似乱数列）は、キーストリーム生成手段として用いられる非線形関数演算器６の入力として供給されている。非線型関数発生器６は、入力されたキーストリームと、内部メモリ５に記憶された内容（初期値は０ｘ００）とにより、ある非線形関数演算を実行して新たなキーストリームを生成する。【００２８】
一方、非線型関数発生器６の出力は内部メモリ５にも供給されており、内容更新された内部メモリ５の出力は非線形関数演算器６にフィードバック入力される。また、ＬＦＳＲ−Ａ（２）は、クロック制御を行うクロックコントローラ３に対してキーストリーム（第１の擬似乱数列）を出力している。クロックコントローラ３は、入力されたキーストリームに従いクロック（シフト量）を決定してＬＦＳＲ−Ｂ（４）を制御する構成になっている。【００２９】
なお、暗号化手段として用いられる演算器７は、プレーンテキストと非線形関数演算器６から出力されるキーストリームとをＸＯＲ演算して暗号化テキストを出力する。【００３０】
図２、図３は、本発明の実施形態に係るストリーム暗号化方法の各工程を説明するために引用したフローチャートである。
以下、図２、図３に示すフローチャートを参照しなから、本発明の実施形態に係るストリーム暗号化方法、および図１に示すストリーム暗号化装置の動作について詳細に説明する。【００３１】
まず、図２に示すフローチャートを参照しながら初期処理とキーストリーム処理について説明する。最初に初期処理から説明する。
ＬＦＳＥ−Ａ（２）、ＬＦＳＲ−Ｂ（４）への内部状態の設定にあたり、内部状態生成部１へ秘密鍵（Initial Key）と初期値（Initial Value）を入力する（Ｓ２１）。内部状態生成部１は、所定のキースケジュールアルゴリズムに従い内部状態を決定し（Ｓ２２）、ＬＦＳＥ−Ａ（２）、ＬＦＳＲ−Ｂ（４）のそれぞれに内部状態（第１の擬似乱数列、第２の擬似乱数列）を設定する（Ｓ２３）。【００３２】
上記した初期処理の後、以下の手順に従って暗号化あるいは復号化のためのキーストリーム処理を実行する。
すなわち、ＬＦＳＲ−Ｂ（４）により出力されるキーストリーム（第２の擬似乱数列）は、後述するクロックコントローラ３によるクロック制御（Ｓ２４）を経て非線形関数演算器６の入力として供給されている。非線型関数発生器６は、入力されたキーストリームと、内部メモリ５に記憶された内容（初期値は０ｘ００）とにより、ある非線形関数演算を実行して新たなキーストリームを生成する（Ｓ２５）。そして、非線型関数発生器６により生成されるキーストリームは、演算器７に供給され、演算器７でキーストリームとプレーンテキストとのＸＯＲ演算が実行され、このことにより、暗号化あるいは復号化テキストが生成される（Ｓ２６）。【００３３】
次に、上記した内部状態の更新処理について図３に示すフローチャートを参照しながら説明する。
まず、非線型関数発生器６の出力は演算器７の他に内部メモリ５にも供給されており、内容更新された内部メモリ５の出力は非線形関数演算器６にフィードバック入力される（Ｓ３１）。また、ＬＦＳＲ−Ａ（２）は、クロック制御を行うクロックコントローラ３に対して第１の擬似乱数列を出力している（Ｓ３２）。【００３４】
クロックコントローラ３は、入力されたキーストリーム（第１の擬似乱数列）に従いクロックを決定してＬＦＳＲ−Ｂ（４）を制御する（Ｓ３３）。
具体的に、ここでは、ＬＦＳＲ−Ａ（２）、ＬＦＳＲ−Ｂ（４）を１周期動作させる。その際、クロックコントローラ３は、次数２のガロア有限フィールド（ＧＦ２^Ｎ）を定義する多項式の根αに従い、ＬＦＳＲ−Ｂ（４）のフィードバックポリノミアル（図１中結線部分）のビットシフトにクロック制御（α^ｎを掛ける）を行う（Ｓ３４）。ここで、ｎはクロックコントローラ３が決定したクロック数（シフト量）である。このことにより、１ワード内でのクロック制御を行う。
次に、上記したキーストリーム生成処理に戻り、以降説明した処理を繰り返す。【００３５】
以上説明のように本発明は、キー情報から第１の擬似乱数列を生成し、当該第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成し、非線形関数演算を施してキーストリームを生成することで、ワード単位での暗号化の特徴を生かしたクロック制御を行うものであり、効率を落とすことなく安全性を向上させる。本発明によれば、クロックが直接生成されるキーストリームに反映されないため、解析方法が限定されるといった派生的効果も得られる。【００３６】
また、第２の擬似乱数生成手段をＬＦＳＲで構成し、フィードバックポリノミアルのビットシフトにクロック制御を導入することで安全性の向上とロスの最小化がはかれる。
更に、第１の擬似乱数生成手段に、ブロック暗号で使用されている鍵スケジュールアルゴリズムに基づき、ＬＦＳＲとは独立した初期値設定を行うことで安全性が増し、万が一、内部状態が漏洩しても、アルゴリズムとしてハッシュ関数等の一方向性関数が保証されたアルゴリズムを用いることで共有鍵を危殆化しない仕組みを構築することができる。【００３７】
＜第２の実施形態＞
図４は、第２の実施形態に係るストリーム暗号化装置の内部構成を示すブロック図である。
本実施形態に係るストリーム暗号化装置は、内部状態生成部１と、第１の擬似乱数列生成部２と、クロックコントローラ３と、第２の擬似乱数列生成部４と、内部メモリ５と、非線形関数発生器６と、排他的論理和（ＸＯＲ）演算器７と、線形攪拌処理部８と、ＸＯＲ演算器９と、加算器１０とで構成される。なお、第１の実施形態と同一の符号を付す部分は、同様の機能を有することから詳細な説明は省略する。【００３８】
線形攪拌処理部８は、非線形関数演算器６により生成されるプリキーストリームと、ＬＦＳＲ−Ｂ（４）により生成される第２の擬似乱数列とを排他的論理輪演算した結果を線形攪拌処理してキーストリームを生成し、ＸＯＲ演算器９および加算器１０の一方の入力端子へ供給する。【００３９】
加算器１０の他方の入力端子には、ＬＦＳＲ−Ａ（２）により出力されるキーストリーム（第１の擬似乱数列）が供給されている。加算器１０は、線形攪拌処理部８により出力されるキーストリームと、ＬＦＳＲ−Ａ（２）により出力されるキーストリーム（第１の擬似乱数列）とを算術加算して内部メモリ５へ供給し、内部メモリ５の内容更新を行う。
なお、暗号化手段として用いられるＸＯＲ演算器９は、プレーンテキストと線形攪拌処理部８から出力されるキーストリームとをＸＯＲ演算して暗号化テキスト（以下、サイファーテキストという）を出力する。【００４０】
図５、図６は、本実施形態に係るストリーム暗号化方法の各工程を説明するために引用したフローチャートである。
以下、図５、図６に示すフローチャートを参照しなから、本発明の実施形態に係るストリーム暗号化方法、および図４に示すストリーム暗号化装置の動作について詳細に説明する。【００４１】
まず、図５に示すフローチャートを参照しながら初期処理とキーストリーム処理について説明する。最初に初期処理から説明する。
ＬＦＳＥ−Ａ（２）、ＬＦＳＲ−Ｂ（４）への内部状態の設定にあたり、外部から、内部状態生成部１に対して、秘密鍵（Initial Key）と初期値（Initial Value）が設定入力される（Ｓ５１）。内部状態生成部１は、所定のキースケジュールアルゴリズムに従い内部状態を決定し（Ｓ５２）、ＬＦＳＥ−Ａ（２）、ＬＦＳＲ−Ｂ（４）のそれぞれに内部状態（第１の擬似乱数列、第２の擬似乱数列）を設定する（Ｓ５３）。【００４２】
上記した初期処理の後、本発明のストリーム暗号化装置は、以下の手順に従って暗号化あるいは復号化のためのキーストリーム処理を実行する。
すなわち、ＬＦＳＲ−Ｂ（４）により出力されるキーストリーム（第２の擬似乱数列）は、後述するクロックコントローラ３によるクロック制御（Ｓ５４）に基づき非線形関数発生器６の入力として供給されている（Ｓ５５）。非線型関数発生器６は、入力されたキーストリームと、内部メモリ５に記憶された内容（初期値は０ｘ００）とにより、ある非線形関数演算を実行してプリキーストリームを生成する（Ｓ５６）。そして、非線型関数発生器６により生成されるプリキーストリームは、ＸＯＲ演算器７に供給され、ＸＯＲ演算器７は、このプリキーストリームとＦＳＲ−Ｂ（４）により出力されるキーストリーム（第２の擬似乱数列）とのＸＯＲ演算を実行し、その結果を線形攪拌処理部８へ供給する（Ｓ５７）。【００４３】
線形攪拌処理部８は、ＸＯＲ演算器７の出力の線形攪拌処理を実行するが、例えば、図８に示されるように、（ａ）ＸＯＲ演算した結果得られる入力データを、（ｂ）ブロック単位に区切って平面上に配置し、（ｃ）（ｄ）縦方向、横方向に回転させる。（ｅ）そして、再びビット列に変換してキーストリームとして出力する（Ｓ５８）。【００４４】
このように、線形攪拌処理部８が、非線形間末演算器６により出力されるプリキーストリームと、ＬＦＳＲ−Ｂ（４）出力であるキーストリーム（第２の擬似乱数列）とのＸＯＲ演算の出力結果を線形攪拌処理することで、ＬＦＳＲ−Ａ（２）とＬＦＳＲ−Ｂ（４）が元々持つ乱数性と、非線形関数演算器６が元々持つ周期性とを均一化することができ、このことにより、乱数性と周期性を保証することができる。【００４５】
なお、攪拌処理部８により出力されるキーストリームは、プレーンテキストと共にＸＯＲ演算器９に供給され、ＸＯＲ演算器９により暗号化／復号化され、サイファーテキストが生成される（Ｓ５９）。【００４６】
次に、上記した内部状態の更新処理について図６に示すフローチャートを参照しながら説明する。
線形攪拌処理部８により出力されるキーストリームは、ＸＯＲ演算器９の他に加算器１０にも供給されている。加算器１０には、他に、ＬＦＳＲ−Ａ（２）からもキーストリーム（第１の擬似乱数列）が供給されており、この加算器１０で算術加算された結果生成されるキーストリームに基づき内部メモリ５の内容が更新される（Ｓ７１）。【００４７】
このことにより、内部メモリ５に記憶される内容の隠蔽がはかれ、一層、安全性が向上する。すなわち、万が一、線形攪拌処理部８からのキーストリームがわかったとしても、ＬＦＳＲ−Ａ（２）から出力されるキーストリームを推測しない限り内部メモリ５の内容が漏れることはない。【００４８】
内容更新された内部メモリ５の出力は非線形関数発生器６にフィードバック入力される。また、ＬＦＳＲ−Ａ（２）は、クロック制御を行うクロックコントローラ３に対して第１の擬似乱数列を出力している（Ｓ７２）。【００４９】
クロックコントローラ３は、入力されたキーストリーム（第１の擬似乱数列）に従いクロックを決定してＬＦＳＲ−Ｂ（４）を制御する（Ｓ７３）。
具体的に、ここでは、ＬＦＳＲ−Ａ（２）、ＬＦＳＲ−Ｂ（４）を１周期動作させる。その際、クロックコントローラ３は、次数２のガロア有限フィールド（ＧＦ２^Ｎ）を定義する多項式の根αに従い、ＬＦＳＲ−Ｂ（４）のフィードバックポリノミアル（図４中、結線部分）のビットシフトにクロック制御（α^ｎを掛ける）を行う（Ｓ７４）。ここで、ｎはクロックコントローラ３が決定したクロック数（シフト量）である。このことにより、１ワード内でのクロック制御を行う。次に、上記したキーストリーム生成処理に戻り、以降説明した処理を繰り返す。【００５０】
上記した本発明の実施形態によれば、キー情報から第１の擬似乱数列を生成し、当該第１の擬似乱数列に基づいて行われるクロック制御に従い第２の擬似乱数列を生成し、非線形関数演算を施してキーストリームを生成するものであり、このことにより、ワード単位での暗号化の特徴を生かしたクロック制御を行うことができ、効率を落とすことなく安全性を向上させることができる。また、クロックが直接生成されるキーストリームに反映されないため、解析方法が限定されるといった効果も得られる。【００５１】
また、第２の擬似乱数生成手段をＬＦＳＲで構成し、フィードバックポリノミアルのビットシフトにクロック制御を導入することで安全性の向上とロスの最小化がはかれる。更に、第１の擬似乱数生成手段に、ブロック暗号で使用されている鍵スケジュールアルゴリズムに基づき、ＬＦＳＲとは独立した初期値設定を行うことで安全性が増し、万が一、内部状態が漏洩しても、アルゴリズムとしてハッシュ関数等の一方向性関数が保証されたアルゴリズムを用いることで共有鍵を危殆化しない仕組みを構築することができる。【００５２】
また、非線形関数演算機により非線形関数演算を施した出力と、非線形関数演算を施す前の出力との排他的論理和演算を行い、この排他的論理和演算を行った後の出力を線形攪拌処理することで、第１と第２の擬似乱数生成手段が元々持つ乱数性と、非線形関数演算手段が元々持つ周期性とを均一化することができ、このことにより、安全性はもとより、乱数性と周期性を保証することができる。【００５３】
図８は、本発明の実施形態に係るストリーム暗号化装置の応用例についての内部構成を示すブロック図である。
図４に示す実施形態との構成上の差異は、サイファーテキストを生成するＸＯＲ演算器９出力に、識別情報付与部１１を付加したことにある。識別情報付与部１１は、サイファーテキスト（ＣＴ）に、一定の間隔毎に自己同期用の識別情報（Ｈ１）を付与するモジュールであり、その間隔は任意に設定できるものとする。【００５４】
受信（復号化）側では、上記した初期処理を実行した状態で待機し、サイファーデータを受信した場合には、上記した、キーストリーム生成、暗号化／復号化処理、内部状態更新処理を逐次実行して初期処理に戻る。図９にその処理手順がフローチャートで示されている。
以下、図９のフローチャートを参照しながら、本発明の実施形態に係るストリーム暗号化装置の応用例についての動作説明を行う。【００５５】
まず、内部状態生成部１は、受信したサイファーテキストに自己同期用の識別情報が付与されていれば、そのサイファーテキストを初期値（ＩＶ）として、初期処理（内部状態の設定）を実行する（Ｓ９１）。
ここでいう、初期処理とは、内部状態生成部１が、秘密鍵（ＩＫ）と初期値（ＩＶ）とを内蔵するキースケジュールアルゴリズムに設定入力し、このキースケジュールアルゴリズムに従い決定される内部状態を、ＬＦＳＲ−Ａ（２）とＬＦＳＲ−Ｂ（４）に入力する処理をいう。【００５６】
ストリーム暗号化装置は、送信側からのサイファーデータの送信を待ち（Ｓ９２）、サイファーデータを受信したときに、非線形関数演算器６を介してキーストリームを生成し（Ｓ９３）、暗号化／復号化処理を実行する（Ｓ９４）。
具体的に、非線形関数演算器６が、ＬＦＳＲ−Ｂ（４）により出力されるキーストリーム（第２の擬似乱数列）に非線形関数演算を施すことによりプリキーストリームが生成され、当該プリキーストリームと、ＬＦＳＲ−Ｂ（４）により出力されるキーストリーム（第２の擬似乱数列）とを排他的論理輪演算して得られる結果を、更に線形攪拌処理部８で線形攪拌処理することによりキーストリームが生成される（Ｓ９３：キーストリーム生成）。また、サイファーテキストは、線形攪拌処理部８により出力されるキーストリームと、プレーンテキストとをＸＯＲ演算器９により排他的論理和演算することにより生成される（Ｓ９４：暗号化／復号化処理）。【００５７】
暗号化と復号化のロジックは同様の構成を採り、このため、暗号化されたデータを暗号化すれば復号化することができる。したがって、受信側では、復号化処理を実行した後、内部状態設定部１が、生成されたサイファーテキストを参照し（Ｓ９５）、例えば、そのヘッダに自己同期用の識別情報が付与されていれば、そのサイファーテキストを初期値（ＩＶ）とすることができる（Ｓ９６）。そして、秘密鍵（ＩＫ）を入力として得ることにより、内蔵のキースケジュールアルゴリズムに従う初期処理（ＬＦＳＲ−Ａ（２）とＬＦＳＲ−Ｂ（４）に決定された内部状態を入力）を実行する（Ｓ６１）ことができる。【００５８】
上記した本発明の応用例によれば、送信（暗号化）側で、暗号化テキストに所定の間隔で自己同期用の識別情報を付与し、受信（復号化）側で、その識別情報を参照し、暗号化テキストに自己同期用の識別情報が付与されていれば、復号した後にその暗号化テキストを初期値とし、当該初期値とキー情報とに基づき第１の擬似乱数生成手段と第２の擬似乱数生成手段の内部状態を設定し、上記した一連の処理を実行するものであり、このことにより、送受信側で同期ずれが発生しても受信側で自動的に修復が可能となり、より安全性が確保される。【００５９】
なお、上記した応用例を含む本発明の実施形態によれば、ＸＯＲ演算器７の一方の入力として、ＬＦＳＲ−Ｂ（４）出力を用い、また、加算器１０の一方の入力として、ＬＦＳＲ−Ａ（２）出力を用いたが、それぞれ、ＬＦＳＲ−Ａ（２）出力、ＬＦＳＲ−Ｂ（４）出力を用いても同じ効果が得られ、その組み合わせは任意である。【００６０】
また、図４、図８に示す内部状態生成部１、ＬＦＳＲ−Ａ（２）、クロックコントローラ３、ＬＦＳＲ−Ｂ（４）、内部メモリ５、非線型関数発生器６、ＸＯＲ演算器７、９、攪拌処理部８、加算器１０、識別情報付与部１１のそれぞれで実行される手順をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによっても本発明のストリーム暗号化装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺機器等のハードウェアを含む。【００６１】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。【００６２】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。【００６３】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図１】
0004750105.tif 000002
【図２】
0004750105.tif 000003
【図３】
0004750105.tif 000004
【図４】
0004750105.tif 000005
【図５】
0004750105.tif 000006
【図６】
0004750105.tif 000007
【図７】
0004750105.tif 000008
【図８】
0004750105.tif 000009
【図９】
0004750105.tif 000010