Comment générer navigateur clé symétrique lors de connexion SSL
-
30-09-2019 - |
Question
J'ai une petite confusion lors de la négociation SSL entre le navigateur et le serveur dans un scénario web typique https:
Ce que j'ai compris jusqu'à présent est que dans le processus de poignée de main SSL, le client (navigateur dans ce cas) encrypte une clé symétrique choisie au hasard avec la clé publique (certificat reçu du serveur). Ceci est renvoyé au serveur, serveur déchiffre (clé symétrique) avec la clé privée. Cette clé symétrique est maintenant utilisé pendant le repos de la session pour crypter / décrypter les messages aux deux extrémités. L'une des principales raisons de le faire est donné que le cryptage plus rapide à l'aide des clés symétriques.
Questions
1) Comment navigateur et génère cette ramasser « au hasard » sélectionné clé symétrique?
2) les développeurs font (ou / et les utilisateurs du navigateur) ont le contrôle sur ce mécanisme de génération de clés symétriques?
La solution
est une très bonne description du fonctionnement de l'établissement de connexion HTTPS. Je fournirai résumé comment la clé de session est acquise par les deux parties (client et serveur), ce processus est connu comme « un protocole d'accord de clé », voici comment cela fonctionne:
- Le client génère le « secret pré-maître » 48 octets valeur aléatoire.
- Les plaquettes de client ces octets avec des données aléatoires pour faire de l'entrée égale à 128 octets.
- Le client, il encrypte avec la clé publique du serveur et l'envoie au serveur.
-
Ensuite, la clé principale est produit par les deux parties comme suit:
master_secret = PRF( pre_master_secret, "master secret", ClientHello.random + ServerHello.random )
Le PRF est la « fonction pseudo-aléatoire » qui est également défini dans la spec et est très intelligent. Il combine le secret, l'étiquette ASCII, et les données de semences que nous lui donnons à l'aide de la clé-Hash message Code d'authentification (HMAC) versions des deux hachage MD5 et SHA-1 les fonctions. La moitié de l'entrée est envoyée à chaque fonction de hachage. Ses intelligent, car il est tout à fait résistant à l'attaque, même face à des faiblesses MD5 et SHA-1. Ce processus peut modifier sur lui-même et itérer toujours pour générer autant d'octets que nous avons besoin.
Suite à cette procédure, on obtient un « secret maître » 48 octets.
Autres conseils
Je cite une vidéo sur ce grand réseau vidéo, minute 01:18:07
Alors, par où vous obtenez hasard sur votre ordinateur parce que votre l'ordinateur est un dispositif déterministe?
Eh bien, il recueille comme entropies vos mouvements de course de souris, clé les mouvements de course et le moment de votre disque dur, il tente de recueillir tout ce que le hasard de l'univers dans une traction de façon à pouvoir générer des clés aléatoires juste pour une connexion [cette session] . Et si ce hasard est brisé et son arrivé plusieurs fois au cours des 30 dernières années, alors aucune de ces œuvres. Si l'adversaire peut figurent ce que votre caractère aléatoire peut être alors ils peuvent deviner vos clés. Il faut donc utiliser un bon caractère aléatoire.
Remarque: les clés sont créées par session .