Guida completa all'uso di MyDeviceGuard

🧭 Indice

1. Cos'è MyDeviceGuard

MyDeviceGuard è una Progressive Web App (PWA) pensata per tenere sotto controllo la sicurezza dei tuoi device personali: laptop, desktop, smartphone, tablet. Si installa dal browser come una qualunque app e funziona offline, senza account e senza cloud.

Le funzioni principali sono quattro:

💡 Chi dovrebbe usarla. Chiunque voglia avere una dashboard personale, sempre a portata di mano, per monitorare se il proprio device è stato manipolato, se ha permessi attivi che non dovrebbe avere, o per tenere traccia di quando viene usato.

2. Privacy: come funziona davvero

Questo è forse il punto più importante del manuale. MyDeviceGuard è stato progettato con un principio non negoziabile: i tuoi dati non devono lasciare il tuo device.

Dove stanno i tuoi dati

Tutto quello che fai — sessioni del tracker, risultati degli audit, alert di sicurezza, dispositivi HID approvati, device remoti accoppiati — viene salvato esclusivamente nella memoria del tuo browser, in due strutture chiamate IndexedDB e localStorage. Sono spazi locali che appartengono a te e a questo browser, come fossero una cartella privata nel disco.

Quando disinstalli la PWA o "cancelli dati sito" dalle impostazioni browser, tutti i dati spariscono dal tuo device. Non esistono altrove.

Cosa NON facciamo

Le uniche tre eccezioni al "tutto locale"

  1. Il server che ospita l'app ti manda i file HTML/JS/CSS la prima volta che apri il link. Dopo il service worker li tiene in cache e il server non sa più se, quando o come usi la PWA.
  2. Signaling P2P: quando accoppi due device via WebRTC, un server pubblico di terze parti (PeerJS) fa da "centralino" solo per mettere in contatto i due peer. I dati dell'applicazione non passano da lì, e comunque sono cifrati due volte (DTLS a livello trasporto + AES-GCM a livello applicativo con chiave generata al pairing).
  3. Server STUN/TURN di Google per aiutare il WebRTC a superare i NAT. Anche qui, nessun dato applicativo.
🛡️ In sintesi: nemmeno io, che ho scritto il codice, posso vedere nulla di quello che fai. Se vuoi la certezza totale, puoi clonare il repository GitHub, fare il tuo deploy e usare solo il tuo server.

3. Primo avvio

La prima volta che apri MyDeviceGuard, la schermata Home ti chiede due cose:

  1. Un nome per questo device. Ad esempio "MacBook personale", "iPhone", "PC ufficio". Questo nome è visibile solo a te e serve a distinguere i tuoi dispositivi quando li accoppi tra loro.
  2. Il tipo di device (laptop, desktop, smartphone, tablet, altro). Puro valore descrittivo, nessuna conseguenza tecnica.

Cliccando Salva viene creato automaticamente anche un identificativo univoco locale (UUID) che accompagnerà i log di questo device. Non è condiviso con nessuno in automatico — viaggia solo se tu lo esporti tramite backup o se ti connetti via P2P a un tuo altro device.

Puoi cambiare il nome in qualsiasi momento dalla card "Dati e privacy" in basso a destra nella Home, con il bottone Rinomina device.

4. Installare la PWA come app

MyDeviceGuard funziona in due modalità: come pagina web aperta dal browser, o come app installata sulla schermata Home / Dock / menu Start. La seconda è nettamente consigliata perché sblocca funzionalità come le notifiche, un'icona dedicata, finestra senza barra URL, e avvio rapido.

Su iPhone / iPad

Su iOS, la Fotocamera e il lettore QR aprono sempre i link nel browser predefinito del sistema. Se installi la PWA in un browser, ma il predefinito è un altro, i QR di pairing finiscono in un'app diversa da quella dove hai i tuoi dati. Si creano "due MyDeviceGuard" separati che non si parlano.

La regola d'oro è: installa la PWA nello stesso browser che è il tuo predefinito iOS.

Per verificare e scegliere il browser predefinito:

  1. Impostazioni iPhone → App → App browser predefinita
  2. Scegli Safari o Chrome (o altro).

