-
Notifications
You must be signed in to change notification settings - Fork 68
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
WiP: Signed measurements #116
base: master
Are you sure you want to change the base?
Conversation
One thing I didn't attempt to spec yet, is how organisations can fetch their probes' measurements. This is of course completely unpractical and unusable, so we should provide a mechanism to fetch measurements signed by a given (set of?) pubkey(s), and do so without undermining the privacy properties of the scheme; for instance, if we have an index directly matching pubkeys to sets of measurements, it could be possible to run a timing attack against it to discover the set of probe pubkeys in the index. @hellais Is the OONI infrastructure currently in a position to attribute multiple measurements to a single probe? (As in, do we see metadata that would allow that?) If so, we can submit the pubkey alongside the measurement data (in an HTTP header?), have OONI verify the signature, and maintain an index linking pubkeys to measurements; this would not introduce new privacy concerns, and it would be easy to provide a query-by-pubkey mechanism. |
PS: I also noticed that, while |
First, thank you so much for putting this together and apologies for not getting around to reviewing it sooner. One thing to keep in mind while thinking about this is what the threat model of OONI Probe users is, which I think is to some extent addressed in our data usage policy: https://ooni.torproject.org/about/data-policy/.
It could potentially be in a position to do that. For example all mobile probes currently are registering with the orchestra registry and they have a long term secret with the registry that they can use to perform authenticated requests to any piece of OONI Probe infrastructure (though it doesn't currently do it with the measurements collector).
I think that we don't want to keep an index of this sort in a database as it will grow quite quickly out of control (we currently collect ~10k measurements per day or ~300k per month). Regarding the properties that I think are desirable from this sort of system:
In terms of privacy properties, I think our number 1 concern is:
To illustrate what I mean by this, let's take the naive example of just stamping onto every measurement of a user their ID and this ID doesn't change over time. If I download all the OONI data and In light of this, I believe, we should have as part of this scheme something that "refreshes" the IDs that we make available publicly (or does this process before publication), when the network of a given user changes, so that we cannot say user I also think we may not necessarily need a public/private key scheme, in light of the fact that we already have an authentication layer based on JWT tokens (see: above point on registry). In relation to the data storage requirements, I would be OK with storing just the "temporary IDs" that are mapped to the master users credentials which change every time the user is on a different network, as these will likely be significantly less than the measurement count and is in any case bounded by the number of clients we have and the number of networks in the world. |
Following the OONI data format session, here is a proposal for signing measurements in a format-agnostic and privacy-preserving way.
Note that this is a work-in-progress: I tried to provide rationales for all the choices I proposed, but everything in here is up for discussion, and feedback on any aspect is most definitely welcome.