JP7338686B2 - 半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器 - Google Patents

半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器 Download PDF

Info

Publication number
JP7338686B2
JP7338686B2 JP2021528686A JP2021528686A JP7338686B2 JP 7338686 B2 JP7338686 B2 JP 7338686B2 JP 2021528686 A JP2021528686 A JP 2021528686A JP 2021528686 A JP2021528686 A JP 2021528686A JP 7338686 B2 JP7338686 B2 JP 7338686B2
Authority
JP
Japan
Prior art keywords
determination
avoidance
control flow
code block
target code
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
JP2021528686A
Other languages
English (en)
Other versions
JPWO2020261365A5 (ja
JPWO2020261365A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2020261365A1 publication Critical patent/JPWO2020261365A1/ja
Publication of JPWO2020261365A5 publication Critical patent/JPWO2020261365A5/ja
Application granted granted Critical
Publication of JP7338686B2 publication Critical patent/JP7338686B2/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
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/562Static detection
    • G06F21/565Static detection by checking file integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示は、半導体装置、制御フロー検査方法及び制御フロー検査プログラムが格納された非一時的なコンピュータ可読媒体に関する。
特許文献1には、プロセッサのセキュリティを監視する回路に関する技術が開示されている。特許文献1にかかるプロセッサは、プロセッサによる実行対象のプログラムの実行内容データから1以上の署名を決定し、当該署名と既定の署名とを比較することで、セキュリティを強化するものである。また、プログラム実行時のセキュリティを強化する技術として制御フロー整合性(CFI(Control Flow Integrity))の検査がある。
欧州特許出願公開第3373178号明細書
ここで、デバイスのセキュリティを維持するために、プログラム実行中にCFI検査を行うと、通常、詳細な処理が必要となり、オーバーヘッド(正味の実行コスト)が大きい。そのため、制御フロー整合性の検査を行う場合、デバイスのセキュリティを維持しつつ、処理のオーバーヘッドを削減することが困難であるという問題点がある。
本開示は、このような問題点を解決するためになされたものであり、デバイスのセキュリティを維持しつつ、処理のオーバーヘッドを削減するための、半導体装置、制御フロー検査方法及び制御フロー検査プログラムが格納された非一時的なコンピュータ可読媒体を提供することを目的とする。
本開示の第1の態様にかかる半導体装置は、
所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う判定手段と、
前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する検査手段と、
を備える。
本開示の第2の態様にかかる制御フロー検査方法は、
コンピュータが、
所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行い、
前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する。
本開示の第3の態様にかかる制御フロー検査プログラムが格納された非一時的なコンピュータ可読媒体は、
所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う処理と、
前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する処理と、
をコンピュータに実行させる制御フロー検査プログラムが格納されたものである。
上述の態様によれば、デバイスのセキュリティを維持しつつ、処理のオーバーヘッドを削減するための、半導体装置、制御フロー検査方法及び制御フロー検査プログラムが格納された非一時的なコンピュータ可読媒体を提供することができる。
本実施形態1にかかる半導体装置の構成を示すブロック図である。 本実施形態1にかかる制御フロー検査方法の流れを示すフローチャートである。 本実施形態2にかかるデバイスの構成を示すブロック図である。 本実施形態2にかかる制御フローグラフと検査命令の関係を説明するための図である。 本実施形態2にかかる事前処理の流れを示すフローチャートである。 本実施形態2にかかる制御フロー検査方法の流れを示すフローチャートである。 本実施形態2にかかる入力値判定処理の流れを示すフローチャートである。 本実施形態2にかかる回避判定処理の流れを示すフローチャートである。 本実施形態2にかかる制御フロー整合性の検査処理の回避の概念を説明するための図である。 本実施形態3にかかるデバイスの構成を示すブロック図である。 本実施形態3にかかる制御フロー検査方法の流れを示すフローチャートである。 本実施形態3にかかる内部状態変数値判定処理の流れを示すフローチャートである。 本実施形態3にかかる回避判定処理の流れを示すフローチャートである。 本実施形態3にかかる制御フロー整合性の検査処理の回避の概念を説明するための図である。 本実施形態3にかかるデバイスの実施例の構成を示すブロック図である。 本実施形態3にかかる情報処理装置の実施例の構成を示すブロック図である。 本実施形態4にかかるデバイスの構成を示すブロック図である。 本実施形態4にかかる学習処理を含む制御フロー検査方法の流れを示すフローチャートである。
以下では、本開示の実施形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
<実施形態1>
図1は、本実施形態1にかかる半導体装置100の構成を示すブロック図である。半導体装置100は、所定のプログラムの実行を制御するプロセッサ等の制御装置や情報処理装置である。また、半導体装置100は、コンピュータもしくは情報処理装置、又は、IoT(Internet of Thing)機器もしくは組み込み機器等の電子機器に搭載されたものであってもよい。半導体装置100は、判定部110と、検査部120とを備える。
判定部110は、対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う。ここで、対象コードブロックとは、所定のプログラム内の複数のコードブロックのうち実行対象であるコードブロックである。また、判定補助情報とは、判定部110による判定を補助するための情報である。例えば、判定補助情報は、対象コードブロックに対する入力値や対象コードブロックの内部状態を示す変数値等である。但し、判定補助情報はこれらに限定されない。また、回避条件とは、例えば、判定補助情報のデータ内容と所定値との一致度合いや、判定補助情報のデータサイズが所定の範囲内であることといった条件である。また、回避条件の所定値や所定の範囲には、過去の入力値の履歴情報、判定結果等を反映しても良い。検査部120は、回避条件を満たすと判定した場合に、対象コードブロックにおける制御フロー整合性の検査を回避する。
図2は、本実施形態1にかかる制御フロー検査方法の流れを示すフローチャートである。まず、判定部110は、対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う(S11)。回避条件を満たすと判定した場合、検査部120は、対象コードブロックにおける制御フロー整合性の検査を回避する(S12)。つまり、検査部120は、対象コードブロックにおける制御フロー整合性の検査を行わない。一方、回避条件を満たさないと判定した場合、検査部120は、対象コードブロックにおける制御フロー整合性の検査を実行する(S13)。
このように、本実施形態では、対象コードブロックにおける判定補助情報が所定の条件を満たす場合(例えば、前回と同じ値が入力された場合等)には、対象コードブロックを実行したとしても安全性が確保できるとみなす。そのため、安全性が確保できると判定した場合には、処理負荷の無視できない制御フロー整合性の検査処理の実行を回避するものである。つまり、対象コードブロックの制御フロー整合性の検査処理(実行順序の比較やハッシュ値の比較処理等)の実行回数を減少できる。一方、判定補助情報が回避条件を満たさない場合(例えば、通常とは著しく異なる値が入力された場合等)には、セキュリティが懸念されるとみなす。そのため、制御フロー整合性の検査処理を通常通り実行し、セキュリティを維持できる。よって、本実施形態により、デバイスのセキュリティを維持しつつ、処理のオーバーヘッドを削減することができる。
尚、半導体装置100は、図示しない構成としてプロセッサ、メモリ及び他の記憶装置を備えるものである。また、当該他の記憶装置には、本実施形態にかかる(図2を含む)制御フロー検査方法が実装されたコンピュータプログラムが記憶されている。そして、当該プロセッサは、記憶装置からコンピュータプログラムを前記メモリへ読み込み、当該コンピュータプログラムを実行する。これにより、前記プロセッサは、判定部110及び検査部120の機能を実現する。
または、判定部110及び検査部120は、それぞれが専用のハードウェアで実現されていてもよい。また、各装置の各構成要素の一部又は全部は、汎用または専用の回路(circuitry)、プロセッサ等やこれらの組合せによって実現されもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。また、プロセッサとして、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(field-programmable gate array)、ARM(登録商標)アーキテクチャ等を用いることができる。
<実施形態2>
本実施形態2は、上述した実施形態1の具体例である。
図3は、本実施形態2にかかるデバイス200の構成を示すブロック図である。デバイス200は、上述した半導体装置100の一例である。デバイス200は、プログラム実行部210と、入力値判定部220と、制御フロー整合性検査部230と、制御フローグラフ241と、ハッシュ値242と、回避レベル閾値243と、履歴情報記憶部250とを少なくとも備える。
プログラム実行部210は、所定のプログラム内の対象コードブロック211を実行する制御装置である。プログラム実行部210は、例えば、プロセッサコアであるがこれに限定されない。ここで、所定のプログラムは、1以上のモジュールで構成され、各モジュールには1以上のコードブロックが実装されているものとする。そして、各コードブロックは、例えば、関数等の単位のプログラムコードの集合である。また、各コードブロックの一部には、制御フロー整合性の検査命令212が設定されているものとする。検査命令212は、後述する入力値判定部220及び制御フロー整合性検査部230による検査処理を呼び出す命令であり、例えば、関数である。検査命令212は、1のコードブロック内に複数設定されていてもよい。検査命令212は、コードブロック内の冒頭、中盤、末尾等の任意の位置に設定可能であるものとする。また、コードブロック間に検査命令212を設定することも可能であるが、その場合、検査命令212の直前のコードブロックの末尾か、検査命令212の直後のコードブロックの冒頭に設定した場合と同等であるものとする。検査命令212は、プログラムの開発時にソースコード上に実装されても良く、コンパイル後のバイナリに対して挿入されてもよい。尚、検査命令212の引数として対象コードブロック211への入力値が与えられていてもよい。または、対象コードブロック211への入力値は、別途、入力値判定部220から取得されても良い。
入力値判定部220は、上述した判定部110の一例であり、検査命令212からの呼び出しに応じて取得される入力値を判定し、判定結果を制御フロー整合性検査部230へ通知するソフトウェアプロセス又はハードウェア回路である。入力値判定部220は、対象コードブロック211における過去の実行時の入力値との類似度合いを回避条件として判定を行う。これにより、実行時に用いられた実績のある入力値である場合に検査を回避でき、安全性を確保しつつ、検査処理の回数を減少させ、処理のオーバーヘッドをより削減することができる。
ここで、判定補助情報は、対象コードブロックへの入力値を含むものとする。この場合、入力値判定部220は、入力値のデータ内容又はデータサイズの範囲を回避条件として判定を行う。これにより、バッファオーバーフロー等の攻撃の場合には回避条件を満たさず、通常通り検査させることで、当該攻撃を検出し得る。よって、セキュリティを維持し得る。
また、入力値判定部220は、回避条件を満たすと判定した場合、当該回避条件を満たす度合いに応じて回避レベルを設定する。これにより、検査処理の実行をきめ細かく制御できる。
また、入力値判定部220は、対象コードブロックにおける判定補助情報として入力値を取得する。そして、入力値判定部220は、後述する履歴情報と取得した判定補助情報とに基づいて、判定を行う。さらに、入力値判定部220は、後述する制御フロー整合性検査部230による回避結果に応じて、取得した入力値を履歴情報として履歴情報記憶部250に追加する。これにより、実行された実績や回避された実績を加味して精度よく、検査処理の回避の判定を行わせることができる。例えば、入力値が回避条件を満たすと判定され、後述する回避判定処理によって検査処理が回避されるという回避結果になった場合がある。その場合、入力値判定部220は、回避結果と入力値を対応付けた履歴情報として履歴情報記憶部250に追加する。また、入力値が回避条件を満たすと判定されたとしても、後述する回避判定処理により検査処理が回避されないという回避結果となる場合もある。その場合には、入力値判定部220は、回避結果及び検査結果と共に入力値を履歴情報として履歴情報記憶部250に追加するとよい。
制御フローグラフ(CFG(Control Flow Graph))241は、プログラムの制御構造の解析結果をコードブロック間の制御の流れを定義したグラフ情報である。制御フローグラフ241は、デバイス200内のメモリ等の記憶装置に格納され、データベースとして機能するものである。制御フローグラフ241は、各コードブロックのプログラム内の位置及び実行順序が定義され、先に実行されたコードブロックから次に実行されるコードブロックへのリンク、分岐先へのリンク等が定義された情報である。
図4は、本実施形態2にかかる制御フローグラフと検査命令の関係を説明するための図である。モジュール31は、コードブロックの集合であり、例えば、プログラムファイル等である。コードブロック32は、1以上のプログラムコードの集合であり、例えば、関数等である。ハッシュ値検査処理33は、コードブロック内に設定された検査命令の実行により呼び出され、入力値判定部220により回避条件を満たさない、又は、回避判定により回避できないと判定された場合に、実行されることを概念的に示したものである。
図3に戻り説明を続ける。ハッシュ値242は、所定のプログラム内の複数のコードブロックの実行順序の検査に用いる情報である。言い換えると、本実施形態にかかるハッシュ値242は、所定のプログラム内の複数のコードブロックの実行順序を特定するための情報である。例えば、ハッシュ値242は、複数のコードブロックについての所定のプログラム内での実行順序を示す数値情報から所定のハッシュ関数により事前に算出された値である。また、ハッシュ値242は、2以上のコードブロックの制御フローのパスや実行順序の番号の組から、所定のハッシュ関数により算出された値であってもよい。尚、実行順序の検査には、ハッシュ値242の代わりに、実行順序そのものや実行順序の組そのものを用いても良い。
回避レベル閾値243は、複数のコードブロックのそれぞれに予め定義された回避レベルの閾値である。尚、ハッシュ値242及び回避レベル閾値243のそれぞれは、デバイス200内のメモリ等の記憶装置に格納されている。尚、ハッシュ値242は、算出時に用いた実行順序と対応付けられて記憶装置に格納されているものとする。
制御フロー整合性検査部230は、上述した検査部120の一例であり、検査命令に応じた、対象コードブロックのハッシュ値の検査処理が実装されたソフトウェアプロセス又はハードウェア回路である。制御フロー整合性検査部230は、プログラム実行部210で現在実行中の対象コードブロック211又は直後に実行され得るコードブロックについての制御フロー整合性の検査を行う。制御フロー整合性検査部230は、検査で問題なしと判定されれば、当該コードブロックの後続の処理の実行を許可する旨をプログラム実行部210へ返信し、検査で問題ありと判定されれば、当該コードブロックの後続の処理の実行をブロックする旨をプログラム実行部210へ返信する。
ここで、本実施形態にかかる制御フロー整合性検査部230は、回避レベルに応じて検査を回避する。これにより、検査の回避の有無をきめ細かく制御できる。そして、制御フロー整合性検査部230は、入力値判定部220により設定された回避レベルが、対象コードブロックに定義された回避レベル閾値243を満たす場合、検査を回避する。これにより正確に回避の判定を行うことができる。
履歴情報記憶部250は、判定補助情報の履歴情報を記憶する記憶装置である。ここでは、履歴情報記憶部250は、入力値251と、回避結果252とを対応付けて記憶する。また、入力値251及び回避結果252は、対象コードブロックとも対応付けられているものとする。入力値251は、入力値判定部220における判定に用いられた入力値である。回避結果252は、制御フロー整合性検査部230において検査が回避されたか否かを示す情報である。尚、履歴情報記憶部250は、入力値251及び回避結果252に加えて、制御フロー整合性検査部230による検査結果及び対象コードブロックの実行結果をさらに対応付けて記憶してもよい。
図5は、本実施形態2にかかる事前処理の流れを示すフローチャートである。事前処理は、実行予定のプログラムからハッシュ値やCFGを生成し、保存する処理である。そして、事前処理は、デバイス200又は任意の情報処理装置で実現可能である。以下の説明では、任意の情報処理装置で実行するものとする。
まず、情報処理装置は、デバイス200において実行予定のプログラムを解析する(S21)。そして、情報処理装置は、解析結果に基づき当該プログラムの制御フローグラフ(CFG)を生成する(S22)。そして、情報処理装置は、CFGに基づきプログラムの各コードブロックに検査命令を挿入する。例えば、上述した図4のように挿入される。尚、検査命令が解析対象のプログラムに予め実装済みである場合、ステップS23を省略することができる。
続いて、情報処理装置は、CFGに基づき各コードブロックの実行順序のハッシュ値を算出する(S24)。例えば上述したように、情報処理装置は、所定のハッシュ関数に実行順序を与えて、ハッシュ値を算出する。その後、情報処理装置は、算出したハッシュ値を実行順序と対応付けてデバイス200内のメモリに保存する(S25)。また、情報処理装置は、生成したCFGをデバイス200内の記憶装置(不図示)に制御フローグラフ241として保存する。
図6は、本実施形態2にかかる制御フロー検査方法の流れを示すフローチャートである。ここでは、上記事前処理でCFG及びハッシュ値を作成したプログラムを、デバイス200で実行する際に、制御フロー検査処理を行う場合について説明する。
まず、プログラム実行部210は、プログラムの実行を開始する(S301)。例えば、デバイス200内のプロセッサコアが(外部から入力された)実行対象のプログラムをメモリ(不図示)に読み込み、実行する。
次に、プログラム実行部210は、対象コードブロックを実行中に検査命令を実行し、入力値判定部220を呼び出す。入力値判定部220は、検査命令実行による呼び出しを受け付ける(S302)。そして、入力値判定部220は、入力値判定処理を行う(S303)。
図7は、本実施形態2にかかる入力値判定処理の流れを示すフローチャートである。まず、入力値判定部220は、対象コードブロックへの入力値を取得する(S321)。例えば、検査命令の引数に対象コードブロックへの入力値が設定されている場合、入力値判定部220は、検査命令の引数から入力値を取得する。また、検査命令の引数に入力値が設定されていない場合、入力値判定部220は、プログラム実行部210へ問い合わせて、対象コードブロックへの入力値を取得してもよい。
次に、入力値判定部220は、入力値が回避条件を満たすか否かを判定する(S322)。ここで、回避条件には、例えば、入力値のデータ内容が所定値と完全一致することや部分一致すること、部分一致する場合の一致する文字数や一致する文字数の全文字数における割合等が挙げられる。または、回避条件には、例えば、入力値が示す数値が所定範囲内であること等が挙げられる。または、回避条件には、例えば、入力値のデータ長が所定値と一致すること、データ長が所定範囲以内であること、所定範囲より短いこと、所定範囲以上であること、所定範囲より長いこと等が挙げられる。但し、回避条件は、これらに限定されない。また、回避条件は、デバイス200内のメモリ(不図示)等の記憶装置に予め保存されているものとする。また、所定値は、履歴情報記憶部250に記憶された入力値251のうち、対象コードブロックに対応するものを用いても良い。
ステップS322において回避条件を満たすと判定した場合、入力値判定部220は、回避条件を満たす度合いに応じた回避レベルを設定する(S323)。例えば、入力値のデータ内容が所定値と完全一致する場合には、入力値判定部220は、回避レベルを高レベル(例えば「3」)に設定する。また、入力値のデータ内容が80%部分一致する場合には、入力値判定部220は、回避レベルを中レベル(例えば「2」)に設定する。また、入力値のデータ内容が50%部分一致する場合には、入力値判定部220は、回避レベルを低レベル(例えば「1」)に設定する。尚、回避レベルの設定ルールは一例であり、これらに限定されない。また、回避レベルの設定ルールは、デバイス200内のメモリ(不図示)等の記憶装置に予め保存されているものとする。つまり、入力値判定部220は、回避レベルの設定ルールを参照して回避レベルを設定する。また、回避レベルは、3段階である必要はなく、2段階(例えば、二値)以上であればよい。
ステップS322において回避条件を満たさないと判定した場合、入力値判定部220は、回避レベルを「0」に設定する(S324)。尚、回避レベルにnullを設定するか、設定しなくてもよい。
ステップS323又はS324の後、入力値判定部220は、設定した回避レベルを制御フロー整合性検査部230へ出力する(S325)。
図6に戻り説明を続ける。ステップS303の入力値判定処理の後、制御フロー整合性検査部230は、回避判定処理を行う(S304)。
図8は、本実施形態2にかかる回避判定処理の流れを示すフローチャートである。まず、制御フロー整合性検査部230は、入力値判定部220から回避レベルを取得する(S331)。次に、制御フロー整合性検査部230は、取得した回避レベルが0以外か否かを判定する(S332)。取得した回避レベルが0以外である場合、制御フロー整合性検査部230は、回避レベルが1、2又は3のいずれかを判定する(S333)。尚、ステップS332及びS333はまとめて実施しても構わない。
回避レベルが1の場合、制御フロー整合性検査部230は、対象コードブロックの回避頻度に応じた回避フラグを設定する(S334)。ここで、回避頻度とは、対象コードブロックに対応付けられた回避結果252から算出された値、比率であるとよい。また、回避フラグは0又は1の二値であるものとする。例えば、対象コードブロックの回避頻度が所定値以上の場合、制御フロー整合性検査部230は、回避フラグを1に設定する。一方、対象コードブロックの回避頻度が所定値未満の場合、制御フロー整合性検査部230は、回避フラグを0に設定する。
回避レベルが2の場合、制御フロー整合性検査部230は、対象コードブロックの重要度に応じた回避フラグを設定する(S335)。ここで、重要度は、コードブロックのセキュリティ上の重要性を示す情報である。対象コードブロックの重要度が所定値未満の場合、制御フロー整合性検査部230は、回避フラグを1に設定する。一方、対象コードブロックの重要度が所定値以上の場合、制御フロー整合性検査部230は、回避フラグを0に設定する。つまり、より重要なコードブロックの検査処理は極力回避しないことで、セキュリティを維持できる。
または、コードブロックの実行順序の優先度(処理時間の制約が高い等)が予め設定されている場合、制御フロー整合性検査部230は、優先度に応じた回避フラグを設定してもよい。例えば、優先度が所定値以上の場合、制御フロー整合性検査部230は、回避フラグを1に設定する。一方、優先度が所定値未満の場合、制御フロー整合性検査部230は、回避フラグを0に設定する。つまり、優先度がより高いコードブロックは、検査を回避することで、処理時間の制約を満たすように努めることができる。
尚、上述した対象コードブロックの重要度又は優先度には、対象コードブロックごとに対応付けられた回避レベル閾値243を用いてもよい。また、回避頻度に基づいて回避レベル閾値243を更新してもよい。
回避レベルが3の場合、制御フロー整合性検査部230は、回避フラグを1に設定する(S336)。
ステップS332において取得した回避レベルが0である場合、制御フロー整合性検査部230は、回避フラグを0に設定する(S337)。
尚、回避レベルの上述した判定条件は一例であり、これらに限定されない。また、回避レベルの判定条件は、デバイス200内のメモリ(不図示)等の記憶装置に予め保存されているものとする。つまり、制御フロー整合性検査部230は、回避レベルの判定条件を参照して回避フラグを設定する。
図6に戻り説明を続ける。制御フロー整合性検査部230は、回避フラグが1であるか否かを判定する(S305)。回避フラグが1以外の場合、制御フロー整合性検査部230は、ハッシュ値取得処理を行う(S306)。例えば、制御フロー整合性検査部230は、プログラム実行部210から対象コードブロックの現在の実行順序を取得し、実行順序を用いてハッシュ値を算出する。ここで、ハッシュ値の算出の仕方、用いるハッシュ関数等は、事前処理(ステップS24)と同様であるものとする。また、ハッシュ値の算出と独立して、制御フロー整合性検査部230は、現在の実行順序に対応付けられたハッシュ値242を取得する。
そして、制御フロー整合性検査部230は、算出したハッシュ値と取得したハッシュ値とが一致するか否かを判定する(S307)。ハッシュ値が一致すると判定した場合、制御フロー整合性検査部230は、対象コードブロックの実行を許可する旨をプログラム実行部210へ出力する。そして、プログラム実行部210は、対象コードブロックを実行する(S308)。そして、入力値判定部220は、取得した入力値251及び制御フロー整合性検査部230における回避結果252を履歴情報記憶部250へ格納する。つまり、入力値判定部220は、履歴を追加する(S309)。さらに、入力値判定部220は、入力値251及び回避結果252と共に、検査結果及び対象コードブロックの実行結果を対応付けて履歴情報として履歴情報記憶部250へ格納してもよい。さらに、入力値判定部220の代わりにプログラム実行部210又は入力値判定部220が、履歴情報を履歴情報記憶部250へ格納してもよい。
尚、制御フロー整合性の検査には、ハッシュ値242の代わりに、実行順序そのものや実行順序の組そのものを用いても良い。具体的には、対象コードブロックの現在の実行順序と、あらかじめ記録しておいた実行順序を列挙したパターンと比較し、現在の実行順序がそのパターンの中にあれば、正常とみなしてプログラムの実行を許可する。
その後、プログラム実行部210は、次の対象コードブロックが存在するか否かを判定する(S310)。存在する場合、プログラム実行部210は、検査命令を実行した際に、再び、入力値判定部220を呼び出し、ステップS302へ進み、以降を繰り返し実行する。ステップS310で、次の対象コードブロックが存在しないと判定した場合、プログラムの実行を終了する。
一方、ステップS307でハッシュ値が一致しないと判定した場合、制御フロー整合性検査部230は、対象コードブロックの実行を許可しない旨(エラー通知)をプログラム実行部210へ出力する(S311)。そして、プログラムの実行を終了する。
尚、本実施形態では、入力値判定処理にて回避フラグを設定することで、ステップS304の回避判定処理を省略してもよい。
図9は、本実施形態2にかかる制御フロー整合性の検査処理の回避の概念を説明するための図である。図9では、各コードブロックにおける検査命令の呼び出しに対して、回避331、332、333、334及び335の箇所でハッシュ値の検査処理が回避されたことを概念的に示すものである。尚、回避される箇所や数がこれらに限定されないことはもちろんである。
このように、本実施形態により対象コードブロックへの入力値を判定することで、例えば、バッファオーバーフローなどの場合の検査を漏らさず、一方で、過去の入力値との類似度合いが高い場合には、検査を回避することで処理速度を向上できる。特に、各コードブロックにおける入力値とそれに関連する情報を含む履歴情報を用いることで、回避条件を満たすか否かの判定精度を向上できる。さらに、入力値判定処理で回避レベルを設定した後に、回避判定処理で(回避フラグにより)最終的な回避有無を判定することで、きめ細かく検査の回避を制御できる。これらによっても、デバイスのセキュリティを維持しつつ、処理のオーバーヘッドを削減することができる。
<実施形態3>
本実施形態3は、上述した実施形態1の変形例である。本実施形態3にかかる判定補助情報は、対象コードブロックの実行時の内部状態変数値をさらに含む。そして、判定手段は、内部状態変数値の範囲を回避条件としてさらに加味して判定を行うものである。これにより、回避条件を満たすか否かの判定精度をより向上できる。その理由は、対象コードブロックが繰り返し実行される場合に、入力値が類似したとしても、実行に伴い内部状態変数値が変化し、内部状態変数値によっては検査を要する場合があり得るためである。
図10は、本実施形態3にかかるデバイス200aの構成を示すブロック図である。デバイス200aは、上述したデバイス200に対して、制御フロー整合性検査部230が制御フロー整合性検査部230aに置き換わり、内部状態変数値判定部260及び内部状態変数値253が追加されたものである。それ以外の構成には同一の符号を付し、適宜説明を省略する。
内部状態変数値判定部260は、上述した入力値判定部220の一部を改良したものであり、検査命令212からの呼び出しに応じて取得される内部状態変数値を判定し、判定結果を制御フロー整合性検査部230aへ通知するソフトウェアプロセス又はハードウェア回路である。特に、内部状態変数値判定部260は、内部状態変数値の範囲を回避条件として加味して判定を行う。
内部状態変数値253は、対象コードブロックの内部状態を保持するための変数値であり、履歴情報に含めて履歴情報記憶部250に記憶される。
制御フロー整合性検査部230aは、入力値判定部220及び内部状態変数値判定部260のそれぞれにおける判定結果として、各回避レベルを取得する。制御フロー整合性検査部230aは、双方の回避レベルのいずれか一方が0(又はnull)である場合、検査処理を行う。制御フロー整合性検査部230aは、両方の回避レベルが共に0以外の場合、より低い回避レベルに応じた回避判定処理を行う。
図11は、本実施形態3にかかる制御フロー検査方法の流れを示すフローチャートである。以下では、図6と同等の構成については説明を省略する。また、図5の事前処理が実施済みであることも実施形態2と同様である。
ステップS302の後、ステップS303と共に、内部状態変数値判定部260は、内部状態変数値判定処理を行う(S312)。
図12は、本実施形態3にかかる内部状態変数値判定処理の流れを示すフローチャートである。まず、内部状態変数値判定部260は、対象コードブロックの実行時の内部状態変数値を取得する(S321a)。例えば、検査命令の引数に内部状態変数値が設定されている場合、内部状態変数値判定部260は、検査命令の引数から内部状態変数値を取得する。また、検査命令の引数に内部状態変数値が設定されていない場合、内部状態変数値判定部260は、プログラム実行部210へ問い合わせて、又は、履歴情報記憶部250から内部状態変数値253を取得してもよい。
次に、内部状態変数値判定部260は、内部状態変数値が回避条件を満たすか否かを判定する(S322a)。ここで、回避条件については、ステップS322と同等である。
ステップS322aの判定結果に応じてステップS323又はS324により内部状態変数値における回避レベルが設定され、制御フロー整合性検査部230aへ出力される(S325)。
図11に戻り説明を続ける。ステップS303及びS312の後、制御フロー整合性検査部230aは、回避判定処理を行う(S304a)。
図13は、本実施形態3にかかる回避判定処理の流れを示すフローチャートである。まず、制御フロー整合性検査部230aは、入力値判定部220及び内部状態変数値判定部260のそれぞれから回避レベルを取得する(S331a)。例えば、制御フロー整合性検査部230aは、入力値判定部220から回避レベルAを、内部状態変数値判定部260から回避レベルBを取得するものとする。
次に、制御フロー整合性検査部230aは、取得した回避レベルが共に0以外か否かを判定する(S332a)。回避レベルA及びBが共に1~3であれば、ステップS333aへ進む。一方、回避レベルAが1~3であっても回避レベルBが0の場合、回避レベルBが1~3であっても回避レベルAが0の場合、回避レベルA及びBが共に0の場合、ステップS337へ進む。
回避レベルA及びBが共に1~3の場合、制御フロー整合性検査部230aは、回避レベルA及びBのうちレベルがより低い方の回避レベルが1、2又は3のいずれかを判定する(S333a)。もし、回避レベルA及びBが同じであれば、いずれか一方を判定すればよい。以降は、図8と同様である。
図11に戻り説明を続ける。ステップS305からS308、S310及びS311は、図8と同様である。ステップS308の後、そして、入力値判定部220は、取得した入力値251及び制御フロー整合性検査部230における回避結果252に加えて、取得した内部状態変数値253を履歴情報記憶部250へ格納する。つまり、入力値判定部220は、履歴を追加する(S309a)。これにより、当該対象ブロックを次回、回避条件を判定する際に、内部状態変数値判定部260は、履歴情報記憶部250から内部状態変数値253を取得でき、処理時間をより短縮できる。
その他、本実施形態3では、上述した実施形態2と同様の変形が可能である。
図14は、本実施形態3にかかる制御フロー整合性の検査処理の回避の概念を説明するための図である。コードブロック321、322及び323は、それぞれ入力値だけでなく、内部状態変数値が共通するものとする。その場合、コードブロック321においてはハッシュ値検査処理330が実行されるが、後続のコードブロック322及び323においては、回避されることを示す。また、他の箇所では、入力値又は内部状態変数値が回避条件を満たさないため、検査が実行されることを示す。尚、回避される箇所や数がこれらに限定されないことはもちろんである。
図15は、本実施形態3にかかるデバイス200aの実施例の構成を示すブロック図である。デバイス400は、デバイス200aの具体例であり、例えば、TEE(Trusted Execution Environment)を適用したものである。デバイス400は、非セキュア領域であるnormal world410と、セキュア領域であるsecure world420と、を備える。normal world410は、プログラム実行部210としてプロセッサコア411を備える。プロセッサコア411は、対象コードブロック211を実行するものとする。
secure world420は、上述した入力値判定部220、内部状態変数値判定部260、履歴情報記憶部250、制御フロー整合性検査部230a、制御フローグラフ241、ハッシュ値242及び回避レベル閾値243を備える。但し、secure world420は、少なくとも入力値判定部220、内部状態変数値判定部260及び制御フロー整合性検査部230aを備えるものであればよい。入力値判定部220及び内部状態変数値判定部260は、プロセッサコア411により対象コードブロックに設定された制御フロー整合性の検査を呼び出す検査命令の実行に応じて、検査の回避条件を満たすか否かの判定を行う。secure world420は、例えば、ARM(登録商標)アーキテクチャにおけるTrustedZoneである。
図16は、本実施形態3にかかる情報処理装置500の実施例の構成を示すブロック図である。情報処理装置500は、記憶装置510と、制御部520と、メモリ530と、IF(InterFace)部540とを備える。記憶装置510は、ハードディスク、フラッシュメモリ等の不揮発性記憶装置である。記憶装置510は、制御フロー検査プログラム511と、制御フローグラフ512と、ハッシュ値513と、回避レベル閾値514と、実行対象プログラム515と、履歴情報516とを記憶する。制御フロー検査プログラム511は、本実施形態にかかる制御フロー検査方法の処理が実装されたコンピュータプログラムである。制御フローグラフ512、ハッシュ値513及び回避レベル閾値514のそれぞれは、上述した制御フローグラフ241、ハッシュ値242及び回避レベル閾値243に対応する。実行対象プログラム515は、所定のプログラムに対応し、複数のコードブロックが含まれる。履歴情報516は、上述した履歴情報記憶部250に記憶された履歴情報に対応する。
メモリ530は、制御部520の動作時に一時的に情報を保持するための記憶領域である。IF部540は、情報処理装置500の外部との入出力を行うインタフェースである。例えば、IF部540は、外部からの入力データを制御部520へ出力し、制御部520から受け付けたデータを外部へ出力する。
制御部520は、情報処理装置500の各構成を制御するプロセッサつまり制御装置である。例えば、制御部520は、1以上のプロセッサコアであってもよい。制御部520は、記憶装置510から制御フロー検査プログラム511をメモリ530へ読み込み、制御フロー検査プログラム511を実行する。また、制御部520は、記憶装置510から制御フローグラフ512、ハッシュ値513、回避レベル閾値514及び履歴情報516を適宜、メモリ530へ読み込む。また、制御部520は、記憶装置510から実行対象プログラム515をメモリ530へ読み込み、実行する。これらにより、制御部520は、プログラム実行部210、入力値判定部220、制御フロー整合性検査部230a、制御フローグラフ241、ハッシュ値242、回避レベル閾値243、履歴情報記憶部250、内部状態変数値判定部260の機能を実現する。尚、制御部520は、好適には、TEE(Trusted Execution Environment)を備えたCPUであり、その場合、本実施形態にかかる制御フロー検査プログラム511は、TEEを備えたCPU上で実行されるものといえる。
<実施形態4>
本実施形態4は、上述した実施形態1から3の変形例である。実施形態4では、デバイスの各種ログを用いて回避条件の判定モデルを機械学習し、判定精度を向上させるものである。
図17は、本実施形態4にかかるデバイス200bの構成を示すブロック図である。デバイス200bは、上述したデバイス200aに対して、入力値判定部220及び内部状態変数値判定部260が入力値判定部220b及び内部状態変数値判定部260bに置き換わり、学習部270及び判定モデル271並びに検査結果254及び実行結果255が追加されたものである。尚、デバイス200bは、実施形態3の変形例であるが、実施形態1又は2を変形しても構わない。
検査結果254は、制御フロー整合性検査部230aによる対象コードブロックの検査結果であり、履歴情報記憶部250に記憶されている。実行結果255は、検査で認められた対象コードブロックの実行結果であり、履歴情報記憶部250に記憶されている。
判定モデル271は、入力値又は内部状態変数値を入力として、設定されたパラメータを用いて所定の演算を行い、演算結果を回避レベル又は回避フラグとして出力する処理が実装されたプログラムモジュールやモデル式である。つまり、判定モデル271は、入力値用と内部状態変数値用の2つのモデルであってもよい。または、判定モデル271は、入力値及び内部状態変数値の両方を入力として、設定されたパラメータを用いて所定の演算を行い、演算結果を回避レベル又は回避フラグとして出力するものであってもよい。例えば、判定モデル271は、入力値及び内部状態変数値の各データを入力データの要素とし、各入力データに所定のパラメータ(重み付け係数)を用いて回避条件を満たすか否かを判定し、満たす度合いに応じて回避レベルを設定する。尚、判定モデル271は、ニューラルネットワーク、サポートベクターマシン等で表現されたものであればよい。
学習部270は、履歴情報記憶部250に記憶された履歴情報の少なくとも一部を学習用データとして判定モデル271を学習する。例えば、学習部270は学習用データを用いて回避条件や回避レベルの設定ルール等の機械学習を行い、判定モデル271のパラメータを更新する。これにより、判定モデル271をリアルタイムに最新状態に更新できる。よって、よりセキュリティを維持できる。
入力値判定部220b及び内部状態変数値判定部260bは、履歴情報を用いて回避条件が学習された判定モデル271を用いて、判定を行う。尚、入力値判定部220b又は内部状態変数値判定部260bのいずれか一方が判定モデル271を用い、他方は、他の実施形態と同様のものを用いても良い。または、判定モデル271が入力値及び内部状態変数値の両方を入力とする場合、入力値判定部220b及び内部状態変数値判定部260bを一つの判定部とし、1つの回避レベルを制御フロー整合性検査部230aへ出力してもよい。これらにより、過去の検査の実績を踏まえることができ、回避条件の判定精度がより向上する。
図18は、本実施形態4にかかる学習処理を含む制御フロー検査方法の流れを示すフローチャートである。以下では、図11と同等の構成については説明を省略する。また、図5の事前処理が実施済みであることも実施形態3と同様である。尚、図7のステップS322及び図12のステップS322aは、判定モデル271を用いるものとする。
そして、ステップS309の後、学習部270は、履歴情報記憶部250から履歴情報を読み出し、学習用データとして判定モデル271の回避条件、回避レベルの設定ルールを機械学習する(S313)。例えば、学習部270は、学習用データとして入力値251、回避結果252、内部状態変数値253、検査結果254及び実行結果255の少なくとも一部を用いる。その後ステップS310へ進む。以降は、同様である。
尚、本実施形態では、学習部270が必須ではない。別途、外部の情報処理装置が学習部270を備え、学習済みの判定モデル271をデバイス200b内の記憶装置に保存してもよい。
<その他の実施形態>
尚、上記実施形態において、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、CPUがメモリにロードして実行するプログラム等によって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
また、上記のプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Compact Disc-Read Only Memory)、CD-R(CD-Recordable)、CD-R/W(CD-ReWritable)、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されても良い。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
なお、本開示は上記実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、本開示は、それぞれの実施形態を適宜組み合わせて実施されてもよい。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記A1)
所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う判定手段と、
前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する検査手段と、
を備える半導体装置。
(付記A2)
前記判定手段は、
前記対象コードブロックにおける過去の実行時の判定補助情報との類似度合いを前記回避条件として前記判定を行う
付記A1に記載の半導体装置。
(付記A3)
前記判定補助情報は、前記対象コードブロックへの入力値を含み、
前記判定手段は、
前記入力値のデータ内容又はデータサイズの範囲を前記回避条件として前記判定を行う
付記A1又はA2に記載の半導体装置。
(付記A4)
前記判定補助情報は、前記対象コードブロックの実行時の内部状態変数値をさらに含み、
前記判定手段は、
前記内部状態変数値の範囲を前記回避条件としてさらに加味して前記判定を行う
付記A3に記載の半導体装置。
(付記A5)
前記判定手段は、
前記回避条件を満たすと前記判定を行った場合、当該回避条件を満たす度合いに応じて回避レベルを設定し、
前記検査手段は、
前記回避レベルに応じて前記検査を回避する
付記A1乃至A4のいずれか1項に記載の半導体装置。
(付記A6)
前記複数のコードブロックのそれぞれは、前記回避レベルの閾値が予め定義されており、
前記検査手段は、
前記判定手段により設定された回避レベルが、前記対象コードブロックに定義された回避レベルの閾値を満たす場合、前記検査を回避する
付記A5に記載の半導体装置。
(付記A7)
前記判定補助情報の履歴情報を記憶する記憶手段をさらに備え、
前記判定手段は、
前記対象コードブロックにおける判定補助情報を取得し、
前記履歴情報と前記取得した判定補助情報とに基づいて、前記判定を行い、
前記検査手段による回避結果に応じて、前記取得した判定補助情報を前記履歴情報として前記記憶手段に追加する
付記A1乃至A6のいずれか1項に記載の半導体装置。
(付記A8)
前記判定手段は、
前記履歴情報を用いて前記回避条件が学習された判定モデルを用いて、前記判定を行う
付記A7に記載の半導体装置。
(付記A9)
前記履歴情報を用いて前記判定モデルの前記回避条件を学習してパラメータを更新する学習手段をさらに備える
付記A8に記載の半導体装置。
(付記A10)
前記半導体装置は、セキュア領域と非セキュア領域とを備え、
前記セキュア領域は、前記判定手段及び前記検査手段を少なくとも含み、
前記非セキュア領域は、プログラム実行手段を含み、
前記判定手段は、
前記プログラム実行手段により前記対象コードブロックに設定された前記制御フロー整合性の検査を呼び出す検査命令の実行に応じて、前記判定を行う
付記A1乃至A9のいずれか1項に記載の半導体装置。
(付記B1)
コンピュータが、
所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行い、
前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する
制御フロー検査方法。
(付記C1)
所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う処理と、
前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する処理と、
をコンピュータに実行させる制御フロー検査プログラムが格納された非一時的なコンピュータ可読媒体。
(付記D1)
付記A1乃至A10のいずれか1項に記載の半導体装置を備える電子機器。
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
100 半導体装置
110 判定部
120 検査部
200 デバイス
200a デバイス
200b デバイス
210 プログラム実行部
211 対象コードブロック
212 検査命令
220 入力値判定部
220b 入力値判定部
230 制御フロー整合性検査部
230a 制御フロー整合性検査部
241 制御フローグラフ
242 ハッシュ値
243 回避レベル閾値
250 履歴情報記憶部
251 入力値
252 回避結果
253 内部状態変数値
254 検査結果
255 実行結果
260 内部状態変数値判定部
260b 内部状態変数値判定部
270 学習部
271 判定モデル
31 モジュール
32 コードブロック
321 コードブロック
322 コードブロック
323 コードブロック
33 ハッシュ値検査処理
331 回避
332 回避
333 回避
334 回避
335 回避
336 回避
400 デバイス
410 normal world
411 プロセッサコア
420 secure world
500 情報処理装置
510 記憶装置
511 制御フロー検査プログラム
512 制御フローグラフ
513 ハッシュ値
514 回避レベル閾値
515 実行対象プログラム
516 履歴情報
520 制御部
530 メモリ
540 IF部