Ora installa la PWA nello stesso browser che hai scelto:

  1. Apri il link della PWA nel browser che hai impostato come predefinito.
  2. Tocca il bottone Condividi (quadrato con freccia in alto).
  3. Scorri e tocca Aggiungi alla schermata Home.
  4. Conferma il nome "MyDeviceGuard" e tocca Aggiungi.

Da ora in poi l'icona dello scudo è sulla home dell'iPhone. Aprendola, la PWA parte a schermo intero senza barra URL. Ogni volta che scansioni un QR di pairing, la Fotocamera apre lo stesso browser e quindi la stessa PWA: tutto funziona senza attriti.

⚠️ Importante per iPhone: le notifiche push funzionano solo se apri la PWA dalla schermata Home (modalità standalone), indipendentemente da quale browser l'hai installata. Richiede iOS 16.4 o superiore. In modalità web normale (browser aperto come sito) non sono disponibili.

Su Mac (Chrome, Edge, Brave)

  1. Apri il link della PWA in Chrome (o altro browser basato su Chromium).
  2. Nella barra degli indirizzi, a destra, clicca sull'icona "Installa" (un computer con una freccia verso il basso).
  3. In alternativa: menu a tre puntini → Cast, salva e condividiInstalla pagina come app.
  4. Conferma.

L'app appare nel Launchpad, puoi trascinarla nel Dock, cercarla con Spotlight. Si comporta come una qualsiasi app nativa.

Su Android (Chrome)

  1. Apri il link in Chrome.
  2. In molti casi compare in automatico un banner "Aggiungi MyDeviceGuard alla schermata Home" — conferma.
  3. Altrimenti menu a tre puntini → Installa app.

Su Windows (Chrome, Edge)

  1. Apri il link in Chrome/Edge.
  2. Icona "Installa" nella barra degli indirizzi.
  3. L'app appare nel menu Start e puoi bloccarla nella barra delle applicazioni.
💡 Una sola installazione per device. I dati della PWA sono separati per browser: se la installi sia da Safari che da Chrome sullo stesso iPhone, ti ritrovi due PWA diverse, ciascuna con i propri log e pairing. Su iPhone è particolarmente importante che l'installazione sia coerente col browser predefinito (vedi la regola d'oro sopra). Su Mac/Windows/Android puoi installarla dal browser che preferisci — l'importante è usare sempre quello.

5. Concetti chiave

Per usare bene la PWA aiuta conoscere quattro concetti.

Device

Ogni installazione della PWA su un browser specifico rappresenta un "device" a sé, con nome, ID e log propri. Il tuo MacBook visto da Safari e lo stesso MacBook visto da Chrome sono due device diversi per MyDeviceGuard, perché i dati sono separati per browser. Questo è un limite del modello PWA, non una scelta nostra.

Tracker

È il "registro" di questo device. Quando avvii il Tracker, la PWA inizia a scrivere un evento ogni 30 secondi (heartbeat) più altri eventi speciali. È utile per avere prova di quando il device è stato aperto/attivato. Funziona come un diario.

Controller

È la "vista remota" che usi da un altro device. Se il tuo iPhone è accoppiato al tuo laptop (vedi Pairing), dal Controller puoi chiedere al laptop "fammi vedere il tuo stato", "scaricami i tuoi log", "esegui un audit". Il laptop risponde solo se ha una pagina della PWA aperta in quel momento.

Pairing P2P

È l'operazione che crea un legame cifrato tra due tuoi device. Avviene una volta sola, tramite QR code. Dopo il pairing i due device si riconoscono sempre e comunicano in modo cifrato end-to-end.

6. La schermata Home

La Home è il punto di partenza. Dopo l'onboarding mostra una griglia di card, ciascuna è una sezione dell'app. Sulla card Security Audit compare in tempo reale un piccolo badge con lo stato dell'ultimo audit (es. "10m fa · 2 avvisi"), così vedi a colpo d'occhio se c'è qualcosa di nuovo.

In basso a destra, la card Dati e privacy contiene due azioni:

In alto a destra, l'icona luna/sole permette di alternare tema chiaro e scuro. La scelta è persistente.

7. Tracker

La pagina Tracker è composta di tre sezioni.

Stato tracker

