security - significa - types of cryptography
¿El cifrado garantiza la integridad? (3)
Para construir un sistema seguro, ¿podemos asumir que el cifrado garantiza la integridad antes de iniciar una programación segura?
- Tanto en el cifrado de clave pública como en el simétrico, ¿mi pregunta está bien probada?
- Si no, ¿cuáles son las vulnerabilidades, puedes dar un ejemplo?
En resumen, la respuesta es no. La integridad y el secreto de los mensajes son diferentes y requieren herramientas diferentes.
Tomemos en consideración un simple lanzamiento de moneda, y en este caso apostamos por los resultados. El resultado es un bool simple y lo cifro utilizando un cifrado de flujo como RC4 que produce 1 bit cifrado y se lo envío por correo electrónico. No tienes la llave y te pido que me envíes la respuesta.
Algunos ataques pueden ocurrir en este escenario.
1) Un atacante podría modificar el bit en tránsito, si fuera un 0, hay un 50% de probabilidad de que se convierta en un 1 y todo lo contrario es cierto. Esto se debe a que RC4 produce una secuencia de prng que está XOR con el texto sin formato que produce el texto cifrado, similar a un pad de una vez.
2) Otra posibilidad es que pueda proporcionarle una clave diferente para asegurarme de que su respuesta sea incorrecta. Esto es fácil para la fuerza bruta, solo sigo probando las teclas hasta obtener el giro correcto de la broca.
Una solución es usar un cifrado de bloque en modo CMAC . Un CMAC es un código de autenticación de mensaje similar a un hmac pero utiliza un cifrado de bloque en lugar de una función de resumen de mensaje. La clave secreta (K) es la misma clave que utiliza para cifrar el mensaje. Esto agrega n + 1 bloques al texto cifrado. En mi caso, esto evita los ataques 1 y 2. Un atacante no puede voltear un bit simple porque el texto simple está rellenado, incluso si el mensaje solo ocupa 1 bit, debo transmitir un mínimo de 1 bloque usando un cifrado de bloque. El bloqueo de autenticación adicional me impide encadenar la clave y también proporciona integridad a cualquiera que intente modificar el texto cifrado en tránsito (aunque esto sería muy difícil de hacer en la práctica, la capa de seguridad adicional es útil).
WPA2 utiliza AES-CMAC por estas razones.
No. Esto es fácil de ver si considera el pad de una sola vez , un sistema simple (teóricamente) perfectamente seguro.
Si cambia cualquier bit de la salida, un bit del texto claro cambiará, y el destinatario no tiene forma de detectarlo.
Este es un caso obvio, pero la misma conclusión se aplica a la mayoría de los sistemas de encriptación. Solo proveen confidencialidad, no integridad.
Por lo tanto, es posible que desee agregar una firma digital . Curiosamente, cuando se utiliza la criptografía de clave pública, no es suficiente firmar y luego cifrar (SE), o cifrar y luego firmar (ES). Ambos son vulnerables a los ataques de repetición. Para obtener una solución generalmente segura, debe firmar-cifrar-firmar o cifrar-firmar-cifrar. Este paper explica por qué en detalle.
Si utiliza SE, el destinatario puede descifrar el mensaje y, a continuación, volver a cifrarlo en un destinatario diferente. Esto luego engaña al nuevo destinatario acerca del destinatario del remitente.
Si usa ES, un intruso puede eliminar la firma y agregar la suya. Por lo tanto, a pesar de que no pueden leer el mensaje, pueden tomar el crédito por ello, haciéndose pasar por el remitente original.
Si la integridad de los datos es una preocupación específica para usted, debe usar una función criptográfica hash , combinada con un algoritmo de cifrado.
Pero realmente se reduce a usar la herramienta correcta para el trabajo. Algunos algoritmos de encriptación pueden proporcionar algún nivel de validación de suma de comprobación integrado, otros pueden no.