Hello,

>> One does one keep informed about this? Where do I sign up?
> 
> That's a good question. You can subscribe to the wiki page that I
> linked to, follow this mailing list, and follow Planet GNOME. I'm sure
> that there will be traffic on this topic once we make progress.

Done, thanks. It seems to me there is no specific place to discuss the 
relationships between sandboxing and "data sharing models" at the moment. I 
don't want to just keep in touch, in a sense, but I'm very willing to 
contribute time and effort (including coding stuff) to make sandboxed apps 
happen. I happen to be paid to do exactly that (though at the "research 
prototype" level of quality, not production-ready code).

Questions that come to mind are: should there be a specific place to discuss 
sandboxing and its implications (seems to me all the interested parties are 
already GNOME devs, except maybe for Dan Walsh and Ikey Doherty)? Is this ML ok 
to use? Do you welcome contributors external to GNOME? The question is maybe a 
bit stupid, but I've had bad experiences with Ayatana and I wouldn't want 
people to think that I'm a guy coming out of nowhere stepping on their toes and 
contributing nothing useful.


> I don't think we've fully decided what kind of mode we'll use for
> "sharing". You're right that it could be purely about publishing, or
> sharing between people. Another model is that sharing becomes the
> generic action for passing data between apps, or between apps and
> devices: eg. a document viewer could say "share this document with my
> printer".

I've been browsing through the desktop-devel archives and found a post by Ikey 
about sandboxing apps, it seems you guys discussed already quite a bunch of 
things related to how Portals operate. I now understand better what you meant 
by using a Share mechanism.

Basically I think the following principles must hold true to ensure a mechanism 
to share/access data cannot be abused by a sandboxed app:
- there must be an end-to-end trusted path between the user's input and the 
system (hear, OS or compositor) and between the system and output to the user
- or there must be some form of indirection outside of the app's control to 
modify / request system/user data

Contrarily to Ikey's proposal, I think a lot of this can be achieved 
transparently for app developers (though probably not all of it). For instance 
for file dialogs I'm quite confident that all apps that only using the standard 
features of the GtkFileChooserDialog class could be ported to having a 
Portal-provided dialog. I'm trying right now to write a subclass that turns 
every method into a DBus call for a server to recompose the dialog on its end 
(which is not w/out security implications e.g. DoS attacks but let's leave this 
aside for now). With such a dialog, the provider could just do a mount bind to 
the selected file in the sandbox and then return the filename for the app to 
transparently open the file. Of course many apps would still fail because they 
do non-standard stuff, but at least apps that behave properly would avoid 
rewriting with a new API. All it takes is linking to a new GTK+ lib.

The print dialog could work likewise since you'd normally get a Print dialog 
(https://developer.gnome.org/gtk3/stable/GtkPrintUnixDialog.html for Linux at 
least). So, adding an indirection such as "Share with printer" that then pops 
the dialog may be unnecessary for this case?

Now, it seems very easy when looking at apps outputing some information for 
some other component of the system. All you need is them to use an API that 
opens a DE-controlled GUI. Likewise the very basic file opening use case maps 
very well. I'm just starting to think about more complex file usage models, and 
about how to support them. For instance some apps naturally open and process 
large amounts of files. A music player typically wants to scan entire folders 
for relevant files. If you take Exaile's collection manager 
(http://sidi.mupuf.org/files/exaile-collection.png), this could probably be 
made into a third-party dialog/widget* that exposes folders, and restricted to 
a specific mime type or read-only access with just a few clicks. If that was 
proposed as a GTK widget then apps could be tempted to outsource this aspect to 
the GTK widget and these apps could then be sandboxed without disruption?

Other typical use/cases are when a user processes some data from one app to 
another (e.g. download an image, crop/modify it, include it into a document). 
In this case a generic "Share with ... app" mechanism may be more powerful and 
nicer than the current save file to FS, open next app, open file in app, save 
modified file, etc. workflow. The hardest use case for me so far is when you 
manipulate some file in two apps at a time (maybe typing some document in an 
editor and then looking at the outcome in a viewer). The apps would need to 
share their sandbox, or to read and write simultaneously on the FS or use IPC.

Even more annoying use cases: assume I have a browser/music player (typical 
apps that use DBus to redirect you to a running instance when you relaunch 
them) running in a sandbox and launch a new instance of it. Should I be 
redirect to the existing app or should a new / separated process open up? 
Typically for a browser you might want to manage different profiles so you can 
visit your bank website without worries, while for the music player you rarely 
want two instances.

I don't think it should be up to users to decide what to sandbox or how apps 
should behave. First because they have no clue what security risks exist out 
there (which I wouldn't blame them for :) ) and second because they like to 
stick to defaults, so an optional sandbox would just accumulate dust in the 
corners of their OS, for most of them. That's why I'm interested in first 
finding out whether we can design general interactions / APIs that fit the vast 
majority of apps out there and for which we can write sensible default 
policies. If that fails then we can fallback to optional sandboxing that's more 
constraining on the user and app developer.

Would you like me to put these down on a wiki page so we can extend and find 
for which use cases problems arise? This would also reduce the risk of the 
existing discussions being lost, should other people jump in the train and 
contribute ideas.

Thanks,
--
Steve Dodier-Lazaro
PhD student in Information Security
University College London
Dept. of Computer Science
Malet Place Engineering, 6.07
Gower Street, London WC1E 6BT
OpenPGP : 1B6B1670
________________________________________
From: Allan Day <allanp...@gmail.com>
Sent: 01 April 2014 09:49
To: Dodier-Lazaro, Steve
Cc: gnome-shell-list@gnome.org; desktop-devel-l...@gnome.org; 
gnome-keyring-l...@gnome.org
Subject: Re: Request for comments on security of authentication/authorisation 
UIs

Dodier-Lazaro, Steve <s.dodier-lazaro...@ucl.ac.uk> wrote:
...
>> I'm afraid we don't currently have a clear plan for how all the pieces
>> will fit together, but we do have ideas and are looking to develop a
>> concrete plan for the UX in the near future.
>
> One does one keep informed about this? Where do I sign up?

That's a good question. You can subscribe to the wiki page that I
linked to, follow this mailing list, and follow Planet GNOME. I'm sure
that there will be traffic on this topic once we make progress.

>> One relevant area is
>> sharing [1], as the UX mechanism through which it is possible to share
>> data between applications.
>
> Interesting. It seems these UIs play a specific goal though, maybe better 
> coined
> as "Publishing" to specific destinations made compatible one by one. There are
> many different models for how an app may process the user's data and how you 
> could
> combine apps. I've been trying to think of sandboxing in terms that don't 
> involve
> me having to figure out / describe / support these models at all but there is 
> a
> lot of research to do to find the right approach to data sharing for 
> sandboxed apps.
> There isn't a single existing product I'm happy with, but this is maybe 
> off-topic
> for now (very happy to discuss it elsewhere though).
...

I don't think we've fully decided what kind of mode we'll use for
"sharing". You're right that it could be purely about publishing, or
sharing between people. Another model is that sharing becomes the
generic action for passing data between apps, or between apps and
devices: eg. a document viewer could say "share this document with my
printer".

Allan

_______________________________________________
gnome-shell-list mailing list
gnome-shell-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gnome-shell-list

Reply via email to