我正在尝试创建一个可以从U2F令牌(例如Java语言的Yubikey Neo)中检索公钥和私钥的应用程序。我尝试在控制台中使用简单的扫描仪从Yubikey Neo获取任何内容,但由于无法打印(可能由于格式)而无法正常工作,而不是像OTP那样会在记事本中打印出来,因此可以被读者捕获。

我知道像Yubico一样,它只提供Javascript实现,当用户触摸U2F令牌的按钮时,该实现能够检索公钥,但是直到现在我还没有找到Java能够做到这一点的库。是否可以通过U2F令牌获得公钥和私钥?

最佳答案

简短的答案:您不能提取私钥。

U2F基于公钥密码学(也称为非对称密码学)。
私钥永远不会离开U2F令牌,仅在令牌内部(由内部CPU,通常是内置智能卡使用)来签署随机服务器质询。

See simplified U2F authentication diagram here

通过使用公钥加密,FIDO U2F比OTP / TOTP安全得多。

有关FIDO U2F的更多信息:

http://www.slideshare.net/CloudIDSummit/cis-2015b-fido-u2-f-in-10-minutes-cis-2015

10-08 00:26