PRF, IKE y función hash

5

El término PRF se menciona en la documentación del protocolo IKE (Internet Key Exchange) .

  • ¿Qué es un PRF?

  • ¿Cuál es la diferencia entre un PRF y una función hash?

  • ¿Qué PRF se utilizan en el protocolo IKE?

pregunta user46306 09.05.2014 - 21:02
fuente

1 respuesta

7

PRF significa PseudoRandom Function . Una PRF asignará la entrada a la salida de una manera determinista (la misma entrada siempre se asigna a la misma salida para la misma PRF) que parece indistinguible de la aleatoriedad para un atacante que no conoce los aspectos internos de la PRF (y no ha visto la PRF ya procese exactamente la misma entrada, incluso si han visto la PRF procesar muchas entradas similares).

Generalmente, los PRF se toman al azar de una Familia PRF. Puede pensar que la Familia PRF es una función que toma una entrada adicional (una semilla aleatoria, también conocida como clave aleatoria) que selecciona una PRF particular (que asigna la entrada a la salida). Entonces, si tiene una semilla de 128 bits en su familia de PRF, entonces hay 2 ^ 128 (340,282,366,920,938,463,463,374,607,431,768,211,456) PRF posibles que podría estar usando de esa familia. Esto contrasta con las funciones hash, donde solo hay docenas de funciones hash utilizadas comúnmente (MD5, SHA-1, SHA-256, SHA-512, etc.).

Digamos que sabías que "Hello" se asignó a 8b1a9953c4611296a827abf8c47804d7 (en hexadecimal). Un atacante puede darse cuenta rápidamente de que estoy usando MD5 y luego podría generar salidas para cualquier entrada que quisiera.

Sin embargo, HMAC - basado en hash MAC es una familia de PRF. Entonces, si toma la construcción de HMAC : H(K1 ++ H(K2 ++ m)) , donde ++ significa concatenación, H es una función hash ordinaria, y K1 y K2 son dos claves que se definen para derivar de la misma clave usando K1 = K XOR 0x5c5c...5c y K2 = K XOR 0x3636...36 . Ahora, si le dijera que mi PRF (un HMAC que usa una clave particular K) asigna "Hello" a 53a7e60d93a6853780d622f3b5bd641f , no habría forma de que un atacante (que no conoce K, pero sepa que estoy usando HMAC) MD5) para generar la salida para una entrada que nunca han visto antes.

Los PRF reales utilizados en el protocolo IKE se negocian entre el cliente y el servidor. Los especificados en el RFC para IKEv2 son HMAC_MD5, HMAC_SHA1, HMAC_TIGER (tres HMAC generados a partir de diferentes funciones hash) y AES128_XCBC . En el IKE RFC original, no se definieron los PRF que se utilizarían: "Actualmente no hay funciones pseudoaleatorias definidas . ".

Tenga en cuenta que la diferencia entre un PRF y una familia PRF a menudo no se realizará explícitamente. En la literatura, a menudo se incluirán dos entradas (una clave, un texto plano) y se generará una entrada.

En la criptografía aparecen dos conceptos relacionados: el PRP (Permutación pseudoaleatoria) y el PRG (Generador pseudoaleatorio).

Una permutación pseudoaleatoria (PRP) es una PRF que es de uno a uno, que es un tipo específico de PRF donde cada salida de la PRF (con la misma clave) solo puede generarse de exactamente una entrada. Esto permite invertir la función y deshacer el efecto de la aplicación de su aplicación; de este modo, puede aplicar el PRP (que requiere el conocimiento de una clave secreta) al texto simple para crear un texto cifrado, y luego aplicar la inversa del PRP al texto cifrado (usando la clave secreta) para descifrarlo. Por ejemplo, un cifrado de bloque como AES-128 es un PRP: toma un bloque de entrada de 128 bits, así como una clave de 128 bits, y asigna el bloque de texto plano a un bloque de texto cifrado exclusivo de 128 bits. Luego, estas operaciones se pueden invertir para asignar el bloque de texto cifrado al bloque de texto plano original (utilizando el inverso de AES-128 con esa clave secreta).

Un generador pseudoaleatorio (PRG) es una función que emite una secuencia de bits que aparece aleatoriamente en función de una inicialización inicial (por ejemplo, una clave aleatoria). Este flujo de bits se puede XORed con un mensaje largo de texto plano para cifrarlo (por lo que el texto cifrado parece aleatorio), y luego se puede descifrar al XORAR el flujo de bits del PRG con el texto cifrado. Una forma de generar un PRG es tomar un cifrado de bloque como AES-128 y usarlo en modo CTR. Es decir, cifrar los bloques sucesivos incrementados en uno con la misma clave y luego concatenar la salida, por ejemplo, PRG(K) = AES(K, 0) ++ AES(K, 1) ++ AES(K, 2) ++ AES(K, 3) ++ ... (donde ++ significa concatenación).

    
respondido por el dr jimbob 10.05.2014 - 15:44
fuente

Lea otras preguntas en las etiquetas