0% found this document useful (0 votes)
44 views89 pages

1password Security Design v0.3.1

1Password by AgileBits provides powerful administration of 1Password data (login credentials, for example) for teams of individuals. This document describes how this is done securely. [git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)

Uploaded by

Chris
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views89 pages

1password Security Design v0.3.1

1Password by AgileBits provides powerful administration of 1Password data (login credentials, for example) for teams of individuals. This document describes how this is done securely. [git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)

Uploaded by

Chris
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 89

1Password Security Design

1Password Memberships

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Key Security Features

1Password offers a number of notable security features, including

True end-to-end encryption All cryptographic keys are generated and man-
aged by the client on your devices, and all encryption is done locally.
Details are in A deeper look at keys.

Server ignorance We are never in the position of learning your Master


Password or your cryptographic keys. Details are in A modern ap-
proach to authentication.

Nothing “crackable” is stored Often a server will store the password hash.
If captured, this can be used in password cracking attempts. Our
two-secret key derivation mixes your locally held Secret Key with your
Master Password so that data we store cannot be used in cracking
attempts. See Making verifiers uncrackable with 2SKD for details.

Thrice encrypted in transport When your already encrypted data travels


between your device and our servers, it is encrypted and authenti-
cated by Transport Layer Security (TLS) and our own transport en-
cryption. Details are in Transport Security.

You control sharing Only someone who holds the keys to a vault can
share that data with someone else. We do not have those keys, so
sharing decisions come from you. See How Vault Items Are Securely
Shared for details.

Team managed data recovery We do not have the ability to recover your
data if you forget your Master Password or lose your Secret Key (since
you have end-to-end security). But recovery keys can be shared with
team members. Details are in Restoring a User’s Access to a Vault.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Which controls are cryptographically
Contents enforced . . . . . . . . . . . . . 33
Server-enforced controls . . . . . . . . . . . 34
Which controls are enforced by server
policy . . . . . . . . . . . . . . . 34
Client-enforced policy . . . . . . . . . . . . . 35
Principles 6 Which controls are enforced by client
policy . . . . . . . . . . . . . . . 35
Master Password and Secret Key 9
Multiple layers of enforcement . . . . . . . . 35
Master Password . . . . . . . . . . . . . . . 9
Secret Key . . . . . . . . . . . . . . . . . . . 10 Administrator Roles and Powers 37
Emergency Kit . . . . . . . . . . . . . . . . . 11
Restoring a User’s Access to a Vault 38
A modern approach to authentication 13 Overview of Groups . . . . . . . . . . . . . . 38
What we want from authentication . . . . . . 13 Recovery Groups . . . . . . . . . . . . . . . . 39
Traditional authentication . . . . . . . . 14 Implicit sharing . . . . . . . . . . . . . . . . . 39
Password Authenticated Key Exchange 14 Protecting vaults from Recovery Group
Making verifiers uncrackable with 2SKD 16 members . . . . . . . . . . . . . . . . . 39
Recovery risks . . . . . . . . . . . . . . . . . 40
How Vault Items Are Secured 17
Key derivation overview . . . . . . . . . . . . 18 1Password Connect 43
A first look at Key Set . . . . . . . . . . . . . 18 The Connect Server . . . . . . . . . . . . . . 44
Flexible, yet firm . . . . . . . . . . . . . 19 Service account . . . . . . . . . . . . . 44
Local deployment . . . . . . . . . . . . 45
How Vault Items Are Securely Shared 21
Credential store . . . . . . . . . . . . . 45
Getting the message (to the right people) . . 21
The credentials file . . . . . . . . . . . . 45
A deeper look at keys 23 Encrypted credentials . . . . . . . . . . 46
Key creation . . . . . . . . . . . . . . . . . . 23 Verifier . . . . . . . . . . . . . . . . . . 46
Key derivation . . . . . . . . . . . . . . . . . 24 Interprocess key . . . . . . . . . . . . . 47
Deriving two keys . . . . . . . . . . . . 24 Bearer token . . . . . . . . . . . . . . . . . . 47
Preprocessing the Master Password . 24 Header . . . . . . . . . . . . . . . . . . 47
Preparing the salt . . . . . . . . . . . . 26 Payload . . . . . . . . . . . . . . . . . . 48
Slow hashing . . . . . . . . . . . . . . . 26 Signature . . . . . . . . . . . . . . . . . 49
Combining with the Secret Key . . . . . 26
How We Secure Data on Clients 50
Deriving the authentication key . . . . . 27
Initial sign-up . . . . . . . . . . . . . . . . . . 27 Transport Security 51
Protecting email invitations . . . . . . . 28 Data at rest . . . . . . . . . . . . . . . . . . . 52
Enrolling a new client . . . . . . . . . . . . . 29 TLS . . . . . . . . . . . . . . . . . . . . . . . 52
Normal unlock and sign-in . . . . . . . . . . 31 Our transport security . . . . . . . . . . . . . 53
Client delivery . . . . . . . . . . . . . . 53
Revoking Access 32
Server Infrastructure 54
Access control enforcement 33
What the server stores . . . . . . . . . . . . 54
Cryptographically enforced controls . . . . . 33
How is your data stored . . . . . . . . . . . . 56
How are servers deployed and managed . . 57

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Appendices 57 Changelog 86
[0.3.1] – 2021-04-19 . . . . . . . . . . . . . . 86
A Beware of the Leopard 58 Improved . . . . . . . . . . . . . . . . . 86
Crypto over HTTPS . . . . . . . . . . . . . . 58 [0.3] – 2021-04-13 . . . . . . . . . . . . . . . 86
Pinning . . . . . . . . . . . . . . . . . . 59 Improved . . . . . . . . . . . . . . . . . 86
Crypto in the browser . . . . . . . . . . 60 New . . . . . . . . . . . . . . . . . . . . 86
Recovery Group powers . . . . . . . . . . . . 60 [0.2.10] – 2019-01-12 . . . . . . . . . . . . . 87
No public key verification . . . . . . . . . . . 61 Improved . . . . . . . . . . . . . . . . . 87
Limited re-encryption secrecy . . . . . . . . 61 [0.2.9] – 2018-12-30 . . . . . . . . . . . . . . 87
Revocation . . . . . . . . . . . . . . . . 61 Improved . . . . . . . . . . . . . . . . . 87
Your mitigations . . . . . . . . . . . . . 62 [0.2.8] – 2018-12-30 . . . . . . . . . . . . . . 87
Master Password changes don’t change key- New . . . . . . . . . . . . . . . . . . . . 87
sets . . . . . . . . . . . . . . . . . . . . 62 Improved . . . . . . . . . . . . . . . . . 87
Your mitigations . . . . . . . . . . . . . 62 [0.2.7] – 2018-09-10 . . . . . . . . . . . . . . 87
Clients handling multiple accounts . . . . . . 62 New . . . . . . . . . . . . . . . . . . . . 87
Mitigations . . . . . . . . . . . . . . . . 63 Improved . . . . . . . . . . . . . . . . . 87
Policy enforcement mechanisms not always [0.2.6] – 2017-04-11 . . . . . . . . . . . . . . 88
clear to user . . . . . . . . . . . . . . . 63 New . . . . . . . . . . . . . . . . . . . . 88
Malicious client . . . . . . . . . . . . . . . . 64 Improved . . . . . . . . . . . . . . . . . 88
Vulnerability of server data . . . . . . . . . . 64 [0.2.5] - 2017-02-20 . . . . . . . . . . . . . . 88
Malicious processes on your devices . . . . 64 Improved . . . . . . . . . . . . . . . . . 88
Locally exposed Secret Keys . . . . . . 64 [0.2.4] - 2016-09-28 . . . . . . . . . . . . . . 88
Revealing who is registered . . . . . . . . . . 65 New . . . . . . . . . . . . . . . . . . . . 88
Use of email . . . . . . . . . . . . . . . . . . 65 Improved . . . . . . . . . . . . . . . . . 89
Fixed . . . . . . . . . . . . . . . . . . . 89
B Secure Remote Password 66
[0.2.3] - 2015-11-27 . . . . . . . . . . . . . . 89
Registration . . . . . . . . . . . . . . . . 66
New . . . . . . . . . . . . . . . . . . . . 89
Sign-in . . . . . . . . . . . . . . . . . . . 67
Fixed . . . . . . . . . . . . . . . . . . . 89
With a strong KDF . . . . . . . . . . . . 67
[0.2.2] - 2015-11-03 . . . . . . . . . . . . . . 89
The math of SRP . . . . . . . . . . . . . . . . 68
New . . . . . . . . . . . . . . . . . . . . 89
Math background . . . . . . . . . . . . 68
Diffie-Hellman key exchange . . . . . . 69
Authenticated key exchange . . . . . . 70

C Strengthening User Master Passwords 71


Some words about strong Master Passwords 71
Slow hashing . . . . . . . . . . . . . . . . . . 71

D Securing Documents 72

E Verifying public keys 73


Types of defenses . . . . . . . . . . . . . . . 74
Trust hierarchy . . . . . . . . . . . . . . 74
User-to-user verification . . . . . . . . . 74
The problem remains . . . . . . . . . . . . . 76

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
List of Stories List of Figures
1 A (bad) day in the life of your data . . . 10 1 Two-secret Key Derivation . . . . . . . 9
2 A day in the life of an Emergency Kit . . 11 2 Master Password . . . . . . . . . . . . 9
3 A day in the life of an item being created 19 3 Secret Key . . . . . . . . . . . . . . . . 10
4 Days in the life of an algorithm upgrade 19 4 Sample Emergency Kit . . . . . . . . . 11
5 A day in the life of a shared vault . . . . 21 5 Encourage saving Emergency Kit . . . . 12
6 A week in the life of revocation . . . . . 32 6 Very traditional authentication . . . . . 14
7 A day in the life of read-only data . . . . 34 7 Authentication security properties . . . 15
8 A day in the life of a concealed password 36 8 Algorithm for creating and populating a
9 Mr. Talk is not a good team player . . . 61 vault . . . . . . . . . . . . . . . . . . . . 17
10 A weak primary Master Password un- 9 Structure of a How collections of
locks a stronger account . . . . . . . . 63 keys and their metadata are organized
11 Mr. Talk is the cat in the middle . . . . . 73 within 1Password for Teams . . . . . . 18
10 Master Unlock Key derivation . . . . . . 25
11 Sample Master Unlock Key (MUK) . . . 26
12 Example add link . . . . . . . . . . . . . 29

List of Asides
13 First auth response . . . . . . . . . . . 29
14 Personal key set overview . . . . . . . . 30
15 Encrypted symmetric key . . . . . . . . 30
1 Non-ASCII passwords . . . . . . . . . . 25
16 Public key details . . . . . . . . . . . . 30
17 Vault recovery . . . . . . . . . . . . . . 41
18 Connect server in the middle . . . . . . 43
19 Connect credentials JSON . . . . . . . 45

List of Tables 20 encCredentials object . . . . . . . .


21 Decrypted credential structure . . . . .
46
46
1 Authentication schemes . . . . . . . . 16 22 Connect server verifier . . . . . . . . . 46
2 Random number generators . . . . . . 23 23 Connect server IPC key . . . . . . . . . 47
3 Symbols . . . . . . . . . . . . . . . . . . 28 24 JWT header . . . . . . . . . . . . . . . . 47
4 Transport protections . . . . . . . . . . 52 25 JWT payload . . . . . . . . . . . . . . . 48
B.1 SRP simple KDF . . . . . . . . . . . . . 67
B.2 Sophie Germain . . . . . . . . . . . . . 69
B.3 Diffie-Hellman key exchange . . . . . . 70

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Principles

1Password by AgileBits provides powerful administration of 1Password


data (login credentials, for example) for teams of individuals. This doc-
ument describes how this is done securely.
The same approach to security that has driven the design of 1Pass-
word prior to offering 1Password accounts has gone into the current
design. The first one is that we can best protect your secrets by not
knowing them.

Privacy by Design It is impossible to lose, use, or abuse data PRINCIPLE 1 Privacy by Design
one doesn’t possess. Therefore we design systems to reduce the
amount of sensitive user data we have or can acquire.

You will find Principle 1 exemplified throughout our system, from our
inability to acquire your Master Password during authentication (through
use of Secure Remote Password (SRP) to our use of two-secret key deriva-
tion (2SKD) which means that we aren’t in a position to even attempt to
crack your Master Password. Likewise, our use of end-to-end encryp-
tion protects you and your data from us or someone who gains access
to our servers.
Our Principle 2 follows directly from the first:

Trust the Math Mathematics is more trustworthy than people PRINCIPLE 2 Trust the Math
or software. Therefore, when designing a system, prefer security
that is enforced by cryptography instead of enforced by software
or personnel policy.

It is cryptography that prevents one person from seeing the items


that they are not entitled to see. Even if an attacker were able to trick
our servers (or people) into misbehaving, the mathematics of cryptog-
raphy would prevent most attacks. Throughout this document, assume
that all access control mechanisms are enforced through cryptography
unless explicitly stated otherwise.
We also strive to bring the best security architectures to people who
are not themselves security experts. This is more than just building a
product and system that people will want to use, it is part of the security
design itself:

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 7

People are part of the system If the security of a system de- PRINCIPLE 3 People are part of the system
pends on people’s behavior, the system must be designed with an
understanding of how people behave.

If people are asked to do something that isn’t humanly possible, they


won’t do it. Principle 3 is obvious once it is stated, but sadly it has often
been overlooked in the design of security systems. For example, not ev-
eryone wants to become a security expert or will read this document, but
everyone is entitled to security whether or not they seek to understand
how it works.
The underlying mechanisms for even apparently simple tasks and
functions of 1Password are often enormously complex. Yet according
to Principle 3 we don’t wish to confront people with that complexity, and
instead choose to simplify things so people can focus on accomplishing
the task at hand.
Concealing the necessary complexity of the design from users when
they just want to get things done is all well and good, but we should
never conceal the security design from security experts, system and se-
curity administrators, or curious users. Thus we strive to be open about
how our system works.

Openness Be open and explicit about the security design of our PRINCIPLE 4 Openness
systems so that others may scrutinize our decisions.

A security system should be subject to public scrutiny. If the security


of a system were to depend on some aspects of the design being kept
secret, then those aspects would actually be weaknesses. Expert and
external scrutiny is vital,1 both for the initial design and for improving 1 Goldberg, You have secrets; we don’t:

it as needed. This document is part of our ongoing effort to be open Why our data format is public.

about our security design and implementations.


Part of that openness requires that we acknowledge where we haven’t
(yet) been able to fully comply with all of our design principles. For ex-
ample, we haven’t been able to deny ourselves the knowledge of when
you use 1Password in contrast to Principle 1; some finer grained access
control features are enforced by server or client policy instead of cryp-
tographically (cf. 2); people still need to put in some effort to learn how
to use 1Password properly (cf. 3); and not everything is yet fully docu-
mented (cf. 4). We do attempt to be clear about these and other issues
as they come up and will collect them in the appendix on Beware of the
Leopard.
 This document will on occasion go into considerable technical detail that
may not be of interest to every reader. And so, following the conventions
developed in The TEX Book,2 some sections will be marked as a dangerous bend. 2 Knuth, The T Xbook.
E
Most of the text should flow reasonably well if you choose to ignore such sec-
tions.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 8

Many of those dangerous bend technical discussions involve explain-


ing the rationale for some of the very specific choices we made in se-
lecting cryptographic tools and modes of operation. There are excellent
cryptographic libraries available, offering strong tools for every devel-
oper. But even with the best available tools it is possible to pick the
wrong tool for the specific job or to use it incorrectly. We feel that it is
important not just to follow the advice of professional cryptographers,
but to have an understanding of where that advice comes from. That is,
it is important to know your tools (Principle 5).

Know your tools We must understand what security properties PRINCIPLE 5 Know your tools
a tool does and doesn’t have so that we use the correct tool the
right way for the particular task.

Throughout this document there will also be a process of elaboration.


Descriptions presented in earlier sections will be accurate as far as they
go, but may leave some details for greater discussion at some other
point. Often details of one mechanism make complete sense only in
conjunction with details of another that in turn depend on details of the
first. And so, when some mechanism or structure is described at some
point, it may not be the last word on that mechanism.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Master Password and Secret Key

1Password is designed to help you and your team manage your secrets.
But there are some secrets that you need to take care of yourself in
order to be able to access and decrypt the data managed by 1Pass-
word. These are your Master Password and your Secret Key3 , which are 3 The Secret Key was previously known

introduced in this section. as the Account Key, and that previous


name may appear in internal labelling.
Decrypting your data requires all three of the following: your Master
Password, your Secret Key, and a copy of your encrypted data. As dis-
cussed below, each of these is protected in different ways, and each in-
dividually faces different threats. By requiring that all three are needed,
your data is protected by a combination of the best of each. Your Master
Password and your Secret Key are your two secrets used in a process
we are calling “two-secret key derivation.”

Figure 1: Two-secret key derivation com-


bines multiple secrets when deriving au-
thentication keys and encryption keys.

Master Password

One of the secrets used in two-secret key derivation (2SKD) is your Mas-
ter Password, and your Master Password exists only in your memory.
This fact is fantastic for security because it makes your Master Pass-
word (pretty much) impossible to steal.
The great limitation of secrets that must be remembered and used
by actual humans is that they tend to be guessable by automated pass-
Figure 2: Your Master Password, like a
combination to a lock, is something that
you know.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 10

word guessing systems. We do take substantial steps to make things


harder for those attempting to guess passwords (see Slow hashing in
Strengthening User Master Passwords), but it is impossible to know the
capabilities that a well-resourced attacker may be able to bring to bear
on password cracking.
Although we take substantial measures to make it difficult for pass-
word guessing systems to guess your Master Password, passwords
that humans can remember and use are guessable. This is why we also
include an entirely unguessable secret — your Secret Key — in our key
derivation. See Story 1 for an illustration of how your Secret Key comes
into play in defending you in case of a server breach.

Story 1: A (bad) day in the life of your data

Nobody likes to talk about bad things happening, but But Oscar cannot even begin to launch a password
sometimes we must. guessing attack. This is because the key that encrypts
Oscar somehow gains access to all of the data stored your private key is derived not only from your Master
on the 1Password server. We don't know how, and we Password, but also from your Secret Key. Even if he
certainly tried to prevent it, but nonetheless, this is the happens to make a correct guess, he won't know that
starting point for our story. he has guessed correctly. A correct guess will fail in
the same way that an incorrect guess will fail without
Among the data Oscar acquires is an encrypted copy of the Secret Key.
your private key. (We store that on our server so that we
can deliver it to you when you first set up 1Password on Oscar has discovered – much to his chagrin and our
a new device.) If he can decrypt that private key, he will delight – that even all the data held by AgileBits is in-
be able to do some very bad things. Nobody (other than sufficient to verify a correct guess at someone's Mas-
Oscar) wants that to happen. ter Password. “If it weren't for two-secret key deriva-
tion I might have gotten away with it” mutters Oscar.
Oscar will take a look at the encrypted private key and
He probably shouldn't have bothered stealing the data
see that it is encrypted with a randomly chosen 256-bit
in the first place. Without the Secret Keys it is useless
AES key. There is no way he will ever be able to guess
to him.
that. But the private key is encrypted with a key derived
from your Master Password (and other stuff) so he fig- If Oscar had read this document he would have learned
ures that if he can guess your Master Password he will that he cannot learn or guess your Master Password or
be able to get on with his nefarious business. Secret Key from data held or sent to AgileBits.

Secret Key

Your Master Password is one of the secrets used in 2SKD, and your Se-
cret Key is the other. Your Secret Key is generated on your computer
when you first sign up, and is made up of a non-secret version setting,
(“A3”), your non-secret Account ID, and a sequence of 26 randomly cho-
sen characters. An example might be A3-ASWWYB-798JRY-LJVD4-
23DC2-86TVM-H43EB. This is uncrackable, but unlike your Master Pass-
word isn’t something that people could be expected to memorize or
even to type on a keyboard regularly.

Figure 3: Your Secret Key is a high-


entropy secret that you have on your de-
vices

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 11

The hyphens are not part of the actual Secret Key but are used to
improve readability. The version information is neither random nor se-
cret. The Account ID is random, but not secret, and the remainder is
both random and secret. In talking about the security properties of the
Secret Key, we will be talking only about the secret and random portion.
At other times we may refer to the whole thing, including the non-secret
parts.
There are slightly more than 2128 possible Secret Keys4 , all equally 4 Characters in the Secret Key are

likely, thus placing them well outside the range of any sort of guessing. drawn uniformly from a set of 31 upper-
case letters and digits. With a length of
But while the Secret Key is unguessable it is not the kind of thing that 26, that gives us 3126 , which is just a tad
can be committed to human memory. Instead of being stored in your over 128 bits.
head, your Secret Key will be stored on your device by your 1Password
client.

Emergency Kit

AgileBits has no ability to decrypt your or your team’s data, nor do we


have the ability to recover or reset passwords. The ability to recover or
reset the Master Password or Secret Key would give us (or an attacker
who gets into our system) the ability to reset a password to something KEEP SAFE - DON'T THROW AWAY - KEEP SAFE - DON'T THROW AWAY - KEEP SAFE - DON'T THROW AWAY

known to us or the attacker. We therefore deny ourselves this capability. Emergency Kit

What this means for you is that you must not forget or lose the secrets Created for Patty on November 3rd, 2015.

Account Key
that you need to access and decrypt your data. This is why we very
A3-8MMQJN-MZ64CY-2SDB4-RPX3T-V52Q3-N2C84
strongly encourage you to save, print, and secure your Emergency Kit
when you first create your account. Story 2 illustrates how it might be email address [email protected]

sign-in url https://example.1password.com

used. Master Password

Story 2: A day in the life of an Emergency Kit Use this kit to recover access to your 1Password account if you are ever locked out.
https://1password.com

Print out this document.


Fill in your Master Password above.
It's been lonely in this safety deposit box all of these But today is different. Today I am the genie released
Store your Emergency Kit somewhere safe, accessible, and offline.

months. All I have for company is a Last Will, which from long imprisonment. Today I will do magic for my
For questions and support, please contact AgileBits: [email protected].

does not make for the most cheerful of companions. master, Alice. It seems she had a catastrophic disk
But I've been entrusted with some of Alice's most im- crash and her backups Figure 4: Sample
weren't Emergency
working Kit
as expected.
portant secrets. It's little wonder that she keeps me out She remembered her Master Password, but she needed
of sight where I can't reveal them to anyone. to come to me for her Secret Key. With a fresh copy of
It was a crisp February day that winter before last when 1Password on a new computer, Alice can present the
Alice first clicked on “Save Emergency Kit”. She prob- QR code I bear to teach 1Password all of the account
ably thought that she would never need me, but she details, including the Secret Key. All that Alice will have
dutifully (and wisely) printed me out and wrote her to do is type in her Master Password.
Master Password on me. I already contained her Se-
cret Key along with some non-secret details. She se- What a day! Now I am being returned to the bank vault.
curely deleted any copy of me from her computer and I hope that Alice will not have reason to call upon me
promptly took me to her bank, where I got locked away again, but we both feel safe knowing that I am here for
in this box. Perhaps never to be looked at again. her.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 12

Your Emergency Kit is a piece of paper (once you’ve printed it out)


that will contain your account details, including your Secret Key. Fig-
ure 4 shows an example. It also has space for you to write your Master
Password. If you are uncomfortable keeping both your Secret Key and
Master Password on the same piece of paper, you may decide to store
a written back up of your Master Password separately from your Emer-
gency Kit.
A challenge we face is in finding ways to encourage people to actually
print and save their emergency kits. During the 1Password beta period
we’ve added a number of places in which we nudge people toward this.
This includes making it clearer what should be done with the Emergency
Kit as in Figure 5, and by incorporating it among a set of “quests” users
are to encouraged to complete after first starting to use 1Password.

Figure 5: We encourage users to save


their Emergency Kits by a variety of
means. One of those means is to make
it visually clear what is expected.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
A modern approach to authentication

1Password is an end-to-end (E2E) encryption system, and thus the fun- E2E: Data is only encrypted or decrypted
damental security of your data rests on the fact that your data is en- locally on the users’ devices with keys
that only the end users possess. This pro-
crypted and decrypted on your local device using keys that are derived tects the data confidentiality and integrity
from your secrets and which AgileBits has no access to. This E2E en- from compromises during transport or re-
mote storage.
cryption is the primary component of 1Password’s security. How that
encryption takes place is the subject of How Vault Items Are Secured.
None-the-less, there is an authentication component to 1Password.
For the most part its job is to ensure that an individual only receives the
encrypted data that they should receive. Access control enforcement
contains more details about what powers are granted to a client that
successfully authenticates.
Traditionally, AgileBits has been wary of authentication-based secu-
rity, and that wariness is manifest in the the design of 1Password in
three ways:

1. Our overall design is fundamentally based on E2E encryption.

2. We’ve introduced two-secret key derivation (2SKD) to dramatically re-


duce the risk associated with compromise of authentication verifiers.

3. We do not rely on traditional authentication mechanisms, but instead


use Secure Remote Password (SRP) to avoid most of the problems of
traditional authentication.
 Client authentication keys are derived from the same user secrets from
which the encryption keys are derived (so that you have one password for
1Password). And so even though the core of 1Password’s security does not
depend on authentication, we must take extra care in the security of authenti-
cation so that an attacker couldn’t work backwards from an information leak in
an authentication process to discover secrets that would aid in decryption.

What we want from authentication

Your Master Password and Secret Key are used to derive a key that is
used for authenticating with the service we host.5 Our service needs to 5 Your Master Password and Secret

know that you are who you say you are. Your 1Password client needs to Key are also used to derive a different key
used for the E2E, which is discussed in
later sections.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 14

prove to the service that it has your Master Password and Secret Key.
Only then will it give you access to your encrypted data (which your client
still must decrypt) or to other administrative rights.
When Alice authenticates to Bob, she does so by proving that she has
access to a secret6 that only she should have access to. Bob performs 6 By broadening the definition of “se-

some analysis or computation on the proof that Alice offers to verify it cret” we could also cover biometric au-
thentication with this description.
does demonstrate Alice’s access to her secret.
We want an authentication system to allow Alice to reliabily authen-
ticate herself to Bob without introducing other security problems, and
so there are a number of security properties we would like from a good
authentication system. These are listed in Figure 7.

Traditional authentication

With a traditional authentication system, the client (such as a web browser)


sends a user secret (typically a password) to the server. The server then
[ALICE approaches castle gate where BOB is on
processes that password to determine whether or not it is correct ac- duty as a guard.]
cording to its records. If the server determines that it is correct, it will BOB: Who goes there?
consider that user authenticated. ALICE: It is I, Alice. [ALICE identifies her-
self.]
The simplest way to prove you know a secret is to say it, and that is
[BOB checks checks his list of people
what the client does in a traditional system. It simply sends the user- who are authorized to enter the castle to
name and the password to the server. A very traditional version of this see if ALICE is authorized.]
BOB: What is the password? [BOB asks
is illustrated in figure 6. ALICE to prove her identify]
This traditional design has a number of shortcomings. Indeed, it only ALICE: My password is “xyzzy.” [She
provides proof.]
satisfies the first authentication disideratum in figure 7. The most glar-
[BOB verifies that that is the correct
ing failures of traditional authentication include: password for ALICE.]
BOB: You may enter. [BOB raises the
• Anyone able to eavesdrop on the conversation will learn the client’s portcullis and ALICE enters.]
secret. In the exchange in Figure 6 that would correspond to an eaves- Figure 6: A very traditional authentication
dropper hearing and learning Alice’s secret password. exchange

• If the client is talking to the wrong server it reveals its secret to that
potentially malicious server. In the exchange in Figure 6 that would
correspond to Bob not really being the castle guard, and Alice reveal-
ing to her password to an enemy.

In a typical Internet log in session, those shortcomings are addressed


by Transport Layer Security (TLS) to keep the conversation between the
client and the server private as it travels over a network and to prove the
identity of the server to the client. As discussed in Transport Security
we make use of TLS but do not wish to rely on it.

Password Authenticated Key Exchange

The modern approach to covering most of the security properties of


authentication we seek is to find a way for the client and the server to

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 15

prove to each other that they each posses the appropriate secret without
either of them revealing any secrets in the process. This is done by using
a password-authenticated key exchange (PAKE).

Sign-in system desiderata Figure 7: Desired security properties of


an authentication system. There is sub-
stantial overlap among these, but they
Prove client ID Proves to the server that the user holds the
are technically separate.
user’s secret.

Prove server ID Proves to the user that the server holds the
server’s secret.

Eavesdroper safe Does not reveal any information about either


secret to anyone listening in on the process.

Not replayable Cannot be replayed by someone who has


recorded the process and wishes to repeat the exchange to
fake a sign-in at some later time.

No secrets received Does not reveal any information about the


user’s password to the server.

Session key Establishes a new secret that can be used as an


encryption key for the session.

No cracking Server never acquires enough information to


facilitate a password cracking attack.

Using some mathematical magic the server and the client are able
to send each other puzzles that can only be solved with knowledge of
the appropriate secrets, but no secrets are transmitted during this ex-
change. Furthermore, the puzzles are created jointly and uniquely dur-
ing each session so that it is a different puzzle each time. This means
that an attacker who records one authentication session will not be able
to play that back in an attempt to authenticate.
The “key exchange” part of “PAKE” establishes a session key: A se-
cret encryption key that the parties can use for the life of the session to
encrypt and validate their communication. With 1Password we use this
session key to add an additional layer7 of encryption in our communi- 7 This layer provides authenticated en-

cation between client and server. cryption for the communication between
client and server that is in addition to the
A well-designed PAKE – we use SRP, detailed in Secure Remote Pass- security provided by TLS and 1Password’s
word – can satisfy all of the requirements we’ve listed except for one. fundamental E2E encryption of user data.
On its own, a PAKE would still leave something crackable on the server,
something which would not be acceptable to us.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 16

Making verifiers uncrackable with 2SKD

A PAKE still doesn’t solve the problem of a server acquiring and storing
information that could be used in a password cracking attempt. A server
holds a long term verifier which is mathematically related to a long term
authentication secret used by the client. Although this verifier is not a
password hash, it can be considered one for the sake of this immediate
discussion. If the client’s long term secret is derived from something
guessable (such as a weak password), then the verifier stored by the
server could be used to help test guesses of that user password.
We can (and do) take measures to protect the verifiers we store from
capture, and the client uses slow hashing techniques in generating the
verifier. These are essential steps, but given the nature of what 1Pass-
word is designed to protect, we do not feel that those steps are sufficient
on their own.
Our solution to ensure that data held by the server is not sufficient
to launch a password cracking attempt on a user’s Master Password is
our use of two-secret key derivation (2SKD). An attacker who captures
server data would need not only to make guesses at a user’s Master
Password but would need to have the user’s 128-bit strong Secret Key.
It is for this final desideratum that we have introduced 2SKD. With this,
the information held on our systems cannot be used to check whether a
Master Password guess is correct or not. Table 1 summarizes which se-
curity properties we can achieve with various authentication schemes.

Table 1: Authentication schemes and


Traditional +MFA PAKE +2SKD what they do for you. The “+multi-factor
authentication (MFA)” column lists the se-
Prove client ID 3 33 3 3 curity properties of using traditional au-
Prove server ID 5 5 3 3 thentication with multifactor authentica-
No eavesdrop 5 5 3 3 tion. The “+2SKD” column lists the secu-
rity properties of using a PAKE with two-
Prevent replay 5 ? 3 3 secret key derivation, as done in 1Pass-
No secrets received 5 5 3 3 word. The first column lists the desired
security properties from Figure 7.
Session key 5 5 3 3
No cracking 5 5 5 3
Although the internals of our authentication system may appear to
be more complex than otherwise needed for a system whose security
is built upon E2E encryption, we need to ensure that an attack on our
authentication system does not expose anything that could be used to
decrypt user data. Therefore the system has been designed not just to
be strong in its own right, but to provide no information either to us or
an attacker that could threaten the confidentiality of user data.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
How Vault Items Are Secured

Items in your vaults are encrypted with Advanced Encryption Standard


(AES) using 256-bit keys that are generated by the client on the device,
using a cryptographically appropriate random number generator. This
generated key becomes your vault key and will be used to encrypt and
decrypt the items in your vault. NewVault(items)

1Password uses Galois Counter Mode (GCM) to provide authenticated 𝐾𝑉 ←$ KGen()


encryption, protecting your encrypted data from tampering. Proper use / Add items to 𝑉
of authenticated encryption offers a defense against a broad range of
𝑉 ←∅
attacks, including Chosen Ciphertext Attacks (CCAS).
for 𝑥 ∈ items
The vault key is used to encrypt each item in the vault.
𝑦𝑖 ← Enc(𝐾𝑉 , 𝑥)
Items contain overviews and details which are encrypted separately
𝑉 ← 𝑉 ∪ 􏿺𝑦𝑖 􏿽
by the vault key.8 We encrypt these separate so that we can quickly de-
crypt the information needed to list, sort, and find items without having endfor

to first decrypt everything in the vault. return 𝑉


Figure 8: Algorithm for creating and pop-
Item overviews include the item fields needed to list items and to ulating a vault
quickly match items to websites, such as Title, URLs, password strength 8 The overviews and the details are en-
crypted with the same key. This is a
indicator, and tags. Information that is presented to the user when items
change from the design of the OPVault
are listed, along with the information needed to match an item to a web 1Password data format described in OP-
page (URL), are included in the overview. Vault Design (AgileBits).

Item details include the things that do not need to be used to list or
quickly identify them, such as passwords and contents of notes. Docu-
ments are dealt with separately and will be discussed in Securing Doc-
uments.
If you have access to a vault, a copy of the vault key is encrypted
with your public key. Only you, the holder of your private key, are able to
decrypt that copy of the vault key. Your private key is encrypted with a
key encryption key (KEK) that is derived from your Master Password and
Secret Key.
Your private/public key pair is created on your device by your client
when you first sign up. Neither we nor a team administrator ever have
the opportunity to capture your private key. Your public key, being a pub-
lic key, is widely shared.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 18

Key derivation overview

Key derivation is the process that takes your Master Password and Se-
cret Key and produces the keys you need to decrypt your data and to sign
in to the 1Password server. It is described more fully in Key derivation.
Your Master Password will be trimmed and normalized. A non-secret
salt is combined with your email address9 and other non-secret data Salt: A cryptographic salt is a non-secret
using Hash-based Key Derivation Function (HKDF) to create a new 32- value that is added to either an encryption
process or hashing to ensure that the re-
byte salt. sult of the encryption is unique. Salts are
Your Master Password and the salt are passed to PBKDF2-HMAC- typically random and unique.
9 The reasons for binding your encryp-
SHA256 with 100,000 iterations. This will result in 32 bytes of data,
tion key tightly with your email address is
which will be combined with the result of processing your Secret Key. discussed in Restoring a User’s Access to
Your Secret Key is combined with your non-secret account ID and the a Vault.

name of the derivation scheme by HKDF to produce 32 bytes of data.


This will be XORed with the result of processing your Master Password.
The resulting 32 bytes of material (derived from both your Master
Password and your Secret Key) will be your Master Unlock Key (MUK)
which is used to encrypt the key (your private key) that is used to decrypt
the keys (vault keys) that are used to encrypt your data.
By encrypting copies of vault keys with an individual’s public key, it be-
comes easy to securely add an individual to a vault. This secure sharing
of the vault key allows us to securely share items between users.

A first look at Key Set

We organize the public/private key pairs together with the symmetric


key that is used to encrypt the private key into Key Sets. Our Key Sets
make extensive use of JSON Web Key (JWK) objects.

"uuid": string, // Unique ID of this item (hexadecimal)


"encSymmetricKey": JWK, // encrypted key that encrypts private key
"encryptedBy": string, // UUID of key that encrypts encSymmetricKey
"publicKey": JWK, // public part of key pair
"encPrivateKey": JWK, // private part, encrypted

Figure 9: A Key Set is a collection of JWK


keys together with an identifier and infor-
A common type of Key Set will have the structure listed in figure 9. mation about what other key set is used
When we speak of encrypting a Key Set we generally mean encrypting to encrypt it.
the symmetric key that is used to encrypt the private key.
Key Sets are fairly high level abstractions; the actual keys within them
have a finer structure that includes the specifications for the algorithms,
such as initialization vectors. Symmetric encryption is AES-256-GCM,

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 19

and public key encryption is RSA-OAEP with 2048-bit moduli and a public
exponent of 65537.

Story 3: A day in the life of an item being created

In the beginning there was the vault, but it was empty And she added other items, each of its own kind, be they
and had no key. And Alice's 1Password client called out Logins, Notes, Software Licenses, or Credit Cards. And
to the cryptographically secure random number gener- she added all of these to her vault, and they were all
ator, “Oh give me 32 bytes,” and there were 32 random encrypted with her vault key. On the Seventh day, she
bytes. These 256 bits were called the “vault key.” signed out.
And the vault key was encrypted with Alice's public key,
And when she signed in again, she used her Master
so that only she could use it; and a copy of the vault
Password, and 1Password used her Secret Key, and to-
key was encrypted with the public key of the Recovery
gether they could decrypt her private key. With her pri-
Group, lest Alice become forgetful.
vate key she decrypted the vault key. And with that vault
Alice went forth and named things to become part of key she knew her items.
her vault. She called forth the PIN from her account on
the photocopier and added it to her vault. The photo- And Alice became more than the creators of 1Pass-
copier PIN, both its details and its overview, were en- word, for she had knowledge of keys and items which
crypted with the vault key. the creators did not. And it was good.

Once a vault has been created, it can be securely shared by encrypting


the vault key with the recipient’s public key.

Flexible, yet firm

Since the right choices for the finer details of the encryption schemes
we use today may not be the right choices tomorrow, we need some flex-
ibility in determining what to use. Therefore, embedded within the Key
Sets are indications of the ciphers used. This would allow us to move
from RSA with 2048-bit keys to 3072-bit keys, relatively easily when the
time comes, or to switch to Ellipic Curve Cryptography (ECC) at some
point.
Because we supply all of the clients, we can manage upgrades with-
out enormous difficulty.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 20

Story 4: Days in the life of an algorithm upgrade

Setting: Some time in the not-so-distant future. with the old key will be re-encrypted by the client with
the new key.
Day one “Hmm,” says Patty. “It looks like 2048-bit RSA
keys will have to be phased out. Time we start tran- Time to get tough We can have the server refuse to ac-
sitioning to 3072-bit keys." cept new data encrypted with the older keys. The
The next day The next day we ensure that all of our server may not have the keys to decrypt these Key
clients are able to use 3072-bit keys if presented with Sets, but it knows what encryption scheme was
them. used.
Some weeks later We release clients that use 3072 More bad news on 2048-bit keys We learn that even
bits when creating new public keys. (Public keys are decrypting stuff already encrypted with the older
created only when a new account is created or a new keys turns out to be dangerous. [Editor's Note: This
Group is created within a team.). is a fictional story.] We need to prevent items en-
Further along ”We should go further and start replac- crypted with 2048-bit keys from being trusted auto-
ing the older keys." (Of course, we can't replace any- matically.
one's keys, as we don't have them.) Drastic measures If necessary, we can issue clients
After some development We issue updated clients that that will refuse to trust anything encrypted with the
generate new public keys, and anything encrypted older keys.

