ESP32でWi‑Fiを解放する [ビデオ]
(media.ccc.de)- ESP32はCCHだけでもおそらく数千台使われるほど一般的だが、中核となるWi‑Fiスタックはクローズドソースで、修正や監査が難しい
- 38c3のセッションでは、Wi‑Fi周辺機能のリバースエンジニアリングから出発し、オープンソースのWi‑Fiスタックを作る過程を扱う
- 目標は単なる代替実装ではなく、機密データを扱いうるソフトウェアを自分で検証し修正できるようにすること
- 新しいスタックが定着すれば、ESP32は一般的なIoT SoCを超えて、研究や実験のための低コストな無線プラットフォームへと拡張できる
- 機能が十分に開放されれば、ペンテストツール、B.A.T.M.A.N.メッシュルーター、AirDropクライアントのような活用が可能になる
クローズドなWi‑Fiスタックを開く理由
- ESP32の既存Wi‑Fiスタックは動作するものの、クローズドな実装であるため、内部動作を確認したり必要に応じて修正したりするのが難しい
- オープンソースのWi‑Fiスタックの核心的な目標は、機密データを扱う可能性のある領域を修正・監査できるようにすること
- CCHにはおそらく数千台のESP32があり、すべてがこのようなクローズドなWi‑Fiスタックを動かしているという点が問題意識を強めている
リバースエンジニアリングから新しいスタックへ
- このプロジェクトは、ESP32の独自Wi‑Fiスタックをリバースエンジニアリングすることから始まった
- その後、ESP32のWi‑Fi周辺機能を直接扱うオープンソースWi‑Fiスタックの実装へとつながった
- この過程では、Wi‑Fi、ESP32、一般的なリバースエンジニアリング、そしてこの種のプロジェクトへのアプローチ方法もあわせて扱われる
ESP32が開放されたときの活用
- ESP32は機能が完全に開放されれば、研究ツールおよびIoT SoCとして、より多様な役割を担えるようになる
- 想定される活用例は次のとおり
- ペンテストツール
- B.A.T.M.A.N.メッシュルーター
- AirDropクライアント
セッション情報と公開条件
- 登壇者はFrostie314159とJasper Devreker
- 38c3のHardware & Makingトラック、Saal 1で行われた38分のセッションで、日付は2024-12-27
- 映像と音声はMP4、WebM、MP3、Opus形式で提供される
- 資料は
http://creativecommons.org/licenses/by/4.0の条件で公開されている
1件のコメント
Hacker News のコメント
関連記事: https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/
互換性があれば、ネット上にすでに蓄積されているヘルプやサンプルをそのまま活用でき、参入コストも下がる。MAC 層をほんの少しだけいじりたい人も、新しい API を覚える負担なしに従来どおり入って、必要な部分だけ手を入れられる
Espressif だけが WiFi モデムをかなりまともなマイクロコントローラに載せることに成功している、というのは今でもかなり不思議
ST はこの分野では依然として大きく遅れている
ただし RP2040 W ボードの WiFi は外付けモジュールのように見える。出典は https://esphome.io
どこでも 1 個単位で買え、USB 電源・プログラミングポートと表示済みのピンが付いた各種ブレイクアウトボードとして売られており、ドキュメント・サンプル・Arduino IDE・NodeMCU もよく整っている。Arduino も初期には似ていたが、低性能な AVR チップに長く留まりすぎ、中国製でないボードは高価で、WiFi もなかった。Raspberry Pi Pico は機能は良いが、初期は入手が難しかったし、それ以外は DigiKey のようなところで買う「ワンチップ」に近く、送料が高く、ドキュメントは 600 ページ超で、最初の ping を 1 つ送るだけでも 300 ページ以上が必要で、ボードにはんだ付けしなければならず、プログラミングにもたいてい高価な機材が必要になる
まだ動画を見られていないので、すでに扱っていたら申し訳ないが、ESP32 の無線認証が公式のブラックボックス・ファームウェアに紐づいているのか気になる
同じハードウェアでもオープンなファームウェアを使うと、FCC などの認証機関に再提出して適合性試験を受ける必要があるのだろうか?
CFR の条項はすぐには思い出せないが、FCC は誰でも少量の未認証デバイスを使用できることを明示的に認めている。そのデバイスが他の規則に違反すれば依然として違反だが、ハードウェアやソフトウェアを変更したという事実自体は禁止されていない
ファームウェアの存在はほとんど認められていないレベル。理由も一つある。WiFi のような認証済みの免許不要無線機器は、公共の利益のために改ざん防止が期待されているからだ。そのため FCC が WiFi ルーターの認証要件を議論したとき、脆弱なひどい WiFi ルーターすべてにセキュアブートを義務づける形でソフトウェアにまで拡張する案を検討したが、ひどい発想だったので廃案になった。現状では、生成されたファームウェアが明らかに規格外の放射を生まない限り、半分合法または半分違法に近いと思う。法律家ではない
https://github.com/esp32-open-mac
以前、WiFi パスワードのプロビジョニングのアイデアがあった。パケット長を変調して SSID とパスワードを送信できる
新しい IoT デバイスは当然パケットを復号できないが、長さは観測できる。Linux 向けのサンプル実装も作ったが、これを行うのに十分な低レベル PHY アクセスを提供する IoT チップを一つも見つけられなかった
脇道の質問だが、発表者の一人が DECT 番号を公開していた。技術カンファレンスで使うために、今でも古い電話機を持ち歩いている人たちがいるということなのか?
イベント中の指標を表示するステータスダッシュボードもある
[1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
[2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
特にキャンプエリアでは WiFi のカバレッジが不安定なことがあるので、トイレ棟や駐車場まで歩いて行っても電話を受けられる。独自の周波数を使うため、WiFi、Bluetooth、Zigbee が使う帯域をさらに混雑させることもない。アプリのようなものも使えるだろうが、DECT は非常に安定していて、到達距離も WiFi よりずっと良い。Nokia 8210 くらいの大きさの、まともな Siemens の端末を持っているので、レンガみたいなものを持ち歩く必要もない。今はバッテリーがほぼ死んでいるだろうが、当時のバッテリーらしく交換可能だ
ドイツの個人宅では、DECTはいまだに非常に人気がある
WiFi上のVoIPよりはるかに堅牢
DECTが先にあったため、内線電話網の一般名詞のように定着したもの
ハッキングがどれほど深いレベルなのか気になる。フレーム送信は単にいくつかのレジスタを設定して割り込みを待つだけのように見えるが、実際の作業をする別のファームウェア層と会話しているのではないかと思う
Raspberry Pi Picoボードを思い出す。メインのRP2040 SoCはあるが、WiFiは独自のArmコアを持つ別のWiFi/BTモジュール(CYW43xx)である。WiFiモジュールの外部レジスタインターフェースも公開文書化されていないが、オープンソースドライバ(https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...)があるため、仕様を推測できる。しかしこのドライバも結局、モジュール内部のArmコアで動くソフトウェアと通信しており、そのコードはメーカーが巨大なファームウェアのバイナリblobとして提供している。そのblobは、リンク先リポジトリのfirmwareディレクトリ内のヘッダファイルに実際に入っている。今回のESP32ハックがこの構造とどう対応しているのか気になる
発表者たちが本当に若く見えて印象的。あれほど若い年齢であの程度の技術知識を身につけている様子を見るのは興味深い
チェスが完璧な例。昔は多くの知識が本にあり、しばしば外国語の本だった。今はすべてが公開されていて、ある程度の実力になればトップ100圏の相手とも気軽に対局できるので、成長速度がさらに速くなる
プロミスキャスモードをサポートするMicroPythonライブラリに一歩近づいた
ダウンロードせずに視聴: https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...