lunes, 10 de junio de 2013

Entendiendo la seguridad informática: cosas sobre la privacidad

En el artículo anterior de la serie "Seguridad Informática" he establecido una serie de conceptos básicos. En el presente artículo, se trata de profundizar un poco en la idea de la seguridad informática y de su necesidad. No en vano los recientes episodios de la "Seguridad Nacional Americana" están en primera plana de la actualidad.

Vaya por delante que la seguridad informática es un tema muy amplio. Por ejemplo, tengo aquí a mano impresa la documentación de openSUSE, que son unas 330 páginas. En realidad pueden hacerse másters sobre el tema, y las empresas que ofrecen certificaciones sobre la materia las sitúan por encima de las ingenierías.

Bienvenid@s al mundo real!


Para ir tomando contexto, me remitiré a mi propio anecdotario. Yo utilizaba en el cambio de milenio Debian GNU/Linux "Potato", una distribución de GNU/Linux de gran y merecida reputación. Como se generalizó después, Debian utilizaba varios repositorios de software en función de la clasificación del mismo. En el nivel oficial, tenías el repositorio principal (solo software libre), un repositorio para software "no del todo libre" (códecs multimedia y software con licencias abiertas pero "dudosas") y software no libre. Además, tenías un repositorio denominado "NON-US", que contenía principalmente software que pudiese estar sujeto a patentes de software (en USA, como en otros países, es posible patentar un software; no así en España).

El caso es que hurgando aquí y allá observé que no incluía solamente software patentado, sino que incluía también el software de criptografía. En una búsqueda (laxa, de aquellas tenía un acceso a Internet muuy limitado y las fuentes de información no eran muchas), encontré que la mayoría de algoritmos de encriptación estaban prohibidos en USA, salvo los más "leves".

Después hablaré algo sobre criptografía, pero ahora baste saber que ese software no era legal en la "tierra de las libertades". Ya por entonces hacía años que habíamos oído hablar de "Echelon", así que parecía que la privacidad en yankilandia era un bien preciado o incluso inexistente -si cumplías la ley, claro.

Es cierto que en ese momento me reí un poco de los pobres usanianos. Como es de esperar en estos casos, vino un gobierno español y en uno de los muchos "apaños" que se han hecho al Código Penal español estos últimos años, incluyeron una cosa muy curiosa: la "posesión" (sic) de software [de hacking]. Naturalmente, el ministro de turno tendría un computador con Windows que emitía estractos regularmente a Microsoft, así que no tendría por qué importarle mucho el que para garantizar el sistema de seguridad de un sistema deberás probar a quebrantar dicho sistema de seguridad; y para eso necesitarás las herramientas que podrían utilizar otros para acceder a tu sistema o para dañarlo de alguna otra manera.

Echando la vista atrás, los usuarios de GNU/Linux siempre nos hemos reído de la seguridad y privacidad (mejor dicho, de la alarmante falta de las mismas) de sus productos. Si hasta hace un par de años se cuestionaba una "puerta de atrás" de Windows XP (no sé si aun sigue vigente en Vista/7/8, aunque casi lo doy por sentado), la gran noticia o decepción fue la compra de Skype hace unos meses.

Skype es una aplicación de lo que se denomina VoIP (Voz y datos con el protocolo de Internet), lo que permite enviar por la red no sólo datos, sino también voz. Digamos que Skype es un software para realizar chats, llamadas telefónicas o de videoconferencia. Es uno de los pocos sistemas que incluye cifrado de las comunicaciones por defecto. Los usuarios de sistemas libres solemos observarlo con desinterés, pero para la mayoría de usuarios era una gran herramienta. Y digo era porque precisamente ha sido adquirida por Microsoft, con lo cual por mucho que cifres la comunicación, no puedes garantizar que la propia empresa garantice la privacidad. Con un poco de optimismo, puede pensarse que la conversación en sí será privada, pero Microsoft o la NSA sabrán al menos cuándo, cuánto y con quién ha tenido lugar dicha conversación. Aunque lo cierto es que eso lo hacen casi todas las operadoras de telecomunicaciones... ¿cuál es el agravante de Skype? Bien, Skype es software privativo cuyo código no es accesible por sus usuarios: no hay forma de garantizar que Microsoft no incluye algún sistema de espionaje.

En este contexto, podemos parafrasear a Dante:
Pierde toda esperanza en cuanto traspases la puerta (de enlace)

 El muro de la individualidad

En nuestro sistema social las esferas íntimas y sociales están separadas férreamente: hay cosas que puedes hacer en privado pero no así en público. Las tres grandes religiones comparten el "pecado original" cuya consecuencia fue la consciencia de la propia desnudez y la vergüenza subsiguiente. Uno pensaría que el impulso de cubrirse debería venir más de la necesidad de combatir el frío y otras inclemencias, pero lo cierto es que el valor cultural que se le otorga es siempre el de cubrir las "vergüenzas". A medida que se fueron estableciendo sociedades mayores y más complejas cada vez, las relaciones entre sus miembros se invistieron de toda una suerte de normas y reglas respecto a qué es oportuno con otro miembro o qué no lo es.

