无邮箱和密码的注册与验证

The insecurity and usability problems of passwords are well known. Passwords are something you know, so they are vulnerable to forgetting, which happens often. Thus, email is widely used as a backup to reset passwords.

Email has a lot of problems too. Similar to passwords, people typically reuse the same email address across lots of services, creating a privacy risk if the email is discovered from the service. It is increasingly difficult to get an email address without giving personally identifiable information to the email server. As a deterrent against spam (and probably also because it makes it easier to target ads at users), free email services typically require providing a phone number which is easy to associate with a particular person. Paid email services might not require a phone number, but paying for a service without personally identifiable information is difficult as well, and relying on paid email service subscription is vulnerable to changes in financial circumstances. Also, it’s difficult to reliably self host an email server today. In addition to the privacy issues, the centralization created by reusing an email account across many services also creates a security risk because a compromise of the email account would compromise lots of other accounts.

Nowadays, we don’t need passwords nor emails to register or authenticate to a service. Discourse already supports FIDO and TOTP, but it still requires a password and email address to register and authenticate. It would be great if Discourse made passwords and emails optional in favor of FIDO and TOTP.

One factor authentication with FIDO can be really convenient, but it is vulnerable to loss or destruction of the single FIDO token, similar to the issue of registering with a password but no email address. To resolve this, I propose that users would be required to provide at least two factors to register, which could be any combination of FIDO, TOTP, and/or password. Users who want emailless & passwordless authentication could simply register two FIDO roaming authenticators like Yubikeys. Users could be advised (or potentially required, especially for administrators) to register more than the minimum of two factors to avoid losing access to their accounts.

As FIDO platform authenticators are being built into more and more devices these days with Windows Hello, Apple Touch & Face ID, and Android, this email-less registration system could be usable by nontechnical users who do not own specialized roaming authenticator hardware like a Yubikey. Users could register with the FIDO platform authenticator plus a password. One factor authentication with the FIDO platform authenticator could work seamlessly with such a setup. However, this would create a usability problem for authentication on new devices because users wouldn’t have the FIDO platform authenticator available on a new device and relying solely on the password to setup a new device wouldn’t be secure. To resolve this, I propose a workflow similar to how Matrix authenticates new clients. The user could try to login on a new device with that device’s FIDO platform authenticator (a new factor) and their password (an already registered factor). This would not actually log in, but it would create a request to approve the new FIDO authenticator in the account. The UI on the new device would then direct the user to log in on a device they already have registered to approve the new device. With FIDO platform authenticators built into mobile devices, this could be practically usable for secure authentication without specialized roaming authenticator hardware or sacrificing the ability to use any ad-hoc device like a public kiosk.

I just came up with this anonymous registration & authentication system yesterday after receiving my Yubikeys. I am not aware of any systems which implement this. I would love to see a mature and already widely deployed web application such as Discourse pioneer a future without email or other personally identifiable information being required to use the Internet.

3 个赞

That’s likely true. But it’s hard to imagine that anyone who would log in with the system that you propose don’t know what a password manager is. I’ve been using a password manager for a decade or so, have multiple fido keys, use Google authenticator, and don’t quite understand what you propose.

It seems improbable that such a system will be added unless at least a few enterprise customers want it. I think it’s on the order of at least 50 hours work for someone who knows a lot about the authentication system, and likely twice that with proper specs. There was an attempt a while ago to integrate with keybase, which could do some of what you want, but I don’t think it got very far.

It’s an interesting idea,though. Maybe it’s easier than I think.

1 个赞

Anyone with a recent device that has a FIDO platform authenticator built in could use this quite easily. In a few more years this could be just about anyone.

I said it in the title: make email optional. Making passwords optional would be great too.

I’m sure it would take a decent amount of work to implement. I think most of the hard part would be getting the UX design really clear. Discourse already has the building blocks in place with 2FA supporting FIDO and TOTP.

1 个赞

A small, first step towards implementing this could be adding the UI for registering FIDO and TOTP to the registration UI so it doesn’t need to be an extra step in the preferences after logging in for the first time. Later, the UI design could be improved further to make email and password optional.

1 个赞

I’m curious about @codinghorror’s thoughts on this considering his various blog posts about passwords.

3 个赞

电子邮件应该是可选的。由于大型电子邮件提供商的寡头垄断,使用电子邮件变得越来越不可靠,甚至不可能。

现在,Gmail 突然阻止了我的域名。

  • 即使在多年完美设置了所有电子邮件安全(SPF、DKIM、DMARC 等)之后
    • 我说的完美是什么意思?所有电子邮件安全测试和报告工具都显示“100% OK”,并且
    • 该域名多年来也未出现在任何垃圾邮件列表中(spamhouse…)。

但是你可以联系 Gmail?当然……

引用 Sender Contact Form - Gmail Help

我们将使用您提供的信息来调查和改进我们的垃圾邮件和滥用检测系统。不幸的是,我们无法在调查期间或之后提供有关我们发现的详细信息。

所以可能的答案是“是的,我们调查了,但没有解决,问题在你这边,但你不会分享任何垃圾邮件示例,我们也不会告诉你问题是什么”……也就是说,如果根本存在任何问题的话。

