Cryptographic Pointer Encoding for Stack Memory Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing techniques face challenges in providing fine-grained memory protection and efficient data encryption, leading to performance overheads and increased costs due to the need for additional metadata and storage, especially in scenarios like Function as a Service (FaaS) workloads and object bounds information.

Innovation Solution

The implementation of cryptographic computing, which involves encoding pointers with metadata and using cryptographic addressing layers to enforce bounds and provide access control, reducing the need for separate metadata storage and improving performance by leveraging secret keys and ciphers for fine-grained access control.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If cryptographic mechanisms are used to encrypt data and pointers, then security is improved, but performance overhead increases due to additional computational requirements

Engineering Contradiction:
ImprovesecurityVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent combines cryptographic operations with existing memory management operations by integrating the cryptographic engine within the memory controller. Encryption and decryption are merged with memory read/write operations, allowing security operations to occur in parallel with data access without requiring separate processing steps, thereby reducing performance overhead.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The memory controller performs cryptographic operations autonomously without requiring intervention from the CPU or other processing units. The cryptographic engine within the memory controller self-manages encryption and decryption of data and pointers during memory operations, eliminating the need for additional computational resources and reducing performance impact.

Inventive Principle:
Principle #25Self-service

2Reliability

If separate metadata storage is used for memory protection, then access control is improved, but device complexity and storage costs increase

Engineering Contradiction:
Improveaccess controlVSAvoidmetadata storage
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges protection metadata directly with the data being protected by encrypting both the data and its associated pointers using the same cryptographic mechanisms. This eliminates the need for separate metadata storage structures, as the cryptographic bindings themselves serve as the protection metadata, thereby reducing device complexity and storage requirements.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The cryptographic mechanisms serve multiple functions simultaneously: they provide data confidentiality through encryption, enable access control through cryptographic bindings, and provide integrity verification. This multi-functionality eliminates the need for separate dedicated metadata structures for each protection function, reducing overall system complexity.

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

Data Source

PatentUS11580035B2Fine-grained stack protection using cryptographic computing
Publication Date: 2023.02.14 INTEL CORP
  • US11580035B2 patent drawing
  • US11580035B2 patent drawing
  • US11580035B2 patent drawing

AI summary

A processor includes a register to store an encoded pointer to a variable in stack memory. The encoded pointer includes an encrypted portion and a fixed plaintext portion of a memory address corresponding to the variable. The processor further includes circuitry to, in response to a memory access request for associated with the variable, decrypt the encrypted portion of the encoded pointer to obtain first upper address bits of the memory address and a memory allocation size for a variable, decode the encoded pointer to obtain the memory address, verify the memory address is valid based, at least in part on the memory allocation size, and in response to determining that the memory address is valid, allow the memory access request.