-
Notifications
You must be signed in to change notification settings - Fork 0
Home
- Benvenuti nella documentazione tecnica ufficiale.
Questo โ๏ธ Motore applica la filosofia ๐ Zero-Trust e di SW Forensics alla connettivitร di rete, garantendo l'isolamento dei ๐ flussi e la continuitร in contesti isolati.
Note
โน๏ธ Stato del Progetto:
-
Stable:
-
Service Worker:
- โ๏ธ CORE:
- ๐ช Panzer v7.5
- โ๏ธ CORE:
-
Service Worker:
-
๐ Licenza:
- ๐ช๐บ๐ ๐ EUPL-1.2
-
๐๏ธ PA Compliance:
- ๐ AgID / CAD Art. 68-69.
-
๐ Security:
- ๐ Zero-Trust
- ๐ AES-GCM 256-bit
- ๐งน RAM Isolation
- ๐ค Canary String ๐
Warning
๐ฆ๐จ PROTOCOLLO DI BLINDATURA IN PRODUZIONE (OVERRIDE NATIVO DEGLI INTERCETTORI GLOBALI)
Al fine di garantire la massima conformitร ai paradigmi di sicurezza logica ๐ Zero-Trust e impedire operazioni non autorizzate di Reverse Engineering, manipolazione dei flussi o la fuga di informazioni sensibili tramite la ๐๐ ๏ธ console del browser in ambiente di produzione:
๐๏ธ Tale architettura consente all'Istruttore Informatico ๐งโ๐ป dell'Amministrazione o ai tecnici ispettivi degli organi preposti (AgID / Developers Italia / ACN) ๐๏ธ
di eseguire il collaudo visivo e l'audit completo nei DevTools ๐ ๏ธ e, successivamente, attivare la blindatura nativa dell'applicazione per l'esercizio pubblico.
L'Ente in fase di deployment definitivo deve applicare perentoriamente questo interruttore di inibizione globale. O usare inibitori simili, per la blindatura di sicurezza.
๐น โ๏ธ๐จ๐๏ธ Logica di inibizione a carico dell'Ente e dell'Appaltatore (OVERRIDE DEI CANALI DI TELEMETRIA E LOGGING FORENSE):
// Logiche per il REGISTRO FORENSE !
/**
* @description ๐พ Memorizzazione globale dei descrittori nativi prima di eseguire l'override.
* Garantisce che le funzioni di rete e di pulizia possano rompere la ricorsione in ogni momento,
* isolando i flussi diagnostici standard dalle sottomissioni remote verso l'Ente.
*/
const originaleConsoleWarn = console.warn;
const originaleConsoleError = console.error;
/**
* @fileoverview ๐ REGISTRO DI CONFIGURAZIONE INTERNA E PARAMETRICI DI CONTROLLO
* @module PA_Audit_Bunker/Config
* @description Definisce i vincoli strutturali, l'endpoint telematico di destinazione,
* i tracciati URI fittizi delle risorse in cache ed i profili di tolleranza di rete.
* Rispetta i dettami di interoperabilitร e resilienza richiesti dai capitolati della PA.
*/
const AUDIT_CONFIG = {
/** * @description Endpoint istituzionale per il conferimento dei tracciati di auditing. */
endpointTelemetria: "https://sicurezza.comune.local/api/v1/telemetry",
/** * @description Prefisso fittizio normalizzato per il transito e lo stivaggio molecolare dei log. */
pathFintoLog: "pa_audit_bunker/log_",
/** * @description Intestazioni formali per la validazione strict dei payload e dello stato crittografico. */
headersFormali: {
origin: "Cache-Bunker-Panzer",
contentType: "application/json",
headerCifrato: "X-PWA-Encrypted",
headerData: "X-PWA-Date",
headerProvenienza: "X-PA-Audit-Origin"
}
};
/**
* @function blindaTelemetriaPA
* @description โ๏ธ๐จ๐๏ธ Inibisce i canali di logging ordinari per prevenire l'esposizione di dati
* sensibili in ambiente di produzione (Anti-Data-Leakage). Forza l'intercettazione e l'elevazione
* forense delle anomalie verso la cache e l'endpoint di controllo.
*/
function blindaTelemetriaPA() {
// โ ๏ธ Inibizione perentoria dei canali diagnostici standard per prevenire data leakage in locale
console.log = function() {};
console.info = function() {};
/**
* @method console.warn
* @description โ ๏ธ Intercettore globale dei messaggi di avviso e anomalie di transito.
* Incapsula la traccia sul canale nativo e devia il payload sul buffer criptato di cache.
*/
console.warn = function(...args) {
originaleConsoleWarn.apply(console, ["[โ ๏ธ WARNING PA ADAPTER]", ...args]);
const messaggioWarn = args.join(" ");
if (typeof spedisciLogAllEnte === "function") {
spedisciLogAllEnte({
timestamp: Date.now(),
livello: "WARN_SECURITY_INSPECTION",
payload: messaggioWarn
});
}
};
/**
* @method console.error
* @description ๐จ Intercettore globale delle eccezioni fatali e delle violazioni di integritร .
* Vincola l'Ente alla tracciabilitร perentoria dei crash ai fini della responsabilitร oggettiva.
*/
console.error = function(...args) {
originaleConsoleError.apply(console, ["[๐จ CRITICAL PA ADAPTER]", ...args]);
const messaggioErrore = args.join(" ");
if (typeof spedisciLogAllEnte === "function") {
spedisciLogAllEnte({
timestamp: Date.now(),
livello: "FATAL_SECURITY",
payload: messaggioErrore
});
}
};
}
/**
* @function spedisciLogAllEnte
* @async
* @description ๐๏ธ๐ Riceve la telemetria forense, eleva il metadato e la blinda d'ufficio
* all'interno del magazzino cache criptato del Panzer v7.3 prima di ogni transito di rete.
* @param {Object} logPayload - Oggetto strutturato contenente i metadati dell'evento.
*/
async function spedisciLogAllEnte(logPayload) {
try {
// ๐ Elevazione del livello di sicurezza prima della storicizzazione locale
logPayload.livello += "_BUNKER_ARMED";
// ๐พ PERSISTENZA BLINDATA IN CACHE D'UFFICIO
if (typeof stivaLogInCache === "function") {
await stivaLogInCache(logPayload);
} else {
originaleConsoleError.apply(console, [
"[๐จ PA AUDIT - VAULT LOCKOUT]",
"Sottosistema di persistenza volatile in Cache non accessibile!"
]);
}
} catch (criticalError) {
// Blocco di emergenza assoluta: usa il descrittore nativo per rompere categoricamente il loop ricorsivo
originaleConsoleError.apply(console, [
"[๐จ PA AUDIT - CATASTROPHIC FAILURE]",
"Impossibile blindare la telemetria nel bunker criptato:", criticalError.message
]);
}
}
/**
* @function stivaLogInCache
* @async
* @description ๐๏ธ๐ Salva il log forense cifrato direttamente nella Cache come risorsa volatile.
* Inserisce il payload sotto forma di Response binaria cifrata (`encryptBlob`) associata ad un URI fittizio,
* garantendo la persistenza isolata ed effettuando la bonifica perentoria della RAM.
* @param {Object} logPayload - Dati strutturati di telemetria e audit da blindare in conformitร al CAD.
*/
async function stivaLogInCache(logPayload) {
try {
// โ APERTURA DEL MAGAZZINO CACHE NATIVO DEL ๐ช PANZER v7.3+
const cache = await caches.open(CONFIG.cacheName);
const timestamp = Date.now();
// ๐ GENERAZIONE E NORMALIZZAZIONE STRICT DELL'URI VIRTUALIZZATO
const logUri = normalize(`${CONFIG.ROOT}${AUDIT_CONFIG.pathFintoLog}${timestamp}.json`);
// ๐ง ENCODING DEL PAYLOAD IN STREAM BINARIO PER PREVENIRE TRACCIABILITร IN CHIARO IN RAM
const stringaLog = JSON.stringify(logPayload);
const encoder = new TextEncoder();
const bufferGrezzo = encoder.encode(stringaLog);
const blobGrezzo = new Blob([bufferGrezzo], { type: AUDIT_CONFIG.headersFormali.contentType });
// ๐ CIFRATURA MOLECOLARE AES-GCM 256-BIT (FUNZIONE NATIVA CORE PANZER)
const blobCifrato = await encryptBlob(blobGrezzo);
// ๐ INIEZIONE METADATI E INTESTAZIONI FORMALI DI TRACCIABILITร
const nuoveHeaders = new Headers();
nuoveHeaders.set('Content-Type', AUDIT_CONFIG.headersFormali.contentType);
nuoveHeaders.set(AUDIT_CONFIG.headersFormali.headerCifrato, 'true');
nuoveHeaders.set(AUDIT_CONFIG.headersFormali.headerData, timestamp.toString());
const rispostaLog = new Response(blobCifrato, { status: 200, headers: nuoveHeaders });
// ๐ฅ STIVAGGIO ATOMICO NELLA CACHE COMO RISORSA DI TRANSITO
await cache.put(logUri, rispostaLog);
// ๐งน BONIFICA PERENTORIA DELLA RAM (Anti-Memory Inspection Protection)
bufferGrezzo.fill(0);
// ๐ก TELEMETRIA DI RETE ADATTIVA: Innesco automatico immediato dello svuotamento della coda
await svuotaCodaLogDallaCache();
} catch (errore) {
originaleConsoleError.apply(console, ["[๐จ PA AUDIT - CACHE STOWAGE FAULT]", errore.message]);
}
}
/**
* @function svuotaCodaLogDallaCache
* @async
* @description ๐ก๐ Scansiona le risorse di log salvate nella cache, le decifra a runtime,
* le trasmette all'Ente e le ELIMINA dalla cache solo ed esclusivamente se l'invio ha successo.
* Sfrutta ESCLUSIVAMENTE la profilazione dinamica interna del Panzer per determinare lo stato online reale.
*/
async function svuotaCodaLogDallaCache() {
// ๐ PROFILAZIONE FISICA DEL CANALE INTERNO DEL PANZER
const profile = getNetworkProfile(self.navigator);
// ๐ซ CONTROLLO DETERMINISTICO NATIVO: Se il profilo non esiste o coincide con i parametri hardware
// del blocco radio 'Verylow' (ovvero quando il sistema rileva lo stato offline reale), abortisce istantaneamente.
if (!profile || profile.limit === CONFIG.networkResilient.profiles['Verylow'].limit) {
return;
}
try {
// ๐ฅ ACCESSO AL SEGMENTO DI CACHE CERTIFICATO
const cache = await caches.open(CONFIG.cacheName);
const chiaviInCache = await cache.keys();
// ๐ต๏ธโโ๏ธ SCANSIONE CICLICA PER L'ISOLAMENTO DEGLI ASSET COMPATIBILI COI LOG TELEMETRICI
const logPendenti = chiaviInCache.filter(req => req.url.includes(`/${AUDIT_CONFIG.pathFintoLog}`));
// ๐ ZERO LOG CORRISPONDENTI: RILASCIO IMMEDIATO DEL THREAD LOCK
if (logPendenti.length === 0) return;
for (const richiesta of logPendenti) {
// ๐ AGGIORNAMENTO RUNTIME PROFILO: Verifica se la rete รจ precipitata nel frattempo
const controlloProfiloCorrente = getNetworkProfile(self.navigator);
if (!controlloProfiloCorrente || controlloProfiloCorrente.limit === CONFIG.networkResilient.profiles['Verylow'].limit) {
break;
}
const rispostaCifrata = await cache.match(richiesta);
if (!rispostaCifrata) continue;
// ๐ฆ ESTRAZIONE BLOB CRITTOGRAFATO DALLA RISORSA DI TRANSITO
const blobCifrato = await rispostaCifrata.blob();
// ๐ DECIFRATURA:
let blobDecifrato = await decryptBlob(blobCifrato);
const bufferDecifrato = await blobDecifrato.arrayBuffer();
const decoder = new TextEncoder();
const stringaLog = new TextDecoder().decode(bufferDecifrato);
const oggettoLog = JSON.parse(stringaLog);
// โ๏ธ MARCATURA FORENSE: Tracciabilitร delle transizioni di stato del pacchetto
oggettoLog.livello += "_RETRANSMITTED_FROM_CACHE_RESOURCE";
// โฑ๏ธ RESILIENZA: Gestione del timeout adattivo ricavato dal profilo reale
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), profile.timeout * 1000);
try {
// ๐ก TRASMISSIONE VERSO L'ENDPOINT DELL'ENTE PUBBLICO
const rispostaRete = await fetch(AUDIT_CONFIG.endpointTelemetria, {
method: "POST",
headers: {
"Content-Type": AUDIT_CONFIG.headersFormali.contentType,
[AUDIT_CONFIG.headersFormali.headerProvenienza]: AUDIT_CONFIG.headersFormali.origin
},
body: JSON.stringify(oggettoLog),
signal: controller.signal
});
// ๐ฅ CONDIZIONE IMPERATIVA DI BONIFICA DELLE RISORSE LOCALI
if (rispostaRete.ok) {
// ELIMINAZIONE DEFINITIVA DALLA CACHE: Avviene SOLO dopo la certezza matematica del 200 OK
await cache.delete(richiesta);
}
} catch (erroreInvio) {
// ๐จ SE CEDE LA RETE DURANTE IL TRANSITO, IL LOG RIMANE SALVO E PROTETTO NELLA RISORSA CACHE
originaleConsoleError.apply(console, ["[๐จ PA AUDIT - RETRANSMIT NETWORK INTERRUPTED]", errorelnvio.message]);
break;
} finally {
// ๐งน DISATTIVAZIONE MONITOR DI TIMEOUT E DISTRUZIONE MEMORIA RESIDUA
clearTimeout(timeoutId);
// ๐งฏ PULIZIA MOLECOLARE (Previene attacchi di Cold Boot e ispezione dei segmenti di memoria volatili)
new Uint8Array(bufferDecifrato).fill(0);
blobDecifrato = null;
}
}
} catch (erroreGenerale) {
originaleConsoleError.apply(console, ["[๐จ PA AUDIT - CACHE ENGINE CRITICAL]", erroreGenerale.message]);
}
}
// self.addEventListener('fetch', (event) => { ...
// ๐ SEZIONE II: FLUSSO DI INSTRADAMENTO RETE ATTIVA (ONLINE GATEWAY)
// const finalStrategy = assegnaFlussoPolimorfo(cached, self.navigator);
// const isOnline = await checkRealOnline('fetch');
// if (isOnline) {
// ๐๏ธ INNESTO FORMALE DEL CODICE: SVUOTAMENTO CODA LOG IN BACKGROUND
// Sfrutta la portante della rete reale confermata da checkRealOnline
if (typeof svuotaCodaLogDallaCache === "function") {
/**
* @description event.waitUntil estende il ciclo di vita del fetch event,
* consentendo la trasmissione asincrona e la bonifica dei log protetti
* in cache senza causare latenza sul thread di instradamento primario.
*/
event.waitUntil(svuotaCodaLogDallaCache());
}
// โ๏ธ DA QUI IN POI PROSEGUE INALTERATO IL CODICE ORIGINALE...Tip
โก๏ธ Benvenuto!
- Se riscontri crash...
- pulisci la cache o forza l'aggiornamento dei Service Worker per riallineare la stiva alla v7.3.
Caution
Il codice sorgente di PWA Pizza Engine รจ rilasciato sotto licenza [EUPL-1.2].
๐ I testi e i diagrammi contenuti in questa Wiki ๐ sono distribuiti in modalitร aperta secondo le linee guida Nazionali ๐ฎ๐น per il riuso della Pubblica Amministrazione.
timeline
title โก Ciclo Operativo di ๐ PWA-Pizza-Engine (โ๏ธ Core: ๐ช panzer v7+) ๐ฆ
Fase 1 : ๐ Caricamento della Root : โ๏ธ Identificazione di CONFIG.ROOT : ๐ท Intercettazione Proxy Globale
Fase 2 : ๐ Attivazione del SW : ๐ฌ deepVaultValidation : ๐ก๏ธ Canary Check (Vettore KANARY) : ๐ Sblocco Master Key AES-GCM
Fase 3 : ๐ฑ Navigazione Utente : ๐ฅ getNetworkProfile (Analisi RTT/Downlink) : ๐๏ธ Fetch asincrona parallela
Fase 4 : ๐ญ Operazioni di Sfondo : ๐ฏ Validazione isValidBlob : ๐ Cifratura Hardware : โณ Hot Update / TTL 7d
Fase 5 : ๐ชจ Scenario d'Emergenza : ๐ฆ Bunker Mode immediato : ๐ Decrittazione ArrayBuffer : โ Fallback su Error Page 503
-
Dalla v7.3+ del Panzer ๐ช, l'engine introduce la Protezione dei Dati a livello locale ai massimi standard previsti dal CAD e dall'AgID per la gestione delle informazioni nei servizi pubblici digitali:
-
๐ Isolamento dei Flussi (Zero-Trust): Separazione netta tra il magazzino di cache utente volatile in chiaro e il Bunker Core cifrato.
-
๐ช๐บ๐ Licenza EUPL 1.2: Il codice รจ interamente conforme al modello di riuso software (Art. 69 CAD), garantendo la massima interoperabilitร e la tracciabilitร delle modifiche.
๐น๐ฑ๐ป Progressive Web App (PWA) Nativa
* Sviluppo puro (Vanilla JavaScript) da zero, senza l'ausilio di framework di terze parti, per garantire il massimo controllo del ciclo di vita del software, assenza di debito tecnologico e prestazioni ottimali anche su dispositivi datati.
๐น Installazione nativa cross-platform senza intermediazione o dipendenza dagli store proprietari.
๐น ๐ฆ๐ก๏ธ Bunker Mode (Resilienza Network-First con Profilazione Dinamica e SW Forensics)
๐น ๐๐๏ธ Network-First con Race Condition: Massima freschezza dei dati in tempo reale, regolata da timeout dinamici (da 15 a 120 secondi) calcolati dall'algoritmo `getNetworkProfile` in base alla qualitร della connessione (RTT e downlink).
๐น ๐ต๏ธโโ๏ธ๐ฌ SW Forensics & Validazione Strict: Controllo dimensionale preventivo e analisi binaria dei file (*Magic Numbers*) tramite la routine `isValidBlob` per bloccare sul nascere attacchi di Cache Poisoning o corruzioni da captive portal.
๐น ๐๏ธ Separazione dei Magazzini: Isolamento logico stringente tra l'area protetta dei file di sistema (`๐ฆ๐ก๏ธ Bunker`) e quella volatile delle risorse utente (`๐ฆ๐ Magazzino`), con routine automatiche di auto-rigenerazione e tabula rasa controllata via `postMessage` in caso di corruzione del Vault.
๐นConformitร e Riuso Open Source
๐น ๐ช๐บ๐ Rilascio sotto licenza [EUPL-1.2], che garantisce la libera condivisione, la modifica e il riuso del codice da parte di qualsiasi altro Ente o Pubblica Amministrazione, azzerando i costi di licensing e promuovendo la sovranitร tecnologica digitale.
๐น ๐ท๏ธ Metadati nativi integrati tramite file `publiccode.yml` per l'indicizzazione automatica nei motori di ricerca AgID.
mindmap
root((โ๏ธ Core: ๐ช Panzer v7.3+))
๐ Scope Globale
โ๏ธ CONFIG.ROOT
๐ท Intercettazione Proxy
๐ Network Resilient
๐งฌ assegnaFlussoPolimorfo
โณ Timeout Profili Hardware
๐ฅ Smart Sync Differito
๐ต๏ธโโ๏ธ SW Forensics
๐ฌ๐ก๏ธ DNA Check
๐ CONFIG.minSizeMap
๐ Magic Numbers Hex
๐ฆ Vault Sec
๐ AES GCM 256 bit RAM
๐งน Bonifica fill(0)
๐ค๐ก๏ธ Canary Check KANARY
Storage Logico
๐ฆ๐ก๏ธ Bunker Core
๐ฆ๐ Magazzino Volatile
Il monitoraggio dell'indicizzazione e l'evoluzione dei requisiti sono tracciati pubblicamente:
-
๐ Repository Sorgente: Ospitato su GitHub con pipeline pronte per il deployment.
-
๐ฃ Canale di Validazione: Tracciato tramite la Issue ufficiale di inserimento nel catalogo di Developers Italia.
๐ ๐ Capitolo 1:
Introduzione alla PWA ed EUPL-1.2
- Analisi dei requisiti legali, conformitร al CAD (Art. 68/69) e filosofia dello sviluppo Vanilla JS senza framework esterni.
๐ โ๏ธ Capitolo 2:
Architettura e Funzionamento (Bunker Mode)
- Flussi logici di intercettazione, crittografia AES-GCM del Vault e logica dei timeout di rete.
๐ ๐ก Capitolo 3:
Note Finali ed Esempi di Utilizzo nella PA
- Casi d'uso reali per la digitalizzazione degli Enti Locali e gestione dei servizi offline sul territorio.
๐ ๐๏ธ Perchรฉ la PA deve adottare l'Architettura Panzer v7
- Studio comparativo sul risparmio economico, indipendenza tecnologica (No Vendor Lock-in) e sicurezza dei dati dei cittadini.
๐ ๐ฅ Capitolo 4:
La Prova del Battesimo di Fuoco (Debug & Log)
- Telemetria di console, log (
๐ฆ๐ก๏ธ,๐ฆ๐, ... ) e diagrammi di sequenza per la gestione delle emergenze.
๐ ๐ก๏ธ Capitolo 5:
Paradigma Difensivo Avanzato e Logiche di Autodifesa
- Ingegneria inversa del rischio applicata al web. Analisi dei vettori d'attacco client-side, mitigazione del tampering e protocolli di Zeroization (Purga Atomica).
๐ ๐ Capitolo 6:
Determina di Adozione Immediata
- Modello documentale pronto ed esecutivo per i dirigenti della Pubblica Amministrazione.
๐ ๐ง Capitolo 7:
Estensione Architetturale Zero-Trust
- Concept architetturale e framework di sicurezza per le Pubbliche Amministrazioni intenzionate ad adottare il modello.
๐ ๐๏ธ๐จ Capitolo 8: Protezione PA
- Disciplinare Tecnico di Tutela dell'Ente con linee guida per Affidamenti Esterni.
-
๐ 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 ๐ฉ๏ธ