Introductie van Rampart

Kort samengevat (TL;DR)

Rampart is ontwikkeld door National Design Studio en draait volledig in de browser. Het systeem identificeert en verwijdert persoonsgegevens voordat een bericht wordt verzonden. Door een combinatie van deterministische regels en machine learning biedt Rampart privacybescherming binnen enkele milliseconden.

---

Wanneer u tekst invoert in een chatbot, onthult u mogelijk meer over uzelf dan u van plan was. Een verzoek om een e-mail op te schonen bevat uw naam en die van uw collega; een vraag over een medische rekening bevat uw adres en rekeningnummer; een uiting van frustratie onthult wie u bent en waar u woont. Bovendien blijft alles wat u typt niet bij u — het wordt verzonden naar een externe server die u niet kunt inspecteren.

Ons kernprincipe voor ontwerp is dat de enige persoonsgegevens waarvan u zeker kunt weten dat ze privé blijven, de gegevens zijn die uw apparaat nooit verlaten.

Vandaag maken we Rampart open source. Dit is een eerste-generatie filteringsysteem voor persoonsgegevens op het apparaat zelf, dat dient als een sterke eerste verdedigingslinie om te garanderen dat uw persoonlijke informatie uw apparaat nooit verlaat. Rampart is een combinatie van een deterministische laag, gebaseerd op reguliere expressies om burgerservicenummers (SSN's) en ID-nummers te vangen, en MiniLM om namen en straatadressen te herkennen.

Waarom we Rampart hebben gebouwd

Het verwijderen van PII (Personally Identifiable Information) betekent vaak dat u moet vertrouwen op een externe server of binaries naar de client moet downloaden. Dit brengt enkele belangrijke uitdagingen met zich mee:

  1. Privacygaranties van AI zijn vrijwel onmogelijk te verifiëren. Vanuit fundamentele principes is het onmogelijk om de privacy- en beveiligingsclaims van AI-leveranciers te verifiëren. Een nieuw uitgerolde versie van een AI-runtime kan per ongeluk gevoelige gebruikersinformatie gaan loggen, en diensten brengen onbekende interne beveiligingsrisico's met zich mee, zoals zero-day kwetsbaarheden en interne dreigingen.
  2. De meeste modellen voor PII-verwijdering zijn gigantisch, waardoor slechts een kleine groep gebruikers er baat bij heeft. Zo is de OpenAI Privacy Filter ongeveer 2,8 GB, wat bij een relatief trage verbinding (10mbps) ongeveer 38 minuten zou duren om naar een browser te downloaden.

Hoe het werkt

Alles gebeurt in de browser, in het moment tussen het typen van een bericht en het verzenden ervan; er is geen server betrokken in dit proces.

Technische specificaties:

  • Modelgrootte (inclusief tokenizer): 14,7 MB
  • p50 runtime latentie in de browser (WebGPU): 3,9 ms
  • Recall van privétermen (zeven talen): 98,4%

Voordat het bericht wordt verzonden, scannen twee 'lezers' de tekst op uw apparaat:

De eerste is een set regels. Reguliere expressies in combinatie met echte validaties verwerken informatie met een vaste structuur: burgerservicenummers, creditcards, telefoonnummers, rekeningnummers, e-mailadressen, IP-adressen en overheids-ID's. Dit proces is deterministisch en snel.

De tweede is een klein taalmodel. Regels kunnen niet elk naam of straatadres voorzien. Daarom leest MiniLM de zin om persoonsgegevens te identificeren met een dieper begrip van de context, waarna de informatie binnen een specifieke categorie wordt gemaskeerd.

Voorbeeld

Stel dat u een zin vol persoonsgegevens in een chat typt:

Origineel: "Mijn naam is Maria Garcia, mijn burgerservicenummer is 123-45-6789, en ik verdien $1.950 per maand. Kunt u me helpen betaalbare huisvesting te vinden?"

Na maskering door Rampart: "Mijn naam is [GIVEN_NAME] [SURNAME], mijn burgerservicenummer is [SSN], en ik verdien $1.950 per maand. Kunt u me helpen betaalbare huisvesting te vinden?"

De browser slaat de relevante PII tijdelijk op uw eigen apparaat op om de leegtes later weer in te vullen.

Benchmarks

We hebben Rampart getraind op de OpenPII 1.5M dataset van AI4Privacy en een synthetische generator die alle 17 entiteitstypes versterkt met opzettelijk 'rommelige' chat-stijl input. De onderstaande cijfers komen uit een testset van 30.000 rijen (OpenPII slice) verspreid over zeven talen met Latijns schrift.

SysteemMethodeGrootteRecall
RampartDeterministisch + model14,7 MB98,42%
OpenAI Privacy FilterModel~2,8 GB97,4%
GLiNER small v2.1Model~600 MB94,2%
Community BERT-small PIIModel~29 MB81,5%
Microsoft PresidioDeterministisch + model~13 MB65%
AWS Bedrock GuardrailsModel (Cloud)Cloud63,8%

Private-term recall op een testset van 30.000 rijen over zeven ondersteunde talen. Hoger is beter.

Beperkingen

Rampart is een alfa-product en is bedoeld als de eerste verdedigingslinie in een bredere inspanning om persoonsgegevens in AI-chatervaringen te beheren. Het ondersteunt momenteel Engels, Spaans, Frans, Duits, Italiaans, Portugees en Nederlands.

Aan de slag

U kunt het model downloaden op HuggingFace, de NPM-bibliotheek installeren of het whitepaper lezen.

Codevoorbeeld (chat.ts)

import { createGuard } from "@nationaldesignstudio/rampart";

const guard = await createGuard();

const safe = await guard.protect(
  "My name is John Wick. I live at 88 Cedar Lane, Brookvale, CT 06482.",
);

console.log(safe.text);
// "My name is [GIVEN_NAME_1]. I live at [BUILDING_NUMBER_1] [STREET_NAME_1], Brookvale, CT 06482."

const reply = await llm(safe.text);
console.log(guard.reveal(reply));

async function llm(text: string): Promise<string> {
  return "Thanks [GIVEN_NAME_1], Brookvale CT 06482 works for eligibility.";
}
// "Thanks John Wick, Brookvale CT 06482 works for eligibility."