jueves, 15 de mayo de 2008

Cifrado de servicios / datos

Cifrado de servicios de red

Prácticamente todo el tráfico de red viaja sin cifrar y puede ser leído con facilidad por un atacante. Si alguien revienta una máquina del lado de Internet e instala un sniffer de contraseñas (en realidad no es más que el sniffer de paquetes básico con un filtro), la red entera puede verse comprometida en cuestión de horas. Un PSI que permanecerá en el anonimato, colocó máquinas de clientes en la misma LAN, utilizando un hub ethernet normal y corriente, lo cual quiere decir que todas las máquinas podían ver el tráfico entre sí (usuarios recogiendo su correo vía pop, sesiones de telnet, etc.). Esta es una de las razones por las cuales es una buena idea el cifrado del tráfico de datos.

Existen o se están desarrollando varios mecanismos para cifrar el tráfico de red, en diferentes niveles de la pila de red. Algunos esquemas sólo cifran los datos que se envían (como el correo cifrado con PGP), algunos cifran la sesión (SSL), y algunos cifran la carga de datos de los paquetes (IPSec y otros VPN’s). A la larga, la mejor solución será el IPSec (en mi opinión), puesto que no requiere modificar las aplicaciones, y proporciona un nivel de seguridad entre ordenadores bastante elevado. Actualmente no existen soluciones de cifrado ampliamente utilizadas, en parte porque Microsoft no soporta muchas, lo cual es un serio obstáculo para cualquier solución masiva. Para ser justos, Microsoft tiene soporte para IPSec en fase beta, pero todavía no está preparado, y quedará restringido al mercado Norte Americano debido a la ley de los EE.UU. En la actualidad, el mejor esquema disponible es el SSL, Secure Sockets Layer, propuesto originalmente por Netscape. El SSL cifra los datos a nivel de sesión, de modo que si tu aplicación soporta SSL y el servidor soporta SSL, se está de suerte. Hoy en día, la mayoría de visores www, algunos lectores de news/correo, y unos pocos clientes de ftp y de telnet soportan SSL. En cuanto a servidores Linux, la mayoría de los servicios se pueden "SSLificar". Sin embargo el SSL necesita clientes con capacidad SSL, algo que no se podrá conseguir que soporte la mayoría de la gente. Esto significa que por lo general, los servicios "SSLificados" están restringidos dentro de una organización. Las librerías SSL se encuentran disponibles en http://www.openssl.org/∞.



SSL

HTTP – SSL

El servidor www más habitual, Apache, tiene bastante buen soporte SSL, el cual se puede descargar gratuitamente fuera de los EE.UU. (las patentes de los EE.UU. sobre RSA/etc significan tener que pagar derechos dentro de los EE.UU, de modo que el software gratuito es ilegal) desde http://www.Apache-ssl.org/∞. Hay muchos servidores comerciales de www que soportan SSL, la mayoría de los cuales están basados en Apache, como el Servidor Seguro de Red Hat, Stronghold, etc.



Telnet – SSL

Para reemplazar al telnet, SSLtelnet y MZtelnet proporcionan un nivel de seguridad mucho más alto que el telnet original, aunque el SSLtelnet y el MZtelnet no son tan flexibles como el SSH, son perfectamente libres ( es decir, con licencia GNU) lo cual el SSL no lo es. Los paquetes cliente y servidor se encuentran disponibles como tarballs en: ftp://ftp.uni-mainz.de/pub/internet/security/ssl/∞, y como paquetes RPM en: ftp://ftp.replay.com/pub/replay/linux/Red Hat/∞.



FTP – SSL

También existe un reemplazo para nuestro ftpd favorito (probablemente el WU-FTPD), también disponible como un conjunto de parches al WU-FTPD. Es altamente apropiado, pues la mayoría de los servidores tienen muchos usuarios que necesitan acceso ftp. El tarball se encuentra en: ftp://ftp.uni-mainz.de/pub/internet/security/ssl/∞, y los paquetes RPM están en: ftp://ftp.replay.com/pub/replay/linux/Red Hat/∞.



