Avec le port knocking, vous devez "frapper" sur des ports spécifiques dans l'ordre défini pour exposer un port sur lequel le service est en cours d'exécution.
Que diriez-vous de frapper le mot de passe ? Par exemple, vous avez trois mots de passe: A
, B
et C
. Aucun d'eux n'est correct en soi, mais saisis un par un dans cet ordre, ils vous accorderont l'accès.
Quelques scénarios pour rendre cette idée plus claire:
Scénario 1.
A
. B
. C
. Scénario 2.
A
. C
. B
. Scénario 3.
A
. B
. B
. C
. Scénario 4.
A
. A
. B
. C
. Je ne peux penser à aucun inconvénient de cette méthode par rapport à la connexion régulière par mot de passe unique. De plus, cela rend les attaques de dictionnaire exponentiellement plus difficiles avec chaque mot de passe ajouté.
Je me rends compte que c'est la sécurité par l'obscurité et n'abolit pas le besoin de mots de passe forts. La séquence de mots de passe elle-même est aussi forte qu'une concaténation de mots de passe utilisés. La sécurité supplémentaire de cette méthode provient d'une procédure d'une complexité inattendue.
Est-ce que c'est une bonne idée? Est-ce une meilleure idée qu'un mot de passe classique?
Le système décrit dans la question est en fait plus faible que d'exiger simplement un mot de passe unique de longueur A + B + C, car il permet une classe d'attaques qui peut ne pas être utilisé contre des mots de passe uniques:
Supposons que votre combinaison de trois mots de passe soit E F G
. Un attaquant peut envoyer les mots de passe A B C D E F G
, effectuant cinq attaques (A B C
, B C D
, C D E
, D E F
, et E F G
) pour le prix de deux. Le terme général pour cela est un séquence de Bruijn , et il vous permet d'attaquer n'importe quel système basé sur un état (tel qu'un verrou numérique) en utilisant beaucoup moins d'essais qu'il n'y a de combinaisons possibles.
Du point de vue de la sécurité brute, votre mot de passe est simplement "A B C" et la force relative du mot de passe est calculée en conséquence.
Du point de vue de l'utilisateur, cela est sans doute trop difficile à utiliser. Le serveur ne donne aucune indication sur l'état actuel (recherche-t-il encore le deuxième mot de passe?) Et par conséquent, l'utilisateur ne peut pas dire quel mot de passe fournir.
Du point de vue de la défense, il y a une petite valeur ici. Les attaques par mot de passe deviennent un peu plus compliquées à réaliser et les outils d'attaque existants devront être réécrits pour s'adapter à ce schéma étrange. Cela peut suffire à convaincre un attaquant de passer à autre chose, mais si vous êtes une cible importante, cela n'aidera pas du tout.
Je vais aborder quelques points ici.
Tout d'abord, en supposant que l'attaquant ne sait pas que le schéma de mot de passe est une hypothèse mauvaise, et vous avez raison de dire que c'est la sécurité par l'obscurité. Si chaque utilisateur peut apprendre ce schéma de connexion, l'attaquant le peut aussi. Pour cette raison, le coup n'est pas meilleur que s'il n'y avait qu'un seul mot de passe ABC .
Vous pourriez penser: "Le fait d'avoir plus de mots de passe n'augmente-t-il pas le nombre de suppositions de force brute de manière exponentielle?" La réponse est non. Considérons un alphabet de longueur z, et trois mots de passe de longueur a, b et c. Le nombre de mots de passe possibles pour chacun est, respectivement, zune, zb et zc. Si vous voulez essayer toutes les valeurs possibles pour chaque mot de passe dans chaque ordre possible, vous aurez besoin de zune * zb * zc devine, ce qui est égal à z(a + b + c). Il se trouve que la longueur du mot de passe unique ABC est a + b + - c, donc le nombre de suppositions nécessaires est également z(a + b + c).
Il y a aussi la préoccupation de conception que les utilisateurs seront confus et/ou frustrés par ce système, surtout s'ils ont du mal à se souvenir de leurs mots de passe. Les gens ont assez de mal à se rappeler n mot de passe pour chaque site qu'ils visitent (et c'est pourquoi beaucoup de gens réutilisent les mots de passe). Trois mots de passe seraient encore plus difficiles à retenir, et je ne serais pas surpris si certains de vos utilisateurs utilisaient la même chaîne pour les trois.
Exiger trois soumissions de formulaire pour se connecter ralentira certainement une attaque par force brute, mais vous pourriez tout aussi facilement y parvenir en ajoutant un retard dans la vérification du mot de passe côté serveur.
C'est la sécurité par l'obscurité - si elle est largement adoptée, les attaquants essaieront seulement trois fois. À ce stade, vous pouvez tout aussi bien avoir un seul mot de passe, mais définir une longueur de mot de passe minimale plus longue pour vous assurer qu'il s'agit de trois mots de passe distincts concaténés.
Cela ne se distingue pas de votre mot de passe étant simplement A || B || C
.
L'authentification à deux facteurs est plus encore plus conviviale plus sécurisé.
Sans, un mot de passe est encore à peine moins sûr que le mot de passe.
Un attaquant qui peut trouver votre mot de passe est également susceptible de découvrir votre système de frappe.
Choisir de frapper, c'est comme choisir un algorithme. Considérez-le public .
Bien que les mots de passe soient sécurisés par l'obscurité, ils peuvent être remplacés très facilement par des codes complètement différents .
Cela dit, il existe sont schémas qui sont quelque peu similaires à votre "frappe" mais un peu plus utiles:
Temporisation d'entrée , c'est-à-dire analyse des temps entre et pour tous les caractères du mot de passe pendant que l'utilisateur tape.
Ceci est plus difficile à découvrir et à simuler que frapper et a fait l'objet de plusieurs recherches auprès de l'IIRC. Désavantages:
La sécurité par obscurité est bonne lorsque vous pouvez modifier rapidement votre schéma d'obscurité , c'est-à-dire "changer le labyrinthe" avec peu d'effort , plutôt que le béton dont ses murs sont faits (assurez-vous que le labyrinthe ne peut pas être contourné ).
Le concept de détournement de port ne s'applique pas vraiment directement à la connexion à des sites Web. Du moins pas dans le sens que vous avez suggéré. Avec le port knocking, vous vous connectez à différents ports dans un certain ordre pour ouvrir le port souhaité. Dans votre exemple, vous placez tous les mots de passe sur un seul site. Comme d'autres l'ont souligné, ce n'est pas vraiment différent de rassembler tous les mots de passe. À moins que tous les mots de passe que vous utilisez soient très longs, vous pouvez tout aussi bien les concaténer et utiliser un seul mot de passe. L'obscurité de cette méthode n'est pas non plus très utile, car quelqu'un devra la construire et quelqu'un devra savoir comment l'utiliser, ce qui suffit à un attaquant pour savoir comment cela fonctionne. De plus, vous venez de l'expliquer au monde.
Au lieu de cela, vous pouvez peut-être utiliser différents sites Web pour représenter différents ports. Supposons que vous essayez de vous connecter au site Web D.Lorsque vous vous connectez au site Web D, il n'affichera même pas une page à moins qu'il ne puisse voir que vous vous êtes connecté aux sites Web A, B et C, correctement et dans cet ordre. De cette façon, l'attaquant devrait non seulement déchiffrer les différents mots de passe, mais ils devraient être effectués sur 3 sites différents et utilisés dans le bon ordre pour même accéder au site D, où un autre mot de passe serait requis.
Cela repose toujours sur une certaine obscurité, mais cela se distingue davantage de simplement diviser un mot de passe sur un site.
Positif
négatif
Total
Comme le détournement de port, il n'ajoute qu'un petit avantage contre les attaques simples. Le principal avantage serait un mot de passe plus long et qui pourrait être appliqué plus facilement par des règles de mot de passe.
De toute façon, si cela ne vous dérange pas vos utilisateurs, c'est quelque chose que vous pouvez faire. Au final, chaque élément de sécurité compte. Mais je ne conseillerais pas de le faire.
PROS : Ce système partage certains avantages avec l'authentification à deux facteurs.
1) La plupart des navigateurs et des systèmes de sauvegarde de mot de passe ne le prennent pas en charge. Donc, au moins, il ne sera pas stocké en texte clair quelque part.
2) Les personnes qui utilisent le même mot de passe partout devront utiliser au moins deux mots de passe qui ne sont pas partagés avec d'autres sites.
CONTRE : Cependant, le système est globalement défectueux, et je dirais que c'est pire que l'authentification par mot de passe unique.
1) Parce que leur système de stockage de mots de passe protégé par mot de passe préféré qu'ils utilisent pour les mots de passe les plus importants ne peut pas être utilisé, il y a de fortes chances qu'ils utilisent quelque chose de moins bon pour ce mot de passe. Post-it, fichier texte, peu importe.
2) D'autres ont affirmé que c'est aussi fort que le mot de passe "ABC". Ce n'est pas. Je dirais que dans le pire des cas, il n'est aussi fort que le mot de passe "A".
C'est parce que moi (et l'utilisateur typique) utiliserais les mots de passe "mot de passe1", "mot de passe2", "mot de passe3" Ce système de génération de mot de passe me donne l'avantage que je peux ctrl-c, ctrl-v le mot de passe et ensuite juste taper le nombre.
Si je ne peux pas utiliser des mots de passe similaires, alors vous avez réduit la portée des mots de passe possibles que je peux avoir: plutôt que d'être aussi sûr qu'ABC, vous n'avez maintenant que la même sécurité qu'ABD où A! = B! = C: vous avez fait le travail du pirate plus facile en réduisant son domaine de recherche.
Et je choisirais toujours la séquence prévisible permise par le script d'entrée de mot de passe: "Jan", "Feb", "Mar" peut-être.
Et puisque j'utiliserais une séquence naturelle, c'est probablement l'ordre qu'un pirate de mot de passe aurait dans le dictionnaire, donc une machine de piratage de mot de passe essaiera naturellement ces mots de passe dans le bon ordre et entrera directement. connaître votre système ordonnerait absolument leur dictionnaire de cette manière.
3) L'autre facteur qui réduit la sécurité est que pour changer le mot de passe, vous devez maintenant changer trois champs différents. Cela découragerait beaucoup de changer leurs mots de passe.
4) C'est terrible, terrible expérience utilisateur, comme d'autres l'ont remarqué. À moins d'avoir un public captif (employés, étudiants, etc.), vous perdrez la coutume grâce à cette approche hostile aux utilisateurs.
Juste une note: cette méthodologie est déjà utilisée dans les systèmes récupération de mot de passe dans certaines parties de l'industrie. Si vous oubliez votre mot de passe, vous pouvez utiliser votre adresse e-mail pour lancer une séquence de questions personnelles afin de récupérer votre mot de passe (bien qu'il s'agisse souvent d'une seule question). Il est rendu plus agréable au goût de l'utilisateur, en limitant généralement le contexte à une séquence de questions bien choisies qui donnent à l'utilisateur la possibilité d'utiliser (espérons-le) des réponses secrètes mais bien connues.
En outre, certaines des meilleures banques fournissent un ensemble supplémentaire de questions de sécurité si elles ne reconnaissent pas l'ordinateur à partir duquel vous vous connectez (dans la même veine que le schéma de récupération de mot de passe susmentionné).
Par exemple:
Enter your password: *****
Your computer is not recognized, please answer the following additional questions:
What city did your mother grow up in? *********
What is your favorite movie? *************
Cela peut permettre aux utilisateurs avertis de fournir des réponses assez obscures à une série de questions qu'ils choisissent, tout en permettant une séquence de "mots de passe" facile à retenir. Bien sûr, les utilisateurs typiques peuvent toujours utiliser des réponses faciles à deviner pour les questions "ordinateur non reconnu", mais il incombe toujours à l'utilisateur de fournir de bons mots de passe, de toute façon.
Comme d'autres l'ont dit, cela équivaut à simplement avoir un mot de passe équivalent à A\nB\nC
ou semblable. Cependant, je peux penser à un avantage de ce schéma: il aide à réduire les choses de type phishing; si un système accepte le premier mot de passe au lieu d'accepter les autres, alors vous savez que le système est compromis et enregistrez simplement votre nom d'utilisateur et votre mot de passe.
Cependant, dans ce cas, il est préférable de simplement tenter de vous connecter avec un mot de passe aléatoire avant de tenter de vous connecter avec votre mot de passe réel; sinon vous venez de compromettre une bonne partie de votre mot de passe puisque maintenant le premier tiers (à peu près) a été enregistré par le système compromis.
Je ne pense pas que ce soit même la sécurité par l'obscurité comme certains l'ont dit - la connexion à trois mots de passe est présentée publiquement, non? Bien sûr, il faudra un peu de travail pour peaufiner quelques outils, mais rien de trop difficile.
Quant à la complexité de la force brute. Le nombre de possibilités est le même que d'avoir un seul mot de passe de longueur A + B + C
. Donc, pour cette raison, la seule défensive que vous obtenez avec ce système est un peu frustrante au début. De plus, si le schéma devenait courant, les outils standard s’adapteraient rapidement.
Comme beaucoup l'ont mentionné, à des fins d'attaque dédiée, il n'est ni plus fort ni plus facile/plus difficile à retenir qu'une concaténation de mots de passe. Cependant, il existe une valeur sécurité des opérations (OPSEC) indépendante de la force du mot de passe. Pas beaucoup de valeur, remarquez-vous, mais en tant que personne qui passe beaucoup de temps sur le site Worldbuilding Stack Exchange , mon imagination s'est déchaînée.
Considérez si vous voulez qu'un service soit non seulement limité aux utilisateurs autorisés, mais que vous voulez empêcher quelqu'un de trébucher accidentellement sur son existence. Ce n'est plus un simple problème d'entropie, mais plutôt un problème de théorie de l'information espion contre espion. Votre travail consiste maintenant à minimiser le rapport signal/bruit (SNR) de quiconque regarde votre entrée de mot de passe. Cela n'est plus lié à la force du mot de passe.
Une approche consisterait à mettre en place un comportement fictif. Faites en sorte qu'il s'agisse d'une connexion à un autre système. Seuls les comptes disposant des privilèges appropriés sont redirigés vers le contenu significatif. Vous pouvez même laisser les autres s'inscrire à votre projet factice pour laisser les gens fouiner et satisfaire leur curiosité.
Cependant, nous parlons d'espion contre espion maintenant. Quelqu'un va se rendre compte que James Bond n'est vraiment pas du tout intéressé par un forum discutant des dernières tendances en matière de canards en caoutchouc, et commencer à faire des indiscrets. James Bond est bon pour ne pas révéler d'informations, mais à un moment donné, avec un pistolet sur la tête de sa [dernière] petite amie, cela va être suspect s'il ne révèle pas son mot de passe de forum de caoutchouc au Dr NoGood. Le Dr NoGood n'est pas idiot; il va le comprendre.
Nous avons donc configuré James avec deux mots de passe. L'un le laisse entrer dans son forum normal de canards en caoutchouc, l'autre dans le simulateur de missile nucléaire top secret. Nous ne pouvons pas ignorer la sécurité réelle des mots de passe ici. Son mot de passe de simulateur de missile nucléaire va devoir être long: aussi longtemps que la concaténation de vos trois mots de passe. Son mot de passe canard est probablement plus court. C'est une bonne chose aussi, car quelqu'un l'a déjà vu se connecter à son compte canard auparavant. Ils savent combien de caractères commencer le forçage brutal. Nous ne voulons pas qu'ils trouvent accidentellement le mot de passe sécurisé avant de trouver le mot de passe.
Donc, étant donné qu'il est toujours secret que le simulateur de missile existe, le retour d'un "mot de passe invalide" en cours de route dissuadera, espérons-le, les briseurs de force de continuer. De plus, vous pouvez faire une énorme révélation culminante lorsque James "tape mal son mot de passe", avant que le mur à côté de lui ne s'ouvre soudainement pour révéler la voûte au-delà.
"Moins il y a de pièces mobiles, moins il y a de problème."
En plus de ne fournir aucun avantage notable, cette idée est plus complexe à mettre en œuvre qu'un seul mot de passe. En tant que tel, il y a plus de points de défaillance potentiels. Par exemple...
Selon la façon dont il a été implémenté, il pourrait permettre une attaque par déni dans laquelle Malcolm envoie le mot de passe X à intervalles réguliers. S'il chronomètre correctement pour interrompre une tentative légitime, le système reçoit A X B C et vous refuse l'entrée. De même, s'il envoie plusieurs fois le mot de passe C juste après avoir envoyé A B, le système le laisse entrer et pas vous.
Une attaque de synchronisation de réponse pourrait être en mesure de comprendre que A était le premier mot de passe correct dans A B C où il ne remarquerait pas que D était le préfixe de DEF à mot de passe unique.
Selon une réponse précédemment correcte,
A\nB\nC
est approximativement le même que
A B C
(ou peut-être plus léger, concernant @ Réponse de Mark, à propos de Séquence de Bruijn ).
De là, si vous avez vraiment besoin de garder votre secret:
Utilisez des outils standard fortement testés pendant un certain temps. (Si vous n'êtes pas sûr, préférez partager et demander autour, au lieu d'utiliser toute sorte d'obscurité.)
Tenez-les à jour.
Enseignez à vos utilisateurs les mots de passe (voir xkcd: Password Strength et discuter sur IS )
Gardez à l'esprit que ingénierie sociale (sur Wikipedia) est le premier moyen de failles de sécurité. (Un autre célèbre xkcd: Security ).
Surveillez votre système et consultez vos journaux.
Pour ajouter à toutes les autres bonnes réponses, ce type de système de protection par mot de passe ne fournirait aucune protection contre les enregistreurs de frappe ou les attaques d'homme au milieu. Étant donné que vous mettriez toujours votre mot de passe dans une séquence, le keylogger peut rejouer vos actions et toujours obtenir l'autorisation. L'authentification à 2 facteurs, comme suggéré par @Archimedix, serait le moyen le plus efficace d'atténuer ce problème.
Comme d'autres l'ont mentionné, fonctionnellement, c'est la même chose qu'un mot de passe long. Pour rendre l'implémentation moins confuse, elle pourrait être implémentée en demandant les trois mots de passe dans le même écran.
Quelque chose dans ce sens est fait par mon courtier en ligne où il demande le mot de passe du membre et le mot de passe commercial lors de la connexion. Nous devons obtenir les deux mots de passe pour pouvoir vous connecter. De plus, je dois changer mon mot de passe de membre tous les 10 jours environ et il y a des règles pour ne pas répéter les trois mots de passe précédents, etc.
Ma banque ( ICICI Bank ) a précédemment implémenté deux mots de passe, l'un pour la visualisation à saisir pour se connecter et accéder aux informations, et l'autre pour la transaction à saisir à tout moment, une action qui entraînerait une transaction financière a été effectué. Ma carte de débit Visa est également sécurisée par un système qu'ils appellent -D Secure où, quelle que soit la passerelle de paiement, ils m'emmènent sur leur propre site pour saisir un mot de passe pour terminer la transaction. Je sais qu'il s'agit du véritable site Visa, car ils me permettent de personnaliser le message à afficher.
L'idée n'est donc pas sans précédent, bien qu'elle ne soit pas mise en œuvre exactement de la même manière que vous le dites. L'ajout de plusieurs mots de passe est quelque chose dont au moins les banquiers et les courtiers en valeurs semblent convaincus.