Normativa Artificiale

Il 30 Marzo 2023 in un comunicato, il Garante della Privacy, organo di controllo europeo in materia di tutela dei Dati personali, blocca “ChatGPT” in Italia, per aver raccolto in maniera illecita dati personali e per non aver introdotto di sistemi per la verifica dell’età degli iscritti.

https://www.garanteprivacy.it/home/docweb/-/docweb-display/docweb/9870847

Che cosa sia ChatGPT è noto ai più, comunque merita un breve ripasso.

ChatGPT è un software di IA, disponibile in varie modalità sul mercato. Principalmente noto come servizio online, gratuito, al pubblico, viene venduto a sviluppatori sotto forma di API (Application Programming Interface), Applicazione che consente a due software di comunicare tra loro. ChatGPT sfrutta il GPT-3, un modello di previsione linguistica addestrato in deep learning su ampissimi dataset, per generare a richiesta testi di diverse tipologie.

L’evento ha avuto una risonanza ampia e importante: OpenAI, la casa madre di ChatGPT ,oltre a creare divertenti momenti di discussione, raccoglieva i Dati personali degli utenti registrati in maniera illecita, permettendo a chiunque di registrarsi, senza controlli sui limiti d’età – e su questo punto mi permetto di far notare che sono decisamente in buona compagnia.

Ma prima di questo “evento” un scossa di terremoto molto più profonda, e forse per questo meno nota, ha incrinato la fiducia verso l’Intelligenza Artificiale, nei suoi smisurati sviluppi e campi di aplicazione.

Il 22 Marzo, in una lettera aperta, oltre 1000 tra i più eminenti esponenti e ricercatori in materia, chiedono la sospensione di tutte le ricerche di sviluppo di Intelligenza artificiale.

Che i due eventi siano effettivamente collegati è tutto da dimostrare, ma sicuramente dimostra come la lente d’ingrandimento degli organi di controllo abbia messo a fuoco l’IA evidenziandone lacune e debolezze.

La Lettera aperta sulla moratoria alla ricerca in campo I.A.

I sistemi di IA dotati di un’intelligenza competitiva con quella umana possono comportare rischi profondi per la società e l’umanità, come dimostrato da ricerche approfondite [1] e riconosciuto dai migliori laboratori di IA [2].

Come affermato nei Principi di Asilomar per l’intelligenza artificale, ampiamente approvati, l’IA avanzata potrebbe rappresentare un cambiamento profondo nella storia della vita sulla Terra e dovrebbe essere pianificata e gestita con cura e risorse adeguate.

 Sfortunatamente, questo livello di pianificazione e gestione non sta avvenendo, anche se negli ultimi mesi i laboratori di IA si sono impegnati in una corsa fuori controllo per sviluppare e impiegare menti digitali sempre più potenti che nessuno – nemmeno i loro creatori – è in grado di comprendere, prevedere o controllare in modo affidabile.

I sistemi di intelligenza artificiale contemporanei stanno diventando competitivi con gli esseri umani in compiti generali [3] e dobbiamo chiederci se sia il caso di lasciare che le macchine inondino i nostri canali di informazione: Dobbiamo lasciare che le macchine inondino i nostri canali di informazione con propaganda e falsità? Dovremmo automatizzare tutti i lavori, compresi quelli più soddisfacenti? Dovremmo sviluppare menti non umane che alla fine potrebbero superarci di numero, essere più intelligenti e sostituirci? Dobbiamo rischiare di perdere il controllo della nostra civiltà? Queste decisioni non devono essere delegate a leader tecnologici non eletti.

I potenti sistemi di intelligenza artificiale dovrebbero essere sviluppati solo quando saremo sicuri che i loro effetti saranno positivi e i loro rischi gestibili. Questa fiducia deve essere ben giustificata e aumentare con l’entità degli effetti potenziali di un sistema. La recente dichiarazione di OpenAI sull’intelligenza artificiale generale afferma che “a un certo punto, potrebbe essere importante ottenere una revisione indipendente prima di iniziare ad addestrare i sistemi futuri, e per gli sforzi più avanzati concordare di limitare il tasso di crescita dei calcoli utilizzati per creare nuovi modelli”. Siamo d’accordo. Quel punto è ora, lo abbiamo già raggiunto.

