web-dev-qa-db-fra.com

ssh-keygen: À quoi sert la phrase secrète?

Lors de l'utilisation de ssh-keygen:
À quoi sert la phrase secrète?
Pourquoi est-ce facultatif?

Quelles sont les implications pour la sécurité de la spécification (ou de la non-spécification)?

Vous trouverez ci-dessous un extrait d'une session Shell (certains détails peuvent avoir été modifiés):

user@localhost:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /user/.ssh/id_rsa.
Your public key has been saved in /user/.ssh/id_rsa.pub.
The key fingerprint is:
60:8b:50:1e:0f:bc:5a:2a:13:1e:83:2b:d9:95:38:9e user@localhost
The key's randomart image is:
+---[RSA 2048]----+
|   .+            |
|   o.+           |
|. ...o+          |
|ooo.=o o         |
|.*oB. . S        |
|*.E              |
|.o               |
|                 |
|                 |
+-----------------+
17
voices
$ man ssh-keygen
[...]
It is possible to specify a passphrase when generating the
key; that passphrase will be used to encrypt the private
part of this file using 128-bit AES.

Ainsi, cette phrase secrète crypte simplement la clé localement. Un attaquant ayant accès à votre système ne pourra pas lire la clé privée, car elle est cryptée. (Ils pourraient installer un enregistreur de frappe, cependant.) Si votre ordinateur portable est volé par exemple, votre clé ssh pourrait toujours être sécurisée si vous avez une phrase de passe forte. Ou même avec une phrase secrète assez faible (tant qu'elle n'est pas anodine), cela vous fera gagner du temps pour révoquer la clé et passer à une nouvelle, avant que les attaquants ne puissent la casser.

Il est facultatif car vous pouvez choisir d'accepter le risque de le voir non chiffré en stockage. Ou peut-être que le cryptage du disque est activé, ce qui atténue certaines des mêmes attaques (mais pas toutes, par exemple: les logiciels malveillants peuvent toujours voler la clé, même avec le cryptage du disque; d'un autre côté, un ordinateur portable volé est toujours sécurisé sauf s'il est volé pendant l'exécution) avec la clé en mémoire).

Le serveur peut nécessiter l'utilisation d'une clé publique et d'un mot de passe pour se connecter. La sécurité de celui-ci est différente de l'utilisation d'une clé publique cryptée par mot de passe. Si vous utilisez une clé cryptée, alors:

  • vous ne pouvez pas changer le mot de passe côté serveur, vous devrez générer une nouvelle clé;
  • quelqu'un peut déchiffrer le mot de passe de la clé sans être détecté, car il peut le faire hors ligne (si le serveur requiert un mot de passe, il doit demander au serveur "est aaaa correct? aaab est-il correct?" etc.);
  • quelqu'un peut casser la clé beaucoup, beaucoup plus rapidement car c'est une attaque hors ligne sans limitations de réseau; et
  • le serveur ne peut pas utiliser quelque chose comme fail2ban pour rejeter trop de tentatives de connexion, car le craquage se produit hors ligne.
15
Luc