TOP > 国内特許検索 > 暗号化制御システム、暗号化制御方法及び暗号化制御プログラム > 明細書

明細書 :暗号化制御システム、暗号化制御方法及び暗号化制御プログラム

発行国 日本国特許庁(JP)
公報種別 再公表特許(A1)
発行日 令和2年11月12日(2020.11.12)
発明の名称または考案の名称 暗号化制御システム、暗号化制御方法及び暗号化制御プログラム
国際特許分類 H04L   9/14        (2006.01)
G09C   1/00        (2006.01)
FI H04L 9/00 641
G09C 1/00 620Z
国際予備審査の請求 未請求
全頁数 33
出願番号 特願2019-548817 (P2019-548817)
国際出願番号 PCT/JP2018/038954
国際公開番号 WO2019/078343
国際出願日 平成30年10月19日(2018.10.19)
国際公開日 平成31年4月25日(2019.4.25)
優先権出願番号 2017203513
優先日 平成29年10月20日(2017.10.20)
優先権主張国 日本国(JP)
指定国 AP(BW , GH , GM , KE , LR , LS , MW , MZ , NA , RW , SD , SL , ST , SZ , TZ , UG , ZM , ZW) , EA(AM , AZ , BY , KG , KZ , RU , TJ , TM) , EP(AL , AT , BE , BG , CH , CY , CZ , DE , DK , EE , ES , FI , FR , GB , GR , HR , HU , IE , IS , IT , LT , LU , LV , MC , MK , MT , NL , NO , PL , PT , RO , RS , SE , SI , SK , SM , TR) , OA(BF , BJ , CF , CG , CI , CM , GA , GN , GQ , GW , KM , ML , MR , NE , SN , TD , TG) , AE , AG , AL , AM , AO , AT , AU , AZ , BA , BB , BG , BH , BN , BR , BW , BY , BZ , CA , CH , CL , CN , CO , CR , CU , CZ , DE , DJ , DK , DM , DO , DZ , EC , EE , EG , ES , FI , GB , GD , GE , GH , GM , GT , HN , HR , HU , ID , IL , IN , IR , IS , JO , JP , KE , KG , KH , KN , KP , KR , KW , KZ , LA , LC , LK , LR , LS , LU , LY , MA , MD , ME , MG , MK , MN , MW , MX , MY , MZ , NA , NG , NI , NO , NZ , OM , PA , PE , PG , PH , PL , PT , QA , RO , RS , RU , RW , SA , SC , SD , SE , SG , SK , SL , SM , ST , SV , SY , TH , TJ , TM , TN , TR , TT
発明者または考案者 【氏名】小木曽 公尚
【氏名】鈴木 崇司
出願人 【識別番号】504133110
【氏名又は名称】国立大学法人電気通信大学
個別代理人の代理人 【識別番号】110000925、【氏名又は名称】特許業務法人信友国際特許事務所
審査請求 未請求
要約 暗号鍵が漏洩するリスクをより低減させることができる、暗号化制御システム、暗号化制御方法及び暗号化制御プログラムを提供する。入力装置、プラント側制御装置及びコントローラには、共通の機能を有する擬似乱数算出部を装備して、時刻同期を行う。そして、同一時刻で同期運転を開始する。このように暗号化制御システムを構成することで、制御システム全体の制御周期に同期して、公開鍵と秘密鍵のペアを切り替えることが可能になる。よって、制御システムに対する、悪意ある第三者による介入を瞬時に且つ明確に検出することが可能になる。
特許請求の範囲 【請求項1】
コントローラと、プラント側制御装置を有する暗号化制御システムであり、
前記コントローラは、
目標値を公開鍵で暗号化して暗号化目標値を出力する第一の暗号化処理部と、
前記第一の暗号化処理部に対し、公開鍵が複数個格納される公開鍵サブテーブルから所定のレコードを選択すると共に、制御システムのパラメータが前記公開鍵サブテーブルの公開鍵によって暗号化された暗号化パラメータが記録されたレコードよりなる暗号化パラメータテーブルから所定のレコードを選択する第一のテーブルレコード選択処理部と、
前記プラント側制御装置から暗号化目標誤差を受信して、前記第一のテーブルレコード選択処理部が選択した前記暗号化パラメータを乗算して暗号化制御入力を出力する乗算部と、
前記乗算部から出力される前記暗号化制御入力に付加する日時情報を提供すると共に、前記第一のテーブルレコード選択処理部に日時情報を提供すると共に起動タイミングを与える第一の日時情報生成部と
を具備し、
前記プラント側制御装置は、
前記コントローラから受信した前記暗号化目標値を復号して目標値を得ると共に、前記コントローラから受信した前記暗号化制御入力を復号して制御入力を得る復号処理部と、
前記制御入力に基づいて所定の制御対象を制御する制御処理部と、
前記制御対象を観測するセンサから観測値を取得する信号変換処理部と、
前記目標値から前記観測値を減算して目標誤差を算出する目標誤差演算処理部と、
前記目標誤差を暗号化して暗号化目標誤差を出力する第二の暗号化処理部と、
前記復号処理部に対し、公開鍵と前記公開鍵の対になる秘密鍵が複数個格納される公開鍵テーブルから所定のレコードを選択すると共に、前記第二の暗号化処理部に対し、前記公開鍵テーブルから所定のレコードを選択する第二のテーブルレコード選択処理部と、
前記第二の暗号化処理部から出力される前記暗号化目標誤差に付加する日時情報を提供すると共に、前記第二のテーブルレコード選択処理部に起動タイミングを与える第二の日時情報生成部と
を具備し、
前記第一の日時情報生成部と、前記第二の日時情報生成部は、相互に同時に起動タイミングを生成するものである、
暗号化制御システム。
【請求項2】
入力装置と、コントローラと、プラント側制御装置を有する暗号化制御システムであり、
前記入力装置は、
目標値を公開鍵で暗号化して暗号化目標値を出力する第一の暗号化処理部と、
前記第一の暗号化処理部に対し、公開鍵が複数個格納される公開鍵サブテーブルから所定のレコードを選択する第一のテーブルレコード選択処理部と、
前記第一のテーブルレコード選択処理部に日時情報を提供すると共に起動タイミングを与える第一の日時情報生成部と
を具備し、
前記コントローラは、
制御システムのパラメータが前記公開鍵サブテーブルの公開鍵によって暗号化された暗号化パラメータが記録されたレコードよりなる暗号化パラメータテーブルから所定のレコードを選択する第二のテーブルレコード選択処理部と、
前記プラント側制御装置から暗号化目標誤差を受信して、前記第二のテーブルレコード選択処理部が選択した前記暗号化パラメータを乗算して暗号化制御入力を出力する乗算部と、
前記乗算部から出力される前記暗号化制御入力に付加する日時情報を提供すると共に、前記第二のテーブルレコード選択処理部に起動タイミングを与える第二の日時情報生成部と
を具備し、
前記プラント側制御装置は、
前記入力装置から受信した前記暗号化目標値を復号して目標値を得ると共に、前記コントローラから受信した前記暗号化制御入力を復号して制御入力を得る復号処理部と、
前記制御入力に基づいて所定の制御対象を制御する制御処理部と、
前記制御対象を観測するセンサから観測値を取得する信号変換処理部と、
前記目標値から前記観測値を減算して目標誤差を算出する目標誤差演算処理部と、
前記目標誤差を暗号化して暗号化目標誤差を出力する第二の暗号化処理部と、
前記復号処理部に対し、公開鍵と前記公開鍵の対になる秘密鍵が複数個格納される公開鍵テーブルから所定のレコードを選択すると共に、前記第二の暗号化処理部に対し、前記公開鍵テーブルから所定のレコードを選択する第三のテーブルレコード選択処理部と、
前記第二の暗号化処理部から出力される前記暗号化目標誤差に付加する日時情報を提供すると共に、前記第三のテーブルレコード選択処理部に起動タイミングを与える第三の日時情報生成部と
を具備し、
前記第一の日時情報生成部と、前記第二の日時情報生成部と、前記第三の日時情報生成部は、相互に同時に起動タイミングを生成するものである、
暗号化制御システム。
【請求項3】
前記第一のテーブルレコード選択処理部と、前記第二のテーブルレコード選択処理部と、前記第三のテーブルレコード選択処理部は、同一の初期値を与えられ、所定の周期に同一の演算処理を行い、前記公開鍵サブテーブルと、前記暗号化パラメータテーブルと、前記公開鍵テーブルのレコード番号に相当する整数を出力する擬似乱数算出部を具備する、
請求項2に記載の暗号化制御システム。
【請求項4】
入力装置から暗号化目標値を含む第一のデータフレームを受信する暗号化目標値受信ステップと、
前記第一のデータフレームに付されているエンコード日時フィールドから第一のエンコード日時情報を読み出し、前記第一のエンコード日時情報から始動日時情報を減算し、所定の周期で除算することで暗号化目標値ステップ数を算出する、暗号化目標値ステップ数算出ステップと、
前記暗号化目標値ステップ数に基づいて第一の擬似乱数を算出し、公開鍵と前記公開鍵の対になる秘密鍵が複数個格納される公開鍵テーブルのレコード番号を前記第一の擬似乱数に基づいて指定して、選択したレコードに格納されている前記秘密鍵を用いて前記暗号化目標値を復号する、暗号化目標値復号ステップと
を有する、暗号化制御方法。
【請求項5】
更に、
コントローラから暗号化パラメータを含む第二のデータフレームを受信する暗号化パラメータ受信ステップと、
前記第二のデータフレームに付されているエンコード日時フィールドから第二のエンコード日時情報を読み出し、前記第二のエンコード日時情報から始動日時情報を減算し、所定の周期で除算することで暗号化パラメータステップ数を算出する、暗号化パラメータステップ数算出ステップと、
前記暗号化パラメータステップ数に基づいて第二の擬似乱数を算出し、前記公開鍵テーブルのレコード番号を前記第二の擬似乱数に基づいて指定して、選択したレコードに格納されている前記秘密鍵を用いて前記暗号化パラメータを復号する、暗号化パラメータ復号ステップと、
前記暗号化パラメータ復号ステップにおいて復号された前記暗号化パラメータの値に所定の演算処理を施して制御入力を得る制御用演算処理ステップと、
前記制御入力に基づいて制御対象が制御され、前記制御対象を観測したセンサから得られた観測値を前記目標値から減算して、目標誤差を得る目標誤差演算処理ステップと、
前記暗号化パラメータステップ数算出ステップにて算出した前記暗号化パラメータステップ数に1を加算した新たなステップ数に基づいて第三の擬似乱数を算出し、前記公開鍵テーブルのレコード番号を前記第三の擬似乱数に基づいて指定して、選択したレコードに格納されている前記公開鍵を用いて前記目標誤差を暗号化する、目標誤差暗号化処理ステップと、
前記目標誤差に、現在日時情報を格納するエンコード日時フィールドと、始動日時情報を格納する始動日時フィールドを付加して、第三のデータフレームを前記コントローラに送信する、暗号化目標誤差送信ステップと
を有する、請求項4に記載の暗号化制御方法。
【請求項6】
計算機に、
入力装置から暗号化目標値を含む第一のデータフレームを受信する暗号化目標値受信ステップと、
前記第一のデータフレームに付されているエンコード日時フィールドから第一のエンコード日時情報を読み出し、前記第一のエンコード日時情報から始動日時情報を減算し、所定の周期で除算することで暗号化目標値ステップ数を算出する、暗号化目標値ステップ数算出ステップと、
前記暗号化目標値ステップ数に基づいて第一の擬似乱数を算出し、公開鍵と前記公開鍵の対になる秘密鍵が複数個格納される公開鍵テーブルのレコード番号を前記第一の擬似乱数に基づいて指定して、選択したレコードに格納されている前記秘密鍵を用いて前記暗号化目標値を復号する、暗号化目標値復号ステップと
を実行させる、暗号化制御プログラム。
【請求項7】
更に、
コントローラから暗号化パラメータを含む第二のデータフレームを受信する暗号化パラメータ受信ステップと、
前記第二のデータフレームに付されているエンコード日時フィールドから第二のエンコード日時情報を読み出し、前記第二のエンコード日時情報から始動日時情報を減算し、所定の周期で除算することで暗号化パラメータステップ数を算出する、暗号化パラメータステップ数算出ステップと、
前記暗号化パラメータステップ数に基づいて第二の擬似乱数を算出し、前記公開鍵テーブルのレコード番号を前記第二の擬似乱数に基づいて指定して、選択したレコードに格納されている前記秘密鍵を用いて前記暗号化パラメータを復号する、暗号化パラメータ復号ステップと、
前記暗号化パラメータ復号ステップにおいて復号された前記暗号化パラメータの値に所定の演算処理を施して制御入力を得る制御用演算処理ステップと、
前記制御入力に基づいて制御対象が制御され、前記制御対象を観測したセンサから得られた観測値を前記目標値から減算して、目標誤差を得る目標誤差演算処理ステップと、
前記暗号化パラメータステップ数算出ステップにて算出した前記暗号化パラメータステップ数に1を加算した新たなステップ数に基づいて第三の擬似乱数を算出し、前記公開鍵テーブルのレコード番号を前記第三の擬似乱数に基づいて指定して、選択したレコードに格納されている前記公開鍵を用いて前記目標誤差を暗号化する、目標誤差暗号化処理ステップと、
前記目標誤差に、現在日時情報を格納するエンコード日時フィールドと、始動日時情報を格納する始動日時フィールドを付加して、第三のデータフレームを前記コントローラに送信する、暗号化目標誤差送信ステップと
を実行させる、請求項6に記載の暗号化制御プログラム。
発明の詳細な説明 【技術分野】
【0001】
本発明は、暗号化制御システム、暗号化制御方法及び暗号化制御プログラムに関する。
【背景技術】
【0002】
近年、インターネット等の情報技術の発達に伴い、電気、ガス、水道等の、国民生活を支えるインフラストラクチャ(Infrastructure:社会基盤)、あるいは工場や発電所等の工業施設を制御する制御システムにおいて、情報技術を応用したネットワーク化が進んでいる。このような制御システムのネットワーク化やICT(Information and Communication Technology)の進化により、制御システムには処理速度の向上、処理内容の高度化等の多大な恩恵がもたらされる。その一方で、制御システムのネットワーク化にはサイバー攻撃という新たな脅威を呼び込むことが懸念されている。実際に、発電所や工場などのプラント動作を監視または制御する制御システムに対するサイバー攻撃が出現しており、社会的に重要な問題として注目されている。
【0003】
このような背景により、重要なインフラストラクチャを支える制御システムをサイバー攻撃から守るための技術開発が急務とされており、制御システムに対して情報系セキュリティ技術を転用する他、サイバー攻撃の検知などに関する研究が進められている。
【0004】
特許文献1には、本発明の発明者を一部含む、暗号化制御システムの技術が開示されている。
【先行技術文献】
【0005】

