How KindMind Protects Your Data

Zero-Knowledge Encryption Overview · KindMind Labs

When you write in KindMind, your words are scrambled into unreadable code on your device before they ever leave your browser. The scrambled data is what gets stored on our servers. Only you, with your password or recovery key, can unscramble it. Not us, not our engineers, not anyone who might break into our servers.

This is called zero-knowledge encryption. We store your data, but we have zero knowledge of what it says.

Why This Matters

KindMind holds some of the most personal things you’ll ever write: journal entries about your struggles and guided exercise conversations. That data deserves the strongest possible protection.

With zero-knowledge encryption:

  • A database breach exposes nothing readable, just scrambled nonsense
  • KindMind engineers cannot read your data, even if they wanted to
  • Law enforcement requests get encrypted blobs we cannot decrypt
  • Your most personal data stays yours alone

How It Works

Think of it like a safe deposit box at a bank:

  • The bank (KindMind) provides the box and the vault
  • You hold the only key (your password)
  • The bank can store your box, move it, back it up, but they can never open it
  • If you lose your key, the bank cannot open the box for you (that’s what the recovery key is for)

The Two-Key System

KindMind uses a two-key system, the same approach used by Proton Mail, 1Password, and Standard Notes.

Your Password
something you know
derives a Password Key
locks & unlocks
Master Key
a random secret
encrypts & decrypts
All Your Data

Master Key: A randomly generated secret that actually encrypts your data. It never leaves your browser in readable form.

Password-Derived Key: Created from your password using a slow, deliberate process (600,000 rounds of a key-stretching algorithm). Its only job is to lock and unlock your Master Key.

Why two keys? Because when you change your password, we only need to re-lock the Master Key with your new password. We don’t have to re-encrypt every piece of data you’ve ever written.

What Happens When You...

Sign Up

  1. Your browser generates a random Master Key
  2. Your password derives a Password Key
  3. The Password Key locks (wraps) the Master Key
  4. The locked Master Key is sent to our server (we can store it, but we can’t open it)
  5. A Recovery Key is shown to you. Save it somewhere safe!
  6. The unlocked Master Key stays in your browser session, ready to work

Log In

  1. You authenticate with your email and password
  2. Your browser fetches the locked Master Key from the server
  3. Your password derives the Password Key
  4. The Password Key unlocks the Master Key
  5. You can now read and write your data

Write a Journal Entry

You type

“Today I felt anxious about...”

▼ encrypted on your device
Server gets

xK9mQ2vB8nL...7hYpLw==

▼ stored as-is (cannot decrypt)
Database

xK9mQ2vB8nL...7hYpLw==

Read a Journal Entry

When you log in, your browser uses your password to derive a Password Key locally. It then fetches your Master Key from our server (which is stored in encrypted form we can’t read) and decrypts it using that Password Key. From that point on, the Master Key lives only in your browser session and handles all encryption and decryption. The Master Key is never shared with us or anyone else.

Use a Guided Exercise (AI Chat)

Your exercise conversations are never sent to KindMind’s servers in readable form. Your browser talks directly to a standalone Cloudflare Worker edge proxy, a tiny, open-source function whose only job is to inject our API key and forward your messages to Anthropic. Only the encrypted result is stored on our servers.

1.

Your browser decrypts conversation history locally

2.

Your browser sends messages directly to a Cloudflare Worker edge proxy (not KindMind’s servers)

3.

The Worker injects the API key and forwards to Anthropic. No database, no logging, no storage.

4.

The AI response streams back through the Worker to your browser

5.

Your browser encrypts the response before storing it

Change Your Password

Your old password unlocks the Master Key. Your new password creates a new lock around it. Your actual data is never re-encrypted.The Master Key itself didn’t change, just the lock around it.

Recover Your Account

If you forget your password, the Recovery Key directly restores your Master Key. No password needed. You set a new password, a new lock is created, and you’re back in with all your data.

What Gets Encrypted (and What Doesn’t)

Your DataEncrypted?Why
Journal entriesYesPersonal writing
Reflections (AI-guided conversations)YesAI chat messages never touch our servers in plaintext
Journey responsesYesAnswers to guided journaling prompts
List names and itemsYesGoals, gratitudes, and personal lists
Daily check-in responsesYesNotes, gratitude entries, and intentions
Display nameYesEncrypted on device, decrypted only in your browser
TimestampsNoNeeded for ordering
Subscription statusNoManaged by Stripe

The rule: Content you write is encrypted. Structural metadata the app needs to function stays readable.

The Technical Details

ComponentTechnologyDetails
EncryptionAES-256-GCMMilitary-grade authenticated encryption
Key derivationPBKDF2-SHA256600,000 iterations (OWASP 2024 rec.)
ImplementationWeb Crypto APIBrowser-native, hardware-accelerated
Key size256 bitsCryptographically random
IV (nonce)12 bytesUnique per encryption operation
Salt16 bytesUnique per user

What AES-256-GCM Means

  • AES (Advanced Encryption Standard): the global standard for symmetric encryption
  • 256: 256-bit key length (2256 possible keys, more than atoms in the observable universe)
  • GCM (Galois/Counter Mode), which provides both encryption and tamper detection

If someone modified your encrypted data, GCM would detect it and refuse to decrypt. Your data can’t be silently altered.

What 600,000 Iterations Means

Turning your password into an encryption key is deliberately slow. Each login takes a fraction of a second for you, but an attacker trying to brute-force passwords would need to perform 600,000 cryptographic operations per guess. At millions of guesses per second, this slows them to a crawl.

What We Cannot Do

With zero-knowledge encryption in place:

  • We cannot read your journal entries
  • We cannot read your exercise conversations
  • We cannot read your journey responses
  • We cannot reset your encryption if you lose both your password and recovery key
  • We cannot comply with data requests for readable content (we don’t have it)
  • We cannot recover your data if you lose access (this is the trade-off of true privacy)

The Trade-Offs

Zero-knowledge encryption is the strongest form of data protection, but it comes with real trade-offs:

If you lose your password AND your recovery key, your data is gone forever.

We cannot help you. There is no backdoor, no override, no escape hatch. This is by design. If we could recover it, so could an attacker.

AI exercise conversations never reach our servers in readable form.

Your browser sends messages directly to a stateless Cloudflare Worker edge proxy, which forwards them to Anthropic. The Worker has no database, no logging, and no storage. Only the encrypted result is stored on our servers. The Worker code is open-source and auditable.

Metadata is visible.

We can see that you have 47 journal entries, when you wrote them, and what your journal is titled, but not what’s inside them.

How This Compares

ApproachServer can read?Breach exposes content?Used by
Plaintext storageYesYesApps without encryption at rest
Server-side encryptionYes (holds keys)PossiblyMost apps (industry standard)
Zero-knowledge encryptionNoNoKindMind, Proton Mail, Signal

Your data is encrypted on your device using a key that only you possess.

Our servers store encrypted blobs they cannot read.

Your password unlocks your key. Your recovery key is your backup.

Maximum privacy in exchange for maximum responsibility.

Ready to start?

Try it free

14-day free trial · No credit card required