(57)【特許請求の範囲】
【請求項１】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置であって、
前記線形フィードバックシフトレジスタの動作数に関係なく、一出力単位の生成処理時間を均一化する手段を備えることを特徴とする擬似乱数生成装置。
【請求項２】
前記線形フィードバックシフトレジスタの動作処理と同程度の処理時間を費やす遅延処理を実行する遅延処理手段を備え、
前記遅延処理手段を繰り返し動作させることにより、前記一出力単位の生成処理時間を、すべての線形フィードバックシフトレジスタが動作した際の生成処理時間に保持すること、
を特徴とする請求項１に記載の擬似乱数生成装置。
【請求項３】
前記線形フィードバックシフトレジスタの動作処理と同程度の処理時間を費やす遅延処理を実行する遅延処理手段を備え、
前記各線形フィードバックシフトレジスタの動作と排他的に前記遅延処理手段を動作させることにより、前記一出力単位の生成処理時間を、すべての線形フィードバックシフトレジスタが動作した際の生成処理時間に保持すること、
を特徴とする請求項１に記載の擬似乱数生成装置。
【請求項４】
前記遅延処理手段として、前記Ｎ個の線形フィードバックシフトレジスタと同数・同サイズのダミー線形フィードバックシフトレジスタを備えること、
を特徴とする請求項３に記載の擬似乱数生成装置。
【請求項５】
更に、前記均一化された一出力単位の生成処理時間を変動させる手段を備えることを特徴とする請求項１乃至４いずれか一に記載の擬似乱数生成装置。
【請求項６】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置であって、
少なくとも１回の線形フィードバックシフトレジスタの動作に必要とされる処理時間より大きい変動幅で、一出力単位の生成処理時間を変動させる手段を備えることを特徴とする擬似乱数生成装置。
【請求項７】
入力パラメータに依存せずにランダムな処理時間を費やす遅延処理を実行するランダム遅延処理手段を備え、
前記ランダム遅延処理手段を動作させることにより、前記一出力単位の生成処理時間を変動させること、
を特徴とする請求項６に記載の擬似乱数生成装置。
【請求項８】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置であって、
一出力単位の生成処理に消費される電力を一定化する手段を備えることを特徴とする擬似乱数生成装置。
【請求項９】
前記線形フィードバックシフトレジスタと同程度の電力を消費するダミー回路を備え、
前記ダミー回路を繰り返し動作させることにより、一出力単位の生成処理に消費される電力を、すべての線形フィードバックシフトレジスタが動作した際の消費電力に保持すること、
を特徴とする請求項８に記載の擬似乱数生成装置。
【請求項１０】
前記線形フィードバックシフトレジスタと同程度の電力を消費するダミー回路を備え、
前記各線形フィードバックシフトレジスタの動作と排他的に前記ダミー回路を動作させることにより、一出力単位の生成処理に消費される電力を、すべての線形フィードバックシフトレジスタが動作した際の消費電力に保持すること、
を特徴とする請求項８に記載の擬似乱数生成装置。
【請求項１１】
前記ダミー回路として、前記Ｎ個の線形フィードバックシフトレジスタと同数・同サイズのダミー線形フィードバックシフトレジスタを備えること、
を特徴とする請求項１０に記載の擬似乱数生成装置。
【請求項１２】
更に、前記一定化された一出力単位の生成処理に消費される電力を変動させる手段を備えることを特徴とする請求項８乃至１１いずれか一に記載の擬似乱数生成装置。
【請求項１３】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置であって、
少なくとも１回の線形フィードバックシフトレジスタの動作に必要とされる消費電力より大きい変動幅で、一出力単位の生成処理に消費される電力を変動させる手段を備えることを特徴とする擬似乱数生成装置。
【請求項１４】
入力パラメータに依存せずにランダムに動作するノイズ発生源を備え、
前記ノイズ発生源の動作により、前記一出力単位の生成処理に消費される電力を変動させること、
を特徴とする請求項１３に記載の擬似乱数生成装置。
【請求項１５】
請求項１乃至１４いずれか一に記載の擬似乱数生成装置を備えたストリーム暗号処理装置。
【請求項１６】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置に実装するプログラムであって、
前記線形フィードバックシフトレジスタの動作数に関係なく、一出力単位の生成処理時間を均一化する機能を実現させるためのプログラム。
【請求項１７】
前記擬似乱数生成装置に内蔵されたコンピュータに、前記線形フィードバックシフトレジスタの動作処理と、同程度の処理時間を費やす遅延処理を繰り返し実行させることにより、前記一出力単位の生成処理時間を、すべての線形フィードバックシフトレジスタが動作した際の生成処理時間に保持すること、
を特徴とする請求項１６に記載のプログラム。
【請求項１８】
前記擬似乱数生成装置に内蔵されたコンピュータに、前記各線形フィードバックシフトレジスタの動作と排他的に、前記線形フィードバックシフトレジスタの動作処理と同程度の処理時間を費やす遅延処理を実行させることにより、前記一出力単位の生成処理時間を、すべての線形フィードバックシフトレジスタが動作した際の生成処理時間に保持すること、
を特徴とする請求項１６に記載のプログラム。
【請求項１９】
前記Ｎ個の線形フィードバックシフトレジスタと同数・同サイズのダミー線形フィードバックシフトレジスタを、前記各線形フィードバックシフトレジスタの動作と排他的に動作させることにより、前記一出力単位の生成処理時間を均一化すること、
を特徴とする請求項１８に記載のプログラム。
【請求項２０】
更に、前記均一化された一出力単位の生成処理時間を変動させる機能を実現させることを特徴とする請求項１６乃至１９いずれか一に記載のプログラム。
【請求項２１】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置に実装するプログラムであって、
少なくとも１回の線形フィードバックシフトレジスタの動作に必要とされる処理時間より大きい変動幅で、一出力単位の生成処理時間を変動させる機能を実現させるためのプログラム。
【請求項２２】
入力パラメータに依存せずにランダムな処理時間を費やす遅延処理を実行することにより、前記一出力単位の生成処理時間を変動させること、
を特徴とする請求項２１に記載のプログラム。
【請求項２３】
請求項１６乃至２２いずれか一に記載のプログラムを含み、更に、
前記プログラムによって生成された擬似乱数を用いて暗号ストリームを暗復号する処理を、コンピュータに実行させるためのストリーム暗号処理プログラム。
【請求項２４】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置に実装するプログラムであって、
一出力単位の生成処理に消費される電力を一定化する機能を実現させるためのプログラム。
【請求項２５】
Ｎ個の線形フィードバックシフトレジスタを有し、前記各線形フィードバックシフトレジスタの内部状態により前記各線形フィードバックシフトレジスタの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置に実装するプログラムであって、
少なくとも１回の線形フィードバックシフトレジスタの動作に必要とされる消費電力より大きい変動幅で、一出力単位の生成処理に消費される電力を変動させる機能を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）本願は、先の日本特許出願２００６−２０１７９６号（２００６年７月２５日出願）の優先権を主張するものであり、前記先の出願の全記載内容は、本書に引用をもって繰込み記載されているものとみなされる。
本発明は、擬似乱数生成装置、ストリーム暗号処理装置及びプログラムに関し、特に、複数個の線形フィードバックレジスタ（以下、「ＬＦＳＲ」ともいう。）を用い、その内部状態によりＬＦＳＲの動作制御を行って擬似乱数を生成する所謂クロック制御型の擬似乱数生成装置、ストリーム暗号処理装置及びプログラムに関する。
【背景技術】
【０００２】
情報の電子データ化が進む中で、情報の保護、秘匿な通信を実現する暗号は欠かせない技術となっている。暗号はその方式から共通鍵暗号と公開鍵暗号に大きく分けられる。前者の共通鍵暗号は、暗号化と復号化において、同一な共通の鍵を使用する暗号方式であり、鍵は秘密に保管される。もう一方の公開鍵暗号は、暗号化と復号化において異なる鍵をもたせ、どちらか一方の鍵を公開することができる。一般に共通鍵暗号は高速なため、大容量のデータ通信に用いられ、公開鍵暗号は低速だが鍵の管理が容易なため、共通鍵暗号の鍵配送や署名、認証に用いられる。【０００３】
共通鍵暗号は、その構造からブロック暗号とストリーム暗号に分けることができる。ブロック暗号は、ブロック単位に分割されたデータに対して転置や演算等により暗号化を行う方式に対し、ストリーム暗号は、擬似乱数生成器より出力される擬似乱数を用いて所定の出力単位（例：１〜数ｂｉｔ）毎に順次暗号化を行う。ストリーム暗号のうち、ＬＳＦＲを非連続的に動作させるクロック制御方式の代表的なアルゴリズムとしてＡ５／１が挙げられる。【０００４】
Ａ５／１は、３個のＬＦＳＲを構成要素とする動作制御型のアルゴリズムである。一般にＬＦＳＲは擬似乱数の発生器として用いられるが、数学的に容易に解析可能なため、そのまま暗号に使用することはできない。そこで、Ａ５／１では、複数のＬＦＳＲを組み合わせ、さらにＬＦＳＲの動作を非連続的に制御させることで、ある時刻での内部状態の推測を困難にし、暗号としての強度を持たせている。このような複数のＬＦＳＲとそのクロック制御を行う動作制御部を備えたストリーム暗号はＡ５／１以外にも多数提案されている。【０００５】
図１３に、Ｎ個のＬＦＳＲと動作制御部を搭載したクロック制御型の擬似乱数生成装置を用いるストリーム暗号方式の構成図を示す。擬似乱数生成器４は、ＬＦＳＲ８０１〜８０Ｎと、各ＬＦＳＲの動作を制御する動作制御部９と、Ｎ個のＬＦＳＲから出力を決定する出力処理部１０とを備えて構成される。ＬＦＳＲ８０１〜８０Ｎはそれぞれビット幅や遷移関数の異なるＬＦＳＲであり、それぞれの内部状態を基に動作制御部９が各ＬＦＳＲのシフト動作を制御する。各ＬＦＳＲのシフト制御が終了後、各ＬＦＳＲの出力が出力処理部にて処理され、擬似乱数生成器４の出力として出力される。擬似乱数生成器４から出力された擬似乱数は、暗復号化処理部７において、平文５又は暗号文６との暗号化又は復号化に用いられる。【０００６】
ところで、暗号の安全性を高めるには、鍵等の秘密情報が容易に推測できないようにする必要がある。鍵の全数探索や数学的に解読を行う線形解読や差分解読等といった暗号解析方法が知られているが、現実的な時間での解析は不可能な状況といえる。【０００７】
その一方で、暗号機能付きのＩＣカードや携帯端末のように、攻撃者が処理時間や消費電力を精密に測定できるとの仮定の下で、これらの情報から秘密情報の取得を試みるサイドチャネル攻撃とその対策が大きな研究テーマとなっている。【０００８】
上記サイドチャネル攻撃の具体的な攻撃方法としては、処理時間に注目したタイミング攻撃（非特許文献１参照）や消費電力に注目した電力解析攻撃等が知られている。【０００９】
電力解析攻撃には、単純電力解析(ＳＰＡ：Ｓｉｍｐｌｅ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ)と電力差分解析(ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ)がある（非特許文献２参照）。また、同文献には、既知のブロック暗号であるＤＥＳに対するＤＰＡについて、具体的な攻撃方法が記載されている。【００１０】
更に、特許文献１には、上記ブロック暗号の電力解析攻撃に対する脆弱性への対処と、処理アルゴリズムの複雑化を回避すべく、平文データが入力される正規のラウンド関数部とは別に、ダミー演算を実行するダミーのラウンド関数部を持たせ、電力解析を困難にして攻撃耐性を高めた共通鍵ブロック暗号化装置が開示されている。
【特許文献１】特開２００６−５４５６８号公報
【非特許文献１】Ｐａｕｌ  Ｋｏｃｈｅｒ  ”Ｔｉｍｉｎｇ  Ａｔｔａｃｋｓ  ｏｎ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ  ｏｆ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ，  ＲＳＡ，  ＤＳＳ，  ａｎｄ  Ｏｔｈｅｒ  Ｓｙｓｔｅｍｓ”， Ｃｒｙｐｔｏ’９６， ｐｐ．１０４−１１３， １９９６．
【非特許文献２】Ｐ．  Ｋｏｃｈｅｒ，  Ｊ．  Ｊａｆｆｅ，  Ｂ．  Ｊｕｎ，”Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｒｅｌａｔｅｄ  Ａｔｔａｃｋｓ”，１９９８
【発明の開示】
【発明が解決しようとする課題】
【００１１】
なお、上記特許文献１及び非特許文献１、２の全開示内容はその引用をもって本書に繰込み記載する。
本発明者は、上記Ａ５／１に代表されるクロック制御型の擬似乱数生成器を用いるストリーム暗号方式に対して非常に効果的な攻撃方法を発見した。はじめに、この攻撃方法について説明する。【００１２】
説明の簡略のため、図１４に示す３個のＬＦＳＲにより構成されたＡ５／１アルゴリズムと同様にクロック制御にて動作するストリーム暗号システムの解析を試みる場合を考える。通常の解析は、出力結果を元に内部状態の探索を行うが、本攻撃方法によれば、動作制御部より決定されたＬＦＳＲの動作する個数（以下、「ｍｏｖｅ数」という）が判断可能であるとき、上記内部状態の探索数を削減することが可能となる。【００１３】
ここで、各ＬＦＳＲ８３１〜８３３は任意のビット長でよい。また、動作制御部９は、各ＬＦＳＲの任意のビットのレジスタ値に対し多数決を行い、多数派のＬＦＳＲを動作する。上記動作制御部９におけるクロック制御の際に参照される任意のレジスタ（図１４のＣ１〜Ｃ３）をＣｌｏｃｋｉｎｇ  ｔａｐと呼ぶ。図１５は、Ｃｌｏｃｋｉｎｇ  ｔａｐの値と、動作するＬＦＳＲの関係を表した表である。ここでは、ＬＦＳＲの個数は３個であるため、多数決によって動作対象となるＬＦＳＲの数（ｍｏｖｅ数）は２個もしくは３個となる。【００１４】
各ＬＦＳＲ８３１〜８３３の内部状態の探索には、Ｃｌｏｃｋｉｎｇ ｔａｐをノードとし、時刻ｔ−１と時刻ｔのｍｏｖｅ数から枝の数が決まる木探索を用いる。木探索は深さ優先探索を採用し、ある程度の深さになると出力との矛盾チェックを行い、矛盾が確認できた場合はその枝の探索をやめ、次の枝の探索を行う。探索はすべてのＬＦＳＲの内部状態が決定するまで行われる。【００１５】
図１６は、時刻ｔ−１のｍｏｖｅ数が３であるとわかった場合に決定される枝の数（内部状態の組み合わせ）の関係を示している（以下、図１６、図１７において、ｍｏｖｅ［ｔ］欄の（Ｘ→）Ｙは、ある時刻のｍｏｖｅ数Ｘと、次時刻のｍｏｖｅ数Ｙを示している。）。例えば、時刻ｔのｍｏｖｅ数が２の時、次時刻ｔ＋１のＬＦＳＲの動作は、時刻ｔのＣｌｏｃｋｉｎｇ  ｔａｐの状態に大きく依存する。図１７は、時刻ｔにおいて、ＬＦＳＲ８３１、ＬＦＳＲ８３２のみが動作し、Ｒ３のＣｌｏｃｋｉｎｇ ｔａｐ値が１である場合（即ち、図１６のＣ１＝０、Ｃ２＝０、Ｃ３＝１のケース）に決定される枝の数の関係を示している。以上のように、通常では３個のＬＦＳＲの内部状態の探索では枝の数は８本であるところ、時刻ｔ−１及び時刻ｔのｍｏｖｅ数を用いれば、最大で６本、最小で１本と大幅に枝数を削減することができる。【００１６】
ここで、上記ｍｏｖｅ数の判別方法について説明する。図１８は、クロック制御方式にてＬＦＳＲを動作し擬似乱数を生成するコンピュータプログラムにおける処理の流れを表したフローチャートである。図１８を参照すると、各ＬＦＳＲの動作はプログラムに従って順次実行される。そのため、ｍｏｖｅ数が２の時とｍｏｖｅ数が３の時とでは処理量に違いが生じ、その違いは、一回（一出力単位）の出力生成処理に掛かる処理時間の違いとなって現れる。従って、ソフトウェア実装の場合は、上記処理時間の違いを電力波形から判別し、ｍｏｖｅ数を判断することができる。【００１７】
一方、Ａ５／１アルゴリズムにて動作する擬似乱数生成器が、ＬＳＩやＦＰＧＡ等のハードウェアで構成されている場合、すべての処理はほぼ同時に実行される。しかしながら、この場合も、ｍｏｖｅ数の違いにより、同時に動作するＬＦＳＲの個数が変わることから、一回（一出力単位）の出力生成処理に掛かる消費電力量に違いが生じる。従って、ハードウェア実装の場合も、上記消費電力量の大きさを利用してｍｏｖｅ数を判断することができる。【００１８】
以上のように、図１３に例示したＮ個のＬＦＳＲにより構成され、その内部状態より各ＬＦＳＲの動作を制御するクロック制御型の擬似乱数生成器にて生成された擬似乱数を用いるストリーム暗号方式は、上記ｍｏｖｅ数を用いた攻撃方法により、暗号解析の困難性が低減してしまうという問題点がある。【００１９】
本発明は、上記クロック制御型の擬似乱数生成器の脆弱性に鑑みてなされたものであって、上記本発明者が提案する攻撃方法に対し耐性を持った擬似乱数生成装置、ストリーム暗号処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の第１の視点によれば、Ｎ個のＬＦＳＲを有し、前記各ＬＦＳＲの内部状態により前記各ＬＦＳＲの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置であって、前記ＬＦＳＲの動作数に関係なく、一出力単位の生成処理時間を均一化する手段を備えることを特徴とする擬似乱数生成装置、該装置から出力される擬似乱数を用いて暗復号処理を行うストリーム暗号処理装置及びこれらを実現するプログラムが提供される。【００２１】
本発明の第２の視点によれば、Ｎ個のＬＦＳＲを有し、前記各ＬＦＳＲの内部状態により前記各ＬＦＳＲの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置であって、少なくとも１回のＬＦＳＲの動作に必要とされる処理時間より大きい変動幅で、一出力単位の生成処理時間を変動させる手段を備えることを特徴とする擬似乱数生成装置、該装置から出力される擬似乱数を用いて暗復号処理を行うストリーム暗号処理装置及びこれらを実現するプログラムが提供される。【００２２】
本発明の第３の視点によれば、Ｎ個のＬＦＳＲを有し、前記各ＬＦＳＲの内部状態により前記各ＬＦＳＲの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置において、一出力単位の生成処理に消費される電力を一定化する手段を備えることを特徴とする擬似乱数生成装置及び該装置から出力される擬似乱数を用いて暗復号処理を行うストリーム暗号処理装置及びこれを実現するためのプログラムが提供される。【００２３】
本発明の第４の視点によれば、Ｎ個のＬＦＳＲを有し、前記各ＬＦＳＲの内部状態により前記各ＬＦＳＲの動作制御を行って擬似乱数を生成するクロック制御型の擬似乱数生成装置において、少なくとも１回のＬＦＳＲの動作に必要とされる消費電力より大きい変動幅で、一出力単位の生成処理に消費される電力を変動させる手段を備えることを特徴とする擬似乱数生成装置及び該装置から出力される擬似乱数を用いて暗復号処理を行うストリーム暗号処理装置及びこれを実現するためのプログラムが提供される。
【発明の効果】
【００２４】
本発明によれば、一出力単位の生成に要するＬＦＳＲの動作数を隠蔽することが可能となるため、本発明者が提案する攻撃方法に対する耐性が向上された暗号システムを得ることが可能となる。
【図面の簡単な説明】
【００２５】
【図１】本発明を適用可能な暗復号処理装置の概略構成を表した図である。
【図２】本発明の第１の実施形態に係るストリーム暗号方式の構成図である。
【図３】本発明の第１の実施形態に係る擬似乱数生成器の動作を表したフローチャートである。
【図４】本発明の第２の実施形態に係るストリーム暗号方式の構成図である。
【図５】本発明の第２の実施形態に係る擬似乱数生成器の動作を表したフローチャートである。
【図６】本発明の第３の実施形態に係るストリーム暗号方式の構成図である。
【図７】本発明の第３の実施形態に係る擬似乱数生成器の動作を表したフローチャートである。
【図８】本発明の第４の実施形態に係るストリーム暗号方式の構成図である。
【図９】本発明の第５の実施形態に係るストリーム暗号方式の構成図である。
【図１０】本発明の第６の実施形態に係るストリーム暗号方式の構成図である。
【図１１】本発明の変形実施形態を説明するためのフローチャートである。
【図１２】本発明の変形実施形態を説明するための構成図である。
【図１３】Ｎ個のＬＦＳＲと動作制御部を搭載したクロック制御型の擬似乱数生成器を用いるストリーム暗号方式の構成図である。
【図１４】本発明者が提案するストリーム暗号システムの攻撃方法を説明するための図である。
【図１５】Ａ５／１アルゴリズムにおけるＣｌｏｃｋｉｎｇ  ｔａｐの値と、動作するＬＦＳＲの関係を表した表である。
【図１６】時刻ｔ−１のｍｏｖｅ数が３であるとわかった場合に決定される枝の数（内部状態の組み合わせ）の関係を示した表である。
【図１７】時刻ｔにおいて、ＬＦＳＲ８３１、ＬＦＳＲ８３２のみが動作し、Ｒ３のＣｌｏｃｋｉｎｇ ｔａｐ値が１である場合に決定される枝の数の関係を示した表である。
【図１８】クロック制御方式にてＬＦＳＲを動作し擬似乱数を生成するコンピュータプログラムにおける処理の流れを表したフローチャートである。
【符号の説明】
【００２６】
１  演算処理装置
２  入出力装置
３  記憶装置
４  擬似乱数生成器（擬似乱数生成装置）
５  平文
６  暗号文
７  暗復号化処理部
９  動作制御部
１０  出力処理部
１１  ランダム遅延処理手段
１２  ノイズ発生源
３１  データ格納部
３２  プログラム格納部
３１１  秘密鍵
３２１  暗号プログラム（ストリーム暗号処理プログラム）
８０１〜８０Ｎ、８３１〜８３３  ＬＦＳＲ
８１１〜８１Ｎ  遅延処理手段／ダミーのＬＦＳＲ
８２０  遅延処理手段
８２１〜８２Ｍ  ダミーのＬＦＳＲ
Ｃ１、Ｃ２、Ｃ３  Ｃｌｏｃｋｉｎｇ  ｔａｐ
【発明を実施するための最良の形態】
【００２７】
続いて、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。図１は、本発明を適用可能なストリーム暗復号処理装置の概略構成を表した図である。図１を参照すると、ストリーム暗復号処理装置は、プログラム制御により後記する演算処理を実行する演算処理装置１と、外部機器と暗号文やデータのやり取りを行うための入出力装置２と、データ格納部３１及びプログラム格納部３２を有する記憶装置３と、を備えて構成されている。【００２８】
記憶装置３のデータ格納部３１は、プログラム実行上で必要な様々なパラメータが格納される場所であり、暗号の秘密鍵３１１はここに格納される。プログラム格納部３２は、暗復号処理装置で必要な様々なプログラムが格納される場所であり、後記する各実施形態の処理手段を実現する暗号プログラム（ストリーム暗号処理プログラム）３２１はここに格納される。【００２９】
上記暗復号処理装置は、後記するようなソフトウェア又はハードウェアを搭載することにより、パーソナルコンピュータ（ＰＣ）、携帯端末、ＩＣカード、リーダライタ等、種々の情報処理装置にて実現可能である。例えば、パーソナルコンピュータ（ＰＣ）にて暗復号処理装置が実現される場合、図示しない磁気ディスク等の補助記憶装置に格納されている暗号プログラム３２１を記憶装置３に読み出すことより、演算処理装置１にて実行可能となる。【００３０】
［第１の実施例］
続いて、擬似乱数の生成過程における一回（一出力単位）の出力生成処理に要する処理時間を均一化することにより、一出力あたりのＬＦＳＲの動作数（ｍｏｖｅ数）を隠蔽するようにした本発明の第１の実施例について説明する。【００３１】
図２は、本発明の第１の実施例に係るストリーム暗号方式の構成図である。擬似乱数生成器（擬似乱数生成装置）４は、Ｎ個のＬＦＳＲ８０１〜８０Ｎと、ＬＦＳＲ８０１〜８０Ｎと同数のＮ個の遅延処理手段８１１〜８１Ｎと、これらを制御する動作制御部９と、Ｎ個のＬＦＳＲから出力を決定する出力処理部１０とから構成される。【００３２】
遅延処理手段８１１〜８１Ｎは、動作制御部９よりシフト処理の選択が行われなかったＬＦＳＲ８０１〜８０Ｎについてそのシフト処理と同程度の処理時間を費やす遅延処理を実行する手段である。【００３３】
暗復号化処理部７は、擬似乱数生成器４から出力された擬似乱数を用いて平文５又は暗号文６との暗号化又は復号化を実行する手段である。【００３４】
従って、図１３に示した従来構成との相違点は、Ｎ個のＬＦＳＲと同数のＮ個の遅延処理手段８１１〜８１Ｎが追加されている点である。【００３５】
続いて、上記構成よりなる擬似乱数生成器４の動作について説明する。図３は、本実施例に係る擬似乱数生成器４の動作を表したフローチャートである。【００３６】
まず、暗号プログラム３２１が、他のプログラムからの呼び出しによって起動されると（ステップＡ１）、まず、擬似乱数を生成するための準備として初期化を行う（ステップＡ２）。この初期設定では秘密鍵等のパラメータにより内部のデータ攪拌等が行われる。【００３７】
ステップＡ２の初期化が完了すると、動作制御部９は、所定の選択基準に従って、ＬＦＳＲ＿１（図２の８０１）の動作判定を行う（ステップＡ３）。【００３８】
ここで、ＬＦＳＲ＿１（図２の８０１）の動作が選択されると、ＬＦＳＲ＿１（８０１）について、任意のビットのシフト処理が行われる（ステップＡ４）。【００３９】
一方、ＬＦＳＲ＿１（図２の８０１）の動作が選択されなかった場合、動作制御部９は、遅延処理手段（８１１）を動作させ、ＬＦＳＲ＿１（図２の８０１）のシフト処理と同程度の処理時間の遅延処理を実施する（ステップＡ１０）。【００４０】
同様に、ＬＦＳＲ＿２〜Ｎ（図２の８０２〜８０Ｎ）について、上記動作判定と判定結果に伴う各処理が行われる（ステップＡ５、ステップＡ６、ステップＡ１１）。【００４１】
そして、すべてのＬＦＳＲに対する処理が終了した後、その内部状態を基に、所定の出力単位の擬似乱数生成処理が行われる（ステップＡ７）。【００４２】
ステップＡ３からステップＡ７までの一連の処理は繰り返し実行され、指定長の擬似乱数が生成できた時点で終了する（ステップＡ８、Ａ９）。【００４３】
以上のように、本実施例によれば、動作制御部９にてシフト処理が選択されなかった場合も同程度の遅延処理が必ず行われるため、一回の動作の処理時間は、すべてのＬＦＳＲがシフト動作した際の処理時間と同一となり、均一化（一定化）される。このため、外部からの処理時間の測定による秘密鍵導出を困難にすることができる。【００４４】
また、遅延処理手段８１１〜８１Ｎとして、ＬＦＳＲ８０１〜８０Ｎと同じサイズのＬＦＳＲを用い、動作制御部９より、そのシフト制御を行うことにより、上記遅延処理を実現することが可能である。また、その他、各ＬＦＳＲ８０１〜８０Ｎのシフト処理時間と等しくなる処理であれば、Ｗａｉｔ処理等の遅延処理を実行する手段等も採用可能である。【００４５】
特に、前者のＬＦＳＲと同じサイズのダミーのＬＦＳＲによるシフト処理を実行する場合は、処理時間だけでなく演算処理装置１にて実行される命令も等しくなるため、消費電力波形から内部状態を導出する電力解析に対しても強くなるという利点も実現される。【００４６】
［第２の実施例］
続いて、上記第１の実施例とは別の方法にて、擬似乱数の生成過程における一回（一出力単位）の出力生成処理に要する処理時間を均一化し、ＬＦＳＲの動作数（ｍｏｖｅ数）を隠蔽するようにした本発明の第２の実施例について説明する。【００４７】
図４は、本発明の第２の実施例に係るストリーム暗号方式の構成図である。擬似乱数生成器（擬似乱数生成装置）４は、Ｎ個のＬＦＳＲ８０１〜８０Ｎと、遅延処理手段８２０と、これらを制御する動作制御部９と、Ｎ個のＬＦＳＲから出力を決定する出力処理部１０とを備えて構成される。【００４８】
遅延処理手段８２０は、動作制御部９よりシフト処理の選択が行われなかったＬＦＳＲ８０１〜８０Ｎについてそのシフト処理と同程度の処理時間を費やす遅延処理を実行する手段である。【００４９】
従って、上記第１の実施例との相違点は、Ｎ個のＬＦＳＲと同数のＮ個の遅延処理手段８１１〜８１Ｎに代えて、遅延処理手段８２０を備えている点である。【００５０】
続いて、上記構成よりなる擬似乱数生成器４の動作について説明する。図５は、本実施例に係る擬似乱数生成器４の動作を表したフローチャートである。【００５１】
図５のステップＡ１−Ａ６、Ａ８及びＡ９で示される本実施例の動作は、第１の実施例の各ステップＡ１−Ａ６、Ａ８及びＡ９と同様であるが、本実施例では、動作制御部９は、各ＬＦＳＲの動作判定においてシフト処理が選択されたＬＦＳＲの個数をカウンタ等により記憶しておく。【００５２】
そして、すべてのＬＦＳＲ動作判定とそれに伴うシフト処理が完了したあと、動作制御部９は、カウンタに記憶された数が、予め規定したシフト処理回数（例えば、ＬＦＳＲの個数Ｎ）と等しいか、比較を行う（ステップＡ１２；遅延処理動作判定）。【００５３】
前記比較の結果、カウンタに記憶された数が、予め規定したシフト処理回数より少ない場合、動作制御部９は、カウンタに記憶された数をインクリメントしながら、遅延処理手段８２０による遅延処理を実施する（ステップＡ１３）。【００５４】
上記ステップＡ１２、ステップＡ１３の処理は、カウンタに記憶された数が前記予め規定したシフト処理回数と等しくなるまで繰り返される。【００５５】
本実施例においても、ステップＡ３からステップＡ７（ステップＡ１２、Ａ１３を含む）までの一連の処理は繰り返し実行され、指定長の擬似乱数が生成できた時点で終了する（ステップＡ８、Ａ９）。【００５６】
以上のように、本実施例においても、動作制御部９にてシフト処理が選択されなかった場合も同程度の遅延処理が必ず行われるため、一回の動作の処理時間が均一化（一定化）される。このため、外部からの処理時間の測定による秘密鍵導出を困難にすることができる。【００５７】
もちろん、各ＬＦＳＲ８０１〜８０Ｎのビット幅がそれぞれ異なる場合は、動作制御部９に、当該ビット幅情報を遅延処理手段８２０に送信し、動作選択されなかったＬＦＳＲと同程度の遅延が生じるよう動作させ、一回の動作の全体の処理時間を均一化（一定化）することが望ましい。【００５８】
また、本実施例においても、遅延処理手段８２０としてＬＦＳＲを用い、動作制御部９より、そのシフト制御を行うことにより、上記遅延処理を実現することが可能である。また、その他、各ＬＦＳＲ８０１〜８０Ｎのシフト処理時間と等しくなる処理であれば、Ｗａｉｔ処理等の遅延処理を実行する手段等も採用可能である。【００５９】
また、上記遅延処理としてＬＦＳＲによる偽のシフト処理を実行する場合は、処理時間だけでなく演算処理装置１にて実行される命令も等しくなるため、消費電力波形から内部状態を導出する電力解析に対しても強くなるという利点も実現される。【００６０】
［第３の実施例］
続いて、擬似乱数の生成過程における一回（一出力単位）の出力生成処理に要する処理時間を変動させ、ＬＦＳＲの動作数（ｍｏｖｅ数）を隠蔽するようにした本発明の第３の実施例について説明する。【００６１】
図６は、本発明の第３の実施例に係るストリーム暗号方式の構成図である。擬似乱数生成器（擬似乱数生成装置）４は、Ｎ個のＬＦＳＲ８０１〜８０Ｎと、ランダム遅延処理手段１１と、これらを制御する動作制御部９と、Ｎ個のＬＦＳＲから出力を決定する出力処理部１０とを備えて構成される。【００６２】
ランダム遅延処理手段１１は、Ｎ個のＬＦＳＲ８０１〜８０Ｎの内部状態や挙動とは独立して、ランダムな遅延処理を実行する手段である。この種の遅延処理は、例えば、処理時間が異なる複数の演算をランダムに選択して実行する処理によって実現できる。なお、前記したＬＦＳＲの動作数（ｍｏｖｅ数）を隠蔽するという目的からも明らかなとおり、この遅延処理によって達成される１回当たりの変動幅は、少なくとも１回のＬＦＳＲの動作（シフト処理）に必要とされる処理時間より大きいものとする。【００６３】
続いて、上記構成よりなる擬似乱数生成器４の動作について説明する。図７は、本実施例に係る擬似乱数生成器４の動作を表したフローチャートである。【００６４】
図７のステップＡ１−Ａ６、Ａ７−Ａ９で示される本実施例の動作は、第１の実施例の各ステップＡ１−Ａ６、Ａ７−Ａ９と同様であるので省略する。【００６５】
ステップＡ６が終了した時点で、動作制御部９は、ランダム遅延処理手段１１を動作させる（ステップＡ１４）。【００６６】
以上のように、本実施例では、擬似乱数生成の一回の動作の処理時間を不均一にすることができ、外部からの処理時間の測定による秘密鍵導出を困難にすることができる。【００６７】
なお、上記した実施例では、すべてのシフト処理が完了した後に、１回のランダム遅延処理を行うものとして説明したが、擬似乱数の一出力単位の生成に要する時間を不均一にし、隠蔽することが目的であるため、ランダム遅延処理の実行タイミングや回数は、特に限定されるものではない。即ち、図７のステップＡ１−Ａ６の任意の位置に、任意の回数挿入することができる。【００６８】
なお、上記した実施例では、ランダム遅延処理による処理の変動幅は少なくとも１回のＬＦＳＲの動作（シフト処理）に必要とされる処理時間よりも大きいものとして説明したが、より大きな時間の変動を持った方が、実際の処理時間の導出を困難にすることができることはもちろんである。【００６９】
［第４の実施例］
続いて、擬似乱数の生成過程における一回（一出力単位）の出力生成処理に要する消費電力を均一化（一定化）することにより、一出力あたりのＬＦＳＲの動作数（ｍｏｖｅ数）を隠蔽するようにした本発明の第４の実施例について説明する。【００７０】
図８は、本発明の第４の実施例に係るストリーム暗号方式の構成図である。擬似乱数生成器（擬似乱数生成装置）４は、Ｎ個のＬＦＳＲ８０１〜８０Ｎと、ＬＦＳＲ８０１〜８０Ｎと同数のＮ個のダミーのＬＦＳＲ８１１〜８１Ｎと、これらを制御する動作制御部９と、Ｎ個のＬＦＳＲから出力を決定する出力処理部１０とから構成される。【００７１】
暗復号化処理部７は、擬似乱数生成器４から出力された擬似乱数を用いて平文５又は暗号文６との暗号化又は復号化を実行する手段である。【００７２】
ＬＦＳＲ８０１〜８０Ｎは、動作制御部９の動作選択に基づいてシフト動作し、秘密鍵等の予め与えられた秘密の情報に対してシフト処理を繰り返しながら攪拌を行い、攪拌後のデータを保持する。【００７３】
ダミーのＬＦＳＲ８１１〜８１Ｎは、ＬＦＳＲ８０１〜８０Ｎと同一ビット幅で同一の遷移関数にて動作するＬＦＳＲ群であり、動作制御部９の制御により、ＬＦＳＲ８０１〜８０Ｎと排他的に、即ち、対応するＬＦＳＲが停止状態にあるときにシフト動作する。【００７４】
以上のように、本実施例によれば、擬似乱数生成の一回の動作に要する消費電力を均一にすることができ、仮に外部より消費電力を測定しても、ＬＦＳＲの動作数（ｍｏｖｅ数）の推定は困難となる。従って、電力解析による秘密鍵導出を困難にすることができる。【００７５】
なお、上記した実施例では、消費電力の均一性を高めるため、ダミーのＬＦＳＲ８１１〜８１ＮはＬＦＳＲ８０１〜８０Ｎと同一ビット幅で同一の遷移関数にて動作するものとして説明したが、上記電力解析攻撃に対する耐性を保持できる範囲で、適宜設計的な変更を加えることは可能である。例えば、ＬＦＳＲに限らず、同程度の電力消費を行うシフトレジスタを採用することや、任意のビット幅、遷移関数を持つＬＦＳＲを採用することも可能である。【００７６】
［第５の実施例］
続いて、上記第４の実施例とは別の構成にて、擬似乱数の生成過程における一回（一出力単位）の出力生成処理に要する消費電力を均一化し、ＬＦＳＲの動作数（ｍｏｖｅ数）を隠蔽するようにした本発明の第５の実施例について説明する。【００７７】
図９は、本発明の第５の実施例に係るストリーム暗号方式の構成図である。擬似乱数生成器（擬似乱数生成装置）４は、Ｎ個のＬＦＳＲ８０１〜８０Ｎと、擬似乱数生成アルゴリズムにて停止するＬＦＳＲと同数のＭ個のダミーのＬＦＳＲ８２１〜８２Ｍと、これらを制御する動作制御部９と、Ｎ個のＬＦＳＲから出力を決定する出力処理部１０とから構成される。【００７８】
従って、上記第４の実施例との相違点は、Ｎ個のダミーのＬＦＳＲを用意するのではなく、Ｎ個より少ないＭ個のダミーのＬＦＳＲ８２１〜８２Ｍで済むことである。上記ダミーのＬＦＳＲの個数Ｍは、例えば、動作するＬＦＳＲが多数決で決せられる場合、ＬＦＳＲ総数の半数未満に抑えることができる。【００７９】
ＬＦＳＲ８０１〜８０Ｎは、動作制御部９の動作選択に基づいてシフト動作し、秘密鍵等の予め与えられた秘密の情報に対してシフト処理を繰り返しながら攪拌を行い、攪拌後のデータを保持する。【００８０】
ダミーのＬＦＳＲ８２１〜８２Ｍは、動作制御部９の制御により、ＬＦＳＲ８０１〜８０Ｎが動作選択されなかった場合に、シフト動作する。【００８１】
以上のように、シフト処理が行われなかったＬＦＳＲと同等に、ダミーのＬＦＳＲを動作させることとなり、擬似乱数生成の一回の動作に要する消費電力を均一にすることができる。従って、本実施例もまた、ＬＦＳＲの動作数（ｍｏｖｅ数）の推定は困難であり、電力解析による秘密鍵の導出も困難化される。【００８２】
なお、消費電力の均一性を高めるという観点からは、ＬＦＳＲ８０１〜８０Ｎと同一ビット幅で同一の遷移関数にて動作するダミーのＬＦＳＲ８２１〜８１Ｍが用意され、選択動作されることが望ましいといえる。また、ダミーのＬＦＳＲ８２１〜８１Ｍとしては、ＬＦＳＲに限らず、同程度の電力消費を行うシフトレジスタを採用することも可能である。【００８３】
［第６の実施例］
続いて、擬似乱数の生成過程における一回（一出力単位）の出力生成処理に要する消費電力を変動させ、ＬＦＳＲの動作数（ｍｏｖｅ数）を隠蔽するようにした本発明の第６の実施例について説明する。【００８４】
図１０は、本発明の第６の実施例に係るストリーム暗号方式の構成図である。擬似乱数生成器（擬似乱数生成装置）４は、Ｎ個のＬＦＳＲ８０１〜８０Ｎと、Ｎ個のＬＦＳＲ８０１〜８０Ｎを制御する動作制御部９と、ノイズ発生源１２と、Ｎ個のＬＦＳＲから出力を決定する出力処理部１０とを備えて構成される。【００８５】
ＬＦＳＲ８０１〜８０Ｎは、動作制御部９の動作選択に基づいてシフト動作し、秘密鍵等の予め与えられた秘密の情報に対してシフト処理を繰り返しながら攪拌を行い、攪拌後のデータを保持する。【００８６】
ノイズ発生源１２は、Ｎ個のＬＦＳＲ８０１〜８０Ｎの内部状態や挙動とは独立して（依存することなく）動作し、少なくとも１つのＬＦＳＲのシフト処理において消費される電力よりも大きな電力の変動をもつランダムなノイズ発生源装置である。【００８７】
以上のように、本実施例では、擬似乱数生成の一回の動作の消費電力を不均一にすることができ、外部からの消費電力の測定による秘密鍵導出を困難にすることができる。【００８８】
なお、上記した実施例では、ノイズ発生源１２が生ずる電力の変動幅は少なくとも１回のＬＦＳＲの動作（シフト処理）に必要とされる消費電力よりも大きいものとして説明したが、より大きな電力量の変動を持った方が、実際のＬＦＳＲの消費電力の導出を困難にすることができることはもちろんである。【００８９】
以上本発明の好適な実施形態について説明したが、ＬＦＳＲの真の動作数を隠蔽することにより本発明者提案の攻撃方法を無効化するという本発明の要旨を逸脱しない範囲で、本発明に各種の変形を加えることが可能であることはいうまでもない。【００９０】
例えば、図１１に示すように、各ＬＦＳＲの動作と排他的に遅延処理手段を動作させ、一回あたりの処理時間を均一化する（上記第１の実施例に相当）とともに、ランダム遅延処理手段を動作させ、より解析しにくくすることも可能である。【００９１】
また、例えば、図１２に示すように、各ＬＦＳＲの動作と排他的に動作するダミーのＬＦＳＲを用意し、一回あたりの消費電力を均一化する（上記第４の実施例に相当）とともに、ノイズ発生源１２を動作させる構成も採用可能である。【００９２】
その他、本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。
【産業上の利用可能性】
【００９３】
本発明は、暗号システムを必要とするあらゆる分野に適用可能であるが、上記本発明の特徴に鑑みれば、耐タンパー性を必要とするデバイスやそのプログラムに好適に適用可能である。【００９４】
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。
【図１】
0005136416.tif 000002
【図２】
0005136416.tif 000003
【図３】
0005136416.tif 000004
【図４】
0005136416.tif 000005
【図５】
0005136416.tif 000006
【図６】
0005136416.tif 000007
【図７】
0005136416.tif 000008
【図８】
0005136416.tif 000009
【図９】
0005136416.tif 000010
【図１０】
0005136416.tif 000011
【図１１】
0005136416.tif 000012
【図１２】
0005136416.tif 000013
【図１３】
0005136416.tif 000014
【図１４】
0005136416.tif 000015
【図１５】
0005136416.tif 000016
【図１６】
0005136416.tif 000017
【図１７】
0005136416.tif 000018
【図１８】
0005136416.tif 000019