Pertanto, chiediamo a tutti i laboratori di IA di sospendere immediatamente per almeno 6 mesi l’addestramento di sistemi di IA più potenti del GPT-4. Questa pausa dovrebbe essere pubblica e verificabile. Questa pausa deve essere pubblica e verificabile e deve includere tutti gli attori chiave. Se tale pausa non può essere attuata rapidamente, i governi dovrebbero intervenire e istituire una moratoria.

I laboratori di IA e gli esperti indipendenti dovrebbero utilizzare questa pausa per sviluppare e implementare congiuntamente una serie di protocolli di sicurezza condivisi per la progettazione e lo sviluppo di IA avanzate, rigorosamente controllati e supervisionati da esperti esterni indipendenti. Questi protocolli dovrebbero garantire che i sistemi che vi aderiscono siano sicuri al di là di ogni ragionevole dubbio.[4]

Ciò non significa una pausa nello sviluppo dell’IA in generale, ma solo un passo indietro rispetto alla pericolosa corsa verso modelli black-box sempre più grandi e imprevedibili con capacità emergenti. La ricerca e lo sviluppo dell’IA dovrebbero concentrarsi sul rendere i potenti sistemi all’avanguardia di oggi più accurati, sicuri, interpretabili, trasparenti, robusti, allineati, affidabili e leali.

Parallelamente, gli sviluppatori di IA devono lavorare con i politici per accelerare drasticamente lo sviluppo di solidi sistemi di governance dell’IA. Questi dovrebbero come minimo includere:

autorità di regolamentazione nuove e capaci dedicate all’IA;

sorveglianza e monitoraggio di sistemi di IA altamente capaci e di grandi bacini di capacità computazionale;

sistemi di provenienza e watermarking per aiutare a distinguere i modelli reali da quelli sintetici e per tracciare le fughe di notizie;

un robusto ecosistema di auditing e certificazione;

responsabilità per i danni causati dall’IA;

solidi finanziamenti pubblici per la ricerca tecnica sulla sicurezza dell’IA;

istituzioni ben finanziate per affrontare i drammatici sconvolgimenti economici e politici (soprattutto per la democrazia) che l’IA causerà.

L’umanità può godere di un futuro fiorente con l’IA. Essendo riusciti a creare potenti sistemi di IA, possiamo ora goderci una “estate dell’IA” in cui raccogliere i frutti, progettare questi sistemi per il chiaro beneficio di tutti e dare alla società la possibilità di adattarsi. La società ha messo in pausa altre tecnologie con effetti potenzialmente catastrofici per la società [5] e possiamo farlo anche in questo caso. Godiamoci una lunga estate dell’IA, non precipitiamoci impreparati in un autunno.

Traduzione realizzata con l’ausilio di DeepL

Note e referenze

[1] Bender, E. M., Gebru, T., McMillan-Major, A., & Shmitchell, S. (2021, March). On the Dangers of Stochastic Parrots: Can Language Models Be Too Big?🦜. In Proceedings of the 2021 ACM conference on fairness, accountability, and transparency (pp. 610-623).Bostrom, N. (2016). Superintelligence. Oxford University Press.Bucknall, B. S., & Dori-Hacohen, S. (2022, July). Current and near-term AI as a potential existential risk factor. In Proceedings of the 2022 AAAI/ACM Conference on AI, Ethics, and Society (pp. 119-129).Carlsmith, J. (2022). Is Power-Seeking AI an Existential Risk?. arXiv preprint arXiv:2206.13353.Christian, B. (2020). The Alignment Problem: Machine Learning and human values. Norton & Company.Cohen, M. et al. (2022). Advanced Artificial Agents Intervene in the Provision of Reward. AI Magazine, 43(3) (pp. 282-293).Eloundou, T., et al. (2023). GPTs are GPTs: An Early Look at the Labor Market Impact Potential of Large Language Models.Hendrycks, D., & Mazeika, M. (2022). X-risk Analysis for AI Research. arXiv preprint arXiv:2206.05862.Ngo, R. (2022). The alignment problem from a deep learning perspective. arXiv preprint arXiv:2209.00626.Russell, S. (2019). Human Compatible: Artificial Intelligence and the Problem of Control. Viking.Tegmark, M. (2017). Life 3.0: Being Human in the Age of Artificial Intelligence. Knopf.Weidinger, L. et al (2021). Ethical and social risks of harm from language models. arXiv preprint arXiv:2112.04359.

