[1.実施形態1]
本発明の発明者の見地によれば、同期通信可能な複数の産業機器を含む通信システムにおいて、悪意のある第三者がネットワーク上のデータを書き換えたり盗み見たりすることがある。しかしながら、従来の通信システムでは、通信システム内のデータが全て平文でやり取りされるので、セキュリティを十分に担保することができなかった。そこで本発明の発明者は、同期通信可能な複数の産業機器を含む通信システムにおけるセキュリティを高めるために鋭意研究開発を行った結果、新規かつ独創的な通信システム等に想到した。以降、本実施形態に係る通信システム等を詳細に説明する。
[1−1.通信システムの全体構成]
図1は、実施形態に係る通信システムの全体構成の一例を示す図である。図1に示すように、通信システム1は、コントローラ10、モータ制御装置20A〜20D、モータ30A〜30D、センサ40A〜40D、及びエンコーダ50A〜50Dを含む。以降、モータ制御装置20A〜20D、モータ30A〜30D、センサ40A〜40D、及びエンコーダ50A〜50Dの各々を特に区別する必要のないときは、単にモータ制御装置20、モータ30、センサ40、及びエンコーダ50と記載する。
コントローラ10は、モータ制御装置20を制御する装置である。本実施形態では、コントローラ10が4台のモータ制御装置20を制御する場合を説明するが、コントローラ10が制御するモータ制御装置20の台数は、任意の数であってよく、例えば、1台、2台、3台、又は5台以上であってもよい。また例えば、コントローラ10には、モータ制御装置20だけでなく、センサ類又は入出力機器などが接続されていてもよい。また例えば、通信システム1には、複数台のコントローラ10が含まれていてもよい。
例えば、コントローラ10は、CPU11、記憶部12、及び通信部13を含む。CPU11は、少なくとも1つのプロセッサを含む。記憶部12は、RAM、EEPROM、及びハードディスクを含み、各種プログラムやデータを記憶する。CPU11は、これらプログラムやデータに基づいて各種処理を実行する。通信部13は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。
モータ制御装置20は、モータ30を制御する装置である。モータ制御装置20は、サーボアンプ又はサーボパック(登録商標)と呼ばれることもある。本実施形態では、モータ制御装置20が1台のモータ30を制御する場合を説明するが、モータ制御装置20は、複数台のモータ30を制御してもよい。更に、モータ制御装置20には、モータ30、センサ40、及びエンコーダ50だけでなく、入出力機器などが接続されていてもよい。モータ制御装置20は、コントローラ10から受信した指令に基づいて、電力線で接続されたモータ30に対する電圧を制御する。モータ30は、回転式であってもよいしリニア式であってもよい。
例えば、モータ制御装置20Aは、CPU21A、記憶部22A、通信部23A、及びSOC(System On Chip)24Aを含む。CPU21A、記憶部22A、及び通信部23Aの各々の物理的構成は、CPU11、記憶部12、及び通信部13と同様である。
SOC24Aは、チップ上に特定の目的の機能を集約させた回路である。本実施形態では、SOC24Aは、暗号化通信に特化した回路であり、例えば、CPU240A及び暗号チップ241Bを含む。CPU240Aの物理的構成は、CPU11と同様であり、例えば、暗号化通信用のファームウェアが展開される。暗号チップ241Bは、例えば、鍵を記憶するメモリと、特定の暗号方式に特化した演算を実行する演算回路と、を含む。暗号チップ241Bは、CPU240Aの指示により、メモリに記憶された鍵に基づいて、暗号化及び復号化の演算を実行する。
なお、SOC24Aは、モータ制御装置20Aの製造時点で内蔵されていてもよいし、モータ制御装置20Aの購入後にユーザがSOC24Aを取り付けてもよい。また例えば、SOC24Aは、モータ制御装置20Aの筐体に内蔵されるのではなく、USB端子等の入出力部を利用して外付けされてもよい。また、SOC24Aの物理的構成は、上記説明した例に限られず、暗号化及び復号化の演算が可能な構成を有していればよい。例えば、SOC24Aは、暗号チップ241Aの代わりに、サブのCPUを有していてもよく、当該CPUにより、暗号化及び復号化の演算が実行されてもよい。また例えば、特に暗号チップ241Aを用意せずに、CPU240Aが暗号化及び復号化の演算を実行してもよい。
モータ制御装置20B及び20Dの物理的構成は、モータ制御装置20Aと同様である。即ち、CPU21B,21D、記憶部22B,22D、通信部23B,23D、及びSOC24B,24Dの各々の物理的構成は、CPU21A、記憶部22A、通信部23A、及びSOC24Aと同様である。モータ制御装置20Cは、CPU21C、記憶部22C、及び通信部23Cを含む。これらの各々の物理的構成は、CPU21A、記憶部22A、及び通信部23Aと同様である。ただし、モータ制御装置20Cは、暗号化通信に対応しておらず、SOCを有しない。なお、以降の説明では、モータ制御装置20に含まれる個々の構成を区別しないときは、CPU21、記憶部22、通信部23、及びSOC24といったように、末尾のアルファベットの符号を省略する。
なお、モータ制御装置20のCPU21は、自身に接続された機器を制御するための第1の制御回路の一例であり、SOC24は、暗号化通信をするための第2の制御回路の一例である。制御回路は、任意の計算を行うために作成された回路基板であり、CPU21のように汎用的な処理を実行可能であってもよいし、SOC24のように特定目的の処理に特化したものであってもよい。一般的に、モータ制御装置20は、コストを抑えるために必要最低限の性能のCPU21を搭載することが多い。この場合、暗号化通信の計算処理に耐えられない(処理に遅延が発生する)ことがあるので、本実施形態では、モータ制御装置20にSOC24を搭載することにしているが、CPU21が十分な性能を有する場合には、SOC24を搭載せずに、CPU21が暗号化通信の計算処理を実行してもよい。
センサ40は、モータ制御装置20又はモータ30の動作状況を検出する。センサ40は、物理量を検出可能なセンサであればよく、例えば、トルクセンサ、温度センサ、力センサ、又はモーションセンサなどである。エンコーダ50は、モータ30の位置又は速度を検出する機器であり、例えば、光学式又は磁気式のモータエンコーダである。エンコーダ50もセンサの一種である。モータ制御装置20は、センサ40により検出された物理量やエンコーダ50により検出されたフィードバック速度を、任意のタイミングでコントローラ10に送信する。
なお、コントローラ10及びモータ制御装置20の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークNやインターネットなどを介して供給されるようにしてもよい。また、コントローラ10及びモータ制御装置20の各々のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)が含まれていてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部又は入出力部を介して供給されるようにしてもよい。また例えば、コントローラ10及びモータ制御装置20の各々は、モータ制御などの特定用途向けの集積回路(ASIC)を有していてもよい。例えば、SOC24についても、SOCとしての構成、CPUとASICなどの構成など回路のハードウェア構成は適宜設定可能である。
[1−2.通信システムの概要]
通信システム1では、コントローラ10とモータ制御装置20とが通信する。コントローラ10及びモータ制御装置20の各々は、産業機器の一例である。このため、本実施形態でコントローラ10又はモータ制御装置20と記載した箇所は、産業機器と読み替えることができる。
産業機器は、人間が行う作業の補助又は代行をする機器及びその周辺機器の総称である。例えば、コントローラ10及びモータ制御装置20以外にも、ロボットコントローラ、産業用ロボット、インバータ、コンバータ、工作機械、又はPLC等は、産業機器に相当する。
本実施形態では、通信を行う複数の産業機器には、マスタ機器と、マスタ機器からの指令に基づいて動作するスレーブ機器と、が含まれている場合を説明するが、特にマスタとスレーブの関係がなくてもよい。別の言い方をすれば、産業機器の間には、主従関係又は上下関係が存在しなくてもよい。
マスタ機器とは、スレーブ機器を制御する機器であり、スレーブ機器に対して指令を送信する機器である。別の言い方をすれば、マスタ機器は、スレーブ機器から動作状態を取得する機器である。スレーブ機器とは、マスタ機器からの指令に基づいて動作する機器であり、マスタ機器により制御される機器である。別の言い方をすれば、スレーブ機器は、マスタ機器に対して自身の動作状態を送信する機器である。本実施形態では、コントローラ10がマスタ機器に相当し、モータ制御装置20がスレーブ機器に相当する。
コントローラ10は、モータ制御装置20に対して指令を送信し、モータ制御装置20は、指令に基づいてモータ30を動作させる。コントローラ10とモータ制御装置20とは、いわゆるフィールドネットワークであるネットワークNによって接続され、任意の通信プロトコルを利用して通信が行われる。本実施形態の通信システム1では、コントローラ10及びモータ制御装置20(複数の産業機器の一例)の各々は、同期通信可能である。
同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせる通信方式である。同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間は、原則として他の処理は実行されない。このため、送信側の機器は、受信側の機器にデータを送信した後は、レスポンスを受信するのを待機する。受信側の機器は、送信側の機器からデータを受信すると、すぐに処理を実行し、送信側の機器にレスポンスとして処理結果を返す。送信側の機器は、処理結果を受信すると、次の処理に移行する。同期通信が行われない場合には、非同期通信を利用して通信が行われる。
非同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせずに通信を行う通信方式である。非同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間に、他の処理を実行可能である。このため、非同期通信では、送信側の機器は、受信側の機器にデータを送信してからレスポンスを受信するまでの間に、他の処理を実行可能である。また、非同期通信では、受信側の機器は、送信側の機器からデータを受信しても、すぐに処理を実行するとは限らない。受信側の機器は、所定の条件が充足されるまで処理の実行を待機したり、同期通信の処理を優先して実行したりする。
同期通信可能とは、同期通信を利用できるネットワーク環境及び通信プロトコルが整っていることである。コントローラ10とモータ制御装置20は、必ずしも全ての通信で同期通信をする必要はなく、同期通信と非同期通信を併用してもよいし、同期通信以外の通信方式を利用してもよい。別の言い方をすれば、コントローラ10とモータ制御装置20は、ネットワーク環境及び通信プロトコルとしては同期通信を利用できるけれども、あえて同期通信を利用せずに他の通信方式を利用してもよい。
本実施形態では、コントローラ10及びモータ制御装置20の各々は、暗号化通信可能である。暗号化通信は、データが暗号化される通信方式である。暗号方式自体は、種々の暗号方式を利用可能であり、例えば、DESやFEALなどの共通鍵暗号方式であってもよいし、RSAやDSAなどの公開鍵暗号方式であってもよい。
暗号化通信可能とは、暗号化通信を利用できるネットワーク環境及び通信プロトコルが整っていることである。コントローラ10とモータ制御装置20は、必ずしも全ての通信で暗号化通信をする必要はなく、暗号化通信と非暗号化通信を併用してもよい。非暗号化通信とは、暗号化通信を利用しない方式であり、暗号化せずに平文で通信する方式である。別の言い方をすれば、コントローラ10とモータ制御装置20は、ネットワーク環境及び通信プロトコルとしては暗号化通信を利用できるけれども、あえて非暗号化通信を利用してもよい。
本実施形態では、コントローラ10は、暗号化通信に対応しているが、モータ制御装置20は、暗号化通信に対応している機種と、暗号化通信に対応していない機種と、が存在する場合について説明する。即ち、通信システム1には、暗号化通信に対応している機種だけが含まれていてもよいが、本実施形態では、暗号化通信に対応している機種と、暗号化通信に対応していない機種と、が通信システム1内に混在している場合を説明する。
例えば、モータ制御装置20A,20B,20Dは、暗号化通信に対応した機種であり、SOC24を有しているが、モータ制御装置20Cは、暗号化通信に対応していない機種であり、SOC24を有していない。このため、コントローラ10とモータ制御装置20A,20B,20Dとの通信は、暗号化通信を利用可能であるが、コントローラ10とモータ制御装置20Cとの通信は、暗号化通信を利用可能ではないので、全て平文で行われる。
また例えば、モータ制御装置20A,20B,20Dの暗号方式が互いに同じであり、単一の暗号方式だけが用いられてもよいが、本実施形態では、複数の暗号方式が混在する場合を説明する。例えば、モータ制御装置20A,20Bは、DESを利用してコントローラ10と暗号化通信を行い、モータ制御装置20Dは、RSAを利用してコントローラ10と暗号化通信を行う。コントローラ10は、これら複数の暗号方式に対応可能であるものとする。更に、同じ暗号方式であったとしても、異なるビット数(暗号強度)の方式が混在してもよい。例えば、64ビットのDESと、128ビットのDESと、が混在していてもよい。
以上のように、本実施形態では、コントローラ10とモータ制御装置20との間で暗号化通信を実現することにより、同期通信可能なコントローラ10とモータ制御装置20を含む通信システム1におけるセキュリティを高めるようになっている。以降、通信システム1の詳細を説明する。
[1−3.通信システムで実現される機能]
図2は、通信システム1で実現される機能を示す機能ブロック図である。ここでは、コントローラ10及びモータ制御装置20の各々において実現される機能について説明する。なお、モータ制御装置20A,20B,20Dは、同様の機能が実現されるので、図2では1つにまとめて示している。
[1−3−1.コントローラにおいて実現される機能]
図2に示すように、コントローラ10では、データ記憶部100、判定部101、設定部102、暗号化部103、送信部104、受信部105、及び復号化部106が実現される。データ記憶部100は、記憶部12を主として実現され、判定部101、設定部102、暗号化部103、送信部104、受信部105、及び復号化部106は、CPU11を主として実現される。
[データ記憶部]
データ記憶部100は、通信を行うために必要なデータを記憶する。例えば、データ記憶部100は、モータ制御装置20の機種ごとに暗号化通信の対応状況が示された機種データDT1と、モータ制御装置20ごとに暗号化通信の設定内容が示された設定データDT2と、を記憶する。
図3は、機種データDT1のデータ格納例を示す図である。図3に示すように、機種データDT1には、モータ制御装置20の機種、暗号化通信の可否、及び暗号方式が示されている。機種は、モータ制御装置20の種類であり、型式又は型番と呼ばれることもある。機種は、モータ制御装置20のメーカが指定した記号列によって示されてもよいし、モータ制御装置20に付与された名前によって示されてもよい。
暗号化通信の可否は、暗号化通信が可能か否かである。本実施形態では、暗号化通信が可能な機種については、対応している暗号方式の種類が示されるものとするが、全機種で同一形式の暗号を用いる場合には、暗号化通信の可否のみが示されてもよい。機種データDT1は、メーカが用意したものがダウンロードされてもよいし、ユーザが作成してもよい。なお、機種データDT1には、暗号化通信の可否が特に示されなくてもよく、暗号化通信に対応している機種のリストのみが示されてもよい。これとは逆に、機種データDT1には、暗号化通信に対応していない機種のリストが示されてもよい。
図3のデータ格納例であれば、「X1」という機種は、DESに対応しており、「X2」という機種は、RSAとDESに対応している。「X3」という機種は、RSAに対応しており、「X4」という機種は、暗号化通信に対応していない。例えば、モータ制御装置20A,20Bは、機種「X1」であり、DESに対応している。また例えば、モータ制御装置20Cは、機種「X4」であり、暗号化通信に対応していない。また例えば、モータ制御装置20Dは、機種「X3」であり、RSAに対応している。
なお、図3では、暗号方式だけが機種データDT1に示されているが、例えば、利用可能なビット数も機種データDT1に示されていてもよい。また例えば、機種データDT1には、単一のメーカの機種だけが示されてもよいし、複数のメーカの機種が示されてもよい。また例えば、ある特定のメーカだけでなく、複数のメーカが暗号化通信に対応可能であってもよく、この場合、メーカごとに、別々の機種データDT1を用意してもよい。
図4は、設定データDT2のデータ格納例を示す図である。図4に示すように、設定データDT2には、コントローラ10の通信相手(即ち、モータ制御装置20)ごとに、暗号通信の利用有無、利用する暗号方式、及び利用する鍵が示される。鍵は、暗号化と復号化の少なくとも一方で用いられる情報であり、例えば、共通鍵暗号方式であれば、暗号化と復号化の両方で利用される共通鍵であり、公開鍵暗号方式であれば、暗号化で利用される公開鍵と復号化で利用される秘密鍵である。鍵は、所定の鍵生成アルゴリズムで生成されてもよいし、ユーザが入力した任意の記号列であってもよい。
図4のデータ格納例であれば、コントローラ10とモータ制御装置20A,20Bとの間で、鍵「Y1」を利用してDESの暗号化通信が行われることが示されている。なお、モータ制御装置20Aが利用する鍵と、モータ制御装置20Bが利用する鍵と、は同じであってもよいし異なっていてもよい。また例えば、コントローラ10とモータ制御装置20Cとの間では、暗号化通信が行われないことが示されている。また例えば、コントローラ10とモータ制御装置20Dとの間では、鍵「Y2」(公開鍵と秘密鍵のセット)を利用してRSAの暗号化通信が行われることが示されている。
本実施形態では、暗号化通信で利用される鍵がデータ記憶部100に予め記憶されている場合を説明するが、乱数等を利用してその場で鍵が生成され、コントローラ10とモータ制御装置20との間で交換されてもよい。データ記憶部100は、少なくとも1つの暗号方式の鍵を記憶すればよく、例えば、ある1つの暗号方式の鍵だけを記憶してもよいし、複数の暗号方式の各々の鍵を記憶してもよい。また、データ記憶部100は、ある暗号方式に対し、少なくとも1つの鍵を記憶すればよく、例えば、複数の通信相手で共通の1つの鍵だけを記憶してもよいし、通信相手によって使い分けるために複数の鍵を記憶してもよい。
なお、データ記憶部100が記憶するデータは、上記の例に限られない。例えば、データ記憶部100は、暗号化通信で利用される暗号アルゴリズムを記憶する。本実施形態では、暗号アルゴリズムは、暗号化の計算式と復号化の計算式とを含むものとするが、暗号化の計算式と復号化の計算式とは、データとして別々であってもよい。他にも例えば、データ記憶部100は、後述する機器情報を記憶してもよいし、モータ制御装置20のIPアドレスを記憶してもよい。また例えば、データ記憶部200は、モータ制御装置20に対する指令が時系列的に示されたプログラム又はパラメータを記憶してもよいし、モータ制御装置20から受信した応答データやトレースデータなどを記憶してもよい。
[判定部]
判定部101は、通信システム1のネットワーク構成が変更されたか否かを判定する。ネットワーク構成とは、ネットワークNに接続された産業機器の構成(通信システム1に含まれる産業機器の構成)であり、例えば、産業機器そのものを意味してもよいし、産業機器のハードウェア構成(部品構成)であってもよい。ネットワークNに何の産業機器が接続されているかは、ネットワーク構成の一例である。また、ネットワークNに接続された産業機器がどのようなハードウェア構成(例えば、通信インタフェースの性能やSOC24の有無など)を有しているかは、ネットワーク構成の一例である。
例えば、判定部101は、産業機器が追加、除外、又は交換された場合に、ネットワーク構成が変更されたと判定する。また例えば、判定部101は、産業機器自体は追加、除外、又は交換されていないが、産業機器のハードウェア構成が追加、除外、又は交換された場合(例えば、通信インタフェースが交換されたりSOC24が追加されたりした場合)に、ネットワーク構成が変更されたと判定する。
本実施形態では、ネットワーク構成が変更された場合に、ユーザが所定の変更操作を行うものとする。このため、判定部101は、変更操作が行われたか否かを判定することによって、ネットワーク構成が変更されたか否かを判定する。変更操作は、ネットワーク構成を変更した場合にユーザが行う所定の操作であればよい。例えば、ユーザは、エンジニアリングツールがインストールされたパーソナルコンピュータ等をコントローラ10に接続し、変更操作を行う。
ユーザが変更操作を行うと、コントローラ10のデータ記憶部100には、フラグ等の情報を利用して、変更操作が行われた旨が記録される。当該情報は、変更操作が行われたか否かを示し、変更操作が行われた場合に第1の値となり、変更操作が行われない場合に第2の値となる。判定部101は、当該情報を参照することによって判定処理を実行する。判定部101は、変更操作が行われていない場合には、ネットワーク構成が変更されたと判定せず、変更操作が行われた場合に、ネットワーク構成が変更されたと判定する。
なお、判定部101の判定方法は、上記の例に限られない。ユーザがネットワーク構成の変更を手動で指示するのではなく、判定部101は、ネットワークNに接続されたモータ制御装置20から受信した情報を利用して判定処理を実行してもよい。例えば、判定部101は、コンフィグレーション時や電源投入時などにおいて取得される機器情報に基づいて、判定処理を実行する。
機器情報は、ネットワークNに接続されている機器を示す情報であり、例えば、機器名、機種、シリアル番号、又はIPアドレスなどである。機器情報は、ネットワークNに接続された機器に記憶される。なお、機器情報には、当該機器のハードウェア構成が示されてもよく、例えば、CPU21の種類や性能、又は、SOC24の有無が示されてもよい。コントローラ10は、過去に取得された機器情報をデータ記憶部100に記録しておき、判定部101は、最新の機器情報と過去の機器情報とが一致していれば、ネットワーク構成が変更されたと判定せず、これらが一致していなければネットワーク構成が変更されたと判定する。
他にも例えば、ネットワークNに新たに追加されたモータ制御装置20やハードウェア構成が変更されたモータ制御装置20が、コントローラ10に、自発的に所定の通知を送信してもよい。この場合、判定部101は、当該所定の通知を受信したか否かを判定することによって、ネットワーク構成が変更されたか否かを判定する。
[設定部]
設定部102は、通信を行う産業機器の組み合わせごとに、暗号化通信に関する設定を行う。暗号化通信に関する設定は、機種に関係なく行われてもよいが、本実施形態では、設定部102は、通信を行う産業機器の組み合わせごとに、当該組み合わせに含まれる産業機器の機種に基づいて、暗号化通信に関する設定を行う。
通信を行う産業機器の組み合わせとは、データを送受信する複数の産業機器のグループであり、本実施形態のように、コントローラ10とモータ制御装置20との間で通信するのであれば、産業機器のペアである。別の言い方をすれば、通信を行う産業機器の組み合わせは、データの送信側の機器と受信側の機器の組み合わせである。本実施形態では、マスタ機器であるコントローラ10と、スレーブ機器であるモータ制御装置20と、が通信するので、通信を行う産業機器の組み合わせは、マスタ機器とスレーブ機器の組み合わせとなる。また、本実施形態では、コントローラ10において設定部102が実現されるので、設定部102は、コントローラ10の通信相手となるモータ制御装置20ごとに、暗号化に関する設定を行う。なお、設定部102は、ネットワークN内の全てのモータ制御装置20の設定をするのではなく、一部のモータ制御装置20についてのみ設定をしてもよい。
暗号化通信に関する設定とは、暗号化通信を利用するか否かの設定、利用する暗号方式の設定、及び利用する鍵の設定の少なくとも1つを意味する。利用する暗号方式の設定とは、利用する暗号方式の種類を意味してもよいし、利用する暗号方式のビット数を意味してもよい。本実施形態では、設定部102は、暗号化通信を利用するか否かの決定結果、利用する暗号方式、及び利用する鍵の各々を設定データDT2に記録することによって設定を行う場合を説明するが、設定内容は他のデータに保持されてもよい。
本実施形態では、コントローラ10がモータ制御装置20から受信する機器情報に機種が示されており、設定部102は、機器情報を参照して機種を特定し、暗号化通信に関する設定を行う場合を説明するが、機種は、任意の方法で取得されてよい。例えば、ユーザがパーソナルコンピュータ等を利用して入力してモータ制御装置20の機種を入力してもよく、この場合、設定部102は、ユーザが入力した機種を参照して機種を特定する。他にも例えば、コントローラ10は、モータ制御装置20に対し、機器情報とは別に機種情報だけを要求してもよい。
機種と設定内容との関係は、データ記憶部100に記憶されており、本実施形態では、この関係が機種データDT1に示されている。この関係は、機種データDT1以外に定義されていてもよく、例えば、プログラムコード(アルゴリズム)の一部として示されていてもよいし、数式やテーブルなどの形式で示されてもよい。設定部102は、上記関係を参照し、モータ制御装置20の機種に関連付けられた設定内容に基づいて、暗号化通信に関する設定を行う。例えば、設定部102は、機種データDT1を参照し、モータ制御装置20の機種に関連付けられた設定内容を特定する。設定部102は、当該モータ制御装置20に対し、当該特定した設定内容を関連付けて設定データDT2に格納することによって、設定を行う。
本実施形態では、設定部102は、ネットワーク構成が変更されたと判定された場合に、複数のモータ制御装置20の暗号化通信に関する設定を行う。別の言い方をすれば、設定部102は、ネットワーク構成が変更されたと判定されることを条件として、暗号化通信に関する設定をする。設定部102は、ネットワーク構成が変更されたと判定されない場合には、暗号化通信に関する設定をせず、ネットワーク構成が変更されたと判定された場合に、暗号化通信に関する設定を行う。
なお、設定部102は、ネットワーク構成が変更された場合ではなく、他のタイミングで暗号化通信に関する設定をしてもよい。例えば、設定部102は、電源投入時に設定をしてもよいし、コンフィグレーション時に設定をしてもよい。また例えば、設定部102は、ユーザがパーソナルコンピュータ等から所定の操作をした場合に設定をしてもよいし、所定の時刻が訪れた場合などに定期的に設定をしてもよい。
また、設定部102は、モータ制御装置20の機種以外の情報に基づいて、暗号化通信に関する設定をしてもよい。例えば、設定部102は、モータ制御装置20の役割、性能、又はシリアル番号に基づいて、暗号化通信に関する設定をしてもよい。また例えば、設定部102は、モータ制御装置20の物理的構成(例えば、SOC24の有無)に基づいて、暗号化通信に関する設定をしてもよい。他にも例えば、設定部102は、モータ制御装置20の機種に関係なく、全てのモータ制御装置20について共通の設定をして、同じ暗号方式の同じ鍵が用いられるようにもよい。
[暗号化部]
暗号化部103は、送信データを暗号化する。送信データは、送信側の機器から見て送信対象となるデータである。コントローラ10の場合、送信データは、モータ制御装置20に対する指令(コマンド)を示す指令データである。指令データには、指令の内容やモータ30に対する出力などのパラメータが含まれる。暗号化部103は、データ記憶部100に記憶された鍵と暗号アルゴリズムに基づいて、送信データを暗号化する。暗号化の方法自体は、公知の方法を利用すればよい。
本実施形態の通信システム1には、同期通信可能な3つ以上の産業機器が含まれており、暗号化通信を利用する産業機器の組み合わせ(例えば、コントローラ10とモータ制御装置20A,20B,20D)と、暗号化通信を利用しない産業機器の組み合わせ(例えば、コントローラ10とモータ制御装置20C)と、が混在可能である。ここでの混在可能とは、暗号化通信をするグループと、非暗号化通信をするグループと、が含まれ得る状態を意味し、必ずしも両方とも含まれていなければならないわけではない。例えば、暗号化部103は、暗号化通信を利用するモータ制御装置20と通信する場合に送信データを暗号化し、暗号化通信を利用しないモータ制御装置20と通信する場合には送信データを暗号化しない。
本実施形態では、どのモータ制御装置20が暗号化通信を利用するかについては、設定部102により設定されるので、暗号化部103は、設定部102の設定結果に基づいて、暗号化通信を利用するモータ制御装置20と、暗号化通信を利用しないモータ制御装置20と、を特定する。例えば、暗号化部103は、設定データDT2を参照し、送信先のモータ制御装置20の暗号化通信の有無を特定し、送信データを暗号化するか否かを判定する。
また、本実施形態の通信システム1には、同期通信可能な3つ以上の産業機器が含まれており、第1の暗号方式で暗号化通信する産業機器の組み合わせ(例えば、コントローラ10とモータ制御装置20A,20B)と、第2の暗号方式で暗号化通信する産業機器の組み合わせ(例えば、コントローラ10とモータ制御装置20D)と、が混在可能である。ここでの混在可能とは、第1の暗号方式を利用するグループと、第2の暗号方式を利用するグループと、が含まれ得る状態を意味し、必ずしも両方とも含まれていなければならないわけではない。第1の暗号方式と第2の暗号方式は、互いに異なっていればよく、例えば、DESとRSAのように暗号方式のロジック自体が異なっていてもよいし、暗号方式のロジック自体は同じであるが利用するビット数が異なっていてもよい。例えば、暗号化部103は、送信データの送信先のモータ制御装置20に設定された暗号方式に基づいて、送信データを暗号化する。
どのモータ制御装置20がどの暗号方式及び鍵を利用するかについては、設定部102により設定されるので、暗号化部103は、設定部102の設定結果に基づいて、利用する暗号方式及び鍵を特定する。例えば、暗号化部103は、設定データDT2を参照し、送信先のモータ制御装置20の暗号方式及び鍵を特定し、当該特定した暗号方式及び鍵に基づいて、送信データを暗号化する。
[送信部]
送信部104は、他の産業機器に送信データを送信する。ここでの他の産業機器とは、通信相手の産業機器(送信データの送信先の産業機器)であり、本実施形態では、指令を送るモータ制御装置20である。送信部104は、暗号化通信を利用するモータ制御装置20に対し、暗号化された送信データを送信し、暗号化通信を利用しないモータ制御装置20に対し、暗号化されていない平文の送信データを送信する。
[受信部]
受信部105は、他の産業機器から、暗号化された受信データを受信する。ここでの他の産業機器とは、通信相手の産業機器(受信データの送信元の産業機器)であり、本実施形態では、指令を送ったモータ制御装置20である。受信データは、受信側の機器から見て受信対象となるデータである。コントローラ10の場合、受信データは、モータ制御装置20からのレスポンスを示す応答データである。例えば、応答データには、指令に対するモータ制御装置20の動作結果が示される。受信部105は、暗号化通信を利用するモータ制御装置20から、暗号化された受信データを受信し、暗号化通信を利用しないモータ制御装置20から、平文の受信データを送信する。
[復号化部]
復号化部106は、受信データを復号化する。復号化部106は、データ記憶部100に記憶された鍵と暗号アルゴリズムに基づいて、受信データを復号化する。復号化の方法自体は、公知の方法を利用すればよい。
復号化部106は、暗号化通信を利用するモータ制御装置20と通信する場合に受信データを復号化し、暗号化通信を利用しないモータ制御装置20と通信する場合には受信データは平文なので復号化しない。どのモータ制御装置20が暗号化通信を利用するかについては、設定部102により設定されるので、暗号化部103は、設定部102の設定結果に基づいて、暗号化通信を利用するモータ制御装置20と、暗号化通信を利用しないモータ制御装置20と、を特定する。例えば、復号化部106は、設定データDT2を参照し、送信元のモータ制御装置20の暗号化通信の有無を特定し、受信データを復号化するか否かを判定する。
また、本実施形態では、複数の暗号方式が混在可能なので、復号化部106は、受信データの送信元のモータ制御装置20に設定された暗号方式及び鍵に基づいて、受信データを復号化する。どのモータ制御装置20がどの暗号方式及び鍵を利用するかについては、設定部102により設定されるので、復号化部106は、設定部102の設定結果に基づいて、利用する暗号方式及び鍵を特定する。例えば、復号化部106は、設定データDT2を参照し、送信元のモータ制御装置20の暗号方式及び鍵を特定し、当該特定した暗号方式及び鍵に基づいて、受信データを復号化する。
[1−3−2.モータ制御装置において実現される機能]
図2に示すように、モータ制御装置20A,20B,20Dでは、データ記憶部200、暗号化部201、送信部202、受信部203、及び復号化部204が実現される。一方、モータ制御装置20Cは、暗号化通信を利用しないので、暗号化部201と復号化部204は実現されず、データ記憶部200、送信部202及び受信部203が実現される。
データ記憶部200は、記憶部22及びSOC24内のメモリを主として実現される。暗号化部201及び復号化部204は、CPU21を主として実現されてもよいが、本実施形態では、SOC24を主として実現される。送信部202及び受信部203は、SOC24を主として実現されてもよいが、本実施形態では、CPU21を主として実現される。少なくとも暗号化部201及び復号化部204が、第2の制御回路の一例であるSOC24によって実現されるようにすればよく、他の構成がSOC24によって実現されてもよい。
[データ記憶部]
データ記憶部200は、通信を行うために必要なデータを記憶する。例えば、データ記憶部200は、暗号化通信で利用する鍵と、暗号アルゴリズムと、を記憶する。データ記憶部200は、ある1つの暗号方式に対して複数の鍵を記憶してもよい。複数の暗号方式に対応する場合には、データ記憶部200は、暗号方式ごとに鍵を記憶してもよいし、複数の暗号方式に共通の鍵を記憶してもよい。また、複数の暗号方式に対応する場合には、データ記憶部200は、暗号方式ごとに暗号アルゴリズムを記憶する。鍵は、予めデータ記憶部200に記憶されていてもよいし、コントローラ10によって配信されてもよい。
なお、データ記憶部200が記憶するデータは、上記の例に限られない。例えば、データ記憶部200は、モータ制御装置20が対応する暗号方式を示す情報を記憶してもよいし、機器情報を記憶してもよい。また例えば、データ記憶部200は、機器情報とは別にシリアル番号及び機種情報を記憶してもよいし、コントローラ10のIPアドレスを記憶してもよい。また例えば、データ記憶部200は、モータ30を制御するためのプログラム又はパラメータを記憶してもよい。
[暗号化部]
暗号化部201は、送信データを暗号化する。ここでの送信データは、コントローラ10から見ると受信データである。モータ制御装置20の場合、送信データは、モータ制御装置20に対するレスポンスである。送信データには、センサ40A及びエンコーダ50Aの検出信号に基づく物理量などが格納されたり、時系列的に動作状況が格納されたトレースデータなどが格納されたりする。暗号化部201は、データ記憶部200に記憶された鍵と暗号アルゴリズムに基づいて、送信データを暗号化する。暗号化の方法自体は、公知の方法を利用すればよい。
[送信部]
送信部202は、他の産業機器に送信データを送信する。ここでの他の産業機器とは、通信相手の産業機器(送信データの送信先の産業機器)であり、本実施形態では、レスポンスを送るコントローラ10である。モータ制御装置20A,20B,20Dの送信部202は、コントローラ10に暗号化された送信データを送信し、モータ制御装置20Cの送信部202は、コントローラ10に平文の送信データを送信する。
[受信部]
受信部203は、他の産業機器から、受信データを受信する。ここでの他の産業機器とは、通信相手の産業機器(受信データの送信元の産業機器)であり、本実施形態では、指令を送るコントローラ10である。また、ここでの受信データは、コントローラ10から見ると送信データである。モータ制御装置20A,20B,20Dの受信部203は、コントローラ10から、暗号化された受信データを受信し、モータ制御装置20Cの受信部203は、コントローラ10から、平文の受信データを送信する。
[復号化部]
復号化部204は、受信データを復号化する。復号化部204は、データ記憶部200に記憶された鍵と暗号アルゴリズムに基づいて、受信データを復号化する。復号化の方法自体は、公知の方法を利用すればよい。
[1−4.通信システムで実行される処理]
次に、通信システム1で実行される処理について説明する。ここでは、通信システム1で実行される処理の一例として、暗号化通信に関する設定をするためのコンフィグレーション処理と、モータ30を制御するためのモータ制御処理と、について説明する。以降説明する処理は、図2に示す機能ブロックにより実行される処理の一例である。
[コンフィグレーション処理]
図5は、コンフィグレーション処理を示すフロー図である。コンフィグレーション処理は、CPU11,21がそれぞれ記憶部12,22に記憶されたプログラムに従って動作することによって実行される。なお、コンフィグレーション処理における通信は、同期通信であってもよいし、非同期通信であってもよい。
図5に示すように、まず、コントローラ10において、CPU11は、ネットワーク構成が変更されたか否かを判定する(S100)。ネットワーク構成の変更有無の判定方法は、先述した通りであり、例えば、CPU11は、ユーザがネットワーク構成を変更した時に行う変更操作が行われたか否かを判定する。S100においては、コンフィグレーションの実行要否が判定されるということもできる。
ネットワーク構成が変更されたと判定されない場合(S100;N)、本処理は終了する。この場合、設定データDT2を変更する必要がないので、既存の設定データDT2に基づいて、コントローラ10とモータ制御装置20との間の通信が行われる。なお、設定データDT2が記憶部12に存在しない場合には、S100の処理が省略され、S101〜S105の処理が実行されてもよい。
一方、ネットワーク構成が変更されたと判定された場合(S100;Y)、CPU11は、ネットワークN全体に対し、機器情報を要求する(S101)。S101においては、CPU11は、ブロードキャストアドレス宛てに、機器情報を送信する旨の指令を送信する。ネットワークNに接続された全ての機器は、当該指令に応じて自身の機器情報を送信し、コントローラ10は、ネットワークNに何の機器が接続されているかを知ることができる。
モータ制御装置20においては、機器情報の要求を受信し(S102)、CPU21は、コントローラ10に、自身の機器情報を送信する(S103)。機器情報は、予め記憶部22に記憶されており、S103においては、CPU21は、記憶部22に記憶された機器情報を読み出して送信する。
コントローラ10においては、各モータ制御装置20から機器情報を受信し(S104)、CPU11は、当該機器情報と機種データDT1とに基づいて、各モータ制御装置20の暗号化通信に関する設定を行い(S105)、本処理は終了する。S105においては、CPU11は、機器情報を参照して機器名と機種を特定し、当該機器名に対し、当該特定した機種に関連付けられた設定内容を関連付けて設定データDT2に格納することによって、暗号化通信に関する設定を行う。S105の処理が実行されることにより、モータ制御装置20ごとに、暗号化通信の利用有無、利用する暗号方式、及び利用する鍵が設定される。
[モータ制御処理]
図6は、モータ制御処理を示すフロー図である。モータ制御処理は、CPU11,21がそれぞれ記憶部12,22に記憶されたプログラムに従って動作し、SOC24が自身に記憶されたファームウェアに従って動作することによって実行される。なお、モータ制御処理における通信は、同期通信であってもよいし、非同期通信であってもよい。
図6に示すように、まず、コントローラ10において、CPU11は、記憶部12に記憶されたプログラム及びパラメータに基づいて、モータ制御装置20に対する指令データを生成する(S200)。S200において生成される指令データは、コントローラ10から見れば送信データであり、モータ制御装置20から見れば受信データである。
CPU11は、コンフィグレーション処理により設定された設定データDT2に基づいて、指令データの送信先のモータ制御装置20の暗号化通信に関する設定を特定する(S201)。S201においては、CPU11は、設定データDT2を参照し、送信先のモータ制御装置20に関連付けられた設定内容を取得する。本実施形態では、コントローラ10とモータ制御装置20A,20B,20Dとの間では、暗号化通信が行われるので、後述するS202〜S211の処理が実行され、コントローラ10とモータ制御装置20Cとの間では、非暗号化通信が行われるので、後述するS212〜S217の処理が実行される。
送信先のモータ制御装置20が暗号化通信を利用する場合(S201;暗号化通信)、即ち、送信先がモータ制御装置20A,20B,20Dである場合、CPU11は、設定データDT2に基づいて、指令データを暗号化する(S202)。S202においては、CPU11は、設定データDT2が示す暗号方式及び鍵に基づいて、指令データを暗号化する。CPU11は、送信先のモータ制御装置20に、S202で暗号化された指令データを送信する(S203)。
モータ制御装置20A,20B,20Dにおいては、暗号化された指令データを受信し(S204)、SOC24は、指令データを復号化する(S205)。S205においては、SOC24のCPU240は、暗号チップ241に指令データを復号化させ、復号化された指令データを取得してCPU21に送る。
CPU21は、復号化された指令データに基づいて、モータ30の動作を制御する(S206)。S206においては、CPU21は、指令データに基づいて、モータ30への出力電圧を制御する。CPU21は、指令データに対するレスポンスである応答データを生成する(S207)。S207においては、CPU21は、センサ40及びエンコーダ50の各々の検出信号に基づいて、応答データを生成し、SOC24に送る。
SOC24は、S207で生成した応答データを暗号化する(S208)。S208においては、SOC24の暗号チップ241Bは、自身に記憶された鍵に基づいて、応答データを暗号化する。SOC24は、コントローラ10に、S208で暗号化した応答データを送信する(S209)。
コントローラ10においては、暗号化された応答データを受信し(S210)、CPU11は、応答データを復号化する(S211)。S211においては、CPU11は、記憶部12に記憶された鍵に基づいて、暗号化された応答データを取得し、記憶部12に記録する。
一方、送信先のモータ制御装置20が暗号化通信を利用しない場合(S201;非暗号化通信)、即ち、送信先がモータ制御装置20Cである場合、CPU11は、通信相手のモータ制御装置20に、指令データを暗号化せずに平文で送信する(S212)。
モータ制御装置20Cにおいては、平文の指令データを受信し(S213)、CPU21は、指令データに基づいて、モータ30の動作を制御する(S214)。S214の処理は、S206の処理と同様である。続くS215の処理とS216の処理は、S207の処理とS209の処理と同様である。S215で生成された応答データは、暗号化されずに、S216において平文で送信される。コントローラ10においては、平文の応答データを受信する(S217)。受信した応答データは、記憶部12に記録される。
実施形態1の通信システム1によれば、同期通信可能な複数の産業機器を含む通信システム1において、通信を行う複数の産業機器が、送信データを暗号化して送信し、受信データを復号化することにより、送信データ及び受信データの改ざんを防止し、セキュリティを高めることができる。例えば、モータ30を制御するモータ制御装置20が産業機器に相当する場合、モータ30の動作指令や動作波形が改ざんされると、モータ制御に異常をきたす可能性があるが、データの改ざんを防止することで、モータ制御に異常をきたすことを防止することができる。
また、通信を行う産業機器の組み合わせごとに、暗号化通信に関する設定が行われることにより、通信を行う産業機器の組み合わせに応じた柔軟な通信が可能になる。例えば、通信を行う産業機器の組み合わせに、暗号化通信に対応していない産業機器が含まれている場合、暗号化通信をしないようにして、暗号化通信に対応していない産業機器が復号化できず動作に支障をきたすことを防止することができる。また例えば、通信を行う産業機器の組み合わせに含まれる産業機器の性能に応じて、暗号化通信の強度(暗号化及び復号化の計算量)を変えるようにした場合、性能に応じたセキュリティ向上、処理負荷軽減、及び処理速度向上を実現できる。また例えば、通信を行う産業機器の組み合わせに含まれる産業機器が利用可能な暗号方式で暗号化通信するようにした場合、確実に暗号化と復号化をすることができ、産業機器の動作に支障をきたすことを防止することができる。
また、通信を行う産業機器の組み合わせごとに、当該組み合わせに含まれる産業機器の機種に基づいて暗号化通信に関する設定が行われることにより、機種に応じた柔軟な通信が可能になる。例えば、通信を行う産業機器の組み合わせに、暗号化通信に対応していない機種の産業機器が含まれている場合、暗号化通信をしないようにして、暗号化通信に対応していない機種の産業機器が復号化できず動作に支障をきたすことを防止することができる。また例えば、通信を行う産業機器の組み合わせに含まれる産業機器の機種の性能に応じて、暗号化通信の強度(暗号化及び復号化の計算量)を変えるようにした場合、機種の性能に応じたセキュリティ向上、処理負荷軽減、及び処理速度向上を実現できる。また例えば、通信を行う産業機器の組み合わせに含まれる産業機器の機種が利用可能な暗号方式で暗号化通信するようにした場合、確実に暗号化と復号化をすることができ、特定の機種の産業機器の動作に支障をきたすことを防止することができる。
また、通信システム1において、暗号化通信を利用する産業機器の組み合わせと、暗号化通信を利用しない産業機器の組み合わせと、を混在可能とすることで、より柔軟な通信が可能になる。例えば、暗号化通信に対応可能な産業機器と、暗号化通信に対応していない産業機器と、が混在していた場合に、全ての産業機器で暗号化通信をしようとすると、暗号化通信に対応していない産業機器は、データを復号化することができず、動作に支障をきたす可能性がある。この点、通信システム1によれば、暗号化通信に対応していない産業機器については、暗号化通信を利用しないことで、動作に支障をきたすことを防止することができる。更に、暗号化通信に対応可能な産業機器については、暗号化通信をすることで、セキュリティを担保することができる。
また、通信システム1において、第1の暗号方式で暗号化通信する産業機器の組み合わせと、第2の暗号方式で暗号化通信する産業機器の組み合わせと、を混在可能とすることで、より柔軟な通信が可能になる。例えば、性能の異なる産業機器が混在していた場合に、全ての産業機器で高い強度の暗号化通信をしようとすると、低性能の産業機器は、処理負荷が高くなり、動作に支障をきたす可能性がある。この点、通信システム1によれば、高性能の産業機器については、計算量の多い高い強度の暗号方式を利用し、低性能の産業機器については、計算量の少ない低い強度の暗号方式を利用することができ、セキュリティを高めつつ、産業機器の処理負荷を軽減することができる。
また、少なくとも暗号化部及び復号化部が、自身に接続された機器を制御するための第1の制御回路(例えば、CPU21)とは別に設けられた、暗号化通信をするための第2の制御回路(例えば、SOC24)により実現されることで、暗号化及び復号化のために第1の制御回路を使用しないようにすることができ、処理負荷を低減することができる。例えば、産業機器に外付けで第2の制御回路を接続する場合には、産業機器内部に第2の制御回路を組み込まなくても、暗号化通信に対応させることができる。
また、通信システム1のネットワーク構成が変更されたと判定された場合に、複数の産業機器の暗号化通信に関する設定を行うことにより、最新のネットワーク構成に応じた暗号化通信を提供し、セキュリティを効果的に高めることができる。
また、マスタ機器とスレーブ機器が通信する場合のセキュリティを向上させることができる。
[2.実施形態2]
実施形態1では、モータ制御装置20の機種に応じて、暗号化通信の有無や暗号方式が決定される場合を説明したが、通信システム1では、暗号化通信が必要なデータもあれば、暗号化通信が不要なデータもある。このため、データの種類に応じて、暗号化通信の有無が決定されたり暗号方式が決定されたりしてもよい。以降、通信システム1の別実施形態である実施形態2について説明する。なお、実施形態2では、実施形態1と同様の構成については説明を省略する。
実施形態2では、コントローラ10のデータ記憶部100は、データの種類ごとに暗号化通信の要否が示された種類データDT3を記憶する。図7は、種類データDT3のデータ格納例を示す図である。図7に示すように、種類データDT3は、データの種類と、暗号化通信の要否と、が示されている。なお、これらの関係は、種類データDT3以外に定義されていてもよく、例えば、プログラムコード(アルゴリズム)の一部として示されていてもよいし、数式やテーブルなどの形式で示されてもよい。種類データDT3には、データの種類ごとに暗号方式及び鍵が示されていてもよい。
図7のデータ格納例であれば、動作波形、動作指令、及びパラメータは、盗み見られたり改ざんされたりすると、ユーザのノウハウが流出したりモータ制御装置20の動作に支障をきたしたりするため、暗号化通信が必要とされている。一方、機器情報は、盗み見られたり改ざんされたりしてもあまり影響はないとして、暗号化通信は不要とされている。なお、モータ制御装置20のデータ記憶部200も同様の種類データDT3を記憶しているものとする。
コントローラ10の暗号化部103は、送信データの種類に基づいて、送信データを暗号化する。本実施形態では、暗号化部103は、種類データDT3と送信データの種類に基づいて、送信データを暗号化する。例えば、暗号化部103は、送信データの種類に基づいて、送信データを暗号化するか否かを決定する。また例えば、暗号化部103は、送信データの種類に基づいて、送信データの暗号方式を決定する。また例えば、暗号化部103は、送信データの種類に基づいて、送信データの暗号化で使用する鍵を決定する。モータ制御装置20の暗号化部201についても、暗号化部103と同様に、送信データの種類に基づいて、送信データを暗号化する。
コントローラ10の復号化部106は、受信データの種類に基づいて、受信データを復号化する。本実施形態では、復号化部106は、種類データDT3と受信データの種類に基づいて、受信データを復号化する。例えば、復号化部106は、受信データの種類に基づいて、受信データを復号化するか否かを決定する。また例えば、復号化部106は、受信データの種類に基づいて、受信データの暗号方式を決定する。また例えば、復号化部106は、受信データの種類に基づいて、受信データの復号化で使用する鍵を決定する。モータ制御装置20の復号化部204についても、復号化部106と同様に、受信データの種類に基づいて、受信データを復号化する。
実施形態2では、図6と同様のフローでモータ制御処理が実行されるが、S200において指令データが生成された場合に、CPU11は、指令データの種類に基づいて、暗号化するデータであるか否かを判定する。暗号化するデータであると判定された場合、S201の処理に移行し、指令データが暗号化されて送信される。一方、暗号化するデータであると判定されない場合、S212の処理に移行し、平文で指令データが送信される。
また、S207又はS215において応答データが生成された場合に、CPU21は、応答データの種類に基づいて、暗号化するデータであるか否かを判定する。暗号化するデータであると判定された場合、S208又はS216の処理が実行され、応答データが暗号化されて送信される。一方、暗号化するデータであると判定されない場合に、S208又はS216の処理は実行されず、平文で応答データが送信される。
実施形態2の通信システム1によれば、送信データの種類に基づいて送信データを暗号化し、受信データの種類に基づいて受信データを復号化することにより、データの種類に応じた暗号化と復号化をすることができ、機種に応じた柔軟な通信が可能になる。例えば、データの種類によってその重要度は異なる。重要なデータについては、暗号化する必要があり、あまり重要ではないデータについては、そもそも暗号化する必要がないこともある。この点、重要なデータに絞って暗号化することにより、あまり重要ではないデータを暗号化及び復号化する必要がなくなり、産業機器の処理負荷を軽減することができる。また例えば、全てのデータを暗号化する場合であったとしても、重要なデータについては、強度の高い暗号方式で暗号化し、あまり重要ではないデータについては、強度の低い暗号方式で暗号化することで、全てのデータについて複雑な計算を要する強度の高い暗号方式が利用されるわけではなくなるので、産業機器の処理負荷を軽減し、処理速度を向上することができる。
[3.実施形態3]
実施形態1及び2では、モータ制御装置20の機種やデータの種類に応じて、暗号化通信の有無や暗号方式が決定される場合を説明したが、同期通信を利用するか否かに基づいて、暗号化通信の有無や暗号方式が決定されてもよい。以降、通信システム1の別実施形態である実施形態3について説明する。なお、実施形態3では、実施形態1及び2と同様の構成については説明を省略する。
コントローラ10の暗号化部103は、同期通信を利用するか否かに基づいて、送信データを暗号化する。同期通信を利用するか否かは、モータ制御処理やコンフィグレーション処理などを実行するためのプログラムに記述されているものとする。暗号化部103は、送信データが生成されて送信される前に、送信データが同期通信で送信されるか否かを判定する。例えば、暗号化部103は、送信データが同期通信で送信される場合に送信データを暗号化し、送信データが同期通信で送信されない場合に送信データを暗号化しない。これとは逆に、暗号化部103は、送信データが同期通信で送信される場合に送信データを暗号化せず、送信データが同期通信で送信されない場合に送信データを暗号化してもよい。モータ制御装置20の暗号化部201についても、暗号化部103と同様に、同期通信を利用するか否かに基づいて、送信データを暗号化する。
復号化部106は、同期通信を利用するか否かに基づいて、受信データを復号化する。復号化部106は、受信データが受信される前又は後に、受信データが同期通信で受信されるか否かを判定する。例えば、復号化部106は、受信データが同期通信で受信される場合に受信データを復号化し、受信データが同期通信で送信されない場合に受信データを復号化しない。これとは逆に、復号化部106は、受信データが同期通信で受信される場合に受信データを復号化せず、受信データが同期通信で受信されない場合に受信データを暗号化してもよい。モータ制御装置20の復号化部204についても、復号化部106と同様に、同期通信を利用するか否かに基づいて、受信データを復号化する。
実施形態3では、図6と同様のフローでモータ制御処理が実行されるが、S200において指令データが生成された場合に、CPU11は、指令データを同期通信で送信するか否かを判定する。例えば、指令データを同期通信で送信すると判定された場合、S201の処理に移行し、指令データが暗号化されて送信される。一方、指令データを同期通信で送信すると判定されない場合に、S212の処理に移行し、平文で指令データが送信される。
また、S207又はS215において応答データが生成された場合に、CPU21は、応答データの種類に基づいて、応答データを同期通信で送信するか否かを判定する。例えば、応答データを同期通信で送信すると判定された場合に、S208又はS216の処理が実行され、応答データが暗号化されて送信される。一方、指令データを同期通信で送信すると判定されない場合に、S208又はS216の処理は実行されず、平文で応答データが送信される。
なお、指令データを同期通信で送信すると判定された場合、S212の処理に移行し、平文で指令データが送信されてもよい。一方、指令データを同期通信で送信すると判定されない場合に、S201の処理に移行し、指令データが暗号化されて送信されてもよい。また、応答データを同期通信で送信すると判定された場合に、S208又はS216の処理は実行されず、平文で応答データが送信されてもよい。一方、指令データを同期通信で送信すると判定されない場合に、S208又はS216の処理が実行され、応答データが暗号化されて送信されてもよい。
実施形態3の通信システム1によれば、同期通信を利用するか否かに基づいて送信データを暗号化し、同期通信を利用するか否かに基づいて受信データを復号化することにより、通信方式に応じた暗号化と復号化をすることができ、通信方式に応じた柔軟な通信が可能になる。例えば、同期通信を利用する場合は、暗号化と復号化をせず、非同期通信を利用する場合は、暗号化と復号化をさせることができる。また例えば、同期通信を利用する場合は、計算量の少ない低強度の暗号方式を利用し、非同期通信を利用する場合は、計算量の多い高強度の暗号方式を利用することができる。同期通信ではデータを送受信するときの時間的な猶予がなく、データを改ざんされる恐れが明らかにない場合に、このようにすることで、セキュリティを担保しつつ、産業機器の処理負荷を軽減したり、産業機器の動作に遅延が発生することを防止したりすることもできる。また例えば、上記とは逆に、同期通信を利用する場合は、暗号化と復号化をさせ、非同期通信を利用する場合は、暗号化と復号化をしないようにすることができる。また例えば、同期通信を利用する場合は、計算量の多い高強度の暗号方式を利用し、非同期通信を利用する場合は、計算量の少ない低強度の暗号方式を利用することができる。同期通信では機器の動作に直結する重要なデータをやり取りすることが多く、このようにすることで、重要なデータの改ざんを防止し、セキュリティを担保することができる。一方、非同期通信ではあまり重要ではない低いデータをやり取りすることがあり、このようにすることで、産業機器の処理負荷を軽減したり、産業機器の動作に遅延が発生することを防止したりすることもできる。
[4.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
(1)例えば、モータ制御装置20によって利用可能な暗号方式が異なることがあり、コントローラ10は、その全てを利用可能ではないこともある。このため、コントローラ10が利用可能な暗号方式と、モータ制御装置20が利用可能な暗号方式と、が比較され、これらが一致する場合に暗号化通信が利用され、これらが一致しない場合に暗号化通信が利用されないようにしてもよい。
図8は、変形例(1)の機能ブロック図である。図8に示すように、変形例(1)では、コントローラ10において決定部107が実現される。決定部107は、CPU11を主として実現される。本変形例では、通信を行う複数の産業機器は、少なくとも1つの暗号方式を利用可能であり、決定部107は、通信を行う複数の産業機器に共通する暗号方式に基づいて、暗号化通信で利用する暗号方式を決定する。
決定部107は、コントローラ10が利用可能な暗号方式と、モータ制御装置20が利用可能な暗号方式と、を比較し、これらの間で一致する暗号方式を、暗号化通信で利用する暗号方式として決定する。複数の暗号方式が一致していた場合、決定部107は、何れか1つの暗号方式を選択すればよく、ランダムに選択してもよいし、後述する変形例(2)のように優先順位に基づいて選択してもよい。複数の暗号方式が一致していた場合、データの種類やデータの送信タイミングなどに応じて、利用する暗号方式が使い分けられるようにしてもよい。
なお、コントローラ10が利用可能な暗号方式を示すデータは、予めデータ記憶部100に記憶されているものとする。また、モータ制御装置20が利用可能な暗号方式を示すデータは、予めデータ記憶部100に記憶されていてもよいし、モータ制御装置20から取得されるようにしてもよい。また、コントローラ10とモータ制御装置20との間で利用可能な暗号方式が一致していない場合(共通の暗号方式がない場合)には、平文でデータが送信されてもよいし、ユーザに対して所定のアラームが出力されてもよい。
変形例(1)によれば、通信を行う複数の産業機器に共通する暗号方式に基づいて、複数の産業機器の間で利用する暗号方式を決定することで、暗号化通信を確実に実行することができる。
(2)また例えば、変形例(1)において、コントローラ10が利用可能な暗号方式と、モータ制御装置20が利用可能な暗号方式と、の間で共通するものが複数個あった場合には、暗号方式の優先度に基づいて、利用する暗号方式が決定されるようにしてもよい。本変形例では、データ記憶部100は、暗号方式の優先度を示す優先度データDT4を記憶する。
図9は、優先度データDT4のデータ格納例を示す図である。図9に示すように、優先度データDT4には、複数の暗号方式の各々の優先度が示されている。優先度は、暗号方式の優先順位を識別可能な情報であればよく、例えば、数値で示されてもよいし、記号で示されてもよい。図9のデータ格納例であれば、数値が低いほど優先度が高いことを示す。
変形例(2)の決定部107は、通信を行う複数の産業機器に共通する暗号方式が複数存在した場合、当該複数の暗号方式の各々に定められた優先度に基づいて、暗号化通信で利用する暗号方式を決定する。決定部107は、複数の暗号方式のうち優先度が最も高い暗号方式を、暗号化通信で利用する暗号方式として決定してもよいし、複数の暗号方式のうち優先度が閾値以上の暗号方式の何れかを、暗号化通信で利用する暗号方式として決定してもよい。
変形例(2)によれば、通信を行う複数の産業機器に共通する暗号方式が複数存在した場合、当該複数の暗号方式の各々に定められた優先度に基づいて、複数の産業機器の間で利用する暗号方式を決定することにより、優先度に応じた最適な暗号方式を利用し、セキュリティを効果的に向上させることができる。
(3)また例えば、通信システム1では、プログラムのデバッグのためにデータがやり取りされることもあるが、通信を行う複数の産業機器は、デバッグが行われる場合には、暗号化通信を行わないようにしてもよい。例えば、コントローラ10は、デバッグモードであるか否かを判定し、デバッグモードであると判定した場合には、暗号化通信を行わず、デバッグモードではないと判定した場合には、暗号化通信を行う。デバッグモードであるか否かを示すデータは、データ記憶部100に記憶させておけばよい。例えば、ユーザは、デバッグを行う際に、パーソナルコンピュータ等をコントローラ10に接続し、デバッグモードを開始することを示す操作を行う。この場合に、デバッグモードが開始される。デバッグモードでは、図6に示すモータ制御処理が実行されるが、暗号化通信が行われない。
変形例(3)によれば、デバッグが行われる場合には、暗号化通信を行わないことで、より確実にデバッグを行うことができる。
(4)また例えば、上記変形例を組み合わせてもよい。
また例えば、通信システム1では、コントローラ10とモータ制御装置20との通信が暗号化されるのではなく、あるコントローラ10と別のコントローラ10との通信が暗号化されてもよい。また例えば、コントローラ10と、モータ制御装置20以外のコンピュータ(例えば、データベースサーバ)との通信が暗号化されてもよい。また例えば、モータ制御装置20同士が通信可能な場合には、あるモータ制御装置20と別のモータ制御装置20との通信が暗号化されてもよい。また例えば、判定部101、設定部102、及び決定部107は、コントローラ10ではなく、モータ制御装置20において実現されてもよいし、他のコンピュータにおいて実現されてもよい。
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。