Giter Club home page Giter Club logo

nrf52-u2f's Introduction

nRF52 FIDO U2F Security Key

An Open-Source FIDO U2F implementation on nRF52 SoC

Description

nRF52-U2F is an open-source FIDO U2F implementation on nRF52 SoC. Taking advantage of Nordic’s powerful SoC nRF52840 and nRF5 SDK, it's quite easy to make a FIDO U2F key with a number of distinguishing features, such as USB HID class modules, comprehensive cryptography library with ARM® TrustZone® Cryptocell-310, reliable Device Firmware Update (DFU), etc.

The FIDO Universal 2nd Factor (U2F) is an open authentication standard that allows online services to augment the security of their existing password infrastructure by adding a strong second factor to user login.

During registration and authentication, the user presents the second factor by simply pressing a button on a FIDO U2F key. The user can use their FIDO U2F key across all online services that support the protocol leveraging built-in support in web browsers.

FIDO U2F has been successfully deployed by large scale online services, including Google, Facebook, Twitter, GitHub, GitLab, and many more.

The FIDO U2F technical specifications are hosted by the open-authentication industry consortium known as the FIDO Alliance. Learn more about U2F on https://fidoalliance.org/.

Features

  • Support Nordic nRF52840 System-on-Chip
    • ARM® Cortex®-M4F processor optimized for ultra-low power operation
    • Combining Bluetooth 5, Bluetooth Mesh, Thread, IEEE 802.15.4, ANT and 2.4GHz
    • On-chip NFC-A tag
    • On-chip USB 2.0 (Full speed) controller
    • ARM TrustZone® Cryptocell-310 security subsystem
    • 1 MB FLASH and 256 KB RAM
  • Standard FIDO U2F Protocol supported
  • Driver-less installation on all major host platforms
  • Multi-application support with concurrent application access without the need for serialization and centralized dispatching.
  • Comprehensive cryptography library with ARM® TrustZone® Cryptocell-310
  • Reliable Device Firmware Update (DFU)

How it works?

The following diagram explains the basic process flow of FIDO U2F:

Developers Wiki

We have provided developers wiki to make it a pleasure to develop with nRF52-U2F. Get what you need here or visit https://wiki.makerdiary.com/nrf52-u2f.

Supported Boards

The following developmet boards are supported well and it's easy to port to other nRF52840 boards. More boards are planned and will show up gradually over time.

Supported Services

There are a list of featured services that use FIDO U2F. More services will deploy U2F and will show up here over time.

MIT License

Copyright (c) 2018 makerdiary

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

nrf52-u2f's People

Contributors

caizelin avatar hging avatar vinsec avatar xiongyihui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nrf52-u2f's Issues

Is creating a new bootloader is necessary?

Hi,

I am not seeing any blue light when try to use it to active my google account 2 step authentication. I've done compiling the firmware and is loaded in to the device successfully. But it doesn't seems to work.
I saw there is a step to build the open bootloader. Is this step necessary to get this working?

THanks

OpenSSL commands invalid

if ! openssl list-standard-commands | grep -q "$openssl_subcommand"; then

I installed the openssl by ubuntu apt command.The OpenSSL version in my Ubuntu 18.04 is 1.1.0g.
There is no such command that named "list-standard-command" in the current version.So the shell script need to be modified.I would be glad to launch a pull request or you could do it by yourself.

Device keeps entering DFU when pressing button

Flashed with the open_bootloader and app from 0b7d8ad

The device is correctly identified:

nRF52 U2F Security Key:

  Product ID:	0x520f
  Vendor ID:	0x1915  (Nordic Semiconductor ASA)
  Version:	1.00
  Serial Number:	000000000000
  Speed:	Up to 12 Mb/sec
  Manufacturer:	Nordic Semiconductor
  Location ID:	0x14200000 / 21
  Current Available (mA):	500
  Current Required (mA):	500
  Extra Operating Current (mA):	0

But when I press the button, the red LED starts to pulse and it boots into Open DFU:

Open DFU Bootloader:

  Product ID:	0x521f
  Vendor ID:	0x1915  (Nordic Semiconductor ASA)
  Version:	1.00
  Serial Number:	E913D22507A8
  Speed:	Up to 12 Mb/sec
  Manufacturer:	Nordic Semiconductor
  Location ID:	0x14200000 / 22
  Current Available (mA):	500
  Current Required (mA):	500
  Extra Operating Current (mA):	0

Please advise.

FIDO2

Hi, have you considered or do you have any plans to extend to FIDO2?

We make Solo: http://github.com/solokeys/solo

Our firmware is based on STM32, but designed to be ported on multiple platforms. We used to have a NRF port but we no longer maintain it, mostly for the effort it requires. You can still see our old code here: https://github.com/solokeys/solo/tree/ed676151f13b2b9ae8176b3318c9f49c4897d783/targets

