説明

通信装置及びプログラム

【課題】 通信装置にて、従来よりも理想的な乱数を生成可能な技術を提供すること。
【解決手段】 複合機は、通信インタフェースが受信したパケットが自装置宛のパケットであるか否かに拘らず、受信パケットの数nをカウントし(S130)、受信パケット数が閾値に達したときのシステムクロックの最小位ビットの値を、シードを構成する乱数に設定する(S160)。そして、シードのデータ長に対応する量、乱数を生成した場合には、生成した乱数列をシードとして設定する(S175)。また、単位時間当たりの受信パケット数を計測し(S210)、この計測結果に基づき閾値を設定することにより(S230)、乱数の生成間隔が、予め設定された時間間隔となるようにする。これにより、複合機は、パケットの受信数及び受信時刻に基づき、定期的に乱数を生成して、これらの乱数列からなるシードを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク接続される通信装置であって、乱数生成機能を有する通信装置に関する。
【背景技術】
【0002】
従来より、通信装置としては、乱数を用いて、暗号通信や利用者認証を行うものが知られている。例えば、SSL通信等の暗号通信においては、セッションの確立時に、サーバ装置及びクライアント装置間で、夫々が生成した乱数データを交換し、これらの乱数データに基づいて、暗号鍵(セッションキー)を生成し、暗号通信を実現する。
【0003】
また、乱数の生成方法としては、乱数の種となるビットパターン(所謂シード)に、所定の演算処理を施すことで、擬似的に、乱数を生成する方法が知られており、上記の暗号通信等では、上記ビットパターンにより、乱数データを生成し、最終的に暗号鍵を生成する手法が広く採用されている。
【0004】
具体的に、上記手法にて乱数を生成する場合には、所定のアルゴリズムにより、入力パラメータに演算処理を施して、乱数を生成するプログラムに、上記ビットパターンを入力パラメータとして与えて、乱数を生成する。
【0005】
尚、上述したシードと呼ばれるビットパターンは、乱数を生成する元となる基本情報であるため、上記乱数を生成するプログラムに、一定のビットパターンを与えた場合には、特定のパターンで、乱数が生成されることになる。
【0006】
従って、上記の手法にて乱数を生成する場合には、プログラムに、ランダムなビットパターンを与えることで、より理想的な乱数が生成されるようにする。この点に関し、従来技術としては、第一の通信装置と第二の通信装置との間でパケットを往復させ、その往復時間の揺らぎを利用して、ランダムなビットパターンを生成する技術が知られている(例えば、特許文献1参照)。
【特許文献1】特開2004−206025号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の乱数生成方法では、次のような問題があった。例えば、特許文献1記載のように、パケットの往復時間に基づいて、乱数(シード)を生成する方法では、通信経路の品質を観測することで、パケット往復時間を予測することができるため、この方法にて生成した乱数を、シードとして用いて、暗号通信等を実現する場合には、悪意の者により、シードが予測され、結果的に、暗号鍵が見破られてしまう可能性があった。
【0008】
また、上記方法では、パケットの往復時間を計測するタイマーの時間分解能よりも、通信経路の品質によるパケット往復時間の揺らぎが大きいことを利用して、乱数を生成するため、通信経路の品質が十分に高いと、パケット往復時間の揺らぎが小さくなり、パケット往復時間に基づいて、十分にランダムな値を、生成することができないといった問題があった。
【0009】
即ち、上記のように計測機器の精度と、計測する物理量の揺らぎとの関係を用いて乱数を生成する従来の方法では、乱数が、一様な確率で生成されずに、偏って生成される可能性が高く、これが、暗号通信プログラム等、乱数を用いて所定の処理を実現するプログラムに、悪影響を与えて、本来実現されるべき機能が、実現できない可能性があった。
【0010】
本発明は、こうした問題に鑑みなされたものであり、従来よりも、より理想的な乱数を生成可能とすることで、セキュリティの高い通信を実現できる技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
かかる目的を達成するためになされた請求項1記載の発明は、ネットワークに接続され、ネットワーク上の他装置から送信されたデータを、ネットワークを介して受信する受信手段を備えた通信装置であって、受信時刻検出手段と、受信データ数計測手段と、決定手段と、乱数出力手段と、を備えるものである。
【0012】
この通信装置においては、受信時刻検出手段が、受信手段によるデータの受信時刻を検出し、受信データ数計測手段が、受信手段により受信されたデータの個数を計測する。そして、決定手段が、受信データ数計測手段の計測結果に基づき、乱数の生成に用いる受信手段の受信データを決定し、乱数出力手段が、決定手段により決定された受信データに関して、受信時刻検出手段により検出された受信時刻に対応する値を、乱数として出力する。
【0013】
従って、この通信装置によれば、従来よりも、理想的な乱数を生成(出力)することができ、この乱数を、シードとして用いることで、セキュリティの高い暗号通信を実現することができる。
【0014】
詳述すると、ネットワークには、通常複数の通信装置が接続されており、ネットワーク上では、これら複数の通信装置が個別に動作すると共に、通信等で各通信装置が相互に影響し合い、ネットワークトラフィック等が時々刻々と変化する。このため、各通信装置におけるデータの受信量及び受信タイミングは、予測困難である。
【0015】
即ち、ネットワーク上の通信装置が、他の装置から送信されたネットワークを流れるデータを受信する場合には、ネットワーク上の各通信装置の動作内容、ネットワークトラフィックに応じた通信の遅れなど、データ受信タイミング等に影響する外因が、数多く存在する。
【0016】
このため、本発明のように、ネットワークを通じて他装置から送信されたデータの受信時刻及び受信個数を、乱数の生成に用いれば、一様に乱数を生成することができ、当該通信装置にて生成される乱数の予測を、困難にすることができる。よって、本発明の通信装置によれば、従来よりも、理想的な乱数を生成することができるのである。
【0017】
特に、本発明の通信装置によれば、データ受信時刻及び受信個数に基づいて乱数を生成するため、悪意の者が、ネットワーク上の通信装置からデータを送信して、当該通信装置の乱数生成に影響を与えようとしても、その行為が、当該通信装置の乱数生成に影響を与えにくい。このため、本発明の通信装置によれば、悪意の者に、生成した乱数を知られずに済み、乱数を用いて暗号通信を行う場合等において、セキュリティの高い通信を実現できる。
【0018】
尚、上述した乱数出力手段は、受信時刻検出手段が検出した受信時刻を、二進数で表した際の最下位ビットの値を、乱数として出力する構成にすることができる。
また、上述の決定手段は、受信手段が受信したデータの個数が、予め設定された閾値に達したときの受信手段の受信データを、乱数の生成に用いる受信データに決定する構成にすることができる(請求項2)。ネットワーク上では、複数の通信装置からデータが送信されるため、外部から、受信データの個数が閾値に達したときの受信データの受信時刻を知ることは、困難である。従って、このように決定手段を構成すれば、従来よりも、理想的な乱数を生成することができる。
【0019】
但し、閾値に相当する個数のデータを受信するまでに要する時間は、ネットワークトラフィックの影響を受けて変化するため、閾値を固定値とすると、定期的に乱数を生成するように通信装置を構成することができない。
【0020】
従って、定期的に乱数を生成するには、閾値として、ネットワークトラフィックに応じた値を設定する閾値設定手段を、上記の通信装置に設けるとよい(請求項3)。このように構成された通信装置によれば、概ね定期的に乱数を生成することができ、ネットワークトラフィックにより、乱数の生成間隔が長くなるのを防止することができる。また、この結果として、一層、乱数を、悪意の者に知られないようにすることができる。よって、セキュリティの高い通信を実現できる。
【0021】
また、上記閾値として、ネットワークトラフィックに応じた値を設定し、定期的に乱数を生成できるようにするには、具体的に、通信装置を、次のように構成するとよい。
即ち、通信装置には、乱数の生成間隔として、受信時刻検出手段が検出可能な受信時刻の最小単位よりも大きい値を、記憶する記憶手段と、現在設定されている閾値に基づき、この閾値に対応する個数のデータの受信に要する時間を計測する受信時間計測手段と、受信時間計測手段が計測したデータの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出手段と、単位時間個数算出手段により算出された上記単位時間当たりに受信可能なデータの個数から、記憶手段が記憶する生成間隔に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出手段と、を設けて、閾値設定手段は、閾値を、受信可能個数算出手段により算出された個数に、更新する構成にされるとよい(請求項4)。
【0022】
このように構成された通信装置によれば、単位時間当たりに受信可能なデータの個数を実測して、この結果に基づいて、乱数の生成間隔が予め設定された時間間隔となるように、閾値を設定するため、ネットワークトラフィックに依らず、概ね定期的に乱数を生成することができる。
【0023】
また、受信手段が、ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされている場合には、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの受信時刻を検出するように、受信時刻検出手段を構成すると共に、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの個数を計測するように、受信データ数計測手段を構成するとよい(請求項5)。
【0024】
このように、受信時刻検出手段及び受信データ数計測手段を構成すれば、乱数の生成に影響を与える外因が増え、自装置宛のデータのみを対象として、受信時刻及び受信データ数を検出し、これに基づいて乱数を生成する場合よりも、一層、理想的な乱数を生成することができる。しかも、自装置宛以外のデータを受信できるネットワーク環境では、第三者からデータの内容を知られる可能性が高いが、このような構成では、より理想的な乱数を生成できるため、悪意の者に乱数を知られることを、一層防ぐことができる。よって、セキュリティの高い通信を実現できる。
【0025】
また、上述した通信装置(請求項1〜請求項5)における各手段としての機能は、プログラム(請求項6〜請求項10)により、コンピュータに実現させることができる。
請求項6記載のプログラムは、ネットワークに接続され、ネットワーク上の他装置から送信されたデータを、ネットワークを介して受信する受信手段を備えた通信装置のコンピュータに、受信手段が受信したデータの受信時刻を検出する受信時刻検出機能と、受信手段が受信したデータの個数を計測する受信データ数計測機能と、受信データ数計測機能により得られた計測結果に基づき、乱数の生成に用いる受信手段の受信データを決定する決定機能と、決定機能により決定された受信データに関して、受信時刻検出機能により検出された受信時刻に対応する値を、乱数として出力する乱数出力機能と、を実現させるためのプログラムである。このプログラムによれば、上述したように、従来よりも、理想的な乱数を生成(出力)することができる。
【0026】
また、請求項7記載のプログラムは、受信手段が受信したデータの個数が、予め設定された閾値に到達したときの受信手段の受信データを、乱数の生成に用いる受信データに決定する機能を、上記決定機能としてコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項2記載の通信装置と同様の効果を得ることができる。
【0027】
その他、請求項8記載のプログラムは、閾値として、ネットワークトラフィックに応じた値を設定する機能を、更にコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項3記載の通信装置と同様の効果を得ることができる。
【0028】
また、請求項9記載のプログラムは、現在設定されている閾値に基づき、この閾値に対応する個数のデータの受信に要する時間を計測する受信時間計測機能と、受信時間計測機能により計測されたデータの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出機能と、単位時間個数算出機能により算出された上記単位時間当たりに受信可能なデータの個数から、受信時刻検出機能により検出可能な受信時刻の最小単位よりも大きい値として予め定められた乱数の生成間隔、に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出機能とを、コンピュータに実現させるためのプログラムであって、更に、上記閾値を、受信可能個数算出機能にて算出された個数に、更新する機能を、上記閾値設定機能としてコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項4記載の通信装置と同様の効果を得ることができる。
【0029】
その他、請求項10記載のプログラムは、受信手段が、ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされていることを前提としてなされたものであり、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの受信時刻を検出する機能を、上記受信時刻検出機能としてコンピュータに実現させ、自装置宛のデータだけでなく自装置宛以外のデータも対象として、受信手段が受信したデータの個数を計測する機能を、上記受信データ数計測機能としてコンピュータに実現させるためのプログラムである。このプログラムによれば、請求項5記載の通信装置と同様の効果を得ることができる。
【0030】
また、上述の各プログラムは、光ディスクや磁気ディスク等のコンピュータ読取可能な記録媒体に記録して、ユーザに提供することが可能である。
【発明を実施するための最良の形態】
【0031】
以下に本発明の実施例について、図面と共に説明する。
図1は、本実施例の通信システム1の構成を表すブロック図である。本実施例の通信システム1は、ネットワークNTに、複数の通信装置3が接続されてなる。ネットワークNTとしては、有線ネットワーク、無線ネットワークを挙げることができ、通信装置3としては、パーソナルコンピュータ(PC)、ディジタル複合機、データベースサーバ装置等、各種の通信装置を挙げることができる。
【0032】
但し、本実施例では、通信装置3として、パーソナルコンピュータ5と、ディジタル複合機10と、がネットワークNTに接続され、パーソナルコンピュータ5及びディジタル複合機10が、SSL通信可能な構成にされているものとし、ディジタル複合機10には、本発明の手法でSSL通信等に用いる乱数の種となるシードを生成する機能が付されているものとする。
【0033】
本実施例のディジタル複合機10は、ネットワークプリンタ機能、スキャナ機能、コピー機能等を有する多機能装置であり、主に、各種プログラムを実行するCPU11と、CPU11が実行するプログラムを記憶するROM13と、作業用メモリとしてのRAM15と、各種設定情報を記憶するNVRAM17と、印刷部19と、読取部21と、表示操作部23と、通信インタフェース25と、を備える。
【0034】
印刷部19は、CPU11に制御されて、インクジェット方式又はレーザプリンタ方式により、CPU11から指定された画像データを印刷処理し、その画像データに基づく画像を、用紙に形成するものである。この印刷部19は、ネットワークプリンタ機能やコピー機能を実現する際に用いられる。一方、読取部21は、CPU11に制御されて、載置部に載置された原稿を、光学的に読み取り、読取画像を表す画像データを生成して、この画像データを、CPU11に提供するものである。この読取部21は、スキャナ機能やコピー機能を実現する際に用いられる。
【0035】
その他、表示操作部23は、ユーザが操作可能な各種キーを備えると共に、液晶ディスプレイ等からなる表示部を備え、ユーザからの指令を受け付けると共に、ユーザに向けて各種情報を表示するユーザインタフェースとして機能する。
【0036】
また、通信インタフェース25は、ネットワークNTに接続され、ネットワークNT上の通信装置3と双方向通信可能な構成にされている。図2は、通信インタフェース25の処理動作を示した説明図である。
【0037】
本実施例の複合機10が備える通信インタフェース25は、ネットワークNT上の他装置から送信された当該ネットワークNTを流れるパケットを逐次受信して、パケットに付された宛先アドレスに基づき、受信パケットが自装置宛のパケットであるか否かを判断し、受信パケットが自装置宛のパケットである場合には、上位の通信モジュールに、このパケットを転送し、受信パケットが自装置宛以外のパケットである場合には、このパケットを破棄して、上位の通信モジュールにパケットを転送しないよう動作する。
【0038】
その他、通信インタフェース25は、通信モジュールから入力された送信対象データを格納したパケットであって、宛先アドレスを付したパケットを、ネットワークNTに送出することにより、上記送信対象データを、宛先アドレスに対応する通信装置3に向けて送信する。
【0039】
尚、上記通信モジュールとしては、IP(インターネットプロトコル)モジュールを挙げることができ、通信インタフェース25が送受信するパケットとしては、宛先アドレスに、宛先のMACアドレスを有するイーサネット(登録商標)フレームを挙げることができる。
【0040】
また、通信インタフェース25から通信モジュールに転送されたパケットは、通信モジュールにて処理された後、上位の通信アプリケーションソフトウェアに提供される。その他、上位の通信アプリケーションソフトウェアにて生成された送信対象データは、通信モジュールを介して、通信インタフェース25に入力され、これにより、複合機10と他の通信装置間との通信が、実現される。尚、上記通信アプリケーションソフトウェアとしては、SSL通信を実現するアプリケーションソフトウェア等を挙げることができる。
【0041】
また、本実施例の複合機10は、本発明に係る機能として、通信インタフェース25の受信動作を監視し、SSL通信等に必要な乱数の種となるシードを生成する機能を有する。即ち、本実施例においては、複合機10が、CPU11により、シード生成プログラム(図2参照)を実行して、通信インタフェース25が受信したパケットの数nと、パケットの受信時刻とに基づき、シードを生成する。これにより、本実施例の複合機10では、従来よりも、適切なシードを生成することができる。
【0042】
以下、この機能について、図2及び図3を用いて説明する。図3は、CPU11が、シード生成プログラムに基づいて実行するシード生成処理を表すフローチャートである。
シート生成処理を開始すると、CPU11は、まず初期化処理を行って(S110)、受信パケット数を表すパラメータnをゼロに初期化すると共に、後述する閾値THを、デフォルト値に設定する。尚、閾値THのデフォルト値は、設定情報として、NVRAM17に記憶されている。その他、S110において、CPU11は、後述する乱数生成間隔Tsを、NVRAM17が記憶する指定値に設定すると共に、システムクロックCLKが示す現在時刻を、乱数生成時刻及びシード更新時刻の初期値として、RAM15に記憶する。
【0043】
また、S110での処理を終えると、CPU11は、S120に移行し、ネットワークNT上の他装置がパケットをネットワークNTに送出したことにより、ネットワークNTを流れるパケットを、通信インタフェース25がネットワークNTを介して受信したか否かを判断する(S120)。尚、ここでは、自装置宛のパケットのみならず、自装置宛以外のパケットも対象として、パケットを受信したか否かを判断する。
【0044】
そして、通信インタフェース25によりパケットが受信されていない場合には(S120でNo)、通信インタフェース25によりパケットが受信されるまで待機し、通信インタフェース25によりパケットが受信された場合には(S120でYes)、S130に移行して、パラメータnの値を1加算し(n←n+1)、受信パケット数nを、カウントアップする。
【0045】
また、この処理を終えると、CPU11は、S140に移行し、受信パケット数nが、閾値TH以上である否かを判断する。そして、受信パケット数nが閾値TH未満であると判断すると(S140でNo)、S120に移行して、通信インタフェース25が新たにパケットを受信するまで待機する。そして、通信インタフェース25が新たにパケットを受信した場合には、受信パケット数nをカウントアップし(S130)、再び、S140での判断を行う。
【0046】
S140において、受信パケット数nが閾値TH以上であると判断すると(S140でYes)、CPU11は、システムクロックCLKにおける現在時刻を表すビット列の最小位ビットを参照し(S150)、参照値(最小位ビットの値)を、乱数として、RAM15に用意されたシード生成領域に書き込む。これにより、参照値を一時記憶する(S160)。
【0047】
本実施例の複合機10は、データ長が、数バイト(例えば4バイト)のシードを生成する構成にされており、S160で一時記憶した参照値は、シードの構成ビットとして用いられる。また、本実施例では、このようにしてシードの構成ビットを決定するため、受信パケット数nが閾値THに到達するまでの所要時間が、システムクロックCLKが刻む時間の最小単位よりも十分長くなるように、閾値THを設定する(詳細後述)。
【0048】
また、S160での処理を終えると、CPU11は、生成するシードのデータ長に対応する数の乱数を、S160で生成したか否かを判断する(S170)。即ち、S160の処理を、シードのデータ(ビット)長に対応する回数、実行したか否かを判断する。例えば、シードが32ビット(4バイト)である場合には、前回S175又はS185でシードを設定した時点(初回のみシード生成処理を開始した時点)から、32回、S160の処理を実行したか否かを判断する。
【0049】
そして、データ長に対応する数の乱数を生成したと判断すると(S170でYes)、CPU11は、RAM15のシード生成領域に一時記憶しているシードのデータ長に対応する数の最新の乱数を生成順に配列してなる乱数列を、新たなシードに設定する(S175)。その後、S190に移行する。
【0050】
一方、データ長に対応する数の乱数を生成していないと判断すると(S170でNo)、CPU11は、RAM15が記憶するシード更新時刻に基づき、前回シードを設定した時点から所定時間TLが経過したか否かを判断し(S180)、所定時間TLが経過していないと判断すると(S180でNo)、S200に移行し、所定時間TLが経過していると判断すると(S180でYes)、S185に移行する。
【0051】
S185に移行すると、CPU11は、RAM15のシード生成領域に一時記憶している乱数に基づいて、新たなシードを設定する。尚、ここでは、新たに生成された乱数の数が、シードのデータ長に及ばないため、例えば、前回設定したシードにおける不足分に相当するビット数の下位ビットを、今回設定するシードの上位ビットに用いる。即ち、上記不足分に相当する量の前回設定したシードの下位ビットの末尾に、RAM15のシード生成領域に一時記憶されている最新の乱数を生成順に配列してなる乱数列を結合して、シードのデータ長に対応する長さの乱数列を生成し、これを新たなシードとして設定する。
【0052】
但し、初回のシード生成時に、S185の処理を実行する場合には、前回設定したシードが存在しないので、例えば、不足分に相当する量の上位ビットを、オールゼロにし、これに、RAM15のシード生成領域に一時記憶されている乱数を生成順に配列してなる乱数列を追加して、シードのデータ長に対応する長さの乱数列を生成し、この乱数列を、新たなシードとして設定する。
【0053】
また、このようにしてS185の処理を終えると、CPU11は、S190に移行し、現在時刻を、シード更新時刻として、RAM15に一時記憶する。その後、S200に移行する。
【0054】
この他、S200に移行すると、CPU11は、S110又はS250にてRAM15に記憶した乱数生成時刻に基づいて、前回乱数を生成した時刻(又はシード生成処理を開始した時刻)からの経過時間を算出する。そして、この経過時間と、現在の受信パケット数nとに基づき、現在のネットワークトラフィックとして、単位時間当たりの受信パケット数NTを算出する(S210)。
【0055】
NT=受信パケット数n/経過時間
また、S210での処理を終えると、CPU11は、S220に移行し、算出した上記単位時間当たりの受信パケット数NTに、乱数生成間隔Tsを掛けて、次に設定する閾値TH1を算出する。
【0056】
閾値TH1=単位時間当たりの受信パケット数NT×乱数生成間隔Ts
そして、この処理を終えると、CPU11は、S230に移行して、上記算出した閾値TH1を、新たな閾値THとして設定する(TH←TH1)。尚、閾値THとしては、上述した要件を満足する必要があることから、本実施例において、乱数生成間隔Tsは、システムクロックCLKの時間分解能(システムクロックCLKが刻む時間の最小単位)よりも、十分長い時間間隔に、設定されているものとする。
【0057】
また、S230での処理を終えると、CPU11は、S240に移行して、受信パケット数n(パラメータn)をゼロにリセットし、その後、現在時刻を、新しい乱数生成時刻として、RAM15に記憶する(S250)。
【0058】
また、この処理を終えると、CPU11は、S120に移行し、通信インタフェース25が新たにパケットを受信するまで待機する。そして、通信インタフェース25が新たにパケットを受信した際には、再びS130以降の処理を実行する。このようにして、当該シード生成処理では、受信パケット数nが閾値THに到達したときのパケット受信時刻の最小位ビットの値を、乱数としてRAM15に出力し、この乱数列を、上述したように、S175又はS185でシードとして設定する。
【0059】
以上、本実施例について説明したが、本実施例の複合機10によれば、通信インタフェース25により受信されたパケットの個数を計測して、受信パケットの個数が閾値に達したときの時刻の最小位ビットを、乱数として出力する。そして、この動作を繰り返すことにより、シードを生成する。従って、本実施例の複合機10によれば、理想的な乱数を生成することができ、この乱数列からなるシードを用いることで、セキュリティの高い暗号通信を実現することができる。
【0060】
即ち、本実施例によれば、乱数の生成に影響を与える外因が多数に及ぶため、偏りがなく、理想的な乱数を生成することができる。例えば、本実施例において、乱数の生成に影響を与える外因としては、各通信装置のパケット送信動作、及び、ネットワークトラフィック等を挙げることができるが、各通信装置のパケット送信動作は、通信相手の通信装置によるパケット送信動作の影響を受けて変化する。このため、本実施例のように、パケットの受信時刻及び受信個数を、乱数の生成に用いれば、一様に乱数を生成することができ、当該複合機10にて生成される乱数(強いてはシード)の予測を、困難にすることができる。よって、本実施例によれば、例えば、SSL通信の際に、悪意のものが予測困難な乱数データを暗号鍵の生成に用いることができ、セキュリティの高い暗号通信を実現することができる。
【0061】
また、本実施例によれば、パケット受信時刻及び受信個数に基づいて乱数を生成するため、悪意の者が、ネットワークNT上の通信装置3からパケットを送信して、当該複合機10の乱数生成に影響を与えようとしても、その行為が、当該複合機10の乱数生成に影響を与えにくい。このため、本実施例の複合機10によれば、乱数(シード)を用いて暗号通信を行う場合等において、従来よりも、セキュリティの高い通信を実現できる。
【0062】
その他、本実施例では、閾値THに対応する数のパケットを受信するまでに要する時間が、ネットワークトラフィックの影響を受けて変化するため、閾値THを、ネットワークトラフィックに応じて更新するようにし、概ね一定周期で、シードを生成できるようにした。従って、本実施例によれば、ネットワークトラフィックの変化により、シードの更新間隔が長くなるのを防止しながら、ネットワークを流れるパケットを利用して、シードを適切に生成することができ、セキュリティの高い暗号通信を実現することができる。
【0063】
その他、本実施例によれば、乱数生成をソフトウェアにて実現しているため、外部の物理量(外気温等)をセンサにて検出し、このセンサの検出値に基づいて乱数を生成する、ハードウェアにて乱数生成を実現している技術に比べ、センサの故障等が生じず、より信頼性の高い製品を製造することができる。また、本実施例によれば、乱数の生成が不能な場合には、通信もできないため、乱数が生成できないことにより、セキュリティの高い通信ができないといった状況になりにくく、より信頼性の高い製品を製造することができる。
【0064】
尚、本発明の受信手段は、通信インタフェース25に相当する。また、受信時刻検出手段は、S150の処理にて実現され、受信データ数計測手段は、S130の処理にて実現され、決定手段は、S140の処理にて実現され、乱数出力手段は、S160の処理にて実現されている。また、閾値設定手段は、S230の処理にて実現され、受信時間計測手段は、S200の処理にて実現され、単位時間個数算出手段は、S210の処理にて実現され、受信可能個数算出手段は、S220の処理にて実現されている。
【0065】
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、本発明を、ディジタル複合機に適用した例を説明したが、本発明は、通信機能を備えたパーソナルコンピュータ5などのその他の各種通信装置3にも適用することができる。
【0066】
この他、上記実施例では、シードがSSL通信に用いられることを例に挙げて、発明の効果を説明したが、シードの用途は、上記用途に限定されるものではない。例えば、シードは、無線通信の際にも用いられるので、セキュリティに関する上記効果は、無線ネットワークに対しても、同様に言うことができる。
【0067】
また、本発明の手法は、従来と比較して、一様に乱数を生成することができるものであるが、確実に、偏りを排除することができるものではないので、上述のシード生成処理においては、S150及びS160の処理を、図4に示す乱数補正処理に置換してもよい(変形例)。
【0068】
図4は、変形例の複合機10において、CPU11が実行する乱数補正処理を表すフローチャートである。尚、変形例の複合機10は、図3に示すシード生成処理において、S150及びS160の処理に代え、図4に示す乱数補正処理を実行する程度のものであり、その他は、上述の実施例と基本的に同一構成である。従って、以下では、変形例の説明として、この乱数補正処理を説明する程度に留める。
【0069】
乱数補正処理を開始すると、変形例の複合機10におけるCPU11は、S150での処理と同様に、システムクロックCLKにおける現在時刻を表すビット列の最小位ビットを参照する(S310)。そして、この参照値(最小位ビットの値)を、RAM15に用意された参照値記録領域に書き込み、この参照値を一時記憶する(S320)。
【0070】
また、S320での処理を終えると、パラメータmの値を1加算することで、S310の実行回数である参照回数mをカウントアップし(S330)、その後、S340に移行する。尚、パラメータmは、S110における初期化処理時に、ゼロにリセットされるものとする。
【0071】
また、S340に移行すると、CPU11は、参照回数mが、所定回数Mであるか否かを判断し、参照回数mが所定回数Mではないと判断すると(S340でNo)、S400に移行し、参照回数mが所定回数Mであると判断すると(S340でYes)、S350に移行する。
【0072】
また、S350に移行すると、CPU11は、RAM15の参照値記録領域に記憶された過去におけるS310での参照結果から、参照値が値1であった事象の発生確率P1を算出する。例えば、参照値記録領域に、上記所定回数Mのa倍の標本(参照値)が記憶されている場合には、参照値が値1である標本の数を、標本の総数(a×M)で除算して、参照値が値1であった事象の発生確率P1を算出する。
【0073】
また、この処理を終えると、CPU11は、S360に移行して、参照値が値0であった事象の発生確率P0を算出し(P0=1−P1)、その後、確率P1が確率P0より大きいか否かを判断する(S370)。
【0074】
そして、確率P1が確率P0よりも大きいと判断すると(S370でYes)、CPU11は、S380に移行し、後続のS400で実行される置換処理にて、(P1−0.5)/P1の確率で、参照値1が値0に置換されるように、置換処理の条件パラメータを設定する。例えば、P1=0.7である場合には、2/7の確率で、参照値1が、値0に置換されるように、置換処理の条件パラメータを設定する。尚、参照値0については、値1に置換されないように設定する。その後、S390に移行する。
【0075】
一方、S370において、確率P1が確率P0以下であると判断すると(S370でNo)、CPU11は、S385に移行し、(P0−0.5)/P0の確率で、参照値0が値1に置換されるように、置換処理の条件パラメータを設定した後、S390に移行する。尚、S385において、参照値1については、値0に置換されないように設定する。
【0076】
また、S390に移行すると、CPU11は、参照回数mをゼロにリセットし、その後、S400に移行する。
S400に移行すると、CPU11は、直前のS310の処理により得られた参照値を、置換処理し、予め設定された条件パラメータに応じた確率で、参照値1を0に置換、又は、参照値0を1に置換する。その後、S410に移行する。これにより、置換処理後の参照値においては、値が1である確率、及び、値が0である確率が、夫々0.5となる。尚、シード生成処理を実行した直後では、S380又はS385の処理が実行されていないため、この状態では、S400で置換処理を実質実行せず、S410に移行する。
【0077】
また、S410に移行すると、CPU11は、置換処理後の参照値を、乱数として、RAM15に用意されたシード生成領域に書き込み、この参照値を一時記憶する。そして、S410での処理を終えると、CPU11は、当該乱数補正処理を終了し、S170に移行する。
【0078】
以上、変形例について説明したが、変形例によれば、乱数が一様に生成されない場合に、参照値を、必要に応じ置換して、見かけ上、乱数が一様に生成されるようにする。従って、この変形例によれば、一層、好適にシードを生成することができる。
【図面の簡単な説明】
【0079】
【図1】通信システム1の構成を表すブロック図である。
【図2】通信インタフェース25の処理動作を示した説明図である。
【図3】CPU11が実行するシード生成処理を表すフローチャートである。
【図4】CPU11が実行する乱数補正処理を表すフローチャートである。
【符号の説明】
【0080】
1…通信システム、3…通信装置、5…パーソナルコンピュータ、10…ディジタル複合機、11…CPU、13…ROM、15…RAM、17…NVRAM、19…印刷部、21…読取部、23…表示操作部、25…通信インタフェース、CLK…システムクロック、NT…ネットワーク

