―第1の実施の形態―
以下、図1〜図16を参照して、本発明にかかる通信設定システムの第1の実施の形態を説明する。
(構成)
図1は通信設定システムの構成図である。通信設定システム1は、制御装置10と、制御装置1002と、制御装置1003と、管理装置20とを含んで構成される。制御装置10、制御装置1002、および制御装置1003の構成は同一であり、以下では代表して制御装置10の構成を説明する。制御装置10、制御装置1002、制御装置1003、および管理装置20はネットワーク30を介して接続される。本実施の形態では、ネットワーク30における通信はTCP/IPに準拠するとして説明するが、他の通信規格に準拠してもよい。
制御装置10は、ネットワーク30と通信を行う制御通信部11、制御入力部12と、制御CPU13、制御メモリ14、記憶媒体16を読み込む読取装置15、および制御記憶部17を備える。制御入力部12は、たとえばマウス、キーボード、押しボタン、DIPスイッチなどである。制御CPU13は、不図示のROMまたは制御記憶部17に格納されたプログラムを制御メモリ14に展開して実行することで後述する複数の機能を実現する。制御メモリ14は、たとえば揮発性メモリであり、制御CPU13がプログラムを実行するために使用される。制御記憶部17はたとえばフラッシュメモリなどの不揮発性の記憶装置であり、制御CPU13が実行するプログラムおよび後述する情報が格納される。制御記憶部17に格納されるプログラムは、ネットワーク30を経由して読み込まれてもよいし、読取装置15から読み込まれてもよい。
管理装置20は、ネットワーク30と通信を行う管理通信部21、管理入力部22と、管理CPU23、管理メモリ24、記憶媒体26を読み込む読取装置25、および管理記憶部27を備える。管理入力部22は、たとえばマウス、キーボード、押しボタン、DIPスイッチなどである。管理CPU23は、不図示のROMまたは管理記憶部27に格納されたプログラムを管理メモリ24に展開して実行することで後述する複数の機能を実現する。管理メモリ24は、たとえば揮発性メモリであり、管理CPU23がプログラムを実行するために使用される。管理記憶部27はたとえばフラッシュメモリなどの不揮発性の記憶装置であり、管理CPU23が実行するプログラムおよび後述する情報が格納される。管理記憶部27に格納されるプログラムは、ネットワーク30を経由して読み込まれてもよいし、読取装置25から読み込まれてもよい。
図2は制御装置10が備える機能を機能ブロックとして表現した機能ブロック図である。ただし制御記憶部17は機能ブロックではなく図1に示したとおりハードウエアである。制御装置10はその機能として、ネットワーク30と通信を行うパケット通信部101と、制御装置10に入力される通信パケットを取得するパケット取得部102と、ネットワーク30に接続される装置を認識する接続状況識別部103と、ネットワーク30に接続される管理装置20を識別する管理装置識別部104と、鍵生成および通信設定を行う制御装置設定スクリプト実行部105と、管理装置20との暗号通信に使用する鍵を生成する秘密情報生成部106と、管理装置20と通信するための設定を行う通信設定部107と、管理装置20が鍵生成と通信設定を行うスクリプトを生成する管理装置設定スクリプト生成部108と、制御装置10の動作モードの管理を行う動作モード管理部109と、後述する秘密情報格納部115に格納された秘密情報を削除する秘密情報削除部119と、後述する通信設定格納部116に格納された通信設定を削除する通信設定削除部120とを備える。なお以下では「鍵」を「秘密情報」とも呼ぶ。
なお接続状況識別部103は、通常動作モードにおいて後述する接続状況識別パケットおよび後述する管理装置識別パケットのいずれを受信した場合でも、後述するレスポンスパケットを返信する。動作モード管理部109は、制御装置10が工場出荷後に初めて通電されると制御装置10の動作モードを初期設定モードに設定する。動作モード管理部109は、それ以後は制御入力部12からの入力に基づき制御装置10の動作モードを管理する。動作モード管理部109は、少なくとも初期設定モードと通常動作モードの2つの動作モードを切り替え可能であり、他の動作モードにさらに切り替え可能であってもよい。
管理装置設定スクリプトは実行環境に依存しない動作指令であり、ハードウエア構成やソフトウエア構成が異なっていても同一の管理装置設定スクリプトが実行可能である。たとえばCPUのアーキテクチャやOSが異なっていてもよい。後述するように管理装置20は受信した管理装置設定スクリプトをそのまま実行するのではなく、たとえば通信に関する設定の記述方式や鍵の保存場所など管理装置20の環境情報にあわせて書き換えたうえで実行する。さらに書き換えられた管理装置設定スクリプトは、インタプリタにより直接実行されてもよいし、コンパイラによって実行可能ファイルにコンパイルされてから実行されてもよい。
図3は、制御記憶部17の構成を示す図である。制御記憶部17は、パケット取得部102が取得した通信パケットを格納する通信パケット格納部110と、接続状況識別部103が取得した接続状況情報を格納する接続状況格納部111と、管理装置識別部104で取得した管理装置識別情報を格納する管理装置識別情報格納部112と、制御装置10の識別情報を格納する制御装置識別情報格納部113と、制御装置10の鍵生成と通信設定を行うスクリプトを格納する制御装置設定スクリプト格納部114と、管理装置20と暗号通信を行うための鍵を格納する秘密情報格納部115と、管理装置20と通信を行うための設定情報を格納する通信設定格納部116と、管理装置設定スクリプト生成部108で生成した管理装置で鍵生成と通信設定を行うスクリプトを格納する管理装置設定スクリプト格納部117と、管理装置20と暗号通信を行うための鍵を生成する方法を格納する秘密情報生成方法格納部118と、制御装置の101の通信設定と鍵を削除するスクリプトを格納する制御装置設定削除スクリプト格納部121と、管理装置20の通信設定と鍵を削除する管理装置設定削除スクリプト格納部122とを含む。
接続状況格納部111に格納される接続状況情報とは、たとえばネットワーク30に接続される機器のIPアドレスの一覧である。管理装置識別情報格納部112に格納される管理装置識別情報は、たとえば管理装置20のIPアドレス、MACアドレス、シリアル番号やバージョン情報などである。ただし図3では、上述したそれぞれの格納部について相違する名称、すなわち「格納部」を除いた名称を記載している。また図3において、それぞれの格納部について、後述する処理を実行する前に情報が格納されるか否かを右欄に記載している。すなわち、制御装置識別情報格納部113、制御装置設定スクリプト格納部114、管理装置設定スクリプト格納部117、秘密情報生成方法格納部118、制御装置設定削除スクリプト格納部121、および管理装置設定削除スクリプト格納部122には後述する処理が実行される前から情報が格納されている。
ただし管理装置設定スクリプト格納部117および管理装置設定削除スクリプト格納部122に当初から格納されるスクリプトは完全なものではなく、いくつかの情報が欠落している、いわば雛形である。また制御装置設定スクリプト格納部114および制御装置設定削除スクリプト格納部121に格納されるスクリプトは、制御装置10において実行されるので、例外的に実行可能ファイルであってもよい。
図4は管理装置20が備える機能を機能ブロックとして表現した機能ブロック図である。ただし図4に示す管理記憶部27は機能ブロックではなく図1に示したとおりハードウエアである。管理装置20はその機能として、ネットワーク30と通信を行うパケット通信部201と、IPアドレスが設定されていない制御装置にIPアドレスを設定するIP設定部202と、制御装置が送信する接続状況識別パケットに応答する管理応答部203と、管理装置設定スクリプトを実行する管理装置設定部204と、管理装置設定削除スクリプトを実行する管理装置削除部205とを備える。
IP設定部202は、ネットワーク30に接続されておりIPアドレスが設定されていない制御装置を検出し、不図示のMACアドレス−IPアドレス対応表に基づき、制御装置のMACアドレスに対応するIPアドレスを設定する。
図5は、接続状況識別パケット、管理装置識別パケット、レスポンスパケット、および設定確認パケットの構成を示す図である。これらのパケットは構成が共通するのでここでは共通パケットA901としてその構成を説明する。以下に説明する共通パケットA901の構成は、ネットワーク30に送信される場合、および制御装置10の通信パケット格納部110に格納される場合に共通する。
共通パケットA901は、パケットの送信元装置や受信先装置を示す装置識別情報A902と、パケットのサイズを示すサイズA903と、パケットのペイロードであるパケットデータA904とから構成される。パケットデータA904には少なくとも、共通パケットA901が接続状況識別パケット、管理装置識別パケット、レスポンスパケット、および設定確認パケットのいずれであるかを示す情報が格納される。なお共通パケットA901の構成要素は上記に限定されるものではなく、少なくとも上記の構成が含まれていればよい。また共通パケットA901の構成要素の順序は上記に限定されない。
図6は、制御装置10の通信設定格納部116に格納される通信設定の構成を示す図である。
通信設定A1001は装置識別情報A1002と通信方式A1003とから構成される。ここで装置識別情報A1002として、IPアドレス、MACアドレスやポート番号などを用いる方法があるが、これに限定されるものではない。また通信方式A1004として、通信プロトコル、通信データの暗号化に用いる暗号アルゴリズムや暗号アルゴリズムの利用モードや鍵、通信データの改ざん検知に用いる暗号アルゴリズムや暗号アルゴリズムの利用モードや鍵、鍵の更新方法や更新頻度などが含まれることを想定しているが、これに限定されるものではない。ここで、通信設定A1001の構成要素は上記に限定されるものではなく、少なくとも上記の構成が含まれていればよい。また、通信設定A1001の構成要素の順序は上記に限定されるものではない。
図7は、制御装置10の秘密情報格納部115に格納される、秘密情報の構成を示す図である。秘密情報A1101は装置識別情報A1102と秘密データA1103とから構成される。ここで装置識別情報A1102として、IPアドレス、MACアドレスやポート番号などを用いる方法があるが、これに限定されるものではない。また、秘密データとして、バイナリデータやASCII形式などで保存することを想定しているが、これに限定されるものではない。ここで、秘密情報A1101の構成要素は上記に限定されるものではなく、少なくとも上記の構成が含まれていればよい。また、秘密情報A1101の構成要素の順序は上記に限定されるものではない。
(初期設定の動作)
以下、図8〜図13を参照して通信設定システム1における制御装置10の初期設定の動作を説明する。まず図8を参照して初期設定の概要を説明し、次に図9〜図13を参照して詳細を説明する。以下に説明する処理フローは、制御装置10や管理装置20のそれぞれにおいて、記憶装置に格納されたプログラムがメモリに読み込まれCPUにより実行されることにより実現される。
図8は制御装置10と管理装置20との初期設定の概要、すなわち暗号通信を行うための鍵を生成し通信設定を行う処理フローを示す図である。はじめに制御装置10は、動作モードを初期設定モードに設定する(ステップS301)。なお制御装置10において、S302以降の処理が初期設定モードに設定されないまま実行されようとする場合には、以降の処理を中止してもよい。またここで、制御装置10の動作モードを初期設定モードに設定できない場合も、以降の処理を中止してもよい。ここで制御装置1002は、通常動作モードに設定されている。
次に制御装置10は、ネットワーク30に接続された管理装置20を識別する(S302)。本処理の詳細は次の図9を参照して説明する。次に制御装置10および管理装置20は鍵の生成及び通信設定を行う(S303)。なお以下では、制御装置10が鍵生成と通信設定を行うとして説明するが、同一のネットワーク30に接続された他の制御装置、たとえば制御装置1002が同様の処理を行ってもよい。
図9は、図8のS302、すなわち制御装置10、制御装置1002、および管理装置20が行う装置の識別処理の詳細を示す図である。まず制御装置10が接続状況識別パケットを生成する(S401)。接続状況識別パケットにはたとえば、本パケットを送信する制御装置10のIPアドレスやMACアドレスやポート番号などが含まれることを想定するが、これに限定されない。次に制御装置10は、生成した接続状況識別パケットを制御装置1002および管理装置20に送信する。
この接続状況識別パケットを受信した制御装置1002および管理装置20はレスポンスパケットを生成し(S402、S403)、これを制御装置10に送信する。レスポンスパケットには送信装置のIPアドレスやMACアドレスやポート番号などが含まれることを想定しているが、これに限定されるものではない。次に、生成したレスポンスパケットを制御装置10へ送信する(A402)。
レスポンスパケットを受信した制御装置10は、受信したレスポンスパケットを用いてネットワーク30に接続された装置の接続状況を識別し、接続状況を接続状況格納部111に格納する(S404)。接続状況とはたとえば、ネットワーク30に接続される機器のIPアドレスのリストである。次に制御装置10は管理装置識別パケットを生成する(S405)。ここで管理装置識別パケットには、送信装置のIPアドレス、MACアドレス、ポート番号やシリアル番号などが含まれることを想定しているが、これに限定されるものではない。次に制御装置10は、生成した管理装置識別パケットを制御装置1002と管理装置20に送信する(A403)。
管理装置識別パケットを受信した制御装置1002は、レスポンスパケットを生成(S406)して制御装置10に送信する(A404)。なお管理装置20は、管理装置識別パケットを受信しても特段の処理を行わない。
制御装置10は、管理装置識別パケットを送信してから一定時間が経過したかどうか判断する(S407)。制御装置10は一定時間が経過していないと判断する場合には、一定時間が経過するまで状態する。制御装置10は、一定時間が経過したと判定する場合には、管理装置識別(S408)を行う。S408における管理装置識別では、管理装置識別パケットの送信から一定時間以内にレスポンスパケットを送信しなかった装置が管理装置20であると判断される。換言すると制御装置10は、接続状況格納部111に格納された接続状況、すなわち識別子の一覧から、管理装置識別パケットの送信から一定時間以内にレスポンスパケットを送信した装置の識別子を削除し、残った装置を管理装置20であると判断する。管理装置20は、たとえばIPアドレスおよびMACアドレスにより特定される。
図10は、図8のS303、すなわち制御装置10、制御装置1002、および管理装置20が行う鍵生成処理および通信設定処理の詳細を示す図である。まず制御装置10は管理装置識別情報を管理装置識別情報格納部112から取得する(S501)。次に制御装置10は、制御装置識別情報を制御装置識別情報格納部113から取得する(S502)。ここで、制御装置識別情報には、IPアドレス、MACアドレス、シリアル番号やバージョン情報などが含まれることを想定しているが、これに限定されるものではない。次に、秘密情報生成方法格納部118から秘密情報の生成方法を取得し、秘密情報を生成する(S503)。ここで、秘密情報の生成方法には、AESやSHA−256などの暗号アルゴリズム、CBCやCTRなどの暗号利用モード、制御装置識別情報や管理装置識別情報などの暗号アルゴリズムへの入力データなどが含まれることを想定しているが、これに限定されるものではない。本実施の形態では秘密情報の生成には、たとえば制御装置10のIPアドレスと管理装置20のIPアドレスが使用される。
次に制御装置10は、生成した秘密情報を秘密情報格納部115に格納する(S504)。次に制御装置10は、制御装置設定スクリプト格納部114から制御装置設定スクリプトを取得し、このスクリプトを実行することにより通信設定を行う(S505)。ここで通信設定には、通信プロトコル、送信元のIPアドレスやMACアドレスやポート番号、送信先のIPアドレスやMACアドレスやポート番号、通信データの暗号化に用いる暗号アルゴリズムや暗号アルゴリズムの利用モードや鍵、通信データの改ざん検知に用いる暗号アルゴリズムや暗号アルゴリズムの利用モードや鍵、鍵の更新方法や更新頻度などが含まれることを想定しているが、これに限定されるものではない。ただしS505では、S503において生成した秘密情報、すなわち鍵を何らかの方法で利用する。
次に制御装置10は通信設定を通信設定格納部116に格納する(S506)。次に制御装置10は、管理装置設定スクリプトを生成し、管理装置設定スクリプト格納部117に格納する(S507)。ここで、管理装置設定スクリプトの生成には、管理装置識別情報格納部112から取得した管理装置識別情報、制御装置識別情報格納部113から取得した制御装置識別情報、制御装置設定スクリプト格納部114から取得した制御装置設定スクリプト、通信設定格納部116から取得した通信設定、秘密情報生成方法格納部118から取得した秘密情報生成方法などを用いることを想定しているが、これに限定されるものではない。次に制御装置10は、管理装置設定スクリプト格納部117から管理装置設定スクリプトを取得して管理装置20に送付する(A501)。
管理装置20は取得した管理装置設定スクリプトを実行し、管理装置設定を行う(S508)。管理装置20は複数の制御装置、たとえば制御装置10と制御装置1002とから管理装置設定スクリプトを受信するたびに実行してもよいし、複数の制御装置から管理装置設定スクリプトを受信した後にまとめて実行してもよい。次に管理装置20は、制御装置10に設定確認パケットを生成して制御装置10に送信する(A502)。
制御装置10は、管理装置設定スクリプトを送信した後は、一定時間を待機した後に管理装置20から設定確認パケットを受信したか否かを判定する(S509)。制御装置10は設定確認パケットを受信していないと判定する場合は、管理装置20の設定に失敗したと判断し、S501に戻って再度実行する。制御装置10は設定確認パケットを受信したと判定する場合は、管理装置20の設定に成功したと判断し、動作モードを通常動作モードに変更し(S510)、鍵生成および通信設定を終了する。
図11は、制御装置10が実行する管理装置設定スクリプト生成処理を示すフローチャートである。図11に示す処理の全体が図10のS507に相当する。まず制御装置10は、管理装置識別情報格納部112に格納されている管理装置識別情報を取得する(S602)。次に制御装置10は、制御装置識別情報格納部113に格納されている制御装置識別情報を取得する(S603)。次に制御装置10は、通信設定格納部116に格納されている、管理装置20と通信を行うための設定情報を取得する(S604)。次に制御装置10は、秘密情報生成方法格納部118に格納されている秘密情報生成方法を取得する(S605)。次に制御装置10は、管理装置20が秘密情報を生成する機能を生成する(S606)。次に制御装置10は、管理装置20が制御装置10と通信するための通信設定を行う機能を生成する(S607)。次に制御装置10は、S606において生成した秘密情報を生成する機能とS607において生成した通信設定を行う機能を組み合わせて管理装置設定スクリプトを生成し、管理装置設定スクリプト格納部117に格納し(S608)、図11に示す処理を終了する。なおステップS602〜S605の処理順序は入れ替えてもよいし、ステップS606とS607の処理順序は入れ替えてもよい。
図11に示す処理の具体例はたとえば次のとおりである。まずS602において管理装置20のIPアドレスが取得され、S603において制御装置10のIPアドレスが取得される。次にS605において秘密情報生成方法として、鍵の生成にAESと2つのIPアドレスを使用することが取得される。そしてS606において秘密情報を生成するための具体的な数式、または計算に用いる関数の名称とその関数に与える引数が生成される。またS604において通信に関する設定情報として、制御装置10との通信に用いるプロトコルや送信先のポート番号が取得され、S607においてその設定を行う機能が生成される。
図12は、管理装置20が実行する管理装置設定を示すフローチャートである。図12に示す処理の全体が図10のS508に相当する。
まず管理装置20は、実行する管理装置設定スクリプトA501の数を認識する(S702)。図10に示した例では一台の制御装置10のみから管理装置設定スクリプトA501が送信されているが、複数の制御装置から送信された場合は以下に説明する処理を受信した管理装置設定スクリプトA501の数だけ繰り返す。また図10に示した例のように、制御装置一台からのみ管理装置設定スクリプトを受信している場合には、以降の処理は一度だけ実行する。
次に管理装置20は、管理装置設定スクリプトの挙動の決定、換言すると管理装置設定スクリプトの書き換えを行う(S704)。本ステップは、管理装置20に予め備えられたスクリプトにより実行されてもよいし、これまで言及していないが管理装置設定スクリプトとともに制御装置10から送信される変更用スクリプトにより実行されてもよい。制御装置10から送信される変更用スクリプトとは、たとえば一般にconfigureと名付けられ、makeコマンドの直前に実行されるスクリプトである。また変更用スクリプトの内容が管理装置設定スクリプトにあらかじめ組み込まれていてもよい。本ステップの詳細は後に説明する。
少なくとも以下に説明するS705〜S709は、管理装置20が管理装置設定スクリプトA501を実行することにより実行される。S704の次に管理装置20は、秘密情報を生成する(S705)。ただしS705の実行内容はS704における管理装置設定スクリプトの書き換えの影響を受けない。次に管理装置20は、生成した秘密情報を格納する(S706)。次に管理装置20は、制御装置10と通信するための通信設定を行う(S707)。本ステップにおける通信設定は、図10のS505における通信設定に対応するものである。またS707の実行内容はS704における管理装置設定スクリプトの書き換えの影響を受けない。次に管理装置20は、通信設定を格納する(S708)。次に管理装置20は、制御装置10に設定確認パケットを送信し(S709)、図12に示す処理を終了する。
図13は、管理装置20が実行する管理装置設定スクリプトの挙動を決定する処理を示すフローチャートである。図13に示す処理の全体が図12のS704に相当する。
まず管理装置20は、管理装置20のハードウェア構成を認識する(S802)。ここで、ハードウェア構成として、CPUの名称やバージョン情報などを認識することを想定しているが、これに限定されるものではない。次に管理装置20は、管理装置20の実行環境を認識する(S803)。ここで実行環境として、OSやファームウェアの名称、バージョン情報などを認識することを想定しているが、これに限定されるものではない。次に、管理装置20において、管理装置設定スクリプトの実行時に呼び出す演算機能を取得する(S804)。ここで、演算機能として、DLLなどのライブラリやソフトウェアなどを想定しているが、これに限定されるものではない。
次に管理装置20は、管理装置20において秘密情報を格納する場所を取得する(S805)。ここで、秘密情報の格納場所として、管理装置20のファイル構成やアクセス権限などを認識することを想定しているが、これに限定されるものではない。次に管理装置20は、通信設定の格納場所を取得する(S806)。ここで、通信設定の格納場所として、管理装置20のファイル構成やアクセス権限などを認識することを想定しているが、これに限定されるものではない。次に管理装置20は、通信設定を有効化する方法を取得し(S807)、図13に示す処理を終了する。ここで、通信設定を有効化する方法として、設定有効化コマンドを入力する方法や設定ポリシを活性化する方法などを想定しているが、これに限定されるものではない。
(設定削除の動作)
以下、図14〜図17を参照して通信設定システム1における設定削除動作を説明する。ただし先に説明した初期設定の動作と重複する動作は説明を省略、または簡略化する。なお初期設定処理においてすでに装置の識別が完了しているため、設定の削除では初期設定における図8のS303に相当する処理のみを実行する。
図14は、制御装置10と管理装置20のそれぞれにおいて、制御装置10〜管理装置20間の通信に使用する鍵および通信設定の削除を行う処理の処理フローを示す図である。この処理により管理装置20は制御装置10との通信が不可能になるが、他の制御装置、たとえば制御装置1002や制御装置1003との通信には影響はない。
まず制御装置10の動作モードが削除モードに設定される(S1301)。制御装置10の動作モードの変更は、制御入力部12への入力により行われてもよいし、ネットワーク30を介して通信により動作モードが変更されてもよい。次に制御装置10は、管理装置20の識別情報を管理装置識別情報格納部112から取得する(S1302)。次に制御装置10は、制御装置識別情報を制御装置識別情報格納部113から取得する(S1303)。次に制御装置10は、管理装置設定削除スクリプトを生成し、管理装置設定削除スクリプト格納部122に格納する(S1304)。ここで、管理装置設定削除スクリプトの生成には、管理装置識別情報格納部112から取得した管理装置20の識別情報や、制御装置識別情報格納部113から取得した制御装置10の識別情報や、制御装置設定削除スクリプト格納部121から取得した制御装置設定削除スクリプトや、通信設定格納部116から取得した通信設定、などを用いることを想定しているが、これに限定されるものではない。S1304の詳細は後述する。次に制御装置10は、管理装置設定削除スクリプト格納部122から管理装置設定削除スクリプトを取得し、管理装置設定削除スクリプトを管理装置20に送付する(A1301)。
制御装置10から管理装置設定削除スクリプトを受信した管理装置20は、受信した管理装置設定削除スクリプトを実行して管理装置の設定の削除を行う(S1305)。ここで、管理装置の設定の削除は各制御装置から管理装置設定削除スクリプトを受信するたびに実行してもよいし、複数台の制御装置から管理装置設定削除スクリプトを受信した後にまとめて実行してもよい。S1305の詳細は後述する。次に管理装置20は、制御装置10に設定確認パケットを送信する(A1302)。
管理装置20に管理装置設定削除スクリプトを送信した制御装置10は、所定時間待機した後に、管理装置20から設定確認パケットを受信したか否かを判断する(S1306)。制御装置10は、設定確認パケットを受信していないと判断する場合は、管理装置20の設定に失敗したとみなしてS1302に戻って処理を再度実行する。制御装置10は設定確認パケットを受信したと判断する場合は、制御装置10は管理装置20の設定に成功したと判断し、制御装置10は秘密情報格納部115に格納されている秘密情報を削除する(S1307)。次に制御装置10は、通信設定格納部116に格納された通信設定を削除する(S1308)。次に制御装置10は、動作モードを通常動作モードに変更する(S1309)。
図15は、制御装置10が実行する管理装置設定削除スクリプト生成処理を示すフローチャートである。図15に示す処理の全体が図14のS1304に相当する。
まず制御装置10は、管理装置識別情報格納部112に格納されている管理装置識別情報を取得する(S1402)。次に制御装置10は、通信設定格納部116に格納されている、管理装置20と通信を行うための設定情報を取得する(S1404)。次に制御装置10は、管理装置20で管理装置の秘密情報を削除する機能を生成する(S1405)。次に制御装置10は、管理装置20で制御装置10と通信するための通信設定の削除を行う機能を生成する(S1406)。次に制御装置10は、管理装置20で管理装置の秘密情報を削除する機能と通信設定の削除を行う機能を合わせて、管理装置設定削除スクリプトを生成し、管理装置設定削除スクリプト格納部122に格納し(S1407)、図15に示す処理を終了する。なおステップS1402〜S1404の処理順序は任意でもよい。また、ステップS1405とS1406の処理順序は任意でもよい。
図16は、管理装置20が実行する管理装置設定削除処理を示すフローチャートである。図16に示す処理の全体が図14のS1305に相当する。
まず管理装置20は、管理装置設定削除スクリプトの数を認識する(S1502)。ここで、複数台の制御装置から管理装置設定削除スクリプトを受信している場合には、まとめて一度に実行しても良いし、一台分ずつ繰り返し行ってもよい。また、制御装置一台からのみ管理装置設定削除スクリプトを受信している場合には、以降の処理は一度だけ実行する。次に管理装置20は、取得した管理情報を用いて管理装置設定スクリプトの挙動を決定する(S1504)。S1504の詳細は、後に図17を参照して後述する。
少なくとも以下のS1505〜S1507は、管理装置設定スクリプトを実行することにより実現される。S1504の次に管理装置20は、秘密情報を削除する(S1505)。次に管理装置20は、制御装置10と通信するための通信設定の削除を行う(S1506)。次に管理装置20は、制御装置10に設定確認パケットを送信し(S1507)、図16に示す処理を終了する。
図17は、管理装置20が実行する管理装置設定削除スクリプトの挙動を決定する処理を示すフローチャートである。図17に示す処理の全体が図16のステップS1504に相当する。
まず管理装置20は、管理装置20のハードウェアを認識する(S1602)。次に管理装置20は、管理装置20の実行環境を認識する(S1603)。次に管理装置20は、管理装置20において管理装置設定削除スクリプトの実行時に呼び出す演算機能を取得する(S1604)。次に管理装置20は、管理装置20において秘密情報を格納する場所を取得する(S1605)。次に管理装置20は、通信設定の格納場所を取得する(S1606)。次に管理装置20は、通信設定を解除する方法を取得し(S1607)、図17に示す処理を終了する。ここで、通信設定を解除する方法として、設定解除コマンドを入力する方法や設定ポリシを不活性化する方法などを想定しているが、これに限定されるものではない。
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)制御装置10は、ネットワーク30を介して接続された管理装置20と通信するパケット通信部101と、管理装置20を識別する管理装置識別部104と、管理装置20との通信の設定を行う通信設定部107と、管理装置20に通信の設定を行わせる指令である管理装置設定スクリプトを生成し管理装置20に送信させる管理装置設定スクリプト生成部108とを備える。そのため制御装置10は、ネットワーク30に接続された管理装置20を識別し、管理装置20に制御装置10との通信の設定を行わせることができる。すなわち制御装置10は事前に管理装置20を認識できていない場合であっても、制御装置10と管理装置20の相互の通信を実現することができる。
(2)制御装置10は、秘密情報を生成する秘密情報生成部106を備える。通信設定部107は、管理装置20との通信に秘密情報を用いるように設定する。管理装置設定スクリプト生成部108は管理装置設定スクリプトに秘密情報を生成可能な情報を含める。そのため制御装置10と管理装置20で秘密情報、すなわち暗号通信に用いる鍵を共有することができる。
(3)秘密情報生成部106は、管理装置20をネットワークにおいて識別する情報、すなわち管理装置20のIPアドレス、および制御装置10をネットワークにおいて識別する情報、すなわち制御装置10のIPアドレスを用いて秘密情報を生成する。そのため制御装置10および管理装置20に固有の情報を用いて秘密情報を生成することができる。
(4)管理装置20は、制御装置10から受信する管理装置設定スクリプトに基づき制御装置10との通信の設定を行う管理装置設定部204を備える。そのため管理装置20は事前に制御装置10を認識できていない場合であっても、制御装置10と管理装置20の相互の通信を実現することができる。
(5)制御装置10は、管理装置20との通信の設定を削除する通信設定削除部120と、管理装置20に通信の設定の削除を行わせる指令である管理装置設定スクリプトを生成し、管理装置設定スクリプトをパケット通信部101を介して管理装置20に送信する管理装置設定スクリプト生成部108とを備える。そのためネットワーク30から制御装置10を取り外す際に管理装置設定スクリプトを生成・送信することで簡便に管理装置20から制御装置10との通信の設定を削除し、制御装置10を取り外した後の管理装置20の誤動作を防止することができる。
(6)管理装置20は、制御装置10から受信する管理装置設定スクリプトに基づき制御装置10との通信の設定を行う管理装置設定部204と、制御装置10から受信する管理装置設定スクリプトに基づき制御装置10との通信の設定を削除する管理装置削除部205とを備える。そのため管理装置20は、制御装置10との通信の設定を簡便に削除することができる。
(7)制御装置10は、初期設定モードと通常動作モードとを含む複数のモードのいずれかのモードとして制御装置を動作させる動作モード管理部109を備える。動作モード管理部109は、初期設定モードにおいてのみ通信設定部107および管理装置設定スクリプト生成部108を動作させる。そのため動作モードを設定することで制御装置10の動作を明確にすることができる。
(8)通信設定システム1は、制御装置10、制御装置1002、制御装置1003、および管理装置20を含む。制御装置10は、接続状況識別パケットおよび管理装置識別パケットのいずれを受信した場合でも対応する応答メッセージを返信する接続状況識別部103を備える。管理装置20は、接続状況識別パケットを受信すると対応するメッセージを返信し、管理装置識別パケットには応答しない管理応答部203を備える。管理装置識別部104は、接続状況識別パケットおよび管理装置識別パケットを送信することで管理装置20を識別する。そのため制御装置10が事前に管理装置20を認識できていない場合であっても、ネットワーク30に接続された管理装置20を簡便に識別することができる。
(変形例1)
制御装置10と管理装置20との通信は暗号が利用されなくてもよい。この場合は、暗号化された通信のための鍵、すなわち秘密情報が不要になる。そのためこの場合は制御装置10および管理装置20は秘密情報を生成しなくてもよく、制御装置10が生成する管理装置設定スクリプトに秘密情報の生成方法が含まれなくてもよい。すなわち管理装置設定スクリプトにより秘密情報の生成は行われずポート番号の設定など通信の設定のみが行われてもよい。
(変形例2)
ネットワーク30に接続される制御装置の数は1以上であればよい。たとえば制御装置1002および制御装置1003がネットワーク30に接続されなくてもよい。
(変形例3)
上述した実施の形態では、通信を行う2つの装置のIPアドレスが秘密情報の生成に使用された。しかし、同一のネットワーク30に接続されている全ての装置のIPアドレスを使用して秘密情報を生成してもよい。この場合は、同一のネットワーク30に接続されている全ての装置が同一の計算式により秘密情報を生成するので、全ての装置に格納される秘密情報が同一のものとなる。またIPアドレスに代えて、ネットワーク上の識別子となる他の情報、たとえばMACアドレスなどを秘密情報の生成に用いてもよい。
―第2の実施の形態―
図18〜図22を参照して、本発明にかかる通信設定システムの第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、ネットワーク30に接続された複数の制御装置が同時に初期設定モードに設定された際の動作が第1の実施の形態と異なる。
(構成)
制御装置10および管理装置20のハードウエア構成、および機能構成は第1の実施の形態と同様なので説明を省略する。ただし以下に説明するように、本実施の形態では接続状況識別部103が動作モードのマスタ/スレーブを決定する機能を有する。また鍵生成処理および通信設定処理が一部異なる。マスタ/スレーブは、通信の設定および通信の削除における主導権の有無による区別である。以下では、動作モードがマスタに設定された制御装置を「マスタ装置」とも呼び、動作モードがスレーブに設定された制御装置を「スレーブ装置」とも呼ぶ。マスタ装置はスレーブ装置に動作指令を送信し、スレーブ装置はマスタ装置の動作指令に基づき動作する。
(初期設定の動作)
図18は、第2の実施の形態における初期設定の動作を説明する図である。ここでは、制御装置10と制御装置1002の両方が初期設定モードに設定された場合を説明する。また以下では、ネットワーク30には制御装置10と制御装置1002以外の制御装置は接続されていないものとして説明する。
まず制御装置10および制御装置1002は、動作モードを初期設定モードに設定する(S1801、S1802)。ここで、動作モードを初期設定モードに設定できない、もしくは、以降の処理が初期設定モードに設定されないまま実行されようとする場合には、以降の処理を中止してもよい。次に制御装置10および制御装置1002は、装置の識別を行う(S1803)。本ステップの動作は第1の実施の形態と同様である。次に制御装置10および制御装置1002は、マスタ装置の決定を行う(S1804、S1805)。本ステップの詳細は図19を参照して後述する。次に制御装置10、制御装置1002および管理装置20は、鍵生成及び通信設定を行う(S1806)。本ステップの詳細は図20を参照して後述する。
図19は、それぞれの制御装置において実行される、マスタ装置を決定する処理を示すフローチャートである。以下では制御装置10が処理を実行するとして説明するが、制御装置1002も同様に処理を実行する。
まず制御装置10は、図18のS1803で示した装置の識別の結果を利用して、全ての制御装置の識別情報を取得する(S1902)。識別情報とは、たとえばMACアドレスやIPアドレスであり、ここではIPアドレスを識別情報として用いる。次に制御装置10は、最小の値を有する識別情報を特定する(S1903)。たとえば制御装置10のIPアドレスが「192.168.1.2」、制御装置1002のIPアドレスが「192.168.1.5」であった場合は、数値の小さい「192.168.1.2」が最小の値を有する識別情報として特定される。次に制御装置10は、ステップS1903において特定した最小の識別情報が、自身の識別情報と一致するか否かを判断する。一致すると判断する場合は動作モードをマスタに設定し(S1907)、一致しないと判断する場合は動作モードをスレーブに設定する(S1906)。以上でマスタ装置の決定処理を終了する。
図20は、第2の実施の形態における鍵生成および通信設定の処理フローを示す図である。なおここでは、制御装置10の動作モードがマスタに設定され、制御装置1002の動作モードが従属モードに設定されているとして説明する。
まずマスタである制御装置10は、設定指示パケットを生成する(S2001)。設定指示パケットはマスタの制御装置10からスレーブの制御装置1002への動作トリガーとして送信されるパケットである。次に制御装置10は、第1の実施の形態と同様にS501〜S506の処理を行う。次に制御装置10は、制御装置10に対応する管理装置設定スクリプト、すなわち管理装置20が制御装置10と通信を行うための管理装置設定スクリプトを生成し、管理装置設定スクリプト格納部117に格納する(S2008)。
次に制御装置10は、全ての制御装置に対応するの管理装置設定スクリプトの生成を完了したか否かを判断する(S2009)。制御装置10は、対応する管理装置設定スクリプトの生成が完了していない制御装置があると判断した場合には、処理ステップS2008に戻り対応する管理装置設定スクリプトを生成する。制御装置10は、全ての制御装置に対応する管理装置設定スクリプトの生成が完了していると判断する場合には、次の処理を行う。すなわち制御装置10は、管理装置設定スクリプト格納部117から全ての管理装置設定スクリプトを取得し、まとめた管理装置設定スクリプト群として管理装置20へ送付する(A2002)。
次に管理装置20は取得した管理装置設定スクリプト群(A2002)を実行し、管理装置設定を行う(S2010)。次に、制御装置10に設定確認パケットを送信する(A2003)。次に制御装置10は管理装置20から設定確認パケットを受信したか否かを判断する(S2011)。制御装置10は設定確認パケットを受信していないと判断する場合は、管理装置20の設定に失敗したとみなしてS501に戻って処理を再度実行する。制御装置10は設定確認パケットを受信したと判断する場合は、管理装置20の設定が成功したとみなして動作モード変更パケットを生成する(S2012)。次に制御装置10は、生成した動作モード変更パケットを制御装置1002へ送信する(A2004)。次に制御装置10は、動作モードを通常動作モードに変更する(S2013)。
図19に示したフローチャートにて動作モードをスレーブに変更した制御装置1002は、マスターである制御装置10から設定指示パケットを受信すると、第1の実施の形態と同様にS501〜S506の動作を行う。制御装置1002は、S506の実行が完了すると、制御装置10からの動作モード変更パケットの受信を待機する。そして制御装置1002は、制御装置10から動作モード変更パケットを受信すると、動作モードを通常動作モードに変更する(S2020)。なおここでは制御装置10がマスター、制御装置1002がスレーブに設定される場合を説明したが、他の機器がマスターやスレーブに設定された場合も同様に動作する。またスレーブに設定される機器は2以上であってもよい。
図21は、設定指示パケット、削除指示パケット、および動作モード変更パケットの構成を示す図である。本図において、設定指示パケット、削除指示パケット、および動作モード変更パケットをまとめてパケットA2101と呼ぶ。パケットA2101は、パケットの送信元装置や受信先装置を示す装置識別情報A2102と、パケットのサイズを示すサイズA2103と、パケットのペイロードであるパケットデータA2104とから構成される。パケットデータA2104には少なくとも、パケットA2101が設定指示パケット、削除指示パケット、および動作モード変更パケットのいずれであるかを示す情報が含まれる。さらにパケットA2101が動作モード変更パケットである場合には、どのモードへの変更指令であるかを示す情報がさらに含まれる。ここでパケットA2101の構成要素は上記に限定されるものではなく、少なくとも上記の構成が含まれていればよい。また、パケットA2101の構成要素の順序は上記に限定されるものではない。
(設定削除の動作)
図22は、制御装置10および制御装置1002に関する通信設定を削除する処理のフローを示す図である。なお図22では、制御装置10の動作モードがマスタモードに設定されており、制御装置1002の動作モードがスレーブモードに設定されているとして説明する。
はじめにマスタである制御装置10の動作モードが削除モードに設定される(S2201)。次に制御装置10は、削除指示パケットを生成する(S2202)。次に制御装置10は、生成した削除指示パケットをスレーブである制御装置1002に送信する(A2201)。次に制御装置10は、管理装置20の識別情報を管理装置識別情報格納部112から取得する(S1302)。次に制御装置10は、制御装置識別情報を制御装置識別情報格納部113から取得する(S1303)。次に制御装置10は、管理装置設定削除スクリプトを生成し、管理装置設定削除スクリプト格納部122に格納する(S2205)。本ステップの動作は、第1の実施の形態における図14のS1304と同様なので説明を省略する。ただしマスタである制御装置10はスレーブである制御装置1002のIPアドレスを用いることで制御装置1002に対応する管理装置設定削除スクリプトも作成することができる。
次に制御装置10は、全ての制御装置分の管理装置設定削除スクリプトの生成を完了したか否かを判断する(S2206)。制御装置10は少なくとも一つの制御装置について管理装置設定削除スクリプトの生成が完了していないと判断する場合は、処理ステップS2205に戻る。制御装置10は全ての制御装置について管理装置設定削除スクリプトの生成が完了したと判断する場合は、管理装置設定削除スクリプト格納部122から全ての管理装置設定削除スクリプト(以下、管理装置設定削除スクリプト群)を管理装置20へ送付する(A2202)。
制御装置10から管理装置設定削除スクリプト群を受信した管理装置20は、第1の実施の形態における図14のS1305と同様に、受信した管理装置設定削除スクリプトを実行する(S2207)。ただし第1の実施の形態では1つの管理装置に関する情報のみを削除したが、ここでは受信した管理装置設定削除スクリプト群に対応する全ての管理装置に関する情報を削除する。次に管理装置20は、マスタである制御装置10に設定確認パケットを送信する(A2203)。
管理装置20に管理装置設定削除スクリプト群を送信した制御装置10は、送信から所定の時間以内に管理装置20から設定確認パケットを受信したか否かを判断する(S2208)。制御装置10は所定時間以内に設定確認パケットを受信していないと判断する場合には、管理装置20の設定に失敗したとみなして、S1302に戻って処理を再度実行する。制御装置10は所定時間以内に設定確認パケットを受信したと判断する場合には、管理装置20の設定に成功したとみなして、第1の実施の形態と同様にS1307およびS1308を実行する。次に制御装置10は、動作モード変更パケットを生成し(S2211)、生成した動作モード変更パケットを制御装置1002に送信する(A2204)。次に制御装置10は、第1の実施の形態における図14のS1309と同様に動作モードを変更する。
スレーブである制御装置1002は、マスタである制御装置10から削除指示パケットを受信すると、第1の実施の形態と同様にS1307およびS1308を実行する。そして制御装置1002は、制御装置10から動作モード変更パケットを受信すると、第1の実施の形態における図14のS1309と同様に動作モードを変更する。
上述した第2の実施の形態によれば、次の作用効果が得られる。
(1)ネットワーク30には複数の制御装置が接続される。制御装置10の管理装置設定スクリプト生成部108は、制御装置10および制御装置1002に対応する管理装置設定スクリプトを生成し(図20のS2008)、管理装置設定スクリプト群を管理装置20に送信する(図20のA2002)。そのため1台の制御装置10が繰り返し秘密情報を生成するので、秘密情報を生成するプログラムの読み込みや秘密情報の生成に使用する情報の読み込みが、2回目以降は高速化される。またスレーブに設定された制御装置は処理負荷が軽減されるため、他の処理の負荷を増加させることができる。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。