【特許文献1】特開2016-90884号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
発明者は、特許文献1において、制御システムの中核部分に当たるコントローラが暗号化された入力データ及び出力データに対して直接演算処理を施すことで、コントローラに公開鍵及び/または秘密鍵を不要にした制御システムの実現に成功した。この発明により、制御システムはプラントにのみ秘密鍵を装備すればよいこととなり、公開鍵及び/または秘密鍵が漏洩するリスクを低減させることを実現した。
しかしながら、特許文献1に使用される公開鍵と秘密鍵のペアは1組だけである。このため、クラウドコンピューティング等の膨大な計算機資源を用いると暗号を解読されてしまう虞がある。
【0007】
本発明は係る課題を解決し、暗号鍵が漏洩するリスクをより低減させることができる、暗号化制御システム、暗号化制御方法及び暗号化制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明の暗号化制御システムは、コントローラと、プラント側制御装置を有する。
コントローラは、目標値を公開鍵で暗号化して暗号化目標値を出力する第一の暗号化処理部と、目標値を公開鍵で暗号化して暗号化目標値を出力する第一の暗号化処理部と、
第一の暗号化処理部に対し、公開鍵が複数個格納される公開鍵サブテーブルから所定のレコードを選択すると共に、制御システムのパラメータが公開鍵サブテーブルの公開鍵によって暗号化された暗号化パラメータが記録されたレコードよりなる暗号化パラメータテーブルから所定のレコードを選択する第一のテーブルレコード選択処理部と、プラント側制御装置から暗号化目標誤差を受信して、第一のテーブルレコード選択処理部が選択した暗号化パラメータを乗算して暗号化制御入力を出力する乗算部と、乗算部から出力される暗号化制御入力に付加する日時情報を提供すると共に、第一のテーブルレコード選択処理部に起動タイミングを与える第二の日時情報生成部とを具備する。
プラント側制御装置は、コントローラから受信した暗号化目標値を復号して目標値を得ると共に、コントローラから受信した暗号化制御入力を復号して制御入力を得る復号処理部と、制御入力に基づいて所定の制御対象を制御する制御処理部とを具備する。更に、制御対象を観測するセンサから観測値を取得する信号変換処理部と、目標値から観測値を減算して目標誤差を算出する目標誤差演算処理部と、目標誤差を暗号化して暗号化目標誤差を出力する第二の暗号化処理部と、復号処理部に対し、公開鍵と公開鍵の対になる秘密鍵が複数個格納される公開鍵テーブルから所定のレコードを選択すると共に、第二の暗号化処理部に対し、公開鍵テーブルから所定のレコードを選択する第二のテーブルレコード選択処理部と、第二の暗号化処理部から出力される暗号化目標誤差に付加する日時情報を提供すると共に、第二のテーブルレコード選択処理部に起動タイミングを与える第二の日時情報生成部とを具備する。
そして、第一の日時情報生成部と、第二の日時情報生成部は、相互に同時に起動タイミングを生成するものである。
【発明の効果】
【0009】
本発明によれば、暗号鍵が漏洩するリスクをより低減させることができる、暗号化制御システム、暗号化制御方法及び暗号化制御プログラムを提供することができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施形態に係る、暗号化制御システムの全体構成を示す概略図である。
【図2】入力装置のハードウェア構成を示すブロック図である。
【図3】コントローラのハードウェア構成を示すブロック図である。
【図4】プラント側制御装置のハードウェア構成を示すブロック図である。
【図5】日時情報源装置のハードウェア構成を示すブロック図である。
【図6】暗号化制御システムの、制御ネットワークにおけるソフトウェア機能を示すブロック図である。
【図7】暗号化制御システムの、情報ネットワークにおけるソフトウェア機能を示すブロック図である。
【図8】公開鍵テーブル、公開鍵サブテーブル及び暗号化パラメータテーブルのフィールド構成を示す表である。
【図9】入力装置とコントローラのテーブルレコード選択処理部のソフトウェア機能と、プラント側制御装置の暗号化目標値におけるテーブルレコード選択処理部のソフトウェア機能を説明するブロック図である。
【図10】プラント側制御装置の暗号化制御入力におけるテーブルレコード選択処理部のソフトウェア機能を説明するブロック図である。
【図11】コントローラの日時情報生成部における、同期運転開始処理の流れを示すフローチャートである。
【図12】コントローラの擬似乱数算出部の動作の流れを示すフローチャートである。
【図13】暗号化制御システムの同期運転を説明するタイムチャートである。
【図14】特許文献1に係る暗号化制御システムと、本発明の実施形態に係る暗号化制御システムにおける、制御入力uと目標誤差εのグラフである。
【図15】特許文献1に係る暗号化制御システムと、本発明の実施形態に係る暗号化制御システムにおける、攻撃検出器のグラフである。
【図16】本発明の実施形態の変形例に係るコントローラの、制御ネットワークにおけるソフトウェア機能を示すブロック図である。
【発明を実施するための形態】
【0011】
[暗号化制御システム101の実施形態]
図1は、本発明の実施形態に係る、暗号化制御システム101の全体構成を示す概略図である。なお、これ以降の説明において、暗号化された値をEnc()という関数で示す。
暗号化制御システム101は、入力装置102と、プラント側制御装置103と、コントローラ104と、日時情報源装置105を有する。
入力装置102は、コントローラ104を通じて、プラント側制御装置103に対し、目標値rを公開鍵暗号で暗号化した暗号化目標値Enc(r)を送信する。
プラント側制御装置103には、制御対象106とセンサ107が接続されている。プラント側制御装置103は、制御対象106に制御信号を与え、センサ107から制御対象106の状態情報である観測値yを取得する。そして、コントローラ104と第二制御ネットワークL109で接続され、暗号化制御情報の送受信を行う。

