This file is indexed.

/usr/share/doc/sks-ecc-doc/usersguide-es/manual.html is in sks-ecc-doc 0.93-6build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="keywords" content="criptografía, curva elíptica, clave pública,
PGP, GPG" />
	<link rel="stylesheet" type="text/css" href="andreas07.css" />
<!--[if IE 6]>
<link rel="stylesheet" href="fix.css" type="text/css" />
<![endif]-->
	<title>SKS, criptografía de bolsillo</title>
</head>

<body>


<div id="sidebar">
<h1>SKS</h1>
<h2>Versión actual: 0.93</h2>
<div id="menu">
<a href="index.html">Introducción</a>
<a href="instal.html">Instalación</a>
<a class="active" href="manual.html">Manual I</a>
	<a class="submenu" href="#resumen">Resumen</a>
	<a class="submenu" href="#cifrado">Cifrado</a>
	<a class="submenu" href="#descifrado">Descifrado</a>
	<a class="submenu" href="#firma">Firma</a>
	<a class="submenu" href="#fresumen">Función resumen</a>
	<a class="submenu" href="#filtro">Modo de filtro</a>
<a href="clave.html">Manual II - Claves</a>
<a href="dis.html">Diseño</a>
<a href="gpl.html">Licencia</a>
<a href="recon.html">Reconocimientos</a>
<a href="download.html">Descargas <em>Downloads</em></a>
<a href="misc.html">Miscelánea</a>
</div>
<h3>&copy; diseño</h3>
<p>Estilo basado en plantilla diseñada por <a href="http://andreasviklund.com">Andreas Viklund</a>.</p>
</div>

<div id="content">
<!-- start of content space -->
<h1 id="komenco">SKS</h1>
<h2>criptografía de bolsillo</h2>

<h3 id="resumen">Resumen</h3>
<p>
Al ejecutar SKS sin parámetros aparece un breve resumen del
manual:
<pre>
Modo de uso:
 cifrado convencional
   -c claro cifrado  &lt; contrase&ntilde;a
   -C     (compresi&oacute;n previa de datos)
 cifrado de clave p&uacute;blica
   -e claro cifrado [id 1]  [id 2] ... [id n]*
   -E     (compresi&oacute;n previa de datos)
 descifrar (todos los casos)
   -d cifrado claro &lt; contrase&ntilde;a
 firmar/verificar/resumir
   -s claro firma &lt; contrase&ntilde;a
   -S texto &lt; contrase&ntilde;a &gt; texto-firmado
   -v claro firma
   -V texto-firmado &gt;texto
   -r fichero1 fichero2 ... fichero-n &gt; resumen hexadecimal (TIGER)
 -f[operaci&oacute;n] [introduce SKS -f para m&aacute;s detalles]
 -b[operaci&oacute;n] [introduce SKS -b para m&aacute;s detalles]
 -k[operaci&oacute;n] [introduce SKS -k para m&aacute;s detalles]
 (*) Ser&aacute; seleccionada toda clave que contenga cualquier identificador
     La ausencia de identificador selecciona todas las claves
</pre>
Este resumen aparece también cuando se suministra un número incorrecto
de parámetros o si el primer parámetro es incorrecto. Nótese que
algunas órdenes admiten un número indefinido de parámetros y que 
<kbd>-S, -V </kbd>son distintos a <kbd>-s, -v</kbd>.
</p>
<p>Los caracteres [&nbsp;<kbd>&lt;</kbd>&nbsp;] y 
[&nbsp;<kbd>&gt;</kbd>&nbsp;] indican que SKS require datos de la 
entrada estándar <kbd>(stdin)</kbd> y devuelve datos
por la salida estándar <kbd>(stdout)</kbd>. Además, hay diversos mensajes,
tanto de error como de advertencia o información, que se ofrecen por la
salida de error <kbd>(stderr)</kbd>; estos mensajes están disponibles en
español e inglés, según la versión que descargues.
</p>
<!--
<div class="postinfo"><a href="#komenco" title="arriba">▲</a></div>
-->
<h3 id="cifrado">Cifrado</h3>
<p>Para cifrar un fichero hace falta una(s) clave(s) pública(s). En general
no será tu propia clave pública, sino la de aquellos a los que
se destina el fichero. Si tu clave pública está en tu anillo (que es lo
más normal) puedes elegirla también para que puedas ver en el futuro el
contenido del fichero, si es que planeas eliminar el original.</p>

