Existing security models require that information of a given security level be prevented from ``leaking'' into lower-security information. High-security applications must be demonstrably free of such leaks, but such demonstration may require substantial manual analysis. Other authors have argued that the natural way to enforce these models automatically is with information-flow analysis, but have not shown this to be practicable for general purpose programming languages in current use.
Modern safety-critical systems can contain software components with differing safety integrity levels, potentially operating in the same address space. This case poses problems similar to systems with differing security levels; failure to show separation of data may require the entire system to be validated at the higher integrity level.
In this paper we show how the information flow model enforced by the SPARK Examiner provides support for enforcing these security and safety models. We describe an extension to the SPARK variable annotations which allows the specification of a security or safety level for each state variable, and an extension to the SPARK analysis which automatically enforces a given information flow policy on a SPARK program.
[1]
Danny Dolev,et al.
On the security of public key protocols
,
1981,
22nd Annual Symposium on Foundations of Computer Science (sfcs 1981).
[2]
Bernard Carré,et al.
Information-flow and data-flow analysis of while-programs
,
1985,
TOPL.
[3]
Steve King,et al.
Is Proof More Cost-Effective Than Testing?
,
2000,
IEEE Trans. Software Eng..
[4]
Hoyt Lougee,et al.
SOFTWARE CONSIDERATIONS IN AIRBORNE SYSTEMS AND EQUIPMENT CERTIFICATION
,
2001
.
[5]
Anthony Hall,et al.
Correctness by Construction: Developing a Commercial Secure System
,
2002,
IEEE Softw..
[6]
John G. P. Barnes,et al.
High Integrity Software - The SPARK Approach to Safety and Security
,
2003
.
[7]
Andrew C. Myers,et al.
Language-based information-flow security
,
2003,
IEEE J. Sel. Areas Commun..
[8]
J. Friedrich,et al.
Security Engineering: a Guide to Building Dependable Distributed Systems Banking and Bookkeeping
,
2022
.