Marzaduri Secure Messages

Trasparenza

Non fidarti di noi: verifica

Un servizio di messaggi riservati è credibile solo se chiunque può controllare, da solo, che il gestore non è in grado di leggere i messaggi. Questa pagina spiega come farlo, passo per passo, con i riferimenti agli standard internazionali su cui si basa il sistema.

In breve

Non hai bisogno di fidarti di chi gestisce il servizio. La riservatezza non dipende da una promessa del gestore, ma dal modo in cui il sistema è costruito: il gestore non è tecnicamente in grado di leggere i messaggi, e chiunque può verificarlo con i metodi descritti in questa pagina.

Ogni affermazione, con la sua prova

Non devi fidarti di chi gestisce il servizio, né di questa pagina. Ogni garanzia qui sotto è accompagnata dal modo in cui puoi dimostrarla da solo. Dove una cosa non è dimostrabile dall'esterno (come per qualunque servizio online), lo diciamo, e spieghiamo perché non incide sulla riservatezza dei messaggi.

AffermazioneCome si dimostra
1. Il testo viene cifrato sul tuo dispositivo, prima di partire.Strumenti del browser (F12 → Rete): nella richiesta messages il tuo testo non compare, solo dati cifrati. Vedi la prova in 2 minuti. Nel codice pubblico la cifratura è nella funzione che chiama crypto.subtle.encrypt, prima dell'invio.
2. La chiave non arriva mai al server.F12 → Rete: l'indirizzo delle richieste è /m/IDENTIFICATIVO, senza la parte dopo il #, e la chiave non è nel contenuto inviato. È il comportamento previsto per tutti i browser dallo standard RFC 3986, §3.5.
3. Il gestore non può leggere i messaggi.È la conseguenza diretta delle prove 1 e 2: il server possiede solo dati cifrati con AES-256-GCM (NIST SP 800-38D) e non possiede la chiave. Decifrare senza la chiave non è praticabile, come per i sistemi bancari che usano lo stesso standard.
4. Il programma che stai usando è quello pubblicato.La tabella delle impronte confronta dal vivo i file ricevuti con le impronte ufficiali dell'archivio pubblico. La pagina carica il programma con il controllo di integrità del browser (W3C SRI). Con la versione offline usi un file che hai verificato tu e che il server non può cambiare.
5. Nessun cookie, nessun tracciamento, nessuno script di terzi.F12 → Applicazione (o Archiviazione) → Cookie: l'elenco è vuoto. F12 → Rete: tutte le richieste vanno solo a marzadurisecure.com. L'intestazione Content-Security-Policy (F12 → Rete → Intestazioni) vieta al browser di caricare qualsiasi risorsa esterna.
6. Un messaggio si apre una sola volta.Prova diretta: apri lo stesso link due volte; la seconda volta il messaggio non esiste più. Il codice del server, pubblicato nell'archivio pubblico, legge e cancella con un'unica istruzione (DELETE … RETURNING). Limite dichiarato: chi visita il sito non può ispezionare il server. Ma anche se il server conservasse una copia del dato cifrato, senza la chiave resterebbe illeggibile (prova 3).
7. Il servizio non registra gli indirizzi IP.Non dimostrabile dall'esterno, per questo come per qualunque servizio online: nessun visitatore può vedere dentro un server. Per questo la riservatezza del contenuto non dipende da questa dichiarazione, ma solo dalle prove 1-4. Chi vuole nascondere anche il proprio indirizzo IP può usare una VPN o Tor Browser: il servizio funziona ugualmente.

Come funziona, passo per passo

  1. Generazione della chiave. Il tuo browser crea una chiave casuale di 256 bit con il generatore crittografico del sistema (crypto.getRandomValues, previsto dallo standard W3C Web Cryptography API). La chiave nasce sul tuo dispositivo e non viene mai inviata.
  2. Cifratura. Il testo viene cifrato con AES-256-GCM, l'algoritmo standardizzato dal NIST (SP 800-38D) e usato da banche e governi. GCM garantisce anche l'integrità: se qualcuno alterasse anche un solo carattere del dato cifrato, la decifratura fallirebbe.
  3. Password facoltativa. Se aggiungi una password, viene trasformata con PBKDF2-HMAC-SHA-256 a 600.000 iterazioni (RFC 8018), il valore raccomandato da OWASP. Chiave del link e password vengono combinate con HKDF-SHA-256 (RFC 5869): servono entrambe per leggere il messaggio.
  4. Invio. Al server arrivano solo: il testo cifrato, un numero casuale tecnico (IV), un'«impronta di verifica» derivata dalla chiave (che non permette di decifrare, ma serve a impedire che chi non ha il link completo distrugga il messaggio), l'indicazione della presenza di una password e la scadenza. Nient'altro.
  5. Il link. Il link ha la forma https://marzadurisecure.com/m/IDENTIFICATIVO#CHIAVE. Secondo lo standard degli indirizzi web (RFC 3986, §3.5), la parte dopo il # è elaborata solo dal browser e non viene inclusa nelle richieste inviate al server.
  6. Lettura e distruzione. Quando il destinatario conferma l'apertura, il server consegna il dato cifrato e lo cancella nella stessa istruzione del database (DELETE … RETURNING): non esiste un momento in cui il messaggio sia stato letto ma non ancora cancellato. La decifratura avviene nel browser del destinatario.
  7. Scadenza. I messaggi mai aperti vengono eliminati automaticamente alla scadenza scelta (1 ora, 24 ore o 7 giorni), con un controllo orario.

Provalo tu in 2 minuti, senza competenze tecniche

