580 likes | 755 Views
Slicing the Onion: Anonymity Using Unreliable Overlays. Sachin Katti Jeffrey Cohen & Dina Katabi. Problem Statement. Leverage existing popular P2P overlays to send confidential, anonymous messages without keys. Overlays rock!. Ideal for anonymous communication. Thousands of nodes
E N D
Slicing the Onion: Anonymity Using Unreliable Overlays Sachin Katti Jeffrey Cohen & Dina Katabi
Problem Statement Leverage existing popular P2P overlays to send confidential, anonymous messages without keys
Overlays rock! Ideal for anonymous communication • Thousands of nodes • Plenty of traffic to hide anonymous communication • Diverse membership Nodes unlikely to collude • Dynamic Hard to track
Overlays suck! • Nodes don’t have public keys • Nodes are not trustworthy • Nodes are unreliable
This talk: Information Slicing • Message confidentiality, and source and destination anonymity • No public keys • Churn resilient
Confidentiality via Information Slicing “Borat: Cultural Leanings of America” Original Message Split message to random pieces and send pieces along node-disjoint paths “Borat: Cultural” “Leanings of America” Split into two “Borat: Cultural” “Leanings of America” Randomize them! “aaspdgfqw” “asdlfrwe” Random pieces
Confidentiality via Information Slicing “aaspdgfqw” Me D “asdlfrwe”
Message Recovery by destination Received random pieces “aaspdgfqw” “aaspdgfqw” “asdlfrwe” Matrix inversion “asdlfrwe” Pieces of original message “Borat: Cultural” “Leanings of America” “Borat: Cultural Leanings of America” Original Message
Even an attacker that gets all but one piece cannot decode! Destination gets all pieces can decode
System Setup • Anonymous communication has two phases • Route Setup • A node learns how to forward a received message • Data transmission • Just follow the routes
Setup Anonymous Routes • Each node knows its next hop • No one else knows the next hop of a node • Why not tell each node the ID of its next hop in a confidential message? Idea : Build anonymity by confidentially sending to each node it’s routing info!
Naïve way to send to a node its next hop Exponential Blowup!
Challenge: Exponential Blowup Solution: Reuse nodes without giving them too much information V Z W R Z’s next hop information: R’s next hop information:
Challenge: Exponential Blowup Solution: Reuse nodes without giving them too much information V Z W R V and W will know Z and R’s next hops
Challenge: Exponential Blowup Solution: Reuse nodes without giving them too much information V Z W R Reuse V to send pieces that belong to different nodes
Challenge: Exponential Blowup Solution: Reuse nodes without giving them too much information V Z W R Reuse nodes to send multiple pieces as long as the pieces belong to different messages
Slicing Protocol Source has multiple IP addresses S S’
Slicing Protocol Source organizes nodes into stages D S V Z W S’ X R
Slicing Protocol Destination D is placed randomly (here in last stage) D S V Z W S’ X R
Slicing Protocol Source confidentially tells each node its next hop info D S V Z W S’ X R
Slicing Protocol V receives the ids of its next hops along disjoint paths D S V Z W S’ X R
Slicing Protocol V also receives one piece meant for Z and one for R, but cannot decipher their next hops D S V Z W S’ X R
Slicing Protocol W also receives its info and pieces for Z and R W cannot decipher Z’s and R’s next hops D S V Z W S’ X R
Slicing Protocol V and W have pieces meant for Z and R D S V Z W S’ X R
Slicing Protocol V and W forward the pieces meant for Z and R D S V Z W S’ X R
Slicing Protocol Node disjoint paths to deliver to Z its V and W do not have enough pieces to know Z’s info D S V Z W S’ X R
Slicing Protocol The same for R D S V Z W S’ X R
Slicing Protocol V and W are reused without revealing anything about Z and R’s routing information D S V Z W S’ X R
Slicing Protocol Similarly source constructs entire graph D S V Z W S’ X R
Slicing Protocol D S V Z W S’ X R Anonymity without keys!
Slicing Protocol - Churn • What if node V departs? D S V Z W S’ X R
Slicing Protocol - Churn • What if node V departs? • Destination cannot decode D S V Z X W S’ X R
How Do We Combat Churn? • Churn causes data loss • Typical solution Add Redundancy • Use coding to efficiently add redundancy
Source Coding the Data • Source Coding (Erasure Codes) • Split into 3 pieces instead of 2 • Any 2 pieces suffice to retrieve data • Added redundancy of (1/2) = 50%
Source Coding For Robustness S Z V D X S1 R X W S2 P Y U Source coding can tolerate one node failure in the network • Destination D gets two pieces Can decode
Source Coding For Robustness S Z V D X S1 R X W S2 P Y U • What if a second node (here Z) fails?
Source Coding For Robustness S Z V D X X S1 R X W S2 P Y U • What if a second node (here Z) fails? • Destination D cannot decode
Coding partially solves problem S Z V D X X S1 R X W S2 P Y U • Focus on node R
Coding partially solves problem R Due to upstream node failure, R receives 2 pieces instead of 3
Coding partially solves problem R R can only send out two pieces now, Initial redundancy is destroyed
Regenerating Redundancy R Pieces are linear combinations of message fragments
Network Coding R Take Linear combination of the pieces New piece R can create a linear combination of the pieces he received to generate a new piece
Network Coding R R can now send out 3 pieces instead of 2 Redundancy is regenerated inside the network
Network Coding R Network coding can tolerate one node failure in every stage Can tolerate downstream node failures
General Network Coding • Nodes send linear combinations of incoming pieces • Technique generalizes to any number of extra pieces For kextra pieces, network coding tolerates k failures in every stage
Evaluation Environment • Implementation in Python • Evaluated both in simulation and on PlanetLab • Evaluate anonymity, performance and churn resilience • Each metric is evaluated against the optimal existing baseline