15. Protezione e Sicurezza

Proprietà di sicurezza

Primitive di crittografia

Hash crittografiche

Un’hash crittografica è una funzione con un output di lunghezza fissa che mappa stringhe di qualsiasi dimensione a stringhe di lunghezza fissa. Le funzioni di hash crittografiche devono essere di facile computazione, deve essere impossibile determinare la preimmagine e resistenti alle collisioni.
Esempi di hash sono SHA-512 e Keccak e vengono utilizzate nella distribuzione di software online per controllarne l’integrità.

Crittografia a chiave simmetrica

Sia E() la funzione di crittazione e D() la sua inversa funzione di decrittazione. Entrambe oltre al messaggio richiedono la stessa chiave segreta per cifrare e decifrare il messaggio.

Esistono due tipi di cifrari:

Alcuni esempi di cifrari moderni sono RC4, che viene usato in SSL/TLS e nei browser, A5/3 per proteggere la privacy delle comunicazioni telefoniche e AES è il cifrario a blocco standard.
In particolare, AES è utilizzato in diverse applicazioni, come la cifratura di file systems o per cifrare il traffico di rete in protocolli come SSL (Secure Sockets Layer), IPSEC (IP Security), e altri.

Crittografia a chiave pubblica (asimmetrica)

Viene inventata da Diffie e Hellman nel 1976. Ogni utente ha due chiavi diverse: una chiave pubblica per la cifratura e una privata (segreta) per la decrittazione. La chiave pubblica è costruita in modo per cui non si può derivare da essa la privata ed esiste una corrispondenza unica tra le due. Ogni utente ha una coppia di chiavi: privata e segreta, ogni utente conosce tutte le chiavi pubbliche e solo il proprietario conosce la sua chiave segreta. Viene utilizzato oltre al file cifrato una firma del file che determina il proprietario del file. Esempi di algoritmi a chiave pubblica sono RSA e DSA (basata sulle curve ellittiche per smartcard e ambienti embedded).

Certificato digitale

Un certificato digitale è un documento elettronico che certifica che una chiave pubblica appartiene ad una specifica entità, come una persona, un server, un sito web, etc. L'obiettivo principale dei certificati digitali è prevenire l'usurpazione di identità, garantendo l'autenticità delle informazioni.

Trusted boot

Si rende necessario essere sicuri dell’autenticità del kernel caricato in memoria al momento di avvio per garantire integrità ed autenticità.

BIOS

Il BIOS è il Basic Input-Output System. È un firmware in ROM che fornisce un gruppo di interfacce indipendenti dal sistema operativo per l’hardware. Alcuni esempi:

UEFI & Secure UEFI Boot

Nelle nuove macchine il BIOS è stato sostituito da UEFI (Unified Extensible Firmware Interface), un'interfaccia tra il firmware e il sistema operativo che permette di avere molte funzioni aggiuntive rispetto al solo BIOS. Per esempio, fornisce una funzionalità importante di sicurezza chiamata Secure UEFI Boot. Essa fornisce un livello aggiuntivo di sicurezza durante il processo di avvio del sistema operativo, proteggendo il firmware e i componenti del sistema da manipolazioni non autorizzate e da software dannosi. Contribuisce a garantire un ambiente di avvio affidabile e sicuro per il sistema operativo e le applicazioni eseguite sul sistema.

Trusted platform module (TPM)

Il TPM è un chip sicuro integrato sulla scheda madre che fornisce la generazione e memorizzazione sicura delle chiavi crittografiche implementando le primitive. È un coprocessore trusted separato.

Cifratura disco

La partizione di sistema operativo cifrata contiene il sistema operativo, lo swap, i file temporanei, il file system e i file di ibernazione. La chiave di cifratura SRK (storage root key) è memorizzata nella TPM e viene usata per cifrare la chiave di cifratura dell’intero volume (FVEK: full volume encryption key) protetta da un PIN. La FVEK viene memorizzata cifrata sul disco nel volume del sistema operativo.

Login - autenticazione degli utenti

L’autenticazione si può basare su quello che l’utente conosce, come PIN o password, su quello che l'utente ha, come USB o smartcard o su quello che l’utente è o fa (biometrie fisiologiche o comportamentali).
L’autenticazione si svolge in due operazioni: l’identificazione in cui l’utente annuncia chi è e l’autenticazione vera e propria dove si verifica che è chi dice di essere.

Malware

Un malware è un software malevolo che intenzionalmente ha l’obiettivo di violare una o più proprietà di sicurezza.

Trojan horse

Sono programmi che replicano le funzionalità di programmi di uso comune o programmi dall’apparenza innocua ma che contengono codice malevolo. Tipicamente catturano informazioni e le inviano al creatore del programma come informazioni critiche per la sicurezza del sistema, private dell’utente e compromettono o distruggono informazioni importanti per il funzionamento del sistema.

Keylogger

Sono programmi che registrano ciò che l’utente scrive su tastiera e lo inviano al creatore del programma.

Ransomware

Sono programmi che bloccano l’accesso al computer o ai dati e l’utente deve pagare per il loro ripristino.

Rootkits

Sono programmi installati con privilegi di amministratore e inseriscono logica malevola modificando il sistema operativo host per non essere identificabili. Nascondono la loro esistenza modificando i normali meccanismi del sistema operativo come le tabelle dei processo, files, registry entries. Possono essere persistenti o caricati ogni volta in memoria come prima operazione al boot e girare in user o kernel mode. Sono installati tipicamente via Trojan o da intrusione fisica. Occorrono diverse contromisure per renderli innocui.

Vulnerabilità

Buffer overflow

Il buffer è un blocco di memoria che contiene una o più istanze di qualche dato, tipicamente associato ad un array. Tipicamente hanno dimensioni predefinite. Il buffer overflow accade quando il dato di input ha dimensioni maggiori rispetto alla dimensione del buffer. La vulnerabilità sfrutta il layout del programma in memoria e i registri della CPU.
Ricordiamo che la memoria viene divisa nel seguente modo: