Criptología, criptografía y criptoanálisis

Pasemos al conocimiento teórico que necesitará al escribir el proyecto final. Aprendamos más sobre la criptografía y sus partes constituyentes. Y al mismo tiempo, aprenderemos más sobre el cifrado que utilizará al escribir el proyecto final.

1. Criptología y sus partes constituyentes

La criptología es un campo del conocimiento que incluye:

  • Criptografía (la ciencia de los cifrados).

    La criptografía consiste en cifrar la información para protegerla del acceso no autorizado. Esta información puede ser texto, una imagen digital, una señal de audio, etc. El proceso de encriptación produce una versión encriptada de la información (datos), que se denomina texto cifrado o texto en código.

  • Criptoanálisis (métodos para descifrar estos cifrados).

    El criptoanálisis examina métodos para descifrar cifrados y cómo se pueden aplicar estos métodos. En otras palabras, el criptoanálisis realiza la tarea inversa, estudiando formas de convertir la información cifrada en texto sin formato.

2. Clave criptográfica

Una clave es una selección de datos que se utiliza para cifrar y descifrar información. La capacidad de descifrar correctamente la información depende de la clave que se utilice. Si se pierde una clave por algún motivo, será imposible descifrar los datos.

El tamaño de las claves criptográficas se mide en bits. Y esto significa que una clave criptográfica tiene una longitud . Se proporciona una buena potencia de cifrado con una longitud de 128 bits.

Tipos de claves criptográficas:

  1. Claves simétricas (claves secretas). Como era de esperar, tales claves se utilizan en lo que se conoce como algoritmos de clave simétrica. Su objetivo principal es realizar transformaciones criptográficas directas o inversas (cifrado/descifrado, verificación del código de autenticación del mensaje).

  2. Teclas asimétricas. Se utilizan en algoritmos de cifrado de clave asimétrica (por ejemplo, al verificar una firma digital electrónica).

Dado que trabajaremos con un algoritmo de cifrado de clave simétrica, no entraremos en demasiados detalles aquí.

3. Alfabeto de sustitución

Un alfabeto de sustitución es un conjunto completo de caracteres que se utiliza para codificar los caracteres de entrada.

4. Enfoques del criptoanálisis

Hay muchos enfoques y métodos de criptoanálisis diferentes, es decir, formas de descifrar cifrados.

Describiremos el más simple de ellos:

  1. La fuerza bruta (o búsqueda de fuerza bruta) es probar todas las claves posibles hasta encontrar la correcta. La ventaja de este método es su simplicidad. La desventaja es que no es adecuado para cifrados que involucran una gran cantidad de claves posibles.

  2. Criptoanálisis basado en datos estadísticos : en este enfoque, recopilamos estadísticas sobre la aparición de diferentes caracteres en el texto cifrado y luego desciframos en función de las estadísticas sobre la frecuencia de aparición de diferentes caracteres en el texto sin formato.

    Por ejemplo: sabemos que la frecuencia de la letra P en los textos en inglés es del 1,9%. Mientras analizamos el texto cifrado, buscamos un símbolo que ocurra con la misma frecuencia y luego concluimos que es la letra P.

    La desventaja de este enfoque es que depende del idioma, el autor y el estilo específicos del texto.

5. Cifrado César

Este es uno de los métodos de cifrado más simples y conocidos. Su nombre, por supuesto, proviene del emperador Cayo Julio César, quien usó este método para mantener correspondencia en secreto con los generales.

Un cifrado César es un cifrado de sustitución en el que cada carácter en el texto sin formato se reemplaza por un carácter que es un número constante de posiciones a su izquierda o derecha en el alfabeto.

Digamos que establecemos el cambio en 3. En este caso, A será reemplazada por D, B se convertirá en E, y así sucesivamente.

Esta es la cantidad mínima de teoría que necesitará para completar el proyecto final. ¡Pasemos a la descripción de la tarea!

Proyecto final del módulo de Sintaxis de Java. Escribamos un criptoanalizador

Su tarea es escribir un programa que funcione con cifrados César.

Deje que su alfabeto criptográfico consista en todas las letras del alfabeto inglés, así como los signos de puntuación (. , ”” : - ! ? ESPACIO). Si encuentra caracteres que no forman parte de nuestro alfabeto de sustitución, simplemente sáltelos.

Requisitos obligatorios

El programa debe tener 2 modos:

  1. Cifrado/descifrado. El programa debe cifrar y descifrar el texto utilizando una clave criptográfica dada.

    El programa debe recibir una ruta a un archivo de texto que contenga el texto fuente y crear un archivo que contenga el texto cifrado correspondiente.

  2. Criptoanálisis por ataque de fuerza bruta

    En este modo, el programa debe descifrar el texto cifrado contenido en un archivo de texto de entrada.

    Si el usuario selecciona la fuerza bruta, el programa debe enumerar de forma independiente las claves posibles, seleccionar la clave correcta y descifrar el texto.

    Piense en qué criterios debe utilizar el programa para identificar con éxito la clave correcta. Es posible que deba prestar atención a los espacios entre palabras o al uso correcto de los signos de puntuación.

Requisitos adicionales (opcionales)

1. Criptoanálisis por análisis estadístico

El usuario debe poder elegir uno de los dos métodos de criptoanálisis. Si el usuario selecciona el modo de análisis estadístico, solicite al usuario que cargue un archivo de texto adicional en texto sin formato, preferiblemente del mismo autor y en el mismo estilo. Según el contenido del segundo archivo, el programa debe recopilar estadísticas sobre la aparición de caracteres y luego intentar usar estas estadísticas para realizar un criptoanálisis del texto cifrado.

2. Interfaz de usuario

Haga cuadros de diálogo para la interacción con el usuario a su discreción. Si lo desea, puede utilizar los marcos gráficos Swing y JavaFX.

Cargue su solución terminada en un repositorio Git público.

El proyecto se revisará cuando el grupo lo revise.