Aprenderemos a manejar la aplicación GNUPG para generar el par de llaves para una comunicación Criptográfica Asimétrica, lo que necesitamos es tener instalado la aplicación GNUPG en nuestro Debían y listo, así:

# apt-get install gnupg

Después de que este instalado debemos de generar el par de llaves para nuestro usuario, para ello debemos de ejecutar el siguiente comando:


Generar par de llaves:

# gpg --gen-key

Con este comando generaremos el par de llaves que necesitamos para la comunicación, después de digitar este comando el nos pedirá el tipo de llave con la cual queremos trabajar para utilizarla en la comunicación, escogeremos la opción que necesitamos o que deseemos, en este caso utilizaremos la primera opción (DSA and Elgamal) esta nos permitirá Cifrar y Firmar, después nos pedirá el tamaño de las llaves, el nos dará varias opciones que están entre 1024 y 4096, en este caso dejaremos la por defecto que es 2048, recordemos que entre más tamaño tenga nuestra llave será más segura la encriptación, pero a mas tamaño se demorara más tiempo en cifrar y descifrar. Después de esto nos preguntara cuanto queremos que dure nuestro par de llaves, nosotros le diremos que 1 mes porque será una práctica, pero le diremos el tiempo que necesitemos (Aquí le diremos 1m para 1 mes, si es si queremos otro valor él nos da las opciones), el nos preguntara si el tiempo que ingresamos es correcto y le diremos que si (y), después de esto nos pedirá información personal en la cual debemos de darle nuestro nombre y apellido (Si queremos), después nuestra dirección de coreo electrónico, un comentario o descripción para el par de llaves y por ultimo la confirmación de estos datos que ingresamos (Nuestro nombre será Practica Sena, el correo electrónico practica@sena.edu.co y el comentario será Practica de llave Asimétrica), para confirmar debemos de ingresar la letra "V" y Enter. Después de la confirmación debemos de ingresar una contraseña o password para poder usar nuestro par de llaves, introducimos la llave y le debemos de confirmar, si las contraseñas coinciden empezara a generarse el par de llaves, dependiendo del tamaño de la llave tomara un tiempo en generarse, para ello recomendamos realizar otro proceso en el computador para que se genere el par de llaves (Ejemplo: Reproducción de un MP3, mover el mouse, navegar en internet, etc.).

Después de que se cree nuestro par de llaves las vamos a verificar, con la ayuda de los siguientes comandos:

# gpg --list-keys
# gpg -k
# gpg -K
# gpg --lis-keys ________

Significado de cada Comando:
  1. Nos muestra todas las llaves que hay en nuestro equipo
  2. Nos muestra todas las lleves Publica del equipo
  3. Nos muestra todas las llaves Privadas del equipo
  4. Nos muestra solo la llave de la persona que indicamos
En este ultimo comando podemos usarlo de muchas formas, buscar la la llave con: El nombre, el apellido, el comentario, el correo electrónico o el ID de la llave.


Eliminar llaves Públicas y Privadas:

Si en la creación de la llave nos equivocamos en algún parámetro podemos eliminar la llave, tanto el par de llaves como solo una de ellas, lo haremos con la ayuda de los siguientes comandos:

# gpg --delete-keys ________
# gpg --delete-secret-key ________
# gpg --delete-secret-and-public-key ________

Significado de cada Comando:
  1. Elimina la llave Publica
  2. Elimina la llave Privada
  3. Elimina el par de llaves
Estos comandos deben ir acompañados del nombre de la llave, el correo electrónico o el ID de la llave).


Exportar e Importar llaves:


Ahora aprenderemos a exportar nuestras llaves, la Publica que será la que debemos de publicar en algún servidor y simplemente al que utilizaran las demás personas que se comunicaran con nosotros, también exportaremos nuestra llave Privada, para tenerla como respaldo si ocurre algo en nuestro equipo o para importarla y usarla en otro equipo, para ello utilizaremos los siguientes comando:

# gpg -a -o Nombrellave.asc --export ______
# gpg -a -o Nombrellave.asc --export-secret-key ______

Significado de cada Comando:
  1. Exportar la llave Publica
  2. Exporte la llave Privada
En este comando la -a es del formato ASCII, el -o significa la salida (exportar) y le asignaremos un nombre a la llave (Ejemplo: LlavePublica.asc, LlavePrivada.ac, etc.). Debemos de colocar el correo electrónico que le corresponde a la llave o el ID de la llave. La llave quedara en la ruta donde estamos parados, con un simple editor de texto podemos ver el contenido de lo que es la llave.

