Privacy Policy — Krest

Last updated: 2026-08-10

This document describes which data Krest handles, where it goes, and what choices you have. Krest is built privacy-first: the app works without an account, and the cryptographic anchoring service never sees the content of your media.


1. Who runs Krest

Operator:   Hendrik Paul
Address:    Am Rande 13, 34128 Kassel, Germany
Email:      privacy@krestapp.com

2. What Krest processes — and what it does not process

2.1 Data that never leaves your device

Once you share an anchored file yourself, the proof block travelling inside it does leave your device — §2.8 sets out exactly what that block contains.

2.2 Data the Anchoring Relay sees

The relay accepts only opaque cryptographic material:

The relay does not see, store or forward your media bytes, file names, sensor data, captions, contacts or any personal identifier.

2.3 Data the Share Relay sees

When you create a krest://share/<token> link, Krest uploads the already-encrypted ciphertext to a transport relay. The relay sees:

The relay never receives the decryption key — that travels solely inside the share link (URL fragment or query parameter you forward via WhatsApp, iMessage etc.).

Single-use links are deleted immediately after the first download. Otherwise, links expire at the TTL you chose (max 7 days on the Mini plan, 30 days on Pro/Max) and are purged.

2.4 Data the Lookup Service sees

When you verify someone else's content, the app sends only the SHA-256 hash of their file. The lookup service responds with the timestamp, Merkle proof and Bitcoin anchor it can find for that hash. We log nothing user-identifying.

2.5 Bitcoin anchoring

Krest writes Merkle roots into the Bitcoin blockchain via OP_RETURN transactions. The blockchain is by design public and permanent. The written data is a 48-byte hash — no media, no identity.

2.6 Legal bases (GDPR Art. 6)

We process the limited data described above on the following bases:

We do not carry out automated decision-making or profiling (Art. 22), and we do not process special categories of data (Art. 9) on our servers.

2.7 Backups

The Anchoring Relay periodically writes encrypted, off-site operational backups used solely for disaster recovery (e.g. total loss of the server). These cover the relay's device/registration state described in §2.2 — including your push-notification token if you opted in — as well as the append-only anchoring log that lets the relay recover proofs for captures that were anchored but not yet fetched by your device. Backups are encrypted before they ever leave the server; the decryption key is kept offline and is never stored on the relay itself. By default, this rolling backup history covers up to 24 hours before older backups are automatically deleted (see the internal operations runbook for the currently configured value — an operator may extend this for longer disaster-recovery coverage).

The deletion promise in §4 survives a restore. If a backup is ever restored — an event we expect to be rare, disaster-recovery only, never a routine operation — the same automated sweep that purges a push token no later than 24 hours after your subscription lapses runs again immediately on the restored data. This is not a manual process or a policy promise on paper; it is code that executes on every relay start (see §4). A token that had already become eligible for deletion before the backup was taken is therefore removed again within the same 24-hour bound, even though it was briefly present in the restored copy.

Separately, the relay operator also keeps encrypted, off-site backups of the Bitcoin anchor wallet's key material and of the deployment's operational secrets. Both are handled with the same encryption/access-restriction discipline described above, but contain no personal data — only Bitcoin private keys and operator infrastructure secrets.

2.8 What a Krest proof carries inside a file you share

When a capture is anchored, Krest appends a small block of printable text (typically well under a kilobyte) to the file itself, after the image data. This block is what makes a Krest photo checkable by anyone, on any device, without contacting Krest at all — and it is the only reason a proof survives reinstalling the app or sending the photo to someone else. Anyone who receives the file can read it.

What it containsMeaning
Content hashSHA-256 of the photo's own bytes.
Capture timeThe timestamp that was signed at capture.
Merkle proofThe chain of hashes tying this capture to what was written to the blockchain.
Batch rootIdentifies the batch this capture belonged to (see below).
Anchor transaction IDThe public Bitcoin transaction. Shared with every capture in the same batch, across all devices.
Relay signatureShows which relay anchored the batch.
Organisation blockOnly if you explicitly chose to post as an organisation. Off by default.

It contains no device key, no location, no account or user identifier, and no sensor data.

