Red de conocimiento informático - Conocimiento sistemático - Más información sobre cómo funciona HTTPS

Más información sobre cómo funciona HTTPS

En los últimos años, Internet ha experimentado enormes cambios. En particular, el protocolo HTTP al que estábamos acostumbrados está siendo reemplazado gradualmente por el protocolo HTTPS. Impulsado por navegadores, motores de búsqueda, agencias de CA y grandes empresas de Internet, Internet ha marcado el comienzo de la "era del cifrado HTTPS". HTTPS reemplazará completamente a HTTP como protocolo de transmisión principal en los próximos años.

Después de leer este artículo, espero que puedas entender:

¿Cuáles son los problemas con la comunicación HTTP?

¿Cómo mejora HTTPS HTTP? ¿Cuales son los problemas?

¿Cómo funciona HTTPS?

¿Qué es HTTPS?

HTTPS es una versión segura del protocolo HTTP que establece una capa de cifrado SSL en HTTP para cifrar los datos transmitidos. Ahora se utiliza ampliamente en comunicaciones sensibles a la seguridad en la World Wide Web, como pagos de transacciones.

Las funciones principales de HTTPS son:

(1) Cifrar datos, establecer canales de seguridad de la información y garantizar la seguridad de los datos durante la transmisión.

(2) Autenticación; La verdadera identidad del servidor del sitio web.

A menudo utilizamos la comunicación HTTPS en la página de inicio de sesión del sitio web y en la interfaz de pago y compra. Cuando se comunique mediante HTTPS, no utilice http://, utilice https://. Además, cuando el navegador visita un sitio web con comunicación HTTPS válida, aparece una marca de candado en la barra de direcciones del navegador. El modo de visualización de HTTPS variará de un navegador a otro.

?

¿Por qué necesitas HTTPS?

El protocolo HTTP puede tener problemas de seguridad como robo de información o disfraz de identidad. El uso del mecanismo de comunicación HTTPS puede prevenir eficazmente estos problemas. A continuación, echemos un vistazo.

¿Qué tiene de malo el protocolo HTTP?

Las comunicaciones son de texto plano (sin cifrar) y el contenido puede ser escuchado a escondidas.

Debido a que HTTP en sí no tiene la función de cifrado, toda la comunicación (el contenido de la solicitud y la respuesta utilizando el protocolo HTTP) no se puede cifrar. Es decir, los mensajes HTTP se envían en texto sin formato (es decir, mensajes no cifrados).

Los fallos del protocolo de texto plano HTTP son una causa importante de problemas de seguridad como fuga de datos, manipulación de datos, secuestro de tráfico y ataques de phishing. El protocolo HTTP no puede cifrar datos y todos los datos de comunicación se ejecutan desnudos en la red en texto sin cifrar. El contenido de los mensajes HTTP se puede restaurar mediante equipos de rastreo de redes y algunos medios técnicos.

No se puede demostrar la integridad del mensaje, por lo que es posible que haya sido manipulado.

La llamada integridad se refiere a la exactitud de la información. No demostrar su integridad a menudo significa que es imposible saber si la información es exacta. Debido a que el protocolo HTTP no puede probar la integridad del mensaje de comunicación, incluso si el contenido de la solicitud o respuesta ha sido manipulado, no hay forma de saberlo desde el momento en que se envía la solicitud o respuesta hasta el momento en que la otra parte la recibe. . En otras palabras, no hay forma de confirmar si la solicitud/respuesta enviada y la solicitud/respuesta recibida son las mismas.

Si no se verifica la identidad del comunicante se podrá ocultar la misma.

Las solicitudes y respuestas en el protocolo HTTP no identifican a la parte comunicante. Cuando se comunica mediante el protocolo HTTP, cualquiera puede iniciar una solicitud porque no existe ningún proceso para confirmar la parte que se comunica. Además, siempre que el servidor reciba la solicitud, sin importar quién sea la otra parte, se devolverá una respuesta (pero solo si la dirección IP y el número de puerto del remitente no están restringidos por el servidor web).

El protocolo HTTP no puede verificar la identidad de la parte que se comunica. Cualquiera puede falsificar un servidor falso para engañar a los usuarios, logrando así un "fraude de phishing" que los usuarios no pueden detectar.

Por otro lado, en comparación con el protocolo HTTP, el protocolo HTTPS tiene las siguientes ventajas (descritas en detalle a continuación):

Privacidad de datos: el contenido se cifra simétricamente y cada conexión genera una clave de cifrado única.

