为什么U2F登录是两步协议?



理论上,使用注册令牌登录只需一步即可完成...

  1. 服务器使用登录表单发送质询
  2. 用户使用用户名、密码和签名质询进行响应。

但是,FIDO协议增加了一个额外的步骤...

  1. 用户提交用户名/密码
  2. 服务器向用户发送质询
  3. 客户提交已签名的质询

附加步骤的安全理由是什么?

  • 简答

因为FIDO U2F设备上有几个密钥,并且不同服务之间的匿名/隐私得到了保证。

每次用户将 FIDO U2F 设备(USB 令牌/安全密钥或 NFC 卡或 BLE 设备)与其在线服务帐户关联(注册/注册步骤)时,都会为此身份创建一个新的密钥对,其中包含引用 ID(密钥句柄)、公钥和密钥句柄并存储在服务器端。密钥对(身份)不会在不同的在线服务之间共享(例如,为 Gmail 帐户创建的密钥对不会用于 Facebook 帐户)。

创建密钥对后,当用户发送其用户名和密码(身份验证步骤)时,服务器会检查哪些密钥句柄已与此帐户关联,并且密钥句柄与服务器质询一起发送到客户端(浏览器然后是 FIDO U2F 设备),以便请求用于签名的正确私钥。

旁注:一个 FIDO U2F 设备可以与多个在线服务帐户关联。一个服务帐户可以与多个 FIDO U2F 设备关联。

  • 更多详情

以下是我为了更好地理解注册和身份验证步骤而制作的快速 FIDO U2F 备忘单,因为它很容易迷失在官方 FIDO U2F 规范中: http://www.neowave.fr/pdfs/FIDO-U2F-CHEAT-SHEET.pdf

服务器必须知道谁将登录,在这种情况下,必须提供用户名。您提供的第一个进程是服务器需要检索将要登录整个数据库的人员的识别过程。而第二个是身份验证过程,服务器需要验证用户是否是正确的人。通常,当您登录某个网站时,这是一个身份验证过程,这就是为什么我们需要再走一步。

最新更新