Metadatos | Valores |
---|---|
Módulos recomendados | Seguridad (2asir), Fundamentos Hardware (1asir) |
Curso | 201718 |
SSOO | OpenSUSE Leap 42.3 |
Duración estimada | 6 sesiones (2 semanas) |
Entrega por defecto | Informe tipo tutorial |
Futuro |
En prácticas anteriores habíamos comprobado que los ficheros, aunque se borren se pueden recuperar. Para hacer un borrado real hay que usar determinadas herramientas de borrado seguro. De esta forma nos aseguramos que nadie puede acceder a los ficheros que habíamos borrado.
Pero si queremos tener ficheros con datos que sólo nosotros (o nuestros amigo) podamos acceder, entonces tenemos que usar técnicas de ocultación.
En este taller vamos a practicar diversas formas de ocultar nuestros datos.
- Nos podemos ayudar en parejas. Los llamaremos alumno1(yo) y alumno2(el compañero).
- Cada alumno entregará un informe propio.
- Entregaremos un informe con capturas de pantalla.
Enlaces de interés:
- Información sobre la herramienta GPG
- Asegurarnos de tener instalado GPG (
zypper info gpg2
). - Trabajaremos con nuestro usuario habitual. No usar root.
- Crear un fichero de texto
/home/nombre-alumno/mensaje1-alumnoXX.txt
.- Escribir dentro el nombre del alumno, la fecha de hoy y un título de una película.
- Hacer una encriptación simétrica con GPG.
gpg -c mensaje1-alumnoXX.txt
- Enviar fichero encriptado al compañero (Alumno2) para que lo desencripte.
gpg -d mensaje1-alumnoXX.txt.gpg
Alumno1
- Genera un par de claves pública/privada.
gpg --gen-key
, genera un par de claves pública/privada.- Consultar las claves públicas con alguno de los siguientes comandos
gpg --list-public-keys
,gpg --list-keys
ogpg -k
. La líneapub 2048R/IDNUMBER
, muestra la información con el identificador de la clave pública. tree .gnupg
, Comprobaremos que se crea un directorio oculto, dentro del home de nuestro usuario con el nombre.gnugp
. Ahí es donde se guarda la información de claves de GPG para nuestro usuario.
- Exporta la clave pública para pasarla al compañero.
gpg --output alumnoXX.pub.gpg --export PUBLIC_KEY_IDNUMBER
- El valor PUBLIC_KEY_IDNUMBER lo obtenemos al consultar la salida del comando anterior (gpg -k).
Alumno2
- Crea un fichero de texto
/home/nombre-alumno/mensaje2-alumnoXX.txt
.- Escribir dentro el nombre del alumno, la fecha de hoy y una frase/mensaje.
- Importa la clave pública del compañero (Alumno1).
gpg --import alumnoXX.pub.gpg
- Hace una encriptación asimétrica con GPG con la clave pública recibida.
gpg --list-public-keys
, para ver las claves públicas que tenemos.gpg --encrypt --recipient PUBLIC_KEY_IDNUMBER mensaje2-alumnoXX.txt
- Envía el fichero a Alumno1 para que lo desencripte.
Alumno1
- Desencriptar el fichero
gpg -d mensaje2-alumnoXX.txt.gpg
.
Se entiende que podemos desencriptar el fichero porque ha sido encriptado con nuestra clave pública por parte del compañero que nos envía el archivo.
Otros comandos de interés:
gpg --export -a “Nombre de Usuario"
, muestra la clave pública para el "Nombre de Usuario" en la línea de comandos.gpg --export-secret-key -a "Nombre de Usuario" > private.key
, Esto creará un archivo llamado private.key con la representación ASCII de la clave privada para "Nombre de Usuario".gpg --import public.key
, Importar una clave pública.gpg --allow-secret-key-import --import private.key
, Importar una clave privada.gpg --delete-key "Nombre de Usuario"
, Esto elimina la clave pública de tu anillo de claves.
Enlace de interés:
Hacer lo siguiente:
- Crear documento
firma-alumnoXX.txt
.- Escribir dentro el nombre del alumno, la fecha de hoy y un grupo de música.
- Vamos a firmar digitalmente el documento en modo ASCII.
gpg --clearsign firma-alumnoXX.txt
- Consultar el fichero que se ha generado con la firma
firma-alumnoXX.txt.asc
- Comprobar que la firma es correcta.
gpg --verify firma-alumnoXX.txt.asc
- Modificar el documento
firma-alumnoXX.txt.asc
. - Comprobar que ahora el fichero tiene la firma incorrecta.
Enlaces de interés:
Hacemos lo siguiente:
- Consultar enlace sobre estenografía de "Andar por casa (zip y cat)".
- Crear un fichero de texto con un mensaje oculto (
secreto-alumnoXX.txt
).- Escribir dentro el nombre del alumno, la fecha de hoy y un refrán o frase famosa.
- Crear un fichero zip con el mensaje oculto.
- Descargar una
imagen1-alumnoXX.png
que nos guste. - Incrustar el fichero zip dentro de la
imagen1-alumnoXX.png
, obteniendo un ficheroimagen2-alumnoXX.png
. - Pasar el fichero
imagen2-alumnoXX.png
al compañero. - Verificar el formato de las imágenes, bien usando el comando
file
o capturando vista de la misma. - El compañero debe aplicar el proceso necesario para extraer el mensaje oculto dentro de la
imagen2-alumnoXX.png
.
Enlace de interés:
En lugar de usar una partición, es posible crear un fichero encriptado, que a su vez puede contener directorios y ficheros manteniendo los datos de forma confidencial. La ventaja de usar un contenedor encriptado sobre encriptar particiones es que se pueden añadir sin tener que reparticionar el disco. Se montan en un dispositivo Loop y se comportan como si fueran particiones normales.
Estos ficheros contenedores se pueden crear usando la ventana de particionamiento de Yast.
- Por seguridad, vamos a hacer una instantánea de la MV antes de empezar con este apartado.
- Con el usuario nombre-alumno, crear el directorio
/home/nombre-alumno/directorioXX.d
. Lo usaremos para montar el contenedor más adelante. - Ir a
Yast -> Particionador
. - Elegir
Crypt Files › Add Crypt File
.
- Especificamos la ruta al fichero contenedor y su tamaño.
- Crear un contenedor encriptado en el fichero
/home/nombre-alumno/contenedorXX
. - Crear dispositivo bucle: Yes
- Tamaño 50 MB.
- Crear un contenedor encriptado en el fichero
- Activar el check box para crear el fichero.
- Especificar el tipo de sistema de fichero.
- Especificar el punto de montaje (directorio creado anteriormente)
- Asegurarse de que el dispositivo encriptado está marcado.
- Siguiente.
- Escribir el password para el contenedor.
- Reiniciar la MV para que active los cambios que hemos realizado.
- Escribir el password del contenedor para poder activarlo.
df -hT | grep contenedor
, comprobamos que hay un dispositivo montado en la ruta aldirectorioXX.d
.- Poner archivos dentro del contenedor.
- Reiniciar la MV.
- Comprobar a acceder a los ficheros del contenedor cuando se pone la contraseña correcta y cuando no.
Curiosidad: ¿Qué ocurre si iniciamos la MV con un CDLive como Knoppix e intentamos acceder a los datos...?
- Configurar MV sin EFI para poder inciar Knoppix.
mount /home/nombre-alumno/contenedorXX /home/nombre-alumno/directorioXX.d
gpg --export -a "user name" > public.key
, exportar la clave ṕublica.gpg --export-secret-key -a "nombre del usuario" > private.key
, exportar la clave privada.
Enlaces de interés:
- https://www.gnupg.org/gph/es/manual/x75.html
- https://elbauldelprogramador.com/chuleta-de-comandos-para-gpg/#exportar-una-clave-p%C3%BAblica-dentro-del-archivo-public-key
- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Step_by_Step_Guide/s1-gnupg-export.html
Para poder comunicarse con otros, el usuario debe intercambiar las claves públicas. Para obtener una lista de las claves en el fichero («anillo») de claves públicas, se puede usar la opción de la línea de órdenes --list-keys.
javier:~$ gpg --list-keys
/home/javier/.gnupg/pubring.gpg
--------------------------------
pub 1024D/D58711B7 1999-09-24 Javier (Paramo S.L.) <[email protected]>
sub 1024g/92F6C9E3 1999-09-24
Para poder enviar una clave pública a un interlocutor, antes hay que exportarla. Para ello se usará la opción de la línea de órdenes --export. Es necesario un argumento adicional para poder identificar la clave pública que se va a exportar. Hay que usar el identificador de clave o cualquier parte del identificador de usuario para identificar la clave que se desea exportar.
javier:~$ gpg --output javi.gpg --export [email protected]
La clave se exporta en formato binario, y esto puede no ser conveniente cuando se envía la clave por correo electrónico o se publica en una página web. Por tanto, GnuPG ofrece una opción de la línea de órdenes --armor[1] que fuerza que la salida de la orden sea generada en formato armadura-ASCII, parecido a los documentos codificados con uuencode. Por regla general, cualquier salida de una orden de GnuPG, v.g.. claves, documentos cifrados y firmas, pueden ir en formato armadura-ASCII añadiendo a la orden la opción --armor.
javier:~$ gpg --armor --output javi.asc --export [email protected]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v0.9.8 (GNU/Linux)
Comment: For info see http://www.gnupg.org
[...]
-----END PGP PUBLIC KEY BLOCK-----
Se puede añadir una clave pública al anillo de claves públicas mediante la opción --import.
javier:~$ gpg --import arancha.gpg
gpg: key B63E132C: public key imported
gpg: Total number processed: 1
gpg: imported: 1
javier:~$ gpg --list-keys
/home/javier/.gnupg/pubring.gpg
--------------------------------
pub 1024D/D58711B7 1999-09-24 Javier (Paramo S.L.) <[email protected]>
sub 1024g/92F6C9E3 1999-09-24
pub 1024D/B63E132C 1999-09-24 Aranzazu (A.G.deZ.) <[email protected]>
sub 1024g/581A915F 1999-09-24
Una vez que la clave haya sido importada, es necesario validarla. GnuPG usa un potente y flexible modelo de confianza que no requiere que el usuario dé validez personalmente a cada clave que importe. Sin embargo, algunas claves pueden necesitar que el usuario les dé validez de forma personal. Una clave se valida verificando la huella digital de la clave, y firmando dicha clave para certificar su validez. La huella digital se puede ver con la opción de la línea de órdenes --fingerprint, pero para certificar la clave hay que editarla.
javier:~$ gpg --edit-key [email protected]
pub 1024D/B63E132C created: 1999-09-24 expires: never trust: -/q
sub 1024g/581A915F created: 1999-09-24 expires: never
(1) Aranzazu (A.G.deZ.) <[email protected]>
Command> fpr
pub 1024D/B63E132C 1999-09-24 Aranzazu (A.G.deZ.) <[email protected]>
Fingerprint: 4203 82E2 448C BD30 A36A 9644 0612 8A0F B63E 132C
La huella digital de una clave se verifica con el propietario de la clave. Esto puede hacerse en persona o por teléfono, o por medio de otras maneras, siempre y cuando el usuario pueda garantizar que la persona con la que se está comunicando sea el auténtico propietario de la clave. Si la huella digital que se obtiene por medio del propietario es la misma que la que se obtiene de la clave, entonces se puede estar seguro de que se está en posesión de una copia correcta de la clave.
Después de comprobar la huella digital ya se puede firmar la clave con el fin de validarla. Debido a que la verificación es un punto débil en criptografía de clave pública, es aconsejable ser cuidadoso en extremo y siempre comprobar la huella digital de una clave con la que nos dé el propietario antes de firmar dicha clave.
Command> sign
pub 1024D/B63E132C created: 1999-09-24 expires: never trust: -/q
Fingerprint: 4203 82E2 448C BD30 A36A 9644 0612 8A0F B63E 132C
Aranzazu (A.G.deZ.) <[email protected]>
Are you really sure that you want to sign this key
with your key: "Javier (Paramo S.L.) <[email protected]>"
Really sign? y
You need a passphrase to unlock the secret key for
user: "Javier (Paramo S.L.) <[email protected]>"
1024-bit DSA key, ID D58711B7, created 1999-09-24
Enter passphrase:
Una vez firmada, el usuario puede comprobar la clave para obtener un listado de las firmas que lleva y para ver la firma que le acaba de añadir. Cada identificador de usuario tendrá una o más autofirmas, así como una firma por cada usuario que haya validado la clave en cuestión.
Command> check
uid Aranzazu (A.G.deZ.) <[email protected]>
sig! B63E132C 1999-09-24 [self-signature]
sig! D58711B7 1999-09-24 Javier (Paramo S.L.) <[email protected]>
Command> quit