
# Chiffrement non persistant pour un swap sur plusieurs partitions

Il est possible de combiner un chiffrement **non persistant** avec un swap réparti sur plusieurs partitions. Chaque partition sera chiffrée individuellement avec une clé aléatoire générée au démarrage (via `/dev/urandom`), puis ces partitions seront activées comme des espaces de swap indépendants.

## Configuration d'un swap chiffré non persistant sur plusieurs partitions

### Désactiver les swaps existants

Avant de configurer le nouveau swap, désactivez toutes les partitions swap actuellement actives :

```bash
sudo swapoff -a
```

### Chiffrer chaque partition de manière non persistante

Pour chaque partition de swap (par exemple `/dev/sda2`, `/dev/sdb2`, `/dev/sdc2`), configurez un chiffrement non persistant avec **dm-crypt**.

#### Exemple pour une partition `/dev/sda2` :

1. Créer une couche de chiffrement temporaire :

```bash
sudo cryptsetup open --type plain --cipher aes-xts-plain64 --key-file /dev/urandom /dev/sda2 cryptswapa
```

- **`--type plain`** : Utilise un chiffrement simple (sans métadonnées).
- **`--cipher aes-xts-plain64`** : Définit l'algorithme de chiffrement (AES avec XTS, souvent recommandé pour les performances).
- **`--key-file /dev/urandom`** : Génère une clé aléatoire à chaque démarrage.

2. Formater le périphérique mappé en swap :

```bash
sudo mkswap /dev/mapper/cryptswapa
```

3. Activer le swap :

```bash
sudo swapon /dev/mapper/cryptswap1
```

4. Répétez les étapes 1 à 3 pour chaque partition
 
Les noms doivent être uniques `cryptswap1`, `cryptswap2`, etc.

Par exemple :

- `/dev/sdb2` pour créer `cryptswapb`
- `/dev/sdc2` pour créer `cryptswapc`

### Ajouter une configuration automatique (optionnelle)

Pour automatiser cette configuration au démarrage, modifiez les fichiers suivants :

#### Dans `/etc/crypttab` :

Ajoutez une ligne pour chaque partition swap chiffrée, comme suit :

```plaintext
cryptswapa /dev/sda2 /dev/urandom cipher=aes-xts-plain64,size=256
cryptswapb /dev/sdb2 /dev/urandom cipher=aes-xts-plain64,size=256
cryptswapc /dev/sdc2 /dev/urandom cipher=aes-xts-plain64,size=256
```

#### **Dans `/etc/fstab` :**

Ajoutez une ligne pour chaque périphérique mappé :

```plaintext
/dev/mapper/cryptswap1 none swap sw 0 0
/dev/mapper/cryptswap2 none swap sw 0 0
/dev/mapper/cryptswap3 none swap sw 0 0
```

### **4. Activer et vérifier la configuration**

1. Rechargez les configurations et activez les swaps :
   ```bash
   sudo systemctl restart systemd-cryptsetup@cryptswap1.service
   sudo systemctl restart systemd-cryptsetup@cryptswap2.service
   sudo systemctl restart systemd-cryptsetup@cryptswap3.service
   ```

2. Vérifiez l'état des swaps :
   ```bash
   swapon --show
   lsblk -o NAME,TYPE,SIZE,MOUNTPOINT,FSTYPE
   ```

Vous devriez voir que chaque partition chiffrée est activée en tant que swap.

## Avantages de cette configuration :

1. **Chiffrement sécurisé** :
   - Le swap est chiffré avec une clé aléatoire à chaque démarrage, garantissant que les données précédentes ne sont pas récupérables.
2. **Utilisation simultanée des partitions** :
   - Linux répartira automatiquement les écritures entre les différentes partitions de swap (en fonction de leur priorité).
3. **Simplicité d'automatisation** :
   - Une fois configurée, cette solution fonctionne automatiquement sans intervention de l'utilisateur.

## Points à surveiller :

- **Performances** :
  - Si les partitions sont sur des disques de vitesses différentes, le disque le plus lent peut devenir un goulot d'étranglement.
- **Priorités** :
  - Vous pouvez définir des priorités dans `/etc/fstab` pour influencer la répartition de la charge entre les partitions. Par exemple :
    ```plaintext
    /dev/mapper/cryptswap1 none swap sw,pri=10 0 0
    /dev/mapper/cryptswap2 none swap sw,pri=5 0 0
    /dev/mapper/cryptswap3 none swap sw,pri=1 0 0
    ```

Avec cette approche, votre swap sera réparti sur plusieurs partitions, sécurisé par chiffrement non persistant, et configuré pour un usage optimal par le système.
