
Aplicación Vault para la insignia DC34
vault de DC34[!WARNING] Cargar tu propio firmware en tu badge borrará la clave de cifrado de luz y hará que tu badge entre en modo desarrollador.
AVISO: este repositorio ahora está huérfano y se archivará pronto, ya que se ha fusionado en xous-core. Solo existía en el repositorio de GitHub de bunnie porque tenía que ser privado antes de la conferencia; ahora que es público, se mantendrá como parte de xous-core. Por favor, dirija todas las futuras PR a xous-core. La PR de Tetris se migrará eventualmente como una aplicación separada, por lo que el repositorio permanecerá activo hasta que se complete esa tarea pendiente.
Esta es la aplicación vault personalizada para Defcon34.
Proporciona la interactividad del badge durante la conferencia, es decir, personalizar las luces escaneando códigos QR cifrados entre badges.
Hay un par de huevos de pascua escondidos en el código aquí, si te interesa buscarlos, y quizás incluso una bandera que capturar si miras con suficiente atención.
Se asume la siguiente estructura de directorios:
.
├── dc34-api
├── dc34-console
├── dc34-vault
└── xous-core
Y que estos comandos se ejecutan desde dentro del directorio xous-core. Requisitos previos:
cargo xtask install-toolkit dentro del repositorio xous-coreecho "===== 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
Cuando el módulo central está acoplado al portador del badge, el módulo se establece por defecto en modo "conferencia", que muestra el logotipo de Defcon, alternando con una imagen de tu elección si la subes usando https://github.com/bunnie/dc34-image.
Puedes "mezclar" patrones de luz con otros badges escaneando códigos QR. Los patrones de luz están cifrados usando una clave común y compartida en toda la población; si puedes extraer esa clave, entonces puedes ser efectivamente un "sembrador" de patrones de luz arbitrarios. Sin embargo, inicialmente cada badge tiene un rango de colores limitado, y la única forma de hacer que tu badge sea más colorido es interactuar con alguien que tenga los colores que deseas.
La interacción procede de la siguiente manera:
Para más detalles sobre el intercambio criptográfico, consulta defcon_scheme.md.
El plan actual es filtrar una parte de la clave compartida, para que cualquiera que quiera presumir de su robusto cracker ASIC pueda intentar forzar la clave por fuerza bruta. Si nadie ha forzado o extraído la clave por fuerza bruta al final del evento, se filtrarán suficientes bits para que un ataque de fuerza bruta sea factible con una GPU de escritorio de gama alta y un día de esfuerzo.
Una vez que hayas salido de la conferencia, puedes desacoplar el módulo central de plástico transparente quitando los dos tornillos en la parte trasera del módulo. Se incluye un par de tornillos de repuesto y una tapa de silicona en tu kit de badge para sellar los agujeros que quedan al desacoplarlo del portador del badge.
Una vez desacoplado, puedes conectar tu badge a una computadora mediante USB y usarlo como token 2FA (FIDO2). También admite el almacenamiento de TOTP y contraseñas en texto plano escaneando códigos QR. Los códigos QR se generan instalando esta extensión de navegador. Los códigos QR codifican la hora actual. Debido a que el dispositivo no tiene batería interna, necesitarás escanear uno de estos códigos QR cuando conectes el dispositivo para establecer la hora actual si planeas usar la función TOTP.
Obtén actualizaciones de firmware en https://ci.betrusted.io/releases/latest/baochip/dc34-badge/latest.zip. ¡El archivo zip debe extraerse en los tres archivos constituyentes (xous.uf2, swap.uf2, loader.uf2) antes de copiarlos al dispositivo!
Para realizar una actualización:
Este paso final de arranque es necesario para vaciar cualquier sector parcialmente escrito al disco; apagar el dispositivo sin arrancarlo puede provocar que una parte del último sector se pierda, dependiendo del sistema operativo.