3 ms·
mach_absolute_time is unrelated to clock time. It's basically the number of CPU cycles since last boot, so it's more of an uptime measure. I suspect the finger
by lapcat 3y ago
mach_absolute_time is unrelated to clock time. It's basically the number of CPU cycles since last boot, so it's more of an uptime measure.
I suspect the fingerprinting aspect is more indirect: mach_absolute_time is the most accurate way to measure small differences, so if you're trying to measure subtle differences in performance between different devices on some specific task, mach_absolute_time would be the way to go.
- thealistra 3y agoYeah this is correct. Other comments seem misinformed. You can fingerprint a device using this because you know the wall clock difference and you know the previous cpu cycles. So you can assume any device with appropriately more cpu cycles may be the same device. We’re talking measurements taken from different apps using Google or Facebook sdk.
- MBCook 3y ago> It's basically the number of CPU cycles since last boot, so it's more of an uptime measure And there’s the problem. Different devices have different uptimes. If you can get not only the uptime but a very very accurate version, you’ve got a very strong fingerprint.
- VogonPoetry 3y agoConsider N devices behind a NAT. They all make requests to a service. If the service can learn the individual but current values of mach_absolute_time, then after a minimum of two requests you can likely compute N and distinguish between each device making a request. This is possible because devices never reboot at exactly the same time.
- hi-v-rocknroll 3y agoThere's also a Ruby gem that uses it for better-than-Benchmark high-precision timing. https://github.com/bwbuchanan/absolute_time/blob/master/ext/absolute_time.c#L126 https://github.com/bwbuchanan/absolute_time/blob/master/ext/... https://rubygems.org/gems/absolute_time https://rubygems.org/gems/absolute_time Yes you want this in a development environment or perhaps in some sort of macOS app for developers, but probably not in most apps without a very specific and limited need.