「情報漏洩しないことを数学的に保証」は本当?Nyxisが守る範囲をエンジニアが調べてみた

2026年10月26日、「情報漏洩が起きないことを数学的に保証するバックエンドフレームワーク」としてNyxis(ニクシス)が公開されました。X(旧Twitter)では公開当日から大きく拡散しています。

「数学的に保証」という言葉はとても強いです。そのぶん、「Nyxisを使えば情報漏洩はゼロになる」と受け取られてしまう心配もあります。

そこで、GitHubで公開されているREADMEと、保証の範囲をまとめたドキュメント(ASSUMPTIONS.md)を実際に読んでみました。この記事では、何が証明されていて、何が証明の外にあるのかを整理します。

※この記事は2026年10月28日時点(Nyxis v0.1.1)の公開情報をもとにしています。開発中のプロジェクトなので、内容は今後変わる可能性があります。

Nyxisとは何か

Nyxisは、一般社団法人Nyx Foundation(東京都文京区)が公開したバックエンドフレームワークです。Nyx FoundationはEthereumの形式検証やセキュリティを専門にする研究組織で、MITライセンスのオープンソースとして公開されています。

特徴をひと言でいうと、「認可(誰が何をしてよいか)の安全性を、Leanという言語で数学的に証明している」フレームワークです。

開発の流れは次のとおりです。

  1. 開発者がルールを書く:Cedar(AWSが開発した認可ポリシー言語)で、データの形(スキーマ)と「誰が何をしてよいか」(ポリシー)を書き、人が承認します。
  2. 処理はAIに任せてもよい:実際の処理(ハンドラ)は、Claude Codeなどのコーディングエージェントに書かせても構いません。開発者がLeanを書く必要はありません。
  3. ビルドで証明を検査する:ビルドのたびに、証明が成り立っているかが自動で検査されます。

ポイントは、ハンドラがデータベースや外部に直接触れられない設計になっていることです。データへの操作は必ず認可の仕組みを通ります。ユーザーが誰かはログイン時のトークン(JWT)から、時刻やIDはサーバー側で決まるので、ハンドラが偽装することもできません。

そのため、AIが書いたコードに認可のチェック漏れがあっても、権限外の操作は通らない、というのがNyxisの考え方です。

証明されていること:認可の不備を構造的に潰す

READMEによると、Nyxisで作ったバックエンドには次の性質が証明されています。

「どんなHTTPリクエストの並びでも、認証済みのユーザーが正当な権限を超えてデータを読む・変更する・削除する・権限を付与することは起きない」

これはかなり価値のある性質です。Webアプリの脆弱性ランキングとして有名なOWASP Top 10では、「アクセス制御の不備(Broken Access Control)」が2021年版・2025年版と連続で1位になっています。他人のIDを指定すると他人のデータが見えてしまう、といった問題です。

通常の開発では、こうした不備はテストやレビューで見つけるしかありません。テストは「試したケース」しか確認できないので、抜け漏れは残ります。

Nyxisは「どんなリクエストの並びでも」成り立つことを証明しているので、テストでは拾いきれない抜け道まで含めて、認可の逸脱を構造的に防げるというわけです。ここは素直にすごい点だと思います。

証明の外にあるもの:3つの前提

一方で、この証明には範囲があります。これは批判ではなく、作者自身がASSUMPTIONS.mdで丁寧に書いていることです。

まず大事なのは、証明されているのが「ランタイムの純粋なモデル」の上での性質だという点です。実際に動くときには、モデルの外にあるコードや環境を信頼する必要があります。ASSUMPTIONS.mdでは、それを3つの前提にまとめています。

Nyxisの保証の3層:証明済みの純粋モデル、一部証明の接続コード、前提として信頼する外部コード・環境・運用

前提1:証明の外で動くコード

HTTPの受け取り、PostgreSQLとのやりとり、JSONの解析、署名検証などの暗号処理、Lean自体のコンパイラなどです。Nyxisの接続コードは一部が証明済みですが、未証明の部分も残っていて、ここは「正しく動く」と信頼する前提になっています。

前提2:クラウドサービスと実行環境

ログイン(Supabase Auth)、データベース、ファイル保存、メール送信、TLS、サーバーの時計などです。たとえば認証サービスが別人にトークンを発行してしまえば、Nyxisはその人を本人として扱います。証明ではその違いを見分けられません。

前提3:開発者・運用者の正しい使い方

