Bluetooth Meshセキュリティの概要

セキュリティの重要性

IoT(Internet of Things、モノのインターネット)に関する最も議論されている問題の1つがセキュリティです。農業から病院、住宅のスマートホームから商業ビル、発電所から交通管理システムに至るまで、IoTシステムと技術は私たちの生活の多くの部分に影響を与えます。IoTシステムにおけるセキュリティ侵害は、壊滅的な結果を招く可能性があります。

Bluetooth® メッシュネットワーキング は、セキュリティを最優先事項として設計されました。この記事では、主要なセキュリティ機能と対処されるセキュリティ問題の概要を説明します。さらに詳細なセキュリティに関する記事も公開される予定です。

Bluetooth Meshネットワーキングにおけるセキュリティの必須性

Bluetooth® Low Energy (LE) GATTデバイスは、Bluetoothコア仕様で定義されたさまざまなセキュリティ対策を実装することができます。製品設計者は、必要なセキュリティ対策を決定する責任があり、利用可能なセキュリティ機能を全く採用しないことも許可されています。言い換えれば、Bluetooth Low Energy GATTにおけるセキュリティは任意です。これは、単一のデバイスと1台の他のデバイスとの接続のセキュリティについて話している場合には意味があります。しかし、Bluetooth Meshネットワーキングにおけるセキュリティは、個々のデバイスやピアデバイス間の接続のセキュリティではなく、デバイスのネットワーク全体とネットワーク内のさまざまなグループのセキュリティを扱います。

したがって、Bluetooth Meshネットワーキングにおけるセキュリティは必須です。

Bluetooth Meshネットワーキングのセキュリティの基本

以下の基本的なセキュリティステートメントは、すべてのBluetooth Meshネットワークに適用されます:

暗号化と認証

すべてのBluetooth Meshメッセージは暗号化され、認証されます。

関心の分離

ネットワークセキュリティ、アプリケーションセキュリティ、デバイスセキュリティは独立して対処されます。

エリア分離

Bluetooth Meshネットワークは、暗号的に異なるサブネットに分割することができます。

キーリフレッシュ

Bluetooth Meshネットワークの運用中にセキュリティキーを変更することができます。

メッセージの難読化

メッセージの難読化により、ネットワーク内で送信されたメッセージの追跡が難しくなり、ノードの追跡が困難になります。

リプレイ攻撃の保護

Bluetooth Meshセキュリティは、リプレイ攻撃からネットワークを保護します。

ゴミ箱攻撃の保護

ノードは安全にネットワークから削除でき、ゴミ箱攻撃を防ぐことができます。

セキュアなデバイスプロビジョニング

デバイスをBluetooth Meshネットワークに追加してノードとして利用するプロセスは、安全なプロセスです。

関心の分離とセキュリティキー

Bluetooth Meshセキュリティの中心には、3つの種類のセキュリティキーがあります。これらのキーは、Bluetooth Meshネットワークの異なる側面にセキュリティを提供し、Bluetooth Meshネットワーキングセキュリティにおける「関心の分離」と呼ばれる重要な機能を実現します。

メッシュライトがリレーとして機能する場合を考えてみましょう。リレーとしての役割では、ビルのBluetooth Meshドアおよび窓セキュリティシステムに関連するメッセージを処理することがあります。ライトはこれらのメッセージの詳細にアクセスして処理する必要はありませんが、他のノードにリレーする必要があります。

この利害衝突を解決するために、Bluetooth Meshでは、ネットワーク層でメッセージを保護するためのAppKeysと、照明、物理セキュリティ、暖房などの特定のアプリケーションに関連するデータを保護するための異なるセキュリティキーが使用されます。

すべてのノードは、1つまたは複数のNetwork Keys (NetKey)を所有しており、それぞれがサブネットに対応します。ノードがネットワークのメンバーであることを示すのはNetKeyの所有です。ネットワーク暗号化キーとプライバシーキーは、NetKeyから直接導出されます。

NetKeyを所有していることで、ノードはネットワーク層まで暗号化と認証を行うことができ、リレーなどのネットワーク機能を実行することができますが、アプリケーションデータの暗号化や復号はできません。

各ノードには、Device KeyまたはDevKeyと呼ばれるユニークなセキュリティキーもあります。DevKeyは、ノードのプロビジョニングと設定に使用されます。

エリア分離

主要なNetKeyの所有は、Bluetooth Meshネットワークのメンバーシップとアクセス権を定義します。しかし、ネットワークを異なるサブネットに分割することも可能であり、それぞれに独自のサブネットキーがあります。これにより、特定のサブネットキーを所有するデバイスだけが、そのサブネットの他のデバイスと通信できます。サブネットキーはアドホックに作成および割り当てることもできます。良い例としては、ホテルの部屋ごとにノードを分離することが挙げられます。

ノードの削除、キーリフレッシュ、およびゴミ箱攻撃

前述のように、ノードにはさまざまなBluetooth Meshセキュリティキーが含まれています。ノードが故障して廃棄する必要がある場合や、所有者がノードを別の所有者に販売する場合、デバイスとそのキーがネットワークに対して攻撃を行うことができないようにすることが重要です。

ノードの削除手順

ノードをネットワークから削除する手順が定義されています。Provisionerアプリケーションを使用して、ノードを「拒否リスト」に追加し、その後、キーリフレッシュ手順が開始されます。

キーリフレッシュ手順では、ネットワーク内のノード全員(拒否リストのメンバーを除く)に、新しいネットワークキー、アプリケーションキー、そして関連するすべての派生データが発行されます。言い換えれば、ネットワークおよびアプリケーションのセキュリティの基礎となるすべてのセキュリティキーが交換されます。

