Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA

GRADO EN INGENIERÍA INFORMÁTICA

Seguridad de la Información

Trabajo individual 1: Grupo 2

Realizado por:

Enrique Ramı́rez Garcı́a

1
Índice
1. Introducción 3

2. Tarea 1: Openssl 3

3. Tarea 2: Cryptool2 7

4. Tarea 3: Camellia 11

2
1. Introducción
Este trabajo consiste en la realización de una serie de tareas relacionadas
con las técnicas de criptografı́a básica vistas en clase. En concreto, trataremos
los temas de cifrado, descifrado, firma y revisión de textos usando distintas
herramientas (Openssl y Cryptool 2) y algunos de los algoritmos vistos en
clase. También analizaremos con mayor profundidad el algoritmo Camellia,
del que describiremos su funcionamiento y su entorno de apliación.

2. Tarea 1: Openssl
En esta primera tarea, que dividiremos en varios apartados, se nos enco-
mienda usar openssl, herramienta que nos permite implementar los algorit-
mos criptográficos mediante lı́nea de comandos, para cifrar, descifrar, firmar
y verificar texto mediante estos algoritmos. En nuestro caso, se nos pide ha-
cer esto mediante AES, Camellia (ambos con tamaño de clave de 256 bits y
en modo CBC) y RSA (con tamaño de clave de 1024 bits). Por último, se
nos pide implementar la firma y la verificación del texto mediante las claves
generadas con RSA.
En primer lugar, ciframos el texto “Enrique Ramirez Garcia Grupo 2” me-
diante AES con las caracterı́sticas anteriormente mencionadas. Para ello,
seguimos los siguientes pasos:

1. Usamos “echo” con el texto que queremos usar de entrada, en este caso
el anteriormente mostrado.

2. A continuación usamos el comando “openssl enc” seguido del algoritmo


de encriptación que vamos a usar, en nuestro caso AES, seguido del
tamaño de la clave (256) y del modo (CBC).

3
3. Después, añadimos los comandos “-pnkdf2” [2] [1], el cual hace que use-
mos este algoritmo para generar claves (esto lo hacemos por sugerencia
del propio openssl, ya que nos avisa de que deberı́amos usarlo si no lo
hacemos), “-nosalt” para eliminar la aleatoriedad de “enc” en el texto,
y “-a -A”, con los que pasamos el texto codificado a formato base64
(-a) y quitamos la lı́nea que se genera cada 64 caracteres por esto (-A).

Tras ejecutar el comando, se nos pide una contraseña de encriptación, que


en nuestro caso, hemos especificado como pass. Tras verificarla, obtenemos
el resultado. El proceso de descifrado es análogo pero añadiendo el comando
“-d” para indicar que vamos a descifrar en vez de cifrar. Adjuntamos a con-
tinuación, una captura con los pasos comentados en la lı́nea de comandos y
los resultados.

Los pasos a seguir para el algoritmo camellia son exactamente iguales pero
sustituyendo aes por camellia.

Nuestro siguiente objetivo consiste en hacer el cifrado y descifrado anterior


mediante el algoritmo RSA. En este caso, necesitamos hacer uso de una clave
privada y una clave pública. Para ello haremos uso de los comandos “genrsa

4
1024” seguida del fichero que lo contendrá, en este caso, “priv1024.key”.

A partir de esta clave privada generamos la pública con “rsa -in priv.key
-pubout -out pub1024.pubkey” donde pasamos la clave privada creada an-
teriormente y recimos su correspondiente clave pública con el nombre que
le hemos asignado. Tras generar las claves ciframos el texto con el comando
1
Si bien es cierto que se nos dice que no debemos usar ficheros, para este caso se
nos hace necesario su uso, ya que siempre se nos pide que usemos un fichero de entrada.
Podriamos hacerlo con | pero ello deriva en complicaciones a la hora de reutilizar las claves.
Se adjuntan capturas de las claves pública y privada generadas (Figuras 2 y 3).

5
“echo Enrique Ramirez Garcia Grupo 2” seguido de “openssl rsautl -encrypt
-in -pubin -inkey publica.pubkey” donde pasamos el texto a cifrar con “echo”
y marcamos que vamos cifrar con “-encrypt”. Con “-pubin” indicamos que
vamos a usar la clave pública, ya que por defecto se usa la privada. Final-
mente, añadimos el comando “base64” para pasar el codigo a este formato,
ya que por defecto viene dando en binario, y no se muestra legible de esta
forma. Para desencriptar, hacemos lo mismo pero sustituyendo “-encript”
por “-decrypt” y quitando el comando “-pubin”. Ademas debemos ejecutarlo
en el siguiente orden:

1. Comando “echo” con la clave cifrada en base64

