Issue with semantics of the access element in WARP

2009-10-01 Thread Stephen Jolly

Hi there,

Reading through the current WARP draft, I note that the semantics of the 
 element appear to preclude an important use case (for us).


At BBC R&D one of the things we're currently working on is the control 
of personal video recorders and TV set-top boxes, from other devices on 
the home network, via web APIs.  We see mobile phones as a key client 
platform for this kind of interface.


There appears to be optimism at present that widgets (and preferably 
standardised widgets!) will provide a relatively low-fragmentation 
development environment for mobile application developers.  Given this, 
we're very keen to push the idea that widget standards should allow for 
access to the home networks to which mobile phones are increasingly 
gaining connectivity via WiFi (and perhaps, in the future, via Femtocells).


The current draft of WARP effectively prevents widgets from connecting 
to devices on home networks, because the semantics of the  
element only allow widgets to request access to URIs with authorities 
that are known to the widget publisher at the time of publication. 
Devices on home networks are generally not referenced by DNS records, 
and have unpredictable IP addresses.


Obviously requesting access to "*" would, if granted by the user agent, 
permit connections of this sort, but my suspicion is that this would be 
an inappropriate mechanism: even if user agent vendors were to permit 
this kind of universal access by widgets (and there isn't a great track 
record for this kind of generosity in the mobile world, at least), 
surely the home network and the set of all possible URI authorities are 
very different domains, security-wise?


I would love to hear opinions on this from the people on this list, most 
of whom have spent much longer thinking about these issues than I have...


S




Re: [WARP] "uri" attribute is confusing

2009-10-07 Thread Stephen Jolly

Phil Archer wrote:
The problem is finding the right amount of flexibility without making it 
too complicated or opening unwanted security holes.

...

It depends on your use cases of course.


I guess the reason I've joined this discussion is that I'm concerned 
that most of the schemes out there (including the one proposed for WARP) 
don't allow the local network to be defined as a security domain, which 
precludes use cases I care about.


The Opera widget security model has the concept of "private" addresses 
(the RFC 1918 and 3927 ranges) - I presume that this group made the 
conscious decision not to include this concept in the WARP model?


Personally, I'm not sure even the Opera model[1] (which talks about 
these "private" addresses in the context of intranets) is as flexible as 
one might like: you could make a good case that 127.0.0.0/8 and the UA 
device's own IP address(es) masked by the appropriate subnet masks 
should be added to that list.


It does all come down to the use cases though, and I guess my 
fundamental question is still whether or not widget access to resources 
on the local network is seen as important by this group.  Answers 
welcome. :-)


S

[1] http://dev.opera.com/articles/view/opera-widgets-security-model/



Re: [WARP4U] WARP with UPnP

2009-11-30 Thread Stephen Jolly
On 20 Nov 2009, at 17:12, Marcin Hanclik wrote:
> As discussed on the yesterday's call, I committed to CVS the WARP spec with 
> the section about local network (required for UPnP use cases) at:
> http://dev.w3.org/2006/waf/widgets-access-upnp/

Clearly there are usage scenarios based on technologies other than UPnP for a 
scheme that allows widgets to declare an intention to access network resources 
on the local network - simple web services discovered via mDNS/DNS-SD for 
example.

I haven't seen a lot of discussion of this issue recently, apart from Marcin's 
proposals.  If that reflects a general lack of enthusiasm, it would be useful 
to know if people's reservations are technical in nature, or if the scenarios 
in question are simply not thought to be common enough?

S




Re: [WARP4U] WARP with UPnP

2009-12-03 Thread Stephen Jolly
On 2 Dec 2009, at 13:05, Marcin Hanclik wrote:
> I am sorry for bypassing earlier comments, I want to answer them anyway asap. 
> So here comes short summary.
> 
>>> What are we trying to solve?
> Forgetting the UPnP and related stacks, the issues can be summarized as 
> follows:
> - pattern for IP addresses in URIs (we have pattern for domains, but nothing 
> for IP addresses)
> 
> and/or
> 
> - possibility to exclude local (definition needed: I proposed to leave it out 
> of scope if we cannot agree, but it could be home or corporate network or 
> private LAN etc) - network resource from being controlled with  
> element. This acts as a kind of (loosely defined) pattern for IP addresses.