Fuera del ID de la llave esta tiene un numero que la identifica, lo cual convierte a la llave en única, es llamado huella o Fingerprint, para ver el Fingerprint de determinada llave para verificar si si es la llave de la persona con la cual queremos tener una comunicación ejecutaremos el siguiente comando el cual nos dará unos números parecidos a la de una dirección MAC de una NIC, así:

# gpg --fingerprint ________

Significado de cada Comando:
  1. Nos dará el Fingerprint de la llave
Recordemos que debe de ir acompañado del Nombre de la llave, el coreo electrónico o el ID de la llave.

Ahora que ya sabemos verificar la llave, podemos importarla para poder cifrar y descifrar mensajes dentro de una comunicación (Comunicación de Persona 1 a Persona 2), para importar una llave tanto la Publica como la Privada, utilizaremos el mismo comando, así:

# gpg --import ________

Significado de cada Comando:
  1. Importar llave Pública o Privada
En este comando le debemos de dar el archivo de la llave o la ruta de acceso a ella (Ejemplo: /home/usuario/LlevePublica.asc), y listo, el reconocerá si es una llave Publica o una llave Privada, con los comandos pasados podemos listar las lleves del equipo.


Cifrar y Descifrar:

En este punto ya podemos cifrar y descifrar mensajes con las llaves publicas que importamos a simplemente con nuestro propio par de llaves, para ello utilizaremos el siguiente comando (Recordemos que debemos de tener ya creado un documento que será el que vamos a cifrar):

# gpg -e documento.txt

Significado de cada Comando:
  1. Cifrar datos
En este comando el nos pedirá el ID de Usuario, podemos colocar el ID o simplemente el correo del usuario a quien ira el mensaje (Podemos utilizar nuestra llave si es una práctica, como en nuestro caso), después el nos preguntara de nuevo que ingresemos el ID de Usuario, pero si no queremos cifrar de nuevo el mensaje le daremos Enter y listo. Después de este comando el nos creara un archivo con el nombre del documento original pero con una extensión .asc, este es el documento cifrado, lo descifraremos en el paso siguiente.

# gpg -d documento.txt.asc

Significado de cada Comando:
  1. Descifrar datos
Con este segundo comando podemos descifrar el mensaje que creamos anteriormente y el nos dará el resultado en la consola. El nos pedirá el password de la clave Privada con la cual se pude cifrar y descifrar (En nuestro caso utilizamos nuestro propio par de llaves).


Crear Anillo de Confianza:

Para crear el anillo de confianza de nuestras llaves, debemos de firmarlas y decirles que confiamos en ella (Esto es para generar confianza con las llaves que tenemos agregadas en nuestro equipo), debemos de utilizar los siguientes comandos:

# gpg --sign-key ________

Significado de cada Comando:
  1. Firmar la llave
En este comando debemos de colocar el ID de la llave o el correo electrónico de la llave, el nos preguntara si confiamos en la llave y le diremos que si (y/s) y por ultimo nos pedirá introducir el password de nuestra llave. Después de esto debemos de utilizar el siguiente comando:

# gpg --update-trustdb

Significado de cada Comando:
  1. Actualiza la base de datos de confianza
En este comando el nos preguntara cuanto confiamos en la llave o en las llaves que tenemos agregadas a nuestro equipo, el nos dará la descripción del Usuario y nosotros ingresaremos el nivel de confianza para la llave (En nuestro caso será la opción 4, en la que le decimos que confiamos completamente en la llave), si tenemos más de una llave el nos pedirá el nivel de confianza para cada una de ellas. Podemos mirar la lista de las llaves y de las firmas con la ayuda de los siguientes comandos:

# gpg --list-sigs
# gpg --list-sigs ________

Significado de cada Comando:
  1. Lista las llaves y las firmas de todas nuestras llaves
  2. Lista las llaves y las firmas de la llave especifica
En el segundo comando podemos darle el ID de la llave, el correo electrónico o el nombre y el nos traerá solo la llaves o las llaves que correspondan a dicho dato. Esto nos servirá para identificar las firmar que tiene dicha llave o nuestra propia firma.

Para firmar una llave en un servidor web debemos de ejecutar el siguiente comando (Esto lo haremos con el fin de que las llaves en las cuales confiamos estén firmadas con nuestra llave no solo local sino también en el servidor):

# gpg --keyserver Nombredelservidor --send-keys ________

Significado de cada Comando:
  1. Subir Firma a servidor dellaves
En este comando debe de ir el ID de la llave o el correo electrónico, no nos debe de salir ningún error (En nuestro caso el servidor de llaves es pgp.rediris.es). Si queremos actualizar las llaves desde el servidor de llaves, utilizaremos el siguiente comando:

# gpg --Keyserver Nombredelservidor --refresh-keys

