123 lines
4.9 KiB
Markdown
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 |