オフライン検索ネットワーク上でのデータ送信

2026/01/15 5:00

オフライン検索ネットワーク上でのデータ送信

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

概要:
Apple の Find My ネットワークは、Apple 装置が Bluetooth Low Energy(BLE)または Ultra‑Wideband(UWB)を介してブロードキャストするロールリング公開鍵にペイロードを乗せることで、潜伏型低帯域データチャネルへと変換できます。システムは各ブロードキャストをログし、ユーザーは近隣装置の暗号化レポートをアップロードします。リクエストごとに最大 256 個の鍵を照会することで、研究者は 28 バイト長のプライベートキー領域を復元でき、Reed–Solomon エラー訂正で各広告に 8〜16 ビットの情報を埋め込むことが可能です。

このプロトコルは一方向のみです:ローカル BLE/UWB 接続を必要とするコマンド(音声再生やデバイス消去など)は Find My ネットワーク経由で送信できません(Key Point 4)。複数の伝送間で同期を取るために「メールボックス」メッセージが使用されます—特殊な鍵ペアがメッセージ開始を示すので、クライアントは事前知識なしに取得するデータを検出できます(Key Point 8)。

Apple の Finders は1日あたり約 48 kB のデータをアップロードし、期待されるダウンロードスループットは約 60 bits/s です。Google の Find Hub ネットワークも位置情報をクラウドソースしますが、より厳格な制限があります:登録済み EID のみ保存され、クエリはレートリミットされ、ステータスバイトは利用できません(Key Points 9–10)。これらの制御にもかかわらず、同じ BLE データ‑over‑key 技術は多くのデバイスを登録し、Google の GRPC サービス(DeleteBleDevice、ListEidsForBleDevices)を自動化して削除/リストアップすることで機能します(Key Point 10)。

この方法は低エネルギー消費、小規模コスト、高いステルス性を提供し、ESP32、Linux、nRF52、TI などのプラットフォーム間で潜伏データ転送に適しています。また、キーが高速回転するため Apple のアンチ・ストーカー警告をトリガーしません(Key Point 12)。

本文

プロジェクト概要 – Hudson H. & Andrew G.


目標

  • Find My ネットワークは、AirTag、iPhone、AirPodsなどの10億台規模のデバイスを対象に、Bluetoothと超広帯域(UWB)を使って紛失したデバイスを位置特定し、Apple のサーバーへ報告するシステムです。
  • Google が運営する別々の Find Hub ネットワークも同様に、Android デバイス向けにクラウドソースデータを利用しています。

調査課題

  1. 紛失したデバイスが通信できない場合、位置情報はどのように報告されるか?
  2. 情報を紛失デバイスへ送信することは可能か?
  3. Apple と Google はそれぞれネットワーク(ストーキングアラート・ユーザー個人情報)をどの程度厳格に管理しているか?

究極的な疑問

  • 任意の Bluetooth デバイスがこれらのネットワークを無料で位置特定に利用できるか?
  • 安全な通信チャネルを確立することは可能か?

抽象(Abstract)

本プロジェクトでは、オフライン検索ネットワーク上で任意データを送受信する方法を示します。
カスタムプロトコルにより、Apple の Find My と Google の Find Hub それぞれの違いを明らかにしつつ、サードパーティ製デバイスが両方に乗っ取り可能な堅牢で移植性・安全性の高い一方向通信チャネルを構築します。


Find My プロトコル

フェーズ主なポイント
ペアリングECC(楕円曲線暗号)により公開鍵/秘密鍵/対称鍵が生成されます。デバイスは対称鍵と公開鍵のみを保持し、iCloud キーチェーンには秘密鍵が保管されます。
紛失デバイスが紛失した際、BLE を介して 28 バイトのロールリング公開鍵(24 時間ごとに更新)をブロードキャストします。鍵の一部は MAC アドレスにエンコードされており、ランダム/静的/NRPA など任意のビーコンタイプで機能します。ステータスバイトはユーザーが自由に設定できます。
検索Apple デバイス(“Finders”)は有効なビーコンを検出し、自身の位置情報を暗号化したパケットを作成して公開鍵とともに Apple にアップロードします。Apple はこれらの報告を Find My アプリで集約します。
取得ユーザーは時間窓内の予測ロールリングキーを算出し、SHA256 ハッシュを用いて Apple のサーバ(キーバリューストア)へクエリします。1 回のリクエストで最大 256 個の鍵を検索でき、各鍵に対して最大 20 件の報告が返されます。報告は 7 日間保存されます。

