Code Signature Verification Using Hardware Fuse Hashes

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improvecode verification reliabilityVSAvoidvulnerability to glitching attacks
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

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.

Inventive Principle:
Principle #10Preliminary action

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.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

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

Engineering Contradiction:
Improveverification operation simplicityVSAvoidprotection against rollback attacks
Core Design Contradiction:
Ease of operationVSReliability

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.

Inventive Principle:
Principle #15Dynamics

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.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If comprehensive code verification is performed, then security is improved, but memory resources are consumed during early testing stages

Engineering Contradiction:
Improvesecurity verificationVSAvoidmemory resource consumption
Core Design Contradiction:
ReliabilityVSQuantity of substance

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.

Inventive Principle:
Principle #2Taking out (Extraction)

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.

Inventive Principle:
Principle #27Cheap short-living objects (Disposable)

Data Source

PatentUS10491401B2Verification of code signature with flexible constraints
Publication Date: 2019.11.26 GOOGLE LLC
  • US10491401B2 patent drawing
  • US10491401B2 patent drawing
  • US10491401B2 patent drawing

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.