Protecting Privacy by Splitting Trust
Total Page:16
File Type:pdf, Size:1020Kb
PROTECTING PRIVACY BY SPLITTING TRUST A DISSERTATION SUBMITTED TO THE DEPARTMENT OF COMPUTER SCIENCE AND THE COMMITTEE ON GRADUATE STUDIES OF STANFORD UNIVERSITY IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY Henry Corrigan-Gibbs December 2019 Abstract In this dissertation, we construct two systems that protect privacy by splitting trust among multiple parties, so that the failure of any one, whether benign or malicious, does not cause a catastrophic privacy failure for the system as a whole. The first system, called Prio, allows a company to collect aggregate statistical data about its users without learning any individual user’s personal information. The second, called Riposte, is a system for metadata-hiding communication that allows its users to communicate over an insecure network without revealing who is sending messages to whom. Both systems defend against malicious behavior using zero-knowledge proofs on distributed data, a cryptographic tool that we develop from a new type of probabilistically checkable proof. The two systems that we construct maintain their security properties in the face of an attacker who can control the entire network, an unlimited number of participating users, and any proper subset of the servers that comprise the system. These systems split trust in the sense that, as long as an attacker cannot compromise all of the participating servers, the system provides “best-possible” protection of the confidentiality of user data. Through the design, implementation, and deployment of these systems, we show that it is possible for us to enjoy the benefits of modern computing while protecting the privacy of our data. iv To my teachers v Acknowledgments My cousin Joe often jokes that I am a lifetime student. It occurred to me recently that this isn’t really a joke. So, as a lifetime student, I want to dedicate this dissertation to my teachers—all of the people in my life who have shared their knowledge and experience with me and who have enriched my life in the process. The Applied Crypto Group has been my academic home on campus and most of what I learned in grad school, I learned from its tremendous set of students and postdocs: Alex Ozdemir, Ananth Raghunathan, Ben Fisch, Benedikt Bünz, Benton Case, David Wu, Dmitry “Dima” Kogan, Florian Tramèr, Giancarlo Pellegrino, Hart Montgomery, Joe Bonneau, Joe Zimmerman, Kevin Lewi, Mark Zhandry, Riad Wahby, Saba Eskandarian, Sam Kim, Sergio Benitez, Suman Jana, Valeria Nikolaenko, and Yan Michalevsky. In my first year at Stanford, I shared an office with the members of the Secure Com- puter Systems Group. Those students, including Adam Belay, Ali Mashtizadeh, Amit Levy, Daniel Giffin, David Terei, Deian Stefan, and Edward Z. Yang, taught me volumes about programming, systems, and computer security. I want to thank Edward especially for many enlightening bike rides in the foothills and for his sage advice at a number of points in grad school when I needed it most. Later in grad school, I had the pleasure of working in an office with Francis Y. Yan, Greg Hill, John Emmons, Riad S. Wahby, and Sadjad Fouladi. I benefited immensely from Greg’s good taste in all things—from research questions and chart design to Bay Area restaurants and office decor. Talking with John about technical questions, especially on our Saturday-morning rides on Skyline, was terrific. The dedication and precision that Riad brings to his work consistently blows me away; I thank him for being so generous in giving feedback on my talks, papers, and half-baked ideas throughout my time at Stanford. And I thank Sadjad for being my source of truth on programming in general, and C++ in particular. vi During the latter part of grad school, I worked closely with a set of student co-authors and with my co-teachers of CS355 and CS359C: Sam Kim, Emma Dauterman, Florian Tramèr, Saba Eskandarian, Albert Kwon, David Wu, and Dima Kogan. Sam, you rarely raise your hand to ask a question or make a comment in talks, but when you do, without fail, you make an insightful observation that the rest of us would have missed. Emma, I continue to be impressed by the level of dedication and drive that you bring to your work and I look forward to seeing what you accomplish in this next phase of your research career. Florian, I greatly enjoyed our philosophical discussions about computer security (and your dark sense of humor about it all) at lunchtime, in the reading groups, and—most of all—on the ski lift. Saba, I feel very fortunate to have had you as a colleague and friend for these years, to share in both the successes of grad school and to commiserate when things didn’t go to plan. It’s hard to imagine working in an office without you around the corner. Albert, it was great fun working with you—you manage to be extremely focused and hardworking while also being very cheerful and laid back. It has been so satisfying to see your efforts in grad school pay off. David, you are one of my research role models. Even as your list of accomplishments and responsibilities grows longer and longer, you continue to maintain the same kindness, patience, and humility that you have always had. It is reassuring in this post-PhD life to know that if I ever get really stuck on something, I can always give you a call. Dima, discussing research problems with you in the various cafés around campus was a highlight of my time at Stanford. I learned so much about research just by watching you think and write, and I hope to have many more chances to work with you in the future. The staff members in the Gates Building were outstanding. I can’t thank them enough. Jay Subramanian expertly handled all sorts of issues that came up during my PhD studies. I never went wrong by following her advice. Angela Cao and Jam Kiattinant made sure that my funding was always in the right place at the right time. Mary Jane Swenson was a problem-solver extraordinaire. Even though she worked in a different group and on a different floor, she was an unfailingly reliable source of advice and help. Megan Harris and Ruth Harris were indispensable. They made sure that I always had the resources I needed to be a happy and productive grad student. Room bookings, travel funding, catering, supplies, office space, and on and on—they took care of it all with such class and such professionalism. I am in awe. I have worked with an excellent set of research external collaborators. This group includes Wendy Mu, Jay Chen, Bill Thies, Ed Cutrell, Nakull Gupta, Curtis Northcutt, Judson Wilson, Stuart Schechter, Srini Devadas, Eric Rescorla, Robert Helmer, Anthony Miyaguchi, vii and Dominic Rizzo. I thank them for exposing me to new areas of computer science and for teaching me to be a better researcher. The material in PartI of this dissertation is work done jointly with Elette Boyle, Niv Gilboa, and Yuval Ishai. As collaborators, they were welcoming, encouraging, and forgiving, and they were so much fun to work with. Yuval’s obsession with finding the right abstraction has changed the way I think about cryptography, and I continue to admire his consistent good humor and humility. I have found that making mistakes is one of the best (if not the most pleasant) ways to learn. I really appreciate those who took the time to email me to report errors in my papers: Justin Holmgren, Elette Boyle, Jiamin Zhu, Ben Riva, and Ling Ren. Each of them brainstormed and checked candidate fixes with me, and each was unfailingly kind throughout the process. Justin Thaler offered a number of suggestions that improved the work in PartI of this dissertation. During the shepherding process at NSDI 2017, Jay Lorch gave extensive and extremely helpful editorial advice on the work that forms Chapter4 of this dissertation. I would like to thank Fraser Brown, Geoffrey Voelker, Lorenzo Alvisi, Mihir Bellare, Phil Rogaway, and Remzi Arpaci-Dusseau for offering sound and thoughtful counsel as I made decisions in the last year of graduate school. The Stanford faculty has been extraordinarily supportive throughout my PhD studies. Matei Zaharia always had time for a technical discussion with me and offered good ideas faster than I could write them down. Phil Levis reminded me over and over to be true to my own taste and values in research. Zakir Durumeric shared his candid thoughts about starting out as a new professor. Keith Winstein was generous beyond all reason with his time, office space, funding, and controversial opinions. His critical eye improved my talks and made me a more careful researcher. Omer Reingold was the first person I would ask about difficult meta-research questions, and I always left his office happier than when I entered. David Mazières gave very candid and very helpful criticism of my talks and writing throughout grad school, and his encouragement during the job-application process was invaluable. David’s mantras (“Close the loop!”) will stay with me for life. A conversation with Martin Hellman early on in the PhD process shaped the way I viewed research, and I am delighted and thankful that he agreed to sit on the committee for my dissertation defense. I thank Nate Persily for agreeing to serve as the external chair for my defense. When I was an undergrad, Bryan Ford first got me excited about systems and computer security. He has been my academic guardian angel ever since. Bryan also taught me the viii most important lesson about research: if you’re not having fun, you’re doing it wrong.