CAN bus をTLS1.3でセキュアにする

自動車・航空機業界が直面しているセキュリティ問題の 1 つは、CAN busとその派生プロトコルを介した接続を保護することです。 これらのプロトコルの大きな問題は、通信相手を認証する方法がなく、トラフィックを暗号化しないことです。 これにより、中間者攻撃、リプレイ、そしてもちろん盗聴など、よく知られているさまざまな攻撃に対して無防備なままとなります。

wolfSSL はトランスポートに依存しません。 そのため、認証と暗号化を備えた TLS 1.3 グレードのセキュリティを、Bluetooth、BTLE、Zigbee、Zwave、シリアルなどの多数のトランスポートで実行します。トランスポートに依存しないというwolfSSLの戦略は、設計または歴史的な経緯でセキュリティがないかあるいは不十分なトランスポート プロトコルが使われている環境に大きなメリットをもたらします。

CAN (Controller Area Network) busは、車載マイクロコントローラが相互に通信するために車両で使用される一般的なデータ バスです。 最新の車両には数十個のマイクロコントローラーが搭載されており、新しい安全基準が施行されるにつれて、この技術の路上車両への使用は増加こそすれ減っていくことはないはずです。車両コンピュータはかなり強力になりつつあり、これらのコンピュータがリモートでハッキングされた事例がメディアですでに報道されています。 セキュリティは、今後数年間で CAN bus通信の重要な部分になるに違いありません。

CAN bus プロトコルの欠点の 1 つは、パケットあたり最大 8 バイトのペイロードしかサポートしないことです。そのため、この上にフロー制御とパケット ヘッダーを追加するレイヤーを乗せています。このレイヤーのおかげでより大きなパケットを確実に送信できるようになっています。 使用例として最も一般的なものの 1 つは ISO-TP (ISO 15765-2) で、定期的なOBD-2 診断メッセージなどに使用されます。

ISO-TP の優れている点は、最大 4KB のパケットを送信できることです。一方、wolfSSL の優れている点は、データ送受信機能を使用してほとんどすべてのものにフックできることです。 この両者の優れている点を使って、wolfSSL を ISO-TP にフックし、これを CAN bus上で使用するサンプルプログラムを作成しました。 このサンプルプログラムは、TLS ハンドシェイクをネゴシエートし、暗号化されたメッセージを送受信する単純なエコー クライアントおよびサーバーで構成されています。 Linux カーネルには、README に記載されているように仮想 CAN busが組み込まれているので、実際の CAN busを使用してこれを試すことができます。 たとえば、ラップトップと Raspberry Pi 3A の間で以前に作成したものを次にお見せします:

この構成でサンプルプログラムは以下のように機能します:

コードは比較的簡単に実行できますが、詳細についてはお気軽にお問い合わせください。 今後の wolfSSL の CAN バス セキュリティ ツールの追加にご期待ください。

原文:https://www.wolfssl.com/securing-can-bus-tls-1-3/ & https://www.wolfssl.com/wolfssl-riding-can-bus/