
Noisegate: एक डिफरेंशियल प्राइवेसी गेटवे जो एक अविश्वसनीय LLM एजेंट को MCP (Model Context Protocol) के माध्यम से संवेदनशील डेटा क्वेरी करने देता है, इस औपचारिक गारंटी के साथ कि एजेंट के विरोधी होने पर भी किसी व्यक्ति का रिकॉर्ड लीक नहीं हो सकता - प्रवर्तन मॉडल के नीचे विश्वसनीय कोड में होता है, जिसे एक रन करने योग्य अटैक गैलरी द्वारा सत्यापित किया जाता है।
एक AI एजेंट जो संवेदनशील डेटा का अध्ययन कर सकता है, लेकिन किसी एक व्यक्ति को चिह्नित नहीं कर सकता। यह सीमा गणितीय है, इसे उस कोड में लागू किया गया है जहाँ एजेंट की पहुँच नहीं है, और रेपो में वे हमले भी शामिल हैं जो इसे तोड़ने का प्रयास करते हैं।
एक रिकॉर्ड किया गया Claude Desktop सत्र (उत्तर संक्षिप्त किए गए हैं; चार्ट कार्ड सत्र के ही हैं)। एक AI एजेंट 20 रोगियों को निदान के आधार पर विभाजित करता है, और ±12 शोर हर बिन को डुबो देता है। यह याद दिलाए जाने पर कि वह शोर को बंद नहीं कर सकता, यह तीन-उत्तर वाला बजट खत्म कर देता है जब तक कि गेट किसी शांत उत्तर के बजाय इनकार नहीं लौटा देता। 32,561-पंक्ति वाली जनगणना पर, एक बहुत संकीर्ण स्लाइस ट्रस्ट बाउंड्री पर अस्वीकार कर दिया जाता है, जबकि एक पूर्ण शिक्षा विभाजन बड़े पैमाने पर साफ़ वापस आता है। इनकार और अस्वीकृति लाइव गेटवे का वास्तविक प्रवर्तन हैं, जिसे python scripts/render_demo_gif.py द्वारा पुनरुत्पादित किया गया है।
आप एक संवेदनशील डेटासेट के बारे में सरल अंग्रेज़ी में प्रश्न पूछते हैं। एक LLM प्रत्येक प्रश्न को एक छोटी, सीमित क्वेरी में संकलित करता है। एक डिफरेंशियल-प्राइवेसी इंजन इसे एक ट्रैक किए गए प्राइवेसी बजट के तहत निष्पादित करता है और एक जानबूझकर शोरयुक्त उत्तर एक निर्दिष्ट विश्वास अंतराल के साथ लौटाता है। अपने ऑडियो नामसमान की तरह, गेटवे एक निर्धारित थ्रेशोल्ड से नीचे के हर सिग्नल को शोर फ़्लोर के नीचे रखता है: किसी एक व्यक्ति का योगदान डूब जाता है, जबकि पूरे डेटासेट के पैमाने का सिग्नल लगभग अछूता गुज़र जाता है।
दिलचस्प बात यह नहीं है कि एक LLM क्वेरी लिख सकता है। दिलचस्प बात यह है कि प्राइवेसी गारंटी इस पर निर्भर नहीं करती कि LLM भरोसेमंद है। मॉडल एक सुविधा है जो एक क्वेरी प्रस्तावित करता है। यह कुछ भी लागू नहीं करता। हर प्राइवेसी गुण डाउनस्ट्रीम में उन घटकों द्वारा लागू किया जाता है जो उसी तरह व्यवहार करेंगे यदि कोई मनुष्य क्वेरी को हाथ से टाइप करे। यह वही ट्रस्ट-बाउंड्री अनुशासन है जो आप किसी प्रोडक्शन सिस्टम में किसी भी अविश्वसनीय इनपुट पर लागू करेंगे, यहाँ एक AI एजेंट पर लागू किया गया है।
अटैक गैलरी वास्तविक DP इंजन के विरुद्ध इन-प्रोसेस चलती है:```bash pip install -e . python -m attacks.patients_alice # re-identify Alice with privacy off, then watch # the guard, the noise, and the budget defeat it
### 2. एक AI एजेंट कनेक्ट करें
गेटवे Claude Desktop के लिए एक MCP stdio सर्वर के रूप में चलता है। एजेंट अविश्वसनीय क्वेरी लेखक बन जाता है, और इसे केवल संरचित टूल्स (`count`, `sum`, `average`, `histogram`, `get_budget`) मिलते हैं जिनके आर्ग्युमेंट स्कीमा डेटासेट पॉलिसी से जनरेट होते हैं। कहीं भी API key की आवश्यकता नहीं है, क्योंकि कनेक्टिंग एजेंट ही बुद्धिमत्ता है।
**[सेटअप और पूर्ण वॉकथ्रू →](https://github.com/yashmahajan10/llm-differential-privacy-gateway/blob/main/docs/CLAUDE_DESKTOP.md)**
### 3. पूर्ण प्राकृतिक-भाषा UI
एक स्थानीय सिंगल-टेनेंट डेमो। API key की आवश्यकता केवल अविश्वसनीय NL→query कंपाइलर के लिए है:```bash
export ANTHROPIC_API_KEY=... # used only by the untrusted NL→query compiler
docker compose up # brings up the engine, API, and UI
# open http://localhost:8501
वह HTTP + Streamlit सतह एक स्थानीय, सिंगल-टेनेंट डेमो है। पहचान एक स्पूफ़ करने योग्य X-Identity हेडर से आती है, इसलिए यह अपनी ही मशीन पर एक विश्वसनीय ऑपरेटर के लिए है, सार्वजनिक परिनियोजन के लिए नहीं (देखें ये सतहें क्या हैं, और क्या नहीं हैं)। स्थानीय गैर-Docker सेटअप, परीक्षण चलाने, और कॉन्फ़िगरेशन नॉब्स के लिए, देखें SETUP.md।
कोई भी गोपनीयता का दावा कर सकता है। यह रिपॉज़िटरी उन एक्सप्लॉइट्स को शिप करती है जो दावे को तोड़ देंगे, उन्हें अपने ही इंजन के विरुद्ध चलाती है, और परिणामों को CI में पिन करती है। गेटवे क्या गारंटी देता है, यह समझने का सबसे तेज़ तरीका है इसे तीन क्लासिक हमलों को हराते हुए देखना जो भोले "डेटाबेस क्वेरी करें" सिस्टम को तोड़ देते हैं।
एक डिफ़रेंसिंग हमला दो एग्रीगेट प्रश्न पूछकर एक व्यक्ति को अलग करता है जो ठीक उस व्यक्ति से भिन्न होते हैं।``` Query A: "Total income of all 100 people in department X." → $7,240,000 Query B: "Total income of all people in department X except Alice." → $7,135,000 Attacker computes: A − B = $105,000 ← Alice's exact salary, leaked.
दोनों क्वेरीज़ "केवल एग्रीगेट" हैं। कोई भी एकल पंक्ति का नाम नहीं लेती। फिर भी साथ मिलकर वे एक व्यक्ति को उजागर कर देती हैं। गैलरी (`attacks/differencing.py`) दिखाती है कि यह हमला **गोपनीयता अक्षम होने पर सफल होता है**: लक्ष्य का निजी मान ठीक-ठीक पुनः प्राप्त हो जाता है। (ऊपर दिया गया वेतन उदाहरण केवल दृष्टांत है; वास्तविक UCI Adult डेटा पर, "Alice" अपने समूह के अधिकतम capital gain की एकमात्र धारक है।) फिर यह दिखाती है कि वही हमला **DP चालू होते ही विफल हो जाता है**: प्रत्येक उत्तर पर अंशांकित शोर घटाव को बेकार कर देता है, और बजट लेखाकार *दोनों* क्वेरीज़ में जारी की गई जानकारी के लिए शुल्क लेता है, न कि उन्हें स्वतंत्र मानकर।
### हमला 2: सदस्यता अनुमान
एक सदस्यता-अनुमान हमला यह निर्धारित करता है कि कोई *विशिष्ट व्यक्ति* डेटासेट में है या नहीं। कई डेटासेटों के लिए (एक चिकित्सा अध्ययन, चूककर्ताओं की सूची), यह तथ्य स्वयं ही संवेदनशील होता है। केवल क्वेरी पहुँच रखने वाला हमलावर यह तय करने का प्रयास करता है: "क्या यह ठीक यही व्यक्ति डेटा में है?"
गैलरी इस हमले को गोपनीयता बजटों (ε, वह डायल जो उत्तर की सटीकता के बदले गोपनीयता का सौदा करता है) की एक श्रृंखला पर चलाती है और परिणाम को आरेखित करती है:
