Skip to content

Commit

Permalink
Merge pull request #104 from w3c/security-privacy-issue-45
Browse files Browse the repository at this point in the history
Issue #45: Security and Privacy Considerations
  • Loading branch information
mfoltzgoogle committed Jun 3, 2015
2 parents 3a1b618 + 4b1cc8e commit c3928ca
Show file tree
Hide file tree
Showing 2 changed files with 259 additions and 13 deletions.
122 changes: 118 additions & 4 deletions Overview.src.html
Expand Up @@ -1216,14 +1216,14 @@ <h4>
"https://github.com/w3c/presentation-api/blob/gh-pages/uc-req.md#req08-power-saving-friendly">
power saving non-functional requirement</a>, the user agent must
keep track of the number of <code>EventHandler</code>s registered
to the <code>availablechange</code> event. Using this
information, implementation specific discovery of <span title=
to the <code>availablechange</code> event. Using this information,
implementation specific discovery of <span title=
"presentation-display">presentation displays</span> can be resumed
or suspended, in order to save power.
</p>The user agent must keep a <dfn>list of available presentation
displays</dfn>. According to the number of event handlers for
<code>availablechange</code>, the user agent must also keep the
list up to date by running the algorithm for <span title=
<code>availablechange</code>, the user agent must also keep the list
up to date by running the algorithm for <span title=
"algorithm-monitor-available">monitoring the list of available
presentation displays</span>.
<section>
Expand Down Expand Up @@ -1405,6 +1405,120 @@ <h2>
<a href="https://github.com/w3c/presentation-api/issues/45">ISSUE 45:
Security and privacy considerations section</a>
</p>
<h3>
Personally identifiable information
</h3>
<p>
The <code>availablechange</code> event reveals one bit of information
about the presence (or non-presence) of a <span>presentation
screen</span> typically discovered through the local area network. This
could be used in conjunction with other information for fingerprinting
the user. However, this information is also dependent on the user's
local network context, so the risk is minimized.

This comment has been minimized.

Copy link
@avayvod

avayvod Jun 5, 2015

Contributor

Isn't it the opposite? Since availability depends on the local network, it means the information about it is relevant to user's physical location (e.g. no devices available - on the road, devices available - at home)?

This comment has been minimized.

Copy link
@mfoltzgoogle

mfoltzgoogle Jun 5, 2015

Author Contributor

This statement is about identifying the user not the location. However we should note this possibility.

