「1500円で買ったAirPods、半分の機能をAppleにロックされている」——LibrePodsが暴いたハードウェア所有権の真実

「1500円で買ったAirPods、半分の機能をAppleにロックされている」——LibrePodsが暴いたハードウェア所有権の真実

AppleAirPodsリバースエンジニアリングオープンソースハードウェア所有権

データソース:HN + web research · HN

新品のAirPods Proをわくわくしながら開封した。1500円(訳注:原文では1500元。日本円で約3万円相当)払った。Androidスマホにつなぐ。音は出る。問題ない。しかし設定メニューを隅々まで探してもバッテリー残量はどこにも表示されない。ノイズキャンセリングの切り替えスイッチは最初から存在しなかったかのようだ。外部音取り込みモードを調整しようとしても——スマホ上にその選択肢はない。淘宝(タオバオ)で購入履歴を確認する。確かに正規品だ。

これらの機能は壊れているわけではない。すべてイヤホンの中に、完全な状態で存在している。ただ、Apple製デバイスがないと、イヤホンはそのデータの提供を拒否するのだ。

この不条理の正体を、LibrePodsというオープンソースプロジェクトが暴き出している。

イヤホンは誰と話しているのか

この対立を理解するには、AirPodsとiPhoneの間で実際に何が送受信されているかを知る必要がある。

Apple製デバイスがAirPodsに接続するとき、イヤホンとスマホの間には二つの通信経路が確立される。一つ目は標準のBluetoothプロトコルを通り、音楽を耳に届ける。二つ目はApple独自の秘密の通路——AAP(Apple Accessory Protocol、Appleアクセサリプロトコル)と呼ばれるもの——を通る。

この専用通路はBluetoothのL2CAP層上で動作し、ポート番号は0x1001、サービスIDは74ec2172-0bad-4d01-8f77-997b2be0722a。通常のBluetoothデバイスから見れば、これは取るに足らないデータパイプに過ぎない。しかしAirPodsにとっては、ここが本当の頭脳なのだ。

この通路を通じてやり取りされるデータパケットには固定フォーマットがある。4バイトのヘッダ04 00 04 00、続いて長さバイト、機能番号、具体的なデータ。バッテリー状態は22バイトで左右の耳と充電ケースの残量を記述する。装着検出は8バイト。ノイズキャンセリングの切り替え——オフ、ノイキャン、外部音取り込み——は0Dの後ろに010203を付けるだけだ。

つまり、AirPodsがAppleデバイスに送信するすべての「高度な機能」情報は、実は固定フォーマットの短いデータパケットに過ぎない。イヤホンはずっとブロードキャストし続けている。ただ、Appleデバイスだけが「理解できる」言語で話しているだけだ。

それに加えて、AirPodsはBLEブロードキャストを通じて、バッテリー情報と装着状態を含む暗号化データを周囲に発信している。しかし暗号化の鍵——iCloudクラウドキー——はAppleデバイス間でのみ同期される。Apple製でないデバイスが受け取るのは、解読不能なデータの羅列だけだ。

三つの鍵:Appleはいかにこれらの機能を封じ込めたのか

Appleの囲い込み戦略が機能するのは、ある意識の隙間があるからだ。不自然に思わなければ、要求しようとも思わない。しかし要求しようとすれば、次の三つの扉がすべて施錠されていることに気づくだろう。

第一の鍵:iCloudペアリングロック。 iPhoneでAirPodsを初めて接続するとき、Appleのクラウドサービスがバックグラウンドで暗号鍵のペアを交換し、Apple IDと紐づけ、イヤホンのセキュアチップに格納する。以降、この鍵を持たないデバイスは高度な機能のデータ交換に参加できない。Androidスマホに表示される「接続済み」は欠損状態に過ぎない。音楽は再生できるが、イヤホンはバッテリー残量を教えることを拒否する。

第二の鍵:プロプライエタリBLEブロードキャスト拡張。 Bluetoothブロードキャストプロトコルは標準的な通知方法を規定している。Appleは標準の上に暗号化ペイロードの層を追加し、iCloudキーを取得したデバイスだけが復号できるようにした。LibrePodsのアプローチは、イヤホンに能動的にこの鍵を要求し、Appleデバイスの要求方法を模倣するというものだ。コードの中ではこのプロセスを「Magic Pairing」と呼ぶ——自分がAppleデバイスであるかのように振る舞えば、イヤホンが鍵を渡してくれる。

第三の鍵:MFiチップとVendor IDチェック。 AppleのMFi(Made for iPhone)認証は、アクセサリに認証チップを搭載することを要求する。AirPods自体は外部認証を必要としないが、接続デバイスのVendor ID(製造元番号)をチェックする。Vendor IDが0x004C(Appleの企業番号)でなければ、一部の機能がサイレントに無効化される——何の通知もなく、ただ機能メニューからいくつかの選択肢が消えるだけだ。LibrePodsプロジェクトは、AndroidデバイスのVendor IDをAppleのものに偽装することで追加機能をアンロックできることを発見した。Linuxではさらに簡単で、設定ファイルを一行書き換えればよい。

この三つの鍵が暴くのは、歪んだ事実だ。AirPodsのハードウェアは、Appleが許可しているよりもはるかに多くのことができる。

28,000スターと16歳の学生