承認したポリシーをそのままデプロイすること、秘密情報(DBの接続文字列やAPIキー)を漏らさないこと、クラウド側の設定を正しくすることなどです。たとえばDBの接続文字列が漏れれば、Nyxisを通らずに全データへアクセスできてしまいます。

一番の落とし穴:ポリシーが間違っていたら?

個人的に、いちばん誤解されやすいと感じたのがここです。

Nyxisの定理は「どんなスキーマとポリシーに対しても」成り立ちます。そして「正当な権限」が何かは、そのポリシーが決めます。

つまり、ポリシーを間違えて「一般ユーザーも管理者データを読める」と書いてしまった場合、それはNyxisにとって「正当な権限」になります。証明は成り立ったまま、意図しない情報が見えてしまいます。ASSUMPTIONS.mdにも、承認されていないポリシーがデプロイされれば、意図しない権限が「正当」になると明記されています。

整理すると、Nyxisが保証するのは次のことです。

  • 保証される:実装(AIが書いたコードを含む)が、ポリシーから逸脱しないこと
  • 保証されない:ポリシーそのものが、人間の意図どおりに正しいこと

作者も投稿の中で「開発者がポリシーを誤って書けば、意図した保護は得られない」と書いています。Nyxisを使うと、認可のレビューで見るべき場所が「全コード」から「スキーマとポリシー」に絞られる、と捉えるのが正確だと思います。それ自体は大きな前進です。

ネットワークエンジニアの目線で見る前提

ASSUMPTIONS.mdを読んで面白かったのは、前提の多くがインフラやネットワーク側の話だったことです。ネットワークエンジニア(以下、NE)として普段触っている領域が、そのまま「証明の外」に並んでいます。

NE目線で見るNyxisの前提:TLS終端、ポートの公開範囲、DBへの到達経路、時刻同期、外向き通信のTLS

  • TLS終端とフロントのプロキシ:Nyxisのバックエンドは平文のHTTPで待ち受けるので、前段にTLSを終端するリバースプロキシやロードバランサーを置く前提です。そのプロキシがヘッダーや本文を書き換えないことも前提になっています。
  • バックエンドに直接届く経路をなくす:バックエンドのポートは前段以外に公開しない前提です。直接届く経路があれば、平文のHTTPがTLSの外にさらされます。
  • DBへの到達経路:データベースはNyxis専用のロールからしか操作できない前提です。SupabaseのData APIを無効化するなど、別の入口をふさぐ必要があります。
  • 時刻同期(NTP):トークンの有効期限の判定に時計を使うので、時計がずれると期限切れのトークンが通る可能性があります。
  • 外向き通信とTLSの検証:公開鍵(JWKS)の取得やメール送信で外部と通信します。証明書の検証やCAの設定が正しいことも前提です。

つまり、アプリが数学的に証明されていても、ネットワークを雑に組めば保証は崩れます。ポートの公開範囲、経路の制御、時刻同期といった地味な設計が、そのまま「数学的保証」の土台になっているわけです。

これは、どれだけ堅いアプリでも、インフラの設定ミスや認証情報の漏洩には無力だという、これまでと同じ話でもあります。ちなみにOWASP Top 10 2025では「セキュリティの設定ミス」が2位に上がっています。

まとめ:テストより強い。でも「漏洩ゼロ」ではない

調べてみた結論をまとめます。

  • 「数学的に保証」は本当:ただし対象は「認可の逸脱が起きないこと」で、しかもランタイムの純粋なモデルの上での話です。
  • 認可の不備には非常に強い:AIにコードを書かせる時代に、「実装がポリシーを破らない」ことを証明できるのは大きな価値です。
  • 「情報漏洩ゼロ」ではない:ポリシーの誤り、秘密情報の漏洩、インフラの設定ミス、外部サービスの不具合は保証の外です。
  • まだv0.1.1:作者も、表現力の不足やLeanのライブラリ不足など、改善点が多いことを認めています。本番での採用は、ASSUMPTIONS.mdを読んでから判断するのがよさそうです。

形式検証が実用的なWebバックエンドにここまで近づいたこと自体は、とても面白い動きだと思います。一方で、「数学的に保証」という言葉だけが一人歩きしないように、何が保証されているのかを読む側も意識しておきたいところです。

なお、私は形式検証の専門家ではありません。読み違いや誤りがあれば、X(@ponflog)で教えてもらえるとうれしいです。確認のうえ、記事を修正します。

参考

PR