BLEビーコンの長年のセキュリティ問題の解決策。 Eddystone-EID。 Eddystone GATTサービスとビーコンツール



昨年7月、 Eddystoneプロジェクトが開始されました。これは、 Bluetooth Low Energy(BLE)ビーコンのメッセージ形式を定義し、Android、iOS、ChromeブラウザーでネイティブにサポートされているGoogleのオープンで拡張可能な標準です。 ビーコンは、モバイルデバイスにとって理解可能な方法で、重要で興味深い場所またはオブジェクトをマークできます。 これを行うために、ビーコンは通常、 iBeaconEddystone-UID、またはEddystone-URLなどのオープンメッセージを一方的にブロードキャストします。 これらの問題は2013年以来存在しています。







Googleは3月14日木曜日にセキュリティブログで、標準Eddystoneのエフェメラル識別子( Ephemeral ID )をサポートする新しいフレームEddystone-EIDを発表しました。 Eddystone-TLMテレメトリフレームの暗号化されたバージョンと、ビーコンを構成するための新しい標準インターフェイスであるEddystone GATTサービスも提示されました。







この投稿では、ビーコンの安全性を大幅に向上させ、そのユースケースを拡大するために設計されたこれらの革新についてもう少し詳しく説明します。







技術的な詳細



オブザーバーの場合、Eddystone-EID対応ビーコンは、8バイトのAES暗号化識別子を擬似ランダムに変更し、開発者が1秒から9時間の範囲で平均期間を設定します。 識別子を生成するには、ビーコン自体のキー( Ephemeral Identity KeyまたはEIK )とタイマーが使用されます。 キーは、ビーコンの準備および構成中に生成され、その後、楕円曲線上のDiffie-Heellmanキー一致プロトコル( 楕円曲線Diffie – HellmanまたはECDH )を使用して、プロキシミティビーコンAPIなどの解決サービスに送信されます。 このプロトコルは非常に信頼性が高く、たとえば、ビーコンの準備および構成中に、保護されていない通信チャネルを使用して共有秘密キーを取得できます。 したがって、ビーコンのみが、キーおよび登録されているサービスにアクセスできます。

ビーコンの登録に関して、Google Proximity Beacon APIを使用すると、次の2つの方法でこれを行うことができます。







  1. 完全に安全なエンドツーエンドの方法で、ビーコンと公開鍵を交換することにより
  2. 共有EIKキーを直接転送します。これは最初のオプションよりも安全性がやや劣ります


ビーコンの登録時に、キーに加えて、許可サービスはビーコンタイマーの現在の値とローテーション期間のインジケーターを通知する必要もあります。 つまり ビーコンタイマーもサービスと同期されます。 Google Proximity Beacon APIは、2 Xのローテーション期間をサポートします(10 <= X <= 15)。この実装は、数日間の停電に対して耐性があります。 停止時間が長くなると、タイマーとローテーション期間の再同期に時間がかかります。







追加のセキュリティ対策



Eddystone-EIDは、さまざまな攻撃を防ぐための追加のセキュリティ対策も提供します。 たとえば、各ビーコンのローテーション期間は識別子ごとにわずかに異なるため、攻撃者は特定のビーコンを識別するためにローテーション期間を使用できません。 Eddystone-EIDは、近接レポート、デバイス認証、およびパケット暗号化もサポートしています。 Eddystone-TLMフレームの機能も新しいバージョンで拡張されました。現在、テレメトリデータは共通キーを使用して暗号化されています。 攻撃者は、バッテリーレベルの情報を使用してビーコンを特定することはできません。







Eddystone GATTサービスとビーコンツール



Eddystone-EIDおよび以前に利用可能だったEddystone-TLMの新しい暗号化バージョンに加えて、共通のビーコン構成プロトコルであるEddystone GATTサービスが導入されました。 このプロトコルをサポートするツールを使用して、Eddystoneビーコンを構成できます。







AndroidおよびiOS用のビーコンツールアプリも導入されました 。 これはGoogleビーコンプラットフォーム用の追加ツールであり、ビーコンを登録してデータをバインドできます。







使用シナリオと利点



正しく実装し、多数のアクセス制御チェックをサポートするプロキシミティビーコンAPIと組み合わせると、Eddystone-EIDには次のような利点があります。









クライアントデバイスで何が起こっていますか?



しかし、特別なものはありません! Eddystone-EIDをサポートするビーコンは、コードを変更することなく、ビーコンをスキャンしてメッセージを受信するGoogleビーコンプラットフォームコンポーネントであるNeighborhood Messages APIを使用するプロジェクトで使用できます。 クライアントデバイスがEddystone-EIDフレームをブロードキャストするビーコンを検出してサブスクライブすると、現在のEIDがアプリケーションAPIキーと共にGoogle Proximity Beacon APIに送信されます。 Google Proximity Beacon APIは、送信されたAPIキーに、ビーコンに関連付けられた添付ファイルを受信する権限があるかどうかを確認します。 そのような特権がある場合、アプリケーションは、Nearbyメッセージオブジェクトとして通常の方法で添付ファイルを受信します。 それ以外の場合、権限がない場合、Google Proximity Beacon APIは、ビーコンがまったく登録されていないかのように空の値を返します。







ビーコンメーカー向けのEddystone-UIDサポート



Googleは業界のプレーヤーと非常に積極的に協力しています。たとえば、過去1年間で、Eddystone形式をサポートするビーコンメーカーの数 5から25以上に増えました。









Googleは、ビーコンメーカーに加えて、さまざまなシナリオでEddystone-UIDの利点を実証するために、多数の革新的な企業と緊密に協力しています。 たとえば、次のとおりです。









おわりに



これはセキュリティへの大きな一歩であり、数年前から存在していた問題を解決することができました。 これにより、ユーザーが確実かつプライベートに情報を交換できることが重要である新しいシナリオでビーコンを使用できるだけでなく、ビーコン、ハードウェア、ソフトウェアに関するオープンなエコシステムの開発を促進し、既存の制限や欠点を排除します。










この記事では、BLEビーコンとはかない識別子のセキュリティについて詳しく読むことができます







Eddystone-EIDパッケージ仕様の技術的な詳細は、 githubにあります。







以前の記事で、 Googleビーコンプラットフォームについて詳しく説明しました。

Googleのビーコンプラットフォーム。 パート1-近接ビーコンAPI

Googleのビーコンプラットフォーム。 パート2-近隣のマッサージAPI








All Articles