2010-08-30 22 views
7

Tengo un examen mañana en Desarrollo avanzado, pero estoy atascado en el tema de Encriptación. Lo he leído en http://support.microsoft.com/kb/246071. Sin embargo, todavía estoy confundido.Cifrado asimétrico

Si un mensaje se cifra mediante Cifrado asimétrico, utilizando la clave pública, ¿cómo va a saber el descifrador la clave privada con la que descifrarlo? Seguramente, la única forma de hacerlo es hacer pública la clave privada, pero eso vence al objeto de Cifrado asimétrico.

¿Puede alguien explicar esto de una manera que un no-técnico podría entenderlo? Su único Cifrado Asimétrico no lo entiendo, no Cifrado Simétrico. Gracias por adelantado.

Saludos,

Richard

Editar: para resumir todas las respuestas en el caso de una aplicación web (el uso específico para el que necesito saber acerca de este):

  1. El usuario visita un sitio web;
  2. Se solicita al usuario que proporcione una clave pública;
  3. El usuario crea pares de claves públicas y privadas, mantiene el privado como privado y devuelve la clave pública al servidor;
  4. El servidor usa la clave pública para encriptar todo lo que se debe enviar al usuario y envía la información al usuario;
  5. El usuario usa su clave privada para descifrar la respuesta del servidor;
  6. El usuario hace lo que necesita y devuelve una respuesta al servidor, utilizando la clave privada para encriptarla;
  7. El servidor descifra utilizando la clave pública. Los pasos 4 a 7 pueden continuar muchas veces, o solo pueden ocurrir una vez, o solo pueden ocurrir 4 y 5.

¿Es esto todo correcto? Si es así, debería ser todo lo que necesito saber para el examen. No debería pensar que necesitaría saber más para obtener el 40% como máximo si surgiera una pregunta sobre este tema, aunque mencionaré la existencia de certificados y firmas.

Gracias por toda la ayuda.

Saludos,

Richard

Editar: Bueno, yo acabo de regresar de mi examen y fue bastante bien, creo. Pero no surgió ninguna pregunta sobre la criptografía, sin embargo ... La ayuda fue apreciada de todos modos. Gracias a todos.

Saludos,

Richard

+1

http://en.wikipedia.org/wiki/Public-key_cryptography? –

+1

Por cierto, si está interesado en la criptografía, debe echar un vistazo a "The Code Book" por Simon Singh –

+0

Gracias por el enlace a wiki, sin embargo, a) se nos ha dicho que nunca usemos wiki (todavía lo hago de todos modos para la mayoría de las cosas !!) yb) la forma en que se ha explicado aquí es mucho más fácil de entender que la wiki. Sin embargo, wiki tiene algunos buenos capítulos sobre implicaciones prácticas similares. – ClarkeyBoy

Respuesta

7

Alice crea su clave privada + clave pública. Ella mantiene su clave privada privada. Ella hace pública su clave pública.

Bob toma la clave pública de Alice (¡primero debe verificar, que es realmente la clave pública de Alice!), Y la usa para encriptar un mensaje que envía a Alice.

Alice puede descifrar el mensaje utilizando su clave privada.

+0

Por lo que entiendo, funciona al revés también: Alice puede encriptar usando su clave privada y luego Bob puede descifrar. Buena forma de explicarlo. Gracias. – ClarkeyBoy

+0

No. En este escenario, Bob tendría que usar la clave pública para descifrar. Pero cualquier otra persona también conoce la clave pública (¡es pública!) Y también podría descifrarla. – Jens

+0

