Usando RSA con 3DES en lugar de 3DES sin formato. ¿Tiene sentido?

8

Tengo un código legado grande. Actualmente utiliza el cifrado 3DES para una aplicación basada en la red. Encripta los paquetes de datos con una clave principal. Esta clave se utiliza para cifrar y descifrar (simétrico). Y para una doble seguridad, estamos cifrando esta clave principal nuevamente con otra clave (esta vez está usando una clave que está codificada en el propio código).

Discúlpeme si no uso oraciones que tengan sentido para usted, ya que soy nuevo en este sector. Solo tengo este código heredado y la forma de usar 3DES no tiene ningún sentido para mí. No es seguro, tenemos una clave codificada en nuestro código y no me gustó la forma en que se usa 3DES aquí. Porque todo se basa en el cifrado simétrico.

Por lo tanto, me dicen que deberíamos usar RSA y ellos me entregan un plan de diseño sobre cómo implementar RSA junto con 3DES. Se les ocurrió este diseño (dijeron que inventaron este diseño y es la única forma de hacerlo):

En el cliente:

  • Crear una clave 3DES aleatoria cada vez
  • Cifre los datos con esta clave
  • Cifre la clave utilizada para 3DES con RSA y prepárela al bloque de datos

En el servidor:

  • Descifre los datos incluidos con la clave pública RSA del cliente para obtener la clave 3DES
  • Descifre el bloque de datos restante con la clave 3DES

He preguntado por el significado de usar dos algoritmos de cifrado diferentes (RSA y 3DES). Pregunté por qué no solo usamos RSA para todo, en lugar de usar dos algoritmos diferentes y combinarlos.

Dijeron que el cifrado de todos los datos costaría más y es costoso (en términos de rendimiento). Sin embargo, si simplemente ciframos la clave y la añadimos a los datos, no utilizará mucho rendimiento porque esta vez los datos son pequeños (antes de cifrar toda la información, pero esta vez solo ciframos la clave). p>

Ahora, ¿el nuevo enfoque de diseño es la forma correcta de hacer esto? O es una tontería y la mejor manera es implementarla solo RSA. ¿Cuál es la mejor manera de implementar una comunicación de datos segura? ¿O de alguna manera podría arreglar la forma anterior para hacerlo más seguro?

    
pregunta Fatih Arslan 13.06.2012 - 09:01
fuente

2 respuestas

12
  

Dijeron que el cifrado de todos los datos costaría más y es costoso (en términos de rendimiento).

Esto es correcto. RSA, un algoritmo de clave asimétrica necesita mucha más capacidad de computación / tiempo para cifrar / descifrar datos en comparación con un algoritmo de clave simétrica como DES / 3DES.

Los algoritmos de clave asimétrica se usan generalmente como un medio para comunicar una clave para su uso en otro algoritmo de clave simétrica para la transferencia de datos.

Para obtener más información, consulte: enlace

Ejemplo básico tomado de wikipedia:

  

Para cifrar un mensaje dirigido a Alicia en un sistema criptográfico híbrido, Bob hace lo siguiente:

     

1) Obtiene la clave pública de Alice.

     

2) Genera una nueva clave simétrica para el esquema de encapsulación de datos.

     

3) Encripta el mensaje bajo el esquema de encapsulación de datos, utilizando la clave simétrica que se acaba de generar.

     

4) Cifre la clave simétrica bajo el esquema de encapsulación de clave, usando la clave pública de Alice.   Envía ambos cifrados a Alice.

     

Para descifrar este texto cifrado híbrido, Alice hace lo siguiente:

     

1) Utiliza su clave privada para descifrar la clave simétrica contenida en el segmento de encapsulación de clave.

     

2) Utiliza esta clave simétrica para descifrar el mensaje contenido en el segmento de encapsulación de datos.

¿Quizás como una mejora, su empresa consideraría usar AES en lugar de 3DES?

    
respondido por el Ayrx 13.06.2012 - 09:22
fuente
8

Terry Chia dio una buena respuesta sobre cómo y por qué combina RSA con un esquema de cifrado de clave simétrica y estoy de acuerdo en que debe hacerlo.

Sin embargo, otra cosa que dijiste en tu pregunta se destacó por lo que quise abordar eso. Usted dijo "Descifra los paquetes de datos con una clave pública que fue dada (ingresada) por alguien en la máquina (donde ocurrió el descifrado)". No estoy seguro de lo que querías decir con eso, pero te responderé como si quisieras decir algo que cambia la respuesta "correcta".

Uno de los problemas más difíciles con todos los sistemas de encriptación es mantener las claves seguras. La mejor solución, utilizada en aplicaciones de alta seguridad, es almacenar las claves en una unidad especializada de cifrado / descifrado que tenga seguridad electrónica y física, de manera que la clave no pueda extraerse del dispositivo. O bien la clave se genera dentro del dispositivo desde un generador de números aleatorios criptográficamente seguro o se programa en el dispositivo de forma segura. Después de eso, todo el cifrado y descifrado que debe realizarse con esa clave lo realiza el propio dispositivo y la seguridad de la clave se administra mediante la protección física del dispositivo.

Entonces, si está utilizando un dispositivo como ese para administrar las claves públicas y privadas de RSA, eso determina mucho cómo maneja otros aspectos del sistema de cifrado en general. Y si ese dispositivo también puede administrar claves y cifrado 3DES, entonces eso también cambia las cosas. Además, puede estar en un entorno regulatorio y / o de integración de sistemas que dicta el uso de 3DES de ciertas maneras. Todos estos factores deben tenerse en cuenta al diseñar la solución, así que indíquenos si alguno de ellos se aplica de tal manera que la solución de Terry sea inaplicable para su situación.

Sin embargo, en general, un sistema de sistemas híbrido que usa RSA para intercambiar una clave AES de 256 bits que se genera nuevamente para cada comunicación por un generador de números aleatorios criptográficamente seguro y luego encripta el resto de la comunicación utilizando AES con esa clave sería una excelente solucion Sin embargo, asegúrese de que su mecanismo de generación de claves sea criptográficamente seguro. Muchos, muchos esquemas de generación de claves se han roto, generalmente debido a debilidades en los generadores de números aleatorios. Debe utilizar uno que haya sido auditado y certificado para uso criptográfico.

    
respondido por el Major Major 13.06.2012 - 10:46
fuente

Lea otras preguntas en las etiquetas