0

当用户想要注册他的设备时,依赖方会提供一些参数,这些参数是:

  • 一个挑战,
  • 应用程序ID,
  • 协议版本

然后,用户通过触摸发送这些信息的设备上的按钮来执行“用户存在测试”:

dictionary RegisterResponse { DOMString registrationData; DOMString clientData; };

依赖方对这些信息做他必须做的事情,这个过程就完成了!

但我不明白以下部分。基于 U2F 协议规范:

注册请求消息 - U2F_REGISTER 此消息用于启动 U2F 令牌注册。FIDO Client首先联系依赖方获取challenge,然后构造注册请求消息。注册请求消息有两部分: 挑战参数是客户端数据的 SHA-256 哈希,FIDO 客户端准备的字符串化 JSON 数据结构。除其他外,客户端数据包含来自依赖方的质询(因此是参数的名称)。应用程序参数 [32 字节]。application 参数是请求注册的应用程序的应用程序标识的 SHA-256 哈希。(有关详细信息,请参阅参考书目中的 [FIDOAppIDAndFacets]。)

https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-raw-message-formats.html

这部分在哪一步运行?

先感谢您 !

4

1 回答 1

1

您正在谈论注册,因此将密钥链接到帐户。要注册密钥:

  1. 用户输入名称/密码并发布到服务器。
  2. 服务器回复 RegisterRequestData(使用服务器端 u2f 库创建)。
  3. 客户端使用库函数 u2f.register 向 U2F 设备发出请求并返回 RegisterResponse(带有设备注册信息的 json)。这是发送回服务器。
  4. 服务器向服务器端 u2f 库提供回复并保存 DeviceRegistration。

身份验证/登录类似,但服务器向使用 u2f.sign 并返回 DeviceResponse 的客户端发送 DeviceRegistration + 质询。

我认为清楚的模式: https ://developers.yubico.com/U2F/Libraries/Using_a_library.html

于 2017-06-09T15:10:30.457 回答