Basic Security Theorem |
Require Export ModelProperties.
Require Export aclstatIsSecure.
Require Export chmodIsSecure.
Require Export createIsSecure.
Require Export mkdirIsSecure.
Require Export openIsSecure.
Require Export addUsrGrpToAclIsSecure.
Require Export chobjscIsSecure.
Require Export chownIsSecure.
Require Export chsubscIsSecure.
Require Export closeIsSecure.
Require Export delUsrGrpFromAclIsSecure.
Require Export oscstatIsSecure.
Require Export owner_closeIsSecure.
Require Export readIsSecure.
Require Export readdirIsSecure.
Require Export rmdirIsSecure.
Require Export sscstatIsSecure.
Require Export statIsSecure.
Require Export unlinkIsSecure.
Require Export writeIsSecure.
Require InitialState.
Require Export Le.
|
|
|
Definition GeneralSecureState [s:SFSstate] : Prop :=
(SecureState s)
/\(StarProperty s)
/\(FuncPre1 s)
/\(FuncPre2 s)
/\(FuncPre3 s)
/\(FuncPre4 s)
/\(FuncPre5 s)
/\(FuncPre6 s)
/\(FuncPre7 s).
|
Lemma InitialStateIsSecure:
(GeneralSecureState InitState).
Unfold GeneralSecureState SecureState InitState DACSecureState
SimpleSecurity StarProperty FuncPre1 FuncPre2 FuncPre3 FuncPre4
FuncPre5 FuncPre6 FuncPre7; Simpl.
Repeat (Split; Auto).
Tauto.
Tauto.
Qed.
|
Parameter defaultState: SFSstate.
|
Lemma BasicSecurityTheorem:
(tr:(list SFSstate))
(GeneralSecureState (nth O tr defaultState))
->((n:nat)
(lt n (length tr))
->(EX op:Operation | (EX u:SUBJECT |
(TransFunc u
(nth n tr defaultState)
op
(nth (S n) tr defaultState)))))
->(n:nat)
(le n (length tr))
->((GeneralSecureState (nth n tr defaultState))).
Intros.
Induction n.
Auto.
Generalize Hrecn.
Cut (EX op:Operation |
(EX u:SUBJECT |
(TransFunc u (nth n tr defaultState) op
(nth (S n) tr defaultState)))).
Elim (nth n tr defaultState).
Intros.
Elim H2; Intros.
Elim H3; Intros.
Cut (u:SUBJECT)
(GeneralSecureState
(mkSFS groups primaryGrp subjectSC AllGrp RootGrp SecAdmGrp
objectSC acl secmat files directories))
->(TransFunc u
(mkSFS groups primaryGrp subjectSC AllGrp RootGrp SecAdmGrp
objectSC acl secmat files directories) x
(nth (S n) tr defaultState))
->(GeneralSecureState (nth (S n) tr defaultState)).
Intro GTR; Apply (GTR x0).
Apply Hrecn0; Auto with *.
Auto.
Unfold GeneralSecureState; Intros u GSSi TF; Decompose [and] GSSi;
Clear GSSi.
Split.
Induction x;
Prolog
[AclstatPSS AddUsrGrpToAclPSS ChmodPSS ChobjscPSS ChownPSS
ChsubscPSS ClosePSS CreatePSS DelUsrGrpFromAclPSS MkdirPSS OpenPSS
OscstatPSS Owner_ClosePSS ReadPSS ReaddirPSS RmdirPSS SscstatPSS
StatPSS UnlinkPSS WritePSS] 2.
Split.
Induction x;
Prolog
[AclstatPSP AddUsrGrpToAclPSP ChmodPSP ChobjscPSP ChownPSP
ChsubscPSP ClosePSP CreatePSP DelUsrGrpFromAclPSP MkdirPSP OpenPSP
OscstatPSP Owner_ClosePSP ReadPSP ReaddirPSP RmdirPSP SscstatPSP
StatPSP UnlinkPSP WritePSP] 2.
Split.
Unfold FuncPre1; Unfold FuncPre1 in H6; Decompose [and] H6;
Repeat (Split; EAuto).
Unfold FuncPre2 FuncPre3 FuncPre4 FuncPre5 FuncPre6 FuncPre7;
Unfold FuncPre2 FuncPre3 FuncPre4 FuncPre5 FuncPre6 FuncPre7
in H8 H9 H10 H11 H12 H14; Repeat (Split; EAuto).
Auto.
Qed.