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
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