Muchos afirman que la privacidad aún es necesaria para garantizar la propia individualidad, mientras que otros consideran que la  privacidad es una herramienta más para gestionar sus circulos sociales; otros, que no vale la pena preocuparse por ella y que todo debe de ser público.

Realmente, la privacidad incluye la necesidad de preservar aquello que esperamos de la misma. Por poner un ejemplo: hace algunos años una chica había estado de baja por depresión y se había marchado a un crucero (digamos, por el Caribe); a la chica se le ocurrió colgar las fotos del evento en su cuenta de Facebook, donde salía sonriente con sus acompañantes u otros viajeros. Al volver, sus jefes vieron dichas fotos y decidieron despedirla, ya que según ellos "muy deprimida no se la veía".

Tomemos ahora como referencia la Declaración Univarsal de los Derechos Humanos: no hay nada en ella que haga referencia a la privacidad per se. Se da por hecho que lo que se necesita es un derecho de acción (poder hacer cosas: expresarse, acceder a tal o cual información, tener una determinada ideología, etc.) en lugar de referirse a un derecho a que los demás no sepan según qué circunstancia de una persona.

Generalmente, la garantía de privacidad es una forma de preservar ciertos derechos, en particular el número 12:
Nadie será objeto de injerencias arbitrarias en su vida privada, su familia, su domicilio o su correspondencia, ni de ataques a su honra o a su reputación. Toda persona tiene derecho a la protección de la ley contra tales injerencias o ataques.
Podemos aproximarnos a un entendimiento de la cuestión con una célebre ley recientemente derogada del ejército usaniano: la ley que establecía la prohibición para los soldados de pronunciarse respecto a su orientación sexual. o que llevaba implícito que debería abstenerse de determinadas conductas homosexuales, especialmente en público. Hasta tenía su eslogan, algo como: "no te preguntan, no contestes".

Dicho todo esto, también es tradicional el respecto a la privacidad de la vida de los individuos en muchos ámbitos: familiar/doméstico, profesional, respecto a sus comunicaciones, etc. Los Estados de Derecho imponen límites a la acción de la justicia cuando se dañen estos derechos, y no es hasta modernamente, con la extensión de la tecnología, cuando el problema comienza a manifestarse en toda su intensidad: cuando una suerte de "Gran Hermano" se vislumbra como algo posible. Hasta ahora, el problema no era vigilar a los ciudadanos, sino ser capaces de hacer algo con la información obtenida de millones (literalmente, cientos).

Este largo epígrafe quiere plantear la privacidad como algo relativo, que depende de los valores de cada persona. Yo entiendo la privacidad como algo bueno, de la misma forma que entiendo que el propio individuo debe de ser el que decida, en su caso, qué grado de privacidad cede y a cambio de qué. Por ejemplo, no tengo problema en que suban fotos en las que salga yo a Facebook; si salgo haciendo algo "inapropiado" o "vergonzoso" o "inoportuno", quizás lo mejor sería no haberlo hecho, ¿no?, es decir, la célebre regla: "intenta no hacer cosas que te avergüencen si alguien las ve"; por otra parte, no entiendo por qué una sentencia penal debe de ser borrada de Internet, o una noticia de un periódico. Es interesante que se plantee la censura del evento noticiado en lugar de establecer mecanismos para rectificarla (por ejemplo, si se ha sido condenado a pena de cárcel, que se pueda comprobar con similar facilidad el haber cumplido ya la pena).

La privacidad y la confiabilidad

Después de un poco de filosofía casera, podemos abordar las partes más interesantes del desafío de la privacidad. ¿Cómo te relacionas en el mundo de forma privada? o, para ser más precisos, ¿cómo confiar en quien no sabes quien es?

Es el primer consejo que le puedes dar a un adolescente que se conecta por Internet: no te fíes de quien no puedas verificar quién es. Pero esto puede no casar mucho con el deseo de mantener la privacidad del otro internauta. En los adolescentes o menores puede ser una regla: pues nada, si no puedes saber quién es, no te relaciones con él. Pero, ¿vale esto para los adultos? Supongamos que yo accedo a un servicio tal que Facebook: si yo mantengo mi privacidad de forma estricta, nadie sabrá quién soy en realidad, por lo que, siguiendo la regla anterior, nadie debería comunicarse conmigo ¿no?

Pareciera que podemos establecer las reglas básicas de la vida fuera de la red: según aumenta el trato que tengas con una persona, disminuye la privacidad con ella. Es lo que se llama "confianza".