Building in the flexibility to add new cryptographic algorithms while


also limiting the scope of downgrade attacks isn’t easy. But as illus-
trated in story 4, we are the single responsible entity for issuing clients
and managing the server, and so through a combination of client and
server policy we can defend against downgrade attacks.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
How Vault Items Are Securely Shared

As described in How Vault Items Are Secured, each user has a personal
key set that includes a public/private key pair, and each vault has its own
key used to encrypt the items within that vault. At the simplest level, to
share the items in a vault, one merely needs to encrypt the item with the
public key of the recipient.

Story 5: A day in the life of a shared vault

Alice is running a small company and would like to of the vault key with Bob's public key.
share the office Wi-Fi password and the keypad code for
Bob will be notified that he has access to a new vault,
the front door with the entire team. Alice will create the
and his client willl download the encrypted vault key,
items in the Everyone vault, using the 1Password client
along with the encrypted vault items. Bob's client can
on her device. These items will be encrypted with the
decrypt the vault key using Bob's private key, giving him
vault key. When Alice adds Bob to the Everyone vault,
access to the items within the vault and allowing Bob to
Alice's 1Password for Teams client will encrypt a copy
see the Wi-Fi password and the front door keypad code.

1Password for Teams server never has a copy of the decrypted vault
key and so is never in a position to share it. Only someone who has that
key can encrypt a copy of it. Thus, an attack on our server could not
result in unwanted sharing.

Getting the message (to the right people)

It is important that the person sharing a vault shares it with the right
person, and so uses the public key of the intended recipient. One of the
primary roles of the 1Password for Teams server is to ensure that public
keys belong to the right email addresses.
 1Password for Teams does not attempt to verify the identity of an indi-
vidual. The focus is on tying a public key to an email address. Internally
we bind a key set to an email address, but we have no information about who
controls that email address.

CONNECTING USERS WITH THEIR KEYS as they register, enroll new devices,
or simply sign in is a fundamental part of the service. How this is done

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 22

without giving us the ability to acquire user secrets is the subject of the
next section.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
A deeper look at keys

It doesn’t matter how strong an encryption algorithm is if the keys used


to encrypt the data are available to an attacker or are easily guessed. In
this section we describe not only the details of the encryption algorithms
and protocols used; but more importantly we describe how and where
keys are derived, generated, and handled.
Here we provide details of how we achieve what is described in How
Vault Items Are Secured and How Vault Items Are Securely Shared. It is
one thing to assert (as we have) that our design means that we never
learn any of your secrets, but it is another to show how this is the case.
As a consequence, this section will be substantially more technical than
the others.
This section is the most technical of this entire document. You have
been warned.

Key creation

All keys are generated by the client using Cryptographically Secure Pseudo-
Random Number Generators (CSPRNGS). These keys are ultimately en-
crypted with keys derived from user secrets. Neither user secrets nor
unencrypted keys are ever transmitted.

Table 2: Random number generators


Platform Method Library used within 1Password by platform. The
Browser platform refers to both the web
iOS/OS X SecRandomCopyBytes() iOS/OS X Security client and to the 1Password X browser
Windows CryptGenRandom() Cryptography API: NG extension. ”CLI” refers to the command
Browser getRandomValues() WebCrypto line interface, op.

Android SecureRandom() java.security


CLI crypto/rand Go standard crypto library

 The public/private key pairs are generated using WebCrypto’s crypto.


generateKey as an RSA-OAEP padded RSA key, with a modulus length
of 2048 bits and a public exponent of 65537.

 The secret part of the Secret Key is generated by the client as we would
generate a random password. Our password generation scheme takes

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 24

care to ensure that each possible character is chosen independently and with
probability equal to any other. Secret Key characters are drawn from the char-
acter set {2-9, A-H, J-N, P-T, V-Z}.

 An Elliptic Curve Digital Signature Algorithm (ECDSA) key is also created at


this time. It is not used in the current version of 1Password, but its future
use is anticipated. The key is generated on curve P-256.

Key derivation

For expository purposes it is easiest to work backwards. The first sec-


tion will discuss what a typical login looks like from an already enrolled
user using an already enrolled client, as this involves the simplest in-
stance of the protocol.

Deriving two keys from two secrets

As discussed in Master Password and Secret Key, 1Password uses two-


secret key derivation (2SKD) so that data stored by us cannot be used in
brute force cracking attempts against the user’s Master Password. The
two secrets held by the user are their Master Password and their Secret
Key.
From those two user secrets the client needs to derive two indepen-
dent keys. One is the key that will be needed to decrypt their data and
the other is the key that will be needed for authentication. We will call
the key that is needed to decrypt the data encryption keys (and in partic-
ular, the user’s private key) the “Master Unlock Key (MUK)”, and the key
that is used as the secret for authentication “SRP-𝑥”.
The processes for deriving each of these are similar, but they involve
different salts in the key derivation function. A user will have a salt that
is used for deriving the MUK and a different salt that is used for deriving
the SRP-𝑥.
In both cases, the secret inputs to the key derivation process are
the user’s Master Password and Secret Key. Non-secret inputs include
salts, algorithm information, and the user’s email address.

Preprocessing the Master Password

Before the user’s Master Password is handed off to the slow hashing
mechanism, it undergoes a number of preparatory steps. The details
and rationale for those are described here.
Master Passwords are first stripped of any leading or trailing whites-
pace. (Step 3 Figure 10.) Whitespace is allowed within the Master Pass-
word, but because leading or trailing whitespace may not be visible to

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 25

Figure 10: The MUK is derived from the


Key Derivation Master Password, 𝑝; Secret Key (previ-
ously known as Account Key), k𝐴 , ; and
1 ∶ 𝑝 ← Master Password from user
several not secrets including the account
2 ∶ (k𝐴 , 𝑒, 𝐼, 𝑠) ← Secret Key, email address, ID, salt from local storage ID, 𝐼; and a salt, 𝑠.

3 ∶ 𝑝 ← trim(𝑝)
4 ∶ 𝑝 ← normalize(𝑝)
5 ∶ 𝑠 ← HKDF(𝑠, version, 𝑒, 32)
6 ∶ k𝑚 ← PBKDF2(𝑝, 𝑠, 100000)
7 ∶ k𝐴 ← HKDF(k𝐴 , version, 𝐼, 􏿎k𝑚 􏿎)
8 ∶ k𝑚 ← k𝑚 ⊕ k𝐴
9 ∶ k𝑚 ← JWKify(k𝑚 )

the user, we wish to avoid them creating a Master Password with such
a space that they are unaware of.
Then it is normalized (Step 4) to a UTF-8 byte string using Unicode
Normalization Form Compatibility Decomposition (NFKD) normalization.
By normalizing these strings before any further processing, we allow for
different byte sequences that may encode the same Unicode character
to be treated identically. This is discussed in greater depth in Discus-
sion 1.

Discussion 1: Non-ASCII passwords

People quite naturally would like to be able to use pass- actly how it is encoded and passed to 1Password (or
words that involve characters other than the 7-bit US- any software) depends on the often arbitrary details
ASCII printable characters. Yet doing so poses diffi- of the user's keyboard, operating system, and settings.
culties that simply supporting Unicode does not an- 1Password itself has no control over what particular se-
swer. Unicode normalization goes a long way toward quence of bytes will be passed to it, but the user who
addressing these difficulties. uses “Å” in their password needs it to work reliably. Nor-
malization ensures that whichever particular UTF en-
The need for Unicode normalization can be exempli- coding of a string is passed to 1Password by the user's
fied by considering how the glyph “Å” may be encoded operating system, we will treat them as identical. In
when it is typed on some devices. It can be encoded the case of “Å”, the normalization that we have chosen,
in (at least) three different ways: It might be the byte NFKD, will convert any of those three representations to
sequence 0x212B, or 0x00C5, or 0x0041030A. Ex- 0x0041030A.

 Normalization does not correct for homoglyphs. For example, the letter
“a” (the second letter in “password”) in the Latin alphabet will never be
treated the same as the visually similar letter “а” (the second letter in “пароль”)
in the Cyrillic alphabet. Thus, despite our use of normalization, users still must
exercise care in the construction of Master Passwords that go beyond the un-
ambiguous 7-bit US-ASCII character set.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 26

Preparing the salt

The 16-byte salt is then stretched using Hash-based Key Derivation Func-
tion (HKDF) and is itself salted with the lowercase version of the email
address (Step 5).10 The reason for binding the email address tightly 10 HKDF places no security require-

with the cryptographic keys is discussed in Restoring a User’s Access ments on its salt, which may even be a
constant or zero.
to a Vault.

Slow hashing

The normalized Master Password is then processed with PBKDF2-HMAC-


SHA256, along with a salt.
 The choice of PBKDF2-HMAC-SHA256 as our slow hash is largely a func-
tion of there being (reasonably) efficient implementations available for
all of our clients. While we could have used a more modern password hashing
scheme, any advantage of doing so would have been lost by how slowly it would
run within JavaScript in most web browsers.
Because all of our key derivation is performed by the client (so that the server
never needs to see the password) we are constrained in our choices by our least
efficient client. The Makwa password hashing scheme,11 however, is a possi- 11 Pornin, The MAKWA Password Hash-
ble road forward because it allows some of the computation to be passed to a ing Function.
server without revealing any secrets to that server.

In the current version, there are 100,000 iterations of PBKDF2. Some


estimates of cracking times are provided in the appendix on Strength-
ening User Master Passwords.

Combining with the Secret Key

The Secret Key, treated as a sequence of bytes, is used to generate an in-


termediate key of the same length as that derived from the Master Pass-
word. This is done using HKDF, using the raw Secret Key as its entropy
source, the account ID as its salt, and the format version as additional
data.

Figure 11: The MUK is represented as a


JSON Web Key (JWK) object. It is given
{ "alg":"A256GCM", the distinguished key ID of “mp”.
"ext":false,
"k":"KCVXrFs8oJBheco-JxbHkPL9bxyN5\
WZ68hyfVgrBuJg",
"key_ops":["encrypt","decrypt"],
"kty":"oct",
"kid":"mp"}

The resulting bytes from the use of HKDF will then be XORed with the

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 27

result of the PBKDF2 operations. This will then be set with the structure
of a JWK object as illustrated in figure 11.

Deriving the authentication key

The process of deriving the client-side authentication secret that is used


for authenticating with the 1Password for Teams server is nearly iden-
tical to the procedure described above for deriving the MUK. The only
difference is that an entirely independent salt is used for the PBKDF2
rounds. This ensures that the derived keys are independent of each
other.
The 32-byte resulting key is converted into a BigNum for use with
Secure Remote Password (SRP). In the browser we use the JSBN library,
and for all other platforms, we use the tools from OpenSSL.

THE ASTUTE READER may have noticed that the defender needs to per-
form 200,000 PBKDF2 rounds while an attacker (who has managed to
obtain the Secret Key) “only” needs to perform 100,000 PBKDF2 rounds
per guess, thus giving the attacker a 1-bit advantage over the defender
in such an attack.
However, the sequence described above, in which the defender needs
to derive both keys, is rarely performed. In most instances, the SRP-𝑥
will be encrypted with the MUK (or by some other key that is encrypted
with the MUK) and stored locally. Thus the defender needs to derive only
the MUK. Indeed, the client needs to go through both derivations only at
original sign-up or when enrolling a new client.

Initial sign-up

In order to focus on the initial creation of keys and establishment of au-


thentication mechanisms, this section assumes that the enrolling user
has been invited to join a team by someone authorized to invite her.
When the invitation is created, the server will generate an account ID
and will know which team someone has been invited to join and the type
of account that is being created. The server is given the new user’s email
address and possibly the new user’s real name. An invitation Universally
Unique Identifier (UUID) is created to uniquely identify the invitation, and
is known to the team administrator. An invitation token is created by the
server and is not made available to the administrator. Other information
about the status of the invitation is stored on the server.
The user will be given (typically by email) the invitation UUID along
with the invitation token and will use those to request from the server
the invitation details. If the UUID is for a valid and active invitation and
the provided token matches the invitation’s token, the server will send

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 28

the invitation details, which include the account name, the invited email
address, and (if supplied by the inviter) the real name of the user. If it
does not find a valid and active invitation for that UUID, it will return an
error.

THE CLIENT WILL GATHER and compute a great deal of information, some
of which will be sent to the server. Symbol Meaning

1. Generate Secret Key 𝜉  𝜉 Generated randomly


 Key-like thing
2. Compute MUK  Encrypted
↱ Uploaded
(a) Generate encryption key salt 𝜉 ↱ Table 3: Symbols used to indicate sta-
(b) Derive MUK from encryption salt, Master Password and Secret tus of different data client creates during
signup
Key as described in Key derivation. 

3. Create encrypted account key set


(a) Generate private key 𝜉 
(b) Compute public key (from private key)  ↱
(c) Encrypt private part with MUK  ↱
(d) Generate key set UUID 𝜉 ↱
(e) Include key set format ↱

4. User information ↱
(a) Given name ↱
(b) Family name ↱
(c) Image avatar ↱
(d) Email ↱

5. Device information ↱
(a) Generate device UUID 𝜉 ↱
(b) Operating system (if available) ↱
(c) User agent (if applicable) ↱
(d) Hostname (if available) ↱

6. Construct SRP verifier


(a) Generate authentication salt 𝜉 ↱
(b) Derive SRP-𝑥 from Master Password, Secret Key, and authen-
tication salt 
(c) Compute SRP verifier from SRP-𝑥.  ↱

7. Send to the server everything listed as ‘↱’.

Protecting email invitations

Invitations are sent by email, and so suffer the security limitations of


email. Administrators are strongly encouraged to verify independently
(other than by email) that their intended recipients have indeed enrolled.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 29

Enrolling a new client

When enrolling a new device, the user will provide the client with the add-
device link (possibly in the form of a QR code) and her Master Password.
The add-device link is generated at the user’s request from an already
enrolled client and includes the domain name for the team, the user’s
email address, and her Secret Key.
The link uses the custom schema onepassword: with a path of
//team-account/add and a query string with fields email, server,
and key. An example is shown in Figure 12

onepassword://team-account/[email protected]
&server=https://example.1password.com&key=A3-8MMQJN-MZ64CY-2SDB4-RPX3T-V52Q3-N2C84

Figure 12: An add link contains the email


address, the team domain, and the Secret
This new client will not have its salts nor its key derivation parameters
Key
and so must request those from the server. It will be able to generate
its device information and create a device UUID.

Figure 13: Example response from server


to auth request. Note that internally the
{ "accountKeyFormat" : "A3", Secret Key is often referred to as “Ac-
"accountKeyUuid" : "GWM4R8", count Key.”
"sessionID" : "TRYYDRPO2FDWRITHY7BETQZPN4",
"status" : "ok",
"userAuth" : {
"alg" : "PBES2g-HS256",
"iterations" : 100000,
"method" : "SRPg-4096",
"salt" : "WSwigQtQpxqYAri592W1lg"
} }

The client will initiate an auth request to the server, sending the email
address and the device UUID. A typical server response will look some-
thing like what is shown in Figure 13.
Once the client has the salt used for deriving its authentication se-
cret, it can compute its SRP-𝑥 from that salt, the Master Password, and
the Secret Key. During authentication, neither the client nor the server
reveals any secrets to the other; and once authentication is complete,
our own transport layer encryption is invoked on top of what is provided
by Transport Layer Security (TLS). However, in the discussion here, we
will ignore those two layers of transport encryption and present the data
as seen by the client and server after both transport encryption layers
have been handled.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 30

After successful authentication, the client can request its encrypted


{"encPriKey": {
personal key set from the server. "..." },
If the client has successfully authenticated, the server will allow it to "encSymKey": { "..." },
"encryptedBy": "mp",
fetch the key sets associated with the account. The personal key set
"pubKey": { "..." },
will have the overall structure shown in Figure 14. "uuid" : "c4pxet7a..."}
This contains an encrypted private key, the associated public key, and
an encrypted symmetric key that is used to encrypt the private key. The Figure 14: Overview of personal key set.
encrypted symmetric key is encrypted with the MUK, using the parame- The value of encryptedBy here indi-
ters and the salt that are included with the encrypted symmetric key as cates that the encrypted symmetric key
is encrypted with the Master Unlock Key
shown in Figure 15. (MUK).

Figure 15: The encrypted symmetric key


is encrypted with the MUK, which in turn
{ "encPriKey" : { "..." }, is derived using the salt in the p2s field,
"encSymKey": { and using the methods indicated in the
"kid": "mp", fields alg and p2c. The encrypted sym-
metric key itself is encrypted using AES-
"enc": "A256GCM", "cty": "b5+jwk+json", 256-GCM.
"iv": "X3uQ83tlrdNIT_MG",
"data": "gd9fzh8lqq5BYdGZpypXvMzIfkS ...",
"alg": "PBES2g-HS256", "p2c": 100000,
"p2s": "5UMfnZ23QaNVpyeKEusdwg" },
"encryptedBy" : "mp",
"pubKey" { "..." }, "uuid" : "c4pxet7a..." }

