combinación de RSA y AES en una situación fuera de línea

2

Necesito solicitar y recibir datos de forma segura de un servidor. El cliente tiene la clave pública RSA y el servidor tiene la clave privada RSA. Así que estoy generando una clave aleatoria para el cifrado AES-128 / CBC y cifrando mis datos utilizando este cifrado. La clave se cifra mediante la clave pública RSA y se descifra al final del servidor, de modo que tanto el cliente como el servidor pueden comunicarse para la sesión.

Ahora, tengo un requisito donde necesito hacer esto de manera offline. La solicitud cifrada se enviará al administrador del servidor y él generará la respuesta cifrada. La clave simétrica no debe almacenarse en el Disco, para su uso posterior. ¿Cómo debe compartir el administrador del servidor la clave simétrica con el cliente?

Quizás, creando un par de claves más, en cuyo caso el cliente tendrá la clave privada (aparte de la clave pública que ya tiene) y el servidor tendrá una clave pública .

¿Pero eso es seguro?

    
pregunta adnan kamili 06.02.2015 - 10:16
fuente

2 respuestas

3

La idea de usar claves simétricas sobre el cifrado asimétrico se deriva del hecho de que el canal de comunicación en línea no puede permitirse el cálculo requerido para el cifrado asimétrico en todo momento, si cumplen con algunos criterios de rendimiento (por ejemplo, el tiempo). Tener un apretón de manos asimétrico garantiza la confidencialidad de la clave simétrica que se utilizará con el algoritmo simétrico más barato para la sesión. Estas sesiones deben tener una duración bastante corta antes de que caduque su clave. Esto se debe al hecho de que el cifrado simétrico se puede romper en tiempos más cortos que el asimétrico. Sin embargo, los datos transmitidos a través de un canal de este tipo generalmente no son más relevantes cuando esto puede suceder en teoría (más el hecho de que el mensaje en sí no se almacena en caché en un período prolongado).

Si sus datos no pueden dañarlo si se descifran en, digamos, 3 meses, entonces el cifrado simétrico es una buena forma de proceder. Sin embargo, aún debe asegurarse de no reutilizar la clave de esta comunicación para otra comunicación (supongo que esto es lo que quiere decir al decir "¿la clave simétrica no debe almacenarse en el disco"?). Si sus datos tienen una fecha de vencimiento más larga, probablemente debería mirar hacia un cifrado asimétrico bidireccional (con cada cliente / servidor que tenga un par de claves). Al estar fuera de línea, el tiempo requerido para cifrar los datos es irrelevante y el proceso fuera de línea es más propenso a dejar "rastros" de sus datos cifrados en alguna parte.

Usted preguntó también "es tan seguro". Bueno, depende de qué "seguridad" está buscando. No hay seguridad si es perfecta. Incluso el cifrado asimétrico requiere que confíes en el medio utilizado para obtener la clave pública. Espero que el párrafo anterior le haya dado suficientes pistas sobre cómo evaluar sus riesgos, por lo tanto decida qué tan seguro está.

    
respondido por el M'vy 06.02.2015 - 10:44
fuente
0

Esto es lo que finalmente hice. Puede tener agujeros de seguridad, pero no se me ocurre nada mejor:

Creé un par de claves adicionales para las cuales Public key_2 está en Server y Private key_2 en Client Side. Cuando los datos se envían al cliente de forma fuera de línea, el servidor crea una clave AES de 128 bits aleatoria, cifra los datos y la clave se cifra mediante la clave pública_2. Además de eso, los datos cifrados se incluyen en hash y se firman con la clave privada_1. Todo esto cuando llega al cliente, el cliente vuelve a generar el hash, lo compara con el hash enviado desde el servidor, verifica la firma con la clave pública_1 y desencripta la clave AES con la clave privada_2.

    
respondido por el adnan kamili 07.02.2015 - 20:21
fuente

Lea otras preguntas en las etiquetas