LGTM2 for a low percentage finch experiment in M128-M130 (inclusive)
/Daniel
On 2024-07-03 22:02, Chris Harrelson wrote:
LGTM1
(probably 3 needed because this is a non-standard experiment)
On Wed, Jul 3, 2024 at 12:28 PM Kyra Seevers
<kyraseev...@chromium.org> wrote:
One point of clarification: we are intending to experiment for one
milestone (M128), but would like to request 3 milestones (M128 -
M130) in case of any delays.
Thanks so much!
On Wed, Jul 3, 2024 at 2:16 PM Kyra Seevers
<kyraseev...@chromium.org> wrote:
Update: I wanted to update the thread that WebKit left
positive indications of support for this proposal in the
request for position recently:
https://github.com/WebKit/standards-positions/issues/363.
Daniel: Thanks for the question! We will be using a
traditional Finch experiment rollout starting with Canary/Dev
in M128. I will update this thread with any changes to the
experiment that occur.
As for why we chose our keying structure: top-level site
allows us to prevent cross-site leaks and frame origin allows
us to adhere to the same-origin policy and avoid cross-frame
leaks. For example, if I have an iframe c.com <http://c.com>
embedded in both a.com <http://a.com> and b.com
<http://b.com>, keying by top-level site removes the
opportunity for cross-site tracking to occur between these two
iframes. For a visual example of this, please see the
explainer (especially Key Scenarios #2 and #3):
https://github.com/kyraseevers/Partitioning-visited-links-history?tab=readme-ov-file#key-scenarios.
Thanks all,
Kyra
On Wed, Jul 3, 2024 at 10:48 AM Daniel Bratell
<bratel...@gmail.com> wrote:
What milestones do you plan to run the experiment in?
(Also, why isn't it enough to key on frame origin? I'm
sure there is a good reason but it's not obvious.)
/Daniel
On 2024-07-02 22:42, Kyra Seevers wrote:
Intent to Experiment: Partitioning :visited links
historyPhase 2 (User-facing partitioning for
:visited links)
Contact emails
kyraseev...@chromium.org
Explainer
https://github.com/kyraseevers/Partitioning-visited-links-history
<https://github.com/kyraseevers/Partitioning-visited-links-history>
Specification
We plan to specify our solution before shipping. This
work currently falls under the wording in CSS Selectors
Level 4 <https://www.w3.org/TR/selectors-4/#link>: “UAs
may treat all links as unvisited links or implement other
measures to preserve the user’s privacy while rendering
visited and unvisited links differently.”
Summary
To eliminate user browsing history leaks, anchor elements
will be styled as :visited if and only if they have been
clicked from this top-level site and frame origin before.
On the browser-side, this means that the VisitedLinks
hashtable will now be partitioned via "triple-keying", or
by storing the following for each visited link: <link
URL, top-level site, frame origin>. By only styling links
that have been clicked on this site and frame before, the
many side-channel attacks that have been developed to
obtain :visited links styling information are now
obsolete, as they no longer provide sites with new
information about users.
Blink component
Blink>History>VisitedLinks
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EHistory%3EVisitedLinks>
Search tags
visited links
<https://chromestatus.com/features#tags:visited%20links>,
:visited selector
<https://chromestatus.com/features#tags::visited%20selector>,
partitioning history
<https://chromestatus.com/features#tags:partitioning%20history>
TAG review
https://github.com/w3ctag/design-reviews/issues/896
<https://github.com/w3ctag/design-reviews/issues/896>
TAG review status
Issues addressed
Risks
Interoperability and Compatibility
Gecko: Positive
(https://github.com/mozilla/standards-positions/issues/1040
<https://github.com/mozilla/standards-positions/issues/1040>)
WebKit: Under Review
(https://github.com/WebKit/standards-positions/issues/363
<https://github.com/WebKit/standards-positions/issues/363>)
Web developers: No signals
Other signals:
*
Positive initial signals from presentation at
WebAppSec from both Apple and Firefox
<https://github.com/w3c/webappsec/blob/main/meetings/2023/2023-06-21-minutes.md>
*
At the XS Leaks Summit, Firefox stated exploration of
:visited links partitioning in their privacy goals
for the upcoming year at the XS-Leaks Summit
*
Positive or neutral initial signals from security and
privacy researchers at the XS-Leaks summit. No
security concerns about this design. Interest in
understanding user behavior around this new model of
what constitutes a :visited link.
*
Feedback from UX that CSS extensibility is in-demand
from developers right now, and this work would pave
the way for less restricted CSS on anchor elements.
In addition, support from various developers who
believe that taking care of this long-standing
privacy leak will allow their own security and
privacy solutions to advance once history sniffing is
no longer an issue.
Ergonomics
This design is asynchronous and not used in tandem with
other APIs.
Activation
Since this is a Finch roll-out, there are no additional
activation risks.
Security
For this design we worked with the Chrome Security
Architecture team to ensure reasonable precautions were
taken against leaks of the :visited links hashtable via
renderer compromise.
WebView application risks
This experiment will not run on WebView. This feature
deals with platform-specific code and the WebView
implementation of :visited links does not integrate with
the History Database.
Goals for experimentation
Our intent is to run a Finch experiment. This user-facing
experiment will use the traditional Finch roll-out
schedule. We will utilize newly added UMA to determine
the percentage of links styled as :visited under
partitioning, as well as observe the size, efficiency,
and impact of the newly partitioned infrastructure in
comparison to the unpartitioned (original) codepaths.
Experiment Risks
As this is a Finch experiment, it is per-client rather
than per-site. The biggest potential risk to clients is a
visible change to which links are styled as :visited once
they enter the experiment. However, based on
pre-experimental metrics analysis, we believe that most
links the user sees will remain unchanged. In the event
of an issue during the experiment, we will flip our kill
switch via Finch.
Ongoing technical constraints
None
Debuggability
No DevTools support is required.
Will this feature be supported on all six Blink
platforms (Windows, Mac, Linux, ChromeOS,
Android, and Android WebView)?
No
This feature is not currently supported on iOS or Android
Webview. For iOS, this feature requires WebKit to alter
its CSS parsing to support triple-key partitioning.
Android Webview relies on an entirely different system to
populate history, so it will require a separate design.
Is this feature fully tested by
web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
No
This feature is not tested by Web Platform Tests because
the :visited selector cannot be queried via JavaScript
(https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector
<https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector>).
As a result, we can only test :visited-ness via manual
tests which rely on users visually confirming the correct
links are :visited, or unit and integration tests
internal to Chrome.
Flag name on chrome://flags
N/a
Finch feature name
PartitionVisitedLinkDatabase
Requires code in //chrome?
True
Tracking bug
https://bugs.chromium.org/p/chromium/issues/detail?id=1448609
Launch bug
https://launch.corp.google.com/launch/4330864
<https://launch.corp.google.com/launch/4330864>
Estimated milestones
Shipping on desktop
128
Shipping on Android
128
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5101991698628608?gate=4821248529137664
<https://chromestatus.com/feature/5101991698628608?gate=4821248529137664>
Links to previous Intent discussions
Intent to prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BmmbXbbLWwmRYH5SWx0%2BMWkfB2UY2miOAq4r0MZc34i_sWqBw%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BmmbXbbLWwmRYH5SWx0%2BMWkfB2UY2miOAq4r0MZc34i_sWqBw%40mail.gmail.com>
Intent to Experiment (Phase 1):
https://groups.google.com/a/chromium.org/g/blink-dev/c/U5AX0OXaxM8/m/tIGr4bJJBgAJ?utm_medium=email&utm_source=footer
<https://groups.google.com/a/chromium.org/g/blink-dev/c/U5AX0OXaxM8/m/tIGr4bJJBgAJ?utm_medium=email&utm_source=footer>
This intent message was generated by Chrome Platform
Status <https://chromestatus.com/>.
--
You received this message because you are subscribed to
the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BmmbXYy4CSMuPLY0HJuTbZt0qPz5ZUsGUToFJuCE%2BTfC86umA%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BmmbXYy4CSMuPLY0HJuTbZt0qPz5ZUsGUToFJuCE%2BTfC86umA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BmmbXbJX%2BW5m9351o8qZV56SAnsmEfDbSwTr6YHPrpQUx%3DG2Q%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BmmbXbJX%2BW5m9351o8qZV56SAnsmEfDbSwTr6YHPrpQUx%3DG2Q%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c88842b3-894d-49c6-be1a-d83f7fdae7ea%40gmail.com.