Muy buenas familia, el problema es que no comprendo muy bien el funcionamiento, o bien no lo hago bien.
Me explico, creo un certificado, y cifro un archivo, si quiero que lo lea otra persona que tengo que hacer cifrarlo con mi clave y pasarsela, o que el me pase su certificado, lo importo y lo cifro con su clave para que lo descifre él con su clave?? Gracias a ver si me pudieseis ayudar por que no entiendo eso...
Justo hace un par de días que escribí algo acerca de esto. Lo hice por cuestiones personales pero aprovecho esta oportunidad para compartirlo.
GENERAR CLAVES
Comando: gpg --gen-key
Una vez ejecutado deberemos completar una serie de pasos:
1. Seleccionar tipo de clave:
a. RSA y RSA (predeterminado)
b. DSA y Elgamal
c. DSA (sólo firmar)
d. RSA (sólo firmar)
2. Indicar el tamaño de la clave.
Las claves RSA pueden tener 1024 a 4096 bits de longitud. Por supuesto,mientas más bits de longitud,
mayor seguridad y lentitud. Por el contrario, menos bits significa mayor velocidad pero menor seguridad.
Por defecto, las claves que crea gpg son de 2048 bits de longitud.
3. Indicar fecha de expiración.
a. 0 -> la clave no expira
b. <n> -> la clave expira en n días
c. <n>w -> la clave expira en n semanas
d. <n>m -> la clave expira en n meses
e. <n>y -> la clave expira en n años
4. Proporcionar los siguientes datos:
- Nombre real
- Email
- Comentario
El ID del usuario se crea a partir de estos datos.
5. Proporcionar una contraseña.
6. Para último, para crear la clave es necesario generar muchos bytes aleatorios. Para esto, se nos pide
realizar ciertas actividades que aumenten la entropía del sistema: mover el mouse, escribir con el teclado,
(des)comprimir archivos, reproducir varios videos de forma simultánea y demás.
Ejemplo: para mi clave, completé cada uno de los pasos de la siguiente manera:
- Tipo de clave: RSA y RSA
- Tamaño de la clave: 2048
- Fecha de expiración: 0 (no expira nunca)
- Nombre: underc0der
- Email:
[email protected] - Comment: comentario
- Contraseña: underc0de
CONSULTAR CLAVES
Comando: gpg -k
Ejemplo: el resultado, para el ejemplo anterior, es el siguiente:
pub 2048R/EE1AF4A3 2015-09-23
uid underc0der (comentario) <
[email protected]>
sub 2048R/18957910 2015-09-23
EXPORTAR CLAVE PÚBLICA
Comando: gpg --output [archivo con clave pública] --export [pub ID]
Nota: Para saber el ID de la clave pública (pub ID) tenemos que ejecutar el comando anterior (gpg -k),
buscar la clave que queremos exportar e identificar la línea que comienza con pub. El código que sigue
a la barra (/) corresponde al ID de la clave pública.
Ejemplo: si queremos exportar la clave pública del ejemplo anterior, el comando sería:
gpg --output pkey.gpg --export EE1AF4A3
SUBIR CLAVE PÚBLICA A UN SERVIDOR DE CLAVES
Comando: gpg --send-keys --keyserver [servidor de claves] [Pub ID]
Ejemplo: gpg --send-keys --keyserver pgp.mit.edu EE1AF4A3
Con este comando estoy enviando (--send-keys) la clave pública que venimos utilizando como ejemplo (EE1AF4A3) al servidor
de claves (--keyserver) pgp.mit.edu
IMPORTAR CLAVE DESDE UN ARCHIVO
Comando: gpg --import [archivo con clave pública]
Ejemplo: gpg --import pkey.gpg
IMPORTAR CLAVE DESDE UN SERVIDOR DE CLAVES
Comando: gpg --keyserver [servidor de claves] --recv-keys [Pub ID]
Ejemplo:
gpg --keyserver pgp.mit.edu --recv-keys EE1AF4A3
Con este comando estoy recibiendo (--recv-keys) la clave pública que venimos utilizando como ejemplo (EE1AF4A3) del servidor
de claves (--keyserver) pgp.mit.edu
CIFRANDO (CON CLAVE PÚBLICA)
Comando: gpg --encrypt --recipient [Pub ID] [archivo a cifrar]
Ejemplo: gpg --encrypt --recipient EE1AF4A3 topsecret.txt
El resultado es un archivo cifrado llamado, en este caso, topsecret.txt.gpg
DESCIFRANDO (CON CLAVE PRIVADA)
Comando: gpg --decrypt [archivo a descifrar]
Ejemplo: gpg --decrypt topsecret.txt.gpg
GUÍA PASO A PASO
Explicación general: En este ejemplo, tenemos dos usuarios: A y B. El objetivo es que el usuario B le pueda enviar archivos seguros a A. Para eso, el usuario A crea un par de claves (pública y privada) y le envía la clave pública al usuario B. El usuario B cifra sus archivos con la clave pública y se los envía a A. El usuario A recibe el archivo cifrado y lo descifra con su clave privada.
Paso a paso: @ Usuario A 1. El usuario A crea su clave: gpg --gen-key
- Tipo de clave: RSA y RSA
- Tamaño de clave: 2048 bits
- Fecha de expiración: 0 (no expira nunca)
- Nombre: UsuarioA
- Email:
[email protected] - Comment:
- Contraseña: asdf1234
2. Luego, el usuario A consulta el ID de su clave pública: gpg -k
Output:
pub 2048R/6DFD6D54 2015-09-23
uid UsuarioA <
[email protected]>
sub 2048R/81E0AA5C 2015-09-23
Pub ID --> 6DFD6D54
3. A continuación, envía su clave pública a un servidor de claves: gpg --send-keys --keyserver pgp.mit.edu 6DFD6D54
@ Usuario B 4. El usuario B descarga la clave pública del usuario A: gpg --keyserver pgp.mit.edu --recv-keys 6DFD6D54
5. Luego, cifra el archivo que quiere enviar al usuario A: gpg --encrypt --recipient 6DFD6D54 topsecret.txt
6. A continuación, envía el archivo cifrado (topsecret.txt.gpg) al usuario A
@ Usuario A 7. El usuario A descarga el archivo cifrado (topsecret.txt.gpg)
8. Descifra el archivo con gpg: gpg --decrypt topsecret.txt.gpg
9. Por último, una vez descifrado el archivo, ya puede leer el contenido del mismo: less topsecret.txt
Lo mismo, pero a la inversa, debe realizarse para que el usuario A le pueda enviar un archivo cifrado al usuario B. De esta forma,
si dos usuarios desean intercambiar archivos de forma segura, primero deben enviarse las claves públicas para cifrar con
ellas los archivos que deseen proteger. Una vez cifrado un archivo, se envía para que el otro usuario la descifre con su
clave privada.
Bien, esto es todo. Queda para otra oportunidad (aunque es muy fácil también) el tema de las firmas.
Espero que les sirva.
Saludos!
WhiZ