US 12,476,810 B2
Diversification of instruction set encodings to protect software
Nikita Veshchikov, Brussels (BE)
Assigned to NXP B.V., Eindhoven (NL)
Filed by NXP B.V., Eindhoven (NL)
Filed on Nov. 6, 2023, as Appl. No. 18/387,406.
Prior Publication US 2025/0150272 A1, May 8, 2025
Int. Cl. H04L 9/32 (2006.01); G06F 9/30 (2018.01); H04L 9/08 (2006.01); H04L 9/14 (2006.01)
CPC H04L 9/32 (2013.01) [G06F 9/30145 (2013.01); H04L 9/0861 (2013.01); H04L 9/14 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A system for protecting program code in an embedded device, the system comprising a permutation decoding unit in signal communication with a processing section of the embedded device, the processing section comprising a processor and a decoder circuit configured to decode, according to a set of standard binary encodings associated with an instruction set, binary code into instructions executable by the processor, the permutation decoding unit comprising computing hardware configured to execute control logic that causes the permutation decoding unit to, responsive to a control signal received from the processing section:
identify, based on the control signal, a program to be executed by the processor; and
until a program counter has reached an end of the program, repeatedly:
obtain, based on the program counter, a next value to be processed from a permuted executable stored in memory of the embedded device, the permuted executable comprising a binary representation of the program encoded using a first permutation of the standard binary encoding, the first permutation based on a key accessible by the permutation decoding unit;
determine that the next value includes one of a set of permuted binary encodings;
use the key to decode the determined permuted binary encoding into a corresponding one of the set of standard binary encodings;
replace the determined permuted binary encoding with the corresponding standard binary encoding within the next value to produce a standard encoded instruction; and
transmit the standard encoded instruction to the decoder circuit, the decoder circuit responsively:
using the set of standard binary encodings to decode the standard encoded instruction into a corresponding instruction;
causing the corresponding instruction to be executed by the processor; and
causing the program counter to be updated.