improving tor using a tcp over dtls tunnel joel reardon
play

Improving Tor using a TCP-over-DTLS Tunnel Joel Reardon Ian - PowerPoint PPT Presentation

Improving Tor using a TCP-over-DTLS Tunnel Joel Reardon Ian Goldberg Google Zurich University of Waterloo 18th USENIX Security Symposium August 12th, 2009 Tor: Internet anonymity tool 2 Problem 3 Tor Network 4 Tor: circuit construction


  1. Improving Tor using a TCP-over-DTLS Tunnel Joel Reardon Ian Goldberg Google Zurich University of Waterloo 18th USENIX Security Symposium August 12th, 2009

  2. Tor: Internet anonymity tool 2

  3. Problem 3

  4. Tor Network 4

  5. Tor: circuit construction 5

  6. Tor: circuit construction 6

  7. Tor: circuit construction 7

  8. Tor: circuit construction 8

  9. Tor Privacy for usable, low-latency communication. However it can be slow, and that discourages casual usage. 9

  10. Where is the observed latency? 10

  11. Tor’s Datapath Onion Router Onion Router Onion Proxy ���� ���� ���� ���� ���� ���� Input Input Input Input Input �� �� �� �� � Buffer Buffer Buffer Buffer Buffer ���� ���� ���� ���� Socket ���� ���� Router Socket Socket Router Proxy Server Output Output Output Output Output Buffer Buffer Buffer Buffer Buffer Datapath 11

  12. Output buffers do introduce some latency Output Buffer Size and Latency (a) Waiting Times over Time (b) Waiting Times CDF 300 100 Waiting Time (milliseconds) 250 80 200 Percentile 60 150 40 100 20 50 0 0 0 2 4 6 8 10 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 Time (min) Waiting Time (milliseconds) (c) Buffer Length over Time (d) Buffer Length CDF 16 100 14 80 12 Datalength (KB) 10 Percentile 60 8 40 6 4 20 2 0 0 0 2 4 6 8 10 0 2 4 6 8 10 12 14 16 Time (min) Buffer Length (KB) 12

  13. This occurs when the socket is unwritable 13

  14. A brief outline of TCP TCP is designed to reliably send streams of data using packets Congestion controls throttles sending to maximize throughput while avoiding packet drops. 14

  15. Of what are TCP output buffers composed? Socket Output Buffer Size and Unacknowledged Packets 40 35 30 Socket Output Buffer Size (KB) 25 20 15 10 Socket Output Buffer Size 5 Unacknowledged Packets Unwritable Socket 0 0 100 200 300 400 500 600 Time (seconds) 15

  16. TCP Congestion Control (C/C) is to blame. 16

  17. Tor’s multiplexing of circuits over TCP OR OR a a OR OR a, b b OR b OR If C/C is applied to a , then it is also applied to b This is suboptimal; TCP is designed to throttle individual connections based on whether they witness a packet drop—proportional to their traffic. 17

  18. An example of cross-circuit interference Buffer Sizes across Circuits 1.2 1.0 0.8 Data (MB) 0.6 0.4 0.2 0.0 0 100 200 300 400 500 600 700 Time (seconds) 18

  19. Experiment to observe interference by bulk senders Delay (ms) 1600 1400 1200 1000 800 600 400 200 0 Circuit Delay Circuit delay while peer under load 19

  20. Packet Dropping / Reordering Kernel TCP TCP Stream (over network) Buffered / Waiting OR OR Readable 20

  21. We want to use a separate TCP connection for each circuit 21

  22. Concerns for separate TCP connections Individual TCP streams leak precise information about the size and rate of data to an adversary Tor already faces some scalability concerns regarding its clique topology Some versions of Windows suffer when opening many TCP sockets already Any modification must be backwards compatible with the existing Tor network 22

  23. Our novel proposal: a TCP-over-DTLS tunnel DTLS - a secure (cf. TLS) protocol for transporting datagrams (UDP sockets) TCP implementation in user-space is used to generate TCP/IP packets, which are sent over DTLS The other end injects the received packet into their user-level TCP stack, and reads from user-level sockets 23

  24. How TCP-over-DTLS addresses our issues IP TCP TLS Application Payload (a) TCP Tor IP UDP DTLS TORTP Application Payload (b) TCP−over−DTLS Tor 24

  25. How TCP-over-DTLS addresses our issues UDP operates in an unconnected mode, so it accepts packets from any destination Each node advertises a UDP socket that multiplexes data for all connections The sender is used to demultiplex the proper connection that is used to decrypt the DTLS payload Nodes that do not offer a UDP socket will use the existing transport, assuring backwards compatibility 25

  26. Packet / Streams translation Tor Interface User−level TCP Streams send() cell_pack Tor recv() TCP TCP Processing cell_unpack Buffers Sockets Packets TCP rx() Re/Transmit DTLS decrypt Thread UDP tx() Socket DTLS encrypt 26

  27. How TCP-over-DTLS addresses our issues Kernel UDP User TCP UDP Stream (over network) Buffered/Waiting RXed Packets OR OR Readable Readable m 27

  28. Experimental results from our implementation 28

  29. Circuit latency comparison Delay (ms) 1600 TCP-over-DTLS Tor TCP Tor 1400 1200 1000 800 600 400 200 0 Base Delay Delay under Load 29

  30. Future Work 30

  31. Improved Memory Management Cell Pool empty list: 2, 5, 9, 4 0 1 2 3 socket 1’s input buffer: 0, 6, 7 4 5 6 7 socket 1’s output buffer: 1, 3, 11, 8 8 9 10 11 cell_t data: 10 31

  32. Back-propagation of Congestion Window data data ack, cwnd=10 ack, cwnd=10 TCP cwnd=15 TCP cwnd=20 TCP cwnd=10 actual cwnd=10 actual cwnd=10 actual cwnd=10 32

  33. Summary We determined that TCP congestion control introduces latency into Tor’s datapath We determined that multiplexing circuits over TCP results in the unfair application of congestion control We proposed TCP-over-DTLS: a solution to address this issue that also addresses scalability issues and is backwards compatible with the existing Tor network We implemented our proposal and showed it successfully addressed cross-circuit interference. 33

Recommend


More recommend