Year
2009
Abstract
The Intrinsic Code Verification (ICV) is a secure means to remotely verify that the program contents of a security device have not been modified. A security device that has implemented the ICV algorithm upon request can inspect itself and provide an authentication code, which can be used to verify that the device has not been modified. ICV accomplishes this by a unique application of the Cipher Message Authentication Code (CMAC) to the contents of program and configuration memory of the microcontroller. Previously used methods to verify program contents have included checksums, program hashes as well as a Hash Message Authentication Code (HMAC). These methods, while effective in many situations, are often applied in a manner that does not always increase the security of the device. In addition because ICV uses the standard AES-128 encryption algorithm it has a very low overhead for devices that already use AES for message encryption. ICV was designed as both an algorithm and a security process to ensure that it will be applied correctly and it will increase the overall security as expected. This paper will be an exploration of the algorithm and will include a detailed analysis of its implementation.