Skip to content

v1.3.2

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Oct 14:58
v1.3.2
c593691

A security release. Everything in v1.3.1, plus the fixes below.

A compromised certificate authority is no longer trusted

Private keys for several intermediate certificate authorities under one root were reported compromised, so anyone holding them could issue certificates that look valid for any host. Keep's relay connections trust a root list that is compiled into the app rather than Android's own, so they kept trusting that root until now.

This release drops the root and rejects certificate chains that pass through the compromised intermediates. It applies to every relay connection the app makes, including the bunker's.

Switching or removing an account disconnects its bunker apps

The bunker's URL, its paired apps and their remembered approvals were shared across accounts. After an account switch, an app paired under the previous account could reach the new one, and actions it had been allowed to remember could be signed as the new account with no prompt.

Switching, removing, importing or creating an account now turns the bunker off, removes the apps paired under the previous account, rotates the bunker URL and revokes every remembered approval. If that cannot be done safely, the switch or removal stops before anything changes and the activity log says so.

Revoking a bunker app takes effect at once

Revoking an app now removes its remembered approvals immediately, even while the bunker is off, and replaces the secret in the bunker URL so the app cannot pair again with the old one. Remembered approvals are now tied to the bunker's key and to the active account.

Bunker apps will ask once more for actions you had set to remember, since approvals saved by earlier versions are not restored.

Stored data that cannot be read fails closed

Many stored records used to read as empty when they could not be decrypted, which could quietly reset a restriction: the PIN record, the kill switch, the relay whitelist, the audit anchor and tamper flag, other stored metadata records and the active account pointer. Each is now reported as unreadable, and every restriction it carried stays in place. Writes that would have overwritten such a record are refused instead.

keep moves to v0.12.2

keep.version moves to keep v0.12.2, which carries the certificate authority change and the bunker revoke changes above.

Install

Download the APK for your device's architecture from the Assets below. Min SDK 33 (Android 13+).

  • keep-android-v1.3.2-arm64-v8a.apk for physical devices
  • keep-android-v1.3.2-x86_64.apk for emulators and x86_64 hardware

Both per-ABI APKs reproduce bit-for-bit from source: the Reproducibility workflow rebuilds each one in a pinned container and compares it against the published artifact with apksigcopier compare, so a mismatch fails rather than passing quietly.

Verifying this release

Download SHA256SUMS, SHA256SUMS.asc, privkeyio-signing-key.asc and your APK into one folder:

gpg --import privkeyio-signing-key.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS

Look for Good signature from "Kyle Santiago <kyle@privkey.io>" on key A47D99B6DB0D715D40C59A2023AE8A8EA7E24E38, and OK for your file. The warning that the key is not certified is expected, and means only that you have not marked it trusted yourself.

The APK carries its own signature, which is what Android checks on install and what F-Droid pins as AllowedAPKSigningKeys:

apksigner verify --print-certs keep-android-v1.3.2-arm64-v8a.apk

That must report certificate SHA-256 digest 3eb0e6f6f4e0962ebd717f84eea47428b73087b686c956633d6a9fcc4c854f50.

The git tag is signed with the same GPG key, so git verify-tag v1.3.2 checks the source this release was built from.

Full changelog

v1.3.1...v1.3.2