結論

  • 双方向通信 – ローカル BLE/UWB 接続のみでコマンド(例:音声再生)を送ることができます。ネットワーク経由の遠隔双方向制御は不可能です。
  • ユーザー個人情報 – 報告データはエンドツーエンド暗号化され、秘密鍵でのみ復号可能です。Finders は Apple の署名を用いて認証しますが、Apple ID を明らかにしません。
  • 認証の欠如 – 形式に合致する任意の BLE ビーコンは受理されるため、紛失デバイスが正当な Apple デバイスであることを確認できません。
  • ストーキングアラート – 同一公開鍵が 24 時間継続(10 分間で 840 m)しているとトリガされます。ステータスバイトに Apple/Find‑My と示す値が設定されていたり、鍵が頻繁に変わる場合はアラートが失敗します。

データ転送

ツール機能制限
OpenHaystackAirTag のブロードキャストをエミュレートし、静的公開鍵の送信を確認。Ubertooth が必要で、報告取得は ESP32 でのみ可能。
Send My (Positive Security)Find My ネットワーク経由で POC データを送信。広告あたり 1 ビット、ESP32 限定、MacBook 必須、ペイロードは暗号化されずステータスバイトが露出。

プロトコルアップグレード

  • ペイロードを公開鍵ではなく秘密鍵に格納し、各チャンクを新しい ECC 鍵対で構成。
  • スキーマ例:
    • 4 バイト – チャンクインデックス
    • 2 バイト – メッセージ ID
    • 20 バイト – デバイス ID(共有シークレット)
    • 2 バイト – データビット(広告あたり n ビット、ステータスバイトを含め最大 16 ビット)。
  • クライアントは n ビットだけをブルートフォースし、公開鍵のハッシュを生成して Apple にクエリ。
  • 誤り訂正 – Reed–Solomon ブロックで ≥80 % のチャンクが受信された場合に復元可能。

同期

  1. デバイスは各メッセージ前に 2 通の “sync” パケット(メッセージ ID=0)を送信。
  2. クライアントはレイヤー 1 とレイヤー 2 の同期チャンネルをスキャンし、新規メッセージを検出、内容をクエリ。
  3. 連続チャンク失敗が起きたらメッセージ終了と判断。

スループット

  • Apple Finder は約 15 分ごとに 512 バイトのアップロードを行い、追加データ 500 バイトごとに約 15 分の遅延。
  • 最大スループットは広告保存後で ≈60 ビット/秒。

ポータビリティ

プラットフォームアプローチ
ESP32VHCI(UART 上 HCI)を使用して BLE 広告を作成。
Linux原始 HCI ソケットで root 権限で実行。
nRF52‑DKZephyr RTOS のネイティブ HCI API を利用。
TI デバイスPlatformIO → CCS IDE → TI SDK、カスタム CMakeLists でフラッシュ。

全プラットフォームは共通のハードウェア抽象化層(HAL)を介して生 HCI パケットを送信し、デバイス間で BLE 広告構築が一貫します。


Google Find Hub

  • Find My との違い

    • 登録済みデバイスの鍵のみ保存。
    • ユーザーは自分のトラッカーだけをクエリ。
    • 厳しいレート制限、ステータスバイトなし。
  • Find Hub ツール

    GoogleFindMyTools
    は GRPC サービス(例:DeleteBleDevice, ListEidsForBleDevices)の protobuf を提供。

  • データ転送 – 各チャンクは推測鍵でデバイス登録が必要、典型的に n = 2 ビット/鍵。

  • 自動化 – バルクデバイス登録(約 100 件/バーナーアカウント)と

    DeleteBleDevice
    による削除。

  • Tor ブロック – Google は Tor exit ノードをブロック;直接接続へ切替。


