Edwin Fabricio Rivera - 3073018 - Actividad 6.1
Edwin Fabricio Rivera - 3073018 - Actividad 6.1
Edwin Fabricio Rivera - 3073018 - Actividad 6.1
INFORMACIÓN
Actividad 6.1
3073018
28/Junio/2021
Actividad 6.1
1··Averigua qué es una escítala y explica en qué consistia. Consigue una imagen y referencias web.
R// Una escítala (griego: skytálē) es un sistema de criptografía utilizado por los éforos espartanos para el
envío de mensajes secretos. Está formada por dos varas de grosor variable (pero ambas de grosor
similar) y una tira de cuero o papiro, a las que ambas se puede denominar escítala.
El sistema consistía en dos varas del mismo grosor que se entregaban a los participantes de la
comunicación. Para enviar un mensaje se enrollaba una cinta de forma espiral a uno de los bastones y se
escribía el mensaje longitudinalmente, de forma que en cada vuelta de cinta apareciese una letra de
cada vez. Una vez escrito el mensaje, se desenrollaba la cinta y se enviaba al receptor, que sólo tenía que
enrollarla a la vara gemela para leer el mensaje original.
.
Para ver en la práctica como funcionaba la escítala imaginemos que tras enrollar la tira escribimos un
mensaje formado por 3 filas de 9 caracteres de longitud. Al desenrollarla obtenemos una tira con 27
letras. La primera letra de la tira es la primera letra de la primera linea, la segunda letra de la tira es la
primera letra de la segunda linea. Así hasta la tercera letra. La letra 4 de la tira es la segunda de la
primera fila y continuamos hasta el final. En general la j-ésima letra de la i-ésima fila ocupará el lugar
3(j−1)+i
Veamos ahora un ejemplo de criptograma creado utilizando una escítala como la comentada
anteriormente. Como es costumbre en criptografía, el texto al que no se le ha aplicado la criptografía se
llama texto claro (otros autores lo llaman texto plano puesto que en inglés es plaintext) y se escribe en
minúsculas. El texto cifrado lo escribiremos en mayúsculas. También es costumbre en criptografía no
escribir los espacios en blanco, ni los signos de puntuación ni de acentuación.
Texto llano: ejemplodelmetododelescitalo
e j e m p l o d e
l m e t o d o d e
l e s c i t a l o
Texto cifrado: ELLJMEEESMTCPOILDTOOADDLEEO
Para cifrar utilizando este método, si no poseemos la madera en cuestión, podemos seguir los siguientes
pasos:
Se dibuja una cuadrícula rectangular.
Se escribe el texto en horizontal, empezando por la izquierda.
El texto cifrado se obtiene leyendo en vertical lo que hemos escrito.
El mensaje cifrado depende de las dimensiones de la cuadrícula.
En términos modernos decimos que este cifrado es de transposición, pues a cada letra del texto cifrado
le corresponde la misma letra del texto claro. Lo único que hemos hecho es "desordenarlas" siguiendo
un patrón matemático que previamente mencionamos.
El criptoanálisis de este método es muy simple. Partimos de la primera letra y vamos tomando letras
dando saltos de dos letras. Si obtenemos un mensaje con sentido, resultará que la escítala tenía
únicamente dos líneas. Si dando saltos de dos letras no conseguimos nada, pasamos a dar saltos de tres
letras. Y continuaríamos hasta averiguar cuantas líneas tenía el mensaje. Luego continuamos con la letra
número 2 y finalmente desencriptamos el mensaje.
https://es.wikipedia.org/wiki/Esc%C3%ADtala
https://joseluistabaracarbajo.gitbooks.io/criptografia-clasica/content/Cripto03.html
2··Investigalos orígenes del cifrado César.En qué consiste y qué vulnerabilidades presenta. Crea un
mensaje cifrado utilizando este método y entrégaselo a un compañero para que Lo descifre.
R// Un cifrado César es una de las técnicas de cifrado más simples y conocidas.
Lleva el nombre de Julio César, es uno de los tipos de cifrados más antiguos y se basa en el cifrado
monoalfabético más simple. Se considera un método débil de criptografía, ya que es fácil decodificar el
mensaje debido a sus técnicas de seguridad mínimas.
Por la misma razón, un cifrado César a menudo se incorpora solo en partes de otros esquemas de cifrado
complejos.
En criptografía, un cifrado César se clasifica como un cifrado por sustitución en el que el alfabeto en el
texto plano se desplaza por un número fijo en el alfabeto.
Las ventajas de usar un cifrado César incluyen:
Uno de los métodos más fáciles de usar en criptografía y puede proporcionar una seguridad mínima a la
información.
Uso de solo una tecla breve en todo el proceso
Uno de los mejores métodos para usar si el sistema no puede usar ninguna técnica de codificación
complicada
Requiere pocos recursos informáticos
Las desventajas de usar un cifrado César incluyen:
Uso de estructura simple
Solo puede proporcionar seguridad mínima a la información
La frecuencia del patrón de letras proporciona una gran pista para descifrar el mensaje completo.
Origen e historia
Algunos tipos de cifrado César online
ROT5
ROT13
ROT47
César 4
César 9
¿Cómo descifrar el cifrado César?
Otros métodos de encriptación por sustitución
Cifrado de Vigenere
Cifrado de Vernam
Aplicación del cifrado del César en Java
¿Sigue siendo efectivo este sistema de encriptación?
Entradas relacionadas
Origen e historia
El gobernante romano Julio César (100 a. C. – 44 a. C.) utilizó un cifrado muy simple para la
comunicación secreta. Sustituyó cada letra del alfabeto con una letra tres posiciones más adelante. Más
tarde, cualquier cifrado que utilizara este concepto de «desplazamiento» para la creación de un alfabeto
cifrado, se denominó cifrado César.
En el siglo XIX, la sección de anuncios personales en los periódicos a veces se usaba para intercambiar
mensajes encriptados usando esquemas de cifrado simples. Kahn (1967) describe casos de amantes que
participan en comunicaciones secretas cifradas utilizando el cifrado César en The Times.
Incluso ya en 1915, el cifrado César estaba en uso: el ejército ruso lo empleó como reemplazo de cifrados
más complicados que habían resultado demasiado difíciles de dominar por sus tropas; Los criptoanalistas
alemanes y austriacos tuvieron pocas dificultades para descifrar sus mensajes.
De todos los cifrados de tipo de sustitución, este cifrado de César es el más simple de resolver, ya que
solo hay 25 combinaciones posibles.
A menudo, este tipo de cifrado se implementa en un dispositivo de rueda. Un disco o rueda tiene el
alfabeto impreso y luego se monta un disco o rueda más pequeño y móvil con el mismo alfabeto impreso
formando una rueda interior. La rueda interior se puede girar para que cualquier letra de una rueda se
pueda alinear con cualquier letra de la otra rueda.
Por ejemplo, si la rueda interna gira para que la letra M se coloque debajo de la letra A en la rueda
externa, el cifrado César tendrá un desplazamiento de 12. Para cifrar la letra P, ubícala en la rueda
externa y luego escribe hacia abajo la letra correspondiente de la rueda interior, que en este caso es B.
Lo mismo se puede lograr colocando alfabetos en dos pedazos de papel y deslizándolos hacia adelante y
hacia atrás para crear un desplazamiento.
Algunos tipos de cifrado César online
Existe varios tipos de cifrado César que vamos a ver a continuación:
ROT5
Los algoritmos ROT son simples cifras de desplazamiento. No están diseñados para proporcionar
seguridad criptográfica, sino para proporcionar un medio fácil para ocultar fragmentos de texto, como
mensajes publicados en un foro en línea.
Por ejemplo, deseas publicar la solución de un rompecabezas. Con respecto a los lectores que desean
resolver el rompecabezas por su cuenta, debes revelar la solución solo codificada por ROT. Por eso, se
garantiza que aquellos lectores que hayan elegido (accidentalmente) leer tu mensaje no encontrarán la
solución.
Los cuatro algoritmos ROT ROT5, ROT13, ROT18 y ROT47 varían en los caracteres que se pueden
codificar / decodificar:
ROT5 cubre los números 0-9.
ROT13
Es un esquema simple de encriptación de sustitución de letras. Funciona reemplazando las letras inglesas
actuales en un mensaje con aquellas que están 13 posiciones adelante en el alfabeto. Por ejemplo, la
letra a se reemplaza por n , b por o , c por p , etc. Los números y la puntuación no están codificados.
Puedes encontrar publicaciones de grupos de noticias codificadas por rot-13. A veces se usa para ocultar
material ofensivo de la vista accidental. A menos que elijas decodificarlo, el mensaje solo aparecerá
como un montón de galimatías (como » GBB ZNAL FRPERGF «).
La codificación Rot-13 también se puede utilizar para otros fines. Los chistes y las discusiones que
revelan el final de una película a veces se codifican para que no se pueda leer por accidente. Una ventaja
importante de ROT13 es que es autoinverso, por lo que se puede usar el mismo código para codificar y
decodificar.
ROT47
El ROT47 (cifrado César por 47 caracteres) es un cifrado simple de sustitución de caracteres que
reemplaza un carácter dentro del rango ASCII con el carácter 47 después de él (rotación) en la tabla
ASCII. Es un algoritmo invertible, es decir, la aplicación del mismo algoritmo a la entrada dos veces
obtendrá el texto de origen.
ROT47 es un derivado de ROT13. Introduce letras y símbolos mixtos, por lo tanto, el texto codificado
parece más obvio que el texto ha sido cifrado.
El lenguaje de programación moderno puede implementar fácilmente el ROT47 de muchas maneras, por
ejemplo, usando una tabla de búsqueda.
César 4
El cifrado César 4 consiste en algo tan sencillo como sustituir un carácter por el carácter situado cuatro
posiciones después en el alfabeto.
Este cifrado es muy poco seguro, pues basta con probar a cambiar cada letra por la situada cuatro
posiciones antes para descifrar el texto.
César 9
Este tipo de cifrado sigue las mismas reglas del cifrado César y se sustituye cada letra por la que se
encuentra nueve posiciones más adelante en el alfabeto.
¿Cómo descifrar el cifrado César?
El código César, aunque razonablemente efectivo en su apogeo romano, es ahora uno de los códigos
criptográficos más fáciles de descifrar. Romper un cifrado César generalmente sigue uno de tres
escenarios dependiendo de la cantidad de conocimiento que tenga el criptoanalista atacante:
Sabe que el cifrado es un cifrado César.
Sabe que el cifrado es un cifrado de sustitución, pero no un cifrado César.
Desconoce por completo el tipo de cifrado al que se enfrentan.
En todos los escenarios propuestos, suponiendo que el cifrado se base en un cambio numérico simple, el
código se puede descifrar fácilmente usando un ataque de fuerza bruta (probando todos los cambios
posibles y determinando cuál funciona). Si consideramos un cifrado César con clave, las cosas se vuelven
considerablemente más difíciles, aunque aún relativamente fáciles de descifrar. En este caso, hay dos
métodos principales para descifrar el código:
Un método es crear una lista de palabras que podrían ser la posible frase clave e intentar un ataque de
fuerza bruta.
Otro método es emplear análisis de frecuencia. Este es el método estándar para romper cualquier
cifrado de sustitución. Las letras más comunes en el alfabeto inglés son E y T, por lo que probablemente
estén representadas por las letras más comunes en el cifrado.
Otros métodos de encriptación por sustitución
En un cifrado de sustitución, cualquier carácter de texto sin formato del conjunto fijo de caracteres dado
se sustituye por algún otro carácter del mismo conjunto, dependiendo de una clave. Por ejemplo, con un
cambio de 1, A sería reemplazado por B, B se convertiría en C, y así sucesivamente.
Aparte del cifrado César, existen otros métodos de encriptación por sustitución que vamos a analizar.
Cifrado de Vigenere
Vigenere es un método para cifrar texto alfabético. Utiliza una forma simple de sustitución polialfabética.
Un cifrado polialfabético es cualquier cifrado basado en la sustitución, utilizando alfabetos de sustitución
múltiple. El cifrado del texto original se realiza utilizando el cuadrado de Vigenère o la tabla de Vigenère .
La tabla consiste en los alfabetos escritos 26 veces en diferentes filas, cada alfabeto desplazado
cíclicamente a la izquierda en comparación con el alfabeto anterior, correspondiente a los 26 posibles
Cifrados César.
En diferentes puntos del proceso de encriptación, el cifrado usa un alfabeto diferente de una de las filas.
El alfabeto utilizado en cada punto depende de una palabra clave repetitiva.
El descifrado se realiza yendo a la fila de la tabla correspondiente a la clave, encontrando la posición de
la letra del texto cifrado en esta fila y luego usando la etiqueta de la columna como texto sin formato.
Cifrado de Vernam
El cifrado de Vernam es un método para encriptar texto alfabético. Es simplemente un tipo de cifrado de
sustitución. En este mecanismo asignamos un número a cada carácter del Texto sin formato, como (a =
0, b = 1, c = 2,… z = 25).
En el algoritmo de cifrado de Vernam, tomamos una clave para cifrar el texto sin formato cuya longitud
debe ser igual a la longitud del texto sin formato.
Algoritmo de cifrado:
Asigna un número a cada carácter del texto plano y la clave según el orden alfabético.
Agrega tanto el número (número de caracteres de texto plano correspondiente como número de
caracteres clave).
Resta el número de 26 si el número agregado es mayor que 26, si no lo es, déjalo.
Para el descifrado, aplica el proceso inverso de cifrado.
3..·Cifra el mensaje “Bienveinidos a la criptologia” mediante la técinica de sustitución.. usando la
siguieinte tabla de equivalencias:
“KQNVEIVIMXSJTJLAQYCXTXOQJ”
4 .. Si temenos seis usuarios que quieren comunicarse por medio de cifrado simetrico, ¿cuantas claves
seran necesanias? ¿cuantas se necessitarian si se aumentara en un usuaria más?
5·· Investiga que otros algoritmos de clave simetrica existen ademas de los expuestos en este
apartado y explica brevemente en que consisten.
R// La criptografía simétrica es la técnica criptográfica más antigua que existe, pero sigue ofreciendo un
alto nivel de seguridad. Se basa en la utilización de una única clave secreta que se encargará de cifrar y
descifrar la información, ya sea información en tránsito con protocolos como TLS, o información en un
dispositivo de almacenamiento extraíble. La criptografía simétrica fue el primer método empleado para
el cifrado de la información, se basa en que se utilizará la misma contraseña tanto para el cifrado como
el descifrado, por tanto, es fundamental que todos los usuarios que quieran cifrar o descifrar el mensaje,
tengan esta clave secreta, de lo contrario, no podrán hacerlo. Gracias a la criptografía simétrica,
podremos realizar comunicaciones o almacenar archivos de forma segura.
El cifrado mediante una clave simétrica, significa que, como mínimo, dos usuarios deben poseer la clave
secreta. Utilizando esta clave se cifrará y descifrarán todos los mensajes transmitidos a través del canal
inseguro, como Internet, de ahí que necesitemos el cifrado de los datos para mantener la
confidencialidad. Cualquier usuario que quiera acceder al mensaje cifrado, deberán tener esta
contraseña de descifrado, de lo contrario será ilegible.
El método para cifrar los datos se basa en que el emisor va a cifrar el mensaje con su clave privada, lo
enviará a través del canal inseguro, y el destinatario lo tendrá que descifrar con la misma contraseña o
clave privada que ha usado el emisor.
Hay varios puntos que debe cumplir un algoritmo de clave simétrica para que su uso sea seguro:
Una vez que se cifra el mensaje, no se podrá obtener la clave de cifrado ni tampoco el mensaje en
claro por ningún método.
Si conocemos el mensaje en claro y el cifrado, se debe gastar más tiempo y más dinero en obtener la
clave para acceder al mensaje en claro, que el posible valor que pueda tener la información que se
consiga robar.
Los ataques por fuerza bruta son el enemigo real de los algoritmos de criptografía simétrica, hay que
tener en cuenta que estos algoritmos son públicos y que la fuerza de los mismos depende directamente
de lo complejo que sea el algoritmo internamente, y también de la longitud de la clave empleada para
evitar estos ataques.
Lo más importante en la criptografía simétrica es proteger la clave privada o contraseña. El principal
problema que se presenta es la distribución de esta clave privada o contraseña a todos los usuarios,
tanto emisores como receptores de la información, para cifrar y descifrar la información del mensaje. Es
fundamental que todos los usuarios del sistema protejan la clave privada o contraseña lo mejor posible,
porque si cae en malas manos, todo el sistema se vería comprometido, teniendo que generar una nueva
clave y volviendo a redistribuir la clave privada a los diferentes participantes.
Una de las diferencias que tenemos entre la criptografía simétrica y asimétrica, es que en la simétrica
todos los usuarios tienen la misma clave de cifrado/descifrado, si tenemos más de un canal de
comunicación, tendremos tantas claves privadas como canales de comunicación parelelos. Sin embargo,
en los asimétricos cada usuario tendrá una pareja de claves (pública y privada) para todos los canales de
comunicación, no importa el número de canales seguros a mantener, solamente deberemos proteger la
clave privada.
La ventaja de los algoritmos de criptografía simétrica es que son rápidos, muy rápidos, además, en los
últimos años se han ido incorporando a los procesadores de ordenadores, servidores, routers y otra serie
de dispositivos la aceleración de cifrado por hardware, de esta forma, podremos transferir datos vía VPN
de forma realmente rápida. La velocidad también depende del algoritmo de cifrado simétrico a utilizar,
por ejemplo, AES y ChaCha20 son dos de los más rápidos y seguros que tenemos hoy en día, pero influye
mucho el hardware de los equipos.
Ahora os vamos a hablar en detalle de dos algoritmos simétricos que se utilizan continuamente en la
actualidad, ya sea en las conexiones HTTPS con TLS 1.2 y TLS 1.3, en las redes privadas virtuales con
IPsec, OpenVPN o WireGuard, y también en otros ámbitos donde se utilice cifrado de datos, como en
VeraCrypt.
AES (Advanced Encryption Standard)
El algoritmo simétrico AES fue el encargado de sustituir al DES, y es el empleado actualmente en todos
los canales y protocolos seguros como TLS, FTPES, redes privadas virtuales y mucho más. El cifrado de
AES puede ser empleado tanto en software como en hardware, AES es un algoritmo de cifrado por
bloques, el tamaño fijo del bloque es de 128 bits. La longitud de la clave se puede elegir, y tenemos
disponible 128, 192 y 256 bits, siendo la longitud de 128 bits el estándar, pero también es muy utilizado
los 256 bits.
Un aspecto muy importante, es que AES se encarga de generar una matriz de 4×4, y posteriormente se le
aplican una serie de rondas de cifrado. Para una clave de 128 bits se aplican 10 rondas de cifrado, para
una clave de 192 bits se aplican 12 rondas, y para una clave de 256 bits las rondas aplicadas son 14.
Desde los inicios, muchos criptógrafos dudan de su seguridad, y es que se han registrado ataques a un
número de rondas cercanas a la ronda final, concretamente se han podido descifrar 7 rondas para claves
de 128 bits, 8 rondas para claves de 192 bits y 9 rondas para claves de 256 bits.
El modo de cifrado es la forma en que se gestionan los bloques del mensaje cifrado con AES, existen
diferentes tipos, y cada uno de ellos funciona de una forma diferente. Por ejemplo, existe el AES-CBC,
AES-CFB y AES-OFB, os vamos a explicar qué es exactamente esto que aparece en las librerías
criptográficas como OpenSSL y LibreSSL.
CBC (Cipher-block chaining): este modo de cifrado ha sido ampliamente utilizado junto con una función
hash para comprobar la autenticidad de los datos, y hoy en día se sigue utilizando. Este modo de cifrado
consiste en que a cada bloque de texto plano, se le aplica la operación XOR con el bloque de cifrado
anterior. Cada bloque cifrado, depende de lo anterior procesado hasta ese punto. Para realizar esta
opción XOR con el primer bloque de texto, se hace uso de un vector de inicialización IV. Este modo de
cifrado se realiza de forma secuencial, no permite ser tratado de forma paralela para aumentar el
rendimiento en el cifrado/descifrado de los datos.
OFB (Output feedback): en este modo se utiliza la clave secreta para crear un bloque pseudoaleatorio al
que se le aplica la operación XOR con el texto en claro para crear el texto cifrado. En este caso también
se necesita un vector de inicialización que debe ser único para cada mensaje cifrado. Si no se utiliza un IV
diferente, se compromete la seguridad del sistema. Tampoco se puede parelizar.
CFB (Cipher feedback): se hace igual que en OFB, pero para producir el keystream cifra el último bloque
de cifrado, en lugar del último bloque del keystream como hace OFB. El cifrado no puede ser
paralelizado, sin embargo, el descifrado sí.
GCM (Galois/Counter Mode): este modo de cifrado es uno de los mejores en cuanto a seguridad y
velocidad, GCM permite el procesamiento en paralelo y es compatible con procesadores AES-NI para
acelerar el rendimiento en cifrado/descifrado de los datos. Este modo de cifrado es AEAD, además de
cifrar los datos, también es capaz de autenticarlos y comprobar la integridad de los datos, para
asegurarnos que no se ha modificado. GCM puede aceptar también vectores de inicialización aleatorios.
Tal y como habéis visto, AES es actualmente uno de los algoritmos de cifrado simétrico más importantes
y utilizados en todo el mundo, sin embargo, el modo de cifrado más recomendable es AES-GCM ya que
incorpora AEAD.
ChaCha20
El algoritmo ChaCha20 es un algoritmo de cifrado simétrico que soporta claves de 128 y 256 bits y de alta
velocidad, a diferencia de AES que es un cifrado por bloques, ChaCha20 es un cifrado de flujo. Tiene
características similares a su predecesor Salsa20 pero con una función primitiva de 12 o 20 rondas
distintas. Su código fue publicado, estandarizado por la IETF en la RFC 7539 y en implementaciones de
software, es mucho más eficiente y rápido que AES, por lo que rápidamente se ha hecho un hueco
dentro de los algoritmos más usados en la actualidad.
Para saber por qué se ha hecho tan famoso, vamos a meter a Google de por medio para que se pueda
entender todo mucho más rápido. Las conexiones HTPPS están enfocadas a ofrecer la máxima seguridad
en las webs que visitamos todos los días, fue el siguiente paso del protocolo HTTP el cual no tenía
protección alguna. El cifrado, sin embargo, varía de un navegador a otro. Hasta hace algunos años,
Chrome para Android ha estado utilizando AES-GCM como algoritmo de cifrado simétrico, sin embargo,
Google lleva trabajando desde hace muchos años en cifrados más actuales, seguros y rápidos.
El salto de popularidad se produce cuando, tras su puesta en marcha en la versión de escritorio de
Chrome, llega a Android el nuevo ChaCha20 para la encriptación y Poly1305 para la autenticación. Un
trabajo titánico que se traduce en un algoritmo simétrico que ofrece más seguridad, y que es inmune a
varios tipos de ataques. Sin embargo, lo más destacable es que consigue un rendimiento tres veces
superior a protocolos algo más antiguos como puede ser AES, de esta manera, también se aprovechan
mejor las capacidades de la CPU y se hace notar una reducción del 16% en el ancho de banda utilizado, lo
que hace que se pueda aprovechar aún más la conexión.
ChaCha20 se utiliza ampliamente en las conexiones HTTPS, en las conexiones SSH para administrar
servidores, e incluso el popular protocolo de VPN WireGuard utiliza única y exclusivamente ChaCha20
para el cifrado simétrico de los datos. Es muy posible que próximamente también veamos ChaCha20 en
las conexiones IPsec, mientras tanto, deberás usar AES-GCM siempre que sea posible.
Hasta aquí la explicación de la criptografía simétrica, hemos comentado los dos algoritmos que se usan
frecuentemente en la actualidad, hay muchos más que en el pasado fueron muy relevantes, sobre todo
para el desarrollo de los actuales, ya que las bases de los nuevos se asentaron sobre la experiencia de los
viejos, sus errores y sus ventajas. Algoritmos como el DES, 3DES, RC5 o IDEA allanaron el camino a los
nuevos para que hoy tengamos unos algoritmos de cifrado realmente fuertes y con capacidad para
aguantar ataques y proteger toda nuestra información de manos indeseadas y malintencionadas.
6·· ¿En que comsiste el cif rado de clave asimetrica? Cita algun ejemplos., ademas de las indícados. en el
texto , de algoritmos de cifrado de este tipa.
R//La criptografía de clave asimétrica también es conocida como clave pública, emplea dos llaves
diferentes en cada uno de los extremos de la comunicación para cifrarla y descifrarla. Cada usuario de la
comunicación tendrá una clave pública y otra privada. La clave privada tendrá que ser protegida y
guardada por el propio usuario, será secreta y no la deberá conocer absolutamente nadie ni tampoco
debe ser enviada a nadie. La clave pública será accesible por todos los usuarios del sistema que quieran
comunicarse.
La fortaleza del sistema por el cual es seguro este tipo de algoritmo asimétrico, es que está basado en
funciones matemáticas las cuales son fáciles de resolver en un sentido, pero que su resolución en
sentido contrario es extremadamente complicada, a menos que se conozca la clave. Las claves públicas y
privadas se generan simultáneamente y están ligadas la una a la otra. La relación entre ambas debe ser
muy compleja, para que resulte muy difícil que obtengamos una clave a partir de la otra, en este caso,
que obtengamos la clave privada puesto que la pública la conoce toda persona conectada al sistema.
Las parejas de claves tienen varias y muy importantes funciones, entre las que destacamos:
Cifrar la información.
Asegurar la integridad de los datos transmitidos.
Garantizar la autenticidad del emisor.
Cifrado con clave asimétrica
Si una persona con una pareja de claves cifra un mensaje con la llave pública del receptor, ese mensaje
sólo podrá ser descifrado con la llave privada asociada. Si encriptamos un mensaje con la clave privada,
no podremos desencriptarlo con la propia clave privada, deberemos usar la pública (en este caso no se
considera cifrado, sino que se comprueba la autenticidad del emisor, con ello comprobaremos que el
emisor es quien realmente dice ser).
La estructura matemática del funcionamiento del cifrado asimétrico es esta:
Mensaje + clave pública = Mensaje cifrado
Mensaje encriptado + clave privada = Mensaje descifrado
Mensaje + clave privada = Mensaje firmado
Mensaje firmado + clave pública = Autenticación
Como hemos comentado antes al hablar de la criptografía de clave simétrica, el cifrado simétrico aporta
confidencialidad (sólo podrá leer el mensaje el destinatario). La criptografía asimétrica proporciona otras
propiedades: autenticidad, integridad y no repudio. Para que un algoritmo sea considerado seguro debe
cumplir lo siguiente:
Si se conoce el texto cifrado, debe resultar muy difícil o prácticamente imposible extraer el texto en claro
y la clave privada por cualquier método.
Si se conoce el texto en claro y el cifrado, debe resultar más costoso obtener la clave privada que el texto
en claro.
Si los datos han sido cifrados con la clave pública, sólo debe existir una clave privada capaz de
descifrarlo, y viceversa.
La ventaja del cifrado asimétrico sobre el simétrico, radica en que la clave pública puede ser conocida
por todos los usuarios del sistema, sin embargo, no ocurre esto con la clave privada, y por parte del
cifrado simétrico deben conocer la misma clave los dos usuarios (y la clave debe hacerse llegar a cada
uno de los distintos usuarios por el canal de comunicación establecido).
Funcionamiento del sistema simétrico y asimétrico
El principal inconveniente que tiene este tipo de cifrado es la lentitud, el empleo de este tipo de claves
ralentiza el proceso de cifrado de la comunicación. La solución a esto es usar tanto el cifrado asimétrico
como el simétrico (como hacen protocolos como el IPSec o OpenVPN para las redes privadas virtuales, el
HTTPS para las conexiones web seguras, o en las conexiones SFTP/FTPES).
Esta combinación de cifrados sucede de la siguiente manera. Creamos la clave del algoritmo simétrico, la
ciframos con la clave pública del receptor, enviamos los datos cifrados por el canal de comunicación
inseguro, y a continuación, el receptor descifrará los datos mediante su llave privada. Con la clave del
algoritmo simétrico en los dos puntos, es cuando puede empezar la comunicación mediante el cifrado
simétrico, lo que hace que la comunicación sea mucho más rápida que si usáramos solo criptografía
asimétrica en toda la comunicación.
El ejemplo claro de donde se usa este tipo de método combinado son las VPN, como OpenVPN o IPsec,
en ellas, la clave de sesión que es conocida por los usuarios, se regenera cada cierto tiempo para
incrementar aún más la seguridad en la comunicación, sin que ello conlleve un retardo significativo en la
transferencia de los datos.
Desafío-Respuesta
Para aumentar la seguridad, este método comprueba que el emisor es realmente quien dice ser, para
ello se envía un texto al emisor y éste lo cifrará con su clave privada (lo que está haciendo realmente es
firmarlo), el emisor nos enviará el texto cifrado (firmado) y nosotros descifraremos la clave
(comprobaremos la firma) aprovechando que tenemos la clave pública del emisor, y por último,
compararemos que el mensaje obtenido sea el mismo que enviamos anteriormente.
Si algún usuario se hace pasar por el emisor real, no tendría la clave privada por lo que el «desafío» no
hubiera resultado satisfactorio y no se establecería la comunicación de los datos.
Firma digital
La firma digital permite al receptor de un mensaje que el origen es auténtico, también podremos
comprobar si el mensaje ha sido modificado. Falsificar una firma digital es casi imposible a no ser que
conozcan la clave privada del que firma (y ya hemos dicho anteriormente que la clave privada debe estar
guardada, y que no la debe saber nadie). Aquí están las dos fases para la realización de la firma digital:
Proceso de firma: el emisor cifra los datos con la clave privada y lo manda al receptor.
Verificar la firma: el receptor descifra los datos usando la clave pública del emisor y comprueba que la
información coincide con los datos originales (si coincide es que no se ha modificado).
En las firmas digitales se hace uso de las funciones hash como SHA2-256 y SHA2-512 ya que, como
hemos explicado anteriormente, el cifrado asimétrico es lento. El emisor de la comunicación aplicará la
función HASH al mensaje original para obtener con ello la huella digital. A continuación, se cifrará la
huella con la clave privada y se envía al destinatario por el canal inseguro para que la descifre. El
destinatario también aplicará la función hash a sus datos y comparará los resultados (la que ha obtenido
y la que ha recibido). Si el resultado de la comparación de estos datos es negativo, es decir, que hay
diferencias entre lo obtenido y lo recibido, la información ha sido alterada y los datos de la huella digital
habrán cambiado. Si el resultado es el mismo, se llevará a cabo la comunicación sin problemas.
Con todo esto hemos cumplido:
Autenticidad, el emisor es quien dice ser. La firma en origen y destino es la misma.
Integridad, el mensaje no ha sido modificado. Lo obtenido y lo recibido es igual.
No repudio, el emisor no puede negar haber enviado el mensaje al receptor. La firma digital no varía.
Si queremos introducir la confidencialidad a la comunicación, lo único que hay que hacer es que el
emisor cifre el mensaje original con la clave pública del receptor.
Algoritmos de cifrado de clave asimétrica
Ahora listaremos los dos principales algoritmos asimétricos que se utilizan en la actualidad y os
explicaremos el funcionamiento de los mismos.
Diffie-Hellman
No es un algoritmo asimétrico propiamente dicho, es un protocolo de establecimiento de claves, se usa
para generar una clave privada a ambos extremos de un canal de comunicación inseguro. Se emplea para
obtener la clave privada con la que posteriormente se cifrará la información junto con un algoritmo de
cifrado simétrico. El punto fuerte del Diffie-Hellman es que, su seguridad radica en la dificultad de
calcular el logaritmo discreto de números grandes (Diffie-Hellmann también permite el uso de curvas
elípticas).
El problema de este algoritmo es que no proporciona autenticación, no puede validar la identidad de los
usuarios, por tanto, si un tercer usuario se pone en medio de la comunicación, también se le facilitaría
las claves y, por tanto, podría establecer comunicaciones con el emisor y el receptor suplantando las
identidades. Para evitar esto existen varias soluciones que mitigan y solucionan el problema, como hacer
uso de certificados digitales.
RSA
El algoritmo asimétrico por excelencia, este algoritmo se basa en la pareja de claves, la pública y la
privada de las que ya hemos hablado con anterioridad. La seguridad de este algoritmo radica en el
problema de la factorización de números enteros muy grandes, y en el problema RSA, porque descifrar
por completo un texto cifrado con RSA no es posible actualmente, aunque sí un descifrado parcial.
Algunas características muy importantes de RSA es la longitud de clave, actualmente como mínimo se
debe utilizar una longitud de 2048 bits, aunque es recomendable que sea de 4096 bits o superior para
tener una mayor seguridad.
Ventajas:
Se resuelve el problema de la distribución de las llaves simétricas (cifrado simétrico).
Se puede emplear para ser utilizado en firmas digitales.
Desventajas:
La seguridad depende de la eficiencia de los ordenadores.
Es más lento que los algoritmos de clave simétrica.
La clave privada debe ser cifrada por algún algoritmo simétrico.
DSA
Este algoritmo es también puramente asimétrico, una desventaja de DSA es que quiere mucho más
tiempo de cómputo que RSA a igualdad de hardware. DSA se utiliza ampliamente como un algoritmo de
firma digital, es actualmente un estándar, pero DSA no se utiliza para cifrar datos, solamente como firma
digital. Este algoritmo se utiliza ampliamente en las conexiones SSH para comprobar la firma digital de
los clientes, además, existe una variante de DSA basada en curvas elípticas (ECDSA), y está disponible en
todas las librerías criptográficas actuales como OpenSSL, GnuTLS o LibreSSL. Otra característica de DSA es
la longitud de clave, la mínima longitud de clave es de 512 bits, aunque lo más habitual es usar 1024 bits.
Ahora conoces los dos tipos de criptografía y las propiedades de cada una, con ello sabrás dónde merece
la pena usar un tipo y dónde el otro. Con el tiempo estos métodos variarán o se actualizarán a unos más
seguros, ya que con el crecimiento del rendimiento de los ordenadores se consigue potenciar los ataque
a este tipo de método de seguridad, pero ahora mismo, los que están vigentes y siguen usándose por no
haber sido desbancados aún, son los que os acabamos de explicar.
7·· Busca en I nternet una web que permita cif rar online un texto usando el algoritmo MD5 [por ejemplo, si- oguiente:
http://www.cuwhois.com/ herramienta-seo-genera-md5i.php).Cifra el siguiente texto : "Buenas dias, soy un Alumno.
¿Cuál es el resultada de cifrar la cadena anterior?
R// c2e6e7ed803cfb144e5a69ed9cfca4aa
8• • Realiza un breve resumen con las caracteristicas mas significativas de Los algoritmos hash que se citan en el texto.
R// Los hash o funciones de resumen son algoritmos que consiguen crear a partir de una entrada (ya sea
un texto, una contraseña o un archivo, por ejemplo) una salida alfanumérica de longitud normalmente
fija que representa un resumen de toda la información que se le ha dado (es decir, a partir de los datos
de la entrada crea una cadena que solo puede volverse a crear con esos mismos datos).
Estas funciones no tienen el mismo propósito que la criptografía simétrica y asimétrica, tiene varios
cometidos, entre ellos está asegurar que no se ha modificado un archivo en una transmisión, hacer
ilegible una contraseña o firmar digitalmente un documento.
Características de los hash
En definitiva las funciones hash se encargan de representar de forma compacta un archivo o conjunto de
datos que normalmente es de mayor tamaño que el hash independientemente del propósito de su uso.
Este sistema de criptografía usa algoritmos que aseguran que con la respuesta (o hash) nunca se podrá
saber cuales han sido los datos insertados, lo que indica que es una función unidireccional. Sabiendo que
se puede generar cualquier resumen a partir de cualquier dato nos podemos preguntar si se podrían
repetir estos resúmenes (hash) y la respuesta es que teóricamente si, podría haber colisiones, ya que no
es fácil tener una función hash perfecta (que consiga que no se repita la respuesta), pero esto no supone
un problema, ya que si se consiguieran (con un buen algoritmo) dos hash iguales los contenidos serían
totalmente distintos.
Ejemplos y formas de uso
Las funciones hash son muy usadas, una de las utilidades que tiene es proteger la confidencialidad de
una contraseña, ya que podría estar en texto plano y ser accesible por cualquiera y aún así no poder ser
capaces de deducirla. En este caso, para saber si una contraseña que está guardada, por ejemplo, en una
base de datos es igual a la que hemos introducido no se descifra el hash (ya que debería de ser imposible
hacerlo) sino que se aplicará la misma función de resumen a la contraseña que especificamos y se
comparará el resultado con el que tenemos guardado (como se hace con las contraseñas de los
sistemas Linux).
Pongamos un ejemplo, la función hash MD5 es una de estas funciones de resumen y la usaremos para
resumir el siguiente texto:
Genbeta Dev
Y aplicaré la función de resumen con el comando especifico que tienen la mayoría de sistemas basados
en Linux (md5sum):
pedro@ubuntu:~$ md5sum
Genbeta Dev
b71dada304875838f0263e3ae50c2c49 -
Por lo que la última línea es la del hash, que podéis comprobar en un terminal, en una herramienta
online o con una aplicación con este fin, aunque se puede aplicar en muchos lenguajes de programación
que lo implementan (no solo esta función, sino también otros tipos como el SHA que puede admitir
distinta longitud).
Asegurar la integridad de la información
Otro uso que tiene esta función es la de garantizar la integridad de los datos y es algo que habréis visto
muchas veces, por ejemplo en algunas webs que proporcionan descargas de archivos grandes, por
ejemplos software, dando junto a su vez el resumen del archivo y la función usada.
Por poner un ejemplo en la página de descarga de Virtual Box podemos encontrar esta página con
todos los resúmenes de las descargas disponibles con los que podemos comprobar que el archivo se ha
descargado correctamente y que nadie ha modificado su contenido durante la transmisión.
Para poner en práctica este uso cogeré esta imagen de HTML5 y le aplicaré una función de resumen con
el algoritmo MD5.
Y el resultado de hacer el resumen es el siguiente, usando otra vez la función presente en sistemas Linux
(md5sum).
pedro@ubuntu:~$ md5sum HTML5.png
cc617bf6a1ec75373af6696873fccef1 HTML5.png
Este es el método para saber que un documento está integro tras su recepción, por eso se usa para
comprobar que un archivo se a descargado correctamente o para comprobar que datos como un
pequeño texto sigue siendo el mismo tras su emisión.
Firma digital
Firmar un documento no es algo novedoso, pero la firma digital si lo es un poco más y nos ayuda a
verificar la identidad del emisor de un mensaje (así nos podemos asegurar que nuestro jefe nos manda
un archivo concreto y no es el vecino que nos gasta una broma).
El método más simple de firma digital consiste en crear un hash de la información enviada y cifrarlo con
nuestra cave privada (de nuestro par de claves de la criptografía asimétrica) para que cualquiera con
nuestra clave pública pueda ver el hash real y verificar que el contenido del archivo es el que hemos
mandado nosotros.
Me voy a adelantar al próximo capítulo sobre criptografía y hablaré un poquito de GnuPG (GPG) que es
una herramienta de cifrado que nos permite firmar documentos, en este caso lo haré con una firma en
texto plano (es un sistema menos seguro pero veremos que es lo que hace).
Lo que voy a hacer es firmar la imagen que hemos usado antes (la de HTML5) con el siguiente comando
en una terminal de Linux (para otras plataformas hay otras soluciones muy similares o incluso idénticas):
pedro@ubuntu:~$ gpg --clearsign HTML5.png
Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Pedro Gutiérrez Puente (Clave pública) <info@xitrus.es>"
clave DSA de 3072 bits, ID 783F3E6D, creada el 2012-12-11
Automáticamente a partir del archivo HTML5.png nos genera el archivo HTML5.png.asc que si lo abrimos
con un visor de texto vemos el contenido de la imagen (un conjunto de caracteres sin sentido) y al final
del archivo el siguiente texto (que contiene el hash cifrado):
Este sistema es la unión de las ventajas de los dos anteriores, debemos de partir que el problema de
ambos sistemas criptográficos es que el simétrico es inseguro y el asimétrico es lento.
El proceso para usar un sistema criptográfico híbrido es el siguiente (para enviar un archivo):
Generar una clave pública y otra privada (en el receptor).
Cifrar un archivo de forma síncrona.
El receptor nos envía su clave pública.
Ciframos la clave que hemos usado para encriptar el archivo con la clave pública del receptor.
Enviamos el archivo cifrado (síncronamente) y la clave del archivo cifrada (asíncronamente y solo puede
ver el receptor).