LibrePodsプロジェクトの発起人はKavish Devar、インドのグルグラム在住。プロジェクトが広くメディアで報道されたとき、彼はまだ16歳だった。GitHubリポジトリのデータによれば、現在28,000以上のスター(28,000人が「このプロジェクトを継続的にフォローしたい」という意思表示をしたことになる)を獲得し、1,600人以上がコードをフォークして独自に改良を加えている。

リバースエンジニアリングの第一歩はパケットキャプチャだ——Bluetoothスニッフィングツールを使って、iPhoneとAirPodsの間の生データのやり取りを捕捉する。見えるのは16進数のデータストリーム。04 00 04 00で始まるハンドシェイクリクエスト、0D 01は「ノイズキャンセリングに切り替え」、28 01は「会話認識をオン」を意味する。

第二歩は機能ごとの実験。ノイズキャンセリングを切り替えまくり、データパケットのどのバイトが変化するかを観察する。数百回の反復の末、各バイトの意味が解読された。Devarは複数のコミュニティ貢献者に謝辞を述べている——@tyalieが最初のプロトコルドキュメントを作成し、@pabloaulがWireshark解析プラグインを開発し、@timgromeyerがLinux版のプロトタイプを実装した。

このリバースエンジニアリングのプロセスの妙味はここにある。暗号アルゴリズムのクラックも、Appleの企業秘密の窃取も一切行っていない。やっているのは最も素朴なこと——会話している二人の隣に座り、一言一句会話を書き取り、各単語の意味を推測する。このアプローチは法的には相互運用性のためのフェアユースに該当し、多くの法域で明示的に保護されている。

ハードウェアはあなたのもの。体験はAppleのもの。

このプロジェクトは一つの問題をあらわにする。1500元で買ったもののうち、どれだけが本当に自分のものなのか。

法的には、イヤホン本体はあなたの所有物だ。しかしイヤホンの中ではAppleのファームウェアが動いている——Appleが著作権を持ち、ソースコードを公開せず、Appleデバイスを通じてのみ完全にアクティベートできるソフトウェアだ。AirPodsを一度もAppleデバイスに接続したことがなければ、ノイズキャンセリングが三つのモードを切り替えられることを永遠に知ることはない——切り替え命令はあの暗号化経路を通らなければならないからだ。

これは変形された機能リースに等しい。1500元で買ったイヤホンのハードウェア、その完全な使用権は、別のApple製品を所有しているかどうかに依存する。Appleの立場からすれば、プロトコルを閉じることで体験の断片化を減らし、互換性問題によるサポート負担を回避し、セキュリティアップデートを統一的に配信できる——「より良い体験のために、我々がチェーン全体をコントロールする」。

しかしユーザーの視点はまったく異なる。Hacker Newsにこんなコメントがある。「AirPodsはオフラインデバイスだから、今買えば一生使える。とはいえ、自分のハードウェアを使うのに追加の関門をクリアしなくてもいいメーカーに報いるほうが、賢い選択かもしれない。」別のコメントはさらに鋭い。「かつて我々は暗号技術で自分を守った。今や企業と政府が暗号技術で我々から身を守っている。」

このプロジェクトは自らの限界も率直に認めている。二チャンネル高音質通話、心拍モニタリング、空間オーディオ——Androidのroot権限が必要か、プロトコルがまだ完全に解読されていないかのどちらかだ。LibrePodsは各機能の実装状態を5つの記号で示している。✅ 完全使用可、⚪ Appleデバイスへの偽装が必要、🔴 未実装、⛔ 実装しない方針、❓ 状況不明。この率直さが、プロジェクトを勝利宣言ではなく、現在進行形で埋められつつある空白の地図のように読ませる。

二つの陣営、どちらも勝っていない

LibrePodsの物語は単純な「善が悪を倒した」ではない。研究者の視点から見れば、Appleのプライバシーとセキュリティへの投資は本物だ——AirPodsのエンドツーエンド暗号化は位置データの安易な漏洩を防ぎ、閉じたファームウェア更新メカニズムは悪意ある改変のリスクを低減する。Appleは非Appleデバイスでの体験を積極的に破壊したわけではない。ただ、その体験を一度も建設しなかっただけだ。

コミュニティの答えはこうだ。お前がやらないなら、我々がやる。28,000人の注目は、これがニッチな需要ではないことを示している。消費者がイヤホン一組に支払う金額が多くの人の月収を超えるとき、「買ったもののうちどれだけ使えるか」という問いへの感度は、上がる一方だ。

このプロジェクトの未来も同様に不透明だ。Appleはいつでも任意のファームウェアアップデートでプロトコルを変更し、何年ものリバースエンジニアリングを一夜で無効化できる。Hacker Newsの現実的なアドバイスはこうだ。LibrePodsを長期利用するなら、AirPodsがAppleデバイスに接続して自動更新しないようにし、ファームウェアを現在のバージョンに「ロック」せよ。これは自由のようには聞こえない——足枷をつけて勝ち取った、限られたスペースのように響く。

筆者はこの問題に単純な善悪の答えがあるとは思わない。Appleには自社エコシステムに投資し、そこから利益を得る権利がある。消費者にも、定価で購入したハードウェアの一部機能しか使えないのはなぜかと問う権利がある。この緊張は一つのオープンソースプロジェクトで解決されるものではない。しかしLibrePodsのようなプロジェクトが一つ生まれるたびに、その緊張はより見えやすくなっていく。


参考リンク: