Exista numeroase solutii de password manager, dar majoritatea implica stocarea parolelor undeva online, intr-un cloud. Parolele rar sunt “cu adevarat” criptate deci, in cazul unui leak de date, ele pot fi expuse publicului. Proiectul are ca scop realizarea unui Hardware Password Manager care sa ofere o interfata sigura si simpla. El se va conecta la calculator si, de acolo, utilizatorul va interactiona doar cu programul care stie sa comunice cu acest device.
Urmatoarele componente vor fi necesare:
NOTA Lista este deocamdata orientativa.
Pentru debugging pe partea de hardware, voi folosi un logic analyzer.
Urmatoarea este schema electrica:
Codul pentru microcontroller este scris in C, compilat cu avr-gcc
si scris cu avrdude
si programatorul ATMEL-ICE.
Codul pentru aplicatia de linux va fi scris intr-un limbaj high-level, de genul Python, pentru ca operatia lui nu este dificila (implica doar calluri de read
si write
pe serial device).
Partea software contine urmatoarele module:
spi.h
) faciliteaza transferul de date prin SPI catre memoria flash.flash.h
) abstractizeaza accesul la memoria flash folosindu-se de modulul SPI si de instructiunile suportate de memorie.mem_hdr.h
) abstractizeaza structura de date prin care se stocheaza indexul de parole in memoria flash intr-o maniera care salveaza spatiu de stocare.io_util.h
) si LCD (lcd.h
) ajuta la folosirea LCD-ului HD44780 intr-o maniera transparenta, folosind printf
.db.h
) este inca un layer de abstractizare peste SPI, Flash si MemHdr si expune functionalitati high-level de initializare, adaugare, stergere si citire din indexul de parole.Functionalitatea de comunicare prin USB cu un computer si cea de criptare a datelor vor fi adaugate intr-o versiune ulterioara. In acest moment, partea hardware este pregatita pentru a scrie, citi, sterge si lista parole din memoria flash.
Device-ul suporta chiar si hot-swap al memoriei flash. Cand aceasta se schimba, ea va fi initializata fara ca macar sa fie nevoie de restartarea microcontrollerului.
Pentru a prezenta un demo al produsului, microcontrollerul a fost programat sa scrie doua parole, iar, in alta iteratie, sa le citeasca din memorie si sa le afiseze pe display.
Mai jos se poate vedea ruland iteratia in care parolele sunt citite cu succes din memorie. Este au labelurile “foo” respectiv “bar”, iar parola insasi apare dupa ”:”.
Device-ul isi poate atinge toate functionalitatile prezentate in introducerea acestui document. Implementarea a durat mai mult decat era anticipat, deci criptarea si comunicarea prin USB cu USART vor veni intr-o versiune ulterioara a proiectului.
Ca directii viitoare, imi doresc sa comand componente SOIC si sa pun dispozitivul pe un PCB si intr-o carcasa astfel incat el sa poata fi folosit cu adevarat. Cu mici imbunatatiri generale atat la nivel hardware cat si software, acest lucru este posibil.
Consider ca proiectul a fost util pentru ca a dat start a ceva ce chiar poate deveni un device util.