View | Details | Raw Unified | Return to bug 38700
Collapse All | Expand All

(-)articles/Makefile (+1 lines)
Lines 27-32 Link Here
27
SUBDIR+= pxe
27
SUBDIR+= pxe
28
SUBDIR+= pr-guidelines
28
SUBDIR+= pr-guidelines
29
SUBDIR+= cvsup-advanced
29
SUBDIR+= cvsup-advanced
30
SUBDIR+= ipsec-must
30
31
31
ROOT_SYMLINKS+= new-users
32
ROOT_SYMLINKS+= new-users
32
33
(-)articles/ipsec-must/Makefile (+19 lines)
Line 0 Link Here
1
#                                                                        
2
#    The FreeBSD Documentation Project                                   
3
#    The FreeBSD French Documentation Project                            
4
#                                                                        
5
#    $FreeBSD: doc/en_US.ISO8859-1/articles/ipsec-must/Makefile,v 1.2 2001/07/29 09:47:40 dd Exp $
6
#    Original revision: 1.2
7
8
DOC?= article
9
10
FORMATS?= html
11
12
INSTALL_COMPRESSED?=gz
13
INSTALL_ONLY_COMPRESSED?=
14
15
SRCS= article.sgml
16
17
DOC_PREFIX?= ${.CURDIR}/../../..
18
19
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
(-)articles/ipsec-must/article.sgml (+369 lines)
Line 0 Link Here
1
<!--
2
    The FreeBSD Documentation Project
3
    The FreeBSD French Documentation Project
4
5
    $FreeBSD: doc/en_US.ISO8859-1/articles/ipsec-must/article.sgml,v 1.9 2001/10/16 11:53:00 keramida Exp $
6
    Original revision: 1.9
7
-->
8
9
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
10
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"> %man;
11
<!ENTITY % abstract PUBLIC "-//FreeBSD//ENTITIES DocBook Abstract Entities//FR"> %abstract;
12
<!ENTITY % artheader PUBLIC "-//FreeBSD//ENTITIES DocBook ArtHeader Entities//FR"> %artheader;
13
<!ENTITY % translators PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//FR"> %translators;
14
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
15
%man;
16
]>
17
18
<article>
19
  <articleinfo>
20
    <title>V&eacute;rification ind&eacute;pendante du fonctionnement d'IPsec sous
21
      FreeBSD</title>
22
23
    <author>
24
      <firstname>David</firstname>
25
      <surname>Honig</surname>
26
27
      <affiliation>
28
        <address><email>honig@sprynet.com</email></address>
29
      </affiliation>
30
    </author>
31
32
    <pubdate>3 Mai 1999</pubdate>
33
34
    <abstract>
35
      <para>Vous avez install&eacute; IPsec et cela semble fonctionner.
36
	Comment pouvez-vous en &ecirc;tre s&ucirc;r?  Je d&eacute;cris 
37
	une m&eacute;thode pour v&eacute;rifier exp&eacute;rimentalement 
38
	le fonctionnement d'IPsec.</para>
39
	&abstract.license;
40
	&abstract.disclaimer;
41
	&trans.a.fonvieille;
42
    </abstract>
43
  </articleinfo>
44
45
  <sect1>
46
    <title>Le probl&egrave;me</title>
47
48
    <para>Tout d'abord, supposons que vous avez <link
49
      linkend="ipsec-install">install&eacute; 
50
      <emphasis>IPsec</emphasis></link>.
51
      Comment savez-vous si cela <link linkend="caveat">fonctionne</link>?
52
      Bien s&ucirc;r, votre connexion ne fonctionnera s'il est mal 
53
      configur&eacute;, et fonctionnera quand vous l'aurez enfin 
54
      correctement configur&eacute;.  &man.netstat.1; le fera 
55
      appara&icirc;tre.  Mais pouvez-vous le confirmer
56
      de fa&ccedil;on ind&eacute;pendante?</para>
57
  </sect1>
58
59
  <sect1>
60
    <title>La solution</title>
61
62
    <para>Tout d'abord, quelques informations th&eacute;oriques relative 
63
      &agrave; la cryptographie:</para>
64
65
    <orderedlist>
66
      <listitem>
67
	<para>Les donn&eacute;es chiffr&eacute;es sont 
