MCPcopy Index your code
hub / github.com/conorpp/u2f-zero

github.com/conorpp/u2f-zero @1.01_unlimited_keys

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.01_unlimited_keys ↗ · + Follow
289 symbols 772 edges 45 files 69 documented · 24%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

U2F Zero

U2F Zero is an open source U2F token for 2 factor authentication. It is implemented securely. It works with Google accounts, Github, Duo, and anything else supporting U2F. The latest version uses key derivation and has no limit on registrations.

You can easily build your own. You just need to order the 8 SMT parts, $1.13-$3.5 per PCB, and programmer. It ends up being $35 for programmer and ~$5/board. The token should be durable enough to survive on a key chain for years, even after going through the wash.

Check out the wiki for more on how to build your own.

Security Overview

The security level is about the same as a modern car key. Any secret information cannot be read or duplicated. A true random number generator is used to create unpredictable keys.

However, side channel leakage is an unsolved problem in industry and academia. So for well equipped adversaries that can make targetted attacks and get physical access, secret information leakage is possible. Any other hardware token that claims it's "impenetrable" or otherwise totally secure is still vulnerable to physical side channels and it's important to acknowledge. However, most people don't worry about targeted attacks from well equipped adversaries.

For more information about U2F Zero's secure implementation and the problem of side channels, check out the wiki.

License

Everything is open source and licensed under the Simplified BSD License.

Core symbols most depended-on inside this repo

u2f_prints
called by 68
firmware/src/bsp.c
atecc_send_recv
called by 41
firmware/src/atecc508a.c
USB_SetIndex
called by 28
firmware/lib/efm8ub1/peripheralDrivers/src/usb_0.c
dump_hex
called by 28
firmware/src/bsp.c
u2f_hid_set_len
called by 17
firmware/src/u2f_hid.c
u2f_response_writeback
called by 16
firmware/src/u2f_atecc.c
u2f_sha256_update
called by 16
firmware/src/u2f_atecc.c
stamp_error
called by 13
firmware/src/u2f_hid.c

Shape

Function 252
Class 37

Languages

C89%
Python6%
C++5%

Modules by API surface

firmware/src/atecc508a.c26 symbols
firmware/lib/efm8ub1/peripheralDrivers/src/usb_0.c24 symbols
firmware/src/u2f_hid.c22 symbols
firmware/lib/efm8_usb/src/efm8_usbdep.c22 symbols
firmware/src/u2f_atecc.c21 symbols
firmware/src/InitDevice.c21 symbols
tools/u2f_zero_client/client.py18 symbols
firmware/src/bsp.c17 symbols
firmware/lib/efm8_usb/src/efm8_usbd.c16 symbols
firmware/tests/tests.c12 symbols
firmware/lib/efm8_usb/src/efm8_usbdch9.c12 symbols
firmware/src/main.c11 symbols

For agents

$ claude mcp add u2f-zero \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact