2009-02-26 5 views
18

Digamos que cuando se utiliza https, el navegador realiza una solicitud al servidor y el servidor devuelve su certificado, incluida la clave pública y la firma de CA.Pregunta de SSL: ¿Cómo verifica una CA ROOTE una firma?

En este punto, el navegador solicitará a su CA que verifique si la clave pública dada realmente pertenece al servidor o no.

¿Cómo se realiza esta verificación mediante el certificado raíz en el navegador?

Para dar un ejemplo: Digamos que el servidor X obtuvo un certificado de CA "rootCA". El navegador tiene una copia de rootCA almacenada localmente. Cuando el navegador hace ping al servidorX y responde con su clave pública + firma. Ahora, la CA raíz usará su clave privada para descifrar la firma y asegurarse de que sea realmente serverX.

¿cómo funciona?

Respuesta

48

Su servidor tiene un certificado, que consta de una clave privada y pública. El servidor nunca da la clave privada, por supuesto, pero todos pueden obtener la clave pública. La clave pública está incrustada dentro de un formato de contenedor de certificado. Este formato contiene la dirección IP o el nombre de dominio del servidor, el propietario de esta dirección IP/nombre de dominio, una dirección de correo electrónico del propietario, etc.

Todo está firmado por una autoridad de confianza. La autoridad de confianza, también conocida como autoridad de certificación (CA), también tiene un par de claves privadas/públicas. Les das tu certificado, verifican que la información en el contenedor sea correcta y la firmas con su clave privada, a la que solo tienen acceso.

La clave pública de la CA está instalada en el sistema del usuario de forma predeterminada, la mayoría de las CA conocidas ya están incluidas en la instalación predeterminada de su sistema operativo o navegador favorito.

Cuando ahora un usuario se conecta a su servidor, su servidor utiliza la clave privada para firmar algunos datos, empaqueta los datos firmados junto con su clave pública y envía todo al cliente.

¿Qué puede hacer ahora el cliente? En primer lugar, puede usar la clave pública que acaba de enviar para verificar los datos firmados. Dado que solo el propietario de la clave privada puede firmar los datos correctamente de forma que la clave pública pueda verificar la firma, sabe que quien haya firmado esta información, esta persona posee la clave privada de la clave pública recibida. . Hasta ahora todo bien. Pero, ¿qué detiene a un hacker para interceptar el paquete, reemplazar los datos firmados con los datos que firmó usando un certificado diferente y también reemplazar la clave pública con su clave pública? Nada.

Es por eso que una vez que se han verificado los datos firmados (o antes de que se verifique), el cliente verifica que la clave pública recibida tiene una firma de CA válida. Usando la clave de CA pública ya instalada, verifica que la clave pública recibida ha sido firmada por una CA conocida. De lo contrario, es rechazado (ya que un hacker puede haberlo reemplazado en el camino).

Por último, pero no menos importante, verifica la información dentro del contenedor de clave pública. ¿La dirección IP o el nombre de dominio realmente coinciden con la dirección IP o el nombre de dominio del servidor con el que el cliente está hablando actualmente? Si no, ¡algo es sospechoso!

La gente puede preguntar: ¿Qué detiene a un hacker simplemente creando su propio par de llaves y simplemente poniendo su nombre de dominio o dirección IP en el certificado? Fácil: si lo hace, ningún CA firmará su clave. Para obtener una firma de CA, debe probar que realmente es el propietario de esta dirección IP o nombre de dominio. El hacker no, no puede probar eso, no conseguirá una firma. Entonces esto no funcionará

Bien, ¿qué tal si el pirata informático registra su propio dominio, crea un certificado para eso y lo firma un CA? Esto funciona, lo firmará CA, es su dominio, no hay problema. Sin embargo, no puede usar esto al hackear su conexión. Si usa este certificado, el navegador verá inmediatamente que la clave pública firmada es para el dominio example.net, pero actualmente está hablando con example.com, no con el mismo dominio, por lo que algo vuelve a ser sospechoso.

+2

¡Buena respuesta! Pero tengo otra pregunta relacionada ... Cita: "las CA más conocidas ya están incluidas en la instalación predeterminada de su sistema operativo o navegador favorito". Me pregunto cómo el navegador expande la CA conocida predeterminada? ¿Verificará automáticamente contra un servicio web? o solo lo hará para la próxima versión de la versión del navegador? – forestclown

+2

