• # Bienvenue dans mon monde

    Posté par (site web personnel) . En réponse au journal C23: un memset_explicit() qui carbure. Évalué à 4.

    Je travaille dans le domaine des logiels pour carte à puce. Ces softs doivent être sécurisés contre des attaques "externes", où le flot du code ne suit pas ce qui est prévu par le source C ou assembleur. On rajoute donc pas mal de contre-mesure pour s'assurer qu'on ne sort pas du chemin officiel du code (double-vérifications, flags qu'on monte à des points stratégiques du code, ordonnancement particulier, valeurs particulière, ...).

    Une des difficultés qu'on rencontre est celle que tu décris ici dans ton article: le compilateur pense naïvement que le code s'exécute comme il le voit, et va avoir tendance à retirer certaines contre-mesures. On bidouille à coup d'assembleur, de volatile, de pragma mais ça suffit pas toujours. Et surtout, assez non-prédictif. Il va décider tout un coup de retirer une contre-mesure qu'il gardait auparavant. On passe donc la version finale de notre code à une moulinette intense pour vérifier la présence des contre-mesures.

    Avantage par rapport à toi: on ne cible qu'une plate-forme à la fois