Está en la página 1de 32

No cabe duda de que los ltimos tiempos estn marcados por un nivel de

paranoia adicional en cuanto a la vigilancia, la seguridad y privacidad de


nuestra informacin. Ah estn la NSA, Snowdeny toda una pltora de fallos
de seguridad en importantes libreras, aplicaciones y dispositivos que
(intencionados o no), nos recuerdan que siempre deberamos de poner un poco
de cuidado adicional cuando de lo que se trata es de crear aplicaciones
seguras, y ms an si estas estn circunscritas al mbito web.
Precisamente para ayudarnos en esas tareas tenemos a nuestra disposicin la
capacidad de cifrar la informacin, aplicar firmas digitales, o bien generar
huellas nicas para un conjunto dado de datos mediante una amplia variedad
de algoritmos y sistemas criptogrficos. Y si te interesa el tema, he de
recomendarte
un
par
de
libros
que,
en
mi
opinin,
son
esenciales: "Cryptography Engineering: Design Principles and Practical
Applications" (Niels Ferguson, Niels, Schneier, Bruce and Kohno, Tadayoshi
y "Applied Cryptography: Protocols, Algorithms, and Source Code in
C" (Schneier, Bruce).
Hash y RSA fcil
Ahora bien, como en otras tantas cosas, el enfoque propuesto por Xojo es el
de facilitarnos al mximo y a un punto realmente transparente todas las
operaciones que, por otra parte, podran resultar un tanto farragosas o requerir
de unos conocimientos elevados. (Recuerda que la filosofa de Xojo es la de
poner las herramientas de programacin al alcance de cualquier usuario, al
tiempo que los desarrolladores avanzados encuentren tambin herramientas y
caractersticas potentes que les permita crear todo tipo de aplicaciones.)
As, a partir de la versin Xojo 2013r4.1 (diciembre de 2013) encontramos en
el lenguaje un completo conjunto de funciones criptogrficas basadas en la
librera Crypto++ 5.6.2 donde se exponen para su uso en aplicaciones
multiplataforma (WIndows, OS X, Linux y Web) los algoritmos de Hash o
huellas nicas correspondientes a MD5 y SHA en sus variantes SHA1, SHA256
y SHA512, diseadas por la NSA por cierto.
En cuanto a funciones criptogrficas encontramos a nuestra disposicin el
popular sistema criptogrfico RSA, con las capacidades de generacin del par
de claves publica/privada precisadas para el cifrado y firma de informacin, as
como en las operaciones opuestas de conversin a texto claro y verificacin de
datos firmados; adems de las funciones que permiten realizar precisamente
todas estas tareas: cifrado, descifrado, firma, verificacin de firma, y tambin
la capacidad de verificar una clave. De hecho, siempre deberamos de verificar
la validez de una clave pblica antes de su uso en el cifrado de los datos que
queramos enviar al destinatario propietario de la misma, por ejemplo.

Si bien lo anterior es el plato fuerte en cuanto a las funciones disponibles bajo


el mdulo Crypto, tambin encontraremos la funcin HMAC que permite crear
un cdigo de autenticacin de mensaje o, dicho de otro modo, una funcin
Hash con esteroides en las que se utilizar el sistema de Hash que le
indiquemos en combinacin con una clave de nuestra cosecha.
Precisamente para generar esa clave adicional de la funcin HMAC (o 'salt'),
Xojo proporciona la funcin GenerateRandomBytes y cuya finalidad no puede
ser ms descriptiva. De hecho, el nico parmetro de entrada no es otro sino
un entero mediante el cual indicaremos el tamao de salida, mientras que el
producto ser lo que en Xojo se denomina un MemoryBlock y que no es ms
que un buffer de memoria mediante el que podemos trabajar con los datos en
bruto, sin estar envueltos bajo una estructura determinada (por supuesto, en
Xojo encontraremos mltiples mtodos de clase para convertir desde y hacia
MemoryBlocks los datos correspondientes a las estructuras internas de dichas
clases, como pueda ser el texto).
Ahora bien, en su estado actual Xojo no expone muchos otros esquemas y
algoritmos presentes en la librera Crypto++ 5.6.2, cosa aparte es que
internamente pueda utilizar alguno de ellos. Quiz una de las ausencias ms
notables sea el esquema de criptografa de curva elptica. Quiz es cuestin de
tiempo que la veamos implementada en Xojo, junto con algunas otras
ausencias notables.
Aun as, con lo disponible cualquier usuario puede encontrar la respuesta a las
principales necesidades en cuanto al cifrado y verificacin de datos, as como
en el tpico almacenamiento y posterior verificacin en las contraseas u otra
informacin de carcter sensible, especialmente cuando se utiliza Xojo
Web o Xojo Pro para la creacin de aplicaciones con despliegue web, o
incluso Xojo Pro en la creacin de aplicaciones de servidor autnomas donde la
seguridad en el intercambio de la informacin sea un requerimiento
fundamental.
RSA en la prctica
Y cun sencillo resulta aplicar todo lo anterior? Pues lo cierto es que
sorprendentemente fcil, tanto por el diseo de las propias funciones como por
el lenguaje Xojo en general.
Por ejemplo, la creacin del par de claves Pblica/Privada que supone el punto
de partida para utilizar el resto de funciones RSA es tan simple como utilizar el
siguiente cdigo, y del que estoy convencido que podrs entender
perfectamente incluso en el caso de que esta sea tu primera exposicin al
lenguaje de programacin Xojo.

Crypto.RSAGenerateKeyPair ( Bits As Integer, ByRef PrivateKey As String, ByRef


PublicKey As String ) As Boolean
En el parmetro Bits pasaremos como nmero entero la longitud de la clave,
donde los valores tpicos suelen ser 1.024 o 2.048.
Sobre el resto, se utilizan dos parmetros de tipo String (cadena) y que sern
los responsables de contener tanto la clave pblica como la privada. Aqu, se
utiliza la partcula 'ByRef' de Xojo para indicar que el parmetro se pasar
como referencia y no como valor (es decir, como copia), de modo que se pueda
modificar desde dentro de la funcin el contenido del objeto apuntado por la
variable.
Por ltimo, la funcin devolver un booleano donde se indicar mediante el
valor 'True' que se ha podido realizar la operacin con xito o 'False' en caso
contrario.
Por tanto, un fragmento de cdigo que nos permitir crear ambas claves y
cifrar a continuacin un mensaje determinado sera el siguiente:
Dim clavePrivada As String Dim clavePublica As String
If Crypto.RSAGenerateKeyPair( 1024, clavePrivada, clavePublica ) Then
Dim buffer As New MemoryBlock(15) buffer.StringValue(0, 15) = "Mensaje
cifrado"
Dim cifrado As MemoryBlock = Crypto.RSAEncrypt( buffer, clavePublica )
if cifrado <> nil then

