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

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

▶ dSPACE Japan株式会社の特許一覧 ▶ 国立大学法人電気通信大学の特許一覧

特開2025-25408暗号化制御システム、暗号化制御方法及び暗号化制御プログラム
<>
  • 特開-暗号化制御システム、暗号化制御方法及び暗号化制御プログラム 図1
  • 特開-暗号化制御システム、暗号化制御方法及び暗号化制御プログラム 図2
  • 特開-暗号化制御システム、暗号化制御方法及び暗号化制御プログラム 図3
  • 特開-暗号化制御システム、暗号化制御方法及び暗号化制御プログラム 図4
  • 特開-暗号化制御システム、暗号化制御方法及び暗号化制御プログラム 図5
  • 特開-暗号化制御システム、暗号化制御方法及び暗号化制御プログラム 図6
  • 特開-暗号化制御システム、暗号化制御方法及び暗号化制御プログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025025408
(43)【公開日】2025-02-21
(54)【発明の名称】暗号化制御システム、暗号化制御方法及び暗号化制御プログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20250214BHJP
   G05B 1/01 20060101ALI20250214BHJP
【FI】
G09C1/00 650A
G05B1/01 Z
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023130144
(22)【出願日】2023-08-09
(71)【出願人】
【識別番号】523304180
【氏名又は名称】dSPACE Japan株式会社
(71)【出願人】
【識別番号】504133110
【氏名又は名称】国立大学法人電気通信大学
(74)【代理人】
【識別番号】110000925
【氏名又は名称】弁理士法人信友国際特許事務所
(72)【発明者】
【氏名】山田 崇晴
(72)【発明者】
【氏名】小木曽 公尚
【テーマコード(参考)】
5H004
【Fターム(参考)】
5H004GA29
5H004GB01
5H004KA32
5H004KB01
(57)【要約】      (修正有)
【課題】乗算剰余する数値が大きくなると発生する桁溢れ現象(オーバーフロー)を回避する暗号化制御プログラムとそれを利用した暗号化制御システムを提供する。
【解決手段】指令入力を暗号化する第1の暗号部101を備える入力装置10と、秘密計算部201を備える制御装置20と、復号部301及びフィードバック信号を暗号化する第2の暗号部302を備えるプラント制御装置30から構成される暗号化制御システムにおいて、入力装置からの暗号化された指令入力とプラント制御装置からの暗号化されたフィードバック信号(制御対象30aからのセンサ信号)を用いて、所定のデータ型に記憶された値を、乗算時に桁溢れを起こさないように、さらに小さな値に分割して計算する。
【選択図】図5
【特許請求の範囲】
【請求項1】
指令入力を暗号化する第1の暗号部を備える入力装置と、秘密計算部を備える制御装置と、復号部及びフィードバック信号を暗号化する第2の暗号部を備えるプラント制御装置から構成される暗号化制御システムであって、
前記制御装置の前記秘密計算部は、前記入力装置からの暗号化された指令入力と前記プラント制御装置からの暗号化されたフィードバック信号を用いて、所定のデータ型に記憶された値を、乗算時に桁溢れを起こさないように、さらに小さな値に分割して計算することを特徴とする
暗号化制御システム。
【請求項2】
前記制御装置の前記秘密計算部において、乗算時に桁溢れを起こさないように、さらに小さな値に分割して計算する際に、
整数Mと整数Nを、整数Xを使って、
M=M1X+M2
N=N1X+N2
と表現し、MN%Pを、
MN%P=(M1X+M2)・(N1X+N2)%P
=(M112+(M12+M21)X+M22)%P
と展開して、A=M112、-B=(M12+M21)X、C=M22とおき、(A+B+C)/Pとして、乗算M×Nを行うことなく、A、B、Cに対して剰余を求めることでMN%Pを計算する
請求項1に記載の暗号化制御システム。
【請求項3】
前記秘密計算部は、加算剰余における桁溢れを防ぐため、下記のような場合分けを行って加算剰余を計算する、
/*(S+T)%P*/
temp=P-T
if(temp>S){
return S+T
}else{
ReturnS-temp
}
請求項2に記載の暗号化制御システム。
【請求項4】
指令入力を暗号化する第1の暗号部を備える入力装置と、秘密計算部を備える制御装置と、復号部及びフィードバック信号を暗号化する第2の暗号部を備えるプラント制御装置から構成される暗号化制御システムにおける暗号化制御方法であって、
前記制御装置の前記秘密計算部により、前記入力装置からの暗号化された指令入力と前記プラント制御装置からの暗号化されたフィードバック信号を用いて、所定のデータ型に記憶された値を、乗算時に桁溢れを起こさないように、さらに小さな値に分割して計算することを特徴とする
暗号化制御方法。
【請求項5】
指令入力を暗号化する第1の暗号部を備える入力装置と、秘密計算部を備える制御装置と、復号部及びフィードバック信号を暗号化する第2の暗号部を備えるプラント制御装置から構成される暗号化制御システムにおいて利用される暗号化制御プログラムであって、
コンピュータに、
前記入力装置からの暗号化された指令入力と前記プラント制御装置からの暗号化されたフィードバック信号を用いて、所定のデータ型に記憶された値を、乗算時に桁溢れを起こさないように、さらに小さな値に分割して計算することを実行させる
暗号化制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化制御システム、暗号化制御方法及び暗号化制御プログラムに関する。
【背景技術】
【0002】
従来の暗号化制御システムでは、C言語やC++言語を用いた実機開発が主体であった。これ以外にもMATLAB(登録商標)やSimulink(登録商標)などのソフトウェアツールがあるが、例えばMATLABでは各変数のビット数の制約から64bitまでの数値演算が標準仕様である。
【0003】
従来の安全な制御システムにおいては、通信リンク上の信号が暗号化されているものの、発明者らの研究により、通信リンク上の信号だけでなく、制御装置(コントローラ)のパラメータも暗号化し、制御装置では、秘密鍵を必要とする復号処理を行わない暗号化制御システムが提案されている(特許文献1、2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第6360781号公報
【特許文献2】国際公開番号WO2019/078343号
【発明の概要】
【発明が解決しようとする課題】
【0005】
暗号化制御プログラムにおいて、乗算剰余する数値が大きくなると桁溢れ現象が発生する。このため、乗算をすると桁溢れを起こしてしまう値どうしの掛け算の場合、単純に乗算して剰余を求めることはできない。
一つの解決方法として、乗算をすると桁溢れを起こしてしまう値を任意の値の集合ととらえて、それぞれ計算し、最終的にそのすべてを合算して結果を算出する方法が考えられるが、計算時間が長くなってしまうなどの別の問題が発生する。
【0006】
すなわち、計算時間など考慮すると、2つの大きな数値を乗算した後、剰余を求めるのが、最良の方法であるが、先に述べた通り、2つの大きな数値を乗算した際に桁溢れが発生するという問題が起こってしまう。
【0007】
本発明の目的は、乗算剰余する数値が大きくなると発生する桁溢れ現象(オーバーフロー)を回避するようにした、暗号化制御システム、暗号化制御方法及び暗号化制御プログラムを提供することにある。
【課題を解決するための手段】
【0008】
本発明は、指令入力を暗号化する第1の暗号部を備える入力装置と、秘密計算部を備える制御装置と、復号部及びフィードバック信号を暗号化する第2の暗号部を備えるプラント制御装置から構成される暗号化制御システムである。
本発明の暗号化制御システムにおいて、制御装置の秘密計算部は、入力装置からの暗号化された指令入力とプラント制御装置からの暗号化されたフィードバック信号を用いて、所定のデータ型に記憶された値を、乗算時に桁溢れを起こさないように、さらに小さな値に分割して計算することを特徴とする。
【発明の効果】
【0009】
本発明によれば、制御ソフトウェアが提供する最大の鍵長を設定可能な動的鍵による暗号化制御の演算を行うことが可能になる。そして、本発明によれば、暗号強度を高くすることができ、更に暗号制御の高い精度を維持することができる。
上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0010】
図1】本発明の暗号化制御システムの基本的概念を説明するための図である。
図2】入力装置からの指令信号と制御対象からのフィードバック信号との差分が供給される、暗号化制御以前の従来のPID制御システムの例(その1)である。
図3】入力装置からの指令信号と制御対象からのフィードバック信号との差分が供給される、暗号化制御以前の従来のPID制御システムの例(その2)である。
図4】入力装置からの指令信号と制御対象からのフィードバック信号が供給され、P(比例)、I(積分)、D(微分)のそれぞれの差分に基づいてPID制御を行う、暗号化制御以前の従来のPID制御システム(その3)の例である。
図5】本発明の暗号化制御システムの基本概念図(図1)をさらに具体化した、本発明の暗号化制御システムの実施の形態例を示す図である。
図6】本発明の暗号化制御プログラムを車両燃費モデルの制御に適用したときの車速指令値と暗号化制御を行った車速・車両モデルの出力を示す図(上)と、両者の差分を示す図(下)である。
図7図3に示す暗号化制御をしていないPID制御による制御出力と図5に示す本発明の暗号化制御を行ったときのPID制御の制御出力を示す図(上)と、両者の差分を示す図(下)である。
【発明を実施するための形態】
【0011】
以下、図面を参照して、本発明の暗号化制御システム、暗号化制御方法及び暗号化制御プログラムの実施形態例(以下、「本例」と称する)を、本発明の実施形態例に至るまでの暗号化制御以前のPID制御システムとともに、説明する。
【0012】
図1は、本例の暗号化制御システム、暗号化制御方法及び暗号化制御プログラムの最上位の基本的概念を説明するための図である。
図1に示すように、本例の暗号化制御システムは、入力装置10、制御装置20、及びプラント制御装置30により構成される。
なお、以降の図2図4における説明では、入力装置10が発生する指令入力を、「指令入力10a」と記載し、プラント制御装置30により制御される制御対象を「制御対象30a」と記載することにする。
【0013】
入力装置10は、オペレータが具体的な制御対象30aに対して、制御目標値等の指令入力10aを発する装置である。
本例の暗号化制御システムにおける入力装置10は、指令値を暗号化する暗号部(指令)101を備える。暗号部101は、公開鍵により暗号化された指令入力を制御装置20に供給する。ここで、暗号部(指令)101を、特許請求の範囲の記載では、第1の暗号部と呼ぶ。
【0014】
制御装置20は、秘密計算部201を備える。秘密計算部201は、入力装置10から供給される暗号化された指令入力10aとプラント制御装置30からの暗号化されたフィードバック信号(帰還入力)とを暗号化された状態のまま計算する。そして、制御装置20は、秘密計算部201で暗号化された制御出力をプラント制御装置30に供給する。
【0015】
プラント制御装置30は、復号部301と暗号部(帰還)302を備える。復号部301は、制御装置20から供給される暗号化された制御入力を復号し、通常の制御信号として不図示の制御対象30aに供給する。暗号部(帰還)302は、制御対象30aに設けられたセンサからのフィードバック信号を暗号化し、入力装置10にフィードバックさせる。なお、暗号部(帰還)302は、暗号部(指令)101と区別するために、特許請求の範囲の記載では、第2の暗号部と呼ぶ。
【0016】
[秘密計算部201における桁溢れを防ぐ乗算剰余の方法とプログラム]
詳細は、本例の暗号化制御システムの具体例を記載した図5で後述することになるが、ここで制御装置20の秘密計算部201及びその他の個所における計算に用いられる桁溢れを防ぐ乗算剰余の方法と、それを実現するプログラムについて説明する。
【0017】
発明の課題の欄でも述べたように、暗号化制御プログラムにおいて、乗算剰余する数値が大きくなると桁溢れ現象が発生する。したがって、暗号化制御プログラムにおいては、乗算剰余の過程における桁溢れ現象(オーバーフロー)を回避することが制御システムの
可用性の観点から極めて重要になる。
【0018】
すなわち、乗算をすると桁溢れを起こしてしまう値どうしの掛け算の場合、単純に乗算して剰余を求めることはできない。一つの解決方法として、乗算をすると桁溢れを起こしてしまう値を任意の値の集合と捉えてそれぞれ計算し、最終的にそれぞれを合算することによって結果を算出する方法が考えられるが、計算に時間がかかるため、効率的ではない。
【0019】
最初に、例として、利用する所定のプログラム言語の各変数ビット数の最大が、16bit正の整数型(0~216―1)である環境において、乗算剰余をする場合について説明する。まず、
2≦L(ここでLはデータ型が表現できる最大値)
となる最大のXを求める。16bitの正の整数型の場合、
2552=65025≦65535=216―1
L=65535であるから、X=255が上記式を満足する最大値となる。このXによって、この手段で扱える数値の範囲が決まり、それは、0以上、X2未満である。
【0020】
一例として、乗算すると桁溢れを起こす値として、M=65000、N=48600、P=65011を設定し、MとNの乗算に対してPの剰余を求めることを考える。つまり、M×Nは3,159,000,000となり、216=65536を超えるため、桁溢れを起こす。また、M×Nを(M+M+・・(N回足す)・・+M)などと分割し、最終的な剰余を求める計算を、プログラム上で行うには、時間がかかりすぎるため、安易に採用することができない。
【0021】
M、Nを、X=255を使って表現すると、以下の式になる。
M=M1X+M2(M1=254、M2=230)
N=N1X+N2(N1=190、N2=150)
このとき、M1、M2、N1、N2はX未満になるように選ばなければならない。
その乗算剰余は、MN%Pを展開すると、
MN%P=(M1X+M2)・(N1X+N2)%P
=(M112+(M12+M21)X+M22)%P
となる。そして、A=M112、-B=(M12+M21)X、C=M22とおき、A,B,Cに対してそれぞれPの剰余を求め、最後に(A+B+C)%Pとして、(M×N)%Pを求める。「%」は余りを求める演算子である。
A:(M112)%P
B:(M12+M21)X%P
C:M22%P
【0022】
まず、A:(M112)%Pについて以下の処理を行う。計算のポイントは、「M112」の部分を「(M1×N1)×X2」と捉え、X2をPで割った余り「X2%P」をバイナリー演算法により(M1×N1)倍することである。
なお、バイナリーは、コンピュータで使用される2進数を用いた数値表現法であり、コンピュータの内部でデータを扱うために使用されるプログラミングの基本的な概念の一つである。
ここで、「%」は余りを求める演算子であり、「e&1」は2進法における数値eと2進法における1のANDを示す。また、「e>>=1」は、2進数表現において、右に一桁シフトすることを示す。例えば、1010>>=1は、101を示している。
【0023】
result=0
e=M
mod=X%P
While(e>0){
If((e&1)==1){
result=(result+mod)%P
}
e>>=1
mod=(mod+mod)%P
}
【0024】
ここで、e&1は、2進法でのeと2進法での1のANDである。上記処理後のresultは、(M112)%Pの答え、つまりAの答えである。
ただし、上記処理における「(result+mod) %P」や「(mod+mod) %P」の加算剰余「(S+T)%P)の部分は、桁溢れを防ぐため以下のように計算される。なお、このアルゴリズムは、以降のアルゴリズムで示される加算剰余にも適用される。
【0025】
/*(S+T)%P*/
temp=P-T
if(temp>S){
return S+T
}else{
return S-temp
}
【0026】
次に、B:((M12+M21)X)%Pにおいて、同じくバイナリー法により以下の処理を行う。なお、「/」は商を算出する演算子である。
この処理のポイントは、「((M12+M21)X)%P」を「(e+result)%P」の形にし、Aにおけるresult(「M12+M21」をXで割った余りにXを掛け、その結果をPで割った余り)を初期値とし、Aで行われたものと同様の処理を行う。
【0027】
e=(M12+M21)%P
result = ((e%X) * X) % P
e= e/X
mod=X2%P
While(e>0){
If(e&1)==1){
result=(result+mod)%P
}
e>>=1
mod=(mod+mod)%P
}
【0028】
上記処理後のresultは、(M12+M21)%Pの答え、すなわちBの答えである。
手順A、BにおけるそれぞれのresultをresultA, resultBとすれば、求める答えは、
以下のようになる。
temp=(resultA+resultB)%P
(temp+M2N2)%P
【0029】
Cの「M22%P」の計算において、M2×N2=150×230=34500であるから、16bit正の整数型の最大値であるL(216-1=65535)より小さい値になる。すなわち、M2<X、N2<XなのでM22<X2であり、Cの「M22%P」はそのまま計算しても、桁溢れが生じることはない。
【0030】
[本例の暗号化制御プログラムが適用される以前のPID制御の例]
次に、図2図4を参照して、本例の暗号化制御プログラムが適用される以前のPID制御システムの例を説明する。
発明者らは、図2図4に示すような従来から知られたPID制御システムを基礎として、図5に示す本例の暗号化制御システムに想到した。詳しくは図5で後述するが、図5に示す本例の暗号化制御システムの各所で、上述した乗算時における桁溢れ現象を防止するためのプログラムが利用されている。
【0031】
以下、図2図4に示す暗号化制御依然のPID制御システムについて説明する。
図2は、本例の暗号制御プログラムが適用される以前の基本的なPID制御システムを示すブロック図である。
PID制御システムは、制御対象30aの状態をセンサで読み取り、オペレータからの指令入力10aと制御対象30aからのセンサ信号との誤差情報に基づいて制御信号を出力し、制御対象30aを制御された所定の状態に維持するためのシステムである。
【0032】
P(比例)成分は誤差に比例して制御信号を出力し、I(積分)成分は誤差の累積を考慮して制御信号を出力し、D(微分)成分は誤差の変化率を考慮して制御信号を出力する。PID制御システムは、様々な産業分野において、制御対象に対する高度な制御を実現するために広く使用されている。
【0033】
図2に示すように、暗号化制御以前の従来型のPID制御システムは、不図示の入力装置から指令入力10aが出され、制御対象30aで検出されたフィードバック信号と減算器11で減算される。そして、減算器11で減算されたフィードバック誤差信号が、PID制御を行う制御装置20に供給される。
【0034】
制御装置20は、積分ゲイン乗算部21と積分処理部24をあわせた積分器、比例ゲイン乗算部22、微分ゲイン乗算部23と微分処理部25をあわせた微分器を備える。
積分ゲイン乗算部21、比例ゲイン乗算部22、及び微分ゲイン乗算部23において乗算される積分ゲイン、比例ゲイン、微分ゲインは、制御対象30aの状態を考慮して、適切なゲインの数値が予め設定される。
【0035】
フィードバック誤差信号に積分ゲイン乗算部21で積分ゲインを乗算した出力は、積分処理部24に供給され、積分器からフィードバック誤差の累積が考慮された信号が加算器26に供給される。また、フィードバック誤差信号に微分ゲイン乗算部23で微分ゲインを乗算した出力は、微分処理部25に供給され、微分器からフィードバック誤差の変化率が考慮された信号が加算器26に供給される。フィードバック誤差信号に比例ゲイン乗算部22で比例ゲインを乗算した出力は、そのまま加算器26に供給される。
加算器26は、積分処理部24からの信号、比例ゲイン乗算部22からの信号、微分処理部25からの信号を合成(加算)して、制御対象30aに制御信号として供給する。
【0036】
図3は、図2に示したPID制御システムを計算機に実装するために離散化処理の仕組みを加えたものである。図2のPID制御システムと異なる点は、制御装置20にサンプル時間発生器27と、乗算処理部24a、除算処理部25aを設けた点である。
図3に示した暗号化制御以前のPID制御システムは、サンプル時間発生器27を設けたことで、積分と微分の処理を離散化している。ここで、図2に示す積分処理部24は、図3では、1サンプル遅延器24bと加算器24cとで構成される。また、図2に示す微分処理部25は、図3では、1サンプル遅延器25bと減算器25cとで構成されている。
【0037】
図3に示すように、積分ゲイン乗算部21からの出力信号は、乗算処理部24aにおいてサンプル時間発生器27から発生されるサンプル周期で離散化される。そして、離散化された積分ゲイン出力が1サンプル遅延器24b、加算器24cからなる積分処理部24(図2参照)に供給される。
【0038】
また、微分ゲイン乗算部23からの出力信号は、1サンプル遅延器25bと減算器25cとで構成される微分処理部25(図2参照)に供給される。微分処理部25の出力は、除算処理部25aでサンプル時間発生器27から発生されるサンプル周期で離散化される。
このように、リアルタイム演算を行う計算機では、離散化した出力を次のステップに加算して離散化時間を掛けることで、計算機上の積分処理が行われる。また、一つ前のステップから次のステップを減算した後に、離散化時間で除算することで、計算機上の微分処理が行われる。なお、以降の処理は、図2の処理と同じなので、重複する説明は省略する。
【0039】
図4は、暗号制御以前の従来型PID制御システムの更なる変形例を示す。
図4に示すPID制御システムが、図3のPID制御システムと異なるところは、指令入力10aをPIDゲイン乗算部21a~23aに供給し、制御対象30aからのセンサ信号(フィードバック信号)をPIDゲイン乗算部21b~23bに供給している点である。
【0040】
すなわち、図4に示す例では、指令入力10aと制御対象30aからのフィードバック信号を個別にP(比例)、I(積分)、D(微分)ゲイン乗算部で、それぞれのゲインを乗算してから、減算器21c、22c、23cに送り、それぞれのフィードバックを得ている。
このように、指令入力10aと制御対象30aからのフィードバック信号との誤差信号を、P(比例)、I(積分)、D(微分)毎に減算と乗算の順序を入れ替えることで、暗号化制御以前の離散化したPID制御システム(図3)と同等のものとすることができ、この変形による制御性能に差は生じない。
図4のように変形させるのは、ElGamal暗号は乗法準同型性なので、乗算のみしかできないため、計算する部分を乗算(左側)とそうでない部分(右側)に分けて、乗算部分にElGamal暗号を適用して秘密計算部とし、乗算以外の部分は、制御対象側で復号後に計算するようにしたからである。
なお、乗算処理部24a、除算処理部25a以降の処理は、図3と同じなので、重複する説明は省略する。
【0041】
[本例の暗号化制御プログラムをPID制御システムに適用した実施形態例]
図5は、本例の暗号化制御プログラムをPID制御システムに適用した暗号化PID制御システムの構成図である。すなわち、図5の構成図は、図1の基本的概念図を具体化して本発明の実施形態例としたものである。
以下、図5図7を参照して、本例の暗号化制御プログラム、暗号化制御方法、暗号化制御システムについて説明する。
【0042】
図5に示すように、本例の暗号化制御システムでは、まず、入力装置10の暗号部(指令)101において、指令入力10aが暗号化される。
この暗号部101では、オペレータの指示により鍵生成Genと暗号化Enc(m,pk)が行われる。
【0043】
まず、鍵生成(Gen)については、先行技術文献として提示した発明者らの特許に詳しく説明されているので詳細は省くが、素数pと原始元(生成元)gをランダムに選び、整数sを秘密鍵として0≦s≦p-2からランダムに選ぶ。
そして、h=gmodpを計算し、公開鍵pk=(p,g,h)として出力し、秘密鍵sk=sとして出力する。ここで、hはgをpで割った余りである。
【0044】
なお、ここでは、例えばElGamal暗号のような乗法準同型性を持つ暗号方式が用いられる。乗法準同型性暗号は、平文mと平文mとの二項演算(m○m)を暗号化した暗号文Enc(m○m)を、平文mを暗号化した暗号文Enc(m)と、平文mを暗号化した暗号文Enc(m)とを用いて計算することができる暗号である。
すなわち、乗法準同型性暗号は、2つの暗号化した値同士を復号せずにそのまま乗算し、乗算した値を復号することで、暗号化される前の値を乗算した値と一致させることができる。このような乗法準同型性暗号は、クラウドコンピューティングや金融機関の暗証システムなどに多く応用されている。
【0045】
次に、暗号部(指令)101は、平文mを暗号化し、暗号文c=Enc(m,pk)を生成する。
まず、平文をm(0<m<p)とする。そして、整数rをランダムに0≦r≦p-2から選び、c=gmodp、c=mhmodpを計算する。
その結果、暗号部(指令)101は、暗号文cとして、c-=(c,c)を出力する。
なお、暗号化は確率的アルゴリズムである。同じ平文を暗号化しても異なった暗号文が計算される。
【0046】
図5に示すように、入力装置10の暗号部(指令)101で暗号化された暗号文は、制御装置20に供給される。また、プラント制御装置30の暗号部(帰還)302で暗号化された、制御対象30aからのフィードバック信号も、制御装置20に供給される。
【0047】
制御装置20の秘密計算部201は、入力装置10からの暗号化された指令入力10aと制御対象30aからの暗号化されたフィードバック信号を、復号することなく暗号化された状態のまま計算処理を行う。すなわち、入力装置10からの暗号化された指令入力10aは、積分ゲイン乗算部201a、比例ゲイン乗算部201b、及び微分ゲイン乗算部201cに供給される。
一方、制御対象30aからの暗号化されたフィードバック信号は、積分ゲイン乗算部201d、比例ゲイン乗算部201e、及び微分ゲイン乗算部201fに供給される。
【0048】
制御装置20の秘密計算部201は、暗号化された指令入力と暗号化されたフィードバック入力のそれぞれに対して、I(積分)、P(比例)、D(微分)の演算を行うために、暗号文の積分CIを格納した積分ゲイン乗算部201a及び201d、暗号文の比例ゲインCPを格納した比例ゲイン乗算部201b、201e、及び暗号文の微分ゲインCを格納した微分ゲイン乗算部201c、201fを有する。そして、秘密計算部201において、制御対象30a毎に予め設定される暗号化された所定の値と暗号化された指令入力10aとの乗算処理がなされる。この乗算処理において、先に説明したバイナリー法のプログラムにより、桁溢れを起こさないようにするための処理が行われる。
【0049】
すなわち、秘密計算部201において、入力装置10からの暗号化された指令入力10aとプラント制御装置30の制御対象30aからの暗号化されたフィードバック信号に関して所定のデータ型に記憶された値(I,P、Dゲイン)を、乗算時に桁溢れを起こさないように、さらに小さな値に分割して計算する処理が行われる。
なお、秘密計算部201において用いられる乗算処理のための桁溢れを起こさないようにするための数学的なアルゴリズムは、プラント制御装置30における復号処理でも用いられる。
【0050】
制御装置20の秘密計算部201は、暗号化された状態で計算された入力装置10からの指令入力10aと、制御対象30aからのフィードバック信号に所定の計算処理を行った後、暗号文のままの状態でプラント制御装置30に供給する。
図5に示すように、プラント制御装置30の復号部301は、入力される6つの暗号化信号を復号する復号器301a~301f、減算処理部303a~303c、乗算処理部304a、除算処理部305a、1サンプル遅延器304bと加算器304cからなる積分器、1サンプル遅延器305bと減算器305cからなる微分器、サンプル時間発生器306、及び加算器307を備える。
【0051】
復号部301の復号器301a~301cは、入力装置10からの暗号化された指令入力10aのI(積分)成分、P(比例)成分、D(微分)成分をそれぞれ復号する。また、復号部301の復号器301d~301gは、制御対象30aからのフィードバック信号を積分(I)、比例(P)、微分(D)ゲインで乗算した暗号文信号をそれぞれ復号する。
【0052】
復号器301a~301cで復号された積分(I)、比例(P)、微分(D)ゲイン乗算後の出力信号は、それぞれ減算処理部303a~303cに供給され、積分(I)、比例(P)、微分(D)成分ごとにフィードバック誤差信号が得られる。
【0053】
復号部301の復号器301aと復号器301dで復号され、減算処理部303aで減算されたI(積分)成分のフィードバック誤差信号は、乗算処理部304aに送られて、サンプル時間発生器306からのサンプル時間信号により離散化される。乗算処理部304aで離散化(乗算)されたI(積分)成分の誤差信号は、1サンプル遅延器304bと加算器304cからなる積分器で積分演算されて、加算器307に供給される。
【0054】
また、復号部301の復号器301bと復号器301eで復号され、減算処理部303bで減算されたP(比例)成分のフィードバック誤差信号は、そのまま加算器307に供給される。
一方、復号部301の復号器301cと復号器301fで復号され、減算処理部303cで減算されたD(微分)成分のフィードバック誤差信号は、1サンプル遅延器305bと減算器305cからなる微分器で微分演算され、除算処理部305aに供給される。
そして、除算処理部305aで、サンプル時間発生器306からのサンプル時間信号により離散化(除算)されて、復号されたD(微分)成分のフィードバック誤差信号として加算器307に供給される。
【0055】
加算器307は、それぞれ復号されたI(積分)成分のフィードバック誤差信号、P(比例)成分のフィードバック誤差信号、D(微分)成分のフィードバック誤差信号を加算し、加算した信号を制御信号として、制御対象30aに供給する。
【0056】
ここで、図5の復号器301a~301fの復号処理で用いられる秘密鍵の更新について説明する。
時刻tにおける秘密鍵「sk=s」は、以下のように表現され、tが定める周期ごとに更新される。
=st-1+w(t-1)modp(t≧1)
ここで、w(・・)は、疑似乱数列を出力する確定的アルゴリズムである。秘密鍵を更新する場合には、それに合わせて公開鍵と、すでに暗号化された暗号文も併せて更新する必要がある。
【0057】
また、時刻tにおける公開鍵「pk=(p,g,h)」は、hは以下の式で表すことができる。
ただし、
である。
【0058】
また、時刻tのときに暗号化された暗号文の、時刻tのときの更新状態は以下の式で表すことができる。
ここで、秘密鍵が漏洩しても乱数列出力関数w(・・)が安全なら、解読されることはない。なお、上式中のCtは,例えば,図5の暗号文の各ゲインC(t)、C(t),C(t)と読み替えることがきる。
すなわち、漏れた公開鍵/秘密鍵の暗号文は、解読可能であるが、公開鍵/秘密鍵は逐次更新されおり、その将来更新される公開鍵/秘密鍵は、乱数列出力関数w(・・)がなければ、誰も予測することができない。したがって、将来の暗号文は乱数列出力関数w(・・)があることによって、安全であるという仕組みが成立する。
【0059】
図6は、本例の暗号化制御システム及び暗号化制御プログラムを、車両モデルに適用したときの、本例の暗号化制御システムによる制御結果を示す図である。
つまり、図6の上図は、図5に示す入力装置10から制御装置20に供給される暗号化された指令値(実線)と、プラント制御装置30の出力である車速指令値(点線)がほぼ重なっていることを示している。
【0060】
また、図6の下図は、暗号化された指令値(実線)とプラント制御装置30の出力である車速指令値(点線)との差分、つまり車両モデル出力と指令値の差分(車速差)を示す。
ここで、図6の下図に示すように、車速差の信号が出ていることは、車両モデル出力と指令値との間にある程度の差分があるが、この差分の大きさから判断して、暗号化された車速に対する指令入力と、復号化された車速に対する制御入力は、ほぼ一致していることが分かる。つまり本例の暗号化制御システムは良好に機能しているということができる。
【0061】
図7の上図は、同じ車両モデルを用いた車速制御の事例を、図3に示す暗号化制御をしていないPID制御の制御入力と、図5に示すように暗号化制御を行った暗号化PID制御の制御入力を示す図である。
図7の上図に示すように、図3に示す暗号化制御をしていないPID制御の制御入力と、図5に示す本発明の暗号化制御を行ったPID制御の制御入力は、相当の部分で一致していることが分かる。
【0062】
図7の下図は、図3に示す暗号化制御をしていないPID制御の制御入力と図5に示す本発明の暗号化制御を行ったときの暗号化PID制御の制御入力の差分を表示した図である。
図7の下図から分かるように、本例の暗号化制御システムを使って暗号化制御を行った場合でも、暗号化制御を行わないでPID制御を行った場合とで、その精度は余り変わらないことが分かる。
【0063】
以上、本発明の実施形態例である暗号化制御システム、暗号化制御方法及び暗号化制御プログラムの概要と詳細について説明したが、本発明は前述した実施の形態例に限定されるものではなく、特許請求の範囲に記載された範囲を逸脱しない限りにおいて、様々な応用例、変形例が含まれる。
【符号の説明】
【0064】
10…入力装置、10a…指令入力、20…制御装置、30…プラント制御装置、30a…制御対象、11、25c、304c…減算器、26、24c、…加算器、303a~303c、305c…減算処理部、21~23、201a~201f…ゲイン乗算部、24…積分処理部、25…微分処理部、24a、304a…乗算処理部、25a、305a…除算処理部、24b、25b、304b、305b…1サンプル遅延回路、304c、307…加算器、27、306…サンプル時間発生器、101…暗号部(指令)、201…秘密計算部、301…復号部、301a~301f…復号器、302…暗号部(帰還)
図1
図2
図3
図4
図5
図6
図7