XADM: Cómo Secure Sockets Layer Works

Seleccione idioma Seleccione idioma
Id. de artículo: 245152 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo proporciona una introducción a cómo funciona Secure Sockets Layer (SSL).

Más información

Introducción a la criptografía mediante claves

Criptografía de clave pública Rivest-Shamir-Adleman (RSA) se utiliza ampliamente para autenticación y cifrado en el sector informático. Netscape tiene una licencia RSA criptografía de clave pública de RSA Data Security Inc. para utilizarlo en sus productos, específicamente para la autenticación.

Cifrado de clave pública es una técnica que utiliza un par de claves asimétricas para cifrado y descifrado. Cada par de claves consta de una clave pública y una clave privada. La clave pública se realiza público cuando distribuye ampliamente. Nunca se distribuye la clave privada; siempre se mantiene secreta.

Datos que se cifra con la clave pública sólo pueden descifrarse con la clave privada. Por el contrario, los datos que se cifra con la clave privada pueden descifrarse únicamente con la clave pública. Este asimetría es la propiedad que hace la criptografía mediante clave pública tan útil.

Uso de criptografía mediante claves públicas para la autenticación

La autenticación es el proceso de comprobación de identidad para que una entidad pueda seguro de la identidad de otra entidad. En los ejemplos siguientes, usuario A y B de usuario utilizan criptografía de clave pública para comprobar la identidad del usuario B. La notación siguiente indica que un elemento se ha cifrado o descifrado mediante criptografía de clave
{something}key
donde something es una descripción del elemento que se ha cifrado o descifrado y key es la clave que se utiliza para cifrar o descifrar ese elemento.

En el siguiente ejemplo, usuario desea autenticar el usuario B. usuario B tiene un par de claves, una pública y otra privada. El usuario B revela la clave pública para el usuario (Esto se describe en la sección "Tratamiento fuera claves públicas" de este artículo). Usuario genera un mensaje aleatorio y lo envía al usuario B como sigue:
UN-> Brandom_message
Usuario B utiliza la clave privada para cifrar el mensaje aleatorio y devuelve la versión cifrada al usuario A:
B-> A {random_message}User_B's_private_key
Usuario recibe este mensaje y lo descifra utilizando la clave pública que usuario B se publicó anteriormente. Usuario compara el mensaje descifrado con el mensaje de usuario enviado originalmente a usuario B; si coincide con los mensajes, el usuario sabe que el mensaje posterior procede de usuario B, porque un impostor posiblemente podría no sabe clave privada del usuario B y por lo tanto no podrían correctamente cifrar el mensaje aleatorio para enviar al usuario a.

Consideraciones adicionales

A menos que sepa exactamente qué va a cifrar, nunca es una buena idea para cifrar algo con su clave privada y, a continuación, enviarlo a otra persona. Esto es porque puede mantener responsable el valor cifrado (Recuerde, sólo puede realizar el cifrado porque sólo tiene la clave privada).

Debido a esto, en este ejemplo, en lugar de cifrar el mensaje original de ese usuario A envía, usuario B construye una síntesis del mensaje y cifra ese síntesis del mensaje. Síntesis del mensaje se deriva del mensaje original aleatorio y tiene las siguientes propiedades útiles:
  • Es difícil invertir la síntesis. Alguien está intentando suplantar al usuario B no puede determinar el mensaje original de la síntesis.
  • Un suplantador tiene dificultades para encontrar un mensaje diferente que se calcula en el mismo valor de síntesis.
El usuario B está protegido utilizando una síntesis. El usuario B calcula la síntesis del mensaje aleatorio de ese usuario A envía y, a continuación, cifra el resultado. El usuario B envía la síntesis cifrada al usuario a. de usuario puede calcula la síntesis del misma y autenticar el usuario B al descifrar el mensaje del usuario B y comparar los valores.

Origen de datos para la autenticación

La técnica descrita en la sección "Consideraciones adicionales" de este artículo se conoce como una firma digital. Esta técnica requiere que usuario B firmar un mensaje que usuario generados; esto es casi tan peligroso para el usuario B como cifrado de un valor aleatorio que se originó con el usuario a. Por consiguiente, este protocolo de autenticación en el ejemplo necesita un paso más para ser seguro; usuario B debe originan algunas (o todos) de los datos de manera:
¿A-> B B-> un saludo, eres usuario B? Usuario, esto es {usuario Bdigest[Usuario, éste es el usuario B]} User_B's_private_key
Cuando el usuario B utiliza este protocolo, usuario B sabe qué mensaje se envía a usuario y así usuario B segura puede firmar el mensaje. El usuario B envía la versión del mensaje sin cifrar en primer lugar, "usuario, éste es el usuario B," y, a continuación, usuario B envía la versión de cifrado digested. El usuario A puede comprobar fácilmente que está el usuario B usuario B y usuario B no tiene que firmar algo que no se originó con usuario B.

