¿Se requiere un vector de inicialización (IV) con datos únicos?

1

Cuando se utiliza para cifrar datos que son únicos, ¿se requiere un Vector de Inicialización (IV)? Por ejemplo, números de tarjetas de crédito o números de seguro social.

El punto final de un IV es asegurar que el texto cifrado de dos mensajes de texto simple no sea el mismo. Si el texto sin formato es único, ¿es necesario el IV?

    
pregunta webworm 23.02.2016 - 14:26
fuente

2 respuestas

2

El rol de la IV depende mucho del sistema de encriptación, por ejemplo, ya sea un cifrado de flujo o un cifrado de bloque, y, en este último caso, el modo de operación .

IV significa Vector de inicialización : este es un término genérico para el valor de inicio de cualquier proceso de bucle. En criptografía, usamos el término IV para designar un parámetro que se usa al inicio de un cálculo, cambia a menudo, pero no es secreto (de lo contrario, lo llamaríamos una clave ).

En general, reusar un IV es un pecado mortal, pero la cantidad de sufrimiento que implica un reuso IV puede variar. En el caso de un cifrado de bloque en modo CBC, la reutilización IV filtra inmediatamente si dos mensajes comienzan con la misma secuencia de bloque; y, más generalmente, la IV para CBC debe generarse de manera aleatoria, uniforme e impredecible; de lo contrario, está abierto a los ataques de texto sin formato seleccionados, como se demostró en el caso de SSL / TLS (donde se popularizó bajo el nombre de "ataque BEAST").

Si utiliza un cifrado de bloque en modo CTR o OFB, entonces la reutilización IV es mortal (se convierte en el infame "pad dos veces") lo que lleva a una fácil recuperación de los datos cifrados. Lo mismo se aplica a los cifrados de flujo que utilizan un IV. En el modo CFB, la reutilización es un poco menos exhaustiva en su devastación, pero todavía es grave.

Como reglas generales:

  • Un IV nunca nunca se reutilizará para una clave dada.
  • Puede salirse con la suya utilizando un IV fijo si (y solo si) nunca reutiliza una clave. Si cada valor clave se usa para un solo mensaje, entonces se puede usar un IV fijo. Sin embargo, como las claves son secretas mientras que las IV no lo son, cambiar la IV para cada mensaje se considera más fácil que cambiar la clave para cada mensaje (puede transmitir la IV al incluirla en un encabezado de archivo no cifrado, por ejemplo).
  • La mayoría de los modelos de ataque que hacen que el cifrado sea deseable también permiten alteraciones maliciosas, por lo que también necesita una integridad comprobada. Combinar integridad y encriptación no es tan fácil como parece; la forma sensata es utilizar un modo de cifrado que haga ambas cosas, lo que, en la práctica, significa GCM . GCM tiene sus propios requisitos para IV, a saber, que una IV nunca debe ser reutilizada, y eso es importante .
  • Es probable que cualquier cosa que maneje números de tarjetas de crédito esté dentro del alcance de PCI-DSS , y si hace la pregunta ha preguntado, entonces es probable que su sistema no cumpla con las normas PCI-DSS, en cuyo momento sería más inteligente dejar de usar el teclado y replantearse sus opciones de negocios.
respondido por el Thomas Pornin 23.02.2016 - 14:43
fuente
2

Este no es el único punto de los vectores de inicialización.

El propósito de IV también es garantizar que el uso repetido del esquema criptográfico con la misma clave no filtre información sobre la clave en sí. De la misma manera, esto se aplica internamente entre bloques en cifrados de bloques.

    
respondido por el M'vy 23.02.2016 - 14:33
fuente

Lea otras preguntas en las etiquetas