
dc34-vault — Mis à jour !
Application Vault pour le badge DC34
Application vault pour DC34
[!WARNING] Charger votre propre firmware sur votre badge effacera la clé de chiffrement légère et fera passer votre badge en mode développeur.
AVIS : ce dépôt est désormais orphelin et sera bientôt archivé, car il a été fusionné dans xous-core. Il n'existait dans le dépôt GitHub de bunnie que parce qu'il devait rester privé avant la conférence ; maintenant qu'il est public, il sera maintenu dans le cadre de xous-core. Veuillez diriger toutes les futures pull requests vers xous-core. La PR Tetris sera éventuellement migrée en tant qu'application distincte, donc le dépôt restera actif jusqu'à ce que cette tâche soit terminée.
Il s'agit de l'application vault telle que personnalisée pour Defcon34.
Elle assure l'interactivité du badge pendant la conférence, à savoir la personnalisation des lumières en scannant des codes QR chiffrés entre les badges.
Il y a quelques easter eggs cachés dans le code, si vous prenez la peine de les chercher, et peut-être même un flag à capturer si vous cherchez assez attentivement.
Compilation
Suppose la structure de répertoires suivante :
.
├── dc34-api
├── dc34-console
├── dc34-vault
└── xous-core
Et que ces commandes sont exécutées depuis l'intérieur du répertoire xous-core. Prérequis :
- Dernière version de Rust
- Exécuter
cargo xtask install-toolkitdans le dépôtxous-core
echo "===== Building Console ====="
(
cd ../dc34-console &&
cargo build --release --target riscv32imac-unknown-xous-elf --features board-baosec --features oem-baosec-lite --features bao1x --features utralib/bao1x &&
) || {
echo "dc34-console build failed!"
exit 1
}
echo "===== Building Vault ====="
(
cd ../dc34-vault &&
cargo build --release --target riscv32imac-unknown-xous-elf --features board-baosec &&
) || {
echo "dc34-vault build failed!"
exit 1
}
cargo xtask baosec-lite ../dc34-console/target/riscv32imac-unknown-xous-elf/release/dc34-console~flash ../dc34-vault/target/riscv32imac-unknown-xous-elf/release/dc34-vault \
--no-timestamp --feature usb --kernel-feature debug-proc --no-verify
Mode Conférence
Lorsque le module central est accouplé au support du badge, le module passe par défaut en mode « conférence », qui affiche le logo Defcon, en alternance avec une image de votre choix si vous la téléversez via https://github.com/bunnie/dc34-image.
Vous pouvez « mélanger » les motifs lumineux avec d'autres badges en scannant des codes QR. Les motifs lumineux sont chiffrés à l'aide d'une clé commune partagée par toute la population — si vous parvenez à extraire cette clé, vous pouvez alors effectivement servir de « semeur » pour des motifs lumineux arbitraires. Cependant, au départ, chaque badge dispose d'une gamme de couleurs limitée, et la seule façon de rendre votre badge plus coloré est d'interagir avec quelqu'un qui possède les couleurs que vous désirez.
L'interaction se déroule comme suit :
- Appuyez sur le bouton gauche ou droit. Un code QR s'affiche, révélant un nonce.
- Demandez au « donneur » de couleur de scanner votre code QR en appuyant sur le bouton central de son badge.
- Scannez le code QR résultant sur le badge du donneur.
- Acceptez ou rejetez votre nouveau motif lumineux.
Pour plus de détails sur l'échange cryptographique, voir defcon_scheme.md.
Le plan actuel est de divulguer une partie de la clé partagée, afin que quiconque souhaite exhiber son puissant cracker ASIC puisse tenter de forcer la clé par brute force. Si personne n'a forcé ou extrait la clé d'ici la fin du salon, suffisamment de bits seront divulgués pour qu'un brute force soit réalisable avec un GPU de bureau haut de gamme et une journée d'effort.
Mode Jeton
Une fois la conférence terminée, vous pouvez détacher le module central en plastique transparent en retirant les deux vis situées à l'arrière du module. Une paire de vis de remplacement et un capuchon en silicone sont inclus dans votre kit de badge pour obturer les trous laissés par le détachement du support du badge.
Une fois détaché, vous pouvez brancher votre badge sur un ordinateur via USB et l'utiliser comme jeton 2FA (FIDO2). Il prend également en charge le stockage de TOTP et de mots de passe en clair en scannant des codes QR. Les codes QR sont générés en installant cette extension de navigateur. Les codes QR encodent l'heure actuelle. Comme l'appareil ne dispose pas de batterie interne, vous devrez scanner l'un de ces codes QR lors du branchement de l'appareil pour régler l'heure actuelle si vous prévoyez d'utiliser la fonction TOTP.
Mises à jour
Obtenez les mises à jour du firmware sur https://ci.betrusted.io/releases/latest/baochip/dc34-badge/latest.zip. Le fichier zip doit être extrait en ses trois fichiers constitutifs (xous.uf2, swap.uf2, loader.uf2) avant d'être copié sur l'appareil !
Pour effectuer une mise à jour :
- Maintenez enfoncé n'importe quel bouton tout en branchant le module sur un ordinateur. Cela fera apparaître l'appareil comme un périphérique de stockage de masse USB.
- Copiez les fichiers loader.uf2, xous.uf2 et swap.uf2 sur l'appareil.
- Si vous êtes sous Linux, veillez à démonter le lecteur pour garantir que les fichiers en cache sont réellement écrits sur l'appareil.
- Appuyez sur n'importe quel bouton pour démarrer l'appareil.
Cette dernière étape de démarrage est nécessaire pour vider les secteurs partiellement écrits sur le disque ; éteindre l'appareil sans le démarrer peut entraîner la perte d'une partie du dernier secteur, selon le système d'exploitation.