-
Notifications
You must be signed in to change notification settings - Fork 49
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
Fingerprinting via machine-specific artifacts #85
Comments
Per https://www.w3.org/2021/05/13-webmachinelearning-minutes.html#t08 @huningxin will solicit input from Wasm people and will report back. |
There are some inputs from @jonathanding @jing-bao, thanks much!
|
In PR #170 we incorporated the following statement to inform implementers about this possible fingerprinting vector as well as added a pointer to this issue:
See https://webmachinelearning.github.io/webnn/#privacy This issue was discussed on our 2021-05-27 call and we decided to keep this issue open to solicit further feedback. |
[Leaving feedback on behalf of Chrome privacy reviewers, since we also would like to understand the fingerprinting abilities of this API.] Thank you for capturing the fingerprinting considerations in this section. I have a couple of additional questions:
It would also be great if you could surface recommended mitigations for implementers to minimize the fingerprinting risk in this section. |
(Renamed the issue to better reflect the broader scope of this consideration.) |
Apropos of #3 and webmachinelearning/webmachinelearning-ethics#22, an efficient matmul implementation can be fingerprinted to determine hardware capabilities.
On pre-VNNI Intel, the only efficient way to implement 8-bit multiplication is via
pmaddubsw
that produces a 16-bit result summed horizontally with saturation. I can construct matrices that test for this saturation, which indicates a pre-VNNI Intel CPU. Whereas ARM and NVidia implement signed * signed to 32-bit.Saturating addition, which should be used for accuracy lest you generate large sign errors, can be used to infer the order of operations. So
vpdpbusds
saturation tells me what order thematmul
ran in.The slowdown from using AVX512 instructions is likely detectable with timing.
In floats one can also infer order of operations from rounding. This would reveal the SIMD length and possibly variations in the compiler used to build the user agent. A cache-efficient matmul implementation reveals cache sizes via floating point order of operations.
The text was updated successfully, but these errors were encountered: