New translation

PR : docs/38700
Submitted by: Marc Fonvieille <marc@freebsd-fr.org>
This commit is contained in:
Sebastien Gioria 2002-05-29 19:59:39 +00:00
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

View 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"

View 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&eacute;rification ind&eacute;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&eacute; IPsec et cela semble fonctionner.
Comment pouvez-vous en &ecirc;tre s&ucirc;r? Je d&eacute;cris
une m&eacute;thode pour v&eacute;rifier exp&eacute;rimentalement
le fonctionnement d'IPsec.</para>
&abstract.license;
&abstract.disclaimer;
&trans.a.fonvieille;
</abstract>
</articleinfo>
<sect1>
<title>Le probl&egrave;me</title>
<para>Tout d'abord, supposons que vous avez <link
linkend="ipsec-install">install&eacute;
<emphasis>IPsec</emphasis></link>.
Comment savez-vous si cela <link linkend="caveat">fonctionne</link>?
Bien s&ucirc;r, votre connexion ne fonctionnera s'il est mal
configur&eacute;, et fonctionnera quand vous l'aurez enfin
correctement configur&eacute;. &man.netstat.1; le fera
appara&icirc;tre. Mais pouvez-vous le confirmer
de fa&ccedil;on ind&eacute;pendante?</para>
</sect1>
<sect1>
<title>La solution</title>
<para>Tout d'abord, quelques informations th&eacute;oriques relative
&agrave; la cryptographie:</para>
<orderedlist>
<listitem>
<para>Les donn&eacute;es chiffr&eacute;es sont
uniform&eacute;ment distribu&eacute;es, i.e., ont une entropie
maximale par symbole;</para>
</listitem>
<listitem>
<para>Les donn&eacute;es brutes, non compress&eacute;es sont en
g&eacute;n&eacute;rale redondantes, i.e., n'ont pas une
entropie maximale.</para>
</listitem>
</orderedlist>
<para>Supposez que vous pourriez mesurer l'entropie des
donn&eacute;es &agrave; destination et en provenance de votre
interface r&eacute;seau. Alors vous pourriez voir la
diff&eacute;rence entre donn&eacute;es non-chiff&eacute;es et
donn&eacute;es chiffr&eacute;es. Cela serait vrai m&ecirc;me si
certaines des donn&eacute;es en &ldquo;mode chiffr&eacute;&rdquo;
n'&eacute;taient pas chiffr&eacute;es --- comme l'en-t&ecirc;te IP
externe, si le paquet doit &ecirc;tre routable.</para>
<sect2 id="MUST">
<title>MUST</title>
<para>L'&ldquo;Universal Statistical Test for Random
Bit Generators&rdquo;(<ulink
url="http://www.geocities.com/SiliconValley/Code/4704/universal.pdf">
<acronym>MUST</acronym></ulink>) d'Ueli Maurer, ou encore le
&ldquo;test statistique universel pour les g&eacute;n&eacute;rateurs
al&eacute;atoires de bits&rdquo;, mesure rapidement l'entropie d'un
&eacute;chantillon. Il utilise une sorte d'algorithme de compression.
<link linkend="code">Le code est donn&eacute; ci-dessous</link> pour
une variante qui mesure les morceaux (environ un quart de
m&eacute;gaoctet) successifs d'un fichier.</para>
</sect2>
<sect2 id="tcpdump">
<title>Tcpdump</title>
<para>Nous avons &eacute;galement besoin d'une mani&egrave;re de
capturer les donn&eacute;es r&eacute;seau brutes. Un programme
appel&eacute; &man.tcpdump.1; vous permet de faire cela, si vous
avez activ&eacute; 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'&agrave; 10000 octets par paquets seront
captur&eacute;s.</para>
</sect2>
</sect1>
<sect1>
<title>L'exp&eacute;rience</title>
<para>Voici l'exp&eacute;rience:</para>
<procedure>
<step>
<para>Ouvrez une fen&ecirc;tre sur un h&ocirc;te IPsec et une
autre sur un h&ocirc;te non s&eacute;curis&eacute;.</para>
</step>
<step>
<para>Maintenant commencez &agrave; <link linkend="tcpdump">capturer
les paquets</link>.</para>
</step>
<step>
<para>Dans la fen&ecirc;tre &ldquo;s&eacute;curis&eacute;e&rdquo;,
lancez la commande Unix &man.yes.1;, qui fera d&eacute;filer
le caract&egrave;re <literal>y</literal>. Au bout d'un moment,
arr&ecirc;tez cela. Passez &agrave; la fen&ecirc;tre non
s&eacute;curis&eacute;e, et faites de m&ecirc;me. Au bout
d'un moment, arr&ecirc;tez.</para>
</step>
<step>
<para>Maintenant lancez <link linkend="code">MUST</link> sur les
paquets captur&eacute;s. Vous devriez voir quelque chose de
semblable &agrave; ce qui suit. Ce qui est important de noter est
que la connexion non s&eacute;curis&eacute;e a 93% (6,7) de valeurs
attendues (7,18), et la connexion &ldquo;normale&rdquo; 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&eacute;rience montre qu'IPsec <emphasis>semble</emphasis>
distribuer les donn&eacute;es utiles
<emphasis>uniform&eacute;ment</emphasis> comme un chiffrement
le devrait. Cependant, l'exp&eacute;rience d&eacute;crite
ici <emphasis>ne peut pas</emphasis> d&eacute;tecter les
probl&egrave;mes possibles dans un syst&egrave;me. Ceux-ci
peuvent &ecirc;tre la g&eacute;n&eacute;ration ou l'&eacute;change
d'une cl&eacute; faible, des donn&eacute;es ou cl&eacute;s visibles
par d'autres, l'utilisation d'algorithmes faibles, code du noyau
modifi&eacute;, etc...
Etudiez les sources, ma&icirc;trisez le code.</para>
</sect1>
<sect1 id="IPsec">
<title>IPsec - D&eacute;finition</title>
<para>Extensions de s&eacute;curit&eacute; au protocole internet
IPv4, requisent pour l'IPv6. Un protocole pour le chiffrement et
l'authentification au niveau IP (h&ocirc;te &agrave; h&ocirc;te).
SSL s&eacute;curise uniquement une socket d'application;
<application>SSH</application> s&eacute;curise seulement une session;
<application>PGP</application> s&eacute;curise uniquement un fichier
sp&eacute;cifique ou un message. IPsec chiffre tout entre deux
h&ocirc;tes.</para>
</sect1>
<sect1 id="ipsec-install">
<title>Installation d'IPsec</title>
<para>La plupart des versions r&eacute;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&egrave;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 &ecirc;tre pr&eacute;sent dans le fichier de
configuration du noyau afin de pouvoir capturer les donn&eacute;es
r&eacute;seau avec &man.tcpdump.1;. Soyez-s&ucirc;r de lancer
&man.config.8; apr&egrave;s avoir rajout&eacute; la ligne
ci-dessous, et de recompiler et r&eacute;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&ecirc;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&lt;&lt;L)
#define Q (10*V)
#define K (100 *Q)
#define MAXSAMP (Q + K)
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
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 &lt; 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 &lt; V; i++) {
table[i] = 0;
}
for (i = 0; i &lt; 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 &lt; Q + K; i++) {
j = i;
b = fgetc(fptr);
if (b &lt; 0)
run = 0;
if (run) {
if (table[b] &gt; 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 &lt; (int)(sum*8.0 + 0.50); i++)
printf("-");
printf("\n");
/* refill initial table */
if (0) {
for (i = 0; i &lt; Q; i++) {
b = fgetc(fptr);
if (b &lt; 0) {
run = 0;
} else {
table[b] = i;
}
}
}
}
}</programlisting>
</sect1>
</article>