Skip to content

v0.1.9 (Android versionCode 37)

Choose a tag to compare

@CypherBoxLLC CypherBoxLLC released this 01 Sep 06:53
· 61 commits to main since this release
v0.1.9-vc37
c3ef476

Cypher Box 0.1.9 (Android versionCode 37, iOS build 20).

Vault seed generation

Dice entropy

  • Dice rolls are now hashed together with the device CSPRNG before they become a
    seed. The optional dice screen previously built the recovery phrase from the
    taps alone. That screen counts bits pushed rather than randomness, and a face
    maps to the same value every time, so repeatedly tapping one face satisfied the
    128-bit gate with zero entropy and produced a publicly known BIP39 test vector.
    Tapping one face was also the fastest way to fill the counter.
  • Safe if either source is sound, rather than only if the dice are. An attacker
    who fully controlled the device RNG still could not predict a seed without the
    rolls.
  • If you tapped only one face over and over, or just alternated between two,
    Save is refused. A real die does not land like that.
  • The screen now says what a real roll is, and that the phone's randomness is
    always added as well.

Verifiable dice

  • Collected dice entropy now reproduces byte for byte in Ian Coleman's BIP39
    tool. The bit scheme was already his; only the face labelling differed, since
    he treats die 6 as base-6 digit 0 and we used the 0-based index.
  • Rolls past the target are refused, so the total cannot drift out of the range
    where his 32-bit rounding and our 8-bit rounding select the same bits.
  • After rolling, the screen shows the rolls, the device randomness, and the
    result, so the whole derivation can be checked by hand.
  • The guidance says to check with practice rolls, on a separate computer that is
    offline. Typing real rolls into a website would give away one of the two
    sources protecting that key.

Bark Vault (Ark)

  • The exit panel reports per-transaction progress during broadcasting, so a
    phase that legitimately sits still for an hour is no longer indistinguishable
    from a wedged one. Every tree level must confirm before the next can be
    relayed, so slow is normal there.
  • Android: a notice during an exit that battery must be set to Unrestricted. The
    exit drive is foreground-only, so on a device that is not battery-exempt the
    OS suspends the app when the screen goes off and the exit stops rather than
    slows. Samsung's "never sleeping apps" list is a different list and does not
    help.

Installing outside Google Play

cypherbox-0.1.9-vc37.apk is for users who do not use Google Play. It is a
universal APK, arm64-v8a, signed with our upload key.

The Play build is re-signed by Google under Play App Signing, so the two carry
different signatures. This APK therefore cannot be installed over an
existing Play install, and moving between them means uninstalling first, which
on a wallet means restoring from your backup. Pick one and stay on it.

  • APK SHA-256: b26cce5fe2a6aa135b137826f21a36840bac05ab9498284471837189b435dd0d
  • Signer certificate SHA-256: F0:85:82:11:0E:05:7A:F7:CA:A1:80:5A:2F:47:0D:73:12:F3:AF:6D:62:3A:A2:6A:AD:28:6C:2E:23:CE:3F:46

Verify before installing:

shasum -a 256 cypherbox-0.1.9-vc37.apk
apksigner verify --print-certs cypherbox-0.1.9-vc37.apk

Verification

  • Source commit: c3ef476414194069446c14eb57e2ea71a99da5f4
  • Tag: v0.1.9-vc37 (GPG-signed)
  • Reproducible build verified across two independent CI runs: build-verify
    (run 33449685399) and android-release (run 33472306370) each produced the
    no-secrets AAB and the two are byte-identical
    (0c0f3dc018a28ba6b9cb5d0e3c97cfab7bbe8a4d24b7dd211467e9a735646164).
  • Unsigned real-config AAB SHA-256: f8942e2852875866937b798563fec2487c67ee0e9651049e50c13830eee3183a
  • CI-reference (no-secrets) AAB SHA-256: 0c0f3dc018a28ba6b9cb5d0e3c97cfab7bbe8a4d24b7dd211467e9a735646164
  • The real-config and CI-reference builds were asserted to differ only in the
    four config-injection entries.
  • Build instructions: see BUILD.md. The Play binary is signed locally with a
    hardware-protected key; the CI artifact is unsigned and never shipped.