3 ms·
The scheme reminds me of ARM MTE - Memory Tagging Extension, but done in software with larger tags. In MTE, every pointer has a tag in its non-address bits that
by Findecanor 5y ago
The scheme reminds me of ARM MTE - Memory Tagging Extension, but done in software with larger tags. In MTE, every pointer has a tag in its non-address bits that are checked against a tag for each object, stored in shadow memory.
This scheme does not even use the Pointer Authentication on the pointer as such but as a generic cryptographic hash function to validate a 16-bit tag in the pointer against a 32-bit tag in memory. This means that PAC is not strictly necessary for the scheme. You'd only need to be able to calculate hashes of 32-bit values (+ key) down to 16 bits and stuff them into the higher unused bits of the pointer. The PAC instructions only do that a little bit faster than otherwise.