Client Software Attestation via Cryptographic Hashing
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
3Reliability
If self-checking mechanisms are added to verify code authenticity, then security is improved, but device complexity and ease of operation are worsened
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.
Data Source
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.


