Skip to content

Commit f662f53

Browse files
committed
Add security and privacy questionnaire
1 parent 91af943 commit f662f53

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ As a first step, we require that detecting the availability of translation for a
277277

278278
Another way in which this API might enhance the web's fingerprinting surface is if translation and language detection models are updated separately from browser versions. In that case, differing results from different versions of the model provide additional fingerprinting bits beyond those already provided by the browser's major version number. Mandating that older browser versions not receive updates or be able to download models from too far into the future might be a possible remediation for this.
279279

280+
Finally, we intend to prohibit (in the specification) any use of user-specific information in producing the translations. For example, it would not be permissible to fine-tune the translation model based on information the user has entered into the browser in the past.
281+
280282
## Alternatives considered and under consideration
281283

282284
### Streaming input support

security-privacy-questionnaire.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# [Self-Review Questionnaire: Security and Privacy](https://w3ctag.github.io/security-questionnaire/)
2+
3+
> 01. What information does this feature expose,
4+
> and for what purposes?
5+
6+
This feature exposes two main pieces of information:
7+
8+
- The availability information for each `{ sourceLanguage, targetLanguage }` pair, so that web developers know what translations are possible and whether such translations will require the user to download a potentially-large language pack.
9+
10+
- The actual results of translations, which can be dependent on the language packs or translation models.
11+
12+
> 02. Do features in your specification expose the minimum amount of information
13+
> necessary to implement the intended functionality?
14+
15+
We believe so. It's possible that we could remove the exposure of the availability information. However, it would almost certainly be inferrable via timing side-channels. (I.e., if downloading a language pack is required, then the web developer can observe the first translation taking longer.)
16+
17+
> 03. Do the features in your specification expose personal information,
18+
> personally-identifiable information (PII), or information derived from
19+
> either?
20+
21+
No. Although it's imaginable that the translation models could be fine-tuned on PII to give more accurate-to-this-user translations, we intend to disallow this in the specification.
22+
23+
> 04. How do the features in your specification deal with sensitive information?
24+
25+
We do not deal with sensitive information.
26+
27+
> 05. Do the features in your specification introduce state
28+
> that persists across browsing sessions?
29+
30+
Yes. The downloading of language packs and translation models persists across browsing sessions.
31+
32+
> 06. Do the features in your specification expose information about the
33+
> underlying platform to origins?
34+
35+
Possibly. If a browser does not bundle its own translation models and language packs, but instead uses the operating system's functionality, it is possible for a web developer to infer information about such operating system functionality.
36+
37+
> 07. Does this specification allow an origin to send data to the underlying
38+
> platform?
39+
40+
Possibly. Again, in the scenario where translation is done via operating system functionality, such data would pass through OS libraries.
41+
42+
> 08. Do features in this specification enable access to device sensors?
43+
44+
No.
45+
46+
> 09. Do features in this specification enable new script execution/loading
47+
> mechanisms?
48+
49+
No.
50+
51+
> 10. Do features in this specification allow an origin to access other devices?
52+
53+
No.
54+
55+
> 11. Do features in this specification allow an origin some measure of control over
56+
> a user agent's native UI?
57+
58+
No.
59+
60+
> 12. What temporary identifiers do the features in this specification create or
61+
> expose to the web?
62+
63+
None.
64+
65+
> 13. How does this specification distinguish between behavior in first-party and
66+
> third-party contexts?
67+
68+
We are not yet sure. Our default course of action is to give the same capabilities to both first- and third-party contexts. It is easy to imagine use cases where this could be useful, e.g. a third party customer-support widget that provides translation functionality.
69+
70+
However, it seems likely that some of the mitigations for the [anti-fingerprinting considerations](./README.md#privacy-considerations) will require some sort of distinction between first- and third-party contexts. For example, partitioning download status, or only using the top-level site's detected language, or similar.
71+
72+
> 14. How do the features in this specification work in the context of a browser’s
73+
> Private Browsing or Incognito mode?
74+
75+
We are not yet sure. It is likely that some behavior will be different to deal with the [anti-fingerprinting considerations](./README.md#privacy-considerations). For example, if storage partitioning infrastructure is used, then this would be automatic.
76+
77+
Another possible area of discussion here is whether cloud-based translation APIs make sense in such modes, or whether they should be disabled.
78+
79+
> 15. Does this specification have both "Security Considerations" and "Privacy
80+
> Considerations" sections?
81+
82+
There is no specification yet, but there is a [privacy considerations](./README.md#privacy-considerations) section in the explainer.
83+
84+
We do not anticipate significant security risks for this feature at this time.
85+
86+
> 16. Do features in your specification enable origins to downgrade default
87+
> security protections?
88+
89+
No.
90+
91+
> 17. What happens when a document that uses your feature is kept alive in BFCache
92+
> (instead of getting destroyed) after navigation, and potentially gets reused
93+
> on future navigations back to the document?
94+
95+
Ideally, nothing special should happen. In particular, `LanguageTranslator` and `LanguageDetector` objects should still be usable without interruption after navigating back. We'll need to add web platform tests to confirm this, as it's easy to imagine implementation architectures in which keeping these objects alive while the `Document` is in the back/forward cache is difficult.
96+
97+
(For such implementations, failing to bfcache `Document`s with active `LanguageTranslator` or `LanguageDetector` objects would a simple way of being spec-compliant.)
98+
99+
> 18. What happens when a document that uses your feature gets disconnected?
100+
101+
As with the previous question, nothing special should happen. As with the previous question, it's easy to imagine implementations where this is difficult to implement. We may need to add a check in the specification to prevent such usage, if prototyping shows that the difficulty is significant.
102+
103+
> 19. What should this questionnaire have asked?
104+
105+
Seems fine.

0 commit comments

Comments
 (0)