|
ABSTRACT
Adding a sound information flow security policy to an existing program is a difficult task that requires major analysis of andchanges to the program. In this paper we show how refactoring programs into distinct components of high and low security is a useful methodology to aid in the production of programs with sound information flow policies. Our methodology proceeds as follows. Given a program with no information flow controls, a program sliceris used to identify code that depends on high security inputs. High security code so identified is then refactored into a separate component, which may be accessed by the low security component via public method calls. A security policy that labels input data and checks the output points can then enforce the desired end-to-end security property. Controlled information releases can occur at explicit declassification points if deemed safe. The result is a well-engineered program with explicit interfaces between components of different security levels.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
Martín Abadi , Anindya Banerjee , Nevin Heintze , Jon G. Riecke, A core calculus of dependency, Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.147-160, January 20-22, 1999, San Antonio, Texas, United States
[doi> 10.1145/292540.292555]
|
| |
2
|
Torben Amtoft and Anindya Banerjee. A logic for information flow analysis with an application to forward slicing of simple imperative programs. Science of Computer Programming. To appear.
|
| |
3
|
Anindya Banerjee and David Naumann. Using access control for secure information flow in a java-like language. In Proc. IEEE Computer Security Foundations Workshop CSFW, pages 155--169. IEEE Computer Society Press, 2003., 2003.
|
| |
4
|
David E. Bell and Leonard J. LaPadula. Secure computer system: Unified exposition and multics interpretation. Technical Report MTR-2997, The MITRE Corporation, Bedford, MA, 1975.
|
| |
5
|
David Brumley and Dawn Song. Privtrans: Automatically partitioning programs for privilege separation. In Proceedings of the 13th USENIX Security Symposium, August 2004.
|
 |
6
|
|
 |
7
|
|
| |
8
|
Mike Downen. Find out what's new with code access security in the .net framework 2.0. http://msdn.microsoft.com/msdnmag/issues/05/11/CodeAccessSecurity/, November 2005.
|
| |
9
|
Joseph A. Goguen and José Meseguer. Security policies and security models. In IEEE Symposium on Security and Privacy, pages 11--20, 1982.
|
| |
10
|
GrammaTech, Inc. Codesurfer. http://www.grammatech.com/products/codesurfer/index.html.
|
| |
11
|
Christian Hammer, Jens Krinke, and Gregor Snelting. Information flow control for java based on path conditions in dependence graphs. In IEEE International Symposium on Secure Software Engineering, 2006.
|
 |
12
|
|
 |
13
|
|
| |
14
|
|
 |
15
|
|
 |
16
|
|
 |
17
|
|
| |
18
|
Niels Provos, Markus Friedl, and Peter Honeyman. Preventing privilege escalation. In 12th USENIX Security Symposium, Washington, DC, August 2003.
|
| |
19
|
Venkatesh Prasad Ranganath, Torben Amtoft, Anindya Banerjee, Matthew B. Dwyer, and John Hatcliff. Indus. http://indus.projects.cis.ksu.edu/.
|
| |
20
|
Andrei Sabelfeld and Andrew C. Myers. Language-based information-flow security. IEEE Jounal on Selected Areas in Communications, 21(1), January 2003.
|
| |
21
|
Scott F. Smith and Mark Thober. Securing data at Java IO boundaries. http://www.cs.jhu.edu/~mthober/securingdata06.pdf. Draft.
|
| |
22
|
Gregor Snelting, Torsten Robschink, and Jens Krinke. Efficient path conditions in dependence graphs for software safety analysis. ACM Transactions on Software Engineering and Methodology. To appear.
|
| |
23
|
Sun Microsystems, Inc. Security code guidelines. http://java.sun.com/security/seccodeguide.html, February 2000.
|
| |
24
|
|
| |
25
|
Frank Tip. A survey of program slicing techniques. Journal of programming languages, 3:121--189, 1995.
|
| |
26
|
|
| |
27
|
Mathieu Verbaere. Program slicing for refactoring, 2003. MSc thesis, University of Oxford.
|
| |
28
|
|
| |
29
|
Mark Weiser. Program slicing. IEEE Trans. Softw. Eng., 10(4):352--357, July 1984.
|
| |
30
|
Tatu Ylonen. Ssh client program, 1995.
|
| |
31
|
Tatu Ylonen. Ssh manpage, Nov. 8 1995.
|
|