La definición formal que nos da el diccionario de la Lengua Española es: “El arte de escribir con clave secreta o de un modo enigmático”. Podemos ampliar esta definición diciendo: Es el conjunto de métodos y técnicas aplicadas a un texto, comunicación o mensaje origen, denominado texto en claro, para mantener la intimidad y la privacidad del mismo, haciendo que sea ilegible criptograma, para sistemas o personas ajenas al emisor y receptor.
A la alteración de un símbolo del mensaje origen por otro, se denomina cifrado y al proceso inverso, descifrado. Cuando la alteración se produce sobre una palabra o frase del mensaje origen se denomina codificación y el proceso inverso descodificación. Un mensaje codificado será siempre más difícil de interpretar que uno cifrado debido a la necesidad de conocer el diccionario de ese código. De todas formas y alejándonos de tecnicismos, nos vamos a encontrar recurrentemente con las palabras: cifrado, codificado o criptografiado con el mismo significado en distintos tipos de documentos y publicaciones, no vamos a ser más “papistas que el papa”.?
Clasificaciones.
Existen distintas clasificaciones de la criptografía en función del tipo de tratamiento que se le da al mensaje o por el tipo de clave empleada, pero quizás la clasificación por épocas sea la más adecuada, dado que según se van perfeccionan los métodos, distintas técnicas se pueden ver juntas en distintos criptosistemas, de esta forma tenemos:
- Criptografía Clásica. Fundamentada en los sistemas Simétricos o de clave secreta y apoyada en técnicas de sustitución y transposición. En función del tratamiento que se da al mensaje, puede ser:
- Criptografía Moderna. De muy reciente creación siendo la principal la denominada Asimétrica o de clave pública, apoyada en las matemáticas y en la informática. En función del tipo de tipo de claves se dividen en:
- Cifrado con clave secreta
- Cifrado con clave pública
- Herramientas de apoyo
- Criptografía del siglo XXI. En un estado embrionario y basada en ordenadores cuánticos. Los Factores fundamentales en el trabajo criptográficos son:
- Aleatoriedad
- Primalidad
- Velocidad
Dentro de la criptografía podemos incluir a la Esteganografía, aunque su forma de entender la ocultación de información es diferente. La forma de trabajar de la esteganografía es enmascarar el mensaje y ocultarlo en el medio o soporte de transmisión que debe parecer insustancial para un criptógrafo.
Solo recordar que la función tradicional de la criptografía ha sido la de proveer soporte a la seguridad de los medios de comunicación en situaciones críticas de defensa y/o policiales. En la época actual está al alcance de cualquiera de nosotros en los sistemas informáticos, de telefonía móvil, comercio, correo y banca electrónica.
Principios de la Criptografía.
Kerckhoffs.
En 1.883 Auguste Kerckhoffs publica dos artículos sobre “La Cryptographie Militaire”, donde propone los principios de diseño para cifrados militares, algunos de ellos son válidos actualmente. Las propiedades deseables son:
- El sistema debe ser en la práctica indescifrable, en caso de que no lo sea matemáticamente. (computacionalmente seguro)
- El sistema no debe ser secreto y no debe ser un problema que caiga en manos del enemigo.
- La clave del sistema debe ser fácil de memorizar y comunicar a otros, sin necesidad de tener que escribirla. Será cambiable y modificable por los interlocutores válidos.
- El sistema debe poder aplicarse a la correspondencia telegráfica. (aplicable a sistemas digitales).
- El sistema debe ser portable y su uso no deberá requerir la intervención de varias personas.
- El sistema debe ser fácil de usar, no requerirá conocimientos especiales ni tendrá una larga serie de reglas.
Confusión y Difusión.
Dos objetivos básicos de la criptografía son introducir en el criptograma confusión y difusión, estos dos principios se han usado desde el principio de los tiempos criptográficos, pero Claude Shannon los introdujo en su Communication Theory of Secrecy Systems y “apareció la ley” ?. La difusión pretende diseminar las características del texto en claro en todo el criptograma, ocultando la relación entre ambos y para ello aplica la permutación de caracteres o transposición. La confusión trata de desorientar, eliminando la relación entre el criptograma y la clave utilizada en el cifrado, y para ello se aplican operaciones de sustitución de caracteres. La combinación de ambas acciones rompe la estructura estadística del mensaje, provocando mayor dificultad a los criptoanalistas.
Seguridad por oscuridad
Es un principio con el cual no todos están de acuerdo, intenta utilizar el secreto del diseño, implementación, etc. para asegurar el sistema. Puedes no estar de acuerdo, pero si funciona y seguro que funciona, su objetivo ha sido cumplido. Los principios sobre los cuales se basa son:
- No existe.
- No conocemos los algoritmos y/o protocolos utilizados.
- No se pueden revelar sus deficiencias y vulnerabilidades.
- No tiene código fuente (software).
- No se implementa en harware
- No sabemos
- No …
La posibilidad de descubrir, atacar o romper el sistema es baja. El creador considera que las vulnerabilidades de su sistema están cubiertas por el secreto del mismo.
Un caso de este tipo de ocultación fue el CSS (Content Scramble System). El sistema protegía los DVD de vídeo a finales del siglo XX, hasta que Jon Lech Johansen desarrolló DeCSS, programa para su descodificación y Frank A. Stevenson publicase tres formas de atacarlo. Ambos tuvieron que pasar por los tribunales, Johansen dijo que el programa fue desarrollado en Alemania y que sólo proporcionó la interface gráfica.
Quizás no sean un ejemplo ético, pero la importancia para muchos jóvenes de tener al lado a unos bandoleros que resisten la dominación económica y cultural, como Joaquín Murrieta o Curro Jimenez, era un nuevo tipo de revolución.
Métricas de seguridad criptográfica.
La seguridad de un sistema está dado por la complejidad del problema que hay que resolver para romper el sistema.
- Seguridad incondicional. Es la más estricta ya que cree que el atacante tiene recursos ilimitados, tanto computacionales como de otro tipo. Una condición necesaria para que el esquema de cifrado de clave simétrica sea seguro es que la clave sea al menos tan larga como el mensaje.
- Seguridad teórico-compleja. Se considera a los atacantes como si tuvieran un poder de cómputo polinomial. Se construye una prueba de seguridad relativa al modelo, el objetivo es designar un método criptográfico basado en las posibles debilidades anticipando un adversario potente. Se usa un análisis asintótico y el análisis del peor de los casos para determinar cuándo las pruebas tendrán importancia práctica.
- Seguridad demostrable. Se debe exponer que la dificultad para romper el criptograma es esencialmente igual que la dificultad de resolver un problema ya conocido y difícil, como los factores primos de un entero grande o el logaritmo discreto.
- Seguridad computacional. Mide la cantidad de esfuerzo computacional que se requiere, por el mejor método conocido, para romper un sistema. Una técnica propuesta es segura si el nivel de cómputo necesario para romper el sistema excede, con margen, los recursos de cómputo del atacante.
- Seguridad a medida. Son argumentos convincentes de que cada ataque exitoso requiere un nivel de recursos más grande que el que hemos fijado para un ataque.
Consideraciones básicas.
Las necesidades de cifrado pasarán por la utilización de alguna herramienta o lenguaje de programación, para ambos, siempre deberemos configurar de forma segura las primitivas básicas de la herramienta obligándonos a:
- Identificar cuánto tiempo debe asegurarnos. Estará en función de los avances futuros y de las técnicas de criptoanálisis, algo difícil de predecir, pero orientable según nuestros conocimientos en la materia.
- Elegir un algoritmo actualizado y fuerte.
- Seleccionar un modo de operación adecuado.
- Seleccionar siempre un esquema de relleno. Por ejemplo: Java sólo nos proporciona un esquema de relleno válido, el PKCS5Padding, los otros dos no nos garantizan nada, el “NoPadding” no es recomendable y el “ISO10126Padding” no tiene soporte y está obsoleto. De todas formas, no especificar un esquema de relleno es más peligroso que proporcionar uno susceptible a ciertos ataques.
- Utilizar un Vector de Inicialización (IV) aleatorio. Es una forma de añadir complejidad al cifrado. Por ejemplo: para los modos de operación “CTR” y “CBC” se necesita que los IV sean aleatorios.
- Crear claves difíciles con tamaños máximos. La seguridad de un sistema de encriptación es directamente proporcional al tamaño de su clave. Los tamaños deben ser lo suficientemente largos para que los ataques de fuerza bruta se vuelvan inviables y suficientemente cortos para tener viabilidad computacional.
- Los sistemas criptográficos se diferencian por:
- El número y tipo de claves: Cifrado simétrico, asimétrico o de clave pública.
- La forma del proceso: En flujo o en bloque
- Los tipos de operaciones asociadas: Códigos, Sustitución (Mono-poli Alfabética), Transposición (Simple, Doble).