(57)【要約】ランダムデータを発生する方法であって、当該方法は、一連の動作を繰り返し実行するステップを具備し、該一連の操作は、その一連操作の次の動作におけるシード値として用いられる結果値を発生させるために、かつ、ランダムデータの出力を発生させるために、シード値を処理するステップを含み、さらに、この一連の操作は、所定の量の新しい真ランダムデータが利用可能か否かを決定するステップと、そのようなデータが利用可能である場合に少なくとも新しい真ランダムデータに依存した結果値の発生を変更するステップとを具備する。
2004519035.tif 000002
【特許請求の範囲】
【請求項１】
ランダムデータの発生方法であって、
一連の操作を繰り返し実行するステップを具備し、該一連の操作は、その一連の操作の次の動作におけるシード値として用いるために結果値を発生し、かつ、出力ランダムデータを発生するために、シード値を処理するステップを含み、
この一連の操作は、さらに、所定量の新しい真ランダムデータが利用可能か否かを決定するステップと、
前記新しい真ランダムデータが利用可能である場合に、少なくとも前記新しい真ランダムデータに基づいて前記結果値の発生を変更する変更ステップとを具備するランダムデータの発生方法。
【請求項２】
前記変更ステップは、前記結果値を発生する前に前記シード値を変更するステップを含むことを特徴とする請求項１に記載のランダムデータの発生方法。
【請求項３】
前記変更ステップは、前記シード値のビットのうち少なくともいくつかに対して、前記新しい真ランダムデータの対応ビットとの排他的論理和を実行するステップを含むことを特徴とする請求項２に記載のランダムデータの発生方法。
【請求項４】
前記出力ランダムデータは前記結果値を処理することによって生成されることを特徴とする請求項１から請求項３のいずれかに記載のランダムデータの発生方法。
【請求項５】
前記真ランダムデータは２つの発振器の発振速度を比較することによって生成されることを特徴とする請求項１から請求項４のいずれかに記載のランダムデータの発生方法。
【請求項６】
前記２つの発振器のうちの一方だけが水晶制御発振子であることを特徴とする請求項５に記載のランダムデータの発生方法。
【請求項７】
前記真ランダムデータは、前記２つの発振器のうち前記一方の発振器の発振数が他方の発振器の所定の発振数の間にいくつあるかをカウントすることによって生成されることを特徴とする請求項５または請求項６に記載のランダムデータの発生方法。
【請求項８】
前記真ランダムデータは、前記発振数のうち１つまたはそれ以上の最下位ビットであることを特徴とする請求項７に記載のランダムデータの発生方法。
【請求項９】
前記発振数のうち最下位ビットの少なくとも１つに依存して前記発振器のうちの一方の発振器の発振速度を調節するステップをさらに具備することを特徴とする請求項７または請求項８に記載のランダムデータの発生方法。
【請求項１０】
前記発振器のうち一方の発振速度は他方の発振器のそれの少なくとも１００倍であることを特徴とする請求項５から請求項９のいずれかに記載のランダムデータの発生方法。
【請求項１１】
前記発振器のうち一方は、通信データの無線周波数変調または復調のための信号を発生することを特徴とする請求項５から請求項１０のいずれかに記載のランダムデータの発生方法。
【請求項１２】
前記発振器の前記他方は、通信停止期間のタイミングのための信号を発生することを特徴とする請求項１１に記載のランダムデータの発生方法。
【請求項１３】
ランダムデータの発生装置であって、
真ランダムデータのソースと、
シード値を格納する記憶部と、
一連の操作を実行する処理手段とを備えており、
該一連の操作は、その一連の操作のうち次の動作においてシード値として用いるために前記記憶部に格納する結果値を発生するために、かつ、出力ランダムデータを発生するために、シード値を処理するステップを含み、
該一連の操作は、さらに、所定量の新しい真ランダムデータが利用可能か否かを決定するステップと、
前記新しい真ランダムデータが利用可能である場合に、少なくとも前記新しい真ランダムデータに基づいて前記結果値の発生を変更するステップをさらに含むランダムデータの発生装置。
【請求項１４】
請求項１３に記載された装置を備えた通信装置。
【請求項１５】
添付図面を参照して実質的にここに記載されたランダムデータの発生方法。
【請求項１６】
添付図面を参照して実質的にここに記載されたランダムデータの発生装置。
【発明の詳細な説明】
【０００１】
本発明は、例えば、暗号化および認証システムに用いられるランダムデータの発生に関する。
【０００２】
多くの暗号化システムおよび認証システムは、例えば、暗号化の間にチャレンジを発生させるために、乱数を用いることが求められる。例えば、ＤＥＳおよびＲＳＡである。典型的なレベルのセキュリティを要求するシステムにおいては、約５０から１５０ビットの範囲内にある長さの乱数が必要とされる。このタイプの真ランダム値を形成する１つの方法としては、電圧レベルのようなノイズのあるアナログ値をデジタル化すること、および、乱数を形成するデジタル化された結果のうち最下位ビットを用いることである。しかしながら、この方法は、典型的な暗号化システムに求められる長さの乱数を形成するのに充分なビットを収集するために、いくらか時間がかかる。従って、ほとんどの場合、その代わりに、擬似乱数を発生させるアルゴリズムが用いられる。そのようなアルゴリズムによって発生される数値は、真ランダム値ではなく、決定論的な値である。よって、この方法では、もし、そのアルゴリズムおよびそのシードが既知である場合には、擬似ランダム値が予測可能であり、第３者が暗号または認証体系を破壊することを可能としてしまう。
【０００３】
従って、次に発生される数値がその前の数値から予測できないような特性を有する乱数を迅速に発生することができる方法が所望されている。
【０００４】
本発明の第１の形態によれば、乱数を発生する方法が提供され、その方法は、一連の操作を繰り返し実行するステップを具備し、該一連の操作は、その一連の操作の次の動作におけるシード値として用いられる結果値を発生させるために、かつ、ランダムデータの出力を発生させるためにシード値を処理するステップを含み、さらに、この一連の動作は、所定の量の新しい真ランダムデータが利用可能か否かを決定するステップと、そのようなデータが利用可能である場合に新しい真ランダムデータに依存して少なくとも結果値の発生を変更するステップとを具備する。
【０００５】
本発明の第２の形態によれば、ランダムデータを発生する装置が提供され、その装置は、真ランダムデータのソースと、シード値を格納する記憶部と、一連の操作を実行する手段とを備えており、該一連の操作は、その一連の操作の次の動作においてシード値として用いるために記憶部に格納される結果値を発生するために、かつ、出力ランダムデータを発生するために、シード値を処理するステップを含み、さらに、該一連の動作は、所定の量の新しいランダムデータが利用可能か否かを決定するステップと、そのようなデータが利用可能である場合に新しい真ランダムデータに依存して少なくとも結果値の発生を変更する変更ステップとを含む。
【０００６】
好ましくは、この変更ステップは、結果値を発生する前にシード値を変更するステップを含む。代替的に、変更ステップは、更なる値（ａ ｆｕｒｔｈｅｒ ｖａｌｕｅ）を変更するステップ、あるいは、結果値を変更するステップを含んでもよい。この変更ステップは、好ましくは、シード値のビットのうち少なくともいくつかと新しい真ランダムデータの対応するビットとの排他的論理和の処理を実行し、あるいは、加算処理を実行するステップを含む。シード値は、単一の変数で変更されてもよく、若しくは、一の変数から他の変数へ変換するように変更してもよい。
【０００７】
出力ランダムデータは、好ましくは、結果値を処理することによって発生される。
【０００８】
真ランダムデータは、ランダムデータ発生器の外部において少なくとも部分的にランダム処理を測定することによって、例えば、２つの発振器の速さを比較することによって、適切に発生される。
【０００９】
好ましくは、発振器のうちの一方だけが水晶制御発振子である。他方の発振器は、集積回路で実施してよい。好ましくは、発振器のうちの一方は、他方の発振器よりも正確であり、および／または、安定しており、および／または、周囲環境の変化に影響を受けにくい。真ランダムデータは、発振器のうち一方の発振器の発振数が他方の発振器の所定の発振数の間にいくつあるかをカウントすることによって、発生されてよい。好ましくは、前記他方の発振器は、前記一方の発振器よりも遅い。
【００１０】
真ランダムデータは、前記発振数の１つまたはそれ以上の最下位ビットでよい。
【００１１】
（発明の実施の形態）
本発明は、次に、添付図面を参照して、実施例として記載されている。
【００１２】
図１の装置は、擬似乱数発生器１を含む。この乱数発生器は、図示されているように、多目的処理ハードウェア３と、処理ハードウェア３に用いられるプログラムコードを格納する不揮発性プログラムメモリ４と、オペレーションの処理の実行において処理ハードウェア３によって用いられる揮発性記憶メモリ５とを含むプロセッサ２を備えている。しかしながら、ハード・ワイヤード処理装置およびハードウェア／ソフトウェアを混合した形態を含め、データ処理に適切な任意手段が用いられ得る。擬似乱数発生器１は、入力６を受け、それを契機に、出力７においてランダムデータを出力することができる。その乱数発生器１は、真ランダムデータのソース８にアクセスすることができる。図面の実施形態において、ソース８は、乱数発生器１の外部にあり、通信装置における他の機能を有する。しかしながら、そのソース８は、乱数発生器１の内部に組み込まれてもよく、および／または、ランダムデータを生成する専用の機能を有していてもよい。
【００１３】
ソース８は、好ましくは、真ランダムビットが乱数発生器１によって利用可能となるときにその真ランダムビットを格納するための記憶部１０を含む。乱数発生器１は、いくつの真ランダムビットが利用可能であるかを決定するため、利用可能な真ランダムビットを読込むため、並びに、真ランダムビットのうちのそのビットが一旦用いられたときに記憶部１０をリセットするためにリンク１１を通して記憶部１０へアクセスする。
【００１４】
ランダムデータの要求が乱数発生器１によって入力６で受信されたときに、処理手段２は、乱数を生成するために、以下に記載された一連の処理ステップを実行する。次に、乱数は、乱数発生器１によって出力７から出力される。乱数発生器１が要求され（ｃａｌｌｅｄ）、処理手段２が記憶部５に一時的に格納されたシード値へのアクセスの準備がなされたときに、アルゴリズムが実行される。このアルゴリズムは、入力としてシード値を取得し、そのシード値に基づいてランダムデータとこのアルゴリズムの次の繰り返しによって用いられるために格納されるシード値とを発生するというアルゴリズムである。このアルゴリズムの一部として、処理手段２は、このアルゴリズムの前の繰り返しにおいて用いられていなかった新しい真ランダムデータがソース８から取得可能であるか否かを決定する。もし、そのようなデータが取得可能である場合には、処理手段２は新しい真ランダムデータに従って、現在の繰り返しのために受け取られた当初のシード値を変更し、現在の繰り返しを基準として変更後のシード値を用い、一方で、当初取得したシード値は現在の繰り返しを基準として用いられる。このように、真ランダムデータは、そのデータが形成されるのに真ランダムデータが利用可能になるまで待つ必要なく、そのランダムデータの形成をランダム化するためにそれが利用可能になったときに用いられ得る。これは、次の出力の予測を許すような充分な数の出力７が収集されるまでに、シード値は予測不可能な状態に変化するであろう、という重要な利点を有する。
【００１５】
使用され得るアルゴリズムの一例を次に記述する。
このアルゴリズムが実行される前に、多くの定数が決定されなければならない。これらの定数は、乱数発生器が設計されまたは構成された（即ち、システムが構築された）ときに適切に決定され得る。その定数は、次の通りである。
【００１６】
Ｎは、約８００の整数を示す
Ｌは、ソース８から取得可能な真ランダムビットの数である
Ｋ１およびＫ２は、３、１７、２５７および６５５３７のような小さなフェルマ素数である（Ｋ１およびＫ２は等しくてよい）
ｐ１およびｐ２は、長さＮ／２の別個の素数である。“強Ｓ素数（ｓｔｒｏｎｇ−Ｓ−ｐｒｉｍｅ）”（Ｓは負でない整数）は、ｐ−１が素数ｐと同じだけ多くのビット長の少なくとも３／４の強（Ｓ−１）素数因子（ｓｔｒｏｎｇ−（Ｓ−１）−ｐｒｉｍｅ ｆａｃｔｏｒ）を有するように、素数ｐとして決定された場合、強０素数（ｓｔｒｏｎｇ−０−ｐｒｉｍｅ）が単純な素数であるとして、ｐ１およびｐ２は強２素数（ｓｔｒｏｎｇ−２−ｐｒｉｍｅｓ）となるように選択される。
Ｍは、ｐ１およびｐ２から生じるものである
一旦、Ｍが算出されると、ｐ１およびｐ２は、回復できないように書き込まれ、あるいは、高いセキュリティで格納されることが好ましい。
アルゴリズム：Ｌ、Ｋ１、Ｋ２およびＭの動作の間に呼び出される定数は、不揮発性メモリ４へ格納されることが好ましい。
【００１７】
このアルゴリズムの各繰り返しにおいて、シード値は、そのアルゴリズムへの入力として受け入れられる。このシード値は、そのアルゴリズムによって変更され。その変更後の値は、そのアルゴリズムの次の繰り返しに用いられるシード値として受け入れられる。実行されるべき次の繰り返しに用いられるシード値は、一時的記憶部５の特定の位置９に格納される。最初のシード値は、第１の繰り返しの入力としてそのアルゴリズムによって要求され、それはランダムデータを発生するように要求される。最初のシード値を形成するための１つの方法としては、ソース８から一連のランダムビットを収集し、特定の位置９内の連続したビット位置にそれらを格納することである。最初のシード値を形成する他の方法としては、不揮発性メモリ４にさらなる定数を格納し、特定の位置９内にその値をロードし、次に、連続した繰り返しが要求されたときにそのシード値を変更するためにソース８からのランダムデータを使用して、特定の回数だけアルゴリズムの繰り返しを実行することである。真ランダムシードが保持され、次に乱数発生器の使用の準備がなされるように、通信装置が初期化されたときに（例えば、パワーアップ時に）、これらの方法のいずれかが適切に採用される。
【００１８】
図２に、アルゴリズムが代表的に示されている。
【００１９】
アルゴリズムがランダムを発生させるように要求されたときに、特定の位置９に格納されたシードが得られる（図２のステップ３０）。この特定の位置から得られたシードは、変数ｘとして格納される。次に、Ｌ個の真ランダムビットがソース８から取得可能であるか否かを判断するために記憶部１０がチェックされる（ステップ３１）。
【００２０】
もし、Ｌ個の真ランダムビットが取得可能である場合には、それらのビットが変数ｚ内へロードされ、記憶部１０がリセットされる。次に、アルゴリズムのステップ３２において、これらの真ランダムビットに従って変数ｘの変更を実行する。変数ｘは、（ｘ＠ｚ）ｍｏｄ  Ｍ  に等しくなるように設定されることによって変更される。ここで、記号＠はｘのＬ個の所定ビットのそれぞれと、ｚの対応ビットとの排他的論理和の処理を示す。この排他的論理和の処理結果は、アルゴリズムの数値的境界内にそれを維持するために、Ｍを法として（ｍｏｄｕｌｏ Ｍ）約分される（ｒｅｄｕｃｅｄ）。ｘのそのビットがｚのそのビットと排他的論理和を実行される詳細は、システムの構築の時点において適切に決定され得る。
【００２１】
真ランダムビットが取得可能でない場合には、ｘは変更されない。
【００２２】
乱数発生器から出力されるランダムデータは、次に、変数ｖの状態で発生され、格納される。変数ｖは、ｘＫ１ ｍｏｄ Ｍ に等しくなるように設定される（ステップ３５）。このｖの値は、出力７において利用可能にされるランダムビットの供給として用いられる。
【００２３】
次に、アルゴリズムの次の繰り返しに用いられるシードが変数ｗとして形成され、それは、（ｘ＋１）Ｋ２ ｍｏｄ Ｍ に等しくなるように設定される（ステップ３３）。
【００２４】
最後に、ｗの値は、その前のシード値と入れ替わるために特定の位置９に格納され、次の繰り返しに用いられるｘの初期値として役立つことが可能となる（ステップ３４）。
【００２５】
シード値を真ランダムビットと排他的論理和する代わりに、他のアプローチが用いられ得る。例えば、適切なアルゴリズムにおいて、入力シードとは異なる他の値が、ランダムデータに依存して変更され得る。特に、上述のアルゴリズムにおいては、出力シード値が変更され得る。排他的論理和とは異なる他の変更としては、算術桁送り（ａｒｉｔｈｍｅｔｉｃ ｓｈｉｆｔｉｎｇ）や和算（ａｄｄｉｔｉｏｎ）が用いられ得る。
【００２６】
数値的方法が真ランダムデータを発生させるために利用可能である。具体例は、温度センサ１４からの電圧レベルやユーザがキーパッド１６へ行なうキー入力とキー入力と間の時間的間隔などのような、その装置におけるアナログセンサから得られノイズを含むアナログ値をデジタル化することを含む。好適な方法は、短期の正確さ即ち、“ジッタ（ｊｉｔｔｅｒ）“において異なるレベルを有し、好ましくは相当に異なる速度を有する一対の発振器１２、１３を使用する。
【００２７】
図１の装置は、無線通信装置である。発振器１２は、比較的速く、比較的正確であり、比較的低いジッタを有する。発振器１２は、無線周波数で転送される信号の変換のために用いられ、並びに、数１０ＭＨｚ、例えば、ＧＳＭベースシステム用の１３または２６ＭＨｚの周波数を適切に有する。発振器１３は、比較的遅く、比較的不正確であり、比較的大きなジッタの発振器であり、例えば、より速い発振器がオフに切り替えられたときの期間の間の時間的間隔において用いられ得る。発振器１３の周波数は、数ｋＨｚである。より正確な発振器１２は、水晶によって適切に計時され、一方、より不正確な発振器１３は、プロセッサ２と同じ集積回路上に形成され得る簡単な抵抗およびキャパシタに適切に基づく。従って、例えば、温度の変化のためにおよび抵抗における熱的なノイズのためのランダムなばらつきのために、発振器１２および１３の周波数の間でドリフトが生じ易い。
【００２８】
ランダムデータを発生させるために、カウンタ１６は、遅い発振器の所定の数（好ましくは、小さな数）の期間内に速い発振器の遷移数をカウントする。遅い発振器におけるジッタが発振器１２の期間と同じオーダーか、それよりも大きいので、このカウントの最下位ビットが真ランダムとなる。従って、最下位ビットのうち１つ、またはそれ以上のビットが、ランダムデータとして用いられる。例えば、速い発振器の周波数が１６ＭＨｚであり、遅い発振器の周波数が１ｋＨｚである場合、代表的な条件では、このカウントのうちの下位の１ビットまたは２ビットがランダムデータとして用いられてよい。このカウントは周期的に実行され、結果ビットは記憶部１０に格納される。従って、カウントが実行された後、新しいデータは乱数発生器にとって利用可能となる。乱数発生器の最後の要求からカウントが実行されなかったときには、新しいデータが利用可能でなく、その場合、ランダム発生器は、新しい真ランダムデータが利用可能であるか否かの処理を行なうことができるので、依然として出力を提供することができる。
【００２９】
プロセッサは、乱数の生成に専用されてもよく、または、他の機能をも実行してもよい。後者の場合には、ここで記載したプロセッサによって発生される乱数は、続いて、そのプロセッサ自体によって実行される更なる機能で処理されてもよい。
【００３０】
本発明は、現在特許請求の範囲に記載された発明に関するものか否かにかかわらず、明示的にまたは暗示的にここに記載された形態の任意の形態または組合せ、あるいは、それらの任意の総括を含む。上述の記載の観点から、当業者にとって様々な変形が本発明の範囲内において成され得ることは明らかであろう。
【図面の簡単な説明】
【図１】
ランダム発生器を含む通信装置のブロック図。
【図２】
ランダムを発生させるアルゴリズムのステップを示す図。
【図１】
2004519035.tif 000003
【図２】
2004519035.tif 000004
【国際公開パンフレット】
2004519035.tif 000005
2004519035.tif 000006
2004519035.tif 000007
2004519035.tif 000008
2004519035.tif 000009
2004519035.tif 000010
2004519035.tif 000011
2004519035.tif 000012
2004519035.tif 000013
2004519035.tif 000014
2004519035.tif 000015
2004519035.tif 000016
2004519035.tif 000017
【国際公開パンフレット（コレクトバージョン）】
2004519035.tif 000018
2004519035.tif 000019
【国際調査報告】
2004519035.tif 000020
2004519035.tif 000021
2004519035.tif 000022
2004519035.tif 000023
2004519035.tif 000024