Maison  >  Article  >  interface Web  >  Qu'est-ce que la poignée de main HTTP vs HTTPS

Qu'est-ce que la poignée de main HTTP vs HTTPS

一个新手
一个新手original
2017-09-08 13:00:401858parcourir

Aujourd'hui, j'ai résumé ce qu'est la négociation HTTP à trois voies, le processus de négociation HTTPS et pourquoi HTTPS est sécurisé.

Prémisse

Lors de la description de ces deux poignées de main, certaines choses doivent être expliquées à l'avance.

Quelle est la différence entre HTTP et TCP/IP ?

Le protocole TPC/IP est un protocole de couche de transport, qui résout principalement la façon dont les données sont transmises dans le réseau, tandis que HTTP est un protocole de couche application, qui résout principalement la façon de conditionner les données. WEB utilise le protocole HTTP comme protocole de couche application pour encapsuler les informations textuelles HTTP, puis utilise TCP/IP comme protocole de couche transport pour les envoyer au réseau.

Le diagramme suivant tente de montrer la position des différents protocoles TCP/IP et autres dans le modèle OSI (Open System Interconnect) d'origine :

PS : Le formulaire provient d'informations en ligne

Qu'est-ce qu'un certificat CA ?

CA (Certificate Authority) est une autorité tierce responsable de la gestion et de la délivrance des certificats. Elle est fiable et reconnue par toutes les industries et le public.

Le certificat CA est un certificat délivré par une autorité de certification. Il peut être utilisé pour vérifier si un site Web est digne de confiance (pour HTTPS), vérifier si un fichier est digne de confiance (s'il a été falsifié), etc. Le certificat peut également être utilisé pour prouver qu'un autre certificat est authentique et digne de confiance, et le certificat de niveau supérieur est appelé certificat racine. À l'exception du certificat racine (qui s'avère fiable), les autres certificats doivent s'appuyer sur le certificat de niveau supérieur pour faire leurs preuves.

Poignée de main HTTP à trois voies

Le protocole de transfert hypertexte HTTP (HyperText Transfer Protocol) est le plus largement utilisé sur Internet Un protocole réseau. Étant donné que les informations sont transmises en texte clair, elles sont considérées comme non sécurisées. Quant à la poignée de main à trois voies de HTTP, elle utilise en fait la poignée de main TCP à trois voies pour confirmer l'établissement d'une connexion HTTP.

Comme le montre la figure ci-dessous, SYN (synchrone) est le signal de prise de contact, le numéro de séquence et le numéro d'accusé de réception utilisés lorsque TCP/IP établit une connexion. Les trois flèches pointant vers lui représentent une prise de contact à trois. Après avoir terminé la négociation à trois, le client et le serveur commencent à transmettre des données.

PS : L'image provient d'informations en ligne

Première poignée de main : le client envoie un paquet syn (syn=j) au serveur et saisit le SYN_SEND state. En attente de confirmation du serveur ;

Deuxième poignée de main : Le serveur reçoit le paquet syn et doit confirmer le SYN du client (ack=j+1), et en même temps il envoie également un paquet SYN ( syn=k), c'est-à-dire le paquet SYN+ ACK, à ce moment le serveur entre dans l'état SYN_RECV

La troisième poignée de main : le client reçoit le paquet SYN+ACK du serveur et envoie un paquet de confirmation ACK ( ack=k+1) au serveur. Une fois le paquet envoyé, le client et le serveur entrent dans l'état ESTABLISHED et terminent la négociation à trois.

Processus de prise de contact HTTPS

HTTPS ajoute le protocole SSL basé sur HTTP, et SSL s'appuie sur des certificats pour vérifier le l’identité du serveur et chiffrer les communications entre le navigateur et le serveur. Plus précisément, la façon d'effectuer le cryptage, le déchiffrement et la vérification est illustrée dans la figure ci-dessous. Ce qui suit est appelé une poignée de main. Qu'est-ce que la poignée de main HTTP vs HTTPS

PS : La description suivante de la photo est tirée de : http://zhuqil.cnblogs.com

1. Le client lance une requête HTTPS

2. Configuration du serveur

Un serveur qui utilise le protocole HTTPS doit avoir un ensemble de certificats numériques Vous pouvez le créer vous-même ou utiliser un certificat CA. La différence est que le certificat émis par vous-même doit être vérifié par le client avant que vous puissiez continuer à y accéder, tandis que l'utilisation du certificat CA ne fera pas apparaître la page d'invite. Ce certificat est en réalité une paire de clés publique et privée. La clé publique est utilisée pour le cryptage par d'autres et la clé privée est utilisée pour le déchiffrement par vous-même.

