(57)【要約】【課題】偶然性、予測不可能性、非再現性を満たす乱数を、通常に利用しているコンピュータ装置から生成することができる乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータネットワークシステム及びコンピュータを提供する。【解決手段】コンピュータネットワーク３によって相互に接続された第１の通信装置１と第２の通信装置２との間をパケットが往復するのに必要なパケット往復時間を予測し、第１の通信装置１と第２の通信装置２との間でパケットを往復させて実際のパケット往復時間を計測し、予測したパケット往復時間と、実際に計測したパケット往復時間との誤差を算出して、その誤差を用いて乱数を生成する。これにより、予測不可能性、偶然性及び非再現性を有する乱数を容易に生成することができる。【選択図】  図１
2004206025.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間を所定のデータが往復するのに必要なデータ往復時間を予測し、実際に計測したデータ往復時間との誤差を用いて乱数を生成することを特徴とする乱数生成方法。
【請求項２】
コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間をパケットが往復するのに必要なパケット往復時間を予測するパケット往復時間予測ステップと、
前記第１の通信装置と前記第２の通信装置との間で前記パケットを往復させて実際のパケット往復時間を計測するパケット往復時間計測ステップと、
前記予測したパケット往復時間と前記計測したパケット往復時間との誤差を算出する誤差算出ステップと、
前記誤差を用いて乱数を生成する乱数生成ステップと、
を有することを特徴とする乱数生成方法。
【請求項３】
前記パケット往復時間予測ステップは、
過去に計測したパケット往復時間に基づいてパケット往復時間時間を予測することを特徴とする請求項２に記載の乱数生成方法。
【請求項４】
前記乱数生成ステップは、
前記誤差を２進数に変換し、該２進数に変換した数値の最下位の１ビットを乱数に用いることを特徴とする請求項２または３に記載の乱数生成方法。
【請求項５】
コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間を所定のデータが往復するのに必要な往復時間を予測するデータ往復時間予測手順と、
前記第１の通信装置と前記第２の通信装置との間で前記データを往復させて実際のデータ往復時間を計測するデータ往復時間計測手順と、
前記予測したデータ往復時間と前記計測したデータ往復時間との誤差を算出する誤差算出手順と、
前記誤差を用いて乱数を生成する乱数生成手順と、
をコンピュータに実行させるための乱数生成用コンピュータプログラム。
【請求項６】
コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間をパケットが往復するのに必要なパケット往復時間を予測し、
前記第１の通信装置と前記第２の通信装置との間で前記パケットを往復させて実際のパケット往復時間を計測し、
前記予測したパケット往復時間と前記計測したパケット往復時間との誤差を算出し、
前記誤差を用いて乱数を生成することを特徴とするコンピュータネットワークシステム。
【請求項７】
処理装置と記憶装置を有するコンピュータにおいて、
前記処理装置から前記記憶装置にアクセスするのに必要なアクセス時間を予測するアクセス時間予測ステップと、
前記処理装置から前記記憶装置にアクセスさせて実際のアクセス時間を計測するアクセス時間計測ステップと、
前記予測したアクセス時間と前記計測したアクセス時間との誤差を算出する誤差算出ステップと、
前記誤差を用いて乱数を生成する乱数生成ステップと、
を有することを特徴とする乱数生成方法。
【請求項８】
前記アクセス時間予測ステップは、
過去に計測したアクセス時間に基づいてアクセス時間を予測することを特徴とする請求項７に記載の乱数生成方法。
【請求項９】
前記乱数生成ステップは、
前記誤差を２進数に変換し、該２進数に変換した数値の最下位の１ビットを乱数に用いることを特徴とする請求項７または８に記載の乱数生成方法。
【請求項１０】
処理装置と記憶装置を有するコンピュータに、
前記処理装置から前記記憶装置にアクセスするのに必要なアクセス時間を予測するアクセス時間予測手順と、
前記処理装置から前記記憶装置にアクセスさせて実際のアクセス時間を計測するアクセス時間計測手順と、
前記予測したアクセス時間と前記計測したアクセス時間との誤差を算出する誤差算出手順と、
前記誤差を用いて乱数を生成する乱数生成手順と、
を実行させるための乱数生成用コンピュータプログラム。
【請求項１１】
処理装置と記憶装置を有するコンピュータにおいて、
前記処理装置から前記記憶装置にアクセスするのに必要なアクセス時間を予測し、前記処理装置から前記記憶装置にアクセスさせて実際のアクセス時間を計測し、前記予測したアクセス時間と前記計測したアクセス時間との誤差を算出し、前記誤差を用いて乱数を生成することを特徴とするコンピュータ。
【請求項１２】
コンピュータが所定のプログラムを処理するのに必要な処理時間を予測する処理時間予測ステップと、
前記コンピュータに前記所定のプログラムを処理させて実際の処理時間を計測する処理時間計測ステップと、
前記予測した処理時間と前記計測した処理時間との誤差を算出する誤差算出ステップと、
前記誤差を用いて乱数を生成する乱数生成ステップと、
を有することを特徴とする乱数生成方法。
【請求項１３】
前記処理時間予測ステップは、
過去に計測した処理時間に基づいて処理時間を予測することを特徴とする請求項１２に記載の乱数生成方法。
【請求項１４】
前記乱数生成ステップは、
前記誤差を２進数に変換し、該２進数に変換した数値の最下位の１ビットを乱数に用いることを特徴とする請求項１２または１３に記載の乱数生成方法。
【請求項１５】
コンピュータが所定のプログラムを処理するのに必要な処理時間を予測する処理時間予測手順と、
前記コンピュータに前記所定のプログラムを処理させて実際の処理時間を計測する処理時間計測手順と、
前記予測した処理時間と前記計測した処理時間との誤差を算出する誤差算出手順と、
前記誤差を用いて乱数を生成する乱数生成手順と、
をコンピュータに実行させるための乱数生成用コンピュータプログラム。
【請求項１６】
所定のプログラムの実行を開始してから完了するまでの処理時間を予測し、前記所定のプログラムの実行を開始してから完了するまでの実際の処理時間を計測し、前記予測した処理時間と前記計測した処理時間との誤差を算出し、前記誤差を用いて乱数を生成することを特徴とするコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、乱数生成方法及び乱数生成用コンピュータプログラム等に関し、乱数が必要となる分野で、たとえばセッション鍵やワンタイムパスワードなどで利用するシード（種）に使用する乱数を生成する乱数生成方法及び乱数生成用コンピュータプログラム等に関する。
【０００２】
【従来技術】
従来より、有線や無線により情報通信を行う際に、内容が第三者に漏れないように情報を暗号化して送信することが行われている。暗号化するために使用される秘密鍵は、ランダムに作成し、予測されないようにする必要がある。
【０００３】
秘密鍵は、ユーザを識別するためのパスワード認証の場合には、ユーザが自ら生成するのに対し、通常の暗号化アプリケーションや、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）、ＩＰｓｅｃ（ＩＰ  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ）のような暗号化通信用プロトコルの場合には、ユーザは秘密鍵の生成に直接関与せず、ソフトウエアが自動的に生成する。
【０００４】
暗号化アプリケーションや暗号化通信用プロトコル等の場合、ソフトウエアは、シード（種）と呼ばれる入力ビットパターンに所定の演算処理を施して乱数を生成し、その乱数を基に秘密鍵を生成している。この入力ビットパターンには、サーバーのホスト名の一部や日付、時刻等が利用されており、また、乱数を求める演算には、ＳＨＡ−１、ＭＤ５、ＭＤＣ２、ＭＤ２などのアルゴリズムやＵＮＩＸ（登録商標）、Ｌｉｎｕｘで付属しているシステム関数（ｒ）などが利用されている。
【０００５】
また、タイマと乱数の一部を記憶する記憶部を備え、乱数生成時に、タイマの計数値と記憶部のデータを用いて乱数を生成する装置が提案されている（例えば、特許文献１参照）。
【０００６】
【特許文献１】
特開２０００−２４２４７０号公報
【０００７】
【発明が解決しようとする課題】
ソフトウエアが秘密鍵をある一定の規則に基づいて生成してしまうと、その規則を利用した攻撃者にその秘密鍵を推定される危険性が存在する。したがって、秘密鍵を生成するためのシードには、偶然性、予測不可能性、非再現性が必要である。
【０００８】
しかしながら、上述のように、乱数を求める演算には周知のアルゴリズムが利用されており、また、サーバーのホスト名の一部や日付、時刻を利用しているので、生成した乱数には一様性（規則性）が出現し、予測が可能で、再現性もあり、偶然性に乏しい。このため、秘密鍵が解読されるおそれがあり、安全性に問題がある。
【０００９】
また、従来より、安全にシードを作成するために、物理乱数を使用する方法が知られているが、物理乱数の生成には特別な装置が必要であり、端末ごとにそのような特別な装置を設けることは、現実的には困難である。
【００１０】
本発明は、上述の点に鑑みなされたものであり、偶然性、予測不可能性、非再現性を満たす乱数を、通常に利用しているコンピュータ装置から生成することができる乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータネットワークシステム及びコンピュータを提供することを目的とするものである。
【００１１】
【課題を解決するための手段】
上記課題を解決する請求項１に記載の発明による乱数生成方法は、コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間を所定のデータが往復するのに必要なデータ往復時間を予測し、実際に計測したデータ往復時間との誤差を用いて乱数を生成することを特徴とする。
【００１２】
請求項２に記載の発明による乱数生成方法は、コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間をパケットが往復するのに必要なパケット往復時間を予測するパケット往復時間予測ステップと、第１の通信装置と第２の通信装置との間でパケットを往復させて実際のパケット往復時間を計測するパケット往復時間計測ステップと、予測したパケット往復時間と計測したパケット往復時間との誤差を算出する誤差算出ステップと、誤差を用いて乱数を生成する乱数生成ステップと、を有することを特徴とする。
【００１３】
請求項３に記載の発明は、請求項２に記載の乱数生成方法において、パケット往復時間予測ステップが、過去に計測したパケット往復時間に基づいてパケット往復時間時間を予測することを特徴とする。
【００１４】
請求項４に記載の発明は、請求項２または３に記載の乱数生成方法において、乱数生成ステップが、誤差を２進数に変換し、その２進数に変換した数値の最下位の１ビットを乱数に用いることを特徴とする。
【００１５】
請求項５に記載の発明による乱数生成用コンピュータプログラムは、コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間を所定のデータが往復するのに必要な往復時間を予測するデータ往復時間予測手順と、第１の通信装置と第２の通信装置との間でデータを往復させて実際のデータ往復時間を計測するデータ往復時間計測手順と、予測したデータ往復時間と計測したデータ往復時間との誤差を算出する誤差算出手順と、誤差を用いて乱数を生成する乱数生成手順と、をコンピュータに実行させるプログラムであることを特徴とする。
【００１６】
請求項６に記載の発明によるコンピュータネットワークシステムは、コンピュータネットワークによって相互に接続された第１の通信装置と第２の通信装置との間をパケットが往復するのに必要なパケット往復時間を予測し、第１の通信装置と第２の通信装置との間でパケットを往復させて実際のパケット往復時間を計測し、その予測したパケット往復時間と計測したパケット往復時間との誤差を算出し、その誤差を用いて乱数を生成することを特徴とする。
【００１７】
請求湖１〜６に記載の乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータネットワークシステムによれば、第１の通信装置と第２の通信装置との間のパケット往復時間を予測し、実際に計測したパケット往復時間との誤差を乱数源とするので、コンピュータネットワークのトラフィックの不確実性を利用して、予測不可能性、偶然性及び非再現性を有する乱数を容易に生成することができる。
【００１８】
請求項７に記載の発明による乱数生成方法は、処理装置と記憶装置を有するコンピュータにおいて、処理装置から記憶装置にアクセスするのに必要なアクセス時間を予測するアクセス時間予測ステップと、処理装置から記憶装置にアクセスさせて実際のアクセス時間を計測するアクセス時間計測ステップと、その予測したアクセス時間と計測したアクセス時間との誤差を算出する誤差算出ステップと、その誤差を用いて乱数を生成する乱数生成ステップと、を有することを特徴とする。
【００１９】
請求項８に記載の発明は、請求項７に記載の乱数生成方法において、アクセス時間予測ステップが、過去に計測したアクセス時間に基づいてアクセス時間を予測することを特徴とする。
【００２０】
請求項９に記載の発明は、請求項７または８に記載の乱数生成方法において、乱数生成ステップが、誤差を２進数に変換し、その２進数に変換した数値の最下位の１ビットを乱数に用いることを特徴とする。
【００２１】
請求項１０に記載の発明による乱数生成用コンピュータプログラムは、処理装置と記憶装置を有するコンピュータに、処理装置から記憶装置にアクセスするのに必要なアクセス時間を予測するアクセス時間予測手順と、処理装置から記憶装置にアクセスさせて実際のアクセス時間を計測するアクセス時間計測手順と、予測したアクセス時間と計測したアクセス時間との誤差を算出する誤差算出手順と、誤差を用いて乱数を生成する乱数生成手順とを実行させることを特徴とする。
【００２２】
請求項１１に記載の発明によるコンピュータは、処理装置と記憶装置を有するコンピュータにおいて、処理装置から前記記憶装置にアクセスするのに必要なアクセス時間を予測し、処理装置から記憶装置にアクセスさせて実際のアクセス時間を計測し、予測したアクセス時間と計測したアクセス時間との誤差を算出し、誤差を用いて乱数を生成することを特徴とする。
【００２３】
請求湖７〜１１に記載の乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータによれば、処理装置から記憶装置へのアクセス時間を予測し、実際に計測したアクセス時間との誤差を乱数源として用いるので、アクセス時間の不規則性を利用して、予測不可能性、偶然性及び非再現性を有する乱数を１台のコンピュータ内で容易に生成することができる。
【００２４】
請求項１２に記載の発明による乱数生成方法は、コンピュータが所定のプログラムを処理するのに必要な処理時間を予測する処理時間予測ステップと、コンピュータに所定のプログラムを処理させて実際の処理時間を計測する処理時間計測ステップと、予測した処理時間と計測した処理時間との誤差を算出する誤差算出ステップと、誤差を用いて乱数を生成する乱数生成ステップと、を有することを特徴とする。
【００２５】
請求項１３に記載の発明は、請求項１２に記載の乱数生成方法において、処理時間予測ステップが、過去に計測した処理時間に基づいて処理時間を予測することを特徴とする。
【００２６】
請求項１４に記載の発明は、請求項１２または１３に記載の乱数生成方法において、乱数生成ステップが、誤差を２進数に変換し、その２進数に変換した数値の最下位の１ビットを乱数に用いることを特徴とする。
【００２７】
請求項１５に記載の発明による乱数生成用コンピュータプログラムは、コンピュータが所定のプログラムを処理するのに必要な処理時間を予測する処理時間予測手順と、コンピュータに所定のプログラムを処理させて実際の処理時間を計測する処理時間計測手順と、その予測した処理時間と計測した処理時間との誤差を算出する誤差算出手順と、その誤差を用いて乱数を生成する乱数生成手順と、をコンピュータに実行させることを特徴とする。
【００２８】
請求項１６に記載の発明によるコンピュータは、所定のプログラムの実行を開始してから完了するまでの処理時間を予測し、所定のプログラムの実行を開始してから完了するまでの実際の処理時間を計測し、その予測した処理時間と計測した処理時間との誤差を算出し、その誤差を用いて乱数を生成することを特徴とする。
【００２９】
請求湖１２〜１６に記載の乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータによれば、コンピュータによるプログラムの処理時間を予測し、実際に計測した処理時間との誤差を乱数源として用いるので、コンピュータの状況に応じた処理時間の不規則性を利用して、予測不可能性、偶然性及び非再現性を有する乱数を１台のコンピュータ内で容易に生成することができる。
【００３０】
【発明の実施の形態】
次に、本発明の実施の形態について図に基づいて説明する。
【００３１】
（第１の実施の形態）
図１は、第１の実施の形態を説明する全体構成図である。第１の通信装置１と第２の通信装置２は、ＰＣやサーバなどのコンピュータ端末であり、パケット等の所定のデータを送受信できるように、コンピュータネットワーク３によって互いに接続されている。ネットワーク３には、図示していない他の端末が複数接続され、様々なプロトコルが混在している。本実施の形態における乱数生成方法は、コンピュータネットワーク３に接続された第１の通信装置１にインストールされたコンピュータソフトウエアプログラムによって実現されるものであり、第１の通信装置１と第２の通信装置２との間で所定のデータを往復させた場合に、その往復時間を予測し、実際の往復時間との誤差を用いて乱数を生成するものである。
【００３２】
具体的には、図２のフローチャートを用いて以下に説明する。図２は、第１の実施の形態における乱数生成方法を説明するフローチャートである。
【００３３】
先ず、ステップＳ１では、所定時刻におけるパケット往復時間を予測する。予測する方法は、例えば、過去に実際に計測したパケット往復時間に基づいて予測してもよく、また、他の端末の接続状況や、ネットワーク３の利用率などの種々のパラメータに基づいて予測してもよい。
【００３４】
そして、ステップＳ２では、所定時刻における実際のパケット往復時間を計測する。計測には、例えばリクエストパケットとレスポンスパケットを使用する。リクエストパケットとは、例えば第１の通信装置から第２の通信装置に対してそのリクエストパケットを送信した場合に、そのリクエストパケットを受信した第２の通信装置２によって第１の通信装置１にレスポンスパケットを返信させる機能を有するものである。第１の通信装置１でリクエストパケットを送信した時刻と、レスポンスパケットを受信した時刻を計測することで、実際のパケット往復時間を計測することができる。
【００３５】
それから、ステップＳ３では、予測したパケット往復時間と実際に計測したパケット往復時間との誤差を算出する。この誤差の算出は、予測したパケット往復時間から実際に計測したパケット往復時間を減算し、その絶対値をとるによって求めることができる。
【００３６】
そして、ステップＳ４では、誤差を使って乱数を生成する。複数の端末が接続され、様々なプロトコルが存在するコンピュータネットワーク３では、例えば第１の通信装置１と第２の通信装置２との間で同じアプリケーションを実行したとしても、バースト的なトラフィックなどの原因によって厳密に同一時刻にパケットが送受信されることは現実的にはあり得ない。また、人為的にコンピュータネットワーク３に流れるパケット数を変化させた場合であっても、パケット往復時間は、ある程度の幅で変化するだけで、０．０１秒が１０時間になるような極端な変化は生じない。したがって、予測したパケット往復時間と実際に計測したパケット往復時間との間には、必ず所定範囲内の誤差が発生し、その誤差は、予測不可能であり、偶然性及び非再現性を有する。したがって、この誤差をそのまま乱数として使用することができ、更に実用的で性質の良い乱数を得るべく、その誤差の一部を乱数として使用しても良い。
【００３７】
上述の乱数生成方法によれば、第１の通信装置１と第２の通信装置２との間のパケット往復時間を予測し、実際に計測した時間との誤差を乱数源とするので、コンピュータネットワーク３のトラフィックの不確実性を利用して、予測不可能性、偶然性、及び非再現性を有する乱数を容易に生成することができる。
【００３８】
次に、第１の実施の形態における具体的な実施例について以下に説明する。
【００３９】
図３は、本実施例の全体構成図である。図中で符号１０は、コンピュータネットワークシステムの一例であるクライアントサーバシステムであり、クライアント１１とサーバ１２がＬＡＮ１３を介して互いに接続されており、互いにＩＰパケットを送受信可能なＩＰネットワークを構成している。このＬＡＮ１３には、図示していない複数の端末が接続され、様々なプロトコルが混在している。そして、クライアント１１には、本実施例における乱数生成用コンピュータプログラムがインストールされている。尚、上記のＩＰネットワークは、ＬＡＮ１３に限定されるものではなく、ＬＡＮ１３の代わりにＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットであってもよい。
【００４０】
図４は、乱数生成用コンピュータプログラムによる乱数の生成方法を説明するフローチャートである。
【００４１】
まず最初に、ステップＳ１１〜ステップＳ１４によって、往復伝搬遅延時間の予測値ｘ’ｉを算出するために必要な初期値の設定処理を行う。
【００４２】
ステップＳ１１では、クライアント１１とサーバ１２との間でＩＰパケットを往復させ、クライアント１１におけるＩＰパケットの送信時刻と受信時刻を計測する処理が行われる。ここで、クライアント１１は、サーバ１２に対してリクエストＩＰパケットを送信し、その送信時刻ｔ１を計測する。一方、サーバ１２は、クライアント１１からのリクエストＩＰパケットを受信すると、それに応じて直ぐにクライアント１１にレスポンスＩＰパケットを送信する。そして、クライアント１１は、サーバ１２からのレスポンスＩＰパケットを受信すると、その受信時刻ｔ２を計測する。
【００４３】
次に、ステップＳ１２では、クライアント１１とサーバ１２との間をＩＰパケットが往復するのに必要な往復伝搬遅延時間の実測値ｘを算出する処理が行われる。往復伝搬遅延時間の実測値ｘは、上述の受信時刻ｔ２から送信時刻ｔ１を減算することによって算出される（ｘ＝ｔ２−ｔ１）。本実施例では、オペレーティングシステム（ＯＳ）にＬｉｎｕｘを使用してレスポンスＩＰパケットの受信時刻の計測に、マイクロ秒の精度で時刻を計測できるｇｅｔｔｉｍｅｏｆｄａｙ関数を利用しており、秒の表現にｌｏｎｇ型の変数（ｔｖ＿ｓｅｃ）、マイクロ秒の表現に（ｔｖ＿ｕｓｅｃ）を用いている。尚、他のオペレーティングシステム（ＯＳ）を使用する場合は、マイクロ秒の精度で時刻を計測できる関数を使用する。
【００４４】
ステップＳ１３では、往復伝搬遅延時間の実測値ｘをクライアント１１内に予め設定されている往復伝搬遅延時間記憶領域１４に記憶する処理が行われる。図５は、往復伝搬遅延時間記憶領域１４を図式化したものである。往復伝搬遅延時間記憶領域１４は、往復伝搬遅延時間の実測値ｘを記憶可能な記憶枠を予め設定された個数だけ一列に並べた構造を有している（図５（ａ）参照）。そして、新たな往復伝搬遅延時間の実測値ｘが算出されると、各記憶枠に既に記憶されている実測値ｘを、全体で左側に向かって１枠ずつシフト移動させ、最左端の記憶枠内の実測値ｘを破棄し、新たに算出された実測値ｘを、最右端の記憶枠に記憶させるように構成されている（図５（ｂ）参照）。尚、往復伝搬遅延時間記憶領域１４の記憶枠の個数は、後述するＡＲモデルのモデル数と同じ個数（ｋ個）に設定されている。
【００４５】
ステップＳ１４では、往復伝搬遅延時間記憶領域１４の全ての記憶枠に往復伝搬遅延時間の実測値ｘが記憶されているか否かが判断され、記憶されていない場合（ＮＯ）には、ステップＳ１１に戻り、全ての記憶枠に記憶されている（ＹＥＳ）と判断されるまで、ステップＳ１１〜ステップＳ１４までの処理を繰り返す。これにより、往復伝搬遅延時間記憶領域１４には、所定個数分（Ｋ個分）の往復伝搬遅延時間の実測値ｘが記憶される。
【００４６】
次に、ステップＳ１５では、所定時刻ｉにおける往復伝搬遅延時間の予測値ｘ’ｉを算出する処理が行われる。往復伝搬遅延時間の予測値ｘ’ｉは、過去に計測し、往復伝搬記憶領域１４に記憶されている往復伝搬遅延時間の実測値（ｘｉ−ｋ、ｘｉ−ｋ＋１、…、ｘｉ−１）に基づいて算出される。ここでは、離散系の時系列モデルとして時系列解析の代表的なモデルである、ＡＲモデル（自己回帰モデル）を利用して、往復伝搬遅延時間の予測値ｘ’ｉを算出する。
【００４７】
ＡＲモデルは、時系列の現時点における値が、自らの過去の時点での値の線形結合によって表されるモデルである。対象とする時系列をｘｔとすると、ＡＲモデルは、次式（１）で表される。
【００４８】
【数１】
2004206025.tif 000003
式（１）で、ｘｔ−ｉは、ｘｔよりｉ個だけ過去の時刻の実測値である。また、ｅｔは、ｔの時点におけるモデル化の誤差であり、この値が０であれば誤差がないことになる。そして、ａｉ（ｉ＝１、２、…、ｋ）は、式（１）を表す自己回帰係数である。
【００４９】
図６は、１次のＡＲモデルを示すものである。ｘｔは、図に示すように１次遅れを持つフィードバック制御系の出力である。尚、図中のｚ−１は、遅れの演算子である。このＡＲモデルを推定するためには、式（１）の自己回帰係数ａｉを推定する必要がある。本実施例では、以下の方法によって式（１）の自己回帰係数ａｉを推定している。
【００５０】
まず、式（１）の両辺にｘｔ−ｌを乗算して平均をとると次式（２）の関係式が成り立つ。
【００５１】
【数２】
2004206025.tif 000004
【００５２】
ここで、ｒｌは、期待値の関数であり、ｘｔ、ｘｔ−ｌの積の平均で表される。予め（ｒ０、ｒ１、…、ｒｋ）をそれぞれ計算しておく。式（２）において、ｌ＝１、２、…、ｋ）を考えると、以下の方程式が導かれる。
【００５３】
【数３】
2004206025.tif 000005
【００５４】
尚、このｋ次の連立方程式は、Ｙｕｌｅ−Ｗａｌｋｅｒの方程式という。自己回帰係数ａｉは式（３）を解くことによってその推定値が求められる。そして、この自己回帰係数ａｉからモデルの推定および、往復伝搬遅延時間の予測値ｘ’ｉを算出することができる。
【００５５】
次に、ステップＳ１６では、所定時刻ｉにおいて、実際にクライアント１１とサーバ１２との間でＩＰパケットを往復させ、クライアント１１におけるＩＰパケットの送信時刻と受信時刻Ｔｉを計測する処理が行われる。そして、その送信時刻と受信時刻Ｔｉから、所定時刻ｉにおける往復伝搬遅延時刻の実測値ｘｉを算出する処理が行われる。
【００５６】
ステップＳ１７では、所定時刻ｉにおけるレスポンスＩＰパケットの予測受信時刻Ｔ’ｉを算出する処理が行われる。予測受信時刻Ｔ’ｉは、ステップＳ１６で計測したリクエストＩＰパケットの送信時刻に、ステップＳ１５で算出した往復伝搬遅延時間の予測値ｘ’ｉを加算することによって求めることができる（予測受信時刻Ｔ’ｉ＝リクエストＩＰパケットの送信時刻＋往復伝搬遅延時間の予測値ｘ’ｉ）。
【００５７】
ステップＳ１８では、ステップＳ１６で計測した実際の受信時刻Ｔｉと、ステップＳ１７で算出した予測受信時刻Ｔ’ｉとの誤差ｄｉを算出する処理が行われる。この誤差ｄｉは、予測受信時刻Ｔ’ｉから受信時刻Ｔｉを減算して、その絶対値をとることによって、求められる（ｄｉ＝｜Ｔ’ｉ−Ｔｉ｜）。
【００５８】
ステップＳ１９では、乱数として実用的で性質が良いものを得るべく、誤差ｄｉの一部を乱数として取り出す処理が行われる。具体的には、まず、１０進数で得られた誤差ｄｉを２進数に変換し、その２進数に変換した数値の最下位の１ビットを取得して乱数に用いる。例えば、誤差ｄｉが９マイクロ秒であった場合（０．０００９秒）、この「９」（１０進表記）を２進変換すると「１００１」となる。この「１００１」の最下位の１ビット、すなわち「１」を取得して乱数に用いる。尚、下位１ビットを乱数に用いた理由については後述する。
【００５９】
ステップＳ２０では、ステップＳ１６で算出した所定時刻ｉにおける往復伝搬遅延時間の実測値ｘｉを往復伝搬遅延時間記憶領域１４に記憶させることによって、往復伝搬遅延時間記憶領域１４の記憶内容を更新する処理が行われる。そして、ステップＳ２０での処理が終了すると再びステップＳ１５に戻り、ステップＳ１５からステップＳ２０までの処理を繰り返し行う。これにより、乱数列を得ることができる。
【００６０】
本実施例の場合、誤差ｄｉの下位何ビットを利用するのが最適化なのかについて実験を行った。そして、誤差ｄｉの最下位１ビットのみを利用した場合に、特に性質が良く実用的な乱数が得られるとの結果を得た。以下に、その実験内容及び実験結果について説明する。
【００６１】
実験に使用したコンピュータは、ＣＰＵ：Ｐｅｎｔｉｕｍ（登録商標）３（１ＧＨｚ）、メモリ：２５６ＭＢ、ＯＳ：ＲｅｄＨａｔ  Ｌｉｎｕｘ  ７．２、であり、レスポンスＩＰパケットの受信時刻の測定には、ｇｅｔｔｉｍｅｏｆｄａｙ関数を利用した。実験は、ＬＡＮ上の２台のコンピュータ間で行い、クライアント１１とサーバ１２との間のパケット往復時間を往復伝搬遅延時間ｘｔとして測定し、予測受信時刻Ｔ’ｉと実際の受信時刻Ｔｉとの差の絶対値をとった値ｄｉを誤差とした場合のネットワーク環境について行った。
【００６２】
まず、取得した誤差ｄｉを２進表記した場合に、下位何ビットまでが乱数として使用できるかを考察すべく、取得した誤差の有効桁数を調べた。尚、誤差の有効桁数とは、取得した誤差を２進表記した場合の系列長さをいう。例えば、得られた誤差が９マイクロ秒であった場合（０．０００９秒）、この「９」（１０進表記）を２進変換すると「１００１」となり、この数値の有効桁数は４桁である。
【００６３】
図７は、上述の乱数生成方法によって１０６（１００００００）回の誤差を取得して２進数の有効桁数の分布を調べた表である。このとき使用したＡＲモデルの次数は１０であり、実験は、１０回行い、その平均を示している。表１の桁数は、２進数に変換した場合の有効桁数であり、個数は、１００００００回の中で当該桁数に当てはまった回数である。この表から、桁数が１〜８ビットまでの誤差が全体の約９０％を占めることがわかる。したがって、誤差ｄｉの有効桁数は、８ビット以下であると考えられる。
【００６４】
そこで次に、誤差の下位１ビットのみを乱数として利用した場合と、下位２ビットまでを乱数として利用した場合について、それぞれＮＩＳＴとＤＩＥＨＡＲＤという２種類の検定実験を行った。但し、誤差の下位２ビットを利用する方法では、誤差の有効桁数が２（１０進数で２か３）の場合には下位から２ビット目のビットが１となってしまうために、有効桁数が２の場合には誤差の下位１ビットのみを使用し下位２ビット目は使用しないこととした。
【００６５】
ＮＩＳＴとは、物理乱数及び疑似乱数生成器からの出力データについて乱数性のテストを行うツールであり、１６項目からのテストからなる統計のパッケージである。ＮＩＳＴについては、ｈｔｔｐ：／／ｃｒｓｃ．ｎｉｓｔ．ｇｏｖ／ｒｕｇ．に詳しく説明されている。尚、図８は、本検定に利用したＮＩＳＴのパラメータを示す表である。各種テストを行うことによって出力されたｐ−ｖａｌｕｅが０＜ｐ−ｖａｌｕｅ＜１を満たす場合に、そのテスト項目をパスしたとみなしている。
【００６６】
一方、ＤＩＥＨＡＲＤは、フロリダ州立大学で開発された乱数検定用プログラムであり、１５項目のテストを行う。この１５項目のテストを行うことによって出力されたｐ−ｖａｌｕｅが「０＜ｐ−ｖａｌｕｅ＜１」を満たし、ＫＳＴＥＳＴが「０＜ＫＳＴＥＳＴ＜１」を満たす場合に、そのテスト項目をパスしたとみなしている。ＤＩＥＨＡＲＤについては、ｈｔｔｐ：／／ｓｔａｔ．ｆｓｕ．ｅｄｕ／ｇｅｏ／ｄｉｅｈａｒｄ．ｈｔｍｌに詳しく説明されている。
【００６７】
誤差の下位１ビットのみを乱数として利用した場合でＮＩＳＴの検定を実験１、ＤＩＥＨＡＲＤの検定を実験３、誤差の下位２ビットまでを乱数として利用した場合でＮＩＳＴの検定を実験２、ＤＩＥＨＡＲＤの検定を実験４として実験を行ったところ、図９に示す実験結果が得られた。
【００６８】
これによれば、下位１ビットのみから得られた乱数列においては、全ての検定項目に合格することができたが、下位２ビットまでを乱数とした場合、ＮＩＳＴ、ＤＩＥＨＡＲＤともにいくつかの検定項目が不合格となった。図１０は、検定に不合格となった項目を示す表である。この実験結果から、特に、誤差の最下位１ビットのみを利用した場合に、性質が良く実用的な乱数が得られることがわかる。
【００６９】
上述の実施例では、ＡＲモデルのモデル数、すなわち、往復伝搬遅延時刻記憶領域１４の記憶枠数を１０に設定した場合を例に説明したが、この記憶枠数をコンピュータの特性に応じて、ある範囲で増加させることによって、乱数の性質をさらに向上させることができ、より真性乱数に近い乱数を生成することができる。
【００７０】
また、実施例では、予測受信時刻Ｔ’ｉと実際の受信時刻Ｔｉとから誤差ｄｉを算出する場合を例に説明したが、往復伝搬遅延時間の予測値ｘ’ｉと実測値ｘｉとから算出しても良い。
【００７１】
更に、実施例では、クライアントサーバシステムの場合を例に説明したが、クライアント１１とクライアント１１、サーバ１２とサーバ１２など、コンピュータとコンピュータをネットワークで接続したものであればよい。また、ネットワーク環境もＩＰネットワーク１３に限定されるものではなく、他のプロトコルを利用したネットワークであっても良い。
【００７２】
また、実施例では、クライアント１１にインストールされるコンピュータソフトウエアプログラムの場合を例に説明したが、その一部或いは前部をハードウエアによって構成し、乱数生成装置としても良い。
【００７３】
（第２の実施の形態）
図１１は、第２の実施の形態を説明する図であり、コンピュータの構成を示す図である。コンピュータ２０は、入力装置２１と、出力装置２２と、主記憶装置２３と補助記憶装置２４を備えた記憶装置２５と、演算装置２６と制御装置２７を備えた処理装置２８の４つの構成要素によって構成されている。
【００７４】
本実施の形態における乱数生成方法は、１台のコンピュータ２０内で、そのコンピュータ２０にインストールされたコンピュータソフトウエアプログラムによって実現されるものであり、処理装置２８から記憶装置２５に対して読み込みや書き込みなどのアクセスを行い、そのアクセス時間を予測し、実際のアクセス時間との誤差を用いて乱数を生成するものである。
【００７５】
具体的には、図１２のフローチャートを用いて以下に説明する。図１２は、第２の実施の形態における乱数生成方法を説明するフローチャートである。先ず、ステップＳ２１では、処理装置から記憶装置に対して、Ｒｅａｄ（読み込み）、Ｗｒｉｔｅ（書き込み）、Ｕｐｄａｔｅ（更新）、Ｄｅｌｅｔｅ（削除）などのアクセスを行った場合にそのアクセス開始からアクセス終了までのアクセス時間を予測する。このアクセス時間を予測する方法は、例えば、過去に実際に計測したデータに基づいて予測してもよく、また、記憶装置の容量などの種々のパラメータに基づいて予測してもよい。
【００７６】
そして、ステップＳ２２では、実際に処理装置２８から記憶装置２５にアクセスを行い、そのアクセス時間を計測する。実際のアクセス時間は、処理装置２８が記憶装置２５に対してアクセスを開始した時点と、記憶装置２５へのアクセスを完了した時点とを計測することで、求めることができる。
【００７７】
それから、ステップＳ２３では、予測したアクセス時間と実際に計測したアクセス時間との誤差を算出する。この誤差の算出は、予測したアクセス時間から計測したアクセス時間を減算し、その絶対値をとることによって求めることができる。
【００７８】
そして、ステップＳ２４では、その誤差を使って乱数を生成する。コンピュータは、入力装置２１、出力装置２２、処理装置２８、記憶装置２５など複数の装置が接続され、これらの装置間で種々の信号が送受信されており、また、処理装置２８では種々の処理が実行されている。したがって、例えば処理装置２８から記憶装置２５に同じアクセスを行った場合でも、そのタイミングによってズレを生じ、同一のアクセス時間となることは現実的にはあり得ない。また、人為的に種々の処理を実行させた場合であっても、そのアクセスを実行するプログラムから見ると、記憶装置２５に対する１回の書き込み時間や読み出し時間は、ある程度の幅で変化するだけで、０．０１秒が１０時間になるような極端な変化は生じない。
【００７９】
したがって、予測したアクセス時間と計測したアクセス時間との間には、必ず所定範囲内の誤差が発生し、その誤差は、予測不可能であり、偶然性及び非再現性を有する。したがって、この誤差をそのまま乱数として使用することができ、更に実用的で性質の良い乱数を得るべく、その誤差の一部を乱数として使用してもよい。
【００８０】
上述の乱数生成方法によれば、処理装置２８から記憶装置２５に対するアクセス時間を予測し、実際に処理装置２８から記憶装置２５にアクセスを行ってそのアクセス時間を計測し、予測したアクセス時間と計測したアクセス時間との誤差を乱数源とするので、コンピュータ内部におけるアクセス時間の不規則性を利用して、予測不可能性、偶然性、及び非再現性を有する乱数を容易に生成することができる。
【００８１】
次に、第２の実施の形態における具体的な実施例について以下に説明する。
【００８２】
図１３は、本実施例におけるコンピュータの構成を説明する図である。本実施例におけるコンピュータ３０は、コンピュータ本体３１、キーボード及びマウス（入力装置）３２、ディスプレイ（出力装置）３３を備えており、コンピュータ本体内３１には、制御装置と演算装置を備えた中央演算処理装置を構成するＣＰＵ３４と、主記憶装置を構成するＲＯＭやＲＡＭ等のメモリ３５と、補助記憶装置を構成するハードディスク３６が設けられている。そして、本実施例における乱数生成用コンピュータプログラムがインストールされている。尚、本実施例では、ＣＰＵ３４とハードディスク３６が共通のコンピュータ本体３１内に組み込まれた場合を例に説明するが、ハードディスク３６をコンピュータ本体３１の外に置いた、いわゆる外付けの場合であってもよい。
【００８３】
図１４は、乱数生成用コンピュータプログラムによる乱数の生成方法を説明するフローチャートである。まず最初に、ステップＳ３１〜ステップＳ３４によって、アクセス時間の予測値ｙ’ｉを算出するために必要な初期値の設定処理を行う。
【００８４】
ステップＳ３１では、ＣＰＵ３４がハードディスク３６にアクセスを開始したアクセス開始時刻ｔ１と、ＣＰＵ３４がハードディスク３６へのアクセスを終了したアクセス終了時刻ｔ２を計測する処理が行われる。
【００８５】
ここで、ＣＰＵ３４は、ハードディスク３６に対して所定の命令やデータの読み込み等を要求する信号を送信し、その信号を送信した時刻をアクセス開始時刻ｔ１として計測する。ハードディスク３６は、ＣＰＵ３４からのアクセス要求を受けると、該当する命令やデータを読み出して、直ぐにＣＰＵ３４に送信する。ＣＰＵ３４は、ハードディスク３６から送られてきた命令やデータを受信し、その受信を完了した時刻をアクセス終了時刻ｔ２として計測する。
【００８６】
ステップＳ３２では、アクセス時間の実測値ｙを算出する処理が行われる。アクセス時間の実測値ｙは、上述のアクセス終了時刻ｔ２からアクセス開始時刻ｔ１を減算することによって算出される（ｙ＝ｔ２−ｔ１）。
【００８７】
ステップＳ３３では、アクセス時間の実測値ｙをメモリ３５内に予め設定されているアクセス時間記憶領域に記憶する処理が行われる。アクセス時間記憶領域の構造については、第１の実施の形態における往復伝搬遅延時間記憶領域１４と同様であるので、その詳細な説明を省略する。
【００８８】
ステップＳ３４では、アクセス時間記憶領域の全ての記憶枠にアクセス時間の実測値ｙが記憶されているか否かが判断され、記憶されていない場合（ＮＯ）には、ステップＳ３１に戻り、全ての記憶枠に記憶されている（ＹＥＳ）と判断されるまで、ステップＳ３１〜ステップＳ３４までの処理を繰り返す。これにより、アクセス時間記憶領域には、所定個数分（Ｋ個分）のアクセス時間の実測値ｙが記憶される。
【００８９】
次に、ステップＳ３５では、所定時刻ｉにおけるアクセス時間の予測値ｙ’ｉを算出する処理が行われる。アクセス時間の予測値ｙ’ｉは、メモリ３５のアクセス時間記憶領域に記憶されたアクセス時間の実測値（ｙｉ−ｋ、ｙｉ−ｋ＋１、…、ｙｉ−１）に基づき、ＡＲモデルを利用して算出される。尚、ＡＲモデルについては、第１の実施の形態と同様であるので、その詳細な説明を省略する。
【００９０】
ステップＳ３６では、所定時刻ｉにおいて、実際にＣＰＵ３４からハードディスク３６にアクセスを行い、そのアクセス開始時刻と、アクセス終了時刻Ｔｉを計測する処理が行われる。そして、そのアクセス開始時刻とアクセス終了時刻Ｔｉから、所定時刻ｉにおけるアクセス時間の実測値ｙｉを算出する。
【００９１】
ステップＳ３７では、アクセス終了予測時刻Ｔ’ｉを算出する処理が行われる。アクセス終了予測時刻Ｔ’ｉは、ステップＳ３６で計測したアクセス開始時刻に、ステップＳ３５で算出したアクセス時間の予測値ｙ’ｉを加算することによって求めることができる（アクセス終了予測時刻Ｔ’ｉ＝アクセス要求信号の送信開始時刻＋アクセス時間の予測値ｙ’ｉ）。
【００９２】
ステップＳ３８では、ステップＳ３６で計測したアクセス終了時刻Ｔｉと、ステップＳ３７で算出したアクセス終了予測時刻Ｔ’ｉとの誤差ｄｉを算出する処理が行われる。この誤差ｄｉは、アクセス終了予測時刻Ｔ’ｉからアクセス終了時刻Ｔｉを減算して、その絶対値をとることによって求められる（ｄｉ＝｜Ｔ’ｉ−Ｔｉ｜）。
【００９３】
ステップＳ３９では、乱数として実用的で性質が良いものを得るべく、誤差ｄｉの一部を乱数として取り出す処理が行われる。具体的には、まず、１０進数で得られた誤差ｄｉを２進数に変換し、その２進数に変換した数値の最下位の１ビットを取得して乱数に用いる。例えば、誤差ｄｉが９マイクロ秒であった場合（０．０００９秒）、この「９」（１０進表記）を２進変換すると「１００１」となる。この「１００１」の最下位の１ビット、すなわち「１」を取得して乱数に用いる。
【００９４】
ステップＳ４０では、ステップＳ３６で算出した所定時刻ｉにおけるアクセス時間の実測値ｙｉをアクセス時間記憶領域に記憶させることによって、アクセス時間記憶領域の記憶内容を更新する処理が行われる。そして、ステップＳ４０での処理が終了すると再びステップＳ３５に戻り、ステップＳ３５からステップＳ４０までの処理を繰り返し行う。これにより、乱数列を得ることができる。
【００９５】
上述の実施例では、アクセス終了予測時刻Ｔ’ｉとアクセス終了時刻Ｔｉとから誤差ｄｉを算出する場合を例に説明したが、アクセス時間の予測値ｙ’ｉと実測値ｙｉとから算出しても良い。また、実施例では、記憶手段の例としてハードディスク３６の場合を例に説明したが、他の記憶手段であってもよい。
【００９６】
（第３の実施の形態）
本実施の形態における乱数生成方法は、コンピュータに所定のプログラム命令を実行させ、コンピュータがそのプログラム命令の実行を開始してから終了するまでの命令処理時間を予測し、実際の命令処理時間との誤差を用いて乱数を生成するものである。
【００９７】
具体的には、図１５のフローチャートを用いて以下に説明する。図１５は、第３の実施の形態における乱数生成方法を説明するフローチャートである。先ず、ステップＳ４１では、所定のプログラム命令をコンピュータに実行させた場合に、そのプログラム命令の実行を開始してから終了するまでの処理時間を予測する。予測する方法は、例えば、過去に実際に計測した処理時間に基づいて予測してもよく、また、実行するプログラム命令の種類などの種々のパラメータに基づいて予測してもよい。また、所定のプログラム命令は、例えばコンピュータに１０００までの中での素数を求めさせる素数計算処理命令などが挙げられる。
【００９８】
そして、ステップＳ４２では、実際にそのプログラム命令をコンピュータに実行させ、命令処理時間を計測する。実際の命令処理時間は、コンピュータがそのプログラム命令の処理を開始した時刻と、処理を終了した時刻とを計測することで求めることができる。
【００９９】
それから、ステップＳ４３では、予測した命令処理時間と実際に計測した命令処理時間との誤差を算出する。この誤差の算出は、予測した命令処理時間から実際に計測した命令処理時間を減算し、その絶対値をとることによって求めることができる。
【０１００】
そして、ステップＳ４４では、その誤差を使って乱数を生成する。コンピュータがプログラム命令を実行する場合には、複数の機械命令や主記憶装置を使用するため、コンピュータの状況によって、単位時間当たりにコンピュータが処理できる仕事量（スループット）が異なる。したがって、所定のプログラム命令を実行した場合でも、そのタイミングによって処理離間が異なり、同一の時間となることは現実的にはあり得ない。また、人為的にコンピュータの状況を変化させた場合であっても、そのプログラム命令を実行するプログラムから見ると、ある程度の幅で変化するだけで、０．０１秒が１０時間になるような極端な変化は生じない。
【０１０１】
したがって、予測した命令処理時間と実際に計測した命令処理時間との間には、必ず所定範囲内の誤差が発生し、その誤差は、予測不可能であり、偶然性及び非再現性を有する。したがって、この誤差をそのまま乱数として使用することができ、また、更に実用的で性質の良い乱数を得るべく、乱数源として、その誤差の一部を乱数として使用してもよい。
【０１０２】
上述の乱数生成方法によれば、コンピュータによる所定のプログラム命令の処理時間を予測し、実際に計測した命令処理時間との誤差を乱数源とするので、コンピュータの状況に応じた命令処理時間の不規則性を利用して、予測不可能性、偶然性、及び非再現性を有する乱数を容易に生成することができる。
【０１０３】
次に、第３の実施の形態における具体的な実施例について以下に説明する。
【０１０４】
本実施例における乱数生成用コンピュータプログラムは、実行可能な状態でコンピュータにインストールされている。尚、コンピュータの構成については、第２の実施の形態における実施例の場合と同様であるので、その詳細な説明を省略する。
【０１０５】
図１６は、乱数生成用コンピュータプログラムによる乱数の生成方法を説明するフローチャートである。まず最初に、ステップＳ５１〜ステップＳ５４によって、命令処理時間の予測値ｚ’ｉを算出するために必要な初期値の設定処理を行う。
【０１０６】
ステップＳ５１では、プログラム命令の単位であるソフトウエア命令の処理をコンピュータが開始した命令処理開始時刻ｔ１と、コンピュータがソフトウエア命令の処理を終了した命令処理終了時刻ｔ２の計測が行われる。ソフトウエア命令の処理は、本実施例では、コンピュータに１０００までの中での素数を求めさせる素数計算処理が設定されている。
【０１０７】
ステップＳ５２では、命令処理時間の実測値ｚを算出する。命令処理時間の実測値ｚは、上述の命令処理終了時刻ｔ２から命令処理開始時刻ｔ１を減算することによって算出される（ｚ＝ｔ２−ｔ１）。
【０１０８】
ステップＳ５３では、命令処理時間の実測値ｚをメモリ内に予め設定されている命令処理時間記憶領域に記憶する処理が行われる。命令処理時間記憶領域の構造については、第１の実施の形態における往復伝搬遅延時間記憶領域１４と同様であるので、その詳細な説明を省略する。
【０１０９】
ステップＳ５４では、命令処理時間記憶領域の全ての記憶枠に命令処理時間の実測値ｚが記憶されているか否かが判断され、記憶されていない場合（ＮＯ）には、ステップＳ５１に戻り、全ての記憶枠に記憶されている（ＹＥＳ）と判断されるまで、ステップＳ５１〜ステップＳ５４までの処理を繰り返す。これにより、処理時間記憶領域には、所定個数分（Ｋ個分）の命令処理時間の実測値ｚが記憶される。
【０１１０】
次に、ステップＳ５５では、所定時刻ｉにおける命令処理時間の予測値ｚ’ｉを算出する処理が行われる。命令処理時間の予測値ｚ’ｉは、命令処理時間記憶領域に記憶された命令処理時間の実測値（ｚｉ−ｋ、ｚｉ−ｋ＋１、…、ｚｉ−１）に基づき、ＡＲモデルを利用して算出される。尚、ＡＲモデルについては、第１の実施の形態と同様であるので、その詳細な説明を省略する。
【０１１１】
ステップＳ５６では、所定時刻ｉにおいて、実際にソフトウエア命令をコンピュータに処理させ、コンピュータがその処理を開始した命令処理開始時刻と、処理を終了した命令処理終了時刻Ｔｉを計測する処理が行われる。そして、その命令処理開始時刻と命令処理終了時刻Ｔｉから、所定時刻ｉにおける命令処理時間の実測値ｚｉを算出する。
【０１１２】
ステップＳ５７では、命令処理終了予測時刻Ｔ’ｉを算出する処理が行われる。命令処理終了予測時刻Ｔ’ｉは、ステップＳ５６で計測した命令処理開始時刻に、ステップＳ５５で算出した命令処理時間の予測値ｚ’ｉを加算することによって求めることができる（命令処理終了時刻Ｔ’ｉ＝命令処理開始時刻＋命令処理時間の予測値ｚ’ｉ）。
【０１１３】
ステップＳ５８では、ステップＳ５６で計測した命令処理終了時刻Ｔｉと、ステップＳ５７で算出した命令処理終了予測時刻Ｔ’ｉとの誤差ｄｉを算出する処理が行われる。この誤差ｄｉは、命令処理終了予測時刻Ｔ’ｉから命令処理終了時刻Ｔｉを減算して、その絶対値をとることによって、求められる（ｄｉ＝｜Ｔ’ｉ−Ｔｉ｜）。
【０１１４】
ステップＳ５９では、乱数として実用的で性質が良いものを得るべく、誤差ｄｉを乱数源として用い、誤差ｄｉの一部を乱数として取り出す処理が行われる。具体的には、まず、１０進数で得られた誤差ｄｉを２進数に変換し、その２進数に変換した数値の最下位の１ビットを取得して乱数に用いる。例えば、誤差ｄｉが９マイクロ秒であった場合（０．０００９秒）、この「９」（１０進表記）を２進変換すると「１００１」となる。この「１００１」の最下位の１ビット、すなわち「１」を取得して乱数に用いる。
【０１１５】
ステップＳ６０では、ステップＳ５６で算出した所定時刻ｉにおける命令処理時間の実測値ｚｉを命令処理時間記憶領域に記憶させることによって、命令処理時間記憶領域の記憶内容を更新する処理が行われる。そして、ステップＳ６０での処理が終了すると再びステップＳ５５に戻り、ステップＳ５５からステップＳ６０までの処理を繰り返し行う。これにより、乱数列を得ることができる。
【０１１６】
上述の実施例では、命令処理終了予測時刻Ｔ’ｉと命令処理終了時刻Ｔｉとから誤差ｄｉを算出する場合を例に説明したが、命令処理時間の予測値ｚ’ｉと実測値ｚｉとから算出しても良い。
【０１１７】
尚、本発明は、上述の実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々の変更が可能である。
【０１１８】
【発明の効果】
以上説明したように、本発明による乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータネットワークシステムによれば、第１の通信装置と第２の通信装置との間のパケット往復時間を予測し、実際に計測したパケット往復時間との誤差を乱数源とするので、コンピュータネットワークのトラフィックの不確実性を利用して、予測不可能性、偶然性及び非再現性を有する乱数を容易に生成することができる。
【０１１９】
また、他の発明による乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータによれば、処理装置から記憶装置へのアクセス時間を予測し、実際に計測したアクセス時間との誤差を乱数源として用いるので、アクセス時間の不規則性を利用して、予測不可能性、偶然性及び非再現性を有する乱数を１台のコンピュータ内で容易に生成することができる。
【０１２０】
更に他の発明による乱数生成方法及び乱数生成用コンピュータプログラム及びコンピュータによれば、コンピュータによるプログラム命令の命令処理時間を予測し、実際に計測した命令処理時間との誤差を乱数源として用いるので、コンピュータの状況に応じた命令処理時間の不規則性を利用して、予測不可能性、偶然性及び非再現性を有する乱数を１台のコンピュータ内で容易に生成することができる。
【図面の簡単な説明】
【図１】本実施の形態を説明する全体構成図である。
【図２】本実施の形態における乱数生成方法を説明するフローチャートである。
【図３】本実施例の全体構成図である。
【図４】乱数生成用コンピュータプログラムによる乱数の生成方法を説明するフローチャートである。
【図５】クライアント内に設定される往復伝搬遅延時間記憶領域を図式化したものである。
【図６】１次のＡＲモデルを示すものである。
【図７】誤差の２進数の有効桁数の分布を調べた表である。
【図８】本検定に利用したＮＩＳＴのパラメータを示す表である。
【図９】実験結果を説明する表である。
【図１０】不合格となった項目を示す表である。
【図１１】第２の実施の形態を説明する図である。
【図１２】第２の実施の形態における乱数生成方法を説明するフローチャートである。
【図１３】本実施例におけるコンピュータの構成を説明する図である。
【図１４】乱数生成用コンピュータプログラムによる乱数の生成方法を説明するフローチャートである。
【図１５】第３の実施の形態における乱数生成方法を説明するフローチャートである。
【図１６】乱数生成用コンピュータプログラムによる乱数の生成方法を説明するフローチャートである。
【符号の説明】
１  第１の通信装置
２  第２の通信装置
３  コンピュータネットワーク
１０  クライアントサーバシステム
１１  クライアント
１２  サーバ
１３  ＬＡＮ
１４  往復伝搬遅延時間記憶領域
２０  コンピュータ
２１  入力装置
２２  出力装置
２３  主記憶装置
２４  補助記憶装置
２５  記憶装置
２６  演算装置
２７  制御装置
２８  処理装置
３０  コンピュータ
３１  コンピュータ本体
３２  キーボード＆マウス（入力装置）
３３  ディスプレイ（出力装置）
３４  ＣＰＵ（中央演算処理装置）
３５  メモリ（主記憶装置）
３６  ハードディスク
【図１】
2004206025.tif 000006
【図２】
2004206025.tif 000007
【図３】
2004206025.tif 000008
【図４】
2004206025.tif 000009
【図５】
2004206025.tif 000010
【図６】
2004206025.tif 000011
【図７】
2004206025.tif 000012
【図８】
2004206025.tif 000013
【図９】
2004206025.tif 000014
【図１０】
2004206025.tif 000015
【図１１】
2004206025.tif 000016
【図１２】
2004206025.tif 000017
【図１３】
2004206025.tif 000018
【図１４】
2004206025.tif 000019
【図１５】
2004206025.tif 000020
【図１６】
2004206025.tif 000021