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.
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!
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.
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.
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.
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 firstname.lastname@example.org. If you've found a bug or want to report a security issue, please contact us at email@example.com. Finally, if you have issue with a particular user or document, please report it from within the application dashboard.