How video fingerprinting works
How an observer turns a sequence of segment sizes into the title you are watching.
Modern video streaming most often uses DASH (Dynamic Adaptive Streaming over HTTP) or some variant of it. Videos are encoded (stored) at several quality levels (1080p, 720p, 480p, and so on), which are called representations. Each representation is split into many short segments, each a few seconds long, and your browser fetches them one at a time as you watch, sometimes switching quality mid-playback when your network speed changes.
Two facts about video segments make fingerprinting possible:
- Every segment in a representation has the same duration (except possibly the last one).
- Their sizes vary and are correlated with content complexity.
The periodic segment downloads that your browser initiates result in distinct bursts of network traffic, and each burst reveals the approximate visual complexity of the underlying segment. Generally, segments that encode action scenes are large, while those that encode still frames, with minimal detail/motion, are small. By observing enough segment downloads, it's possible to discern the complexity profile of an entire video or a large portion of it, making it fairly easy to identify the video. This attack is called video fingerprinting, and it falls within the broader research area of traffic analysis.
Why encryption doesn't fix this
HTTPS encrypts the actual video data, but it doesn't hide the sizes of encrypted segments, which are about the same as the unencrypted sizes. An observer can still see "the browser fetched a 412 KB segment, then a 380 KB segment, then a 95 KB segment...". This pattern of sizes is the fingerprint, and the video data itself doesn't need to be readable.
VPNs and Tor don't change the signal: an encrypted, anonymized tunnel still carries the segment sequence at a granularity that attackers can use.
What it takes to identify a video
An attacker needs three things:
- Access to the network between you and the video server to see your segment requests.
- A known catalog of fingerprints, which they can build by watching the same content themselves.
- A classifier that maps "observed segment size sequence" to "best matching catalog entry".
This is well established in the academic literature, including the paper behind Dodge.
What Dodge changes
A Dodge defense rewrites which segments your browser fetches, and at which sizes. The video you see on screen is the same, but the network traffic is different. With a well-designed defense, the size pattern doesn't match any specific catalog entry. For a more in-depth explanation of what Dodge does, see how Dodge defends.