デプロイメントシナリオ

  • キーロガ、音声→テキストレコーダー、パッシブ BLE/WiFi スニファー、画像転送(圧縮 JPEG + ZIP)、その他組み込みデバイス。
  • 両ネットワークを併用:Apple を主スループットとし、Google は冗長性やバックアップとして活用。

セキュリティ FAQ

質問回答
サードパーティがペイロードを見ることはできるか?ペイロードは ECC 秘密鍵であり、BLE 広告の公開鍵は逆算不可。ステータスバイト(8 ビット)はスニファ可能だが無効化可。
リプレイ攻撃はあるか?攻撃者が偽のステータスバイトを持つビーコンを再送すれば可能。ただし、ステータスバイト無効化やデータレート低減で緩和。
ストーキングアラートはトリガされるか?キーが頻繁に変わり 24 時間同一鍵を保持しないため、通常は発生しません。
攻撃者がデータクエリできるか?20 バイトの共有シークレット(デバイス ID)を知っている場合のみ。
実際の AirTag と競合するか?キースペースは十分大きく、報告は 1 週間だけ保存されるため問題なし。
個人情報への関連付けは可能か?バーナーアカウントを使用し、Apple は復号できず Google はスパムとみなす場合があるが、トレーサビリティは低い。

参考資料

  1. OpenHaystack ツール
  2. Who Can Find My Device?
  3. Positive Security’s Send My
  4. FindMy.py ライブラリ
  5. Who Tracks the Trackers?(Apple アラート迂回)
  6. Track You: A Deep Dive into Safety Alerts for Apple AirTags
  7. ESP32 HCI 構造ガイド
  8. iPhone vs Android ユーザー統計(2025 データ)
  9. Okay Google, Where’s My Tracker?(Google Find Hub 評価)
  10. TagAlong – 無料広域データ転送サービス
  11. Where Is My Tag? – Apple FindMy の代替用途
  12. AirGuard – Android ユーザーを Apple ストーキング攻撃から保護
  13. 「ユーザーセキュリティとプライバシーを重視した新 Find Hub ネットワーク構築」
  14. Android で新 Find My デバイスを活用する 5 通りの方法

結論

  • Apple の Find My と Google の Find Hub 上で一方向、低ビットレートデータ転送は実現可能です。
  • カスタム ECC ベースプロトコル、Reed–Solomon 誤り訂正、およびオフバンド同期により、約 60 ビット/秒の堅牢なメッセージ配信が達成されます。
  • この手法は隠密性を保ちつつ、多数のハードウェアプラットフォームで移植可能であり、既存のストーキング防止機構を回避しながらユーザー個人情報を尊重します。

同じ日のほかのニュース

一覧に戻る →

2026/01/20 2:13

**回答** **Aレコード**が先に登場しました。 * DNSでは、A(Address)レコードはホスト名をIPv4アドレスへ直接結び付けます。 * CNAME(Canonical Name)レコードは後に導入され、IP アドレスではなく別の名前へのエイリアスとして機能します。そのため解決には A(あるいは AAAA)レコードが必要です。

## Japanese Translation: (以下、翻訳) **改訂された要約** 2026年1月8日、Cloudflare の 1.1.1.1 リゾルバは、12 月 2 日にコード変更が行われた結果、DNS 応答で CNAME レコードの順序が再構成され(回答セクション内で最初から最後へ移動)、世界的な DNS 障害を起こしました。Linux の glibc `getaddrinfo` や Cisco Ethernet スイッチの DNSC プロセスなど、A/AAAA レコードより前に CNAME を期待するスタブリゾルバは有効な回答を無視し、全世界で解決失敗が発生しました。 Cloudflare は問題を迅速に検知しました。変更は 12 月 10 日にテストされ、1 月 7 日からグローバルに展開されました。インシデントは 18:19 に宣言され、18:27 にリバートが開始され、19:55 にはサービスが完全に復旧しました。根本原因は RFC 1034 の非規範的「一つ以上の CNAME RRs による前置」の表現であり、CNAME が他のレコードよりも先に来ることを許容しています。一方、RFC 4035 は署名付きゾーンについて明示的な「MUST」を使用しますが、未署名ゾーンの順序付けは必須としません。 再発防止策として Cloudflare は IETF に対して draft‑jabley‑dnsop‑ordered‑answer‑section を提出し、CNAME が他のレコードタイプよりも前に出現すべきであることを提案します。その間、クライアントは DNS 応答を許容的に解析するよう採用すべきです。今回のインシデントは、レコード順序の一貫性テストを強化し、将来の障害を防ぐために業界標準を明確にする必要性を浮き彫りにしました。

