Как получить открытый и закрытый ключ токена U2F (например, Yubikey Neo) в Java
Я пытаюсь создать приложение, которое может извлечь открытый и закрытый ключ из токена U2F, такого как Yubikey Neo на языке Java. Я попытался использовать простой Сканер в консоли, чтобы получить что-нибудь от Yubikey Neo, но это не сработало бы, так как не было бы напечатано (возможно, из-за формата), не так, как OTP, который будет распечатан в Блокноте, так что это может быть захвачен читателем.
Я знаю, что, как и Yubico, он предлагает только реализацию в Javascript, которая способна извлекать открытый ключ, когда пользователь касается кнопки токена U2F, но до сих пор я не нашел ни одной библиотеки в Java, которая могла бы это сделать. Есть ли каким-то образом я мог получить открытый и закрытый ключ от токена U2F?
1 ответ
Краткий ответ: Вы не можете извлечь приватные ключи.
U2F основан на криптографии с открытым ключом (асимметричная криптография). Закрытые ключи никогда не покидают токены U2F и используются только внутри токенов (внутренним процессором, обычно встроенной смарт-картой) для подписи случайных вызовов сервера.
См. Упрощенную схему аутентификации U2F здесь
Используя криптографию с открытым ключом, FIDO U2F намного более безопасен, чем OTP / TOTP.
Больше информации о FIDO U2F:
http://www.slideshare.net/CloudIDSummit/cis-2015b-fido-u2-f-in-10-minutes-cis-2015