-
Notifications
You must be signed in to change notification settings - Fork 0
5 Collaudo DevTools
Il collaudo e la manutenzione del motore Panzer v7 all'interno delle infrastrutture della Pubblica Amministrazione richiedono un monitoraggio rigoroso tramite la console dei moduli di sviluppo del browser (F12 / DevTools) applicando un approccio Zero Trust.
Warning
➡️ Falsi Positivi in Debug: Quando i DevTools di Chrome sono aperti con l'opzione "Disable cache" attiva, il Service Worker potrebbe ignorare le logiche di caching del Bunker Mode. Disattiva l'opzione per i test reali offline.
getNetworkProfile richiede monitoraggio RTT. Non disabilitare le API di rete.
Caution
🛑 Variabile [ encryptionKey ]: non portare nel codice questa variabile a null altrimenti scattano le protezioni...
- Durante le sessioni di ispezione attiva, l'operatore tecnico deve fare riferimento alla seguente mappatura semantica delle stringhe generate nativamente dal Service Worker nei log di console:
🔹📄 Log
| Alcuni esempi di Log di Console (SW Panzer v7.3) | Innesco Operativo |
|---|---|
📦🛡️ SW: Risorsa validata e salvata: ${targetUrl} |
Successo cache. |
💾🛡️ SW: Risorsa estratta dal, ${targetCache} |
Decrittazione in RAM. |
🛡️🧹 SW: Bonifica RAM eseguita per: ${finalPath} |
fill(0) anti Memory ispection |
⚠️ SW Security: Firma fallita per ${url} |
Errore firma. |
📄❌ SW: Fallimento validazione/download su: ${url} |
Violazione soglie/dimensioni. |
🌐❌ SW: Offline in ${mode} (Profilo: ${profileName}) |
Stato resilienza. |
🔄 SW: Background Sync avviato... |
Sincronizzazione async. |
🚨 SW: Storage Pieno! - Emergency Clean... |
Gestione QuotaExceeded. |
⚠️ SW: ErrorPage B64 Not Blob... |
Errore fallback grafico. |
🗄️🚨 SW: COMPROMISSIONE RILEVATA! ACTIVATION_ABORTED_SECURITY_BREACH |
Purga atomica. |
🗄️🔥 SW: Tabula rasa completata con successo. |
Risultato della Purga atomica. |
⚠️💣 ANOMALIA CRITICA: Vault compromesso, chiave sparita! |
DB presente ma chiave assente... |
❌🛡️ SW: Errore durante la cifratura del file. |
Errore di Cifratura con (throw err).per il chiamante try/catch |
❌🛡️ SW: Fallimento decrittazione. Dati non integri o chiave errata. |
throw new Error("VAULT_LOCKED_DECRYPTION", { cause: err }. |
📜📦 SW: TTL Scaduto, Del: ${request.url} |
Pulizia dei dati non cifrati ogni X giorni. |
🧹 SW: UserCache svuotata, recupera spazio critico. |
Usata quado interviene: QuotaExceeded |
🔑 SW: Primo avvio, inizializzazione chiave. |
Creazione Della Key_master. |
🛡️🔍 SW: Check di Sicurezza... |
Avvio Controllo di Integrità sulla Key_master . |
🛡️✅ SW: Integrità Bunker confermata. |
Controllo di Integrità sulla Key_master, Riscontro negativo di Manipolazione/Corruzione. |
🌐👮♂️ SW: Rete Degradata, [ ${profileName} ].\n SWR(Stale-While-Revalidate), ON per continuità operativa... |
profili di rete degradati Low & VeryLow forzati ad usare SWR come strategia di resilienza... |
🔹📦🛡️ (Bunker), (mappato in `CONFIG.cacheName`)
Indica operazioni di lettura, scrittura o ripristino di un asset di sistema core.
🔹 Questa zona è protetta da cifratura hardware-assisted AES-GCM 🔑, isolata e vitale per il funzionamento offline.
🔹 Il frontend riceve queste risorse marchiate dall'header personalizzato:
`X-PWA-Source: Bunker-Decrypted`
🔹📦🔓 (Magazzino), (mappato in `CONFIG.userCacheName`)
🔹 Indica la gestione delle risorse utente sussidiarie. È un'area di storage dinamica, volatile, non cifrata e sacrificabile in caso di emergenza, vincolata al ciclo di vita di `CONFIG.userCacheTTL`.
- In presenza di anomalie hardware o tentativi di manipolazione (es. iniezione di chiavi corrotte), il motore esegue il protocollo distruttivo definito nel diagramma sottostante:
🔹Scattato `QuotaExceededError` (Memoria Piena)
🔹 Causa: Il dispositivo client ha esaurito lo spazio disco. Durante il download o la cifratura degli asset pesanti la scrittura fallisce.
🔹 Azione: Poiché il test del canarino eseguito all'avvio in RAM ha già dovuto convalidare l'integrità del Vault, il sistema interrompe la sincronizzazione in modo pulito.
🔹 Nessuna purga viene avviata, preservando l'integrità dei file già archiviati.
🔹🗄️🚨💣 `VAULT_SECURITY_BREACH_INTEGRITY` (Purga Atomica)
🔹 Causa: Rilevata alterazione strutturale dei byte della chiave master, fallimento del test crittografico di decrittazione sul Canary Data, oppure totale e inspiegabile assenza del record della chiave da IndexedDB a Service Worker già inizializzato.
🔹 Azione del software (Tabula Rasa & Reset): Il Service Worker attiva il protocollo distruttivo immediato:
Cancellazione radicale di tutte le cache (`CONFIG.cacheName` e `CONFIG.userCacheName`), rasa al suolo l'intera struttura di IndexedDB (`PWA_Vault`), azzera le variabili in RAM ed emette un segnale broadcast.
sequenceDiagram
participant SW as ⚙️ Guardiano (SW)
participant CA as 💾 Magazzino (Cache)
participant DB as 🗄️ Caveau (DB)
participant FE as 🖥️ Schermo (App)
Note over SW: Rilevato pericolo/corruzione
SW->>CA: 🧹 "Butta via tutto!"
SW->>DB: 🧨 "Distruggi il caveau!"
SW->>SW: 🧠 "Pulisci la memoria RAM"
SW->>FE: 📢 "Ricarica tutto da zero!"
🔹🏗️⚙️ Effetto Nuova Installazione:
🔹 Il browser si ritrova davanti a una tabula rasa assoluta e avvia un ciclo di re-installazione ex-novo.
🔹 Se la comunicazione diretta con il frontend dovesse fallire durante la crisi, l'effetto si concretizza in modo deterministico alla primissima riapertura o aggiornamento manuale dell'applicazione da parte dell'utente, costringendo il sistema a ripartire da uno stato nativo pulito e a riscaricare tutti gli asset core integri direttamente dal server d'origine.
🔹 Nel caso limite in cui la rete sia totalmente assente e il re-fetch fallisca, il motore si isolerà definitivamente nello stato logico protetto `VAULT_LOCKED_NO_KEY`, dirottando l'erogazione verso `CONFIG.fallbackImage` o stampando la pagina d'emergenza HTML 503.
- Chiunque può testare la reattività e l'affidabilità del sistema seguendo questa batteria di test guidati direttamente dai DevTools del browser.
🔹1. 🏋️♂️ Test di Stabilità Asincrona (Cold Start)
🔹 Verifica che il riavvio forzato del motore non provochi perdite di dati o falsi positivi.
🔹 Apri i DevTools (`F12`) -> scheda Application -> Service Workers.
🔹 Clicca sul pulsante Stop (il pallino verde diventerà bianco, svuotando la RAM del Worker).
🔹 Torna sulla pagina e premi `F5` per ricaricare.
🔹 Risultato atteso:
Il Service Worker si riavvia, rileva `lastVaultCheck = 0`, esegue immediatamente `deepVaultValidation()`, estrae la 🔑 chiave intatta dal disco e convalida il canarino.
L'applicazione si avvia normalmente senza alcun errore crittografico.
🔹2. ⚠️ 📦 Test di Isolamento per Spazio Pieno (Quota Exceeded)
🔹 Verifica che la saturazione della memoria non inneschi per errore la purga.
🔹 Nei DevTools, vai sulla scheda Application -> menu Storage (Archiviazione).
🔹 Spunta la casella "Simulate custom storage quota" e imposta il limite a 1 MB.
🔹 Svuota la cache e ricarica la pagina (`F5`) per forzare la sincronizzazione `performSync`.
🔹 Risultato atteso:
La scrittura dei file pesanti fallisce generando un'eccezione, ma la console mostra che il Vault è stato promosso come integro. Nessun log di purga compare, le vecchie cache non vengono toccate.
🔹3. 🗝️ Test di Violazione per Chiave Rimossa
🔹 Verifica la reazione del sistema se la chiave master 🔑 viene rimossa dal disco.
🔹 Nei DevTools, vai su Application -> IndexedDB -> `PWA_Vault` -> `keys`.
🔹 Seleziona il record della riga `master_key` e premi il tasto Canc sulla tastiera per eliminarlo.
🔹 Spostati su Service Workers, clicca su Stop per scaricare la RAM, e ricarica la pagina con `F5`.
🔹 Risultato atteso:
Al riavvio, il sistema rileva l'assenza della chiave 🔑(`VAULT_EMPTY_TEMPORARY`), attiva all'istante la purga e pialla completamente il Cache Storage. 🧹
🔹4. 🪱🔑 Test di Violazione per Chiave Corrotta (Iniezione di Codice)
🔹 Verifica la reazione se i byte della chiave vengono manipolati dall'esterno.
Poiché la chiave è protetta nativamente in sandbox hardware/software con `extractable: false`, per simulare la corruzione è necessario iniettare un Oggetto sostitutivo fasullo tramite console.
🔹 Nei DevTools, posizionati sulla scheda Console
🔹 Sblocco del Browser (Protezione Self-XSS):
Se la console blocca l'incolla, digita manualmente a schermo la stringa `consenti incolla` (o `allow pasting` se il browser è in inglese) e premi Invio.
🔹 Copia e incolla il seguente script d'iniezione e premi Invio:
let req = indexedDB.open("PWA_Vault", 1);
req.onsuccess = function(e) {
let db = e.target.result;
let tx = db.transaction("keys", "readwrite");
let putReq = tx.objectStore("keys").put({ finta_chiave: "dati_corrotti_12345" }, "master_key");
putReq.onsuccess = function() {
console.log("🪱🔑🎯 Chiave corrotta iniettata con successo nel DB!");
db.close();
};
};- Per forzare la verifica delle routine di rete, si raccomanda di configurare il pannello Network dei DevTools emulando profili di connessione degradati (es. Fast 3G o Slow 3G).
- Questo permette di validare visivamente il corretto funzionamento della routine
getNetworkProfile, l'estrazione dei limiti daCONFIG.networkResilient.profilese lo scatto automatico dei relativi timeout dinamici.
Tip
🌌🛡️ SIMULAZIONE DEL TOTAL BLACKOUT NEI TEST DI COLLAUDO:
🎚️ Nel pannello Application -> Service Workers dei DevTools, spunta la casella "Offline" e monitora i log.
Se il sistema è a regime, vedrai comparire esclusivamente stringhe con il marcatore 📦🛡️ [Bunker-Decrypted], a testimonianza del fatto che la PWA sta girando in Totale isolamento dal server e decifrando le risorse al volo via Web Crypto API.
-
🏠 Home
📑 Pagina principale del Progetto -
📄 Capitolo 1: Introduzione
👨⚖️ Requisiti legali e conformità CAD (Art. 68/69) 📜 -
⚙️ Capitolo 2: Architettura
🛡️📦 Bunker Mode e crittografia AES-GCM del Vault 🔑🗄️ -
💡 Capitolo 3: Note Finali
⚒️ Esempi di utilizzo pratico nella PA 🏛️ -
🏛️ Perché 🪖 Panzer v7+
🗽 Indipendenza ed eliminazione del Vendor Lock-in 🚫🔒 -
🔥 Capitolo 4: Collaudo
🥁 Battesimo di Fuoco, Debug e Log 🐞📊 -
🛡️ Capitolo 5: Paradigma Difensivo
Logiche di 🚫💥 anti-tampering e Zeroization 🧽 -
📑 Capitolo 6: Determina
🖨️ Modello pronto ed esecutivo per i dirigenti 💼 -
🧞 Capitolo 7: Estensione Zero-Trust 🔐
🌀🧪 Concept: Architetturale e Framework di Sicurezza per le PA 🏛️ -
🏛️🚨 Capitolo 8: Protezione PA
📖 Disciplinare Tecnico di Tutela dell'Ente con linee guida per Affidamenti Esterni. 🏢 -
🚀☢️ Capitolo 9: La Difesa Oltre il Confine
🌀🧪 Concept: di un sistema di difesa attiva per operare in modalità Out-of-Sandbox 🔝🫙 -
🏛️🔮 PA Futuro Digitale
🌐🚀 Concept: Manifesto tecnologico e linee guida d'architettura per l'Iper Cloud PA 🌩️