JP7495371B2 - 制御装置、不正命令検知方法及びプログラム - Google Patents

制御装置、不正命令検知方法及びプログラム Download PDF

Info

Publication number
JP7495371B2
JP7495371B2 JP2021055288A JP2021055288A JP7495371B2 JP 7495371 B2 JP7495371 B2 JP 7495371B2 JP 2021055288 A JP2021055288 A JP 2021055288A JP 2021055288 A JP2021055288 A JP 2021055288A JP 7495371 B2 JP7495371 B2 JP 7495371B2
Authority
JP
Japan
Prior art keywords
instruction
target
unit
command
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021055288A
Other languages
English (en)
Other versions
JP2022152497A (ja
Inventor
勇気 田中
光太郎 島村
輝昭 酒田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021055288A priority Critical patent/JP7495371B2/ja
Priority to EP22779647.1A priority patent/EP4318282A1/en
Priority to PCT/JP2022/006972 priority patent/WO2022209420A1/ja
Priority to US18/283,413 priority patent/US20240176873A1/en
Publication of JP2022152497A publication Critical patent/JP2022152497A/ja
Application granted granted Critical
Publication of JP7495371B2 publication Critical patent/JP7495371B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本開示は、制御装置、不正命令検知方法及びプログラムに関する。
近年、産業用の電子制御装置を支える組込みシステムでは、制御性能の向上、環境規制の厳格化、及び、装置の自律化に伴う新たな演算処理の追加などにより、高負荷化が進んでいる。
また、自律制御の社会システムへの適用が進んでおり、不特定多数の人間又はデバイスが立ち入るエリアで自走式のロボットのような自律体を稼働させる必要が生じている。このような状況では、自律体への攻撃リスクが高まるという問題がある。このため、自律体への攻撃を事前に防止する、もくしは攻撃を受けた際の影響を抑制する仕組みが必要となる。自律体への攻撃手段としては、自律体を制御するためのプログラムの改竄が知られている。
特許文献1には、プログラムの改竄を検知することが可能な技術が開示されている。この技術では、正規のプログラムの挙動パターンが基本パターンとして記録され、その後、プログラムの実行中に、そのプログラムの挙動が記録される。そして、プログラムの挙動から挙動パターンが確定すると、その挙動パターンと基本パターンとが一致するか否かが確認される。それらのパターンが一致していない場合、プログラムが改竄されたと判断される。
特表2017-505944号公報
しかしながら、特許文献1に記載した技術のようにプログラムの挙動パターンを監視する場合、プログラムの一連の動作が行われた後にプログラムの改竄が検知されるため、改竄されたプログラムが実行されてから改竄の検知までに長い時間がかかるという問題がある。また、挙動パターンを監視するためには、実行中のプログラムの挙動パターンが記録され、その挙動パターンと事前に記録した基本パターンとを読み出して、それらを比較する必要があり、監視に係る負荷が大きいという問題もある。このため、自律制御のような本来の機能に使用できるリソースが減ってしまう。なお、本来の機能の停止中に挙動パターンを比較することも考えられるが、この場合には、改竄を検知するまでにかかる時間がさらに長くなり、異常な動作が発生してから対処するまでに要求される時間を満たすことができない恐れがある。
本発明の目的は、上記課題を鑑みて為されたものであり、負荷を低減させつつ、プログラムの改竄を早期に検知することが可能な制御装置、不正命令検知方法及びプログラムを提供することにある。
本開示の一態様に従う制御装置は、プロセッサと、前記プロセッサで実行される拡張プログラムであって、所定のプログラムに含まれる命令の少なくとも一部である対象命令を拡張命令に変換した拡張プログラムと、前記対象命令を示す不正命令情報とを記憶する主記憶部と、前記プロセッサで実行された命令である実行命令と前記不正命令情報にて示される対象命令とを比較し、当該比較結果に基づいて、前記実行命令が不正な命令か否かを判断する命令監視部と、を有する。
本発明によれば、負荷を低減させつつ、プログラムの改竄を早期に検知することが可能になる。
本開示の実施例1に係る制御装置の構成例を示す図である。 本開示の実施例1に係る回路生成器の構成例を示す図である。 本開示の実施例1に係る命令変換器の構成例を示す図である。 本開示の実施例1に係る不正命令情報の構成例を示す図である。 本開示の実施例1に係る命令監視部の構成例を示す図である。 本開示の実施例1に係る命令比較部の構成例を示す図である。 本開示の実施例1に係る命令比較部の別の構成例を示す図である。 本開示の実施例1に係る命令比較部の別の構成例を示す図である。 本開示の実施例2に係る不正命令情報の構成例を示す図である。 本開示の実施例2に係る命令監視部の構成例を示す図である。 本開示の実施例2に係る命令比較部の構成例を示す図である。 本開示の実施例3に係る回路生成器及び命令変換器の構成例を示す図である。 本開示の実施例4に係る回路生成器及び命令変換器の構成例を示す図である。 本開示の実施例4に係る回路生成器及び命令変換器の別の構成例を示す図である。 本開示の実施例5に係る制御装置の構成例を示す図である。
以下、本開示の実施例について図面を参照して説明する。なお、各実施例の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
<制御装置全体構成>
図1は、本開示の実施例1に係る制御装置の構成例を示す図である。図1に示す制御装置101は、主記憶部102、CPU103、命令監視部104、出力制御部105及び周辺装置106を有する。
主記憶部102は、メインアプリケーションプログラム(以下では、メインアプリと略す)107及び不正命令情報108を記憶する。メインアプリ107は、所定のプログラムである元アプリケーションプログラム(以下では、元アプリと略す)に含まれる命令の少なくとも一部である対象命令を後述の拡張命令に変換した拡張プログラムである。元アプリ及びメインアプリ107は、例えば、自らの状況を把握して動作する自律体のような被制御対象を制御する制御プログラムである。不正命令情報108は、メインアプリ107の改竄を検知するための情報であり、メインアプリ107に含まれる拡張命令の変換前の命令である対象命令を示す情報である。
CPU103は、主記憶部102に記憶されたメインアプリ107を読み出し、その読み出したメインアプリ107に含まれる各命令を実行して種々の演算を行うプロセッサである。具体的には、CPU103は、演算に使用するデータを保持するレジスタ、及び、レジスタに保持するデータを用いて演算を実行する演算器などを含む。CPU103は、主記憶部102からメインアプリ107の命令を取得し、その命令のビット列を読み解いて、命令に応じたレジスタ及び演算器の選択、及び、演算器の動作を決定して、命令に応じた演算を実行する。
CPU103は、演算結果を被制御対象のような制御装置101の外部に出力する場合、演算結果を出力データとして出力制御部105に出力する。また、CPU103は、実行した命令である実行命令を示す実行命令情報を命令監視部104に出力する。
命令監視部104は、主記憶部102から不正命令情報108を取得し、CPU103から実行命令情報を取得する。命令監視部104は、不正命令情報108にて示される対象命令と実行命令情報にて示される実行命令とを比較して、実行命令が不正な命令か否かを判断する。具体的には、命令監視部104は、実行命令が不正命令情報108にて示される対象命令のいずれかと、命令の特徴を表す特徴箇所の値が一致した場合、実行命令が不正な命令であると判断し、プログラムが改竄されていると判断する。
実行命令が不正な命令の場合、命令監視部104は、出力制御部105に出力停止信号を出力して、CPU103の出力を停止するとともに、周辺装置106に異常通知信号を出力する。
出力制御部105は、CPU103の出力データの外部への出力を制御する。具体的には、出力制御部105は、命令監視部104から出力停止信号を受信していない場合、CPU103からの出力データを周辺装置106に送信し、出力停止信号を受信した場合、出力データの送信を停止する。
周辺装置106は、出力制御部105からの出力データ及び命令監視部104からの異常通知信号を制御装置101の外部へ出力する出力部である。出力データの送信方法は、例えば、無線又は有線ネットワークを経由した通信などである。異常通知信号の送信方法は、LEDなどの点灯、無線又は有線ネットワークを経由したメッセージ通信、又は、オンオフ信号の出力などである。
<回路生成器構成>
CPU103は、メインアプリ107における拡張命令を実行するための拡張構成を備える。拡張構成は、拡張命令を変換前の対象命令と同等な命令として処理するための構成である。同等な命令は、例えば、同等な結果を出力する命令である。
図2は、拡張構成を備えるCPU103を設計する回路生成器の構成を示す図である。図2に示す回路生成器201は、拡張命令生成部202と、回路生成部203とを有する。
拡張命令生成部202には、拡張命令に変換する対象命令を示す対象命令情報が入力される。拡張命令生成部202は、対象命令情報にて示される対象命令を拡張命令に変換して回路生成部203に通知する。拡張命令は、対象命令における演算方法(具体的には、演算器及び演算器の動作)を指定するビットを拡張命令用の値に差し替えた命令である。このため、拡張命令のレジスタ、アドレス及び即値を指定するビットは元の対象命令のビットを継承している。なお、差し替えるビットは、命令の種類ごとに異なる。また、演算方法を指定するビットが、上述した命令の特徴を表す特徴箇所となる。
回路生成部203は、拡張命令生成部202から通知された拡張命令を対象命令と同等な命令として処理する拡張構成を備えるCPUを設計する。具体的には、回路生成部203は、拡張命令の種類に応じて、拡張命令にて指定された演算方法に従った処理を実行する拡張構成を有するCPUを設計し、その設計情報を出力する。この設計情報に従って生成されたCPUがCPU103として制御装置101に搭載される。
本実施例では、回路生成部203は、拡張命令を実行する必要のない既存のCPUの設計情報を拡張命令に応じて組み替えることで、拡張機能を有するCPUの設計情報を生成する。この場合、設計情報の主な組み換え箇所は、各演算器の制御信号を出力する回路の箇所となる。なお、既存のCPUの設計情報は、回路生成器201内に予め格納されていてもよいし、外部から入力されてもよい。また、回路生成部203は、専用のハードウェアで実現されてもよいし、パーソナルコンピュータなどのコンピュータにおいてソフトウェアにて実現されてもよい。
なお、対象命令の数が多くなるほど、CPU103の本来の機能(例えば、被制御対象を制御する機能)で使用可能な拡張命令の種類が減るため、対象命令の数は、元アプリの命令数及び他の制約事項に応じて適宜設定されることが望ましい。
<命令変換器構成>
図3は、メインアプリ108を生成する命令変換器の構成例を示す図である。図3に示す命令変換器302には、元アプリに含まれる命令の集合である命令群301が入力される。また、命令変換器302は、変換対象管理部303及び命令変換部304を有する。
変換対象管理部303は、外部からの指示により指定された命令を対象命令として決定し、その対象命令に対応する拡張命令を生成する。拡張命令の生成方法は、拡張命令生成部202による生成方法と同様である。変換対象管理部303は、対象命令及び拡張命令を命令変換部304に通知する。また、変換対象管理部303は、対象命令を示す情報を不正命令情報108として出力して図1の制御装置101の主記憶部102に格納する。これにより、不正命令情報108が示す対象命令と同じ命令がCPU103にて実行された場合、その実行された実行命令が拡張命令ではないため、実行命令が不正な命令と判断することが可能となる。
変換対象管理部303から通知された対象命令が命令群301に含まれる場合、命令変換部304は、命令群301に含まれる対象命令を変換対象管理部303から通知された拡張命令に差し替える。命令変換部304は、対象命令を拡張命令に差し替えた命令群301をメインアプリ107として出力して、図1の制御装置101の主記憶部102に格納する。なお、命令変換器302は、専用のハードウェアで実現されてもよいし、パーソナルコンピュータなどのコンピュータにおいてソフトウェアにて実現されてもよい。
図4は、不正命令情報108の構成例を示す図である。図4に示す不正命令情報108は、対象命令を特定するためのインデックス(index)ごとに、対象命令(Instruction)108aが示されている。対象命令108aは、図4の例では、32ビットのデータである。不正命令情報108では、対象命令108aのビットの値のうち、特徴箇所(演算方法を指定するビット)以外の値は不定値(図4では、「x」)で示されてもよいが、特徴箇所は「0」又は「1」の実際の値が示される。
例えば、一つ目の命令(インデックス=1)は、31ビット目から25ビット目、14ビット目から12ビット目、6ビット目から0ビット目のそれぞれが演算方法を指定している。これらの値の全てで実行命令と一致した場合、実行命令が不正な命令と判断される。なお、演算方法を指定するビットは、命令の種類に応じて異なっており、例えば、3つ目の命令(インデックス=3)は、6ビット目から0ビット目の値で演算方法を指定している。なお、図4で示したビットの配置は、単なる一例であり、適用する命令セットアーキテクチャなどに合わせて、演算方法を指定するビットは変更される。
<命令監視部>
図5は、図1に示した命令監視部104の構成例を示す図である。図5に示す命令監視部104は、命令比較部501~503と、OR回路504とを有する。命令比較部は、拡張命令の種類ごとに設けられる。図5の例では、図4のインデックスが1から3の対象命令を拡張命令に変換した場合における命令監視部104を示している。このため、命令比較部は、図5では、3つあるとしているが、実際には、3つに限るものではなく、拡張命令の種類に応じて増減される。
各命令比較部501~503には、それぞれ異なる不正命令情報1~3が入力されて保持される。ここでは、不正命令情報1~3は、それぞれインデックスが1から3の対象命令を示す。また、各命令比較部501~503には、CPU103から実行命令情報が入力される。
各命令比較部501~503は、実行命令情報にて示される実行命令と保持している不正命令情報にて示される対象命令とを比較して、それらの特徴箇所の値が全て同じか否かを判断する。各命令比較部501~503は、特徴箇所の値が全て同じ場合、実行命令が不正な命令であると判断する。発行命令が不正な命令の場合、各命令比較部501~503は、異常を検知した旨の異常検知信号として、値が「1」のHレベル信号をOR回路504に出力する。
OR回路504は、各命令比較部501~503の少なくとも1つから異常検知信号が出力されると、その異常検知信号を異常通知信号及び出力停止信号として命令監視部104及び出力制御部105に出力する。
<命令比較部>
図6~図8は、図5の命令比較部501~503の構成例を示す図である。
図6は、命令比較部501の構成例を示す。命令比較部501は、図4のインデックスが1の不正命令情報1に対応する命令比較部であり、実行命令及び対象命令における互いに異なる箇所のビットを比較する比較器である6bit比較部602、3bit比較部603及び7bit比較部604と、AND回路605とを有する。
6bit比較部602は、不正命令情報108が示す対象命令の31ビット目から25ビット目までと、実行命令情報が示す実行命令の31ビット目から25ビット目までを比較し、それらの値が全て一致した場合、異常通知信号をAND回路605に出力する。3bit比較部603は、対象命令の14ビット目から12ビット目までと、実行命令の14ビット目から12ビット目までを比較し、それらの値が全て一致した場合、異常通知信号をAND回路605に出力する。7bit比較部604は、不正命令の6ビット目から0ビット目までと、実行命令情報の6ビット目から0ビット目までを比較し、それらの値が全て一致した場合、異常通知信号をAND回路605に出力する。
AND回路605は、比較部(6bit比較部602、3bit比較部603及び7bit比較部604)の全てから異常検知信号が出力された場合、比較結果として異常検知信号を出力する。
図7は、命令比較部502の構成例を示す。命令比較部502は、図4のインデックスが2の不正命令情報2に対応する命令比較部であり、図6に示した命令比較部501から6bit比較部602を除いた構成を有する。このため、命令比較部502は、対象命令及び実行命令の14ビット目から12ビット目までが一致し、かつ、対象命令及び実行命令の6ビット目から0ビット目までが一致した場合に、異常通知信号を出力する。
図8は、命令比較部503の構成例を示す。命令比較部503は、図4のインデックスが3の不正命令情報に対応する命令比較部であり、図7に示した命令比較部502から7bit比較部603及びAND回路605を除いた構成を有する。このため、命令比較部503は、対象命令及び実行命令の6ビット目から0ビット目までが一致した場合に、異常通知信号を出力する。
<実施例の効果>
以上説明したように本実施例によれば、主記憶部102は、メインアプリ107と不正命令情報108とを記憶する。メインアプリ107は、所定のプログラムに含まれる命令の少なくとも一部である対象命令を拡張命令に変換した拡張プログラムである。不正命令情報108は、対象命令を示す。命令監視部104は、CPU103で実行された命令である実行命令と不正命令情報108にて示される対象命令とを比較し、当該比較結果に基づいて、実行命令が不正な命令か否かを判断する。
上記構成を有することにより、プログラムの実行時に、命令単位でプログラムの改竄を監視することが可能となる。このため、行動パターンの記録、読み出し、及び、比較などを行う必要がないため、監視処理に係る負荷を低減させることが可能となる。また、行動パターンが確定することを待たなくても、プログラムの改竄を検知することが可能になるため、改竄を検知するまでにかかる時間を短縮することが可能になる。したがって、負荷を低減させつつ、プログラムの改竄を早期に検知することが可能になる。
また、本実施例では、CPU103は、拡張命令を対象命令と同等な命令として処理する拡張構成を備える。このため、拡張プログラムを元のプログラムと同等に扱うことが可能になる。
また、本実施例では、プロセッサは、拡張命令に応じて設計される。このため、拡張命令として使用することが可能な命令に対する制約を軽減することが可能になる。
また、本実施例では、命令監視部104は、実行命令及び前記対象命令における、対象命令と拡張命令とで値が異なる特徴箇所のビットを比較する比較器602~604を備える。このため、拡張命令に合わせた命令監視部104を構成することが可能になるため、監視処理の負荷を低減することが可能になる。
本実施例では、命令監視部104の構成が実施例1とは異なる。具体的には、命令監視部104は、共通の構成を有する複数の命令比較部を備え、対象命令の種類に応じて、対象命令及び実行命令の比較する箇所を変更する。このため、不正命令情報108は、対象命令の種類を含む。
図9は、命令の種類を含む不正命令情報108の構成例を示す図である。図9に示す不正命令情報108は、インデックスごとに、対象命令108aと、対象命令108aの種類(Type)108bとが示されている。対象命令108aは、図4に示した対象命令108aと同等である。
図10は、本実施例の命令監視部104の構成例を示す図である。図10に示す命令監視部104は、1つ又は複数の命令比較部1001と、OR回路504とを有する。命令比較部1001が複数ある場合、それらの構成は共通である。図10の例では、図9のインデックスが1から3の対象命令を拡張命令に変換した場合における命令監視部104を示している。このため、命令比較部1001は、図10では、3つあるとしているが、実際には、3つに限るものではなく、拡張命令の種類に応じて増減される。
各命令比較部1001には、それぞれ異なる不正命令情報1~3が入力されて保持される。また、各命令比較部1001には、CPU103からの実行命令情報が入力される。
各命令比較部1001は、実行命令情報にて示される実行命令と保持している不正命令情報にて示される対象命令とを比較して、それらの特徴箇所の値が全て同じか否かを判断する。各命令比較部1001は、特徴箇所の値が全て同じ場合、実行命令が不正な命令であると判断する。発行命令が不正な命令の場合、各命令比較部1001は、異常を検知した旨の異常検知信号として、値が「1」のHレベル信号をOR回路504に出力する。
<命令比較部>
図11は、命令比較部1001の構成例を示す図である。図11に示す命令比較部1001は、図6に示した命令比較部501の構成に加えて、さらに比較箇所選択部1101と、複数のOR回路1102とを有する。OR回路1102は、6bit比較部602、3bit比較部603及び7bit比較部604のそれぞれと対応して設けられ、その対応する比較部の出力端子と接続される。したがって、OR回路1102は、図11の例では、3つある。
比較箇所選択部1101には、不正命令情報108の種類108bが入力される。比較箇所選択部1101は、命令の種類108bに応じて、6bit比較部602、3bit比較部603及び7bit比較部604のいずれを、実行命令が不正命令か否かを判断するために使用する使用比較器として決定する。比較箇所選択部1101は、使用比較器を選択するための選択信号として、使用比較部に対応するOR回路1102には、値が「0」のLレベル信号を出力し、使用比較器ではない比較器に対応するOR回路1102には、値が「1」のHレベル信号を出力する。
これにより、使用比較器ではない比較器に対応するOR回路1102からは常にHレベル信号が出力され、使用比較器に対応するOR回路1102からは使用比較器から異常検知信号(Hレベル信号)が出力された場合にHレベル信号が出力される。したがって、AND回路605からは、使用比較器から異常検知信号が出力された場合に、その異常検知信号が比較結果として出力される。
<実施例の効果>
以上説明したように本実施例によれば、対象命令の種類に応じて、実行命令が不正な命令か否かを判断するために用いる比較器が選択される。このため、対象命令の種類に応じて命令監視部104の構成を変更する必要がないため、メインアプリ107などが変更されても命令監視部104の構成を変更する必要がない。したがって、メインアプリの更新や差し替え速度を維持しつつ、プログラムの改竄を早期に検知することが可能になる。
本実施例では、対象命令情報に応じて拡張命令及びCPUを設計する例を説明する。
図12は、本実施例の回路生成器201及び命令変換器302の構成を示す図である。本実施例では、図12に示すように回路生成器201及び命令変換器302は互いに通信可能に接続される。
命令変換器302の変換対象管理部303は、対象命令を示す対象命令情報を保持し、その対象命令情報を、命令変換部304を介して回路生成器201の拡張命令生成部202に送信すると共に、その対象命令情報を不正命令情報108として出力する。
拡張命令生成部202は、対象命令情報に基づいて拡張命令を生成する。回路生成部203は、拡張命令に基づいて、拡張命令を対象命令と同等な命令として処理する拡張構成を備えるCPUを設計し、その設計情報を出力する。
また、拡張命令生成部202は、拡張命令と対象命令とを示す命令変換情報を命令変換部304に通知する。命令変換部304は、命令変換情報にて示される対象命令が命令群301に含まれる場合、命令群301に含まれる対象命令を命令変換情報にて示される拡張命令に差し替える。命令変換部304は、対象命令を拡張命令に差し替えた命令群301をメインアプリ107として出力する。
<実施例の効果>
以上説明したように本実施例によれば、対象命令に基づいて拡張命令が生成され、その拡張命令に基づいてCPU103が設計される。このため、プログラムの改竄を監視する拡張命令を適宜設定することが可能になるため、使用する所定プログラム又は監視の対象となるマルウェアなどの傾向に応じた適切な拡張命令を設定することが可能になる。
本実施例では、メインアプリ107による命令傾向に応じて変換対象の命令を判定する。
図13は、本実施例の回路生成器201及び命令変換器302の構成例を示す図である。図13に示す構成は、図12に示した構成と比較して、命令変換器302が変換対象判定部1301をさらに有する点で異なる。
変換対象判定部1301には、命令群301が入力される。変換対象判定部1301は、予め定められた判定条件に従って、命令群301の中から対象命令を判定する。判定条件は、例えば、命令群301に含まれる各命令の元アプリで使用される使用頻度に関する条件である。より具体的には、判定条件は、使用頻度が閾値以上の命令、又は、使用頻度が高い方から所定個の命令などである。使用頻度は、元アプリのソースコード内の出現頻度でもよいし、元アプリをパーソナルコンピュータ又は実際の制御装置101で実行させた時に実行頻度でもよい。なお、判定条件は、使用頻度に関する条件に限らず、予め定められた優先順位に応じた命令などでもよい。
変換対象判定部1301は、判定条件に適合した命令を対象命令と判定し、その対象命令を示す対象命令情報を拡張命令生成部202及び変換対象管理部303に出力する。
拡張命令生成部202は、変換対象判定部1301からの対象命令情報に基づいて拡張命令を生成し、拡張命令を示す拡張命令情報を命令変換部304に出力する。
また、変換対象管理部303は、変換対象判定部1301からの対象命令情報を命令変換部304に出力すると共に、その対象命令情報を不正命令情報108として出力する。命令変換部304は、対象変換情報にて示される対象命令が命令群301に含まれる場合、命令群301に含まれる対象命令を拡張命令情報にて示される拡張命令に差し替える。命令変換部304は、対象命令を拡張命令に差し替えた命令群301をメインアプリ107として出力する。他の処理は、実施例3と同様である。
図14は、本実施例の回路生成器201及び命令変換器302の別の構成例を示す図である。図14の例では、変換対象判定部1301にて判定された対象命令に加えて、変換対象管理部303が予め保持する対象命令情報にて示される対象命令を拡張命令に変換する。
具体的には、変換対象判定部1301は、判定条件に適合した命令を対象命令と判定し、その対象命令を示す第1の対象命令情報を拡張命令生成部202及び変換対象管理部303に出力する。
変換対象管理部303は、対象命令を示す第2の対象命令情報を保持し、その第2の対象命令情報と、変換対象判定部1301からの第1の対象命令情報を、命令変換部304を介して回路生成器201の拡張命令生成部202に送信すると共に、不正命令情報108として出力する。
拡張命令生成部202は、変換対象判定部1301からの第1の対象命令情報と、変換対象管理部303からの第2の対象命令情報とに基づいて拡張命令を生成し、拡張命令と第1の対象命令情報及び第2の対象命令情報にて示される対象命令とを示す命令変換情報を命令変換部304に通知する。命令変換部304は、命令変換情報にて示される対象命令が命令群301に含まれる場合、命令群301に含まれる対象命令を命令変換情報にて示される拡張命令に差し替える。命令変換部304は、対象命令を拡張命令に差し替えた命令群301をメインアプリ107として出力する。他の処理は、実施例3と同様である。
<実施例の効果>
以上説明したように本実施例によれば、対象命令は、元アプリの命令群301に含まれる命令のうち、予め定められた判定条件に適合した命令を含む。このため、適切な対象命令を選択することが可能になる。特に本実施例では、判定条件は、命令の使用頻度に関するため、不正な命令を早期に検知するのに適切な対象命令を選択すること可能になる。
本実施例では、CPU103の内部に命令監視部104を設ける例を説明する。
図15は、本開示の実施例5に係る制御装置の構成例を示す図である。図15の例では、CPU103は、フェッチ部1501、デコード部1502及び演算部1503を有する。
フェッチ部1501は、メインアプリ107の命令を実行命令として取得する。デコード部1502は、フェッチ部1501にて取得された命令の動作を解釈する。演算部1503は、デコード部1502にて解釈された動作に従って処理を実行する。
デコード部1502は、具体的には、制御部1505と、レジスタ1504、命令監視部104及び出力制御部105を有する。制御部1505は、フェッチ部1501にて取得された実行命令の動作を解釈する。例えば、制御部1505は、実行命令に従って動作させる演算器と、その演算器の動作を決定する。レジスタ1504は、フェッチ部1501にて取得された実行命令による処理にて使用するレジスタに保持されている値を出力する。命令監視部104は、実行命令と不正命令情報108にて示される対象命令とを比較して、実行命令が不正な命令の場合、出力制御部105へ出力停止信号を入力する。出力制御部105は、演算部1503に出力する信号の値をクリアすることで、不正な命令による演算部1503による演算及び出力を停止する。
<実施例の効果>
以上説明したように本実施例では、CPU103の内部で不正な命令の監視を行うことが可能になるため、演算部1503の動作を停止することが可能になる。したがって、不正な命令による演算が行われることを抑制することが可能になり、消費電力の削減が可能となる。また、CPU103の外部に信号を出力しなくても不正な命令の監視を行うことが可能になるため、情報の伝送遅延を抑制することが可能となり、制御装置101の周波数低下を抑制することが可能になる。
上述した本開示の実施形態は、本開示の説明のための例示であり、本開示の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本開示の範囲を逸脱することなしに、他の様々な態様で本開示を実施することができる。
101:制御装置 102:主記憶部 103:CPU 104:命令監視部 105:出力制御部 106:周辺装置 107:メインアプリケーションプログラム 108:不正命令情報 201:回路生成器 201:回路生成部 202:拡張命令生成部 203:回路生成部 301:命令群 302:命令変換器 303:変換対象管理部 304:命令変換部 501~503:命令比較部 504:OR回路 602:6bit比較部 603:3bit比較部 604:7bit比較部 605:AND回路 1001:命令比較部 1101:比較箇所選択部 1102:OR回路 1301:変換対象判定部 1501:フェッチ部 1502:デコード部 1503:演算部 1504:レジスタ 1505:制御部

Claims (12)

  1. プロセッサと、
    前記プロセッサで実行される拡張プログラムであって、所定のプログラムに含まれる命令の少なくとも一部である対象命令を拡張命令に変換した拡張プログラムと、前記対象命令を示す不正命令情報とを記憶する主記憶部と、
    前記プロセッサで実行された命令である実行命令と前記不正命令情報にて示される対象命令とを比較し、当該比較結果に基づいて、前記実行命令が不正な命令か否かを判断する命令監視部と、を有する制御装置。
  2. 前記プロセッサは、前記拡張命令を前記対象命令と同等な命令として処理する拡張構成を備える、請求項1に記載の制御装置。
  3. 前記拡張命令は、前記対象命令に基づいて作成され、
    前記プロセッサは、前記拡張命令に基づいて設計される、請求項2に記載の制御装置。
  4. 前記対象命令は、前記所定のプログラムに含まれる命令のうち、予め定められた判定条件に適合した命令を含む、請求項1に記載の制御装置。
  5. 前記判定条件は、各命令の前記所定のプログラムで使用される頻度に関する条件を含む、請求項4に記載の制御装置。
  6. 前記命令監視部は、前記実行命令及び前記対象命令における、前記対象命令と前記拡張命令とで値が異なる特徴箇所のビットを比較する比較器を備える命令比較部を有する、請求項1に記載の制御装置。
  7. 前記命令監視部は、
    前記実行命令及び前記対象命令における互いに異なる箇所のビットを比較する複数の比較器と、
    前記対象命令の種類に応じて、前記複数の比較器から前記実行命令が不正な命令か否かを判断するために用いる比較器を選択する選択部と、を有する、請求項1に記載の制御装置。
  8. 前記命令監視部は、前記プロセッサの内部に設けられる、請求項1に記載の制御装置。
  9. 前記命令監視部は、前記実行命令が不正な命令である場合、前記プロセッサの出力を停止する、請求項1に記載の制御装置。
  10. 前記拡張プログラムは、自律体を制御するためのプログラムである、請求項1に記載の制御装置。
  11. プロセッサと、前記プロセッサで実行される拡張プログラムであって、所定のプログラムに含まれる命令の少なくとも一部である対象命令を拡張命令に変換した拡張プログラムと、前記対象命令を示す不正命令情報とを記憶する主記憶部とを有する制御装置による不正命令検知方法であって、
    前記プロセッサで実行された命令である実行命令を示す実行命令情報と前記不正命令情報とを比較し、当該比較結果に基づいて、前記実行命令が不正な命令か否かを判断する、不正命令検知方法。
  12. プロセッサと、前記プロセッサで実行される拡張プログラムであって、所定のプログラムに含まれる命令の少なくとも一部である対象命令を拡張命令に変換した拡張プログラムと、前記対象命令を示す不正命令情報とを記憶する主記憶部とを有する制御装置に、
    前記プロセッサで実行された命令である実行命令を示す実行命令情報と前記不正命令情報とを比較し、当該比較結果に基づいて、前記実行命令が不正な命令か否かを判断する手順を実行させるためのプログラム。

JP2021055288A 2021-03-29 2021-03-29 制御装置、不正命令検知方法及びプログラム Active JP7495371B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021055288A JP7495371B2 (ja) 2021-03-29 2021-03-29 制御装置、不正命令検知方法及びプログラム
EP22779647.1A EP4318282A1 (en) 2021-03-29 2022-02-21 Control device, illegal command detection method, and program
PCT/JP2022/006972 WO2022209420A1 (ja) 2021-03-29 2022-02-21 制御装置、不正命令検知方法及びプログラム
US18/283,413 US20240176873A1 (en) 2021-03-29 2022-02-21 Control Device, Unauthorized Command Detection Method, and Program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021055288A JP7495371B2 (ja) 2021-03-29 2021-03-29 制御装置、不正命令検知方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2022152497A JP2022152497A (ja) 2022-10-12
JP7495371B2 true JP7495371B2 (ja) 2024-06-04

Family

ID=83456021

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021055288A Active JP7495371B2 (ja) 2021-03-29 2021-03-29 制御装置、不正命令検知方法及びプログラム

Country Status (4)

Country Link
US (1) US20240176873A1 (ja)
EP (1) EP4318282A1 (ja)
JP (1) JP7495371B2 (ja)
WO (1) WO2022209420A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535067A (ja) 2004-04-29 2007-11-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ コンピュータにおけるプログラム実行中の侵入検出
JP2013228957A (ja) 2012-04-26 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 制御監視装置、制御監視方法及び制御監視プログラム
US20180137280A1 (en) 2015-04-16 2018-05-17 Morphisec Information Security 2014 Ltd. Method and system for protecting computerized systems from malicious code by means of mutable instructions
EP3754526A1 (en) 2019-06-18 2020-12-23 Gemalto Sa Method for controlling an execution flow of an application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535067A (ja) 2004-04-29 2007-11-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ コンピュータにおけるプログラム実行中の侵入検出
JP2013228957A (ja) 2012-04-26 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 制御監視装置、制御監視方法及び制御監視プログラム
US20180137280A1 (en) 2015-04-16 2018-05-17 Morphisec Information Security 2014 Ltd. Method and system for protecting computerized systems from malicious code by means of mutable instructions
EP3754526A1 (en) 2019-06-18 2020-12-23 Gemalto Sa Method for controlling an execution flow of an application

Also Published As

Publication number Publication date
US20240176873A1 (en) 2024-05-30
EP4318282A1 (en) 2024-02-07
WO2022209420A1 (ja) 2022-10-06
JP2022152497A (ja) 2022-10-12

Similar Documents

Publication Publication Date Title
KR102034348B1 (ko) 보안 감시
RU2526716C2 (ru) Эвристический способ анализа кода
JP6054010B2 (ja) データ判定装置、データ判定方法及びプログラム
KR101671795B1 (ko) 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법
CN105103158A (zh) 剖析代码执行
KR101697446B1 (ko) 임베딩된 코드에 대한 보호 스킴
WO2013105554A1 (ja) 制御装置監視システムおよび制御装置の監視方法
EP1745340B1 (en) Intrusion detection during program execution in a computer
KR20190058310A (ko) 반도체 장치
JP7495371B2 (ja) 制御装置、不正命令検知方法及びプログラム
JP7074146B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP7383750B2 (ja) 故障注入攻撃を検出する改善されたシステムと方法
KR102419867B1 (ko) 주입 공격형 악성코드 탐지시스템 및 주입 공격형 악성코드 탐지방법
JP2009157808A (ja) データ処理装置及びデータ処理装置におけるバスアクセス制御方法
US20100174520A1 (en) Simulator
CN113157543A (zh) 一种可信度量方法及装置、服务器、计算机可读存储介质
US20080133838A1 (en) Data processing device
JP2005284760A (ja) 割り込み制御回路
US20230393822A1 (en) Tamper detection feature embedding device, tamper detection feature embedding method, and computer readable medium
WO2022259401A1 (ja) 監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体
JP3317601B2 (ja) プログラマブルコントローラ
US11847203B2 (en) Method, system and device for managing an execution of a program relating to part or all of a first application
WO2022091406A1 (ja) ソフトウェア更新装置、ソフトウェア更新方法、及び、ソフトウェア更新プログラム
JP5369686B2 (ja) 述語式評価システム、述語式評価方法及び述語式評価用プログラム
Co et al. A lightweight software control system for cyber awareness and security

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230601

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240430

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240523

R150 Certificate of patent or registration of utility model

Ref document number: 7495371

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150