
dc34-vault — Updated!
Aplicativo Vault para o crachá DC34
Aplicação vault do DC34
[!WARNING] Carregar o seu próprio firmware no seu badge apagará a chave de criptografia de luz e fará com que o seu badge entre em modo de desenvolvedor.
AVISO: este repositório agora está órfão e será arquivado em breve, pois foi incorporado ao xous-core. Ele só existia no repositório GitHub do bunnie porque precisava ser privado antes da conferência; agora que é público, será mantido como parte do xous-core. Por favor, direcione todos os futuros PRs para o xous-core. O PR do Tetris será eventualmente migrado como um aplicativo separado, então o repositório permanecerá ativo até que essa tarefa seja concluída.
Esta é a aplicação vault personalizada para o Defcon34.
Ela fornece a interatividade do badge durante a conferência, ou seja, personalizar as luzes por meio da leitura de códigos QR criptografados entre badges.
Há alguns easter eggs escondidos no código aqui, se você se interessar em procurá-los, e talvez até uma flag para capturar se você procurar com bastante atenção.
Compilação
Assume a seguinte estrutura de diretórios:
.
├── dc34-api
├── dc34-console
├── dc34-vault
└── xous-core
E que esses comandos sejam executados de dentro do diretório xous-core. Pré-requisitos:
- Rust mais recente
- Execute
cargo xtask install-toolkitdentro do repositórioxous-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
Modo Conferência
Quando o módulo principal é acoplado ao carrier do badge, o módulo assume por padrão o modo "conferência", que exibe o logotipo do Defcon, alternando com uma imagem de sua escolha se você a enviar usando https://github.com/bunnie/dc34-image.
Você pode "misturar" padrões de luz com outros badges lendo códigos QR. Os padrões de luz são criptografados usando uma chave comum e compartilhada em toda a população — se você conseguir extrair essa chave, poderá efetivamente ser um "seeder" para padrões de luz arbitrários. No entanto, inicialmente cada badge tem uma gama de cores limitada, e a única maneira de tornar o seu badge mais colorido é interagir com alguém que tenha as cores que você deseja.
A interação ocorre da seguinte forma:
- Pressione o botão esquerdo ou direito. Isso exibe um código QR que revela um nonce.
- Peça ao "doador" de cores de luz para ler o seu código QR pressionando o botão do meio no badge dele.
- Leia o código QR resultante no badge do doador.
- Aceite ou rejeite o seu novo padrão de luz.
Para mais detalhes sobre a troca criptográfica, consulte defcon_scheme.md.
O plano atual é vazar uma parte da chave compartilhada, para que qualquer pessoa que queira exibir seu robusto cracker de ASIC possa tentar forçar a chave por força bruta. Se ninguém tiver forçado ou extraído a chave até o final do evento, bits suficientes serão vazados para que uma força bruta seja viável com uma GPU desktop de alto desempenho e um dia de esforço.
Modo Token
Depois de deixar a conferência, você pode destacar o módulo principal de plástico transparente removendo os dois parafusos na parte traseira do módulo. Um par de parafusos de reposição e uma tampa de silicone estão incluídos no kit do seu badge para selar os orifícios deixados pela desconexão do carrier do badge.
Uma vez destacado, você pode conectar o seu badge a um computador via USB e usá-lo como um token 2FA (FIDO2). Ele também suporta o armazenamento de TOTPs e senhas em texto simples por meio da leitura de códigos QR. Os códigos QR são gerados instalando esta extensão de navegador. Os códigos QR codificam a hora atual. Como o dispositivo não possui bateria interna, você precisará ler um desses códigos QR ao conectar o dispositivo para definir a hora atual se planeja usar a função TOTP.
Atualizações
Obtenha atualizações de firmware em https://ci.betrusted.io/releases/latest/baochip/dc34-badge/latest.zip. O arquivo zip deve ser extraído nos três arquivos constituintes (xous.uf2, swap.uf2, loader.uf2) antes de copiar para o dispositivo!
Para realizar uma atualização:
- Pressione e segure qualquer botão enquanto conecta o módulo a um computador. Isso fará com que o dispositivo seja enumerado como um dispositivo de armazenamento em massa USB.
- Copie os arquivos loader.uf2, xous.uf2 e swap.uf2 para o dispositivo.
- Se você estiver no Linux, certifique-se de desmontar a unidade para garantir que os arquivos em cache sejam realmente gravados no dispositivo.
- Pressione qualquer botão para iniciar o dispositivo.
Esta etapa final de inicialização é necessária para liberar quaisquer setores parcialmente gravados para o disco; desligar o dispositivo sem inicializar pode fazer com que uma parte do último setor desapareça, dependendo do SO.