Non-Volatile Memory Code Protection via Program-Once Lockout Keys

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing non-volatile memory (NVM) systems face weaknesses in protecting memory sectors, as protection codes can be corrupted or bypassed, allowing unintended modifications to protected code blocks, such as boot code, due to vulnerabilities in existing protection schemes.

Innovation Solution

The implementation of lockout codes and lockout keys stored in program-once areas that are not readable by external users, combined into a merged protection code to control write access, effectively making protected sectors act like read-only memory, ensuring only authorized users can update protected information.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If protection codes are stored in readable memory areas, then write access control can be implemented, but the protection codes can be corrupted or bypassed allowing unintended modifications

Engineering Contradiction:
Improveprotection mechanism reliabilityVSAvoidcode corruption vulnerability
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent extracts the protection code from the readable/writable memory area and stores it separately in a program-once memory area that cannot be read or written during normal operation. This physical separation prevents the protection code from being accessed, corrupted, or bypassed through normal memory access mechanisms, thereby resolving the vulnerability while maintaining write access control functionality.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The memory system is segmented into distinct functional areas: readable/writable memory for data storage, program-once memory for protection code storage, and access control circuitry for enforcement. This segmentation isolates the protection mechanism from potential attacks on the data storage area, ensuring that protection codes cannot be corrupted through normal memory operations.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If test mode commands or generic backdoor keys are used, then access control can be bypassed for testing purposes, but protection is lost in production environments

Engineering Contradiction:
Improvetest mode accessibilityVSAvoidproduction protection integrity
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The protection code is programmed into the program-once memory area during manufacturing before the device reaches the customer. This preliminary action establishes the protection mechanism in a secure state that cannot be modified during normal operation or testing, ensuring that production protection integrity is maintained while allowing controlled testing through other means.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Different access characteristics are applied to different memory areas: the program-once memory area has read-only characteristics after programming, while other memory areas maintain full read-write access. This local differentiation allows testing and normal operation in appropriate areas while maintaining strict protection where needed.

Inventive Principle:
Principle #3Local quality

Data Source

PatentEP2709034B1Systems and methods for code protection in non-volatile memory systems
Publication Date: 2018.11.21 NXP USA INC
  • EP2709034B1 patent drawingFigure 1
  • EP2709034B1 patent drawingFigure 2
  • EP2709034B1 patent drawingFigure 3

AI summary

Methods and systems are disclosed for code protection in non-volatile memory (NVM) systems (200). Information stored within NVM memory sectors (114), such as boot code or other code blocks, is protected using lockout codes (202) and lockout keys (204) written in program-once memory areas (120) within the NVM systems (200). Further, lockout codes (202) can be combined into a merged lockout code that can be stored in a merged protection register (210). The merged protection register (210) is used to control write access to protected memory sectors (114). Lockout code/key pairs (202/204) are written to the program-once area (120) when a memory sector is protected. The program-once area (120), which stores the lockout code/key pairs (202/204), is not readable by external users. Once protected, a memory sector cannot be updated without the lockout code/key pair.