“…Proof-carrying code [12,13,38] and typed assembly language [61,94,95] have been used for enforcing IFC on low-level code without low-level analysis or adding the compiler to the TCB. In SAFE [29,34] we follow a different approach, enforcing noninterference using purely dynamic checks, for arbitrary binaries in a custom-designed instruction set. The mechanisms we use for this are similar to those found in recent work on purely dynamic IFC for high-level languages [1,4,5,6,7,40,41,44,45,63,72,75,78,83,86]; however, as far as we know, we are the first to push these ideas to the lowest level.…”