2026/01/20 5:01

**C++ の所有権システムの理解** C++ はオブジェクトがどのように作成・使用・破棄されるかを決定する「所有権モデル」に依存しています。所有権を適切に管理することは、リソース安全性やパフォーマンス、メモリリークやデングリングポインタなどのバグを回避するために不可欠です。 --- ### 1. 基本概念 | 概念 | 定義 | |------|------| | **リソース** | 解放が必要なもの(メモリ、ファイルハンドル、ソケット等)。 | | **所有権** | リソースを不要になったときに解放する責任。 | | **スコープ** | オブジェクトが存在する期間の範囲。 | --- ### 2. 所有権パターン - **自動ストレージ(スタック)** - オブジェクトはスタック上で作成される。 - スコープを抜けたときに自動的に破棄される。 - 高速で手動解放不要。 - **動的割り当て(ヒープ)** - `new`/`delete` や生ポインタを使用。 - 呼び出し側が明示的にメモリを解放する必要がある。 - 適切に管理されないとリークやデングリングポインタの危険がある。 - **スマートポインタ**(C++11以降) - **`std::unique_ptr<T>`** - 単一所有者、コピー不可。 - 移動セマンティクスで所有権を移譲。 - **`std::shared_ptr<T>`** - 参照カウントによる共有所有。 - C++17以降はスレッド安全な参照カウント。 - **`std::weak_ptr<T>`** - `shared_ptr` の非所有オブザーバー。 - 循環参照を打破する。 - **リソース取得=初期化(RAII)** - コンストラクタでリソース取得をカプセル化。 - デストラクタで解放。 - 例外が投げられた場合でもクリーンアップを保証。 --- ### 3. ベストプラクティス 1. **可能な限り自動ストレージを優先**:手動クリーニング不要。 2. **動的リソースにはスマートポインタを使用** - 排他所有なら `unique_ptr`。 - 真の共有所有が必要なときだけ `shared_ptr` を使う。 3. **公開インターフェイスで生ポインタは非所有の場合に限定し、意図を文書化**。 4. **リソース管理クラスにはムーブセマンティクスを実装**:コピーコストを抑える。 5. **循環参照が起きそうな場合は `weak_ptr` を活用**。 6. **「Rule of Five」を遵守**:デストラクタ、コピー/ムーブコンストラクタ・代入演算子を必要に応じて実装。 --- ### 4. よくある落とし穴 | 問題 | 原因 | 対策 | |------|------|------| | メモリリーク | `delete` を忘れる、またはスマートポインタを使わない | RAII / スマートポインタを使用 | | デングリングポインタ | オブジェクトが最後の参照よりも先に破棄される | スマートポインタで管理、デングリング参照を避ける | | 二重解放 | 同じポインタを複数所有者が `delete` する | 単一所有 (`unique_ptr`) を強制 | | 循環依存 | 相互に `shared_ptr` が参照し合う | 適切な箇所で `weak_ptr` に置き換える | --- ### 5. 要約 C++ の所有権システムは、リソースがいつ割り当てられ、いつ解放されるかを制御するためのルールとツールのセットです。自動ストレージ、RAII、およびスマートポインタを活用すれば、安全で効率的、かつ保守性の高いコードを書くことができます。

