2 ポイント 投稿者 GN⁺ 2025-01-28 | 1件のコメント | WhatsAppで共有
  • OpenHaystackは、AppleのFind Myネットワークを利用して個人用Bluetooth機器を追跡するためのフレームワークで、MacとBBC micro:bitまたはBluetooth対応機器で独自の追跡タグを作成できる
  • 近くのiPhoneがOpenHaystackアクセサリのBLEアドバタイズを検出すると、位置情報を暗号化してAppleのサーバーにアップロードし、OpenHaystackはその位置レポートを取得して復号し、地図上に表示する
  • このプロジェクトは、TU Darmstadt Secure Mobile Networking LabによるFind Myネットワークのリバースエンジニアリングとセキュリティ分析の成果であり、位置データへのアクセス脆弱性CVE-2020-9986はAppleが修正済み
  • macOSアプリは位置レポートを受け取るためにApple Mailプラグインを使用し、インストール時にはGatekeeperを一時的に無効化し、利用中はMailを開いたままにしておく必要がある
  • 実験的ソフトウェアのためコードはテスト不足で未完成な部分があり、提供されるファームウェアベースのアクセサリは固定公開鍵をブロードキャストするため、近くの別の機器からも追跡される可能性がある

OpenHaystackができること

  • OpenHaystackは、AppleのFind Myネットワークを通じて個人のBluetooth機器を追跡するためのフレームワーク
  • ユーザーは独自の追跡タグを作成して鍵束やバックパックのような物に取り付けたり、ノートPCのようなBluetooth対応機器に統合したりできる
  • 必要なのはMacとBBC micro:bitまたはその他のBluetooth対応機器
  • セルラー接続がなくても、近くのiPhoneがアクセサリを検出し、ネットワーク接続時に位置情報をAppleサーバーへアップロードする

研究背景とセキュリティ分析

  • OpenHaystackは、AppleのFind My networkまたはoffline findingに対するリバースエンジニアリングとセキュリティ分析の結果から生まれた
  • TU DarmstadtのSecure Mobile Networking Labは、2019年6月のAppleによるoffline finding発表後に分析を開始した
  • このシステムは次の要素を組み合わせている
    • Bluetoothアドバタイズ

      • 公開鍵暗号
      • 暗号化された位置レポートの中央データベース
      • 分析の過程で2つの脆弱性が発見された
      • 最も深刻な脆弱性では、悪意あるアプリケーションが位置データへアクセスできた
      • この脆弱性はAppleが修正し、CVE-2020-9986として識別されている
      • 関連するセキュリティおよびプライバシー分析は、PoPETs 2021の論文Who Can Find My Devices? Security and Privacy of Apple's Crowd-Sourced Bluetooth Location Tracking Systemで扱われている

実験的ソフトウェアという制約

  • OpenHaystackは実験的ソフトウェアであり、コードは十分にテストされておらず未完成
  • 提供されるファームウェアを使用するOpenHaystackアクセサリは固定公開鍵をブロードキャストする
    • このため、近くの他の機器からも追跡される可能性がある
    • この挙動は今後のリリースで変更される可能性がある
  • OpenHaystackはApple Inc.と提携しておらず、Appleの保証を受けたプロジェクトでもない

構成要素と利用の流れ

  • OpenHaystackは2つの構成要素から成る
    • macOSアプリケーション: 個人のBluetooth機器の最後に報告された位置を表示する
    • ファームウェアイメージ: Bluetooth機器がiPhoneに検出されるビーコンをブロードキャストするようにする
  • システム要件はmacOS 11 Big Sur
  • 新しいアクセサリを作成する際、ユーザーは名前を入力し、必要に応じてアイコンと色を選ぶ
    • アプリは位置レポートの暗号化と復号に使う新しい鍵ペアを生成する
    • 秘密鍵はMacのキーチェーンに保存される
  • 機器のデプロイは、USBで対応機器をMacに接続し、アプリのDeployボタンを使う方式
    • 統合デプロイの代わりに、アドバタイズに使う公開鍵をコピーして手動でデプロイすることもできる
  • 地図上に最初の位置レポートが表示されるまで最大30分かかることがある
    • 地図にはすべての項目の最新位置が表示される
    • 各項目をクリックすると、最後の更新受信時刻を確認できる
    • reloadボタンで位置レポートを更新できる

Mailプラグインとインストール方法

  • OpenHaystackアプリは、Appleサーバーから位置レポートを取得するためにApple Mail用カスタムプラグインを必要とする
  • このプラグインは、非公開APIの利用に必要なApple Mailの権限を継承する形で動作する
  • インストール時にはGatekeeperを一時的に無効化する必要がある
    • sudo spctl --master-disableでGatekeeperを無効化
    • MailのPreferences → General → Manage Plug-InsでOpenHaystackMail.mailbundleを有効化
    • その後、sudo spctl --master-enableでGatekeeperを再有効化
  • このプラグインは、メールなど他の個人データにはアクセスしないとされている
  • 位置レポートのダウンロード中は、OpenHaystackアプリがプラグインと通信するため、Mailを開いたままにしておく必要がある

Find Myネットワークの動作方式

  • OpenHaystackはAppleのoffline findingシステムを4段階で説明している
  • ペアリング

    • Find Myネットワークを利用するため、P-224楕円曲線ベースの公開鍵・秘密鍵ペアを生成する
    • 秘密鍵はMacのキーチェーンに安全に保存される
    • 公開鍵はmicro:bitのようなアクセサリにデプロイされる
  • 紛失状態

    • アクセサリは公開鍵をBluetooth Low Energyアドバタイズとしてブロードキャストする
    • 近くのiPhoneはOpenHaystackアクセサリを実際のApple機器や認証済みアクセサリと区別できない
  • 発見

    • 近くのiPhoneがBLEアドバタイズを受信すると、GPSで現在位置を取得する
    • iPhoneはアドバタイズに含まれる公開鍵で位置情報を暗号化し、Appleサーバーに暗号化レポートをアップロードする
    • iOS 13以降のiPhoneはデフォルトでこの動作を行う
    • この段階にはOpenHaystackは関与しない
  • 検索

    • Appleは、どの暗号化された位置情報がどのAppleアカウントや機器に属するかを知らない
    • 対応する公開鍵を知っていれば、Appleユーザーは任意の位置レポートを取得できる
    • レポートはエンドツーエンド暗号化されているため、秘密鍵がなければ復号できない
    • OpenHaystackはOpenHaystackアクセサリ用のレポートをAppleから取得し、Macのキーチェーンに保存された秘密鍵で復号して、地図に最新位置を表示する
    • Appleは認証済みのAppleユーザーだけが位置レポートを取得できるようにして、データベースへの無制限アクセスを制限している

対応機器と拡張

  • 原理上、Bluetooth機器はApple Find Myネットワークで追跡可能なOpenHaystackアクセサリにできる
  • 現在、手軽なファームウェア配布方式は一部の組み込み機器のみをサポートしている
  • Linux機器は一般的なHCIスクリプトでサポートされる
  • 対応例は次の通り
    • Nordic nRF51: BBC micro:bit v1でテスト済み、アプリからのデプロイに対応、現在はnRF51822のみ対応
    • Espressif ESP32: ESP32-WROOM、ESP32-WROVERでテスト済み、アプリからのデプロイに対応、デプロイに最大3分かかることがあり、Python 3が必要
    • Linux HCI: Raspberry Pi 4とRaspbianでテスト済み、すべてのLinuxマシンをサポートするはず
  • Bluetooth Low Energyをサポートする他の機器にも移植可能で、ファームウェアのソースコードと論文の仕様に基づいて作業できる

OpenHaystack Mobile

  • OpenHaystack Mobileは、OpenHaystack macOSアプリケーションをスマートフォン向けに完全に再実装したアプリ
  • アクセサリの作成と追跡機能を提供し、特に新規ユーザーの使いやすさ向上を目指している
  • macOSアプリと異なり、スマートフォンでは位置レポートを直接取得できない
    • Find Myネットワークにアクセスするには、Macハードウェア上でホストされるプロキシサーバーが必要
    • プロキシサーバーには、ネットワーク経由で複数ユーザーが同時にアクセスできる
  • プロキシサーバーに接続するには、openhaystack-mobile/lib/findMy/reports_fetcher.dartで正しいURLを設定する必要がある
  • OpenHaystack MobileはFlutter frameworkで作られており、AndroidとiOSで動作する

ライセンスと参考資料

