Subject: [Pearg] draft-irtf-pearg-censorship review

From: "Christopher Wood" <[email-masked]>
Date: Fri, 10 Apr 2020 19:48:22 -0700

Document: draft-irtf-pearg-censorship-02 [https://tools.ietf.org/html/draft-irtf-pearg-censorship-02]

Assessment: Almost ready

Thanks for your work on this document! It has a lot of very useful information. I think it's nearly ready to go with some cleanup and additional references.

Below is my review of its contents (with no hat on). I prepared an editorial PR --- aiming towards format consistency -- against the draft repository [0]. I hope it's useful! 

Comments:

- Section 3.2.1: This section describes common ways in which censors use HTTP fields for filtering with a pile of references at the bottom. Upon first read, it seemed to lack relevant citations. (For example, the sentence

   As such, "method" and "host" are the two fields used most often for ubiquitous censorship.

seemed like it could stand to use a reference. However, this seems to be covered by one of the empirical examples at the end of this section. Perhaps Section 3.2 could note this structure for each of its subsections? Perhaps:

   "The following subsections describe properties and tradeoffs of common ways in which censors filter using application-layer information. Each subsection includes empirical examples describing these common behaviors for further reference."

- Section 3.2.4.1. should probably reference draft-ietf-tls-sni-encryption or draft-ietf-tls-esni. (I'm happy to help word-smith that text, if you want or need assistance!) Also, the bit about fallback to SSL (pre TLS 1.0) seems a bit outdated. Most TLS stacks no longer implement SSLv3 at all, for example. I might remove this bit. I might also include a reference to [1] as further SNI-based blocking reading. 
- Section 3.3.1: Assuming that IP address filtering is efficient, it might be worth citing [2] given that it studies the (often unique) relationship between address and domain. It might also be worth mentioning DoH(443) and noting the challenges it raises for blocking parties. 
- Section 3.3.2: Is it worth mentioning Pluggable Transports here, especially in the context of blocking Tor?
- Section 3.3: I was surprised to see no mention of QUIC in this section. Perhaps we could replace "TCP/IP header" references with "transport header references"? The information about network addresses and ports equally applies to TCP and QUIC, and including both seems prudent so as to not give the wrong impression about what QUIC exposes (or doesn't).
- Section 4.4.1: There's no mention of encrypted DNS here. While it's true that "DNS lying" and other examples are not completely mitigated with stub-to-resolver encryption, it does change the threat model slightly. Maybe DoH/DoT are worth including? It might also be worth noting limited client support for DNSSEC, perhaps after this sentence: 

   "Additionally, the above mechanisms rely on DNSSEC not being deployed or DNSSEC validation not being active on the client or recursive resolver."

- Section 4.2.2: Is packet dropping not a form of filtering? I was surprised to see it in the interference section. 
- Section 4.2.3: It's probably worth mentioning QUIC here, especially as it complicates this type of attack. It might also be worth citing recent research [3] on off-path TCP attacks, noting that the censor need not be on-path to interfere with service.
- I was surprised to see this recent SoK paper [4] missing from the references. It has a lot of additional information, particularly in Tables V and VI, about different types of filtration mechanisms and how they impact users (by under or over blocking). That said, integrating this paper will be a chore. So, given that the landscape of relevant research and empirical evidence will undoubtedly continue changing, perhaps we can simply drop a reference somewhere?

Nits:

- Section 2: SmartFilter is missing a reference.
- Section 3.1: "Internet Service Providers have until now been the most frequently exploited point of control" probably also warrants a reference, if possible.
- Section 3.2.1: The [Verkamp-2012] reference seems broken.

[0] https://github.com/josephlhall/rfc-censorship-tech/pull/53
[1] https://www.usenix.org/system/files/foci19-paper_chai_update.pdf
[2] https://irtf.org/anrw/2019/anrw2019-final44-acmpaginated.pdf
[3] https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_cao.pdf
[4] http://www.cs.umd.edu/class/fall2018/cmsc818O/papers/sok-censorship.pdf

Best,
Chris

---

From: Joseph Lorenzo Hall <[email-masked]>
Date: Sat, 11 Apr 2020 22:36:37 +0000

Thank you, Chris! Very helpful, and clearly it is in need of some key updates over the six years or so in the drafting. I'll make the changes I can any merge your editorial PR tomorrow; I'll be sure to come back with any questions. Cheers, Joe

--
Joseph Lorenzo Hall, Senior Vice President, Strong Internet
[email-masked] | +1-703-483-9504
internetsociety.org | @internetsociety
pgp: https://josephhall.org/gpg-key
3CA28D7B9F6DDBD34B1016075F86698740A9A871
________________________________
From: Pearg <[email-masked]> on behalf of Christopher Wood <[email-masked]>
Sent: Friday, April 10, 2020 10:48:22 PM
To: [email-masked] <[email-masked]>
Subject: [Pearg] draft-irtf-pearg-censorship review

Assessment: Almost ready

Comments:

Nits:

Best,
Chris

--
Pearg mailing list
[email-masked]
https://www.irtf.org/mailman/listinfo/pearg

---

From: Joseph Lorenzo Hall <[email-masked]>
Date: Sun, 12 Apr 2020 18:25:31 +0000

(also in the github issues)

> > Comments:
> >
> > * Section 3.2.1: This section describes common ways in which censors use HTTP fields for filtering with a pile of references at the bottom. Upon first read, it seemed to lack relevant citations. (For example, the sentence

Looks like you did this in PR #53, thanks!

> > * Section 3.2.4.1. should probably reference draft-ietf-tls-sni-encryption or draft-ietf-tls-esni. (I'm happy to help word-smith that text, if you want or need assistance!) Also, the bit about fallback to SSL (pre TLS 1.0) seems a bit outdated. Most TLS stacks no longer implement SSLv3 at all, for example. I might remove this bit. I might also include a reference to [1] as further SNI-based blocking reading.

Ah, we do cite Chai 2019 a bit later but I will elevate that... and have just made changes to highlight ESNI and remove the SSL fallback bit.

> > * Section 3.3.1: Assuming that IP address filtering is efficient, it might be worth citing [2] given that it studies the (often unique) relationship between address and domain. It might also be worth mentioning DoH(443) and noting the challenges it raises for blocking parties.

Done.

> > * Section 3.3.2: Is it worth mentioning Pluggable Transports here, especially in the context of blocking Tor?

Done.

> > * Section 3.3: I was surprised to see no mention of QUIC in this section. Perhaps we could replace "TCP/IP header" references with "transport header references"? The information about network addresses and ports equally applies to TCP and QUIC, and including both seems prudent so as to not give the wrong impression about what QUIC exposes (or doesn't).

Done.

> > * Section 4.4.1: There's no mention of encrypted DNS here. While it's true that "DNS lying" and other examples are not completely mitigated with stub-to-resolver encryption, it does change the threat model slightly. Maybe DoH/DoT are worth including? It might also be worth noting limited client support for DNSSEC, perhaps after this sentence:

Done.

> > * Section 4.2.2: Is packet dropping not a form of filtering? I was surprised to see it in the interference section.

You may be hung up on the terminology we use where Identification is doing the technical matching against a set of things one wants to censor and then Interference is actually performing the technincal action to accomplish the censorship or filtering, from the Terminology section:

> Prescription is the process by which censors determine what types of material they should block, i.e., deciding to block a list of pornographic websites. Identification is the process by which censors classify specific traffic to be blocked or impaired, i.e., blocking or impairing all webpages containing “sex” in the title or traffic to www.sex.example. Interference is the process by which censors intercede in communication and prevents access to censored materials by blocking access or impairing the connection.

Do we need to make this more clear?

> > * Section 4.2.3: It's probably worth mentioning QUIC here, especially as it complicates this type of attack. It might also be worth citing recent research [3] on off-path TCP attacks, noting that the censor need not be on-path to interfere with service.

(That off-path paper is awesome! Had not seen that.)

Cool, that makes sense about QUIC. I don't have a good feel for what to write here. How does this feel, "Note, the increasingly popular QUIC protocol is based on UDP, a connection-less transport protocol, so cannot be attacked using TCP RST packet injection."

That seems a bit weird... but it sounds like there may be more under the surface to your comment so please suggest how that text above could be better cleaned up?

> > * I was surprised to see this recent SoK paper [4] missing from the references. It has a lot of additional information, particularly in Tables V and VI, about different types of filtration mechanisms and how they impact users (by under or over blocking). That said, integrating this paper will be a chore. So, given that the landscape of relevant research and empirical evidence will undoubtedly continue changing, perhaps we can simply drop a reference somewhere?

That is a monster, and something I'm looking forward to digging into more. I'll drop a reference and add an Issue to read and integrate it.

> > Nits:
> >
> > * Section 2: SmartFilter is missing a reference.

Done.

> > * Section 3.1: "Internet Service Providers have until now been the most frequently exploited point of control" probably also warrants a reference, if possible.

Changed to "Internet Service Providers are frequently exploited points of control."

> > * Section 3.2.1: The [Verkamp-2012] reference seems broken.

Hmmm, I don't see this. The link works ( https://www.usenix.org/system/files/conference/foci12/foci12-final1.pdf ) and the reference is rendering correctly.

---

From: "Christopher Wood" <[email-masked]>
Date: Thu, 30 Apr 2020 16:00:05 -0700

On Sun, Apr 12, 2020, at 11:25 AM, Joseph Lorenzo Hall wrote:
> Ah, we do cite Chai 2019 a bit later but I will elevate that... and 
> have just made changes to highlight ESNI and remove the SSL fallback 
> bit.
> 
> You may be hung up on the terminology we use where Identification is 
> doing the technical matching against a set of things one wants to 
> censor and then Interference is actually performing the technincal 
> action to accomplish the censorship or filtering, from the Terminology 
> section:
> 

Not unless others were also confused! :-)

> Cool, that makes sense about QUIC. I don't have a good feel for what to 
> write here. How does this feel, "Note, the increasingly popular QUIC 
> protocol is based on UDP, a connection-less transport protocol, so 
> cannot be attacked using TCP RST packet injection."
> 
> That seems a bit weird... but it sounds like there may be more under 
> the surface to your comment so please suggest how that text above could 
> be better cleaned up?

I'd probably just say something like, "QUIC is not vulnerable to these types of injection attacks. See {{quic-draft}} for more details."

> That is a monster, and something I'm looking forward to digging into 
> more. I'll drop a reference and add an Issue to read and integrate it.

Sounds good!

> Hmmm, I don't see this. The link works ( 
> https://www.usenix.org/system/files/conference/foci12/foci12-final1.pdf 
> ) and the reference is rendering correctly. 

Oh, sorry, the link is working, it's the reference in the document (the forward pointer to the references section) that's broken (not clickable):

   https://tools.ietf.org/html/draft-irtf-pearg-censorship-02#section-3.2.1

Please let me know if you need help with these issues. I'm happy to lend a hand!

Best,
Chris