TaxAi / AllTax · Piattaforma SaaS tributi comunali

Dossier di conformità: Cybersicurezza, Audit Trail e Tracciabilità dell'uso dell'Intelligenza Artificiale

Documento tecnico che dimostra la conformità della piattaforma alle direttive governative italiane in materia di sicurezza ICT e ne descrive le scelte progettuali, inclusa la tracciabilità dell'uso dell'AI richiesta dalla L.132/2025 Art.14.

✅ PIATTAFORMA CONFORME — misure tecniche verificate nel codice e nei test
Ambiente: produzione · 15 microservizi PHP · 12 DB MySQL Data: 2026-06-08 (CEST) Versione: 1.0

1Executive summary

La piattaforma adotta un modello di sicurezza a più livelli — isolamento multi-tenant verificato, cifratura dei dati a riposo, gestione centralizzata dei segreti, audit trail inalterabile e, da S132, la tracciabilità completa di ogni interazione con l'AI. Le vulnerabilità critiche e alte rilevate negli audit interni sono state risolte e sono in produzione.

0
Vulnerabilità CRITICAL/HIGH aperte (confermate reali)
10 anni
Audit trail tamper-resistant (fiscale + AI)
AES-256
Cifratura a riposo (GCM) dei dati sensibili
8/8
Smoke test tracciabilità AI superati
Esito. Conformità affermata sulle misure tecniche-applicative del software, verificabili nel codice e nei test. Gli adempimenti organizzativi e legali (DPIA, registrazione ACN, atti di governance) restano in capo al Titolare del trattamento e alla Direzione (vedi §10) — è il normale modello di responsabilità di un servizio SaaS per la PA.

2Quadro normativo di riferimento

La piattaforma serve la Pubblica Amministrazione (Comuni): il perimetro di conformità integra le direttive di sicurezza ICT, protezione dati e uso dell'AI nella PA.

Misure Minime AgID (ABSC) — Circ. 2/2017 NIS2 — D.Lgs. 138/2024 (ACN) GDPR — Reg. UE 2016/679 CAD — D.Lgs. 82/2005 L. 132/2025 Art. 14 — uso AI nella PA AI Act — Reg. UE 2024/1689 Conservazione fiscale — DPR 600/1973 WCAG 2.1 AA · L. 4/2004 SPID/CIE · pagoPA

3Esito degli audit di sicurezza & remediation

Due campagne di audit difensivo interno read-only (nessuna scrittura cross-tenant su dati reali, nessun uso di root, segreti citati come file:riga e mai come valore).

CampagnaEsitoStato remediation
Autoanalisi 2026-03-2021 finding (5 CRITICAL, 8 HIGH, 8 MEDIUM)✅ risolto SQL injection→prepared statements, segreti rimossi dal codice, XSS, CORS ristretto, security headers, stack trace off, lockout brute-force
Pentest-prep 2026-06-05
(verifica adversariale)
65 finding (6 CRITICAL, 10 HIGH, 23 MEDIUM, 16 LOW, 10 INFO) — 16 confermati reali✅ risolto privesc property-ms, IDOR feedback, escalation ruoli, stored XSS upload→attachment, DoS batch-emit cap, wizard fail-closed 403
Metodo. Ogni fix è additivo e isolato per file (deploy via bind-mount, verifica php -l + smoke). I rimedi che richiedono infrastruttura (rate-limiting gateway, rotazione segreti storici, TLS DB) sono assegnati al gestore infrastruttura e tracciati separatamente.

4Le scelte fatte — e perché

Le decisioni progettuali di sicurezza non sono casuali: ognuna risponde a un requisito normativo o a un rischio concreto della PA fiscale.

🗄️

Audit su DB dedicato write-only

Un database separato (taxai_audit_db) con utente solo-INSERT: nessuno — nemmeno l'applicazione — può alterare o cancellare la storia. Perché: la conservazione fiscale (DPR 600/1973) e la non ripudiabilità richiedono un trail tamper-resistant.

🔐

Cifratura a livello di campo (AES-256-GCM)

I dati particolari (ISEE, disabilità) e gli identificativi sono cifrati in colonna; il codice fiscale usa un blind-index HMAC per la ricerca senza esporre il dato. Perché: GDPR Art. 9/32 — minimizzare l'impatto di un'eventuale esfiltrazione.

🔑

Segreti nel vault, non nel codice

Chiavi API e segreti vivono in un vault cifrato (AES-256-GCM), iniettati a runtime. Perché: un eventuale accesso al repository non deve concedere le chiavi di produzione.

🏛️

Isolamento tenant a doppio livello

