Passa al contenuto principale

7. Azzeramento del cofattore (Clearing the Cofactor)

I mapping della Sezione 6 emettono sempre un punto sulla curva ellittica, cioè un punto in un gruppo di ordine h * r (Sezione 2.1). Ottenere un punto in G può richiedere un'operazione finale comunemente chiamata "azzeramento del cofattore" (clearing the cofactor), che prende in input un qualsiasi punto sulla curva e produce in output un punto nel (sotto)gruppo G di ordine primo (Sezione 2.1).

Il cofattore può sempre essere azzerato tramite moltiplicazione scalare per h. Per le curve ellittiche in cui h = 1, cioè 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 azzerare il cofattore tramite un metodo più rapido della moltiplicazione scalare per h. Questi metodi sono equivalenti a (ma di solito più rapidi di) una moltiplicazione per uno scalare h_eff il cui valore è determinato dal metodo e dalla curva. Esempi di metodi rapidi di azzeramento del cofattore includono i seguenti:

  • Per certe curve pairing-friendly aventi sottogruppo G2 su un campo di estensione, Scott et al. [SBCDK09] descrivono un metodo di azzeramento rapido del cofattore che sfrutta un endomorfismo calcolabile efficientemente. Fuentes-Castañeda et al. [FKR11] propongono un metodo alternativo talvolta più efficiente. Budroni e Pintore [BP17] danno istanziazioni concrete di questi metodi per le curve pairing-friendly Barreto-Lynn-Scott [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 un azzeramento rapido del cofattore su qualsiasi curva ellittica per la quale la fattorizzazione prima di h e la struttura del gruppo di curva ellittica soddisfino certe condizioni.

La funzione clear_cofactor è parametrizzata da uno scalare h_eff. Nello specifico,

clear_cofactor(P) := h_eff * P

dove * rappresenta la moltiplicazione scalare. Quando una curva non supporta un metodo rapido di azzeramento del cofattore, h_eff = h e il cofattore DEVE essere azzerato tramite moltiplicazione scalare.

Quando una curva ammette un metodo rapido di azzeramento del cofattore, clear_cofactor PUÒ essere valutata sia tramite quel metodo sia tramite moltiplicazione scalare per l'equivalente h_eff; questi due metodi danno lo stesso risultato. Si noti che in questo caso la moltiplicazione scalare per il cofattore h non dà in generale lo stesso risultato del metodo rapido e NON DEVE essere utilizzata.