cpu_context_Barrier et cpu_spéculation_Barrier Sous-routines
Objectif
Fournit une protection contre les attaques par canaux parallèles d'exécution spéculative.
Bibliothèque
Bibliothèque C standard (libc.a)
Syntaxe
#include <sys/processor.h>
Descriptif
La sous-routine cpu_context_Barrier doit être appelée à partir du domaine sécurisé et doit être exécutée à chaque transition entre le domaine sécurisé et le domaine non sécurisé. Cette sous-routine accepte un paramètre unique qui spécifie la méthode dans laquelle la sous-routine est utilisée. Alternativement, une variation complète de la sous-routine du noyau barrière peut être utilisée pour les scénarios où il est difficile de distinguer la méthode dans laquelle la sous-routine doit être utilisée.
La sous-routine cpu_spéculation_Barrier doit être appelée à partir du domaine sécurisé avant d'accéder au stockage à l'aide d'adresses calculées à partir d'une source non sécurisée.
Paramètres
| Article | Descriptif |
|---|---|
| value | Indique la méthode dans laquelle la sous-routine de barrière est appelée. |
Valeurs de barrière de contexte d'UC
| Article | Descriptif |
|---|---|
| CCB_ENTREE | Spécifiez cette valeur lors de la transition vers un domaine de contexte sécurisé. |
| CCB_EXIT | Spécifiez cette valeur lors de la transition vers un domaine de contexte sécurisé. |
| CCB_TOUT | Spécifiez cette valeur lors de la transition vers un domaine de contexte sécurisé ou lors de la transition vers un domaine de contexte sécurisé. |
Exemple
int index;
char val,
udata[];
extern int max_tdata_index;
extern char tdata[];
/* Fetch index from untrusted user */
cpu_context_barrier(CCB_EXIT);
index = get_index_from_user(...);
cpu_context_barrier(CCB_ENTRY);
/* Select trusted data from user input */
if (index < max_tdata_index) {
cpu_speculation_barrier();
val = tdata[index];
udata[val]++;
}