(57)【要約】  セキュリティ設計装置（１００）は、ソフトウェアの処理フローのレベルで脆弱性箇所を自動的に判定する。セキュリティ設計装置（１００）が備える脆弱性分析部（１０５）は、ソフトウェアの処理に対する攻撃による脅威と、脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧（２０２）として取得する。そして、脆弱性分析部（１０５）は、ソフトウェアの処理の処理フローから、脅威一覧（２０２）に含まれる脆弱性記述に対応する脆弱性箇所を判定する。そして、脆弱性分析部（１０５）は、脆弱性箇所の一覧を脆弱性一覧（２１１）として生成する。
2019142335.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成する脆弱性分析部を備えたセキュリティ設計装置。
【請求項２】
前記脆弱性分析部は、
前記脅威一覧に含まれる脆弱性記述を用いて脆弱性テンプレートを取得するとともに、前記処理フローを表すモデルを取得し、前記モデルを前記脆弱性テンプレートに当てはめた検査モデルを生成する検査モデル生成部と、
前記脆弱性テンプレートを用いて前記脆弱性記述の有無を判定する検査プロパティを取得し、前記検査モデルと前記検査プロパティとを用いて、前記モデルに前記脆弱性箇所が存在するかを検証するモデル検査部と、
前記モデルに前記脆弱性箇所が存在すると検証されると、前記処理フローにおける前記脆弱性箇所を前記脆弱性一覧に追加する脆弱性判定部と
を備えた請求項１に記載のセキュリティ設計装置。
【請求項３】
前記脅威一覧に含まれる脆弱性は、ＣＷＥ（Ｃｏｍｍｏｎ  Ｗｅａｋｎｅｓｓ  Ｅｎｕｍｅｒａｔｉｏｎ）から取得され、
前記モデルは、ステートマシンを含む請求項２に記載のセキュリティ設計装置。
【請求項４】
前記脆弱性分析部は、
前記脅威一覧に含まれる脆弱性記述に基づいて、前記脆弱性テンプレートを生成する脆弱性テンプレート生成部と、
前記脆弱性テンプレートを用いて前記検査プロパティを生成する検査プロパティ生成部と
を備えた請求項２または３に記載のセキュリティ設計装置。
【請求項５】
前記セキュリティ設計装置は、
前記脆弱性テンプレートと前記検査プロパティとを記憶する脆弱性データベースと、
前記脅威一覧に含まれる前記脆弱性記述に基づいて、前記脆弱性テンプレートと前記検査プロパティとを前記脆弱性データベースから抽出するデータベース検索部と
を備えた請求項２または３に記載のセキュリティ設計装置。
【請求項６】
前記セキュリティ設計装置は、
前記脅威一覧を取得する脅威一覧取得部と、
前記モデルを取得するモデル取得部と
を備えた請求項２から５のいずれか１項に記載のセキュリティ設計装置。
【請求項７】
前記セキュリティ設計装置は、
脅威と前記脅威に対応する脆弱性記述との一覧を記憶した脅威データベースと、
脅威と前記脅威に対する対策との一覧を記憶した対策データベースと、
前記モデルに基づいて、前記脅威データベースから、前記モデルに対応する前記脅威一覧を抽出するリスク分析部と、
前記脆弱性分析部から前記脆弱性箇所と前記脆弱性箇所に対応する脅威とを含む前記脆弱性一覧を取得し、前記対策データベースから、前記脆弱性一覧に含まれる前記脅威に対応する対策を抽出し、前記モデルにおける前記脅威に対応する前記脆弱性箇所に前記対策を付与する対策反映部と
を備えた請求項２から５のいずれか１項に記載のセキュリティ設計装置。
【請求項８】
前記セキュリティ設計装置は、
利用者により利用されるモデルベース開発部であって、
前記モデルの生成に用いられるモデル化ツール部と、前記対策反映部により前記対策が付与された前記モデルを検証するモデル検証ツール部と、前記モデルに基づいてソースコードを生成するコード生成ツール部とを有するモデルベース開発部を備えた請求項７に記載のセキュリティ設計装置。
【請求項９】
脆弱性分析部が、ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、
脆弱性分析部が、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成するセキュリティ設計方法。
【請求項１０】
ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成するセキュリティ設計処理をコンピュータに実行させるセキュリティ設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラムに関する。
【背景技術】
【０００２】
制御システムのオープン化およびネットワーク化に伴い、制御システムを構成する制御機器へのサイバー攻撃が増加している。よって、セキュリティ対策の必要性が高まっている。セキュリティ対策を体系的に実施するにはセキュリティの専門知識が必要である。しかし、増加するサイバー攻撃に対して、専門知識を持つセキュリティ専門家の不足が課題になっている。そこで、セキュリティの設計および実装プロセスを、体系化し自動化することが必要になる。【０００３】
セキュリティの設計および実装プロセスの流れを説明する。まず、対象機器における潜在的な脅威を網羅的に洗い出す。そして、各脅威の対象となる情報資産の価値および脅威の発生確率といった情報に基づき、各脅威のリスクを評価する。次に、リスクの評価結果に基づき対策すべき脅威を決定する。具体的には、リスクが高いと評価された脅威を優先して対策すべき脅威として決定する。その後、脅威に対するセキュリティ対策を立案し、セキュリティ対策を対象機器の設計に反映させるとともに、実装する。【０００４】
このようなセキュリティの設計および実装プロセスを体系化し自動化する方法として、モデルベース開発と呼ばれる開発手法を利用し、機器のソフトウェア開発とそのセキュリティ対策を同一の設計および開発プロセスに統合する方法がある。
特許文献１の技術では、まず、開発対象の設計書から生成された制御モデルに対して、セキュリティの脅威を保持する脅威データベースの中から該当する脅威を自動的に抽出する。そして、脅威に対する対策を保持する対策データベースから該当する対策が自動的に抽出される。そして、その対策が制御モデルに自動的に反映される。
また、特許文献２の技術では、まず、ユーザにより入力された対象システムのシステム構成、コンポーネント連携、および制約条件といった情報に基づき、脅威および対策データベースを用いて、対象システムに対するセキュリティ脅威を自動的に抽出する。そして、その脅威への対策を自動的に抽出し、出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−０６８８２５号公報
【特許文献２】特開２０１７−１０７４０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術では、対象システムあるいは対象機器に対する潜在的な脅威を抽出している。しかし、抽出した潜在的な脅威を実際に発生させてしまう対象システムあるいは対象機器の脆弱性を特定することはできない。したがって、脅威が存在する機器あるいは機能ブロックという粒度でしか対策箇所を決定することができない。よって、対策を反映したソフトウェアを自動的に設計することができない。よって、対策を反映したソフトウェアを生成するためには、セキュリティ専門家がソフトウェアの設計書あるいはソースコードを分析し、抽出した脅威に対応する脆弱性の箇所を特定する必要があるという課題があった。【０００７】
本発明は、ソフトウェアの処理フローのレベルで脆弱性の箇所を自動的に特定することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るセキュリティ設計装置は、
ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成する脆弱性分析部を備えた。
【発明の効果】
【０００９】
本発明に係るセキュリティ設計装置では、脆弱性分析部が、ソフトウェアの処理に対する攻撃による脅威と脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得する。また、脆弱性分析部が、ソフトウェアの処理の処理フローから、脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定する。そして、脆弱性分析部が、脆弱性箇所の一覧を脆弱性一覧として生成する。よって、本発明に係るセキュリティ設計装置によれば、処理フローのレベルで脆弱性箇所を自動的に判定することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るセキュリティ設計装置の構成図。
【図２】実施の形態１に係る脆弱性分析部の内部構成図。
【図３】実施の形態１に係る制御システムの構成図。
【図４】図３の通信ソフトウェアをステートマシンとして表した図。
【図５】実施の形態１に係る脅威一覧の例を示す図。
【図６】実施の形態１に係る表７０１を示す図。
【図７】実施の形態１に係るセキュリティ設計処理のフローチャート。
【図８】実施の形態１に係る脆弱性テンプレート生成処理の例を示す図。
【図９】図４のステートマシンを変換する例を示す図。
【図１０】実施の形態１に係る脆弱性テンプレート生成処理の別の例を示す図。
【図１１】実施の形態１の変形例に係るセキュリティ設計装置の構成図。
【図１２】実施の形態２に係る脆弱性分析部の内部構成図。
【図１３】実施の形態２に係るセキュリティ設計処理のフローチャート。
【図１４】実施の形態３に係るセキュリティ設計装置の構成図。
【図１５】実施の形態３に係る脅威データベースの一例を示す図。
【図１６】実施の形態３に係る対策データベースの一例を示す図。
【図１７】実施の形態４に係るセキュリティ設計装置の構成図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１２】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係るセキュリティ設計装置１００の構成を説明する。
セキュリティ設計装置１００は、コンピュータである。セキュリティ設計装置１００は、プロセッサ９１０を備えるとともに、記憶装置９２０、入力インタフェース９３０、および出力インタフェース９４０といった他のハードウェアを備える。記憶装置９２０は、メモリと補助記憶装置を備える。プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１３】
セキュリティ設計装置１００は、機能要素として、モデル取得部１０１と、脅威一覧取得部１０３と、脆弱性分析部１０５と、出力部１０７とを備える。
脆弱性分析部１０５の機能は、ソフトウェアにより実現される。
モデル取得部１０１および脅威一覧取得部１０３の機能は、入力インタフェース９３０に備えられる。
出力部１０７の機能は、出力インタフェース９４０に備えられる。
【００１４】
プロセッサ９１０は、セキュリティ設計プログラムを実行する装置である。セキュリティ設計プログラムは、脆弱性分析部１０５の機能を実現するプログラムである。
プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０の具体例は、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１５】
メモリは、データを一時的に記憶する記憶装置である。メモリの具体例は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、あるいはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メモリには、モデル２０１、脅威一覧２０２、あるいは脆弱性一覧２１１といったデータが記憶される。
補助記憶装置は、データを保管する記憶装置である。補助記憶装置の具体例は、ＨＤＤである。また、補助記憶装置は、ＳＤ（登録商標）メモリカード、ＣＦ、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬記憶媒体であってもよい。なお、ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。ＳＤ（登録商標）は、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌの略語である。ＣＦは、ＣｏｍｐａｃｔＦｌａｓｈ（登録商標）の略語である。ＤＶＤは、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋの略語である。
【００１６】
入力インタフェース９３０は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
出力インタフェース９４０は、ディスプレイといった出力機器のケーブルが接続されるポートである。出力インタフェース９４０は、表示インタフェースともいう。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００１７】
セキュリティ設計プログラムは、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。メモリには、セキュリティ設計プログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ９１０は、ＯＳを実行しながら、セキュリティ設計プログラムを実行する。セキュリティ設計プログラムおよびＯＳは、補助記憶装置に記憶されていてもよい。補助記憶装置に記憶されているセキュリティ設計プログラムおよびＯＳは、メモリにロードされ、プロセッサ９１０によって実行される。なお、セキュリティ設計プログラムの一部または全部がＯＳに組み込まれていてもよい。
【００１８】
セキュリティ設計装置１００は、プロセッサ９１０を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、セキュリティ設計プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１０と同じように、セキュリティ設計プログラムを実行する装置である。
【００１９】
セキュリティ設計プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ、補助記憶装置、または、プロセッサ９１０内のレジスタあるいはキャッシュメモリに記憶される。
【００２０】
モデル取得部１０１は、セキュリティ設計装置１００への入力であるモデル２０１を取得する。
脅威一覧取得部１０３は、セキュリティ設計装置１００への入力である脅威一覧２０２を取得する。図１では入力されたデータをモデル２０１および脅威一覧２０２として示している。
脆弱性分析部１０５は、モデル２０１および脅威一覧２０２を入力とし、脆弱性一覧２１１を出力する。
出力部１０７は、脆弱性一覧２１１をセキュリティ設計装置１００の外部に出力する。具体的には、出力部１０７は、脆弱性一覧２１１をディスプレイに表示する。
【００２１】
図２は、本実施の形態に係る脆弱性分析部１０５の内部構成を示している。
脆弱性分析部１０５は、モデル２０１と脅威一覧２０２を入力とする。脆弱性分析部１０５は、脅威一覧２０２の各脅威に対応する脆弱性の箇所をモデル２０１において特定さいた脆弱性一覧２１１を出力する。
【００２２】
脆弱性分析部１０５は、検査モデル生成部２０３と、脆弱性テンプレート生成部２０５と、モデル検査部２０７と、脆弱性判定部２０８と、検査プロパティ生成部２０９とを備える。
脆弱性テンプレート生成部２０５は、入力された脅威一覧２０２の各脅威に対応する脆弱性を検証するためのモデルのテンプレートを脆弱性テンプレート２０６として生成する。
検査プロパティ生成部２０９は、入力された脅威一覧２０２の各脅威に対応する脆弱性を検証するためのプロパティを検査プロパティ２１０として生成する。
検査モデル生成部２０３は、入力されたモデル２０１の粒度を脆弱性テンプレート２０６に合わせて変換し、検査モデル２０４として出力する。
モデル検査部２０７は検査モデル２０４と検査プロパティ２１０を用いてモデル２０１に脆弱性箇所があるかを検証する。
脆弱性判定部２０８は、モデル検査部２０７が出力する検証結果に基づき、モデル２０１における脆弱性の有無とその箇所を特定し、脆弱性一覧２１１として出力する。
【００２３】
セキュリティ設計プログラムは、脆弱性分析部１０５の各部である検査モデル生成部２０３と脆弱性テンプレート生成部２０５とモデル検査部２０７と脆弱性判定部２０８と検査プロパティ生成部２０９の機能を実現するプログラムである。
脆弱性分析部１０５の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてもよい。
セキュリティ設計プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。また、セキュリティ設計方法は、セキュリティ設計装置１００がセキュリティ設計プログラムを実行することにより行われる方法である。
セキュリティ設計プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、セキュリティ設計プログラムは、プログラムプロダクトとして提供されてもよい。
【００２４】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係るセキュリティ設計処理Ｓ１００について説明する。
まず、図３を用いて、セキュリティ設計処理Ｓ１００の説明に用いる制御システムについて説明する。
制御システムは、ＨＭＩ４０１、機器コントローラ４０２、およびフィールド機器４０４からなる。ＨＭＩは、Ｈｕｍａｎ  Ｍａｃｈｉｎｅ  Ｉｎｔｅｒｆａｃｅの略語である。ＨＭＩ４０１と機器コントローラ４０２は、接続４０５で接続される。機器コントローラ４０２とフィールド機器４０４は、接続４０６で接続される。
ＨＭＩ４０１は、運転員が制御システムの監視制御を行うための端末である。運転員による操作に従い、ＨＭＩ４０１は、機器コントローラ４０２に、接続４０５を介して、コマンドを送信する。コマンドは、Ｆｉｎｉｓｈ、Ｓｔａｒｔ、あるいはＳｔｏｐいずれかである。また、ＨＭＩ４０１は、レスポンスあるいはセンサ情報を受信する。
【００２５】
機器コントローラ４０２は、ＨＭＩ４０１から受信したコマンドに従い、フィールド機器４０４にＯＮあるいはＯＦＦいずれかのコマンドを送信する。機器コントローラ４０２の機能は通信ソフトウェア４０３と機器制御ソフトウェア４０７からなる。
通信ソフトウェア４０３は、ＨＭＩ４０１から接続４０５を介して送信されたコマンドを受信する。そして、通信ソフトウェア４０３は、コマンドに対応するレスポンスあるいはセンサ情報をＨＭＩ４０１に送信する。通信ソフトウェア４０３が受信したコマンドに従って、機器制御ソフトウェア４０７は、接続４０６を介してフィールド機器４０４にＯＮあるいはＯＦＦいずれかのコマンドを送信する。また、機器制御ソフトウェア４０７は、フィールド機器４０４から送信されるセンサ情報を受信する。
以下の本実施の形態の説明の具体例として、通信ソフトウェア４０３をセキュリティの検査対象とする。
【００２６】
図４は、図３の通信ソフトウェア４０３をステートマシン５００として表したものである。
５０１は開始状態を表す。５０３は終了状態を表す。５０２と５１１は状態を表す。５０５と５０８は条件分岐を表す。Ｔ０、Ｔ１、Ｔ２、Ｔ３、Ｔ４、Ｔ５、およびＴ６は各状態遷移を識別するラベルである。５０４のように、状態遷移に付与された角括弧ありの文字列は、その状態遷移が発生する条件を表す。５０６のように、状態遷移に付与された角括弧無しの文字列は、その状態遷移に伴い実行される処理を表す。５０９および５１０のように、状態遷移が発生する条件とその状態遷移に伴い実行される処理の両方を記す場合もある。
【００２７】
図４のステートマシン５００により、以下のような通信ソフトウェア４０３の動作が表されている。プログラムの起動後、状態５０２においてコマンド待ちになる。コマンドを受信すると、条件５０４のようにコマンドがＦｉｎｉｓｈであればプログラムを終了する。条件および処理５０９のようにコマンドがＳｔｏｐであれば、フィールド機器をＯＦＦし、再びコマンド待ちになる。条件および処理５１０のようにコマンドがＳｔａｒｔであれば、フィールド機器をＯＮし、再びコマンド待ちになる。
【００２８】
セキュリティの設計および実装プロセスの流れに従って、通信ソフトウェア４０３に対するセキュリティが設計される。まず、図３の制御システムにおける潜在的な脅威を網羅的に洗い出す。本実施の形態に係るセキュリティ設計装置１００では、脅威を網羅的に洗い出した結果の脅威一覧２０２は入力データとして与えられる。
図４のステートマシン５００において、フィールド機器のＯＮあるいはＯＦＦは制御システムの動作に影響する処理である。これらの処理を不正に実行することは、システムに対するセキュリティの脅威である。そこで、「ＨＭＩおよび機器コントローラ間の通信コマンドの改ざんによるフィールド機器の停止」という脅威が、制御システムにおける潜在的な脅威を網羅的に洗い出した結果の一例となる。
【００２９】
図５は、本実施の形態に係る脅威一覧２０２の例に含まれる表６０１および表６０２を示す図である。
脅威一覧２０２は、ソフトウェアの処理に対する攻撃による脅威１６１と、脅威１６１に対して脆弱性を有する処理の記述である脆弱性記述１６２との一覧である。具体的には、機器である制御システムの処理における潜在的な脅威１６１を網羅的に洗い出し、脅威１６１に対する脆弱性を対応付けた情報である。脅威１６１に対する脆弱性として、脆弱性記述１６２が対応付けられている。脅威一覧２０２は、表６０１と表６０２から構成される。
脅威一覧２０２の表６０１には、１行ごとに付される番号と、脅威と、対応する脆弱性とが設定される。対応する脆弱性には、脅威一覧２０２に記された各脅威に対して、その脅威に対応する脆弱性の情報が設定される。脅威一覧２０２に含まれる脆弱性は、例えば、ＣＷＥ（Ｃｏｍｍｏｎ  Ｗｅａｋｎｅｓｓ  Ｅｎｕｍｅｒａｔｉｏｎ）から取得される。ＣＷＥは対象に依存しない一般的な情報である。このため、各脅威に対応するＣＷＥを容易に決定することができる。
【００３０】
図５の表６０１は、通信ソフトウェア４０３に関わる潜在的な脅威を表している。また、各脅威が通信ソフトウェア４０３において実際に発生するのは、通信ソフトウェア４０３が各脅威に対応する脆弱性を持つ場合である。したがって、各脅威への対策を設計するためには、その脅威に対応する脆弱性を特定する必要がある。
【００３１】
図５の表６０２は、表６０１の番号１の脅威に対応するＣＷＥの記述を示している。この記述を脆弱性記述と呼ぶ。
脆弱性分析部１０５による脆弱性の特定の動作について、表６０１の番号１の脅威を例として説明する。
脆弱性分析部１０５は、表６０２のＣＷＥの情報に基づき、番号１の脅威に対応する脆弱性を検査するための検査モデル２０４と検査プロパティ２１０を作成する。そして、脆弱性分析部１０５は、検査モデル２０４と検査プロパティ２１０を用いて番号１の脅威に対応する脆弱性の特定を行う。
そのため、まず、脆弱性テンプレート生成部２０５が抽象的なＣＷＥの記述を具体化した脆弱性テンプレート２０６を生成する。また、検査プロパティ生成部２０９が脆弱性テンプレート２０６に対応する検査プロパティ２１０を生成する。次に、検査モデル生成部２０３がモデル２０１を脆弱性テンプレート２０６に対応付けて変換し、検査モデル２０４を生成する。
【００３２】
図６は、本実施の形態に係る表７０１を示す図である。図６の表７０１は図５の表６０２におけるＣＷＥの記述の具体化の一例である。図６の表７０１によってＣＷＥ−８０７の具体化の規則が与えられている。
番号１では「Ｒｅｌｉａｎｃｅ  ｏｎ  Ａ  ｉｎ  Ｂ」という語句を、検査モデルの大枠を与えるものとして区分している。そして、「Ｒｅｌｉａｎｃｅ  ｏｎ  Ａ  ｉｎ  Ｂ」は、Ａのデータを使ってＢの処理を行うことを意味すると定義している。
番号２では「Ｉｎｐｕｔｓ」という語句をデータとして区分している。そして、「Ｉｎｐｕｔｓ」は入力データを意味すると定義している。
番号３では「Ｕｎｔｒｕｓｔｅｄ」という語句を修飾子として区分している。そして、「Ｕｎｔｒｕｓｔｅｄ」によって修飾されるデータが未検証であることを意味すると定義している。
番号４では「Ｄｅｃｉｓｉｏｎ」という語句を処理として区分している。そして、番号１の規則によって対応付けられた入力データを用いた処理を意味すると定義している。
番号５では「Ｓｅｃｕｒｉｔｙ」という語句を修飾子として区分している。そして、「Ｓｅｃｕｒｉｔｙ」によって修飾子される処理の前に、その処理の対象となるデータの検証が必要である事を意味すると定義している。
【００３３】
図７を用いて、本実施の形態に係るセキュリティ設計処理Ｓ１００について説明する。
図７は本実施の形態に係るセキュリティ設計装置１００の動作をフローチャートで表したものである。
セキュリティ設計装置１００では、脆弱性分析部１０５は、ソフトウェアの処理の処理フローから、脅威一覧２０２に含まれる脆弱性記述に対応する脆弱性箇所を判定する。そして、脆弱性分析部１０５は、脆弱性箇所の一覧を脆弱性一覧２１１として生成する。
【００３４】
ステップＳ１０１において処理が開始される。
ステップＳ１０２において、脆弱性分析部１０５は、モデル取得部１０１を介してモデル２０１を取得する。また、脆弱性分析部１０５は、脅威一覧取得部１０３を介して脅威一覧２０２を取得する。なお、通常、脅威一覧２０２には複数の脅威が含まれている。
ステップＳ１０３からステップＳ１１２の処理は、脅威一覧２０２に含まれる各脅威に関するループ処理である。なお、通常、各脅威に対して、それに対応するＣＷＥ形式の脆弱性は複数ある。
ステップＳ１０４からステップＳ１１１の処理は、脅威に対応する各ＣＷＥに関するループ処理である。
【００３５】
＜脆弱性テンプレート生成処理＞
ステップＳ１０５において、脆弱性テンプレート生成部２０５は、脅威一覧２０２に含まれる脆弱性記述１６２に基づいて、脆弱性テンプレート２０６を生成する。具体的には、脆弱性テンプレート生成部２０５は、処理対象のＣＷＥから脆弱性テンプレート２０６を生成する。脆弱性テンプレート２０６とは、脅威一覧２０２に含まれる脆弱性記述１６２を用いて取得されるテンプレートである。
図８は、本実施の形態に係る脆弱性テンプレート生成処理の例を示す図である。
図８では、図６の表７０１で与えられるＣＷＥ−８０７の具体化の規則に基づき、ＣＷＥ−８０７を検査するための検査モデル２０４の脆弱性テンプレート２０６を作成する手順を示している。
まず、表７０１の番号１の大枠により、８０１の大枠が与えられる。次に、大枠のＡおよびＢの各々に、対応する語句が代入され８０２に変換される。次に、表７０１の番号２および４により、「Ｉｎｐｕｔｓ」の語句が入力データを表す「Ｉｎｐｕｔ」に、「Ｄｅｃｉｓｉｏｎ」の語句が入力データを用いた処理を表す「ＩｎｐｕｔＵｓｅｄ」に変換され、８０２が８０３に変換される。最後に、表７０１の番号３および５により、入力データを未検証のまま処理するような遷移に「脆弱性」のラベルが付与され、８０３が８０４に変換される。
以上の動作により、脆弱性テンプレート生成部２０５は、脆弱性テンプレート２０６を生成する。表７０１は、脆弱性テンプレート２０６の生成のための具体化規則として、例えば、脆弱性テンプレート生成部２０５により保持される。
【００３６】
＜検査プロパティ生成処理＞
ステップＳ１０６において、検査プロパティ生成部２０９は、脆弱性テンプレート２０６を用いて検査プロパティ２１０を生成する。検査プロパティ２１０とは、脆弱性テンプレート２０６を用いて脆弱性記述の有無を判定するために用いられる。脆弱性テンプレート２０６の一具体例である８０４では、状態遷移に「脆弱性」のラベルが付与されていることにより、状態遷移と脆弱性が対応付けられている。したがって、検査プロパティ生成部２０９は、この状態遷移の発生の有無を検査する検査プロパティ２１０を生成する。
【００３７】
＜検査モデル生成処理＞
ステップＳ１０７において、検査モデル生成部２０３は、脆弱性テンプレート２０６と処理フローを表すモデル２０１とを取得し、モデル２０１を脆弱性テンプレート２０６に当てはめた検査モデル２０４を生成する。検査モデル生成部２０３は、モデル２０１を脆弱性テンプレート２０６に対応付けて変換することにより、検査モデル２０４を得る。
図９は、モデル２０１の一具体例である図４のステートマシンを変換する例を示している。図４では、「ＷａｉｔＦｏｒＣｏｍｍａｎｄ」のラベルで示された状態５０２を起点として、「Ｔ１」の状態遷移５０６に伴う「Ｃｏｍｍａｎｄ＝ＲｅｃｅｉｖｅＦｒｏｍＨＭＩ（）」の処理によってデータが入力される。そして、「Ｔ３」の状態遷移の後、「Ｔ４」の状態遷移に伴う「ＳｅｎｄＴｏＦＤ（ＯＦＦ）」の処理、もしくは、「Ｔ５」の状態遷移に伴う「ＳｅｎｄＴｏＦＤ（ＯＮ）」の処理によってデータが使用されている。これらを８０４と対応付ける事で検査モデル２０４が得られる。
以上により、抽象的なＣＷＥの記述が検査モデル２０４と検査プロパティ２１０として具体化された。
【００３８】
＜モデル検査処理＞
ステップＳ１０８において、モデル検査部２０７は、検査モデル２０４と検査プロパティ２１０を用いて検証を行う。モデル検査部２０７は、検査プロパティ２１０を取得し、検査モデル２０１と検査プロパティ２１０とを用いて、モデル２０１に脆弱性箇所が存在するかを検証する。検査モデルの一具体例である図９の検査モデル２０４に対して、検査プロパティ２１０は「脆弱性」のラベルが付けられた状態遷移の発生の有無を検証することである。図９の検査モデル２０４では、「Ｔ１」、「Ｔ３」、「Ｔ４」という状態遷移の連なり、または、「Ｔ１」、「Ｔ３」、「Ｔ５」という状態遷移の連なりによって、「脆弱性」のラベルが付けられた状態遷移が発生する。モデル検査部２０７は、「Ｔ１」、「Ｔ３」、「Ｔ４」という状態遷移の連なり、または、「Ｔ１」、「Ｔ３」、「Ｔ５」という状態遷移の連なりによって、「脆弱性」のラベルが付けられた状態遷移が発生することを検証する。
【００３９】
ステップＳ１０９において、脆弱性判定部２０８は、モデル検査部２０７による検証結果に基づき、脆弱性箇所を判定する。モデルに脆弱性箇所がある場合、処理はステップＳ１１０に進む。モデルに脆弱性箇所がない場合、処理はステップＳ１１１に進む。
【００４０】
＜脆弱性判定処理＞
ステップＳ１１０では、脆弱性判定部２０８は、モデル２０１に脆弱性箇所が存在すると検証されると、処理フローにおける脆弱性箇所を脆弱性一覧２１１に追加する。脆弱性判定部２０８は、検査モデル２０４で見つかった「脆弱性」の状態遷移に対し、それ対応するモデル２０１の状態遷移を抽出する。そして、脆弱性判定部２０８は、抽出されたモデル２０１の状態遷移をモデル２０１の脆弱性の箇所として脆弱性一覧２１１に追加する。具体例では、図９の検査モデル２０４に対する検証により、「脆弱性」のラベルが付けられた状態遷移が発生することが判明した。この状態遷移は、検査モデル２０４に変換される前のモデルである図４の「Ｔ４」または「Ｔ５」の状態遷移に対応している。したがって、図４のステートマシン５００において「Ｔ４」と「Ｔ５」の状態遷移が脆弱性箇所であると判定される。脆弱性判定部２０８は、「Ｔ４」と「Ｔ５」の状態遷移が脆弱性箇所であるという結果を脆弱性一覧２１１に追加する。
【００４１】
ステップＳ１１１およびステップＳ１１２において、各脅威と各ＣＷＥに対するループ処理が終了すると、モデル２０１において判定された全ての脆弱性箇所が脆弱性一覧２１１として記述される。
ステップＳ１１３において、脆弱性判定部２０８は、出力インタフェース９４０を介して、脆弱性一覧２１１を出力する。
ステップＳ１１４において、処理を終了する。
【００４２】
図１０は、本実施の形態に係る脆弱性テンプレート生成処理の別の例を示す図である。
図１０では、表７０１で与えられるＣＷＥ−８０７の具体化の規則に基づき、ＣＷＥ−８０７を検査するための検査モデル２０４の脆弱性テンプレート２０６を作成する手順の別の例を示している。図８で８０１から８０４を得るのと同様の手順で、１００１から１００２が得られる。図８の例では脆弱性のある状態遷移のみ作成している。しかし、図１０ではそれに加えて脆弱性の無い状態遷移も作成し、脆弱性がある場合と無い場合の両方を明示した脆弱性テンプレート２０６を作成する。その結果、１００３の脆弱性テンプレート２０６では、「ＩｎｐｕｔＶｅｒｉｆｉｅｄ」という状態、および、それに関わる状態遷移が追加されている。
図１０の脆弱性テンプレート２０６に対応する検査プロパティ２１０として、１００４のプロパティを作成することができる。１００４はモデル検査と呼ばれる形式手法で用いられる形式であり、状態「Ｉｎｐｕｔ」に到達すれば、その後必ず状態「ＩｎｐｕｔＶｅｒｉｆｉｅｄ」にも到達することを表している。これにより、入力されたデータは必ず検証されるという処理が表現されており、このプロパティを検証することによって処理に脆弱性が無いことが保証される。
【００４３】
＊＊＊他の構成＊＊＊
＜変形例１＞
本実施の形態では、一般的な脆弱性の情報としてＣＷＥを使った場合の動作を説明した。しかし、ＣＷＥ以外の脆弱性情報を使った場合でも、本実施の形態と同様の動作を規定することは容易である。
【００４４】
＜変形例２＞
セキュリティ設計装置１００は、通信装置を備えていてもよい。通信装置は、ネットワークを介して他の装置と通信する。通信装置はネットワークインタフェースでもよい。通信装置は、レシーバとトランスミッタを有する。通信装置は、無線で、ＬＡＮ、インターネット、あるいは電話回線といった通信網に接続している。通信装置は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００４５】
＜変形例３＞
モデル取得部および脅威一覧取得部が行う入力処理を、入力インタフェースを介するのではなく、補助記憶装置に保存されたデータの読み込みにより行ってもよい。また、出力部が行う出力処理を、出力インタフェースを介するのではなく、補助記憶装置へのデータ書き込みにより行ってもよい。データ入出力に関しては、通信装置あるいはネットワークインタフェースを用いてもよい。
【００４６】
＜変形例４＞
本実施の形態では、脆弱性分析部１０５の機能がソフトウェアで実現される。変形例として、脆弱性分析部１０５の機能がハードウェアで実現されてもよい。
【００４７】
図１１は、本実施の形態の変形例に係るセキュリティ設計装置１００の構成を示す図である。
セキュリティ設計装置１００は、電子回路９０９、記憶装置９２０、入力インタフェース９３０、および出力インタフェース９４０を備える。
【００４８】
電子回路９０９は、脆弱性分析部１０５の機能を実現する専用の電子回路である。
電子回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。
脆弱性分析部１０５の機能は、１つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、脆弱性分析部１０５の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
【００４９】
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、セキュリティ設計装置１００において、脆弱性分析部１０５の機能は、プロセッシングサーキットリにより実現される。
【００５０】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係るセキュリティ設計装置１００によれば、機器のソフトウェア開発においてソフトウェアの処理レベルで脆弱性箇所を特定し、処理レベルで対策を入れることができる。本実施の形態に係るセキュリティ設計装置１００では、対象システムおよび対象機器に対する潜在的な脅威に対応する一般的な脆弱性の記述を、脆弱性テンプレートと検査プロパティとして具体化する。そして、ソフトウェアの処理フローレベルのモデルを脆弱性テンプレートと対応付けて検査モデルに変換する。さらに、検査モデルと検査プロパティの検証によって脆弱性の有無とその箇所を特定する。よって、本実施の形態に係るセキュリティ設計装置１００によれば、ソフトウェアの処理フローレベルで脆弱性の有無とその箇所を特定することができる。
【００５１】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
なお、本実施の形態において、実施の形態１と同様の構成には同一の符号を付し、その説明を省略する。
【００５２】
実施の形態１のセキュリティ設計装置は、入力された脅威一覧の各脅威に対応する脆弱性を検証するための脆弱性テンプレートと検査プロパティを動的に作成していた。本実施の形態に係るセキュリティ設計装置では、脆弱性テンプレートと検査プロパティを予め作成し、データベースとして保持する。そして、セキュリティ設計装置は、脆弱性分析を行う際、脆弱性に対応する脆弱性テンプレートと検査プロパティをデータベースから抽出する。
【００５３】
＊＊＊構成の説明＊＊＊
図１２は、本実施の形態に係る脆弱性分析部１０５ａの内部構成を示している。
本実施の形態に係る脆弱性分析部１０５ａは、実施の形態１の脆弱性テンプレート生成部２０５と検査プロパティ生成部２０９に替えて、データベース検索部２２１を備える。また、記憶装置９２０には脆弱性データベース２２２を備える。
脆弱性データベース２２２は、脆弱性テンプレート２０６と検査プロパティ２１０とを記憶する。脆弱性テンプレート２０６と検査プロパティ２１０は、予め生成されて記憶されている。
データベース検索部２２１は、脅威一覧２０２に含まれる脆弱性記述に基づいて、脆弱性テンプレート２０６と検査プロパティ２１０とを脆弱性データベース２２２から抽出する。
【００５４】
＊＊＊動作の説明＊＊＊
図１３を用いて、本実施の形態に係るセキュリティ設計処理Ｓ１００ａについて説明する。
ステップＳ１０１からステップＳ１０４、および、ステップＳ１０７からステップＳ１１４の処理は図７と同様である。
図１３のセキュリティ設計処理Ｓ１００ａは、図７のステップＳ１０５の脆弱性テンプレート生成処理とステップＳ１０６の検査プロパティ生成処理に代わり、ステップＳ１０５ａのデータベース検索処理を有する。
ステップＳ１０５ａにおいて、データベース検索部２２１は、脆弱性データベース２２２を検索し、脆弱性テンプレートと検査プロパティを抽出する。具体的には、データベース検索部２２１は、脅威一覧２０２に含まれるＣＷＥ−８０７のようなＣＷＥ番号をキーとして脆弱性データベース２２２を検索する。あるいは、データベース検索部２２１は、脅威一覧２０２に含まれる脆弱性記述そのものをキーとして脆弱性データベース２２２を検索してもよい。
ステップＳ１０７以降では、脆弱性データベース２２２から抽出された脆弱性テンプレートと検査プロパティを用いてモデル検査処理を実行する。
【００５５】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係るセキュリティ設計装置によれば、脆弱性テンプレートと検査プロパティをあらかじめ作成して脆弱性データベースに保持しているため、脆弱性テンプレートと検査プロパティの作成に要する時間が削減される。
【００５６】
実施の形態３．
本実施の形態では、主に、実施の形態１および２と異なる点について説明する。
なお、本実施の形態において、実施の形態１および２と同様の構成には同一の符号を付し、その説明を省略する。
【００５７】
実施の形態１および２では、モデルと、そのモデルに対する潜在的な脅威一覧を入力として、モデルにおける処理フローレベルでの脆弱性の特定を実現するものであった。本実施の形態では、セキュリティ設計および実装をさらに自動化させるため、脅威一覧の抽出、および、脆弱性の特定後の対策反映を含む態様について説明する。
【００５８】
＊＊＊構成の説明＊＊＊
図１４は、本実施の形態に係るセキュリティ設計装置１００ｂの構成図である。
モデル取得部１０１は、セキュリティ設計装置１００ｂへの入力であるモデル２０１を受け付ける。モデル取得部１０１の機能は実施の形態１と同様である。
リスク分析部１０８は、モデル２０１を入力とし、脅威一覧２０２を出力する。
脆弱性分析部１０５は、モデル２０１および脅威一覧２０２を入力とし、脆弱性一覧２１１を出力する。脆弱性分析部１０５の機能は実施の形態１と同様である。
対策反映部１０９は、モデル２０１と脆弱性一覧２１１を入力とし、脆弱性への対策が反映されたモデル２０１ｂを出力する。脆弱性への対策が反映されたモデル２０１ｂは、モデル２０１としてフィードバックされる。
出力部１０７は、モデル２０１をセキュリティ設計装置１００ｂの外部に出力する。
【００５９】
＊＊＊動作の説明＊＊＊
リスク分析部１０８の動作の一例について説明する。
ここでは、セキュリティ設計装置１００ｂは、脅威データベース５０１と対策データベース５０２を備えるものとする。脅威データベース５０１は、脅威と脅威に対応する脆弱性記述との一覧を記憶する。対策データベース５０２は、脅威と脅威に対する対策との一覧を記憶する。
【００６０】
図１５は、本実施の形態に係る脅威データベース５０１の一例を示す図である。
脅威データベース５０１には、各行に付された番号と、脅威と、発生個所と、脅威に対応する脆弱性とが設定されている。
リスク分析部１０８は、モデル２０１に基づいて、脅威データベース５０１から、モデル２０１に対応する脅威一覧２０２を抽出する。リスク分析部１０８は、脅威データベース５０１を用いてモデル２０１に対する潜在的な脅威を抽出する。リスク分析部１０８は、脅威と、その脅威に対応する脆弱性に関する情報とを脅威一覧２０２として出力する。脅威データベース５０１は、特定のシステムあるいは特定の機器に依存しない一般的な脅威を示している。図１５の脅威データベース５０１では、番号２の脅威により、通信路において情報資産の改ざんの脅威が存在することが分かる。これを、図３の制御システムに適用することによって、表６０１の番号１に示した「ＨＭＩおよび機器コントローラ間の通信コマンドの改ざんによるフィールド機器の停止」という脅威が抽出される。
【００６１】
脆弱性分析部１０５の動作に関しては、実施の形態１で説明した通りである。表６０１の番号１に示した「ＨＭＩおよび機器コントローラ間の通信コマンドの改ざんによるフィールド機器の停止」という脅威を実際に発生させてしまう脆弱性として、図４のステートマシンの「Ｔ４」と「Ｔ５」の状態遷移が特定される。
【００６２】
図１６は、本実施の形態に係る対策データベース５０２の一例を示す図である。
対策データベース５０２には、各行に付された番号と、脅威と、脅威に対応する対策とが設定されている。
対策反映部１０９は、脆弱性分析部１０５から脆弱性箇所と脆弱性箇所に対応する脅威とを含む脆弱性一覧２１１を取得する。対策反映部１０９は、対策データベース５０２から、脆弱性一覧に含まれる脅威に対応する対策を抽出する。そして、対策反映部１０９は、モデル２０１における脅威に対応する脆弱性箇所に、抽出した対策を付与する。
具体的には、対策反映部１０９は、脆弱性一覧２１１に含まれる各脆弱性に対する対策を対策データベース５０２から抽出する。対策反映部１０９は、対策データベース５０２から抽出した対策をモデル２０１に反映させる。対策データベース５０２は、特定のシステムあるいは特定の機器に依存しない一般的な対策を示している。図１６の対策データベース５０２では、番号２の対策により、情報資産の改ざんという脅威に対しては、メッセージ認証コードＣＢＣ−ＭＡＣによる検証を行えばよいことが分かる。対策反映部１０９は、このような一般的な対策を、脆弱性一覧２１１で示される処理フローレベルでの脆弱性の箇所と組み合わせる。つまり、対策反映部１０９は、脆弱性一覧２１１で示される処理フローレベルで対策を入れる。具体的には、図４のステートマシンでは、「Ｔ４」と「Ｔ５」の状態遷移が脆弱性の箇所であることが特定されている。よって、対策反映部１０９は、これらの直前である「Ｔ３」の状態遷移に伴う処理としてメッセージ認証コードＣＢＣ−ＭＡＣを入れる。
【００６３】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係るセキュリティ設計装置１００ｂは、入力されたモデルに対する潜在的な脅威を抽出する機能を有する。また、セキュリティ設計装置１００ｂは、抽出された潜在的な脅威に対応する一般的な脆弱性の記述を、脆弱性テンプレートと検査プロパティとして具体化する。また、セキュリティ設計装置１００ｂは、ソフトウェアの処理フローレベルのモデルを脆弱性テンプレートと対応付けて検査モデルに変換する。そして、セキュリティ設計装置１００ｂは、検査モデルと検査プロパティの検証によって脆弱性の有無と脆弱性箇所を特定する。さらに、セキュリティ設計装置１００ｂは、脅威に対する対策を抽出し、その対策を脆弱性箇所の特定結果と組み合わせて対策を入れる箇所を決定する。よって、本実施の形態に係るセキュリティ設計装置１００ｂによれば、ソフトウェアの処理フローレベルで対策を反映したモデルを生成することができる。
【００６４】
実施の形態４．
本実施の形態では、主に、実施の形態３と異なる点について説明する。
なお、本実施の形態において、実施の形態１および２と同様の構成には同一の符号を付し、その説明を省略する。
【００６５】
実施の形態３は、入力されたモデルに対策を反映させて出力することを目的とする。本実施の形態では、セキュリティ設計および実装をさらに自動化させるため、モデルベース開発の枠組として統合する態様について説明する。
【００６６】
図１７は、本実施の形態に係るセキュリティ設計装置１００ｃの構成図である。
セキュリティ設計装置１００ｃは、モデルベース開発の統合開発環境にセキュリティ設計が統合されている。セキュリティ設計装置１００ｃは、利用者により利用されるモデルベース開発部１９０を備える。モデルベース開発部１９０は、モデルの生成に用いられるモデル化ツール部、対策反映部により対策が付与されたモデルを検証するモデル検証ツール部、モデルに基づいてソースコードを生成するコード生成ツール部を有する。
モデル化ツール部１１１では、ユーザがＧＵＩといったインタフェースを用いてモデルを作成し、作成されたモデルはモデル２０１として出力される。
モデル２０１に対して、リスク分析部１０８、脆弱性分析部１０５、および対策反映部１０９による処理によって対策が反映される。
モデル検証ツール部１１２では、モデルベース開発の統合開発環境が備えている検証機能によって、ユーザが定義したモデルに対する要件が検証される。
コード生成ツール部１１３では、モデルベース開発の統合開発環境が備えているコード生成機能によって、モデルからソースコード２１２が生成される。
出力部１０７は、ソースコード２１２をセキュリティ設計装置１００ｃの外部に出力する。
【００６７】
本実施の形態では、モデルは外部からの入力ではなく、モデルベース開発のプロセスの１つとして、モデルベース開発部の統合開発環境で作成される。また、モデルに対する対策が反映された後は、モデルベース開発のプロセスとしてモデルの検証およびモデルからのソースコード生成が行われる。
【００６８】
本実施の形態に係るセキュリティ設計装置１００ｃは、モデルベース開発の統合開発環境にセキュリティ設計を統合している。このため、ユーザが通常通りのモデルベース開発フローによってモデルを設計するだけで、そのモデルに対する潜在的な脅威が自動的に抽出される。さらに、その脅威に対するソフトウェアの処理フローレベルでの対策が自動的にモデルに反映され、対策が反映されたソースコードが生成される。
【００６９】
以上の実施の形態１から４では、セキュリティ設計装置の各部を独立した機能ブロックとして説明した。しかし、セキュリティ設計装置の構成は、上述した実施の形態のような構成でなくてもよい。セキュリティ設計装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。
【００７０】
以上の実施の形態１から４のうち、複数の部分を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つの部分を実施しても構わない。その他、これらの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
【符号の説明】
【００７１】
１００，１００ｂ，１００ｃ  セキュリティ設計装置、１０１  モデル取得部、１０３  脅威一覧取得部、１０５，１０５ａ  脆弱性分析部、１０７  出力部、１０８  リスク分析部、１０９  対策反映部、１１１  モデル化ツール部、１１２  モデル検証ツール部、１１３  コード生成ツール部、１９０  モデルベース開発部、２０１，２０１ｂ  モデル、２０２  脅威一覧、２０３  検査モデル生成部、２０４  検査モデル、２０５  脆弱性テンプレート生成部、２０６  脆弱性テンプレート、２０７  モデル検査部、２０８  脆弱性判定部、２０９  検査プロパティ生成部、２１０  検査プロパティ、２１１  脆弱性一覧、２１２  ソースコード、２２１  データベース検索部、２２２  脆弱性データベース、４０１  ＨＭＩ、４０２  機器コントローラ、４０３  通信ソフトウェア、４０４  フィールド機器、４０５，４０６  接続、４０７  機器制御ソフトウェア、５００  ステートマシン、５０１  脅威データベース、５０２  対策データベース、６０１，６０２，７０１  表、１６１  脅威、１６２  脆弱性記述、９０９  電子回路、９１０  プロセッサ、９２０  記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、Ｓ１００  セキュリティ設計処理。
【図１】
2019142335.tif 000003
【図２】
2019142335.tif 000004
【図３】
2019142335.tif 000005
【図４】
2019142335.tif 000006
【図５】
2019142335.tif 000007
【図６】
2019142335.tif 000008
【図７】
2019142335.tif 000009
【図８】
2019142335.tif 000010
【図９】
2019142335.tif 000011
【図１０】
2019142335.tif 000012
【図１１】
2019142335.tif 000013
【図１２】
2019142335.tif 000014
【図１３】
2019142335.tif 000015
【図１４】
2019142335.tif 000016
【図１５】
2019142335.tif 000017
【図１６】
2019142335.tif 000018
【図１７】
2019142335.tif 000019
【手続補正書】
【提出日】令和1年7月31日(2019.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成する脆弱性分析部を備え、
前記脆弱性分析部は、
前記脅威一覧に含まれる脆弱性記述を用いて脆弱性テンプレートを取得するとともに、前記処理フローを表すモデルを取得し、前記モデルを前記脆弱性テンプレートに当てはめた検査モデルを生成する検査モデル生成部と、
前記脆弱性テンプレートを用いて前記脆弱性記述の有無を判定する検査プロパティを取得し、前記検査モデルと前記検査プロパティとを用いて、前記モデルに前記脆弱性箇所が存在するかを検証するモデル検査部と、
前記モデルに前記脆弱性箇所が存在すると検証されると、前記処理フローにおける前記脆弱性箇所を前記脆弱性一覧に追加する脆弱性判定部と、
前記脅威一覧に含まれる脆弱性記述に基づいて、前記脆弱性テンプレートを生成する脆弱性テンプレート生成部と、
前記脆弱性テンプレートを用いて前記検査プロパティを生成する検査プロパティ生成部と
を備えたセキュリティ設計装置。
【請求項２】
ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成する脆弱性分析部を備え、
前記脆弱性分析部は、
前記脅威一覧に含まれる脆弱性記述を用いて脆弱性テンプレートを取得するとともに、前記処理フローを表すモデルを取得し、前記モデルを前記脆弱性テンプレートに当てはめた検査モデルを生成する検査モデル生成部と、
前記脆弱性テンプレートを用いて前記脆弱性記述の有無を判定する検査プロパティを取得し、前記検査モデルと前記検査プロパティとを用いて、前記モデルに前記脆弱性箇所が存在するかを検証するモデル検査部と、
前記モデルに前記脆弱性箇所が存在すると検証されると、前記処理フローにおける前記脆弱性箇所を前記脆弱性一覧に追加する脆弱性判定部と、
脅威と前記脅威に対応する脆弱性記述との一覧を記憶した脅威データベースと、
脅威と前記脅威に対する対策との一覧を記憶した対策データベースと、
前記モデルに基づいて、前記脅威データベースから、前記モデルに対応する前記脅威一覧を抽出するリスク分析部と、
前記脆弱性分析部から前記脆弱性箇所と前記脆弱性箇所に対応する脅威とを含む前記脆弱性一覧を取得し、前記対策データベースから、前記脆弱性一覧に含まれる前記脅威に対応する対策を抽出し、前記モデルにおける前記脅威に対応する前記脆弱性箇所に前記対策を付与する対策反映部と
を備えたセキュリティ設計装置。
【請求項３】
前記セキュリティ設計装置は、
利用者により利用されるモデルベース開発部であって、
前記モデルの生成に用いられるモデル化ツール部と、前記対策反映部により前記対策が付与された前記モデルを検証するモデル検証ツール部と、前記モデルに基づいてソースコードを生成するコード生成ツール部とを有するモデルベース開発部を備えた請求項２に記載のセキュリティ設計装置。
【請求項４】
前記脅威一覧に含まれる脆弱性は、ＣＷＥ（Ｃｏｍｍｏｎ  Ｗｅａｋｎｅｓｓ  Ｅｎｕｍｅｒａｔｉｏｎ）から取得され、
前記モデルは、ステートマシンを含む請求項１から請求項３のいずれか１項に記載のセキュリティ設計装置。
【請求項５】
前記セキュリティ設計装置は、
前記脆弱性テンプレートと前記検査プロパティとを記憶する脆弱性データベースと、
前記脅威一覧に含まれる前記脆弱性記述に基づいて、前記脆弱性テンプレートと前記検査プロパティとを前記脆弱性データベースから抽出するデータベース検索部と
を備えた請求項１から請求項４のいずれか１項に記載のセキュリティ設計装置。
【請求項６】
前記セキュリティ設計装置は、
前記脅威一覧を取得する脅威一覧取得部と、
前記モデルを取得するモデル取得部と
を備えた請求項１から請求項５のいずれか１項に記載のセキュリティ設計装置。
【請求項７】
脆弱性分析部が、ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成し、
検査モデル生成部が、前記脅威一覧に含まれる脆弱性記述を用いて脆弱性テンプレートを取得するとともに、前記処理フローを表すモデルを取得し、前記モデルを前記脆弱性テンプレートに当てはめた検査モデルを生成し、
モデル検査部が、前記脆弱性テンプレートを用いて前記脆弱性記述の有無を判定する検査プロパティを取得し、前記検査モデルと前記検査プロパティとを用いて、前記モデルに前記脆弱性箇所が存在するかを検証し、
脆弱性判定部が、前記モデルに前記脆弱性箇所が存在すると検証されると、前記処理フローにおける前記脆弱性箇所を前記脆弱性一覧に追加し、
脆弱性テンプレート生成部が、前記脅威一覧に含まれる脆弱性記述に基づいて、前記脆弱性テンプレートを生成し、
検査プロパティ生成部が、前記脆弱性テンプレートを用いて前記検査プロパティを生成するセキュリティ設計方法。
【請求項８】
脆弱性分析部が、ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成し、
検査モデル生成部が、前記脅威一覧に含まれる脆弱性記述を用いて脆弱性テンプレートを取得するとともに、前記処理フローを表すモデルを取得し、前記モデルを前記脆弱性テンプレートに当てはめた検査モデルを生成し、
モデル検査部が、前記脆弱性テンプレートを用いて前記脆弱性記述の有無を判定する検査プロパティを取得し、前記検査モデルと前記検査プロパティとを用いて、前記モデルに前記脆弱性箇所が存在するかを検証し、
脆弱性判定部が、前記モデルに前記脆弱性箇所が存在すると検証されると、前記処理フローにおける前記脆弱性箇所を前記脆弱性一覧に追加し、
脅威データベースが、脅威と前記脅威に対応する脆弱性記述との一覧を記憶し、
対策データベースが、脅威と前記脅威に対する対策との一覧を記憶し、
リスク分析部が、前記モデルに基づいて、前記脅威データベースから、前記モデルに対応する前記脅威一覧を抽出し、
対策反映部が、前記脆弱性分析部から前記脆弱性箇所と前記脆弱性箇所に対応する脅威とを含む前記脆弱性一覧を取得し、前記対策データベースから、前記脆弱性一覧に含まれる前記脅威に対応する対策を抽出し、前記モデルにおける前記脅威に対応する前記脆弱性箇所に前記対策を付与するセキュリティ設計方法。
【請求項９】
ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成する脆弱性分析処理と、
前記脅威一覧に含まれる脆弱性記述を用いて脆弱性テンプレートを取得するとともに、前記処理フローを表すモデルを取得し、前記モデルを前記脆弱性テンプレートに当てはめた検査モデルを生成する検査モデル生成処理と、
前記脆弱性テンプレートを用いて前記脆弱性記述の有無を判定する検査プロパティを取得し、前記検査モデルと前記検査プロパティとを用いて、前記モデルに前記脆弱性箇所が存在するかを検証するモデル検査処理と、
前記モデルに前記脆弱性箇所が存在すると検証されると、前記処理フローにおける前記脆弱性箇所を前記脆弱性一覧に追加する脆弱性判定処理と、
前記脅威一覧に含まれる脆弱性記述に基づいて、前記脆弱性テンプレートを生成する脆弱性テンプレート生成処理と、
前記脆弱性テンプレートを用いて前記検査プロパティを生成する検査プロパティ生成処理と
をコンピュータに実行させるセキュリティ設計プログラム。
【請求項１０】
脅威と前記脅威に対応する脆弱性記述との一覧を記憶する脅威データベースと、脅威と前記脅威に対する対策との一覧を記憶する対策データベースとを備えたセキュリティ設計装置のセキュリティ設計プログラムにおいて、
ソフトウェアの処理に対する攻撃による脅威と、前記脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、前記ソフトウェアの処理の処理フローから、前記脅威一覧に含まれる脆弱性記述に対応する脆弱性箇所を判定し、前記脆弱性箇所の一覧を脆弱性一覧として生成する脆弱性分析処理と、
前記脅威一覧に含まれる脆弱性記述を用いて脆弱性テンプレートを取得するとともに、前記処理フローを表すモデルを取得し、前記モデルを前記脆弱性テンプレートに当てはめた検査モデルを生成する検査モデル生成処理と、
前記脆弱性テンプレートを用いて前記脆弱性記述の有無を判定する検査プロパティを取得し、前記検査モデルと前記検査プロパティとを用いて、前記モデルに前記脆弱性箇所が存在するかを検証するモデル検査処理と、
前記モデルに前記脆弱性箇所が存在すると検証されると、前記処理フローにおける前記脆弱性箇所を前記脆弱性一覧に追加する脆弱性判定処理と、
前記モデルに基づいて、前記脅威データベースから、前記モデルに対応する前記脅威一覧を抽出するリスク分析処理と、
前記脆弱性分析処理から前記脆弱性箇所と前記脆弱性箇所に対応する脅威とを含む前記脆弱性一覧を取得し、前記対策データベースから、前記脆弱性一覧に含まれる前記脅威に対応する対策を抽出し、前記モデルにおける前記脅威に対応する前記脆弱性箇所に前記対策を付与する対策反映処理と
をコンピュータに実行させるセキュリティ設計プログラム。
【国際調査報告】
2019142335.tif 000020
2019142335.tif 000021
2019142335.tif 000022