Claims (13)

  1. 所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う判定手段と、
    前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する検査手段と、
    を備え
    前記判定補助情報は、前記対象コードブロックへの入力値を含み、
    前記判定手段は、
    前記入力値のデータ内容又はデータサイズの範囲を前記回避条件として前記判定を行う
    導体装置。
  2. 前記判定手段は、
    前記対象コードブロックにおける過去の実行時の判定補助情報との類似度合いを前記回避条件として前記判定を行う
    請求項1に記載の半導体装置。
  3. 前記判定補助情報は、前記対象コードブロックの実行時の内部状態変数値をさらに含み、
    前記判定手段は、
    前記内部状態変数値の範囲を前記回避条件としてさらに加味して前記判定を行う
    請求項1又は2に記載の半導体装置。
  4. 所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う判定手段と、
    前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する検査手段と、
    を備え、
    前記判定手段は、
    前記回避条件を満たすと前記判定を行った場合、当該回避条件を満たす度合いに応じて回避レベルを設定し、
    前記複数のコードブロックのそれぞれは、前記回避レベルの閾値が予め定義されており、
    前記検査手段は、
    前記判定手段により設定された回避レベルが、前記対象コードブロックに定義された回避レベルの閾値を満たす場合、前記検査を回避する
    導体装置。
  5. 所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う判定手段と、
    前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する検査手段と、
    前記判定補助情報の履歴情報を記憶する記憶手段をさらに備え
    を備え、
    前記判定手段は、
    前記対象コードブロックにおける判定補助情報を取得し、
    前記履歴情報と前記取得した判定補助情報とに基づいて、前記判定を行い、
    前記検査手段による回避結果に応じて、前記取得した判定補助情報を前記履歴情報として前記記憶手段に追加する
    導体装置。
  6. 前記判定手段は、
    前記履歴情報を用いて前記回避条件が学習された判定モデルを用いて、前記判定を行う
    請求項に記載の半導体装置。
  7. 前記履歴情報を用いて前記判定モデルの前記回避条件を学習してパラメータを更新する学習手段をさらに備える
    請求項に記載の半導体装置。
  8. 前記半導体装置は、セキュア領域と非セキュア領域とを備え、
    前記セキュア領域は、前記判定手段及び前記検査手段を少なくとも含み、
    前記非セキュア領域は、プログラム実行手段を含み、
    前記判定手段は、
    前記プログラム実行手段により前記対象コードブロックに設定された前記制御フロー整合性の検査を呼び出す検査命令の実行に応じて、前記判定を行う
    請求項1乃至のいずれか1項に記載の半導体装置。
  9. コンピュータが、
    所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行い、
    前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する
    制御フロー検査方法であって、
    前記判定補助情報は、前記対象コードブロックへの入力値を含み、
    前記入力値のデータ内容又はデータサイズの範囲を前記回避条件として前記判定を行う
    制御フロー検査方法
  10. コンピュータが、
    所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行い、
    前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する
    制御フロー検査方法であって、
    前記回避条件を満たすと前記判定を行った場合、当該回避条件を満たす度合いに応じて回避レベルを設定し、
    前記複数のコードブロックのそれぞれは、前記回避レベルの閾値が予め定義されており、
    前記設定された回避レベルが、前記対象コードブロックに定義された回避レベルの閾値を満たす場合、前記検査を回避する
    制御フロー検査方法。
  11. コンピュータが、
    所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行い、
    前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する
    制御フロー検査方法であって、
    前記対象コードブロックにおける判定補助情報を取得し、
    前記判定補助情報の履歴情報と前記取得した判定補助情報とに基づいて、前記判定を行い、
    前記検査の回避結果に応じて、前記取得した判定補助情報を前記履歴情報として記憶装置に追加する
    制御フロー検査方法。
  12. 所定のプログラム内の複数のコードブロックのうち実行対象である対象コードブロックにおける判定補助情報に基づき、制御フロー整合性の検査の回避条件を満たすか否かの判定を行う処理と、
    前記回避条件を満たすと判定した場合に、前記対象コードブロックにおける前記制御フロー整合性の検査を回避する処理と、
    をコンピュータに実行させる制御フロー検査プログラムであって、
    前記判定補助情報は、前記対象コードブロックへの入力値を含み、
    前記入力値のデータ内容又はデータサイズの範囲を前記回避条件として前記判定を行う処理をコンピュータに実行させる制御フロー検査プログラム
  13. 請求項1乃至のいずれか1項に記載の半導体装置を備える電子機器。
