Zero-Knowledge Scheduling

How SteeleSchedule keeps your calendar data encrypted and private.

What is Zero-Knowledge Encryption?

Zero-knowledge encryption means we mathematically cannot read your data—even if we wanted to. Your calendar events are encrypted on your device before they reach our servers. Only you hold the decryption keys.

Unlike Calendly or Cal.com (which store your events in plain text), SteeleSchedule only sees encrypted blobs. We compute availability using privacy-preserving cryptographic techniques.

How Your Data is Protected

1. Key Derivation (Client-Side)

When you create an account, your password is hashed using Argon2id (winner of the Password Hashing Competition). This produces your User Master Key (UMK).

UMK = Argon2id(password, salt, params)

2. Event Encryption

Your calendar events (title, location, attendees) are encrypted using XChaCha20-Poly1305, an authenticated encryption algorithm from libsodium.

encrypted_event = XChaCha20-Poly1305.encrypt(event_data, UMK)

The server stores only the ciphertext. Without your UMK, the data is unreadable.

3. Availability Computation

To show availability without decrypting your events, we use Bloom filters— a probabilistic data structure that reveals time slots without exposing event details.

Others see "available" or "busy" windows, but never your event titles or meeting participants.

4. OAuth Token Encryption

When you connect Google or Microsoft calendars, their OAuth tokens are encrypted with your UMK before storage. We never have plaintext access to your calendar credentials.

What We Protect Against

Server Compromise

If our servers are hacked, attackers get encrypted blobs—useless without your password.

Legal Requests

We can't hand over data we can't read. Law enforcement gets encrypted ciphertext.

Insider Threats

Our engineers cannot access your calendar events. Zero knowledge means zero privilege.

Third-Party Tracking

No Google Analytics, no Facebook Pixel. Your scheduling activity is private.

Open Source & Audits

Our encryption implementation uses libsodium.js, an audited library trusted by Signal, 1Password, and Bitwarden. All cryptographic algorithms are public and peer-reviewed.

  • XChaCha20-Poly1305: AEAD cipher (RFC 8439)
  • Argon2id: Memory-hard password hash (RFC 9106)
  • libsodium.js: NaCl-based crypto library

Ready for Private Scheduling?