[2] Ordonez, V. et al. (2023, March 16). OpenAI CEO Sam Altman says AI will reshape society, acknowledges risks: ’A little bit scared of this’. ABC News.Perrigo, B. (2023, January 12). DeepMind CEO Demis Hassabis Urges Caution on AI. Time.

[3] Bubeck, S. et al. (2023). Sparks of Artificial General Intelligence: Early experiments with GPT-4. arXiv:2303.12712.OpenAI (2023). GPT-4 Technical Report. arXiv:2303.08774.

[4] Ample legal precedent exists – for example, the widely adopted OECD AI Principles require that AI systems “function appropriately and do not pose unreasonable safety risk”.

[5] Examples include human cloning, human germline modification, gain-of-function research, and eugenics.

Fonte Il Sole 24 ore:

https://www.ilsole24ore.com/art/sospendere-grandi-esperimenti-intelligenza-artificiale-lettera-aperta-AEFqiMBD?refresh_ce=1

Versione originale:

Interessanti le firme note:

Elon Musk, CEO di SpaceX, Tesla & Twitter

Steve Wozniak, Co-fondatore, Apple

Andrew Yang, Candidato Democratico alle presidenziali USA del 2020, candidato a Sindaco di NYC nel 2021

Jaan Tallinn, Co-Fondatore of Skype.

Evan Sharp, Co-Founder, Pinterest

Tom Gruber, Siri/Apple, Humanistic.AI, Co-fondatore, CTO, co-fondatore di 4 compagnie

OpenVPN + Google Authenticator + PAM

Breve guida per rinforzare la sicurezza della Vostra Rete Informatica Virtuale (VPN) utilizzando Software Open Source, gratuito e modificabile a piacimento.

Ambiente Server: Linux Ubuntu Server 22.04; OpenVPN 2.5.5; OpenSSL 3.0.2.

Ambiente Client: Windows 10; OpenVPN GUI 11.15.0.0

Accessi Remoti all’epoca dello Smart Working

Il lavoro da remoto e il c.d. smart working, sono stati i protagonisti degli ultimi 3 anni.

Quasi chiunque, attività lvorativa permettendo, ha provato l’ebrezza di svolgere sessioni di lavoro recluso all’interno delle mura domestiche.

Purtroppo questo, spesso, ha comportato l’uso di strumenti poco ortodossi per accedere alle risorse digitali archiviate all’interno dei Server aziendali.

Nel migliore dei casi l’Utente, provvisto di chiavetta USB, ha copiato i file di propria pertinenza per lavorarci da Casa.

In altre occasioni, la sovrabbondanza di Software di controllo remoto (a base VNC e similari, che non cito per copyright), ha fatto tenere accesi computer per settimane in attesa del collegamento da remoto. Collegamento che, nella maggior parte dei casi, avveniva tramite computer Portatili con schermi così piccoli da consumarsi la vista a leggere cosa ci fosse scritto sul computer remoto. Tranne poi ricevere un messaggio derrore e la disconnessione perchè “si sta facendo un uso professionale del Software”. E credo che questo l’abbiamo provato tutti.

La VPN (Virtual Private Network), nella sua accezione tradizionale, è un’ottima alternativa. Consente di accedere alla rete LAN Aziendale (Interna) da qualsiasi parte del mondo, purchè connessa alla rete Internet.

Questo, naturalmente, solleva questioni di sicurezza. Prima fra tutte: Ma se si “apre” un accesso da tutto il mondo, non capita poi che tutto il mondo possa accedervi?
Questo è il problema: una porta affacciata al mondo esterno deve avere una chiave sicura per poter essere aperta. La semplice combinazione “username + password” , in questo caso, non possono essere considerate una chiave sicura. Soprattutto oggi che, con sistemi che utilizzano la AI (o IA, Intelligenza Artificiale) gli attacchi di ‘Brute Force’ sono diventati più aggressivi.

