Table of contents
Start for free
Eli MacKinnon / 8.12.2021Home / guides
Death, taxes and forgotten passwords
How we learned to reset passwords that we never had to begin withIf you use a diverse range of strong passwords, it’s a near certainty that you’ll forget some of them (that is, unless you’re using a good password manager).For some people, this happens so often that hitting “Forgot your password?” becomes just another part of logging in. One study showed that the average American has been locked out of 10 accounts in the last month.At Skiff, we’re building collaboration tools designed to eliminate the trade-off between privacy and usability that we all face when working and communicating online. So we don’t design for best-case scenarios or cyber-security experts. We use secure design patterns that anticipate the needs of real, busy, messy people — people who forget their passwords a lot.Standard password-reset systems are fundamentally incompatible with an end-to-end-encrypted platform that puts people in control of their own data. So we needed to design a new one: a password-reset system that simultaneously respects real people’s needs and the privacy of their data. As with many things in secure software design, it wasn’t easy.
Cheating makes everything easy
While the details vary somewhat from one platform to another, the broad outline of how account recovery usually works is pretty straightforward:Step 1: You prove who you are.This may be via an emailed link, a security question, an authentication prompt on a device you’ve associated with your account, or some combination of these.Step 2: You reset your password, and the platform swaps your old password for your new password (hopefully not in plain text).Somewhere in a nondescript data center — buried in a server that’s leased or owned by your favorite (or least favorite) tech company — there’s a row in a data table with your username and password.In theory, your password is not stored in plain text — rather, it’s been transformed into an illegible string of characters via a one-way cryptographic process called hashing. In reality, Google, Facebook, Instagram and Twitter (and many, many other platforms) have all been revealed to have stored passwords in plain text.Either way, the login credentials in that table are updated so that the next time you log in, you’re able to use the new password.Step 3: The platform restores access to your data.You now use your new password to log in and the service provider restores access to whatever data were stored on your account, be they banking details or personal notes.This process is simple. But its simplicity hinges on an important detail: The platform has the keys to your data.Your data may or may not be encrypted at-rest on the company’s servers, but in any case, the platform is able to — when it chooses — access your data and make decisions about when to grant you (or anyone else) access. When you change your password, the platform simply updates the conditions necessary for accessing the data that you’ve stored on its servers.The simplicity of this process reveals how insubstantial the password was to begin with. Your password can be easily changed because it never controlled access to your data in the first place — the platform did.But the three simple steps above don’t work for Skiff. We can’t cheat and arbitrarily change the conditions necessary to access your data, because…We don’t have access to your data
No, really. We don’t have it. We store an encrypted version of your data on our servers, but we don’t have the keys to decrypt it and we never did. That comes with the territory of end-to-end encryption.Only you, the end user, have the keys to your own data. So where are they?If you want all the details, we recommend reading our white paper. But the short version is that your password is the key to your data.Every time you log in to Skiff, your browser uses your password to derive a key that’s used to decrypt the account data sent to your device by Skiff’s servers after a successful login. This all happens locally on your device. Your password and the key derived from it are never sent over any network nor stored in any form.The fact that your password remains private — even from us — is important, because it ensures that the system remains end-to-end encrypted. If we had access to your password, we would be able to use it to decrypt your data, and end-to-end encryption would be broken.Therefore, we don’t ever want to see or store your password. We don’t even want to store it in a hashed or encrypted form (like most platforms do), because if it ever got into the hands of a motivated adversary, there are ways they could try to crack it.So we have a problem: How does Skiff confirm you are who you say you are? How do we confirm the password you enter matches the password you set if we’ve never seen your password in any way, shape or form?The answer is the Secure Remote Password protocol (SRP), a clever piece of cryptography that allows a user to authenticate their identity to a server without ever sending the password (even in a hashed or encrypted form) to that server. (For more information on how SRP works, check out this site.)Using the Secure Remote Password protocol, we’ve solved one important problem — we’ve authenticated your identity without ever having seen or stored your password in any form. And in the process, we’ve ensured that a password on Skiff does what many people mistakenly (though understandably) assume it does on every platform: It genuinely limits access to your account. Without your password, no one — not even we — can access your data.But we’ve also introduced a new problem: If you forget your password at this point, your data will be impossible to recover. Remember, Skiff doesn’t have access to your password nor your unencrypted data. So if you lose your password, then all we could do is give you back encrypted data, which would be as useless to you as it is to anyone else.
Saved by the recovery key
When you sign up as a new Skiff user and log into your account, the first thing we ask you to do is to enable account recovery. Doing so gives you a long, randomly generated string of characters. This is the recovery key, a single-use backup option for decrypting your data if you forget your password. You can either write it down or download it as a PDF.From that point on, if you forget your password, you’ll need to do two things to verify your identity:
- Prove you have access to your registered email address by entering a time-limited passcode sent to your inbox
- Either enter your recovery key, or initiate the password reset process using the same browser you last used to sign into Skiff
Related articles
Jason GinsbergSecure Design PatternsUsability is the key to making privacy-first software more widely adopted
Richard Liu & Andrew MilichLog in with MetamaskSkiff now supports MetaMask wallet sign up. No email required
Skiff TeamWhy you need a strong passwordLearn why having a strong password is a must to protect your online data.
Andrew MilichWhat is a wallet recovery phrase?Tens of millions of people use browser-based crypto wallets. How can recovery phrases be used to recover, transfer, or safeguard funds?
Andrew MilichHow can you do cryptography in Javascript?Almost every web application likely touches some type of encryption - whether it’s AES encryption in SSL or application level security. How can you do cryptography in JavaScript?
Arpeet KaleWhat is device and browser fingerprinting?Device fingerprinting can follow you around the web without you even knowing. How can you stay private?
Andrew MilichWhat is encrypted search?Searching over encrypted data is a unique challenge. What algorithms make it possible?
Andrew MilichBlock trackers and remote content on Skiff MailStarting today, all Skiff Mail users on every plan can disable remote content loading by default in their inbox.