Cryptographie sous Debian

De MicElectroLinGenMet.

Sommaire

Cryptographie sous Debian

Sources:

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



Outils personnels
Administration wiki