Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1 dans RouterOs 7.4
On 2022-08-30 08:17, Vincent Bernat wrote: Je ne suis pas sur d'avoir bien tout compris mais il semble bien que le fameux algo de hash sha1 ou sha2-256 ou autre soit inclus dans le "rsa_signature_blob" Cette partie est utilisée dans le protocole SSH lors de l'authentification, pas dans le format de la clef. Dans le code source de OpenSSH: #v+ static const struct keytype keytypes[] = { ... { "ssh-rsa", "RSA", NULL, KEY_RSA, 0, 0, 0 }, { "rsa-sha2-256", "RSA", NULL, KEY_RSA, 0, 0, 1 }, { "rsa-sha2-512", "RSA", NULL, KEY_RSA, 0, 0, 1 }, { "ssh-dss", "DSA", NULL, KEY_DSA, 0, 0, 0 }, ... #v- Donc les trois types sont mappés sur KEY_RSA. Hors signature par une CA (avec -s), il n'y a pas de différence entre ces 3 options. --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1 dans RouterOs 7.4
On 2022-08-30 03:21, Pierre Colombier via frnog wrote: Je ne suis pas sur d'avoir bien tout compris mais il semble bien que le fameux algo de hash sha1 ou sha2-256 ou autre soit inclus dans le "rsa_signature_blob" Cette partie est utilisée dans le protocole SSH lors de l'authentification, pas dans le format de la clef. aug/30 01:23:26 ssh,debug pki algorithm: ssh-rsa Ca ressemble pas aux messages de debug de OpenSSH. C'est un OpenSSH qui tourne sur les Mikrotik ? Elle fait quelle taille cette vieille clef ? Les releases notes de la 7.4 disent que le change ne concerne que ceux qui ont activé strong-crypto=yes, est-ce ton cas ? --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1 dans RouterOs 7.4
Bonsoir Vincent, J'ai regardé (vite fait) le RFC4253 et justement il fait référence au rfc3447 https://datatracker.ietf.org/doc/html/rfc3447#section-8.2 Also, in the encoding method EMSA-PKCS1-v1_5, a hash function identifier is embedded in the encoding. Because of this feature, an adversary trying to find a message with the same signature as a previously signed message must find collisions of the particular hash function being used; attacking a different hash function than the one selected by the signer is not useful to the adversary. https://datatracker.ietf.org/doc/html/rfc2437#section-9.2.1 Je ne suis pas sur d'avoir bien tout compris mais il semble bien que le fameux algo de hash sha1 ou sha2-256 ou autre soit inclus dans le "rsa_signature_blob" Bref, comme tout ce qui a l'air simple, en fait, c'est hyper compliqué Quoi qu'il en soit, le présent fil de discussion est motivé par le problème suivant : J'ai une clé rsa de longue date utilisée sur une foule d'équipements mikrotik, et ça marche très bien jusqu'a ROS v7.2.3 aug/30 01:23:26 ssh,debug agreed on: diffie-hellman-group-exchange-sha256 rsa-sha2-256 aes128-ctr aes128-ctr hmac-sha1 hmac-sha1 none none aug/30 01:23:26 ssh,debug auth req: pierre ssh-connection publickey aug/30 01:23:26 ssh,debug auth retry: 1 aug/30 01:23:26 ssh,debug pki algorithm: ssh-rsa aug/30 01:23:26 ssh,info publickey accepted for user: pierre Après update en v7.4, ça ne marche plus aug/30 01:38:01 ssh,debug agreed on: diffie-hellman-group-exchange-sha256, rsa-sha2-256, aes128-ctr, aes128-ctr, hmac-sha1, hmac-sha1, none, none aug/30 01:38:02 ssh,debug auth req: pierre ssh-connection publickey aug/30 01:38:02 ssh,debug auth retry: 1 aug/30 01:38:02 ssh,error signature differs for user: pierre Après génération d'une nouvelle clé et sans changer aucune autre option tant sur le serveur que sur le client aug/30 01:42:41 ssh,debug agreed on: diffie-hellman-group-exchange-sha256, rsa-sha2-256, aes128-ctr, aes128-ctr, hmac-sha1, hmac-sha1, none, none aug/30 01:42:41 ssh,debug auth req: pierre ssh-connection publickey aug/30 01:42:41 ssh,debug auth retry: 1 aug/30 01:42:41 ssh,debug pki algorithm: rsa-sha2-256 aug/30 01:42:41 ssh,info publickey accepted for user: pierre Donc, si par exemple on a une clé de ce type là. Si on a tout desactivé sauf ssh et si on a laisse /ip ssh set always-allow-password-login=no qui est la valeur par défaut et bien après upgrade en RoS 7.4, on est beuzeuh ! c'est bon pour un factory reset ! On 30/08/2022 00:02, Vincent Bernat wrote: On 2022-08-29 23:13, Pierre Colombier via frnog wrote: En d'autres termes, quand il y a bien longtemps, sur une debian 8 far far away, j'ai fait un ssh-keygen -t rsa -b 4096 ou bien aujourd'hui sur une debian 11 ssh-keygen -t rsa-sha2-256 -b 4096 C'est exactement pareil que -t rsa ou -t ssh-rsa car une clef RSA, ce sont deux nombres. Il n'y a pas de hash. Le -t rsa-sha2-256 est utilisé quand on signe des clefs avec un certificat. je crée toujours une clé rsa de 4096 bits, j'ai bien toujours un fichier id_rsa.pub qui a le même format et commence par "ssh-rsa", mais par contre, il y a bien une différence, car quand bien même le client ssh serait récent, la première a cessé d'être acceptée par les serveur ssh récents, alors que la seconde fonctionne bien. donc, le "public key blob" quand bien même il ne change pas de format, embarque bien quelque chose qui est basé sur un hash sha1 ou sha256 (ou autre). Refait la même chose avec -t ssh-rsa et cela fonctionnera aussi. Ce n'est pas pour ça que ta clef n'est plus acceptée. C'est soit qu'elle est trop petite, soit que ce n'est pas elle qui est dans le known hosts. Ou alors, le "blob" contient juste la clé publique + une étiquette qui dit quel algo de hash on est sensé employer et dans ce cas j'aurais bien aimé modifier mon fichier .pub pour employer le nouvel algo tout en gardant la même clé. ça me rendrait la migration beaucoup plus simple. Nope. Le format est dans la RFC 4253. Ce sont deux nombres encodés. https://datatracker.ietf.org/doc/html/rfc4253#section-6.6 --- Liste de diffusion du FRnOG http://www.frnog.org/ --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
On 2022-08-29 23:13, Pierre Colombier via frnog wrote: En d'autres termes, quand il y a bien longtemps, sur une debian 8 far far away, j'ai fait un ssh-keygen -t rsa -b 4096 ou bien aujourd'hui sur une debian 11 ssh-keygen -t rsa-sha2-256 -b 4096 C'est exactement pareil que -t rsa ou -t ssh-rsa car une clef RSA, ce sont deux nombres. Il n'y a pas de hash. Le -t rsa-sha2-256 est utilisé quand on signe des clefs avec un certificat. je crée toujours une clé rsa de 4096 bits, j'ai bien toujours un fichier id_rsa.pub qui a le même format et commence par "ssh-rsa", mais par contre, il y a bien une différence, car quand bien même le client ssh serait récent, la première a cessé d'être acceptée par les serveur ssh récents, alors que la seconde fonctionne bien. donc, le "public key blob" quand bien même il ne change pas de format, embarque bien quelque chose qui est basé sur un hash sha1 ou sha256 (ou autre). Refait la même chose avec -t ssh-rsa et cela fonctionnera aussi. Ce n'est pas pour ça que ta clef n'est plus acceptée. C'est soit qu'elle est trop petite, soit que ce n'est pas elle qui est dans le known hosts. Ou alors, le "blob" contient juste la clé publique + une étiquette qui dit quel algo de hash on est sensé employer et dans ce cas j'aurais bien aimé modifier mon fichier .pub pour employer le nouvel algo tout en gardant la même clé. ça me rendrait la migration beaucoup plus simple. Nope. Le format est dans la RFC 4253. Ce sont deux nombres encodés. https://datatracker.ietf.org/doc/html/rfc4253#section-6.6 --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
Bonsoir François, et Emmanuel Merci pour vos réponses. Et merci pour le lien sympa, mais qu'en fait, j'avais déjà parcouru. A une époque qui commence à me paraitre lointaine, j'avais fait du RSA sur papier et avec des petit nombres en cours d'arithmétique. Donc, même si ça date, je vois encore assez bien ce que c'est. Je suis bien d'accord que RSA n'est pas utilisé pour le gros de la data mais sert à échanger les clés éphémères d'algos comme AES ou Blowfish et ainsi établir le canal chiffré. Il me semblait cependant que c'était plus pour des questions de performances que de sécurité que RSA n'était employé qu'avec des tout petit volumes. Mais en fait, peu importe... Si je vois bien l'utilité de signer des choses avec un algo de hash pour sécuriser la session, ou authentifier des paquets, etc... Le choix de l'algo de hashage me semble tout de même relever des négociations entre client et serveur à l'établissement de la session et je ne vois toujours pas en quoi ça caractériserait la clé et en ferait un type de clé à part entière. En d'autres termes, quand il y a bien longtemps, sur une debian 8 far far away, j'ai fait un ssh-keygen -t rsa -b 4096 ou bien aujourd'hui sur une debian 11 ssh-keygen -t rsa-sha2-256 -b 4096 je crée toujours une clé rsa de 4096 bits, j'ai bien toujours un fichier id_rsa.pub qui a le même format et commence par "ssh-rsa", mais par contre, il y a bien une différence, car quand bien même le client ssh serait récent, la première a cessé d'être acceptée par les serveur ssh récents, alors que la seconde fonctionne bien. donc, le "public key blob" quand bien même il ne change pas de format, embarque bien quelque chose qui est basé sur un hash sha1 ou sha256 (ou autre). Et c'est bien de cela que je ne comprends (toujours pas) l'utilité. Ou alors, le "blob" contient juste la clé publique + une étiquette qui dit quel algo de hash on est sensé employer et dans ce cas j'aurais bien aimé modifier mon fichier .pub pour employer le nouvel algo tout en gardant la même clé. ça me rendrait la migration beaucoup plus simple. On 29/08/2022 20:58, Francois Romieu wrote: Ta clef privée RSA ne doit pas être employée pour chiffrer *directement* des données [...] On 29/08/2022 21:56, Emmanuel DECAEN wrote: Bonsoir, Une petite explication sympa: https://levelup.gitconnected.com/demystifying-ssh-rsa-in-openssh-deprecation-notice-22feb1b52acd Bonne lecture. -- *Emmanuel DECAEN* --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
Bonsoir, Le 29/08/2022 à 18:51, Pierre Colombier via frnog a écrit : [...] J'entends bien que le *format* "ssh-rsa" n'est pas déprécié. D'ailleurs ma nouvelle clé publique type "rsa-sha2-256" commence bien par "ssh-rsa B3NzaC1yc2EAA.." Ma question "académique" est que je ne comprends pas d'où vient ce besoin d'une signature/hash ? que ce soit md5, sha1, sha256 ou autre, en quoi l'algo rsa seul n'est-il pas suffisant ? Une petite explication sympa: https://levelup.gitconnected.com/demystifying-ssh-rsa-in-openssh-deprecation-notice-22feb1b52acd Bonne lecture. -- *Emmanuel DECAEN* --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
Bonsoir, Pierre Colombier via frnog : [...] > Ma question "académique" est que je ne comprends pas d'où vient ce besoin > d'une signature/hash ? que ce soit md5, sha1, sha256 ou autre, en quoi > l'algo rsa seul n'est-il pas suffisant ? Ta clef privée RSA ne doit pas être employée pour chiffrer *directement* des données qui seraient sous mon seul contrôle sans quoi elle ne va pas rester privée très longtemps. Ce point est crucial. Il faut néanmoins que tu prennes un peu en compte ce que je choisis sans quoi c'est moi qui risque de te confondre avec un malveillant. Les algorithmes de condensation interviennent à ce moment là, notamment en tant que fonctions à sens unique sans porte dérobée (pour le commun d'entre nous). Est-ce que ça aide à gogoliser ? -- Ueimor --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
On 2022-08-29 18:51, Pierre Colombier via frnog wrote: D'ailleurs ma nouvelle clé publique type "rsa-sha2-256" commence bien > par "ssh-rsa B3NzaC1yc2EAA.." Il n'y a pas de SHA dans une clef publique RSA. Une clef publique RSA, ce sont deux grands entiers. Ce que peut refuser un serveur, c'est une clef publique trop courte. Depuis quelques années, la longueur minimale pour une clef RSA est de 1024 bits (contre 768 auparavant). Ma question "académique" est que je ne comprends pas d'où vient ce besoin d'une signature/hash ? que ce soit md5, sha1, sha256 ou autre, en quoi l'algo rsa seul n'est-il pas suffisant ? RSA est un algorithme de chiffrement/signature à clef publique. Il est trop lent pour tout chiffrer avec. Le chiffrement des données en SSH s'effectue avec une clef partagée qui est négociée à la création de la session (c'est la partie Diffie-Hellman, pas concernée ici). La clef RSA est utilisée dans ce contexte pour authentifier l'utilisateur et le serveur avec une signature. Signer quelque chose avec une clef RSA, c'est appliquer une fonction de hash sur des octets et ensuite les chiffrer avec la clef privée. La vérification est faite avec la clef publique. C'est cette signature qui a besoin d'une fonction de hash. --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
Bonsoir vincent, Oui, il y a une homonymie qui prête à confusion. >"ssh-rsa" keys are capable of signing using "rsa-sha2-256" (RSA/SHA256), >"rsa-sha2-512" (RSA/SHA512) and "ssh-rsa" (RSA/SHA1). le nom "ssh-rsa" est employé 2 fois dans des contextes différents (et d'ailleurs WTF ???) Mon problème par contre, n'est pas de se connecter à un vieux serveur mais au contraire à un serveur trop moderne qui suite à mise à jour se met subitement à reffuser les ancienne clés, et sur lequel on a pas la main parce-qu'il est propriétaire (mikrotik est un système fermé) J'entends bien que le *format* "ssh-rsa" n'est pas déprécié. D'ailleurs ma nouvelle clé publique type "rsa-sha2-256" commence bien par "ssh-rsa B3NzaC1yc2EAA.." Ma question "académique" est que je ne comprends pas d'où vient ce besoin d'une signature/hash ? que ce soit md5, sha1, sha256 ou autre, en quoi l'algo rsa seul n'est-il pas suffisant ? J'ai bien déjà googlé la question mais pour le moment je n'ai pas trouvé d'explications claires. La réponse est sûrement dans les RFC, mais j'avoue que j'ai pas tellement envie de me taper des heures de lecture juste pour ça. D'où le fait que je la pose ici, au cas ou un geek barbu pouvait m'éclairer en quelques phrases et quelques liens. On 29/08/2022 18:08, Vincent Bernat wrote: On 2022-08-29 15:25, Pierre Colombier via frnog wrote: du coup, si tous les usagers ont des clées rsa installées et si ssh est la seule façon d'administrer le routeur, et bien on perds toute possibilité d'accès après la mise à jour. Ce ne sont pas les clefs "ssh-rsa", c'est l'algo de signature à clef publique ssh-rsa qui est désactivé par défaut. Pour se connecter à un vieux serveur qui n'accepte pas d'algo plus moderne, on peut toujours utiliser "-o HostKeyAlgorithms=+ssh-rsa" pour le réactiver. Le format de clef ssh-rsa n'est pas prévu d'être déprécié. Il n'y a pas d'utilisation de SHA1 dans les clefs ssh-rsa. --- Liste de diffusion du FRnOG http://www.frnog.org/ --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
ça n'était pas ma question. Oui, ma clé est super-ancienne. Oui, c'est très facile d'en faire une nouvelle et cependant ça m'ennuie d'en changer car elle est installée sur une foule de machine et je suis à peu près certain d'en oublier. Du coup je vais quand même devoir garder la vieille dans un coin en passant ed25519 n'est pas accepté sur mikrotik Et ma question c'est justement cette histoire de signature (sha1 ou autre) : Vu que c'est pas un truc avec tiers de confiance, pourquoi un clé publique a-t-elle besoin d'être signée par quoi que se soit ? On 29/08/2022 17:22, Laurent S. via frnog wrote: Openssh 8.7 est sorti le 2021-08-20. Les problèmes de SHA1 sont connus depuis encore bien plus longtemps. De ce que je comprend, si ta clé est super ancienne (ssh-rsa en sha1) elle ne devrait plus être acceptée, même si elle est dans les ~/.ssh/authorized_keys Il existe des autres clés RSA faites plus récemment qui vont continuer de fonctionner (SHA256, SHA512). Faire une nouvelle clé est super facile. Perso je conseille une clé elliptique: ssh-keygen -t ed25519 -C "u...@example.org" (n'oublie pas de changer le -C) La partie plus embêtante est de copier ta nouvelle clé publique sur tous les serveurs. Je comprend pas le commentaire sur la signature. Est-ce le fait de signer une clé dans un CA? Je n'ai jamais joué avec ça et il me semble que cela se fait rarement. Courage, Laurent --- Liste de diffusion du FRnOG http://www.frnog.org/ --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
On 2022-08-29 15:25, Pierre Colombier via frnog wrote: du coup, si tous les usagers ont des clées rsa installées et si ssh est la seule façon d'administrer le routeur, et bien on perds toute possibilité d'accès après la mise à jour. Ce ne sont pas les clefs "ssh-rsa", c'est l'algo de signature à clef publique ssh-rsa qui est désactivé par défaut. Pour se connecter à un vieux serveur qui n'accepte pas d'algo plus moderne, on peut toujours utiliser "-o HostKeyAlgorithms=+ssh-rsa" pour le réactiver. Le format de clef ssh-rsa n'est pas prévu d'être déprécié. Il n'y a pas d'utilisation de SHA1 dans les clefs ssh-rsa. --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
Bonjour sauf que comme dit l'OP, les commutateurs Microtik, FS ou autres n'acceptent que du ssh-rsa Le 29/08/2022 à 17:22, Laurent S. via frnog a écrit : Openssh 8.7 est sorti le 2021-08-20. Les problèmes de SHA1 sont connus depuis encore bien plus longtemps. De ce que je comprend, si ta clé est super ancienne (ssh-rsa en sha1) elle ne devrait plus être acceptée, même si elle est dans les ~/.ssh/authorized_keys Il existe des autres clés RSA faites plus récemment qui vont continuer de fonctionner (SHA256, SHA512). Faire une nouvelle clé est super facile. Perso je conseille une clé elliptique: ssh-keygen -t ed25519 -C "u...@example.org" (n'oublie pas de changer le -C) La partie plus embêtante est de copier ta nouvelle clé publique sur tous les serveurs. Je comprend pas le commentaire sur la signature. Est-ce le fait de signer une clé dans un CA? Je n'ai jamais joué avec ça et il me semble que cela se fait rarement. Courage, Laurent --- Liste de diffusion du FRnOG http://www.frnog.org/ -- Daniel --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] fin du support de ssh-rsa signé avec sha-1
Openssh 8.7 est sorti le 2021-08-20. Les problèmes de SHA1 sont connus depuis encore bien plus longtemps. De ce que je comprend, si ta clé est super ancienne (ssh-rsa en sha1) elle ne devrait plus être acceptée, même si elle est dans les ~/.ssh/authorized_keys Il existe des autres clés RSA faites plus récemment qui vont continuer de fonctionner (SHA256, SHA512). Faire une nouvelle clé est super facile. Perso je conseille une clé elliptique: ssh-keygen -t ed25519 -C "u...@example.org" (n'oublie pas de changer le -C) La partie plus embêtante est de copier ta nouvelle clé publique sur tous les serveurs. Je comprend pas le commentaire sur la signature. Est-ce le fait de signer une clé dans un CA? Je n'ai jamais joué avec ça et il me semble que cela se fait rarement. Courage, Laurent --- Liste de diffusion du FRnOG http://www.frnog.org/