【0012】
コントローラ104は、入力装置102と第一制御ネットワークL108で接続されると共に、プラント側制御装置103と第二制御ネットワークL109で接続される。コントローラ104は入力装置102から第一制御ネットワークL108を通じて暗号化目標値Enc(r)を受信し、プラント側制御装置103から第二制御ネットワークL109を通じて暗号化目標誤差Enc(ε)を受信する。そして、暗号化されたこれら情報を暗号化されたまま復号せずに所定の演算処理を行い、第二制御ネットワークL109を通じてプラント側制御装置103へ演算結果である暗号化制御入力Enc(u)を送信する。

【0013】
本発明の実施形態に係る暗号化制御システム101において使用する公開鍵暗号は、特許文献1に開示されるものと同じく、例えばRSA暗号(Rivest Shamir Adleman)等の、準同型性を持つ公開鍵暗号を使用する。準同型性を持つ公開鍵暗号は、2つの暗号化した値同士を復号せずにそのまま乗算し、乗算した値を復号することで、暗号化される前の値を乗算した値と一致させることが可能である。
公開鍵暗号の準同型性に関する説明は特許文献1に記載されており、本発明の実施形態に係る暗号化制御システム101では公開鍵及び秘密鍵のペアを複数個使用する以外は、公開鍵暗号自体の演算処理には何も変更がないので、公開鍵暗号自体の詳細な説明は割愛する。

【0014】
入力装置102、コントローラ104、プラント側制御装置103はそれぞれ情報ネットワークL110を通じて、日時情報源装置105に接続される。日時情報源装置105は、ネットワークOSとNTPサーバ(Network Time Protocol)及びNTPクライアントが稼働するパソコンやサーバである。
第一制御ネットワークL108及び第二制御ネットワークL109はデータ転送の確実性を重視したネットワークであり、様々な種類のネットワークインターフェースが利用可能である。
一方、情報ネットワークL110は制御ネットワーク程の確実性は要求されない。本発明の実施形態では、周知のTCP/IPを使用するものとする。

【0015】
入力装置102、コントローラ104及びプラント側制御装置103は、プログラマブルコントローラと呼ばれる装置である。スロットを多数有するケース状のマウントベース111に、スロットに収納される大きさのモジュールを、必要な機能に応じて収納する。マウントベース111にはモジュール同士を接続するインターフェースが内蔵されており、モジュールをスロットに挿入すると、モジュール間のデータの送受信や適切な電源の供給が確立される。

【0016】
入力装置102のマウントベース111aには、CPUモジュール112と、情報ネットワークモジュール113と、第一制御ネットワークモジュール114aが装着されている。
コントローラ104のマウントベース111bには、CPUモジュール112と、情報ネットワークモジュール113と、第一制御ネットワークモジュール114bと、第二制御ネットワークモジュール115が装着されている。
プラント側制御装置103のマウントベース111cには、CPUモジュール112と、情報ネットワークモジュール113と、第二制御ネットワークモジュール115と、入出力モジュール116が装着されている。
入力装置102の第一制御ネットワークモジュール114aは送信側であり、コントローラ104の第一制御ネットワークモジュール114bは受信側である。
コントローラ104とプラント側制御装置103の第二制御ネットワークモジュール115は、相互の送信側端子と受信側端子が互いに接続されている。

【0017】
[入力装置102のハードウェア構成]
図2は、入力装置102のハードウェア構成を示すブロック図である。
入力装置102は、マウントベース111に設けられているモジュールバス201に接続されているCPUモジュール112、情報ネットワークモジュール113、第一制御ネットワークモジュール114aを備える。
CPUモジュール112は、内部バス206に接続されているCPU202、ROM203、RAM204、及び日時情報を生成するRTC(RealTime Clock)205を備える。内部バス206はモジュールバス201に接続されている。
CPUモジュール112のROM203には、暗号化制御システム101における制御演算処理及び暗号化処理等を遂行するためのプログラムが格納されている。

【0018】
情報ネットワークモジュール113は、内部バス206に接続されているCPU202、ROM203、RAM204、及びNIC(Network Interface Card)207を備える。内部バス206はモジュールバス201に接続されている。情報ネットワークモジュール113のROM203には、ネットワークOSと、NTPサーバプログラム及びNTPクライアントプログラム等が格納されている。
第一制御ネットワークモジュール114aは、送信部208がモジュールバス201に接続されている。

