秘話
技術 > デジタル方式 > Bluetooth

Bluetooth（ブルートゥース）は、2.4GHzを使用するデジタル機器用の近距離無線通信規格の1つである。様々なデバイスでの通信に使用されることを想定しており、機器の種類ごとに策定された多くのプロファイルが定義されている。音声通信の用途にはヘッドセット用のHSP (Headset Profile) やハンズフリー通話のためのHFP (Hands-Free Profile) が標準化されている。
Bluetoothは比較的新しい通信規格であるため認証や暗号化も配慮されており、これらの各アルゴリズムが正しくインプリメントされ適切に使用されていれば一般的な用途には十分なセキュリティが得られる。一番大きな問題点は機器の運用で、認証や暗号化の元になるパスキー（パスワード）としてデフォルト値や短い文字列（"0000"など）を使用していたり、常に近くの機器と接続可能な設定になっていたりすることが多い。このような場合、会話内容の盗聴や外部からの機器の不正な制御が容易にできる。また仕様の自由度が大きく、暗号鍵長やセキュリティモードを機器の製造者が決めることができる問題点もある。暗号鍵長が既定の最大値より短い場合やセキュリティモードが低い場合、盗聴の可能性は高くなる。
Bluetoothの規格は頻繁にバージョンアップされており、それに伴い認証方法や使われる暗号化アルゴリズムにもいくつかのバリエーションがある。セキュリティの強さを示すセキュリティモードとして1から4までが定義され、接続機器のBluetoothバージョンやサポートする機能に応じそのいずれかのモードで動作する。モード1から4の順にセキュリティのレベルが高くなる。モード1は認証や暗号化を全く行わない。最もレベルが高いモード4はBluetoothバージョン2.1で追加されたもので、認証の方式が変わるとともに全てのサービスで暗号化が行われる。ただし接続先の機器のバージョンや機能が低い場合は、相手に合わせたモードが選択される。Bluetoothの最新バージョンであれば必ず強力な暗号化が行れるわけではない。
Bluetoothの通信は、認証と暗号化で使われる秘密鍵の元となるリンクキーの生成（ペアリング）、リンクキーを用いたチャレンジレスポンス認証（英語版）、認証で使われたリンクキーと乱数値から生成された秘密鍵による通信データの暗号化/復号、の3つのフェーズからなる。
Bluetooth機器同士が通信を行う場合、最初に128ビット長のリンクキーを生成しなければならない。セキュリティモード2と3では16バイト以下の長さのユーザが入力したPIN (Personal Identification Number) と呼ばれるパスキー（パスワード）と内部で生成した乱数を使って相互にチャレンジレスポンス認証（英語版）を行い共通鍵であるリンクキーを生成する。ペアリングを行ったBluetooth機器どうしの認証と暗号化の鍵は全てリンクキーから派生するため、システム全体のセキュリティの強さはPIN入力に依存する。PIN入力が4ケタ程度の小さい桁数の場合、第三者がPIN入力値を予想することは比較的容易である。もうすこし桁数を増やした場合でも、ペアリングの際に機器間でやり取りされる乱数値と認証の計算結果を傍受し総当たり式で計算を行うことでPIN入力値を調べられる。6ケタまでのPIN値であれば1秒以下、8ケタの場合でも数分でPIN入力値を求めることができる。
セキュリティモード4ではSSP (Secure Simple Pairing) と呼ばれる方式でリンクキーを生成する。この方式ではリンクキー生成に楕円曲線ディフィー・ヘルマン (Elliptic Curve Diffie-Hellman) 鍵交換を用いる。長いPINコードの入力ではなく、鍵から計算された6ケタの数値の入力あるいは表示内容の確認だけでペアリングができる仕様になり、より使いやすくなっている。この数値自体は機器間で直接やり取りされるわけではなく、公開鍵方式の鍵交換の結果を元に計算される。ただし小型のヘッドセットのように文字入力も表示もできない機器ではユーザの確認なしにリンクキーの生成が行われ、セキュリティ強度は弱くなる。
いったんペアリングを行ったBluetooth機器は、通信可能な距離になると自動的に認証と通信を行えるようになる。これらの機器間で通信を行う際、最初にE1と呼ばれるアルゴリズムを用いたチャレンジレスポンス認証（英語版）でリンクキーが一致することを確認する。認証元の装置が生成した128ビットの乱数値をチャレンジ値として認証先に送り、認証先ではリンクキー、乱数値と自分自身の48ビットBluetoothアドレスからE1アルゴリズムで計算を行いレスポンスとして認証元に送り返す。送り返すのは計算結果となる128ビットのうち上位32ビットで、下位の96ビットは後で通信時の暗号鍵の生成のために使用される。認証先でも同じ計算を行い上位32ビットを比較することで認証を行う。
認証が正常終了し接続先がペアリング済みの機器であることが確認できると、実際に機器間の通信が行われる。通信で使われる暗号鍵は、認証時の計算結果の下96ビット、内部で生成した128ビットの乱数値、128ビットのリンクキー、内部クロックから計算したスロット番号の4つのパラメータから計算する。暗号鍵の長さは8ビットから128ビットまでの可変長で、使用される鍵長はBluetooth機器の製造者が定義できる仕様になっているため、暗号強度は製造者ごとに異なる。
暗号化にはE0と呼ばれるアルゴリズムを用いたストリーム暗号が使われる。E0は25、31、33、39ビット長（合計128ビット）の4つのLFSR（線形帰還シフトレジスタ）と非線形の組み合わせロジックとを用いたもので、生成された疑似乱数ビット列（鍵ストリーム）と信号のビット列とは排他的論理和 (XOR) で結合される。
ヘッドセットプロファイルでは、音声信号が適応デルタ変調の一種であるCVSD (Continuously Variable Slope Delta modulation) でデジタル化され、前記のE0アルゴリズムを用いて暗号化される。また、制御用の信号はシリアルポートプロファイルにより音声信号とは独立して送受信される。機器の制御用のコマンドとして携帯電話やモデムの制御などの用途でよく使われるATコマンドを用いる。ATコマンド自体は非常に多機能で強力なため、不正に利用されるとBluetooth機能を持つ携帯電話などを外部から制御できてしまう問題が知られている。
NSAはBluetooth機器の使用について以下の勧告を行っている。また利用は機密扱いでない用途のみとしている。
Bluetooth機能は必要な時のみ有効にする。
盗聴の危険性を減らすため、低出力のクラス2（操作範囲10メートル以内）あるいはクラス3（操作範囲1メートル以内）のBluetooth機器を使用する。
中間者攻撃防止のため、Bluetooth接続中はできるだけ機器間を近づけて使用する。
必要な場合のみBluetooth機器を他の機器から見えるように（発見できるように）する。
必要な場合のみBluetooth機器を他の機器から最低限必要な時間だけ接続可能にする。
Bluetooth機器のペアリングは安全な場所で行い、十分に長くランダムなパスキーを使用する。
Bluetooth機器は安全に保管・管理し、紛失したり盗まれたりした機器はペアリングのリストから削除する。
ファームウェアが古いBluetooth機器を使用しない。ファイアウォールや最新のアンチウイルスソフトウェアを使用する。