今日という一日は、開発者として、そして「Vibe Coding」の熱狂的なフォロワーとして、忘れられないほどエキサイティングなものだった。
取り組んだのは、次世代Webドキュメント規格 Web/A のセキュリティ基盤。特に「Layer 2 暗号化(L2E)」と呼ばれる、回答データを受領者以外には一切読ませないエンドツーエンド暗号化(E2EE)の実装だ。
監査エージェントという「鏡」
今日、何よりも刺激的だったのは、AIエージェントを「レッドチーム(攻撃側)」と「開発パートナー」の両方の役割で使い分けたことだ。
まず、監査役として設定したエージェント(監査人)が、私の設計に対して容赦ない「Audit Report」を突きつけてくる。 「前方秘匿性(PFS)が欠如している」「リプレイ攻撃への耐性が不十分だ」「JavaScript実装ではタイミング攻撃の隙がある」……。
かつて数週間かかっていたようなセキュリティ・レビューのサイクルが、数分単位で回っていく。このスピード感の中で、設計の脆弱性が次々と暴かれ、それに対して即座にコードを書き換えていくプロセスは、まるで緊迫したジャズのセッションのようだった。
WASMへの聖域なきダイブ
監査人からの「JSのサイドチャネルリスク」という指摘に対し、私はコアとなる暗号ロジック(X25519, AES-GCM, そして耐量子暗号の ML-KEM / ML-DSA)をすべて Rust で実装し、WebAssembly (WASM) に移行することを決めた。
AIエージェントは、Rustの高度な型システムとWASMバインディングの複雑な橋渡しを、迷うことなくサポートしてくれた。数時間前まで TypeScript だけで書かれていたプロジェクトの心臓部が、いまやメモリ安全で高速な Rust / WASM に置き換わっている。ブラウザ上で耐量子署名(Dilithium)がスルスルと検証される光景には、静かな感動を覚えた。
サーバーレスでPFSをつかみ取る
最大の難所は、静的なウェブサイト(サーバーレス)という制約の中で、いかにして前方秘匿性(PFS)を実現するかだった。
双方向のハンドシェイクができない環境で、鍵をどう使い捨てるのか? この難題に対し、我々は「Epochベースの鍵更新(SEFS)」と、Firebaseのトランザクションを活用した「一回使い切り鍵(True PFS)」のハイブリッド構成を構築した。Firestoreでの「鍵の消費」処理をアトミックに実行することで、ステートレスなフロントエンドでも強力な機密性を維持できることを証明した。
開発の新しい「体感温度」
今日の作業を通じて感じたのは、AIエージェントとの協調作業における「体感温度」の変化だ。
もはや単にコードを補完してくれるだけの存在ではない。彼らは設計の矛盾を突き、実装の限界を押し広げ、時には厳しい「敵役(レッドチーム)」として私を鍛えてくれる。
「レッドチームと踊る」ように開発を進めるこのスタイルは、単なる効率化を超えて、プログラミングという行為をより創造的で、知的興奮に満ちた冒険に変えてくれる。
2025年の年末。耐量子暗号をブラウザで動かしながら、この「Vibe」をブログに書き留めておきたくなった。新しい開発の時代の幕開けを、今、確かに感じている。
関連ドキュメント:エージェントとの格闘の記録
本日一日で駆け抜けた、監査人と開発チームの全記録はこちらから参照できる:
- Web/A Security Audit Index - v1から最終承認のv5まで
- Remediation Report (Response to v3) - 今回の「商用利用可能」判定の決め手となった最終報告書