自動車計測ポータル-最新計測技術の情報発信サイト
お問い合わせ

「つながるクルマ」のガイドライン:ISO/SAE 21434
車載ソフトウェア開発者向け準拠のヒント

自動車が様々なモノとつながり、“自動運転車”も身近なものになりつつある昨今、車載ソフトウェアの設計・実装を行う際には常にセキュリティを意識することが求められています。ISO/SAE 21434は、セキュリティ意識の向上と浸透のために、自動車メーカーやサプライヤーが今後準拠するべき国際標準規格です。

本記事ではISO/SAE 21434の概要を説明し、車載ソフトウェア開発者のための準拠のヒントをいくつか紹介します。

ISO/SAE 21434とは?

ISO/SAE 21434 “Road vehicle - cybersecurity engineering”は、現在策定のための準備が進められている、自動車関連電子システムのサイバーセキュリティリスクに焦点を当てた規格です。

ISO/SAE 21434の概要

ISO/SAE 21434は、設計段階から廃車に至るまで、自動車のライフサイクル全体を通したサイバーセキュリティ対策の必要性を訴えており、自動車の電子システム、電子部品、ソフトウェアに加え、外部ネットワークとの接続部もその対象となる予定です。

また、自動車開発に携わる開発者にとって、サプライチェーン全体でセキュリティ対策を講じていくうえでの、包括的なアプローチとなると考えられています。

ISO/SAE 21434の重要性

Wi-FiやBluetoothを利用した自動車のコネクティビティ技術および自動運転技術の進歩にともない、自動車がサイバー攻撃の標的となるリスクも増大しています。セーフティクリティカルなシステム開発を目指す既存の規格では、サイバー攻撃のリスクを十分にカバーできているとは言えないため、新たなガイドラインや規格を作る必要性が出てきたのです。

自動車部品のライフサイクル全体でサイバーセキュリティ対策を講じるため、構造化されたプロセスを確立する - これがISO/SAE 21434策定の動機となっています。

本規格の制定により、自動車メーカーやサプライヤーはサイバーセキュリティ対策に十分な注意を払うことが求められるようになります。また、サイバーセキュリティに対するサプライチェーン全体でのリスク管理も必要になってきます。

自動車に関連する“すべて”が最初からセキュリティを考慮のうえ設計されるように、本規格では、各企業が「サイバーセキュリティ文化」を推進することを期待しています。

ISO/SAE 21434への準拠

ISO/SAE 21434にはソフトウェア開発に関する要件も含まれており、潜在的な脆弱性の検出やソフトウェアの全体的な一貫性・正確性・完全性に対するサイバーセキュリティの観点からの分析が求められます。

設計に関わる意思決定において、サイバーセキュリティは常に第一に考えられるべきであり、ソフトウェア開発で使用するプログラミング言語を選ぶ際にも考慮が必要になります。

プログラミング言語の選択基準としては、以下のようなものがあります。

・セキュアな設計やセキュアコーディングができるか
・構文やセマンティックを明確に定義できるか

しかし、選択した言語で上記の基準が十分に満たされないこともあるでしょう。そのような場合に、以下のような方法を採ることでプログラミング言語の“足りない部分”を補うことができます。

・言語サブセットを利用する
・強い型付けを徹底する
・防御的実装テクニックを利用する

そして、選択した言語の不足を補うにはコーディングガイドラインの利用がお勧めです。

MISRA C:2012(改訂1)とCERT Cガイドラインへの準拠が推奨される理由

C言語やC++言語のように、プログラミング言語の中には、深刻または未規定の動作を引き起こし得る特徴を持つものがあることはよく知られています。セキュアなシステムを構築するうえで、このような特徴は許容できないものです。そのため、このような言語構成の使用は、サイバーセキュリティ要件を満たす言語サブセットの利用がない限りは、禁止されています。

車載ソフトウェアの開発で最もよく使用されているのは、今も変わらずC言語です。そして、ISO/SAE 21434では、C言語を用いるすべてのプロジェクトにおいて、MISRA C:2012(改訂1)とCERT Cガイドラインへの準拠を推奨しています。

MISRA C:2012でもCERT Cガイドラインでも、言語サブセットの作成に重きが置かれており、MISRA C:2012 (改訂1)には「MISRA CガイドラインはC言語のサブセットを定義するものである」旨の記載があります。

MISRA CやCERT Cガイドラインでは、深刻または未規定の動作を引き起こしかねない機能の使用を防ぐという方法で、サブセットを定義しています。

例を挙げるとすると、MISRA C:2012(改訂1)のルール21.5では<signal.h>内での関数の使用を、ルール21.21ではsystem関数の使用を禁じています。

同様に、CERT Cのルール11シグナル(SIG)では特定のシグナルハンドラの使用を、ENV33-Cではsystem()の呼び出しを禁じています。

