|
||||||||||||||||
People | ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Background | ||||||||||||||||
Security policies govern the execution of a program by defining a set
of permissible behaviors of the program. For instance, a policy might
specify that only a program acting on behalf of Alice or
Alice's doctors is permitted to access her health care records.
Security-typed languages are a promising method for enforcing security policies. In contrast to dynamic techniques (such as stack inspection), security-typed languages offer a static guarantee that all possible executions of the program are consistent with a given security policy. To achieve this, types in security-typed languages are augmented to include information from the security policy. Type-checking a program in a security-typed language amounts to security checking. Aside from the obvious benefit of a static proof of compliance with a security policy, security-typed languages also typically offer a strong end-to-end security property called noninterference. Informally, noninterference ensures that the high-security inputs to a program do not influence the low-security outputs of the program. A downside of most security-typed languages is the simplifying assumption that the security policy remains unchanged for the entire duration of the program's execution. This assumption is not viable for complex, long-running programs and might explain in part the lack of adoption of security-typed languages for the development of real applications. |
||||||||||||||||
Objectives | ||||||||||||||||
The objective for this project is to design and implement programming
languages that permit security policies to be updated at
runtime. We will validate our solution by constructing a large
application that models the management of health care records.
Changes to policy must be secure: first, the execution of the program after the policy has changed must be consistent with the new policy; second, sensitive information must not be leaked through the state of the policy. Additionally, we also wish to reason about policy evolution to ensure that changes to policy do not inadvertently violate application specific security requirements. We have begun exploring solutions to this problem in the context of small formal languages. Our approach, so far, has been twofold. First, we use a type-system enriched with security information to reason statically about information flows in the program. Second, we use dynamic techniques (such as runtime inspection of the program source and policy; transactional memory etc.) to ensure that changes to the policy are consistent with both the state of the program as well as prior policies. |
||||||||||||||||
Papers | ||||||||||||||||
Managing Policy Updates in Security-Typed Languages. Nikhil Swamy, Michael Hicks, Stephen Tse, and Steve Zdancewic. In Proceedings of the 19th Computer Security Foundations Workshop (CSFW-2006), July 2006
[ .pdf | Technical Report (pdf) | Presentation slides (pdf) ] @MISC{swamy06rx, TITLE = {Managing Policy Updates in Security-Typed Languages}, AUTHOR = {Nikhil Swamy and Michael Hicks and Stephen Tse and Steve Zdancewic}, NOTE = {Submitted for publication}, MONTH = {February}, YEAR = 2006 } |
||||||||||||||||
Dynamic Updating of Information-Flow Policies. Michael Hicks, Stephen Tse, Boniface Hicks, and Steve Zdancewic. In Proceedings of the International Workshop on Foundations of Computer Security (FCS), June 2005.
[ .pdf ] @INPROCEEDINGS{hicks05secupdate, AUTHOR = {Michael Hicks and Stephen Tse and Boniface Hicks and Steve Zdancewic}, TITLE = {Dynamic Updating of Information-Flow Policies}, BOOKTITLE = {Proceedings of the International Workshop on Foundations of Computer Security (FCS)}, MONTH = {June}, LOCATION = {Chicago, IL}, YEAR = {2005} } |
||||||||||||||||
Funding | ||||||||||||||||
This work is funded in part by grant CCF-0524036 from the National Science Foundation. The views expressed here do not necessarily represent those of our funding sources. |