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

密码的不安全性和可用性问题早已为人所知。密码属于“你知道什么”的认证方式,因此容易因遗忘而失效,这种情况经常发生。因此,电子邮件被广泛用作重置密码的备用手段。

电子邮件本身也存在诸多问题。与密码类似,人们通常会在多个服务中重复使用同一个电子邮件地址,一旦该邮箱地址从某项服务中被泄露,就会带来隐私风险。如今,若不向邮件服务器提供个人身份信息,想要获取一个电子邮件地址变得越来越困难。为了防范垃圾邮件(可能也是为了更精准地向用户投放广告),免费邮件服务通常要求用户提供电话号码,而电话号码很容易与特定个人关联。付费邮件服务或许不要求提供电话号码,但要在不提供个人身份信息的情况下支付服务费用同样困难,而且依赖付费邮件服务订阅也易受财务状况变化的影响。此外,如今可靠地自建邮件服务器也颇具挑战。除了隐私问题外,在多个服务中重复使用同一电子邮件账户所造成的集中化,还会带来安全风险:一旦该邮箱账户被攻破,大量其他账户也将面临风险。

如今,我们注册或认证服务时已不再需要密码或电子邮件。Discourse 已经支持 FIDO 和 TOTP,但其注册和认证流程仍然要求提供密码和电子邮件地址。如果 Discourse 能够将密码和电子邮件设为可选,转而优先支持 FIDO 和 TOTP,那将是一个巨大的进步。

仅使用 FIDO 进行单因素认证确实非常便捷,但它存在与“仅使用密码注册而无电子邮件地址”类似的问题:一旦唯一的 FIDO 令牌丢失或损坏,用户将无法访问账户。为解决这一问题,我建议要求用户在注册时至少提供两种认证因素,这些因素的任意组合均可,包括 FIDO、TOTP 和/或密码。希望实现无电子邮件且无密码认证的用户,只需注册两个 FIDO 漫游认证器(如 YubiKey)即可。此外,应建议(甚至可能要求,特别是针对管理员)用户注册超过最低要求的两个认证因素,以避免因丢失而无法访问账户。

随着 Windows Hello、Apple Touch ID 与 Face ID 以及 Android 等设备将 FIDO 平台认证器集成到越来越多的设备中,这种无电子邮件的注册系统也可供非技术用户使用,即使他们并未拥有像 YubiKey 这样的专用漫游认证器硬件。用户可以使用 FIDO 平台认证器加密码进行注册。在这种设置下,仅使用 FIDO 平台认证器进行单因素认证也能无缝工作。然而,这会在新型设备上带来认证可用性问题,因为用户在新设备上无法使用原有的 FIDO 平台认证器,而仅依赖密码来设置新设备又不安全。为解决这一问题,我建议采用类似于 Matrix 认证新客户端的工作流程:用户可尝试在新设备上使用该设备的 FIDO 平台认证器(新因素)及其密码(已注册因素)进行登录。这不会真正完成登录,但会生成一个请求,要求用户在账户中批准该新的 FIDO 认证器。新设备上的界面随后会引导用户在其已注册的设备上登录,以批准新设备。由于 FIDO 平台认证器已内置于移动设备中,这种方案在实际使用中既安全,又无需专用漫游认证器硬件,同时保留了使用任何临时设备(如公共终端)的能力。

我是在昨天收到 YubiKey 后,刚刚构思出这套匿名注册与认证系统的。据我所知,目前尚无系统实现此方案。我衷心希望像 Discourse 这样成熟且已广泛部署的 Web 应用能够率先开创一个无需电子邮件或其他个人身份信息即可使用互联网的未来。

3 个赞

这很可能属实。但很难想象,任何会使用你所提议的系统进行登录的人却不知道密码管理器是什么。我使用密码管理器已有十年左右,拥有多个 FIDO 密钥,使用 Google Authenticator,却不太明白你具体在提议什么。

除非至少有少数企业客户需要,否则这样的系统似乎不太可能被加入。我认为这需要至少 50 小时的工作量(针对一位非常熟悉认证系统的人员),若有完善的规格说明,工作量可能翻倍。之前曾有人尝试与 Keybase 集成,Keybase 可以实现你部分想要的功能,但似乎进展不大。

不过,这确实是个有趣的想法。也许它比我想象的更容易实现。

1 个赞

任何拥有内置 FIDO 平台认证器的近期设备的用户,都可以轻松使用此功能。再过几年,这几乎适用于任何人。

我在标题中已经说过:让电子邮件成为可选项。让密码也成为可选项那就更好了。

我确信实施它需要相当多的工作量。我认为最困难的部分在于让用户体验(UX)设计变得非常清晰。Discourse 已经具备了相关基础,其双因素认证(2FA)已支持 FIDO 和 TOTP。

1 个赞

实现这一目标的一个小起点,是在注册界面中添加 FIDO 和 TOTP 的注册 UI,这样用户首次登录后就不需要再在偏好设置中额外进行这一步。之后,可以进一步优化 UI 设计,使邮箱和密码变为可选。

1 个赞

我很好奇 @codinghorror 对此的看法,考虑到他写过许多关于密码的博客文章。

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 个赞