Mostra nome e ID del device, quando è stata avviata la sessione corrente, la durata, l'ultimo heartbeat. Con il bottone Avvia tracking inizi a registrare: da quel momento, ogni 30 secondi la PWA scrive un heartbeat nei log. Quando premi Ferma tracking viene registrata la durata totale della sessione.

Il bottone Audit rapido esegue un controllo di sicurezza al volo, senza aprire la pagina Security.

Ricevitore P2P

Serve se vuoi che questo device sia controllabile da remoto. Cliccando Attiva ricevitore, la PWA genera un Peer ID e resta in ascolto. Da questo momento gli altri tuoi device accoppiati possono collegarsi via Controller e interrogare questo.

In alternativa, c'è il collegamento a Genera QR di pairing se devi ancora accoppiare un nuovo device.

Ultime sessioni di questo device

Tabella riepilogativa degli ultimi 20 eventi registrati sul device. Utile per controllare a colpo d'occhio cosa è stato registrato.

8. Security Audit

Questa è la sezione più importante per la sicurezza. Clicca Avvia audit per eseguire un controllo completo del tuo browser/device. La PWA genera una lista di 20+ check con quattro possibili esiti:

Cosa viene controllato

Monitor digitazione

Toggle ⌨️ Monitor digitazione: OFF / ON. Quando attivo, la PWA conta quanti tasti premi al secondo. Se supera una soglia molto alta (15 tasti/secondo, ben oltre anche un dattilografo veloce), registra un alert perché potrebbe essere il sintomo di un attacco con Rubber Ducky o BadUSB (dispositivi USB che fingono di essere tastiere per iniettare comandi rapidissimi).

Ispeziona HID

Bottone 🔌 Ispeziona HID: enumera i dispositivi HID (tastiere, mouse, gamepad, lettori codici) che hai autorizzato al browser. È il punto di partenza per popolare la whitelist HID.

9. Audit schedulato

Un audit fatto ogni tanto a mano è utile, ma l'audit automatico periodico è molto più potente: fa confronti nel tempo e ti avvisa se qualcosa cambia.

Nella card ⏱️ Audit schedulato trovi:

Come funziona il rilevamento cambi

Ogni volta che parte l'audit schedulato, il sistema confronta il risultato con l'ultimo snapshot. Se rileva differenze — un permesso passato da "prompt" a "granted", HTTPS disattivato, un nuovo HID comparso, ecc. — genera automaticamente un alert nel log e, se hai concesso le notifiche, fa apparire una notifica di sistema.

Esempio pratico: ieri la PWA non aveva accesso alla fotocamera. Oggi tu hai concesso il permesso (magari distrattamente, magari qualcun altro ha toccato il tuo Mac). Al prossimo audit schedulato, MyDeviceGuard ti avvisa: "perm_camera: info:prompt → warn:granted". Sta a te decidere se era voluto o no.

💡 Privacy e background. L'audit schedulato gira solo quando la PWA è aperta (in qualche tab o come app installata). Non può spiare silenziosamente il device: se chiudi tutto, si ferma. Quando torni sulla PWA e sono passati più minuti dell'intervallo, parte un audit "di recupero" immediatamente.

10. Notifiche push locali

Le notifiche sono locali: è la PWA stessa a decidere quando mostrarle, non c'è nessun server esterno che ti manda push. Appaiono nel centro notifiche del sistema operativo (Mac, iOS, Android, Windows, Linux) con titolo, corpo e icona.

Abilitare le notifiche

  1. Vai su Security.
  2. Card 🔔 Notifiche push locali.
  3. Clicca Abilita notifiche. Il browser mostrerà un prompt di sistema: concedi.
  4. Il badge "Permesso" diventa concesso.
  5. Clicca 🧪 Invia test per verificare che la notifica appaia davvero.

Livelli di filtro

Se hai negato per sbaglio

Una volta che il browser ha ricevuto un "no", non chiede più. Devi entrare manualmente nelle impostazioni del sito e riconsentire:

⚠️ iPhone: le notifiche funzionano solo se la PWA è installata sulla schermata Home (iOS 16.4+). In Safari web normale non sono disponibili.

11. Whitelist HID