The details of the public and private keys are illustrated in Figure 16.

Figure 16: The public/private parts are


specified using JWK.
{ "encPriKey" : {
"kid": "c4pxet7agzqqhqg9yvxc2hkg8g",
"enc": "A256GCM", "cty": "b5+jwk+json",
"iv": "dBGJAy3uD4hJkf0K",
"data": "YNz19jMUffFP_glxM5Z ..."},
"encSymKey": { "..." },
"encryptedBy" : "mp",
"pubKey" {
"alg": "RSA-OAEP-256", "e": "AQAB",
"key_ops": ["encrypt"], "kty": "RSA",
"n": "nXk65CscbXVuSq8I43RmGWr9eI391z ...",
"kid": "c4pxet7adzqqvqg9ybxc2hkg8g" },
"uuid" : "c4pxet7agzqqhqg9yvxc2hkg8g" }

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 31

Normal unlock and sign-in

When unlocking and signing in to 1Password for Teams from a client


that has previously signed in, the client may12 have everything it needs 12 The use of the word “may” here re-

locally to compute its master unlock key and to compute or decrypt SRP- flects the fact that different 1Password
clients take different approaches to what
𝑥. The client may already have the salts, encryption parameters, and its they store locally and what they recom-
encrypted personal key set. pute. The current version of the web
client, for example, caches much less
Once the user enters a correct Master Password and the client reads data locally than the mobile clients do.
the Secret Key, it can compute the MUK, decrypt the user’s private key,
and then decrypt any locally cached data. Depending on the complete-
ness of the cached data, the client may be able to function offline.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Revoking Access

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

When Alice tells Bob a secret and later regrets doing so, she cannot
make Bob forget that secret without resorting to brain surgery. We feel
that brain surgery is beyond the scope of 1Password,13 and therefore 13 We have made no formal decision on

users should be aware that once a secret has been shared the recipient whether rocket science is also beyond its
scope.
cannot be forced to forget that secret.

Story 6: A week in the life of revocation

We're always happy for our colleagues when they move denied access to anything new added to the vault.
on to new adventures.
After Tom has been removed from the vault, Gerry cre-
Tom and Gerry have been working on Widgets For ates a new Document, “More cow bell”, for the vault.
Cows, Barnyard Gadgets' new Internet of Things prod- “More cow bell” will be encrypted with a key that is en-
ucts, and it's time for Tom to move on. Tom will be get- crypted by the vault key, but Tom should never get a
ting access to a new team and a new shared vault. copy of the encrypted Document.
Ricky, the team owner, adds Tom to the new vault. The next time Tom connects to the server, he will no
Adding a new member to a shared vault is very simple. longer be sent data from that vault. This server policy
A copy of the vault key will be encrypted with Tom's pub- mechanism prevents Tom from receiving any new data
lic key so that only Tom can decrypt it, and Tom will be from that vault. Furthermore, Tom's client will be told to
sent a notification about the new shared vault. But what remove any copies of the vault key and the encrypted
about his old access and Gerry's new product plans for data it has stored for that vault. This client policy at
Widgets for Cows? least get a well behaved client to forget data and keys it
Ricky will remove Tom from the Widgets for Cows vault. should no longer have. Either of those policies is suffi-
Ricky can't make Tom forget information that he's al- cient to prevent Tom from learning just how much cow
ready had and perhaps made a copy of, but Tom can be bell Gerry thinks is enough.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Access control enforcement

Users (and attackers) of 1Password are limited in what they can do with
the data. Enabling the right people to see, create, or manipulate data
while preventing the wrong people from doing so is the point of 1Pass-
word. The sorts of powers that an individual has are often discussed
in terms of Access Control Lists (ACLs). For want of a better term, we
will use that language here; however it should be noted that the mecha-
nisms by which these controls are enforced are not generally the same
as the ones for more traditional ACLs. Indeed, different controls may be
enforced by different mechanisms, even if presented to the user in the
same way.
Broadly speaking, there are three kinds of control mechanisms. These
are cryptographic enforcement of policy, server enforcement of policy,
and client enforcement of policy.

Cryptographically enforced controls

If someone has not been given access to a vault, it is impossible in all


practical terms for them to decrypt its data. So at the simple level, if a
user has not been added to a vault, the mathematics of cryptography
ensure that they will not be able to decrypt it.
Because the server never has access to decrypted vault keys, it can-
not give out those keys to anyone. Therefore the server simply doesn’t
have the power to grant someone access to a vault. Such requirements
are cryptographically enforced.

Which controls are cryptographically enforced

Among mechanisms that are cryptographically enforced are

• Unlocking a vault

• Only those with access to a vault can share it.

• User email address can be changed only by the user.

• Server does not learn user’s Secret Key or Master Password

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 34

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

Server-enforced controls

A user (or their client) who has access to the vault key is not prevented
by the cryptography from adding, deleting, or modifying items in that
vault when the information resides locally on their device. The same
key that they use to decrypt the data could be used to encrypt modified
data.
However, one feature that 1Password offers is the ability to grant indi-
viduals read permission to a vault while denying them write permission.
The server will reject any attempt from a read-only user of a vault to up-
load data to that vault. This, and other features, are enforced by server
policy. An example of one of these in action is presented in Story 7.

Story 7: A day in the life of read-only data

Patty (a clever but sneaky dog) has been granted ac- with the vault key. Then she tries to send this modified
cess to a vault called “Locations” containing the loca- data to the server so that Morgan would get that infor-
tions of the water dish and the dog door. So has another mation instead.
member of the team, Morgan le Chien.
But then she finds that server policy prevents her from
Patty thinks that maybe she will have the place to her-
uploading modified data. Although cryptographically
self if Morgan can't manage to settle in. So she would
she had the ability to modify the data, she could only
like to give Morgan misleading information. Although
do so on her system. And so her evil plan was foiled by
Patty has been granted only read access to the Loca-
server policy.
tions vault, she is a remarkably clever dog and extracts
the vault key from her own data. The same vault key Of course, her plan would have failed anyway. Morgan
that decrypts items is also used to encrypt items. is happy to drink from anything resembling a water re-
She modifies the location of the water bowl (listing the ceptacle, and so can manage remarkably well even if
driest part of the house) and encrypts her modified data she doesn't know the location of the water bowl.

Which controls are enforced by server policy

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 35

Client-enforced policy

Client-enforced policies are those limitations which are enforced within


either the web browser or a native client, such as an iOS application.
Because the web browser or native client is running on a user’s system
and outside of our control, these policies may be circumvented by a ma-
licious client or a determined user. This doesn’t reduce their usefulness
to ordinary users and may help prevent unintended disclosures or acci-
dental actions.
See Story 8 for an illustration of what client-enforced policies can and
cannot do.

Which controls are enforced by client policy

Each of the client policies requires that a server or cryptographically


enforced policy be granted in order to be allowed. For example, the
Import permission may be circumvented by a client, but the user will
be unable to save the newly imported item to the server because Write
permission is enforced by the server, not by the client.

• Importing items into a vault. A user may still create multiple items
manually provided they have permission to create new items in the
vault. This permission may be used to restrict how many items a user
may easily create or prevent accidentally importing items.

• Exporting items from a vault. A user may still obtain the item data by
other means and create files which are not controlled by 1Password.
This permission may be used to prevent accidentally disclosing the
contents of an entire vault.

• Revealing a password for an item. A user may still obtain the pass-
word by examining a web page using the developers’ tools for their
web browser. This permission may be used to prevent accidental dis-
closure and may help reduce the risk of “shoulder surfing” and other
social engineering attacks.

• Printing one or more items. A user may still obtain the item data by
other means and create files which are not controlled by 1Password
and printing out those files. This permission may be used to prevent
accidentally disclosing the contents of an entire vault.

Multiple layers of enforcement

Something which is enforced by cryptography may also be enforced by


the server, and something that is enforced by the server may also be
enforced by the client. For example, the server will not provide the vault

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 36

data to non-members of a vault, even though non-members wouldn’t


be able to decrypt the data even if it were provided. Likewise, a 1Pass-
word client will generally not ask for data that the server would refuse
to supply. Throughout this document we will typically mention only the
deepest layer of enforcement without also listing the further ones.

Story 8: A day in the life of a concealed password

The administrators have come to be wary of how the word’s “reveal” button while her friends are watching.
dog Patty (see Story 7 for background) treats data. This is protected by client policy.
They want Patty to have access to the password for the
dog door (they want her to be able to leave and enter But Patty is a clever dog. When she uses 1Password to
as she pleases), but they do not want Patty to give that fill in the website, she then uses her browser's debug-
password to any of her friends should her paws acci- ging tools to inspect what 1Password has inserted. She
dentally press the "reveal" button. gets the password, and she tells it to all of her friends
so they may come and visit.
And so, the administrators limit Patty's ability to reveal
the password. She can fill it into the website that con- The house is overrun with Patty's friends running wild,
trols the dog door (she lives in a somewhat unusual and the administrators have learned an important les-
household), but she cannot accidentally press 1Pass- son that client policy controls are easily evaded.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Administrator Roles and Powers

See Restoring a User’s Access to a Vault for a discussion of how Team


and Family administrators can perform account recovery for those who
lose or forget their Master Password or Secret Key.

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Restoring a User's Access to a Vault

If Albert forgets his Master Password or loses his Secret Key, it is impos-
sible to decrypt the contents of his vaults unless those vaults have been
shared with someone else who has not forgotten nor lost her Master
Password and Secret Key. Our use of two-secret key derivation (2SKD)
increases the risk to data availability as in addition to the possibility of
a user forgetting her Master Password there is also the possibility that
the Secret Key gets lost. Data loss can be catastrophic to a team, so
some recovery mechanism is needed.
Our security design also requires that we, AgileBits, never have the
ability to decrypt your data, and so we do not have the ability to restore
anyone else’s ability to decrypt his data if he has forgotten his Master
Password or lost his Secret Key. Our solution is to place the power to
recover access to vaults where it belongs: within the team.

Overview of Groups

To understand how the Recovery Group works it is first necessary to


understand how a group works. A group will have a key set that is similar
in nature to an individual’s key set. It is an encrypted public/private key
pair. A vault is held by a group if the vault key is encrypted with the
group’s public key.
 An individual (or another group) is a member of the group if the group’s
private key can be decrypted by that individual. To put it simply14 , 𝐴 is a 14 For some values of the word “simply”.
member of group 𝐺 if and only if 𝐺’s private key is encrypted with 𝐴’s public key.
𝐴 can decrypt anything encrypted with her public key because she can decrypt
her private key. Thus, 𝐴 will be able to decrypt the private key of 𝐺. With 𝐺’s
private key, she can decrypt the vault keys that are encrypted with 𝐺’s public
key. However, if 𝐴 has not been granted access to a vault, she will be prevented
by server policy from obtaining the vault data even though she has the key to
that vault. Simple.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 39

Recovery Groups

One of the most powerful capabilities that a team administrator has is


the power to assign members to the team’s Recovery Group. In most
configurations the assignment is automatic and Owners, Organizers,
and Administrators will automatically be made members of the Recov-
ery Group. In 1Password Families there is no ability to separate the
roles of Owner, Administrator, and Recovery Group member; they are
all wrapped up as “Organizer.” With 1Password Teams Administrators
are given more control, but not all of the underlying flexibility may be
exposed to the user.15 15 We discovered during our beta test-

This document describes recovery in terms of the Recovery Group ing that it was difficult to make the
distinction between Owners, Administra-
even when the group is not exposed to the Team administrator in those tors, vault Managers, and Recovery Group
terms. members clear enough for those distinc-
tions to be sufficiently useful.

Implicit sharing

When a vault is created, a copy of the vault key is encrypted with the
public key of the Recovery Group. The members of the Recovery Group
are able to decrypt the private key of the Recovery Group. Thus from an
exclusively cryptographic point of view the members of the Recovery
Group have access to all of the vaults.
Recovery Group members never have the ability to learn anyone’s
Master Password, Secret Key, Master Unlock Key (MUK), or SRP-𝑥. Re-
covery is recovery of the vault keys; it is not recovery of Master Pass-
words nor Secret Keys.

Protecting vaults from Recovery Group members

Although there is a chain of keys and data that would allow any member
of the Recovery Group to decrypt the content of any vault, there are a
number of mechanisms that prevent that:

1. A member of the Recovery Group will not be granted access to the


encrypted data in a vault that they otherwise wouldn’t have access to
even if they can obtain the vault key.

2. A member of a recovery group will only be sent the encrypted vault


keys after the user requesting recovery has re-created their account.

Thus the server prevents a member of the Recovery Group from ob-
taining the vault keys without action on the part of the person who is
seeking recovery. The capacity to decrypt the vault keys offers the ma-
licious member of a Recovery Group little benefit if those encrypted keys

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 40

are never provided. Furthermore, even if a malicious member of the Re-


covery Group is able to trick the server into delivering the encrypted vault
keys when it shouldn’t, the attacker would still need to obtain the vault
data encrypted with that key.

Recovery risks

Recovery mechanisms are inherently weak points in maintaining the


secrecy of data. Although we have worked to design ours to defend
against various attacks, there are special precautions that should be
taken when managing a Recovery Group or authorizing recovery.

• Members of a Recovery Group should be adept at keeping the devices


that they use secure and free of malware.

• Members of the Recovery Group should be aware of social engineer-


ing trickery.

• Requests for recovery should be verified independently of email. (Face


to face or a phone call should be used.)

• Recovery emails should be sent only if you have confidence in the


security of the email system.

• If there are no members of a Recovery Group, the capacity to recover


data is lost to the team.

Figure 17 provides an overview of what data and keys are held by


whom. In order to keep the diagram manageable, some hopefully irrel-
evant details have been omitted. For example the transport encryption
layers for the messages is entirely skipped (see Transport Security) and
where we speak of encrypting or decrypting private keys, it is actually
encrypting or decrypting the keys that the private parts of keys are en-
crypted with (see Figure 9). The illustration acts as if Carol would only
ever have a single vault, though of course she may create a number of
different vaults.

Line 1 Our participants are Bob, a member of the Recovery Group; Carol,
a member of the same team but not a member of the recovery group;
and S, the 1Password Server.

Line 2 Bob starts with his one personal keyset, (pk𝐵 , sk𝐵 ), and with the
private key, sk𝑅 , of the recovery group encrypted with Bob’s public
key.

Lines 3–4 Carol creates a new vault which will be encrypted using vault
key k𝑣 , which her client generates. Encrypting the items in a vault is

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 41

User recovery
1 ∶ Bob S Carol
2 ∶ 𝑅𝑏 ← Enc(pk𝐵 , sk𝑅 )
3 ∶ k𝑣 ←$ KGen()
4 ∶ 𝑑𝑣𝑒 ← Enc(k𝑣 , 𝑑𝑣 )

5 ∶ 𝑅𝑣 , 𝑑𝑣𝑒 𝑅𝑣 ← Enc(pk𝑅 , k𝑣 )

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bob initiates recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Begin recovery for 𝐶 Recovery guide


6 ∶
via email

7 ∶ “Complete Recovery” pk𝐶 (pk𝐶 , sk𝐶 ) ←$ KGen()

8 ∶ k𝑣 ← Dec(sk𝑅 , 𝑅𝑣 ) pk𝐶 , 𝑅𝑣

9 ∶ 𝑥 = Enc(pk𝐶 , k𝑣 ) 𝑥 𝑥, 𝑑𝑣𝑒

10 ∶ k𝑣 ← Dec(sk𝐶 , 𝑥)
11 ∶ 𝑑𝑣 ← Dec(k𝑣 , 𝑑𝑣𝑒 )

Figure 17: An overview of what keys are


available to whom and when to support
properly described in Figure 8 on page 17. Here we just abbreviate it data recovery.
as “Enc(k, 𝑑𝑣 )”.

Line 5 When Carol creates a vault a copy of its vault key, 𝑘𝑣 , is encrypted
using the Recovery Group’s public key, pk𝑅 , and is sent to the server.
The encrypted vault data, 𝑑𝑣𝑒 , is also sent to the server for syncing
and storage.

Line 6 When Bob initiates recovery (presumably after receiving a re-


quest from Carol outside of this system, as Carol can no longer sign
in), Bob informs the server of his intent, and the server sends instruc-
tions to Carol by email.
Not shown in this diagram is that the server also puts Carol’s account
into a specific suspended state. If Carol successfully signs in, the
recovery is automatically cancelled.

Line 7 When Carol’s account is in a pending recovery state she is di-


rected to go through a procedure that is very similar to initial signup.
The key difference is that she maintains the same name, email ad-
dress and permissions instead of being treated as a new user by the
system.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 42

During this process she will generate a new personal keyset, (pk𝐶 , sk𝐶 ),
and she shares her new public key, pk𝐶 with the server.
The server will inform Bob that he needs to “complete the recovery”
of Carol’s account.16 16 This would be a good time for Bob to
confirm with Carol through some method
What is not shown is that during this recovery signup Carol’s client will other than email that it is indeed she who
generate a new Secret Key. Carol will pick a new Master Password has reestablished her account.
which may be identical to her previous one. From her new Secret Key
and her potentially new Master Password her client will generate a
new MUK with which it will encrypt her new personal keyset.

Line 8 After Carol has created her new keyset and Bob confirms that
he wishes to complete the recovery, the server will send Carol’s new
public key, pk𝐶 , along with the copy of the vault key that has been
encrypted with the Recovery Group’ key, 𝑅𝑣 . Recall that 𝑅𝑣 was sent
to the server when Carol first created the vault (5)

Lines 8–9 Bob can decrypt 𝑅𝑣 and re-encrypt it as 𝑥 with Carol’s new
public key, pk𝐶 and send that to the server.
The server can then pass 𝑥 back on to Carol, along with the encrypted
data in the vault, 𝑑𝑣𝑒 .

There are several things to note about the process illustrated in Fig-
ure 17. Most importantly is that at no time was the server capable of
decrypting anyone’s data or keys, Other security features include the
fact that Bob was not sent 𝑅𝑣 until after Carol acted on recovery. The
server also never sent Bob the data encrypted with 𝑘𝑣 . The server would
also cancel the recovery if Carol successfully authenticated using her
old credentials, thus somewhat reducing the opportunity for a malicious
recovery without Carol noticing. None the less, it remains possible that
a malicious member of a Recovery Group who gains control of Carol’s
email could come to control Carol’s 1Password account.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1Password Secrets Automations