Y aquí entra en escena el error conceptual de las redes sociales. Por un lado, hay pocos niveles de confianza: o se confía mucho o nada; por otro lado, sus usuarios no suelen ser conscientes de la necesidad de configurar la privacidad "por defecto". Esto es conceptual, no deliberado: no importa que ahora una u otra red haga dinero vendiendo acceso a parte de determinados perfiles, ya que en origen estas redes no eran más que una especie de "tableros colaborativos" donde varios usuarios podían compartir cosas.

Hasta aquí el sentido común. Ahora viene la tecnología: un usuario podría suplantar a otro y obtener la información que estabas dispuesto a compartir. ¿Cómo compruebas que es quien dice ser cuando no puedes saber quién es? Por supuesto, la tecnología permite hacer esto, pero sólo si los usuarios han tomado las medidas oportunas, o dicho de otra forma, si se emplean sistemas de autenticación (que es una palabra para no decir "autentificación" xd).

El funcionamiento es relativamente simple: yo genero una clave y la comparto contigo; tú haces otro tanto; mientras las comunicaciones empleen tales claves, la comunicación será segura. Bueno, más o menos, pero ya hablaremos de esto en detalle ;) Básicamente, yo tengo una clave que dice que yo soy yo; tú tienes otra que dice que tú eres tú; de forma adicional, compartimos otra tercera clave que es la que usamos para cifrar la conversación.

¿y dónde está el problema? pues en que se debe disponer de tales claves, naturalmente xd

Hay aplicaciones que hacen justamente esto; pero los problemas no acaban ahí: de nada vale que tenga una clave si puede conectarse cualquiera (digamos, a través de un malware) y hacerse con ella... para suplantarme por ahí o para descifrar nuestra conversación. Así que necesito hacer dos cosas: esconder las claves de la vista, y no permitir accesos no autorizados; y eso no vale de nada si permito que lugares externos que no controlo sean quienes almacenen mis datos (sea Facebook o Google, pongamos por caso) ya que pueden tener sus propios objetivos o seguir las leyes más o menos ridículas de un país dado.

Cuando abordemos la securización de nuestro sistema (que es una bonita forma de decir "cuando utilicemos software que nos permita el mayor grado posible de privacidad, confiabilidad y disponibilidad de nuestro sistema") veremos, entre otras cosas, cómo hacer estas cosas.

Un comentario final. En ocasiones, puede ocurrir que un exceso de celo al garantizar la inviolabilidad de un sistema atraiga atención sobre él. Algo así como "si tanto se esfuerza, algo tiene que esconder". Resistir un ataque de alguien competente no es sencillo: antes o después tendremos un error, no habremos actualizado aquella aplicación que decían que tenía un fallo grave de seguridad... basta una vez para que nuestro atacante tenga acceso a nuestro sistema.

Continuará... :)

lunes, 3 de junio de 2013

La variedad de GNU/Linux

Y dicen que en la variedad está el gusto...

El mundo en los inicios del glorioso imperio de Tux
Quizás lo más desconcertante para un usuario neófito en GNU/Linux sea la Variedad. Sí, lee la mayúscula: la Variedad es una de las características más importantes de los sistemas abiertos. Es muy difícil (yo diría que imposible) ver dos escritorios iguales, pero también lo es que las herramientas usadas sean las mismas... incluso el sistema en sí puede ser diametralmente opuesto a otro sistema dado. Si vemos una guía de imágenes (más allá de galerías sobre la instalación de una distribución) pocas veces reconoceremos a nuestro sistema en esas imágenes.

Dos sistemas en un solo sistema
Recuerdo ver guías para usar programas en Microsoft Windows hace muchos años. Esas guías tenían animaciones para que el usuario viese el movimiento del cursor. Estas guías confiaban en que esa aplicación tendría más o menos la misma apariencia en otro sistema Windows. Mejor aún, se esperaba que el ratón se comportase de la misma forma en cualquier computador con ese sistema operativo. Ya entonces muchos encontraban confuso que WordPerfect permitiese otras combinaciones de pulsaciones con el ratón (incluso triple y cuádruple click) u otros programas que usaban el botón central del ratón para según que tareas: no en vano casi se estandarizó lo llamado “ratón de Windows”, que, por supuesto, sólo tenía dos botones.

Unity de Ubuntu
Voy a dar un ejemplo de experiencia personal para ilustrar lo que quiero decir. Yo usé la aplicación Microsoft Word durante muchos años, entre 1995 y el final del siglo pasado. Me gustaba, pese a sus (muchas) limitaciones, la capacidad de adaptar la aplicación al trabajo que se realizaba con ella. Así, tú podías con relativa facilidad crear tus propias barras de herramientas y menús, con lo cual la aplicación que yo usaba no tenía demasiado parecido con la que usaban mis conocidos.

