
dc34-vault — Updated!
DC34 배지용 Vault 앱
DC34 vault 애플리케이션
[!WARNING] 배지에 직접 펌웨어를 로드하면 경량 암호화 키가 삭제되고 배지가 개발자 모드로 전환됩니다.
공지: 이 저장소는 현재 고아 상태이며 곧 보관될 예정입니다. xous-core에 병합되었기 때문입니다. 이 저장소는 컨퍼런스 전에 비공개로 유지해야 했기 때문에 bunnie GitHub 저장소에만 존재했습니다. 이제 공개되었으므로 xous-core의 일부로 유지 관리됩니다. 향후 모든 PR은 xous-core로 보내주시기 바랍니다. Tetris PR은 결국 별도의 앱으로 마이그레이션될 예정이므로, 해당 작업이 완료될 때까지 이 저장소는 활성 상태로 유지됩니다.
Defcon34용으로 커스터마이즈된 vault 애플리케이션입니다.
컨퍼런스 내 배지 상호작용 기능을 제공합니다. 즉, 배지 간에 암호화된 QR 코드를 스캔하여 조명을 커스터마이즈하는 기능입니다.
코드 속에 몇 가지 이스터 에그가 숨겨져 있습니다. 찾아보시고 싶다면 말이죠. 충분히 열심히 찾으면 잡을 수 있는 플래그도 있을지도 모릅니다.
빌드
다음 디렉토리 구조를 가정합니다:
.
├── dc34-api
├── dc34-console
├── dc34-vault
└── xous-core
그리고 이 명령들은 xous-core 디렉토리 내부에서 실행된다고 가정합니다. 사전 요구 사항:
- 최신 Rust
xous-core저장소 내부에서cargo xtask install-toolkit실행
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
컨퍼런스 모드
코어 모듈이 배지 캐리어에 결합되면 모듈은 기본적으로 "컨퍼런스" 모드로 전환되며, Defcon 로고가 표시되고 https://github.com/bunnie/dc34-image 를 사용하여 업로드한 이미지가 번갈아 표시됩니다.
QR 코드를 스캔하여 다른 배지와 조명 패턴을 "믹스"할 수 있습니다. 조명 패턴은 전체 인구에 걸쳐 공유되는 공통 키로 암호화됩니다. 이 키를 추출할 수 있다면 임의의 조명 패턴에 대한 "시더(seeder)"가 될 수 있습니다. 그러나 처음에는 모든 배지의 색상 범위가 제한되어 있으며, 배지를 더 화려하게 만드는 유일한 방법은 원하는 색상을 가진 사람과 상호작용하는 것입니다.
상호작용은 다음과 같이 진행됩니다:
- 왼쪽 또는 오른쪽 버튼을 누릅니다. 그러면 nonce를 공개하는 QR 코드가 표시됩니다.
- 조명 색상 "기증자"에게 자신의 배지에서 가운데 버튼을 눌러 QR 코드를 스캔하도록 요청합니다.
- 기증자 배지에 표시된 결과 QR 코드를 스캔합니다.
- 새 조명 패턴을 수락하거나 거부합니다.
암호화 교환에 대한 자세한 내용은 defcon_scheme.md를 참조하십시오.
현재 계획은 공유 키의 일부를 유출하여, 자신의 강력한 ASIC 크래커를 자랑하고 싶은 사람이 키를 무차별 대입으로 공격할 수 있게 하는 것입니다. 쇼가 끝날 때까지 아무도 키를 무차별 대입하거나 추출하지 못했다면, 고급 데스크톱 GPU와 하루 정도의 노력으로 무차별 대입이 가능할 만큼 충분한 비트가 유출될 것입니다.
토큰 모드
컨퍼런스를 떠난 후에는 모듈 뒷면의 나사 두 개를 풀어 투명 플라스틱 코어 모듈을 분리할 수 있습니다. 배지 키트에는 배지 캐리어에서 분리할 때 생기는 구멍을 막기 위한 교체용 나사 한 쌍과 실리콘 캡이 포함되어 있습니다.
이렇게 분리한 후 USB로 배지를 컴퓨터에 연결하여 2FA(FIDO2) 토큰으로 사용할 수 있습니다. 또한 QR 코드를 스캔하여 TOTP와 일반 텍스트 비밀번호를 저장하는 것도 지원합니다. QR 코드는 이 브라우저 확장 프로그램을 설치하여 생성합니다. QR 코드는 현재 시간을 인코딩합니다. 장치에는 내부 배터리가 없으므로 TOTP 기능을 사용하려면 장치를 연결할 때 QR 코드 중 하나를 스캔하여 현재 시간을 설정해야 합니다.
업데이트
펌웨어 업데이트는 https://ci.betrusted.io/releases/latest/baochip/dc34-badge/latest.zip에서 받을 수 있습니다. zip 파일은 장치에 복사하기 전에 세 개의 구성 파일(xous.uf2, swap.uf2, loader.uf2)로 압축을 풀어야 합니다!
업데이트를 수행하려면:
- 모듈을 컴퓨터에 연결하는 동안 아무 버튼이나 길게 누릅니다. 그러면 장치가 USB 대용량 저장 장치로 인식됩니다.
- loader.uf2, xous.uf2, swap.uf2 파일을 장치에 복사합니다.
- Linux를 사용 중이라면 드라이브를 마운트 해제하여 캐시된 파일이 실제로 장치에 기록되도록 해야 합니다.
- 아무 버튼이나 눌러 장치를 부팅합니다.
이 마지막 부팅 단계는 부분적으로 쓰여진 섹터를 디스크에 플러시하는 데 필요합니다. 부팅하지 않고 장치를 끄면 OS에 따라 마지막 섹터의 일부가 누락될 수 있습니다.