Inconsistency resolving of safety and utility in access control

Policy inconsistencies may arise between safety and utility policies due to their opposite objectives. In this work we provide a formal examination of policy inconsistencies resolution for the coexistence of static separation-of-duty (SSoD) policies and strict availability (SA) policies. Firstly, we reduce the complexity of reasoning about policy inconsistencies by static pruning technique and minimal inconsistency cover set. Secondly, we present a systematic methodology for measuring safety loss and utility loss, and evaluate the safety-utility tradeoff for each choice. Thirdly, we present two prioritized-based resolutions to deal with policy inconsistencies based on safety-utility tradeoff. Finally, experiments show the effectiveness and efficiency of our approach.


Introduction
The safety and utility policies are very important in an access control system for ensuring security and availability when performing a certain task. Safety policies are used to describe safety requirements which ensure that users who should not have access do not get access. Such focus on safety requirements probably stems from the fact that safety policies have been mostly viewed as a tool for restricting access. An example of the safety policy is a static separation-of-duty (SSoD) policy, which precludes any group of users from possessing too many permissions [1]. An equally important aspect of access control is the utility policies that enables access [2,3]. In our previous work [4], we have introduced the notion of availability policies which is an example of an utility policy. In this paper, we introduce the notion of strict availability (SA) policies, which is also an example of utility policy that requires that the cooperation among at most a certain number of users is necessary to perform a task. Due to their opposite objectives, safety policies and utility policies can conflict with each other. For example, let p 1 and p 2 be two permissions, and u 1 and u 2 two users. Assume that an SSoD policy requires that neither u 1 nor u 2 possess all permissions in {p 1 , p 2 }. An SA policy requires both u 1 and u 2 possess all permissions in {p 1 , p 2 }. Clearly, the two policies cannot be satisfied simultaneously.
This paper examines this kind of conflict: policy inconsistencies that result from the incompatibility between safety policies and utility policies, especially for the coexistence of SSoD policies and SA policies. Policy inconsistencies differ from the traditional policy conflicts [5] in that the composition of safety and utility policies is never supposed to be inconsistent. That means policy inconsistencies are checked at compiletime to prevent the construction of any safety or utility policy that may conflict with each other. A policy inconsistency results in a policy compilation error. Hence, the resolution for policy inconsistencies is a policy design problem, whereas policy conflicts are resolved at runtime. In practice, the policy administrator may define many safety and utility policies and these policies may be inconsistent. However, it is not easy to detect and resolve these policy inconsistencies. Thus, it is very important to help the policy administrator to detect and resolve the policy inconsistencies at compile-time. The above discussion motivates the problem considered in this paper.
In our previous work [4], we have addressed the problem of consistency checking for the coexistence of safety and utility policies [4]. In this paper, we aim for providing a formal examination of policy inconsistency resolution for safety and utility policies, which can help the policy administrators to specify reasonable access control policies when both safety and utility policies coexist. Our contributions are as follows: • We formally define the policy inconsistency for the coexistence of safety policies and utility policies.
• We describe a static pruning technique that aims to reduce the number of policies that need to be taken into account.
• We compute the minimal inconsistency cover set that is responsible for the policy inconsistencies; thus we only need to examine the minimum number of policies.
• We present a systematic methodology for measuring safety loss and utility loss, and evaluate the safety-utility tradeoff for each candidate resolution.
• We present two prioritized-based resolutions to deal with policy inconsistencies for safety and utility policies based on safety-utility tradeoff.
The remainder of this paper is organized as follows. Section 2 formally defines the policy inconsistency problem for the coexistence of safety policies and utility policies. Section 3 presents prioritized-based resolutions for policy inconsistencies. The evaluation and illustration of our approaches are given in Section 4. Section 5 discusses related work, and Section 6 concludes and discusses the future work.

