De vijf gradaties in TLS-beveiliging
Bij SSL Labs van Qualys besteden we veel tijd aan het helpen van anderen hun TLS-beveiliging te verbeteren, zowel direct als door tools te ontwikkelen en documentatie te schrijven. En zo merken we dat het veilig inzetten van TLS (Transport Layer Security) steeds ingewikkelder wordt. Het zou zomaar kunnen dat we, met zoveel aandacht voor TLS en de mogelijke issues, uit het oog verliezen wat daadwerkelijk belangrijk is.
Daarom ontwikkelde ik het TLS Maturity Model. Een conceptueel implementatiemodel dat de weg naar solide TLS-beveiliging omschrijft. Het model telt vijf niveaus in volwassenheid.
Niveau 1: er heerst chaos. Er zijn geen regels aangaande TLS, beveiliging wordt door het lot bepaald en zaken gebeuren ad hoc. Het resultaat: je weet niet precies wat je in handen hebt en wat je beveiligingsniveau is. Zelfs als je bestaande sites goed beveiligd zijn is er geen garantie dat dit bij nieuwe projecten ook het geval is. Iedereen start op dit niveau.
Niveau 2: configuratie. Hier gaat het puur om de beveiliging van het TLS-protocol en hogere protocollen worden genegeerd. Over dit niveau praten we het meest, maar is vaak het eenvoudigst om te bereiken. Met moderne systemen is het meestal een kwestie van herconfiguratie van de server. Oudere systemen hebben misschien een upgrade nodig of moeten, als laatste uitweg, worden voorzien van een veilige proxy ervoor.
Niveau 3, applicatiebeveiliging. Hier beveilig je die hogere applicatieprotocollen en voorkom je problemen die de encryptie compromitteren. Gaat het om een website, dan is het op dit niveau belangrijk geen plaintext- en encrypted-omgevingen te mixen in dezelfde applicatie of pagina. Oftewel, de hele applicatie moet versleuteld zijn. Ook moeten alle applicatiecookies beveiligd zijn en gecheckt op integriteit, omdat zij in actie komen tegen cookie injection-aanvallen.
Niveau 4: commitment. Langetermijn commitment aan encryptie is essentieel. Voor websites bereik je dit niveau door HTTP Strict Transport Security (HSTS) te installeren. Dit is een relatief nieuwe standaard die wordt ondersteund door de nieuwste browsers (IE-ondersteuning volgt in Windows 10). HTTP Strict Transport Security bekrachtigt een strenger TLS-beveiligingsmodel en als resultaat verslaat dit SSL-strippingaanvallen en aanvallen die profiteren van clicks op certifcaat-waarschuwingen.
En dan is er niveau 5: robuuste beveiliging. Je snijdt als het ware je eigen plakje van de PKI-cloud om jezelf te beschermen tegen de grootste zwakke plek van PKI, en dat is dat iedere CA een certificaat kan publiceren voor elke website, zonder dat de eigenaar toestemming hoeft te geven. Als je public key pinning inzet sluit je uit dat CA’s certificaten kunnen publiceren voor jouw website. Of, in een nog veiliger verhaal, keur je elk certificaat individueel goed.
De conceptuele eenvoud van dit TLS Maturity Model zorgt ervoor dat je in een oogopslag ziet waar je staat en wat je moet verbeteren. Zo kun je je focussen op wat er echt toe doet. Hoewel niveau 5 de beste beveiliging biedt, behelst het ook het meeste werk en strijdt het tegen gevaren die lang niet voor elke website relevant zijn. Niveau 4 is volgens mij dan ook het minimale echt veilige niveau en hier zouden de meeste organisaties zich op moeten richten.
Ivan Ristic, Director of Engineering at Qualys