68
	  uniform&eacute;ment distribu&eacute;es, i.e., ont une entropie 
69
	  maximale par symbole;</para>
70
      </listitem>
71
72
      <listitem>
73
	<para>Les donn&eacute;es brutes, non compress&eacute;es sont en 
74
	  g&eacute;n&eacute;rale redondantes, i.e., n'ont pas une 
75
	  entropie maximale.</para>
76
      </listitem>
77
    </orderedlist>
78
79
    <para>Supposez que vous pourriez mesurer l'entropie des 
80
      donn&eacute;es &agrave; destination et en provenance de votre 
81
      interface r&eacute;seau.  Alors vous pourriez voir la 
82
      diff&eacute;rence entre donn&eacute;es non-chiff&eacute;es et
83
      donn&eacute;es chiffr&eacute;es.  Cela serait vrai m&ecirc;me si 
84
      certaines des donn&eacute;es en &ldquo;mode chiffr&eacute;&rdquo; 
85
      n'&eacute;taient pas chiffr&eacute;es --- comme l'en-t&ecirc;te IP 
86
      externe, si le paquet doit &ecirc;tre routable.</para>
87
88
    <sect2 id="MUST">
89
      <title>MUST</title>
90
91
      <para>L'&ldquo;Universal Statistical Test for Random
92
	Bit Generators&rdquo;(<ulink
93
	url="http://www.geocities.com/SiliconValley/Code/4704/universal.pdf">
94
	<acronym>MUST</acronym></ulink>) d'Ueli Maurer, ou encore le
95
	&ldquo;test statistique universel pour les g&eacute;n&eacute;rateurs
96
	al&eacute;atoires de bits&rdquo;, mesure rapidement l'entropie d'un
97
	&eacute;chantillon.  Il utilise une sorte d'algorithme de compression.
98
	<link linkend="code">Le code est donn&eacute; ci-dessous</link> pour
99
	une variante qui mesure les morceaux (environ un quart de
100
	m&eacute;gaoctet) successifs d'un fichier.</para>
101
    </sect2>
102
103
    <sect2 id="tcpdump">
104
      <title>Tcpdump</title>
105
106
      <para>Nous avons &eacute;galement besoin d'une mani&egrave;re de 
107
	capturer les donn&eacute;es r&eacute;seau brutes.  Un programme 
108
	appel&eacute; &man.tcpdump.1; vous permet de faire cela, si vous 
109
	avez activ&eacute; l'interface
110
	<emphasis>Berkeley Packet Filter</emphasis> (Filtre de Paquet de
111
	Berkeley) dans votre <link linkend="kernel">fichier de 
112
	configuration du noyau</link>.</para>
113
114
      <para>La commande</para>
115
116
      <screen><userinput><command>tcpdump</command> -c 4000 -s 10000 -w <replaceable>dumpfile.bin</replaceable></userinput></screen>
117
118
      <para>capturera 4000 paquets brutes dans le fichier
119
	<replaceable>dumpfile.bin</replaceable>.  Dans cet exemple 
120
	jusqu'&agrave; 10000 octets par paquets seront 
121
	captur&eacute;s.</para>
122
    </sect2>
123
  </sect1>
124
125
  <sect1>
126
    <title>L'exp&eacute;rience</title>
127
128
    <para>Voici l'exp&eacute;rience:</para>
129
130
    <procedure>
131
      <step>
132
	<para>Ouvrez une fen&ecirc;tre sur un h&ocirc;te IPsec et une 
133
	  autre sur un h&ocirc;te non s&eacute;curis&eacute;.</para>
134
      </step>
135
136
      <step>
137
	<para>Maintenant commencez &agrave; <link linkend="tcpdump">capturer
138
	  les paquets</link>.</para>
139
      </step>
140
141
      <step>
142
	<para>Dans la fen&ecirc;tre &ldquo;s&eacute;curis&eacute;e&rdquo;, 
143
	  lancez la commande Unix &man.yes.1;, qui fera d&eacute;filer 
144
	  le caract&egrave;re <literal>y</literal>.  Au bout d'un moment, 
145
	  arr&ecirc;tez cela.  Passez &agrave; la fen&ecirc;tre non 
146
	  s&eacute;curis&eacute;e, et faites de m&ecirc;me.  Au bout
147
	  d'un moment, arr&ecirc;tez.</para>
148
      </step>
149
150
      <step>
151
	<para>Maintenant lancez <link linkend="code">MUST</link> sur les
152
	  paquets captur&eacute;s.  Vous devriez voir quelque chose de
153
	  semblable &agrave; ce qui suit.  Ce qui est important de noter est
154
	  que la connexion non s&eacute;curis&eacute;e a 93% (6,7) de valeurs
155
	  attendues (7,18), et la connexion &ldquo;normale&rdquo; a 29%
156
	  (2,1) de valeurs attendues.</para>
157
158
    <screen>&prompt.user; <userinput>tcpdump -c 4000 -s 10000 -w <replaceable>ipsecdemo.bin</replaceable></userinput>
159
&prompt.user; <userinput>uliscan <replaceable>ipsecdemo.bin</replaceable></userinput>
160
161
Uliscan 21 Dec 98
162
L=8 256 258560
163
Measuring file ipsecdemo.bin
164
Init done
165
Expected value for L=8 is 7.1836656
166
6.9396 --------------------------------------------------------
167
6.6177 -----------------------------------------------------
168
6.4100 ---------------------------------------------------
169
2.1101 -----------------
170
2.0838 -----------------
171
2.0983 -----------------</screen>
172
      </step>
173
    </procedure>
174
  </sect1>
175
176
    <sect1 id="caveat">
177
      <title>Mise en garde</title>
178
179
    <para>Cette exp&eacute;rience montre qu'IPsec <emphasis>semble</emphasis>
180
      distribuer les donn&eacute;es utiles 
181
      <emphasis>uniform&eacute;ment</emphasis> comme un chiffrement 
182
      le devrait.  Cependant, l'exp&eacute;rience d&eacute;crite
183
      ici <emphasis>ne peut pas</emphasis> d&eacute;tecter les 
184
      probl&egrave;mes possibles dans un syst&egrave;me.  Ceux-ci 
185
      peuvent &ecirc;tre la g&eacute;n&eacute;ration ou l'&eacute;change 
186
      d'une cl&eacute; faible, des donn&eacute;es ou cl&eacute;s visibles 
187
      par d'autres, l'utilisation d'algorithmes faibles, code du noyau 
188
      modifi&eacute;, etc...
189
      Etudiez les sources, ma&icirc;trisez le code.</para>
190
  </sect1>
191
192
  <sect1 id="IPsec">
193
    <title>IPsec - D&eacute;finition</title>
194
195
    <para>Extensions de s&eacute;curit&eacute; au protocole internet 
196
      IPv4, requisent pour l'IPv6.  Un protocole pour le chiffrement et
197
      l'authentification au niveau IP (h&ocirc;te &agrave; h&ocirc;te).  
198
      SSL s&eacute;curise uniquement une socket d'application; 
199
      <application>SSH</application> s&eacute;curise seulement une session;
200
      <application>PGP</application> s&eacute;curise uniquement un fichier
201
      sp&eacute;cifique ou un message.  IPsec chiffre tout entre deux 
202
      h&ocirc;tes.</para>
203
  </sect1>
204
205
  <sect1 id="ipsec-install">
206
    <title>Installation d'IPsec</title>
207
208
    <para>La plupart des versions r&eacute;centes de FreeBSD ont le support
209
      IPsec dans leurs sources de base.  Aussi vous devrez probablement
210
      ajouter l'option <option>IPSEC</option> dans votre configuration de noyau
211
      et, apr&egrave;s la compilation et l'installation du noyau, configurer
212
      les connexions IPsec en utilisant la commande
213
      &man.setkey.8;.</para>
214
215
    <para>Un guide complet sur l'utilisation d'IPsec sous FreeBSD est
216
      fourni dans le <ulink url="../../books/handbook/ipsec.html">Manuel 
217
      de Freebsd</ulink>.</para>
218
  </sect1>
219
220
  <sect1 id="kernel">
221
    <title>src/sys/i386/conf/KERNELNAME</title>
222
223
    <para>Ce qui suit doit &ecirc;tre pr&eacute;sent dans le fichier de 
224
      configuration du noyau afin de pouvoir capturer les donn&eacute;es 
