Pamięć warta posiadania jest pamięcią wartą ochrony. Jeśli system ma przechowywać to, co mu powiedziałeś o diagnozie swojego dziecka, swojej sprawie sądowej czy finansach, to fraza „szyfrowane w spoczynku” — której używa każdy dostawca — zasługuje na surowsze spojrzenie na to, co naprawdę znaczy.
TL;DR
- Każdy plik pamięci i każda wiadomość czatu są szyfrowane kluczem należącym do jednego projektu, nie jednym kluczem dla całej bazy.
- Usunięcie projektu niszczy jego klucz, więc dane stają się nieczytelne także w kopiach zapasowych, nie tylko w systemie produkcyjnym.
- Nie wyszukujemy po szyfrogramie i nie przechowujemy Twojego tekstu w indeksie wyszukiwania. Obie decyzje wynikają z opublikowanych ataków, nie z gustu.
Co zwykle znaczy „szyfrowane w spoczynku”
Najczęściej znaczy to szyfrowanie całego dysku lub woluminu. Dysk jest zaszyfrowany; proces bazy danych trzyma klucz i odszyfrowuje wszystko, co czyta. To broni przed jedną rzeczą — że ktoś fizycznie wyjmie dysk — i przed niemal niczym więcej. Atakujący, który dosięga działającej bazy, skradziona kopia z dołączonym kluczem, zbyt szerokie zapytanie wewnętrzne: we wszystkich tych przypadkach dane są po prostu czytelne, bo z punktu widzenia bazy zawsze takie były.
Dla produktu opartego na pamięci ma to ponadto niewygodną właściwość: jeden klucz otwiera wszystkich. Między Twoim materiałem a materiałem innego klienta nie ma technicznej granicy, tylko poprawnie napisane zapytania.
Klucz na projekt
FocusLM szyfruje na poziomie wiersza, nie dysku. Każdy projekt dostaje własny klucz danych. Każdy plik pamięci, każda jego rewizja i każda wiadomość czatu tego projektu jest szyfrowana tym kluczem i żadnym innym. Wątki czatu, które nie należą do żadnego projektu, są szyfrowane kluczem przestrzeni roboczej, według tej samej zasady.
Te klucze projektów są z kolei szyfrowane jednym kluczem na środowisko, nigdy nie przechowywanym obok danych, które chroni. Ten układ — klucz szyfrujący klucze, które szyfrują dane — to szyfrowanie kopertowe, i jest to standardowa rekomendacja dla hierarchii kluczy w wytycznych zarządzania kluczami NIST. Daje dwie praktyczne rzeczy: rotacja klucza nadrzędnego dotyka jednego małego wiersza na projekt zamiast ponownie szyfrować czyjekolwiek dane, a klucz jednego projektu można zniszczyć osobno.
Powiązanie jest ściślejsze niż „ten sam klucz, ten sam projekt”. Każda zaszyfrowana wartość jest kryptograficznie związana z dokładnym wierszem i projektem, do którego należy, więc szyfrogram skopiowany do innego projektu nie odszyfrowuje się w złym kontekście: nie odszyfrowuje się wcale. Przenoszenie danych między najemcami to nie subtelny błąd, który wychodzi później; to błąd w chwili próby.
Dlaczego nie wyszukujemy po szyfrogramie
Oczywiste życzenie to trzymać wszystko zaszyfrowane i mimo to prowadzić po tym zwykłe wyszukiwanie tekstu. Schematy istnieją — szyfrowanie deterministyczne czyni równe wartości równymi, zachowujące porządek utrzymuje wartości sortowalnymi — i są dokładnie tak wygodne, jak brzmią.
Przeciekają też. Długa linia prac o atakach wnioskujących na bazy szyfrowane z zachowaniem właściwości pokazuje, że gdy szyfrogramy zachowują równość lub porządek, atakujący mający tylko zaszyfrowaną kolumnę i zwykłą statystykę publiczną może odzyskać dużą część tekstu jawnego. Analiza częstotliwości wykonuje większość pracy: w rzeczywistych danych rozkład wartości rzadko jest płaski, a szyfrowanie zachowujące strukturę zachowuje wraz z nią rozkład.
Indeks wyszukiwania nie zawiera Twojego tekstu
Wyszukiwanie semantyczne potrzebuje wektorów, a wektory mają własną historię prywatności — łatwą do zepsucia, bo embedding wygląda jak bezwładna lista liczb.
Nie jest bezwładny. W Text Embeddings Reveal (Almost) As Much As Text Morris i współpracownicy pokazali, że gęste embeddingi można odwrócić do ich pierwotnego tekstu, traktując rekonstrukcję jako kontrolowaną generację i iteracyjnie poprawiając domysł aż ponownie osadzi się w tym samym punkcie. Odzyskali 92% wejść 32-tokenowych dokładnie i wydobyli pełne nazwiska pacjentów z korpusu notatek klinicznych. Późniejsze prace uogólniły atak: generatywny model inwersji potrafi zrekonstruować spójne całe zdania z pojedynczego embeddingu zdania, a badania kontynuacyjne odtworzyły i rozszerzyły wynik.
Usunięcie tekstu nie zamyka jednak tego argumentu, a przedstawianie go jako zamkniętego byłoby nieuczciwe. Sam wektor wciąż tam jest — musi być, bo geometria między wektorami jest właśnie tym, co czyni wyszukiwanie semantyczne możliwym. Zaszyfrowanie go tak, jak szyfrujemy notatkę, nie zostawiłoby niczego do przeszukania.
Następnym krokiem jest więc związanie przestrzeni wektorów z tym samym kluczem projektu, który już chroni treść: wektory każdego projektu leżą w przestrzeni, którą opisuje tylko klucz tego projektu. To utrzymuje wyszukiwanie bez zmian, a zarazem czyni wektory bezużytecznymi we własnych współrzędnych modelu embeddingu — tam, gdzie działają opublikowane ataki inwersji. Podnosi to koszt ataku, zamiast go eliminować, i wolimy to powiedzieć, niż nazywać to szyfrowaniem. Jest w toku, nie wdrożone.
92%krótkich tekstów zrekonstruowanych dokładnie z samych embeddingówKonsekwencja dla produktu pamięci jest bezpośrednia: skradziony indeks wektorów należy traktować jak skradziony tekst jawny. Dlatego indeks FocusLM przechowuje wektor, ścieżkę pliku i kluczowany odcisk — a nie tekst Twoich notatek. Gdy wyszukiwanie trafia, fragment, który czytasz, jest pobierany i odszyfrowywany z zaszyfrowanego magazynu w tym momencie. Indeks wie, gdzie leży coś istotnego; nie wie, co to mówi.
Embedding to nie zanonimizowana wersja Twojego tekstu. To wersja odwracalna.
Usuwanie, które przeżywa kopię zapasową
„Usuń” w większości systemów znaczy oznaczenie wiersza jako usuniętego. Dane pozostają — w tabeli, w nocnym zrzucie, w replice, w dowolnym okresie przechowywania kopii. Dla notatki o chorobie dziecka to nie jest usunięcie w żadnym sensie, który rozpoznałaby pytająca osoba.
Ponieważ każdy projekt ma własny klucz, możemy zrobić coś mocniejszego: usunięcie projektu niszczy ten klucz. Szyfrogram pozostaje tam, gdzie już jest, i nic z niego nie da się już nigdy odczytać — ani w bazie produkcyjnej, ani w migawce zrobionej przed usunięciem. To crypto-shredding, i jest to standardowa odpowiedź na usuwanie w systemach, gdzie fizyczne nadpisanie każdej kopii jest niepraktyczne lub nieweryfikowalne, czyli w każdym systemie rozproszonym z kopiami.
Niedawne prace zaostrzają sprawę specjalnie dla systemów AI. Badanie z 2026 nad bazami wektorów wykazało, że embeddingi jedynie miękko usunięte pozostają rekonstruowalne ze struktury indeksu: usunięcie to flaga, a dane wciąż tam są dla tego, kto czyta plik zamiast pytać silnik zapytań. W połączeniu z inwersją embeddingów miękkie usunięcie w magazynie wektorów to wcale nie usunięcie.
Co uczciwie wciąż jest widoczne
Obietnice szyfrowania warte są dokładnie tyle, ile wyjątków przyznają. Nasze:
- Struktura to nie treść. Nazwy folderów i plików w Twojej pamięci są przechowywane jawnie, bo system je przegląda i stosuje globy. Ścieżka jak
zdrowie/onkologia/…zdradza temat, choć sama notatka jest nieczytelna. - Tytuły czatów. Tytuł wątku jest przechowywany jawnie, żeby pasek boczny mógł go przeszukiwać, i jest generowany z Twojej pierwszej wiadomości. Rozmowa jest zaszyfrowana; zdanie, które ją otworzyło, nie.
- Nazwy plików. Nazwa, którą przesłałeś, podróżuje w kluczu magazynu i w logu operacyjnym, choć zawartość pliku jest zapieczętowana.
- Wektory wyszukiwania, na razie. Dziś leżą w indeksie we własnej przestrzeni modelu embeddingu, przestrzeni, do której stosują się badania nad inwersją. Związanie ich z kluczem projektu to praca opisana powyżej.
- Metadane operacyjne. Który model działał, jak długo trwał, ile kosztował. Nie to, co powiedziano.
Przez wszystkie biegnie wzór: treść jest chroniona, nazwy nie. Ścieżki, tytuły i nazwy plików to to, co system musi czytać, by organizować i znajdować, więc pozostają czytelne. To realna granica, to ta, o której jako użytkownik chcielibyśmy być poinformowani, i to następna rzecz do zrobienia, nie przypis do zbycia machnięciem ręki.
Dlaczego to szczególnie ważne dla produktu pamięci
Asystent czatu, który zapomina Cię między sesjami, trzyma niewiele wartego kradzieży. System zbudowany, by gromadzić rzeczy, do których wracasz raz po raz — ustrukturyzowaną pamięć czyniącą ugruntowane odpowiedzi możliwymi — gromadzi dokładnie ten materiał, który nigdy nie powinien wyciec. Wartość pamięci i jej wrażliwość rosną razem; to ta sama właściwość widziana z dwóch stron.
To powód, by włożyć inżynierię w klucz na projekt, a nie w pole wyboru z napisem „zaszyfrowane”. Im silniejsza pamięć, tym mniej akceptowalna zwykła odpowiedź.
Sources
- Morris et al., Text Embeddings Reveal (Almost) As Much As Text (EMNLP 2023, arXiv:2310.06816)
- Li et al., Sentence Embedding Leaks More Information than You Expect: Generative Embedding Inversion Attack (arXiv:2305.03010)
- Rethinking the Privacy of Text Embeddings: A Reproducibility Study (arXiv:2507.07700)
- Data Inference from Encrypted Databases: A Multi-dimensional Order-Preserving Matching Approach (arXiv:2001.08773)
- Ghost Vectors: Soft-Deleted Embeddings Remain Reconstructible in HNSW Vector Databases (arXiv:2606.18497)
- NIST SP 800-57, Recommendation for Key Management