【0019】
[コントローラ104のハードウェア構成]
図3は、コントローラ104のハードウェア構成を示すブロック図である。
コントローラ104は、マウントベース111に設けられているモジュールバス201に接続されている、CPUモジュール112、情報ネットワークモジュール113、第一制御ネットワークモジュール114b、及び第二制御ネットワークモジュール115を備える。
CPUモジュール112と情報ネットワークモジュール113は、入力装置102のものと同じなので説明は割愛する。
第一制御ネットワークモジュール114bは、受信部309がモジュールバス201に接続されている。
第二制御ネットワークモジュール115は、送信部208と受信部309が内部バス206に接続されている。内部バス206はモジュールバス201に接続されている。

【0020】
[プラント側制御装置103のハードウェア構成]
図4は、プラント側制御装置103のハードウェア構成を示すブロック図である。
プラント側制御装置103は、マウントベース111に設けられているモジュールバス201に接続されている、CPUモジュール112、情報ネットワークモジュール113、第二制御ネットワークモジュール115、及び入出力モジュール116を備える。
CPUモジュール112、情報ネットワークモジュール113、第二制御ネットワークモジュール115は、コントローラ104のものと同じなので説明は割愛する。
入出力モジュール116は、内部バス206に接続されている、センサ107が接続されるA/D変換器410と、制御対象106が接続されるD/A変換器411を備える。内部バス206はモジュールバス201に接続されている。なお、この入出力モジュール116はあくまで一例であり、制御対象106やセンサ107等の接続される対象に応じて、A/D変換器410及びD/A変換器411に接続される信号処理回路等が必要になる場合がある。

【0021】
[日時情報源装置105のハードウェア構成]
図5は、日時情報源装置105のハードウェア構成を示すブロック図である。
サーバ装置やパソコン等で構成される日時情報源装置105は、バス507に接続されているCPU501、ROM502、RAM503、不揮発性ストレージ504、RTC505、及びNIC506を備える。パソコンを流用する場合は、表示部508、操作部509を備えることもある。
不揮発性ストレージ504には、ネットワークOSと、NTPサーバプログラム及びNTPクライアントプログラムが格納されている。

【0022】
[暗号化制御システム101の、制御ネットワークにおけるソフトウェア機能]
図6は、暗号化制御システム101の、制御ネットワークにおけるソフトウェア機能を示すブロック図である。図6では紙面の都合上、情報ネットワークL110の記述を割愛している。情報ネットワークL110については図7で説明する。
入力装置102は、プラント側制御装置103に対して、暗号化目標値Enc(r)を生成して、コントローラ104を介してプラント側制御装置103へ送信する。
目標値入力部601は、暗号化されない目標値rを入出力制御部602に与える。
入出力制御部602は、目標値入力部601から入力された目標値rを暗号化処理部603に引き渡す。そして、暗号化処理部603が生成した暗号化目標値Enc(r)を受け取り、コントローラ104へ送信する。

【0023】
暗号化処理部603は、公開鍵サブテーブル604からテーブルレコード選択処理部605が選択した公開鍵レコードを用いて、入出力制御部602から引き取った目標値rに暗号化処理を施す。そして、生成した暗号化目標値Enc(r)を入出力制御部602に引き渡す。
テーブルレコード選択処理部605は、日時情報生成部606から受け取った現在日時情報に基づき、公開鍵サブテーブル604のレコード番号(ラベル)を生成する。そして、生成したラベルに相当する公開鍵サブテーブル604のレコードに記録されている公開鍵を読み取り、暗号化処理部603に引き渡す。
日時情報生成部606は、現在日時情報を出力すると共に、テーブルレコード選択処理部605に対する起動及び停止制御を行う。

【0024】
入力装置102から第一制御ネットワークモジュール114aのケーブルを通じてコントローラ104に送信される暗号化目標値Enc(r)は、コントローラ104の入出力制御部607に入力される。
入出力制御部607は、入力装置102から受信した暗号化目標値Enc(r)をそのまま第二制御ネットワークモジュール115の送信部208を通じて、プラント側制御装置103へ送信する。そして、プラント側制御装置103から第二制御ネットワークモジュール115の受信部309を通じて受信した暗号化目標誤差Enc(ε)を、乗算部608に引き渡す。

【0025】
乗算部608は、暗号化パラメータテーブル609からテーブルレコード選択処理部610が選択した暗号化パラメータEnc(Parameters)を用いて、暗号化目標誤差Enc(ε)と乗算処理を行うことで、暗号化制御入力Enc(u)を算出する。なお、この乗算部608における暗号化パラメータEnc(Parameters)と暗号化目標値Enc(r)との乗算処理は、単純な乗算ではなく、特許文献1に開示されている、部分的な乗算処理である。
乗算部608は、暗号化パラメータEnc(Parameters)と暗号化目標値Enc(r)との乗算処理によって算出した暗号化制御入力Enc(u)を、入出力制御部607に引き渡す。

【0026】
テーブルレコード選択処理部610は、プラント側制御装置103から第二制御ネットワークモジュール115の受信部309を通じて受信したデータフレームに含まれている現在日時情報に基づき、暗号化パラメータテーブル609のレコード番号(ラベル)を生成する。そして、生成したラベルに相当する暗号化パラメータテーブル609のレコードに記録されている暗号化パラメータを読み取り、乗算部608に引き渡す。
日時情報生成部611は、現在日時情報を出力すると共に、コントローラ104の日時情報生成部611から指示された、同期運転開始時点の日時情報(以下「始動日時情報」)も出力する。また、テーブルレコード選択処理部610に対する起動及び停止制御を行う。しかし、コントローラ104の日時情報生成部611が生成する現在日時情報は、入力装置102の日時情報生成部606とは異なり、テーブルレコード選択処理部610が実行する、暗号化パラメータテーブル609のラベルの演算には使われない。その代わり、日時情報生成部611が生成する現在日時情報は、乗算部608から入出力制御部607及び送信部208を通じて送信される暗号化制御入力Enc(u)のデータフレームのエンコード日時フィールドに、エンコード日時情報として格納される。

【0027】
コントローラ104から第二制御ネットワークモジュール115の送信部208を通じてプラント側制御装置103に送信される暗号化目標値Enc(r)及び暗号化制御入力Enc(u)は、プラント側制御装置103の第二制御ネットワークモジュール115の受信部309を通じて復号処理部612に入力される。
復号処理部612は、暗号化目標値Enc(r)及び暗号化制御入力Enc(u)を、テーブルレコード選択処理部613から取得した秘密鍵を用いて復号する。復号された目標値r及び制御入力uの基となる値は、制御用演算処理部614に引き渡される。

【0028】
制御用演算処理部614は、目標値r及び制御入力uの基となる値を演算して、目標値r及び制御入力uを生成する。制御入力uは制御処理部615に引き渡される。
制御処理部615は、制御入力uから制御信号を生成し、制御対象106を制御する。例えば、制御対象106がモータであるならば、制御処理部615は、モータに与える電圧や位相等を制御する。制御対象106が制御処理部615によって制御されると、制御対象106の動作はセンサ107によって検出される。
センサ107が出力する観測信号は、信号変換処理部616によって観測値yに変換される。信号変換処理部616が出力する観測値yは、制御用演算処理部614が出力する目標値rと共に目標誤差演算処理部617に入力される。目標誤差演算処理部617は、目標値rから観測値yを減算して、目標誤差εを出力する。
目標誤差εは、暗号化処理部603によって暗号化され、暗号化目標誤差Enc(ε)に変換される。暗号化目標誤差Enc(ε)は、第二制御ネットワークモジュール115の送信部208を通じて、コントローラ104へ送信される。

【0029】
テーブルレコード選択処理部613は、コントローラ104から第二制御ネットワークモジュール115の受信部309を通じて受信したデータフレームに含まれている現在日時情報及び始動日時情報に基づき、公開鍵テーブル618のレコード番号(ラベル)を生成する。そして、生成したラベルに相当する公開鍵テーブル618のレコードに記録されている秘密鍵を読み取り、復号処理部612に引き渡す。また同様に、生成したラベルに相当する公開鍵テーブル618のレコードに記録されている公開鍵を読み取り、暗号化処理部603に引き渡す。

【0030】
日時情報生成部619は、現在日時情報を出力すると共に、コントローラ104の日時情報生成部611から指示された、同期運転開始時点の日時情報(以下「始動日時情報」)も出力する。また、日時情報生成部619は、テーブルレコード選択処理部610に対する起動及び停止制御を行う。しかし、プラント側制御装置103の日時情報生成部619が生成する現在日時情報は、入力装置102の日時情報生成部606とは異なり、テーブルレコード選択処理部613が実行する、公開鍵テーブル618のラベルの演算には使われない。その代わり、日時情報生成部619が生成する現在日時情報は、暗号化処理部603から送信部208を通じて送信される暗号化目標誤差Enc(ε)のデータフレームのエンコード日時フィールドに、エンコード日時情報として格納される。

