Red de conocimiento informático - Material del sitio web - Nombre de dominio y protocolo de cifrado

Nombre de dominio y protocolo de cifrado

Descripción general: HTTP es un protocolo de transmisión de texto claro y HTTPS es un protocolo de cifrado, que es equivalente a la versión segura de HTTP. Pero si se requiere cifrado HTTPS, el certificado SSL debe intercambiarse utilizando el protocolo TLS y el certificado SSL se emite en línea: enlace web.

1. ¿Qué es "HTTP"?

HTTP (Protocolo de transferencia de hipertexto) es el protocolo de red más utilizado en Internet y todos los archivos WWW deben cumplir con este estándar. La intención original del diseño de HTTP era proporcionar una forma de publicar y recibir páginas HTML (para obtener más detalles, consulte la introducción relevante en "Principios de análisis profundo de protocolos de Internet" de Ma Blog).

En 65438-0960, el estadounidense Ted Nelson concibió un método para utilizar computadoras para procesar información de texto y lo llamó hipertexto, que se convirtió en la base para el desarrollo del marco estándar del protocolo de transferencia de hipertexto HTTP.

En pocas palabras, HTTP es un protocolo de red diseñado para ayudarle a transmitir contenido web. Incluso si no conoces este protocolo, al menos has oído hablar de él. Por ejemplo, cuando visite la página de inicio de mi blog, aparecerá la barra de direcciones del navegador: la mayoría de los sitios web transmiten páginas web y diversos elementos contenidos en las páginas web (imágenes, estilos CSS, scripts JS) a través del protocolo HTTP.

2. ¿Qué es "SSL/TLS"?

SSL es la abreviatura de "Secure Sockets Layer", que en chino se llama "Secure Sockets Layer". Fue diseñado por Netscape a mediados de los 90 (por cierto, Netscape no solo inventó SSL, sino que también inventó mucha infraestructura web, como "hojas de estilo CSS" y "scripts JS").

¿Por qué inventaste SSL? Debido a que el protocolo HTTP original utilizado en Internet era texto claro, tenía muchas deficiencias; por ejemplo, el contenido de la transmisión podía ser espiado (olfateado) y manipulado. El protocolo SSL se inventó para resolver estos problemas.

En 1999, debido a su uso generalizado, SSL se había convertido en el estándar de facto en Internet. En ese momento, IETF estandarizó SSL y el nombre estandarizado se cambió a TLS (abreviatura de "Seguridad de la capa de transporte"), que en chino se llama "Protocolo de seguridad de la capa de transporte".

Muchos artículos relacionados se citan uno al lado del otro (SSL/TLS) porque pueden verse como diferentes etapas de la misma cosa.

3. ¿Qué significa "HTTPS"?

Después de explicar HTTP y SSL/TLS, ahora podemos explicar HTTPS. Lo que normalmente llamamos HTTPS es, para decirlo sin rodeos, una combinación del protocolo HTTP y el protocolo SSL/TLS. Puede entender aproximadamente HTTPS como "HTTP sobre SSL" o "HTTP sobre TLS" (SSL y TLS son prácticamente lo mismo de todos modos).

HTTPS (nombre completo: Protocolo de transferencia de hipertexto sobre capa de conexión segura) es un canal HTTP seguro, que es solo una versión segura de HTTP. En otras palabras, se agrega una capa SSL bajo HTTP. La base de seguridad de HTTPS es SSL, por lo que los detalles de cifrado requieren SSL.

Es un esquema URI (Abstract Identifier System) cuya sintaxis es similar a la de Explorer, Netscape Navigator y servidores Web (como Netscape Enterprise Server, ColdFusion Server, etc.). ) para construir un canal seguro para la transmisión de datos. SSL se ejecuta encima de la capa TCP/IP y debajo de la capa de aplicación, proporcionando un canal de datos cifrados para las aplicaciones. Utiliza algoritmos de cifrado como RC4, MD5 y RSA, y utiliza una clave de 40 bits, que es adecuada para el cifrado de información empresarial.

