OpenHayStackは、Appleの大規模なFind My Networkを介して個人のBluetoothデバイスを追跡するためのフレームワークです。それを使用して、物理オブジェクト(キーリング、バックパックなど)に追加できる独自の追跡タグを作成したり、ノートブックなどの他のBluetooth対応デバイスに統合したりできます。

OpenHayStackは、AppleのFind My Networkによって追跡される独自のアクセサリーを作成できるアプリケーションです。必要なのは、MacとBBC Micro:BITまたはその他のBluetooth対応デバイスだけです。アプリを使用することにより、携帯電話のカバレッジなしで、地球上のどこでもアクセサリーを追跡できます。近くのiPhoneでは、アクセサリーを発見し、ネットワーク接続があるときにAppleのサーバーに場所をアップロードします。
OpenHayStackは、AppleのFind My Network (またはOffline Finding )のリバースエンジニアリングおよびセキュリティ分析作業の結果です。 Tu DarmstadtのSecure Mobile Networking Labでは、2019年6月の最初の発表後、オフラインの発見の分析を開始しました。この作業を通じてオフラインであっても、AppleデバイスがiPhonesデバイスでどのように発見されるかを特定しました。システム全体は、Bluetooth広告、パブリックキー暗号化、暗号化されたロケーションレポートの中央データベースの巧妙な組み合わせです。オフラインの発見の閉じた部分の仕様を開示し、包括的なセキュリティとプライバシー分析を実施しました。 2つの異なる脆弱性が見つかりました。一方、悪意のあるアプリケーションが位置データにアクセスできるようにした最も深刻なものは、Appleによって修正されています(CVE-2020-9986)。セキュリティ分析の詳細については、論文をお読みください。リリース以来、かなりのプレスとメディアの報道を受けました。
OpenHayStackは実験ソフトウェアです。コードはテストされておらず、不完全です。たとえば、ファームウェアを使用したOpenHayStackアクセサリーは、固定公開キーをブロードキャストするため、他のデバイスが近接して追跡できます(これは将来のリリースで変更される可能性があります)。 OpenHayStackは、Apple Inc.と提携していない、または承認されていません。
OpenHayStackは2つのコンポーネントで構成されています。まず、個人のBluetoothデバイスの最後の報告場所を表示できるMacOSアプリケーションを提供します。第二に、ファームウェアイメージにより、Bluetoothデバイスはビーコンをブロードキャストし、iPhoneで発見できるようにします。
OpenHayStackにはMACOS 11(Big Sur)が必要です。
OpenHayStackアプリケーションには、Appleメール用のカスタムプラグインが必要です。プライベートAPIを介してAppleのサーバーからロケーションレポートをダウンロードするために使用されます(技術的説明:プラグインは、このAPIを使用するために必要なApple Mailの資格を継承します)。したがって、インストール手順はわずかに異なり、ゲートキーパーを一時的に無効にする必要があります。当社のプラグインは、電子メールなどの他のプライベートデータにアクセスしません(ソースコードを参照)。
~/Library/Mail/Bundleにメールプラグインをインストールするように求められます。sudo spctl --master-disable 、これによりゲートキーパーが無効になり、Appleメールプラグインが実行されます。sudo defaults write "/Library/Preferences/com.apple.mail" EnableBundles 1sudo spctl --master-enableを入力します。新しいアクセサリーを追加します。新しいアクセサリを作成するには、名前を入力し、オプションで適切なアイコンと色を選択するだけです。次に、アプリは、ロケーションレポートを暗号化および復号化するために使用される新しいキーペアを生成します。秘密鍵は、Macのキーチェーンに保存されます。
デバイスに展開します。 USB経由でサポートされているデバイスをMACに接続し、アクセサリの名前の横にある展開ボタンを押して、対応するものを選択します。 OpenHayStackの統合展開を使用する代わりに、広告に使用される公開キー(アクセサリを右クリック)をコピーして、手動で展開することもできます。
デバイスの場所を表示します。右側のマップに最初のロケーションレポートが表示されるまで、最大30分かかることがあります。マップには、常にすべてのアイテムの最新の場所が表示されます。すべてのアイテムをクリックして、最後の更新が受信されたときに確認できます。リロードボタンをクリックすると、ロケーションレポートを更新できます。
Appleのオフライン発見システム(別名私のネットワークを見つける)について簡単に説明します。詳細については、Pets PaperとAppleのアクセサリー仕様を参照してください。概略図(論文から)を提供し、以下のOpenHayStackのさまざまな手順を統合する方法を説明します。