Significado de cada Comando:
  1. Actualizar las llaves desde unServidor

Firma Digital:

En este punto aprenderemos a agregarle nuestra firma digital a un archivo, con el fin de que el usuario a quien va enviado el mensaje verifique que el destinatario si es quien dice ser. Para ello utilizaremos los siguientes comandos (Recordemos que debemos de tener listo el documento que vamos a enviar y firmar):

# gpg -a --sign documento.txt

Significado de cada Comando:
  1. Firma el documento pero borra el contenido
Este comando lo que hace es dejar solo la firma digital dentro, si tenemos texto dentro del documento la firma digital lo borrara, esto se hace solo cuando queremos enviar la firma digital aparte del mensaje, con el fin de no dañar el contenido de este. Si lo que queremos es que la firma digital este dentro del mensaje lo que debemos de hacer es utilizar el siguiente comando:

# gpg --clearsign documento.txt

Significado de cada Comando:
  1. Firma el documento y no borra el contenido
Debemos de tener en cuenta que este comando solo nos va a servir en un documento en texto plano (Texto claro o sin formato, Ejemplo: Word, Excel, etc.), de lo contrario se dañara la integridad del mensaje, en estos casos deberíamos de enviar la firma digital con el primer comando. Si tenemos un mensaje en texto plano podemos cifrarlo y enviar la firma digital en mismo archivo cifrado, con la ayuda de los comandos anteriores.

Si queremos verificar la firma digital de algun documento o simplemente la firma, lo que debemos de hacer es utilizar el siguiente comando:

# gpg --verify ________

Significado de cada Comando:
  1. Verificar la Firma Digital
Debemos de colocar la ruta del archivo que contiene la firma digital, y el nos arrogara el ID, el nombre y el correo de la persona que firmo el documento.


Certificado de Revocación:

El certificado de revocación nos sirve para eliminar una llave publica que tengamos en un Servidor de Llaves o de nuestro equipo, esto lo haremos si llegamos a perder una llave y no queremos que nadie pueda utilizarla de nuevo o si simplemente cambiamos de llave y no queremos que la utilicen de nuevo, para generar el certificado de revocación necesitamos ejecutar el siguiente comando:

# gpg -a -o Nombredelarchivo.asc --gen-revoke ________

Significado de cada Comando:
  1. Crea el Certificado de Revocación
En este comando debemos de colocar el ID de Usuario o el Correo electrónico de la llave, en el campo que dice (Nombredelarchivo.asc) será el nombre que nosotros queramos, será para identificar que es un certificado de revocación (Ejemplo: CertificadoRevocacion.asc), después de darle este comando el nos preguntara si queremos crear el certificado de revocación para la llave, le diremos que si (y/s), después nos preguntara la razón de la revocación y una descripción (La descripción es opcional, si no queremos nada de descripción daremos Enter y listo), después el nos sacara un resumen de lo que ingresamos y le diremos que si (y/s), por ultimo ingresaremos el password de la llave a la cual le estamos generando el certificado de revocación.

Después de tener el certificado, para que nuestra maquina tomes el certificado debemos de importarla, con la ayuda del siguiente comando (Después de importar el certificado de revocación para esta llave no la podremos utilizar de nuevo para cifrar o descifrar):

# gpg --import ________

Significado de cada Comando:
  1. Importar el Certificado de Revocación
En este campo debemos de colocar el certificado de revocación o la ruta de este (Ejemplo: CertificadoRevocacion.asc, /home/usuario/Desktop/CertificadoRevocacion.asc, etc.), después de darle este comando el nos sacara que el certificado de revocación a sido importado. Si lo que queremos es publicar el certificado de revocación en un servidor web, para que la llave no se vuelva a utilizar, debemos de realizar el siguiente comando (Puede variar dependiendo el servidor de llave):

# gpg --Keyserver NombredelServidor --send-keys ________

Significado de cada Comando:
  1. Subir Certificado al Servidor
En este comando debemos de colocar el ID de la llave o el Correo electrónico de la llave, no nos debe de salir ningún error, recordemos que si estamos trabajando con Proxy lo debemos de exportar para que se puede conectar con el servidor.



Criptografía... y otros conceptos
15:27 | Author: Bluder Garcia


Criptografía:

Es el arte o ciencia de cifrar o descifrar información utilizando técnicas que hagan posible el intercambio de mensajes de manera segura que solo puedan ser leídos por las personas a quienes va dirigido el mensaje. La finalidad de la Criptografía es el Garantizar el secreto de la comunicación entre dos entidades al mismo tiempo que garantiza que el contenido del mensaje si sea enviado por quien dice ser y que el contenido del mensaje no ha sido alterado.

