2010-08-09 17 views
6

Ha habido muchas preguntas con respecto a la generación IV, el cifrado y el uso compartido de IV entre el emisor y el receptor, pero quiero hacer una publicación explícita sobre la mejor manera de enviar el IV del remitente al receptor.Enviando IV junto con el texto de cifrado, ¿es seguro?

De todas las publicaciones que he visto hasta ahora, no estoy seguro de si es seguro enviar el IV en "texto plano" al anteponerlo al texto de cifrado. Entonces, la primera pregunta es, ¿es seguro hacerlo?

En segundo lugar, ¿hay una forma más segura de compartir un IV entre el emisor y el receptor cuando se comunica mediante el intercambio de mensajes?

Saludos

+0

Sé que esta es una pregunta antigua, pero si mi respuesta fue útil, ¿podría aceptarla como respondida? Muchas gracias. – mfanto

+0

Sí, lo haré con mucho gusto :) – Mystic

Respuesta

11

Sí, es seguro enviar el IV al aire libre. Aquí está la 'prueba' de por qué:

Take modo CBC por ejemplo:

alt text

se puede ver que el texto cifrado de un bloque es XOR el texto completo del siguiente bloque. La razón por la que necesitamos una IV es porque en el primer bloque, no hay texto cifrado previo para usar. Si existiera un riesgo de seguridad al tener el IV secreto, entonces el riesgo de seguridad estaría presente para cada bloque posterior, ya que el texto cifrado cumple la misma función que el IV.

Dicho esto, sin embargo, debe asegurarse de MAC. Dependiendo de cómo envíe mensajes a los códigos de autenticación, alguien que manipule el IV podría manipular el texto en claro resultante al descifrarlo. El cifrado solo no proporciona la integridad de los mensajes.

Además, para la generación IV, depende de sus requisitos. Pero la mayoría de las veces, su IV debe ser aleatoria y no predecible.

+0

Gracias mattjf. Buena explicación. En una nota relacionada, ¿cuál es la relación entre el tamaño del texto original y el texto cifrado resultante? Probablemente necesite saber los tamaños si voy a extraer las partes relevantes. – Mystic

+2

Bueno, desafortunadamente la respuesta es, depende. Dependiendo de la cifra y el modo que use, variará. CBC es el modo más popular, que requiere IV y requiere que el texto plano se rellene hasta el tamaño del bloque. Entonces, digamos que quieres encriptar 4 bytes con AES CBC. Necesitaría 16 bytes para el IV, y esos 4 bytes deben completarse a 16 bytes, para un total de 32 bytes. Puede utilizar Robo de texto cifrado para evitar la expansión del bloque, o puede usar el modo AES CTR.¿Cómo estás MACing tus datos? Debe asegurarse de que nadie pueda alterar sus datos encriptados. – mfanto

+0

Continuación: Si puede dar los primitivos que está obligado a usar, podemos hacer una mejor recomendación. Pero, a decir verdad, no deberías estar diseñando criptosistemas. ¿Puedes usar un estándar o protocolo existente? ¿Qué estás tratando de lograr exactamente? – mfanto

1

Sí, es seguro hacerlo en texto plano con la advertencia de que no deben repetirse.

2

Sí, es seguro. Muchos protocolos como WEP y WPA transmitirán el IV en texto sin formato. Esto suele ser un requisito, ya que es imposible descifrar el mensaje sin conocer el iv. El ataque WEP más común consiste en capturar miles de IV, pero esto se debe a que RC4 es vulnerable a un Related Key Attack. Si está utilizando un cifrado simétrico seguro, entonces no tiene que preocuparse.

Una vulnerabilidad conocida que conozco relacionada con las IV es CWE-329, que requiere que la IV sea aleatoria, y this is why esto es un problema. Otro problema potencial es encriptar 2 mensajes con el mismo IV. Esto es un problema porque un atacante puede identificar otro mensaje de texto de cifrado encriptando muchos mensajes conocidos, haciendo conjeturas sobre qué texto de cifrado capturado tal vez sin conocer la clave.

Cuestiones relacionadas