4 ms·
Unfortunately, it's an average 2x slowdown, and sometimes much higher. This is significantly slower than work from 15 years ago, such as CCured [1] (see section
by pcwalton 5y ago
Unfortunately, it's an average 2x slowdown, and sometimes much higher. This is significantly slower than work from 15 years ago, such as CCured [1] (see section 8), which was still too high to achieve widespread adoption. CCured also had the advantage of not requiring special hardware.
[1]: https://dl.acm.org/doi/pdf/10.1145/1065887.1065892 https://dl.acm.org/doi/pdf/10.1145/1065887.1065892
- Findecanor 5y agoThe 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.
- ec109685 5y agoThe variability of slowdown is quite large. Seems like these techniques could be used at least around critical program sections that deal with user data. One of the key points from the paper was the fact that it could interoperate with non-protected code well.