Criptografía Simétrica (Criptografía Antigua o Clásica):
Es el método Criptográfico que usa una misma llave para cifrar y descifrar mensajes. Las dos partes que se comunican están de acuerdo de que clave van a usar. Ya podrá el remitente cifrar el mensaje con la misma llave con la que el destinatario la abrirá.

Criptografía Asimétrica (Criptografía Moderna):
Es el método Criptográfico que usa un par de claves para el envió de mensajes. Las dos claves pertenecen a la misma persona, una de las claves es Publica y se le puede entregar a cualquier persona, la otra llave es Privada y el propietario la debe de guardar de modo que nadie tenga acceso a ella. En la comunicación cualquier persona podrá enviarle correos al propietario de la llave Privada si tienen la llave Publica de el.

Criptografía de Curva Elíptica (CCE):
Es una variante de la Criptografía Asimétrica o de la llave Pública basada en las Matemáticas de las curvas elípticas. Sus autores argumentan que CCE puede ser más rápida y usar llaves mas cortas que los métodos antiguos (Con RSA) al tiempo que proporciona un nivel de seguridad equivalente.

Criptografía Hibrida:
Es el método Criptográfico que usa tanto un Cifrado Simétrico como un Asimétrico. Emplea el cifrado de clave Pública para compartir una clave para el cifrado Simétrico.


Criptoanálisis:

Es el estudio de los métodos para obtener el sentido de una información cifrada, sin acceso a la información secreta requerida para obtener este sentido normalmente.

Criptosistema RABIN:
Es una técnica Criptográfica Asimétrica cuya seguridad, al igual que RSA, se basa en la complejidad de la factorizacion. Publicado en Enero de 1979 por Michael O. Rabin.

Algoritmo:
Es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.

Algoritmo Criptográfico:
También llamado cifrador, es una función matemática usada en los procesos de encriptación y desencriptación. Trabajo en combinación con una llave (Un numero, palabra, frase, ó contraseña) para encriptar y descencriptar datos.

HASH:
Función o método para generar claves o llaves que representen de manera casi univoca a un documento, archivo, registro, etc. Resumir o identificar un dato a través de la probabilidad, utilizando una función HASH ó un algoritmo HASH. Un HASH es el resultado de dicha función o algoritmo.

Firma Digital (Fingerprint):
Es un método Criptográfico que asocia la identidad de una persona o de un equipo informático al mensaje o documento. En función del tipo de firmas, puede, además, asegurar la integridad del documento o mensaje.

SSH (Secure Shell – Intérprete de Comandos):
Es el nombre del Protocolo y el programa que lo implementa y sirve para acceder a maquinas remotas a través de la red. Permite por completo manejar la maquina mediante un interprete de comandos, y también puede redirigir el trafico si tenemos un servidor (En sistemas UNIX) corriendo.

MD5:
Es un Algoritmo de reducción Criptográfico de 128 bits ampliamente usado. MD5 fue diseñado por el Profesor Ronald Rivest en el año de 1991 como reemplazo del algoritmo MD4, después de que Hans Dobbertin descubriese si debilidad.

RSA:
Es el sistema Criptográfico con llave Publica RSA, es un algoritmo Asimétrico cifrador de bloques, que utiliza una llave Publica, la cual se distribuye (En forma autenticada preferentemente), y otra privada, la cual es guardada en secreto por su propietario.

DSA:
Es un estándar del gobierno de los estados unidos o FIPS para firmas digitales. Sirve para firmar más no para cifrar Información.

DES (Data Encryption Standard - Cifrado de Datos Estandar):
Es un algoritmo de cifrado, es decir, un método para cifrar información, escogido como FIPS en los Estados Unidos en 1976, y cuyo uso se ha propagado ampliamente por todo el mundo.

TripeDES:
En criptografía el Triple DES se llama al algoritmo que hace triple cifrado del DES. También es conocido como TDES o 3DES, fue desarrollado por IBM en 1978.
No llega a ser un cifrado múltiple, porque no son independientes todas las subclases. Este hecho se basa en que DES tiene la característica matemática de no ser un grupo, lo que implica que si se cifra el mismo bloque dos veces con dos claves diferentes se aumenta el tamaño efectivo de la clave.

Rijndael:
Es hoy en día el algoritmo de seguridad de mayor confianza por su grado de fortaleza, seguridad, velocidad y bajo consumo de recursos, y para quienes lo hicieron, dos estudiantes de la Katholieke Universiteit Leuven, este debe ser representar su mayor logro, ya que dicho algoritmo fue elegido para ser el Advanced Encryption Standard (AES) luego de pasar un largo proceso de selección y haber ganado el concurso debido para ser considerado como tal.