Al mismo tiempo, Netscape desarrolló el protocolo HTTPS y lo integró en el navegador. HTTPS es en realidad SSL sobre HTTP, que utiliza el puerto predeterminado 443 en lugar del puerto 80 como HTTP para comunicarse con TCP/IP. El protocolo HTTPS utiliza SSL para cifrar los datos sin procesar en el lado del remitente y luego descifrarlos en el lado del receptor.

El cifrado y el descifrado requieren el intercambio de claves conocidas por el remitente y el receptor. Por lo tanto, los piratas informáticos no pueden interceptar ni descifrar fácilmente los datos transmitidos.

Sin embargo, el proceso de cifrado y descifrado requiere una gran sobrecarga del sistema, lo que reduce seriamente el rendimiento de la máquina. Los datos de prueba relevantes muestran que la eficiencia de la transmisión de datos utilizando el protocolo HTTPS es solo una décima parte de la del protocolo HTTP.

Si todas las aplicaciones web de un sitio web se cifran mediante tecnología SSL y se transmiten de forma segura y confidencial a través del protocolo, el rendimiento y la eficiencia del sitio web se reducirán considerablemente, y es innecesario, porque en términos generales, No todos los datos Todos requieren un nivel tan alto de seguridad y confidencialidad, por lo que solo necesitamos usar protocolos para el procesamiento interactivo que involucra datos confidenciales, de modo que podamos tener lo mejor de ambos mundos (consulte el blog de Ma "Analizar si el sitio web debe usar

En resumen, no es necesario utilizar ) para mejorar la seguridad de estos protocolos de capa de aplicación.

Por ejemplo, si SSL/TLS se considera una tubería metálica para refuerzo, entonces se puede utilizar no sólo para reforzar tuberías de agua, sino también para reforzar tuberías de gas.

(3) Confidencialidad (antifugas)

HTTPS requiere seguridad suficiente.

Cuando se trata de confidencialidad, primero tienes que poder luchar contra Sniffer. El llamado "sniffer" sirve para controlar el tráfico de transmisión de su red. Si utiliza HTTP normal para navegar por Internet, el monitor sabrá qué páginas de qué sitios web está visitando mediante el rastreo.

Olfatear es la técnica de ataque de nivel más bajo. Además del rastreo, HTTPS también debe poder resistir otros ataques un poco más avanzados, como los "ataques de repetición" (hablaremos sobre los principios del protocolo más adelante).

(4) Integridad (a prueba de manipulaciones)

Además de la "confidencialidad", existe un objetivo igualmente importante de "garantizar la integridad".

Antes de la invención de HTTPS, HTTP no solo era fácil de detectar, sino también de manipular porque era texto sin formato.

Por ejemplo: nuestro proveedor de servicios de Internet (ISP) es un deshonesto. Algunos internautas a menudo se quejan de que cuando visitan un sitio web, aparecen muchos anuncios de China Telecom (en primer lugar, no hay anuncios). ). ¿Por qué? Debido a que el tráfico de su red necesita pasar por la línea del ISP para llegar a la red pública, si utiliza HTTP en texto sin formato, es fácil para el ISP insertar anuncios en las páginas que visita.

Por lo tanto, al diseñar HTTPS, también es necesario "asegurarse de que el contenido del protocolo HTTP no sea manipulado".

(5) Autenticidad (antifalsificación)

Cuando se habla de los requisitos de HTTPS, a menudo se ignora la "autenticidad". De hecho, la "autenticidad" es tan importante como la "confidencialidad" y la "integridad" mencionadas anteriormente.

Por ejemplo, debido a que utiliza la banca en línea, debe visitar el sitio web de banca en línea. Entonces, ¿cómo garantizar que el sitio web que visita sea realmente el sitio web que desea visitar?

Algunos estudiantes ingenuos dirán: mire el nombre de dominio en el sitio web para asegurarse de que dichos estudiantes sean "ingenuos". Debido a que el sistema DNS en sí no es confiable (especialmente en la era en que se diseñó SSL, ni siquiera se inventó DNSSEC), porque el DNS no es confiable (hay "suplantación de nombre de dominio" y "secuestro de nombre de dominio"), por lo que en la URL se ve ¡Es posible que el nombre de dominio no sea real!