【特許請求の範囲】
【請求項1】
ネットワークに接続される通信装置であって、
前記ネットワーク上の他装置から送信されたデータを、前記ネットワークを介して受信する受信手段と、
前記受信手段によるデータの受信時刻を検出する受信時刻検出手段と、
前記受信手段が受信したデータの個数を計測する受信データ数計測手段と、
前記受信データ数計測手段の計測結果に基づき、乱数の生成に用いる前記受信手段の受信データを決定する決定手段と、
前記決定手段により決定された受信データについて、前記受信時刻検出手段が検出した受信時刻に対応する値を、乱数として出力する乱数出力手段と、
を備えることを特徴とする通信装置。
【請求項2】
前記決定手段は、前記受信手段が受信したデータの個数が、予め設定された閾値に到達したときの前記受信手段の受信データを、前記乱数の生成に用いる受信データに決定する構成にされていることを特徴とする請求項1記載の通信装置。
【請求項3】
前記閾値として、前記ネットワークのトラフィックに応じた値を設定する閾値設定手段
を備えることを特徴とする請求項2記載の通信装置。
【請求項4】
乱数の生成間隔として、前記受信時刻検出手段が検出可能な受信時刻の最小単位よりも大きい値を、記憶する記憶手段と、
現在設定されている前記閾値、に対応する個数のデータの受信に要する時間を計測する受信時間計測手段と、
前記受信時間計測手段が計測した前記データの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出手段と、
前記単位時間個数算出手段により算出された前記単位時間当たりに受信可能なデータの個数から、前記記憶手段が記憶する前記生成間隔に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出手段と、
を備え、
前記閾値設定手段は、前記受信可能個数算出手段により算出された個数を、新たな閾値として設定することを特徴とする請求項3記載の通信装置。
【請求項5】
前記受信手段は、前記ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされ、
前記受信時刻検出手段は、自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの受信時刻を検出する構成にされ、
前記受信データ数計測手段は、自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの個数を計測する構成にされていることを特徴とする請求項1〜請求項4のいずれかに記載の通信装置。
【請求項6】
ネットワークに接続され、前記ネットワーク上の他装置から送信されたデータを、前記ネットワークを介して受信する受信手段を備えた通信装置のコンピュータに、
前記受信手段が受信したデータの受信時刻を検出する受信時刻検出機能と、
前記受信手段が受信したデータの個数を計測する受信データ数計測機能と、
前記受信データ数計測機能により得られた計測結果に基づき、乱数の生成に用いる前記受信手段の受信データを決定する決定機能と、
前記決定機能により決定された受信データについて、前記受信時刻検出機能により検出された受信時刻に対応する値を、乱数として出力する乱数出力機能と、
を実現させるためのプログラム。
【請求項7】
前記受信手段が受信したデータの個数が、予め設定された閾値に到達したときの前記受信手段の受信データを、前記乱数の生成に用いる受信データに決定する機能
を、前記決定機能としてコンピュータに実現させるための請求項6記載のプログラム。
【請求項8】
前記閾値として、前記ネットワークのトラフィックに応じた値を設定する機能
を、更にコンピュータに実現させるための請求項7記載のプログラム。
【請求項9】
コンピュータに、
現在設定されている前記閾値、に対応する個数のデータの受信に要する時間を計測する受信時間計測機能と、
前記受信時間計測機能により計測された前記データの受信に要した時間に基づき、単位時間当たりに受信可能なデータの個数を算出する単位時間個数算出機能と、
前記単位時間個数算出機能により算出された前記単位時間当たりに受信可能なデータの個数から、前記受信時刻検出機能により検出可能な受信時刻の最小単位よりも大きい値として予め定められた乱数の生成間隔、に対応する時間内に受信可能なデータの個数を算出する受信可能個数算出機能と、
を実現させ、更に、
前記閾値を、前記受信可能個数算出機能にて算出された個数に、更新する機能
を、前記閾値設定機能としてコンピュータに実現させるための請求項8記載のプログラム。
【請求項10】
前記受信手段は、前記ネットワーク上の他装置から送信されたデータを、宛先に拘らず受信した後、データの宛先を判別して、自装置宛以外のデータを破棄する構成にされ、
当該プログラムは、
自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの受信時刻を検出する機能
を、前記受信時刻検出機能としてコンピュータに実現させ、
自装置宛のデータだけでなく自装置宛以外のデータも対象として、前記受信手段が受信したデータの個数を計測する機能
を、前記受信データ数計測機能としてコンピュータに実現させるためのプログラム
であることを特徴とする請求項6〜請求項9のいずれかに記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate