Efficient hash maps to $${\mathbb {G}}_2$$ on BLS curves

Abstract When a pairing $$e: {\mathbb {G}}_1 \times {\mathbb {G}}_2 \rightarrow {\mathbb {G}}_{T}$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>e</mml:mi> <mml:mo>:</mml:mo> <mml:msub> <mml:mi>G</mml:mi> <mml:mn>1</mml:mn> </mml:msub> <mml:mo>×</mml:mo> <mml:msub> <mml:mi>G</mml:mi> <mml:mn>2</mml:mn> </mml:msub> <mml:mo>→</mml:mo> <mml:msub> <mml:mi>G</mml:mi> <mml:mi>T</mml:mi> </mml:msub> </mml:mrow> </mml:math> , on an elliptic curve E defined over a finite field $${\mathbb {F}}_q$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:msub> <mml:mi>F</mml:mi> <mml:mi>q</mml:mi> </mml:msub> </mml:math> , is exploited for an identity-based protocol, there is often the need to hash binary strings into $${\mathbb {G}}_1$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:msub> <mml:mi>G</mml:mi> <mml:mn>1</mml:mn> </mml:msub> </mml:math> and $${\mathbb {G}}_2$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:msub> <mml:mi>G</mml:mi> <mml:mn>2</mml:mn> </mml:msub> </mml:math> . Traditionally, if E admits a twist $${\tilde{E}}$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mover> <mml:mi>E</mml:mi> <mml:mo>~</mml:mo> </mml:mover> </mml:math> of order d , then $${\mathbb {G}}_1=E({\mathbb {F}}_q) \cap E[r]$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:msub> <mml:mi>G</mml:mi> <mml:mn>1</mml:mn> </mml:msub> <mml:mo>=</mml:mo> <mml:mi>E</mml:mi> <mml:mrow> <mml:mo>(</mml:mo> <mml:msub> <mml:mi>F</mml:mi> <mml:mi>q</mml:mi> </mml:msub> <mml:mo>)</mml:mo> </mml:mrow> <mml:mo>∩</mml:mo> <mml:mi>E</mml:mi> <mml:mrow> <mml:mo>[</mml:mo> <mml:mi>r</mml:mi> <mml:mo>]</mml:mo> </mml:mrow> </mml:mrow> </mml:math> , where r is a prime integer, and $${\mathbb {G}}_2={\tilde{E}}({\mathbb {F}}_{q^{k/d}}) \cap {\tilde{E}}[r]$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:msub> <mml:mi>G</mml:mi> <mml:mn>2</mml:mn> </mml:msub> <mml:mo>=</mml:mo> <mml:mover> <mml:mi>E</mml:mi> <mml:mo>~</mml:mo> </mml:mover> <mml:mrow> <mml:mo>(</mml:mo> <mml:msub> <mml:mi>F</mml:mi> <mml:msup> <mml:mi>q</mml:mi> <mml:mrow> <mml:mi>k</mml:mi> <mml:mo>/</mml:mo> <mml:mi>d</mml:mi> </mml:mrow> </mml:msup> </mml:msub> <mml:mo>)</mml:mo> </mml:mrow> <mml:mo>∩</mml:mo> <mml:mover> <mml:mi>E</mml:mi> <mml:mo>~</mml:mo> </mml:mover> <mml:mrow> <mml:mo>[</mml:mo> <mml:mi>r</mml:mi> <mml:mo>]</mml:mo> </mml:mrow> </mml:mrow> </mml:math> , where k is the embedding degree of E w.r.t. r . The standard approach for hashing into $${\mathbb {G}}_2$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:msub> <mml:mi>G</mml:mi> <mml:mn>2</mml:mn> </mml:msub> </mml:math> is to map to a general point $$P \in {\tilde{E}}({\mathbb {F}}_{q^{k/d}})$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>P</mml:mi> <mml:mo>∈</mml:mo> <mml:mover> <mml:mi>E</mml:mi> <mml:mo>~</mml:mo> </mml:mover> <mml:mrow> <mml:mo>(</mml:mo> <mml:msub> <mml:mi>F</mml:mi> <mml:msup> <mml:mi>q</mml:mi> <mml:mrow> <mml:mi>k</mml:mi> <mml:mo>/</mml:mo> <mml:mi>d</mml:mi> </mml:mrow> </mml:msup> </mml:msub> <mml:mo>)</mml:mo> </mml:mrow> </mml:mrow> </mml:math> and then multiply it by the cofactor $$c=\#{\tilde{E}}({\mathbb {F}}_{q^{k/d}})/r$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>c</mml:mi> <mml:mo>=</mml:mo> <mml:mo>#</mml:mo> <mml:mover> <mml:mi>E</mml:mi> <mml:mo>~</mml:mo> </mml:mover> <mml:mrow> <mml:mo>(</mml:mo> <mml:msub> <mml:mi>F</mml:mi> <mml:msup> <mml:mi>q</mml:mi> <mml:mrow> <mml:mi>k</mml:mi> <mml:mo>/</mml:mo> <mml:mi>d</mml:mi> </mml:mrow> </mml:msup> </mml:msub> <mml:mo>)</mml:mo> </mml:mrow> <mml:mo>/</mml:mo> <mml:mi>r</mml:mi> </mml:mrow> </mml:math> . Usually, the multiplication by c is computationally expensive. In order to speed up such a computation, two different methods—by Scott et al. (International conference on pairing-based cryptography. Springer, Berlin, pp 102–113, 2009) and by Fuentes-Castaneda et al. (International workshop on selected areas in cryptography)—have been proposed. In this paper we consider these two methods for BLS pairing-friendly curves having $$k \in \{12,24,30,42,48\}$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>k</mml:mi> <mml:mo>∈</mml:mo> <mml:mo>{</mml:mo> <mml:mn>12</mml:mn> <mml:mo>,</mml:mo> <mml:mn>24</mml:mn> <mml:mo>,</mml:mo> <mml:mn>30</mml:mn> <mml:mo>,</mml:mo> <mml:mn>42</mml:mn> <mml:mo>,</mml:mo> <mml:mn>48</mml:mn> <mml:mo>}</mml:mo> </mml:mrow> </mml:math> , providing efficiency comparisons. When $$k=42,48$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>k</mml:mi> <mml:mo>=</mml:mo> <mml:mn>42</mml:mn> <mml:mo>,</mml:mo> <mml:mn>48</mml:mn> </mml:mrow> </mml:math> , the application of Fuentes et al. method requires expensive computations which were infeasible for the computational power at our disposal. For these cases, we propose hashing maps that we obtained following Fuentes et al. idea.