## Japanese Translation: 記事では、C++ がオブジェクトの所有権、ライフタイム、およびリソース転送をどのように管理しているかを説明し、コードが安全で効率的かつバグフリーであることを保証しています。明示的な所有権ルールを強調しており、`char*` を返す関数は呼び出し側が解放するためにメモリを割り当てる場合もあれば、別のオブジェクトが所有するデータへのポインタを渡す場合もあります。呼び出し側はどちらの場合かを知っておく必要があります。 主な仕組みとして RAII(リソース獲得=初期化)、正しいデストラクタ設計、参照のライフタイム、およびムーブセマンティクスが挙げられます。RAII はリソースのライフタイムを変数のスコープに結び付け、オブジェクトがスコープから外れると自動的にデストラクタでクリーンアップされることを保証します。テキストは参照やポインタが指すオブジェクトより長く生存してはならないと警告し、長寿命のオブジェクトに参照を保存するとダングリング参照が発生する可能性があると述べています。 例では、手動の `new`/`delete` と例外処理との対比として `std::unique_ptr<char[]>` の使用を示し、スマートポインタがどれほど安全で例外安全であるかを説明しています。記事は `std::move` が単にオブジェクトを右辺値参照(`T&&`)へキャストするだけであり、自身でムーブ操作を行うわけではないと明確にし、むしろムーブコンストラクタやムーブ代入演算子が選択されるようオーバーロード解決を可能にしていると説明しています。右辺値参照はオブジェクトが安全に変更できるか、そのリソースが転送可能であることを示し、左辺値参照はコピーを意味します。 この記事は、基本的な C++ に慣れた開発者に対して RAII とムーブセマンティクスを自身のプロジェクトに取り入れるよう促しています。そうすることでプログラムは例外安全になり、`std::vector` の再割り当てなどコンテナ操作が改善され、最終的にはメモリエラーを減らし、パフォーマンスを向上させ、チームや企業の保守コストを低減する、より明確で安全なコードになると述べています。 記事はまた、ムーブセマンティクスと RAII に関する詳細情報を得るためのリンク(例:cppreference のページ)も提供しています。

2026/01/20 3:15

**AppleのNano‑Texture(2025年)に関する注記** - 3 nmプロセスで開発され、前例のない高密度を実現 - インター・チップ帯域幅は最大10 Tb/sをサポート - 統合AIアクセラレータが従来世代に比べ50倍の速度向上を提供 - 同等性能で電力消費を約30 %削減 - 既存のARMベースSoCパッケージング規格と互換性あり - 2025年第4四半期リリース予定。ハイ・パフォーマンスコンピューティングおよびデータセンター向けを想定 ---

## Japanese Translation: --- ### Summary Appleの2024年版MacBook Pro Nano‑Textureディスプレイは、輝きを大幅に抑えることで屋外使用を想定して設計されており、黒字白背景のテキストが2021年モデルの光沢画面よりも遥かに読みやすくなっています。しかし、明るい日差しの中で内容を見るにはバックライトを約**90 %以上**に設定する必要があります。バックライトをオフにすると画面は暗くなります。Nano‑Texture表面は指紋・汚れ・飛沫が付着すると非常に目立つため、Appleは特別クリーニングクロス(アルコールで濡らして使用)を提供し、定期メンテナンスのために**最低でも5枚**携帯することを推奨しています。ノートパソコンを閉じるとキーボードとトラックパッドが接触した部分に微細な擦り傷が残る場合がありますが、バックライトオフ時にのみ目立ち、通常の使用には影響しません。 このアップグレードは既にプレミアム価格であるMacBook Proに対して約**$150**を追加します。以前の屋外向けディスプレイ(Daylight Computerの転写型LCDなど)と比較すると、後者はグレースケール表示で直射日光下ではバックライトオフが最適ですが、Nano‑Textureはテキスト密度(ドット数)が高く、バックライトをオンに保つ必要があり、より頻繁な清掃が求められます。 屋外で信頼性のあるコンピューティングが必要なユーザーは、追加のワイプを携帯し、アウトドアではバックライトをオンにしてデバイスを丁寧に扱い、擦り傷を避けることになるでしょう。この慣習が屋外対応ノートパソコンで標準化される可能性がありますが、追加コストとメンテナンスは、継続的なアウトドア使用を重視するプロフェッショナルに限定されるかもしれません。企業はエルゴノミクスのメリットと高価格点とのバランスを検討します。