(57)【要約】【課題】効率的な処理を実現しながら、安全性に関しても乱数性と周期性を保証し、かつ、数学的に安全性の証明可能な、ストリーム暗号方式に対応した擬似乱数を生成する。【解決手段】順序攪拌部１０３が、各線形フィードバックシフトレジスタ１０１からのビット列を結合するとともに、ビット列の順序を線形フィードバックシフトレジスタ１０２からの出力値に基づいて攪拌し、順序攪拌後のビット列に対して、数学的に安全性が証明可能な非線形変換部１０４が更に攪拌することで、次に生成される擬似乱数を推定することが困難であり、かつ周期が大きく、数学的に安全性の証明可能な擬似乱数を生成する。【選択図】図１
2010181789.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが所定ビット長のビット列を出力する順序付けられている複数の第１の線形フィードバックシフトレジスタと、
前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を制御するための制御値を出力する第２の線形フィードバックシフトレジスタと、
前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を前記第２の線形フィードバックシフトレジスタから出力された制御値に基づいて攪拌するとともに、前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列を結合する順序攪拌部と、
前記順序攪拌部により攪拌され結合された結合ビット列を入力し、入力した結合ビット列を攪拌する、数学的に安全性が証明可能である非線形変換部と、
前記非線形変換部により攪拌された結合ビット列を用いて処理対象データに対してストリーム暗号方式による暗号及び復号の少なくともいずれかを行うデータ処理部とを有することを特徴とする情報処理装置。
【請求項２】
前記非線形変換部は、
鍵を入力し、
入力した鍵と、入力した鍵が秘密であれば数学的に安全性が証明可能である一方向性関数とを用いて、前記順序攪拌部から入力した結合ビット列を攪拌することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記非線形変換部は、
前記複数の第１の線形フィードバックシフトレジスタ及び前記第２の線形フィードバックシフトレジスタのいずれに対してもフィードバックを行わないことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記非線形変換部は、
前記順序攪拌部から入力した結合ビット列の攪拌のための複数段階の演算処理をパイプライン制御により行うことを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
前記非線形変換部は、
パラメータを変更することにより各段階の演算処理の内容を変更可能であることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記情報処理装置は、
Ｎ（Ｎは２以上の整数）個の第１の線形フィードバックシフトレジスタを有し、
前記Ｎ個の第１の線形フィードバックシフトレジスタは、それぞれ、
ガロア体ＧＦ（２Ｋ）（Ｋは２以上の整数）で定義される原始多項式を生成多項式としてＫビット長のビット列を生成し、
前記第２の線形フィードバックシフトレジスタは、
ガロア体ＧＦ（２Ｎ）で定義される原始多項式を生成多項式としてＮビット長のビット列を前記制御値として生成し、
前記順序攪拌部は、
前記Ｎ個の第１の線形フィードバックシフトレジスタから出力されたＮ個のＫビット長のビット列の順序を前記第２の線形フィードバックシフトレジスタから出力されたＮ個の制御値に基づいて攪拌するとともに、前記複数の第１の線形フィードバックシフトレジスタから出力されたＮ個のＫビット長のビット列を結合することを特徴とする請求項１〜５のいずれかに記載の情報処理装置。
【請求項７】
前記複数の第１の線形フィードバックシフトレジスタ及び前記第２の線形フィードバックシフトレジスタは、それぞれ、
生成多項式として用いる原始多項式を変更可能であることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
それぞれが所定ビット長のビット列を出力する順序付けられている複数の第１の線形フィードバックシフトレジスタと、
前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を制御するための制御値を出力する第２の線形フィードバックシフトレジスタとを有するコンピュータが行う情報処理方法であって、
前記コンピュータが、前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を前記第２の線形フィードバックシフトレジスタから出力された制御値に基づいて攪拌するとともに、前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列を結合する順序攪拌ステップと、
前記コンピュータが、前記順序攪拌ステップにより攪拌され結合された結合ビット列を攪拌する、数学的に安全性が証明可能である非線形変換ステップと、
前記コンピュータが、前記非線形変換ステップにより攪拌された結合ビット列を用いて処理対象データに対してストリーム暗号方式による暗号及び復号の少なくともいずれかを行うデータ処理ステップとを有することを特徴とする情報処理方法。
【請求項９】
それぞれが所定ビット長のビット列を出力する順序付けられている複数の第１の線形フィードバックシフトレジスタと、
前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を制御するための制御値を出力する第２の線形フィードバックシフトレジスタとを有するコンピュータに、
前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を前記第２の線形フィードバックシフトレジスタから出力された制御値に基づいて攪拌するとともに、前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列を結合する順序攪拌処理と、
前記順序攪拌処理により攪拌され結合された結合ビット列を攪拌する、数学的に安全性が証明可能である非線形変換処理と、
前記非線形変換処理により攪拌された結合ビット列を用いて処理対象データに対してストリーム暗号方式による暗号処理及び復号処理の少なくともいずれかのデータ処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、この発明は、ストリーム暗号方式に対応する擬似乱数生成技術に関する。
【背景技術】
【０００２】
近年、コンピュータや通信装置を利用した様々なサービスが提供され、それらのサービスでは、通信の秘匿や認証を実現するために、暗号技術を用いていることが多い。
暗号化方式として、最も一般的なものは、共通の鍵で暗号化・復号化を行う共通鍵暗号化方式であるが、この共通暗号化方式は、ブロック暗号方式とストリーム暗号方式の２つに大別される。
ブロック暗号方式の方が現在一般的に用いられていることが多い方式であるが、ストリーム暗号に関しても後者の方が処理速度で優れている場合が多く、近年再度注目を集める技術分野である。
上記したストリーム暗号を生成するための方法および装置の一例が以下の特許文献に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００２−５３６９１２号公報
【特許文献２】国際公開ＷＯ２００６／１００８０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、ストリーム暗号方式は、ビット単位で暗号化処理を行うものが一般的であり、その構成として、クロック制御は最も一般的として利用されている。
特許文献１における従来技術では、処理効率を向上させる効果の目的で暗号化処理の単位がビット単位からワード単位に変更されているが、ワード単位で暗号化するストリーム暗号化方式においては、クロック制御を用いた場合、ワード長×Ｎ（Ｎはクロック数）の生成された擬似乱数を利用することなく棄却され、暗号化効率の観点から、クロック制御が用いられていない。
【０００５】
上記の課題を踏まえて、特許文献２における従来技術では、ワード単位で暗号化を行う際に効率的な処理を実現しながら安全性を向上させ、かつ、乱数性と周期性を保証することが可能であることが開示されている。
しかし、ブロック暗号方式では確立されている差分解読法や線形解読法のような非常に一般的な攻撃方法に対する安全性指標がストリーム暗号方式には存在しておらず、ストリーム暗号の方式ごとに安全性評価の方式を検討し、安全性の議論を行う必要がある。
【０００６】
本発明は上記事情に基づいてなされたものであり、効率的な処理を実現しながら、安全性に関しても乱数性と周期性を保証し、かつ、数学的に安全性の証明可能な、ストリーム暗号方式に対応した擬似乱数生成装置等を提供することを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、
それぞれが所定ビット長のビット列を出力する順序付けられている複数の第１の線形フィードバックシフトレジスタと、
前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を制御するための制御値を出力する第２の線形フィードバックシフトレジスタと、
前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列の順序を前記第２の線形フィードバックシフトレジスタから出力された制御値に基づいて攪拌するとともに、前記複数の第１の線形フィードバックシフトレジスタから出力された複数のビット列を結合する順序攪拌部と、
前記順序攪拌部により攪拌され結合された結合ビット列を入力し、入力した結合ビット列を攪拌する、数学的に安全性が証明可能である非線形変換部と、
前記非線形変換部により攪拌された結合ビット列を用いて処理対象データに対してストリーム暗号方式による暗号及び復号の少なくともいずれかを行うデータ処理部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、第１の線形フィードバックシフトレジスタ、第２の線形フィードバックシフトレジスタ及び順序攪拌部による順序攪拌、更に数学的に安全性が証明可能である非線形処理部による攪拌により、次に生成される擬似乱数を推定することが困難であり、かつ周期が大きく、数学的に安全性の証明可能な擬似乱数を生成することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る情報処理装置の構成例を示す図。
【図２】実施の形態１に係る暗号アルゴリズムを説明する図。
【図３】実施の形態１に係るＢｙｔｅ置換処理の例を示す図。
【図４】実施の形態１に係る非線形変換処理の例を示す図。
【図５】実施の形態２に係る暗号アルゴリズムを説明する図。
【図６】実施の形態１及び２に係る情報処理装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態に係る情報処理装置は、ストリーム暗号方式で擬似乱数を生成するものであり、Ｍ系列等を発生させる複数の線形フィードバックシフトレジスタ（以下、ＬＦＳＲとも表記する）の出力をさらに異なる線形フィードバックシフトレジスタの出力によって順序の攪拌を行い、生成されたストリーム系列を、数学的に安全性が証明可能な非線形変換部に入力し処理することで、偏りが無く、入力される秘密情報を知らない限り次に生成される系列が推測困難な擬似乱数を出力するものである。
以下、本実施の形態に係る情報処理装置の詳細を図１〜図４を参照して説明する。
【００１１】
図１は、本実施の形態に係る情報処理装置１００の構成例を示す。
図１において、複数の線形フィードバックシフトレジスタ１０１は、それぞれが所定ビット長のビット列を出力する線形フィードバックシフトレジスタである。各線形フィードバックシフトレジスタ１０１は、より具体的には、Ｍ系列等の周期性の保証された擬似乱数系列を出力する。また、複数の線形フィードバックシフトレジスタ１０１は、各々順序づけられており、図１ではＬ１〜ＬＮという順序が付けられている。
線形フィードバックシフトレジスタ１０１は、第１の線形フィードバックシフトレジスタの例である。
【００１２】
線形フィードバックシフトレジスタ１０２は、複数の線形フィードバックシフトレジスタ１０１から出力された複数のビット列の順序を制御するための制御値を出力する。
線形フィードバックシフトレジスタ１０２は、第２の線形フィードバックシフトレジスタの例である。
【００１３】
順序攪拌部１０３は、複数の線形フィードバックシフトレジスタ１０１から出力された複数のビット列の順序を線形フィードバックシフトレジスタ１０２から出力された制御値に基づいて攪拌するとともに、複数の線形フィードバックシフトレジスタ１０１から出力された複数のビット列を結合する。
【００１４】
非線形変換部１０４は、順序攪拌部１０３により攪拌され結合された結合ビット列を入力し、入力した結合ビット列を非線形変換して攪拌する。非線形変換部１０４は、数学的に安全性が証明可能である。より具体的には、非線形変換部１０４は、鍵を入力するとともに、入力した鍵と、入力した鍵が秘密であれば数学的に安全性が証明可能である一方向性関数とを用いて、順序攪拌部１０３から入力した結合ビット列を攪拌する。
【００１５】
データ処理部１０５は、非線形変換部１０４により攪拌された結合ビット列（疑似乱数）を用いて処理対象データに対してストリーム暗号方式による暗号化又は復号を行う。
図１では、データ処理部１０５は平文系列Ｐの暗号化を行って暗号文系列Ｃを得る例を示しているが、データ処理部１０５は暗号文系列Ｃの復号を行ってもよい。
【００１６】
次に、図１に示した情報処理装置１００を用いて暗号化を行う場合の暗号アルゴリズムの概要を説明する。
図２は、本実施の形態に係る暗号アルゴリズムの例を示す。
【００１７】
図２では、ワード単位を６４ビットとし、ワード単位でストリーム暗号方式に従って暗号化する例を説明する。
ＬＦＳＲ１〜８及びＬＦＳＲ９は、ガロア体ＧＦ（２８）で定義する原始多項式をパラメータにより構成される線形フィードバックシフトレジスタであり、Ｍ系列と呼ばれる周期性の保証された擬似乱数系列を生成する構成とする。
図２のＬＦＳＲ１〜８は、図１の線形フィードバックシフトレジスタ１０１（第１の線形フィードバックシフトレジスタ）に相当する。つまり、図２では、８個の線形フィードバックシフトレジスタ１０１を用いている。また、ＬＦＳＲ９は、図１の線形フィードバックシフトレジスタ１０２（第２の線形フィードバックシフトレジスタ）に相当する。
このように、図２に示すように、情報処理装置１００は、Ｎ（Ｎは２以上の整数）個の第１の線形フィードバックシフトレジスタを有し、Ｎ個の第１の線形フィードバックシフトレジスタは、それぞれ、ガロア体ＧＦ（２Ｋ）（Ｋは２以上の整数）で定義される原始多項式を生成多項式としてＫビット長のビット列を生成する。そして、第２の線形フィードバックシフトレジスタは、ガロア体ＧＦ（２Ｎ）で定義される原始多項式を生成多項式としてＮビット長のビット列を制御値として生成する。
なお、図２では、ワードを６４ビットとし、８個のＬＦＳＲ（ＬＦＳＲ１〜８）を用い、各ＬＦＳＲは８ビットの疑似乱数を出力し、ＬＦＳＲ９も８ビットの疑似乱数（制御値）を出力する。
【００１８】
順序攪拌部１０３は、ＬＦＳＲ１〜８からの出力に、ＬＦＳＲ９の出力を適用して、Ｂｙｔｅ置換処理を行う。
順序攪拌部１０３のＢｙｔｅ置換処理の詳細は、後述する。
また、非線形変換部１０４の非線形変換処理及び置換６４（１０６）の処理の詳細も、後述する。
なお、置換６４（１０６）は図１には示されておらず、図２において追加された機能である。なお、置換６４（１０６）は省略してもよい。
【００１９】
次に、図２の各要素の動作を説明する。
【００２０】
先ず、８ビット単位×レジスタ段数分の初期値（オールゼロ以外）をそれぞれＬＦＳＲ１〜８およびＬＦＳＲ９に設定を行う。初期値は、例えば、情報処理装置１００のユーザが入力してもよいし、情報処理装置１００内のファイル等からＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が読み出すようにしてもよい。
また、非線形変換部１０４の処理に必要な秘密鍵Ｋの設定も行う。この秘密鍵Ｋも、情報処理装置１００のユーザが入力してもよいし、情報処理装置１００内のファイル等からＣＰＵが読み出すようにしてもよい。
次に、設定を行った次のサイクルからそれぞれの線形フィードバックシフトレジスタを動作させ、ＬＦＳＲ１〜９の中の最大のレジスタ段数以上のサイクルが経過したところから、実際の出力として採用する。
【００２１】
次に、順序攪拌部１０３が、ＬＦＳＲ１〜８のそれぞれから出力される８個の８ビットデータをＬＦＳＲ９から出力される８ビットデータを用いて、バイト単位での置換（Ｂｙｔｅ置換処理）により順序攪拌を行う（順序攪拌ステップ）。
Ｂｙｔｅ置換処理の構成としては、図３のようにＬＦＳＲ９から出力される８ビットデータを１ビット毎に分割し、それぞれをＳＥＬ１〜ＳＥＬ８のセレクタ信号とする。
ＬＦＳＲ１〜８から入力される８ビットをＬＦＳＲ１から順番に上位ビット側として並べていき、例えば、ＬＦＳＲ１からの８ビットデータとＬＦＳＲ２からの８ビットデータの順番をセレクタ信号ＳＥＬ１が０の場合はそのままにしておき、ＳＥＬ１が１の場合はＬＦＳＲ１からの８ビットデータとＬＦＳＲ２からの８ビットデータの順番を８ビット毎入れ替える。
また、ＬＦＳＲ３からの８ビットデータとＬＦＳＲ４からの８ビット、ＬＦＳＲ５からの８ビットデータとＬＦＳＲ６からの８ビットデータ、ＬＦＳＲ７からの８ビットデータとＬＦＳＲ８からの８ビットデータも同様の処理を行う。
次の段階では、ＬＦＳＲ１とＬＦＳＲ２からの１６ビットデータ（順番が入れ替わっている場合がある）とＬＦＳＲ３とＬＦＳＲ４からの１６ビットデータ（順番が入れ替わっている場合がある）を結合するとともに、セレクタ信号ＳＥＬ５が０の場合は、この３２ビットデータの順序をそのままにし、セレクタ信号ＳＥＬ５が１の場合は、１番目の８ビットデータと３番目の８ビットデータの順序を入れ替えるとともに２番目の８ビットデータと４番目の８ビットデータの順序を入れ替える。ＬＦＳＲ５〜ＬＦＳＲ８の３２ビットデータについても同様の処理を行う。
次の段階では、ＬＦＳＲ１〜ＬＦＳＲ４の３２ビットデータのうちの前半１６ビットデータをＬＦＳＲ５〜ＬＦＳＲ８の３２ビットデータの後半１６ビットデータと結合し、セレクタ信号ＳＥＬ７が０の場合は、この３２ビットデータの順序をそのままにし、セレクタ信号ＳＥＬ７が１の場合は、１番目の８ビットデータと３番目の８ビットデータの順序を入れ替えるとともに２番目の８ビットデータと４番目の８ビットデータの順序を入れ替える。また、ＬＦＳＲ１〜ＬＦＳＲ４の３２ビットデータのうちの後半１６ビットデータをＬＦＳＲ５〜ＬＦＳＲ８の３２ビットデータの前半１６ビットデータと結合し、セレクタ信号ＳＥＬ８が０の場合は、この３２ビットデータの順序をそのままにし、セレクタ信号ＳＥＬ８が１の場合は、１番目の８ビットデータと３番目の８ビットデータの順序を入れ替えるとともに２番目の８ビットデータと４番目の８ビットデータの順序を入れ替える。
最後に、図３に示す位置関係で、順序攪拌された８ビット×８＝６４ビットのデータを非線形変換部１０４に入力する。
【００２２】
非線形変換部１０４では、入力された６４ビットデータに対して以下に示す非線形変換を行う（非線形変換ステップ）。
非線形変換部１０４の構成としては、一般に数学的に安全性が証明可能な構成として暗号アルゴリズムＭＩＳＴＹ（登録商標）が知られており、本実施の形態の構成としてもＭＩＳＴＹ２（登録商標）のようなＦＯ関数をＮ段（Ｎ≧３）重ねた変型フェイステル型の構成を採用する。
本実施の形態に係る非線形変換部１０４は、たとえば、図４に示す構成とする。
本実施の形態では、図４（ａ）に示すＦＯ１関数〜ＦＯＮ関数の各々の内部構成が、図４（ｂ）に示す構成となっており、図４（ｂ）に示す関数ＦＩ１関数〜ＦＩ３関数の各々の内部構成が図４（ｃ）に示す構成となっている。
また、一般にＦＯ関数の段数Ｎが大きくなると処理遅延が大きくなり処理速度に影響を及ぼす原因となるが、本実施の形態では、非線形変換部１０４は線形フィードバックシフトレジスタＬＦＳＲ１〜９に対してフィードバックを行わないので、非線形変換部１０４の出力結果が線形フィードバックシフトレジスタＬＦＳＲ１〜９の処理と独立に動作可能であることから、ＦＯ関数１段毎にレジスタ２００を挿入することで、各ＦＯ関数の演算処理をパイプライン制御により行うことができ、ハードウェア実装のような場合には処理遅延を短くすることが可能であり、従来提案されているストリーム暗号方式以上の高速処理を実現するものである。
【００２３】
また、更なる攪拌効果を期待し、非線形変換部１０４の出力６４ビットに対して、ビット置換を行う関数である置換６４（１０６）により攪拌を行い、その攪拌を行った結果を擬似乱数系列とする。
置換６４（１０６）の構成としては、複数の６４ビット置換行列を保持し、ＬＦＳＲ９から出力される８ビットデータの情報により選択して使用することとする。
本実施の形態の構成としては、２種類の６４ビット置換行列を持ち、ＬＦＳＲ９の出力のＰａｒｉｔｙの結果により、置換行列を選択する構成を採用する。
【００２４】
最後に、データ処理部１０５が、置換６４（１０６）により攪拌された後の６４ビットの疑似乱数と平文系列Ｐとの排他論理和をとることにより、暗号文系列Ｃが得られる（データ処理ステップ）。
【００２５】
なお、本実施の形態では、ＬＦＳＲ１〜ＬＦＳＲ８及びＬＦＳＲ９は、それぞれ、パラメータを変更することにより、生成多項式として用いる原始多項式を変更可能である。
また、非線形変換部１０４は、パラメータを変更することによりＦＯ関数、ＦＩ関数、Ｓ関数の各段階の演算処理の内容を変更可能である。
【００２６】
このように、本実施の形態によれば、次に生成される擬似乱数を推定することが困難であり、かつ周期が大きく、数学的に安全性の証明可能な擬似乱数を生成することが可能となる。
更に、線形フィードバックシフトレジスタ群の出力の順序を攪拌する順序攪拌部の制御を上記線形フィードバックシフトレジスタ群とは異なる線形フィードバックシフトレジスタの出力を用いることで、線形フィードバックシフトレジスタ群の出力を推測することが困難になるといった効果も得られる。
更に、線形フィードバックシフトレジスタ群の出力を順序攪拌部により攪拌した結果を、数学的に安全性を証明可能とする非線形変換部に入力することで、これまでのストリーム暗号には無かった出力のランダム性を保証することが可能となるといった効果も得られる。
更に、非線形変換部の出力を線形フィードバックシフトレジスタ群へフィードバックしないことにより、特にハードウェア実装の場合には、パイプライン実装が可能となるため、非常に高速に擬似乱数を生成することが可能となる。
【００２７】
以上、本実施の形態では、ワード単位の出力を生成するような複数の線形フィードバックシフトレジスタ（ＬＦＳＲ）群Ｌ１〜ＬＮとその複数のＬＦＳＲの出力の順序を制御するような線形フィードバックシフトレジスタ（ＬＦＳＲ）ＬＭを保持し、ＬＭの出力によりＬ１〜ＬＮの出力の順序を攪拌する順序攪拌部とその順序攪拌部から出力されるワード単位のデータを攪拌する非線形変換部、また、非線形変換部によって生成された擬似乱数系列と外部より入力される平文系列Ｐを排他的論理和ＥＸＯＲの演算を行い暗号文系列Ｃを生成する暗号化手段を具備するストリーム暗号方式を用いた擬似乱数生成装置を説明した。
【００２８】
また、本実施の形態では、線形フィードバックシフトレジスタＬ１〜ＬＮおよびＬＭは、それぞれ処理単位のデータサイズをＫビットとした場合にガロア体ＧＦ（２Ｋ）で定義する原始多項式を線形フィードバックシフトレジスタの生成多項式として使用することを説明した。
【００２９】
また、本実施の形態では、線形フィードバックシフトレジスタＬ１〜ＬＮおよびＬＭは、上記のガロア体ＧＦ（２Ｋ）で定義する原始多項式をパラメータにより更新可能であることを説明した。
【００３０】
また、本実施の形態では、非線形変換部は、入力される鍵が秘密であることを条件にして、入力されるワード単位のデータが数学的に安全性を証明可能とする一方向性関数を用いて、偏りの無い擬似乱数系列を生成することを説明した。
【００３１】
また、本実施の形態では、非線形変換部は、線形フィードバックシフトレジスタ群へのフィードバックデータを持たないことにより、パイプライン処理を行うことで高速処理が可能であることを説明した。
【００３２】
また、本実施の形態では、非線形変換部は、安全性を証明可能とする枠組みを崩すことなくパラメータにより内部構成部品の更新が可能である。
【００３３】
実施の形態２．
本実施の形態では、ワード単位を６４ビットとした場合の別の構成を以下に示す。
図５は、本実施の形態に係る暗号アルゴリズムの例を示す。
【００３４】
図５において、ＬＦＳＲ１及びＬＦＳＲ２は、ガロア体ＧＦ（２３２）で定義する原始多項式をパラメータにより構成される線形フィードバックシフトレジスタであり、Ｍ系列と呼ばれる周期性の保証された擬似乱数系列を生成する構成とする。
また、ＬＦＳＲ３は、ガロア体ＧＦ（２）で定義する原始多項式をパラメータにより構成される線形フィードバックシフトレジスタであり、Ｍ系列と呼ばれる周期性の保証された擬似乱数系列を生成する構成とする。
ＬＦＳＲ１及びＬＦＳＲ２が、図１の線形フィードバックシフトレジスタ１０１に相当し、ＬＦＳＲ３が、図１の線形フィードバックシフトレジスタ１０２に相当する。
また、本実施の形態では、順序攪拌部１０３は、３２ビット単位の動的スワップを行う。
非線形変換部１０４、データ処理部１０５及び置換６４（１０６）は、図２と同様である。
【００３５】
本実施の形態では、３２ビット単位×レジスタ段数分の初期値（オールゼロ以外）をそれぞれＬＦＳＲ１，２およびレジスタ段数分の初期値（オールゼロ以外）をＬＦＳＲ３に設定を行う。また、非線形変換部１０４の処理に必要な秘密鍵Ｋの設定も行う。
設定を行った次のサイクルからそれぞれの線形フィードバックシフトレジスタを動作させ、ＬＦＳＲ１〜３の中の最大のレジスタ段数以上のサイクルが経過したところから、実際の出力として採用する。
【００３６】
順序攪拌部１０３は、ＬＦＳＲ１，２のそれぞれから出力される２個の３２ビットデータをＬＦＳＲ３から出力される１ビットデータを用いて、３２ビット単位で置換（動的スワップ処理）することにより順序攪拌を行う。
動的スワップ処理の構成としてはＬＦＳＲ３から出力されるビットデータをセレクタ信号とし、ＬＦＳＲ１，２から入力されるそれぞれ３２ビットデータをＬＦＳＲ１を上位ビット側、ＬＦＳＲ２を下位ビット側として並べ、例えば、ＬＦＳＲ１とＬＦＳＲ２の順番をセレクタ信号ＳＥＬ１が０の場合はそのままにしておき、ＳＥＬ１が１の場合はＬＦＳＲ１とＬＦＳＲ２の順番を３２ビット毎入れ替えると言った操作を行うものである。
【００３７】
順序攪拌された３２ビット×２＝６４ビットのデータを非線形変換部１０４に入力し処理を行う。
非線形変換部１０４の構成としては、実施の形態１と同様に一般に数学的に安全性が証明可能な構成として暗号アルゴリズムＭＩＳＴＹ（登録商標）が知られており、本実施の形態の構成としてもＭＩＳＴＹ２（登録商標）のようなＦＯ関数をＮ段（Ｎ≧３）重ねた変型フェイステル型の構成を採用する。
一般にＦＯ関数の段数Ｎが大きくなると処理遅延が大きくなり処理速度に影響を及ぼす原因となるが、本実施の形態では、非線形変換部１０４の出力結果が線形フィードバックシフトレジスタＬＦＳＲ１〜３の処理と独立に動作可能であることから、ＦＯ関数１段毎にレジスタを挿入することでハードウェア実装のような場合には処理遅延を短くすることが可能であり、従来提案されているストリーム暗号方式以上の高速処理を実現するものである。
【００３８】
なお、本実施の形態の構成では、非線形変換部１０４の構成としてＭＩＳＴＹ２（登録商標）の構成を使用したが、ＨｉｅｒｏｃｒｙｐｔのようなＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ）型の数学的に安全性が証明可能な方式を非線形変換部１０４として用いることも可能である。
【００３９】
また、更なる攪拌効果を期待し、非線形変換部１０４の出力６４ビットに対して、ビット置換を行う関数である置換６４（１０６）により攪拌を行い、その攪拌を行った結果を擬似乱数系列とする。置換６４（１０６）の構成としては、複数の６４ビット置換行列を保持し、ＬＦＳＲ３から出力される１ビットデータの情報により選択して使用することとする。
本実施の形態の構成としては、２種類の６４ビット置換行列を持ち、ＬＦＳＲ１の出力により、置換行列を選択する構成を採用する。
【００４０】
最後に、実施の形態１、２に示した情報処理装置１００のハードウェア構成例について説明する。
図６は、実施の形態１、２に示す情報処理装置１００のハードウェア資源の一例を示す図である。
なお、図６の構成は、あくまでも情報処理装置１００のハードウェア構成の一例を示すものであり、情報処理装置１００のハードウェア構成は図６に記載の構成に限らず、他の構成であってもよい。
【００４１】
図６において、情報処理装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ＬＦＳＲ９０６、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置等と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１などは、出力装置の一例である。
【００４２】
通信ボード９１５は、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されていても構わない。
【００４３】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００４４】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００４５】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
情報処理装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００４６】
上記プログラム群９２３には、実施の形態１、２の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００４７】
ファイル群９２４には、実施の形態１、２の説明において、「〜の攪拌」、「〜の暗号化」、「〜の復号」、「〜の生成」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
【００４８】
また、実施の形態１、２の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、実施の形態１、２の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１、２の「〜部」の手順や方法をコンピュータに実行させるものである。
【００４９】
このように、実施の形態１、２に示す情報処理装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００５０】
１００  情報処理装置、１０１  線形フィードバックシフトレジスタ、１０２  線形フィードバックシフトレジスタ、１０３  順序攪拌部、１０４  非線形変換部、１０５  データ処理部、１０６  置換６４、２００  レジスタ。
【図１】
2010181789.tif 000003
【図２】
2010181789.tif 000004
【図３】
2010181789.tif 000005
【図４】
2010181789.tif 000006
【図５】
2010181789.tif 000007
【図６】
2010181789.tif 000008