> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.whaller.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Clé maîtresse publique de chiffrement des secrets

# Guide de la clé maîtresse E2E pour les gestionnaires d'organisation

La **clé maîtresse** permet aux gestionnaires d'organisation de conserver un accès de secours aux secrets des sphères chiffrées. En cas de perte d'accès par tous les membres d'une sphère, le gestionnaire peut récupérer le secret et le transmettre de manière sécurisée.

> ⚠️ **Important** : La clé privée doit être conservée en lieu sûr et ne jamais être partagée. Seule la clé publique est enregistrée dans Whaller.

---

## Partie 1 : Générer et enregistrer une clé maîtresse

### Prérequis

* Accès à un terminal (Terminal sur macOS/Linux, Git Bash ou PowerShell sur Windows)
* OpenSSL installé (préinstallé sur macOS et Linux)

### Étape 1 : Générer la paire de clés

Ouvrez un terminal et exécutez les commandes suivantes :

```bash
# Générer la clé privée (4096 bits pour une sécurité optimale)
openssl genrsa -out cle_maitresse_privee.pem 4096

# Extraire la clé publique
openssl rsa -in cle_maitresse_privee.pem -pubout -out cle_maitresse_publique.pem
```

Deux fichiers sont créés :
* `cle_maitresse_privee.pem` — **À conserver précieusement en lieu sûr**
* `cle_maitresse_publique.pem` — À enregistrer dans Whaller

### Étape 2 : Afficher la clé publique

```bash
cat cle_maitresse_publique.pem
```

Résultat attendu :

```
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA...
(plusieurs lignes de caractères)
...
-----END PUBLIC KEY-----
```

### Étape 3 : Copier la clé publique

**macOS :**
```bash
cat cle_maitresse_publique.pem | pbcopy
```

**Linux :**
```bash
cat cle_maitresse_publique.pem | xclip -selection clipboard
```

**Windows (PowerShell) :**
```powershell
Get-Content cle_maitresse_publique.pem | Set-Clipboard
```

**Windows (CMD) :**
```cmd
type cle_maitresse_publique.pem | clip
```

### Étape 4 : Enregistrer la clé dans Whaller

1. Connectez-vous à Whaller avec un compte **gestionnaire d'organisation**
2. Accédez à la page de gestion "configuration générale" / "Chiffrement E2E" (ou "Chiffrement de bout en bout")
3. Collez le contenu complet de la clé publique (y compris les lignes `-----BEGIN PUBLIC KEY-----` et `-----END PUBLIC KEY-----`)
4. Cliquez sur **Enregistrer**

![Zone de saisie de la clé publique](https://storage.crisp.chat/users/helpdesk/website/-/8/6/4/3/8643cf9d34bb3800/image_1etkego.png)

### Bonnes pratiques de sécurité

| Élément | Recommandation |
| ---- |
| Clé privée | Stocker sur un support chiffré (clé USB sécurisée, coffre-fort numérique) |
| Sauvegarde | Créer une copie de secours en lieu sûr |
| Accès | Limiter l'accès à la clé privée aux personnes autorisées |
| Rotation | Envisager de renouveler les clés périodiquement (ex: tous les 2 ans) |

---

## Partie 2 : Déchiffrer un secret de sphère

Lorsqu'une sphère chiffrée n'est plus accessible par ses membres, le gestionnaire peut récupérer le secret chiffré depuis l'interface de gestion et le déchiffrer avec sa clé privée.

### Étape 1 : Récupérer le secret chiffré

1. Accédez à la page de gestion "configuration générale" / "Chiffrement E2E" (ou "Chiffrement de bout en bout")
2. Localisez la sphère concernée dans la liste des secrets chiffrés
3. Copiez le contenu du champ **Secret chiffré** (chaîne de caractères en Base64)

![Accès aux secrets chiffrés des sphères](https://storage.crisp.chat/users/helpdesk/website/-/8/6/4/3/8643cf9d34bb3800/image_jas6hq.png)


### Étape 2 : Sauvegarder le secret chiffré dans un fichier

Créez un fichier `secret_chiffre.txt` contenant le secret copié :

```bash
echo "COLLEZ_ICI_LE_SECRET_CHIFFRE" > secret_chiffre.txt
```

Ou ouvrez un éditeur de texte, collez le secret et sauvegardez sous `secret_chiffre.txt`.

### Étape 3 : Décoder le Base64

Le secret est encodé en Base64. Décodez-le d'abord :

```bash
base64 -d secret_chiffre.txt > secret_chiffre.bin
```

**Sur macOS**, utilisez :
```bash
base64 -D -i secret_chiffre.txt > secret_chiffre.bin
```

### Étape 4 : Déchiffrer avec la clé privée

```bash
openssl pkeyutl -decrypt \
  -inkey cle_maitresse_privee.pem \
  -in secret_chiffre.bin \
  -out secret_dechiffre.txt \
  -pkeyopt rsa_padding_mode:oaep \
  -pkeyopt rsa_oaep_md:sha256
```

### Étape 5 : Afficher le secret déchiffré

```bash
cat secret_dechiffre.txt
```

Le résultat est le **secret de la sphère** (une chaîne de caractères). Ce secret peut être communiqué de manière sécurisée à un membre de confiance de la sphère pour qu'il puisse à nouveau accéder aux messages chiffrés.

### Script complet de déchiffrement

Voici un script qui automatise le processus :

```bash
#!/bin/bash

# Vérification des arguments
if [ $# -ne 2 ]; then
    echo "Usage: $0 <fichier_cle_privee.pem> <secret_chiffre_base64>"
    exit 1
fi

CLE_PRIVEE="$1"
SECRET_BASE64="$2"

# Créer un fichier temporaire
TEMP_FILE=$(mktemp)

# Décoder le Base64 et déchiffrer
echo "$SECRET_BASE64" | base64 -d > "${TEMP_FILE}.bin"

SECRET=$(openssl pkeyutl -decrypt \
    -inkey "$CLE_PRIVEE" \
    -in "${TEMP_FILE}.bin" \
    -pkeyopt rsa_padding_mode:oaep \
    -pkeyopt rsa_oaep_md:sha256 2>/dev/null)

# Nettoyer
rm -f "${TEMP_FILE}" "${TEMP_FILE}.bin"

if [ -n "$SECRET" ]; then
    echo "✅ Secret déchiffré avec succès :"
    echo "$SECRET"
else
    echo "❌ Erreur lors du déchiffrement. Vérifiez la clé privée et le secret."
    exit 1
fi
```

**Utilisation :**
```bash
chmod +x dechiffrer_secret.sh
./dechiffrer_secret.sh cle_maitresse_privee.pem "ABC123...secret_en_base64..."
```

---

## Résumé

| Action | Commande principale |
| ---- |
| Générer les clés | `openssl genrsa -out cle_privee.pem 4096` |
| Extraire la clé publique | `openssl rsa -in cle_privee.pem -pubout -out cle_publique.pem` |
| Décoder un secret (Base64) | `base64 -d secret.txt > secret.bin` |
| Déchiffrer un secret | `openssl pkeyutl -decrypt -inkey cle_privee.pem -in secret.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256` |

---

## Besoin d'aide ?

Si vous rencontrez des difficultés, contactez le support Whaller.