強い型付けを行うことで、言語データの型に対する理解が明確になるため、プログラミングエラーの発生防止に一定の効果があります。そのため、強い型付けを持つコーディングガイドラインの使用は、コードの正確性と一貫性の確保につながります。

MISRAC:2012(改訂1)の実質的な型モデルは、強い型付けを確実に行うためのものであり、CERT Cでも個々のルール(例:符号付整数オーバーフローの防止を目的とするINT32-C)の中で暗黙的に強い型付けを義務付けています。

防御的実装テクニックを用いることで、予期せぬ状況下であっても、ソフトウェアが機能し続けるようにすることができます。これを実現するには、「起こり得ること」を事前に考えておくことが必要になります。例えば、データ改ざんの可能性を考慮しておくことや、数論的関数の評価順序を理解しておくことなどが求められます。そして何より、コードは理解しやすいようにシンプルに書いておく必要があります。

防御的実装テクニックの第一歩は、広く一般に認められているコーディングガイドラインを使うことです。MISRA C:2012(改訂1)とCERT Cでは、深刻または未規定の言語動作を特定することで、コードの信頼性とメンテナンス性を高め、エラーの発生を抑えるという方法を採っています。

CERT CはC言語のセキュリティ規格であり、サイバーセキュリティ特有の脆弱性を洗い出すことを目的に作られています。一方、MISRA C:2012(改訂1)はセーフティとセキュリティの両方に適用可能な言語サブセットを定義しており、防御的実装テクニックとしてswitch文に関する決まり(ルール16.2および16.3)やリソース管理に関する決まり(ルール22.x)を設定しています。

ISO/SAE 21434対応ツールの必要性

コードの脆弱性や弱点を効果的に洗い出し、ISO/SAE 21434で推奨されている(MISRAやCERTなどの)コーディングガイドラインへの準拠を目指すのであれば、業界標準の静的解析ツールの使用をお勧めします。

Helix QACをはじめとする静的コード解析ツールは、コーディングガイドラインに対するコードの準拠度を確認するためだけでなく、準拠していることを対外的に証明するためにも使うことができます。サイバーセキュリティ要件に関しても、コード全体での一貫性・正確性・完全性の確保に役立ちます。

ソフトウェアツールは、自動車開発において必要不可欠です。だからこそ、最終的な製品である自動車のサイバーセキュリティへの影響を考慮した上で、どのようなツールを選び、どのように使うのかを決める必要があります。もちろん、静的解析ツールのような検証用ツールも例外ではありません。

開発プロセスで使用するツールが、サイバーセキュリティに悪影響を及ぼすようなことは避けなくてはなりません。そのためには、適切なアクセス管理と正しい使用方法の徹底が求められます。そして、どのようにツールを管理しているかを外部に示すためには、第三者機関による認証を証明するドキュメント等の“証拠”が必要になります。

適切なツールを使うことで、コンプライアンスにかかるコストや手間を削減することができます。また、Helix QACのような静的解析ツールは、安心・安全で、なおかつ信頼性の高いソフトウェア開発を目的として制定されたガイドラインへの準拠を手助けします。

Helix QACは、MISRA C:2012とCERTCガイドラインの両方に完全準拠しており、セーフティクリティカルなシステム開発における使用に適したツールとしてSGS-TÜV-SAARからの認証も受けています。このツールを使用すれば、あなたの開発したソフトウェアにバッファオーバーフローなどの一般的によくあるセキュリティの脆弱性が潜んでいないかどうか、今よりもずっと簡単に確認することができるようになります。

さらに、Helix QACをはじめとする静的コード解析ツールの多くは、以下を実現することで、コンプライアンスの推進に貢献します。

・コーディングガイドライン遵守を徹底し、ルールに違反しているコードを検出
・開発の初期段階でコンプライアンス違反を検出
・コードレビューやマニュアルテストにかかる手間を削減
・長期的かつバージョン横断的に、ソフトウェアのコーディングガイドラインへの準拠度を評価・記録

規格の準拠にHelix QACがどのように役立つのか、実際に使用して確かめてみませんか。無償の評価ライセンスをご提供しています。

Helix QACを使って、ISO/SAE 21434への準拠を進めませんか?

*この記事は、Perforce Software社によって書かれた下記URLのブログ記事(2020年6月29日公開)の参考訳です。
https://www.perforce.com/blog/qac/ISO-21434-Compliance

本記事に掲載の計測試験にご興味がございましたらお気軽にお問い合わせください
 
PageTop
本ウェブサイトではサイト利用の利便性向上のために「クッキー」と呼ばれる技術を使用しています。サイトの閲覧を続行されるには、クッキーの使用に同意いただきますようお願いいたします。詳しくはプライバシーポリシーをご覧ください。