(57)【要約】【課題】  通信装置にて、従来よりも理想的な乱数を生成可能な技術を提供すること。【解決手段】  複合機は、通信インタフェースが受信したパケットが自装置宛のパケットであるか否かに拘らず、受信パケットの数ｎをカウントし（Ｓ１３０）、受信パケット数が閾値に達したときのシステムクロックの最小位ビットの値を、シードを構成する乱数に設定する（Ｓ１６０）。そして、シードのデータ長に対応する量、乱数を生成した場合には、生成した乱数列をシードとして設定する（Ｓ１７５）。また、単位時間当たりの受信パケット数を計測し（Ｓ２１０）、この計測結果に基づき閾値を設定することにより（Ｓ２３０）、乱数の生成間隔が、予め設定された時間間隔となるようにする。これにより、複合機は、パケットの受信数及び受信時刻に基づき、定期的に乱数を生成して、これらの乱数列からなるシードを生成する。【選択図】  図３
2008058514.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
前記ネットワーク上の他装置から送信されたデータを、前記ネットワークを介して受信する受信手段と、
前記受信手段によるデータの受信時刻を検出する受信時刻検出手段と、
前記受信手段が受信したデータの個数を計測する受信データ数計測手段と、
前記受信データ数計測手段の計測結果に基づき、乱数の生成に用いる前記受信手段の受信データを決定する決定手段と、
前記決定手段により決定された受信データについて、前記受信時刻検出手段が検出した受信時刻に対応する値を、乱数として出力する乱数出力手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記決定手段は、前記受信手段が受信したデータの個数が、予め設定された閾値に到達したときの前記受信手段の受信データを、前記乱数の生成に用いる受信データに決定する構成にされていることを特徴とする請求項１記載の通信装置。
【請求項３】
前記閾値として、前記ネットワークのトラフィックに応じた値を設定する閾値設定手段
を備えることを特徴とする請求項２記載の通信装置。
【請求項４】
乱数の生成間隔として、前記受信時刻検出手段が検出可能な受信時刻の最小単位よりも大きい値を、記憶する記憶手段と、
現在設定されている前記閾値、に対応する個数のデータの受信に要する時間を計測する受信時間計測手段と、
前記受信時間計測手段が計測した前記データの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出手段と、
前記単位時間個数算出手段により算出された前記単位時間当たりに受信可能なデータの個数から、前記記憶手段が記憶する前記生成間隔に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出手段と、
を備え、
前記閾値設定手段は、前記受信可能個数算出手段により算出された個数を、新たな閾値として設定することを特徴とする請求項３記載の通信装置。
【請求項５】
前記受信手段は、前記ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされ、
前記受信時刻検出手段は、自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの受信時刻を検出する構成にされ、
前記受信データ数計測手段は、自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの個数を計測する構成にされていることを特徴とする請求項１〜請求項４のいずれかに記載の通信装置。
【請求項６】
ネットワークに接続され、前記ネットワーク上の他装置から送信されたデータを、前記ネットワークを介して受信する受信手段を備えた通信装置のコンピュータに、
前記受信手段が受信したデータの受信時刻を検出する受信時刻検出機能と、
前記受信手段が受信したデータの個数を計測する受信データ数計測機能と、
前記受信データ数計測機能により得られた計測結果に基づき、乱数の生成に用いる前記受信手段の受信データを決定する決定機能と、
前記決定機能により決定された受信データについて、前記受信時刻検出機能により検出された受信時刻に対応する値を、乱数として出力する乱数出力機能と、
を実現させるためのプログラム。
【請求項７】
前記受信手段が受信したデータの個数が、予め設定された閾値に到達したときの前記受信手段の受信データを、前記乱数の生成に用いる受信データに決定する機能
を、前記決定機能としてコンピュータに実現させるための請求項６記載のプログラム。
【請求項８】
前記閾値として、前記ネットワークのトラフィックに応じた値を設定する機能
を、更にコンピュータに実現させるための請求項７記載のプログラム。
【請求項９】
コンピュータに、
現在設定されている前記閾値、に対応する個数のデータの受信に要する時間を計測する受信時間計測機能と、
前記受信時間計測機能により計測された前記データの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出機能と、
前記単位時間個数算出機能により算出された前記単位時間当たりに受信可能なデータの個数から、前記受信時刻検出機能により検出可能な受信時刻の最小単位よりも大きい値として予め定められた乱数の生成間隔、に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出機能と、
を実現させ、更に、
前記閾値を、前記受信可能個数算出機能にて算出された個数に、更新する機能
を、前記閾値設定機能としてコンピュータに実現させるための請求項８記載のプログラム。
【請求項１０】
前記受信手段は、前記ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされ、
当該プログラムは、
自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの受信時刻を検出する機能
を、前記受信時刻検出機能としてコンピュータに実現させ、
自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの個数を計測する機能
を、前記受信データ数計測機能としてコンピュータに実現させるためのプログラム
であることを特徴とする請求項６〜請求項９のいずれかに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク接続される通信装置であって、乱数生成機能を有する通信装置に関する。
【背景技術】
【０００２】
従来より、通信装置としては、乱数を用いて、暗号通信や利用者認証を行うものが知られている。例えば、ＳＳＬ通信等の暗号通信においては、セッションの確立時に、サーバ装置及びクライアント装置間で、夫々が生成した乱数データを交換し、これらの乱数データに基づいて、暗号鍵（セッションキー）を生成し、暗号通信を実現する。
【０００３】
また、乱数の生成方法としては、乱数の種となるビットパターン（所謂シード）に、所定の演算処理を施すことで、擬似的に、乱数を生成する方法が知られており、上記の暗号通信等では、上記ビットパターンにより、乱数データを生成し、最終的に暗号鍵を生成する手法が広く採用されている。
【０００４】
具体的に、上記手法にて乱数を生成する場合には、所定のアルゴリズムにより、入力パラメータに演算処理を施して、乱数を生成するプログラムに、上記ビットパターンを入力パラメータとして与えて、乱数を生成する。
【０００５】
尚、上述したシードと呼ばれるビットパターンは、乱数を生成する元となる基本情報であるため、上記乱数を生成するプログラムに、一定のビットパターンを与えた場合には、特定のパターンで、乱数が生成されることになる。
【０００６】
従って、上記の手法にて乱数を生成する場合には、プログラムに、ランダムなビットパターンを与えることで、より理想的な乱数が生成されるようにする。この点に関し、従来技術としては、第一の通信装置と第二の通信装置との間でパケットを往復させ、その往復時間の揺らぎを利用して、ランダムなビットパターンを生成する技術が知られている（例えば、特許文献１参照）。
【特許文献１】特開２００４−２０６０２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の乱数生成方法では、次のような問題があった。例えば、特許文献１記載のように、パケットの往復時間に基づいて、乱数（シード）を生成する方法では、通信経路の品質を観測することで、パケット往復時間を予測することができるため、この方法にて生成した乱数を、シードとして用いて、暗号通信等を実現する場合には、悪意の者により、シードが予測され、結果的に、暗号鍵が見破られてしまう可能性があった。
【０００８】
また、上記方法では、パケットの往復時間を計測するタイマーの時間分解能よりも、通信経路の品質によるパケット往復時間の揺らぎが大きいことを利用して、乱数を生成するため、通信経路の品質が十分に高いと、パケット往復時間の揺らぎが小さくなり、パケット往復時間に基づいて、十分にランダムな値を、生成することができないといった問題があった。
【０００９】
即ち、上記のように計測機器の精度と、計測する物理量の揺らぎとの関係を用いて乱数を生成する従来の方法では、乱数が、一様な確率で生成されずに、偏って生成される可能性が高く、これが、暗号通信プログラム等、乱数を用いて所定の処理を実現するプログラムに、悪影響を与えて、本来実現されるべき機能が、実現できない可能性があった。
【００１０】
本発明は、こうした問題に鑑みなされたものであり、従来よりも、より理想的な乱数を生成可能とすることで、セキュリティの高い通信を実現できる技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
かかる目的を達成するためになされた請求項１記載の発明は、ネットワークに接続され、ネットワーク上の他装置から送信されたデータを、ネットワークを介して受信する受信手段を備えた通信装置であって、受信時刻検出手段と、受信データ数計測手段と、決定手段と、乱数出力手段と、を備えるものである。
【００１２】
この通信装置においては、受信時刻検出手段が、受信手段によるデータの受信時刻を検出し、受信データ数計測手段が、受信手段により受信されたデータの個数を計測する。そして、決定手段が、受信データ数計測手段の計測結果に基づき、乱数の生成に用いる受信手段の受信データを決定し、乱数出力手段が、決定手段により決定された受信データに関して、受信時刻検出手段により検出された受信時刻に対応する値を、乱数として出力する。
【００１３】
従って、この通信装置によれば、従来よりも、理想的な乱数を生成（出力）することができ、この乱数を、シードとして用いることで、セキュリティの高い暗号通信を実現することができる。
【００１４】
詳述すると、ネットワークには、通常複数の通信装置が接続されており、ネットワーク上では、これら複数の通信装置が個別に動作すると共に、通信等で各通信装置が相互に影響し合い、ネットワークトラフィック等が時々刻々と変化する。このため、各通信装置におけるデータの受信量及び受信タイミングは、予測困難である。
【００１５】
即ち、ネットワーク上の通信装置が、他の装置から送信されたネットワークを流れるデータを受信する場合には、ネットワーク上の各通信装置の動作内容、ネットワークトラフィックに応じた通信の遅れなど、データ受信タイミング等に影響する外因が、数多く存在する。
【００１６】
このため、本発明のように、ネットワークを通じて他装置から送信されたデータの受信時刻及び受信個数を、乱数の生成に用いれば、一様に乱数を生成することができ、当該通信装置にて生成される乱数の予測を、困難にすることができる。よって、本発明の通信装置によれば、従来よりも、理想的な乱数を生成することができるのである。
【００１７】
特に、本発明の通信装置によれば、データ受信時刻及び受信個数に基づいて乱数を生成するため、悪意の者が、ネットワーク上の通信装置からデータを送信して、当該通信装置の乱数生成に影響を与えようとしても、その行為が、当該通信装置の乱数生成に影響を与えにくい。このため、本発明の通信装置によれば、悪意の者に、生成した乱数を知られずに済み、乱数を用いて暗号通信を行う場合等において、セキュリティの高い通信を実現できる。
【００１８】
尚、上述した乱数出力手段は、受信時刻検出手段が検出した受信時刻を、二進数で表した際の最下位ビットの値を、乱数として出力する構成にすることができる。
また、上述の決定手段は、受信手段が受信したデータの個数が、予め設定された閾値に達したときの受信手段の受信データを、乱数の生成に用いる受信データに決定する構成にすることができる（請求項２）。ネットワーク上では、複数の通信装置からデータが送信されるため、外部から、受信データの個数が閾値に達したときの受信データの受信時刻を知ることは、困難である。従って、このように決定手段を構成すれば、従来よりも、理想的な乱数を生成することができる。
【００１９】
但し、閾値に相当する個数のデータを受信するまでに要する時間は、ネットワークトラフィックの影響を受けて変化するため、閾値を固定値とすると、定期的に乱数を生成するように通信装置を構成することができない。
【００２０】
従って、定期的に乱数を生成するには、閾値として、ネットワークトラフィックに応じた値を設定する閾値設定手段を、上記の通信装置に設けるとよい（請求項３）。このように構成された通信装置によれば、概ね定期的に乱数を生成することができ、ネットワークトラフィックにより、乱数の生成間隔が長くなるのを防止することができる。また、この結果として、一層、乱数を、悪意の者に知られないようにすることができる。よって、セキュリティの高い通信を実現できる。
【００２１】
また、上記閾値として、ネットワークトラフィックに応じた値を設定し、定期的に乱数を生成できるようにするには、具体的に、通信装置を、次のように構成するとよい。
即ち、通信装置には、乱数の生成間隔として、受信時刻検出手段が検出可能な受信時刻の最小単位よりも大きい値を、記憶する記憶手段と、現在設定されている閾値に基づき、この閾値に対応する個数のデータの受信に要する時間を計測する受信時間計測手段と、受信時間計測手段が計測したデータの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出手段と、単位時間個数算出手段により算出された上記単位時間当たりに受信可能なデータの個数から、記憶手段が記憶する生成間隔に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出手段と、を設けて、閾値設定手段は、閾値を、受信可能個数算出手段により算出された個数に、更新する構成にされるとよい（請求項４）。
【００２２】
このように構成された通信装置によれば、単位時間当たりに受信可能なデータの個数を実測して、この結果に基づいて、乱数の生成間隔が予め設定された時間間隔となるように、閾値を設定するため、ネットワークトラフィックに依らず、概ね定期的に乱数を生成することができる。
【００２３】
また、受信手段が、ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされている場合には、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの受信時刻を検出するように、受信時刻検出手段を構成すると共に、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの個数を計測するように、受信データ数計測手段を構成するとよい（請求項５）。
【００２４】
このように、受信時刻検出手段及び受信データ数計測手段を構成すれば、乱数の生成に影響を与える外因が増え、自装置宛のデータのみを対象として、受信時刻及び受信データ数を検出し、これに基づいて乱数を生成する場合よりも、一層、理想的な乱数を生成することができる。しかも、自装置宛以外のデータを受信できるネットワーク環境では、第三者からデータの内容を知られる可能性が高いが、このような構成では、より理想的な乱数を生成できるため、悪意の者に乱数を知られることを、一層防ぐことができる。よって、セキュリティの高い通信を実現できる。
【００２５】
また、上述した通信装置（請求項１〜請求項５）における各手段としての機能は、プログラム（請求項６〜請求項１０）により、コンピュータに実現させることができる。
請求項６記載のプログラムは、ネットワークに接続され、ネットワーク上の他装置から送信されたデータを、ネットワークを介して受信する受信手段を備えた通信装置のコンピュータに、受信手段が受信したデータの受信時刻を検出する受信時刻検出機能と、受信手段が受信したデータの個数を計測する受信データ数計測機能と、受信データ数計測機能により得られた計測結果に基づき、乱数の生成に用いる受信手段の受信データを決定する決定機能と、決定機能により決定された受信データに関して、受信時刻検出機能により検出された受信時刻に対応する値を、乱数として出力する乱数出力機能と、を実現させるためのプログラムである。このプログラムによれば、上述したように、従来よりも、理想的な乱数を生成（出力）することができる。
【００２６】
また、請求項７記載のプログラムは、受信手段が受信したデータの個数が、予め設定された閾値に到達したときの受信手段の受信データを、乱数の生成に用いる受信データに決定する機能を、上記決定機能としてコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項２記載の通信装置と同様の効果を得ることができる。
【００２７】
その他、請求項８記載のプログラムは、閾値として、ネットワークトラフィックに応じた値を設定する機能を、更にコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項３記載の通信装置と同様の効果を得ることができる。
【００２８】
また、請求項９記載のプログラムは、現在設定されている閾値に基づき、この閾値に対応する個数のデータの受信に要する時間を計測する受信時間計測機能と、受信時間計測機能により計測されたデータの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出機能と、単位時間個数算出機能により算出された上記単位時間当たりに受信可能なデータの個数から、受信時刻検出機能により検出可能な受信時刻の最小単位よりも大きい値として予め定められた乱数の生成間隔、に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出機能とを、コンピュータに実現させるためのプログラムであって、更に、上記閾値を、受信可能個数算出機能にて算出された個数に、更新する機能を、上記閾値設定機能としてコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項４記載の通信装置と同様の効果を得ることができる。
【００２９】
その他、請求項１０記載のプログラムは、受信手段が、ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされていることを前提としてなされたものであり、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの受信時刻を検出する機能を、上記受信時刻検出機能としてコンピュータに実現させ、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの個数を計測する機能を、上記受信データ数計測機能としてコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項５記載の通信装置と同様の効果を得ることができる。
【００３０】
また、上述の各プログラムは、光ディスクや磁気ディスク等のコンピュータ読取可能な記録媒体に記録して、ユーザに提供することが可能である。
【発明を実施するための最良の形態】
【００３１】
以下に本発明の実施例について、図面と共に説明する。
図１は、本実施例の通信システム１の構成を表すブロック図である。本実施例の通信システム１は、ネットワークＮＴに、複数の通信装置３が接続されてなる。ネットワークＮＴとしては、有線ネットワーク、無線ネットワークを挙げることができ、通信装置３としては、パーソナルコンピュータ（ＰＣ）、ディジタル複合機、データベースサーバ装置等、各種の通信装置を挙げることができる。
【００３２】
但し、本実施例では、通信装置３として、パーソナルコンピュータ５と、ディジタル複合機１０と、がネットワークＮＴに接続され、パーソナルコンピュータ５及びディジタル複合機１０が、ＳＳＬ通信可能な構成にされているものとし、ディジタル複合機１０には、本発明の手法でＳＳＬ通信等に用いる乱数の種となるシードを生成する機能が付されているものとする。
【００３３】
本実施例のディジタル複合機１０は、ネットワークプリンタ機能、スキャナ機能、コピー機能等を有する多機能装置であり、主に、各種プログラムを実行するＣＰＵ１１と、ＣＰＵ１１が実行するプログラムを記憶するＲＯＭ１３と、作業用メモリとしてのＲＡＭ１５と、各種設定情報を記憶するＮＶＲＡＭ１７と、印刷部１９と、読取部２１と、表示操作部２３と、通信インタフェース２５と、を備える。
【００３４】
印刷部１９は、ＣＰＵ１１に制御されて、インクジェット方式又はレーザプリンタ方式により、ＣＰＵ１１から指定された画像データを印刷処理し、その画像データに基づく画像を、用紙に形成するものである。この印刷部１９は、ネットワークプリンタ機能やコピー機能を実現する際に用いられる。一方、読取部２１は、ＣＰＵ１１に制御されて、載置部に載置された原稿を、光学的に読み取り、読取画像を表す画像データを生成して、この画像データを、ＣＰＵ１１に提供するものである。この読取部２１は、スキャナ機能やコピー機能を実現する際に用いられる。
【００３５】
その他、表示操作部２３は、ユーザが操作可能な各種キーを備えると共に、液晶ディスプレイ等からなる表示部を備え、ユーザからの指令を受け付けると共に、ユーザに向けて各種情報を表示するユーザインタフェースとして機能する。
【００３６】
また、通信インタフェース２５は、ネットワークＮＴに接続され、ネットワークＮＴ上の通信装置３と双方向通信可能な構成にされている。図２は、通信インタフェース２５の処理動作を示した説明図である。
【００３７】
本実施例の複合機１０が備える通信インタフェース２５は、ネットワークＮＴ上の他装置から送信された当該ネットワークＮＴを流れるパケットを逐次受信して、パケットに付された宛先アドレスに基づき、受信パケットが自装置宛のパケットであるか否かを判断し、受信パケットが自装置宛のパケットである場合には、上位の通信モジュールに、このパケットを転送し、受信パケットが自装置宛以外のパケットである場合には、このパケットを破棄して、上位の通信モジュールにパケットを転送しないよう動作する。
【００３８】
その他、通信インタフェース２５は、通信モジュールから入力された送信対象データを格納したパケットであって、宛先アドレスを付したパケットを、ネットワークＮＴに送出することにより、上記送信対象データを、宛先アドレスに対応する通信装置３に向けて送信する。
【００３９】
尚、上記通信モジュールとしては、ＩＰ（インターネットプロトコル）モジュールを挙げることができ、通信インタフェース２５が送受信するパケットとしては、宛先アドレスに、宛先のＭＡＣアドレスを有するイーサネット（登録商標）フレームを挙げることができる。
【００４０】
また、通信インタフェース２５から通信モジュールに転送されたパケットは、通信モジュールにて処理された後、上位の通信アプリケーションソフトウェアに提供される。その他、上位の通信アプリケーションソフトウェアにて生成された送信対象データは、通信モジュールを介して、通信インタフェース２５に入力され、これにより、複合機１０と他の通信装置間との通信が、実現される。尚、上記通信アプリケーションソフトウェアとしては、ＳＳＬ通信を実現するアプリケーションソフトウェア等を挙げることができる。
【００４１】
また、本実施例の複合機１０は、本発明に係る機能として、通信インタフェース２５の受信動作を監視し、ＳＳＬ通信等に必要な乱数の種となるシードを生成する機能を有する。即ち、本実施例においては、複合機１０が、ＣＰＵ１１により、シード生成プログラム（図２参照）を実行して、通信インタフェース２５が受信したパケットの数ｎと、パケットの受信時刻とに基づき、シードを生成する。これにより、本実施例の複合機１０では、従来よりも、適切なシードを生成することができる。
【００４２】
以下、この機能について、図２及び図３を用いて説明する。図３は、ＣＰＵ１１が、シード生成プログラムに基づいて実行するシード生成処理を表すフローチャートである。
シート生成処理を開始すると、ＣＰＵ１１は、まず初期化処理を行って（Ｓ１１０）、受信パケット数を表すパラメータｎをゼロに初期化すると共に、後述する閾値ＴＨを、デフォルト値に設定する。尚、閾値ＴＨのデフォルト値は、設定情報として、ＮＶＲＡＭ１７に記憶されている。その他、Ｓ１１０において、ＣＰＵ１１は、後述する乱数生成間隔Ｔｓを、ＮＶＲＡＭ１７が記憶する指定値に設定すると共に、システムクロックＣＬＫが示す現在時刻を、乱数生成時刻及びシード更新時刻の初期値として、ＲＡＭ１５に記憶する。
【００４３】
また、Ｓ１１０での処理を終えると、ＣＰＵ１１は、Ｓ１２０に移行し、ネットワークＮＴ上の他装置がパケットをネットワークＮＴに送出したことにより、ネットワークＮＴを流れるパケットを、通信インタフェース２５がネットワークＮＴを介して受信したか否かを判断する（Ｓ１２０）。尚、ここでは、自装置宛のパケットのみならず、自装置宛以外のパケットも対象として、パケットを受信したか否かを判断する。
【００４４】
そして、通信インタフェース２５によりパケットが受信されていない場合には（Ｓ１２０でＮｏ）、通信インタフェース２５によりパケットが受信されるまで待機し、通信インタフェース２５によりパケットが受信された場合には（Ｓ１２０でＹｅｓ）、Ｓ１３０に移行して、パラメータｎの値を１加算し（ｎ←ｎ＋１）、受信パケット数ｎを、カウントアップする。
【００４５】
また、この処理を終えると、ＣＰＵ１１は、Ｓ１４０に移行し、受信パケット数ｎが、閾値ＴＨ以上である否かを判断する。そして、受信パケット数ｎが閾値ＴＨ未満であると判断すると（Ｓ１４０でＮｏ）、Ｓ１２０に移行して、通信インタフェース２５が新たにパケットを受信するまで待機する。そして、通信インタフェース２５が新たにパケットを受信した場合には、受信パケット数ｎをカウントアップし（Ｓ１３０）、再び、Ｓ１４０での判断を行う。
【００４６】
Ｓ１４０において、受信パケット数ｎが閾値ＴＨ以上であると判断すると（Ｓ１４０でＹｅｓ）、ＣＰＵ１１は、システムクロックＣＬＫにおける現在時刻を表すビット列の最小位ビットを参照し（Ｓ１５０）、参照値（最小位ビットの値）を、乱数として、ＲＡＭ１５に用意されたシード生成領域に書き込む。これにより、参照値を一時記憶する（Ｓ１６０）。
【００４７】
本実施例の複合機１０は、データ長が、数バイト（例えば４バイト）のシードを生成する構成にされており、Ｓ１６０で一時記憶した参照値は、シードの構成ビットとして用いられる。また、本実施例では、このようにしてシードの構成ビットを決定するため、受信パケット数ｎが閾値ＴＨに到達するまでの所要時間が、システムクロックＣＬＫが刻む時間の最小単位よりも十分長くなるように、閾値ＴＨを設定する（詳細後述）。
【００４８】
また、Ｓ１６０での処理を終えると、ＣＰＵ１１は、生成するシードのデータ長に対応する数の乱数を、Ｓ１６０で生成したか否かを判断する（Ｓ１７０）。即ち、Ｓ１６０の処理を、シードのデータ（ビット）長に対応する回数、実行したか否かを判断する。例えば、シードが３２ビット（４バイト）である場合には、前回Ｓ１７５又はＳ１８５でシードを設定した時点（初回のみシード生成処理を開始した時点）から、３２回、Ｓ１６０の処理を実行したか否かを判断する。
【００４９】
そして、データ長に対応する数の乱数を生成したと判断すると（Ｓ１７０でＹｅｓ）、ＣＰＵ１１は、ＲＡＭ１５のシード生成領域に一時記憶しているシードのデータ長に対応する数の最新の乱数を生成順に配列してなる乱数列を、新たなシードに設定する（Ｓ１７５）。その後、Ｓ１９０に移行する。
【００５０】
一方、データ長に対応する数の乱数を生成していないと判断すると（Ｓ１７０でＮｏ）、ＣＰＵ１１は、ＲＡＭ１５が記憶するシード更新時刻に基づき、前回シードを設定した時点から所定時間ＴＬが経過したか否かを判断し（Ｓ１８０）、所定時間ＴＬが経過していないと判断すると（Ｓ１８０でＮｏ）、Ｓ２００に移行し、所定時間ＴＬが経過していると判断すると（Ｓ１８０でＹｅｓ）、Ｓ１８５に移行する。
【００５１】
Ｓ１８５に移行すると、ＣＰＵ１１は、ＲＡＭ１５のシード生成領域に一時記憶している乱数に基づいて、新たなシードを設定する。尚、ここでは、新たに生成された乱数の数が、シードのデータ長に及ばないため、例えば、前回設定したシードにおける不足分に相当するビット数の下位ビットを、今回設定するシードの上位ビットに用いる。即ち、上記不足分に相当する量の前回設定したシードの下位ビットの末尾に、ＲＡＭ１５のシード生成領域に一時記憶されている最新の乱数を生成順に配列してなる乱数列を結合して、シードのデータ長に対応する長さの乱数列を生成し、これを新たなシードとして設定する。
【００５２】
但し、初回のシード生成時に、Ｓ１８５の処理を実行する場合には、前回設定したシードが存在しないので、例えば、不足分に相当する量の上位ビットを、オールゼロにし、これに、ＲＡＭ１５のシード生成領域に一時記憶されている乱数を生成順に配列してなる乱数列を追加して、シードのデータ長に対応する長さの乱数列を生成し、この乱数列を、新たなシードとして設定する。
【００５３】
また、このようにしてＳ１８５の処理を終えると、ＣＰＵ１１は、Ｓ１９０に移行し、現在時刻を、シード更新時刻として、ＲＡＭ１５に一時記憶する。その後、Ｓ２００に移行する。
【００５４】
この他、Ｓ２００に移行すると、ＣＰＵ１１は、Ｓ１１０又はＳ２５０にてＲＡＭ１５に記憶した乱数生成時刻に基づいて、前回乱数を生成した時刻（又はシード生成処理を開始した時刻）からの経過時間を算出する。そして、この経過時間と、現在の受信パケット数ｎとに基づき、現在のネットワークトラフィックとして、単位時間当たりの受信パケット数ＮＴを算出する（Ｓ２１０）。
【００５５】
ＮＴ＝受信パケット数ｎ／経過時間
また、Ｓ２１０での処理を終えると、ＣＰＵ１１は、Ｓ２２０に移行し、算出した上記単位時間当たりの受信パケット数ＮＴに、乱数生成間隔Ｔｓを掛けて、次に設定する閾値ＴＨ１を算出する。
【００５６】
閾値ＴＨ１＝単位時間当たりの受信パケット数ＮＴ×乱数生成間隔Ｔｓ
そして、この処理を終えると、ＣＰＵ１１は、Ｓ２３０に移行して、上記算出した閾値ＴＨ１を、新たな閾値ＴＨとして設定する（ＴＨ←ＴＨ１）。尚、閾値ＴＨとしては、上述した要件を満足する必要があることから、本実施例において、乱数生成間隔Ｔｓは、システムクロックＣＬＫの時間分解能（システムクロックＣＬＫが刻む時間の最小単位）よりも、十分長い時間間隔に、設定されているものとする。
【００５７】
また、Ｓ２３０での処理を終えると、ＣＰＵ１１は、Ｓ２４０に移行して、受信パケット数ｎ（パラメータｎ）をゼロにリセットし、その後、現在時刻を、新しい乱数生成時刻として、ＲＡＭ１５に記憶する（Ｓ２５０）。
【００５８】
また、この処理を終えると、ＣＰＵ１１は、Ｓ１２０に移行し、通信インタフェース２５が新たにパケットを受信するまで待機する。そして、通信インタフェース２５が新たにパケットを受信した際には、再びＳ１３０以降の処理を実行する。このようにして、当該シード生成処理では、受信パケット数ｎが閾値ＴＨに到達したときのパケット受信時刻の最小位ビットの値を、乱数としてＲＡＭ１５に出力し、この乱数列を、上述したように、Ｓ１７５又はＳ１８５でシードとして設定する。
【００５９】
以上、本実施例について説明したが、本実施例の複合機１０によれば、通信インタフェース２５により受信されたパケットの個数を計測して、受信パケットの個数が閾値に達したときの時刻の最小位ビットを、乱数として出力する。そして、この動作を繰り返すことにより、シードを生成する。従って、本実施例の複合機１０によれば、理想的な乱数を生成することができ、この乱数列からなるシードを用いることで、セキュリティの高い暗号通信を実現することができる。
【００６０】
即ち、本実施例によれば、乱数の生成に影響を与える外因が多数に及ぶため、偏りがなく、理想的な乱数を生成することができる。例えば、本実施例において、乱数の生成に影響を与える外因としては、各通信装置のパケット送信動作、及び、ネットワークトラフィック等を挙げることができるが、各通信装置のパケット送信動作は、通信相手の通信装置によるパケット送信動作の影響を受けて変化する。このため、本実施例のように、パケットの受信時刻及び受信個数を、乱数の生成に用いれば、一様に乱数を生成することができ、当該複合機１０にて生成される乱数（強いてはシード）の予測を、困難にすることができる。よって、本実施例によれば、例えば、ＳＳＬ通信の際に、悪意のものが予測困難な乱数データを暗号鍵の生成に用いることができ、セキュリティの高い暗号通信を実現することができる。
【００６１】
また、本実施例によれば、パケット受信時刻及び受信個数に基づいて乱数を生成するため、悪意の者が、ネットワークＮＴ上の通信装置３からパケットを送信して、当該複合機１０の乱数生成に影響を与えようとしても、その行為が、当該複合機１０の乱数生成に影響を与えにくい。このため、本実施例の複合機１０によれば、乱数（シード）を用いて暗号通信を行う場合等において、従来よりも、セキュリティの高い通信を実現できる。
【００６２】
その他、本実施例では、閾値ＴＨに対応する数のパケットを受信するまでに要する時間が、ネットワークトラフィックの影響を受けて変化するため、閾値ＴＨを、ネットワークトラフィックに応じて更新するようにし、概ね一定周期で、シードを生成できるようにした。従って、本実施例によれば、ネットワークトラフィックの変化により、シードの更新間隔が長くなるのを防止しながら、ネットワークを流れるパケットを利用して、シードを適切に生成することができ、セキュリティの高い暗号通信を実現することができる。
【００６３】
その他、本実施例によれば、乱数生成をソフトウェアにて実現しているため、外部の物理量（外気温等）をセンサにて検出し、このセンサの検出値に基づいて乱数を生成する、ハードウェアにて乱数生成を実現している技術に比べ、センサの故障等が生じず、より信頼性の高い製品を製造することができる。また、本実施例によれば、乱数の生成が不能な場合には、通信もできないため、乱数が生成できないことにより、セキュリティの高い通信ができないといった状況になりにくく、より信頼性の高い製品を製造することができる。
【００６４】
尚、本発明の受信手段は、通信インタフェース２５に相当する。また、受信時刻検出手段は、Ｓ１５０の処理にて実現され、受信データ数計測手段は、Ｓ１３０の処理にて実現され、決定手段は、Ｓ１４０の処理にて実現され、乱数出力手段は、Ｓ１６０の処理にて実現されている。また、閾値設定手段は、Ｓ２３０の処理にて実現され、受信時間計測手段は、Ｓ２００の処理にて実現され、単位時間個数算出手段は、Ｓ２１０の処理にて実現され、受信可能個数算出手段は、Ｓ２２０の処理にて実現されている。
【００６５】
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、本発明を、ディジタル複合機に適用した例を説明したが、本発明は、通信機能を備えたパーソナルコンピュータ５などのその他の各種通信装置３にも適用することができる。
【００６６】
この他、上記実施例では、シードがＳＳＬ通信に用いられることを例に挙げて、発明の効果を説明したが、シードの用途は、上記用途に限定されるものではない。例えば、シードは、無線通信の際にも用いられるので、セキュリティに関する上記効果は、無線ネットワークに対しても、同様に言うことができる。
【００６７】
また、本発明の手法は、従来と比較して、一様に乱数を生成することができるものであるが、確実に、偏りを排除することができるものではないので、上述のシード生成処理においては、Ｓ１５０及びＳ１６０の処理を、図４に示す乱数補正処理に置換してもよい（変形例）。
【００６８】
図４は、変形例の複合機１０において、ＣＰＵ１１が実行する乱数補正処理を表すフローチャートである。尚、変形例の複合機１０は、図３に示すシード生成処理において、Ｓ１５０及びＳ１６０の処理に代え、図４に示す乱数補正処理を実行する程度のものであり、その他は、上述の実施例と基本的に同一構成である。従って、以下では、変形例の説明として、この乱数補正処理を説明する程度に留める。
【００６９】
乱数補正処理を開始すると、変形例の複合機１０におけるＣＰＵ１１は、Ｓ１５０での処理と同様に、システムクロックＣＬＫにおける現在時刻を表すビット列の最小位ビットを参照する（Ｓ３１０）。そして、この参照値（最小位ビットの値）を、ＲＡＭ１５に用意された参照値記録領域に書き込み、この参照値を一時記憶する（Ｓ３２０）。
【００７０】
また、Ｓ３２０での処理を終えると、パラメータｍの値を１加算することで、Ｓ３１０の実行回数である参照回数ｍをカウントアップし（Ｓ３３０）、その後、Ｓ３４０に移行する。尚、パラメータｍは、Ｓ１１０における初期化処理時に、ゼロにリセットされるものとする。
【００７１】
また、Ｓ３４０に移行すると、ＣＰＵ１１は、参照回数ｍが、所定回数Ｍであるか否かを判断し、参照回数ｍが所定回数Ｍではないと判断すると（Ｓ３４０でＮｏ）、Ｓ４００に移行し、参照回数ｍが所定回数Ｍであると判断すると（Ｓ３４０でＹｅｓ）、Ｓ３５０に移行する。
【００７２】
また、Ｓ３５０に移行すると、ＣＰＵ１１は、ＲＡＭ１５の参照値記録領域に記憶された過去におけるＳ３１０での参照結果から、参照値が値１であった事象の発生確率Ｐ１を算出する。例えば、参照値記録領域に、上記所定回数Ｍのａ倍の標本（参照値）が記憶されている場合には、参照値が値１である標本の数を、標本の総数（ａ×Ｍ）で除算して、参照値が値１であった事象の発生確率Ｐ１を算出する。
【００７３】
また、この処理を終えると、ＣＰＵ１１は、Ｓ３６０に移行して、参照値が値０であった事象の発生確率Ｐ０を算出し（Ｐ０＝１−Ｐ１）、その後、確率Ｐ１が確率Ｐ０より大きいか否かを判断する（Ｓ３７０）。
【００７４】
そして、確率Ｐ１が確率Ｐ０よりも大きいと判断すると（Ｓ３７０でＹｅｓ）、ＣＰＵ１１は、Ｓ３８０に移行し、後続のＳ４００で実行される置換処理にて、（Ｐ１−０．５）／Ｐ１の確率で、参照値１が値０に置換されるように、置換処理の条件パラメータを設定する。例えば、Ｐ１＝０．７である場合には、２／７の確率で、参照値１が、値０に置換されるように、置換処理の条件パラメータを設定する。尚、参照値０については、値１に置換されないように設定する。その後、Ｓ３９０に移行する。
【００７５】
一方、Ｓ３７０において、確率Ｐ１が確率Ｐ０以下であると判断すると（Ｓ３７０でＮｏ）、ＣＰＵ１１は、Ｓ３８５に移行し、（Ｐ０−０．５）／Ｐ０の確率で、参照値０が値１に置換されるように、置換処理の条件パラメータを設定した後、Ｓ３９０に移行する。尚、Ｓ３８５において、参照値１については、値０に置換されないように設定する。
【００７６】
また、Ｓ３９０に移行すると、ＣＰＵ１１は、参照回数ｍをゼロにリセットし、その後、Ｓ４００に移行する。
Ｓ４００に移行すると、ＣＰＵ１１は、直前のＳ３１０の処理により得られた参照値を、置換処理し、予め設定された条件パラメータに応じた確率で、参照値１を０に置換、又は、参照値０を１に置換する。その後、Ｓ４１０に移行する。これにより、置換処理後の参照値においては、値が１である確率、及び、値が０である確率が、夫々０．５となる。尚、シード生成処理を実行した直後では、Ｓ３８０又はＳ３８５の処理が実行されていないため、この状態では、Ｓ４００で置換処理を実質実行せず、Ｓ４１０に移行する。
【００７７】
また、Ｓ４１０に移行すると、ＣＰＵ１１は、置換処理後の参照値を、乱数として、ＲＡＭ１５に用意されたシード生成領域に書き込み、この参照値を一時記憶する。そして、Ｓ４１０での処理を終えると、ＣＰＵ１１は、当該乱数補正処理を終了し、Ｓ１７０に移行する。
【００７８】
以上、変形例について説明したが、変形例によれば、乱数が一様に生成されない場合に、参照値を、必要に応じ置換して、見かけ上、乱数が一様に生成されるようにする。従って、この変形例によれば、一層、好適にシードを生成することができる。
【図面の簡単な説明】
【００７９】
【図１】通信システム１の構成を表すブロック図である。
【図２】通信インタフェース２５の処理動作を示した説明図である。
【図３】ＣＰＵ１１が実行するシード生成処理を表すフローチャートである。
【図４】ＣＰＵ１１が実行する乱数補正処理を表すフローチャートである。
【符号の説明】
【００８０】
１…通信システム、３…通信装置、５…パーソナルコンピュータ、１０…ディジタル複合機、１１…ＣＰＵ、１３…ＲＯＭ、１５…ＲＡＭ、１７…ＮＶＲＡＭ、１９…印刷部、２１…読取部、２３…表示操作部、２５…通信インタフェース、ＣＬＫ…システムクロック、ＮＴ…ネットワーク
【図１】
2008058514.tif 000003
【図２】
2008058514.tif 000004
【図３】
2008058514.tif 000005
【図４】
2008058514.tif 000006