Control de claves públicas

¿Cómo puede un usuario entregar una clave pública de forma segura? Siguiente es un protocolo de autenticación de ejemplo para usuario B:
UN-> B-> UN UN-> B-> A
Hola Hola, soy usuario B User_B's_public_key probar que el usuario, es este
El usuario B {digest [usuario, este es usuario B]} User_B's_private_key
Si se utiliza este protocolo, cualquiera puede suplantar el usuario B. Todo un impostor necesita es una clave pública y privada. Puede encontrarse al usuario A y suplantar a usuario B y proporcionar la clave pública del impostor en lugar de la clave pública del usuario B un impostor. A continuación, el impostor "prueba" que el impostor usuario B cifrando algo mediante clave privada del impostor, y usuario no puede indicar que la impostor no es usuario B.

Para resolver este problema, la comunidad de estándares ha inventado un objeto denominado un certificado. Un certificado contiene la información siguiente:
  • Nombre del emisor del certificado.
  • Entidad para el que el certificado se está emitiendo (también conocido como el asunto).
  • La clave pública del sujeto.
  • Algunas marcas de tiempo.
El certificado se firma mediante la clave privada del emisor del certificado. Todo el mundo sabe la clave pública del emisor del certificado (es decir, el emisor de certificados también tiene un certificado). Los certificados son un método estándar para enlazar una clave pública a un nombre.

Si se utiliza la tecnología de certificado, todos los usuarios pueden examinar el usuario B certificado para ver si el certificado ha sido falsificado. Si usuario B mantiene un control estricto de la clave privada y usuario B obtiene realmente el certificado, la tecnología de certificado es segura. El siguiente es el protocolo corregido utilizando esta técnica:
A-> B B-> A-> B B-> A Hola Hola, soy usuario BUser_B's_certificate demostrar
el usuario A, este es usuario B {digest [usuario, este es usuario B]} User_B's_private_key
Cuando el usuario recibe primer mensaje del usuario B, usuario puede examinar el certificado, comprobar la firma (como en el ejemplo anterior, mediante un algoritmo de síntesis y descifrado de clave pública) y a continuación, compruebe el asunto (es decir, nombre del usuario B) y que realmente es usuario B. usuario puede entonces confianza que la clave pública es la clave pública del usuario B y puede solicitar la prueba de identidad del usuario B.

El usuario B recorre el mismo proceso descritos en el ejemplo anterior, diseñar una síntesis del mensaje y, a continuación, se responde al usuario A con una versión firmada de la síntesis. El usuario A puede comprobar el usuario B síntesis del mensaje mediante la clave pública del certificado y comprobar el resultado.

Una persona que desee interferir con comunicaciones seguras (en este ejemplo, usuario C) puede crear el escenario siguiente para intentar hacerlo:
A-> C C-> A-> C C-> A Hola Hola, soy usuario BUser_B's_certificate demostrar
lo????
Sin embargo, el usuario C no puede atender a usuario en el mensaje final. Usuario C no tiene clave privada del usuario B, por lo que usuario C no puede construir un mensaje de usuario se cree que proviene el usuario B.

Intercambiar un secreto

Una vez que usuario ha autenticado el usuario B, usuario puede enviar usuario B un mensaje que sólo el usuario B puede descodificar manera
UN-> B {secret}User_B's_public_key
donde la única forma para determinar el secret es al descifrar el mensaje anterior con la clave privada del usuario B. Intercambiar un secreto es otra forma de eficaces para utilizar la criptografía mediante clave pública. Incluso si se observa la comunicación entre usuario y el usuario B, nadie pero el usuario B puede determinar la información secreta.

Esta técnica refuerza la seguridad de Internet utilizando el secreto como otra clave, pero en este caso es una clave para un algoritmo de cifrado simétrico, como estándar de cifrado de datos (DES), RC4 o IDEA. Usuario conoce el secreto porque usuario generó el secreto antes de enviarlo al usuario B. usuario B sabe el secreto, puesto que el usuario B tiene la clave privada y puede descifrar el mensaje del usuario. Como usuario A y usuario B saben el secreto, pueden tanto iniciar un algoritmo de cifrado simétrico y, a continuación, enviar mensajes que se cifran con el algoritmo de cifrado simétrico. Ésta es un protocolo revisado que utiliza esta técnica:
A-> B B-> A-> B B-> A-> B B-> A Hola Hola, soy usuario BUser_B's_certificate
probar que el usuario A, este es usuario B {digest [usuario, este es usuario B]} User_B's_private_key
Aceptar usuario B, aquí es un secreto {secret} User_B's_public_key {some_message} secret_key
El método que se utiliza para calcular secret_key es el protocolo que se está definiendo pero secret_key puede ser simplemente una copia del secreto.