Appleが私のネットワークを見つけるために、楕円曲線(P-224)に官民キーペアを生成します。秘密鍵は、キーチェーンに安全に保存されているMacに残り、公開キーはアクセサリーに展開されます。
要するに、アクセサリーは公開鍵をBluetooth Low Energy(BLE)広告としてブロードキャストします(ファームウェアを参照)。近くのiPhoneは、アクセサリーを本物のAppleデバイスまたは認定アクセサリと区別することはできません。
近くのiPhoneがBLE広告を受け取ると、iPhoneはGPSを介して現在の場所を取得し、広告から公開キーを使用して暗号化し、暗号化されたレポートをAppleのサーバーにアップロードします。 iOS 13以下のすべてのiPhoneは、デフォルトでこれを行います。 OpenHayStackはこのステップに関与していません。
Appleは、どの暗号化された場所がどのAppleアカウントまたはデバイスに属しているかを知りません。したがって、すべてのAppleユーザーは、対応する公開キーを知っている限り、任意のロケーションレポートをダウンロードできます。これはセキュリティの問題ではありません。すべてのレポートはエンドツーエンドの暗号化されており、対応する秘密鍵(キーチェーンに保存されている)を知っていない限り、復号化することはできません。この機能を活用して、OpenHayStackアクセサリ用に作成されたAppleからレポートをダウンロードします。プライベートキーを使用して、ロケーションレポートを復号化し、最新のキーをマップ上に表示します。
Appleは、認証されたAppleユーザーにロケーションレポートをダウンロードするように要求することにより、データベースを任意のアクセスから保護します。必要な認証情報にアクセスするために、高度な特権で実行されるApple Mailプラグインを使用します。 OpenHayStackアプリは、レポートのダウンロード中にプラグインと通信します。これが、OpenHayStackの使用中にメールを開いたままにしておく必要がある理由です。
原則として、Bluetoothデバイスは、AppleのFind My Networkを介して追跡可能なOpenHayStackアクセサリに変えることができます。現在、少数の埋め込みデバイス用のOpenHayStackのファーミーの便利な展開方法を提供しています(以下の表を参照)。また、一般的なHCIスクリプトを介してLinuxデバイスもサポートしています。ファームウェアのソースコードとペーパーの仕様に基づいて、Bluetooth Low Energyをサポートする他のデバイスにOpenHayStackを自由に移植してください。あなたの結果を私たちと共有してください!
| プラットフォーム | でテストされています | アプリ経由で展開します | コメント |
|---|---|---|---|
| 北欧NRF51 | BBCマイクロ:ビットV1 | ✓✓ | 現時点では、NRF51822のみをサポートしています(問題#6を参照)。 |
| espressif esp32 | SP32-WROOM、ESP32-WROVER | ✓✓ | 展開には最大3分かかる場合があります。 python 3が必要です。 @fhesselに感謝します。 |
| Linux HCI | Raspberry Pi 4 W/ Raspbian | Linuxマシンをサポートする必要があります。 |

OpenHayStack Mobileは、スマートフォン用のOpenHayStack MacOSアプリケーションの完全な再実装です。このアプリは、アクセサリーを作成および追跡するのと同じ機能を提供し、特に新規ユーザーにとって使いやすさを向上させることを目的としています。 MACOSアプリケーションとは対照的に、ロケーションレポートをスマートフォンに直接フェッチすることはできないため、アプリにはMacハードウェアでホストされているプロキシサーバーが必要です。プロキシサーバーは、複数のユーザーが同時にネットワーク経由でアクセスできます。
プロキシサーバーに接続するには、正しいURLを設定します:openhaystack-mobile/lib/findmy/Reports_fetcher.dart


OpenHayStack Mobileは、クロスプラットフォームフラッターフレームワークで構築されており、現在AndroidおよびiOSで実行されています。アプリと使用法の詳細については、このリポジトリのOpenHayStack-Mobileフォルダーをご覧ください。
OpenHayStackは、GNU Affero General Public License v3.0に基づいてライセンスされています。