Conversation

Replying to and
It steals precious bits in the pointers from other use cases to stick an ~16-bit MAC there. Actual size varies quite a bit based on address space size / page table depth, pointer tagging, etc. They had to come up with faster cryptography for generating tiny little MACs for it.
1
1
There are a few different keys (not directly accessible) and they sign a pair of values: pointer and a value chosen by the code to differentiate between different pointers based on something like their own address, a type hash, etc. It doesn't actually need to be a real pointer.
1