web-dev-qa-db-fra.com

Une clé SSH avec une phrase secrète est-elle un 2FA?

C'est une question vraiment théorique, mais si j'utilise une clé SSH avec un mot de passe pour se connecter sur un serveur, cela pourrait-il être considéré comme une authentification à deux facteurs (2FA)?

En effet, j'ai besoin de la clé SSH (privée), qui pourrait être considérée comme le premier facteur, et de la phrase secrète qui pourrait être le deuxième.

Si nous comparons à un seul mot de passe pour la connexion, je vois deux "éléments" avec une clé SSH avec mot de passe.

42
Antonin M.

Un deuxième facteur est défini comme indépendant du premier facteur. Cela signifie que votre système doit rester sécurisé, même si l'un des facteurs est compromis (et que vous êtes conscient du compromis).

Par exemple, un badge de porte et une empreinte digitale sont indépendants l'un de l'autre, et le simple fait d'avoir le badge de porte ou l'empreinte digitale ne suffit pas pour y accéder. Ceci est souvent appelé "authentification multi-étapes" au lieu de "authentification multi-facteurs".


Imaginez maintenant votre scénario: vous avez une clé privée, chiffrée avec une phrase de passe forte. Ces deux facteurs sont-ils? Non, car la clé privée peut également exister sans phrase secrète. Un attaquant qui compromet la clé privée peut ainsi se connecter à votre système, même sans connaître cette phrase secrète. En fait, le serveur ignore complètement si votre clé privée est protégée par une phrase secrète ou non.

Si vous voulez une véritable authentification multifacteur, il existe des modules SSH qui font exactement cela. Cela dit, une clé privée chiffrée avec un mot de passe fort suffit souvent.


Note: La question d'origine parle d'une "clé SSH avec une phrase secrète pour se connecter sur un serveur", que j'ai interprétée comme une clé privée, chiffrée avec une phrase secrète.

60
MechMK1

Non . D'autres réponses sont assez proches, mais manquent un facteur important.

Je ne répéterai pas en détail ce que les autres disent, résumons simplement que pour que la clé SSH + le mot de passe soient multifactoriels dans votre cas, cela devrait être "quelque chose que vous savez" + "quelque chose que vous possédez".

Ce que je dirais, c'est que si vous n'avez besoin que de connaissances pour reproduire efficacement "quelque chose que vous avez" (afin que personne ne puisse dire lequel est original et lequel est copie), alors ce n'est pas "quelque chose que vous avez" mais "quelque chose que vous savez".

Par exemple, si je ne me souviens pas de mon mot de passe et que je l'ai écrit sur un morceau de papier, il ne cesse pas d'être "quelque chose que je sais" et de devenir "quelque chose que j'ai". C'est toujours juste un mot de passe (même si c'est difficile à retenir), et une fois que quelqu'un l'apprend, il peut me personnifier à tout moment sans que je le sache. C'est la même chose avec la clé privée SSH. Ce ne sont que des données, et les données sont par définition "quelque chose que vous (pourriez) savoir (et en faire sans effort une copie exacte et indiscernable)".

La caractéristique principale pour que quelque chose soit "quelque chose que j'ai" est la difficulté de copier par un tiers non autorisé, car la caractéristique principale de efficace "quelque chose J'ai "c'est que la seule façon réaliste dont l'attaquant peut l'avoir est si je ne l'ai plus (comme je dois le remarquer, je le manque).

Bien sûr, il y a beaucoup de nombreuses zones grises , comme mentionné dans certains articles. Les cartes bancaires CHIP seraient "quelque chose que j'ai" aujourd'hui, car il n'est pas possible (sans beaucoup d'efforts, de personnes et d'argent) de faire un duplicata de travail authentique. Cependant, la carte bancaire n'est autorisée que par magstripe , dont tout caissier peut faire une copie avec 25 $ d'équipement et 1 $ de matériel n'est plus efficace "quelque chose que j'ai".

De plus, à mesure que la technologie progresse, les définitions changent. Il était une fois MD4 était cryptohash. De nos jours, ce n'est certainement PAS - c'est juste un hachage, pas mieux pour être un cryptohash que simple Checksum .