MsgBox cifrado.StringValue(0,15)

dim descifrado as MemoryBlock = Crypto.RSADecrypt(cifrado, clavePrivada)

MsgBox descifrado.StringValue(0,15)

End If
End If

Una vez cifrado, slo es necesario utilizar a continuacin la clave privada para
volver a convertirlo en texto claro.
Ahora bien, una particularidad de trabajar con bloques de memoria es que
desaparece toda la informacin de codificacin asociada con el texto (por
ejemplo UTF-8), de modo que es preciso tenerlo en cuenta a la hora de volver a
recuperar dicha informacin otra vez desde un bloque de memoria que
hayamos descifrado.
Acceso a Llaveros
Tambin hay que tener en cuenta que si bien el mdulo Crypto incluye todas
las funciones necesarias para cifrar, firmar o generar huellas digitales de
nuestra informacin, depende de nosotros poner a buen recaudo las claves
privadas que generemos.
Existen muchas formas de hacerlo, y de hecho no debera de suponer ningn
problema mediante las clases incluidas en el framework de Xojo. Ahora bien,
los usuarios de OS X lo tienen aun un poco ms sencillo gracias a que Xojo
incluye soporte para la caracterstica Acceso a Llaveros (Keychain) mediante
la que se facilita sobremanera el guardado y recuperacin de contraseas
utilizadas por las aplicaciones.

Qu son y para qu sirven los hash?: funciones de resumen y firmas digitales

Los hash o funciones de resumen son algoritmos que consiguen crear a partir
de una entrada (ya sea un texto, una contrasea o un archivo, por ejemplo)
una salida alfanumrica de longitud normalmente fija que representa un
resumen de toda la informacin que se le ha dado (es decir, a partir de los
datos de la entrada crea una cadena que solo puede volverse a crear con esos
mismos datos).
Estas funciones no tienen el mismo propsito que la criptografa simtrica y
asimtrica, tiene varios cometidos, entre ellos est asegurar que no se ha
modificado un archivo en una transmisin, hacer ilegible una contrasea o
firmar digitalmente un documento

Caractersticas de los hash


En definitiva las funciones hash se encargan de representar de forma compacta
un archivo o conjunto de datos que normalmente es de mayor tamao que el
hash independientemente del propsito de su uso.
Este sistema de criptografa usa algoritmos que aseguran que con la respuesta
(o hash) nunca se podr saber cuales han sido los datos insertados, lo que
indica que es una funcin unidireccional. Sabiendo que se puede generar
cualquier resumen a partir de cualquier dato nos podemos preguntar si se
podran repetir estos resmenes (hash) y la respuesta es que tericamente si,
podra haber colisiones, ya que no es fcil tener una funcin hash perfecta (que
consiga que no se repita la respuesta), pero esto no supone un problema, ya
que si se consiguieran (con un buen algoritmo) doshash iguales los contenidos
seran totalmente distintos.
Ejemplos y formas de uso
Las funciones hash son muy usadas, una de las utilidades que tiene es
proteger la confidencialidad de una contrasea, ya que podra estar en texto
plano y ser accesible por cualquiera y an as no poder ser capaces de
deducirla. En este caso, para saber si una contrasea que est guardada, por
ejemplo, en una base de datos es igual a la que hemos introducido no se
descifra el hash (ya que debera de ser imposible hacerlo) sino que se aplicar
la misma funcin de resumen a la contrasea que especificamos y se
comparar el resultado con el que tenemos guardado (como se hace con las
contraseas de los sistemas Linux).
Pongamos un ejemplo, la funcin hash MD5 es una de estas funciones de
resumen y la usaremos para resumir el siguiente texto:
Genbeta Dev

Y aplicar la funcin de resumen con el comando especifico que tienen la


mayora de sistemas basados en Linux (md5sum):
pedro@ubuntu:~$ md5sum
Genbeta Dev
b71dada304875838f0263e3ae50c2c49 Por lo que la ltima lnea es la del hash, que podis comprobar en un terminal,
en una herramienta online o con una aplicacin con este fin, aunque se puede
aplicar en muchos lenguajes de programacin que lo implementan (no solo
esta funcin, sino tambin otros tipos como el SHA que puede admitir distinta
longitud).
Asegurar la integridad de la informacin
Otro uso que tiene esta funcin es la de garantizar la integridad de los datos y
es algo que habris visto muchas veces, por ejemplo en algunas webs que
proporcionan descargas de archivos grandes, por ejemplos software, dando
junto a su vez el resumen del archivo y la funcin usada.
Por poner un ejemplo en la pgina de descarga de Virtual Box podemos
encontrar esta pgina con todos los resmenes de las descargas
disponibles con los que podemos comprobar que el archivo se ha descargado
correctamente y que nadie ha modificado su contenido durante la transmisin.
Para poner en prctica este uso coger esta imagen de HTML5 y le aplicar
una funcin de resumen con el algoritmo MD5.

Y el resultado de hacer el resumen es el siguiente, usando otra vez la funcin


presente en sistemas Linux (md5sum).
pedro@ubuntu:~$ md5sum HTML5.png
cc617bf6a1ec75373af6696873fccef1 HTML5.png
Este es el mtodo para saber que un documento est integro tras su recepcin,
por eso se usa para comprobar que un archivo se a descargado correctamente
o para comprobar que datos como un pequeo texto sigue siendo el mismo
tras su emisin.
Firma digital

Firmar un documento no es algo novedoso, pero la firma digital si lo es un poco


ms y nos ayuda a verificar la identidad del emisor de un mensaje (as nos
podemos asegurar que nuestro jefe nos manda un archivo concreto y no es el
vecino que nos gasta una broma).
El mtodo ms simple de firma digital consiste en crear un hash de la
informacin enviada y cifrarlo con nuestra cave privada (de nuestro par de
claves de la criptografa asimtrica) para que cualquiera con nuestra clave
pblica pueda ver el hash real y verificar que el contenido del archivo es el que
hemos mandado nosotros.
Me voy a adelantar al prximo captulo sobre criptografa y hablar un poquito
de GnuPG (GPG) que es una herramienta de cifrado que nos permite firmar
documentos, en este caso lo har con una firma en texto plano (es un
sistema menos seguro pero veremos que es lo que hace).
Lo que voy a hacer es firmar la imagen que hemos usado antes (la de HTML5)
con el siguiente comando en una terminal de Linux (para otras plataformas hay
otras soluciones muy similares o incluso idnticas):
pedro@ubuntu:~$ gpg --clearsign HTML5.png
Necesita una frase contrasea para desbloquear la clave secreta
del
usuario:
&quot;Pedro
&lt;info@xitrus.es&gt;&quot;

