Hace un par de días publicábamos un post en el cual resaltábamos la relevancia que han venido tomando los temas más técnicos dentro de aspectos de la cultura popular tan relevantes como el cine. Particularmente nos referimos la criptografía, haciendo alusión a películas como El Código Enigma, una de mis favoritas en los últimos años, donde se relata la historia de Alan Turing, quien con sus trabajos llevó a la computación a un nuevo nivel.
Si bien el gusto en cuanto a las películas puede variar, hay un tema que uno de nuestros lectores nos marcó vía Facebook luego de leer el post y está relacionado con la necesidad de clarificar la diferencia entre la codificación y el cifrado, términos que cuando nos referimos a criptografía están bastante relacionados, pero no son lo mismo. En lo único que podemos relacionar estos dos conceptos es en el objetivo que persigue cada uno, relacionado con garantizar la confidencialidad de la información, al hacer que carezca de sentido para terceros ajenos a la comunicación.
Cuando la semántica y la sintaxis importan en seguridad
Primero vale la pena mencionar que la criptografía hace parte de un campo mucho más amplio que es la criptología, la cual comprende otros campos como el criptoanálisis y la esteganografía. Particularmente la criptografía se enfoca en estudiar los métodos para lograr que un mensaje no pueda ser leído por un tercero sin autorización, es decir, garantizar la confidencialidad de la información.
Cifrar un mensaje tiene que ver con ocultar su información basándose en la sintaxis; la codificación se basa en alterar la semántica
Para ocultar el significado del mensaje se puede adoptar una de dos opciones: usar algoritmos de cifrado o codificar el mensaje. El cifrado, entonces, se basa en aplicar un algoritmo que suele utilizar una clave para transformar la estructura y composición de la información que se pretende proteger, de tal manera que si es interceptada por un tercero no la pueda entender.
El uso del tipo de clave va a determinar si es una cifrado simétrico o un cifrado asimétrico. En el primer caso se usa una misma clave para cifrar y descifrar el mensaje, lo cual lo convierte en un método más rápido y sencillo comparado con el cifrado asimétrico, donde se utiliza un esquema de llave pública y llave privada, en el cual la llave pública es utiliza para cifrar la información y llave privada para descifrarla.
Además de garantizar la confidencialidad de la información, los esquemas de cifrado asimétrico ofrecen una alternativa para el desarrollo de firmas digitales, con las cuales el receptor de un mensaje puede verificar la autenticidad del origen de la información, además de verificar que no ha sido modificada desde su generación.
En el otro extremo tenemos la codificación, lo cual no es más que aplicar un proceso de conversión de los componentes de un mensaje para que este no sea entendido. Las reglas de transformación entre un sistema y otro van a estar definidas para poder entender el contenido del mensaje. En última, cuando nos referimos a cifrar un mensaje, tiene que ver con ocultar la información basándose en la sintaxis del mensaje, es decir alterando los símbolos que lo componen; en cambio, la codificación se basa en alterar la semántica del mensaje, lo que está relacionado con el significado del mensaje.
Otros términos para desambiguar
Como integrantes de la comunidad de seguridad dedicados a la concientización de los usuarios, muchas veces nos damos a la tarea de derribar mitos y aclarar diferencias fundamentales.
Un lugar especial dentro de estos términos que a veces se tornan ambiguos, por la forma en que son utilizados, es la definición de hacker. Si bien todos sabemos que el término está relacionado con la curiosidad de una persona para entender a fondo el funcionamiento de un sistema, todavía hay quienes lo relacionan de manera equivocada con un pirata informático o con alguien que se dedique a actividades de cibercrimen.
También nos encontramos con otras confusiones que podríamos catalogar como históricas, tal como ocurre con el concepto de virus y códigos maliciosos. Aunque muchos ya saben que hablar de un virus es señalar a un tipo de código malicioso (malware, en inglés), hay quienes utilizan el término virus para referirse a cualquier amenaza informática, quizá por el hecho de que el virus fue la primera denominación para estas amenazas; a lo largo del tiempo quedó en el subconsciente de muchos y aún se sigue utilizando a pesar de ser una de las amenazas con menores índices de propagación. Particularmente, en los últimos años se ha hecho muy popular una amenaza conocida como ransomware, y es usual escuchar a muchos usuarios referirse a esta amenaza como un virus.
Por otra parte, suele ser común encontrar muchas afirmaciones inexactas cuando algunos usuarios se refieren a las vulnerabilidades y la forma en que estas podrían ser explotadas. Por una parte, tenemos las fallas en el diseño o la implementación de una aplicación, sistema o dispositivo que es lo que se denominan como vulnerabilidades. Todos los sistemas operativos, dispositivos y aplicaciones tienen vulnerabilidades, no se escapa ninguno; sin embargo, para que una vulnerabilidad pueda ser aprovechada necesita del desarrollo de un exploit.
Es aquí donde podemos hacer frente al mito de que hay sistemas invulnerables; es claro que todos los sistemas tienen vulnerabilidades, pero para los más utilizados es donde vemos que hay una mayor cantidad de exploits.
Sin lugar a dudas, son varios los conceptos que pueden llegar a generar confusión, sea por su sutil diferencia, por el uso y el arraigo en el subconsciente colectivo o por mitos que se van propagando entre los usuarios.
Ahora la pregunta es para ti: ¿hay algún otro termino o concepto que consideras es confundido y utilizado de manera errónea y que valdría la pena clarificar?