そのため、ネットワークから削除されたノードが古いNetKeyや古いAppKeysを含んでいたとしても、ネットワークのメンバーではなく、脅威をもたらすことはありません。

プライバシー

プライバシーキーは、NetKeyから派生され、ネットワークPDUヘッダー値(ソースアドレスなど)を難読化します。難読化により、カジュアルなパッシブ傍受がノードやそのユーザーを追跡することが難しくなり、トラフィック分析に基づく攻撃が困難になります。

リプレイ攻撃

ネットワークセキュリティにおけるリプレイ攻撃は、傍受者が1つまたは複数のメッセージをキャプチャし、それを後で再送信する技術で、受信者を欺いて攻撃デバイスが許可されていない操作を行わせることを目的としています。一般的な例は、車のキーレスエントリーシステムが攻撃者によって侵害され、認証シーケンスを傍受し、その後再送信することで車に侵入するケースです。

Bluetooth Meshネットワーキングは、ネットワークPDUフィールドであるシーケンス番号(SEQ)とIVインデックスを使用してリプレイ攻撃から保護します。要素はメッセージを公開するたびにSEQ値をインクリメントします。ノードがSEQ値が最後の有効メッセージ以下のメッセージを受信した場合、それはリプレイ攻撃に関連している可能性があるため、メッセージを破棄します。IVインデックスもSEQと共に考慮されます。特定の要素からのメッセージ内のIVインデックス値は、常にその要素からの最後の有効メッセージと同じか、それ以上でなければなりません。

Bluetooth Meshネットワーキングのほとんどのセキュリティ機能は、業界標準の暗号化アルゴリズムおよび手順に基づいています。これらについては、今後のセキュリティ関連の記事で説明される予定ですが、ここでは最も重要なものを説明します。

Bluetooth Meshスタックで使用される2つの主要なセキュリティ機能は、AES-CMACとAES-CCMです。これらは基本的な暗号化および認証機能であり、キー生成に使用されるすべての他の機能はこれらに基づいています。

AES-CMAC

Cipher-based Message Authentication Code (CMAC) は、任意の可変長入力に対して固定長の128ビットメッセージ認証値を生成するアルゴリズムです。AES-CMACアルゴリズムを使用してメッセージ認証コードMACを生成する式は以下の通りです:

MAC = AES-CMACk(m)

AES-CMACへの入力は:

k – 128ビットのキー。

m – 認証される可変長データ。

ES-CMAC は優れたエラー検出機能を備えています。他の技術、チェックサムの検証やエラー検出コードの使用などは、データの偶発的な変更のみを検出する場合がありますが、AES-CMAC は意図的な不正なデータ変更と偶発的な変更の両方を検出するように設計されています。この機能について詳しく知りたい場合は、定義を含む RFC4493 を参照してください。

AES-CCM

AES-CCM は、暗号化ブロック暗号と共に使用することを目的とした汎用の認証暗号化アルゴリズムです。Bluetooth mesh specification では、AES-CCM がすべてのケースで基本的な暗号化および認証機能として使用されます。使用方法の式は次の通りです:

ciphertext , MIC = AES-CCMk (n,m,a)

AES-CCM には4つの入力があります:

  • k – 128ビットのキー。
  • n – 104ビットの ノンス
  • m – 暗号化および認証される可変長データ。
  • a – 認証のみが行われ、暗号化されない可変長データ、別名 Additional Data。この入力パラメータはゼロバイトの長さである可能性もあります。

AES-CCM からの2つの出力があります:

  • ciphertext – 暗号化された後の可変長データ。
  • MIC – m と a のメッセージ整合性チェック値。

図 1 は、Bluetooth® メッシュネットワーク層または上位トランスポート層からのプレーン テキスト ペイロードが、AES-CCM によって入力暗号化キー、ノンス、およびプレーン テキスト ペイロードと共に処理され、暗号化されたペイロードと MIC が出力される様子を示しています。

https://www.bluetooth.com/wp-content/uploads/2017/09/security_fig3.jpg

図 1 – AES-CCM を用いたパケットペイロードの暗号化と認証

SALT 生成

Bluetooth® メッシュセキュリティは、AES-CMAC 関数を使用する SALT 生成関数として s1 を定義しています。前述のように、AES-CMAC には 2 つの入力パラメータ k と m がありますが、SALT 生成で使用する場合は、入力パラメータ m のみが変化します。k は常に 128 ビットの値 0x0000 0000 0000 0000 0000 0000 0000 0000 に設定されており、Bluetooth メッシュ仕様ではこれを ZERO と呼びます。

https://www.bluetooth.com/wp-content/uploads/2017/09/security_fig4.jpg

図 2 – SALT 生成関数

SALT 生成関数への入力は:

  • m – ゼロ以外の長さのオクテット配列または ASCII コード化された文字列。

出力は 128 ビット MAC 値で、s1 の式は次の通りです:

s1(m) = AES-CMACZERO(m)

その他のセキュリティ機能

Bluetooth mesh networking specification のセクション 3.8.2「セキュリティツールボックス」では、さまざまなキー導出関数など、他のセキュリティ機能が定義されています。これらのすべては AES-CMAC と SALT 生成関数 s1 に基づいています(SALT 生成関数も AES-CMAC に基づいています)。

これから!

Bluetooth にとってセキュリティは重要な問題であり、このトピックは Bluetooth メッシュネットワーキングに関するシリーズで繰り返し取り上げられます。この記事を読んだ後は、Bluetooth® メッシュネットワーキングの主なセキュリティ機能と、その背後にある暗号技術について良い理解を得られたでしょう。今後の記事で Bluetooth メッシュネットワークセキュリティの詳細に進む準備が整いました。