Paper.thy
changeset 17 a87e2181d6b6
parent 16 a5f4dc4bbc5d
child 21 17ea9ad46257
equal deleted inserted replaced
16:a5f4dc4bbc5d 17:a87e2181d6b6
   307   they write that ``\emph{the feasibility of doing 
   307   they write that ``\emph{the feasibility of doing 
   308   so is currently an open question}'' \cite[Page 167]{Archer03}.
   308   so is currently an open question}'' \cite[Page 167]{Archer03}.
   309   We improve upon their results by using our sound and complete 
   309   We improve upon their results by using our sound and complete 
   310   static policy check to make this feasible. 
   310   static policy check to make this feasible. 
   311 
   311 
   312   Our work is also closely related to the work on \emph{grsecurity}, an 
   312   The  work we report is also closely related to the work on \emph{grsecurity}, an 
   313   access control system developed as a patch on top of Linux kernel \cite{gran12}. 
   313   access control system developed as a patch on top of Linux kernel \cite{gran12}. 
   314   It installs a reference monitor to restrict access to system resources.
   314   It installs a reference monitor to restrict access to system resources.
   315   They model a dynamic semantics of the operating system with four rules dealing with
   315   They model a dynamic semantics of the operating system with four rules dealing with
   316   executing a file, setting a role and setting an UID as well as GID.
   316   executing a file, setting a role and setting an UID as well as GID.
   317   These rules depend on an arbitrary but fixed access policy.
   317   These rules are parametrerised by an arbitrary but fixed access policy.
   318   Although, there are only four rules, their state-space is in general
   318   Although, there are only four rules, their state-space is in general
   319   infinite, like in our work. They then give an abstracted semantics,
   319   infinite, like in our work. They therfore give an abstracted semantics,
   320   which gives them a finite state-space. For example the abstracted 
   320   which gives them a finite state-space. For example the abstracted 
   321   semantics dispenses with users and roles by introducing
   321   semantics dispenses with users and roles by introducing
   322   abstract users and abstract roles. They obtain a soundness result
   322   abstract users and abstract roles. They obtain a soundness result
   323   for their abstract semantics and under some weak assumptions
   323   for their abstract semantics and under some weak assumptions
   324   also a completeness result. Comparing it to our work, we will have a much
   324   also a completeness result. Comparing this to our work, we will have a much
   325   more fine-grained model of the underlying operating system. We will
   325   more fine-grained model of the underlying operating system. We will
   326   also obtain a soundness result, but more importantly obtain 
   326   also obtain a soundness result, but more importantly obtain 
   327   also a completeness result. But since we have a much more fine-grained
   327   also a completeness result. But since we have a much more fine-grained
   328   model it will depend on some stronger assumptions.  The abstract semantics
   328   model, it will depend on some stronger assumptions.  The abstract semantics
   329   in \cite{gran12} is used for model-checking policies according to
   329   in \cite{gran12} is used for model-checking policies according to
   330   whether, for example, information flow properties are ensured. 
   330   whether, for example, information flow properties are ensured. 
   331   Since there formalism consists of only a few rules, they can get away with
   331   Since their formalism consists of only a few rules, they can get away with
   332   `pencil-and-paper proofs', whereas reasoning about our more detailed 
   332   ``pencil-and-paper proofs'', whereas reasoning about our more detailed 
   333   model containing substantially more rules needs the support of
   333   model containing substantially more rules really necessitates the support of
   334   a theorem prover.
   334   a theorem prover and completely formalised models.
   335 
   335 
   336   Our formal models and correctness proofs are mechanised in the
   336   Our formal models and correctness proofs are mechanised in the
   337   interactive theorem prover Isabelle/HOL. The mechanisation of the models is a
   337   interactive theorem prover Isabelle/HOL. The mechanisation of the models is a
   338   prerequisite for any correctness proof about the RC-Model, since it
   338   prerequisite for any correctness proof about the RC-Model, since it
   339   includes a large number of interdependent concepts and very complex
   339   includes a large number of interdependent concepts and very complex
  1390   Our formalisation is carried out in the Isabelle/HOL theorem prover.
  1390   Our formalisation is carried out in the Isabelle/HOL theorem prover.
  1391   It uses Paulson's inductive method for
  1391   It uses Paulson's inductive method for
  1392   reasoning about sequences of events \cite{Paulson98}.
  1392   reasoning about sequences of events \cite{Paulson98}.
  1393   We have approximately 1000 lines of code for definitions and 6000 lines of
  1393   We have approximately 1000 lines of code for definitions and 6000 lines of
  1394   code for proofs. Our formalisation is available from the
  1394   code for proofs. Our formalisation is available from the
  1395   Mercurial repository at \url{http://www.dcs.kcl.ac.uk/staff/urbanc/cgi-bin/repos.cgi/rc/}.\\[-12mm]
  1395   Mercurial repository at \url{http://www.dcs.kcl.ac.uk/staff/urbanc/cgi-bin/repos.cgi/rc/}.\\[-12mm]\mbox{}
  1396 
  1396 
  1397 
  1397 %%\\[-12mm]
       
  1398 %
       
  1399 %
  1398 %In a word, what the manager need is that given the
  1400 %In a word, what the manager need is that given the
  1399 %initial state of the system, a policy checker that make sure the under the policy
  1401 %initial state of the system, a policy checker that make sure the under the policy
  1400 %he made, this important file cannot: 1. be deleted; 2. be tainted. 
  1402 %he made, this important file cannot: 1. be deleted; 2. be tainted. 
  1401 %Formally speaking, this policy-checker @{text "PC"} (a function that given the 
  1403 %Formally speaking, this policy-checker @{text "PC"} (a function that given the 
  1402 %initial state of system, a policy and an object, it tells whether this object 
  1404 %initial state of system, a policy and an object, it tells whether this object 
  1403 %will be fully protected or not) should satisfy this criteria: 
  1405 %will be fully protected or not) should satisfy this criteria: 
  1404 
  1406 %
  1405 %  @{text "(PC init policy obj) \<and> (exists init obj) \<longrightarrow> \<not> taintable obj"}
  1407 %  @{text "(PC init policy obj) \<and> (exists init obj) \<longrightarrow> \<not> taintable obj"}
  1406 %If the @{text obj} exists in the initial-state, and @{text "PC"} justify the safety
  1408 %If the @{text obj} exists in the initial-state, and @{text "PC"} justify the safety
  1407 %of this object under @{text "policy"}, this object should not be @{text taintable}.
  1409 %of this object under @{text "policy"}, this object should not be @{text taintable}.
  1408 %We call this criteria the \emph{completeness} of @{text "PC"}. 
  1410 %We call this criteria the \emph{completeness} of @{text "PC"}. 
  1409 %And there is the \emph{soundness} criteria of @{text "PC"} too, otherwise a "NO-to-ALL"
  1411 %And there is the \emph{soundness} criteria of @{text "PC"} too, otherwise a "NO-to-ALL"
  1410 %answer always satisfy the \emph{completeness}. \emph{soundness} formally is:
  1412 %answer always satisfy the \emph{completeness}. \emph{soundness} formally is:
  1411 %  @{text "PC init policy obj \<longrightarrow> taintable obj"}
  1413 %  @{text "PC init policy obj \<longrightarrow> taintable obj"}
  1412 
  1414 %
  1413 %This policy-checker should satisfy other properties:
  1415 %This policy-checker should satisfy other properties:
  1414 % 1. fully statical, that means this policy-checker should not rely on the system 
  1416 % 1. fully statical, that means this policy-checker should not rely on the system 
  1415 %running information, like new created files/process, and most importantly the 
  1417 %running information, like new created files/process, and most importantly the 
  1416 %trace of system running. 
  1418 %trace of system running. 
  1417 % 2. decidable, that means this policy-checker should always terminate.
  1419 % 2. decidable, that means this policy-checker should always terminate.
  1418 
  1420 %
  1419 *}
  1421 *}
  1420 
       
  1421 
       
  1422 
       
  1423 
       
  1424 
       
  1425 (*<*)
  1422 (*<*)
  1426 end
  1423 end
  1427 
  1424 
  1428 end
  1425 end
  1429 (*>*)
  1426 (*>*)
  1430 
       
  1431 
       
  1432 (*
  1427 (*
  1433 
  1428 
  1434   Central to RC-Model is the roles and types. We start with do formalisation on
  1429   Central to RC-Model is the roles and types. We start with do formalisation on
  1435   types first.
  1430   types first.
  1436 
  1431 
  1486   and IPCs too, only diffence here is that there is no ``effcient'' type here for 
  1481   and IPCs too, only diffence here is that there is no ``effcient'' type here for 
  1487   processes and IPCs, all types that calculated by @{term "type_of_process"} and 
  1482   processes and IPCs, all types that calculated by @{term "type_of_process"} and 
  1488   @{term "type_of_ipc"} are alrealdy efficient types. 
  1483   @{term "type_of_ipc"} are alrealdy efficient types. 
  1489 
  1484 
  1490 *)
  1485 *)
  1491 
       
  1492 (*
  1486 (*
  1493 
  1487 
  1494 text {*
  1488 text {*
  1495   \begin{isabelle}\ \ \ \ \ %%%
  1489   \begin{isabelle}\ \ \ \ \ %%%
  1496   \mbox{
  1490   \mbox{