Random Memory Allocation via Bitmap for Security

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Computer operating systems face vulnerabilities due to deterministic memory allocation methods, which can be exploited by malicious programs, leading to potential security threats.

Innovation Solution

A lightweight random memory allocation system that uses a bitmap to randomly select available memory blocks for allocation, introducing randomness into the memory allocation process without significantly increasing response time or overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a deterministic memory allocation method is used, then memory allocation is efficient and predictable, but security vulnerability increases due to exploitable patterns

Engineering Contradiction:
Improvememory allocation efficiencyVSAvoidsecurity vulnerability
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent applies dynamics by transitioning from a static, deterministic memory allocation strategy to a dynamic, randomization-based approach. The memory allocator randomly selects available memory blocks from a bitmap during allocation, making the allocation pattern unpredictable and resistant to exploitation by malicious programs while maintaining efficient memory utilization.

Inventive Principle:
Principle #15Dynamics

2Object-affected harmful factors

If random memory allocation is implemented, then security vulnerability decreases, but response time and overhead increase

Engineering Contradiction:
Improvesecurity vulnerabilityVSAvoidmemory allocation response time
Core Design Contradiction:
Object-affected harmful factorsVSLoss of time

Solution Approach 1:

The patent implements preliminary action by pre-generating and storing a bitmap that maps available memory blocks before allocation requests are processed. This pre-computed data structure allows the system to quickly randomize selection from pre-identified available blocks rather than scanning through all memory, significantly reducing allocation response time while maintaining security benefits of randomization.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses a bitmap as a simplified copy or representation of the actual memory block availability status. Instead of performing complex random searches through the entire memory space, the system copies the availability information into a compact bitmap structure, enabling fast random selection from available blocks without the overhead of full memory scanning.

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If random number generation is used for allocation, then allocation pattern becomes unpredictable, but system overhead increases

Engineering Contradiction:
Improveallocation pattern flexibilityVSAvoidsystem overhead
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent employs a simple bitmap data structure that is inexpensive to maintain and update compared to complex random number generation systems. The bitmap can be quickly modified when memory blocks are allocated or freed, providing adaptability in allocation patterns without the computational overhead and complexity of sophisticated cryptographic random number generators or complex state management systems.

Inventive Principle:
Principle #27Cheap short-living objects (Disposable)

Data Source

PatentUS8966217B2Lightweight random memory allocation
Publication Date: 2015.02.24 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8966217B2 patent drawing
  • US8966217B2 patent drawing
  • US8966217B2 patent drawing

AI summary

In response to a memory allocation request received from an application thread, a random number is obtained (e.g., from a random number list previously populated with multiple random numbers). A starting location in at least a portion of a bitmap associated with a region including multiple blocks of the memory is determined based on the random number. A portion of the bitmap is scanned, beginning at the starting location, to identify a location in the bitmap corresponding to an available block of the multiple blocks, and an indication of this available block is returned to the application thread.