Gutirrez

Puente

(Clave

pblica)

clave DSA de 3072 bits, ID 783F3E6D, creada el 2012-12-11


Automticamente
a
partir
del
archivo HTML5.png nos
genera
el
archivo HTML5.png.asc que si lo abrimos con un visor de texto vemos el
contenido de la imagen (un conjunto de caracteres sin sentido) y al final del
archivo el siguiente texto (que contiene el hash cifrado):
-----BEGIN PGP SIGNATURE----Version: GnuPG v1.4.11 (GNU/Linux)
iF4EAREIAAYFAlD0vH0ACgkQJQ5Gcng/Pm1gDgD+PnXZfni9n90duv2ir0hdnWdp
1bpBHGzCNWxN8q5I8CoA/RsdMeMxY9kwOx/y8jnxQYDjWFiBRThiE7GSxTtvXUPf
=PwS6
-----END PGP SIGNATURE----Resumen

Junto con este artculo sobre los hash tenemos el que habla sobre los tipos de
criptografa (simtrica y asimtrica) que son la base para comprender el
siguiente y ltimo de la serie sobre criptografa, donde pondremos en prctica
estos conceptos junto a GPG.

Qu es y como surge la criptografa?: un repaso por su historia

La criptografa es una necesidad derivada de realizar comunicaciones por escrito (en su


origen)creada

para

preservar

la

privacidad de

la

informacin

que

se

transmite, garantizando que una persona que no est autorizada no pueda leer el
contenido del mensaje.
En la historia hemos tenido multitud de ejemplos de formas de encriptar mensajes como
los mtodos espartanos de hace 2.500 aos, el cifrado de Polybios (de los griegos) o
el cifrador del Csar (de los romanos), y sin olvidarnos de la mquina de encriptacin
ms famosa de la historia: la mquina Enigma.

Historia de la criptografa
En este artculo voy a tratar solamente de la historia de la criptografa y pondr unos
ejemplos prcticos, posteriormente me adentrar en los distintos tipos de criptografa
moderna y posteriormente su uso.

La esctala espartana (siglo V a. C.)

Los primeros mensajes cifrados que conocemos datan del siglo V antes de Cristo, de
procedencia espartana, que ponan en prctica un mtodo simple y rudimentario que
consista en coger una vara (llamada esctala), se le enroscaba una cinta de cuero o
papiro y posteriormente se escriba de forma longitudinal (como en la imagen).
Y por ltimo se desenrollaba la cinta, con un puado de letras sin sentido y se mandaba a
travs

del seur mensajero

de

turno

al

trote.

Supuestamente solo se poda desencriptar la informacin con una vara del mismo
dimetro que la original sobre la que se escribi (obviamente si te pones a intentar
cuadrar las letras acabas sacando algo en claro, pero en la poca no se saba demasiado
leer, tampoco el idioma origen y mucho menos tenan la cultura general necesaria para
pensar que la informacin estaba encriptada).

Uso
El dimetro de la esctala es la clave de este mtodo de encriptacin (o simplemente cada
cuantos caracteres empieza una vuelta).
En el ejemplo encriptaremos la siguiente entrada de texto:
Genbeta Dev Historia de la criptografa Mtodo usado por los espartanos
Y como clave o dimetro de la esctala (n) tomaremos el nmero 7, es decir, en cada
vuelta

de

la

cinta

enroscada

en

el

la

vara

pondremos

caracteres.

El resultado es el siguiente:
G tMose-do pn egtpabH rooreiladrttsafo aat ln ocauooDrr ssseii-a vap de
Podis poner la tcnica en marcha con este ejemplo que he realizado y el
cdigo JavaScript es el siguiente:
function escitala(txt,n){
//Convertimos "n" en entero
var n=Math.floor(Number(n))
//"e" nos indica si entra justo en las filas
var e=(txt.length%n>0?1:0)
//Calculamos el nmero de filas resultantes
var lin=Math.floor((txt.length/n)+e)

//"r" contiene la respuesta


var r=''
//Aadimos el carcter a la respuesta
for(var a=0;a<lin;a++) for(var

b=0;b<n;b++)

r+='<span>'+txt.charAt(a+(b*lin))+'</span>'
return r
}

La funcin necesita dos argumentos, el texto y el dimetro que usaremos de clave (n) de
la siguiente forma: escitala([Texto],[Entero: dimetro]).

El cifrador de Polybios (siglo II a. C.)


Este sistema es el primer cifrado por sustitucin de caracteres. Se atribuye la invencin a
el historiador griego Polybios y el sistema de cifrado consiste en sustituir un carcter por
el numero o letra de una columna o fila (como si jugsemos al hundir la flota).

En el ejemplo de este sistema introduciremos la siguiente cadena:


Genbeta Dev Historia de la criptografia Metodo usado por los griegos
Nota: tenemos que tener en cuenta que en este mtodo se sustituye la letra J por la
I.
El resultado de encriptar con la tabla de la imagen (la tericamente real) es el siguiente:
BBAECCABAEDDAA ADAEEA BCBDDCDDCDDBBDAA ADAE CAAAACDBBDCEDDCDB
BDBAABABDAA CBAEDDCDADCD DEDCAAADCD CECDDB CACDDCBBDBBDAEBBCD
DC
Y podis probarlo con este ejemplo para encriptar y desencriptar con el sistema griego
(Polybios).

