Aller au contenu principal

7. Élimination du cofacteur

Les applications de la Section 6 produisent toujours un point de la courbe elliptique, c'est-à-dire un point d'un groupe d'ordre h * r (Section 2.1). L'obtention d'un point de G peut nécessiter une opération finale communément appelée « élimination du cofacteur » (clearing the cofactor), qui prend en entrée un point quelconque de la courbe et produit en sortie un point du (sous-)groupe d'ordre premier G (Section 2.1).

Le cofacteur peut toujours être éliminé par multiplication scalaire par h. Pour les courbes elliptiques où h = 1, c'est-à-dire les courbes ayant un nombre premier de points, aucune opération n'est requise. Cela s'applique, par exemple, aux courbes NIST P-256, P-384 et P-521 [FIPS186-4].

Dans certains cas, il est possible d'éliminer le cofacteur par une méthode plus rapide que la multiplication scalaire par h. Ces méthodes sont équivalentes à (mais généralement plus rapides que) la multiplication par un certain scalaire h_eff dont la valeur est déterminée par la méthode et par la courbe. Parmi les exemples de méthodes rapides d'élimination du cofacteur figurent les suivantes :

  • Pour certaines courbes compatibles avec les couplages (pairing-friendly) ayant un sous-groupe G2 sur un corps d'extension, Scott et al. [SBCDK09] décrivent une méthode d'élimination rapide du cofacteur qui exploite un endomorphisme calculable efficacement. Fuentes-Castañeda et al. [FKR11] proposent une méthode alternative parfois plus efficace. Budroni et Pintore [BP17] donnent des instanciations concrètes de ces méthodes pour les courbes pairing-friendly de Barreto-Lynn-Scott [BLS03]. Cette méthode est décrite pour le cas spécifique de BLS12-381 à l'Annexe G.3.

  • Wahby et Boneh ([WB19], Section 5) décrivent une astuce due à Scott permettant une élimination rapide du cofacteur sur toute courbe elliptique pour laquelle la factorisation en nombres premiers de h et la structure du groupe de la courbe elliptique satisfont certaines conditions.

La fonction clear_cofactor est paramétrée par un scalaire h_eff. Plus précisément,

clear_cofactor(P) := h_eff * P

où * représente la multiplication scalaire. Lorsqu'une courbe ne prend pas en charge de méthode rapide d'élimination du cofacteur, h_eff = h et le cofacteur DOIT être éliminé par multiplication scalaire.

Lorsqu'une courbe admet une méthode rapide d'élimination du cofacteur, clear_cofactor PEUT être évaluée soit par cette méthode, soit par multiplication scalaire par le h_eff équivalent ; ces deux méthodes donnent le même résultat. Notons que, dans ce cas, la multiplication scalaire par le cofacteur h ne donne généralement pas le même résultat que la méthode rapide et NE DOIT PAS être utilisée.