¿Puedo usar un TimeStamp también como IV?

3

Para una aplicación académica, uso AES-GCM para cifrar mis marcos entre 2 partes.

Para mejorar la seguridad y reducir la posibilidad de repetición, me gustaría usar un TimeStamp en mis intercambios de marcos. Pero, mientras uso el modo GCM, necesito transmitir el Initialisation Vector además del ciphertext (y el MAC).

Mi idea es: ¿podría ser posible usar la IV como TimeStamp también?

El IV se usaría para descifrar el ciphetext , y luego para verificar si el mensaje no es demasiado antiguo.

Por lo tanto, una modificación en el TimeStamp hará que el ciphertext sea descifrable.

El siguiente paso será producir un TimeStamp en una forma larga, para no reducir la seguridad. ¿Alguna idea de cómo emitir un TimeStamp como este?

    
pregunta EisenHeim 17.03.2016 - 17:26
fuente

2 respuestas

6

Cada modo de encriptación tiene sus requisitos para el IV. Para GCM , los requisitos son simples (consulte NIST SP 800-38D para más detalles):

  • La longitud debe estar entre 1 y 2 61 -1 bytes. Se recomienda que la longitud del IV sea exactamente 12 bytes (96 bits); si no lo está, GCM deberá rellenar y / o rellenar el IV primero, lo que no es compatible con todas las implementaciones, y aumenta el riesgo de colisión falsa.

  • Para cualquier clave dada K , nunca usarás dos veces el mismo IV.

En particular, en GCM (a diferencia de, digamos, CBC), no hay necesidad de que el IV sea aleatorio e impredecible; solo se requiere unicidad.

Por lo tanto, un valor de 96 bits extraído de un reloj monotónico (supongo que eso es lo que quiere decir con "marca de tiempo") es un buen IV, siempre que se ocupe de lo siguiente:

  1. Si encripta varios mensajes en rápida sucesión, pueden terminar usando la misma marca de tiempo, dependiendo de la precisión del reloj del sistema y la velocidad de la CPU. DEBES incluir alguna prueba para evitar tal ocurrencia.

  2. El reloj del sistema puede variar, ya sea automáticamente o a través de la acción humana (el usuario nota que el reloj es apagado y lo ajusta). Tener un reloj realmente monotónico puede ser difícil en general.

respondido por el Tom Leek 17.03.2016 - 17:42
fuente
1

Suponiendo que elija la marca de tiempo para cambiar lo suficientemente pronto (por ejemplo, tenga una precisión razonable de modo que sea muy probable que sea diferente cada vez) y que todos los demás parámetros estén bien:

Deberías estar bien usando la hora actual como IV .

Por ejemplo, podría usar la marca de tiempo de Unix con una precisión de milisegundos. La cantidad de entropía que realmente contiene el IV (por ejemplo, cuánto tiempo dura) no debería influir en la seguridad del cifrado de bloque que está utilizando.

    
respondido por el Tobi Nary 17.03.2016 - 17:35
fuente

Lea otras preguntas en las etiquetas