2009/dap/policy-reqs Overview.html,NONE,1.1

Update of /sources/public/2009/dap/policy-reqs
In directory hutz:/tmp/cvs-serv32723

Added Files:
	Overview.html 
Log Message:
initial draft of policy requirements

--- NEW FILE: Overview.html ---
<!DOCTYPE html>
<html>
  <head>
    <title>Device API Policy Requirements</title>
    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
    <script src='../ReSpec.js/js/respec.js' class='remove'></script>
    <script class='remove'>
      var respecConfig = {
      specStatus: "ED",
      shortName:            "dap-policy-reqs",
      // publishDate:  "2009-10-23",
      // previousPublishDate:  "1977-03-15",
      edDraftURI:           "http://dev.w3.org/2009/dap/policy-reqs/",
      // lcEnd: "2009-08-05",
      };
    </script>
    <script src='../common/configPolicy.js' class='remove'></script>
  </head>
  <body>
    <section id='abstract'>
      These are the requirements for the Policy work undertaken by the
      DAP WG.
    </section>
    
    <section class='informative'>
      <h2>Introduction</h2>
      <p>
        This document is an editors draft and currently does not
        reflect consensus of the WG but rather is a starting point for
        further work. It is based on input documents and list
        discussion.
      </p>
    </section>

    <section class='informative'>
      <h2>Definitions</h2>
      <p>The following definitions are used in this document.</p>
      <dl>
        <dt>application</dt>
        <dd>Code that may make use of DAP APIs. This can be widgets, web
          applications running in a browser, for example. </dd>
        <dt>API<dt>
          <dd>Collection of interfaces structured in terms of methods and
            properties used by applications to access device
            functionality. Related interfaces may be grouped into
            modules. Interfaces may be defined using WebIDL. Note that
            interfaces, by themselves, are not necessarily associated with a specific
            device capability. For example, a Stream interface (providing serial read,
            write and seek functionality) may be used to interact with a local file, or
            a Bluetooth connection. Similarly, the DCCI API could be used to access a
            wide range of different device capabilities through a common set of
            interfaces.
          </dd>
        <dt>device capability</dt>
        <dd>device resource or functionality requiring access
          control. Examples of device capabilities are the ability to read a local
          file, or to discover nearby Bluetooth devices, or to send an SMS
          message.  In principle, device capabilities can be defined in a way that is
          independent of the specific APIs that an application uses to access
          them.  Note that a given API may require different
          capabilities, as in this JavaME example:
          Connector.open(&quot;file://sdcard/my_dog.jpg&quot;);

          would use a &quot;local filesystem&quot; feature, whereas

          Connector.open(&quot;btspp://<hostname>:<parameters>&quot;);

              would use a &quot;Bluetooth serial port profile&quot; feature.

        </dd> 
        <dt>feature</dt>
        <dd> is ability to use capability for a specific API</dd>
      </dl>
    </section>

    <section>
      <h2>Out of Scope</h2>
      <p>
      </p>
      <ul>
        <li>The management of security policies ... is out of scope
          (charter)</li>
        <li>Identity Revocation</li>
      </ul>
    </section>

    <section>
      <h2>Security Framework</h2>
      <section>
        <h3>Requirements</h3>
        <p>
        </p>
        <ul>
          <li>The DAP security framework MUST NOT preclude different
            authorities defining the security policy.
          </li>
          <li>Security Framework MUST be separable from policy
            statements. Note that this may be a consequence of declarative
            policy statements.</li>
          <li>The Security Framework MUST allow multiple instantiations of a web
            runtime with independent security decisions</li>
          <li>The Security Framework MUST be application language
            independent</li>
          <li>The Security Framework MUST be Javascript capable and
            define a Javascript binding</li>
          <li>It MUST be possible to have separate policy decision and
            enforcement points</li>
          <li>The DAP security model SHOULD be compatible with the HTML 5
            security model.</li>
        </ul>
      </section>
      <section class='informative'>
        <h3>Rationale</h3>
        <p>
          These may be considered assumptions, but affect the design
          decision.
        </p>
      </section>
      <section class='informative'>
        <h3>Issues</h3>
        <p>
        </p>
      </section>
    </section>
    <section>
      <h2>Policy Definition</h2>
      <section>
        <h3>Requirements</h3>
        <p>
        </p>
        <ul>
          <li>Access control policy MUST be stated in declarative manner.</li>
          <li>The DAP security framework MUST allow a flexible choice of
            policy decisions for device capability and feature
            access.</li>
          <li>It MUST be possible to declare policy in XML
            language</li>
          <li>The DAP policy language MUST define an XML syntax for
            that language.</li>
          <li>It MUST be possible to provide integrity protection and
            source authentication for policy.</li>
        </ul>
      </section>
      <section class='informative'>
        <h3>Rationale</h3>
        <p>
          These may be considered assumptions, but affect the design
          decision.
        </p>
      </section>
      <section class='informative'>
        <h3>Issues</h3>
        <p class="issue">
          Features defined according to CRUD, one feature for Create,
          Read, Update, Delete? 
        </p>
        <p class="issue">
          Feature parameters to avoid explosion of capabilities and
          features? e.g. file open with either read or write
          parameter.
          ( see
          http://lists.w3.org/Archives/Public/public-device-apis/2009Oct/att-0120/minutes-2009-10-07.html#item03 )
        </p>
      </section>
    </section>
    <section>
      <h2>User Control over Decisions</h2>
      <section>
        <h3>Requirements</h3>
        <p>
        </p>
        <ul>
          <li>User Agents MUST NOT present modal dialogs to prompt users for security
            decisions</li>
          <li>Users SHOULD have control over general configuration of security
            decisions</li>
        </ul>
      </section>
      <section class='informative'>
        <h3>Rationale</h3>
        <p>
          Prompts should be eliminated whenever possible. Many prompts do not provide
          any meaningful security because:
          <ul>
            <li>they don't provide the user with the information needed to make an
              informed security decision;</li>
            <li>the user is inclined simply to dismiss the prompt and permit the operation
              just because that's what's needed for the application to
              continue.</li>
          </ul>
        </p><p>
          If prompts are shown and dismissed as a matter of routine, then the user is
          less inclined to take any security decision seriously, which further
          undermines the effectiveness of a user-driven access control system.
        </p><p>
          There will unavoidably be situations, however, where the user is required to
          make access control decisions when web applications wish to use sensitive
          APIs. The key issue remains, therefore, and DAP needs to ensure a framework
          is provided that allows it to happen, and maximizes its effectiveness,
          rather than seeking to eliminate it altogether.
        </p><p>
          Modal prompts (i.e. prompts that block all other user interaction until
          dismissed) seriously compromise user experience and are avoidable.
        </p><p>
          Any prompt or dialog that requests a user security decision at runtime (e.g.
          at the time a sensitive action is attempted) can be non-modal if the API
          that initiates it is asynchronous. DAP APIs must be designed so that all
          operations that could potentially trigger a prompt are asynchronous.
        </p><p>
          If a sensitive operation requires some user interaction to initiate it (such
          as choosing a file to upload, or pressing the shutter on a camera), then
          this interaction can be arranged so that it is an implicit user
          authorization. Whether or not this is possible depends on the operation or
          API in question.
        </p><p>
          Given the wide range of possible valid means of eliciting user security
          decisions, DAP should be minimally prescriptive about the user experience,
          and should not assume that the same user experience is appropriate for every
          API.
        </p>
      </section>
      <section class='informative'>
        <h3>Open Issues for Resolution</h3>

        <ul>
          <li>      <p class='issue'>User authorization vs other policy authority</p>
            <p>
            <p class='issue'>
              Support for trust models other than user security decisions needed?
            </p>

            This issue is who makes security decisions; in particular whether the user
            is the sole authority for decisions (whether by configuration of settings,
            or responses to prompts, or both) or there is another authority that
            determines the rights given to an application.
            </p><p>
              Many existing ecosystems for mobile applications are based on a trust model
              in which a particular distributor (such as a network operator) certifies an
              application as trustworthy, eliminating run-time user prompts. This approach
              avoids the disadvantages of prompts, but at the expense of taking legitimate
              control away from the user. Other approaches, such as BONDI, do not
              hard-code this type of trust model, but nonetheless provide for a policy
              authority to determine an access control policy, and this policy can require
              that certain decisions are made without reference to the user.
            </p><p>
              Although the role of any access control policy, and authority over it, are
              beyond the scope of this particular issue, DAP's approach to prompting must
              take these possibilities into account.
          </li>
          <li>Granularity of user decisions
            <p class='issue'>
              What is the correct granularity of security decisions presented to
              user? Perhaps this should be stated in policy. What is the linkage to
              application logic?
            </p><p>
              This issue is whether the user is presented with a single security decision
              that covers multiple operations, or independent prompts for individual
              operations. Blanket authorization for an application to use multiple APIs,
              as often as required, eliminates run-time prompts but also may leave the
              user without the context required to make a meaningful security decision.
              Also, a user may not be prepared to give blanket approval for a certain
              operation but may instead wish to give permission in specific circumstances
              only.
            </p><p>
              DAP should not presuppose that an approach involving blanket permissions
              only (e.g. implicit granting of blanket permission by allowing installation to
              occur, or an explicit blanket permission given when the application is first
              run) is the right answer. Both approaches have advantages for different use
              cases and we should try to define a system that supports all use cases
              effectively.
            </p>
          </li>
          <li>Application control vs user agent control
            <p class='issue'>
              Does application or user agent or both determine which prompts are
              presented to user?
            </p>
            <p>
              This issue is whether the application, or the user agent, or both, have a
              role in determining the extent to which prompts may appear, and at what
              time.
            </p><p>
              Usually an application itself knows whether or not the user has implicitly
              given permission for a particular operation. For example, after a user as
              explicitly clicked the &quot;send email now&quot; button, he should not be faced with
              a dialog saying &quot;this application wishes to connect to the
              network ....&quot;. 
              The user agent, by itself, cannot tell if the application has earned the
              right to perform an operation without further explicit user acknowledgment,
              so there is an argument for the application being able to influence whether
              or not the UA intervenes with a prompt. This, of course, requires greater
              trust in the application than would be necessary if the UA intervened
              unconditionally.
            </p><p>
              DAP should determine whether or not there is a role that the application
              itself can play in how and when security decisions are elicited explicitly
              from the user.
            </p>
          </li>
        </ul>
      </section> <!-- open issues -->
    </section> <!-- user control -->
    <section>
      <h2>Identification</h2>
      <section>
        <h3>Requirements</h3>
        <p>
        </p>
        <ul>
          <li>Capabilities MUST be defined for all sensitive device resources
            and functionality.
          </li>

          <li>The security framework MUST support identifying device
            capabilities 
            independently of API using IRIs.
          </li>
          <li>The security framework MUST support access control
            decisions based on device capabilities, 
            independent of API
          </li>
          <li>The security framework MUST support access control
            decisions based on device features (one or more capabilities
            bound to a device API).
          </li>
          <li>The security framework MUST support sufficient granularity
            for sensible access control decisions.
          </li>
        </ul>
      </section>
      <section class='informative'>
        <h3>Rationale</h3>
        <p>
          Examples of device capabilities independent of API include the &quot;read
          local filesystem&quot; device capability or the &quot;geolocation&quot; device
          capability. A corresponding access control decision based on
          capability alone is a policy stating that  an application shall have
          no access to geolocation, regardless of API used.
          Examples of feature access control include a messaging API that permits
          files to be attached to messages using
          the &quot;read local filesystem&quot; device capability, or a camera API that
          permits captured photos to be geotagged,  using the
          &quot;geolocation&quot; device capability.
        </p>
        <p>
          Capabilities need to be defined portably. Examples of
          granularity - a shared file needs to be distinguishable from an
          application's private file, and a Bluetooth port needs to be distinguishable
          from a USB serial port.
        </p>
        <p>Using IRIs to identify capabilities  and features allows the 
          definition to be decentralized, allowing extensibility.
        </p>
</p>
</section>
<section class='informative'>
  <h3>Open Issues for Resolution</h3>
  <p>
  </p>
  <p class='issue'>
    Is access control at the feature level required or is access control
    at the device capability level adequate?
  </p>
  <p class='issue'>
    Define features by IRI and capabilities by string? e.g. BONDI identifies features by IRI, but defines a separate
    namespace, centrally managed, for device capabilities (e.g.
    device.io.file.read). 
  </p>
</section>
</section>
<section class='appendix'>
  <h2>Acknowledgements</h2>
  <p>
    The editors would like to extend special thanks to Nokia, OMTP
    BONDI, and PhoneGap for providing 
    the foundation of the working group's requirements discussion.
  </p>
</section>
</body>
</html>

Received on Tuesday, 27 October 2009 00:02:15 UTC