自動車セキュリティ入門：CANインベーダーの原理と対策 ～車両盗難の被害を防ぐには？～

## 車両盗難被害の現状
警察庁「犯罪統計資料」[1]によると、2022年の自動車盗難数は5,734件で前年比552件増と被害が増加している状況です。
車両盗難の手口には、玄関などに置かれたスマートキーから出ている微弱な電波を特殊な機器でキャッチし、リレーのように車まで中継することでロックを解除する「リレーアタック」というものがありますが、この手口にはスマートキーを電波を遮断しやすいアルミの容器で保管することにより対策が有効であると言われています[2]。一方、自動車盗難の手口には他にも近年被害が増加していると言われているCANインベーダーという手法があります[2]。
CANインベーダーは施錠された車両の車室外(エンジンルームやバンパーの中など)の配線に盗難用の機器を直接接続して開錠信号を送信することにより盗むという手口です[11]。
本記事では、CANインベーダーの原理と対策に関する研究を解説し、自動車の開発に関わるエンジニアとして、もしくは、自動車を利用するユーザーとしてどういった対策ができるかを検討します。

## CANインベーダの原理
自動車内のコンピュータであるECU間を接続するネットワークプロトコルController Area Network(CAN)に対する脆弱性（情報の安全性を脅かす恐れのある欠陥）[3]が2008年にHoppeらにより報告されてから、多くの研究者によりCANの脆弱性と対策が研究されてきています。
CANインベーダは[3]で報告されたCANの脆弱性を用いた攻撃手法であり、これまでに多くの対策が検討されてきましたがCANの特徴から効率的で十分な対策の実現は困難であり、被害が増加しています。
CANは1985年に開発された通信方式[4]であり、当時は現在の様にセキュリティ対策の重要性が認知されていなかったためセキュリティ対策は行われておらず、必要な通信量およびコストの面から通信容量も少ない（最大1Mbps、1フレーム辺りの通信サイズ8Byte）通信方式となっています。そのため、近年のインターネットで普及しているセキュリティ対策の多くはCANに適用できません。

図１に正常時のCAN通信を示します。図の様にCANはバス型のネットワークトポロジーを取る通信仕様で、全ての通信はブロードキャストされバス上の全ての端末（ECU）が受信します。受信ECUでは、CANフレームのIDから自身が利用するフレームであるかの振り分けを行います。CANには送信元の端末を示すアドレス情報（ID）がなく、送信元の端末（ECU）を識別することはできません。
![図１_CAN通信_正常時.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3500636/da1dbbe7-0cdb-ac04-2883-e7f2ca3c6a91.png)
図１：CAN通信（正常時）

図２に攻撃者からなりすまし攻撃を受けている際のCAN通信を示します。攻撃者は本来正規の端末（ECU1）のみが送信するID: 0x001のCANフレームを送信します。このとき、攻撃者はECU2に意図した不正な動作（鍵を開ける/エンジンを始動する）を引き起こすようにCANフレーム内のデータを書き換えておきます。正規の受信端末（ECU2）は受信したフレームが正規の端末(ECU1)から送信されたものか判断がつかず、要求された動作をします。
![図２_CAN通信_攻撃時.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3500636/263b0bb7-12c8-aab3-f524-37ae39c0c980.png)
図２：CAN通信（攻撃時）

CANインベーダはこのCANの仕様（脆弱性）を利用した攻撃手法です。攻撃者は自動車のバンパーなどを外し、攻撃用の端末を接続することで鍵の開錠などを行い、自動車を持ち去ります。
攻撃者に必要な能力は以下の通りです。
- 攻撃用の端末を自動車内にあるCANバスネットワーク（特に鍵の開錠/施錠を行うECUと同じネットワーク）へ接続可能
- CANバスネットワーク上の通信仕様（鍵の開錠を要求するCANフレーム仕様=車両の設計情報）を把握している

ここまでの内容でCANインベーダの原理は理解できたと思いますので、次に対策を検討していきます。

