JP2019012498A - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP2019012498A
JP2019012498A JP2017130213A JP2017130213A JP2019012498A JP 2019012498 A JP2019012498 A JP 2019012498A JP 2017130213 A JP2017130213 A JP 2017130213A JP 2017130213 A JP2017130213 A JP 2017130213A JP 2019012498 A JP2019012498 A JP 2019012498A
Authority
JP
Japan
Prior art keywords
function
check processing
usage frequency
processing instruction
electronic control
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.)
Granted
Application number
JP2017130213A
Other languages
English (en)
Other versions
JP6885226B2 (ja
Inventor
安藤 元紀
Motonori Ando
元紀 安藤
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.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Priority to JP2017130213A priority Critical patent/JP6885226B2/ja
Priority to US16/016,746 priority patent/US10769273B2/en
Publication of JP2019012498A publication Critical patent/JP2019012498A/ja
Application granted granted Critical
Publication of JP6885226B2 publication Critical patent/JP6885226B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Abstract

【課題】CFI技術を用いつつ、かつドメインに依存せず、プログラム実行時のオーバーヘッドを抑制すること。【解決手段】本発明の電子制御装置20は、関数と前記関数のコール/リターン関係である制御フローとを有するとともに、前記制御フローが正しく実行されるかをチェックするチェック処理命令がプログラムコード内に挿入されているプログラム、を保存するメモリ100と、前記関数の使用頻度を示す使用頻度情報が入力される入力部201と、前記電子制御装置の負荷量を測定する測定部202と、前記使用頻度情報及び前記負荷量に基づいて、実行する前記チェック処理命令を決定する実行対象決定部203と、前記プログラムの実行時に、決定された前記チェック処理命令を実行する演算部204と、を有する。【選択図】図5

Description

本発明は、バッファオーバーフロー攻撃に対して耐性を有する電子制御装置に関し、主として自動車の車載システムに搭載される電子制御装置に関するものである。
バッファオーバーフロー攻撃は、実行中のプログラムのメモリ内に攻撃者の作成したプログラムが送り込まれることにより実行され、この結果、コンピュータの制御が奪われてしまう。具体的には、攻撃者が送り込んだプログラムによって、例えばスタックに置かれたリターンアドレスが変更され、当該プログラムに制御が移ることによりコンピュータの制御が奪われてしまうものである。
バッファオーバーフロー攻撃に対しては様々な解決策が提案されている、その一つに攻撃者がリターンアドレスを修正することを許容するが、損害が生じる前にこの変更を検出する制御フローインテグリティ(CFI)技術がある。しかし、CFIにおいては、プログラム実行に際してチェック処理に時間を要するという課題を有している。
かかる課題を解決するため、例えば特許文献1には、プログラム命令を特定領域のメモリに格納し、ジャンプ/リターン時に目的アドレスをマスクすることで、攻撃者が単純にジャンプ/リターンアドレスを修正しても有用な操作を行うことを制限することでチェック処理によるオーバーヘッドが生じるという課題を解決することが記載されている。
また、特許文献2には、時間的オーバーヘッド、および空間的オーバーヘッドを抑制しつつ、ドメイン間の実行制限を考慮して、非信頼ドメインからの関数コール時と関数リターン時のアドレスチェックを効率よく行うことが記載されている。
特開2011−8778号公報 特開2011−123658号公報
しかし、特許文献1では、従来のCFI技術とは異なるアプローチであり、CFI技術に対して直接適用できるものではない。
また、特許文献2では、非信頼ドメイン内の関数コール/リターンはチェック対象外となってしまい、非信頼ドメイン内では不適切な関数コール/リターンによって、設計者の意図しない命令列を実行してしまう恐れがある。
本発明の目的は、CFI技術を用いつつ、かつドメインに依存せず、プログラム実行時のオーバーヘッドを抑制することにある。
上記課題を解決するために、本発明の電子制御装置(20)は、
関数と前記関数のコール/リターン関係である制御フローとを有するとともに、前記制御フローが正しく実行されるかをチェックするチェック処理命令がプログラムコード内に挿入されているプログラム、を保存するメモリ(100)と、
前記関数の使用頻度を示す使用頻度情報が入力される入力部(201)と、
前記電子制御装置の負荷量を測定する測定部(202)と、
前記使用頻度情報及び前記負荷量に基づいて、実行する前記チェック処理命令を決定する実行対象決定部(203)と、
前記プログラムの実行時に、決定された前記チェック処理命令を実行する演算部(204)と、
を有する。
本発明の電子制御装置によれば、CFI技術を用いつつ、かつドメインに依存せず、プログラム実行時のオーバーヘッドを抑制することができる。
実施形態1の電子制御装置及び当該電子制御装置に搭載されるプログラムの生成に関係する装置の配置を示す配置図 実施形態1の電子制御装置で用いられるプログラムの生成方法における各ステップを説明する説明図 実施形態1の電子制御装置で用いられるプログラムの生成方法における抽出ステップを説明する説明図 実施形態1の電子制御装置で用いられるプログラムの構成を説明する説明図 実施形態1の電子制御装置の構成を示す構成図 実施形態1の電子制御装置がチェック処理命令の実行対象の決定に用いる実行対象テーブルを説明する説明図 実施形態1の電子制御装置で用いられるプログラムの構成を説明する説明図 実施形態1の電子制御装置の動作を示す説明図 実施形態1の変形例1の電子制御装置がチェック処理命令の実行対象の決定に用いる実行対象テーブルを説明する説明図 実施形態2の電子制御装置がチェック処理命令の実行対象の決定に用いる実行対象テーブルを説明する説明図 実施形態3において説明する負荷量と関数の使用頻度との対応を示す図 実施形態3において説明する負荷量と関数の使用頻度との対応を示す図 実施形態3の電子制御装置で用いられるプログラムの構成を説明する説明図 実施形態3において説明する負荷量と関数の使用頻度との対応を示す図
以下、本発明の電子制御装置の構成及び機能について、図面を参照して説明する。なお、本発明とは、特許請求の範囲又は課題を解決するための手段の項に記載された発明を意味するものであり、以下の実施形態に限定されるものではない。また、鉤括弧内の語は、特許請求の範囲又は課題を解決するための手段の項に記載された語を意味し、同じく以下の実施形態に限定されるものではない。
また、特許請求の範囲の従属項に記載の構成及び方法、および従属項に記載の構成及び方法に対応する実施形態の構成及び方法は、本発明においては任意の構成及び方法である。
なお、以下の実施形態は、主として自動車の車載用電子制御装置および当該電子制御装置に書き込まれるプログラムを例として説明するが、本発明は、特許請求の範囲で限定がない限り、車載用途以外の電子制御装置やプログラムも含むものである。
(各実施形態に共通の構成)
図1は、本発明の実施形態に共通の各種装置の配置を示すものである。自動車の車載ネットワーク10には、N個の電子制御装置(ECU)20、プログラム生成装置30、車両制御装置40、表示装置50、データコミュニケーションモジュール(DCM)60、車両動作状態取得装置70、等が接続されている。なお、プログラム生成装置30は、常時車載ネットワーク10に接続されていてもよいし、必要なときのみコネクタとケーブル等を用いて接続されてもよい。また、プログラム生成装置30に代えて、データコミュニケーションモジュール60を介して無線通信を用いて、常時又は必要なときのみプログラム生成装置80が接続されてもよい。
まず、本発明の電子制御装置20において実行されるプログラムの生成方法及び生成されるプログラムについて説明する。
図2は、電子制御装置20において実行されるプログラムの生成方法を示すフローチャートである。電子制御装置20において実行されるプログラムは、図1に記載の、演算装置(CPU)およびメモリを有する専用又は汎用のプログラム生成装置30またはプログラム生成装置80を用いて生成されるが、これに代えて、プログラムが書き込まれる対象である電子制御装置(ECU)20等の内部で生成されてもよい。
まず、電子制御装置20に書き込まれるプログラムの「プログラムコード」内の「関数」、および関数のコール/リターン関係である制御フローを抽出する(S101)。
ここで、本発明の「プログラムコード」とは、機械語やアセンブリ言語で記述されたものの他、高級言語で記述されたものも含む。
また、本発明の「関数」とは、狭義の関数の他、メソッドと呼ばれるものも含む。
図3は、プログラムコードから抽出した関数及び制御フローを、制御フローグラフ(CFG)として示したものである。図3の例では、プログラムコードから関数Aから関数Fが抽出されるとともに、各関数のコール/リターン関係である制御フローが抽出されている。
次いで、関数のコール/リターンが正しく行われるか、すなわち、制御フローが正しく実行されるかをチェックするチェック処理命令をプログラムコード内に「挿入」する(S102)。このチェック処理命令は挿入された箇所の制御フローを全てチェックするものであるが、後述するように、特定の条件下では、挿入された箇所の制御フローのうち特定の制御フローのみをチェックする。
なお、本実施形態では、プログラムを構成する全ての制御フローをチェックできるようにチェック処理命令が挿入されているが、プログラムを構成する制御フローの一部のみをチェックするようにチェック処理命令が挿入されていてもよい。
ここで、本発明の「挿入」とは、プログラムコード内にチェック処理命令が直接記述されている場合の他、ジャンプ命令を介してサブルーチンあるいはモジュールとして設ける場合も含む。
最後に、このようなチェック処理命令が挿入されたプログラムコードを有するプログラムが実装対象の電子制御装置20に書き込まれる(S103)。なお、生成したプログラムは、車載ネットワーク10、又はDCM60を介して、プログラムが実行される電子制御装置(ECU)に書き込まれる。プログラムが書き込まれ、かつ実行される電子制御装置(ECU)には、狭義の電子制御装置20の他、車両制御部40、表示装置50、DCM60、その他車載ネットワーク10に接続された情報処理装置すべてが含まれる。
図4は、チェック処理命令を挿入したプログラムを模式的にCFGとして示すものである。図4に示すとおり、関数AないしFそれぞれから異なる関数への遷移時のフローチェック処理を行うチェック処理命令がプログラムコード内にそれぞれ挿入されている。
つまり、以上の方法で生成されたプログラム(以下、本件プログラムという)は、関数AないしF(本発明の「関数」に相当)、及び関数のコール/リターン関係である制御フロー(本発明の「制御フロー」に相当)をプログラムコード内に含むプログラムであり、制御フローが正しく実行されるかをチェックするチェック処理命令がプログラムコード内に挿入されているプログラムである。
なお、チェック処理命令の例として、あらかじめ把握している正しいコール/リターン先と、実行予定のプログラムにおけるコール/リターン先を比較して、一致すればプログラムを実行し、一致しなければプログラムの実行を停止するという命令が挙げられるが、これに限るものではない。
(実施形態1)
本件プログラムを搭載した電子制御装置20の構成を、図5を用いて説明する。電子制御装置20は、メモリ100及び中央演算装置(CPU)200から構成される。
メモリ100は、本件プログラムを保存している。本実施形態1では、メモリ100はさらに、本件プログラムに加えて、後述する使用頻度情報を規定する実行対象テーブルと、CPU使用率の閾値(本発明の「負荷量閾値」に対応)とを保存しており、これらの情報は電子制御装置の「ユーザ」によって予め設定されている。
ここで、本発明の「負荷量閾値」とは、特定の負荷量である場合の他、条件に応じて所定の演算により求まる負荷量も含む。また、負荷量閾値は単数の場合の他、複数であってもよい。また、本発明の「ユーザ」とは、例えば、電子制御装置を搭載する車両のディーラー又は製造業者だけでなく、電子制御装置の製造業者をも含む。
中央演算装置200の入力部201には、メモリ100から、あるいは、車載ネットワーク10から、本件プログラムを構成する関数の「使用頻度」を「示す」使用頻度情報が入力される。本実施形態1では、入力部201には、使用頻度情報を規定した実行対象テーブル及びCPU使用率の閾値が、これらの情報を保存しているメモリ100から入力される。
ここで、本発明の「使用頻度」とは、当該関数を実行する回数の他、当該関数を実行した合計時間、当該関数の使用率、当該関数の実行回数の変化率等、使用の程度を示すものであれば足りる。また、本発明の「示す」とは、直接的に示すものの他、間接的に示すものも含む。すなわち、直接使用頻度を表現するもののほか、他情報と使用頻度との(相関)関係や、使用頻度に基づいて定義されたものも含む概念である。
本実施形態1では、後述する特定の条件下においてチェック処理命令をスキップして制御フローをチェックしない関数の使用頻度情報は『スキップ可』(本発明の「スキップ可情報」に対応)を示し、特定の条件下においてもチェック処理命令をスキップせずに実行して制御フローをチェックする関数の使用頻度情報は『スキップ不可』(本発明の「スキップ不可情報」に対応)を示す。そして、使用頻度情報が『スキップ可』又は『スキップ不可』のいずれを示すかは、関数の使用頻度が、電子制御装置20が搭載された車両の「外部環境」に関する情報である外部環境情報に依存するか否かによって定められる。ここでは、関数の使用頻度が外部環境情報によって変化する場合には、使用頻度情報は『スキップ可』を示し、関数の使用頻度が外部環境情報によって変化せず一定の場合には、使用頻度情報は『スキップ不可』を示す。
つまり、本実施形態1の使用頻度情報は、外部環境情報と関数の使用頻度との相関を示す情報である。
ここで、本発明の「外部環境」とは、車両の外部の環境を意味し、例えば、車両の周囲を走行する他車両の台数や天候等が挙げられる。
図6は、本実施形態の実行対象テーブルの例である。この例の関数A〜Fは、車車間通信に関するプログラムのプログラムコードから抽出した関数であり、Aはメイン関数、Bは他車両に対して送信する自車両情報の取得に関する関数、Cは他車両に自車両情報を送信する関数、Dは他車両からの情報の受信に関する関数、Eは受信した情報の解析に関する関数、Fは自車両から所定の距離内に存在する他車両との相対位置関係の特定に関する関数である。ここで、関数Fにおける相対位置関係の特定とは、例えば、自車両の進行方向や位置に基づいて、他車両が対向車両、交差車両、又は方車両のいずれであるか、あるいは、他車両が自車両の前方、前側方、後側方、後方のいずれを走行しているかを特定することをいう。
車車間通信を行う車両は、常に他車両から無線通信によって情報を受信している。そして、自車両の周囲を走行する他車両から情報を受信するたびに、関数D、関数E、及び関数Fの処理を繰り返し実行する。すなわち、これらの関数の使用頻度は「外部環境」である他車両の台数によって変化しており、外部環境に依存するものである。そのため、関数D、E、Fの使用頻度情報は『スキップ可』を示している。
これに対し、自車両は、一定時間毎に自車両の位置情報を取得するために関数Bを、自車両情報を他車両に送信するために関数Cを実行する。すなわち、関数B及び関数Cの使用頻度は「外部環境」に依存せず、常に一定である。そのため、関数B、関数Cの使用頻度情報は『スキップ不可』を示している。
なお、メイン関数である関数Aは、プログラム実行時に必ず実行する関数であり、使用頻度は常に一定であるため、関数Aの使用頻度情報は『スキップ不可』を示している。
測定部202は、電子制御装置20に対する「負荷量」として、中央演算装置200の使用率(以下、CPU使用率)を測定する。
ここで、本発明の「負荷量」とは、例えば、CPU使用率、受信パケット数、あるいはユーザによる操作量のように、電子制御装置の負荷を直接的に示すものであってもよく、あるいは、電子制御装置の温度や発熱量のように、電子制御装置の負荷を間接的に示すものであってもよい。
実行対象決定部203は、入力部201に入力された使用頻度情報と、測定部202にて測定したCPU使用率とに「基づいて」、プログラムコードに挿入されたチェック処理命令のうち、チェック処理命令を実行するものを「決定」する。
具体的には、実行対象決定部203は、測定部202にて測定したCPU使用率と、メモリ100に保存されたCPU使用率の閾値とを比較する。比較した結果、測定したCPU使用率がCPU使用率の閾値「より」も低い場合には、実行対象決定部203はプログラムコード内に挿入された全てのチェック処理命令を実行することを決定する。
これに対し、測定したCPU使用率がCPU使用率の閾値「より」も高い場合には、実行対象決定部203は、実行対象テーブルに規定された使用頻度情報が『スキップ不可』を示している関数の制御フローをチェックするチェック処理命令のみを実行することを決定する。
本実施形態1では、図6に示す実行対象テーブルに規定された使用頻度情報が『スキップ不可』を示している関数は関数AないしCであるから、実行対象決定部203は関数AないしCが呼び出し元、あるいは呼び出し先に含まれる制御フローをチェックするチェック処理命令を実行することを決定する。
ここで、本発明の「基づいて」とは、使用頻度情報及び負荷量と用いて実行するチェック処理命令が決定されていればよく、使用頻度情報及び負荷量以外の要素を用いて実行するチェック処理命令を決定する場合も含む。また、本発明の「決定」とは、結果的に実行対象のチェック処理命令が定まっていればよい。
また、本発明の負荷量閾値「より」も高い又は低い、とは、比較対象となる負荷量と同じ値を含む場合及び含まない場合の両方が含まれる。以下、同じ。
演算部204は、本件プログラムを実行するとともに、本件プログラムの実行時に、実行対象決定部203が決定したチェック処理命令を実行する。
図7は、測定したCPU使用率がCPU使用率の閾値よりも高い場合に実行されるプログラムを模式的にCFGとして示している。使用頻度情報が『スキップ不可』を示している関数A、B、Cのコール/リターン関係である制御フローをチェックするため、関数A、B、Cから他の関数への遷移時のフローチェック処理を行っている。なお、図7において、黒丸は実行対象のチェック処理命令、白丸は実行対象外のチェック処理命令である。
検知部205は、本件プログラムを実行した際に実行されるチェック処理命令の出力を監視し、制御フローの異常を検知する。具体的には、あらかじめ把握している正しいコール/リターン先と、実行予定の本件プログラムにおけるコール/リターン先を比較し、これらが一致するか否かで異常を検知する。
処理部206は、検知部205の検知結果に基づき、「所定の処理」を行なう。例えば、検知結果が異常を示した場合、本件プログラムの実行を停止する。あるいは、表示装置50を通じてユーザに通知したり、本件プログラムの実行ログを保存してもよい。本件プログラムを途中で停止することが安全上困難である場合は、例えば安全確保に関する処理(例えば車両の停止等)を行った上で停止又はリセットするなどしてもよい。
ここで、本発明の「所定の処理」とは、予め定められた一定の処理の他、条件等に応じて処理内容が変わる処理も含まれる。
次に、電子制御装置20の動作を、図8を用いて説明する。
S201において、中央演算装置200の演算部204は、メモリ100に保存した本件プログラムを読み出して、本件プログラムの実行を開始する。
S202において、測定部202は、本件プログラムを実行する電子制御装置20のCPU使用率を測定する。そして、S203において、実行対象決定部203は、測定したCPU使用率と、メモリ100に保存されたCPU使用率の閾値とを比較する。
S204において、実行対象決定部203が、測定したCPU使用率がCPU使用率の閾値よりも低いと判断した場合、実行対象決定部203はプログラムコード内に挿入された全てのチェック処理命令を実行対象として決定し、演算部204は実行対象として決定された全てのチェック処理命令を実行する(S205)。
一方、S204において、実行対象決定部203が、測定したCPU使用率がCPU使用率の閾値よりも高いと判断した場合、S206において、実行対象決定部203はCPU使用率がCPU使用率の閾値よりも高くなってからの経過時間が所定の時間内であるかどうかを判断する。ここで、経過時間が所定の時間を過ぎていると判断した場合、実行対象決定部203はプログラムコード内に挿入された全てのチェック処理命令を実行対象として決定し、演算部204は実行対象として決定された全てのチェック処理命令を実行する(S205)。
これに対し、S206において経過時間が所定の時間内であると判断した場合、実行対象決定部203はプログラムコード内に挿入されたチェック処理命令のうち、使用頻度情報が『スキップ不可』を示す関数の制御フローをチェックするチェック処理命令のみを実行対象として決定し、演算部204は実行対象として決定されたチェック処理命令のみを実行する(S207)。
なお、S206においてCPU使用率がCPU使用率の閾値よりも高くなってからの経過時間が所定の時間内であるかどうかを判断する理由は、CPU使用率が高い状態が続いた場合に、チェック処理命令の実行対象が限定された状態が続くことを回避し、セキュリティ性を高めるためである。
S208において、検知部205は、本件プログラムを実行した際に実行されるチェック処理命令の出力を監視し、関数のコール/リターンの異常を検知する。
検知部205が異常を検知した場合(S208)は、S209において、中央演算装置200の処理部206は、本件プログラムの停止等の「所定の処理」を行なう。異常を発見しない場合は、引き続きプログラムの実行を継続する。
プログラムの処理対象が多い外部環境においては、プログラムの処理対象の数に比例して電子制御装置における処理量が増加し、ひいては、CPU使用率等で表される電子制御装置の負荷量が増加する場合がある。また、プログラムの処理対象が多い場合、関数の呼び出し回数が増えることで使用頻度が増大し、チェック処理を実行することによるオーバーヘッドが増加してしまう。
そこで、電子制御装置の負荷量が一定値よりも高くなった場合に、使用頻度が外部環境に依存する関数の制御フローをチェック処理命令の実行対象から除外し、チェック処理命令の実行対象を限定することにより、制御フローに対するセキュリティチェックを行いながら、チェック処理を実行することによるオーバーヘッドの増加を抑制することができる。
(変形例1)
上記実施形態1では、関数の使用頻度が外部環境情報に依存するか否かによって、使用頻度情報は『スキップ不可』又は『スキップ可』のいずれか示した。しかしながら、外部環境情報に対する関数の使用頻度の依存性の有無以外の要素に基づいて、使用頻度情報は『スキップ不可』又は『スキップ可』のいずれかを示してもよい。例えば、使用頻度情報は、外部環境情報に対する関数の実行回数の変化率に基づいて、使用頻度情報は『スキップ不可』又は『スキップ可』のいずれかを示してもよい。
本変形例1では、環境情報に対する関数の実行回数の変化率が「所定の」変化率よりも低い場合には使用頻度情報は『スキップ不可』を示し、関数の実行回数の変化率が所定の変化率よりも高い場合には使用頻度情報は『スキップ可』を示す。
ここで、本発明の「所定の」とは、常に一定の場合の他、条件に応じて一意に定まる場合も含む。
図9は本変形例1の実行対象テーブルの例であり、実施形態1と同じ関数AないしFを抽出している。メイン関数である関数A、自車両情報の取得に関する関数B、及び自車両情報の送信に関する関数Cの使用頻度は外部環境に依存せず、常に一定であるため、外部環境情報に対する関数A、B、Cの実行回数の変化率は低い。したがって、図9に示す実行対象テーブルには、関数A、B、Cの変化率が“低”で示されている。
一方、他車両からの情報の受信に関する関数D、他車両から受信した情報の解析に関する関数Eの使用頻度は、外部環境である他車両の台数の増加に比例して増大するため、外部環境情報に対する関数D、Eの実行回数の変化率は高いと考えられる。したがって、図9に示す実行対象テーブルには、関数D、Eの変化率が“高”で示されている。
また、自車両から所定の距離内に存在する他車両との相対位置関係の特定に関する関数Fの使用頻度は、外部環境である他車両の台数の増加に伴って増大するが、自車両に対して情報を送信する他車両の台数と、自車両から所定の距離内に存在して相対位置関係を特定すべき他車両の台数は必ずしも等しいものではない。したがって、外部環境情報に対する関数Fの実行回数の変化率は、関数AないしCの変化率よりも高く、関数D、Eの変化率よりも低いと考えられるため、図9に示す実行対象テーブルには、関数Fの変化率が“中”で示されている。
そこで、関数の実行回数の変化率が所定の変化率よりも低い関数A、B、Cの使用頻度情報を『スキップ不可』に設定し、関数の実行回数の変化率が所定の変化率よりも高い関数D、E、Fの使用頻度情報を『スキップ可』に設定する。
あるいは、所定の変化率を高めに設定して、関数A、B、Cの実行回数の変化率よりも高く、関数D、Eの実行回数の変化率よりも低い関数Fの使用頻度情報を、関数AないしCと共に『スキップ不可』に設定してもよい。
(変形例2)
上記実施形態1では、実行対象テーブルには、ユーザによって予め設定された使用頻度情報が規定されていた。しかしながら、使用頻度情報は、実際の電子制御装置の使用状況に基づいて更新してもよい。
本変形例では、中央演算装置200は、図5に示す構成に加えて、使用頻度算出部をさらに備える。使用頻度算出部は、演算部204がプログラムを実行する時に、当該プログラムを構成する各関数の使用頻度をリアルタイムで求める。そして、使用頻度算出部が求めたリアルタイムの使用頻度に基づいて、実行対象テーブルに規定された使用頻度情報の内容を更新する。
電子制御装置のCPU使用率が増加して、測定部202にて測定したCPU使用率がCPU使用率の閾値より高くなっても、関数の使用頻度が実際には増加していないことが起こりうる。このような場合、チェック処理命令の実行対象を限定しても、オーバーヘッドを抑制する効果は低い。そこで、プログラムを構成する関数のリアルタイムの使用頻度を求め、実際の使用頻度を使用頻度情報に反映させることにより、各関数の使用頻度情報が『スキップ不可』又は『スキップ可』のいずれを示すかを動的に変化させる。
例えば、図6に示す例では、関数A、B、Cの使用頻度情報は『スキップ不可』に、関数D、E、Fの使用頻度情報は『スキップ可』に設定されている。しかしながら、使用頻度算出部が求めた関数D、E、Fの実際の使用頻度が低い場合には、これらの関数の全て、又は一部の使用頻度情報を『スキップ不可』に設定してもよい。
この変形例では、実際の関数の使用頻度に基づいてチェック処理命令の実行対象を決定することができるため、効率的にオーバーヘッドの増加を抑制することが可能である。
(実施形態2)
実施形態1では、実行対象決定部203は、『スキップ不可』又は『スキップ可』のいずれかを示す使用頻度情報を用いて、チェック処理命令の実行対象を決定した。本実施形態2では、関数の使用頻度の程度を示す使用頻度情報を用いて、実行対象を決定する。なお、実施形態1との共通点の詳しい説明は省略し、相違点を中心に説明する。
本実施形態2のメモリ100には、本件プログラムに加えて、実行対象テーブル、CPU使用率の閾値、及び使用頻度の閾値(本発明の「使用頻度閾値」に対応)が保存されている。そして、実行対象テーブル、CPU使用率の閾値、及び使用頻度の閾値は、入力部201に入力される。
ここで、本発明の「使用頻度閾値」とは、特定の使用頻度である場合の他、条件によって変化する使用頻度も含む。また、使用頻度閾値は単数の場合の他、複数であってもよい。
図10は、実施形態2における使用頻度情報を規定する実行対象テーブルの例を示している。本実施形態では、使用頻度情報は、『スキップ不可』又は『スキップ可』に代わり、プログラムの実行対象が多い外部環境において想定される関数の使用頻度を“高”、“中”、又は“低”で示している。しかしながら、使用頻度情報は、例えば、単位時間当たりの関数の呼び出し回数といった数値によって表されてもよい。
段落0059に述べた通り、関数A、B、Cの使用頻度は外部環境に依存せず、常に一定であるため、関数の使用頻度を示す使用頻度情報は“低”を示している。
一方、外部環境情報に対する関数D、Eの実行回数の変化率は高いため、プログラムの実行対象が多い外部環境においては、関数D、Eの使用頻度は高くなると考えられる。そのため、これらの関数の使用頻度を示す使用頻度情報は“高”を示している。
また、自車両と自車両から所定の距離内に存在する他車両との相対位置関係の特定に関する関数Fの使用頻度は、関数A、B、Cの使用頻度よりも高く、関数D、Eの使用頻度よりも低いと考えられるため、関数の使用頻度を示す使用頻度情報は“中”を示している。
実施形態2の実行対象決定部203は、実施形態1と同様、測定部202にて測定したCPU使用率と、メモリ100に保存されたCPU使用率の閾値とを比較する。そして、測定したCPU使用率がCPU使用率の閾値よりも高い場合には、実行対象決定部203は、実行対象テーブルに規定された使用頻度情報に基づいてチェック処理命令の実行対象を決定する。
ここで、実行対象決定部203は、実施形態1とは異なり、メモリ100に保存された使用頻度の閾値と、実行対象テーブルに規定された使用頻度情報に示された関数の使用頻度とを比較する。そして、使用頻度情報に示された関数の使用頻度が使用頻度の閾値よりも低い関数の制御フローをチェックするチェック処理命令を実行対象として決定する。
例えば、メモリ100に、使用頻度の閾値として“低”、あるいは“低”に相当する数値が保存されている場合、実行対象決定部203は、使用頻度情報に示された関数の使用頻度が、使用頻度の閾値“低”よりも低い関数A、B、Cの制御フローをチェックするチェック処理命令のみを実行することを決定する。
本実施形態2によれば、使用頻度情報を『スキップ不可』又は『スキップ可』のいずれかで示すよりも詳細に設定することができるため、チェック処理命令の実行対象をより効率的に決定することができる。
(実施形態3)
実施形態1、2では、電子制御装置20の負荷量が予め設定した負荷量閾値を超えた場合に、使用頻度情報が『スキップ不可』を示す関数、あるいは、使用頻度情報に示された使用頻度が所定の値よりも低い関数の制御フローをチェックするチェック処理命令を実行対象として決定した。
これに対して、本実施形態3では、電子制御装置の負荷量に応じて、チェック処理命令の実行対象を変化させる構成を説明する。
図11、図12は、CPU使用率と、CPU使用率に対応する関数の使用頻度を示している。この例では、2つのCPU使用率閾値、すなわち、第1のCPU使用率閾値(60%)、第2のCPU使用率閾値(80%)が予め設定されており、第1のCPU使用率閾値以下の時、第1のCPU使用率閾値以上で第2のCPU使用率閾値以下の時、及び第2のCPU使用率閾値以上の時、にチェック処理命令を実行する制御フローの関数がそれぞれ規定されている。
例えば、測定部202にて測定したCPU使用率が第1のCPU使用率閾値である60%以下の場合には、実行対象決定部203は、使用頻度情報にかかわらず、プログラムコード内に挿入された全てのチェック処理命令を実行対象として決定する。この時に実行されるプログラムの構成を図13(A)に示す。
これに対し、CPU使用率が第1のCPU使用率閾値(60%)以上、第2のCPU使用率閾値(80%)以下の場合には、実行対象決定部203は、図13(B)に示すように、使用頻度情報が“中”又は“低”である関数、例えば、図10に示す関数A、B、C、Fを呼び出し元、あるいは呼び出し先に含む制御フローをチェックするチェック処理命令を実行対象として決定する。
また、CPU使用率が第2のCPU使用率閾値(80%)以上の場合には、実行対象決定部203は、図13(C)に示すように、使用頻度情報が“低”である関数、例えば、図10に示す関数A、B、Cを呼び出し元、あるいは呼び出し先に含む制御フローをチェックするチェック処理命令のみを実行対象として決定する。
すなわち、本実施形態3では、実行対象決定部203は、CPU使用率が第1のCPU使用率閾値以上になると、使用頻度情報に示された使用頻度が“高”の関数の制御フローをチェックするチェック処理命令を実行対象から外し、CPU使用率がさらに増加して第2のCPU使用率閾値以上になると、使用頻度情報に示された使用頻度が“高”の関数に加えて、“中”の関数の制御フローをチェックするチェック処理命令を実行対象から外しており、CPU使用率が増加するほど、使用頻度情報に示された使用頻度が大きい関数の制御フローをチェックするチェック処理命令から順に、実行対象から外している。
なお、図11、図12は、2つのCPU使用率閾値を設定して、チェック処理命令の実行対象を2段階で限定する構成であるが、図14に示すように、測定部202にて測定したCPU使用率が増加するのに伴って、実行対象決定部203は、使用頻度が高い関数の制御フローをチェックするチェック処理命令から実行対象を徐々に限定してもよい。
本実施形態によると、CPU使用率の増加、すなわち、ECUの負荷量の増加に伴ってチェック対象関数を限定することができるため、効率的にオーバーヘッドの増加を抑制することが可能となる。
(総括)
以上、本発明の各実施形態における電子制御装置の特徴について説明した。
なお、各実施形態の特徴を2以上含むようにしてもよい。つまり、各実施形態は、実施形態同士組み合わせることが可能である。例えば、実施形態1乃至3を組み合わせて、実行するチェック処理命令を決定してもよい。
また、各実施形態の使用頻度情報は、外部環境情報と関数の使用頻度との相関を示す情報として説明したが、使用頻度情報は関数の使用頻度を示すものであればよく、外部環境情報に依存するものでなくともよい。例えば、プログラムを構成する関数にループ関数が含まれる場合には、使用頻度情報はループする回数を使用頻度として示すものであってもよい。
また、各実施形態に開示の構成、方法は、その要素を本発明に適宜組み合わせることができる。つまり、各実施形態に開示の要素同士が必須の組み合わせという訳ではなく、各要素を適宜発明として組み込むことが可能である。
本発明は、主として自動車の電子制御装置に用いられるものであるが、自動車以外の車両、例えば、二輪車、電動アシスト自転車の他、船舶、航空機などにも用いることができる。さらに、本発明はこれらの車載用途に限られるものではない。
20 電子制御装置(ECU)、100 メモリ、200 中央演算装置、201 入力部、202 測定部、203 実行対象決定部、204 演算部、205 検知部、206 処理部

Claims (9)

  1. 電子制御装置(20)であって、
    関数と前記関数のコール/リターン関係である制御フローとを有するとともに、前記制御フローが正しく実行されるかをチェックするチェック処理命令がプログラムコード内に挿入されているプログラム、を保存するメモリ(100)と、
    前記関数の使用頻度を示す使用頻度情報が入力される入力部(201)と、
    前記電子制御装置の負荷量を測定する測定部(202)と、
    前記使用頻度情報及び前記負荷量に基づいて、実行する前記チェック処理命令を決定する実行対象決定部(203)と、
    前記プログラムの実行時に、決定された前記チェック処理命令を実行する演算部(204)と、
    を有する電子制御装置。
  2. 前記チェック処理命令の出力を監視し、前記関数のコール/リターンの異常を検知する検知部(205)と、
    前記検知部の検知結果に基づき、所定の処理を行う処理部(206)と、
    を更に備える、請求項1記載の電子制御装置。
  3. 当該電子制御装置は車両に搭載されており、
    前記使用頻度情報は、前記車両の外部環境に関する情報である外部環境情報と前記関数の前記使用頻度との相関を示す情報である、
    請求項1記載の電子制御装置。
  4. 前記メモリはさらに負荷量閾値を保存し、
    前記使用頻度情報は、前記関数の前記使用頻度が前記外部環境情報によって変化しない場合には前記チェック処理命令をスキップしないことを示すスキップ不可情報であり、前記使用頻度が前記外部環境情報によって変化する場合には前記チェック処理命令をスキップすることを示すスキップ可情報であり、
    前記実行対象決定部は、前記負荷量と前記負荷量閾値とを比較し、前記負荷量が前記負荷量閾値よりも高い場合に、挿入された前記チェック処理命令のうち、前記使用頻度情報が前記スキップ不可情報である前記関数の前記制御フローをチェックするチェック処理命令のみを実行することを決定する、
    請求項3記載の電子制御装置。
  5. 前記メモリはさらに負荷量閾値を保存し、
    前記使用頻度情報は、前記関数の前記使用頻度が所定の使用頻度よりも低い場合には前記チェック処理命令をスキップしないことを示すスキップ不可情報であり、前記所定の使用頻度よりも高い場合には前記チェック処理命令をスキップすることを示すスキップ可情報であり、
    前記実行対象決定部は、前記負荷量と前記負荷量閾値とを比較し、前記負荷量が前記負荷量閾値よりも高い場合に、挿入された前記チェック処理命令のうち、前記使用頻度情報が前記スキップ不可情報である前記関数の前記制御フローをチェックするチェック処理命令のみを実行することを決定する、
    請求項1又は3記載の電子制御装置。
  6. 前記メモリはさらに、負荷量閾値と使用頻度閾値とを保存し、
    前記実行対象決定部は、前記負荷量と前記負荷量閾値とを比較し、前記負荷量が前記負荷量閾値よりも高い場合に、挿入された前記チェック処理命令のうち、前記使用頻度情報に示された前記使用頻度が前記使用頻度閾値よりも低い前記関数の前記制御フローをチェックするチェック処理命令のみを実行することを決定する、
    請求項1又は3記載の電子制御装置。
  7. 前記実行対象決定部は、前記負荷量が増加するほど、前記使用頻度情報に示された前記使用頻度が高い前記関数の前記制御フローをチェックするチェック処理命令から順に実行対象から外すことを決定する、
    請求項1又は3記載の電子制御装置。
  8. 前記使用頻度情報は、当該電子制御装置のユーザによって予め設定される、
    請求項1記載の電子制御装置。
  9. 前記プログラムの実行時に前記関数の前記使用頻度を求める使用頻度算出部をさらに備え、
    前記使用頻度情報は、前記使用頻度算出部にて求めた前記使用頻度に基づいて更新される、
    請求項1記載の電子制御装置。


JP2017130213A 2017-07-03 2017-07-03 電子制御装置 Active JP6885226B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017130213A JP6885226B2 (ja) 2017-07-03 2017-07-03 電子制御装置
US16/016,746 US10769273B2 (en) 2017-07-03 2018-06-25 Electronic control unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017130213A JP6885226B2 (ja) 2017-07-03 2017-07-03 電子制御装置

Publications (2)

Publication Number Publication Date
JP2019012498A true JP2019012498A (ja) 2019-01-24
JP6885226B2 JP6885226B2 (ja) 2021-06-09

Family

ID=64734937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017130213A Active JP6885226B2 (ja) 2017-07-03 2017-07-03 電子制御装置

Country Status (2)

Country Link
US (1) US10769273B2 (ja)
JP (1) JP6885226B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020261365A1 (ja) * 2019-06-25 2020-12-30 日本電気株式会社 半導体装置、制御フロー検査方法、非一時的なコンピュータ可読媒体及び電子機器
JP2021051745A (ja) * 2019-09-23 2021-04-01 株式会社デンソー コンピュータ装置およびメモリ管理方法
CN114995862A (zh) * 2022-08-03 2022-09-02 深圳市星卡软件技术开发有限公司 诊断模块的调用方法、装置和系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847207B2 (en) * 2019-03-04 2023-12-19 Microsoft Technology Licensing, Llc Security-adaptive code execution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002082926A (ja) * 2000-09-06 2002-03-22 Nippon Telegr & Teleph Corp <Ntt> 分散アプリケーション試験・運用管理システム
JP2008084275A (ja) * 2006-09-29 2008-04-10 Fujitsu Ltd ソフトウェアの改ざん監視装置および改ざん監視方法
WO2008056700A1 (fr) * 2006-11-09 2008-05-15 Panasonic Corporation Système de détection de falsification, procédé de détection de falsification, programme de détection de falsification, support d'enregistrement, circuit intégré, dispositif de génération d'informations d'authentification et dispositif de détection de fals
JP2016115033A (ja) * 2014-12-12 2016-06-23 富士通株式会社 命令実行制御装置、命令実行制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006106939A (ja) 2004-10-01 2006-04-20 Hitachi Ltd 侵入検知方法及び侵入検知装置並びにプログラム
US7577992B2 (en) 2005-01-14 2009-08-18 Microsoft Corporation Software security based on control flow integrity
JP4849606B2 (ja) 2006-04-28 2012-01-11 株式会社日立製作所 制御フロー誤り検出方法、データ処理装置、及びコンパイラ
JP5043560B2 (ja) * 2007-08-24 2012-10-10 パナソニック株式会社 プログラム実行制御装置
EP2256659A1 (en) 2009-05-27 2010-12-01 NTT DoCoMo, Inc. Method and apparatus for preventing modification of a program execution flow
JP2011081501A (ja) 2009-10-05 2011-04-21 Hitachi Ltd オペレーティングシステムプログラム、及びこれが搭載されているコンピュータ
JP5374348B2 (ja) 2009-12-10 2013-12-25 株式会社豊田中央研究所 ソフトウェア検査装置及びプログラム
US9361102B2 (en) 2014-06-09 2016-06-07 Lehigh University Methods for enforcing control flow of a computer program
US10153977B2 (en) * 2016-05-12 2018-12-11 Cisco Technology, Inc. Adapting control plane policing parameters dynamically
US10896253B2 (en) * 2017-02-06 2021-01-19 Huawei Technologies Co., Ltd. Processor trace-based enforcement of control flow integrity of a computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002082926A (ja) * 2000-09-06 2002-03-22 Nippon Telegr & Teleph Corp <Ntt> 分散アプリケーション試験・運用管理システム
JP2008084275A (ja) * 2006-09-29 2008-04-10 Fujitsu Ltd ソフトウェアの改ざん監視装置および改ざん監視方法
WO2008056700A1 (fr) * 2006-11-09 2008-05-15 Panasonic Corporation Système de détection de falsification, procédé de détection de falsification, programme de détection de falsification, support d'enregistrement, circuit intégré, dispositif de génération d'informations d'authentification et dispositif de détection de fals
JP2016115033A (ja) * 2014-12-12 2016-06-23 富士通株式会社 命令実行制御装置、命令実行制御方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020261365A1 (ja) * 2019-06-25 2020-12-30 日本電気株式会社 半導体装置、制御フロー検査方法、非一時的なコンピュータ可読媒体及び電子機器
JPWO2020261365A1 (ja) * 2019-06-25 2020-12-30
JP7338686B2 (ja) 2019-06-25 2023-09-05 日本電気株式会社 半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器
US11868467B2 (en) 2019-06-25 2024-01-09 Nec Corporation Semiconductor device, control flow inspection method, non-transitory computer readable medium, and electronic device
JP2021051745A (ja) * 2019-09-23 2021-04-01 株式会社デンソー コンピュータ装置およびメモリ管理方法
CN114995862A (zh) * 2022-08-03 2022-09-02 深圳市星卡软件技术开发有限公司 诊断模块的调用方法、装置和系统

Also Published As

Publication number Publication date
JP6885226B2 (ja) 2021-06-09
US10769273B2 (en) 2020-09-08
US20190005232A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
US8528095B2 (en) Injection context based static analysis of computer software applications
JP6885226B2 (ja) 電子制御装置
US8484732B1 (en) Protecting computers against virtual machine exploits
EP3037303B1 (en) Vehicle control device
US9298911B2 (en) Method, apparatus, system, and computer readable medium for providing apparatus security
CN109643346B (zh) 控制流完整性
EP3547190B1 (en) Attack detection device, attack detection method, and attack detection program
US8904492B2 (en) Method of controlling information processing system, computer-readable recording medium storing program for controlling apparatus
JP7147947B2 (ja) 電子制御装置及びプログラム
US20140337980A1 (en) Method, device and terminal for scanning virus
CN104932972A (zh) 一种反动态调试应用程序的方法及装置
CN107741910B (zh) 应用程序安装性能测试方法、装置、计算设备及存储介质
CN101599113A (zh) 驱动型恶意软件防御方法和装置
US10242083B2 (en) Prevention of circular event publication in publish/subscribe model using path vector
US8407175B2 (en) Method, apparatus and product for SAT solving using templates clauses
CN107291617B (zh) 一种基于隐式污点传播的漏洞分析方法
JP6913869B2 (ja) 監視装置、監視システムおよびコンピュータプログラム
US8819635B2 (en) Confidence-based static analysis
KR101632152B1 (ko) 모바일 플랫폼 동적 분석 방지 장치 및 그 방법
KR101310070B1 (ko) 프로그램간의 충돌을 예방하는 방법 및 그 방법이 기록된 기록매체
CN114629694B (zh) 一种分布式拒绝服务DDoS的检测方法及相关装置
US11847203B2 (en) Method, system and device for managing an execution of a program relating to part or all of a first application
US20150026812A1 (en) Method and device for detecting virus of installation package
CN112311616B (zh) 数据通信频率统计方法、装置及存储介质
JP6996215B2 (ja) プログラム生成方法および電子制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20210119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210331

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: 20210413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210426

R151 Written notification of patent or utility model registration

Ref document number: 6885226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151