If you're interested, we'd be really happy to merge our works together and have you maintain the port to NRF -- you'll get FIDO2 for free and soon other features such as openpgp/ssh. Please feel free to reply here or write us directly at [email protected]. Cheers!

try to use the usb dongle with nextcould

but it do not work, is it not compatible with it? I could register the usb dongle in the admin page. But if i would login to the page again i get the message that i should do some thing with the key. Then i press the button but nothin happens. During the registration of the dongle pressing the button has worked. In the debuggin console of firefox also nothing happens.
So the question is it is a FW problem of the dongle or of the nextcloud u2f application plugin?

not able to configure for nrf52840 usb dongle

I am trying to configure the nrf52840 USB dongle. it succeeds. but on the board side, a blue LED is blinking. when I pressed the button, it did not give any response. it looks like trouble in mapping of button. Can anyone help me to solve this issue?

compile error

i run in this error during creating the firmware:

Compiling file: oberon_backend_hmac.c
Linking target: _build/nrf52840_xxaa.out
arm-none-eabi-gcc.exe: error: ../../../nrf_sdks/nRF5_SDK_15.2.0_9412b96/external/micro-ecc/nrf52hf_armgcc/armgcc/micro_ecc_lib_nrf52.a: No such file or directory
make: *** [../../../nrf_sdks/nRF5_SDK_15.2.0_9412b96/components/toolchain/gcc/Makefile.common:294: _build/nrf52840_xxaa.out] Fehler 1

How can i fix it?
If i check this directory for the file micro_ecc_lib_nrf52.a i notice that is not there.

MINGW64 ~/nrf52-u2f/boards/nrf52840-mdk-usb-dongle/armgcc
f52hf_armgcc/armgcc/2-u2f/nrf_sdks/nRF5_SDK_15.2.0_9412b96/external/micro-ecc/nrf
ext_micro_ecc_gcc_nRF5x.ld  Makefile

[Bug] Can not work on Linux Chrome.

run python-fido2 examples get-info.py and multi_device.py passed.

It's always failed to register a new key for google acount on linux chrome. timeout error.

It can be registered on linux firefox with https://webauthndemo.appspot.com

But It is mostly failed on auth for registered key(only successful once).

Can Register Into Google,Can't Login

When I try Register nrf52-u2f USB Dongle Into Google account.It sucessed.
But when I logout,try to use 2fa to login.blue light on.And Chrome brower
prompt me to push button,I push button,it useless.Can't Login.
system:windows 10 18362
chrome:80.0.3987.116 64bit

Can't remove u2f

I lost access to the DFU Mode, holding RESET while plugging the device does nothing, and pressing it while connect only resets the device. I'd like to go back to uf2 or open bootloader but it seems impossible.

About Raspberry-Pi Support

Interested in this project and would like to ask if this firmware can only support both NRF52840-MDK and nRF52840 Micro Dev Kit USB Dongle the two development boards. If I want to use Raspberry-Pi, can it be achieved?

./generate-certs.sh issue

Hi when I run ./generate-certs.sh in my terminal gives me this problem:

Can't open myserver.cnf for reading, No such file or directory
140408292447552:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:69:fopen('myserver.cnf','r')
140408292447552:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:76:

I'm doing the steps with Ubuntu 20.04.1 LTS
Captura de pantalla de 2020-08-15 04-34-37

App_uart_put

what libraries do you have to include to use app_uart_put(data) to send data to the uart ? We tried app_uart.h and app_uart_fifo.h but this doesnt work.

OpenPGP card protocol support

Hi,

Just wanted to ask, have there been any plans on implementing OpenPGP card functionality to combine both U2F functionality and OpenPGP functionality?

Nordic nrf52840 usb dongle support?

Hi,
Just wondering if anyone has built this for the nordic usb dongle (not the mdk usb dongle)? I have kind of got it working but I think I'm having trouble mapping the button.

Thanks

Using cryptocell

Great project! I like the idea to have an open-source U2F token.
Question: Are the secret keys stored in the nRF52's cryptocell?

If I understand correctly, there are two types of secret key:

  • the attestation key. In general, it might be shared between a class of authenticator devices, and certified by the device maker; in this case it could not be a cryptocell key, since I suppose keys generated by the cryptocell cannot leave it.

  • the assertion keys, which are certified by the attestation key. These are generated by the authenticator, one for each relying party. So it makes sense for these to be generated by the cryptocell.

Grateful for comments (or corrections if I have misunderstood).

Login Google with Chrome slow blink led

When i active 2-Step Verification account google, the setup just fine, but when i login with chrome the blue light is blinking slow not fast and when the button push not response

How to solve this problem?

can't open the project file in eclipse ide

hii everyone,

I'm using the Eclipse ide for build the nRF52840 fido security key project .
but i can build the project .
it may be not good setup the GNU arm eclipse plug-in.
plz, help me

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.