テイント解析(taint analysis)
近年、組込みソフトウェアの開発に劇的な変化がもたらされています。機能安全規格の台頭と、それに伴う開発手法の混乱。コンテンツの急激な増加と、それに伴うソフトウェアエンジニアリングの複雑さの増大。そして、ネットワークに接続されるようになったことで、サイバーセキュリティの脆弱性への懸念も高まっています。
テイント解析(taint analysis)は、開発者やセキュリティ専門家が、機密データや信頼できないデータの取り扱いに関連する潜在的な脆弱性を特定して対処することに役立つことから、セキュアコーディングの実践に不可欠な部分として、レジリエントで堅牢性に優れた組み込みソフトウェアアプリケーションの開発において重要です。
この講演では、テイント解析とそのツールが、機能安全とセキュリティのガイドラインを満たす開発ライフサイクルにおいて、どのように役立つかを紹介します。
Data & Control Coupling Analysis
モジュラーソフトウェアは、高品質のソフトウェアの特徴と見なされることがよくありますが、その主張は、モジュールが期待どおりに相互作用する場合にのみ当てはまります。 DO-178C 標準では、「要件ベースのテストがコードコンポーネント間のデータと制御結合を実行したことを確認するための解析」を要求しています。 本資料では、制御フローとデータフロー解析の組み合わせによって、制御結合とデータの結合の測定をどのように達成できるか、またソフトウェアツールを使用してそのプロセスをどのように効率化できるかについての概要を説明します。
データ結合と制御結合を満たすことについて
データ結合と制御結合の解析技術


制御結合とデータ結合のカバレッジ解析は、ステートメント、ブランチ、MCDC 等のカバレッジを補完して、モジュールが期待通りに相互作用して、システム全体が一体となって統合されていることを確認します。
オブジェクトコード検証(OCV)
オブジェクトコードカバレッジ解析
オブジェクトコード検証(OCV)は、ソースコードから生成されたオブジェクトコードが開発者の意図を正確に反映しているかどうかを確認するプロセスで、ソースコードとオブジェクトコードの間の構造的な違いを特定し、機能安全性の観点からコンパイラの信頼性を高めることです。これにより、以下のような分析情報を得ることから、特に航空機搭載ソフトウエアの開発ガイドラインであるDO-178Cにおいて、重要な役割を果たします。
1.コンパイラの信頼性:コンパイラは、高レベル言語の仕様に従ってコードを最適化したり変更したりすることができますが、これは機能安全性の要件と矛盾する場合があります。OCVは、コンパイラがソースコードとオブジェクトコードの間に不整合や未定義の動作を導入していないかどうかを検出するのに役立ちます。
2.防御的コーディングの有効性:防御的コーディングとは、メモリ破損や予期しないイベントなどに対処するためにソースコードに追加するコードのことです。しかし、コンパイラは防御的コーディングを無視したり削除したりすることがあります。OCVは、防御的コーディングがオブジェクトコードに正しく反映されているかどうかを確認するのに役立ちます。
3.コードカバレッジの完全性:コードカバレッジとは、テストケースがコードのどの部分を実行したかを測定する指標のことです。しかし、ソースコードレベルでのカバレッジは、オブジェクトコードレベルでのカバレッジと一致しない場合があります。OCVは、オブジェクトコードレベルでのカバレッジを測定し、ソースコードとの差異を分析するのに役立ちます。
LCSAJカバレッジ
最も効果的なコードカバレッジテストメカニズム

LCSAJ カバレッジを使用すると、ループの解析とプログラム構成要素の組み合わせの解析が強制されるため、他の利用可能な方法よりも、エラーを発生させる可能性のある多くの側面が確実に解析されます。
最悪実行時間(WCET)
マルチコアプロセッサ搭載システムのスタンダード準拠とWCET

