Document encrypted export format (#175)

This commit is contained in:
Neeraj Gupta 2023-08-03 17:20:46 +05:30 committed by GitHub
commit a08c01b49b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -0,0 +1,52 @@
# Auth Encrypted Export format
## Overview
When we export the auth codes, the data is encrypted using a key derived from the user's password.
This document describes the JSON structure used to organize exported data, including versioning and key derivation parameters.
## Export JSON Sample
```json
{
"version": 1,
"kdfParams": {
"memLimit": 4096,
"opsLimit": 3,
"salt": "example_salt"
},
"encryptedData": "encrypted_data_here",
"encryptionNonce": "nonce_here"
}
```
The main object used to represent the export data. It contains the following key-value pairs:
- `version`: The version of the export format.
- `kdfParams`: Key derivation function parameters.
- `encryptedData"`: The encrypted authentication data.
- `encryptionNonce`: The nonce used for encryption.
### Version
Export version is used to identify the format of the export data.
#### Ver: 1
* KDF Algorithm: `ARGON2ID`
* Decrypted data format: `otpauth://totp/...`, separated by a new line.
* Encryption Algo: `XChaCha20-Poly1305`
#### Key Derivation Function Params (KDF)
This section contains the parameters that were using during KDF operation:
- `memLimit`: Memory limit for the algorithm.
- `opsLimit`: Operations limit for the algorithm.
- `salt`: The salt used in the derivation process.
#### Encrypted Data
As mentioned above, the auth data is encrypted using a key that's derived by using user provided password & kdf params.
For encryption, we are using `XChaCha20-Poly1305` algorithm.
## How to use the export data
* **ente Authenticator app**: You can directly import the codes in the ente Authenticator app.
>Settings -> Data -> Import Codes -> ente Encrypted export.