Reducing distinguishability of DTLS for usage in Snowflake
Abstract
Motivasjonen bak denne avhandlingen er å omgå sensur. Snowflake er en teknologi som i dag brukes av mennesker i områder som praktiserer sensur for å få tilgang til det frie og åpne Internett. Ettersom systemet har vist seg å være effektivt, har sensorer brukt ressurser på å prøve å oppdage og blokkere dens trafikk. Vi har sett at sensorer har vært i stand til å gjøre dette ved å finne og blokere fingeravtrykket av DTLS-implementeringen som produseres av Pion-biblioteket brukt av Snowflake. Målet med denne avhandlingen er å redusere identifiserbarheten til nevnte DTLS-bibliotek. Vi utviklet et verktøy, kalt dfind, for å analysere og finne passive feltbaserte fingeravtrykk av DTLS. Dette verktøyet ble validert ved bruk av et datasett med kjente fingeravtrykk, og fant at extensions-feltet var spesielt sårbart for identifikasjon. For å bekjempe slike fingeravtrykk implementerte vi covertDTLS, et Go-bibliotek inspirert av uTLS. Vår modul utvider Pion DTLS-biblioteket med imitasjons- og randomiseringsfunksjoner. For å sikre at imitasjonen forblir oppdatert, utviklet vi en ny kontinuerlig leveringsprosess for å generere ferske DTLS-WebRTC-håndtrykk fra populære nettlesere. Bruk av covertDTLS med Snowflake resulterte i at vi ikke klarte å finne noen fingeravtrykk. Vi konkluderer med at imitasjon og randomisering er effektive mottiltak mot passive, tilstandsfrie og feltbaserte fingeravtrykk. The motivation behind this thesis is censorship circumvention. Snowflake is a technology that is used today to provide access to the free and open Internet for people located in areas that practice censorship. With users adopting the system, censors have spent an effort at trying to detect and block its traffic. We have seen that censors have been able to do so by fingerprinting the DTLS implementation that is produced by the Pion library used by Snowflake. The aim of this thesis is to reduce the distinguishability of said DTLS library. We developed a tool named, dfind for analyzing and finding passive field-based fingerprints of DTLS. This tool was validated using a data set with known fingerprints, and found that the extensions field was especially vulnerable for identification. To combat such fingerprints, we implemented covertDTLS, a Go library inspired by uTLS. Our module extends the Pion DTLS library with handshake hooking to offer mimicry and randomization features. To ensure that mimicking remains up-to-date, we developed a novel continuous delivery workflow for generating fresh DTLS-WebRTC handshakes from popular browsers. Using covertDTLS with Snowflake resulted in us not being able to find any fingerprints. We conclude that mimicking and randomization are effective countermeasures against passive, stateless, and field-based fingerprinting.