7. Cancellazione del cofattore
Le mappature della Sezione 6 producono sempre un punto sulla curva ellittica, ovvero un punto in un gruppo di ordine h * r (Sezione 2.1). L'ottenimento di un punto in G può richiedere un'operazione finale comunemente chiamata "cancellazione del cofattore", che accetta come input qualsiasi punto sulla curva e produce come output un punto nel (sotto)gruppo di ordine primo G (Sezione 2.1).
Il cofattore può sempre essere cancellato tramite la moltiplicazione scalare per h. Per le curve ellittiche dove h = 1, ovvero le curve con un numero primo di punti, non è richiesta alcuna operazione. Ciò si applica, ad esempio, alle curve NIST P-256, P-384 e P-521 [FIPS186-4].
In alcuni casi, è possibile cancellare il cofattore tramite un metodo più veloce della moltiplicazione scalare per h. Questi metodi sono equivalenti a (ma generalmente più veloci della) moltiplicazione per un certo scalare h_eff il cui valore è determinato dal metodo e dalla curva. Esempi di metodi veloci per la cancellazione del cofattore includono i seguenti:
-
Per alcune curve pairing-friendly aventi un sottogruppo G2 su un campo di estensione, Scott et al. [SBCDK09] descrivono un metodo veloce per la cancellazione del cofattore che sfrutta un endomorfismo calcolabile in modo efficiente. Fuentes-Castañeda et al. [FKR11] propongono un metodo alternativo che a volte è più efficiente. Budroni e Pintore [BP17] forniscono istanziazioni concrete di questi metodi per le curve Barreto-Lynn-Scott pairing-friendly [BLS03]. Questo metodo è descritto per il caso specifico di BLS12-381 nell'Appendice G.3.
-
Wahby e Boneh ([WB19], Sezione 5) descrivono un trucco dovuto a Scott per la cancellazione rapida del cofattore su qualsiasi curva ellittica per la quale la scomposizione in fattori primi di h e la struttura del gruppo della curva ellittica soddisfano determinate condizioni.
La funzione clear_cofactor è parametrizzata da uno scalare h_eff. Più precisamente,
clear_cofactor(P) := h_eff * P
dove * indica la moltiplicazione scalare. Quando una curva non supporta un metodo veloce per la cancellazione del cofattore, h_eff = h e il cofattore DEVE essere cancellato tramite moltiplicazione scalare.
Quando una curva ammette un metodo veloce per la cancellazione del cofattore, clear_cofactor PUÒ essere valutata sia tramite tale metodo sia tramite la moltiplicazione scalare per l'equivalente h_eff; entrambi i metodi producono lo stesso risultato. Si noti che in questo caso, la moltiplicazione scalare per il cofattore h generalmente non produce lo stesso risultato del metodo rapode e NON DEVE essere utilizzata.