アップデート一覧に戻る
UpdatedSep 3, 2026

dc34-vault — Updated!

DC34バッジ用のVaultアプリ

共有

DC34 vault アプリケーション

[!WARNING] バッジに独自のファームウェアを書き込むと、ライト暗号化キーが消去され、バッジが開発者モードになります。

注意: このリポジトリは現在孤立しており、まもなくアーカイブされます。xous-core に統合されたためです。このリポジトリは、カンファレンス前に非公開にする必要があったため、bunnie の GitHub リポジトリにのみ存在していました。現在は公開されているため、xous-core の一部として保守されます。今後の PR はすべて xous-core に送ってください。Tetris PR は最終的に別のアプリとして移行される予定なので、その To-Do が完了するまでこのリポジトリはアクティブのままです。

これは、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 コードをスキャンすることで、他のバッジとライトパターンを「ミックス」できます。ライトパターンは、全人口で共有される共通キーを使用して暗号化されています。そのキーを抽出できれば、事実上、任意のライトパターンの「シーダー」になることができます。ただし、最初はすべてのバッジの色域が限られており、バッジをよりカラフルにする唯一の方法は、希望する色を持っている人とインタラクションすることです。

インタラクションは次のように進行します:

  1. 左または右のボタンを押します。ノンスを明らかにする QR コードが表示されます。
  2. ライトカラーの「ドナー」に、相手のバッジの中央ボタンを押してあなたの QR コードをスキャンするよう依頼します。
  3. ドナーのバッジに表示された QR コードをスキャンします。
  4. 新しいライトパターンを受け入れるか拒否します。

暗号化交換の詳細については、defcon_scheme.md を参照してください。

現在の計画では、共有キーの一部をリークし、自慢の ASIC クラッカーを披露したい人がキーのブルートフォースに挑戦できるようにすることです。ショー終了時までに誰もキーをブルートフォースまたは抽出していない場合は、ハイエンドのデスクトップ GPU と 1 日の労力でブルートフォースが実行可能になる程度のビットがリークされます。

トークンモード

カンファレンスを離れたら、モジュール背面の 2 本のネジを外して透明なプラスチック製コアモジュールを取り外せます。バッジキットには、バッジキャリアから取り外した際に残る穴を塞ぐための交換用ネジとシリコンキャップが同梱されています。

このように取り外したら、バッジを USB 経由でコンピュータに接続し、2FA (FIDO2) トークンとして使用できます。また、QR コードをスキャンして TOTP と平文パスワードの保存もサポートしています。QR コードは、このブラウザ拡張機能 をインストールして生成します。QR コードは現在時刻をエンコードします。デバイスには内部バッテリーがないため、TOTP 機能を使用する予定がある場合は、デバイスを接続したときにこれらの QR コードのいずれかをスキャンして現在時刻を設定する必要があります。

アップデート

ファームウェアのアップデートは https://ci.betrusted.io/releases/latest/baochip/dc34-badge/latest.zip から入手してください。zip ファイルは、デバイスにコピーする前に 3 つの構成ファイル (xous.uf2、swap.uf2、loader.uf2) に解凍する必要があります!

アップデートを実行するには:

  1. モジュールをコンピュータに接続する際に、任意のボタンを押し続けます。これにより、デバイスが USB マスストレージデバイスとして認識されます。
  2. loader.uf2、xous.uf2、swap.uf2 ファイルをデバイスにコピーします。
  3. Linux を使用している場合は、必ずドライブをアンマウントして、キャッシュされたファイルが実際にデバイスに書き込まれるようにしてください。
  4. 任意のボタンを押してデバイスを起動します。

この最後の起動ステップは、部分的に書き込まれたセクタをディスクにフラッシュするために必要です。起動せずにデバイスの電源を切ると、OS によっては最後のセクタの一部が失われる可能性があります。

カテゴリ