Mostly-Static Decentralized Information Flow Control by Andrew C
Total Page:16
File Type:pdf, Size:1020Kb
Mostly-Static Decentralized Information Flow Control by Andrew C. Myers Submitted to the Department of Electrical Engineering and Computer Science in partial ful®llment of the requirements for the degree of Doctor of Philosophy at the Massachusetts Institute of Technology February 1999 c Massachusetts Institute of Technology 1999. All rights reserved. Author :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Department of Electrical Engineering and Computer Science January 7, 1999 Certi®ed by :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Barbara Liskov Ford Professor of Engineering Thesis Supervisor Accepted by ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Arthur C. Smith Chairman, Departmental Committee on Graduate Students Mostly-Static Decentralized Information Flow Control by Andrew C. Myers Submitted to the Department of Electrical Engineering and Computer Science on January 7, 1999, in partial ful®llment of the requirements for the degree of Doctor of Philosophy Abstract The growing use of mobile code in downloaded programs such as applets and servlets has increased interest in robust mechanisms for ensuring privacy and secrecy. Common security mechanisms such as sandboxing and access control are either too restrictive or too weakÐthey prevent applications from sharing data usefully, or allow private information to leak. For example, security mechanisms in Java prevent many useful applications while still permitting Trojan horse applets to leak private information. This thesis describes the decentralized label model, a new model of information ¯ow control that protects private data while allowing applications to share data. Unlike previous approaches to privacy protection based on information ¯ow, this label model is decentralized: it allows cooperative computation by mutually distrusting principals, without mediation by highly trusted agents. Cooperative computation is possible because individual principals can declassify their own data without infringing on other principals' privacy. The decentralized label model permits programs using it to be checked statically, which is important for the precise detection of information leaks. This thesis also presents the new language JFlow, an extension to the Java programming language that incorporates the decentralized label model and permits static checking of information ¯ows within programs. Variable declarations in JFlow programs are annotated with labels that allow the static checker to check programs for information leaks ef®ciently, in a manner similar to type checking. Often, these labels can be inferred automatically, so annotating programs is not onerous. Dynamic checks also may be used safely when static checks are insuf®ciently powerful. A compiler has been implemented for the JFlow language. Because most checking is performed statically at compile time, the compiler generates code with few additional dynamic tests, improving performance. Thesis Supervisor: Barbara Liskov Title: Ford Professor of Engineering 3 Acknowledgments Many people deserve thanks for helping me make this work, my degree, and my love of research, a reality. First, I must thank my advisor, Barbara Liskov, for her continuous support and the inspiration she has provided me. If I am a better writer or speaker because of my time at MIT, it is largely due to her. I hope that someday I will approach her clarity of thought and expression, and her ability to focus on the important. My thesis committee provided many excellent suggestions on both the form and content of this work. MartÂõn Abadi has given thoughtful and extremely useful comments at several phases of this work; I greatly appreciate his support and his meticulous reading of this thesis. John Guttag suggested many useful clari®cations. Butler Lampson had several insightful suggestions as I was developing this work and helped me ®gure out how to make some of the central ideas of this thesis more intuitive. Many other people also have provided useful feedback on this thesis and on the work as a whole. Chandrasekhar Boyapati, Miguel Castro, and Stephen Garland deserve special thanks for their in-depth readings of my work and helpful suggestions over the last couple of years. Nick Mathewson provided much useful code that I was able to borrow. It has been a pleasure to be a graduate student in the Programming Methodology Group, and I would like to thank the group members for creating such a lively and thought-provoking environment. Atul Adya, Joseph Bank, Phillip Bogle, Chandra, Miguel, Mark Day, Sanjay Ghemawat, Jason Hunter, Umesh Maheshwari, Quinton Zondervan, and many others made life richer, not only because of their considerable abilities, but also because they were willing to make movie runs, share dinners, suggest good books, play ping-pong, and Illuminati, and swap evil puzzles. Other friends have helped over the years. Ulana Legedza has always been there to help re®ne talks and papers. In addition to his useful feedback on all of my work, Jim O'Toole was a stimulating housemate in my early years at MIT. Joe Boyt and Paul Isherwood often ¯ew into town and enlivened my graduate life. Many other people have made me a better researcher and computer scientist. Greg Nelson of SRC made me appreciate the value of a well-written speci®cation. I learned about user interfaces and good design from Rob Myers of Silicon Graphics, and Brendan Eich, Kipp Hickman, Bruce Karsh, and others from SGI made me a better programmer and collaborator. I would also like to thank Franklyn Prendergast, S. Vuk-Pavlovic, and Zeljko Bajzer of the Mayo Clinic, who introduced me to research and helped me realize that I wanted to become a scientist. My parents and the rest of my family have been incredibly supportive over the years of my quest for a doctoral degree. My parents always have pushed me to achieve to the limits of my ability and have done what they could to ensure that I had the best education possible. I owe them much gratitude. Finally, my greatest asset for the last three years has been my wife, Kavita Bala. She is always emotionally supportive, but she is also my best reviewer and the person I ®rst bounce ideas off of. Even while she worked to complete her own doctoral degree, she helped me unstintingly in every conceivable way, right from the start in a Barcelona park where she helped nurture an offbeat idea into my thesis topic. 5 6 Contents 1 Introduction 11 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.1 Example : 12 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.2 Existing security techniques : 14 : : : : : : : : : : : : : : : : : : : : : : : : : : 1.3 Decentralized information ¯ow control : 15 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.3.1 Decentralized label model : 15 : : : : : : : : : : : : : : : : : : : : : : : : : : 1.3.2 Static information ¯ow analysis : 16 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.4 Trusted computing base : 18 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.5 Applications : 19 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.6 Limitations : 19 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.7 Outline : 20 2 The Label Model 21 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.1 Basic model : 22 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.1.1 Principals : 22 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.1.2 Labels : 22 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.1.3 Relabeling by restriction : 23 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.1.4 Computation and label join : 24 : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.1.5 Relabeling by declassi®cation : 25 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.1.6 Channels : 26 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.2 Examples : 27 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.2.1 Tax preparer example : 27 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.2.2 Hospital example : 29 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.3 Extending and interpreting labels : 30 : : : : : : : : : : : : : : : : : : : : : : 2.3.1 Limitations of the subset relabeling rule : 31 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.3.2 Interpreting labels : 32 : : : : : : : : : : : : : : : : : : : : : : : : 2.3.3 Formalizing the principal hierarchy : 33 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.3.4 Label interpretation function : 34 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.3.5 Flow set constraints : 34 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.3.6 Label functions : 35 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.4 Checking relabeling statically : 38 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.4.1 Annotations : 38 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.4.2 Static correctness condition : 39 : : : : : : : : : : : : : : : : : : : : : : : 2.4.3 A sound and complete relabeling rule : 41 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.4.4 Static checking : 46 : : :