2. Patcher le noyau

La premiere etape consiste a ajouter le support du chiffrement par block au noyau Linux. Cette fonctionnalite est apportee par un patch applique au noyau. Nous allons recuperer les sources du noyau :

  #apt-get install kernel-sources-2.4.19
  #cd /usr/src
  #tar xjf kernel-source-2.4.19.tar.bz2
  #ln -sf /usr/src/kernel-source-2.4.19 linux
  #cd /usr/src/linux
  

Il faut ensuite recuperer le script appelle "International Kernel Patch Magic Installer" qui permet d'automatiser l'installation du patch international.

  #wget -O - "www.kerneli.org/go?VersionDuKernel/CodePays" | sh
  

Il faut bien sur remplacer "VersionDuKernel" et "CodePays" par leur valeurs. Comme par exemple

  #wget -O - "www.kerneli.org/go?2.4.19/FR" | sh
  

Apres l'application du patch nous allons construire un package debian du kernel a l'aide de la commande make-kpkg

  #make-kpkg kernel-image --append-to-version -crypto --config menuconfig
  

Lors de la configuration du kernel la partie la plus importante est : Cryptography support (CryptoAPI)

  
  <*> CryptoAPI support (NEW)                                                           
  [*] Cipher Algorithms                                                                 
  --- 128 bit blocksize                                                                 
  <M>  AES (aka Rijndael) cipher (NEW)                                                  
  <M>  MARS cipher (NEW)                                                                
  <M>  RC6 cipher (NEW)                                                                 
  <M>  Serpent cipher (NEW)                                                             
  <M>  Twofish cipher (NEW)                                                             
  --- 64 bit blocksize                                                                  
  <M>  3DES cipher (NEW)                                                                
  <M>  Blowfish cipher (NEW)                                                            
  <M>  CAST5 cipher (NEW)                                                               
  <M>  GOST cipher (NEW)                                                                
  <M>  IDEA cipher (NEW)                                                                
  <M>  RC5 cipher (NEW)                                                                 
  --- Deprecated                                                                        
  < >  NULL cipher (NO CRYPTO) (NEW)                                                    
  < >  DES cipher (DEPRECATED) (NEW)                                                    
  < >  Old (mutated-endianess) Blowfish cipher (DEPRECATED) (NEW)                       
  [ ] Digest Algorithms                                                                 
  [*] Crypto Devices                                                                    
  <M>  Loop Crypto support (NEW)                                                        
  [ ]   Atomic Loop Crypto                                                              
  [*]   Loop IV hack                                                                    
  [ ]   Loop Crypto Debugging                                                           
  < >  IPSEC tunneling (ipsec_tunnel) support (NEW)    
  
  

Vous pouvez mettre les "ciphers" en dur dans le noyeau ou bien en modules. Cela ne change rien. Attention la compilation d'un kernel 2.4 ne marche pas avec gcc 3.0, il faut donc remplacer gcc par gcc-2.95 dans le Makefile. Si la compilation c'est bien passer il suffit d'installer le package :

  #dpkg -i kernel-image-2.4.19-crypto_10.00.Custom_i386.deb
  

Apres l'installation du package il faut configurer votre bootloader. Dans le cas de grub il suffit d'ajouter la ligne suivante dans le fichier /boot/grub/menu.lst :

  title Debian GNU/Linux 3.0 Woody Kernel 2.4.19-crypto
  root (hd0,0)
  kernel /boot/vmlinuz-2.4.19-crypto root=/dev/hda1 
  

Rebooter sur le nouveau kernel et verifier que le support de crypto api est bien charge :

  #cat /var/log/dmesg | grep ^crypto
  cryptoapi: loaded
  cryptoloop: loaded
  

Voila, votre noyau supporte le chiffrement par block.