</p>
<p class="open-issue">
If we allow the page to filter the set of presentation screens based on
capabilities, then more bits of more information would be revealed.
This feature, if implemented, should take privacy into consideration.
See <a href="https://github.com/w3c/presentation-api/issues/9">ISSUE 9:
How to filter available screens according to the content being
presented?</a>
</p>
<p class="open-issue">
We do not want to require user permission before disclosing the
presence of a presentation display, as it is counter to the initial
purpose of improving the user experience. See <a href=
"https://github.com/w3c/presentation-api/issues/10">ISSUE 10: Is user
permission required to prompt for screen availability information?</a>
</p>
<h3>
Cross-origin access
</h3>
<p>
A <span>presentation session</span> is allowed to be accessed across
origins; the presentation URL and presentation ID used to create the
presentation are the only information needed to join a session from any
origin in that user agent. In other words, a presentation is not tied
to a particular opening origin.
</p>
<p>
This design allows controlling contexts from different domains to
connect to a shared presentation resource. The security of the
presentation ID prevents arbitrary pages from connecting to an existing
presentation.
</p>
<p>
This specification does not prohibit a user agent from publishing
information about its <span>set of presentations</span>. The group
envisions a user agent on a another device (distinct from the
controller or presentation) becoming authorized to join the
presentation, either by user action or by discovering the
presentation's URL and id.
</p>
<p class="open-issue">
This section should provide informative guidance as to what constitutes
a reasonable context for a Web page to become authorized to control a
presentation session.
</p>
<h3>
Device Access
</h3>
<p>
The presentation API abstracts away what "local" means for displays,
meaning that it exposes network-accessible displays as though they were
local displays. The Presentation API requires user permission for a
page to access any display to mitigate issues that could arise, such as
showing unwanted content on a display viewable by others.
</p>
<h3>
Temporary identifiers and browser state
</h3>
<p>
The presentation URL and presentation ID can be used to connect to a
presentation session from another browsing context. They can be
intercepted if an attacker can inject content into the controlling
page.
</p>
<p class="open-issue">
Should we restrict the API to some extent in non secure contexts?
</p>
<h3>
Incognito mode and clearing of browsing data
</h3>
<p>
The content displayed on the presentation is different from the
controller. In particular, if the user is logged in in both contexts,
then logs out of the controlling browsing context, she will not be
automatically logged out from the presenting browsing context.
Applications that use authentication should pay extra care when
communicating between devices.
</p>
<p>
The set of presentations known to the user agent should be cleared when
the user requests to "clear browsing data."
</p>
<p class="open-issue">
The spec should specify any restrictions on the presenting browsing
context when the opening browsing context is in "incognito" mode. See
<a href="https://github.com/w3c/presentation-api/issues/14">ISSUE 14:
Define user agent context for rendering the presentation</a>
</p>
<p class="open-issue">
The spec should clarify what is to happen to the set of known
presentations in "incognito" (private browsing context) mode.
</p>
<h3>
Messaging between presentation sessions
</h3>
<p>
This spec will not mandate communication protocols, but it should set
some guarantees of message confidentiality and authenticity.
</p>
<p class="open-issue">
<a href="https://github.com/w3c/presentation-api/issues/80">ISSUE 80:
Define security requirements for messaging channel between secure
origins</a>
</p>
</section>
<section>
<h2>
Expand Down
150 changes: 141 additions & 9 deletions index.html
Expand Up @@ -77,8 +77,8 @@
<h1>
Presentation API
</h1>
<h2 class="no-num no-toc" id="editor's-draft-1-june-2015">
Editor's Draft 1 June 2015
<h2 class="no-num no-toc" id="editor's-draft-3-june-2015">
Editor's Draft 3 June 2015
</h2>
<dl>
<dt>
Expand Down Expand Up @@ -302,7 +302,26 @@ <h2 class="no-num no-toc" id="table-of-contents">
</a></ol></li>
<li><a href="#security-and-privacy-considerations"><span class="secno">7 </span>
Security and privacy considerations
</a>
<ol>
<li><a href="#personally-identifiable-information"><span class="secno">7.1 </span>
Personally identifiable information
</a></li>
<li><a href="#cross-origin-access"><span class="secno">7.2 </span>
Cross-origin access
</a></li>
<li><a href="#device-access"><span class="secno">7.3 </span>
Device Access
</a></li>
<li><a href="#temporary-identifiers-and-browser-state"><span class="secno">7.4 </span>
Temporary identifiers and browser state
</a></li>
<li><a href="#incognito-mode-and-clearing-of-browsing-data"><span class="secno">7.5 </span>
Incognito mode and clearing of browsing data
</a></li>
<li><a href="#messaging-between-presentation-sessions"><span class="secno">7.6 </span>
Messaging between presentation sessions
</a></ol></li>
<li><a href="#references"><span class="secno">8 </span>
References
</a></li>
Expand Down Expand Up @@ -1053,7 +1072,7 @@ <h4 id="starting-a-presentation-session"><span class="secno">6.4.1 </span>
<p class="open-issue">
ISSUE: Do we want to distinguish the permission-denied outcome from
the no-screens-available outcome? Developers would be able to infer
it anyway from <a href="#onavailablechange"><code>onavailablechange</code></a>.
it anyway from <code>availablechange</code>.
</p>
</section>
<section>
Expand Down Expand Up @@ -1245,13 +1264,13 @@ <h4 id="the-onavailablechange-eventhandler"><span class="secno">6.4.4 </span>
In order to satisfy the <a href="https://github.com/w3c/presentation-api/blob/gh-pages/uc-req.md#req08-power-saving-friendly">
power saving non-functional requirement</a>, the user agent must
keep track of the number of <code>EventHandler</code>s registered
to the <a href="#onavailablechange"><code>onavailablechange</code></a> event. Using this
information, implementation specific discovery of <span title="presentation-display">presentation displays</span> can be resumed
to the <code>availablechange</code> event. Using this information,
implementation specific discovery of <span title="presentation-display">presentation displays</span> can be resumed
or suspended, in order to save power.
</p>The user agent must keep a <dfn id="list-of-available-presentation-displays">list of available presentation
displays</dfn>. According to the number of event handlers for
<a href="#onavailablechange"><code>onavailablechange</code></a>, the user agent must also keep the
list up to date by running the algorithm for <a href="#algorithm-monitor-available" title="algorithm-monitor-available">monitoring the list of available
<code>availablechange</code>, the user agent must also keep the list
up to date by running the algorithm for <a href="#algorithm-monitor-available" title="algorithm-monitor-available">monitoring the list of available
presentation displays</a>.
<section>
<h5 id="adding-an-eventhandler-to-onavailablechange"><span class="secno">6.4.4.1 </span>
Expand All @@ -1260,7 +1279,7 @@ <h5 id="adding-an-eventhandler-to-onavailablechange"><span class="secno">6.4.4.1
</h5>
<p>
When an event handler is added to the list of event handlers
registered for the <a href="#onavailablechange"><code>onavailablechange</code></a> event, the user
registered for the <code>availablechange</code> event, the user
agent must run the <a href="#algorithm-monitor-available" title="algorithm-monitor-available">algorithm to monitor the list of
available presentation displays</a>.
</p>
Expand All @@ -1271,7 +1290,7 @@ <h5 id="removing-an-eventhandler"><span class="secno">6.4.4.2 </span>
</h5>
<p>
When an event handler is removed from the list of event handlers
registered to the <a href="#onavailablechange"><code>onavailablechange</code></a> event, the user
registered to the <code>availablechange</code> event, the user
agent must run the following steps:
</p>
<ul>
Expand Down Expand Up @@ -1423,6 +1442,119 @@ <h2 id="security-and-privacy-considerations"><span class="secno">7 </span>
<a href="https://github.com/w3c/presentation-api/issues/45">ISSUE 45:
Security and privacy considerations section</a>
</p>
<h3 id="personally-identifiable-information"><span class="secno">7.1 </span>
Personally identifiable information
</h3>
<p>
The <code>availablechange</code> event reveals one bit of information
about the presence (or non-presence) of a <span>presentation
screen</span> typically discovered through the local area network. This
could be used in conjunction with other information for fingerprinting
the user. However, this information is also dependent on the user's
local network context, so the risk is minimized.
</p>
<p class="open-issue">
If we allow the page to filter the set of presentation screens based on
capabilities, then more bits of more information would be revealed.
This feature, if implemented, should take privacy into consideration.
See <a href="https://github.com/w3c/presentation-api/issues/9">ISSUE 9:
How to filter available screens according to the content being
presented?</a>
</p>
<p class="open-issue">
We do not want to require user permission before disclosing the
presence of a presentation display, as it is counter to the initial
purpose of improving the user experience. See <a href="https://github.com/w3c/presentation-api/issues/10">ISSUE 10: Is user
permission required to prompt for screen availability information?</a>
</p>
<h3 id="cross-origin-access"><span class="secno">7.2 </span>
Cross-origin access
</h3>
<p>
A <a href="#presentation-session">presentation session</a> is allowed to be accessed across
origins; the presentation URL and presentation ID used to create the
presentation are the only information needed to join a session from any
origin in that user agent. In other words, a presentation is not tied
to a particular opening origin.
</p>
<p>
This design allows controlling contexts from different domains to
connect to a shared presentation resource. The security of the
presentation ID prevents arbitrary pages from connecting to an existing
presentation.
</p>
<p>
This specification does not prohibit a user agent from publishing
information about its <span>set of presentations</span>. The group
envisions a user agent on a another device (distinct from the
controller or presentation) becoming authorized to join the
presentation, either by user action or by discovering the
presentation's URL and id.
</p>
<p class="open-issue">
This section should provide informative guidance as to what constitutes
a reasonable context for a Web page to become authorized to control a
presentation session.
</p>
<h3 id="device-access"><span class="secno">7.3 </span>
Device Access
</h3>
<p>
The presentation API abstracts away what "local" means for displays,
meaning that it exposes network-accessible displays as though they were
local displays. The Presentation API requires user permission for a
page to access any display to mitigate issues that could arise, such as
showing unwanted content on a display viewable by others.
</p>
<h3 id="temporary-identifiers-and-browser-state"><span class="secno">7.4 </span>
Temporary identifiers and browser state
</h3>
<p>
The presentation URL and presentation ID can be used to connect to a
presentation session from another browsing context. They can be
intercepted if an attacker can inject content into the controlling
page.
</p>
<p class="open-issue">
Should we restrict the API to some extent in non secure contexts?
</p>
<h3 id="incognito-mode-and-clearing-of-browsing-data"><span class="secno">7.5 </span>
Incognito mode and clearing of browsing data
</h3>
<p>
The content displayed on the presentation is different from the
controller. In particular, if the user is logged in in both contexts,
then logs out of the controlling browsing context, she will not be
automatically logged out from the presenting browsing context.
Applications that use authentication should pay extra care when
communicating between devices.
</p>
<p>
The set of presentations known to the user agent should be cleared when
the user requests to "clear browsing data."
</p>
<p class="open-issue">
The spec should specify any restrictions on the presenting browsing
context when the opening browsing context is in "incognito" mode. See
<a href="https://github.com/w3c/presentation-api/issues/14">ISSUE 14:
Define user agent context for rendering the presentation</a>
</p>
<p class="open-issue">
The spec should clarify what is to happen to the set of known
presentations in "incognito" (private browsing context) mode.
</p>
<h3 id="messaging-between-presentation-sessions"><span class="secno">7.6 </span>
Messaging between presentation sessions
</h3>
<p>
This spec will not mandate communication protocols, but it should set
some guarantees of message confidentiality and authenticity.
</p>
<p class="open-issue">
<a href="https://github.com/w3c/presentation-api/issues/80">ISSUE 80:
Define security requirements for messaging channel between secure
origins</a>
</p>
</section>
<section>
<h2 id="references"><span class="secno">8 </span>
Expand Down

0 comments on commit c3928ca

Please sign in to comment.