Donc, "clé privée SSH + phrase secrète" échoue en fait à être une méthode d'authentification à deux facteurs sur deux fronts:

  1. La clé privée SSH n'est qu'une information et non un objet physique, c'est donc par définition "quelque chose que vous savez" et non "quelque chose que vous avez".
  2. si un facteur d'authentification est totalement inefficace pour rendre plus difficile pour un attaquant de réussir l'authentification, peut-il encore être appelé facteur d'authentification? Si votre serveur applique une longueur de mot de passe maximale d'un caractère et aucune limite sur le nombre d'essais, s'agit-il toujours d'un facteur d'authentification? En théorie stricte, c'est possible, mais en pratique c'est juste théâtre de sécurité .

Notez que cela ne signifie pas que la clé privée ssh + la phrase secrète sont mauvaises: c'est bien mieux qu'un mot de passe simple ou une clé privée non protégée. Mais ce n'est pas à 2 facteurs.

Mais si vous voulez une sécurité supplémentaire fournie par l'authentification à deux facteurs dans ssh , vous pouvez configurer l'authentification à 2 facteurs dans ssh , de préférence en plus d'avoir sa clé privée protégée par une phrase secrète.

10
Matija Nalis

Oui

2FA nécessite deux facteurs ou catégories d'authentification différents. (Ils doivent être de catégories différentes; un mot de passe et un PIN ne serait pas considéré comme 2FA.)