Policy inconsistency problem
We assume that there are two countably infinite sets in an access control state: U (the set of all possible users), and P (the set of all possible permissions). An access control state ε is a binary relation UP ⊆ U × P, which determines the set of permissions a user possesses. Note that by assuming that an access control state ε is given by a binary relation UP ⊆ U × P, we are not assuming permissions are directly assigned to users; rather, we assume only that one can calculate the relation UP from the access control state.
Safety policies are used to describe safety requirements which ensure that users who should not have access do not get access. A safety policy is specified by giving a predicate on sets of executions. If conditions on (users, permissions) are satisfied, then a set U of users are prohibited from covering a set P of permissions. One example of a safety policy is an static separationof-duty (SSoD) policy. SSoD policy is considered as a fundamental principle of information security that has been widely used in business, industry, and government applications [6]. An SSoD policy typically constrains the assignment of permissions to users, which precludes any group of users from possessing too many permissions.
We first reproduce the definitions of SSoD policies from [4]. Definition 1. An SSoD policy ensures that at least k users from a user set are required to perform a task that requires all these permissions. It is formally defined as • P and U denote the set of permissions and the set of users, respectively. • UP ⊆ U × P, is a user-permission assignment relation.
where P = {p 1 , ..., p m }, U = {u 1 , ..., u n }, each p i in P is a permission, u j in U is a user, and m, n, and k are integers, such that 2 ≤ k ≤ min(m, n), where min returns the smaller value of the two. We write an SSoD policy as ssod <P, U, k>. An access control state ε satisfies an SSoD policy e = ssod <P, U, k>, which is denoted by sat e (ε). And sat E (ε) represents ε satisfies a set E of SSoD policies.
A utility policy is also specified by giving a predicate on sets of executions. If conditions on (users, permissions) are satisfied, then a set U of users are obligated to possess all the permissions in P. We now introduce the notion of strict availability (SA) policies, which is an example of utility policies that states properties about enabling access in access control. An SA policy requires that the cooperation among at most a certain number of users is necessary to perform a task.
Definition 2. An strict availability (SA) policy ensures that all size-t subsets of U are required to complete a task that requires all these permissions in P. It is formally defined as • P and U denote the set of permissions and the set of users, respectively. • UP ⊆ U × P, is a user-permission assignment relation.
Where P = {p 1 , ..., p m }, U = {u 1 , ..., u n }, each p i in P is a permission, u j in U is a user, and m, n, and t are integers, such that 1 ≤ t ≤ min(m, n), where min returns the smaller value of the two, and the variable t in size-t is used to represent the cardinality of a set. We write an SA policy as sa <P, U, t>. An access control state ε satisfies an SA policy f = sa <P, U, t>, which is denoted by sat f (ε). And sat F (ε) represents ε satisfies a set F of SA policies.
Definition 3. UCP (the Utility Checking Problem) is defined as follows: Given an access control state ε and a set F of SA policies, determining whether sat F (ε) is true. Theorem 1. UCP is in P. PROOF. Given an access control state ε and a set F of SA policies, if for each SA policy f = sa(P, U, t) in F that sat f (ε) is true, then sat F (ε) is true. In the following, we prove that sat f (ε) is true if and only if each permission p P is assigned to no less than (|U| + 1t) users in the user set U, where |U| represents the cardinality of set U.
For the "only if" part, sat f (ε) being true means that the users in each size-t subsets of U together possess all the permissions in P. Suppose, for the sake of contradiction, that sat f (ε) is true, and there exists a permission p P that is only assigned to (|U|t) users in U. Then we can find a user set U' where |U| = t, and each users in U' do not possess p. Thus sat f (ε) is false, and this contradicts the assumption; therefore, each permission p P must be assigned to no less than (|U| + 1t) users in U.
For the "if" part, if each permission p P is assigned to no less than (|U|+ 1t) users in U, then the users in each size-t user set U' will together possess p. Thus all the permissions in p will be covered by each size-t user set. In other word, the users in each size-t user set together are authorized for all permissions in P. Therefore, sat f (ε) is true.
Together with the above discussions, we now give a linear-time algorithm for determining whether sat F (ε) is true: For each SA policy sa <P, U, t> in F, and for each permission p P. One first computes the set of all users the permission p is a member of, and compares this number with (|U|+1-t). This algorithm has a time complexity of O(N U N P M), where N U is the number of users in U, N P the number of permission in P, and M is the number of SA policies. □ An availability policy ap<P, U, t> ensures that there exists a size-t subset of U that the users in this subset are required to possess all these permissions in P [4]. We now show that sa<P, U, t> is at least as restrictive as ap<P, U, t>.
Definition 4. Let P 1 and P 2 be two policies. We say that P 1 is at least as restrictive as P 2 (denoted by P 1 ≽ P 2 ) if ∀ε(sat P 1 (ε) ⇒ sat P 2 (ε)). When P 1 ≽ p 2 but not P 2 ≽ p 1 , we say that P 1 is more restrictive than P 2 (denoted by P 1 ≻ P 2 ). And when (P 1 ≽ p 2 ) ⋀ (P 2 ≽ p 1 ), we say P 1 and P 2 are equivalent (denoted by P 1 ≜ P 2 ).
By definition, the ≽ relation among all policies is a partial order. The ≻ relation among all policies is a quasi order.
Theorem 2. Given an SA policy f = sa<P, U, t>, and an availability policy g = ap<P, U, t>, f ≻ g if and only if |U| > t.
For the "if" part, if |U| > t then f ≻ g. By Definition 2, for each access control state ε that satisfies f if and only if the users in all size-t subsets of U together possess all the permissions in P, Let U' is a subset of U, that the users in U' together possess all of the permissions in P, and |U'| = t, then ε satisfies ap<P, U, t>. Therefore, ∀ε(sat f (ε) ⇒ sat g (ε)), and f ≽ g. We construct a new state ε' that satisfies g but does not satisfy f as follows: assign all permissions in P to only one user u U, but do not assign any permissions in P to any other users in U. Then we can find a user set Intuitively, SA policies are a natural complement to SSoD policies in access control. Neither SA nor SSoD by itself is sufficient to capture both safety and utility requirements. Without the utility requirement, an access control state can satisfy any SSoD policy if the state does not contain any user set that covers all the permissions needed to accomplish the sensitive task. Similarly, without the safety requirement, any SA policy can be satisfied by giving all permissions to all users, which allows each single user be able to accomplish any task. In many cases, it is desirable for an access control system to have both SSoD and SA policies. However, these policies may conflict with each other due to their opposite objectives. Therefore, a formal description of policy inconsistency is necessary to detect and resolve it.
Definition 5. CCP (the Consistency Checking Problem) is defined as follows: Given a set E of SSoD policies and a set F of SA policies, determining that whether there exists an access control state ε that sat E (ε) ⋀ sat F (ε) is true. Corollary 1. CCP is coNP-complete. PROOF. That CCP is coNP-complete follows directly from the fact that the problem of determining whether sat E (ε) is true is coNP-complete (Theorem 1 in [4]), and the problem of determining whether sat F (ε) is true is in P (Theorem 1). □ Consider the following example of SSoD and SA policies. It is not easy to check whether the policies in the set Q is consistent.
Example 1. Consider a set Q of SSoD and SA policies as follows.
We now show that the above SSoD and SA policies are inconsistent. Given any access control state ε, if sat f 2 (ε) is true, that means p 2 and p 3 must be authorized to both u 2 and u 3 . If sat f 1 (ε) is true, then p 1 must be authorized to either u 2 or u 3 . If u 2 possesses p 1 , u 2 will possess all of the permissions in {p 1 , p 2 , p 3 }, which violates both e 1 and e 2 . If u 3 possesses p 1 , u 3 will possess all of the permissions in {p 1 , p 2 , p 3 }, which violates both e 1 . Therefore, there does not exist an access control state ε that satisfies all of the four policies in Q.
In general, there may be many policy inconsistencies in a large access control policy set. Thus the following issues should be considered: (1) A large number of policy inconsistencies are possible, but many of them may be the result of a small number of policies that apply to aggregates. The key is to figure out the minimum number of policies that are responsible for the policy inconsistencies. (2) Once all the inconsistencies are known, we must determine the appropriate resolutions with little effort to resolve them, and estimate their impact on the policies. Like traditional policy conflict resolution, the theoretical resolution of policy inconsistencies is basically the same: remove some policies in the policy set. The primary difficulty is to determine which policies should be removed, and the resolution addresses the inconsistency most effectively.

