[実施の形態1]
図1は、情報処理システム40の処理の概要を説明する説明図である。情報処理システム40は、ネットワークを介して接続された第1情報処理装置10と、第2情報処理装置20と、サーバ30と、制御対象機器51とを含む。第1情報処理装置10は、たとえば汎用のパソコン、スマートフォン、タブレット等の情報機器である。第1情報処理装置10は、制御対象機器51の遠隔制御用の専用リモートコントローラであっても良い。
第2情報処理装置20は、制御対象機器51に取り付けられた遠隔制御装置である。第2情報処理装置20は、ネットワークを介して取得したコマンドに基づいて、制御対象機器51を制御する。第2情報処理装置20は、制御対象機器51の状態を取得して、送信しても良い。第2情報処理装置20と組み合わせられることにより、制御対象機器51はネットワークに接続されたIoT機器になる。
制御対象機器51は、家庭用のエアコンである。制御対象機器51は、橋や信号等のインフラ設備、自動車、家電機器、および医療機器等であっても良い。第2情報処理装置20と、制御対象機器51とは有線または無線により接続されている。第2情報処理装置20は、制御対象機器51に内蔵されていてもよい。
サーバ30は、汎用のパソコンまたは大型計算機等の情報機器である。第1情報処理装置10、第2情報処理装置20およびサーバ30の構成の詳細については、後述する。
図1において、矢印は信号の流れを示す。丸で囲んだ数字は、処理の順番を示す。なお、ネットワークを構成するハブ、ルータ、および、公衆通信回線等は図示を省略する。第1情報処理装置10、第2情報処理装置20およびサーバ30間の通信は、暗号化して行われる。通信の暗号化は、様々な手法が実用化されているので説明を省略する。通信にVPN(Virtual Private Network)を使用することにより盗聴自体を困難にすることが、さらに望ましい。
第1情報処理装置10は、サーバ30に対して第1情報を要求する信号を送信する。第1情報は、第1情報処理装置10と第2情報処理装置20の間の認証に使用する文字列または符号等の情報である。サーバ30は、毎回異なる第1情報を発行して、第1情報処理装置10に送信する。
第1情報処理装置10は、第2情報処理装置20に対してサーバ30から受信した第1情報と、第2情報とを送信する。ここで、第2情報は所定のIDおよびパスワードである。IDおよびパスワードは、ユーザが都度入力しても、両方または一方が第1情報処理装置10に記憶されていても良い。第2情報処理装置20は、サーバ30に対して受信した第1情報を送信して、認証を要求する。
サーバ30は、第2情報処理装置20から受信した第1情報を、第1情報処理装置10に対して発行した第1情報と照合する。両者が一致する場合に、サーバ30は受信した第1情報が正当であると認証する。サーバ30は、第1情報の認証結果を第2情報処理装置20に通知する。
第1情報が正当である旨の回答をサーバ30から受信した場合、第2情報処理装置20は受信した第2情報の認証を行う。認証に成功した場合、第2情報処理装置20は第1情報処理装置10に接続の許可を通知する。以後、第2情報処理装置20は第1情報処理装置10からの制御コマンド等を受け付ける。受け付けた制御コマンドに基づいて、第2情報処理装置20は、たとえば冷暖房のスイッチONまたはOFF、室内温度の設定等の、制御対象機器51の制御を行う。
本実施の形態によると、第2情報処理装置20は第1情報の認証に成功した後に、第2情報であるIDおよびパスワードの認証を行う。したがって、第三者による総当り攻撃を受けた場合であっても、第1情報の認証に成功するまでは第2情報処理装置20は受信した第2情報を無視する。したがって、総当り攻撃を用いる第三者が第2情報処理装置20を不正操作することは、困難である。
所定の回数連続してIDおよびパスワードの認証に失敗した場合に、パスワードロック等により認証の受け付けを停止する、不正アクセス防止対策が採用される場合がある。認証の受け付けを停止することにより、第三者による遠隔操作を防ぐことができる。
しかしながら、第2情報処理装置20がユーザがアクセスしにくい場所に設置されている場合には、認証の受け付けを停止した後に、再度正常に稼動させる処理を行うことが難しい。本実施の形態によると、第1情報の認証が成功した後に、第2情報の認証を開始するので、総当り攻撃によるパスワードロック等の発生を防ぐことができる。
以上により、第三者による制御対象機器51の不正操作を防止することが可能な情報処理システム40を提供できる。
図2は、情報処理システム40の構成を説明する説明図である。前述のとおり、情報処理システム40は、ネットワークを介して接続された第1情報処理装置10と、第2情報処理装置20と、サーバ30と、制御対象機器51とを含む。
第1情報処理装置10と第2情報処理装置20とサーバ30とは、インターネット、公衆通信回線またはLAN(Local Area Network)等のネットワークを介して接続されている。第1情報処理装置10および第2情報処理装置20は、それぞれ複数がネットワークに接続されていても良い。
第1情報処理装置10は、リモコンCPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、通信部14、入力部15、表示部16およびバスを備える。本実施の形態の第1情報処理装置10は汎用のパーソナルコンピュータ、スマートフォン、タブレット、またはサーバマシン等の情報処理装置である。また、本実施の形態の第1情報処理装置10は、大型計算機上で動作する仮想マシンでも良い。
リモコンCPU11は、本実施の形態にかかるプログラムを実行する演算制御装置である。リモコンCPU11には、一または複数のCPUまたはマルチコアCPU等が使用される。リモコンCPU11は、バスを介して第1情報処理装置10を構成するハードウェア各部と接続されている。
主記憶装置12は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリ等の記憶装置である。主記憶装置12には、リモコンCPU11が行う処理の途中で必要な情報およびリモコンCPU11で実行中のプログラムが一時的に保存される。
補助記憶装置13は、SRAM、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置13には、リモコンCPU11に実行させるプログラム、および、プログラムの実行に必要な各種情報が保存される。
通信部14は、ネットワークとの通信を行うインターフェイスである。入力部15は、たとえばキーボードおよびマウス等である。表示部16は、たとえば液晶表示パネル等である。
サーバ30は、サーバCPU31、主記憶装置32、補助記憶装置33、通信部34、時計37およびバスを備える。本実施の形態のサーバ30は汎用のパーソナルコンピュータまたはサーバマシン等の情報処理装置である。また、本実施の形態のサーバ30は、大型計算機上で動作する仮想マシンでも良い。
サーバCPU31は、本実施の形態にかかるプログラムを実行する演算制御装置である。サーバCPU31には、一または複数のCPUまたはマルチコアCPU等が使用される。サーバCPU31は、バスを介してサーバ30を構成するハードウェア各部と接続されている。
主記憶装置32は、SRAM、DRAM、フラッシュメモリ等の記憶装置である。主記憶装置32には、サーバCPU31が行う処理の途中で必要な情報およびサーバCPU31で実行中のプログラムが一時的に保存される。
補助記憶装置33は、SRAM、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置33には、リモコンCPU11に実行させるプログラム、第1情報DB(Database)41、および、プログラムの実行に必要な各種情報が保存される。
通信部34は、ネットワークとの通信を行うインターフェイスである。時計37は、図示しないNTP(Network Time Protocol)サーバに適宜同期して、時刻を修正することが望ましい。
図3は、第2情報処理装置20の構成を説明する説明図である。第2情報処理装置20は、第2プロセッサ21、主記憶装置22、補助記憶装置23、通信部24、制御I/F(Interface)部27およびバスを備える。本実施の形態の第2情報処理装置20は、制御対象機器51に取り付けられている。第2情報処理装置20が制御対象機器51に内蔵されている場合には、第2情報処理装置20は制御対象機器51全体の制御装置を兼ねても良い。
第2情報処理装置20は、商用電源に接続されていても良いし、必要な期間稼動可能な容量の電池を搭載していても良い。第2情報処理装置20は、太陽光発電器等の発電部を有しても良い。
第2プロセッサ21は、本実施の形態にかかるプログラムを実行する演算制御装置である。第2プロセッサ21には、一または複数のCPUまたはマルチコアCPU等が使用される。第2プロセッサ21は、バスを介して第2情報処理装置20を構成するハードウェア各部と接続されている。
主記憶装置22は、SRAM、DRAM、フラッシュメモリ等の記憶装置である。主記憶装置22には、第2プロセッサ21が行う処理の途中で必要な情報および第2プロセッサ21で実行中のプログラムが一時的に保存される。
補助記憶装置23は、SRAM、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置23には、第2プロセッサ21に実行させるプログラムおよびプログラムの実行に必要な各種情報が保存される。
通信部24は、第1プロセッサ28および通信I/F部29を備える。通信I/F部29は、ネットワークとの通信を行うインターフェイスである。第1プロセッサ28は、通信I/F部29を制御するCPUである。
なお、第2プロセッサ21が第1プロセッサ28を兼ねても良い。第2プロセッサ21が第1プロセッサ28を兼ねる場合、第2プロセッサ21のハードウェアの一部分を第1プロセッサ28の動作専用に割り当てても良いし、第2プロセッサ21の処理時間の一部を第1プロセッサ28の動作に割り当てても良い。
第1プロセッサ28および第2プロセッサ21のいずれか一方または両方が、所定の処理を実行するハードウェアにより構成された、いわゆるワイヤードロジック回路により実現されても良い。第2情報処理装置20の小型化および省電力化に有利である。
制御I/F部27は、第2情報処理装置20と制御対象機器51とを接続するインターフェイスである。第2プロセッサ21は、制御I/F部27を介して制御対象機器51内のアクチュエータおよびセンサ等のデバイスを制御する。第2プロセッサ21は、制御I/F部27を介して制御対象機器51のCPUに制御信号を送信しても良い。
制御I/F部27と制御対象機器51とは、有線または無線で接続される。制御I/F部27と制御対象機器51とは、Bluetooth(登録商標)等の近距離無線通信、赤外線通信、または可視光通信等により接続されても良い。
図4は、第1情報DB41のレコードレイアウトを説明する説明図である。第1情報DB41は、サーバ30が発行した第1情報を記録するDBである。第1情報DB41は、第1情報フィールドを有する。第1情報フィールドには、第1情報が記録されている。
本実施の形態においては、第1情報は発行日時を示す文字列の後ろに、接続先の第2情報処理装置20に固有に割り当てられた第2情報処理装置IDを連結した文字列である。なお、第1情報はこの形式に限定しない。たとえば、発行日時の代わりに、サーバ30のシステム時刻の下3桁から4桁程度の数値を使用しても良い。その他、時間の経過と共に変化する任意の文字列を、発行日時を示す文字列の代わりに使用できる。発行日時を示す文字列の前に、第2情報処理装置IDを接続しても良い。
図5は、プログラムの処理の流れを説明するフローチャートである。リモコンCPU11は、接続先の第2情報処理装置20の第2情報処理装置IDを取得する(ステップS501)。リモコンCPU11は、たとえば入力部15を介してユーザにより入力された接続先を取得しても良い。リモコンCPU11は、あらかじめ補助記憶装置13に記憶された一連の命令コードに基づいて接続先の第2情報処理装置IDを取得しても良い。
リモコンCPU11は、第2情報を取得する(ステップS502)。第2情報は、ステップS501で取得した接続先に接続する際に使用する情報であり、たとえばIDおよびパスワードである。リモコンCPU11は、たとえば入力部15を介してユーザにより入力された第2情報を取得しても良い。リモコンCPU11は、あらかじめ補助記憶装置13に記憶された第2情報を取得しても良い。
リモコンCPU11は、接続処理のサブルーチンを起動する(ステップS503)。接続処理のサブルーチンは、リモコンCPU11と第2プロセッサ21とを、通信により接続するサブルーチンである。接続処理のサブルーチンの処理の流れは後述する。
リモコンCPU11は、接続処理のサブルーチンによる接続処理が成功したか否かを判定する(ステップS504)。成功したと判定した場合(ステップS504でYES)、リモコンCPU11は第2プロセッサ21との通信を行ない、第2情報処理装置20を操作するアプリケーションソフトウェア等のプログラムを実行する(ステップS505)。
ステップS505で実行するアプリケーションソフトウェアの動作により、リモコンCPU11は、第2プロセッサ21を介して制御対象機器51の制御を行う。
なお、ステップS505で実行するアプリケーションソフトウェアの機能は、制御対象機器51の制御に限定しない。たとえば、ネットワークとの通信、データ処理、その他任意の機能を有するアプリケーションソフトウェアであっても良い。
成功していないと判定した場合(ステップS504でNO)、リモコンCPU11は、エラーメッセージを出力する(ステップS506)。エラーメッセージは、表示部16に表示しても良いし、あらかじめ指定された宛先に電子メールまたはSMS(short message service)により送信しても良い。宛先は、たとえば情報処理システム40の管理者である。ステップS505またはステップS506の終了後、リモコンCPU11は処理を終了する。
図6は、接続処理のサブルーチンの処理の流れを説明するフローチャートである。接続処理のサブルーチンは、リモコンCPU11と第2プロセッサ21とを、通信により接続するサブルーチンである。
リモコンCPU11は、サーバCPU31に対して接続先の第2情報処理装置IDを送信して、第1情報を要求するコマンドを送信する(ステップS511)。サーバCPU31は、コマンドを受信する(ステップS601)。サーバCPU31は、第1情報作成のサブルーチンを起動する(ステップS602)。第1情報作成のサブルーチンは、第1情報を作成し、第1情報DB41に記録するサブルーチンである。第1情報作成のサブルーチンの処理の流れは後述する。
サーバCPU31は、リモコンCPU11に対して、作成した第1情報を送信する(ステップS603)。リモコンCPU11は、第1情報を受信する(ステップS513)。リモコンCPU11は、第2プロセッサ21に対して、接続を要求するコマンドを送信する(ステップS514)。接続を要求するコマンドには、第1情報および第2情報が含まれる。
第1プロセッサ28は、接続を要求するコマンドを受信する(ステップS701)。第1プロセッサ28は、第1情報認証のサブルーチンを起動する(ステップS702)。第1情報認証のサブルーチンは、受信した第1情報と、第1情報DB41に記録された第1情報とが一致するか否かを判定することにより、第1情報の認証を行うサブルーチンである。第1情報認証のサブルーチンの処理の流れは後述する。
第1プロセッサ28は、第1情報の認証に成功したか否かを判定する(ステップS703)。成功したと判定した場合(ステップS703でYES)、第1プロセッサ28は、第2プロセッサ21を呼び出して、ステップS701で受信した第2情報を引き渡す(ステップS704)。
第2プロセッサ21は、第2情報の認証を行う(ステップS705)。第2情報の認証は、たとえば従来から行われているIDおよびパスワードを用いた認証であるので、詳細については説明を省略する。
第2プロセッサ21は、第2情報の認証に成功したか否かを判定する(ステップS706)。成功したと判定した場合(ステップS706でYES)、第2プロセッサ21は第1プロセッサ28を介してリモコンCPU11に対して接続許可を送信する(ステップS707)。リモコンCPU11は、接続許可を受信する(ステップS516)。以上により、リモコンCPU11と第2プロセッサ21との間の接続処理が成功する。その後、リモコンCPU11は処理を終了する。
第1情報の認証に成功していない判定した場合(ステップS703でNO)、または第2情報の認証に成功していないと判定した場合(ステップS706でNO)、第1プロセッサ28は接続を許可しない旨の情報をリモコンCPU11に送信する(ステップS709)。
ステップS709の後、第1プロセッサ28は、あらかじめ指定された宛先に電子メールまたはSMSに接続を許可しなかった旨を送信しても良い。
リモコンCPU11は、接続を許可しない旨の情報を受信する(ステップS518)。その後、リモコンCPU11は処理を終了する。
ステップS518の後、リモコンCPU11は、表示部16に接続が許可されなかった旨を表示しても良い。ステップS518の後、リモコンCPU11は、あらかじめ指定された宛先に電子メールまたはSMSに接続が許可されなかった旨を送信しても良い。
第1プロセッサ28は、ステップS709を実行しなくても良い。この場合、第1プロセッサ28は応答を送信しないことにより、接続を許可しない旨をリモコンCPU11に対して伝達する。リモコンCPU11はステップS514で接続要求を送信した後、所定の時間第2プロセッサ21からの応答を受信しない場合に、接続を許可しない旨の情報を受信したと判定して、処理を終了する。
図7は、第1情報作成のサブルーチンの処理の流れを説明するフローチャートである。第1情報作成のサブルーチンは、第1情報を作成し、第1情報DB41に記録するサブルーチンである。
サーバCPU31は、時計37から現在時刻を取得する(ステップS611)。サーバCPU31は、リモコンCPU11から受信したコマンドから、接続先の第2情報処理装置20の第2情報処理装置IDを抽出する(ステップS612)。サーバCPU31は、ステップS611で取得した現在時刻を示す文字列と、ステップS612で取得した第2情報処理装置IDとを連結して、第1情報を作成する(ステップS613)。
サーバCPU31は、第1情報DB41に新しいレコードを作成して、ステップS613で作成した第1情報を記録する(ステップS614)。その後、サーバCPU31は処理を終了する。
図8は、第1情報認証のサブルーチンの処理の流れを説明するフローチャートである。第1情報認証のサブルーチンは、受信した第1情報と、第1情報DB41に記録された第1情報とが一致するか否かを判定することにより、第1情報の認証を行うサブルーチンである。
第1プロセッサ28は、リモコンCPU11から受信したコマンドに含まれる第1情報をサーバCPU31に送信する(ステップS711)。サーバCPU31は、第1情報を受信する(ステップS621)。サーバCPU31は、受信した第1情報をキーとして第1情報DB41を検索して、第1情報DB41中に受信した第1情報と同一の第1情報が記録されたレコードがあるか否かを判定する(ステップS622)。
同一の第1情報が記録されたレコードがあると判定した場合(ステップS622でYES)、サーバCPU31は、認証結果は「成功」であると記録する(ステップS623)。サーバCPU31は、ステップS622で抽出したレコードを削除する(ステップS624)。
同一の第1情報が記録されたレコードがないと判定した場合(ステップS622でNO)、サーバCPU31は、認証結果は「失敗」であると記録する(ステップS625)。
ステップS624またはステップS625の終了後、サーバCPU31は第1プロセッサ28に対して認証結果を送信する(ステップS626)。第1プロセッサ28は、認証結果を受信する(ステップS713)。その後、第1プロセッサ28は処理を終了する。
本実施の形態によると、第三者による総当り攻撃を受けた場合であっても、第1情報の認証に成功するまでは第2情報処理装置20は受信した第2情報を無視する。したがって、第三者による不正操作を防止することが可能な情報処理装置等を提供することができる。
本実施の形態によると、第1情報の認証が成功した後に、第2情報の認証を開始するので、総当り攻撃によるパスワードロック等の発生を防ぐことができる。本実施の形態によると、IDおよびパスワード等の第2情報の認証を行なって動作する従来の制御アプリケーションソフト等を変更せずに、情報処理システム40のセキュリティを高めることができる。
サーバCPU31は、ステップS624で第1情報DB41に記録されたレコードを削除するので、第1情報の使用は1回限りに制限される。そのため、先に第1情報を使用していれば、盗聴等により盗まれた第1情報が不正に使用されることを防止できる。また、盗まれた第1情報が先に使用されてしまった場合には、第1情報の認証が行われないため、第1情報処理装置10のユーザは異常に気付くことができる。
現在時刻を用いて第1情報を作成することにより、サーバCPU31は毎回異なる第1情報を作成できる。そのため、第三者が第1情報を推定して不正アクセスを行うことを防止できる。
第1情報の認証を行う第1プロセッサ28と、第2情報の認証を行う第2プロセッサ21とを、ハードウェア的に分離することにより、コンピュータウイルス等を用いた不正アクセスを困難にすることができる。
第1情報処理装置10と第2情報処理装置20との間の接続が成功しない場合に、電子メールまたはSMS等により情報を発信することにより、情報処理システム40の管理者は第三者による不正操作が試みられた可能性があることを知ることができる。情報を受けた管理者が警戒して、早期に対策を行うことにより、第3者による不正アクセスの成功を防止できる。
[実施の形態2]
本実施の形態は、第1情報に有効期限を設定する情報処理システム40に関する。実施の形態1と共通する部分については、説明を省略する。
図9は、実施の形態2の第1情報DB41のレコードレイアウトを説明する説明図である。本実施の形態の第1情報DB41は、第1情報と有効期限とを関連づけて記録するDBである。第1情報DB41は、第1情報フィールドおよび有効期限フィールドを有する。
第1情報フィールドには、第1情報が記録されている。有効期限フィールドには、第1情報の有効期限が記録されている。有効期限は、第1情報の発行から所定時間経過後の時間である。所定時間は、通信先の第2情報処理装置IDによって異なるように設定されていても良い。
図10は、実施の形態2の第1情報認証のサブルーチンの処理の流れを説明するフローチャートである。図10に示すサブルーチンは、図8を使用して説明したサブルーチンの代わりに使用するサブルーチンである。
第2プロセッサ21は、リモコンCPU11から受信した第1情報をサーバCPU31に送信する(ステップS721)。サーバCPU31は、第1情報を受信する(ステップS631)。サーバCPU31は、受信した第1情報をキーとして第1情報DB41を検索して、第1情報DB41中に受信した第1情報と同一の第1情報が記録されたレコードがあるか否かを判定する(ステップS632)。
同一の第1情報が記録されたレコードがあると判定した場合(ステップS632でYES)、サーバCPU31は時計37から現在時刻を取得する(ステップS633)。サーバCPU31は、ステップS632で抽出したレコードの有効期限フィールドに記録された有効期限とステップS633で取得した現在時刻とを比較して、第1情報が有効期限内であるか否かを判定する(ステップS634)。
有効期限内であると判定した場合(ステップS634でYES)、サーバCPU31は、認証結果は「成功」であると記録する(ステップS635)。サーバCPU31は、ステップS632で抽出したレコードを削除する(ステップS636)。
有効期限外であると判定した場合(ステップS634でNO)、サーバCPU31は、ステップS632で抽出したレコードを削除する(ステップS641)。ステップS641の終了後、または、同一の第1情報が記録されたレコードがないと判定した場合(ステップS632でNO)、サーバCPU31は、認証結果は「失敗」であると記録する(ステップS642)。
ステップS636またはステップS642の終了後、サーバCPU31は第2プロセッサ21に対して、認証結果を送信する(ステップS645)。
本実施の形態によると、サーバCPU31が発行した後、使用されずに放置された第1情報が、第三者により不正に使用されるセキュリティリスクを低減する情報処理システム40を提供できる。
[実施の形態3]
本実施の形態は、使用されていない第1情報を第1情報DB41から削除する情報処理システム40に関する。実施の形態2と共通する部分については、説明を省略する。
図11は、実施の形態3のサーバCPU31が実行するプログラムの処理の流れを説明するフローチャートである。図11に示すプログラムは、サーバCPU31が負荷の低い時間等に適宜実行するプログラムである。
サーバCPU31は、第1情報DB41から1個のレコードを取得する(ステップS651)。サーバCPU31は時計37から現在時刻を取得する(ステップS652)。サーバCPU31は、ステップS651で抽出したレコードの有効期限フィールドに記録された有効期限とステップS652で取得した現在時刻とを比較して、第1情報の有効期限が切れているか否かを判定する(ステップS653)。
有効期限が切れていると判定した場合(ステップS653でYES)、サーバCPU31は、ステップS651で取得したレコードを第1情報DB41から削除する(ステップS654)。ステップS654の終了後、または、有効期限が切れていないと判定した場合(ステップS653でNO)、サーバCPU31は、処理を終了するか否かを判定する(ステップS655)。
たとえば、サーバCPU31の負荷が高くなった場合、所定時間内に第1情報DB41に記録されたすべてのレコードの処理を終了した場合、または、ユーザによる終了の処理を受け付けた場合等に、サーバCPU31は処理を終了すると判定する。
処理を終了しないと判定した場合(ステップS655でNO)、サーバCPU31はステップS651に戻る。処理を終了すると判定した場合(ステップS655でYES)、サーバCPU31は処理を終了する。
本実施の形態によると、たとえば多くの第1情報処理装置10および第2情報処理装置20がネットワークに接続された情報処理システム40において、有効期限が切れた第1情報により第1情報DB41の容量が大きくなることを防ぐことができる。そのため、第1情報の認証を速やかに行える情報処理システム40を提供できる。
なお、図11を使用して説明したプログラムを頻繁に実行する場合には、有効期限が切れた第1情報が第1情報DB41に含まれる可能性が低いので、図8を使用して説明したサブルーチンを使用して第1情報の認証を行っても良い。
[実施の形態4]
本実施の形態は、乱数を使用して第1情報を作成する情報処理システム40に関する。実施の形態1と共通する部分については、説明を省略する。
図12は、実施の形態4の第1情報DB41のレコードレイアウトを説明する説明図である。第1情報DB41は、サーバ30が発行した第1情報を記録するDBである。第1情報DB41は、第1情報フィールドを有する。第1情報フィールドには、第1情報が記録されている。
本実施の形態においては、第1情報は4桁の16進数で示す乱数の後ろに、接続先の第2情報処理装置20に固有に割り当てられた第2情報処理装置IDを連結した文字列である。なお、第1情報はこの形式に限定しない。乱数の桁数は任意である。乱数の前に、第2情報処理装置IDを接続しても良い。
乱数は、ランダムな物理現象を元に乱数を生成するハードウェア乱数生成器で生成することが望ましい。第三者による推測が困難な擬似乱数を、乱数に使用しても良い。
図13は、実施の形態4の第1情報作成のサブルーチンの処理の流れを説明するフローチャートである。サーバCPU31は、所定の桁数の乱数を取得する(ステップS661)。サーバCPU31は、リモコンCPU11から受信したコマンドから、接続先の第2情報処理装置20の第2情報処理装置IDを抽出する(ステップS662)。サーバCPU31は、ステップS611で取得した現在時刻を示す文字列と、ステップS612で取得した第2情報処理装置IDとを連結して、第1情報を作成する(ステップS663)。
サーバCPU31は、第1情報DB41に新しいレコードを作成して、ステップS663で作成した第1情報を記録する(ステップS664)。その後、サーバCPU31は処理を終了する。
本実施の形態によると、第三者が第1情報を推定することが困難な情報処理システム40を提供できる。
[実施の形態5]
本実施の形態は、第1情報DB41に第1情報を要求した第1情報処理装置10に固有に付与された第1情報装置IDも記録する情報処理システム40に関する。実施の形態1と共通する部分については、説明を省略する。
図14は、実施の形態5の第1情報DB41のレコードレイアウトを説明する説明図である。本実施の形態の第1情報DB41は、第1情報と、その第1情報の送信先である第1情報処理装置10の第1情報処理装置IDとを関連づけて記録するDBである。第1情報DB41は、第1情報フィールドおよび第1情報処理装置IDフィールドを有する。
図15は、実施の形態5の第1情報作成のサブルーチンの処理の流れを説明するフローチャートである。図15に示すサブルーチンは、図7を使用して説明したサブルーチンの代わりに使用するサブルーチンである。なお、本実施の形態においては、図6を使用して説明したステップS601においてサーバCPU31が受信するコマンドは、接続先である第2情報処理装置20の第2情報処理装置ID、および、第1情報を要求している第1情報処理装置10の第1情報処理装置IDを含む。
なお、本実施の形態においては、たとえばIP(Internet Protocol)アドレスまたはMAC(Media Access Control)アドレス等の、通信を行うために必要なヘッダに含まれる情報を第1情報処理装置IDに使用することが望ましい。コマンドは第1情報処理装置IDを含まず、受信側がヘッダから第1情報処理装置IDを抽出することが、さらに望ましい。
サーバCPU31は、時計37から現在時刻を取得する(ステップS671)。サーバCPU31は、リモコンCPU11から受信したコマンドに含まれる、第2情報処理装置IDを抽出する(ステップS672)。サーバCPU31は、ステップS671で取得した現在時刻を示す文字列と、ステップS612で取得した第2情報処理装置IDとを連結して、第1情報を作成する(ステップS673)。
サーバCPU31は、リモコンCPU11から受信したコマンドに含まれる、第1情報処理装置IDを抽出する(ステップS674)。サーバCPU31は、第1情報DB41に新しいレコードを作成して、ステップS673で作成した第1情報およびステップS674で抽出した第1情報IDをそれぞれのフィールドに記録する(ステップS675)。その後、サーバCPU31は処理を終了する。
図16は、実施の形態5の第1情報認証のサブルーチンの処理の流れを説明するフローチャートである。図16に示すサブルーチンは、図8を使用して説明したサブルーチンの代わりに使用するサブルーチンである。なお、本実施の形態においては、図6を使用して説明したステップS701においてサーバCPU31が受信するコマンドは、第1情報、第2情報および接続を要求している第1情報処理装置10の第1情報処理装置IDを含む。
第2プロセッサ21は、リモコンCPU11から受信したコマンドに含まれる第1情報をサーバCPU31に送信する(ステップS721)。サーバCPU31は、第1情報を受信する(ステップS681)。サーバCPU31は、受信した第1情報をキーとして第1情報DB41を検索して、第1情報DB41中に受信した第1情報と同一の第1情報が記録されたレコードがあるか否かを判定する(ステップS682)。
同一の第1情報が記録されたレコードがあると判定した場合(ステップS682でYES)、サーバCPU31は、ステップS682で抽出したレコードの第1情報処理装置IDフィールドに記録された第1情報処理装置IDと、リモコンCPU11から受信したコマンドに含まれる第1情報処理装置IDとが一致するか否かを判定する(ステップS683)。
一致すると判定した場合(ステップS683でYES)、サーバCPU31は、認証結果は「成功」であると記録する(ステップS684)。サーバCPU31は、ステップS682で抽出したレコードを削除する(ステップS685)。
一致しないと判定した場合(ステップS683でNO)、サーバCPU31は、ステップS682で抽出したレコードを削除する(ステップS686)。ステップS686の終了後、または、同一の第1情報が記録されたレコードがないと判定した場合(ステップS682でNO)、サーバCPU31は、認証結果は「失敗」であると記録する(ステップS687)。
ステップS685またはステップS687の終了後、サーバCPU31は第2プロセッサ21に対して認証結果を送信する(ステップS689)。第2プロセッサ21は、認証結果を受信する(ステップS723)。その後、第2プロセッサ21は処理を終了する。
本実施の形態によると、第1情報を取得した第1情報処理装置10と異なる情報処理装置が、第1情報処理装置10になりすますことを防止することができる。IPアドレスまたはMACアドレス等の、通信を行うために必要なヘッダに含まれる情報を第1情報処理装置IDに使用することにより、さらに確実になりすましを防止することが可能である。
[実施の形態6]
図17は、実施の形態6の情報処理システム40の機能ブロック図である。情報処理システム40は、ネットワークを介して接続された第1情報処理装置10と、第2情報処理装置20と、サーバ30とを備える。
第1情報処理装置10は、第1受信部71と、第1送信部72とを備える。第2情報処理装置20は、第2受信部75と、第2送信部76と、第4受信部77と、認証部78と、受付部79とを備える。サーバ30は、記録部81と、第3受信部82と、判定部83と、第3送信部84とを備える。
第1受信部71は、サーバ30から第1情報を受信する。第1送信部72は、第1受信部71が受信した第1情報と所定の第2情報とを第2情報処理装置20に送信する。第2受信部75は、第1送信部72が送信した第1情報と第2情報とを受信する。第2送信部76は、第2受信部75が受信した第1情報をサーバ30に送信する。
記録部81は、第1情報処理装置10に送信した第1情報を記録する。第3受信部82は、第2送信部76が送信した第1情報を受信する。判定部83は、第3受信部82が受信した第1情報と、記録部81が記録した第1情報とが一致するか否かを判定する。第3送信部84は、判定部83が判定した判定結果を第2情報処理装置20に送信する。
第4受信部77は、第3送信部84が送信した判定結果を受信する。認証部78は、第4受信部77が受信した判定結果が、二つの第1情報が一致することを示す場合に、第2情報の認証処理を行う。受付部79は、認証部78が認証処理に成功した場合に、第1情報処理装置10から制御コマンドを受け付ける。
[実施の形態7]
本実施の形態は、汎用のコンピュータとプログラム97とを組み合わせて動作させることにより、本実施の形態の情報処理システム40を実現する形態に関する。図18は、実施の形態7の情報処理システム40の構成を示す説明図である。なお、実施の形態1と共通する部分の説明は省略する。
本実施の形態の情報処理システム40は、ネットワークを介して接続されたコンピュータ90と、サーバ30と、第2情報処理装置20と、制御対象機器51とを含む。サーバ30、第2情報処理装置20および制御対象機器51の構成は、実施の形態1と同一である。
コンピュータ90は、リモコンCPU11、主記憶装置12、補助記憶装置13、通信部14、入力部15、表示部16、読取部92およびバスを備える。コンピュータ90は、汎用のパーソナルコンピュータ、タブレット、スマートフォンまたは大型計算機等の情報機器等である。また、本実施の形態のコンピュータ90は、大型計算機上で動作する仮想マシンでも良い。
プログラム97は、可搬型記録媒体96に記録されている。リモコンCPU11は、読取部92を介してプログラム97を読み込み、補助記憶装置13に保存する。またリモコンCPU11は、コンピュータ90に実装されたフラッシュメモリ等の半導体メモリ98に記憶されたプログラム97を読出しても良い。さらに、リモコンCPU11は、通信部14および図示しないネットワークを介して接続される図示しない他のサーバコンピュータからプログラム97をダウンロードして補助記憶装置13に保存しても良い。
プログラム97は、コンピュータ90の制御プログラムとしてインストールされ、主記憶装置12にロードして実行される。これにより、コンピュータ90は上述した第1情報処理装置10として機能する。
リモコンCPU11はネットワークを介してプログラム97を第2プロセッサ21およびサーバCPU31に送信しても良い。
第2プロセッサ21は、ネットワークを介してプログラム97のうち第2情報処理装置20で実行する部分を取得し、補助記憶装置23に保存する。プログラム97は、第2情報処理装置20の制御プログラムとしてインストールされ、主記憶装置22にロードして実行される。
サーバCPU31は、ネットワークを介してプログラム97のうちサーバ30で実行する部分を取得し、補助記憶装置33に保存する。プログラム97は、サーバ30の制御プログラムとしてインストールされ、主記憶装置32にロードして実行される。
以上により、コンピュータ90と、第2情報処理装置20と、サーバ30とは、上述した情報処理システム40として機能する。
各実施例で記載されている技術的特徴(構成要件)はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。