ZERO-KNOWLEDGE ENCRYPTION

We cannot read your prayers. By design.

Your prayers are encrypted with AES-256-GCM on your device using a key derived from your password via PBKDF2-SHA256 with 600,000 iterations. The key never leaves your device. Our servers only store ciphertext.

How It Works

1

Your password is your key

Your login password doubles as your encryption passphrase. One password to remember, zero extra steps. Change your password and your encryption keys are automatically re-wrapped.

2

Key derivation on your device

Your password goes through PBKDF2-SHA256 with 600,000 iterations to produce a Master Encryption Key. This happens in your browser. The key never leaves your device.

3

AES-256-GCM encryption

Every journal entry is encrypted with a unique initialization vector (IV) using AES-256-GCM — the same standard used by banks and governments.

4

We store gibberish

Our database contains encrypted blobs + initialization vectors. No keys, no decryption capability. Even if we're hacked, your prayers are safe.

Community Encryption

Shared content like feeds and groups uses a different approach — container keys wrapped with RSA-OAEP.

RSA-OAEP Keypairs

Each user has an RSA keypair. The private key is encrypted with your MEK and stored on our server. Only you can unwrap it.

Container Keys

Each feed or group has its own AES key (the "container key"). Posts are encrypted with this key. The container key is wrapped with each member's RSA public key.

Key Healing

If a member loses access to old container keys, any member who still has them automatically re-wraps for the missing member. Self-healing, zero admin intervention.

What We Can vs. Cannot See

✓ What we CAN see

  • Your email address (for auth & notifications)
  • Subscription status & billing info
  • Login timestamps (for security)
  • Number of journal entries (metadata, not content)
  • Prayer timer stats (minutes, streaks)
  • Reading plan progress (which day, not content)
  • Reminder hints (plaintext by design — you choose what to write)

✗ What we CANNOT see

  • Journal entry content (encrypted with your personal key)
  • Answered prayer notes (encrypted)
  • Reminder titles (encrypted on your device)
  • Church feed posts (encrypted with container key)
  • Small group messages (encrypted with group key)
  • Bible Chat history (stored on your device only)

All content listed above is end-to-end encrypted. We store ciphertext only.

Two Levels of Encryption

Your private prayers and shared community content use different encryption schemes — both are end-to-end encrypted.

PRIVATE Your Prayer Journal, Reminders & Bible Chat

Encrypted with your personal Master Encryption Key (AES-256-GCM). Derived from your password via PBKDF2-SHA256 with 600,000 iterations. Nobody can read this — not us, not your pastor, not anyone.

Includes: journal entries, answered prayer notes, reminder titles, tags, Bible Chat history

COMMUNITY Church Feeds & Small Groups

Encrypted with a per-feed or per-group container key (AES-256-GCM). The container key is wrapped with each member's RSA-OAEP public key. Members can read it — but we (the platform) cannot.

When you post to your church feed, you're choosing to share with your church. The content is encrypted with a key that members have, but The Praying App does not.

Features: eager key rotation for new members, key healing for lost keys, moderation decryption by pastors with container key access

The rule is simple: anything you write for yourself is encrypted with your key. Anything you share with a group is encrypted with a group key. You always choose. We never decide for you.

What Happens When You Change Your Password?

Since your password is your encryption passphrase, changing your password automatically re-wraps your encryption keys:

  1. Your current Master Encryption Key (MEK) decrypts your RSA private key
  2. A new MEK is derived from your new password (PBKDF2-SHA256, 600k iterations)
  3. Your RSA private key is re-encrypted with the new MEK
  4. The re-wrapped keypair is saved to the server

Your journal entries don't need re-encryption — they're encrypted with randomly generated per-entry keys that are wrapped with your RSA key. The RSA key re-wrap is all that's needed.

What If I Forget My Password?

Recovery Kit

During onboarding, you download a Recovery Kit — a file containing your encryption key, encrypted with a separate recovery passphrase. Store it somewhere safe. Print it.

Shamir's Secret Sharing (Family)

Family tier users can split their recovery key into 3 shares — any 2 can recover. Distribute among family members so no single person is a single point of failure.

Important

If you lose both your password AND your Recovery Kit, your encrypted data is permanently unrecoverable. This is a feature, not a bug — it proves the encryption is real. We cannot help you recover because we never had the key.

Technical Specification

Our encryption library will be open-source. Anyone can audit the code, verify our claims, and confirm that your data is truly private.

Key DerivationPBKDF2-SHA256 Iterations600,000 Symmetric CipherAES-256-GCM AsymmetricRSA-OAEP (2048-bit) Container KeysAES-256-GCM per feed/group Key HealingAutomatic re-wrap by peers Key RotationEager rotation on new member join RuntimeWeb Crypto API (browser-native)