var let='abcdefghiklmnopqrstuvwxyz'
var tra='ABCDE'
//funcin de encriptacin
function polybios_enc(txt){
//Comprobamos que el texto es vlido
var pat=/^[0-9A-z\s]*$/
if(!pat.test(txt)) return 'Texto no vlido'
//Lo

pasamos

minsculas

convertimos

la

"j"

en

"i"

(como

requiere el mtodo)
var txt=txt.toLowerCase().replace('j','i')
var r=''
for(var a=0;a<txt.length;a++){
//Comprobamos si el carcter es un espacio
if(txt.charAt(a)!=' '){
//Buscamos

la

posicin

del

carcter

en

el

abecedario
var l=txt.charAt(a)
l=let.indexOf(l)
//Comprobamos la posicin de la fila y columna
var c1=Math.floor(l/let.length*tra.length)
var
c2=Math.round(((l/let.length*tra.length)*tra.length)-(c1*tra.length))
//Aadimos la letra correspondiente a la fila y
columna
r+=tra.charAt(c1)+tra.charAt(c2)
}else{
r+=' '
}
}
return r
}
//funcin de desencriptacin
function polybios_dec(txt){
var pat=/^[ABCDE\s]*$/
if(!pat.test(txt)) return 'Texto no vlido'

var t=txt,r='',c
while(t.length>0){
if(t.substr(0,1)==' '){
r+=' '
c=1
}
else{
var s=t.substr(0,2).split('')
r+=let.charAt((tra.indexOf(s[0])*tra.length)
+tra.indexOf(s[1]))
c=2
}
t=t.substr(c,t.length-c)
}
return r
}

Ambas funciones solo necesitan el argumento con el texto a encriptar o desencriptar.

El cifrador del Csar (siglo I a. C.)


Los romanos hace 2100 aos idearon su propio sistema de enscriptacin (a la altura de
los anteriores) que consista en sustituir cada letra por otro que es el resultado de
desplazar tres posiciones hacia la derecha desde el carcter origen en el abecedario (con
la imagen de abajo se entender a la perfeccin).

Esta tcnica se podra mejorar cambiando el abecedario desplazado por uno aleatorio,
por ejemplo, pero el mtodo en principio es desplazando tres caracteres a la derecha (y

para

desencriptarlo

hacerlo

al

contrario,

la

izquierda).

Nota: este sistema puede admitir tambin los espacios, que se aadirn como un carcter
ms o de no usarse se omitirn.
Para poner otro ejemplo vamos a encriptar la siguiente cadena (contaremos los espacios):
Genbeta Dev Historia de la criptografia Metodo usado por los romanos
Y el resultado es el siguiente:
jhqehwdcghycklvwruldcghcodcfulswrjudildcphwrgrcxvdgrcsrucorvcurpdqrv
Y por ltimo he hecho este otro ejemplo funcional del sistema de enscriptacin del Csar,
que admite distinto nmero de desplazamiento (n), sea positivo o negativo (si lo
encriptamos con n=3 debemos de desencriptarlo con n=-3).
function cesar(txt,n,space){
//Comprobamos que el texto es vlido
var pat=/^[0-9A-z\s]*$/
if(!pat.test(txt)) return 'Texto no vlido'
//Adaptamos el texto segn si admitimos espacios
var let='abcdefghijklmnopqrstuvwxyz'+(space?' ':'')
var txt=txt.toLowerCase()
if(!space) for(var a=0;a<txt.length;a++) txt=txt.replace(' ','')
//Ajustamos el desplazamiento de "n"
var n=n%let.length,r=''
n=n<0?let.length+n:n
for(var a=0;a<txt.length;a++){
//Desplazamos el abecedario
l=let.charAt((let.indexOf(txt.charAt(a))+n)%let.length)
r+=l.length==0?' ':l
}
return r
}

Esta funcin sirve para encriptar y desencriptar (debemos de restar el desplazamiento


simplemente)

necesita

los

siguientes

argumentos: cesar([Texto],[Entero:

desplazamiento],[Booleano: con o sin espacios]).

El

CheckSum

Cuando hablamos de CheckSum o Suma de Verificacin nos estamos


refiriendo a una funcin hash computable mediante un algoritmo cuyo
propsito principal es detectar cambios en una secuencia de datos (archivos)
para proteger la integridad de estos, comprobando as que no haya diferencias
entre los valores obtenidos al hacer una comprobacin inicial y otra final luego
de haber compartido dichos datos; es decir, es usado para verificar que un
archivo compartido a un usuario es idntico bit a bit al publicado en
su
fuente
original.
Imagina que queremos almacenar o compartir informacin con alguien, pero a
la vez queremos protegernos frente a errores inesperados en el
almacenamiento o transmisin de esta informacin, en aquellas situaciones
resulta til acompaar a los datos de sus respectivos valores hash obtenidos a
partir de ellos aplicando funciones hash con ciertas propiedades de forma que
puedan ser usados para verificar (hasta cierto punto) el propio dato
compartido. Precisamenteal valor hash se le llama Suma de verificacin o
CheckSum.
El CheckSum es muy usado por empresas desarrolladoras de software ya que
permite comprobar la integridad de los contenidos que ofrecen. Por ejemplo,
cuando se distribuye un contenido por la red (una imagen ISO, IMG, un archivo
RAR, un ejecutable EXE, etc), y se quiere estar seguro de que lo que le llega al
usuario/cliente es lo que se est emitiendo, se proporciona un valor hash del
contenido de forma que ese valor tiene que obtenerse al aplicar la funcin hash
sobre el contenido distribuido asegurando as la integridad. En este caso el
CheckSum recibe el nombre de CheckSum Criptogrfico debido a que es un
checksum que requiere el uso de funciones hash criptogrficas para que sea
difcil generar otros ficheros falsos que tengan el mismo valor hash.
Otro ejemplo de uso de estos conceptos para verificar la integridad es
calcular y guardar el valor hash de archivos para poder verificar
posteriormente que nadie los ha modificado, y cuando hablamos de
haberlo modificado me refiero a insertar cdigo malicioso como malware,
adware, troyanos o virus. Esto ltimo es lo nos puede resultar ms
interesante ya que est involucrado directamente con lo que deseamos evitar,
y es que nadie quiere descargar un fichero o archivo y que al final resulte no

ser el archivo prometido sino un tipo de amenaza a nuestros equipos.

El Message-Digest Algorithm 5 o MD5

Message-Digest 5 (MD5) es un algoritmo criptogrfico de 128 bits


