New translation
PR : docs/38700 Submitted by: Marc Fonvieille <marc@freebsd-fr.org>
This commit is contained in:
parent
c035787c2e
commit
e2b2054379
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=13270
2 changed files with 391 additions and 0 deletions
22
fr_FR.ISO8859-1/articles/ipsec-must/Makefile
Normal file
22
fr_FR.ISO8859-1/articles/ipsec-must/Makefile
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#
|
||||||
|
# The FreeBSD Documentation Project
|
||||||
|
# The FreeBSD French Documentation Project
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
# Original revision: 1.1
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DOC?= article
|
||||||
|
|
||||||
|
FORMATS?= html
|
||||||
|
|
||||||
|
INSTALL_COMPRESSED?=gz
|
||||||
|
INSTALL_ONLY_COMPRESSED?=
|
||||||
|
|
||||||
|
SRCS= article.sgml
|
||||||
|
|
||||||
|
DOC_PREFIX?= ${.CURDIR}/../../..
|
||||||
|
|
||||||
|
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
|
369
fr_FR.ISO8859-1/articles/ipsec-must/article.sgml
Normal file
369
fr_FR.ISO8859-1/articles/ipsec-must/article.sgml
Normal file
|
@ -0,0 +1,369 @@
|
||||||
|
<!--
|
||||||
|
The FreeBSD Documentation Project
|
||||||
|
The FreeBSD French Documentation Project
|
||||||
|
|
||||||
|
$FreeBSD$
|
||||||
|
Original revision: 1.9
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||||||
|
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"> %man;
|
||||||
|
<!ENTITY % abstract PUBLIC "-//FreeBSD//ENTITIES DocBook Abstract Entities//FR"> %abstract;
|
||||||
|
<!ENTITY % artheader PUBLIC "-//FreeBSD//ENTITIES DocBook ArtHeader Entities//FR"> %artheader;
|
||||||
|
<!ENTITY % translators PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//FR"> %translators;
|
||||||
|
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
|
||||||
|
%man;
|
||||||
|
]>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<articleinfo>
|
||||||
|
<title>Vérification indépendante du fonctionnement d'IPsec sous
|
||||||
|
FreeBSD</title>
|
||||||
|
|
||||||
|
<author>
|
||||||
|
<firstname>David</firstname>
|
||||||
|
<surname>Honig</surname>
|
||||||
|
|
||||||
|
<affiliation>
|
||||||
|
<address><email>honig@sprynet.com</email></address>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
|
||||||
|
<pubdate>3 Mai 1999</pubdate>
|
||||||
|
|
||||||
|
<abstract>
|
||||||
|
<para>Vous avez installé IPsec et cela semble fonctionner.
|
||||||
|
Comment pouvez-vous en être sûr? Je décris
|
||||||
|
une méthode pour vérifier expérimentalement
|
||||||
|
le fonctionnement d'IPsec.</para>
|
||||||
|
&abstract.license;
|
||||||
|
&abstract.disclaimer;
|
||||||
|
&trans.a.fonvieille;
|
||||||
|
</abstract>
|
||||||
|
</articleinfo>
|
||||||
|
|
||||||
|
<sect1>
|
||||||
|
<title>Le problème</title>
|
||||||
|
|
||||||
|
<para>Tout d'abord, supposons que vous avez <link
|
||||||
|
linkend="ipsec-install">installé
|
||||||
|
<emphasis>IPsec</emphasis></link>.
|
||||||
|
Comment savez-vous si cela <link linkend="caveat">fonctionne</link>?
|
||||||
|
Bien sûr, votre connexion ne fonctionnera s'il est mal
|
||||||
|
configuré, et fonctionnera quand vous l'aurez enfin
|
||||||
|
correctement configuré. &man.netstat.1; le fera
|
||||||
|
apparaître. Mais pouvez-vous le confirmer
|
||||||
|
de façon indépendante?</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1>
|
||||||
|
<title>La solution</title>
|
||||||
|
|
||||||
|
<para>Tout d'abord, quelques informations théoriques relative
|
||||||
|
à la cryptographie:</para>
|
||||||
|
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Les données chiffrées sont
|
||||||
|
uniformément distribuées, i.e., ont une entropie
|
||||||
|
maximale par symbole;</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Les données brutes, non compressées sont en
|
||||||
|
générale redondantes, i.e., n'ont pas une
|
||||||
|
entropie maximale.</para>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
|
||||||
|
<para>Supposez que vous pourriez mesurer l'entropie des
|
||||||
|
données à destination et en provenance de votre
|
||||||
|
interface réseau. Alors vous pourriez voir la
|
||||||
|
différence entre données non-chiffées et
|
||||||
|
données chiffrées. Cela serait vrai même si
|
||||||
|
certaines des données en “mode chiffré”
|
||||||
|
n'étaient pas chiffrées --- comme l'en-tête IP
|
||||||
|
externe, si le paquet doit être routable.</para>
|
||||||
|
|
||||||
|
<sect2 id="MUST">
|
||||||
|
<title>MUST</title>
|
||||||
|
|
||||||
|
<para>L'“Universal Statistical Test for Random
|
||||||
|
Bit Generators”(<ulink
|
||||||
|
url="http://www.geocities.com/SiliconValley/Code/4704/universal.pdf">
|
||||||
|
<acronym>MUST</acronym></ulink>) d'Ueli Maurer, ou encore le
|
||||||
|
“test statistique universel pour les générateurs
|
||||||
|
aléatoires de bits”, mesure rapidement l'entropie d'un
|
||||||
|
échantillon. Il utilise une sorte d'algorithme de compression.
|
||||||
|
<link linkend="code">Le code est donné ci-dessous</link> pour
|
||||||
|
une variante qui mesure les morceaux (environ un quart de
|
||||||
|
mégaoctet) successifs d'un fichier.</para>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2 id="tcpdump">
|
||||||
|
<title>Tcpdump</title>
|
||||||
|
|
||||||
|
<para>Nous avons également besoin d'une manière de
|
||||||
|
capturer les données réseau brutes. Un programme
|
||||||
|
appelé &man.tcpdump.1; vous permet de faire cela, si vous
|
||||||
|
avez activé l'interface
|
||||||
|
<emphasis>Berkeley Packet Filter</emphasis> (Filtre de Paquet de
|
||||||
|
Berkeley) dans votre <link linkend="kernel">fichier de
|
||||||
|
configuration du noyau</link>.</para>
|
||||||
|
|
||||||
|
<para>La commande</para>
|
||||||
|
|
||||||
|
<screen><userinput><command>tcpdump</command> -c 4000 -s 10000 -w <replaceable>dumpfile.bin</replaceable></userinput></screen>
|
||||||
|
|
||||||
|
<para>capturera 4000 paquets brutes dans le fichier
|
||||||
|
<replaceable>dumpfile.bin</replaceable>. Dans cet exemple
|
||||||
|
jusqu'à 10000 octets par paquets seront
|
||||||
|
capturés.</para>
|
||||||
|
</sect2>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1>
|
||||||
|
<title>L'expérience</title>
|
||||||
|
|
||||||
|
<para>Voici l'expérience:</para>
|
||||||
|
|
||||||
|
<procedure>
|
||||||
|
<step>
|
||||||
|
<para>Ouvrez une fenêtre sur un hôte IPsec et une
|
||||||
|
autre sur un hôte non sécurisé.</para>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step>
|
||||||
|
<para>Maintenant commencez à <link linkend="tcpdump">capturer
|
||||||
|
les paquets</link>.</para>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step>
|
||||||
|
<para>Dans la fenêtre “sécurisée”,
|
||||||
|
lancez la commande Unix &man.yes.1;, qui fera défiler
|
||||||
|
le caractère <literal>y</literal>. Au bout d'un moment,
|
||||||
|
arrêtez cela. Passez à la fenêtre non
|
||||||
|
sécurisée, et faites de même. Au bout
|
||||||
|
d'un moment, arrêtez.</para>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step>
|
||||||
|
<para>Maintenant lancez <link linkend="code">MUST</link> sur les
|
||||||
|
paquets capturés. Vous devriez voir quelque chose de
|
||||||
|
semblable à ce qui suit. Ce qui est important de noter est
|
||||||
|
que la connexion non sécurisée a 93% (6,7) de valeurs
|
||||||
|
attendues (7,18), et la connexion “normale” a 29%
|
||||||
|
(2,1) de valeurs attendues.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.user; <userinput>tcpdump -c 4000 -s 10000 -w <replaceable>ipsecdemo.bin</replaceable></userinput>
|
||||||
|
&prompt.user; <userinput>uliscan <replaceable>ipsecdemo.bin</replaceable></userinput>
|
||||||
|
|
||||||
|
Uliscan 21 Dec 98
|
||||||
|
L=8 256 258560
|
||||||
|
Measuring file ipsecdemo.bin
|
||||||
|
Init done
|
||||||
|
Expected value for L=8 is 7.1836656
|
||||||
|
6.9396 --------------------------------------------------------
|
||||||
|
6.6177 -----------------------------------------------------
|
||||||
|
6.4100 ---------------------------------------------------
|
||||||
|
2.1101 -----------------
|
||||||
|
2.0838 -----------------
|
||||||
|
2.0983 -----------------</screen>
|
||||||
|
</step>
|
||||||
|
</procedure>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="caveat">
|
||||||
|
<title>Mise en garde</title>
|
||||||
|
|
||||||
|
<para>Cette expérience montre qu'IPsec <emphasis>semble</emphasis>
|
||||||
|
distribuer les données utiles
|
||||||
|
<emphasis>uniformément</emphasis> comme un chiffrement
|
||||||
|
le devrait. Cependant, l'expérience décrite
|
||||||
|
ici <emphasis>ne peut pas</emphasis> détecter les
|
||||||
|
problèmes possibles dans un système. Ceux-ci
|
||||||
|
peuvent être la génération ou l'échange
|
||||||
|
d'une clé faible, des données ou clés visibles
|
||||||
|
par d'autres, l'utilisation d'algorithmes faibles, code du noyau
|
||||||
|
modifié, etc...
|
||||||
|
Etudiez les sources, maîtrisez le code.</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="IPsec">
|
||||||
|
<title>IPsec - Définition</title>
|
||||||
|
|
||||||
|
<para>Extensions de sécurité au protocole internet
|
||||||
|
IPv4, requisent pour l'IPv6. Un protocole pour le chiffrement et
|
||||||
|
l'authentification au niveau IP (hôte à hôte).
|
||||||
|
SSL sécurise uniquement une socket d'application;
|
||||||
|
<application>SSH</application> sécurise seulement une session;
|
||||||
|
<application>PGP</application> sécurise uniquement un fichier
|
||||||
|
spécifique ou un message. IPsec chiffre tout entre deux
|
||||||
|
hôtes.</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="ipsec-install">
|
||||||
|
<title>Installation d'IPsec</title>
|
||||||
|
|
||||||
|
<para>La plupart des versions récentes de FreeBSD ont le support
|
||||||
|
IPsec dans leurs sources de base. Aussi vous devrez probablement
|
||||||
|
ajouter l'option <option>IPSEC</option> dans votre configuration de noyau
|
||||||
|
et, après la compilation et l'installation du noyau, configurer
|
||||||
|
les connexions IPsec en utilisant la commande
|
||||||
|
&man.setkey.8;.</para>
|
||||||
|
|
||||||
|
<para>Un guide complet sur l'utilisation d'IPsec sous FreeBSD est
|
||||||
|
fourni dans le <ulink url="../../books/handbook/ipsec.html">Manuel
|
||||||
|
de Freebsd</ulink>.</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="kernel">
|
||||||
|
<title>src/sys/i386/conf/KERNELNAME</title>
|
||||||
|
|
||||||
|
<para>Ce qui suit doit être présent dans le fichier de
|
||||||
|
configuration du noyau afin de pouvoir capturer les données
|
||||||
|
réseau avec &man.tcpdump.1;. Soyez-sûr de lancer
|
||||||
|
&man.config.8; après avoir rajouté la ligne
|
||||||
|
ci-dessous, et de recompiler et réinstaller.</para>
|
||||||
|
|
||||||
|
<programlisting>device bpf</programlisting>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="code">
|
||||||
|
<title>Test statistique universel de Maurer (pour une longueur de
|
||||||
|
bloc=8 bits)</title>
|
||||||
|
|
||||||
|
<para>Vous pouvez trouver le même code source <ulink
|
||||||
|
url="http://www.geocities.com/SiliconValley/Code/4704/uliscanc.txt">
|
||||||
|
ici</ulink>.</para>
|
||||||
|
|
||||||
|
<programlisting>/*
|
||||||
|
ULISCAN.c ---blocksize of 8
|
||||||
|
|
||||||
|
1 Oct 98
|
||||||
|
1 Dec 98
|
||||||
|
21 Dec 98 uliscan.c derived from ueli8.c
|
||||||
|
|
||||||
|
This version has // comments removed for Sun cc
|
||||||
|
|
||||||
|
This implements Ueli M Maurer's "Universal Statistical Test for Random
|
||||||
|
Bit Generators" using L=8
|
||||||
|
|
||||||
|
Accepts a filename on the command line; writes its results, with other
|
||||||
|
info, to stdout.
|
||||||
|
|
||||||
|
Handles input file exhaustion gracefully.
|
||||||
|
|
||||||
|
Ref: J. Cryptology v 5 no 2, 1992 pp 89-105
|
||||||
|
also on the web somewhere, which is where I found it.
|
||||||
|
|
||||||
|
-David Honig
|
||||||
|
honig@sprynet.com
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
ULISCAN filename
|
||||||
|
outputs to stdout
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define L 8
|
||||||
|
#define V (1<<L)
|
||||||
|
#define Q (10*V)
|
||||||
|
#define K (100 *Q)
|
||||||
|
#define MAXSAMP (Q + K)
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
int main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char **argv;
|
||||||
|
{
|
||||||
|
FILE *fptr;
|
||||||
|
int i,j;
|
||||||
|
int b, c;
|
||||||
|
int table[V];
|
||||||
|
double sum = 0.0;
|
||||||
|
int iproduct = 1;
|
||||||
|
int run;
|
||||||
|
|
||||||
|
extern double log(/* double x */);
|
||||||
|
|
||||||
|
printf("Uliscan 21 Dec 98 \nL=%d %d %d \n", L, V, MAXSAMP);
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
printf("Usage: Uliscan filename\n");
|
||||||
|
exit(-1);
|
||||||
|
} else {
|
||||||
|
printf("Measuring file %s\n", argv[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fptr = fopen(argv[1],"rb");
|
||||||
|
|
||||||
|
if (fptr == NULL) {
|
||||||
|
printf("Can't find %s\n", argv[1]);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < V; i++) {
|
||||||
|
table[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < Q; i++) {
|
||||||
|
b = fgetc(fptr);
|
||||||
|
table[b] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Init done\n");
|
||||||
|
|
||||||
|
printf("Expected value for L=8 is 7.1836656\n");
|
||||||
|
|
||||||
|
run = 1;
|
||||||
|
|
||||||
|
while (run) {
|
||||||
|
sum = 0.0;
|
||||||
|
iproduct = 1;
|
||||||
|
|
||||||
|
if (run)
|
||||||
|
for (i = Q; run && i < Q + K; i++) {
|
||||||
|
j = i;
|
||||||
|
b = fgetc(fptr);
|
||||||
|
|
||||||
|
if (b < 0)
|
||||||
|
run = 0;
|
||||||
|
|
||||||
|
if (run) {
|
||||||
|
if (table[b] > j)
|
||||||
|
j += K;
|
||||||
|
|
||||||
|
sum += log((double)(j-table[b]));
|
||||||
|
|
||||||
|
table[b] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!run)
|
||||||
|
printf("Premature end of file; read %d blocks.\n", i - Q);
|
||||||
|
|
||||||
|
sum = (sum/((double)(i - Q))) / log(2.0);
|
||||||
|
printf("%4.4f ", sum);
|
||||||
|
|
||||||
|
for (i = 0; i < (int)(sum*8.0 + 0.50); i++)
|
||||||
|
printf("-");
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
/* refill initial table */
|
||||||
|
if (0) {
|
||||||
|
for (i = 0; i < Q; i++) {
|
||||||
|
b = fgetc(fptr);
|
||||||
|
if (b < 0) {
|
||||||
|
run = 0;
|
||||||
|
} else {
|
||||||
|
table[b] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}</programlisting>
|
||||||
|
</sect1>
|
||||||
|
</article>
|
Loading…
Reference in a new issue