Вы находитесь на странице: 1из 84

LA SEGURIDAD INFORMTICA JUNIO / 2005

Este recopilatorio ha sido realizado por Strapping. Consiste en una recopilacin muy ligramente modificada de los manuales
Conferencias de Seguridad Informtica (zH Party 04) [conf_zh04.pdf], Criptosistemas Informticos [Criptosis.pdf] e Introduccin a
la Esteganografa [Estega.pdf]. Los cuales fueron originalmente creados por Death Master (http://www.death-master.tk/) y son aqu
reproducidos con su consentimiento y respetando las correspondientes licencias.

INDICE DE TODO EL LIBRO: [es aconsejable leer el formato impreso para no castigar demasiado la vista]
1 - Introduccin Y Seguridad En La Mquina Local....3
Introduccin: La importancia de la seguridad..3
Conceptos previos..3
Sistemas Operativos.....3
Proceso, Servicio, Dominio....4
Breve introduccin a redes y protocolos....5
Algunos fallos tpicos de seguridad en la mquina local....8
Usuarios, contraseas, y archivos de contraseas...9
Fallos tpicos en Sistemas Operativos...11
Breve introduccin a la seguridad en redes locales.....13
2 - Seguridad En Internet....16
Introduccin: Panorama actual de internet.....16
Antivirus.......16
Introduccin a los virus: tipos y precauciones.........16
Uso de Antivirus: Cmo usarlos y como actuar ante un virus...18
Virus e Integridad en la mquina local......19
Firewalls e IDS........20
Conceptos bsicos sobre Firewalls e IDS....20
Como configurar un Firewall...21
Alertas y Logs........22
Ataques e integridad en la mquina local........24
Seguridad en redes de pares (P2P)....25
3 - Seguridad en las Comunicaciones.........27
Introduccin: La privacidad, bien escaso....27
SpyWare: Qu es y Cmo Evitarlo..27
Privacidad en Internet....29
Uso de proxys annimos..29
Protocolos seguros y certificados de seguridad...31
Criptografia y Autentificacin de ficheros: MD5.35
Criptografa Asimtrica: El Sistema PGP...36
Introduccin a la clave asimtrica: sistema PGP/gnuPG...36
Los algoritmos: RSA y DH/DSS..37
Encriptacin de ficheros, correo electrnico y comunicaciones....39
4 - Introduccin a la Criptografa......41
Conceptos Bsicos.....41
Criptologa......41
Texto en Claro y Criptogramas.......42
Flujo de Informacin.........42
Criptosistemas....42
Algoritmo Criptogrfico.....43
Clave Criptogrfica...43
Longitud de clave..43
Strapping (Junio/2005) Pgina 1 de 84 Seguridad Informtica

Algoritmos Simtricos....44
DES.....44
Triple-DES.....44
AES (Rijndael) ......45
IDEA.....45
RC6.....46
TWOFISH...46
MARS.......46
CAST-256...47
Algoritmos HASH....47
MD5.....47
SHA-1.....48
RIPEMD-160.........48
Algoritmos Asimtricos.........48
RSA............49
DH/DSS......51
RW..........52
Otros Sistemas.............52
El Sistema PGP......53
Anillo de Claves.....55
Generar un par de Claves.......55
Cambiar el Passphrase...........56
Consultar el Fingerpring..........57
Importar una clave........57
Exportar una clave pblica......57
Exportar una clave privada......58
Exportar una clave pblica al servidor de claves........58
Buscar una clave en el Servidor de Claves..59
Importar una clave del Servidor de Claves.......59
Firmar una Clave Pblica (Firma Exportable) .........59
Firmar una clave pblica (Firma No Exportable) ...........61
Establecer grado de confianza del usuario.........61
Borrar Una Clave.............61
Encriptacin Con el Sistema openPGP........62
Desencriptacin Con el Sistema OpenPGP.........63
FirmaMIME/PGP con el sistema openPGP......64
Firma ASCII con el sistema openPGP..64
Verificacin de firmas con el sistema openPGP......65
Otras funciones del sistema openPGP.........65
Seguridad en el sistema PGP..66
Ataques a la algoritmia........66
Ataques al software criptogrfico.......66
Integridad del sistema.........67
Informacin Residual.......67
Medios no convencionales..........68
5 - Esteganografia....69
Introduccin.....................................................................................................................................................................................69
Historia de la esteganografa..........................................................................................................................................................69
Bases de la esteganografa............................................................................................................................................................73
Ficheros interpretados....................................................................................................................................................................74
Ficheros ejecutables.......................................................................................................................................................................78
Esteganografa avanzada...............................................................................................................................................................80
Esteganografa y criptografa..............................................................................................................81
Ataques a la esteganografa...........................................................................................................................................................81
Software esteganogrfico...............................................................................................................................................................82
Autopsia de un reto........................................................................................................................................................................83
Nota De Strapping & EOF.84
Strapping (Junio/2005) Pgina 2 de 84 Seguridad Informtica

1. INTRODUCCIN Y SEGURIDAD EN LA MQUINA LOCAL


-Introduccin: La importancia de la seguridad.
Hoy en da ya no cabe preguntarse si es necesaria la seguridad. Ms bien debemos preguntarnos -cada cual en su caso- porqu es
necesaria la seguridad.
El concepto de ordenador individual casi ha desaparecido. Internet est llegando cada vez ms a todos los rincones de nuestra
vida, desde el ordenador al telfono mvil e incluso la televisin. Es una ventana al mundo, el concepto de aldea global ha pasado de
una utopa a algo muy real. Pero no olvidemos que las ventanas tienen dos lados, y que bien se puede mirar la calle desde la apacible
tranquilidad de tu casa... pero tambin se ve tu casa desde la calle. La gente pone cortinas, usa ventanas ahumadas... por qu?
Porque a nadie le gusta que le invadan su intimidad.
Creo que es un buen smil para poder extraer una idea intuitiva de la importancia de la seguridad. El crecimiento de las conexiones
hace que la necesidad de seguridad sea imperiosa, urgida por la informacin que se transmite a travs de estas conexiones. Ya no slo
leemos el correo electrnico o visitamos determinados sitios Web. Hoy da compramos por Internet, consultamos los movimientos
bancarios a travs de Internet, trabajamos a travs de Internet... en definitiva, la cantidad de datos sensibles que atraviesan nuestras
lneas telefnicas ha crecido y lo seguir haciendo da a da. Y eso ya no es preocupacin de empresas o de gurs de la informtica,
sino una preocupacin muy real de cualquier usuario de a pie.
Internet es libre, y se ha convertido en el medio de comunicacin ms imparcial que puede existir, gracias a su concepcin
descentralizada. En la red de redes podemos encontrar las mejores fuentes de informacin, as como los ms prfidos sitios con
contenidos de dudosa legalidad y moralidad. Esto, unido al ms temprano acceso de las nuevas generaciones a Internet cada da, crea
una nueva responsabilidad social, siendo imprescindible educar a los padres sobre unos mnimos conceptos de informtica, seguridad
e Internet para que puedan velar por la integridad de los ms jvenes. Soy el primero que repudia la censura y cree que la toda la
informacin debe estar ah y la esencia de la libertad reside en poder elegir, para bien o para mal, pero tambin que esa decisin debe
ir acompaada de una capacidad de decisin. Mientras tanto, es responsabilidad de los padres el educar a sus hijos tambin en el
mbito de Internet. Si no dejas que tus hijos hablen con desconocidos por la calle, por qu s en Internet?
As pues el fin de estas pequeas conferencias es el impartir unos conocimientos bsicos sobre informtica y seguridad, orientadas
a que cualquiera pueda comprender y utilizar los recursos que se nos brindan sin la necesidad de poseer unos conocimientos previos, y
fomentar quiz la curiosidad en vuestro interior para que esto no sea sino el principio.
Empecemos.
-Conceptos previos
Los conocimientos previos necesarios para comprender las conferencias, los voy a introducir yo. Es imprescindible que
conozcamos cmo funciona y se estructura a grandes rasgos una red o un sistema operativo, as como introducir algunos conceptos
que luego irn apareciendo y que debemos comprender. Hablaremos de puertos, de servicios, de protocolos...
No pretendo complicar con charlas tcnicas este paso previo que para la mayora ser el mayor escollo de los tres das, sino que
pretendo introducir ideas intuitivas para comprender qu es cada cosa y porqu. Que nadie se asuste. ;-)
Sistemas Operativos
Un ordenador est dividido principalmente en dos tipos de componentes: hardware y software, parte fsica y lgica respectivamente.
En algunos momentos la separacin no es tan clara, pues existen ciertos componentes que estn a caballo entre esos dos mundos. Es
el caso, por ejemplo, de la BIOS (Basic Imput-Output System), un software bsico para que el ordenador pueda arrancar, y que se
encuentra alojado en la CMOS (Complementary Metal Oxide Semiconductor).
As pues, tenemos unos componentes fsicos y unos componentes lgicos, y necesitamos que interacten entre ellos y puedan
comunicarse. Esta comunicacin se realiza mediante un tipo bsico y especial de software que se denomina Sistema Operativo, y que
permite disponer de un entorno de software que sea funcional bajo nuestro hardware. De forma intuitiva podramos decir que es el
encargado de que los programas se entiendan con el ordenador.
Sistemas operativos hay muchos. Los ms conocidos y usados hoy en da son Microsoft Windows, GNU/LiNUX, BSD, Unix,
MacOSx... pero principalmente hoy da podemos dividir el uso domstico de sistemas operativos en PC (mac es otra historia) entre
Windows y Unix-like (GNU/LiNUX y BSD se incluyen entre los sistemas Unix-like). Debido a la orientacin al usuario de a pie de esta
serie de conferencias, me centrar en ejemplificar y estudiar Windows y GNU/LiNUX. No voy a entrar en comparar ambos sistemas
operativos porque no es el fin de estas charlas. Cada sistema tiene partidarios y detractores, e igualmente los que me conocen saben
Strapping (Junio/2005) Pgina 3 de 84 Seguridad Informtica

de qu pie cojeo y que soy acrrimo defensor del sistema Linux. Pero a la hora de hablar de la seguridad, hablar exclusivamente de
seguridad en cada uno, no quiero entrar a valorar nada que luego me pierdo con mis cruzadas personales :-P
Dentro del sistema Windows, podemos distinguir entre dos tipos: los sistemas Windows 9x y los sistemas Windows NT. Hace unos
aos, los sistemas NT estaban orientados principalmente a estaciones de trabajo en red y empresas, relegando para el usuario
domstico los sistemas 9x, mucho menos seguros y mucho menos estables que los NT. En parte era un problema de compatibilidad
con determinados tipos de software, como por ejemplo el ldico. Hoy en da esa tendencia se est invirtiendo, con los sistemas
operativos Windows 2000 y Windows XP en sus distintas versiones, pues estn basados en tecnologa NT y se adaptan perfectamente
al mbito domstico. Cada da estn ms generalizados, y poca gente queda hoy da usando sistemas Windows 9x (que incluyen
Windows 95, Windows 98, Windows 98 SE y Windows ME).
Los nuevos sistemas NT, aunque realizan un consumo de memoria y recursos de sistema bastante mayor, son tambin ms
estables y seguros (principalmente en el mbito de mquina local) que los 9x. An as, muchos de los fallos de seguridad y
caractersticas son heredadas y han surgido algunos fallos nuevos derivados de la nueva tecnologa -sobre todo a nivel de red-, si bien
su kernel o ncleo del sistema es conceptualmente distinto.
En el caso de Linux, encontramos multitud de versiones, pues se trata de un sistema operativo libre.
GNU/LiNUX se compone principalmente de un kernel o ncleo llamado Linux, y un entorno de aplicaciones (GNU), entre ellos la
llamada shell o intrprete de comandos, que es la interfaz de comunicacin con el sistema.
Debido a su concepcin como software libre, cualquier componente es reemplazable, actualizable o modificable, lo que da lugar en
la prctica a infinidad de sistemas distintos, no ya tanto con el entorno de aplicaciones, variable en cualquier sistema operativo, sino en
cuanto al kernel y la shell del sistema. Esas versiones de Linux las denominamos distribuciones, y a su vez una misma distribucin
puede encontrarse en muchas versiones. Algunas de las principales distribuciones son Debian, Red Hat, SuSe, Mandrake, Gentoo,
Slackware, LinEx, Knoppix...
Existen otros sistemas Unix-like que hay que considerar debido a la extensin que tambin poseen y al crecimiento que estn
experimentando, que son los sistemas operativos BSD, entre ellos OpenBSD y FreeBSD (aunque existen otros sistemas BSD
propietarios). Se trata de sistemas similares a Linux, si bien ambos parten de una implementacin libre de BSD diferente y que ha
tenido un desarrollo paralelo en el tiempo. El entorno de aplicaciones de Linux y BSD hoy da es o puede ser el mismo, y la principal
diferencia radica en el kernel del sistema. En lo referente al estudio de seguridad de los sistemas al nivel que queremos hacerlo, es
indiferente hablar de uno o de otro, as que lo dicho para Linux ser aplicable a sistemas BSD y a cualquier Unix en general.
Ahora llega el momento de introducir algunos conceptos sobre Sistemas Operativos que sern necesarios ms adelante:
Denominamos proceso a un algoritmo interpretado o compilado que est ejecutndose en un sistema y se encuentra residente en la
memoria RAM. Cualquier programa en ejecucin se representa como un proceso, que puede ser auditado,
analizado, matado, etc.
Denominamos servicio a un tipo de proceso que est a la escucha, es decir, no est haciendo nada a no ser que sea requerido, en
cuyo caso atiende convenientemente la peticin. Un servicio suele cargarse de forma permanente en memoria hasta
que sea matado o el Sistema Operativo lo cierre. Un ejemplo de servicio sera un servidor FTP configurado para
escuchar un puerto determinado.
Denominamos daemon o demonio a un tipo especial de servicio que escucha a otros servicios o procesos. El demonio es un
programa que escucha a otro programa. Un ejemplo claro de esto sera INETD en sistemas Unix (el padre de
todos los demonios :-P), que se encarga de escuchar a los procesos o servicios que soliciten conexin de red, y
atiende esas peticiones. Un ejemplo de andar por casa de demonio sera el httpd de Apache.
Existe un tipo especial de software encargado de comunicar el entorno de aplicaciones con el kernel o ncleo del sistema. Este
software se denomina shell o interfaz de usuario. Aunque una shell puede ser tanto una lnea de comandos como una interfaz grfica,
hoy en da se usa el trmino shell prcticamente como sinnimo de intrprete de comandos. Y qu es un intrprete de comandos?
Para que sea ms sencillo de comprender, lo ilustrar de forma prctica: en Windows lo que conocemos por intrprete de comandos es
una ventana de MS-DOS (de hecho este MS-DOS era un intrprete de comandos) que podemos abrir ejecutando command.com en
sistemas Windows 9x o bien cmd.exe en sistemas Windows NT. En Linux el intrprete de comandos es la consola (si bien en Linux
podemos usar distintas shells).
As pues, podemos decir que una shell interpreta y ejecuta unas instrucciones que nosotros le hemos proporcionado por medio de
una lnea de comandos y sus instrucciones. Este concepto ser importante ms adelante cuando hablemos de sintaxis de ejecucin y
argumentos de diversos comandos y programas.

Strapping (Junio/2005) Pgina 4 de 84 Seguridad Informtica

Hay otros conceptos que harn falta ms adelante, pero que por sus peculiaridades y su complejidad tcnica, no ser necesario
conocer cmo funcionan. Algunos casos podran ser la pila de sistema, el buffer de memoria...
Aunque esto slo suponen unas pinceladas de lo que es un Sistema Operativo, creo que con esto es suficiente para introducir el
concepto, as como comprender sus funciones y estructura y conocer a grandes rasgos los diversos Sistemas Operativos existentes. En
definitiva, ser lo que necesitaremos comprender para poder seguir correctamente el resto de los temas, que son los que nos interesan.
Breve introduccin a redes y protocolos
La introduccin a los conceptos necesarios sobre redes y protocolos es sin duda ms compleja y larga, pues mi intencin es
introducir algunos conceptos complejos como pueden ser el modelo de red basado en capas ISO/OSI, as como introducir de una forma
general lo que es el estndar de comunicacin en las principales redes (Internet, LAN, WAN...): el conjunto de protocolos TCP/IP.
Existen otros tipos de protocolos como NetBIOS/NetBEUI, IPX/SPX, AppleTalk y el ms importante (despus de TCP/IP): redes
TokenRing. Esto sirva como muestra de que no todo es TCP/IP, aunque solamente el estudio en profundidad de este conjunto de
protocolos llevara meses e incluso aos. Comencemos.
Todos conocemos intuitivamente el concepto de red informtica: dos o ms ordenadores conectados y compartiendo una
informacin. A partir de aqu debemos preguntarnos cmo se comparte esa informacin. S, la informacin entre dos ordenadores se
comparte a travs de unos y ceros, pero debe ser organizada de alguna manera para que la estructura de datos de un fichero se
conserve y siga teniendo sentido despus de su transferencia. As es como nace el concepto de paquete. Un paquete de datos, como
su nombre indica, es un conjunto encapsulado de informacin, que no slo contiene los datos que nosotros queremos transmitir (o parte
de ellos, como ya veremos) sino tambin una informacin destinada a almacenar informacin sobre el propio paquete y que permite la
gestin de nuestros datos. Esa informacin extra son ms unos y ceros que indican, por ejemplo, el origen y el destino de un paquete, y
se conocen por el nombre genrico de cabecera de un paquete.
Para comprender el nacimiento de Internet, hay que comprender el nacimiento de su predecesora, ARPAnet. A finales de los aos
sesenta, la ARPA (Advanced Research Project Agency), una agencia de investigacin de Estados Unidos, quera desarrollar una red
estratgica de ordenadores importantes que no estuviera centralizada, la cual pudiese sobrevivir a un ataque fsico de cualquier tipo, se
produjera en la parte de la red que se produjera. No importaba que un ordenador fuera destruido, pues la red sobreviva. La primera
idea fue que los ordenadores no podan estar cerca fsicamente, y adems debera existir una comunicacin constante entre las partes
de la red, para permitir que los datos viajaran libremente y evitar una prdida de informacin en caso de la destruccin de un
componente.
En septiembre de 1969, se instal el primer intercambiador de paquetes en la Universidad de California en Los Angeles (UCLA).
Ese ordenador Honeywell 516, junto a otros que fueron aadindose constantemente, supusieron el nacimiento de ARPAnet. Durante
los aos setenta, ARPAnet creci a un ritmo vertiginoso, que ni los propios investigadores esperaban. Segn fue creciendo la red, se
fue tomando conciencia de la necesidad de un conjunto de protocolos que aseguraran el control del creciente volumen de paquetes y la
gran variedad de estos. El gran problema de ARPAnet era que su protocolo (entendiendo protocolo como conjunto de reglas) haca que
la etiqueta de cada paquete fuera ligeramente diferente segn el ordenador que la hubiese creado, provocando en muchas ocasiones la
imposibilidad de recibir o redirigir paquetes en el trfico, conforme la diversidad de la red se iba haciendo manifiesta. Este protocolo,
NCP (Network Control Protocol) no estaba previsto para trabajar en una red con configuraciones tan distintas como satlites,
computadoras o radios.
As pues, el 1 de Enero de 1983, NCP fue sustituido por el nuevo Protocolo de Control de Transporte / Protocolo de Internet, TCP/IP
(Transfer Control Protocol / Internet Protocol). El antiguo NCP necesitaba que los paquetes tuvieran un tamao y estructura
predefinidos, pero TCP/IP poda trabajar con paquetes de todos los tipos, tamaos y redes, e incluso paquetes de sistemas informticos
con cualquier otra red, independientemente de sus peculiaridades. De ahora en adelante denominaremos a cada uno de esos puntos
de la red como nodo o host. Con el nacimiento de TCP/IP, naci Internet como red , aunque el nacimiento de la Internet Web grfica
que la mayora conocen como Internet tuvo que esperar a 1989 para que fuera propuesta por Tim Berners-Lee, un fsico del CERN
(Laboratorio Europeo de Fsica de Partculas). Pero la semilla ya estaba plantada.
Para entender cmo est estructurado el protocolo TCP/IP, hay que introducir primero el modelo de red ISO/OSI. Este modelo fue
propuesto por la Organizacin de Estndares Internacionales, un conjunto multinacional de matemticos, fsicos e ingenieros que
incluye organizaciones de estndares de ms de 100 pases. Este modelo ISO/OSI est estructurado en siete capas para organizar el
hardware y el software de una red en modelos funcionales bien definidos.
No deja de ser un modelo, y de hecho TCP/IP implementa cinco de las siete capas nicamente (si bien en muchos manuales
aparece implementado con solamente cuatro capas, englobando la capa fsica y la capa de enlace a datos en una nica capa conocida
como capa de acceso a red. Nosotros nos centraremos en el estudio de TCP/IP como modelo de cinco capas) , pero por ser el modelo
es til conocerlo y entenderlo.

Strapping (Junio/2005) Pgina 5 de 84 Seguridad Informtica

N de Capa

Nombre

Capa de
Aplicacin

Capa de
Presentacin

Capa de
Sesin

Capa de
Transporte

Capa de Red

Capa de
Enlace de
Datos

Capa Fsica

Tipo de datos

Datos

Datos

Datos

Segmentos

Paquetes

Tramas

Bits

Este sistema de capas est pensado de forma que cada capa se comunique con las adyacentes para transportar la informacin.
Cuando los datos salen de la mquina emisora, atraviesan la pila de protocolos hacia abajo, desde la capa de aplicacin hasta la capa
fsica. En la mquina receptora este flujo es inverso, desde la capa fsica a la capa de aplicacin. Ahora es el momento de hablar
brevemente de los principales protocolos en TCP/IP:
IP (Internet Protocol): Se trata de un protocolo de capa de red, su misin es encontrar la red a la que pertenece el host destino, para
ello los routers intermedios que existen entre el emisor y el receptor consultan sus tablas de rutas para encontrar el camino
adecuado y entregar el paquete de datos al receptor.
TCP (Transfer Control Protocol): Se trata de un protocolo de capa de transporte, que mueve los paquetes entre las distintas
aplicaciones. Es el principal protocolo de transporte de datos de TCP/IP.
UDP (User Datagram Protocol): UDP es un protocolo que se usa de forma alternativa a TCP en ocasiones que requieren un
protocolo ms sencillo y rpido aunque menos fiable de transporte (debido a la ausencia de control de errores que TCP posee y
UDP no). Tambin pertenece a la capa de transporte pero slo transporta los paquetes de uno en uno.
ICMP (Internet Control Message Protocol): Protocolo de uso principalmente informativo y de control. Informa de errores de red y
otras condiciones que requieren de atencin especial del software de red. Se trata de un protocolo de capa de red.
Capa

Funcin

Protocolos

Aplicacin

Funciones de red especializadas: transferencia de archivos, terminales virtuales...

FTP, HTTP, SMTP...

Presentacin

Formato de datos, conversin del cdigo de caracteres, codificacin de los datos...

ZIP, AVI, JPEG...

Sesin

Negociacin y establecimiento de una conexin con otro host.

RPC, NFS, LDAP...

Transporte

Envo de datos.

TCP, UDP

Red

Dirige los paquetes de informacin por las redes.

IP, ICMP, IGMP, RIP,


OSPF, BGP...

Enlace de datos

Transferencia de unidades direccionables de frames y comprobacin de errores.

SLIP, CSLIP, PPP...

Fsica

Transmisin de datos binarios a travs de la red de comunicaciones.

ISO 2110, IEEE 802,


IEEE 802.11...

La capa fsica define la seal elctrica para cada canal de transmisin. No es lo mismo el cable cruzado UTP que se usa en las
conexiones ethernet (IEEE 802.3) que las ondas de una conexin wireless (802.11x). Tambin se especifica el mtodo para codificar
los bits transmitidos por la red.
La capa de enlace de datos define cmo transmite la capa fsica los paquetes de la capa de red entre los distintos hosts. Define la
conversin de datos en bits mediante los protocolos que controlan la construccin e intercambio de paquetes (denominados data
frames o frames simplemente). Se incluyen dos mdulos de protocolos: ARP (Address Resolution Protocol) y RARP (Reverse Address
Resolution Protocol) para crear y resolver direcciones para las transmisiones de la capa fsica.
La capa de red define cmo se enva la informacin recibida por la capa de transporte y cmo se dirige la red a los distintos hosts.
En TCP/IP, la capa de red se denomina tambin capa de Internet. Es el corazn de cualquier red basada en TCP/IP, pues contiene el
mdulo IP. Los dems protocolos son auxiliares a IP y se usan en ocasiones especiales, como errores y multitransmisin (broadcast).
En una red TCP/IP la capa de red encapsula a todos los protocolos menos al de resolucin de direcciones (ARP).
La capa de trasporte transfiere los datos entre aplicaciones y controla la transmisin a travs de la capa de red. Utiliza TCP o UDP
para construir estas transmisiones. En el caso de TCP, se usa un flujo de datos fiable con verificacin del destinatario (tpico ejemplo, el
Strapping (Junio/2005) Pgina 6 de 84 Seguridad Informtica

saludo en tres tiempos de conexiones TCP). En el caso de UDP, se usan datagramas (paquetes) para enviar y recibir datos, sin
existencia de ningn tipo de verificacin ni de conexin.
La capa de aplicacin enva los datos a la capa de transporte y recibe los datos devueltos por sta. En TCP/IP, la capa de
aplicacin engloba a las capas de aplicacin, presentacin y sesin del modelo ISO/OSI. Por estar en la parte superior de la pila de
protocolos, se comunica directamente con el software del ordenador.

Si se ha entendido todo lo visto hasta ahora, ya hay una base sobre el conocimiento de redes, pues los rudimentos sobre la
comunicacin entre hosts ya estn asentados. Ahora voy a introducir unos pocos conceptos ms que nos sern tiles a la hora de tratar
temas ms adelante. Estos conceptos son ms sencillos y muchos de ellos ya son de sobra conocidos de una forma natural.
En primer lugar debemos hablar de la direccin IP. En una red TCP/IP, cada ordenador conectado est identificado de forma
unvoca por un nmero de direccin. Este nmero consta de 4 bytes (32 bits) y aunque existen muchas representaciones para l, la
ms comn y a la que estamos acostumbrados es la notacin en punto decimal, en la que una IP tiene la forma xxx.xxx.xxx.xxx con 4
grupos de dgitos del 0 al 255 separados por puntos (Ej.: 212.50.60.70). Aunque existen direcciones y rangos de direcciones especiales
(127.0.0.1 es localhost, loopback o mquina local, rangos como 192.168.x.x y 172.16.x.x son redes locales, x.x.x.255 son direcciones
de multitransmisin o broadcast, 255.x.x.x es una mscara de subred...) en general una IP corresponde a una nica mquina en
Internet. Esta forma de representar y entender la IP que he explicado se denomina IPv4 y es el estndar actual, si bien cada vez crece
ms en uso e importancia el protocolo IPv6. No voy a entrar en detalles al respecto de este otro protocolo, basta sealar que su funcin
es idntica pero usa direcciones de un nmero mayor de bytes, con lo cual el nmero de posibles IP crece de forma exponencial. Es
importante saber, as mismo, que IP se sita en la capa tercera o capa de red del modelo TCP/IP, pues esto limita su rango de trabajo y
encapsulamiento de datos a esa capa. De forma general la direccin IP se presenta...:
RED

SUBRED

HOST

192

168

8 bits = 1 byte

8 bits = 1 byte

8 bits = 1 byte

8 bits = 1 byte

Esta representacin de IP es solamente un ejemplo, pues la subred no tiene porqu ocupar 8 bits ni tiene porqu limitarse al
segundo byte de la direccin IP. De hecho podemos encontrar direcciones IP de clase A (RED-HOST-HOST-HOST), de clase B (REDRED-HOST-HOST) o de clase C (RED-RED-RED-HOST). La subred se define quitando bits a la parte de host de la IP, de forma que
se pueden formar muchas redes de pocos nodos o pocas redes de muchos nodos a partir de una direccin de clase determinada.

Strapping (Junio/2005) Pgina 7 de 84 Seguridad Informtica

En nuestro ejemplo vemos una direccin de clase B a la que hemos quitado 8 bits para definir la subred.
En el caso de redes conectadas a Internet a travs de un encaminador, enrutador o router, la IP pblica se asigna al mismo. Todos
los equipos, de cara a Internet, poseen esa misma IP, si bien dentro de la red local poseen otra direccin que les identifica dentro de la
misma y de cara al router. Un equipo de esa subred puede ser 192.168.0.1, y otro 192.168.0.2, pero ambos sern la misma IP de cara
a un servidor externo, por ejemplo el servidor web google. Este proceso es posible gracias al protocolo NAT (Network Address
Translation) y al NAPT (Network Address Port Translation).
Igual que existe una direccin lgica para designar a un ordenador (la direccin IP), existe as mismo una direccin fsica y nica
que identifica, no ya a un ordenador, sino a cada dispositivo de red. As, un PC con varios dispositivos de conexin distintos, puede
tener ms de una direccin fsica (por ejemplo, un ordenador con dos tarjetas de red). Esta direccin se denomina direccin MAC
(Media Access Control) y se graba de fbrica en el NIC (Network Interface Card). Est compuesta por seis bytes (48 bits), con la forma
XX-XX-XX-XX-XX-XX con 6 grupos de dgitos del 00 al FF en hexadecimal, separados por guiones (Ej.: 00-D0-E8-55-B1-9A). Los 3
primeros bytes corresponden a la OUI (Organization Unique ID), un cdigo de identificacin que es distinto para cada fabricante;
mientras que los 3 ltimos bytes corresponden a la direccin fsica del dispositivo, y que son asignados de forma arbitraria por los
fabricantes para identificar sus productos. La direccin MAC se sita en la segunda capa o capa de enlace de datos el modelo TCP/IP,
y unida al protocolo ARP (Address Resolution Protocol), encargado de la traduccin de direcciones IP a direcciones MAC, es la base de
la comunicacin de paquetes en Internet, debido al enrutamiento de paquetes por la direccin fsica.
Organization Unique ID (OUI)

Direccin fsica del dispositivo (NIC, etc)

00 D0 E8

55 B1 9A

8 bits = 1 byte

8 bits = 1 byte

8 bits = 1 byte

8 bits = 1 byte

8 bits = 1 byte

8 bits = 1 byte

Otro concepto bsico a entender es el de puerto lgico o puerto de comunicaciones. Ya sabemos que las conexiones se realizan
entre hosts representados por una direccin IP o MAC, pero qu ocurre cuando son mltiples las conexiones? Entra en juego el
concepto de puerto. En TCP/IP, cada mquina tiene un nmero de puertos (concretamente disponemos de 65536, desde el 0 al 65535)
que son las distintas ventanas por las que se puede mirar hacia el exterior o desde las que se puede mirar el interior de nuestro host.
Hablando de una forma general, los puertos pueden ser TCP o UDP segn la conexin establecida, y pertenecen por consiguiente a la
cuarta capa o capa de transporte del modelo TCP/IP. Representaremos esta informacin de la forma IP:PUERTO (Ej.: 127.0.0.1:139).
Por norma general, el subrango de puertos 0-1024 est definido por convenio para los protocolos de nivel de aplicacin ms comunes
(FTP, HTTP, POP3, IMAP...), dejando libre el subrango 1025-65535 para usos varios o software cliente. En la prctica podemos usar
cualquier puerto para establecer cualquier tipo de conexin.
Un concepto tambin importante es el de cliente/servidor. En una conexin generalmente un host sirve una determinada
informacin, siendo el host al otro lado de la conexin el encargado de recoger esa informacin. Intuitivamente podemos decir que el
servidor es aquel que ofrece algo y un cliente es aquel que solicita algo. Por ejemplo, cuando nos conectamos con nuestro navegador
web a http://www.google.com/ nuestra mquina se conecta al puerto 80 del servidor de google (216.239.37.99) y solicita la informacin
de su ndice web (GET / HTTP/1.1), mostrando esta informacin en nuestra pantalla de forma transparente al usuario. Y aqu hay otro
concepto importante. El puerto estndar para conexiones web es el puerto 80, pero ese es el puerto del servidor, siendo el del cliente
usualmente cualquier puerto aleatorio superior al 1024. Esto suele cumplirse para casi cualquier conexin, pues si bien los puertos de
servidor suelen ser fijos, los puertos de cliente suelen ser casi siempre aleatorios (ms adelante sabremos porqu). Podemos
comprobar fcilmente esto visitando con nuestro software navegador dos o ms sitios web y consultando las conexiones existentes
entre nuestro host e Internet mediante el comando netstat (invocado mediante netstat -an en sistemas Windows o bien netstat -tupan
en sistemas Linux).
S que TCP/IP es algo muy complejo, y s igualmente que los que estn familiarizados con las redes sabrn que esto no es ms
que araar la superficie, pero mi intencin no era crear un curso de TCP/IP, sino simplemente lograr una comprensin al nivel necesario
para permitirnos comprender las bases de una seguridad en redes.
-Algunos fallos tpicos de seguridad en la mquina local
El primer bloque que vamos a tratar es el de la seguridad en la mquina local, nuestra propia mquina. Antes de comprender los
riesgos que entraa una conexin, debemos comprender mejor an los riesgos que entraa nuestra propia mquina y nuestro propio
sistema operativo. En la primera parte trataremos un tema central y universal en la seguridad: Las contraseas. Eleccin de
contraseas seguras, archivos de contraseas, usuarios y sus permisos... En segundo lugar trataremos los fallos tpicos en
determinados protocolos que tienen los sistemas operativos, as como los errores y problemas que tiene un sistema recin instalado.

Strapping (Junio/2005) Pgina 8 de 84 Seguridad Informtica

Usuarios, contraseas y archivos de contraseas


Un problema bastante comn es el desconocimiento del concepto de usuario y las implicaciones que tiene en la seguridad.
Cuando accedemos a un sistema, necesitamos hacer login, entrar a ese sistema con un nombre de usuario y una contrasea (cuando
no es necesaria, la contrasea se considera vaca pero eso no quiere decir que no exista).
Hay que introducir algunos conceptos, como por ejemplo el concepto de usuario como un conjunto de datos que permiten a alguien
acceder a los recursos de una mquina. Se hablan tambin de grupos de usuarios como un conjunto de usuarios con algo en comn
(generalmente una poltica de privacidad). Por ltimo se habla de permisos acerca de lo que puede y lo que no puede hacer un usuario,
los recursos de la mquina a los que tiene acceso, la posibilidad de modificar aspectos de la misma... Se hablan generalmente de los
permisos de escritura, de lectura y de ejecucin. Estas tres definiciones son muy generales y pueden ser aplicables a casi
cualquier Sistema Operativo.
Dejando aparte el sistema de usuarios de Windows 9x por su simplicidad y por el hecho de que las diferencias entre ellos son
nominales simplemente, vamos a centrarnos en los tipos de cuentas que existen en nuestros sistemas.
En los sistemas Windows NT (y por consiguiente 2000 y XP), existen tres tipos de privilegios principalmente: usuario (cuenta
limitada), administrador y sistema. Existe un tipo especial de usuario que es el invitado, englobado en una cuenta de usuario normal
ms restrictiva. La cuenta de administrador es la que puede realizar todo tipo de cambios en el sistema, instalar programas y aadir
entradas al registro. La cuenta de sistema es una cuenta con privilegios especiales de administrador, pero aunque de cara al sistema
operativo existe, no pueden asignarse dichos permisos a una cuenta de usuario (lo cual no quiere decir que no puedan usarse). As
mismo, existen ciertas cuentas predeterminadas consideradas como recursos compartidos administrativos, y que se distinguen por el
smbolo del dlar al final de su nombre (Ej.: C$, WINNT$...)
Windows NT tiene un sistema de seguridad formado por cuatro componentes: LSA (Local Security Authority), SAM (Security
Account Manager), SRM (Security Reference Monitor) y UI (User Interface). No vamos a explicar todo esto en detalle, pero s conviene
tener en la cabeza el concepto de Windows NT como un sistema operativo con un modelo de seguridad basado en objetos, donde cada
objeto posee distintos atributos en la ACL (Access Control List), la lista de control de acceso que dice qu grupos y qu usuarios
pueden acceder a qu objetos y con qu permisos. Ms adelante veremos cmo algunos de estos trminos aparecen.
Componente

Descripcin

Autoridad de Seguridad Local


(LSA)

Tambin conocido como Subsistema de seguridad. Se trata del componente central de la


seguridad de NT. Controla la directiva local de seguridad y la autenticacin de usuarios, as
como de la generacin y el registro de los mensajes de auditora

Administrador de Cuentas de
Seguridad (SAM)

Se encarga del control de las cuentas de grupo y usuario y proporciona servicios de


autenticacin de usuario para la autoridad de seguridad local.

Monitor de Seguridad de
Referencia (SRM)

Se encarga de la validacin de acceso y de la auditora para la autoridad de seguridad local.


Comprueba las cuentas de usuario mientras el usuario intenta acceder a los archivos,
directorios y dems. Genera mensajes de auditora segn sus decisiones. Contiene una copia
del cdigo de validacin de acceso para asegurar que el Monitor de seguridad de referencia
protege los recursos de forma uniforme en el sistema.

Interfaz de usuario (UI)

Es lo que ve el usuario y lo que se utiliza para realizar tareas administrativas.

En sistemas Linux existe una poltica de privacidad mucho ms estricta, con dos tipos bsicos de usuarios: los usuarios y el root o
superusuario. El grupo de usuarios comprende cualquiera que no sea el root, y los permisos pueden ser muy diversos y son definidos
por el root, que es el usuario con permisos totales (bueno, existen distribuciones donde esto no se cumple, pero son excepciones como
TrustedDebian). Existen igualmente varias cuentas que se activan por defecto en la mayora de sistemas Unix(makefsys, mountfsys,
unmountfsys, checkfsys, lp, daemon, trouble, nuucp, uucp...) pero no son relevantes para nosotros.
En cualquier sistema operativo podemos -y debemos si queremos una mnima seguridad-definir los permisos de usuarios, en
Windows podemos usar la Directiva de Seguridad Local (que puede ejecutarse mediante el comando
%SystemRoot%\system32\secpol.msc /s) y en Linux podemos definir a mano los permisos para cada fichero o carpeta, as como
asignar caducidad a las cuentas, contraseas y dems.
No es mi intencin hacer un anlisis detallado de los usuarios en un sistema, pero hay algo que conviene tener en cuenta siempre
que miremos por la seguridad de nuestra mquina: controlar la integridad del sistema, que los permisos permanezcan como nosotros
los asignamos. Igualmente hay una mxima para la seguridad: nunca trabajes habitualmente con una cuenta de administrador/root. Se
Strapping (Junio/2005) Pgina 9 de 84 Seguridad Informtica

debe usar por sistema la cuenta con el menor nmero de privilegios posible, de forma que una hipottica situacin que comprometa al
sistema afecte en la menor medida posible.
Cuando hablamos de contraseas, hay ciertas normas bsicas que recordar:
1.
2.
3.
4.
5.

Nunca asignar la misma contrasea a todos nuestros pares de user/password.


Nunca elegir contraseas obvias: el login, fechas, nmero de DNI, edad, nombre de mascota o pareja,etc.
Elegir una contrasea que combine maysculas, minsculas, nmeros e incluso smbolos a ser posible.
Tu contrasea ha de ser lo ms larga posible.
Si existe la opcin de pregunta secreta, que las respuestas no sean evidentes. S realista, la mayora dela
gente sabe -o puede averiguar- cmo se llama tu mascota o cundo empezaste a salir con tu pareja. :-P
6. Obviamente, no comunicar tus contraseas absolutamente a nadie. Por norma general, ningn
administrador te la va a pedir, as que de entrada no te fes y no se la des aunque te llame el presidente de
tu ISP.
7. Es conveniente llevar un registro de contraseas, sobre todo si sigues mi mxima nmero uno y todas y
cada una de tus contraseas son distintas. Pero si las apuntas todas en un cuaderno al lado del PC o las
guardas en un archivo de texto plano, pierde efectividad. Para este efecto, recomiendo apuntarlas como se
quiera (texto plano, base de datos, etc) y criptografiar el fichero de una forma segura (hablaremos de
criptografa en la tercera conferencia).
8. En cuentas importantes o especialmente sensibles, cambiar con frecuencia la contrasea por una nueva y
completamente distinta.
9. Si tu ordenador lo usan otras personas adems de ti o si no es seguro, no usar sistemas de autoguardado
de contraseas como el de Mozilla o Internet Explorer.
10. Cerciorarte de que tu ordenador o cualquiera en el que hagas login conserve intacta su integridad.

Estas normas son aplicables para cualquier circunstancia en la que sea necesario el uso de contraseas, no slo en el inicio de
sesin de un sistema operativo.
Ahora es el turno de hablar de los archivos de contraseas. Cada sistema operativo tiene su propia forma de guardar las
contraseas para su verificacin y de proteger esos ficheros de ojos indeseados. Como en todo, hecha la ley hecha la trampa, y es
posible comprometer un sistema por muy diversos medios gracias a los archivos de contraseas. Vamos a ver cmo almacena cada
sistema estos ficheros:
Los sistemas Windows 9x guardan los ficheros de contraseas en un archivo con el mismo nombre del usuario y extensin pwl, en
la carpeta de instalacin de Windows. Por ejemplo, un usuario PEPE tendra su archivo de contraseas en
C:\Windows\PEPE.pwl. Si alguien logra tener acceso a ese fichero (lo cual en un sistema 9x no supone ningn problema), la
contrasea est comprometida, pues existen multitud de programas en la red especializados en descifrar las contraseas de
este fichero.
Para los sistemas Windows NT la cosa es algo ms segura. Estos sistemas no guardan las contraseas tal cual o las encriptan,
sino que usan una funcin hash. Una funcin hash (en la tercera conferencia hablaremos ms en profundidad de las funciones
hash) es un algoritmo que dada una entrada, obtiene como salida una cadena de forma unidireccional e unvoca. Dos entradas
no pueden producir la misma salida y a partir de la salida no se puede recomponer la entrada. El sistema, cuando se define la
contrasea, aplica el hash y la reduce a un valor, que es comprobado cada vez que se accede mediante la aplicacin de esa
funcin hash a la contrasea. Los sistemas Windows ms modernos usan SYSKEY como algoritmo de proteccin de
contraseas. Estos ficheros de hash estn muy protegidos y no pueden ser accedidos ni por el administrador en ejecucin, y se
encuentran en C:\Windows\System32\Config\SAM y C:\Windows\System32\Config\sam.log. Segn la versin de NT (3.x, 4.x,
5.0 5.1) puede existir uno de estos ficheros o los dos. Igualmente, existe un tercer fichero de contraseas en
C:\Windows\repair\sam que si bien no contiene todos los hashes, contiene los principales del sistema, entre ellos el
administrador, y este fichero S puede ser accedido de una forma ms sencilla desde la mquina local (aunque se necesitan
privilegios de administrador). Igual que en el caso anterior, la posesion o acceso a uno de estos ficheros compromete el sistema
completo, pues existen multitud de programas capaces de aplicar un ataque de fuerza bruta al sistema de contraseas de hash
basado en ir probando contraseas (a, b, c, ... , aa, ab, ac, ...) hasta dar con la contrasea que devuelva un hash idntico, y
esa ser la buena.
Para sistemas Linux, hoy da se usa casi exclusivamente el sistema shadow en lugar del ms antiguo passwd. Ambos son
conceptualmente idnticos y almacenan las contraseas en un archivo cifrado, con la diferencia de que el fichero passwd
(alojado en /etc/passwd) puede ser accedido por cualquier usuario, mientras que para poder acceder al fichero shadow
(/etc/shadow por defecto, aunque puede cambiarse) se necesita ser root. Acceder a este fichero es igualmente motivo de
compromiso del sistema, pues con el archiconocido software John The Ripper (y con muchos otros) se pueden desencriptar
las contraseas de cualquier fichero passwd o shadow en un sistema Unix.
Strapping (Junio/2005) Pgina 10 de 84 Seguridad Informtica

Sistema

Fichero de contraseas

Encriptacin

Acceso

Windows 9x

%SystemRoot%\USUARIO.pwl

SI

Cualquiera localmente

Windows NT

%SystemRoot%\System32\Config\SAM
%SystemRoot%\System32\Config\sam.log
%SystemRoot%\Repair\sam

Tipo hash

Restringido
administrador

Linux

/etc/passwd /etc/shadow

SI

Cualquiera localmente
Restringido al root

La obtencin de esos ficheros puede darse de muchas formas distintas: un virus o troyano, un usuario local que obtiene los
permisos necesarios mediante una escalada de privilegios, alguna vulnerabilidad de un servicio concreto de nuestro sistema que
permita a alguien ganarse algn acceso con los privilegios necesarios, un usuario que puede arrancar con un disco de arranque o
incluso otro sistema operativo y copiar el archivo de contraseas... son muchas las posibles maneras de obtener esa informacin, y
desde luego tantas como hay para obtenerlo, las hay para que no te lo quiten. ;-)
Fallos tpicos en Sistemas Operativos
Aunque mucha gente pensar lo contrario, todo sistema operativo tiene fallos, y ms an segn terminamos de instalarlo. No me
voy a ocupar de los fallos o vulnerabilidades que se solucionen con una visita al centro de actualizaciones de nuestro sistema operativo
(WindowsUpdate, RedHat Network, apt-get upgrade...) con la excepcin de fallos graves. Asumo y de paso recomiendo
encarecidamente que lo primero que se haga al instalar un sistema (bueno, inmediatamente despus de configurar un firewall decente,
pero de eso hablaremos maana) sea actualizar todos los problemas conocidos.
La mayora de los fallos iniciales en un sistema vienen dados por puertos que el sistema deja abiertos por defecto. Nuestra prioridad
es conocer esos puertos, valorar sus riesgos, y actuar en consecuencia.
Cuando hablamos de sistemas Windows, es inevitable hablar de NetBIOS (NETwork Basic Input/Output System). NetBIOS naci
como una API de conexin de computadoras de la mano de IBM. Se ide un protocolo de comunicacin para poder conectar varios
hosts mediante la API. Ese protocolo junto a la API de NetBIOS se denomin NetBEUI (NetBIOS Extended User Interface). La principal
diferencia con otros tipos de redes, es que las mquinas no se denominaban con nmeros de direcciones (como en IP o IPX) sino con
nombres de mquina, lo cual para redes locales est muy bien, pero para grandes redes la cosa no es tan sencilla. Pasando el tiempo,
se construyeron implementaciones de NetBEUI para trabajar sobre IPX y un poco ms tarde, sobre TCP/IP, que es lo que hoy en da
entendemos como NetBIOS. Por tanto, lo que hoy se denomina NetBIOS en realidad es la implementacin de NetBEUI sobre TCP/IP.
Familiarmente, se trata de el Compartir impresoras y archivos para redes Microsoft (junto a SMB) de los sistemas Windows y el
SAMBA de los sistemas Unix. Bien, tras esta pequea charla introductoria, vamos al meollo de la cuestin: Windows es un sistema
preparado para trabajar con NetBIOS para casi cualquier tarea de red local. As pues, un sistema Windows por defecto deja abiertos
algunos de los puertos que usa este protocolo. Los puertos ms comunes de NetBIOS son: netbios-ssn (139), netbios-ns (137), netbiosdgm (138); y SMB: ms-ds (445). Adicionalmente debemos hablar e introducir unas nociones de SMB (Server Message Block), un
protocolo cliente/servidor de capa de presentacin que permite compartir archivos e impresoras entre sistemas. En realidad se trata de
un sistema que originalmente corra bajo NetBIOS y NetBEUI y que pas a implementarse bajo TCP/IP. En conjunto, NetBIOS y SMB
forman el sistema de compartir archivos e impresoras de Windows. Y es as mismo su gran taln de Aquiles. En adicin, el protocolo
RPC (Remote Procedure Call), tristemente famoso hoy da a causa del virus Lovsan o Blaster, trabaja con algunos de estos puertos, lo
cual multiplica su peligro...
El clsico problema de tener estos puertos abiertos era que cualquiera con un poco de picarda poda acceder a los recursos
compartidos de tu red local desde Internet. Mucha gente pensaba que si no tena recursos compartidos (lo cual, por cierto, es imposible,
porque Windows comparte por defecto determinados recursos de sistema de los que hemos hablado antes: aquello de C$, WINNT$...),
no necesitaba proteger esos puertos. Quiz antes fuera as, pero hoy da han aparecido diversas vulnerabilidades asociadas a esos
puertos que suponen problemas de seguridad muy graves. En un primer momento, el problema ms grave era una vulnerabilidad del
protocolo SMB que permita lanzar una peticin malformada que reseteaba el ordenador vctima, con el consiguiente problema en
servidores. Este fallo est corregido con los ltimos service pack de NT 4.0, 2000 y XP y no supone un problema muy grave, excepto
para equipos no parcheados.
Tras esto, apareci el fallo ms famoso que ha habido desde el IIS code/decode (un fallo que permita escalada de directorios
mediante la traduccin UNICODE). El fallo del protocolo RPC que propici un caos considerable en Internet el verano del 2003.
Bsicamente el fallo RPC consiste en una peticin de llamada de procedimiento remoto malformada al puerto 135 que provoca un
desbordamiento de buffer, dejando el sistema comprometido a ejecucin arbitraria de cdigo. Rpidamente se extendieron multitud de
exploits para esta vulnerabilidad, y en relativamente poco tiempo se poda con un nico exploit (vlido para cualquier versin de WINNT
5.x) aprovechar esta vulnerabilidad para obtener una shell remota con privilegios de sistema. Obviamente, esto supone uno de los
Strapping (Junio/2005) Pgina 11 de 84 Seguridad Informtica

al

problemas de seguridad ms graves al que puede enfrentarse un sistema. Aunque las vulnerabilidades fueron parcheadas por Microsoft
con relativa celeridad (y teniendo en cuenta que son unos parches que han coleado durante meses por errores en la interminable
sucesin de parches), la falta de concienciacin y el desconocimiento de los usuarios agrav esta situacin. Como muchos habris
deducido, un firewall que cierre el acceso al puerto 135 basta para eliminar el riesgo de ser vctima de la vulnerabilidad, an en un
sistema sin parchear... pero este es uno de esos mgicos puertos que Windows deja abiertos.
Al mes de aparecer la vulnerabilidad, apareci, como era inevitable, un gusano de propagacin masiva que caus estragos en la
red de redes. La mayora de los usuarios esperaban un gusano de correo, y solamente los usuarios con ms conocimientos se dieron
cuenta de las posibilidades que ofreca esta vulnerabilidad para crear un gusano de red. Aunque el gusano en s, conocido como
Lovsan o Blaster, era una autntica chapuza de la programacin por muchos motivos que no vienen al caso, y en comparacin con
otros gusanos de red como el SQL Slammer era bastante menos efectivo; el campo de accin de la vulnerabilidad le proporcion
campo ancho para expandirse rpidamente, pues en casos como el del SQL Slammer slo se vean afectados servidores SQL,
mientras que RPC afecta a prcticamente cualquier sistema Windows NT conectado a Internet.
La actuacin del virus consiste en desbordar el buffer de la vctima y dejar a la escucha una shell de sistema en el puerto 4444, y
desde all, mediante el protocolo de capa de aplicacin TFTP (Trivial File Transfer Protocol) se transmite el propio cdigo del virus, que
se ejecuta y comienza a propagarse desde ese host. Por si el peligro del virus fuera poco, falt tiempo para que la red se llenara de
cazadores de shells buscando desesperadamente sistemas con el puerto 4444 abierto y a la escucha.
Ha pasado el tiempo y han aparecido nuevas vulnerabilidades de RCP/DCOM, entre ellas una Denegacin de Servicio. Es un
problema grave que an resulta un quebradero de cabeza para mucha gente.
Adicionalmente, y por si todo lo comentado anteriormente sobre NetBIOS, SMB y RPC fuera poco, queda el tema de inicio de
sesin remoto. Mediante RPC, cualquier sistema con el puerto 445 a la escucha (que Windows tambin deja abierto por defecto) se
convierte en una potencial vctima de inicio de sesin remoto. Slo es necesario un nombre de usuario y contrasea vlido. La
costumbre de mucha gente de dejar contraseas vacas agrava este problema, pues existen determinados programas que automatizan
las peticiones RPC y permiten un control remoto de escritorio a todos los niveles, como Atalier Web Remote Commander.
Deshabilitar NetBIOS bajo TCP/IP no elimina la posibilidad de su uso en sistemas NT, pues de no poderse acceder a los puertos
137, 138 139; se gestionar la conexin mediante SMB (445). La solucin es o bien no compartir absolutamente nada de cara a
Internet, o bien configurar los filtros adecuados en el router o firewall (maana veremos un ejemplo de esta configuracin en un firewall).
En el caso de querer usar NetBIOS en Internet, debemos prestar especial atencin a los inicios de sesin nulos (posibilidad de
conexin sin necesidad de nombre de usuario o contrasea), puesto que una vez iniciada una sesin nula, es posible averiguar las
contraseas de cualquier otro usuario.
As mismo, y debido a la instalacin de software, Windows ejecuta en el inicio una gran cantidad de programas que pueden quedar
potencialmente a la escucha de determinados puertos, disminuyendo el margen de seguridad en nuestra mquina. Lo mejor para estos
casos es eliminar del inicio estos procesos molestos, desde el registro (regedit.exe) o desde el configurador de inicio de Windows
(msconfig.exe).
Todos estos motivos son suficientes para darse cuenta de la importancia de los firewall y conocer nuestro sistema en profundidad.
Un sistema operativo recin instalado no es seguro ni muchsimo menos.
Ahora le toca el turno a Linux y sus puertos abiertos por defecto. La mayora de estos puertos por defecto vienen dados por los
servicios y daemons que se arrancan con el sistema operativo. Por ello yo recomiendo dejar los arranques lo ms limpios posibles, e
iniciar a mano los daemons o servicios que se necesiten cuando se requieren (por ejemplo, no iniciar SAMBA si no necesito acceder a
ficheros de otro host en una red). Para limpiar el arranque, primero debemos conocer el runlevel de arranque de nuestro sistema, lo
cual podemos consultar fcilmente en el fichero /etc/inittab. Una vez conocido, accedemos al directorio /etc/rc.d/rcX.d/ donde X
representa nuestro runlevel, y all eliminamos los scripts de arranque que no sean necesarios. En caso de necesitar arrancar algn
daemon o servicio una vez iniciado el sistema, podemos ejecutarlo mediante la sintaxis /etc/rc.d/init.d/servicio start.
El nico gran fallo de Linux en cuanto a puertos abiertos por defecto es el servidor de las X-windows. Este servicio escucha por
defecto el puerto 6000 y no es posible eliminar este servicio del inicio si queremos poder usar un interfaz grfica, pero podemos
solucionarlo de dos formas.
La primera es mediante la edicin del fichero de configuracin del servidor de las X aadiendo el flag --nolisten-tcp. La segunda es
una manera ms sencilla, mediante el uso de la propia herramienta de filtrado/firewall que incorpora el kernel de Linux: IPtables.
Mediante comandos de consola, con IPtables podemos asignar sencillas reglas de filtrado de datos en un firewall de nivel de red.
Concretamente, para filtrar el puerto 6000 tanto TCP como UDP, usaremos los comandos:
iptables -A INPUT p tcp --dport 6000 -j DROP

iptables -A INPUT -p udp --dport 6000 -j DROP

Strapping (Junio/2005) Pgina 12 de 84 Seguridad Informtica

Con esto los puertos pasarn a estado silent. Para evitar tener que ejecutar estos comandos cada vez que iniciemos el sistema,
podemos incluir en el arranque del sistema (la carpeta de nuestro runlevel) un sencillo script con nuestro firewall que guardaremos con
el nombre S99firewall.sh o cualquier otro nombre de script de arranque vlido. Incluiremos en el fichero con cualquier editor de texto
plano como vi...:
# Esto es mi firewall
iptables -A INPUT p tcp --dport 6000 -j DROP
iptables -A INPUT -p udp --dport 6000 -j DROP
Y eso servira para proteger nuestro servidor de las X de miradas indeseadas.
Otro problema en todos los sistemas operativos es el tema de los paquetes ICMP que no queremos que nos lleguen. Hoy da la
mayora de las posibles tcnicas dainas con paquetes ICMP estn limitados, como por ejemplo el ICMP redirect, ICMP router solicit,
ICMP info req, ICMP addr mask o ICMP timestamp. Excepto el redirect, cualquier sistema Windows hoy en da bloquea todos estos
paquetes entrantes, y en Linux las ltimas versiones del kernel se protegen de este tipo de ataques y otros similares. Para deshabilitar
del sistema operativo Windows la recepcin de paquetes ICMP redirect, debemos poner a 0 el valor de registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parameters\EnableICMPRedirect. En Linux no es necesario pues el
kernel lo deshabilita por defecto.
Pero la funcin ms comn de los paquetes ICMP es el envo de pings y su respuesta (pongs :-P). Un ping consiste en un paquete
o conjunto de paquetes con una informacin de determinado tamao encapsulada (normalmente suelen ser 32 40 bytes) que se
envan a un host, este los devuelve, y nos indica que el host est disponible as como su tiempo de respuesta. Bien, para complicar las
cosas a los posibles curiosos para con nuestro sistema, la situacin ideal es que NO respondamos a los pings que se nos hagan, de
forma que el host que nos enve el ping obtenga un Tiempo de espera agotado pues es posible incluso resetear ciertas conexiones
dial-up mediante paquetes ping malformados.
Para bloquearlo en Windows, lo mejor es usar cualquier Firewall de nivel de red/transporte (la mayora trabaja en red, transporte y
aplicacin) y bloquear los paquetes con protocolo ICMP que lleguen a nuestro puerto EchoRequest (8). Con ello bastara, aunque por
supuesto necesitamos el firewall...
En Linux podemos realizar esta accin mediante un comando de consola, que podemos aadir al script de nuestro firewall realizado
antes, de forma que quedara...:
# Esto es mi firewall
iptables -A INPUT -p tcp --dport 6000 -j DROP
iptables -A INPUT -p udp --dport 6000 -j DROP
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
Esta lnea (echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all) pondra a true el valor de la variable de ignorar los ICMP echo para
IPv4. Para poder aceptar los pings de nuevo, bastara con usar el comando echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all. Fcil,
verdad? ;-)
-Breve introduccin a la seguridad en redes locales
Para esta pequea introduccin a seguridad en redes locales asumiremos que hablamos de redes ethernet (IEEE 802.3), por
tratarse stas de los tipos de redes locales ms comunes en el mbito domstico. Se trata de redes bastante rpidas, que resultan ms
funcionales en conexiones de corta distancia (la distancia mxima sin repetir la seal son 99 metros) y con un bajo nmero de equipos
(a mayor nmero de equipos por segmento de red, aumentan las colisiones de paquetes).
Antes de nada, es conveniente distinguir los tres tipos de dispositivos de conexin que existen para estas redes: repetidores/hubs,
puertos/switches y routers o enrutadores. Tambin pueden conectarse dos equipos directamente de una tarjeta ethernet a otra, pero a
efectos de red sera lo mismo que una conexin por hub. Es importante entender las diferencias entre los dispositivos:
Un repetidor lo nico que hace es regenerar una seal (excepto en el caso de los hubs pasivos, que nicamente transmiten la
seal, pero es un caso poco habitual) para que pueda extenderse ms all del lmite de 99 metros del cable de par cruzado UTP. Un
hub es un repetidor multipuerto, capaz de gestionar varias conexiones a la vez. Tanto los repetidores como los hubs son dispositivos de
capa 1 o capa fsica del modelo TCP/IP. Un hub toma una seal entrante y la reproduce por todos y cada uno de sus puertos, de forma
que cada paquete viaja a todos los hosts, y es el host el encargado de decidir si se lo queda o no, mediante el anlisis de la direccin
MAC. Esto ya nos presenta un primer problema, pues alguien que ponga su tarjeta de red en modo promiscuo y un sniffer (software o
hardware capaz de capturar y analizar paquetes de trfico de red), se quedar todos los paquetes que le lleguen, independientemente
de que el destino fuera l o no, con el consiguiente problema de seguridad que respresenta. Igualmente supone un problema de
Strapping (Junio/2005) Pgina 13 de 84 Seguridad Informtica

eficiencia en la red, por el tema de colisin de paquetes, as como la gran cantidad de paquetes de datos redundantes y la consiguiente
prdida de ancho de banda.
En parte para solucionar este problema se ide el dispositivo que denominamos puente. Un switch es un puente multipuerto. Su
cometido es analizar el trfico de forma que pueda ser redireccionado al segmento de red que corresponda, de forma que un paquete
destinado a un host de la subred A no pase por la subred B. Esto se realiza analizando el trfico mediante las direcciones fsicas (capa
2) y conmutando el trfico segn la necesidad. Es til puesto que, en principio, elimina el riesgo de capturar alegremente el trfico (ya
veremos ms adelante que no es as), adems de reducir el broadcast y aumentar el aprovechamiento del ancho de banda. Tanto los
puentes como los switchs son dispositivos de capa 2 o capa de enlace de datos del modelo TCP/IP.
Y por fin llegamos al ms complejo dispositivo de red de este tipo: el enrutador o router. Se trata de un dispositivo de capa 3 o capa
de red del modelo TCP/IP, si bien un router es capaz de operar en capa 2 y capa 1 igualmente. El router trabaja principalmente con
direcciones lgicas (capa 3) y tambin con direcciones fsicas (capa 2). Su cometido principal es analizar el trfico entrante para decidir
cul es el mejor camino para comunicar dos hosts y conmutar los paquetes a la salida ms adecuada. Tambin elimina el broadcast de
la red. As mismo un router puede conectar distintos tipos de redes entre s, sin importar su tecnologa.
Tambin es importante hablar de las tarjetas de red, dispositivos de capa 2 (enlace a datos) que utilizan MAC, aunque tambin
trabajan en capa 1 (capa fsica) al convertir bits en seales mediante el transceptor.
Y ahora unas preguntas que nos estaremos haciendo todos... Cmo relaciona un router la direccin lgica y la fsica? Bien, pues
vamos a explicar y entender el protocolo ARP (Address Resolution Protocol).
Cuando un host necesita saber la MAC de otro host, lo que hace es enviar un paquete ARP request a todos los equipos de la
subred (broadcast) con la IP cuya MAC asociada quiere conocer. El equipo cuya IP coincide, enva al primer host un paquete ARP reply
con su propia MAC. Obviamente, este trabajo no se realiza cada vez, pues supondra un malgasto de recursos de red. As pues, cada
host posee una tabla ARP donde se guardan esas equivalencias IP-MAC, que puede ser consultada mediante invocacin desde shell
con el comando arp -a (tanto en Linux como en Windows). Recomiendo encarecidamente leer la ayuda del comando arp para saber
ms sobre sus posibilidades y sus argumentos (man arp en Linux y arp -help en Windows). Esta tabla se construye generalmente de
forma dinmica, almacenando en cach las relaciones IP-MAC que obtiene el sistema operativo segn las necesita.
Esta operacin supone una de las mayores vulnerabilidades en redes locales, que es explotada con mucha frecuencia. Un atacante
malintencionado puede enviar paquetes ARP reply falsos de manera que altere la tabla de cach ARP del host al que dirige el paquete.
Esta tcnica se conoce como envenenamiento de cach ARP o ARP Spoofing, y vamos a entender qu peligros entraa y cmo
evitarlos. Los ataques ms comunes derivados del ARP Spoofing son dos tipos: los ataques man-in-the-middle y los ataques DoS
(Denial Of Service, Denegacin de Servicio).
Ataque man-in-the-middle:

La flecha verde representa lo que sera el trfico normal de datos en una comunicacin HOST1-HOST2. Pero ATACANTE manda
un paquete ARP reply falso (flecha negra) a HOST1 donde dice que IP_2 corresponde a MAC_at, y despus manda otro a HOST2
diciendo que IP_1 corresponde a MAC_at. De esta forma, HOST1 y HOST2 creern que estn hablando entre ellos respectivamente, y
dirigirn sus paquetes en consecuencia a la MAC que tienen almacenada en sus tabla ARP, que es MAC_at. ATACANTE, por su parte,
se encarga de redirigir los paquetes de un host a otro y, de paso, quedarselos y analizarlos todos con un sniffer, capturar sesiones de
algn protocolo de aplicacin (lo que se conoce como Hijacking), suplantar la IP de alguien (IP Spoofing), o cualquier otra trastada, que
de ser nosotros HOST1 o HOST2, no nos interesara que ocurriera.
Strapping (Junio/2005) Pgina 14 de 84 Seguridad Informtica

En el caso de que esta suplantacin se realizara a un router y no a un host, ATACANTE obtendra todo el trfico que pasa por la
red. Este proceso es mucho ms complejo que esto, pero el concepto est claro, no?
Ataque DoS:

En el caso de un DoS, HOST2 quiere conectarse a Internet a travs del router. ATACANTE manda un paquete ARP reply falso a
HOST2 diciendo que IP_ro se corresponde con MAC_? (cualquier MAC que NO exista en la red). Con ello, logra que HOST2 dirija sus
paquetes a una MAC que no existe, y por consiguiente, pierda la conexin a Internet por no poder comunicarse con el router. Esto es lo
que se conoce como Denegacin de Servicio.
Bien, entendido en qu consiste MiTM y DoS, hay que aclarar que segn el sistema operativo, las tablas ARP se vacan al cabo
de un tiempo, por lo cual el ataque perdera su efectividad, al renovarse la tabla con las MAC autnticas. An as, un atacante
normalmente bombardea de forma peridica la red con paquetes ARP reply falsos, de forma que se asegure que las tablas ARP
permanezcan envenenadas. En sistemas Linux, la tabla se renueva pasado un tiempo, al contrario que en los sistemas Windows,
donde la tabla permanece intacta hasta que se reinicie.
Cmo evitamos este molesto problema en una red local? Bien, antes dije que las tablas se generan normalmente de forma
dinmica... pues hay que generar unas tablas a mano y hacerlas estticas. Una tabla de cach ARP esttica supone introducir a mano
las equivalencias IP-MAC de toda nuestra subred, de forma que no puedan ser eliminadas ni modificadas (bueno, en realidad en ciertos
sistemas Windows es posible envenenar un cach ARP an con entradas estticas. En sistemas Linux es absolutamente imposible). La
gran ventaja es evitar este tipo de ataques de ARP Spoofing, pues dejan de ser operativos los paquetes ARP reply (en realidad pueden
recibirse, pero slo para crear entradas nuevas, no para modificar las existentes). Algunas desventajas se hacen manifiestas en redes
grandes, pues es necesario configurar a mano las tablas ARP de todos y cada uno de los hosts, incluyendo el router. Cuantos ms
hosts, ms configuraciones y ms entradas en cada tabla. Para introducir entradas estticas en la tabla de cach ARP se usa la sintaxis
arp -s IP MAC (tanto en sistemas Linux como Windows).
En grandes redes, para evitar mantener estas tablas a mano, podemos usar herramientas especficas para detectar un flujo
demasiado alto de paquetes ARP reply, as como los ACK storm. Igualmente, ciertos programas y firewalls detectan los cambios en
las tablas ARP y avisan al administrador de la red mediante un correo... An as lo ms efectivo sigue siendo una tabla ARP esttica.
Existen otros problemas en redes locales derivados de la arquitectura TCP/IP como los DoS por tormentas de ICMP. Bsicamente,
un atacante enva un paquete ICMP echo request malformado a una direccin de broadcast, de forma que el paquete se distribuye y
todos los hosts de la red responden el ping a la IP indicada, que obviamente no es la del atacante, sino la de alguien a quien no quiera
mucho y que ha falseado en el paquete ICMP echo request. Este tipo de ataques puede generar un trfico enorme y hacer caer al host
atacado, provocando un DoS especial que se conoce como smurfing. Tambin hay otras tcnicas con paquetes ICMP como ICMP
sweep (barridos de pings a rangos de direcciones), ICMP redirect o ICMP addr mask.
Existen as mismo algunos fallos que pueden ser explotados maliciosamente en otros protocolos de TCP/IP, pero como en el caso
de ICMP, la mayora se resuelven con un control en la mquina local (estos problemas de ICMP se pueden resolver fcilmente
mediante algunas sencillas reglas en el firewall), o mejor an, imponiendo determinados filtros en los routers de la red (la mayora de
los routers hoy da los incluyen de fbrica).
Aunque existen muchos problemas ms, slo se pretenda introducir brevemente los conceptos de redes locales y tipos de
dispositivos de enrutamiento, as como tratar algunos problemas comunes (con especial atencin al envenenamiento de cach ARP).

Strapping (Junio/2005) Pgina 15 de 84 Seguridad Informtica

2. SEGURIDAD EN INTERNET
-Introduccin: Panorama actual en Internet
Internet se ha convertido en el smbolo del progreso tecnolgico del ser humano, e igualmente en smbolo de su decadencia. Hoy
en da Internet es tierra de nadie y tierra libre al mismo tiempo. Para lo bueno y para lo malo.
Desde que el 2 de Noviembre de 1988 naciera el primer virus de Internet (el llamado Gusano de Internet de 1988) ha llovido
mucho, no cabe duda. Antes las redes se diseaban para que fueran funcionales, nadie pensaba en la seguridad, porque nadie tena
un motivo para violarla. Hoy, ya sea por dinero, por fama o por el simple ego, hay mucha gente dispuesta a violarla. As pues, han
evolucionado las redes. El concepto de virus y antivirus nos es muy familiar a todos los Internautas, e incluso en los ltimos tiempos
hemos asistido por televisin a detenciones espectaculares de creadores de virus, piratas informticos, crackers... Y tambin hemos
visto cmo la televisin ha prostituido el trmino hacker que antes era sinnimo de honor y ahora es sinnimo de delincuencia.
An as, hay muchas personas que an se preocupan por la seguridad en Internet, expertos en seguridad, hackers, usuarios... una
gran comunidad que se informa e intenta informar a los que le rodean. El conocimiento, como siempre digo, es donde reside la
verdadera libertad, y en Internet si queremos ser libres, tenemos que poseer ese ansia de conocimiento, tenemos que saber y conocer
cmo funcionan las cosas, de qu manera podemos protegernos. Hay gente que me dice Para qu quiero un firewall si no tengo nada
de inters en mi ordenador, slo mis correos personales y las fotos de mi ltimo viaje a Benidorm?. La respuesta es sencilla: son TUS
correos y son TUS fotos. Es tu derecho protegerlos, pero as mismo es tu deber.
Si habis visto la pelcula Piratas de Sillicon Valley o habis ledo sobre los inicios de la informtica domstica, habris visto una
muestra de esta lucha, de cmo empez esto. Las grandes empresas del momento le preguntaban a Steve Wozniak para qu querra
una persona cualquiera un Apple en su casa. Resultaba irrisorio pensar en un oficinista con un ordenador en su casa. Hoy en da
trabajamos, jugamos, compramos, hablamos... todo desde casa, gracias a ese aparato. El espritu de la libertad tecnolgica ya no vive
en Apple, la blanca y negra bandera pirata, smbolo de rebelin y libertad, no ondea en sus oficinas centrales desde hace mucho
tiempo, pero ese espritu an vive, y ese afn de acercar a todos lo que las grandes corporaciones creen slo suyo sigue vivo en
Internet, alimentado por la comunidad hacker. ARPAnet evolucion en Internet, el NCP dio lugar a TCP/IP, los viejos Apple dieron lugar
a los x86, los mdem de 28.8 Kbps dieron lugar a la fibra ptica y el wireless... y nosotros hemos de evolucionar de forma pareja con la
tecnologa. La seguridad en Internet es tan necesaria como la propia Internet, y es responsabilidad de nosotros mantener vivo el
espritu hacker en base a la seguridad.
Y vamos a aprender a protegernos.
-Antivirus
Hoy en da, por desgracia, no hay nadie que no haya odo hablar de los virus informticos. El mayor problema quiz sea la falta de
informacin o la gran cantidad de informacin incorrecta que circula dentro y fuera de la red. Prueba clara de esto que digo son los
denominados hoaxes, que son bulos -generalmente relacionados con los virus- que circulan en forma de cadenas de correo
electrnico (Soy el nico que odia a muerte las cadenas :-m ?). Supongo que todos hemos recibido alguna vez (muchas ms de las
que desearamos) el tpico correo informando de un nuevo virus que solo con abrir el correo puede provocar que se te caigan los libros
de las estanteras o algo por el estilo. Otra fuente importante de errores es la infame caja tonta. He llegado a or ciertas cosas que le
hacen a uno pensar en qu creer la gente no informatizada de lo que es Internet. De hecho nunca olvidar cuando, hace unos aos,
mi abuela me llam alarmada para pedirme que tuviera cuidado con el ordenador porque acababa de ver en televisin una alerta del
virus ILoveU y claro, la pobre mujer estaba muy preocupada no fuera a ser que yo cogiera algo... :-
Introduccin a los virus: tipos y precauciones
Antes de nada, vamos a ver algunas definiciones de virus: pedazo o secuencia de cdigo ejecutable que se caracteriza por ser
capaz de clonarse a s mismo; programa que hace una copia de s mismo sin la aprobacin del usuario; cdigo o script capaz de
autoreplicarse sin el consentimiento del usuario. Parece que en algo estamos de acuerdo: un virus se replica y acta sin el
consentimiento del usuario del ordenador. Con esta definicin englobamos muchos tipos de virus, y conviene echar un vistazo a cada
tipo para conocer sus peculiaridades y peligros. Conviene recordar que en esta seccin, nos vamos a referir nicamente a virus y
antivirus para sistemas Windows, pues en Linux apenas existen virus y por la propia concepcin del sistema operativo, es innecesario
el uso de antivirus (aunque existen). Por la propia evolucin de los virus, pareja a la informtica, hay muchas clasificaciones clsicas de
manual que estn obsoletas, por ejemplo la que divide los virus en las clases caballo de troya, polimorfos, sigilosos, lentos, retro-virus,
multipartitos, blindados, de compaa, voraces y gusanos. Esta clasificacin est sacada de un libro de seguridad informtica de hace
seis aos (1998). Como podis imaginaros, esta clasificacin se ha quedado obsoleta, hay nuevos tipos, algunos de los mencionados
estn en desuso... en definitiva, que voy a usar otra clasificacin, pero es importante comprender que no es nada estricto y cerrado, y
podis encontrar muchas otras clasificaciones, adems de que sta se quedar obsoleta igualmente...

Strapping (Junio/2005) Pgina 16 de 84 Seguridad Informtica

Codigo ActiveX malicioso: Se trata de objetos incrustados en pginas web que se ejecutan de forma automtica al visitar el sitio.
Normalmente se asocian a vulnerabilidades del software navegador, usualmente Internet Explorer (por su uso extendido y por su
enorme catlogo de vulnerabilidades).
Cdigo Java malicioso: Es similar al caso anterior, solo que se trata de objetos programados en lenguaje Java. Hoy da, con el
sector de telefona mvil capaz de interpretar Java en alza, es un peligro latente que tarde o temprano comenzar a dejarse notar.
Virus de macro: Similar a los casos anteriores, si bien el objeto se encuentra incrustado en algn tipo de documento perteneciente a
un software capaz de interpretar scripts de macro. Tpicamente es el caso de Microsoft Office y sus virus de macro.
Virus del sector de arranque: Hoy en da son casi una reliquia de museo, aunque hace unos aos suponan el mayor porcentaje de
los programas maliciosos. Se trata de virus que infectan el sector de arranque o la tabla de particiones del disco duro. Se eliminan con
bastante facilidad.
Virus de fichero de accin directa: Se trata del tipo ms famoso de virus. Es aquel que ejecuta archivos .exe o .com y se replica
desde la memoria a todos los programas que se ejecuten, sobreescribiendo parte del cdigo original. Generalmente tienen algn
objetivo adicional, como formatear el disco duro, mostrar un mensaje en una fecha prefijada...
Virus de script: Se trata de los virus ms extendidos hoy en da junto a los gusanos. Hoy da, gracias principalmente a los lenguajes
VisualBasicScript y JavaScript, cualquier usuario con conocimientos bajos en programacin puede generar un virus en minutos.
Adems, debido al Scripting Host de Windows, se pueden ejecutar con doble click, como si fueran un archivo ejecutable.
Gusano: El otro gran tipo de virus de hoy da. Se trata de un programa que utilizan copias completas de s mismo para infectar a
otras mquinas y propagarse, dejando una copia de su cdigo o parte de l en la otra mquina y empezando de nuevo el proceso
desde ella. Hasta hace poco eran casi exclusivos los gusanos de correo, si bien hoy en da, debido a virus como SQLslammer o
Lovesan, los gusanos de red se han hecho tristemente famosos.
Troyano: ste es un tipo especial de virus. Un troyano es una herramienta de control remoto que alguien maneja (obviamente no es
el dueo de la mquina infectada). Se compone de dos mdulos: cliente y servidor. El servidor es el mdulo que infecta, y
generalmente suele ir escondido en archivos ejecutables o en correo electrnico, siendo tpico el uso de ingeniera social para lograr su
ejecucin. El cliente es el mdulo de control mediante el cual un atacante puede obtener control de la mquina. Los troyanos no se
reproducen ni infectan otros programas, pero debido a sus peculiaridades, se consideran igualmente virus.
Esta sera la clasificacin general de virus que considero ms correcta dado el panorama actual.
Hay algunos conceptos que conviene definir respecto al tema de virus. En primer lugar, antes he hablado de ingeniera social. Por
ingeniera social entendemos el uso de tcnicas psicolgicas para convencer a un usuario de que realice alguna accin que no debera
o querra realizar en circunstancias normales. Claros ejemplos sera obtener contraseas con alguna artimaa, obtener respuestas de
preguntas secretas mediante conversaciones aparentemente casuales, lograr que un usuario ejecute algn programa que no debera...
no tiene nada que ver con los virus pero conviene conocer el concepto, pues en el tema de troyanos es el pilar principal.
Otro concepto importante a comprender es el concepto de payload. El trmino payload viene del ingls carga, y simboliza la carga
peligrosa de un virus. A efectos prcticos, los payloads son las caractersticas y efectos dainos de un virus. Por ejemplo, un payload
podra ser Formatear el disco duro, Mostrar por pantalla un mensaje el da X...
Conviene conocer la nomenclatura de los virus. Un virus se denomina de la siguiente manera: TIPO/Nombre.versin. Por ejemplo,
W32/Mimail.J indica que se trata de un gusano -en este caso de correo-(W32), cuyo nombre es Mimail y que ste en concreto se trata
de la versin J (alfabticamente). Los nombres suelen proceder de algn payload o del cdigo del virus. A veces, distintas compaas
de seguridad denominan a los virus de distinta forma, como en el caso del gusano Blaster o Lovsan. Veamos ahora cmo se clasifica
un virus de forma detallada. Toda esta informacin ha sido extrada del, para m, mejor portal antivirus de habla hispana: Video Soft
Antivirus (http://www.vsantivirus.com) con sede en Maldonado, Uruguay.
W32/Mimail.J. Asunto: "IMPORTANT"
http://www.vsantivirus.com/mimail-j.htm
Nombre: W32/Mimail.J Tipo: Gusano de Internet, troyano robador de informacin Alias: Mimail.J, W32.Mimail.J@mm,
W32/Mimail.J.worm, W32/Mimail.J, W32/Mimail.J-mm, WORM_MIMAIL.J Fecha: 17/nov/03 Plataforma: Windows 32-bit Tamao:
13,856 bytes
* Herramienta para quitar el W32/Mimail de un sistema infectado
* Sugerencias para administradores (bloqueo antispam) Variante de W32/Mimail.I, que se propaga masivamente por correo
electrnico, en un mensaje anunciando la expiracin de la cuenta del usuario en Paypal, una conocida plataforma de pago va Internet.
Al ejecutarse el adjunto, el gusano intenta robar la informacin de la tarjeta de crdito del usuario. [...]

Strapping (Junio/2005) Pgina 17 de 84 Seguridad Informtica

Observamos un ttulo, el nombre, tipo de virus, alias, fecha, plataforma, tamao, herramientas de desinfeccin y una extensa
informacin detallada sobre desinfeccin manual, payloads y dems datos de inters (que he recortado por su enorme extensin).
Las precauciones bsicas para evitar infecciones por parte de virus son por lo general las que nuestro propio sentido comn nos
dicta. Vamos a ver en primer lugar las Pautas generales para mantenerse alejado de los virus de VSAntivirus y despus hablaremos
en trminos coloquiales...
1) Use regularmente un programa antivirus (nosotros siempre recomendamos no confiar en uno solo, pero usar ms de uno no
significa que debamos tenerlos a todos instalados,simplemente ejecutamos esos antivirus en su opcin de escaneo, sobre la
carpeta que contenga los archivos a revisar). Y por supuesto, de nada vale usar algn antivirus si no lo mantenemos
actualizado con los upgrades, updates o add-ons correspondientes. Actualmente, las actualizaciones son diarias (AVP, Panda y
otros) o al menos semanales. No existen los "virus demasiados nuevos y sin antdotos", la reaccin de las casas de antivirus es
inmediata en todos los casos. Pero mejor pregntese, si la suya tambin lo es a la hora de actualizarse.
2) No abrir ningn mensaje ni archivo recibido a travs del correo electrnico de fuentes desconocidas o muy poco conocidas. En el
caso de personas conocidas, se deben igualmente tomar las precauciones correspondientes. Asegurarse con esa persona del
envo ("Melissa" y otros pueden ser enviados por conocidos que ignoran estar mandando el virus en sus mensajes), y nunca
ejecutarlos, sino guardarlos en una carpeta temporal y pasarle a esa carpeta dos o tres antivirus actualizados antes de tomar la
opcin de ejecutarlos (.EXE) o abrirlos (.DOC, .RTF, etc.). Pero ante cualquier duda, simplemente se debe optar por borrar el
mensaje (y archivos adjuntos). Como se dice vulgarmente, "la confianza mata al hombre", en este caso al PC.
3) Estar informado de cmo operan los virus, y de las novedades sobre estos, alertas y anuncios crticos, en sitios como el nuestro.
4) No bajar nada de sitios Web de los que no tenga referencias de seriedad, o que no sean medianamente conocidos. Y si se bajan
archivos, proceder como los archivos adjuntos. Copiarlos a una carpeta y revisarlos con dos o tres antivirus actualizados antes
de optar por ejecutarlos o abrirlos.
A grandes rasgos se trata simplemente de sentido comn: no es normal que tu to del pueblo te mande un email redactado en
ingls (cuando l no sabe hablarlo) donde te dice que te manda un vdeo de Britney Spears en un archivo .exe. ;-)
Es importante usar el antivirus, y desconfiar por sistema de todo aquello que resulte sospechoso, tener claro que nadie da duros a
pesetas, y tener siempre los ojos abiertos.
Uso de Antivirus: cmo usarlos y cmo actuar ante un virus
Hoy da en sistemas Windows es imprescindible contar con un buen software antivirus. Los principales representantes de software
antivirus pertenecen a las compaas ms famosas: Symantec (http://www.symantec.com/), McAfee (http://www.mcafee.com/), Panda
(http://www.pandasoftware.com/)... si bien tambin hay nuevos antivirus muy capaces, como Kaspersky Antivirus
(http://www.kaspersky.com/), NOD32 (http://www.nod32-es.com/), F-prot Antivirus (http://www.f-prot.com/), Dr Web Antivirus
(http://www.drweb.sk/)... Y hay, en ltimo lugar, gran cantidad de software antivirus gratis. No hablamos de versiones shareware, como
Panda, sino de versiones completas (a veces reducidas) totalmente gratuitas. Tenemos AVG Free Antivirus
(http://www.grisoft.com/us/us_dwnl_free.php),
TrendMicro
Antivirus
(http://www.trendmicro.com/en/products/desktop/housecall/more/download.htm),
Bit
Defender
Antivirus
(http://www.bitdefender.com/bd/site/products.php?p_id=24), y otros tantos.
Yo personalmente recomiendo el Bit Defender; ya que el programa profesional completo incorpora un centinela, un firewall, un antispam para el e-mail; y un actualizador automatizado.
Hay que pensar en el software antivirus como un desembolso totalmente necesario segn estn las cosas hoy en da. Cul elegir
de los citados anteriormente? Cualquiera sirve. Qu buscamos en un antivirus? Lo primero que debemos mirar es que posea un
soporte poderoso, con actualizaciones diarias de su base de datos. Con un ritmo de aparicin de virus de 3 a 10 virus diarios (los que
estn apuntados a la lista de correo de VSAntivirus saben de qu hablo), es imprescindible tener un respaldo de actualizaciones. As
mismo, es importante un soporte tcnico al que podamos remitir ficheros en caso e infeccin por un virus desconocido. Tambin es
importante que este software consuma el menor nmero de recursos de procesador y memoria posibles en modo de proteccin
permanente. Es interesante que el antivirus analice en tiempo real los emails cuando nuestro cliente de correo recoge los nuevos
mensajes por POP3 o IMAP, y sobre todo cuando se envan por SMTP, evitando en gran medida problemas con gusanos de correo.
Hoy da es comn la aparicin de mini-antivirus especficos para ciertos tipos de virus. Cuando algn virus concreto tiene una
incidencia o peligrosidad alta, las compaas antivirus crean pequeos programas especializados en su deteccin, eliminacin, y si es
necesario, el parcheo de vulnerabilidades asociadas. Estos programas son gratuitos para todos los Internautas, y este verano hemos
tenido ejemplos muy notorios de este tipo de programas para virus como Lovsan o Sobig.
Strapping (Junio/2005) Pgina 18 de 84 Seguridad Informtica

Al principio hablamos de troyanos, y pusimos de manifiesto las grandes diferencias con el resto de los virus, no obstante de ser
considerados programas dainos. Aunque cualquier antivirus del mercado reconoce en sus bases de datos los troyanos, existen
programas especficos encargados de deteccin, eliminacin y proteccin contra troyanos y backdoors (del trmino ingls puerta
trasera). Este software se denomina antitroyanos. El ms conocido es The Cleaner (http://www.moosoft.com/products/cleaner/). En mi
opinin es el mejor, pues no slo protege al sistema de troyanos mediante proteccin permanente, sino que incluye una utilidad llamada
TCmonitor que se encarga de escuchar el registro de Windows y lanzar una alerta cada vez que se modifique algo (en instalaciones es
normal, pero si te bajas un flash y suena la alarma, algo no va bien). Igualmente existen otros programas antitroyanos muy conocidos,
como Anti-Trojan (http://www.anti-trojan.net/) o Trojan Remover (http://www.simplysup.com/tremover/). En general el funcionamiento de
los antitroyanos es muy similar al de los antivirus.
Es hora de saber cmo funciona un antivirus y cmo debemos usarlo, pues cada tipo de usuarios tiene unas necesidades distintas,
y de forma diferente deben cubrirse. Lo primero a tener en cuenta es la proteccin permanente, que con distintos nombres, todos los
antivirus incluyen. Esta proteccin genera un servicio del antivirus que est permanentemente escuchando la memoria y los datos que
entran y salen de nuestro ordenador, con el fin de detectar al instante cualquier evento potencialmente peligroso. Es una opcin que
recomiendo encarecidamente a todas aquellas personas no muy familiarizadas con la seguridad informtica, despistados, nios
pequeos que usan el ordenador... y en general cualquier usuario que pueda suponer un peligro en este sentido. Los usuarios ms
avanzados y con ms control sobre su mquina preferirn desactivar esta proteccin para comprobar a mano los archivos que
consideren sospechosos, con el consiguiente ahorro de recursos del sistema.
Respecto a las opciones de escaneo, prcticamente todos los antivirus comparten las mismas opciones: comprobacin de todo el
sistema, de la memoria, por unidades, por carpetas y por archivos. Es bueno realizar peridicamente revisiones completas del sistema,
o incluso programarlas. Tambin es importante revisar una unidad cuando sospechamos que puede contener algn tipo de programa
daino (Tpicamente disquetes y CD's prestados). Casi todos los antivirus integran as mismo opciones de men contextual, de manera
que para escanear un fichero slo es necesario realizar click en el botn secundario del ratn y elegir la opcin adecuada.
Cuando un antivirus detecta un virus, normalmente pregunta al usuario sobre el curso de acciones a tomar (si es posible
configurarlo, recomiendo elegir esta opcin). Normalmente encontraremos las opciones: Eliminar, Cuarentena, Enviar, Ignorar. Cuando
el fichero no es importante o no sabemos de dnde ha salido, lo mejor es eliminarlo directamente (an as la mayora de los antivirus
generan copias de seguridad de forma automtica, que tambin conviene borrar). Cuarentena es una buena opcin para ficheros
sospechosos que hemos obtenido por nosotros mismos pero cuyo contenido no es claro. Los antivirus hoy da son capaces de
reconocer virus que no se encuentran en su base de datos en base al comportamiento de estos, pero a veces fallan. Yo me he
encontrado casos donde un software perfectamente normal y legal era detectado como posible virus, y borrarlo no era la mejor opcin.
Cuando se trata de archivos muy extraos, dudosos o con informacin importante, es mejor enviarlo a la compaa antivirus contratada
para que lo analicen profesionales. Ignorar es til cuando queremos que el antivirus no realice ninguna accin.
Por ltimo hemos de hablar del log o registro. Cualquier software de este tipo mantiene un registro donde quedan reflejadas las
acciones realizadas y los eventos importantes, tales como escaneos y sus resultados, alertas de virus, acciones realizadas por el
usuario o por el software en caso de haber sido programado de forma automtica...
Virus e integridad en la mquina local
Antes de nada, hay que definir eso de Integridad de una mquina. Entendemos por integridad de un sistema la inalteracin de los
recursos del mismo: ficheros, configuraciones, elementos de seguridad, informacin contenida en el registro... Cualquier accin que
pueda comprometer un sistema, como borrar o modificar un fichero importante del sistema operativo, eliminar o introducir entradas en
el registro sin consentimiento del usuario, cambio de configuraciones, eliminacin o alteracin de los objetos de seguridad, o crear la
posibilidad de que cualquier persona de forma remota ejecute alguna de las acciones anteriores... se considera una alteracin en la
integridad del sistema.
A partir de esta definicin, podemos entender que prcticamente cualquier virus compromete la integridad local. Normalmente
cuando detectamos un virus y queremos saber en qu medida ha resultado daada la integridad del sistema, debemos acudir
inmediatamente a algn buscador (yo recomiendo San Google) para buscar informacin relativa al virus, y poder consultar una
detallada lista de sus payloads. Normalmente podremos corregir a mano los cambios efectuados, si el antivirus no lo hace de forma
automtica y no existe una herramienta de desinfeccin especfica. Los peores casos de compromiso de integridad del sistema se
encuentren quiz en los rootkits. Entendemos por rootkit una herramienta o conjunto de herramientas diseada especficamente para
romper por completo la integridad del sistema, obteniendo cuentas de administrador ilcitas, creando puertas traseras, cambiando
funcionalidades del sistema operativo para que las acciones no se detecten... Por suerte suelen ser detectados y bloqueados en
ejecucin, pero mucho cuidado cuando no se tiene activada la proteccin permanente.

Strapping (Junio/2005) Pgina 19 de 84 Seguridad Informtica

-Firewalls e IDS
Como ya hemos dicho, prcticamente todo el mundo hoy da est familiarizado con el concepto antivirus. Pero por desgracia no es
as con los firewalls o cortafuegos y con los IDS (Intrusion Detection System). Y otro gran sector que ha odo hablar de ellos piensan
que son programas para proteger de los virus o proteger de los hackers o algo similar. Para protegernos de los virus estn los
antivirus, y de los autnticos hackers no hay necesidad de defenderse. ;-) Pero s hay necesidad de defendernos de muchas otras
cosas, y este tipo de software nos ayuda a estar al tanto de lo que pasa en nuestro PC, y ser nosotros mismos los que llevemos la
seguridad del sistema, con control total sobre el mismo.
Conceptos bsicos sobre Firewalls e IDS
Antes de nada, debemos dejar claros ciertos conceptos, como definiciones y tipos de firewalls e IDS; y tambin hablaremos
brevemente de la utilidad y necesidad de usar este tipo de software. Este tema podra alargarse das y das, pues hay mucho que decir
sobre l, as que tratar de resumir todo, orientndolo a una seguridad prctica a nivel usuario.
Un firewall o cortafuegos es un filtro (ya sea software, hardware o una combinacin de estos) que analiza y filtra el trfico entre
hosts, segmentos de red o redes. Este control de informacin no es nicamente desde fuera hacia dentro como habitualmente se
piensa, es bidireccional. Tan malo es que entre determinada informacin por un puerto que no debera estar abierto, como que un
programa malicioso instalado en nuestro sistema (por ejemplo un troyano) mande paquetes con informacin sensible hacia fuera. Esta
definicin es muy general, lo s, y dentro de ella pueden abarcarse desde la mayora de los routers o enrutadores (ya entenderemos
esto cuando hablemos de los tipos de firewalls) hasta los grandes firewalls con hardware especializado y miles de euros de coste,
pasando por los tpicos firewalls basados en software que se instalan bajo un sistema operativo.
Hay muchas clasificaciones de firewalls, dividindolos bajo criterios muy complejos. No quiero entrar a un nivel de detalle tan
profundo, por lo que dividiremos los firewalls segn el nivel al que se realice el filtrado (aqu es til haber entendido bien la introduccin
a TCP/IP de ayer).
En primer lugar encontramos los Paquet Filtering Firewalls o Firewalls de Filtrado de Paquetes. Estos firewalls se basan en un
filtrado de paquetes segn las cabeceras de los mismos. No tienen el concepto de sesin, y cada paquete individual es analizado,
estudiado, y aceptado o denegado segn su naturaleza. Trabaja principalmente en la capa de red, aunque bajo determinadas
circunstancias tambin lo hace en la de transporte del modelo TCP/IP, y aunque en un principio eran los firewalls ms populares, hoy
en da estn en desuso. Este filtrado tan bsico no contemplaba conceptos como la autenticacin, por lo que es vulnerable a ataques
de Denegacin de Servicio y Spoofing. Como desventaja aadida, son extremadamente complicados de administrar en redes
complejas y cuanto mayor sea el trfico de la red, ms es entorpecido por el firewall, producindose mayor nmero de colisiones de
paquetes. La mayora de los pequeos dispositivos de red y routers pueden realizar la funcin de firewall de filtrado de paquetes.
El segundo tipo de firewalls que podemos distinguir son los Stateful Application Inspection firewalls o Firewalls de Inspeccin de
Estado de Aplicacin. Se conocen familiarmente como firewalls a nivel de red. Estos firewalls trabajan en multitud de capas del modelo
TCP/IP (enlace de datos, red, transporte y parte de la capa de aplicacin, concretamente la capa de sesin), con el consiguiente
aumento en la complejidad de los mismos. Estos firewalls reconocen el tipo de trfico y filtran segn las necesidades especficas de
cada protocolo, mediante un mdulo de control de sesiones, conexiones y su contexto que trabaja en las capas de red y enlace a datos.
Controlan el inicio de sesiones, filtrando el trfico por protocolo y puerto, y reconocen el fin de las mismas. Sus principales ventajas son
el alto rendimiento derivado de la operabilidad a nivel de sesin en lugar de aplicacin, as como el poco consumo de ancho de banda
que supone. Por contra, no revisa la trama del paquete y una vez establecida la conexin, puede entrar a travs de ella todo tipo de
trfico sin que el firewall lo analice.
El ltimo tipo que vamos a distinguir es el Application Gateway Firewall o Firewall de Puerta de Enlace de Aplicacin. Son los que
coloquialmente se conocen como firewalls a nivel de aplicacin. Estos firewalls trabajan principalmente en todos los niveles de la capa
de aplicacin, si bien tambin trabajan en las capas de transporte, de red y de enlace a datos. Basan su trabajo en reconocer y filtrar el
trfico que es solicitado por aplicaciones (como un navegador web) o protocolos (FTP, HTTP...), as como reconocer las sesiones y la
autenticacin de usuarios. Suponen los firewalls de ms alto nivel, pero tambin son los ms lentos en cuanto a consumo de recursos
del sistema, y pueden provocar problemas de incompatibilidad con ciertos protocolos con los que tengan imposibilidad de trabajar.
Hay que tener en cuenta que esta divisin sera en casos ideales, puesto que en la prctica cualquier firewall domstico (no
hablamos de los firewalls con hardware especfico como un PIX de CISCO) son hbridos entre el firewall de red y firewalls de aplicacin.
Estos firewalls domsticos reconocen el uso de red de determinadas aplicaciones, as como el establecimiento de sesiones, uso de
determinados protocolos independientes de la aplicacin (ICMP, IGMP...), etc. Son quiz el tipo ms completo de firewall.
Ejemplos de firewalls populares para sistemas Windows seran: Kerio Personal Firewall, AgnitumOutpost Firewall, Sygate Personal
Firewall, McAfee Desktop Firewall, Norton Firewall, BlackICE PC Protection, Freedom Firewall, Zone Alarm... Para Linux lo ms comn
es el uso de la herramienta de filtrado de Netfilter conocida como IPtables, aunque tambin existen firewalls (basados o no en IPtables)
de aspecto y e interfaz de uso similar a los de Windows, como KMyFirewall, Firewall Builder, Shorewall, Guarddog, Firestarter... La gran
Strapping (Junio/2005) Pgina 20 de 84 Seguridad Informtica

mayora de ellos se basan en Iptables en menor o mayor medida, desde los generadores automatizados de scripts hasta las completas
interfaces grficas.
Es hora de hablar de IDS (Intrusion Detection System). Un IDS es un sistema de alerta en tiempo real que, basndose normalmente
en una base de datos, es capaz de identificar y reconocer algn patrn definido como potencialmente peligroso. Estos eventos no slo
se refieren a intentos de conexin, sino que son capaces de reconocer cualquier evento dentro del host o red (por ejemplo si tenemos
un servidor de telnet en nuestro sistema y queremos permitir el uso de comandos como vi, man, less, ls, cd... pero no queremos permitir
que se pueda usar gcc o gdb). Podemos decir que un IDS es al trfico de red lo que un antivirus al anlisis de los archivos
almacenados en disco.
Mientras un firewall solamente filtra y genera registros (logs), un IDS vigila y cuando reconoce un patrn, acta segn haya sido
programado (no siempre filtrando), adems de generar alertas en tiempo real por pantalla, por correo electrnico... Muchos se estarn
preguntando si estos dos conceptos no son compatibles... y efectivamente lo son. Cada vez es ms comn que los fireawalls incluyan
funcionalidades de IDS, como ya hacen Agnitum Outpost Firewall, Kerio Personal Firewall, BlackICE PC Protection... y bastantes otros.
An as, las caractersticas IDS que incluye un firewall son bastante limitadas, siendo preferible el uso de software IDS especializado,
como SNORT, CIDS (Cerberus Intrusion Detection System), MIDAS (Monitoring Intrusion Detection Administration System)...
La combinacin ms usual es: un buen IDS (Snort suele ser la opcin elegida) con un sistema de base de datos (normalmente
mySQL), generacin web con estadsticas (PHP), herramienta de control por consola (ACID, Analysis Console for Intrusion Databases)
y servidor web (Apache). El IDS supone el ncleo central, la base de datos controla tanto la programacin del IDS como el registro de
logs, PHP genera webs que Apache sirve y que podemos consultar en tiempo real mediante cualquier navegador. ACID ayuda a la
programacin y orquestacin de todos los elementos. La nica desventaja es que la instalacin y correcta configuracin de Snort +
mySQL + PHP + ACID + Apache es bastante tediosa y compleja.
Ahora vamos a ver los tipos de IDS que hay atendiendo al tipo de sistema al que estn orientados. La clasificacin de IDS es
descendente, pues en el orden en que los voy a citar, cada tipo es englobado por los siguientes, y a su vez stos son particularidades
de sus precedentes. Cualquier IDS, debido a su naturaleza programable, puede funcionar como cualquier tipo de IDS, aunque existen
excepciones.
En primer lugar, distinguimos los HIDS (Host Intrusion Detection System), que son los que conocemos como IDS simplemente,
pues estn orientados a un nico host, se instala y acta en una sola mquina. Son los IDS que todos conocemos y los ms comunes.
Los HIDS, por contra de los otros tipos, consumen bastante pocos recursos de sistema.
En segundo lugar, un tipo particular de IDS es el NIDS (Network Intrusion Detecion System), orientados a la monitorizacin de
redes completas y VPNs (Virtual Private Networks). Se instala en una mquina pero acta en un grupo de ellas. Normalmente adems
del uso de una base de datos, se apoyan en la bsqueda de patrones en los paquetes que pasan por la red (similar al firewall de filtrado
de paquetes).
Por ltimo, un tipo especial de NIDS son los DIDS (Distributed Intrusion Detection System), que son bsicamente un tipo de NIDS
estructurados de forma distribuida, esto es, con diversos mdulos que operan desde distintas mquinas. Se instala en diversas
mquinas con un control centralizado. Esto nos otorga la poderosa ventaja de que el sistema DIDS no cae en caso de ataque a una de
la mquinas que lo sustentan, si bien un potencial atacante que conozca el sistema procurar lanzar un DDoS (Distributed Denial Of
Service), un tipo especial y distribuido de denegacin de servicio. Tanto los NIDS como los DIDS, especialmente los ltimos, realizan un
consumo de recursos de sistema bastante importante.
Cmo configurar un Firewall
Lo primero, debera ser leer el manual correspondiente al software que hayamos elegido para instalar en nuestro sistema. Despus,
deberamos hacer un pequeo estudio acerca del uso que va a tener la mquina donde vamos a instalar el firewall. No es lo mismo
configurar un equipo domstico que un servidor web o un host bastin (se denomina host bastin a un ordenador independiente,
interpuesto entre la mquina a proteger y la red, de forma que filtre todo el trfico; Sera convertir un PC en un firewall dedicado :-P).
Una vez realizado este estudio, hay que preguntarse cmo preferimos que se definan las reglas: permitir todo por defecto y definir a
mano las excepciones o bien denegar todo por defecto y definir a mano las excepciones. Yo recomiendo esta segunda opcin. Y por
ltimo queda llevar todo esto a la prctica.
Es importante tener en cuenta las direcciones de confianza. Cuando definimos reglas, podemos hacer que se apliquen a todas las
direcciones IP, a una direccin concreta, a un rango de direcciones, a una subred (mediante una IP y una mscara de subred), etc.
Estas direcciones de confianza son un grupo especial de direcciones, definidas por el usuario para aplicar reglas de forma excepcional;
por ejemplo, permitir netBIOS en red local pero denegarlo de cara a la conexin a Internet. En la mayora de los firewalls existe la
opcin de Trusted Networks o algo similar, donde podremos aadir direcciones, rangos o subredes a este grupo. En IPtables con
Linux, podemos aadirlos al archivo /etc/hosts.allow, al igual que los denegados se pueden aadir a /etc/hosts.deny, donde
recomiendo aadir un ALL: ALL por seguridad.
Strapping (Junio/2005) Pgina 21 de 84 Seguridad Informtica

Aunque un firewall deniegue por defecto toda conexin, siempre prefiero especificar reglas a mano para poder controlar mejor el
acceso de paquetes al sistema. Estas otras reglas las aado normalmente por el mtodo de aceptar el tipo genrico de conexin y
definir las excepciones denegadas. Veamos algunos ejemplos de configuracin:
Para los paquetes ICMP, definimos en primer lugar una regla que acepte la entrada y salida de cualquier paquete ICMP bajo
cualquier puerto y direccin, y despus definimos reglas para denegar la entrada de paquetes ICMP de los siguientes tipos locales:
AddrMaskReq (17), InfoReq (15), Redirect (5), RouterSolicit (10), TimestampReq (13), EchoRequest (8).
Para poder usar netBIOS en una red local (sistemas Windows) y denegar su acceso al exterior, definimos en primer lugar las reglas
que permitirn su uso en una red local mediante cuatro grupos de reglas:
- Aceptar entrada y salida a direcciones de confianza de paquetes UDP bajo los servicios remotos y locales de
datagrama netbios-dgm (138), de nombre de servicio netbios-ns (137) y de sesin netbios-ssn (139).
- Aceptar entrada y salida a direcciones de confianza de paquetes TCP bajo los servicios remotos y locales de
SMB ms-ds (445), de nombre de servicio netbios-ns (137) y de sesin netbios-ssn (139).
- Denegar entrada y salida a cualquier direccin de paquetes TCP bajo los servicios remotos y locales de SMB
ms-ds (445), de nombre de servicio netbios-ns (137) y de sesin netbios-ssn (139).
- Denegar entrada y salida a cualquier direccin de paquetes UDP bajo los servicios remotos y locales de
datagrama netbios-dgm (138), de nombre de servicio netbios-ns (137) y de sesin netbios-ssn (139).
Y ahora vamos a intentar entender cmo funciona este conjunto de reglas. Las dos ltimas suponen la denegacin absoluta de
netBIOS entrante y saliente, TCP y UDP a cualquier direccin, mientras que las dos primeras definen unas excepciones para esos
mismos protocolos en el caso de tratarse de direcciones de nuestra lista de confianza. As, nadie podr acceder desde el exterior a
nuestro dominio netbios y ni tan siquiera si lograran enviar una peticin servira de algo, pues esta no podra salir a travs de nuestro
firewall a otro sitio que no fuera una direccin de confianza. Una regla importante que podra incluirse en este grupo, y que protege
nuestro sistema de cualquier ataque RPC aunque no estemos parcheados sera: Denegar entrada a cualquier direccin de paquetes
TCP al servicio local 135 y aplicacin Generic Host Process for Win32 Services (svchost.exe).
No voy a definir las reglas para todos los servicios existentes en un ordenador, est claro, pero ms o menos creo que se
comprende la idea de generalidad y excepcin, y de esta manera debemos definir las reglas para cualquier aplicacin de red. Es
importante que en las aplicaciones en las que sea posible, definamos un rango de puertos para permitir al firewall controlar de forma
ms eficiente el acceso a la red de esa aplicacin.
En Linux, IPtables nos permite definir reglas mucho ms complejas, mediante aplicacin condicional de polticas de filtrado de
datos. La pega es que la complejidad, al tratarse de comandos es mucho mayor, por lo que o bien se usa una interfaz grfica que
trabaje sobre IPtables, como las nombradas anteriormente, o bien se aplican las reglas generales de cualquier firewall con la sintaxis de
IPtables, que no voy a explicar porque sera muy largo y complejo. Podemos ver un pequeo script de bash de ejemplo para entender
cmo se estructuran:
#!/bin/bash
$IPT=/sbin/iptables
$IPT -A INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT
$IPT -A INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 ACCEPT
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --syn -j REJECT
$IPT -A INPUT -p udp -m udp -j REJECT
Esto es solamente un ejemplo, pero nos sirve pare ver la sintaxis de creacin de reglas. Para ms informacin, man iptables.
Es importante as mismo activar los logs para el firewall, o si se puede, activarlos solamente para determinadas reglas de las que
queramos hacer un seguimiento (programas que hayamos denegado de forma explcita, pings entrantes, escaneos de netbios, SMB o
RPC a nuestro sistema...). Os sorprenderais al ver la cantidad de acceso a red que realizan programas que no tendran porqu. ]:-D
Alertas y logs
Ya sabemos qu es y cmo trabaja un firewall, un IDS y un sistema hbrido. Ahora llega el momento de saber cmo obtener
informacin valiosa de ellos, adems de proteccin.
Las alertas son avisos, generalmente en tiempo real, que nuestro firewall o IDS nos manda (por pantalla, por correo electrnico...)
acerca de un evento determinado. Esta funcionalidad es muy comn hoy en da en prcticamente cualquier firewall de entorno
Windows. En Linux debemos usar algn tipo de IDS o implementacin especial de firewall basado en IPtables, pues las propias
IPtables no tienen sistema de alertas.
Strapping (Junio/2005) Pgina 22 de 84 Seguridad Informtica

Los logs son registros, generalmente en texto plano o html, que genera el firewall o IDS con los eventos importantes o destacados,
tales como intrusiones, ataques, y cualquier cosa que le hayamos configurado para que genere un registro.
Cul es la forma de presentarse una alerta en el sistema? Pueden ser muchas, aunque como todo en estos casos, por norma
general son bastante parecidas. Para probarlo voy a visitar un sitio web que realiza un escaneo de puertos online a tu PC
(http://www.auditmypc.com/). Despus de aceptar las normas y leer la alerta sobre la IP que va a figurar en el firewall en caso de
tenerlo activado, acepto. Obviamente el firewall est bien configurado y el escaneo no detecta nada abierto, pero el firewall salta con
una alarma por pantalla que informa de ciertos detalles acerca del evento. Vamos a verla y a entenderla:
Intrusion Type: Port Scan
Intruding IP: <IP de la web>
Time Of Event: <Fecha>
Ethernet Header Information:
Source Addr: <MAC de origen>
Dest Addr: <MAC de destino>
IP Header Information:
Source Addr: <IP de la web>
Dest Addr: <Mi IP>
Protocol: TCP
TTL: 109
TCP Header Information:
Source Port: 20
Dest Port: 886
Packet Data:
[HEX] [ASCII]
He copiado solamente algunos de los campos que genera la alerta y no siempre de forma literal, pero s manteniendo una
estructura para comprender cmo se genera la misma. Ahora vamos a ver qu significa cada uno:
- Intrusion Type: Port Scan -Nos indica el tipo de intrusin detectada (Port Scan, SYN Flood, ACK storm...) y da una pequea
descripcin del tipo de ataque.
- Intruding IP: <IP de la web> - IP de origen del ataque, en este caso la de la web que realiza el escaneo.
- Time Of Event: <Fecha> -Aqu se registra la fecha de deteccin del evento.
- Source Addr: <MAC de origen> -MAC de origen del escaneo. Debido a cmo est estructurada la arquitectura TCP/IP en Internet,
las cabeceras MAC son cambiadas por cada enrutador por el que pasa el paquete, por lo que la MAC de origen que figura en mi
registro es en realidad la del ltimo enrutador de mi ISP por el que pas el paquete antes de llegar. Puedo saberlo adems
porque el OUID de la MAC es el mismo, es decir, los 6 primeros dgitos hexadecimales son idnticos para el enrutador de mi
ISP y mi mdem (suministrado por el ISP).
- Dest Addr: <MAC de destino> -MAC de destino, en este caso la del dispositivo desde el que se origin la peticin web y por tanto
el que controla la IP que gener esa peticin. En este caso no es ninguna de mis tarjetas de red, sino el mdem que me
proporciona conexin a Internet.
- Source Addr: <IP de la web> - dem que Intruding IP.
- Dest Addr: <Mi IP> -IP de destino del ataque. En casos en los que el ordenador tenga varias IP's (no olvidemos que IP es una
direccin lgica), la IP de destino nos indica el dispositivo de red usado. No es lo mismo que sea la IP pblica (como en este
caso) que la IP de una red local, pues ayuda a saber el origen del ataque.
- Protocol: TCP - Protocolo que usa el paquete que gener la alerta. En este caso TCP.
- TTL: 109 -Para no complicar en exceso este dato, diremos que el TTL (Time To Live) es una medida que indica a los enrutadores
el tiempo de vida que le queda al paquete en la red. Es como una cuenta atrs antes de la destruccin por tiempo de espera del
paquete.
- Source Port: 20 - Puerto de origen del paquete generador de la alerta.
- Dest Port: 886 - Puerto de destino del paquete generador de la alerta.
- Packet Data: -Aqu podemos ver, bien en Hexadecimal o bien en ASCII, el contenido del paquete propiamente dicho. Hace falta un
conocimiento de redes muy profundo para comprender o generar paquetes de esta forma, pero generalmente, podemos extraer
informacin del propio paquete.
Por ltimo queda considerar las opciones sobre el curso de acciones a tomar que ofrece el firewall. Ofrece bloquear (bien por un
tiempo o bien permanentemente) el host de origen del ataque, o bien no bloquearlo. Aunque no bloqueemos el host, esto no quiere
Strapping (Junio/2005) Pgina 23 de 84 Seguridad Informtica

decir que un escaneo de puertos detecte algo, pues las reglas seguirn aplicndose. Bloquear el host supone una denegacin total de
cualquier tipo de conexin con esa IP, aunque sea por un programa que tiene permiso en la poltica del firewall. Es algo parecido a las
direcciones de confianza pero al revs. Ms de una vez no he podido enviar archivos a un amigo y luego he cado en la cuenta de que
por alguna pruebecilla que hubiramos hecho algn da, estaba en mi lista de hosts denegados. :-P
Para entender los logs, voy a generar adrede una entrada en el log de mi firewall. Por defecto mi firewall detecta, deniega y registra
los pings entrantes. Pues me voy a hacer ping a mi mismo, pero para evitar que el firewall detecte que me estoy haciendo ping desde
mi propia IP y lo ignore, voy a generar un paquete ping con una IP de origen falsa -133.133.133.133-(Igual que se puede ver el
contenido en hexadecimal, se puede generar para crear paquetes especiales). Ahora vamos a ver el log del firewall y concretamente
la entrada correspondiente a ese ping.
dd/mm/aaa hh:mm:ss
Traffic
133.133.133.133
Blocked Incoming ICMP EchoRequest
Source 133.133.133.133
Destination <Mi IP>
Ahora vamos a analizar esa entrada en el registro (que aunque en el log se genera una lnea seguida para cada entrada, he
preferido separar por campos).
- dd/mm/aaa hh:mm:ss -Hora de generacin del registro. Para evitar herir sensibilidades mejor que no veis a qu horas escribo
estas cosas... :-)
- Traffic - Tipo de evento (Traffic, Intrusion...) que gener la entrada del registro.
- 133.133.133.133 & Source 133.133.133.133 - IP que gener la entrada del registro.
- Blocked Incoming ICMP EchoRequest -Mensaje del generador de registros, en este caso informa del tipo de paquete filtrado.
- Destination <Mi IP> - IP de destino, la ma en este caso y que tambin he censurado.
Ahora ya sabemos interpretar los campos que aparecen en las alertas y los registros de nuestro firewall. Es muy importante ser
consciente de que aunque un firewall puede ser instalado y olvidado, dejando que se encargue de todo el filtrado, es mejor prestar
atencin a la valiosa informacin que puede facilitarnos. Teniendo una IP de origen, podemos consultar las bases de datos WHOIS y
averiguar cul es la empresa que est detrs de esa direccin, pues aunque una IP sea dinmica, todo el rango est registrado por un
ISP. En caso de tratarse de ataques graves o reiterados, esos datos pueden ayudarnos a ponernos en contacto con el ISP y que tome
medidas en el asunto.
Ataques e integridad en la mquina local
Ya conocemos el concepto de integridad en la mquina local. En el caso de los virus, la medida en la que la integridad de nuestra
mquina queda comprometida es ms concreta, tenemos datos y podemos acotar la magnitud de los daos. Un virus tiene unos
payloads ms o menos fijos que pueden guiarnos para saber cmo actuar. En el caso genrico de ataques detectados por un firewall o
un IDS, es muchsimo ms complicado.
Un firewall puede detectar multitud de eventos como ataques potenciales: un ping denegado, un intento de infeccin de un gusano
de red, escaneo de puertos, aplicacin que intenta acceder a recursos de red que le hemos denegado, ataque de denegacin de
servicio... Como vemos la variedad es enorme, y no podemos equiparar el peligro de un simple ping al de un gusano de red intentando
acceder a nuetro sistema, o un atacante intentando dejarnos sin conexin. El firewall puede darnos datos a travs de las alertas y de
los logs, como IP's, protocolos, aplicaciones... pero no valora la peligrosidad de las mismas, son todo eventos de igual magnitud para l.
Somos nosotros los encargados de valorar la peligrosidad de una alerta y actuar en consecuencia.
Muchas de las alertas que se configuran en un firewall (al menos yo mismo) son poco ms que anecdticas o estadsticas: registrar
los pings que te hacen, cuntas veces intenta acceder sin tu permiso el Reproductor Multimedia de Windows a Internet, cuntas
personas se aburren lo suficiente como para escanear la red en busca de equipos con recursos compartidos... Esas alertas hay que
saber valorarlas en su justa medida, sin alarmarse cada vez que veamos una entrada. Un escaneo de puertos reiterado a nuestra
mquina desde una misma IP s es un motivo de alarma mayor, y es en esos casos en los que toman realmente importancia los datos,
y cuando debemos comprobar que la integridad de nuestra mquina sigue intacta.
Tambin hay que tener en cuenta que un firewall no es infalible. Los programas tienen fallos y vulnerabilidades, y el software
especfico de proteccin no es menos. De vez en cuando se descubren vulnerabilidades para firewalls e IDS. Es conveniente estar al
tanto (la mejor forma es apuntarse a las listas de correo especficas de http://www.securityfocus.com/) y parchear o actualizar de vez en
cuando el software. Es as mismo importante darse cuenta que cuando un software est muy extendido, la gente se esfuerza ms en
encontrarle fallos: Zone Alarm es un buen firewall, pero an as cualquiera de los otros citados anteriormente es una mejor opcin, pues
Zone Alarm dispone de una versin gratuita que est muy extendida en Internet y para la que han aparecido en los ltimos meses
Strapping (Junio/2005) Pgina 24 de 84 Seguridad Informtica

varias vulnerabilidades, que dicho sea de paso, los programadores de ZoneLabs no parchean con demasiada celeridad. As mismo, hay
fallos que pueden dejar agujeros que expongan nuestro sistema a ataques. Lo mejor para luchar contra todos estos problemas es
estar informado. Hay una opcin ms a la hora de elegir firewalls: el Software Libre, que no slo IPtables es cdigo abierto cuando
hablamos de firewalls. En contra de lo que muchas corporaciones nos quieren hacer creer, el software de cdigo abierto no es menos
seguro que el software propietario, pues conocer el cdigo de un programa bien hecho no ayuda a desmantelarlo. Una buena opcin en
este campo es Portus (http://www.opensourcefirewall.com/), poderoso firewall que ha acumulado varios premios de seguridad y cuya
calidad es equiparable a cualquier otro de cdigo propietario.
As pues, podemos concluir diciendo que hay que vigilar tanto la actividad del firewall con sus alertas y logs, como estar al tanto en
noticias de seguridad y publicaciones de parches y actualizaciones. Es importante proteger nuestros ordenadores, y esa seguridad hoy
por hoy no tiene precio.
-Seguridad en redes de pares (p2p)
Las redes de pares, el peer-to-peer. Creo que habr poca gente hoy en da que no haya odo hablar, para bien o para mal, de las
redes p2p. Pero, qu es una red p2p?
Las redes de pares, tambin conocidas como redes peer-to-peer (p2p) son enormes redes de intercambio distribuido sustentadas
sobre la arquitectura de Internet. En su esencia las conexiones que tienen lugar son conexiones punto a punto, pero stas estn
organizadas segn una estructura que conforma esa red. Se trata de redes distribuidas, auto-estructuradas y con una gran
escalabilidad. Se distinguen en general dos tipos de redes de pares: Las redes p2p hbridas tienen un conjunto de hosts conectados y
unos pocos hosts que actan como servidores y facilitan la conexin entre los dems. Redes como la red eDonkey o la red Overnet se
encuentran entre las redes p2p hbridas. El otro tipo son las redes p2p puras, en las que todos y cada uno de los hosts acta como
cliente o servidor segn las necesidades, como por ejemplo en la red Freenet.
Decimos que una red p2p es distribuida puesto que se sustentan en un gran grupo de hosts (a un host de una red p2p se le
denomina peer), y la funcionalidad de la red es independiente a los fallos tcnicos que puedan acaecer en un segmento de la misma.
Decimos que una red p2p es auto-estructurada puesto que una arquitectura p2p genera su propia organizacin, bien sea a nivel de
host, donde cada host que adquiere permiso para convertirse en nodo de la red, adquiere inmediatamente igualdad con respecto a
todos los dems nodos, o a nivel de red, pues una gran red p2p puede ser segmentada a su vez en cualquier nmero de subredes
virtuales y un nodo puede funcionar independientemente de la disponibilidad de los dems peers, lo que proporciona una capacidad de
conectividad variable.
Decimos que una red p2p es escalable porque puede ser organizada de cualquier forma, con mxima segmentacin o unidad total,
adems de ser posible aumentar su tamao tanto como se quiera, puesto que la arquitectura no entorpece el crecimiento en ningn
momento.
Las redes p2p no son algo nuevo, aunque en su concepcin actual puede decirse que nacieron con Napster, que supuso una vuelta
de hoja en Internet. Napster cerr (la cerraron) y aunque ahora pretende reabrirse con otro concepto de red y conservando el nombre,
sent unas bases que daran lugar a las actuales redes p2p, apoyadas en otros pilares, como Audiogalaxy. Hoy en da las principales
redes que podemos encontrar son:
La red FastTrack. Heredera directa de Napster, esta red p2p hbrida tiene su ms conocido representante en Kazaa. Es, quiz, la
red p2p ms usada y conocida, y tambin la ms polmica en los ltimos tiempos gracias a la RIAA y sus constantes envites contra los
usuarios de esta red. Aunque principalmente se intercambia msica, tambin se intercambia todo tipo de material. Clientes: Kazaa
(http://www.kazaa.com/) en sistemas Windows; Gift (http://giftcurs.sourceforge.net/) en sistemas Linux y Mldonkey
(http://www.freesoftware.fsf.org/mldonkey/) en ambos sistemas.
La red eDonkey. Se trata de una de las principales redes hoy en da y aunque FastTrack la aventaja en trminos globales, en
Espaa est mucho ms extendida la red eDonkey. Se trata de una red p2p hbrida con un sistema de servidores que organizan a unos
clientes que intercambian los ficheros segn un sistema de crditos de forma que enviando ms se obtienen ms posibilidades de
descargar. En esta red se intercambian todo tipo de ficheros. Clientes: eDonkey 2000 (http://www.edonkey2000.com/), eMule
(http://www.emule-project.net/), eMule Plus (http://www.emuleplus.tk/) en sistemas Windows; Xmule (http://www.xmule.org/), aMule
(http://amule.sourceforge.net/) en sistemas Linux y Mldonkey (http://www.freesoftware.fsf.org/mldonkey/) en ambos sistemas.
La red Overnet. Esta red, nacida de los creadores de la red eDonkey, es parecida en su concepcin, aunque con una gran
diferencia: el sistema de servidores distribuidos es sustituido por un nico servidor que coordina a todos los clientes. Se trata de una red
p2p hbrida donde se comparten todo tipo de ficheros. Clientes: eDonkey 2000 hbrido (http://www.edonkey2000.com/), Overnet
(http://www.overnet.com/) en sistemas Windows.

Strapping (Junio/2005) Pgina 25 de 84 Seguridad Informtica

La red Kademlia. Esta red an est desarrollndose, y nace de mano de los creadores del cliente p2p ms famoso para redes
eDonkey: eMule. La nueva red convivir con la actual red eDonkey en los clientes eMule. Se trata de una red p2p hbrida con un nico
servidor, al estilo de la red Overnet, pero en este caso se trata de una red libre, tanto en tecnologa como en implementacin. Se
comparte todo tipo de ficheros. Clientes: eMule (http://www.emule-project.net/) en sistemas Windows.
La red OpenNAP. Intento de revivir el espritu Napster a travs de una red libre. Se trata de una red p2p hbrida. Clientes: WinMX
(http://www.winmx.com/)
en
sistemas
Windows;
Lopster
(http://lopster.sourceforge.net/)
y
Gnapster
(http://jasta.gotlinux.org/gnapster.html) en sistemas Linux.
La red WinMX. Esta red es otra de las herederas de Napster. Se trata de una red p2p hbrida principalmente orientada al
intercambio de msica. Clientes: WinMX (http://www.winmx.com/) en sistemas Windows y Loophole (http://www.loopholesoftware.com/)
en sistemas Linux.
La red Soulseek. Red heredera de Audiogalaxy. Se trata de una red p2p hbrida principalmente orientada al intercambio de msica,
aunque se encuentran igualmente otro tipo de ficheros. Clientes: Soulseek (http://www.slsknet.org/) en sistemas Windows; PySoulSeek
(http://www.sensi.org/%7Eak/pyslsk/) en sistemas Linux y Mldonkey (http://www.freesoftware.fsf.org/mldonkey/) en ambos sistemas.
La red Gnutella. Esta red p2p pura est orientada a intercambio de todo tipo de ficheros. Clientes: Morpheus
(http://www.morpheussoftware.net/) en sistemas Windows; LimeWire (http://www.limewire.com/), Qtella (http://www.qtella.net/), Mutella
(http://mutella.sourceforge.net/) en sistemas Linux y Mldonkey (http://www.freesoftware.fsf.org/mldonkey/) en ambos sistemas.
La red Bittorrent. Esta red de nueva aparicin tiene una concepcin distinta del trmino cliente, puesto que no existe uno tal y como
los entendemos, compartes cuando descargas. Se usa para todo tipo de ficheros y hoy en da est creciendo muy rpido. Se trata de
una red p2p hbrida. Clientes: BitTorrent (http://bitconjurer.org/BitTorrent/) en sistemas Windows; Snark
(http://freshmeat.net/projects/snark/) en sistemas Linux y Mldonkey (http://www.freesoftware.fsf.org/mldonkey/) en ambos sistemas.
La red Freenet. Se trata de una nueva y revolucionaria red p2p pura totalmente annima, con conexiones encriptadas y
descentralizacin total de nodos. Es, definitivamente, el futuro del p2p. Clientes: Freenet (http://freenet.sourceforge.net/) para sistemas
Windows y Linux.
Como vemos, existe una enorme variedad de redes p2p donde elegir, as como clientes para todas ellas bajo cualquier plataforma.
Adicionalmente, casi cualquier cliente de Linux cuyo cdigo est liberado, puede ser compilado bajo Windows, y cualquier cliente nativo
de Windows puede ser usado desde Linux con herramientas como Wine, WineX o VMware. Existen as mismo clientes como Mldonkey
cuya filosofa es aceptar el mayor nmero de protocolos posibles.
Hablando de seguridad en redes p2p, podemos distinguir entre tres tipos: fallos o vulnerabilidades en el software, que pueden llegar
a comprometer el sistema; virus que se distribuyen por redes p2p, como los que nuestros simpticos amigos de la RIAA introducen en
la red FastTrack; y por ltimo ataques a la privacidad a los usuarios de la red, bien sea por una monitorizacin de datos o por una
intercepcin de las conexiones.
En el caso de fallos y vulnerabilidades del software usado, no hay ms que estar al tanto de las actualizaciones de dicho software a
travs de las pginas web de los desarrolladores, y en caso de detectase una vulnerabilidad an no parcheada, actuar segn se
recomiende en los sitios dedicados a la seguridad informtica. Para los virus que circulan por ciertas redes p2p, especialmente la red
FastTrack, no hay ms remedio que remitirnos a la parte de virus: mantener el software antivirus convenientemente actualizado y alerta
a los ficheros que descarguemos de la red.
El caso de los ataques a la privacidad es otra historia, y segn estn las cosas hoy por hoy, algo a tomarse muy en serio. No voy a
entrar a discutir quin nos espa y porqu, pero est ms que demostrado que las redes p2p estn siendo espiadas. Por suerte hay
muchas cosas que podemos hacer. Lo principal es obtener una lista de IP's y rangos de IP's que sean potencialmente peligrosas para
la privacidad de nuestras comunicaciones. En cualquier foro dedicado al p2p ser sencillo encontrar buenas listas actualizadas.
Despus, tenemos tres formas de protegernos:
1) En primer lugar podemos usar nuestro propio firewall para aadir reglas especficas que denieguen cualquier acceso a esos
rangos de direcciones IP. Es efectivo, aunque introducir listas con cientos de entradas puede resultar tedioso. No obstante
tambin pueden encontrarse archivos de reglas con los rangos introducidos para los firewalls ms usados (he visto listas para
Kerio Personal Firewall).
2) La segunda opcin depende de la red y el cliente que usemos, pero ya est comenzando a ser una caracterstica habitual la
inclusin de un pequeo motor de filtrado de direcciones en los clientes p2p; eMule, eMule Plus, Xmule, aMule y otros clientes
ya incorporan el sistema ipfilter.dat para este propsito. Existen muchas listas de filtrado por la red que son actualizadas casi
diariamente.

Strapping (Junio/2005) Pgina 26 de 84 Seguridad Informtica

3) La ltima opcin, y quiz la ms conveniente por su compatibilidad con cualquier red y cliente p2p, es el uso de herramientas
especficas de filtrado de direcciones. Estas herramientas funcionan de forma similar a un firewall, pero son ms especficas en
su finalidad: solamente filtran direcciones o rangos de direcciones. Normalmente se aconseja su uso de forma temporal,
mientras se tenga activado el sistema p2p. Los programas de este tipo ms famosos son PeerGuardian
(http://www.peerguardian.net/) y P2P Hazard (http://adkiller.net/p2p). Cualquiera de ellos dos permite actualizar su base de
datos de direcciones desde ficheros que podemos descargar sencillamente a travs de Internet o desde el propio cliente.
Gracias a estas pequeas utilidades, podemos estar ms seguros en el uso de redes p2p.
Finalmente hay algunos consejos breves y simples, pero igualmente importantes para salvaguardar nuestra intimidad en redes p2p.
Es importante en las redes que permitan el uso de nicks o seudnimos, no usar bajo ninguna circunstancia nuestro nombre real o
nuestro nick habitual. Adems es conveniente cambiar con frecuencia este alias. Tambin es importante, en los clientes que lo
soporten, denegar por completo la posibilidad de que sea vista nuestra lista de ficheros compartidos, ni tan siquiera permitirla a nuestra
lista de amigos. Por ltimo lugar, en los clientes que lo permitan, es importante no usar nunca los puertos por defecto para realizar las
conexiones a la red p2p, y cambiarlos con frecuencia, como mnimo una vez a la semana.
Siguiendo estos consejos, es posible sentirse seguro en redes p2p.

3. SEGURIDAD EN LAS COMUNICACIONES


-Introduccin: La privacidad, bien escaso
Aunque sea difcil de aceptar, hoy en da nuestra privacidad no est asegurada. A lo largo de estos das hemos podido comprender
mejor la importancia de la seguridad en Internet y cmo sta ha evolucionado a lo largo de sus aos de existencia, y es por ello que
podemos entender mejor nuestra situacin en la misma.
Al principio de la existencia de Internet, la privacidad no era una preocupacin de los usuarios: confiaban en sus leyes y en la
proteccin de sus ISP. Internet ha crecido en magnitud y en importancia, y los datos que viajan por sus lneas lo han hecho
igualmente... pero nuestros ISP -con sistemas de proxy cach dudosos y unos servicios muy deficientes-y nuestras leyes abanderadas
por la infame LSSI han evolucionado en el sentido contrario. As pues, quin nos garantiza nuestra privacidad hoy da? La respuesta
es sencilla: como en el caso de la seguridad, debemos ser nosotros mismos los que nos la procuremos.
Existen mtodos seguros de trabajar con informacin en web, y podemos comprar con nuestros nmeros de tarjeta de crdito,
consultar el saldo de nuestra cuenta de ahorros o el expediente en nuestra universidad. Pero, sabemos realmente en qu consiste esa
seguridad? En muy pocos casos. El correo postal cada vez se usa menos, y los correos electrnicos han aumentado su volumen, a la
par que la informacin contenida en los mismos es ms sensible. Nos sentimos seguros usando servicios de correo electrnico, pero
muy poca gente comprende los riesgos de esas comunicaciones o las posibles opciones para disminuirlos que tenemos al alcance de
nuestra mano.
Partimos de la base de que nada es absolutamente seguro o absolutamente inseguro. Todo es relativo, y es por ello que debemos
comprender cundo se hace necesario usar tcnicas criptogrficas en el correo electrnico o no, cundo aceptar o rechazar un
certificado de seguridad de una pgina web, hasta qu punto se pueden obtener datos nuestros en una simple visita web...
Comprender y valorar esos riesgos y actuar segn las circunstancias es un da a da en la red de redes, y debemos saber
valorarlos, pero tambin debemos conocer qu podemos hacer para mitigar ese halo de ausencia de privacidad que rodea todo lo
concerniente a Internet.
Qu motivos tenemos para querer esa privacidad? Supongo que cada uno tiene los suyos, pero creo que el ms importante es
que tenemos derecho a ella, y en mi opinin eso nos da el deber de defenderla. Merece la pena.
-Spyware: qu es y cmo evitarlo
Spyware, un concepto relativamente joven, pero que se ha ganado una merecida muy mala fama en su corto tiempo de existencia.
Pero, qu es el spyware? Es tan peligroso? Qu podemos hacer para evitarlo?
Denominamos spyware a cualquier tecnologa que sirva para recolectar informacin sobre una persona u organizacin sin su
conocimiento. Hay que distinguir sin embargo el spyware, de lo que es el adware y el badware, pues usualmente se utilizan como
sinnimos estos tres trminos y no lo son en absoluto.

Strapping (Junio/2005) Pgina 27 de 84 Seguridad Informtica

Entendemos por adware cualquier tipo de software que incluya banners o carteles publicitarios con fines de financiacin. Puede
ocurrir no obstante que esos carteles lleven algn tipo de spyware a su vez, en cuyo caso ya no encajaran en la definicin de adware, y
seran considerados un spyware en toda regla.
Se denomina badware a cualquier tecnologa destinada a controlar o hacer dao a un usuario. Esta definicin es muy difusa, pues
realmente este trmino no es muy usado, y el software denominado badware resulta extremadamente difcil de erradicar, y algunos ni
tan siquiera residen en nuestra mquina (como los misterios de Echelon y Carnivore).
Cabe resear que el problema del spyware es prcticamente exclusivo de sistemas Microsoft Windows, pues el spyware es
normalmente diseado para los mismos. En sistemas Linux el mximo problema que podemos tener son determinadas cookies
sospechosas.
Una vez comprendida esa diferencia, pasemos a centrarnos en el spyware. Como ya hemos dicho, es un tipo de software destinado
a obtener informacin de un usuario sin su consentimiento. Antes de nada, conviene conocer las formas en las que este tipo de
programas entra en nuestro sistema para poder prevenirlas:
a) A travs de software instalado en nuestro sistema. Usualmente se trata de software shareware (software de evaluacin),
freeware (que ya deja de resultar tan free) o adware (ya comentado) que incluyen funciones, programas o scripts subyacentes
y que constituyen el propio spyware. Este tipo de programas son comnmente descargados de Internet con total confianza. El
ejemplo ms comn es el software GATOR.
b) A travs de correo electrnico. Similar al anterior, solo que en lugar de tratarse de software, se trata de algn fichero o archivo
que contiene oculto el spyware. Tambin pueden tratarse de mails que aprovechen vulnerabilidades concretas de algn cliente
de correo para introducirse de forma silenciosa en el sistema.
c) A travs de redes p2p. Hoy en da un mtodo en auge, debido a los fallos de redes como FastTrack (Kazaa) que han dado lugar
a un caldo de cultivo compuesto por virus, troyanos, spyware... Estos medios resultan ideales debido a la enorme difusin de
estas redes, y a que es difcilmente denunciable la introduccin de spyware dado el poco afecto que tienen las autoridades al
p2p.
d) A travs de webs visitadas. Generalmente mediante cookies sospechosas o mediante vulnerabilidades del navegador que
permitan la implantacin del spyware (tpicamente vulnerabilidades de Internet Explorer).
Obviamente pueden darse otras formas de propagacin de spyware, pero son muchsimo menos frecuentes, y las principales
fuentes del mismo son las cuatro anteriores.
Ahora es el momento de explicar un trmino aparecido arriba, el trmino cookie. HTTP (Hyper Text Transfer Protocol) es el
protocolo encargado de la gestin y visualizacin de pginas web. Este protocolo, a diferencia de otros, es un protocolo sin estado, es
decir, cada vez que se sirve una peticin, se cierra la conexin y el servidor olvida todo dato del usuario. Esto supone una ventaja
porque elimina carga del servidor en favor del cliente, pero supone un problema porque el servidor no es capaz de recordar datos del
cliente, por lo que mantener una sesin en un foro o ver una web segn el estilo que queremos sera imposible.
Para paliar este problema se idearon las cookies, archivos de texto plano que almacenan informacin acerca de nuestra relacin
con distintos servidores webs para poder ofrecrsela al mismo al iniciar una conexin y que ste nos recuerde. A primera vista, eso de
almacenar informacin puede sonar a spyware, pero no: las cookies siempre pueden ser controladas, aceptadas, rechazadas,
consultadas y modificadas por un usuario. Hay unas sencillas reglas que siguen las cookies: no pueden ocupar ms de 4 Kb, un
servidor slo puede leer las que l envi, cada servidor o dominio slo puede almacenar 20, y slo puede haber un total de 300. As a
bote pronto alguno pensar que si un servidor puede escribir esa informacin de memoria de usuario en nuestro disco duro, podra
escribir lo que quisiera, pero para tranquilidad vuestra os dir que no, puesto que las cookies son escritas al disco por el navegador,
nunca por el servidor. Esto es a grandes rasgos lo que necesitamos saber acerca de las galletitas.
Ahora bien, porqu algunas cookies son consideradas spyware? Porque muchas de ellas almacenan informacin que no controla
ninguna sesin, contador o informacin de relacin usuario-servidor. Pongamos por ejemplo la empresa de publicidad DoubleClick.
Prcticamente todo el mundo tiene cookies suyas sin haber visitado jams su servidor. Esto es debido a que DoubleClick gestiona los
banners publicitarios de muchsimos sitios web, y estos banners se sirven directamente desde su servidor. Al servirse, se encargan de
almacenar de paso informacin acerca de nuestros hbitos de navegacin en Internet y usan esa informacin para personalizar la
publicidad que recibimos en nuestro navegador. Puede parecer til y con sentido, pero qu hay de nuestra privacidad? Pues eso.
La informacin que el spyware toma de nuestro sistema suele ir orientada a la recopilacin de estadsticas de hbitos de
navegacin para la personalizacin de banners y pop-ups, obtencin de direcciones de correo electrnico para envo de spam (correo
generalmente publicitario que es enviado sin autorizacin ni peticin del usuario), o incluso obtencin de datos personales sensibles
para estadsticas, tales como edad, sexo, empleo, remuneracin...
Hay otro tipo de spyware menos notorio pero ms peligroso y sigiloso que es el que las grandes empresas de software incluyen de
forma silenciosa en sus productos para controlar su uso y difusin. Es notorio el caso de varias funciones cuando menos sospechosas
Strapping (Junio/2005) Pgina 28 de 84 Seguridad Informtica

del sistema operativo Microsoft Windows, y algunos programas como Windows Media Player o Windows Messenger. Slo necesitamos
echar un vistazo al log del firewall si denegamos la conexin a estos programas, o echar mano de un oportuno sniffer... De hecho
algunas de estas funciones sospechosas del sistema Windows y sus programas estn incluidas en las bases de datos de programas
antispyware. Para evitar estos contratiempos con el sistema Windows XP (donde ms se pone de manifiesto), recomiendo la descarga
y utilizacin de un sencillo programa gratuito llamado XP-Antispy (http://www.xp-antispy.org/).
Es hora de hablar de las precauciones a tomar para salvaguardar nuestra privacidad del infame spyware:
- Instalacin de un sofware especfico especializado en la deteccin y eliminacin de spyware, actualizacin peridica, as como
revisin completa del sistema cada cierto tiempo. Los programas especializados en esta tarea ms conocidos son:
- Spybot Search & Destroy (http://security.kolla.de/): Se trata de uno de los mejores de su clase. Es un programa
completamente gratuito y cuya base de datos se actualiza con frecuencia para estar siempre al da. Posee un sistema de
vacunacin del sistema contra elementos peligrosos. Es mi favorito y el que recomiendo a todo el mundo.
- Lavasoft Ad-aware (http://www.ad-aware.com/): Es, quiz, el ms famoso entre este tipo de software. Incluye una
poderosa base de datos que se actualiza con frecuencia.
- Spyware Blaster (http://www.wilderssecurity.net/spywareblaster.html): No se trata de una herramienta de escaneo y
deteccin, sino que se orienta a la prevencin y proteccin contra el spyware.
- SpywareGuard (http://www.wilderssecurity.net/spywareguard.html): Herramienta de proteccin en tiempo real contra el
spyware. Funciona de manera similar a un antivirus, con alertas en tiempo real.
- BPS Spyware Remover (http://www.bulletproofsoft.com/): Otro gran software en su clase, si bien ha tenido problemas
legales por unas bases de datos de spyware robadas a Spybot Search & Destroy.
- SpyCop (http://www.spycop.org/): Uno de los primeros, aunque hoy por desgracia no es tan comn ni tan bueno como
las dems opciones.
- Evitar el uso del navegador Microsoft Internet Explorer, debido a sus constantes fallos de seguridad y la consiguiente exposicin
de nuestra mquina, as como su deficiente sistema de gestin de cookies. Es recomendable el uso de un navegador que permita
una gestin ms potente y personalizada de cookies. Una gran opcin es Mozilla Firebird (http://www.mozilla.org) que adems es
software libre y gratuito.
- Restringir las cookies y permitirlas nicamente a los sitios de confianza en los que sea imperiosamente necesario su uso (webs en
las que queramos poder realizar uso de sesiones y usuarios).
- Evitar la descarga de ficheros de Internet cuando su procedencia sea dudosa (al igual que ocurra con las precauciones contra los
virus).
- Asegurarse que el software instalado en el sistema no posee spyware o elementos que atenten contra nuestra privacidad (es muy
recomendable pare evitar este tipo de incidentes el uso de software libre).
-Privacidad en Internet
Por el mero hecho de navegar por Internet, estamos revelando gran cantidad de informacin sobre nosotros mismos, desde la IP e
ISP hasta nuestro navegador y sistema operativo. Estos datos pueden parecer inofensivos, pero bajo ciertas circunstancias y en
determinados servidores, el revelar por ejemplo el sistema operativo y el navegador constituye un gran riesgo. Este dato viaja en una
cabecera (User Agent) y tiene ms o menos este aspecto para distintos valores: IE 6.0 en Windows XP, Mozilla/4.0 (compatible; MSIE
6.0; Windows NT 5.1); Netscape 4.8 en Windows XP, Mozilla/4.8 [en] (Windows NT 5.1; U); Opera 7.21 en Windows XP, Opera/7.21
(Windows NT 5.1; U) [en]... Es conveniente el uso de un sistema operativo que permita, bien por si mismo o bien mediante plugins, la
modificacin de este dato para no revelar ninguna informacin al respecto. Yo por ejemplo al navegar dejo como valor de esa cabecera
mi nick, Death Master.
El tema de la IP es algo ms complicado, y es hora de hablar de los Proxys.
Uso de proxys annimos
La definicin de proxy es muy general, pues existen muchos tipos de conexiones proxy: cach en disco, un firewall (s, tambin
puede ser un proxy), control de accesos, pasarela de protocolos seguros... y no siempre en Internet. Puede estar perfectamente en LAN
o incluso en un equipo localmente. As pues, definiremos como proxy una tecnologa, fsica o lgica, que acta como pasarela de
informacin. Ahora vamos a definir lo que normalmente se entiende como proxy: Sistema capaz de actuar como puente en la
conexin entre la mquina local y un servidor remoto. Y qu diferencia hay entonces con los distintos routers que atraviesa una
conexin hasta llegar a un servidor? Que estos son conexiones fsicas impuestas por la topologa de la red, mientras que en el caso de
los proxys son conexiones lgicas que normalmente son elegidas por el usuario. Y digo normalmente porque ltimamente las ISP se
dedican a imponer un sistema de proxy cach transparente entre los usuarios e Internet, con el fin de actuar como una inmensa cache
de disco y ahorrar ancho de banda en las conexiones a otros servidores, al menos esa es la teora...
Ahora que tenemos una idea de qu es un proxy en su acepcin ms comn... llega la hora de entender qu diferencia existe entre
un proxy normal y uno annimo. Un proxy normal se interpondr entre nosotros y la mquina a la que nos conectemos, y aparecer su
Strapping (Junio/2005) Pgina 29 de 84 Seguridad Informtica

IP como origen, pero la nuestra aparecer como redireccionada a travs de l (campo X-Forwarded). Un proxy annimo est
especficamente diseado para que nuestra direccin IP no pueda ser conocida por la mquina a la que nos conectamos. Esto es muy
til para poder navegar de forma annima: al no tener nuestra IP, tampoco pueden averiguar con un simple whois el ISP y ms datos
de importancia. Si adems cambiis el User Agent como recomend (y para lo cual recomiendo nuevamente Mozilla), el anonimato a la
hora de visitar webs es mucho mayor.

Dnde encontrar listas con proxys annimos que podamos usar? Hay multitud de webs con listas actualizadas, y aqu dejo unas
cuantas:
http://www.multiproxy.org/
http://www.atomintersoft.com/products/alive-proxy/proxy-list/
http://www.cyervonet.com.ar/misc/proxys.php
http://www.proxybench.com/proxy/proxylist.asp
http://www.samair.ru/proxy/fresh-proxy-list.htm
Existen tambin programas para buscar proxys de forma manual, como YAPH (Yet Another Proxy Hunter) que podemos encontrar
en http://yaph.sourceforge.net/ y que usa el motor de NMAP (http://www.insecure.org) para buscar proxys. Slo para plataformas Unix.
;-)
Es importante sealar que no siempre un proxy supuestamente annimo lo es, pues en algunas ocasiones al usar uno de ellos y
comprobar si aparecemos como redireccionados en el campo X-Forwarded (por ejemplo a travs de http://www.cualesmiip.com/) nos
encontramos con que se trata de un proxy normal. Esto es debido a que estos proxys aparecen y desaparecen como la espuma,
algunos de ellos son establecidos de forma poco legal (por ser suaves) y muchas veces no son lo que parecen ser. As pues es
importante comprobar el supuesto anonimato usando el proxy (en el men de opciones de conexin de cualquier navegador
encontramos un campo para el uso de proxys) y asegurarse de que hace lo que debera.
Aunque un proxy annimo es un mtodo suficientemente seguro para no dejar huellas en un servidor web al visitarlo, ese servidor
puede almacenar datos de sus conexiones aunque no se las muestre al servidor conectado, con lo cual ese anonimato no es ms que
aparente. Algunos proxys guardan logs de sus conexiones (la mayora) y otros no los guardan. As pues la mejor opcin para navegar
de una forma realmente annima es el uso de cadenas de proxys y cascadas de proxys.
En realidad aunque se guarden logs, muchas veces estos servidores estn establecidos en pases con leyes informticas bastante
permisivas e incluso inexistentes. Esto unido a que algunos de esos pases no mantienen relaciones muy cordiales con occidente ni sus
empresas, aumenta la dificultad de acceso a sus logs. Por ltimo, una cadena suficientemente grande supone enlazar gran cantidad de
estos servidores, por lo que poca gente tendr dinero y ganas como para ir de un pas a otro preguntando por unos logs que quiz no
existan o que no se les facilitarn (pero hay que tener presente que s hay gente dispuesta a hacerlo y que dispone de los medios). Si
las conexiones mediantes proxys annimos no son para fines ilegales, nadie se molestar en intentar seguir el rastro, en caso contrario
lo perseguirn y lo encontrarn.
Una cadena de proxys sita un proxy detrs de otro, cada uno se conecta al siguiente, y el ltimo se conecta al servidor, con un
camino definido que resultara sencillo de seguir a la inversa en el caso de tratarse de proxys que almacenen logs, al menos en teora.
Si alguno de ellos no almacena logs, se rompera esa cadena inversa y sera prcticamente imposible (que no totalmente) seguir el
rastro de esa conexin.
Cadena de proxys:

Strapping (Junio/2005) Pgina 30 de 84 Seguridad Informtica

Una cascada de proxys es una lista de proxys en la que al ser lanzada la peticin, sta atraviesa aleatoriamente uno de ellos y
despus contina su camino en la red. Usualmente su uso se da en cadenas de cascadas de proxys, uno de los mtodos ms seguros
y annimos de conexin.
Cadena de cascadas de proxys:
Cascada 1

Cascada 2

Cascada 3

Cascada 4

Mediante este tipo de cadenas de cascadas, cada peticin atraviesa todas las cascadas pero un proxy aleatorio en cada una de
ellas, lo que tiene dos consecuencias principales: se genera una cantidad de caminos distintos enorme para cada peticin (y una sesin
HTTP, por ejemplo, contiene muchas peticiones), y la IP que aparece en el servidor final es una aleatoria perteneciente a la ltima
cascada, con lo que cada peticin que generemos se har con una IP distinta.
El software que permite crear a mano cadenas no suele tratar cadenas de cascadas debido a la complejidad de las mismas, pero s
nos permite la creacin de cadenas de proxys normales. En sistemas Windows la forma ms fcil de realizar cadenas y anonimizar una
conexin es mediante los programas SocksChain (http://www.ufasoft.com/socks/), que permite crear las cadenas de proxys
propiamente dichas y SocksCap (http://www.socks.permeo.com/Download/SocksCapDownload/index.asp) que permite interceptar la
conexin de un programa que no admita uso de proxys y obligar a la conexin a pasar por SocksChain. El uso de ambos programas es
muy sencillo e intuitivo, y como en la mayora de los casos acta como un proxy local que queda a la escucha y al que tenemos que
conectarnos (127.0.0.1:xxxx). En sistemas Linux contamos con un programa llamado ProxyChains (http://proxychains.sourceforge.net/)
que realiza ambas funciones: creacin de cadenas de proxys e intercepcin de llamadas TCP.
Existen tambin programas especializados en la automatizacin de estas tareas mediante la creacin y gestin de las cadenas. Son
mucho ms sencillos de usar y permiten (algunos) el uso de cadenas de cascadas de proxys, pero generalmente estn gestionados por
alguna empresa, y eso de por s puede ser ya un punto en contra de la privacidad que no supone la creacin a mano. Cada uno puede
decidir. Para sistemas Windows contamos (entre otros) con MultiProxy (http://www.multiproxy.org/), uno de los primeros pero hoy en da
no muy usado y Stealther (http://www.photono-software.de/Stealther/), en mi opinin el mejor sistema de automatizacin, puesto que es
capaz de gestionar cadenas de cascadas de proxys combinadas con nodos de encriptacin (de criptografa hablaremos ms adelante).
Mi nica pega para este software es que es exclusivo de Windows. As mismo contamos con JAP
(http://anon.inf.tudresden.de/index_en.html), un software de anonimato que al funcionar bajo Java (un lenguaje de programacin) es
compatible con Windows, Unix, Linux, Mac, OS/2...
La ltima opcin disponible para anonimizar la navegacin es usar sitios webs que redireccionan las peticiones, de forma que desde
el propio navegador y sin uso de software alguno puedes navegar sin dejar tu IP. Las pegas a este tipo de anonimato son muchas,
como que slo lo es respecto al servidor puesto que estas webs registran las conexiones, no aceptan el uso de sesiones a travs de
protocolos seguros, desactivan todo el java o javascript, no aceptan cookies... Pero an as a veces son tiles, por lo que indico algunos
ejemplos bastante conocidos: @nonymouse (http://anonymouse.ws/anonwww.html), Anonymizer (http://www.anonymizer.com/),
beHidden! (http://behidden.com/).
Protocolos seguros y certificados de seguridad
A veces cuando navegamos por Internet necesitamos intercambiar informacin sensible con un servidor. En este caso no nos
preocupa nuestro anonimato, si se ve o no la IP, o el User Agent... en este caso nos interesa que esos datos viajen por un canal de
comunicacin seguro, de forma que el servidor y nuestra mquina puedan verlos pero no el resto de Internet. Esto se logra mediante
los protocolos de seguridad.
Existen multitud de plataformas seguras para la comunicacin en diversos protocolos: SHTTP (Secure Hypertext Transfer Protocol),
SSL (Secure Socket Layer), TLS (Transport Layer Security), IPSec... Nosotros hablaremos brevemente de SHTTP y de SSL. Una
explicacin profunda de ambos protocolos podra perfectamente ocupar un mnimo de cincuenta hojas de texto, por lo que trataremos
simplemente de entender cmo funcionan, sin entrar en detalles. Pero antes de entrar a una descripcin ms profunda de protocolos
seguros, debemos hablar un poco de criptografa para poder entender conceptos como algoritmo de encriptacin, firma digital,
criptografa simtrica o asimtrica...

Strapping (Junio/2005) Pgina 31 de 84 Seguridad Informtica

La palabra criptografa deriva del griego kriptos (oculto) y graphos (escribir): el arte de escribir mensajes ocultos. La criptografa fue
considerada un arte hasta que Shannon public en 1949 la Teora de las comunicaciones secretas [SHA49], cuando empez a
considerarse como una ciencia aplicada que se relaciona con otras como la estadstica, la teora de nmeros, la teora de la informacin
y la teora de la complejidad computacional.
Entendemos como criptografa la ciencia que sirvindose de clculos matemticos y computacionales, es capaz de transformar un
mensaje legible (que denominamos texto en claro) en otro que slo sea comprensible por determinadas personas (que denominamos
criptograma). Esta transformacin se basa en unos fundamentos y procedimientos de aplicacin que denominamos criptosistema. En
base a ese criptosistema se desarrolla un algoritmo (entendiendo algoritmo como especificacin unvoca de los pasos a seguir para
realizar una actividad) que detalla la forma de aplicar estos cambios. Este algoritmo se denomina algoritmo de encriptacin.
La criptografa se complementa con el criptoanlisis, otra rama de la ciencia que estudia la tcnica de descifrar textos encriptados
sin autorizacin para ello. El conjunto de criptografa y criptoanlisis es lo que se conoce como criptologa.
La criptografa clsica usaba mtodos como la sustitucin o la trasposicin para alterar los mensajes, pero con la llegada de las
mquinas de clculo (y no slo los ordenadores como los entendemos hoy) esto cambi. Se hizo necesario aumentar la complejidad de
los criptosistemas, para lo cual se ide un sistema mediante el cual una palabra o conjunto de caracteres implementaba un mecanismo
de sustitucin o permutacin que complementaba al algoritmo de encriptacin. Estas palabras se denominan claves de encriptacin, y
la cantidad de caracteres que poseen se denomina longitud de la clave. A mayor longitud de la clave, mayor complejidad del
criptosistema.
Un ejemplo aplicado de esta teora sera la aplicacin de los conceptos de la criptografa en los sistemas informticos (que al fin y al
cabo es lo que nos interesa).
-

El texto en claro podra ser cualquier informacin (binario, hexadecimal...) que fuera legible.
El criptograma sera cualquier informacin encriptada.
El criptosistema sera el conjunto de operaciones computacionales y matemticas que realizan los ordenadores.
El algoritmo de encriptacin es cualquiera debidamente implementado en un sistema informtico. Ms adelante trataremos
los diversos algoritmos de encriptacin.
La clave de encriptacin es cualquier informacin que controla la unicidad de un sistema criptogrfico y lo distingue de los
dems que se basan en el mismo algoritmo.
La longitud de la clave es el tamao de esa informacin, y se mide en bits.

Queda algo por ver. Una clave de encriptacin tal y como se ha explicado antes sirve para encriptar y desencriptar una informacin
mediante un determinado algoritmo. Esta clave tradicional se denomina clave simtrica. Por contra, existe otro sistema que idearon
los matemticos Diffie y Hellman en 1976 [DIH76] y que denominamos criptografa asimtrica. La criptografa asimtrica es un tema
complejo que trataremos adecuadamente ms tarde, pero de momento para que entendamos los protocolos seguros baste decir que
estos sistemas usan dos claves de encriptacin: una denominada clave pblica que permite la encriptacin de la informacin y otra que
denominamos clave privada y que permite la desencriptacin. En estos sistemas existe un concepto nuevo denominado firma digital, y
que es procedimiento que encripta a la clave privada un hash de algn tipo de informacin, de forma que con la clave pblica pueda ser
desencriptado y comprobado por comparacin . Ahora aparcamos para ms adelante la criptografa asimtrica y las firmas digitales y
empezamos con los protocolos seguros. ;-) El protocolo SHTTP (Secure Hypertext Transfer Protocol) naci de la mano de Enterprise
Integration Technologies (EIT) y es una versin modificada del HTTP normal que incluye caractersticas de seguridad. Esta extensin
trabaja debajo del HTTP y se ubica en la capa de aplicacin del modelo TCP/IP. Las ampliaciones de SHTTP comprenden la
codificacin de documentos web as como soporte para firmas digitales, y la posibilidad de que el cliente verifique la integridad de un
mensaje mediante elMAC (Message Authentication Code).
SHTTP gestiona las negociaciones entre cliente y servidor mediante texto formateado. Este texto tienedos partes: el cuerpo del
mensaje (firmado y codificado) y la cabecera que contiene los datos sobre cmo se ha codificado e instrucciones para que el cliente
desencripte la informacin. Para crear el mensaje, el servidor integra las preferencias de seguridad del cliente con las suyas, es decir, si
el servidor acepta varios sistemas de codificacin como PKCS-7 (Public Key Codification Standard 7), RSA (Rivest-Shamir-Adleman),
DH (Diffie-Hellman)... y el cliente tiene como primera preferencia el sistema PKCS-7, ste ser el sistema de cifrado usado.
En primer lugar tiene lugar el proceso de intercambio de las claves a usar. Existen varias formas de que esto ocurra:
- Intercambio de claves fuera de banda: El servidor y el cliente han acordado e intercambiado de antemano y por otro canal las claves
de sesin. En este caso no tiene lugar ningn nuevo intercambio de claves y se inicia la sesin SHTTP.
- Intercambio de claves en banda: El cliente enva al servidor su clave pblica. El servidor comprueba su lista de sistemas
criptogrficos para comprobar si puede ser procesado, en cuyo caso encripta la clave de sesin con la clave pblica del usuario y se
la enva, dando lugar el inicio de sesin con la clave de sesin. En caso de que el servidor no pueda procesar la clave pblica del
cliente, se da por finalizada la conexin.
- Claves criptogrficas predefinidas: Claves RSA o Krb prefijadas que sirven para la codificacin de la clave de sesin a utilizar
Strapping (Junio/2005) Pgina 32 de 84 Seguridad Informtica

As mismo ambos hosts pueden y deben verificar la integridad del mensaje y la autenticidad del remitente. La integridad del
mensaje se comprueba mediante la comprobacin del valor hash relacionado con la clave (ms adelante hablaremos de las funciones
criptogrficas de tipo hash). La autenticidad del remitente se comprueba mediante los pertinentes algoritmos de firma digital que
implementa SHTTP. Estas medidas de seguridad nos permiten comprobar que nadie haya modificado el documento en el canal de
transmisin.
La parte ms importante de un paquete SHTTP es su cabera MIME (Multi-prupose Internet Mail Extensions). MIME es un sistema
de codificacin (es importante no confundir codificacin con encriptacin: codificacin es un medio para representar la informacin, en
este caso texto codificado en bits) que implementa tanto BASE64 como UUENCODE (Unix to Unix Encode). Veamos los campos que
contiene esta cabecera:
CAMPO

DATOS Y ALGORITMOS

Dominios privados SHTTP

Especifica la clase de algoritmos de cifrado, as como la forma de encapsulamiento de los datos: PEM
(Privacy Enhanced Mail) o PKCS-7 (Public Key Codification Standard 7).

Tipos de certificado SHTTP

Especifica el formato de certificado aceptable, actualmente X.509.

Algoritmos de intercambio
de claves SHTTP

Indica los algoritmos que se usarn para el intercambio de claves: RSA, fuera de banda, en banda o
Krb.

Algoritmos de firmas SHTTP

Especifica el algoritmo para la firma digital: RSA o NIST-DSS (NIST Digital Standard Signature).

Algoritmos de hash del


mensaje SHTTP

Identifica el algoritmo que proporciona integridad a los datos usando funciones hash: RSA-MD2, RSAMD5 o NIST-SHS.

Algoritmos de contenido
simtrico SHTTP

Especifica el algoritmo simtrico de cifrado en bloque usado para cifrar los datos: DES-CBC, DESEDE-CBC, ES-EDE3-CBC, DESX-CBC, IDEA-CFB, RC2-CBC, RC4 o CDMF.

Algoritmo de cabecera
simtrica SHTTP

Algoritmos de cabecera simtrica de S-HTTP, que proporciona una lista del cifrado de clave simtrica
utilizada para cifrar las cabeceras: DES-ECB, DES-EDE-ECB, DES-EDE3-ECB, DESX-ECB, IDEAECB, RC2-ECB o CDMF-ECB.

Mejoras de intimidad de
SHTTP

Especifica las mejoras en la intimidad asociadas con los mensajes, como firmar, cifrar o autenticar.

El protocolo SSL (Secure Socket Layer) fue ideado por Netscape Communications Corporation. Hoy en da es, con diferencia,
mucho ms usado que SHTTP. Sus principales ventajas son:
- El protocolo SSL es abierto, mientras el protocolo SHTTP es propietario.
- SSL proporciona compatibilidad con cualquier protocolo del nivel de aplicacin al funcionar como capa del modelo TCP/IP
a nivel de socket, mientras que SHTTP solamente trabaja con HTTP, puesto que es una ampliacin de este.
- SSL es transparente al usuario y al protocolo, por lo que es compatible con firewalls y permite conexiones tunneling (se
denominan conexiones tunneling a las que nos permiten acceder a redes WAN e Intranets desde Internet).
- SSL utiliza extensiones S-MIME (Secure Multi-prupose Internet Mail Extensions) para transmitir datos seguros.
SSL naci ante la necesidad de dotar a protocolos habituales que no eran HTTP (FTP, SMTP, POP3...) de seguridad en las
comunicaciones mediante un protocolo seguro. Este protocolo es abierto no propietario, por lo que cualquiera puede desarrollar
aplicaciones seguras bajo SSL, lo que unido a esa compatibilidad multi-protocolo, ha aumentado su uso enormemente. Actualmente se
trabaja con el SSL versin 3.0.
El protocolo SSL se implanta como una capa ms de la pila TCP/IP entre la capa de aplicacin y todas las dems. Esta capa acta
de forma transparente a las aplicaciones porque funciona a nivel de socket.
Un socket es, desde el punto de vista de la red, el punto final de un enlace de comunicacin de dos vas entre dos programas que
se ejecutan a travs de la red. Desde el punto de vista de un programa, un socket es la subrutina encargada de gestionar las
conexiones de red.

Strapping (Junio/2005) Pgina 33 de 84 Seguridad Informtica

Existen dos tipos de sockets:


- Orientado a conexin: se establece un camino virtual fiable cliente-servidor. La informacin llega en el orden en que se envi. El
cliente abre una sesin en el servidor y ste recuerda el estado del cliente.
- No orientado a conexin: se usa para envo de datagramas de tamao fijo, con lo que eso implica (prdida de informacin,
alteracin del orden...). No se guardan estados.
Integracin de Secure Socket Layer 3.0 en la pila TCP/IP:

SSL usa como algoritmo de encriptacin de sesin DES, triple DES, RC2, RC4 o IDEA (International Data Encryption Algorithm).
Estas claves de sesin son a su vez encriptadas mediante mecanismos de clave pblica (tpicamente RSA) para ser enviadas al inicio
de sesin. El algoritmo de hash usado es MD5 o SHA.
Las fases del inicio de una conexin SSL son las siguientes:
- Hello: El cliente enva el mensaje Client Hello al servidor con su clave pblica y sus preferencias criptogrficas. El servidor verifica
que pueda procesarlas, y en caso contrario cierra la sesin.
- Intercambio de claves: El servidor ya ha verificado que puede procesar las claves y que las preferencias criptogrficas suyas y del
cliente son compatibles. El servidor enva su clave pblica en el mensaje Server Hello.
- Poduccin de la clave de sesin: Se genera en el servidor una clave nica para la sesin que se destruir una vez concluida y se
enva al cliente encriptada con su clave pblica.
- Verificacin del servidor: Slo se da cuando se usa el algoritmo RSA, y en ella el cliente debe autentificar al servidor.
- Autenticacin del cliente: El servidor exige al cliente un certificado de seguridad X.509v3, slo en caso de que sea necesario.
- FIN: Indica que ya puede comenzar la conexin segura.
El paquete de datos es encapsulado en tres partes (en SHTTP era en dos): MAC-DATA, cdigo de autenticacin del mensaje;
ACTUAL-DATA, datos que se transmiten y PADDING-DATA, campo de datos requerido en caso de usar cifrado en bloque.

Strapping (Junio/2005) Pgina 34 de 84 Seguridad Informtica

SSL est muy extendido hoy en da en Internet, y genera variaciones de los protocolos inseguros tradicionales para nuevos
protocolos seguros que corren bajo conexiones SSL, como por ejemplo: HTTP -> HTTPS; FTP -> FTPS...
El uso de conexiones seguras, sean del tipo que sean, asegura en mayor o menor medida la comunicacin entre el cliente y el
servidor, pero... cmo podemos saber que el servidor es seguro? Para ello existe el mecanismo denominado Autoridades de
Certificacin (AC), que son las encargadas de emitir certificados de seguridad a servidores o usuarios, de forma que podamos estar
seguros de que nos estamos comunicando con quien queremos.
Un certificado de seguridad se expide a una entidad cuando se comprueba que sta cumple una serie de requisitos de seguridad
con el fin de poder asegurar las conexiones de protocolos seguros. Un certificado de seguridad se compone de la clave pblica del
servidor junto a unos cuantos datos bsicos, que es firmada con la clave privada de la autoridad de certificacin. Estas firmas siempre
tienen una caducidad, y han de renovarse peridicamente mediante nuevos controles a la entidad solicitante.
Cuando establecemos por ejemplo una conexin en nuestro navegador mediante SSL y entramos en el protocolo HTTPS, en la
parte inferior del navegador aparece una pequea llave o candado (dependiendo del software que usemos). Ese icono indica la
presencia de un certificado de seguridad y un protocolo seguro, pero es muy importante revisar ese certificado y comprobar que no est
caducado (aunque esta eventualidad suele advertirla el software navegador automticamente), que los datos de la entidad sean
correctos y que la firma digital de la autoridad de certificacin sea vlida. Yo recomiendo siempre que vayamos a tratar informacin
sensible, como compras en Internet o cualquier gestin con nmeros como tarjetas de crdito, la revisin del certificado de seguridad.
Una conexin mediante protocolo seguro complementada con un certificado de seguridad puede asegurarnos tranquilidad a la hora
de realizar movimientos de informacin comprometida en Internet. Para obtener informacin ms detallada sobre certificados de
seguridad y obtencin de uno, es til visitar la web de Verisign (http://www.verisign.com/).
-Criptografa y autentificacin de ficheros: MD5
Ya hemos hablado brevemente antes de las funciones criptogrficas de tipo hash y del algoritmo MD5, pero ahora queremos
conocer un poco mejor su funcionamiento y su utilidad prctica, pues en el caso de checksums de paquetes de protocolos seguros,
nosotros no manejamos ni comprobamos el MD5, pero puede resultarnos til para otras funciones de autenticacin... pero vamos a ver
primero un poco de teora.
Una funcin criptogrfica tipo hash acepta como entrada una cadena de informacin y devuelve como salida una cadena de
caracteres denominada fingerprint, huella digital, hash o resumen. Las caractersticas de las funciones hash son:
- Unidireccional: Conocido un hash, es computacionalmente imposible la reconstruccin del mensaje original.
- Compresin: A partir de un mensaje de cualquier longitud se obtiene un hash de un tamao fijo, normalmente menor que el del
mensaje original.
- Difusin: El resumen es una funcin compleja de todos los bits del mensaje.
- Colisin simple: Se conoce como resistencia dbil a las colisiones el hecho de que dado un mensaje cualquiera, es
computacionalmente imposible encontrar otro mensaje cuyo hash sea igual.
- Colisin fuerte: Se conoce como resistencia fuerte a las colisiones el hecho de que sea computacionalmente difcil encontrar dos
mensajes cuyo hash sea idntico.
En el caso aplicado de MD5 (Message Digest 5), se trata de una funcin criptogrfica tipo hash que acepta como entrada una
cadena de texto (un fichero puede ser convertido a cadena de texto mediante MIME) y devuelve un nmero de 128 bits. Habr quien
piense que 128 bits no es un nmero muy alto y que pudiera darse el caso de que dos ficheros tuvieran un mismo hash MD5. Es
prcticamente imposible que esto ocurra, pues aunque 128 bits parezca una cantidad pequea, representa 3,4 * 10^34 combinaciones
diferentes (ms de trescientos sextillones de combinaciones diferentes), adems de ser una de las caractersticas definitorias de una
funcin hash: la colisin fuerte.
MD5 fue ideado en 1992 por Ron Rivest como ampliacin a los algoritmos MD4 y MD2, siendo MD5 mucho ms seguro y
computacionalmente algo ms lento, si bien no requiere grandes tablas de sustitucin y se puede cifrar absolutamente compacto.

Strapping (Junio/2005) Pgina 35 de 84 Seguridad Informtica

El otro gran algoritmo de hash que existe hoy da es el SHA-1 (Secure Hash Algorithm 1). Las principales diferencias entre SHA-1 y
MD5 son:
- SHA-1 genera una salida de 160 bits frente a los 128 bits de MD5, lo cual le hace ms resistente a colisiones fuertes y dbiles.
- SHA-1 realiza mayor nmero de operaciones y maneja un nmero mayor de bits en el hash, por lo que resulta
computacionalmente ms complejo.
- La longitud mxima del mensaje para SHA-1 es 2^64 bits (2 PB), mientras que MD5 no tiene limitacin en ese sentido.
El hash MD5 suele presentarse como un nmero de 128 bits en representacin hexadecimal, como por ejemplo:
3F30FA256D2B82EC4DAA111ACF35977F, B83C221E0A1908B7910113AAAEB6DADC.
Al representarse mediante hexadecimal, la cadena de hash queda muy reducida y es muy fcil de manejar en presentaciones web,
por ejemplo. En Internet est muy extendido el uso de hash MD5 en la distribucin de ficheros, y es el algoritmo de hash que siempre
uso para autentificar mis documentos. A la hora de descargar ficheros importantes para el ordenador, como una distribucin de Linux,
un driver, un parche al kernel... es importante verificar el MD5 para asegurarnos que hemos descargado lo que queramos descargar
antes de instalar nada.
Para poder comprobar las sumas MD5, necesitamos algn software que lo implemente: en sistemas Linux disponemos de md5sum,
un paquete que viene prcticamente con todas las distribuciones; y en sistemas Windows tenemos MD5 Command Line Message
Digest Utility (http://www.fourmilab.ch/md5/) y la implementacin para win32 de md5sum (http://www.etree.org/md5com.html).
-Criptografa asimtrica: el sistema PGP
Estos sistemas iniciaron sus andaduras por Internet gracias a Diffie y Hellman (DH), los matemticos que idearon el sistema de
clave pblica, pero fue con el algoritmo de Rivest, Shamir y Adleman (RSA) cuando se comenz a usar de una forma mucho ms
habitual, pues RSA adems de ser un sistema de clave asimtrica, era tambin un sistema criptogrfico de firma digital. Ms tarde
gracias a la combinacin de DH con el Digital Standard Signature (DSS) naci la DH/DSS que combinaba la criptografa de clave
asimtrica de DH con el sistema criptogrfico de firma de DSS.
Era solamente cuestin de tiempo que estos sistemas se implementaran como algo cotidiano al usuario de Internet, y ah naci el
sistema PGP...
Introduccin a la clave asimtrica: sistema PGP/gnuPG
Un criptosistema de clave pblica necesita dos claves relacionadas y complementarias. Una de ellas, denominada clave pblica, es
distribuida libremente y permite encriptar mensajes al destinatario propietario de esa clave. La segunda clave es denominada clave
privada y permite desencriptar los mensajes previamente cifrados con la clave pblica. Ambas claves son complementarias y seran
perfectamente intercambiables. Existe un tercer mecanismo aadido a los dos anteriores, el sistema de firma digital que consiste en
una funcin criptogrfica de tipo hash que aplicada un mensaje y encriptada a la clave privada da lugar a un bloque conocido como
firma digital. Pero veamos un poco de historia.
Todo comenz en 1976, cuando Whitfield Diffie y Martin Hellman [DIH76] desarrollan el algoritmo DH (Diffie-Hellman). Esto supuso
el inicio de la criptografa asimtrica. Dos aos despus, en 1978, Ron Rivest, Adi Shamir y Leonard Adleman [RSA78] idearon el
potente algoritmo RSA (Rivest-Shamir-Adleman) en el Massachussets Institute of Technology (MIT). El algoritmo era tan potente que la
NSA (National Security Agency) de los Estados Unidos recomend que no fuera publicado. Los tres cientficos hicieron caso omiso y lo
publicaron en la revista Scientific American, en parte por miedo a que esa recomendacin pasara a ser una prohibicin total. El
algoritmo se patenta a nombre de la compaa RSA Data Security Inc., patente slo vlida en Canad y Estados Unidos. Varios aos
despus Ron Rivest idea el algoritmo de hash MD5 (Message Digest 5) que ya hemos visto.
En 1991 surgen rumores acerca de una posible prohibicin de la criptografa en las comunicaciones en EEUU, por lo que el
programador Philip Zimmermann idea un sistema criptogrfico que auna los siguientes elementos: el mejor algoritmo disponible de
clave simtrica, IDEA; el mejor algoritmo de clave asimtrica, RSA, el algoritmo de hash MD5 y un generador de nmeros aleatorios
estndar. Ese sistema se llamaba PGP (Pretty Good Privacy) y fue inmediatamente distribuido como freeware, lo que propici que
rpidamente se convirtiera en el estndar en Internet en cuanto a encriptacin y firma digital, con lo que el gobierno tuvo que dar
marcha atrs: era demasiado tarde para detener el avance de PGP.
Como ancdota cabe sealar que en Junio de ese mismo ao se distribuy a travs de USENET una copia de PGP que comenz a
ser distribuido y usado fuera de Estados Unidos, con lo cual se incumpla la legislacin ITAR del Departamento de Estado acerca de
exportacin de armas. Y es que en Estados Unidos la criptografa es considerada un arma de igual magnitud que tanques, armas
qumicas o armamento pesado. Adems, RSA Data Security Inc. reclamaba a Zimmermann el copyright del algoritmo RSA usado en
Strapping (Junio/2005) Pgina 36 de 84 Seguridad Informtica

PGP.
Se decidi el desarrollo paralelo de dos versiones de PGP, una para Estados Unidos y Canad donde se usa la biblioteca de
funciones RSAREF, y otra para el resto del mundo que distribuye el MIT y que usa la biblioteca MPILIB. Para la solucin de la violacin
de ITAR Zimmermann tuvo que esperar hasta 1996, cuando una escueta carta de dos lneas y un comunicado de prensa cerraron
definitivamente el caso sin volver a hacer declaraciones. Ese mismo ao fue absuelto de la supuesta violacin de patentes de RSA y
Zimmermann fund su propia compaa, Pretty Good Privacy Inc. Al cabo de los aos se ha sabido que PGP sali tambin de otra
forma de Estados Unidos: en forma de 12 tomos de cdigo fuente que fueron reescritos y recompilados en Europa.
Han habido varias inclusiones de nuevos algoritmos, como AES (Advanced Encryption Standard) y DES (Data Encryption Standard)
como algoritmos de encriptacin simtrica en complemento a IDEA (cuya patente est an vigente); SHA-1 como algoritmo de hash
complementando a MD5 o DH/DSS (Diffie-Hellman/Digital Standard Signature) como algoritmo de encriptacin asimtrica junto a RSA.
La inclusin de DH/DSS tuvo lugar en la versin 5.0 y sus motivos no eran de seguridad. La patente de RSA no expir hasta el ao
2000 y DH/DSS supona un algoritmo libre, con lo que se evitaban los continuos pleitos con RSA Data Security Inc. PGP/GPG hoy da
es compatible con ambos algoritmos, pues RSA ya es libre, y cada cual puede elegir el tipo de clave que ms le guste.
Ha pasado el tiempo y PGP ha avanzado mucho desde las versiones 2.x hasta las 8.x de hoy en da. Aunque PGP tiene una
versin comercial con muchas funciones extras, como discos encriptados virtuales, nunca se ha dejado de distribuir una versin
freeware del software para todos los usuarios que la deseen.
gnuPG es una implementacin libre y de cdigo abierto (GPL) del sistema openPGP (RFC2440), capaz de manejar sus algoritmos
(excepto IDEA, que an es un algoritmo patentado.) y realizar las mismas funciones que PGP. Actualmente ambos se desarrollan
paralelamente para varias plataformas.
Hoy en da el uso de PGP/GPG est principalmente orientado a la encriptacin y firma de ficheros y correos electrnicos, as como
la generacin y gestin de claves mediante el sistema keyring (anillo de claves), que almacena la informacin correspondiente a todos
las claves pblicas y privadas. PGP/GPG gestiona las claves mediante ficheros de texto ASCII que contienen la informacin de clave
pblica y/o privada y que sirven para el intercambio de las mismas.
Podemos conseguir PGP desde su web internacional (http://www.pgpi.org/) o desde la Americana en caso de residir en Estados
Unidos o Canad (http://www.pgp.com/). Podemos as mismo descargar gnuPG desde su web (http://www.gnupg.org/).
Los algoritmos: RSA y DH/DSS
Ya conocemos la historia del sistema PGP, as como sus bases y los algoritmos que maneja. En este apartado hablaremos del
corazn de este sistema, sus algoritmos criptogrficos, y por ltimo en el siguiente apartado hablaremos de su utilizacin. Aunque el
sistema DH es anterior en el tiempo al sistema RSA, el algoritmo compuesto DH/DSS es posterior, y adems su unin al sistema PGP
tambin lo es.
El algoritmo RSA (Rivest-Shamir-Adleman) naci en 1978 de mano de Ron Rivest, Adi Shamir y Leonard Adleman [RSA78]. Su
seguridad se basa en que no existe una forma eficiente de factorizar nmeros que sean productos de dos grandes primos. El algoritmo
RSA se basa en su definicin en cuatro propiedades:
1. Al decodificar la forma codificada de un mensaje, se obtiene el mensaje original, lo que puede expresarse mediante la expresin:
D ( E (M) ) = M
Donde D representa la decodificacin mediante clave privada, E representa la codificacin mediante clave
pblica, y M representa un mensaje cualquiera.
2.. E y D son relativamente fciles de calcular.
3. Si se revela E de forma pblica, no existe una forma fcil de calcular D. Por tanto, slo el usuario que tiene el valor D puede
decodificar un valor codificado con E.
4. Se se decodifica el mensaje M y se vuelve a codificar, se obtiene M, es decir, se ha de cumplir:
E ( D (M) ) = M

Strapping (Junio/2005) Pgina 37 de 84 Seguridad Informtica

Echemos un vistazo al algoritmo (no es necesario comprenderlo, que nadie se asuste):


1

Escoger dos nmeros primos muy grandes p y q (secretos) y calcular el nmero n (pblico)
correspondiente a su producto, n = p * q

Escoger la clave de descifrado constituida por un gran nmero entero d (secreto), que es primo con el
nmero (n) (secreto) obtenido mediante: (n) = (p-1) * (q-1)

Calcular el entero e (pblico) tal que 1 e (n) , mediante la frmula: e * d = 1 (mod (n))

Hacer pblica la clave de cifado (e,n)

Para cifrar texto, es necesario previamente codificar el texto en un sistema numrico en base b dividindolo en
bloques de tamao j-1 de forma que b j-1 < n < b j

Cifrar cada bloque M i transformndolo en un nuevo bloque de tamao j C i de acuerdo


con la expresin C i M i e (mod n)

Para descifrar el bloque C i , se usa la clave privada d segn la expresin: M i C i d (mod n)

La importancia de la longitud de las claves, como sealan Rivest, Shamir y Adleman, se pone de manifiesto en el cumplimiento de
la tercera propiedad, pues si alguien deseara desencriptar sin permiso un mensaje, debera probar todas las claves posibles. En
nmeros simples puede ser sencillo, pero hoy da las claves ms pequeas que se manejan son de 1024 bits, lo que supone 1,8 *
10^308 claves distintas, y el algoritmo RSA en sistema PGP hoy da soporta claves de hasta 4096 bits, lo que supone 1 * 10^1233
claves, una cantidad a todas luces descomunal (yo uso una clave RSA/4096).
El algoritmo DH/DSS (Diffie-Hellman/Digital Standard Signature) tiene una larga historia... DH (Diffie-Hellman) naci de la mano de
Dres. W. Diffie y M.E. Hellman [DIH76] en 1976 como un algoritmo de intercambio de claves. Segn los propios Diffie y Hellman, el
sistema del logaritmo discreto (en que se basa DH) resultaba intratable como sistema criptogrfico de clave pblica completo. Varios
aos despus, en 1985, ElGamal [ELG85] demostr y present que era posible desarrollar el sistema completo a partir de DH. Ese
sistema ideado por ElGamal es lo que hoy se conoce como DH. DH resultaba un sistema de cifrado que al contrario de RSA, no poda
adaptarse a la firma digital. ElGamal ide un sistema de firma para DH que no poda adaptarse para cifrado pero que complementaba al
algoritmo. El problema de ese sistema de firma es que duplicaba la longitud del mensaje firmado, lo que resultaba extremadamente
ineficiente. En 1991 el NIST (National Institute of Standards and Technology) ide una variante del sistema de firma de ElGamal que
correga dicho problema y se denomin DSS (Digital Standard Signature). As, en 1991, naci el algoritmo actual DH/DSS. Es
importante tener en cuenta que DH/DSS cuenta con cuatro tipos de claves: secreta, pblica, de cifrado y de descifrado. Veamos el
algoritmo propiamente dicho de DH/DSS:
1

Sern de informacin pblica un nmero primo grande p y a, una raz primitiva de 1 mdulo p (es decir, tal que a p-1 (mod p) y a
d-1 (mod p) para todo d tal que 1<d<p )

La clave privada del usuario B es un entero k B escogido dentro del intervalo [1 , p-1]

La clave pblica de B es el entero K B a k B (mod p)

Se supone que el emisor A quiere enviar un mensaje M (1 M p-1) al receptor B


Proceso de Cifrado (e)

1e

Escoger aleatoriamente un entero k A tal que 1 k A p-1 , que constitye su clave secreta

2e

Calcular la clave de cifrado a partir de su propia clave privada y la clave pblica de B, Q K kB A (mod p)

3e

Cifrar el mensaje M segn la expresin C Q * M (mod p)


Proceso de Descifrado (d)

1d

Obtener Q gracias a la clave pblica de A, K A , y a su propia clave secreta mediante la frmula Q K kA B (mod p)

2d

Recuperar M a partir de M (Q -1) p * C (mod p) donde (Q -1) p denota el inverso de Q en mdulo p

Strapping (Junio/2005) Pgina 38 de 84 Seguridad Informtica

El sistema de firmas digitales en ambos sistemas se basa en aplicacin de una funcin hash al mensaje a firmar y su encriptacin a
la clave privada del firmante. Esto garantiza que nicamente el dueo de la clave (y poseedor del password correspondiente) pueda
firmar el mensaje. Al ser recibido, se descifra con la clave pblica del firmante y se vuelve a aplicar la funcin hash al texto firmado. Si
ambos hashes son idnticos, la firma es vlida.
Las firmas RSA poseen un defecto de base algortmica mediante el cual conocidos dos mensaje y sus firmas, es posible crear la
firma de un tercer mensaje mediante aritmtica modular, aunque es importante sealar que esto solamente es posible en mensajes
exclusivamente numricos.
Hace poco tiempo se descubri igualmente un fallo de implementacin en gnuPG de las firmas ElGamalque compromete la clave
privada de un sistema firma+cifrado ElGamal. Afortunadamente las claves que se crean hoy da y desde hace bastantes aos, usan el
sistema de firma DSS.
Queda por hablar del eterno debate: RSA o DH/DSS? Ambos sistemas basan su seguridad en la enorme dificultad que entraa
calcular la clave privada a partir de una clave pblica. En RSA esta fuerza se basa en la dificultad de encontrar los factores primos de
un entero muy grande, mientras que en DH/DSS dependen de la dificultad de calcular los logaritmos nicos en un campo finito
generado por un nmero primo de gran tamao.
En s, hablando de la base terica matemtica, el problema del logaritmo nico es ms complicado de resolver, as como RSA
requiere clculos ms complejos. Por contra, el sistema de firma DSS solamente soporta 1024 bits de longitud de clave, mientras que
una firma RSA soporta 4096. En definitiva, an basndose en principios matemticos distintos, ambos sistemas criptogrficos resultan
igual de seguros y poderosos a la hora de usarlos como mecanismos de cifrado. La conclusin, como en todo, es que para gustos
estn los colores y cada cual debe elegir el tipo de clave que prefiera.
Encriptacin de ficheros, correo electrnico y comunicaciones
Los algoritmos RSA y DH/DSS que maneja PGP han demostrado en los ltimos tiempos ser relativamente inmunes a los ataques
de fuerza bruta, pues utilizan un nmero de combinaciones de claves pblicas y privadas descomunal. Un ordenador con un procesador
a 3 Gigaherzios necesitara tres aos ininterrumpidos de trabajo para romper por fuerza bruta una clave RSA de 428 bits. Hoy en da
ninguna clave RSA manejada por un sistema criptogrfico maneja menos de 512 bits, y en el caso de PGP el nmero mnimo de bits es
de 1024, llegando a 4096. Pero sabemos que ningn sistema es completamente seguro, y es posible que futuras tecnologas
computacionales (como los ordenadores cunticos) o teoras matemticas permitan la ruptura de los actuales sistemas criptogrficos
(incluyendo el potente sistema de Miller [MIL86] ideado en 1986 y basado en el uso de curvas elpticas), pero hoy por hoy podemos
decir que PGP es un sistema seguro.
PGP introduce el concepto de anillo de claves o keyring. Este sistema gestiona los ficheros de claves pblicas y privadas de un
sistema, y permite la generacin de una jerarqua de confianza basada en la posibilidad de firmar claves pblicas con nuestra propia
clave privada. Al firmarse mutuamente dos usuarios sus claves pblicas con las privadas, establecen un vnculo de confianza entre
ellos, que se va extendiendo (si yo confo en ti y t confas en l, yo confo en l...). Este sistema permite igualmente la gestin de
encriptacin o firma dirigida a mltiples claves pblicas, de forma que podamos cifrar un correo electrnico con ms de un destinatario.
El sistema PGP gestiona las claves para su exportacin e importacin mediante ficheros de armadura de texto ASCII que contienen
la clave y que pueden ser reconocidos e importados por un sistema compatible. As mismo, los mensajes encriptados y firmas se
representan mediante texto ASCII que es enviado e interpretado por el receptor. Veamos algunos formatos de distintos mensajes PGP:
-----BEGIN PGP PUBLIC KEY BLOCK----<Comentario>
<Clave>
-----END PGP PUBLIC KEY BLOCK--------BEGIN PGP SIGNED MESSAGE----<Tipo de hash>
<Mensaje en claro>
-----BEGIN PGP SIGNATURE----<Comentario>
<Firma>
-----END PGP SIGNATURE--------BEGIN PGP MESSAGE----<Comentario>
<Mensaje encriptado>
-----END PGP MESSAGE----

Strapping (Junio/2005) Pgina 39 de 84 Seguridad Informtica

En el campo de comentario puede haber cualquiera que el usuario decida colocar, o a veces un comentario que el propio software
incluye indicando la versin del mismo usada (por ejemplo, Version: GnuPG v1.3.4 (GNU/Linux) que es el comentario de mi clave). En
el campo hash se incluye el tipo de hash usado: MD5, SHA-1... En el campo clave, mensaje encriptado o firma van los smbolos ASCII
que componen la clave, mensaje o firma. Pensaba haber pegado mi clave pblica para que sirviera de ejemplo, pero a este tamao de
fuente ocupara ms de una hoja y media (RSA/4096).
Las propias claves se marcan con una huella digital o fingerprint, que es un hash que identifica a la propia clave pblica de forma
univoca, y que es usado principalmente para comprobar la autenticidad de claves descargadas de un servidor de claves o anillo de
claves pblico. Este fingerprint suele representarse mediante un nmero hexadecimal (de 128 bits para MD5 y de 160 bits para SHA-1)
aunque actualmente PGP tambin lo representa como un conjunto de palabras. Recordemos que 128 bits son 3,4 * 10^38
combinaciones,y 160 bits son 1,5 * 10^48, cifras lo suficientemente elevadas como para que no se produzcan colisiones, especialmente
en el caso de SHA-1. Como ejemplo de fingerprint pongo el correspondiente a mi clave pblica:
6FAB 9799 C61A A7D2 A409 8A53 6F6F 3938 AF95 93E1
De esta forma si alguien descargara mi clave, podra comprobar que el fingerprint efectivamente es ese y as estara seguro de que
es la clave correcta. Para ello no est de ms que ese fingerprint se entregue en persona o por un medio seguro, as el vnculo de
confianza es totalmente cerrado.
Hoy en da el sistema PGP se integra perfectamente en los principales sistemas del mercado, incluyendo Microsoft Windows, MSDOS, GNU/LiNUX, Unix, MacOS X, Amiga, BeOS, OS/2, PalmOS, EPOC... y muchos otros. Por tanto la encriptacin, firma,
desencriptacin y comprobacin de ficheros funciona perfectamente en cualquier plataforma. Adems, es comn hoy en da la
compatibilidad de los clientes de correo electrnico con el sistema PGP, de forma que no sea necesario encriptar o firmar a mano los
mensajes desde ficheros de texto. Entre los clientes de correo electrnico compatibles con el sistema PGP/GPG tenemos: Microsoft
Outlook Express, Microsoft Outlook, Mozilla Mail, Mozilla Thunderbird, Eudora, The Bat!, Ximian Evolution, Kmail... y muchos otros, bien
mediante soporte nativo o bien mediante la aplicacin de algn tipo de plugin, como Enigmail en sistemas Mozilla.
Tambin existen diversos tipos de software que permiten el uso de claves PGP como medio de encriptacin de la informacin en
comunicaciones a travs de Internet, ya sea a travs de tneles SSL o medios de conexin normales.
Mi recomendacin es siempre encriptar los mensajes para destinatarios cuya clave pblica poseamos, y por defecto firmar
absolutamente cualquier mensaje que enviemos. Igualmente recomiendo el uso de passphrases (contraseas que activan las claves
privadas) que cumplan las caractersticas que indiqu sobre contraseas seguras y que sean tan largas como sea posible, para evitar
cualquier intento de ruptura por fuerza bruta. Yo cambio con asiduidad el passphrase, y actualmente tiene una longitud de 25
caracteres, si bien a partir de 10 caracteres podra considerarse suficientemente seguro.
Es importante hacer copia de seguridad de las claves privadas que poseamos, pues si bien las claves pblicas pueden ser
descargadas de los servidores de claves donde hayamos decidido alojarlas, las privadas no se alojan en ningn sitio que no sea
nuestro disco duro, y en caso de desastre debemos mantener copias de seguridad de esa clave actualizada, pues de lo contrario
perderemos absolutamente cualquier informacin cifrada con la misma. Tanto PGP como GPG permiten la exportacin de ficheros
ASCII de claves privadas con finalidad de copia de seguridad.
Por ltimo, recomiendo poseer al menos dos claves criptogrficas: una para usar en encriptacin de correo electrnico o
comunicaciones en general a travs de Internet, y otra para usarla de forma local y personal en la encriptacin de ficheros sensibles.
As en caso de que la clave usada en Internet se viera comprometida, los ficheros de nuestro disco duro seguiran siendo seguros.
Podemos concluir diciendo que la criptografa es uno de los medios ms seguros de que disponemos para mantener informacin
privada de cara al resto del mundo, as como autentificar nuestras comunicaciones de forma que sea imposible que nadie falsee
nuestra identidad. El sistema PGP es, desde hace unos aos, imprescindible en Internet.

Strapping (Junio/2005) Pgina 40 de 84 Seguridad Informtica

INTRODUCCIN A LA CRIPTOGRAFA
-Cunto tiempo quieres que sean secretos esos mensajes? -le pregunt Randy en el ltimo
mensaje antes de abandonar San Francisco-. Cinco aos? Diez aos? Veinticinco aos?
Despus de llegar al hotel esa tarde, Randy descifr y ley la respuesta de Avi. Todava la tiene
colgada frente a los ojos, como la imagen remanente de un flash.
Quiero que sigan siendo secretos mientras los hombres sean capaces del mal.
Neal Stephenson, Criptonomicn
Desde los tiempos del Antiguo Egipto hasta hoy en da ha pasado mucho tiempo, pero hay algo que no ha cambiado: el anhelo del
ser humano por esconder sus secretos. Criptografa.
Personajes como Cleopatra o El Csar ya aprendieron a valorar la importancia de esconder de ojos indiscretos sus mensajes. La
Scilata que los espartanos usaban all por el ao 400 a.C., o el propio cdigo Csar (un simple desplazamiento alfabtico) fueron los
inicios. Con el desarrollo de las ciencias, y ms concretamente de las matemticas, la criptografa creci como un hermano menor, de
la mano. En la Edad Media comenz a adquirir una gran importancia cuando un siervo del Papa Clemente VII escribi el primer manual
sobre el tema de la historia en el viejo continente. En 1466 Len Battista Alberti ide el sistema polialfabtico basado en la rotacin de
unos rodillos. Un siglo ms tarde, Giovan Battista Belaso invent la clave criptogrfica basada en una palabra o texto que se transcriba
letra a letra sobre el mensaje original...
Pero si un punto ha marcado un antes y un despus en la criptografa, ese ha sido la Segunda Guerra Mundial. Ya a principios del
pasado siglo XX se idearon los denominados traductores mecnicos, basados en el concepto ideado en el siglo XV por Alberti de las
ruedas concntricas, y el sistema comenz a tornarse sumamente complejo, ya no bastaba con analizarlo concienzudamente para
comprenderlo. Y eso nos llev a la Segunda Guerra Mundial, a los aos 30 y 40 y a la mquina Enigma. Aunque mucha gente no lo
sepa, la criptografa fue uno de los principales motivos para que los aliados ganaran la guerra, pues los alemanes crean el cdigo de
su mquina Enigma inviolable, y de hecho s que era extremadamente complejo. Pero al igual que antes comentaba que el anhelo
humano de esconder secretos es eterno, tambin lo es su anhelo por desenterrar secretos ajenos. Un equipo de criptoanalistas,
matemticos y dems mentes privilegiadas (entre ellos Alan Turing, uno de los padres de la informtica) logr en 1942 lo que pareca
imposible: romper el cifrado de Enigma. Para ello disearon las llamadas bombas navales (las bombes), aparatos de clculo
mecnicos que se encargaban de romper el cifrado alemn y entregar todos los secretos a los aliados. Igualmente, el Purple (versin
japonesa de Enigma) fue roto en Midway por un equipo dirigido por el comandante Joseph J. Rochefort. El hecho de conocer los
secretos, de tener todas las llaves (nunca mejor dicho), dio la vuelta a la guerra y cambi el curso de la historia. Y el mundo nunca
volvi a ser el mismo.
El nacimiento de la informtica y de los criptosistemas informtico supuso un cambio radical del concepto de criptografa, y tambin
del criptoanlisis. Los criptosistemas y los algoritmos aumentaron repentinamente y de forma descomunal su complejidad. Desde el
DES hace ya mucho, hasta los criptosistemas asimtricos de curvas elpticas actuales todo ha cambiado tambin mucho, pero uno de
esos cambios ha supuesto el segundo gran punto de inflexin de la criptografa: PGP. Hasta entonces el privilegio de guardar secretos
estaba exclusivamente en manos de los gobiernos o los poderosos, y hoy da, seguramente gracias a PGP, es un derecho de cualquier
ciudadano por humilde que sea (aunque en algunos pases no sea as). Arriesgando mucho, Philip Zimmermann nos abri las puertas a
la criptografa, y a la libertad de comunicarnos de forma segura.
Por supuesto hay otros nombres que son capitales en el desarrollo de los criptosistemas informticos, aparte de Zimmermann:
Rivest, Shamir, Adleman, Diffie, Hellman, ElGamal, Rijmen, Daemen, Massey, Miller, Goldwaser... Todos ellos son padres de lo que
hoy se llama criptografa. Gracias a todos.
Conceptos bsicos
Criptologa
Criptografa, el arte de ocultar. La palabra tiene su origen en el griego: kryptos (oculto, escondido) y graphein (escribir). El arte de
ocultar un mensaje mediante signos convencionales es muy antiguo, casi tanto como la escritura. Y efectivamente siempre ha sido
considerado un arte hasta hace relativamente poco, cuando Claude E. Shannon public en dos aos dos documentos que supusieron
la fundacin de la moderna Teora de la Informacin. Esos documentos son:
[SHA48] C. E. Shannon, A mathematical theory of communication, Bell System Tech. J.
27 (1948), 379-423 y 623-656.
[SHA49] C. E. Shannon, Communication theory of secrecy systems, Bell System Tech.
J. 28 (1949), 656-715.
A partir de entonces, y unido al desarrollo de la computacin moderna, el desarrollo de la criptografa alcanz nuevos horizontes.
Strapping (Junio/2005) Pgina 41 de 84 Seguridad Informtica

Antes de entrar en ms detalles, hay que comprender que la criptografa se complementa con otra rama de estudio, el
criptoanlisis, que estudia el camino inverso de la criptografa, dedicando sus esfuerzos a desentraar los secretos que la criptografa
se empea en mantener ocultos. Ambas ramas conforman lo que entendemos como criptologa.
criptografa
(Del gr. , oculto, y -grafa).
1. f. Arte de escribir con clave secreta o de un modo enigmtico.
* FUENTE: Real Academia Espaola (http://www.rae.es/)
criptoanlisis
(Del gr. , oculto, y anlisis).
1. m. Arte de descifrar criptogramas.
* FUENTE: Real Academia Espaola (http://www.rae.es/)
Texto en claro y criptogramas
En el mbito criptogrfico, entendemos por Texto en claro cualquier informacin que resulta legible y comprensible per se. Un texto
en claro sera cualquier informacin antes de ser encriptada o despus de ser desencriptada. Se considera que cualquier informacin
es vulnerable si se encuentra en este estado.
As mismo, denominamos criptograma a cualquier informacin que se encuentre convenientemente cifrada y no resulte legible ni
comprensible ms que para el destinatario legtimo de la misma.
El mecanismo de transformar un texto en claro en un criptograma lo denominamos encriptacin o cifrado, y al proceso de
recuperacin de la informacin a partir de un criptograma lo denominamos desencriptacin o descifrado.
Es muy importante no confundir estos trminos con codificacin o decodificacin, pues codificacin es el acto de representar la
informacin de distintas formas, pero no necesariamente encriptadas. Por ejemplo, un nmero decimal puede codificarse como
hexadecimal, y no por ello se convierte en un criptograma.
Flujo de informacin
En un criptosistema la informacin sigue un flujo siempre fijo:

El emisor cifra el texto en claro para obtener el criptograma, que viaja por un canal ruidoso. El receptor descifra el criptograma y
obtiene de nuevo el texto en claro que el emisor le envi. Durante toda la transmisin, el mensaje es ilegible.
Criptosistemas
Antes de nada, es conveniente definir qu entendemos -matemticamente-por criptosistema. Un criptosistema es una cuaterna de
elementos formada por:
Un conjunto finito llamado alfabeto, que segn unas normas sintcticas y semnticas, permite emitir un mensaje en claro as
como su correspondiente criptograma.
Un conjunto finito denominado espacio de claves formado por todas las posibles claves, tanto de encriptacin como de
desencriptacin, del criptosistema.
Una familia de aplicaciones del alfabeto en s mismo que denominamos transformaciones de cifrado.
Una familia de aplicaciones del alfabeto en s mismo que denominamos transformaciones de descifrado.
Ya sabemos qu es un criptosistema, pero qu es un criptosistema informtico? Un criptosistema informtico se definira por los
siguientes cuatro elementos:
Un conjunto finito denominado alfabeto, que permite representar tanto el texto en claro como el criptograma. A bajo nivel
hablaramos de bits, y a ms alto nivel podramos hablar de caracteres ASCII o MIME.
Un conjunto finito denominado espacio de claves. Estara constituido por la totalidad de las claves posibles del criptosistema.
Una familia de transformaciones aritmtico-lgicas que denominamos transformaciones de cifrado.
Una familia de transformaciones aritmtico-lgicas que denominamos transformaciones de descifrado.

Strapping (Junio/2005) Pgina 42 de 84 Seguridad Informtica

Se trata simplemente de un criptosistema adaptado a las posibilidades y limitaciones de una computadora. El alfabeto o espacio de
caracteres suele ser un estndar de representacin de informacin (tpicamente MIME o UNICODE por motivos de compatibilidad) y a
ms bajo nivel, por bits. Las transformaciones de cifrado y descifrado se cien a las normas de computacin de los ordenadores
actuales. En realidad, a efectos prcticos no existe mucha diferencia entre criptosistema matemtico e informtico, pues los
matemticos suelen disearse pensando en representaciones computacionales (pues solamente los ordenadores tienen la potencia
necesaria para soportar los complejos algoritmos), y los informticos se desarrollan siempre con una base matemtica.
Algoritmo criptogrfico
Comenzaremos definiendo el trmino algoritmo por si algn despistado no sabe qu es.
algoritmo
(Quiz del lat. tardo *algobarismus, y este abrev. del r. cls. hisbu lgubr, clculo mediante cifras
arbigas).
1 m. Conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema.
2 m. Mtodo y notacin en las distintas formas del clculo.
* FUENTE: Real Academia Espaola (http://www.rae.es/)
Ahora veamos la definicin de algoritmo que da un manual de programacin algortmica:
algoritmo
Descripcin precisa de una sucesin de instrucciones que permiten llevar a cabo un trabajo en un nmero finito de
pasos.
* FUENTE: J. Castro, F. Cucker, X. Messeguer, A. Rublo, L. Solano, B. Valles, Curso de Programacin, McGraw
Hill. (1993), 2. ISBN 84-481-1959-2
As pues, un algoritmo debe describir de forma unvoca y sin dar lugar a interpretaciones, la solucin a un problema en un numero
de pasos concreto. Ya podemos deducir qu es un algoritmo de encriptacin: una descripcin unvoca y concreta de cmo funciona un
criptosistema determinado.
Clave criptogrfica
El concepto de clave criptogrfica surge con el propio concepto de la criptografa, y es el alma de un algoritmo de encriptacin.
Obviamente un algoritmo tiene que poseer la capacidad de ser usado muchas veces sin que su mecanismo sea idntico, pues de lo
contrario cada persona debera tener su propio algoritmo de encriptacin. Para implementar esta funcionalidad, se usan las claves. La
clave es un dato que interviene de forma activa en la ejecucin del algoritmo y lo personaliza.
Atendiendo nicamente al tipo de clave, podemos distinguir dos criptosistemas:

Sistemas de clave nica o criptosistemas simtricos: Son aquellos en los que los procesos de cifrado y descifrado son
llevados a cabo por una nica clave.
Sistemas de clave pblica o criptosistemas asimtricos: Son aquellos en los que los procesos de cifrado y descifrado son
llevados a cabo por dos claves distintas y complementarias.

Ejemplo:
Si usamos un sistema de criptografa simtrica por sustitucin, con una clave x=3...

De esta forma la frase:


all your base are belong to us
Pasara a ser:
dcarxucedvhcduhcehrpjcwrcxv
Longitud de clave
A da de hoy, gracias a los ordenadores y los superordenadores (tpicamente clusters) es posible realizar complejos cmputos
matemticos en un espacio de tiempo relativamente corto. As pues, el campo del criptoanlisis est ntimamente ligado a esta potencia
de clculo.
Strapping (Junio/2005) Pgina 43 de 84 Seguridad Informtica

Para que un algoritmo se considere seguro, su criptoanlisis sin la clave necesaria debe ser computacionalmente imposible de
resolver. Consideramos imposible de resolver un sistema cuya vulneracin necesite mayores recursos (econmicos o en tiempo) que
el beneficio reportado. Por ejemplo, ser considerara seguro un criptosistema que requisiera miles de aos para ser descifrado.
Para lograr semejante complejidad, se tratan nmeros o conjuntos de nmeros enormes. Es obvio que a mayor tamao de estos
nmeros, existe un mayor nmero de claves posibles, y la posibilidad de xito del criptoanlisis es menor.
Hoy en da este tamao se denomina longitud de clave, y se mide tpicamente en los bits que ocupa la clave. As, una clave de un
nmero de 1024 bits sera un nmero cualquiera desde el 0 hasta el 1,8 * 10^308 (2^1024). Al representar las longitudes de clave como
potencias de dos, es importante darse cuenta de la relacin existente entre las longitudes de clave. Una clave de 1025 bits es el doble
de larga que una de 1024 (2^1025 frente a 2^1024).
A da de hoy se usan claves que oscilan entre los 512 bits y los 4096 bits de longitud.
Algoritmos simtricos
Son los criptosistemas ms sencillos. Se trata de algoritmos que trabajan con una nica clave de doble funcin (cifrado y
descifrado). Dentro de los sistemas simtricos distinguimos dos tipos de algoritmos: los de cifrado de bloque, que dividen el texto en
claro en bloques de tamao prefijado (por ejemplo 64 bits) y los cifran bloque a bloque; y los de cifrado de flujo, que cifran bit a bit o
byte a byte.
A continuacin vemos algunos de los principales algoritmos criptogrficos simtricos:
DES: Data Encryption Standard (1976)
RFC's relacionados
#1829 - The ESP DES-CBC Transform - ftp://ftp.rfc-editor.org/in-notes/rfc1829.txt
#2952 - Telnet Encryption: DES 64 bit Cipher Feedback - ftp://ftp.rfc-editor.org/in-notes/rfc2952.txt
#2953 - Telnet Encryption: DES 64 bit Output Feedback - ftp://ftp.rfc-editor.org/in-notes/rfc2953.txt
Descripcin
Algoritmo simtrico de cifrado en bloques de 64 bits basado en LUCIFER (criptosistema interno de IBM). Fue ideado por IBM y
aceptado por el NIST (National Institute of Standars and Technology) en 1976. Se trata de un algoritmo de 64 bits de clave de los
cuales 56 bits componen la clave de cifrado propiamente dicha, mientras los 8 restantes son de paridad y se usan para correccin de
errores.
DES actualmente ya no es estndar criptogrfico y fue roto en Enero de 1999 con un sistema de cmputo que analizaba
250.000.000.000 claves por segundo.
Su principal ventaja es la rapidez de clculo y la sencillez de su implementacin. Y Sus principales defectos son la poca longitud de
clave que maneja, unido a la incapacidad de manejar claves de longitud variable; y su debilidad en un uso continuado de la misma
clave, pues si se disponen de suficientes criptogramas, mediante criptoanlisis diferencial es posible romper la clave en 2^47
iteraciones.
Triple-DES: Triple - Data Encryption Standard (1995)
RFC's relacionados
#3217 - Triple-DES and RC2 Key Wrapping - ftp://ftp.rfc-editor.org/in-notes/rfc3217.txt
#3537 - Wrapping a Hashed Message Authentication Code (HMAC) key with a Triple-Data Encryption Standard (DES) Key or an
Advanced Encryption Standard (AES) Key ftp://ftp.rfc-editor.org/in-notes/rfc3537.txt
Descripcin
Dada la capacidad de cmputo actual y la relativa facilidad que supone romper el algoritmo DES, se desarroll un sistema de triple
aplicacin al algoritmo DES, con tres claves diferentes para aplicar sucesivamente (en realidad se usa una clave externa dividida para
aplicacin intermedia dado que DES matemticamente no es grupo, y su aplicacin repetida ocasionara un aumento efectivo de
tamao).
Strapping (Junio/2005) Pgina 44 de 84 Seguridad Informtica

Mediante este sistema se obtiene un cifrado de 192 bits (168 efectivos y 24 de paridad) con tres claves que resulta mucho ms
complejo de vulnerar.
AES (Rijndael): Advanced Encryption Standard (2000)
RFC's relacionados
#3268 -Advanced Encryption Standard (AES) Ciphersuites for Transport Layer Security (TLS) - ftp://ftp.rfc-editor.org/innotes/rfc3268.txt
#3394 - Advanced Encryption Standard (AES) Key Wrap Algorithm - ftp://ftp.rfc-editor.org/in-notes/rfc3394.txt
#3565 -Use of the Advanced Encryption Standard (AES) Encryption Algorithm in Cryptographic Message Syntax (CMS) ftp://ftp.rfc-editor.org/in-notes/rfc3565.txt
#3686 - Using Advanced Encryption Standard (AES) Counter Mode With IPsec Encapsulating Security Payload (ESP) ftp://ftp.rfc-editor.org/in-notes/rfc3686.txt
Descripcin
En 1977 el NIST organiz un concurso a nivel mundial para crear un sistema que cumpliera los requisitos de seguridad necesarios
para convertirse en estndar a nivel mundial. Este estndar se denomina AES (Advanced Encryption Standard) y el algoritmo AEA
(Advanced Encryption Algorithm).
Muchos expertos presentaron sus propuestas, pero el ganador fue el conocido como algoritmo Rijndael, creado por los belgas
Vincent Rijmen y Joan Daemen. Se trata de un algoritmo simtrico que puede funcionar mediante cifrado en bloques de longitud
variable o en flujo y que se sirve de claves de longitud variable (128, 192 256 bits).
Su algoritmo puede resumirse de la siguiente forma:
A

Toma el texto en claro y lo cifra en bloques para obtener el punto intermedio llamado Estado, que se representa como
una matriz de bytes de cuatro filas.

A partir del Estado, se realizan las siguientes operaciones en forma de bucle durante un nmero determinado de
iteraciones.

b1

Sustitucin de bytes no lineal, operando independientemente sobre cada uno de los bytes del Estado.

b2

Desplazamiento de las filas del Estado cclicamente con offsets diferentes.

b3

Mezcla de columnas, que se realiza multiplicando las columnas del Estado mdulo x*4+1, consideradas como
polinomios en GF(28), por un polinomio fijo c(x).

b4

Adicin de la clave de vuelta, en la que se aplica al Estado por medio de un simple XOR. La clave de cada vuelta se
deriva de la clave de cifrado mediante el esquema de clave.

El esquema de clave consiste en dos operaciones, expansin de clave y seleccin de clave de vuelta de cifrado, y el
proceso de cifrado consta de tres pasos: una adicin inicial de la clave de vuelta, n-1 vueltas de cifrado y una vuelta final.
* FUENTE: HTML Web, Seguridad, Criptografa (http://www.htmlweb.net/)

Se puede encontrar informacin mucho ms detallada de la descripcin algortmica de AES en el siguiente enlace:
http://home.ecn.ab.ca/~jsavard/crypto/co040401.htm.
Hoy en da AES es, efectivamente, el estndar en cifrado simtrico, siendo usado por sistemas tan populares como Pretty Good
Privacy (PGP).
IDEA: International Data Encryption Algorithm (1990)
RFC's relacionados
#3058 - Use of the IDEA Encryption Algorithm in CMS - ftp://ftp.rfc-editor.org/in-notes/rfc3058.txt
Strapping (Junio/2005) Pgina 45 de 84 Seguridad Informtica

Descripcin
IDEA fue creado en 1990 por Xuejia Lai y L. Massey. Se trata de un algoritmo simtrico de cifrado en bloques de 64 bits. Su
funcionamiento se basa en operaciones sencillas como multiplicaciones de enteros, sumas y XOR. IDEA trabaja con claves de 128 bits
de longitud. Es importante resear que IDEA es un algoritmo que si bien es de uso libre para fines no comerciales, s que est cubierto
por patentes, concretamente:
USA y Canad -Patente 5.214.703 -Expira el 25 de Mayo de 2010.
Europa(*) - Patente 0482154 -Expira el 16 de Mayo de 2011.
(*): Austria, Francia, Alemania, Italia, Holanda, Espaa, Suecia, Suiza, Reino Unido.
Japn - Patente JP3225440B2 - No hay informacin de la fecha de expiracin.
Precisamente a causa de esta patente, el sistema gnuPG no lo incluye como algoritmo de cifrado simtrico (a pesar de que PGP s
lo hace), siendo necesario aadirlo mediante un parche al software.
RC6: Rivest Cypher 6 (1998)
RFC's relacionados
#2040 - The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms ftp://ftp.rfc-editor.org/in-notes/rfc2040.txt
Descripcin
RC6 fue uno de los finalistas del concurso AES del NIST. Fue ideado por el matemtico Ron Rivest (autor de muchos y famosos
algoritmos criptogrficos) en 1998. El algoritmo es propiedad de la empresa RSA Security.
RC6 supone la evolucin de los algoritmos RC, RC2, RC4 y RC5. Concretamente, se trata de una adaptacin del sistema RC5 para
cumplir los requisitos del concurso AES. Se trata de un algoritmo simtrico de cifrado de flujo con claves de longitud variable entre 40 y
2040 bits, siendo por defecto 128.
Su algoritmo se basa en una mezcla de sumas, restas, multiplicaciones, XOR y rotaciones, y se puede encontrar una amplia
descripcin, as como un ejemplo de su implementacin en el siguiente enlace: http://www.codeproject.com/cpp/hexenc.asp?print=true.
Twofish: Twofish (1998)
Descripcin
Twofish es un algoritmo simtrico de cifrado en bloques de 64 bits. Supone la evolucin natural de su predecesor, Blowfish, y fue
otro de los cinco finalistas del concurso AES del NIST. El algoritmo es totalmente libre, tanto de patentes como de copyright.
Twofish maneja claves de 128, 192 256 bits y es muy potente a la par que extremadamente sencillo de implementar y rpido (18
ciclos por byte en una arquitectura Pentium I, ms rpido que RC5, IDEA, DES, Triple DES, Serpent, Square, Cast-128, Feal-32, etc).
Estas caractersticas le han llevado a ser incluido en el estndar SSH (Secure Shell).
Una descripcin precisa del algoritmo y su implementacin puede ser encontrada en el siguiente enlace:
http://home.ecn.ab.ca/~jsavard/crypto/co040402.htm.
MARS: MARS (1998)
Descripcin
MARS es otro de los finalistas del concurso del NIST. Fue ideado por IBM como un algoritmo simtrico de cifrado en bloques de
128 bits. Su longitud de clave es variable, trabajando con claves de 128 a 448 bits.
Comparado con el anterior gran algoritmo de IBM, el DES-3, la complejidad y potencia es mucho mayor, a la vez que es mucho ms
rpido de ejecutar (65 Mbit/s en un Pentium-Pro).
Despus de no haber sido elegido como ganador del concurso AES, IBM liber el algoritmo MARS para uso pblico, aunque no es
muy usado en la actualidad.
Strapping (Junio/2005) Pgina 46 de 84 Seguridad Informtica

En el libro "MARS -a candidate cipher for AES", publicado por IBM Corporation en Septiembre de 1999, podemos encontrar una
descripcin completa del algoritmo y sus diversas implementaciones: http://www.research.ibm.com/security/mars.pdf.
CAST-256: Carlisle Adams - Stafford Tavares - 256 (1997)
RFC's relacionados
#2612 - The CAST-256 Encryption Algorithm -ftp://ftp.rfc-editor.org/in-notes/rfc2612.txt
Descripcin
CAST-256 fue desarrollado a partir del algoritmo CAST-128. Se trata de un algoritmo simtrico de cifrado en bloques de 128 bits
que maneja claves de 128, 160, 192, 224, 256 bits. Su funcionamiento es muy complejo, combinando el sistema de permutacinrotacin similar al utilizado por DES con otros sistemas ms complejos, como combinaciones de XOR o uso de f-funciones (de tres
formas distintas y excluyentes).
En el RFC citado arriba se puede encontrar una descripcin detallada de su funcionamiento e implementacin.

Algoritmos HASH
Los criptosistemas de resumen, conocidos familiarmente como funciones o algoritmos hash, constituyen un tipo especial de
criptosistemas. Muchos manuales de criptografa los sitan como un subgrupo de los criptosistemas simtricos, pero a m me gusta
considerarlos como un grupo independiente debido a sus caractersticas especiales.
Para empezar, en los algoritmos hash no existe el concepto de clave criptogrfica, ni tampoco el concepto de descifrado; el
concepto de algoritmo criptogrfico se mantiene; y surge un nuevo concepto denominado fingerprint, huella digital, resumen hash.
As pues, un algoritmo tipo hash acepta como entrada un mensaje de longitud arbitraria, y tras efectuar sobre l los clculos
determinados por el algoritmo, devuelve una cadena de caracteres que representa el hash del mensaje al que aplicamos el algoritmo.
Este hash NO puede ser denominado criptograma dado que no es posible el proceso de descifrado que nos devolvera el mensaje
original.
Para que quede ms claro, vamos a ver las caractersticas que definen a los criptosistemas de tipo hash:

Unidireccional: Conocido un hash, es computacionalmente imposible la reconstruccin del mensaje original.


Compresin: A partir de un mensaje de cualquier longitud se obtiene un hash de un tamao fijo, normalmente menor que
el del mensaje original.
Difusin: El resumen es una funcin compleja de todos los bits del mensaje.
Colisin simple: Se conoce como resistencia dbil a las colisiones el hecho de que dado un mensaje cualquiera, es
computacionalmente imposible encontrar otro mensaje cuyo hash sea igual.
Colisin fuerte: Se conoce como resistencia fuerte a las colisiones el hecho de que sea computacionalmente difcil
encontrar dos mensajes cuyo hash sea idntico.

Estas caractersticas hacen de los criptosistemas hash el medio perfecto para autentificacin de todo tipo de informacin, con usos
que van desde la autentificacin de ficheros descargados a travs de Internet, hasta checksum de paquetes TCP/IP. Es tan sencillo
como conocer el hash de la informacin y una vez obtenida realizar de nuevo la funcin hash para comparar las cadenas de salida.
A continuacin vemos algunos de los principales algoritmos criptogrficos de tipo hash:
MD5: Message Digest 5 (1992)
RFC's relacionados
#1321 - The MD5 Message-Digest Algorithm - ftp://ftp.rfc-editor.org/in-notes/rfc1321.txt
#1810 - Report on MD5 Performance - ftp://ftp.rfc-editor.org/in-notes/rfc1810.txt
#1828 - IP Authentication using Keyed MD5 - ftp://ftp.rfc-editor.org/in-notes/rfc1828.txt
#1864 - The Content-MD5 Header Field - ftp://ftp.rfc-editor.org/in-notes/rfc1864.txt
Strapping (Junio/2005) Pgina 47 de 84 Seguridad Informtica

Descripcin
MD5 fue ideado por el matemtico Ron Rivest, y supone la evolucin de los algoritmos MD2 y MD4. Se trata de una funcin
criptogrfica de tipo hash que acepta como entrada un mensaje de cualquier longitud y devuelve como salida una cadena de 128 bits
(usualmente una cadena de 32 caracteres hexadecimales).
Su fcil implementacin y su gran popularidad le hacen uno de los principales algoritmos hash de la red, usado principalmente en
comprobacin de ficheros en Internet.
SHA-1: Secure Hash Algorithm - 1 (1994)
RFC's relacionados
#2841
IP
Authentication
using
Keyed
SHA1
with
Interleaved
- ftp://ftp.rfc-editor.org/in-notes/pdfrfc/rfc2841.txt.pdf
#3174 - US Secure Hash Algorithm 1 (SHA1) - ftp://ftp.rfc-editor.org/in-notes/pdfrfc/rfc3174.txt.pdf

Padding

(IP-MAC)

Descripcin
SHA-1 fue ideado por el NIST en 1994 como ampliacin al algoritmo SHA. Se trata de una funcin criptogrfica de tipo hash que
acepta una entrada de 2^64 bits como mximo (2048 Terabytes) y devuelve como salida una cadena de 160 bits.
SHA-1 es ligeramente ms lento que MD5, pero tambin es computacionalmente ms complejo y su salida es de mayor longitud,
por lo que se considera de forma global ms seguro.
RIPEMD-160: RACE Integrity Primitives Evaluation Message Digest - 160 (1996)
RFC's relacionados
#2286 - Test Cases for HMAC-RIPEMD160 and HMAC-RIPEMD128 - ftp://ftp.rfc-editor.org/in-notes/rfc2286.txt
#2857 - The Use of HMAC-RIPEMD-160-96 within ESP and AH - ftp://ftp.rfc-editor.org/in-notes/rfc2857.txt
Descripcin
RIPEMD-160 fue ideado por Hans Dobbertin, Antoon Bosselaers,y Bart Preneel como ampliacin del algoritmo RIPEMD. Se trata
de una funcin criptogrfica de tipo hash que acepta una entrada un mensaje de cualquier longitud y devuelve como salida una cadena
de 160 bits.
A pesar de haberse desarrollado mucho ms libre que SHA-1, no es muy popular y tampoco ha sido muy estudiado por criptlogos.
No obstante existen dos extensiones de este algoritmo (que son menos usadas an) denominadas RIPEMD-256 y RIPEMD-320. Las
longitudes de sus salidas son respectivamente 256 y 320 bits, con lo que se reduce significativamente las colisiones dbiles y fuertes.

Algoritmos asimtricos
Se trata de criptosistemas ms modernos y complejos que los simtricos, a la vez que mucho ms seguros. Se fundamentan en la
existencia de un par de claves complementarias que denominamos clave pblica y clave privada respectivamente (aunque ambas
pueden actuar como pblica o privada, su funcin la da el usuario mediante su utilizacin). Un criptograma generado por una de las
claves puede ser descifrado nicamente por la otra clave, y viceversa.
A pesar de ser computacionalmente mucho ms complejos, son el estndar hoy en da, usados en sistemas que combinan cifrado
asimtrico y simtrico (Pretty Good Privacy y Secure Socket Layer entre ellos).
Estos sistemas duales aunan las ventajas de ambos sistemas, pues un cifrado continuado en clave asimtrica requiere mucho
esfuerzo computacional, y un sistema de clave simtrica no es seguro per se, pues necesita un canal seguro de traspaso de
informacin para la clave. El cifrado asimtrico proporciona ese canal seguro de traspaso de informacin, y el uso de claves nicas en
cifrado simtrico garantiza la seguridad a la vez que se reduce sensiblemente el nivel de recursos necesarios.

Strapping (Junio/2005) Pgina 48 de 84 Seguridad Informtica

Existen principalmente tres familias de algoritmos asimtricos, segn el principio matemtico en el que basan su potencia y
seguridad:

Problema de la factorizacin entera:


Estos algoritmos basan su seguridad en una debilidad de las mquinas de cmputoactuales. Para un computador es
relativamente trivial el clculo de enormes productos opotencias, pero el proceso contrario resulta muy costoso.As pues, la
potencia de estos algoritmos reside en que no existe un mtodo eficiente parafactorizar nmeros enteros muy grandes.A esta
familia pertenecen RSA (Rivest-Shamir-Adleman) y RW (Rabin-Williams) entre otros.

Problema del logaritmo discreto del grupo multiplicativo de un campo finito:


La potencia de los algoritmos basados en el problema del logaritmo discreto se basan en que no existe un mtodo
x

eficiente de calcular x a partir de la expresin y = a (mod p) donde p es un nmero primo. Matemticamente se trata de un
mtodo bastante ms complejo, pero computacionalmente es igual de complicado que el problema de la factorizacin entera.
A esta familia pertenecen DH (Diffie-Hellman), DSA (Digital Signature Algorithm), ElGamal y Nyberg-Rueppel entre otros.

Problema del logaritmo discreto sobre el grupo de puntos racionales de una curva elptica sobre un campo finito:
Este grupo es un derivado del problema del logaritmo discreto, solo que en lugar de estudiarlo en un grupo multiplicativo,
lo estudia en curvas elpticas (no obstante este grupo es conocido tambin como mtodo de curvas elpticas). Este mtodo
es relativamente moderno (surgi en 1986 de la mano de Miller). Estos algoritmos basan su potencia en que el clculo de
logaritmos sobre un sistema de curvas elpticas es computacionalmente an ms costoso que su clculo sobre cuerpos
finitos. No hay muchos algoritmos de curvas elpticas definidos, pero no obstante existen versiones elpticas de los algoritmos
DH (Diffie-Hellman) y ElGamal.

Existe un cuarto grupo de criptografa asimtrica, los criptosistemas probabilsticos, que fundamentan su potencia en el hecho de
que un mismo texto en claro puede dar lugar a un gran nmero de criptogramas distintos. Estos sistemas evitan la fuga de informacin
que supone el cifrado asimtrico tradicional (PKCS) (C = E k(M)), pero no han sido muy estudiados an, y mucho menos trasladados a
criptosistemas informticos.
El concepto de firma digital, derivado de la combinacin de criptografa asimtrica y algoritmos hash es tambin de capital
importancia, pero lo trataremos en el apartado de PGP.
A continuacin vemos algunos de los principales algoritmos criptogrficos asimtricos:
RSA: Rivest - Shamir - Adleman (1978)
RFC's relacionados
#2792 -DSA and RSA Key and Signature Encoding for the KeyNote Trust Management System ftp://ftp.rfc-editor.org/in-notes/rfc2792.txt
#3110 - RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS) ftp://ftp.rfc-editor.org/in-notes/rfc3110.txt
#3447 -Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version
2.1 - ftp://ftp.rfc-editor.org/in-notes/rfc3447.txt
Documentos relacionados
[COCK73] Clifford Cocks, A Note on 'Non-Secret Encryption', CESG Research Report, 20 Noviembre 1973,
<http://www.cesg.gov.uk/publications/media/nsecret/notense.pdf>.
[RIVE78] R. Rivest, A. Shamir and L. Adleman, A Method for Obtaining Digital Signatures and Public-Key Cryptosystems.
Communications of the ACM, 21 (2), pp. 120-126, Febrero 1978.
[RSA78] R.L. Rivest, A. Shamir, and L.M. Adleman, Communications of the ACM (2) 21, (1978), 120-126.
[KALI93] Burton Kalinski, Some Examples of the PKCS Standards, RSA Laboratories, Noviembre 1993,
<ftp://ftp.rsasecurity.com/pub/pkcs/ascii/examples.asc>.
[PKCS1]
RSA
Laboratories,
PKCS
#1
v2.1:
RSA
Encryption
Standard,
Junio
2002,
<http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html>.
Descripcin
El algoritmo RSA naci en 1978 de la mano de Ron Rivest, Adi Shamir y Leonard Adleman [RSA78]. Se trata de un algoritmo de
cifrado asimtrico basado en el problema de la factorizacin entera, y aunque la descripcin de este algoritmo fue propuesta en 1973
por Clifford Cocks [COCK73], fue secreta hasta 1978 cuando se public RSA. Aunque el algoritmo fue patentado, la patente expir en el
ao 2000 y actualmente se trata de un algoritmo libre.
Strapping (Junio/2005) Pgina 49 de 84 Seguridad Informtica

Echemos un vistazo al algoritmo RSA:


1

Escoger dos nmeros primos muy grandes p y q (secretos) y calcular el nmero n (pblico) correspondiente
a su producto, n = p * q

Escoger la clave de descifrado constituida por un gran nmero entero d (secreto), que es primo con
el nmero (n) (secreto) obtenido mediante: (n) = (p-1) * (q-1)

Calcular el entero e (pblico) tal que 1 e (n) , mediante la frmula: e * d = 1 (mod (n))

Hacer pblica la clave de cifado (e, n)

Para cifrar texto, es necesario previamente codificar el texto en un sistema numrico en base b dividindolo
en bloques de tamao j-1 de forma que b j-1 < n < b j

Cifrar cada bloque M i transformndolo en un nuevo bloque de tamao j C i de acuerdo con la expresin
C i M i e (mod n)

Para descifrar el bloque C i , se usa la clave privada d segn la expresin: M i C i d (mod n)


* FUENTE: Pino Caballero Gil, Introduccin a la Criptografa2 Edicin actualizada, Ra-Ma. (2002), 55. ISBN 84-7897-520-9

Veamos un ejemplo eminentemente prctico de cmo generar un criptosistema RSA:


1
2
3
4
5

Seleccionamos dos nmeros primos p = 11 y q= 3.


Calculamos N =p * q y = (p-1) * (q-1) = 10 * 2 = 20
Elegimos el exponente e = 3 comprobando mcd (e, p-1) = mcd (3, 10) = 1 y...mcd (e, q-1) = mcd (3, 2) = 1 , lo que implica
que... mcd (e, ) = mcd (e, (p-1) (q-1)) = mcd (3, 10, 2) = 1
Calcular d tal que e * d = 1 (mod (n) ) , por ejemplo d=7 (comprobamos e * d-1 = 3 * 7-1 = 20 que es divisible por )
Clave Pblica = (n, e) = (33, 3)Clave Privada = (n, d) = (33, 7)

Ahora podemos ver un ejemplo de cmo generar un mensaje cifrado con RSA:
1

Queremos encriptar el mensaje m = 7

2
3

Calculamos el cifrado c = m mod n =7 mod 33 = 343 mod 33 = 13


Nuestro texto cifrado es c = 13

4
5

Calculamos el descifrado m' = c mod n = 13 mod 33 = 7


El mensaje descifrado es m' = 7

Hoy en da RSA es el algoritmo asimtrico de cifrado ms usado, tanto en conexiones de Internet y protocolos seguros, como en
cifrado de datos (por ejemplo en el sistema PGP). Las longitudes de clave usadas hoy en da varan desde los 512 hasta los 4096 bits,
aunque se suelen tomar de forma habitual claves de 1024 puesto que las de 512 no se consideran suficientemente seguras. Este
tamao puede parecer pequeo, pero permite la generacin de claves de longitudes de hasta 1233 cifras con 4096 bits (concretamente
hasta 1,0443888814131525066917527107166 * 10^1233).
No obstante, RSA no es infalible, y como ya dijimos la enorme complejidad computacional del problema de la factorizacin entera
se debe a una limitacin de los computadores actuales. Sin embargo, en el momento en el que se puedan construir computadores
cunticos (que trabajen con lgica ternaria en lugar de lgica binaria) suficientemente potentes, mediante la debida implementacin del
algoritmo de Shor (ideado por Peter Shor en 1994) este trabajo sera trivial y permitira resolver criptosistemas basados en el problema
de factorizacin entera en un tiempo polinomial. De hecho en el ao 2001, IBM demostr el algoritmo de Shor mediante su
implementacin en un computador cuntico de 7 qubits, factorizando 15 en 3 y 5.
Podemos encontrar ms informacin
http://en.wikipedia.org/wiki/Shor's_algorithm.

sobre

el

algoritmo

de

Shor,

as

como

el

propio

Strapping (Junio/2005) Pgina 50 de 84 Seguridad Informtica

algoritmo

en:

DH/DSS: Diffie -Hellman / Digital Standard Signature (1976 / 1991)


RFC's relacionados
#2539 - Storage of Diffie-Hellman Keys in the Domain Name System (DNS) - ftp://ftp.rfc-editor.org/in-notes/rfc2539.txt
#2631 - Diffie-Hellman Key Agreement Method - ftp://ftp.rfc-editor.org/in-notes/rfc2631.txt
#2785 -Methods for Avoiding the "Small-Subgroup" Attacks on the Diffie-Hellman Key Agreement
Method for S/MIME - ftp://ftp.rfc-editor.org/in-notes/rfc2785.txt
#2875 - Diffie-Hellman Proof-of-Possession Algorithms - ftp://ftp.rfc-editor.org/in-notes/rfc2875.txt
#3526 - More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE) ftp://ftp.rfc-editor.org/in-notes/rfc3526.txt
Documentos relacionados

[DIH76] W. Diffie and M.E. Hellman, IEEE Transactions on Information Theory 22, (1976), 644-654.
[ELG85] T. ElGamal, IEEE Transactions on Information Theory 31, (1985), 469-472.
[DVW92] W. Diffie, P.C. van Oorschot, and M.J. Wiener, Designs, Codes and Cryptography 2, (1992), 107-125.
[PKCS3] RSA Laboratories, PKCS #3 1.4: Diffie-Hellman Key-Agreement Standard, Noviembre 1993,
<ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-3.asc>.
[MAU94] U. Maurer, Advances in Cryptology, Crypto '94, Springer-Verlag (1994), 271-281.

Descripcin
La historia del nacimiento del algoritmo DH/DSS es bastante compleja. En 1976, Dres. W. Diffie y M.E. Hellman publicaron el
documento [DIH76] en el que naci el sistema Diffie-Hellman como algoritmo de intercambio de claves. En aquella poca, Diffie y
Hellman crean que su algoritmo no poda constituir un criptosistema asimtrico completo para cifrado de clave pblica. Tuvieron que
pasar muchos aos hasta que en 1985 ElGamal publicara [ELG85] y demostrara que se poda desarrollar un criptosistema asimtrico
completo a partir del sistema Diffie-Hellman, lo que supuso el nacimiento del algoritmo DH.
Pero an haba un problema, pues el sistema de firma ideado por ElGamal ocasionaba que la firma de un mensaje ocupara el doble
que el mensaje original, lo cual representaba un problema grave de eficiencia. Este problema fue corregido en 1991, cuando el NIST
propuso un sistema de firma nuevo para el sistema Diffie-Hellman, que denominaron DSS (Digital Standard Signature). As, en 1991
naci el algoritmo completo que hoy conocemos como DH/DSS.
DH/DSS es un algoritmo de cifrado asimtrico basado en el problema del logaritmo discreto del grupo multiplicativo de un campo
finito. Aunque matemticamente es mucho ms complejo con diferencia que el problema de la factorizacin entera, se ha demostrado
que ambos son computacionalmente de una complejidad muy similar. Hay que decir, eso s, que DH/DSS y los dems algoritmos
basados en el problema del logaritmo discreto no tiene sobre su cabeza la espada de Damocles que supone el algoritmo de Shor para
los criptosistemas basados en el problema de la factorizacin entera.
Ahora echemos un vistazo al algoritmo DH/DSS:
1

Sern de informacin pblica un nmero primo grande p y a, una raz primitiva de 1 mdulo p (es decir, tal que a p-1 (mod p)
y a d-1 (mod p) para todo d tal que 1<d<p )

La clave privada del usuario B es un entero k B escogido dentro del intervalo [1 , p-1]

La clave pblica de B es el entero K B a k B (mod p)

Se supone que el emisor A quiere enviar un mensaje M (1 M p-1) al receptor B


Proceso de Cifrado (e)

1e

Escoger aleatoriamente un entero k A tal que 1 k A p-1 , que constitye su clave secreta

2e

Calcular la clave de cifrado a partir de su propia clave privada y la clave pblica de B, Q K kB A (mod p)

3e

Cifrar el mensaje M segn la expresin C Q * M (mod p)


Proceso de Descifrado (d)

1d

Obtener Q gracias a la clave pblica de A, K A , y a su propia clave secreta mediante la frmula Q K kA B (mod p)

2d

Recuperar M a partir de M (Q -1) p * C (mod p) donde (Q -1) p denota el inverso de Q en mdulo p


Strapping (Junio/2005) Pgina 51 de 84 Seguridad Informtica

* FUENTE: Pino Caballero Gil, Introduccin a la Criptografa 2 Edicin actualizada, Ra-Ma. (2002), 65. ISBN 84-7897-520-9
Es importante sealar que aunque el sistema Diffie-Hellman siempre ha sido libre, la patente que lo cubra (US 4.200.770) expir el
6 de Septiembre de 1997.
RW: Rabin - Williams (1980)
Documentos relacionados

[RAB79] M.O. Rabin, Digitalized signatures and public-key functions as intractable as factorization, Technical Report
MIT/LCS/TR-212, MIT, 1979.
[WEL88] D. Welsh, Codes and Cryptography, Claredon Press, 1988.

Descripcin
En 1979 M.O. Rabin ide un sistema a partir de las bases sentadas por RSA. Sin embargo, hay una sutil diferencia, pues en el
sistema RSA, resolver el problema general de la factorizacin implica romperlo, pero no de forma inversa. En el sistema de Rabin,
ambos preceptos se cumplen. Este defecto de base fue corregido en 1980 por H.C. Williams, dando lugar al algoritmo RW.
RW es un algoritmo de cifrado asimtrico basado en el problema de la factorizacin entera (al igual que RSA). No obstante, este
algoritmo no ha sido prcticamente estudiado ni usado por la comunidad criptogrfica moderna.
Echemos un vistazo al algoritmo RW:
1

Escoger dos grandes primos p y q (secretos) y definir n (pblico) mediante su producto, n = p * q (pblico)

Escoger un entero B < n que ser parte de la clave pblica (B,n)

Para cifrar un texto, es necesario previamente codificar el texto en un sistema de base b dividindola previamente en
bloques de tamao j-1 de forma que cumpla b j-1 < n < b j

Cifrar el bloque M i segn la expresin C i M i (M i + B) (mod n)

Para descifrar el criptograma C i , hay que construir el mensaje M i = a * u + b * v a partir de las soluciones de las
ecuaciones u 2 + B * u C i (mod p) y v 2 + B * v C i (mod q) , y los enteros a y b tales que a 1 (mod p) , a 0 (mod q) ,
b 0 (mod p) y b 1 (mod q)

* FUENTE: Pino Caballero Gil, Introduccin a la Criptografa 2 Edicin actualizada, Ra-Ma. (2002), 62. ISBN 84-7897-520-9
Por descontado, al estar basado este algoritmo en el mismo problema que RSA, posee igualmente sus mismas debilidades, y es
tambin extremadamente vulnerable al criptoanlisis cuntico.
Otros sistemas asimtricos:
El ltimo gran grupo de criptografa asimtrica es el mtodo de las curvas elpticas. ste surgi en 1986 de la mano de Miller con la
publicacin del documento:

[MIL86] V.S. Miller, Use of Elliptic Curves in Cryptography, Advances in Cryptology-CRYPTO'85, Lecture Notes in Computer
Science, Springer-Verlag, 1986.
El sistema de curvas elpticas se inspira en el sistema de ElGamal, con el grupo aditivo de puntos de la curva representando el
papel del grupo multiplicativo.
Se trata de un sistema mucho ms complejo, tanto matemtica como computacionalmente, que los mtodos tradicionales
(factorizacin y logaritmo nico), pero proporciona un nivel de seguridad mucho mayor. As, se ha evaluado que una clave de un
sistema de curvas elpticas de 210 bits es igual de segura que una clave RSA de 2048 bits.
Aunque existen versiones elpticas de sistemas como DH ElGamal, y a pesar de ser uno de los campos ms estudiados por la
criptografa moderna, no han sido implementados de una manera efectiva an, y no gozan de mucha importancia. No obstante, se trata
de un campo de estudio relativamente moderno y por desarrollar.
Strapping (Junio/2005) Pgina 52 de 84 Seguridad Informtica

Existen otros dos sistemas importantes no mencionados anteriormente:

Problema de la mochila: Se trata de un sistema ideado en 1978 por Merkle y Hellman en el algoritmo Merkle-Hellman [MEH78] y
que toma su nombre de una metfora del algoritmo, puesto que se presenta como una mochila de tamao N donde queremos
meter n objetos pero rellenando el espacio sobrante hasta completar N. Aunque el problema general de la mochila es muy
complejo y constituye un problema NP-completo, todas las versiones de este sistema han sido rotas y no es usado salvo con
fines didcticos

Teora de la codificacin algebraica: Este sistema fue ideado por McEliece en 1978 y dio lugar al algoritmo McEliece [MCE78].
Basa su potencia en el hecho de que la decodificacin de un cdigo lineal general es un problema NP-completo. En este
algoritmo juega un papel crucial la teora de la codificacin. Un punto importante a la hora de entender la complejidad
computacional de este algoritmo es el hecho de que no trabaje con cifras enteras, sino con matrices. Adems, se introduce un
gran factor de expansin de datos, en funcin de las palabras del cdigo de Goppa, y se produce un desorden intencionado
mediante la adicin de ruido. Por desgracia su aplicacin de momento no pasa del mbito terico, y no se han desarrollado
criptosistemas de clave pblica sobre este algoritmo, aunque est siendo investigado hoy en da.

El ltimo grupo del que hablaremos brevemente es el de los criptosistemas probabilsticos. Este sistema se basa en las nociones
que Micali y Goldwaser publicaron en el documento [GOM82]:

[GOM82] S. Goldwasser, S. Micali, Probabilistic Encryption and How to Play Mental Poker Keeping Secret all Partial
th

Information, Proceedings of the 14 ACM Symposium on Theory of Computing, 365, 1982.


Basa su potencia en que no existe un clculo factible para obtener informacin del texto en claro a partir del criptograma. Esto se
logra mediante la virtual existencia de un gran nmero de criptogramas distintos para un mismo texto en claro de partida.
Se puede considerar, de hecho, un Sistema de Secreto Perfecto de Shannon, pero con la ventaja aadida del uso personalizado
de claves criptogrficas. Por desgracia an no se han podido desarrollar criptosistemas informticos completos a partir de este sistema.
El sistema PGP
Corra el ao 1991 y en Estados Unidos comenzaba a tomar forma el rumor de que el Gobierno pretenda prohibir el uso de la
criptografa en las lneas de comunicacin. La criptografa haba alcanzado un nivel de desarrollo que haba escapado al control de
gobiernos y servicios de inteligencia, y por ello se comenz a pensar en controlarla. Mucha gente comenz a preocuparse por el
incipiente rumor, y un programador llamado Philip Zimmermann decidi poner remedio, haba que hacer que no fuera posible prohibir la
criptografa.
Zimmermann escogi los mejores algoritmos del momento de cifado simtrico (IDEA), asimtrico (RSA)y hash (MD5) y cre el
programa llamado Pretty Good Privacy (PGP), un software de cifrado al nivel ms alto y totalmente libre de puertas traseras o control
alguno. Comenz a distribuirlo por BBSs de forma gratuita (freeware) y la gente respondi distribuyndolo por todo el pas. De repente
no era posible prohibir la criptografa porque estaba demasiado extendida y se haba convertido en el estndar de cifrado y firma de
correo electrnico.
Los problemas no tardaron en llegar. En ese mismo ao (1991) alguien distribuy el programa en USENET y ste comenz a
distribuirse y usarse fuera de Estados Unidos. No tardaron en acusar a Zimmermann de violar la legislacin ITAR del Departamento de
Estado Americano sobre exportacin de armas. S, en Estados Unidos la criptografa se considera un arma equiparable al armamento
pesado, los carros de combate o las armas qumicas. Adems, RSA Data le acus de violar el copyright del algoritmo RSA (que por
aquel entonces an estaba patentado). As, se formaron dos frentes de problemas legales contra Philip.
Para intentar paliar el problema con RSA Data, se lleg a la determinacin de desarrollar dos versiones paralelas de PGP: el propio
PGP en Estados Unidos y Canad, usando la librera RSAREF; y la versin PGPi (de International) que se desarrollo para el resto del
mundo en Europa, usando la librera MPILIB desarrollada por el propio Zimmermann. An as, el proceso con RSA Data continu.
Ambos problemas se terminaron solucionando en 1996. Respecto a la supuesta violacin de la legislacin ITAR, el 11 de Enero de
1996 el abogado de Zimmermann recibi una escueta carta con el siguiente texto:
"La Oficina del Fiscal del Distrito Norte de California ha decidido que su cliente, Philip Zimmermann, no ser juzgado por el envo a
USENET en junio de 1991 del programa de encriptacin Pretty Good Privacy. El caso queda cerrado".

Strapping (Junio/2005) Pgina 53 de 84 Seguridad Informtica

Tambin fue publicada un no menos escueto comunicado a la prensa:


"Michael J. Yamaguchi, Fiscal del Distrito Norte de California, ha anunciado que su Oficina ha decidido abandonar la causa contra
cualquier individuo supuestamente implicado en el envo a USENET en junio de 1991 del programa de encriptacin Pretty Good
Privacy. El caso queda cerrado, y la Oficina no har ms declaraciones".
Y de ese problema no volvi a saberse nada, ni se hicieron ms declaraciones.
El proceso que RSA Data inici contra Zimmermann tambin termin en 1996, siendo declarado inocente y absuelto. Ese mismo
ao cre su propia compaa, Pretty Good Privacy Inc., y comenz a desarrollar software (por supuesto entre ese software se
encontraba PGP) dentro de Estados Unidos. Las versiones internacionales de PGP siguieron desarrollndose en Europa.
El ao siguiente, 1997, supuso un cambio radical para PGP. Pretty Good Privacy Inc. fue absorbida por Network Associates, y
Zimmermann qued relegado a un puesto de asesor. As mismo, se public la primera versin para Windows, la 5, que cambiaba la
lnea de comandos DOS por un entorno grfico. A partir de esta versin comenzaron a incorporarse nuevos algoritmos.
Aunque durante un tiempo PGP perdi mucho de su espritu original, hoy en da por fortuna vuelve a ser lo que era. An as mucha
gente sigue prefiriendo la ltima versin de DOS que se public antes del cambio de manos de PGP, la 2.6.3 bajo lnea de comandos,
con soporte nico para RSA-IDEA-MD5.
La versin actual de PGP es la 8.03. Existen dos versiones de PGP: una de pago, y otra freeware (con ciertas limitaciones) que
puede descargarse desde http://www.pgp.com/products/freeware.html. Aunque PGP NO es software libre, su cdigo fuente vuelve a
estar disponible para ser descargado y consultado por el pblico general en http://www.pgp.com/products/sourcecode.html.
Hoy en da PGP trabaja con los siguientes algoritmos:

Encriptacin simtrica: AES (Rijndael), CAST, TripleDES, IDEA, Twofish.


Encriptacin asimtrica: RSA, RSA Legacy, DH/DSS.
Hash: MD5, SHA-1, RipeMD (slo para claves RSA).

Es importante hablar tambin de openPGP. A partir de la idea de PGP, se desarroll en Noviembre de 1998 el estndar openPGP,
gracias al cual cualquiera puede integrar en una aplicacin compatibilidad con el sistema PGP a travs de una implementacin de
openPGP (ciertos clientes de correo electrnico incluyen esta funcionalidad). Es conveniente leer los siguientes RFC's referidos a
openPGP:
#2440 - OpenPGP Message Format -ftp://ftp.rfc-editor.org/in-notes/rfc2440.txt
#3156 - MIME Security with OpenPGP -ftp://ftp.rfc-editor.org/in-notes/rfc3156.txt
Por ltimo (pero no menos importante) hay que hablar de la implementacin openPGP ms famosa y usada: GNU Privacy Guard
(GnuPG, GPG). GnuPG es un reemplazo libre y completo del sistema PGP, cumpliendo los estndares de openPGP. Trabaja con los
mismos algoritmos que las versiones actuales de PGP excepto IDEA, pues se encuentra patentado an y no es libre en el territorio de
Estados Unidos y Canad. No obstante se puede aadir el algoritmo IDEA a GnuPG mediante un parche, pero slo debemos hacerlo
en caso de residir en pases donde IDEA est libre de patentes (Espaa por ejemplo).
GPG es completamente software libre, bajo los trminos de la licencia GNU General Public License (GPL) y hoy da est muy
extendido, contando incluso con apoyo econmico del Ministerio de Economa y Tecnologa de la Repblica Federal de Alemania para
su desarrollo.
La primera versin de GnuPG (1.0.0) fue liberada el 7 de Septiembre de 1999, y la ltima versin disponible a da de hoy es la 1.2.4
que podemos descargar desde su sitio web http://www.gnupg.org/. GnuPG tiene actualmente soporte para gran cantidad de sistemas,
entre ellos: GNU/Linux, GNU/Hurd, FreeBSD, OpenBSD, NetBSD, Microsoft Windows, PocketConsole, MacOS X, AIX, BSDI, HPUX,
IRIX, MP-RAS, OSF1, OS/2, SCO UnixWare, SunOS, Solaris, USL UnixWare.
GnuPG es una aplicacin de lnea de comandos, pero existen muchas Interfaces Grficas de Usuario (GUI, Graphic User Interface)
para integrarlo en un escritorio Unix e incluso Windows. Las ms famosas son GPA, GnomePGP, KGpg y TkPGP. No obstante, la ms
recomendada (yo la uso personalmente) es GPA (GNU Privacy Assistant), que adems es mantenido por el propio equipo de GnuPG.
GPA es una aplicacin grfica que utiliza GTK (El Gimp Tool Kit). La ltima versin de GPA es la 0.70, que puede ser encontrada en
http://www.gnupg.org/(es)/download/index.html#gpa.
Ya conocemos los algoritmos criptogrficos, conocemos la historia de PGP y sus implementaciones. Es el momento de empezar a
comprender el funcionamiento de PGP. Vamos a ver algunas de las principales funciones de los sistemas openPGP, explicando la
teora de su funcionamiento, y cmo realizarlas en los sistemas openPGP ms usados: PGP (versin 8.03), GnuPG (versin 1.2.4) y
GPA (versin 0.70).
Strapping (Junio/2005) Pgina 54 de 84 Seguridad Informtica

Es importante recomendar tambin la lectura de los manuales de PGP (Help > Contents and Index) GnuPG (man gpg)
detalladamente para poder aprovechar todo el potencial que estos programas nos brindan.
El anillo de claves
Qu?
Ya sabemos lo que es una clave criptogrfica. Antes de ver cmo generar nuestra propia clave, es importante saber cmo se
manejan y almacenan en nuestro PC. En el sistema openPGP existe un concepto muy importante, el concepto de armadura. Una
armadura es un elemento openPGP (clave, criptograma, firma, anillo de claves...) representado en caracteres ASCII y con unas
cadenas de inicio y final predefinidas. Veamos algunos ejemplos:
-----BEGIN PGP SIGNED MESSAGE----Hash: {algoritmo de hash}

-----BEGIN PGP MESSAGE----Version: {versin}

{mensaje firmado}

{mensaje cifrado}

-----BEGIN PGP SIGNATURE----Version: {versin}

-----END PGP MESSAGE----

{firma}
-----END PGP SIGNATURE---******************************************************

******************************************************
-----BEGIN PGP PUBLIC KEY BLOCK----Version: {versin}
{clave pblica}
-----END PGP PUBLIC KEY BLOCK-----

Estas estructuras son lo que denominamos armaduras ASCII o ASCII armor. Mediante ese sistema, y en texto plano (que
normalmente se representa en ficheros *.asc) podemos transportar fcilmente cualquier elemento openPGP. Hay que saber tambin
que existe otro formato denominado MIME/PGP.
A partir de estas armaduras (que pueden combinarse para obtener, por ejemplo, mensajes encriptados y firmados) se constituye el
anillo de claves o keyring. Existen dos anillos, el de claves pblicas (public keyring) que contiene, adems de nuestras propias claves
pblicas, todas las claves pblicas de otras personas que importemos para usar; y el de claves privadas (secret keyring) que contendr
nuestras claves privadas. En el anillo podemos ver la clave, el nombre, el correo, el ID de clave (KeyID)...
Cmo?
PGP: 1. Abrir el programa PGPkeys
GPG: 1. Anillo de claves pblicas: gpg list-keys
2. Anillo de claves privadas: gpg list-secret-keys
GPA: 1. Abrir el programa GPA (Editor del anillo)

Generar un par de claves


Qu?
Es el momento de generar un par de claves pblica/privada (public/private key pair). Es importante entender que se trata de un par
de claves complementarias a las que se les asigna una utilidad en el criptosistema. Una vez generado nuestro par de claves, pasar a
formar parte de nuestro anillo de claves y podremos usarlas, exportarlas y modificarlas.
Hay que mencionar el concepto de passphrase. Al igual que un password es una palabra que protege el acceso a un sistema
(contrasea), un passphrase es una frase que protege el uso de la clave privada. Tambin la llamamos contrasea en castellano. Se
almacena en formato de hash criptogrfico dentro de la propia clave.
A la hora de crear un par de claves, debemos elegir si queremos usar el algoritmo RSA o DH/DSS. Esa es una eleccin personal y
ya conocemos los detalles de cada algoritmo. Yo personalmente eleg RSA, pero la mayora de la gente prefiere DH/DSS (tambin es
cierto que se trata del sistema por defecto y poca gente se molesta en personalizar el proceso de generacin).

Strapping (Junio/2005) Pgina 55 de 84 Seguridad Informtica

Tambin debemos decidir si queremos que nuestra clave sea imperecedera o que caduque en x tiempo.
Cmo?
PGP
1
2
3
4
5

Abrir el programa PGPkeys


Men Keys >> New Key
Elegimos la opcin Expert Mode
Introducimos nombre, correo electrnico, y elegimos algoritmo, tamao y fecha de expiracin
Introducimos por duplicado el passphrase a usar

GPG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Ejecutamos el comando gpg --gen-key


Elegimos el tipo de clave (1-DSA y ELGamal (por defecto); 2-DSA (firmar), 4-RSA (firmar))
Elegimos el tamao (1024-4096) y confirmamos
Elegimos la caducidad (nunca, n das, n semanas, n meses, n aos) y confirmamos
Introducimos nombre y apellidos
Introducimos la direccin de correo electrnico
Introducimos un comentario para la clave (opcional)
Podemos cambiar algn dato o confirmar de forma general la clave
Introducimos por duplicado el passphrase a usar
Esperamos a que termine la generacin de entropa para la clave
*Si es necesario generar una clave de cifrado, ejecutamos el comando gpg --edit-key <KeyID>
*Ejecutamos el comando addkey y nos autentificamos mediante el passphrase
*Elegimos el tipo de clave (2-DSA (firmar); 3-ElGamal (cifrar); 4-RSA (firmar); 5-RSA (cifrar))
*Elegimos el tamao (1024-4096) y confirmamos
*Elegimos la caducidad (nunca, n das, n semanas, n meses, n aos) y confirmamos

GPA
1
Abrir el programa GPA (Editor del anillo)
2
Men Claves >> Nueva Clave
3
Elegimosel algoritmo y el tamao, introducimos el nombre, correo electrnico, comentario (opcional), caducidad y el
passphrase de la clave por duplicado
Cambiar el passphrase
Qu?
Quiz en algn momento deseemos poder cambiar el passphrase que seleccionamos en la creacin de nuestro par de claves. Con
cualquier software compatible con openPGP es posible.
Cmo?
PGP
1
2
3
4

Abrir el programa PGPkeys


BDR sobre la clave >> Key Properties
Seleccionamos Change Passphrase...
Nos autentificamos mediante el passphrase e introducimos por duplicado el nuevo passphrase

GPG
1
Ejecutamos el comando gpg --edit-key <KeyID>
2
Ejecutamos el comando passwd y nos autentificamos mediante el passphrase
3
Introducimos por duplicado el nuevo passphrase
GPA
1
2
3
4

Abrir el programa GPA (Editor del anillo)


BDR sobre la clave >> Editar Clave Privada
Seleccionamos Cambiar Contrasea
Nos autentificamos mediante el passphrase e introducimos por duplicado el nuevo passphrase

Strapping (Junio/2005) Pgina 56 de 84 Seguridad Informtica

Consultar el fingerprint
Qu?
Cuando queremos aadir a nuestro anillo de claves una clave pblica ajena para ser usada en comunicaciones seguras, debemos
poder cerciorarnos de que esa clave pertenece de hecho a esa persona. Para ello existe el fingerprint o huella digital. El fingerprint es el
hash de la clave pblica. As, cuando queremos obtener la clave pblica de una persona, debemos obtener de esa persona por un
medio seguro (preferentemente en persona) el fingerprint hexadecimal de su clave pblica. Luego bajamos su clave de un servidor de
claves (ms adelante hablaremos de ello) y comprobamos que el fingerprint coincide (ya conocemos los algoritmos hash y sabemos en
qu se basa su seguridad).
Por ejemplo, este sera el fingerprint de mi clave pblica (KeyID 0xAF9593E1):
6FAB 9799 C61A A7D2 A409 8A53 6F6F 3938 AF95 93E1
Cmo?
PGP
1
Abrir el programa PGPkeys
2
BDR sobre la clave >> Key Properties
3
Campo Fingerprint (seleccionamos la opcin hexadecimal si no est activada)
GPG
1. Ejecutamos el comando gpg --fingerprint <KeyID>
GPA
1
Abrir el programa GPA (Editor del anillo)
2
BID sobre la clave
3
Campo detalles, huella dactilar
Importar una clave
Qu?
Tanto si se trata de una copia de seguridad de nuestras claves privadas como de claves pblicas que deseamos tener en nuestro
anillo de claves, una opcin muy importante es la de poder importar claves de armaduras ASCII. Existe otro mtodo de importacin de
claves, a travs de un servidor de claves, pero lo trataremos ms adelante. Este mtodo es vlido nicamente para importar ficheros
*.asc de armadura ASCII que contenga una o ms clave/s pblica/s y/o privada/s.
Cmo?
PGP
1
Abrir el programa PGPkeys
2
Men Keys >> Import...
3
Seleccionamos la opcin Import
GPG
1
Ejecutamos el comando gpg --import <fichero>
GPA
1
Abrir el programa GPA (Editor del anillo)
2
Men Claves >> Importar Claves
Exportar una clave pblica
Qu?
Para poder distribuir nuestra clave pblica y que la gente pueda comunicarse de forma segura con nosotros, debemos poder
exportar nuestra clave pblica. Existe otro mtodo de exportacin de claves, a travs de un servidor de claves, pero lo trataremos ms
adelante. Este mtodo es vlido nicamente para generar un fichero de armadura ASCII que contenga una o varias claves pblicas.

Strapping (Junio/2005) Pgina 57 de 84 Seguridad Informtica

Cmo?
PGP
1
Abrir el programa PGPkeys
2
BDR sobre la clave >> Export
GPG
1. Ejecutamos el comando gpg --armor --export <KeyID> <fichero>
GPA
1
Abrir el programa GPA (Editor del anillo)
2
BDR sobre la clave >> Exportar Claves
Exportar una clave privada
Qu?
Un punto muy importante es la realizacin de copias de seguridad de nuestras claves privadas, de forma que una eventual prdida
de datos importante en nuestro sistema no nos ocasione la prdida total de nuestras claves criptogrficas. Supongo que est claro que
el perder una clave privada supone perder cualquier fichero o mensaje encriptado a ella... Es importante sealar que ste es el nico
mtodo de exportacin de claves privadas. NO es posible exportar claves privadas a un servidor de claves. Este mtodo genera un
fichero de armadura ASCII que contiene una o varias claves privadas (segn en qu implementaciones de openPGP, la exportacin de
una clave privada conlleva tambin la pblica).
Cmo?
PGP
1
Abrir el programa PGPkeys
2
BDR sobre la clave >> Export
3
Marcamos la casilla Include Private Key(s)
GPG
1
Ejecutamos el comando gpg --armor --export-secret-keys <KeyID> <fichero>
GPA
1
Abrir el programa GPA (Editor del anillo)
2
BDR sobre la clave >> Copia de Seguridad
Exportar una clave pblica al Servidor de Claves
Qu?
Existen servidores especiales que contienen miles (me atrevera a afirmar que millones) de claves pblicas para que cualquier
persona pueda buscar y descargar a su anillo de claves. Este mtodo facilita enormemente el intercambio de claves, as como la
distribucin de firmas mediante la actualizacin de claves (alguien firma nuestra clave y la sube al servidor, y despus nosotros la
actualizamos en nuestro anillo).
Cmo?
PGP
1
Abrir el programa PGPkeys
2
BDR sobre la clave >> Send To >> Domain Server
GPG
1
Ejecutamos el comando gpg --keyserver <KeyServ> --send-key <KeyID>
GPA
1
Abrir el programa GPA (Editor del anillo)
2
Men Servidor >> Enviar Claves

Strapping (Junio/2005) Pgina 58 de 84 Seguridad Informtica

Buscar una clave en el Servidor de Claves


Qu?
Ya sabemos para qu sirve un servidor de claves y cul es su funcionamiento. Igual que podemos colgar nuestra clave pblica para
que cualquier usuario la descargue, podemos buscar la clave pblica de cualquier usuario.
Cmo?
PGP
1
Abrir el programa PGPkeys
2
Men Server >> Search...
3
Seleccionamos el servidor de claves y las opciones de bsqueda para realizar la query
GPG
1
Ejecutamos el comando gpg --keyserver <KeyServ> --search-key <KeyID>
GPA
1
NO soporta la bsqueda de claves
Importar una clave del Servidor de Claves
Qu?
Una vez localizada la clave, podemos descargarla desde el servidor de claves a nuestro anillo de claves personal.
Cmo?
PGP
1
Una vez realizados los pasos de bsqueda del apartado anterior...
2
BDR sobre la clave >> Import to Local Keyring
GPG
1
Ejecutamos el comando gpg --keyserver <KeyServ> --recv-key <KeyID>
GPA
1
Abrir el programa GPA (Editor del anillo)
2
Men Servidor >> Descargar Claves
Firmar una clave pblica (firma exportable)
Qu?
Es el momento de introducir y explicar un concepto muy importante: la firma digital del sistema PGP. Ya hemos comentado y
sabemos que en los sistemas openPGP se utiliza un sistema criptogrfico asimtrico que se sirve de dos claves complementarias
(pblica y privada). Mucha gente piensa -errneamente-que la clave pblica sirve para encriptar y la privada para desencriptar. NO.
Ambas claves son complementarias, y como tal ambas pueden ser usadas -y de hecho son usadas-para ambas funciones, de forma
que lo que una encripta, la otra lo desencripta. Qu utilidad nos reporta esto? Pues la firma digital.
Ms adelante trataremos el problema del cifrado de informacin, pero efectivamente en ese caso el cifrado se realiza a la clave
pblica para que el destinatario pueda descifrarlo con su clave privada. En el caso de la firma digital es al revs. Una firma digital (es
indiferente si se trata de una clave, un fichero o un correo) es el hash del objeto a firmar encriptado a la clave privada del firmante. As,
cualquier persona con la clave pblica del firmante (que debera ser accesible desde un servidor de claves) puede descifrar ese
criptograma para obtener el hash, realizar por su cuenta un hash del objeto firmado (obviamente usando el mismo algoritmo hash) y
compararlos: si ambos hashes son idnticos, la firma es vlida, en caso contrario la firma o el objeto han sido manipulados.

Strapping (Junio/2005) Pgina 59 de 84 Seguridad Informtica

Este mecanismo de firma digital permite que cualquier persona con nuestra clave pblica (accesible a cualquiera) y un sistema
openPGP capaz de descifrar el criptograma con ella, realice una comparacin del hash realizado por el firmante y el suyo propio, de
forma que pueda autentificar la firma o no.
Al firmar una clave pblica con nuestra propia clave privada estamos otorgando al usuario de esa clave pblica nuestra confianza a
todos los efectos. Este tipo de firmas son exportables, es decir, al exportar (tanto a un fichero como a un servidor de claves) la clave
pblica, nuestra firma ir incluida en ella.
Un sistema de firma digital cumple los siguientes preceptos:
1
2
3

Integridad de la informacin: La informacin firmada no puede ser modificada sin alterar la validez de la firma.
Autenticidad del origen del mensaje: Solamente el propietario de la clave privada (y la capacidad de activarlo mediante el
passphrase correcto) es capaz de firmar una informacin.
No repudio del origen: El usuario que ha generado la firma no puede repudiar el mensaje.

Cmo?
PGP
1
2
3
4

Abrir el programa PGPkeys


BDR sobre la clave >> Sign
Marcamos la casilla Allow signature to be exported
Nos autentificamos mediante el passphrase

GPG
1
Ejecutamos el comando gpg --sign-key <KeyID>
2
Seleccionamos la confianza en la clave a firmar (0, 1, 2 3)
3
Confirmamos y nos autentificamos mediante el passphrase
GPA
1
Abrir el programa GPA (Editor del anillo)
2
BDR sobre la clave >> Firmar Claves
3
Nos autentificamos mediante el passphrase

Strapping (Junio/2005) Pgina 60 de 84 Seguridad Informtica

Firmar una clave pblica (firma NO exportable)


Qu?
En esencia se trata del mismo proceso que la firma exportable, con la evidente diferencia de la imposibilidad de exportar estas
firmas. Estas firmas son solamente locales, y NO se conservarn al exportar la clave pblica firmada a un fichero o un servidor de
claves.
Cmo?
PGP
1
Abrir el programa PGPkeys
2
BDR sobre la clave >> Sign
3
Nos autentificamos mediante el passphrase
GPG
1
Ejecutamos el comando gpg --lsign-key <KeyID>
2
Seleccionamos la confianza en la clave a firmar (0...3)
3
Confirmamos y nos autentificamos mediante el passphrase
GPA
1
2
3
4

Abrir el programa GPA (Editor del anillo)


BDR sobre la clave >> Firmar Claves
Marcamos la casilla Firmar solo localmente
Nos autentificamos mediante el passphrase

Establecer el grado de confianza en el usuario


Qu?
El concepto de confianza funciona localmente, y es un dato que nos sirve para, en procesos de descifrado o comprobacin de
firmas digitales, comprobar en un vistazo el grado de validez de los datos. Existen varios grados segn la implementacin openPGP. En
PGP tenemos tres grados adems de la confianza implcita(slo disponible para pares de claves pblica/privada). En GPG/GPA
tenemos cinco grados (desconocida, sin confianza, poca confianza, confianza total, confianza por completo).
Cmo?
PGP
1
2
3
4

Abrir el programa PGPkeys


BDR sobre la clave >> Key Properties
Graduar el medidor del apartado Trust Model
*Marcar la casilla Implicit Trust

GPG
1
Ejecutamos el comando gpg --edit-key <KeyID>
2
Ejecutamos el comando trust
3
Seleccionamos el nivel de confianza (1...5)
GPA
1
Abrir el programa GPA (Editor del anillo)
2
BDR sobre la clave >> Establecer confianza en el usuario
3
Seleccionamos el nivel de confianza (1...5)
Borrar una clave
Qu?
Puede que en algn momento queramos borrar una o varias claves pblicas o privadas (porque hayan caducado, porque ya no nos
sean tiles...). En tal caso podemos simplemente eliminarlas de nuestro anillo de claves local.

Strapping (Junio/2005) Pgina 61 de 84 Seguridad Informtica

Cmo?
PGP
1
Abrir el programa PGPkeys
2
BDR sobre la clave >> Delete
3
Confirmamos el proceso
GPG
1
2
3
4

Claves pblicas: gpg --delete-key <KeyID>


Claves privadas: gpg --delete-secret-key <KeyID>
Pares de claves: gpg --delete-secret-and-public-key <KeyID>
Confirmamos el proceso

GPA
1
Abrir el programa GPA (Editor del anillo)
2
BDR sobre la clave >> Borrar Claves
3
Confirmamos el proceso
Encriptacin con el sistema openPGP
Qu?
Llegamos a una de las partes ms importantes del sistema PGP. Ya hemos visto durante todos los procesos relacionados con la
clave la importancia de la criptografa asimtrica en PGP, al igual que hemos visto la importancia de los algoritmos hash en la parte de
firmas digitales. Ahora ha llegado el turno de analizar la importancia de la criptografa simtrica en el sistema PGP.
Otro de los conceptos errneos ms extendidos sobre PGP es que toda el peso del cifrado y descifrado recae sobre los algoritmos
asimtricos (RSA o DH/DSS). Esto es falso, pues en realidad la encriptacin a claves asimtricas de semejante tamao (1024-4096
bits) es un trabajo computacionalmente pesado, y la encriptacin de grandes ficheros consumira gran cantidad de tiempo. Por otro
lado, con lo que sabemos sobre criptografa simtrica, es fcil darse cuenta que el principal mtodo de criptoanlisis es la estadstica
por comparacin, y que cuantos ms criptogramas tengamos cifrados a un mismo cdigo, ste ser ms vulnerable. As pues, un
criptosistema simtrico solamente es seguro cuando adems de usar una clave suficientemente segura (256 bits), sta es usada una
nica vez. Este principio es aplicado a los protocolos informticos seguros (SHTTP, SSL, SSH...) y tambin al sistema PGP. Veamos
cmo:

En primer lugar, se genera una clave simtrica aleatoria (K). Esta clave ha de ser lo ms aleatoria posible, y para ello se genera
entropa (capturando datos tan banales como flujo de datos entre dispositivos, red, perifricos...). El algoritmo y tamao de la clave
normalmente puede ser elegido por el usuario (tpicamente se usa AES de 256 bits). Usando esta clave K se cifra el mensaje original.

Strapping (Junio/2005) Pgina 62 de 84 Seguridad Informtica

En segundo lugar se cifra la clave K a la clave pblica de cada uno de los destinatarios del mensaje cifrado, de forma que cada uno
de ellos pueda usar su propia clave privada para descifrar la clave de cifrado del mensaje y poder as obtener el mensaje original. Esta
parte constituida por la clave K cifrada a distintas claves pblicas se adjunta al mensaje cifrado y constituye el criptograma.
Por ltimo, la clave K es destruida de forma segura.
El mensaje puede estar, adems de encriptado, firmado. Un mensaje cifrado y firmado incluir en el criptograma adems una parte
de firma, constituida por el hash del mensaje original (NO del cifrado) encriptado a la clave privada del firmante.
Mensaje Cifrado
(&!)

Clave K Cifrada
destinatario #1 (i{*|)

Clave K Cifrada
destinatario #2 (@\)

...

Firma ($@%#&)

Al tratarse K de una clave aleatoria de un solo uso, el sistema se considera seguro, y la existencia de la combinacin de tres tipos
de criptosistemas combinados permite una distribucin segura de claves a la vez que una enorme seguridad a la hora de cifrar y firmar
mensajes mediante el mtodo descrito.
Cmo?
PGP
1
2
3
4
5
6

Abrir el programa PGPmail


Seleccionar la opcin Encrypt (segunda empezando por la izquierda)
Seleccionar el fichero a encriptar
Arrastrar a la ventana de Recipients los destinatarios del fichero.
*Podemos opcionalmente marcar alguna casilla si deseamos opciones extra (Text Output, Input Is Text, Wipe Original (borra
de forma segura el original), Secure Viewer, Conventional Encryption (encriptacin exclusivamente simtrica), Self Decrypting
Archive)
*En caso de firmar adems de cifrar, debemos autentificarnos mediante el passphrase

GPG
1
Ejecutamos el comando gpg --encrypt-files <fichero>
2
Introducimos los <KeyID> a los que destinamos el fichero
GPA
1
2
3
4
5

Abrir el programa GPA (Gestor de Archivos)


Men Abrir >> Archivo
Seleccionamos la opcin Cifrar
Seleccionar el fichero a encriptar
Seleccionamos los destinatarios del fichero

Desencriptacin con el sistema openPGP


Qu?
Conocido el proceso de cifrado, el proceso de descifrado es el inverso:

Uno de los destinatarios del mensaje cifrado recibe el criptograma completo y de l extrae el mensaje cifrado y la clave K cifrada a
su clave pblica (si no estuviera, ese mensaje no se habra cifrado para l). Mediante su clave privada -previa autentificacin mediante
passphrase- descifra la clave simtrica K. Con la clave K ya puede desencriptar el mensaje cifrado para obtener el mensaje original.

Strapping (Junio/2005) Pgina 63 de 84 Seguridad Informtica

Cmo?
PGP
1
2
3
4

Abrir el programa PGPmail


Seleccionar la opcin Decrypt/Verify (tercera empezando por la derecha)
Seleccionar el fichero a desencriptar
Nos autentificamos mediante el passphrase

GPG
1
Ejecutamos el comando gpg --decrypt-files <fichero>
2
Nos autentificamos mediante el passphrase
GPA
1
2
3
4
5

Abrir el programa GPA (Gestor de Archivos)


Men Abrir >> Archivo
Seleccionamos la opcin Descifrar
Seleccionar el fichero a desencriptar
Nos autentificamos mediante el passphrase

Firma MIME/PGP con el sistema openPGP


Qu?
Ya hemos visto cmo funciona el sistema de firmas en openPGP cuando hablamos de la firma de claves. El proceso para firmar
cualquier tipo de mensaje es idntico. Este tipo de firma (MIME/PGP) es usada principalmente para firma y autentificacin de ficheros.
Cmo?
PGP
1
2
3
4

Abrir el programa PGPmail


Seleccionar la opcin Sign (tercera empezando por la izquierda)
Seleccionar el fichero a firmar
Nos autentificamos mediante el passphrase

GPG
1
Ejecutamos el comando gpg --sign <fichero>
2
Nos autentificamos mediante el passphrase
GPA
1
2
3
4
5

Abrir el programa GPA (Gestor de Archivos)


Men Abrir >> Archivo
Seleccionamos la opcin Firmar
Seleccionar el fichero a firmar
Nos autentificamos mediante el passphrase

Firma ASCII con el sistema openPGP


Qu?
Este es el otro tipo de firma, en armadura ASCII. Al ser una firma de tipo texto (llamada tambin firma en texto plano) es usada
principalmente en la firma de correos electrnicos y ficheros de texto plano.
Cmo?
PGP
1
2
3
4
5

Abrir el programa PGPmail


Seleccionar la opcin Sign (tercera empezando por la izquierda)
Seleccionar el fichero a firmar
Marcamos la casilla Text Output
Nos autentificamos mediante el passphrase
Strapping (Junio/2005) Pgina 64 de 84 Seguridad Informtica

GPG
1
Ejecutamos el comando gpg --clearsign <fichero>
2
Nos autentificamos mediante el passphrase
GPA
1
2
3
4
5
6

Abrir el programa GPA (Gestor de Archivos)


Men Abrir >> Archivo
Seleccionamos la opcin Firmar
Seleccionar el fichero a firmar
Marcamos la casilla Armadura
Nos autentificamos mediante el passphrase

Verificacin de firmas con el sistema openPGP


Qu?
Igual que ocurra con la firma, la verificacin de firmas en sistemas openPGP es igual para cualquier tipo de mensaje. La
verificacin de firmas sirve tanto para firmas MIME/PGP como para firmas de armadura ASCII.
Cmo?
PGP
1
Abrir el programa PGPmail
2
Seleccionar la opcin Decrypt/Verify (tercera empezando por la derecha)
3
Seleccionar el fichero a verificar
GPG
1
Ejecutamos el comando gpg --verify <fichero>
GPA
1
2
3
4

Abrir el programa GPA (Gestor de Archivos)


Men Abrir >> Archivo
Seleccionamos la opcin Verificar
Seleccionar el fichero a verificar

Otras funciones del sistema openPGP


Existen muchas otras opciones en los sistemas openPGP que no he nombrado. Algunas por triviales (por ejemplo la opcin de
encriptar y firmar) y otras porque no son de uso habitual, entre ellas:
Generacin de subclaves: Excepto para el caso de la generacin de la subclave de encriptacin en GnuPG, no hemos tocado este
tema. Es posible la generacin de nuevas subclaves (de encriptacin, de firma o mixtas) a distintos nombres y correos electrnicos
dentro de una misma clave.
Borrar claves de un servidor de claves: Es posible (obviamente solo mediante autentificacin por clave privada y passphrase) borrar la
propia clave pblica del servidor de claves.
Revocar firmas: Existe la posibilidad de revocar una firma que hayamos hecho a una clave pblica ajena. Esta opcin solo la puede
realizar el firmante, nunca el firmado.
Firmas irrevocables: Igual que existen las firmas exportables y no exportables, existen otro tipo de firmas denominadas firmas no
revocables. Como su propio nombre indica, son firmas que jams podrn ser revocadas, ni por su autor original.
Y existen tambin algunas opciones ms que son menos usuales si cabe. Para una descripcin detallada de cada una de ellas,
repito lo dicho al principio: leed la documentacin del software que usis.

Strapping (Junio/2005) Pgina 65 de 84 Seguridad Informtica

Seguridad en el sistema PGP


Hoy en da PGP es uno de los sistemas ms seguros que existen. An as es factible que datos cifrados que creemos seguros no lo
sean y hayan sido comprometidos. La mayor parte de las veces estos problemas de seguridad son ajenos al propio sistema PGP, pero
an as es importante tenerlos en cuenta:
Ataques a la algoritmia
Intentar romper el cdigo de cifrado simtrico de PGP es prcticamente imposible. Las algoritmos simtricos usados han
demostrado su eficiencia (AES y sus finalistas entro otros), y las claves usadas son generadas aleatoriamente y usadas una nica vez,
siendo destruidas de forma segura despus. Intentar romper por fuerza bruta un algoritmo simtrico de 128 bits con un cluster de mil
millones de procesadores que probaran mil millones de claves por segundo cada uno tardara en dar resultados ms del tiempo de vida
restante estimado para el universo. Eso convierte la clave simtrica prcticamente en un secreto perfecto.
ntentar romper el cdigo de cifrado asimtrico con la tecnologa actual es sencillamente impensable. Los cifrados son de 1024 hasta
4096 bits en algoritmos considerablemente complejos y un ataque de fuerza bruta queda totalmente descartado.
Pero hay una parte dbil en el eslabn: el passphrase. Claves simtricas de 256 bits y asimtricas de 4096 son seguras, pero el
passphrase correcto puede deshacer todo el entuerto sin necesidad de enfrentarse al verdadero cifrado. El hash del passphrase se
guarda en la clave privada del par de claves, motivo por el que nuestra clave privada jams debe verse comprometida.
An as, con la clave privada, sera bastante difcil obtener el passphrase, para lo cual existen dos alternativas. La primera es la
fuerza bruta y puede descartarse casi desde el principio. Si tratramos de romper por fuerza bruta MD5 (el ms dbil de los algoritmos
de hash) en una mquina que pudiera analizar mil millones de posibilidades por segundo, el tiempo de finalizacin de la tarea sera de
1,07 x 10^22 aos. An as, una contrasea dbil (de menos de 8 caracteres) podra caer relativamente rpido en un ataque de fuerza
bruta. Tratando claves potentes (ms de 10 caracteres) el ataque es impensable.
La segunda opcin es ms factible. Se trata de los ataques de diccionario. Un hipottico atacante en posesin de una clave privada
podra idear un algoritmo que probara unos passphrase predefinidos y comparara el hash resultante de cada uno de ellos con el hash
de la clave. Este problema se soluciona no usando como passphrase alguna contrasea tpica de las que pueden ser encontradas en
cualquier diccionario de claves.
Un ejemplo de software de ataque de diccionario contra claves privadas es PGPcrack. Es muy antiguo (su ltima actualizacin, la
0.6b, data de 1996) y est pensado para el sistema PGP RSA-IDEA-MD5, pudiendo nicamente analizar claves que usen como
algoritmo de hash MD5. An as, su inters didctico es alto y recomiendo probarlo.
Existen otros ataques menos comunes al sistema de hash como el ataque del cumpleaos contra sistema MD5. Se trata de un
sistema puramente estadstico que trata de encontrar una colisin fuerte en el sistema, y por tanto una cadena que devuelva el mismo
hash que el passphrase original. An as, en las mismas condiciones que estudiamos antes para la fuerza bruta, los 1,07 x 10^22 aos
se reducen a 585, lo cual sigue resultando insatisfactorio como ataque. En sistemas SHA-1 o RIPEMD-160 este ataque es an menos
til, pues el tiempo necesario para encontrar una colisin es exponencialmente mayor.
Por ltimo, se ha demostrado efectivo contra el sistema MD5 el criptoanlisis diferencial, pues una modificacin del sistema de
compresin MD5 puede producir fcilmente colisiones en la salida. An as, aplicado al sistema PGP esto no tiene ningn valor, pues
esas colisiones seran rechazadas por aceptarse invlidas.
Ataques al software criptogrfico
Este otro tipo de ataque es ms realista que los lanzados contra la algoritmia del sistema. En este caso se trata de modificar de
alguna forma el software openPGP de un sistema para que la informacin cifrada se vea comprometida prcticamente desde su cifrado.
Esta modificacin puede venir dada por algn programa aadido o por una modificacin y posterior compilacin del cdigo original.
Un primer objetivo de esta modificacin puede ser la alteracin de las rutinas de generacin de nmeros aleatorios. Mediante un
computador es imposible obtener nmeros aleatorios, por lo que estos sistemas de generacin aleatorios se sirven de generadores de
entropa, que se sirven de mtodos como los periodos de tiempo transcurridos entre las pulsaciones del teclado, los cambios de
direccin de los ejes de movimiento del ratn, el retraso de los paquetes recibidos por la red... El objetivo de un atacante aqu es
modificar estas rutinas de forma que la supuesta generacin aleatoria resulte en realidad un proceso predefinido y predecible. As,
saber cul es (aproximadamente) la clave simtrica de cifrado hace relativamente sencillo el descifrar el mensaje sin necesidad de
atacar al cifrado asimtrico.
Otro objetivo es similar al anterior, solo que en lugar de atacar las rutinas de generacin de nmeros aleatorios, directamente
modifican las rutinas de asignacin de clave simtricas. El resultado es ms efectivo an, aunque la modificacin es ms llamativa.
Strapping (Junio/2005) Pgina 66 de 84 Seguridad Informtica

Tambin existen ataques basados en la sustitucin de la implementacin de los algoritmos criptogrficos por otras versiones
modificadas y debilitadas, de forma por ejemplo que ignoren la clave del usuario y utilicen una clave predefinida, o que incluyan una
clave maestra en el cifrado de datos que permita al atacante descifrar el mensaje sea cual sea el destinatario original del mismo.
Para protegerse de estos ataques es importante cuidar la integridad de nuestro sistema, as como obtener las cadenas hash de los
ejecutables de nuestro software de cifrado para comprobar peridicamente la integridad del mismo. El uso de software libre y compilar
nuestro propio cdigo previamente comprobado es una gran opcin (por ejemplo GnuPG).
Integridad del sistema
Este tipo de ataques generalmente no son un fin por si mismos, sino un medio para lograr otro tipo de ataque, bien sea un ataque al
software criptogrfico o un intento de recuperacin de datos borrados. Tambin pueden ser un ataque directo que tenga por objetivo el
robo de la clave privada y la intercepcin del passphrase.
Estos ataques suelen realizarse por los medios clsicos de ataque a un sistema operativo: vulnerabilidades, virus, troyanos,
keyloggers, sniffers...
Un atacante que logre introducir un backdoor en un sistema puede fcilmente transferirse el fichero de clave privada del usuario e
interceptar las pulsaciones del teclado para obtener el passphrase, y as comprometer por completo el sistema de cifrado sin necesidad
de escribir complicadas modificaciones de cdigo o lanzar pesados ataques al propio cifrado.
La proteccin contra estos ataques pasa por unas nociones bsicas de seguridad informtica.
Informacin residual
Una de las fuentes de debilidades ms importantes, y una de las ms desatendidas, es la informacin residual contenida en un
disco duro. Al borrar un fichero, ste permanece en el disco a no ser que los sectores que ocupaba sean sobreescritos con nueva
informacin.
De esta forma, si nosotros guardamos nuestras contraseas en un fichero convenientemente cifrado y despus de editar y aadir
nuevas entradas lo ciframos, una incorrecta eliminacin del fichero editado compromete toda la informacin contenida en l. De un
disco duro de segunda mano, aparentemente formateado, se puede extraer muchsima informacin personal y confidencial.
Cmo solucionamos este problema? Usando utilidades de borrado seguro, para asegurarnos que del espacio libre de nuestro
disco duro no se pueda extraer absolutamente ninguna informacin.
Existen multitud de aplicaciones que aplican sobreescritura de datos en una rpida pasada como mtodo de borrado seguro, pero
aunque convierte cualquier intento de recuperacin de informacin en improbable, no es imposible. Es necesario el uso de algoritmos
de sobreescritura de datos con complejos algoritmos de truncado y reescritura de datos en varias pasadas. Dentro de estos sistemas
seguros consideramos los siguientes tipos:
Mtodo ISAAC: Existen mtodos de borrado que permiten la reescritura de datos aleatorios generados con ISAAC (Indirection, Shift,
Accumulate, Add and Count) en hasta 65535 pasadas. ISAAC es un generador criptogrfico de nmeros aleatorios. Ms info:
http://burtleburtle.net/bob/rand/isaacafa.html
DoD 5220-22.M (NISPOM 8-306): Mtodo basado en el NISPOM (National Industrial Security Program Operating Manual) del
Departamento de Defensa de EE.UU. Se basa en la sobreescritura de 3 pasadas datos aleatorios generados con el generador ISAAC.
Ms info: http://www.dss.mil/isec/nispom.htm
Mtodo Gutmann: ste mtodo ideado por Peter Gutmann se basa en la sobreescritura compleja de 27 pasadas sobre los datos a
borrar
de
forma
segura.
La
recuperacin
es
completamente
imposible.
Ms
info:
http://www.usenix.org/publications/library/proceedings/sec96/full_papers/gutmann/
El software especializado en esta tarea normalmente ofrece dos opciones: limpiar el espacio libre de un disco y borrar de forma
segura un fichero. Para mantener nuestro sistema seguro, debemos realizar una limpieza completa del espacio en nuestros discos
duros peridicamente, y tomar por costumbre la eliminacin de cualquier fichero por mtodos seguros. Ejemplos de software de borrado
seguro son:

Eraser:
(Software libre // GPL ; Sistemas Windows)
http://www.heidi.ie/eraser/
Mtodo DoD 5220-22.M; Mtodo Gutmann + ISAAC; ISAAC hasta 65535 pasadas.
Strapping (Junio/2005) Pgina 67 de 84 Seguridad Informtica


GnuPG (Gnu Privacy Guard):
(Software libre // GPL ; Sistemas Windows // Sistemas *NIX // etc)
http://www.gnupg.org/
Mtodo Gutmann.

PGP (Pretty Good Privacy):


(Freeware // Propietario ; Sistemas Windows)
http://www.pgp.com/
Mtodo DoD 5220-22.M de 3 a 27 pasadas.

Wipe:
(Software libre // GPL ; Sistemas *NIX)
http://wipe.sourceforge.net/
Mtodo Gutmann.

Steganos Security Suite:


(De pago // Propietario ; Sistemas Windows)
http://www.steganos.com/en/sss/
Mtodo DoD 5220-22.M; Mtodo Gutmann.
Medios no convencionales
Existen otros mtodos no convencionales de ataque a criptosistemas. Algunos son tan sencillos como el espionaje con cmaras de
vdeo o micrfonos de una estancia. Sin embargo otros son bastante ms complejos.
La modificacin del hardware es un mtodo probado. Introducir un sniffer de hardware en un sistema puede ser a veces mucho ms
efectivo que su homlogo de software. Un teclado modificado con un transmisor de radio puede comprometer un criptosistema
completo.
Otro mtodo no muy conocido es TEMPEST (http://www.eskimo.com/~joelm/tempest.html). Segn este estudio, midiendo las
radiaciones electromagnticas de un monitor desde un lugar remoto es posible reconstruir su imagen al detalle. Algunos expertos
opinan que es irrealizable, y otros afirman que es un hecho. Cierto es que, medio en broma, en la generacin de claves muy potentes
en GnuPG (por ejemplo mi clave es una RSA 4096) el software te advierte que tambin las radiaciones del monitor y teclado
(inalmbrico, se entiende) pueden ser vulnerables a ataques.

Strapping (Junio/2005) Pgina 68 de 84 Seguridad Informtica

Esteganografia
Un efecto esencial de la elegancia es ocultar sus medios.
Honor de Balzac
Si hablamos rigurosamente de la definicin de esteganografa, veremos que, mediante distintas soluciones tcnicas, lleva
aplicndose siglos en la vida del ser humano (casi siempre ligado al espionaje o al secreto). No obstante, aunque es bueno conocer su
origen, nosotros nos vamos a centrar en sus aplicaciones actuales en el campo de la informtica y las comunicaciones.
Para los que no conozcan absolutamente nada sobre esta tcnica, y antes de ver definiciones rigurosas, podemos decir que la
esteganografa es una forma cmoda de trabajar con meta-informacin, es decir, informacin dentro de la informacin.
En otros tiempos la informacin que rodeaba a una persona era transportada por unos canales muy definidos (correo, telfono...) y
de forma limitada; pero eso es algo que en las ltimas dcadas ha cambiado de forma radical. El actual desarrollo de la tecnologa
computacional y las telecomunicaciones (cuyas culminaciones son el ordenador personal e Internet respectivamente) han rodeado
completamente nuestras vidas de torrentes de informacin, vivimos de hecho rodeados de un continuo ruido de fondo.
Si nos paramos a pensar en la informacin que extraemos al visitar una web, y la cantidad real de informacin que contiene,
podemos ver que el vivir en un medio ruidoso nos hace en cierto modo impermeables a la informacin no deseada, actuando como
cribas humanas que separan el grano de la paja en la Gran Telaraa Mundial.
Ese enorme ruido de fondo, ese enorme remanso de informacin que supone Internet, es el perfecto caldo de cultivo para las
tcnicas esteganogrficas. Cuanta ms informacin y cuanto ms fcilmente sea sta ignorada, ms fcil es que la meta-informacin
pase completamente desapercibida al resto del mundo, del resto del impermeable mundo.

Historia de la esteganografa
Del griego (steganos, encubierto -con el sentido de oculto-) y (graphos, escritura) nace el trmino esteganografa:
el arte de escribir de forma oculta. Aunque (criptos, oculto) y (steganos, encubierto) puedan parecer en un principio
trminos equivalentes, o al menos similares, son cosas completamente distintas. La criptografa es el arte de escribir de forma
enigmtica (segn la Real Academia Espaola), mientras que la esteganografa es el arte de escribir de forma oculta. Puede que sigan
pareciendo similares, pero las connotaciones toman mucho valor al analizarlo detenidamente: la criptografa tiene su fuerza en la
imposibilidad de comprender el mensaje, mientras que la esteganografa la tiene en el desconocimiento de que el mensaje siquiera
existe.
Aplicado al campo informtico, podemos dar los siguientes ejemplos: nosotros podramos robar un mensaje cifrado con relativa
facilidad, pero an sabiendo que contiene informacin importante seramos incapaces de obtener informacin alguna de l (si la
criptografa ha cumplido con su cometido). Respecto a la esteganografa, nosotros podramos capturar el trfico completo de un
individuo y tratar de analizarlo completamente (y el ruido de fondo hoy en da es mucho), sin tener la certeza de que haya o no un
mensaje oculto. Espero que quede claro desde un principio que, en contra de lo que algunas personas dicen, la esteganografa NO es
un tipo de criptografa: son tcnicas distintas e independientes, si bien pueden complementarse entre ellas (y de hecho lo suelen hacer).

Mtodos
Mtodos clsicos
La esteganografa da sus primeros pasos en la antigua Grecia. Se cuenta en Les Histries d'Herdot que Demeratus quera
comunicar a la ciudad de Esparta que Xerxes tena planes para invadir Grecia. Para evitar ser capturado por espionaje en los controles,
escribi sus mensajes en tablas que luego fueron cubiertas con cera, de forma que parecan no haber sido usadas. sta es
posiblemente una de las primeras manifestaciones en la historia de mensajes esteganografiados.
Otro mtodo usado durante siglos consista en tatuar al mensajero (generalmente un esclavo) un mensaje en la cabeza afeitada
para despus dejarle crecer el pelo y enviar as el mensaje oculto.

Strapping (Junio/2005) Pgina 69 de 84 Seguridad Informtica

Cifrado nulo (Null Cipher)


El mtodo de escritura de meta-informacin en un texto es usado desde hace siglos, y sigue siendo usadohoy en da. sto es
debido a que se trata posiblemente de uno de los mtodos ms sencillos de ocultar informacin. Consiste en escribir un texto
aparentemente inofensivo donde, mediante algn mecanismo conocido por el legtimo receptor de la informacin (actualmente
hablamos de algoritmos y claves), subyace la informacin realmente importante. Veamos un ejemplo de un mensaje real enviado por un
espa alemn durante la Segunda Guerra Mundial:
Apparently neutral's protest is thoroughly discounted and ignored. Isman hard hit. Blockade issue affects pretext for embargo on by
products, ejecting suets and vegetable oils.
Si de este inocente texto extraemos la segunda letra de cada palabra, obtendremos este otro mensaje:
Pershing sails from NY June 1
Aqu vemos lo fcil que es esconder informacin en textos, as como comprendemos la necesidad de gran cantidad de informacin
(ruido) para ocultar la autntica informacin de forma que no llame la atencin.
Tinta invisible
Aunque el mtodo de escritura con tinta invisible es usado desde la edad media, es en la Segunda Guerra Mundial cuando adquiere
una importancia capital. Fue usado muy activamente por la resistencia en los campos de prisioneros nazis.
Generalmente se usa de la siguiente forma: en primer lugar se escribe una carta completamente normal, y despus se escribe,
entre las lneas de esa carta, otro texto donde est la informacin importante. Era habitual el uso de vinagre, zumos de frutas u orina,
aunque hoy en da existen compuestos qumicos especficos que sirven igualmente y no desprenden olores tan fuertes (que seran
fcilmente detectados por un perro entrenado). Al calentar el papel, la escritura oculta se hace visible.
Micropuntos
La tecnologa de los micropuntos fue inventada por los alemanes durante la Segunda Guerra Mundial y fue usada de forma muy
activa durante la poca de la guerra fra. La tcnica se basa en esconder puntos minsculos en fotografas, tan pequeos que para el
ojo humano -e incluso para instrumentos pticos bsicos como lupas-resultan invisibles, pero que forman un patrn de informacin
significativa.
Debido a la naturaleza analgica de esta tcnica, resultaba fcilmente detectable para los servicios de inteligencia, si bien advertir
la presencia de mensajes esteganografiados no siempre significa que puedan ser legibles. An as, descubrir la presencia de un
mensaje esteganografiado se considera un fracaso de la esteganografa que lo soporta, pues la imposibilidad de comprender su
contenido conforma su capa de cifrado.
Tcnicas actuales
Actualmente la esteganografa est irremisiblemente ligada a los ordenadores, que le han proporcionado el medio necesario para
ser efectiva, y del que durante siglos no pudo disponer. As mismo, est ntimamente ligada a la criptologa en general y a la criptografa
en particular.
Hoy en da se usan multitud de tcnicas esteganogrficas, pero todas se basan en los mismos principios de ocultacin de
informacin. Este punto, al ser el eje central del documento, lo veremos en detalle ms adelante.
Ahora me gustara dejar una opinin personal sobre criptografa, esteganografa y la sociedad actual:
Como ya coment en el documento de Criptosistemas Informticos, a los gobiernos nunca les hizo demasiada gracia la criptografa,
esteganografa... y en general cualquier mtodo que pueda suponer datos fuera de su control. Gracias a los ordenadores personales, y
al software libre en gran medida, tcnicas antes reservadas a unos pocos estn ahora al alcance de cualquiera... hasta de las peores
personas.
Todo esto viene por la campaa de acoso y derribo que ciertos sectores norteamericanos emprendieron contra la criptografa y
esteganografa en general, especialmente contra PGP y su creador Philip Zimmermann, al publicarse que esta clase de tcnicas fueron
supuestamente utilizadas por la organizacin terrorista AlQaeda para transmitir informacin previa a los atentados del 11 de Septiembre
en Nueva York.

Strapping (Junio/2005) Pgina 70 de 84 Seguridad Informtica

Seores: no hay medios culpables, sino personas culpables. No culpen a PGP de un atentado, no menos que a Samuel Colt por
inventar el revlver (eso sin entrar a analizar los usos positivos de PGP frente a los dudosos usos positivos del revlver...) o a Albert
Einstein por contribuir al desarrollo de la bomba de fisin.
Publicaciones
Son realmente pocas las publicaciones que existen sobre esteganografa, en comparacin por ejemplo con la criptografa. Si
buscamos publicaciones en castellano, el nmero desciende muchsimo ms, hasta casi el cero.
Al contrario que la criptografa, que existe de una manera importante desde antes del desarrollo del computador y fue desarrollada
especialmente en la Segunda Guerra Mundial, la esteganografa, pese a haber sufrido un desarrollo similar durante ese mismo periodo
de tiempo, nunca dispuso de medios que la permitieran tomarse en cuenta hasta la aparicin de la moderna ciencia de la computacin.
Es por eso que las publicaciones referentes al tema son tan escasas, y generalmente se encuentran englobadas como una parte de un
texto criptogrfico (como coment al principio).
Veamos algunas de las principales publicaciones relacionadas con el tema por orden cronolgico:
Hypnerotomachia poliphili (1499) Annimo
He elegido esta publicacin por lo que representa.
Hypnerotomachia poliphili es un libro publicado en 1499 por Aldus Manutius.
El libro versa sobre conocimiento general, tratando temas como arquitectura,
ingeniera, paisajes, creacin de jardines, pintura, escultura... de todo menos
esteganografa, criptografa o cdigos de forma alguna.
Qu es pues lo que hace tan significativo este libro? Contiene muchsimos
datos escondidos en su interior. El ms famoso, y el considerado como primer
texto esteganografiado de forma escrita se obtiene tomando la primera letra de
cada uno de sus captulos, formando:
Poliam frater Franciscus Columna peramavit
Que significa El Padre Francesco Colonna ama apasionadamente a Polia. Podemos ver la secuencia completa de la frase en
http://www.bk.tudelft.nl/dks/hp/hyptext1.htm#Decorated%20initials. Por cierto, Francesco Colonna an viva cuando el libro fue
publicado.

Steganographia (1499) - Tritheim Johannes Heidenberg


Se trata de la publicacin ms notoria de Tritheim.
En Steganographia se incluye un sistema de esteganografa bastante avanzado, pero la
temtica general del libro (magia y mtodos de aprendizaje acelerados) hizo que nunca se
tomara demasiado en serio el texto.
No obstante, en este libro se trataba un mtodo de envo de mensajes sin caracteres ni
mensajero.
Podemos encontrar un profundo anlisis de este libro en:
http://www.esotericarchives.com/tritheim/stegano.htm.

Strapping (Junio/2005) Pgina 71 de 84 Seguridad Informtica

Polygraphi (1516) -Tritheim Johannes Heidenberg


Segunda publicacin relacionada con este tema de Tritheim.
En Polygraphi vuelve a tratar el tema de la escritura y su significado, aunque no es un libro muy
importante en el campo de la esteganografa.
No obstante, junto a Steganographia -del mismo autor-, sentar las bases de lo que ser Schola
Steganographica, el considerado como primer libro de esteganografa y criptografa de la historia, y
uno de los ms importantes.

Schola Steganographica (1665) - Gasparis Schott


Este libro es uno de los ms importantes en la historia de la
criptografa y la esteganografa.
En l se discuten los conocimientos de la poca respecto a
la escritura oculta o cifrada, algunos de ellos tratados
anteriormente, pero que en este libro toman un profundo giro
en el enfoque de estudio: Schott se aleja de lo esotrico y lo
mgico para enfocar la esteganografa y la criptografa desde
el punto de vista de la tcnica y la ciencia.
En el Whipple Science Museum de Cambridge se conserva
una copia completa e intacta (la de la fotografa) que fue
publicada junto a otra obra del mismo autor (Technica curiosa).
Podemos ver fotografas, as como consultar informacin
mucho ms detallada acerca de esta publicacin en http://www.petitcolas.net/fabien/steganography/steganographica/index.html.

The Pigeon Post into Paris 1870-1871 (1871) - J.D. Hayhurst O.B.E.
Este texto trata el uso de micrografa y escritura oculta en los mensajes
enviados por palomas durante la guerra franco-prusiana (1870-1871).
Segn el texto, las tcnicas de ocultacin de informacin fueron decisivas en el
desenlace de la contienda.
Podemos encontrar la versin completa del documento en:
http://www.cix.co.uk/~mhayhurst/jdhayhurst/pigeon/pigeon.html.

Strapping (Junio/2005) Pgina 72 de 84 Seguridad Informtica

La cryptographie militaire (1883) - Auguste Kerckhoffs


La cryptographie militaire es un estudio del uso de tcnicas criptogrficas, esteganogrficas y en general
de ocultacin de informacin en el ejrcito francs del siglo XIX.
Cualquier estudioso de la criptografa ha odo al menos hablar de los Principios de Kerckhoffs. Pues
estos principios fueron enunciados en Enero de 1883 durante la redaccin de este libro.
Si alguien est interesado en la lectura de este documento, puede encontrar la primera parte del mismo
(en
el
idioma
original:
francs)
en
PDF
en
la
siguiente
direccin:
http://www.petitcolas.net/fabien/kerckhoffs/crypto_militaire_1.pdf.
Le filigrane (1907) - Charles-Mose Briquet
Esta publicacin es un diccionario histrico de las marcas de agua, usadas a lo largo de la historia para
autentificar todo tipo de documentos. Hoy en da las marcas de agua siguen usndose en la expedicin de
papel moneda.
Podemos
consultar
el
http://linux.lettere.unige.it/briquet/.

documento

(en

italiano)

en

la

siguiente

direccin:

The Codebreakers: The story of secret writing (1967) - David Kahn - [KAHN67] - Actualizado 1996
The Codebreakers es un libro de obligada lectura para los aficionados a la criptografa,
esteganografa y ocultacin de informacin en general.
Se trata de La Biblia de los cdigos, formando un texto de referencia histrica incomparable. El
autor barre un periodo de tiempo descomunal, desde los primeros jeroglficos del 3000 A.C. hasta la
poca de publicacin de la primera edicin del libro (1967).
El hecho de que este libro fuera publicado antes de la existencia de la moderna criptografa
computacional no hace sino aumentar el valor intrnseco del texto, pues nos muestra las entraas de
la teora de cdigos. El libro tambin muestra episodios histricos importantes relacionados con la
ocultacin de informacin, como el Telegrama Zimmermann de la I Guerra Mundial o el
funcionamiento y ruptura de las mquinas Enigma de la II Guerra Mundial.
El libro fue revisado en 1996 por el propio autor para contemplar la moderna criptografa de clave
pblica y la influencia de la informtica en la ocultacin de informacin. An as, no son muchos los
cambios entre ediciones, y podramos decir que el libro sigue siendo algo que pertenece a 1967.

Bases de la esteganografa
El desarrollo de la informtica e Internet ha supuesto el marco perfecto para que la esteganografa alcance su mayora de edad. Los
avances en computacin nos proporcionan medios para calcular rpidamente los cambios necesarios en la ocultacin de un mensaje, e
Internet proporciona los medios necesarios para transportar grandes cantidades de informacin a cualquier punto del planeta.
La esteganografa actual se basa en esconder datos binarios en la maraa de bits que supone un fichero. Los bits que componen el
mensaje a ocultar se introducen (bien sea aadindolos,o realizando operaciones aritmticas con los originales) en el fichero ya
existente, procurando que el fichero resultante despus de realizar los cambios parezca el original.
Cmo logramos que el fichero resultante no parezca haber sido modificado? Depende de qu tipo de fichero estemos modificando.
Prcticamente cualquier tipo de fichero es bueno para ocultar datos en su interior, pero hay algunos (imgenes y sonido principalmente)
que resultan ideales para este cometido, por motivos que ms adelante comentaremos. As mismo existen ciertos programas
especializados en ocultacin de informacin en sectores de disco no usados.

Strapping (Junio/2005) Pgina 73 de 84 Seguridad Informtica

Sea cual sea el tipo de informacin que queramos esteganografiar, y sea cual sea el medio en el que queremos hacerlo, hay ciertas
reglas bsicas:
-Toda informacin (texto ASCII, hexadecimal, cdigo morse...) que queramos introducir, debe ser primero convertida a binario.
Si bien cualquier base numrica es vlida, la comodidad trabajando con binario es mucho mayor.
-Nunca hay que permitir que un supuesto atacante obtenga el fichero original (anterior a la modificacin), pues permitira,
mediante comparacin, establecer pautas de cambios en la informacin. Esto podra llevar en ltima instancia a desentraar
el mensaje oculto.
- Las cabeceras de los ficheros -salvo excepciones-NO deben ser modificadas.
- No transmitir la clave o algoritmo esteganogrfico por un medio inseguro.
Aunque la esteganografa computacional clsica consiste en la modificacin binaria del fichero que sirve de canal, existen ciertas
tcnicas para casos particulares de ficheros que tambin son vlidas (aunque complicadas de hacer a mano, con lo cual dependemos
de algn tipo de software... cosa que no queremos). Un ejemplo de estas tcnicas es la adicin de mensajes ocultos a los ficheros de
sonido mediante superposicin de capas de sonidos que no resultan audibles para el odo humano, pero que s contienen informacin.
As mismo, tambin he encontrado documentacin de tcnicas basadas en ocultacin de mensajes en ficheros de imagen creados
con potentes programas de tratamiento grfico (como Gimp o Photoshop) mediante el uso de capas transparentes donde se alojaba la
informacin. Al igual que en el caso anteriormente citado, no considero esta tcnica segura en absoluto.
As pues, yo tratar nicamente la esteganografa al nivel del bit (mediante editores hexadecimales).
Ficheros interpretados
Antes de ver los tipos ms comunes de ficheros interpretados usados en esteganografa, vamos a echar un vistazo a algunos
detalles previos cuya comprensin es muy conveniente para entender la esteganografa.
Qu es un fichero interpretado?
Entre los ficheros que encontramos en nuestro disco duro encontramos principalmente dos grupos: ficheros interpretados y ficheros
ejecutables. Los ficheros ejecutables son los que mandan instrucciones al procesador (a travs del sistema operativo y su ncleo o
kernel), mientras que los ficheros interpretados son aquellos usados para leer o escribir informacin, pero siempre mediante algn
software.
Para entender esto ms fcilmente, pensemos en situaciones cotidianas. Al abrir una fotografa PNG JPG con nuestro software
de imagen favorito (Gimp, Photoshop...) estamos leyendo un fichero interpretado (la fotografa) mediante un software que previamente
ejecutamos (mediante el fichero ejecutable). En este proceso, en primer lugar ejecutamos el fichero ejecutable que, a travs del SO,
manda instrucciones al procesador, y en segundo lugar ese software ya arrancado interpreta la informacin contenida en una imagen y
enva las instrucciones necesarias para poder ver en pantalla esa informacin ya procesada.
Existen unos ficheros denominados scripts que en determinados casos, pese a ser ficheros interpretados, son capaces de ejecutar
cdigo en el procesador (aunque siempre mediante un intrprete). Es el caso de, por ejemplo, programas escritos en bash scripting
(ejecutados por bash, sh...) o en perl (ejecutados por el intrprete de perl). Aunque hay quien los considera ejecutables y quien no, nos
es indiferente, porque en cualquier caso no son muy tiles con fines esteganogrficos, debido a que en su mayora se trata de ficheros
de texto plano.
Estructura de un fichero
Antes de empezar a modificar ficheros es importante entender la estructura bsica de un fichero.
Aunque los usuarios de sistemas Windows no lo sepan, un fichero es lo que es debido a una informacin que se encuentra
embebida en su interior y que llamamos cabecera. Digo esto porque en sistemas como Unix y compatibles (Linux, xBSD...), un fichero
BMP es reconocido como tal aunque su nombre sea foto.pepe; mientras que en los sistemas Windows simplemente se verifica la
extensin del fichero, de forma que carta.bmp se tratar de abrir con el visor de imgenes predeterminado an tratndose de texto.
Adems de la cabecera, el fichero contiene la informacin propiamente dicha (y en algunos casos otros campos que no vienen al
caso). Debido a que cada tipo de fichero tiene una estructura distinta, se pueden dar casos anecdticos, como por ejemplo que un
fichero pueda ser a la vez de dos tipos sin que stos interfieran entre s. Un ejemplo es un fichero gif-zip. Cmo es posible esto? Pues
por las especificaciones de cada uno de los ficheros: un fichero gif define en su cabecera el tamao del mismo, de forma que cualquier
byte posterior al supuesto fin de la informacin es ignorado, y un fichero zip almacena la informacin en unas tablas de forma que
cualquier byte anterior al inicio de stas es ignorado. As, si definimos una cabecera gif de, pongamos, 5000 bytes, y en el byte 5001 y
Strapping (Junio/2005) Pgina 74 de 84 Seguridad Informtica

posteriores ponemos las tablas zip, tendremos un fichero que es gif y zip a la vez.
Por norma general, NO vamos a tocar nunca la cabecera del fichero. Nosotros siempre nos vamos a fijar en el cuerpo del mismo
para introducir nuestros datos. La forma en que introduciremos los datos, as como el sitio donde lo haremos, depende del tipo de
fichero. Es necesario saber cmo almacena la informacin el fichero para no modificarlo de forma sensible. Para saber dnde colocar
nuestros datos conviene conocer la estructura del fichero (ya sabis... http://www.google.es/ es vuestro amigo :-P) o empezar a
modificar datos a partir de direcciones avanzadas, con lo cual nos aseguramos un margen prudente que nos evite tocar la cabecera. Yo
tratar de proporcionar informacin acerca de los principales estndares de imagen que existen actualmente.
Ficheros de imagen
Las imgenes es de lejos el tipo de fichero ms utilizado para esteganografiar mensajes ocultos.
Conviene puntualizar que hay distintos tipos de ficheros de imagen:
-Windows BitMaP (BMP): Es el formato grfico ms simple, y aunque tericamente es capaz de realizar compresin de
imagen, en la prctica jams se usa. Consiste simplemente en una cabecera y los valores de cada pixel de la imagen
(ocupando cada pixel 4, 8, 16, 24 32 bits segn la calidad del color) empezando de abajo hacia arriba y de izquierda a
derecha.
Su principal ventaja es la sencillez (es el formato ms indicado para realizar esteganografa). Su mayor inconveniente es el
inmenso tamao que ocupan.
-PC Paintbrush (PCX): Este tipo de fichero es una evolucin del mapa de bits tradicional. En PCX se usa el algoritmo de
compresin RLE. Mediante RLE cuando dos o ms pixels consecutivos tienen el mismo color, el algoritmo guarda la
informacin del color y el nmero de pixels que lo usan (para la posterior visualizacin).
El criterio para almacenar el nmero de pixels usando el color es el siguiente: si el byte es menor o igual que 192,
corresponde a un nico pixel, pero si es superior a 192 el nmero de pixels repetidos nos lo dan los seis bits menos
significativos del byte (ponemos a cero los dos bits ms significativos) y el color nos lo da el byte siguiente.
Como ventajas tiene la sencillez del algoritmo (aunque, como ya veremos, este formato de compresin hace mucho ms
tedioso la realizacin de esteganografa), y como inconveniente, la escasa compresin que obtenemos en fotografas (que
tienen mayor variedad de pixels), que al fin y al cabo es el mayor uso de imagenes.
-Graphics Image Format (GIF): Es uno de los mejores formatos de compresin (sobre todo para imgenes con grandes reas
de un mismo color), adems de ser la opcin ms sencilla para animaciones vectoriales (flash y otros mtodos ms caros y
complejos aparte...). El formato GIF89a adems soporta transparencias y entrelazado.
Usa el algoritmo de compresin LZW (usado en compresin de ficheros tambin), mucho ms complejo que RLE. Su principal
punto dbil es la limitacin a 256 colores (8 bits) de la paleta de color, lo cual lo hace desaconsejable para cualquier tipo de
fotografa o imagen realista.
Su principal ventaja es la enorme compresin (cosa que nos complica sobremanera la esteganografa) y la capacidad de uso
de transparencias y entrelazado, mientras que su mayor defecto es la escasa paleta de colores.
-Joint Photographic Experts Group (JPEG): Este fichero es, con diferencia, el ms popular. El algoritmo de compresin de
JPEG se basa en un defecto del ojo humano que impide la completa visualizacin de la paleta de 24 bits, por lo que elimina la
informacin que el ojo humano no es capaz de procesar. Esto nos da una importante reduccin de tamao, pero -muy
importante-este algoritmo S tiene prdida de informacin en el proceso de compresin. Dependiendo del factor de
compresin la prdida de imagen puede ser visible o no al ojo humano.
Una variante del JPEG original es el JPEG progresivo, que realiza entrelazado de datos para visualizarlo en primer lugar con
baja calidad e ir aumentando la misma en varias pasadas.
La principal ventaja que tiene JPEG es su calidad a la hora de representar fotografas (con su paleta de 16 bits y su alta
compresin), y su principal desventaja es la prdida de calidad e informacin con grandes ratios de compresin.
JPEG es sin duda el ms usado en esteganografa, pero eso no significa que sea el ms sencillo.
-Tagged Image File Format (TIFF): TIFF es un formato usado en imgenes de altsima resolucin y calidad, principalmente en
trabajos de imprenta o fotografa profesional. Se trata bsicamente de un mapa de bits preparado para el estndar CMYK, y
preparado para el uso de muchos estndares y formatos de compresin diversos, que pueden ser usados en la misma
imagen.
La ventaja de este formato es la enorme calidad obtenida, y su principal desventaja el tamao que ocupa. Debido a lo
especfico de este tipo de fichero, no es prcticamente usado para esteganografa.

Strapping (Junio/2005) Pgina 75 de 84 Seguridad Informtica

- Portable Network Graphics (PNG): El formato PNG nace debido a los problemas de la patente del algoritmo LZW (LempelZiv-Welch), y con la intencin de sustituir a GIF como estndar. PNG cubre prcticamente todas las caractersticas de GIF,
con un mejor algoritmo de compresin, sin prdida de informacin y con una paleta de color muy superior a los 256 bits de
GIF (16 bits). Adems, se trata del nico formato comprimido que incorpora la informacin del canal alpha, logrando una
altsima calidad en el uso de capas y transparencias.
PNG adems es uno de los primeros ficheros de imagen en contener informacin acerca del fichero en forma de metadatos
de texto (esto no os suena de nada? ;-P).
A pesar de todas sus ventajas (principalmente el tratarse de un formato libre), tiene un defecto: no permite el uso de
animaciones (al contrario que GIF). La organizacin W3C (autores de PNG) han creado el formato MNG para animaciones.
Aunque son muchas las formas de representar una imagen en un ordenador, todas tienen un denominador comn: tienen que
representar colores mediante bits, bien sea cada punto, vectores o tablas.
Nuestro principal arma es la calidad de la imagen, por lo que segn la profundidad de color ser ms o menos sencillo la realizacin
de esteganografa. Con 4 y 8 bits (16 y 256 colores respectivamente) la variedad no es muy alta, por lo que la diferencia entre colores
contiguos es poca.
En profundidades de color ms comunes hoy da, como 16, 24 y 32 bits (65.535, 16.777.216 y 4.294.967.296 de colores
respectivamente) la cosa es muy diferente. Si bien con 16 bits la diferencia entre colores no es tanta, modificar un punto en una imagen
de tamao medio (200*200 = 40.000 puntos) y con una diferencia de color de 1 entre 65.535... nadie podr distinguir este punto. Con 24
y 32 bits ya la diferencia es muchsimo mayor... Ya vemos por dnde vamos, no? }:-P
Efectivamente, vamos a aumentar o disminuir en una unidad el valor del color de un registro de color de la imagen. Veamos cmo
esconder 1 byte de informacin...
Esto es un fragmento de fichero de imagen BMP (tened listo el editor hexadecimal):
0012A000
0012A010
0012A020
0012A030
0012A040
0012A050
0012A060
0012A070

35
0A
22
1E
0E
52
45
15

3D
07
20
30
2A
A5
5E
08

33
0A
2B
63
2C
D6
3F
0D

33
0E
3B
58
33
3F
38
12

3A
05
37
7A
45
93
4A
0A

35
05
4A
A3
44
CA
11
0B

3B
0A
2A
94
50
1E
11
12

43
0B
2E
B3
1F
60
17
07

15
0B
3D
66
1E
88
0E
0D

1B
11
19
5D
26
0D
12
12

21
12
20
71
00
1D
15
0B

00
13
2A
01
00
27
0E
10

01
1A
18
04
00
0C
11
14

05
0E
17
08
1A
1E
19
11

02
11
21
06
3D
28
0C
12

05
17
25
07
4D
43
11
17

5=33:5;C..!.....
................
" +;7J*.=. *..!%
.0cXz...f]q.....
.*,3EDP..&....=M
R..?...`...'..(c
E^?8J...........
................

Supongamos que nosotros queremos esconder una letra, concretamente la letra L. Primero debemos convertirla en bits, as que
consultamos la tabla ASCII (http://www.asciitable.com/) y comprobamos que el valor de L es...
Decimal
------076

Octal
----114

Hex
--04C

Binary
-----01001100

Value
----L

Ahora deberamos estudiar el fichero a modificar para analizar qu grupos conforman cada pixel, y deducir cul es la cifra menos
significativa. Como ejemplo tomaremos el ltimo valor del registro como tal.
Ahora, sumaremos 1 a la cantidad existente cuando el bit de la letra L sea 1, y dejaremos el fichero como est cuando sea 0:
0012A010
++++++++
........
========
0012A010

0A
++
..
==
0A

07
++
..
==
07

0A
++
..
==
0A

0E
++
..
==
0E

05
++
..
==
05

05
++
..
==
05

0A
++
..
==
0A

0B
++
..
==
0B

0B
++
..
==
0B

11
++
..
==
11

12
++
..
==
12

13
++
..
==
13

1A
++
..
==
1A

0E
++
..
==
0E

11
++
..
==
11

17 ................
++
.1
==
18 ................

0012A040
++++++++
........
========
0012A040

0E
++
..
==
0E

2A
++
..
==
2A

2C
++
..
==
2C

33
++
..
==
33

45
++
..
==
45

44
++
..
==
44

50
++
..
==
50

1F
++
..
==
1F

1E
++
..
==
1E

26
++
..
==
26

00
++
..
==
00

00
++
..
==
00

00
++
..
==
00

1A
++
..
==
1A

3D
++
..
==
3D

4D .*,3EDP..&....=M
++
.1
==
4E .*,3EDP..&....=N

0012A050 52 A5 D6 3F 93 CA 1E 60 88 0D 1D 27 0C 1E 28 43 R..?...`...'..(c
++++++++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
........ .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .
1======== == == == == == == == == == == == == == == == ==
0012A050 52 A5 D6 3F 93 CA 1E 60 88 0D 1D 27 0C 1E 28 44 R..?...`...'..(D

Strapping (Junio/2005) Pgina 76 de 84 Seguridad Informtica

Y as obtenemos el resultado:
0012A000
0012A010
0012A020
0012A030
0012A040
0012A050
0012A060
0012A070

35
0A
22
1E
0E
52
45
15

3D
07
20
30
2A
A5
5E
08

33
0A
2B
63
2C
D6
3F
0D

33
0E
3B
58
33
3F
38
12

3A
05
37
7A
45
93
4A
0A

35
05
4A
A3
44
CA
11
0B

3B
0A
2A
94
50
1E
11
12

43
0B
2E
B3
1F
60
17
07

15
0B
3D
66
1E
88
0E
0D

1B
11
19
5D
26
0D
12
12

21
12
20
71
00
1D
15
0B

00
13
2A
01
00
27
0E
10

01
1A
18
04
00
0C
11
14

05
0E
17
08
1A
1E
19
11

02
11
21
06
3D
28
0C
12

05
18
25
07
4E
44
11
17

5=33:5;C..!.....
................
" +;7J*.=. *..!%
.0cXz...f]q.....
.*,3EDP..&....=N
R..?...`...'..(D
E^?8J...........
................

0
1
0
0
1
1
0
0
'
L

Voil! Guardamos los cambios, y comprobamos personalmente que no se aprecia cambio alguno a simple vista (en mi ejemplo, un
fondo de pantalla de 1024*768 a 24 bits de profundidad). Pero si nosotros le decimos a alguien que tenga la imagen original que
compare a partir de la posicin 0012A000, podr deshacer los cambios segn el patrn usado para introducirlos.
Qu hemos hecho? Hemos cambiado el color de tres puntos en la imagen de forma que sean los colores inmediatamente
contiguos en una paleta de ms de 16 millones de colores. El ojo humano no podra distinguirlo nunca.
Tambin es posible representar los ceros restando uno a la cifra original y los unos dejndola inalterada, o los ceros restando uno y
los unos sumando uno... aunque lo ms recomendable es alterar lo mnimo posible el fichero original.
En ficheros con compresin es ms difcil introducir cambios sin que el resultado se altere, debido a que debemos respetar la
estructura del algoritmo de compresin, cosa bastante complicada. An as, con algo de prctica y paciencia es perfectamente posible
introducir mensajes esteganografiados en imgenes JPEG por ejemplo.
Ya en Internet, mediante correo electrnico o una pgina web, es muy fcil distribuir un documento con informacin
esteganografiada.
Ficheros de sonido
Los ficheros de sonido son tambin utilizados a menudo en tcnicas esteganogrficas.
Echemos un vistazo a los tipos de ficheros de sonido ms comunes:
-Waveform Audio File Format (WAV): Se trata del formato de sonido desarrollado por Microsoft para su sistema operativo
Windows. Se compone de una cabecera de 43 bytes y un conjunto arbitrario de bytes que contienen las muestras una tras
otra, sin ningn tipo de compresin y con cuantificacin uniforme. Al ser un formato realmente sencillo, es muy til para
realizar tratamiento digital de sonido.
Su principal ventaja es la sencillez del formato, y su mayor inconveniente la cantidad de espacio requerido (una muestra de 10
segundos en calidad de CD -PCM, 44 KHz, 16 bit, estreo-ocupa 1,6 Mb).
-Motion Picture Experts Group -Audio Layer 3 (MP3): Sin duda el ms famoso de todos los formatos de audio. Este formato
utiliza un algoritmo de compresin con prdida de informacin, basndose en las limitaciones del odo humano: somos
sensibles a las frecuencias medias, pero poco perceptivos con las altas o bajas; y adems percibimos mal los sonidos bajos
que suenan a la vez que sonidos muy fuertes (efecto de ocultamiento). As pues, eliminando los sonidos que no omos, logra
un ratio de compresin de hasta 12:1.
Su principal ventaja, sin duda, es la gran compresin y la poca prdida de calidad que tiene, y su principal inconveniente es la
prdida inevitable de informacin.
-OGG Vorbis (OGG): Este formato se desarrolla para constituir una alternativa totalmente libre a mp3. Aunque es un formato
an muy joven (an no hace dos aos de la finalizacin de la versin 1.0), tiene mucho que decir, pues tiene un sistema de
compresin similar al de mp3, pero logrando mayores ratios de compresin (ocupa menos) y una mayor calidad de sonido.
El principal obstculo para la implantacin de ogg es la estandarizacin de mp3: reproductores porttiles, equipos de audio,
reproductores DVD domsticos
La principal ventaja de ogg es la mayor compresin y calidad con respecto a mp3, as como ser 100% libre de patentes. Su
principal inconveniente, como en mp3, es la prdida de informacin en el proceso de compresin.

Strapping (Junio/2005) Pgina 77 de 84 Seguridad Informtica

La representacin de la informacin en los ficheros de sonido se realiza generalmente mediante el registro consecutivo de las
muestras que componen el sonido. Al igual que ocurra con los ficheros de imagen, el sonido es representado siempre en forma de bits,
y cada vez con una calidad mayor (mientras redacto esto, estoy escuchando un mp3 de 128kbit y 44100Hz, lo cual supone una
cantidad muy grande de informacin...), de forma que para nuestros experimentos esteganogrficos podremos jugar con los bits menos
significativos de la informacin.
En el sonido ocurre una cosa muy curiosa: nos da prcticamente igual que la calidad sea alta o baja, pues en calidades altas la
cantidad de bits usados para representar el sonido es muy alta, y un cambio nfimo no influye en el resultado; mientras que en los de
calidad baja, aunque la modificacin sea ms llamativa, al tratarse de un sonido de baja calidad (por ejemplo calidad de radio),
cualquier modificacin puede pasar inadvertida como ruido de fondo.
La forma de introducir los datos es la misma que ya hemos visto en el caso de ficheros de imagen.

Otros ficheros interpretados


Como ya dijimos al principio, cualquier formato es bueno para esconder informacin. La prctica totalidad del software disponible en
el mercado que automatiza la esteganografa trabaja con imgenes y sonidos, debido a que son los ms sencillos de usar para estos
propsitos, pero nosotros podemos usar -casi-cualquier tipo.
Es importante que antes de modificar un fichero sepamos a grandes rasgos cmo se estructura, para evitar daarlo o modificarlo
tanto que llame la atencin.
Algunos formatos que tambin son buenos para la ocultacin de informacin son:
-Ficheros de vdeo: Motion Picture Experts Group -en cualquier versin-(MPEG), DivX (AVI), XviD (AVI)...
Este tipo de ficheros son tambin tiles dada la ingente cantidad de informacin que almacenan, pero a la vez son
complicados de modificar sin estropearlos, debido a los complejos algoritmos de compresin utilizados.
- Ficheros de texto formateado: Microsoft Word (DOC), OpenOffice.org (SXW)...
Los ficheros de texto formateado usualmente almacenan metadatos que nos resultan muy tiles para esconder nuestra
informacin (y en el caso de Microsoft Word, dieron algn susto al gobierno del Reino Unido... }:-D). No obstante los
metadatos tambin pueden ser ledos y una modificacin puede ser detectada con relativa facilidad...
El caso de ficheros de texto plano, scripts o programas de lenguajes interpretados (TXT, SH, PL, HTML, PHP) es distinto, pues NO
es aconsejable usarlos en esteganografa, dado que prcticamente todos son ficheros de texto plano que son ledos por su
correspondiente intrprete. Esto hace que una e en el texto sea una e limpia al abrir el fichero con un editor hexadecimal, y si la
modificamos para que sea una f, en el texto cambiar para ser una f igualmente.
Ficheros ejecutables
Esconder datos en ficheros ejecutables? Es eso posible? S, aunque se trata de una tcnica compleja que no siempre da buenos
resultados.
Antes de entrar al meollo de la cuestin, conviene hacer una anotacin: si bien para comprender esta parte no necesitaremos
conocimientos especficos, si queremos realizar de forma seria esta tcnica debemos tener ciertos conocimientos sobre virus
informticos e ingeniera inversa (desensamblado, crackeo...), as como tambin de programacin en lenguaje ensamblador (AT&T e
Intel, segn trabajemos con ficheros ELF o Win32 PE).
Para entender cmo funciona esta tcnica tenemos que echar un vistazo al modo de trabajo de los virusque infectan ejecutables.
Este tipo de virus hoy da no son muy comunes, pues han sido desplazados por los omnipresentes gusanos, pero hace unos cuantos
aos era el tipo de virus ms comn. Segn su tcnica de infeccin podamos distinguir dos tipos de virus:
El primer tipo inyecta su cdigo al final del ejecutable e introduce en algn lugar libre del mismo una instruccin de salto
incondicional (JMP) hacia el rea que contiene el cdigo del virus. El principal efecto es el aumento de tamao del fichero con respecto
a la versin sin infectar (dada la inyeccin de cdigo).
El segundo tipo, mucho ms complejo de programar y mucho ms raro de encontrar, busca reas libres en el ejecutable (debido al
alineamiento) y distribuye su cdigo en esos huecos del fichero, uniendo todo el cdigo mediante diversas instrucciones de salto. Los
efectos de este complejo mtodo de infeccin son principalmente que el fichero sigue ocupando el mismo espacio en disco y que las
Strapping (Junio/2005) Pgina 78 de 84 Seguridad Informtica

compaas antivirus se muerden las uas a la altura del codo para crear rutinas de desinfeccin para estos bichos.
Nosotros no queremos infectar nada, pero s pensamos que no estara mal poder ocultar informacin en esos huecos libres que
sabemos que existen...
- Porqu existen esos huecos?
Dependiendo del compilador que usemos, ste puede usar un alineamiento de entre 4 y 16 bytes. Eso nos da un posible
espacio de huecos libres de entre 0 y 15 bytes para utilizar como queramos. La mayora de los compiladores de C (principal
lenguaje de programacin) trabajan con un alineamiento de 16 bytes.
- Cmo reconozco esos huecos libres?
Cada compilador tiene una forma de rellenar esos huecos. Por ejemplo, los compiladores de C de Microsoft suelen usar la
instruccin debug (INT 3) que en forma hexadecimal es 0xCC (CC); los compiladores de C de Borland suelen usar la
instruccin NOP que en forma hexadecimal es 0x90 (90); y otros compiladores como GCC (Gnu C Compiler) usan diversas
instrucciones, lo que entre otras cosas dificulta la infeccin del ejecutable.
- Puedo escribir en esos huecos sin ms?
NO, y este es uno de los principales motivos por el que esta tcnica es tan compleja. Si antes de esos huecos se encuentra
un salto incondicional, o una instruccin comparativa que ejecute dos o ms saltos condicionales dependiendo del resultado
de evaluar la expresin, o cualquier otra cosa con la condicin de que el programa NO contine en ese hilo de ejecucin de
forma lineal... entonces s podemos usar esos huecos a nuestro antojo. En caso de que el programa contine su hilo de
ejecucin de forma normal, NO podremos usarlos.
Esto diferencia la tcnica esteganogrfica en ejecutables de la infeccin por virus. A un virus le interesa ejecutar cdigo,
enviar instrucciones al procesador, de forma que los huecos que a nosotros nos valen (los menos) al virus no le valen, y
viceversa. Nosotros queremos que lo que modifiquemos NO sea enviado al procesador como cdigo a ejecutar, porque en el
mejor de los casos el programa har cosas raras, y en el peor (la mayora) el ejecutable quedar inservible... con lo cual no
estamos cumpliendo los preceptos de la correcta esteganografa.
Si nosotros abrimos un fichero ejecutable y encontramos esto:
00000800

E5 00 F0 73 03 19 81
\------------------/
|
|
|
|
|
|
+> {Cdigo

C3 90 90 90 90 90 90 90 55 ...s...........U
| \-----------------/ |
|
|
+> PUSH {Inicio de subrutina}
|
|
|
+> NOP {Huecos}
|
+> RETN {Final de subrutina}
del programa}

A primera vista podemos decir que este programa seguramente fue compilado con un compilador de Borland. El ejecutable dispone
de 7 bytes libres donde escribir lo que queramos. Pero para no inyectar cdigo en el procesador (bueno, el que quiera ya sabe cmo :P) debemos asegurarnos que el programa anterior a esos bytes libres no contina en ese hilo de ejecucin... cosa que se sale de la
temtica de este documento. As pues, el que quiera saber ms de esteganografa en ejecutables primero debe empaparse de
ingeniera inversa. Al fin y al cabo ya sabemos cmo encontrar los bytes libres, y ya sabemos cmo introducimos informacin...
Ahora el jarro de agua fra: la esteganografa en ejecutables tiene varios problemas serios...
A pesar de la complejidad de la esteganografa sobre ejecutables, no es mejor que sobre ficheros interpretados... a decir verdad es
peor. Porqu? Porque cualquiera con conocimientos en ingeniera inversa puede ver que el cdigo del programa llegado a
determinado punto no ejecuta instrucciones de un rea que contiene instrucciones (muy probablemente instrucciones sin sentido, al
tratarse de informacin), y deducir que ese rea originalmente contena instrucciones vacas.
Adems existe otro problema: si el software usado realiza comprobaciones MD5, nuestro ejecutable modificado ser considerado
corrupto, y por tanto no vlido. Cualquier pretensin de pasar informacin inadvertida se pierde.
Por ltimo, las compaas antivirus en sus productos modernos incluyen sistemas heursticos de deteccin de virus, mediante los
cuales reconocen patrones de conducta, no virus concretos. Nuestra informacin esteganografiada en un ejecutable se parece bastante
a un virus... por lo que quiz sea detectada como un virus.
Strapping (Junio/2005) Pgina 79 de 84 Seguridad Informtica

Como conclusin personal, dir que la esteganografa en ficheros ejecutables no es prctica, pues implica tener conocimientos
avanzados de ramas de la seguridad informtica muy complejas (virus, lenguaje ensamblador, ingeniera inversa...), necesita mucho
tiempo para llevarse a cabo, y conlleva bastantes problemas prcticos en su ejecucin. An as, como dicen que el saber no ocupa
lugar, aqu queda. ;-)

Esteganografa avanzada
La esteganografa es un arte complejo y con muchos matices. Sin llegar an a la combinacin de esteganografa y criptografa, es
posible el uso de determinadas tcnicas avanzadas que permiten aumentar la eficacia de una informacin oculta mediante
esteganografa. Veamos alguna:
Uso de mltiples claves
Esta tcnica es heredada directamente de la criptografa, pero con distinta forma de aplicacin. Consiste en usar distintas
codificaciones para cada porcin arbitraria del mensaje a ocultar. As, una frase de cinco palabras puede tener una clave de
codificacin para cada una de las palabras: en la primera restamos una unidad en los ceros y sumamos una unidad en los unos, en la
segunda realizamos lo mismo pero invirtiendo el orden de los bits, en la tercera realizamos el XOR de los bits... Naturalmente la clave
ha de ser conocida por el destinatario.
Esteganografa en capas
Mediante esteganografa en capas establecemos una relacin lineal entre los elementos ocultos. As, la codificacin de la segunda
palabra o letra de un mensaje depende de la primera (puede depender del ltimo valor de la cifra, del ltimo valor modificado, de la
posicin...).
As establecemos un orden estricto de decodificacin que impide obtener completamente el mensaje sin la primera parte, con lo
cual nicamente debemos comunicar la clave para obtener esta parte y la pauta a seguir para encadenar los fragmentos.
Adicin de ruido
Aunque en un mensaje esteganografiado TODO el fichero es considerado ruido, podemos aadir ruido en el proceso de
esteganografiado. As, adems de modificar los bits necesarios para inyectar nuestro mensaje, podemos modificar unos cuantos bits
aleatorios del mensaje de forma que an teniendo el fichero original, un posible atacante deba conocer el sistema de codificacin
usado.
Uso de distintas magnitudes
Aunque lo habitual es variar en 1 bit el byte del mensaje original, nada nos impide variarlo en ms bits. As, podemos establecer
claves complejas, como por ejemplo: ocultamos una frase de cinco palabras, y al ocultar la primera de las palabras sumamos 1 bit en la
codificacin de la primera letra, 2 bits en la codificacin de la segunda, 3 bits en la tercera... hasta que vuelva a aparecer una
modificacin de 1 bit, que significar el inicio de otra palabra.
Mientras trabajemos con ficheros que usen mucha informacin (imgenes de 24 bits o ms por ejemplo) no se notar que variemos
la escala en 1 10 unidades, y nos proporciona un tipo de clave ms compleja.
Otras tcnicas
Existen muchas otras tcnicas esteganogrficas que permiten aumentar la complejidad y seguridad, tantas como queramos idear
nosotros mismos. Lo ideal es que cada uno idee y use su propia tcnica.

Strapping (Junio/2005) Pgina 80 de 84 Seguridad Informtica

Esteganografa y criptografa
Como ya comentamos al principio del presente documento, la esteganografa hoy da est ntimamente ligada a la criptografa.
Teniendo unos conocimientos bsicos de criptografa y esteganografa podemos ocultar nuestros datos con un grado de seguridad
sorprendentemente alto.
Mediante tcnicas criptogrficas como las usadas por PGP (Pretty Good Privacy) podemos hacer nuestros datos completamente
ilegibles, pero un fichero cifrado con PGP tiene una estructura muy especfica que lo hace reconocible de inmediato. En ciertos pases
el gobierno controla a la poblacin hasta el extremo de controlar la informacin que emiten a la red (por ejemplo en China), por lo que
cualquier dato cifrado sera interceptado de inmediato. Podemos comparar la criptografa a tener alarma en casa: nuestra seguridad
aumenta muchsimo, pero todos los que vean las medidas de seguridad sabrn que tenemos cosas importantes que guardar (por
norma general se cifran nicamente los contenidos muy importantes).
Mediante tcnicas esteganogrficas podemos hacer que cualquier informacin pase inadvertida (subyaciendo en informacin
inofensiva), pero la seguridad intrnseca de la esteganografa para datos importantes no es mucha.
Mediante la combinacin de estas dos tcnicas estableceremos dos capas en la seguridad de la informacin: la primera capa, ms
externa, es la esteganogrfica; y la segunda, interna, la criptogrfica. Cada una de las capas tiene un cometido en esta peculiar
simbiosis: la capa criptogrfica se encarga de la seguridad de los datos (pues aunque la esteganografa sea un medio de proteger
datos, no es comparable al cifrado) mientras que la capa esteganogrfica protege la integridad de la capa criptogrfica.
Aunque nada nos impide realizar nuestros cifrados a mano, para usar algoritmos y claves complejas es casi imprescindible el uso
de software especializado. Yo sin duda recomiendo cualquier implementacin de openPGP, especialmente GnuPG que es software
libre, y cuyo cdigo fuente puede ser revisado por cualquiera que desconfe.
Si ciframos nuestros datos de forma que nos devuelva una armadura ASCII, ya tendremos todos los caracteres que componen
nuestro mensaje cifrado. Es muy recomendable que la clave que usemos para la realizacin de criptografa orientada a esteganografa
use el algoritmo DH/DSS (Diffie-Hellman / Digital Standard Signature), pues el tamao de salida de datos es mucho menor. Con la
armadura ASCII del mensaje solamente necesitamos un poco de paciencia para esteganografiar los datos.
Ataques a la esteganografa
No son muchas las investigaciones publicadas acerca de mtodos de ataque a la esteganografa, aunque es de esperar que debido
al auge que ha experimentado hoy en da gracias a tcnicas como las marcas de agua, se publiquen ms investigaciones sobre
debilidades y formas de aprovecharlas.
Los dos mtodos ms usados para detectar y atacar la esteganografa son:
Ataque visual
Consiste bsicamente en buscar de forma manual diferencias entre el fichero original y el esteganografiado, siempre y cuando
dispongamos del fichero original. En caso de no disponer de l, se pueden buscar irregularidades en el fichero esteganografiado para
tratar de encontrar signos de la existencia de datos ocultos, pero difcilmente podremos obtener informacin til ms all de la
existencia de los mismos.
Esta tcnica es la ms rudimentaria a la hora de realizar anlisis esteganogrfico y no tiene mucha utilidad real.
Ataque estadstico
Este tipo de ataque se basa en el mismo concepto que el criptoanlisis diferencial.
El concepto de este tipo de ataques se basa en la comparacin de la frecuencia de distribucin de colores de un fichero
potencialmente esteganografiado con la frecuencia que podramos esperar en teora de un fichero esteganografiado. Aunque los
resultados son bastante buenos (ha demostrado en muchas ocasiones ser efectiva), esta tcnica es extremadamente lenta.
Si la creacin de mensajes esteganografiados a mano ya es complicada, el ataque estadstico lo es mucho ms, por lo que se
automatiza mediante diversos programas. Pero a nuestro favor tenemos que los programas especializados en deteccin y ruptura de
mensajes esteganografiados suelen buscar pautas de mensajes ocultos con algn tipo de software especializado en la creacin de los
mismos. Si esteganografiamos nuestros mensajes a mano, la posibilidad de que la informacin sea recuperada ilcitamente es nfima.
Strapping (Junio/2005) Pgina 81 de 84 Seguridad Informtica

Uno de los programas ms famosos para detectar la presencia de esteganografa en ficheros de imagen JPG es Stegdetect
(http://www.outguess.org/detection.php). Este software, mediante su mdulo Stegbreak, realiza ataques de diccionario a los principales
sistemas pblicos de esteganografa.
Conclusin
Dada la naturaleza de la esteganografa, resulta extremadamente resistente a cualquier tipo de ataque. Los programas que
aseguran detectar y recuperar datos ocultos mediante esteganografa lo hacen siempre buscando mensajes ocultos con programas de
dominio pblico. Si nosotros esteganografiamos nuestros propios mensajes a mano o -si somos programadores-desarrollamos una
herramienta privada, las posibilidades de que nuestros datos sean comprometidos son prcticamente cero.
Para ms informacin sobre anlisis estadsticos en esteganografa conviene leer los estudios publicados por Stefan Hetzel.
Software esteganogrfico
Actualmente existen muchos programas especializados en ocultacin de mensajes de texto mediante esteganografa, en la mayora
de los casos en archivos de imagen o sonido.
Antes de empezar a esteganografiar como locos, un par de consejos:
En primer lugar, NO considero buena idea el uso de ningn tipo de software para ocultar datos importantes, puesto que en la
esteganografa no existen las claves como en la criptografa, sino que la clave es la tcnica usada para esteganografiar. Si usamos un
software que tiene su propia tcnica, estamos permitiendo implcitamente que cualquiera con ese software pueda recuperar nuestros
datos. Como mucho, ciertos programas incorporan la opcin de establecer una contrasea y aadir algn cifrado sencillo a los datos...
nada que un ataque de diccionario no pueda solucionar (de hecho ya hemos hablado de Stegbreak).
En segundo lugar, al igual que ocurre con la inmensa mayora de los programas de cifrado, existe la posibilidad (s, soy un
paranoico :-P) de la existencia de backdoors que comprometan totalmente la informacin contenida. Por ello, yo solamente considero
fiable al 100% el software libre, aunque en este caso concreto, el que el cdigo sea pblico facilita an ms a un atacante el obtener
nuestra informacin.
Dicho lo cual, pongo algunos de los principales programas de esteganografa que existen en la actualidad:
Steganos Security Suite:
(De pago // Propietario ; Sistemas Windows)
http://www.steganos.com/en/sss/
mp3stego:
(Freeware // Cdigo fuente disponible ; Sistemas Windows)
http://www.petitcolas.net/fabien/steganography/mp3stego/
Hydan:

(Freeware // Cdigo fuente disponible ; Sistemas Windows // Sistemas *NIX // etc)


http://www.crazyboy.com/hydan/

OutGuess:
(Freeware // Cdigo fuente disponible ; Sistemas Windows // Sistemas *NIX // etc)
http://www.outguess.org/
Snow:

(Freeware // Cdigo fuente disponible ; Sistemas Windows // Sistemas *NIX // etc)


http://www.darkside.com.au/snow/

Gifshuffle:
(Freeware // Cdigo fuente disponible ; Sistemas Windows // Sistemas *NIX // etc)
http://www.darkside.com.au/gifshuffle/

Strapping (Junio/2005) Pgina 82 de 84 Seguridad Informtica

Securengine:
(De pago // Propietario ; Sistemas Windows)
http://securengine.isecurelabs.com/
JPEG-JSTEG:
(Freeware // Cdigo fuente disponible ; Sistemas Windows // Sistemas *NIX // etc)
ftp://ftp.funet.fi/pub/crypt/steganography/jpeg-jsteg-v4.diff.gz
Nicetext:
(Freeware // Cdigo fuente disponible ; Sistemas *NIX)
http://www.ctgi.net/nicetext/
Autopsia de un reto
Ahora vamos a ver un ejemplo que nos va a hacer comprender mucho mejor cmo funciona la esteganografa artesanal. Para
realizarlo, voy a destripar paso a paso el segundo reto de esteganografa que publiqu en HpN, hace casi un ao. El hilo original del
reto es: http://www.sfreedom.net/~hpn/foro/index.php?act=ST&f=6&t=746
En este hilo est el texto original del reto, as como un aadido con pistas concluyentes para la resolucin del reto que publiqu
para animar a la gente a intentarlo... y no se animaron. :-(
No voy a volver a escribir las pistas (el que est interesado puede visitar el enlace) sino que paso directamente a la resolucin del
reto. En primer lugar, descargamos los dos ficheros de audio:
Fichero original: http://www.clubhackers.com/death/orig.wav
Fichero esteganografiado: http://www.clubhackers.com/death/estega.wav
Se trata del fichero voice_input que uso en el juego Counter-Strike para rerme un rato (con un script, al pulsar una tecla reproduce
el fichero por el canal de audio). Debido a las caractersticas del cdigo de streaming de sonido del motor del juego, la calidad del
sonido debe ser PCM a 8.000 Hz, 16 bit y mono a 128kbps.
NOTA: Al escucharlo os reiris. Es una broma que tengo con un amigo mo del norte... Miguel, va por ti! :-P
Sabemos que buscamos un ao. Ahora hay que dar el primer paso, para lo cual compararemos el fichero original con el
esteganografiado y buscaremos diferencias:
-Observamos que hay varias diferencias dispersas entre los grupos 00001000 y 00010000. Ya tenemos el rango de datos.
-Observamos que siempre existe un bit modificado en la posicin 0000x010 (y en 00010010), y tambin que nunca hay un bit
modificado ms all de la posicin 0000x070, por lo que deducimos que en el rango 0000x000 - 0000x070 estamos representando un
byte.
As pues, procedemos a desentraar esos 10 bytes, obteniendo los siguientes valores:
(00001000-00001070) - 01001101
(00002000-00002070) - 01000100
(00003000-00003070) - 01000011
(00004000-00004070) - 01000011
(00005000-00005070) - 01001100
(00006000-00006070) - 01011000
(00007000-00007070) - 01011000
(00008000-00008070) - 01011000
(00009000-00009070) - 01001001
(00010000-00010070) 01011000
Ahora debemos tratar de comprender qu pueden significar esos bytes, para lo cual lo mejor es empezar convirtindolos en base
decimal y hexadecimal.

Strapping (Junio/2005) Pgina 83 de 84 Seguridad Informtica

(00001000-00001070)
(00002000-00002070)
(00003000-00003070)
(00004000-00004070)
(00005000-00005070)
(00006000-00006070)
(00007000-00007070)
(00008000-00008070)
(00009000-00009070)
(00010000-00010070)

...............
...............
...............
...............
...............
...............
...............
...............
...............
...............

77
68
67
67
76
88
88
88
73
88

/
/
/
/
/
/
/
/
/
/

4D
44
43
43
4C
58
58
58
49
58

.............
.............
.............
.............
.............
.............
.............
.............
.............
.............

01001101
01000100
01000011
01000011
01001100
01011000
01011000
01011000
01001001
01011000

4D
44
43
43
4C
58
58
58
49
58

.............
.............
.............
.............
.............
.............
.............
.............
.............
.............

01001101
01000100
01000011
01000011
01001100
01011000
01011000
01011000
01001001
01011000

Ahora consultamos la tabla ASCII para ver qu letras representan esos valores:
(00001000-00001070)
(00002000-00002070)
(00003000-00003070)
(00004000-00004070)
(00005000-00005070)
(00006000-00006070)
(00007000-00007070)
(00008000-00008070)
(00009000-00009070)
(00010000-00010070)

M...............
D...............
C...............
C...............
L...............
X...............
X...............
X...............
I...............
X...............

77
68
67
67
76
88
88
88
73
88

/
/
/
/
/
/
/
/
/
/

MDCCLXXXIX, que como ya habris supuesto, son nmeros romanos. Concretamente 1789, ao de la Revolucin Francesa. Reto
resuelto!
Hay que tener en cuenta que todos los pasos que doy como obvios (intuir dnde hay un byte, consultar la tabla ASCII...) en caso de
esteganografa real, deben ser proporcionados por el emisor del mensaje. En este caso se daban pistas por tratarse de un reto.
Para el que le haya gustado, en HpN queda el primer reto de esteganografa, ms sencillo que ste. ;-)

LICENCIAS
A) Conferencias de Seguridad Informtica Zona-Hispana Party 2004 Versin 1.1 [Captulos 1, 2, 3] conf_zh04.pdf
B) Criptosistemas Informticos #hackxcrack @ irc.irc-chatpolis.com Versin 1.0 [Captulo 4]
Criptosis.pdf
C) Introduccin a la Esteganografa http://www.death-master.tk/ Versin 1.0
[Captulo 5]
Estega.pdf
Los documentos (A) y (B) fueron liberados por su autor bajo la licencia GNU General Public License (GPL), y su utilizacin, copia o
reproduccin queda sujeta a los trminos de la citada licencia, que puede ser consultada en el siguiente sitio web:
GNU General Public License: http://www.gnu.org/copyleft/gpl.html
GPL Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
El documento (C) ha sido liberado por su autor bajo la licencia GNU Free Documentation License (GFDL), y su utilizacin, copia o
reproduccin queda sujeta a los trminos de la citada licencia, que puede ser consultada en el siguiente sitio web:
GNU Free Documentation License: http://www.gnu.org/copyleft/fdl.html
GFDL Version 1.2, November 2002
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (c) 2004 Death Master
Cualquier copia, modificacin, distribucin o utilizacin en general de este documento
debe respetar la autora original del mismo, correspondiente a Death Master.

NOTA DE STRAPPING
Este recopilatorio de manuales introductorios a los fundamentos de seguridad informtica, fueron realizados
con autorizacin del autor original, y respetando las correspondientes licencias.
Me parece muy interesante tener todos los conocimientos posibles respecto a seguridad informtica; pues
en ellos se basarn grandes movimientos del mercado a todos los niveles. Pues para avanzar se requiere
comunicacin y para operaciones privadas se requiere seguridad.
Espero Que Haya Sido De Su Agrado...

End.Of.File.

Strapping (Junio/2005) Pgina 84 de 84 Seguridad Informtica

Вам также может понравиться