ampliamente difundido, el cual puede ser usado, entre otras cosas, para
realizar la comprobacin de la integridad de archivos como son binarios EXE,
imgenes ISO o cualquier otro tipo de fichero descargados desde alguna fuente
de Internet de manera que nos proporcione la seguridad de que el archivo
descargado
no
se
ha
alterado
o
modificado
por
terceros.
Comparando una Suma MD5 publicada con la Suma de Comprobacin del
archivo descargado, un usuario puede tener la confianza suficiente de que el
archivo es igual al publicado por los desarrolladores. Esto protege al usuario
contra malware y virus en general ya que algn otro usuario malicioso
podra incluir ese tipo de software modificando el archivo original.
Otro de los puntos importantes es que la comprobacin de un archivo
descargado contra su suma MD5 no detecta solamente los archivos alterados
de una manera maliciosa, sino que tambin reconoce una descarga
corrupta o incompleta como la descarga de una imagen ISO de un sistema
operativo, as podremos comprobar que no tengan errores entre sus
archivos antes de grabarlos a un DVD o pasarlas a un USB.
Un ejemplo de cmo lucira la suma MD5 de un fichero sera:
Nombre: test.png
MD5: 4ef72b35fed1cd10ab6c8d2921bf4962
Muchos desarrolladores de distribuciones linux comparten sus imgenes ISO de
instalacin acompaado de su respectivo MD5 para que el usuario sea capaz
de comprobar la integridad del archivo.

El Secure Hash Algorithm o SHA

El SHA o Secure Hash Algorithm es un sistema de funciones hash


criptogrficas que producen una salida resumen de 160 bits y que es
mpliamente usado como medida de seguridad pues, al igual que el MD5, nos
permite comprobar la originalidad e integridad de de archivos
descargados. Pero adems es uno de los algoritmos ms usados para
guardar de manera encriptada datos muy sensibles como contraseas,
as
como
en
el proceso
de
firmar
digitalmente
diferentes
documentos (mayor
informacin).
Como dato histrico, el primer miembro de la familia fue oficialmente

llamado SHA, publicado en 1993. Sin embargo, hoy en da, no oficialmente se


le llama SHA-0 para evitar confusiones con sus sucesores. Dos aos ms tarde
el primer sucesor de SHA fue publicado con el nombre de SHA-1, que
actualmente es uno de los ms usados al distribuir software. Tambin existen
cuatro variantes ms que se han publicado desde entonces con algunas otras
diferencias: SHA-224, SHA-256, SHA-384, y SHA-512 (llamndose SHA-2 a
todos
ellos).
Un ejemplo de cmo lucira el hash SHA-1 de un fichero sera:
Nombre: test.png
SHA-1: 33d0f57fb6d7e43d4bbe2a3d6e1878dffd1a7aed
Microsoft es una de las empresas que ms usan el hash SHA-1 para facilitar
que los usuarios puedan comprobar la originalidad e integridad de sus
productos distribuidos en imagenes ISO o ejecutables EXE. Por ejemplo la
siguiente imgen que corresponde al reciente Windows 8.1 Preview:

Otro ejemplo es The Fedora Project, desarrolladores de una distribucin linux


del mismo nombre, quienes a su vez usan el hash SHA-256 para realizar las
comprobaciones de sus imagenes ISO como pueden ver en el siguiente link. En
nuestro ejemplo se muestra el SHA-256 de la versin 19 de Fedora de 64bit:
-----BEGIN
Hash:

PGP

SIGNED

MESSAGE----SHA256

#
The
image
checksum(s)
are
generated
with
sha256sum.
6e7e263e607cfcadc90ea2ef5668aa3945d9eca596485a7a1f8a9f2478cc7084
*Fedora-19-x86_64-DVD.iso
ef9eb28b6343e57de292f2b2147b8e74a2a04050655e0dc959febd69b0d5d030
*Fedora-19-x86_64-netinst.iso

El Cyclic Redundancy Check 32 o CRC32

Se trata de un cdigo de deteccin de errores usado frecuentemente en


redes digitales y en dispositivos de almacenamiento cuyo propsito
principal es comprobar o detectar cambios accidentales en los datos o
alteracin
de
los
mismos.
Como se ha mencionado, es til para deteccin de errores, pero, en
condiciones de seguridad, no podemos confiar en que el CRC puede
verificar plenamente que los datos son los correctos en caso de que se
hayan
producido
cambios
deliberados
y
no
aleatorios.
A menudo se piensa que si, cuando llega un mensaje, ste y su CRC coinciden,
quiere decir que el mensaje no ha podido ser alterado durante su transmisin.
Esta suposicin es falsa porque CRC es un mal mtodo de cifrado de datos. De
hecho, el CRC no se trata realmente de un mtodo de cifrado, lo que
realmente hace es utilizarse para el control de integridad de datos,
pero en algunos casos se supone que se utilizarn para el cifrado.
Notemos que el CRC es un valor numrico que se calcula usando los datos
originales de forma que este valor est fuertemente ligado precisamente a
estos datos, por tanto si los datos cambian entonces el valor del CRC tambin
cambia.
Un ejemplo de cmo lucira el CRC32 de un fichero sera:
Nombre: test.png
CRC-32: 9b8fcbd6
WinRAR, el popular programa compresor y descompresor de datos, usa el

CRC32 para comprobar archivos. Cuando WinRAR descomprime un fichero


vuelve a calcular su CRC y lo compara con el CRC de los datos originales
almacenado en el archivo RAR. Si los valores calculados son diferentes
entonces los datos tambin son diferentes y el fichero extrado no es idntico al
fichero original obtenindose en esos casos un mensaje comn como "Error de
CRC" que significa que el archivo est daado, o, si est protegido con
contrasea,
que
la
contrasea
usada
es
incorrecta.

Y con todo esto, Por qu sera necesario


calcular el MD5, SHA-1, CRC32, etc?
Les dar un ejemplo en concreto. En el chat del blog muchas personas nos
vienen preguntando luego de descargar la ISO de Windows 7 o Windows 8,
comentndonos que por algn motivo no pudieron hacer que la instalacin se
llevara a cabo bajo ninguna posibilidad. Es all cuando les decimos de
primera "Verificaste el hash justo despus de descargar? cierto?", y la
respuesta
comn
que
conseguimos
es "No,
qu
es
eso?"
Es aqu donde viene la importancia de este post, pues considero
absoltamente necesario que usted verifique la autenticidad de los
archivos que ha descargado, sobre todo si son imagenes ISO de
sistemas operativos que acaba de descargar. Si lo hace, confirmar que
NO ha sido modificado por terceras personas, que est limpio de
spyware y virus, y que est libre de corrupcin o de cualquier error de
transferencia (incompleto
por
errores
en
la
descarga).
La comprobacin del hash es el nico medio seguro por el cual puedes
comprobar que tu descarga es exactamente igual (bit a bit) al archivo
proporcionado por su fuente original, pues el mtodo de que "si el peso es el
mismo,
entonces
es
correcto" no
es
siempre
suficiente.

