Client Software Attestation via Cryptographic Hashing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for authenticating software code on client computing devices are inadequate, as they either rely on trusted execution environments that are not universally accessible or introduce performance degradation and complexity through self-checking mechanisms, and fail to ensure the integrity of both application and underlying platform support libraries.

Innovation Solution

A system and method where a client computing device calculates a cryptographic hash fingerprint of its executing code and communicates it to an attestation service, which generates a pass or fail attestation result, influencing server behavior, and optionally uses a nonce value, challenge-response pairs, and crowdsourced device fingerprinting to verify the authenticity of both application and platform software.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a trusted execution environment is used to ensure code integrity, then security and reliability are improved, but device complexity and accessibility are worsened

Engineering Contradiction:
Improvecode integrityVSAvoidtrusted execution environment
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts the integrity verification function from the trusted execution environment and places it in a separate attestation module that operates in the untrusted environment. This module calculates fingerprints of code sections and compares them against expected values, thereby maintaining security without requiring specialized hardware or complex trusted environments.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces an intermediary attestation module that acts as a mediator between the untrusted execution environment and the integrity verification process. This module performs the fingerprint calculation and comparison operations, serving as a bridge that enables integrity checking without direct access to trusted execution environments.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If runtime defence mechanisms are integrated into application code to check for tampering, then security is improved, but performance and ease of integration are worsened

Engineering Contradiction:
Improvetamper detectionVSAvoidapplication performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the code into distinct sections and calculates fingerprints only for these specific sections rather than the entire codebase. This selective approach reduces the computational overhead during runtime while maintaining effective tamper detection capability for the critical code segments.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary action by pre-calculating and storing expected fingerprint values for legitimate code sections during the development phase. During runtime, the system only needs to compare the calculated fingerprints against these pre-stored values, significantly reducing the computational burden compared to performing comprehensive integrity checks at execution time.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If self-checking mechanisms are added to verify code authenticity, then security is improved, but device complexity and ease of operation are worsened

Engineering Contradiction:
Improvecode authenticityVSAvoidsoftware integration
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The patent implements self-service by enabling the attestation module to automatically calculate fingerprints of code sections and compare them against expected values without requiring external intervention. The system self-verifies its own integrity and can autonomously detect tampering, eliminating the need for manual verification processes.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS11163858B2Client software attestation
Publication Date: 2021.11.02 CRITICAL BLUE
  • US11163858B2 patent drawing
  • US11163858B2 patent drawing
  • US11163858B2 patent drawing

AI summary

A server computing device can determine if a software application executing on a client computing device has not been tampered. Software executes on the server device and communicates either directly or indirectly with an attestation service; a client software application running on the client computing device communicates with the same attestation service. A client software application that is able to calculate a cryptographic hash fingerprint of its executing code image communicates to the attestation service to prove it is untampered with. The attestation service then generates a pass or fail attestation result. The attestation result is communicated between the attestation service and the server computing device. The behaviour of the server computing device is controlled in a way that is conditional on whether a prior attestation of the client software was a pass or fail attestation result.