(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023111666
(43)【公開日】2023-08-10
(54)【発明の名称】暗号化制御システムおよび暗号化制御方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20230803BHJP
H04L 9/16 20060101ALI20230803BHJP
【FI】
G09C1/00 620Z
H04L9/16
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022013625
(22)【出願日】2022-01-31
(71)【出願人】
【識別番号】504133110
【氏名又は名称】国立大学法人電気通信大学
(71)【出願人】
【識別番号】317006683
【氏名又は名称】地方独立行政法人神奈川県立産業技術総合研究所
(74)【代理人】
【識別番号】110000925
【氏名又は名称】弁理士法人信友国際特許事務所
(72)【発明者】
【氏名】小木曽 公尚
(72)【発明者】
【氏名】千家 雅之
(72)【発明者】
【氏名】寺西 郁
(72)【発明者】
【氏名】高梨 晴己
(72)【発明者】
【氏名】水矢 亨
(72)【発明者】
【氏名】阿部 顕一
(57)【要約】
【課題】過渡的な輻輳等の通信路状態の変動による通信性能の劣化は制御システムの可用性とセキュリティの両立を困難にする。昨今のベストエフォート型通信路における制御システムは、安定的な制御の実現に主眼が置かれ、セキュリティは重要視されてこなかった。サイバー犯罪からの人的、物理的損害を最小化するためには制御システムの可用性とセキュリティの両立が求められる。
【解決手段】制御系内の情報を暗号理論によって秘匿可能とするコントローラ20により、制御系通信路60を介してプラント30を制御する暗号化制御システムにおいて、ネットワーク通信路60の状態に応じて、暗号鍵の鍵長を変更し、通信路の変動による通信性能の劣化を軽減する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
制御系内の情報を暗号理論によって秘匿可能とするコントローラにより、ネットワーク通信路を介してプラントを制御する暗号化制御システムであって、
前記プラントは、前記ネットワーク通信路の状態に応じて、暗号鍵の鍵長を変更する
暗号化制御システム。
【請求項2】
前記プラントは、前記ネットワーク通信路の通信遅延時間を評価し、この評価した通信遅延時間から、前記ネットワーク通信路の状態を推測する
請求項1に記載の暗号化制御システム。
【請求項3】
前記プラントは、前記ネットワーク通信路の通信遅延時間を計測する遅延計測部を有し、前記遅延計測部によって計測した通信遅延時間に基づいて、前記暗号鍵の鍵長を変更する
請求項2に記載の暗号化制御システム。
【請求項4】
前記プラントは、前記遅延計測部によって計測した通信遅延時間に応じて、暗号鍵の鍵長を多段階に切り替える鍵長切替制御部を有する
請求項3に記載の暗号化制御システム。
【請求項5】
オペレータによる操作に応じて入力されるパラメータを暗号化したパラメータを、前記コントローラに入力する入力装置を備える
請求項1に記載の暗号化制御システム。
【請求項6】
前記パラメータは、準同型性を持つ暗号方式によって暗号化されたパラメータである
請求項5に記載の暗号化制御システム。
【請求項7】
時刻情報を配信する機能を有するタイムサーバを備え、
前記タイムサーバが配信する時刻情報は、前記コントローラおよび前記プラントの制御の基準として用いられる
請求項1に記載の暗号化制御システム。
【請求項8】
制御系内の情報を暗号理論によって秘匿可能とするコントローラにより、ネットワーク通信路を介してプラントを制御する暗号化制御方法であって、
前記ネットワーク通信路の状態に応じて、暗号鍵の鍵長を変更する
暗号化制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化制御システムおよび暗号化制御方法に関する。
【背景技術】
【0002】
オペレータ(操作員)とコントローラとの間、および、コントローラと制御対象との間の物理的距離が離れている遠隔制御システムを想定する。それは、オペレータがコントローラへ目標値を与え、コントローラが目標値に近づくようにロボットアーム等に代表される制御対象に制御値を与える制御システムである。ここではさらに公開鍵暗号方式によって全区間暗号化される暗号化制御が適用される遠隔の暗号化制御システムを考える。この遠隔の暗号化制御システムにおいては、暗号化による通信データ量の増加と暗号・復号処理による計算時間の増加が通信路の状態によっては無視できない恐れがあり、制御システムセキュリティを軽視して制御システムの可用性を優先するか、制御システムセキュリティを重視して制御システムの可用性を劣後にするかというトレードオフが生じてしまう。制御システムセキュリティと制御システムの可用性を両立する方法が必要である。
【0003】
従来、制御パラメータおよび通信路を秘匿化する暗号化制御技術が種々提案されている。一例として、制御パラメータおよび通信路を秘匿化する技術(例えば、特許文献1参照)では、暗号鍵を使い続ける状況を想定している。
【0004】
また、事前に準備した暗号鍵を切り替える技術(例えば、特許文献2参照)や、ミリ秒単位で暗号鍵の更新が可能な動的鍵暗号方式を採用した暗号化制御技術(例えば、特許文献3参照)がある。これらの従来技術は、暗号鍵の長さが共通のもとで実現された技術となっている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2016-90884号公報
【特許文献2】WO2019/078343
【特許文献3】WO2020/179672
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように、従来技術では、制御システムセキュリティの向上のみに主眼が置かれており、通信路状態の変動による悪影響を軽減させることは考慮されていない。従って、暗号強度を上げて秘匿性を高めたい状況や、利用するネットワークの通信路状態が大きく変動しうる状況においては、既存の暗号化制御技術では、安全サイドでの制御システムの設計を余儀なくされ、制御システムの可用性に配慮した運用が困難になる。
【0007】
本発明は、通信路状態の変動の最悪値をベースとした制御システムの設計を回避し、制御システムセキュリティおよび制御システムの可用性の両立を可能にした暗号化制御システムおよび暗号化制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の暗号化制御システムは、
制御系内の情報を暗号理論によって秘匿可能とするコントローラにより、ネットワーク通信路を介してプラントを制御する暗号化制御システムであって、
プラントは、ネットワーク通信路の状態に応じて、暗号鍵の鍵長を変更する
構成となっている。
【発明の効果】
【0009】
本発明によれば、通信路状態の変動の最悪値をベースとした制御システムの設計を回避し、制御システムセキュリティおよび制御システムの可用性の両立を可能にした暗号化制御システムの構築が可能になる。
上記した以外の課題、構成、および、効果は、以下の[発明を実施するための形態]の説明によって明らかにされる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態に係るFAシステムの構成の一例を示すブロック図である。
【
図2】通信路の通信遅延時間の計測処理におけるタイミング関係を示すシーケンス図である。
【
図3】通信路の通信遅延時間の計測処理の流れを示すフローチャートである。
【
図4】プラントにおける鍵長切替制御部の構成の一例を示す概略構成図である。
【
図5】ロボットアームのヨー軸とピッチ軸の回転角度についての検証結果を示す図である。
【
図6】ロボットアームのヨー軸とピッチ軸の回転角度の暗号文についての検証結果を示す図である。
【
図7】
図6に対して鍵長を短くした場合のロボットアームのヨー軸とピッチ軸の回転角度の暗号文についての検証結果を示す図である。
【
図8】暗号化処理のための計算時間についての検証結果を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態(実施形態)について、添付図面を参照して説明する。本明細書および図面において、実質的に同一の機能または構成を有する構成要素については、同一の符号を付することにより重複する説明を省略する。
【0012】
<暗号について>
まず、本発明を適用した具体的な実施形態について説明する前に、本発明において用いられる暗号について説明する。
【0013】
一般的に、整数の集合Zに含まれる平文Mを、整数の集合Zに含まれる暗号文Cに変換する暗号は、次の式(1)で表される。
【0014】
【0015】
また、平文M1と平文M2との二項演算M1○M2を暗号化した暗号文Enc(M1○M2)を、平文M1を暗号化した暗号文Enc(M1)と、平文M2を暗号化した暗号文Enc(M2)とを用いて計算することができる暗号は、準同型暗号と称される。このような準同型暗号は、クラウドコンピューティングや金融機関の暗証システムなどに応用されている。
【0016】
例えば、乗法に関して準同型性を持つRSA(Rivest Shamir Adleman)暗号は、多桁の素因数分解問題の困難性を利用した公開鍵暗号であり、デジタル署名などに応用されている。以下では、RSA暗号の暗号化および復号のアルゴリズム、および、RSA暗号の乗法に関する準同型性について説明する。
【0017】
RSA暗号により暗号化を行う際には、まず、公開鍵e、公開鍵n、および、秘密鍵dが生成され、公開鍵eおよび公開鍵nのみを用いて平文が暗号化される。一方、RSA暗号により復号を行う際には、秘密鍵dを知る必要がある。
【0018】
公開鍵nは、2つの大きな値の素数pおよび素数qを決定し、素数pおよび素数qの積(n=p×q)を演算することにより生成される。一方、公開鍵eは、公開鍵nのオイラーの関数φ(n)=(p-1)×(q-1)と互いに素(gcd(e,φ(n))=1)となる任意の正整数となるように生成される。また、秘密鍵dは、法をφ(n)とした公開鍵eの逆数として生成され、次の式(2)のように定められる。
【0019】
【0020】
また、剰余の定義より、秘密鍵dは、次の式(3)に示すような、未知定数Qを用いた不定方程式を解くことにより求められる。なお、次の式(4)に示すような形をとる不定方程式は、拡張ユークリッド互除法により効率的に解くことができる。
【0021】
【0022】
このように、公開鍵nおよび秘密鍵dは共に、事前に決定される素数pおよび素数qから生成される。このとき、素数pおよび素数qの桁数が十分に大きければ、公開鍵n(=p×q)を公開しても素因数分解により素数pおよび素数qを復元することは困難であるため、素数pおよび素数qが漏洩しない限り、秘密鍵dを知ることは困難である。
【0023】
次に、整数の集合Zに含まれる平文Mは、次の式(5)に示すように暗号文Cへと変換、即ち、暗号化される。
【0024】
【0025】
但し、式(5)において、平文Mの桁数は公開鍵nの桁数未満(M<n)でなければならず、平文Mの桁数が公開鍵nの桁数以上(M≧n)の場合には、公開鍵nの桁数ごとに平文Mを分割して暗号化する必要がある。また、この暗号化には、大きな整数のべき乗計算が含まれており、その計算を行うための効率的なアルゴリズムが存在する。
【0026】
一方、暗号文Cは、次の式(6)に示すように平文Mに変換、即ち、復号される。
【0027】
【0028】
ここで、式(6)について証明を行う。まず、次の式(7)に示すような補題を導入する。
【0029】
【0030】
また、暗号文Cを、次の式(8)のように定義すると、剰余の定義より定数Qを介してX=Q×n+Cと置くことができ、上述の式(7)の左辺は、次の式(9)に示すように置き換えられる。
【0031】
【0032】
一方、この式(9)の右辺を二項定理により展開すると、次の式(10)のように、右辺=左辺となる。
【0033】
【0034】
そして、復号の演算に、上述した式(7)を用いると、次の式(11)のようになり、この式(11)に上述した式(3)を代入すると、次の式(12)が求められる。
【0035】
【0036】
ここで、次の式(13)に示すオイラーの定理より、式(12)は、次の式(14)のようになる。
【0037】
【0038】
従って、暗号化時の仮定より、平文Mの桁数は公開鍵nの桁数未満(M<n)であるならば、M mod n=Mであることより、復号が達成されることが証明された。
【0039】
次に、準同型性について説明する。RSA暗号は、乗法に関する準同型性(以下、乗法準同型性と記述する)を持ち、次の式(15)に示す関係が成立する。
【0040】
【0041】
ここで、式(15)について証明を行う。被除数が負の場合を含むとき、剰余の定義は複数あるが、一例として、次の式(16)に示す定義を用いる。
【0042】
【0043】
このとき、次の式(17)に示すような2つの暗号文について考えると、次の式(18)に示すようになる。
【0044】
【0045】
従って、上述した式(15)の左辺は、次の式(19)に示すように右辺に一致することより、式(15)に示すような関係が成立することが証明された。
【0046】
【0047】
本発明では、以上のような乗法準同型性を持つRSA暗号が暗号方式として利用される。なお、本明細書では、RSA暗号を例に挙げているが、暗号方式としては、RSA暗号に限られるものではなく、ElGamal暗号など乗法準同型性を持つ暗号方式であってもよい。
【0048】
以下、本発明を適用した具体的な実施形態について、図面を参照しながら詳細に説明する。
【0049】
<本発明の実施形態>
本発明の一実施形態として、本発明の技術を、例えば、遠隔操作システムの一例であるFA(Factory Automation)システムに適用する場合を例に挙げて説明する。
【0050】
[システム構成例]
図1は、本発明の一実施形態に係るFAシステムの構成の一例を示すブロック図である。なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【0051】
図1において、本実施形態に係るFAシステム1は、RSA暗号などの乗法準同型性を用いた制御系として構成され、入力装置10、コントローラ20、プラント30、タイムサーバ50、制御系通信路60、および、汎用通信路70を備えている。そして、入力装置10とコントローラ20との間、および、タイムサーバ50とコントローラ20との間は汎用通信路70を介して接続され、コントローラ20とプラント30との間は制御系通信路60を介して接続されている。
【0052】
すなわち、本実施形態に係るFAシステム1は、RSA暗号などの乗法準同型暗号を用いた制御系内の情報を暗号理論によって秘匿可能とするコントローラ20により、制御系通信路60を介してプラント30を制御する暗号化制御システムである。制御系通信路60では、時刻同期データや暗号化された制御データ等の伝送が行われる。
【0053】
FAシステム1の動作は、主に3つのパラメータ、即ち、暗号化制御パラメータ、鍵長切替判定パラメータ、および、時刻同期パラメータによって規定される。これら3つのパラメータのうち、暗号化制御パラメータおよび鍵長切替判定パラメータは、入力装置10において、準同型性を持つ暗号方式(本例の場合、乗法準同型性を持つ暗号方式)によって暗号化されるパラメータである。時刻同期パラメータについては、暗号化は行われない。
【0054】
暗号化制御パラメータとは、ゲインや目標値等の制御パラメータであり、オペレータが入力装置10を操作して入力し、入力装置10において暗号化された後にコントローラ20に送信され、コントローラ20がパラメータを暗号化したまま処理を行い、制御系通信路60を介してプラント30に対する制御を実行する流れにおいて、暗号化後の制御パラメータを指し、入力装置10、コントローラ20、および、プラント30が保持するパラメータである。
【0055】
鍵長切替判定パラメータとは、鍵長切替の判定に使用される閾値で構成されるパラメータであり、プラント30が保持するパラメータである。鍵長切替判定パラメータは、暗号化制御パラメータと同様に入力装置10において暗号化されプラント30へ暗号化されたまま伝送される。
【0056】
時刻同期パラメータとは、コントローラ20およびプラント30が使用するパラメータで、Syncメッセージの送信周期倍率、Delay_reqメッセージの送信周期倍率を含むパラメータであり、コントローラ20およびプラント30が保持する。時刻同期パラメータは、平文のまま伝送してもよい。その伝送手段は汎用通信路70や制御系通信路60を用いてもよいし、シリアル通信等を用いて直接、コントローラ20やプラント30にパラメータを伝送してもよい。
【0057】
FAシステム1は、IEEE1588-2008に準拠する時刻同期機能を有する。タイムサーバ50は、グランドマスタークロック(GMC)に該当し、高精度の発振器やGPS信号等の外部信号を接続するための端子を備えており、その外部信号と同期して正確に時刻を刻む機能、および、汎用通信ポートを介して時刻情報を配信する機能を有する。
【0058】
タイムサーバ50が配信する時刻情報は、FAシステム1の制御の基準、即ち、コントローラ20およびプラント30の制御の基準として用いられる。タイムサーバ50が配信する時刻情報は、汎用通信路70を介してコントローラ20へ伝送される。
【0059】
コントローラ20は、バウンダリークロック(BC)に該当し、タイムサーバ50と同期することによって生成される時刻情報をプラント30へ配信する。プラント30は、オーディナリークロック(OC)に該当し、コントローラ20の内部クロックと同期するように時刻同期処理が行われる。
【0060】
(入力装置の構成例)
入力装置10は、パラメータ入力部11および暗号化部12を備えた構成となっている。
【0061】
パラメータ入力部11は、例えば、キーボードやタッチパネルなどの操作手段を有しており、オペレータによる操作に応じて入力されるパラメータを暗号化部12に供給する。
【0062】
暗号化部12は、オペレータによる操作に伴ってパラメータ入力部11から供給されるパラメータを、公開鍵を用いて暗号化したパラメータEnc(Parameters)をコントローラ20に送信する。なお、暗号化部12には、後述するように、プラント30側で設定された鍵長の公開鍵がプラント30から伝送され、コントローラ20および汎用通信路70を経て供給される。この鍵長別の公開鍵の配信は制御開始前に事前に設定される。このとき、暗号化部12は、プラント30側で設定された鍵長の公開鍵を用いて暗号化を行うことになる。
【0063】
(コントローラの構成例)
マスタとしてのコントローラ20は、パラメータ取得・設定部21、演算部22、受信部23A、送信部24A、記録装置25、時刻同期処理部26A、内部クロック調整部27、受信部23B、送信部24B、および、時刻同期処理部26Bによって構成されている。
【0064】
パラメータ取得・設定部21は、入力装置10と汎用通信路70を介して通信を行って、暗号化部12から送信される暗号化されたパラメータEnc(Parameters)を、受信部23Aを通して取得し、演算部22に供給する。受信部23Bは、プラント30から送信される暗号化された制御出力Enc(x)を受信し、演算部22に供給する。
【0065】
演算部22は、パラメータ取得・設定部21から供給される暗号化されたパラメータEnc(Parameters)のうち、暗号化制御パラメータと、受信部23Bから供給される暗号化された制御出力Enc(x)とを用いて、プラント30に対する制御を実行するための演算を暗号文のまま行う。
【0066】
このとき、演算部22は、暗号化されたパラメータEnc(Parameters)のうち、暗号化制御パラメータおよび制御出力Enc(x)を暗号化したまま演算{Enc(u[k])=g'(Enc(x),Enc(u))}を行って、復号および再暗号化を行わずに、プラント30を制御するために入力される制御入力uが暗号化された状態の制御入力Enc(u)を算出する。そして、演算部22は、演算によって求めた暗号化された制御入力Enc(u)を送信部24Bに供給する。
【0067】
送信部24Bは、制御系通信路60を介して、暗号化された制御入力Enc(u)をプラント30に送信する。
【0068】
記録装置25は、パラメータ取得・設定部21が取得した鍵長別の暗号化されたパラメータEnc(Parameters)を記録する。さらに、記録装置25は、暗号化されたパラメータEnc(Parameters)と共に、その暗号化されたパラメータEnc(Parameters)を用いた演算部22の演算において用いられた暗号化された制御出力Enc(x)と、その演算によって求められた暗号化された制御入力Enc(u)を鍵長別に記録する。
【0069】
なお、記録装置25は、暗号化されたパラメータEnc(Parameters)、暗号化された制御出力Enc(x)、および、暗号化された制御入力Enc(u)のうち、少なくともいずれか1つを記録するように構成されていればよい。また、記録装置25は、入力装置10によって入力された鍵長切替判定パラメータと時刻同期パラメータを持つ。
【0070】
時刻同期処理部26Aは、タイムサーバ50から時刻同期情報を、受信部23Aを通して受け取り、その時刻同期情報を用いて内部クロック調整部27でタイムサーバ50のクロックと同期させる処理を行う。
【0071】
時刻同期処理部26Bは、制御周期信号の立ち上がりをトリガーに処理を開始する。この処理は制御周期に呼応する周期的な処理である。時刻同期処理部26Bは、処理を開始するとともに内部カウンタをインクリメント(1を加算)する。時刻同期処理部26Bは、内部カウンタがSyncメッセージの送信周期倍率と等しくなった場合、時刻情報を含むSyncメッセージを、送信部24Bを通してプラント30に送信する。その後、内部カウンタをリセットする。
【0072】
(プラントの構成例)
スレーブとしてのプラント30は、受信部31、復号部32、制御実行部33、暗号化部34、送信部35、時刻同期処理部36、内部クロック調整部37、遅延計測部38、鍵長切替制御部39、記録装置40、および、パラメータ取得・設定部41を備える構成となっている。
【0073】
受信部31は、コントローラ20の送信部24Bから制御系通信路60を介して送信されてくる暗号化された制御入力Enc(u)を受信し、復号部32に供給する。
【0074】
復号部32は、入力装置10の暗号化部12が暗号化に用いた公開鍵に対応する秘密鍵を有しており、受信部31から供給される暗号化された制御入力Enc(u)を復号して得られる平文の制御入力uを制御実行部33に供給する。
【0075】
また、受信部31は、コントローラ20からSyncメッセージを受信すると、当該Syncメッセージを時刻同期処理部36に渡す。同様にして、受信部31は、コントローラ20からDelay_respメッセージを受信すると、当該Delay_respメッセージを時刻同期処理部36に渡す。
【0076】
制御実行部33は、復号部32から供給される制御入力uに従って、例えば、図示しないアクチュエータ(制御対象)に対する制御を実行する。また、制御実行部33は、例えば、アクチュエータの駆動を測定するセンサを有しており、そのセンサによって測定された値、または、目標値との誤差である追従偏差を、制御入力uに従った制御に対する制御出力xとして暗号化部34に供給する。または、制御実行部33は、制御入力uに従った制御に対する制御出力xを求めるための演算{x[k]=f(x,u)}を行ってもよい。
【0077】
暗号化部34は、制御実行部33から供給される制御出力xを暗号化し、暗号化した制御出力Enc(x)を送信部35に供給する。このとき、暗号化部34での暗号化に必要な公開鍵については、鍵長切替制御部39から取得することができる。鍵長切替制御部39が持つ公開鍵は、記録装置40からパラメータ取得・設定部41を介して取得したものである。記録装置40の公開鍵は、パラメータ取得・設定部41を介して制御開始前に事前に設定される。
【0078】
送信部35は、暗号化部34から供給される暗号化された制御出力Enc(x)を、制御系通信路60を介してコントローラ20に送信する。
【0079】
時刻同期処理部36は、制御データの受信処理をトリガーに処理を開始する。この処理は制御周期に呼応する周期的な処理である。時刻同期処理部36は、処理を開始するとともに内部カウンタをインクリメント(1を加算)する。
【0080】
時刻同期処理部36は、受信部31からSyncメッセージを得た場合、そのメッセージに含まれる時刻情報を用いて内部クロック調整部37で内部クロックをコントローラ20の内部クロックと同期させる。
【0081】
時刻同期処理部36は、内部カウンタがDelay_reqメッセージの送信周期倍率と等しくなった場合、Delay_reqメッセージを、送信部35を通してコントローラ20に送信し、内部カウンタをリセットする。
【0082】
遅延計測部38は、受信部31から時刻同期処理部36を通してDelay_respを受け取るたびに、制御系通信路60の通信遅延時間を算出する処理を実行し、算出した通信遅延時間の情報を鍵長切替制御部39に渡す。遅延計測部38において実行される、制御系通信路60の通信遅延時間を計測するための具体的な処理例については後述する。
【0083】
鍵長切替制御部39は、受信部31から時刻同期処理部36および遅延計測部38を通してDelay_respを受け取るたびに、次に例示する処理を実行する。鍵長切替制御部39が実行する処理は、具体的には、遅延計測部38で算出された通信遅延時間の記録装置40への格納処理、記録装置40に記録されている過去の通信遅延時間を用いた統計処理(例えば、移動平均)による代表値の算出処理、代表値と予め用意した所定の閾値との比較処理、および、暗号鍵の鍵長の切替処理である。なお、記録装置40へのアクセスはパラメータ取得・設定部41を介して行われる。
【0084】
鍵長切替制御部39は、代表値と予め用意した所定の閾値との比較処理の結果、代表値が所定の閾値を超えていた場合、制御系通信路60の状態(通信性能)が悪くなったと判断し、暗号鍵の鍵長を切り替える制御を行う。そして、鍵長切替制御部39は、鍵長切替までの制御ステップ数を含む鍵長切替要求を復号部32および暗号化部34に渡す。当該制御ステップ数は記録装置40に用意されているものとする。
【0085】
鍵長切替までの制御ステップ数は暗号化制御用のデータグラムに含まれ、そのデータグラムには鍵長切替までの制御ステップ数を示す専用のフィールドが用意される。そのフィールドは8ビット(1オクテット)あればよい。鍵長を切り替えない場合は値が0であるが、鍵長を切り替える場合、1以上の値が設定される。
【0086】
実装方法の一つとして用いる鍵長が二つの場合を以降に示す。この例では当該フィールド値が(00000001)2になったとき、コントローラ20の演算部22、プラント30の復号部32、および、プラント30の暗号化部34における受信時処理の最終段階で鍵長切替処理に分岐するものとする。この例では、制御周期の10ステップ後に鍵長を切り替えるとする。鍵長切替制御部39より鍵長切替要求を受け取った暗号化部34はそのフィールドには(00001011)2を設定する。そのフィールド値を含む制御出力Enc(x)は、送信部35と制御系通信路60を経由してコントローラ20へ伝送される。
【0087】
コントローラ20の演算部22では処理の最終段階において当該フィールド値(00001011)2からディクリメント(1を減算)した値が再設定され、制御入力Enc(u)とともにプラント30へ伝送される。この処理を繰り返し、演算部22で減算処理後、当該フィールド値が(00000001)2になったときに鍵長を切り替える。鍵長を切り替わったタイミングでは送信される制御入力Enc(u)は古い鍵長のままであり、次の制御周期から新しい鍵長が用いられる。
【0088】
鍵長切替が完了したら、演算部22は、送信部24Aを経由して鍵長が切り替わったことを入力装置10へ通知する。入力装置10は、その通知を受け取ったら鍵長を切り替える。入力装置10とコントローラ20との間は即時性が求められないためこのような通知方法でよい。プラント30の復号部32では当該フィールド値が(00000001)2であったとき処理の最終段階(復号処理を終えた段階)において鍵長を切り替える。新しい鍵長での復号処理は次の制御周期以降となる。
【0089】
記録装置40には、暗号化制御パラメータ(ゲインや目標値等)、時刻同期パラメータ(Delay_reqメッセージの送信周期倍率)、鍵長切替パラメータ(時刻情報と遅延計測部38で計測された通信遅延時間とが組になったデータセット、所定の閾値、および、鍵長切替までの制御ステップ数)が格納される。制御実行中は、記録装置40へのデータの格納はパラメータ取得・設定部41のみが行える。
【0090】
パラメータ取得・設定部41は、記録装置40へのパラメータの設定、および、記録装置40からのパラメータの取得を担う。パラメータの設定方法としては様々な手段が考えられ、入力装置10から汎用通信路70および制御系通信路60を介して設定してもよいし、入力装置10をシリアル通信等でプラント30に直接接続し設定してもよい。
【0091】
本実施形態に係るFAシステム1は、以上のように構成されており、コントローラ20とプラント30とを接続する制御系通信路60を介して送受信される情報の暗号化に、RSA暗号等の乗法準同型暗号を採用している。これにより、コントローラ20の演算部22は、制御出力Enc(x)を復号することなく、プラント30に対する制御を実行するための演算を行うことができる。従って、FAシステム1は、プラント30の復号部32のみが秘密鍵を保持する構成とすることができる。
【0092】
従来の産業ネットワークでは、コントローラおよびプラントの双方が秘密鍵を保持する構成であり、このような構成の従来の産業ネットワークと比較して、本実施形態に係るFAシステム1は、秘密鍵を保持する箇所を削減することができる。従って、本実施形態に係るFAシステム1は、仮に、コントローラ20がハッキングされたとしても秘密鍵が漏洩することを回避することができ、また、コントローラ20の記録装置25に記録されたパラメータ、制御出力、および、制御入力のそれぞれが暗号化されているために、たとえこれらが漏洩したとしても、コントローラ20およびプラント30の情報が漏洩することがなく、よりセキュリティ強化を図ることができる。
【0093】
すなわち、本実施形態に係るFAシステム1においては、コントローラ20およびプラント30が離れた位置に配置され、制御系通信路60を介して制御入力および制御出力を送受信するような構成であっても、コントローラ20およびプラント30の間で情報が漏洩してしまう危険性を低減することができる。
【0094】
このように、本実施形態に係るFAシステム1は、従来の産業ネットワークよりも、被攻撃箇所を削減することができる。なお、乗法準同型暗号の性質上、各種のゲインなどのようにコントローラ20が演算を行うためのパラメータは暗号化しておく必要があるが、これらのパラメータの暗号化は公開鍵のみで行うことができ、脆弱性が増加することはない。
【0095】
また、本実施形態に係るFAシステム1において、上述したようなRSA暗号を使用した場合、当該RSA暗号は、加法に関して準同型性を持たないため、コントローラ20は、加法の必要ない比例制御(P制御)を用いてプラント30に対する制御を行う。同様に、フィードバック誤差の演算を暗号文に対して行うことができないため、制御実行部33は、例えば、レギュレーション問題またはセンサにより偏差を直接的に測定可能となるように構成される。
【0096】
[通信遅延時間の計測処理例]
ここで、遅延計測部38において実行される、制御系通信路60の通信遅延時間を計測するための具体的な処理例について、
図2および
図3を用いて説明する。
【0097】
図2は、制御系通信路60の通信遅延時間の計測処理におけるタイミング関係を示すシーケンス図である。このシーケンス図は、コントローラ20とプラント30との間の通信における制御ステップ(k)および制御ステップ(k+1)の処理の一例である。すなわち、前の制御ステップ(k-1)の処理完了後に制御ステップ(k)の処理が開始され、制御ステップ(k+1)の処理完了後に次の制御ステップ(k+2)に移行することになる。
図2において、太い実線の矢印は暗号化制御用通信を表し、細い破線の矢印は時刻同期用通信を表している。kは離散信号系列の番号を表している。
図3は、制御系通信路60の通信遅延時間の計測処理の流れを示すフローチャートである。
【0098】
コントローラ20とプラント30との間の通信については、時刻同期用通信のみを行う時刻同期フェーズと、時刻同期用通信と制御用通信とを同時に行う制御フェーズとがあり、時刻同期フェーズ完了後に制御フェーズに遷移するものとする。
【0099】
時刻同期フェーズ開始前に、ユーザ(オペレータ)は、制御周期Tc、Syncメッセージの送信周期倍率nsync、Delay_reqメッセージの送信周期倍率ndelayをコントローラ20およびプラント30に設定する。各設定値はコントローラ20とプラント30とで同一でなければならない。ここでは、設定手段については問わず、本発明で使用する通信回線を用いてもよいし、別の設定手段を講じてもよい。
【0100】
コントローラ20とプラント30との間の通信回線である制御系通信路60については無線通信回線でもよいし、有線通信回線でもよい。ここでは、その通信回線については特別に指定しない。
【0101】
制御フェーズ開始前に、IEEE1588-2008の通信によってコントローラ20内とプラント30内の時刻は高精度に同期されているものとする。時刻同期用通信の暗号化の有無はオプションである。ただし、暗号化する場合は暗号化制御とは別の手段(IEEE1588-2019で提案されている手法等)で暗号化を実現するものとする。
【0102】
制御フェーズ開始後、Syncメッセージの送信やDelay_reqメッセージの送信は暗号化制御用通信と連動する。Syncメッセージの送信周期はnsyncTcで、Delay_reqメッセージの送信周期ndelayTcである。
【0103】
Syncメッセージの送信周期nsyncTcと現在の制御周期Tcとが一致するため、コントローラ20は、制御周期の立ち上がりの時刻t1にSyncメッセージをプラント30に送信する(ステップS11)。プラント30は、コントローラ20から送信されたSyncメッセージを時刻t2に受信する(ステップS21)。
【0104】
コントローラ20は、Syncメッセージを送信した直後に制御出力x[k-1]を用いて制御入力u[k]を求めるセキュア計算処理を開始し(ステップS12)、処理時間dproc[k]の経過後に制御入力u[k]をプラント30に送信する(ステップS13)。
【0105】
プラント30は、コントローラ20から送信された制御入力u[k]を受信時刻tu[k]で受信し(ステップS22)、次いで、Syncメッセージの受信時刻t2と、制御入力u[k]の受信時刻tu[k]との差分を求め、コントローラ20の処理時間として記録する(ステップS23)。
【0106】
コントローラ20の処理時間dproc[k]は、
dproc[k]=tU[k]-t2 ……(01)
となる。この値については、コントローラ20の処理負荷の推測に利用する。
【0107】
プラント30は、制御出力x[k]をコントローラ20へ送信する(ステップS24)。コントローラ20は、コントローラ20から送信された制御出力x[k]を受信する(ステップS14)。
【0108】
現在の制御ステップ(k)では、プラント30は、Delay_reqメッセージの送信周期ndelayTcと現在の制御周期Tcとが一致しないため、Delay_reqメッセージを送信しない。
【0109】
次の制御ステップ(k+1)では、Syncメッセージの送信周期nsyncTcと現在の制御周期Tcとが一致しないため、コントローラ20は、Syncメッセージの送信は行わない。
【0110】
コントローラ20は、制御出力x[k]を用いて制御入力u[k+1]を求めるセキュア計算処理を実行し(ステップS15)、求めた制御入力u[k+1]を処理時間dproc[k+1]が経過した後にプラント30に送信する(ステップS16)。
【0111】
プラント30は、コントローラ20から送信された制御入力u[k+1]を時刻tu[k+1]で受信し(ステップS25)、次いで、制御入力u[k]の受信時刻tu[k]と制御入力u[k+1]の時刻tu[k+1]との差分から、プラント30側の制御周期の変動分を求める(ステップS26)。この変動分には、処理負荷の変動と通信遅延の変動が含まれているため、コントローラ20の処理負荷の推測に利用できる。
ΔTc=tu[k+1]-tu[k]-Tc ……(02)
【0112】
次に、プラント30は、制御出力x[k+1]をコントローラ20へ送信する(ステップS27)。そして、その直後に、プラント30は、Delay_reqメッセージの周期ndelayTcと現在の制御周期Tcが一致したため、Delay_reqメッセージを時刻t3にコントローラ20へ送信する(ステップS28)。
【0113】
コントローラ20は、プラント30から送信された制御出力x[k+1]を受信する(ステップS17)。次いで、コントローラ20は、プラント30から送信されたDelay_reqメッセージを時刻t4に受信し(ステップS18)、その受信後すぐにDelay_respメッセージをプラント30へ返す(ステップS19)。
【0114】
プラント30は、コントローラ20から送信されたDelay_respメッセージを受信する(ステップS29)。
【0115】
上述した手順を経ることにより、プラント30側は、時刻t1、時刻t2、時刻t3、時刻t4を得ることができる。そして、下記の計算処理により、制御系通信路60の通信遅延時間を求めることができる。
【0116】
コントローラ20およびプラント30のクロック偏差をδとすると、
t2-t1=δ+dpath1 ……(03)
t4-t3=-δ+dpath2 ……(04)
となる。
【0117】
そして、式(03)式(04)を足すと、
{(t2-t1)+(t4-t3)}/2=(dpath1+dpath2)/2 ……(05)
となる。
【0118】
双方向の通信遅延時間がほぼ等しい値の通信路では、dpath1≒dpath2となるため、式(05)の右辺は 次の通りとなる。
(dpath1+dpath2)/2≒2dpath1/2=dpath1 ……(06)
【0119】
プラント30は、式(03)から式(06)の一連の処理、および、算出された値の移動平均等の統計処理によって制御系通信路60の通信遅延時間を、式(01)および式(02)を移動平均等の統計処理によってコントローラ20の処理遅延時間を推測することができる。
【0120】
ところで、制御系通信路60の通信路状態が悪化すると制御系通信路60に通信遅延が生じ、制御周期の維持が困難になり制御が破綻してしまう。ここで、制御系通信路60の通信路状態が悪化とは、通信トラフィックの増加や、無線通信では干渉や障害物による受信電力の低下等を言う。
【0121】
そこで、本実施形態に係るFAシステム1では、制御系通信路60の通信遅延時間を計測し、この計測した通信遅延時間から、制御系通信路60の通信路状態を推測し、通信路状態に応じて暗号鍵の鍵長を変更する(切り替える)。この暗号鍵の鍵長を変更する制御は、プラント30内の鍵長切替制御部39において実行される。
【0122】
以下に、プラント30における鍵長切替制御部39の具体的な構成例について説明する。
【0123】
[鍵長切替制御部の構成例]
図4は、プラント30における鍵長切替制御部39の構成の一例を示す概略構成図である。本構成例では、一例として、鍵長を2段階に切り替える場合を例に挙げて説明するが、鍵長の切り替え段数については、2段階に限られるものではなく、3段階以上の多段階の切り替えとすることもできる。
【0124】
図4に示すように、本例に係る鍵長切替制御部39は、鍵長切替判定処理部391とセレクタ392とを有する構成となっている。鍵長切替判定処理部391には、遅延計測部38で計測された制御系通信路60の通信遅延時間の情報が、遅延計測部38から供給される。
【0125】
鍵長切替判定処理部391は、遅延計測部38から供給される通信遅延時間を基に、記録装置40に保存されている過去の通信遅延時間を用いた統計処理(例えば、移動平均)による代表値の算出処理を行うとともに、当該代表値と予め記録装置40に保存されている所定の閾値との比較処理を行う。
【0126】
ここで、所定の閾値とは、例えば、制御系通信路60の状態が悪化したと判断するときの判断基準である。所定の閾値は、パラメータ取得・設定部41において、オペレータによる入力操作等によって記録装置40に保存される。
【0127】
ここでは、2種類の鍵長について、通常の鍵長(所定の鍵長)で生成した暗号文と、通常の鍵長よりも短い鍵長で生成した暗号文とを予め用意し、記録装置40に保存しておく。記録装置40に保存されている暗号文において、ゲインは、制御用のパラメータであり、暗号化されて実装されている。
【0128】
セレクタ392は、2種類の鍵長の切り替えに対応して2段切り替えのスイッチによって構成されており、制御系通信路60の状態が正常時(平常時)には、鍵長切替判定処理部391による制御の下に、端子a側に切り替わった状態にあり、記録装置40に保存されている通常の鍵長(相対的に長い鍵長)の暗号文を選択する。
【0129】
鍵長切替判定処理部391は、遅延計測部38で計測された通信遅延時間に基づいて、記録装置40に記録されている過去の通信遅延時間を用いた統計処理(例えば、移動平均)による代表値を算出し、この算出した代表値と記録装置40に記録されている所定の閾値とを比較する。
【0130】
そして、鍵長切替判定処理部391は、代表値と所定の閾値との比較結果、代表値が所定の閾値を超えていた場合、制御系通信路60の状態が悪化したと判断し、セレクタ392を端子b側に切り替える制御を行う。これにより、セレクタ392は、記録装置40に保存されている通常の鍵長よりも短い鍵長(相対的に短い鍵長)の暗号文を選択する。鍵長を短くすると、通信トラフィック(データ量)が減少し、セキュア計算処理時間(暗号化処理のための計算時間)は短縮される。
【0131】
鍵長を短くし、通信トラフィック(データ量)が減少し、セキュア計算処理時間(暗号化処理のための計算時間)は短縮すると、悪化していた制御系通信路60の状態が、通信遅延時間を用いた統計処理による代表値が所定の閾値以下となる状態まで改善する場合も考えられる。そして、代表値が所定の閾値以下となると、鍵長切替判定処理部391は、セレクタ392を端子a側に切り替える制御を行う。これにより、鍵長として通常(平常)の鍵長の暗号文が選択される。
【0132】
上述したように、本実施形態に係るFAシステム1は、制御系内の情報を暗号理論によって秘匿可能とするコントローラ20により、制御系通信路60を介してプラント30を制御する暗号化制御システムにおいて、制御系通信路60の通信路状態に応じて、暗号鍵の鍵長を変更する構成となっている。これにより、通信遅延の増加による制御周期の破綻を回避し、システムの可用性に配慮した運用を可能にすることができる。
【0133】
[検証結果]
ここで、プラント30の制御実行部33の制御対象を、例えば、ロボットアームとしたとき、暗号鍵の鍵長を変更した場合のロボットアームの挙動について検証する。
【0134】
ロボットアームについて、ヨー軸モータとピッチ軸モータの2軸駆動とする。そして、ここでは、ロボットアーム1台を時刻0≦t≦5sは鍵長256bit、 時刻5≦t≦10sは鍵長32bitで暗号化制御し、サイン波に追従させたときの応答を確認することとする。
【0135】
図5に、ロボットアームのヨー軸とピッチ軸の回転角度についての検証結果を示す。
図5において、Aは時間-ヨーの関係を示し、Bは時間-ピッチの関係を示している。
図5A,Bに示すヨー軸とピッチ軸の回転角度についての検証結果から明らかなように、時刻t=5で暗号鍵の鍵長を変更しても、ロボットアームの動作に影響が及ばない、即ち、ロボットアームは安定して動作することがわかる。
【0136】
図6に、ロボットアームのヨー軸とピッチ軸の回転角度の暗号文についての検証結果を示す。
図6において、A,Bは時間-暗号化されたピッチの関係を示している。ロボットアームのヨー軸とピッチ軸の回転角度の暗号文についての検証結果では、鍵長を変更すると、暗号文の桁数が小さくなる、例えば、時刻0≦t≦5sでは10
76オーダーとなる。
【0137】
図7に、
図6に対して鍵長を短くした場合のロボットアームのヨー軸とピッチ軸の回転角度の暗号文についての検証結果を示す。
図7において、A,Bは時間-暗号化されたピッチの関係を示している。
図6に対して縦軸を拡大した場合のロボットアームのヨー軸とピッチ軸の回転角度の暗号文についての検証結果では、鍵長を変更すると、暗号文の桁数が小さくなる、例えば、時刻5≦t≦10sでは10
9オーダーとなる。
【0138】
図8に、暗号化処理のための計算時間についての検証結果を示す。時間-計算時間の関係を示す
図8から明らかなように、鍵長を短くすると、暗号化処理のための計算時間が短くなることがわかる。
【0139】
<変形例>
以上、本発明について、好ましい実施形態に基づいて説明したが、本発明は当該実施形態に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限り、その他種々の変形例を取り得ることは勿論である。例えば、上述した実施形態は本発明を分かりやすく説明するために暗号化制御システム及び暗号化制御方法の構成を詳細かつ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されない。
【0140】
また、上述した実施形態では、本発明が適用される遠隔操作システムとして、FAシステムを例に挙げて説明したが、FAシステムに限られるものではなく、制御対象を例えばロボットアームとする遠隔操作システムなど、本発明は、産業界における遠隔操作システム全般に対して適用可能である。
【0141】
また、上述した実施形態では、暗号方式としてRSA暗号を利用する場合を例に挙げて説明したが、暗号方式としては、RSA暗号に限られるものではなく、ElGamal暗号など乗法準同型性を持つ暗号方式であればよい。
【0142】
また、
図1において、コントローラ20およびプラント30のそれぞれが持つ機能について、機能ブロックとして図示しているが、これらの機能ブロックについては、プロセッサがそれぞれの機能を解釈し、実行することにより、ソフトウェアで実行するマイクロコンピュータによって実現することができる。
【符号の説明】
【0143】
1…FAシステム、10…入力装置、11…パラメータ入力部、12…暗号化部、20…コントローラ、21…パラメータ取得・設定部、22…演算部、23A,23B…受信部、24A,24B…送信部、25…記録装置、26A,26B…時刻同期処理部、27…内部クロック調整部、30…プラント、31…受信部、32…復号部、33…制御実行部、34…暗号化部、35…送信部、36…時刻同期処理部、37…内部クロック調整部、38…遅延計測部、39…鍵長切替制御部、40…記録装置、41…パラメータ取得・設定部、50…タイムサーバ、60…制御系通信路、70…汎用通信路