Opensource DIY 2FA HW token

Pozdrav decentralci,

prije nego što počnemo u par rečenica da objasnim šta je 2FA ili ti dvostruka potvrda identiteta za one koji možda nisu u toku.

Dakle dvostruka potvrda identiteta je metod kojim korisnik nakon unošenja šifre mora da potvrdi svoj identitet dodatnom metodom autorizacije i time dodatno potvrde svoj identitet i poveća bezbednost ličnih podataka odnosno svog naloga na određenom sajtu.

Ako imate nalog na GitHub-u vjerovatno ste dobili e-mail u kom piše da su počeli sa uvođenjem 2FA i da morate da podesite 2FA za vaš nalog kako bi mogli i dalje da koristite njihove usluge. Za 2FA token ćemo koristi klon ST-Link-ovog V2 programatora na kom ćemo da napravimo određene izmjene tako da će on da pamti verifikacioni ključ koji ćemo da koristimo za dvostruku porvrdu identiteta.

Sa aliexpressa ćemo da poručimo minimum dva klona ST-Link-ovog programatora koji možete da kupite sa linka, da potrebna su dva komada jer ćemo sa jednim da flešujemo drugi.
Naš ST-Link 2FA token nije samo ograničen na GitHub već ga možete koristiti i na drugim sajatovima koji podržvaju Webauthn/FIDO2.

Dobro da počnemo, krenućemo od povezivanja dva ST-Link-a kako bi pomoću jednog flešovali drugi.

Host ST-Link je gornji dok je target ST-Link donji, da ne dođe do zabune :slight_smile:

Sa host ST-Link-a koji će da bude zakačen na računar preko USB-a povežite pinove na sledeći način +3,3v sa host ST-Link na 3,3v tespad targetnog ST-Linka,GND sa host ST-Link na GND tespad targetnog ST-Linka, pin SWDIO-a sa hosta ST-Link-a na SWDIO tespad targentnog ST-Link-a i na kraju povežite pin SWCLK sa host ST-Linka na SWCLK testpad targetnog ST-linka.

Zatim intalirajte sledeće programe, za debian bazirane distribucije komanda je sledeća

sudo apt install libhidapi-hidraw0 python3-hid build-essential openssl openocd gcc-arm-none-eabi

zatim je potreno da instaliramo asn1crypto

pip install --user --upgrade asn1crypto

Zatim je potrebno da kloniramo u2f git repo

git clone https://github.com/gl-sergei/u2f-token.git
cd u2f-token git submodule update --init 
cd u2f-token-master/

Zatim je potrebno da preuzmemo firmware za ST-Link sa sledećom komandom
wget https://github.com/gl-sergei/u2f-token/releases/download/v1.0/u2f-ST_DONGLE.bin
Nakon toga potrebno je da host ST-Link povežemo na računar i flašujemo targetni ST-Link sa komandom

openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c 'init' -c 'halt' -c 'flash write_image erase unlock u2f-ST_DONGLE.bin 0x08000000' -c 'exit'

Nakon toga potrebno je da instaliram nephodne dodatke

pip3 install -r requirements.txt --user

Sledeći korak bi bio da generišemo ključ za ST-Link 2FA

cd src/cert
./gen.sh

Nakon toga treba da odlemimo žice sa test-pado-ova targetnog ST-Link-a i povežemo ga preko USB-a na računar i pokrenemo sledeću komandu

python3 certtool init

kao output bi trebali da vidite nešto ovako

Trying to initialize device HIDDevice:
    USB_16d0_0e90_14100000 | 16d0:e90 | unknown | U2F-token (STM32) | 1.00
    release_number: 256
    usage_page: 61904
    usage: 1
    interface_number: -1
Success

prije nego što napravimo mjesto za dugme na crnoj plastici na uređaju potreban je mali hardwerski mod kako bi nam radilo dugme koje ćemo kasnije da zalemimo na dva pina, dakle treba samo da odlemimo pull-down otpornik R11 to bi izledalo ovako

E sada je još potrebno da dodamo dugmence koje ćemo da pritisnemo i potvrdimo identitet, ja sam lemilicom napravio mjesto u crnoj plastici na dnu uređaja i da sa dugmetom povezao SWCLK i GND pinove, dugme bi izgledalo ovako


i to je to sada imate opensource 2FA hadware token koji možete da testirate na adresi Yubico demo website

9 Likes

Svaka cast! Treba ovo kopiramo mozda i na wiki.dmz.rs. Moze svako tamo da stavlja ko je napravio nalog preko naseg sajta dmz.rs, samo izaberite LDAP za login method.

2 Likes