Perciò stanno prendendo sempre più piede i MFA (Multi Factor Authentication) o fattori multipli di autenticazione. Ossia Username + Password + qualcos’altro che so solo io. Per la precisione gli MFA si compingono, per definizione, di qualcosa che sai = Username + Password assieme a qualcosa che hai = un oggetto posseduto da chi è titolato ad accedere. Something You Know + Something You Have.

Tornando alle VPN, fino ad oggi, il massimo cui si pteva ambire era una combinazione tra Username + Password + Certificato rilasciato dal Server che autentica la connessione. Il sistema rispetta di fatto il Principio di SYK + SYH, ma, in caso di furto del computer portatile, (perchè quasi tutti installano le VPN sui PC portatili, e questi sono frequente oggetto di furto), il ladro si trova ad avere entrambi.

Google Authenticator

Google Authenticator viene incontro a queste esigenze di sicurezza offrendo chiavi e toppe a prova di “scassinatore”.
In questo caso Google Authenticator diventa “Something You Have Elsewhere” ovvero qualcosa che si ha, ma da un’altra parte, tipicamente sul telefonino.
Si tratta, in sostanza di una APP di google che, tramite un codice, si collega ad un sistema di autenticazione e ogni 30 secondi rilascia una OTP (One Time Password), sincronizzata con il Server.

Questa è un’aggiunta preziosa per rendere inviolabile la propria porta d’accesso alla Rete Aziendale.

Ovviamente questo non significa che la Rete Aziendale sia del tutto inviolabile; i mostri sacri dell’Informatica insegnano che qualsiasi sistema esposto alla Rete è potenzialmente violabile, ma passando da porte sul retro, o finestre, perchè il portone principale è blindato.

Configurazioni lato Server

Iniziamo a vedere le configurazioni minime indispensabili lato Server.

come da premessa per la costruzione del Server ci siamo avvalsi di Ubuntu Server 22.04 in versione “minimal” per minimizzare le risorse HW sfruttate.

Al termine dell’installazione, accedendo da remoto tramite ssh con un qualsiasi client ssh (Per la cronaca Windows, nelle versioni più recenti, ha incluso ‘ssh’ tra i suoi strumenti da riga di comando. Le opzioni sono le stesse di Linux), eseguire le seguenti operazioni

Omettiamo volutamente il ‘sudo’ ma questo è da aggiungere se le operazioni vengono lanciate da utente non ‘root’.

apt upgrade
apt update
apt install easy-rsa
apt install openvpn
apt install libpam-google-authenticator
apt install libqrencode3
apt install build-essential

Tutto ciò per avere tutti i software necessari installati.

Per le informazioni su come configurare, avviare e mettere in avvio automatico il Server OpenVPN rimando alle tonnellate di Tutorial presenti in Rete, anche se suggerisco sempre di prendere ad esempio quanto indicato sul Sito ufficiale di OpenVPN, tenendo conto che ci si riferisce alla verione “Community Edition”.

Personalmente preferiamo creare una cartella sotto /etc/openvpn all’interno della quale mettere certificati Server creati da easy-rsa, la cartella easy-rsa stessa e la configurazione server (server.conf)

Ad uso promemoria ricordiamo che Ubuntu Server, come CentOS e altri, ormai utilizzano ‘systemctl’ per avviare, riavviare, stoppare, abilitare e disabilitare servizi, e che, nel caso di ‘openvpn’ il comando è:

systemctl [start] [restart] [stop] [enable] [disable] openvpn-server@server [o il nome che è stato dato al file di configurazione *.conf]

Una volta avviata la VPN, andare a modificare il file ‘server.conf aggiungendo le seguenti righe:

# enable multi-factor authentication with google authenticator

reneg-sec 0
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so "openvpn login USERNAME password PASSWORD 'verification code' OTP"
verify-client-cert none
username-as-common-name

*Da notare che per evitare equivoci abbiamo inserito il path assoluto di ‘openvpn-plugin-auth-pam.so’

