
Protocole shell rapide et sécurisé basé sur HTTP/3, QUIC et TLS 1.3. Prend en charge OAuth2, OpenID Connect et l'authentification SSH classique avec le transfert de ports UDP et les capacités de serveur caché.
[!NOTE] SSH3 va probablement changer de nom. Il s'agit toujours du protocole de connexion SSH (RFC4254) fonctionnant sur HTTP/3 Extended Connect, mais les modifications nécessaires sont lourdes et trop éloignées de la philosophie des implémentations SSH populaires pour être envisagées en vue d'une intégration. Le projet de spécification a déjà été renommé (« Remote Terminals over HTTP/3 »), mais nous avons besoin de temps pour trouver un joli nom permanent.
SSH3 est une refonte complète du protocole SSH, mappant sa sémantique sur les mécanismes HTTP. Il est issu de nos travaux de recherche et nous (chercheurs) l'avons récemment proposé comme Internet-Draft (draft-michel-remote-terminal-http3-00).
En résumé, SSH3 utilise QUIC+TLS1.3 pour l'établissement d'un canal sécurisé et les mécanismes d'Autorisation HTTP pour l'authentification des utilisateurs. Entre autres, SSH3 permet les améliorations suivantes :
[!TIP] Vous voulez démarrer rapidement ? Découvrez comment installer SSH3. Vous apprendrez à mettre en place un serveur SSH3 et à utiliser le client SSH3.
Plus rapide pour l'établissement de session, pas pour le débit ! SSH3 offre un établissement de session significativement plus rapide que SSHv2. Établir une nouvelle session avec SSHv2 peut prendre 5 à 7 allers-retours réseau, ce qui peut facilement être remarqué par l'utilisateur. SSH3 ne nécessite que 3 allers-retours. La latence des frappes dans une session en cours est inchangée.
SSH3 (haut) VS SSHv2 (bas) établissement de session avec un ping de 100ms vers le serveur.
Alors que SSHv2 définit ses propres protocoles pour l'authentification des utilisateurs et l'établissement de canaux sécurisés, SSH3 s'appuie sur les mécanismes robustes et éprouvés de TLS 1.3, QUIC et HTTP. Ces protocoles sont déjà largement utilisés pour sécuriser des applications critiques pour la sécurité sur Internet, comme le commerce en ligne et les services bancaires en ligne.
SSH3 implémente déjà les méthodes d'authentification courantes par mot de passe et par clé publique (RSA et EdDSA/ed25519). Il supporte également de nouvelles méthodes d'authentification telles que OAuth 2.0 et permet de vous connecter à vos serveurs en utilisant vos comptes Google/Microsoft/Github.
Bien que SSH3 montre des promesses pour un établissement de session plus rapide, il en est encore à un stade précoce de preuve de concept. Comme pour tout nouveau protocole complexe, un examen cryptographique expert sur une période prolongée est nécessaire avant de pouvoir tirer des conclusions de sécurité raisonnables.
Nous développons SSH3 en tant que projet open source pour faciliter les retours et l'analyse de la communauté. Cependant, nous ne pouvons pas encore approuver son adéquation pour des systèmes de production sans examen supplémentaire par des pairs. Veuillez collaborer avec nous si vous avez l'expertise appropriée !
Compte tenu de l'état actuel du prototype, nous conseillons de tester SSH3 dans des environnements sandbox ou des réseaux privés. Sachez que rendre des serveurs expérimentaux directement accessibles sur Internet pourrait introduire des risques avant un examen de sécurité approfondi.
Bien que cacher les serveurs derrière des chemins secrets présente des avantages potentiels, cela ne supprime pas la nécessité d'une analyse rigoureuse des vulnérabilités avant la mise en production. Nous sommes enthousiastes quant aux possibilités futures de SSH3 mais encourageons un examen supplémentaire au préalable.
Avec SSH3, vous pouvez éviter le stress habituel des attaques de balayage et de dictionnaire contre votre serveur SSH. Comme pour vos documents Google Drive secrets, votre serveur SSH3 peut être caché derrière un lien secret et ne répondre qu'aux tentatives d'authentification qui ont effectué une requête HTTP à ce lien spécifique, comme suit :
ssh3-server -bind 192.0.2.0:443 -url-path <my-long-secret>
En remplaçant <my-long-secret> par, disons, la valeur aléatoire M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU, votre serveur SSH3 ne répondra qu'aux tentatives de connexion SSH3 adressées à l'URL https://192.0.2.0:443/M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU et répondra 404 Not Found aux autres requêtes. Les attaquants et robots d'exploration sur Internet ne peuvent donc pas détecter la présence de votre serveur SSH3. Ils ne verront qu'un simple serveur web répondant des codes de statut 404 à chaque requête.
À NOTER : placer votre serveur SSH3 derrière une URL secrète peut réduire l'impact des attaques par balayage mais ne remplacera et ne doit jamais remplacer les mécanismes d'authentification classiques. Le lien secret ne devrait être utilisé que pour éviter que votre hôte ne soit découvert. Connaître l'URL secrète ne devrait pas donner accès à votre serveur. Utilisez les mécanismes d'authentification classiques décrits ci-dessus pour protéger votre serveur.
SSH3 offre de nouvelles fonctionnalités que le protocole SSHv2 ne pouvait pas fournir.