【0031】
なお、入力装置102の入出力制御部602は、必要に応じて図示しない外部モニタ装置が接続されることがある。暗号化制御システム101の監視作業者は、外部モニタ装置を入力装置102に接続して、所定の監視業務等を遂行する。
コントローラ104の入出力制御部607には、暗号化目標値Enc(r)、暗号化制御入力Enc(u)、暗号化目標誤差Enc(ε)等を暗号化されたまま記録するログテーブル620が設けられ、監視業務に利用される。

【0032】
[暗号化制御システム101の、情報ネットワークL110におけるソフトウェア機能]
図7は、暗号化制御システム101の、情報ネットワークL110におけるソフトウェア機能を示すブロック図である。
入力装置102の日時情報生成部606と、コントローラ104の日時情報生成部611と、プラント側制御装置103の日時情報生成部619は、情報ネットワークL110を通じて日時情報源装置105に接続される。
入力装置102の日時情報生成部606と、コントローラ104の日時情報生成部611と、プラント側制御装置103の日時情報生成部619は、日時情報源装置105と同様に、ネットワークOSと、NTPサーバプログラム及びNTPクライアントプログラムの機能を有しており、各々の日時情報生成部606は日時情報源装置105の日時情報に同期する。
更に、入力装置102の日時情報生成部606と、コントローラ104の日時情報生成部611と、プラント側制御装置103の日時情報生成部619のうちのどれか一つは、同期運転の開始を指揮するマスター(master)の役割を担い、残り二つは、マスターの指示に従って同期運転を実行するスレーヴ(slave)の役割を担う。

【0033】
[テーブルのフィールド構成]
図8は、公開鍵テーブル618、公開鍵サブテーブル604及び暗号化パラメータテーブル609のフィールド構成を示す表である。
公開鍵テーブル618は、レコード番号フィールドと、公開鍵フィールドと、秘密鍵フィールドを有する。
レコード番号フィールドは、1から始まる整数が格納される。このレコード番号は、公開鍵テーブル618のレコードを一意に識別する番号であり、ラベルとも呼ばれる。
公開鍵フィールドは、公開鍵暗号方式の、所望の値を暗号化するための公開鍵が格納される。
秘密鍵フィールドは、公開鍵暗号方式の、暗号化された所望の値を復号するための、公開鍵フィールドの公開鍵と対になる秘密鍵が格納される。

【0034】
公開鍵サブテーブル604は、レコード番号フィールドと、公開鍵フィールドを有する。
すなわち、公開鍵サブテーブル604は、公開鍵テーブル618から秘密鍵フィールドを削除した、公開鍵テーブル618のサブセットである。

【0035】
暗号化パラメータテーブル609は、レコード番号フィールドと、暗号化第一パラメータフィールドと、暗号化第二パラメータフィールドと、暗号化第三パラメータフィールドを有する。
暗号化第一パラメータフィールドには、制御システムのゲインとなる第一パラメータKpを暗号化した暗号化第一パラメータEnc(Kp)が格納される。
暗号化第二パラメータフィールドには、制御システムのゲインとなる第二パラメータKiを暗号化した暗号化第二パラメータEnc(Ki)が格納される。
暗号化第三パラメータフィールドには、制御システムのゲインとなる第三パラメータKdを暗号化した暗号化第三パラメータEnc(Kd)が格納される。
第一パラメータKp、第二パラメータKi及び第三パラメータKdは制御システムにおいて不変の値であり、制御システムの設計時に所定の計算にて決定される。
なお、上記の第一パラメータKp、第二パラメータKi及び第三パラメータKdは、PID制御を想定しているが、制御システムはPID制御に限らない。暗号化パラメータテーブル609は、制御システムが要求するパラメータの数に応じて、暗号化パラメータのフィールドが設けられる。

【0036】
暗号化パラメータテーブル609のレコード番号フィールドが「1」のレコードにおける暗号化第一パラメータフィールドには、第一パラメータKpを、公開鍵テーブル618のレコード番号フィールドが「1」のレコードにおける公開鍵フィールドに格納されている公開鍵を用いて暗号化された、暗号化第一パラメータEnc(Kp)が格納される。
同様に、暗号化パラメータテーブル609のレコード番号フィールドが「1」のレコードにおける暗号化第二パラメータフィールドには、第二パラメータKiを、公開鍵テーブル618のレコード番号フィールドが「1」のレコードにおける公開鍵フィールドに格納されている公開鍵を用いて暗号化された、暗号化第二パラメータEnc(Ki)が格納される。
同様に、暗号化パラメータテーブル609のレコード番号フィールドが「1」のレコードにおける暗号化第三パラメータフィールドには、第三パラメータKdを、公開鍵テーブル618のレコード番号フィールドが「1」のレコードにおける公開鍵フィールドに格納されている公開鍵を用いて暗号化された、暗号化第三パラメータEnc(Kd)が格納される。

【0037】
暗号化パラメータテーブル609のレコード番号フィールドが「2」のレコードにおける暗号化第一パラメータフィールドには、第一パラメータKpを、公開鍵テーブル618のレコード番号フィールドが「2」のレコードにおける公開鍵フィールドに格納されている公開鍵を用いて暗号化された、暗号化第一パラメータEnc(Kp)が格納される。
以下同様に、暗号化パラメータテーブル609における各レコードの暗号化パラメータは、各レコードのレコード番号フィールドに紐付く公開鍵テーブル618の公開鍵フィールドに格納されている公開鍵で暗号化されている。

【0038】
[テーブルレコード選択処理部605]
図9Aは、入力装置102のテーブルレコード選択処理部605のソフトウェア機能を説明するブロック図である。
日時情報生成部606が出力する現在日時情報は、同期運転開始時点に記憶していた始動日時情報901と共に、ステップ数算出部902に入力される。ステップ数算出部902は、現在日時情報から始動日時情報901を減算し、ステップ時間で除算して、ステップ数を算出する。例えば、ステップ時間が10msec、現在日時情報が2017年11月1日09時30分05.100秒、始動日時情報901が2017年11月1日09時30分05.000秒である場合、ステップ数は100÷10=10である。なお、ステップ時間は、制御対象106の制御周期と一致する。

【0039】
産業機器等では、ある制御周期で計測と制御に係る制御プログラムを実行する。そこで、本発明の実施形態に係る暗号化制御システムでは、制御プログラムの始動日時を0として、制御周期毎にステップ数を計数する。このステップ数は、後述する擬似乱数算出部903に利用される。また、図13で詳述するが、プラント側制御装置103では、受信するデータと送信するデータとの間で、ステップ数が「1」だけ進む。

【0040】
ステップ数算出部902が出力するステップ数は、擬似乱数算出部903に入力される。擬似乱数算出部903は、初期値904を与えられ、確定的な演算処理を入力されるステップ数だけ繰り返すことで、0以上の整数または自然数の擬似乱数を生成する。生成した擬似乱数は、公開鍵サブテーブル604のレコード数にて剰余演算が行われ、この剰余がラベル、すなわちレコード番号となる。擬似乱数算出部903はラベルを用いて公開鍵サブテーブル604の公開鍵フィールドを読み出し、公開鍵を暗号化処理部603へ出力する。なお、レコード番号を0から始めるか(0以上の整数)1から始めるか(自然数)は設計事項である。
入力装置102、コントローラ104、そしてプラント側制御装置103のテーブルレコード選択処理部605に同一の演算処理を行う擬似乱数算出部903を装備して、同一の初期値904を与える。これにより、同一のステップ数を与えられた各々の擬似乱数算出部903は、同一のラベルを出力する。

【0041】
図9Bは、コントローラ104のテーブルレコード選択処理部610のソフトウェア機能を説明するブロック図である。
プラント側制御装置103から受信したデータフレームD905には、暗号化目標誤差Enc(ε)の他に、始動日時フィールドと、エンコード日時フィールドが付されている。
エンコード日時フィールドに含まれているエンコード日時情報と、始動日時フィールドに含まれている始動日時情報901は、ステップ数算出部902に入力される。ステップ数算出部902は、エンコード日時情報から始動日時情報901を減算し、ステップ時間で除算して、ステップ数を算出する。すなわち、コントローラ104におけるステップ数算出部902の処理は、入力装置102のステップ数算出部902と、入力されるデータが異なる以外は、演算処理自体は全く同じである。

