Skip to content

Spec: Reference space privacy considerations #762

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jul 22, 2019
Merged

Conversation

toji
Copy link
Member

@toji toji commented Jul 9, 2019

Describes the mitigations and checks that must be used when supporting
the various reference spaces. Pulls heavily from text originally in
privacy-security-explainer.md.

Posted as a draft because I'm not sure if I'm happy with the format yet.

@toji toji requested a review from NellWaliczek July 9, 2019 22:31
@toji toji added this to the June 2019 milestone Jul 10, 2019
@toji toji force-pushed the reference-space-privacy branch from d3dfe95 to 3b3d687 Compare July 10, 2019 18:47
@toji
Copy link
Member Author

toji commented Jul 10, 2019

@johnpallett: Can't add you as a reviewer directly, but could you take a look at this?

Copy link
Contributor

@johnpallett johnpallett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @toji comments inline.

I have a couple of general questions. The text here largely focuses on accepting or rejecting features during session creation. The original explainer spoke more about promise rejection during session creation and when creating a reference space.

  1. Are we comfortable that this approach gives sufficient direction to implementers? For example, the original explainer directed the implementer to reject the reference space request promise if the requirements for a reference space could not be met;

  2. Are implicit features covered (particularly local reference spaces?)

@toji
Copy link
Member Author

toji commented Jul 11, 2019

Thanks for the feedback, John! Left some responses and made some tweaks.

Are we comfortable that this approach gives sufficient direction to implementers? ...

This has been my primary source of angst around this text. (And #761, to a slightly lesser degree.) It comes down to a couple of things, I think:

  • There's some of these privacy principles that must be validated at runtime (are you visible and focused?) and those slot well into spec algorithms. Then there's other limits that feel more like intrinsic properties of the implementation, and as such it sounds extremely weird to ask for it to be validated in an algorithm. (ie: "If the pose will not be sufficiently rounded to prevent fingerprinting return null and abort the rest of these steps." Um, no? Because if you're not doing that then it just mean's you're not a valid implementation?) It's not as clear what the appropriate mechanism is to surface those kind of behaviors is.
  • Some of this content could/should be moved up in the document to be closer to the definition of the mechanism in question. Like, we could move the bounded-floor bounds limitations up into the section dedicated to discussing that interface easily, and it would likely read well. I worry that doing so may dilute the overall privacy message, though? When you have all of the privacy-centric dicsussion in one place like this it helps sell that it's important and gives a better mental picture of how all the limits relate rather than just being a jumble of somewhat confusing lines scattered throughout the doc?

If you have any thoughts on how to ease that tension, I'm happy to hear it!

Copy link
Contributor

@johnpallett johnpallett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[EDIT: I realized my comment was already addressed. You can ignore this!]

@toji toji force-pushed the reference-space-privacy branch from 4184f6a to bccf59e Compare July 12, 2019 22:38
@toji toji marked this pull request as ready for review July 15, 2019 22:25
Copy link
Member

@NellWaliczek NellWaliczek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits, but mostly my concern is around making those restrictions more algorithmic. For example forcing native origins to be the same isn't likely to be an intrinsic property of XR systems and is something that the UA will need to manage themselves. Similarly, limiting pose data to a specific distance from the native origin is not likely to be a feature of the underlying XR systems. These sorts of things seem like they can actually be done algorithmically as part of the requestReferenceSpace() algorithm flows.

@toji toji force-pushed the reference-space-privacy branch from e7c2f4b to bcf50a0 Compare July 19, 2019 18:50
@toji
Copy link
Member Author

toji commented Jul 19, 2019

Moved the reference space requirement bullet points around to the appropriate contexts and/or made them part of an algorthim. This feels like it "dilutes" the privacy-centric portion of the doc, because now some privacy driven limits are scattered throughout the doc, but it is probably easier for implementers this way and ultimately that's what counts.

Copy link
Member

@NellWaliczek NellWaliczek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More comments/questions!

If {{XRReferenceSpaceType/"local"}} is included in an {{XRSession}}'s [=requested features=] the user agent MUST ensure [=user intent=] to allow {{XRReferenceSpaceType/"local"}} tracking is well understood, either via [=explicit consent=] or [=implicit consent=], or the feature MUST be rejected.

Note: {{XRReferenceSpaceType/"local"}} is always included in the [=requested features=] of {{XRSessionMode/"immersive-vr"}} and {{XRSessionMode/"immersive-ar"}} sessions as a [=default feature=], as as such {{XRSessionMode/"immersive-vr"}} or {{XRSessionMode/"immersive-ar"}} sessions always need to obtain [=explicit consent=] or [=implicit consent=] to use {{XRReferenceSpaceType/"local"}} reference spaces.

<section class="unstable">
Gaze Tracking {#gazetracking-security}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we going to have a separate PR to remove the privacy sections that we've replaced with all this new text?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, a separate PR sounds best for this.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before merging, can you file that? Are we intending to do it before VR complete (looks skeptically at the calendar)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#776. And while it would be nice, I don't think this is necessary for VR complete because it should mostly entail removing redundant information.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, let's just make sure we didn't preemptively remove the 'unstable' banner from around it before we cut the next working draft.

index.bs Outdated

Note: It is suggested that points of the [=native bounds geometry=] be [=limiting|limited=] to 15 meters from the [=XRSpace/native origin=] in all directions.

Each point in the [=native bounds geometry=] MUST also be [=rounding|rounded=] sufficiently to prevent fingerprinting. For user's safety, rounded points values MUST NOT fall outside the bounds reported by the platform.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@johnpallett It just occurred to me... is rounding a sufficient mitigation here or should we also be applying fuzzing?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ping @johnpallett. If you think this is a concern, please file an issue!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blocking concerns here. Thanks @NellWaliczek

@toji
Copy link
Member Author

toji commented Jul 20, 2019

Thanks for the review! Made a partial update to hit some of the simpler changes. I'll get the remaining change on or before Monday.

@toji toji force-pushed the reference-space-privacy branch from 8931c95 to b28126f Compare July 22, 2019 20:56
@toji
Copy link
Member Author

toji commented Jul 22, 2019

Okay, everything should be addressed one way or another now. PTAL!

If {{XRReferenceSpaceType/"local"}} is included in an {{XRSession}}'s [=requested features=] the user agent MUST ensure [=user intent=] to allow {{XRReferenceSpaceType/"local"}} tracking is well understood, either via [=explicit consent=] or [=implicit consent=], or the feature MUST be rejected.

Note: {{XRReferenceSpaceType/"local"}} is always included in the [=requested features=] of {{XRSessionMode/"immersive-vr"}} and {{XRSessionMode/"immersive-ar"}} sessions as a [=default feature=], as as such {{XRSessionMode/"immersive-vr"}} or {{XRSessionMode/"immersive-ar"}} sessions always need to obtain [=explicit consent=] or [=implicit consent=] to use {{XRReferenceSpaceType/"local"}} reference spaces.

<section class="unstable">
Gaze Tracking {#gazetracking-security}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before merging, can you file that? Are we intending to do it before VR complete (looks skeptically at the calendar)

Copy link
Member

@NellWaliczek NellWaliczek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking really good! A few more small nits.

toji and others added 8 commits July 22, 2019 15:00
Describes the mitigations and checks that must be used when supporting
the various reference spaces. Pulls heavily from text originally in
privacy-security-explainer.md.
Co-Authored-By: Nell Waliczek <nhw@amazon.com>
@toji toji force-pushed the reference-space-privacy branch from 82f79b5 to 2440f62 Compare July 22, 2019 22:01
@toji toji changed the base branch from pose-spec to master July 22, 2019 22:01
@toji
Copy link
Member Author

toji commented Jul 22, 2019

Nits addressed. Thanks!

Copy link
Member

@NellWaliczek NellWaliczek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only one nit. Approving!

@toji toji merged commit 1ee2a22 into master Jul 22, 2019
@toji toji deleted the reference-space-privacy branch July 22, 2019 22:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants