IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人電気通信大学の特許一覧

特許7450277暗号化制御システム、暗号化制御方法および暗号化制御プログラム
<>
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図1
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図2
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図3
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図4
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図5
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図6
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図7
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図8
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図9
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図10
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図11
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図12
  • 特許-暗号化制御システム、暗号化制御方法および暗号化制御プログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-07
(45)【発行日】2024-03-15
(54)【発明の名称】暗号化制御システム、暗号化制御方法および暗号化制御プログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240308BHJP
   H04L 9/16 20060101ALI20240308BHJP
【FI】
G09C1/00 620A
H04L9/16
【請求項の数】 9
(21)【出願番号】P 2021504051
(86)(22)【出願日】2020-02-28
(86)【国際出願番号】 JP2020008362
(87)【国際公開番号】W WO2020179672
(87)【国際公開日】2020-09-10
【審査請求日】2023-02-21
(31)【優先権主張番号】P 2019039026
(32)【優先日】2019-03-04
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】504133110
【氏名又は名称】国立大学法人電気通信大学
(74)【代理人】
【識別番号】110000925
【氏名又は名称】弁理士法人信友国際特許事務所
(72)【発明者】
【氏名】小木曽 公尚
(72)【発明者】
【氏名】日下 雅博
【審査官】行田 悦資
(56)【参考文献】
【文献】特開平01-212041(JP,A)
【文献】特開2012-064439(JP,A)
【文献】藤田 貴大 ほか,ElGamal暗号を用いた制御器の暗号化,計測自動制御学会論文集,日本,公益社団法人計測自動制御学会,2015年09月30日,vol. 51, no. 9,p. 661-666
【文献】ANTONOPOULOS, A. M.,Chapter 4. Keys, Addresses, Wallets,Mastering Bitcoin,First Edition,O'REILLY MEDIA INC.,2014年12月,p.1-23, [令和1年9月19日検索],インターネット<URL:https://www.oreilly.com/library/view/mastering-bitcoin/978
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/16
(57)【特許請求の範囲】
【請求項1】
制御系内の情報を暗号理論により秘匿可能とする暗号化コントローラにより制御対象を制御する暗号化制御システムであって、
暗号化するステップ毎に、離散対数問題の解となる条件を満たす更新則により秘密鍵および公開鍵を動的に更新する暗号鍵更新部と、
暗号化するステップ毎に、暗号文を動的に更新する暗号文更新部と、を備え、
前記暗号鍵更新部および前記暗号文更新部はそれぞれ乱数生成器を有しており、前記それぞれの乱数生成器は前記暗号化する同時刻のステップで同じ乱数を生成し、前記それぞれの乱数生成器で生成された乱数と暗号化制御パラメータとの乗算剰余処理を行うことにより、前記秘密鍵、前記公開鍵および前記暗号文を更新する
暗号化制御システム。
【請求項2】
前記暗号鍵更新部は、現在のステップで使用した暗号鍵から前記制御系の制御則に基づいて、次回のステップで用いる暗号鍵を演算により作成して暗号鍵を更新し、
前記暗号文更新部は、現在時刻で使用した暗号文から制御系の制御則に基づいて、次回のステップで用いる暗号文を演算により作成して暗号文を更新する、
請求項1に記載の暗号化制御システム。
【請求項3】
前記制御系の秘密鍵をs(t)、公開鍵をh(t)および暗号文をc1(t)c2(t)としたとき、前記秘密鍵、前記公開鍵および前記暗号文の更新に関する前記制御則は、次式に従うものである、
請求項2に記載の暗号化制御システム。
但し、f1は秘密鍵s(t)を更新する写像、f2は公開鍵h(t)を更新する写像、f3、f4は暗号文c1(t)c2(t)を更新する写像、w(t)、v(t)は秘密鍵s(t)、公開鍵h(t)および暗号文c1(t)c2(t)の更新に用いる乱数、p、qは素数(p=2q+1)、gは巡回群の生成元である。
【請求項4】
前記暗号鍵更新部および前記暗号文更新部で用いられる暗号は、ElGamal暗号である、請求項1~3のいずれか1項に記載の暗号化制御システム。
【請求項5】
前記暗号鍵および前記暗号文を更新するステップ数は、前記制御系の耐用年数Lu(sec)を、前記制御対象をセンシングするサンプリング周期Ts(sec)で割った値Lu(sec)/Ts(sec)である、
請求項2または3に記載の暗号化制御システム。
【請求項6】
制御系内の情報を暗号理論により秘匿可能とする暗号化コントローラにより制御対象を制御する暗号化制御方法であって、
暗号化するステップ毎に、暗号鍵更新部において、前記暗号鍵更新部が備える乱数発生器で生成される乱数と1ステップ前の秘密鍵および公開鍵を乗算剰余することにより、秘密鍵および公開鍵を動的に更新する手順と、
暗号化するステップ毎に、暗号文更新部において、前記暗号文更新部が備える乱数発生器で生成される乱数で、かつ前記暗号鍵更新部が備える乱数発生器で生成される乱数同じ乱数と1ステップ前の暗号化制御パラメータとを乗算剰余することにより、暗号文を動的に更新する手順を含む、
暗号化制御方法。
【請求項7】
前記秘密鍵および前記公開鍵を動的に更新する手順においては、現在のステップtで私用した秘密鍵および公開鍵と、乱数を用いて次式に示す制御系の制御則に基づいて、次回の時刻(t+1)で使用する秘密鍵および公開鍵を生成し、
前記暗号文を動的に更新する手順では、現在の時刻tで使用した暗号文と乱数を用いて次式に示す制御系の制御則に基づいて、次回の時刻(t+1)で用いる暗号文を生成する、
請求項6に記載の暗号化制御方法。
但し、f1は秘密鍵s(t)を更新する写像、f2は公開鍵h(t)を更新する写像、f3、f4は暗号文c1(t)c2(t)を更新する写像、w(t)、v(t)は秘密鍵s(t)、公開鍵h(t)および暗号文c1(t)c2(t)の更新に用いる乱数、p、qは素数(p=2q+1)、gは巡回群の生成元である。
【請求項8】
制御系内の情報を暗号理論により秘匿可能とする暗号化コントローラにより制御対象を制御する暗号化制御をコンピュータに実行させる暗号化制御プログラムであって、
暗号化するステップ毎に、暗号鍵更新部において、前記暗号鍵更新部が備える乱数発生器で生成される乱数と1ステップ前の秘密鍵および公開鍵を乗算剰余することにより、秘密鍵および公開鍵を動的に更新する手順と、
暗号化するステップ毎に、暗号文更新部において、前記暗号文更新部が備える乱数発生器で生成される乱数で、かつ前記暗号鍵更新部が備える乱数発生器で生成される乱数同じ乱数を1ステップ前の暗号化制御パラメータを乗算剰余することにより、暗号文を動的に更新する手順と、
をコンピュータに実行させる暗号化制御プログラム。
【請求項9】
前記秘密鍵および前記公開鍵を動的に更新する手順においては、現在のステップtで使用した暗号鍵と乱数を用いて次式に示す制御系の制御則に基づいて、次回のステップ(t+1)で用いる秘密鍵および公開鍵を生成し、
前記暗号文を動的に更新する手順では、現在のステップtで使用した暗号文と乱数とから次式に示す制御系の制御則に基づいて、次回のステップ(t+1)で用いる暗号文を生成する、
請求項8に記載の暗号化制御プログラム。
但し、f1は秘密鍵s(t)を更新する写像、f2は公開鍵h(t)を更新する写像、f3、f4は暗号文c1(t)c2(t)を更新する写像、w(t)、v(t)は秘密鍵s(t)、公開鍵h(t)および暗号文c1(t)c2(t)の更新に用いる乱数、p、qは素数(p=2q+1)、gは巡回群の生成元である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化制御システム、暗号化制御方法および暗号化制御プログラムに関する。
【背景技術】
【0002】
近年、インターネット等の情報技術の発達に伴い、電力、水道などの重要インフラ、および化学プラントなどの大規模制御系において、情報技術を応用した制御系のネットワーク化が進んでいる。このようなネットワーク化した制御系(制御システム)では、システム内の各種デバイスはネットワークを介して相互接続される。
【0003】
このような制御系では、各種デバイスが相互接続されることで、システム全体の処理速度の向上や処理内容の高度化等を図ることができる。また、システムの管理者は、ネットワークを介して遠隔地からプラントの監視や制御を行うことができるので、システム管理上でも多くの利益が得られる。
【0004】
しかし、制御系内のネットワーク化は、利便性が向上する一方で、システムやその周囲に害をなす恐れもある。実際に、発電所や工場などのプラント動作を監視または制御する制御系に対するサイバー攻撃が出現し、社会的に重要な問題として懸念されている。例えば、2000年のオーストラリアでは、ネットワーク化した下水処理施設が攻撃され、100万リットルの下水が市街にあふれるという事故が起きた。また、2010年にイランの核関連施設がStuxnetというウィルスに感染し、設備が破壊されている。
【0005】
このように、サイバー攻撃による損害は重大化する傾向にあり、ネットワーク化した制御系をサイバー攻撃から守るための技術開発が急務となっている。このため、制御工学分野でも、情報系セキュリティ技術を転用する研究や、サイバー攻撃の検知などに関する研究が進められている。
例えば、制御器(コントローラ)と制御対象(プラント)間のネットワーク通信において、信号を暗号化することにより、信号に対する盗聴や改ざんを防ぐ研究も進められている。
【0006】
既に、発明者らは、制御系の中核部分に当たるコントローラにより、暗号化された入力データおよび出力データに対して一旦復号することなく暗号化されたまま直接演算処理を施すことで、コントローラ側の秘密鍵を不要とする暗号化制御システム技術を開発して特許を得ている(特許文献1参照)。この特許文献1に記載の技術では、秘密鍵はプラント側にのみに装備すればよく、秘密鍵をコントローラやプラントへ移動する必要がないので、秘密鍵が紛失または漏洩するリスクを低減させることができる。
【0007】
また発明者らは、制御器(コントローラ)内部の信号やパラメータを暗号により秘匿したまま、制御入力を決定する方法を提案している(非特許文献1)。
さらに発明者らは、ElGamal暗号による128(bit)以下の鍵を用いた暗号化制御の実験を行い、リアルタイム性の検証を行った(非特許文献2)。
この非特許文献2で、発明者らは、暗号化制御系で用いる暗号鍵が長くなるにつれて処理時間が伸びることから、セキュリティと処理時間の間にトレードオフの関係があると報告している。処理時間とは、「暗号化と復号」の処理にかかる時間であり、暗号鍵を長くすると、復号のみならず、暗号化のための処理時間も増えることが分かっている。
【0008】
ここで、リアルタイム性について説明しておく。リアルタイム性とは、システムが1つの処理を始めてから終わるまでの処理時間に対する時間的制約をいう。例えば、ある制御系に対し、10(ms)につき1回の暗号化制御を行うように設計するならば、処理時間は必ず10(ms)以内に収まらなければならない。この検証方法は、実験装置を使って実際に1万回、10万回と暗号化制御を繰り返し実行して処理時間を計測する。そして、制御中に一度も処理時間が10(ms)という時間的制約を超えなかった場合に、この制御系は、10(ms)のサンプリング周期でリアルタイム性が保証されたという。
【0009】
一般に、個人の口座番号などのプライバシーを管理する場合には、少なくともその個人の生涯に亘って個人の口座番号などのプライバシーを秘匿し続けなければならない。したがって、個人の存命中のような極めて長い期間、暗号の解読ができないようにする必要があり、そのためには、現実的には解くことが困難な強い暗号化方式を用意することが必要になる。
【0010】
これに対して、多くの制御系では、10年~20年程度の耐用年数が設定されている。つまり、耐用年数内でサイバー攻撃を防ぐことさえできれば、制御対象が耐用年数を超えた後に秘密鍵および入出力信号が露出しても問題ないケースも多く存在する。
このため、既存の暗号化制御系に使われる鍵長設計問題では、特に解読が困難な機密性が重視されるのに対し、耐用年数内のサイバー攻撃を防ぐことを目的とする暗号化制御系では、制御系の機密性と可用性を両立させた新しい鍵長設計指標が求められている。
【先行技術文献】
【特許文献】
【0011】
【文献】特許第6360781号公報
【非特許文献】
【0012】
【文献】K.Kogiso R.Baba and M. Kusaka “Development and Examination of encrypted control system” In Proceedings of International Conference on Advanced Intelligent Mechatronics, No. ThBT4.4,(2018)
【文献】日下、小木曽 多倍長整数ライブラリを用いた暗号化制御系におけるリアルタイム性における実験的考察 第61回自動制御連合講演会、p149/151(2018)
【発明の概要】
【発明が解決しようとする課題】
【0013】
特許文献1に記載される暗号化制御システムでは、使用される公開鍵と秘密鍵のペアは1組だけであり、公開鍵と秘密鍵は更新されないため、クラウドコンピューティング等の膨大な計算機資源を用いると暗号文を解読されてしまう恐れも否定できない。
【0014】
発明者らは、この問題を解決するためにElGamal暗号に注目した。ElGamal暗号は、離散対数問題の解を求める困難性を安全性の根拠にする暗号化方式である。
しかし、ElGamal暗号でも既に768(bit)位数を持つ有限体上の離散対数問題が解けた事例もあり、さらにセキュリティの高い暗号化システムが求められている。発明者らは、制御対象の耐用年数内において全ての鍵解読を回避することが可能な鍵長設計問題を検討し、暗号化制御の実システムへの適用を目指している。
【0015】
すなわち、発明者らは、従来の暗号化制御システムで用いられる暗号鍵(公開鍵および秘密鍵)よりも、短い鍵長で耐用年数(10~20年)内の鍵解読を防ぐために、ElGamal暗号の動的拡張を行う方法を見出した。そして、制御信号および計算を秘匿したままで制御シミュレーションを行い、耐用年数内での制御対象に対するセンサのセンシング時間単位で暗号鍵(公開鍵、秘密鍵)を更新する仕組みを考察した。
【0016】
したがって、本発明の目的は、暗号鍵および暗号文が所定の時間単位(ステップ)で動的にかつ際限なく更新される暗号化制御システム、暗号化制御方法および暗号化制御プログラムを提供することにある。
【課題を解決するための手段】
【0017】
上記課題を解決するために、本発明の暗号化制御システムは、制御系内の情報を暗号理論により秘匿可能とする暗号化コントローラにより制御対象を制御する暗号化制御システムであって、暗号化するステップ毎に、秘密鍵および公開鍵を動的に更新する暗号鍵更新部と、暗号文を動的に更新する暗号文更新部と、を備える。
【0018】
また、本発明の暗号化制御システムにおける暗号鍵更新部および暗号文更新部はそれぞれ乱数生成器を備え、全ての乱数生成器は同時刻のステップで同じ乱数を生成し、乱数生成器で生成された乱数と暗号化制御パラメータとの乗算剰余処理を行うことにより、秘密鍵、公開鍵の更新および暗号文の更新を行うようにしている。
【0019】
更に、本発明の暗号化制御システムでは、暗号鍵更新部は、現在時刻のステップで使用した暗号鍵から制御系の制御則に基づいて、次回の時刻のステップで用いる暗号鍵を演算により作成して暗号鍵を更新し、暗号文更新部は、現在時刻のステップで使用した暗号文から制御系の制御則に基づいて、次回の時刻のステップで用いる暗号文を演算により作成して暗号文を更新するようにする。
【発明の効果】
【0020】
本発明によれば、従来の暗号化制御システムの鍵長に比べて、比較的鍵長を短くしても、制御系の耐用年数内における全鍵解読を回避することが可能になる。
上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0021】
図1】本発明の実施形態に係る暗号化制御システムの暗号化制御の原理を説明するための図である。
図2】本発明の暗号化制御に係る暗号鍵(秘密鍵、公開鍵)と暗号文が更新される原理を示すブロック図と毎ステップで更新される様子を示す図である。
図3】本発明の暗号化制御に係る制御シミュレーションにおける出力応答と誤差応答を示す図である。
図4】本発明の鍵更新を行う動的な暗号化制御と従来の静的な暗号化制御の比較を示す波形図である。
図5】本発明の鍵更新を行う動的な暗号化制御の鍵サイズと処理時間を、従来の離散対数問題の解との比較で説明する図である。
図6】本発明の実施形態に係る暗号化制御システムの全体構成を示す概略図である。
図7】本発明の実施形態に係る暗号化制御システムの入力装置のハードウェア構成を示すブロック図である。
図8】本発明の実施形態に係る暗号化制御システムのコントローラのハードウェア構成を示すブロック図である。
図9】本発明の実施形態に係る暗号化制御システムのプラント側制御装置のハードウェア構成を示すブロック図である。
図10】本発明の実施形態に係る暗号化制御システムのソフトウェア機能を示すブロック図である。
図11】本発明の実施形態に係る暗号化制御システムの暗号化制御システムの同期運転を説明するフローチャートである。
図12】本発明の実施形態に係る暗号化制御システムの暗号化制御システムにおける動作を説明するシーケンス図である。
図13】本発明の実施形態の変形例に係るコントローラの制御ネットワークにおけるソフトウェア機能を示すブロック図である。
【発明を実施するための形態】
【0022】
まず、本発明の暗号化制御システムの実施形態例を説明する前に、本発明の暗号化制御システムで使用されるElGamal暗号について、その概略を説明しておく。
以後の説明では、Zを0以上n未満の整数集合、Z をZの中で互いに素となる要素の集合とする。また、Mを暗号化に用いることが可能な整数値(平文)の集合とする。
ElGamal暗号のアルゴリズムは、鍵生成(Gen)、暗号化(Enc)、復号(Dec)の3つのアルゴリズムから構成される。
【0023】
鍵生成アルゴリズム(Gen)は、設計者が与えるパラメータkを元に公開鍵kp:=(G,q,g,h)および秘密鍵ks:=sを出力する。
但し、qはk (bit)の素数、GはZp に含まれ、(p-1)mod q=0 である素数pを法とした位数qの巡回群、gは巡回群Gの生成元である。秘密鍵ksは、公開鍵kpのパラメータg、hと秘密鍵ksのパラメータsとの間で、h=gs mod pが成立するように設計される鍵である。巡回群を表す記号Gは、一般の暗号化方式で用いられる集合を表す記号であり、ここではG=M、すなわち、平文空間Mと一致する。
【0024】
ここで、暗号鍵、公開鍵および秘密鍵について、その言葉の意味と符号について説明しておく。暗号鍵という場合、通常、公開鍵と秘密鍵の両方を含む用語として用いている。暗号鍵は、「cryptographic key」を和訳した専門用語であり、経済産業省の外郭団体である独立行政法人情報処理推進機構(IPA)が公開する定義によれば、暗号鍵は「暗号化および復号化の処理を制御するシンボルの連続」とされている。
【0025】
公開鍵はkp(t)で表し、秘密鍵はk(t)で表す。(t)は、公開鍵、秘密鍵とも時間とともに変化する変数であることを示している。なお、公開鍵kp:=(G,q,g,h)と表記したのは、ElGamal暗号の公開鍵kpは、巡回群G、素数q、巡回群Gの生成元g、時間(t)とともに変化するh(t)の4つのパラメータを含むからである。すなわちh(t)は、公開鍵kp(t)を構成する1つのパラメータであるが、このh(t)以外のパラメータは時間とともに変わらないため、以降の計算式等では公開鍵kp(t)を公開鍵h(t)と読み替えて説明する場合がある。 また、ElGamal暗号の秘密鍵ks(t)は、変化するパラ-メータs(t)だけで構成されるので、秘密鍵ks(t)は、秘密鍵s(t)と同義である。したがって、以降の計算式等では秘密鍵ks(t)を秘密鍵s(t)として説明することもある。
【0026】
暗号化アルゴリズム(Enc)は、公開鍵kp:=(G,q,g,h)を用い、平文の集合Mに属する平文mを暗号化する。暗号文ベクトルCは、後述するスカラー値c1、c2の2つの成分から構成される。暗号文ベクトルCは数1式で表される。
【0027】
【数1】
この数1式は、平文mを公開鍵kpで暗号化したものが、暗号文ベクトルCになることを示している。暗号文ベクトルCの構成要素であるスカラー値c1、c2は、数1式で示されるように、それぞれgn mod p、mhnmod pで示される。但し、nは暗号化する際に整数集合Zqから一様に選ばれる乱数である。ここで、「一様に選ばれる乱数」とは、一様分布に従うランダムな値から選ばれる乱数を意味する。すなわち、整数集合Zqの中の、全要素である0以上q未満の整数値から、同じ確率で選ばれる整数値を乱数nとする。
【0028】
復号アルゴリズム(Dec)は、秘密鍵ks:=sと公開鍵kp:=(G,q,g,h)を用いて暗号文ベクトルCを数2式に従って復号し、平文m’を出力する。復号が正しく行われたときには、m’=mとなる。
【0029】
【数2】
但し、(c1)-sは、(c1)sのpを法(除数)とするモジュラー逆数である。暗号文Cが数1式により暗号化されていれば、数3式が成立する。この数3式は、平文mを公開鍵kpで暗号化したものを、秘密鍵ksで復号すると元の平文mに戻ることを数式で示したものである。
【0030】
【数3】
【0031】
次に、本発明の暗号化制御システムの原理について説明する。ここでは、Rは実数集合、Nは自然数集合、Zは整数集合とする。本発明の暗号化制御システムで用いられる離散時間制御器は、事前に設計されており、その入出力関係は、数4式で示す制御則fで記述されるとする。
【0032】
【数4】
ここで、tは自然数集合Nの要素であり、現在の日時を自然数で丸めて示したステップ(t=1,2,3,4・・・)である。また、Φは制御器の制御パラメータであり、制御パラメータKp、Ki、Kdを総括的に示す記号である。なお、Kpは比例要素、Kiは積分要素、Kdは微分要素を指す。ζは制御器の状態ベクトルxと制御器への入力ucをまとめた入力ベクトルである。状態ベクトルxとは、状態変数のベクトルであり、状態変数とは、制御対象や制御器など、制御系が持つ状態を数値として表した変数である。
行列A、B、C、Dは、制御パラメータΦを表す係数行列であり、制御対象に対して知識のある管理者(責任者)によって、制御工学に基づいて適切な係数が設定される。
【0033】
Ψは、制御入力uと更新した状態ベクトルxの計算過程をまとめた行列である。写像fは、行列とベクトルの積を表す。f×は、Φの行ベクトルとζの列ベクトルの乗算を表す。また,f+は、行列の列ベクトル同士で足し合わせる写像を表す。このとき、写像fは、f+とf×の合成関数として表すことができる。Ψは、写像f×の出力であると同時に写像f+の入力であり、写像fの計算過程をまとめた行列である。
【0034】
また、x(t)は、時刻tにおける制御器の状態を示すベクトルであり、u(t)は制御入力を示す。uc(t)は制御器への入力である。数4式からも、ζが制御器の状態ベクトルxと制御器への入力ucをまとめた入力ベクトルであることが分かる。数4式は、入力ベクトルζと制御パラメータΦとの乗算を意味しているが、この数4式から制御器への入力ベクトルζ(t)と制御パラメータΦの乗算により、制御入力u(t)が得られること、および制御器の状態ベクトルx(t)と制御パラメータΦの乗算により、制御器の状態ベクトルx(t)がx(t+1)に更新されることが分かる。そして、対象となる制御系の制御則fが数4式で与えられ、暗号化方式(Gen,Enc,Dec)として、関数fεが数5式を満たすとき、関数fεを関数fに対する暗号化制御と呼ぶ。
【0035】
【数5】
【0036】
この数5式は、制御器の制御パラメータΦを公開鍵kpで暗号化したものと、制御器の入力ベクトルζを公開鍵kpで暗号化したものを、暗号化制御則fεに従って秘密鍵ksで復号するとf(Φ,ζ(t))が得られることを示している。
ここで、暗号化方式(Gen,Enc,Dec)にElGamal暗号を用いると、平文空間Mは、公開鍵kp:=(G,q,g,h)を用いて、数6式で定義される。数6式でgは巡回群Gの生成元であり、公開鍵kpの1つのパラメータである。pは公開鍵のパラメータqから導かれる素数である。なお、ElGamal暗号の安全性を保つためには、平文空間Mは、実数集合Zpの部分群として定義する必要がある。
【0037】
【数6】
【0038】
観測値および制御器のパラメータは実数であるため、暗号化する際には、数7式で示すような、丸めの誤差を低減するための係数γを使って、平文空間Mの元への丸めが必要である。
【0039】
【数7】
ここで、yは実数ベクトル、γyは集合Mの要素の整数ベクトル、yi、diはベクトルy、dのi番目の要素である。γは、集合Mへの丸めの誤差を低減するために乗ずる整数値であり、平文変換ゲインと呼ぶ。Qは実数ベクトルyを集合Mの要素の整数ベクトルに変換する写像である。
【0040】
ここで、平文変換ゲインγと集合Mへの丸めについて、さらに詳しく説明する。yは実数であるから、小数点以下の数字が繰り返し現れる。一例として、観測値yが「y=2.3568937…」と小数点以下が続く実数であったとする。この数字を整数に丸めると、小数点以下を切り捨てて「2」になる。このときの観測値yとの誤差は約35.7%になる。平文変換ゲインγ=10として、10yにすると「γy=23.568937…」、この数値γyを整数に丸めると「23」になり、誤差は約5.7%になって、平文変換ゲインγを掛ける前と比較すると、誤差が大幅に小さくなることがわかる。以上が集合Mへの丸めの意味である。
【0041】
<暗号化制御系の鍵長設計問題>
まず、攻撃者が鍵を解読する方法(手順)を説明する。攻撃者がネットワーク上で公開鍵kpのパラメータhと素数pを入手した場合、攻撃者は数8式を満足する秘密鍵パラメータsを特定する必要がある。なお、pは公開鍵kpのパラメータqから求められる素数である。
【0042】
【数8】
【0043】
この数8式で、公開鍵kpのパラメータhと素数pから秘密鍵パラメータsを求める問題が離散対数問題である。この問題の解法については、準指数時間アルゴリズムという手法が知られている。そして、この準指数時間アルゴリズムを用いて、数8式の離散対数問題を解くのに要する予想時間Lpは数9式になることも知られている。
【0044】
【数9】
【0045】
ここで、pは、p=2q+1(qは素数)で表され、鍵長k(bit)に対して2k<p<2k+1となる素数である。素数qを与えるpを安全素数と呼ぶ。vおよびcはアルゴリズムにより決まる定数で、指数計算法では、v=1/2、c=1であり、数体ふるい法では、v=1/3、c=(64/9)1/3である。また、p→∞のとき、o(1)は0に収束する。
鍵長k(bit)が大きくなるにつれて、計算時間Lpが指数的に増加するので、十分大きなkの下では、離散対数問題を解くことは困難であるとされている。
【0046】
そこで、発明者らは、暗号化制御系の稼働中に全入出力信号の漏洩を防ぐために、制御系の耐用年数内(例えば10~20年)での鍵解読が困難な鍵長の設計問題を検討した。
制御系の耐用年数をLu(sec)、攻撃者が全ての鍵解読に要する時間をLa(sec)とする。すると、Lu(sec)≧La(sec)であれば、攻撃者は暗号化制御系の稼働中に全ての秘密鍵を入手できるから、攻撃者にとっては、全時刻の入出力信号の解読が可能になる。
【0047】
しかし、一方で、Lu(sec)<La(sec)であれば、攻撃者は暗号化制御系の稼働時間内に全ての秘密鍵を特定することができない。つまり、この場合、暗号化制御系は、全時刻の入出力信号が漏洩する前に制御系の寿命(耐用年数)が来るため、万が一に攻撃者が全ての秘密鍵を特定しても、制御系に対して攻撃する機会がなくなってしまう。
以上の議論から、鍵長設計問題は、Lu(sec)<La(sec)を満たす最小の鍵長k(bit)を求める問題に帰着させることができる。
【0048】
鍵を更新しない静的な暗号化制御系では、攻撃者が全ての鍵解読に要する時間La(sec)は、数9式で示した離散対数問題を解くのに要する予想時間Lp(v,c)と等しくなる。例えば、制御系の耐用年数Lu(sec)を30年(≒9.46×108sec)として、攻撃者が480(GFLOPS:Giga Floating-point Operations Per Second)の性能の計算機を用いて数体ふるい法を実行した場合には、Lu(sec)<La(sec)を満たす最小のkは601(bit)となる。
このk=601(bit)を有する暗号をリアルタイムで解くことが可能な高性能な計算機は限られるので、従来のように鍵を更新しない静的な暗号化制御系は現実的ではない。
一方、通称ラズパイとも呼ばれるARM(アーム)プロセッサを搭載したシングルボードコンピュータであるRaspberry Piを用いた実験では、鍵長128(bit)までが限度である。
【0049】
<動的拡張による解法>
そこで、発明者らは、公開鍵kp(t)および秘密鍵ks(t)を時刻(ステップ)tに従って動的に更新することにより、短い鍵長でリアルタイム性の実現を可能とする暗号制御システムを考察した。
すなわち、発明者らは、鍵長設計問題に対する解法として、鍵を複数個実装することによりElGamal暗号の動的拡張を行い、暗号化制御系の鍵長設計問題の解をより短い鍵長の鍵で得ることに成功した。
【0050】
先に説明した、制御系の耐用年数Luと攻撃者が全ての鍵解読に要する時間Laとの比較では、単一の鍵でLu(sec)<La(sec)を満たす最小の鍵長kは601(bit)であった。しかし、これが2個の鍵であれば、最小の鍵長kはもっと短いビット長で済む。暗号鍵が3個であれば更に鍵長kを短くできる。この考えを拡張し、制御系のステップ応答毎に暗号鍵を更新することを考えると、Lu(sec)<La(sec)を満たす最小の鍵長kは128(bit)よりも短くしても問題がなくなる。つまり、暗号鍵の数が膨大になれば、攻撃者による全ての暗号鍵の解読が事実上不可能になる。すなわち、制御系のステップ応答毎に暗号鍵を更新する技術思想を導入することにより、前述のシングルボードコンピュータのような非力な計算機資源でも、十分に実用的な暗号化制御システムを実現することが可能になる。
【0051】
発明者らは、ElGamal暗号の公開鍵kp(t)、秘密鍵ks(t)、暗号文C(c1(t),c2(t))に対して、数10式に示す更新式に基づいて毎ステップで更新させることにした。数10式では、公開鍵kp(t)をElGamal暗号のパラメータの一つであるh(t)で表し、秘密鍵ks(t)を同じくパラメータs(t)で表している。したがって、以降の数式の説明では、単に、公開鍵h(t)、秘密鍵s(t)として説明する。
【0052】
【数10】
【0053】
ここで、v(t)、w(t)は、整数集合Zの元をなす乱数である。この更新則がすべてのステップで離散対数問題の解を与えることを証明するために、次のステップの秘密鍵s(t+1)、公開鍵h(t+1)および暗号文C(c1(t+1)、c2(t+1))について以下に示す2つの定理が考えられている。
[定理1](鍵の更新)
暗号鍵(公開鍵と秘密鍵)において、公開鍵の初期値h(0)および秘密鍵の初期値s(0)が暗号化制御アルゴリズム(Gen)で求まるものとして、暗号鍵の更新が数10式で与えられるならば、公開鍵h(t)および秘密鍵s(t)はすべての時刻tで数3式を満足する。
【0054】
この定理1は、以下の数11式のように、数3式で示される時刻(t+1)の復号アルゴリズムDecの式を変形して時刻(t)の復号アルゴリズム(Dec)の式を導くことにより証明することができる。
ここで、n(t)は、n(t+1)=(n(t)+v(t))mod q という式でステップ毎に更新される乱数である。同じ乱数であるが、n(t)は、数10式で用いたv(t)、w(t)とは異なり、数1式にて使用する乱数nである。
【0055】
【数11】
【0056】
[定理2](暗号文更新)
暗号文の更新が数10式で与えられるならば、暗号文c1(t)、c2(t)は、全ての時刻tで数3式を満たす。
この定理2も、数12式に示すように、数3式が成り立つことを確認することで、証明することが可能である。
【0057】
【数12】
【0058】
以上説明したように、公開鍵h(t)、秘密鍵s(t)、および暗号文c1(t)、c2(t)が乱数を用いて更新できることが分かった。さらに、数10式によって更新される暗号文c1(t+1)、c2(t+1)は乗法に対して準同型性を満たすことも分かった。
【0059】
数10式に示す更新式により、制御系で用いる公開鍵h(t)と秘密鍵s(t)を、乱数を用いてサンプリング周期Tsごとに更新することを考える。サンプリング周期Tsごとに更新するため、制御系と同じ乱数発生器を持たない攻撃者は、仮に秘密鍵s(t)を取得しても、s(t+1)に更新することは困難である。
【0060】
なお、サンプリング周期Tsは、制御系の種類によって異なる。例えば、制御対象が機械ロボットのようなものであれば、この機械ロボットのサンプリング周期Tsは0.1msec程度の周期で切り替えることが考えられる。これに対して化学プラントなどの大型のプラントであれば、数か月または数年に一度ということもあり得る。すなわち、サンプリング周期Tsは、どの程度の速さで制御対象をセンシングするかで決まる値であり、制御対象によって短い周期になったり、長い周期になったりする。一般的には、ゆっくり動くものは長い周期になり、速く動くものは短い周期になる。
【0061】
なお、耐用年数Lu内のサンプリング数(ステップ数)は、制御系の耐用年数Luをサンプリング周期Tsで割った値Lu/Tsステップである。一方、秘密鍵s(t)の取り得る値はq通り(qはk(bit)の素数)である。
ここで、q≧Lu/Tsであれば、全ての鍵解読に要する時間Laは、L=(Lu/Ts)Lp{v,c}になる。なお、Lpは、準指数時間アルゴリズムを用いて、離散対数問題を解くのに要する予想時間である(数9式参照)。
【0062】
数10式に示す更新式を用いた暗号化制御系における鍵長設計問題は、耐用年数Luおよびサンプリング周期Tsのいずれも0より大きい正の値であり、Ts<Lp{v,c}となる。
例えば、サンプリング周期Ts=1.0×10-2(sec)とした場合、Ts<Lp{v,c}を満たす最小のk(bit)の値は105(bit)になる。また、サンプリング周期Tsを更に短くして、Ts=1.0×10-3(sec)とすると、最小のk(bit)の値は83(bit)になる。このことから、数10式に示した更新式により、ElGamal暗号を動的に拡張すると、従来より短い鍵長であっても、1サンプリング周期Ts内で全入力信号を特定することは困難であるということができる。
【0063】
<制御シミュレーション>
次に、数10式の更新式を用いて、公開鍵、秘密鍵および暗号文が更新されていること、および制御性能が大きく変化しないことをシミュレーションにより確認する。そのため、一次遅れ系に対し、サンプリング周期Ts=1.0×10-2(sec)として離散化したPID制御器を設計し、初期位置を「1」、初期速度を「0」として、目標位置「0」へ収束させる制御シミュレーションを行った。
まず、k=128(bit)の公開鍵を用いて、制御器および信号を暗号化し、従来の制御器と同じ条件でシミュレーションを行った。公開鍵h(t)および秘密鍵s(t)の更新周期はサンプリング周期と同じにした。
【0064】
図1は、この制御シミュレーションを行う制御器(暗号化コントローラ)10と制御対象21を含むプラント20との間に復号部30と暗号化部40を設けた暗号化制御方式の原理を説明するための概略図である。図1では、プラント20と制御対象21を分けて記載しているが、この2つは実質的に同義と考えても差し支えない。
【0065】
図1を参照して、制御工学における一般的なフィーバック制御の一種である、入力値の制御を出力値と目標値との偏差によって行う方法であるPID(Proportional Integral Differential Controller)制御器を例として説明する。
図1に示すように、制御対象21を含むプラント20に対して、目標値rが設定される。
この目標値rは復号部30からプラント20に向けて供給されるものであるが、これを実現する上で、暗号化コントローラ10に暗号化目標値Enc(r)が供給される。
また、復号部30からの制御入力uによって制御される制御対象21を不図示のセンサでセンシングすることにより、制御対象21から観測値yが出力される。
【0066】
この観測値yは減算器22において、復号部30で復号された目標値rとの減算がなされ、減算器22から目標誤差ε(=r-y)が出力される。なお、ここで復号部30から出力される目標値rは、プラント20の制御対象21によって異なるが、図4で後述するPID制御シミュレーションでは、初期位置を「1」、初期速度を「0」、目標位置「0」に設定している。減算器22から出力される目標誤差εは、暗号化部40に送られる。
【0067】
復号部30から暗号化コントローラ10の状態ベクトルxも出力され、暗号化部40に送られる。暗号化部40では、暗号化コントローラ10の状態ベクトルxと目標誤差εをまとめた入力ベクトルζが生成され、公開鍵kp(t)によって暗号化される。そして、暗号化部40より暗号化入力ベクトルEnc(ζ)が出力され、暗号化コントローラ(制御器)10に送られる。なお、この暗号化入力ベクトルEnc(ζ)は、暗号化された状態ベクトルEnc(x)と、暗号化された目標誤差Enc(ε)を含む。
【0068】
暗号化コントローラ10には、暗号化入力ベクトルEnc(ζ)の他に、暗号化された目標値Enc(r)、第1暗号化制御パラメータEnc(Kp)、第2暗号化制御パラメータEnc(Ki)、および第3暗号化制御パラメータEnc(Kd)が供給されている。
例えば、最も単純な比例制御で説明すると、比例制御では誤差に比例ゲインをかけるため、Enc(Kp)×Enc(ε)mod p=Enc(u)になる。この計算は平文同士でKp×εを計算したものと一致する。
【0069】
暗号化コントローラ10に供給される第1~第3暗号化制御パラメータEnc(Kp)、Enc(Ki)、Enc(Kd)は、代表的な暗号化制御パラメータである。この暗号化制御パラメータに暗号化された入力ベクトルEnc(ζ)を乗算剰余の処理演算を行うと、暗号化された暗号化コントローラ(制御器)10の出力行列Enc(Ψ)が出力される。出力行列Enc(Ψ)は、暗号化制御信号Enc(u)および更新された暗号化状態ベクトルEnc(x)を含む。
【0070】
暗号化コントローラ10から出力される暗号化された出力行列Enc(Ψ)および暗号化された目標値Enc(r)は、復号部30に加えられ、復号部30で復号されて、制御信号u、状態ベクトルxおよび目標値rが生成される。そして、制御信号uは制御対象21を制御するために利用される。また、目標値rはプラント20の減算器22に送られ、制御器の状態ベクトルxはプラント20を経由して暗号化部40に送られる。
【0071】
この図1に示す処理は、毎ステップ(サンプリング周期Ts)で繰り返され、毎ステップで暗号化部40の暗号化に用いられる公開鍵h(t)、復号部30の復号に用いられる秘密鍵s(t)および暗号文C(c1(t),c2(t))が更新される。この公開鍵h(t)、秘密鍵s(t)および暗号文C(c1(t),c2(t))の更新処理は、数10式で述べた更新則に従って行われる。 暗号文Cは、図1における暗号化制御パラメータEnc(Kp)、Enc(Ki)、Enc(Kd)、暗号化目標値Enc(r)、暗号化制御信号Enc(u)、暗号化状態ベクトルEnc(x)及び暗号化目標誤差Enc(ε)の全てを含む。
【0072】
なお、ここで復号部30および暗号化部40と暗号化コントローラ(制御器)10は伝送路を介して接続されている。図1では、暗号化コントローラ(制御器)10以外の構成要素は、点線で囲っている。点線で囲ったことの意味は、復号部30、暗号化部40は、プラント20と密接に関係していること、そして復号され制御信号u、目標値r、目標誤差ε、状態ベクトルxは、平文の状態で伝送路に出力されないことを意味している。
【0073】
図2Aは、公開鍵h(t)、秘密鍵s(t)、暗号文c1(t)、c2(t)を数10式に示す更新則で更新する際の機能を示すブロック図である。図2Aに示すように、鍵更新を実行する機能ブロックとしては、記憶部50、乱数生成器51、秘密鍵更新部52、公開鍵更新部53、暗号文更新部54、55、乱数更新部56を備える。
【0074】
図2Aに示すように、最初のステップ(t=0)で、各パラメータの初期値が記憶部50に記憶される。p、qは素数、gは巡回群Gの生成元であり、これらのスカラー値p、q、gは時間変化のない固定された数である。また、記憶部50には、ステップ(t=0)の秘密鍵パラメータs(0)、ステップ(t=0)の公・BR>J鍵パラメータH(0)、ステップ(T=0)の乱数N(0)が記憶される。さらに、記憶部50には、ステップ(T=0)の暗号化制御パラメータENCΦ(0)も記憶される。秘密鍵パラメータS(0)、公開鍵パラメータH(0)、乱数N(0)および暗号化制御パラメータENCΦ(0)は、数10式で計算する際に、秘密鍵S(T)、公開鍵H(T)、暗号文C1(t)、c2(t)を毎ステップで更新する初期値となる。
【0075】
記憶部50に記憶されている固定パラメータ(p、q、g)と時間とともに更新されるパラメータの初期値(s(0)、h(0)、n(0)、EncΦ(0))は、その用途に応じて選択され、秘密鍵更新部52、公開鍵更新部53、暗号文更新部54、55および乱数更新部56に送られる。また、乱数生成器51で生成される乱数v(t)、w(t)も記憶部50からの各パラメータとともに、秘密鍵更新部52、公開鍵更新部53、暗号文更新部54、55および乱数更新部56に送られる。なお、更新されるパラメータの初期値(s(0)、h(0)、n(0)、EncΦ(0))は、時刻t(ステップt=1、2、3、4・・・)で更新されると、その時刻(ステップt)での値(s(t)、h(t)、n(t)、EncΦ(t))となって、記憶部50に保存される。 そして、保存されたステップtにおける秘密鍵s(t)、公開鍵h(t)、乱数n(t)、暗号化制御パラメータEncΦ(t)は、次のステップ(t+1)の更新の際に利用される。
【0076】
秘密鍵更新部52は、秘密鍵の初期値s(0)を数10式の第1式に従って乱数w(0)を使って更新し、次のステップ(t=1)の秘密鍵s(1)を得る。公開鍵更新部53は、公開鍵の初期値h(0)を数10式の第2式に従って乱数w(0)を使って更新し、次のステップ(t=1)の公開鍵h(1)を得る。暗号文更新部54は、暗号化制御パラメータの初期値EncΦ(0)を数10式の第3式に従って乱数v(0)を使って更新し、次のステップ(t=1)の暗号文c1(1)を得る。
【0077】
また、暗号文更新部55は、暗号化制御パラメータのEnc初期値Φ(0)から得られる暗号文の初期値c1(0)、c2(0)と乱数v(0)、w(0)を用いて数10式により更新し、暗号文c2(1)を得る。乱数更新部56は、記憶部50から取り出した乱数の初期値n(0)と乱数生成器51からの乱数v(0)を用いて、次のステップで利用する乱数n(1)を生成する。この乱数n(t)の更新式は数10式では示されていないが、以下の式が用いられる。
n(t+1)=(n(t)+v(t))mod q
このようにして、ステップ(t=1)で更新された秘密鍵s(1)、公開鍵h(1)、暗号文c1(1)、c2(1)および乱数n(1)は、記憶部50に記憶または上書きされ、次の更新ステップの新たな初期値として利用される。
【0078】
図2Bは、公開鍵h(t)と秘密鍵s(t)、そして暗号文制御パラメータEnc(Φ)がサンプリング周期Tsに相当する毎ステップで更新される様子を示したものである。図2Bで示すEnc(Φ)は、図1の第1暗号化制御パラメータEnc(Kp)、第2暗号化制御パラメータEnc(Ki)、および第3暗号化制御パラメータEnc(Kd)を代表して示した暗号化制御パラメータである。すでに述べたように、暗号化制御パラメータEncΦ(t)の更新は暗号文C(c1,c2)の更新と同義である。
【0079】
図2Bに示すように、公開鍵h(t)、秘密鍵s(t)および暗号文C(c1(t),c2(t))が毎ステップで更新され、その更新は繰り返される。数10式で説明したように、f1は秘密鍵s(t)を更新する写像であり、秘密鍵s(t)と乱数w(t)を入力して新しい秘密鍵s(t+1)を作る。また、f2は公開鍵h(t)を更新する写像であり、公開鍵h(t)と乱数w(t)を入力して新しい公開鍵h(t+1)を作る。f3は暗号文c1を更新する写像であり、暗号文c1(t)、乱数v(t)を入力して新たな暗号文c1(t+1)を作る。同様に、f4は暗号文c2(t)を更新する写像であり、暗号文c1(t)、c2(t)、乱数v(t)、w(t)を入力して新たな暗号文c2(t+1)を生成する。
【0080】
このように、ElGamal暗号を用いて鍵更新を行う暗号化制御方法によれば、無数の暗号鍵と暗号文を作成することが可能になる。例えばk=32(bit)であれば、2,147,483,693通りの鍵生成が可能となり、一度流出した鍵を用いる頻度が低下するため、鍵の有効性および機能性は著しく向上する。
【0081】
図3Aは、PID制御器のシミュレーションにより、k=128(bit)の公開鍵を用いて制御器および信号を暗号化した場合(ECS(128bit))と暗号化しなかった場合(normal PID)の出力応答を示す。横軸は時間(sec)、縦軸はアウトプット(観測値)yである。図3Aに示すように、暗号化した場合でも暗号化しない場合でも、両者はほぼ一致している。図3Bは、暗号化した場合の応答と暗号化しない場合の応答の差分(y-ECSy)を示したものである。図3Bから、両者の応答の誤差は、倍精度浮動小数点型の保証範囲(15桁)内に収まっていることが分かる。
【0082】
図4A図4Cは、従来の静的な鍵と本発明における動的に拡張した鍵を用いた場合の秘密鍵(s)、公開鍵(h)および暗号化制御パラメータEnc(Kp)を比較して示した図である。なお、暗号化制御パラメータEnc(Kp)は比例制御に特化してシミュレーションした結果である。
静的な鍵を用いた場合は秘密鍵(s)が一定値なのに対して、図4Aから分かるように、数10式の更新則によって更新された場合は、秘密鍵(s)が激しく変化している。また、同様に、公開鍵(h)も静的な鍵を用いた場合は一定値であるが、図4Bから分かるように、数10式の更新則によって更新された場合は、激しく変化している。つまり、全ての時刻において秘密鍵(s)、公開鍵(h)が更新されていることが分かる。
【0083】
図4Cは、暗号文の一例である比例制御の暗号化制御パラメータEnc(Kp)のゲインであるが、この値も大きく変化しており、毎ステップで更新されていることが分かる。図4Cの暗号化制御パラメータEnc(Kp)の激しい変動は、暗号文Cも同様に激しく変動していることを意味する。なお、図4Cでは暗号文C(c1,c2)のうちのスカラー値c1(t)の変動のみを示しているが、スカラー値c2(t)も同様に変動することは言うまでもない。
【0084】
このように、図4Cに示すように暗号文Cは激しく変化しているが、図3Aから制御シミュレーションが正しく行われているといえるから、対応する平文は一定であることが分かる。すなわち、平文が一定の値であっても、公開鍵(h)が時々刻々と更新されるために、暗号文Cの値が時々刻々と変化するので、悪意ある第三者に対して平文を確実に隠蔽することに成功している。図4に示すように、暗号文C、秘密鍵(s)、および公開鍵(h)はすべて同じように激しく変化していることから、数10式の秘密鍵(s)、公開鍵(h)、暗号文C(c1(t),c2(t))の更新式は有効に機能していることが分かる。
【0085】
図5A図5Bは、離散対数問題に係る処理時間を示している。図5Aは、既に発明者らの論文(非特許文献2)で発表した計算結果を元に、鍵長設計問題の数値例を示したものである。
仮に、ある制御系の耐用年数Lu=100(sec)、サンプリング周期Ts=1.0×10-2(sec)とする。
そして、鍵長32~96(bit)で数10式の更新式を用いて暗号化シミュレーションを1000ステップ計算し、各ステップで用いた公開鍵と秘密鍵を記録した。図5Aは、Mac book air(登録商標(登録番号第5204574号):CPU:1.6GHz,メモリ8GB)で指数計算法アルゴリズムを用いて、記録した公開鍵(h)から秘密鍵(s)を求める離散対数問題を1000回計算した処理時間(μsec)を示している。図5Bは、攻撃に必要な処理時間の最大値、平均値、最小値を示したものである。
【0086】
図5Bからわかるように、静的な暗号制御系の場合は、制御系の耐用年数Luが離散対数問題を解くのに要する予想時間Lpより小さくなる(Lu<Lp{v,c}となる)鍵長は96(bit)である。一方、数10式の更新式を用いる動的な暗号制御系の場合、サンプリング周期Tsが離散対数問題を解くのに要する予想時間Lpより小さくなる(Ts<Lp{v,c})鍵長は48(bit)である。この図5Bから、動的な暗号系にすると、静的な暗号系に比べてより短い鍵長で全入力信号の特定を妨げられることが分かる。しかし、仮に、48(bit)の暗号鍵を用いた場合は、攻撃者はサンプリング周期Ts以内にリアルタイム解読を成功させる場合がありうる。そのような懸念がある場合には、図5Bから、80(bit)以上の鍵長を設定すればよいことも理解できる。
【0087】
<暗号化制御システムの実施形態例>
以下、本発明の暗号化制御システムの秘密鍵、公開鍵および暗号文の更新則を用いたプラント制御システムの具体的な実施形態例について説明する。
【0088】
図6は、本発明の暗号化制御を実施する実施形態に係る暗号化制御システム101の全体構成を示す概略図である。暗号化制御システム101は、入力装置102と、プラント側制御装置103と、コントローラ104と、日時情報源装置105を備える。
コントローラ104は、入力装置102と第1制御ネットワークL108で接続され、プラント側制御装置103と第2制御ネットワークL109で接続されている。
プラント側制御装置103には、制御対象106とセンサ107が接続されている。プラント側制御装置103は、後述するように、制御対象106に制御信号を与え、センサ107から制御対象106の状態情報である観測値を取得する。
【0089】
また、入力装置102、コントローラ104、プラント側制御装置103はそれぞれ情報ネットワークL110を通じて、日時情報源装置105に接続される。日時情報源装置105は、ネットワークOSとNTPサーバ(Network Time Protocol)およびNTPクライアントが稼働するパソコンやサーバである。第1制御ネットワークL108および第2制御ネットワークL109はデータ転送の確実性を重視したネットワークであり、様々な種類のネットワークインターフェースが利用可能である。一方、情報ネットワークL110は制御ネットワーク程の確実性は要求されない。
【0090】
入力装置102、コントローラ104およびプラント側制御装置103は、プログラマブルコントローラと呼ばれる装置である。プログラマブルコントローラは、スロットを多数有するケース状のマウントベース111を備え、このマウントベース111のスロットに収納される大きさのモジュールが必要な機能に応じて収納される。
マウントベース111にはモジュール同士を接続するインターフェースが内蔵されており、モジュールがスロットに挿入されると、モジュール間のデータの送受信や適切な電源の供給が確立される。
【0091】
入力装置102のマウントベース111aには、CPUモジュール112と、情報ネットワークモジュール113と、第1制御ネットワークモジュール114aが装着されている。コントローラ104のマウントベース111bには、CPUモジュール112と、情報ネットワークモジュール113と、第1制御ネットワークモジュール114bと、第2制御ネットワークモジュール115が装着されている。
プラント側制御装置103のマウントベース111cには、CPUモジュール112と、情報ネットワークモジュール113と、第2制御ネットワークモジュール115と、入出力モジュール116が装着されている。
【0092】
入力装置102の第1制御ネットワークモジュール114aは送信側であり、コントローラ104の第1制御ネットワークモジュール114bは受信側である。コントローラ104とプラント側制御装置103の第2制御ネットワークモジュール115は、送信側端子と受信側端子が相互に接続されている。
【0093】
[入力装置102のハードウェア構成]
図7は、入力装置102のハードウェア構成を示すブロック図である。
入力装置102は、マウントベース111に設けられているモジュールバス201に接続されているCPUモジュール112、情報ネットワークモジュール113、第1制御ネットワークモジュール114aを備える。CPUモジュール112は、内部バス206に接続されているCPU202、ROM203、RAM204、および日時情報を生成するRTC(Real Time Clock)205を備える。内部バス206はモジュールバス201に接続されている。CPUモジュール112のROM203には、暗号化制御システム101における制御演算処理および暗号化処理等を遂行するためのプログラムが格納されている。
【0094】
情報ネットワークモジュール113は、内部バス206に接続されているCPU202、ROM203、RAM204、およびNIC(Network Interface Card)207を備える。内部バス206はモジュールバス201に接続されている。情報ネットワークモジュール113のROM203には、ネットワークOSと、NTPサーバプログラムおよびNTPクライアントプログラム等が格納されている。第1制御ネットワークモジュール114aは、送信部208がモジュールバス201に接続されている。
【0095】
[コントローラ104のハードウェア構成]
図8は、コントローラ104のハードウェア構成を示すブロック図である。コントローラ104は、CPUモジュール112、情報ネットワークモジュール113、第1制御ネットワークモジュール114b、および第2制御ネットワークモジュール115を備える。これらのモジュールは、マウントベース111に設けられているモジュールバス201に接続されている。CPUモジュール112と情報ネットワークモジュール113は、入力装置102のものと同じなので説明は省略する。
【0096】
第1制御ネットワークモジュール114bは、モジュールバス201に接続されている受信部309を備える。第2制御ネットワークモジュール115は、内部バス206に接続されている送信部208と受信部309を備える。内部バス206はモジュールバス201に接続されている。
【0097】
[プラント側制御装置103のハードウェア構成]
図9は、プラント側制御装置103のハードウェア構成を示すブロック図である。プラント側制御装置103は、CPUモジュール112、情報ネットワークモジュール113、第2制御ネットワークモジュール115、および入出力モジュール116を備える。これらのモジュールは、マウントベース111(図1参照)に設けられているモジュールバス201に接続されている。CPUモジュール112、情報ネットワークモジュール113、第2制御ネットワークモジュール115は、コントローラ104のものと同じなので説明は割愛する。
【0098】
入出力モジュール116は、センサ107が接続されるA/D変換器410と、制御対象106が接続されるD/A変換器411を備える。内部バス206はモジュールバス201に接続されている。なお、この入出力モジュール116はあくまで一例であり、接続される制御対象106やセンサ107等に応じて、A/D変換器410およびD/A変換器411に接続される信号処理回路等が必要になる場合がある。
【0099】
なお、ここではハードウェアの構成図を省略しているが、図6に示す日時情報源装置105も、サーバ装置やパソコン等で構成されるもので、バスに接続されるCPU、ROM、RAM、不揮発性ストレージ、RTCおよびNICを備えていることは言うまでもない。
【0100】
<本発明の実施形態例の暗号化制御システムのソフトウェア機能>
図10は、暗号化制御システム101の、制御ネットワークにおけるソフトウェア機能を示すブロック図である。
【0101】
[入力装置102のソフトウェア機能]
入力装置102は、目標値入力部501、入出力制御部502、暗号化処理部503、記憶部504、公開鍵更新部505および日時情報生成部506を備える。
【0102】
目標値入力部501は、暗号化される前の目標値rを入出力制御部502に与える。入出力制御部502は、目標値入力部501から入力された目標値rを暗号化処理部503に送る。暗号化処理部503は、公開鍵更新部505で更新された公開鍵kpを用いて目標値rを暗号化する。そして、暗号化処理部503は、暗号化された目標値Enc(r)を入出力制御部502に送り、入出力制御部502は、この暗号化目標値Enc(r)をコントローラ104へ送信する。
【0103】
ここで、記憶部504には、公開鍵kp(t)を更新するための初期値となる公開鍵kp(0)が保存されている。公開鍵kpのパラメータはkp:=(G,q,g,h)であるが、この中で時刻(ステップ)で更新されるのはh(t)だけであるから、時刻tの初期値となるのは公開鍵パラメータh(0)だけである。また、公開鍵更新部505は、乱数生成器505aを内蔵しており、この乱数生成器505aは、公開鍵h(t)の更新に必要な乱数w(t)を発生する。そして公開鍵更新部505は、記憶部504からの初期値の公開鍵h(0)と乱数生成器505aからの乱数w(0)との乗算剰余処理を行うことで、数10式の第2式で示される更新則に従って更新された公開鍵h(1)を出力する。
【0104】
更新された新しい公開鍵h(1)は、次のステップのための初期値として、記憶部504に記憶される。公開鍵更新部505は、この処理を順次繰り返すことにより、時刻t(ステップt)における公開鍵h(t)を、次のステップ(時刻(t+1))の公開鍵h(t+1)に更新する。
なお、公開鍵更新部505は、図2Aの公開鍵更新部53、乱数生成器505aは、図2Aの乱数生成器51に相当する。記憶部504には、図2Aの記憶部50に記憶される要素のうち、p,q,g,h(0)が格納されており、時刻tが進むに連れてh(t)が更新される。
【0105】
乱数発生器505aで発生される乱数v(t)、w(t)は公開鍵更新部505の演算に使われる乱数であるが、後述するコントローラ104の暗号文更新部510の乱数生成器510aおよびプラント側制御装置103の暗号鍵更新部513の乱数生成器513aと同期がとれていなければならない。この3つの乱数生成器505a、510a、513aは、日時情報生成部506、511、519からの時刻情報に基づいて同期され、同時刻t(ステップt)では同じ乱数を生成するように制御される。例えば、乱数生成器505a、510a、513aは、複数の乱数からなる同じ乱数リストを有し、同時刻tでは、乱数生成器505a、510a、513aが乱数リストの同じレコード番号のレコードを読み込むことで、それぞれ同じ乱数v(t)、w(t)が生成されるように構成される。
【0106】
そして、公開鍵更新部505は、ステップ(t+1)で更新した公開鍵h(t+1)を暗号化処理部503に送る。暗号化処理部503は、公開鍵更新部505で更新された新たな公開鍵h(t+1)により、目標値rを暗号化し、暗号化された目標値Enc(r)を入出力制御部502に送る。
【0107】
<コントローラ104のソフトウェア機能>
コントローラ104は、入出力制御部507、乗算部508、記憶部509、暗号文更新部510、日時情報生成部511、およびログテーブル520を備える。さらに、図8のハードウェア構成で説明した送信部208と受信部309を備える。
【0108】
入力装置102からコントローラ104に送信される暗号化目標値Enc(r)は、コントローラ104の入出力制御部507に入力される。入出力制御部507は、この暗号化目標値Enc(r)を、送信部208を介してそのままプラント側制御装置103へ送信する。また、入出力制御部507は、受信部309を介してプラント側制御装置103から暗号化入力ベクトルEnc(ζ)を受け取り、この暗号化入力ベクトルEnc(ζ)を乗算部508に送る。なお、入出力制御部507から出力される情報と入出力制御部507に入力される情報は、全てログテーブル520に保存される。
【0109】
コントローラ104の暗号文更新部510は、記憶部509に記憶されている第1~第3の暗号化制御パラメータEnc(Kp)、Enc(Ki)、Enc(Kd)(以下、まとめて「暗号化制御パラメータEnc(Φ)またはEncΦ」とする)の更新を行う。すなわち、暗号文更新部510は、プラント側制御装置103から受信部309を介して受信したデータに含まれている現在日時情報に基づき、記憶部509に記録されている暗号化制御パラメータEnc(Φ)の初期値EncΦ(0)を読み取り、暗号化制御パラメータEncΦ(1)に更新して乗算部508に送る。なお、更新した暗号化制御パラメータEncΦ(1)は、記憶部509に保存される。このように、暗号文更新部510は暗号化制御パラメータEncΦ(t)の更新を繰り返し、数10式の第3式、第4式に従って次の時刻(t+1)(ステップ(t+1))の暗号化制御パラメータEncΦ(t+1)を生成し、乗算器508に送られる。
【0110】
なお、上述したように、暗号文更新部510は、乱数生成器510aを内蔵しており、この乱数生成器510aからも入力装置102の乱数生成器505aと同じ時刻(ステップ)で同じ乱数が発生される。
暗号化更新部510において、暗号化制御パラメータEncΦ(t)の更新が終了した後は、更新された暗号化制御パラメータEncΦ(t+1)も、次の更新のために記憶部509に保存される。このとき、日時情報生成部511からの更新時の日時情報も暗号化制御パラメータEncΦ(t+1)とともに、記憶部509に保存される。
【0111】
暗号文更新部510は、図2Aの暗号文更新部54および暗号文更新部55に加え、公開鍵更新部53の機能を包含している。数10式にて示されるように、暗号文c2(t)の更新には公開鍵h(t)が必要だからである。乱数生成器510aは、図2Aの乱数生成器51に相当する。記憶部509には、図2Aの記憶部50に記憶される要素のうち、p,q,g,h(0), EncΦ(0)が格納されており、時刻tが進むに連れてh(t)及びEncΦ(t)が更新される。
【0112】
乗算部508は、入出力制御部507から送られた暗号化入力ベクトルEnc(ζ)と暗号文更新部510からの暗号化制御パラメータEncΦ(t)との乗算処理を行い、暗号化出力行列Enc(Ψ)を算出する。この暗号化出力行列Enc(Ψ)は、図1で説明したように、暗号化制御信号Enc(u)および更新された暗号化状態ベクトルEnc(x)を含むものであるから、暗号化出力行列Enc(Ψ)を暗号化制御入力Enc(u)と読み替えて説明することもある。
【0113】
乗算部508の乗算処理によって算出された暗号化出力行列Enc(Ψ)は、入出力制御部507と送信部208を経由して、プラント側制御装置103に送られる。また、暗号化出力行列Enc(Ψ)はモニタ用として入力装置102にもフィードバックされる。
なお、コントローラ104では、コントローラ(制御器)104の状態ベクトルxも暗号化されて、暗号化出力行列Enc(Ψ)に含まれる暗号化状態ベクトルEnc(x)として、送信部208経由でプラント側制御装置103に送られる。
【0114】
上述したように、暗号化された制御器への入力ベクトルEnc(ζ)は、時刻tにおける制御器の状態を示す制御信号x(t)と制御器に対する入力ベクトルuc(t)をまとめたものである(数4式参照)。暗号文更新部510で記憶部509から読み出される暗号化制御器のパラメータEnc(Φ)と暗号化制御器の入力ベクトルEnc(ζ)を演算することで、暗号化制御器の出力行列Enc(Ψ)が出力される。出力行列Enc(Ψ)に含まれる暗号化状態ベクトルEnc(x)は、プラント側制御装置103の復号処理部512で復号されて状態ベクトルxとして、制御用演算処理部514を通じて暗号化処理部518に送られる。
【0115】
現在日時情報を出力する日時情報生成部511は、プラント側制御装置103とコントローラ104との同期運転開始時点の日時情報(以下「始動日時情報」)を出力するとともに、暗号文更新部510に対する起動および停止制御を行う。
また、日時情報生成部511が生成する現在日時情報は、乗算部508から入出力制御部507および送信部208を通じてプラント側制御装置103に送信される暗号化制御入力Enc(u)のデータフレームにエンコード日時情報として格納される。
【0116】
[プラント側制御装置103のソフトウェア機能]
プラント側制御装置103は、復号処理部512、暗号鍵更新部513、制御用演算処理部514、制御処理部515、信号変換処理部516、目標誤差演算処理部517、暗号化処理部518、日時情報生成部519および記憶部521を備える。
【0117】
コントローラ104から送信部208を介してプラント側制御装置103に送信される暗号化目標値Enc(r)および暗号化出力行列Enc(Ψ)に含まれる暗号化制御入力Enc(u)は、プラント側制御装置103の受信部309を通じて復号処理部512に入力される。
復号処理部512は、暗号化目標値Enc(r)および暗号化制御入力Enc(u)を、暗号鍵更新部513で更新処理された秘密鍵s(t+1)を用いて復号する。復号処理部512で復号処理された暗号化目標値Enc(r)および暗号化制御入力Enc(u)は、目標値rおよび制御入力uとなって制御用演算処理部514に送られ、制御用演算処理部514から目標値rおよび制御入力uが出力される。そして、制御入力uは制御処理部515に送られ、目標値rは目標誤差演算部517に送られる。また、制御用演算処理部514は、復号処理部512で復号されたコントローラ104の状態ベクトルxを出力し、この状態ベクトルxを暗号化処理部518に送る。
【0118】
ここで、暗号鍵更新部513の鍵更新処理について説明する。暗号鍵更新部513には、乱数生成器513aが内蔵されている。この乱数生成器513aも、入力装置102の乱数生成器505aおよびコントローラ104の乱数生成器510aと同期して、同時刻に同じ乱数v(t)、w(t)を生成する。また、記憶部521には、更新前の公開鍵h(t)、秘密鍵s(t)の初期値が記憶されている。
【0119】
暗号鍵更新部513は、記憶部521に記憶されている更新前の秘密鍵s(t)を読み出し、この秘密鍵s(t)と乱数生成器513aから読み出した乱数w(t)とを、数10式の第1式に示す更新式により、乗算剰余処理を行って、更新後の秘密鍵s(t+1)を生成する。 そして、この更新された秘密鍵s(t+1)を復号処理部512に送る。復号処理部512は、上述したように、この秘密鍵s(t+1)を使って、暗号化目標値Enc(r)および暗号化制御入力Enc(u)の復号処理を行う。
【0120】
また、暗号鍵更新部513は、記憶部521に記憶されている更新前の公開鍵h(t)を読み出し、この公開鍵h(t)と乱数生成器513aから読み出した乱数w(t)とを、数10式の第2式に示す更新式により、乗算剰余処理を行って、更新後の公開鍵h(t+1)を生成する。そして、この更新された公開鍵s(t+1)を暗号化処理部518に送る。
【0121】
制御処理部515は、制御用演算処理部514から入力された制御入力uに基づいて制御信号を生成し、この制御信号により制御対象106を制御する。例えば、制御対象106がモータであるならば、制御処理部515は、モータに与える電圧や位相等を制御する。制御対象106が制御信号によって制御されると、制御対象106の動作状態がセンサ107により検出される。
センサ107から出力される信号は、信号変換処理部516に送られ、観測値yに変換される。そして、観測値yが目標誤差演算処理部517に送られる。目標誤差演算処理部517では、制御用演算処理部514からの目標値rと信号変換処理部516からの観測値yとの差分がとられ、目標誤差εが出力される。PID制御器の場合、制御器への入力全般を示すuc(t)と目標誤差ε(t)が等しいので、uc=εとして、制御器への目標誤差ε(t)をフィードバックすることにより、暗号化を行っている。
【0122】
目標誤差εは、暗号化処理部518で暗号化され、暗号化目標誤差Enc(ε)に変換される。このとき、暗号鍵更新部513で更新された時刻(t+1)の公開鍵h(t+1)が暗号化処理部518に供給され、暗号化処理部518ではこの公開鍵h(t+1)を用いて目標誤差εが暗号化される。
暗号化処理部518で暗号化された暗号化目標誤差Enc(ε)は、送信部208を介して、コントローラ104へ送信される。また、制御用演算処理部514から出力される復号されたコントローラ104の状態ベクトルxも暗号化処理部518で暗号化され、暗号化入力ベクトルEnc(ζ)に含まれる、更新された暗号化状態ベクトルEnc(x)として、送信部208経由でコントローラ104に送られる。
【0123】
なお、暗号鍵更新部513における公開鍵と秘密鍵の毎ステップの更新においては、受信部309を通じてコントローラ104から受信したデータフレームに含まれている現在日時情報および始動日時情報が利用される。記憶部521には、更新前の現在のステップにおける公開鍵h(t)および秘密鍵s(t)が記憶されている。なお、更新された秘密鍵s(t+1)と公開鍵h(t+1)は、次の更新のためのベースになる値として記憶部521に保存される。
暗号鍵更新部513は、図2Aの秘密鍵更新部52、公開鍵更新部53、および暗号文更新部54、55の機能を包含している。乱数生成器513aは、図2Aの乱数生成器51に相当する。記憶部521には、図2Aの記憶部50に記憶される要素のうち、p,q,g,s(0),h(0),EncΦ(0)が格納されており、時刻tが進むに連れてs(t)、h(t)及びEncΦ(t)が更新される。
【0124】
日時情報生成部519は、現在日時情報を出力すると共に、コントローラ104の日時情報生成部511により指示されたものと同じ同期運転開始時点の日時情報(以下「始動日時情報」)を出力する。また、日時情報生成部519は、暗号鍵更新部513に対する起動および停止制御も行う。さらに、日時情報生成部519から生成される現在日時情報は、暗号化処理部518から送信される暗号化入力ベクトルEnc(ζ)に含まれる暗号化目標誤差Enc(ε)のデータフレームにエンコード日時情報として格納される。
【0125】
<本実施形態例の暗号化制御システムにおける同期運転開始処理>
図10で説明したように、本実施形態例における暗号化制御システムは、秘密鍵s(t)、公開鍵h(t)および暗号文c1(t)、c2(t)が毎ステップで更新される動的に拡張された暗号化制御システムである。したがって、入力装置102、コントローラ104およびプラント側制御装置103を同期して運転させることが極めて重要になる。このため、入力装置102、コントローラ104およびプラント側制御装置103には個別に日時情報生成部506、511、519が設けられている。
【0126】
図11は、入力装置102の日時情報生成部506、プラント側制御装置103の日時情報生成部519およびコントローラ104の日時情報生成部511の同期運転開始処理の流れを示すフローチャートである。
図11では、コントローラ104の日時情報生成部511をマスターとし、プラント側制御装置103の日時情報生成部519および入力装置102の日時情報生成部506はスレーブとして以下説明する。もちろん、コントローラ104の日時情報生成部511のかわりに、入力装置102やプラント側制御装置103の日時情報生成部をマスターにしてもよいことは当然である。
【0127】
処理を開始すると(S11)、コントローラ104の日時情報生成部511は、自身の日時情報が、図6に示す日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているか否かを確認する(S12)。ここで、十分小さい誤差とは、プラントからの情報をセンシングして観測値yを得る周期に比べて十分に小さい状態に較正されていることをいう。後述するステップS13、S14も同様である。
【0128】
コントローラ104の日時情報生成部511自身の日時情報が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されていることが確認された場合には(S12のYES)、次にコントローラ104の日時情報生成部511は、入力装置102に対し、入力装置102の日時情報生成部506が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているか否かを問い合わせて確認する(S13)。
【0129】
入力装置102の日時情報生成部506の日時情報が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されていることが確認された場合には(S13のYES)、次にコントローラ104の日時情報生成部511は、プラント側制御装置103に対し、プラント側制御装置103の日時情報生成部519が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されているか否かを問い合わせて確認する(S14)。
【0130】
ステップS14で、プラント側制御装置103の日時情報生成部519の日時情報が、日時情報源装置105が出力する日時情報と十分小さい誤差にて較正されていることが確認された場合には(S14のYES)、この時点で入力装置102、コントローラ104およびプラント側制御装置103の全ての日時情報生成部506、511、519が較正されている。そこで、コントローラ104の日時情報生成部511は、同期運転の準備段階として、同期運転を開始する時間、暗号鍵を更新するステップ時間、鍵更新の初期値等を決定し、入力装置102の日時情報生成部506およびプラント側制御装置103の日時情報生成部519へ送信する(S15)。
【0131】
ステップS15にて同期運転の準備が完了した場合には、コントローラ104の日時情報生成部511は設定した同期運転開始時間になるまで待ち(S16のNO)、同期運転開始時間になったら(S16のYES)、同期運転を開始して(S17)、一連の処理を終了する(S18)。
ステップS12、S13およびS14の何れかの条件分岐においても、日時情報の較正が正常に完了していない場合は(S12のNO、S13のNO、S14のNO)、ステップS12まで戻って確認作業を繰り返す。
【0132】
<本実施形態例の暗号化制御システムにおける同期運転処理>
図12は、暗号化制御システム101の入力装置102、コントローラ104およびプラント側制御装置103の同期運転を説明するためのシーケンス図である。図12では、暗号化の更新周期であるサンプリング周期Ts(ステップ時間)を10msec、サンプリングするステップをtとする。すなわち、同期運転始動時をt=0とし、t=0以降、tが1ステップ進むごとに、t=1、2、・・・と「1」ずつインクリメントするものとして以下説明する。
【0133】
同期運転始動時(t=0)、入力装置102は目標値rをt=0のときの公開鍵kp(t)で暗号化して、暗号化目標値Enc(r)を得る。そして、暗号化目標値Enc(r)を、コントローラ104経由でプラント側制御装置103へ送信する(S21)。ここで、暗号化目標値Enc(r)のデータフレームD21には、日時情報生成部506が生成したt=0における現在日時情報が含まれている。
【0134】
同期運転始動時(t=0)には、コントローラ104は、暗号文更新部510において、記憶部509に記憶されているt=0時点の初期値となる暗号化制御パラメータEnc(Φ(0))を読み出し、この初期値Enc(Φ(0))と暗号化入力ベクトルEnc(ζ)に含まれる暗号化制御器への入力Enc(uc)、すなわち暗号化制御誤差Enc(ε)を乗算部508にて乗算する処理を行う。そして、乗算部508から暗号化出力行列Enc(Ψ)を得て、暗号化出力行列Enc(Ψ)に含まれる暗号化制御信号Enc(u)を、送信部208を経由してプラント側制御装置103へ送信する(S22)。暗号化制御信号Enc(u)のデータフレームD22には、同期運転開始時における始動日時情報と、t=0における現在日時情報が含まれている。なお、t=0の時点では、始動日時情報と現在日時情報は同一である。
【0135】
また、プラント側制御装置103は、同期運転始動時(t=0)に、入力装置102からコントローラ104を経由して暗号化目標値Enc(r)を受信するとともに、コントローラ104から暗号化制御入力Enc(u)を受信する(S23)。
プラント側制御装置103の復号処理部512は、暗号鍵更新部513から現在日時情報、始動日時情報に関連してt=0時点の秘密鍵ks(0)(s(0)と同じ)を受け取り、暗号化されている目標値Enc(r)と制御入力Enc(u)を復号(デコード)する。そして、制御用演算処理部514は、復号処理部512からの復号された信号を演算処理することで、目標値rと制御入力uを生成す・BR>驕IS24)。
【0136】
本発明の実施形態において使用される準同型性を持つ暗号は、暗号化したままのデータ同士を乗算(または除算)することはできるが、加減算することができない。そこで、コントローラ104の乗算部508は与えられるデータに対して乗算処理のみを行い、復号後、制御用演算処理部514で加減算の処理を行っている。また、制御処理部515は、制御入力uから制御信号を生成し、制御対象106を制御する。制御対象106が制御処理部515によって制御されると、制御対象106の動作がセンサ107によって検出される(S24)。
【0137】
センサ107で検出される観測信号は、信号変換処理部516によって観測値yに変換される。信号変換処理部516が出力する観測値yは、制御用演算処理部514からの目標値rと共に目標誤差演算処理部517に入力される。目標誤差演算処理部517は、目標値rから観測値yを減算して、目標誤差εを出力する(S24)。
暗号化処理部518は、時刻tの目標誤差εを時刻(t+1)のステップに対応するように、暗号鍵更新部513で更新された公開鍵kp(t+1)で暗号化する(S25)。この時点では時刻tは「0」であるが時刻(t+1)は「1」となり、すなわちステップ1に対応する公開鍵kp(t+1)が、目標誤差εの暗号化に使われる。
【0138】
このように、同期運転始動(t=0)からステップ数が1インクリメントされて、t=1になった時点で、プラント側制御装置103は、送信部208を介して暗号化目標誤差Enc(ε)をコントローラ104へ送信する(S26)。暗号化目標誤差Enc(ε)のデータフレームD23には、同期運転開始時における始動日時情報と、t=1における現在日時情報が含まれている。
【0139】
t=1の時点で、コントローラ104は、受信部309を介してプラント側制御装置103から暗号化目標誤差Enc(ε)を受信する(S27)。受信した暗号化目標誤差Enc(ε)は、入出力制御部507を通じて乗算部508に送られる。乗算部508は、暗号化目標誤差Enc(ε)のデータフレームに付されている、始動日時情報と、t=1における現在日時情報を暗号文更新部510に送る。
【0140】
暗号文更新部510は、t=1の時点で更新された暗号化制御パラメータEncΦ(1)を記憶部509から読み出し、乗算部508に送る。乗算部508は暗号化制御パラメータEncΦ(1)と暗号化入力ベクトルEnc(ζ)に含まれる暗号化目標誤差Enc(ε)を乗算処理して、暗号化制御ゲインを計算し、これに基づいて暗号化制御入力Enc(u)を得る(S28)。そして、暗号化制御入力Enc(u)をプラント側制御装置103へ送信する(S29)。暗号化制御入力Enc(u)のデータフレームD24には、同期運転開始時における始動日時情報と、t=1における現在日時情報が含まれている。
【0141】
t=1の時点で、入力装置102は目標値rをt=1のステップに対応する新しい公開鍵kp(t+1)で暗号化して、暗号化目標値Enc(r)を得る。そして、この暗号化目標値Enc(r)をコントローラ104経由でプラント側制御装置103へ送信する(S30)。なお、暗号化目標値Enc(r)のデータフレームD25には、t=1における現在日時情報が含まれている。
【0142】
プラント側制御装置103は、t=1の時点で、入力装置102から暗号化目標値Enc(r)を受信し、コントローラ104から暗号化制御入力Enc(u)を受信する(S31)。 次に、プラント側制御装置103の復号処理部512は、暗号化目標値Enc(r)および暗号化制御入力Enc(u)のデータフレームに付されている現在日時情報、始動日時情報を基にして暗号鍵を用いて目標値rと制御入力uを復号する。
そして、制御用演算処理部514は、復号処理部512によって復号された目標値rと制御入力uおよびコントローラ104の状態ベクトルxを出力する。そして、制御処理部515は、制御入力uから制御信号を生成し、制御対象106を制御する。制御対象106が制御処理部515によって制御されると、制御対象106の動作はセンサ107によって検出される。
【0143】
センサ107から出力される観測信号は、信号変換処理部516によって観測値yに変換される。図10で説明したように、この観測値yは、制御用演算処理部514から出力される目標値rと共に目標誤差演算処理部517に入力される。そして、目標誤差演算処理部517は、目標値rから観測値yを減算して、目標誤差εを出力する(S32)。
暗号化処理部518は、この目標誤差εを、ステップ(t+1)で更新された公開鍵kp(t+1)で暗号化する(S33)。この時点では既に現在時間tが「1」なので、ステップ(t+1)は「2」となっている。したがって、暗号化処理部518で目標誤差εの暗号化に使われる公開鍵は、ステップ2に相当する公開鍵kp(t+2)となる。
【0144】
以下同様に、プラント側制御装置103は、入力装置102からステップ2における暗号化目標値Enc(r)を受信し、コントローラ104からステップ2における暗号化制御入力Enc(u)を受信すると、これに対応する目標値rと制御入力uに基づいて制御対象106を制御する。そして、同様にセンサ107から得られた観測値yを目標値rから減算して目標誤差εを得る。暗号化処理部518は、目標誤差εをステップ2における公開鍵kp(t+2)で暗号化して、暗号化目標誤差Enc(ε)をコントローラ104へ出力する(S34)。このときの暗号化目標誤差Enc(ε)のデータフレームD26には、t=2における現在日時情報が含まれている。
つまり、プラント側制御装置103のデータ受信、演算、データ送信のサイクルにおいて、ステップは1インクリメントされる。
【0145】
<変形例>
図13は、図10で示した本発明の暗号化制御システムの実施形態の変形例を示している。図13に示す変形例では、コントローラ500は、図10に示した入力装置102とコントローラ104を一体化した構成になっている。
ここで、暗号鍵・暗号文更新部521は、図10で示した公開鍵更新部505と暗号文更新部510の両方の機能を有している。また、記憶部522は、図10の記憶部504と記憶部509の両方の機能を有する。
【0146】
すなわち、暗号鍵・暗号文更新部521は、記憶部522から得られる更新前の公開鍵を次のステップの公開鍵に更新し、この更新した公開鍵を暗号化処理部503に提供する。また、暗号鍵・暗号文更新部521は、乱数発生器521aで発生された乱数と、記憶部522に記憶されている暗号化制御パラメータEncΦ(t)を用いて、更新前の暗号文C(c1(t),c2(t))を次のステップの暗号文C(c1(t+1)、c2(t+1))に更新し、この更新した暗号文を乗算部508に送る。
【0147】
また、入出力制御部523は、入力装置102の入出力制御部502とコントローラ104の入出力制御部507の機能を併せて持つ入出力制御器である。
但し、日時情報生成部は2つ持つ必要はなく。コントローラ104が備える日時情報生成部511があればよい。日時情報生成部511は、乗算部508から出力される暗号化制御入力Enc(u)に付加する日時情報を提供すると共に、暗号鍵・暗号文更新部521を起動する起動タイミングを与える。
【0148】
以上説明したように、図13に示すように、入力装置102とコントローラ104を一体化したコントローラ500を用いても、機能的には図10で示した暗号化制御システム101における入力装置102とコントローラ104の機能と同等の機能を有する暗号化制御システムを実現することができる。
【0149】
本実施形態では、暗号化制御システム101を開示した。入力装置102、プラント側制御装置103およびコントローラ104は、同一時刻で同期運転を行う。このように暗号化制御システム101を構成することで、制御システム全体の制御周期に同期して、公開鍵と秘密鍵および暗号文を毎ステップで更新することが可能になる。
したがって、制御対象の耐用年数に比べて比較的短い時間で暗号鍵(公開鍵、秘密鍵)と暗号文の更新が行われるので、悪意ある第三者でも暗号鍵および暗号文の解読は極めて困難になると考えられる。
【0150】
また、本発明の暗号化制御システムでは、ElGamal暗号の動的な拡張を基礎として、秘密鍵、公開鍵および暗号文の更新を行っているが、ElGamal暗号はあくまでも一例であり、本発明の暗号化制御システムの基本的な技術思想は他の暗号にも適用することができるものである。以上、本発明の暗号化制御システムの基礎となる技術思想およびその実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含むものである。
【符号の説明】
【0151】
10、104、500…コントローラ、20…プラント、21、106…制御対象、22…減算器、30…復号部、40…暗号化部、50、504、509、521、522…記憶部、52…秘密鍵更新部、513…暗号鍵(秘密鍵、公開鍵)更新部、53、505…公開鍵更新部、54、55、510…暗号文更新部、56…乱数更新部、
101…暗号化制御システム、102…入力装置、103…プラント側制御装置、105…日時情報源装置、107…センサ、111…マウントベース、112…CPUモジュール、113…情報ネットワークモジュール、114a、114b…第一制御ネットワークモジュール、115…第二制御ネットワークモジュール、116…入出力モジュール、202…CPU、203…ROM、204…RAM、205…RTC、206…バス、207…NIC、208…送信部、309…受信部、410…A/D変換器、411…D/A変換器、501…目標値入力部、502、507…入出力制御部、503…暗号化処理部、506、511、519…日時情報生成部、508…乗算部、512…復号処理部、514…制御用演算処理部、515…制御処理部、516…信号変換処理部、517…目標誤差演算処理部、518…暗号化処理部、620…ログテーブル、523…暗号鍵・暗号文更新部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13