Y que pasara si al intentar comprobar el


hash
no
coincide?
Hay dos posibilidades: (1) El archivo que haz descargado funcionar pero no
como debera (esto depender de qu tan importante es aquella parte
corrupta) o (2) El archivo simplemente no abrir, no se ejecutar, o no se
podr
grabar;
es
decir,
es
inservible.
En ambos casos la sugerencia general es volver a conseguir el
archivo de
su
fuente
original, es decir, volver
a
descargarlo.

Y en qu est relacionado todos estos


conceptos con nuestro blog Conocimiento
Adictivo?
Nuestro blog ya lleva muchos meses usando la comprobacin de ficheros por
su suma MD5 en los posts de descargas, esto con el nico fin de que nuestros

visitantes puedan verificar la originalidad e integridad de los archivos que


compartimos
as
como
verificar
su
descarga
completa.
Noten adems que para facilitarles an ms la tarea de comprobacin hemos
implementado que el nombre de los archivos correspondan a su MD5 Sum para
que tengan de esta forma a mano siempre el MD5 Sum de los archivos que son
descargados
desde
nuestro
blog.
Por ejemplo veamos el caso del aporte de descarga "PowerISO 5.7", si se
dirigen al post de este artculo, vern la siguiente informacin en la seccin
"Enlaces de Descarga":
PROGRAMA
Multilenguaje | RAR | 5.84 MB
Contenido: PowerISO.v5.7.Final
MD5 Checksum: 676fd77af0c161c30f169f6c115f0226

Como pueden notar nosotros ya venimos proporcionndoles el MD5 Checksum,


el mismo que ser el propio nombre de descarga del archivo que podr ser
visualizado al momento de descargar los archivos RAR, y no slo eso, sino que
ese MD5 Checksum ser su ID nico con el cual podrn verificar la originalidad
de nuestros archivos asi como su integridad luego de la descarga.
Esta implementacin es con la finalidad de brindarles un mejor soporte y por su
propia seguridad. No es una obligacin pero si muy recomendable.

Herramienta que puedes usar para calcular


el hash SHA-1, MD5 y CRC32 de los
archivos
que
descargues
Para obtener este tipo de datos existen muchas aplicaciones; sin embargo, la
que veremos en esta ocasin esHashcheck, una pequesima aplicacin que
cumple muy bien su objetivo a la hora de conocer estos datos para cualquier
tipo
de
archivos.
HashCheck Shell Extension hace que sea fcil y rpido para cualquiera el
poder calcular y verificar sumas de comprobacin (CheckSums) y hashes desde
el propio Explorador de Windows, para ello integra la funcionalidad de la suma
de comprobacin de archivos en la opcin de Propiedades de cualquier archivo.
Adems HashCheck es capaz de crear y verificar archivos SFV y otros tipos de
archivos
de
control,
como
los
archivos .Md5

Descarga
code.kliu.org/hashcheck/

Tipos de criptografa: simtrica, asimtrica e hibrida

Criptografa simtrica
La criptografa simtrica solo utiliza una clave para cifrar y descifrar el mensaje, que tiene
que conocer el emisor y el receptor previamente y este es el punto dbil del sistema, la
comunicacin de las claves entre ambos sujetos, ya que resulta ms fcil interceptar una
clave que se ha transmitido sin seguridad (dicindola en alto, mandndola por correo
electrnico u ordinario o haciendo una llamada telefnica).

Tericamente debera de ser ms fcil conocer la clave interceptndola que probndola


una por una por fuerza bruta, teniendo en cuenta que la seguridad de un mensaje cifrado
debe recaer sobre la clave y nunca sobre el algoritmo (por lo que sera una tarea eterna
reventar la clave, como coment en un ejemplo de ataque por fuerza bruta).

Para poner un ejemplo la mquina Enigma (que era una maquina de cifrado
electromecnica que generaba abecedarios segn la posicin de unos rodillos que
podran tener distintas ordenes y posiciones) usaba un mtodo simtrico con un algoritmo
que dependa de una clave (que ms que clave parece un ritual) que est formada por:
los rotores o rodillos que usaba, su orden y la posicin de cada anillo, siendo esto lo ms
bsico.
La mquina Enigma contaba tambin con un libro de claves que contena la clave del
da y hacia un poco ms difcil encontrar la clave, pero no es una clave lo suficientemente
segura como para que no se pudiese reventar, sobretodo cuando los ingleses gracias a
los polacos consiguieron el algoritmo, por este motivo la mayora de los das conseguan
la clave.
Y otro inconveniente que tiene este sistema es que si quieres tener un contenido
totalmente confidencial con 10 personas tienes que aprenderte o apuntarte (siendo esta
forma menos segura) las 10 claves para cada persona.

Criptografa asimtrica
La criptografa asimtrica se basa en el uso de dos claves: la pblica (que se podr
difundir sin ningn problema a todas las personas que necesiten mandarte algo cifrado)
y la privada (que no debe de ser revelada nunca).

Sabiendo lo anterior, si queremos que tres compaeros de trabajo nos manden un archivo
cifrado debemos de mandarle nuestra clave pblica (que est vinculada a la privada) y
nos podrn mandar de forma confidencial ese archivo que solo nosotros podremos
descifrar con la clave privada.
Puede parecer a simple vista un sistema un poco cojo ya que podramos pensar que
sabiendo la clave pblica podramos deducir la privada, pero este tipo de sistemas
criptogrficos usa algoritmos bastante complejos que generan a partir de la frase de paso
(la contrasea) la clave privada y pblica que pueden tener perfectamente un tamao de
2048bits (probablemente imposible de reventar).
Como os habris dado cuenta solo cifra una persona (con la clave pblica) y la otra se
limita a mirar el contenido, por lo que la forma correcta de tener una comunicacin
bidireccional sera realizando este mismo proceso con dos pares de claves, o una por
cada comunicador.
Otro propsito de este sistema es tambin el de poder firmar documentos, certificando
que el emisor es quien dice ser, firmando con la clave privada y verificando la identidad
con la pblica.
Nota: todo esto puede parecer lioso (y lo es) pero hablar de como poner en prctica esto
conGnuPG (una herramienta de cifrado libre muy usada para este propsito) y ser ms
fcil de comprender.

Diferencias entre criptografa simtrica y asimtrica


