Aller au contenu principal

7. Effacement du cofacteur

Les mappages de la section 6 produisent toujours un point sur la courbe elliptique, c'est-à-dire un point dans un groupe d'ordre h * r (section 2.1). L'obtention d'un point dans G peut nécessiter une opération finale communément appelée « effacement du cofacteur », qui prend en entrée n'importe quel point sur la courbe et produit en sortie un point dans le (sous-)groupe d'ordre premier G (section 2.1).

Le cofacteur peut toujours être effacé via une multiplication scalaire par h. Pour les courbes elliptiques où h = 1, c'est-à-dire les courbes avec 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'effacer le cofacteur via 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 la courbe. Des exemples de méthodes rapides d'effacement du cofacteur incluent les suivants :

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

  • Wahby et Boneh ([WB19], section 5) décrivent une astuce due à Scott pour l'effacement rapide du cofacteur sur toute courbe elliptique pour laquelle la factorisation première de h et la structure du groupe de la courbe elliptique répondent à 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 supporte pas de méthode d'effacement rapide du cofacteur, h_eff = h et le cofacteur DOIT être effacé via une multiplication scalaire.

Lorsqu'une courbe admet une méthode d'effacement rapide du cofacteur, clear_cofactor PEUT être évaluée soit via cette méthode, soit via une multiplication scalaire par le h_eff équivalent ; ces deux méthodes donnent le même résultat. Notez 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.