CONTROL FLOW INTEGRITY

In some examples, a computing system comprises a processor, a memory coupled to the processor, configured to store program code executable by the processor, the program code comprising one or more branch instructions, a stack data structure accessible to the processor, and a stack pointer associated...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
1. Verfasser: DENIS-COURMONT, Rémi Robert Michel
Format: Patent
Sprache:eng ; fre
Schlagworte:
Online-Zugang:Volltext bestellen
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Beschreibung
Zusammenfassung:In some examples, a computing system comprises a processor, a memory coupled to the processor, configured to store program code executable by the processor, the program code comprising one or more branch instructions, a stack data structure accessible to the processor, and a stack pointer associated to the stack data structure, the stack pointer identifying an address in the stack data structure during execution of the program code by the processor, and a compiler unit coupled to the memory and processor, configured to access the program code from the memory, and generate, for each of the one or more branch instructions, a data value based on an output of a cryptographically secure function, wherein data values for respective branch instructions are generated based on a first input identifying the address of the stack pointer prior to an evaluation of the branch instruction, a second input encoding information indicative of a target address in the memory subsequent to evaluation of the branch instruction, and a third input comprising a cryptographically secure key. Une mémoire couplée au processeur, configurée pour stocker un code de programme exécutable par le processeur, le code de programme comprenant une ou plusieurs instructions de branchement, une structure de données de pile accessible au processeur, et un pointeur de pile associé à la structure de données de pile, le pointeur de pile identifiant une adresse dans la structure de données de pile pendant l'exécution du code de programme par le processeur, et une unité de compilation couplée à la mémoire et au processeur, configurée pour accéder au code de programme à partir de la mémoire, et générer, pour chacune de la ou des instructions de branchement, une valeur de données sur la base d'une sortie d'une fonction sécurisée de manière cryptographique, des valeurs de données pour des instructions de branchement respectives étant générées sur la base d'une première entrée identifiant l'adresse du pointeur de pile avant une évaluation de l'instruction de branchement, une troisième entrée comprenant une clé sécurisée de manière cryptographique.