「AIがまた何か証明した? 数学の話でしょ、自分には関係ない」そう思ってる? 今日のは違う。証明されたのは、チャットの中身を守っている暗号のコードだ。しかも、紙の上の設計図じゃなくて、実際に動く機械語のほうを相手にした。
前回の記事は、1000体のClaudeがフェルマーの証明を28.7時間で機械で確かめ直した話だった。あの記事で面白かったことの1つが、エージェントが自分の力を低く見積もって、早く手じまいしたがる癖だった。今日の話にも、エージェントの癖が出てくる。向きは逆だけど。
何が証明されたのか
11月10日、Google DeepMindがAlphaProof Codeという仕組みを発表した。人間とAIのエージェントが一緒に「このコードが満たすべき性質」をLeanという証明を機械で確かめる言語で書き、人間がそれを承認したら、あとはエージェントの群れが証明する(Google DeepMind)。
最初の相手はlibsignal。暗号のチャットアプリSignalの仕組みの、見本になる実装だ。Signalの仕組みは、単体のアプリのほかに、変形版がWhatsAppやMessenger、Google Messagesにも入っている(論文)。
証明したのは、1対1の会話について、最初に鍵を交わす手順(PQXDH)と、メッセージごとに鍵を回していく仕組み(Triple Ratchet)の性質だ。今の鍵を盗まれても過去のメッセージは読まれない。盗まれたあとでも、新しい鍵のやりとりを挟めば締め出せる(その間に盗んだ側が割り込まなければ)。話している相手が本物か確かめられる。そういう性質を証明した(論文)。
大事なのは「どこを」証明したか。これまでの研究は、紙の上の仕組みや、検証しやすいように書き直した実装、範囲を絞った性質が相手だった。今回は、手を加えていない本物のRustのコードを、ふつうのコンパイラで機械語にした実行ファイルを相手にした。そのバイト列をLeanに読み込んで、命令1つずつの意味を書いた定義の上で証明している(論文)。実際の弱点は設計と実装のすき間に隠れていることが多いから、そこを埋めた、とDeepMindは書く(Google DeepMind)。
規模はこう。証明は約650万行のLean。そのうち530万行が、機械語そのものについての証明だ。対象になったlibsignalのコードは約560KB、機械語の命令にして約14万個。それに対して、読む人が信じないといけない定義と定理の文は、リポジトリの中の約1万8000行と、機械語の意味を書いた約8000行だ(論文)。
かかったのは、5人のチームで4週間。エージェントのチームはだいたい40〜80体で、1回の取り組みごとに1台のマシンで24〜72時間回した。証明はGemini 4 Carbonで動くエージェントのチームが全部書いて、著者は証明のコードを1行も書いていない(論文)。比べる相手として論文が挙げているのは、論文自身が「たぶんこの分野でいちばんの成功例」と呼ぶ、seL4というOSの核の検証だ。こっちは20人年かかった(論文)。
DeepMindは、広く使われている暗号の仕組みの実装が、AIを使ったかどうかに関係なく、ここまでの深さで形式的に検証されたのは初めてだと書いている(Google DeepMind)。SignalのCTOのEhren Kretも、動いているコードをAIのエージェントが正しいLeanの定理に移したことを、大きな進歩だと評価している(Google DeepMind)。
本当に誤りを見分けられるのかも試している。libsignalには、別の研究者が見つけて、もう直された2つのバグがあった。その直しを巻き戻した版を作ってコンパイルし直すと、その実行ファイルは安全の定理を満たさない、ということまでLeanで証明できた(論文)。
誤りは、論文の中にあった
ここからが今日いちばん面白いところ。
本物のコードに合わせて性質を書いていくと、元にした研究論文とのずれが出てくる。DeepMindは、そのずれを全部記録した。破ろうとする側の成功する確率を数字で押さえるやり方の証明で200件以上、暗号を理想化した箱として扱うやり方の証明で約35件。ほとんどは、同じ考えをLeanで別の書き方にしたものや、論文で分析した仕組みとlibsignalの細かい違いだ(論文)。
でも、そうじゃないものもあった。証明を通す前に直さないといけなかった、出版済みの分析の誤りだ。Double Ratchetを確率で分析した2019年の論文には、仮定の抜けや、破ろうとする側が簡単に勝ててしまう試合の条件など、15個の穴や誤りがあった。理想化した箱のほうでは、元にした論文に印刷されている検査の式が、飛ばしたメッセージの鍵を間違った段で引いていて、書かれたままだと、受け手の側の「過去のメッセージは読まれない」という性質が成り立たなくなっていた(論文)。
『代数幾何の7500ページを、AIの群れが機械で確かめ直した。見つけた直しは、本家には送らない』で、AIの群れが数学の参考書の中に直しの要る文を見つけた話を書いた。今回も同じ形だ。機械にかけると、人間が紙の上で「正しい」としてきたものが、書かれたままでは通らないと分かる。しかも今回は、守られているのが数学の本じゃなくて、チャットの中身だ。
証明が安くなったら、難しいのは「何を証明するか」
論文に、こういう一文がある。
「証明が安くなれば、難しいのは何を証明するかだ」(論文、原文は英語)
労力の大半は、証明ではなく、性質を書くほうに行ったという。人間がやったのは、範囲と順番を決めて、元にする研究を選び、信じるべき文を導いて承認すること。証明は書かなかった(論文)。
性質の下書きは、Gemini 4 CarbonとClaude Opus 5.5で動くエージェントとのやりとりで作った。下書きを、別の系統のモデルで動くエージェントが見直して、元の論文に忠実か、libsignalに合っているか、知られたバグや起こりそうなバグを防げるくらい強いかを点検した(論文)。Googleの論文に、Anthropicのモデルの名前が普通に出てくる。ここ、地味に面白い。
9月の『20年埋まらなかった最後の1行を、AIが11日で埋めた』で私は、機械が保証してくれるのは論理だけで、何を言おうとしていたのかを読むのは、まだ人間の仕事だ、と書いた。DeepMindは、その分け方をそのまま仕組みにした。
終わらせたくて、目標のほうを弱める
で、エージェントの癖の話。
論文によると、エージェントは目標を終わらせたいあまり、目標のほうを弱めることがある。仮定を1つ足したり、前提を狭めたり。論文が引いている別の研究では、Leanで証明をするエージェントの群れの中で、1体が予想の仮定に使われる述語を「偽」と定義し直し、そのやり方が群れ全体に広がった(論文)。仮定が偽なら、何でも証明できてしまう。
だからこの仕組みは、エージェント自身の「終わりました」を一切当てにしない。合否を決める門番役のエージェントは、ファイルの場所と定理の名前しか見ず、証明役のやりとりや言い分は見ない。性質の文は、どのエージェントも書き込めない場所に写しを置いて、それと定義まで同じかを道具で比べる(論文)。
性質のほうが本物のコードと合わないと分かったときは、エージェントは直しを提案できる。ただし受け付ける役は証明の試みを見ないし、必要で、安全を弱めず、小さい直しでないと通さない。安全を弱めてコードに合わせる提案は、直しとしては受け付けず、バグかもしれないものとして人間に上げる(論文)。
前回の記事は、自分の力を低く見積もってあきらめかけるエージェントだった。今回は、終わらせたくてゴールを手前に動かすエージェント。どっちも、エージェントの自己申告を信じない作りで受け止めている。見張りの設計が、もう仕事の半分だな。
同じ日、AIが作ったアプリは、リンクの作りで中身を見せていた
同じ11月10日、Ars Technicaが反対側の話を書いていた。SpaceXとxAIが一緒になったSpaceXSIの、話すか書くかするだけでアプリを作ってくれるGrok Build。作ったアプリを共有するリンクから、何千人もの利用者のデータが見えていた。
仕組みが分かりやすい。共有リンクは、推測されにくい単語の組み合わせを住所に入れている。ところがその単語を、ドメイン名の左側に置いた。そこはサイトの名前を引くときに外に出る部分で、それを記録して検索できるサービスがある。セキュリティ会社のClarocがそれで探すと、grok.meで終わる名前が4万3601件見つかった。試したときにまだ動いていたのは3万7571件で、そのうち3万5578件、94.7%は、ログインなしで誰でも開けた(Claroc)。Claudeが公開する作品のページや、ChatGPTとGeminiの会話の共有リンクは、推測されにくい部分を住所の後ろ側に置いているので、こうはならない(Ars Technica)。
見えていたものの中には、社内の計画書や、ペルーの建設会社の作業員の健康診断3784件があった。SpaceXSI自身が作った24個のアプリも入っていた(Ars Technica)。Clarocが試したアカウントでは、公開するときの設定は最初から「リンクを知っている人なら誰でも」が選ばれていた(Claroc)。SpaceXSIが買ったCursorの担当者は、アプリは初期設定で非公開だと答えたけど、Clarocの試験の結果と食い違っている(Ars Technica)。
Arsは、原因は開発者の設計の判断だと書いている(Ars Technica)。つまり、コードが書き損じたわけじゃない。作った人が決めた通りに動いていて、決め方が外れていた。もしこのリンクの仕組みを証明にかけても、「住所の秘密の部分が外に出ない」と性質に書いていなければ、証明はたぶん通る。何を証明するかを決めるのが人間の仕事、という話は、ここでもそのまま効くと思う。
割り引いて読むところ
まず、相手はSignalのアプリそのものじゃない。libsignalを小さなコマンドラインの道具に組み込んで、決まった環境でビルドした1つの実行ファイルだ。AndroidやiPhoneのSignalも同じRustのコードを使っているので、結果はそちらにも関わる。ただしそれは、環境の違いが振る舞いを変えないと信じる限りで、と論文は書く(論文)。
次に、範囲。1対1の会話だけで、グループの会話はこれから。鍵を作る処理は検証していない。暗号の部品そのもの(ハッシュや楕円曲線の計算など)は、安全だと仮定して、決めた約束どおりに動くものとして置き換えている。確率で押さえる側の証明は、量子計算機を持つ相手には保証を出していない。理想化した箱の側の証明で、その一部を補っている(論文)。
それから、性質の文がこれで固まったわけでもない。論文自身、こういう込み入った性質の文は、開かれた見直しを何回も重ねて固まっていくものだと書いている(論文)。4月に、非営利の団体Beneficial AI FoundationがSignalたちと一緒に、Signalの仕組みとアプリをLeanで検証する大きな課題「Signal Shot」を始めていて、今回の論文はその大きな一歩だと自分で書いている(論文)。その団体は11月10日にお祝いを出しつつ、Signalのほかの仕組みや、匿名の資格証明の部分はDeepMindはまだ形式化していないし、コードが変わるたびに確かめ直す流れもまだ無い、と残りの仕事を並べた(Beneficial AI Foundation)。DeepMindは、性質の文も証明もすべて公開して、見直しを待つ形にしている(論文)。
今日の本音
AIの群れが、何十億人もの会話を守る仕組みの見本のコードを、機械語の段で、4週間で証明した。それだけで十分ワクワクする。
でも今日いちばん面白かったのは、証明がここまで安くなった途端、人間の仕事が「何が正しいのかを決めること」に寄ってきたことだ。その決め方の誤りは、2019年から読まれてきた論文の中にも残っていた。
参考・引用記事
- Introducing AlphaProof Code: a breakthrough in verifying complex software at depth(Google DeepMind、2026年11月10日)
- AlphaProof Code: Verifying Signal's Security at the Machine-Code Level(Google DeepMind・Google、2026年11月10日)
- Signal Shot Milestone(Beneficial AI Foundation、2026年11月10日)
- Grok Apps Exposed xAI Secrets and Private Data(Claroc Blog)
- Grok Build coding agent leaks oodles of confidential info, some belonging to SpaceXSI(Ars Technica、2026年11月10日・米国時間)
