In de afgelopen jaren is er meer aandacht gekomen voor de beveiliging en privacy van mensen op het internet. Applicatie ontwikkelaars, security professionals en privacy voorvechters zetten hier nog meer op in. Eén van de aspecten waar meer aandacht voor is gekomen is versleuteling en het afdwingen van versleuteling waar mogelijk. Zelfs Google is begonnen met websites die gebruik maken van versleutelde verbindingen(HTTPS) een hogere ranking te geven. Zo is ook het gebruik van HSTS in opkomst.
Wat is HSTS?
HSTS staat voor HTTP Strict Transport Security, het is een protocol om versleuteld transport(HTTPS) af te dwingen en zo te beschermen tegen kwaadwillende hackers die het verkeer op een onbeschermde manier(HTTP) willen laten lopen. Initieel wordt dit geregeld vanaf de webserver waarbij er een extra veld(header) wordt doorgegeven aan de webbrowser(of andere client applicatie zoals een app) met de instelling dat het verkeer versleuteld wordt verstuurd. Indien de client applicatie vervolgens onversleutelde data van de server krijgt, weet deze dat er iets mis is met de verbinding.
Bij een bepaald type aanvallen(Man-in-the-Middle) is het doel van de kwaadwillende hacker om het verkeer van de client applicatie onversleuteld te onderscheppen en zo wachtwoorden te kunnen verkrijgen. Middels HSTS wordt dit aanzienlijk moeilijker gemaakt doordat de client applicatie weet dat dit over een versleuteld kanaal zou moeten verzonden.
Nadat de client dus de HSTS headers heeft ontvangen slaat de cliëntapplicatie een cookie op waarbij het weet dat het ook in de toekomst deze website direct middels het veilige protocol kan benaderen. De levensduur van deze cookie wordt bepaald door de waarde welke is meegegeven in de HSTS headers vanuit de server.
Is HSTS dan ook beter voor de privacy?
Natuurlijk is het altijd goed wanneer internet oplossingen veiliger zijn. Beveiliging is namelijk één van de vereisten voor meer privacy. Zo lijkt het in eerste instantie ook dat HSTS een enorme bijdrage levert aan de privacy van bezoekers. Echter kwam eerder deze week Mark Stockley van Sophos met een artikel waarin werd uitgelegd hoe HSTS ook kan worden gebruikt om te fingerprinten. Een fingerprint(vingerafdruk) techniek laat het toe om op een manier een client applicatie dusdanig uniek te kenmerken zodat deze op een later tijdstip weer kan worden geidentificeerd. Een voorbeeld van fingerprinting is bijvoorbeeld het gebruik van cookies waarin een unieke code per client applicatie wordt gezet. Deze zogenaamde tracking cookies zijn de reden geweest voor de strengere cookie-wetgeving in Nederland.
Hoe wordt HSTS gebruikt om te fingerprinten?
Het idee van fingerprinten met HSTS zit hem in het feit dat middels de cookies een eventueel tweede bezoek direct over HTTPS zou worden afgedwongen. Ik zal hieronder verduidelijken hoe dit werkt.
Op de webpagina worden bepaalde afbeeldingen aangeroepen door middel van een onversleutelde verbinding(HTTP). Echter op enkele van deze afbeeldingen wordt de HSTS header meegegeven, waardoor deze vervolgens middels een beveiligde verbinding(HTTPS) worden opgevraagd en hiervoor cookies worden geplaatst.
Hierbij heeft iedere afbeelding dus 2 mogelijk waardes, namelijk HTTP of HTTPS. Dit is een binaire waarde. Bij 32 afbeeldingen worden dit al ruim 4 miljard(2 tot de macht 32) unieke kenmerken. Nu lijkt het wellicht veel om 32 afbeeldingen op je scherm te krijgen, maar deze afbeeldingen hoeven niet groot te zijn. Het kunnen afbeeldingen zijn van slechts 1 beeldpunt hoog en breed. Hierdoor hoeven deze niet veel ruimte op de webpagina, of zelfs in een advertentie, in te nemen. Ook hebben zulke kleine afbeeldingen slechts weinig impact op de laadtijd van de website.
Zodra de webbrowser of andere applicatie dezelfde website nogmaals laadt, zal deze de afbeeldingen waar de HSTS cookie voor bestaat direct middels HTTPS gaan laden. Hierdoor kan de match worden gemaakt tussen het eerste en het tweede bezoek en is de webapplicatie dus te traceren. Dit is natuurlijk niet ideaal op het gebied van privacy.
Moeten we HSTS dan wel gebruiken?
HSTS is als allereerst bedoeld als een beveiligingstechniek. Deze verhoogde beveiliging wordt nog steeds behaald. Het is daarom nog steeds aan te bevelen om HSTS te gaan gebruiken wanneer je beveiliging wil afdwingen en de bezoekers van je website of gebruikers van je webapplicatie wilt beschermen tegen Man-in-the-Middle aanvallen.
Het is echter niet ook de garantie dat onze privacy is beschermd door het gebruik van HSTS. Dus om de privacy van bezoekers en gebruiks van websites/-applicaties te waarborgen zul je nog meer maatregelen moeten treffen.
Mocht je nog vragen en/of opmerkingen hebben over het gebruik van HSTS? Dan hoor ik lees ik deze graag hieronder.