2016-08-22 83 views
0

我正在嘗試創建一個應用程序,可以從Java語言中的U2F令牌(如Yubikey Neo)檢索公鑰和私鑰。我嘗試在控制檯中使用一個簡單的掃描儀來獲取Yubikey Neo中的任何內容,但它不起作用,因爲它不會被打印(可能是因爲格式),而不像OTP那樣會打印在記事本中,所以它可以是被讀者抓住。如何在Java中獲取U2F令牌(例如Yubikey Neo)的公鑰和私鑰

我知道像Yubico它只提供在Javascript中的實現,當用戶觸摸U2F標記的按鈕時能夠檢索公鑰,但直到現在我還沒有找到能夠做到的任何Java庫那。有什麼我可以從U2F令牌獲得公鑰和私鑰?

回答

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

+0

有反正我能得到的公共密鑰,而不是當我把我的Yubikey新的按鈕? –

+0

對於每個「身份」,都有一對密鑰(公共和私人密鑰)。 在註冊期間(每個身份創建),每個公鑰都被髮送到服務器,這是您唯一一次能夠在U2F令牌和服務器之間傳輸(通過SSL,因爲https是強制性的)。然後將公鑰存儲在服務器端,並在以下認證期間不再發送。 –

+0

如果您想查看U2F令牌公鑰(及其證書)的外觀,可以訪問https://demo.yubico.com/u2f?tab=register,註冊後點擊「技術數據」按鈕。 –