web-dev-qa-db-fra.com

Puis-je ajouter un mot de passe à une clé privée existante?

Supposons que j'ai déjà créé une combinaison de clé privée/publique et décidé à l'époque de ne pas protéger la clé privée avec un mot de passe. Si je décide plus tard de renforcer la sécurité et d'utiliser une clé privée protégée par mot de passe à la place, aurais-je besoin de générer une nouvelle paire de clés privée/publique, ou puis-je simplement ajouter un mot de passe à ma clé privée existante?

L'opposé est-il également possible, puis-je "supprimer" un mot de passe d'une clé privée existante?

66
IQAndreas

Un mot de prudence: comme indiqué dans réponse de laverya openssl crypte la clé d'une manière qui (selon votre modèle de menace) n'est probablement plus assez bonne.


Bien sûr, vous pouvez ajouter/supprimer une phrase secrète ultérieurement.

  • ajoutez-en un (en supposant qu'il s'agissait d'une clé rsa, sinon utilisez dsa)

    openssl rsa -aes256 -in your.key -out your.encrypted.key
    mv your.encrypted.key your.key
    chmod 600 your.key
    

    le -aes256 indique à openssl de crypter la clé avec AES256.

    Comme ArianFaurtosh l'a correctement souligné: pour l'algorithme de chiffrement, vous pouvez utiliser aes128, aes192, aes256, camellia128, camellia192, camellia256, des (que vous devez absolument éviter), des3 ou idea

  • le retirer

    openssl rsa -in your.key -out your.open.key
    

    on vous demandera votre mot de passe une dernière fois
    en omettant le -aes256 vous dites à openssl de ne pas crypter la sortie.

    mv your.open.key your.key
    chmod 600 your.key
    
88
guntbert

Alors que la réponse de Guntbert était bonne à l'époque, ça devient un peu dépassé. openssl rsa -aes256 crée un fichier crypté en utilisant le hachage md5 de votre mot de passe comme clé de cryptage, qui est plus faible que vous ne le pensez - et selon votre point de vue, cela peut en fait être pire que le texte en clair. (Si vous utilisez le même mot de passe pour votre clé ssh et votre connexion, casser le hachage md5 sera beaucoup plus rapide que d'attaquer, cependant votre système stocke le mot de passe - sauf des choses comme Windows XP)

Une solution moderne consisterait à utiliser ssh-keygen -p -o -f PRIVATEKEY, qui vous permettra de saisir une phrase secrète, puis d'écraser la clé privée existante avec la version chiffrée. Ceci tilise le bcrypt pbkdf , qui est FAR plus lent que md5 même lors de l'exécution aux 16 tours par défaut. Dans ce cas, `` beaucoup plus lentement '' signifie entre un dixième et une demi-seconde, au lieu d'un millionième de seconde - pas quelque chose que vous remarquerez lors de la connexion, mais une énorme différence lors du craquage des mots de passe.

12
laverya

Lorsqu'un privé est "protégé par un mot de passe", cela signifie simplement que les octets de clé, tels qu'ils sont stockés quelque part, sont chiffrés avec une clé symétrique dérivée d'un mot de passe. Une clé privée est facilement encodable sous la forme d'une séquence d'octets et peut être copiée, chiffrée et déchiffrée comme n'importe quel fichier. Le point important ici est que le mot de passe concerne le stockage : lorsque la clé privée doit être utilisée (par exemple pour signer quelque chose), alors c'est d'abord déchiffré dans le RAM de certains ordinateurs, qui procède ensuite à l'utilisation de la clé privée non chiffrée. En conséquence, il n'y a rien de spécial dans une paire de clés RSA qui la rendrait appropriée ou inappropriée pour la protection par mot de passe La protection par mot de passe est vraiment un problème orthogonal.

Bien sûr, si une clé privée a déjà été stockée sur un support physique (disons un disque dur) sans aucune protection supplémentaire, elle peut avoir laissé des traces exploitables. Les détails dépendent beaucoup du système réellement utilisé pour le stockage des clés privées. Par exemple, les systèmes Windows utilisent DPAPI pour stocker les clés privées de l'utilisateur, et DPAPI fait des efforts supplémentaires pour ne pas laisser fuir les clés stockées (si ces efforts sont couronnés de succès, il reste à être prouvé).

9
Thomas Pornin