Question:
OAuth, OpenID, Facebook Connect et autres ne sont-ils pas fous du point de vue de la sécurité?
Oscar Godson
2011-05-22 11:18:41 UTC
view on stackexchange narkive permalink

Je travaille avec des API tout le temps et je travaille avec des développeurs Web qui insistent sur le fait que OAuth, OpenID, etc. sont bien supérieurs à une méthode de brassage maison. Chaque site semble également les utiliser maintenant pour la facilité d'utilisation pour l'utilisateur, mais aussi pour la sécurité. J'entends presque tous les jours que c'est plus sûr, mais je trouve cela extrêmement difficile à croire pour plusieurs raisons:

  1. Si un pirate informatique obtient votre mot de passe sur un site, il le sait a accès à la majorité des sites que vous visitez actuellement.

  2. Cela facilite le phishing 10x. Avec autant de personnes utilisant les mêmes identifiants et recommençant, et encore une fois, les gens sont moins susceptibles de tout lire et de vérifier l'URL en haut.

Pouvez-vous énumérer plus de raisons pour lesquelles il est dangereux ou pourriez-vous m'expliquer pourquoi il est plus sûr? Je ne vois pas pourquoi vous accepteriez les tracas de l'intégration de l'un d'entre eux alors qu'il semble qu'un utilisateur ferait bien de saisir 3 champs (nom d'utilisateur, mot de passe, e-mail) au lieu de cliquer sur le logo du service pour se connecter (Twitter, Google, FB etc), en entrant leur nom d'utilisateur / mot de passe, en cliquant sur Soumettre, en cliquant sur approuver.

== Update ==

Pour développer ma question selon la demande.

Pour mes deux points ci-dessus, # 1 , peu importe comment le pirate informatique l'obtient. Je ne sais pas comment développer exactement. Vous pouvez le forcer brutalement, le deviner, utiliser le mot de passe oublié et faire une attaque par dictionnaire sur des questions courantes, etc. accéder à 1000 sites différents. Je peux personnellement deviner quelques mots de passe de mes amis et de ma famille et j'ai accès à toutes sortes de comptes. Je n'aurais même pas besoin de les chercher. Lorsque je navigue sur le Web, je suis simplement connecté ... Si j'étais un hacker, beaucoup de ces mots de passe sont très faciles à déchiffrer. Certains des mots de passe de mon ami sont, pepsi , tina (puis année de naissance), 123456 , et d'autres stupides. Mon préféré est cependant tomcruisesucks LOL.

Pour le point # 2 , pour développer davantage, je pourrais aller sur http: // câblé. fr, http://klout.com, http://twitter.com, http://thenextweb.com et ils ont tous une connexion Twitter. Je fais confiance aux sites (pour la plupart) donc, honnêtement, je ne vérifie plus l'URL de la fenêtre contextuelle qui apparaît pour se connecter et je suppose que la plupart ne le font pas. Cette fenêtre contextuelle aurait pu être facilement piratée par un pirate informatique accédant à l'un de leurs serveurs, ou par un employé maléfique, ou simplement par un faux site d'application qu'un bot envoie à des personnes via Twitter que plusieurs personnes se connectent ensuite à cette fausse application, mais en utilisant la connexion Twitter.

Les gens sont tellement habitués à voir les mêmes pages de connexion qu'ils ne les regardent plus . Si ce fil devient assez populaire, je peux facilement faire un test très simple sur Twitter ou FB en envoyant à tout le monde un lien vers une fausse application, une fenêtre contextuelle qui ressemble à Twitter ou FB et ils se connecteront. Je le garantis. Si je fais en sorte que l'écran de connexion accède à, disons, http://bankofamerica.com ou http://paypal.com, ils se demanderont pourquoi je suis ici , pourquoi ont-ils besoin de cette information, etc. Les mêmes sites utilisés pour se connecter encore et encore sont extrêmement mauvais en pratique.

C'est mon point de discussion élargi;)

Avez-vous reniflé les différents schémas d'authentification? À quoi cela ressemble-t-il sur le fil? Connaissons-nous le protocole? Ce qui passe depuis et vers le serveur, une sorte de chose.
@marcin - openid et oauth sont des normes très ouvertes et relativement bien contrôlées, avec des spécifications, des pages wikipedia, etc. YMMV avec Facebook Connect ....
Il est difficile de répondre à cette question car il y a beaucoup d'aspects différents. Premièrement, vous ne clarifiez pas exactement quelle alternative vous avez en tête pour oauth. Quelle est notre application? Deuxièmement, facebook connect est vraisemblablement propriétaire, et donc dans une ligue très différente de oauth et openid. Et troisièmement, votre commentaire sur les problèmes de phishing liés à l'utilisation de liens sur les murs Facebook des utilisateurs est un sujet complètement différent. Je suggère de modifier les parties de lien facebook et facebook ici et de poser des questions séparées à ce sujet si vous le souhaitez.
@nealmcb Pourquoi n'utiliseriez-vous pas une méthode homebrew, ou ne vérifieriez-vous simplement pas les cookies. C'EST À DIRE. l'utilisateur se connecte au service, puis il a accès à l'API. cela pourrait facilement être fait avec un iframe ou un formulaire POST. Tous les services, qu'ils soient open source ou non, ont les mêmes défauts et c'est ce que je dis. ils connectent tous tous vos comptes sous un seul mot de passe. Encore une fois, pour votre troisième point, c'est _exactement_ la même chose pour Ouath, ou vraiment, pour TOUT site, mais c'est pire quand les grands sites détiennent votre mot de passe parce que les gens ne vérifient pas l'URL. Je pense que vous manquez mes 2 points numérotés ...
La plupart des gens ne lisent pas les commentaires, il serait donc utile que vous puissiez modifier un scénario d'attaque spécifique dans la question. Quel actif protégez-vous, de quelles menaces, etc. Consultez la FAQ. Ensuite, nous pouvons en discuter dans les réponses.
Terminé! J'ai développé les deux points
Merci. Je dois dire que vous ne savez toujours pas quelle est votre question - quel problème vous essayez de résoudre, dans quelle perspective. Décidez-vous d'utiliser ces technologies dans votre propre application? Que ce soit pour utiliser un openid ou un login personnalisé pour un site particulier? Pouvons-nous nous attendre à être d'accord sur la bonne réponse? Nous devrions pouvoir - voir la FAQ et noter que ce site n'est pas pour les "discussions".
Im un utilisateur de longue date (presque 2 ans) de StackOverflow, je connais les règles :) et oui, il y aura une bonne réponse. En une courte question en une phrase, ces méthodes d'authentification sont-elles réellement plus sûres que d'avoir votre propre système de connexion? D'autres personnes ci-dessous semblent comprendre donc je ne sais pas comment développer: \ La «bonne» réponse est une explication de oui, c'est plus sûr et pourquoi ou non, et pourquoi j'aime / comprends / la réponse la plus verbeuse.
Google prend en charge u2f, ce qui rend le phishing 1000 fois plus difficile.
Dix réponses:
Hendrik Brummermann
2011-05-22 13:59:10 UTC
view on stackexchange narkive permalink

