Liturgia di Profanazione001

Documento LIT-001

Il Concilio del Dato Consumabile

Un database in cui conoscere un fatto significa renderlo meno conoscibile per chi verrà dopo.

Il dato sopravvive finché nessuno gli domanda di essere preciso.

Il dogma

Leggere un dato non deve modificarlo.

È una delle convinzioni più profonde dell’informatica. Non compare sempre nei manuali come principio esplicito, ma attraversa istruzioni di memoria, filesystem, database, debugger, API e modelli di autorizzazione. Una lettura può essere lenta, concorrente o incompleta; non dovrebbe però cambiare ciò che ha osservato.

Il dogma è utile perché separa conoscenza e azione. Possiamo controllare un saldo senza diminuirlo, ispezionare una configurazione senza alterarla, verificare un backup senza consumarlo. Le letture ripetibili rendono possibili debugging, audit, calcolo puro, cache, replica e ricerca scientifica. Senza questa separazione, ogni osservazione diventerebbe una transazione concorrente e ogni strumento diagnostico potrebbe causare il guasto che tenta di spiegare.

La sua origine contiene però un’ironia. Nelle memorie a nuclei magnetici la lettura era fisicamente distruttiva: per rilevare un bit, il nucleo veniva portato a zero. L’hardware doveva quindi riscriverlo immediatamente. Il ciclo read/restore trasformò una distruzione reale in una lettura apparentemente passiva. Quella maschera sopravvisse alla tecnologia che l’aveva resa necessaria e diventò un’aspettativa universale. Il Computer History Museum descrive il meccanismo.

Nei database contemporanei l’aspettativa è consacrata da SELECT, transazioni read-only e snapshot MVCC. La modifica è un evento esplicito e autorizzato; la lettura è trattata come un potere minore. Ma un lettore può copiare, correlare, classificare e prendere decisioni. Può estrarre valore senza lasciare nel dato alcun segno del costo imposto agli osservatori futuri.

È questo, e non l’utilità della lettura passiva, il punto sottoposto a processo.

L’eresia

Ogni lettura informativa deve rendere il dato strettamente meno preciso per ogni lettore futuro.

La negazione non prescrive di cancellare un record dopo l’uso. Propone qualcosa di più graduale: il dato deve attraversare stati ordinati di crescente incertezza.

Un numero inizialmente conservato come 91 può diventare [90,91] dopo la prima lettura, [88,91] dopo la seconda e [88,95] dopo la terza. Una stringa può perdere caratteri: Ada, poi ·da, poi ··a. Un valore enumerato può espandersi da admin a {admin, user} e infine all’intero dominio.

Il sistema non aggiunge semplicemente rumore alla risposta mantenendo intatto l’originale. Sostituisce lo stato sorgente con una rappresentazione meno informativa. Il futuro del dato cambia davvero.

Ogni query diventa così una transazione di scrittura. Le colonne usate nei predicati vengono consumate anche quando non appaiono nel risultato, perché il sistema ha dovuto osservarle per decidere quali righe restituire. Una query fallita non consuma nulla; una risposta già consegnata non può essere recuperata mediante rollback. Un retry con lo stesso identificatore riceve soltanto la ricevuta dell’operazione, non una seconda copia della risposta.

Questa semantica non offre automaticamente una garanzia crittografica. Un amministratore che abbia conservato uno snapshot, un dump di memoria o una replica clandestina può restaurare il dogma. Il prototipo deve quindi essere giudicato per ciò che realmente dimostra: il comportamento di un sistema in cui la precisione è una risorsa consumabile, non l’impossibilità fisica della copia digitale.

Il mondo profanato

La prima conseguenza riguarda l’autorità. Un permesso read-only non sarebbe più innocuo: autorizzerebbe a spendere la precisione disponibile per tutti. Le ACL dovrebbero indicare non soltanto quali campi possono essere osservati, ma quanto futuro informativo un soggetto può distruggere. Consultare un archivio diventerebbe più simile a prelevare una risorsa che a guardare attraverso una finestra.

La seconda riguarda i query planner. Oggi due piani equivalenti possono differire per tempo, memoria e I/O, ma dovrebbero produrre lo stesso effetto logico. Nel mondo profanato, un full scan consuma più celle di una ricerca indicizzata. Il piano non è più un dettaglio prestazionale: decide quali fatti sopravviveranno. Un indice preserva alcune parti dell’archivio evitando letture superflue, ma deve essere sottoposto alla stessa erosione per non diventare una copia franca.

La terza conseguenza è la rivalità fra osservatori. Il primo lettore riceve una precisione che il secondo non può ottenere. Un’università, un tribunale o un’azienda potrebbero competere per il diritto di formulare la prima domanda. Nascono immediatamente due comportamenti opposti: pianificazione collettiva delle query e sabotaggio mediante interrogazioni inutili. Il nuovo denial of service non rende il database indisponibile; lo rende progressivamente incapace di distinguere ipotesi.

