web-dev-qa-db-fra.com

Comment HTTPS assure-t-il la sécurité?

Je veux savoir comment HTTPS est implémenté. Indique si les données sont cryptées ou si le chemin d'accès est crypté (via lequel les données sont transmises). Je serai reconnaissant si quelqu'un me fournit des détails de mise en œuvre.

27
Jagan

Très simplement, HTTPS utilise Secure Socket Layer pour chiffrer les données transférées entre le client et le serveur. SSL utilise l'algorithme RSA http://en.wikipedia.org/wiki/RSA , une technologie de cryptage asymétrique. Les détails précis du fonctionnement de l'algorithme sont complexes, mais en gros, il tire parti du fait que, s'il est facile de multiplier deux grands nombres premiers ensemble, il est très difficile de factoriser le résultat dans les nombres premiers constituants. Voici comment fonctionne le cryptage SSL/RSA:

Le serveur génère deux grands nombres premiers et les multiplie ensemble. Ceci s'appelle la "clé publique". Cette clé est mise à la disposition de tout client souhaitant transmettre des données en toute sécurité au serveur. Le client utilise cette "clé publique" pour chiffrer les données qu'il souhaite envoyer. Comme il s’agit d’un algorithme asymétrique, la clé publique ne peut pas être utilisée pour déchiffrer les données transmises, mais seulement pour les chiffrer. Pour décrypter, vous avez besoin des nombres premiers originaux, et seul le serveur les possède (la "clé privée"). À la réception des données chiffrées, le serveur utilise sa clé privée pour déchiffrer la transmission.

Si vous naviguez sur le Web, votre navigateur donne sa clé publique au serveur. Le serveur utilise cette clé pour chiffrer les données à envoyer à votre navigateur, qui utilise ensuite sa clé privée pour le déchiffrer.

Donc, oui, toutes les données transmises au serveur via HTTP sont cryptées - et cryptées correctement. Les implémentations SSL typiques utilisent 128 ou 256 chiffres pour leurs clés. Pour résoudre ce problème, vous avez besoin d'une quantité vraiment considérable de ressources informatiques.

Autant que je sache, la demande d'actif de serveur n'est pas chiffrée - utilisez httpfox https://addons.mozilla.org/en-US/firefox/addon/6647/ ou Wireshark http: // www.wireshark.org/ ou quelque chose à confirmer.

57
Richard H

De deux façons.

  1. En veillant à ce que toutes les informations transmises entre vous et le site Web soient cryptées. Pour ce faire, il utilise un processus d’échange de clés utilisant RSA (qui échange une «clé de session», utilisée pour le cryptage réel).

  2. En essayant de faire confiance au site Web que vous visitez. Les certificats sont fournis aux domaines et l'idée est que, sur votre ordinateur, vous ne faites confiance qu'aux certificats de différentes sources réputées. Ensuite, vous pouvez (en théorie) être assuré que lorsqu'un certificat apparaît pour "Votre banque", il s'agit vraiment du site Web "Votre banque" et non d'un autre site Web. Dans la pratique, très peu de personnes s'intéressent à cet aspect de SSL.

C'est couche de transport sécurité. Ce n'est pas le niveau de l'application. Vous devez toujours suivre des pratiques de codage sécurisé et diverses autres techniques pour vous assurer que votre site est sécurisé.

9
Noon Silk

Vous pouvez lire tous les détails dans le TLSv1 RFC-2246 .


Pour l'analyse de la sécurité, plus précisément la section suivante:

F. Analyse de sécurité

Le protocole TLS est conçu pour établir une connexion sécurisée entre un client et un serveur communiquant sur un canal non sécurisé. Ce document repose sur plusieurs hypothèses classiques, notamment que les attaquants disposent de ressources informatiques substantielles et ne peuvent pas obtenir d'informations secrètes auprès de sources extérieures au protocole. Les attaquants sont supposés avoir la capacité de capturer, modifier, supprimer, rejouer et autrement falsifier les messages envoyés via le canal de communication. Cette annexe explique comment TLS a été conçu pour résister à diverses attaques.

autre contenu coupé

5

Je pensais que c’était une explication lisible par l’homme très concise: http://robertheaton.com/2014/03/27/how-does-https-actually-work/

Voici ma version résumée:

Concepts:

  • Algorithme de cryptographie asymétrique - Cryptage à clé publique, décryptage à clé privée.
  • Algorithme de cryptographie symétrique - Cryptage et décryptage à clé publique.

Poignée de main:

  1. Hello - Algorithme de cryptographie d'envoi du client et version SSL qu'il prend en charge.
  2. Certificate Exchange - Le serveur envoie un certificat pour s'identifier, ainsi qu'une clé publique de certificat.
  3. Key Exchange - Le client utilise la clé publique Certificate pour chiffrer une nouvelle clé publique régénérée par le client (à l'aide de l'algorithme de cryptographie asymétrique convenu à l'étape 1) et l'envoyer au serveur. Le serveur le déchiffre en utilisant sa clé privée (en utilisant un algorithme de cryptographie asymétrique).
  4. Data Exchange - Cette clé publique est maintenant connue du client et du serveur. Il est utilisé pour les demandes/réponses ultérieures à la fois pour le chiffrement et le déchiffrement sur le client et le serveur (algorithme de cryptographie symétrique).
3
AntonK

Le serveur et le client ne contrôlent pas le chemin utilisé pour transmettre les données. Le chemin utilisé concerne la couche réseau (Internet Protocol - IP) et non le protocole TLS (Transport Layer Security).

Les données elles-mêmes sont cryptées et il existe également des moyens de vérification de l'authenticité du serveur, comme mentionné par Noon Silk.

http://en.wikipedia.org/wiki/Transport_Layer_Security

0
Leandro Gomide