[cap-talk] Reinterpreting POLA - "Authority Must Not Exceed Trust"
David Hopwood
david.hopwood at industrial-designers.co.uk
Mon Sep 17 13:18:35 EDT 2007
Toby Murray wrote:
> On Mon, 2007-09-17 at 11:00 -0400, Jonathan S. Shapiro wrote:
>> On Mon, 2007-09-17 at 15:35 +0100, David Hopwood wrote:
>>> Toby Murray wrote:
>>>> Instead, I've found that a better definition of what we might desire is
>>>>
>>>> "the authority of each object/subject/... should not exceed that which
>>>> we trust it to wield."
>>>
>>> I don't think that switching from "needed to perform its function" to
>>> "which it is trusted to wield" is an improvement on the definition
>>> of POLA. I think it's defining something else. A program can very well
>>> satisfy POLA, and a particular user still does not trust it. [...]
Conversely, a user may trust something to a greater extent than is
justified by its intended function. So I agree with Jonathan that this
change would considerably weaken the definition of POLA.
>> More strongly: I think it's a significant weakening of the concept and a
>> misguided statement of design goal (Toby: I'm objecting to the framing,
>> not necessarily to your true goal).
>
> I think I see where the disagreement comes from. I'm not trying to
> propose a design goal. POLA might well be the strongest design goal one
> can hope for. I'm trying to propose a criterion that can be used to
> determine whether a system is secure from a particular stakeholder's
> point of view.
There are at least two problems with this:
1. This criterion is based on a stakeholder being able to make an accurate
trust assessment for every component that they depend on. It assumes that
each stakeholder has sufficient information and competence to make this
assessment. But they very often don't.
A system that follows POLA derives much of its overall security (and
reliability) from limiting the propagation of faults and exploits. That
depends on POLA being defined in terms of authority needed for intended
function, even when any particular stakeholder would have been prepared
to trust each component with more authority than it needed. IOW, it is
not true that a system will be secure if it only limits authority
according to trust, rather than according to need. If it only limits
authority according to trust, then any errors in trust assessments will
allow exploits to propagate.
2. If the authority provided to a component is less than it needs to perform
the functions requested of it, then it will fail. For effective and
usable security, it is as important to minimize failures due to
insufficient authority, as to prevent excess authority.
The default policy that we often assume when talking about
capability-based user interfaces, is based on the premise that the
actions a user tries to perform are a more accurate indication of how
much trust the user places in the components that will implement that
action, than any predetermined, static policy. If a user requests (via
a trusted path) to edit a file, then we *assume* that the user trusts
the editor instance to read and write that file. We don't separately
*ask* whether the user trusts the editor instance (which would result
in security dialog fatigue), nor do we require that the user first set
up static permissions (such as ACLs) that allow the editor program to
access any file that *might* need to be edited.
(The above policy is not the only one that can be supported by a
capability system, but it is probably a good default for single-user
desktop machines, and it's significantly better than what current
non-capability systems provide. We can additionally use VOC mechanisms
to make it easier for users to comply with some administratively decided
policy.)
--
David Hopwood <david.hopwood at industrial-designers.co.uk>
More information about the cap-talk
mailing list