W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2009

[WARP] Last Call comments (1)

From: Marcin Hanclik <Marcin.Hanclik@access-company.com>
Date: Thu, 27 Aug 2009 20:06:34 +0200
To: "public-webapps@w3.org" <public-webapps@w3.org>
Message-ID: <FAA1D89C5BAF1142A74AF116630A9F2C2890C65C54@OBEEX01.obe.access-company.com>
Hi All,

Here are a couple of the Last Call comments to WARP LCWD [1].
They were already partially presented in my emails [2] and [3].

The comments below are more of architectural nature than just editorial fixes.
That is why the arguments together with the derived understanding are followed by the proposed changes to the specification. The proposed changes below are incomplete.

MOTIVATION / ARGUMENTS

The main motivation for the changes proposed below is the syntax and the underlying architecture related to the treatment of the network access - from the widget's or web application's point of view - as the resource to which access is to be controlled by some security policy.

The specification that underlies the overall widgets ecosystem, Widgets 1.0: Packaging and Configuration (further referred to as P&C) [4], defines a method to express the dependency of the widget on a resource/component, namely the <feature> element.
P&C in [5] - the definition of the <feature> element - states:

"A feature is a runtime component"

"The feature element serves as a standardized means to request the binding of an (IRI) identifiable runtime component to a widget for use at runtime."

"...a widget can attempt to access the feature identified by the feature element's name attribute."

P&C [6] states non-normatively:
"The Widgets 1.0: Access Requests specification defines a means to request access to URI-identifiable resources (e.g. resources on the Web) (see [Widgets-Access])."

On the other hand, however, WARP states [7]:
" The purpose of this specification is precisely to define the security model for network interactions from within a widget that has access to sensitive information, and to provide means for a widget to declare the need to access specific network resources so that a policy may control it."
And [8]
"A network resource is a retrievable resource of any type that is identified by a URI that has a DNS or IP as its authority."

WARP states that it addresses [9] the requirements [10] and [11].

[10] R52 Default Security Policy:

"A conforming specification MUST specify a default security policy that limits the privileges afforded to a widget at runtime. The default security policy MUST be specified in such a way that it forces a widget package to explicitly request permission to use particular device capabilities (see also the Security Declarations requirement)."

[11] R54 Security Declarations:

"A conforming specification MUST specify or recommend a means for declaring that an instantiated widget will require access to resources or services that have the potential to introduce a security risk for an end user. A conforming specification SHOULD also make it possible to externalize and associate security declarations with a particular widget package (e.g., by allowing security declarations to be securely acquired from an external trusted authority over HTTP). This MUST include a means of declaring the APIs that a widget expects to access. When possible, a conforming specification MUST specify a means to verify the authenticity and integrity of security declarations included in the widget package (e.g. by using Digital Signatures)."

One of the motivations against the @required attribute on <access> element was prompting [12], and prompting is included the current LCWD [9]. Therefore it is unclear what the argumentation against @required attribute is (this is related to the semantics of the <access> and <feature> elements as outlined below).

The above statements result in the following understanding:

1. WARP specification actually defines the syntax for expression of dependency of a widget only on network resources. So here, the name of the specification is misleading (taking into account only this point, we could require it be named "Widgets 1.0: Network Access Policy").

2. The dependency of a widget on network resources is atomic and unconditional.

3. The resource is identifiable by URI.

4. The URI-identifiable resources are not necessarily truly remote network resources.

5. Since network access introduces various risks (e.g. when roaming) the requirement [11]:

" A conforming specification MUST specify or recommend a means for declaring that  an instantiated widget will require access to resources or services that have to the potential to introduce a security risk for an end user."

seems not to be fully satisfied, since the access to network resources is unconditional in the WARP specification, whereas in reality there may be other time- and/or location-dependent aspects that could influence the decision of the WUA or its user regarding the installation or instantiation of a widget.

>From the above it is visible that the widgets family of specifications defines two families of URI-identifiable resources, one by means of <feature> element and secondly based on the <access> element.
The basic semantic difference between both approaches is that the expression of dependencies based on <feature> element is conditional (e.g. a widget may install and run without a resource being available or without the access to the resource), and based on <access> element it is unconditional (e.g. a widget will not install or run completely if the access to the network resource is not granted/available).

It should be noted that from the historical perspective the <access> element was earlier in the widget set of specifications than the <feature> element. At first sight one may get an impression that addition of the <feature> element and keeping the <access> element are parts of an unaccomplished architecture-defining operation in the widgets family of specifications.
The approach based on <feature> element seems to be more robust, e.g. it allows expression of conditional dependencies.
It is not clear why - generically - we would need both approaches. One approach, based on the <feature> element seems (as outlined as proposed change below and in [2], [3]) to be fully capable of handling the use cases that initially motivated the adoption of the <access> element.

The Device API Working Group (DAP), chartered in [13], is to define:
"Security Policy Framework, to express security policies that govern access of Web Applications and widgets to security-critical APIs".
>From the architectural point of view and in order for W3C to define a consistent set of specifications, it could be recommended to define any security-related aspects in one place, currently this work is planned in the DAP group.

The XMLHttpRequest APIs are currently excluded from the consistent approach, since access to them (or to the results the call to that API could deliver) is implicitly controlled by WARP specification.

