Para el desarrollo de este laboratorio usé dos máquinas del laboratorio de redes móviles e inalámbricas. ICARO
gpg -gen-key * De que sirve el passphrase?
Permite tener seguridad adicional sobre la clave que hemos creado. De tal manera que para modificarla necesitamos utilizar el passphrase.
La fecha de vencimiento es necesaria para obligar al usuario a renovar las claves. Un posible uso sería evitar ataques que permitan deducir la clave en el tiempo (ataques de fuerza bruta). El hecho de que las claves expiren disminuye la efectividad de estos métodos.
``` Comando: gpg -gen-key
Salida: trgpg: /home/icaro/.gnupg/trustdb.gpg: trustdb created gpg: key 5D7B866D marked as ultimately trusted public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2014-06-10
pub 2048R/5D7B866D 2014-06-09 [expires: 2014-06-10]
Key fingerprint = F5B6 9E5F C4B4 9051 6653 0C15 5306 11E2 5D7B 866D
uid Fernando Crema (Maquina A) <fernando.crema@ciens.ucv.ve>
sub 2048R/F6C46CE0 2014-06-09 [expires: 2014-06-10]
```
Primero exportamos las claves públicas de las máquinas A y B
En Máquina A:
gpg output fernando_crema.gpg export fernando.crema@ciens.ucv.ve
En Máquina B:
gpg output wilmer_pereira.gpg export wilmer.pereira@ciens.ucv.ve Desde la Máquina A hacemos una conexión sftp para llevar la clave pública de A a la de B y obtener la de B y colocarla en A.
En Máquina A:
sftp icaro@190.169.74.237
sftp> put fernando_crema.gpg
sftp> get wilmer_pereira.gpg Ahora tenemos las claves públicas donde queremos. Necesitamos importarlas en cada máquina.
En Máquina A importamos la clave de B.
Comando:
gpg --import wilmer_pereira.gpg
Salida:
gpg: key BBAF3500: public key "Wilmer Pereira (Maquina B) <wilmer .pereira@ciens.ucv.ve>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
En Máquina B importamos la clave de A.
Comando:
gpg --import fernando_crema.gpg
Salida:
gpg: key 5D7B866D: public key "Fernando Crema (Maquina A) <fernando.crema@ciens.ucv.ve>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
En este momento ambas Máquinas tienen las claves públicas de cada una en el keyring de cada una.
¿Cómo es posible extraer la clave pública descomprimida y poder visualizarla en claro?
En Máquina A:
gpg --armor --export fernando.crema@ciens.ucv.ve
Si quisiéramos guardarlo en un archivo, hacemos:
gpg --armor --export fernando.crema@ciens.ucv.ve > archivo.key
Salida en Máquina A:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
mQENBFOV94sBCADHY7GidNATkYrwatycRQuuXQOGLKSVukiLdwetzXaY0klRxVql
BHYU2WcPB5LgrMRp4R+0vSRsnid3eWljfzwDVPAL/GH1ZxwGJllYPotR2VRMR6p9
5y69FShkcDNb1u9ClUbfvRorlADuI+zecnAxjtAYXbDlMVNxs0pSac60oPR6HlaG
5gNbt5K1XF+oX5z9UGg1XHCTrQkQPc55sHasecv1Sw2gDiHQSWrRwjXZXQ5uPIgg
DX+zb6mTzR/xreqRFT4Z5KkIomkIx/kuer0JZETBh0lFvLUOUbyelVpn7g6aYHO1
dv6+tpYbHMY2mXte4RSfrMClifUPZCoFvdK/ABEBAAG0OEZlcm5hbmRvIENyZW1h
IChNYXF1aW5hIEEpIDxmZXJuYW5kby5jcmVtYUBjaWVucy51Y3YudmU+iQE+BBMB
AgAoBQJTlfeLAhsDBQkAAVGABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBT
BhHiXXuGbfm7CACrdabttbhUH4qO09Gt6xPNaTrjTGAPk23DVPkUGmrB4FiqZ8TQ
/KOkQQp0wCsHjI3e7F2K9/pqffjcYwGjJIqeW7uC6tTiN0t1zeNWq6uaBOsxaqvC
V+mt/0aWuMHbvRJ5hbBPa5WAFuJarJj+Pv1O3JCu0KbPrD/wtAM6AS3lMwPGDmLx
RaVgU2RrsmXxeD3CaPsKxl9QycCXYqe4JbAiTxNVQBF6qdZC7Lw29OWbudacH9pT
4BD1d4LwRxM9eGY5CePFzb9f/Rm1+dZpuew+sZb5y8HjV3TDMdfCDFygfX966yy4
ce1UV3nAaxx8JHUjpa/E+Bz3i/oVU5cZ8uweuQENBFOV94sBCADecOtnMt9VGUW/
w4XooEaV9D0/SJBDtCSGTQxHU5f/cYNzut7sQmVk37tHY+lur9kh6rWntMlCspB7
Gaa4Q+dWIGQ5cj/0gxpACBIEJnyQtNlwSCo+Xii9Foi7X8T1b1px3WLwnti8+lun
5uQbXnApgBN9Rusd54yMbC3AHcUTiTz7QVeSAbwwLfD+izJu5/3wWcvTGIyu0p6R
cmnNPM/4tFwwIMnlSkawO8/MZZCfJp9MuZtjQzXlBv0GDoSFbIxa1Kl0J4y0d/gA
SRSCXgpt+Gg9OtWXe0DfIq/QOi+8mf0n1ZYnT62yqjz0AvDVTD2VEXp7omRi5/b1
bivCFetnABEBAAGJASUEGAECAA8FAlOV94sCGwwFCQABUYAACgkQUwYR4l17hm3v
Lgf/cSa/J23N5P5YUgF+SuzAhYMlsmvjq8MNCCEjekzbchxtH8zBTLY0gzmjmShe
7Fxr/51qn2zhhxkqiEEZlgWf7GQ5SYVXyJwvvEIKirppU0MyFmzANLy/P4YSVNsq
dyjl5HF6bDcKLg5lCzrtubsRtJ3U8ISxeqdnj4msQ2346IHZYQtasW2jnf5O8SK3
6/FhQWsQER9jCUCThcaxejLumCfRYzWUVNkCmhyqlriawTwas6yrKD90GOwVnYQo
JlsEf6n8LSjV5XBGdYahcgykWQE7yc2R5p/CouPkAQQzEFtLbQxgMiYKxR2lZCoR
MjUF+aJtDTAVYihHlDBioqPyNA==
=L3R5
-----END PGP PUBLIC KEY BLOCK-----Para ver el keyring privado
gpg --list-secret-keysPara ver el keyring público
gpg --list-keysComando para cifrar
En Máquina A:
touch prueba1.txt
gedit prueba1.txt & (se añade texto a prueba1.txt: Mensaje de prueba hacia Maquina B desde Maquina A)
gpg --output prueba.gpg --encrypt --recipient wilmer.pereira@ciens.ucv.ve prueba1.txt
Se cifra prueba1.txt con la clave pública de wilmer.pereira@ciens.ucv.ve (Máquina B) en prueba.gpg usando un algoritmo de clave pública.
Comando para Descifrar
En Máquina B
gpg --decrypt prueba.gpg
Cuando se decripta pide el passphrase de Máquina B al usar la privada de B.
You need a passphrase to unlock the secret key for
user: "Wilmer Pereira (Maquina B) <wilmer.pereira@ciens.ucv.ve>"
2048-bit RSA key, ID AB8CF5B6, created 2014-06-09 (main key ID BBAF3500)
gpg: encrypted with 2048-bit RSA key, ID AB8CF5B6, created 2014-06-09
"Wilmer Pereira (Maquina B) <wilmer.pereira@ciens.ucv.ve>"
Mensaje de prueba hacia Maquina B desde Maquina AEn máquina A para firmar: (Importante: sign comprime el archivo)
gpg --output prueba1.sig --sign prueba1.txt
Tenemos dos opciones para verificar la firma
Para verificar Y extraer (En Máquina B):
gpg --output prueba --decrypt prueba1.sigSolo para verificar:
gpg --verify doc.sigSe observan las claves públicas de los usuarios con las respectivas firmas que tiene asociada la misma de acuerdo a quiénes firmaron la clave. Esta experimentación se hizo con las dos máquinas.
Si quisiéramos firmar la clave de A en la Máquina B
gpg --edit-key fernando.crema@ciens.ucv.vePara la clave fernando.crema preguntamos el fingerprint de la misma, validamos con sign y verificamos son check.
fpr (Se debe preguntar el fingerprint)
sign (valido yo la clave)
check (verifico)Se usó el siguiente comando:
gpg --edit-key nombre_usuario
Resultando un conjunto de opciones para determinar el trust colocando el comando trust
Esto es:
``` Command> trust pub 1024D/8B927C8A expires: never trust: q/f sub 1024g/C19EA233 expires: never
Please decide how far you trust this user to correctly verify other users’ keys (by looking at passports, checking fingerprints from different sources…)?
1 = Don’t know 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully s = please show me more information m = back to the main menu ### Actividad Extra: Cifrado Simétrico gpg –output simetrico.gpg –symmetric prueba_simetrico.txt ```
En este caso, al cifrar simétrico te pide el Passphrase para usarla como clave privada de simetrico.gpg. Luego en la máquina B ingresas el Passphrase que ingresaste antes.