HID (Human Interface Device) è la categoria USB che include tastiere, mouse, gamepad, lettori di codici. Un attacco classico è collegare una finta tastiera USB (Rubber Ducky, BadUSB, Flipper Zero) al computer per iniettare comandi. MyDeviceGuard ha una whitelist che ti avvisa se nuovi HID appaiono.

Come si popola la whitelist

A causa dei limiti delle API WebHID, la PWA vede solo i device per cui il browser ha ricevuto permesso esplicito. Quindi la prima volta devi "presentargli" i tuoi dispositivi fidati:

  1. Security → card 🔒 Whitelist HID.
  2. Clicca ➕ Aggiungi dispositivo…
  3. Il browser mostra un popup con la lista dei device disponibili. Seleziona la tua tastiera (o mouse) e conferma.
  4. Ora nella tabella superiore "Dispositivi HID rilevati" compare con stato ignota.
  5. Clicca ✅ Approva e dai un nickname (es. "Tastiera MacBook").
  6. Lo stato diventa nota.
  7. Ripeti per ogni HID che usi regolarmente.

Attivare il watch

Cliccando Attiva watch, il controllo HID diventa parte dell'audit schedulato. Se qualche HID non in whitelist compare (perché qualcuno ha autorizzato un device al browser, per esempio), scatta un alert danger e, se abilitata, una notifica push "🚨 Nuovo dispositivo HID".

Gestire la whitelist

Sotto la card puoi vedere la lista degli HID approvati. Ogni voce ha un'icona ✏️ per rinominare e × per rimuovere. Un HID rimosso tornerà "ignoto" al prossimo scan.

💡 Il sistema non è perfetto: un attaccante che ha accesso fisico al Mac può ancora collegare una tastiera e iniettare comandi prima che tu autorizzi il browser. Il valore di questa feature è nel rilevamento post-factum: se al risveglio vedi un HID nuovo, hai un indizio chiaro.

12. Pairing P2P

Il pairing collega due tuoi device in modo che possano comunicare direttamente, cifrati end-to-end, senza che nessun server veda i contenuti.

Pairing completo passo-passo

Supponiamo tu voglia accoppiare MacBook (lo chiamerò "device A") e iPhone (device B).

Lato MacBook (device da controllare)

  1. Apri la PWA sul Mac e vai su Pairing.
  2. Clicca Genera codice di pairing.
  3. Appare un QR code e il testo del codice nella textarea sotto.
  4. Non chiudere questa pagina. Il Mac resta in ascolto finché non completi l'accoppiamento dall'altro lato.

Lato iPhone (controller)

  1. Apri la fotocamera nativa dell'iPhone (o il lettore QR del Centro di Controllo).
  2. Inquadra il QR mostrato sul Mac.
  3. Appare una notifica gialla con l'URL di MyDeviceGuard — tocca.
  4. Il browser si apre direttamente sulla pagina Pairing con un banner verde "📲 Codice di pairing ricevuto".
  5. Rivedi il nome (puoi cambiarlo, es. "MacBook di casa"), poi tocca ✅ Accoppia ora.
  6. Vedi i toast: "Tentativo di connessione…" → "Canale aperto" → "✅ Device accoppiato".
⚠️ Attenzione al browser su iPhone. La Fotocamera iOS apre i link nel browser predefinito di sistema. Se la PWA è installata in un browser diverso dal predefinito, i dati del pairing finiscono nell'app sbagliata. Assicurati che il browser predefinito iOS e quello usato per installare la PWA coincidano — vedi sezione 4.

Se il QR non si legge

Alternativa manuale:

  1. Sul Mac, clicca il bottone 📋 Copia sotto il QR.
  2. Invia il codice a te stesso via iMessage, WhatsApp, email, AirDrop, qualunque cosa.
  3. Sull'iPhone, apri il messaggio e copia il testo.
  4. Apri la PWA su iPhone → Pairing → incolla nel campo "Modalità controller" → dai un nome → Accoppia.

Come funziona la cifratura

Quando generi il codice, MyDeviceGuard crea localmente una chiave AES-GCM 256-bit casuale. La chiave viene inserita nel QR insieme al Peer ID WebRTC. L'altro device, scansionando, ottiene la stessa chiave. Da quel momento, ogni messaggio P2P è cifrato con questa chiave prima di essere spedito. Chi intercetta il traffico (inclusi i server di signaling) vede solo bytes casuali.

I pairing sono salvati nella sezione "Device accoppiati" in fondo alla pagina. Possono essere rimossi in qualsiasi momento.

13. Controller (controllo remoto)

La pagina Controller mostra la lista dei tuoi device accoppiati. È la sezione da usare dopo aver fatto il pairing.

Connettersi a un device

  1. Clicca Connetti sulla card del device.
  2. Appare un pannello con Peer ID, stato "connesso" (verde) e quattro azioni.

Le azioni disponibili

La card Risposta

Dopo una richiesta, si apre una card "📨 Risposta" con tre pulsanti:

⚠️ Perché il device remoto deve essere "vivo". La connessione P2P richiede che entrambi abbiano la PWA aperta in quel momento. Se l'iPhone tenta di connettersi al Mac ma il Mac ha chiuso la PWA o ha messo il tab in standby aggressivo, la connessione fallisce.

14. Log locali

La pagina Log mostra la cronologia completa di eventi e alert salvati su questo device. In alto hai filtri:

Tabelle

La pagina ha due tabelle:

15. Statistiche

La pagina Statistiche trasforma i dati grezzi dei log in visualizzazioni utili.

Numeri chiave (30 giorni)

Quattro KPI visivi: quante sessioni, audit eseguiti, alert totali, cambi di sicurezza rilevati nell'ultimo mese.

Sessioni per giorno

Istogramma degli ultimi 14 giorni, una barra al giorno, conta quante volte hai avviato il Tracker.

Salute del device nel tempo

Grafico a linee con 3 serie: critici (rosso), avvisi (giallo), OK (verde). Mostra come è variata la "salute" del device negli ultimi 14 giorni basandosi sugli audit_snapshot. Se attivi l'audit schedulato, dopo qualche giorno qui vedi una storia chiara.

Alert per tipo

Grafico a ciambella con la distribuzione delle categorie di alert (digitazione anomala, cambi sicurezza, HID ignoti, ecc.). Aiuta a capire dove stai avendo più problemi.

Esporta CSV riepilogo

Scarica un CSV aggregato per giorno, utile per archiviazione o ulteriori analisi con strumenti esterni. Il CSV contiene solo conteggi numerici, nessun dettaglio sensibile.

16. Backup cifrato

Il backup è il modo sicuro per:

Come fare l'export

  1. Vai su Backup.
  2. Inserisci una password almeno di 6 caratteri. Ripetila nel secondo campo.
  3. Clicca 💾 Scarica backup.
  4. Viene scaricato un file .mdg con la data nel nome.
⚠️ La password non è recuperabile. Se la dimentichi, il backup è inutilizzabile anche per noi. Scegli qualcosa che ricordi o salvala in un password manager.

Come fare l'import

  1. Scegli il file .mdg.
  2. Inserisci la password.
  3. Clicca 🔍 Apri anteprima.
  4. Vedi quando è stato creato, nome device origine, quanti eventi/alert/pairing contiene.
  5. Scegli modalità:
    • Unione: aggiunge i dati ai tuoi attuali (default, utile se vuoi fondere due device).
    • Sostituzione: cancella i tuoi attuali e riscrive con quelli del backup. Per migrazione completa.
  6. Opzionale: spunta "Ripristina anche nome e ID device". Così il device corrente "diventa" quello del backup (stesso UUID, stesso nome). Utile per migrazione 1:1.
  7. Clicca ✅ Applica ripristino.

Come è fatto tecnicamente

Il file .mdg è un JSON con campi format, salt, iv, data. Il campo data è il tuo contenuto cifrato con AES-GCM 256-bit, usando una chiave derivata dalla tua password con PBKDF2-SHA256 e 250.000 iterazioni. Il salt e l'IV sono casuali per ogni export (quindi due backup dello stesso stato producono file diversi — privacy-safe).

17. Scenari d'uso tipici

