wiki/HowtoClevis.md

123 lines
4.9 KiB
Markdown

---
categories: clevis chiffrement
title: Howto Clevis
...
* Github / Documentation : <https://github.com/latchset/clevis>
[Clevis](https://github.com/latchset/clevis) est un logiciel qui permet l'automatisation de déchiffrement. Il peut être utilisé pour déchiffrer automatiquement des fichiers ou dévérouiller des partition chiffrées avec [LUKS](./HowtoLUKS)
Pour pouvoir déchiffrer automatiquement un élément, il a besoin d'être associé avec un PIN. Dans la terminologie de Clevis, un PIN est un plugin qui implémente une méthode de déchiffrement automatique. Ça peut être [Tang](./HowtoTang) pour faire ça par le réseau ou un TPM 2.0 (ou une clé FIDO2) ou une combinaison de plusieurs PINs en s'appuyant sur [le partage de clé secrète de Shamir](https://fr.wikipedia.org/wiki/Partage_de_cl%C3%A9_secr%C3%A8te_de_Shamir)
## Installation
~~~
# apt install clevis luks clevis-systemd
$ clevis --help
Usage: clevis COMMAND [OPTIONS]
clevis decrypt Decrypts using the policy defined at encryption time
clevis encrypt sss Encrypts using a Shamir's Secret Sharing policy
clevis encrypt tang Encrypts using a Tang binding server policy
clevis luks bind Binds a LUKS device using the specified policy
clevis luks common functions
clevis luks edit Edit a binding from a clevis-bound slot in a LUKS device
clevis luks list Lists pins bound to a LUKSv1 or LUKSv2 device
clevis luks pass Returns the LUKS passphrase used for binding a particular slot.
clevis luks regen Regenerate clevis binding
clevis luks report Report tang keys' rotations
clevis luks unbind Unbinds a pin bound to a LUKS volume
clevis luks unlock Unlocks a LUKS volume
~~~
> **Remarque** : il y a d'autres paquets installables en fonction des cas et des besoins. Par exemple `clevis-tpm2` est nécessaire uniquement si on souhaite se servir du TPM de la machine. De même, pour le déchffirement de la racine au démarrage, il faut le paquet `clevis-initramfs` pour que cette opération se fasse au boot.
## Configuration
### Partition chiffrées avec LUKS
#### Binding d'un volume avec tang
Un binding est un lien entre un volume chiffré et un PIN pour Clevis. Il peut y avoir plusieurs bindings pour un volume donné.
Binding d'une partition chiffrée `/dev/sdz` avec le serveur tang à l'addresse `http://192.0.2.10:42`
```
# clevis luks bind -d /dev/sdz tang '{"url": "http://192.0.2.10:42"}'
Enter existing LUKS password:
The advertisement contains the following signing keys:
X4rKb0DNu7rpmrjHF0SbeQfMQ-mUoVHdUiiNOmiFx1c
Do you wish to trust these keys? [ynYN] y
```
> **Note** : Voir [la commande tang-show-keys dans le HowtoTang](./HowtoTang#afficher-lales-clé-actuelle) pour vérifier la clé affichée.
#### Binding d'un volume avec un TPM 2.0
A Compléter
#### Liste des bindings
Il peut y avoir plusieurs bindings pour un volume LUKS
On peut utiliser la commande `clevis luks list` prévue à cet effet pour lister les bindings et leurs paramètres.
Exemple pour lister les bindings de `/dev/sdz`
```
# clevis luks list -d /dev/sdz
1: tang '{"url":"http://192.0.2.10:42"}'
2: tang '{"url":"http://192.0.2.29:42"}'
```
#### Retrait d'un binding
> **REMARQUE IMPORTANTE** : Avant de retirer un binding, assurez-vous que les méthodes restantes (mot de passe, autre bindings avec clevis) puisse vous permettre de continuer de déverouiller le volume
Comme il peut y avoir plusieurs bindings, il faut récupérer son numéro de slot avec la commande [`clevis luks list`](#liste-des-bindings)
Exemple : Retirer le binding dans avec le serveur tang sur `http://192.0.2.29:42` (slot numéro 2) pour `/dev/sdz`
```
# clevis luks list -d /dev/sdz
1: tang '{"url":"http://192.0.2.10:42"}'
2: tang '{"url":"http://192.0.2.29:42"}'
# clevis luks unbind -d /dev/sdz -s 2
The unbind operation will wipe a slot. This operation is unrecoverable.
Do you wish to erase LUKS slot 1 on /dev/sdz? [ynYN] y
Enter any remaining passphrase:
# clevis luks list -d /dev/sdz
2: tang '{"url":"http://192.0.2.10:42"}'
```
#### Rotation de clés
Après une rotation de clé d'un serveur [tang](./HowtoTang#rotation-de-clés), il faut mettre à jour le binding du slot
Exemple : Mise à jour du binding de `/dev/sdz` présent au *slot 1* :
```
# clevis luks report -d /dev/sdz -s 1
The following keys are not in the current advertisement and were probably rotated:
6cSAW9rr6KH4mKga3urSJatIHYHOibA28AKJQlVfIxQ
aH0R-mkpdt7y72zoFEGCxZyeNMWZreoblk1H3zjIx2g
Do you want to regenerate the binding with "clevis luks regen -q -d /dev/sdz -s 1"? [ynYN] y
Regenerating binding (device /dev/sdz, slot 1):
Pin: tang, Config: '{"url":"http://192.0.2.10:42"}'
Binding regenerated successfully
```
> *Note* : Si les anciennes clés sont toujours disponibles, *Clevis* Ne demandera pas si on fait confiance à la nouvelle clé, car elle sera signée par l'ancienne déjà connue.
## Plomberie
## FAQ