Skip to content

Commit d025085

Browse files
authored
Create ts-022-dpi-fragmentation.md
1 parent d36ae9d commit d025085

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Specification version number
2+
3+
2017-12-18-001
4+
5+
# Specification name
6+
7+
[XXX] DPI Detection Test?
8+
9+
# Test preconditions
10+
11+
* An internet connection.
12+
* A URL we suspect is being blocked by a stateless/non-reassembling DPI box.
13+
14+
# Expected impact
15+
16+
* If a URL is being blocked by DPI (not by IP or DNS blocking) into the TCP
17+
stream, we should be able to determine whether that DPI box reassembles
18+
streams or if it only looks at one packet at a time.
19+
20+
# Expected inputs
21+
22+
* A list of URLs to be tested (that we already know are blocked in
23+
some fashion).
24+
25+
## Semantics
26+
27+
The test takes as input a list of URLs, one per line. For example:
28+
29+
http://torproject.org
30+
https://ooni.nu
31+
32+
# Test description
33+
34+
For every hostname, we perform two HTTP connections--one with fragmentation
35+
and one without--and compare them to see if the response differs. If the
36+
input scheme is http, we fragment on the HTTP Host header; if the scheme
37+
is https, we fragment on the SNI header in the TLS Client Hello.
38+
39+
# Expected output
40+
41+
## Parent data format
42+
43+
df-001-httpt [XXX?]
44+
45+
## Semantics
46+
47+
[XXX] I think there will be one boolean value for each URL input: whether
48+
or not fragmenting around the plaintext hostname results in a different
49+
HTTP response. Also, we will want to include the DNS requests
50+
and responses, and the full HTTP requests and responses.
51+
52+
## Possible conclusions
53+
54+
Determing whether or not a censorship device reassembles TCP streams can
55+
narrow down what type of technology is being used. For example, an HTTP
56+
proxy like Squid has a stream-level view of the connection, while a DPI
57+
box from Cisco probably does not reassemble lower-level packets into a
58+
stream.
59+
60+
## Example output sample
61+
62+
```
63+
{
64+
}
65+
```
66+
67+
# Privacy considerations
68+
69+
[XXX]

0 commit comments

Comments
 (0)