OpenID容易破解吗?还是我缺少什么?


18

对于那些允许用户指定OpenID提供商(OP)的依赖方(RP),在我看来,比任何知道或猜测您的OpenID的人都可以

  1. 输入自己的OP地址。
  2. 让它验证他们是否拥有您的OpenID。
  3. 在RP上访问您的帐户。

RP“可以”采取措施以防止这种情况,只允许原始OP验证OpenID,但是...

  1. 你怎么知道他们呢?
  2. 如果不更改OpenID,就永远无法更改OP。

Answers:


7

OpenID是您必须信任端点的系统之一。如果RP不可靠,则这种关联中毒是完全可能的。如果RP实际上是可信的,则这种攻击要困难得多。不易遭受此攻击的“解决方法”是将本地安全原则(在ServerFault上,这是您的用户名在后端数据库中的表示形式)与外部OpenID终结点(OpenID URL,ServerFault允许您关联多个)相关联这些)。

您仍然可以通过RP的DNS中毒攻击来进行攻击,例如* .livejournal.com被重定向到您专门为攻击而设计的OP。但这是DNS中毒攻击,而不是OpenID本身的故障。OpenID仅容易受到DNS攻击。


在这种情况下,可信赖的RP可能会变得不可信赖,因为他们认为OpenID本身就是安全的。
大卫2010年

读完这篇文章后,我在openid.net上发现了自己,我首先看到的标题是“互联网身份的基础”,标题是三只手玩积木的股票照片的背景,每只手都从非常不稳定的地方捡了一块,看塔。
安德烈亚斯(Andreas)

2

我认为您在混淆OpenID和用户安全性的其他部分。您的OP是身份验证机制,而不是您的帐户。在ServerFault上,您有一个帐户。该帐户本身无法进行身份验证;除了将其指向一个或多个OP。

当您尝试以SF身份在此处登录帐户时,它会要求您的OP处理身份验证。就您的SF帐户而言,只有一个OP(或多个OP,但您已设置)可以对您进行身份验证。

典型的登录系统包含三个部分(称为三重“ A”或简称“ AAA”):

  • 会计-跟踪您的姓名和特定于该网站的信息(例如帖子,消息等)
  • 身份验证-跟踪如何确保自己确实是您(通常是密码)
  • 授权-Keeeps跟踪您的权限(对各种事物的读或写访问权限)

您可以在Wikipedia上阅读有关AAA系统的更多信息。


如果允许我每次登录时指定任何OP,那么恶意用户在尝试入侵我的帐户时也可以指定任何OP。因此,他们指定自己的OP并获得访问权限。
大卫2010年

不,您只允许他们登录后为他们的帐户添加其他OpenID点。所以是这样的。
ceejayoz

2
@David,登录时未指定帐户和OpenID,而指定了OpenID。该OpenID必须已经连接到一个帐户,否则您可以选择创建一个新帐户(至少在SF上是这样)。
克里斯·S

1

大卫,你的假设是错误的。OpenID的工作方式如下:1)您要登录到站点dependingparty.com 2)您给dependingparty.com提供您的OpenID,例如david.com 3)依靠party.com检查david.com(嘿,这是一个URL)称为OpenID端点,可以在david.com上找到,但也可以通过其他方式(例如yahoo.com或google.com)进行委派。我们称它为davidsopenidprovider.com 4)您现在已重定向到davidsopenidprovider.com。davidsopenidprovider.com的工作是对您进行身份验证。您必须登录到davidsopenidprovider.com。该登录的工作方式取决于davidsopenidprovider.com。它可以是用户名/密码,可以是信息卡,浏览器证书,指纹,智能卡,带外机制(如呼叫验证),...取决于davidsopenidprovider。com它如何处理身份验证。然后,它询问您是否真的要登录dependingparty.com。5)如果您成功登录到davidsopenidprovider.com,您将被重定向回Dependingparty.com,并在那里自动登录。6)davidsopenidprovider.com仅向Dependingparty.com保证您是您声称的身份。它不发送任何密码。

因此,您的假设是“作为消费者,当我在any-site.com上创建帐户时,我并不了解开发人员/站点管理员的智慧。” 关于OpenID是错误的。如果有一个弱点,那就是提供商,而不是any-site.com。这就是现在传统的用户名/密码登录的问题。您必须信任每个以这种方式提供登录名的站点,而不仅仅是一个OpenID提供程序。

我希望这有助于理解OpenID。


0

你怎么知道他们呢?

就像您知道任何旧站点都将密码传递给其他人一样,您也不会。这就是为什么您使用的公司可能是著名的公司。

如果不更改OpenID,就永远无法更改OP。

你当然可以。查看OpenID委托。

我的OpenID是http://ceejayoz.com/,但我的OP是WordPress.com。http://ceejayoz.com/META头中的两个标签允许我执行此操作,我可以随时更改它。


0

您的openID是您的提供者。pwnguin.net是我的openID。无需猜测,这只是一个已知事实。保护我的openID的是运行在pwnguin.net上的软件,该软件仅在有问题的访问者具有身份验证cookie时才肯定回答。

我不会说openID是安全的;有各种各样的跨站点脚本可能会继续进行,或者有些世俗的细节我倾向于忽略或出错。


0

这是我从这里的回复中得到的...

OpenID仅与所涉及的各方一样安全,任何身份验证方法均是如此。在开始讨论之前,我意识到了这一点。

在我看来,OpenID的问题有两个方面。

  1. 您的LoginID不再是仅在您和您使用它的网站之间共享的秘密。它是您的OpenID,在您使用它的每个站点中都知道,并且很容易猜到,例如电子邮件地址或从您的电子邮件地址派生的名称或类似名称。

  2. RP可以在其站点上实施OpenIP,而无需进行尽职调查,前提是假定它们使用的是安全的广泛接受的“协议”。诚然,大多数常规网站开发人员对如何保护网站没有真正的概念,但是,如果他们实现自己的安全性,至少不会出现问题#1。

作为消费者,当我在any-site.com上创建帐户时,我对开发人员/站点管理员的智能并不了解。我使用了我认为不会轻易猜到的ID。我不希望serverfault.com知道我用于登录Etrade.com的ID。我还在每个站点上使用不同的密码,并使用自己的方案管理这些密码。除非站点运营商是白痴,否则我的帐户被纳入的可能性很小。

使用OpenID,如果RP没有适当的措施,则WEB中的每个人都知道它是如何工作的以及如何对其进行攻击。

我喜欢开放源代码软件,但是对于OpenID,我认为这为毫无戒心的采用者提供了劣质的实现方式。

我认为,可以通过一些签字的批准书来解决所有这些问题,以确保消费者该站点已通过审核,并且不受黑客攻击。

也许我只是偏执。


我知道这个很旧,但是知道openid“ id”是没有用的...例如,google对exery单用户使用完全相同的url。知道如何帮助您像我一样登录stackoverflow(除了知道您可以入侵我的Google帐户之外,还可以通过我身份验证,但这与“忘记用户名/密码”没什么不同)。
jmoreno 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.