我还是用了那个联系表单。表单最后说需要两周时间才能收到回复。这使得电子邮件几乎不可靠,而且处理起来太麻烦了。

这不仅仅是我的经历。

许多其他人也写过类似的经历。

这些伎俩是除了自托管电子邮件服务器的所有技术困难之外。

您能否让电子邮件成为可选的?

  • 使用电子邮件地址注册时:可以进行密码恢复。
  • 不使用电子邮件地址注册时:无法进行密码恢复。
    • 如果网站管理员允许(可选设置),请警告用户,但允许不使用电子邮件地址注册。
    • 仅用户名 + 密码。

相关主题:

1 个赞

一个快速简单的解决方案是使用其他系统进行身份验证,方法是使用 Discourse Connect

我之前对创建无电子邮件系统的难度的估计是错误的。为这些电子邮件使用带有 not-email.invalid 主机名的其他标识符应该是可行的。我认为 Sign-In with Ethereum 插件 可能会满足您的需求,如果您愿意让人们使用以太坊的话,但类似的东西也可以起作用。您确实需要某种方式来建立身份。

“您确实需要某种方式来建立身份。”

仅用户名+密码。

那么互联网上的任何人(或任何机器人)都可以来到你的论坛,通过编造用户名和密码来创建无限数量的账户?

是的。

根据我使用各种 Web 应用的经验,垃圾邮件机器人创建 Gmail 和其他电子邮件地址并不困难。在我的网站上,我们也没有排除临时邮件一次性电子邮件地址。还有一些其他论坛软件/论坛允许在不提供(或不提供有效)电子邮件地址的情况下注册,而且这也没有引起我所看到的任何问题。因此,我认为电子邮件地址并不是避免机器人/DOS 攻击账户泛滥的障碍。

但我明白你的顾虑。允许用户在不提供电子邮件地址的情况下注册可能会引发许多后续问题。如果出现大规模机器人攻击和/或 DOS 攻击,导致创建大量论坛账户,该怎么办?

在这种情况下,将需要采取反垃圾邮件预防措施。但这些措施不会专门针对那些电子邮件可选或必填的论坛实例。

这是因为如今垃圾邮件发送者也可以使用大量已创建或被黑的电子邮件地址。他们还可以使用临时电子邮件提供商。或者购买/窃取一个域名并设置自己的电子邮件服务器,专门用于垃圾邮件论坛设置。

对于使用/不使用电子邮件的用户,都会出现同样的问题。为了本次讨论,这些是理论上的问题。

  • 如何查看自 X 天以来创建的、登录时间少于 X 分钟、帖子数为 0 的所有账户?可能是机器人账户。我想找到并删除所有这些账户。
  • 如何在接受注册之前添加自定义问题/谜题/验证码/其他内容?
  • 管理员面板能否提供一个简单的按钮,让管理员可以轻松批准/不批准新注册用户,以应对大规模注册垃圾邮件?

看起来谷歌已经找到了一个使用二维码和蓝牙的有趣解决方案:

1 个赞

相关:Users logging with SSO, without email address

1 个赞

既然现在通用密钥(passkeys)如此普遍,许多服务都提供无密码注册,这样您就无需创建密码。拥有密码本身就会削弱通用密钥的安全性优势。同样,使用电子邮件作为恢复方法意味着您所有账户的安全性都依赖于您的电子邮件账户的安全性。要求提供密码/电子邮件对用户的安全和隐私不利,更不用说创建新电子邮件账户有多么容易了。根据我的经验,电子邮件要求根本无法阻止机器人向您的论坛发送垃圾邮件。服务历史上一直要求提供电子邮件的主要原因之一是,如果您忘记密码,可以恢复您的账户,但有了通用密钥,它们会存储在您的密码管理器中并在设备之间同步。您甚至可以为账户添加多个通用密钥,这在很大程度上消除了人们忘记密码的问题。以下是一些实施无密码注册的网站示例:

https://app.uninbox.com/ 这个我认为尤其好,因为它不需要电子邮件
https://www.kayak.com/

1 个赞

请为我解释一下,就像我是 80 岁一样。

Target 提供仅使用 passkey 的注册(并提供电子邮件/密码选项),而 Discourse 则强制使用电子邮件或通过 SSO 的电子邮件。Kayak(顺便说一句,我真的很讨厌那个域名 :smirking_face:)仅使用 Google SSO,而 Discourse 已经提供了该选项。

那么,现在这里悬而未决的问题是,是否提供类似 Target 使用的选项,因为 Kayak 的选项已经存在(我不会将注册仅限于 Google 用户,但这只是我个人的看法)。

当 Target 用户从 iPhone 换成 Android 时会发生什么?

Kayak 实际上允许你在输入电子邮件后使用通行密钥注册。不幸的是,仍然需要电子邮件。

你的通行密钥应该会同步到你的密码管理器,这样它们就可以使用了。你也可以为一个账户添加多个通行密钥,这样你就可以用新手机创建一个新的通行密钥。目前他们正在努力让通行密钥可导出,以便你可以更轻松地在密码管理器之间迁移。

1 个赞