<p>Las claves públicas de tus corresponsales te las han de enviar ellos y
está en tu mano comprobar que realmente provienen de quien dice. En el apartado 
<a href="clave.html">Gestión de Claves</a> hay más información al respecto. El fichero de
claves que se suministra contiene las siguientes claves:
<pre>
 [6be386a4]: Hola Mundo /hola mundo/
 [40023a50]: Hello World /hello world/
 [5425be1c]: Jose Luis Torrente &lt;jltorrente@caspa.net&gt; /amiguete/
 [00e14ca8]: Manuel Pancorbo Castro &lt;mpancorbo # wanadoo.es&gt;
</pre>
</p>

<p>Para cifrar el fichero <kbd>mensaje.txt</kbd> simplemente teclea:
<pre>
    sks -e mensaje.txt mensaje.txt.e torrente
</pre>
donde <kbd>mensaje.txt.e</kbd> es el fichero cifrado que creará el programa.</p>

<blockquote>
<b>OJO</b>, si ya existiera un fichero con ese nombre, SKS
lo sobreescribirá sin advertencia previa. El original <b>NO</b> 
se borra automáticamente.
</blockquote>

<p><b>torrente</b> es un 
identificador que coincide, en este caso,
sólo con una clave. Como identificador vale cualquier cadena de texto,
que se compara con las etiquetas que identifican cada clave, así como con el 
identificador numérico de éstas.
<pre>
    sks -e mensaje.txt mensaje.txt.e 5425be1c
</pre>
también selecciona la misma clave.
</p>

<p>Se pueden usar todos los identificadores que se consideren oportunos 
y las claves que se seleccionan para cifrar son aquellas cuyas
etiquetas y/o ids. numéricos <em>contengan</em> alguna de las cadenas 
introducidas. La comparación es sensible a las mayúsculas.
<pre>
    sks -e mensaje.txt mensaje.txt.e caspa
    sks -e mensaje.txt mensaje.txt.e @
    sks -e mensaje.txt mensaje.txt.e 5425
    sks -e mensaje.txt mensaje.txt.e "Jose Luis"
</pre>
seleccionan la misma clave;
<pre>
    sks -e mensaje.txt mensaje.txt.e s
</pre>
selecciona la clave anterior y también la clave <kbd>00e14ca8</kbd>. Sin embargo,
<pre>
    sks -e mensaje.txt mensaje.txt.e sr
</pre>
no selecciona ninguna (el programa no hace nada y emite un mensaje
de advertencia) porque la cadena "sr" no existe en ninguna etiqueta.
<pre>
    sks -e mensaje.txt mensaje.txt.e Hola Hello
</pre>
Selecciona las claves <kbd>6be386a4</kbd> y <kbd>40023a50</kbd>.
</p>
<p>Si no se introduce ninguna cadena, el programa selecciona todas las claves
del anillo.</p>
<p>Una vez que pulsas 'Intro' (como en el último ejemplo) el programa
emite un mensaje:
<pre>
SKS. Claves seleccionadas:
 [6be386a4]: Hola Mundo /hola mundo/
 [40023a50]: Hello World /hello world/
</pre>
y en el directorio aparece el fichero <kbd>mensaje.txt.e</kbd>
</p>

<h4>Compresión</h4>

<p>Si en lugar de la opción <kbd>-e</kbd> seleccionamos la opción <kbd>-E</kbd>
el programa se comporta exactamente igual, salvo que comprime primero los datos.
<pre>
    sks -E mensaje.txt mensaje.txt.e torrente
</pre>
La opción de compresión es interesante para archivos de texto, de procesadores
de texto y cualquiera que no esté comprimido por si mismo. Los ficheros <kbd>jpg</kbd>,
<kbd>zip</kbd>, y cualesquiera otros formatos comprimidos se cifran mejor con la
opción <kbd>-e</kbd>, que ahorra tiempo de proceso.</p>

<h4>Cifrado convencional</h4>

