Traduttore automatico - Read this site in another language

sabato 4 giugno 2022

Cos'è un virus informatico?

Qualcuno sostiene che quando si fa divulgazione nel settore della cyber, tutto va bene per far passare il messaggio dei pericoli che dobbiamo affrontare oggigiorno. Con il "tutto va bene" però spesso si giustifica l'incompetenza di chi scrive, spesso attribuendo la colpa all'ignoranza del lettore.

Io non la penso così.

Ecco dunque che, dopo l'articolo del mese scorso con cui ho cercato di spiegare in modo semplice ma corretto il significato di DDoS (vedi l'articolo: DDoS e virus - Difesa Online dello scorso 16 maggio), mi accingo a spiegare cosa sia un virus informatico. 

Sono sicuro che in tanti sanno di che si parla, per cui potrebbero trovare l'articolo troppo semplice o banale, ma sono altrettanto sicuro che saranno in tanti a trarne beneficio o, spero, a rigirarlo a qualche amico o giovane che si sta avvicinando alla materia e potrebbe quindi trovarlo utile.

Cominciamo dalle basi: la definizione!

Sembra una cosa semplice, non è vero? 

Dovrebbe essere sufficiente aprire il browser e trovare un buon vocabolario o enciclopedia che ci possa fornire quanto chiesto. Eppure non è così. Chiunque abbia utilizzato internet, magari per lavoro, sa bene che il problema non è non trovare le cose ma al contrario, trovarne troppe. Allora occorre imparare a fare delle ricerche mirate e ad utilizzare dei siti di riferimento di cui possiamo avere la ragionevole certezza che siano affidabili. Come ho già detto in altre occasioni, una delle fonti che mi ha sempre dato soddisfazione è il sito del NIST (National Institute of Standards and Technologies del Dipartimento del Commercio degli Stati Uniti d'America).

Naturalmente anche il NIST, producendo normativa per scopi differenti, utilizza spesso delle definizioni aventi diverso livello di approfondimento. Quindi si può trovare che un virus è semplicemente "A program that replicates itself by attaching to other programs or files, where it hides until activated (1)" oppure, con un maggior livello di dettaglio: "A hidden, self-replicating section of computer software, usually malicious logic, that propagates by infecting (i.e., inserting a copy of itself into and becoming part of) another program. A virus cannot run by itself; it requires that its host program be run to make the virus active (2)". 

Se siete curiosi, a fine articolo ho inserito un link alla pagina del NIST in cui sono riportate tutte le definizioni di virus.

Per lo scopo che mi prefiggo con questo articolo la seconda definizione è quella che prenderò in considerazione.

Dunque, un virus è un pezzo di software generalmente malevolo, capace di replicarsi, che si attacca o sostituisce ad un software che lo ospita e che lo attiva alla sua esecuzione.  

Un po' di storia. 

Sono convinto che la sola definizione non sia sufficiente a capire cosa sia un virus per cui penso sia sempre interessante leggere qualche articolo sulla storia dei virus informatici.

Ve ne segnalo due. Il primo articolo è pubblicato sul sito di Kaspersky con il titolo di "A brief history of Computer Viruses & what the future holds". Scopriamo così che i virus hanno un padre che è sicuramente noto a tutti coloro che come me hanno studiato informatica. Si tratta di John von Neumann che nel 1966 pubblicò un testo in cui discuteva la possibilità per un organismo artificiale (come per esempio un pezzo di codice) di riprodursi e essere potenzialmente dannoso come un virus biologico. Qualche anno dopo un giovane chiamato Bob Thomas creò un programma chiamato Creeper, con lo scopo di verificare la teoria della possibilità di autoreplicarsi di un codice informatico. Creeper non era malevolo e non si propagava infettando un programma ospite, per cui a ben guardare non si tratta propriamente di un virus ma di un'altra categoria di codice che si chiama Worm e che al momento non è oggetto della nostra attenzione. In ogni caso sono in tanti a considerare Creeper come il primo virus. Nel 1974 viene sviluppato Rabbit (conosciuto anche come Wabbit), un programma malevolo capace di autoreplicarsi e assorbire le risorse del computer infetto, rallentandolo e causandone il blocco. Il primo virus per computer IBM si chiamava "Brain". Fu sviluppato nel 1986 (trentasei anni fa!) e agiva infettando il settore di avvio dei floppy disk facilitando così il contagio con lo scambio dei floppy tra utilizzatori.

Il secondo articolo invece è intitolato "A short history of computer viruses" ed è interessante notare che, tra l'altro, parla del primo malware capace di diffondersi molto velocemente su internet, conosciuto come il worm di Morris. Anche in questo caso devo dire che in effetti si trattava di un worm che nel giro di poche ore infettò circa 15.000 computer.

Un altro virus abbastanza conosciuto è "Melissa". Si tratta di un virus rilasciato nel 1999 che si diffondeva attraverso l'uso di un allegato word inviato per email con outlook. Una volta attivo, prendeva i primi cinquanta indirizzi della rubrica della vittima e gli inviava il documento word infetto.  

Credo che sia opportuno riassumere le cose essenziali da ricordare:

- in primis, molto spesso si fa confusione tra virus e worm, che vengono spesso accomunati anche se tecnicamente si tratta di due cose differenti. I virus, che come detto infettano un file che li ospita, si trasmettono quando il file che li ospita viene scambiato o inviato, magari via email, whatsapp o altro. I worm si diffondono senza la necessità di un file ospite;

- i virus sono generalmente malevoli.

Detto ciò, un semplice avvertimento: fate sempre attenzione ai file che ricevete e se non state aspettando niente non aprite i documenti allegati!

La storia dei virus è molto più vasta di quanto scritto in queste poche righe ed è, a mio parere, molto interessante ma lascio a voi l'onere di approfondire.

Cosa ci aspetta in futuro

Senza dubbio niente di buono. Il numero di virus o di altre categorie di software malevoli è in aumento vertiginoso e spesso non è facile neppure categorizzare le minacce. Il mercato del lavoro richiede sempre più esperti in cyber security ma gli istituti scolastici non riescono a coprire le esigenze. In molti paesi il lavoro di un esperto in cybersecurity è spesso sottopagato e, peggio, assolutamente incompreso. Ciò è causa di molti problemi nelle piccole e medie aziende ma anche in tutta la pubblica amministrazione. E' opportuno ricordare che quando parliamo di virus ci riferiamo non solo a quelli dei personal computer ma anche ai dispositivi di altro genere, dagli smatphone a IoT (dispositivi connessi in rete tipo le telecamere di sorveglianza...) e a tutto il mondo dei dispositivi industriali, della domotica e a breve delle interfacce uomo-macchina impiantate direttamente sull'uomo. Infine il miglior investimento che si possa fare è quello nelle persone. 

Ogni tecnico informatico preparato, ogni dipendente addestrato e istruito può fare la differenza tra un attacco riuscito e uno fallito. La cultura della sicurezza informatica e l'addestramento di base è di fondamentale importanza per prevenire danni spesso irreparabili, ed il costo è sicuramente inferiore ai danni provocati da un incidente informatico. 

Cerchiamo di ricordarlo per tempo, invece che piangerci sopra  quando è troppo tardi!   

Alessandro Rugolo

P.S. Ringrazio tutti gli amici di SICYNT per suggerimenti e revisioni.

Note:

1- NIST SP 800-28 rev 2. Trad: Un programma che replica se stesso attaccandosi ad altri programmi o files, che utilizza per nascondersi fino a quando verrà attivato.

2- NIST SP 800-82 rev 2. Trad: Una sezione nascosta di software, autoreplicante, generalmente malevola, che si propaga per infezione (per esempio inserendo una copia di se stesso e diventando così parte) di un altro programma. Un virus non può eseguirsi da solo,  per essere attivato richiede che il programma ospite sia eseguito.

Per approfondire:

virus - Glossary | CSRC (nist.gov)

A Brief History of Computer Viruses & What the Future Holds (kaspersky.com)

A short history of computer viruses (sentrian.com.au)

The very first viruses: Creeper, Wabbit and Brain. (infocarnivore.com)

Virus:W32/Melissa Description | F-Secure Labs

martedì 17 maggio 2022

Serious games e War games

Uno dei moderni settori di studio legato all’apprendimento é quello conosciuto come « Serious games ».

Iniziamo subito col dire di che si tratta. I cosiddetti « Serious games », e tra questi i giochi di guerra, sono degli strumenti utilizzati in vari ambienti per sviluppare e agevolare la riflessione e l’addestramento alla gestione delle crisi su argomenti di carattere strategico, militare ed economico ma anche più semplicemente per migliorare il livello di conoscenza e di collaborazione tra membri della stessa squadra o con i nuovi arrivati.   

In linea di massima l’impiego dei Serious games permette di:

migliorare la riflessione su dei soggetti concreti. Al contrario della realtà in cui ci si trova costretti, il gioco aiuta a ragionare liberamente e a fare esperienze senza paura di sbagliare e soprattutto esercitando liberamente la propria inventiva ;

mettersi nei panni dell’ipotetico avversario. Nella realtà raramente si ha il tempo di pensare come si comporterebbe, in una data situazione, un ipotetico nemico. Nel gioco é invece possibile farlo e scoprire cosi’ modi di pensare e comportamenti a noi non familiari ;

- sviluppare capacità di ascolto e di leadership. In linea di massima nel lavoro non si é mai soli. Occorre lavorare in squadra verso obiettivi comuni e il gioco aiuta lo sviluppo delle capacità interpersonali.

In ambiente militare i serious games sono chiamati wargames e da diversi anni le scuole militari di diversi paesi ne fanno uso e invitano i propri studenti a far uso di questi strumenti.

In Francia, per esempio, esistono diverse organizzazioni che usano i serius games e i wargames come strumento d’apprendimento e di approfondimento complementare alle lezioni.

L’invito a tutti é di approfondire l’argomento e di trovare una associazione con la quale praticare questa forma di gioco, anche magari in prospettiva dei prossimi giochi che si terranno a Parigi nel mese di ottobre e che vedranno impegnate squadre francesi e italiane , col supporto della NATO, nello sviluppo di wargames sempre più realistici.

Alessandro Rugolo

Per approfondire :

- https://sgnfr.wordpress.com/serious-games-forum-2018/

- https://portail-ie.fr/analysis/1909/jdr-ready-for-a-serious-game

- https://www.lexpress.fr/actualites/1/societe/war-games-des-jeux-pour-apprendre-vraiment-la-guerre_2116571.html

sabato 14 maggio 2022

DDoS e virus


Può sembrare strano ma nel nostro mondo iper-connesso, in cui si va avanti a forza di acronimi e termini inglesi, non sempre ci si sofferma abbastanza sul significato delle parole e ciò può portare ad errori.

Prendiamo per esempio, ma non a caso, l'acronimo DDoS e proviamo a domandarci che cosa significa. Il significato per esteso è Distributed Denial-of-Service, che tradotto in italiano suona un po' come "negazione del servizio distribuita", traduzione veramente orribile che non utilizzerò più nel corso di questo articolo. 

Si tratta in effetti di un tipo di attacco cyber che non è altro se non l'evoluzione del più vecchio DoS (attenzione, non si parla del sistema operativo degli anni ottanta) dove DoS sta per Denial-of Service. Il DDoS è un tipo di attacco che consiste nel tentativo di interrompere il normale traffico dati (sto semplificando!) che avviene tra un server che eroga un servizio e gli utenti di quel servizio.

Prima di andare avanti facciamo un esempio per chiarire la cosa una volta per tutte. 

Consideriamo per esempio una società che si occupa di servizi sanitari che offre un servizio di consegna cibo per i malati che si iscrivono al suo sito. Se una società concorrente poco onesta decidesse di rovinare gli affari del concorrente potrebbe organizzare delle azioni (attacchi) per contrastare l'esecuzione del servizio. 

Potrebbe farlo fisicamente, impedendo ai veicoli di effettuare le consegne in tempo, oppure bloccandoli nel traffico, oppure rubandogli il carburante o ancora minacciando gli autisti o i cuochi o chiunque si trovi sulla catena di produzione. Se però il cattivo ha a disposizione un bravo hacker allora potrebbe fare la cosa anche impedendo ai clienti di raggiungere il sito della società di servizi. 

Ora, come ho detto all'inizio il DDoS è l'evoluzione del DoS. Infatti un po' di anni fa il nostro hacker cattivo avrebbe cercato di attaccare il sito della nostra società in maniera diretta, cercando di creare molto traffico sperando (e a volte ottenendo) che il sito del servizio non riuscisse più a rispondere alle richieste di altri utenti. 

Oggigiorno per far cadere un sito che rende dei servizi occorrono molti più utenti concorrenti (cioè molti utenti che tentano di connettersi in contemporanea) e per creare grosse quantità di traffico si usano molti dispositivi connessi a internet (distribuiti) che però sono controllati da un unico punto. Queste "reti" malevole sono chiamate botnet e sono alla base dei moderni attacchi di DDoS.

Questo è quanto occorre sapere sul DDoS.

Vi chiederete, ma allora perché nel titolo dell'articolo hai scritto "DDoS e virus" ? Qual è la relazione tra DDoS e Virus informatico ?

Beh, per essere chiaro, sono due cose diverse. 

Per fare un paragone con il mondo militare il DDoS è una tecnica di attacco, al pari dell'assalto frontale, di un'imboscata o di un bombardamento aereo. Il Virus è invece un'arma, al pari di una baionetta, di un fucile mitragliatore o di una bomba termonucleare!

Per concludere, il fatto che DDoS e Virus siano due cose diverse non significa che non possano essere utilizzati per raggiungere uno obiettivo comune. Per tornare al paragone militare, un assalto frontale può essere condotto impiegando armi di diverso tipo. Un DDoS può essere eseguito utilizzando una botnet creata infettando i dispositivi con Trojan Horse, Virus e/o altri malware. 

Se volete vedere un esempio di un DDoS, potete dare uno sguardo a come funziona l'attacco Mirai di qualche tempo fa.

Alessandro Rugolo  


Per approfondire:

What is a distributed denial-of-service (DDoS) attack? | Cloudflare    

DDoS Attack: What Friday’s Massive Internet Outage Was All About (futurism.com)

Mirai DDoS Attack Explained (imperva.com)

giovedì 5 maggio 2022

Locked shields 2022: Finlandia al primo posto

Quest’anno va alla Finlandia il primo posto in una delle più grandi e complesse esercitazioni live di cyber defense al mondo, sicuramente la più importante della NATO, che si è tenuta a Tallin dal 19 al 22 aprile.

Per l’esercitazione, come sempre accade, é stato creato uno scenario fittizio, basato su uno stato insulare chiamato Berylia.

Lo scenario prevede che Berylia é soggetto ad attacchi alle reti e sistemi militari e civili. Sono colpite le sue principali infrastrutture critiche (acqua, elettricità, banche...) e i Blue Team alleati sono chiamati ad aiutare.

Con circa 5500 sistemi virtuali (che simulano reti e sistemi di Berylia) e più di 8000 attacchi cyber in poco più di tre giorni, la cosa non è semplice.

L’esercitazione non ha carattere solo tecnico. E' stato preso in considerazione anche il livello strategico politico, legale e finanziario spingendo i partecipanti a prendere delle decisioni in tempi ristretti e in ambiente altamente complesso.

E' in questo contesto che la squadra della Finlandia ha dimostrato la sua superiorità.

Subito dopo la Finlandia, si é classificato il team congiunto Lituania-Polonia, mentre il terzo posto é andato al team Estonia-Georgia.

L’esercitazione - organizzata dal Cooperative Cyber Defence Centre Of Excellence (CCDCOE) in collaborazione con NATO, Siemens, TalTech, Clarified Security, Arctic Security, CR14 - ha visto la partecipazione di 24 teams (per circa duemila esperti di 32 differenti nazioni) nella veste di difensori (Blue Teams). Tra i partecipanti anche degli esperti provenienti dall’Ucraina.

Dopo i dati, necessari per capire la dimensione dell'esercitazione, alcune considerazioni sono necessarie.

La prima cosa che si nota é l’assenza, nei primi posti della classifica, di paesi come gli Stati Uniti, UK, Francia, a favore di paesi più piccoli del nord europa, legati in teams congiunti.

Quanto ciò possa essere indice di una diversa politica nella scelta dei partecipanti da parte dei diversi Stati o in qualche modo del livello delle nazioni partecipanti é naturalmente tutto da dimostrare. Ricordiamo infatti che si tratta pur sempre di una esercitazione che per quanto realistica sia non può evidenziare (se non parzialmente) la reale preparazione di uno Stato ad affrontare una crisi cyber.

In secondo luogo é interessante notare la scarsa pubblicità che si fa attorno ai risultati della esercitazione e ai suoi aspetti più tecnici. Ciò denota, a mio parere, una certa tendenza a diffondere questo genere di conoscenze solo all’interno di un circolo ristretto di persone.

La cosa può essere interpretata in modi diversi.

Si può pensare, in prima analisi, che l’organizzazione (NATO CCDCOE) ritenga sensibili i dati e le informazioni raccolte con l’esercitazione e che le stesse vengano condivise solo coi paesi partecipanti. Tale linea di pensiero sembra confermata dal fatto che le informazioni tecniche delle esercitazioni degli anni scorsi sono comunque poco note.

Appare però quanto meno discutibile il non diffondere i risultati e le analisi condotte in sede di esercitazione.

A mio parere un’ampia diffusione dei problemi riscontrati e dei metodi utilizzati per affrontarli é alla base di ogni esercitazione di carattere militare e serve esattamente a far evolvere l’organizzazione nel suo complesso.

Infine c’é da chiedersi quanto sia realistica l’esercitazione.

Trattandosi di una esercitazione internazionale difensiva, é chiaro che i team in gioco devono operare sulle reti, sistemi e piattaforme di un ipotetico paese dell’Alleanza, Berylia nel caso specifico.

Per far ciò è necessario che tutti i team possiedano le informazioni sui sistemi da proteggere, cosa che in un caso reale, è difficilmente realizzabile.

Nessun paese che aspiri a mantenere un minimo di autonomia nazionale sulla sicurezza dei propri sistemi vorrebbe mettere a disposizione di un altro Paese (Alleato o meno che sia) le debolezze dei propri sistemi e piattaforme. 


Alessandro Rugolo


Per approfondire :



venerdì 1 aprile 2022

Cyber Threat Intelligence: di cosa parliamo?

L'uso della lingua inglese nel mondo ricco di tecnologia in cui viviamo è una costante, al pari della velocità della luce nella fisica.

Capita spesso di parlare tra esperti di cybersecurity, magari di paesi diversi, dando per scontato che ci si capisca solo perché si usano termini inglesi come, per esempio, "cyber threat intelligence". 

La domanda che ci poniamo oggi é: quando diciamo "Cyber Threat Intelligence" tutti sanno di che si parla? Proviamo a capirlo assieme partendo dal termine "Threat". 

Consultando un vocabolario bilingue scopriamo che la parola "Threat" significa "minaccia". Se ci poniamo nel mondo cyber, possiamo fare riferimento alla definizione del National Institute for Standard and Technology (USA - NIST SP 800-30 / 150 e CNSSI-4009): che definisce "Cyber Threat" come: 

"Qualsiasi circostanza o evento capace di influire negativamente sulle operazioni di una organizzazione (missione, funzioni, immagine o reputazione), sui beni dell'organizzazione, sugli individui, altre organizzazioni o la Nazione attraverso un sistema informativo tramite accesso non autorizzato, distruzione, divulgazione, modifica delle informazioni e/o negazione del servizio."

Per capire cosa si intende per "Threat Intelligence" facciamo ricorso al sito di Kaspersky : 

"La threat intelligence consente di individuare e analizzare le minacce informatiche rivolte contro un'azienda, setacciando enormi quantità di dati, esaminandoli e contestualizzandoli alla ricerca di problemi reali e di soluzioni possibili." 

Mettendo assieme i concetti, possiamo dire che per Cyber Threat Intelligence si intende "la ricerca e l'analisi delle minacce informatiche rivolte contro un'azienda, una organizzazione, uno Stato e la loro contestualizzazione alla ricerca di problemi reali e delle loro soluzioni".

I principali obiettivi della Threat Intelligence sono:

- conoscere i propri avversari (attivisti, organizzazioni criminali, governi, concorrenti... l'Attribuzione);

- quali tattiche (il perché) e tecniche (il come) possono essere utilizzate contro la nostra azienda;

- quali sono i controlli da mettere in campo in base alle minacce e come mitigare il rischio (le possibili soluzioni). 

Esistono tantissimi strumenti impiegati per fare cyber threat intelligence; il MITRE ce ne fornisce diversi e per approfondire esistono alcuni ottimi articoli che consigliamo, tra i quali "Combattere i cattivi in modo strutturato" di Marco Rottigni e "Conoscere le cyber-tattiche dell'avversario" di Orazio Danilo Russo.

Chiarita la terminologia, passiamo ad un esempio pratico che aiuti a capire i concetti appena espressi.

Supponiamo di essere a capo di una società che si occupa di produzione e vendita di guanti in gomma che vendiamo sul territorio nazionale e oltre. Il CISO (Chief Information Security Officer) in coordinamento col CTO (Chief Technology Officer) dell'azienda ha scelto un antivirus per le postazioni di lavoro e per le macchine di controllo di produzione e ha stipulato un contratto con una società fornitrice di servizi di sicurezza.

Il ruolo della società fornitrice dei servizi di sicurezza è quello di raccogliere i dati di tutti i dispositivi della nostra società, di analizzarli, correlarli, contestualizzarli, alla ricerca di minacce reali e dirette contro la nostra società e suggerire le varie possibili modalità di mitigazione e/o soluzioni dei problemi e delle minacce identificate.

La scelta di una o più soluzioni, tra quelle proposte, dipende da tanti fattori, uno fra tanti il rapporto costo/efficacia.

Un esempio: supponiamo che dalla prima raccolta di dati sulle postazioni di rete emerga che alcune postazioni hanno un sistema operativo vecchio, non aggiornato o non più supportato. Tra le soluzioni che potrebbero essere suggerite troveremo sicuramente:

- aggiornare il sistema operativo;

- cambiare il sistema operativo non più supportato;

- cambiare le macchine incriminate.

Naturalmente le soluzioni elencate andranno a risolvere/mitigare solo alcune delle problematiche relative alla sicurezza aziendale, esistono infatti minacce di diverso tipo e non tutte hanno lo stesso effetto su una società od organizzazione. Dobbiamo sempre tener presente che per quanto saremo bravi e attenti non è possibile eliminare tutte le minacce!

La scelta della soluzione da mettere in atto spetterà alla società, che agisce solitamente sulla base di criteri economici ma anche contingenti. Nel nostro esempio, potrebbe capitare che le macchine individuate siano impiegate in un ciclo di produzione che non può essere interrotto senza compromettere l'intero processo e che quindi non sia possibile mettere in pratica tutte le soluzioni suggerite. La Cyber Threat Intelligence ha la sua importanza ma è solo un tassello della sicurezza aziendale. 

Per questo motivo non è possibile delegare tutto all'esterno, se non in casi molto particolari. Spetta al CISO e al CTO, che conoscono la società, i processi produttivi e il contesto operativo, prendere la decisione corretta sulla base di vari fattori, tra questi anche la Cyber Threat Intelligence.


Alessandro Rugolo, Annalisa Diana


Ringraziamo tutti gli amici di SICYNT per i suggerimenti che ci hanno consentito di migliorare l'articolo, rendendolo comprensibile a tutti.

Per approfondire:

CNSSI-4009.pdf (rmf.org)

Guide to Cyber Threat Information Sharing (nist.gov)

SP 800-30 Rev. 1, Guide for Conducting Risk Assessments | CSRC (nist.gov)

https://www.kaspersky.com/resource-center/definitions/threat-intelligence

Introduction to Cyber Threat Intelligence (CTI): A Definitive Guide for The Beginners - Hackers Terminal

The MITRE Corporation


venerdì 25 marzo 2022

Come creare la nostra Artificial Intelligence

immagine tratta da: 
https://p4pe.co/product/artificial-intelligence-and-machine-learning-essentials/
Abbiamo parlato spesso di Artificial Intelligence, ma non l'abbiamo ancora fatto dal punto di vista di chi vuole avvicinarsi alla materia e provare a costruire la sua propria AI.

Oggi invece ci avviciniamo ai più giovani cercando di spiegare cosa occorre per realizzare una AI, quali strumenti sono utili e come procedere passo passo verso il proprio obiettivo.

In questo articolo diamo per scontate alcune conoscenze, in particolare non spieghiamo cos'è una AI. Se proseguendo la lettura vi rendete conto di aver bisogno di rinfrescare qualche concetto, vi suggerisco di leggere l'articolo "La nuova rivoluzione digitale, il Deep Learning" di Andrea Piras, dove potrete trovare le definizioni e spiegazioni di AI, Machine Learning e Deep Learning.

Individuare il problema

Può sembrare strano ma se si vuole costruire una AI bisogna individuare per bene il problema che si vuole risolvere. 

Precisiamo subito che un problema che appare semplice dal punto di vista umano potrebbe essere difficile o complesso per una AI e viceversa. L'AI è di solito molto efficace nello svolgere compiti ripetitivi e che magari potrebbero essere alienanti per una persona. Per esempio supponiamo di aver bisogno di raccogliere foto e disegni di alcuni tipi di frutta (pere e mele). Potremmo assumere una persona capace di disegnare e mandarla in giro alla ricerca di soggetti da disegnare. Leonardo da Vinci probabilmente avrebbe girato per i mercati cittadini e per le campagne realizzando di persona i disegni. Oppure potremmo assumere un fotografo, chiedendogli di realizzare degli scatti che poi utilizzeremo per le nostre necessità. Potremmo anche assumere qualcuno che si metta a scandagliare internet alla ricerca di immagini e che poi le salvi in due cartelle diverse a seconda del soggetto. Potremmo, nell'ultimo caso, utilizzare una AI creata per lo scopo. Come vedete il compito è relativamente semplice, ma metodologia e tecnologia impiegate sono diverse. 

Allo stesso modo è possibile che l'identico problema sia risolvibile utilizzando tipi differenti di Intelligenza Artificiale. Occorre dunque cercare di definire bene il problema e scegliere la metodologia migliore per raggiungere lo scopo. Infine, a seconda del problema, potrebbe anche capitare che utilizzare una AI si riveli inutile e dispendioso, ma noi non ci occuperemo di quest'ultimo caso.

Sui dati...

Definito il problema si potrebbe essere tentati dal passare alla scrittura del programma (codice) che ci aiuterà a risolverlo (parliamo sempre di raccogliere immagini, foto o disegni di pere e mele e di classificarle). Ma non è così, prima di tutto occorre pensare ai dati. Occorre cercare di capire con che tipo di dati abbiamo a che fare (strutturati o non strutturati) e come dobbiamo catalogarli: dobbiamo dividere le mele e le pere oppure occorre fare qualcosa di più complesso magari distinguendo tra frutti di diverso colore? L'analisi sui dati è molto importante e sarà utile in diverse fasi del nostro progetto, in particolare nella fase di addestramento della nostra AI, in pratica quando le viene insegnato a svolgere il compito per cui è stata creata.

Come ho detto prima i dati si possono dividere in due macro categorie: strutturati o non strutturati.

I dati strutturati sono conformi ad un modello, hanno una struttura ben definita, sono ordinati ed è possibile accedervi facilmente per impiegarli (sia da una persona, sia da un programma). Normalmente si conservano all'interno di database. Se consideriamo l'esempio delle mele e pere precedentemente introdotto, possiamo associare ai due frutti delle caratteristiche loro proprie (colore, dimensione, forma...) che serviranno per distinguerle e saranno utilizzati per addestrare l'algoritmo. 

I dati non strutturati sono invece video, foto, audio... molto più difficili da trattare.   

L'algoritmo

Dopo aver riflettuto sulla tipologia di dati con cui avremo a che fare, possiamo iniziare a pensare all'algoritmo più idoneo alla risoluzione del problema, algoritmo che diventerà il cuore della nostra AI. 

Possiamo dividere gli algoritmi in due categorie chiamate "supervised learning" e "unsupervised learning". 

Alla prima categoria (supervised learning) appartengono degli algoritmi che richiedono l'intervento umano, principalmente per classificare manualmente i dati che verranno poi impiegati per addestrare l'algoritmo. Se il nostro problema consistesse nel verificare le email in arrivo e selezionare quelle di spam, da mandare su una apposita cartella, probabilmente useremo un algoritmo di questa categoria utilizzando come esempi un numero molto elevato di messaggi che gli utilizzatori hanno classificato come legittimi o spam. Tra queste tecniche possiamo annoverare le neural networks, naive Bayes, linear regression, logistic regression, support vector machine (SVM), k-nearest neighbor, random forest.

Alla seconda categoria (unsupervised learning) appartengono algoritmi che non necessitano dell'intervento umano per classificare i dati e vi appartengono tre sottocategorie: clustering, association e dimensionality reduction. Sempre a titolo di esempio, se il nostro problema consiste nell'identificare attività potenzialmente malevole in una rete aziendale, probabilmente utilizzeremo un algoritmo di clustering per individuare l'insieme delle attività che appaiono molto diverse da quelle usuali. 

Addestrare l'AI

La fase successiva consiste nell'addestrare l'algoritmo a svolgere il compito. Per tornare al semplice esempio iniziale della suddivisione di immagini di pere e mele occorrerà addestrare il nostro algoritmo a riconoscere i due frutti con una certa accuratezza. L'accuratezza dipende da noi, è una cosa che dobbiamo decidere in base ai nostri obiettivi di business. Potremmo decidere che ci interessa una accuratezza dell'80%, il che significa che il nostro algoritmo dovrà essere in grado di riconoscere una pera o una mela da immagini di frutta 80 volte su cento. questo significa che possiamo gestire l'errore dell'algoritmo attraverso un'altra metodologia (per esempio mettendo una persona a controllare le immagini selezionate) oppure che l'errore non causa danni al nostro business o ancora che il danno causato è inferiore alla spesa che dovremmo sostenere per migliorare il processo di selezione.

Se però nella fase di addestramento non si riesce a raggiungere l'accuratezza richiesta potrebbe essere necessario fare un passo indietro e scegliere un diverso tipo di algoritmo. Ma prima di cambiare algoritmo è meglio verificarne la configurazione (attraverso i parametri di configurazione) e se il dataset selezionato per eseguire l'addestramento è corretto. Per tornare al solito esempio di selezione di mele e pere, se tra le immagini usate per l'addestramento abbiamo per errore utilizzato solo immagini di pere e mele di colore rosso potrebbe darsi che l'AI non riconosca pere e mele di altri colori non riuscendo perciò a raggiungere l'accuratezza richiesta. In questo caso sarà sufficiente modificare il dataset per comprendere frutti di vari colori, fino a raggiungere l'accuratezza richiesta.

Linguaggio di programmazione e piattaforma

Il passo successivo consiste nella scelta del linguaggio di programmazione da utilizzare. La scelta dipende dalle nostre conoscenze di programmazione.

I linguaggi che possono essere utilizzati sono tanti ma i più comuni sono Python e R in quanto possiedono già molte librerie già pronte all'uso che semplificano la scrittura del codice. Infine è necessario scegliere la piattaforma che ci consentirà di costruire la nostra AI. Esistono varie piattaforme che aiutano nella realizzazione del nostro progetto, tra queste per esempio TensorFlow è una piattaforma open source che permette di fare delle prove senza spendere niente, oppure Numpy, Keras, Pandas, scikit-learn, Matplotlib, Seaborn e cosi via, il panorama è veramente ampio.

Non resta che provare...

A proposito, dimenticavo di dire che la nostra AI si alimenta continuamente dei dati che riceve. Ne tiene traccia e li utilizza. Così è possibile insegnarle a fare previsioni, magari sulla qualità e tipo di mele che troveremo al mercato nei mesi prossimi. Ma questo è un altro problema! 

Alessandro Rugolo

(Ringrazio tutti gli amici di SICYNT che mi hanno consigliato ed aiutato a migliorare l'articolo)

Per approfondire:

La nuova rivoluzione digitale, il deep learning - Difesa Online

Step-by-Step Methods To Build Your Own AI System Today | upGrad blog

What is Structured Data? - GeeksforGeeks

What is Supervised Learning? | IBM

Types of Artificial Intelligence Algorithms You Should Know [A Complete Guide] | upGrad blog

Unsupervised Learning for Cyber (hmgstrategy.com)

sabato 5 marzo 2022

Amazon e Stellantis per l'automotive del futuro

(foto: https://techtarget.itmedia.co.jp/)
Nel mese di gennaio di questo splendido (si fa per dire) 2022, una notizia è stata riportata da alcuni giornali ma probabilmente è passata inosservata dai più, me compreso.

Si tratta del partenariato strategico tra Stellantis e Amazon. 

Ricordo che Stellantis (con quartier generale nei Paesi Bassi) è la multinazionale automotive nata nel 2021 dalla fusione della italo-americana Fiat Chrysler e della francese PSA.

Non credo sia necessario invece ricordare cosa sia Amazon. 

Il partenariato strategico farà si che Alexa (l'assistente virtuale di Amazon) sarà incluso nativamente nei veicoli prodotti dal gruppo, allo scopo di svolgere le funzioni relative a numerosi comandi vocali. Secondo alcuni articoli Alexa avrà anche il compito di gestire non solo il veicolo ma anche la domotica relativa al proprietario del veicolo, unendo in una unica interfaccia numerose funzionalità.

Amazon si occuperà della gestione dei dati generati dalla totalità dei veicoli di Stellantis, più di dodici milioni al momento (34 milioni previsti al 2030), cosa che permetterà di sviluppare nuovi servizi.

Tra le novità c'è anche lo sviluppo di una nuova generazione di chip per le autovetture, adattate alle esigenze dei costruttori di auto.

Naturalmente ci si potrebbe porre diverse domande in merito alla partnership.

La prima domanda riguarda il trattamento di dati da parte della multinazionale (Stellantis), che nonostante la sede nei Paesi Bassi, quindi in Europa, è di proprietà, tra gli altri, per il 14 % della Exor N.V. (controllata dalla famiglia Agnelli), per il 7 % dalla PSA (Peugeot S.A.) e per il 3 % da Dongfeng Motor Corporation (produttore di automobili dello stato cinese con sede a Wuhan).

Quali sono i possibili problemi che si potrebbero verificare ? Dove saranno custoditi i dati personali? A chi ci si dovrà rivolgere in caso di problemi legali? Chi sarà responsabile qualora un ransomware dovesse compromettere i sistemi e bloccare automobili o abitazioni, magari interi quartieri? 

In caso di guerra (e quella commerciale e finanziaria sappiamo bene essere sempre in corso) cosa può accadere? In caso di furto di credenziali milioni di auto e di proprietà collegate potrebbero essere hackerate, bloccate, distrutte. E chi scommetterebbe sulla incolumità di personaggi politici o capi militari o di fazione considerati nemici ? Cosa potrebbe accadere in caso di un attacco statuale contro i sistemi di guida automatica di milioni di auto, magari per creare il caos preliminare ad un attacco convenzionale? 

La seconda domanda riguarda le possibilità per Alexa di impiego dei dati per analisi e successiva valorizzazione. Come verranno impiegati i dati? Per lo sviluppo di servizi utili in qualche modo all'utente ma anche, e soprattutto, per migliorare gli utili delle multinazionali che sono indubbiamente in una posizione di forza.

La terza domanda riguarda la cyber security. Siamo sicuri che sia utile rendere ancora più connesso il mondo in cui ci muoviamo e lavoriamo tutti i giorni? Attenzione, non sono certo uno di quelli che dicono che la tecnologia è il diavolo, la tecnologia (quella digitale in particolare) è utile per tanti aspetti, ma è anche molto vulnerabile.  

Ancora una volta, noi singoli acquirenti non potremo fare altro che stare a vedere cosa accade, sperando di non doverne pagare le conseguenze.

Renzo Arbore direbbe: "Meditate, gente, meditate...".

Alessandro Rugolo 


Per approfondire:

Partenariat stratégique d’ampleur entre Stellantis et Amazon (incyber.fr);

Official Global Website | Stellantis;

Amazon Alexa Official Site: What is Alexa?

Stellantis and Amazon Collaborating on Connected Vehicles | Datamation;

Amazon’s tech is headed to millions of Stellantis vehicles in 2024 | TechCrunch