@Jens: no es útil para el cifrado (en el sentido de secreto), pero se puede usar para firmar mensajes. Nota: Según el esquema de cifrado, puede ser importante utilizar diferentes claves para la firma y el cifrado (consulte, por ejemplo, http://security.stackexchange.com/q/1806) –

2

La clave pública se proporciona a la "cifrador" por el "descifrador", por lo tanto, por definición, el "descifrador" conoce la clave privada (porque es parte de el par de claves creado por el "descifrador".

+0

Ah, ¿estás diciendo que el descifrador codifica el mensaje con la clave privada, por lo que el encriptador puede descifrar el mensaje y luego enviar un mensaje cifrado con la clave pública que solo un usuario con la clave privada original puede descifrar? Eso tiene sentido, a menos que un hacker se apodere del mensaje original que tiene la clave pública con él. ¿O todavía no lo entiendo? – ClarkeyBoy

+1

No ... con la criptografía asimétrica debe enviar a otras personas solo su clave pública. No importa quién escuche ese mensaje, cualquiera puede encriptar información usando su clave pública y enviársela. Si alguien está escuchando, no importa, porque solo usted tiene la clave privada (que nunca se debe transmitir). – Sebastian

+0

Entonces, de esto lo tomo, ¿quiere decir que, en una aplicación web, son los clientes (usuarios) quienes proporcionan la clave pública al servidor y mantienen la clave privada ...? Si es así, eso tiene mucho sentido. Gracias. – ClarkeyBoy

1

digamos que "descifrador" = D, y "cifrador" = E.

D enviado previamente su clave pública a e, por lo que e puede cifrar el mesage.Como solo D conoce su propia clave privada, solo D sabrá cómo descifrar el mensaje que E acaba de enviarle (recuerde: una clave se usa para cifrar, la otra para descifrar). De esta manera, obtienes privacidad.

5

Otros han proporcionado una descripción "genérica" ​​y voy a profundizar en el lado de la vida real.

La mayoría de los estándares modernos de cifrado asimétrico operan no con claves brutas públicas y privadas, sino con envoltorios más complejos, como certificados X.509 o claves OpenPGP (estas son las dos infraestructuras de encriptación asimétricas más populares hoy en día). Tanto los certificados como las claves OpenPGP contienen información adicional que les permite identificarse, buscarse y administrarse fácilmente.

Ahora, el bloque de datos cifrados normalmente incluye la parte pública (es decir, el certificado o la clave pública OpenPGP) utilizada para el cifrado, o al menos la ID (hash de esta parte pública). El destinatario de los datos generalmente tiene (o se supone que tiene) partes públicas y privadas (las claves privadas generalmente se mantienen juntas con certificados o claves públicas openpgp) en la mano. Por lo tanto, cuando el destinatario recibe los datos encriptados, sabe que necesita buscar su parte privada de almacenamiento para la parte pública con una identificación determinada (o para una parte pública determinada cuando está incluida en los datos cifrados).

Existen casos en los que no se incluye nada. Entonces el destinatario no tiene nada que hacer más que probar todas las claves privadas disponibles para el descifrado. Pero estos casos son raros ya que por defecto el certificado o la identificación de la llave están presentes en el bloque de datos cifrados.

+0

Esta es una buena respuesta: debe agregar información de identificación al bloque/blob cifrado para identificar qué clave (s) lo descifrará. (Nombre, huella dactilar o hash de la clave pública) –

12

Una clave privada está destinada a ser conocida solo por su usuario legítimo y no distribuida. Su contraparte, la clave pública, puede distribuirse a cualquier persona.

Con base en esto, se puede conseguir 4 operaciones:

  • cifrar utilizando la clave pública
  • descifrado usando la clave señal privada
  • utilizando la clave privada
  • verificar la firma usando el público clave

El siguiente problema que puede encontrar es la unión de una identidad a una clave pública (como no lo haría) quiero encriptar algo con o confiar en algo firmado con la clave pública de un impostor). Hay varios modelos de distribuciones de claves públicas. Por lo general, se puede tener:

  • un web of trust, donde la gente se registra la asociación de uno al otro entre la clave pública y la identidad: Este suele ser el modelo de PGP.
  • a public key infrastructure (PKI) donde obtiene las autoridades de certificación para producir certificados, a menudo con productos intermedios, en una jerarquía de árbol. (PGP también puede usar este modelo, pero parece menos común).