Sicurezza

Ultimo aggiornamento: 15 marzo 2026

Crediamo che gli strumenti per la privacy debbano essere trasparenti su come proteggono i tuoi dati, non solo che lo fanno. Questa pagina spiega esattamente cosa succede quando utilizzi Privacy First Labs — con sufficiente dettaglio perché un ingegnere della sicurezza possa valutarlo, ma leggibile da chiunque.

Il Principio Fondamentale

I tuoi dati non lasciano mai il tuo dispositivo. Ogni strumento di Privacy First Labs elabora i dati interamente nel tuo browser utilizzando Web API standard. Nessun file viene caricato. Nessun testo in chiaro viene trasmesso. Nessuna elaborazione lato server avviene.

Questa non è una politica — è una garanzia architetturale. I nostri strumenti sono pagine statiche servite da Cloudflare Pages. Non esiste alcun server applicativo, nessun database e nessun endpoint API che accetti i tuoi dati. Puoi verificarlo tu stesso aprendo la scheda di rete del tuo browser mentre utilizzi qualsiasi strumento.

Crittografia di SafeSeal

SafeSeal ti permette di crittografare segreti (password, chiavi API, credenziali) con una password e condividerli come link o file. Ecco esattamente come funziona.

Algoritmo di Crittografia

Utilizziamo AES-256-GCM (Advanced Encryption Standard con chiavi a 256 bit in Galois/Counter Mode) tramite la Web Crypto API nativa del browser. È lo stesso standard di crittografia utilizzato da governi, banche e applicazioni di sicurezza critica in tutto il mondo.

  • AES-256 garantisce la riservatezza — il tuo segreto è illeggibile senza la chiave
  • GCM mode garantisce l'autenticazione — qualsiasi manomissione dei dati crittografati viene rilevata e rifiutata
  • La Web Crypto API è un'implementazione nativa del browser, non una libreria JavaScript di terze parti che potrebbe essere compromessa

Derivazione della Chiave

La tua password non viene mai utilizzata direttamente come chiave di crittografia. Al suo posto, deriviamo una chiave crittografica da essa utilizzando PBKDF2 (Password-Based Key Derivation Function 2):

  • Funzione hash: SHA-256
  • Iterazioni: 600.000 — il minimo raccomandato da OWASP (2023) per SHA-256
  • Salt: 16 byte di dati crittograficamente casuali, unici per ogni crittografia
  • Risultato: Una chiave AES a 256 bit

L'elevato numero di iterazioni significa che, anche se un attaccante ottiene i dati crittografati, forzare la password è computazionalmente costoso. Il salt casuale garantisce che password identiche producano chiavi diverse.

Processo di Crittografia

Quando fai clic su "Crittografa", quanto segue avviene interamente nel tuo browser:

  1. Un salt casuale di 16 byte viene generato usando crypto.getRandomValues()
  2. Un vettore di inizializzazione (IV) casuale di 12 byte viene generato usando crypto.getRandomValues()
  3. La tua password + il salt vengono elaborati tramite PBKDF2 (600.000 iterazioni) per produrre una chiave AES a 256 bit
  4. Il tuo segreto viene crittografato con AES-256-GCM utilizzando la chiave derivata e l'IV
  5. Il risultato include un tag di autenticazione di 16 byte (verifica di integrità di GCM)

Sia il salt che l'IV vengono generati casualmente per ogni crittografia. Ciò significa che crittografare lo stesso segreto con la stessa password due volte produce un testo cifrato completamente diverso.

Modalità Link

In modalità link, i dati crittografati vengono codificati nel frammento dell'URL (la parte dopo #):

privacyfirstlabs.io/safeseal/#1.<salt>.<iv>.<ciphertext>

Il frammento dell'URL non viene mai inviato a nessun server. Questa non è una nostra scelta — è il funzionamento del protocollo HTTP. Secondo la RFC 3986 (Section 3.5), l'identificatore di frammento viene elaborato interamente dal client. Quando apri il link, il tuo browser richiede /safeseal/ dal nostro server — la parte #... rimane nel tuo browser.

I componenti sono codificati usando base64url (RFC 4648, Section 5) per l'inclusione sicura negli URL.

Modalità File

In modalità file, i dati crittografati vengono impacchettati in un file binario compatto .pflenc:

  • Byte 0: versione del formato (attualmente 1)
  • Byte 1–16: salt
  • Byte 17–28: IV
  • Byte 29+: testo cifrato (incluso il tag di autenticazione GCM)

Prima della crittografia, il nome del file originale viene incorporato nel payload utilizzando un header compatto: un prefisso di lunghezza di 2 byte seguito dal nome del file in UTF-8, seguito dai dati del file. Ciò significa che il nome del file originale viene sempre recuperato alla decrittazione — il destinatario riceve il file con il suo nome e la sua estensione originali.

Il file viene generato interamente nel tuo browser e scaricato sul tuo dispositivo. Non viene mai caricato né archiviato sui nostri server. Condividi il file attraverso il canale che preferisci.

Privacy del Nome File

Per impostazione predefinita, i file crittografati vengono scaricati come originalname.pflenc — facilitando l'identificazione del file. Se preferisci non rivelare il nome del file, l'opzione "Nascondi nome file" scarica il file come secret.pflenc.

Il nome del file originale è sempre crittografato all'interno del payload .pflenc, indipendentemente da questa impostazione. Alla decrittazione, il destinatario recupera sempre il nome del file originale dai dati crittografati. La casella "Nascondi nome file" controlla solo il nome del file .pflenc esterno durante il download — non influisce sul contenuto crittografato.