<p>Las opciones <kbd>-c</kbd> y <kbd>-C</kbd> cifran el fichero de forma convencional,
con una clave generada a partir de una contraseña; por seguridad, <b>contraseñas iguales
generan claves distintas</b> según si elegimos cifrado convencional o si generamos
claves privadas. La opción en mayúsculas comprime, igual que con el cifrado de clave 
pública. El programa sólo necesita dos parámetros:
el fichero de entrada y el de salida; la contraseña se pide por línea de comandos, sin
eco de salida, para garantizar máxima privacidad.
</p>
<div class="postinfo"><a href="#komenco" title="arriba"></a></div>
<h3 id="descifrado">Descifrado</h3>
<p>Para descifrar un mensaje &#151;no importa de qué manera se haya cifrado, 
convencionalmente o con clave pública, con o sin compresión&#151; se usa la 
opción <kbd>-d</kbd>:
<pre>
    sks -d mensaje.txt.e mensaje.txt
</pre>
donde <kbd>mensaje.txt.e</kbd> es el fichero cifrado y <kbd>mensaje.txt</kbd> el
fichero que creará el programa ya descifrado (la misma advertencia acerca del 
peligro de sobreescribir un fichero ya existente). Se pide una contraseña por
línea de comandos que corresponde bien a alguna clave pública con la que se halla
cifrado el original (opciones <kbd>-e</kbd> y <kbd>-E</kbd>), bien a la contraseña
usada en el cifrado convencional (opciones <kbd>-c</kbd> y <kbd>-C</kbd>).</p>

<p>Si se usó cifrado de clave pública, se muestran los identificadores que se
encuentren en la cabecera del fichero. Sólo identificadores, sin la etiqueta,
porque el programa asume que NO todas las claves que se usaron para cifrar
están en el anillo de claves del receptor (¡puede que ninguna, si se trata
de un espía!) y por tanto elude comparar las claves que encuentra con las que 
hay en el anillo, que es donde residen las etiquetas.</p>
<p>Si la contraseña introducida corresponde a alguna de las claves públicas 
presentes, entonces su identificador aparece señalado:
<pre>
    [6be386a4]: *
    [40023a50]: 
    [5425be1c]: 
    [00e14ca8]: 
</pre>
Si se ha usado cifrado convencional y la contraseña es correcta, no se emite
mensaje alguno. Si la contraseña es incorrecta entonces se da una alarma de
fallo de autentificación, pero se crea el nuevo fichero lleno de, previsiblemente,
basura.</p>
<div class="postinfo"><a href="#komenco" title="arriba"></a></div>
<h3 id="firma">Firma</h3>
<p>
Para firmar un fichero se usa la clave privada. Se genera un trozo de código que
identifica unívocamente al creador de la clave, al contenido del archivo (por medio
de una función resumen o <em>hash</em>) y a la fecha en que fue generada la firma, 
la cual también figura en la cabecera del trozo de código (que llamaremos "firma").
Cualquier intento por parte de un interventor &#151;malicioso o accidental&#151; de 
cambiar alguno de estos tres elementos impide verificar correctamente la firma. Esto
permite identificarte como emisor del fichero y dificulta la suplantación en el 
anónimo mundo digital.
</p>
<p>Se procede así:
<pre>
    sks -s mensaje.txt mensaje.sig
</pre>
donde <kbd>mensaje.txt</kbd> es el fichero que se pretende firmar y <kbd>mensaje.sig</kbd>
el fichero que se creará con la firma (un par de líneas de armadura en base 64).
A continuación se introduce la contraseña y se comprueba si la clave publica
correspondiente se encuentra en el anillo, informando de ello al usuario pero
procediendo con la firma en cualquier caso. La información puede ser útil si el
firmante tiene su clave en el anillo, como comprobación que ha introducido la
contraseña correctamente.
</p>
<p>El receptor obtiene tanto el fichero original como el fichero de firma. Para verificar 
la firma hay que teclear:
<pre>
    sks -v mensaje.txt mensaje.sig
</pre>
El programa localiza por sí mismo la clave pública del firmante en el anillo de claves 
del receptor (si no estuviera, daría una advertencia) y procede a ejecutar el algoritmo
de verificación. Si todo está en orden, emite un mensaje como el siguiente:
<pre>
   [5425be1c]: Jose Luis Torrente &lt;jltorrente@caspa.net&gt; /amiguete/
  SKS. Firma correcta realizada en: 2004-06-24, 13:49 
</pre>
</p>

<h4>Firma incrustada</h4>