Interferencia de seguridad

Incluso si se utilizan todas las técnicas anteriores, una persona desea interferir con comunicaciones seguras (usuario C) no puede hacerlo. Aunque el usuario C no puede descubrir el secreto que han intercambiado usuario A y B de usuario, usuario C puede interferir con su conversación mediante reorganizar (o garbling) la información secreta. Por ejemplo, si usuario C se encuentra entre usuario y el usuario B, C de usuario puede pasar la mayoría de la información hacia delante y hacia atrás sin cambios, pero garble determinados mensajes (Esto es fácil de C de usuario para hacerlo porque el usuario C sabe el protocolo de ese usuario y el usuario B utilizan para comunicarse):
UN-> C C-> B-> C C-> UN UN-> C C-> B-> C C-> UN UN-> C C-> B-> C C-> A
Hola Hola Hola, soy usuario B User_B's_certificate hi, soy usuario B
User_B's_certificatedemostrar demostrar usuario, este es el usuario B {digest [usuario,
Este es usuario B]} User_B's_private_key usuario esta es usuario B {digest [usuario, este es
El usuario B]} User_B's_private_key Aceptar usuario B, aquí es un secreto {secret} User_B's_public_key
Aceptar usuario B, aquí es un secreto {secret} User_B's_public_key {some_message} secret_key
Garble [{some_message} secret_key]
Usuario C pasa los datos sin ninguna modificación hasta que el usuario y el usuario B comparten un secreto. A continuación, el usuario C garbles mensaje del usuario B de usuario a. En este momento, las confianzas de usuario A usuario B, el usuario lo pueden cree que el mensaje ilegible e intente actuar sobre él. Tenga en cuenta que C de usuario no conoce el secreto; puede hacer todo usuario C es daños los datos que se cifran con la clave secreta. Dependiendo del protocolo usuario C no puede producir un mensaje válido, pero C de usuario puede obtener suerte y producir un mensaje válido.

Para evitar este tipo de daño, usuario A y B de usuario pueden introducir un código de autenticación de mensajes en su protocolo. Un código de autenticación de mensajes es un fragmento de datos que se calcula un secreto y transmitido algunos datos. El algoritmo de síntesis descrito anteriormente tiene sólo las propiedades derecha para crear una función de código de autenticación de mensaje que puede defenderse contra C: usuario
message_authentication_code: = digest [some_message, secret]
Porque C de usuario no sabe el secreto, usuario C no puede calcular el valor correcto para la síntesis. Incluso si el usuario C aleatoriamente garbles mensajes, la posibilidad de éxito es pequeña si hay un importe grande de datos de resumen. Por ejemplo, mediante MD5 (un algoritmo de síntesis criptográficos buena inventado por RSA), usuario y usuario B pueden enviar los valores de código de autenticación de mensaje de 128 bits con sus mensajes. Las probabilidades de usuario C adivinar el código de autenticación de mensaje correcto son aproximadamente 1 en 18,446,744,073,709,551,616. Para todos los propósitos prácticos, el usuario C no se puede adivinar el código de autenticación de mensaje correcto.

El siguiente es el protocolo de ejemplo, revisado nuevo para utilizar esta técnica:
A-> B B-> A-> B B-> A Hola Hola, soy usuario BUser_B's_certificate demostrar
es usuario, este es usuario B {digest [usuario, este es usuario B]} User_B's_private_key Aceptar
Usuario B, aquí es un secreto {secret} User_B's_public_key {some_message, message_authentication_code} secret_key
Usuario C puede intentar garble mensajes, pero los cálculos de código de autenticación de mensaje revelan que los mensajes no proceden del usuario B. usuario A o usuario B puede descubrir el valor de código de autenticación de mensaje incorrecto y detener la comunicación. Usuario C ya no puede suplantar el usuario B.

Propiedades

Id. de artículo: 245152 - Última revisión: sábado, 28 de octubre de 2006 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Exchange Server 4.0 Standard Edition
  • Microsoft Exchange Server 5.0 Standard Edition
  • Microsoft Exchange Server 5.5 Standard Edition
Palabras clave: 
kbmt kbinfo KB245152 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 245152
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com