¿Qué es una explicación intuitiva del algoritmo PMAC?

Echa un vistazo a las siguientes dos imágenes:


PRF y PRP son funciones pseudoaleatorias . Básicamente pueden considerarse generadores de números aleatorios; es decir, dadas algunas entradas, generarán valores que son indistinguibles de aleatorios , en lo que a nosotros respecta.

CBC MAC

La imagen inferior es un ejemplo de CBC MAC, que no es un algoritmo paralelo . Puede ver que el mensaje [math] m [/ math] está dividido en bloques, [math] m [0], m [1],… [/ math] y que cada bloque se utiliza como entrada para un PRF ([ matemáticas] k [/ matemáticas] es una clave, no te preocupes demasiado por eso). Luego requerimos la salida del PRF para un cálculo realizado en el siguiente bloque, que es:

[matemática] F (k, m [0]) \ oplus m [1] [/ matemática] – ([matemática] \ oplus [/ matemática] significa XOR)

Esto luego se alimenta al PRF y necesitamos la salida nuevamente para un cálculo realizado en [math] m [2] [/ math]. Por lo tanto, necesitamos que el resultado del bloque anterior continúe y, por lo tanto, no podemos calcular la “permutación” de cada bloque al mismo tiempo. Es bastante obvio que esto no es, por lo tanto, un algoritmo paralelo.

PMAC

PMAC es diferente a CBC MAC. Nuevamente dividimos el mensaje en bloques. Y antes de hacer algo con cada bloque, le damos como entrada a alguna función fácil de calcular [matemáticas] P [/ matemáticas] (de nuevo, [matemáticas] k [/ matemáticas] y [matemáticas] k_1 [/ matemáticas] son ​​claves , pero no te concentres en esto).
Tomamos la salida y la incorporamos a nuestro PRF. Ahora, en lugar de alimentar la salida del PRF al siguiente cálculo, nos aferramos a él. Nos movemos al siguiente bloque y hacemos exactamente lo mismo, manteniendo el valor al final.
Repetimos esto para cada bloque del mensaje, hasta que finalmente, al final, hagamos XOR de todas las salidas que mantenemos juntas y usamos esto como entrada para una llamada final al PRF. La salida del PRF es entonces la etiqueta para el mensaje.

Puede ver que cada serie de cálculos en un bloque determinado del mensaje requiere solo el bloque y la capacidad de calcular las funciones [matemáticas] P [/ matemáticas] y [matemáticas] F [/ matemáticas]. No hubo alimentación hacia delante de la salida de la “permutación” de cada bloque, como con CBC MAC.
Lo que esto significa es que puede calcular simultáneamente la “permutación” de cada bloque del mensaje, y luego simplemente enviar todos los resultados a un solo lugar, donde están todos XOR’d juntos y ese resultado se alimenta al PRF para Un tiempo final. Debido a esto, PMAC es un algoritmo paralelo.