Our commitment to absolute security

Skiff is a security-first and trusted platform for your work, writing, and ideas. This trust is built on transparency, communication, and tried-and-true cryptography.

No documents, document titles, messages, and any other sensitive information is ever processed, stored, or even seen in plaintext by our servers. This is achieved using end-to-end encryption, as well as additional safeguards, including robust authentication methods, out-of-band key verification, and two-step authentication.

Our whitepaper is the best resource for learning about how Skiff works. This page is intended to provide an overview of our security model and cryptographic primitives.

Skiff Security Model

Public-key authenticated encryption allows us to securely and privately share access to documents in our security model.

When you first log into Skiff, you generate - in your browser - encryption and signing keypairs for your account. Your signing keypair is long-term and used to create (and authenticate) your digital signature on the platform. You also generate a medium-term encryption keypair that enables other users to send messages to you with end-to-end encryption. We use Curve25519 and xsalsa20-poly1305 for asymmetric public-key authenticated encryption and secret-key authenticated encryption.

Every document on Skiff uses its own short-term symmetric encryption key. Similar to group messaging protocols in end-to-end encrypted messengers, this symmetric key is shared with other collaborators on your document to enable real-time collaboration.

Every piece of encrypted data includes authenticated type and versioning information added via our authenticated encryption with associated data (AEAD) envelopes library. This enables our platform to authenticate and embed types and versions for each data structure. Check out our open-source AEAD library here!

Secure real-time collaboration

Real-time collaboration among shared users on a document is end-to-end encrypted using the document’s symmetric key. On Skiff, collaboration is fully decentralized and performed using a CRDT, which allows each collaborator to maintain an in-browser copy of the document and perform change resolution as live document updates are received from other users (who may be distributed around the 🌎).

This document symmetric key is rotated as users are shared and unshared from the document, which enables each distinct set of collaborators to have access to a unique symmetric key for their document and set of collaborating users.

Public Key Verification

Private communication requires trust in mechanisms to receive and verify other users’ public keys. Skiff allows other users to view and verify other users’ public signing keys through a user interface for “verification phrases” - an encoding of another user’s signing public key.

Your set of verified collaborators is also stored end-to-end encrypted.

Security Audits

Skiff's most recent security audit was completed in February 2021 by Trail of Bits. We have regular audits of the platform planned as we design and release additional features.

Outreach, Questions, and Reporting

If you'd like to know more about how our service operates, please see our whitepaper. If you have other questions, or concerns, please reach out to us at help@skiff.org. If you've found a bug or want to report a security issue, please contact us at security@skiff.org. Finally, if you have issue with a particular user or document, please report it from within the application dashboard.