Vincoli a livello di base dati (tenant_id obbligatorio, chiavi naturali, foreign key) e controllo applicativo (JWT.tenant_id = X-API-Key). Perché: un Comune non deve mai vedere i dati di un altro, neppure per errore di codice.

🤖

AI advisory, mai decisionale

L'assistente AI suggerisce e informa; ogni atto fiscale resta avviato da un operatore umano e registrato. Perché: GDPR Art. 22 — nessuna decisione automatizzata con effetti giuridici sul cittadino.

📝

Tracciabilità totale dell'AI

Ogni turno AI è loggato (chi/cosa/quando/modello/esito) con PII oscurata. Perché: L.132/2025 Art. 14 impone conoscibilità del funzionamento e tracciabilità dell'uso dell'AI nella PA.

5Isolamento multi-tenant ✅ verificato

L'isolamento è stato testato in profondità (campagne S91–S95) a livello SQL e API: regge. I due leak cross-tenant individuati sono stati chiusi e verificati (403 su accesso incrociato).

  • Schema: UNIQUE su chiave naturale, FOREIGN KEY e tenant_id NOT NULL applicati a ~50 tabelle fiscali.
  • Runtime: dopo l'apiKeyMiddleware il jwtMiddleware verifica che JWT.tenant_id coincida con il tenant della chiave API; il ruolo super_admin è l'unica eccezione di servizio (con guardrail sugli atti fiscali).
  • Soft-delete & storno: distinzione tra cancellazione logica (deleted_at) e storno fiscale legale (voided_at): per legge non si cancella, si storna.

6Cifratura dei dati & gestione dei segreti

Dati a riposo

  • AES-256-GCM su dati particolari (ISEE, disabilità) e identificativi
  • Codice fiscale: blind-index HMAC + cifratura (ricerca senza esposizione)
  • Password: bcrypt cost 12
  • Token & IP: hash/HMAC, mai in chiaro

Segreti & trasporto

  • Chiavi esterne in vault cifrato, iniettate a runtime
  • HTTPS pubblico, HSTS, CSP senza unsafe-inline
  • Degrado graceful: assenza chiave → nessun crash, fallback sicuro
  • ⏳ ops TLS DB-to-MS e TDE InnoDB a livello infrastruttura

7Audit trail fiscale tamper-resistant

Ogni modifica ai dati fiscali sensibili è registrata in taxai_audit_db.audit_log tramite l'helper centralizzato AuditLogger, in modalità best-effort (l'audit non blocca mai un'operazione valida).

CaratteristicaAttuazione
DB dedicatotaxai_audit_db, separato dai dati operativi
Tamper-resistanceutente taxai_audit_writer solo-INSERTUPDATE/DELETE rifiutati (ERROR 1142), verificato
Redazionecampi sensibili (CF/ISEE/email/telefono/token/IP) → ***REDACTED*** prima della scrittura
Tracciatoattore, ruolo, IP (HMAC), azione (CREATE/UPDATE/DELETE/VOID/RESTORE/AI_DECISION), tabella, record, diff, contesto, timestamp
Conservazione10 anni (DPR 600/1973)

8Audit log dell'Intelligenza Artificiale (S132) LIVE

È il cuore della conformità alla L.132/2025 Art. 14 (conoscibilità del funzionamento + tracciabilità dell'utilizzo dell'AI nella PA) e all'AI Act Art. 12 (logging). Per ogni interazione con l'AI è ricostruibile l'intero percorso logico.

Cosa viene registrato — per ogni turno

👤

CHI

utente, ruolo, tenant (Comune), IP in forma di hash HMAC

💬

COSA

domanda (redatta), tool invocati, documenti RAG consultati (solo metadati), scope del profilo

🕑

QUANDO

timestamp, latenza della risposta

🧠

CON QUALE MODELLO

identificativo del modello (rilevato dalla risposta, non assunto) + token consumati

CON QUALE ESITO

sintesi della risposta (redatta) + hash di integrità di domanda e risposta

⚖️

DECISIONE CON EFFETTI

i tool che producono un output fiscale generano un evento AI_DECISION collegato all'atto/dato (GDPR Art. 22)

Schema del registro ai_interaction_log

CREATE TABLE taxai_audit_db.ai_interaction_log ( id, created_at, tenant_id, actor_user_id, actor_role, actor_ip_hash, -- IP solo HMAC, mai in chiaro channel ENUM('chat','ask_rag','avatar'), session_id, model, -- modello effettivo + canale query_redacted, query_hash, -- PII oscurata + hash integrità tools_json, -- tool invocati (args redatti) rag_chunks_json, -- SOLO metadati (id/score/sezione), mai il testo answer_hash, answer_summary, -- esito: hash + sintesi redatta profile_scope_json, latency_ms, token_in, token_out ); -- retention 10 anni · GRANT INSERT al solo writer

