
La casa dell'ingegneria del firmware del progetto di badge elettronico Cryptohack.
Un portafoglio hardware crittografico semi-sicuro e adatto agli hacker sulla piattaforma hip-badge ESP32-C3 con l'elemento sicuro ATECC608B integrato. Firma transazioni per BTC, ETH (+ 8 catene EVM), SOL e XMR con una schermata SIGN sul dispositivo che l'utente deve approvare prima che qualsiasi chiave privata tocchi il messaggio.
firmware/badge/ runtime wallet
firmware/factory/ one-shot provisioning firmware + host driver
ref/ gitignored — clone upstream schematics here
⚠ Flasha PRIMA il firmware di fabbrica su un badge nuovo. Il wallet runtime si aspetta che l'ATECC608B sia stato provisionato (chiavi degli slot caricate, config-zone configurata) e non sbloccherà il proprio seed avvolto nel PIN senza questo passaggio. L'ordine è: build factory → flash factory → esegui il driver host (
factory_provision.py) → build runtime → flash runtime. Salta il passaggio factory e otterrai un errore di inizializzazione SE e un avvio bloccato alla splash. Vedidocs/TOOLS.md§ Factory provisioning per la guida al driver host.
# Activate ESP-IDF in this shell (see firmware/BUILDING.md for install)
. ~/esp/esp-idf/export.sh # or export.ps1 on Windows
# 1. Factory provision (one-time per badge)
cd firmware/factory
idf.py -B build -p $PORT build flash monitor
# (in another shell) cd firmware/factory/tools && \
# uv run --with pyserial --with cbor2 factory_provision.py --port $PORT
# 2. Build + flash the runtime (do this AFTER factory)
cd ../badge
export SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.dev"
idf.py -B build_dev -p $PORT build flash monitor
Procedura completa (Linux / macOS / Windows): firmware/BUILDING.md.
Per provisionare un badge nuovo o riprodurre la suite di test: docs/TOOLS.md.
| Leggi questo | Se vuoi… |
|---|---|
firmware/BUILDING.md | Installare ESP-IDF e flashare il dispositivo per la prima volta |
docs/ARCHITECTURE.md | Capire come funziona il wallet — componenti, zone di fiducia, flusso di firma |
docs/TOOLS.md | Eseguire il driver host di provisioning di fabbrica o i test di firma per singola moneta |
docs/VERIFY.md | Eseguire la verifica completa prima / dopo modifiche sostanziali |
docs/PLAN.md | Leggere la specifica di sicurezza esaustiva — cerimonia KEK, mappe degli slot, flussi di recupero |
docs/CODE_STYLE.md | Inviare una PR conforme alle convenzioni del progetto |
CONTRIBUTING.md | Aprire una PR (branching, commit, aspettative di revisione) |
TODO.md | Trovare qualcosa su cui lavorare o controllare cosa è già stato rilasciato |
CLAUDE.md | Informare un assistente AI (Claude, Cursor, ecc.) sul progetto |
| Variante | eFuse | Utilizzo | Riflashabile? |
|---|---|---|---|
dev | virtuale (flash) | iterazione quotidiana | sì, sempre |
stage | reale, sbloccato | test end-to-end sul silicio | sì, finché non lo blocchi |
prod | reale, bloccato | dispositivo spedito, Secure Boot V2 | no |
Mista:
firmware/badge/components/trezor-crypto/ — MIT (fornito da Trezor)firmware/badge/components/tinycbor/ — MIT (Intel)firmware/badge/components/qrcodegen/ — MIT (Project Nayuki)firmware/badge/main/ (estensione di hip-badge blinkenlights/) — GPL-2.0-or-later