
今回はXBee3で使用可能な3つのファームウェアの中で、Zigbeeファームウェアのみがサポートしているトラストセンター(Trust Center)という機能について解説します。トラストセンターは暗号化通信の際に使用するネットワークセキュリティ機能です。
トラストセンターは、Zigbee Alliance(現:Connectivity Standards Alliance / CSA)という企業連合の中での議論から生まれた概念です。2004年頃に、最初のZigbee仕様(Zigbee 2004)が登場しましたが、現在のような強固なトラストセンターの仕組みが確立されたのは、2006年〜2007年頃(Zigbee 2006 / Zigbee Pro仕様)です。


1. トラストセンター発想の原点
2004年頃、当時のZigbee Alliance参画していた企業連合であるMotorola、Philips、Honeywell、Texas Instrumentsといった企業の技術者は、「低消費電力で、かつ数千台規模のデバイスを安全に管理するにはどうすべきか?」という課題を検討しました。
従来からネットワークセキュリティの世界には、KDC(Key Distribution Center:鍵配布センター)という古典的な概念があります。既に、1980年代にMITのプロジェクトで開発された、ネットワーク認証プロトコルであるKerberos認証等の有名な認証技術が確立していました。Kerberos認証は共通鍵暗号を基盤としており、「信頼できる第三者」を必要とします。Zigbeeのトラストセンターは、この「信頼できる第三者が鍵を管理する」というIT業界の伝統的な手法を、リソースの乏しいIoTデバイス向けに最適化(軽量化)して移植したものと言えます。
2.トラストセンターの概要
Zigbeeプロトコルにおけるトラストセンターは、ネットワーク全体のセキュリティを司る司令塔であり守護神です。その設計思想は、計算リソースや電力が限られたIoTデバイス群(Zigbeeノード)に対して、中央集権的な信頼(Centralized Trust)をいかに効率的かつ堅牢に提供するかという点に集約されます。
(1)「ゲートキーパー(門番)」としての役割
トラストセンターの最大の設計思想は、ネットワークへの入場管理を一元化することです。新しいデバイスがネットワークに参加しようとした際、そのデバイスが信頼できるかどうかを最終的にデバイス認証するのはトラストセンターだけです。
認証に成功したモジュールに対して、通信を暗号化するためのネットワークキー(NWK Key)を安全に配布します。
(2) 鍵管理の階層化(Key Management)
Zigbeeのセキュリティは、以下の2つの鍵を使い分けることで、よりセキュアな暗号化通信を実現する設計になっています。
表1 リンクキー(KY)とネットワークキー(NK)の役割
| 鍵の種類 | 役割 |
| リンクキー(KY) | ・ネットワークキーを守る鍵 ・トラストセンターとデバイス間の1対1の通信用 |
| ネットワークキー(NK) | ・ネットワーク全体で共有する通信用の暗号化鍵 ・トラストセンターがNKを自動生成し、定期的に更新・配布する。 |
(設計思想のポイント)
もし、特定のモジュールが物理的に盗まれてネットワークキー(NK)が漏洩しても、トラストセンターが新しいネットワークキー(NK)を生成して配布(Key Rotation)すれば、ネットワーク全体の安全を迅速に回復できるように設計されています。
3.XBee3における2つのトラストセンター
環境に合わせて厳格さを調整できる柔軟性も、トラストセンターの重要な設計思想です。
XBee3 Zigbeeモジュールには、集中型トラストセンターと分散型トラストセンターの2つのトラストセンターをサポートしています。
(集中型トラストセンター)
セントラルセキュリティ(Centralized Security)という思想に基づき、絶対的なリーダー(トラストセンター)が全ての鍵を管理するという考え方に基づいています。
以下にXBee3のZigbeeファームウェアにおける、集中型トラストセンター(標準Zigbeeトラストセンター)の暗号化設定方法を解説します。コーディネータはトラストセンターとして機能し、鍵の配布とデバイス認証を担当します。
ここでは,リンクキーKY(AES Encryption Key)は,以下の16バイト(128ビット)の鍵を使用しました.
KY: 0x0123456789ABCDEF0123456789ABCDEF(16バイト=128ビット)
表2 集中型トラストセンターによる暗号化通信の設定
| パラメータ | コーディネータXBee | ルータXBee |
| CE(Device Role) | Form Network [1] | Join Network [0] |
| EE(Encryption Enable) | Enabled[1] | Enabled [1] |
| EO(Encryption Options) | 0x2 | 0x0 or 0x2 |
| KY(Link Key) | 0x0123456789ABCDEF0123456789ABCDEF | 0x0123456789ABCDEF0123456789ABCDEF |
| NK(Trust Center Network Key) | 0x0 | 0x0 |
上記の表の設定を完了したら、コーディネータXBee3の設定画面から、各ノードのEEパラメータの設定が全てEnable [1]であることを確認します。その後、コーディネータからDiscover Radio Modules in the same networkを選択し、ルータを探索します。検索の結果、以下の図のようにRadio Modulesにルータの登録ができれば、暗号化通信が正常に機能していると判断できます。

