Hardware Security Module Integrity Verification for Unencrypted Memory
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for executing computer programs using a microprocessor, unencrypted memory, and encrypted memory are vulnerable to unexpected operations due to non-initialized data being processed as initialized, compromising security.
Innovation Solution
A method and hardware security module that automatically convert source code into binary code, using blocks of encrypted and authenticated data with integrity verification and encryption/decryption operations, and a compiler that initializes non-initialized data to prevent unauthorized processing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If data are stored in encrypted form in memory and decrypted only when needed, then security is improved, but processing speed deteriorates due to decryption overhead
Solution Approach 1:
The patent applies preliminary action by pre-computing authentication codes for encrypted data blocks during compilation and storing them alongside the encrypted data. When data is needed, the system performs a fast authentication code verification instead of full decryption to check if data has been tampered with or prematurely accessed. This preliminary verification step reduces the need for full decryption operations, thereby maintaining security while improving processing speed.
2Reliability
If authentication codes are computed for each individual datum, then data integrity verification is improved, but computation time deteriorates
Solution Approach 1:
The patent merges multiple individual authentication code computations into a single authentication code for an entire block of encrypted data. Instead of computing separate authentication codes for each datum within a block, the system computes one authentication code that covers the entire block. This combining approach maintains comprehensive integrity verification while significantly reducing computation time, as the authentication code is computed once for the block rather than repeatedly for each individual datum.
3Reliability
If non-initialized data are grouped in memory blocks with authentication codes, then security against unauthorized processing is improved, but device complexity deteriorates
Solution Approach 1:
The patent applies segmentation by dividing memory into distinct blocks, each containing encrypted data and an associated authentication code. Non-initialized data are grouped into specific memory blocks that are marked with authentication codes indicating their uninitialized state. The system segments the memory management task by maintaining separate authentication codes for different blocks, allowing efficient tracking and control of data initialization states without requiring complex per-datum tracking mechanisms.
4Productivity
If block-based encryption and authentication is implemented, then productivity is improved by reducing encryption operations, but manufacturing precision deteriorates due to difficulty in tracking individual data initialization states
Solution Approach 1:
The patent introduces an intermediary mechanism in the form of authentication codes that serve as mediators between the block-based encryption system and the requirement for individual data initialization tracking. Each authentication code is computed based on the contents of its associated data block and serves as an intermediary indicator of the block's initialization state. When data within a block is initialized, the authentication code is updated or invalidated, providing precise tracking of initialization states without requiring direct inspection of each individual datum. This intermediary approach maintains productivity benefits of block-based processing while achieving precise initialization tracking.
Data Source
AI summary
A method for executing a computer program, wherein when a microprocessor writes a block of No bytes of a datum of a block of cleartext data stored in an unencrypted memory, a security module switches a validity indicator associated with this block of No bytes to an active state wherein it indicates that this block of bytes is valid, and each time a block of No bytes of a datum of the block of cleartext data is loaded by the microprocessor from the unencrypted memory, the hardware security module verifies whether the validity indicator associated with this block of No bytes is in its active state and, if such is the case, processing, by the microprocessor, of this block of No bytes is permitted, and, if such is not the case, processing, by the microprocessor, of this block of No bytes is forbidden.