Keeping things simple, the most compelling use case I can see (aka the one I 
care about...) is where the developer wants to write a widget that can access 
resources on a network with no centralised DNS or developer-predictable IP 
addresses.  This is the case for many home networks.

As a concrete example, one of my projects here at BBC R&D is to write a web API 
for networked televisions and set-top boxes that fits this use case precisely.  
We'd like widget developers to be able to access it just as easily as native 
application developers can, and the current WARP spec precludes this.

So it's not just about UPnP.

(FWIW, we're seriously considering Robin's suggestion that the BBC appoint me 
as a representative on the webapps WG, but right now I'm not a member.  
Nevertheless I can put forward some implementation suggestions if that would be 
of interest to the group.)

S




Re: [WARP4U] WARP with UPnP

2009-12-10 Thread Stephen Jolly

On 3 Dec 2009, at 11:24, Robin Berjon wrote:
> It would be really great if you were to join this group. If you are already 
> following this list, and willing to make implementation proposals, it 
> wouldn't necessarily take more of your time than it already does — probably 
> no more than an extra phone call now and then when we're discussing this 
> topic (of course, if you want to get more involved, that's fine as well!). It 
> would, however, help with the IPR thing.

OK, I'm now the BBC representative on this WG.  Don't expect the BBC to have an 
opinion on all the issues that the group discusses though. :-)

> We certainly welcome technical solutions in this area. The scope of WARP 1.0 
> was decided a while ago and since we need to ship it really shouldn't be 
> extended *but* it would not be difficult to have a separate document that 
> plugs on top of the existing one and that can be published quickly. Right now 
> a lot of the hesitation stems from the fact that we don't really have a clear 
> definition of what "local" is, so a solution that doesn't have that issue 
> will certainly be good.