マルチコアプロセッサの採用には課題がありますが、適切なツールを念入りに使用すれば克服できることを紹介します。
リアルタイムシステムの厳しいタイミング制約を満たすには、一般に実行時間の上限が必要です。そしてマルチコアプロセッサの課題は、上限を超えないように、すべてのケースで十分な時間を確保することです。さもなければ、ソフトウェアが常に期待どおりに動作するという保証はありません。
最悪実行時間 (WCET) は、特定の環境でタスクを実行するのにかかる最大時間です。
一般に、プログラムの実行時間の明確な上限を計算することはできません。
DO-330 ソフトウェアツール認定
今日の複雑でセーフティクリティカルなシステムは、自動化と効率化のためのツールに依存しています。ツール認定により、開発に使用されるツールが、それらによって発生する可能性のある障害やエラーに関連するリスクに見合った程度まで信頼できることが保証されます。DO-330/ED-215 は、ソフトウェア開発を含む、ソフトウェアツールが関与するすべてのセーフティクリティカルな開発活動に関連します。
DO-330/ED-215 は主に、DO-178C/ED-12C および DO-278A/ED-209 に代表される民間航空規格をサポートするための技術補遺として作成されました。ただし、「自動車、宇宙、システム、電子ハードウェア、航空データベース、安全性評価プロセスなどの他の分野でも使用される可能性がある」 とも主張しています。
ISO 26262 Tool QualificationのWebセミナー

ISO 26262 第2版の認証を支援
ISO 26262 第2 版の各条項の目的をどのように支援できるかについて、それぞれの表に対比させながら解説

MISRA C:2023 の最新情報と実践的使用法
MISRA C:2023とMISRA C:2012 Amendment 4 (AMD 4)が Embedded World 2023 で発表されました。AMD 4では、マルチスレッドとアトミック型に対するルールとディレクティブを追加/変更し、既存のガイダンスについても、開発者がC言語をどのように使用しているかに合わせて明確にしています。また MISRA C:2023 は、以前のバージョンのガイドライン、修正版 (AMD 4 を含む)、および補遺が 1 つの包括的な版に統合されたもので、準拠が促進できます。
MISRA C ワーキンググループ議長 Andrew Banks氏が、これらの更新と実践的な使用法について紹介しました。
自動車機能安全カンファレンス2022
コンパイラ認定と言語サブセットの相互補完による安全・安心なソフトウェア
概要:安全・安心なソフトウェアのためには、C、C++言語が持つセキュリティや安全性の弱点をコーディング規約による言語サブセットで排除することに加えて、正しく実装されたソースコードのプログラムとしての動作がオブジェクトコードレベルで保持されることの確信を得る必要があり、コンパイラがC、C++言語規格に準じて正しく動作し、規格どおりに振る舞うオブジェクトコードを生成することの評価が求められる。機能安全システムの開発で、これらの側面がどのように協調して安全性の向上に寄与するかを説明し、また適切に考慮されることで開発時間と費用の軽減にも貢献することを紹介する。
AUTOSAR and the LDRA tool suite
AUTOSAR Classic Platform、Adaptive Platform を活用するシステムの機能安全規格 ISO 26262 への準拠をどのように支援できるかについて紹介します。
ISO/SAE 21434 EDN掲載記事
ISO/SAE 21434 : 自動車サイバーセキュリティのソフトウェア認証
ISO21434_cybersecurity_J
ISO/SAE 21434 規格に対応したソフトウェア開発モデル
ISO21434_LDRA_J
スタンダード認証に求められるトレーサビリティ管理
IPA 独立行政法人情報処理推進機構 先進的な設計・検証技術の適用事例報告書 掲載記事
国際スタンダード認証に求められる「要件から検証結果までのトレーサビリティ管理」の効率化の取組み
Simulink 統合
Simulinkの設定画面からLDRAを選択してシミュレーション実行して、結果のカバレッジを表示。フローグラフから未実行パスを特定し、追加の単体テストをTBrunで実行。