We have very high standards for data privacy.

To ensure that your data is always protected we follow industry best practices:

  1. We do not roll our own encryption, but instead use open source software and encryption libraries that are vetted:
    1. libsodium
    2. Argon2ID
  2. We E2EE all user data where possible, except for minimal metadata like timestamps and delete markers.
  3. We ensure our local machines, cloud environments, and other software we use to distribute the platform are protected by hardware security keys.

What is E2EE?

Read our blog post.

Encryption Overview:

Topo Lock Maps End to End Encryption Design

ItemPurpose
Data KeyUsed to encrypt user data (pins, routes, notes, pictures, etc.). 256-bit encryption key derived from a CSPRNG. Never leaves client side device. In memory key only & never persisted to disk unless Auto Lock is disabled
Main KeyUsed to encrypt the data key. 256-bit encryption key derived from email & password. In memory key only; never persisted to disk; never leaves client side.
Main Data Key EnvelopeEncryption envelope around the data key encrypted by the main key. Persisted client and server side. Used for password login.
Device Data Key EnvelopeEncryption envelope around the data key encrypted by hardware backed storage keys (Secure Enclave / iOS Keychain). Persisted client side only. Used for biometric login.
Client Side Password HashArgon2ID hash of the user’s main key performed client side before being transmitted over the network. Used for online login.
Server Side Password hashPBKDF2 (600,000 rounds) hash of the client side password hash, performed server side. Used for online login.
Password & HashingThe user’s plaintext password never leaves the user’s local device. The password is hashed twice; once client-side and once server-side. The client-side hash ensures the user’s password is never transmitted off of their local device. The server-side hash ensures that even with a server-side data breach the hash can’t be used to authenticate since the attacker won’t know the client-side hash. Also, the client-side hash and server-side hashing algorithms are different; client-side hash is performed by Argon2ID and server-side the hash is performed by PBKDF2 600,000 rounds.

Auto Lock:

Auto Lock further protects your map data by only keeping a reference of your Data Key in-memory and locking the app after a specified amount of time.

  • Auto Lock On:
    • The Data Key is protected by the iOS Secure Enclave hardware module and biometrics.
    • The app will lock after the time set or if the app is killed in the background.
  • Auto Lock Off:
    • The Data Key is protected by the iOS Keychain and stored with kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly.
    • The app will never lock, even if the app is terminated in the background.
  • Auto Lock Timeout: The time when the app will automatically lock in the background.

A screenshot of the Auto Lock settings on iOS:

Topo Lock Maps iOS Auto Lock Settings

Release Notes:

  • v1.1.0 - Jun 22, 2024: Added information regarding App Lock.
  • v1.0.0 - Oct 8, 2023: Initial E2EE design