## CANインベーダへの対策（開発者として）
### ・対策① 暗号化/認証
**概要：**
CAN通信内容を暗号化し、正規の端末間でしか通信できない（鍵を知らないと暗号化して正しい通信データを作成できない）様にする。CAN通信内容に認証コードを付与することで、正規の端末で送信されたメッセージであることを認証する。

**実現に向けた課題：**
- 計算リソースの不足
自動車のECUに利用されるコンピュータの性能は数十MHz～数百MHzであり、CAN通信は1~100ms周期などの短い周期で行います。そのため、CAN通信のために暗号化/認証を行うにはコンピュータリソースが足りない場合があります。

- CANの仕様制約
CAN通信に載せられるデータサイズは最大8Byteのため、認証コードを載せるには十分ではありません。ただし、CAN通信を高速化した別の通信プロトコルであるCAN FDを用いることで64Byteの通信が可能になるので、CAN FDを用いることで実現できる見込みがあります。

**安全性に対する懸念:**
- 鍵の管理
鍵を安全に管理する必要があります。全ての自動車で同じ鍵を利用する場合、いずれかの車で鍵を取り出せてしまうと、他の車でも攻撃が可能になってしまいます。全ての車で異なる鍵を利用する場合は開発コストが増加するためトレードオフを考慮した設計が必要です。
　→ 各ECUで安全に鍵を管理するにはHardware Security Moduleを利用することが有効です。
- リプレイ攻撃
　暗号化/認証コードの付与を行った場合も、鍵を持った正規の端末により生成されたメッセージであることを保証できるのみで、送信元の端末が正規の端末であるかは保証できません。そのため、正規の端末が過去に送信した鍵の開錠メッセージを保存しておき、別のタイミングで送信するリプレイ攻撃が考えられます。
　→ CANメッセージにカウンタを埋め込んでおき、同じメッセージが2度来たら不正と判断することでリプレイ攻撃への対策が可能です。

CAN通信に対する認証の仕組みのひとつとしてAUTOSARで規定されているSecOC[5]があります。より詳細を知りたい方はSecOCを調べてみてください。

### ・対策② ネットワークの分離/フィルタリング
**概要：** 
- CANバスを複数のネットワークに分離しGatewayで接続する。Gatewayは事前に規定したルールでフィルタリング/転送を行う[6]

**実現に向けた課題：**
- 自動車のネットワークでは$\mu s$オーダーの厳しい遅延保証が必要となるケースがあり、Gatewayによる転送で発生する遅延を許容範囲内に抑える必要がある。

**安全性に対する懸念:**
- 正規の端末と同一のネットワーク上に攻撃者を接続した場合、攻撃を検知できない。

図３に対策②の概要を示す。
![図３_ネットワークの分離.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3500636/dbd926cf-d9c6-5d41-1063-f5cc4215b78f.png)
図３：ネットワークの分離

### ・対策③ IDS（侵入検知システム）
**概要：**
- CANメッセージの通信周期（なりすまし攻撃時はメッセージ数が倍=周期が半分になる）の監視[7]や機械学習を用いた監視[8]により攻撃の有無を検知する。検知時には攻撃メッセージの遮断やメーターパネル等を通じたユーザーへの通知、ログの保存を行うなどの対処を行います[12]。

**実現に向けた課題：**
- 特に無し

**安全性に対する懸念:**
- 未知の攻撃など、IDSで検知できない攻撃を行われる可能性がある。

図４に対策③の概要を示す。
![図４_IDS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3500636/8df5b59f-0be8-b1cd-b043-6dd5b563366b.png)
図４：IDS

### ・対策④ 多層防御
これまでに３つ対策を上げてきたが、それぞれ懸念もあり全ての攻撃に対して完璧に防げる防御方式は存在していない。
そのため、複数の防御方式を組み合わせて攻撃を防げる可能性を許容可能な範囲まで引き上げることが重要である。

図５に対策④の概要を示す。
![図５_多層防御.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3500636/26b52b35-bd03-55e2-7147-a3c2f9a55a7e.png)
図５：多層防御：ネットワークの分離/フィルタリングとIDSの組み合わせ

