From 387d3f8a19332b7a246fb3dadebf6db1eb18cf43 Mon Sep 17 00:00:00 2001 From: Corentin Mors Date: Mon, 8 Apr 2024 10:15:07 +0200 Subject: [PATCH] Add details about our security model --- documentation/pages/_meta.json | 1 + .../pages/personal/authentication.mdx | 14 ++++++++++++-- .../pages/security.mdx | 19 ++++++++++++++++--- 3 files changed, 29 insertions(+), 5 deletions(-) rename src/modules/crypto/README.md => documentation/pages/security.mdx (67%) diff --git a/documentation/pages/_meta.json b/documentation/pages/_meta.json index 59f7dd19..13481b14 100644 --- a/documentation/pages/_meta.json +++ b/documentation/pages/_meta.json @@ -35,6 +35,7 @@ "type": "separator" }, "troubleshooting": "Troubleshooting", + "security": "Security", "help_center": { "title": "Dashlane Help Center ↗", "href": "https://support.dashlane.com/", diff --git a/documentation/pages/personal/authentication.mdx b/documentation/pages/personal/authentication.mdx index 660cd293..b2a8b91d 100644 --- a/documentation/pages/personal/authentication.mdx +++ b/documentation/pages/personal/authentication.mdx @@ -1,6 +1,6 @@ import { Callout } from 'nextra/components'; -# Authentication +# Authentication (Login) To start with launch a first manual sync: @@ -39,6 +39,16 @@ The CLI will open a new **incognito** tab to authenticate you to your SSO provid By completing the device registration process, you'll be now asked to enter your Master Password. +## Lock the CLI + +You can lock the CLI at any time by running: + +```sh copy +dcli lock +``` + +This will require you to enter your Master Password again to unlock the CLI. + ## Options ### Save Master Password @@ -52,7 +62,7 @@ dcli configure save-master-password false ### Unlock with Biometrics -You can unlock the CLI with your biometrics (Touch ID, Face ID) if your machine supports it (only Macos for now). +You can unlock the CLI with your biometrics (Touch ID, Face ID) if your machine supports it (only macOS for now). ```sh copy dcli configure user-presence --method biometric diff --git a/src/modules/crypto/README.md b/documentation/pages/security.mdx similarity index 67% rename from src/modules/crypto/README.md rename to documentation/pages/security.mdx index 6c0a0469..dbdeff4e 100644 --- a/src/modules/crypto/README.md +++ b/documentation/pages/security.mdx @@ -1,7 +1,13 @@ -# How private data is stored +# Security -## Goals +Here are some details about how the security is managed in the application. To read more about our security model, please +refer to the [security whitepaper](https://www.dashlane.com/download/whitepaper-en.pdf). +## How private data is stored by CLI + +### Goals + +- Data is stored encrypted on disk. - Store the master password, so it is possible to decrypt the transactions whatever derivation method is used. - Store the device secret key, so it is possible to synchronize the transactions. - Don't store the above secrets unencrypted, so if the computer/disk is stolen it is impossible to retrieve them. @@ -10,7 +16,7 @@ - The two above cases are the same because, if the master password is required to get access to the local key, it is useless to store the master password encrypted by the local key. -## Solution used +### Solution used - The OS password management system (Keychain for macOS, Credential Vault for Windows and libsecret for Linux) is used to store the randomly generated _local key_. It is then the responsibility of the OS keychain to encrypt @@ -23,3 +29,10 @@ - To encrypt the local key using the master password a derivate has to be generated. However, at this point no derivation settings are known, so it is hard-coded via a fake transaction generated by `getDerivationParametersForLocalKey` in [keychainManager.ts](keychainManager.ts). + +### Other considerations + +- You can disable the use of the OS keychain by using the command `dcli configure save-master-password false`. In this case, + you will be asked for the master password every time you start the application. +- You can enable biometrics unlock by using the command `dcli configure user-presence --method biometric`. In this case, you will be + asked for a user presence check (e.g. fingerprint) every time you start the application before the OS password management system is requested.