【0042】
ステップ数算出部902が出力するステップ数は、擬似乱数算出部903に入力される。擬似乱数算出部903は、初期値904を与えられ、確定的な演算処理を入力されるステップ数だけ繰り返すことで、0以上の整数または自然数の擬似乱数を生成する。生成した擬似乱数は、暗号化パラメータテーブル609のレコード数にて剰余演算が行われ、この剰余がラベル、すなわちレコード番号となる。擬似乱数算出部903はラベルを用いて暗号化パラメータテーブル609の暗号化第一パラメータフィールド、暗号化第二パラメータフィールド及び暗号化第三パラメータフィールドを読み出し、暗号化第一パラメータ、暗号化第二パラメータ及び暗号化第三パラメータを乗算部608へ出力する。

【0043】
図9Cは、プラント側制御装置103の、暗号化目標値におけるテーブルレコード選択処理部613のソフトウェア機能を説明するブロック図である。
入力装置102からコントローラ104を通じて受信したデータフレームD906には、暗号化目標値Enc(r)の他に、エンコード日時フィールドが付されている。
エンコード日時フィールドに含まれているエンコード日時情報は、同期運転開始時点に記憶していた始動日時情報901と共に、ステップ数算出部902に入力される。ステップ数算出部902は、エンコード日時情報から始動日時情報901を減算し、ステップ時間で除算して、ステップ数を算出する。すなわち、プラント側制御装置103の、暗号化目標値におけるステップ数算出部902の処理は、入力装置102のステップ数算出部902と、入力されるデータが異なる以外は、演算処理自体は全く同じである。

【0044】
ステップ数算出部902が出力するステップ数は、擬似乱数算出部903に入力される。擬似乱数算出部903は、初期値904を与えられ、確定的な演算処理を入力されるステップ数だけ繰り返すことで、0以上の整数または自然数の擬似乱数を生成する。生成した擬似乱数は、公開鍵テーブル618のレコード数にて剰余演算が行われ、この剰余がラベル、すなわちレコード番号となる。擬似乱数算出部903はラベルを用いて公開鍵テーブル618の秘密鍵フィールドを読み出し、秘密鍵を復号処理部612へ出力する。

【0045】
図10は、プラント側制御装置103の、暗号化制御入力におけるテーブルレコード選択処理部613のソフトウェア機能を説明するブロック図である。
コントローラ104から受信したデータフレームD1007には、暗号化制御入力Enc(u)の他に、始動日時フィールドと、エンコード日時フィールドが付されている。
エンコード日時フィールドに含まれているエンコード日時情報と、始動日時フィールドに含まれている始動日時情報901は、ステップ数算出部902に入力される。ステップ数算出部902は、エンコード日時情報から始動日時情報901を減算し、ステップ時間で除算して、ステップ数を算出する。
ここで、図10に示すステップ数算出部902の、図9A、図9B及び図9Cにおけるステップ数算出部902との相違点は、エンコード日時情報から始動日時情報901を減算し、ステップ時間で除算して、擬似乱数算出部903へステップ数を出力するだけでなく、ステップ数+1も出力する点である。

【0046】
ステップ数算出部902が出力するステップ数及びステップ数+1の値は、擬似乱数算出部903に入力される。擬似乱数算出部903は、初期値904を与えられ、確定的な演算処理を入力されるステップ数だけ繰り返すことで、0以上の整数または自然数の擬似乱数を生成する。生成した擬似乱数は、公開鍵テーブル618のレコード数にて剰余演算が行われ、この剰余がラベル、すなわちレコード番号となる。
擬似乱数算出部903は、ステップ数に対応するラベルを用いて公開鍵テーブル618の秘密鍵フィールドを読み出し、秘密鍵を復号処理部612へ出力する。
次に擬似乱数算出部903は、ステップ数+1の値に対応するラベルを用いて公開鍵テーブル618の公開鍵フィールドを読み出し、公開鍵を暗号化処理部603へ出力する。

【0047】
図9Aに示した入力装置102のテーブルレコード選択処理部605、図9Bに示したコントローラ104のテーブルレコード選択処理部610、図9C及び図10に示したプラント側制御装置103のテーブルレコード選択処理部613の、それぞれに設けられている擬似乱数算出部903は、全て同一の確定的な演算処理が組み込まれている。したがって、同一の初期値904を与えると、同じステップ数であれば全て同一のラベルを出力する。

【0048】
[同期運転開始処理]
図11は、コントローラ104の日時情報生成部611における、同期運転開始処理の流れを示すフローチャートである。この図11では、コントローラ104の日時情報生成部611がマスターであることを前提に説明するが、入力装置102やプラント側制御装置103がマスターであっても同様である。
処理を開始すると(S1101)、コントローラ104の日時情報生成部611は自身の日時情報が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているか否かを確認する(S1102)。

【0049】
コントローラ104の日時情報生成部611自身の日時情報が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているならば(S1102のYES)、次にコントローラ104の日時情報生成部611は、入力装置102の日時情報生成部606に対し、入力装置102の日時情報生成部606が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているか否かを問い合わせる(S1103)。

【0050】
入力装置102の日時情報生成部606の日時情報が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているならば(S1103のYES)、次にコントローラ104の日時情報生成部611は、プラント側制御装置103の日時情報生成部619に対し、プラント側制御装置103の日時情報生成部619が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているか否かを問い合わせる(S1104)。
ステップS1102、S1103及びS1104の何れの条件分岐においても、日時情報の較正が正常に完了していなければ(S1102のNO、S1103のNO、S1104のNO)、ステップS1102まで戻って確認作業が繰り返される。

【0051】
ステップS1104で、プラント側制御装置103の日時情報生成部619の日時情報が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているならば(S1104のYES)、この時点で入力装置102、コントローラ104及びプラント側制御装置103の全ての日時情報生成部606が較正されている。そこで、コントローラ104の日時情報生成部611は、同期運転の準備段階として、テーブルレコード選択処理部610の擬似乱数算出部903と協調して、同期運転を開始する時間、ステップ時間、入力装置102の擬似乱数算出部903及びプラント側制御装置103の擬似乱数算出部903に与える初期値904等のパラメータを決定し、入力装置102及びプラント側制御装置103の日時情報生成部619へ送信する(S1105)。

【0052】
ステップS1105にて同期運転の準備が完了したら、コントローラ104の日時情報生成部611は設定した同期運転開始時間になるまで待ち(S1106のNO)、同期運転開始時間になったら(S1106のYES)、同期運転を開始して(S1107)、一連の処理を終了する(S1108)。

【0053】
[擬似乱数算出部903の擬似乱数算出処理]
擬似乱数算出部903が使用する擬似乱数は、悪意ある第三者に対して容易に規則性が見出されないように工夫する必要がある。暗号理論に多用される楕円曲線関数の加法定理を応用した擬似乱数生成関数の一例を示す。
図12は、コントローラ104の擬似乱数算出部903の動作の流れを示すフローチャートである。
処理を開始すると(S1201)、先ず、擬似乱数算出部903は楕円曲線関数y=x+ax+bの係数a,bを決定する(S1202)。

【0054】
次に、擬似乱数算出部903はステップS1202で決定した楕円曲線上の点Pを決定する(S1203)。この点Pは、y座標が0でないことが必須条件である。以上の係数a,b及び点Pと、公開鍵サブテーブル604、暗号化パラメータテーブル609及び公開鍵テーブル618のレコード数pが、入力装置102の擬似乱数算出部903及びプラント側制御装置103の擬似乱数算出部903に与える初期値904である。
次に、擬似乱数算出部903は日時情報生成部611と協調して、同期運転を開始する時間、ステップ時間、そして初期値904である係数a,b及び点Pを、入力装置102の日時情報生成部606及びプラント側制御装置103の日時情報生成部619に送信する(S1204)。
以上の、ステップS1202、S1203及びS1204が、図11のステップS1105に相当する。

【0055】
次に、擬似乱数算出部903はステップ数tを0に初期化し、点Qに点Pの座標情報を代入する(S1205)。そして、日時情報生成部611の制御の下、同期運転開始時間を待つ(S1206)。このステップS1206は、図11のステップS1106に相当する。
同期運転開始時間になったら(S1206のYES)、日時情報生成部611は起動トリガを擬似乱数算出部903に与える。擬似乱数算出部903はこれを受けて、これ以降の処理を継続する。