Indeed, and I haven't seen strong enthusiasm for Marcin's suggestion 
(http://dev.w3.org/2006/waf/widgets-access-upnp/) that the definition of 
"local" be left to the user agent.  From my perspective the main issue with 
that proposal is that it's a bit of a recipe for unexpected behaviour on 
different platforms, so I'd like to explore the possibility of coming up with a 
stricter definition that the WG might be able to achieve consensus on.

Opera have already defined the concept of "private network" access for widgets 
(details at 
http://dev.opera.com/articles/view/opera-widgets-specification-fourth-ed/#private_network).
  I'm not sure this is a perfect match for the "local network" in the use cases 
that have been mentioned here (indeed, I doubt it was intended to be), but the 
thing I like about this approach is that it's relatively simple for both widget 
developers and end-users to understand what it means, as well as being 
straightforward for UA developers to implement.  Presumably including it in the 
WARP spec has already been considered and rejected by the WG though?

I'm tempted to think that it should be possible to come up with a similar list 
of pre-standardised IP address ranges etc that could be considered "local", and 
if there's some support for exploring this approach from the other WG members, 
I'd be more than happy to cook up a straw-man proposal (hopefully covering both 
IPv4 and IPv6) for you all to poke holes in.

S




Re: [widgets] Draft Minutes for 10 December 2009 Voice Conference

2009-12-10 Thread Stephen Jolly

On 10 Dec 2009, at 14:48, Arthur Barstow wrote:

> TWI spec: CfC to publish Candidate Recommendation
> 
>   AB: given we have addressed all of the TWI LC comments, it appears
>   the TWI spec is ready for Candidate. Any comments about that?
> 
>+1 for CR
> 
>yes!
> 
>yes

This was actually confirmation that I could hear you speaking on the conference 
call, but I am happy for the TWI spec to proceed to CR.


>   AB: anything eles on WARP spec for today?
>   ... perhaps SteveJ and Marcin can use this time
> 
>   SJ: I just send an email to the public list
> 
>   MH: I can provide some info to SJ re discussions related to the
>   "local" WARP requirement
> 
>   RB: I think Arve has ideas as well
>   ... it would be good to get some input from Opera
> 
>   SJ: any feedback on what Opera has done would be useful
> 
>We'll call in again
> 
>   Arve: I just started to read SJ'e email
>   ... I authored the doc from Opera
>   ... but not sure that feature should be supported
>   ... think defn of local should be up to the local admin
>   ... not clear what should happen with IPv6
> 
>   SJ: there is an RFC for IPv6
>   ... I'll send it to the list
>   ... IPv6 is of course more complicated

I meant that there was an RFC for IPV6 private network address space.  It's 
this one: http://tools.ietf.org/html/rfc4193

>   Arve: what's the use case for knowing what is local and what is not?
> 
>   SJ: there are some networks with no DNS or know IP addresses
>   ... but WARP requires an IP address

that should read "known", not "know"



S




[WARP] Extending access to local network resources

2010-01-14 Thread Stephen Jolly
All,

Back in December I volunteered (http://www.w3.org/2009/12/10-wam-minutes.html) 
to propose an alteration / supplement to WARP to permit widget access to 
resources on local networks with no managed DNS system.  Such resources do not 
fit into the current WARP model of listing origins in the widget's 
configuration document unless those resources have IP addresses known in 
advance to the developer.

There are a very large number of such networks in use worldwide: I believe that 
the vast majority of home networks and many wireless networks fall into this 
category.  The BBC is specifically concerned that the lack of distinction 
between local network resources and Internet resources in the current WARP 
model could prevent widgets from being able to access network resources served 
from media devices on home networks.

Anyway, the specific proposal I would like to make is for another special value 
of the "origin" attribute of the "access" element in the widget configuration 
document called "link-local" or similar, an associated special value in the 
access-request list and an associated processing rule that says that when the 
"link-local" value is specified, the user agent should grant access to network 
resources on the same subnet(s) as the user agent.

I haven't gone into more technical detail in this email because I suspect that 
there will be sufficient disagreement with the general principles laid out 
above to generate a productive discussion.  A few points, though:

1. I think that the definition of a subnet in IP versions 4 & 6 is sufficient 
to allow a meaningful definition of "link-local".

2. Users are likely to want control over which specific networks a widget is 
granted access to, rather than just a blanket "yes" or "no" permission to 
access whatever local network(s) to which the host may be connected when the 
widget is running.  I don't think that this is something that can or should be 
dealt with in the configuration of widgets.  I believe that good user 
experiences can be constructed to give the user that control, but I won't go 
into detail unless somebody asks me to.

3. I would expect most *useful* widgets that can access local network resources 
to need some kind of ability to browse the local link for resources to access.  
Again, I think that's out of scope for a WARP alteration/supplement; it's the 
sort of thing people use mDNS + DNS-SD or UPNP's SSDP for, but those aren't web 
protocols, and Robin's threatened to drag me into the DAP WG if I start talking 
about device APIs.

4. Clearly the "local network" and the "local link" are not necessarily the 
same thing.  I'm proposing a solution targeting the latter because (a) it 
actually has a useful definition and (b) I believe it to be sufficient for the 
use cases I care about.

I look forward to your comments and criticisms - in particular I would like to 
understand the holes that Arve says are opened by making a distinction between 
"local" and "remote" IP addresses.

S




Re: [WARP] Extending access to local network resources

2010-01-21 Thread Stephen Jolly
On 21 Jan 2010, at 07:18, Arve Bersvendsen wrote:
> On Thu, 14 Jan 2010 19:04:18 +0100, Stephen Jolly 
>  wrote:
>> Anyway, the specific proposal I would like to make is for another special 
>> value of the "origin" attribute of the "access" element in the widget 
>> configuration document called "link-local" or similar, an associated special 
>> value in the access-request list and an associated processing rule that says 
>> that when the "link-local" value is specified, the user agent should grant 
>> access to network resources on the same subnet(s) as the user agent.
> 
> Just so we are on the same page here, by link-local, you mean exactly what 
> (for IPv4) is defined in RFC 3927, which roughly translates to «Two devices 
> connected directly, without involvment of DHCP» - a.k.a. 169.254.0.0/16?

RFC 3927 defines a set of IPv4 addesses that are guaranteed to be either 
unreachable or assigned to other hosts on the local link.  Such hosts may have 
other addresses though, so I'm defining "link-local" to *any* address on "the 
local subnet(s)".  I believe that a user agent can determine this 
straightforwardly (by resolving the hostname in the requested resource's URL 
and comparing the routing prefix of the resulting IP address to the routing 
prefixes of the IP addresses of the host on which the user agent is running, be 
they IPv4 or IPv6 addresses).

Clearly the fact that a host can be connected to multiple networks, 
consecutively or simultaneously, needs to be taken into account when the policy 
and user interface for granting network access are implemented, as does the 
fact that some "local" networks can contain a large number of untrusted third 
parties: public WiFi hotspots or mobile data networks, for example.

>> 4. Clearly the "local network" and the "local link" are not necessarily the 
>> same thing.  I'm proposing a solution targeting the latter because (a) it 
>> actually has a useful definition and (b) I believe it to be sufficient for 
>> the use cases I care about.
> 
> Provided my understanding of link-local is in line with yours, I would prefer 
> a mechanism for accessing the local network.
> 
>> I look forward to your comments and criticisms - in particular I would like 
>> to understand the holes that Arve says are opened by making a distinction 
>> between "local" and "remote" IP addresses.
> 
> To moderate my statement a bit - it's more a concern than a risk, when you at 
> all allow access to "local network", and you have relaxed cross-domain 
> security, a maliciously crafted widget can potentially attack local 
> networking equipment such as routers. (This risk also exists on the web, but 
> is generally less practical, given that an attacker would be shooting blind 
> due to the same-origin-policy)

I agree that "link-local" security would not protect local network resources 
from maliciously crafted widgets, but I think that's unavoidable.  In this 
particular respect defining a "link-local" set of origins offers no additional 
security over simply using , I agree.  However, there are 
other respects in which additional security is provided (eg the user gains some 
control over the origins with which potentially private information can be 
shared), and there are other advantages (eg the user can be moderately 
confident that a video streaming application is only going to stream from the 
local network, rather than an expensive connection between the local network 
and the Internet).

> The other problem is one of the definition of local network not being 
> entirely clear - the archetypal definition is the IPv4 one with four reserved 
> IP ranges.  That definition breaks for IPv6, and it breaks for networks not 
> using NAT.  In order to have a useful definition, the network would have to 
> provide information about the locality of any given host a widget tries to 
> access.

I believe that the Unique Local Addresses defined by RFC 4193 are the IPv6 
equivalent to the reserved "private network" ranges in IPv4.  It might 
therefore be possible to define a set of "non-globally-routable" addresses for 
IPv4 and IPv6 similar to your definition of IPv4 private networks for Opera 
widgets 
(http://dev.opera.com/articles/view/opera-widgets-specification-fourth-ed/#private_network),
 but I think that a "link-local" restriction is a better match to my use cases.

S




[WARP] Use cases for local network access

2010-02-02 Thread Stephen Jolly
All,

As actioned in the 21st Jan teleconference, here are the use cases that have 
motivated my specific proposal for supporting local network access in the WARP 
spec (see 
http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0173.html for 
details).

1. A developer wishes to write widgets that can connect to the web API exposed 
by a network-connected television or personal video recorder (aka digital video 
recorder) on their home network.  This API allows (for example) the channel 
being viewed to be changed or the list of scheduled recordings to be modified, 
via a user interface presented by the widget.
2. A developer wishes to write widgets that can connect to the web interface 
(or API) of a home network router, in order to monitor the ADSL connection 
state, discover the external IP address of the router's NAT function, control 
the forwarding of ports to internal servers, etc.
3. A developer wishes to write widgets that can connect to the WebDAV interface 
provided by a NAS box on a home network, for the purposes of accessing or 
managing the contents of the remote filesystem.
4. A developer wishes to write widgets that can access the web interface of a 
networked security camera on a home network, for the purposes of viewing the 
images it captures.
5. A developer wishes to write widgets that can access the web API of a home 
automation system running on their home network, for the purposes of monitoring 
and controlling the devices connected to it.

Of these, I only have a direct professional interest in the first in the list.  
(Which shouldn't surprise anyone, given the organisation that I represent on 
this WG.)

S




Re: [WARP] Use cases for local network access

2010-02-04 Thread Stephen Jolly
On 4 Feb 2010, at 15:15, Arve Bersvendsen wrote:
On Tue, 02 Feb 2010 19:09:26 +0100, Stephen Jolly  
wrote:
>> As actioned in the 21st Jan teleconference, here are the use cases that have 
>> motivated my specific proposal for supporting local network access in the 
>> WARP spec (see 
>> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0173.html for 
>> details).
>> 
>> 1. A developer wishes to write widgets that can connect to the web API 
>> exposed by a network-connected television or personal video recorder (aka 
>> digital video recorder) on their home network.  This API allows (for 
>> example) the channel being viewed to be changed or the list of scheduled 
>> recordings to be modified, via a user interface presented by the widget.
> 
> During this teleconference, I was asked to elaborate my position on this 
> topic.  The advantage of creating a definition of a local network is the 
> following variant of the use case:
> 
> A developer wants to write a widget that posts whatever channel the user 
> switches to on a network-connected TV to http://μblogging.example.com/.  The 
> problem, with WARP as is that, since the network address of said TV is 
> indeterminate, the developer's only option is to allow the widget to connect 
> to any URL it wishes (specifying '*' in origin, or add a large (read: huge) 
> set of origins in order to be able to do this.

Surely the same problem exists if you remove the dependency on the blogging 
service - ie if the widget merely wants to connect to the television?

> My proposal would be to add a second attribute to the specification, a 
> boolean, such as origin-local, which would replace any IP address the user 
> agent considers to be local, link-local or even local-machine addresses.  
> Alternatively, should fine-grained distinction between the three, these could 
> alternatively be keywords in the existing origin attribute.

I would be OK with a solution along those lines, although leaving the 
definition of "local" up to the user agent still concerns me due to the 
potential impact on developers and users when the same widget behaves 
differently on different WUAs.

S




Re: [widgets] Draft Agenda for 11 February 2010 voice conf

2010-02-10 Thread Stephen Jolly
Art,

My regrets, but due to conflicts I will be unable to attend this VC, or next 
week's (assuming one is scheduled).

S

On 10 Feb 2010, at 13:29, Arthur Barstow wrote:

> Below is the draft agenda for the 11 February Widgets Voice Conference (VC).
> 
> Inputs and discussion before the VC on all of the agenda topics via 
> public-webapps is encouraged (as it can result in a shortened meeting). 
> Please address Open and Raised Issues and Open Actions before the meeting:
> 
> http://www.w3.org/2008/webapps/track/products/8
> 
> Minutes from the last VC:
> 
>  http://www.w3.org/2010/02/04-wam-minutes.html
> 
> Logistics below.
> 
> -Regards, Art Barstow
> 
> Agenda:
> 
> 1. Review and tweak agenda
> 
> 2. Announcements
> 
> a. LC of XML Signatures spec published 4 Feb:
> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0531.html
> 
> 3. Packaging and Configuration spec
> http://dev.w3.org/2006/waf/widgets/
> 
> CR Implementation Report:
> http://dev.w3.org/2006/waf/widgets/imp-report/
> 
> a. Important Test Suite Updates by Marcos
> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0485.html
> 
> b. Action-486: Create ITS test case(s) for the P&C test suite
> http://www.w3.org/2008/webapps/track/actions/486
> 
> 4. Widget Interface spec
> http://dev.w3.org/2006/waf/widgets-api/
> 
> a. API - openURL security considerations by Marcos
> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0501.html
> 
> b. TWI: comments by Cyril
> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0479.html
> 
> c. window object by Cyril
> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0476.html
> 
> 5. Access Requests Policy (WARP) spec
> http://dev.w3.org/2006/waf/widgets-access/
> 
> a. Action-490: [AB to] Work with MC, RB and Dom on creating a infrastructure 
> to test the WARP spec
> http://www.w3.org/2008/webapps/track/actions/490
> 
> 6. AOB
> 
> a. Charter renewal - please send comments to public-webapps:
> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0493.html
> 
> Comments from Scott Wilson:
> http://lists.w3.org/Archives/Public/public-webapps/2010JanMar/0525.html
> 
> 
> Logistics:
> 
> Time: 22:00 Tokyo; 16:00 Helsinki; 15:00 Paris; 14:00 London; 09:00 Boston; 
> 06:00 Seattle
> Duration: 90 minutes max
> Zakim Bridge: +1.617.761.6200, +33.4.89.06.34.99 or +44.117.370.6152
> PIN: 9231 ("WAF1");
> IRC: channel = #wam; irc://irc.w3.org:6665 ; 
> http://cgi.w3.org/member-bin/irc/irc.cgi
> Confidentiality of minutes: Public
> 
> 
>