1件のコメント

 
GN⁺ 2025-01-28
Hacker Newsの意見
  • Appleユーザーではない人にも良い選択肢があるといいのだが。聞くところでは、Google版は案の定かなりひどいらしい
    自分のタグを検索できる頻度に制限があり、複数の携帯電話に検知されるまで位置を表示せず、カバー範囲も悪い
    あるテストではSamsungネットワークのほうが良いという結果が出ていたが、SamsungのスマートフォンはGoogleネットワーク内のすべてのAndroidスマートフォンの一部のはずなので、話が合わない。理論上は良さそうに見えても、Appleがやり方を示してから数年たっても実装がひどい、いかにもGoogle製品らしい姿だ
    https://security.googleblog.com/2024/04/find-my-device-netwo...
    https://9to5google.com/2024/08/01/find-my-device-stress-test...
    https://9to5google.com/2024/08/03/google-android-find-my-dev...
    https://www.androidcentral.com/accessories/testing-new-googl...

    • Googleの「デバイスを探す」ネットワーク担当者がプライバシーを優先するあまり、製品の唯一の機能を台無しにしたのはあきれるほどだ
      この選択によってGoogleは、実際の性能がどれほど悪いか検証される前に、“革新的な”プライバシー改善を扱う記事をいくつか得たが、Appleとこの分野で競争する機会を失い、Android/Pixelエコシステムと市場シェアにも悪影響を与えた。ここまでの無能さは作り話にもできない
    • Googleがネットワークをここまで駄目にしたのは信じがたい。本来ならAndroidシェアのおかげでAppleのネットワークを圧倒しているはずだ
      デジタルノマドとしては、Appleネットワークは特別便利というわけではない。Appleのスマートフォンが多い裕福な都市ではなく、Androidシェアが90%近い「その他の世界」を移動しているからだ。それなのに、そこでもAppleのほうがGoogleよりうまくやっているように見える
    • 鍵に1つ付けているが、一度使おうとしたとき、何度更新しても半径0.25マイルの円しか表示されなかった
      実際にはすぐ隣のバッグの中にあった
    • Samsungの解決策は部分集合ではなく、別個のより優れた方式
      とても辺鄙な国の空港や町でもタグ2個をしっかり見つけられるので安心できる。この動画も、iPhoneユーザーであってもSamsung SmartTagが最高だと結論づけている
      https://m.youtube.com/watch?v=9wefUV_bR0Y
    • Googleも素直にFind Myに乗るべきだと思う
  • コードを見ると、Find Myネットワークのデバイスが収集した位置を取得するために、個人のApple Mail権限を使っているようだ
    https://github.com/seemoo-lab/openhaystack/blob/8d214aa5eb68...
    Apple開発者アカウントを作れば、これも可能なのか気になる

    • Apple Mailとやり取りしなくてよいバージョンもある
      必要なのはAppleアカウントだけで、Appleハードウェア上でコードを実行する必要もない
      https://github.com/biemster/FindMy
  • 以前見た資料を探したい。Appleは「あなたを追跡しうるタグ」をユーザーに知らせるが、誰かが鍵導出関数(KDF) でMACアドレスや秘密鍵のようなものをローテーションさせる実装を作っていて、その派生値が追跡できるほど予測可能だった、と記憶している
    住んでいる場所では軽微な盗難被害が本当に深刻で、割られた窓を直したり、侵入の痕跡を片付けたりするのにかなり時間を取られる。誰かと直接対面するつもりはまったくないが、いつか私立探偵や法執行機関に渡せる移動経路を作りたい

    • GPSセルラー追跡機を買って、非常に安い、あるいは無料ですらあるIoT SIMを使えばいい
      あるいはペットボトルの水をひと箱持って近くの薬物依存者の集まる場所へ行き、もう物を盗まないでくれと頼むこともできる
    • 知る限り、AirTagもどうせ秘密鍵をローテーションしているので、それが問題解決に役立つかは分からない
      ただ、ローテーション周期が遅いかもしれないし、正確なアルゴリズムはよく知らない
    • 自分の投稿一覧に、OpenHaystackとその通知について書いた記事へのリンクがある。要するに、しばらく車内に入れていたOpenHaystackベースの追跡機について、iOSは一度も警告を出さなかった
      ただし数年前の話なので、今は変わっているかもしれない
  • 独自の不安定な手順で位置情報を取得する代わりに、Find Myアプリと統合する方法があるとよいのだが。
    中国製の互換品は独自ブランドを付けてもできているので、どうにかすれば可能なのは間違いなさそうだ

    • ここでそれはAppleの囲い込みのように見える。以前、公式パートナー向けのApple仕様を読んだとき、ペアリング過程でデバイスがAppleからその開発者に発行された証明書/キーで何かに署名していた。契約、つまり金銭が絡んだ後のキーであり、実際のブロードキャストに使う鍵ペアとは別物だという点が重要だ。
      その署名はAppleが検証するため、そのApple IDアカウントとアプリに追加できる。一方、紛失モードでデバイスがブロードキャストするキーはランダムで完全に不透明なので、AppleにもそれをID、デバイス、開発者と結び付ける方法がない。このプロジェクトが動く理由も、結局それらのキーがAppleサーバーに入ってくるからだ。
      互換品はペアリング過程用の正規キーを盗用しているように見える。Appleが本気でそのキーを見つけ出せば、すべてのアカウントからすべてのデバイスを削除できそうだが、デバイス自体は引き続きブロードキャストし、上記のような雑な方法で位置にアクセスできるはずだ。本来のキー所有者は、後でAppleがデータベース内の「このキーで署名されてApple IDに追加されたデバイス数」を数えたら、デバイスごとのロイヤルティとして巨額の請求書を受け取ることになるのだろうかとも思う
    • 「中国製の互換品」は公式対応製品で、方法はここにある: https://developer.apple.com/find-my/
    • 中国製の互換品はApple Find Myプログラムを使っているので、アプリに表示できる公式タグだ。
      OpenHaystackは別のキーを使うハックなので、暗号学的な理由からアプリには表示できない
    • 互換品にも制限があるのでは? たとえば方向を探すのような機能はなかったと記憶しているが、別のところで読んだ話と混同しているのかもしれない
  • 本当に素晴らしい。Apple AirTagは好きだが、厚すぎるし形も微妙だ。
    財布に入れられるクレジットカード型AirTagがあるといいし、猫の首輪に付けられるもっと小さいAirTagもあるといい

    • TemuやAliexpressで5ドル前後のサードパーティ製Find My対応タグが買える。通常のAirTagとサイズは近いが、ケースを捨てたいときは分解しやすく、しかも安い。
      持っていたものを1つケースから取り出して何をもっと薄くできるか見てみたところ、厚みの大半はCR2032バッテリーホルダー、スピーカー、ボタンによるものだった。スピーカーとボタンは初期設定後ならなくせそうだし、バッテリーホルダーも外したうえで薄いカード型フォームファクタが欲しいなら、上側ではなく側面から給電することもできる
    • 財布に入る超薄型のAirTag互換カードはすでにある
    • 体重8.5ポンドのうちの三毛猫が、生後3か月のときから首輪に付けているAirTagの写真。
      https://imgur.com/a/r9EGSOc
      写真はたった今Meta Storiesグラスで撮った
    • 犬にこれを使っているが、とてもミニマルだ。
      https://www.amazon.com/gp/product/B09DCVFNFF/
      ただし、AirTagがホルダーの中でねじれて外れないよう、透明テープで巻いておく必要があった
  • 詳しく調べたわけではないが、これを使って小さな任意データペイロードを載せて送れるのか気になる

    • 可能だ。最近、AirTagネットワークを使ってハードウェアキーロガーのデータを送信したプロジェクトがあった。
      コンピュータが完全に隔離されていても、入力している人のiPhone経由でデータを持ち出せる
    • 郵便受けの状態追跡にこれを使った例を見たことがある。郵便受け内の接点センサーが、トリガー回数に応じてブロードキャストキーをローテーションする。
      キーが変わって新しい別のデバイスが見えるようになったら郵便物が入ったという意味で、かなり巧妙だ
  • 単一デバイスがAppleサーバーに上げられる送信量の上限が気になる。AppleデバイスにセルラーやWi‑Fiがなければ、その位置 ping の記録はデバイス上にどれくらい残るのだろうか。
    また、ここにサービス拒否攻撃の可能性があるのかも気になる。攻撃者が100万台以上のBluetoothデバイスを偽装し、被害者がたまたま通りかかると、その場所に膨大な数のデバイスがあるせいでスマホが固まり、Appleサーバーへ延々とアップロードし続けるといった形だ

  • ところで、iPhoneやMacのような別のAppleデバイスなしでも、これで実際のAirTagの設定はできるのだろうか?

  • 以前の投稿: https://news.ycombinator.com/item?id=26342504

  • これらを実際にApple Find Myアプリとペアリングして、アプリ内で見つけられるのか?