> email to blink-dev+unsubscribe@chromium.org.
> email to blink-dev+unsubscribe@chromium.org.
As for performance of the timing attack: On various recent (desktop TDP) Intel CPUs over 3GHz ranging from 4 to 12 logical cores, the estimate always finishes in under 5 seconds for me.
Even the relatively slow 1.4GHz dual core Haswell part in all of the new Chromebooks reproducibly finishes Core Estimator in ~7.5 seconds, after 4 complete core tests of varying sizes (1,2,4,3).
In my experience, CPU burn isn't much of a deterrent. There are beaconing "techniques" that involve issuing an async request in unload followed up by half second of CPU burn. If N trackers do this it really adds up :-(
In this case the CPU burn can happen in a non blocking fashion, which would surely make it even less of a deterrent--especially on desktop.
-Darin
That's clever, but hmm...It all just seems a bit gratuitous to me. I don't see why we would bother ever rejecting such a request. It's a static property we can determine before letting script run. Doesn't seem like it needs to be more than a property getter.
> If fingerprinting is the risk, we should enable that UAs have leeway about when/what to expose this information. The request*() style gives us that.
I don't see any advantages of the promise-returning request*() style over having the .cores getter throw a synchronous exception.
No more than rejected promises? Async and sync exceptions seem equivalent.