本番環境でのBluetoothビーコンの展開は、多くのBLEプロトコル解説が見落としている攻撃面をもたらします。本記事では、実用的な脅威—アドレススプーフィング、ADVパケット盗聴、リプレイ攻撃—を分析し、定量的なセキュリティ余裕度を持つエンジニアリング対策を提供します。対象読者は、小売・産業・資産追跡シナリオでビーコンを展開するRFエンジニアおよび組込みセキュリティ実務者です。

脅威モデル:攻撃者が実際に実行できること

BLEは暗号学的な要塞ではなく、低消費電力の利便性のために設計されています。現実的な脅威の状況を理解することが、あらゆる展開の出発点です:

攻撃種別必要機材難易度影響
MACアドレススプーフィングLink LayerUSBドングル($20)+hcitool偽の存在通知
ADVパケット盗聴Link LayerUbertooth / nRF Sniffer($50)低〜中位置追跡、資産ID漏洩
リプレイ攻撃Applicationキャプチャ+再送不正なゾーン侵入
MitM(接続)L2CAP2個のドングル+BT VS HCIコマンドデータ傍受
ジャミングPHYSDR($300以上)または改変ファームウェアビーコンのDoS

MACアドレススプーフィング:検出と緩和

BLEアドレスには4つのタイプがあります(Public、Random Static、Random Private Resolvable(RPA)、Random Private Non-Resolvable)。ほとんどの本番ビーコンはPublicまたはRandom Staticアドレスを使用します—いずれも容易にスプーフィング可能です。$20のUSBドングルを持つ攻撃者は、ビーコンのMACをクローンし、偽のADVパケットを注入できます:

# Attacker: spoofing a beacon's MAC

sudo hciconfig hci0 down

sudo hciconfig hci0 leadrand # or set static BD_ADDR

sudo hciconfig hci0 up

hcitool -i hci0 cmd 0x08 0x0008 # set ADV data

hcitool -i hci0 cmd 0x08 0x000a # enable ADV

検出戦略:RSSIフィンガープリンティングを相互参照します。同一のMACが3秒以内にゾーンAで-45 dBm、ゾーンBで-82 dBmとして現れた場合、それはスプーフィングです。サーバー側の実装:

MAX_SPEED_MS = 30  # m/s (human running)

MIN_RSSI_DELTA = 25 # dBm for physically distinct positions

def detect_spoofing(mac, rssi, gateway_id, timestamp):

prev = db.get_last_seen(mac)

if prev:

time_delta = timestamp - prev['ts']

rssi_delta = abs(rssi - prev['rssi'])

# Physical impossibilty: RSSI jump >25dBm in <2s

if time_delta < 2.0 and rssi_delta > MIN_RSSI_DELTA:

return "SPOOF_DETECTED"

return "OK"

ADVパケット盗聴:情報漏洩解析

ADVパケットは平文でブロードキャストされます。範囲内の任意のパッシブリスナーは以下をキャプチャします:

  • ビーコンのMACアドレス(デバイス識別情報)
  • ADVデータペイロード(カスタムメーカーデータを含む)
  • RSSI(暗黙的に、受信側で)

リスク定量化:nRF52840スニファは、40メートル以内のビーコンからのADVパケットを100%キャプチャします(屋外、0 dBm TX電力)。攻撃者は資産ID、ファームウェアバージョン、および—存在する場合—非暗号化の位置タグを抽出します。

対策1:ADVペイロードから識別子を除去する。 共有秘密を用いて毎日ローテーションする短命ID(EID)を使用します:

# Beacon: daily EID rotation

import hmac, hashlib, time

