Information Technology Reference
In-Depth Information
We define program non-interference by using an equivalence = Low relation-
ship between states [20,22,4]. Roughly speaking, non-interference establishes that
any two terminating runs of a program that start from indistinguishable initial
states produce indistinguishable final states.
Definition 1 (State equality [20]). Given a Java program P Java ,twostates
St 1 and St 2 for P Java are indistinguishable at the confidentiality level Low ,writ-
ten St 1 = Low St 2 , if for all var
Low ( P Java ) ,St 1 [ var ]= St 2 [ var ] .
What the attacker can see from a final state is determined by a relation
Low .Two
executions of a program P Java are related by
Low if they are indistinguishable
to the attacker [20]. The notion of non-interference is therefore parametric on
Low . A program is non-interferent if, whenever different initial program states
are indistinguishable at level Low , this implies that the corresponding final states
are also indistinguishable at level Low .
Definition 2 (Non-interference [20]). A Java program P Java is
non-interferent if for every pair of different program initial states St 1 and St 2 ,
and
St 1 ,
St 2
for
their
corresponding
final
program
states
such
that
P Java ,St 1 Java
St 1
P Java ,St 2 Java
St 2
and
, we have that St 1 = Low
St 2 implies St 1 Low St 2 .
In this paper, we follow the standard approach in the literature that considers
St
Low St iff St = Low St . Then, the non-interference condition of Definition
2 is understood as the lack of any strong dependence [20] of Low -labeled variables
on any of the High -labeled variables.
3 The Rewriting Logic Semantics of Java
In the following, we briefly recall the rewriting logic semantics of Java that was
originally given in [12]. We refer the reader to [18] for further technical details
on rewriting logic semantics.
In [12], a su ciently large subset of full Java 1.4 language is specified in
Maude, including inheritance, polymorphism, object references, multithreading,
and dynamic object allocation. However, Java native methods and many of the
available Java built-in libraries are not supported. The specification of Java op-
erational semantics is a rewrite theory: a triple
R Java =( Σ Java ,E Java ,R Java )
where Σ Java is an order-sorted signature ; E Java = Δ Java
B Java is a set of
Σ Java -equational axioms where B Java are algebraic axioms such as associativity,
commutativity and unity, and Δ Java is a set of terminating and confluent (mod-
ulo B Java ) equations. Finally, R Java is a set of Σ Java -rewrite rules that are not
required to be confluent nor terminating.
Intuitively, the sorts and function symbols in Σ Java describe the static struc-
ture of the Java program state space as an algebraic data type; the equa-
tions in Δ Java describe the operational semantics of its deterministic features;
and the rules in R Java describe its concurrent features. Following the rewrit-
ing logic framework we denote by u
Java v the fact that the concrete terms
 
Search WWH ::




Custom Search