Integridad de los datos: Se ha comprobado la integridad de la transferencia de contenido.

Autenticación: Un tercero no puede falsificar la identidad del servidor (cliente).

En tercer lugar, ¿cómo resuelve HTTPS los problemas anteriores de HTTP?

HTTPS no es un nuevo protocolo de capa de aplicación. Sólo la interfaz de comunicación HTTP es reemplazada por los protocolos SSL y TLS.

Normalmente, HTTP se comunica directamente con TCP. Al usar SSL, evolucionó para comunicarse primero con SSL y luego con SSL y TCP. En resumen, el llamado HTTPS es en realidad HTTP en el shell del protocolo SSL.

?

Después de adoptar SSL, HTTP tiene las funciones de cifrado, autenticación y protección de integridad de HTTPS. En otras palabras, HTTP más cifrado, autenticación y protección de integridad es HTTPS.

?

Las funciones principales de HTTPS se basan básicamente en el protocolo TLS/SSL, y la implementación de TLS/SSL se basa principalmente en tres algoritmos básicos: función hash, cifrado simétrico y cifrado asimétrico. Implementar autenticación de identidad y acuerdo de claves. Los algoritmos de cifrado simétrico utilizan claves negociadas para cifrar datos y verificar la integridad de la información basándose en una función hash.

?

Solución al problema de que el contenido pueda ser espiado: cifrado

Método 1. Cifrado simétrico

Este método utiliza la misma clave para cifrar y descifrar. Las claves se utilizan tanto para el cifrado como para el descifrado. Sin la clave, la contraseña no se puede descifrar. Por otro lado, cualquiera que tenga la clave puede descifrarla.

Al cifrar mediante cifrado simétrico, la clave también debe enviarse a la otra parte. Pero, ¿cómo se puede lograr una entrega segura? Cuando se reenvía una clave a través de Internet, si se intercepta la comunicación, la clave cae en manos del atacante y se pierde el propósito del cifrado. Además, debemos intentar almacenar de forma segura las claves recibidas.

Método 2. Cifrado asimétrico

El cifrado de clave pública utiliza un par de claves asimétricas. Una se llama clave privada y la otra se llama clave pública. Como su nombre lo indica, nadie más puede conocer la clave privada, mientras que la clave pública puede liberarse a voluntad y cualquiera puede obtenerla.

Al utilizar el cifrado de clave pública, el remitente utiliza la clave pública de la otra parte para cifrar y la otra parte utiliza su propia clave privada para descifrar después de recibir la información cifrada. Esto elimina la necesidad de enviar una clave privada para descifrarla y no hay necesidad de preocuparse de que un atacante pueda espiar y robar la clave.

?

El cifrado asimétrico se caracteriza por la transmisión de información de uno a muchos. El servidor sólo necesita mantener una clave privada para cifrar las comunicaciones con múltiples clientes.

Este método tiene las siguientes desventajas:

La clave pública es pública, por lo que los piratas informáticos pueden utilizar la clave pública para descifrar la información cifrada por la clave privada y obtener el contenido.

La clave pública no contiene la información del servidor. El uso de un algoritmo de cifrado asimétrico no puede garantizar la legitimidad de la identidad del servidor y existe el riesgo de un ataque de intermediario. La clave pública enviada por el servidor al cliente puede ser interceptada y manipulada por intermediarios durante el proceso de transmisión.

El uso de cifrado asimétrico requiere una cierta cantidad de tiempo durante el proceso de cifrado y descifrado de datos, lo que reduce la eficiencia de la transmisión de datos;

Método 3. Cifrado simétrico y cifrado asimétrico (HTTPS usa este método)

La ventaja de usar una clave simétrica es que el descifrado es más rápido, y la ventaja de usar una clave asimétrica es que el contenido transmitido no se puede descifrar, porque incluso si lo interceptas Sin los datos, el contenido no se puede descifrar sin la clave privada correspondiente. Por ejemplo, tomas una caja fuerte pero no puedes abrirla sin una llave. Luego combinamos el cifrado simétrico y el cifrado asimétrico para aprovechar al máximo las ventajas de cada uno, utilizando el cifrado asimétrico en la etapa de intercambio de claves y luego usando el cifrado simétrico en la etapa de intercambio de mensajes de comunicación.

