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

如何在Java中获取U2F令牌(如Yubikey Neo)的公钥和私钥,java,fido-u2f,yubico,Java,Fido U2f,Yubico,我正在尝试创建一个应用程序,该应用程序可以从U2F令牌(如Java语言中的Yubikey Neo)检索公钥和私钥。我试着在控制台中使用一个简单的扫描仪从Yubikey Neo上获取任何东西,但它不起作用,因为它不会被打印出来(可能是因为格式),不像OTP那样会被打印在记事本上,这样它就可以被读卡器捕获 我知道,像Yubico一样,它只提供Javascript实现,当用户触摸U2F令牌的按钮时能够检索公钥,但到目前为止,我还没有在Java中找到任何能够这样做的库。我是否可以从U2F令牌中获取公钥和

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


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

简短回答:您无法提取私钥

U2F基于公钥加密(也称为非对称加密)。 私钥从不离开U2F令牌,仅在令牌内部使用(由内部CPU,通常是内置智能卡),以签署随机服务器挑战

通过使用公钥密码,FIDO U2F比OTP/TOTP更安全

有关FIDO U2F的更多信息:


简短回答:您无法提取私钥

U2F基于公钥加密(也称为非对称加密)。 私钥从不离开U2F令牌,仅在令牌内部使用(由内部CPU,通常是内置智能卡),以签署随机服务器挑战

通过使用公钥密码,FIDO U2F比OTP/TOTP更安全

有关FIDO U2F的更多信息:


当我按下Yubikey Neo的按钮时,我是否可以获得公钥?对于每个“身份”,都有一对密钥(公钥和私钥)。每个公钥在注册(每个身份创建)期间发送到服务器,这是唯一一次您可以在U2F令牌和服务器之间“看到它”(通过SSL,因为https是必需的)。然后,公钥存储在服务器端,在以下身份验证过程中不再发送。如果您想查看U2F令牌公钥(及其证书)的外观,可以转到并在注册后单击“技术数据”按钮。我尝试过这个网站,基本上这个网站是由u2f的javascript控制的,但我在Java实现中找不到确切的方法来获取公钥或公钥,当服务器发送挑战时,当用户按下Yubikey Neo的按钮时,它将被签名。据我所知,在客户端,没有现有的Java FIDO U2F Java实现(不是不可能的,只是还没有实现)。当我按下Yubikey Neo的按钮时,是否可以获得公钥?对于每个“标识”,都有一对密钥(公钥和私钥)。每个公钥在注册(每个身份创建)期间发送到服务器,这是唯一一次您可以在U2F令牌和服务器之间“看到它”(通过SSL,因为https是必需的)。然后,公钥存储在服务器端,在以下身份验证过程中不再发送。如果您想查看U2F令牌公钥(及其证书)的外观,可以转到并在注册后单击“技术数据”按钮。我尝试过这个网站,基本上这个网站是由u2f的javascript控制的,但我在Java实现中找不到确切的方法来获取公钥或公钥,当服务器发送挑战时,当用户按下Yubikey Neo的按钮时,它将被签名。据我所知,在客户端,没有现有的Java FIDO U2F Java实现(并非不可能,只是还没有实现)。