CrowdMixer: Differentially Private Anonymous Communication

CrowdMixer: Differentially Private Anonymous Communication


Engineering and Applied Sciences


Raj and Neera Singh Assistant Professor

Project Summary

I worked with Professor Sebastian Angel of the Computer and Information Science Department on developing an anonymous communications system to hide user metadata. Metadata is information that enables an adversary to determine who users are talking to and when they are talking. Our project also addresses two issues faced by prior anonymous communications protocols: the lack of ability to store messages over time and the fact that most anonymous communications systems have too few users. To solve these problems, I found a way to co-opt non-users into generating fake traffic that hides the activities of real users. 


Over the course of the summer, I built a network of servers that took in real user messages, added in hundreds of thousands of fake messages, and randomly shuffled the messages to confuse adversaries about user relationships. Consenting non-users could send fake messages to the system simply by installing a Chrome extension, making their activity indistinguishable from the activities of legitimate users. The system followed a standard known as differential privacy, where the amount of privacy leakage is bounded by the variables ε and δ. I did extensive research on various composition theorems to ensure that our system could meet acceptable ε and δ standards over time. 


This project was a great opportunity to apply classroom coding concepts in the real world. I had the opportunity to code in Python and JavaScript as well as configure distributed Linux servers to run various scripts. When I began the project, I had no knowledge about concepts such as differential privacy and anonymous communications, but I learned over time how to interpret research papers and adapt prior works to come up with new ideas. This also gave me the chance to dive into the basics of network security by incorporating concepts such as asymmetric encryption and RSA into my project. Most importantly of all, I learned how to solve problems that I had no bearing on whatsoever. Many times, I found myself stuck in places that I couldn’t find previous literature or a clear answer to. With help from my mentor and a lot searching on Stack Overflow, I always managed to work through the problem in the end. All in all, the PURM program was a lot of fun and a great introduction to ideas that I hope to continue learning about in the future.