
¿Has oído hablar del
cifrado funcional (FS)? Quizás escuchaste sobre eso, y por ti mismo lo pones a la par con el
cifrado homomórfico , que no es del todo incorrecto, pero no del todo correcto.
Echemos un vistazo a lo que FS está con usted hoy, analicemos un par de ejemplos y en qué se diferencia del cifrado totalmente homomórfico (PGS).
Primero decidamos a qué nos referimos cuando hablamos de FS. Más recientemente, en 2010, Dan Bonnet, Amit Sahai y Brent Waters formalizaron el concepto de FS. Aproximadamente FS se puede describir de la siguiente manera: este es un esquema de cifrado con una clave pública, donde diferentes claves para el descifrado permiten al usuario conocer ciertas funciones de los datos cifrados.
Entonces, en el esquema FS para la función F (·, ·), el cifrador con la clave maestra genera la clave s
k , que permite calcular la función F (k, ·) a partir de los datos cifrados para que el descifrador conozca el texto cifrado c de los datos x y la clave s
k , es capaz de calcular F (k, x) sin poder encontrar otra cosa que no sea el resultado de calcular una función a partir de x.
FS vs PGS
Si está familiarizado con el concepto de PGS, será interesante trazar el siguiente paralelo:
Con PGS, puede calcular cualquier función de datos cifrados sin descifrar estos datos. Esta es una oportunidad interesante para delegar la informática a terceros que no confían. La desventaja del enfoque es que el resultado también está encriptado, y para desencriptarlo, debe enviarlo al propietario de la clave privada. El proceso PGS se puede representar de la siguiente manera, donde E es el esquema de cifrado y F es la función que queremos calcular a partir de los datos cifrados:
E (x_1), E (x_2), ..., E (x_n) → E (F (x_1, x_2, · ·, x_n))
Por otro lado, con FS, el resultado está directamente disponible para nosotros inmediatamente después de los cálculos, es decir, lo siguiente está disponible para nosotros:
E (x_1), E (x_2), · ·, E (x_n) → F (x_1, x_2, · ·, x_n)
En cierto sentido, FS es un esquema que calcula y descifra simultáneamente el resultado, sin fugas de la clave privada y ninguna información sobre x
1 , x
2 , · · ·, x
n excepto el resultado del cálculo en sí.
Obviamente, no necesitamos que todos puedan calcular cualquier función que deseen, ya que de lo contrario sería fácil obtener información sobre parámetros individuales en texto claro (por ejemplo, calcular una función idéntica). Por lo tanto, solo el propietario de la clave privada puede descifrar E (x_i) y generar claves de liquidación para ciertas funciones de su elección. Esto significa que el FS requiere la presencia de una "autoridad central" que emita "claves de liquidación" a las personas responsables de los cálculos funcionales.
Es decir, FS es una generalización de la idea de cifrado con una clave pública, lo que permite a los usuarios delegar a terceros el cálculo de ciertas clases de funciones a partir de datos cifrados mediante la generación de ciertas claves secretas para estas funciones. A diferencia de los esquemas de cifrado estándar, le permite controlar con mayor precisión las capacidades de descifrado disponibles para terceros.
FS es extremadamente útil porque nos permite transferir intencionalmente cierta información sobre datos cifrados a ciertos usuarios. Por ejemplo, podemos obtener el valor promedio de un conjunto de datos cifrados sin revelar los datos en sí, u obtener más estadísticas sobre este conjunto. Con los problemas de seguridad actuales y los requisitos presentados por las nuevas leyes, como el RGPD, la necesidad de esquemas de FS efectivos se vuelve más clara, ya que permite a terceros procesar datos cifrados sin dar estos datos a nadie en su forma pura. Esto significa que podemos ir más allá de lo que permite la pseudoanonimización de datos personales, ¡garantizando una confidencialidad más estricta!
De vuelta a FS
Debido a su naturaleza general, FS adopta y combina muchos otros esquemas de cifrado avanzados que se estudiaron previamente de forma independiente, a saber:
cifrado basado en autenticación, cifrado de búsqueda , cifrado de vector oculto, cifrado basado en autenticación con patrones comodín,
cifrado basado en atributos , cifrado funcional con producto escalar.
Aunque los esquemas de FS todavía son muy jóvenes, han sucedido muchas cosas desde 2010, y ya hay muchos esquemas interesantes que le permiten hacer cosas que parecían muy complicadas hace 8 años. ¡Ya ha llegado al punto de que los informes sobre FS se organizan en ciertas conferencias criptográficas!
Veamos varios tipos diferentes de esquemas de FS. Por ejemplo:
- Cifrado funcional con un producto escalar (FSFS), donde el texto plano es un vector, y los datos cifrados junto con la clave se pueden usar para calcular el producto escalar de este vector con otro. FSSP tiene varias opciones: para muchos clientes, para muchas entradas, descentralizadas, con funciones de ocultación, etc.
- Cifrado basado en atributos (SHO), donde los datos cifrados se asocian con un conjunto de atributos y claves secretas junto con ciertas reglas que controlan qué texto cifrado se puede cifrar, dependiendo de los atributos que tengamos.
- FS "propósito general", que permite calcular la función f de cualquier tipo a partir de los datos cifrados Enc (x).
Sin embargo, es importante tener en cuenta aquí que, aunque ya se ha realizado mucho trabajo concentrándose en los aspectos teóricos de la FS para desarrollar esta área lo máximo posible, todas las FS de propósito general son demasiado ineficaces para el uso práctico en la actualidad. Este es uno de los temas de investigación del proyecto FENTEC (programa de investigación europeo de
Functional Encryption Technologies ): llevar la FS a la aplicabilidad práctica mediante el diseño y la implementación de esquemas prácticos que podrían utilizarse a escala industrial. En este proyecto, no solo se desarrollan nuevos esquemas con una funcionalidad más rica, sino también coprocesadores especiales que pueden acelerar aún más los cálculos requeridos, todo para acercar la teoría a la práctica. Se puede encontrar más información sobre este equipo en la
publicación del
blog del proyecto FENTEC.
¿Quieres usar FS hoy? Por favor use
Pero, ¿qué pasa si quieres usar FS hoy? ¡No debería haber ningún problema con eso! Como parte del proyecto FENTEC, un equipo de XLAB está involucrado en la implementación de muchos esquemas desarrollados por universidades asociadas en forma de
CiFEr C-library y
GoFE Go-library.
Puede leer más sobre las bibliotecas
en el blog de FENTEC con más detalle , o ir directamente a Github y comenzar a jugar con las
bibliotecas CiFEr y
GoFE . Por cierto, comprobamos que funcionan incluso en el navegador a través de WASM.
Incluso hay algunos ejemplos en el repositorio de Github del proyecto:
Todos los detalles terribles: lo que hay dentro del esquema FS
Entre los esquemas ya implementados, puede encontrar muchos esquemas llamados "cifrado funcional con un producto escalar". Pero, ¿qué significa este nombre? Debe tomarse literalmente: estos esquemas permiten a terceros calcular el resultado del producto escalar de dos vectores usando FS.
Suponga que desea cifrar un vector a y obtener el resultado de su producto escalar con el vector y. Para empezar, necesitamos una autoridad central para implementar FS.
En este caso, la autoridad central emite una "clave maestra pública" mpk, así como una clave de liquidación z
y para un vector dado y. Entonces, cualquiera que conozca la clave pública puede encriptar el vector a, permitiendo que cualquier tercero que tenga la clave z
y calcule <a, y> con E
mpk (a) y no sepa nada sobre el vector a.
Tenga en cuenta que en este esquema de FS, el vector y correspondiente a la clave computacional z
y debe ser conocido por un tercero para calcular el producto escalar. Es decir, solo el vector a sigue siendo un secreto.
¿Qué sucede si desea que ambos vectores, ay e, permanezcan en secreto, pero al mismo tiempo para que terceros puedan calcular su producto escalar?
Afortunadamente, esta área de investigación también ha logrado avances importantes en los últimos años. Se conoce como "FS con funciones de ocultación". De hecho, el esquema de cifrado del producto escalar "oculta las funciones" si las claves y el texto cifrado no proporcionan información adicional sobre los vectores ay e, a excepción de su producto escalar <a, y>. En los nuevos esquemas con FS, las funciones de ocultación son cada vez más comunes (
1 ,
2 ,
3 ).
Para resumir
Aunque el cifrado funcional ha aparecido recientemente, ya podemos imaginar muchas opciones para su uso en el futuro. Particularmente interesante es la capacidad de transferir el proceso de toma de decisiones, basado en el cifrado de datos de extremo a extremo, de los sistemas de fondo a ciertos sistemas de puerta de enlace en redes complejas. Llamamos a esto "toma de decisiones local", y esa oportunidad es un gran paso hacia la creación de redes seguras para el "Internet de las cosas" y otras redes altamente descentralizadas que desean implementar el cifrado de extremo a extremo sin perder demasiada capacidad de toma de decisiones a nivel de puerta de enlace.
Ahora estamos trabajando en un prototipo de un producto que, utilizando FS con un producto escalar, puede detectar el movimiento en la transmisión de video que va desde la cámara al sistema de fondo, en el nivel de puerta de enlace, utilizando el llamado "Vectores de movimiento" incluidos en el estándar H.264 / MPEG-4 AVC.
Visualización de vectores de movimiento en el cuadro cuando se codifica H.264 abre caricatura corta Big Buck BunnyTenga en cuenta cuán buenos son los vectores de movimiento como candidatos para su uso en esquemas con FS con un producto escalar, ¡porque un producto escalar se define en espacios vectoriales! Todavía estamos buscando las mejores opciones para los métodos de detección de movimiento, y esperamos obtener un prototipo completamente funcional usando FS para el reconocimiento de movimiento para fines de 2020.