TLS (Transport Layer Security) et SSH (Secure Shell) sont des protocoles du monde réel qui utilisent des canaux bidirectionnels pour une communication sécurisée. Voici comment ils utilisent les canaux bidirectionnels :
TLS (sécurité de la couche de transport)
TLS est un protocole cryptographique utilisé pour sécuriser les communications sur Internet. Il utilise des canaux bidirectionnels pour garantir la confidentialité et l'intégrité des données échangées entre un client et un serveur.
1. Handshake : La poignée de main TLS est un processus par lequel le client et le serveur établissent une connexion sécurisée. Au cours de ce processus, ils échangent des messages contenant le numéro de version, des nombres aléatoires et des clés cryptographiques. Cette poignée de main est un processus bidirectionnel dans lequel les deux parties envoient et reçoivent des données.
2. Chiffrement des données : une fois la négociation terminée, le client et le serveur utilisent les clés cryptographiques établies pour crypter et déchiffrer les données. Ce processus de cryptage et de décryptage est également bidirectionnel, puisque les deux parties envoient et reçoivent des données cryptées.
3. Key Exchange : TLS utilise un protocole d'échange de clés pour échanger en toute sécurité des clés cryptographiques entre le client et le serveur. Cet échange de clés est également bidirectionnel, puisque les deux parties envoient et reçoivent des clés.
SSH (shell sécurisé)
SSH est un protocole d'accès à distance sécurisé qui permet aux utilisateurs d'accéder et de gérer en toute sécurité des serveurs distants. Il utilise des canaux bidirectionnels pour une communication sécurisée entre le client et le serveur.
1. Connexion initiale : le client SSH initie une connexion au serveur en envoyant une demande pour établir une connexion sécurisée. Le serveur répond avec un message contenant sa clé publique et d'autres informations. Cette connexion initiale est un processus bidirectionnel, dans lequel les deux parties envoient et reçoivent des données.
2. Authentification : une fois la connexion initiale établie, le client et le serveur s'authentifient mutuellement à l'aide de la cryptographie à clé publique. Ce processus d'authentification est également bidirectionnel, puisque les deux parties envoient et reçoivent des messages d'authentification.
3. Chiffrement des données : une fois le client et le serveur authentifiés, ils utilisent une clé secrète partagée pour crypter et déchiffrer les données. Ce processus de cryptage et de décryptage est également bidirectionnel, puisque les deux parties envoient et reçoivent des données cryptées.
En TLS et SSH, des canaux bidirectionnels sont utilisés pour garantir la confidentialité et l'intégrité des données échangées entre le client et le serveur. Ces protocoles utilisent des canaux bidirectionnels pour établir des connexions sécurisées, échanger des clés cryptographiques et crypter et déchiffrer des données.
Citations :[1] https://tosc.iacr.org/index.php/ToSC/article/view/602/543
[2] https://www.scaler.com/topics/golang/directionnel-channel-in-golang/
[3] https://blog.devtrovert.com/p/go-channels-explained-more-than-just
[4] https://www.naukri.com/code360/library/directionnel-channel-in-golang
[5] https://eprint.iacr.org/2017/161.pdf