Cos’è la sicurezza informatica
Cenni di crittografia
Sicurezza nel web:
Autenticazione e Autorizzazione
Esempi di autenticazione (form login, token base etc etc)
Esempi di attacchi a siti web: come difendersi?
Dott. Mirko Porcu Corso sicurezza nel Web 2
Argomenti trattati
●
Cos’è la sicurezza informatica
●
Cenni di crittografia
– Simmetrica
– Assimetrica
– Funzioni di Hashing
– Firma Digitale
● Sicurezza nel web:
– Autenticazione e Autorizzazione
– OWASP
Dott. Mirko Porcu Corso sicurezza nel Web 3
Cos'è la sicurezza informatica?
La sicurezza informatica è quel ramo dell’informatica che si occupa della prevenzione e della gestione di
incidenti informatici.
Dott. Mirko Porcu Corso sicurezza nel Web 4
Rami della sicurezza informatica
Prevenzione :
Attuare tutte quelle procedure che permettono di mettere in sicurezza il sistema
Gestione degli incidenti informatici :
Digital investigation
https://www.sicurezzaegiustizia.com/digital-forensics/
Dott. Mirko Porcu Corso sicurezza nel Web 5
Applicazione
insicura
Applicazione
sicura
Cosa devo fare ?
Quando la mia
applicazione sarà sicura?
Dott. Mirko Porcu Corso sicurezza nel Web 6
Alcune definizioni
Cos'è un attacco?
L'attacco è un insieme di azioni compiute dall'attaccante sfruttando le vulnerabilità delle applicazioni
target.
Vulnerabilità
è una debolezza dell'applicazione che permette agli attaccanti di effettuare comportamenti non
desiderati / previsti.
Dott. Mirko Porcu Corso sicurezza nel Web 7
Cenni di crittografia
Crittografia
Tecnica di rappresentazione di un messaggio in una forma tale per cui l’informazione in esso contenuta
possa essere recepita solo dal destinatario. Ciò si può ottenere con due diversi metodi:
- celando l’esistenza stessa del messaggio;
- sottoponendo il testo del messaggio a trasformazioni che lo rendano incomprensibile.
http://www.treccani.it/enciclopedia/crittografia/
Dott. Mirko Porcu Corso sicurezza nel Web 8
Legge di Kerckhoffs
In un sistema crittografico è importante tener segreta la chiave, non l'algoritmo di cifratura.
Dott. Mirko Porcu Corso sicurezza nel Web 9
Cifratura simmetrica
La cifratura a chiave privata prevede che la chiave debba essere la medesima per il processo di cifratura
e di de-cifratura del messaggio e deve rimanere segreta a terze parti non coinvolte nella comunicazione.
Dott. Mirko Porcu Corso sicurezza nel Web 10
Cifratura simmetrica
La cifratura a chiave simmetrica può essere di 2 tipologie :
● Cifratura a blocchi
– Gli algoritmi di cifratura a blocchi sono senza uno stato, cioè il testo cifrato dipende semplicemente dalla
chiave e dal testo nel blocco da cifrare
● Cifratura a flusso
– Gli algoritmi di cifratura a flusso sono un particolare tipo di algoritmo di cifratura a blocco, in cui abbiamo dei
blocchi molto piccoli (di solito, da 1 bit fino a 8 bit), ma l'algoritmo è detto stateful, cioè viene preso in
considerazione uno stato, una condizione dell'algoritmo, dovuto a ciò che è stato cifrato precedentemente.
Con un algoritmo di questo tipo, non si può più creare un attacco di tipo probabilistico, perché la stessa
sequenza di bit nel messaggio “m” sarà codificata con due blocchi diversi in “c”.
Dott. Mirko Porcu Corso sicurezza nel Web 11
Cifratura simmetrica - esempi
Cifratura a flusso
●
One-Time Pad (OTP)
●
RC4
Cifratura a blocchi
●
DES ( Data Encryption Standard)
●
3DES
●
RC2
● AES (Advanced Encryption Standard)
● Blowfish
Dott. Mirko Porcu Corso sicurezza nel Web 12
Cifratura assimetrica
Cifratura a chiave pubblica
●
Le chiavi di cifratura e de-cifratura sono diverse
– Mittente e destinatario non condividono una chiave segreta
– La chiave di cifratura pubblica è nota a tutti e, quindi, anche al mittente
– La chiave di cifratura privata è nota solo al destinatario
Dott. Mirko Porcu Corso sicurezza nel Web 14
Cifratura asimmetrica - esempi
●
Diffie-Hellman
– L’algoritmo`é particolarmente adatto per scambiarsi una chiave segreta attraverso un canale non
sicuro.
● DSS (Digital Signature Standard)
● ElGamal
– Lo schema è basato sulla difficoltà del calcolo del logaritmo discreto
● RSA ( Ronald Rivest, Adi Shamir e Leonard Adleman)
– Chiavi da 1024 bit a 4096
Oggi, insieme a DSS, RSA è uno degli algoritmi più usati per la cifratura di firme digitali.
Dott. Mirko Porcu Corso sicurezza nel Web 15
Modalità di attacco
Ciphertext only attack:
L’attaccante conosce una stringa “y” di testo
cifrato.
Cerca di risalire al testo in chiaro o alla chiave.
Known plaintext attack:
L’attaccante conosce una stringa “x” di testo in
chiaro e il corrispondente testo cifrato “y”.
Cerca di risalire alla chiave o di decrittare altri
testi cifrati.
Chosen plaintext attack:
L’attaccante ha la possibilità di scegliere un testo
in chiaro “x” e di costruire il corrispondente testo
cifrato.
Cerca di risalire alla chiave o di decrittare altri
testi cifrati.
Chosen ciphertext attack:
L’attaccante ha la possibilità di scegliere un testo
cifrato “y” e di ottenere il corrispondente testo in
chiaro “x”.
Cerca di risalire alla chiave.
Dott. Mirko Porcu Corso sicurezza nel Web 16
Funzione di Hash - requisiti
Requisiti di una funzione di hash :
• È facile calcolare l’hash di un messaggio
• È difficile trovare il messaggio che ha generato un dato hash (non invertibilità delle funzioni di hash)
• È difficile modificare un messaggio senza modificare il relativo hash (resistenza debole alle collisioni)
• È difficile trovare due messaggi che abbiano lo stesso hash (resistenza forte alle collisioni)
Dott. Mirko Porcu Corso sicurezza nel Web 17
Funzione di hash - utilizzo
Utilizzata per la verifica dell’integrità di un messaggio
Dott. Mirko Porcu Corso sicurezza nel Web 18
Funzione di Hash - esempi
●
MD5 (message-digest algorithm 5) hash da 128 bit – non considerata più sicura
– https://md5.gromweb.com/
●
Gli algoritmi di hash SHA
– SHA-1 hash da160 bit
– SHA-2 hash da 256 a 512 bit
Dott. Mirko Porcu Corso sicurezza nel Web 19
PKCS
https://it.wikipedia.org/wiki/PKCS
https://italy.emc.com/emc-plus/rsa-labs/standards-initiatives/public-key-cryptography-standards.htm
Dott. Mirko Porcu Corso sicurezza nel Web 20
Firma digitale
Cos'è la firma digitale?
La firma digitale è il risultato di una procedura informatica – detta validazione – che garantisce
l’autenticità e l’integrità di documenti informatici.
La firma digitale conferisce al documento informatico le seguenti caratteristiche:
● autenticità: la firma digitale garantisce l’identità del sottoscrittore del documento;
● integrità: la firma digitale assicura che il documento non sia stato modificato dopo la sottoscrizione;
● non ripudio: la firma digitale attribuisce piena validità legale al documento, pertanto il documento
non può essere ripudiato dal sottoscrittore;
http://www.agid.gov.it/firma-digitale
Dott. Mirko Porcu Corso sicurezza nel Web 21
Firma digitale
Come funziona la firma digitale?
Per generare una firma digitale è necessario utilizzare una coppia di chiavi digitali asimmetriche
attribuite in maniera univoca ad un soggetto, detto titolare.
La chiave privata è conosciuta solo dal titolare ed è usata per generare la firma digitale da apporre al
documento. Viceversa, la chiave da rendere pubblica è usata per verificare l’autenticità della firma.
Questo metodo è conosciuto come crittografia a doppia chiave e garantisce la piena sicurezza (visto che
la chiave pubblica non può essere utilizzata per ricostruire la chiave privata).
http://www.agid.gov.it/firma-digitale
Dott. Mirko Porcu Corso sicurezza nel Web 22
Tipi di sottoscrizioni digitali
Gli standard europei prevedono tre tipi di sottoscrizione digitale, identificati dagli acronimi
●
CadES : La busta CadES (CMS* Advanced Electronic Signatures) è un file con estensione .p7m, il cui
contenuto è visualizzabile solo attraverso idonei software in grado di “sbustare” il documento
sottoscritto.
●
PadES : La firma digitale in formato PadES (PDF Advanced Electronic Signature) è un file con
estensione .pdf, leggibile con i comuni reader disponibili per questo formato.
● XadES : Lo XAdES (XML Advanced Electronic Signature) rappresenta un nuovo standard di firma
digitale basato su file XML (formato già definito dal W3C).
*CMS Cryptographic Message Syntax
Dott. Mirko Porcu Corso sicurezza nel Web 23
CAdES
L’autenticità del certificato è garantita da un’Autorità di certificazione; in Italia, dai certificatori
accreditati ai sensi dell’articolo 29 del CAD (D.Lgs. n. 82/2005).
http://www.agid.gov.it/sites/default/files/linee_guida/firme_multiple.pdf
Dott. Mirko Porcu Corso sicurezza nel Web 24
CAdES
Per il formato CAdES l’apposizione di due o più firme può essere effettuata in due modi:
• re-imbustando in una nuova busta CAdES la busta generata dalla sottoscrizione precedente (c.d. controfirma o “firma
matrioska”), come mostrato in figura 2;
• oppure aggiungendo nella busta ulteriori firme, accompagnate dai relativi certificati (c.d.firme congiunte), come mostrato in
figura 3.
http://www.agid.gov.it/sites/default/files/linee_guida/firme_multiple.pdf
Dott. Mirko Porcu Corso sicurezza nel Web 25
Validazione dei documenti firmati
Validazione dei file firmati :
●
Utilizzare software di terze parti; l'Agid (Agenzia per l'Italia digitale) propone alcuni fornitori sulla pagina
http://www.agid.gov.it/agenda-digitale/infrastrutture-architetture/firme-elettroniche/software-verifica
● Utilizzare il DSS (Digital Signature Service) o altre librerie per la propria implementazione
Dott. Mirko Porcu Corso sicurezza nel Web 26
Digital Signature Service
Librerie open source disponibili al seguente repository :
●
https://github.com/esig/dss
Attualmente alla versione 5.0 e composto da oltre 30 moduli
Al seguente link si può trovare la versione dell'Agid alla versione 4.7.0 :
● https://dss.agid.gov.it/
Al seguente link si può trovare la demo alla versione più aggiornata :
● https://joinup.ec.europa.eu/sd-dss/webapp-demo/home
Al seguente link si può trovare il codice sorgente della demo :
● https://ec.europa.eu/cefdigital/code/projects/ESIG/repos/dss-demos/browse
Dott. Mirko Porcu Corso sicurezza nel Web 27
Progettazione del software sicuro
Il software sicuro è quel software che permette di fruire delle risorse e dei comportamenti/funzionalità
per cui è stato disegnato.
Dott. Mirko Porcu Corso sicurezza nel Web 28
Autenticazione e Autorizzazione
In termini di protezione del computer, l'autenticazione, è un processo con il quale un'entità (un utente,
un'applicazione, un dispositivo, ecc.) accerta un'altra entità per ciò che pretende di essere. Il metodo di
autenticazione più comunemente utilizzato è il nome utente e una password.
L'autorizzazione è il processo che in genere viene dopo l'autenticazione e viene utilizzato per concedere
o negare l'accesso a un risorsa (resource computing). Così, una volta che una persona o un dispositivo è
stato autenticato, l’autorizzazione abilita il controllo dell'accesso a una risorsa, solo per coloro che hanno
un bisogno legittimo per ottenere tale l'accesso.
Dott. Mirko Porcu Corso sicurezza nel Web 29
Tipologia di Autenticazione
Tipi di autenticazione :
●
Password Authentication
●
PIN Authentication
● 3 One Time Password (OTP) Authentication
● Smart Card Authentication
● Certificate Based Authentication
● Biometric Authentication
● USB Devices : Alcuni dispositivi USB gestiscono le informazioni di autenticazione, come un
certificato X.509
Dott. Mirko Porcu Corso sicurezza nel Web 30
OWASP
L'Open Web Application Security Project (chiamato semplicemente OWASP), è un progetto open-source
per la sicurezza delle applicazioni.
Dott. Mirko Porcu Corso sicurezza nel Web 31
OWASP TOP TEN 2017
● A1-Injection
Injection flaws, such as SQL, OS, XXE, and LDAP injection occur when untrusted data is sent to an
interpreter as part of a command or query. The attacker’s hostile data can trick the interpreter
into executing unintended commands or accessing data without proper authorization.
● A2-Broken Authentication and Session Management
Application functions related to authentication and session management are often implemented
incorrectly, allowing attackers to compromise passwords, keys, or session tokens, or to exploit
other implementation flaws to assume other users’ identities (temporarily or permanently).
● A3-Cross-Site Scripting (XSS)
XSS flaws occur whenever an application includes untrusted data in a new web page without
proper validation or escaping, or updates an existing web page with user supplied data using a
browser API that can create JavaScript. XSS allows attackers to execute scripts in the victim’s
browser which can hijack user sessions, deface web sites, or redirect the user to malicious sites.
Dott. Mirko Porcu Corso sicurezza nel Web 32
OWASP TOP TEN 2017
● A4-Broken Access Control
Restrictions on what authenticated users are allowed to do are not properly enforced. Attackers
can exploit these flaws to access unauthorized functionality and/or data, such as access other
users' accounts, view sensitive files, modify other users’ data, change access rights, etc.
● A5-Security Misconfiguration
Good security requires having a secure configuration defined and deployed for the application,
frameworks, application server, web server, database server, platform, etc. Secure settings should
be defined, implemented, and maintained, as defaults are often insecure. Additionally, software
should be kept up to date.
● A6-Sensitive Data Exposure
Many web applications and APIs do not properly protect sensitive data, such as financial,
healthcare, and PII. Attackers may steal or modify such weakly protected data to conduct credit
card fraud, identity theft, or other crimes. Sensitive data deserves extra protection such as
encryption at rest or in transit, as well as special precautions when exchanged with the browser.
Dott. Mirko Porcu Corso sicurezza nel Web 33
OWASP TOP TEN 2017
●
A7-Insufficient Attack Protection
The majority of applications and APIs lack the basic ability to detect, prevent, and respond to
both manual and automated attacks. Attack protection goes far beyond basic input validation and
involves automatically detecting, logging, responding, and even blocking exploit attempts.
Application owners also need to be able to deploy patches quickly to protect against attacks.
● A8-Cross-Site Request Forgery (CSRF)
A CSRF attack forces a logged-on victim’s browser to send a forged HTTP request, including the
victim’s session cookie and any other automatically included authentication information, to a
vulnerable web application. Such an attack allows the attacker to force a victim’s browser to
generate requests the vulnerable application thinks are legitimate requests from the victim.
●
A9-Using Components with Known Vulnerabilities
Components, such as libraries, frameworks, and other software modules, run with the same
privileges as the application. If a vulnerable component is exploited, such an attack can facilitate
serious data loss or server takeover. Applications and APIs using components with known
vulnerabilities may undermine application defenses and enable various attacks and impacts.
Dott. Mirko Porcu Corso sicurezza nel Web 34
OWASP TOP TEN 2017
●
A10-Underprotected APIs
Modern applications often involve rich client applications and APIs, such as JavaScript in the
browser and mobile apps, that connect to an API of some kind (SOAP/XML, REST/JSON, RPC, GWT,
etc.). These APIs are often unprotected and contain numerous vulnerabilities.
https://www.owasp.org/index.php/Top_10_2017-Top_10
Dott. Mirko Porcu Corso sicurezza nel Web 35
Bibliografia
Bibliografia
●
http://www.agid.gov.it/
●
http://www.infosectoday.com/Articles/Intro_to_Cryptography/Introduction_Encryption_Algorithms.htm
●
https://dss.agid.gov.it
●
https://www.owasp.org/index.php/Top_10_2017-Top_10
●
https://www.ietf.org/
●
https://italy.emc.com/emc-plus/rsa-labs/standards-initiatives/public-key-cryptography-standards.htm
●
https://home.deib.polimi.it/zanero/slides/SicurezzaFirmaDigitale.pdf
●
https://it.wikiversity.org/wiki/Criptosistemi_simmetrici