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

How To Get Public and Private Key of U2F Token (eg. Yubikey Neo) in Java

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

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

简答:您无法提取私钥。

U2F 基于 Public 密钥密码术(又名非对称密码术)。 私钥永远不会离开 U2F 令牌,仅在令牌内部使用(通过内部 CPU,通常是内置智能卡)来签署随机服务器挑战。

See simplified U2F authentication diagram here

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

关于 FIDO U2F 的更多信息:

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