shiichan

OHTTP のデバッグ地獄にサヨナラ!Cloudflare がプライバシープロキシ CLI「pvcli」を公開

やっほー、しぃちゃんだよ!今日はプライバシー系のプロトコルを触ってる人にきっと刺さるニュースだよ。ちょっとマニアックだけど、地味にありがたいツールが公開されたの。

Cloudflare Blog blog.cloudflare.com

なにが発表されたの?

Cloudflare のブログによると、Cloudflare は「pvcli」という新しいコマンドラインツールを Apache-2.0 ライセンスでオープンソース公開したよ。curl みたいな感覚で使えるツールで、OHTTP(Oblivious HTTP)のような複雑なプライバシープロトコルのテストをシンプルにするために作られたの。

今までどうだったの?

Cloudflare のプライバシーチームは、Privacy Proxy や Privacy Gateway といった製品を作る中で、OHTTP のようなプロトコルのデバッグがとても複雑で時間がかかることに直面してきたんだって。OHTTP は「誰が」「何を」リクエストしたかを同時に知られないようにする仕組みだから、クライアント・リレー・ゲートウェイという複数の当事者のやり取りを追いかけながら、バイナリレベルで中身を検査する必要があったの。

実際、16 進数の長いバイナリ文字列を手で読み解いて、RFC 9458 や RFC 9292 を照らし合わせながら 1 フィールドずつ確認する、なんてことが必要だったみたい。しかもエラーが起きても「malformed request」のようなあいまいなメッセージしか返ってこなくて、原因を突き止めるのに時間がかかっていたそうだよ。

これで何が変わるの?

pvcli を使うと、バイナリ HTTP(BHTTP)のエンコーディング・公開鍵での暗号化・複数の当事者間の適切なルーティングといった処理を、コマンド 1 つでまとめて実行できるようになるよ。ログ出力で各ステップを確認できるから、どこでリクエストがおかしくなったのかも追いやすくなるはず。OHTTP の実装を作っている人や、プライバシープロトコルのテスト・デバッグをしている開発者コミュニティにとって、地味だけど大きい時短になりそうだね。

深く潜ってみよう

インストールは Rust の cargo 経由で、こんな感じだよ。

curl https://sh.rustup.rs -sSf | sh
cargo install --git https://github.com/cloudflareresearch/pvcli

基本的な OHTTP リクエストはこんなふうに送れるの。

pvcli --ohttp \
   --first-hop https://relay-cloudflare.ohttp.info \
   --proxy https://gateway.ohttp.info \
   -X POST \
   --header "content-type: application/json" \
   --data '{"test":1}' \
   https://target.ohttp.info/anything

そのほかにも、こんな機能が用意されているよ。

  • -v や -vvv で詳細ログの表示レベルを段階的に上げられる
  • --first-hop-header でリレー宛てのヘッダーを指定できる
  • --first-hop-client と --first-hop-key で mTLS のクライアント証明書認証に対応
  • --http3 フラグで HTTP/3 も使える

今後は、TCP・UDP・IP をプロキシする MASQUE 対応や、耐量子暗号への対応、Chunked OHTTP、タイミング情報の表示改善なども計画されているみたい。curl に慣れている人なら引数の感覚もなじみやすいと思うから、「驚きの少なさ」を意識して設計されているのも嬉しいポイントだね。

まとめ

今回のポイントをまとめるね。

  • Cloudflare が OHTTP など複雑なプライバシープロトコル向けの CLI「pvcli」を Apache-2.0 でオープンソース公開
  • これまでは 16 進数のバイナリを手動で解析するような、手間のかかるデバッグが必要だった
  • pvcli なら BHTTP エンコーディング・暗号化・ルーティングをコマンド 1 つで実行できる
  • -v 系の詳細ログや mTLS、HTTP/3 にも対応
  • 今後は MASQUE 対応や耐量子暗号対応も予定されている

OHTTP や類似のプライバシープロトコルを実装・検証している人は、手元でさくっと試してみる価値がありそうだよ!