【0056】
先ず、擬似乱数算出部903は点Pと点Qを結ぶ直線に交わる、楕円曲線上の第三の点Rの座標を求める(S1207)。点Pと点Qが同一座標である場合は、楕円曲線上の接線に交わる交点を点R'とする。
次に、擬似乱数算出部903は点R'のx座標の値を整数に変換する。点R'のx座標は有理数であるが、例えばMATLAB(登録商標)に実装されているnumden()関数は、有理数を分数に変換し、その分母と分子を出力する。このnumden()関数のような、有理数を分数に変換し、その分母を取り出すことで、点Rのx座標の値を整数に変換することが可能である。そして、得られた擬似乱数である整数から、レコード数pの剰余を求める(S1208)。この剰余が、ラベル、すなわち公開鍵サブテーブル604、暗号化パラメータテーブル609及び公開鍵テーブル618のレコードを指し示すレコード番号になる。
次に、擬似乱数算出部903はステップ数tを1インクリメントする(S1209)。そして、点R'のy軸の値の符号を反転させた値を点R'の写像であるRとする。この点Rの座標情報を点Qに代入する(S1210)。そして、ステップS1207から一連の処理を繰り返す。

【0057】
図12では、マスターであるコントローラ104の擬似乱数算出部903の動作の流れを示したが、スレーヴである入力装置102の入力装置102の擬似乱数算出部903及びプラント側制御装置103の擬似乱数算出部903は、ステップS1204の時点でコントローラ104の日時情報生成部611から初期値904を受信すると、ステップS1205以降の動作を実行する。すなわち、ステップS1205以降の擬似乱数算出部903の動作は、マスターもスレーヴも同じである。

【0058】
[同期運転処理]
図13は、暗号化制御システム101の同期運転を説明するタイムチャートである。図13中、ステップ時間を10msec、ステップ数をtとする。同期運転始動時をt=0とし、t=0以降、tが1ずつインクリメントする。
同期運転始動時(t=0)、入力装置102は目標値rをt=0のラベルに相当する公開鍵で暗号化して、暗号化目標値Enc(r)を得る。そして、暗号化目標値Enc(r)をコントローラ104を経由してプラント側制御装置103へ送信する(S1301)。暗号化目標値Enc(r)のデータフレームD1321には、日時情報生成部606が生成したt=0における現在日時情報が含まれている。

【0059】
同期運転始動時(t=0)、コントローラ104は暗号化パラメータテーブル609からt=0のラベルに相当する暗号化第一パラメータ、暗号化第二パラメータ及び暗号化第三パラメータを読み出し、初期値904としての制御入力uと乗算部608にて乗算処理を行い、暗号化制御入力Enc(u)を得る。そして、暗号化制御入力Enc(u)をプラント側制御装置103へ送信する(S1302)。暗号化制御入力Enc(u)のデータフレームD1322には、同期運転開始時における始動日時情報901と、t=0における現在日時情報が含まれている。この時点では、始動日時情報901と現在日時情報は同一である。

【0060】
同期運転始動時(t=0)、プラント側制御装置103は入力装置102からコントローラ104を経由して暗号化目標値Enc(r)を、コントローラ104から暗号化制御入力Enc(u)を受信する(S1303)。
次にプラント側制御装置103の復号処理部612は各々のデータフレームに付されている現在日時情報、始動日時情報901を基にラベルを計算し、算出したラベルに対応する暗号鍵を用いて、目標値rと制御入力uをデコードする。制御用演算処理部614は、復号処理部612によってデコードされた目標値rと制御入力uの基となる値に演算処理を行い、目標値rと制御入力uを生成する。本発明の実施形態において使用する、準同型性を持つ公開鍵暗号は、暗号化したままのデータ同士を乗算(除算)することはできるが、加算(減算)ができない。そこで、コントローラ104の乗算部608は、与えられるデータに対し、制御用演算処理における乗算処理のみを行う。そして、暗号化したままではできない加算処理を制御用演算処理部614で遂行することで、制御用演算処理が完遂する。制御処理部615は、制御入力uから制御信号を生成し、制御対象106を制御する。制御対象106が制御処理部615によって制御されると、制御対象106の動作はセンサ107によって検出される。

【0061】
センサ107が出力する観測信号は、信号変換処理部616によって観測値yに変換される。信号変換処理部616が出力する観測値yは、制御用演算処理部614が出力する目標値rと共に目標誤差演算処理部617に入力される。目標誤差演算処理部617は、目標値rから観測値yを減算して、目標誤差εを出力する(S1304)。
暗号化処理部603は、目標誤差εを、t+1のステップ数に相当するラベルに対応する公開鍵で暗号化する(S1305)。この時点ではt=0なので、t+1=1、すなわちステップ数1に相当するラベルに対応する公開鍵が、目標誤差εの暗号化に使われる。

【0062】
同期運転始動からステップ数が1インクリメントして、t=1になった時点で、プラント側制御装置103は、第二制御ネットワークモジュール115の送信部208を通じて、暗号化目標誤差Enc(ε)をコントローラ104へ送信する(S1306)。暗号化目標誤差Enc(ε)のデータフレームD1323には、同期運転開始時における始動日時情報901と、t=1における現在日時情報が含まれている。

【0063】
t=1の時点で、コントローラ104は、プラント側制御装置103から暗号化目標誤差Enc(ε)を受信する(S1307)。コントローラ104の第二制御ネットワークモジュール115の受信部309から受信した暗号化目標誤差Enc(ε)は、入出力制御部607を通じて乗算部608に引き渡される。乗算部608は、暗号化目標誤差Enc(ε)のデータフレームに付されている、始動日時情報901と、t=1における現在日時情報をテーブルレコード選択処理部610に引き渡す。テーブルレコード選択処理部610は、t=1のラベルに相当する暗号化第一パラメータ、暗号化第二パラメータ及び暗号化第三パラメータを読み出し、乗算部608に引き渡す。乗算部608は暗号化第一パラメータ、暗号化第二パラメータ及び暗号化第三パラメータと、暗号化目標誤差Enc(ε)を乗算処理して、暗号化制御入力Enc(u)を得る(S1308)。そして、暗号化制御入力Enc(u)をプラント側制御装置103へ送信する(S1309)。暗号化制御入力Enc(u)のデータフレームD1324には、同期運転開始時における始動日時情報901と、t=1における現在日時情報が含まれている。

【0064】
t=1の時点で、入力装置102は目標値rをt=1のラベルに相当する公開鍵で暗号化して、暗号化目標値Enc(r)を得る。そして、暗号化目標値Enc(r)をコントローラ104を経由してプラント側制御装置103へ送信する(S1310)。暗号化目標値Enc(r)のデータフレームD1325には、t=1における現在日時情報が含まれている。

【0065】
t=1の時点で、プラント側制御装置103は入力装置102からコントローラ104を経由して暗号化目標値Enc(r)を、コントローラ104から暗号化制御入力Enc(u)を受信する(S1311)。
次にプラント側制御装置103の復号処理部612は各々のデータフレームに付されている現在日時情報、始動日時情報901を基にラベルを計算し、算出したラベルに対応する暗号鍵を用いて、目標値rと制御入力uをデコードする。制御用演算処理部614は、復号処理部612によってデコードされた目標値rと制御入力uの基となる値に演算処理を行い、目標値rと制御入力uを生成する。制御処理部615は、制御入力uから制御信号を生成し、制御対象106を制御する。制御対象106が制御処理部615によって制御されると、制御対象106の動作はセンサ107によって検出される。

【0066】
センサ107が出力する観測信号は、信号変換処理部616によって観測値yに変換される。信号変換処理部616が出力する観測値yは、制御用演算処理部614が出力する目標値rと共に目標誤差演算処理部617に入力される。目標誤差演算処理部617は、目標値rから観測値yを減算して、目標誤差εを出力する(S1312)。
暗号化処理部603は、目標誤差εを、t+1のステップ数に相当するラベルに対応する公開鍵で暗号化する(S1313)。この時点ではt=1なので、t+1=2、すなわちステップ数2に相当するラベルに対応する公開鍵が、目標誤差εの暗号化に使われる。

