# H7: certificaten --- # 7.1 Waarom nood aan certificaten? --- ## Problemen - Symmetrische encryptie - ⚠️ Je moet fysiek afspreken om sleutel uit te wisselen - Asymmetrische encryptie - ⚠️ Je moet de juiste publieke sleutel kunnen bemachtigen - Wat bij een MitM attack? - Een hacker onderschept een publieke sleutel, vervangt deze door zijn eigen publieke sleutel en stuurt deze door - Niemand heeft door dat een hacker de geëncrypteerde data kan aflezen - Hoe kunnen we **garanderen** dat een **publieke sleutel bij een bepaalde persoon of organisatie hoort**? ---
- _Van begin tot 5m02s_ --- # 7.2 De oplossing: certificaten --- ## Certificaten: een digitaal paspoort - Iedereen vertrouwt een 3e persoon of organisatie - De **Certificate Authority** (CA) - Deze deelt "**identiteitskaarten**" oftewel **certificaten** uit - Dankzij de identiteitskaart/certificaat kan iemand bewijzen dat hij of zij daadwerkelijk die persoon is - Geen geldige identiteitskaart/certificaat? **Niet te vertrouwen!** --- - Bv. iedereen vertrouwt de overheid - Inloggen met identiteitskaart op overheidswebsites, tonen bij politiecontroles, afgeven bij het stemmen, ... - Bewijst dat je een Belgische staatsburger bent
Notes: - https://www.ibz.rrn.fgov.be/nl/identiteitsdocumenten/eid/ - https://eid.belgium.be/nl --- - Bv. iedereen vertrouwt HOGENT - Studentenkaart voor goedkoper eten in resto, afgeven tijdens examens, uitlenen bibliotheek, toegang fietsenstallingen, printen op campus, studentenkortingen voor o.a. bioscoop, ... - Bewijst dat je een student aan HOGENT bent   Notes: - https://www.hogent.be/student/een-vlotte-start/studentenkaart/ - https://www.ugent.be/student/nl/administratie/studentenkaart --- - Bv. iedereen vertrouwt jouw bank - Met bankkaart kan je jouw rekening bekijken, geld afhalen, geld overschrijven, online betalen, ... . - Je kan zelfs geld afhalen aan bankautomaten van andere banken. - Bewijst dat je de eigenaar bent van een specifieke rekening bij een bepaalde bank.
Notes: - https://www.kbc.be/particulieren/nl/betalen/betaalkaarten/debetkaarten/bankkaart.html --- # 7.3 Certificate authorities --- ## Hoe doen we dit online? - Online werken we met **Certificate Authorities** (CA's) als 3e vertrouwenspersoon/-organisatie - CA genereert **certificaten** (== digitale identiteitskaarten) voor gebruikers die dit aanvragen - Gebruikers kunnen **elkaar controleren** via deze certificaten of ze daadwerkelijk met de gewenste persoon communiceren - Een certificaat koppelt een **publieke sleutel** van een gebruiker aan zijn **identiteit**. - M.a.w. "_Dit is mijn publieke sleutel en je kan het controleren bij de CA via mijn certificaat_" --- - Certicaten aanvragen, maken en verifiëren gebeurt allemaal met **asymmetrische encryptie** - **Iedereen** (CA's en gebruikers) heeft dus een asymmetrisch sleutelpaar (**publieke en private sleutel**) nodig!
--- ## Hoe ziet een certificaat er uit? - Een certificaat is een digitaal ondertekend tekstbestand waarin iemands publieke sleutel staat - De inhoud en de structuur van het tekstbestand is vastgelegd volgens de **X.509 standaard** --- ```text Certificate: Data: Version: 3 (0x2) Serial Number: 72:14:11:d3:d7:e0:fd:02:aa:b0:4e:90:09:d4:db:31 Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, ST=Texas, L=Houston, O=SSL Corp, CN=SSL.com EV SSL Intermediate CA RSA R3 Validity Not Before: Apr 18 22:15:06 2019 GMT Not After : Apr 17 22:15:06 2021 GMT Subject: C=US, ST=Texas, L=Houston, O=SSL Corp/serialNumber=NV20081614243, CN=www.ssl.com/postalCode=77098/businessCategory=Private Organization/street=3100 Richmond Ave/jurisdictionST=Nevada/jurisdictionC=US Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: 00:ad:0f:ef:c1:97:5a:9b:d8:1e ... Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Authority Key Identifier: keyid:BF:C1:5A:87:FF:28:FA:41:3D:FD:B7:4F:E4:1D:AF:A0:61:58:29:BD Authority Information Access: CA Issuers - URI:http://www.ssl.com/repository/SSLcom-SubCA-EV-SSL-RSA-4096-R3.crt OCSP - URI:http://ocsps.ssl.com X509v3 Subject Alternative Name: DNS:www.ssl.com, DNS:answers.ssl.com, DNS:faq.ssl.com, DNS:info.ssl.com, DNS:links.ssl.com, DNS:reseller.ssl.com, DNS:secure.ssl.com, DNS:ssl.com, DNS:support.ssl.com, DNS:sws.ssl.com, DNS:tools.ssl.com X509v3 Certificate Policies: Policy: 2.23.140.1.1 Policy: 1.2.616.1.113527.2.5.1.1 Policy: 1.3.6.1.4.1.38064.1.1.1.5 CPS: https://www.ssl.com/repository X509v3 Extended Key Usage: TLS Web Client Authentication, TLS Web Server Authentication X509v3 CRL Distribution Points: Full Name: URI:http://crls.ssl.com/SSLcom-SubCA-EV-SSL-RSA-4096-R3.crl X509v3 Subject Key Identifier: E7:37:48:DE:7D:C2:E1:9D:D0:11:25:21:B8:00:33:63:06:27:C1:5B X509v3 Key Usage: critical Digital Signature, Key Encipherment CT Precertificate SCTs: Signed Certificate Timestamp: Version : v1 (0x0) Log ID : 87:75:BF:E7:59:7C:F8:8C:43:99 ... Timestamp : Apr 18 22:25:08.574 2019 GMT Extensions: none Signature : ecdsa-with-SHA256 30:44:02:20:40:51:53:90:C6:A2 ... Signed Certificate Timestamp: Version : v1 (0x0) Log ID : A4:B9:09:90:B4:18:58:14:87:BB ... Timestamp : Apr 18 22:25:08.461 2019 GMT Extensions: none Signature : ecdsa-with-SHA256 30:45:02:20:43:80:9E:19:90:FD ... Signed Certificate Timestamp: Version : v1 (0x0) Log ID : 55:81:D4:C2:16:90:36:01:4A:EA ... Timestamp : Apr 18 22:25:08.769 2019 GMT Extensions: none Signature : ecdsa-with-SHA256 30:45:02:21:00:C1:3E:9F:F0:40 ... Signature Algorithm: sha256WithRSAEncryption 36:07:e7:3b:b7:45:97:ca:4d:6c ... ``` --- - Certificaten worden vaak opgeslagen in het **PEM-formaat** ```text -----BEGIN CERTIFICATE----- MIIH/TCCBeWgAwIBAgIQaBYE3/M08XHYCnNVmcFBcjANBgkqhkiG9w0BAQsFADBy vFP3tQe2hm0x5nXulowh4Ibw3lkCIFYb/3lSDplS7AcR4r+XpWtEKSTFWJmNCRbc HWmB1c4Kji6gOgA5uSUzaGmq/v4VncK5Ur+n9LbfnfLc28J5ft/GotinMyDk3iar F10YlqcOmeX1uFmKbdi/XorGlkCoMF3TDx8rmp9DBiB/ -----END CERTIFICATE----- ``` --- ## Certificaten aanvragen 1. De gebruiker **genereert** een certificate signing request (CSR). - Bevat zijn publieke sleutel - Bevat zijn informatie (zijn identiteit): naam, adres, ...
--- 2. De CA ontvangt de CSR en **controleert** de identiteit van de gebruiker aan de hand van de informatie in de CSR.
--- 3. De CA creëert het gevraagd certificaat en **ondertekent** dit met zijn private sleutel. - Het certificaat is nu 100% zeker afkomstig van de CA - Indien het certificaat vervalst wordt, wordt de handtekening ongeldig (en dus ook het certificaat)
--- ## Kortom
--- ## Certificaten verifiëren - Alice wil een geëncrypteerd bericht versturen naar Bob - In H4 stuurde Bob simpelweg zijn publieke key door - ⚠️ Dit kan onderschept en vervalst worden! - In plaats van de publieke sleutel, stuurt Bob beter zijn **certificaat** naar Alice - Het certificaat bevat de publieke sleutel en is ondertekend door de CA --- - Het certificaat is ondertekend met de private sleutel van de CA - Alice kan de **geldigheid** dus nagaan dankzij de publieke sleutel van de CA - ✅ Indien geldig: de publieke sleutel in het certificaat is volgens de CA inderdaad van Bob - ⚠️ Indien niet geldig: Bob is niet wie hij zegt dat hij is! - Mogelijks een **MitM** aanval! - Alice kan nu ook indien gewenst haar certificaat geven aan Bob - Bob kan dan ook op dezelfde manier achterna gaan of hij daadwerkelijk met Alice praat Notes: - Eigenlijk worden er hashes gebruikt van de certificaten. Meer details vind je op volgende links: - https://www.juniper.net/documentation/us/en/software/junos/vpn-ipsec/topics/concept/pki-security-overview.html . - https://cheapsslsecurity.com/blog/digital-signature-vs-digital-certificate-the-difference-explained/ --- ## De publieke sleutel van de CA - Hoe geraken gebruikers aan de publieke sleutel van de CA? - Is dit ook niet onderhevig aan een mogelijke MitM aanval? - Wie ondertekent het certificaat van de CA zelf? --- ## Verspreiden van CA certificaten - CA heeft zelf ook een certificaat - CA-certificaten worden **geïnstalleerd** samen met programma's die gebruik maken van certificaten - OS, web browsers (HTTPS), VPN clients, SSH clients, ... . - Gebruik je een eigen CA, dan moet je deze manueel toevoegen - Anders krijg je een gelijkaardige fout als deze:
--- ## Bv. Windows
--- ## Bv. Firefox - `Settings` > `Privacy & Security` > `Security` > `View certificates` > `Authorities`
---
--- ## Bv. Chrome - `Settings` > `Privacy and Security` > `Manage certificates` > `Trusted Root Certification Authorities`
---
- _Van 5m03s tot eind_ --- ## Wie ondertekent het CA certificaat? - CA heeft zelf ook een certificaat - Wie ondertekent deze? - De CA ondertekent zelf zijn certificaat - **self signed certificate** --- - Iedereen kan een self signed certificate genereren - Maar geniet geen vertrouwen van een CA! - Word vaak gebruikt binnen een **privaat** netwerk (bv. om te testen) - Geeft meestal een foutmelding - Test het zelf eens uit: https://self-signed.badssl.com
--- # 7.4 Toepassing: HTTPS --- ## HTTP - Vroeger werd al het webverkeer **plaintext** verstuurd via het HTTP (webverkeer) protocol - Iedereen kon inloggegevens afluisteren (bv. op wifi)
--- ## HTTPS - Tegenwoordig gebruiken browsers en web servers certificaten - Praten zeker met de juiste gesprekspartner (geen MitM) - Certificaten bevatten een publieke key en zorgen voor de mogelijkheid tot encryptie - Gebruik van certificaten gebeurt volgens **TLS/SSL** protocol - HTTP + TLS/SSL == **HTTPS** ---
Notes: - Als HTTPS-verkeer wordt gesniffed, dan zien we dat de inhoud geëncrypteerd is, m.a.w. we zien enkel een hoop random tekens. Notes: - Een meer technische uitleg over hoe HTTPS werkt en digitale handetekeningen gebruikt, kan je vinden op https://tusharf5.com/posts/ssl-certificates-for-the-rest-of-us/ --- - De browser vertelt je of je via HTTP of via HTTPS surft - Probeer gerust, zie je het verschil? - https://letsencrypt.org - http://httpforever.com
--- - Websites leiden je vaak automatisch om naar `https://` als je naar de `http://` versie surft - Indien niet, geeft jouw browser vaak een foutmelding ("HTTPS only mode") - Wil je toch doorgaan, dan moet je dat expliciet aanklikken
--- ## HTTPS is geen internetpolitie - HTTPS belooft **enkel** - Dat er geen MitM is - Dat de verbinding tussen client en webserver geëncrypteerd is - HTTPS biedt **geen bescherming tegen malafide websites** of **gevaarlijke downloads**! - Bv https://h0g3nt.be - Geeft groen slot (als website bestaat) - Immers garantie geen MitM en wel encryptie - Wat de website voor de rest doet is niet van belang voor HTTPS Notes: - De enige garantie dat HTTPS, het slotje in de adresbalk, geeft is dat je praat met de echte webserver achter de URL die je bezoekt en dat het verkeer tussen jou en die server geencrypteerd is (niet door andere gelezen kan worden). Of de website die je bezoekt een geldige of een phishing website is, daar kan HTTPS je niet voor waarschuwen: het kijkt niet naar de inhoud van de verbinding tussen jou en de server. Dit geldt dus ook voor downloads. HTTPS is geen antimalware, antivirus of firewall! --- # 7.5 Toepassing: VPN --- ## VPN - **Beveiligde** communicatie over publiek netwerk - Maakt privénetwerk over het publieke internet aan tussen verschillende fysieke locaties - Wordt vaak voorgesteld als een geëncrypteerde "**tunnel**" --- - Gebruikt voor het verbinden van **verschillende geografische locaties** - Bv. 2 kantoren op verschillende geografische locatie kunnen zo via het internet op een veilige manier verbonden worden - Bv. Verschillende campussen van HOGENT op zelfde netwerk - Gebruikers hebben niet door dat ze via een tunnel gaan
--- - Gebruikt voor **work@home** - Bv. thuis verbinden met intranet school/bedrijf - Lijkt alsof je rechtstreeks op het school-/bedrijfsnetwerk werkt
--- - Gebruikt voor **privacy** en tegen **geo-restrictions** - Bv. Belgacom/Telenet mag niet zien naar wat ik surf - Bv. Websitebeheerder mag niet zien wie ik ben - Bv. Ik wil een serie bekijken op Netflix die enkel aan Amerikaanse kijkers wordt aangeboden
--- - Gebruikt TLS/SSL-certificaten - Geen MitM - Encryptie
- Er zijn ook niet-TLS/SSL-VPN-systemen zoals IPsec - Out of scope voor deze cursus --- ## Casus: VPN voor privacy - 3rd party VPN provider - Bv. ProtonVPN, NordVPN, Surfshark VPN, Private Internet Access, Mullvad VPN, ExpressVPN, ... - Ook wel consumer **VPN service** genoemd - Word veel reclame voor gemaakt (bv. op youtube) - Doen ze wat ze beloven?
Notes: - https://www.thoughtleaders.io/blog/vpn-wars - https://www.youtube.com/watch?v=wE8MJCk633s ---
--- ## VPN logging policy - VPN biedt **geen oneindige privacy**, enkel in bepaalde gevallen - De **VPN server** ziet alles - Is eigenlijk een bewuste **MitM**-aanval - Vertrouw jij jouw VPN provider? - Houden ze logs bij? (**logging policy**) - Wat doen ze met jouw data? - VPN-bedrijven zijn niet immuun voor de wet - Sommige bedrijven bieden wel een transparency report aan (wat gebeurt er als de rechtbank aanklopt?) Notes: - https://overengineer.dev/blog/2019/04/08/very-precarious-narrative/ - https://proton.me/legal/transparency - https://www.reddit.com/r/ProtonMail/comments/pil6xi/climate_activist_arrested_after_protonmail/ - https://www.privacyguides.org/en/basics/vpn-overview/ ---
Notes: - https://www.malwarebytes.com/blog/news/2022/01/cybercriminals-friend-vpnlab-net-shut-down-by-law-enforcement - https://edition.cnn.com/2021/06/30/tech/doublevpn-law-enforcement/index.html - https://protonvpn.com/blog/transparency-report/ - https://nordvpn.com/blog/nordvpn-introduces-transparency-reports/ ---   Notes: - https://protonvpn.com/features/no-logs-policy - https://nordvpn.com/blog/nordvpn-no-logs-audit-2023/ ---
Notes: - Zonder VPN - Jouw ISP ziet welke websites je bezoekt. - De website ziet jouw IP-adres. - Met VPN - Jouw ISP ziet enkel een geëncrypteerde verbinding met de VPN, niet welke websites je bezoekt. - De website ziet het IP-adres van de VPN-server. - De VPN server ziet **alles**, dus kies een betrouwbare VPN provider! --- ## Wat verbergt een VPN? - 🔒 Jouw ISP ziet niet wat je doet - Ze zien wel dat je een VPN tunnel gebruikt - 🔒 De website waar je naartoe surft ziet niet jouw IP-adres - Ze zien het IP-adres van de VPN server als verzender - Neem een VPN server in een ander land om geo-restrictions te voorkomen --- ## Wat verbergt een VPN niet? - Wie ziet er wel wat er heen en weer gestuurd wordt - 🔓 Alle ISP's vanaf de VPN server tot de website - 🔓 De VPN server - Kies een betrouwbare VPN provider! - VPN providers moeten meewerken met justitie! - De website waar naar gesurft wordt ziet uiteraard ook het verkeer --- ## Andere nadelen - Niet alle VPN's laten alles toe - Gratis VPN's laten vaak geen P2P door - Snelheid is vaak gelimiteerd - Gratis? Dan ben jij vaak het product! - Data collection, advertenties, ... of erger
--- ## Conclusie - VPN's hebben **voor-** en **nadelen** - Weet wat ze **wel** en **niet** kunnen - Beslis voor jezelf - Of je een VPN gebruikt - Wanneer/waarvoor je een VPN gebruikt - Welke VPN provider je vertrouwt --- ## Meer privacy nodig? - Tor - Routeert jouw verkeer langs verschillende servers uitgebaat door vrijwilligers - Niemand kan het volledig pad zien doorheen de servers - Zijn deze vrijwilligers betrouwbaar? - Bv. als je via HTTP surft, gebruik enkel HTTPS + Tor! - Gebruikt de Tor Browser - Idealiter gecombineerd met VPN - ISP kan Tor-verkeer wel herkennen - You → VPN → Tor → Internet - Torrenting over Tor wordt afgeraden Notes: - https://www.privacyguides.org/en/advanced/tor-overview/#encryption - https://tor-https.eff.org/ - https://blog.torproject.org/bittorrent-over-tor-isnt-good-idea/