図1 コーディネータXBee3のパラメータ設定画面(集中型トラストセンター)
(分散型トラストセンター)
ディストリビューテッドセキュリティ(Distributed Security)という思想に基づき、リーダー不在でも最低限のセキュリティを維持します。トラストセンターが存在せず、ルータ同士が協力して鍵を共有するところが特徴です。分散型トラストセンターにはリンクキーKYを明示的に指定する場合と,KY=0の設定の2種類の設定が可能です。
以下に、KYを明示的に指定する場合のXBee3のパラメータ設定例を示します。
表3 分散型トラストセンターによる暗号化通信の設定(KYを明示的に指定する場合)
| パラメータ | コーディネータXBee | ルータXBee |
| CE(Device Role) | Form Network [1] | Join Network [0] |
| EE(Encryption Enable) | Enabled[1] | Enabled [1] |
| EO(Encryption Options) | 0x0 | 0x0 |
| KY(Link Key) | 0x0123456789ABCDEF0123456789ABCDEF | 0x0123456789ABCDEF0123456789ABCDEF |
| NK(Trust Center Network Key) | 0x0 | 0x0 |
以下に、KY=0の場合のXBee3のパラメータ設定例を示します。
表4 分散型トラストセンターによる暗号化通信の設定(KY=0の場合)
| パラメータ | コーディネータXBee | ルータXBee |
| CE(Device Role) | Form Network [1] | Join Network [0] |
| EE(Encryption Enable) | Enabled[1] | Enabled [1] |
| EO(Encryption Options) | 0x10 | 0x0 |
| KY(Link Key) | 0x0 | 0x0 |
| NK(Trust Center Network Key) | 0x0 | 0x0 |
KY=0の場合で、上記の設定祖することで、KYはデフォルトリンクキーが使われます。デフォルトリンクキーとは、Zigbee Alliance によって規定されており、ZigbeeAlliance09 キーと呼ばれます。このキーは、事前設定リンクキーが設定されていない場合(つまり、KY=0 の場合)、Zigbeeネットワークへの接続に使用されます。
【ZigbeeAlliance09 デフォルトリンクキー】:
5A 69 67 62 65 65 41 6C 6C 69 61 6E 63 65 30 39
これはZigbeeAlliance09のASCII表現(16 進数エンコード)です。
デフォルトリンクキーを使用する場合は、トラストセンターの EO ビット 4(EO=0x10)を設定して明示的に許可する必要があります。許可がなされない場合は、XBee3 はこのキーを使用して接続を試みるモジュールの接続を拒否します。
上記の表の設定を完了したら、集中型トレスとセンターの場合と同様に、コーディネータからDiscover Radio Modules in the same networkを選択し、ルータを探索します。検索の結果、Radio Modulesにルータの登録ができれば、暗号化通信が正常に機能していると判断できます。
以下に、分散型トラストセンターによる暗号化通信の設定(KY=0の場合)のコーディネータXBee3の設定画面を示します。

図2 コーディネータXBee3のパラメータ設定画面(分散型トラストセンタ:KY=0)
4.まとめ
XBee3で使用可能な3つのファームウェアの中で、Zigbeeファームウェアのみがサポートしているトラストセンター(Trust Center)という機能について解説しました。XBee3 Zigbeeモジュールには、集中型トラストセンターと分散型トラストセンターの2つのトラストセンターをサポートされています。それぞれのトラストセンターを用いた暗号化通信のための設定方法を具体的に示しました。