Skip to content

Commit 4bab4e0

Browse files
authored
Privacy implications and implementation considerations (#587)
* Privacy implications and implementation considerations * Add people to ack section
1 parent b8dc551 commit 4bab4e0

File tree

3 files changed

+122
-2
lines changed

3 files changed

+122
-2
lines changed

images/approve.jpg

143 KB
Loading

images/scan.jpg

143 KB
Loading

index.html

Lines changed: 122 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
<style>
114114
table.simple { border: 1px solid #000; }
115115
table.simple td { border-right: 1px solid #000; }
116+
img { width: 100%; height: auto }
116117
</style>
117118
</head>
118119

@@ -4380,6 +4381,125 @@ <h3>Parsing content</h3>
43804381
[[RFC2048]] and [[RFC2046]].
43814382
</p>
43824383
</section>
4384+
<section> <h3>Privacy implications and implementation considerations</h3>
4385+
<p>
4386+
The comparison to barcodes or QR codes is appropriate because NFC tags
4387+
are another non-human-readable method of exchanging data and sharing
4388+
them can have unforeseen privacy and security implications. For a web
4389+
site to read a QR code, a piece of interruptive UI must be used (the
4390+
camera) which captures an image and makes it apparent that the contents
4391+
of this image (including the QR code) will be available to the web page,
4392+
making it clear to the user that scanning is being performed.
4393+
</p>
4394+
<p>
4395+
Scanning a tag with NFC requires the user to place the scanning device
4396+
(e.g. phone) in close proximity to the NFC tag.
4397+
</p>
4398+
<p>
4399+
Scanning a tag when a Web NFC scan is not active, triggers the host OS
4400+
handling. Thus launching URLs and apps from scanning a NFC tag is not
4401+
handled and supported by Web NFC itself.
4402+
</p>
4403+
<p>
4404+
Furthermore, Web NFC scanning needs to be activated from a user interaction,
4405+
and scanning is paused when the web site is not in focus or the device
4406+
screen turns off (i.e. is not unlocked). This is put in place so that
4407+
accidental scans do not happen.
4408+
</p>
4409+
<p>
4410+
Web NFC further recommends that the implementation makes it very clear
4411+
UX-wise to the user that data will be scanned when placing the scanning
4412+
device in close proximity to a NFC tag - basically mimicking the UX flow
4413+
of scanning a QR code.
4414+
</p>
4415+
<p>
4416+
There are many options for doing so, like playing back a sound or showing
4417+
some persistent UI while the scanning can happen, for instance a modal
4418+
dialog with the ability to cancel at any point.
4419+
</p>
4420+
<img src="images/scan.jpg">
4421+
<p>
4422+
An implementation could also show the data that is about to be uploaded,
4423+
postpone sharing the read data until the user OK'd it and even show some
4424+
UI allowing the user to select which records to share.
4425+
</p>
4426+
<img src="images/approve.jpg">
4427+
<section> <h4>Reading and writing during a scan</h4>
4428+
<p>
4429+
When the user scans a tag, at that point the web application has access
4430+
to read the data on the tag, and in case it is not read-only, also to
4431+
write data to the tag. Consumer stickers for private usage (e.g. in the
4432+
maker community) are often unlocked (read + write), whereas commercial
4433+
deployment of NFC are read-only.
4434+
</p>
4435+
<p class="note">
4436+
An older protocol SNEP (Simple NDEF Exchange Protocol) allowed active
4437+
devices (e.g. a phone) to receive NDEF data from another active device,
4438+
but it is unsupported by Web NFC and it is currently being deprecated
4439+
on supported native platforms.
4440+
</p>
4441+
<p class="note">
4442+
A newer protocol TNEP (Tag NDEF Exchange Protocol) allows bidirectional
4443+
communication between a scanner device (e.g. phone) and actively powered
4444+
device like an IOT device. It is currently unsupported by Web NFC, and
4445+
furthermore it has restrictions on what input to accept and the IOT device
4446+
must ensure that the accepted records are valid.
4447+
</p>
4448+
<p>
4449+
If the tag contains privacy sensitive data, such data will be shared with
4450+
the site. Potentially, not immediately if the UX requires the user to
4451+
confirm the data exchange before doing so.
4452+
</p>
4453+
<p>
4454+
In some cases it might be obvious that the tag/device contains privacy
4455+
sensitive data, say in case it is a glucose meter which can indicate
4456+
that you, or someone in the close family, are a diabetes patient.
4457+
</p>
4458+
<p>
4459+
In other cases it might not be obvious that that can happen, but a user
4460+
might have used an app or website to write data to a tag that unknowingly
4461+
to the user encoded a user id or the like, which can later be read back
4462+
by any other site.
4463+
</p>
4464+
<p>
4465+
Private and unexpected data can also be stored in files (e.g. word
4466+
pressing documents, PDFs or camera images) which are uploaded using
4467+
the file upload API. The mitigations associated with the Web NFC API
4468+
are stronger than those associated with file upload and the data less
4469+
likely to be personally identifiable.
4470+
</p>
4471+
</section>
4472+
<section> <h4>Reading and writing during a scan</h4>
4473+
<p>
4474+
A scan of a tag might also reveal user location if the website knows
4475+
how to identify the tag and know the tags location in the real world,
4476+
like if it is mounted inside a museum. It might also be able to deduct
4477+
it somewhat as for instance FeliCa NFC tags are mostly used in Japan,
4478+
but Web NFC doesn’t reveal what tag technology is used.
4479+
</p>
4480+
<p>
4481+
This does not bring the web advertising and tracking model into the
4482+
real world, because it requires an action by the user and it is
4483+
obvious when being used and cannot be triggered in the background.
4484+
</p>
4485+
</section>
4486+
<section> <h4>Overwriting existing data</h4>
4487+
<p>
4488+
There is also the fear that writing to a NFC tag can ruin it or
4489+
“brick it”. As NFC tags were designed to be read by multiple user
4490+
applications, NDEF tags have been designed with an easy way to make
4491+
devices permanently read-only and can even be configured that way
4492+
from a factory.
4493+
</p>
4494+
<p>
4495+
NDEF is a simple exchange format for reading and writing data and
4496+
not for bi-directional communication. NFC supports multiple
4497+
communications formats based on lower tech (thus not locked as
4498+
read-only as NDEF) and none of these are supported by Web NFC.
4499+
</p>
4500+
</section>
4501+
</section>
4502+
43834503
<section> <h3>Things that users should be made aware of when using NFC</h3>
43844504
<p>
43854505
This section details some of the things that users ought to be aware
@@ -4861,8 +4981,8 @@ <h4>Multiple tags may be within the reading field at the same time</h4>
48614981
The editors would like to thank Jeffrey Yasskin, Anne van Kesteren,
48624982
Anssi Kostiainen, Domenic Denicola, Daniel Ehrenberg, Jonas Sicking,
48634983
Don Coleman, Salvatore Iovene, Rijubrata Bhaumik, Wanming Lin, Han Leon,
4864-
Ryan Sleevi, Balázs Engedy, Theodore Olsauskas-Warren and Reilly Grant
4865-
for their contributions to this document.
4984+
Ryan Sleevi, Balázs Engedy, Theodore Olsauskas-Warren, Reilly Grant,
4985+
Diego González and Daniel Appelquist for their contributions to this document.
48664986
</p>
48674987
<p>
48684988
Special thanks to Luc Yriarte and Samuel Ortiz for their initial

0 commit comments

Comments
 (0)