Scenario A – Professionista che vuole sapere quando il suo laptop viene toccato

  1. Installo la PWA sul laptop.
  2. Attivo il Tracker quando inizio a lavorare.
  3. Attivo Audit schedulato ogni 30 min.
  4. Popolo la Whitelist HID con la mia tastiera e il mio mouse, attivo il watch.
  5. Installo anche sul mio smartphone e faccio Pairing.
  6. Abilito le notifiche sia sul laptop sia sullo smartphone.

Risultato: se qualcuno apre il laptop o collega una USB sospetta mentre sono via, ricevo notifica, e dallo smartphone posso chiedere lo stato del laptop da remoto.

Scenario B – Utente paranoico sulla privacy

  1. Installo la PWA. Rifiuto le notifiche (non mi servono).
  2. NON attivo lo scheduler (niente attività background).
  3. Uso la PWA in modalità "consultazione": quando voglio, apro Security e faccio un audit manuale.
  4. Esporto il backup ogni settimana su una chiavetta USB, password con una frase robusta.

Scenario C – Migrazione tra device

Ho cambiato laptop, voglio portare tutto sul nuovo:

  1. Sul vecchio: Backup → export con password.
  2. Trasferisco il file al nuovo (AirDrop, cloud storage, USB).
  3. Sul nuovo: installo la PWA, completo il primo avvio con nome temporaneo.
  4. Backup → Importa → scegli file → password → modalità Sostituzione + spunta "Ripristina identità".
  5. Dopo il reload, il nuovo device è indistinguibile dal vecchio dal punto di vista della PWA: stesso UUID, stesso nome, stessi pairing funzionano.

Scenario D – Consulenza/supporto tecnico

Voglio far vedere a un tecnico i log del mio laptop senza dargli accesso fisico:

  1. Dal mio smartphone, apro Controller e mi connetto al laptop remoto.
  2. Clicco Scarica logSalva come file.
  3. Invio il JSON al tecnico via email.

18. Domande frequenti

Posso usare MyDeviceGuard senza internet?

Sì, dopo il primo caricamento il service worker mantiene l'app disponibile offline. Le uniche cose che richiedono internet sono il pairing iniziale (per caricare la libreria P2P) e la comunicazione P2P tra device. Audit, log, grafici, backup funzionano tutti offline.

Se cambio browser sullo stesso computer, i dati si trasferiscono?

No, i dati sono per-browser. Chrome e Safari sul tuo Mac hanno storage separato. Se vuoi trasferire i dati, usa Backup.

Posso condividere la PWA con altre persone?

Sì, ti basta dare loro il link dove è hostata. Ogni utente che la apre avrà la sua installazione privata, con i suoi dati, senza vedere i tuoi.

I miei pairing sono pubblici?

No, il pairing è strettamente privato. La chiave AES che protegge la comunicazione è scambiata solo tramite QR, non passa da nessun server.

Cosa succede se due persone scansionano lo stesso QR?

Sono entrambe in grado di comunicare con il device host (anche se non contemporaneamente sullo stesso canale). Se è un problema, ri-genera un nuovo codice di pairing: quello vecchio scade quando chiudi la pagina Pairing.

L'app usa la mia posizione / camera / microfono?

