U2F FIDO - 应用程序&挑战参数

时间:2017-06-06 23:31:26

标签: authentication challenge-response fido-u2f

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

  • 挑战,
  • APPID,
  • 协议版本

用户通过触摸设备发送这些信息的按钮执行“用户状态测试”:

dictionary RegisterResponse { DOMString registrationData; DOMString clientData; };

依赖方根据这些信息做他必须做的事情,并且流程已经完成!

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

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

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

这部分运行的步骤是什么?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您正在谈论注册,以便将密钥与帐户相关联。注册密钥:

  1. 用户键入名称/密码并发布到服务器。
  2. 服务器回复RegisterRequestData(使用服务器端u2f库创建)。
  3. 客户端使用库函数u2f.register,它向U2F设备发出请求并返回RegisterResponse(带有设备注册信息的json)。这将发送回服务器。
  4. 服务器将回复服务器端u2f库并保存DeviceRegistration。
  5. 身份验证/登录类似,但服务器向使用u2f.sign的客户端发送DeviceRegistration + challenge并返回DeviceResponse。

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