El método específico es: el remitente cifra la "clave simétrica" ​​con la clave pública de la otra parte, y luego la otra parte usa su propia clave privada para descifrar la "clave simétrica", lo que garantiza la seguridad de la clave de intercambio. Utilice cifrado simétrico para la comunicación. Por lo tanto, HTTPS utiliza un mecanismo de cifrado híbrido que utiliza cifrado simétrico y asimétrico.

Resolver el problema de que los mensajes pueden ser manipulados: firmas digitales

El proceso de transmisión de la red requiere muchos nodos intermedios. Aunque los datos no se pueden descifrar, se pueden alterar.

¿Cómo verificar la integridad de los datos? - Consultar firma digital.

Las firmas digitales tienen dos funciones:

Puede confirmar que el mensaje efectivamente está firmado por el remitente, porque es imposible que otros falsifiquen la firma del remitente.

Las firmas digitales pueden determinar la integridad del mensaje y demostrar si los datos han sido manipulados.

Cómo generar una firma digital;

Se genera un resumen de un mensaje a partir de un fragmento de texto mediante una función hash y luego se cifra con la clave privada del remitente para generar una firma digital. que se transmite al destinatario junto con el texto original. El siguiente paso es que el destinatario verifique la firma digital.

Compruebe el proceso de firma digital:

El receptor simplemente utiliza la clave pública del remitente para descifrar la información del resumen cifrado y luego utiliza una función hash para generar un resumen del texto original recibido. y compararlo con la información resumida obtenida en el paso anterior. Si son iguales significa que la información recibida está completa y no ha sido modificada durante el proceso de transmisión. En caso contrario significa que la información ha sido modificada, por lo que la firma digital puede verificar la integridad de la información.

Supongamos que el mensaje se pasa entre Kobe y James. James envió el mensaje a Bryant junto con una firma digital. Después de recibir el mensaje, Kobe puede verificar que el mensaje recibido fue enviado por James verificando la firma digital. Por supuesto, la premisa de este proceso es que Kobe conozca la clave pública de James. El quid del problema es que la clave pública, al igual que el mensaje en sí, no se puede enviar directamente a Kobe a través de una red no segura, o cómo demostrar que la clave pública obtenida es la de James.

En este momento, es necesario introducir una autoridad de certificación (CA), y la cantidad de CA no es grande. El cliente Kobe tiene certificados integrados de todas las CA confiables. La CA firma digitalmente la clave pública de James (y otra información) y genera un certificado.

Resuelva el problema de que la identidad de la parte comunicante pueda estar disfrazada: certificado digital

La autoridad de certificación digital es una organización de terceros en la que tanto el cliente como el servidor pueden confiar.

La siguiente es una introducción al proceso comercial de la autoridad emisora ​​de certificados digitales:

El operador del servidor envía la clave pública, información de la organización, información personal (nombre de dominio) y otra información. a la organización de terceros CA, y solicita la Certificación

CA verifica la autenticidad de la información proporcionada por el solicitante a través de métodos en línea y fuera de línea, como si la institución existe, si la empresa es legal, si tiene la propiedad del nombre de dominio, etc.

Si se aprueba la información, la CA emitirá el documento-certificado de certificación al solicitante. El texto plano del certificado contiene la siguiente información: la clave pública del solicitante, la información organizacional y personal del solicitante, la información de la autoridad emisora ​​CA, el tiempo de validez, el número de serie del certificado y otra información, y también contiene una firma. Entre ellos, el algoritmo de generación de firmas: primero use una función hash para calcular el resumen de información de texto sin formato público y luego use la clave privada de la CA para cifrar el resumen de información. El texto cifrado es la firma;

Cuando el cliente envía el mensaje al servidor, cuando se solicita, el servidor devuelve el archivo del certificado;

Cliente El cliente lee la información de texto sin formato relevante en el certificado y utiliza la misma función hash para calcular un resumen del información. Luego descifra los datos firmados utilizando la clave pública de la CA correspondiente y compara el resumen de información del certificado. Si son consistentes se puede confirmar la validez del certificado, es decir, la clave pública del servidor es confiable.

El cliente también verificará la información del nombre de dominio, el tiempo de validez y otra información relacionada con el certificado; el cliente tendrá información del certificado incorporada (incluida la clave pública) que confía en la CA. Si no se confía en la CA, no se podrá encontrar el certificado correspondiente a la CA y se determinará que el certificado es ilegal.

Cuatro. Flujo de trabajo HTTPS

