SlideShare a Scribd company logo
1 of 40
Creiamo una CA
max@mascanc.net
Facciamo una CA
• OpenSSL supporta la creazione di CA tramite openssl.cnf
max@spirit6 ~/Desktop/Corso PIN $ mkdir demoCA
max@spirit6 ~/Desktop/Corso PIN/demoCA $ mkdir newcerts
max@spirit6 ~/Desktop/Corso PIN/demoCA $ touch index.txt
max@spirit6 ~/Desktop/Corso PIN/demoCA $ echo 01 > serial
• demoCA conterrà tutte le informazioni, newcerts i nuovi certificati,
index la loro lista e il loro stato e serial il numero seriale
CA Private key
• Generiamo la chiave
max@spirit6 ~/Desktop/Corso PIN $ openssl genrsa -out cakey.pem
4096
max@spirit6 ~/Desktop/Corso PIN $ mkdir -p demoCA/private
max@spirit6 ~/Desktop/Corso PIN $ mv cakey.pem demoCA/private/
CA Public key
• max@spirit6 ~/Desktop/Corso PIN $ openssl req -new -x509 -key
demoCA/private/cakey.pem -out demoCA/cacert.pem
max@spirit6 ~/Desktop/Corso PIN $ openssl req -new -x509 -key
demoCA/private/cakey.pem -out demoCA/cacert.pem -config
/usr/local/etc/openssl/openssl.cnf
CA Certificate
max@spirit6 ~/Desktop/Corso PIN $ openssl x509 -in demoCA/cacert.pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 18067107955812575165 (0xfabb42f650d7a7bd)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=IT, ST=Italy, L=Firenze, O=Internet Widgits Pty Ltd, OU=NA, CN=CA PIN/emailAddress=max@mascanc.net
Validity
Not Before: Mar 24 06:47:36 2019 GMT
Not After : Apr 23 06:47:36 2019 GMT
Subject: C=IT, ST=Italy, L=Firenze, O=Internet Widgits Pty Ltd, OU=NA, CN=CA PIN/emailAddress=max@mascanc.net
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
CA Certificate
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
24:9A:54:A7:3E:15:3E:E6:9C:DB:7D:D4:D8:78:05:38:19:3A:1A:8F
X509v3 Authority Key Identifier:
keyid:24:9A:54:A7:3E:15:3E:E6:9C:DB:7D:D4:D8:78:05:38:19:3A:1A:8F
CA Certificate
X509v3 Basic Constraints:
CA:TRUE
X509v3 Key Usage:
Certificate Sign, CRL Sign
Netscape Cert Type:
SSL CA, S/MIME CA
X509v3 Subject Alternative Name:
email:max@mascanc.net
X509v3 Issuer Alternative Name:
email:max@mascanc.net
Signature Algorithm: sha256WithRSAEncryption
Generiamo un certificato normale
max@spirit6 ~/Desktop/Corso PIN $ openssl genrsa -out key.pem 2048
Generiamo una RICHIESTA DI CERTIFICATO
max@spirit6 ~/Desktop/Corso PIN $ openssl req -new -key key.pem -
out req.pem
Con la richiesta di certificato ci si va a registrare presso la RA
Firma di una CSR
max@spirit6 ~/Desktop/Corso PIN $ openssl req -in req.pem -noout –
text
max@spirit6 ~/Desktop/Corso PIN $ openssl ca -in req.pem -out
req.cert -config /usr/local/etc/openssl/openssl.cnf
Ora vediamo serial e index.txt
Creiamo un altro certificato
• E revochiamolo
max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config
/usr/local/etc/openssl/openssl.cnf -revoke cert2.pem
Generiamo la CRL
max@spirit6 ~/Desktop/Corso PIN $ emacs demoCA/crlnumber
Generiamo la CRL
• max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config
/usr/local/etc/openssl/openssl.cnf -gencrl -crldays 2 -out myca.crl
• max@spirit6 ~/Desktop/Corso PIN $ openssl crl -CAfile
demoCA/cacert.pem -in myca.crl
CRL
max@spirit6 ~/Desktop/Corso PIN $ openssl crl -CAfile demoCA/cacert.pem -in myca.crl -noout -text
Certificate Revocation List (CRL):
Version 2 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: /C=IT/ST=Italy/L=Firenze/O=Internet Widgits Pty Ltd/OU=NA/CN=CA
PIN/emailAddress=max@mascanc.net
Last Update: Mar 25 08:06:18 2019 GMT
Next Update: Mar 27 08:06:18 2019 GMT
CRL extensions:
X509v3 CRL Number:
2
Revoked Certificates:
Serial Number: 03
Revocation Date: Mar 25 08:05:12 2019 GMT
CRL
• max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config
/usr/local/etc/openssl/openssl.cnf -status 03
• 03=Revoked (R)
• max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config
/usr/local/etc/openssl/openssl.cnf -status 01
• 01=Valid (V)
Transport Layer Security (TLS)
• TLS specificato nell’rfc8446
• Attualmente version 1.3
• Fornisce sicurezza a livello di trasporto
• Base per ogni servizio superiore (l’architettura della sicurezza,
ricordate?)
• HTTPS, SMTPS, IMAPS
TCP Three way handshake
TLS Handshake
TLS Modo di funzionamento
• TLS utilizza PKI per stabilire il TRUST
• Il certificato presentato durante il ServerHello è considerato fidato dal
client basandosi su delle policy aziendali
• Ma come fidarsi che il server è chi dice di essere?
• Bisogna fidarsi della RA
• Ma come fa il server a fidarsi del client?
• Mutua autenticazione TLS
CipherSpec
• TLS Funziona usando PKI per scambiarsi delle chiavi simmetriche
• Si configura con delle stringhe chiamate Ciphersuite
• Hanno la seguente forma
• TLS_RSA_WITH_AES_128_CBC_SHA256
• <protocollo>_<algoritmo>_<cifrariosimmetrico>_<parametri>_<modo
perativo>_<onewayhash>
Vediamolo dal vivo
• Facciamo partire tomcat o wildfly e configuriamolo
• Java KeyStore
• Si esporta il file in formato p12 max@spirit6 ~/Desktop/Corso PIN $
openssl pkcs12 -export -out corso.p12 -inkey key2.pem -in cert2.pem
• Se la chiave è cifrata si decifra come
• max@spirit6 ~/Desktop/Corso PIN $ openssl rsa -in enckey.pem (dopo
averla incollata in un file chiamato enckey.pem)
• Java keystore ha 2 diversi formati: JKS e P12
Keystore e Truststore
• max@spirit6 ~/Desktop/Corso PIN $ keytool -importkeystore -
srckeystore corso.p12 -srcstoretype pkcs12 -deststoretype jks -
destkeystore corso.jks
• In $JAVA_HOME/jre/lib/security c’è il file cacerts con la lista delle
certification authority fidate (tipo eIDAS)
Debug di un handshake
• Si mette java in debug: -Djavax.net.debug=ssl
• Openssl TLS client
• openssl s_client -connect localhost:6514 -cert
/Users/max/Documents/Tiani/Test
Certificates/certificates_arnulf/s1_cert.pem -key
/Users/max/Documents/Tiani/Test
Certificates/certificates_arnulf/s1_key.pem -CAfile
/Users/max/Documents/Tiani/Test
Certificates/certificates_arnulf/demoCA/cacert.pem
Openssl Server
• openssl s_server -accept 6514 -cert
/Users/max/Documents/Tiani/Test
Certificates/certificates_arnulf/s1_cert.pem -key
/Users/max/Documents/Tiani/Test
Certificates/certificates_arnulf/s1_key.pem -CAfile
/Users/max/Documents/Tiani/Test
Certificates/certificates_arnulf/demoCA/cacert.pem -www
One Way Hash Function
• Dato un messaggio M di lunghezza variabile, la funzione che produce
un output di lunghezza fissa si chiama funzione di hash
• h=H(M)
• La funzione di HASH non è segreta, ci vuole un modo per proteggere il
suo valore
• Fornisce l’impronta digitale di un file.
Requisiti
• H può essere applicata ad un blocco di dati di qualsiasi dimensione
• H produce un output di lunghezza fissa
• H(x) è facile da calcolare
• Dato h è computazionalmente impossibile trovare x tale che H(x) = h.
E quindi one-way (monodirezionale)
• Per un blocco x, è computazionalmente impossibile trovare un 𝑦 ≠
𝑥: 𝐻 𝑥 = 𝐻 𝑦
• L’hash deve essere lungo: attacchi di compleanno, lo spazio si riduce
in alcuni casi a 2 𝑚/2
Le funzioni hash
• Hash sono usate in congiunzione message authentication code (MAC)
• Esempi: Md5, SHA1, SHA256
Scambio di Chiavi Diffie Hellman
• Schema di Merkle: qual è il problema?
Diffie Hellman
• Merkle ha un problema di tipo MITM (vedremo nell’attacco di
Armando)
• DH si basa sui logaritmi discreti (stessa difficoltà di calcolare la
fattorizzazione dei primi di RSA)
• Esempio: 𝑦 = 𝑔 𝑥
𝑚𝑜𝑑 𝑝. Se si conosce g,x,p, è immediato calcolare y.
Ma, dati, y, g, p, è computazionalmente complesso calcolare x.
• Si definisce una radice primitiva di un numero primo p com un
numero le cui potenze modulo p generano tutti gli interi compresi fra
1 e p-1
DH
• Per cui se a è radice primitiva di p (primo) allora i numeri
𝑎 𝑚𝑜𝑑 𝑝, 𝑎2 𝑚𝑜𝑑 𝑝, … , 𝑎 𝑝−1 𝑚𝑜𝑑 𝑝 sono distinti e sono costituiti dagli
interi compresi fra 1 e p-1 in una certa permutazione
• Per un qualsiasi intero b e una radici primitava a di un numero primo
p, si può trovare un esponente univoco i tale che
𝑏 ≡ 𝑎 𝑖 𝑚𝑜𝑑 𝑝 , 0 ≤ 𝑖 ≤ (𝑝 − 1)
• L’esponente i è chiamato logaritmo discreto di b per la base a modulo
p, e si denota con 𝑑𝑙𝑜𝑔 𝑎,𝑝 𝑏
Sistema di scambio DH
• Siano noti 𝑞, 𝛼, con q primo e 𝛼 < q, 𝛼 radice primitiva di q
• A genera la chiave selezionando un numero privato 𝑋𝐴 tale che 𝑋𝐴 <
𝑞 e calcola 𝑌𝐴 pubblico, tale che YA = 𝛼 𝑋 𝐴 𝑚𝑜𝑑 𝑞
• B genera la chiave selezionando un numero privato 𝑋 𝐵 tale che 𝑋 𝐵 <
𝑞 e calcola 𝑌𝐵 pubblico, tale che YB = 𝛼 𝑋 𝐵 𝑚𝑜𝑑 𝑞
• A genera la chiave come 𝐾 = 𝑌𝐵
𝑋 𝐴 𝑚𝑜𝑑 𝑞
• B genera la chiave come 𝐾 = 𝑌𝐴
𝑋 𝐵 𝑚𝑜𝑑 𝑞
• Per le proprietà dell’aritmetica modulare.
Scambio di chiavi diffie hellman
Diffie-Hellman
• DH soffre di MITM
• Se Mallory si mette nel mezzo (come?) può sfruttare una vulnerabilità
• QUALE?
Vulnerabilità DH
• I messaggi non sono autenticati!
• Non sappiamo se un messaggio viene da alice o da mallory!
• Si risolve con un sistema di certificati e firme (ciA)
Aritmetica a curva ellittica
• Il problema di RSA è che le chiavi devono essere molto grandi: piccolo
problema computazionale (Hardware Security Modules)
• Elliptic Curve Criptography (ECC) usa uno schema per avere chiavi più
piccole
• Dimensioni delle chiavi a parità di sforzo computazionale
Simmetrico ECC RSA
56 112 512
128 256 3072
256 512 15360
ECC
• Ci si basa sulla somma su curva ellittica, ovvero risolvere il problema
• 𝑎 × 𝑘 = 𝑎 + 𝑎 + ⋯ + 𝑎 k volte
• Una curva ellittica su 𝑅 è definita da equazioni cubiche, della
seguente forma
• 𝑦2 + 𝑎𝑥𝑦 + 𝑏𝑦 = 𝑥3 + 𝑐𝑥2 + 𝑑𝑥 + 𝑒, che si possono semplificare
come 𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏
• Quindi: y = 𝑥3 + 𝑎𝑥 + 𝑏. La curva è costituita da valori positivi o
negativi.
Esempio (http://fooplot.com)
ECC
• Avendo un punto di origine, O, la somma sulle curve ellittiche può
essere definita da algebre
• Si somma nell’insieme definito E(a,b) per i valori specific di a,b di
𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏
• Ma questo era sui numeri reali. ECC usa curve su 𝑍 𝑃, e i coefficienti
hanno valori interi da 0, p-1.
• 𝑦2
𝑚𝑜𝑑 𝑝 = 𝑥3
+ 𝑎𝑥 + 𝑏 𝑚𝑜𝑑 𝑝
Quale è il »problema difficile»?
• Si consideri 𝑄 = 𝑘𝑃, dove 𝑄, 𝑃 ∈ 𝐸 𝑝 𝑎, 𝑏 , 𝑘 < 𝑝.
• Facile calcolare Q, dati k, P, complesso calcolare k, dati Q e P.
Crittografia
• Elementi globali pubblici: 𝐸 𝑞 𝑎, 𝑏 curva ellittica, 𝐺 punto sulla curva
• A sceglie 𝑛 𝐴 < 𝑛, e calcola 𝑃𝐴 = 𝑛 𝐴 × 𝐺. 𝑛 𝐴è la chiave privata
• B sceglie 𝑛 𝐵 < 𝑛, e calcola 𝑃𝐵 = 𝑛 𝐵 × 𝐺. 𝑛 𝐵è la chiave privata
• 𝐾 = 𝑛 𝐴 × 𝑃𝐵 = 𝑛 𝐴 × 𝑛 𝐵 × 𝐺 = 𝑛 𝐵 × 𝑛 𝐴 × 𝐺 = 𝑛 𝐵 × 𝑃𝐴
OpenSSL: lista curve
• root@massimo ~ $ openssl ecparam -list_curves
• secp384r1 : NIST/SECG curve over a 384 bit prime field
• secp521r1 : NIST/SECG curve over a 521 bit prime field
• prime256v1: X9.62/SECG curve over a 256 bit prime field
• Vediamo i parametri
• root@massimo ~ $ openssl ecparam -name secp521r1 -out
secp521r1.pem
Generiamo chiavi
• root@massimo ~ $ openssl ecparam -in secp521r1.pem -genkey -
noout -out massiec.key
• Pubblica: root@massimo ~ $ openssl ec -in massiec.key -pubout -out
massiecpub.key
Vediamo: root@massimo ~ $ openssl ec -in massiec.key -noout -text -
param_enc explicit
• Poi si derivano chiavi e si possono usare con e.g., AES.
Applichiamo le curve ellittiche
• TLS_ECDH_RSA_AES_128_CBC_SHA
• Blockchain!

More Related Content

Similar to Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL

Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...azuredayit
 
Presentazione Oz - Mozart
Presentazione Oz - MozartPresentazione Oz - Mozart
Presentazione Oz - Mozartfede
 
SQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkSQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkAlessio Biasiutti
 
Checkmate to crypto malware. Scacco matto ai crypto malware
Checkmate to crypto malware. Scacco matto ai crypto malwareCheckmate to crypto malware. Scacco matto ai crypto malware
Checkmate to crypto malware. Scacco matto ai crypto malwareGianfranco Tonello
 
Utilizzo delle Smartcard su GNU/Linux
Utilizzo delle Smartcard su GNU/Linux Utilizzo delle Smartcard su GNU/Linux
Utilizzo delle Smartcard su GNU/Linux alberto fiaschi
 
Linux@Unina
Linux@UninaLinux@Unina
Linux@UninaNaLUG
 
Codemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneCodemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneGabriele Guizzardi
 
Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupalDay
 
MongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBMongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBStefano Dindo
 
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014Andrea Telatin
 
Scacco matto ai crytpo malware (smau 2016 - bologna)
Scacco matto ai crytpo malware (smau 2016 - bologna)Scacco matto ai crytpo malware (smau 2016 - bologna)
Scacco matto ai crytpo malware (smau 2016 - bologna)Gianfranco Tonello
 

Similar to Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL (20)

Public Key Infrastructure
Public Key InfrastructurePublic Key Infrastructure
Public Key Infrastructure
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
 
Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Presentazione Oz - Mozart
Presentazione Oz - MozartPresentazione Oz - Mozart
Presentazione Oz - Mozart
 
Bash intro
Bash introBash intro
Bash intro
 
SQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkSQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with Spark
 
Checkmate to crypto malware. Scacco matto ai crypto malware
Checkmate to crypto malware. Scacco matto ai crypto malwareCheckmate to crypto malware. Scacco matto ai crypto malware
Checkmate to crypto malware. Scacco matto ai crypto malware
 
IPsec
IPsecIPsec
IPsec
 
Php mysql3
Php mysql3Php mysql3
Php mysql3
 
Utilizzo delle Smartcard su GNU/Linux
Utilizzo delle Smartcard su GNU/Linux Utilizzo delle Smartcard su GNU/Linux
Utilizzo delle Smartcard su GNU/Linux
 
Linux@Unina
Linux@UninaLinux@Unina
Linux@Unina
 
Codemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneCodemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazione
 
Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e Drupal
 
MongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBMongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDB
 
RC4 e RC5
RC4 e RC5RC4 e RC5
RC4 e RC5
 
Javascript
JavascriptJavascript
Javascript
 
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
 
Dal C a Java (2/3)
Dal C a Java (2/3)Dal C a Java (2/3)
Dal C a Java (2/3)
 
Scacco matto ai crytpo malware (smau 2016 - bologna)
Scacco matto ai crytpo malware (smau 2016 - bologna)Scacco matto ai crytpo malware (smau 2016 - bologna)
Scacco matto ai crytpo malware (smau 2016 - bologna)
 

More from Massimiliano Masi

Cybersecurity Task Force at ASECAP Days 2023
Cybersecurity Task Force at ASECAP Days 2023Cybersecurity Task Force at ASECAP Days 2023
Cybersecurity Task Force at ASECAP Days 2023Massimiliano Masi
 
Securing Critical Infrastructures with a cybersecurity digital twin
Securing Critical Infrastructures with a cybersecurity digital twin Securing Critical Infrastructures with a cybersecurity digital twin
Securing Critical Infrastructures with a cybersecurity digital twin Massimiliano Masi
 
A Cybersecurity Digital Twin for Critical Infrastructure Protection
A Cybersecurity Digital Twin for Critical Infrastructure ProtectionA Cybersecurity Digital Twin for Critical Infrastructure Protection
A Cybersecurity Digital Twin for Critical Infrastructure ProtectionMassimiliano Masi
 
Enabling a Zero Trust Architecture in Smart Grids through a Digital Twin
Enabling a Zero Trust Architecture in Smart Grids through a Digital TwinEnabling a Zero Trust Architecture in Smart Grids through a Digital Twin
Enabling a Zero Trust Architecture in Smart Grids through a Digital TwinMassimiliano Masi
 
Security and Safety by Design in the Internet of Actors an Architectural Appr...
Security and Safety by Design in the Internet of Actors an Architectural Appr...Security and Safety by Design in the Internet of Actors an Architectural Appr...
Security and Safety by Design in the Internet of Actors an Architectural Appr...Massimiliano Masi
 
Achieving Interoperability Through IHE
Achieving Interoperability Through IHEAchieving Interoperability Through IHE
Achieving Interoperability Through IHEMassimiliano Masi
 
Securing Mobile e-Health Environments by Design: A Holistic Architectural App...
Securing Mobile e-Health Environments by Design: A Holistic Architectural App...Securing Mobile e-Health Environments by Design: A Holistic Architectural App...
Securing Mobile e-Health Environments by Design: A Holistic Architectural App...Massimiliano Masi
 
Enabling Security-by-design in Smart Grids: An architecture-based approach
Enabling Security-by-design in Smart Grids: An architecture-based approachEnabling Security-by-design in Smart Grids: An architecture-based approach
Enabling Security-by-design in Smart Grids: An architecture-based approachMassimiliano Masi
 
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black Tulip
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black TulipCorso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black Tulip
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black TulipMassimiliano Masi
 
Corso IFTS CyberSecurity Expert
Corso IFTS CyberSecurity ExpertCorso IFTS CyberSecurity Expert
Corso IFTS CyberSecurity ExpertMassimiliano Masi
 
The need for interoperability in blockchain-based initiatives to facilitate c...
The need for interoperability in blockchain-based initiatives to facilitate c...The need for interoperability in blockchain-based initiatives to facilitate c...
The need for interoperability in blockchain-based initiatives to facilitate c...Massimiliano Masi
 
Blockchain Technology - Common Use-Cases
Blockchain Technology - Common Use-CasesBlockchain Technology - Common Use-Cases
Blockchain Technology - Common Use-CasesMassimiliano Masi
 
Automating Smart Grid Solution Architecture Design
Automating Smart Grid Solution Architecture DesignAutomating Smart Grid Solution Architecture Design
Automating Smart Grid Solution Architecture DesignMassimiliano Masi
 
Introduction to Blockchain Technologies
Introduction to Blockchain TechnologiesIntroduction to Blockchain Technologies
Introduction to Blockchain TechnologiesMassimiliano Masi
 
eHealth 2018 http://www.ehealth20xx.at/program-blockchain/
eHealth 2018 http://www.ehealth20xx.at/program-blockchain/eHealth 2018 http://www.ehealth20xx.at/program-blockchain/
eHealth 2018 http://www.ehealth20xx.at/program-blockchain/Massimiliano Masi
 
A governance model for ubiquitous medical devices accessing eHealth data: the...
A governance model for ubiquitous medical devices accessing eHealth data: the...A governance model for ubiquitous medical devices accessing eHealth data: the...
A governance model for ubiquitous medical devices accessing eHealth data: the...Massimiliano Masi
 
Addressing Security and Provide through IHE Profiles
Addressing Security and Provide through IHE Profiles Addressing Security and Provide through IHE Profiles
Addressing Security and Provide through IHE Profiles Massimiliano Masi
 

More from Massimiliano Masi (17)

Cybersecurity Task Force at ASECAP Days 2023
Cybersecurity Task Force at ASECAP Days 2023Cybersecurity Task Force at ASECAP Days 2023
Cybersecurity Task Force at ASECAP Days 2023
 
Securing Critical Infrastructures with a cybersecurity digital twin
Securing Critical Infrastructures with a cybersecurity digital twin Securing Critical Infrastructures with a cybersecurity digital twin
Securing Critical Infrastructures with a cybersecurity digital twin
 
A Cybersecurity Digital Twin for Critical Infrastructure Protection
A Cybersecurity Digital Twin for Critical Infrastructure ProtectionA Cybersecurity Digital Twin for Critical Infrastructure Protection
A Cybersecurity Digital Twin for Critical Infrastructure Protection
 
Enabling a Zero Trust Architecture in Smart Grids through a Digital Twin
Enabling a Zero Trust Architecture in Smart Grids through a Digital TwinEnabling a Zero Trust Architecture in Smart Grids through a Digital Twin
Enabling a Zero Trust Architecture in Smart Grids through a Digital Twin
 
Security and Safety by Design in the Internet of Actors an Architectural Appr...
Security and Safety by Design in the Internet of Actors an Architectural Appr...Security and Safety by Design in the Internet of Actors an Architectural Appr...
Security and Safety by Design in the Internet of Actors an Architectural Appr...
 
Achieving Interoperability Through IHE
Achieving Interoperability Through IHEAchieving Interoperability Through IHE
Achieving Interoperability Through IHE
 
Securing Mobile e-Health Environments by Design: A Holistic Architectural App...
Securing Mobile e-Health Environments by Design: A Holistic Architectural App...Securing Mobile e-Health Environments by Design: A Holistic Architectural App...
Securing Mobile e-Health Environments by Design: A Holistic Architectural App...
 
Enabling Security-by-design in Smart Grids: An architecture-based approach
Enabling Security-by-design in Smart Grids: An architecture-based approachEnabling Security-by-design in Smart Grids: An architecture-based approach
Enabling Security-by-design in Smart Grids: An architecture-based approach
 
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black Tulip
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black TulipCorso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black Tulip
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black Tulip
 
Corso IFTS CyberSecurity Expert
Corso IFTS CyberSecurity ExpertCorso IFTS CyberSecurity Expert
Corso IFTS CyberSecurity Expert
 
The need for interoperability in blockchain-based initiatives to facilitate c...
The need for interoperability in blockchain-based initiatives to facilitate c...The need for interoperability in blockchain-based initiatives to facilitate c...
The need for interoperability in blockchain-based initiatives to facilitate c...
 
Blockchain Technology - Common Use-Cases
Blockchain Technology - Common Use-CasesBlockchain Technology - Common Use-Cases
Blockchain Technology - Common Use-Cases
 
Automating Smart Grid Solution Architecture Design
Automating Smart Grid Solution Architecture DesignAutomating Smart Grid Solution Architecture Design
Automating Smart Grid Solution Architecture Design
 
Introduction to Blockchain Technologies
Introduction to Blockchain TechnologiesIntroduction to Blockchain Technologies
Introduction to Blockchain Technologies
 
eHealth 2018 http://www.ehealth20xx.at/program-blockchain/
eHealth 2018 http://www.ehealth20xx.at/program-blockchain/eHealth 2018 http://www.ehealth20xx.at/program-blockchain/
eHealth 2018 http://www.ehealth20xx.at/program-blockchain/
 
A governance model for ubiquitous medical devices accessing eHealth data: the...
A governance model for ubiquitous medical devices accessing eHealth data: the...A governance model for ubiquitous medical devices accessing eHealth data: the...
A governance model for ubiquitous medical devices accessing eHealth data: the...
 
Addressing Security and Provide through IHE Profiles
Addressing Security and Provide through IHE Profiles Addressing Security and Provide through IHE Profiles
Addressing Security and Provide through IHE Profiles
 

Recently uploaded

presentazione di Storia di michela .pptx
presentazione di Storia di michela .pptxpresentazione di Storia di michela .pptx
presentazione di Storia di michela .pptxmichelacaporale12345
 
PLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfPLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfpalestiniaurora
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxpalestiniaurora
 
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptxPancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptxpalestiniaurora
 
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxPancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxpalestiniaurora
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxpalestiniaurora
 
Amburgo la città più smart della Germania
Amburgo la città più smart della GermaniaAmburgo la città più smart della Germania
Amburgo la città più smart della Germaniasofiaganzaroli9
 
TeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docxTeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docxteccarellilorenzo
 
Questa è una presentazione di Arte riguardo Cimabue
Questa è una presentazione di Arte riguardo CimabueQuesta è una presentazione di Arte riguardo Cimabue
Questa è una presentazione di Arte riguardo Cimabuenicolofusco13
 
a scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPa scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPDamiano Orru
 
allotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptxallotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptxmichelacaporale12345
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxpalestiniaurora
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxpalestiniaurora
 
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...nicolofusco13
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointpalestiniaurora
 
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...Roberto Scano
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxpalestiniaurora
 
ed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptxed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptxmichelacaporale12345
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxpalestiniaurora
 
Powerpoint tesi di laurea
Powerpoint tesi di laurea Powerpoint tesi di laurea
Powerpoint tesi di laurea Valentina Ottini
 

Recently uploaded (20)

presentazione di Storia di michela .pptx
presentazione di Storia di michela .pptxpresentazione di Storia di michela .pptx
presentazione di Storia di michela .pptx
 
PLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfPLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdf
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docx
 
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptxPancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
 
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxPancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docx
 
Amburgo la città più smart della Germania
Amburgo la città più smart della GermaniaAmburgo la città più smart della Germania
Amburgo la città più smart della Germania
 
TeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docxTeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docx
 
Questa è una presentazione di Arte riguardo Cimabue
Questa è una presentazione di Arte riguardo CimabueQuesta è una presentazione di Arte riguardo Cimabue
Questa è una presentazione di Arte riguardo Cimabue
 
a scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPa scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAP
 
allotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptxallotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptx
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpoint
 
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docx
 
ed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptxed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptx
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
Powerpoint tesi di laurea
Powerpoint tesi di laurea Powerpoint tesi di laurea
Powerpoint tesi di laurea
 

Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL

  • 2. Facciamo una CA • OpenSSL supporta la creazione di CA tramite openssl.cnf max@spirit6 ~/Desktop/Corso PIN $ mkdir demoCA max@spirit6 ~/Desktop/Corso PIN/demoCA $ mkdir newcerts max@spirit6 ~/Desktop/Corso PIN/demoCA $ touch index.txt max@spirit6 ~/Desktop/Corso PIN/demoCA $ echo 01 > serial • demoCA conterrà tutte le informazioni, newcerts i nuovi certificati, index la loro lista e il loro stato e serial il numero seriale
  • 3. CA Private key • Generiamo la chiave max@spirit6 ~/Desktop/Corso PIN $ openssl genrsa -out cakey.pem 4096 max@spirit6 ~/Desktop/Corso PIN $ mkdir -p demoCA/private max@spirit6 ~/Desktop/Corso PIN $ mv cakey.pem demoCA/private/
  • 4. CA Public key • max@spirit6 ~/Desktop/Corso PIN $ openssl req -new -x509 -key demoCA/private/cakey.pem -out demoCA/cacert.pem max@spirit6 ~/Desktop/Corso PIN $ openssl req -new -x509 -key demoCA/private/cakey.pem -out demoCA/cacert.pem -config /usr/local/etc/openssl/openssl.cnf
  • 5. CA Certificate max@spirit6 ~/Desktop/Corso PIN $ openssl x509 -in demoCA/cacert.pem -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 18067107955812575165 (0xfabb42f650d7a7bd) Signature Algorithm: sha256WithRSAEncryption Issuer: C=IT, ST=Italy, L=Firenze, O=Internet Widgits Pty Ltd, OU=NA, CN=CA PIN/emailAddress=max@mascanc.net Validity Not Before: Mar 24 06:47:36 2019 GMT Not After : Apr 23 06:47:36 2019 GMT Subject: C=IT, ST=Italy, L=Firenze, O=Internet Widgits Pty Ltd, OU=NA, CN=CA PIN/emailAddress=max@mascanc.net Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (4096 bit) Modulus:
  • 6. CA Certificate Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 24:9A:54:A7:3E:15:3E:E6:9C:DB:7D:D4:D8:78:05:38:19:3A:1A:8F X509v3 Authority Key Identifier: keyid:24:9A:54:A7:3E:15:3E:E6:9C:DB:7D:D4:D8:78:05:38:19:3A:1A:8F
  • 7. CA Certificate X509v3 Basic Constraints: CA:TRUE X509v3 Key Usage: Certificate Sign, CRL Sign Netscape Cert Type: SSL CA, S/MIME CA X509v3 Subject Alternative Name: email:max@mascanc.net X509v3 Issuer Alternative Name: email:max@mascanc.net Signature Algorithm: sha256WithRSAEncryption
  • 8. Generiamo un certificato normale max@spirit6 ~/Desktop/Corso PIN $ openssl genrsa -out key.pem 2048 Generiamo una RICHIESTA DI CERTIFICATO max@spirit6 ~/Desktop/Corso PIN $ openssl req -new -key key.pem - out req.pem Con la richiesta di certificato ci si va a registrare presso la RA
  • 9. Firma di una CSR max@spirit6 ~/Desktop/Corso PIN $ openssl req -in req.pem -noout – text max@spirit6 ~/Desktop/Corso PIN $ openssl ca -in req.pem -out req.cert -config /usr/local/etc/openssl/openssl.cnf Ora vediamo serial e index.txt
  • 10. Creiamo un altro certificato • E revochiamolo max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config /usr/local/etc/openssl/openssl.cnf -revoke cert2.pem Generiamo la CRL max@spirit6 ~/Desktop/Corso PIN $ emacs demoCA/crlnumber
  • 11. Generiamo la CRL • max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config /usr/local/etc/openssl/openssl.cnf -gencrl -crldays 2 -out myca.crl • max@spirit6 ~/Desktop/Corso PIN $ openssl crl -CAfile demoCA/cacert.pem -in myca.crl
  • 12. CRL max@spirit6 ~/Desktop/Corso PIN $ openssl crl -CAfile demoCA/cacert.pem -in myca.crl -noout -text Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: /C=IT/ST=Italy/L=Firenze/O=Internet Widgits Pty Ltd/OU=NA/CN=CA PIN/emailAddress=max@mascanc.net Last Update: Mar 25 08:06:18 2019 GMT Next Update: Mar 27 08:06:18 2019 GMT CRL extensions: X509v3 CRL Number: 2 Revoked Certificates: Serial Number: 03 Revocation Date: Mar 25 08:05:12 2019 GMT
  • 13. CRL • max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config /usr/local/etc/openssl/openssl.cnf -status 03 • 03=Revoked (R) • max@spirit6 ~/Desktop/Corso PIN $ openssl ca -config /usr/local/etc/openssl/openssl.cnf -status 01 • 01=Valid (V)
  • 14. Transport Layer Security (TLS) • TLS specificato nell’rfc8446 • Attualmente version 1.3 • Fornisce sicurezza a livello di trasporto • Base per ogni servizio superiore (l’architettura della sicurezza, ricordate?) • HTTPS, SMTPS, IMAPS
  • 15. TCP Three way handshake
  • 17. TLS Modo di funzionamento • TLS utilizza PKI per stabilire il TRUST • Il certificato presentato durante il ServerHello è considerato fidato dal client basandosi su delle policy aziendali • Ma come fidarsi che il server è chi dice di essere? • Bisogna fidarsi della RA • Ma come fa il server a fidarsi del client? • Mutua autenticazione TLS
  • 18. CipherSpec • TLS Funziona usando PKI per scambiarsi delle chiavi simmetriche • Si configura con delle stringhe chiamate Ciphersuite • Hanno la seguente forma • TLS_RSA_WITH_AES_128_CBC_SHA256 • <protocollo>_<algoritmo>_<cifrariosimmetrico>_<parametri>_<modo perativo>_<onewayhash>
  • 19. Vediamolo dal vivo • Facciamo partire tomcat o wildfly e configuriamolo • Java KeyStore • Si esporta il file in formato p12 max@spirit6 ~/Desktop/Corso PIN $ openssl pkcs12 -export -out corso.p12 -inkey key2.pem -in cert2.pem • Se la chiave è cifrata si decifra come • max@spirit6 ~/Desktop/Corso PIN $ openssl rsa -in enckey.pem (dopo averla incollata in un file chiamato enckey.pem) • Java keystore ha 2 diversi formati: JKS e P12
  • 20. Keystore e Truststore • max@spirit6 ~/Desktop/Corso PIN $ keytool -importkeystore - srckeystore corso.p12 -srcstoretype pkcs12 -deststoretype jks - destkeystore corso.jks • In $JAVA_HOME/jre/lib/security c’è il file cacerts con la lista delle certification authority fidate (tipo eIDAS)
  • 21. Debug di un handshake • Si mette java in debug: -Djavax.net.debug=ssl • Openssl TLS client • openssl s_client -connect localhost:6514 -cert /Users/max/Documents/Tiani/Test Certificates/certificates_arnulf/s1_cert.pem -key /Users/max/Documents/Tiani/Test Certificates/certificates_arnulf/s1_key.pem -CAfile /Users/max/Documents/Tiani/Test Certificates/certificates_arnulf/demoCA/cacert.pem
  • 22. Openssl Server • openssl s_server -accept 6514 -cert /Users/max/Documents/Tiani/Test Certificates/certificates_arnulf/s1_cert.pem -key /Users/max/Documents/Tiani/Test Certificates/certificates_arnulf/s1_key.pem -CAfile /Users/max/Documents/Tiani/Test Certificates/certificates_arnulf/demoCA/cacert.pem -www
  • 23. One Way Hash Function • Dato un messaggio M di lunghezza variabile, la funzione che produce un output di lunghezza fissa si chiama funzione di hash • h=H(M) • La funzione di HASH non è segreta, ci vuole un modo per proteggere il suo valore • Fornisce l’impronta digitale di un file.
  • 24. Requisiti • H può essere applicata ad un blocco di dati di qualsiasi dimensione • H produce un output di lunghezza fissa • H(x) è facile da calcolare • Dato h è computazionalmente impossibile trovare x tale che H(x) = h. E quindi one-way (monodirezionale) • Per un blocco x, è computazionalmente impossibile trovare un 𝑦 ≠ 𝑥: 𝐻 𝑥 = 𝐻 𝑦 • L’hash deve essere lungo: attacchi di compleanno, lo spazio si riduce in alcuni casi a 2 𝑚/2
  • 25. Le funzioni hash • Hash sono usate in congiunzione message authentication code (MAC) • Esempi: Md5, SHA1, SHA256
  • 26. Scambio di Chiavi Diffie Hellman • Schema di Merkle: qual è il problema?
  • 27. Diffie Hellman • Merkle ha un problema di tipo MITM (vedremo nell’attacco di Armando) • DH si basa sui logaritmi discreti (stessa difficoltà di calcolare la fattorizzazione dei primi di RSA) • Esempio: 𝑦 = 𝑔 𝑥 𝑚𝑜𝑑 𝑝. Se si conosce g,x,p, è immediato calcolare y. Ma, dati, y, g, p, è computazionalmente complesso calcolare x. • Si definisce una radice primitiva di un numero primo p com un numero le cui potenze modulo p generano tutti gli interi compresi fra 1 e p-1
  • 28. DH • Per cui se a è radice primitiva di p (primo) allora i numeri 𝑎 𝑚𝑜𝑑 𝑝, 𝑎2 𝑚𝑜𝑑 𝑝, … , 𝑎 𝑝−1 𝑚𝑜𝑑 𝑝 sono distinti e sono costituiti dagli interi compresi fra 1 e p-1 in una certa permutazione • Per un qualsiasi intero b e una radici primitava a di un numero primo p, si può trovare un esponente univoco i tale che 𝑏 ≡ 𝑎 𝑖 𝑚𝑜𝑑 𝑝 , 0 ≤ 𝑖 ≤ (𝑝 − 1) • L’esponente i è chiamato logaritmo discreto di b per la base a modulo p, e si denota con 𝑑𝑙𝑜𝑔 𝑎,𝑝 𝑏
  • 29. Sistema di scambio DH • Siano noti 𝑞, 𝛼, con q primo e 𝛼 < q, 𝛼 radice primitiva di q • A genera la chiave selezionando un numero privato 𝑋𝐴 tale che 𝑋𝐴 < 𝑞 e calcola 𝑌𝐴 pubblico, tale che YA = 𝛼 𝑋 𝐴 𝑚𝑜𝑑 𝑞 • B genera la chiave selezionando un numero privato 𝑋 𝐵 tale che 𝑋 𝐵 < 𝑞 e calcola 𝑌𝐵 pubblico, tale che YB = 𝛼 𝑋 𝐵 𝑚𝑜𝑑 𝑞 • A genera la chiave come 𝐾 = 𝑌𝐵 𝑋 𝐴 𝑚𝑜𝑑 𝑞 • B genera la chiave come 𝐾 = 𝑌𝐴 𝑋 𝐵 𝑚𝑜𝑑 𝑞 • Per le proprietà dell’aritmetica modulare.
  • 30. Scambio di chiavi diffie hellman
  • 31. Diffie-Hellman • DH soffre di MITM • Se Mallory si mette nel mezzo (come?) può sfruttare una vulnerabilità • QUALE?
  • 32. Vulnerabilità DH • I messaggi non sono autenticati! • Non sappiamo se un messaggio viene da alice o da mallory! • Si risolve con un sistema di certificati e firme (ciA)
  • 33. Aritmetica a curva ellittica • Il problema di RSA è che le chiavi devono essere molto grandi: piccolo problema computazionale (Hardware Security Modules) • Elliptic Curve Criptography (ECC) usa uno schema per avere chiavi più piccole • Dimensioni delle chiavi a parità di sforzo computazionale Simmetrico ECC RSA 56 112 512 128 256 3072 256 512 15360
  • 34. ECC • Ci si basa sulla somma su curva ellittica, ovvero risolvere il problema • 𝑎 × 𝑘 = 𝑎 + 𝑎 + ⋯ + 𝑎 k volte • Una curva ellittica su 𝑅 è definita da equazioni cubiche, della seguente forma • 𝑦2 + 𝑎𝑥𝑦 + 𝑏𝑦 = 𝑥3 + 𝑐𝑥2 + 𝑑𝑥 + 𝑒, che si possono semplificare come 𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏 • Quindi: y = 𝑥3 + 𝑎𝑥 + 𝑏. La curva è costituita da valori positivi o negativi.
  • 36. ECC • Avendo un punto di origine, O, la somma sulle curve ellittiche può essere definita da algebre • Si somma nell’insieme definito E(a,b) per i valori specific di a,b di 𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏 • Ma questo era sui numeri reali. ECC usa curve su 𝑍 𝑃, e i coefficienti hanno valori interi da 0, p-1. • 𝑦2 𝑚𝑜𝑑 𝑝 = 𝑥3 + 𝑎𝑥 + 𝑏 𝑚𝑜𝑑 𝑝
  • 37. Quale è il »problema difficile»? • Si consideri 𝑄 = 𝑘𝑃, dove 𝑄, 𝑃 ∈ 𝐸 𝑝 𝑎, 𝑏 , 𝑘 < 𝑝. • Facile calcolare Q, dati k, P, complesso calcolare k, dati Q e P. Crittografia • Elementi globali pubblici: 𝐸 𝑞 𝑎, 𝑏 curva ellittica, 𝐺 punto sulla curva • A sceglie 𝑛 𝐴 < 𝑛, e calcola 𝑃𝐴 = 𝑛 𝐴 × 𝐺. 𝑛 𝐴è la chiave privata • B sceglie 𝑛 𝐵 < 𝑛, e calcola 𝑃𝐵 = 𝑛 𝐵 × 𝐺. 𝑛 𝐵è la chiave privata • 𝐾 = 𝑛 𝐴 × 𝑃𝐵 = 𝑛 𝐴 × 𝑛 𝐵 × 𝐺 = 𝑛 𝐵 × 𝑛 𝐴 × 𝐺 = 𝑛 𝐵 × 𝑃𝐴
  • 38. OpenSSL: lista curve • root@massimo ~ $ openssl ecparam -list_curves • secp384r1 : NIST/SECG curve over a 384 bit prime field • secp521r1 : NIST/SECG curve over a 521 bit prime field • prime256v1: X9.62/SECG curve over a 256 bit prime field • Vediamo i parametri • root@massimo ~ $ openssl ecparam -name secp521r1 -out secp521r1.pem
  • 39. Generiamo chiavi • root@massimo ~ $ openssl ecparam -in secp521r1.pem -genkey - noout -out massiec.key • Pubblica: root@massimo ~ $ openssl ec -in massiec.key -pubout -out massiecpub.key Vediamo: root@massimo ~ $ openssl ec -in massiec.key -noout -text - param_enc explicit • Poi si derivano chiavi e si possono usare con e.g., AES.
  • 40. Applichiamo le curve ellittiche • TLS_ECDH_RSA_AES_128_CBC_SHA • Blockchain!