El esquema Boneh-Franklin es un sistema de cifrado basado en identidad propuesto por Dan Boneh y Matthew K. Franklin en 2001. [1] Este artículo hace referencia a la versión del protocolo denominada BasicIdent . Es una aplicación de emparejamientos ( Weil pairing ) sobre curvas elípticas y campos finitos .
Grupos y parámetros
Como el esquema se basa en emparejamientos , todos los cálculos se realizan en dos grupos y :![{\displaystyle \textstyle G_ {1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle G_ {2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Para , sea primo y considere la curva elíptica sobre . Tenga en cuenta que esta curva no es singular, ya que solo es igual en el caso que está excluido por la restricción adicional.![{\displaystyle \textstyle G_ {1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle p}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle E:y^{2}=x^{3}+1}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle \mathbb {Z} /p\mathbb {Z} }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle 4a^{3}+27b^{2}=27=3^{3}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle 0}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle p=3}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Sea un factor primo de (que es del orden de ) y encuentre un punto de orden . es el conjunto de puntos generado por :![{\displaystyle \textstyle q>3}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle p+1}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle E}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle P\en E}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle q}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle G_ {1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle P}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle \left\{nP\|n\in \left\{0,\ldots ,q-1\right\}\right\}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
es el subgrupo de orden de . No necesitamos construir este grupo explícitamente (esto se hace mediante el emparejamiento) y por lo tanto no tenemos que encontrar un generador.![{\displaystyle \textstyle q}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle GF\left(p^{2}\right)^{*}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
se considera un grupo aditivo , siendo un subgrupo del grupo aditivo de puntos de , mientras que se considera un grupo multiplicativo , siendo un subgrupo del grupo multiplicativo del cuerpo finito .![{\displaystyle \textstyle E}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle G_ {2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle GF(p^{2})^{*}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Descripción del protocolo
Configuración
El generador de claves públicas (PKG) elige:
- los grupos públicos (con generador ) y como se indicó anteriormente, con el tamaño dependiendo del parámetro de seguridad ,
![{\displaystyle \textstyle G_ {1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle P}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle G_ {2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle q}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle k}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- el emparejamiento correspondiente ,
![{\displaystyle \textstyle e}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- una clave maestra privada aleatoria ,
![{\displaystyle \textstyle K_{m}=s\in \mathbb {Z} _{q}^{*}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- una clave pública ,
![{\displaystyle \textstyle K_{pub}=sP}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- una función hash pública ,
![{\displaystyle \textstyle H_{1}:\left\{0,1\right\}^{*}\rightarrow G_{1}^{*}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- una función hash pública para algunos fijos y
![{\displaystyle \textstyle H_{2}:G_{2}\rightarrow \left\{0,1\right\}^{n}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle n}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- el espacio de mensajes y el espacio de cifrado
![{\displaystyle \textstyle {\mathcal {M}}=\left\{0,1\right\}^{n},{\mathcal {C}}=G_{1}^{*}\times \left\ {0,1\derecha\}^{n}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Extracción
Para crear la clave pública , el PKG calcula ![{\displaystyle \textstyle ID\in \left\{0,1\right\}^{*}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
y- la clave privada que se proporciona al usuario.
![{\displaystyle \textstyle d_{ID}=sQ_{ID}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Cifrado
Dado , el texto cifrado se obtiene de la siguiente manera: ![{\displaystyle \textstyle m\in {\mathcal {M}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle c}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
,- elige al azar ,
![{\displaystyle \textstyle r\in \mathbb {Z} _ {q}^{*}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- calcular y
![{\displaystyle \textstyle g_{ID}=e\left(Q_{ID},K_{pub}\right)\in G_{2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- colocar .
![{\displaystyle \textstyle c=\left(rP,m\oplus H_{2}\left(g_{ID}^{r}\right)\right)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Tenga en cuenta que es la clave pública del PKG y, por lo tanto, independiente del ID del destinatario.![{\displaystyle \textstyle K_ {pub}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Descifrado
Dado , el texto sin formato se puede recuperar utilizando la clave privada:![{\displaystyle \textstyle c=\left(u,v\right)\in {\mathcal {C}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle m=v\oplus H_{2}\left(e\left(d_{ID},u\right)\right)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Exactitud
El paso principal tanto en el cifrado como en el descifrado es emplear el emparejamiento y generar una máscara (como una clave simétrica) que se combina con el texto sin formato. Entonces, para verificar la exactitud del protocolo, es necesario verificar que un remitente y un destinatario honestos terminen con los mismos valores aquí.![{\displaystyle \textstyle H_ {2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
La entidad de cifrado utiliza , mientras que para el descifrado se aplica. Debido a las propiedades de los emparejamientos, se deduce que:![{\displaystyle \textstyle H_{2}\left(g_{ID}^{r}\right)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \textstyle H_{2}\left(e\left(d_{ID},u\right)\right)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle {\begin{aligned}H_{2}\left(e\left(d_{ID},u\right)\right)&=H_{2}\left(e\left(sQ_{ID}, rP\right)\right)\\&=H_{2}\left(e\left(Q_{ID},P\right)^{rs}\right)\\&=H_{2}\left(e \left(Q_{ID},sP\right)^{r}\right)\\&=H_{2}\left(e\left(Q_{ID},K_{pub}\right)^{r} \right)\\&=H_{2}\left(g_{ID}^{r}\right)\\\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Seguridad
La seguridad del esquema depende de la dureza del problema bilineal de Diffie-Hellman (BDH) para los grupos utilizados. Se ha demostrado que en un modelo de oráculo aleatorio , el protocolo es semánticamente seguro bajo el supuesto de BDH.
Mejoras
BasicIdent no es un texto cifrado seguro . Sin embargo, existe un método de transformación universal debido a Fujisaki y Okamoto [2] que permite la conversión a un esquema que tenga esta propiedad llamado FullIdent .
Referencias
- ^ Dan Boneh, Matthew K. Franklin, "Cifrado basado en identidad del emparejamiento Weil", Avances en criptología - Actas de CRYPTO 2001 (2001)
- ^ Eiichiro Fujisaki, Tatsuaki Okamoto, "Integración segura de esquemas de cifrado simétricos y asimétricos", Avances en criptología - Actas de CRYPTO 99 (1999). La versión completa apareció en J. Cryptol. (2013) 26: 80-101
enlaces externos
- Seminario 'Criptografía y seguridad en la banca'/'Criptología alternativa', Universidad del Ruhr en Bochum [ enlace muerto permanente ]
- Biblioteca P(airing) B(ased) C(ryptography), diseñada por Ben Lynn et al.