Je suppose qu'il n'y a pas vraiment de bonne solution pour les sites Web de tous les jours (par exemple, les sites peu connus tels que les banques pour lesquels les utilisateurs acceptent et économiques permettent une authentification à deux facteurs). On ne peut choisir qu'une solution qui a le moins d'impact négatif possible.

Malheureusement, les gens ne sont pas doués pour se souvenir d'un grand nombre de mots de passe. Il en résulte soit qu'ils réutilisent le même mot de passe sur différents services, soit qu'ils les écrivent (sur papier ou dans un gestionnaire de mots de passe). Oui, il est conseillé de créer un système de mot de passe incluant le nom du site.

Mais les gens sont paresseux. La réutilisation du mot de passe est pire qu'un compte central car cela signifie qu'une vulnérabilité dans n'importe quelle application révèle le mot de passe.

Dans le jeu Stendhal, la plupart des piratages de compte sont effectués par des membres de la famille. Je suppose que c'est spécial pour les jeux. Le groupe suivant consiste à deviner au hasard les noms d'utilisateur / mots de passe. Mais il existe un petit nombre de tentatives de piratage basées sur l'accès au compte de messagerie . Bien que nous n'autorisions pas la réinitialisation automatique du mot de passe par courrier électronique, de nombreux sites Web le font. La haute direction de Twitter a été piratée en exploitant un compte de messagerie Hotmail expiré et des mots de passe réutilisés.

Donc, si vous envisagez d'autoriser la réinitialisation du mot de passe par e-mail, il y a peu de risque supplémentaire à déléguer le processus d'authentification aux grandes entreprises. Tous ont mis en place des mesures pour rendre la tâche plus difficile pour les attaquants (récupération via les messages du téléphone mobile en cas d'activité suspecte, historique de connexion, avertissements sur les tentatives de connexion d'autres pays, etc.). Les implémenter dans votre propre site demande beaucoup de travail.

