Cifrado (criptografía)

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Ejemplo de cifrado que utiliza el cifrado Vernam.

En criptografía, el cifrado es un procedimiento que utiliza un algoritmo de cifrado con cierta clave (clave de cifrado) para transformar un mensaje, sin atender a su estructura lingüística o significado, de tal forma que sea incomprensible o, al menos, difícil de comprender a toda persona que no tenga la clave secreta (clave de descifrado) del algoritmo. Las claves de cifrado y de descifrado pueden ser iguales (criptografía simétrica), (criptografía asimétrica) o (Criptografía híbrida).

El juego de caracteres (alfabeto) usado en el mensaje sin cifrar puede no ser el mismo que el juego de caracteres que se usa en el mensaje cifrado.

A veces el texto cifrado se escribe en bloques de igual longitud. A estos bloques se les denomina grupos. Estos grupos proporcionaban una forma de verificación adicional, ya que el texto cifrado obtenido debía tener un número entero de grupos. Si al cifrar el texto plano no se tiene ese número entero de grupos, entonces se suele rellenar al final con ceros o con caracteres sin sentido.

Aunque el cifrado pueda volver secreto el contenido de un documento, es necesario complementarlo con otras técnicas criptográficas para poder comunicarse de manera segura. Puede ser necesario garantizar la integridad la autenticación de las partes, etcétera.

Terminología[editar]

En el proceso de cifrado/descifrado se establecen una serie de términos y convenios para facilitar referirse a los distintos elementos que intervienen:

  • El texto en claro o texto plano (en inglés, plain text) es el mensaje que se cifra.
  • El criptograma o texto cifrado es el mensaje resultante una vez que se ha producido el cifrado, es decir, el mensaje cifrado.
  • El cifrado es el proceso que consiste en convertir el texto plano en un galimatías ilegible (cifrar), el mensaje cifrado.
  • El cifrador es el sistema que implementa el algoritmo de cifrado.
  • El algoritmo de cifrado o cifra es el algoritmo que se utiliza para cifrar.
  • La clave de cifrado se utiliza en el algoritmo de cifrado.
  • El descifrado es el proceso de convertir el texto cifrado en el texto en claro.
  • El descifrador es el sistema que implementa el algoritmo de descifrado.
  • El algoritmo de descifrado o descifra es el algoritmo que se utiliza para descifrar.
  • La clave de descifrado se utiliza en el algoritmo de descifrado.
  • La gestión de claves es el proceso de generación, certificación, distribución y cancelación de todas las claves, necesarios para llevar a cabo el cifrado.
  • El criptosistema es el conjunto estructurado de los protocolos, los algoritmos de cifrado/descifrado, los procesos de gestión de claves y las actuaciones de los usuarios.
  • La descripción de entidades: cuando se desea describir un algoritmo de cifrado/descifrado que involucra el envío de mensajes secretos, muchos autores usan los nombres genéricos Alice y Bob en lugar de los crípticos A y B. Si intervienen otras entidades (C, D, F... -la E quedaría reservada-), se les asignan entonces nombres que empiecen con estas iniciales, y los más frecuentes son Carol y Dave. Cuando un escenario involucra protección frente a atacantes que hacen escuchas, entonces para referirse a ellos se suele usar el nombre Eve (del término inglés eavesdropper, "fisgón") o bien el nombre Mallory, en caso de que el atacante, además de interceptar el mensaje, tenga la habilidad de alterarla.

Con frecuencia a los procesos de cifrado y descifrado se les denomina encriptado y desencriptado, ambos anglicismos de los términos ingleses encrypt y decrypt. La Real Academia Española recogió esa acepción en la edición de su diccionario de 2014.[1] Por su parte La Fundación del Español Urgente defiende que encriptar es un término válido y que no hay razón para censurar su uso.[2] [3]

Preprocesado del texto plano[editar]

