(57)【特許請求の範囲】
【請求項１】
乱数列を生成するための電子乱数生成デバイスであって、
複数の関数と、前記複数の関数の関数毎に、全てが等しくはない関連付けられたモジュラスとを記憶する電子パラメータストレージと、
内部乱数列を生成する電子関数評価デバイスであって、
前記複数の関数の各関数に対して、該関数に関連付けられたモジュラスを法として、前記内部乱数列内の前に生成された値について該関数を評価することにより、複数の評価結果を取得し、
前記複数の評価結果に結合関数を適用して、前記内部乱数列内の次の数を取得することにより、前記内部乱数列内の前記次の数を生成する、電子関数評価デバイスと、
前記内部乱数列内の前記生成された次の数から、前記乱数列内の次の数を生成する出力部と
を含む、乱数列を生成するための電子乱数生成デバイス。
【請求項２】
前記複数の関数の関数は多項式である、請求項１に記載の乱数列を生成するための電子乱数生成デバイス。
【請求項３】
前記複数の多項式のうちの少なくとも１つは２以上の次数を有する、請求項２に記載の乱数列を生成するための電子乱数生成デバイス。 
【請求項４】
前記複数の関数のうちの少なくとも１つは、ある数の変数を有する多変数関数であり、前記関数評価デバイスは、前記変数の数と同じ数の前記内部乱数列内の前に生成された数を取得し、少なくとも前記多変数関数を取得された前記ある数の前に生成された数に関して評価する、請求項１乃至３のいずれか一項に記載の乱数列を生成するための電子乱数生成デバイス。
【請求項５】
前記結合関数は整数加算である、請求項１乃至４のいずれか一項に記載の乱数列を生成するための電子乱数生成デバイス。
【請求項６】
前記出力部は、前記内部乱数列内の前記生成された次の数からある数のビットを選択することにより、前記乱数列内の前記次の数を生成する、請求項１乃至５のいずれか一項に記載の乱数列を生成するための電子乱数生成デバイス。
【請求項７】
前記関数評価デバイスは、前記出力部が前記内部乱数列内の前記次の数へのアクセスを許容されるか否かを決定するために、前記内部乱数列内の前記次の数に対して検定関数を適用し、
前記検定関数がアクセスが許容されると決定する場合、前記出力部は、前記内部乱数列内の前記生成された次の数から前記乱数列内の前記次の数を生成し、そうでない場合、前記関数評価デバイスは、前記出力部が前記内部乱数列内の前記次の数へのアクセスを許容されると前記検定関数が決定するまで、前記内部乱数列内の次の数を生成する、請求項１乃至６のいずれか一項に記載の乱数列を生成するための電子乱数生成デバイス。
【請求項８】
前記結合関数は結合モジュラス上のモジュロ演算を含み、前記複数の関数に関連付けられた前記複数のモジュラスのうちの少なくとも１つは、前記結合モジュラス引く前記複数のモジュラスのうちの前記少なくとも１つが２のべき乗の倍数であるという特性を有する、請求項１乃至７のいずれか一項に記載の乱数列を生成するための電子乱数生成デバイス。 
【請求項９】
前記複数の関数に関連付けられた前記モジュラスは互いに素である、請求項１乃至８のいずれか一項に記載の乱数列を生成するための電子乱数生成デバイス。
【請求項１０】
ストリーム暗号によりデータシーケンスを暗号化又は解読するための電子ストリーム暗号デバイスであって、
請求項１乃至９のいずれか一項に記載の乱数列を生成するための電子乱数生成デバイスと、
暗号鍵を取得し、前記暗号鍵に基づき、乱数列を生成するための前記電子デバイスの前記電子パラメータストレージを構成する、パラメータ生成デバイスと、
前記構成された電子パラメータストレージに基づき、乱数列を生成するための前記電子デバイスによって生成された前記乱数列を、前記データシーケンスと結合して、暗号化又は解読されたデータシーケンスを取得するための結合デバイスと
を含む、ストリーム暗号によりデータシーケンスを暗号化又は解読するための電子ストリーム暗号デバイス。
【請求項１１】
それぞれが請求項１０に記載の電子ストリーム暗号デバイスを含むコントローラと被制御デバイスとを含む、制御システム。
【請求項１２】
乱数列を生成するための方法であって、
複数の関数と、前記複数の関数の関数毎に、全てが等しくはない関連付けられたモジュラスとを取得するステップと、
内部乱数列を生成するステップであって、
前記複数の関数の各関数に対して、該関数に関連付けられたモジュラスを法として、前記内部乱数列内の前に生成された値について該関数を評価することにより、複数の評価結果を取得し、
前記複数の評価結果に結合関数を適用して前記内部乱数列内の次の数を取得することにより、前記内部乱数列内の前記次の数が生成される、ステップと、
前記内部乱数列内の前記生成された次の数から前記乱数列内の次の数を生成するステップと
を含む、乱数列を生成するための方法。
【請求項１３】
コンピュータ上で実行されるとき、請求項１２の全ステップを実行するコンピュータプログラムコード手段を含む、コンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムが記憶されたコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数列の生成、及び、乱数列を用いたストリーム暗号によるデータシーケンスの暗号化又は解読に関する。 
【背景技術】
【０００２】
乱数生成は多くの暗号アルゴリズムにとって重要な要素である。例えば、ノンス、セッション鍵などの鍵等を生成するために乱数が必要とされる。また、暗号アルゴリズム自体を制御するために乱数が必要な場合がある。特に多数の乱数を必要とする暗号アルゴリズムの１つの種類は、いわゆるストリーム暗号である。ストリーム暗号では、平文のストリームを乱数のストリームと結合することにより平文のストリームが暗号化され、典型的には、２つのストリームがＸＯＲされる。平文のストリームについて統計的仮定を立てないことが好ましく、これは、特に攻撃者が大量に入手可能な可能性があるため、乱数のストリームが攻撃に対して特に強くならなければならないことを意味する。生成される乱数について述べるとき、真の乱数ではなく疑似乱数を意味することを理解されたい。
【０００３】
乱数は暗号以外の分野でも使用される。例えば、乱数は統計において使用される。また、現実世界のイベントの予測不能性をモデル化するためにシミュレーションが乱数を使用し得る。しかし、暗号の分野で乱数に課される要求は、他の分野のそれとは異なる。暗号ではセキュリティが最重要である。暗号及び統計は共に、生成された乱数が真の乱数と区別がつかないことを好む。しかし、これに対するアプローチは異なる。統計及び関連分野では、適切な統計的検定が２つのストリームの間に違いを検出できなければ十分である。しかし、暗号では、攻撃者が推定乱数の調査に大きな計算資源を投入しようとすることを仮定しなければならない。例えば、攻撃者は過去の値から将来の値を予測することに関心を持ち得る。 
【０００４】
暗号で使用される乱数のストリームは、好ましくは、高速で生成されるが低資源、例えば小さいスマートカード又はＲＦＩＤチップ等を必要とし得る。同時に、これは、不釣合いな計算量を投入しようとする攻撃者に対して安全でなければならない。これらの相反する要求は、多数の設計案を生み出してきた。
【０００５】
例えば、乱数生成器の１つの種類は、いわゆる線形シフトレジスタである。線形シフトレジスタはビットシーケンスを生成する。シーケンス内の次のビットは、シーケンス内の選択された前のビットの固定組み合わせを計算することによって算出される。線形シフトレジスタは長い周期、比較的良好な統計的特性を有し、低資源を使用して高速である。残念ながら、線形シフトレジスタは暗号攻撃に対して不安全であり、いわゆるBerlekamp-Masseyアルゴリズムがストリームを攻撃するために使用され得る。 
【０００６】
James E Gentleによる著書“Random Number Generation and Monte Carlos Methods (Second Edition)”, 1 January 2005 (2005-01-01), Springer, New York, XP055082923, ISBN: 978-0-38-700178-4の“Chapter 1. Simulating Random Numbers from a Uniform Distribution”, pages 1-56は、いくつかの従来技術のソリューションを開示する。Section 1.8, page 46には、２つ以上の生成器を組み合わせることにより、しばしば乱数生成を改良することができ、また、任意の種類の乱数生成器が組み合わせられ得ることが記載されている。更に、線形合同法及び２つのシフトレジスタを使用する結合生成器が記載されている。
【０００７】
２つの独立して生成された線形シフトレジスタシーケンスを取り、それらを何らかの非線形な方法で結合することにより改良が得られた。このアプローチの例はいわゆるshrinking generator又はalternating step generatorである。アイデアは、２つの独立した線形シフトレジスタを有することが、シーケンスを攻撃するために決定しなければならないパラメータの数を２倍にし、更に、両者の効果が混同している単一のストリームから、２つの無関係なパラメータのセットを何らかの方法で推測しなければならないというものである。
【０００８】
実際に、線形シフトレジスタによって生成された２つの独立シーケンスの組み合わせは、暗号攻撃の困難性を確かに高める。しかし、より多くの乱数から作業することを要することになるが、かかる攻撃はそれでも可能である。したがって、改良された乱数生成器へのニーズが依然として存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特に暗号アルゴリズムにおいて使用される改良された乱数生成器を得ることは有益であろう。本発明は独立請求項によって定められる。従属請求項は好適な実施形態を定める。
【課題を解決するための手段】
【００１０】
乱数列を生成するための電子乱数生成デバイスが提供される。電子乱数生成デバイスは電子パラメータストレージ、電子関数評価デバイス、及び出力部を含む。電子パラメータストレージは、複数の関数と、複数の関数の関数毎に、関連付けられたモジュラスとを記憶するよう構成される。全てのモジュラスが等しくはない。
【００１１】
電子関数評価デバイスは、内部乱数列を生成するよう構成される。電子関数評価デバイスは、複数の関数の関数毎に、内部乱数列内の前に生成された値に関する当該関数モジュロ当該評価関数に関連付けられたモジュラスを評価して、複数の評価結果を取得し、複数の評価結果に結合関数を適用して、内部数列内の次の数を取得することにより、内部乱数列内の次の数を生成するよう構成される。
【００１２】
出力部は、内部数列内の生成された次の数から乱数列内の次の数を生成するよう構成される。
【００１３】
発明者は、２つの独立した数列から乱数列を生成することは、必ずしも好適ではないことを認識した。独立性は問題を複雑化するよりもむしろ攻撃者を援助し得る。実際に、組み合わされた線形シフトレジスタに対する攻撃は、ストリームを別々に攻撃するためにストリームを互いに分離しようとする。これは典型的には、１つのストリームについて何らかの仮説（「推測」）を立て、他方のストリームに関して計算することでこれらを検証することにより行われる。例えば、T. Johanssonによる論文“Reduced Complexity Correlation Attacks on Two Clock-Controlled Generators”, published in ASIACRYPT 1998: 342-356では、alternating step generatorに対する攻撃が説明されている。少数の１を含む長さＭのセグメントを待ち、ゼロのうちの半分だけが第１の線形シフトレジスタに由来すると仮定することが提案されている。この場合、全ての１及び残りの０は第２の線形シフトレジスタに由来すると仮定される。
【００１４】
発明者が提案する乱数生成器は、この本質的な欠点を克服する。内部乱数列、すなわち乱数列を生成するための電子デバイスの内部の乱数列が、複数の評価結果に対して結合関数を適用することにより生成される。複数の評価結果は独立して取得されず、それぞれが同じ内部数列に依存する。異なるモジュラス上で評価される関数から複数の評価結果を得ることにより、大きなパラメータ状態及び内部乱数列に対する独立寄与が達成される。数学的には、これは、複数の評価結果が数学的に互換性の無い（incompatible）構造から得られることを意味する。例えば、モジュラスが素数の場合、これらの数学的構造はいわゆる「体」であり、各体の間の加算及び乗算の間には関連性が無い。モジュラスが（全ては）素数ではない場合、同様の所見が成立し、この場合、結果の構造は環として特徴付けられ得る。
【００１５】
好ましくは、複数の関数の評価は、共有される入力として、少なくとも１つの前の値を共有する。複数の評価結果はやはり独立して取得されず、それぞれが同じ内部数列に、更にその数列内の共有される値に依存する。この場合、前の値の取得は、全ての関数に関して一斉に行われ得る。例えば、関数評価デバイスは、内部乱数列内の前に生成された数を取得するよう構成され、取得された数が全ての関数評価において使用されてもよい。あるいは、各評価は、前に生成された数を別々に取得する。
【００１６】
これらのステップにより、発明者は、攻撃を単純化するために攻撃者によって利用され得る複数の完全に独立したシーケンスを生成することを回避すると同時に、複雑性に寄与するパラメータをそれぞれが運ぶ複数のソースにランダム性の寄与が由来することを確実にした。言い換えれば、独立性は独立に生成されたシーケンスからではなく、互換性の無い基礎的な数学的構造によって得られる。
【００１７】
好適な一実施形態では、乱数列はストリーム暗号等の暗号アルゴリズムにおいて使用される。
【００１８】
関数の記憶は、関数の係数を記憶することによって行われ得る。例えば多様な関数を包含する関数テンプレートが定められ、記憶される関数は、テンプレートから選択することにより、例えば係数を選択することにより、多様な関数から関数を選択する。好適な一実施形態では、関数のうちの１つ以上は多項式である。
【００１９】
非多項式関数の例は、いわゆるＳボックス及びそれらの連結を含む。Ｓボックスは、その高い非線形特性から選択されるテーブルである。例えば、ＡＥＳのいわゆる「SubBytes」ステップが使用され得るが、固定ＡＥＳ  Ｓボックスを使用する代わりに、より大きなＳボックスの集合からパラメータによって選択されるＳボックスを使用してもよい。好ましくは、Ｓボックスアレイは何らかの拡散関数と組み合わせられ、例えば多項式が後続する。
【００２０】
暗号では、暗号アルゴリズムのセキュリティが異なる分野の問題の困難性にリンクされ得る場合、有利であると考えられる。このようなリンクを有することは、かかる暗号システムの信頼を高める。所与の暗号システムに対してどのようにしてかかる問題を見つけるか、又は反対に、ある難問が特定された後、どのようにして暗号システムを得るかは問題である。従来、難問がしばしば多岐にわたる分野で、すなわち数論、束論、離散最適化、ＮＰ完全性等で得られたことが、より難しくさせる。
【００２１】
最も好ましい実施形態では、複数の関数の全てが多項式である。実際に、この場合、システムへの攻撃は別の難問の解決に関するように見える。特に、多項式の次数が全て１の場合、システムに対する攻撃は、いわゆる「hidden number problem」の解決に関する。多項式の次数がより高い場合、すなわち少なくとも１つの次数が２以上の場合、乱数列に対する攻撃は、いわゆる「extended hidden number problem」に関する。好適な一実施形態では、複数の関数の全てが次数が２以上の多項式である。例えば、それぞれの次数が２のちょうど２つの多項式が取られてもよい。
【００２２】
関連付けられたモジュラスは、全てが等しくはない。これは、結合後にさえ少なくとも２つの数学的に互換性が無い構造が残ることを保証する。全てのモジュラスが異なる場合、互換性の無い構造の数は最大化され、よって好ましい。代わりに、又はより好ましくは追加で、複数の関数に関連付けられたモジュラスが互いに素であることが要求され得る。共通の除数を有することは必ずしも構造を同じにさせないが、例えば共通の除数によって生成されたイデアル上に、いくらかの重なりが存在し得る。互いに素であるモジュラスを有することは、この部分的な互換性の可能性さえ排除するために好ましい。実践では、これは、モジュラスを異なる素数として選択することにより達成され得る。一実施形態では、第１のモジュラスを有する第１の多項式と第２のモジュラスを有する第２の多項式とが存在し、第２のモジュラスは第１のモジュラスとは異なる。
【００２３】
モジュラスのサイズはシステムのセキュリティに関係する。商業的に安全なシステムは、例えば１２８ビット長のモジュラスを使用し得る。例えば１２８以上、２５６以上等のより長いモジュラス、又は例えば６４ビット以上等のより短いモジュラスも可能である。
【００２４】
好適な一実施形態では、前に生成された数は直前に生成された数であり、すなわち、ｘｎ−１、ｘｎ−２等の数列が既に生成されている場合、次の生成される数は少なくともｘｎ−１に依存し得る。
【００２５】
関数は単一の前の値にのみ依存してもよいが、これは必須ではなく、例えば、関数は多変数でもよく、例えば二変数多項式等の多変数多項式であってもよい。一実施形態では、関数のうちの少なくとも１つがある数、すなわち２以上の数の変数を取る多変数関数であり、関数評価デバイスは、変数の数と同じ数の内部乱数列内の前に生成された数を取得し、少なくとも多変数関数を取得された複数の前に生成された数に関して評価するよう構成される。好ましくは、複数の関数のための、内部数列からの使用される前の値の間には、いくらかの又は場合によっては完全な重なりが存在する。 
【００２６】
結合関数に関しては、複数の選択が可能である。結合関数の好ましい一選択は整数加算、すなわち自然数上で定義される加算である。整数加算は、異なるモジュラスから得られる非互換性を良好に混合する。しかし、他の選択も可能である。結合関数の他の可能性は、全ての関数の評価結果のバイナリ表現に適用されるＸＯＲ関数である。
【００２７】
出力関数は単純に内部数列を外部に複製してもよいが、発明者は、関数の出力の少なくとも一部を外界から保護することによりセキュリティを一層高められることを認識した。例えば、出力部は、内部数列内の生成された次の数からある数のビット（ｂ）を選択することにより、すなわち、全てではなく一部のビットを選択することにより、乱数列内の次の数を生成するよう構成され得る。例えば、選択されるビットのパターン、例えばビット３、５、８、１３、２１、３４、５５、８９（この場合、ｂ＝８）が指定されてもよい。後述するように、値「ｂ」を設計の他の部分、例えば結合関数と結び付けることが好適であることが認識された。好適な一実施形態では、ｂ最下位ビットが選択される。
【００２８】
結合関数内に更にリダクションステップを、典型的には結合の最終ステップとして含めることが好適であることが認識された。例えば、結合関数は結合モジュラス上のモジュロ演算を含み得る。結合は、複数の関数に関連付けられた複数のモジュラスのうちの少なくとも１つが、結合モジュラス引く複数のモジュラスのうちの当該少なくとも１つが２のべき乗の倍数であるという特性を有するよう選択され、より好ましくは、全てのモジュラスが異なる倍数でそのような差を有する。電子デバイス外でより多くのビットが見られる場合、２のべき乗はより大きく選択され得る。倍数の乗数は係数に対して小さく、例えば２のべき乗より小さい。例えば、２＾８又は２＾１６として２のべき乗（２＾ｂ）を取る場合、２のべき乗の倍数は２＾２ｂ、すなわち、それぞれ２＾１６又は２＾３２より小さくされてもよい。
【００２９】
例えば、一実施形態では、全てのモジュラスｍｉが条件
0005911654.tif 000002
を満たし、ここで
0005911654.tif 000003
であり、Ｎは１２８ビットの大きな奇数、例えば乱数又は素数である。値Ｎは結合モジュラスとして取られ得る。この選択は、（extended）hidden number problemの困難性を高める。
【００３０】
出力ビット数を減らすことは、乱数列をいわゆるノイジー多項式補間問題に関連付ける。知られる限り、ノイジー多項式補間問題は、相当に大きな計算労力で格子ベーススキームを使用してのみ攻撃され得る。例えば、論文‘Noisy Polynomial Interpolation and Noisy Chinese Remaindering’ by Daniel Bleichenbacher and Phong Qを参照されたい。ノイジー多項式補間問題に結び付けられた乱数生成は未だ提唱されていない。 
【００３１】
他の関数が偶然に異常に小さく又は大きくなる場合、各関数から出力へのいわば漏れは最大になる。おそらくは、攻撃は、特定の出力ストリングがほとんどの関数の小さい値に対応し、よってほぼ全ての寄与が１つの関数に由来するという仮定（推測）に基づき得る。現在、このような攻撃は知られていないが、これは結合数列に対する攻撃のパターンに従うであろう。かかる試みを事前に阻むために、一実施形態では、１つの関数の寄与が他の関数の寄与よりも顕著に大きいか否かを決定する検定関数が使用され、顕著に大きい場合、出力部がこの値を取得することが阻まれる。その後、次の反復が実行される。一実施形態では、関数評価デバイスは、出力部が内部乱数列内の次の数へのアクセスを許容されるか否かを決定するために、内部乱数列内の次の数に対して検定関数を適用するよう構成され、検定関数がアクセスが許容されると決定する場合、出力部は、内部数列内の生成された次の数から乱数列内の次の数を生成し、そうでない場合、関数評価デバイスは、出力部が内部数列内の次の数へのアクセスを許容されると検定関数が決定するまで、内部数列内の次の数を生成する。
【００３２】
例えば、検定関数は、生成された数が閾値（例えば、出力関数によって「ｂ」ビットが出力される場合、２＾ｂ）より小さい、閾値（例えば、モジュロリダクションも使用される場合、Ｎ−２＾ｂより大きい）より大きい、又は両方の場合にアクセスを禁じ得る。 
【００３３】
本発明の他の側面は、ストリーム暗号によりデータシーケンスを暗号化するための電子ストリーム暗号デバイス、及び、ストリーム暗号によりデータシーケンスを解読するための電子ストリーム暗号デバイスに関する。電子ストリーム暗号デバイスは、乱数列を生成するための電子乱数生成デバイス、パラメータ生成デバイス、及び結合デバイスを含む。パラメータ生成デバイスは、暗号鍵を取得、例えば鍵を受け取り又は生成等するよう構成され、また、暗号鍵に基づいて乱数列を生成するための電子乱数生成デバイスの電子パラメータストレージを構成するよう構成される。結合デバイスは、構成された電子パラメータストレージに基づき、乱数列を生成するための電子デバイスによって生成された乱数列をデータシーケンスと結合して、暗号化又は解読されたデータシーケンスを取得するよう構成される。例えば、パラメータ生成デバイスは、鍵に鍵拡張関数を適用することにより、例えば多項式等の関数の係数、モジュラス、及び／又は内部数列の初期値を取得し得る。結合デバイスは、データシーケンスを乱数列とＸＯＲし得る。 
【００３４】
例えば、一実施形態では、パラメータ生成デバイスが、暗号鍵から決定された複数の関数により、乱数列を生成するための電子デバイスの電子パラメータストレージを構成するよう構成され、乱数列は、暗号鍵から決定された複数の関数を使用して生成される。
【００３５】
乱数列を生成するための及び暗号化又は解読のための電子デバイスは、例えば携帯電話等の電子モバイルデバイス、セットトップボックス、又はコンピュータ等であり得る。 
【００３６】
本発明の一側面は、乱数列を生成するための方法であって、複数の関数と、複数の関数の関数毎に、全てが等しくはない関連付けられたモジュラスとを取得するステップと、内部乱数列を取得するステップであって、複数の関数の関数毎に、内部乱数列内の前に生成された値に関する当該関数モジュロ当該評価関数に関連付けられたモジュラスを評価して、複数の評価結果を取得し、複数の評価結果に結合関数を適用して内部数列内の次の数を取得することにより、内部乱数列内の次の数が生成される、ステップと、内部数列内の生成された次の数から乱数列内の次の数を生成するステップとを含む、乱数列を生成するための方法に関する。
【００３７】
本発明に係る方法は、コンピュータ実装方法としてコンピュータ上に、又は専用ハードウェア内に、又は両方の組み合わせに実装され得る。本発明に係る方法の実行可能コードは、コンピュータプログラム製品上に記憶され得る。コンピュータプログラム製品の例は、メモリデバイス、光学記憶デバイス、集積回路、サーバ、オンラインソフトウェア等を含む。好ましくは、コンピュータプログラム製品は、プログラム製品がコンピュータ上で実行されたとき、本発明に係る方法を実行するためのコンピュータ読み取り可能媒体上に記憶された非一時的プログラムコード手段を含む。
【００３８】
好適な一実施形態では、コンピュータプログラムは、コンピュータ上で実行されたとき、本発明に係る方法の全ステップを実行するよう適合されたコンピュータプログラムコード手段を含む。好ましくは、コンピュータプログラムはコンピュータ読み取り可能媒体上に組み込まれる。
【００３９】
本発明の上記及び他の側面は、以下で説明される実施形態を参照して説明され、明らかになるであろう。
【図面の簡単な説明】
【００４０】
【図１】図１は、乱数列を生成するための電子乱数生成デバイスの一実施形態を示す概略的なブロック図である。
【図２】図２は、ストリーム暗号によりデータシーケンスを暗号化又は解読するための電子ストリーム暗号デバイスの第１の実施形態を示す概略的なブロック図である。
【図３】図３は、乱数列を生成するための方法の一実施形態を示す概略的なフローチャートである。
【図４】図４は、ストリーム暗号によりデータシーケンスを暗号化又は解読するための電子ストリーム暗号デバイスの第２の実施形態を示す概略的なブロック図である。
【図５】図５は、照明システムの一実施形態を示す概略的なブロック図である。
【００４１】
異なる図面において同じ参照番号を有するアイテムは、同じ構造的特徴又は同じ機能を有し、又は同じ信号である。このようなアイテム機能及び／又は構造が説明されている場合、詳細な説明においてそれらを繰り返し説明する必要はない。
【発明を実施するための形態】
【００４２】
本発明は多様な形態で実施され得るが、１つ以上の特定の実施形態が詳細に図面に示され、本明細書に記載される。本開示は本発明の原理の例示として考えられ、本発明を図示及び記載される特定の実施形態に限定することは意図しないことを理解されたい。
【００４３】
本発明は様々なパラメータ及び関数等と共に使用され得る。以下、図１及び図３を参照して、一般的な実施形態である乱数列を生成するための電子デバイスを説明する。以下、使用可能な異なるパラメータ等の例を与える。
【００４４】
図１は、電子乱数生成デバイス１００の概略的なブロック図を示す。
【００４５】
電子乱数生成デバイス１００は、電子パラメータストレージ１１０、電子関数評価デバイス１２０、内部数列メモリ１３０、及び出力部１４０を含む。任意で、電子乱数生成デバイス１００は検定関数デバイス１５０を更に含む。
【００４６】
電子乱数生成デバイス１００は、内部数列（シーケンス）内の既に生成されている値に基づいて次の値を繰り返し生成して内部乱数列（略して内部数列）を生成することによって動作する。電子乱数生成デバイス１００の外部で使用される乱数列（外部乱数列とも呼ばれる（略して外部数列））が、内部数列から得られる。
【００４７】
パラメータストレージ１１０は、複数の関数の表現を含む。例えば、パラメータストレージ１１０は、複数の多項式の表現を含み得る。関数の表現は、例えば何らかのテンプレートに従う係数のリストアップによってなされ得る。パラメータストレージ１１０が多項式を含む場合、これらは、係数をリストすることにより、例えば単項の次数を何らかの固定の順序で並べることによって表され得る。一変数多項式が使用される場合、係数は単純に次数の順序でリストされ得る。多変数多項式が使用される場合、例えば辞書式順序等の何らかの他の順序付けが次数に課され得る。
【００４８】
更に、パラメータストレージ１１０内に記憶される関数毎に、その関数と関連付けてモジュラスが記憶される。関数に関連付けられたモジュラスは、後にその関数を評価するときに使用され、出力において関数が容易に分離できないことを保証する。モジュラスは全て同じではなく、好ましくは全て異なる。
【００４９】
パラメータストレージ１１０は、例えばフラッシュメモリ又はハードディスクなどの磁気メモリ等の電子メモリとして実装され得る。パラメータストレージ１１０は、合わせてパラメータストレージ１１０を形成する複数の別々のメモリを含み得る。パラメータストレージ１１０は、例えばＲＡＭ等の一時メモリであってもよい。一時パラメータストレージ１１０の場合、パラメータストレージ１１０は、例えば乱数生成又は任意のネットワーク接続（図示無し）を介してそれらを取得することにより、使用前にパラメータを取得する何らかの手段を有する。
【００５０】
関数評価デバイス１２０は、関数評価デバイス１２０が複数の関数、例えば複数の多項式の表現をパラメータストレージ１１０から取得できるよう、パラメータストレージ１１０に接続される。関数評価デバイス１２０は、複数の関数を使用して内部乱数列の次の値を生成するよう構成され、後により詳細に説明される。
【００５１】
数列メモリ１３０は、生成される内部乱数列の全て又は一部を有する。乱数生成デバイス１００は、まず、出力される外部乱数列がそれから導出される内部乱数列を生成するよう構成される。単純な実施形態では、内部数列と同じ外部数列が取られ得るが、乱数を出力する前に、内部数列に対して種々の処理を実行することがより安全なことが認められる。少なくとも数列メモリ１３０は、内部乱数列の前の値、典型的には直前に生成された値を収容するのに十分大きい。パラメータストレージ１１０内に記憶され、関数評価デバイス１２０によって使用される関数が多変数である場合、数列メモリ１３０は、対応する数の前の値を収容するのに十分大きい。数列メモリ１３０は、内部数列の次の値を生成するための関数評価デバイス１２０への入力、及び、次の外部値を生成するための出力部１４０への入力の両方として使用される。新しい値が生成されたとき、数列メモリ１３０は関数評価デバイス１２０によって更新される。数列メモリ１３０のサイズが限られる場合、例えば１つ又は少数の値に限られる場合、関数評価デバイス１２０は、最も多くの反復前に生成された値を上書きする。
【００５２】
関数評価デバイス１２０は前の値を取り扱うので、数列メモリ１３０は何らかの初期化を必要とする。数列メモリ１３０の開始値は様々な方法で生成することができる。例えば、数列がストリーム暗号等に使用される場合に望ましい、再現可能な乱数列を作成するために、数列メモリ１３０は固定値によって初期化され得る。例えば、固定値はパラメータストレージ１１０内に記憶されてもよい。例えば、オールゼロが適切な開始値であり得る。再現可能性が必要ない場合、数列メモリ１３０は真の又は他のノイジーな値、例えば現在時間によって初期化されてもよい。
【００５３】
出力部１４０は、内部数列から外部数列を決定する。出力部１４０は一切の処理を実行しなくてもよいが、内部数列をエクスポートしないことが好ましい。一実施形態では、出力部１４０は数「ｂ」によって構成され、出力部１４０は、外部数列の次の値を生成するために、内部数列の生成された次の値のバイナリ表現からｂビットを選択する。例えば、出力部１４０はｂ最下位ビット（ＬＳＢ）を選択し得る。
【００５４】
図１に示される実施形態では、関数評価デバイス１２０は、関数評価器と評価結果コンバイナとを含む。関数評価器は、パラメータストレージ１１０内に示される複数の関数のうちの関数を評価し、モジュロ関連付けられたモジュラス（関連付けられたモジュラスを法とする計算）によりその結果をリダクションするよう構成される。評価は関数毎に繰り返され、これは戻り線１２４によって示されている。複数の関数の結果はその後、評価結果コンバイナ１２８によって結合される。関数評価デバイス１２０は、評価結果を一時的に記憶するための何らかのメモリへのアクセスを有し得る。結合関数が部分評価を許容する場合、このメモリは単一の値に制限され得るが、そうでなければ、このメモリは複数の評価結果の全てを一時的に記憶すべきである。一実施形態では、評価デバイス１２０は複数の関数評価器を含み、これは並列化に利益を与えるが、重要なことには、更に、関数が表現される態様、すなわち関数テンプレートの大きな拡張を要さず、異なる関数タイプの使用を可能にする。
【００５５】
評価結果コンバイナ１２８は整数加算であり、これは好ましい選択肢である。また、評価結果コンバイナ１２８は、関数評価のバイナリ表現のＸＯＲであってもよい。また、評価結果コンバイナ１２８は、典型的には最終ステップとして、結果をリダクションするためのリダクションステップを含んでもよい。例えば、乱数生成デバイス１００が固定サイズ、例えば１２８ビットの内部ワードを取り扱う場合、評価結果コンバイナ１２８は、例えば最上位ビット（ＭＳＢ）を除去することにより、単純に結果を固定サイズに切り捨ててもよい。しかし、モジュロリダクションを使用することにより、後により詳細に説明されるように、難問とのリンクが強化され得る。評価結果コンバイナ１２８のモジュロリダクションに使用されるモジュラスは、結合モジュラス（Ｎ）と呼ばれる。
【００５６】
検定関数デバイス１５０は、任意ではあるが有利な要素である。複数の関数のうちの１つの特定の関数に関する所与の情報が出力されることを防ぐために、検定関数デバイス１５０は、外部数列によって使用される内部数列の値が異常に小さいか又は大きいかを検定する。例えば、検定関数デバイス１５０は、数が閾値以下であるか否かを検定してもよい。例えば、検定関数デバイス１５０は、数が閾値以上であるか否かを検定してもよい。検定関数デバイス１５０は両方の検定を行ってもよい。閾値は、それらの対数が、値のサイズの２を底とする対数に比例するよう設定され得る。上限値は、複数のモジュラスのうちの最大のモジュラス、又は、使用される場合、結合モジュラスに関連し得る。
【００５７】
以下、乱数生成デバイス１００（又は、後述されるような乱数列を生成するための方法３００）において使用され得るパラメータの複数の例示的な選択肢を与える。
【００５８】
第１の例：外部乱数列は、
0005911654.tif 000004
として示される、ｘｎの２つの有限体多項式（ｆ及びｇ）の評価及び整数上の加算による結果の結合の評価から生成される内部数列の別の要素ｘｎのｂビットに各要素ｙｎが対応するような、例えば
0005911654.tif 000005
のような数列
0005911654.tif 000006
として定められ得る。この表記において、
0005911654.tif 000007
はリダクションモジュロｑを示す。ｘｎは整数上の和として生成されるため、ｐ又はｑより大きくなり、モジュロ演算のため、値は後続のｙ値のために直接使用され得る。乱数生成器は、異なる数列を生成するための初期シードとして値ｘ０、例えば乱数を使用し得る。
【００５９】
他の実施形態は以下を含む。
１．数列ｘｎは、乱数ｘ０及びｘ１を初期シードとして使用して、次のように構築されてもよい。
0005911654.tif 000008
２．例えば乱数ｘ０及びｘ１を初期シードとして使用して例えば二変数を取る、多変数単項式の使用。
0005911654.tif 000009
３．既知の初期入力ｘ０を有するが、多項式の係数の生成に何らかのランダムなデータが使用される多項式の使用。
４．数列ｘｎは、入力として前の値ｘｎ−１の変換Ｔ（）：Ｔ（ｘｎ−１）を使用することによって構築されてもよい。例えば、Ｔ（）は、ｘｎ−１のｘビットシフトされたバージョン、又は、ｘｎ−１のｉｔｈビットがＴ（ｘｎ−１）内のｊｔｈビットに移動されるようなマップであり得る。
0005911654.tif 000010
更に、使用される変換は２つの関数で異なってもよい。
５．数列ｘｎは、次のように、関数Ｂ（）に従って多項式の出力を結合することによって構築されてもよい。 
0005911654.tif 000011
【００６０】
上記実施形態において、Ｂ（）は整数上の加算であるが、ＸＯＲ等の他の関数も可能であることに留意されたい。
【００６１】
以下、特定の数学的難問に対応するため特に好適なパラメータの選択方法をもう１つ与える。 
【００６２】
結合モジュラスのサイズ（Ｎ）、及び１つの反復で出力されるビット数（ｂ）に関する選択がなされる。この例では、結合モジュラスは奇数でなければならない。結合モジュラスは例えばランダムに選択され得る。結合モジュラスの好ましくない因数分解を排除するために、Ｎのために素数を選択することが好ましい可能性がある。結合モジュラス及びｂはセキュリティパラメータとして考えることができ、大きな結合モジュラスはより安全であり、出力される低いビット数はより安全である。また、多項式の数ｌに関して選択がなされ、同様に、多項式が多い程、安全である。可能な選択は、Ｎ＝１２８、ｂ＝８、ｌ＝２である。次に、多項式のモジュラスが多項式毎に決定される。
【００６３】
数ｂはより大きく選択してもよく、例えば８、１６、３２でもよい。多項式はより多くてもよく、例えば３つでもよい。結合モジュラスのサイズは、例えば３２、６４、８０ビット等、より小さくてもよく、又は例えば１９６若しくは２５６ビット等、より大きくてもよく、又はこれらの値の間であってもよい。 
【００６４】
本実施形態では、全てのモジュラスが条件
0005911654.tif 000012
を満たし、ここで、
0005911654.tif 000013
であり、Ｎは結合モジュラスである。モジュラスは結合モジュラスより大きくても小さくてもよいことに留意されたい。中間値で最大値、すなわちＮを有することが望ましい場合、ｃｉはすべて正に選択されてもよい。ｃｉは次のようにして選択され得る。
１．ランダムな小さい乱数
0005911654.tif 000014
を選択する。
２．モジュラス
0005911654.tif 000015
を設定。
３．ｍｉが互いに素であるかを検定し、そうでない場合、ステップ１に向かう。
【００６５】
ｍｉを異なる素数として選択することにより、ステップ３が省かれてもよく、これは、素数を見つけるためにモジュラス毎により多くの候補ｃｉ値を検定することを要し得るが、一方では、全てのｍｉの集合が互いに素であることが保証される。また、これは関数が環ではなく体上で評価されることを保証する。
【００６６】
モジュラスが選択された後、係数モジュロ関連するモジュラスにより多項式が決定され、すなわち、多項式ｉはモジュロモジュラスｍｉである。係数はランダムに選択され得る。一変数多項式を仮定するが、二変数多項式も可能である。多項式は等しい又は異なる次数を有し得る。好ましくは、多項式のうちの少なくとも１つは２以上の次数を有する。
【００６７】
結合関数として、整数加算が使用され、モジュロリダクションモジュロ結合モジュラスＮが続く。このモジュラスは全ての他のモジュラスに非常に近いため、効果は特に強い。モジュロ演算の結果は、内部数列内の次の値である。出力関数として、モジュロ演算の結果のｂ最下位ビットが使用され得る。
【００６８】
NIST  Special Publication 800-22 “A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications”に示されるランダム性のためのテストスイートを使用して、この及び他の実施形態が検定された。このようにして生成された乱数列のランダム特性は、暗号的使用のために良好に十分であることが認められた。
【００６９】
典型的には、電子乱数生成デバイス１００は、電子乱数生成デバイス１００に記憶される適切なソフトウェア、例えば、ダウンロードされ、対応する例えばＲＡＭ又はＦｌａｓｈ（登録商標）（図示無し）等のメモリ内に記憶され得るソフトウェアを実行するマイクロプロセッサ（図示無し）を含む。
【００７０】
図３は、乱数列を生成するための方法３００を概略的なフローチャートで示す。方法は電子乱数生成デバイス１００と共に使用され得るが、これは必須ではない。とはいえ、方法３００は電子デバイス上で、特にコンピュータ実装方法として最適に実行される。
【００７１】
ステップ３１０において、複数の関数と、複数の関数の関数毎に、全てが等しくはない関連付けられたモジュラスとが取得される。ステップ３２０において、内部乱数列の初期値が生成される。例えば、これらは何らかの他のソースから取得されるノイジーな値でもよい。この場合、初期数列が予測不能であった限り、生成される数列は予測不能になる。あるいは、これらは定められた値、例えば全て０でもよく、この場合、数列は再現可能になる。例えば攻撃者に対して秘密にされているために初期値を知らない攻撃者にとって、数列は真にランダムな数列と区別がつかない。少なくとも、如何なる識別性も、将来の数列の値を予測するのに十分ではない。ステップ３３０において、内部乱数列内の次の数が生成される。これは、ステップ３３２〜３３８において与えられる方法で行われる。ステップ３３２において、内部乱数列内の前に生成された数が取得される。数列がｘｉと表示され、現在生成されている次の数がｘｎの場合（より高いインデックスは、より最近に生成された値に対応する）、使用される数はｘｎ−１でもよく、他の値でもよい。このフローチャートでは、全ての関数に関して同じ前の値が使用されることに留意されたい。関数間の従属性が保証されるため、これは好ましい状況である。ステップ３３４において、内部数列の前に取得された生成値（ｘｎ−１）に関して関数が評価され、モジュロ評価関数に関連付けられたモジュラスが行われる。関数が多項式、又は線形関数若しくは多項式が後続し得るＳボックスの組み合わせの場合、かかる計算は低資源デバイス上で可能である。また、このような関数は自然な態様で、例えばメモリ１１０内に符号化されてもよい。ステップ３３６において、評価すべき関数が残っているか否かが決定され、残っている場合、フローはステップ３３４に戻り、複数の関数のうちの次の関数を評価する。ステップ３３８において、結合関数を適用することにより、複数の評価結果が結合される。多くの関数に関して、特に加算及びＸＯＲ等に関して、ステップ３３８はステップ３３６に統合され得る。ステップ３４０において、内部数列内の生成された次の数から、乱数列内の次の数が生成される。
【００７２】
当業者にとって明らかなように、方法を実行する多くの異なる方法が可能である。例えば、ステップの順番が変更されてもよく、又はいくつかのステップが並行して実行されてもよい。更に、ステップの間に他の方法ステップが挿入されてもよい。挿入されるステップは、本明細書に記載されるような方法の細分化を表してもよく、又は方法と無関係でもよい。例えば、ステップ３１０及び３２０又はステップ３３４が、少なくとも部分的に並行して実行され得る。更に、次のステップが開始される前に、所与のステップが完全に完了しなくてもよい。
【００７３】
本発明に係る方法は、方法３００をプロセッサシステムに実行させるための命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティが実行するステップのみを含んでもよい。ソフトウェアはハードディスク、フロッピー（登録商標）、メモリ等の適切な記憶媒体内に記憶され得る。ソフトウェアはワイヤー沿いに又は無線で、又はインターネット等のデータネットワークを使用して信号として送られてもよい。ソフトウェアはダウンロード可能且つ／又はサーバ上で遠隔使用可能であってもよい。
【００７４】
図２は、ストリーム暗号における乱数列の使用を示す。
【００７５】
図２は、パラメータ生成デバイス２１０を示す。パラメータ生成デバイス２１０は、入力として暗号鍵を取り、電子乱数生成デバイス１００内で使用されるパラメータを生成するよう構成される。パラメータの一部が固定で、一部が生成されてもよいことに留意されたい。典型的には、多項式の数、出力ビット数、及び多項式の次数は、脅威モデルの評価に基づき事前に決定される。この実施形態では、パラメータ生成デバイス２１０は、複数のモジュラス又は複数の関数のうちの少なくとも１つを生成する。好ましくは、パラメータ生成デバイス２１０は、複数のモジュラス及び複数の関数の両方を生成する。パラメータ生成デバイス２１０は関数自体を生成してもよいし、生成しなくてもよい。パラメータ生成デバイス２１０が関数を生成することが好ましい。例えば、パラメータ生成デバイス２１０は、多項式係数として使用される係数のシーケンスを生成し得る。ストリーム暗号デバイス２００は、乱数列を結合するための結合デバイス２４０を更に含む。更に、ストリーム暗号デバイス２００は例えば入力から又はストレージ若しくは生成からデータストリームを取得するよう構成され、また、出力ストリームを更に処理するよう構成される。データストリームはプレーンデータストリームを表し、この場合、出力ストリームは対応する暗号化されたデータストリームである。また、データストリームは暗号化されたデータストリームを表してもよく、この場合、出力ストリームはプレーンデータストリームを表す。入力ストリームを、電子乱数生成デバイス１００から取得された乱数列（ストリーム）と結合することにより、入力ストリームから出力ストリームが得られる。
【００７６】
動作時、パラメータ生成デバイス２１０は攻撃者に対して秘密な暗号鍵、例えば１２８ビット又は２５６ビット鍵を受け取る。パラメータ生成デバイス２１０は更にノンス又は他のデータも受け取ってもよい。受け取られたデータを使用し、パラメータ生成デバイス２１０は電子乱数生成デバイス１００を構成し、すなわちパラメータストレージ１１０を構成する。この時点で、電子乱数生成デバイス１００は乱数列を生成するよう構成される。ストリーム暗号デバイス２００が入力ストリーム２２０を受け取り始めると、入力ストリームは乱数列と結合される。これは、例えばそれ自体はストリーム暗号の分野で知られている様々な方法で実行され得る。特に、結合デバイス２４０はＸＯＲデバイスであり得る。このようにして、出力ストリームが生成される。出力ストリームは保存され、又は更に処理若しくは伝送される等してもよい。
【００７７】
電子乱数生成デバイス１００によって使用される数列の初期値は鍵から、又はカウンタから取得されてもよく、又は固定であってもよい。また、初期値は、例えばパラメータ生成デバイス２１０によってメモリ１１０に構成され、メモリ１１０から取得されてもよい。
【００７８】
ストリーム暗号デバイス２００の一実施形態では、疑似乱数生成器内で使用される多項式の係数は、秘密鍵Ｋから生成される。この場合、疑似乱数生成器は、出力として乱数列を生成する多項式によって形成される。各乱数列はその後、平文に対してＸＯＲされ、暗号文が生成される。入力が暗号文メッセージで出力が平文メッセージである点を除き、解読プロセスは暗号化と同じである。
【００７９】
同じ鍵により異なるメッセージに対する異なる疑似乱数列を可能にするために、ノンスが使用され、暗号文と共に交換されてもよい。ノンスは数列メモリ１３０内の初期値と結合されてもよいし、又は、ノンスは多項式係数を生成するための入力として鍵と結合されてもよい。鍵と組み合わせることにより、異なる多項式を生成することができ、これは異なる疑似乱数列を生成する。ノンスを鍵又はカウンタ値と組み合わせる１つの方法は、それらをＸＯＲ又は連結することである。
【００８０】
図４は、固定の、場合によっては公開される多項式係数及びモジュラスを使用するが、疑似乱数生成器の初期化に秘密鍵を使用する異なる変形例を示す。
【００８１】
プロセスは、一例として、例えばそれぞれの次数が２である例えば２つの多項式を使用する（しかし、他の選択も可能である）電子乱数生成デバイス１００の初期シードとして秘密鍵Ｋ（又はＫから導出された数）を使用することを含む。
【００８２】
両多項式の評価結果は、例えば単純な加算によって結合され、Ｒが得られる。Ｒのｎビットのうちｂビットのみが疑似乱数列として露出される。次のｂ疑似ランダムビットを生成するために、前回の結果Ｒを使用して次の入力が更新される。
【００８３】
新しいメッセージが暗号化される場合、同じ鍵Ｋに対して得られる疑似乱数列が異なることを保証する追加要素「ノンス」がパラメータ生成デバイス２１０内で使用されてもよい。これを実行する方法は、鍵Ｋを取り、それをノンスとＸＯＲすることであろう。
【００８４】
複数のブロックが必要な場合、例えばカウンタと共に鍵をハッシュすることにより、鍵を拡張してもよい。Ｓｈａ−１及びＳｈａ−２５６は適切な選択肢である。
【００８５】
ストリーム暗号は、特に資源制約デバイスで通信を保護することを要する製品及びサービスに適用可能である。このような資源制約システムの一例は照明制御である。このようなシステムは図５に示される。図５は、電気照明コントローラ５１０及び電子照明５２０を示す。照明コントローラ５１０は照明５２０を監視及び／又は制御し得る。照明５２０は例えばランプ／ＬＥＤドライバの組み合わせであり得る。照明コントローラ５１０及び照明５２０は、双方向通信用に構成される。しかし、監視のみ又は制御のみが必要な場合、一方向通信が使用されてもよい。照明コントローラ５１０及び照明５２０は共通の秘密鍵Ｋを共有する。照明コントローラ５１０及び照明５２０はいずれも、ストリーム暗号デバイス２００又はストリーム暗号デバイス４００等のデバイスを有する。先に（場合によっては平文で）交換された共有される秘密及び場合によってはノンスを使用して、照明コントローラ５１０及び照明５２０の両方が電子乱数生成デバイス１００を構成する。照明コントローラ５１０が例えば制御のために照明５２０にメッセージを送る場合、メッセージはストリーム暗号として暗号化される。メッセージが照明５２０において受け取られると、メッセージは生成された同じ乱数列を使用して解読され得る。照明５２０から照明コントローラ５１０への通信は逆に動作する。 
【００８６】
本発明は、本発明を実行するよう適合されたコンピュータプログラム、特にキャリア上の又はキャリア内のコンピュータプログラムまで及ぶ。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形式等のソースコード及びオブジェクトコードの中間コードの形式、又は本発明に係る方法の実装形態に適した任意の他の形式を取り得る。コンピュータプログラム製品に関する一実施形態は、上記方法のうちの少なくとも１つの方法の処理ステップのそれぞれに対応するコンピュータ実行可能な命令を含む。これらの命令はサブルーチンに細分化されてもよいし、更に／又は静的に又は動的にリンクされ得る１つ以上のファイル内に保存されてもよい。コンピュータプログラム製品に関する他の実施形態は、上記システム及び／又は製品のうちの少なくとも１つの手段のそれぞれに対応するコンピュータ実行可能な命令を含む。
【００８７】
上記実施形態は本発明を限定ではなく説明するものであり、当業者は多数の他の実施形態を設計できることに留意されたい。
【００８８】
請求項において、括弧内の如何なる参照符号も請求項を限定すると解されるべきではない。動詞「備える（又は含む若しくは有する等）」及びその活用形は請求項内に記載されている以外の要素又はステップの存在を除外しない。要素は複数を除外しない。本発明は、複数の異なる要素を備えるハードウェアによって、及び、適切にプログラミングされたコンピュータによって実施され得る。複数の手段を列挙する装置クレームにおいて、手段のいくつかは同一のアイテム又はハードウェアによって具現化されてもよい。単にいくつかの手段が互いに異なる独立請求項に記載されているからといって、これらの手段の組み合わせを好適に使用することができないとは限らない。
【符号の説明】
【００８９】
１００  乱数列を生成するための電子乱数生成デバイス
１１０  電子パラメータストレージ
１２０  電子関数評価デバイス
１２２  関数評価器
１２４  制御パス
１２８  評価結果コンバイナ
１３０  内部数列メモリ
１４０  出力部
１５０  検定関数デバイス
２００  ストリーム暗号によりデータシーケンスを暗号化又は解読するための電子ストリーム暗号デバイス
２１０  パラメータ生成デバイス
２２０  データストリーム
２３０  出力ストリーム
２４０  結合デバイス
４００  ストリーム暗号によりデータシーケンスを暗号化又は解読するための電子ストリーム暗号デバイス
５００  電子照明制御システム
５１０  電気照明コントローラ
５２０  電子照明
【図１】
0005911654.tif 000016
【図２】
0005911654.tif 000017
【図４】
0005911654.tif 000018
【図５】
0005911654.tif 000019
【図３】
0005911654.tif 000020