Soluciones para Redes Privadas Virtuales

IPSec

El IPSec tiene su propia sección. Creo que es el futuro de la tecnología VPN (hoy en día es el standard más soportado, y una parte integral del IPv6).

PPTP (Point to Point Tunneling Protocol)

El PPTP es un protocolo propietario creado por Microsoft para soluciones VPN. Hasta la fecha se ha demostrado que contiene numerosos fallos serios. Sin embargo, si se necesita integrar Linux en un entorno PPTP, no está todo perdido, en http://www.moretonbay.com/vpn/pptp.html∞ se encontrará una implementación de PPTP para Linux.



CIPE (Crypto IP Encapsulation)

CIPE es un esquema gratuito de cifrado a nivel IP, orientado al uso entre routers. Es adecuado para hacer "bridging" de redes con seguridad sobre redes inseguras (como Internet). El sitio oficial está en: http://sites.inka.de/~W1011/devel/cipe.html∞. Sin embargo recomendaría el FreeS/WAN como una mejor solución a largo plazo.



ECLiPt Secure Tunnel (actualmente en fase beta)

Otra solución con licencia GNU para VPN’s bajo Linux. Actualmente en fase beta (y no está recomendado para uso masivo) aunque he pensado que lo mencionaría, puesto que parece ser un esfuerzo serio. La página oficial se encuentra en: http://eclipt.uni-klu.ac.at/projects/est/∞. De nuevo, recomendaría FreeS/WAN como una mejor solución a largo plazo.



Stunnel

Stunnel es una solución basada en SSL para asegurar servicios de red. Tiene una porción servidor que se ejecuta en el servidor UNIX, y una parte cliente que se ejecuta en UNIX o en Windows. http://mike.daewoo.com.pl/computer/stunnel/∞



Cifrado de datos

También se encuentran disponibles diferentes programas para cifrar tus datos, algunos a nivel de fichero (PGP, GnuPG, etc.) y algunos a nivel de unidad de disco (Cryptographic FileSystem, Sistema de Ficheros Criptográfico, por ejemplo). Estos sistemas son muy adecuados para el almacenamiento de datos seguros, y en cierta medida para la transmisión segura de datos. Sin embargo se necesita el software adecuado en ambos extremos, versiones compatibles, y de alguna forma tendrá que llevarse a cabo un intercambio de llaves públicas, lo cual, por desgracia es una onerosa tarea para la mayoría de las personas. Además de esto, no existe una forma sencilla de confiar en la llave pública de una persona a menos que se reciba directamente de esa persona (como por ejemplo en una fiesta de firmado de llaves), o a menos que esté firmada por alguien en quien se confía (¿pero cómo se consigue de forma segura la llave del firmante?). Sistemas para cifrar unidades, como el CFS (Cryptographic FileSystem, Sistema de Ficheros Criptográfico) suelen ser fácil de implementar, y sólo necesitan que el usuario proporcione una contraseña o llave, o alguna forma de acceder a sus ficheros.



PGP (Pretty Good Privacy, Privacidad Bastante Buena)

El abuelito del cifrado público, es con mucho uno de los programas más populares, soportado por Unix, Windows y Macintosh. Por desgracia ahora se ha comercializado, lo cual ha dado como resultado una pérdida de calidad para los usuarios. Personalmente, creo que cualquier software utilizado para cifrar o asegurar datos de cualquier otra forma, DEBE ser código libre, o si no cómo se va a asegurar que es seguro. El PGP ahora lo vende Network Associates y no puedo recomendarlo de buena fe como un mecanismo de seguridad para el almacenamiento y transmisión de ficheros. El PGP se encuentra disponible para descargar de: ftp://ftp.replay.com/∞



