FocusLM
Wszystkie artykuły

Szyfrowanie pamięci AI: dlaczego klucz na projekt bije klucz na bazę danych

27 lipca 20269 min czytania

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.

Klucz środowiska (KEK)nigdy nie przechowywany obok danychotaczaKlucz projektu AKlucz projektu BPamięć + czat APamięć + czat Bzniszcz ten → A jest nieczytelne wszędzie, także w kopiach
Klucz środowiska otacza osobny klucz danych na projekt. Materiał projektu A jest szyfrowany tylko kluczem A: baza nigdy nie trzyma klucza, który otwiera wszystko.

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.

Dlatego FocusLM odszyfrowuje wewnątrz aplikacji i filtruje tam, zamiast prosić bazę o dopasowanie po szyfrogramie. Koszt jest realny i zasługuje na nazwanie: dosłowne wyszukiwanie czyta wszystkie notatki projektu zamiast pozwolić indeksowi je najpierw zawęzić, więc praca rośnie wraz z rozmiarem Twojej pamięci zamiast pozostawać stała. Wybraliśmy to zamiast kupować wyszukiwalność kosztem trwałego wycieku częstotliwości terminów — które w osobistej pamięci są słowami najważniejszymi.

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ów

Konsekwencja 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.

Crypto-shredding jest naprawdę nieodwracalny, co jest celem i zarazem ryzykiem. Przywrócenie usuniętego projektu z kopii przywraca wiersze, których nikt nie może odczytać. Dlatego FocusLM prosi o wpisanie nazwy projektu, zanim zniknie — to samo tarcie, które chroni destrukcyjną akcję wszędzie indziej.

Co uczciwie wciąż jest widoczne

Obietnice szyfrowania warte są dokładnie tyle, ile wyjątków przyznają. Nasze:

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ź.

Powiązane artykuły