Policy inconsistency resolution approaches
In this section, we provide a formal examination of policy inconsistencies resolution for the coexistence of SSoD and SA policies.

Reducing complexity
Once all the inconsistencies are known, we must find a way to resolve them. However, determining which policy to remove is difficult because there may be many policy inconsistencies. In order to simplify the resolution task, we consider as few policies as possible. Thus we reduce the complexity of reasoning about policy inconsistencies by the techniques of static pruning and minimal inconsistency cover set.

Static pruning
SSoD and SA policies can conflict with each other due to their opposite objectives. In general, not all SSoD or SA policies should be taken into account as they do not cause inconsistencies. The following theorem asserts that the special cases of SSoD(or SA) policies do not affect its compatibility with SA(or SSoD) policies. This enables us to remove them from our consideration. This greatly simplifies the problem.
For the "if" part, we show that if Q' is consistent then Q is consistent. Q' is consistent implies that there exists an access control state ε satisfies all policies in Q'. We now construct a new state ε' that satisfies both Q' and Q as follows: for each e i Q/Q', where |P i -R| >0. Add all users in U i to ε, but do not assign any permissions in P i ∩ R. In this way, ε' satisfies e i as no less than k i users in U i together having all permissions in P i , and note that adding new users will not lead to inconsistency of policies in Q'. If |U i ∩ T| = 0, not assigning any permission in P i to any user in U i will not lead to inconsistency of policies in Q', but the new state satisfies e i . For each f j Q/Q', where |U j ∩ S| < t j, add all users in U j to ε, and assign all permissions in P j to each user in U j ∩ S . Then there is at least one user u ∈ U j S in each size-t j user set in U j , as u has all the permissions in P j , thus each size-t j user set in U j together having all the permissions in P j . In this way, ε' satisfies f j , and note that adding new users, and assigning permissions to these new users will not lead to violation of policies in Q'. If |P j ∩ W| = 0 , assigning any permissions in P j to each user in U j will not lead to inconsistency of policies in Q', and thus the new state ε' satisfies f j . Therefore, Q is consistent if and only if Q' is consistent. □