La quarta conseguenza riguarda gli archivi. Non conserverebbero più un passato intatto, ma un insieme finito di domande ancora rispondibili. Decidere quali ricerche autorizzare significherebbe decidere quale passato potrà continuare a esistere con precisione. Una testimonianza potrebbe rivelare una volta luoghi e nomi necessari a un’indagine, per poi conservarne soltanto una versione meno identificabile.

Infine cambierebbe il debugging. Osservare una variabile consumerebbe parte della sua risoluzione; una sessione diagnostica potrebbe compromettere quella successiva. I debugger dovrebbero dichiarare la superficie informativa toccata e ricorrere a modelli controfattuali quando l’ispezione diretta fosse troppo costosa. L’effetto osservatore, oggi trattato come fastidio accidentale, diventerebbe parte dichiarata della semantica.

La reliquia

La reliquia è CINDER/1, un archivio locale a lettura erosiva.

Il suo scopo è verificare se una perdita graduata e guidata dalle query possa limitare l’estrazione cumulativa senza rendere il dataset inutile dopo un singolo accesso. Non è destinato a contabilità, cartelle cliniche, controllo industriale o prove legali. È un laboratorio per workload sintetici, giochi sistemici, arte computazionale e ricerca sulla governance dell’informazione.

Le entità fondamentali sono archivio, record, cella tipata, query, piano di dipendenze e ricevuta. Ogni cella rappresenta un insieme di valori ancora possibili:

{
  "score": {
    "kind": "number",
    "lo": 91,
    "hi": 91,
    "domain": [0, 100],
    "epoch": 0
  }
}

Per i numeri, l’erosione amplia intervalli allineati di dimensione crescente. Per il testo sostituisce caratteri con wildcard. Per gli enum aggiunge alternative possibili. La funzione deve essere monotona: lo stato successivo può contenere più possibilità, mai meno.

Il ciclo di una query comprende cinque passaggi:

il planner determina tutte le celle necessarie;

la risposta viene calcolata sullo stato corrente;

ogni cella informativa toccata viene degradata;

il nuovo stato e una ricevuta concatenata vengono persistiti atomicamente;

soltanto allora la risposta viene consegnata.

I predicati operano in logica trivalente. Se una cella numerica contiene [88,91], la domanda score >= 90 non è falsa né vera: è unknown. Il sistema non inventa una probabilità e non sceglie arbitrariamente un lato.

Gli input sono record tipati e sequenze di query. Gli output comprendono valori esatti, intervalli, stringhe mascherate, insiemi di alternative, risultati incerti e ricevute. Lo stato attraversa il ciclo preciso → grossolano → ambiguo → esaurito.

Le proprietà ottenute sono scarsità informativa nativa, limitazione dell’osservazione cumulativa e contabilizzazione delle dipendenze reali di una query. Vengono sacrificate repeatable read, caching trasparente, rollback dopo l’esposizione, disponibilità durante una partizione e idempotenza della risposta.

Il comportamento potenzialmente emergente non è la degradazione stessa, che è programmata. È il modo in cui osservatori concorrenti adattano le proprie domande: possono imparare a usare indici e proiezioni minime, negoziare query collettive oppure bruciare deliberatamente attributi contesi. L’ordine delle interrogazioni produce paesaggi informativi differenti anche quando dataset e funzione di erosione restano identici.

Esistono parenti tecnici, e ignorarli renderebbe la reliquia soltanto una rinominazione. Alcuni sistemi implementano destructive reads che restituiscono e cancellano un record, spesso per code exactly-once. La privacy differenziale tratta la perdita di privacy come budget cumulativo, ma normalmente conserva il database esatto. PrivateKube ha mostrato che tale budget può essere schedulato come risorsa non rinnovabile. USENIX OSDI. Vanish rende i dati inaccessibili dopo un intervallo temporale. USENIX Security.

La differenza di CINDER è la combinazione fra degradazione graduata dello stato sorgente, dipendenze del piano, logica trivalente e vantaggio globale del primo lettore. Se questi elementi vengono ridotti a un contatore o a un trigger DELETE, l’esperimento fallisce.

Il miracolo

Il miracolo si verificherebbe se un workload disciplinato conservasse utilità collettiva più a lungo di un archivio delete-on-read, esponendo al tempo stesso meno informazione cumulativa di un database normale.

Immaginiamo tre gruppi che interrogano lo stesso dataset. Il primo usa proiezioni minime e indici; il secondo esegue scansioni complete; il terzo tenta di estrarre tutto. Se CINDER ha valore, il primo gruppo dovrebbe ottenere molte decisioni utili per unità di precisione consumata, mentre il terzo dovrebbe deteriorare rapidamente la propria stessa sorgente. Le parti del dataset ignorate dovrebbero restare esatte indipendentemente dal tempo trascorso.

