Code Signature Verification Using Hardware Fuse Hashes
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Computing devices are vulnerable to non-invasive attacks such as fault injection during startup, particularly during manufacturing testing and payload installation, where code verification algorithms can be compromised by glitching attacks, and hardcoded initial conditions make them susceptible to rollback schemes.
Innovation Solution
A computer-implemented method that determines a verification hash based on the code image, hardware fuses, and memory information using hash functions, and verifies this hash against a code signature to ensure secure execution, while also using a hardware unlock mechanism to protect against glitching attacks.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a code verification algorithm is used during startup, then code authenticity can be verified, but the system becomes vulnerable to fault injection attacks such as glitching
Solution Approach 1:
The patent applies preliminary action by pre-computing and storing expected hash values in a lookup table during system initialization or manufacturing. During runtime, the verification process simply compares the computed hash against the pre-stored expected value, eliminating complex verification algorithms that are vulnerable to glitching attacks. This preliminary preparation allows fast, secure verification without executing vulnerable computational routines.
Solution Approach 2:
The patent replaces the mechanical/computational verification algorithm with a data comparison operation. Instead of executing a verification algorithm that processes code through multiple computational steps (which can be disrupted by glitching), the system computes a hash and performs a simple memory lookup and comparison. This substitution of complex computation with simple data retrieval and comparison makes the system resistant to fault injection attacks.
2Ease of operation
If hardcoded initial conditions are used in code verification, then verification can be performed, but the algorithm becomes susceptible to rollback schemes
Solution Approach 1:
The patent applies dynamics by making the verification data dynamic rather than static. Instead of using hardcoded initial conditions that remain unchanged and are vulnerable to rollback attacks, the system uses lookup tables that can be updated with new expected hash values corresponding to different code versions. This dynamic approach allows the verification mechanism to adapt to different code states while maintaining operational simplicity.
Solution Approach 2:
The patent changes the parameter being verified from static hardcoded values to dynamic hash values stored in lookup tables. By storing expected hash values (which are derived from code content) rather than hardcoded initial conditions, the system can verify code integrity without being susceptible to rollback schemes. The lookup table can be configured with different expected values corresponding to different authorized code versions.
3Reliability
If comprehensive code verification is performed, then security is improved, but memory resources are consumed during early testing stages
Solution Approach 1:
The patent extracts the verification data (expected hash values) from the main execution memory and stores them in a dedicated lookup table in non-volatile memory or ROM. This extraction allows the verification process to operate with minimal working memory requirements during testing and runtime. The lookup table stores only the essential verification data without requiring large buffers or complex data structures in volatile memory.
Solution Approach 2:
The patent uses a simple, lightweight verification approach that does not require persistent complex data structures in volatile memory. The lookup table can be implemented in non-volatile memory, eliminating the need for large amounts of working memory during verification. This approach provides comprehensive security verification while consuming minimal memory resources, especially important during early testing stages when memory may be limited or shared.
Data Source
AI summary
Systems, apparatuses, and methods for signing, and verifying the signature of, code to be executed by a target device. An example method of determining a verification hash of a code image to be executed by a target device comprises receiving a header and code image, determining an image hash based on metadata and the code image, determining a fuses hash based on values of hardware fuses of the target device, determining an information hash based on information stored in memory, determining a verification hash based on the image hash, the fuses hash, and the information hash, verifying the verification hash against a code signature in the header, obtaining an unlock constant based on the verification hash, comparing the unlock constant with a stored predetermined value to unlock a memory region of the target device, and executing the code in the code image on the target device.


