(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022007202
(43)【公開日】2022-01-13
(54)【発明の名称】ハードウエアトロイ検出方法、ハードウエアトロイ検出装置及びハードウエアトロイ検出用プログラム
(51)【国際特許分類】
G06F 21/56 20130101AFI20220105BHJP
G06F 30/398 20200101ALI20220105BHJP
【FI】
G06F21/56
G06F17/50 666Z
【審査請求】未請求
【請求項の数】21
【出願形態】OL
(21)【出願番号】P 2020110020
(22)【出願日】2020-06-25
(71)【出願人】
【識別番号】391016358
【氏名又は名称】東芝情報システム株式会社
(71)【出願人】
【識別番号】899000068
【氏名又は名称】学校法人早稲田大学
(74)【代理人】
【識別番号】100090169
【弁理士】
【氏名又は名称】松浦 孝
(74)【代理人】
【識別番号】100074147
【弁理士】
【氏名又は名称】本田 崇
(74)【代理人】
【識別番号】100124497
【弁理士】
【氏名又は名称】小倉 洋樹
(72)【発明者】
【氏名】永田 真一
(72)【発明者】
【氏名】高橋 功次
(72)【発明者】
【氏名】戸川 望
(72)【発明者】
【氏名】大屋 優
【テーマコード(参考)】
5B046
5B146
【Fターム(参考)】
5B046AA08
5B046BA03
5B046GA01
5B046JA01
5B046JA04
5B146AA22
5B146GL00
(57)【要約】 (修正有)
【課題】ハードウエアトロイを比較的短時間で適切に検出するハードウエアトロイ検出方法、ハードウエアトロイ検出装置及び検出プログラムを提供する。
【解決手段】ハードウエアトロイ検出装置において、外部記憶装置23内のハードウエアトロイ検出用プログラムは、検査対象のネットリストに含まれる全論理セルの論理式による演算を行って全論理セルの入出力値の更新を行う入出力更新手段と、更新された入出力値が閾値との比較結果に基づきハードウエアトロイの検出を行う検出手段と、全論理セルの入出力のネットに初期値としてパラメータを設定するパラメータ設定手段と、をじ実現する。入出力更新手段では、設定された前記パラメータを用いた演算を論理セルの全てについて所定回クール行って入力値と出力値の更新を行い、検出手段では、演算を所定回クール行ったときに得られたいずれかの論理セルの出力値に基づきハードウエアトロイの検出を行う。
【選択図】
図14
【特許請求の範囲】
【請求項1】
検査対象のネットリストに含まれる全論理セルの論理式による演算を行って全論理セルの入出力値の更新を行う入出力更新工程と、
更新された入出力値と閾値との比較結果に基づきハードウエアトロイの検出を行う検出工程と
を備えることを特徴とするハードウエアトロイ検出方法。
【請求項2】
前記全論理セルの入出力のネットに初期値としてパラメータを設定するパラメータ設定工程を備え、
前記入出力更新工程では、設定された前記パラメータを用いた前記演算を前記論理セルの全てについて所定回クール行って入力値と出力値の更新を行い、
前記検出工程では、前記演算を所定回クール行ったときに得られたいずれかの論理セルの出力値に基づきハードウエアトロイの検出を行う
ことを特徴とする請求項1に記載のハードウエアトロイ検出方法。
【請求項3】
前記論理セルは、論理回路と、必要な場合に論理回路以外のバッファ、リピータを含むものであり、
前記入出力更新工程は、1回毎のクールにおける入力値と出力値の更新の処理内において、バッファ及びリピータについての更新の場合には、入力値がバッファまたはリピータの出力へ伝達されるまでの所定回数更新を行うことを特徴とする請求項1または2に記載のハードウエアトロイ検出方法。
【請求項4】
ハードウエアトロイを含む既知ネットリスト及びハードウエアトロイを含まない既知ネットリストを用いて、前記パラメータ設定工程と前記入出力更新工程とを行い、この入出力更新工程における前記演算を所定回クール行ったときに得られた構成ネット内の入出力値に基づき第1の閾値を求める第1の閾値取得工程を備え、
前記検出工程では、前記第1の閾値を用いてハードウエアトロイの検出を行うことを特徴とする請求項1乃至3のいずれか1項に記載のハードウエアトロイ検出方法。
【請求項5】
既知ネットリスト及び検査対象のネットリストは、端子間ネットによって接続された一群の回路によって構成される構成ネットを1以上含む集合ネットを少なくとも含んで構成され、
前記第1の閾値取得工程では、構成ネット毎に第1の閾値を取得し、
既知ネットリスト内のそれぞれの構成ネットにおいて入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを既知ネットリストの全集合ネットについて合計して、得られたネットリスト毎スコアを比較して、最小のネットリスト毎スコアに基づき判定スコア閾値を得る判定スコア閾値取得工程を備え、
前記検出工程では、検査対象のネットリストの構成ネット毎に入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを検査対象ネットリストの全集合ネットについて合計して検査対象スコアを得て、検査対象スコアを前記判定スコア閾値に基づき評価して前記検査対象のネットリスト中のハードウエアトロイの検出を行う
ことを特徴とする請求項4に記載のハードウエアトロイ検出方法。
【請求項6】
所定時間内に一定値を出力するクロック数が所定値以上であり、最大スコアネット数が最大スコアネット数閾値以下である条件に合致するハードウエアトロイを含むと予想される既知ネットリストを複数の既知ネットリスト中から抽出し、抽出した既知ネットリストを用いて、前記パラメータ設定工程と前記入出力更新工程とを行い、この入出力更新工程における前記演算を所定回クール行ったときに得られた出力値に基づき第2の閾値を求める第2の閾値取得工程を備え、
前記検出工程では、前記第2の閾値を用いて前記検査対象のネットリスト中のハードウエアトロイの検出を行うことを特徴とする請求項1乃至5のいずれか1項に記載のハードウエアトロイ検出方法。
【請求項7】
前記検出工程では、前記検査対象のネットリストに基づく回路規模に対応する回路規模対応閾値と、前記演算を所定回クール行ったときに得られたいずれかの論理セルの入出力値の比較に基づき前記検査対象のネットリスト中のハードウエアトロイの検出を行うことを特徴とする請求項1に記載のハードウエアトロイ検出方法。
【請求項8】
検査対象のネットリストに含まれる全論理セルの論理式による演算を行って全論理セルの入出力値の更新を行う入出力更新手段と、
更新された入出力値が閾値との比較結果に基づきハードウエアトロイの検出を行う検出手段と
を備えることを特徴とするハードウエアトロイ検出装置。
【請求項9】
前記全論理セルの入出力のネットに初期値としてパラメータを設定するパラメータ設定手段を備え、
前記入出力更新手段では、設定された前記パラメータを用いた前記演算を前記論理セルの全てについて所定回クール行って入力値と出力値の更新を行い、
前記検出手段では、前記演算を所定回クール行ったときに得られたいずれかの論理セルの出力値に基づきハードウエアトロイの検出を行う
ことを特徴とする請求項8に記載のハードウエアトロイ検出装置。
【請求項10】
前記論理セルは、論理回路と、必要な場合に論理回路以外のバッファ、リピータを含むものであり、
前記入出力更新手段は、1回毎のクールにおける入力値と出力値の更新の処理内において、バッファ及びリピータについての更新の場合には、入力値がバッファまたはリピータの出力へ伝達されるまでの所定回数更新を行うことを特徴とする請求項8または9に記載のハードウエアトロイ検出装置。
【請求項11】
ハードウエアトロイを含む既知ネットリスト及びハードウエアトロイを含まない既知ネットリストを用いて、前記パラメータ設定手段と前記入出力更新手段とによる処理を行い、この入出力更新手段における前記演算を所定回クール行ったときに得られた構成ネット内の入出力値に基づき第1の閾値を求める第1の閾値取得手段を備え、
前記検出手段は、前記第1の閾値を用いてハードウエアトロイの検出を行うことを特徴とする請求項8乃至10のいずれか1項に記載のハードウエアトロイ検出装置。
【請求項12】
既知ネットリスト及び検査対象のネットリストは、端子間ネットによって接続された一群の回路によって構成される構成ネットを1以上含む集合ネットを少なくとも含んで構成され、
前記第1の閾値取得手段は、構成ネット毎に第1の閾値を取得し、
既知ネットリスト内のそれぞれの構成ネットにおいて入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを既知ネットリストの全集合ネットについて合計して、得られたネットリスト毎スコアを比較して、最小のネットリスト毎スコアに基づき判定スコア閾値を得る判定スコア閾値取得手段を備え、
前記検出手段は、検査対象のネットリストの構成ネット毎に入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを検査対象ネットリストの全集合ネットについて合計して検査対象スコアを得て、検査対象スコアを前記判定スコア閾値に基づき評価して前記検査対象のネットリスト中のハードウエアトロイの検出を行う
ことを特徴とする請求項11に記載のハードウエアトロイ検出装置。
【請求項13】
所定時間内に一定値を出力するクロック数が所定値以上であり、最大スコアネット数が最大スコアネット数閾値以下である条件に合致するハードウエアトロイを含むと予想される既知ネットリストを複数の既知ネットリスト中から抽出し、抽出した既知ネットリストを用いて、前記パラメータ設定手段と前記入出力更新手段とによる処理を行い、この入出力更新手段における前記演算を所定回クール行ったときに得られた出力値に基づき第2の閾値を求める第2の閾値取得手段を備え、
前記検出手段は、前記第2の閾値を用いて前記検査対象のネットリスト中のハードウエアトロイの検出を行うことを特徴とする請求項8乃至12のいずれか1項に記載のハードウエアトロイ検出装置。
【請求項14】
前記検出手段は、前記検査対象のネットリストに基づく回路規模に対応する回路規模対応閾値と、前記演算を所定回クール行ったときに得られたいずれかの論理セルの入出力値の比較に基づき前記検査対象のネットリスト中のハードウエアトロイの検出を行うことを特徴とする請求項8に記載のハードウエアトロイ検出装置。
【請求項15】
コンピュータを、
検査対象のネットリストに含まれる全論理セルの論理式による演算を行って全論理セルの入出力値の更新を行う入出力更新手段、
更新された入出力値が閾値との比較結果に基づきハードウエアトロイの検出を行う検出手段
として機能させることを特徴とするハードウエアトロイ検出用プログラム。
【請求項16】
前記コンピュータを更に、
前記全論理セルの入出力のネットに初期値としてパラメータを設定するパラメータ設定手段として機能させ、
前記コンピュータを前記入出力更新手段として、設定された前記パラメータを用いた前記演算を前記論理セルの全てについて所定回クール行って入力値と出力値の更新を行うように機能させ、
前記コンピュータを前記検出手段として、前記演算を所定回クール行ったときに得られたいずれかの論理セルの出力値に基づきハードウエアトロイの検出を行うように機能させる
ことを特徴とする請求項15に記載のハードウエアトロイ検出用プログラム。
【請求項17】
前記論理セルは、論理回路と、必要な場合に論理回路以外のバッファ、リピータを含むものであり、
前記コンピュータを前記入出力更新手段として、1回毎のクールにおける入力値と出力値の更新の処理内において、バッファ及びリピータについての更新の場合には、入力値がバッファまたはリピータの出力へ伝達されるまでの所定回数更新を行うように機能させることを特徴とする請求項15または16に記載のハードウエアトロイ検出用プログラム。
【請求項18】
前記コンピュータを更に、ハードウエアトロイを含む既知ネットリスト及びハードウエアトロイを含まない既知ネットリストを用いて、前記パラメータ設定手段と前記入出力更新手段とによる処理を行い、この入出力更新手段における前記演算を所定回クール行ったときに得られた構成ネット内の入出力値に基づき第1の閾値を求める第1の閾値取得手段として機能させ、
前記コンピュータを前記検出手段として、前記第1の閾値を用いてハードウエアトロイの検出を行うように機能させることを特徴とする請求項15乃至17のいずれか1項に記載のハードウエアトロイ検出用プログラム。
【請求項19】
既知ネットリスト及び検査対象のネットリストは、端子間ネットによって接続された一群の回路によって構成される構成ネットを1以上含む集合ネットを少なくとも含んで構成され、
前記コンピュータを前記第1の閾値取得手段として、構成ネット毎に第1の閾値を取得するように機能させ、
前記コンピュータを更に、既知ネットリスト内のそれぞれの構成ネットにおいて入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを既知ネットリストの全集合ネットについて合計して、得られたネットリスト毎スコアを比較して、最小のネットリスト毎スコアに基づき判定スコア閾値を得る判定スコア閾値取得手段として機能させ、
前記コンピュータを前記検出手段として、検査対象のネットリストの構成ネット毎に入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを検査対象ネットリストの全集合ネットについて合計して検査対象スコアを得て、検査対象スコアを前記判定スコア閾値に基づき評価して前記検査対象のネットリスト中のハードウエアトロイの検出を行うように機能させる
ことを特徴とする請求項18に記載のハードウエアトロイ検出用プログラム。
【請求項20】
前記コンピュータを更に、所定時間内に一定値を出力するクロック数が所定値以上であり、最大スコアネット数が最大スコアネット数閾値以下である条件に合致するハードウエアトロイを含むと予想される既知ネットリストを複数の既知ネットリスト中から抽出し、抽出した既知ネットリストを用いて、前記パラメータ設定手段と前記入出力更新手段とによる処理を行うように機能させ、前記コンピュータをこの入出力更新手段として機能させて前記演算を所定回クール行ったときに得られた出力値に基づき第2の閾値を求める第2の閾値取得手段として機能させ、
前記コンピュータを前記検出手段として、前記第2の閾値を用いて前記検査対象のネットリスト中のハードウエアトロイの検出を行うように機能させることを特徴とする請求項15乃至19のいずれか1項に記載のハードウエアトロイ検出用プログラム。
【請求項21】
前記コンピュータを前記検出手段として、前記検査対象のネットリストに基づく回路規模に対応する回路規模対応閾値と、前記演算を所定回クール行ったときに得られたいずれかの論理セルの入出力値の比較に基づき前記検査対象のネットリスト中のハードウエアトロイの検出を行うように機能させることを特徴とする請求項15に記載のハードウエアトロイ検出用プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ハードウエアトロイ検出方法、ハードウエアトロイ検出装置及びハードウエアトロイ検出用プログラムに関するものである。
【背景技術】
【0002】
ハードウエアトロイは、ある条件で動作するように起動を制御するトリガ回路と、このトリガ回路により起動されたときに不正データを出力するペイロード回路とを主な構成要素とするものである。ハードウエアトロイは、論理シミュレーションによっては見つかり難くするために、極めて稀に機能するように構成されているのが一般的である。
【0003】
ハードウエアトロイを論理シミュレーションで行う場合には、テストパターンによるシミュレーションが通例である。前述の通り、ハードウエアトロイは極めて稀に機能するために、全てのテストパターンを用いて状態を観察する必要があり、シミュレーションに多大な時間を要することになる。また、遷移確率のシミュレーションを行う場合には、ライブラリなどの使用されている全セルの情報が必要である。そのため、設計者以外がハードウエアトロイの検出を行うことは困難であった。
【0004】
特許文献1には、RTLシミュレーション手段とゲート動作率算出用パターン作成手段とネットリストシミュレーション手段により動作率算出を行うシステムが開示されている。このシステムによると、ゲート動作率算出用パターンの作成は元のパターンよりもパターン数の非常に大きな低減を実現し、ネットリストシミュレーションによって元のテストパターンを用いたシミュレーションに比べて非常に小さな時間での実行を可能としている。
【0005】
しかしながら、特許文献1のシステムは、シミュレーションであることに変わりなく、ゲート動作率算出用パターンの作成は、元のパターンよりもパターン数の非常に大きな低減と言っても限界がある。
【0006】
また、特許文献2には、対象となる電子回路のネットリスト、各マクロセルの入力端子に与えられる動作率、入力端子がハイレベルである確率、該マクロセルの真理値表のデータベースを用いる動作率計算法が開示されている。上記動作率と入力端子がハイレベルである確率、真理値表に基づき各マクロセルの出力端子の動作率、出力端子がハイレベルである確率を求め、これを入力段から最終段まで伝播させてネットリスト中のマクロセルの動作率を求めるものが開示されている。
【0007】
上記特許文献2に開示の技術は、マクロセルの動作率を求めることができ、発熱によるリスク回避などにはつながっても、ハードウエアトロイの検出を行うことを想起させるものではない。
【0008】
また、特許文献3には、既知ネットリストにおいて、トロイネットを含んでいる可能性がある構成ネットを対照ネットとしてスコアを付与し、検査対象のネットリストについて上記対照ネットを検索して、上記スコアを与えて、このスコアによりハードウエアトロイの検出を行うことが開示されている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2001-350815号公報
【特許文献2】特開2005-141538号公報
【特許文献3】特許第6566576号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明の実施形態は、例えば、SoC(System on a Chip)設計において、IP(Intellectual Property)を利用する際などに、ハードウエアトロイが挿入されている場合などに、ハードウエアトロイを比較的短時間で適切に検出することができるハードウエアトロイ検出方法を提供する。
【課題を解決するための手段】
【0011】
本実施形態に係るハードウエアトロイ検出方法は、検査対象のネットリストに含まれる全論理セルの論理式による演算を行って全論理セルの入出力値の更新を行う入出力更新工程と、更新された入出力値が閾値との比較結果に基づきハードウエアトロイの検出を行う検出工程とを備えることを特徴とする。なお、論理セルにおいて行われる論理演算は一般的には、1と0や真と偽のように2種の値しかない論理値の演算である。これに対し、本実施形態においては、上記2種の値しかない論理値以外の数値(0.5や0.25などの小数、5や10などの整数などの数)を用い、論理セルの論理式による演算を行うものである。
【図面の簡単な説明】
【0012】
【
図1】本発明の第1の実施形態に係るハードウエアトロイ検出装置を実現するコンピュータシステムの構成図。
【
図2】本発明の第1の実施形態に係るハードウエアトロイ検出装置の機能ブロック図。
【
図3】本発明の第1の実施形態に係るハードウエアトロイ検出装置によりハードウエアトロイを検出するネットリストの構成ネットの一例を示す図。
【
図4】本発明の第1の実施形態に係るハードウエアトロイ検出装置の動作を示すフローチャート。
【
図5】本発明の実施形態に係るハードウエアトロイ検出装置において設定するパラメータの説明図。
【
図6】
図3に示す構成ネットにパラメータを設定した場合を示す構成ネットの図。
【
図7】
図3に示す構成ネットにパラメータを設定した場合を示す構成ネットについて論理セルの論理式による演算によって更新を行った状態を示す図。
【
図8】論理セルについての論理式による演算によって更新を行う場合の計算式を示す図。
【
図9】
図7に示す構成ネットにパラメータを設定した場合を示す構成ネットの論理セルについて、論理式による演算によって更新を行った状態を示す図。
【
図10】
図9に示す構成ネットにパラメータを設定した場合を示す構成ネットの論理セルについて、論理式による演算によって更新を行った状態を示す図。
【
図11】
図10に示す構成ネットにパラメータを設定した場合を示す構成ネットの論理セルについて、論理式による演算によって更新を行った状態を示す図。
【
図12】
図11に示す構成ネットにパラメータを設定した場合を示す構成ネットの論理セルについて、論理式による演算によって更新を行った第2クール目の状態を示す図。
【
図13】本発明の第2の実施形態に係るハードウエアトロイ検出装置を実現するコンピュータシステムの構成図。
【
図14】本発明の第2の実施形態に係るハードウエアトロイ検出装置の機能ブロック図。
【
図15】本発明の第2の実施形態に係るハードウエアトロイ検出装置において用いる第1の閾値とスコアとの変換テーブルを示す図。
【
図16】トロイネットが存在する場合には、長期間にわたって一定値が出力されることを示す波形図。
【
図17】この第2の実施形態によるハードウエアトロイ検出の処理を示すフローチャート。
【発明を実施するための形態】
【0013】
以下添付図面を参照して、本発明の実施形態に係るハードウエアトロイ検出方法、ハードウエアトロイ検出装置及びハードウエアトロイ検出用プログラムを説明する。各図において同一の構成要素には、同一の符号を付して重複する説明を省略する。
【0014】
本発明の第1の実施形態に係るハードウエアトロイ検出装置1は、例えば
図1に示されるようなパーソナルコンピュータやワークステーション、その他のコンピュータシステムにより構成することができる。このコンピュータシステムは、CPU10が主メモリ11に記憶されている或いは主メモリ11に読み込んだプログラムやデータに基づき各部を制御し、必要な処理を実行することによりハードウエアトロイ検出装置1として動作を行うものである。
【0015】
CPU10には、バス12を介して外部記憶インタフェース13、入力インタフェース14、表示インタフェース15、ネットワークインタフェース16が接続されている。外部記憶インタフェース13には、ハードウエアトロイ検出用プログラム等のプログラムと必要なデータ等が記憶されている外部記憶装置23が接続されている。入力インタフェース14には、コマンドやデータを入力するための入力装置としてのキーボードなどの入力装置24とポインティングデバイスとしてのマウス22が接続されている。
【0016】
表示インタフェース15には、LEDやLCDなどの表示画面を有する表示装置25が接続されている。ネットワークインタフェース16には、インターネット等のネットワーク26が接続され、外部のサーバやクラウドなどにアクセス可能に構成されている。ネットワーク26は、必要なデータ等を得るための構成であり、データ入力を行うための記憶媒体や入力装置であっても良い。更に、このコンピュータシステムには、他の構成が備えられていても良く、また、
図1の構成は一例に過ぎない。
【0017】
図2は、本発明の第1の実施形態に係るハードウエアトロイ検出装置1の機能ブロック図である。上記において、CPU10では、外部記憶装置23内のハードウエアトロイ検出用プログラムによって
図2に記載の各手段等が実現される。即ち、入出力更新手段31、パラメータ設定手段32、検出手段33を備える。
【0018】
入出力更新手段31は、検査対象のネットリストに含まれる全論理セルの論理式による演算を行って全論理セルの入出力値の更新を行うものである。即ち入出力更新手段31は、検査対象が構成ネットであれば、構成ネットの範囲の全論理セルの上記演算を行い、また、検査対象が集合ネットであれば、集合ネットの範囲の全論理セルの上記演算を行い、更に、検査対象がLSI全体であれば、当該LSI全体の全論理セルの上記演算を行うものである。この第1の実施形態と後に説明する第2の実施形態においては、入出力更新手段31は、検査対象のネットリストに含まれる構成ネットにおける全論理セルの上記演算を行って全論理セルの入出力値の更新を行うものとする。パラメータ設定手段32は、上記全論理セルの入出力のネットに初期値としてパラメータを設定するものである。検査対象ネットリストは、開発するLSIなどに含まれる各種回路同士を接続する配線の一覧を記述した設計データである。検査対象ネットリストは、開発するLSIなどを構成する回路の階層に合わせて構築された階層を有し、最上位層である集合ネットと、当該集合ネットの下位層である構成ネットを備える。集合ネット及び構成ネットは、情報処理装置の規模に応じて1つ以上設けられる。構成ネットは、回路の端子間を繋ぐ配線(以下、「端子間ネット」という。)によって接続された一群の回路によって構成される。また、開発するLSIなどに含まれる各種回路には、論理セルが含まれている。
【0019】
本実施形態では、上記入出力更新手段31で、設定された上記パラメータを用いた上記演算を上記論理セルの全てについて所定回クール行って入力値と出力値の更新を行う。
【0020】
前記論理セルは、論理回路と、必要な場合に論理回路以外のバッファ、リピータを含むものである。上記入出力更新手段31は、1回毎のクールにおける入力値と出力値の更新の処理内において、バッファ及びリピータについての更新の場合には、入力値がバッファまたはリピータの出力へ伝達されるまでの所定回数更新を行う。例えば、構成ネットにおける全論理セルの上記演算を1回クール行うときに、バッファまたはリピータについては10回の上記演算による更新に相当する入出力値の更新を行う。
【0021】
検出手段33は、更新された入出力値が閾値との比較結果に基づきハードウエアトロイの検出を行う。本実施形態の検出手段33は、上記演算を所定回クール行ったときに得られたいずれかの論理セルの出力値に基づきハードウエアトロイの検出を行う。
【0022】
本実施形態では、上記検出手段33は、上記検査対象のネットリストに基づく回路規模に対応する閾値である回路規模対応閾値と、上記演算を所定回クール行ったときに得られたいずれかの論理セルの入出力値の比較に基づき上記検査対象のネットリスト中のハードウエアトロイの検出を行う。具体的には、検査対象のネットリストに含まれる構成ネットの回路規模を表す端子間ネット数が500程度の回路において、所定回クールを4回クールとしたとき、パラメータの値は、2.8e-8程度となり、パラメータは回路規模対応閾値を出力値で1e-7、入力値で1-(1e-7)を用いて比較を行うことができる。即ち、出力値が1e-7以下であればハードウエアトロイが存在すると判定することができ、入力値が1-(1e-7)以上であればハードウエアトロイが存在すると判定することができる。
【0023】
検査対象のネットリストを含め、ネットリストは、一般的にネットリストから作成されるLSIなどのデバイスを構成する回路の階層と対応する階層構造である。この階層の最上位層を集合ネットと称し、当該集合ネットの下位層に構成ネットを備える。LSIなどのデバイスの規模に応じて上記集合ネットと上記構成ネットは、それぞれ1つ以上存在する。この内、構成ネットは、回路の端子間に設けられる端子間ネットと称される配線によって接続された一群の回路によって構成されるものである。本実施形態では、構成ネットにおける全論理セルの上記演算を行って全論理セルの入出力値の更新を行う。
【0024】
構成ネットの一例を
図3に示す。この構成ネットは、ハードウエアトロイが存在する可能性がある疑トロイ回路部41、ハードウエアトロイが存在しない非トロイ回路部42、その他の部分である残余回路部43を備えている。
【0025】
疑トロイ回路部41は、論理セルであるANDゲートC1~C11を備え、端子間ネットs1i1~s1i17、s2i1~s2i8、s3i1、s3i2によって論理セルが接続されている。ANDゲートC10とANDゲートC11との間には、縦続接続された3つのバッファB1~B3が設けられている。
【0026】
非トロイ回路部42は、ANDゲートC12、DフリップフロップF1、マルチプレクサMの一部、バッファB4を備え、端子間ネットFB1、FB2、LP1、非トロイのネットAT1、マルチプレクサMの出力ネットOUTPUT等を有している。
【0027】
残余回路部43は、縦続接続された3つのバッファB5~B7、マルチプレクサMの一部を備え、端子間ネットとして、ANDゲートC11の出力ネットTRG1、バッファB5~B7を接続するネット、マルチプレクサMの一方の入力へ到るトロイのペイロードのネットP1、マルチプレクサMの出力ネットOUTPUT等を有している。
【0028】
上記のような構成ネットに対し、CPU10外部記憶装置23内のハードウエアトロイ検出用プログラムによって
図4のフローチャートに示すように動作を行うので、このフローチャートに基づき動作を説明する。CPU10は、検査対象のネットリストを読み込む(S11)。この検査対象のネットリストについての読み込みは、例えば、外部記憶装置23から行うことができ、また、ネットワークインタフェース16とネットワーク26を介して外部のサーバやクラウドなどにアクセスして行うことができる。
【0029】
次にCPU10は、読み込んだネットリストにより、全論理セルの入出力のネットに初期値としてパラメータを設定する(S12)。
【0030】
上記に用いるパラメータは、例えば次のように決定される。本実施形態が対象とするLSIなどのデバイスに用いられる論理セルにおいて入出力される信号は、
図5に示されるようにHレベルとLレベルといずれかの値を有し、どちらかのレベルである。このため、
図5のようにHレベルとLレベルが変化するとして、時間T中にH(L)レベルである割合は0.5である。この0.5をパラメータとして全論理セルの入出力のネットに初期値として設定する。この結果は、
図6に示す通りである。
【0031】
次に、設定された上記パラメータを用いた上記演算を上記論理セルの全てについて入力値と出力値の更新を行う(S13)。この場合、上記演算による演算はどこから始めても良く、順不同である。
図7には、ANDゲートC11とANDゲートC12について出力側において演算を行った結果が示されている。この場合の上記演算は、
図8に示される式により行われる。
【0032】
図9には、ANDゲートC11から下流側へと演算を進め、ANDゲートC9とANDゲートC10のそれぞれの出力について演算を行った結果が示されている。更に、
図10には、ANDゲートC9とANDゲートC10のそれぞれの入力について演算を行った結果が示されている。
【0033】
図11には、バッファ及びリピータについての更新の場合には、入力値がバッファまたはリピータの出力へ伝達されるまでの所定回数更新を行う例が示されている。構成ネットにおける全論理セルの上記演算を1回クール行うときに、バッファまたはリピータについては10回の上記演算による更新に相当する入出力値の更新を行う。この結果、3つのバッファB1~B3において、ANDゲートC10の出力0.0625が順に伝達される。ANDゲートC10の出力がどのタイミングで変化するか不定であるため、ここでは、10回の上記演算による更新に相当する入出力値の更新を行う。
【0034】
また、
図11には、3つのバッファB5~B7において、ANDゲートC11の出力0.0625が順に伝達されることが示されている。3つのバッファB5~B7の入出力値の更新についても、ANDゲートC11の出力がどのタイミングで変化するか不定であるため、ここでは、10回の上記演算による更新に相当する入出力値の更新を行う。この例では、バッファの入出力の更新を、
図11に示すタイミング行っているが、他のタイミングでも行われるものである。
【0035】
以上のようにして、設定された上記パラメータを用いた上記演算を上記論理セルの全てについて入力値と出力値の更新が完了(1回クールの更新が完了)すると、所定回クール(ここでは、4回クール)の更新が完了したのかを検出し(S14)、NOとなるとステップS13へ戻って処理が続けられる。
【0036】
ステップS13へ戻った場合には、2クール目の処理となる。上記の
図11に示した1回クール目の終了から、
図12に示す2クール目の処理では、ANDゲートC11の出力が0.001935に更新される。以下、ANDゲートC11の下流側の論理セルの入出力値の更新が行われ、更に、ANDゲートC11の上流側の論理セルの入出力値の更新が行われる。この第2クール目の更新においても順不同である。以下同様に第1クール目の処理で説明した通りの動作と同様に動作が進められる。このようにして、第2クール目の処理が終了し、次に第3クール目の処理が開始されて終了し、更に第4クール目の処理が開始されて終了すると、ステップS14においてYESへ分岐し、ステップS15へ進む。
【0037】
ステップS15では、CPU10は、前述の通りの閾値(出力値で1e-7、入力値で1-(1e-7))と各論理セルの入力値と出力値を比較し(S15)、判定条件である出力値が1e-7以下か、または入力値が1-(1e-7)以上であるかを判定する(S16)。
【0038】
上記ステップS16においてYESとなると、ハードウエアトロイが存在すると判定し、その旨を表示装置25に表示させるなどの出力処理を行い(S17)、上記ステップS16においてNOとなると、ハードウエアトロイが存在しないと判定し、その旨を表示装置25に表示させるなどの出力処理を行う(S18)。
【0039】
次に、本発明の第2の実施形態に係るハードウエアトロイ検出方法、ハードウエアトロイ検出装置及びハードウエアトロイ検出用プログラムについて説明する。第2の実施形態に係るハードウエアトロイ検出方法、ハードウエアトロイ検出装置の実施形態についても、本発明の第1の実施形態に係るハードウエアトロイ検出装置1と同じ
図13に示すコンピュータシステムによってハードウエアトロイ検出装置1Aが実現される。
【0040】
図14に、本発明の第2の実施形態に係るハードウエアトロイ検出装置1Aの機能ブロック図を示す。第2の実施形態に係るハードウエアトロイ検出装置1Aにおいて、CPU10では、外部記憶装置23内のハードウエアトロイ検出用プログラムによって
図14に記載の各手段等が実現される。即ち、第1の実施形態と同じ、入出力更新手段31、パラメータ設定手段32を備える。入出力更新手段31、パラメータ設定手段32以外に、検出手段33A、第1の閾値取得手段34、判定スコア閾値取得手段35、第2の閾値取得手段36を備える。
【0041】
第1の閾値取得手段34は、ハードウエアトロイを含む既知ネットリスト及びハードウエアトロイを含まない既知ネットリストを用いて、上記パラメータ設定手段32と上記入出力更新手段31とによる処理を行い、この入出力更新手段31における上記演算を所定回クール行ったときに得られた構成ネット内の入出力値に基づき第1の閾値を求めるものである。上記検出手段33Aは、上記第1の閾値を用いてハードウエアトロイの検出を行う。
【0042】
本実施形態では、既知ネットリスト及び検査対象のネットリストは、端子間ネットによって接続された一群の回路によって構成される構成ネットを1以上含む集合ネットを少なくとも含んで構成される。第1の閾値取得手段34は、構成ネット毎に第1の閾値を取得する。
【0043】
判定スコア閾値取得手段35は、既知ネットリスト内のそれぞれの構成ネットにおいて最大最小の入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを既知ネットリストの集合ネット毎に合計して、得られた集合ネット毎スコアを比較して、最小の集合ネット毎スコアに基づき判定スコア閾値を得るものである。ここに、判定スコア閾値取得手段35が上記処理を実行する場合における、最大スコアを有する集合ネットを、「最大スコアネット」と称し、既知ネットリスト内の最大スコアネットの数を、「最大スコアネット数」と称する。
【0044】
前記検出手段33Aは、検査対象のネットリスト毎に第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを検査対象ネットリストの集合ネット毎に合計して検査対象スコアを得て、検査対象スコアを前記判定スコア閾値に基づき評価して前記検査対象のネットリスト中のハードウエアトロイの検出を行う。
【0045】
第2の閾値取得手段36は、所定時間内に一定値を出力するクロック数が所定値以上であり、最大スコアネット数が最大スコアネット数閾値以下である条件に合致するハードウエアトロイを含むと予想される既知ネットリストを複数の既知ネットリスト中から抽出し、抽出した既知ネットリストを用いて、上記パラメータ設定手段32と上記入出力更新手段31とによる処理を行い、この入出力更新手段31における上記演算を所定回クール行ったときに得られた出力値に基づき第2の閾値を求めるものである。
【0046】
本実施形態では、例えば、米国のサイト(Trust-HUB)に公開されているベンチマークのネットリストを用いることができる。この内の10個のベンチマークを選択して、ハードウエアトロイが含まれているものを(HT-inserted)、ハードウエアトロイが含まれていないものを(HT-free)として示すと次の表1のようになる。
【0047】
【0048】
表1のベンチマークの公知ネットリストには、集合ネットが1つ以上含まれ、集合ネットには1以上の構成ネットが含まれている。この構成ネットには、「疑トロイネット」と称されるトロイネットである可能性がある端子間ネットを見出すことができ、疑トロイネットを含む構成ネットが公知ネットリストに含まれていることが知られている。この疑トロイネットを含む構成ネットを対照ネットと称し、表1のベンチマークのものから9種類の対照ネットを見出すことができることが特許文献3に開示されている。
【0049】
本実施形態では、上記9種類の対照ネットを見つけ出すことなく、ハードウエアトロイを含む既知ネットリスト及びハードウエアトロイを含まない既知ネットリスト(上記ベンチマークのもの)を用いて、上記パラメータ設定手段32と上記入出力更新手段31とによる第1の実施形態で説明した通りの処理を行い、この入出力更新手段31における上記演算を所定回クール行ったときに得られた構成ネット内の入出力値を求める。
【0050】
ハードウエアトロイを含む既知ネットリスト及びハードウエアトロイを含まない既知ネットリスト(上記ベンチマークのもの)の全ての構成ネットに対して上記の処理を行った結果、出力値で小数点以下に例えば5個以上の0を有する数値TO(例えば1e-7)に近い値(トロイ有出力閾値という)や、入力値で1からTOを引いた数値TI(例えば1-(1e-7))に近い値(トロイ有入力閾値という)、が得られる。
【0051】
第1の閾値取得手段34は、全ての構成ネットから得られたトロイ有出力閾値とトロイ有入力閾値についてそれぞれの平均値を得て、第1の閾値とする。また、トロイ有出力閾値が1e-7と1e-6のように1桁以上離れたものが得られた場合には、トロイ有出力閾値の1、トロイ有出力閾値の2として上記の平均値をそれぞれについて求める。また、この場合には、トロイ有入力閾値の1、トロイ有入力閾値の2が得られると、これについても平均値をそれぞれについて求める。そして、第1の閾値は、第1の閾値の1、第1の閾値の2のように複数得られる。
【0052】
判定スコア閾値取得手段35は、構成ネット内のそれぞれの入出力値においてスコア付与をする。スコアは、出力値が、
図15に示すように、トロイ有出力閾値の1以下である場合に2、トロイ有出力閾値の1より大きくトロイ有出力閾値の2以下である場合に1、トロイ有出力閾値の2より大の場合に0である。また、スコアは、入力値が、
図15に示すように、トロイ有入力閾値の1以上である場合に2、トロイ有入力閾値の1より小さくトロイ有入力閾値の2以上である場合に1、トロイ有入力閾値の2より小の場合に0である。
【0053】
スコアは、構成ネットの全ての入力値と全ての出力値に対し与えられる。構成ネットに付与されたスコアの最大スコアを既知ネットリストの集合ネット毎に合計する。従って、構成ネット中の、トロイ有出力閾値より小さな出力値に対応するスコアが最大スコアとなり、またはトロイ有入力閾値より大きな入力値に対応するスコアが最大スコアとなる。
【0054】
次に、最大スコアを既知ネットリストの全集合ネットについて合計する。従って、ハードウエアトロイが含まれている可能性が高い構成ネットと集合ネットを多く含む既知ネットリストにおいて、合計スコアが大きくなる。このようにして得られたネットリスト毎スコアを比較して、最小のネットリスト毎スコアに基づき判定スコア閾値を得る。例えば、最小の既知ネットリスト毎スコアに1を加えた値を判定スコア閾値とする。表1のベンチマークの既知ネットリストを用いると、3が判定スコア閾値として求められる。
【0055】
上記検出手段33Aは、検査対象のネットリストの構成ネット毎に入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与する。この動作では、第1の閾値取得手段34が求めた第1の閾値を用いて、検出手段33Aが、検査対象のネットリストの構成ネット毎に入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与する。スコアの付与は、
図15に示した第1の閾値とスコアとの変換テーブルのデータを用いて行われる。
【0056】
検出手段33Aによるスコア付与と同様に、構成ネットの全ての入力値と全ての出力値に対し与えられる。構成ネットに付与されたスコアの最大スコアを既知ネットリストの集合ネット毎に合計される。従って、検査対象のネットリストの構成ネット中の、トロイ有出力閾値より小さな出力値に対応するスコアが最大スコアとなり、またはトロイ有入力閾値より大きな入力値に対応するスコアが最大スコアとなる。
【0057】
次に、最大スコアを検査対象ネットリストの全集合ネットについて合計し、検査対象スコアが得られる。この検査対象スコアと判定スコア閾値(前述の例では、3)とを比較し、上記検査対象のネットリスト中のハードウエアトロイの検出を行う。具体的には、検査対象スコアが判定スコア閾値(前述の例では、3)以上である場合には、ハードウエアトロイが存在すると判定し、その旨を表示装置25に表示させるなどの出力処理を行う。
【0058】
この第2の実施形態では、
図14に示されるように、第2の閾値取得手段36を備える。第2の閾値取得手段36は、所定時間内に一定値を出力するクロック数が所定値以上であり、最大スコアネット数が最大スコアネット数閾値以下である条件に合致するハードウエアトロイを含むと予想される既知ネットリストを複数の既知ネットリスト中から抽出する。
【0059】
判定スコア閾値取得手段35においては、既知ネットリスト内のそれぞれの構成ネットにおいて入出力値と第1の閾値との大小関係に応じて所定値のスコアを付与し、構成ネットに付与されたスコアの最大スコアを既知ネットリストの全集合ネットについて合計する。
【0060】
表1に示すベンチマークの既知ネットリストについて、上記最大スコアネット数とトロイネットの含有の関係を検討すると、公知トロイネットを含む場合には最大スコアネット数が比較的小さく、最大スコアネット数(Xnumber)の最も大きな値は、ベンチマーク(s38417-T100)の5である。このように、公知トロイネットを含む/含まないについては、複数の既知ネットリストの最大スコアネット数(Xnumber)を調べ、調べた中で最も大きい最大スコアネット数(Xnumber)を最大スコアネット数閾値(Tnumber)とすることができる。最大スコアネット数が最大スコアネット数閾値以下であるという条件が、公知トロイネットを含む既知ネットリストである条件(ネット数条件という)である。
【0061】
一方、例えば、
図16に示すように、1Mクロック間で一定値を出力する最長のクロック数を、最大一定サイクル数(Max constant cycles)と称する。この最大一定サイクル数が高いほど、最大スコアネットはトロイネットを含む可能性が高くなる。トロイネットは動作し難いため、トロイネットが存在する場合には、長期間にわたって一定値が出力されることが予測される(一定サイクル数条件という)。
【0062】
表1に示したベンチマークの中で、上記「一定サイクル数条件」と上記「ネット数条件」を満たす既知ネットリストのベンチマークは、ベンチマーク(RS232-T1000、s38417-T100、およびvga_lcd-T100)であることが特許文献3に示されている。
【0063】
このように第2の閾値取得手段36は、上記「一定サイクル数条件」と上記「ネット数条件」を満たす既知ネットリストを抽出し、抽出した既知ネットリストを用いて、上記パラメータ設定手段32と上記入出力更新手段31とによる処理を行い、この入出力更新手段31における上記演算を所定回クール行ったときに得られた出力値に基づき第2の閾値を求める。
【0064】
上記の上記パラメータ設定手段32と上記入出力更新手段31とによる処理によって、上記演算を所定回クール行って、出力値を得る処理は、処理する対象のネットリストが、ベンチマーク(RS232-T1000、s38417-T100、およびvga_lcd-T100)のネットリストである点を除けば、同じであり、
図4のフローチャートにおけるステップS11からS15において説明したので、ここでは説明を省略する。
【0065】
以上で、入出力更新手段31における上記演算を所定回クール行ったときに、構成ネット内の入出力値が求められる。この内の出力値としては、小数点以下に例えば5個以上の0を有する数値TO(例えば1e-7)に近い値(トロイ有出力閾値という)が得られ、入力値としては、1からTOを引いた数値TI(例えば1-(1e-7))に近い値(トロイ有入力閾値という)、が得られる。
【0066】
第2の閾値取得手段36は、全ての構成ネットから得られたトロイ有出力閾値とトロイ有入力閾値についてそれぞれの平均値を得て、第2の閾値とする。本実施形態では、3つのベンチマークのネットリストを用いているために、第2の閾値は3つ生成される。最終的には、平均値を第2の閾値とする、或いは、トロイ有出力閾値については最も小さいものを第2の閾値とし、トロイ有入力閾値については最も大きいものを第2の閾値とする。
【0067】
上記検出手段33Aは、上記第2の閾値を用いて上記検査対象のネットリスト中のハードウエアトロイの検出を行う。この上記検出手段33Aによる検出処理は、
図4のフローチャートにより示した通りであり、このフローチャートにおいて、ステップS16において用いる閾値が上記第2の閾値となる。
【0068】
この第2の実施形態によるハードウエアトロイ検出の処理を、入出力更新手段31、パラメータ設定手段32以外に、検出手段33A、第1の閾値取得手段34、判定スコア閾値取得手段35、第2の閾値取得手段36による処理手順として示すと、
図17のフローチャートに示すようである。
【0069】
まず、第1の閾値を取得するための処理が行われる(S51)。このステップS51においては、入出力更新手段31、パラメータ設定手段32、第1の閾値取得手段34により処理が行われる。次に、判定スコア閾値の取得を行う処理が行われる(S52)。このステップS52においては、判定スコア閾値取得手段35により処理が行われる。次に、検査対象ネットリストについて判定スコア閾値を用いたハードウエアトロイ検出の処理が行われる(S53)。このステップS53においては、入出力更新手段31、パラメータ設定手段32、検出手段33Aにより処理が行われる。
【0070】
次に、第2の閾値を取得するための処理が行われる(S54)。このステップS54においては、入出力更新手段31、パラメータ設定手段32、第2の閾値取得手段36により処理が行われる。更に、検査対象ネットリストについて第2の閾値を用いたハードウエアトロイ検出の処理が行われる(S55)。このステップS55においては、入出力更新手段31、パラメータ設定手段32、検出手段33Aにより処理が行われる。
【0071】
以上のように第1の実施形態、第2の実施形態においても、全論理セルの入出力のネットに初期値としてパラメータを設定し、設定された上記パラメータを用いた上記演算を上記論理セルの全てについて所定回クール行って入力値と出力値の更新を行う処理が基本的な処理となり、簡単な処理で多くの時間を要さないハードウエアトロイの検出を行い得ることが期待される。
【0072】
本発明に係る複数の実施形態を説明したが、これらの実施形態は例として提示するものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0073】
実施形態において説明した、公知ネットリストの数および対照ネットの数はこれらに限定されない。公知ネットリストの数は例示に過ぎない。また、実施形態においては、対照ネットのスコアは変わり得る数値である。最大スコア閾値および最大スコアネット数閾値の値も、変わり得るものである。最大スコア閾値および最大スコアネット数閾値は、一例に過ぎない。また、最大一定クロック数(1Mクロック間で一定値を出力する最長のクロック数)を用いたが、これに限定されるものではない。
【符号の説明】
【0074】
1 第1の実施形態に係るハードウエアトロイ検出装置
1A 第2の実施形態に係るハードウエアトロイ検出装置
11 主メモリ
12 バス
13 外部記憶インタフェース
14 入力インタフェース
15 表示インタフェース
16 ネットワークインタフェース
22 マウス
23 外部記憶装置
24 入力装置
25 表示装置
26 ネットワーク
31 入出力更新手段
32 パラメータ設定手段
33、33A 検出手段
34 第1の閾値取得手段
35 判定スコア閾値取得手段
36 第2の閾値取得手段
41 疑トロイ回路部
42 非トロイ回路部
43 残余回路部