Slide 1

Slide 1 text

Solving the Cloudflare CAPTCHA Alex Davidson RHUL George Tankersley Cloudflare Filippo Valsorda Cloudflare

Slide 2

Slide 2 text

Solving the Cloudflare CAPTCHA Don’t click the post!

Slide 3

Slide 3 text

CAPTCHAs are actually hard Many assumptions: ● Culture ● Language ● Vision/hearing ● Mobility ● Social class Define “house” or “storefront” for everyone?

Slide 4

Slide 4 text

What’s a Cloudflare?

Slide 5

Slide 5 text

Tor Browser obscures these signals

Slide 6

Slide 6 text

Why do we serve CAPTCHAs? Mostly, IP reputation of the Tor exits Prior attack sightings lead to poor reputation Thus, traffic from exits gets a CAPTCHA

Slide 7

Slide 7 text

Tor users get a lot of CAPTCHAs

Slide 8

Slide 8 text

Feel the love Image credit:

Slide 9

Slide 9 text

It’s getting better!

Slide 10

Slide 10 text

Blocking innocent Tor users is a problem

Slide 11

Slide 11 text

What we’ve tried ● Intentionally blacklisted the office IP reputation ● reCAPTCHA v2 (which backfired - sorry!) ● Customer sites can whitelist Tor network as a “country” ● Altered the internal treatment of Tor traffic ● … some clever crypto thing?

Slide 12

Slide 12 text

Requirements We need to meet security requirements of both Cloudflare and Tor Browser ● CAPTCHA solutions allow a finite number of subsequent redemptions ● Unlinkable tokens ● Don’t require persistent client state / disk storage ● Resists farming ● Resists double-spend with minimal server state ● Relatively efficient server computations ● Deployable in a browser extension, in Javascript, in an auditable manner

Slide 13

Slide 13 text

Look, a clever crypto thing!

Slide 14

Slide 14 text

Blind signatures for rate-limiting Tor Browser plugin + an edge service User solves a CAPTCHA and submits many blinded tokens for signing Later, unblinds and submits a token instead of solving CAPTCHA Users solve only one challenge per N websites visited Tokens are unlinkable, work cross-domain over multiple circuits unlike cookies Maintains Tor Browser’s strong first-party isolation

Slide 15

Slide 15 text

RSA? Really? Boring, reliable old Chaumian RSA plus elements from Google’s macaroons - not trying to innovate in algorithms Details here:

Slide 16

Slide 16 text

Future Directions But really- RSA? ● Suggestions welcome! But it must be practical to deploy in a browser Anonymous credentials: ● BLAC/BLACR (pairings? in a browser?) ● “Algebraic MACs and Keyed-Verification Anonymous Credentials” Standardization: ● This is generalizable to VPNs and carrier-grade NAT

Slide 17

Slide 17 text

Open Questions Deanonymization: does this create new vectors? Stockpiling: how do we limit token farming? Exhaustion: how to stop a malicious site from draining tokens?

Slide 18

Slide 18 text

Questions? Alex Davidson alex.davidson2014@rhul.ac.uk George Tankersley gtank@cloudflare.com Filippo Valsorda filippo@cloudflare.com Comments? tor-access@lists.torproject.org Attacks? The next PETS deadline is February 28, 2017 Pull Requests?