CHERI is an instruction set extension that adds capability-based addressing. With capability-based addressing, forgeable pointers are replaced by capabilities. Programs have to be able to show they possess an appropriate capability before they can access a memory location.
Linear capabilities are an extension of the idea of regular capabilities. Just like regular capabilities they cannot be forged. Unlike regular capabilities, they additionally cannot be copied or duplicated in any way. Linear capabilities allow us to enforce certain security principles. They can be used to implement a secure calling convention called StkTokens.
In this work we will be designing an ISA extension for CHERI so it can support linear capabilities. We define the semantics of the new and modified instructions. We will also extend QEMU to support this extension. This will then allow us to test our extension with a few basic test programs. While doing this, we pose several questions one should consider when designing an extension of this kind, and propose some possible solutions.