  Lower-end IoT devices typically have strict cost constraints that rule out
usual security mechanisms available in general-purpose computers or higher-end
devices. To secure low-end devices, various low-cost security architectures
have been proposed for remote verification of their software state via
integrity proofs. These proofs vary in terms of expressiveness, with simpler
ones confirming correct binary presence, while more expressive ones support
verification of arbitrary code execution. This article provides a holistic and
systematic treatment of this family of architectures. It also compares
(qualitatively and quantitatively) the types of software integrity proofs,
respective architectural support, and associated costs. Finally, we outline
some research directions and emerging challenges.