Wikipedia fournit une grande liste de facteurs:

  • Facteurs de connaissance: mot de passe, code PIN, questions secrètes
  • Facteurs de possession:
    • Jetons déconnectés (lisibles par l'homme): Google Authenticator
    • Jetons connectés (lisibles par machine): YubiKey
    • Jetons logiciels: certificat X.509, clé privée SSH
  • Facteurs inhérents:
    • Biométrie: empreinte digitale, voix, iris
    • Comportement: frappes, signature
  • Emplacement: réseaux physiquement sécurisés

Votre mot de passe est un facteur de connaissance; votre clé SSH est un facteur de possession.

Notez que la facilité de duplication ne pas empêche une clé SSH d'être un facteur de possession. Les clés physiques peuvent être copiées avec n appareil photo, une imprimante et une canette de soda ; ils sont toujours un facteur de possession.


Le but de l'authentification multifacteur est de tirer parti des avantages de plusieurs types d'authentification, réduisant ainsi le risque de compromis.

Votre mot de passe est suffisamment court pour qu'il ne soit jamais écrit et donc difficile à obtenir. Votre clé SSH est longue et donc difficile à deviner.

Ensemble, ils rendent une attaque réussie moins probable.


Plusieurs personnes ont estimé que, comme la clé pouvait être utilisée non chiffrée, elle n'est plus 2FA.

C'est tout simplement absurde.

Si vous pouvez créer une clé SSH non chiffrée et ensuite utiliser ces informations pour prétendre que c'est tout ce qui est nécessaire, pourquoi ne pas vous épargner du travail et des copies des fichiers du serveur existeront-elles?

En disant

Tout ce dont vous avez besoin pour accéder aux fichiers du serveur est une clé SSH non chiffrée

n'est pas différent de dire

Tout ce dont vous avez besoin pour accéder aux fichiers du serveur est un Zip des fichiers du serveur.

Bien sûr .... mais comment avez-vous obtenu cela?

Il est vrai que ce n'est pas une utilisation exécutable par le serveur de 2FA. Dans un cadre organisationnel, il est souvent nécessaire que le 2FA soit exécutoire de manière centralisée. Mais

  1. Ce n'est pas la question.

  2. De toute façon, l'application par le serveur n'est jamais le dernier mot d'un système de sécurité.

    1. Si une porte nécessite une clé physique et un code PIN de clavier, cette porte "applique" 2FA autant que n'importe qui peut. Mais lorsque vous imprimez le PIN sur toutes les clés, vous avez un système 1FA.

    2. De même, vous pouvez augmenter les facteurs. Un ordinateur portable protégé par mot de passe derrière une porte avec une clé physique est 2FA, malgré le fait qu'il n'y a pas un seul composant qui applique les deux facteurs. Vous pouvez retirer l'ordinateur portable de la pièce et réduire la sécurité à 1FA, mais jusqu'à ce que vous le fassiez, il existe un système 2FA.

8
Paul Draper

Du point de vue du service: Non, une clé privée SSH protégée par mot de passe n'est pas une authentification multifactorielle.

Le serveur SSH n'a aucun moyen de savoir si la clé privée est cryptée ou non, et n'a aucun moyen de savoir ce que cette phrase secrète actuelle peut être dans tous les cas. Le plus proche que le serveur peut obtenir est, si la paire de clés est générée sur le serveur, il peut capturer la phrase secrète à ce moment. (Ce serait très inhabituel, et je remettrais en question la sécurité de tout système qui fait cela.) Une fois que la clé privée a quitté le serveur, cependant, la seule chose qu'elle peut affirmer est qu'à un moment donné, quelqu'un a utilisé la phrase secrète pour déchiffrez la clé. Le serveur ne sait pas s'il a été déchiffré il y a quelques secondes dans le cadre de l'authentification ou si sa clé privée est actuellement non chiffrée sur le disque de l'ordinateur client.

Ainsi, bien qu'il soit recommandé de chiffrer la clé privée avec une phrase de passe, la négociation d'authentification entre le client et le serveur n'utilise pas cette phrase de passe, donc la phrase de passe ne fait pas partie de l'authentification.

Quant à savoir si la clé privée est quelque chose que vous avez ou quelque chose que vous savez, Je soutiens que c'est quelque chose que vous avez, parce que vous ne transmettez pas la clé privée directement au serveur, vous prouvez que vous avez la clé privée:

La prise de contact d'authentification se déroule comme suit:

  1. Le client sélectionne une clé à utiliser et envoie l'ID de la clé au serveur.
  2. Le serveur obtient la clé publique de ~/.ssh/authorized_keys, génère un nonce et le chiffre avec cette clé publique.
  3. Le client déchiffre le nonce avec sa clé privée, puis MD5 le hache avec la session partagée en tant que sel.
  4. Si le serveur récupère le hachage attendu, l'utilisateur est authentifié.

Il s'agit d'un processus différent de la transmission d'un mot de passe; vous prouvez plus que de simples connaissances, vous prouvez que vous disposez d'un système capable d'effectuer le déchiffrement d'un message chiffré avec une clé publique spécifique.

En sécurité physique, quelque chose que vous connaissez serait implémenté avec une réponse de défi: le gardien appelle un mot et vous répondez. (Cela authentifie également le gardien. Ne donnez pas le mot de passe du jour à quelqu'un simplement parce qu'il porte un uniforme.)

De même en sécurité physique, quelque chose que vous avez est une clé. Oui, la clé contient des informations faciles à copier et pouvant même être mémorisées, mais à moins que ces données ne soient découpées en un objet physique, les données ne servent à rien. Avec une clé, vous prouvez plus que des connaissances, vous prouvez que vous avez un objet capable de soulever les broches du gobelet à la bonne hauteur. Et tout comme la phrase secrète d'une clé privée ne fait pas partie de l'authentification, que l'outil utilisé pour tourner le culbuteur soit la clé voulue, une copie ou un ensemble de crochets ne fait pas non plus partie de l'authentification.

7
Ghedipunk

Eh bien, il y a quelques réponses qui sont correctes mais où les arguments subséquents qui font rage dans les commentaires montrent qu'ils ne sont pas assez clairs, donc je pense qu'il y a encore de la place pour souligner le point clé suivant:

  • L'authentification multifactorielle est une politique d'authentification où le vérificateur exige des facteurs d'authentification multiples (et idéalement indépendants) du demandeur.

Le paramètre ici est une sorte de protocole d'authentification avec deux parties:

  1. A demandeur qui revendique une identité spécifique et doit la prouver;
  2. A vérificateur tente de confirmer l'identité revendiquée et rejette les imitateurs.

Dans SSH, le demandeur est le client et le vérificateur est le serveur. Dans la configuration la plus courante, le serveur n'exige pas que la clé privée du client soit chiffrée avec le mot de passe, ce qui signifie ce n'est pas MFA. C'est juste le choix discrétionnaire du client de crypter sa clé privée.

1
Luis Casillas

Ajout à la réponse de @ MechMK1, le "facteur" dans les mécanismes d'authentification se divisent en 3 catégories -

  1. Quelque chose que vous savez - Mots de passe, PIN
  2. Quelque chose que vous avez - Cartes de crédit, clés USB
  3. Quelque chose à propos de vous - Bio-métriques, reconnaissance faciale

Si vous voulez maintenant 2FA, vous devez en choisir un dans chaque catégorie. Par exemple. Empreinte digitale plus mot de passe, carte de crédit plus PIN etc etc.). Avoir deux facteurs de la même catégorie équivaut à n'en avoir qu'un seul.

Pour en revenir à votre question, la clé SSH et la phrase secrète appartiennent également à "quelque chose que vous savez" et, par conséquent, ne comptent pas comme 2FA.

0
Ayush Ambastha