Keywords: criptografía, curva elíptica, clave pública, PGP, GPG

# SKS, criptografía de bolsillo

#### Versión actual: 0.93

- Introducción
- Instalación
- Manual

- Resumen
- Cifrado
- Descifrado
- Firma
- Función resumen
- Modo de filtro
- Gestión de claves

- Diseño
- Licencia
- Reconocimientos
- Descargas Downloads
- Miscelánea

# Modo de filtro

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 (`stdin`) y el resultado se emite por la salida estándar. Si la operación solicitada es el cifrado, entonces el resultado se codifica en `base64` para transformarlo en cadenas texto que se pueden imprimir o editar.

También se pueden filtrar archivos binarios (opción `-b`), pero en este caso no se aplica codificación `base64`.

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 (scripts) de más alto nivel, donde las contraseñas se deben introducir mediante formularios con eco de estrella apropiados o similares.

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.

Mediante la orden `sks -f` o `sks -b` obtenemos un breve resumen del manual del modo de filtro:

    Modo de uso [filtrado]:
     cifrado convencional
       -fc "contraseña" <claro >cifrado-ascii
       -fC       (compresión previa de datos)
     cifrado de clave pública
       -fe [id 1]  [id 2] ... [id n]*  <claro >cifrado-ascii
       -fE       (compresión previa de datos)
     descifrar (todos casos)
       -fd "contraseña" <cifrado-ascii >claro
     firmar/verificar
       -fS "contraseña" <texto >texto-firmado
       -fV <texto-firmado >texto
    [filtrado binario]:
     cifrado convencional
       -bc "contraseña" <claro >cifrado
       -bC       (compresión previa de datos)
     cifrado de clave pública
       -be [id 1]  [id 2] ... [id n]*  <claro >cifrado
       -bE       (compresión previa de datos)
     descifrar (todos casos)
       -bd "contraseña" <cifrado >claro
     (*) Será seleccionada toda clave que contenga cualquier identificador
         La ausencia de identificador selecciona todas las claves

La segunda letra tras la `f` 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 `Torrente`:

        ...(flujo de texto).. | sks -fE Torrente

Un ejemplo más concreto usando la línea de comandos de Linux-Unix:

        cat mensaje.txt | sks -fE Torrente > cifrado.txt

donde en lugar de `cifrado.txt` se puede "enchufar" (pipe) otro programa, por ejemplo, de correo eléctrónico:

        cat mensaje.txt | sks -fE Torrente           \\
        | mail jltorrente@caspa.net -s "Lee esto"

El receptor usa la orden `-fd` para descifrarlo:

        cat cifrado.txt | sks -fd amiguete

Si la contraseña está formada por palabras separadas por espacios, se pueden usar comillas:

        cat cifrado.txt | sks -fd "hola mundo"

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 `###`. La salida contiene sólo el texto descifrado; cualquier texto fuera de la armadura no se considera.

Para firmar se procede con `-fS` 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 `Hola Mundo` firma un mensaje que envía al usuario `Torrente`:

        cat mensaje.txt | sks -fS "hola mundo"        \\
        | mail jltorrente@caspa.net -s "Lee esto"

y el receptor lo verifica mediante:

        cat mensaje.txt | sks -fV

y obiene el mensaje "limpio" a la salida, más una confirmación por la salida de error (`stderr`).

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:

        cat mensaje.txt | sks -fS "hola mundo"          \\
        | sks -fE Torrente hola > mensaje.sks

que el receptor puede verificar mediante:

        cat mensaje.sks | sks -fd amiguete | sks -fV > mensaje.txt