(57)【要約】【課題】モデルベース手法に基づいたシステム開発における開発効率を向上できるソフトウェア開発システム等を提供する。【解決手段】情報セキュリティにおけるリスクを発生させる要因である１以上の脅威それぞれのデータを保持する脅威ＤＢ２４０と、モデルベース開発システム１０によって開発対象の設計情報から作成された制御モデル１１０であって開発対象を模擬したモデルである制御モデル１１０の個々の構成要素について、脅威ＤＢ２４０から該当する脅威のデータを抽出することにより、制御モデル１１０に対する複数の脅威を示す脅威一覧データ２１０を作成して出力する脅威分析ツール部２００と、を備える。【選択図】図１
2017068825.tif 000002
【特許請求の範囲】
【請求項１】
情報セキュリティにおけるリスクを発生させる要因である１以上の脅威それぞれを示すデータを保持する脅威ＤＢと、
実行可能モデルを扱う開発システムによって開発対象の設計情報から作成された制御モデルであって前記開発対象を模擬した実行可能モデルである制御モデルの個々の構成要素について、前記脅威ＤＢから該当する脅威のデータを抽出することにより、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力する脅威分析ツール部と、を備える、
ソフトウェア開発システム。
【請求項２】
前記実行可能モデルを扱う開発システムは、モデルベース開発システムである、
請求項１に記載のソフトウェア開発システム。
【請求項３】
前記ソフトウェア開発システムは、さらに、
１以上の脅威それぞれに対する対策手段のデータを保持する対策ＤＢと、
前記脅威分析ツール部が出力した脅威一覧のデータに含まれる複数の脅威それぞれに対する対策手段を、前記対策ＤＢから抽出することにより前記制御モデルに対する対策手段の一覧を示す対策一覧のデータを作成して出力する対策一覧作成ツール部とを備え、
前記対策一覧作成ツール部は、前記対策一覧のデータを前記実行可能モデルを扱う開発システムに出力することにより、前記実行可能モデルを扱う開発システムに、前記対策一覧を前記制御モデルに反映させる、
請求項１または２に記載のソフトウェア開発システム。
【請求項４】
前記ソフトウェア開発システムは、さらに、
情報セキュリティに対する１以上の攻撃それぞれのデータを保持する攻撃ＤＢと、
前記制御モデルを構成する個々の構成要素について、前記攻撃ＤＢから該当する攻撃のデータを抽出することにより、前記制御モデルに対する複数の攻撃を示す攻撃一覧のデータを作成して出力する攻撃一覧作成ツール部とを備え、
前記対策一覧作成ツール部は、前記攻撃一覧のデータを前記実行可能モデルを扱う開発システムに出力することにより、前記実行可能モデルを扱う開発システムに、前記攻撃一覧を前記制御モデルに反映させ、前記攻撃一覧が反映された制御モデルのソースコードの評価をシミュレーションにより行わせる、
請求項３に記載のソフトウェア開発システム。
【請求項５】
前記ソフトウェア開発システムは、
前記実行可能モデルを扱う開発システムによって作成された制御モデルが入力され、入力された制御モデルを構成する複数の要素を、所定の粒度になるようにグルーピングを行い、前記グルーピングを行った複数の要素のデータフローの前後のつながりを設定することにより、前記グルーピングを行った複数の要素を、前記制御モデルの個々の構成要素として、前記脅威分析ツール部に出力する粒度変換部を備える、
請求項１〜４のいずれか１項に記載のソフトウェア開発システム。
【請求項６】
前記粒度変換部は、前記所定の粒度として、前記複数の要素を、情報資産として守るべき要素に接続しない複数の要素と、前記情報資産として守るべき要素に接続する複数の要素とになるようにグルーピングする、
請求項５に記載のソフトウェア開発システム。
【請求項７】
前記粒度変換部は、前記所定の粒度として、前記複数の要素を、予め定めた要素の種類に応じたデザインパターンを用いてパターンマッチングし、当該デザインパターンとマッチングした特定の要素がグループの境界となるように、グルーピングする、
請求項５に記載のソフトウェア開発システム。
【請求項８】
前記所定の粒度は、予め設定されたグルーピング数の上限であり、
前記粒度変換部は、予め設定されたグルーピング数の上限に到達するまで、前記ブロック線図に含まれる複数の要素をグルーピングする、
請求項５に記載のソフトウェア開発システム。
【請求項９】
前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有し、
前記脅威分析ツール部は、
前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素が有する信頼境界情報に基づいて、当該個々の構成要素が前記信頼境界の内部または外部に存するかを判断し、
前記脅威ＤＢから抽出した前記該当する脅威のデータのうち、前記信頼境界の外部にある構成要素についての脅威のデータを用いて、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力する、
請求項１〜８のいずれか１項に記載のソフトウェア開発システム。
【請求項１０】
前記モデルベース開発システムは、
さらに、前記設計情報から前記制御モデルを作成する制御モデル作成ツール部と、
前記制御モデル作成ツール部が作成した前記制御モデルからソースコードを生成する自動コード生成ツール部と、
前記自動コード生成ツール部が生成したソースコードの評価をシミュレーションにより行う評価ツール部とを備え、
前記評価ツール部は、前記ソースコードの評価結果を前記制御モデル作成ツール部にフィードバックすることにより、前記制御モデル作成ツール部に前記制御モデルを修正させる、
請求項２に記載のソフトウェア開発システム。
【請求項１１】
実行可能モデルを扱う開発システムによって開発対象の設計情報から作成された制御モデルであって前記開発対象を模擬した実行可能モデルである制御モデルの脅威分析を行うコンピュータに読み取り可能なプログラムであって、
前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素について、情報セキュリティにおけるリスクを発生させる要因である１以上の脅威それぞれのデータを保持する脅威ＤＢから該当する脅威のデータを抽出することにより、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力する脅威分析ステップを含む、
プログラム。
【請求項１２】
前記プログラムは、さらに、
前記実行可能モデルを扱う開発システムによって作成された制御モデルが入力され、入力された制御モデルを表現したブロック線図に含まれる複数の要素を、所定の粒度になるようにグルーピングを行い、前記グルーピングを行った複数の要素のデータフローの前後のつながりを設定することにより、前記グルーピングを行った複数の要素を、前記制御モデルの個々の構成要素として、前記脅威分析ステップに出力する粒度変換ステップを含む、
請求項１１に記載のプログラム。
【請求項１３】
前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有しており、
前記粒度変換ステップは、前記グルーピングを行った複数の要素それぞれに、前記信頼境界の内部または外部に存するかを示す情報を設定するステップを含む、
請求項１２に記載のプログラム。
【請求項１４】
前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有し、
前記脅威分析ステップは、
前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素を取得するステップと、
取得した前記制御モデルの個々の構成要素と、前記脅威ＤＢの保持する前記１以上の脅威それぞれとを比較して、前記脅威ＤＢから該当する脅威のデータを抽出するステップと、
前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素が有する信頼境界情報に基づいて、当該個々の構成要素が前記信頼境界の内部または外部に存するかを判断するステップと、
前記脅威ＤＢから抽出した前記該当する脅威のデータのうち、前記信頼境界の外部にある構成要素についての脅威のデータを用いて、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力するステップと、を含む、
請求項１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、モデルベース手法に基づいたシステム開発におけるソフトウェア開発システムおよびプログラムに関する。
【背景技術】
【０００２】
システム開発の手法としてモデルベース手法に基づくシステム開発（以下モデルベース開発と記載）が知られている（例えば特許文献１）。モデルベース開発では設計情報などの仕様から実行可能な制御モデルを作成する。モデルベース開発では、作成した制御モデルに基づきシミュレーションを行うことにより設計情報など仕様の妥当性を確認することができる。さらに、作成した制御モデルからソースコードを自動生成し、実行可能モジュールを作成することができる。
【０００３】
このようにモデルベース開発では実行可能モジュールを生成すなわちコードを製品に実装する前に、開発の上流工程で仕様の妥当性を確認することができるので開発効率を上げることができることが知られている。
【０００４】
また、情報システムの分野では、開発したシステムに損失や影響を発生させる可能性がある情報セキュリティにおける「リスク」に対する対策が重要である。
【０００５】
それに対して、情報セキュリティにおけるリスクを発生させる要因であるセキュリティ脅威（以下、脅威と記載）を評価する装置等が提案されている（例えば特許文献２）。特許文献２では、設計情報から自動的に脅威リスク値を算出するものが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２８０７８６号公報
【特許文献２】特開２０１５−４１１６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来技術では、セキュリティ脅威の評価とモデルベース開発とは独立になされている。そのため、開発の上流工程でセキュリティ脅威の評価をしたとしても、システム開発における手戻りが発生してしまう場合があり、開発効率を向上できないという課題がある。
【０００８】
そこで、本開示は、上述の事情を鑑みてなされたもので、モデルベース手法に基づいたシステム開発における開発効率を向上できるソフトウェア開発システム等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本開示の一形態に係るソフトウェア開発システムは、情報セキュリティにおけるリスクを発生させる要因である１以上の脅威それぞれを示すデータを保持する脅威ＤＢと、実行可能モデルを扱う開発システムによって開発対象の設計情報から作成された制御モデルであって前記開発対象を模擬した実行可能モデルである制御モデルの個々の構成要素について、前記脅威ＤＢから該当する脅威のデータを抽出することにより、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力する脅威分析ツール部と、を備える。
【００１０】
なお、これらの全般的または具体的な態様は、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【００１１】
本開示によれば、モデルベース手法に基づいたシステム開発における開発効率を向上できるソフトウェア開発システム等を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態１に係るソフトウェア開発システムのデータの流れを元に表した構成図である。
【図２】図２は、実施の形態１に係るソフトウェア開発システムの全体処理の概要を示すフローチャートである。
【図３】図３は、開発対象の一例である車載システムの構成図である。
【図４】図４は、図３に示す車載システムのシステム構成図である。
【図５Ａ】図５Ａは、実施の形態１に係る粒度変換の一例を説明するための図である。
【図５Ｂ】図５Ｂは、実施の形態１に係る粒度変換部が自動でグルーピングする方法を説明するためのブロック線図の一例を示す図である。
【図５Ｃ】図５Ｃは、実施の形態１に係る粒度変換部が自動でグルーピングする方法を説明するためのブロック線図の一例を示す図である。
【図５Ｄ】図５Ｄは、実施の形態１に係る粒度変換部が自動でグルーピングする処理の一例を示すフローチャートである。
【図５Ｅ】図５Ｅは、実施の形態１に係る粒度変換部が自動でグルーピングする処理の一例を示すフローチャートである。
【図６】図６は、脅威モデルを表現するために使用するデータフローダイアグラムを示す図である。
【図７】図７は、図６の信頼境界の情報を持つ制御モデルのＤＢを示す図である。
【図８】図８は、実施の形態１に係る制御モデルの作成処理を示すフローチャートである。
【図９Ａ】図９Ａは、制御モデルに信頼境界を設定する際の操作を説明するための図である。
【図９Ｂ】図９Ｂは、制御モデルに信頼境界を設定する際の操作を説明するための図である。
【図１０】図１０は、信頼境界の設定操作の処理を示すフローチャートである。
【図１１】図１１は、実施の形態１に係る脅威ＤＢが保持するデータの一例を示す図である。
【図１２】図１２は、実施の形態１に係る脅威一覧データの一例を示す図である。
【図１３】図１３は、実施の形態１に係る脅威一覧データの作成処理を示すフローチャートである。
【図１４Ａ】図１４Ａは、実施の形態１に係る脅威一覧に基づきフィードバックした制御モデルのデータフローダイアグラムを示す図である。
【図１４Ｂ】図１４Ｂは、実施の形態１に係る脅威一覧に基づきフィードバックした制御モデルのデータベースを示す図である。
【図１５】図１５は、実施の形態１におけるＶ字型モデルによるシステム開発の手順を示す図である。
【図１６】図１６は、実施の形態２に係るソフトウェア開発システムのデータの流れを元に表した構成図である。
【図１７】図１７は、実施の形態２に係るソフトウェア開発システムの処理概要を示すフローチャートである。
【図１８】図１８は、実施の形態２に係る対策ＤＢが保持するデータの一例を示す図である。
【図１９】図１９は、実施の形態２に係る対策一覧データの一例を示す図である。
【図２０】図２０は、実施の形態２に係る対策一覧作成ツール部の作成処理を示すフローチャートである。
【図２１】図２１は、対策一覧を制御モデルに反映する処理を示すフローチャートである。
【図２２】図２２は、実施の形態３に係るソフトウェア開発システムのデータの流れを元に表した構成図である。
【図２３】図２３は、実施の形態３に係るソフトウェア開発システムの処理概要を示すフローチャートである。
【図２４】図２４は、実施の形態３に係る攻撃ＤＢが保持するデータの一例を示す図である。
【図２５】図２５は、実施の形態３に係る攻撃一覧データの一例である。
【図２６】図２６は、実施の形態３に係る攻撃一覧作成ツール部の作成処理を示すフローチャートである。
【図２７】図２７は、実施の形態３に係る攻撃のシミュレート機能が付加された制御モデルの一例を示す図である。
【図２８Ａ】図２８Ａは、図２７に示す制御モデル１１０に対策が施された場合の一例を示す図である。
【図２８Ｂ】図２８Ｂは、図２８Ａに示す制御モデルのデータベースを示す図である。
【図２９】図２９は、ＣＡＮメッセージのフォーマットの一部を示す図である。
【図３０】図３０は、実施の形態３におけるＶ字型モデルによるシステム開発の手順を示す図である。
【図３１】図３１は、Ｖ字型モデルによるシステム開発の手順を示す図である。
【発明を実施するための形態】
【００１３】
（発明の基礎となった知見）
以下、本開示の基礎となった知見について説明する。
【００１４】
例えば特許文献１に開示されているように、モデルベース開発によりシステム開発を行うことにより、開発の上流工程で仕様を確認することができ、開発効率を上げることができる。
【００１５】
また、例えば特許文献２に開示される評価装置は、ツールの入力指示に従ってリスク評価に必要となるデータを、設計書のような客観的に入力可能な情報をもとに定義することにより、自動的に脅威のリスク値を算出する。
【００１６】
しかしながら、脅威の評価とモデルベース開発とは独立になされている。そのため、システム開発の上流工程で脅威の評価（脅威分析）を行いシステム設計に反映しても、セキュリティ対策が正しく動作することの保証は下流工程の脆弱性評価に頼ることになる。
【００１７】
図３１は、Ｖ字型モデルによるシステム開発の手順を示す図である。
【００１８】
図３１に示すように、脆弱性評価は、一般的に、実際の商品により近いシステムテストの段階で行われる。しかし、脆弱性評価で脆弱性が発見された場合や、システムテスト後に想定していない新たな脅威が見つかった場合、再度、脅威分析を行い、システム設計からシステムテストにいたる手順を繰り返す必要がある。つまり、下流工程で脆弱性が見つかった場合、上流工程や設計・実装へフィードバックし、手順を繰り返す必要があるため、開発作業で大きな手戻りが発生することになり、開発効率を向上できないという課題がある。さらに、開発コストや納期等の制約があると、見つかった新たな脅威に対して完全な対策を打つことができず、不完全な対策のままの状態の製品が出荷されるケースも生じ得る。
【００１９】
そのため、システム開発の上流工程で脅威分析を実施して、システム設計に反映するだけでなく、開発効率を向上するために、更なる改善が必要とされていた。
【００２０】
以上の事情を鑑みて、本発明者は、モデルベース手法に基づいたシステム開発における開発効率を向上できるソフトウェア開発システム等を提供する。
【００２１】
本開示の一形態に係るソフトウェア開発システムは、情報セキュリティにおけるリスクを発生させる要因である１以上の脅威それぞれを示すデータを保持する脅威ＤＢと、実行可能モデルを扱う開発システムによって開発対象の設計情報から作成された制御モデルであって前記開発対象を模擬した実行可能モデルである制御モデルの個々の構成要素について、前記脅威ＤＢから該当する脅威のデータを抽出することにより、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力する脅威分析ツール部と、を備える。
【００２２】
本構成によって、モデルベース手法に基づいたシステム開発における開発効率を向上できる。
【００２３】
ここで、例えば、前記実行可能モデルを扱う開発システムは、モデルベース開発システムである。
【００２４】
また、例えば、前記ソフトウェア開発システムは、さらに、１以上の脅威それぞれに対する対策手段のデータを保持する対策ＤＢと、前記脅威分析ツール部が出力した脅威一覧のデータに含まれる複数の脅威それぞれに対する対策手段を、前記対策ＤＢから抽出することにより前記制御モデルに対する対策手段の一覧を示す対策一覧のデータを作成して出力する対策一覧作成ツール部とを備え、前記対策一覧作成ツール部は、前記対策一覧のデータを前記実行可能モデルを扱う開発システムに出力することにより、前記実行可能モデルを扱う開発システムに、前記対策一覧を前記制御モデルに反映させるとしてもよい。
【００２５】
また、例えば、前記ソフトウェア開発システムは、さらに、情報セキュリティに対する１以上の攻撃それぞれのデータを保持する攻撃ＤＢと、前記制御モデルを構成する個々の構成要素について、前記攻撃ＤＢから該当する攻撃のデータを抽出することにより、前記制御モデルに対する複数の攻撃を示す攻撃一覧のデータを作成して出力する攻撃一覧作成ツール部とを備え、前記対策一覧作成ツール部は、前記攻撃一覧のデータを前記実行可能モデルを扱う開発システムに出力することにより、前記実行可能モデルを扱う開発システムに、前記攻撃一覧を前記制御モデルに反映させ、前記攻撃一覧が反映された制御モデルのソースコードの評価をシミュレーションにより行わせるとしてもよい。
【００２６】
また、例えば、前記ソフトウェア開発システムは、前記実行可能モデルを扱う開発システムによって作成された制御モデルが入力され、入力された制御モデルを構成する複数の要素を、所定の粒度になるようにグルーピングを行い、前記グルーピングを行った複数の要素のデータフローの前後のつながりを設定することにより、前記グルーピングを行った複数の要素を、前記制御モデルの個々の構成要素として、前記脅威分析ツール部に出力する粒度変換部を備えるとしてもよい。
【００２７】
また、例えば、前記粒度変換部は、前記所定の粒度として、前記複数の要素を、情報資産として守るべき要素に接続しない複数の要素と、前記情報資産として守るべき要素に接続する複数の要素とになるようにグルーピングするとしてもよい。
【００２８】
また、例えば、前記粒度変換部は、前記所定の粒度として、前記複数の要素を、予め定めた要素の種類に応じたデザインパターンを用いてパターンマッチングし、当該デザインパターンとマッチングした特定の要素がグループの境界となるように、グルーピングするとしてもよい。
【００２９】
また、例えば、前記所定の粒度は、予め設定されたグルーピング数の上限であり、前記粒度変換部は、予め設定されたグルーピング数の上限に到達するまで、前記ブロック線図に含まれる複数の要素をグルーピングするとしてもよい。
【００３０】
また、例えば、前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有し、前記脅威分析ツール部は、前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素が有する信頼境界情報に基づいて、当該個々の構成要素が前記信頼境界の内部または外部に存するかを判断し、前記脅威ＤＢから抽出した前記該当する脅威のデータのうち、前記信頼境界の外部にある構成要素についての脅威のデータを用いて、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力するとしてもよい。
【００３１】
ここで、例えば、前記モデルベース開発システムは、さらに、前記設計情報から前記制御モデルを作成する制御モデル作成ツール部と、前記制御モデル作成ツール部が作成した前記制御モデルからソースコードを生成する自動コード生成ツール部と、前記自動コード生成ツール部が生成したソースコードの評価をシミュレーションにより行う評価ツール部とを備え、前記評価ツール部は、前記ソースコードの評価結果を前記制御モデル作成ツール部にフィードバックすることにより、前記制御モデル作成ツール部に前記制御モデルを修正させるとしてもよい。
【００３２】
また、本開示の一形態に係るプログラムは、実行可能モデルを扱う開発システムによって開発対象の設計情報から作成された制御モデルであって前記開発対象を模擬した実行可能モデルである制御モデルの脅威分析を行うコンピュータに読み取り可能なプログラムであって、前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素について、情報セキュリティにおけるリスクを発生させる要因である１以上の脅威それぞれのデータを保持する脅威ＤＢから該当する脅威のデータを抽出することにより、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力する脅威分析ステップを含む。
【００３３】
また、例えば、前記プログラムは、さらに、前記実行可能モデルを扱う開発システムによって作成された制御モデルが入力され、入力された制御モデルを表現したブロック線図に含まれる複数の要素を、所定の粒度になるようにグルーピングを行い、前記グルーピングを行った複数の要素のデータフローの前後のつながりを設定することにより、前記グルーピングを行った複数の要素を、前記制御モデルの個々の構成要素として、前記脅威分析ステップに出力する粒度変換ステップを含むとしてもよい。
【００３４】
また、例えば、前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有しており、前記粒度変換ステップは、前記グルーピングを行った複数の要素それぞれに、前記信頼境界の内部または外部に存するかを示す情報を設定するステップを含むとしてもよい。
【００３５】
また、例えば、前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有し、前記脅威分析ステップは、前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素を取得するステップと、取得した前記制御モデルの個々の構成要素と、前記脅威ＤＢの保持する前記１以上の脅威それぞれとを比較して、前記脅威ＤＢから該当する脅威のデータを抽出するステップと、前記実行可能モデルを扱う開発システムによって作成された制御モデルの個々の構成要素が有する信頼境界情報に基づいて、当該個々の構成要素が前記信頼境界の内部または外部に存するかを判断するステップと、前記脅威ＤＢから抽出した前記該当する脅威のデータのうち、前記信頼境界の外部にある構成要素についての脅威のデータを用いて、前記制御モデルに対する複数の脅威を示す脅威一覧のデータを作成して出力するステップと、を含むとしてもよい。
【００３６】
以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることもできる。
【００３７】
（実施の形態１）
以下では、図面を参照しながら、実施の形態１におけるソフトウェア開発システム等の説明を行う。
【００３８】
［ソフトウェア開発システム１の構成］
図１は、実施の形態１に係るソフトウェア開発システム１のデータの流れを元に表した構成図である。図２は、実施の形態１に係るソフトウェア開発システム１の全体処理の概要を示すフローチャートである。ソフトウェア開発システム１は、モデルベース開発システム１０と脅威分析システム２０と粒度変換部２５とを備える。ソフトウェア開発システム１は、パソコン等のコンピュータ上で動作し、ソフトウェア開発システム１の使用者によって、開発に必要な情報が入力され、操作される。図１には、モデルベース開発システム１０と脅威分析システム２０とが相互に連携しながら動作する様子がデータの流れを元に示されている。なお、ソフトウェア開発システム１は、モデルベース開発システム１０を有する場合に限らず実行可能モデルを扱う開発システムであればよいが、以下ではモデルベース開発システム１０を有する場合を例に挙げて説明する。
【００３９】
［モデルベース開発システム１０］
図１に示すモデルベース開発システム１０は、制御モデル作成ツール部１００と、自動コード生成ツール部１２０と、評価ツール部１４０とを備える。
【００４０】
制御モデル作成ツール部１００は、設計情報から制御モデルを作成する。より具体的には、制御モデル作成ツール部１００は、使用者の操作により、開発対象を模擬したモデルである制御モデル１１０を作成するための情報が入力され、入力された情報から、制御モデル１１０を作成する。
【００４１】
本実施の形態では、制御モデル作成ツール部１００は、使用者の操作により、システム設計書等から制御モデルのシミュレーションに必要な構成要素や、各構成要素への入出力、データフロー等に加え、脅威分析システム２０が行う脅威分析に必要な信頼境界、グルーピングに関する情報等が入力される。そして、制御モデル作成ツール部１００は、入力された情報から、四則演算、微分・積分、条件式、繰り返し等から成るブロック線図で表現された制御モデル１１０を作成する。なお、脅威分析システム２０が行う脅威分析に必要な信頼境界、グルーピングに関する情報等は、制御モデル作成ツール部１００ではなく、粒度変換部で自動的に、入力されるとしてもよい。また、脅威分析システム２０が行う脅威分析に必要な信頼境界、グルーピングに関する情報等は、脅威分析システム２０が、使用者の操作により、入力されるとしてもよい。また、制御モデル１１０は、データフローダイアグラム（ＤＦＤ）で記述され、データの流れの情報が格納されている。
【００４２】
また、制御モデル作成ツール部１００は、使用者の操作により、評価ツール部１４０の評価結果に基づいて、作成した制御モデル１１０を修正したり、脅威一覧データ２１０に基づく内容を制御モデル１１０に反映（フィードバック）したりする。ここで、制御モデル１１０に反映するとは、脅威に対する対策を施した制御モデル１１０に修正することを意味する。詳細は後述する。
【００４３】
自動コード生成ツール部１２０は、制御モデル作成ツール部１００が作成した制御モデル１１０からソースコードを生成する。より具体的には、自動コード生成ツール部１２０は、制御モデル作成ツール部１００が作成した制御モデル１１０から実行可能なソースコード１３０を生成する。本実施の形態では、ソースコード１３０は、開発対象（開発対象となる機器やモジュール等）のプログラムのソースコードを含んでいる。
【００４４】
評価ツール部１４０は、自動コード生成ツール部１２０が生成したソースコードの評価をシミュレーションにより行う。評価ツール部１４０は、その評価結果を制御モデル作成ツール部１００にフィードバックすることにより、制御モデル作成ツール部１００に制御モデル１１０を修正させる。本実施の形態では、評価ツール部１４０は、自動コード生成ツール部１２０が生成したソースコードをシミュレーションにより実行し、開発対象の機能のソースコードの動作を調べ、開発対象が適切に動作したか否かを含む評価結果１５０を出力する。
【００４５】
［粒度変換部２５］
図１に示す粒度変換部２５は、制御モデル作成ツール部１００が作成した制御モデル１１０に含まれる複数の構成要素を、脅威分析システム２０で脅威分析に適した粒度に変換（グルーピング）する。粒度変換部２５は、グルーピングした複数の構成要素を含む制御モデル１１０を脅威分析システム２０に出力する。制御モデル１１０がそのまま脅威分析システム２０に出力された場合でも脅威分析することはできるが、脅威分析の粒度が小さく、膨大な数の脅威が抽出されてしまうからである。つまり、脅威分析の粒度が小さいと、制御モデル作成ツール部１００にフィードバックするのが現実的でなくなるからである。
【００４６】
本実施の形態では、粒度変換部２５は、モデルベース開発システム１０によって作成された制御モデル１１０が入力され、入力された制御モデル１１０を構成する複数の要素を、所定の粒度になるようにグルーピングを行う。粒度変換部２５は、グルーピングを行った複数の要素のデータフローの前後のつながりを設定することにより、グルーピングを行った複数の要素を、制御モデル１１０の個々の構成要素として、脅威分析システム２０に出力する。
【００４７】
例えば、粒度変換部２５は、所定の粒度として、複数の要素を、情報資産として守るべき要素に接続しない複数の要素と、情報資産として守るべき要素に接続する複数の要素とになるようにグルーピングしてもよい。また、例えば、粒度変換部２５は、所定の粒度として、複数の要素を、予め定めた要素の種類に応じたデザインパターンを用いてパターンマッチングし、当該デザインパターンとマッチングした特定の要素がグループの境界となるように、グルーピングしてもよい。なお、デザインパターンの例は、後述する図５Ｃの左上の細点線で囲まれたグループおよび右側半分の細点線で囲まれたグループである。また、粒度変換部２５は、特定の要素が出現したらグループの境界とするしてもよい。ここで、特定の要素は、例えばゲートウェイなどの外部のネットワークに繋がるモジュールであり一般的に信頼境界が引かれるものなどである。また、例えば、所定の粒度は、予め設定されたグルーピング数の上限であってもよい。この場合、粒度変換部２５は、予め設定されたグルーピング数の上限に到達するまで、複数の要素をグルーピングすればよい。
【００４８】
なお、モデルベース開発システム１０によって作成された制御モデル１１０の個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有している。そのため、粒度変換部２５は、グルーピングを行った複数の要素それぞれに、信頼境界の内部または外部に存するかを示す情報を設定してもよい。
【００４９】
［脅威分析システム２０］
図１に示す脅威分析システム２０は、脅威分析ツール部２００と、脅威ＤＢ２４０とを備える。
【００５０】
脅威ＤＢ２４０は、情報セキュリティにおけるリスクを発生させる要因である１以上の脅威それぞれのデータを保持するデータベースである。本実施の形態では、脅威ＤＢ２４０には、脅威それぞれの種類とそれぞれの脅威が起きる条件とが格納されている。
【００５１】
脅威モデル２４５は、後述する図６のＤＦＤと脅威ＤＢ２４０で表現され、例えば、開発対象がどのようなセキュリティ脅威にさらされており、攻撃される可能性を持ちうるかを洗い出した結果である。
【００５２】
脅威分析ツール部２００は、制御モデル１１０の個々の構成要素について、脅威ＤＢ２４０から該当する脅威のデータを抽出することにより、制御モデル１１０に対する複数の脅威を示す脅威一覧のデータを作成して出力する。ここで、制御モデル１１０は、モデルベース開発を行うモデルベース開発システム１０によって開発対象の設計情報から作成された制御モデル１１０であって開発対象を模擬したモデルである。
【００５３】
より具体的には、脅威分析ツール部２００は、粒度変換部２５の出力を脅威モデル２４５とし、脅威分析ツール部２００の入力を脅威モデル２４５と脅威ＤＢ２４０として、制御モデル１１０に対する脆弱性を解析し、脅威一覧のデータ（脅威一覧データ２１０）を出力する。すなわち、脅威分析ツール部２００は、後述する図６のＤＦＤと脅威ＤＢ２４０で脅威モデル２４５を表現し、制御モデル１１０について、脅威ＤＢ２４０が保持する脅威と一致する脅威のデータを抽出して脅威一覧データ２１０を作成して出力する。
【００５４】
なお、モデルベース開発システム１０によって作成された制御モデル１１０の個々の構成要素は、セキュリティにおける信頼境界の内部または外部に存することを示す信頼境界情報を有している。脅威分析ツール部２００は、脅威ＤＢ２４０から抽出した該当する脅威のデータのうち、信頼境界の外部にある構成要素についての脅威のデータを用いて、制御モデル１１０に対する複数の脅威を示す脅威一覧データ２１０を作成して出力するとしてもよい。
【００５５】
また、例えば、脅威分析ツール部２００は、制御モデル１１０の信頼境界を横断するようなデータの流れがあるかどうかを分析し、信頼境界を横断するデータの流れがある場合に脅威があると判定し、判定した脅威のデータを含めた脅威一覧データ２１０を作成して出力するとしてもよい。
【００５６】
［ソフトウェア開発システム１の処理概要］
次に、以上のように構成されたソフトウェア開発システム１の処理概要について説明する。
【００５７】
図２は、実施の形態１に係るソフトウェア開発システム１の処理概要を示すフローチャートである。
【００５８】
まず、使用者が、制御モデル作成ツール部１００に制御モデル１１０を作成させる（Ｓ１０）。
【００５９】
次に、脅威分析ツール部２００は、粒度が変換された制御モデル１１０から、脅威一覧データ２１０を作成する（Ｓ２０）。
【００６０】
次に、制御モデル作成ツール部１００は、使用者により、脅威一覧データ２１０に基づきフィードバックされた内容を、制御モデル１１０に反映させる（Ｓ３０）。
【００６１】
次に、評価ツール部１４０は、自動コード生成ツール部１２０で生成された、当該内容が反映された制御モデル１１０のソースコードの評価をシミュレーションにより行う（Ｓ４０）。
【００６２】
次に、使用者は、評価ツール部１４０の評価結果にＮＧ箇所があるか否かを判断する（Ｓ５０）。ＮＧ箇所があれば（Ｓ５０でＹｅｓ）、当該個所について使用者の操作により制御モデル作成ツール部１００に制御モデル１１０を修正させ（Ｓ６０）、Ｓ２０に進む。一方、ＮＧ箇所がなければ（Ｓ５０でＮｏ）、処理を終了する。
【００６３】
［効果等］
以上のようにして、本実施の形態におけるソフトウェア開発システム１によれば、開発対象の機器のプログラムを当該機器に実装する前に、脅威分析し、脅威に対する対策を施すことができるので、モデルベース手法に基づいたシステム開発における開発効率を向上できる。
【００６４】
以下、制御モデルを作成する開発対象（制御対象）や粒度変換、信頼境界、信頼境界が設定された制御モデル、信頼境界の設定操作などについて、具体例を挙げてそれぞれ説明する。
【００６５】
（開発対象の一例）
図３は、開発対象の一例である車載システム３００の構成図である。図３には、車載システム３００の内部構成の概略と、外部と車載システム３００との関係が示されている。
【００６６】
外部のサーバ３３０は、通信回線経由で車載システム３００に接続される。車載システム３００は、車載ＧＷ（ゲートウェイ）３１０と、通信部３２０と、各種の機器とを有する。
【００６７】
通信部３２０は車載ＧＷ（ゲートウェイ）３１０に接続する。各種の機器はＣＡＮ等の車載ＬＡＮを経由して車載ＧＷ３１０に接続する。車載ＬＡＮには、外部のサーバ３３０から地図データ、ＥＣＵの更新プログラム、その他テレマティクスサービスに関する情報等がＧＷ３１０を経由して入ってくる。
【００６８】
図４は、図３に示す車載システム３００のシステム構成図である。
【００６９】
外部のテレマティクスサービスは、テレマティクス３４０を経由して車載ＧＷ３１０に接続される。また、診断機器を接続する通信ポートであるＯＢＤ−ＩＩ３５０は、車載ＧＷ３１０に接続される。なお、テレマティクス３４０及びＯＢＤ−ＩＩ３５０は、図３における通信部３２０に対応する。車載ＧＷ３１０は、車載ＬＡＮに接続される。操作ＥＣＵ３７０、表示ＥＣＵ３８０および駆動ＥＣＵ３９０等の各種ＥＣＵは、車載ＬＡＮを経由して車載ＧＷ３１０に接続される。ここで、操作ＥＣＵ３７０は、例えば、ハンドル操作ＥＣＵ、アクセル操作ＥＣＵ、ウィンカー操作ＥＣＵ等である。表示ＥＣＵ３８０は、例えば、速度表示ＥＣＵ、ウィンカー表示ＥＣＵ等である。駆動ＥＣＵ３９０は、タイヤ・サスペンション制御ＥＣＵ、エンジン制御ＥＣＵ等である。
【００７０】
（粒度変換の一例）
図５Ａは、実施の形態１に係る粒度変換の一例を説明するための図である。
【００７１】
図５Ａに示すブロック線図をグルーピングする場合の例について説明する。ブロック線図は、四則演算、微分・積分、条件式、繰り返し等から成るものであって、ソースコードを生成できるレベルの粒度の小さいものである。図５Ａにはブロック線図の例として、要素６０〜要素６５からなるＰＩＤ制御と呼ばれる制御モデルの一例が示されている。
【００７２】
上述したように、粒度の小さいブロック線図に対し、そのまま脅威分析を行うと、膨大な数の脅威が抽出されてしまい、システム設計に反映できないものになってしまう。そこで、本開示では、使用者が粒度変換部２５を用いて脅威分析に適した粒度（分割数）となるように、ブロック線図をグルーピング（粒度変換）する。
【００７３】
図５Ａの点線で囲んだ部分（図でグルーピング領域）を１つのグループにグルーピングする。つまり、図５Ａに示すブロック線図に含まれる複数の要素（要素６０〜要素６５）が１つのグループとなるようにグルーピングする。より具体的には、使用者は、粒度変換部２５が提供するＧＵＩによりグルーピングする対象を選択することで、対象をグルーピングし粒度を大きくする。脅威分析ツール部２００は、粒度変換部２５でグルーピングされた対象を制御モデル１１０の一つの構成要素として脅威分析を行う。
【００７４】
なお、実施の形態１では粒度変換部２５が粒度変換機能（グルーピング機能）を提供するとして説明したがそれに限らない。制御モデル作成ツール部１００または脅威分析ツール部２００が制御モデル１１０に対してグルーピングする機能を有してもよい。
【００７５】
（自動でグルーピングする箇所の一例）
図５Ｂおよび図５Ｃは、実施の形態１に係る粒度変換部２５が自動でグルーピングする方法を説明するためのブロック線図の一例を示す図である。図５Ｄおよび図５Ｅは、実施の形態１に係る粒度変換部２５が自動でグルーピング処理の一例を示すフローチャートである。
【００７６】
図５Ｂには、グルーピングする前の制御モデル１１０の一部を表現するブロック線図の一例が示されている。図５Ｃには、グルーピングした後の制御モデル１１０の一部を表現するブロック線図の一例が示されている。
【００７７】
図５Ｄにおいて、まず、使用者の操作により、粒度変換部２５に、例えば、図５Ｂに示すブロック線図に対して、守るべき情報資産を指定（特定）させる（Ｓ１１）。より具合的には、使用者は、粒度変換部２５を用いて、守るべき情報資産を特定する。そして、データがどう流れるかを追加し、守るべき情報資産に対するRead/Write情報も入れる。このようにして、使用者は、粒度変換部２５を、図５Ｂに示すブロック線図に対する脅威を具体化させる。すると、粒度変換部２５は、守るべき情報資産を取り扱わない要素を一まとめとする（Ｓ１２）。ここで、守るべき情報資産を取り扱わない要素を一まとめとする一例は、図５Ｃに示す左下のグループ（細点線の四角3つを囲った箇所）である。このようにして、粒度変換部２５は、図５Ｂに示すように、ブロック線図に含まれる複数の要素を、情報資産として守るべき要素に接続しない複数の要素と、情報資産として守るべき要素に接続する複数の要素とになるようにグルーピングする。
【００７８】
また、図５Ｅにおいて、まず、使用者の操作により、粒度変換部２５は、図５Ｂに示すブロック線図に含まれる要素の種類に応じてデザインパターンを用意する（Ｓ１３）。
【００７９】
次に、粒度変換部２５は、図５Ｂに示すブロック線図に含まれる複数の要素を、Ｓ１３で用意した要素の種類に応じたデザインパターンを用いてパターンマッチングを行う（Ｓ１４）。
【００８０】
粒度変換部２５は、図５Ｂに示すブロック線図に含まれる複数の要素に、当該デザインパターンとマッチングした特定の要素が出現したかを判断し（Ｓ１５）、出現した場合には（Ｓ１５でＹｅｓ）、特定の要素がグループの境界とする（Ｓ１６）。一方、粒度変換部２５は、出現しなかった場合には（Ｓ１５でＮｏ）、処理を終了する。
【００８１】
なお、粒度変換部２５は、図５Ｄ又は図５Ｅで示した処理の他、上述したように、予め設定されたグルーピング数の上限に到達するまで、ブロック線図に含まれる複数の要素をグルーピングしてもよい。
【００８２】
また、デザインパターンの例は、図５Ｃの左上の細点線で囲まれたグループおよび右側半分の細点線で囲まれたグループである。また、特定の要素は、例えばゲートウェイなどの外部のネットワークに繋がるモジュールであり一般的に信頼境界が引かれるものなどである。
【００８３】
また、デザインパターンを、例えば後述する図７の種類で判定し、例えば外部と接続されるテレマティクスやＯＢＤ−ＩＩは出力側を必ずグループの境界とする、または、信頼境界は必ずグループの境界とするとしてもよい。
【００８４】
（信頼境界の一例）
図６は、脅威モデルを表現するために使用するデータフローダイアグラムを示す図である。図６では、図４に示すシステム構成をデータフロー図として表したものに、信頼境界が設定された場合の一例が示されている。ここで、脅威モデルは、ブロック線図のいくつかの要素をグルーピングして脅威分析可能な粒度とし、信頼の境界を追加したデータフローダイアグラムで表現したものである。
【００８５】
操作ＥＣＵ３７０は、図６に示すように、ハンドル操作ＥＣＵ、アクセル操作ＥＣＵ、ウィンカー操作ＥＣＵ等であり、車載ＬＡＮを経由して車載ＧＷ３１０に接続される。表示ＥＣＵ３８０は、速度表示ＥＣＵ、ウィンカー表示ＥＣＵ等であり、車載ＧＷ３１０に接続される。駆動ＥＣＵ３９０は、タイヤ・サスペンション制御ＥＣＵ、エンジン制御ＥＣＵ等であり、車載ＧＷ３１０に接続される。
【００８６】
図６において、信頼境界は点線で示されている。信頼境界は、信頼境界の内部に存する機器は互いに信頼できるが、信頼境界の外部に存する機器は必ずしも信頼できないことを意味する。なお、信頼境界は、ソフトウェア開発システム１の使用者がパソコン等を操作することにより入力される。
【００８７】
図６に示す例では、外部のテレマティクスサービスを提供するサーバ３３０は、３Ｇのネットワーク３３２を介してテレマティクス３４０に接続し、車載ＧＷ３１０に接続される。また、診断機器４００は、ＩＳ０１４２３０のコネクタ４０２を介して、ＯＢＤ−ＩＩ３５０に接続し、車載ＧＷ３１０に接続される。
【００８８】
図６に示すように、テレマティクス３４０とＯＢＤ−ＩＩ３５０とは信頼境界の外部にある。そのため、車載ＧＷ３１０や操作ＥＣＵ３７０、表示ＥＣＵ３８０、駆動ＥＣＵ３９０など信頼境界の内部にある車載システム３００は、テレマティクス３４０とＯＢＤ−ＩＩ３５０とを必ずしも信頼できない。
【００８９】
なお、図６の各構成要素の内部は多数のブロック線図が含まれており、図６に示す各構成要素はそれらをグルーピングしたものである。図が煩雑になるので要素の内部のブロック線図は図示しない。また、図６では車載システム３００の主要な構成要素が１つの信頼境界内にあるが、複数の信頼境界が存在しても良い。
【００９０】
（信頼境界が設定された制御モデルの一例）
図７は、図６の信頼境界の情報を持つ制御モデル１１０のデータベースを示す図である。上述した制御モデル作成ツール部１００により、このデータベースが作成される。このデータベースでは、信頼境界とその中に含まれる機器であることを示す情報が格納されている。
【００９１】
なお、制御モデル作成ツール部１００は、制御モデル１１０を示すブロック線図のみを扱い、脅威分析ツール部２００が、制御モデル作成ツール部１００が作成した制御モデル１１０のブロック線図の情報を元として、このデータベースを作成するとしてもよい。
【００９２】
図７において、「ＩＤ」は各構成要素の番号を示し、制御モデル作成ツール部１００で自動的に採番する。また、「名称」は各構成要素の名称を示し、使用者により入力される。「前のＩＤ（Ｉｎ）」はデータが、示されるＩＤの構成要素から流れてくることを示す。「後のＩＤ（Ｏｕｔ）」はデータが、示されるＩＤの構成要素へ流れることを示す。「種類」は、構成要素の種別を示す。「信頼の内外」は、「ＩＤ」に示される構成要素が信頼境界の内部にあるか外部にあるか、あるいは信頼境界をまたがっているかを示す。ここで、「信頼の内外」を示す欄において「境界」となっているものは、信頼境界をまたがっていることを示している。また、「ブロック線図ＩＤ」は、構成要素に含まれるブロック線図のＩＤである。
【００９３】
なお、「ＩＤ」は、説明の便宜上、図６に示された構成要素の番号（符号）を使用している。例えば、「ＩＤ」＝３９０すなわち駆動ＥＣＵの構成要素は、前につながるものがＣＡＮ３９２であり、後につながるものはなく、信頼境界の内部にあることを示している。また、例えば「ＩＤ」＝３９０である駆動ＥＣＵのブロック線図が図５Ａに示したものであるとして、「ＩＤ」＝３９０すなわち駆動ＥＣＵの「ブロック線図ＩＤ」に示されるように、駆動ＥＣＵ３９０にはブロック線図ＩＤ６０、６１、…、６５が含まれていることを示す。なお、上述した図５Ａは、説明のために簡略化して示されたものであり、実際には多数のブロック線図が含まれる。
【００９４】
（制御モデル１１０の作成処理）
図８は、実施の形態１に係る制御モデル１１０の作成処理を示すフローチャートである。
【００９５】
まず、ソフトウェア開発システム１の使用者は、制御モデル作成ツール部１００が提供するＧＵＩ等を利用して、制御モデル１１０を構成する一の構成要素の「名称」を入力する（Ｓ１００）。ＩＤは制御モデル作成ツール部１００により自動的に付与される。
【００９６】
次に、使用者は、制御モデル作成ツール部１００が提供するＧＵＩ等を利用して、当該構成要素の前後のつながりを設定する（Ｓ１１０）。例えば、使用者は、当該構成要素の前につながる要素のＩＤを入力したり、後につながる要素のＩＤを入力したりする。なお、前または後につながる要素が複数あれば複数の構成要素を入力する。
【００９７】
次に、使用者は、制御モデル作成ツール部１００が提供するＧＵＩ等を利用して、当該構成要素の種類などその他の情報を設定する（Ｓ１２０）。
【００９８】
次に、使用者は、全ての構成要素の入力が完了したかを判断する（Ｓ１３０）。全ての構成要素の入力が完了していない場合には（Ｓ１３０でＮｏ）、Ｓ１００に進み、次の構成要素の設定を行う。
【００９９】
一方、全ての構成要素の入力が完了した場合には（Ｓ１３０でＹｅｓ）、使用者は、制御モデル作成ツール部１００が提供するＧＵＩ等を利用して、すべての構成要素についての信頼境界を設定する（Ｓ１４０）。
【０１００】
（信頼境界の設定操作の一例）
制御モデル作成ツール部１００が提供するＧＵＩ等を利用して、２つの信頼境界を設定する場合の例について説明する。
【０１０１】
図９Ａおよび図９Ｂは、制御モデル１１０に信頼境界を設定する際の操作を説明するための図である。図９Ａでは使用者がマウスカーソルで構成要素を選択する操作場面が示されており、図９Ｂでは信頼境界が２つ設定された場面が示されている。なお、図９Ａおよび図９Ｂに示すＳｒｃ１、Ｔ１およびＳｎｋ１は、データフローダイアグラム（ＤＦＤ）の構成要素であり、Ｓｏｕｒｃｅ−Ｔｒａｎｓｆｅｒ−Ｓｉｎｋの構成で、データの入力、変形、及び出力を示している。
【０１０２】
使用者は、制御モデル作成ツール部１００が提供するＧＵＩにおいて、図９Ａに示すように、まず、マウスカーソルでＳｒｃ１を選択し（ａ１）、次に、マウスカーソルでＴ１を選択し（ａ２）、「実行」を選択（不図示）する。その結果、図９Ｂに示すようなＳｒｃ１とＴ１とを含む信頼境界ａが作成される。
【０１０３】
続いて、使用者は、マウスカーソルでＴ１を選択し（ａ３）、次に、マウスカーソルでＳｎｋ１を選択し（ａ４）、「実行」を選択する。その結果、図９Ｂに示すようなＴ１とＳｎｋ１とを含む信頼境界ｂが作成される。
【０１０４】
（信頼境界の設定操作処理）
図１０は、信頼境界の設定操作の処理を示すフローチャートである。
【０１０５】
まず、ソフトウェア開発システム１の使用者は、制御モデル作成ツール部１００が提供するＧＵＩ等における「信頼境界作成」のツールを選択する（Ｓ２００）。
【０１０６】
すると、選択されたツールが操作入力待ち状態になる（Ｓ２１０）。
【０１０７】
次に、使用者は、マウスカーソルで構成要素を選択する（Ｓ２２０）。具体的には、図９Ａおよび図９Ｂで説明した通りであるので、ここでの説明は省略する。
【０１０８】
次に、使用者は、ツールにおいて「実行」を選択（押下）する（Ｓ２３０）。
【０１０９】
すると、ツールは、選択されている構成要素を信頼境界の内部に含めるべく、「内」に設定し（Ｓ２４０）、Ｓ２１０に戻る。
【０１１０】
一方、使用者は、ツールにおいて、選択されている構成要素の設定値を取り消す場合は、「取り消し」を選択（押下）する（Ｓ２５０）。すると、ツールは、構成要素の信頼の境界値をリセットし（Ｓ２６０）、Ｓ２１０に戻る。
【０１１１】
Ｓ２０１において、信頼境界の内部に含める構成要素の全てに対して、Ｓ２２０〜Ｓ２４０の処理が終了した場合には（Ｓ２７０）、ツールに信頼境界の情報を制御モデル１１０に反映させ、制御モデル１１０のデータを確定させる（Ｓ２８０）。
【０１１２】
以下では、脅威ＤＢ２４０、脅威一覧データ２１０および脅威分析ツール部２００が行う脅威一覧データ２１０の作成処理について、具体例を挙げて説明する。
【０１１３】
（脅威ＤＢ２４０の一例）
図１１は、実施の形態１に係る脅威ＤＢ２４０が保持するデータの一例を示す図である。図１１に示す脅威ＤＢ２４０には、脅威の説明と、その脅威が起きる条件と、その脅威の発生源を示す種類と、その発生源が信頼境界の外部か内部かを示す情報と、脅威の対策を特定する際に使用する脅威IDとが格納されている。
【０１１４】
例えば、ＩＤ＝１には、脅威が「不正な診断機器を接続される」ことであり、その脅威の発生源が「ＯＢＤ−ＩＩ」であり、その発生源が信頼境界の外部にあることが示されている。同様に、ＩＤ＝２には、脅威が「外部のネットワークから不正に進入される」ことであり、その脅威の発生源が「テレマティクス」であり、発生源が信頼境界の外部にあることが示されている。
【０１１５】
（脅威一覧データ２１０の一例）
図１２は、実施の形態１に係る脅威一覧データ２１０の一例を示す図である。脅威一覧データ２１０は、上述したように、脅威分析ツール部２００により作成され、制御モデル１１０に対する複数の脅威を示すデータである。図１２に示す脅威一覧データ２１０は、対象の名称、対象のＩＤ、脅威の説明、脅威ＩＤ、種類、および、信頼境界の内部か外部かを示す情報が格納されている。この脅威一覧データ２１０は、上述したように、脅威分析ツール部２００によって、制御モデル１１０と脅威ＤＢ２４０とから作成され、出力される。
【０１１６】
例えば、ＩＤ＝１には、脅威が「不正な診断機器を接続される」ことであり、その脅威の発生源が「ＯＢＤ−ＩＩ」であり、その発生源が信頼境界の外部であることを示しており、図１１で説明した脅威ＤＢ２４０のデータと同一である。また、ＩＤ＝１には、それと同時に、対策が必要な対象のデータとして対象の名称「ＯＢＤ−ＩＩ」、対象のＩＤ「３５０」が示されている。ＩＤ＝２以下も同様であるため、説明を省略する。
【０１１７】
（脅威一覧データ２１０の作成処理）
図１３は、実施の形態１に係る脅威一覧データ２１０の作成処理を示すフローチャートである。
【０１１８】
脅威分析ツール部２００は、例えば図７に示す制御モデル１１０のＤＢと例えば図１１に示す脅威ＤＢ２４０とを用いて脅威一覧データ２１０を作成する。
【０１１９】
図１３に示すように、まず、使用者の操作により、脅威分析ツール部２００は、制御モデル１１０の構成要素の中で未処理のものを１つ取得する（Ｓ３００）。
【０１２０】
次に、脅威分析ツール部２００は、未処理のものを取得できたか否かを判断する（Ｓ３１０）。脅威分析ツール部２００は、取得できなかった場合（Ｓ３１０でＮｏ）、処理を終了して、作成した脅威一覧データ２１０を出力する。
【０１２１】
Ｓ３１０において脅威分析ツール部２００が取得できた場合には（Ｓ３１０でＹｅｓ）、脅威ＤＢが保持する脅威の中に一致する「種類」があるか検索する（Ｓ３２０）。
【０１２２】
脅威ＤＢが保持する脅威の中に一致するものがあれば（Ｓ３３０でＹｅｓ）、Ｓ３４０に進み、なければ（Ｓ３３０でＮｏ）、Ｓ３００に戻る。
【０１２３】
たとえば、脅威分析ツール部２００が未処理のものとして、図７に示されるＩＤ＝３５０すなわち「ＯＢＤ−ＩＩ」を取得した場合、脅威分析ツール部２００は、脅威ＤＢ２４０を検索して、図１１に示されるＩＤ＝１の脅威データの中に一致する「種類」があるので、ＩＤ＝１の「種類」を脅威の候補とする。なお、例えばＯＢＤ−ＩＩの脅威が複数種類ある等、脅威ＤＢ２４０に複数の種類がある（ＩＤは別で同じ種類が複数）場合、脅威ＤＢ２４０のＩＤ毎に見ていくとしてもよい。また、種類が同一の脅威が複数ある場合、まとめて処理するとしてもよい。
【０１２４】
次に、脅威分析ツール部２００は、使用者の選択による抽出対象の広狭を判断する（Ｓ３４０）。なお、抽出対象の広狭は、脅威分析ツール部２００を使用する前に予め選択されていてもよい。脅威一覧データ２１０を作成する前までに選択されていればよい。
【０１２５】
次に、抽出対象を広くすることが選択されている場合は（Ｓ３４０で広）、Ｓ３５０の処理をスキップしてＳ３２０で検索した「種類」を有する脅威ＤＢの脅威データを抽出して脅威一覧データ２１０に追加する（Ｓ３６０）。
【０１２６】
一方、抽出対象を狭くすることが選択されている場合は（Ｓ３４０で狭）、脅威分析ツール部２００は、Ｓ３２０で検索した「種類」が信頼境界の外あるいは境界かを判断し（Ｓ３５０）、そうである場合すなわち信頼境界にまたがるデータフローがある場合（Ｓ３５０でＹｅｓ）に、Ｓ３２０で検索した「種類」を有する脅威ＤＢの脅威データを抽出して脅威一覧データ２１０に追加する（Ｓ３６０）。
【０１２７】
例えば、Ｓ３２０で検索された「種類」が図７に示されるＩＤ＝３５０すなわち「ＯＢＤ−ＩＩ」である場合、抽出対象を広くすることが選択されているときはこれを脅威一覧データ２１０に追加する。一方、抽出対象を狭くすることが選択されているときは、信頼境界にまたがるデータフローがあるかどうか調べる。図７に示されるＩＤ＝３５０の「ＯＢＤ−ＩＩ」は、図７に示されるように、信頼境界の外部にあり、後にＩＤ＝３５２の「ＣＡＮ」がある。ＩＤ＝３５２の「ＣＡＮ」の後にＩＤ＝３１０の「車載ＧＷ」があり、これは信頼境界の内部にある。つまり、ＩＤ＝３５０の「ＯＢＤ−ＩＩ」とＩＤ＝３１０の「車載ＧＷ」の間に信頼境界をまたがるデータフローがある。したがって、抽出対象を狭くすることが選択されているとき、脅威分析ツール部２００は、Ｓ３２０で検索した「種類」である「ＯＢＤ−ＩＩ」を有する脅威ＤＢの脅威データを抽出して、脅威一覧データ２１０に追加する。
【０１２８】
このように、信頼境界の内部か外部かの情報を利用することで、抽出対象を広くして脅威一覧データ２１０を作成するか、信頼境界の内部の構成要素については脅威の候補に該当しないと考えて抽出対象から外すといった抽出対象を狭くして脅威一覧データ２１０を作成する制御も簡単に実現できる。
【０１２９】
（制御モデル１１０へのフィードバック例）
図１４Ａは、実施の形態１に係る脅威一覧に基づきフィードバックした制御モデルのデータフローダイアグラムを示す図である。図１４Ｂは、実施の形態１に係る脅威一覧に基づきフィードバックした制御モデル１１０のデータベースを示す図である。なお、図１４Ｂにおいて、図７に示す制御モデル作成ツール部１００により作成された制御モデル１１０から修正された箇所には斜線が引かれている。
【０１３０】
本実施の形態では、ソフトウェア開発システム１の使用者が、脅威分析ツール部２００が作成した出力した脅威一覧データ２１０に示される脅威一覧を、制御モデル作成ツール部１００を用いて、制御モデル１１０に反映（フィードバック）する。より具体的には、図１４Ａおよび図１４Ｂに示すように、使用者は、図１１に示すような脅威一覧データ２１０に示される脅威一覧に基づいて、脅威に対する対策を施した制御モデル１１０に修正する。
【０１３１】
［まとめ］
図１５は、実施の形態１におけるＶ字型モデルによるシステム開発の手順を示す図である。
【０１３２】
本実施の形態では、モデルベース開発システム１０と脅威分析システム２０とを連携させることで、システム開発の上流工程で脅威分析を行い出力された脅威一覧データ２１０に示された脅威一覧に基づき、脅威に対する対策を制御モデル１１０に反映させる。つまり、システム開発の上流工程すなわちシステム設計の段階で脅威に対する対策を行うことが可能となる。
【０１３３】
このようにして、手戻りが少なく、迅速に対応可能となるので、モデルベース手法に基づいたシステム開発における開発効率を向上できるソフトウェア開発システムおよびそのプログラムを実現することができる。
【０１３４】
（実施の形態２）
実施の形態１では、使用者が、脅威一覧データ２１０に示される脅威一覧に基づいて、制御モデル作成ツール部１００を用いて、脅威に対する対策を施した制御モデル１１０に修正した場合について説明したが、これに限らない。脅威分析システムが脅威一覧データ２１０に基づいて対策を作成し、制御モデル作成ツール部１００にフィードバックすることで、制御モデル作成ツール部１００に、脅威に対する対策を施した制御モデル１１０への修正を行わせてもよい。以下、この場合について実施の形態２として説明する。
【０１３５】
図１６は、実施の形態２に係るソフトウェア開発システム１Ａのデータの流れを元に表した構成図である。図１と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１３６】
図１６に示すソフトウェア開発システム１Ａは、実施の形態１に係るソフトウェア開発システム１に対して、脅威分析システム２０Ａの構成が異なる。
【０１３７】
［脅威分析システム２０Ａ］
図１６に示す脅威分析システム２０Ａは、実施の形態１に係る脅威分析システム２０に対して、対策一覧作成ツール部２２０と、対策ＤＢ２５０との構成が追加されている点で構成が異なる。以下、実施の形態１と異なる点を中心に説明する。
【０１３８】
対策ＤＢ２５０は、１以上の脅威それぞれに対する対策手段のデータを保持するデータベースである。本実施の形態では、対策ＤＢ２５０には、それぞれの脅威に対する対策が格納されている。なお、対策ＤＢ２５０には、脅威に対する対策が複数ある場合は、処理効率を上げるため、優先度の高い順に格納しておくとよい。対策ＤＢ２５０に格納されるそれぞれの脅威に対する対策は、例えば、複数の脅威それぞれの攻撃内容とその対策方法とがモデル化された対策モデル２５５から作成される。
【０１３９】
対策一覧作成ツール部２２０は、脅威分析ツール部２００が作成して出力した脅威一覧データ２１０に含まれる複数の脅威それぞれに対する対策手段を、対策ＤＢ２５０から抽出することにより制御モデル１１０に対する対策手段の一覧を示す対策一覧のデータを作成して出力する。対策一覧作成ツール部２２０は、対策一覧のデータをモデルベース開発システム１０に出力することにより、モデルベース開発システム１０に、対策一覧を制御モデル１１０に反映させる。
【０１４０】
つまり、対策一覧作成ツール部２２０は、脅威一覧データ２１０と対策ＤＢ２５０とから、脅威に対する対策である対策一覧のデータ（対策一覧データ２３０）を作成し、制御モデル作成ツール部１００に出力する。
【０１４１】
そして、制御モデル作成ツール部１００は、入力された対策一覧データ２３０に示される対策一覧を制御モデル１１０に反映する。すなわち制御モデル作成ツール部１００は、作成した制御モデル１１０を、対策一覧データ２３０に示される対策一覧に含まれる脅威に対する対策を施した制御モデル１１０に修正する。
【０１４２】
［ソフトウェア開発システム１Ａの処理概要］
次に、以上のように構成されたソフトウェア開発システム１Ａの処理概要について説明する。
【０１４３】
図１７は、実施の形態２に係るソフトウェア開発システム１Ａの処理概要を示すフローチャートである。図２と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１４４】
Ｓ２０において、上述したように、脅威分析ツール部２００は、粒度が変換された制御モデル１１０から、脅威一覧データ２１０を作成する。
【０１４５】
次に、対策一覧作成ツール部２２０は、脅威一覧データ２１０に含まれる複数の脅威（脅威一覧）それぞれに対する対策手段を、対策ＤＢ２５０から抽出することにより、対策一覧データ２３０を作成して、制御モデル作成ツール部１００に出力する（Ｓ２５）。
【０１４６】
次に、制御モデル作成ツール部１００は、対策一覧データ２３０に示された脅威に対する対策を制御モデル１１０に反映させる（Ｓ３０Ａ）。
【０１４７】
［効果等］
以上のように、本実施の形態におけるソフトウェア開発システム１Ａによれば、開発対象の機器のプログラムを当該機器に実装する前に、脅威分析し、脅威に対する対策を施すことができるので、モデルベース手法に基づいたシステム開発における開発効率を向上できる。
【０１４８】
以下では、対策ＤＢ２５０、対策一覧データ２３０および対策一覧作成ツール部２２０の処理、対策一覧を制御モデル１１０に反映させる処理などについて、具体例を挙げて説明する。
【０１４９】
（対策ＤＢ２５０の一例）
図１８は、実施の形態２に係る対策ＤＢ２５０が保持するデータの一例を示す図である。図１８に示す対策ＤＢ２５０には、脅威ＩＤと、その脅威ＩＤが示す脅威に対する対策を示す対策ＩＤと、対策ＩＤが示す対策を行う方法や内容を示す対策内容とが格納されている。
【０１５０】
例えば、ＩＤ＝１には、脅威ＩＤが「不正な機器」である場合に、対策ＩＤが「フィルタ」であり、対策内容が「間に入れる」ことが示されている。ＩＤ＝２以下も同様であるため説明を省略する。
【０１５１】
（対策一覧データ２３０の一例）
図１９は、実施の形態２に係る対策一覧データ２３０の一例を示す図である。対策一覧データ２３０は、上述したように、制御モデル１１０に対する対策手段の一覧を示すデータである。図１９に示す対策一覧データ２３０は、対象の名称と、対象のＩＤと、脅威ＩＤと、信頼境界の内／外と、対策ＩＤと、対策箇所とが格納されている。ここで、対象とは、対策を行う対象を意味する。この対策一覧データ２３０は、上述したように、対策一覧作成ツール部２２０によって、脅威一覧データ２１０と対策ＤＢ２５０とから作成され、出力される。
【０１５２】
例えば、ＩＤ＝１には、対象の名称が「ＯＢＤ−ＩＩ」であり、脅威ＩＤが「不正な機器」であり、対策ＩＤが「フィルタ」すなわち、フィルタを設置することであり、対策箇所が「３４０と３１０間」すなわち、３４０と３１０との間にフィルタを設置することであることが示されている。ＩＤ＝２以下も同様であるため説明を省略する。
【０１５３】
（対策一覧作成ツール部２２０の作成処理）
図２０は、実施の形態２に係る対策一覧作成ツール部２２０の作成処理を示すフローチャートである。対策一覧作成ツール部２２０は、例えば図１２に示す脅威一覧データ２１０と例えば図１８に示す対策ＤＢ２５０とを用いて対策一覧データ２３０を作成する。
【０１５４】
図２０に示すように、まず、使用者の操作により、対策一覧作成ツール部２２０は、脅威一覧データ２１０に含まれる脅威一覧から未処理のものを１つ取得する（Ｓ４００）。
【０１５５】
次に、対策一覧作成ツール部２２０は、未処理のものを取得できたか否かを判断する（Ｓ４１０）。対策一覧作成ツール部２２０は、取得できなかった場合（Ｓ４１０でＮｏ）、処理を終了して、作成した対策一覧データ２３０を出力する。
【０１５６】
Ｓ４１０において、対策一覧作成ツール部２２０が取得できた場合には（Ｓ４１０でＹｅｓ）、対策ＤＢ２５０が保持する「脅威ＩＤ」の中に一致するものがあるか検索する（Ｓ４２０）。
【０１５７】
対策ＤＢが保持する「脅威ＩＤ」の中に一致するものがあれば（Ｓ４３０でＹｅｓ）、Ｓ４４０に進み、対策ＩＤを対策一覧データ２３０に追加する（Ｓ４４０）。そして、対策一覧作成ツール部２２０は、対策ＤＢ２５０が保持する、一致した「脅威ＩＤ」に対応する「対策内容」から、制御モデル１１０の情報を参照して、対策内容を特定して、対策ＩＤに対応する対策内容を対策一覧データ２３０に追加する（Ｓ４５０）。
【０１５８】
例えば、Ｓ４００で取得された「脅威ＩＤ」が図１２に示される（脅威一覧データ２１０の）ＩＤ＝１の「脅威ＩＤ」すなわち不正な機器である場合、図１８に示される（対策ＤＢ２５０の）ＩＤ＝１に一致する「脅威ＩＤ」すなわち「不正な機器」があることが検索される。そして、対策ＤＢ２５０に保持される、当該「脅威ＩＤ」の「対策ＩＤ」がフィルタであり、「対策箇所」が間に入れるであることから、対策一覧作成ツール部２２０は、図６、図７に示す制御モデル１１０からフィルタを入れる場所を特定する。対策一覧作成ツール部２２０は、これらの情報を対策一覧データに追加する。
【０１５９】
Ｓ４３０において、対策ＤＢ２５０が保持する「脅威ＩＤ」の中に一致するものがなければ（Ｓ４３０でＮｏ）、Ｓ４６０に進み、対策一覧作成ツール部２２０は、使用者に対して、対策がないことを示すアラームを出力する（Ｓ４６０）。
【０１６０】
次に、対策一覧作成ツール部２２０は、使用者に対して、対策を追加するかどうかを問い合わせる（Ｓ４７０）。
【０１６１】
対策を追加する場合（Ｓ４７０でＹｅｓ）であれば、使用者の操作により、対策一覧作成ツール部２２０は、対策ＤＢ２５０に対策を追加し（Ｓ４８０）、その対策を対策一覧データ２３０に反映するよう、Ｓ４４０に進む。
【０１６２】
一方、対策を追加しない場合（Ｓ４７０でＮｏ）であれば、使用者が当該脅威に対する対策は不要と判断したということで、対策一覧作成ツール部２２０は、Ｓ４００に戻る。
【０１６３】
このようにして作成した対策一覧データ２３０は、モデルベース開発システム１０の制御モデル作成ツール部１００に出力される。制御モデル作成ツール部１００は、対策一覧データ２３０に示される対策一覧を制御モデル１１０に反映させる。
【０１６４】
（制御モデル１１０への反映処理）
図２１は、対策一覧を制御モデル１１０に反映する処理を示すフローチャートである。
【０１６５】
制御モデル作成ツール部１００は、例えば図１９に示す対策一覧データ２３０に示される対策一覧を制御モデル１１０に反映させ、例えば図１４Ｂに示す制御モデル１１０のＤＢを作成する。
【０１６６】
図２１に示すように、まず、使用者の操作により、制御モデル作成ツール部１００は、対策一覧データ２３０に示される対策一覧から未処理のものを１つ取得する（Ｓ５００）。
【０１６７】
次に、制御モデル作成ツール部１００は、未処理のものを取得できたか否かを判断する（Ｓ５１０）。制御モデル作成ツール部１００は、取得できなかった場合（Ｓ５１０でＮｏ）、処理を終了して、これまでに作成した制御モデル１１０を出力する。
【０１６８】
Ｓ５１０において制御モデル作成ツール部１００が取得できた場合には（Ｓ５１０でＹｅｓ）、対策対象（図１９の「対象の名称」の欄）と「対策箇所」との関係を判定する（Ｓ５２０）。
【０１６９】
対策箇所が存在する場合は（Ｓ５３０でＹｅｓ）、対策箇所に対策ＩＤの対策を施す（Ｓ５４０）。一方、対策箇所が存在しない場合は（Ｓ５３０でＮｏ）、対策ＩＤの対策を施す構成要素を追加する（Ｓ５５０）。
【０１７０】
例えば、図１９に示す対策一覧のＩＤ＝１の「対象の名称」すなわちＯＢＤ−ＩＩは、「対策箇所」が３４０−３１０間であるが、「対策ＩＤ」で示されるフィルタは、制御モデル１１０の構成要素としては存在しない。そのため、制御モデル作成ツール部１００は、対策ＩＤで示される「フィルタ」を追加する。
【０１７１】
このようにして、本実施の形態では、制御モデル作成ツール部１００を用いてすなわちコンピュータプログラムで自動的に、対策一覧データ２３０に示される対策一覧を制御モデル１１０に反映することができる。
【０１７２】
（実施の形態３）
実施の形態１および２では、システム開発の上流工程すなわちシステム設計の段階で脅威に対する対策を行うことについて説明したが、これらに限らない。開発対象の制御モデル１１０に、攻撃をシミュレートしてテストできる機能を含ませてもよい。これにより、システム開発の上流工程すなわちシステム設計の段階でセキュリティ対策機能の有効性を確認することができるので、より手戻りを少なくでき、モデルベース手法に基づいたシステム開発における開発効率を向上できる。以下、この場合について実施の形態３として説明する。
【０１７３】
図２２は、実施の形態３に係るソフトウェア開発システム１Ｂのデータの流れを元に表した構成図である。図１および図１６と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１７４】
図２２に示すソフトウェア開発システム１Ｂは、実施の形態２に係るソフトウェア開発システム１Ａに対して、シミュレート機能追加システム２６が追加されている点で異なる。以下、実施の形態２と異なる点を中心に説明する。
【０１７５】
［シミュレート機能追加システム２６］
シミュレート機能追加システム２６は、攻撃一覧作成ツール部２６０と、攻撃ＤＢ２７０とを備える。
【０１７６】
攻撃ＤＢ２７０は、情報セキュリティに対する１以上の攻撃それぞれのデータを保持するデータベースである。本実施の形態では、攻撃ＤＢ２７０には、攻撃方法と攻撃手順とが格納されており、脅威ＤＢ２４０に対応する内容が格納されている。攻撃ＤＢ２７０に格納される攻撃方法および攻撃手順は、例えば、脅威となる攻撃内容（攻撃の説明）とその攻撃内容の手順とがモデル化された攻撃モデル２７５から作成される。
【０１７７】
攻撃一覧作成ツール部２６０は、制御モデル１１０を構成する個々の構成要素について、攻撃ＤＢ２７０から該当する攻撃のデータを抽出することにより、制御モデル１１０に対する複数の攻撃を示す攻撃一覧のデータ（攻撃一覧データ２６５）を作成して出力する。また、攻撃一覧作成ツール部２６０は、攻撃一覧データ２６５をモデルベース開発システム１０に出力することにより、モデルベース開発システム１０に、攻撃一覧データ２６５に示される攻撃一覧を制御モデル１１０に反映させ、当該攻撃一覧が反映された制御モデル１１０のソースコードの評価をシミュレーションにより行わせる。
【０１７８】
つまり、攻撃一覧作成ツール部２６０は、制御モデル１１０と、攻撃ＤＢ２７０とから、攻撃一覧データ２６５を作成して、制御モデル作成ツール部１００に出力する。
【０１７９】
そして、制御モデル作成ツール部１００は、攻撃一覧作成ツール部２６０が作成した攻撃一覧データ２６５に示される攻撃一覧の中の攻撃手順に基づいて攻撃をシミュレートする機能を制御モデル１１０に付加する。その結果、評価ツール部１４０は、制御モデル１１０への攻撃をシミュレートすることができるので、システム開発の上流工程すなわちシステム設計の段階でセキュリティ対策機能の有効性を確認することができる。
【０１８０】
［ソフトウェア開発システム１Ｂの処理概要］
次に、以上のように構成されたソフトウェア開発システム１Ｂの処理概要について説明する。
【０１８１】
図２３は、実施の形態３に係るソフトウェア開発システム１Ｂの処理概要を示すフローチャートである。図２、図１７と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１８２】
Ｓ３０Ａにおいて、上述したように、制御モデル作成ツール部１００は、対策一覧データ２３０に示された脅威に対する対策を制御モデル１１０に反映させる。
【０１８３】
次に、制御モデル作成ツール部１００は、攻撃一覧データ２６５に示される攻撃一覧の中の攻撃内容とその手順とを制御モデル１１０に反映させる（Ｓ３０Ｂ）。より具体的には、制御モデル作成ツール部１００は、攻撃一覧データ２６５に示される攻撃一覧の中の攻撃内容とその手順に基づいて攻撃をシミュレートする機能を制御モデル１１０に付加する。
【０１８４】
なお、制御モデル作成ツール部１００は、攻撃一覧データ２６５が示す攻撃一覧を自動的にＧＵＩで表示し、攻撃一覧中のどの攻撃を制御モデル１１０に付加させるかは、使用者がＧＵＩ上で選択し、データフローに配置するとしてよいし、制御モデル作成ツール部１００がすべて自動で行ってもよい。
【０１８５】
そして、評価ツール部１４０は、自動コード生成ツール部１２０で生成された、当該内容が反映された制御モデル１１０のソースコードの評価とともに、制御モデル１１０への攻撃をシミュレーションにより行う（Ｓ４０）。
【０１８６】
［効果等］
以上のように、本実施の形態におけるソフトウェア開発システム１Ｂによれば、モデルベース手法を用いたシステム開発において、セキュリティ対策を十分に行い、セキュリティホールが生じることを防ぎ、さらに開発を効率化することができる。
【０１８７】
より具体的には、開発対象の機器のプログラムを当該機器に実装する前に、脅威分析し、脅威に対する対策を施すだけでなく、制御モデル１１０への攻撃をシミュレートすることができるので、モデルベース手法に基づいたシステム開発における開発効率を向上できる。
【０１８８】
つまり、上述のように、モデルベース開発と脅威分析とを連携させた開発環境を実現することにより、開発作業の手戻りを非常に小さくすることができる。また、設計段階でセキュリティに関するシミュレーションを行うことができるので、上流工程でセキュリティ機能の作り込みを行うことができ、開発対象製品のセキュリティ品質を高めることができるという効果がある。
【０１８９】
以下では、攻撃ＤＢ２７０、攻撃一覧データ２６５および攻撃一覧作成ツール部２６０の処理などについて、具体例を挙げて説明する。
【０１９０】
（攻撃ＤＢ２７０の一例）
図２４は、実施の形態３に係る攻撃ＤＢ２７０が保持するデータの一例を示す図である。図２４に示す攻撃ＤＢ２７０には、攻撃の内容を示す「攻撃の説明」と、攻撃対象を示す「種類」と、攻撃の発生源が信頼境界の内外かを示す「信頼境界の内外」と、攻撃対象に対する攻撃の手順を示す「攻撃の手順」とが格納されている。
【０１９１】
例えば、ＩＤ＝１には、「攻撃の説明」が不正な診断機器を接続することであり、「種類」が「ＯＢＤ−ＩＩ」であり、「信頼境界の内外」が外すなわち攻撃の発生源が信頼境界の外部であり、「攻撃の手順」が前の構成要素を攻撃ツールに置き換えることであることが示されている。ＩＤ＝２以下も同様であるため説明を省略する。
【０１９２】
（攻撃一覧データ２６５の一例）
図２５は、実施の形態３に係る攻撃一覧データ２６５の一例である。攻撃一覧データ２６５は、上述したように、制御モデル１１０に対する攻撃の一覧を示すデータである。図２５に示す攻撃一覧データ２６５は、「攻撃の説明」、「種類」、「信頼境界の内／外」、「攻撃の手順」とが格納されている。
【０１９３】
なお、図２５に示す例では、図２４に示すＩＤ＝３の攻撃すなわち、「無線通信ネットワークからＤｏＳ攻撃することが、図２５に示される攻撃一覧データ２６５に含まれていない。攻撃一覧作成ツール部２６０が制御モデル１１０に基づいて、ＩＤ＝３の「種類」である「無線ＬＡＮ」の構成要素が、図６、図７に示される制御モデル１１０に含まれないため、不要と判断したためである。
【０１９４】
（攻撃一覧作成ツール部２６０の作成処理）
図２６は、実施の形態３に係る攻撃一覧作成ツール部２６０の作成処理を示すフローチャートである。攻撃一覧作成ツール部２６０は、例えば図６に示す制御モデル１１０と、例えば図２４に示す攻撃ＤＢ２７０とを用いて攻撃一覧データ２６５を作成する。
【０１９５】
図２６に示すように、まず、使用者の操作により、攻撃一覧作成ツール部２６０は、攻撃ＤＢ２７０に含まれる攻撃から未処理のものを１つ取得する（Ｓ６００）。
【０１９６】
次に、攻撃一覧作成ツール部２６０は、未処理のものを取得できたか否かを判断する（Ｓ６１０）。攻撃一覧作成ツール部２６０は取得できなかった場合（Ｓ６１０でＮｏ）、処理を終了して、作成した攻撃一覧データ２６５を出力する。
【０１９７】
一方、Ｓ６１０において、取得できた場合には（Ｓ６１０でＹｅｓ）、攻撃一覧作成ツール部２６０は、取得した攻撃の「種類」が制御モデル１１０の中の構成要素に含まれているという抽出条件に一致するか判断し（Ｓ６２０）、一致する場合は（Ｓ６３０でＹｅｓ）、攻撃を攻撃一覧データ２６５に追加する（Ｓ６４０）。
【０１９８】
より具体的には、攻撃一覧作成ツール部２６０は、Ｓ６２０において、例えば図６および図７に示される制御モデル１１０の中の構成要素に、Ｓ６００で攻撃ＤＢ２７０から取得した攻撃に含まれる「種類」と一致するものがあるかどうかで判断する。例えば、図２１に示される攻撃ＤＢ２７０のＩＤ１を取得した場合、ＩＤ１の「種類」はＯＢＤ−ＩＩであり、図７に示される制御モデル１１０のＤＢにも「ＯＢＤ−ＩＩ」があることから、Ｓ６４０でＩＤ１の攻撃を攻撃一覧データ２６５に追加する。
【０１９９】
（攻撃のシミュレート機能が付加された制御モデル１１０の一例）
ここで、制御モデル１１０に、攻撃をシミュレートする機能が付加される場合の一例とその対策が施された場合の一例について説明する。
【０２００】
図２７は、実施の形態３に係る攻撃のシミュレート機能が付加された制御モデル１１０の一例を示す図である。図２８Ａは、図２７に示す制御モデル１１０に対策が施された場合の一例を示す図である。図２９は、ＣＡＮメッセージのフォーマットの一部を示す図である。図２９には、本実施の形態に関係するフィールドのみが示されている。
【０２０１】
図２７には、図６に示す制御モデル１１０の構成要素の一つであるＯＢＤ−ＩＩ３５０に攻撃する機能が付加された場合の例が示されている。図２７に示すように、制御モデル１１０には、ＯＢＤ−ＩＩ３５０に接続する構成要素として攻撃ツール５００が追加されている。攻撃一覧データ２６５に示される攻撃一覧に基づき、ＯＢＤ−ＩＩ３５０から車載ＬＡＮに不正なＣＡＮメッセージが入力されて、表示ＥＣＵや駆動ＥＣＵが不正に操作されることがあり得ることから、上記の攻撃ツール５００が追加されている。
【０２０２】
なお、表示ＥＣＵ３８０の中に、実際には複数のサブＥＣＵがある（図示しない）。表示ＥＣＵのサブＥＣＵの１つに通信状態ＥＣＵ（図示しない）があって、通信状態をインジケータあるいはＬＥＤ等に表示する。
【０２０３】
図２８Ａおよび図２８Ｂには、テレマティクス３４０およびＯＢＤ−ＩＩ３５０からの脅威に対する対策として、車載ＧＷ３１０の前にパケットフィルタ５１０が設置された例が示されている。
【０２０４】
上述したように、脅威分析ツール部２００は、制御モデル１１０に対する脅威ＤＢ２４０からの脅威に対する分析を行うことで、パケットフィルタ５１０を入れるという対策を導き出したことから、パケットフィルタ５１０が設置されている。そして、パケットフィルタ５１０を設置することで、信頼境界の外部からの不正なメッセージを遮断することができる。
【０２０５】
より具体的には、図２９に示すＣＡＮメッセージのフォーマットでは、「ＩＤ」のフィールドはデータ内容や送信ノードを識別するために使用される。「データ」のフィールドは１バイト単位で０〜８バイトのデータを送信するために使用される。そして、パケットフィルタ５１０は、ＣＡＮメッセージの「ＩＤ」に基づいて、すなわちデータ内容や送信ノードに基づいて、ＣＡＮメッセージを車載ＬＡＮに通過させるか遮断するかを判断することができる。つまり、パケットフィルタ５１０は、テレマティクス３４０及びＯＤＢ−ＩＩ３５０からの入力に対して、「ＩＤ」に基づいて判断して、通信状態ＥＣＵ等、正規なＥＣＵ等に宛てたメッセージのみを通し、それ以外は遮断することができる。このようにして、パケットフィルタ５１０を設置することで、インジケータあるいはＬＥＤは、テレマティクス通信状態及び診断機器接続状態を正しく表示することができ、かつ、不正なメッセージは遮断される。
【０２０６】
［まとめ］
図３０は、実施の形態３におけるＶ字型モデルによるシステム開発の手順を示す図である。
【０２０７】
本実施の形態では、モデルベース開発システム１０と脅威分析システム２０Ｂとを連携させることで、システム開発の上流工程で脅威分析を行い対策一覧データ２３０を出力し、出力した対策一覧データ２３０に示される対策一覧を制御モデル１１０に反映する。また、モデルベース開発システム１０とシミュレート機能追加システム２６とを連携させ、攻撃一覧データ２６５を出力し、攻撃一覧データ２６５に示される攻撃一覧に基づき、制御モデル１１０に攻撃をシミュレートする機能を追加する。これにより、脅威の対策が施された制御モデル１１０において、さらに脅威に対する効果をシミュレーションで評価することができる。つまり、システム開発の上流工程で脅威に対する対策と評価を行うことが可能となる。
【０２０８】
このように、本実施の形態におけるソフトウェア開発システム１Ｂによれば、手戻りが少なく、迅速に対応可能となり、モデルベース手法に基づいたシステム開発における開発効率を向上できる。
【０２０９】
また、本実施の形態におけるソフトウェア開発システム１Ｂによれば、モデルベース開発システム１０と脅威分析システム２０Ｂとシミュレート機能追加システムとを連携させることで、新たな脅威に対する対策とその脅威による攻撃をシミュレートする機能とを、システム設計の段階で実行可能な制御モデルに反映することができるので、開発工程の上流でセキュリティ対策機能の有効性を確認することができる。このため、手戻りが少なく、迅速に対応可能となる。
【０２１０】
以上のように、本開示にかかるソフトウェア開発システムは、モデルベース開発手法によるシステム開発の上流工程において、脅威分析を行い、脅威に対する対策を出力し、対策を反映したモデルをシミュレーションにより評価する機能を有することができるので、システム開発における作業の手戻りを減らすことができる。
【０２１１】
以上、実施の形態１〜３において本開示のソフトウェア開発システムについて説明したが、各処理が実施される主体や装置に関しては特に限定しない。ローカルに配置された特定の装置内に組み込まれたプロセッサーなど（以下に説明）によって処理されてもよい。またローカルの装置と異なる場所に配置されているクラウドサーバなどによって処理されてもよい。
【０２１２】
なお、上記の実施の形態では、モデルベース開発システムと脅威分析システムとを連携させることについて説明したが、脅威分析システムと連携される開発システムは、モデルベース開発システムすなわちモデルベース開発手法によるシステム開発に限定されるものではない。脅威分析システムの脅威分析ツール部に、制御モデルの代わりとなる情報を入力することができれば、モデルベース開発システムに代えてＵＭＬ等の開発手法による通常のシステム開発に適用してもよい。この場合、実行可能モデルは、データフローに限らず、例えばUMLの他の記法(ステートチャート図、シーケンス図等)で記述されてもよい。
【０２１３】
また、実施の形態１〜３で説明した粒度変換部２５は、モデルベース開発システムと脅威分析システムとを連携させるために利用されることから、単体で提供されるとしてもよい。すなわち、モデルベース開発システムによって作成された制御モデルが入力され、入力された制御モデルを構成する複数の要素を、所定の粒度になるようにグルーピングを行い、前記グルーピングを行った複数の要素のデータフローの前後のつながりを設定することにより、前記グルーピングを行った複数の要素を、前記制御モデルの個々の構成要素として、前記脅威分析ツール部に出力する粒度変換部を単体で提供してもよい。
【０２１４】
さらに、本開示は、以下のような場合も含まれる。
【０２１５】
（１）上記のシステムや装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０２１６】
（２）上記のシステムや装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０２１７】
（３）上記のシステムや装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０２１８】
（４）また、本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０２１９】
（５）また、本開示は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０２２０】
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０２２１】
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０２２２】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【産業上の利用可能性】
【０２２３】
本開示は、ソフトウェア開発システムおよびプログラムに利用でき、特に車載システム等の組込みシステムの開発などセキュリティが重要な機器のソフトウェア開発システムおよびプログラムに利用できる。
【符号の説明】
【０２２４】
１、１Ａ、１Ｂ  ソフトウェア開発システム
１０  モデルベース開発システム
２０、２０Ａ  脅威分析システム
２５  粒度変換部
２６  シミュレート機能追加システム
６０〜６５  要素
１００  制御モデル作成ツール部
１１０  制御モデル
１２０  自動コード生成ツール部
１３０  ソースコード
１４０  評価ツール部
１５０  評価結果
２００  脅威分析ツール部
２１０  脅威一覧データ
２２０  対策一覧作成ツール部
２３０  対策一覧データ
２４０  脅威ＤＢ
２４５  脅威モデル
２５０  対策ＤＢ
２５５  対策モデル
２６０  攻撃一覧作成ツール部
２６５  攻撃一覧データ
２７０  攻撃ＤＢ
２７５  攻撃モデル
３００  車載システム
３１０  車載ＧＷ
３２０  通信部
３３０  サーバ
３４０  テレマティクス
３５０  ＯＢＤ−ＩＩ
３７０  操作ＥＣＵ
３８０  表示ＥＣＵ
３９０  駆動ＥＣＵ
３３２  ネットワーク
３９２  ＣＡＮ
４００  診断機器
４０２  コネクタ
５００  攻撃ツール
５１０  パケットフィルタ
【図１】
2017068825.tif 000003
【図２】
2017068825.tif 000004
【図３】
2017068825.tif 000005
【図４】
2017068825.tif 000006
【図５Ａ】
2017068825.tif 000007
【図５Ｂ】
2017068825.tif 000008
【図５Ｃ】
2017068825.tif 000009
【図５Ｄ】
2017068825.tif 000010
【図５Ｅ】
2017068825.tif 000011
【図６】
2017068825.tif 000012
【図７】
2017068825.tif 000013
【図８】
2017068825.tif 000014
【図９Ａ】
2017068825.tif 000015
【図９Ｂ】
2017068825.tif 000016
【図１０】
2017068825.tif 000017
【図１１】
2017068825.tif 000018
【図１２】
2017068825.tif 000019
【図１３】
2017068825.tif 000020
【図１４Ａ】
2017068825.tif 000021
【図１４Ｂ】
2017068825.tif 000022
【図１５】
2017068825.tif 000023
【図１６】
2017068825.tif 000024
【図１７】
2017068825.tif 000025
【図１８】
2017068825.tif 000026
【図１９】
2017068825.tif 000027
【図２０】
2017068825.tif 000028
【図２１】
2017068825.tif 000029
【図２２】
2017068825.tif 000030
【図２３】
2017068825.tif 000031
【図２４】
2017068825.tif 000032
【図２５】
2017068825.tif 000033
【図２６】
2017068825.tif 000034
【図２７】
2017068825.tif 000035
【図２８Ａ】
2017068825.tif 000036
【図２８Ｂ】
2017068825.tif 000037
【図２９】
2017068825.tif 000038
【図３０】
2017068825.tif 000039
【図３１】
2017068825.tif 000040