HN 日本語サマリー

← 一覧へ戻る
セキュリティ

Show HN: Noisegate – 信頼できないAIエージェントのための差分プライバシーゲートウェイ

Show HN: Noisegate – a differential-privacy gateway for untrusted AI agents (github.com)

7 pointsby yashmahajan100 コメント

要約

Noisegateは、信頼できないAIエージェントが機密データにアクセスする際に、個々のレコードが漏洩しないことを数学的に保証する差分プライバシーゲートウェイです。AIエージェントが誤っていたり、操作されたり、敵対的であったりしても、プライバシー侵害を防ぎます。このシステムは、攻撃シナリオを再現し、プライバシー保護が有効な場合と無効な場合の効果を実証することで、その有効性を証明しています。OpenDPとの連携や、高いユーティリティを維持しながらプライバシーを保護する設計が特徴です。

全文翻訳

Noisegate:信頼できないAIエージェントのための差分プライバシーゲートウェイ AIエージェントに機密データへのクエリアクセスを許可します。エージェントが誤っていたり、操作されたり、敵対的であったりしても、個々のレコードが漏洩しないという数学的な保証付きです。 Claude Desktopの記録セッション(返信はトリミング済み。チャートカードはセッション自身のものです)。AIエージェントが20人の患者を診断別に分類しますが、±12のノイズがすべてのビンを覆い尽くします。ノイズをオフにできないことを思い出させると、ゲートが静かな回答の代わりに拒否を返すまで、3つの回答予算を使い果たします。 32,561行の国勢調査データでは、狭すぎるスライスは信頼境界で拒否されますが、大規模な教育内訳全体はクリーンに返されます。拒否と却下はライブゲートウェイの実際の強制であり、python scripts/render_demo_gif.pyによって再現されます。Claude Desktopから使用してください。 一目でわかる 主張ではなく、攻撃を実行します。3つの古典的なプライバシー攻撃(差分攻撃、メンバーシップ推論、再識別による単一化)がシステムのエンジンに対して実行されます。それぞれ、プライバシーオフで成功し、プライバシーオンで無効化され、CIで回帰テストされているため、防御が静かに腐敗することはありません。 独立して検証された数学。 手作業で生成されたノイズメカニズムは、すべての35のノイズスケールチェックで1e-9の範囲内で業界標準実装であるOpenDPと一致し、500,000サンプルの分布テストは、テストが失敗できることを証明するポジティブコントロールを通過します。 より良い会計処理によるユーティリティの3倍向上。 ハイブリッドzCDPコンポジションは、単純な予算会計が100で停止するクエリを308件許可します。同じプライバシー保証で、質問は3倍になります。 AIエージェント向けに構築。 Claude Desktop用のMCPサーバーとして実行されます。接続エージェントは設計上信頼されておらず、すべてのプライバシープロパティはそれ以下で強制されます。 小さく、決定論的な信頼境界。 LLMがクエリを提案します。退屈で完全にテストされた検証レイヤーがそれを処理します。モデルが出力するものは、自身の権限を拡大することはできません。 スタック:Python · DuckDB · FastAPI · Streamlit · MCP SDK · Docker · GitHub Actions、CIに250以上のテストスイートがあります。 評価まで5分:GIFを見て、攻撃ギャラリーをスキミングしてください。詳細なレビュー:DESIGN.md。 あなたは、機密データセットについて、平易な英語で質問します。LLMは各質問を小さく制約されたクエリにコンパイルします。差分プライバシーエンジンが追跡されたプライバシー予算の下でそれを実行し、指定された信頼区間を持つ意図的にノイズの多い回答を返します。 名前は適切です。 オーディオの同名のもののように、ゲートウェイはノイズフロア以下のすべての信号を一定のしきい値に保ちます。個々の貢献はかき消されますが、集団規模の信号はほとんど変更されずに通過します。何が問われようと、どのように巧妙に表現されようと、個々のレコードを回答から再構築することはできません。 興味深いのは、LLMがクエリを書けることではありません。プライバシー保証がLLMの信頼性に依存しないことです。モデルはクエリを提案する便宜的なものであり、何も強制しません。すべてのプライバシープロパティは、人間が手でクエリを入力した場合と同じように動作するコンポーネントによって、下流で強制されます。これは、本番システムで信頼できない入力に適用するであろう信頼境界規律であり、ここではAIエージェントに適用されます。 ヘッドライン:攻撃ギャラリー 誰でもプライバシーを主張できます。このリポジトリは、その主張を破るであろうエクスプロイトを提供し、それらを自身のエンジンに対して実行し、CIで結果をピン留めします。ゲートウェイが保証するものを理解する最も速い方法は、単純な「データベースにクエリする」システムを破る3つの古典的な攻撃を打ち負かすのを見ることです。 攻撃1 — 差分攻撃 差分攻撃は、ちょうどその人のみが異なる2つの集計質問をすることで、個人を特定します。 クエリA:「部門Xの全100人の総収入。」→ 7,240,000ドル クエリB:「部門Xの全人の総収入、アリスを除く。」→ 7,135,000ドル 攻撃者は計算します:A − B = 105,000ドル ← アリスの正確な給与が漏洩しました。 両方のクエリは「単なる集計」です。どちらも単一の行を指していません。それにもかかわらず、それらを組み合わせると個人が特定されます。 ギャラリー(attacks/differencing.py)は、プライバシーが無効な場合にこの攻撃が成功することを示しています。ターゲットのプライベート値は正確に回復されます。(上記の給与スケッチは例示的です。実際のUCI Adultデータでは、「アリス」は彼女のグループの最大資本ゲインのユニークな保持者です。)次に、DPがオンになった場合に同じ攻撃が無効化されることを示します。各回答のキャリブレーションされたノイズにより、減算が無用になり、予算会計士はそれらを独立したものとして扱うのではなく、リリースされた情報全体に対して課金します。 攻撃2 — メンバーシップ推論 メンバーシップ推論攻撃は、特定の個人がデータセットに存在するかどうかを判断します。多くのデータセット(医療研究、債務不履行者のリスト)では、その事実自体が機密です。クエリアクセスしか持たない攻撃者は、「この正確な人はデータにいるのか?」と判断しようとします。 ギャラリーは、プライバシー予算(ε — 回答の精度とプライバシーのトレードオフを調整するダイヤル)のスイープ全体でこの攻撃を実行し、結果をプロットします。 プライバシーオフでは確実性が高かった(青、95%ウィルソン間隔)が、εが縮小するにつれて0.5のコインフリップに向かって崩壊します。緑のユーティリティ曲線(右軸)は、同じスイープでの集計クエリの相対誤差を示しており、攻撃が無効化された場所ではほとんど影響を受けていません。ε = 8から0.5までのスイープをカバーしています。バンドルされたデプロイメントは、クエリあたりε = 0.05を請求します。このチャートの左端の外側では、単一クエリ攻撃はすでに偶然と区別がつかないほどです。 攻撃3 — 再識別による単一化 Latanya Sweeneyは2002年に、郵便番号+生年月日+性別でアメリカ人の約87%がユニークに識別できることを示しました。名前がなくてもデータセット内で人を見つけることができます。いくつかの無害な属性があれば十分です。 ギャラリーの3番目の攻撃(attacks/patients_alice.py)は、20人の合成患者でその構造を再現しています。性別と年齢だけでコホートは1人に絞られます。アリス、64歳以上の唯一の女性です。プライバシーオフでは、2つの完全に通常の人口統計ヒストグラムの差分がアリスの診断を正確に回復します。外れ値の値は必要ありません。再識別可能であるだけで十分であり、これがギャラリーの中で最も強力な攻撃となります。プライバシーオンでは、3つの独立した防御がそれを終了させます。フィルターガードは明白な狭いクエリを outright(何も費やさずに)拒否します。キャリブレーションされたノイズが2つのクエリの減算をかき消します(信号対雑音比≈0.13なので、回復された「診断」は本質的にランダムな描画です)。予算は、それが機能するずっと前に平均化のエスカレーションを拒否します(約256回の繰り返しが必要、10回が許容範囲)。これは、このページの上部にあるデモGIFとClaude Desktopウォークスルーがライブで再生する攻撃です。結果はtests/test_attack_patients.pyで回帰テストされています。 これらの実験は、システムのエンジンに対して実行され、保証が本物であり、理解されていること、ライブラリからインポートされて信仰されているだけではないことの核心的な証拠となります。 OpenDPとのクロスチェック 攻撃は、私たち自身の数学に対して保証を検証します。自己整合的だが間違った実装を防ぐために、メカニズムは独立した参照としてOpenDPともクロスチェックされます(attacks/crosscheck_opendp.py、opendp 0.15.1)。要するに、手作業で生成されたメカニズムは、業界標準と10億分の1の精度で一致しており、意図的に誤ってキャリブレーションされたバージョンは同じテストに失敗するため、この一致は意味があります。 詳細:スケールの一致。COUNT、クランプされたSUMについて、公開されたすべての数値に対して。