The information flow problem is concerned with controlling the transmission of information in computer systems. This thesis addresses this problem by developing an axiomatic logic that captures the information flow semantics of a program. Using this technique the scope of information flow analysis is extended from terminating sequential programs to parallel programs in which non-termination, synchronization and deadlock are possible. Once the information flow generated by a program has been determined, it is easy to check whether or not the program satisfies a given security policy. The main contribution of the thesis is an axiomatic proof system for determining the flow of information produced by sequential or parallel programs. Just as proofs of correctness capture the effect of program execution upon the values in variables, proofs of information flow capture the effect of program execution upon the information in variables. An advantage of this approach is that once a flow proof of a program has been generated, various security policies, such as high water mark or final value, can be verified readily. Although flows in parallel programs need to be determined so that confidentiality in shared systems can be maintained, current information flow techniques are limited to terminating sequential programs. The thesis addresses this problem by capturing the flows generated by programs containing independent processes that synchronize with each other. The practicability of the method is demonstrated by developing the flow semantics for Concurrent Pascal.
computer science; technical report
Previously Published As