Tal característica es singularmente ninguneada en los propios sistemas Windows. La diversidad es un enemigo, la flexibilidad un problema. Esto se refiere a que el sistema de enseñanza tradicional no encaja con esas características. La ayuda o lección que leas te dirá algo del estilo "pulsa tal cosa que está en tal sitio" sin preocuparse demasiado de si tu sistema (el que a ti te interesa) tiene tales cosas en el mismo lugar...
Naturalmente pueden hacerse cambios... "personalización" lo llaman. Puedes cambiar el fondo de escritorio, colores, quizás tipografías... y poco más. Quizás tengas el escritorio lleno de iconos o por contra es posible que tengas un menú muy ordenado, sin la molesta costumbre de las aplicaciones de agruparse "por empresa de desarrollo" en lugar de por finalidad.
Arch Linux: Sé simple
Y es que todo el mundo, Microsoft, Adobe, Panda... asume que compras el computador para usar sus productos, no para hacer lo que quiera que tú quieras hacer con él.

En los sistemas abiertos, por contra, la diversidad es total; tú puedes tomar un sistema GNU/Linux (o cualquier otro sistema abierto) y modificarlo para adaptarlo a tus necesidades o a tus gustos; no sólo eso, puedes ponerlo a disposición de otros usuarios, que podrán usarlo tal cuál lo usas tú o a su vez hacerle más o menos cambios.

Slackware: el principio
Todo en este contexto significa Todo: incluso el núcleo del propio sistema, la aplicación básica, aquélla por la que casi todos llamamos Linux a los sistemas GNU/Linux. -Aunque en rigor todas las distribuciones1 usan el mismo núcleo no es necesario (y de hecho, no es usual) que sean completamente iguales. Puede que unos tengan opciones específicas para equipos móviles, puede que otro esté optimizado para trabajar con varios microprocesadores...

Nintendo DS: lo de "Linux Everywhere", ¿creíais que era sólo para lavadoras?
No conformes con las diferencias que pueden existir entre distintos sistemas GNU/Linux, además conviven muchas tradiciones en cuanto a la forma de trabajar de los usuarios: desde el vanguardismo de los usuarios de KDE 4 o Compiz hasta el efectismo de los usuarios de la consola de texto, lo cierto es que la mayoría de distribuciones2
permiten unaten amplia gama de opciones para hacer la misma cosa. Y más importante aún... ¡cada cosa, cada tarea, puede ser matizada de cientos de formas!!!!

Naturalmente, un exceso de diversidad puede ser problemático. Por eso hay varios proyectos que fijan determinados estándares: FSH (FileSystem Hierarchy, Jerarquía del Sistema de Ficheros), que describe cómo se organizan los ficheros que conforman un sistema GNU/Linux, freedesktop (que detalla cómo se debe de organizar un escritorio), o formatos de documentos como ODF (Open Document Format), que especifica el formato de determinados ficheros utilizados en las suites ofimáticas... Estos esfuerzos compartidos son los que evitan que la diversidad se convierta en disparidad.

De cara el usuario, todo esto tiene dos efectos: por un lado, que la búsqueda de información para realizar una tarea pueda ser muy larga (al tener que descartar las opciones que no se aplican a nuestro sistema concreto o a nuestra forma de trabajar); por otro, que la mejor ayuda suele referirse a cómo realizar las tareas que necesitamos en la consola de texto, pues ésta experimenta relativamente pocas variaciones respecto a las consolas de otros sistemas. Pero incluso aquí hay cientos de matices, de los cuales no siempre nos advierten. Dicho de otra forma: las posibilidades de encontrar recetas (en el sentido de listas de instrucciones cortas, concisas y exactas) para solucionar nuestros problemas o realizar nuestras tareas son, por decirlo así, escasas: siempre hay que tener en cuenta las particularidades de nuestro sistema.

La Variedad es la otra cara de la Versatilidad. Es una consecuencia de que un sistema sea abierto, que cualquiera pueda modificarlo y adaptarlo a sus necesidades. Cualquier desarrollador es libre de implementar los cambios que estime oportunos, como también es libre de establecer sus metas y prioridades. Y los usuarios son libres de elegir la solución que más se adapte a sus deseos de entre todas las propuestas. Nuevas necesidades y nuevas soluciones conducen a una danza evolutiva que explica el éxito de GNU/Linux: desde los supercomputadores y grandes redes corporativas, hasta los televisores o teléfonos móviles inteligentes convertido en Android. Miles de comunidades y grupos empresariales a través del mundo crean día a día su propia solución personalizada.

1. Una distribución es una selección de software (incluyendo el núcleo Linux) y los medios con los que instalarlos en el computador, incluyendo el instalador, un medio para añadir o quitar programas del sistema, etc.
2. Información sobre el concepto de distribución y un listado bastante exhaustivo en la wikipedia