如何在Java中获取U2F令牌(例如Yubikey Neo)的公钥和私钥

时间:2016-08-22 08:45:24

标签: java fido-u2f yubico

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

我知道像Yubico一样,它只提供Javascript中的实现,当用户触摸U2F令牌的按钮时能够检索公钥但直到现在我还没有找到任何能够做到这一点的Java库。有什么方法我可以从U2F令牌中获取公钥和私钥吗?

1 个答案:

答案 0 :(得分:2)

简答:您无法提取私钥。

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