## CANインベーダへの対策（ユーザーとして）
ユーザーとしてできる対策も開発者としてできる対策同様に完璧なものはありません。ただし、以下の様なことに気をつけることで盗難の被害に遭う可能性を下げることができます。
- 購入する車種/保有している車種にCANインベーダー等の盗難対策がなされているかを確認する。
　自動車メーカーによってはCANインベーダー等の盗難対策状況が公式ホームページ上で公開されていることがあります。
- 購入する車種/保有している車種にCANインベーダー等の盗難対策を追加する公式のオプションがないかを確認する。
　自動車メーカーによってはCANインベーダー等の盗難対策を購入後に追加で行えるオプションサービスがあることがあります。
　インターネット通販ではCANバス（OBD-IIポート）に接続するタイプの非公式の盗難対策ツール（ドングル）が多数販売されていますが、これらのドングルにも脆弱性が存在する場合がある[10]ため、非公式のものを利用する場合は注意が必要です。
- タイヤをロックする防犯チェーンなどの物理対策を行う
　物理対策も完璧ではありませんが、攻撃者は攻撃のコストとリターンで盗難を行うかの判断を行うため、物理対策を行い盗難にかかる時間を増加させる（コスト/リスクを増加させる）のは有効な対策です。

## まとめ
本記事では自動車に利用されているCANプロトコルの脆弱性およびその対策について説明しましたが、CANプロトコルに限らずどのような技術/システムにも脆弱性は存在します。適切な対策をすることにより、攻撃のリスクを軽減することは可能ですが、0にすることはできません。
より安全な技術/システムを正しく理由するサイバー空間（コンピュータ・ネットワーク）上のアプローチに加えて、チェーンでの施錠などの物理空間上のアプローチも行う多層防御がより効果的です。

## 参考文献
[1]https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00130001&tstat=000001201280&cycle=0&stat_infid=000040015380&tclass1val=0&metadata=1&data=1 (2023/10/08 参照)
[2]https://www3.nhk.or.jp/news/special/jiken_kisha/kishanote/kishanote51/ (2023/10/08 参照)
[3]T. Hoppe, S. Kiltz and J. Dittmann, "Security Threats to Automotive CAN Networks – Practical Examples and Selected Short-Term Countermeasures", In Proc. of the Int’l Conf. on Computer Safety, Reliability and Security (SAFECOMP), pages 234–248, 2008.
[4]https://www.ni.com/ja/shop/seamlessly-connect-to-third-party-devices-and-supervisory-system/controller-area-network--can--overview.html (2023/10/09 参照)
[5]https://cdn.vector.com/cms/content/know-how/VJ/PDF/For_Beginners_AUTOSAR_SecOC.pdf (2023/10/10 参照)
[6]M. Wolf, A. Weimerskirch, and C. Paar, “Secure in-vehicle communication,” in Proc. Embedded Secur. Cars: Securing Current Future Automot.IT Appl.. Springer, 2006, pp. 95–109.
[7]矢嶋純, 森川郁也, 長谷部高行 and 大久保隆夫, "CAN のイベント送信付き周期メッセージの検出と攻撃検知への応用," コンピュータセキュリティシンポジウム 2019 論文集, pages 33-40, 2019.
[8]A. K. Desta, S. Ohira, I. Arai and K. Fujikawa, "ID Sequence Analysis for Intrusion Detection in the CAN bus using Long Short Term Memory Networks," 2020 IEEE International Conference on Pervasive Computing and Communications Workshops (PerCom Workshops), Austin, TX, USA, pp. 1-6, 2020.
[9]https://www.marelli-corporation.com/assets/pdf/innovation/technical-review/vol14/p13-17.pdf (2023/10/10 参照)
[10]北川 智也，垣内 正年，新井 イスマイル，猪俣 敦夫 and 藤川 和利, "車載の社外品ドングルに対する近接攻撃の検証," コンピュータセキュリティシンポジウム 2017 論文集, 2017.
[11]https://fivewire1.com/free/relayattack (2023/10/17 参照)
[12]大平 修慈，井上 博之，新井 イスマイル and 藤川 和利, "車載LANへ侵入するマルウェアの証拠保全を行うカーネル上のフォレンジック機構," 情報処理学会論文誌, Vol.60, No.3, pp.791-802, 2019.