DAILY_KEY = hmac.new(SECRET, str(int(time.time())//86400).encode(), hashlib.sha256).digest()[:8]

# ADV manufacturer data = DAILY_KEY[:4] + rotating_counter[:4]

# Server resolves: lookup table of EID -> asset_id

対策2:ADVペイロードを最小化する。 ADVデータに資産のシリアル番号、ファームウェアバージョン、または人間可読な文字列を含めないでください。ローテーションするナンスを用いたコンパクトなバイナリ符号化を使用します。

リプレイ攻撃:不正なゾーン侵入の防止

近接ベースのアクセス制御(例:「ID Xのビーコンが1メートル以内にある場合にドアを解錠」)では、攻撃者は有効なADVパケットをキャプチャし、後でそれをリプレイします。時間制約付きのチャレンジレスポンスがない場合、システムはアクセスを許可してしまいます。

緩和策:署名付きチャレンジレスポンス。 パッシブなADVのみの検出ではなく、ゲートウェイが接続を開始し、署名付き応答を要求します:

方式セキュリティレベル消費電力(イベントあたりの追加μAh)遅延
ADVのみ(認証なし)なし(スプーフィング可能)00 ms
ADV+接続+署名付きキャラクタ読取り中(ECDSA P-256)~180 μAh~120 ms
暗号化ADV(LE Secure Connections OOB)~60 μAh(接続不要)~15 ms

Out-of-Band(OOB)ペアリングを用いたLE Secure Connectionsは、NFCまたは事前共有鍵を通じて共有秘密を配布します。ビーコンはローリングIVを用いてAES-CCMでADVを暗号化します。ゲートウェイは復号し、±500 ms以内のタイムスタンプを検証してリプレイを防止します。

暗号化広告:LE Secure Connectionsおよびその先

Bluetooth 5.4はEncrypted Advertising Data(EAD)を導入しました。ビーコンとゲートウェイは秘密鍵を共有します(セキュアペアリング後にGATT経由で配布)。ADVパケットはAES-128-CCMで暗号化されたペイロードを運びます。スニフされたとしても、鍵なしではペイロードを解読できません。

実装(nRF52、SoftDevice S140):

// Configure EAD in SoftDevice

ble_ead_config_t ead_config = {

.p_key = pre_shared_key_16byte,

.key_id = 1,

.nonce_mode = BLE_EAD_NONCE_INCREMENTING

};

sd_ble_ead_enable(&ead_config);

// ADV data now encrypted

ble_advdata_t advdata = { .p_ead_data = &encrypted_payload };

性能への影響:EADはADVパケットあたり約8バイトのオーバーヘッドを追加します。31バイトのADV上限では、実ペイロードに23バイトが残ります。ペイロードがこれを超える場合はメッセージの断片化を計画してください。

物理セキュリティ:改ざん検知

RF攻撃に加えて、物理的なビーコン改ざんは小売・倉庫展開における現実的な脅威です。対策:

  • 筐体侵入スイッチ:磁気リードスイッチがMCUワイプをトリガー(GPIO割込み → flash内のBLE鍵を消去)
  • UV消去エポキシ:PCBを封止;物理的除去によりダイがUVに曝露され、格納された鍵が破損する
  • アクティブハートビート:ビーコンは15分ごとに署名付き「生存」メッセージを送信;連続3回のハートビート欠落でアラートをトリガー

セキュリティ対消費電力:定量的なトレードオフ

セキュリティレベルADV間隔TX電力電池寿命(CR2477)スプーフィング可能?
なし(平文ADV)100 ms0 dBm14ヶ月はい
基本(EIDローテーション)500 ms0 dBm28ヶ月困難(鍵漏洩が必要)
中(ECDSA署名接続)1000 ms0 dBm18ヶ月いいえ(秘密鍵が必要)
高(EAD+セキュアペアリング)500 ms-8 dBm36ヶ月いいえ(AES-CCM暗号化)

最適な本番バランスは、500 msのADV間隔によるEIDローテーション+EAD暗号化です。これによりCR2477で28ヶ月以上の電池寿命と強力なセキュリティを両立できます。

展開チェックリスト

  • ✅ OTA経由でEID鍵を毎日ローテーション(または90日間の鍵ウィンドウを事前プロビジョニング)
  • ✅ 機密ペイロードにEAD(Bluetooth 5.4以上)を有効化
  • ✅ MACスプーフィング検出のためサーバー側でRSSI一貫性を検証
  • ✅ 15分間隔でローテーションするランダムMACアドレス(解決可能なプライベートアドレス)を使用
  • ✅ アクセス制御では:署名付きチャレンジレスポンス(ADVのみの存在ではなく)を要求
  • ✅ ビーコンを物理的に保護(改ざんスイッチ+UV消去エポキシ)

2026年において、Bluetooth Beacon展開のセキュリティは任意ではありません—それは設計要件です。上記の手法(EIDローテーション、EAD暗号化、RSSIフィンガープリンティング、署名付きチャレンジレスポンス)は、最も一般的な攻撃ベクトルに対する多層防御を提供します。当社のエンジニアリングチームは、セキュアなビーコンファームウェア実装および展開アーキテクチャのセキュリティレビューを支援できます。貴社の用途に関するBluetooth Beaconについての技術的な詳細検討についてぜひお問い合わせください。