U2F 注册签名验证失败

使用我的 U2F 令牌之一,NIST P-256 ECDSA 签名验证在 U2F_REGISTER 响应中失败。

我根据这个协议描述工作:https : //fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-raw-message-formats.html

U2F_REGISTER request:
  b852c99d386769a3289d45708680efcc2350c0a7c152adb93c708b22a55c5d11: challenge
  8adb4559abbea4a68754314e64aa6785901b6a236db5a14d040916799865e290: application
U2F_REGISTER response:
  05: reserved byte
  user_public_key (NIST P-256):
    04: key format (uncompressed)
    db3ca8b3863f2fed19dada227aa8a51dba9bd0ecafcb5313225c04618c9329df: x
    e540eb5c58d24704e899eaa72feef06722ad4669c5a3d5537ab88dc6a712f96d: y
  keyhandle
    40: length (64 bytes)
    96e7d09341237e1c306a71ed9d59eeb16be621dbb34eb346ca999301ad0bee28f62876fced320734b4f139b89b8608bb4b4cef0f864064c2b3af1966167c4278
  attestation certificate in X.509 DER format
    30: sequence
    82: length (130 bytes) ??
      01433081ea...
  ECDSA signature in X.509 DER format
    30: sequence
    44: length (68 bytes)
      02: integer
      20: length (32 bytes)
        6d090eefac83a67f9361adcd391395ab3636470e1eb479dc94e1194dc1f25259: r
      02: integer
      20: length (32 bytes)
        660f7d23cd6b1c74e8499503fd21f6662a3270e916a57096037001baad5c7064: s

我计算了 的 SHA-256 哈希值00 (1 byte) + application (32 bytes) + challenge (32 bytes) + keyhandle (64 bytes this time) + user_public_key (1 + 32 + 32 bytes)

然后我打电话ecdsa.Verify(user_public_key, hash, r, s)

对于我拥有的 U2F 令牌之一,ecdsa.Verify 返回 true(好),但对于另一个(参见上面的字节),它返回 false。我在上面的例子中做错了什么?

我使用错误的公钥来验证签名。我应该在证明证书中使用公钥(而不是直接在响应中使用公钥)。通过这样做,签名验证正确。

这是一个 Python 中的代码示例,用于进行签名验证:https : //github.com/concise/lightu2f.py/blob/20540f75ee5f86a4b2ad4bffe34074760978cbf9/lightu2f.py#L100它在问题中的数据上正确运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

U2F - 类型错误 | 无法注册密钥

来自分类Dev

如何使用FIDO U2F允许用户向我的网站进行身份验证?

来自分类Dev

通过SSH(特别是Git)进行身份验证时,如何缓存Yubikey / U2F凭据?

来自分类Dev

如何为系统范围的两因素身份验证配置 U2F 密钥(例如 YubiKey)?

来自分类Dev

哪些网站支持U2F?

来自分类Dev

没有U2F Chrome扩展程序的U2F支持

来自分类Dev

使用SHA-2使用交叉签名的证书使用signtool签名和验证后,Windows驱动程序安装失败

来自分类Dev

FIDO2与U2F / CTAP1的兼容性

来自分类Dev

网站的U2F应用程序ID(Facet ID)

来自分类Dev

FIDO U2F令牌Web浏览器兼容性

来自分类Dev

Fido U2F客户端javascript源代码

来自分类Dev

无法为ssh生成U2F公钥/私钥:FIDO_ERR_RX

来自分类Dev

无法让yubikey neo u2f在VMWare Workstation中的Linux中工作

来自分类Dev

如何使用U2F密钥进行Windows 10登录?

来自分类Dev

如何在命令行上测试 FIDO U2F USB 令牌?

来自分类Dev

Apparmor 强制模式阻止 Firefox 读取 U2F 安全密钥

来自分类Dev

SAML签名验证失败

来自分类Dev

OAuth签名验证失败

来自分类Dev

SAML签名验证失败

来自分类Dev

OAuth签名验证失败

来自分类Dev

Azure b2c错误:IDX10501:签名验证失败。无法匹配密钥:孩子:“ gLv ****************”

来自分类Dev

U2F多方面AppID在Chromium v40.x中不起作用

来自分类Dev

Firebase JWT:签名验证失败

来自分类Dev

JWT与PHP“签名验证失败”

来自分类Dev

google/apiclient:签名验证失败

来自分类Dev

Terraform自签名证书Openssl验证失败

来自分类Dev

推包的签名验证失败-Safari Push

来自分类Dev

Torbrowser签名验证失败-小故障或“攻击”?

来自分类Dev

请求的lib验证签名的cookie失败

Related 相关文章

热门标签

归档