blindare intelligenza artificiale locale
A tutt’oggi, l’adozione di sistemi di Intelligenza Artificiale Generativa nella Pubblica Amministrazione e nelle scuole apre due questioni centrali, in merito la sovranità del dato e la protezione della proprietà intellettuale, quindi come ” blindare intelligenza artificiale locale” ?
Ho sviluppato un progetto, denominato “Legal RAG”, completamente su workstation Acer GN100 con architettura NVIDIA Blackwell, non mi sono limitatoi a creare un assistente capace di interrogare manuali complessi , ma ho progettato una vera e propria Appliance: un sistema “blindato” pensato per impedire copie non autorizzate e rendere il codice sorgente non accessibile.
Perché proteggere un’IA locale?
A differenza dei servizi cloud come ChatGPT, un sistema On-Premise espone fisicamente codice e modelli sul disco della macchina. Senza adeguate protezioni, il cliente o terze parti potrebbero:
- copiare l’intero software su altri computer;
- leggere i System Prompt, che rappresentano il know-how con cui l’IA interpreta norme e documenti;
- modificare parametri e controlli di sicurezza, alterando il comportamento dell’assistente.
Per mitigare questi rischi ho implementato un sistema combinato di Node-Locking basato su UUID e compilazione binaria.
Il blocco hardware tramite UUID
La prima linea di difesa è il legame diretto tra software e hardware. Ogni scheda madre possiede infatti un identificativo univoco universale (UUID).
Quindi ho sviluppato un modulo Python denominato security.py. Una funzione dedicata interroga il BIOS del sistema attraverso il percorso /sys/class/dmi/id/product_uuid.
Il flusso operativo è piuttosto semplice, quanto efficace:
- il programma si avvia e legge l’UUID della macchina;
- confronta il valore rilevato con quello autorizzato in fase di produzione;
- se i due codici non coincidono, il software interrompe immediatamente l’esecuzione prima ancora di caricare interfaccia o modelli.
In questo modo, lo spostamento dell’applicazione su un altro computer rende il sistema inutilizzabile.
Dall’offuscamento alla compilazione binaria: Cython
Nascondere il codice non è sufficiente. Un utente esperto potrebbe comunque leggere i file Python (.py) e rimuovere il controllo UUID. Per questo motivo ho deciso di implementare l’offuscamento tradizionale alla compilazione binaria tramite Cython.
Il processo avviene in tre fasi:
- Traduzione in C
Cython converte i file Python — comelogic.py,db.pyesecurity.py— in codice C. - Compilazione in codice macchina
Il codice C viene compilato in file binari.so(Shared Objects). - Eliminazione dei sorgenti
Una volta generati i binari, i file sorgente originali vengono rimossi dal sistema.
Il risultato è che la logica applicativa non è più leggibile in chiaro. Chi tenta di aprire i moduli principali non trova codice interpretabile, ma solo binari comprensibili dal processore. In questo modo vengono protetti sia i System Prompt sia gli algoritmi proprietari di ricerca.
L’architettura “Bridge” tra interfaccia e core applicativo
Framework come Chainlit e Streamlit possono avere difficoltà a gestire moduli completamente compilati durante l’avvio. Per questo ho introdotto un’architettura a “ponte”.
La struttura è composta da due livelli:
- Wrapper file (
app.py/admin.py)
File minimali in chiaro che avviano l’interfaccia senza contenere logica intelligente. - Core binario (
logic.so/db.so)
Moduli compilati che contengono il motore applicativo e le funzioni sensibili.
I wrapper richiamano esclusivamente le funzioni esposte dai moduli binari.
L’intero sistema opera all’interno di container Docker configurati in modalità privileged. Questo consente all’applicazione di rimanere isolata, mantenendo però accesso all’hardware della workstation Acer GN100 per la validazione della licenza UUID.
Gocryptfs
L’ultimo livello di protezione riguarda il furto fisico della macchina.
L’intero progetto viene inserito all’interno di un filesystem cifrato tramite Gocryptfs. Anche in caso di estrazione dell’hard disk, un soggetto non autorizzato non potrebbe leggere né i contenuti né i nomi dei file.
Il sistema diventa accessibile solo dopo l’inserimento della Password Master all’avvio, che consente il montaggio del filesystem criptato sul disco reale.
Conclusione
La combinazione di compilazione in linguaggio macchina, identificazione hardware e cifratura del filesystem trasforma il mio progetto “Legal AI” installato e funzionante su Acer GN100 in qualcosa di più di un semplice software.
Il risultato è una Appliance AI locale progettata per proteggere codice, modelli e know-how proprietario, mantenendo le prestazioni della piattaforma NVIDIA Blackwell e garantendo al tempo stesso un livello di sicurezza coerente con ambienti enterprise e istituzionali.
AI Disclosure
Le opinioni espresse derivano da attività di studio e ricerca personale sui sistemi AI e sulla piattaforma ACER GN100 applicati allo sviluppo di soluzioni On-Premise. Alcune attività di revisione editoriale sono state supportate da strumenti di AI generativa