miércoles, 3 de junio de 2009

Bitácora de PSI.: (Crypto)

Si, aunque Rapsuskley & Hazhe dirían "dame criptonita", nosotros más bien tenemos que decir "dame criptología". Dejando a un lado el mundo de la música paso a entrar en materia.

Palabrejas de nuestro mundo de la PSI.:

- Autenticación (y tú, ¿quién [c...] eres?). No te olvides que tú puedes ser muchas cosas; un cliente, un servidor, un usuario, un proceso, o simplemente un pensamiento. Los típicos sitemas login-password o nuestro amigo kerberos podrán ayudarte, así como la firma digital, la certificación, o la biometría.

- Control de acceso (y tú, ¿qué [c...] quieres?). No te olvides que puedes querer muchas cosas; acceder a un servicio, a un fichero, o a una cuenta bancaria. Y recuerda extremar las precauciones en tu sistema de control de acceso en época de carnavales. La autenticación y el control de acceso suelen ser muy buenos amigos. Esquemas basados en credenciales, roles y atributos podrán ayudarte en la forma de ACLs, filtros, cortafuegos, o en la forma de simples rwx o tickets de kerberos, entre otros.

- Confidencialidad (el contenido de este párrafo es confidencial). Cíframe despacito, pero procura no meterme retardos. Muerte al telnet, ftp, tftp y familia. Larga vida al s(*). No te olvides guardar siempre la etiqueta y el protocolo exigido en cada caso, y mejor con s que sin ella.

- Integridad de datos (soy quien digo ser aunque en muchas ocasiones trate de ser quien no soy, ¿quién soy?). Procura dejar huella en todo lo que hagas y, ante todo, se íntegro en toda decisión que tomes.

- No repudio (yo no he sido, ha sido ...). Cualquier padre o madre asiste diariamente a situaciones más bien de repudio. La firma digital y las autoridades certificadoras podrán ayudarte, no con tus hijos, pero si con tus sesiones y transacciones.

- Accesibilidad (sal a dar un paseo por nuestras ciudades sobre una silla de ruedas y comprenderás lo que es la no accesibilidad). No te olvides que puedes querer acceder a muchos sitios; un servidor, un fichero, una base de datos, etc. Esta palabreja es colega de la disponibilidad y se lleva muy mal con la [D]DoS.

Analizando todas estas palabras es fácil concluir que la criptografía no está nada mal, y que tiene un cierto interés, o tal vez mucho interés. Pero, y la criptología y el criptoanálisis?. La criptología abarca ambos campos, la criptografía y el criptoanálisis. El primero es el lado de la luz, y el segundo el de la oscuridad, aunque recuerda que las fronteras entre ambos son muy difusas. El primero es el mundo de la algoritmia criptográfica, y el segundo el de la contra-algoritmia. El primero crea, y el segundo destruye. Recuerda que esto es un proceso de control de calidad, y que el criptoanálisis realiza una función muy importante, deshacerse de los débiles. Durante los últimos años hemos visto la desaparición y aparición de muchos algoritmos de cifrado pero, en el fondo, seguimos con la sensación, aunque dichos algoritmos han evolucionado considerablemente, que lo único que estamos haciendo es incrementar cada vez más el tamaño de nuestras claves. Esto parece una carrera sin final entre la longitud de nuestras claves y la potencia computacional al servicio de la [pseudo]fuerza bruta. Pues bien, "que la fuerza te acompañe". Y si, hemos asistido a muchas chapuzas tanto en los algoritmos como en los protocolos seguros y sus implementaciones pero, aún así, son una herramienta muy potente de securización.

Bueno, me has convencido que la criptografía, o mejor dicho, la criptología, es de gran importancia pero, ¿a qué la aplico?. De momento no se ha descubierto ningún método para hacer bocadillos de chorizo cifrados, pero quien sabe. Por lo tanto, tendrás que conformarte con tratar de cifrar, de la mejor forma posible, tanto tus servicios-comunicaciones como los datos.

Y, ¿cómo puedo cifrarme?. Recuerda tus enseñanzas, esas que nos hablaban de las malditas 7 capas del modelo OSI, y podrás imaginarte que puedes cifrar la datos-información en muchas de ellas. En principio, sin divagar en exceso, se podría hacer a nivel de aplicación para, por ejemplo, cifrar tus datos-ficheros. Un ejemplo de este nivel puedes encontrarlo en un viejo conocido, el GnuPG, o GPG (también disponible para los otros en la forma de GPg4win). Y, ¿quiénes son los otros?. Tal vez esta pregunta deberías hacérsela a Amenábar, aquí estamos para hablar de "mi" asignatura, como diría Umbral. También puedes bajar de nivel y cifrar la sesión por medio de la "sslificación", toma nueva leche a la RAE, de cualquier amigo que no tenga una "s" al principio o al final. En este caso SSL, o el TLS son nuestros amigos inseparables que, aunque apunta formas, no termina por vislumbrarse su muerte. Para concluir, no podemos dejarnos fuera otro clásico de la seguridad, las VPNs (Virtual Private Networks), con su máximo exponente de implementación en IP[6]sec. Si quieres hacer pruebas en laboratorio, y aplicar el dicho de aprende jugando, te recomiendo OpenVPN. Existen otras soluciones para VPNs o túneles seguros, como Eclipt Secure Tunnel, o por medio de stunnel o el mismo ssh con la redirección de IPs y puertos. También podrás plantearte el uso de túneles de cifrado a nivel 2.

Y los datos, ¿cómo los cifro?. Pues con mucho cuidado. En este punto podemos diferenciar dos ámbitos, el cifrado de ficheros y el de sistemas de fichero. Para jugar con alguna de las múltiples herramientas para el primer caso puedes utilizar el ya comentado GPG y, para el segundo, muchos de nuestros kernels actuales tienen soporte para cifrado de los sistemas de ficheros. De gran interés en medios extraíbles. Ese fichero de las máquinas debian del laboratorio que has estado "tocando" en la práctica 3, llamado /etc/fstab, te proporciona la opción encryption para tal tarea, especificando además el algoritmo de cifrado.

Además de la seguridad en las comunicaciones, también se debe considerar la seguridad en la parte cliente (por ejemplo navegadores), así como en los servidores, sus SGBDs y aplicativo desarrollado (por ejemplo servidores web, JSPs, ASPs, PHP, etc.). En este último nivel son muchos y variados los problemas de seguridad identificados (SQL Injection, XSS o Cross Site Scripting, Ejecución Remota de Código, RFI (Remote File Inclusion) o Directory traversal, entre otros). Sin duda alguna, este mundo no es del todo decidible. En este contexto, toda sesión siempre puede ser susceptible de sufrir una cierta usurpación, tanto en la parte cliente, como en la propia comunicación o en el servidor.

El infierno está lleno de buenas intenciones,