En algunas ocasiones, antes de cifrar se realiza un preproceso de adaptación del texto plano. En este proceso se pueden seguir varios pasos que permitan el cifrado o hagan que el cifrado resultante sea más resistente frente a ataques por criptoanálisis. Todos estos cambios se tendrán que tener en cuenta cuando se realice el descifrado para poder obtener el texto plano original. Por ejemplo, son frecuentes las siguientes operaciones:

  • Conversión de alfabeto. Algunos cifradores usan un alfabeto del texto en claro que no se corresponde con el del mensaje que se quiere cifrar. Por tanto, es necesario adaptar el mensaje a ese alfabeto. Por ejemplo, algunos cifradores usan como alfabeto del texto plano el alfabeto latino. Si se desea cifrar un texto en español, es necesario realizar un proceso como resultado del cual no aparezcan los caracteres H, J, Ñ, K, U, W y Y (por ejemplo, podrían sustituirse la U y la W por la V, la K con la Q, la Ñ por la N, la Y por la I, la J por la G, y eliminar la H). Otro ejemplo clásico es el caso de cifradores que no permiten cifrar minúsculas, en cuyo caso será necesario convertir todo en mayúsculas.
  • Preproceso para dificultar el criptoanálisis. Para aumentar la calidad del texto cifrado con cierto cifrador, ya sea por su resistencia frente a ataques, extensión o cualquier otra circunstancia, a veces se preprocesa el texto en claro. Algunos ejemplos de estrategias son:
    • Inclusión de fragmentos que son para despistar y que no tienen ningún significado. Habitualmente estos fragmentos son caracteres, y se denominan caracteres nulos.
    • Eliminación de situaciones del texto claro que pueden ser aprovechadas por ataques de criptoanálisis. Por ejemplo:
      • Los espacios en blanco y signos de puntuación suelen eliminarse para que, además de conseguir una trasmisión más eficiente, se consiga que las palabras no se puedan distinguir por los contornos. Esto puede producir ambigüedades que se tenían que resolver por el contexto.
      • Los casos de secuencias de letras idénticas seguidas (por ejemplo, RR o LL del idioma español, en ciertos tipos de cifradores pueden ser aprovechadas por atacantes. Para romper estas secuencias de caracteres iguales, suelen aplicarse dos estrategias: eliminar uno de los caracteres o meter un contenido que no se tiene que interpretar (si es un solo carácter, se le llama carácter nulo).
  • Usar un código. A veces, antes de cifrar, se utiliza un código que dificulta llegar al significado de ciertas palabras o frases especialmente importantes o habituales.
  • Conversión a números. Hay algunos algoritmo de cifrado como el RSA que necesitan convertir los caracteres en números. Se pueden seguir distintas estrategias. Veamos algunos ejemplo:
    • Podríamos usar una tabla de conversión de los caracteres en números usando algún sistema de codificación de caracteres como ASCII o Unicode. Por ejemplo el mensaje "Hello Wold" usando Unicode-8 quedaría:
48 65 6C 6F 20 57 6F 72 6C 64
Esta cadena de bytes podríamos convertirla en un número concatenándolos obteniendo:
0x48656C6F20576F726C64=87521618088882538408046480
  • Otra opción podría ser considerar que los caracteres están ordenados según un criterio e interpretar la cadena como un número con base el número de caracteres del alfabeto. Por ejemplo si consideramos que sólo hay caracteres en mayúsculas y los ordenamos según el orden alfabético tendríamos por ejemplo:
"HIJO"

El cualquier caso el número resultante puede ser demasiado pequeño lo que podría producir un texto cifrado que no sea seguro. para ello se suele aplicar un esquema de relleno (ejemplo PKCS#1v1.5, el cual está ya roto, o OAEP descrito en PKCS#1v2.0)

Tipos de cifrado según sus claves[editar]

Un sistema de cifrado se denomina:

  • simétrico cuando utiliza la misma clave para cifrar y descifrar. Los métodos más conocidos de este tipo de cifrado son el DES, el Triple DES y el AES.
  • asimétrico al usar claves diferentes: una pareja compuesta por una clave pública, que sirve para cifrar, y por una clave privada, que sirve para descifrar. El punto fundamental sobre el que se sostiene esta descomposición pública/privada es la imposibilidad práctica de deducir la clave privada a partir de la clave pública. A este tipo de cifrado también se le llama criptografía de clave pública o PKE (del inglés Public-Key Encryption). Los métodos más conocidos de este tipo de cifrado son el RSA y ElGamal.

La utilización de un sistema simétrico o asimétrico depende de las tareas a cumplir. La criptografía asimétrica presenta dos ventajas principales: suprime el problema de transmisión segura de la clave y permite la firma electrónica. No reemplaza sin embargo los sistemas simétricos, ya que los tiempos de cálculo son evidentemente más cortos con los sistemas simétricos que con los asimétricos.

Tipos de cifrado según sus algoritmos[editar]

Según la forma en la que operan los algoritmos de cifrado o descifrado, es posible distinguir varios tipos:[4]

  • Cifrado en flujo: En estos algoritmos el cifrado se realiza bit a bit. Están basados en la utilización de claves muy largas que son utilizadas tanto para cifrar como para descifrar. Estas claves pueden estar predeterminadas (libreta de un solo uso) o generarse usando un generador de claves pseudoaleatorias o RKG (acrónimo del inglés random key generator), que genera una secuencia binaria pseudoaleatoria a partir de una clave de inicialización K. A veces, en el cálculo de la clave pseudoaleatoria también interviene el mensaje cifrado hasta ese momento. Por otra parte, el cifrador propiamente dicho: habitualmente en este tipo de algoritmos hay que mantener en secreto tanto la clave como el cifrador.
  • Cifrado por bloques: En este tipo de algoritmos, el cifrado se realiza bloque a bloque. En primera instancia, se descompone el mensaje en bloques de la misma longitud. A continuación, cada bloque se va convirtiendo en un bloque del mensaje cifrado mediante una secuencia de operaciones. Ejemplos típicos de operaciones realizadas para conseguir cada mensaje cifrado son la sustitución y la permutación (cifrado por transposición) de elementos.
Este tipo de algoritmos pueden ser tanto de clave simétrica como de clave asimétrica. Sin embargo, en la bibliografía suele haber confusión y es frecuente ver casos en que se refieren sólo a algoritmos de clave simétrica.

La criptografía en el pasado[editar]

En la criptografía clásica los cifrados se basaban en la sustitución (cifrado por sustitución), en la permutación (cifrado por transposición) o en una combinación de ambas técnicas. Habitualmente, las operaciones se aplicaban a bloques aunque otras veces se aplicaban al texto plano completo. Había cifrados por transposición que cambiaban la posición de caracteres a lo largo de la cadena que tenía que cifrarse. Por ejemplo, un cifrado podía consistir en permutar e invertir el orden de los caracteres, dejando el primer carácter en la última posición, el último en la primera posición, el segundo en penúltimo lugar, etcétera.

Tipos de cifrado según sus propiedades[editar]

Muchas veces se agrupan los algoritmos de cifrado en función de sus propiedades o características. Algunos ejemplos:

Véase también[editar]

Referencias[editar]

  1. RAE, [1]
  2. Fundéu BBVA, encriptar es ocultar un mensaje con una clave, 3/7/2013.
  3. lainformacion.com, Fundéu BBVA en Colombia: "encriptar" es ocultar un mensaje con una clave, 3/7/2013
  4. José Pastor Franco, Miguel Ángel Sarasa López, José Luis Salazar Riaño (1998). Criptografía digital: fundamentos y aplicaciones. Zaragoza: Prenseas Universitarias de Zaragoza.

Enlaces externos[editar]