Transport Layer Security Presentatie Security Tom Rijnbeek
World Wide Web • Eerste webpagina: 30 april 1993 • Tegenwoordig: • E-mail • Internetbankieren • Overheidszaken (DigiD)
World Wide Web • Probleem: • World Wide Web maakt gebruik van onbeveiligde kanalen.
Inhoud • Lagenmodel • TLS • Handshake protocol • Record protocol • Security analyse • HTTPS
Inhoud • Lagenmodel • TLS • Handshake protocol • Record protocol • Security analyse • HTTPS
OSI Lagenmodel Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer
OSI Lagenmodel Application Layer
Application Layer
Presentation Layer
Presentation Layer
Session Layer
Session Layer
Transport Layer
Transport Layer
Network Layer
Network Layer
Data Link Layer
Data Link Layer
Physical Layer
Physical Layer
OSI Lagenmodel Application Layer Presentation Layer Session Layer Transport Layer Network Layer Data Link Layer Physical Layer
?
Beveiliging
TCP Lagenmodel Application Layer
Beveiliging Transport Layer Internet Layer Link Layer
TLS Lagenmodel • TLS Record Protocol gebouwd op
betrouwbare transport layer (TCP).
• Record Protocol encapsuleert andere protocollen (o.a. Handshake).
TLS Lagenmodel Handshake
Alert
ChangeCipherSpec
TLS Record Protocol Transport Layer (TCP)
Application Data
TLS Lagenmodel • Handshake protocol: • Assymmetrische cryptografie • RSA, Diffie-Hellman • Record protocol • Symmetrische cryptografie • 3DES, AES
Inhoud • Lagenmodel • TLS • Handshake protocol • Record protocol • Security analyse • HTTPS
TLS Handshake • “Hello messages” • Premaster secret bepalen • Authenticatie (certificaten) • Master secret bepalen • Verstuur parameters naar record layer • Verifieer parameters
TLS Handshake Client
Server
ClientHello ServerHello
• • •
Session identifier Random waarde Cipher Suite
TLS Handshake Client
Server
ClientHello ServerHello Certificate ServerKeyExchange CertificateRequest ServerHelloDone
•
•
Optioneel: Server authenticatie Tijdelijke key Authenticatie request client Sluit af met HelloDone
• • •
TLS Handshake Client
Server
ClientHello ServerHello Certificate ServerKeyExchange CertificateRequest ServerHelloDone ClientKeyExchange
•
Key Exchange
TLS Handshake Client
Server
ClientHello ServerHello Certificate ServerKeyExchange CertificateRequest ServerHelloDone Certificate ClientKeyExchange CertificateVerify
• •
Client Authenticatie Verifieer certificaat door handtekening key exchange bericht
TLS Handshake Client
Server
ClientHello ServerHello Certificate ServerKeyExchange CertificateRequest ServerHelloDone Certificate ClientKeyExchange CertificateVerify [ChangeCipherSpec] Finished
• • •
Verstuur gegevens naar record laag ChangeCipherSpec is een losstaand protocol Finished Bevat verificatie van alle parameters
•
TLS Handshake Client
Server
ClientHello ServerHello Certificate ServerKeyExchange CertificateRequest ServerHelloDone Certificate ClientKeyExchange CertificateVerify [ChangeCipherSpec] Finished [ChangeSipherSpec] Finished
•
Herhaal voor server
Session Resume Client ClientHello
Server
•
Gebruik dezelfde session identifier
Session Resume Client
Server
ClientHello ServerHello [ChangeSipherSpec] Finished
• • •
Server kiest of sessie voortgezet wordt Bij weigering: genereer nieuwe identifier en doorloop volledige handshake Bij acceptatie: meteen parameters naar record laag sturen
Session Resume Client
Server
ClientHello ServerHello [ChangeSipherSpec] Finished [ChangeCipherSpec] Finished
•
Client verifieert parameters
Inhoud • Lagenmodel • TLS • Handshake protocol • Record protocol • Security analyse • HTTPS
Overige protocollen • Change Cipher Spec • Alert • Application Data • Eigen protocol • Versleuteling met symmetrisch algoritme
Change Cipher Spec • Gebruikt voor wijziging parameters • Verstuur bericht onder huidige parameters • Andere partij verandert parameters meteen
• Verifieer wijziging met hetzelfde bericht
Change Cipher Spec Client
Server
ChangeCipherSpec ChangeCipherSpec
Alert Protocol • Alert message: • Ernst (fatal of warning) • Type (enumerator) • Bij fatal: termineer sessie
Alert Protocol • Afronden sessie: speciaal alert type “close_notify”
• Niet nodig om bericht andere partij af te wachten
Application Data • Versleutelde applicatie-data • Record Protocol zorgt voor fragmentatie, compressie en encryptie
• Inhoud afhankelijk van applicatie
Application Data • Extra veiligheid: MAC handtekening • Hash met sleutel (salt) • Afhankelijk van: • • • • • •
MAC sleutel (geheim) Sequence nummer (uniek) Berichtlengte Inhoud bericht Twee vaste strings Type bericht
Application Data • MAC handtekening garandeert integriteit • Zelfs als encryptie-sleutel is gekraakt • Daarom MAC-sleutel soms langer
Inhoud • Lagenmodel • TLS • Handshake protocol • Record protocol • Security analyse • HTTPS
Security analyse • Internet kanalen zijn onbeveiligd • Aanvaller heeft toegang tot alle verzonden data
Security analyse • Mogelijke aanvallen: • Aanval op key exchange • Version rollback • Denial of Service
Key Exchange • Berust op RSA of Diffie-Hellman • Man-in-the-middle: • Detectie via “Finished” bericht • Authenticatie
Key Exchange • Handshake kent drie modi: • Volledige authenticatie • Anonieme client • Volledige anonimiteit • Key Exchange algoritmen bevatten ondersteuning voor authenticatie
Version Rollback • TLS bevatte backwards compatibility • Aanvaller vraagt om SSL 2.0 • Moeilijk te detecteren • SSL 2.0 support in maart 2011 verwijderd
Denial of Service Methode 1: Groot aantal requests
• Server CPU overbelast door RSA signatures • Bijna uitsluitend TCP requests: bron makkelijk te achterhalen
Denial of Service Methode 2: Verstuur foutieve of incomplete berichten
• Sessies worden getermineerd of lopen vast in afwachting van de rest van het bericht
• Geen beveiliging in TLS
Inhoud • Lagenmodel • TLS • Handshake protocol • Record protocol • Security analyse • HTTPS
HTTPS • HTTP: plain text • Idee: verstuur HTTP via TLS • HTTP server treedt ook op als TLS server • Hou verder regels HTTP aan
HTTPS GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi
TLS Record Layer U2FsdGVkX185AfKKBMGaG2h66a0BP30kXQuzpyyIJDJSDFnglNvtLPgz+r+Z/r2u sbrFpSUQt+1vzn4bcrW8y4WbcIOqHDOXUXzN6ceFpiUPhe7LADU6o3vpFnhVT/Nx 1ZXXsRzRZBKiTv6jb2cJlx/OnOm3mMUb3fBm/v0uo0AI+SL7fpjpWCVWZuS4u+9h Yq4QfqshLmLG2qKkuYKyBg==
HTTPS • Verschil TLS: authenticatie server verplicht • Certificaat gebaseerd op hostnaam • Beveiligt niet tegen aanvallen waarbij URI is veranderd
HTTPS Certificaten Certificate Authority (trusted)
Certificaat
Certificaat
Certificaat
*.google.com
*.uu.nl
*.mywebsite.nl
Certificaat
Certificaat
mail.google.com
cs.uu.nl
HTTPS Certificaten • Genereer private key • Maak Certificate Signing Request • Stuur naar CA (of sign zelf)
HTTPS Certificaten CSR www.mywebsite.com MyWebsite Inc. Utrecht Utrecht The Netherlands
[email protected]
Certificate Authority (trusted)
Signature Certificaat
Private key
HTTPS Certificaten • Alternatieven: • Wees je eigen CA • CACert: peer-to-peer
HTTPS Certificaten • Certificate revocation • Controleer status certificaat • Speciaal protocol: OCSP
DigiNotar • DigiNotar: Certificate Authority • Juni 2011: inbraak • Juli 2011: nep-certificaten, waaronder
google.com, Skype en Microsoft Updates
Conclusies • Veiligheid TLS geheel afhankelijk van gebruikte parameters
• Algoritmen • Sleutels • Authenticatie
• Voor authenticatie vaak afhankelijk van vertrouwen in derde partijen
Vragen?