Minimal inconsistency cover set
There may exist many policy inconsistencies in a policy set which contains a large number of SSoD and SA policies. But many of these inconsistencies may result from only a small number of these policies, and they may be disjoint with each other. We find the minimal inconsistency cover set is the minimal number of policies that represent a policy inconsistency. Therefore, the key question is how to organize the policy inconsistencies, so as to examine the minimum number of policies that are responsible for all the inconsistencies.
Definition 6. We define a minimal inconsistency cover (MIC) set responsible for a policy inconsistency that includes the smallest number of policies.
Note that for a policy inconsistency, there might be several policy sets that are responsible for this inconsistency. By definition, we say that a set S is an MIC set, if there does not exist another set S' responsible for this inconsistency and S' ⊂ S. We have the following property for MIC.
Theorem 4. Given any two MIC sets A and B, let P A denotes the union of permissions in all policies in A, and U A denotes the union of users in all policies in A. P B and U B have the similar meanings. Then PROOF. We assume that ( There are four cases should be considered: For case (1), there exists at least one permission p ∈ P {e 1 ,...,e m }, but p does not belong to any other policies in A. By Theorem 3, {e 1 , ..., e m } does not affect the inconsistency of other permissions in A, and thus {e 1 , ..., e m } can be removed from A. This would contradict the assertion that A is an MIC set. Moreover, there exists at least one permission p ∈ P {e 1 ,...,e n }, but p does not belong to any other policies in B. Thus {e 1 , . . . , e n } also can be removed from B. For case (2) and case (3), the proof is essentially the same as the case (1). It should be noted that there exists at least one user u belongs to the policies in {f 1 , ..., f n }, but u does not belong to any other policies in B. Thus {f 1 , ..., f n } should be removed from B by Theorem 3. For case (4), no policies can be removed from which means these policies may conflict with each other due to their opposite objectives. Therefore, these policies should be included by only one MIC set. This would contradict the assertion that A and B are two MIC sets. Together with the above discussions, given any two MIC sets, that ( We now give an algorithm to generate the MIC sets for an access control policy set. Algorithm 1 includes an underlying presumption that all SSoD and SA policies which do not cause policy inconsistencies have been removed from our consideration by using "static pruning" technique. Given a policy set Q, the algorithm first divides Q into several subsets by the step 1 to 20. By the step 21 to 27, the algorithm combines the different sets which share the permissions and users. This algorithm has a worst-case time complexity of O(mnMN), where m is the number of SSoD policies, n is the number of SA policies, M is the number of users, N is the number of permissions. The fact that CCP is intractable (coNP-complete) means that there exist difficult problem instances that take exponential time in the worst case, while efficient algorithms for CCP exist when the number of policies is not too large. MIC helps to reduce the complexity of reasoning about policy inconsistencies.
Example 2. Continuing from Example 1, we add four policies {e 3 , e 4 , f 3 , f 4 } to Q, Consider the combination of following SSoD and SA policies.

Measuring the safety-utility tradeoff
Given an MIC set for a policy inconsistency. Often, there may exist many choices for resolving this inconsistency. An interesting question for them is "which choice is optimal?". Our methodology helps policy administrators answer this question. i + +; 6: else 7: k + +; 8: continue; 9: end if 10: if MIC(Q) S k ; 26: end if 27: end for 28: return MIC(Q). Example 3. Let us consider the same policies as the one from Example 1. After removing some policies from Q, the rest of policies will be consistent with each other. For example, resolving the policy inconsistency has the following choices. Currently we lack a method for measuring the safetyutility tradeoff in policy inconsistency resolving. Removing SSoD policies result in safety loss for the whole safety requirement in Q. Similarly, Removing SA policies result in utility loss for the whole utility requirement in Q. Hence before making the choice, one must ensure that the safety loss and utility loss are limited to an acceptable level. To use our method, one must choose a measure for safety loss (S loss ) and utility loss (U loss ). Where S e 1 loss denotes the safety loss caused by removing e 1 . As is intuitive, choosing to remove the policy with higher restrictive will cause more safety (or utility) loss.
For the "only if" part, given e 1 ≽ e 2 , we show that (U 1 ⊇ U 2 ) ⋀ (k 1 ≥ k 2 + |P 1 -P 2 |) is true. Suppose, for the sake of contradiction, that ¬((U 1 ⊇ U 2 ) ⋀ (k 1 ≥ k 2 + |P 1 -P 2 |)) is true. In other words, both U 1 ⊇ U 2 and k 1 ≥ k 2 + |P 1 -P 2 | are false. Let e 1 and e 2 are two SSoD policies, where e 1 = ssod <P 1 , U 1 , k 1 >, e 2 = ssod <P 2 , U 2 , k 2 >. If U 1 ⊇ U 2 is false, then ∃u U 2 /U 1 . Assuming that sat e 1 (ε) is true, assign all the permissions in P 2 to u, and then sat e 2 (ε) is false as k 2 >1. Therefore, U 1 ⊇ U 2 is true. If k 1 ≥ k 2 + |P 1 -P 2 | is false, then k 1 < k 2 + |P 1 -P 2 |. If P 1 ⊆ P 2 , then k 1 < k 2 ⇒ k 1 ≤ k 2 -1. sat e 1 (ε) being true means that at least k 1 users in U 1 together having all the permissions in P 1 . We assume that there exist k 1 users in U 1 together having all the permissions in P 1 in ε; then there exist k 2 -1 users in U 2 together having all the permissions in P 2 as to ε (let U 1 = U 2 , and these k 1 users also have all the permissions in {P 2 -P 1 }), then sat e 2 (ε) is false. If P 1 ⊃ P 2 , let k 1 < k 2 + |P 1 -P 2 |; given an access control state ε that sat e 1 (ε) is true, for each permission in {P 2 -P 1 }, assign it to |P 1 -P 2 | different users, and these users are not assigned any other permissions in P 1 , and then k 1 -|P 1 -P 2 | users together having all the permissions in P 1 . Therefore, there exist less than k 2 users in U 2 together having all the permissions in P 2 (let U 1 = U 2 ), and therefore, sat e 2 (ε) is false. This contradicts the assumption that e 1 ≽ e 2 . Therefore, if e 1 ≽ e 2 , then (U 1 ⊇ U 2 ) ⋀ (k 1 ≥ k 2 + |P 1 -P 2 |). □ PROOF. For the "if" part, given (P 1 ⊇ P 2 ) ⋀ (U 1 ⊇ U 2 ) ⋀ (t 1 ≤ t 2 ), we show that ∀ε(sat f 1 (ε) ⇒ sat f 2 (ε)) is true. sat f 1 (ε) being true means that any size-t 1 user set U 1 from U 1 together having all the permissions in P 1 . Since and Therefore, sat f 2 (ε) is also true. For the "only if" part, given f 1 ≽ f 2 , we show that (P 1 ⊇ is true, then ∃P P 2 /P 1 . Assuming that there exists an access control state ε, and sat f 1 (ε) is true. Let P be not assigned to any user in U 2 , that does not affect sat f 1 (ε). But sat f 2 (ε) is false, as no size-t 2 user set from U 2 can together cover P 2 . Thus the assumption is false, and P 1 ⊇ P 2 is true.
If U 1 ⊂ U 2 is true, then ∃u U 2 / U 1 . We now can construct a state ε that makes sat f 2 (ε) true, but sat f 1 (ε) false. By Theorem 1, sat f (ε) being true means that each size-t user sets from U cover the permission set P. The above discussion shown that P 1 ⊇ P 2 is true, and let t 1 = t 2 . As |U 2 | + 1t 2 > |U 1 | + 1t 1 , sat f 1 (ε) is true, which contradicts the assumption, and thus U 1 ⊇ U 2 is true.
If t 1 > t 2 is true, let f 1 = sa P 2 , U 2 , t 1 . As shown above, f 1 f 1 , such as for any state ε that ¬sat f 1 (ε) ⇒ ¬sat f 1 (ε). Thus we only need to construct a state ε that sat f 2 (ε)is true, but sat f 1 (ε) is false as follows. Find a size-t 1 user set U' ⊂ U 2 , and partition P 2 into t 1 disjoint sets v 1 , . . . , v t 1 , such that the permissions in each set be assigned to each user in U', respectively. Without any one user in U' can not cover P 2 . Since t 1 > t 2 , we can find a size-t 2 user set U'' ⊂ U' that the users in U'' do not together have all the permissions in P 2 . In other words, sat f 1 (ε) is false, and sat f 1 (ε) is also false. This contradicts the assumption, and thus t 1 ≤ t 2 is true.
After computing the rank of S loss for each SSoD policy and U loss for each SA policy. A fundamental problem in inconsistency resolving is how to make the right tradeoff between safety and utility. However, it is inappropriate to directly compare safety with utility. The most important reason is that removing SSoD policies will increase the safety loss for the whole policies, but will not increase the utility gain. Similarly, removing SA policies will increase the utility loss for the whole policies, but will not increase the safety gain. For example, if we choose to remove {e 1 , e 2 } in Example 5, then S loss = 100%, U loss = 0%. And if we choose to remove {f 1 , f 2 }, then S loss = 0%, U loss = 100%.
If safety and utility cannot be directly compared, how should one consider them in a policy set for inconsistency resolution? For this, given a number of policy sets that are candidates for removing, for each of which we measure its safety loss S loss and its utility loss U loss . We can obtain a set of (S loss , U loss ) pairs, one for each set. An ideal (but unachievable) choice will have the smallest S loss and U loss . For this, we need to be able to compare two different (S loss , U loss ) pairs. Definition 9. Given two pairs (S loss , U loss ) 1 , and (S loss , U loss ) 2 , we define (S loss , U loss ) 1 ≤ (S loss , U loss ) 2 if and only if (S 1 loss ≤ S 2 loss ) ∧ (U 1 loss ≤ U 2 loss ). And (S loss , U loss ) 1 < (S loss , U loss ) 2 if and only if (S 1 loss < S 2 loss ) ∧ (U 1 loss < U 2 loss ). Definition 10. Let A and B be two policy sets; removing A will caused (S loss , U loss ) A , and removing B will caused (S loss , U loss ) B . We say that the choice of removing A is at least as optimal as removing B (denoted by (S loss , U loss ) A ⊵ (S loss , U loss ) B ) if (S loss , U loss ) A ≤ (S loss , U loss ) B . And the the choice of removing A is better than removing B (denoted by (S loss , U loss ) A ⊳ (S loss , U loss ) B ) if (S loss , U loss ) A <(S loss , U loss ) B . Obviously, (S loss , U loss ) S 1 < (S loss , U loss ) S 3 < (S loss , U loss ) S 5 , and (S loss , U loss ) S 2 < (S loss , U loss ) S 4 < (S loss , U loss ) S 5 . Thus S 1 and S 2 are two ideal choices to resolve the policy inconsistency.

Prioritized-based resolution
The notion of priority is very important in the study of knowledge based systems, since inconsistencies have a better chance to be resolved. The following subsections present two prioritized-based approaches to deal with policy inconsistencies. We first present the possibilistic logic approach, which selects one consistent subbase. And we then give the lexicographical inference approach, which selects several maximally consistent subbases [7]. We assume that knowledge bases Ψ are prioritized. Prioritized knowledge bases have the form n , E and F denote all the SSoD and SA policies in the system, respectively. Formulas in S E i (or S F i ) have the same level of priority and have higher priority than the ones in S E j (or S F j ) where j > i. S E 1 (or S F 1 ) contains the one which have the highest priority in Ψ, and S E m (or S F n ) contains the one which have the lowest priority in Ψ.

Possibilistic logic approach
Possibilistic logic approach selects one suitable consistent prioritized sub-base of Ψ, whereas the other policies in complement set for the subbase of Ψ Algorithm 2. GeneratePoss(Ψ) should be removed. We should extract a subbase (Ψ) from Ψ, which is made of the first x-important and consistent strata(levels): Definition 11. We define Poss(Ψ) as the set of the preferred consistent possibilistic subbase of Ψ : Poss(Ψ) = {A: A ⊆ Ψ is consistent and ∄B ⊆ Ψ is consistent where B ⊃ A}.
We now give an algorithm to compute the Poss(Ψ) for Ψ (shown in Algorithm 2). This algorithm iteratively adds the SSoD and SA policies with higher priority. Removal of the policies not in Poss(Ψ) is essential to satisfy the consistency for the other policies in Ψ. This algorithm has a best-case time complexity of O(mn), and a worst-case time complexity of O(mnM2 N ), wherem is the number of SSoD policies, n is the number of SA policies, M is the number of users, and N is the number of permissions.
Example 5. Consider the combination of following SSoD and SA policies.
By Theorems 5 and 6, we can find that e 1 ≻ e 2 , f 1 ≻ f 2 .
Therefore, the removal of f 3 is an optimal choice to resolve the policy inconsistency.

Lexicographical inference approach
The possibilistic way of dealing with inconsistency is not entirely satisfactory since it only considers the first ximportant consistent formulas having the highest priority. However, the less certain formulas may be not responsible for inconsistencies that should also be taken into account. The idea of lexicographical inference approach is to select not only one consistent subbase but several maximally consistent subbases. Obviously, the lexicographical inference is more expensive than the possibilistic logic.
Definition 12. A consistent subbase A ⊆ Ψ is said to be lexicographically preferred to a consistent subbase B ⊆ Ψ, denoted by A ⊳ lex B, if there exists a level i(1 ≤ i ≤ m) and j(1 ≤ j ≤ n) such that: Definition 13. We define Lex(Ψ) as the set of all preferred consistent lexicographical subbases of Ψ : Lex(Ψ) = {A: A ⊆ Ψ is consistent and ∄B ⊆ Ψ is consistent, B ⊳ lex A}.
We now give an algorithm to generate Lex(Ψ) that covers all preferred consistent possibilistic subbases of Ψ. The algorithm is similar to Algorithm 2, but we add following improvements as follows. Given the knowledge bases Ψ = Ψ E ∪ Ψ F : if Poss( ) ∪ S E i or Poss( ) ∪ S F j is inconsistent, the algorithm does not stop (While in Algorithm 2, any policies in S E k , S F l will not be considered, where k > i, l > j), by repeatedly adding policies in S E k and S F l to Poss(Ψ). In the enumeration approach, the algorithm tries all possibilities. Eventually, the algorithm outputs all preferred consistent possibilistic subbases of Ψ, such as Lex(Ψ). In Example 4. There exists two lexicographically consistent subbases that A = {e 1 , e 2 , f 1 , f 2 }, B = {e 1 , f 1 , f 2 , f 3 }, then Lex(Ψ) = {A, B}.

Illustration and evaluation
Given the results shown in Section 3, we define the following approach to policy inconsistencies resolution.
1. Removing SSoD and SA policies from our consideration which do not cause inconsistencies by static pruning. 2. Generating MIC sets. 3. Consistency checking for each MIC set. 4. Extracting priorities based on safety-utility tradeoff. 5. Employing possibilistic logic (or lexicographical inference)approach

Running example
We now give a running example to show the validity of our approach for policy inconsistency resolving.
Example 6. Considering the task of ordering and paying for goods given by Clark and Wilson [6], there are four steps: (1) ordering the goods and recording the details of the order; (2) recording the arrival of the invoice and verifying that the details on the invoice match the details on the order; (3) verifying that the goods have been received and the features of the goods match the details on the invoice; (4) authorizing payment to the supplier against the invoice. We add another two steps: (5) checking the status of the task, and (6) commenting on the task. We have a permission corresponding to each step in the task. The permission set is {order, goods, invoice, payment, check, comment}. Assuming that there are eight users {alice, bob, carl, doris, eric, fox, harris, george} who prepare to accomplish this task. The policy administrator may define many policies that require safety and utility properties in this example and these policies may be inconsistent. Thus it is very important to help the policy administrators to specify reasonable access control policies without inconsistencies. Assuming that the policy administrator defines the following policies. We now implement the proposed approach to resolve the policy inconsistency problem in Q. Firstly, by Theorem 3, we find that e 4 , e 5 and f 5 can be removed from our consideration. Let Q' = {e 1 , e 2 , e 3 , f 1 , f 2 , f 3 , f 4 }, thus we only need to consider the policies in Q'. Secondly, by Algorithm 1, we can get two MIC sets: {e 1 , e 2 , f 1 , f 2 , f 3 } and {e 3 , f 4 }. Let Q A = {e 1 , e 2 , f 1 , f 2 , f 3 }, Q B = {e 3 , f 4 }. Thirdly, we check whether the policies in each MIC set are consistent, and find that the policies in Q A are inconsistent, but the policies in Q B are consistent. Thus we only need to resolve the policy inconsistency in Q A (Section 4.2 will give a more detailed description of consistency checking approach). Fourthly, we measure the safety loss for each SSoD policy and the utility loss for each SA policy. Via Theorem 5, we find that e 1 ≻ e 2 , f 1 ≻ f 2 . Thus we can have the form for prioritized knowl- . We give the method for computing the S loss and U loss for each SSoD and SA policy, respectively as follows: Let rank(e 1 ) = 2, rank(e 2 ) = 1, rank(f 1 ) = 2, and rank The results above can help the policy administrator to resolve the policy inconsistency by removing some policies, and can specify reasonable access control policies. For example, if the safety requirement is more critical than the utility requirement in this running example, the policy administrator can choose to remove f 3 , as it causes no safety loss, but 25% utility loss. Otherwise, he can choose to remove e 1 where it causes about 66.7% safety loss, but no utility loss.

Performance evaluation
In order to understand the effectiveness of our approach, we have implemented two algorithms, and performed several experiments using the running example as shown in Section 4.1. One is called improved algorithm based on our approach as discussed in above sections (employ the possibilistic logic approach), whereas the other is called straightforward algorithm discussed based on consistency checking problem [4]. The implementation of these two algorithms was written in Java. Experiments were carried out on a machine with an Intel(R) Core(TM)2 Duo CPU T5750 running at 2.0 GHz, and with DDR2 2 GB 667 Mhz RAM, running Microsoft Windows XP Professional.

Straightforward algorithm
Each time a new SSoD (or SA) policy is generated by a policy administrator, the algorithm determines whether this policy is consistent with already existing policies. If the answer to the consistency checking problem is "yes", then the new SSoD (or SA) policy is allowed to be added to the access control system. Otherwise, it will be disallowed. Finally, the generated policies are consistent. We also add the following improvements that greatly reduce the running time.
(1) Removing SSoD and SA policies from our consideration which do not cause policy inconsistencies using "static pruning" technique.
(2) Reducing the number of access control states that need to be considered. Given an access control state ε, for each SA policy f = sa<P, U, t>, ε satisfies f if and only if for each size-t set of users from U such that these users together possessing all permissions in P. One only needs to compute the set of permissions of each size-t subsets of U, and check whether it is a superset of P. There exist C t |U| size-t user sets for U. If the return for the algorithm is "no", then we know that the state ε does not satisfy f, and thus need not to be considered. By Lemma 1, for the sake of "least privilege" principle, in order to ensure sat f (ε) being true, we let each permission p P be assigned to only (|U| + 1t) users in U. This can greatly reduce the number of access control states that should be taken into consideration.
(3)Reduction to SAT: Given an SSoD policy e = ssod<P, U, k> and an access control state ε, we have shown that determining whether sat e (ε) is true is coNPcomplete problem [8]. Thus we can use the algorithms for SAT to solve this problem. The SAT solver we use is SAT4J [9]. The translation works are as follows. Given an SSoD policy e = ssod<P, U, k> and an access control state ε, for each u i U, we have a propositional variable v i . This variable is true if u i is a member of size-(k-1) user set U' ⊆ U to cover all the permissions in P. Then we have the following two kinds of constraints. For each p P, let u i 1 , u i 2 , . . . , u i x be the users who are authorized for p. We add the first constraint v i 1 + v i 2 + · · · + v i x ≥ 1, which ensures that all the permissions in P are covered by U'. There are |P| such constraints. Then we add the second constraint v 1 + v 2 + ... + v n ≤ k -1(n = |U|), which ensures that |U'| ≤ k -1. There is only one such constraint. If the return for the algorithm is "true", then we know that sat e (ε) is false; otherwise, sat e (ε) is true.
We assume that the order of the policies generating as e 1 , f 1 , e 2 , f 2 , e 3 , f 3 , e 4 , f 4 , e 5 , f 5 . Some of our experimental results are presented in Table 1. As we can see in Table  1, the SSoD and SA policies should be considered for improved algorithm is only 5. However, each time a new SSoD (or SA) policy is added, it should check whether the new policy is consistent with already existing policies in the access control system, and the total number of policies need be considered for straightforward algorithm is 1341. And the number of access control states should be considered for improved algorithm is only 324. The runtime for straightforward algorithm is 1810.4 s, but only 178.2 s for improved algorithm. The results above show that our improved algorithm solves policy inconsistencies more efficiently than straightforward algorithm. As policy inconsistencies are checked at compile time, which is not expected to happen frequently, relative slow running time may be acceptable in some situations.

Related work
We examine related work in four categories: safety analysis, utility analysis, policy conflicts, and policy inconsistencies.
Safety analysis has been the main research area in access control for several decades. Harrison et al. [10] formalized a simple safety analysis that determining whether an access control system can reach a state in which an unsafe access is allowed in the context of the well-known access matrix model. Following that, there have been various efforts in designing access control systems in which simple safety analysis is decidable or efficiently decidable, e.g., Li et al. [2] generalized safety analysis in the context of a trust management framework. They also studied the safety analysis in the context of role-based access control (RBAC), where they gave a precise definition of a family of safety analysis Table 1 Comparisons between straightforward algorithm (SA) and improved algorithm (IA) problems in RBAC. It is more general than safety analysis that is studied in the literature [6]. SoD policy has been considered as a fundamental principle of information security; the concept of SoD can be traced back to 1975 when Saltzer and Schroeder [11] took it as one of the design principles for protecting information, under the name "separation-of-privilege". Later on, SoD has been vastly studied by various researchers as a principle to avoid frauds. It has been recognized that "one of RBAC's great advantages is that SoD rules can be implemented in a natural and efficient way" [12]. Various frameworks have been developed for specifying SoD in the context of access control. However, it should be noted that most existing approaches on SoD only consider authorization constraint sets with exact two elements. We employ the definition for SoD by our previous work [8], which considers the total number of available users as a limitation factor through referring to the Jason's work [13]. In general, the problem of deciding whether a term is satisfied by a set of users is NP-complete [14]. Therefore, it comes as no surprise that directly enforcing SSoD policies is intractable (coNP-complete) [4]. Li et al. [15] seek to enforce an SSoD constraint using SMER(statically mutually exclusive roles) constraints, but provide no analysis of the complexity of computing the set of all such constraints. Chen et al. [16] study some variations on the set cover problem, and show that the RSSoD generation problem is NP-hard. Safety policy is mostly viewed as a tool for restricting access. An equally important aspect of access control is to enable access. We introduce the notion of utility policies in this paper, which state properties about enabling access in access control. Li et al. introduces the related concept of availability policies in [2,6], which discriminates whether a user always possesses certain permissions across state changes. A similar concept is resiliency policy [3], which requires an access control system to be resilient to the absence of users. Following the preliminary version of this paper, Wang and Li [17] studied resiliency in workflow authorization systems. They proposed three levels of resiliency in workflow systems, namely, static resiliency, decremental resiliency and dynamic resiliency. Unlike the work by Li et al., the availability policy in [4] is a high-level requirement, and it is expressed in terms of restrictions on permission set and user set. AS shown in Theorem 2, SA policy is strict type of availability policy. Such policies are particularly useful when evaluating whether the access control configuration of a system is ready for emergency response. When an emergency such as a natural diaster or a terrorist attack occurs, an organization may need any teams of employees to respond to the emergency.
Policy-based authorization systems are becoming more common as information systems become larger and more complex. The overall authorization policy may be defined by different entities, which may produce conflicting authorization decisions. Arbitrary rules can be used to resolve Policy conflicts, but typically a generic resolution method is defined, such as first rule wins in firewalls or denials take precedence in ASL [18]. However, resolution of policy conflicts by manual intervention of policy administrator is a slow and ad hoc process and provides no guarantee on the optimality of the resulting interoperation system. Gong et al. [19] have investigated interoperation of systems employing multilevel access control policies. They have proposed several optimization techniques for resolution of interoperation conflicts. Ferrari and Thuraisingham have identified that several conflict resolution strategies may be useful depending on the domain [20]. In the current systems, rules and policy combination algorithms are defined on a static basis during policy composition, which is not desirable in dynamic systems with fast changing environments. Apurva Mohan et al. [21] propose a framework that supports the need for changing the rule and policy combination algorithms dynamically based on contextual information and also eliminates the need to recompose policies. The resolution for policy inconsistencies differs from policy conflicts that is resolved at compile-time. That means it is a static conflict resolution which is independent of access control system environments.
Policy inconsistencies may arise between safety and utility policies due to their opposite objectives. And in many cases, it is desirable for access control system to have both of safety and utility policies. Li et al. [4] attempts to address the problem of consistency checking for safety and availability in the context of access control. Based on the consistency checking method, it can help the policy administrator to specify reasonable access control policies without policy inconsistencies. However, this approach has its own shortcomings, the computing cost is usually unacceptable, and it does not consider optimization on tradeoff between safety and utility. In this paper, we provide a formal examination of policy inconsistencies resolution for safety and utility policies, especially for the coexistence of static separation-of-duty (SSoD) policies and strict availability (SA) policies. The experimental results show the validity of our approach. The resolution for policy inconsistencies is very important for policy administrators to specify reasonable access control policies when both safety and utility policies coexists.

Conclusion and future work
In this paper, we handled policy inconsistency of safety and utility policies based on the safety-utility tradeoff in the context of access control. We formally defined the policy inconsistency for the coexistence of safety policies and utility policies, and some key formal properties that resolved policy inconsistencies. We first reduced the complexity of reasoning about policy inconsistencies by static pruning and MIC sets; we then presented a systematic method for measuring safety loss and utility loss; Finally, we evaluated the safety-utility tradeoff, and presented two prioritized-based approaches to deal with policy inconsistencies. Our work can help the policy administrators to specify reasonable access control policies.
In the future research, we intend to address the policy inconsistencies by modifying policies rather than removing policies. It is difficult because there may be many choices, and to find the best choice is a challenging work. Continuing from Example 6, removing the SSoD policy e 1 = ssod<{order, goods, invoice}, {alice, bob, carl}, 2>, or the SA policy f 3 = sa<{order, goods}, {alice, bob, carl}, 2> can both resolve the policy inconsistency. Assuming that we modify e 1 as e 1 = ssod {order, goods, invoice}, {alice, bob}, 2 , or modify f 3 as f 3 = sa {order, goods}, {alice, bob}, 2 . Then the policy inconsistency also can be resolved, and both of the safety loss and utility loss is lesser than removing e 1 or f 3 .