Sur une note personnelle, j'aurais préféré l'approche Account Manager ( spécification ) plutôt que de faire confiance à l'une de ces entreprises. De plus, il n'a pas le problème du phishing. Malheureusement, le projet ne semble pas progresser.

En fin de compte, nous avons décidé pour Stendhal de prendre en charge à la fois OpenID et les comptes locaux et de laisser les utilisateurs décider.

Google a une authentification à deux facteurs.
Rory Alsop
2011-05-22 13:46:39 UTC
view on stackexchange narkive permalink

Du point de vue de la sécurité, il est presque toujours préférable d'avoir un mécanisme qui a fait ses preuves que de rouler le vôtre. Les erreurs d'implémentation sont l'un des moyens les plus courants de briser un bon concept de sécurité.

Du point de vue de la convivialité, je préfère légèrement oauth, c'est simplement facile à utiliser, donc pour vos utilisateurs finaux, c'est un énorme avantage. Un utilisateur non technique moyen est découragé par la sécurité manifeste, donc minimiser l'intrusion des fonctionnalités de sécurité est une victoire pour les sites avec un grand nombre d'utilisateurs.

Le risque de phishing n'est pas vraiment plus grand - les gens ne le font pas. Ne faites pas attention à la source des e-mails de toute façon :-)

C'est vrai pour le phishing par e-mail, sauf que la plupart des fournisseurs de messagerie (Yahoo, Live, Gmail, etc.) ne laissent pas passer les sites de phishing. Ma préoccupation ressemble plus à ces liens sur FB ou Twitter de vos amis qui disent "Découvrez ce lien"
user185
2011-05-22 13:58:12 UTC
view on stackexchange narkive permalink

Les avantages de systèmes comme OAuth sont les suivants:

  • il y a moins de bases de données dans le monde stockant les informations de connexion d'un utilisateur. Si l'on considère un service comme Twitter, cela signifie que votre nom d'utilisateur et votre mot de passe ne sont connus que de Twitter et non de Favstar, Amazon, LinkedIn, New York Times et toutes les autres applications qui s'ajoutent au service.
  • comme le dit @Rory, le système est largement utilisé et a été testé et (espérons-le) sécurisé dans une mesure appropriée.

Ces deux avantages répondent à votre point 1: OK donc tous ces services utilisent le même mot de passe, mais ils le doivent quand même car ils doivent tous utiliser votre compte Twitter, il est donc préférable de s'assurer que ces informations d'identification "universelles" ne sont pas stockées dans divers endroits avec diverses mesures de protection.

L'inconvénient principal n'est pas différent de l'inconvénient affectant toutes les interfaces utilisateur de connexion: n'importe qui peut créer une interface utilisateur qui ressemble à cela et l'utiliser pour obtenir vos informations d'identification.

** 1er ** point est vrai si vous utilisez exactement le même mot de passe et le même nom d'utilisateur, mais avoir des mots de passe différents sur 1000 serveurs différents est plus sûr qu'un mot de passe sur 1000 serveurs, non? ** 2ème ** Oui, tout le monde peut se connecter, mais il y a une énorme différence entre voir une page / bouton de connexion FB une demi-douzaine de fois par jour et une connexion unique pour un site aléatoire. Si j'étais sur site1.com et qu'il y avait une page de connexion pour site2.com, ça serait étrange. Si site1.com avait une page de connexion à Facebook, la plupart des utilisateurs n'y penseraient même pas. C'est ce que je veux dire.
@Oscar: dans les situations où OAuth est utile, vous ne pouvez pas avoir 1000 mots de passe différents. "donc tous ces services utilisent le même mot de passe, mais ils le doivent quand même car ils doivent tous utiliser votre compte Twitter"
@Oscar, malheureusement, la plupart des gens ont exactement le même mot de passe / nom d'utilisateur pour les sites mutipul, car leur paresseux et / ou s'en moquent et / ou la douleur causée par le retard dans la réflexion de nouveaux mots de passe / se souvenir de celui qui va avec quel site / oublier et avoir à faire réinitialiser votre mot de passe est plus grand que la douleur perçue d'avoir un accès Mallory à son compte.
nealmcb
2011-05-25 02:54:44 UTC
view on stackexchange narkive permalink

Sans un scénario et un modèle de menace spécifiques à l'esprit, il est difficile de répondre à votre question.

