Criptografía, ¿El patito feo de la informática? (I)

Hoy en día usamos innumerables aplicaciones de la criptografía, consciente o inconscientemente, aunque este último suele ser el caso habitual. El simple hecho de acceder a una web segura -https- desencadena una maravilla de la matemática moderna, una explosión de algoritmos, todos ellos con un mismo fin: proteger nuestra privacidad y asegurarnos que el destinatario de esa comunicación es quien dice ser.

Imagino que la mayoría de nuestros lectores ya sabrán lo que es, pero ahí van unas definiciones:

La RAE nos proporciona una descripción realmente vaga del término:

Criptografía (del griego criptos, ‘oculto‘, y grafé, ‘escritura‘).

Arte de escribir con clave secreta o de un modo enigmático.

Frente a ésta, encontramos las versiones de la wikipedia en español:

Criptografía (del griego criptos, ‘oculto‘, y grafé, ‘escritura‘, literalmente ‘escritura oculta‘).

Tradicionalmente se ha definido como el ámbito de la criptología que se ocupa de las técnicas de cifrado o codificado destinadas a alterar las representaciones lingüísticas de ciertos mensajes con el fin de hacerlos ininteligibles a receptores no autorizados.

Y la versión en inglés traducida:

Criptografía (o criptología; del griego ‘kryptós‘, «oculto, secreto»; y ‘graphein‘, «escritura», o -‘logia‘, «estudio», respectivamente)

Es la práctica y el estudio de técnicas para proporcionar comunicaciones seguras en presencia de terceros (llamados atacantes). Una aproximación más general, es la construcción y el análisis de protocolos para el bloqueo de atacantes.

Obviando la versión proporcionada por la RAE nos quedan dos versiones bastante poco acertadas de la Wikipedia, así que: ¿cómo podríamos definir criptografía de una forma acertada? Aquí aparece el Dr. Jorge Ramió Aguirre:

La criptografía es aquella rama inicial de las Matemáticas y en la actualidad también de la Informática y la Telemática, que hace uso de métodos y técnicas con el objeto principal de cifrar, y por tanto proteger, un mensaje o archivo por medio de un algoritmo, usando una o más claves.

¿Por qué deberíamos cifrar?

«Scientia potentia est«. Esta frase nos sonará más como «El conocimiento es poder» comúnmente atribuida a Sir Francis Bacon aunque no con toda seguridad.

Esto se lo toman muy en serio las grandes multinacionales, y les funciona. Utilizan toda nuestra información para levantar imperios multimillonarios, analizando toda la información que nosotros alegremente les proporcionamos y la meta-información que generamos mediante nuestras andanzas por el ciberespacio.

Grandes granjas de servidores con tecnologías que a la mayoría le son totalmente desconocidas, como pueden ser Hadoop, GridGain, MapReduce, Storm, MongoDB, Cassandra, CouchDB y una infinidad más, alimentando algoritmos extraordinariamente complejos escritos en lenguajes con nombres tan exóticos como «Pig», «R», «Python», «Go», para contener y analizar nuestra información. El producto de este complejo sistema permite saber incluso la orientación sexual [PDF] de una persona aunque jamás la haya hecho pública, «simplemente» analizando su entorno y a su vez sus entornos, convirtiendo los datos en información, la información en oro y el oro en poder.

Aunque los últimos párrafos puedan sonar amarillistas o simplemente paranoicos no debemos caer en ese error. Seguro que a todos nos suena Twitter, Facebook y Google y sus geniales servicios «gratuitos» que nos permiten socializar y mover nuestra vida 2.0. Llegados a este punto debemos recordar las palabras de los más mayores que siempre han insistido incansablemente en la máxima de «Nadie regala nada«. Con esta premisa en mente, en esta serie realizaremos un recorrido por las soluciones más comunes que están a nuestro alcance para proteger nuestra información a través del cifrado.

Glosario utilizado durante la serie

