8.1. Side-Channel Leaks (Fuites par canaux auxiliaires)
8.1. Side-Channel Leaks (Fuites par canaux auxiliaires)
Pour les implémentations qui effectuent des signatures, le secret de la clé privée (private key) est fondamental. Il est possible de se prémunir contre certaines attaques par canaux auxiliaires (side-channel attacks) en veillant à ce que l'implémentation exécute exactement la même séquence d'instructions et effectue exactement les mêmes accès mémoire, quelle que soit la valeur de la clé privée.
Pour rendre une implémentation silencieuse vis-à-vis des canaux auxiliaires (side-channel silent) de cette manière, l'arithmétique modulo p ne doit utiliser aucune branche dépendante des données, par exemple liée à la propagation de retenue. L'addition de points silencieuse vis-à-vis des canaux auxiliaires est simple, grâce aux formules unifiées (unified formulas).
La multiplication scalaire (scalar multiplication), c'est-à-dire multiplier un point par un entier, nécessite un effort supplémentaire pour être implémentée de façon silencieuse vis-à-vis des canaux auxiliaires. Une approche simple consiste à implémenter une affectation conditionnelle (conditional assignment) silencieuse vis-à-vis des canaux auxiliaires, et à l'utiliser avec l'algorithme binaire pour examiner un bit de l'entier à la fois.
Par rapport à d'autres schémas de signature, éviter les branches dépendantes des données est plus facile, car l'arithmétique modulo p silencieuse vis-à-vis des canaux auxiliaires est plus simple (avec les courbes recommandées) et il existe des formules d'addition complètes (complete addition formulas) au lieu de nombreux cas particuliers.
Notez que les implémentations d'exemple dans ce document ne cherchent pas à être silencieuses vis-à-vis des canaux auxiliaires.