SW_2023_2024_curs10.pdf
Document Details
Uploaded by FearlessSasquatch
2023
Tags
Full Transcript
SECURITATE WEB CURSUL 10 PUBLIC KEY INFRASTRUCTURE ș.l. dr. ing. ADRIAN ALEXANDRESCU Facultatea de Automatică și Calculatoare Universitatea Tehnică “Gheorghe Asachi” din Iași 2023-2024 Cuprins I. Public Key Infrastructure II. Protocolul HTTPS III. Vulnerabilități PKI și HTTPS Adrian Alexandres...
SECURITATE WEB CURSUL 10 PUBLIC KEY INFRASTRUCTURE ș.l. dr. ing. ADRIAN ALEXANDRESCU Facultatea de Automatică și Calculatoare Universitatea Tehnică “Gheorghe Asachi” din Iași 2023-2024 Cuprins I. Public Key Infrastructure II. Protocolul HTTPS III. Vulnerabilități PKI și HTTPS Adrian Alexandrescu 2023-2024 2 Public Key Infrastructure I 1. Criptografie 2. Public Key Infrastructure 3. Componentele PKI 4. Validarea unui certificat digital Adrian Alexandrescu 2023-2024 3 1. Criptografie I Metodă de protejare a informațiilor și a comunicațiilor prin utilizarea codurilor, astfel încât doar cei cărora le sunt destinate informațiile să le poată citi și procesa Adrian Alexandrescu 2023-2024 4 I 1. Criptografie Criptografie folosind cheie simetrică Adrian Alexandrescu 2023-2024 https://www.redhat.com/sysadmin/basicconcepts-encryption-cryptography 5 1. Criptografie I Criptografie asimetrică (pereche cheie publică-privată) https://www.redhat.com/sy sadmin/basic-conceptsencryption-cryptography Adrian Alexandrescu 2023-2024 6 1. Criptografie I Criptografie asimetrică (pereche cheie publică-privată) https://www.redhat.com/sy sadmin/basic-conceptsencryption-cryptography Adrian Alexandrescu 2023-2024 7 1. Criptografie I Criptare/Decriptare simetrică Criptare/Decriptare asimetrică Verificarea semnăturii Adrian Alexandrescu 2023-2024 8 2. Public Key Infrastructure I Public Key Infrastructure (PKI) cuprinde tot ceea ce este folosit pentru a stabili și gestiona criptarea cheii publice Include software, hardware, politici și proceduri care sunt utilizate pentru a crea, distribui, gestiona, stoca și revoca certificatele digitale Certificatul digital conectează criptografic o cheie publică cu dispozitivul sau utilizatorul care o deține Ajută la autentificarea utilizatorilor și a dispozitivelor și la asigurarea comunicațiilor digitale sigure Adrian Alexandrescu 2023-2024 9 2. Public Key Infrastructure I PKI utilizează chei publice criptografice care sunt conectate la un certificat digital Certificatul digital ajută la autentificarea dispozitivului sau a utilizatorului care trimite comunicația digitală Certificatele digitale sunt emise de o sursă de încredere, o autoritate de certificare (en. Certificate Authority – CA) Adrian Alexandrescu 2023-2024 10 2. Public Key Infrastructure PKI are două scopuri principale: I A asigura confidențialitatea mesajului trimis A verifica dacă expeditorul este cine pretinde că este PKI protejează și autentifică comunicațiile dintre servere și utilizatori E.g., între un anumit site web și clienții (browser-ul) respectivului site E.g., în cadrul unei organizații, pentru a se asigura că mesajele sunt vizibile numai pentru expeditor și destinatar și nu au fost modificate în timpul tranzitului Adrian Alexandrescu 2023-2024 11 2. Public Key Infrastructure I PKI vs. certificat digital Public Key Infrastructure (PKI) este folosită pentru a gestiona perechi de chei publice și private și pentru a le lega de identitățile entităților, cum ar fi persoane și organizații, prin emiterea de documente electronice numite certificate digitale Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP) https://www.rfc-editor.org/rfc/rfc4210 Adrian Alexandrescu 2023-2024 12 3. Componentele PKI Autoritatea de certificare (Certificate Authority CA) I Entitate de încredere care emite, stochează și semnează certificatul digital CA semnează certificatul digital cu propria cheie privată și apoi publică cheia publică care poate fi accesată la cerere. Autoritatea de înregistrare (Registration Authority RA) Verifică identitatea utilizatorului sau a dispozitivului care solicită certificatul digital RA poate fi o terță parte sau CA poate acționa și ca RA Adrian Alexandrescu 2023-2024 13 3. Componentele PKI Baza de date cu certificate (Certificate database) I Stochează certificatul digital și metadatele acestuia (includ perioada de valabilitate a certificatului) Directorul central (Central Directory) Locația sigură în care sunt indexate și stocate cheile criptografice Adrian Alexandrescu 2023-2024 14 3. Componentele PKI Sistemul de management al certificatelor (Certificate management system) I Sistemul de gestionare a livrării certificatelor, precum și a accesului la acestea Politica de certificat (Certificate policy) Prezintă procedurile PKI Poate fi folosit de persoane din afară pentru a determina încrederea PKI. Adrian Alexandrescu 2023-2024 15 3. Componentele PKI Sistemul de management al certificatelor (Certificate management system) I Sistemul de gestionare a livrării certificatelor, precum și a accesului la acestea Politica de certificat (Certificate policy) Prezintă procedurile PKI Poate fi folosit de persoane din afară pentru a determina încrederea PKI. Adrian Alexandrescu 2023-2024 16 4. Validarea unui certificat digital I https://www.researchgate.net/figure/PKI-trust-example-see-onlineversion-for-colours_fig1_321453911 Adrian Alexandrescu 2023-2024 17 Protocolul HTTPS II 1. Introducere 2. Certificatul digital 3. Stabilirea conexiunii SSL/TLS 4. Discuții și exemple Adrian Alexandrescu 2023-2024 18 1. HTTPS – introducere II Hypertext Transfer Protocol Secure (HTTPS) Protocol de comunicare sigură într-o rețea de calculatoare (e.g., Internet) Folosește protocoalele TLS/SSL (Transport Layer Security / Secure Sockets Layer) Comunicarea între client și server se face tot folosind HTTP, dar cererile și răspunsurile sunt criptate Adrian Alexandrescu 2023-2024 19 1. HTTPS – introducere II Hypertext Transfer Protocol Secure (HTTPS) Nivelul SSL/TLS verifică identitatea serverului și, se asigură că doar clientul poate citi ce trimite serverul și invers Oricine poate intercepta mesajele trimise dar acestea sunt criptate și pot fi decriptate doar de client și server Adrian Alexandrescu 2023-2024 20 2. Certificatul digital II Public key certificate Document electronic care dovedește dreptul de proprietate asupra unei chei publice Cheie = șir de caractere generat de unul sau mai mulți algoritmi de criptare Pentru a putea fi recunoscut de un browser, trebuie semnat de o autoritate de cerificare (en., Certificate Authority) Exemple de CA: Symatec (VeriSign, Thawte, Geotrust), Comodo SSL, Go Daddy, GlobalSign Adrian Alexandrescu 2023-2024 21 2. Certificatul digital II Conținutul unui certificat digital Serial Number: identifică certificatul Subject: numele persoanei sau a entității identificate Signature Algorithm: alg. folosit pentru semnătură Signature: semnătura Issuer: autoritatea de certificare Valid-From: data de când este valid Valid-To: data de expirare Key-Usage: modul de utilizare a cheii (criptare, semnare) Public Key: cheia publică Thumbprint Algorithm: alg. de hash(cheie publică) Thumbprint (fingerprint): hash(cheie publică) Adrian Alexandrescu 2023-2024 22 3. Stabilirea conexiunii SSL/TLS 1. 2. 3. II Clientul trimite un mesaj de Hello serverului care conține informațiile necesare conectării prin SSL/TLS (e.g., suitele de cifruri, versiunea maximă SSL/TLS suportată) Serverul răspunde cu informații similare și cu decizia asupra suitei de cifruri aleasă (e.g., TLS_RSA_WITH_AES_128_CBC_SHA) Serverul mai răspunde cu dovada identității sale; un certificat care conține, printre altele, cheia publică a certificatului Adrian Alexandrescu 2023-2024 23 3. Stabilirea conexiunii SSL/TLS 4. 5. 6. II Clientul generează o cheie aleatorie (care va fi folosită la criptarea mesajelor HTTP), o criptează cu cheia publică a serverului și o trimite acestuia Serverul primește cheia criptată și o decriptează cu cheia sa privată În acest moment serverul și clientul au aceeași cheie (simetrică) cu care pot cripta/decripta mesajele transmise prin protocolul HTTP Adrian Alexandrescu 2023-2024 24 Adrian Alexandrescu 2023-2024 https://www.redhat.co m/sysadmin/openssland-internet-pki 25 Sursa: http://blog.haproxy.com /2011/09/16/benchmarki ng_ssl_performance/ Adrian Alexandrescu 2023-2024 26 Adrian Alexandrescu 2023-2024 Sursa: http://msdn.microsoft.com/en-us/library/dd303381.aspx/ 27 4. Discuții și exemple II Ce informație este criptată de HTTPS? Ce vedem în Wireshark? Vizualizarea unui certificat digital în browser Crearea unui certificat digital Înregistrarea unui certificat digital pentru un anumit site Exemplu Python Exemplu Apache Tomcat Adrian Alexandrescu 2023-2024 28 4. Discuții și exemple II Tipuri de fișiere: Fișierele .key sunt în general cheia privată, folosită de server pentru a cripta și a împacheta datele pentru verificarea de către clienți. Fișierele .pem sunt în general cheia publică, utilizată de client pentru a verifica și decripta datele trimise de servere (fișierele pem pot fi, de asemenea, chei private codificate) Fișierele .p12 au cheia publică și cea privată Fișierele .cert sau .crt sunt certificatele semnate care permit ca anumite site-uri să fie marcate ca demne de încredere de către o terță parte. Fișierele .csr sunt o cerere de semnare a unui certificat, o provocare folosită de o terță parte de încredere pentru a verifica proprietatea unei perechi de chei fără a avea acces direct la cheia privată Fișierele .jks (JKS Keystore) este un format de fișier nativ pentru Java pentru a stoca și gestiona unele sau toate componentele de mai sus și pentru a păstra o bază de date cu capabilitățile aferente care sunt permise sau respinse pentru fiecare cheie Adrian Alexandrescu 2023-2024 29 Vulnerabilități PKI și HTTPS III 1. Securitatea asigurată de HTTPS 2. Vulnerabilități PKI Adrian Alexandrescu 2023-2024 30 1. Securitatea asigurată de HTTPS Confidențialitate Conexiunea vizitatorului este criptată, ascunzând adresele URL, cookie-urile și alte metadate sensibile Autenticitate III Vizitatorul vorbește cu site-ul „real” și nu cu un imitator sau printr-o altă entitate Integritate Datele trimise între vizitator și site nu au fost manipulate sau modificate. O conexiune HTTP simplă poate fi ușor monitorizată, modificată și impersonată. Adrian Alexandrescu 2023-2024 31 1. Securitatea asigurată de HTTPS Adrian Alexandrescu 2023-2024 https://https.cio.gov/faq/ III 32 2. Vulnerabilități PKI III Protejarea cheii private Nu trebuie să vă creați niciodată cheia privată folosind un serviciu web din browser, deoarece pur și simplu nu știți dacă furnizorul de servicii păstrează o copie a cheii create Cheia privată ar trebui socată în siguranță și doar unde este nevoie de aceasta Dacă a fost copiată cheia privată pe un calculator public sau într-un repository public Git, aceasta ar trebui să nu mai fie folosită și să fie generată una nouă Adrian Alexandrescu 2023-2024 33 2. Vulnerabilități PKI III Certificatele sunt semnate de CA-uri și sub-CA-uri Orice CA ar putea să emită un certificat pentru un anumit domeniu, iar persoana care deține acel domeniu nici nu ar ști. Exemple... Adrian Alexandrescu 2023-2024 34 2. Vulnerabilități PKI III Certification Authority Authorization (CAA) DNS Resource Record Permite unui deținător de nume de domeniu DNS să specifice una sau mai multe autorități de certificare (CA) autorizate să emită certificate pentru acel nume de domeniu Înregistrările resurselor CAA permit unei CA publice să implementeze controale suplimentare pentru a reduce riscul emiterii greșite neintenționate a certificatului Adrian Alexandrescu 2023-2024 35 2. Vulnerabilități PKI III Certification Authority Authorization (CAA) DNS Resource Record RFC 8659 CAA record specificat în DNS Înregistrările de resurse CAA nu ar împiedica CA neconforme să emită certificate pentru domeniile pentru care nu au permisiunea Ar risca, în schimb, să fie scoase din listele de încredere example.com. IN CAA 0 issue "letsencrypt.org" example.com. IN CAA 0 iodef "mailto:[email protected]" sub.web.example.com IN CAA 0 issue "example-pki.org" Adrian Alexandrescu 2023-2024 36 Bibliografie The Transport Layer Security (TLS) Protocol Version 1.3 https://www.rfc-editor.org/rfc/rfc8446 Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP) - https://www.rfc-editor.org/rfc/rfc4210 Benchmarking SSL Performance http://blog.haproxy.com/2011/09/16/benchmarking_ssl_performa nce/ Basic concepts of encryption in cryptography https://www.redhat.com/sysadmin/basic-concepts-encryptioncryptography How to use OpenSSL and the Internet PKI on Linux systems https://www.redhat.com/sysadmin/openssl-and-internet-pki Adrian Alexandrescu 2023-2024 37 Bibliografie Exploring PKI weaknesses and how to combat them https://www.redhat.com/sysadmin/pki-protection What Is Public Key Infrastructure (PKI) & How Does It Work? https://www.okta.com/identity-101/public-key-infrastructure/ PKI and Digital Certificates for Government https://www.ssl.com/article/pki-and-digital-certificates-forgovernment/ The HTTPS-Only Standard – Introduction to HTTPS https://https.cio.gov/faq/ What Is PKI and How Does It Work? https://www.venafi.com/education-center/pki/how-does-pki-work Adrian Alexandrescu 2023-2024 38 Bibliografie Public Key Infrastructure and Blockchain https://www.thesecuritybuddy.com/blockchain/public-keyinfrastructure-and-blockchain/ DNS Certification Authority Authorization (CAA) Resource Record https://www.rfc-editor.org/rfc/rfc8659 Automatic Certificate Management Environment (ACME) https://www.rfc-editor.org/rfc/rfc8555 Adrian Alexandrescu 2023-2024 39