
Le foyer d'ingénierie du firmware du projet de badge électronique Cryptohack.
Un portefeuille crypto matériel semi-sécurisé et adapté aux hackers, sur la plateforme ESP32-C3 hip-badge avec l'élément sécurisé ATECC608B intégré. Il signe des transactions pour BTC, ETH (+ 8 chaînes EVM), SOL et XMR avec un écran SIGN sur l'appareil que l'utilisateur doit approuver avant qu'une clé privée ne touche le message.
firmware/badge/ runtime wallet
firmware/factory/ one-shot provisioning firmware + host driver
ref/ gitignored — clone upstream schematics here
⚠ Flashez d'abord le firmware d'usine sur un badge neuf. Le portefeuille d'exécution attend que l'ATECC608B soit provisionné (clés de slot chargées, zone de configuration configurée) et ne déverrouillera pas sa graine encapsulée par PIN sans cela. L'ordre est : compiler l'usine → flasher l'usine → exécuter le pilote hôte (
factory_provision.py) → compiler l'exécution → flasher l'exécution. Sautez l'étape d'usine et vous obtiendrez un échec d'initialisation du SE et un démarrage bloqué sur l'écran de démarrage. Voirdocs/TOOLS.md§ Factory provisioning pour le guide du pilote hôte.
# 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
Procédure complète (Linux / macOS / Windows) : firmware/BUILDING.md.
Pour provisionner un badge neuf ou reproduire la suite de tests : docs/TOOLS.md.
| Lire ceci | Si vous voulez… |
|---|---|
firmware/BUILDING.md | Installer ESP-IDF et flasher l'appareil pour la première fois |
docs/ARCHITECTURE.md | Comprendre le fonctionnement du portefeuille — composants, zones de confiance, flux de signature |
docs/TOOLS.md | Exécuter le pilote hôte de provisionnement d'usine ou les tests de signature par coin |
docs/VERIFY.md | Lancer la passe de vérification avant / après des modifications substantielles |
docs/PLAN.md | Lire la spécification de sécurité exhaustive — cérémonie KEK, cartes d'emplacements, flux de récupération |
docs/CODE_STYLE.md | Soumettre une PR conforme aux conventions du projet |
CONTRIBUTING.md | Ouvrir une PR (branches, commits, attentes de revue) |
TODO.md | Trouver quelque chose sur quoi travailler ou vérifier ce qui est déjà livré |
CLAUDE.md | Briefer un assistant IA (Claude, Cursor, etc.) sur le projet |
| Variante | eFuse | Usage | Reflashable ? |
|---|---|---|---|
dev | virtuel (flash) | itération quotidienne | oui, toujours |
stage | réel, déverrouillé | test silicium de bout en bout | oui, jusqu'au verrouillage |
prod | réel, verrouillé | appareil livré, Secure Boot V2 | non |
Mixte :
firmware/badge/components/trezor-crypto/ — MIT (vendorisé depuis Trezor)firmware/badge/components/tinycbor/ — MIT (Intel)firmware/badge/components/qrcodegen/ — MIT (Project Nayuki)firmware/badge/main/ (extension de hip-badge blinkenlights/) — GPL-2.0-or-later