\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]{lun. juin 20 10:31:51 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={haveged},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Génération de nombres aléatoires},
CreationDate={D:20160620103151},
ModDate={D:20160620103151},
Keywords={Linux;random;security}
}}
\begin{document}
 
\begin{center}
{\Huge haveged }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Génération de nombres aléatoires}
 
\vspace{10mm}
 
\hspace{1mm}  haveged génère un flux imprédictible de nombres aléatoires depuis les effets indirects des événements hardware sur l'état caché (caches, prédicteurs de branche, tables de traduction mémoire, etc) en utilisant l'argorithme HAVEGE (HArdware Volatile Entropy Gathering and Expansion). L'algorithme opère en userspace, sans privilèges spéciaux.
\vspace{5mm} \\
 
 
\hspace{1mm}  Linux utilise les interfaces /dev/random et /dev/urandom pour fournir des nombres aléatoire. Les mécanismes standard pour remplir /dev/random peuvent ne pas être suffisants pour répondre à la demande du système. Dans ces circonstances haveged peut être lancé comme services privilégié pour remplir /dev/random.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -b nnn, --buffer=nnn]{Définis la taille du tampon en KW. (défaut: 128KW = 512Kio)}
\item[\hspace{1mm} -d nnn, --data=nnn]{Définis la taille du cache de données en Ko. Défaut: 16 ou déterminé dynamiquement}
\item[\hspace{1mm} -f file, --file=file]{Définis le fichier une utilisation non-service. Défaut: "sample"}
\item[\hspace{1mm} -F, --foreground]{Ne lance pas en tâche de fond}
\item[\hspace{1mm} -i nnn, --inst=nnn]{Taille du cache d'instruction en Ko. Défaut: 16 ou déterminé dynamiquement}
\item[\hspace{1mm} nnn, --number=nnn]{Nombre d'octets écris dans le fichier de sortie.}
\item[\hspace{1mm} -o <spec>, --onlinetest=<spec>]{Spécifie les tests online à lancer <spec> consiste de groupes optionnels "t"ot et "c"ontinuous, chaque groupe indiquant les procédures à lancer, utilisant "a<n>" pour indiques une procédure AIS-31 variante A, et "b" pour indiques la procédure B. Les spécification sont indépendante de l'ordre. Les tests "tot" sont lancés seulement à l'initialisation. En test continue, la séquence de test est cyclique.}
\item[\hspace{1mm} -p file, --pidfile=file]{Définis le chemin du fichier pid. Défaut: /var/run/haveged.pid}
\item[\hspace{1mm} -r n, --run=n]{Définis le niveau d'exécution pour le service. 0=lance en service, doit être root. 1=Affiche la configuration et se termine. >1, écris N Kio sur la sortie. déprécié, utiliser --number}
\item[\hspace{1mm} -v n, --verbose=n]{Diagnostique. -1 signifie tous les diagnostiques (défaut0):}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} 1]{Affiche le sommaire build/tunning en se terminant}
\item[\hspace{6mm} 2]{Affiche les détails de retentatives de test online}
\item[\hspace{6mm} 4]{Affice le timing pour les collection}
\item[\hspace{6mm} 8]{Affiche a couche de boucle de collection}
\item[\hspace{6mm} 16]{Affiche les offsets de code de boucle de collection}
\item[\hspace{6mm} 32]{Affiche tous les détails de tests online terminés}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} -w nnn, --write=nnn]{Définis le write\_wakeup\_threshold de l'interface à nnn bits. uniquement en run level 0.}
\end{description}
 
\vspace{1cm}{\huge NOTES }
 
\
 
\hspace{1mm}  haveged définis l'algorithme HAVEGE pour une efficacité maximum en utilisant un hiérarchie de défauts, options de ligne de commande, informations de système de fichier virtuel, et informations cpuid si disponible. Sous certaines circonstances, l'entrée utilisateur n'est pas requise pour d'excellents résultats.
\vspace{5mm} \\
 
 
\hspace{1mm}  Les tests run-time fournissent l'assurance des opérations de haveged. La suite de test est modélisée sur la spécification AIS-31 du German Common Criteria, BIS. Cette spécification est typiquement appliquée aux périphériques aléatoires, nécessitant une certification formelle. Parce qu'haveged tourne sur différentes plateformes hardware, la certification ne peut pas être un but, mais la suite de test AIS-31 fournis un moyen de valider la sortie de haveged avec les même tests opérationnels appliqués aux périphériques hardwares certifiés.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Fichiers }
 
\
 
\hspace{1mm}  Si haveged est lancé en tant que service, les fichiers suivants sont requis:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} /dev/random]{}
\item[\hspace{1mm} /proc/sys/kernel/osrelease]{}
\item[\hspace{1mm} /proc/sys/kernel/random/poolsize]{}
\item[\hspace{1mm} /proc/sys/kernel/random/write\_wakeup\_threshold]{}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Écrire 1,5Mo de données aléatoirs dans /tmp/random \\
\hspace{1mm} \textbf{haveged -n 1.5M -f /tmp/random} \\
\hspace{1mm} Générer un /tmp/keyfile pour le chiffrement de disque avec LUKS \\
\hspace{1mm} \textbf{haveged -n 2048 -f /tmp/keyfile} \\
\hspace{1mm} Écraser la partition /dev/sda1 avec des données aléatoires \\
\hspace{1mm} \textbf{haveged -n 0 | dd of=/dev/sda1} \\
\hspace{1mm} Générer des mots de passe ASCII aléatoires de 16 caractères \\
\hspace{1mm} \textbf{(haveged -n 1000 -f - 2>/dev/null | tr -cd '[:graph:]' | fold -w 16 \&\& echo ) | head} \\
\hspace{1mm} Écrire un flux d'octets dans un pipe. pv mesure la vitesse d'écriture dans le pipe \\
\hspace{1mm} \textbf{haveged -n 0 | pv > /dev/null} \\
\hspace{1mm} Évaluer la vitesse de génération de 1Go de données aléatoires \\
\hspace{1mm} \textbf{haveged -n 1g -f - | dd of=/dev/null} \\
\hspace{1mm} Créer un fichier clé aléatoire contenant 65 clé aléatoire pour le programme de chiffrement aespipe \\
\hspace{1mm} \textbf{haveged -n 3705 -f - 2>/dev/null | uuencode -m - | head -n 66 | tail -n 65} \\
\hspace{1mm} Tester la qualité des données générée avec la suite de test dieharder \\
\hspace{1mm} \textbf{haveged -n 0 | dieharder -g 200 -a} \\
\hspace{1mm} Générer 16k de données, tester avec la procédure A et B avec résultats détaillés. \\
\hspace{1mm} \textbf{haveged -n 16k -o tba8ca8 -v 33} \\
\hspace{1mm} Génèrer également 16k de données avec un buffer plus grand. Le test c peut être complété \\
\hspace{1mm} \textbf{haveged -n 16k -o tba8ca8 -v 33 -b 512} \\
\end{flushleft}
\end{document}
