Verifica tu stesso la cifratura zero-knowledge di Vaulted
Non fidarti degli strumenti di sicurezza — verificali. Quattro test nel browser, nessuna installazione, cinque minuti.
La checklist in 60 secondi
Leggi prima questo. La guida dettagliata qui sotto tratta ogni passaggio in profondità.
- 1
Apri DevTools → tab Network
In Vaulted, premi Cmd+Option+I (macOS) o F12 (Windows/Linux). Passa al tab Network e filtra per Fetch/XHR.
- 2
Crea un segreto e ispeziona il POST
Digita una stringa canary riconoscibile (es. CANARY-12345) e clicca su Create. Trova la richiesta POST /api/secrets. Apri il tab Payload — vedrai solo testo cifrato (base64) e iv. Cerca nel body la tua canary; non c'è.
- 3
Ispeziona il link di condivisione
Guarda il link generato. La chiave di cifratura si trova dopo il # (il frammento URL). Secondo RFC 3986, i browser non inviano mai i frammenti al server — né nelle righe di richiesta, né negli header, né nei referrer.
- 4
Conferma che la decifratura avviene lato client
Apri il link in una nuova scheda. La risposta GET da /api/secrets/[id] restituisce solo testo cifrato. Nel pannello Sources, cerca crypto.subtle.decrypt — quella chiamata viene eseguita nel tuo browser, non sul nostro server.
Cosa stai verificando
La promessa di Vaulted è precisa: il server non vede mai il tuo testo in chiaro né la tua chiave di cifratura. Ciò si traduce in quattro proprietà osservabili:
- Il testo in chiaro non appare in nessuna richiesta di rete.
- La chiave di cifratura non appare in nessuna richiesta di rete.
- Il frammento URL (dove risiede la chiave) non raggiunge mai il server.
- I dati lato server da soli non possono ricostruire il segreto.
Se tutte e quattro reggono, l'architettura è zero-knowledge per costruzione — nessun linguaggio di marketing necessario.
Test 1 — Il testo in chiaro non attraversa mai la rete
- Apri vaulted.fyi.
- Apri DevTools e passa al tab Network. Filtra per
Fetch/XHR. - Digita una stringa riconoscibile nel campo segreto — qualcosa come
CANARY-12345. - Clicca su Create.
Vedrai una singola POST a /api/secrets. Cliccaci e guarda il tab Payload.
Il body contiene un campo ciphertext e un campo iv. Entrambi sono blob codificati in base64url. Cerca nel payload CANARY-12345 — non c'è. Il testo in chiaro è stato cifrato nel browser prima che la richiesta venisse inviata.
Se vuoi essere scrupoloso, imposta la limitazione di rete su «Slow 3G» e ripeti. Il testo cifrato appare ancora come rumore; il testo in chiaro non è ancora da nessuna parte.
Test 2 — La chiave non attraversa mai la rete
Dopo aver creato il segreto, Vaulted ti mostra un link di condivisione. Ha questo aspetto:
https://vaulted.fyi/s/abc123#dGhpcyBpcyBhIGtleQ
^^^^^^^^^^^^^^^^^^^^
encryption key (base64url)La parte dopo # è il frammento URL. Secondo RFC 3986, i browser elaborano i frammenti localmente — non appaiono mai nelle righe di richiesta HTTP, negli header o nei referrer.
Per dimostrarlo:
- Copia il link di condivisione.
- Aprilo in una nuova scheda con il tab Network dei DevTools aperto.
- Trova la richiesta
GET /s/abc123. - Guarda il tab Headers — URL completo della richiesta, nessun frammento.
- Guarda il tab Request — nessun frammento.
- Controlla
document.referrernella pagina successiva — frammento rimosso.
La chiave di cui il destinatario ha bisogno per decifrare il segreto era nell'URL, ma è rimasta nel suo browser. Il server ha visto GET /s/abc123 e nient'altro.
Test 3 — Il server da solo non può decifrare
Apri un terminale e curl il segreto direttamente:
curl https://vaulted.fyi/api/secrets/abc123Riceverai un JSON contenente ciphertext e iv. Questo è l'intero stato lato server del tuo segreto.
Ora prova a dargli un senso. Senza la chiave dal frammento URL, non puoi. AES-256-GCM con una chiave casuale generata correttamente è, per tutti gli scopi pratici, indistinguibile dal rumore casuale. Un dump completo del database dai server di Vaulted produrrebbe esattamente questo — blob cifrati e metadati.
Questa è la definizione letterale di zero-knowledge: il server memorizza dati che non può leggere.
Test 4 — La cifratura avviene in JavaScript che puoi vedere
Vaulted usa la Web Crypto API, che è una primitiva del browser — non c'è nessun WASM offuscato o modulo nativo che nasconde il lavoro. Puoi osservare la cifratura mentre avviene.
- Nei DevTools, apri il tab Sources.
- Cerca
crypto.subtle.encrypt(usaCmd+Option+Fper la ricerca globale). - Imposta un breakpoint sulla riga che chiama
crypto.subtle.encrypt. - Avvia la creazione di un nuovo segreto.
- Il breakpoint scatta. Ispeziona gli argomenti: vedrai il tuo testo in chiaro come
Uint8Array, la chiave AES-GCM e un IV casuale fresco. - Avanza oltre la chiamata. Il risultato è il testo cifrato che viene inviato.
Stai ora osservando il testo in chiaro diventare testo cifrato, nel tuo browser, prima di qualsiasi richiesta di rete. Non esiste altro percorso che i dati potrebbero prendere.
Cosa dimostra questo
- Nessun testo in chiaro lascia il browser. Test 1.
- Nessuna chiave lascia il browser. Test 2.
- Il server non può decifrare con ciò che memorizza. Test 3.
- La cifratura è reale e avviene lato client. Test 4.
Questa è l'intera promessa zero-knowledge, dimostrata su un sistema di produzione in esecuzione in cinque minuti.
Cosa non dimostra
La verifica è un lavoro onesto — vale la pena essere chiari sui suoi limiti.
- I test dimostrano il comportamento in questo momento. Una modifica futura al codice potrebbe violare questa proprietà. Se hai bisogno di garanzie continuative, iscriviti al changelog e riesegui i test periodicamente.
- Non proteggono dal tuo dispositivo. Un keylogger o un'estensione browser malevola può leggere il testo in chiaro dopo la decifratura. Questo è al di fuori del controllo di qualsiasi web app.
- Presuppongono che il JavaScript eseguito sia il JavaScript servito da Vaulted. Un attaccante mirato che ha compromesso la CDN potrebbe servire un bundle diverso a un singolo utente. Subresource Integrity e build riproducibili mitigano questo; vedi il nostro modello di minaccia per tutti i dettagli.
Approfondire
Se vuoi scavare più a fondo:
- Leggi il nostro approfondimento sulla cifratura zero-knowledge per l'implementazione crittografica completa.
- Prova l'Encryption Playground per osservare AES-256-GCM passo dopo passo.
- Confronta con la cifratura lato server e decidi quale modello si adatta al tuo modello di minaccia.
L'argomento più forte per uno strumento di sicurezza non è il suo marketing. È che puoi smontarlo e confermare che fa ciò che dice. Vaulted è costruito in modo che tu possa farlo.