Para empezar, la criptografa simtrica es ms insegura ya que el hecho de pasar la clave
es una gran vulnerabilidad, pero se puede cifrar y descifrar en menor tiempo del que tarda
la criptografa asimtrica, que es el principal inconveniente y es la razn por la que existe
la criptografa hbrida.

Criptografa hbrida
Este sistema es la unin de las ventajas de los dos anteriores, debemos de partir que el
problema de ambos sistemas criptogrficos es que el simtrico es inseguro y el asimtrico
es lento.
El proceso para usar un sistema criptogrfico hbrido es el siguiente (para enviar un
archivo):

Generar una clave pblica y otra privada (en el receptor).

Cifrar un archivo de forma sncrona.

El receptor nos enva su clave pblica.

Ciframos la clave que hemos usado para encriptar el archivo con la clave pblica
del receptor.

Enviamos el archivo cifrado (sncronamente) y la clave del archivo cifrada


(asncronamente y solo puede ver el receptor).

Manual de GPG: cifra, firma y enva datos de forma segura

Hemos hablado ya sobre la criptografa simtrica y asimtrica y sobre la firma digital, solo
toca ponerlo en prctica con GnuPG (la versin libre de PGP o mejor dicho Pretty Good
Privacy), con el que cifraremos cualquier tipo de archivo que podremos mandar

libremente con cierta seguridad de que nadie lo podr leer. Y puede que a muchos os
ayude a entender como funciona la criptografa y como funciona el polmico cifrado
de Mega, que tanto est dando que hablar estos das.

Qu es GnuPG?
Antes de empezar con lo interesante tenemos que saber que es GPG (GNU Privacy
Guard), que es un derivado libre de PGP y su utilidad es la de cifrar y firmar digitalmente,
siendo adems multiplataforma (podis descargarlo desde la pgina oficial) aunque viene
incorporado en algunos sistemas Linux, como en Ubuntu (ser con el sistema que har
todos los ejemplos, en Windows se encuentra solo con gestor grfico).

Anillo de claves
GPG tiene un repositorio de claves (anillo de claves) donde guarda todas las que tenemos
almacenadas en nuestro sistema, ya sean privadas o pblicas (como coment, con la
clave pblica cifraremos un mensaje que solo podr descifrar el que posee la clave
privada).
Ms adelante cuando veamos un anillo de claves debemos de recordar que pub hace
referencia a la clave pblica y sub hace referencia a la privada (y que tenemos que tener
a buen recaudo).

Servidores de claves
Para que nos cifren un mensaje tenemos que compartir la clave pblica de nuestro par de
claves para cifrar, y como es un poco engorroso difundir una clave a muchas personas
existen los servidores de claves PGP (compatibles con GPG), donde subir una clave
pblica

para

el

que

quiera

probar

los

ejemplos.

Unos ejemplos de servidores son estos: pgp.rediris.es (espaol, aunque falla


algunas veces) opgp.mit.edu (americano, del MIT y a mi no me ha dado problemas).

Cifrado simtrico

Como ya sabis el cifrado simtrico es el tipo de cifrado ms sencillo que hay, es ms


rpido de procesar y por desgracia menos seguro que el cifrado asimtrico.
Para empezar la prueba tenemos que tener un archivo de cualquier tipo e introducir en la
terminal de Linux el comando gpg con el parmetro -c para cifrar y -d para descifrar.
pedro@ubuntu:~/gpg$ echo "Genbeta Dev" > texto.txt
pedro@ubuntu:~/gpg$ gpg -c texto.txt

Tras crear un archivo de texto usamos el comando gpg -c [archivo], nos aparecer
un cuadro que nos pide la contrasea y se generar un archivo .gpg. Y despus lo
descifraremos con el comando gpg -d [archivo] (e introduciendo la clave de alta
seguridad, en este caso qwerty).
pedro@ubuntu:~/gpg$ gpg -d texto.txt.gpg
gpg: datos cifrados CAST5
gpg: cifrado con 1 frase contrasea
Genbeta Dev
gpg: AVISO: la integridad del mensaje no est protegida

Podis probar a descifrar este archivo usando la clave qwerty.

Cifrado asimtrico

Generar las claves


Para poder cifrar asimtricamente primero tenemos que crear la pareja de claves (pblica
y privada) con el comando gpg --gen-key.
pedro@ubuntu:~/gpg$ gpg --gen-key
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Por favor seleccione tipo de clave deseado:
(1) RSA y RSA (predeterminado)
(2) DSA y Elgamal
(3) DSA (slo firmar)
(4) RSA (slo firmar)
Su seleccin?:

GPG nos permite elegir el tipo de clave que queremos usar, hay opciones que solo
permiten firmar y otras que permiten firmar y cifrar, en este caso usaremos DSA y
Elgamal.
las claves DSA pueden tener entre 1024 y 3072 bits de longitud.
De qu tamao quiere la clave? (2048)

Nos piden el tamao de la clave que puede variar entre 1024 bits y 3072, esto es de libre
eleccin, yo tomar el trmino medio que es el que propone por defecto (2048).
A partir de aqu todo es ms trivial, nos pide la fecha en la que expirar la clave, la
informacin del emisor de la clave (nombre, mail y algunos datos extra que queramos dar)
y por ltimo nos pedir la contrasea que salvaguarda la clave privada.
Tras generar las claves podemos verlas con el comando gpg -k que nos muestra
nuestro anillo de claves, lo importante de este paso es que veremos la identificacin de
cada una, que es necesaria para poderlas exportar y enviar.
pedro@ubuntu:~/gpg$ gpg -k
/home/pedro/.gnupg/pubring.gpg
-----------------------------pub

2048D/18384645 2013-01-23

uid

Pedro Gutirrez (Manual GPG - Genbeta Dev)

<info@xitrus.es>
sub

2048g/C4A9EA7A 2013-01-23

Exportar y enviar la clave privada


El objetivo de esta pareja de claves es que cualquiera nos pueda mandar un archivo
cifrado que solo veremos nosotros y esto se hace difundiendo la clave pblica que
acabamos de crear (la pblica,nunca la privada), para exportarla en un archivo usaremos
el comando gpg -output [archivo destino] --export [ID de a clave
pblica] (la clave pblica generada antes tiene la ID18384645).
pedro@ubuntu:~/gpg$ gpg --output CPub.gpg --export 18384645

pedro@ubuntu:~/gpg$ ls
CPub.gpg