<p>Si se pretende firmar un mensaje de texto claro, es posible que queramos incrustar 
la firma al final del mismo, de forma que el receptor reciba un único fichero. 
Para eso hacemos:
<pre>
    sks -S mensaje.txt
</pre>
que nos preguntará la contraseña y emitirá el mensaje (con una cabecera de identificación) y
la firma incrustada al final, por la salida estándar. Para conservar el fichero no tenemos 
más que redirigir la salida:
<pre>
    sks -S mensaje.txt > mensaje.txt.signed
</pre>
que el receptor confirma mediante la orden <kbd>-V</kbd>:
<pre>
    sks -V mensaje.txt.signed
</pre>
El mensaje original, sin la cabecera y sin los códigos de firma, sale por la salida
estándar, que podemos redirigir, mientras que el mensaje de verificación se emite
por la salida de error. Si sólo nos interesa la verificación, podemos redirigir la
salida hacia la papelera o, en Linux-Unix, hacia <kbd>/dev/null</kbd>:
<pre>
    sks -V mensaje.txt.signed > /dev/null
</pre>
La firma con <kbd>-S</kbd> está pensada para ficheros de texto, de forma que los códigos de
fin de línea son excluídos del cálculo de la función resumen. Esto se hace para garantizar
que las firmas realizadas en un determinado entorno operativo sean verificables en otro, por
la falta de uniformidad que existe en códigos de fin de línea.
</p>
<div class="postinfo"><a href="#komenco" title="arriba"></a></div>
<h3 id="fresumen">Función resumen</h3>
<p>
SKS proporciona un comando para obtener un resumen (<em>hash</em>) de 192 bits
(<a href="http://www.cs.technion.ac.il/~biham/Reports/Tiger/" target="_blank">
algoritmo <em>TIGER</em></a>), de una manera muy similar a cómo la aplicación
<kbd>md5sum</kbd> genera resúmenes de 128 bits mediante el algoritmo <em>MD5</em>.
Esto se hace mediante la orden
<kbd>-r</kbd>:
<pre>
    sks -r mensaje.txt
</pre>
que da como resultado algo similar a:
<pre>
    b98ef1b942071187176585271b4008722ebb96d550b1279d  mensaje.txt
</pre>
Se pueden especificar varios ficheros o usar comodines:
<pre>
    sks -r *.txt
	
    b98ef1b942071187176585271b4008722ebb96d550b1279d  mensaje.txt
    a7ea8f6641da42ef35cf6b359ea790a25de29a65978977b5  test.txt
</pre>
que es equivalente a
<pre>
    sks -r mensaje.txt test.txt
</pre>
</p>
<p>Los creadores de <em>TIGER</em> desarrollaron una segunda versión
del algoritmo, que afecta sólo en la forma de rellenar el último segmento parcial 
de texto antes de obtener el resumen final. SKS usa la primera versión, por lo que
los resúmenes obtenidos para un mismo ficher pueden diferir de otra aplicación que
use <em>TIGER-2</em>.</p>

<div class="postinfo"><a href="#komenco" title="arriba"></a></div>

<h3 id="filtro">Modo de filtro</h3>

<p>SKS se puede utilizar como un filtro dentro de una cadena de proceso
de archivos de texto. En este caso, el texto que va a ser procesado
entra siempre por la entrada estándar (<kbd>stdin</kbd>) y el resultado
se emite por la salida estándar. Si la operación solicitada es el
cifrado, entonces el resultado se codifica en <kbd>base64</kbd> para
transformarlo en cadenas texto que se pueden imprimir o editar.
</p>
<p>También se pueden filtrar archivos binarios (opción <kbd>-b</kbd>), 
pero en este caso no se aplica codificación <kbd>base64</kbd>.
</p>
<p>En este modo de funcionamiento los identificadores y 
contraseñas se introducen como parámetros del programa. Esto hace
"visible" la contraseña si se usa directamente la línea de comandos 
para hacer uso de este modo. En realidad, el modo de filtro está 
pensado para usarlo dentro de guiones de comandos (<em>scripts</em>) de
más alto nivel, donde las contraseñas se deben introducir mediante
formularios con eco de estrella apropiados o similares.
</p>
<p>Sin embargo, los ejemplos que se proporcionan aquí están escritos
directamente en línea de comandos para mostrar con más claridad el
funcionamiento. También se asumirá que se pretende filtro de texto 
(ASCII); el filtro binario es mucho más sencillo de entender a partir
del filtro de texto.</p>
<p>Mediante la orden <kbd>sks -f</kbd> o <kbd>sks -b</kbd>
obtenemos un breve resumen del manual del modo de filtro:
<pre>
Modo de uso [filtrado]:
 cifrado convencional
   -fc "contrase&ntilde;a" &lt;claro &gt;cifrado-ascii
   -fC       (compresi&oacute;n previa de datos)
 cifrado de clave p&uacute;blica
   -fe [id 1]  [id 2] ... [id n]*  &lt;claro &gt;cifrado-ascii
   -fE       (compresi&oacute;n previa de datos)
 descifrar (todos casos)
   -fd "contrase&ntilde;a" &lt;cifrado-ascii &gt;claro
 firmar/verificar
   -fS "contrase&ntilde;a" &lt;texto &gt;texto-firmado
   -fV &lt;texto-firmado &gt;texto
[filtrado binario]:
 cifrado convencional
   -bc "contrase&ntilde;a" &lt;claro &gt;cifrado
   -bC       (compresi&oacute;n previa de datos)
 cifrado de clave p&uacute;blica
   -be [id 1]  [id 2] ... [id n]*  &lt;claro &gt;cifrado
   -bE       (compresi&oacute;n previa de datos)
 descifrar (todos casos)
   -bd "contrase&ntilde;a" &lt;cifrado &gt;claro
 (*) Ser&aacute; seleccionada toda clave que contenga cualquier identificador
     La ausencia de identificador selecciona todas las claves
</pre>
</p>
La segunda letra tras la <kbd>f</kbd> elige la función del programa que actúa de forma muy similar a la orden en modo de no filtrado.
Por ejemplo, para cifrar un flujo de texto con destino al usuario
<kbd>Torrente</kbd>:
<pre>
    ...(flujo de texto).. | sks -fE Torrente 
</pre>
Un ejemplo más concreto usando la línea de comandos de Linux-Unix:
<pre>
    cat mensaje.txt | sks -fE Torrente > cifrado.txt
</pre>
donde en lugar de <kbd>cifrado.txt</kbd> se puede "enchufar" (pipe) otro programa,
por ejemplo, de correo eléctrónico:
<pre>
    cat mensaje.txt | sks -fE Torrente           \\
    | mail jltorrente@caspa.net -s "Lee esto"
</pre>
El receptor usa la orden <kbd>-fd</kbd> para descifrarlo:
<pre>
    cat cifrado.txt | sks -fd amiguete 
</pre>
Si la contraseña está formada por palabras separadas por espacios, se
pueden usar comillas:
<pre>
    cat cifrado.txt | sks -fd "hola mundo"
</pre>
Si el flujo de entrada contiene varios bloques de texto cifrado, el programa
intentará descifrar todos con la clave propuesta. Los bloques se identifican
con indicadores de comienzo y fin de armadura que incluyen los símbolos
<kbd>###</kbd>. La salida contiene sólo el texto descifrado; cualquier texto
fuera de la armadura no se considera.</p>
<p>
Para firmar se procede con <kbd>-fS</kbd> y el resultado es la 
entrada que se proporciona, junto con la cabecera de identificación, y
con el código de firma incrustado al final. Por ejemplo, el usuario 
<kbd>Hola Mundo</kbd> firma un mensaje que envía al usuario 
<kbd>Torrente</kbd>: 
<pre>
    cat mensaje.txt | sks -fS "hola mundo"        \\
    | mail jltorrente@caspa.net -s "Lee esto"
</pre>
y el receptor lo verifica mediante:
<pre>
    cat mensaje.txt | sks -fV 
</pre>
y obiene el mensaje "limpio" a la salida, más una confirmación por la
salida de error (<kbd>stderr</kbd>).
</p>
<p>Por su filosofía minimalista, el programa no contempla una orden para 
firmar y cifrar. Se puede invocar al programa dos veces y "enchufar" las
salidas:
<pre>
    cat mensaje.txt | sks -fS "hola mundo"          \\
    | sks -fE Torrente hola > mensaje.sks
</pre>
que el receptor puede verificar mediante:
<pre>
    cat mensaje.sks | sks -fd amiguete | sks -fV > mensaje.txt
</pre>
<div class="postinfo"><a href="#komenco" title="arriba"></a></div>
</div>
</body>
</html>