JP2021528686A 2019-06-25 2019-06-25 半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器 Active JP7338686B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/025100 WO2020261365A1 (ja) 2019-06-25 2019-06-25 半導体装置、制御フロー検査方法、非一時的なコンピュータ可読媒体及び電子機器

Publications (3)

Publication Number Publication Date
JPWO2020261365A1 JPWO2020261365A1 (ja) 2020-12-30
JPWO2020261365A5 JPWO2020261365A5 (ja) 2022-03-10
JP7338686B2 true JP7338686B2 (ja) 2023-09-05

Family

ID=74060831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021528686A Active JP7338686B2 (ja) 2019-06-25 2019-06-25 半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器

Country Status (3)

Country Link
US (1) US11868467B2 (ja)
JP (1) JP7338686B2 (ja)
WO (1) WO2020261365A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4004784B1 (en) * 2020-09-30 2024-03-13 Google LLC Determining expected hash-values in functions with control flow

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180225446A1 (en) 2017-02-06 2018-08-09 Huawei Technologies Co., Ltd. Processor trace-based enforcement of control flow integrity of a computer system
JP2019012498A (ja) 2017-07-03 2019-01-24 株式会社デンソー 電子制御装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3373178A1 (en) 2017-03-08 2018-09-12 Secure-IC SAS Comparison of execution context data signatures with references
US11496506B2 (en) * 2017-07-03 2022-11-08 Denso Corporation Program generation method and electronic control unit for changing importance of functions based on detected operation state in a vehicle

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180225446A1 (en) 2017-02-06 2018-08-09 Huawei Technologies Co., Ltd. Processor trace-based enforcement of control flow integrity of a computer system
JP2019012498A (ja) 2017-07-03 2019-01-24 株式会社デンソー 電子制御装置

