Hola Habr!
Todos escuchamos con frecuencia palabras y frases como "encriptación de datos", "cifrados secretos", "protección criptográfica", "encriptación", pero no todos entienden lo que se quiere decir exactamente. En esta publicación entenderemos qué es el cifrado y consideraremos los cifrados elementales para que incluso las personas alejadas de TI comprendan la esencia de este fenómeno.
En primer lugar, entenderemos la terminología.
El cifrado es una transformación del mensaje original que no permitirá que ninguna persona mala lea los datos si interceptan este mensaje. Esta transformación se realiza utilizando algoritmos matemáticos y lógicos especiales, algunos de los cuales consideraremos a continuación.
El mensaje original es, de hecho, lo que queremos encriptar. Un ejemplo clásico es el texto.
Un mensaje cifrado es un mensaje que ha pasado el proceso de cifrado.
Un cifrado es el algoritmo en sí mismo mediante el cual convertimos el mensaje.
Una clave es un componente en función del cual se puede realizar el cifrado o descifrado.
El alfabeto es una lista de todos los caracteres posibles en el mensaje original y cifrado. Incluyendo números, puntuación, espacios, minúsculas y mayúsculas por separado, etc.
Ahora que hablamos más o menos el mismo idioma, analizaremos cifras simples.
El cifrado más fácil. Su esencia es la mejora del alfabeto.
Por ejemplo, tenemos un alfabeto que es totalmente coherente con el alfabeto latino habitual.
abcdefghijklmnopqrstu vwxyz
Para implementar el cifrado Atbash, simplemente lo invertimos. "A" se convertirá en "Z", "B" se convertirá en "Y" y viceversa. En la salida obtenemos la siguiente imagen:

Y ahora escribimos el mensaje necesario en el alfabeto fuente y el alfabeto cifrado
Publicación original: Me encanta habr
Cifrado: r olev szyi
Aquí se agrega un parámetro más: una clave primitiva en forma de un número del 1 al 25 (para el alfabeto latino). En la práctica, la clave será de 4 a 10.
Nuevamente, para mayor claridad, tome el alfabeto latino.
abcdefghijklmnopqrstu vwxyz
Y ahora mueva cada letra a la derecha o izquierda por un número clave de valores.
Por ejemplo, la clave será 4 y el desplazamiento a la derecha.
Alfabeto original: abcdefghijklmnopqrstu vwxyz
Cifrado: wxyzabcdefghijklmnopq rstuv
Estamos tratando de escribir un mensaje:
hello world
Lo ciframos y obtenemos el siguiente texto incoherente:
dahhk sknhz
Cifrado Vernam (cifrado XOR)
El cifrado basado en binario más simple que tiene una fuerza criptográfica
absoluta . Sin el conocimiento de la clave, es imposible descifrarla (demostrado por Claude Shannon).
El alfabeto original sigue siendo el mismo latín.
El mensaje se divide en caracteres separados y cada carácter se presenta en forma binaria.
Los clásicos de la criptografía ofrecen un
código bodo de cinco dígitos para cada letra. Intentaremos cambiar este cifrado para codificar a 8 bits / carácter usando el ejemplo de una tabla ASCII. Representamos cada letra en forma de código binario.

Ahora recuerde el curso de electrónica y el elemento XOR, también conocido como XOR.
XOR recibe señales (0 o 1 cada una), realiza una operación lógica en ellas y proporciona una señal basada en los valores de entrada.
Si todas las señales son iguales entre sí (0-0 o 1-1 o 0-0-0, etc.), entonces obtenemos 0 en la salida.
Si las señales no son iguales (0-1 o 1-0 o 1-0-0, etc.), entonces la salida es 1.
Ahora, para cifrar el mensaje, ingresaremos el texto mismo para el cifrado y una clave de la misma longitud. Traducimos cada letra a su código binario y ejecutamos la
clave XOR del mensaje de fórmula
Por ejemplo:
Post: LONDRES
clave: SISTEMA
Los traducimos a código binario y ejecutamos XOR:
01001100 01001111 01001110 01000100 01001111 01001110 01010011 01011001 01010011 01010100 01000101 01001101 _______________________________________________________ 00011111 00010110 00011101 00010000 00001010 00000011
En este ejemplo particular, en lugar de los caracteres resultantes, veremos solo un lugar vacío, porque todos los caracteres están en los primeros 32 caracteres de servicio. Sin embargo, si traducimos el resultado en números, obtenemos la siguiente imagen:
31 22 29 16 10 3.
En apariencia, un conjunto de números completamente incoherente, pero sabemos algo.
El principio de cifrado es casi el mismo que el cifrado de César. Solo en este caso cambiamos el alfabeto no por un cierto número de posiciones, sino por una palabra de código.
Por ejemplo, tome el alfabeto cirílico para un cambio.
Se nos ocurrirá una palabra clave. Por ejemplo, Lukomorye. Elimina todos los caracteres que se repiten. En la salida tenemos la palabra "Lukomrier".
Ahora ingresamos esta palabra al comienzo del alfabeto y dejamos los caracteres restantes sin cambios.
Y ahora registraremos cualquier mensaje y lo encriptaremos.
" "
Tenemos las siguientes tonterías ilegibles:
" "
El cifrado clásico de Playfer supone una matriz de 5x5, llena de caracteres del alfabeto latino (i y j están escritos en una celda), una palabra clave y una mayor manipulación de los mismos.
Deje que la palabra clave sea "HOLA".
Primero, actuamos como con el cifrado anterior, es decir eliminar las repeticiones y escribir la palabra al comienzo del alfabeto.

Ahora toma cualquier mensaje. Por ejemplo, "AMO HABR Y GITHUB".
Lo dividimos en bigrams, es decir en pares de caracteres, sin incluir espacios.
IL OV EH AB RA ND GI TH UB.
Si el mensaje era de un número impar de caracteres, o si había dos caracteres idénticos en el bigram (LL, por ejemplo), entonces el símbolo X se reemplaza por el carácter faltante o repetido.
El cifrado se realiza de acuerdo con varias reglas simples:
1) Si los caracteres digram están en la matriz en la misma línea, los desplazamos a la derecha en una posición. Si el símbolo fue el último de una fila, se convierte en el primero.
Por ejemplo, EH se convierte en LE.

2) Si los caracteres digram están en la misma columna, entonces se desplazan una posición hacia abajo. Si el personaje estaba en la parte inferior de la columna, entonces toma el valor de la parte superior.
Por ejemplo, si tuviéramos un bigram LX, se convertiría en DL.
3) Si los caracteres no están en ninguna fila o columna, entonces construimos un rectángulo, donde nuestros caracteres son los bordes de la diagonal. Y cambiar las esquinas.
Por ejemplo, el bigram RA.


De acuerdo con estas reglas, encriptamos todo el mensaje.
IL OV EH AB RA ND GI TH UB. KO HY LE HG EU MF BP QO QG
Si elimina los espacios, obtenemos el siguiente mensaje cifrado:
KOHYLEHGEUMFBPQOQG
Felicidades Después de leer este artículo, comprende al menos aproximadamente qué es el cifrado y sabe cómo usar algunos cifrados primitivos, y puede comenzar a estudiar algunos ejemplos más complejos de cifrados, de los que hablaremos más adelante.
Gracias por su atencion