Cryptographie sous Debian
De MicElectroLinGenMet.
Sommaire |
Cryptographie sous Debian
Sources:
- Linux MAG 102 (Fév 2008)
- http://doc.ubuntu-fr.org/cryptsetup
Installation du package
# apt-get install cryptsetup
Création d'une partition cryptée
# cryptsetup --verbose --verify-passphrase luksFormat /dev/hda2
Saisie d'une passphrase.
ou
# cryptsetup --verbose --verify-passphrase luksFormat --cipher "aes-cbc-essiv:sha256" --key-size 256 /dev/hda2
Saisie d'une passphrase.
Ouverture de la partition crypté
# cryptsetup luksOpen /dev/hda2 cryptdoc Passphrase demandée à l'ouverture.
Formatage et montage de la partion accessible par le device /dev/mapper/cryptdoc
# mkfs.ext3 /dev/mapper/cryptdoc # mount /dev/mapper/cryptdoc /home/dan/documents
Les données sont accessible en claire dans le répertoire /home/dan/documents.
dan@vesta:~$ df -h Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur ... /dev/mapper/cryptdoc 8,3G 3,4G 4,5G 44% /home/dan/documents
Fermeture de l'accés à la partition cryptée
# umount /dev/mapper/cryptdoc # cryptsetup luksClose cryptdoc
Montage au boot
- Renseigner le fichier /etc/crypttab avec les devices cryptés.
# <target name> <src device> <key file> <options> cryptdoc /dev/hda2 none luks,tries=1,timeout=10
- Et dans /etc/fstab
... /dev/mapper/cryptdoc /mnt/temp ext3 defaults 0 0
- Voir aussi le fichier /etc/default/cryptdisks
- Script de démarrage
# /etc/init.d/cryptdisks start Starting remaining crypto disks...cryptdoc (starting). Enter LUKS passphrase: (passphrase demandée à l'ouverture) key slot 0 unlocked.
Au boot, la passphrase sera attendu 10 secondes avant de continuer.
Montage automatique au boot avec passphrase sur media amovible
Le problème, c'est qu'au reboot il faut attendre le moment pour saisir la passphrase, sinon le montage de la partition ne se fera pas.
- Utiliser une clef USB ou carte mémoire qui contiendra un fichier "key-file" .cryptkey avec la passphrase.
Ce media doit être accessible par cryptsetup, il faut donc rejouter son montage dans la fstab:
/dev/disk/by-uuid/47e81052-49dc-4653-86ff-f45f3ef25580 /media/keycard ext2 noauto 0 0
avec une clef en vfat
/dev/disk/by-uuid/47e81052-49dc-4653-86ff-f45f3ef25580 /media/keycard vfat noauto, uid=0,gid=0,umask=277 0 0
ou en utilisant le LABEL d'une clef (tune2fs -L LABEL /dev/sdx)
/dev/disk/by-label/KEYCARD /media/keycard vfat noauto,uid=0,gid=0,umask=277 0 0
Ne pas oublier de créer le répertoire: /media/keycard
Il faut prendre le device "by-uuid" ou "by-label" pour éviter qu'il ne change à chaque reboot. Voir dans le répertoire /dev/disk/by-uuid pour reconnaitre le media.
# ls -l /dev/disk/by-uuid total 0 lrwxrwxrwx 1 root root 10 aoû 2 09:58 4636c3d5-8853-48b2-b3b7-b20996570adb -> ../../dm-0 lrwxrwxrwx 1 root root 10 aoû 2 09:58 47e81052-49dc-4653-86ff-f45f3ef25580 -> ../../sda1 lrwxrwxrwx 1 root root 10 aoû 2 09:58 95074d9c-339d-48f1-bc77-3027660d7463 -> ../../hda2 lrwxrwxrwx 1 root root 10 aoû 2 09:58 b7d31005-1bfe-4abc-9c9e-f7ac8bf407bb -> ../../hda1
Ici la carte est formatée en ext2. Il est possible d'utiliser du vfat mais en précisant un uid/guid root au montage.
- Configuration du montage automatique du media par cryptsetup
Modifier le fichier /etc/default/cryptdisks (paramètre CRYPTDISKS_MOUNT)
CRYPTDISKS_MOUNT="/media/keycard"
- Indiquer le fichier "key-file" à cryptsetup
Modifier le fichier /etc/crypttab (champs <key file>)
# <target name> <src device> <key file> <options> cryptdoc /dev/hda2 /media/keycard/.cryptkey luks,tries=1,timeout=2
Le fichier .cryptkey doit avoir les droits suivants:
# l /media/keycard/.cryptkey -r-------- 1 root root 9 aoû 2 01:19 /media/keycard/.cryptkey
- Déclarer la clef dans cryptsetup
# cryptsetup luksAddKey /dev/hda2 /media/keycard/.cryptkey Enter any LUKS passphrase: => (password à la création) key slot 0 unlocked. Command successful.
Vérification du nombre de "key slot":
# cryptsetup luksDump /dev/hda2
LUKS header information for /dev/hda2
Version: 1
Cipher name: aes
Cipher mode: cbc-essiv:sha256
Hash spec: sha1
Payload offset: 1032
MK bits: 128
MK digest: 35 02 78 1d 4d 63 1c 9e 59 ca 22 56 6d 04 b3 ef 93 b3 41 02
MK salt: 24 a8 b7 ee 12 18 ae f9 bc 1e de e4 46 d4 3f 15
5c 24 bc 30 b1 cf 21 ca 42 76 92 53 50 65 30 5e
MK iterations: 10
UUID: 95074d9c-339d-48f1-bc77-3027660d7463
Key Slot 0: ENABLED => (password à la création)
Iterations: 102070
Salt: 61 1b 01 44 c4 75 ce 18 69 75 62 ad 7f f5 13 43
ea e7 77 42 63 df 41 ee 8d ce ca 5f d9 8e b1 2f
Key material offset: 8
AF stripes: 4000
Key Slot 1: ENABLED => (password dans .cryptkey)
Iterations: 139658
Salt: dc 7f 6e 5b 9b bb 0a c5 1d 03 8d c0 85 c9 5e a8
f6 bb 54 48 bc 51 46 6b 77 36 a5 eb 46 f4 6c 4f
Key material offset: 264
AF stripes: 4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
- Information sur la partition mapper
Donne le device disque /dev/hda2 associé au device mapper /dev/mapper/cryptdoc.
# cryptsetup status cryptdoc /dev/mapper/cryptdoc is active: cipher: aes-cbc-essiv:sha256 keysize: 128 bits device: /dev/hda2 offset: 2056 sectors size: 20014934 sectors mode: read/write
- Test manuel de la clef stockée dans le media amovible
# cryptsetup luksOpen /dev/hda2 cryptdoc --key-file /media/diskey/cryptkey key slot 1 unlocked. Command successful.
- Test au reboot
Au reboot avec le media amovible connecté au PC, la passphrase n'est plus demandée et le montage de la partition cryptée se fait automatiquement.
Pour tester sans rebooter (aprés avoir démonté la partition cryptée)
# /etc/init.d/cryptdisks stop # /etc/init.d/cryptdisks start
