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

# SKS

## criptografía de bolsillo

### Novedades

[Noviembre 2007] Versión 0.93. Se ha cambiado la librería matemática 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. También se ha mejorado el multiplicador GF(2) con técnicas ligadas al método de Karatsuba.

[Mayo 2007] Nueva versión 0.92c. Corregido un error que impedía el correcto funcionamiento en arquitecturas de 64 bits. Los fuentes ya han sido corregidos en la sección de descargas.

[Junio 2006] El programa ha sido "debianizado" bajo el nombre sks-ecc. Gracias a Nacho Barrientos por su interés y su iniciativa.

[Junio 2006] La nueva versión 0.92b corrige un fallo en el cifrado de ficheros muy pequeños. Se puede descargar aquí el parche para la versión 0.92 (sólo fuentes).

[Mayo 2006] Para los usuarios de linux, está disponible un interfaz gráfico (un frontend) que realiza sencillas operaciones de cifrado de textos. Disponible en la sección de descargas y también en miscelanea, donde se da más amplia información.

### Introducción

SKS es una herramienta de cifrado/autentificación de clave pública mediante línea de comandos, basada en la llamada criptografía de Grupo de Curva Elíptica (CGCE). Su diseño minimalista está orientado a la criptografía de bolsillo, esto es, una herramienta muy sencilla de usar, transportar (el ejecutable ocupa aprox. 100 Kb), multiplataforma (Linux-Unix y diversos Windows, por el momento), extremadamente rápida, libre de patentes y distribuída bajo licencia GPL. Todo ello sin comprometer un ápice la seguridad y ofreciendo por tanto una calidad de cifrado apta para los más exigentes.

Sus elementos criptográficos son:

- Módulo de clave pública: curva elíptica sobre GF (2191)
- Módulo de clave simétrica: AES con clave de 192 bits en modo CTR
- Función resumen, para firmas y contraseñas: TIGER (192 bits)
- Módulo pseudoaleatorio: `/dev/urandom` en Linux-Unix y `CryptGenRandom` en Windows

Está basada —tanto en filosofía como en parte del código— en una aplicación llamada pegwit, que nació a finales de los 90 como contrapartida a un cada vez más super-sofisticado PGP, lleno de funcionalidades superfluas y con un tamaño cada vez más creciente y aparatoso que hacía difícil la evaluación del código subyacente. Pegwit usaba una curva de campo compuesto (no primo) que se ha mostrado débil tras los estudios de Gaudry, Hess y Smart acerca de este tipo de curvas. La curva de SKS es de campo primo y reúne todas las exigencias de seguridad de CGCE (orden primo, condición MOV, etc). Todo esto se discute en el diseño de SKS.

Incluso con el desarrollo y popularización de GPG, una herramienta como SKS tiene su razón de ser: la CGCE proporciona claves y firmas más compactas que RSA o DH, para un mismo nivel de seguridad (la curva de SKS es igual de fuerte que una clave RSA de 1024 bits) y además es mucho más rápida: en aritmética de alta precisión, tanto en GF (2m) como en GF (p), las operaciones aritméticas normales "cuestan" del orden de m2, mientras que las complejas (como la exponenciación modular) pueden tener un orden de m3 por tanto, en principio, SKS opera entre 30 y 150 veces más rápido que GPG con claves RSA de 1024 bits.

Además, GPG sigue siendo un programa muy sofisticado y pesado. SKS cabe en un diskete, no necesita instalación previa, no conserva claves privadas y su uso es inmediato.