What someone can infer from it. Captures made on the same device within the same batch (at most 128 captures, at most 24 hours) share the same batch root, and — when a batch held more than one capture — one entry of the Merkle proof is the content hash of another capture from that batch. Someone holding two such files can therefore tell that they were produced by the same device within the same batch window. Three limits apply: the batch root changes with every new batch, so files from different batches cannot be linked to each other this way; the batch root cannot be resolved to a device or to a person — no Krest service will translate it into a device key; and it says nothing about who that device belongs to. The one exception is the relay operator, who separately holds the device key described in §2.2 and could therefore group batches from one device — still without any name, account or contact data, because Krest has none.

This trade-off is unavoidable for the guarantee Krest makes: a proof that anyone can check without trusting us has to carry the hash chain that leads to the blockchain. A proof without that chain would not be a proof.

Separately from Krest, the photo file also carries the ordinary camera metadata your device writes (EXIF: capture time, camera model, exposure settings, and location if you have enabled it for the camera). Krest neither adds nor removes any of it — a verified capture must stay byte-for-byte identical to the sensor output, so stripping it would destroy the proof. If you do not want a file to carry either the proof block or that metadata, share it through a channel that re-encodes it; most messengers and social networks do this automatically, which removes the proof along with it.

3. Permissions Krest requests on your device

PermissionWhy
CameraCapture photos / videos that get signed by the Secure Enclave.
MicrophoneAudio track for video captures.
Photo libraryOptional — to verify or share existing photos you select.
Motion sensorsAccelerometer / gyroscope reading folded into the capture proof.
App-Attest (Secure Enc.)Prove to the relay that the capture really came from your device.
Push notificationsOptional, paid plans only — tell you once a capture is confirmed on Bitcoin. Off by default.

All permissions are opt-in and can be revoked any time in iOS Settings.

4. Data retention

SurfaceRetention
Anchoring Relay logs30 days, then deleted.
Subscription/purchase data (receipt, risk indicator, expiry, quota/credits)As long as your device key and subscription/entitlement are active; deleted on unregistration or lapse.
Push notification token (opt-in)Until you disable notifications in the app, Apple reports the token invalid (delivery failure), or your subscription lapses (deleted within 24 hours of the lapse via a periodic sweep, not instantly) — whichever comes first.
Share Relay blobsUntil single-use download or TTL expiry (7 days on the Mini plan, 30 days on Pro/Max — see the in-app subscription details).
Encrypted relay backups (§2.7; may include a push token)Rolling window, up to 24 hours by default (operator-configurable, see the internal runbook), then automatically deleted. Restoring a backup re-runs the same push-token deletion sweep described above.
Lookup Service queriesNot logged with user-identifying fields.
Bitcoin blockchainPermanent (public). Contains only 32-byte hashes.
Local app databaseStays on device. Deleted with the app.
Newly captured photos awaiting their anchorStay in the app's own storage on your device, never uploaded. Moved into your photo library as soon as the anchor exists, and at the latest 24 hours after capture — without a proof in that case, so the photo is never lost. Deleted from the app's storage once the photo library copy exists. Deleting the app before that point also deletes them.

5. Your rights under GDPR

If you are in the EU/EEA you have the right to:

Because Krest is account-less, the relay does not store personal data that could be linked back to you as an individual. If you believe a piece of data is identifiable nonetheless, contact us with details and we will delete or rectify within the legally required period.

6. Transfers outside the EU/EEA

Server infrastructure currently runs in Germany (Hetzner Cloud). Bitcoin anchoring transactions are submitted to the public Bitcoin network and are therefore visible globally, but as stated above contain only non-identifying hash data.

A data processing agreement under GDPR Art. 28 is in place with the hosting provider Hetzner Online GmbH (Industriestr. 25, 91710 Gunzenhausen, Germany), which handles the short-lived request metadata on the server infrastructure. Processing takes place exclusively in Germany.

If you opt in to push notifications, your APNs device token is sent to Apple Distribution International Ltd. (Hollyhill Industrial Estate, Cork, Ireland; or Apple Inc., USA, for the underlying push service) solely to deliver the one "anchored on Bitcoin" notification described in §2.2 — Apple acts as the notification transport, not as a recipient of your capture content or any other data described in this policy.

7. Children

Krest is not designed for children under the age of digital consent in your jurisdiction (16 in most EU member states, 13 in the US per COPPA).

8. Changes

We may update this policy as features evolve. The "last updated" date at the top of this document reflects the most recent revision. Material changes will be announced in the app changelog.

9. Contact

For privacy questions or data-protection requests:

privacy@krestapp.com

See also: TERMS.md (terms of service) and IMPRESSUM.md (provider identification under § 5 DDG). German version: DATENSCHUTZ.md.