Der Index weiß mehr, als der Nutzer wissen darf
Der Assistent bediente drei Abteilungen aus einem Index und filterte Dokumente heraus, die ein Nutzer nicht sehen darf. Es funktionierte — und ein Kollege zeigte an einem Vormittag, dass sich um die Filterung herum schließen lässt.
Der Entwurf, der in Ordnung aussah
Ein Index über alle Dokumente und ein Filter auf den Kandidatensatz, sodass ein Nutzer nur Passagen aus Dokumenten sieht, die seine Rolle erlaubt. Das ist der naheliegende Entwurf, die meisten Vektordatenbanken unterstützen ihn direkt, und er bestand unsere eigene Prüfung.
Ein Kollege verbrachte einen Vormittag damit und produzierte zwei Wege, über gesperrte Inhalte etwas zu erfahren, ohne sie zu sehen. Keiner war raffiniert. Beide sind Eigenschaften des Entwurfs und keine Fehler darin.
Was leckt, ohne dass ein Dokument leckt
Das Erste ist Abwesenheit. Stellt man eine konkrete Frage zu einem Projekt, von dem man nichts wissen soll, verhält sich ein System mit einem gesperrten Dokument dazu anders als eines ohne: Formulierung der Ablehnung, die Passagen, auf die es ausweicht, und die benötigte Zeit unterscheiden sich.
Das Zweite ist die Rangfolge. Werden die besten Treffer herausgefiltert, bleibt der vierte, fünfte und sechstbeste — und die sind oft benachbart genug, um die Gestalt des Entfernten zu beschreiben. Keines offenbart ein Dokument. Beide beantworten Fragen, auf die ein Nutzer keinen Anspruch hatte.
Die Forschung und was sie leistet
Tang und Kollegen veröffentlichten 2026 eine Arbeit zu differentiell privatem Retrieval-Augmented Generation, die formale Datenschutzgarantien auf den Abrufschritt anwendet, statt Zugriffskontrolle als Filter über Ergebnissen zu behandeln.
Übernommen haben wir die Rahmung, dass Filtern nach dem Abruf den Abruf selbst beobachtbar lässt. Formale Garantien sind schwereres Gerät, als unsere Lage brauchte — und die Beobachtung, dass das Leck im Abruf sitzt und nicht in der Ausgabe, hat unseren Entwurf umgelenkt.
| Ansatz | Was er schützt |
|---|---|
| Ergebnisse nach dem Abruf filtern | Den Dokumenttext. Nicht seine Existenz |
| Kandidaten vor dem Ranking filtern | Besser, Rangfolge bleibt beobachtbar |
| Eigener Index je Rechtemenge | Existenz und Rangfolge. Unsere Wahl |
| Formale Datenschutzgarantien | Am stärksten. Mehr, als wir brauchten |
Was wir geändert haben
Getrennte Indizes je Rechtemenge. Die Anfrage eines Nutzers erreicht nur einen Index mit Dokumenten, die er sehen darf — Abwesenheit ist damit wirklich Abwesenheit, und die beobachtete Rangfolge ist die über seinen eigenen Bestand.
Es kostet mehr: drei Indizes statt einem, manche Dokumente mehrfach abgelegt und ein Aufbauprozess, der das Rechtemodell kennen muss. Bei diesem Bestand waren das rund vierzig Prozent mehr Speicher und eine längere Aufnahme, was der Kunde sofort akzeptierte, nachdem die zwei Vorführungen gezeigt worden waren.
Warum nicht einfach ein Index je Nutzer
Weil es nicht skaliert und weil Rechte nicht je Nutzer vergeben sind. Es gab drei sinnvolle Rechtemengen, nicht vierhundert Nutzer, und je Menge zu bauen hält die Zahl der Indizes proportional zur Richtlinie statt zur Belegschaft.
Wo ein Rechtemodell wirklich je Nutzer gilt, scheitert dieser Ansatz, und es braucht etwas, das der formalen Arbeit näher steht. Das haben wir nicht gebaut, und wir würden es sagen, statt Vorhandenes an eine Lage anzupassen, in die es nicht passt.
Das Detail mit der Zeit
Auch mit getrennten Indizes ist eine Anfrage, die nichts liefert, schneller als eine, die etwas liefert. Dieser Unterschied ist klein, wir haben ihn gemessen, und in diesem System fehlt niemandem mit Zugang zum Assistenten das Wissen, dass es die Abteilungen gibt.
Wir haben diese Begründung aufgeschrieben, statt sie implizit zu lassen — denn es ist die Art akzeptierten Risikos, die später wie ein Versäumnis aussieht. Das Dokument sagt, wogegen wir nicht geschützt haben und warum der Kunde es für vertretbar hielt.
Wie das hätte auffallen müssen
Indem man fragt, was ein Angreifer erfährt, statt was er sieht. Unsere Prüfung hatte kontrolliert, dass Dokumente die Grenze nicht überschreiten, was sie nicht taten — und nie gefragt, was ein Nutzer aus dem Verhalten des Systems schließen kann.
Diese Frage steht heute auf der Prüfliste, neben den Zeitfragen, die wir nach dem Cache-Vorfall ergänzt haben. Beide stammen aus demselben blinden Fleck: Prüfungen sehen auf Nutzlasten, und Information überquert Grenzen auch anders.
Was wir nicht behaupten
Wir behaupten nicht, getrennte Indizes seien ausreichend. Sie schließen Abwesenheit und Rangfolge. Anfragemuster, Kostenzuordnung und gemeinsame Modell-Caches sind weitere Kanäle, und ein entschlossener interner Angreifer mit Zeit ist nicht der, wogegen das schützt.
Wir behaupten auch nicht, die Vorführungen unseres Kollegen seien erschöpfend. Er fand zwei an einem Vormittag — eine Untergrenze dessen, was existiert, und keine Messung. Die ehrliche Lesart ist, dass öfter jemand einen Vormittag darauf verwenden sollte.
