バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • 車載ソフトウェアの品質とセキュリティ向上を目指したシノプシスの取り組み

2017 Aug Summer vol.107

車載ソフトウェアの品質とセキュリティ向上を目指したシノプシスの取り組み

シノプシス CISSP/セキュリティ・ストラテジスト Robert Vamosi

ソフトウェア・サインオフ

現在のソフトウェアは、完全な自社開発のものはほとんどなく、たいていは外部コンポーネントを組み合わせて作成しています。極端な例では、ソフトウェア全体の90%をサードパーティ・コードが占め、残りの10%でこれらのコードをつなぎ合わせ、独自IPの追加によって製品差別化を図っているケースもあります。このような外部コードの組み合わせによってブラックボックス化したソフトウェアの可視性を高めようというのがソフトウェア・サインオフの考え方です。これにより、企業は開発ライフサイクル全体を通じてデュー・ディリジェンスを実施し、劣悪なユーザー体験を回避し、法的責任、リスク、損失に関するコストを軽減できるようになります。ソフトウェア・サインオフを導入することにより、今後出荷するすべての製品で品質管理、セキュリティ、安全性、機密性を徹底することができます。

画像(仮)

図2:車載ソフトウェアの不具合はこうした状況が発生させるコストに匹敵する結果を引き起こしかねません・・・

サインオフは元々サプライ・チェーンの品質管理から生まれた概念で、他の業界ではよく知られた考え方です。サインオフは個々の部品に完璧を求めるのではなく、ある一定の品質レベルに達していることを要求します。そして納入側と受取側の双方で部品に対してテストを行い、妥当性を確認します。このように二者間でテストを行うと、成果物の品質に食い違いがあったり、仕様やテスト・プロセスに曖昧さがあったりした場合、即座に発見することができます。当然、これらのテストを通じてより深い根本原因解析が可能になるため、本質的な不具合を修正しながら全体的なシステム品質の向上を図っていくことができます。

現在のソフトウェア開発にはこのようなサインオフの仕組みが存在しません。品質とセキュリティが不透明なままソフトウェア・コンポーネントを受け入れてしまうと、その後の大規模なプロジェクトで大きなリスクを抱え込むことになります。

このリスクは、サプライヤの数が増え、全体的なサプライ・チェーンの階層が深くなるにつれて増大します。

画像(仮)

図3:開発プロセスの要所でソフトウェア・サインオフを実行し、最高の品質を確保

ソフトウェア・サインオフは法規制や業界標準の遵守にも役立ちます。このことは、今後自動車業界にとってますます大きな意味を持つようになるでしょう。

サイバー・サプライ・チェーンでは、すべてのメンバーが明確なサインオフ基準を確立することが求められます。サインオフの合格判定に使用する具体的なしきい値は、アプリケーション分野、求められる品質レベル、セキュリティの脅威/懸念、そして業界の受け入れ態勢/実施可能性など多くの要因を考慮して決定します。また、サードパーティのライブラリ・コンポーネントに存在する既知のセキュリティ脆弱性の数、静的解析で検出される重大な欠陥の数、高度なモデル・ベースのプロトコル・ファズ・テストでバグが検出されるまでの最小テスト時間、自動単体テストのコード・カバレッジなどをしきい値に設定することも考えられます。

こうした認識に立ち、自動車業界は既に独自の業界規則の作成に乗り出しています。ISO 26262などの規格はソフトウェア・テストに言及しているものの、具体的な指針までは示していません。MISRA(Motor Industry Software Reliability Association)C++などのガイドラインは言語を限定しており、汎用的ではありません。このような問題を解決するため、たとえば米国自動車技術会(SAE)はCybersecurity Assurance Testing Task Forceを設立し、ソフトウェア・テストに関して業界が従うべきフレームワークの構築を進めています。

なお、ソフトウェア・サインオフはプロセス・バリデーションとは異なることに注意してください。プロセス・バリデーションとは、どのような種類の入力からも一貫した高品質な出力が得られるように開発ライフサイクル全体にわたってデータを解析するものです。ソフトウェアの場合、プロセス・バリデーションはコストがかかり、定量化もきわめて困難です。

これに対し、ソフトウェア・サインオフは適切かつセキュアな設計基準に従っているかどうかを低コストで定量化が容易な自動/半自動のテスト・プロセスにより確認することを目的としています。ソフトウェア・サインオフを成功させるには、品質とセキュリティとの強い相関関係のあるサインオフ基準を採用すること、繰り返し可能で客観的な評価方法で合否判定が行えること、自動化が可能なこと、などの条件を満たす必要があります。

テスト自動化およびサインオフ基準の標準化という形でソフトウェア開発ライフサイクルのあらゆるステージにサインオフ工程を組み込むことにより、ソフトウェア開発者はコードの脆弱性を取り除き、セキュリティを確保することができます。評価の自動化は、静的解析、動的解析、ファズ・テスト、ソフトウェア・コンポジション解析などを使用して多面的に行う必要があります。

カテゴリートップ