Mais une victoire claire est le cas d'utilisation OAuth classique. Il s'avère que les utilisateurs sont incroyablement disposés à donner à un site Web leur mot de passe pour un autre site Web, par exemple. leur mot de passe Google vers un site de réseautage social comme Shelfari. Et comme Kalsey le note, ils étaient parfois horriblement surpris de ce que Shelfari faisait avec ce mot de passe, et comme Shelfari pouvait totalement se faire passer pour eux, Google ne pouvait pas facilement arrêter les abus.

Maintenant, avec OAuth, une application comme Shelfari n'obtiendrait qu'un accès partiel via une API à la base de données de contacts de l'utilisateur, et Shelfari utiliserait une clé API que Google pourrait facilement révoquer.

Dans le monde réel, les utilisateurs sont très susceptibles de réutiliser les mots de passe sur plusieurs sites , donc votre attaque en # 1 a une chance de fonctionner à de nombreux endroits comme elle est. En fait, nous pouvons espérer que les utilisateurs utiliseront un meilleur mot de passe pour leur important site OpenID, ou utiliseront un authn à 2 facteurs, ou autre.

Quant au n ° 2, le point avec les connexions OpenID est que cela devient inhabituel pour parcourir un site qui pense que vous n'êtes pas connecté, lorsque vous constatez que vous êtes connecté à vos autres sites Web. D'un autre côté, il est déjà simple sans OpenID ou OAuth de faire ressembler un site à Twitter, de créer un lien vers le site et d'espérer convaincre les gens de s'y connecter et de saisir leurs mots de passe. Si les gens sont toujours connectés à Twitter (par exemple pour d'autres sites via OAuth ou OpenID), ils sont susceptibles de demander pourquoi ils ne sont pas déjà connectés.

Rakkhi
2011-05-23 14:19:50 UTC
view on stackexchange narkive permalink

A écrit ceci à propos de l'ID fédéré.

En gros, vous parlez du problème de risque centralisé ou des clés du royaume. Cela s'applique également aux gestionnaires de mots de passe, mais la sécurisation d'un petit nombre de systèmes d'identité et d'authentification est beaucoup plus facile et plus efficace que d'avoir des centaines de mots de passe faibles (ou le même mot de passe faible cent fois). Les fournisseurs Open-ID comme Google proposent désormais une authentification à deux facteurs; si vous n'aimez pas les jetons logiciels sur votre téléphone, les jetons matériels USB Yubikey sont également pris en charge par de nombreux fournisseurs Open-ID. Le contrôle et l'audit sont également grandement améliorés; connaissez-vous toutes les applications où vous avez utilisé un mot de passe? Moi non plus. Pourtant, de nombreux fournisseurs Open-ID ont tous les sites sur lesquels vous avez accordé l'accès à cette identité, la révocation de l'accès est un processus en un clic

D'un point de vue commercial, l'utilisation de quelque chose comme Facebook oAuth donnera accès à toutes ces données sociales , des analyses et des chances accrues de devenir viral. Ajouter que c'est plus rapide et moins cher que de payer un programmeur pour développer une fonction d'authentification en utilisant une forme d'authentification fédérée me semble une évidence.

Kim
2011-05-22 11:53:54 UTC
view on stackexchange narkive permalink

J'utilise Google pour mon compte OpenID. Presque tous les sites Web qui n'utilisent pas OpenID me permettent de réinitialiser le mot de passe par e-mail, donc si quelqu'un obtenait le mot de passe de mon compte gmail, je serais quand même foutu.

C'est vrai, cependant, Google est plus difficile à pirater et il bloque la force brute et tout. Je fais beaucoup plus confiance à Google, alors disons, Klout.com ou quelque chose comme ça. Mais oui, je comprends ce que tu dis :)
Lie Ryan
2011-06-23 09:33:20 UTC
view on stackexchange narkive permalink

Avoir 1 mot de passe stocké sur 1000 serveurs est moins sécurisé que 1 mot de passe stocké dans 1 serveur qui authentifie 999 serveurs est moins sécurisé que 1000 mot de passe pour 1000 serveurs .

Cependant, ce dernier n'est pas pratique, les gens ne sont pas capables de se souvenir de 1000 mots de passe pour 1000 serveurs, la seule façon de le faire est d'utiliser des gestionnaires de mots de passe. Et où en est le gestionnaire de mots de passe?

Avoir 1 mot de passe stocké en utilisant le cryptage unidirectionnel sur 1000 serveurs est moins sécurisé que 1 mot de passe principal pour un gestionnaire de mots de passe qui en stocke 1000 mots de passe en texte clair ou cryptage bidirectionnel pour 1000 serveurs est moins sécurisé que 1 mot de passe stocké en cryptage unidirectionnel dans 1 serveur qui authentifie 999 serveurs est moins sécurisé que 1000 mot de passe stocké en utilisant un cryptage unidirectionnel sur 1000 serveurs .

Par conséquent, OAuth / OpenID peut être plus sûr, plus pratique et plus pratique. Utiliser 1000 mots de passe sans gestionnaire de mots de passe n'est pas pratique, et utiliser le gestionnaire de mots de passe est moins sûr car ces mots de passe devraient être stockés en texte brut ou en utilisant un cryptage bidirectionnel.

D'accord, "1000 mots de passe pour 1000 serveurs" est le monde idéal;il s'agit généralement de "1 mot de passe stocké sur 1000 serveurs".Si ce mot de passe est compromis, vous devez changer le mot de passe dans 1000 serveurs (et rappelez-vous que vous avez un compte là-bas).
Lie Ryan
2012-09-22 02:30:25 UTC
view on stackexchange narkive permalink

OAuth et OpenID améliorent la sécurité en vous obligeant à taper votre mot de passe moins souvent. Lier un nouveau compte à OAuth / OpenID, c'est juste que je suis redirigé vers le fournisseur d'identité, et comme je suis déjà connecté au fournisseur d'identité tout le temps, il donne simplement une invite Oui / Non au lieu d'une invite de mot de passe. Aucun mot de passe ne voyage tout au long de cet échange.

Cela vous rend plus conscient de vous-même si vous êtes réellement invité à entrer un mot de passe au lieu de simplement passer.

Donc, le n ° 2 n'est pas vraiment problème.

pepe
2011-06-23 07:40:15 UTC
view on stackexchange narkive permalink

# 2 est absolument vrai, mais pas principalement un problème d'identité fédérale, mais c'est encore plus critique dans ce cas.

Vous avez des problèmes similaires avec tous les formulaires de connexion intégré dans un contenu (en fait) non approuvé, en particulier parce que l'authentification utilisée est la moins sécurisée (le secret est simplement transmis par le navigateur, et si vous avez de la chance, le serveur place SSL en dessous pour votre commodité ..).

Vous avez besoin de deux choses pour résoudre ce problème et la plupart des autres attaques de phishing:

  • interface sécurisée pour l'authentification de l'utilisateur, par exemple boîte de dialogue déroulante de la barre d'URL, et NON partie du contenu du serveur.

  • Protocole d'authentification implémenté de manière native (pas par le contenu du serveur, comme JavaScript) qui ne révélera pas le secret à une personne potentiellement malveillante serveur (par exemple, SRP)

BTW, j'ai implémenté SRP pour NSS il y a plusieurs années et d'autres ont même implémenté des extensions GUI. À moins que les cartes à puce ne deviennent omniprésentes, voici la voie à suivre: http://trustedhttp.org/wiki/TLS-SRP_in_NSS

Vicky
2016-05-26 19:58:24 UTC
view on stackexchange narkive permalink

Les humains veulent toujours transférer leurs responsabilités de leurs épaules (pas tout le monde). La sécurité est une grande responsabilité et la plupart des entreprises veulent se concentrer sur leur cœur de métier et donner à leurs clients le meilleur de leur produit plutôt que de se soucier de la sécurité.

Le point de défaillance unique est certainement quelque chose à craindre du point de vue de la sécurité, mais les gens veulent faire confiance aux grandes entreprises parce qu'elles ont beaucoup d'argent et avec de l'argent, de bons ingénieurs en sécurité (pas exactement mais Ouais! ). De bons ingénieurs signifient de bonnes pratiques de sécurité. De plus, ils ne vont pas montrer leur dos aux gens (espérons-le!).

Le phishing est définitivement un énorme problème et la communauté de sécurité travaille sur ce problème depuis un certain temps déjà. Comme @Rakkhi l'a mentionné, des solutions récentes comme Yubikey, Fido U2F pour résoudre le problème du phishing pourraient aider à renforcer la sécurité.

La seule chose que nous pourrions espérer est un nouveau changement de conception où les gens n'ont pas à choisir leurs mots de passe et saisissez-les tout en pouvant les authentifier en toute sécurité.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...