IoT(Internet of Things)技術を用いた、インターネットにつながる自動車、コネクティッドカー。インターネットに自動車がつながることで、盗難を検知して位置情報を調べたり、運転データを活用して安全運転のドライバーは自動車保険が安くなったりするなど、さまざまなサービスに活用されています。このように、私たちの生活を支える自動車がますます便利になるのは喜ばしいことですが、残念ながら便利になった分、リスクも抱えることとなりました。
本記事ではハッキングされたコネクティッドカーが遠隔操作され、リコールにつながった事例を紹介します。また、なぜコネクティッドカーはハッカーに操作されるような仕組みになったのか、コネクティッドカーのセキュリティをいかに高めていくかを紹介します。
ハッキングの脅威、リコールの代償
自動車がインターネットにつながるということは、悪意のあるハッカーに少なからず隙を与えてしまうことになります。近年では米国メーカーが製造する自動車がハッキングされ、リコールとなった事例がありました。インターネットにつながるナビから自動車を遠隔制御し、ナビの操作だけでなく、ステアリングやアクセル、ブレーキといった運転に関わるものも操作が可能な状態でした。
ハッキング可能な脆弱性が発見されると、自動車メーカーはその原因調査を行い、対策済みソフトウェアにアップデートできるよう、すみやかに配信する必要があります。しかし、配信されたアップデートの実行はユーザーに一任されているため、緊急性が高いものとなるとリコールを余儀なくされます。
リコールとなるとユーザーからの信頼を失うだけでなく、台数によっては数百億円規模の損害に繋がってしまいます。
なぜ外部から操作されてしまうのか、車のソフトウェア化の歴史をたどる
自動車の一部であるナビだけがインターネットにつながるならまだしも、なぜステアリングやアクセルまでもがハッカーに操作されてしまうのでしょうか。これまで自動車がどのように進化してきたかを追いながら、車の仕組みを紹介します。
自動車が人々の生活に普及してきた1960年代ごろより、人体への影響、環境保護の観点から排気ガスへの規制が厳しくなりはじめました。厳しい排気ガスの基準を課せられた自動車メーカーは、アクセルやエンジンをはじめとする機械式だった各パーツの電子化に取り組んできました。
同時に、機械式から電子制御へ、つまりハードウェアからソフトウェアに代替されるパーツが増えたことで、不具合箇所の発見と修理が難しくなりました。そこで、ソフトウェアにおける不具合を発見・解消するために登場したのが、OBD(On-board diagnostics)ポートというインターフェースです。このOBDポートに専用の端末を接続することで電子化された自動車の状態が一目で分かるようになり、メンテナンスが格段に容易になりました。
このOBDポートの導入によって、自動車の電子化されたパーツは外部と通信可能であるインターフェースとなりました。実際に、OBDポートにコンピュータを接続し、CANネットワーク通信の改ざん・制御に成功したという実験結果もでています。
近年の自動車では、OBDポートとは別にDCM(Data Communication Module)という専用通信機が搭載され、ナビなどからDCMを介して24時間365日通信が可能となりました。「ハッキングの脅威、リコールの代償」の章にて紹介したハッキングの事例も、このDCMの脆弱性を利用してステアリングやアクセルの操作が行われたものでした。
このように、自動車の各パーツが電子化されたこと、そしてそのパーツが外部とつながることで、ハッカーが自動車を操るための扉が開かれたのです。
どうやってセキュリティを強化するか
これまでに、インターネットに接続された自動車である「コネクティッドカー」がハッキングによって操作される仕組みについて述べてきました。それでは、自動車のソフトウェアに携わるシステムエンジニアは、どのようにハッキングのリスクに対処していくべきでしょうか。
ソフトウェアにおける設計・テスト・運用フェーズのそれぞれに着目して、コネクティッドカーのセキュリティを高める手法を紹介します。ICT業界の中で培われた技術の転用であることが多いので、自動車業界のシステムエンジニアでなくとも馴染みがあるものもあるかと思います。
アクセス制御、認証、暗号化の設計でセキュリティを高める
ソフトウェアの設計において必ず導入すべきセキュリティ機能はアクセス制御・認証・暗号化の3つです。基本的なセキュリティ向上策ではありますが、基本であるからこそ疎かにしてはいけません。
まずは侵入させないために、アクセス制御を行います。アクセス制御にはユーザー権限の設定、パケットレベルで制御するパケットフィルタリング、DMZ(DeMilitarized Zone)の設置などのネットワーク分割という手法があります。ステアリングやアクセルなどに到達されないよう、まずはDCMやOBDポートで車内に侵入させない。そして車内で更にアクセス制御をし、多層防御によって不正なアクセスを遮断します。
次に、侵入された場合を想定すると車内機器間の通信の認証・暗号化も必要です。自動車ではCMAC(Cipher-based MAC)と呼ばれるメッセージ認証コードが採用されています。メッセージ認証コードとは、送受信者間で共通鍵を用いてやりとりされるコードのことです。具体的には、送信側の機器がメッセージと共通鍵をもとにコードを生成し、受信側の機器もメッセージ受信後に同じ共通鍵を使ってコードを生成し、コードが同一であることを確認します。これを車内のECU(Electrical Control Unit)と呼ばれる電子制御ユニット間のやりとりに利用することで、なりすましがされていないことを保証できます。
ちなみに、インターネットの世界ではデジタル署名が広く用いられていますが、ECUは計算能力が高いわけではないため、計算量が少なくて済むメッセージ認証コードが採用されています。
セキュリティテストで脆弱性を見つける
セキュリティ対策において、テストの工程も重要です。設計・実装を経て作られたプログラムに脆弱性がないことを、テストの工程で確認しましょう。セキュリティに関するテストでは、脆弱性診断ツールの活用は不可欠です。大量にある既知の脆弱性を生み出すアンチパターンを機械的に検出してくれるため、人力で既知の脆弱性をすべて確認するよりも、効率的かつ正確に脆弱性を検出できるでしょう。
脆弱性診断ツールには静的検証と動的検証の2種類が存在します。静的検証ではソースコードをツールに読み込ませて、構文エラーや脆弱性のある部分を検知します。動的検証ではツールからソフトウェアにさまざまなデータを流し込むことで、脆弱性がないか確認します。
ときに、診断ツールが莫大な数の脆弱性を検出することもあります。その場合は、発生可能性と影響度を分析したうえで、どこまで修正するかを決定しましょう。
運用フェーズで脆弱性に素早く適切に対処する
ソフトウェアの世界は日々進化しており、それに伴い新たな脆弱性も生まれています。そのため、運用時は脆弱性が見つかることを前提とし、セキュリティインシデントが発生してからの対応準備をしておかなければなりません。
ハッキングなどのセキュリティインシデントに対応するために企業内に設置されるのがCSIRT(Computer Security Incident Response Team:シーサート)というチームです。日本でも大企業を中心にCSIRTを設置する企業が増えつつあります。
CSIRTの働きは、火事発生時における消防署にたとえられます。火事発生時に119番宛の電話を受け取った消防署は至急メンバーを集めて消火活動を行い、のちに火事の事例をもとに予防活動を行うでしょう。もし火事の発見者が119番を知らなかったら、消防署員が出動時の手順が分からず手間取ってしまったら、その間に火事の被害はより広がっていくでしょう。
自動車において発生しうるセキュリティインシデントでも同様です。設置した窓口から連絡を受け取り、CSIRTメンバーが決められた手順に沿って至急対応します。そして、随時ソフトウェアのアップデートなどを行うことによって、セキュリティインシデントの発生を防ぎます。
このように、CSIRTが機能することで、セキュリティインシデントの被害を最小化することができます。コネクティッドカーをはじめ、セキュリティインシデントが重大となるソフトウェアの場合はとくに、素早く脆弱性へ対応できるような運用体制を整えることが重要です。
おわりに
コネクティッドカーがなぜハッキングされるか、そしてハッキングの脅威に対しどう対策していくべきかお分かりいただけたでしょうか。ユーザーの命を預かる製品を世の中に出すにあたり、セキュリティの担保は非常に重要です。ハッキングのリスクを正しく理解し、開発・運用工程ともに、しっかりと対策することが求められます。
便利さは時に危険を伴いますが、便利で安全な社会を実現するためにも、ぜひ本記事の内容を参考にしてみてください。