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 |