No, mai. La PWA controlla se il browser ha permessi attivi per queste cose, ma non li usa. Se vedi "granted" su camera/mic nel Security Audit, è perché tu (o un'altra app web su questo dominio) li hai autorizzati in passato. Puoi revocarli dalle impostazioni browser.

Su iPhone le notifiche arrivano anche se chiudo l'app?

Dipende. Le notifiche possono arrivare solo mentre l'audit schedulato è in esecuzione, e lo scheduler gira solo mentre la PWA è aperta. iOS mette in pausa le PWA dopo qualche minuto di inattività. In pratica: le notifiche arrivano se la PWA è stata aperta di recente o è in background "caldo". Per avere vero monitoraggio 24/7 servirebbe un servizio nativo — è un limite del modello PWA, non di MyDeviceGuard.

Chi può vedere la mia whitelist HID o i miei pairing?

Solo tu, sul browser dove li hai configurati. Viaggiano solo se tu esporti un backup.

L'app si aggiorna automaticamente?

Sì. Appena arriva una nuova versione sul server, al prossimo riavvio della PWA il service worker la scarica, si attiva e ricarica la pagina. Vedi un toast "🔄 Aggiornamento installato – ricarico…". Non devi fare nulla.

Perché il Security Audit mi segnala certi permessi con "warn"?

Perché sono permessi attivi che in un contesto di sicurezza vanno verificati: se non ricordi di aver concesso accesso alla camera a questo dominio, è una informazione utile.

19. Risoluzione problemi

La PWA appare senza stili / look "HTML nudo"

Il CSS non si è caricato, tipicamente per cache del service worker in stato inconsistente dopo un aggiornamento. Soluzione:

  1. DevTools → Application → Service Workers → Unregister.
  2. Application → Storage → Clear site data.
  3. Hard reload (⌘⇧R o Ctrl+F5).

Il QR di pairing è vuoto / non si disegna

Storia vecchia, risolta nelle versioni recenti grazie alla libreria QR locale. Se ancora succede, verifica di non avere un adblock troppo aggressivo che blocca script JS di pagina. Prova in finestra anonima.

"Scarica log" dal Controller non mostra nulla

Il device remoto deve avere aperta una pagina della PWA che sappia rispondere ai comandi: la pagina Pairing con QR attivo, oppure la pagina Tracker con "Attiva ricevitore" premuto. Se la pagina è chiusa, il comando cade nel vuoto.

Sull'iPhone il QR apre un browser diverso dalla PWA installata

La Fotocamera iOS apre i link nel browser predefinito di sistema. Se questo è diverso dal browser con cui hai installato la PWA, il pairing finisce in "un altro MyDeviceGuard" separato. Soluzione: allinea le due cose.

  1. Impostazioni iOS → App → App browser predefinita → scegli il browser che vuoi usare (Safari o Chrome).
  2. Rimuovi l'icona della PWA dalla home (se era installata dal browser "sbagliato").
  3. Apri il link della PWA nel browser scelto e reinstallala da lì.

Da quel momento la Fotocamera aprirà sempre la stessa app della PWA. In alternativa, usa il copia-incolla manuale del codice di pairing invece dello scan QR.

Le notifiche non arrivano anche se concesse

Controlla:

Dopo un refresh ho perso il Peer ID del Mac

Corretto, è così per design. Il Peer ID è effimero, cambia ogni volta. Ma la chiave AES del pairing è salvata stabilmente. Se il Mac si rigenera un peerId diverso, il pairing sul telefono non lo trova più. Soluzione pratica: mantieni la pagina Pairing aperta sul Mac finché ti serve il canale P2P.

Nota: si può migliorare usando un peerId fisso salvato in IndexedDB — è una feature che può arrivare in futuro.

Voglio ricominciare da zero

Home → card "Dati e privacy" → Cancella tutto. Azzera tutto ciò che la PWA sa di te, su questo browser. Oppure, per una pulizia più completa includendo cache dei file: DevTools → Application → Clear site data.

20. Nota tecnica sulla sicurezza

Per chi vuole sapere com'è fatta la "cassaforte":

Cifratura P2P

Due strati sovrapposti:

  1. DTLS + SRTP a livello WebRTC: tutto il traffico P2P è già cifrato dal browser tramite lo standard WebRTC.
  2. AES-GCM 256 a livello applicativo: ogni messaggio è cifrato con una chiave generata al pairing, IV casuale per ogni messaggio. Senza la chiave, i pacchetti sono illeggibili anche se qualcuno aggirasse il DTLS.

Cifratura backup

AES-GCM 256. La chiave è derivata dalla password utente con PBKDF2-SHA256, 250.000 iterazioni, salt casuale 16 byte. IV casuale 12 byte. Questo rende attacchi di forza bruta offline molto costosi.

Librerie esterne

Tutte le dipendenze sono embedded localmente (Chart.js, libreria QR, PeerJS). Nessun CDN esterno viene contattato a runtime. Questo sia per privacy sia per robustezza offline.

Codice sorgente

Il codice è open source con licenza MIT. Puoi ispezionarlo, forkarlo, modificarlo, auto-ospitarlo. Chi vuole la garanzia totale può usare solo la propria istanza.

Fine del manuale. Per suggerimenti o segnalazioni, apri una issue sul repository GitHub del progetto.

MyDeviceGuard · Licenza MIT · Privacy-first · Made with care.