
Приложение Vault для бейджа DC34
vault для DC34[!WARNING] Загрузка собственной прошивки на ваш бейдж приведёт к стиранию ключа лёгкого шифрования и переведёт бейдж в режим разработчика.
УВЕДОМЛЕНИЕ: этот репозиторий теперь осиротел и вскоре будет заархивирован, так как он объединён в xous-core. Он существовал в репозитории bunnie на GitHub только потому, что должен был быть приватным до конференции; теперь, когда он стал публичным, он будет поддерживаться в составе xous-core. Пожалуйста, направляйте все будущие PR в xous-core. PR с Tetris со временем будет перенесён как отдельное приложение, поэтому репозиторий останется активным, пока эта задача не будет выполнена.
Это приложение vault, адаптированное для Defcon34.
Оно обеспечивает интерактивность бейджа во время конференции, а именно настройку подсветки путём сканирования зашифрованных QR-кодов между бейджами.
В коде здесь спрятано несколько пасхальных яиц, если вам захочется их поискать, и, возможно, даже флаг, который можно захватить, если поискать достаточно усердно.
Предполагается следующая структура каталогов:
.
├── dc34-api
├── dc34-console
├── dc34-vault
└── xous-core
И что эти команды выполняются изнутри каталога xous-core. Предварительные требования:
cargo xtask install-toolkit внутри репозитория 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
Когда основной модуль соединён с носителем бейджа, модуль по умолчанию переходит в «конференц-режим», который показывает логотип Defcon, чередующийся с изображением по вашему выбору, если вы загрузите его с помощью https://github.com/bunnie/dc34-image.
Вы можете «смешивать» световые узоры с другими бейджами, сканируя QR-коды. Световые узоры зашифрованы с использованием общего ключа, разделяемого всей аудиторией — если вы сможете извлечь этот ключ, то фактически сможете стать «сидером» для произвольных световых узоров. Однако изначально каждый бейдж имеет ограниченную цветовую гамму, и единственный способ сделать ваш бейдж более красочным — взаимодействовать с тем, у кого есть нужные вам цвета.
Взаимодействие происходит следующим образом:
Более подробную информацию о криптографическом обмене см. в defcon_scheme.md.
Текущий план — утечка части общего ключа, чтобы любой желающий продемонстрировать свой мощный ASIC-взломщик мог попробовать подобрать ключ перебором. Если к концу выставки никто не подберёт или не извлечёт ключ, будет утечка достаточного количества битов, чтобы перебор стал возможен на высокопроизводительном настольном GPU за один день усилий.
После того как вы покинете конференцию, вы можете отсоединить прозрачный пластиковый основной модуль, выкрутив два винта на задней стороне модуля. В комплект бейджа входят пара запасных винтов и силиконовая заглушка для герметизации отверстий, оставшихся после отсоединения от носителя бейджа.
Отсоединив модуль, вы можете подключить бейдж к компьютеру через USB и использовать его как 2FA-токен (FIDO2). Он также поддерживает хранение TOTP и паролей в открытом виде путём сканирования QR-кодов. QR-коды генерируются установкой этого расширения для браузера. QR-коды кодируют текущее время. Поскольку устройство не имеет внутренней батареи, вам нужно будет отсканировать один из этих QR-кодов при подключении устройства, чтобы установить текущее время, если вы планируете использовать функцию TOTP.
Получите обновления прошивки по адресу https://ci.betrusted.io/releases/latest/baochip/dc34-badge/latest.zip. Zip-файл необходимо распаковать в три составных файла (xous.uf2, swap.uf2, loader.uf2) перед копированием на устройство!
Для выполнения обновления:
Этот последний шаг загрузки необходим для сброса частично записанных секторов на диск; выключение устройства без загрузки может привести к потере части последнего сектора в зависимости от ОС.