¿El cifrado asimétrico garantiza la integridad de los datos?

2

Tengo algunas restricciones de tamaño inusuales para mis datos que pueden ser relevantes para la solución prescrita.

El escenario es el siguiente. El servidor seguro A genera 240 bytes de datos que deben ser consumidos por un cliente fuera de línea B. El cliente B debe asegurarse de que el mensaje de 240 bytes no haya sido alterado. Tiendo a tropezar sin gloria en la semántica y la terminología del mundo de la seguridad, pero creo que lo que busco es "integridad de los datos".

Si sigo este proceso, ¿garantiza la "integridad de los datos"? (Me doy cuenta de que la garantía podría ser una palabra fuerte)

  1. Genere un par de claves públicas / privadas en el servidor A
  2. Realice un cifrado asimétrico en el mensaje de 240 bytes usando la clave privada (una operación de firma si lo entiendo correctamente)
  3. El cliente B recibe la clave pública y el mensaje cifrado (firmado)

Si el Cliente B logra descifrar el mensaje, ¿esto garantiza, al menos académicamente, que los datos no se han alterado?

Nota 1: la cantidad de bytes disponibles en el medio de transferencia al Cliente B es una prima, se podría tolerar un aumento de hasta un 40% debido al cifrado, por ejemplo, una firma RSA con un 2048 la clave de bits que da como resultado 256 bytes de mi mensaje de 240 bytes sería aceptable.

Nota 2: No hay expectativa de privacidad. No me importa si los datos pueden ser leídos por alguien. Solo que el esquema puede detectar si el mensaje ha sido manipulado.

Pregunta auxiliar: ¿Existe un algoritmo recomendado? He estado jugando con RSA usando claves de 2048 bits.

Gracias, magos de la seguridad, no sé cómo lo hacen.

    
pregunta Chris A. 09.04.2018 - 23:18
fuente

2 respuestas

1

Está en el camino correcto, lo que desea es usar un par de claves privada / pública para crear y verificar firmas.

Pero primero

Su comprensión de los algoritmos de firma es incorrecta. Se le ha dado el "estándar" encriptar el hash de la explicación de los datos y lo ha malinterpretado.

Primero, la explicación común es que usted encripta un hash de los datos, no los datos en sí. Si encripta un hash de los datos, entonces alguien que modifique los datos no sabrá cómo modificar el hash encriptado para que coincida. Si cifra los datos en sí, no hay nada que proporcione integridad. Un atacante puede modificarlo como desee (sin embargo, no podrá saber el valor descifrado desde el cual lo están cambiando).

En segundo lugar, esta explicación demasiado común es incorrecta (consulte aquí para obtener una explicación mejor pero más extensa). Esta explicación solo funciona para RSA, y ni siquiera es realmente precisa para RSA. Una de las operaciones realizadas para crear una firma RSA también se usa en el descifrado RSA, por lo que sería más exacto decir que una firma RSA es el descifrado del hash de los datos, pero luego está descifrando algo que, para empezar, nunca se cifró, lo que es aún más más confuso, y eso todavía no tiene en cuenta el diferente relleno requerido para las firmas y el cifrado.

Ahora la respuesta

Definitivamente, una firma es lo que está buscando, pero las firmas RSA son grandes (256 bytes para una clave de 2048 bits), por lo que le recomiendo que busque ECDSA , ya que las firmas son mucho más pequeñas para un nivel de seguridad similar. De acuerdo con ese artículo de Wikipedia, para tener un nivel de seguridad de 128 bits (muy estándar) su firma será de 512 bits, o 64 bytes, lo que parece aceptable. Simplemente, por favor, busque una biblioteca que lo haga por usted, es muy fácil arruinar estas cosas.

    
respondido por el AndrolGenhald 10.04.2018 - 01:59
fuente
0

No, el cifrado asimétrico no garantiza la integridad de los datos. Una forma de demostrar esto es exhibir un esquema de cifrado asimétrico que garantice la confidencialidad, pero sin embargo es maleable (y el adversario puede modifique los textos cifrados sin que el destinatario pueda detectarlos).

El enlace en el párrafo anterior explica que RSA, ElGamal y Paillier (algoritmos de cifrado asimétricos) son maleables, por lo que ya son tres ejemplos. Otra forma de ejemplo se desprende de que los sistemas de encriptación asimétrica casi prácticos son hybrid : utilizan asimétrico primitivas para proteger una clave de sesión simétrica, y luego usar un algoritmo de cifrado simétrico para procesar el mensaje de texto. Y como muchos algoritmos de cifrado simétricos también son maleables, usted puede construir fácilmente sistemas híbridos maleables.

Esa es la respuesta teórica. La respuesta práctica es no enrollar la suya : use implementaciones de cifrado bien comprobadas que hayan sido diseñadas para no caer en la trampa de la maleabilidad. Las soluciones típicas son utilizar firmas digitales (asimétricas) o cifrado autenticado (ya sea en un sistema simétrico o en la parte simétrica de un sistema híbrido).

    
respondido por el Luis Casillas 10.04.2018 - 02:41
fuente

Lea otras preguntas en las etiquetas