GnuPG (Gnu Privacy Guard, Guardián de Privacidad Gnu)

La alternativa al PGP, GnuPG (GPG) es un reemplazo directo completamente de código abierto y con licencia GNU (como si no se adivinase por el nombre). Esta herramienta está disponible en: http://www.gnupg.org/∞, como código fuente o en binarios precompilados para windows y RPM’s.



pgp4pine

El pgp4pine es un shell PGP para pine, que facilita el uso de PGP/GnuPG con el pine. La firma / cifrado, etc. también se han hecho más sencillas. Se puede conseguir en: http://members.home.com/cdwiegand/pgp4pine/∞



HardEncrypt

HardEncrypt es un generador pad de un sólo uso y un conjunto de herramientas para utilizarlo. En teoría, los pads de un sólo uso son una forma de cifrado casi irrompible. Utilizando un conjunto de datos aleatorios, criptográficamente seguros se pueden exprimir por completo los datos privados, para descifrarlos se necesita el pad de un sólo uso. Esta forma de cifrado es ideal para la comunicación de datos sensibles, salvo una desventaja, que primero hay que transferir el pad de un sólo uso a la otra parte. Es posible descargar el HardEncrypt desde la siguiente dirección: http://www.csuglab.cornell.edu/Info/People/jcr13/HardenedCriminal/main.html∞

Secret-share

El secret-share te permite dividir un fichero en tantos trozos como se deseen, todos los cuales se necesitan para reconstruir satisfactoriamente el fichero. Todos los trozos menos uno son datos aleatorios cifrados, lo cual lo enmaraña de alguna forma. Se puede descargar de: http://www.mindrot.org/code/secret-share.php3∞



Cifrado del disco duro

CFS (Sistema de Ficheros Criptográfico)

El CFS te permite guardar los datos en el disco duro en formato cifrado, y es significativamente más sencillo de utilizar que un programa de cifrado de ficheros (como PGP) si lo que se quiere es almacenar muchos ficheros y directorios de los que se quiere tener alejados a los curiosos. El sitio oficial de distribución está en: http://www.cryptography.org/∞, y también se encuentran disponibles RPM’s en: ftp://ftp.replay.com/pub/replay/linux/Red Hat/∞, y los ficheros binarios Debian están en: http://www.debian.org/Packages/stable/otherosfs/cfs.html∞.



TCFS

El TCFS es una utilidad de cifrado de datos a nivel del kernel, similar al CFS. Sin embargo tiene algunas ventajas sobre el CFS; puesto que está implementado en el kernel, es significativamente más rápido. Está fuertemente arraigado con el NFS, lo cual quiere decir que se pueden servir datos de forma segura en una máquina local, o a través de la red. Descifra datos en la máquina cliente, de modo que cuando se utiliza sobre la red, nunca se transmite la contraseña. La única pega es que todavía no se ha adaptado a la serie 2.2 del kernel. El TCFS se puede conseguir en: http://tcfs.dia.unisa.it/∞



PPDD

El PPDD permite crear una partición de disco cifrada, puede ser una partición real o un dispositivo loopback (el cual reside en un fichero, pero se monta como un sistema de ficheros). Utiliza el algoritmo blowfish, el cual es relativamente rápido y está probado. El PPDD se puede conseguir desde: http://linux01.gwdg.de/~alatham/∞



Directorio Raíz Cifrado

El Encrypted Home Directory, Directorio Raíz Cifrado, funciona de forma parecida al CFS, sin embargo está orientado a proporcionar un sólo directorio cifrado. Resumiendo, crear un fichero de tamaño X en /crypt/ con tu UID, y lo monta en un dispositivo loopback de forma que se pueda acceder a él. El truco está en que los datos se cifran y descifran al vuelo, cuando se accede a él (como con el CFS). La única pega es que el software todavía está en desarrollo, así que haz copia de seguridad de cualquier dato importante. Se puede descargar desde: http://members.home.net/id-est/∞




