La cybersicurezza è un argomento molto importante e sempre più rilevante nella società moderna. In Italia, l’Agenzia per la Cybersicurezza Nazionale (ACN) è stata istituita per tutelare gli interessi nazionali nel campo della cybersicurezza. L’ACN è l’Autorità nazionale per la cybersicurezza e assicura il coordinamento tra i soggetti pubblici coinvolti nella materia attraverso una struttura che persegue l’eccellenza 1.
L’ACN promuove la realizzazione di azioni comuni volte a garantire la sicurezza e la resilienza cibernetica necessarie allo sviluppo digitale del Paese. Persegue il conseguimento dell’autonomia strategica nazionale ed europea nel settore del digitale, in sinergia con il sistema produttivo nazionale, nonché attraverso il coinvolgimento del mondo dell’università e della ricerca
La crittografia è un processo che utilizza un algoritmo per modificare un'informazione in modo tale da renderne l'accesso limitato solo a chi conosce un certo segreto, chiamato chiave di decrittazione. La crittografia è utilizzata per proteggere informazioni sensibili, come ad esempio dati personali o finanziari, e per garantire la sicurezza delle comunicazioni su Internet.
La crittografia simmetrica è un tipo di crittografia in cui la chiave di crittazione è la stessa della chiave di decrittazione. Questo tipo di crittografia è stato utilizzato fin dall'antichità, come nel caso della scìtala, un dispositivo utilizzato dagli Spartani per crittare i loro messaggi militari. Il problema con la crittografia simmetrica è che il segreto, ovvero la chiave, deve essere condiviso tra le parti coinvolte nella comunicazione, il che significa che chiunque conosca la chiave può accedere alle informazioni. Questo lo rende poco sicuro per le comunicazioni moderne.
Nel corso della storia, sono state sviluppate molte tecniche di crittografia, tra cui la crittografia a sostituzione, la crittografia a trasposizione e la crittografia a chiave pubblica. La crittografia a chiave pubblica, o crittografia asimmetrica, utilizza due chiavi diverse per crittare e decrittare le informazioni, il che la rende più sicura della crittografia simmetrica.
Oggi, la crittografia è ampiamente utilizzata per garantire la sicurezza delle comunicazioni su Internet, come ad esempio nelle transazioni finanziarie, nelle comunicazioni tra i dispositivi di rete e nei protocolli di sicurezza come SSL e TLS. La crittografia è anche utilizzata per proteggere i dati su dispositivi di archiviazione, come hard disk e chiavette USB.
Cifrario di Cesare: due dischi rotanti con un alfabeto, la password è una lettera che viene posta nel disco inferiore sotto la A del disco superiore. Per criptare quindi si cerca la lettera originale nel disco superiore e si legge la corrispondente in quello inferiore; per decriptare si fa il contrario. Anche qui ottimo in quanto fino al medioevo poco gente sa leggere e scrivere, tuttavia le vocali sono molto presenti nella lingua italiana, inglese, ... così diventa più probabile che se trovo molto l, probabilmente si trova una vocale. Usato durante la Guerra Civile Americana dai confederati.
Cifrario di Bellaso: evoluzione del cifrario di Cesare; associa ad ogni lettera dell’alfabeto una combinazione del cifrario di Cesare. Per criptare o decriptare il testo serve un testo breve noto ad entrambi, e per ogni lettera da cifrare si usa una combinazione diversa del cifrario di cesare in base al valore delle varie lettere del testo noto ad entrambi: nasce così la password.
Cifrario di Vigenere: rappresentazione più comoda del cifrario di Bellaso
Enigma: era una macchina a chiave simmetrica utilizzata dalla Germania nazista durante la seconda guerra mondiale per crittare le comunicazioni militari. La macchina utilizzava un elenco di password, chiamate chiavi di crittazione, consegnato assieme alla macchina, per crittare i messaggi. Enigma era molto complicata da decriptare in quanto utilizzava quattro cifrari di Cesare, che modificavano la posizione delle lettere del messaggio, e due connettori, che scambiavano le coppie di lettere.
Enigma era una macchina elettromeccanica, il che la rendeva molto più sofisticata rispetto alle macchine di crittografia precedenti, che erano basate su tecniche manuali. Tuttavia, alla fine si riuscì a decriptare i messaggi grazie a un gruppo di polacchi che aveva trovato una falla nell'algoritmo che permetteva di ridurre il numero di password da provare. Gli inglesi di Bletchley Park costruirono poi una macchina, detta "Bombe", per provare le possibili password e decodificare il messaggio. La Bombe era un dispositivo meccanico elettromeccanico che utilizzava rotori per decrittare i messaggi codificati. La decrittazione di Enigma fu una svolta fondamentale nella seconda guerra mondiale, in quanto permise agli Alleati di leggere le comunicazioni tedesche e di avere un vantaggio strategico sui loro nemici.
Crittografia simmetrica nei calcolatori - Cifrario di Vernam: password e testo in chiaro vengono valutati BIT per BIT. Per ogni bit si effettua l’operazione XOR (originale=cifrato + chiave) (ritorna vero solo se i bit sono uguali, falso altrimenti). In poche è parole 0 (originale) + 0 (chiave) = 1, come con 1+1=1, mentre se diversi viene 0. Per decriptare basta riapplicare l’operazione di XOR usando la stessa password. Oggigiorno è facile da scoprirla.
Per creare password sicure, è importante utilizzare la fantasia e creare password che siano difficili da indovinare. Oggi, provare molte password rapidamente costa poco, grazie alla potenza del cloud computing e delle GPU. Per questo motivo, conviene creare password lunghe e complesse, utilizzando frasi che abbiano un significato personale. In questo modo, si rende la vita difficile ai potenziali attaccanti che cercano di indovinare la password provando tutte le possibili combinazioni.
Inoltre, è importante evitare di utilizzare la stessa password per diversi account, in quanto ciò aumenta il rischio di compromissione dei propri dati personali.
One Time Pad (OTP) è un sistema di crittografia che utilizza una chiave di crittazione generata casualmente, della stessa lunghezza del testo da crittare. Questo sistema di crittografia è considerato il più sicuro che esista, in quanto è impossibile decriptare il messaggio senza conoscere la chiave di crittazione. Tuttavia, il problema con OTP è che la chiave di crittazione deve essere scambiata in modo sicuro tra le parti coinvolte nella comunicazione, il che può essere difficile se le parti si trovano in luoghi diversi.
Test password: https://password.kaspersky.com/it/
Crittografia asimmetrica: la chiave di crittazione è diversa dalla chiave di decrittazione, così si possono condividere le informazioni senza condividere la password. Nel 1977 tre ricercatori, Rivest, Scharit e Ademan scoprono come riprodurre una criptazione asimmetrica al pc. Tuttavia nel 77 viene sviluppato anche dai servizi segreti inglesi. Non devo condividere la mia chiave.
Generazione chiave: si parte da un numero segreto generato casualmente (in realtà, si parte da due numeri primi generati casualmente); da questo segreto si ricavano due chiavi:
chiave privata (Kpri): tenuta segreta
chiave pubblica (Kpub): distribuita agli utenti
Conoscendo una chiave, non è possibile ricavare l’altra. Una volta generate le chiavi, il numero segreto iniziale viene gettato via.
Il distributore e il destinatario hanno due chiavi
Crittazione e decrittazione: un messaggio crittato con Kpri può essere decrittato solo con kpub, e viceversa. Quindi è molto sicuro e comodo.
Funzione di Hash: è una funzione matematica che prende in input una sequenza di dati di qualsiasi lunghezza e restituisce un'identificazione univoca di dimensioni fisse, chiamata hash code o hash. L'hash code è una stringa di caratteri che rappresenta l'impronta digitale della sequenza di dati originale.
La particolarità della funzione di hash è che non è invertibile, ovvero non è possibile ricostruire la sequenza di dati originale a partire dall'hash code. Inoltre, la funzione di hash è generata casualmente, il che la rende molto utile per rilevare modifiche alla sequenza di dati originale. Se anche solo un bit della sequenza di dati viene modificato, l'hash code generato dalla funzione di hash sarà completamente differente dall'hash code originale.
Inoltre, la funzione di hash è progettata in modo tale da minimizzare le collisioni, ovvero l'evento in cui due sequenze di dati differenti producono lo stesso hash code. Se due sequenze di dati producono lo stesso hash code, allora si dice che c'è una collisione. Tuttavia, le collisioni sono estremamente rare e la funzione di hash è progettata per minimizzarle. Inoltre, le collisioni che si verificano sono in genere inutili, in quanto le sequenze di dati che producono lo stesso hash code sono comunque palesemente diverse.
OTP: One Time Password: sono dispositivi usati per migliorare notevolmente la sicurezza dei login: all’utente vengono chiesti username, password ed una sequenza numerica che ha una scadenza temporale. In questo modo, se l’utente si fa rubare username e password un malintenzionato non potrà avere accesso al sistema. Il dispositivo contiene al suo interno una Kpri ed un orologio; quando si preme il pulsante, la data ed ora correnti vengono criptati con Kpri e visualizzati. Il server che riceve il numero decodifica il numero con Kpub, e se la data/ora estratti sono abbastanza recenti.
La firma elettronica è un insieme di dati elettronici che conferma l'autenticità, l'integrità e la provenienza di un documento elettronico. La firma elettronica non serve a criptare il file, ma a verificare i dati inviati, ovvero a garantire che il documento non sia stato modificato e che il mittente sia effettivamente la persona corretta.
Il formato più diffuso per la firma elettronica è il P7M, un file che contiene il documento originale e un codice generato a partire dall'hash del documento originale, criptato con una chiave privata (Kpri). La verifica della firma elettronica avviene calcolando due stringhe, una per ciascun elemento contenuto nel file di firma: l'hash del documento originale e la decriptazione con la chiave pubblica (Kpub) dell'hash criptato. Se le due stringhe coincidono, la firma è verificata.
La firma elettronica permette di garantire l'integrità del documento elettronico, ovvero di verificare se il contenuto del file è stato modificato. Infatti, se qualcuno ha modificato il contenuto del file, l'hash del documento non coinciderà più con quello della stringa criptata. Inoltre, la firma elettronica garantisce l'autenticità del mittente, ovvero che la persona che ha inviato il file è effettivamente la persona corretta. Se l'utente che invia il file non è la persona corretta, l'hash calcolato non corrisponderà alla stringa decriptata dal destinatario.
Un certificato è un file che contiene i dati di un'entità, come ad esempio un sito web o una persona, insieme alla sua chiave pubblica e altre informazioni. Il problema principale con i certificati è che in teoria, per comunicare in modo sicuro, gli utenti dovrebbero incontrarsi fisicamente e scambiare i certificati. Questo sarebbe impraticabile per la maggior parte dei casi.
Il certificato firmato risolve questo problema utilizzando la reputazione di una Certification Authority (CA), ovvero un'entità terza fidata. Il certificatore fornisce la sua firma elettronica per garantire l'autenticità del certificato. In questo modo, l'utente può verificare la reputazione della CA e accettare il certificato come autentico. Tuttavia, hanno una data di scadenza, in quanto la sicurezza della chiave privata diminuisce con il tempo. In media, la durata di un certificato è di circa tre anni, ma le grandi aziende lo rinnovano più frequentemente. Quando un certificato scade, l'utente deve richiederne uno nuovo.
Inoltre, può accadere che la chiave privata venga persa o compromessa. In questo caso, il certificato deve essere revocato per garantire la sicurezza della comunicazione. Le CA serie mantengono una lista di certificati revocati, consultabile online tramite l'estensione .crl. Per garantire la sicurezza della chiave privata, si utilizza un dispositivo di firma, come una smartcard o una pendrive. Questi dispositivi contengono la coppia di chiavi pubblica e privata, con la chiave privata che non lascia mai il dispositivo. Quando si deve apporre una firma, l'utente deve inserire un PIN per accedere alla chiave privata e quindi crittografare i dati. Tuttavia, questi dispositivi richiedono l'installazione di driver, che possono essere fastidiosi e poco aggiornati.
Per verificare la validità dei certificati, esistono programmi gratuiti come Dike, che permettono di verificare la validità dei certificati e delle firme digitali. In generale, la firma digitale e i certificati sono strumenti importanti per garantire la sicurezza delle comunicazioni online, ma è importante tenere presente che non sono una garanzia totale di sicurezza. Ad esempio, un utente malintenzionato potrebbe ottenere la chiave privata di un certificato in modo illecito e utilizzarla per impersonare il proprietario del certificato. Inoltre, i certificati non possono proteggere contro attacchi di tipo phishing, in cui l'utente viene ingannato per consegnare la propria password o altre informazioni sensibili.
Il protocollo TLS (Transport Layer Security) è un protocollo di sicurezza che si esegue a livello TCP per garantire la criptazione asimmetrica della comunicazione tra client e server, utilizzando crittografia a chiave simmetrica per garantire la riservatezza, l'integrità e l'autenticità dei dati scambiati. TLS è l'evoluzione del protocollo SSL (Secure Sockets Layer) ed è utilizzato principalmente per garantire la sicurezza delle transazioni finanziarie online, della posta elettronica, della navigazione web e della comunicazione tra applicazioni.
Il funzionamento di TLS prevede lo scambio di numerosi messaggi tra il client e il server, al fine di stabilire una connessione sicura. Il client richiede al server di parlare in modo sicuro e il server risponde con il suo certificato. Il client verifica il certificato del server con una delle Certificate Authority (CA) che ha in memoria, quindi genera una password casuale di lunghezza elevata e la trasmette al server crittata con la chiave pubblica del server (Kpub). Il server decripta la password con la sua chiave privata (Kpri) e da questo momento in poi, il client e il server criptano tutto il traffico con la chiave simmetrica che si sono scambiati.
La scelta di utilizzare una chiave simmetrica e non sempre la crittografia asimmetrica è dovuta a tre motivi principali. In primo luogo, la crittografia asimmetrica è computazionalmente pesante e richiederebbe una quantità elevata di risorse computazionali per ogni messaggio scambiato. In secondo luogo, la crittografia asimmetrica renderebbe la connessione sicura solo dal client verso il server, limitando la sicurezza solo in una direzione. Infine, la scelta di utilizzare la crittografia simmetrica riduce il traffico crittato con la chiave privata, rendendo più difficile per un potenziale attaccante scoprire la chiave.
TLS garantisce l'integrità dei dati, ovvero nessuno può intercettare, modificare e rimandare un messaggio senza che il destinatario se ne accorga. Inoltre, garantisce la sicurezza dei dati scambiati, impedendo a un utente non autorizzato di intercettare e decodificare il traffico tra il client e il server. La connessione TLS garantisce inoltre l'autenticazione del server, ovvero il fatto che il client stia effettivamente parlando con il server reale e non con un impostore. L'autenticazione del client, se richiesta, garantisce che il server stia effettivamente parlando con il client corretto.
HTTPS: protocollo HTTP criptato con TLS. Usano la porta 443 e gli URL specificano come protocollo (Lets and Creap versione gratuita per server web)
HTTPS. Tuttavia non è detto che tutto il contenuto sia protetto e c’è comunque spazio per inganni e truffe. Basta creare un sito e poi creare una pagina con un indirizzo molto lungo e qui duplico la pagina di paypall.
PEC: Posta Elettronica Certificata; è un standard Italiano (vale solo in italia), con tutto quello che ne consegue. Si tratta di un server SMTP che pretende l’autenticazione per inviare i messaggi (username e password). Il server associa al suo interno una Kpri per ogni username, e quando riceve un messaggio vi appone una firma elettronica usando la Kpri dell’utente connesso. Il messaggio viene quindi inviato al server finale. La cosa funziona veramente solo se un server PEC comunica con un altro server (in genere PEC). La ricevuta di consegna che il server PEC trasmette serve solo ad attestare che il messaggio è stato consegnato al server PEC di destinazione, e non che l’utente l’abbia effettivamente scaricato e letto (vale come una raccomandata). Inoltre, rispetto alla raccomandata normale, posso dimostrare cosa ho inviato che con una busta non è possibile. Basta Gmail e chiunque possono registrare pec, quindi ci possono essere malware.