As described in other sections (in particular A modern approach to au-


thentication and Transport Security), all authenticated interactions with
the 1Password require that the client prove knowledge of the session
key without revealing any secret. That session key in turn can only es-
tablished through proof of knowledge or access to the Master Password
and Secret Key.
This aspect of our security design makes it much harder for there to
be a way around 1Password’s authentication, as every request to the
service is cryptographically bound to the authentication process itself.
It also has the effect of limiting the number of authentication attempts
a client can perform in a particular time period.
This security design introduces a challenge when automated pro-
cesses need to retrieve, modify, or create secrets in 1Password. Such
apps and processes are not designed to sign into 1Password directly;
typically those processes are designed to authenticate through more
traditional means. Reauthenticating to 1Password for each request would
also be cumbersome at the at best.
The overall solution we provide as part of Secrets Automation is a
Connect Server. It is capable of signing into 1Password directly, and
apps and automated processes can interact with it through a RESTful
interface. The API for the Connect Server can be called by customer
Figure 18: The 1Password Connect
created clients or can be built from plug-ins we offer. server lives in your environment and acts
Any automated process that is given power over an organization’s as a RESTful connection between your
apps and the 1Password service.
resources, particularly the kinds of resources that are managed within
1Password, creates an area of attack.17 It is therefore necessary to 17 This is true whether or not those

design these with security in mind. In general, there are two principles processes are systematically managed
within an organization or are left un-
to adhere to when deploying such automations. tracked. It is not difficult to guess which
might introduce more risk.
1. The power allowed to any given automation should be closely tied
and limited to what it is expected to do.

2. The credentials needed by the automation to perform its duties must


be securely managed.
1Password Secrets Integration is itself designed according to those
principles, and it is designed to help customers follow those principles.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 44

Be prepared to read through what follows multiple times,18 as many 18 Or, perhaps, zero times.

of the interacting parts will be mentioned before fully defined. In partic-


ular, the descriptions of the credentials JSON and of the bearer token
each depend on each other.19 Do not expect to understand on a single 19 The document you are reading is pro-

read through. duced with several passes to get all of the


cross references to work. If this docu-
ment takes multiple passes to build, you
can take multiple passes to understand.
The Connect Server

The Connect server is deployed in the user’s environment and serves


as a bridge between the client processes and the 1Password service.
Although simple in principle, there are a number of interacting parts,
and so it is useful to start with an overview some quick facts about it to
be elaborated on further below.

• The 1Password Connect server has encrypted credentials necessary


to sign into 1Password under a specific Service Account.

• The Service Accounts used by Connect servers are not given any abil-
ity to manage users or vaults.

• The Connect server is deployed by the user in the user’s environment.


AgileBits has no means of accessing it.

• Authentication to the Connect server is through use of an HTTP Au-


thorization header bearer token.

• The credentials necessary to sign in as the service account are split


between what is stored with the Connect server and bearer token.

Service account

1Password Service Accounts are not highly visible to users, but it is nec-
essary to say something about them to better understand how Secrets
Automation works in practice.
Generally speaking a service account is a special user within a 1Pass-
word account, but this user isn’t associated with a human or group of
humans. These help an organization manage those secrets which are
to be used by entities with very specific roles and functions. If Patty, a
member of a 1Password account, is responsible for, say, ensuring that
backups can be restored, she may need access to the credentials for
the backups system. But the automated processes which perform the
backups and restorations should not have all of Patty’s powers and priv-
ileges within 1Password; It should only have the powers and privileges
needed to perform its duties.
The appropriate service accounts are set up in 1Password when set-
ting up Secrets Automation. During creation of a service account, the

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 45

administrator will select which vaults the service account will have ac-
cess to and share those vaults with the service account. In this respect
the service account is like an ordinary user. Unlike an ordinary user, the
service account has no management privileges, and will be prevented
by the 1Password backend system from further sharing the vaults to
which it has been given the keys.
The Master Password for the service account is randomly generated
and is discarded after deriving the Master Unlock Key (MUK) and SRP-
𝑥. As always, all key generation is performed client side, either in the
web-client or the command-line interface.
 The service accounts created for Secrets Automation complement the
ones created for use by the SCIM bridge, which is used for automated
management 1Password users. Those have the ability to create and delete
users as well as add users to groups, but they have no ability to retrieve data
from vaults.

Local deployment

The Connect server, with the encrypted 1Password credentials, is de-


ployed on the customer’s system. At initial release, April 2021, we pro-
vide setups for deploying it within a Docker container or via Kubernetes.
At no time does AgileBits have any access to the Connect server or the
data it stores.

Credential store

The Connect server locally stores encrypted credentials, containing the


MUK and the SRP-𝑥 for the associated service account. This saves it
from having to go through the entire key derivation process each time it
needs to start 1Password session.

The credentials file


{ "verifier": { ... },
"encCredentials":
When initially setting up a Connect server, the user’s 1Password client { ... },
constructs a 1password-credentials.json file along with a bearer "uniqueKey": { ... },
"version": "2",
token.
"deviceUuid": "22e ..." }
The credentials file has three substantive components: The veri-
fier is used as part of an additional authentication of the bearer token;
Figure 19: An overview of the creden-
the encCredentials contain the encrypted credentials necessary for tials file, with three major components
the associated service account to sign in to 1Password; the uniqueKey and some header information.
is key shared between the client facing Connect server and the Connect
server syncher.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 46

Encrypted credentials

The encrypted credentials, illustrated in Figure 20 contain, unsurpris-


ingly, the encrypted 1Password credentials needed to unlock 1Pass-
word as the associated service account.

Figure 20: The encCredentials ob-


ject is a JSON Web Key (JWK) used to
"encCredentials": { encrypted 1Password unlocking creden-
"kid": "localauthv2keykid", tials. It is encrypted with a key derived
"enc": "A256GCM", from the bearer token.

"cty": "b5+jwk+json",
"iv": "VSu ...",
"data": "AZ1H0WprT ..."}

Encryption, as with all of our symmetric encryption, is with Advanced


Encryption Standard (AES) in using Galois Counter Mode (GCM) for au-
thenticated encryption. The nonce is given in the iv.
When decrypted, the object is structured as in the Golang structure
in Figure 21.

Figure 21: Decrypted credential struc-


ture. The URL, Email, UserUUID, and Se-
type SigninSRPComputedXCredentials s t r u c t { cretKey are used to identify the user, ac-
URL string count, and service. The SRP-𝑥 and MUK
Email string are the secrets needed to authenticate
with 1Password and to decrypt (the keys
UserUUID string needed to decrypt the keys which en-
SecretKey crypt) the vault data.
* c r y p t o . SecretKey
SRPComputedX * c r y p t o . SRPComputedX
HexMUK string
}

The URL will typically be something like example.1password.com,


the email addresses created for service accounts are never expected
to be used for email, and just serve as a username. The the user Uni-
versally Unique Identifier (UUID) uniquely identifies the service account
Secret Key,20 SRP-𝑥, and MUK are as described in A deeper look at keys. 20 It is only the non-secret part of the
Secret Key that is used in the process.
All service account identifying informa-
Verifier tion must be consistent for successful
authentication.
The token within the bearer token is run through a key derivation func-
tion, which must match the verifier stored by the Connect server. { "verifier": {
"salt": "Em ...",
This verification is redundent, as the signature verification of the en-
"localHash": "Yvra ..." }
tire bearer token provides all of the authentication necessary as well

Figure 22: Connect server verifier

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 47

guaranteeing the integrity of the request.

Interprocess key

The 1Password Connect server has two running processes. One pro-
vides the user-facing service, and the other synchronizes data with 1Pass-
word itself. Among other things, this allows the Connect server to oper-
ate even when a direct connection to 1Password is unavailable.21 This 21 This might be particularly handy if

also allows for much speedier responses from the Connect server. The you are managing your network equipt-
ment with Secrets Automation.
data stored by the sync server is encrypted as with any 1Password client.

Figure 23: The Connect server interpro-


cess key is used to secure communi-
"uniqueKey": { cation between the sync server and the
alg": "A256GCM", client facing Connect service.
"ext": true,
"k": "DCpU ...",
"key_ops": ["decrypt", "encrypt"],
"kty": "oct",
"kid": "lyt ..." }

The interprocess key, here called uniqueKy22 is used as a shared 22 All keys are unique, but are some

secret between the client facing Connect server and the synchronization keys are more unique than others? They
are just all unique; but coming up with
server in order to encrypted the bearer token between them. names for yet another key when devel-
oping something is hard, and the tempo-
rary placeholder name may stick around
Bearer token longer than anyone might expect.

The bearer token is a JSON Web Token (JWT) that is transmitted from JWT: A means of representing claims to
the user’s client process to the Connect server using the HTTP Autho- be transferred between two parties and is
defined in RFC 7517. These are typically
rization header. It contains a key which is used, indirectly, to decrypt signed cryptographically..
the 1Password credentials stored by the Connect Server. It also con-
tains claims, in the JWT sense, listing what 1Password vaults it has ac-
cess to. As a signed JWT, it also is used directly for authentication to
the Connect server. Serialized JWTs are composed of three base64 en-
coded parts, header, payload, and signature. These parts are separated
by the “.” character.

Header { "alg":"ES256",
"kid":"vlm...",
"typ":"JWT" }
An example header portion is shown in figure 24.
The kid identifies the signing key of the corresponding service ac-
count keyset, which is used to sign the bearer token. It must be a key Figure 24: Sample JWT header for bearer
tokens
belonging to the the subject field in the payload.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 48

 Although Elliptic Curve Digital Signature Algorithm (ECDSA) is not the most
robust of digital signature algorithms, it is the one we have settled on for
the time being, as it is widely available in well-vetted cryptographic libraries.
We find it particularly important to whitelist the algorithms that we accept in
a JWT, as this helps avoid a number of security concerns23 surrounding JSON 23 Arciszewski, No Way, JOSE!.
Object Signing and Encryption (JOSE) and JWT. In particular, the flexibility of
signature and encryption algorithms can lead to downgrade attacks. In addition
to whitelisting signature algorithms (currently ECDSA using P-256 and SHA-256
(ES256) is the only one which the Connect server will accept) our verification
process is very aggressive in rejecting inconsistent or malformed tokens.

Payload

A sample payload, or claims, portion of the bearer token can be seen


in Figure 25. Most of what appears that figure can be understood from
the JWT standards, which you may peruse at your leisure. What requires
special explanation here are the following items

Figure 25: Sample JWT payload for


bearer tokens. auuid is the account
{ "1password.com/auuid":"XRS ...", UUID, and the subject sub is the user
"1password.com/token":"pMb ...", UUID for the service account user. The
"1password.com/fts": ["vaultaccess"], features, fts, will always be "vaultac-
cess" for Secrets Automation. The
"1password.com/vts":[{ token is both an authentication secret
"u":"57o...", "a":48}], to the Connect server and a key which
is used to derive the key to decrypt
"aud":["com.1password.connect"], the 1Password credentials stored on the
"sub":"6YUT ...", Connect server.
"exp":1625961599, "iat":1618167578,
"iss":"com.1password.b5",
"jti":"j24 ..." }

sub The subject of the bearer token is the UUID of the service account
which signs into 1Password.

auuid The account UUID.

fts Features will always be “vaultaccess” for Secrets Automation.

vts The vaults that the client is claiming access to, along with its read
and write claims.

token The token which, among other things, is used to decrypt creden-
tials stored by the Connect Server.

It is worth noting that a particular service account may have more


access to more vaults than are claimed in the bearer token payload.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 49

The Connect server will not honor client requests that go beyond the
validated claims.
For example, if the associated service account has the ability to read
and write to vaults 𝑉1 and 𝑉2 , while the signed claim is only for reading
𝑉1 , the Connect server will only honor read requests for 𝑉1 . Naturally, if
the service account associated with one of these tokens does not have
any access to 𝑉3 but somehow shows up with a valid claim to it, the
Connect server will reject the claim. Even if the Connect server were
somehow tricked into honoring such a claim, the 1Password service
would not return the data, and the Connect server wouldn’t be able to
decrypt the data even if it were returned.

Signature

The third part of the bearer token is the JWT signature. The signature is
created by the associated service account using that accounts signing
key.
This signature covers the payload of the bearer token, preventing
tampering or forgery.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
How We Secure Data on Clients

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Transport Security

We designed 1Password with the understanding that data traveling over


a network can be read and tampered with unless otherwise protected.
Here we discuss the multiple layers of protections that we have in place.
Roughly speaking, there are three layers of protection:

1. 1Password’s at-rest encryption as described in How Vault Items Are


Secured applies to data when it is in transit.
Your items are always encrypted with vault keys, which in turn are
encrypted by keys that are held by you and not by the server. They
remain encrypted this way in transit.

2. TLS with best practices (Encryption, Data Integrity, Authenticity of


server)
Transport Layer Security (TLS), the successor of SSL, puts the “S” in
“HTTPS”. It encrypts data in transit and it authenticates the server so
that the client knows to whom it is talking.

3. SRP authentication and encryption


The login process provides mutual authentication. Not only does
your client prove who it is to the server, but the server proves who it is
to the client. This is in addition to the server authentication provided
by TLS. During login, a session key will be agreed upon between client
and server, and communication will be encrypted using Advanced En-
cryption Standard (AES) in Galois Counter Mode (GCM).
The protocol provides a layer of authentication and encryption that is
independent of TLS.

When discussing transport security it is useful to distinguish several dif-


ferent security notions; these are integrity, authenticity, and confiden-
tiality.24 “Confidentiality” means that the data remains secret; “authen- 24 When discussing information secu-

ticity” means that the parties in the data exchange are talking to whom rity the abbreviation “CIA” is often used
to refer to Confidentiality, Integrity, and
they think they are; and data “integrity” means that the data transmitted Availability. But when considering data
cannot be tampered with. Tampering includes not only changing the transport security, integrity and authen-
ticity play a major role. In neither case
contents of a particular message, but also preventing a message from should the abbreviation be confused with
the well-known institution: the Culinary
Institute of America.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 52

getting to the recipient or injecting a message into the conversation that


the authorized sender never sent.
Because parts of systems can fail, it is useful to design the overall
system so that a failure in one part does not result in failure. This ap-
proach is often called defense in depth.
As summarized in Table 4, each encryption layer is independent of
the others. If one fails, the others remain in place (though see Crypto
over HTTPS for an exception). The at-rest encryption described in How
Vault Items Are Secured is not part of a communication protocol, and
so authentication is not applicable to it. TLS, as it is typically used, au-
thenticates the server but does not authenticate the client.

Table 4: All these mechanisms are used


SRP+GCM TLS At-rest encryption to protect data in transit. “SRP+GCM”
refers to the combination of SRP and our
Confidentiality 3 3 3 communication encryption; “At-rest en-
Data integrity 3 3 3 cryption” refers to the normal encryption
Server Authenticity 3 3 5 when stored.

Client Authenticity 3 5 5

Data at rest

Your 1Password data is always encrypted when it is stored anywhere25 , 25 Decrypted Documents may be writ-

whether on your computer or on our servers, and it is encrypted with ten to your own device’s disk temporarily
after you have opened them.
keys that are themselves encrypted with keys that are derived from your
Master Password and Secret Key. Even if there were no other mecha-
nisms to provide data confidentiality and integrity for the data that does
reach the recipient, 1Password’s at-rest encryption sufficiently provides
both.
However, because it is designed for stored data, this layer of data en-
cryption does not ensure that messages can’t go missing or that older
data is replayed. It also does not authenticate the communication chan-
nel.

TLS

TLS is what puts the “S” in “HTTPS”. It provides encryption, data integrity,
and authenticity of the server.
Our TLS configuration includes HTTP Strict Transport Security (HSTS),
and a restricted set of cipher suites to avoid downgrade attacks. Precise
policies and choices will change more rapidly than the document you are
reading will be updated and released
Neither certificate pinning nor DNSSec have been implemented. Given
the mutual authentication described in A modern approach to authenti-

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 53

cation, the marginal gain in security provided by such measures is not


something we consider to be worth the risk of loss of availability should
those extra measures fail in some way. Following research26 and analy- 26 e.g., Jackson et al., “An Evaluation

sis27 of the value of certain security indicators and extended validation of Extended Validation and Picture-in-
Picture Phishing Attacks.”
certificates in particular, we are no longer using extended validation cer- 27 Hunt, Extended Validation Certifi-
tificates. cates are (Really, Really) Dead.

Our transport security

Our use of Secure Remote Password authentication between the client


and the server provides mutual authentication. Both the server and the
client will know that they are talking to whom they think they are.
This is in addition to the server authentication provided by TLS. Thus,
if TLS fails in some instances to provide proper authentication, the Se-
cure Remote Password still provides authentication.
Not only does the client prove its identity to the server, but the server
also proves its identity to the client.

Client delivery

This section has focused on the transport security between 1Password


clients and server. For discussion of delivery of the client itself see
Crypto over HTTPS in Beware of the Leopard.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Server Infrastructure

What the server stores

1Password stores account, team, vault, and user information in a rela-


tional database. Membership in teams and access to team resources,
including vaults, groups, and items, are determined by fields within each
database table. For example, the users table includes three fields which
are used to determine user identity and team membership. These fields
are uuid, id, and account_id. The user’s account_id field refer-
ences the accounts table id field, and it is this relationship which de-
termines membership within an account.
These relationships — users to accounts, accounts to vaults, vaults
to items — do not determine a user’s ability to encrypt or decrypt an item;
they only determine the ability to access the records. The relationship
from a user to an item within a team vault is as follows:

• A users table entry has an account_id field which references the


id field in the accounts table.

• An accounts table entry has an id field which is referenced by the


account_id field in the vaults table.

• A vaults table entry has an id field which is referenced by the vault_


id field in the vault_items table.

• A vault_items table entry has the encrypted_by, enc_overview,


and enc_details fields which reference the required encryption
key and contain the encrypted overview and detail information for an
item.

A MALICIOUS DATABASE ADMINISTRATOR may modify the relationships be-


tween users, accounts, teams, vaults, and items, but the cryptography
will prevent the items from being revealed.
Our Principle 3 states that the system must be designed for people’s
behavior, and that includes malicious behavior. A malicious database
administrator may be able to modify the relationships between users
and items, but he will be thwarted by the cryptography when he, or his

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 55

cohort in crime, attempts to decrypt the item. The cryptographic rela-


tionship between a user and an item within a team vault is as follows:

• A vault_items entry has an encrypted_by field which references


the uuid field in the archived_vault_keys table. The enc_overview
and enc_details fields in the vault_items fields are encrypted
with the key contained in the enc_vault_key field, which is itself
encrypted.

• An archived_vault_keys entry is located using the vault_id


field which equals the vault_id field in the user_vaults table for
the desired user’s user_id. The enc_vault_key field is encrypted
with the user’s public key and may only be decrypted with the user’s
private key.

• A user_vaults entry is located using the id field for the users


table entry and the id field for the vaults table entry. The enc_
vault_key field in the user_vaults entry is encrypted with the
user’s public key and may only be decrypted with the user’s private
key.

• A user’s entry is located using the email address the user provided
when signing in and the accounts entry for the matching domain. The
user’s entry includes the pub_key field which is used to encrypt all
of the user’s secrets.

With the hard work of the malicious database administrator, the user
may have access to a user_vaults table entry which has the correct
references, but since 1Password never has a copy of the unencrypted
vault key, it is impossible for the user to have a copy of the vault key
encrypted with her public key. The malicious database administrator
could copy the encrypted vault key for another user, but the user would
not have the private key needed to decrypt the encrypted vault key.
Our Principle 2 states that we should trust the math, and as has been
shown here, even if a malicious database administrator were to modify
the account information to grant a user access to an encrypted item,
the user still lacks the secrets needed for decryption. The attacker has
been foiled again!
Finally, our Principle 4 states that our design should be open for re-
view. While we hope that our database administrators don’t become
malicious, we have provided all of the information needed to grant unau-
thorized access to encrypted items knowing that they will still be pro-
tected by cryptography.

THE EXAMPLE OF A MALICIOUS DATABASE ADMINISTRATOR was chosen be-


cause the worst-case scenario is someone sitting at a terminal on the

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 56

back end server, issuing commands directly to the database, with a list
of database tables and column names in hand.

How is your data stored

1Password For Teams presently stores all database information using


an Amazon Web Services Aurora database instance. The Amazon Au-
rora service provides a MySQL compatible SQL relational database. Au-
rora provides distributed, redundant and scalable access. Some of the
tables and their uses were provided earlier.
Data is organized in the traditional manner for a relational database,
with tables consisting of row and columns 28 , with various indices de- 28 Only the cleartext columns will be

fined to improve performance. listed at present as these are the columns


which would be disclosed in the event of
Binary data, which may include compressed JSON objects represent- a data breach. The encrypted columns
ing key sets, templates, and other large items is compressed using ZLIB will be protected by the security of the
various keys which the server does not
compression as described in RFC 1950. possess.
The tables are listed as follows –

• accounts - Table which contains registered teams, which originated


from an initial signup request, approval, and registration. This ta-
ble includes the cleartext team domain name (domain), team name
(team) and avatar (avatar). Other tables will typically reference the
accounts table using the id field.

• devices - Table which contains a list of devices used by the user.


The tables includes information for performing TOTP functions which
are as-yet unimplemented. This table includes the cleartext last au-
thentication IP address (last_auth_ip), client name (client_name),
version (client_version), make (name), model (model), operat-
ing system name (os_name) and version (os_version), and web
client user agent string (user_agent).

• groups - Table which is used to reference groups of users in a team.


The groups table is primarily referenced by the group_membership
and group_vault_access tables. This table includes the cleartext
group name (group_name) and description (group_desc), public
key (pub_key) and avatar (avatar).

• invites - Table which contains user invitations. The unencrypted


acceptance_token is used to prevent inappropriate responses to
an invitation and is not relevant once a user has been fully initial-
ized. The remaining unencrypted columns are the user’s given name
(first_name), family name (last_name) and email address (email).

• signups - Table which contains user requests to use the 1Password


server. This table includes the cleartext team name (name) and email

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 57

address of the requester (email).

• users - Table which contains registered users, which originated via


the invitation process and were eventually confirmed as users. This
table includes the cleartext user name (first_name and last_name),
email address (email), a truncated copy of the all lower-case email
address (lowercase_email), the user’s public key (pub_key) and
an avatar (avatar).

Aggregating the list of unencrypted fields above, the data which are
subject to disclosure in the event of a data breach or required disclosure
are:

• Team domain name, long-form name and avatars.

• IP addresses used by devices

• TOTP secrets

• Client device makes, models, operating systems and versions

• Public keys, which are intended to be public.

• Group names, descriptions and avatar file names.

• Users full names, email address and any custom avatar file names.

How are servers deployed and managed

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Appendix A
Beware of the Leopard

“You hadn’t exactly gone out of your way to call attention to


them had you? I mean like actually telling anyone or anything.”
“But the plans were on display…”
“On display? I eventually had to go down to the cellar to find
them.”
“That’s the display department.”
“With a torch.”
“Ah, well the lights had probably gone.”
“So had the stairs.”
“But look you found the notice didn’t you?”
“Yes,” said Arthur, “yes I did. It was on display in the bottom of
a locked filing cabinet stuck in a disused lavatory with a sign on
the door saying Beware of The Leopard.”1 1 Adams, The hitchhiker’s guide to the
galaxy.
This chapter discusses places where the actual security properties
of 1Password may not meet user expectations.

Crypto over HTTPS

1Password offers a web client which provides the same end-to-end (E2E)
encryption as when using the native clients. The web client is fetched
from our servers as a set of JavaScript files (compiled from TypeScript
source) that is run and executed locally in the user’s browser on their
own machine. Although it may appear to users of the web client that
our server has the capacity to decrypt user data, all encryption occurs
on the user’s machine using keys derived from their Master Password
and Secret Key. Likewise authentication in the web-client involves the
same zero knowledge authentication scheme described in A modern
approach to authentication.
Despite that preservation of E2E encryption and zero knowledge au-
thentication, the use and availability of the web client introduces a num-
ber of significant risks.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 59

1. The authenticity and integrity of the web client depends on the in-
tegrity of the TLS connection by which it is delivered. An attacker ca-
pable of tampering with the traffic that delivers the web client could
deliver a malicious client to the user.

2. The authenticity and integrity of the web client depends on the se-
curity of the host from which it is delivered. An attacker capable of
changing the web client on the server could deliver a malicious client
to the user.

3. The web client runs in a very hostile environment: the web browser.
Some attacks on the browser (such as a malicious extension) may
be able to capture user secrets. This is discussed further in Crypto
in the browser.

4. Without the web-client users would only enter their Master Pass-
words into native clients and so would be less vulnerable to phishing
attacks.

5. The web client creates the false impression for many users that en-
cryption is not end-to-end. Although this may not have direct secu-
rity consequences for the user, it may re-enforce unfortunately low
expectations of security in general.

User mitigations include:


1. Use (code signed) native clients as much as possible.
2. Keep browser software up to date
3. Create a specific browser profile for using the web-client
4. Pay close attention to browser security warnings
5. Use on trusted network
6. Manually check certificates
Our mitigations include:
1. Use the most recent Transport Layer Security (TLS) version
2. Don’t support weak cipher suites (so avoiding many downgrade
attacks)
3. Use of safe JavaScript constructions.
4. Use HTTP Strict Transport Security (HSTS) (so avoiding HTTPS
to HTTP downgrade attacks)
5. Pin Certificates (not yet implemented)

Pinning

Always be sure to heed all browser warnings regarding TLS


! connections.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 60

Crypto in the browser

Running security tools within a browser environment brings its own per-
ils, irrespective of whether it is delivered over the web. These perils in-
clude:

1. The browser itself is a hostile environment, running processes and


content that are neither under your control nor ours.
Sandboxing within the browser provides the first line of defense. Struc-
turing our in-browser code to expose only what needs to be exposed
is another. Over the past decade, browsers have made enormous im-
provements in their security and in their isolation of processes, but it
still remains a tough environment.

2. JavaScript, the language used within the browser, offers us very lim-
ited ability to clear data from memory. Secrets that we would like the
client to forget may remain in memory longer than useful.

3. We have a strictly limited ability to use security features of the operat-


ing system when operating within the browser. See Locally exposed
Secret Keys for how this limits the tools available for protecting Se-
cret Keys when stored locally.

4. There is a paucity of efficient cryptographic functions available to run


in JavaScript. As a consequence, the WebCrypto facilities available
in the browsers that we support impose a limit on the cryptographic
methods we can use. For example, our reliance on PBKDF2 instead
of a memory hard KDF such as Argon2 is a consequence of this.

Recovery Group powers

From a cryptographic point of view, the members of a Recovery Group


have access to all of the vault keys in that group. Server policy restricts
what a member of the Recovery Group can do with that access, but if
a Recovery Group member is able to defeat or evade server policy and
gain access to an encrypted vault (for example, as cached on someone
else’s device) then that Recovery Group member can decrypt the con-
tents of that vault.
Depending on the nature of the threat to the team’s data and the re-
sources an attacker will put into acquiring it, members of the Recovery
Group and their computers may be subject to targeted attacks.

Members of the Recovery Group must keep their systems se-


! cure and must be selected with care.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 61

No public key verification

At present there is no practical method2 for a user to verify that the pub- 2 An impractical method for the users

lic key they are encrypting data to belongs to their intended recipient. to run 1Password in a debugger to in-
spect the crucial values of the public keys
As a consequence it would be possible for a malicious or compromised themselves. Additionally, the 1Password
1Password server to provide dishonest public keys to the user, and run command line utility (as of version 0.21),
has an undocumented method to display
a successful Man in the Middle (MITM) attack. Under such an attack, it public keys and fingerprints of users.
would be possible for the 1Password server to acquire vault encryption MITM: A Man in the Middle attack has Al-
keys with little ability for users to detect or prevent this. ice believing that she is encrypting data
to Bob, while she is actually encrypting
This is discussed in greater detail in Verifying public keys. her data to a malicious actor who then
re-encrypts the data to Bob. The typ-
ical defenses such an attack is for Al-
Limited re-encryption secrecy ice and Bob to manually verify that they
are using the correct public keys for each
other. The other approach is to rely on a
Revocation trusted third party who independently ver-
ifies and signs Bob’s public key..
Removing someone from a vault, group, or team is not cryptographically
enforced. Cryptographic keys are not changed.
A member of a vault has access to the vault key, as a copy of the
vault key is encrypted with that member’s public key. When someone
is removed from a vault, that copy of the vault key is removed from the
server, and the server will not allow that member to get a copy of the
vault data.
If prior to being removed from a vault the person makes a copy of the
vault key which they store locally they will be able to decrypt all future
data in that if they find a way to obtain the encrypted vault data. This is
illustrated in Story 9. Note that this requires that the attacker both plan
ahead and somehow acquire updated data.

Story 9: Mr. Talk is not a good team player

Monday Patty (a dog and Team administrator) adds Friday Mr. Talk manages to steal a cached copy of the
Mr. Talk (neighbor's cat) to the Squirrel Watchers encrypted vault from Molly's poorly secured device.
vault. Molly (another dog) is already a member. (Molly still hasn't learned the importance of using a
device passcode on her phone.)
Tuesday Mr. Talk makes a copy of all of his keys, and
he stores that copy separately from 1Password. Saturday Mr. Talk decrypts the data he stole on Friday
using the keys he saved on Tuesday and then is able
Wednesday Mr. Talk is discovered stealing Patty's toys
to see the hiding place that Patty added on Thursday.
and so is expelled from the vault (and from the
team).
Mr. Talk needed to acquire a copy of the encrypted data
Thursday Patty updates the Squirrel Watchers vault that the server would no longer give him to launch the
with the new hidding place for her toys. attack, and he needed to anticipate being fired.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 62

Your mitigations

If you feel that someone removed from a vault may have a store of their
vault keys and will somehow be able to acquire new encrypted vault
data despite being denied access by server policy, then it is possible to
create a new vault (which will have a new key), and move items from the
old vault to the new one. Someone revoked from a vault will not be able
to decrypt the data in the new vault no matter what encrypted data they
gain access to.

Master Password changes don't change keysets

A change of Master Password or Secret Key does not create a new per-
sonal keyset; it only changes the Master Unlock Key (MUK) with which
the personal keyset is encrypted. Thus an attacker who gains access
to a victim’s old personal keyset can decrypt it with an old Master Pass-
word and old Secret Key and use that to decrypt data that has been
created by the victim after the change of the Master Password.

Your mitigations

A user’s personal keyset may be replaced by voluntarily requesting that


their account be recovered. This will create a new personal keyset which
will be used to re-encrypt all of the vault keys and other items which were
encrypted with the previous personal keyset.

Local client Master Password has control of other ac-


count Master Passwords

Most 1Password client applications can handle multiple 1Password user


accounts. It is common – perhaps even typical – for an individual to
have a 1Password membership as part of the business or organization
they are a member of as well has being a member of their own 1Pass-
word family account.
Most 1Password clients are designed to unlock all accounts when
unlocked. The account which will locally contain the encrypted secrets
to unlock the others is called the primary account. It is (for most clients)
the first account which the client signed into. The precise details of
how this is handled can vary from client to client, but in essence the
secrets needed to unlock a secondary account (the MUK and SRP-𝑥) are
encrypted with (keys encrypted by) the MUK of the primary account.
The security risk is that the Master Password policies that may be
set and expected by an organization will not be followed in practice if

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 63

the account with such policies is a secondary account for a particular


client.

Story 10: A weak primary Master Password unlocks a stronger account

Molly (a dog) is a member of a business account for her family account first when she set up 1Password on
Rabbit Chasers Inc., and Patty, an administrator for Rab- her device. She added her work account later. When
bit Chasers Inc., has used the features of a business ac- she first added her work account to that device, she did
count to set very strict Master Password requirements have to enter the strong Master Password for that ac-
for all of its members. And so Molly's Master Pass- count; but every time she unlocks 1Password there af-
word for that account does conform to that account's ter, she unlocks both accounts with squirrelrabbit
requirements. Patty is naturally under the impression
that Molly must use the strong Master Password when One day the evil neighborhood cat, Mr. Talk, steals
unlocking her work account. Molly's device. Mr. Talk can guess Molly's weak family
account Master Password, and unlocking 1Password
But Molly is also a member of a family account, and on Molly's computer can now unlock Molly's work ac-
in her family account she has set her password to be count as well.
squirrelrabbit, which is easily guessable by any-
one familiar with Molly. Furthermore, Molly also set up Patty is not amused.

An additional problem with this scheme is that users are more likely
to forget that they have a separate Master Password for their secondary
accounts, and so are more likely to forget those Master Passwords.

Mitigations

At present there are no simple mitigations other than for users and ad-
ministrators to be aware of the risk. We are actively exploring alternative
ways to handle unlocking of multiple accounts by the client, but we do
not wish to announce any feature before it is delivered.

Policy enforcement mechanisms not always clear to user

Readers of this document will understand from Access control enforce-


ment that some controls (such as ability to decrypt and read the con-
tents of a vault) are enforced through cryptography, while others are
enforced only through the client user interface (such as the ability to
print the contents of a vault that they do have use access to). The se-
curity properties of those differ enormously. In particular, it is very easy
to evade policy that is only enforced by the client.
Many team administrators will not have read this document or other
places where the distinction is documented. Therefore, there is a po-
tential for them to get an incorrect impression of the security conse-
quences of their decisions.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 64

Malicious client

There is no technical barrier to a malicious client, which might generate


bad keys or send keys to some third party.

Vulnerability of server data

It should be assumed that governments, whether through law enforce-


ment demands or other means, may gain access to all of the data that
we have or that our data hosting provider has. This may happen with or
without our knowledge or consent. The same is true for non-governmental
entities which may somehow obtain server data. Your protection is to
have a good Master Password and to keep your Secret Key secure.
Although we may resist LE requests, we will obey the laws of the ju-
risdictions in which we are obliged to do so.

Malicious processes on your devices

Malware that can inspect the memory of your computer or device when
the 1Password client has unlocked your data will be able to extract se-
crets from the 1Password process. Malware that can install a malicious
version of 1Password and have you execute it will also be able to extract
your secrets. Once malware running on a system has sufficient power,
there is no way in principle to protect other processes running on that
system.
But we must also consider the threat posed by less powerful mal-
ware, and in particular with respect to the exposure of the Secret Key.

Locally exposed Secret Keys

Once a client is enrolled, it will store a copy of the Secret Key on the local
device. Because the Secret Key must be used to derive the user’s MUK it
cannot be encrypted by the same MUK. Although lightly obfuscated, the
Secret Key is stored on the local device unencrypted. Where possible,
the Secret Key will be put into something provided by your system for
storing authentication secrets. For 1Password for Mac and 1Password
for iOS that will use the iOS and OS X keychains respectively. But when
1Password has been used from a web browser, the Secret Key is stored
in the browser’s local data store, a fairly exposed location.
Recall that the Secret Key is designed so that an attacker will not be
in a position to launch an offline password guessing attack if she cap-
tures data from the server alone. It does succeed at that goal, but in the
current version, our ability to protect the Secret Key on your computer is
limited by the tools available to that particular client.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 65

Revealing who is registered

If Oscar suspects that [email protected] is a registered user


in a particular Team or Family it is possible for him to submit requests to
our server which would allow him to confirm that an email address is or
isn’t a member of a team. Note that this does not provide a mechanism
for enumerating registered users; it is only a mechanism that confirms
whether a particular user is or isn’t registered. Oscar must first make
his guess and test that guess.
We had attempted to prevent this leak of information and believed
that we had. A difficult to fix design error means that we must withdraw
from our claim of that protection.

Use of email

Both invitations and recovery messages are sent by email. It is very


important that when administrators or Recovery Group members take
actions that result in sensitive email being sent that they check with
the recipients through means other than email that the messages were
received and acted upon.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Appendix B
Secure Remote Password

In A modern approach to authentication we spoke of mathematical magic

Using some mathematical magic the server and the client are
able to send each other puzzles that can only be solved with knowl-
edge of the appropriate secrets, but no secrets are transmitted dur-
ing this exchange.

This appendix offers some insight into that magic.


We insist on this magic even though 1Password’s principle source of
security is through end-to-end (E2E) encryption instead of authentica-
tion. We need to ensure that even if our authentication system is com-
promised it would never provide an attacker the means to learn anything
about the secrets needed to decrypt someone’s data.
We use Secure Remote Password (SRP) as our password-authenticated
key exchange (PAKE) to achive the authentication goals set on in Figure 7
on page 15. With SRP, the client is able to compute from a password
(and a few other things) a number that is imaginatively called 𝑥. This
secret 𝑥 is never transmitted.

Registration

The client computes 𝑥 from the user’s Master Password and Secret Key
and from some non-secret information as described in With a strong
KDF.
During first registration, the client will compute from 𝑥 a verifier, 𝑣,
which will be sent to the server during initial registration.
During initial registration, the client sends 𝑣 to the server, along with
a non-secret salt. The client and the server also need to agree on some
other non-secret parameters. The verifier is the only sensitive informa-
tion ever transmitted, and it is sent only during initial registration.
 The verifier 𝑣 cannot be used directly to compute either 𝑥 or the password
that was used to generate 𝑥. However, it is similar to a password hash in
that it can be used in password cracking attempts. That is, an attacker who has

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 67

acquired 𝑣 can make a password guess and see if processing that guess yields
an 𝑥 that produces the 𝑣. Our use of two-secret key derivation (2SKD) makes
it impossible to launch such a cracking attack without also having the user’s
Secret Key.

Sign-in

The client will be able to compute 𝑥 from the Master Password, Secret
Key, and salt as described in the section on Key derivation.1 The server 1 The client may locally store 𝑥 in a way

has 𝑣. Because of the special relationship between 𝑥 and 𝑣, the server that is encrypted with keys that depend
on the Master Unlock Key (MUK) instead
and client can present each other mathematical challenges that achieve of recalculating it afresh each time.
the following

1. Proves to the server that the client has the 𝑥 associated with 𝑣.

2. Proves to the client that the server has the 𝑣 associated with 𝑥,

3. Lets the client and server agree on a key 𝑆 which can be used for
further encrypting the session.

During that exchange, no information about the user’s password is re-


vealed, nor is any information about 𝑥 or 𝑣 or 𝑆 revealed to someone lis-
tening in. Furthermore, the mathematical challenge that the client and
the server present to each other is different each time, so one session
cannot be replayed.

With a strong KDF

The standards documents describing SRP offer the generation of 𝑥 from


the password, 𝑃; salt, 𝑠; and username, 𝐼; as in Figure B.1. The values
of 𝑔 and 𝑁 are public parameters that will be further described in The
math of SRP.

Figure B.1: Deriving 𝑥 and 𝑣 as given in


𝑥 ← SHA1(𝑠‖SHA1(𝐼‖" ∶ "‖𝑃)) RFC5054.
𝑣 ← 𝑔𝑥 mod 𝑁

Although it is infeasible to compute 𝑃 from 𝑥 or to compute 𝑥 from 𝑣, Infeasible: Effectively impossible. It is


it is possible to use knowledge of 𝑣 (and the public parameters) to test not technically impossible for a single
monkey placed in front a manual type-
a candidate password, 𝑃′ . All an opponent needs to do is compute 𝑣′ writer for six weeks to produce the com-
from 𝑃′ and see if 𝑣′ equals 𝑣. If 𝑣′ = 𝑣 then the guessed password 𝑃′ is plete works of Shakespeare. It is, how-
ever, infeasible, meaning that the proba-
(almost certainly) the correct password. bility of it happening is so outrageously
As discussed elsewhere, we offer three defenses against such an at- low that can be treated as impossible.
tack if an attacker does obtain 𝑣 (which is stored on our server and is
transmitted during initial registrations).

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 68

1. We use 2SKD with the completely random Secret Key as one of


the secrets in deriving 𝑥. Password cracking is not a remotely
feasible approach for an attacker without the Secret Key.
2. We use a slower key derivation function for deriving 𝑥 than the
one shown in Figure B.1, so that even if an attacker obtains both
𝑣 and the user’s Secret Key, each guess is computationally ex-
pensive.
3. We encourage the use of strong Master Passwords. Thus an
attacker who has both 𝑣 and the Secret Key will need to make a
very large number of guesses.
For a discussion of (1) see Secret Key. The other two mechanisms come
into play only if the Secret Key is acquired from the user’s device.
It should be noted that although the password processing shown in
Figure B.1 is presented in RFC 5054,2 the standard does not insist on it. 2 Taylor et al., Using the Secure Remote

Indeed, RFC 5054 refers to RFC 29543 §3.1 which states Password (SRP) Protocol for TLS Authen-
tication.
3 T. Wu, The SRP Authentication and
SRP can be used with hash functions other than [SHA1]. If the
Key Exchange System.
hash function produces an output of a different length than [SHA1]
(20 bytes), it may change the length of some of the messages in
the protocol, but the fundamental operation will be unaffected. […]
Any hash function used with SRP should produce an output of
at least 16 bytes and have the property that small changes in the
input cause significant nonlinear changes in the output. [SRP] cov-
ers these issues in more depth.

So in our usage, we compute 𝑥 using the key derivation method de-


scribed in detail in Key derivation.

The math of SRP

Math background

The client will have its derived secret 𝑥, and the server will have its veri-
fier, 𝑣. The mathematics that allows for the client and server to mutually
authenticate and to arrive at a key without exposing either secret is an
extension of Diffie-Hellman key exchange (DHE). This key exchange pro-
tocol is, in turn, based on the discrete logarithm problem (DLP).
Recall (or relearn) from high school math

(𝑏𝑛 )𝑚 = 𝑏𝑛𝑚 (B.1)

Equation B.1 holds true even if we restrict ourselves to integers and do


all of this exponentiation modulo some number 𝑁.
The crux of the DLP is that if we pick 𝑁 and 𝑔 appropriately in equa-
tion B.2
𝑣 = 𝑔𝑥 (mod 𝑁) (B.2)

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 69

it is easy (for a computer) to calculate 𝑣 when given 𝑥, but it is infeasible


to compute 𝑥 when given 𝑣.
Calculating 𝑥 from 𝑣 (given 𝑔 and 𝑁) is computing the discrete loga-
rithm of 𝑣. To ensure that calculating the discrete logarithm is, indeed,
infeasible, 𝑁 must be chosen carefully. The particular values of 𝑁 and
𝑔 used in 1Password are drawn from the groups defined in RFC 3526.4 4 Kivinen and Kojo, More Modular Expo-

Given current and anticipated computing power, 𝑁 should be at least nential (MODP) Diffie-Hellman groups for
Internet Key Exchange (IKE).
2048 bits.

Diffie-Hellman key exchange

If Alice and Bob have agreed on some 𝑔 and 𝑁, neither of which need to
be secret, then Alice can pick a secret random number 𝑎 and calculate
𝐴 = 𝑔𝑎 (mod 𝑁). Bob can pick his own secret, 𝑏, and calculate 𝐵 =
𝑔𝑏 (mod 𝑁). Alice can send 𝐴 to Bob, and Bob can send 𝐵 to Alice.
Assuming an appropriate 𝑁 and 𝑔, Alice will not be able to determine
Bob’s secret exponent 𝑏, and Bob will not be able to determine Alice’s
secret exponent 𝑎. No one listening in – even with full knowledge of 𝑔,
𝑁, 𝐴, and 𝐵 – will be able to determine 𝑎 or 𝑏.5
There is, however, something that both Alice and Bob can calculate Figure B.2: Sophie Germain (1776–1831)
proved that Fermat’s Last Theorem holds
that no one else can. In what follows it goes without saying (or writing)
for exponents 𝑛 = 2𝑞 + 1 where both 𝑞
that all operations are performed modulo 𝑁. and 𝑛 are prime. Primes like 𝑞 are now
Alice can compute called “Sophie Germain primes”. Ger-
main stole the identity of a male mathe-
matics dropout to enter into correspon-
𝑆 = 𝐵𝑎 (B.3) dence with mathematicians in France
= (𝑔𝑏 )𝑎 because 𝐵 = 𝑔𝑏 (B.4) and elsewhere in Europe. It is only af-
ter they had come to respect her work
= 𝑔𝑏𝑎 because of (B.1) (B.5) that she could reveal her true identity.
Her fame at the time was mostly for her
Equation B.3 is what Alice actually computes because she knows her work in mathematical physics, but it is
her work in number theory that plays a
secret 𝑎 and has been given Bob’s public exponent. But note that the role in cryptography today.
secret, 𝑆, that Alice computes is the same as what we see in (B.5). 5 There are numerous mathematical

Bob can compute assumptions behind the claim that it is


infeasible to determine 𝑎 from 𝐴. Mathe-
maticians are confident that some of the
𝑆 = 𝐴𝑏 (B.6) things involved are “hard” to compute but
= (𝑔𝑎 )𝑏 because 𝐴 = 𝑔𝑎 (B.7) lack full mathematical proof. There are
also some physical assumptions behind
= 𝑔𝑎𝑏 because of (B.1) (B.8) the security claims. We know that the rel-
evant computations we would like to be
From equations B.8 and B.5 we see that both Alice and Bob are com- hard are not hard using large quantum
computers of a certain sort. We are as-
puting the same secret, 𝑆. They do so without revealing any secrets to suming, with some justification, that con-
each other or anyone listening in. structing the appropriate sort of quan-
tum computer is beyond anyone’s reach
for at least a decade. We do antici-
WE USE THE SESSION KEY, 𝑆, as an additional encryption and authentica- pate the development of post-quantum
tion layer on the client/server communication for that session. This is cryptographic algorithms over the next
decade or so, but nothing is yet suitably
in addition to the encryption and authentication provided by TLS and the mature to be of use to us now.
authenticated encryption of the user data.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 70

All of the secrets used and derived during DHE are ephemeral. They Diffie-Hellman key exchange
are created for the individual session alone. Alice will create a new 𝑎 for
each session; Bob will create a new 𝑏 for each session; and the derived Alice Bob

session key, 𝑆, will be unique to that session. One advantage of this is 𝑎 ←$ ℤ𝑁


that a successful break of these secrets by some attacker will allow the 𝐴 ← 𝑔𝑎
attacker to decrypt the messages of that session only. 𝐴

𝑏 ←$ ℤ𝑁
Authenticated key exchange
𝐵 ← 𝑔𝑏
DHE, as described in the previous section, allows Alice and Bob to agree
𝐵
on an encryption key for their communication. It does not, however, in-
clude a mechanism by which either Alice or Bob can prove to the other k ← 𝐵𝑎 k ← 𝐴𝑏
that they are Alice and Bob. Our goal, however, is to have mutual au-
thentication between the 1Password client and server. Figure B.3: In Diffie-Hellman key ex-
In order for Alice to prove to Bob that she is the same “Alice” he has change, 𝑁 and 𝑔 are already known to
all parties and all exponentiation is done
corresponded with previously, she needs to hold (or regenerate) a long mod𝑁. The form given here is some-
term secret. At the same time we do not want to transmit any secrets what less general than it could be in or-
der to avoid having to introduce more no-
during authentication.
tation and abstractions.
SRP builds upon DHE, but adds two long term secrets. 𝑥 is held (or
regenerated) by the client and 𝑣, the verifier, is stored by the server. The
verifier is created by the client from 𝑥 and transmitted only during initial
enrollment, and that is the only time a secret is transmitted.
As described in detail in Key derivation, 𝑥 is derived from a Master
Password and Secret Key. The client computes 𝑣 = 𝑔𝑥 and sends 𝑣 to
the server during initial enrollment.
During a normal sign-in, the client picks a secret random number 𝑎
and computes 𝐴 = 𝑔𝑎 as described above in Diffie-Hellman key ex-
change. It sends 𝐴 to the server (along with its email address).
The server picks a random number, 𝑏, but unlike unauthenticated DHE,
it computes 𝐵 as 𝐵 = 𝑘𝑣 + 𝑔𝑏 and sends that to the client.
Everyone (including a possible attacker) can now compute a non-
secret 𝑢 from 𝐴 and 𝐵 by using a hash.6 The server will calculate a 6 It doesn’t matter too much how 𝑢 is

raw 𝑆 as created, but it must be standardized so


𝑏 that the server and client do it the same
𝑆 = (𝐴𝑣𝑢 ) (B.9) way. We use the SHA256 hash of 𝐴|𝐵.

The client will calculate the same raw 𝑆 as


𝑎+𝑢𝑥
𝑆 = 􏿴𝐵 − 𝑘𝑔𝑥 􏿷 (B.10)

The client and server will calculate the the same raw 𝑆 if 𝑣 is constructed
from 𝑥 as in equation B.2 and 𝐴 and 𝐵 are constructed as described
above. The proof is left as an exercise to the reader. (And the proof
that this is the only feasible way for the values to be the same is left for
advanced texts.)

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Appendix C
Strengthening User Master Passwords

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

We have four mechanisms that make it more difficult for an attacker


to acquire a Master Password.

1. Master Password cannot be guessed at in absence of the Secret Key.

2. Master Password is never transmitted

3. Encourage use of strong Master Password

4. Slow hashing of Master Password during key derivation.

Methods 1 and 2 are discussed in detail elsewhere, so this appendix


will elaborate on 3 and 4.

Some words about strong Master Passwords

Master Passwords need to be both strong and usable. People will not
do what is impossible of them, and any security design that expects the
impossible of people is bound to fail.

Slow hashing

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Appendix D
Securing Documents

Incomplete Content
We’re sorry. This section of this document is not yet ready. Any-
thing you see in this section is at most an outline of things to
come.

• Documents have their own keys which are encrypted with the vault
key.

• Decrypted documents may live in cache files in the local file system.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Appendix E
Verifying public keys

“Key verification is a weak point in public-key cryptography”1 1 Free Software Foundation, The GNU
Privacy Handbook.
At present there is no robust method for a user to verify that the public
key they are encrypting data to belongs to their intended recipient.2 As 2 The role of public key encryption in

a consequence, it would be possible for a malicious or compromised 1Password is described in How Vault
Items Are Securely Shared and in Restor-
1Password server to provide dishonest public keys to the user and run ing a User’s Access to a Vault.
a successful Man in the Middle (MITM) attack. Under such an attack, it
would be possible for the 1Password server to acquire vault encryption
keys with little ability for users to detect or prevent this.
Story 11 illustrates what might happen in the case of such an attack
during vault sharing.

Story 11: Mr. Talk is the cat in the middle

Molly (a dog) joins a team, and as she does, she gen- lic key. But Mr. Talk, now in control of the server, doesn't
erates public key pair. Let's say that the public key ex- send her Molly's real public key; instead he sends the
ponent 17 and public modulus 4171: pk𝑀 = (17; 4171). fake public key that he created. Patty will encrypt the
(Of course in the actual system that modulus would be vault key, 1792, using the fake public key that Mr. Talk
hundreds of digits long.) Only Molly has access to the created. Encrypting 1729 with (17; 4183) yields 2016.
corresponding private part, 𝑑𝑀 = 2609. When Patty (an- Patty sends that up to the server for delivery to Molly.
other dog) encrypts something using (17; 4171) only
Molly, with her knowledge that 𝑑𝑀 is 2609 can decrypt Mr. Talk uses his knowledge of 𝑑𝑇 to decrypt the mes-
it. sage. So he learns that the vault key is 1729. He then
encrypts that with Molly's real public key, (17; 4147),
But now suppose that Mr. Talk (the neighbor's cat)
and gets 2826. When Molly next signs in she gets that
has taken over control of the 1Password server and
encrypted vault key and is able to decrypt it using her
database. Mr. Talk creates another public key, pk𝑇 =
own secret, 𝑑𝑀 . The message she receives is correctly
(17; 4183). Because Mr. Talk created that key, he knows
encrypted with her public key, so she has no reason to
that the corresponding private part of the key, 𝑑𝑇 , is
suspect that anything went wrong.
1905.
Patty wants to share a vault with Molly. Suppose that Mr. Talk was able to learn the secrets that Patty sent to
vault key is 1729. (In real life that key would be a much Molly, but he was not able to learn the secret parts of
bigger number.) So she asks the server for Molly's pub- their public keys.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 74

 The use of plain RSA (and small numbers) in Story 11 was to simplify the
presentation. The underlying math of the RSA algorithm must be wrapped
in a construction that addresses the numerous and large dangers of plain RSA.

 For those who wish to check out the math of the story recall that 𝑑 =
𝑒−1 mod 𝜙(𝑁); that for encrypting a message 𝑐 = 𝑒𝑚 mod 𝑁; and that
decrypting a ciphertext 𝑚 = 𝑐𝑑 mod 𝑁. In our example 𝜙(4157) = (43 − 1)(97 −
1) = 4032, and 𝜙(4183) = (47 − 1)(89 − 1) = 4048.

For simplicity, story 11 only works through adding someone to a vault,


but the potential attack applies to any situation in which secrets are en-
crypted to another’s public key. Thus, this applies during the final stages
of recovery or when a vault is added to any group as well as when a vault
is shared with an individual. This threat is probably most significant with
respect to the automatic addition of vaults to the recovery group as de-
scribed in Restoring a User’s Access to a Vault.

Types of defenses

The kind of problem we describe here is notoriously difficult to address,


and it is fair to say that there are no good solutions to it in general. There
are, however, two categories of (poor) solution that go some way toward
addressing it in other systems.

Trust hierarchy

The first defense requires everyone with a public key to prove that the
key really is theirs to a trusted third party. That trusted third party would
then sign or certify the public key as belonging to who it says it belongs
to. The user of the public key would check the certification before en-
crypting anything with that key.
Creating or using a trust hierarchy isn’t particularly feasible within
1Password, as each individual user would need to prove to a third party
that their key is theirs. That third party cannot be AgileBits or the 1Pass-
word server – the goal is to defend against a MITM attack launched from
within the 1Password server. Although the 1Password clients could as-
sist in some of the procedure, it would place costly burden on each user
to prove their ownership of a public key and to publish it.

User-to-user verification

The second sort of approach is to enable users to verify keys them-


selves. They need to perform that verification over a communication
channel that is not controlled by 1Password. Patty needs to talk directly
to Molly, asking Molly to describe pk𝑀𝑎 in a manner that will allow Patty
to distinguish it from a maliciously crafted pk𝑀𝑓 .

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 75

In the case of RSA keys, the crucial values may include a number that
would be hundreds of digits long if written out in decimal notation. Thus
a cryptographic hash of the crucial numbers is used, which is then made
available presented in some form or other. Personal keysets also con-
tain an Elliptic Curve Digital Signature Algorithm (ECDSA) key pair that
is used for signing. These keys are far shorter than RSA keys, but may
still be too large to be directly compared by humans. Recent research3 3 Dechand et al., “An Empirical Study
of Textual Key-Fingerprint Representa-
has confirmed that long suspected belief that the form of fingerprints
tions.”
makes comparisons difficult and subject to security sensitive errors.
Such research does point to ways in which the form of fingerprints can
be improved, and it is research that we are closely following.
The difficulty for users with verifying keys via fingerprints isn’t just
the technicalities of the fingerprint itself, but in understanding what they
are for and how to make use of them. As Vaziripour, J. Wu, O’Neill, et al.
point out, “The common conclusion of [prior research] is that users are
vulnerable to attacks and cannot locate or perform the authentication
ceremony without sufficient instruction. This is largely due to users’ in-
complete mental model of threats and usability problems within secure
messaging applications.”4 4 Vaziripour, J. Wu, O’Neill, et al., “Ac-

Users may need to understand that tion Needed! Helping Users Find and
Complete the Authentication Ceremony
in Signal.”
1. Fingerprints are not secret

2. Fingerprints should be verified before using the key to which they are
bound

3. Fingerprints must be verified over an authentic and tamper-proof chan-


nel

4. That communication channel must be different than the communi-


cation system the user is trying to establish.

The developers of Signal, a well-respected secure messaging system,


summarized some difficulties with fingerprints:5 5 Marlinspike, Safety number updates.

• Publishing fingerprints requires users to have some rough con-


ceptual knowledge of what a key is, its relationship to a finger-
print, and how that maps to the privacy of communication.
• The practice of publishing fingerprints is based in part on the
original idea that users would be able to manage those keys
over a long period of time. This has not proved true, and has
become even less true with the rise of mobile devices.

Although their remediation within Signal has a great deal of merit,


only a small portion of Signal users attempt the process of key verifi-
cation. When they are instructed to do so (in a laboratory setting) they
often do not complete the process successfully.6 6 Vaziripour, J. Wu, O’Neill, et al., “Is
that you, Alice? A Usability Study of the
Authentication Ceremony of Secure Mes-
saging Applications”; Vaziripour, J. Wu,
O’Neill, et al., “Action Needed! Helping
Users Find and Complete the Authentica-
tion Ceremony in Signal.”
[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)
Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 76

The problem remains

We are aware of the threats posed by MITM, and users should be aware
of those, too. We will continue to look for solutions, but we are unlikely
to adopt an approach that places a significant additional burden on the
user unless we can have some confidence in the efficacy of such a so-
lution.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Glossary

Account Key
Previous name for the Secret Key. see Secret Key

Advanced Encryption Standard (AES)


Probably the best studied and most widely used symmetric block ci-
pher. 17, 46, 51

authentication
Authentication is the process of one entity proving its identity to an-
other. Typically the authenticating party does this by proving to the
verifier that it knows a particular secret that only the authenticator
should know. 53, 70

authenticity
Data authenticity involves knowing who created or sent a message.
The typical mechanisms used for this with respect to data are often
the same as those used to protect data integrity; however, some au-
thentication process may be necessary prior to sending the data. 51

BigNum
Some cryptographic algorithms involve arithmetic (particularly expo-
nentiation) on numbers that are hundreds of digits long. These re-
quire the use of Big Number libraries in the software. 27

Chosen Ciphertext Attack (CCA)


A class of attacks in which the attacker modifies encrypted traffic in
specific ways and may learn plaintext by observing how the decryp-
tion fails. 17

confidentiality
Data confidentiality involves keeping the data secret. Typically this is
achieved by encrypting the data. 51

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 78

Cryptographically Secure Pseudo-Random Number Generator (CSPRNG)

A random number generator whose output is indistinguishable from


truly random. Do not worry about the “pseudo” in the name. A CSPRNG
is fully appropriate for generating cryptographic keys. 23

Diffie-Hellman key exchange (DHE)


Diffie-Hellman key exchange is an application of the discrete loga-
rithm problem (DLP) to provide a way of for parties to decide upon a
secret key without revealing any secrets during the communication.
It is named after Whitfield Diffie and Martin Hellman who published
it in 1976. 68, 70

discrete logarithm problem (DLP)


If 𝑦 ≡ 𝑔𝑥 mod 𝑝 (for a carefully chosen 𝑝 and some other conditions)
it is possible to perform exponentiation to compute 𝑦 from the other
variables, but it is thought to be infeasible to compute 𝑥 from 𝑦. Com-
puting 𝑥 from 𝑦 (and the other parameters) is reversing the exponen-
tiation and so is taking a logarithm. 68

ECDSA using P-256 and SHA-256 (ES256)


A digital signature algorithm using Elliptic Curve Digital Signature Al-
gorithm (ECDSA) and P-256 as named is §3.1 of RFC 7518. 48

Ellipic Curve Cryptography (ECC)


A public key encryption system that is able to work with much smaller
keys than are used for other public key systems. 19

Elliptic Curve Digital Signature Algorithm (ECDSA)


The elliptic curve digital signature algorithm is digital signature al-
gorithm based on elliptic curve cryptography described in FIPS PUB
186-4.7 . 24, 48, 75 7 National Institute of Standards and
Technology, FIPS PUB 186-4: Digital Sig-
Emergency Kit nature Standard (DSS).

A piece of paper that contains your Secret Key, Master Password, and
details about your account. Your Emergency Kit should be stored in
a secure place and used if you forget your Master Password or lose
your Secret Key. 11, 12

end-to-end (E2E)
Data is only encrypted or decrypted locally on the users’ devices with
keys that only the end users possess. This protects the data confi-
dentiality and integrity from compromises during transport or remote
storage. 13, 15, 16, 58, 66

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 79

Galois Counter Mode (GCM)


An authenticated encryption mode for use with block ciphers. 17, 46,
51

Hash-based Key Derivation Function (HKDF)


A key derivation function that uses HMAC for key extraction and ex-
pansion.8 Unlike PBKDF2, it is not designed for password strength- 8 Krawczyk, Cryptographic Extraction

ening. 18, 26 and Key Derivation: The HKDF Scheme.

HTTP Strict Transport Security (HSTS)


Strict Transport Security has the server instruct the client that inse-
cure HTTP is never to be used when talking to the server. 52, 59

infeasible
Effectively impossible. It is not technically impossible for a single
monkey placed in front a manual typewriter for six weeks to produce
the complete works of Shakespeare. It is, however, infeasible, mean-
ing that the probability of it happening is so outrageously low that can
be treated as impossible. 67, 69

integrity
Data integrity involves preventing or detecting tampering with the data.
Typically this is done through authenticated encryption or message
authentication. 51

JSON Object Signing and Encryption (JOSE)


A suite of specifications for creating and using Javascript objections
for data protection and authentication. It includes JSON Web Key
(JWK) and JSON Web Token (JWT). 48

JSON Web Key (JWK)


A format for describing and storing cryptographic keys defined in RFC
75179 . 18, 26, 27, 30, 46 9 Jones, JSON Web Key (JWK).

JSON Web Token (JWT)


A means of representing claims to be transferred between two par-
ties and is defined in RFC 7517. These are typically signed crypto-
graphically.. 47–49

key encryption key (KEK)


An encryption key that is used for the sole purpose of encrypting an-
other cryptographic key. 17

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 80

Key Set
How collections of keys and their metadata are organized within 1Pass-
word for Teams. 18–20

Man in the Middle (MITM)


A Man in the Middle attack has Alice believing that she is encrypting
data to Bob, while she is actually encrypting her data to a malicious
actor who then re-encrypts the data to Bob. The typical defenses
such an attack is for Alice and Bob to manually verify that they are
using the correct public keys for each other. The other approach is
to rely on a trusted third party who independently verifies and signs
Bob’s public key.. 61, 73, 74, 76

Master Password
Your Master Password is something that you must remember and
type when unlocking 1Password. It is never transmitted from your
devices. 6, 9–14, 16–18, 24–26, 28, 29, 31, 33, 37–39, 42, 43, 45, 52,
58, 59, 62, 64, 66–68, 70, 71, 82

Master Unlock Key (MUK)


Key used to encrypt a user’s private key. It is derived from the user’s
Master Password and Secret Key. 18, 24–28, 30, 31, 39, 42, 45, 46,
62, 64, 67

multi-factor authentication (MFA)


Requiring a combination of secrets (broadly speaking) such as a pass-
word or a cryptographic key held on a device to grant access to a
resource. 16, 88

mutual authentication
Mutual authentication is a process in which all parties prove their
identity to each other. 53, 80

nonce
A non-secret value used in conjunction with an encryption key to en-
sure that relationships between multiple plaintexts are not preserved
in the encrypted data. Never encrypt different data with the same
combination of key and nonce. Ideally, most software developers us-
ing encryption – as they should – would never have to interact with
or , much less understand the difference between them. We do not
live in such a world. 46

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 81

P-256
A popular standard10 elliptic curve and public parameters for ellip- 10 Turner et al., Elliptic Curve Cryptogra-

tic curve public key cryptography, such as with Elliptic Curve Digital phy Subject Public Key Information.

Signature Algorithm (ECDSA). When used appropriately, it provides


128-bit security.. 24

password-authenticated key exchange (PAKE)


Password-based key exchange protocol allows for a client and a server
to mutually authenticate each other and establish a key for their ses-
sion. It relies on either a secret each have or related secrets that each
have. 15, 16, 66

primary account
A local client may distinguish a single account that it knows about
as the primary account. Unlocking this account may automatically
unlock secondary accounts which the the client may handle. 62, see
also secondary account

Recovery Group
The 1Password for Teams Group that has a copy of the vault keys
for vaults which may need to be recovered if Master Passwords or
Secret Keys of vault members are lost. 19, 38–42, 60, 65

representational state transfer (REST)


A software design approach which, among other things, allows a ser-
vice to interact with clients in a simple and predictable manner. 81

RESTful
The adjectival form of representational state transfer (REST). 43, see
rest

Recovery Group Member


A member of a Recovery Group. see Recovery Group

salt
A cryptographic salt is a non-secret value that is added to either an
encryption process or hashing to ensure that the result of the encryp-
tion is unique. Salts are typically random and unique. 18, 24, 26, 27,
66, 67

secondary account
An account which a client may unlocked automatically when the pri-
mary account is unlocked. 63, see also primary account

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 82

Secret Key
A randomly generated user secret key that is created upon first signup.
It is created and stored locally. Along with the user’s Master Pass-
word it is required both for decrypting data and for authenticating to
the server.
The Secret Key prevents an attacker who has acquired remotely stored
data from attempting to guess a user’s Master Password.
Previously known as the “Account Key”. 9–14, 16–19, 23–29, 31, 33,
37–39, 42, 43, 46, 52, 58, 60, 62, 64, 66–68, 70, 71

Secure Remote Password (SRP)


The Secure Remote Password protocol is a method for both a client
and a server to authenticate each other without either revealing any
secrets. In the process they also agree on an encryption key to be
used for the current session. We are using Version 611 with a modi- 11 Taylor et al., Using the Secure Remote

fied key derivation function. 6, 13, 15, 27, 28, 66, 67, 70 Password (SRP) Protocol for TLS Authen-
tication.

SRP-𝑥
The client secret, 𝑥, used by the Secure Remote Password (SRP) pro-
tocol. It is derived from the user’s Master Password and Account Key.
24, 27–29, 31, 39, 45, 46, 62

Transport Layer Security (TLS)


TLS is the successor to SSL. It’s what puts the “S” in “HTTPS”. 2, 14,
15, 29, 51–53, 59

two-secret key derivation (2SKD)


Two different secrets, each with their own security properties, are
used in deriving encryption and authentication keys. In 1Password
for Teams these are your Master Password (something you know)
and your Secret Key (some high-entropy secret you have on your de-
vice). 6, 9, 10, 13, 16, 24, 38, 67, 68, 88, 89

Unicode Normalization Form Compatibility Decomposition (NFKD)


A consistent normal form for Unicode characters that could other-
wise be different sequences of bytes. 25

Universally Unique Identifier (UUID)


A large arbitrary identifier for an entity. No two entities in the universe
should have the same UUID. 27–29, 46, 48

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 83

zero knowledge protocol


A zero knowledge protocol is a way for parties to make use of secrets
without revealing those secrets to each other. see also srp

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Bibliography

Adams, Douglas. The hitchhiker’s guide to the galaxy. 1st American ed.
New York: Harmony Books, 1979.
AgileBits. OPVault Design. Aug. 28, 2015. URL: https : / / support .
1password.com/opvault-design/ (visited on 11/16/2015).
Arciszewski, Scott. No Way, JOSE! Mar. 14, 2017. URL: https://paragonie.
com / blog / 2017 / 03 / jwt - json - web - tokens - is - bad -
standard-that-everyone-should-avoid.
Dechand, Sergej et al. “An Empirical Study of Textual Key-Fingerprint
Representations.” In: 25th USENIX Security Symposium (USENIX Se-
curity 16). Austin, TX: USENIX Association, 2016, pp. 193–208. ISBN:
978-1-931971-32-4. URL: https://www.usenix.org/conference/
usenixsecurity16/technical- sessions/presentation/
dechand.
Free Software Foundation. The GNU Privacy Handbook. The Free Soft-
ware Foundation. 1999. URL: https://www.gnupg.org/gph/en/
manual.html (visited on 12/05/2017).
Goldberg, Jeffrey. You have secrets; we don’t: Why our data format is pub-
lic. English. AgileBits. May 6, 2013. URL: https://blog.1password.
com/you-have-secrets-we-dont-why-our-data-format-
is-public/.
Hunt, Troy. Extended Validation Certificates are (Really, Really) Dead. Aug. 13,
2019. URL: https://www.troyhunt.com/extended-validation-
certificates-are-really-really-dead/.
Jackson, Collin et al. “An Evaluation of Extended Validation and Picture-
in-Picture Phishing Attacks.” In: Financial Cryptography and Data Se-
curity. Ed. by Sven Dietrich and Rachna Dhamija. Berlin, Heidelberg:
Springer Berlin Heidelberg, 2007, pp. 281–293. ISBN: 978-3-540-77366-
5.
Jones, M. JSON Web Algorithms (JWA). RFC 7518 (Proposed Standard).
Internet Engineering Task Force, May 2015. URL: http : / / www .
ietf.org/rfc/rfc7518.txt.
– JSON Web Key (JWK). RFC 7517 (Proposed Standard). Internet Engi-
neering Task Force, May 2015. URL: http://www.ietf.org/rfc/
rfc7517.txt.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 85

Jones, M., J. Bradley, and N. Sakimura. JSON Web Token (JWT). RFC
7519 (Proposed Standard). Internet Engineering Task Force, May 2015.
URL: http://www.ietf.org/rfc/rfc7519.txt.
Kivinen, T. and M. Kojo. More Modular Exponential (MODP) Diffie-Hellman
groups for Internet Key Exchange (IKE). RFC 3526 (Proposed Stan-
dard). Internet Engineering Task Force, May 2003. URL: http : / /
www.ietf.org/rfc/rfc3526.txt.
Knuth, Donald Ervin. The TEXbook. Reading, Mass.: Addison-Wesley, 1984.
ISBN: 0201134489 (soft).
Krawczyk, Hugo. Cryptographic Extraction and Key Derivation: The HKDF
Scheme. Cryptology ePrint Archive, Report 2010/264. 2010.
Marlinspike, Moxie. Safety number updates. Open Whisper Systems. Nov. 17,
2016. URL: https : / / signal . org / blog / safety - number -
updates/ (visited on 10/05/2017).
National Institute of Standards and Technology. FIPS PUB 186-4: Digital
Signature Standard (DSS). Gaithersburg, MD, USA: National Institute
for Standards and Technology, July 2013. URL: https : / / csrc .
nist.gov/publications/detail/fips/186/4/final.
Pornin, Thomas. The MAKWA Password Hashing Function. 2015. URL:
http : / /www. bolet .org / makwa / makwa - spec - 20150422 .
pdf.
Taylor, D. et al. Using the Secure Remote Password (SRP) Protocol for TLS
Authentication. RFC 5054 (Informational). Internet Engineering Task
Force, Nov. 2007. URL: http://www.ietf.org/rfc/rfc5054.
txt.
Turner, S. et al. Elliptic Curve Cryptography Subject Public Key Informa-
tion. RFC 5480 (Proposed Standard). Internet Engineering Task Force,
Mar. 2009. URL: http://www.ietf.org/rfc/rfc5480.txt.
Vaziripour, Elham, Justin Wu, Mark O’Neill, et al. “Is that you, Alice? A
Usability Study of the Authentication Ceremony of Secure Messaging
Applications.” In: Symposium on Usable Privacy and Security (SOUPS).
2017.
Vaziripour, Elham, Justin Wu, Mark O’Neill, et al. “Action Needed! Helping
Users Find and Complete the Authentication Ceremony in Signal.” In:
Fourteenth Symposium on Usable Privacy and Security (SOUPS 2018).
Baltimore, MD: USENIX Association, 2018, pp. 47–62. ISBN: 978-1-
931971-45-4. URL: https : / / www . usenix . org / conference /
soups2018/presentation/vaziripour.
Wu, T. The SRP Authentication and Key Exchange System. RFC 2945
(Proposed Standard). Internet Engineering Task Force, Sept. 2000.
URL: http://www.ietf.org/rfc/rfc2945.txt.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
Changelog

This describes the changes made to the “1Password Security Design”


document.

[0.3.1] – 2021-04-19

Improved

• Expanded 1Password Connect.

• Fewer typos

[0.3] – 2021-04-13

Improved

• Cover page update

• Updated Transport Security, particularly with respect to pinning and


EV certificates.

• Updated Master Password section in Master Password and Secret


Key to reflect current practice.

• Title page and fonts should no longer break certain versions of Acro-
bat.

New

• New section, 1Password Connect.

• New section, Clients handling multiple accounts, on unlocking multi-


ple accounts with one Master Password.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 87

[0.2.10] – 2019-01-12

Improved

• No proprietary fonts (in preparation for opening source)

[0.2.9] – 2018-12-30

Improved

• Fixed text citation in MitM appendix

• Less verbose bibliographic data in margins

[0.2.8] – 2018-12-30

New

• Appendix describing MitM threat

• Mention of MitM in “Beware of Leopard” appendix with pointer to new


appendix

Improved

• Typos

• Margin citation format changes

[0.2.7] – 2018-09-10

New

• Mentioned ECDSA key creation

• Updated RNG table to include new clients, and switch from MSCAPI
to CNG

Improved

• Further clarified web-client risks.

• Corrected some errors and inconsistencies in SRP appendix

• Typos

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 88

[0.2.6] – 2017-04-11

The Account Key has been renamed “Secret Key”


Substantially restructured presentation of authentication, including a
new section that should better communicate why 1Password’s authen-
tication is designed as it is and providing a top level view before getting
into the details of key derivation.

New

• New section on A modern approach to authentication

Improved

• Improved presentation of two-secret key derivation (2SKD)


• Removed explicit comparison of 2SKD and multi-factor authentica-
tion (MFA)
• s/Account Key/Secret Key/g, but not all graphics have been
updated to reflect the new name
• Typos fixed and minor wording improvements throughout.
• TEXnical changes to improve line breaking

[0.2.5] - 2017-02-20

Mostly typos, minor fixes. These are not the changes you are looking
for.

Improved

• Even more typos fixed.


• Even more minor wording and clarification improvements
• Document title reflects Teams, Families and individual accounts
• Text refers to “1Password” instead of “1Password for Teams and
Families”

[0.2.4] - 2016-09-28

Details of account recovery have been added. Continue to fill in blanks,


but not as many as hoped for over such a long period of time. New
presentation of Two-Secret Key Derivation.

New

• Detailed section on Restoring a User’s Access to a Vault

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1
1PASSWORD SECURITY DESIGN 89

• AK and MP rewritten in terms of 2SKD

Improved

• Typography
• More detail in “Beware of Leopard”
• More math in SRP
• Many small improvements and expansions throughout the text

Fixed

• Many many typos and phrasing awkwardnesses.


• Colors are no longer emetic

[0.2.3] - 2015-11-27

Continue to expand the paper, completing sections which were not com-
plete earlier.

New

• Documented how server-side data is stored and which keys are ex-
posed.
• Expanded explanation of SRP authentication

Fixed

Numerous typos.

[0.2.2] - 2015-11-03

First public release of the 1Password for Teams Security Design paper.
This document will help you understand how we implemented all the
awesome things in 1Password for Teams and how we keep your se-
crets, secret.

New

First public release.

[git] • Branch: main @ adb528d • Release: v0.3.1 (2021-04-19)


Head tags: v0.3.1

You might also like