Compiler-Inserted Encrypted Pointers for Secure Memory Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computing systems face challenges in securely managing memory access across multiple processes, particularly in preventing malicious code from accessing unauthorized memory regions, which can compromise security and lead to unauthorized memory access.

Innovation Solution

The implementation of a compiler that inserts encryption and decryption instructions into computer programs to authenticate and authorize memory access operations, using encrypted pointers and capabilities to control access to shared memory regions, ensuring that only authorized processes can access specific memory locations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple processes share memory regions to improve system efficiency and resource utilization, then productivity increases, but security vulnerabilities increase allowing malicious code to access unauthorized memory

Engineering Contradiction:
Improvesystem efficiencyVSAvoidunauthorized memory access
Core Design Contradiction:
ProductivityVSObject-affected harmful factors

Solution Approach 1:

The patent introduces encrypted pointers as an intermediary mechanism between processes and shared memory regions. These encrypted pointers act as secure mediators that allow authorized access to shared memory while preventing unauthorized access, thus resolving the contradiction between maintaining shared memory efficiency and preventing security vulnerabilities.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent transforms regular memory pointers into encrypted pointers by applying cryptographic transformations. This parameter change in the pointer structure enables the system to maintain shared memory access functionality while adding security constraints that prevent malicious code from accessing unauthorized memory regions.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If encryption and decryption instructions are inserted into computer programs to authenticate memory access, then security improves, but device complexity increases

Engineering Contradiction:
Improvememory access securityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent implements self-service mechanisms where the encryption and decryption operations are automatically performed by the system itself through specialized instructions. The encrypted pointers self-validate through decryption operations, eliminating the need for external security verification systems and reducing overall system complexity despite adding cryptographic functionality.

Inventive Principle:
Principle #25Self-service

3Object-affected harmful factors

If encrypted pointers are used to restrict memory access to authorized processes only, then security against malicious code improves, but ease of operation decreases due to additional authentication overhead

Engineering Contradiction:
Improvemalicious code protectionVSAvoidmemory access operation
Core Design Contradiction:
Object-affected harmful factorsVSEase of operation

Solution Approach 1:

The patent replaces traditional mechanical memory access operations with cryptographic operations. Instead of direct pointer dereferencing, the system uses encryption and decryption instructions that automatically verify authorization. This substitution maintains security while streamlining the access process through hardware-supported cryptographic instructions.

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

Data Source

PatentUS10706164B2Crypto-enforced capabilities for isolation
Publication Date: 2020.07.07 INTEL CORP
  • US10706164B2 patent drawing
  • US10706164B2 patent drawing
  • US10706164B2 patent drawing

AI summary

Apparatuses for computing are disclosed herein. In embodiments, an apparatus may include one or more processors, a memory, and a compiler to be operated by the one or more processors to compile a computer program. The compiler may include one or more analyzers to parse and analyze source code of the computer program that generates pointers or de-references pointers. The compiler may also include a code generator coupled to the one or more analyzers to generate executable instructions for the source code of the computer program including insertion of additional encryption or decryption executable instructions into the computer program, based at least in part on a result of the analysis, to authenticate memory access operations of the source code.