En criptografía , una familia de funciones pseudoaleatorias , abreviada como PRF , es una colección de funciones computables de manera eficiente que emulan un oráculo aleatorio de la siguiente manera: ningún algoritmo eficiente puede distinguir (con una ventaja significativa ) entre una función elegida aleatoriamente de la familia PRF y un oráculo aleatorio (una función cuyos resultados se fijan completamente al azar). Las funciones pseudoaleatorias son herramientas vitales en la construcción de primitivas criptográficas , especialmente esquemas de cifrado seguro .
Las funciones pseudoaleatorias no deben confundirse con los generadores pseudoaleatorios (PRG). La garantía de un PRG es que una única salida parece aleatoria si la entrada se eligió al azar. Por otro lado, la garantía de una PRF es que todas sus salidas parecen aleatorias, independientemente de cómo se eligieron las entradas correspondientes, siempre que la función se haya extraído al azar de la familia PRF.
Se puede construir una familia de funciones pseudoaleatorias a partir de cualquier generador pseudoaleatorio, utilizando, por ejemplo, la construcción "GGM" dada por Goldreich , Goldwasser y Micali . [1] Si bien en la práctica, los cifrados de bloque se utilizan en la mayoría de los casos donde se necesita una función pseudoaleatoria, en general no constituyen una familia de funciones pseudoaleatorias, ya que los cifrados de bloque como AES se definen solo para un número limitado de tamaños de clave y de entrada. [2]
Una PRF es una función determinista eficiente (es decir, computable en tiempo polinomial) que asigna dos conjuntos distintos (dominio y rango) y parece una función verdaderamente aleatoria.
En esencia, una función verdaderamente aleatoria estaría compuesta simplemente por una tabla de búsqueda llena de entradas aleatorias distribuidas uniformemente. Sin embargo, en la práctica, a una función PRF se le da una cadena de entrada en el dominio y una semilla aleatoria oculta y se ejecuta varias veces con la misma cadena de entrada y semilla, y siempre devuelve el mismo valor. No obstante, dada una cadena de entrada arbitraria, la salida parece aleatoria si la semilla se toma de una distribución uniforme.
Se considera que una función de repetición de pulsos es buena si su comportamiento es indistinguible del de una función verdaderamente aleatoria. Por lo tanto, dada una salida de la función verdaderamente aleatoria o de una función de repetición de pulsos, no debería haber ningún método eficiente para determinar correctamente si la salida fue producida por la función verdaderamente aleatoria o por la función de repetición de pulsos.
Las funciones pseudoaleatorias toman entradas . Tanto el tamaño de entrada como el de salida dependen únicamente del tamaño del índice .
Una familia de funciones,
es pseudoaleatorio si se cumplen las siguientes condiciones:
En una función pseudoaleatoria inconsciente, abreviada como OPRF, la información se oculta a dos partes que están involucradas en una PRF. [4] Es decir, si Alice criptográficamente convierte su valor secreto en hash, criptográficamente ciega el hash para producir el mensaje que envía a Bob, y Bob mezcla su valor secreto y le devuelve el resultado a Alice, quien lo desenmascara para obtener el resultado final, Bob no puede ver ni el valor secreto de Alice ni el resultado final, y Alice no puede ver la entrada secreta de Bob, pero Alice ve el resultado final que es una PRF de las dos entradas: una PRF del secreto de Alice y el secreto de Bob. [5] Esto permite que las transacciones de información criptográfica sensible sean seguras incluso entre partes que no son de confianza.
Se utiliza una OPRF en algunas implementaciones de acuerdos de clave autenticados por contraseña . [5]
Se utiliza un OPRF en la función de Monitor de contraseñas en Microsoft Edge . [6]
Consulte el artículo principal sobre Funciones pseudoaleatorias ajenas .
Los PRF se pueden utilizar para: [7]