¿Es peligroso cifrar los datos con una clave privada?

6

He estado revisando el código de varias aplicaciones internas que manejan la transmisión segura de datos con sistemas externos. Estos siguen el siguiente proceso:

  • RSA cifra los datos con una clave pública de terceros
  • RSA cifra nuevamente usando nuestra propia clave privada
  • Transmitir datos
  • descifrado de terceros mediante nuestra clave pública
  • El tercero descifra nuevamente usando su propia clave privada

En este sistema, generamos nuevas claves privadas / públicas para cada tercero y todas las claves públicas se distribuyen de forma segura y luego se mantienen privadas.

No entiendo por qué cifraríamos los datos usando nuestra propia clave privada. Sospecho que la intención del diseñador era habilitar la verificación de que los datos provienen de nosotros y que esa misma persona no tenía conocimiento de firmar mensajes para implementar eso en su lugar. Desafortunadamente, esa persona ya no está cerca para que se le pregunte.

Estoy contento de que nuestros datos estén aceptablemente seguros porque los ciframos con la clave de un tercero, pero el cifrado de la clave privada no es lo suficientemente estándar como para sentir algo de incomodidad. ¿Hay algo de lo que debería preocuparme?

    
pregunta 16.02.2012 - 21:38
fuente

3 respuestas

7

parece que el código que está viendo está tomando un poco literalmente la primera descripción de cómo funcionan las firmas de RSA.

Cuando se describió RSA por primera vez, se trataba de un sistema de cifrado asimétrico: el remitente cifra los datos con la clave pública del destinatario, y la operación principal es una exponenciación modular que toma como entrada un número de módulo n (< em> n es el módulo, una parte de la clave pública) y devuelve un número de módulo n . Entonces alguien dijo: hey, si revertimos el proceso y desciframos algunos datos de entrada (con una clave privada, necesariamente), obtenemos una firma ya que cualquiera puede hacer lo contrario. Operación (cifrar con la clave pública), que cuenta como verificación de firma.

Esta es una descripción simplista de las firmas RSA, y en realidad no funciona porque descuida el efecto de padding , que es necesario para la seguridad (consulte PKCS#1 para la forma correcta de realizar el cifrado y las firmas RSA). Pero la idea de que las firmas son encriptación inversa (o "cifrar con la clave privada") es desafortunadamente generalizada y conduce a decenas de soluciones caseras que, invariablemente, todas son débiles de alguna manera (pero no necesariamente en una > manera obvia ). Lo más probable es que observe una solución casera.

    
respondido por el Thomas Pornin 19.09.2012 - 02:17
fuente
6

Es al menos una mala práctica, y probablemente peligrosa. Recomiendo encarecidamente cambiar el esquema que usas.

No debes cifrar el contenido con tu clave privada. Debes firmarlo con tu clave privada. Si bien la firma y el cifrado con clave privada son operaciones similares cuando se usa RSA, deben considerarse por separado. En particular, la firma funciona en un hash, no en el contenido real.

Dependiendo de cómo se implementa exactamente su sistema actual, es posible que un tercero lo engañe para que descifre los datos recibidos de otro tercero.

También podría ser posible engañarlo para que firme algo que no deseaba firmar de esa manera. Pero sin los detalles del esquema que utilizas, no puedo asegurarlo.

    
respondido por el CodesInChaos 16.02.2012 - 21:41
fuente
0

Los algoritmos PKI generalmente usan claves más largas y, por lo tanto, son más caros computacionalmente. Esa es una de las razones por las que SSL / TLS usa PKI para configurar la transmisión, pero luego usa una clave de clave compartida con una clave más corta.

Si es arriesgado cifrar el texto de otra persona con su clave, depende del cifrado que se utilice. Algunos sistemas de cifrado son vulnerables a ataques de texto sin formato elegido . El simple RSA es uno de estos. PKCS # 1 no lo es.

Pero como usted dice, si todo lo que necesita es autenticación, simplemente puede firmarla (aunque también se requiere su clave privada).

    
respondido por el Steven Parkes 16.02.2012 - 21:45
fuente

Lea otras preguntas en las etiquetas