1. El cliente inicia una solicitud HTTPS (como https://juejin.im/user/5a9a9cdcf265da238b7d771c). Según RFC2818, el cliente sabe que necesita conectarse al puerto 443 del servidor (predeterminado).

Nº 2.2. El servidor devuelve el certificado de clave pública preconfigurado al cliente.

3. El cliente verifica el certificado de clave pública: por ejemplo, si está dentro del período de validez, si el propósito del certificado coincide con el sitio solicitado por el cliente, si está en la lista de revocación de CRL. y si su certificado superior es válido.

Este es un proceso recursivo hasta que se verifica el certificado raíz (ya sea el integrado en el sistema operativo o el integrado en el cliente). Si se supera la verificación, continúe; de ​​lo contrario, se mostrará un mensaje de advertencia.

4. El cliente utiliza un generador de números pseudoaleatorios para generar una clave simétrica para el cifrado, luego cifra la clave simétrica con la clave pública del certificado y la envía al servidor.

5. El servidor descifra el mensaje utilizando su propia clave privada y obtiene la clave simétrica. En este punto, el cliente y el servidor tienen la misma clave simétrica.

6. El servidor cifra el "contenido de texto sin formato A" con una clave simétrica y lo envía al cliente.

7. El cliente utiliza la clave simétrica para descifrar el texto cifrado de respuesta y obtiene el "contenido de texto sin formato A".

8. El cliente inicia una solicitud HTTPS nuevamente, usa la clave simétrica para cifrar el "texto sin formato B" solicitado y luego el servidor usa la clave simétrica para descifrar el texto cifrado para obtener el "texto sin formato B".

La diferencia entre el verbo (abreviatura del verbo) HTTP y HTTPS

HTTP es un protocolo de transmisión de texto sin formato y el protocolo HTTPS es un protocolo de red construido sobre el protocolo SSL HTTP, que puede Ser utilizado para transmisión cifrada y autenticación de identidad, más seguro que el protocolo HTTP.

En cuanto a la seguridad, la metáfora más sencilla para describir la relación entre ambos es la de la entrega en camión. Bajo HTTP, la furgoneta está abierta y la mercancía queda expuesta. HTTPS es un vehículo contenedor cerrado, por lo que la seguridad mejora naturalmente.

HTTPS es más seguro que HTTP, más amigable para los motores de búsqueda y beneficioso para el SEO. Google y Baidu indexan primero las páginas HTTPS;

HTTPS requiere un certificado SSL, HTTP no;

puerto estándar HTTPS 443, puerto estándar HTTP 80;

HTTPS se basa en la capa de transporte, HTTP se basa en la capa de aplicación;

HTTPS muestra un candado de seguridad verde en el navegador, pero HTTP no;

6. ¿Los sitios web utilizan HTTPS?

Dado que HTTPS es tan seguro y confiable, ¿por qué no todos los sitios web usan HTTPS?

En primer lugar, mucha gente todavía cree que existe un umbral para la implementación de HTTPS. Este umbral radica en la necesidad de un certificado SSL emitido por una CA autorizada. Desde la selección, compra e implementación de certificados, llevaría mucho tiempo y sería laborioso según el modelo tradicional.

En segundo lugar, generalmente se cree que HTTPS tiene un mayor consumo de rendimiento que HTTP porque la comunicación cifrada consume más recursos de CPU y memoria que la comunicación de texto sin formato. Si cada comunicación está cifrada, consume muchos recursos y si se distribuye uniformemente en una sola computadora, la cantidad de solicitudes que se pueden procesar definitivamente se reducirá. Pero ese no es el caso. Los usuarios pueden resolver este problema optimizando el rendimiento e implementando certificados en SLB o CDN. Para dar un ejemplo práctico, durante el período "Double Eleven", el HTTPS de sitio completo de Taobao y Tmall todavía garantizaba un acceso, navegación y transacciones sin problemas en sitios web y terminales móviles. A través de las pruebas, descubrimos que el rendimiento de muchas páginas optimizadas es equivalente o incluso ligeramente mejorado que HTTP, por lo que HTTPS no es lento después de la optimización.

Además, ahorrar el coste de la compra de un certificado también es uno de los motivos. Los certificados son esenciales para la comunicación HTTPS. El certificado utilizado debe adquirirse de una Autoridad de certificación (CA).

Por último, la concienciación sobre la seguridad. En comparación con los países nacionales y extranjeros, la conciencia de seguridad y la aplicación de tecnología en la industria de Internet son relativamente maduras, y la sociedad, las empresas y los gobiernos promueven conjuntamente la tendencia de implementación de HTTPS.