The access to resources (also other than the network) - additionally to the access to the security-critical APIs (XMLHttpRequest API should be perceived as such) - should be governed consistently by the set of rules and policies. From this perspective, WARP could result in being an obstacle to having a clear model and architecture in the near future, since the work in DAP WG has not fully started yet and it is not clear from WARP whether the access to network or other services that could be specified by URI is meant to be programmatic (i.e. by a call to some API as planned in DAP) or is to be realized by some other means (e.g. by User Agent's interaction with some other applications).

Apart from the fact that the value of "*" is not a valid URI, the requirement for the current @uri attribute to be just a valid URI seems insufficient.
It is possible that in the future the @uri attribute or its equivalent is used for other schemes. Then further or more refined syntaxes may have to be imposed that could be incompatible with the current model based on URI syntax and @subdomains attribute. See e.g. the discussion about mailto [14] on WhatWG mailing list.

Starting with the principle "everything a widget may need from the User Agent is expressible as a feature", the specification of the dependencies based on the <feature> element seems to provide clarity and consistency. The design based on <feature> element seems naturally extensible, thus provides a good background for future work.
On the other hand the current design of <access> element and @subdomains attribute is hardly expected to be extensible for other protocols.

PROPOSED CHANGES

Given the semantic similarities (or equivalence) between:

<access uri="http://example.org" subdomains="true"/>

and e.g.:

<feature name="http://www.w3.org/widgetfeatures/networkaccess/http" required="false">
    <param name="uri" value="http://example.org"/>
    <param name="subdomains" value="true"/> </feature>

I propose the following:

1. Change the name of the specification to "Widgets 1.0: Network Access Feature" and focus on per-URI-scheme definition of the syntax dependencies and functionality.

Examples:
a)
The following feature could replace the generic network access (proposed in the LCWD as "*" for @uri attribute):

<feature name="http://www.w3.org/widgetfeatures/networkaccess" required="true" />

b)
The following features could define the http and https access

<feature name="http://www.w3.org/widgetfeatures/networkaccess/http" required="false">
    <param name="uri" value="http://example.org"/>
    <param name="subdomains" value="true"/>
    <param name="ports" value="80, 8080"/> </feature>

<feature name="http://www.w3.org/widgetfeatures/networkaccess/https" required="true">
    <param name="uri" value="https://example.org"/>
    <param name="subdomains" value="false"/>
    <param name="interface" value="XMLHttpRequest"/>
    <!-- port defaults to 443 -->
</feature>

c)
The following feature could define access to SMS feature:

<feature name="http://www.w3.org/widgetfeatures/networkaccess/sms" required="true">
    <param name="uri" value="sms:+16177166200"/> </feature>

<feature name="http://www.w3.org/widgetfeatures/networkaccess/sms" required="true">
    <param name="countrycallingcodes" value="1,48,49,34"/> </feature>

2. Rewrite parts of the specification - specifically section 3, while keeping its majority as is - to adhere to the syntax of the <feature> and <param> elements as outlined above.

3. Refrain from specifying the default policy; remove the word security from the specification (since this is to be handled in DAP).

4. Focus in the specification text only on declarative aspects of the intention of the author of the widget, leaving e.g. prompting aspects for DAP. I.e. assuming that the network access is conditional, what are the implications for the widget's code and author in case the network access is not present or its presence is dynamic? (e.g. provide a definition of the event mechanism).

5. In order to be able to define the IRI for network access feature, another document should probably be prepared that would also define the namespace for the further feature definitions (e.g. http://www.w3.org/widgetfeatures/).

6. Focus in the specification only on http and https. "subdomains" attribute / value of the parameter is valid mainly for this protocol family (also including e.g. rtsp, ftp etc.). Other schemes, like sms, tel, mms (there is no RFC for some) have their own specificities, e.g. country calling/dialing codes, shortcodes.

Thanks.

Kind regards,
Marcin

[1] http://www.w3.org/TR/2009/WD-widgets-access-20090804/
[2] http://lists.w3.org/Archives/Public/public-webapps/2009JulSep/0290.html
[3] http://lists.w3.org/Archives/Public/public-webapps/2009JulSep/0294.html
[4] http://www.w3.org/TR/widgets
[5] http://www.w3.org/TR/widgets/#the-feature-element
[6] http://www.w3.org/TR/widgets/#the-widget-family-of-specifications
[7] http://www.w3.org/TR/2009/WD-widgets-access-20090804/#introduction
[8] http://www.w3.org/TR/2009/WD-widgets-access-20090804/#definitions
[9] http://www.w3.org/TR/2009/WD-widgets-access-20090804/#design-goals-and-requirements
[10] http://www.w3.org/TR/widgets-reqs/#default-security-policy
[11] http://www.w3.org/TR/widgets-reqs/#security-declarations
[12] http://www.w3.org/2009/06/09-wam-minutes.html
[13] http://www.w3.org/2009/05/DeviceAPICharter
[14] http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/022264.html

Marcin Hanclik
ACCESS Systems Germany GmbH
Tel: +49-208-8290-6452  |  Fax: +49-208-8290-6465
Mobile: +49-163-8290-646
E-Mail: marcin.hanclik@access-company.com

________________________________________

Access Systems Germany GmbH
Essener Strasse 5  |  D-46047 Oberhausen
HRB 13548 Amtsgericht Duisburg
Geschaeftsfuehrer: Michel Piquemal, Tomonori Watanabe, Yusuke Kanda

www.access-company.com

CONFIDENTIALITY NOTICE
This e-mail and any attachments hereto may contain information that is privileged or confidential, and is intended for use only by the
individual or entity to which it is addressed. Any disclosure, copying or distribution of the information by anyone else is strictly prohibited.
If you have received this document in error, please notify us promptly by responding to this e-mail. Thank you.
Received on Thursday, 27 August 2009 18:07:21 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:33 GMT