Puoi osservare con i tuoi occhi cosa esce dal tuo computer, usando gli strumenti già presenti in ogni browser (Chrome, Edge, Firefox) da computer.

  1. Apri marzadurisecure.com, premi F12 (su Mac: Cmd+Opzione+I) e scegli la scheda Rete (o Network).
  2. Scrivi un messaggio di prova riconoscibile, per esempio PROVA-123, e premi «Cifra e genera il link».
  3. Nell'elenco compare la richiesta messages. Cliccala e apri Payload (o Richiesta): vedrai solo ct, iv, auth, pw e ttl. La parola PROVA-123 non c'è, e non c'è nemmeno la chiave che compare nel link dopo il #.
  4. Puoi cercare la tua parola in tutto il traffico: in Chrome, Ctrl+F dentro la scheda Rete. Non la troverai.
  5. Apri il link in un'altra finestra con la scheda Rete aperta: la richiesta della pagina ha l'indirizzo /m/IDENTIFICATIVO, senza la parte dopo il #. La richiesta open riceve dal server solo il blocco cifrato, che il tuo browser decifra.

Dopo aver creato un messaggio, la pagina stessa ti mostra anche il riquadro «Guarda cosa ha ricevuto il server», con il contenuto esatto della richiesta.

Il codice è pubblico e ha un'impronta digitale

Ogni file del programma ha un'impronta SHA-256: una sequenza di 64 caratteri che cambia completamente se nel file cambia anche una sola virgola. Le impronte ufficiali sono pubblicate insieme al codice sorgente nell'archivio pubblico:

Qui sotto il tuo browser scarica in questo momento i file che il sito sta usando, ne calcola l'impronta e la confronta con quella ufficiale. Confronta anche tu i valori con quelli pubblicati nell'archivio pubblico: quella è la fonte che il gestore del sito non può modificare di nascosto.

FileImpronta SHA-256 ufficialeCalcolata ora

Da riga di comando: curl -s https://marzadurisecure.com/app.js | sha256sum (Windows: scarica il file e usa certutil -hashfile app.js SHA256). Inoltre la pagina principale carica il programma con il controllo di integrità del browser (Subresource Integrity, W3C): se il file del programma non corrispondesse all'impronta indicata nella pagina, il browser si rifiuterebbe di eseguirlo.

Versione offline: la garanzia più forte

Qualsiasi sito web, per sua natura, invia al tuo browser il programma ogni volta che lo apri. In teoria, chi controlla il server potrebbe un giorno inviare un programma diverso. Per eliminare anche questo dubbio puoi usare una copia del programma salvata sul tuo computer:

  1. Scarica il file marzaduri-secure-offline.html.
  2. Controlla una volta che la sua impronta SHA-256 corrisponda a quella pubblicata nell'archivio pubblico (riga «versione offline» della tabella sopra).
  3. Aprilo con doppio clic: funziona nel tuo browser come il sito. Per scrivere un messaggio usalo normalmente; per leggere un link ricevuto, incollalo nel riquadro «Hai ricevuto un link? Aprilo qui».

Con la versione offline la cifratura e la decifratura le esegue il file che hai sul tuo computer e che hai verificato: il server riceve e consegna solo dati cifrati, e non ha alcun modo di cambiare il programma che stai usando. I link creati dalla versione offline si aprono normalmente anche dal sito.

Limiti, detti con chiarezza, e come sono risolti

«Chi gestisce il server potrebbe cambiare il programma»

È il limite di ogni servizio web, non solo di questo. Soluzione: codice pubblico con impronte verificabili da chiunque, controllo di integrità nel browser e, soprattutto, la versione offline, che il server non può modificare.

«Il server vede il mio indirizzo IP»

Ogni connessione Internet mostra un indirizzo IP. Il gestore dichiara di non registrare gli indirizzi IP (dichiarazione non dimostrabile dall'esterno: vedi la prova 7); la rete Cloudflare, che ospita il servizio, tratta gli IP per motivi di sicurezza. Soluzione: se vuoi nascondere anche il tuo IP, puoi usare una VPN o Tor Browser: il servizio funziona ugualmente e non le blocca.

«E se qualcuno intercetta il link?»

Chi ha il link completo può leggere il messaggio, ma solo una volta. Soluzione: aggiungi una password e comunicala per un'altra via (es. link per e-mail, password a voce). Se il destinatario trova «messaggio non esiste più» senza averlo aperto, sai con certezza che qualcuno l'ha letto prima: cambia subito ciò che conteneva.

«Il destinatario può copiare il messaggio»

Chi legge un testo può sempre trascriverlo o fotografarlo: nessuna tecnologia lo impedisce. Soluzione: il servizio garantisce che il messaggio non resti in nessun archivio, chat o casella e-mail; la scelta del destinatario resta tua.

«E se il mio telefono o computer è infetto?»

Un programma spia installato sul dispositivo può vedere tutto ciò che scrivi o leggi, con qualsiasi servizio. Soluzione: usa dispositivi aggiornati e, per informazioni critiche, verifica che anche il destinatario lo faccia.

Ruolo del gestore e richieste delle autorità

Il ruolo del gestore, i dati effettivamente esistenti, le condizioni d'uso, la segnalazione di abusi e la procedura per le richieste delle autorità sono descritti nella pagina Note legali e autorità.

Hai trovato un problema di sicurezza?

Scrivi a security@marzadurisecure.com. Le segnalazioni vengono esaminate con priorità. Il contatto è pubblicato anche nel file standard /.well-known/security.txt (RFC 9116).

Riferimenti

Lo stesso principio (cifratura nel browser e chiave nella parte del link dopo il #) è adottato da servizi noti come PrivateBin e Bitwarden Send.