数字认证与身份验证的技术解析与实践指南

本文深入探讨了数字认证与身份验证的核心概念、不同认证等级的安全优劣,并基于OpenID Connect、OAuth等标准,为构建专业级安全架构提供了具体的技术实现路径与建议。

本文审视了认证和身份验证,并描述了应验证的内容和一些概念。随着向数字世界迁移流程的推动以及新的威胁模型出现,认证和身份验证必须以专业的方式实现。建议采用OpenID Connect、OAuth和OpenID VCs等标准。

什么是认证?

认证是验证一个身份(可以是用户、系统、设备、机器人、AI代理或应用程序)的过程。在具有用户交互的Web应用程序中,应用程序和用户都需要被认证。OpenID Connect公共客户端不对应用程序进行认证,因此不应用于Web应用程序。

什么是身份?

数字身份是个人、组织或设备在线上的一种表示,它允许软件对该身份进行认证。一个用户可以拥有多个身份。身份通常作为一组声明(claims)从受信任的身份提供者以签名令牌的形式返回。

认证等级

存在不同的认证等级,只有在理解了认证等级的情况下,每个等级才能被信任。在下面的列表中,1代表最好的认证方法,4代表最差。Passkeys认证是实现认证的最佳方式,在列表中,它是唯一能抵抗网络钓鱼攻击的方式。安全的认证只使用能抵抗网络钓鱼的认证方法,包括恢复流程。像Microsoft、Google、PING ID和OKTA验证器这样的认证应用能抵抗网络钓鱼,并且不如Passkeys安全。OpenID可验证凭证也属于此类。这不应在管理员业务案例或高安全性用例中用于认证。第三组包括使用短信或电子邮件认证的2FA流程。任何可以自动化的认证过程都不是真正安全的,因为机器人、AI代理同样可以自动化这个过程。使用TOTP的MFA不再是安全的认证实现方式。这通常用于企业共享账户。这组实际上是两步验证,而不是2FA。第4类是最差的,应避免使用。例如,企业中用于保护防火墙的Firewall密钥或单因素密码。

  1. Passkeys(公钥/私钥证书认证)
  2. 验证器应用、OpenID可验证凭证(E-ID、swiyu)
  3. 短信、电子邮件、TOTP、两步验证
  4. 单因素、SAS密钥、API密钥、密码、OTP

身份等级

所有身份都是以不同方式创建的。身份的创建和验证方式在数字世界中至关重要,身份只能在不同的信任等级上被信任。重要的是,软件应传达身份等级,以便客户端应用程序可以验证。创建数字身份有不同方式。在以下列表中,1代表最高信任级别,5代表最低。

  1. 由可信组织中的受信任官员进行离线人工身份验证。
  2. OpenID可验证凭证(E-ID、swiyu)、政府颁发。
  3. 与本人进行的数字在线验证。
  4. 无本人的数字视频验证。
  5. 电子邮件和短信验证。

专业的认证与身份验证

在数字世界中进行专业的认证和身份检查,应以真实的形式共享并验证认证等级和身份等级,例如使用基于某些OpenID、OAuth标准的签名令牌。可以如下实现:

  1. 用户(个人)在身份提供者上创建一个账户。
  2. 用户使用2个或更多Passkeys添加认证方法。
  3. 用户使用Passkeys进行认证,并使用OpenID可验证凭证(E-ID、swiyu)识别自己。所需的身份数据被持久化到账户中,除非使用OpenID可验证凭证(E-ID、swiyu)并通过必要检查进行更新,否则无法更改。
  4. 用户可以使用OpenID Connect和Passkeys认证在线进行认证。例如:Web应用程序:使用PAR和客户端断言的OIDC机密客户端,用于访问令牌的OAuth DPoP。
  5. 代表已认证身份的认证等级和身份等级声明在id_token(如果需要,在DPoP访问令牌中)中返回。令牌使用推荐的异步加密进行签名,客户端验证签名。客户端必须对敏感流程(例如电子收集)的声明进行验证。

说明

一旦账户使用了Passkeys并已通过OpenID可验证凭证识别,用户就不再需要使用OpenID VC身份检查,因为Passkeys提供了更高的认证等级并且已经与身份关联。身份已固定到被认证的账户。使用可验证凭证进行认证不能提供强认证,这能抵抗网络钓鱼攻击。 在后续文章中,我将使用Duende IdentityServer和基于swiyu实现的OpenID可验证凭证来实现这一点。

链接

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计