Also Published As

Publication number Publication date
US20220358211A1 (en) 2022-11-10
WO2020261365A1 (ja) 2020-12-30
US11868467B2 (en) 2024-01-09
JPWO2020261365A1 (ja) 2020-12-30

Similar Documents

Publication Publication Date Title
JP2021535477A (ja) フォールトツリー分析を使用して機能安全のため制御フローグラフを最適化するシステム及び方法
US7353500B2 (en) Suppressing execution of monitoring measurement program pointed to by inserted branch after threshold number of coverage to reduce instruction testing overhead
US20100275186A1 (en) Segmentation for static analysis
JP7047969B2 (ja) 障害保護のための並列実行および関連プロセスの比較のためのシステムおよび方法
EP2983117A1 (en) Event processing method in stream processing system and stream processing system
US20160162381A1 (en) Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads
KR101978984B1 (ko) 프로세서의 오류를 검출하는 장치 및 방법
JP7338686B2 (ja) 半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器
CN111459964A (zh) 一种面向模板基于Word2vec的日志异常检测方法及装置
US20140149800A1 (en) Test method and test control apparatus
US20190146893A1 (en) Simulation device, simulation system, simulation method, and simulation program
KR101294708B1 (ko) 행위 오류 분석 장치 및 그 방법
US10824546B2 (en) Test method and non-transitory computer readable medium storing program for testing modules
US20220092476A1 (en) Dependence relationship detection device and dependence relationship detection method
US20230324856A1 (en) Control of a technical system by means of a computing unit for artificial intelligence
JP7318707B2 (ja) 半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器
US20150082278A1 (en) Clone detection method and clone function commonalizing method
CN115328772A (zh) 激励组合与模块相关性的学习方法与测试脚本产生方法
JP2013254371A (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラム
JP7415593B2 (ja) コード検査ツール、コード検査方法
JP2008090699A (ja) トレースロギング方法、装置及びプログラム
US20220327203A1 (en) Whitelist generation apparatus, whitelist generation method, and non-transitory computer readable medium storing program
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
US20200349304A1 (en) Method, apparatus, device, and medium for implementing simulator
JPWO2020194455A1 (ja) テストケース生成装置、テストケース生成方法、およびテストケース生成プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230406

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230807

R151 Written notification of patent or utility model registration

Ref document number: 7338686

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151