【0067】
以下同様に、プラント側制御装置103は、入力装置102からステップ数tにおける暗号化目標値Enc(r)を、コントローラ104からステップ数tにおける暗号化制御入力Enc(u)を受信すると、目標値rと制御入力uに基づいて制御対象106を制御する。その結果、センサ107から得られた観測値yを目標値rから減算して目標誤差εを得る。暗号化処理部603は、目標誤差εをステップ数t+1における公開鍵で暗号化して、暗号化目標誤差Enc(ε)をコントローラ104へ出力する。
つまり、プラント側制御装置103のデータ受信、演算、データ送信のサイクルにおいて、ステップ数は1インクリメントする。

【0068】
これに対し、コントローラ104は、プラント側制御装置103から受信した暗号化目標誤差Enc(ε)のデータフレームに付されている現在日時情報、始動日時情報901から得たステップ数tにおける暗号化第一パラメータ、暗号化第二パラメータ及び暗号化第三パラメータを、暗号化目標誤差Enc(ε)と乗算処理して、暗号化制御入力Enc(u)を得て、プラント側制御装置103へ送信する。
つまり、コントローラ104のデータ受信、演算、データ送信のサイクルにおいて、ステップ数はそのまま変化しない。

【0069】
[数値シミュレーション]
以上説明した実施形態に係る暗号化制御システム101の理論的検証のため、計算機上で数値シミュレーションを実施した。
図14Aは、特許文献1に係る暗号化制御システム101における、制御入力uと目標誤差εのグラフである。
図14Bは、本発明の実施形態に係る暗号化制御システム101における、制御入力uと目標誤差εのグラフである。
図14A及び図14Bの何れのグラフも、ステップ時間を10msecとし、時刻10secにおいて、暗号化目標誤差Enc(ε)に対して改竄攻撃を行ったと想定したシミュレーション結果である。

【0070】
図14Aでは、使用する公開鍵及び秘密鍵の組が1組だけであるため、改竄攻撃による影響が目標誤差εに現れない。しかし、図14Bでは、ステップ数毎に使用する公開鍵及び秘密鍵の組をランダムに切り替える仕組みを採用しているので、改竄攻撃によって目標誤差εが改竄攻撃される前とは明確に異なる、連続性のない変化を示す。

【0071】
制御システムは制御対象106が安定した状態であることが望ましい。このため、目標誤差εが大幅に変動することはまずあり得ない。したがって、目標誤差εの変動幅は概ね小さく、連続性を有する。通常の状態において変動幅が小さく連続性を有する信号が、急に変動幅が大きくなり、連続性のない変化を示すようになれば、何らかの異常が発生したものと明確に認識することができる。

【0072】
例えば、目標誤差εの変動幅を2乗して、所定の閾値と比較して、当該閾値を超えていれば、暗号化制御システム101に対する攻撃があったと判定することができる。この判定演算を攻撃検出器とする。
図15Aは、特許文献1に係る暗号化制御システム101における、攻撃検出器のグラフである。
図15Bは、本発明の実施形態に係る暗号化制御システム101における、攻撃検出器のグラフである。

【0073】
図15Aでは、使用する公開鍵及び秘密鍵の組が1組だけであるため、攻撃検出器は改竄攻撃を検出することができない。しかし、図15Bでは、ステップ数毎に使用する公開鍵及び秘密鍵の組をランダムに切り替える仕組みを採用しているので、攻撃検出器は改竄攻撃によって目標誤差εが改竄攻撃されたことを明確に認識することができる。

【0074】
以上に説明した実施形態には、以下のような変形例が考えられる。
(1)上記の実施形態では、擬似乱数算出部903が、計算の要求が発生した時点で動作するように構成されていたが、予め計算した結果をラベルテーブルに記憶しておいてもよい。
ラベルテーブルは、ステップ数フィールドとラベルフィールドを有する。
ステップ数フィールドにはステップ数が格納される。
ラベルフィールドにはステップ数に対応する、擬似乱数算出部903が算出したラベルが格納される。
このようなラベルテーブルを数千あるいは数万レコード程度記憶しておけば、CPUモジュール112の演算リソースを主たる制御演算に集中させることができる。

【0075】
(2)上記の実施形態では、制御周期毎に公開鍵と秘密鍵のペアを切り替えるように構成されていたが、複数の制御周期毎に切り替えるように構成してもよい。但し、あまり切り替えの周期が長すぎると、悪意ある第三者に対する脆弱性が増大する虞がある。
(3)日時情報源装置105の機能を、入力装置102、プラント側制御装置103、コントローラ104の何れか1台が兼用してもよい。例えば、入力装置102にGPS(global positioning system)受信機を装備することで、正確な日時情報を得ることが可能になる。

【0076】
(4)入力装置102とコントローラ104を一体化することができる。
図16は、本発明の実施形態の変形例に係るコントローラ1601の、制御ネットワークにおけるソフトウェア機能を示すブロック図である。
図16に示すコントローラ1601は、図6に示した入力装置102とコントローラ104を一体化した構成である。
先ず、テーブルレコード選択処理部1602は、入力装置102のテーブルレコード選択処理部605とコントローラ104のテーブルレコード選択処理部610の機能を有する。すなわちテーブルレコード選択処理部1602は、暗号化処理部603に対し、公開鍵サブテーブル604から所定のレコードを選択すると共に、暗号化パラメータテーブル609から所定のレコードを選択する機能を有する。

【0077】
次に、入出力制御部1603は、入力装置102の入出力制御部602とコントローラ104の入出力制御部607の機能を有する。
そして、入力装置102の日時情報生成部606は省略される。すなわち日時情報生成部611は、乗算部603から出力される暗号化制御入力に付加する日時情報を提供すると共に、テーブルレコード選択処理部1602に日時情報を提供すると共に起動タイミングを与える機能を有する。

【0078】
以上に説明したように、暗号化制御システム101において、入力装置102とコントローラ104に代えて、入力装置102とコントローラ104を一体化したコントローラ1601を用いても、同等の機能を実現することができる。
なお、図6の入力装置102は公開鍵サブテーブル604を有している。そこで、入力装置102とコントローラ104を一体化したコントローラ1601を実現する際、暗号化処理部603に目標値rだけでなく、第一パラメータKp、第二パラメータKi及び第三パラメータKdも一緒に暗号化させる構成にすれば、暗号化処理部603の演算量は増えるが、暗号化パラメータテーブル609を省略することができる。

【0079】
本実施形態では、暗号化制御システム101を開示した。
入力装置102、プラント側制御装置103及びコントローラ104には、共通の機能を有する擬似乱数算出部903を装備して、時刻同期を行う。そして、同一時刻で同期運転を開始する。このように暗号化制御システム101を構成することで、制御システム全体の制御周期に同期して、公開鍵と秘密鍵のペアを切り替えることが可能になる。よって、制御システムに対する、悪意ある第三者による介入を瞬時に且つ明確に検出することが可能になる。

【0080】
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
【符号の説明】
【0081】
101…暗号化制御システム、102…入力装置、103…プラント側制御装置、104…コントローラ、105…日時情報源装置、106…制御対象、107…センサ、111…マウントベース、112…CPUモジュール、113…情報ネットワークモジュール、114a、114b…第一制御ネットワークモジュール、115…第二制御ネットワークモジュール、116…入出力モジュール、201…モジュールバス、202…CPU、203…ROM、204…RAM、205…RTC、206…内部バス、207…NIC、208…送信部、309…受信部、410…A/D変換器、411…D/A変換器、501…CPU、502…ROM、503…RAM、504…不揮発性ストレージ、505…RTC、506…NIC、507…バス、508…表示部、509…操作部、601…目標値入力部、602…入出力制御部、603…暗号化処理部、604…公開鍵サブテーブル、605…テーブルレコード選択処理部、606…日時情報生成部、607…入出力制御部、608…乗算部、609…暗号化パラメータテーブル、610…テーブルレコード選択処理部、611…日時情報生成部、612…復号処理部、613…テーブルレコード選択処理部、614…制御用演算処理部、615…制御処理部、616…信号変換処理部、617…目標誤差演算処理部、618…公開鍵テーブル、619…日時情報生成部、620…ログテーブル、901…始動日時情報、902…ステップ数算出部、903…擬似乱数算出部、904…初期値、1601…コントローラ、1602…テーブルレコード選択処理部、1603…入出力制御部
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5
【図7】
6
【図8】
7
【図9】
8
【図10】
9
【図11】
10
【図12】
11
【図13】
12
【図14】
13
【図15】
14
【図16】
15