3. Transférer le certificat

Ce certificat est en fait une clé publique, mais il contient de nombreuses informations, comme l'autorité émettrice. du certificat, délai d'expiration, etc.

4. Le client analyse le certificat

Cette partie du travail est complétée par le TLS du client. Il vérifiera d'abord si le public. La clé est valide. Par exemple, l'autorité émettrice, l'heure d'expiration, etc. Si une anomalie est détectée, une boîte d'avertissement apparaîtra indiquant qu'il y a un problème avec le certificat. S'il n'y a aucun problème avec le certificat, une valeur aléatoire est générée puis la valeur aléatoire est cryptée avec le certificat.

5. Transmettre des informations cryptées

Cette partie transmet une valeur aléatoire cryptée avec un certificat, le but est de laisser le serveur obtenir cette valeur aléatoire valeur, la communication future entre le client et le serveur peut être cryptée et déchiffrée grâce à cette valeur aléatoire.

6. Informations de décryptage du segment de service

Une fois que le serveur l'a déchiffré avec la clé privée, il obtient la valeur aléatoire (clé privée) transmise par le client, puis crypte symétriquement le contenu en utilisant cette valeur. Le cryptage dit symétrique consiste à mélanger des informations et des clés privées via un certain algorithme, de sorte qu'à moins que la clé privée ne soit connue, le contenu ne peut pas être obtenu, et que le client et le serveur connaissent la clé privée, donc tant que le l'algorithme de cryptage est suffisamment puissant, la clé privée est suffisamment complexe et les données sont suffisamment sécurisées.

7. Transmission d'informations cryptées

Cette partie des informations est l'information cryptée avec la clé privée dans le segment de service, qui peut être utilisé sur la réduction client.

8. Le client décrypte les informations

Le client utilise la clé privée générée précédemment pour décrypter les informations transmises par le segment de service, et obtient ensuite le décryptage du contenu suivant.

PS : Même si le tiers surveille les données pendant tout le processus de prise de contact, il n'y a rien à faire.

Résumé

Pourquoi HTTPS est-il sécurisé ?

Dans la quatrième étape de la poignée de main HTTPS, si le certificat du site n'est pas fiable, l'interface de confirmation suivante s'affichera pour confirmer l'authenticité du site Web. De plus, les étapes six et huit utilisent la clé privée du client pour chiffrer et déchiffrer, garantissant ainsi la sécurité de la transmission des données.

La différence entre HTTPS et HTTP

1 Le protocole https nécessite de demander un certificat auprès de. ca ou faire un certificat fait maison .

2. Les informations http sont transmises en texte clair, tandis que https utilise un cryptage SSL sécurisé.

3. http transmet les données directement avec TCP, tandis que https passe par une couche SSL (couche de présentation OSI) et utilise différents ports. Le premier est 80 (nécessite un dépôt national) et le second est 443.

4. La connexion http est très simple et sans état ; le protocole HTTPS est un protocole réseau construit à partir du protocole SSL+HTTP qui peut effectuer une transmission cryptée et une authentification d'identité, et est plus sécurisé que le protocole http.

Notez que le cryptage https est terminé au niveau de la couche de transport

Les paquets https sont cryptés lorsqu'ils sont regroupés dans des paquets TCP, que ce soit à la fois le champ d'en-tête et le champ de corps de https seront cryptés.

Lors de l'utilisation de tcpdump ou wireshark et d'autres outils de couche TCP pour capturer des paquets, le contenu crypté est obtenu, tandis que si la couche d'application est utilisé pour capturer le package, utilisez l'outil de capture de paquets Charels(Mac), Fildder(Windows), puis bien sûr, vous le verrez en texte clair.

PS : HTTPS lui-même est destiné à la sécurité des transmissions réseau.

Exemple, utilisez Wireshark pour capturer des paquets :

http, vous pouvez voir que la capture est en texte clair :

https, vous pouvez voir Caught en texte chiffré :

Annexe

Les algorithmes de chiffrement et de HASH généralement utilisés par HTTPS sont les suivants :

Algorithme de chiffrement asymétrique : RSA, DSA/DSS

Algorithme de chiffrement symétrique : AES, RC4, 3DES

Algorithme de HASH : MD5, SHA1, SHA256

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn