Bluetooth meshのセキュリティの中核にあるのが、3種類のセキュリティキーです。それぞれがBluetooth meshネットワークの異なる側面のセキュリティに対応しており、Bluetooth meshネットワークのセキュリティにおける「懸念対象の分離」の実現に重要な役割を果たします。
中継機能を持った照明器具を例に考えてみます。この照明器具は、Bluetooth meshネットワークのドアと窓のセキュリティシステムにメッセージを中継することがあります。照明器具としては、中継するメッセージの内容にアクセスしたりメッセージを処理したりする必要はありませんが、他のノードにメッセージを中継する必要があります。
Bluetooth meshでは、このような、あいいれない対象を扱う場合に備えてAppKeyという別のセキュリティキーを使用し、ネットワーク層のメッセージのセキュリティと、照明・入退室管理・暖房など個々のアプリケーションのデータのセキュリティを分けています。
Bluetooth meshネットワーク上の全てのノードは、1つ以上のネットワークキー(NetKey)を持っています。ネットワークキーは、プライマリーサブネットをはじめとする個々のサブネットごとにあります。ノードは、ネットワークキーを所有していることでネットワークのメンバーであると認められます。ネットワーク暗号化キーとプライバシーキーは、NetKeyから直接生成されます。
NetKeyがあれば、ノードはネットワーク層までの復号と認証を行い、中継などのネットワーク機能を果たせますが、アプリケーションデータの復号はできません。
また、個々のノードはデバイスキー(DevKey)という固有のセキュリティキーも持っています。DevKeyは、ノードのプロビジョニングと設定に使用されます。
プライマリNetKeyを持っていれば、Bluetooth meshネットワークのメンバーであることになり、そのネットワークにアクセスできます。しかし、ネットワークを個別のサブネットに分割し、それぞれにサブネットキーを用意することもできます。その場合、特定のサブネットキーを持つデバイスだけが、そのサブネットの他のデバイスと通信できます。サブネットキーは、アドホックベースで作成、割り当てすることもできます。サブネットの好例としては、ホテルの部屋ごとのノードの隔離が挙げられます。
先述したように、ノードはBluetooth meshの各種セキュリティキーを持っています。ノードが故障して廃棄しなければならなくなったり、ノードを売却したりする場合には、そのデバイスとデバイスが持っているキーが、元のネットワークに対する攻撃に使用できないようにすることが重要です。
ネットワークからノードを取り外すには、決まった手順があります。まずプロビジョナーのアプリケーションを使用してノードをブラックリストに追加し、それからキー更新手続を実行します。
キー更新手続では、ブラックリストに記載された以外のネットワーク上の全てのノードに、新しいネットワークキー、アプリケーションキー、関連データが発行されます。つまり、ネットワークとアプリケーションのセキュリティを確保するための一連のセキュリティキーが全て置き換えられることになります。
こうして、ネットワークから抹消されたノードは旧NetKeyと旧AppKeyしか持たず、以降はネットワークのメンバーから除外されるとともにネットワークに対する脅威となることはありません。
プライバシー
NetKeyから生成されるプライバシーキーは、送信元アドレスなどのネットワークPDUのヘッダー値を難読化するために使用されます。難読化によって、たまたま傍受されることがあっても、デバイスやそれを使用する人たちの追跡には使用できないことが保証できます。また、トラフィック分析に基づいた攻撃も難しくします。
リプレイ攻撃
攻撃者が傍受したメッセージを後で再送信することによって元の送信者になりすまし、攻撃者には許可されていない操作をメッセージの受信者に実行させることを、ネットワークセキュリティでは「リプレイ攻撃」といいます。よく例として挙げられるのは車のキーレスエントリーシステムで、攻撃者が車の所有者と車との間の認証シーケンスを傍受し、後にそのメッセージを再送信して車の所有者になりすまし、車の鍵を開けて盗むというものです。
Bluetooth meshネットワークでは、シーケンスナンバー(SEQ)とIVインデックスというネットワークPDUの2つの項目を使用してリプレイ攻撃からネットワークを守ります。SEQは、エレメントがメッセージをパブリッシュするたびに値が増えていきます。エレメントからのメッセージのSEQ値が、最後に届いた有効なメッセージと同じ値以下であった場合には、リプレイ攻撃に関連している可能性が高いということになり、そのメッセージは破棄されます。同様にIVインデックスも、エレメントから最後に届いた有効なメッセージのIVインデックスの値以上である必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.