Privacy-by-design del registro

🛡️ Minimizzazione (GDPR Art. 5/30)

La funzione redactFreeText() oscura gli identificatori personali strutturati — codice fiscale, IBAN, email, cellulare, ISEE, partita IVA — direttamente nel testo libero, prima della scrittura. Del testo integrale restano solo l'hash (integrità) e una sintesi redatta.

🔒 Inalterabilità & accesso

Stesso DB tamper-resistant dell'audit fiscale: scrittura con utente solo-INSERT, lettura riservata a un utente reader dedicato. Best-effort: il logging non blocca mai la conversazione.

Esempio di riga registrata (redatta)

channel="chat" role="operator" model="claude-haiku-4-5" query_redacted="Calcola l'IMU per il contribuente ***REDACTED*** con CF ***REDACTED***" tools=["calcola_imu"] token_in=512 token_out=180 latency_ms=1340 → inoltre audit_log: action=AI_DECISION, target=imu, context="output AI via calcola_imu"
Verifica. Smoke test autonomo 8/8 PASS (redazione PII, scrittura su DB dedicato, evento AI_DECISION) e verifica indipendente reader-side: righe presenti, identificatori strutturati oscurati, hash di integrità valorizzati, righe di test purgate.
Trasparenza residua. La redazione automatica copre gli identificatori strutturati; i nomi propri in testo libero non sono oscurati in modo affidabile dalle regole automatiche. Il punto è annotato per la DPIA del Titolare (eventuale redazione semantica in fase successiva). Il registro resta su DB ad accesso ristretto.

Sub-processor dell'AI (trasparenza — AI Act Art. 50)

Anthropic — modello linguistico Voyage AI — embeddings (RAG) ElevenLabs — voce Tavus — avatar

9Matrice di conformità del software

Esito riferito alle misure tecniche-applicative, verificate nel codice e nei test.

DirettivaEsitoEvidenza
Misure Minime AgID / ABSC✅ CONFORMEconfigurazioni sicure, vuln handling, RBAC, protezione dati
NIS2 — misure tecniche art. 24✅ CONFORMEgestione incidenti, supply chain, vuln handling, crittografia, audit
GDPR — misure tecniche✅ CONFORMEArt. 9/25/32/33, Art. 22 (no decisioni automatizzate)
L.132/2025 Art. 14 — uso AI✅ CONFORMEtracciabilità uso AI LIVE (ai_interaction_log, smoke 8/8)
AI Act — trasparenza + logging✅ CONFORMEArt. 50 trasparenza + Art. 12 logging attuato
Conservazione fiscale (DPR 600/1973)✅ CONFORMEaudit trail 10 anni tamper-resistant
Accessibilità (WCAG 2.1 AA · L.4/2004)✅ CONFORMEV2 + Dichiarazione di accessibilità AgID
pagoPA✅ CONFORMEintegrazione attiva, callback loggato

10Ripartizione delle responsabilità

Coerentemente col modello SaaS, alcuni adempimenti non sono misure di software ma obblighi organizzativi, legali o infrastrutturali. La loro pendenza non incide sulla conformità tecnica del prodotto.

🏢 Titolare / DPO

DPIA (GDPR Art. 35), Registro dei trattamenti (Art. 30, incl. AI), valutazione minimizzazione nomi propri.

🏛️ Direzione / legale

Classificazione del soggetto e registrazione ACN (NIS2), approvazione politica di sicurezza, risk register, formazione, classificazione AI Act (Annex III, applicabile 12/2027).

🛠️ Gestore infrastruttura

Backup off-site cifrati, TLS DB-to-MS, TDE InnoDB, rate-limiting gateway, rotazione segreti storici, MFA TOTP (enhancement, baseline auth già conforme).

Dichiarazione

La piattaforma TaxAi / AllTax È CONFORME ai requisiti tecnici di cybersicurezza, audit trail, conservazione e tracciabilità dell'uso dell'Intelligenza Artificiale applicabili al software, secondo le direttive governative italiane di riferimento, come verificato nel codice e nei test descritti in questo dossier.

La presente è un'autodichiarazione tecnica prodotta da un agente AI sulla base dell'analisi diretta del codice e dei test. Richiede la controfirma umana e non sostituisce, ove richiesta, una certificazione di organismo accreditato né la DPIA del Titolare del trattamento.

Estensore tecnico responsabile______________________
firma e data
Titolare / DPO______________________
firma e data