Shared Memory Clock Reading for TEE Security

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In trusted execution environments (TEEs), malicious actors can perpetrate fraud by providing inaccurate clock readings or intercepting and replaying messages, leading to potential financial and operational disruptions, as existing systems lack direct access to a secure system clock and are vulnerable to side-channel attacks.

Innovation Solution

A shared memory clock reading (SMCR) system is introduced, where the host and TEE share memory access, allowing the TEE to validate clock readings without direct requests to untrusted code, reducing performance overhead and mitigating side-channel attacks by using shared memory to store and retrieve clock readings.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the TEE requests clock readings directly from the host under control of untrusted code, then the host can provide clock readings to the TEE, but the system becomes vulnerable to fraudulent clock readings and side-channel attacks

Engineering Contradiction:
Improveclock reading accuracyVSAvoidfraudulent clock readings and side-channel attacks
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent introduces shared memory as an intermediary between the host and TEE for clock readings. The host writes clock readings to shared memory, and the TEE reads them directly without requesting from untrusted code, eliminating the vulnerability while maintaining functionality.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent extracts the clock reading data from the untrusted code path and places it directly into shared memory accessible by the TEE. This separates the clock generation function from the trusted execution path, preventing fraudulent readings.

Inventive Principle:
Principle #2Taking out (Extraction)

2Measurement precision

If the TEE frequently requests clock readings to validate accuracy, then the system can detect fraudulent readings, but performance overhead increases significantly

Engineering Contradiction:
Improveclock reading validationVSAvoidsystem performance
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The host performs the clock reading generation and writes it to shared memory in advance, before the TEE needs to validate it. This preliminary action eliminates the need for frequent TEE requests, reducing performance overhead while maintaining validation capability.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Shared memory serves as an intermediary that enables the TEE to passively receive and validate clock readings without active requesting, significantly reducing the frequency of interactions and associated performance overhead.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Object-affected harmful factors

If the TEE uses shared memory to store and retrieve clock readings, then side-channel attacks are mitigated and performance overhead is reduced, but the system requires direct shared memory access capability

Engineering Contradiction:
Improveside-channel attacksVSAvoidshared memory access infrastructure
Core Design Contradiction:
Object-affected harmful factorsVSDevice complexity

Solution Approach 1:

The shared memory infrastructure serves multiple functions: storing clock readings, enabling TEE validation, and preventing side-channel attacks. This multi-functionality justifies the infrastructure complexity by providing comprehensive security and performance benefits.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS11645385B2Counteracting fraudulent clock readings and side-channel attacks
Publication Date: 2023.05.09 R3 LTD
  • US11645385B2 patent drawing
  • US11645385B2 patent drawing
  • US11645385B2 patent drawing

AI summary

A computing system provides clock readings from an untrusted code to trusted code, where the trusted code is executed in a secure enclave and the untrusted code is executed outside the secure enclave. The computing system allocates a pointer to shared memory that is shared between the untrusted code and the trusted code. Under control of the untrusted code, the computing system periodically writes a clock reading to the shared memory. Under control of the trusted code, the computing system reads the clock reading stored in shared memory. The untrusted code cannot determine when the trusted code reads a clock reading.