EncryptionComing soon

How Cross-Platform Sync Stays End-to-End Encrypted, From iPhone to Android

Bridging Apple and Android meant adding the one thing Kinship Vault had never needed: a server in the path. Here is how we built it so that server learns nothing, holds no key it could use, and is not even needed for your Apple devices to keep syncing each other.

Apple devices can share data through iCloud. Android devices can share data through Google Drive. There is no cloud both of them can open, so to put one vault on an iPhone and an Android phone at once, the coming update adds a relay: a small service whose only job is to pass sealed changes between the two ecosystems.

A relay is exactly where most "encrypted" sync quietly breaks its promise, so we set the rules before writing the code, and the code enforces them.

The rules

  • Everything is encrypted on the device before it is sent. The relay stores and forwards ciphertext.
  • Keys cross the relay only sealed to a device's public key. Only that device's private key, which never leaves it, can open the seal.
  • No key your recovery passphrase could open is ever stored on the relay. Not wrapped, not split, not escrowed, and the relay's keys are never put in a backup.
  • The relay only bridges. Apple to Apple stays on iCloud, Android to Android stays on Google Drive.

Step one: every device gets its own keys

When a device first joins a synced vault, it generates its own key pairs on the spot: an X25519 key for receiving sealed secrets and an Ed25519 key for signing. The private halves stay on the device. On iPhone, iPad and Mac they live in the Keychain, marked this device only, so they are never synced or backed up anywhere. On Android they are sealed under a hardware-backed Android Keystore key, inside StrongBox on phones that have one.

Only the public halves go to the relay. A public key is safe to publish: it lets anyone seal something to that device, and lets nobody open it.

Step two: the vault key is sealed to that device

Your vault has its own content key, made on your first device. To give a new device the vault, your existing device seals that key to the new device's public key: a fresh one-time X25519 key agreement, HKDF-SHA256 to derive a sealing key bound to both public keys and the purpose, then AES-256-GCM. The result is a small blob that only the new device can open. That sealed blob is the only form in which a vault key ever touches the relay.

Your iPhoneHolds the vault key. Seals a copy to the Android's public key.
Relaystores sealed blob + ciphertext records
cannot open either
Your AndroidOpens the seal with its own private key, which never left it.
The vault key crosses the relay only as a seal addressed to one device.

Step three: proving the new device is really yours

Sealing a key to the wrong public key would be a disaster, so the hard part is knowing that the public key belongs to your new phone and not to someone sitting between the two. That is what the QR code is for.

Each vault also has its own Ed25519 signing key, made when the vault is created and sealed to every owner. Changes to who is in a vault are signed with it, so every device checks the member list itself instead of trusting the relay's word for it.

Step four: syncing, and taking access back

From then on, every item, document, password, passkey, 2FA code, contact, is encrypted with AES-256-GCM under keys derived from the vault's content key before it is uploaded. Even the record identifiers are derived with keyed hashing, so the relay cannot tell a password from a passport. When you remove a device or a person, the vault moves to a new key epoch: fresh keys sealed only to the devices that remain. Anything written after that point is sealed with keys the removed device never had.

The honest limit. Removing a device stops it receiving changes, but it cannot reach into that device and erase what is already there. If a phone was lost or stolen, move your items to a new vault, which that phone has no keys for, and change the passwords that matter most.

What the relay can and cannot see

The relay holdsThe relay never holds
Encrypted records, with no label saying what they areYour documents, passwords or 2FA codes in readable form
Vault keys sealed to a device's public keyAny vault key it could open
Devices' public keysAny device's private key
A device's platform and when it last syncedYour name, email or phone number. Sign-in is anonymous.
Device names, sealed so only the vault's owners can read themYour recovery passphrase, or any key it could unlock

To keep abuse off the relay, a device proves it is a genuine copy of the app on a real device (App Attest on Apple, Play Integrity on Android) before it can do anything that costs the service. That check is about the app, not about you. The full list of what is kept, and for how long, is in our privacy policy.

Why no passphrase-wrapped key sits on the relay

The easy way to build cross-device sync is to upload your vault key wrapped with a password, so any new device can download it and ask you for the password. Almost every cloud password manager does some version of this. It means a copy of your key, guarded only by something a human can remember, sits on a server forever, waiting for a breach and a fast password cracker.

The relay refuses that design outright. A new device gets a cross-platform vault by pairing with one you already have, never by downloading a passphrase-wrapped key. Every key the relay holds is sealed to a device, and the relay's keys are never written into a backup, so your recovery passphrase opens nothing that is waiting on the relay.

Linking two devices on the same platform works differently. When you link a second iPhone, iPad or Mac (or a second Android), the vault key passes straight from one screen to the other device's camera in a QR code that lasts 60 seconds. It never goes over the network, but it is the key itself, so show that code only to your own device, in private.
A key in the cloud guarded by a password is a breach waiting for a GPU. A key sealed to a phone in your pocket is not.

Why iCloud still syncs your Apple devices

It would have been simpler to move everything onto the relay. We kept iCloud for Apple-to-Apple and Google Drive for Android-to-Android for two reasons. First, it keeps the relay's role, and so its attack surface, as small as possible. Second, it means the relay is never a single point of failure: if it were unreachable for a day, your iPhone and Mac would keep syncing each other as they always have, and catch the Android up afterwards.

Coming in the next update

Link your Android and Apple devices to the same vaults, and share a vault across the two. Read the announcement for everything that is coming.

Read the announcement