\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{ven. mars 25 10:21:12 CET 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={cmtab},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Informations sur les systèmes de fichier gérés par cryptmount},
CreationDate={D:20160325102112},
ModDate={D:20160325102112},
Keywords={Linux;chiffrement;sécurité}
}}
\begin{document}
 
\begin{center}
{\Huge cmtab }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Informations sur les systèmes de fichier gérés par cryptmount}
 
\vspace{10mm}
 
\hspace{1mm}  /etc/cryptmount/cmtab contient les informations sur les systèmes gérés par cryptmount. Le format est flexible:
\vspace{5mm} \\
 
 
{\ttfamily
TARGET\_NAME \{\\ \hspace{2mm}dev=DEVICE \# REQUIRED\\ \hspace{2mm}flags=FLAG,FLAG,...\\ \hspace{2mm}startsector=STARTSECTOR\\ \hspace{2mm}numsectors=NUMSECTORS\\ \hspace{2mm}loop=LOOPDEV\\ \hspace{2mm}dir=MOUNT\_POINT\\ \hspace{2mm}fstype=TYPE \# REQUIRED\\ \hspace{2mm}mountoptions=MOPT,MOPT,...\\ \hspace{2mm}fsckoptions=FOPT;FOPT;...\\ \hspace{2mm}supath=SUPATH\\ \hspace{2mm}bootaction=BOOTACTION\\ \hspace{2mm}cipher=CIPHER\\ \hspace{2mm}ivoffset=IVOFFSET\\ \hspace{2mm}keyformat=KEYMANAGER\\ \hspace{2mm}keyfile=KEYFILE \# REQUIRED\\ \hspace{2mm}keyhash=KEYHASH\\ \hspace{2mm}keycipher=KEYCIPHER\\ \hspace{2mm}keymaxlen=KEYMAXLEN\\ \hspace{2mm}passwdretries=NUMATTEMPTS\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm}  Certains champs, tels que dev et fstype sont obligatoires. De nombreux champs ont des valeurs par défaut. Un champ contenant une valeur non-numérique peut contenir une référence à une variable d'environnement:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} \$(HOME)]{Répertoire personnel de l'utilisateur}
\item[\hspace{1mm} \$(UID)]{UID de l'utilisateur}
\item[\hspace{1mm} \$(USERNAME)]{Nom de l'utilisateur}
\item[\hspace{1mm} \$(GID)]{GID du groupe primaire de l'utilisateur}
\item[\hspace{1mm} \$(GROUPNAME)]{Groupe primaire de l'utilisateur}
\end{description}
 
\vspace{1cm}{\huge Définitions de cibles }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} dev]{Dpfinis le nom du périphérique ou du fichier.}
\item[\hspace{1mm} flags]{"user", "nouser", "fsck", "nofsck", "mkswap", "nomkswap", "trim", "notrim". Défaut: user,fsck,nomkswap,notrim}
\item[\hspace{1mm} startsector]{Secteur de début du système de fichier dans le périphérique. défaut: 0}
\item[\hspace{1mm} numsectors]{Donne la longueur totale du système de fichier en secteur. Défaut: -1}
\item[\hspace{1mm} loop]{Permet de spécifier un périphérique loopback. Défaut: auto}
\item[\hspace{1mm} dir]{Point de montage}
\item[\hspace{1mm} fstype]{Type de système de fichier}
\item[\hspace{1mm} mountoptions]{Options de montage utilisées par mount}
\item[\hspace{1mm} fsckoptions]{options utilisées par fsck}
\item[\hspace{1mm} supath]{Définis la variable d'environnement PATH en lançant des sous-processus en tant que root. Peut être nécessaire pour fsck et mount. Défaut: /sbin:/bin:/usr/sbin:/usr/bin}
\item[\hspace{1mm} bootaction]{Action lors du démarrage du système (none, mount, swap ou prepare)}
\item[\hspace{1mm} cipher]{Algorithme de chiffrement à utiliser. Défaut: aes-cbc-plain}
\item[\hspace{1mm} keyformat]{schéma de gestion de clé utilisé pour interagir avec le keyfile. (libgcrypt, luks, openssl-compact, builtin, raw). Défaut: builtin}
\item[\hspace{1mm} keyfile]{Nom du fichier contenant la clé à utiliser}
\item[\hspace{1mm} ivoffset]{Offset ajouté au numéro de secteur utilisé pour construire le vecteur d'initialisation de l'algorithme de chiffrement. Défaut: 0}
\item[\hspace{1mm} keyhash]{Algorithme de hashage à utiliser}
\item[\hspace{1mm} keycipher]{Algorithme de chiffrement à utiliser pour sécuriser la clé de déchiffrement}
\item[\hspace{1mm} keymaxlen]{Longueur en octet de la clé de déchiffrement}
\item[\hspace{1mm} passwdretries]{Nombre de tentative du mot de passe}
\end{description}
 
\vspace{1cm}{\huge Choix du keymanager }
 
\
 
\hspace{1mm}  cryptmount supporte différentes manières de protéger l'accès à la clé associée avec chaque système de fichier chiffré. Pour la plupart des utilisateurs, le keymanager builtin fournis a bon niveau de sécurité et une bonne flexibilité. Les keymanager alternatifs offre un grand choix de schéma de hashage de mot de pass et de compatibilité avec d'autres outils de chiffrement.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} builtin]{Ce keymanager utilise un keyfile séparé. Une fonction de dérivation de clé (PBKPF2) utilisant l'algorithme de hashage SHA1, avec chiffrement blowfish-cbc est utilisé pour protéger la clé.}
\item[\hspace{1mm} libgcrypt]{Ce keymanager utilise un keyfile séparé. Une fonction de dérivation de clé (PBKPF2) est utilisé pour protéger la clé, avec un algorithme de hashage et de chiffrement supporté par la version installé de la librairie libgcrypt.}
\item[\hspace{1mm} luks]{Ce keymanager fournis une compatibilité avec le format LUKS. Au lieu d'un fichier séparé, LUKS utilise un en-tête dans le système de fichier lui-même.}
\item[\hspace{1mm} openssl/openssl-compat]{Ce keymanager utiliser un keymanager séparé qui est compatible avec le format utilisé par l'outil de chiffrement opennssl. Une fonction de dérivation de clé (PBKPF2) est utilisé pour protéger la clé, avec un algorithme de hashage et de chiffrement disponible.}
\item[\hspace{1mm} password]{Ce keymanager dérive la clé directement depuis le mot de passe de l'utilisateur}
\item[\hspace{1mm} raw]{Ce keymanager utilise un keyfile séparé où la clé accès est stocké directement et sans chiffrement. Ce keymanager est utile pour gérer les partitions swap chiffrés, où le keyfile peut être choisis avec /dev/random et la clé sera différente à chaque fois quelle est lue.}
\end{description}
 
\vspace{1cm}{\huge Sécurité }
 
\
 
\hspace{1mm}  Parce que cryptmount nécessite d'opérer avec des privilèges setuid, il est très important que son fichier de configuration soit sécurisé. Idéalement, /etc/cryptmount/cmtab devrait être géré seulement par l'administrateur système, et tous les keyfiles devraient lisibles par leur propriétaire. cryptmount effectue des vérifications de sécurité sur /etc/cryptmount/cmtab chaque fois qui est lancé, et va refuser d'opérer sauf si les conditions suivant sont rencontrées:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{cmtab doit être possédé par root}
\item[\hspace{1mm} -]{cmtab doit être un fichier régulier}
\item[\hspace{1mm} -]{cmtab ne doit pas être en écriture globalement}
\item[\hspace{1mm} -]{Le répertoire contenant cmtab doit être possédé par root}
\item[\hspace{1mm} -]{Le répertoire contenant cmtab ne doit pas être en écriture globalement}
\item[\hspace{1mm} -]{Pour chaque cible dans @CM\_SYSCONFDIR@/cmtab, tous les chemins doivent être absolus}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} L'exemple suivant de @CM\_SYSCONFDIR@/cmtab consiste de 5 cibles, utilisant divers algorithmes de chiffrement et stockent leur système de fichier de différentes manières, incluant une cible représentant une partition swap chiffrée:
 
{\ttfamily
\_DEFAULTS\_ \{\\ \hspace{2mm}passwdretries=3 \# allow 3 password attempts by default\\ \}\\ \hspace{2mm}\\ basic \{\\ \hspace{2mm}dev=/home/secretiveuser/crypt.fs\\ \hspace{2mm}dir=/home/secretiveuser/crypt \# where to mount\\ \hspace{2mm}loop=auto \# find free loop-device\\ \hspace{2mm}fstype=ext3 mountoptions=default\\ \hspace{2mm}cipher=aes-cbc-plain \# filesystem encryption\\ \hspace{2mm}keyfile=/home/secretiveuser/crypt.key\\ \hspace{2mm}keyformat=builtin\\ \}\\ \hspace{2mm}\\ partition \{\\ \hspace{2mm}dev=/dev/hdb62 \# use whole disk partition\\ \hspace{2mm}dir=/mnt/crypt62\\ \hspace{2mm}fstype=ext3 mountoptions=nosuid,noexec\\ \hspace{2mm}cipher=serpent-cbc-plain\\ \hspace{2mm}keyfile=@CM\_SYSCONFDIR@/crypt\_hdb62.key\\ \hspace{2mm}keyformat=openssl \# use OpenSSL key-encryption\\ \hspace{2mm}keyhash=md5 keycipher=bf-cbc \# encryption of key file\\ \}\\ \hspace{2mm}\\ subset \{\\ \hspace{2mm}dev=/dev/hdb63\\ \hspace{2mm}startsector=512 numsectors=16384 \# use subset of partition\\ \hspace{2mm}dir=/mnt/encrypted\textbackslash{} subset\textbackslash{} of\textbackslash{} hdb\\ \hspace{2mm}fstype=reiserfs mountoptions=defaults\\ \hspace{2mm}cipher=twofish-cbc-plain \# filesystem encryption\\ \hspace{2mm}keyfile=@CM\_SYSCONFDIR@/crypt\_hdb63.key\\ \hspace{2mm}keyformat=libgcrypt\\ \hspace{2mm}keyhash=md5 keycipher=blowfish-cbc \# encryption of key file\\ \}\\ \hspace{2mm}\\ encswap \{ \# encrypted swap partition\\ \hspace{2mm}bootaction=swap\\ \hspace{2mm}dev=/dev/disk/by-id/scsi-SATA\_ST500\_ABCDEFG-part37\\ \hspace{2mm}startsector=16896 numsectors=1024 \# use subset of partition\\ \hspace{2mm}fstype=swap flags=mkswap cipher=twofish-cbc-plain\\ \hspace{2mm}keyfile=/dev/random keymaxlen=16 keyformat=raw\\ \}\\ \hspace{2mm}\\ luks \{ \# partition created by cryptsetup-luks\\ \hspace{2mm}dev=/dev/hdb63\\ \hspace{2mm}dir=/mnt/luks-partition-\$(USERNAME)\\ \hspace{2mm}keyformat=luks\\ \hspace{2mm}keyfile=/dev/hdb63\\ \hspace{2mm}fstype=ext3\\ \}\\
}
\vspace{8mm}
\end{flushleft}
\end{document}
