(57)【要約】      （修正有）【課題】正当な権限を有しない制御サーバによって制御対象機器が制御される事態を防止することができる機器制御システムを提供する。【解決手段】機器制御システム１は、ＭＱＴＴ（Ｍｅｓｓａｇｅ  Ｑｕｅｕｅ  Ｔｅｌｅｍｅｔｒｙ  Ｔｒａｎｓｐｏｒｔ）プロトコルに従いブローカ４を介して通信を行う制御対象機器３を制御可能なシステムである。機器制御システム１に備わる制御サーバ５は、制御対象機器に対する今回の制御メッセージに、制御対象機器に送信した過去の制御メッセージを暗号化鍵として認証付き暗号化を施し、今回の制御メッセージの暗号文及び認証タグを含む認証付き暗号化データを生成して制御対象機器に送信する。制御対象機器は、受信した認証付き暗号化データに対して、過去の制御メッセージを復号鍵とした復号及び認証タグを用いた検証を行い、その結果に基づいて、今回の制御メッセージに基づく制御を受け付けるか否か判定する。【選択図】図１
2020136717.tif 000002
【特許請求の範囲】
【請求項１】
ＭＱＴＴ（Message  Queue  Telemetry  Transport）プロトコルに従ってブローカを介して通信を行う制御対象機器を制御可能な機器制御システムであって、
前記制御対象機器を制御する制御サーバを具備し、
前記制御サーバは、前記制御サーバからの前記制御対象機器に対する今回の制御メッセージに、前記制御対象機器に送信された過去の制御メッセージを暗号化鍵として認証付き暗号化を施し、前記今回の制御メッセージの暗号文及び認証タグを含む認証付き暗号化データを生成し、
前記制御対象機器は、前記過去の制御メッセージを復号鍵とした前記認証付き暗号化データの復号及び前記認証タグを用いた検証を行い、その結果に基づいて、前記今回の制御メッセージに基づく制御を受け付けるか否か判定することを特徴とする機器制御システム。
【請求項２】
前記過去の制御メッセージは、制御毎に変更になるデータ項目を少なくとも含むことを特徴とする請求項１に記載の機器制御システム。
【請求項３】
他のサーバをさらに具備し、前記他のサーバは、前記認証付き暗号化データを前記制御サーバから受信し、前記過去の制御メッセージを復号鍵として、前記復号及び前記検証を行うことを特徴とする請求項１又は請求項２に記載の機器制御システム。
【請求項４】
ＭＱＴＴ（Message  Queue  Telemetry  Transport）プロトコルに従ってブローカを介して通信を行う制御対象機器を制御可能な機器制御方法であって、
前記制御対象機器を制御する制御サーバに、
前記制御サーバからの前記制御対象機器に対する今回の制御メッセージに、前記制御対象機器に送信した過去の制御メッセージを暗号化鍵として認証付き暗号化を施し、前記今回の制御メッセージの暗号文及び認証タグを含む認証付き暗号化データを生成するステップと、
前記認証付き暗号化データを、前記ブローカを介して前記制御対象機器に送信するステップと、を行わせ、
前記制御対象機器に、
前記ブローカから前記認証付き暗号化データを受信させるステップと、
前記過去の制御メッセージを復号鍵とした前記認証付き暗号化データの復号及び前記認証タグを用いた検証を実施させるステップと、
前記検証の結果に基づいて前記今回の制御メッセージに基づく制御を受け付けるか否か判定するステップと、
を行わせることを特徴とする機器制御方法。
【請求項５】
前記過去の制御メッセージは、制御毎に変更になるデータ項目を少なくとも含むことを特徴とする請求項４に記載の機器制御方法。
【請求項６】
他のサーバに、前記認証付き暗号化データを前記制御サーバから受信させ、前記過去の制御メッセージを復号鍵として、前記復号及び前記検証を行なわせることを特徴とする請求項４又は請求項５に記載の機器制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器制御システム及び機器制御方法に関する。
【背景技術】
【０００２】
近年、ＩｏＴ（Internet  of  Things）と呼ばれる、様々な機器をインターネットに接続し、情報交換することにより相互に制御する仕組みが普及している。このようなＩｏＴの仕組みを利用し、工場内に設置された複数のＰＬＣ（Programmable  Logic  Controller）が検出するデータを含む、多種多様なデータをネットワーク経由で収集するシステムが提案されている（例えば、特許文献１参照）。
【０００３】
一般に、ＩｏＴにおける通信においては、ＴＣＰ／ＩＰスタックをベースに作成されたＭＱＴＴ（Message  Queue  Telemetry  Transport）プロトコルが標準的な通信プロトコルとして利用されている。このＭＱＴＴプロトコルでは、ネットワーク内におけるエンティティのタイプとして、メッセージ・ブローカ（ブローカ）及びクライアントの２つが定義され、これらの間でメッセージが送受信される。
【０００４】
ＭＱＴＴプロトコルでは、ブローカ上に作成されるトピックを介してメッセージの送受信が行われる。ブローカは、あるトピック宛のメッセージをクライアントから受信すると、そのトピックからの受信を予め要求していた別のクライアントにそのメッセージを配信する。また、ＭＱＴＴプロトコルに従った通信を行う際、ブローカがクライアントに対してユーザ名及びパスワードを利用した認証を行うことで、ネットワーク上の安全性を確保している。このようなＭＱＴＴの仕組みを利用することにより、複数の機器からリアルタイムでデータを収集する一方、特定の機器に対して遠隔地から操作することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−２２００５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ＩｏＴの普及に伴い、制御対象機器とその制御サーバがＭＱＴＴクライアントとしてブローカを介して通信するシステム構成が出てきている。このような構成では、複数の制御サーバ（制御アプリケーション）が、単一のブローカを介して同一の制御対象機器に対して異なる制御を実行することが考えられる。制御対象機器がエアコンであり、単一のブローカを介してこのエアコンを制御する第１、第２の制御サーバが存在する場合を想定する。例えば、第１の制御サーバにより、エアコンの設定温度の変更等の遠隔操作制御が実行される。
【０００７】
このような環境下においても、既存のＭＱＴＴプロトコルに従えば、ＭＱＴＴクライアントである制御サーバおよび制御対象機器に対する認証は、それらとブローカとの間のみで行われる。このため、実際の通信段階において、制御対象機器と制御サーバは、相手がブローカとの間でどのように認証されたかを知らないまま、ブローカ上のトピックを介して通信を行うことになる。したがって、例えば、悪意の第三者によって制御サーバがブローカに接続されてしまうと、制御対象機器を制御（例えば、遠隔操作制御）することが可能となる。制御対象となる制御対象機器の種別によっては重大な損害が発生する事態も想定される。
【０００８】
本発明は、このような実情に鑑みてなされたものであり、正当な権限を有しない制御サーバによって制御対象機器が制御される事態を防止することができる機器制御システム及び機器制御方法を提供することを目的の１つとする。
【課題を解決するための手段】
【０００９】
本実施の形態の機器制御システムは、その一態様では、ＭＱＴＴ（Message  Queue  Telemetry  Transport）プロトコルに従ってブローカを介して通信を行う制御対象機器を制御可能な機器制御システムであって、前記制御対象機器を制御する制御サーバを具備し、前記制御サーバは、前記制御サーバからの前記制御対象機器に対する今回の制御メッセージに、前記制御対象機器に送信した過去の制御メッセージを暗号化鍵として認証付き暗号化を施し、前記今回の制御メッセージの暗号文及び認証タグを含む認証付き暗号化データを生成し、前記制御対象機器は、前記過去の制御メッセージを復号鍵とした前記認証付き暗号化データの復号及び前記認証タグを用いた検証を行い、その結果に基づいて、前記今回の制御メッセージに基づく制御を受け付けるか否か判定することを特徴とする。
【００１０】
本実施の形態の機器制御方法は、その一態様では、ＭＱＴＴ（Message  Queue  Telemetry  Transport）プロトコルに従ってブローカを介して通信を行う制御対象機器を制御可能な機器制御方法であって、前記制御対象機器を制御する制御サーバに、前記制御サーバからの前記制御対象機器に対する今回の制御メッセージに、前記制御対象機器に送信した過去の制御メッセージを暗号化鍵として認証付き暗号化を施し、前記今回の制御メッセージの暗号文及び認証タグを含む認証付き暗号化データを生成するステップと、前記認証付き暗号化データを、前記ブローカを介して前記制御対象機器に送信するステップと、を行わせ、前記制御対象機器に、前記ブローカから前記認証付き暗号化データを受信させるステップと、前記過去の制御メッセージを復号鍵とした前記認証付き暗号化データの復号及び前記認証タグを用いた検証を実施させるステップと、前記検証の結果に基づいて前記今回の制御メッセージに基づく制御を受け付けるか否か判定するステップと、を行わせることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、正当な権限を有しない制御サーバによって制御対象機器が制御される事態を確実に防止することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態に係る機器制御システムのネットワーク構成の説明図である。
【図２】本実施の形態に係る機器制御システムが有する第１制御サーバの機能ブロック図である。
【図３】本実施の形態に係る機器制御システムが有するブローカの機能ブロック図である。
【図４】本実施の形態に係る機器制御システムの制御対象となるＩｏＴ機器の機能ブロック図である。
【図５】本実施の形態に係る機器制御システムの第１制御サーバの制御メッセージ生成処理部が生成する制御メッセージを示す説明図である。
【図６】本実施の形態に係る機器制御システムにおける制御メッセージによるＩｏＴ機器の制御パラメータの更新の具体例を示す説明図である。
【図７】本実施の形態に係る機器制御システムにおいて、第１制御サーバからＩｏＴ機器を制御する際の動作を説明するためのシーケンス図である。
【図８】本実施の形態に係る本実施の形態に係る機器制御システムにおける認証付き暗号化と各種データの遷移を示す説明図である。
【発明を実施するための形態】
【００１３】
ＩｏＴの普及に伴い、複数の制御サーバ（制御アプリケーション）が、単一のブローカを介して同一の制御対象機器に対して異なる制御を実行することが想定される。制御サーバは、クラウドアプリケーションやサービス提供アプリケーションと呼ぶこともできる。このような環境下においても、現状では、制御サーバ及び制御対象機器に対する認証が、それらとブローカとの間のみで行われる。このため、制御対象機器と制御サーバは、相手がブローカとの間でどのように認証されたかを知らないまま、ブローカ上のトピックを介して通信を行うことになる。したがって、例えば、悪意の第三者によって制御サーバがブローカに接続されてしまうと、制御対象機器が遠隔操作される事態が発生し得る。制御対象機器の種別によっては重大な損害が発生する事態も想定される。
【００１４】
本発明者は、上記課題を解決するために鋭意検討した結果、制御サーバから制御対象機器に過去に送信した制御のためのメッセージ（以下、「過去の制御メッセージ」という）を共通鍵として認証付き暗号化を実施し、制御サーバからのメッセージの真正性を保証することを見出し、本発明に想到した。
【００１５】
すなわち、本発明に係る機器制御システムの骨子は、ＭＱＴＴプロトコルに従ってブローカを介して通信を行う制御対象機器を制御可能な機器制御システムであって、前記制御対象機器を制御する制御サーバを具備し、前記制御サーバは、前記制御サーバからの前記制御対象機器に対する今回の制御メッセージに、前記制御対象機器に送信した過去の制御メッセージを暗号化鍵として認証付き暗号化を施し、前記今回の制御メッセージの暗号文及び認証タグを含む認証付き暗号化データを生成し、前記制御対象機器は、前記過去の制御メッセージを復号鍵とした前記認証付き暗号化データの復号及び前記認証タグを用いた検証を行い、その結果に基づいて、前記今回の制御メッセージに基づく制御を受け付けるか否か判定することである。
【００１６】
また、本発明に係る機器制御方法の骨子は、ＭＱＴＴプロトコルに従ってブローカを介して通信を行う制御対象機器を制御可能な機器制御方法であって、前記制御対象機器を制御する制御サーバに、前記制御サーバからの前記制御対象機器に対する今回の制御メッセージに、前記制御対象機器に送信した過去の制御メッセージを暗号化鍵として認証付き暗号化を施し、前記今回の制御メッセージの暗号文及び認証タグを含む認証付き暗号化データを生成するステップと、前記認証付き暗号化データを、前記ブローカを介して前記制御対象機器に送信するステップと、を行わせ、前記制御対象機器に、前記ブローカから前記認証付き暗号化データを受信させるステップと、前記過去の制御メッセージを復号鍵とした前記認証付き暗号化データの復号及び前記認証タグを用いた検証を実施させるステップと、前記検証の結果に基づいて前記今回の制御メッセージに基づく制御を受け付けるか否か判定するステップと、を行わせることである。
【００１７】
本発明に係る機器制御システムによれば、制御サーバは、過去の制御メッセージを暗号化鍵として、今回の制御メッセージの暗号化及び認証タグの生成を行い、暗号文及び認証タグを含む認証付き暗号化データを得て、これをブローカを介して制御対象機器に送信する。制御対象機器は、ブローカから受信した認証付き暗号化データに含まれる暗号文を過去の制御メッセージを復号鍵として復号すると共に認証タグを生成し、当該認証タグを、前記認証付き暗号化データに含まれる認証タグを用いて検証することで、正当な制御サーバからの制御メッセージであることを確認した上で制御を実行する。これにより、第３者の機関・機能等を介することなく、制御メッセージの真正性を検証できる。その結果、正当な権限を有しない制御サーバによって制御対象機器が制御される事態を確実に防止することができる。
【００１８】
以下、本発明に係る機器制御システムの実施形態について、図面を参照して説明する。図１は、本実施の形態に係る機器制御システムのネットワーク構成の説明図である。図１に示すように、本実施の形態に係る機器制御システム１は、インターネット２を介して制御対象機器としてのＩｏＴ機器３（３ａ、３ｂ、３ｃ…３ｎ）が接続されている。以下においては、これらのＩｏＴ機器３ａ、３ｂ、３ｃ…３ｎを総称する際、ＩｏＴ機器３と呼ぶものとする。
【００１９】
本発明の制御対象機器の一例である、ＩｏＴ機器３は、インターネット２を介して通信を行う機能を有する任意の機器で構成される。例えば、ＩｏＴ機器３は、任意の場所に設置されるエアコン等で構成されるが、これに限定されない。また、ＩｏＴ機器３は、これらのエアコン等を制御するＰＬＣ（Programmable  Logic  Controller）などの制御装置で構成されてもよい。
【００２０】
機器制御システム１は、例えば、クラウドサービスを提供するクラウドサービス事業者のネットワーク内に配設される。例えば、機器制御システム１は、ＭＱＴＴ（Message  Queue  Telemetry  Transport）ブローカ（以下、単に「ブローカ」という）４、第１制御サーバ５、第２制御サーバ６及び第３制御サーバ７を含んで構成される。しかしながら、機器制御システム１の構成については、これに限定されるものではなく適宜変更が可能である。制御サーバの数は、３つに限定されず、１つ、２つ又は４つ以上含まれていてもよい。機器制御システム１は、クラウドサービス事業者のネットワーク以外のネットワークに配設されてもよい。
【００２１】
ブローカ４は、ＭＱＴＴプロトコルに従って、機器制御システム１の構成要素からのメッセージを特定のＩｏＴ機器３に配信する。また、ブローカ４は、ＭＱＴＴプロトコルに従って通信を行う際、通信対象となるＩｏＴ機器３との間において、ユーザ名及びパスワードを利用した認証を行う機能を有している。なお、ブローカ４は、ＭＱＴＴサーバと呼ばれることもある。
【００２２】
第１、第２、第３制御サーバ５、６、７は、ＩｏＴ機器３を制御可能な制御サーバである。例えば、第１制御サーバ５（第２制御サーバ６、第３制御サーバ７）は、制御の一態様として、所定のＩｏＴ機器３を遠隔操作する遠隔操作制御を実行する。第１、第２、第３制御サーバ５、６、７は、ＩｏＴ機器３に対して同一の制御を実行してもよいし、異なる制御を実行してもよい。
【００２３】
本実施の形態における遠隔操作制御の一例は、ＩｏＴ機器３の制御パラメータの値を所望の値に更新することである。より具体的には、ＩｏＴ機器３がエアコンである場合、空調設定温度に対応する制御パラメータの値を、現在の設定値から所望の設定値に更新することにより行われる。
【００２４】
以下、機器制御システム１の構成要素及びＩｏＴ機器３の機能について、図２〜図４を参照して説明する。なお、第１制御サーバ５、第２制御サーバ６及び第３制御サーバ７は、同一の機能を有するため、第１制御サーバ５について代表して説明し、第２制御サーバ６及び第３制御サーバ７の説明を省略する。以下においては、機器制御システム１（制御サーバ）からの制御要求の一例として、遠隔操作等の操作要求を例示して説明する。
【００２５】
［制御サーバの機能］
図２は、本実施の形態に係る機器制御システム１が有する第１制御サーバ５の機能ブロック図である。図２に示すように、第１制御サーバ５は、記憶部５１、処理部５２及び通信部５３を含んで構成されるが、これに限定されない。第１制御サーバ５の使用者又は管理者が第１制御サーバ５を操作するために必要な操作部を備えるようにしてもよい。例えば、第１制御サーバ５は、汎用的なコンピュータシステムに制御サーバプログラムをインストールすることで実現されるサーバ装置で構成されるが、これに限定されない。第１制御サーバ５は、クラウドアプリケーションのように、サーバ装置の一部の機能により実現されてもよい。
【００２６】
記憶部５１は、制御サーバプログラム記憶部５１１、制御メッセージ記憶部５１２及び秘密情報記憶部５１３を有する。制御サーバプログラム記憶部５１１は、第１制御サーバ５が後述の各種処理を実行するためのプログラムを記憶する。
【００２７】
制御メッセージ記憶部５１２は、自らが生成した制御メッセージ、及び、第２制御サーバ６又は第３制御サーバ７から受信し、復号及び検証された制御メッセージを記憶する。
【００２８】
秘密情報記憶部５１３は、ＭＱＴＴプロトコルで使用する秘密情報、例えば、ユーザ名及びパスワードを記憶する。
【００２９】
処理部５２は、制御メッセージ生成処理部５２１、暗号化処理部５２２、復号・検証処理部５２３及びメッセージ保存処理部５２４を有する。
【００３０】
制御メッセージ生成処理部５２１は、制御対象機器を制御するための制御メッセージを生成する処理（以下、「制御メッセージ生成処理」という）を行う。制御メッセージ生成処理の詳細については後述する。
【００３１】
暗号化処理部５２２は、制御メッセージ生成処理で生成した制御メッセージ全体を暗号化する処理（以下、「暗号化処理」という）を行う。暗号化処理では、共通鍵を用いて制御メッセージ全体を暗号化して暗号文を生成すると共に、ＭＡＣ（Message Authentication Code；メッセージ認証コード）を生成する。ＭＡＣは、上述の認証タグの一例であるが、特に限定されない。暗号化処理の詳細については後述する。
【００３２】
復号・検証処理部５２３は、受信した暗号文を復号する処理（以下、「復号処理」という）と、ＭＡＣを検証する「検証処理」を行う。本実施の形態では、復号処理及び検証処理は同時に行われるので、「復号・検証処理」又は「認証付き復号」ともいう。復号・検証処理の詳細については後述する。
【００３３】
メッセージ保存処理部５２４は、制御メッセージ生成処理部５２１が生成した制御メッセージを制御メッセージ記憶部５１２に記憶させる処理（以下、「制御メッセージ保存処理」という）を行う。また、メッセージ保存処理部５２４は、復号・検証処理部５２３により、検証された制御メッセージを制御メッセージ記憶部５１２に記憶させ、検証済み制御メッセージを保存する処理（以下、「検証済みメッセージ保存処理」という）を行う。制御メッセージ保存処理及び検証済みメッセージ保存処理の詳細については後述する。
【００３４】
通信部５３は、ブローカ通信部５３１を有する。ブローカ通信部５３１は、ブローカ４との間の通信を行う。ブローカ通信部５３１は、ブローカ４を介してＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７との間で制御メッセージを送受する際にブローカ４と通信を行う。通信部５３とブローカ４及び／又は第２、第３制御サーバ６、７との間の通信は、有線により行われることが望ましいが、無線により行うようにしてもよい。
【００３５】
［ブローカの機能］
図３は、本実施の形態に係る機器制御システム１が有するブローカ４の機能ブロック図である。図３に示すように、ブローカ４は、記憶部４１、処理部４２及び通信部４３を含んで構成されるが、これに限定されない。ブローカ４の使用者又は管理者がブローカ４を操作するために必要な操作部を備えるようにしてもよい。例えば、ブローカ４は、汎用的なコンピュータシステムにブローカプログラムをインストールすることで実現されるサーバ装置で構成されるが、これに限定されない。ブローカ４は、サーバ装置の一部の機能により実現されてもよい。
【００３６】
記憶部４１は、ブローカプログラム記憶部４１１及びトピック記憶部４１２を有する。ブローカプログラム記憶部４１１は、ブローカ４が各種処理を実行するためのプログラムを記憶する。
【００３７】
トピック記憶部４１２は、制御サーバ又はＩｏＴ機器３から送信されたメッセージの送り先を特定するためのトピックを記憶する。トピックは、機器制御システム１のネットワーク管理者、或いは、ＩｏＴ機器３からの登録要求に応じてトピック記憶部４１２に記憶される。
【００３８】
処理部４２は、トピック識別処理部４２１及びメッセージ配信処理部４２２を有する。トピック識別処理部４２１は、制御サーバ又はＩｏＴ機器３から送信されたメッセージに含まれるトピックを識別する処理（以下、「トピック識別処理」という）を行う。メッセージ配信処理部４２２は、トピック識別処理部４２１が識別したトピックに従ってメッセージを配信する処理（以下、「メッセージ配信処理」という）を行う。
【００３９】
通信部４３は、制御サーバ通信部４３１及びＩｏＴ機器通信部（以下、「機器通信部」という）４３３を有する。制御サーバ通信部４３１は、制御サーバ（例えば、第１制御サーバ５）との間の通信を行う。機器通信部４３３は、ＩｏＴ機器３との間の通信を行う。通信部４３と第１、第２、第３制御サーバ５、６、７及び／又はＩｏＴ機器３との間の通信は、有線により行われることが望ましいが、無線により行うようにしてもよい。
【００４０】
［ＩｏＴ機器の機能］
図４は、本実施の形態に係る機器制御システム１の制御対象となるＩｏＴ機器３の機能ブロック図である。図４に示すように、ＩｏＴ機器３は、記憶部３１、処理部３２及び通信部３３を含んで構成されるが、これに限定されない。ＩｏＴ機器３の使用者又は管理者がＩｏＴ機器３を操作するために必要な操作部を備えるようにしてもよい。例えば、ＩｏＴ機器３は、所定機能を有する各種機器にＩｏＴ機器プログラム（以下、適宜「機器プログラム」という）をインストールすることで実現される機器で構成されるが、これに限定されない。
【００４１】
記憶部３１は、ＩｏＴ機器プログラム記憶部（以下、「機器プログラム記憶部」という）３１１、秘密情報記憶部３１２及び制御メッセージ記憶部３１３を有する。機器プログラム記憶部３１１は、ＩｏＴ機器３が各種処理を実行するためのプログラムを記憶する。
【００４２】
秘密情報記憶部３１２は、図２を参照して説明した秘密情報記憶部５１３と同様である。
【００４３】
制御メッセージ記憶部３１３は、第１制御サーバ５、第２制御サーバ６及び第３制御サーバ７から受信し、復号及び検証された制御メッセージを記憶する。
【００４４】
処理部３２は、復号・検証処理部３２１、メッセージ保存処理部３２２、判定処理部３２３及び制御実行処理部３２４を有する。
【００４５】
復号・検証処理部３２１は、上述の復号・復号処理を行う。復号・検証処理の詳細については後述する。
【００４６】
メッセージ保存処理部３２２は、復号・検証処理部３２１により復号・検証された制御メッセージを制御メッセージ記憶部３１３に記憶させ、検証済みメッセージ保存処理を行う。検証済みメッセージ保存処理の詳細について後述する。
【００４７】
判定処理部３２３は、復号・検証処理部３２１での検証結果に基づいて、ＩｏＴ機器３で制御を受け付けるか否かの判定する処理（以下、「判定処理」という）を行う。判定処理の詳細については後述する。
【００４８】
制御実行処理部３２４は、第１制御サーバ５から受信した制御メッセージで指示された制御を実行する処理（以下、「制御実行処理」という）を行う。制御実行処理は、判定処理での判定が「可」である場合、すなわち制御メッセージの真正性が保証された場合に実行される。
【００４９】
通信部３３は、ブローカ通信部３３１を有する。ブローカ通信部３３１は、ブローカ４との間の通信を行う。通信部３３は、ブローカ４を介して制御サーバ（例えば、第１制御サーバ５）と通信を行うことができる。通信部３３とブローカ４との間の通信は、有線により行われることが望ましいが、無線により行うようにしてもよい。
【００５０】
［制御サーバ側での処理］
＜制御メッセージ生成処理＞
制御メッセージ生成処理の詳細について説明する。本実施の形態では、第１制御サーバ５において、制御メッセージ生成処理部５２１は、例えば、ＩｏＴ機器３での遠隔操作制御のための制御メッセージを生成する。
【００５１】
［制御メッセージ］
図５は、本実施の形態に係る機器制御システム１の第１制御サーバ５の制御メッセージ生成処理部５２１が生成する制御メッセージを示す説明図である。図５に示すように制御メッセージには、データ項目Ｎｏ．１〜６に、パラメータ「シーケンス番号」、「タイムスタンプ」、「発行者ＩＤ」、「制御対象機器ＩＤ」、「制御対象パラメータ」、「制御指令値」及び「ＭＡＣ」の値がそれぞれ格納されるように構成されている。
【００５２】
各パラメータについては、「シーケンス番号」は、制御メッセージ毎に付与される通番となる番号を示す。また、「タイムスタンプ」は、制御メッセージの送信時刻を示す。また、「発行者ＩＤ」は、制御メッセージを送信する第１制御サーバ５の識別情報を示す。また、制御対象機器ＩＤは、制御対象となるＩｏＴ機器３の識別情報を示す。また、「制御対象パラメータ」は、制御対象となるＩｏＴ機器３における制御パラメータの名称（識別情報の一例）を示す。「制御指令値」は、「制御対象パラメータ」に格納された制御パラメータの値を更新するための値を示す。「ＭＡＣ」については後述する。
【００５３】
ここで、「タイムスタンプ」は、上述の通り、制御メッセージの送信時刻を示すが、実際には、制御メッセージ生成処理で制御メッセージを生成した時刻を用いている。しかし、「タイムスタンプ」は、この例には限定されない。
【００５４】
図５に示す制御メッセージは一例であり、データ項目（パラメータ）はここで示したものに限定されない。
【００５５】
図５に示す制御メッセージでは、説明の便宜のため、制御メッセージにデータ項目の番号（Ｎｏ．）及びパラメータ名が含まれているが、制御メッセージにこれらが含まれている必要はない。
【００５６】
図５に示す制御メッセージにおいて、「シーケンス番号」、「タイムスタンプ」及び「ＭＡＣ」のデータ項目（パラメータ）は、制御毎に変更になる、言い換えれば、制御メッセージ生成処理で制御メッセージを生成する度に必ず変化するデータ項目（パラメータ）である。
【００５７】
制御毎に変更になるデータ項目としては、「シーケンス番号」及び「タイムスタンプ」の少なくともいずれか１つが制御メッセージに含まれていればよいが、認証の正確性を高める観点から両者を含んでいることが好ましい。
【００５８】
＜制御メッセージ保存処理＞
メッセージ保存処理部５２４は、制御メッセージ生成処理部５２１が生成した制御メッセージを制御メッセージ記憶部５１２に記憶させ、保存する。本実施の形態では、第１制御サーバ５で生成した制御メッセージが、「過去の制御メッセージ」として制御メッセージ記憶部５１２に記憶される。この「過去の制御メッセージ」は、第１制御サーバ５からＩｏＴ機器３へ制御メッセージを送信する度に更新される。ここで、「過去」とは、今回行われるＩｏＴ機器への制御（以下、「今回」の制御という）よりも前の制御を意味する。本実施の形態では、今回の一つ前、つまり「前回」の制御メッセージを使用している。以下、過去の制御メッセージとして前回の制御メッセージを使用した場合を例に挙げて説明する。
【００５９】
＜暗号化処理＞
暗号化処理の詳細について説明する。本実施の形態において、暗号化処理部５２２は、図５に示す制御メッセージのデータ項目Ｎｏ．１〜６まで（以下、「データ全体」という）と、暗号化鍵としての前回の制御メッセージとを、認証付き暗号化アルゴリズムの一例であるＡＥＳ−ＧＣＭに入力する。この結果、暗号化された制御メッセージのデータ全体（以下、「暗号文」という）と、ＭＡＣ（図５に示すメッセージの項目Ｎｏ．７「ＭＡＣ」）とが出力される。
【００６０】
ここで暗号化鍵として使用している前回の制御メッセージには、認証の正確性を高める観点から、図５に示す制御メッセージのデータ全体、及び、データ全体に基づいて生成したＭＡＣが含まれていることが好ましい。
【００６１】
本実施の形態で使用される認証付き暗号化アルゴリズムは、ＡＥＳ−ＧＣＭに限定されない。
【００６２】
＜復号・検証処理＞
第１制御サーバ５の復号・検証処理部５２３は、第２制御サーバ６又は第３制御サーバ７から受信した制御メッセージを復号及び検証する。第１制御サーバ５で行われる復号・検証処理は、後述のＩｏＴ機器３での復号・検証処理と同様である。
【００６３】
＜検証済みメッセージ保存処理＞
メッセージ保存処理部５２４は、復号・検証処理での検証が成功したならば、検証済み制御メッセージを制御メッセージ記憶部５１２に記憶させ、保存する。本実施の形態では、第１制御サーバ５において、第２制御サーバ６又は第３制御サーバ７から制御メッセージを受信し、復号及び検証が行われる度に、制御メッセージ記憶部５１２に記憶された検証済み制御メッセージが更新される。
【００６４】
［ブローカでの処理］
ブローカ４は、第１制御サーバ５から制御メッセージを受け取る。メッセージを受け取ると、ブローカ４は、当該制御メッセージに含まれるトピックを識別し、そのトピックに応じた配信先に制御メッセージを配信する。ここでは、トピックに、配信対象となるＩｏＴ機器３を識別する内容が含まれる。ブローカ４は、トピックを識別することで、配信先としてＩｏＴ機器３を特定し、メッセージをＩｏＴ機器３に配信する。
【００６５】
このとき、ブローカ４では、制御サーバ通信部４３１が第１制御サーバ５から制御メッセージを受信する。トピック識別処理部４２１が制御メッセージに含まれるトピックを識別する。トピック識別処理部４２１は、トピック記憶部４１２に記憶されたトピック情報に基づいてトピックを識別する。メッセージ配信処理部４２２は、トピック識別処理部４２１が識別したトピックに応じて制御メッセージの配信先を決定する。機器通信部４３３は、メッセージ配信処理部４２２が決定した制御メッセージの配信先であるＩｏＴ機器３に制御メッセージを送信する。
【００６６】
［ＩｏＴ機器側での処理］
＜復号・検証処理＞
復号・検証処理の詳細について説明する。本実施の形態では、ＩｏＴ機器３において、復号・検証処理部３２１は、まず、制御メッセージ記憶部３１３から前回の制御メッセージを取得する。
【００６７】
次いで、復号・検証処理部３２１は、今回受信した暗号文及びＭＡＣ、並びに前回の制御メッセージを、認証付き復号アルゴリズムの一例であるＡＥＳ−ＧＣＭに入力する。この結果、暗号文を復号した、今回の制御メッセージの平文と、今回生成したＭＡＣとが出力される。さらに、復号・検証処理部３２１は、前回の制御メッセージからＭＡＣを算出し、当該算出したＭＡＣと今回受信したＭＡＣとを比較し、両者が一致したならば検証が「成功」したと判定し、両者が一致しなければ検証が「失敗」したと判定し、その結果を示す値（以下、「検出結果」という）を出力する。
【００６８】
＜判定処理＞
判定処理の詳細について説明する。本実施の形態では、ＩｏＴ機器３において、判定処理部３２３は、復号・検証処理での検証結果に基づいて、ＩｏＴ機器３で制御に従った制御実行の可否を判定する。まず、判定処理部３２３は、復号・検証処理での検証結果が「成功」を示す場合には、制御実行を「可」すると判定し、検証結果が「失敗」を示す場合には、制御実行を「否」と判定する。
【００６９】
＜検証済みメッセージ保存処理＞
検証済みメッセージ保存処理の詳細について説明する。本実施の形態では、ＩｏＴ機器３において、メッセージ保存処理部３２２は、復号・検証処理での検証結果が「成功」を示す場合には、今回受信した制御メッセージ（平文）を、制御メッセージ記憶部３１３に記憶させ、検証済み制御メッセージとして保存する。
【００７０】
本実施の形態では、ＩｏＴ機器３において、第１制御サーバ５から受信した制御メッセージに従って制御（遠隔操作）が実行される度に、制御メッセージ記憶部３１３に記憶された検証済み制御メッセージが更新される。これにより、前回の検証済み制御メッセージが制御メッセージ記憶部３１３に秘密情報として保存される。
【００７１】
［認証付き暗号化アルゴリズム］
本実施の形態では、認証付き暗号化アルゴリズム及び認証付き復号アルゴリズムの例としてＡＥＳ−ＧＣＭを用いている。ＡＥＳ−ＧＣＭは、暗号化処理において、今回の制御メッセージと暗号化鍵とを入力すると、暗号化アルゴリズムを用いて制御メッセージのデータ全体を暗号化した暗号文と、暗号学的ハッシュ関数をもちいて生成した認証タグ（ＭＡＣ）とを出力する。そのため、第１制御サーバ５から制御メッセージとしては、暗号文及び認証タグが一緒にＩｏＴ機器３へ送信される。この暗号文及び認証タグを含むデータを、認証付き暗号化データという。
【００７２】
しかし、認証付き暗号化アルゴリズムによっては、認証付き暗号化データの形式が異なることがある。すなわち、ＡＥＳ−ＧＣＭは、制御メッセージのデータ全体（平文）を暗号化した暗号文と、認証タグとを組み合わせた形式である。これに対し、例えば、認証タグを制御メッセージの平文と共に暗号化した形式もある。しかしながら、本実施の形態に係る機器制御システム１において、認証付き暗号化データの形式は特に限定されない。
【００７３】
また、ＡＥＳ−ＧＣＭは、制御メッセージの平文から認証タグを生成しているが、認証付き暗号化アルゴリズムによっては、制御メッセージの暗号文から認証タグを生成することもある。
【００７４】
認証付き暗号化アルゴリズムの他の例としては、ＡＥＳ−ＣＣＭが挙げられる。
【００７５】
また、本実施の形態では、制御メッセージのデータ全体を暗号化鍵及び復号鍵（合わせて「共通鍵」ともいう）に用いているが、前回の制御メッセージの一部を共通鍵に使用することができる。このとき、図５に示す制御メッセージのデータ項目のうち「シーケンス番号」及び「タイムスタンプ」のように、毎回の制御で変更になるデータが含まれることが好ましい。
【００７６】
図６は、本実施の形態に係る機器制御システム１における制御メッセージによるＩｏＴ機器３の制御パラメータの更新の具体例を示す説明図である。図６Ａは、ＩｏＴ機器３における更新前の制御パラメータを示し、図６Ｂは、制御メッセージを示し、図６Ｃは、ＩｏＴ機器３における更新後の制御パラメータを示す。
【００７７】
図６Ａに示すように、ＩｏＴ機器３の制御パラメータ１〜３のそれぞれに対して値が設定されている。ＩｏＴ機器３は、これらの値に基づいて設定パラメータ１〜３に対応する制御を実施するように構成されている。例えば、ＩｏＴ機器３がエアコンである場合、制御パラメータの値が示す空調設定温度に室温が保たれるように空調制御が行われる。
【００７８】
図６Ｂに示す制御メッセージにおいて、制御対象パラメータに格納された「制御パラメータ１」を、制御指令値に格納された値「２００」に更新することが、ＩｏＴ機器３への制御内容として設定されている。
【００７９】
ＩｏＴ機器３は、図６に示す制御メッセージに従い、図６Ｃに示すように、制御パラメータ１の値を「１００」から「２００」に更新する。この結果、ＩｏＴ機器３では、制御パラメータ１に対応する制御において、更新後の値「２００」に従って制御が行われる。
【００８０】
以下、本実施の形態に係る機器制御システム１において、制御サーバからＩｏＴ機器３を制御（遠隔操作）する際の動作について、図７を参照して説明する。図７は、本実施の形態に係る機器制御システム１において、第１制御サーバ５からＩｏＴ機器３を制御する際の動作を説明するためのシーケンス図である。以下では、第１制御サーバ５からＩｏＴ機器３を制御する際の動作について説明するものとする。
【００８１】
図７に示すように、第１制御サーバ５がＩｏＴ機器３を制御する際、まず、第１制御サーバ５が識別情報の一例である制御サーバＩＤ（例えば、「server1」）を、ＭＱＴＴプロトコルを用いて、ブローカ４を介して、ＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７に送信する（Ｓ１０）。ＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７は、受信した制御サーバＩＤを、例えば設定ファイルとして記憶部３１、５１に記憶しておく。これにより、機器サーバＩＤが、ＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７と共有される。
【００８２】
この制御サーバＩＤは、初回の制御メッセージの認証付き暗号化のための共通鍵として使用される。初回の制御において、ＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７が復号及び認証した検証済み制御メッセージを、制御メッセージ記憶部５１２、３１３（図２、図４参照）に記憶する。２回目以降の制御では、制御メッセージ記憶部５１２、３１３に記憶された検証済み制御メッセージを共通鍵として使用する。機器サーバＩＤは、初回に用いる共通鍵の一例に過ぎず、第１制御サーバ５、ＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７が予め共通して保持しているデータであれば使用することが可能であり、特に限定されない。また、制御サーバＩＤの共有方法も、上述の方法に限定されない。
【００８３】
２回目以降の制御では、まず、第１制御サーバ５において、制御メッセージ生成処理が行われる（Ｓ１０１）。次いで、制御メッセージの暗号化が、前回の制御メッセージを暗号化鍵として行なわれる（Ｓ１０２）。Ｓ１０２で得られた認証付き暗号化データを、ブローカ４のトピック宛に送信する（Ｓ１０３）。
【００８４】
ブローカ４は、そのトピックに登録（サブスクライブ）されたＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７に認証付き暗号化データを送信する（Ｓ１０４、Ｓ１０５、Ｓ１０６）。
【００８５】
ＩｏＴ機器３では、認証付き暗号化データを受信したならば、復号・検証処理（Ｓ１１０）、判定処理（Ｓ１１１）、制御実行処理（Ｓ１１２）及び検証済みメッセージ保存処理（Ｓ１１３）が順次行われる。
【００８６】
一方、第２制御サーバ６及び第３制御サーバ７では、認証付き暗号化データを受信したならば、復号・検証処理（Ｓ１２０、Ｓ１３０）及び検証済みメッセージ保存処理（Ｓ１２１、Ｓ１３１）が順次行われる。
【００８７】
このようにして、第１制御サーバ５からＩｏＴ機器３へ送信した制御メッセージは、ＩｏＴ機器３、第２制御サーバ６及び第３制御サーバ７で復号・検証された後、前回の制御メッセージとして保存される。これにより、ＩｏＴ機器３ａだけでなく、第２制御サーバ６及び第３制御サーバ７（本発明の他のサーバの一例）でも復号・検証処理（図７中、Ｓ１２０、Ｓ１３０）を行うことで、第２制御サーバ６及び第３制御サーバ７でも制御メッセージの改ざんやなりすましを検出することが可能になる。
【００８８】
また、今回の制御では主体となっていない第２制御サーバ６及び第３制御サーバ７でも前回の制御メッセージを受信し、復号及び認証し、検証済み制御メッセージを保存しているので、ＩｏＴ機器３への次回の制御が、第１制御サーバ５、第２制御サーバ６及び第３制御サーバ７のいずれから行われても、今回の制御メッセージを共通鍵として使用することが可能になる。
【００８９】
次に、図８を参照して、本実施の形態における各種データの遷移について説明する。図８は、本実施の形態に係る本実施の形態に係る機器制御システム１における認証付き暗号化と各種データの遷移を示す説明図である。図８に示すように、第１制御サーバ５において、今回の制御メッセージが、記憶部５１に保存された前回の制御メッセージを暗号化鍵とした暗号化アルゴリズム（図８中、単に「暗号化」と記載する）で暗号化され、暗号文が生成される。
【００９０】
また、今回の制御メッセージが、記憶部５１に保存された前回の制御メッセージを共通鍵とした暗号学的ハッシュ関数（図８中、単に「ハッシュ関数」と記載する）で演算され、ＭＡＣ（認証タグ）が生成される。
【００９１】
また、今回の制御メッセージが、前回（過去）の制御メッセージとして記憶部５１に保存される。ここで、保存には、前回の制御メッセージを更新すること、及び、前回の制御メッセージを保持したままで、今回の制御メッセージを追加することの両方が含まれる。
【００９２】
その後、暗号文及びＭＡＣを含む認証付き暗号化データが、第１制御サーバ５からブローカ４を介して、ＩｏＴ機器３に送信される。ＩｏＴ機器３では、認証付き暗号化データに含まれる暗号文が、記憶部３１に記憶された前回の制御メッセージを復号鍵とした復号アルゴリズム（図８中、単に「復号」と記載する）で復号され、今回の制御メッセージ（平文）が生成される。
【００９３】
また、今回の制御メッセージが、記憶部３１に保存された前回の制御メッセージを共通鍵とした暗号学的ハッシュ関数で演算され、ＭＡＣが再生成される。次いで、受信したＭＡＣと再生成したＭＡＣとを比較することにより検証が行われる。検証の結果が「成功」であった場合、今回の制御メッセージ（平文）が、前回（過去）の制御メッセージとして記憶部３１に保存される。
【００９４】
以上説明したように機器制御システム１においては、前回の制御メッセージを共通鍵として第１制御サーバ５及びＩｏＴ機器３で共有し、この共有鍵を用いて第１制御サーバ５での認証付き暗号化、及び、ＩｏＴ機器３での復号・検証を行い、第１制御サーバ５が正当な権限を有し、それからの制御を受け付けてもよいか否かを判定しているので、正当な権限を有しない制御サーバによって制御対象機器が制御される事態を確実に防止できるという効果を奏する。
【００９５】
また、認証付き暗号化を前回の制御メッセージ（過去の制御メッセージ）を共通鍵として用いるため、共通鍵を第１制御サーバ５及びＩｏＴ機器３の間で予め共有させておく必要がなくなり、また共通鍵を定期的に更新するなどの管理も省くことができる。
【００９６】
なお、本発明は上記実施の形態に限定されず、種々変更して実施することが可能である。上記実施の形態において、添付図面に図示されている構成要素の大きさや形状、機能などについては、これに限定されず、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて適宜変更して実施することが可能である。
【００９７】
例えば、上記実施の形態では、機器制御システム１がＭＱＴＴプロトコルに従ってＩｏＴ機器３を制御する場合について説明している。しかしながら、ＩｏＴ機器３を制御する際の通信プロトコルは、これに限定されない。例えば、ＭＱＴＴプロトコルのように、非同期で通信制御を行うと共に、ブローカ４などの単一の制御装置で制御対象機器の認証を行う任意の通信プロトコルに適用することができる。
【００９８】
また、上記実施の形態では、前回の制御メッセージを共通鍵に用いて認証付き暗号化及び復号・検証を行っているが、前回の制御メッセージだけでなくさらにそれ以前の制御時に用いられた制御メッセージを一緒に用いてもよい。
【００９９】
すなわち、本発明では、前回の制御メッセージだけでなく、それ以前の制御メッセージ、すなわち過去の制御メッセージを履歴として保存しておき、過去の制御メッセージのうち、いずれか１つ又は複数の組み合わせを認証付き暗号化アルゴリズムに入力し、暗号化及び認証タグの生成を行ってもよい。したがって、前回の制御メッセージを用いるだけではなく、予め定められたルールに従い、例えば、Ｘ回前の制御メッセージとＹ回前の制御メッセージとを組み合わせ、共通鍵として使用することなども本発明に包含される。
【０１００】
また、第１、第２、第３制御サーバ５、６、７及びＩｏＴ機器（図１参照）において、制御メッセージ記憶部３１３、５１２（図２、図３参照）に、過去の制御メッセージの全て又は一定期間の制御で用いたものを記憶しておき、予め定められたルールに従って、暗号化及び復号を行うようにしてもよい。予め定められたルールは、複数の過去の制御メッセージを暗号化及び復号においてどのように取り扱い、使うかを決めたものである。より具体的には、以下のようなルールが考えられるが特に限定されない。
【０１０１】
（１）複数の制御メッセージのうちどれをどのように組み合わせるかのルール
（２）制御メッセージをランダム関数で縮めるかのルール
（３）ランダム関数を使って、暗号側及び復号側で互いのランダムの数値を合わせながら同期をとり、いずれの過去の制御メッセージを使うか、又は、制御メッセージのうちどのデータ項目（パラメータ）を使うかを決めるルール
【０１０２】
このようなルールは、暗号化処理部５２２（図２参照）及び復号・検証処理部３２１、５２３（図２、図４参照）を実現するプログラムに埋め込むか、プログラムが参照するファイルに格納されるが、特に限定されない。
【産業上の利用可能性】
【０１０３】
本発明の機器制御システム及び機器制御方法は、正当な権限を有しない制御サーバによって制御対象機器が制御される事態を確実に防止することができる効果を有するものであり、あらゆるＩｏＴ機器が接続される任意のネットワークに好適である。
【符号の説明】
【０１０４】
１      ：機器制御システム
２      ：インターネット
３、３ａ〜３ｎ：  ＩｏＴ機器（制御対象機器）
３１    ：記憶部
３１１  ：機器プログラム記憶部
３１２  ：秘密情報記憶部
３１３  ：制御メッセージ記憶部
３２    ：処理部
３２１  ：符号・検証処理部
３２２  ：メッセージ保存処理部
３２３  ：判定処理部
３２４  ：制御実行処理部
３３    ：通信部
３３１  ：ブローカ通信部
４      ：ブローカ
４１    ：記憶部
４１１  ：ブローカプログラム記憶部
４１２  ：トピック記憶部
４２    ：処理部
４２１  ：トピック識別処理部
４２２  ：メッセージ配信処理部
４３    ：通信部
４３１  ：制御サーバ通信部
４３３  ：機器通信部
５      ：第１制御サーバ（制御サーバ）
５１    ：記憶部
５１１  ：制御サーバプログラム記憶部
５１２  ：制御メッセージ記憶部
５１３  ：秘密情報記憶部
５２    ：処理部
５２１  ：制御メッセージ生成処理部
５２２  ：暗号化処理部
５２３  ：検証処理部
５２４  ：メッセージ保存処理部
５３    ：通信部
５３１  ：ブローカ通信部
６      ：第２制御サーバ（他のサーバ）
７      ：第３制御サーバ（他のサーバ）
【図１】
2020136717.tif 000003
【図２】
2020136717.tif 000004
【図３】
2020136717.tif 000005
【図４】
2020136717.tif 000006
【図５】
2020136717.tif 000007
【図６】
2020136717.tif 000008
【図７】
2020136717.tif 000009
【図８】
2020136717.tif 000010