Por lo tanto, el protocolo HTTPS debe tener algún mecanismo para garantizar el requisito de "autenticidad" (en cuanto a cómo garantizar esto, lo discutiremos en detalle más adelante).

9. La diferencia entre HTTPS y HTTP

El protocolo de transferencia de hipertexto (HTTP) se utiliza para transferir información entre un navegador web y un servidor de sitio web. HTTP envía contenido en texto claro y no proporciona ningún cifrado de datos. Si un atacante intercepta la transmisión de mensajes entre el navegador web y el servidor del sitio web, la información se puede leer directamente, por lo que el protocolo HTTP no es adecuado para transmitir cierta información confidencial, como números de tarjetas de crédito y contraseñas.

Para solucionar esta deficiencia del protocolo HTTP, necesitamos utilizar otro protocolo: Hypertext Transfer Protocol Secure Sockets Layer (HTTPS).

Para la seguridad de la transmisión de datos, HTTPS añade el protocolo SSL sobre la base de HTTP. SSL se basa en certificados para verificar la identidad del servidor y cifrar las comunicaciones entre el navegador y el servidor.

En términos generales, existen cuatro diferencias principales entre HTTPS y HTTP:

(1) El protocolo https requiere solicitar un certificado de la CA. Generalmente, hay pocos certificados gratuitos. y tienes que pagar.

(2) http es un protocolo de transferencia de hipertexto, la información se transmite en texto claro y https es un protocolo de transmisión cifrado SSL seguro.

(3) http y https utilizan métodos de conexión y puertos completamente diferentes. 80 para los primeros y 443 para los segundos.

(4) La conexión http es simple y sin estado; el protocolo HttpS es un protocolo de red creado a partir del protocolo SSL HTTP. Puede usarse para transmisión cifrada y autenticación de identidad, y es más seguro que el protocolo HTTP (consulte Ma. Blog "Introducción relacionada con HTTP y" Diferencias ").

10. Comparación de rendimiento entre HTTPS y HTTP

Hablemos primero del último requisito: el rendimiento.

Originalmente, un protocolo http simple, una obtención y una respuesta, debido a que https necesita devolver la clave y confirmar el algoritmo de cifrado, un solo protocolo de enlace requiere 6 o 7 viajes de ida y vuelta. En cualquier aplicación, demasiados viajes de ida y vuelta definitivamente afectarán el rendimiento y luego, específicamente con el protocolo http, cada respuesta o solicitud requiere que el cliente y el servidor cifren/descifren el contenido de la sesión.

Aunque el cifrado/descifrado simétrico es más eficiente, todavía consume demasiada CPU. Por eso hay chips SSL dedicados. Si el rendimiento de la CPU es bajo, definitivamente reducirá el rendimiento y no podrá atender más solicitudes, lo que afectará la cantidad de datos cifrados. Es por eso que hay tantos consejos de autenticación de seguridad (consulte el blog de Ma "Impacto en la optimización del rendimiento del sitio web" para obtener más detalles).

En términos generales, la introducción de HTTPS no provocará una degradación del rendimiento. De lo contrario, ¿quién querría usarlo?

Para garantizar el rendimiento, los diseñadores de SSL deben considerar al menos los siguientes puntos:

(1) ¿Cómo elegir el algoritmo de cifrado ("simétrico" o "asimétrico")?

(2) ¿Cómo tener en cuenta el modo TCP de "conexión corta" adoptado por HTTP?

SSL fue diseñado antes de 1995. En ese momento, la versión HTTP todavía era 1.0 y el modo TCP de "conexión corta" se usaba de forma predeterminada; Keep-Alive no estaba habilitado de forma predeterminada.

Los impactos clave en el rendimiento de HTTPS son la CPU y los viajes de ida y vuelta. Si la CPU es potente, el rendimiento puede llegar a 80, como dicen algunas personas. Si la CPU es el cuello de botella, algunas personas dicen que el servidor original puede solicitar entre 330 y 500 solicitudes por segundo, pero ahora es solo entre 30 y 50, por lo que cuando use https para solicitar datos, debe prestar atención a si realmente es necesario en tu proyecto.