Una memoria che vale la pena avere è una memoria che vale la pena proteggere. Se un sistema conserverà ciò che gli avete raccontato sulla diagnosi di vostro figlio, sulla vostra causa legale o sulle vostre finanze, allora la formula « cifrato a riposo » — quella che usa ogni fornitore — merita uno sguardo più severo su cosa significhi davvero.
TL;DR
- Ogni file di memoria e ogni messaggio di chat è cifrato con una chiave che appartiene a un solo progetto, non con un'unica chiave per l'intero database.
- Eliminare un progetto ne distrugge la chiave, così i dati diventano illeggibili anche nei backup, non solo nel sistema in produzione.
- Non cerchiamo su testo cifrato e non memorizziamo il vostro testo nell'indice di ricerca. Entrambe le scelte derivano da attacchi pubblicati, non dal gusto.
Cosa significa di solito « cifrato a riposo »
Il più delle volte significa cifratura dell'intero disco o volume. Il disco è cifrato; il processo del database detiene la chiave e decifra tutto ciò che legge. Questo difende da una cosa sola — che qualcuno rimuova fisicamente il disco — e da quasi nient'altro. Un attaccante che raggiunge il database in esecuzione, un backup rubato che porta con sé la chiave, una query interna troppo ampia: in tutti questi casi i dati sono leggibili senz'altro, perché dal punto di vista del database lo sono sempre stati.
Per un prodotto costruito sulla memoria ha inoltre una proprietà scomoda: una chiave apre tutti. Non c'è confine tecnico tra il vostro materiale e quello di un altro cliente, solo query scritte correttamente.
Una chiave per progetto
FocusLM cifra a livello di riga, non di disco. Ogni progetto riceve la propria chiave dei dati. Ogni file di memoria, ogni sua revisione e ogni messaggio della chat di quel progetto è cifrato con quella chiave e nessun'altra. I thread di chat che non appartengono a nessun progetto sono cifrati con una chiave dello spazio di lavoro, per lo stesso principio.
Quelle chiavi per progetto sono a loro volta cifrate da un'unica chiave per ambiente, mai conservata accanto ai dati che protegge. Questa disposizione — una chiave che cifra chiavi, che cifrano dati — è la cifratura a busta, ed è la raccomandazione standard per le gerarchie di chiavi nelle linee guida sulla gestione delle chiavi del NIST. Porta due cose pratiche: ruotare la chiave superiore tocca una piccola riga per progetto anziché ricifrare i dati di chiunque, e la chiave di un singolo progetto può essere distrutta da sola.
Il legame è più stretto di « stessa chiave, stesso progetto ». Ogni valore cifrato è legato crittograficamente alla riga e al progetto esatti a cui appartiene, così un testo cifrato copiato in un altro progetto non si decifra nel contesto sbagliato: non si decifra affatto. Spostare dati tra tenant non è un bug sottile che emerge dopo; è un errore nel momento stesso del tentativo.
Perché non cerchiamo su testo cifrato
Il desiderio ovvio è tenere tutto cifrato ed eseguire comunque una ricerca testuale ordinaria. Gli schemi esistono — la cifratura deterministica rende uguali i valori uguali, quella che preserva l'ordine mantiene i valori ordinabili — e sono comodi esattamente quanto sembrano.
E perdono anche. Una lunga serie di lavori sugli attacchi di inferenza contro database cifrati che preservano proprietà mostra che, quando i testi cifrati preservano l'uguaglianza o l'ordine, un attaccante che dispone solo della colonna cifrata e di comune statistica pubblica può recuperare gran parte del testo in chiaro. L'analisi delle frequenze fa quasi tutto il lavoro: nei dati reali la distribuzione dei valori è raramente piatta, e una cifratura che preserva la struttura preserva con essa la distribuzione.
L'indice di ricerca non contiene il vostro testo
La ricerca semantica ha bisogno di vettori, e i vettori hanno una loro storia di privacy — facile da sbagliare, perché un embedding sembra un elenco inerte di numeri.
Non è inerte. In Text Embeddings Reveal (Almost) As Much As Text, Morris e colleghi hanno mostrato che gli embedding densi possono essere invertiti nel loro testo originale trattando la ricostruzione come generazione controllata e correggendo iterativamente un'ipotesi finché non si re-embedda nello stesso punto. Hanno recuperato il 92% degli input da 32 token in modo esattoe ricavato nomi completi di pazienti da un corpus di note cliniche. Lavori successivi hanno generalizzato l'attacco: un modello di inversione generativo può ricostruire intere frasi coerenti da un singolo embedding di frase, e studi di follow-up hanno riprodotto ed esteso il risultato.
Rimuovere il testo, però, non chiude quell'argomento, e presentarlo come tale sarebbe disonesto. Il vettore stesso è ancora lì— deve esserlo, perché la geometria tra i vettori è esattamente ciò che rende possibile la ricerca semantica. Cifrarlo come cifriamo una nota non lascerebbe nulla da cercare.
Il passo successivo è quindi legare lo spazio dei vettori alla stessa chiave per progetto che già protegge il contenuto: i vettori di ogni progetto risiedono in uno spazio che solo la chiave di quel progetto descrive. Questo mantiene la ricerca invariata e al contempo rende i vettori inutilizzabili nelle coordinate proprie del modello di embedding — dove operano gli attacchi di inversione pubblicati. Alza il costo di un attacco invece di eliminarlo, e preferiamo dirlo piuttosto che chiamarlo cifratura. È in corso, non rilasciato.
92%dei testi brevi ricostruiti in modo esatto dai soli embeddingLa conseguenza per un prodotto di memoria è diretta: un indice di vettori rubato va trattato come testo in chiaro rubato. Per questo l'indice di FocusLM memorizza il vettore, il percorso del file e un'impronta con chiave — e non il testo delle vostre note. Quando una ricerca trova corrispondenza, lo snippet che leggete viene recuperato e decifrato dall'archivio cifrato in quel momento. L'indice sa dove si trova qualcosa di rilevante; non sa cosa dice.
Un embedding non è una versione anonimizzata del vostro testo. È una reversibile.
Un'eliminazione che sopravvive al backup
« Eliminare », nella maggior parte dei sistemi, significa contrassegnare una riga come eliminata. I dati restano — nella tabella, nel dump di ieri sera, nella replica, in qualunque conservazione abbiano i backup. Per una nota sulla malattia di un figlio, questa non è un'eliminazione in alcun senso che la persona che la richiede riconoscerebbe.
Poiché ogni progetto ha la propria chiave, possiamo fare qualcosa di più forte: eliminare un progetto distrugge quella chiave. Il testo cifrato resta dove già si trova, e nulla di esso può più essere letto — né nel database in produzione, né in uno snapshot preso prima dell'eliminazione. Questo è il crypto-shredding, ed è la risposta standard alla cancellazione nei sistemi in cui sovrascrivere fisicamente ogni copia è impraticabile o non verificabile, cioè ogni sistema distribuito con backup.
Lavori recenti affinano il caso specificamente per i sistemi di IA. Uno studio del 2026 sui database di vettori ha rilevato che gli embedding semplicemente eliminati in modo logicorestano ricostruibili dalla struttura dell'indice: l'eliminazione è un flag, e i dati sono ancora lì per chi legge il file invece di interrogare il motore di query. Combinato con l'inversione degli embedding, un soft-delete in un archivio di vettori non è affatto un delete.
Cosa resta onestamente visibile
Le promesse di cifratura valgono esattamente quanto le eccezioni che ammettono. Le nostre:
- La struttura non è contenuto.I nomi di cartelle e file nella vostra memoria sono conservati in chiaro, perché il sistema li sfoglia e vi applica il glob. Un percorso come
salute/oncologia/…rivela un tema anche se la nota stessa è illeggibile. - Titoli delle chat.Il titolo di un thread è conservato in chiaro perché la barra laterale possa cercarlo, ed è generato dal vostro primo messaggio. La conversazione è cifrata; la frase che l'ha aperta no.
- Nomi dei file.Il nome che avete caricato viaggia nella chiave di archiviazione e nel log operativo, anche se il contenuto del file è sigillato.
- I vettori di ricerca, per ora.Oggi stanno nell'indice nello spazio proprio del modello di embedding, lo spazio a cui si applica la ricerca sull'inversione. Legarli alla chiave del progetto è il lavoro descritto sopra.
- Metadati operativi.Quale modello ha girato, quanto è durato, quanto è costato. Non ciò che è stato detto.
Un motivo li attraversa: il contenuto è protetto, i nomi no. Percorsi, titoli e nomi di file sono ciò che il sistema deve leggere per organizzare e trovare, quindi restano leggibili. È un limite reale, è quello di cui vorremmo essere avvisati come utenti, ed è la prossima cosa su cui lavorare, non una nota a piè di pagina da liquidare.
Perché questo conta in particolare per un prodotto di memoria
Un assistente di chat che vi dimentica tra una sessione e l'altra detiene poco che valga la pena rubare. Un sistema costruito per accumulare le cose a cui tornate di continuo — la memoria strutturata che rende possibili risposte fondate — accumula esattamente il materiale che non dovrebbe mai trapelare. Il valore della memoria e la sua sensibilità crescono insieme; sono la stessa proprietà vista da due lati.
È la ragione per mettere l'ingegneria in una chiave per progetto invece che in una casella che dice cifrato. Più forte è la memoria, meno accettabile è la risposta ordinaria.
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