Processo di Decrittazione

Quando il destinatario apre il link o carica il file .pflenc:

  1. Il salt, l'IV e il testo cifrato vengono estratti dal frammento dell'URL o dal file
  2. Il destinatario inserisce la password
  3. PBKDF2 deriva la stessa chiave AES dalla password + salt (600.000 iterazioni)
  4. AES-256-GCM decrittografa il testo cifrato e verifica il tag di autenticazione
  5. Se la password è errata o i dati sono stati manomessi, la decrittazione fallisce con un errore generico

Il messaggio di errore intenzionalmente non rivela quale controllo è fallito (password errata vs. dati corrotti). Ciò impedisce agli attaccanti di utilizzare le differenze negli errori per ottenere informazioni sulla crittografia.

Cosa Vede il Nostro Server

Per SafeSeal — nulla. Il nostro server consegna file statici HTML, CSS e JavaScript. Non riceve, non elabora e non archivia:

  • Il tuo testo segreto
  • La tua password di crittografia
  • I dati crittografati
  • La chiave di decrittazione
  • Alcun frammento di URL (tecnicamente impossibile — i browser non inviano frammenti ai server)

Anche se i nostri server fossero compromessi, un attaccante otterrebbe solo i file statici del sito — mai i tuoi dati crittografati o le tue chiavi.

Cosa Non Possiamo Fare

A causa della nostra architettura a conoscenza zero:

  • Non possiamo decrittografare i tuoi segreti — non abbiamo mai le chiavi
  • Non possiamo recuperare la tua password — esiste solo sul tuo dispositivo e su quello del destinatario
  • Non possiamo soddisfare richieste di produrre testo in chiaro — non lo possediamo
  • Non possiamo sapere se un link è stato utilizzato o quante volte — non abbiamo alcun tracciamento

Questo è intenzionale. La responsabilità della gestione delle chiavi è tua e del tuo destinatario. Se la password viene persa, il segreto è irrecuperabile.

Verificalo Tu Stesso

Non devi fidarti della nostra parola. Ecco come verificare le nostre affermazioni:

  • Scheda di rete: Apri gli Strumenti per Sviluppatori del tuo browser (F12), vai alla scheda Rete e utilizza SafeSeal. Vedrai zero richieste di rete contenenti il tuo segreto o dati crittografati
  • Codice sorgente: Il nostro modulo di crittografia è progettato per il rilascio open-source. La logica centrale utilizza esclusivamente la Web Crypto API nativa del browser — nessuna libreria crittografica di terze parti
  • Test offline: Disconnettiti da internet, poi crittografa e decrittografa un segreto. Funziona — perché nulla lascia mai il tuo browser

Isolamento dell'Elaborazione

Tutte le operazioni computazionalmente intensive (derivazione della chiave, crittografia, decrittazione) vengono eseguite nei Web Workers — thread di background isolati che:

  • Mantengono l'interfaccia reattiva durante l'esecuzione delle 600.000 iterazioni di PBKDF2
  • Non hanno accesso al DOM né al contesto JavaScript principale della pagina
  • Vengono creati per operazione e terminati immediatamente dopo il completamento
  • Non conservano alcun dato tra le operazioni

Considerazioni sulla Sicurezza

Robustezza della Password

La sicurezza del tuo segreto crittografato dipende dalla tua password. Richiediamo un minimo di 8 caratteri, ma raccomandiamo fortemente l'uso di una passphrase più lunga. PBKDF2 con 600.000 iterazioni fornisce una protezione significativa contro gli attacchi di forza bruta, ma una password debole (come "password123") può comunque essere indovinata.

Condivisione dei Link

Quando si utilizza la modalità link, i dati crittografati sono nell'URL. Chiunque abbia accesso all'URL completo ha i dati crittografati (anche se ha comunque bisogno della password per decrittografarli). Condividi i link attraverso canali sicuri e condividi sempre la password attraverso un canale diverso da quello del link.

Sicurezza del Browser

La crittografia lato client dipende da un ambiente browser sicuro. Se il tuo browser o dispositivo è compromesso (malware, estensioni malevole), le garanzie di crittografia potrebbero non essere valide. Mantieni il tuo browser e il tuo sistema operativo aggiornati.

Nessun Forward Secrecy

Se un attaccante cattura il link o il file crittografato e successivamente ottiene la password, può decrittografare il segreto. Per casi d'uso altamente sensibili, considera di ruotare le password e di utilizzare metodi di condivisione a breve durata.

Riepilogo Tecnico

Crittografia AES-256-GCM (Web Crypto API)
Derivazione della chiave PBKDF2-SHA-256, 600,000 iterations
Salt 16 byte, crittograficamente casuale, unico per crittografia
IV 12 byte, crittograficamente casuale, unico per crittografia
Autenticazione GCM mode (128-bit auth tag, included in ciphertext)
Trasporto della chiave URL fragment (never sent to server) or .pflenc file (downloaded locally)
Coinvolgimento del server None — static site only
Libreria crittografica Browser-native Web Crypto API (no third-party dependencies)
Browser supportati Last 2 versions of Chrome, Firefox, Safari, Edge (ES2022)

Domande?

Se hai domande sulla nostra implementazione della crittografia, hai trovato una potenziale vulnerabilità o desideri discutere della nostra architettura di sicurezza:

Privacy First Labs
security@privacyfirstlabs.io

Accogliamo la divulgazione responsabile e ci impegniamo ad affrontare le problematiche di sicurezza tempestivamente.