Non sarebbe un miracolo se il risultato dipendesse da workload scritti appositamente per favorire l’erosione, se l’utilità fosse definita dallo stesso algoritmo che degrada i dati o se il comportamento sparisse permutando l’ordine delle query. In quel caso avremmo soltanto vincoli arbitrari glorificati.

La ferita

La ferita inevitabile è il privilegio del primo lettore.

Non può essere eliminato con un’interfaccia migliore. Lotterie, quote, assemblee o prezzi possono decidere chi lo riceve, ma qualcuno deve comunque osservare lo stato più preciso. Se due soggetti ottenessero la stessa informazione integra, la prima lettura non avrebbe impoverito la seconda e il dogma sarebbe restaurato.

Questa asimmetria rende possibile il peggior abuso del sistema: un attore autorizzato consulta per primo informazioni sensibili, conserva privatamente le risposte e lascia agli altri un archivio incapace di verificarle. L’erosione protegge dal riuso perpetuo, ma può anche trasformare la precisione in monopolio.

Il costo non è laterale. È la stessa proprietà che rende interessante l’esperimento.

L’officina

Il prototipo può essere costruito in meno di una settimana con Python e sola standard library.

Componenti: reticoli tipati, planner di dipendenze, esecutore atomico, persistenza JSON, ricevute SHA-256, CLI e suite di property test.

Modello dati: numeri come intervalli inclusivi; testi come vettori di caratteri o wildcard; enum come insiemi crescenti di possibilità. Ogni cella conserva dominio ed epoca di erosione.

Ciclo principale:

execute(query, operation_id):
    if operation_id was already committed:
        return receipt without answer

    dependencies = plan(query)
    answer = evaluate(query, current_state)
    next_state = degrade(current_state, dependencies)

    assert every informative dependency lost precision
    atomically persist(next_state, receipt)

    return answer

La prima verifica è l’invariante:

possible_values(cell_before)
    ⊂ possible_values(cell_after)

Una cella satura non può essere letta nuovamente. Un’operazione composta consuma l’unione delle proprie dipendenze. Un crash dopo il commit e prima della consegna perde la risposta ma non annulla l’erosione.

Le metriche principali sono:

risposte utili prima dell’esaurimento;

informazione ottenuta per unità distrutta;

percentuale di predicati divenuti unknown;

superficie di celle consumate per query;

divergenza fra ordini di workload;

concentrazione del vantaggio del primo lettore.

Il criterio di successo richiede che, su workload non noti al progettista, CINDER mantenga più utilità di delete-on-read e riduca l’esposizione cumulativa rispetto a un database immutabile. Deve inoltre produrre adattamenti osservabili nelle strategie di interrogazione.

Il criterio di fallimento è netto: se l’effetto coincide con un TTL, un budget azzerabile o rumore aggiunto all’output; se nessuna strategia migliora il rapporto fra utilità e consumo; oppure se i risultati interessanti sono stati incorporati direttamente nella funzione di degradazione, CINDER è soltanto un database reso peggiore.

La contaminazione

Un’adozione limitata potrebbe avere un uso liberatorio. Archivi di testimonianze, dati personali o opere digitali potrebbero concedere informazioni necessarie senza trasformarle automaticamente in sorveglianza permanente.

L’adozione istituzionale introdurrebbe invece mercati della prima lettura, sabotaggio mediante query e disuguaglianza fra chi può interrogare presto e chi deve verificare tardi. Un governo potrebbe presentare l’erosione come tutela della privacy mentre la usa per rendere incerta la prova delle proprie decisioni.

La conseguenza ambigua sarebbe una società capace di dimenticare abbastanza da impedire persecuzioni ereditarie, ma anche abbastanza da non poterle più dimostrare. Nessuna metrica tecnica potrebbe classificare da sola quel risultato.

Sentenza

Tecnologia blasfema realizzabile.

CINDER/1 non infrange fisicamente la copiabilità dell’informazione e non sostituisce crittografia, privacy differenziale o controllo degli accessi. Possiede tuttavia un nucleo tecnico autonomo e falsificabile: la query modifica irreversibilmente il reticolo informativo delle proprie dipendenze. Il prototipo è economico, i fallimenti sono misurabili e la ferita non può essere mitigata senza negare l’esperimento. Deve essere costruito, ma non assolto.

Dogma: Leggere un dato non deve modificarlo.

Eresia: Ogni lettura informativa deve rendere il dato strettamente meno preciso per ogni lettore futuro.

Reliquia: CINDER/1 è un archivio in cui query e predicati consumano irreversibilmente la precisione delle celle osservate.

Ferita: Il primo lettore ottiene una verità che nessun lettore successivo può verificare nelle stesse condizioni.

La seconda risposta è ciò che la prima ha permesso di dimenticare.

Torna all’indice

Fonti e parentele tecniche

  1. Computer History Museum — Whirlwind e la memoria a nuclei
  2. USENIX OSDI ’21 — Privacy Budget Scheduling
  3. USENIX Security ’09 — Vanish