Los certificados de CA se envían junto con el navegador o el sistema operativo. Firefox, Chrome, Opera tienen sus propias copias certificadas de CA, Internet Explorer y Safari usan certificaciones de CA instaladas en Windows o OS X. Nada impide que un navegador use tanto sus propias copias como certificaciones de sistema operativo (algunas de las que mencioné pueden incluso hacer ese). Solo obtiene nuevos certificados de CA al actualizar el navegador, actualizar el sistema operativo o instalarlos manualmente (descargarlos y luego agregarlos al navegador o a su sistema operativo, ambos son posibles). – Mecki

+3

Lo único que verifican los buscadores en línea (si pueden) es si un certificado de CA sigue siendo válido o no. Todos los servicios de CA ejecutan un servidor de revocación de certificados, donde un navegador puede preguntar si un determinado certificado sigue siendo válido o ha sido revocado; esto se hace a través del protocolo OCSP: http://tinyurl.com/pcjk2 Los certificados contienen la dirección de un servidor OCSP para preguntar. – Mecki

0

Su navegador no le pide a la CA que verifique, sino que tiene una copia de los certificados raíz almacenados localmente, y usará un procedimiento criptográfico estándar para verificar que el certificado sea realmente válido.

Es por eso que cuando usted firma un certificado, su certificado no es válido, aunque técnicamente hay una autoridad de certificación, puede copiar la CA autofirmada a su computadora y desde ese momento confiaría en su identidad. certificaciones

CACert.org tiene este mismo problema, tiene certificados válidos pero como los navegadores no tienen sus certificaciones de raíz en su lista, sus certificados generan advertencias hasta que los usuarios descargan las CA raíz y las agregan a su navegador.

+0

no está claro para mí. Digamos que servidorX obtuvo un certificado de CA rootCA. El navegador tiene el certificado de rootCA almacenado localmente. Entonces, cuando el navegador hace ping al servidorX, responde con su clave pública + firma. ¿La CA raíz usará su clave privada para descifrar la firma y asegurarse de que realmente sea serverX? – Sesh

+0

No, lo que marca la firma, puedo firmar algo con mi clave privada que valida contra mi clave pública. Entonces, la CA raíz que se almacena localmente es en realidad la parte pública de la CA. Entonces, si el servidor remoto envía un certificado, tendrá una firma determinada, esa firma puede entonces ser –

+0

computada matemáticamente contra la parte pública de la CA para verificar que la parte privada de la CA haya firmado el certificado en sí misma. –

2

Los certificados se basan en el uso de una encriptación asimétrica como RSA. Tiene dos claves, llamadas convencionalmente las claves privadas y públicas. Algo que encriptar con la clave privada solo se puede descifrar usando la clave pública. (Y, en realidad, viceversa).

Puede pensar que el certificado es como un pasaporte o una licencia de conducir: es una credencial que dice "esto es lo que soy, puede confiar en él porque me lo dieron a mí". por alguien (como Verisign) en quien confías ". Esto se hace con una "firma", que se puede calcular utilizando la clave pública de la autoridad de certificación. Si la CA obtuvo los datos originalmente, puede verificar el certificado.

El certificado contiene información de identificación sobre el propietario del certificado. Cuando lo recibe, utiliza la combinación de la clave que conoce de su autoridad de confianza para confirmar que el certificado que recibió es válido y que, por lo tanto, puede inferir que confía en la persona que emitió el certificado.

+0

La firma de un servidor debe ser bastante fácil de obtener: solo envíele una solicitud https. ¿Qué pasa si un servidor Y obtiene la firma del servidorX de esta manera? ¿No puede suplantar al servidor X? – Sesh

+0

No, cuando su navegador se conecta usa un inicio único (diffie hellman key exchange), a menos que ServerY tenga la clave privada para su certificado que se usa para calcular la clave pública según lo que le envía el navegador, no puede suplantar al servidorX . –

+0

Sesh, lo que * puede * hacer bajo ciertas condiciones es lo que se llama un ataque "intermediario" o "hombre en el medio". Eso le permite jugar cliente al servidor, servidor al cliente e interceptar todo. Hay protecciones contra esto. Google "man in the middle" y SSL para más detalles. –

6

El certificado del servidor está firmado con la clave privada de la CA. El navegador usa la clave pública de CA para verificar la firma. No hay comunicación directa entre el navegador y CA.

Lo importante es que el navegador se envía con la clave de CA pública. En Firefox, consulte Herramientas-> Opciones-> Avanzado-> Encriptación-> Certificados de vista-> Autoridades. Entonces, el navegador conoce de antemano todas las CA en las que puede confiar.

Si no entiende esto, consulte los conceptos básicos de la criptografía asimétrica y las firmas digitales.

Cuestiones relacionadas