StegFS

Steganographic File System, en realidad oculta los datos en tu disco duro, haciendo difícil incluso probar que existan. Puede ser muy útil, puesto que el atacante primero tiene que encontrar los datos, y ya no digamos romper el fuerte cifrado utilizado para protegerlos. Se puede conseguir de: http://ban.joh.cam.ac.uk/~adm36/StegFS/∞.




BestCrypt

BestCrypt es un producto comercial, con código fuente, disponible para Windows y Linux. Se puede conseguir aquí: http://www.jetico.com/∞






Fuentes de datos aleatorios

Para que el cifrado sea efectivo, especialmente a gran escala como con IPSec a lo largo de muchos hosts, se necesitan buenas fuentes de datos aleatorios y criptográficamente seguros. En Linux, están el /dev/random y el /dev/urandom, que son buenos pero no siempre fenomenales. Parte de la ecuación está en medir sucesos "aleatorios", manipulando esos datos y después poniéndolo disponible (vía (u)random). Estos sucesos aleatorios incluyen: entrada de teclado y ratón, interrupciones, lecturas de disco, etc.

Sin embargo, a medida que los discos duros que van saliendo tienen más y más caché (los IBM Desktstars vienen con 4 Megabytes de caché en disco) y muchos servidores no tienen teclado/ratón, puede ser más difícil encontrar fuentes de datos aleatorios. Algunas fuentes, como la actividad de red, no son del todo apropiadas, puesto que los ataques también se pueden medir (por supuesto que sería un ataque muy exótico, pero lo suficiente como para preocupar a la gente). Existen varias fuentes de datos aleatorios que se pueden utilizar (o al menos que parecen ser aleatorios), los decaimientos radiactivos y las manipulaciones de radiofrecuencias son dos bastante famosos. Por desgracia, la idea de colocar un dispositivo radiactivo al lado de un ordenador suele poner nerviosa a la mayoría de la gente. Y utilizar frecuencias de radio manipuladas está sujeto a error, y la posibilidad de manipulación externa. Para la mayoría de nosotros, no es algo a tener demasiado en cuenta, sin embargo para pasarelas IPSec que manejan muchas conexiones, puede presentar un problema. Una solución potencial es el PIII, que viene con un generador aleatorio de números, que mide la variación térmica de la CPU, creo que a medida que progresemos serán más comunes soluciones como esta.

Ocultación de datos

Un aspecto que olvida mucha gente es que el simple hecho de cifrar los datos puede llamar la atención. Por ejemplo, si un administrador corporativo buscase entre las estaciones de trabajo por ficheros terminados en .pgp, y fueses el único con semejante tipo de ficheros

StegHide

El StegHide oculta los datos en ficheros, tales como sonidos e imágenes, en los cuales no se utilizan todos los bits de cada byte. Puesto que los datos van cifrados, pareceran aleatorios, y probar que los datos están ahí puede ser difícil. La única desventaja es que para almacenar un fichero de un megabyte se necesita una imagen o sonido de varios megabytes, lo cual puede resultar extraño (pero los discos duros y las altas velocidades de acceso se están poniendo baratas). El StegHide se puede conseguir en: http://www2.crosswinds.net/~shetzl/steghide/∞

Virtual Private Server

El Virtual Private Server (VPS) utiliza Perl y SSH para crear VPN’s. Se puede conseguir en: http://www.strongcrypto.com/∞.




Virtual Tunnel

El Virtual Tunnel (VTUN) soporta una variedad de métodos de establecimiento de un enlace, y varios algoritmos. Se puede conseguir de: http://vtun.netpedia.net/∞.

Zebedee

Zebedee proporciona cifrado del tráfico TCP entre hosts y se encuentra disponible para UNIX y windows. Se puede conseguir de: http://www.winton.org.uk/zebedee/∞.

No hay comentarios: