Questo è il punto centrale della demo. Tre passaggi da tenere ben presenti:
Nel log vedi esplicitamente “Cosa invii TU al server”, “Il server NON decifra” e “Cosa invia il server a Google”: sono le righe STEP 4 che confermano che il server non sa mai cosa c’è scritto.
La demo riordina sempre i passaggi in ordine logico (1→2→3→4→5→6). Anche se i dati arrivano in ordine diverso (es. il dispositivo riceve prima che il pannello finisca di scrivere), qui vedi sempre STEP 1, 2, 3, 4, 5, 6 in fila.
Lo stesso flusso che vedi nel log, raccontato in una riga per fase. Ogni punto corrisponde a uno STEP nel log sopra.
In ogni passaggio chi è coinvolto vede solo ciò che gli serve; il contenuto della notifica in chiaro non esce mai dal mittente e dal destinatario.
[ISCRIZIONE] — Quando un dispositivo si iscrive (clic su «Genera chiavi e attiva notifiche»): nel log vedi l’avvio (generazione chiavi), il token FCM, tutto il payload inviato al server (domain, push_token, public_key, firebase_project_id) e la conferma. Nel log push_token e public_key (e poi enc/ephem) sono sempre evidenziati con lo stesso colore: così si capisce subito che tutto è cifratura e nessuno vede mai nulla in chiaro. La chiave privata non viene mai inviata; solo la public_key va al server.
[DISISCRIZIONE] — Quando un dispositivo viene rimosso (pulsante «Rimuovi»): nel log vedi l’invio a delete_encrypted_device.php (domain, token_hash) e la conferma di rimozione. Da quel momento quel device non riceve più push cifrate.
STEP 1 e STEP 2 — Ti dicono cosa ha messo a disposizione il dispositivo (la chiave pubblica) e qual è il messaggio in chiaro prima di cifrarlo. Da STEP 3 in poi quel testo non è più visibile a nessuno tranne che al destinatario alla fine.
STEP 3 e STEP 4 — Cifratura e invio (righe in viola). Nel log compaiono esplicitamente: «Cosa invii TU al server» (solo enc/ephem, nessun testo in chiaro), «Il server NON decifra» (inoltra senza mai leggere), «Cosa invia il server a Google» (gli stessi dati cifrati). Così è chiaro che in nessun punto il server sa cosa c’è scritto. enc è il messaggio già cifrato; ephem è la chiave effimera. Le righe in viola sono l’anteprima di enc/ephem (ciò che tu mandi al server e che il server manda a FCM).
STEP 5 e STEP 6 — Ricezione e decifratura. STEP 5 conferma che FCM ha recapitato il payload cifrato al dispositivo. STEP 6 è il momento in cui il dispositivo usa la chiave privata e trasforma enc/ephem in titolo e corpo leggibili; nel log vedi anche il contenuto in chiaro (title="...", body="..."). Solo qui il messaggio torna leggibile.
In una frase: il messaggio parte in chiaro (STEP 2), viene cifrato (STEP 3-4), viaggia cifrato (STEP 4→5), e torna in chiaro solo sul dispositivo (STEP 6). È la crittografia end-to-end (E2EE): server e Google non vedono mai il contenuto.