Bluetooth Low Energyのペアリングとボンディングについて(★★)

ペアリングとは、セントラルとペリフェラル間のデータ暗号化のための鍵の交換をすることです。その時に、正しい相手かを認証をするために、双方で番号を入れるなどチェックをします。

ボンディングとは、ペアリングで交換した鍵を保存することです。ボンディングをしておけば、次回に同じ相手と接続するときに、ペアリングの処理は行わないで、前回に使った鍵をそのまま使い、データを暗号化できます。

ペアリングはするが、ボンディグはしないということもできます。その場合は、セントラルとペリフェラルが接続のたびに6桁の数字を入れたりして、相互認証を行う必要があります。


ペアリングは、Bluetoothのバージョンが上がるたびに変更されるため、経緯も含めて説明します。ここでは、Bluetooth Low Energyの扱っているペアリングしか説明しません(Classic Bluetoothを含めて説明すると、同じような言葉で意味が違うものがいくつも出てきて、非常にややこしくなるためです)。

Bluetooth Lowのペアリング方法には、2つのペアリング方法(Pairing Method)があります。2つあるのは、Bluetooth 4.0の時に最初に定義したペアリング方法に脆弱性があるため、Bluetooth 4.2でより強度の強い方法が追加されたことによります。なお、どちらの方法もデータ暗号化は、AES-CCMPアルゴリズムを使って行います。

  • LE Legacy Pairing: Bluetooth 4.0の時に導入された方法。
  • LE Secure Connections:Bluetooth 4.2から導入されたセキュリティの強い方法で、鍵交換に公開鍵暗号方式が使われます。

それぞれに対して、アソシエーションモデル(Association Model)という認証接続方法が決められています。アソシエーションモデルとは、双方でボタンを押すとか、6桁の数字を入れるとか、などの認証のための手段のことです。


LE Legacy Pairing:Bluetooth4.0のペアリング方式(★★)

Bluetooth Low Energyをはじめて規格化された時に定義されたペアリング方法です。

LE Legacy Pairingには、3つのAssociation Modelがあります。

  • Just Works:双方で認証をしない方法です。無線区間のデータを盗聴していれば、簡単に暗号化鍵がわかってしまいます。そのため、セキュリティの強度は、ペアリングしないで、暗号化なしと変わりません。なお、下記のPasskey Entryの000000とケースと同じ処理です。
  • Passkey Entry:片方が6桁の数字を入力するか、表示するかで、認証をする方法です。もし、Passkeyを固定にしていると、Brute Force Attackで簡単に解読されてしまいます。それ以外にも解読する方法が見つかっており、安全なModelではありません。
  • Out of Band(OOB):NFC等の他の手段で鍵を交換するものです。現在のところ、脆弱性は見つかっておりません。

LE Legacy Pairingのシーケンスは下記のようになります。

  1. まず、お互いに持っているInput/Outputの方法(KeyboardやDisplay)を交換し、適したAssociation Modelを選択します。
  2. その後、決定されたAssociation Modelによってお互いを認証します。
    その時に入力された番号を使って、STK(Short Term Key)と呼ばれる一時鍵を生成します。
  3. そのSTKを使って、データ暗号化に使う鍵であるLTK(Long Term Key)を交換し、ペアリングが完了します。その後の通信はこのLTKを使ってデータを暗号化します。

次回に接続するときは、このLTKが双方で保存されているので、ペアリングの処理をせずに、データを暗号化することができます。
ここで問題なのは、データの暗号化鍵となるLTKを無線区間で送るため、セキュリティの強度が弱いことです。そのため、次にあるLE Secure Connectionsが追加されました。


LE Secure Connections:Bluetooth4.2で追加されたペアリング方式(★★)

Bluetooth 4.2から追加されたペアリング方式で、楕円曲線暗号デフィーヘルマン鍵交換(ECDH)を使った方式です。この方式では、LTKは無線区間で送ることはしないため、安全です。脆弱性も現在のところ見つかっておりません。

LE Secure Connectionsには、4つのAssociation Modelがあります。

  • Just Works:双方で認証をしない方法です。LE Secure ConnectionsのJust Worksは、公開鍵暗号方式で鍵交換されているため、盗聴されて、暗号鍵が解読されることはありません。しかし、Passkeyが000000とわかっているため、誰でも接続して相手のデータを盗むことは可能です。
  • Passkey Entry:片方が6桁の数字を入力するか、表示するかで、認証をする方法です。
  • Out of Band(OOB):NFC等の他の手段で鍵を交換するものです。
  • Numeric Comparison:毎回ランダムな数字を双方で表示し、それらが同じであればそれぞれでボタンをおすことで、認証をします。

LE Secure Connectionsのシーケンスは下記のようになります。

  1. まず、お互いに持っているInput/Outputの方法(KeyboardやDisplay)を交換し、適したAssociation Modelを選択します。
  2. お互いで楕円曲線暗号の公開鍵と秘密鍵を生成し、公開鍵を交換します。
  3. その後、決定されたAssociation Modelによってお互いを認証します。お互いの公開鍵を使って、LTKを生成する情報を交換し、ペアリングが完了します。その後の通信はこのLTKを使ってデータを暗号化します。

この方法は後から追加されたためオプションで、相手がこの方法をサポートしてないときは、セキュリティ強度の弱いLE Legacy Pairingを使用することになってしまいます。