Antes de entrar en materia, es necesario echar un vistazo a un breve vocabulario básico que, al igual que en cualquier disciplina, existe en criptografía (y que ayudará a entender los siguientes posts):

  • Criptología: Ciencia que estudia e investiga todo aquello relacionado con la criptografía: incluye cifra y criptoanálisis.
  • Criptosistema: Un conjunto de algoritmos criptográficos necesarios para implementar una solución criptográfica.
  • Contraseña: Seña secreta que nos permitirá descifrar el criptograma o cifrar el texto en claro.
  • Clave: En criptografía asimétrica datos públicos o privados que nos permitirán descifrar el criptograma o cifrar el texto en claro.
  • Clave pública: La parte pública en un sistema asimétrico permitirá generalmente verificar y cifrar. Como indica su nombre no hay peligro en proporcionarla públicamente.
  • Clave privada: La parte privada en un sistema asimétrico permitirá generalmente firmar y descifrar. Esta parte deberá ser mantenida en secreto a toda costa.
  • Cifrado/Descifrado: Se dice cifrado cuando mediante un algoritmo y una contraseña o clave se transforma un texto en claro en un criptograma y descifrado cuando es el procedimiento inverso con el fin de recuperar el texto en claro.
  • Texto en claro: Documento original.
  • Criptograma: Documento original después de haber sido sometido a un criptosistema.
  • Criptoanálisis: Disciplina de la criptología dedicada al estudio de criptosistemas con la finalidad de la ruptura del mismo.
  • Ruptura: La ruptura o rotura de un criptosistema hace referencia a la búsqueda de debilidades en el algoritmo empleado para obtener la clave, el texto en claro o reducir la dificultad computacional de obtener el texto en claro en n-1 intentos, donde n es el espacio de claves utilizado para el cifrado.
  • Espacio de claves: Hace referencia al set de todas las posibles combinaciones que pueden ser usadas para generar la clave.
  • Criptografía robusta: Hace referencia a criptosistemas o componentes criptográficos que son considerados altamente resistentes frente a criptoanálisis.
  • Salt: Es una serie de bits aleatorios que se usan como una de las entradas en una función de derivación de claves junto a la contraseña proporcionada por el usuario.

Una vez que tenemos claras estas definiciones, entremos un poco en la parte práctica.

¿Cifrado de disco, de archivos o contenedores?

Una vez tomada la decisión surgen innumerables preguntas. Entre ellas una de las más comunes suele ser si cifrar el disco duro de la máquina al completo, cifrar solamente los documentos más importantes o utilizar contenedores. La respuesta suele ser distinta en cada caso, así que veamos las bondades y desventajas de cada uno de estos tres ejemplos:

1. Cifrado de disco: esta técnica es conocida como FDE (Full Disk Encription) y nos permitirá según la implementación cifrar el disco completo incluidos los archivos del propio sistema operativo o únicamente los documentos del usuario situados en una partición separada del sistema.

Bondades:

  • Todos nuestros archivos están cifrados. Dependiendo de la implementación se cifran incluso los archivos del sistema operativo.
  • Solamente necesitamos una contraseña para descifrar todos nuestros archivos.
  • En caso de pérdida o robo del equipo no se podrá recuperar nada en claro.
  • Eliminando la clave de cifrado almacenada en disco será «imposible» la recuperación de la información, aunque no obstante se recomienda sobreescribir el disco duro.

Desventajas:

  • Ralentización del sistema, ya que los datos se encuentran en constante proceso de cifrado y descifrado.
  • En caso de pérdida u olvido de la contraseña se habrá perdido la totalidad de los datos almacenados.
  • En caso del dañado de la zona del disco que almacena la clave de cifrado no será posible su recuperación.

2. Cifrado de archivos: mediante esta técnica cifraremos archivos/documentos individualmente.

Bondades:

  • No conlleva una sobrecarga del funcionamiento del sistema.
  • Ideal para el envío y almacenado de documentos sensibles, en el caso de que dispongamos de un número razonable de estos.
  • La pérdida de la contraseña conlleva la pérdida de ese archivo solamente.

Desventajas:

  • Una vez descifrado, cualquiera que tenga acceso a nuestro equipo podrá acceder a él.
  • El borrado del archivo en claro no significa que alguien con acceso físico al dispositivo contenedor (equipo, pendrive) no pueda recuperarlo, ya que este seguirá existiendo en el disco duro y en diversos posibles directorios de caché.

3. Contenedores: esta opción consiste en la creación de archivos de un tamaño especificado (o variable, dependiendo de la implementación) para generar un sistema de ficheros cifrado en su interior emulando ser dispositivos de almacenamiento externo.

Bondades:

  • El comportamiento de estos contenedores es similar a un dispositivo de almacenamiento externo cifrado en su totalidad.
  • Nos permite usar una sola contraseña para el descifrado de la información contenida en él.
  • Pueden ser de tamaño variable, permitiéndonos establecer un tamaño máximo y ocupar solamente lo que ocupe su contenido.
  • No conlleva una sobrecarga del funcionamiento del sistema.
  • Posibilidad de usar contraseñas diferentes dependiendo del contenido, usando por ejemplo una contraseña de 8 caracteres para documentación poco sensible y una de 32 para documentación clasificada.
  • Fácil transporte y backup.

Desventajas:

  • Perder la contraseña conlleva la pérdida de toda la información contenida en él.


Con esta breve introducción semiteórica pero necesaria, en la siguiente entrada de la serie entraremos en materia y comenzaremos a ver aplicaciones que podemos utilizar para el cifrado de disco y archivos.