2. Comando “base64 -d”, en el que decimos que vamos a descifrar el texto


anterior de base64 a su formato anterior (binario en este caso).

3. Comando “rsautl -decrypt”

Vemos los resultados en la siguiente camptura.

Por último, vamos a cifrar y verificar el mismo mensaje con las claves gene-
radas en el paso anterior. Para firmar, utilizamos práticamente el mismo
comando que en el paso anterior, pero sustituyendo “-encrypt” por “-sign”
y quitando el comando “-pubin”. Para verificar, usamos los mismos coman-
do, con “-pubin” incluido, a excepción de “-encrypt”, que lo sustituimos por

6
“-verify”. Como en el anterior apartado, también debemos hacer uso del co-
mando “base64” para obtener un texto legible. Los resultados se muestran a
continuación.

3. Tarea 2: Cryptool2
Para esta tarea se nos piden realizar las mismas pruebas que en la an-
terior pero usando la herramienta Cryptool2 en vez de Openssl. Por tanto,
empezamos con el cifrado y descifrado en AES 256 modo CBC. En esta oca-
sión, la herramienta es mucho más gráfica que la lı́nea de comandos, por lo
que únicamente tenemos que escoger el cifrado AES, pasar el texto a cifrar,
escoger como tamaño de clave 256 bites, y como modo CBC. Usaremos la
clave que ha generado el programa automáticamente y el resto de opciones
en su modo por defecto, a excepción del conversor del texto de salida, que
lo hemos marcado como base64, para que sea similar al apartado anterior.
Adjuntamos una captura de esto.

7
Para desencriptar, solo debemos cambiar el texto a descifrar, en el que intro-
duciremos el texto que acabamos de obtener, el formato del texto de entrada y
de salida (intercambiar los del caso anterior) y la acción de AES de “encrypt”
a “decrypt”. Como vemos a continuación, obtenemos el texto original.

A continuación, hacemos lo mismo pero con el algoritmo Camellia, cifrando

8
en primer lugar el texto.

Después, realizamos el descifrado del texto obtenido anteriormente.

El siguiente paso es realizar el cifrado y descifrado con el algoritmo RSA. Para


ello tenemos dos opciones: Usar el cifrado y descifrado de manera indepen-
diente o usarlo de manera conjunto con la plantilla “cipher”. En nuestro caso,

9
hemos optado por la segunda opción. Solo tenemos que configurar el texto
de entrada a cifrar y, como queremos usar un tamaño de clave de 1024 bites
en RSA, configuramos dicho parámetro en el “key generator”. Con esto, ob-
tenemos los siguientes resultados.

Por último, para la firma y la verificación, como la firma es homóloga con


el descifrado y la verificación con el cifrado, únicamente cambiamos el orden
en el que aplicamos el cifrado y el descifrado, es decir, primero aplicamos
el descifrado y luego el cifrado. Como podemos ver, este es el resultado que
obtenemos.

10
4. Tarea 3: Camellia
En esta tarea, vamos a recopilar información sobre uno de los algoritmos
con los que hemos estado trabajado en tareas enteriores: Camellia. En resu-
midas cuentas, Camellia no es más que un algoritmo de cifrado sı́metrico en
bloque, es decir, un algoritmo que usa la misma clave para el cifrado y el des-
cifrado de un mensaje. Su funcionamiento se basa en un algoritmo de feistel,
por lo que es idéntico a otros algoritmos ya vistos como DES. Sin embargo,
Camellia es más seguro que DES, ya que este usa, como mı́nimo, claves de
128 bits pero puede llegar hasta 256, mientras que DES se queda en 64 bits,
lo que le hace vulnerable a ataques por fuerza bruta. Como curiosidad, el
nombre surgió de la planta Camelia japonica y fue desarrollado por Mitsu-
bishi y la corporacion nipona de teléfonos y telegrafos (NTT). Camellia ha
sido incorporado a distintos entornos a lo largo del tiempo: Mozilla Firefox,

11
FreeBSD, GnuPG o Veracrypt, además de en librerias para seguridad como
Crypto++, GnuTLS, mbedTLS o el usado en la tarea 1 Openssl [3]. Por ulti-
mo remarcar que ha sido certificado como estándar por organizaciones como
CRYPTREC, NESSIE, IETF, ISO/IEC, ITU-T o RSA Laboratories. [4]

12
Referencias
[1] https://unix.stackexchange.com/questions/507131/
openssl-1-1-1b-warning-using-iter-or-pbkdf2-would-be-better-while-decrypting

[2] https://en.wikipedia.org/wiki/PBKDF2

[3] https://en.wikipedia.org/wiki/Camellia_%28cipher%29#Adoption

[4] https://en.wikipedia.org/wiki/Camellia_%28cipher%29#
Standardization

13

You might also like