SunOS End-to-End Encryption Flow
The user experience can feel simple â âUse Face ID or Touch ID to open my workspaceâ â while the system keeps the actual document encryption keys separate from login.
The simple version
A passkey proves who the user is. A separate workspace key decrypts the content. Your server stores encrypted data, not readable documents.
The passkey unlocks access. The workspace key unlocks the actual notes, pages, tables, and files.
What the user sees
âUnlock with Face ID / Touch ID.â After that, the workspace opens normally. The cryptography stays invisible unless something goes wrong.
Setup flow: creating the encrypted workspace
This happens once when the user enables end-to-end encryption for a workspace.
Daily unlock flow: opening the workspace
This is what happens after setup. To the user, it feels like one biometric unlock.
Where each piece lives
| Piece | What it does | Where it should live | Readable by company? |
|---|---|---|---|
|
Passkey User identity proof |
Confirms the user is allowed to access the account. | Protected by the device / platform. The private key is not given to your app. | No private key access. |
|
Workspace key Actual content key |
Decrypts pages, docs, files, tables, and comments. | Generated in the browser. Kept in memory while unlocked. | No, if never sent or stored raw. |
|
Wrapped key Encrypted copy of the key |
Lets the user sync or recover access without exposing the raw key. | Server or browser storage. | No, unless the wrapping method is compromised. |
|
Encrypted content Ciphertext |
The notes and files after encryption. | Server, browser cache, backups, databases. | No, not without the workspace key. |
|
Plaintext content Readable workspace |
What the user sees after unlock. | Browser memory and UI while the workspace is open. | Should not be available to backend systems. |
Strengths
The server stores encrypted content, not readable pages.
Attackers who steal backend data mostly get ciphertext and wrapped keys.
Face ID and Touch ID can make strong security feel effortless.
âWe do not have your raw content keyâ is a strong privacy position.
Weaknesses and inherent risks
If malicious JavaScript runs inside your app, it may read decrypted content, call decrypt functions, or exfiltrate the in-memory key.
Because the web app is delivered by your company, a malicious or compromised deployment could alter the auth flow, capture plaintext after unlock, or weaken encryption logic.
If the userâs device is compromised, the app may not be able to protect readable content on screen.
They cannot be completely eliminated in a browser app because the browser must eventually receive code that decrypts and displays the content. They can be reduced with strong security engineering, code review, audits, CSP, dependency controls, and transparent release processes.
The unavoidable trust line
End-to-end encryption removes the server database from the trust boundary. It does not remove the shipped client application from the trust boundary.
Recommended product copy
Your workspace content will be encrypted before it leaves your browser. We cannot read or recover encrypted content. You will receive a recovery key. If you lose access to your passkey and recovery key, this workspace may be permanently inaccessible.
This design greatly limits backend and database exposure, but web-based E2EE still depends on the integrity of the client app delivered to the browser. Strong deployment controls, code review, content security policy, dependency review, and audits are required to reduce that risk.