Cómo entender qué es un cifrado
Sinceramente, al profundizar en la criptografía, la diferencia entre códigos y cifrados puede resultar bastante confusa. Pero, en general, un cifrado es simplemente un algoritmo que convierte información legible en algo ilegible (texto cifrado).Algunos también lo llaman «cifra», que es una ortografía antigua o alternativa. Normalmente, se usan los términos «código» y «cifrado» como si fueran intercambiables, pero técnicamente son bastante diferentes. Los códigos se basan más en sustituir palabras o frases (asignan un significado secundario), como si ocultaran un mensaje tras palabras aparentemente inocentes. Los cifrados, en cambio, se basan más en mezclar caracteres o bits de datos basándose en un algoritmo y una clave secreta. Todo esto puede ser un dolor de cabeza porque, en la práctica, las fronteras se difuminan. A veces, la gente simplemente llama a todo «códigos», sobre todo si solo intercambian palabras, sin cifrar nada en realidad. Pero si se trata de cifrado real, como proteger correos electrónicos o transferencias de datos, los cifrados son lo que se busca. Porque, claro, la seguridad depende de mantener esa clave en secreto. No quieres que nadie adivine tu algoritmo secreto ni que descifre tu cifrado por fuerza bruta, por eso el cifrado moderno se basa en algoritmos compartibles, pero mantiene las claves confidenciales. Si alguna vez ves la frase «cifrado Vigenère» o «cifrado AES», se trata de algoritmos específicos: cifrados con formas particulares de codificar datos. Los cifrados modernos están diseñados para ser seguros incluso si el algoritmo en sí es conocido por todos, excepto la clave. Esto se basa en el principio de Kerckhoff, que dice que la seguridad debe estar en la clave, no en el método. Y para que lo sepas, los cifrados clásicos, como César o ROT13, están un poco anticuados. Son demasiado simples porque solo implican sustituciones o transposiciones básicas que podrían descifrarse con suficiente esfuerzo. La criptografía moderna ha superado eso, basándose en algoritmos matemáticamente complejos cuya seguridad está realmente probada. Hoy en día se utilizan para cifrar correos electrónicos, datos bancarios y, en general, para guardar secretos en internet. Así que sí, entender la diferencia ayuda, pero en la criptografía cotidiana, la mayoría de la gente simplemente opta por algoritmos robustos y probados (como AES) y mantiene las claves en secreto. Porque, claro, nadie quiere un blanco fácil.
Si tienes curiosidad por experimentar con el cifrado o algoritmos, consulta recursos como el repositorio de GitHub: Winhance. Es un buen punto de partida para ver cómo se ensamblan algunas de estas cosas, especialmente si te gusta experimentar o aprender los entresijos de la criptografía. Un aviso: incluso algunos algoritmos modernos pueden ser excesivos para funciones básicas, así que no te preocupes si al principio te resulta un poco abrumador.
Los códigos no son realmente cifras
Un código suele describir un sistema donde se asigna un significado a ciertas palabras o frases. Las palabras o frases del código pueden tener un significado legítimo y bien entendido; sin embargo, el código implementa un significado secundario que solo los entendidos pueden comprender. Alternativamente, el código puede ser una combinación de caracteres completamente carente de significado.
Por ejemplo, dos agentes que desean confirmar su confianza mutua podrían usar un par de frases clave.»He oído que hace buen tiempo en París en esta época del año» y «Siempre me ha gustado más Dublín» podrían ser frases clave de desafío-respuesta. Una de las ventajas de usar frases clave con significados establecidos y secundarios es que un observador externo podría considerar la conversación completamente normal y poco probable que tenga un significado oculto. Este sistema de frases clave se beneficia de la negación plausible.
Sin embargo, hay que tener cuidado de que las frases elegidas no sean utilizadas por cualquier transeúnte. Si la primera frase clave se dice a cualquier persona del público, podría parecerle un poco extraña, pero por lo demás, solo es una charla superficial. La respuesta clave debe elegirse de forma que tenga sentido para cualquiera que esté escuchando, pero es extremadamente improbable que la diga cualquier persona.
Algunos códigos pueden no usar palabras completas. Por ejemplo, «UBDIBF» podría ser una palabra clave para indicar «misión completa, objetivos cumplidos».Cualquiera que vea o escuche dicho código podría asumir que se está transmitiendo un mensaje secreto. Sin embargo, sin conocer el código, no podría determinar su significado. Estos códigos se benefician de ser más cortos y fáciles de transmitir. Ambos métodos también corren el riesgo de que el agente olvide el código correcto.
Cifrados
Un cifrado es una forma algorítmica de manipular un mensaje de tal manera que el resultado, conocido como texto cifrado, no se pueda entender. Para evitar que todo el cifrado se vuelva inútil en cuanto alguien comprenda su funcionamiento, se utiliza una «clave» para modificar el resultado.
En la criptografía moderna, existen dos formas distintas de definir algoritmos. La primera es por el tipo de clave. Un cifrado simétrico utiliza la misma clave para cifrar y descifrar datos. Una clave simétrica se conoce generalmente como clave secreta. Un cifrado asimétrico utiliza dos claves diferentes: una para cifrar datos y otra para descifrarlos. Normalmente, la clave asimétrica utilizada para cifrar datos se conoce como clave pública, mientras que la clave de descifrado se conoce como clave privada. Utilizarlas de esta manera permite a cualquiera cifrar un mensaje, con la seguridad de que solo el propietario legítimo de la clave privada puede descifrarlo y leerlo.
Los cifrados también se pueden clasificar como cifrados de flujo o de bloque. Un cifrado de flujo cifra un flujo continuo de símbolos. Un cifrado de bloque cifra bloques de datos de tamaño fijo, por lo que estos cifrados necesitan relleno si los datos no se ajustan exactamente al tamaño del bloque.
Cifrados clásicos vs.modernos
Los cifrados clásicos eran relativamente simples. Esto era necesario debido a los bajos niveles de tecnología que requerían que los cifrados fueran utilizables a mano o con herramientas simples. Estos tendían a implicar transposición o sustitución. Un cifrado de sustitución como el cifrado César o ROT13 sustituye una letra del alfabeto por otra. En ROT13, cada letra se sustituye con la letra 13 caracteres después de ella en el alfabeto. Un cifrado de transposición actúa de manera similar, pero no tiene el mismo desplazamiento para cada carácter. Tales técnicas, incluso cuando el alfabeto de transposición se cambia después de cada letra, son relativamente fáciles de descifrar. Esto se debe a que el espacio de claves posible es bajo, solo hay un número limitado de claves diferentes que se pueden usar. Una vez que un enemigo entiende el cifrado, puede probar todas las claves y romper el sistema.
Los cifrados modernos se basan en el principio de Kerckhoff, que establece que cualquier criptosistema debe permanecer seguro incluso si el sistema completo, salvo la clave, es conocido por el enemigo. Por ello, los cifrados modernos son públicos y están bien documentados, sin comprometer su seguridad. Ahora solo es necesario mantener en secreto la clave, una tarea mucho más sencilla que mantener en secreto todo el sistema.
Conclusión
Un cifrado es otro nombre para un algoritmo de cifrado. Algunas personas pueden usar el término indistintamente de código (como en cifrado = codificado).Sin embargo, esto no es estrictamente correcto. Un código depende de que su significado se mantenga en secreto. Un código también puede decidirse arbitrariamente. Un cifrado es un algoritmo repetible para cifrar datos arbitrarios. La seguridad de un cifrado depende de que la clave se mantenga en secreto.
El término «cifra» proviene de la palabra árabe para cero, صفر (sifr).El sistema de numeración romana no contemplaba el concepto de cero, por lo que, cuando el sistema de numeración arábiga se extendió a Europa en la Edad Media, la palabra árabe se adoptó en el latín medieval ad «cifra».Con el tiempo, en Inglaterra, este término evolucionó a «cipher».Se cree que el nuevo concepto de cero era difícil de entender, por lo que se utilizó para referirse a cualquier mensaje o comunicación difícil de entender, incluso si no estaba codificado.