Este archivo ahora se puede difundir por el medio que queramos, tenemos que tener en
cuenta que el nico problema de seguridad que habra en difundir la clave es que alguien
se hiciese pasar por otro al mandarnos un mensaje, algo que pasara igual si no estuviese
cifrado, por eso el que nos enve algo lo debera de firmar (si fuese pertinente).
Podis descargar esta clave pblica, que ahora veremos como importar y sirve para
mandarme un archivo cifrado o para comprobar que un archivo lo he firmado yo.

Subir una clave pblica a un servidor de claves


Los servidores de claves suelen ser de acceso pblico (al no haber mucho problema por
difundir una clave pblica) y en este caso subiremos una clave a los servidores
del MIT (pgp.mit.edu)

usando

el

comando gpg

--send-keys

--keyserver

[Direccin del servidor] [ID de la clave pblica] (al igual que antes la
ID es 18384645).
pedro@ubuntu:~/gpg$ gpg --send-keys --keyserver pgp.mit.edu 18384645
gpg: enviando clave 18384645 a hkp servidor pgp.mit.edu

A partir de este momento la clave estar accesible desde este servidor especfico.

Importar la clave desde el archivo o servidor de claves


Para poder usar la clave pblica para cifrar o comprobar la identidad del remitente
tenemos que importar previamente la clave, desde un archivo debemos de usar el
comando gpg

--import

[Archivo

de

la

clave

pblica] (el que hemos

descargado anteriormente).
pedro@ubuntu:~/gpg$ gpg --import CPub.gpg
gpg:

clave

18384645:

Pedro

<info@xitrus.es> sin cambios

Gutirrez

(Manual

GPG

Genbeta

Dev)

gpg: Cantidad total procesada: 1


gpg:

sin cambios: 1

Al tener la clave ya en mi anillo de claves me contesta que no hay cambios.


Para realizar la importacin desde el servidor tenemos que usar el comando gpg
--keyserver [Direccin del servidor] --recv-keys [ID de la clave].
pedro@ubuntu:~/gpg$ gpg --keyserver pgp.mit.edu --recv-keys 18384645
gpg: solicitando clave 18384645 de hkp servidor pgp.mit.edu
gpg:

clave

18384645:

Pedro

Gutirrez

(Manual

GPG

Genbeta

Dev)

<info@xitrus.es> sin cambios


gpg: Cantidad total procesada: 1
gpg:

sin cambios: 1

Como podemos ver al tener ya la clave nos devuelve el mismo mensaje.

Cifrar con la clave pblica


Ahora tenemos que pensar que hemos importado una clave pblica, por ejemplo de
nuestro jefe y tenemos que mandarle un documento, para cifrar el documento usaremos
el comando gpg encrypt recipient [ID de la clave] [Archivo]
pedro@ubuntu:~/gpg$ echo "Genbeta Dev" > documento.txt
pedro@ubuntu:~/gpg$ gpg --encrypt --recipient 18384645 documento.txt
pedro@ubuntu:~/gpg$ ls
documento.txt documento.txt.gpg

Y ya tenemos el archivo listo para mandarlo de forma segura.

Descifrar un archivo con la clave privada


Y ahora es el momento de descifrar con nuestra clave privada el documento tras recibirlo,
con el comando gpg -d [Archivo] e introduciendo la contrasea que creamos para
salvaguardar la clave privada.

pedro@ubuntu:~/gpg$ gpg -d documento.txt.gpg


Necesita una frase contrasea para desbloquear la clave secreta
del

usuario:

"Pedro

Gutirrez

(Manual

GPG

Genbeta

Dev)

<info@xitrus.es>"
clave ELG-E de 2048 bits, ID C4A9EA7A, creada el 2013-01-23 (ID de clave
primaria 18384645)
gpg: cifrado con clave ELG-E de 2048 bits, ID C4A9EA7A, creada el 201301-23
Pedro Gutirrez (Manual GPG - Genbeta Dev) <info@xitrus.es>
Genbeta Dev

Y el resultado nos lo muestra a continuacin (Genbeta Dev), aunque si queremos


especificar la salida debemos de usar el parmetro -o [Archivo de salida].

Firmar archivos
Una de las medidas de seguridad bsicas al pasar un mensaje es asegurarnos que el
emisor es quien dice ser, para asegurarnos de esto digitalmente existe la firma digital, en
el artculo anteriorexpliqu como GPG usaba los hash para crear una firma simple, pero
tambin podemos cifrarlo y a su vez firmarlo, que es lo que haremos con el comando gpg
-u [ID de la clave privada] --output [Archivo resultante] --sign
[Archivo para firmar] e introduciendo la contrasea de la clave privada.
pedro@ubuntu:~/gpg$ echo "Genbeta Dev" > firmar.txt
pedro@ubuntu:~/gpg$

gpg

-u

C4A9EA7A

--output

firmar.txt.gpg

--sign

firmar.txt
Necesita una frase contrasea para desbloquear la clave secreta
del

usuario:

"Pedro

Gutirrez

(Manual

GPG

Genbeta

Dev)

<info@xitrus.es>"
clave DSA de 2048 bits, ID 18384645, creada el 2013-01-23

Y ahora para asegurarse la confidencialidad del documento (ahora que esta firmado por
nosotros) deberamos de cifrarlo con la clave pblica del destinatario.

Verificar y descifrar un archivo firmado

Cualquiera con la clave pblica asociada a la que ha firmado el documento puede leerlo,
de la misma forma que desciframos un archivo (gpg -d [Archivo]) o verificndolo
nicamente con el comandogpg --verify [Archivo].
pedro@ubuntu:~/gpg$ gpg --verify firmar.txt.gpg
gpg: Firmado el mi 23 ene 2013 05:25:18 CET usando clave DSA ID 18384645
gpg:

Firma

correcta

de

Pedro

Gutirrez

(Manual

GPG

Genbeta

Dev)

<info@xitrus.es>

Y el resultado es la informacin del remitente, que podis comprobar vosotros con este
archivo y con la clave pblica de los pasos anteriores.

Resumen
GPG es una herramienta de cifrado muy potente y fcil de usar, que en principio, a la
mayora no nos hace falta, pero puede que se nos presente la necesidad de enviar algo
por medio inseguros (porque no haya ms remedio), hacindolo de esta forma podremos
hacerlo sin miedo ha que lean el contenido del archivo o nos den el cambiazo.
Este es un tema bastante extenso y si no lo acabas de entender puede ser un lo, pero
para preguntar estn los comentarios.

http://www.genbetadev.com/

También podría gustarte