225
      r&eacute;seau avec &man.tcpdump.1;.  Soyez-s&ucirc;r de lancer 
226
      &man.config.8; apr&egrave;s avoir rajout&eacute; la ligne
227
      ci-dessous, et de recompiler et r&eacute;installer.</para>
228
229
    <programlisting>device	bpf</programlisting>
230
  </sect1>
231
232
    <sect1 id="code">
233
      <title>Test statistique universel de Maurer (pour une longueur de
234
	bloc=8 bits)</title>
235
236
        <para>Vous pouvez trouver le m&ecirc;me code source <ulink
237
          url="http://www.geocities.com/SiliconValley/Code/4704/uliscanc.txt">
238
          ici</ulink>.</para>
239
240
<programlisting>/*
241
  ULISCAN.c   ---blocksize of 8
242
243
  1 Oct 98
244
  1 Dec 98
245
  21 Dec 98       uliscan.c derived from ueli8.c
246
247
  This version has // comments removed for Sun cc
248
249
  This implements Ueli M Maurer's "Universal Statistical Test for Random
250
  Bit Generators" using L=8
251
252
  Accepts a filename on the command line; writes its results, with other
253
  info, to stdout.
254
255
  Handles input file exhaustion gracefully.
256
257
  Ref: J. Cryptology v 5 no 2, 1992 pp 89-105
258
  also on the web somewhere, which is where I found it.
259
260
  -David Honig
261
  honig@sprynet.com
262
263
  Usage:
264
  ULISCAN filename
265
  outputs to stdout
266
*/
267
268
#define L 8
269
#define V (1&lt;&lt;L)
270
#define Q (10*V)
271
#define K (100   *Q)
272
#define MAXSAMP (Q + K)
273
274
#include &lt;stdio.h&gt;
275
#include &lt;math.h&gt;
276
277
int main(argc, argv)
278
int argc;
279
char **argv;
280
{
281
  FILE *fptr;
282
  int i,j;
283
  int b, c;
284
  int table[V];
285
  double sum = 0.0;
286
  int iproduct = 1;
287
  int run;
288
289
  extern double   log(/* double x */);
290
291
  printf("Uliscan 21 Dec 98 \nL=%d %d %d \n", L, V, MAXSAMP);
292
293
  if (argc &lt; 2) {
294
    printf("Usage: Uliscan filename\n");
295
    exit(-1);
296
  } else {
297
    printf("Measuring file %s\n", argv[1]);
298
  }
299
300
  fptr = fopen(argv[1],"rb");
301
302
  if (fptr == NULL) {
303
    printf("Can't find %s\n", argv[1]);
304
    exit(-1);
305
  }
306
307
  for (i = 0; i &lt; V; i++) {
308
    table[i] = 0;
309
  }
310
311
  for (i = 0; i &lt; Q; i++) {
312
    b = fgetc(fptr);
313
    table[b] = i;
314
  }
315
316
  printf("Init done\n");
317
318
  printf("Expected value for L=8 is 7.1836656\n");
319
320
  run = 1;
321
322
  while (run) {
323
    sum = 0.0;
324
    iproduct = 1;
325
326
    if (run)
327
      for (i = Q; run && i &lt; Q + K; i++) {
328
        j = i;
329
        b = fgetc(fptr);
330
331
        if (b &lt; 0)
332
          run = 0;
333
334
        if (run) {
335
          if (table[b] &gt; j)
336
            j += K;
337
338
          sum += log((double)(j-table[b]));
339
340
          table[b] = i;
341
        }
342
      }
343
344
    if (!run)
345
      printf("Premature end of file; read %d blocks.\n", i - Q);
346
347
    sum = (sum/((double)(i - Q))) /  log(2.0);
348
    printf("%4.4f ", sum);
349
350
    for (i = 0; i &lt; (int)(sum*8.0 + 0.50); i++)
351
      printf("-");
352
353
    printf("\n");
354
355
    /* refill initial table */
356
    if (0) {
357
      for (i = 0; i &lt; Q; i++) {
358
        b = fgetc(fptr);
359
        if (b &lt; 0) {
360
          run = 0;
361
        } else {
362
          table[b] = i;
363
        }
364
      }
365
    }
366
  }
367
}</programlisting>
368
  </sect1>
369
</article>

Return to bug 38700