Questo significa che stiamo imponendo a OpenVPN di richiamare il modulo PAM. a questo punto, quindi, bisognerà dire a PAM di utilizzare il modulo Google Authenticator.

cat >> /etc/pam.d/openvpn << EOM
auth    optional   pam_faildelay.so  delay=3000000
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    required pam_google_authenticator.so nullok
EOM

Così abbiamo generato un file ‘openvpn’ all’interno di /etc/pam.d/ con tutte le info necessarie ad avviare Google Authenticator.

In base a come vengono generati i codici di Google Authenticator potrebbe essere necessario aggiungere alcune informazioni al file /etc/pam.d/openvpn; ad esempio nell’ultima riga:

auth    required /usr/lib/x86_64-linux-gnu/security/pam_google_authenticator.so secret=/home/${USER}/.google_authenticator user=root nullok

Dove abbiamo ribadito il path assoluto del modulo google_authenticator ed abbiamo insegnato dove andare a trovare la corrispondente chiave di google, ossia all’interno della home dell’utente.
L’opzione nullok alla fine della riga significa che se ancora non è stato creato un qrcode per l’utente, questo accede ugualmente.
Per motivi di sicurezza, alla fine della preparazione degli utenti, sarebbe opportuno rimuoverla.

Quello che manca, a questo punto, è

  • Creare Utente di sistema con Password
useradd utente
  • Creare e firmare il Certificato corrispondente per l’utente creato
./easyrsa gen-req utente nopass
./easyrsa sign-req client utente
  • Scaricare sul telefonino l’app Google Authenticator da ‘google play’ o ‘apple store’
  • Generare il codice di Google Authenticator dell’utente creato
su - utente
google-authenticator
  • Inquadrare il qrcode generato da google authenticator; si creerà un OTP riservato al Server OpenVPN
  • Creare il flie Client di OpenVPN, tipicamente, per Windows ‘utente.ovpn’ con le varie opzioni, che non è questo il luogo per trattare, ma rimandiamo al solito forum della Community di OpenVPN. In aggiunta ad esse le seguenti righe:
reneg-sec 0
auth-user-pass
static-challenge "Codice Google Authenticator" 1

Così, avviando la VPN verranno richiesti:

Nome Utente
Password

Codice Google Authenticator
Risposta:

Se tutto è stato correttamente configurato il Server accetterà la chiamata.

Una ultima considerazione è d’obbligo:
Perchè tutto funzioni correttamente l’ora del Server DEVE essere esatta, quindi consigliamo di sincronizzarla con qualche Server NTP.


Supplemento 1.

Nel caso in cui la VPN si aprisse anche con codici google sbagliati, o addirittura senza immettere alcun codice … niente panico semplicemente il modulo ‘pam_google_authenticator.so’ è in grado di leggere il file ‘.google_authenticator’ generato al momento della creazione dei codici da parte dell’utente. Sarà necessario copiare tale codice in una cartella leggibile. Ad esempio noi abbiamo copiato i codici google in una cartella denominata: /var/unencrypted-home/ all’interno della quale ogni utente ha la propria cartella sotto cui copiamo i rispettivi file .google_authenticator.
A questo punto /etc/pam.d/openvpn dovrà diventare:

auth    optional   pam_faildelay.so  delay=3000000
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    required   pam_google_authenticator.so secret=/var/unencrypted-home/${USER}/.google_authenticator user=root nullok

L’aggiunta merita una breve spiegazione: “secret=” indica a pam_google_authentiator dove andare a cercare il file di autenticazione ‘${USER}’ per ciascun user il proprio codice; ‘user=root’ è l’utente con cui andiamo a leggere il contenuto del file; infine ‘nullok’ indica al ‘pam_google_authenticator.so’ di verificare la presenza del file .google_authenticator all’interno dalla cartella dell’utente. Nel caso non esistesse, di accettare ugualmente l’autenticazione senza il doppio fattore. Quest’ultimo punto, in particoalre, è importante per aggiungere il doppio fattore a VPN già implementata, a caldo, diciamo, concede il tempo di completare i lavori. Tuttavia, a fine lavori, per maggior sicurezza, sarebbe bene toglierlo.

%d blogger hanno fatto clic su Mi Piace per questo: