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

# SKS

## criptografía de bolsillo

### Reconocimientos

SKS se debe en su mayor parte a trabajo previo de otras personas. En esta sección deseo reconocer principalmente el trabajo de programación, ya que el "trabajo intelectual" subyacente a todas las ideas que aquí se usan es tan extenso, que no bastarían estos pocos Kb. para ponerlo de manifiesto.

Todo el código que se usado tiene licencia GPL o bien garantía de libertad para su uso y está disponible en los enlaces que se proporcionan. Gracias a todos por su "involuntaria" colaboración en SKS.

### Pegwit

Ya se ha mencionado que la inspiración de SKS proviene de pegwit, un programa realizado por George Barwood. He conservado la parte de codificación con armadura en base 64, que se debe a Mr. Tines. El propio Barwood escribió una pequeña guía sobre curvas elípticas que he incluído en esta documentación (inglés).

No hay actualmente páginas activas sobre pegwit porque, como se dice en la introducción, presentaba serias debilidades en la implementación de la CGCE. La única referencia es un grupo de discusión que pretende rescatarlo del olvido, pero no es muy activo:

- http://groups.yahoo.com/group/pegwit/

### Rijndael

Los autores de Rijndael son dos programadores flamencos, Joan Daemen y Vincent Rijmen.

El código fuente está tomado de `LibTomCrypt`, una librería criptográfica de Tom St. Denis. El código ha sido modificado levemente para construir las tablas de sustitución sobre la marcha; para ello me he valido de la implementación de Rijndael de Christophe Devine.

### TIGER

TIGER es un algoritmo de generación de resuménes (hash) de Ross Anderson y Eli Biham. En las páginas señaladas se puede encontrar la implementación de referencia y otro material de interés.

También he usado el módulo `tiger.c` de la librería mencionada `LibTomCrypt`, que he modificado para construir la tabla de sustitución sobre la marcha, tomando como guía la implementación de referencia del algoritmo.

### Curva elíptica

Para encontrar la curva apropiada y sus parámetros, me he servido del programa `schoof2`, de Mike Scott, así como de `ppsearch`, de Scott Duplichan.

### Librería numérica de alta precisión

Para los cálculos con números grandes se ha empleado la librería externa `LibTomMath`, de Tom St Denis. También se usa esta librería en las operaciones polinómicas más sencillas.

Desde la versión 0.93, SKS utiliza la libería `TomFastMath` (tfm). Es una mejora del autor de la anterior librería que busca mayor rapidez (no hay 'mallocs', hay operaciones en ensamblador para determinadas arquitecturas...) pero, sobre todo, aprovecha toda la longitud del registro (32 o 64 bits) como cifras binarias efectivas.

### Compresión

SKS usa la librería `zlib` de Jean-loup Gailly y Mark Adler.