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

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

▶ 日本電気株式会社の特許一覧

<>
  • 特許-検査装置、検査方法、及びプログラム 図1
  • 特許-検査装置、検査方法、及びプログラム 図2
  • 特許-検査装置、検査方法、及びプログラム 図3
  • 特許-検査装置、検査方法、及びプログラム 図4
  • 特許-検査装置、検査方法、及びプログラム 図5
  • 特許-検査装置、検査方法、及びプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-16
(45)【発行日】2024-12-24
(54)【発明の名称】検査装置、検査方法、及びプログラム
(51)【国際特許分類】
   G06F 21/56 20130101AFI20241217BHJP
【FI】
G06F21/56
【請求項の数】 9
(21)【出願番号】P 2024028253
(22)【出願日】2024-02-28
(62)【分割の表示】P 2022529220の分割
【原出願日】2020-06-03
(65)【公開番号】P2024051105
(43)【公開日】2024-04-10
【審査請求日】2024-02-28
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】佐々木 貴之
(72)【発明者】
【氏名】嶋田 有佑
【審査官】平井 誠
(56)【参考文献】
【文献】特開2002-140126(JP,A)
【文献】特開2005-222341(JP,A)
【文献】特開2013-045277(JP,A)
【文献】特開平11-282672(JP,A)
【文献】米国特許出願公開第2019/0220596(US,A1)
【文献】佐々木 貴之,バックドア検査結果に基づくネットワークアクセス制御の提案,2020年 暗号と情報セキュリティシンポジウム予稿集 [online],2020年01月21日,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-88
(57)【特許請求の範囲】
【請求項1】
ソフトウェアにおけるバックドアの有無を検査する検査手段と、
前記ソフトウェアに対して、難読化する処理が実行された第1情報を作成する処理手段と、
検査の結果を示す第2情報を含む証明書を生成する生成手段と、
前記第1情報を前記証明書と共に出力する出力手段と、
を備える検査装置。
【請求項2】
前記検査手段は、前記ソフトウェアのコードブロックについてバックドアの有無を検査する
請求項1に記載の検査装置。
【請求項3】
前記第1情報のハッシュ値を算出する算出手段をさらに備え、
前記生成手段は、前記第2情報及び前記ハッシュ値を含む前記証明書を生成する、
請求項1または請求項2に記載の検査装置。
【請求項4】
前記生成手段は、前記第1情報に前記ハッシュ値を追記する、
請求項3記載の検査装置。
【請求項5】
前記処理手段は、さらに、前記ソフトウェアにセキュリティ機能を示す処理を追加し、前記第1情報は、前記セキュリティ機能を示す処理を含む、
請求項1から4のいずれか1項に記載の検査装置。
【請求項6】
前記処理手段は、前記ソフトウェアに含まれるデバッグ情報の削除処理を含む、
請求項1から5のいずれか1項に記載の検査装置。
【請求項7】
前記処理手段は、前記ソフトウェアにバックドアがない場合、前記第1情報を作成し、前記ソフトウェアにバックドアがある場合、前記第1情報を作成しない、
請求項1記載の検査装置。
【請求項8】
コンピュータが実行する検査方法であって、
ソフトウェアにおけるバックドアの有無を検査すること、
前記ソフトウェアに対して、難読化する処理が実行された第1情報を作成すること、
検査の結果を示す第2情報を含む証明書を生成すること、及び、
前記第1情報を前記証明書と共に出力すること、
を含む検査方法。
【請求項9】
ソフトウェアにおけるバックドアの有無を検査すること、
前記ソフトウェアに対して、難読化する処理が実行された第1情報を作成すること、
検査の結果を示す第2情報を含む証明書を生成すること、及び、
前記第1情報を前記証明書と共に出力すること、
を含む処理を、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、バックドア検査装置、バックドア検査方法、及びコンピュータ可読媒体に関する。
【背景技術】
【0002】
インフラや企業システムは、複雑化している。このため、インフラや企業システムは、単一の企業のデバイスだけで構成されるのではなく、様々な企業のデバイスを外部から調達しそれらを組み合わせて、構築されている。
【0003】
しかしながら、近年、これらのデバイスにおいてソフトウェア(ファームウェア)およびハードウェアの両面で、ユーザが認知していない隠された機能又はユーザが予期していない機能が発見される、インシデントが多数報告されている。すなわち、「バックドア」に関連する多数のインシデントが報告されている。「バックドア」とは、例えば、複数の機能を含むソフトウェアに対して該ソフトウェアの一部として組み込まれた、ユーザに知らされていない且つ望まれていない機能として定義できる。
【0004】
特定の種類のバックドアを検知する方法が、例えば、非特許文献1に開示されている。
【先行技術文献】
【非特許文献】
【0005】
【文献】F. Schuster and T. Holz, “Towards reducing the attack surface of software backdoors,” In Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security (CCS), 2013.
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明者らは、例えばソフトウェアがインストールされた機器の機器メーカが、そのソフトウェアにバックドアが含まれていないことを証明したいというニーズ、及び、機器にインストールされているソフトウェアを知財保護の観点から難読化したいというニーズがある、ことを見出した。すなわち、本発明者は、ソフトウェアの信頼性の証明及びソフトウェアの難読化の両方を実現するニーズがあることを見出した。なお、難読化処理は、例えば、ソフトウェアを暗号化する処理、又は、ソフトウェアに対してダミーコードを埋め込む処理等を含む。
【0007】
本開示の目的は、ソフトウェアの信頼性の証明及びソフトウェアの難読化の両方を実現できる、バックドア検査装置、バックドア検査方法、及びコンピュータ可読媒体を提供することにある。
【課題を解決するための手段】
【0008】
第1の態様にかかるバックドア検査装置は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
特定された各コードブロックに対して、バックドアについての検査処理を実行する検査手段と、
前記ソフトウェアに対して難読化処理を含む調整処理を実行する処理手段と、
前記検査処理の結果情報を少なくとも含む第1証明書を生成する証明書生成手段と、
前記調整処理が施されたソフトウェアを前記第1証明書と共に出力する出力手段と、
を具備する。
【0009】
第2の態様にかかるバックドア検査方法は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
特定された各コードブロックに対して、バックドアについての検査処理を実行すること、
前記ソフトウェアに対して難読化処理を含む調整処理を実行すること、
前記検査処理の結果情報を少なくとも含む第1証明書を生成すること、及び、
前記調整処理が施されたソフトウェアを前記第1証明書と共に出力すること、
を含む。
【0010】
第3の態様にかかる非一時的なコンピュータ可読媒体は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
特定された各コードブロックに対して、バックドアについての検査処理を実行すること、
前記ソフトウェアに対して難読化処理を含む調整処理を実行すること、
前記検査処理の結果情報を少なくとも含む第1証明書を生成すること、及び、
前記調整処理が施されたソフトウェアを前記第1証明書と共に出力すること、
を含む処理を、バックドア検査装置に実行させるプログラムが格納している。
【発明の効果】
【0011】
本開示により、ソフトウェアの信頼性の証明及びソフトウェアの難読化の両方を実現できる、バックドア検査装置、バックドア検査方法、及びコンピュータ可読媒体を提供することができる。
【図面の簡単な説明】
【0012】
図1】第1実施形態におけるバックドア検査装置の一例を示すブロック図である。
図2】第2実施形態におけるバックドア検査装置の一例を示すブロック図である。
図3】第2実施形態におけるバックドア検査装置の処理動作の一例を示すフローチャートである。
図4】第3実施形態における特定部の一例を示すブロック図である。
図5】コントロールフローグラフの説明に供する図である。
図6】バックドア検査装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照しつつ、実施形態について説明する。なお、実施形態において、同一又は同等の要素には、同一の符号を付し、重複する説明は省略される。
【0014】
<第1実施形態>
図1は、第1実施形態におけるバックドア検査装置の一例を示すブロック図である。図1に示すバックドア検査装置10は、例えば、認証機関に配設されて用いられる。そして、バックドア検査装置10は、例えば機器メーカから送信されたソフトウェアを受け取る。このソフトウェアは、検査対象であり、以下では、単に「対象ソフトウェア」と呼ぶことがある。対象ソフトウェアは、コンパイル前のソースコードであってもよいし、コンパイル後のバイナリコードであってもよい。
【0015】
図1においてバックドア検査装置10は、特定部11と、検査部12と、調整処理部13と、証明書生成部14と、出力部15とを有している。
【0016】
特定部11は、対象ソフトウェアに含まれる複数の「コードブロック」を特定する。「コードブロック」は、例えば、対象ソフトウェアに含まれる機能に対応する機能ブロックであってもよいし、機能ブロックよりも小さい単位のベーシックブロックであってもよい。
【0017】
検査部12は、特定部11にて特定された各コードブロックに対して、バックドアについての検査処理を実行する。ここで、難読化処理後の対象ソフトウェアについて検査処理を実行することは技術的に難しい。しかしながら、検査部12は「難読化処理」が施される前の対象ソフトウェアに対して検査処理を実行するので、検査処理を確実に実行することができる。
【0018】
調整処理部13は、対象ソフトウェアに対して、「難読化処理」を含む「調整処理」を実行する。「難読化処理」は、上記の通り、対象ソフトウェアを暗号化する処理、又は、対象ソフトウェアに対してダミーコードを埋め込む処理を含む。なお、調整処理部13は、検査処理にて対象ソフトウェアにバックドアであるコードブロックが存在しないという検査結果が得られた場合、調整処理を実行し、検査処理にて対象ソフトウェアにバックドアであるコードブロックが存在するという検査結果が得られた場合、調整処理を実行してもよい。
【0019】
証明書生成部14は、検査処理の結果情報を少なくとも含む証明書(以下では、「第1証明書」と呼ぶことがある)を生成する。検査処理の結果情報は、例えば、対象ソフトウェアにバックドアであるコードブロックが存在するか否かを示す情報を含む。
【0020】
出力部15は、調整処理が施された対象ソフトウェアを第1証明書と共に出力する。これにより、調整処理が施されたソフトウェア及び第1証明書が一緒に例えば機器メーカに送信されることになる。
【0021】
以上で説明したバックドア検査装置10の構成により、ソフトウェアの信頼性の証明及びソフトウェアの難読化の両方を実現することができる。因みに、対象ソフトウェアについての証明書を受け取った後に機器メーカが対象ソフトウェアの難読化処理を行う場合、証明書が意味のないものになってしまう。これに対して、バックドア検査装置10は、ソフトウェアの信頼性の証明及びソフトウェアの難読化の両方を実現できるので、このような問題は生じない。
【0022】
なお、バックドア検査装置10は、バックドア検査方法を実行している。このバックドア検査方法は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、特定された各コードブロックに対して、バックドアについての検査処理を実行すること、ソフトウェアに対して難読化処理を含む調整処理を実行すること、検査処理の結果情報を少なくとも含む第1証明書を生成すること、及び、調整処理が施されたソフトウェアを第1証明書と共に出力すること、を含む。
【0023】
<第2実施形態>
第2実施形態は、より具体的な実施形態に関する。
【0024】
<バックドア検査装置の構成例>
図2は、第2実施形態におけるバックドア検査装置の一例を示すブロック図である。図2においてバックドア検査装置20は、特定部11と、検査部12と、調整処理部13と、出力部15と、ハッシュ値算出部21と、証明書生成部22とを有している。
【0025】
ハッシュ値算出部21は、調整処理部13にて調整処理が施された対象ソフトウェアのハッシュ値を算出する。
【0026】
証明書生成部22は、検査処理の結果情報及びハッシュ値算出部21にて算出されたハッシュ値を含む第1証明書を生成する。例えば、証明書生成部22は、検査部12による検査処理が完了した段階で、検査処理の結果情報を含む証明書(以下では、「第2証明書」と呼ぶことがある)を生成する。そして、証明書生成部22は、ハッシュ値算出部21にてハッシュ値が算出された段階で、第2証明書にハッシュ値を追記することによって第1証明書を生成する。すなわち、第2実施形態における第1証明書には、検査結果と、該検査結果と調整処理後の対象ソフトウェアとを紐づける情報としてのハッシュ値とが含められている。
【0027】
<バックドア検査装置の動作例>
以上の構成を有するバックドア検査装置20の処理動作の一例について説明する。図3は、第2実施形態におけるバックドア検査装置の処理動作の一例を示すフローチャートである。図3に示す処理フローは、例えば、バックドア検査装置20が対象ソフトウェアを受け取るとスタートする。
【0028】
バックドア検査装置20にて特定部11は、対象ソフトウェアに含まれる複数のコードブロックを特定する(ステップS101)。
【0029】
検査部12は、特定された各コードブロックに対して、バックドアについての検査処理を実行する(ステップS102)。
【0030】
証明書生成部22は、検査結果を含む第2証明書を生成する(ステップS103)。
【0031】
調整処理部13は、対象ソフトウェアに対して調整処理を実行する(ステップS104)。
【0032】
ハッシュ値算出部21は、調整処理後の対象ソフトウェアのハッシュ値を算出する(ステップS105)。
【0033】
証明書生成部22は、第2証明書にハッシュ値を追記することによって第1証明書を生成する(ステップS106)。
【0034】
出力部15は、調整処理後の対象ソフトウェアを第1証明書と共に出力する(ステップS107)。
【0035】
以上で説明した第2実施形態によれば、バックドア検査装置20ハッシュ値算出部21は、調整処理部13にて調整処理が施された対象ソフトウェアのハッシュ値を算出する。証明書生成部22は、検査処理の結果情報及びハッシュ値算出部21にて算出されたハッシュ値を含む第1証明書を生成する。
【0036】
このバックドア検査装置20の構成により、検査処理の結果情報及び該結果情報と調整処理後の対象ソフトウェアとを紐づけるハッシュ値の両方を含む第1証明書を生成することができるので、検査処理の結果情報の信頼性(つまり、第1証明書の信頼性)を高めることができる。
【0037】
<変形例>
<1>なお、調整処理は、難読化処理と共に、又は、難読化処理に代えて、コード書き換えによる「セキュリティ機能の追加処理」を含んでいてもよい。例えば、調整処理部13は、「セキュリティ機能の追加処理」として、定期的に自身のメモリをスキャンして改ざんの有無を確認する「関数」を対象ソフトウェアに埋め込んでもよい。具体的には、調整処理部13は、改ざんの有無を確認する関数の実行コードを対象ソフトウェアに追加して、追加した実行コードが呼び出されるように対象ソフトウェアを書き換えてもよい。
【0038】
また、調整処理は、難読化処理と共に、又は、難読化処理に代えて、対象ソフトウェアに含まれる「デバッグ情報の削除処理」を含んでいてもよい。デバッグ情報は、例えば、実行ファイルに含まれている関数名、変数名、ソースコードの行との対応付けの情報などである。例えば、対象ソフトウェアがLinux(登録商標)の場合には、調整処理部13は、stripコマンドを用いてこれらを削除してもよい。
【0039】
<2>また、証明書生成部22は、バックドア検査装置20が配設されている検査機関の署名を、第1証明書に含めてもよい。また、証明書生成部22は、バックドア検査装置20の署名を、第1証明書に含めてもよい。また、証明書生成部22は、調整処理が施される前の対象ソフトウェアのハッシュ値又は名称を、第1証明書に含めてもよい。また、証明書生成部22は、バックドア検査装置20のバージョン、バックドア検査装置20を使用して解析を行った解析者のID、解析者の署名、解析者の所属組織、又は、解析者の氏名等を、第1証明書に含めてもよい。また、証明書生成部22は、検査処理の結果情報として、バックドアであるコードブロックの対象ソフトウェアにおける位置に関する情報を、第1証明書に含めてもよい。
【0040】
<第3実施形態>
第3実施形態は、特定部の構成例に関する。図4は、第3実施形態における特定部の一例を示すブロック図である。図4において特定部11は、特定処理部11Aと、構造解析部11Bとを含む。
【0041】
特定処理部11Aは、対象ソフトウェアにおいて、「予め定められた所定機能」に対応する「所定コードブロック」を特定する。「予め定められた所定機能」は、例えば、「インタフェース機能」、「認証機能(認証ルーチン)」、及び「コマンドパーサ機能(パーサルーチン)」等である。すなわち、「予め定められた所定機能」は、それの後に種々の機能が続く機能である。つまり、「予め定められた所定機能」は、対象ソフトウェアについてのコントロールフローグラフにおいて起点となるコードブロックに対応する。
【0042】
特定処理部11Aは、例えば、複数の所定機能と各所定機能に対応する所定コードブロックの特徴とを対応付けた「特定ルールテーブル(「第1特定テーブル」)」を用いて、所定コードブロックを特定してもよい。この場合、特定処理部11Aは、特定ルールテーブルに保持されている各所定コードブロックの特徴にマッチする、対象ソフトウェアの部分を、所定コードブロックとして特定する。また、特定処理部11Aは、テーブルの代わりに、所定機能を特定するための1つもしくは複数のアルゴリズムやモジュールを実行し、所定コードブロックを特定してもよい。
【0043】
構造解析部11Bは、特定処理部11Aにて特定された所定コードブロックを起点としてコントロールフローを辿ることによって、対象ソフトウェアの構造を解析すると共に、所定機能以外の機能に対応するコードブロックを特定する。例えば、構造解析部11Bは、特定処理部11Aによって特定された認証機能のコードブロックを起点としてコントロールフローを辿ることによって、図5に示すようなコントロールフローグラフを作成する。そして、構造解析部11Bは、「特定ルールテーブル(「第2特定テーブル」)」を用いて、所定機能以外の機能に対応するコードブロックを特定する。「第2特定テーブル」は、起点となるコードブロックの種別と、該種別に応じて特定すべき特定対象コードブロックの特徴とを対応付けている。例えば、「第2特定テーブル」において、起点となるコードブロックである「認証機能のコードブロック」に対しては、「特定対象コードブロックの特徴」として、「コントロールフローグラフにおいて認証ルーチンを通った後に存在するコードブロック」が対応付けられている。また、例えば、「第2特定テーブル」において、起点となるコードブロックである「コマンドパーサ機能のコードブロック」に対しては、「特定対象コードブロックの特徴」として、「パーサによってディスパッチされるコマンド又は関数を含む機能ブロック」が対応付けられている。なお、図3に示すコントロールフローグラフにおいて、「認証機能のコードブロック」及び「(図5にて丸で示されている)特定対象コードブロック」は、それぞれ「ノード」と呼ぶこともできる。また、図5に示すコントロールフローグラフにおいて、矢印は、コントロールフローに対応する。
【0044】
そして、例えば、検査部12は、構造解析部11Bによって作成されたコントロールフローグラフにおいて、認証コードブロックを通らずに、構造解析部11Bにて特定されたコードブロック(つまり、認証が必要な実行部分)に至る「パス(不正パス)」を検出する。
【0045】
また、検査部12は、構造解析部11Bによって作成されたコントロールフローグラフにおいて、仕様書に記載が無いコマンド(又は関数)を含むコードブロックを検出する。
【0046】
<他の実施形態>
図6は、バックドア検査装置のハードウェア構成例を示す図である。図6においてバックドア検査装置100は、プロセッサ101と、メモリ102とを有している。プロセッサ101は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、又はCPU(Central Processing Unit)であってもよい。プロセッサ101は、複数のプロセッサを含んでもよい。メモリ102は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ102は、プロセッサ101から離れて配置されたストレージを含んでもよい。この場合、プロセッサ101は、図示されていないI/Oインタフェースを介してメモリ102にアクセスしてもよい。
【0047】
第1実施形態及び第2実施形態のバックドア検査装置10,20は、それぞれ、図6に示したハードウェア構成を有することができる。第1実施形態及び第2実施形態のバックドア検査装置10,20の、特定部11と、検査部12と、調整処理部13と、証明書生成部14,22と、出力部15と、ハッシュ値算出部21とは、プロセッサ101がメモリ102に記憶されたプログラムを読み込んで実行することにより実現されてもよい。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、バックドア検査装置10,20に供給することができる。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)を含む。さらに、非一時的なコンピュータ可読媒体の例は、CD-ROM(Read Only Memory)、CD-R、CD-R/Wを含む。さらに、非一時的なコンピュータ可読媒体の例は、半導体メモリを含む。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってバックドア検査装置10,20に供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをバックドア検査装置10,20に供給できる。
【0048】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0049】
10 バックドア検査装置
11 特定部
11A 特定処理部
11B 構造解析部
12 検査部
13 調整処理部
14 証明書生成部
15 出力部
20 バックドア検査装置
21 ハッシュ値算出部
22 証明書生成部
図1
図2
図3
図4
図5
図6