Archivo de la categoría: Linux Encriptar

TrueCrypt: Unidades virtuales cifradas para proteger archivos confidenciales

TrueCrypt ofrece la posibilidad de crear discos virtuales o aprovechar una partición ya existente para guardar ficheros cifrados.

Podemos escoger entre varios algoritmos de cifrado, como AES, Serpent o Twofish, y determinar de cuántos megas o gigas será la unidad virtual. Allí podremos guardar cualquier documento de forma segura y cómoda.

TrueCrypt se integra con el explorador de archivos que usemos, es fácil de usar y permite crear hasta 32 unidades diferentes….

 

Instalación y configuración

En primer lugar, descargaremos la última versión disponible de TrueCrypt para Windows. Es un fichero comprimido con zip de aproximadamente 1.5 MB, que contiene también la Guía de Usuario (un pdf de más de 90 páginas, en inglés).

Lo descomprimimos todo en una carpeta temporal y ejecutamos TrueCrypt Setup.exe:

Instalar TC en Windows 1

Pulsa Install para instalar el programa:

Instalar TC en Windows 2

En pocos segundos el programa queda instalado. Pulsa OK. Se te pregunta ahora si quieres abrir la vesión en línea del tutorial en tu navegador web. Contesta que no (para eso tienes este tutorial en español) y pulsa Exit (Salir).

Arranca TrueCrypt (desde el menú de Inicio o el icono correspondiente el escritorio):

Iniciando TC

Antes de nada, vamos a “traducir” TrueCrypt al español. Pulsa Settings -> Language -> Download Language Pack:

Castellanizando TC 1

Se arranca tu navegador web para que descargues el fichero de idioma español. Descarga el zip y descomprímelo en la misma carpeta donde instalaste TrueCrypt. Reinicia TrueCrypt. De nuevo Settings -> Language -> Español:

Castellanizando TC 2

Mucho mejor, ¿no? Ahora ya podemos meternos en harina. Pulsemos “Crear Volumen”:

Creando volumen 1

Lee las instrucciones de la ventana anterior y pulsa Siguiente:

Creando volumen 2

Como ves, aquí podríamos elegir crear nuestro volumen TrueCrypt en una partición o un dispositivo USB, pero de momento elegiremos crearlo dentro de un fichero, para el que hay que elegir ahora nombre y localización. Pulsa “Seleccionar Archivo” y en la carpeta “Mis Documentos” escribe “Mi Volumen” como nombre de fichero. Cuando acabes pulsa “Siguiente”.

Llegamos a una pantalla que alguien, sin duda en un descuido, tradujo como “Opciones de Encripción” (sí, entenderé que vuelvas a seleccionar “English” como idioma de la aplicación ;):

Creando volumen 2

Vamos avanzando. Hemos llegado al momento de elegir algoritmos (de hash y de cifrado). ¿Cuál elegir? Pues si no tienes ninguna preferencia al respecto, puedes limitarte a elegir los que te ofrecen por defecto. Si no, una opción que puede ayudarte a decidir (o al menos a elegir el más rápido) es “Comparación”. Mira qué curioso:

Probando algoritmos

Pulsa “Siguiente” para elegir el tamaño de tu volumen cifrado (observa cuáles son los límites, según tu sistema de archivos). Para este tutorial me conformaré con 3 megabytes:

Dando tamaño

Momento (decisivo, porque éste puede ser el punto más débil de tu cadena de seguridad) de elegir contraseña. Larga y con caracteres variados, siempre que no la olvides o la pierdas:

Dando formato

Selecciona el sistema de ficheros que prefieres y mueve el ratón lo más posible durante al menos 30 segundos, para aumentar la aleatoriedad de tu clave. A continuación pulsa “Format”:

Volumen creado 1
Volumen creado 2

No ha sido nada complicado, ¿verdad?. Pulsa OK y Salir.

Utilización

No podremos utilizar nuestro nuevo volumen cifrado mientras no lo montemos (el concepto de “montar unidades” antes de poder utilizarlas posiblemente resulte más conocido para aquellos lectores que tengan experiencia en ssitemas Linux).

Volvemos a la ventana de TrueCrypt (que ha permanecido abierta en segundo plano durante todas nuestras operaciones anteriores). Elegiremos una letra de unidad (la K de Kripto, por ejemplo) y luego “Seleccionar archivo”:

Montando volumen 1

Navegaremos hasta la carpeta donde creamos el fichero “Mi Volumen” en el apartado anterior, y seleccionaremos ese fichero. Al pulsar “Montar” se nos pedirá nuestra contraseña:

Montando volumen 2

Éxito:

Montando volumen 3

Si ahora hacemos doble clic sobre nuestra unidad K, veremos que se comporta como cualquier otra unidad de disco:

Montando volumen 4

La diferencia es que cualquier fichero que arrastres hacia ella se guardará cifrado de forma transparente, y sin necesidad de que teclees de nuevo tu contraseña (la contraseña sólo se te pide cuando montas la unidad). De hecho, y a efectos prácticos, puedes utilizar tu volumen cifrado TrueCrypt como cualquier otra unidad de disco. Los ficheros se cifran y descifran en memoria, sin que nada se escriba “en claro” en el disco duro en ningún momento. De hecho, si se fuera la corriente y se apagara el ordenador, ningún dato en claro podría ser accedido, ya que tras reiniciar tendrías que suministrar de nuevo tu contraseña para poder montar el volumen. Lógicamente, también puedes desmontar tú mismo el volumen para lograr el mismo efecto (botón “Desmontar”).

Conclusión

Hemos avanzado bastante, pero aún así sólo hemos arañado la superficie del programa. En próximas entregas de esta serie iremos descubriendo mucho más. Mientras tanto, dispones de un nuevo foroespecífico para comentar tu experiencia o consultar dudas sobre TrueCrypt.

Fuente: http://www.kriptopolis.org

OpenSSL "Cifrado mediante SSL"

El proyecto OpenSSL es una oferta al software libre, que poco a poco va modelándose como una aplicación de desarrollo robusta, con aplicaciones comerciales profesionales, ya que contiene todas las características y aplicaciones necesarias para ello.

Implementa las versiones v2 y v3 del SSL (Secure Sockets Layer) (Capas Seguras del Zócalo) y la versión v1 del TLS (Transport Layer Security) (Seguridad del Transporte de Capas) al igual que una potente librería criptográfica.

Generación de los certificados o llaves pública y privada.

Vamos a generar un certificado firmado por nosotros mismos. Para ello necesitamos tener instalado el OpenSSL y entonces tipeamos:

pablot$ openssl req -new -x509 -out certificado.pem

Una vez hecho esto seguiremos los pasos que se ven a continuación como salida del comando anterior y completaremos la información solicitada según corresponda.
Generating a 1024 bit RSA private key
.............................++++++
..........++++++
writing new private key to 'privkey.pem'
Enter PEM pass phrase: <acá podemos ingresar una clave>
Verifying - Enter PEM pass phrase: <y acá demos repetir la clave anterior>
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AR
State or Province Name (full name) [Some-State]:Santa Fe
Locality Name (eg, city) []:Rosario
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mi empresa
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:José Perez
Email Address []:

Una vez hecho esto vamos a tener nuestro certificado en el archivo certificado.pem y nuestra llave privada en el archivo privkey.pem. Aca vemos el contenido de los dos archivos:

Este es el contenido de certificado.pem
-----BEGIN CERTIFICATE-----
MIIDADCCAmmgAwIBAgIBADANBgkqhkiG9w0BAQQFADBkMQswCQYDVQQGEwJBUjER
MA8GA1UECBMIU2FudGEgRmUxEDAOBg1VBAcTB1Jvc2FyaW8xEzARBgNVBAoTCk1p
IGVtcHJlc2ExCzAJBgNVBAsTAklUMQ4wDAYDVQQDEwVQYWJsbzAeFw0wODA2Mjcw
ODI4MzBaFw0wODA3MjcwODI4MzBaMGQxCzAJBgNVBAYTAkFSMREwDwYDVQQIEwhT
YW50YSBGZTEQMA4GA1UEBxMHUm9zYXJpbzETMBEGA1UEChMKTWkgZW1wcmVzYTEL
MAkGA1UECxMCSVQxDjAMBgNVBAMTBVBhYmxvMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQC9Hh9+H5+sBUCJklI+U5H7jVILZT21D9LtHqxeVtaBZUheLHJ1tJH6
rCKH/rToMYgNHPthHORQFif5+RMZJxev7o2F16osfwwkF4ak1+2xP7mTOPpT7n1o
t7DUZPNzhV4W9U2wGG7s8k8vX1XZ7KjQSsm0M1Wi7TJLUk+r2z/S7QIDAQABo4HB
MIG+MB0GA1UdDgQWBBTi3lAeHK6M0E0tXmxThxQcYGL5zDCBjgYDVR0jBIGGMIGD
gBTi3lAeHK6M0E0tXmxThxQcYGL5zKFopGYwZDELHAkGA1UEBhMCQVIxETAPBgNV
BAgTCFNhbnRhIEZlM2RAwDgYDVQQHEwSb3NhcmlvMRMwEQYDVQQKEwpNaSBlbXBy
ZXNhMQswCQYDVQQLEwJJVDEOMAwGA1UEAxMFUGFibG+CAQAwDAYDVR0TBAUwAwEB
/zANBgkqhkiG9w0BAQQFAAOBgQB+F7QLGre/v8tu0UZzBCauuygGjPk2KYddJC5/
gcaV5xpgHoyxIXkYkwzfuV+v+S33Ju+mTmXczt5UgPztYOxFdocGFUF0QBs6VGfk
uVSsANaT3TVS8lF/dqiy0M8e0/rsT4PdCvidalvZNMOEcHAl+7TALLzg53FU2bF2
O+Wujw==
-----END CERTIFICATE-----

Este es el contenido de privkey.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7269B348F1BAA2D9

RC+B4fUTgQx5qCGmC1VXvlErXmnpbqE+DLGq8dqZYlwTksKnDnMv32uRc3rAeyNc
Eg+aNU6KWhEnu3WYfcHTJsW4R3aILNX2vKF/zOXHHSxBA1zJRgyMzqKrRPfB4BEj
5Enn48ehgG/DwKBcXcQSsNAQ121qJf4QBG3rj6H6jE8wNcIiV7AI5ZKcOB25V/9q
Q7IgplPKX+PfF/piQUDIjNDQ1Nfrfn59qdewkxRQiCoEeJKwXpn6je2JCLDTV5cz
4ZUc5hT/1IePjWHY8TkRnma4v4obBCd8N3fEqkTP5nLBhGAcor9RuBcusmKyhlxt
ftiWTgBs6k15HuCcmzIuARQ/PE5elJMeGYJfrcby40QPLcTdlz9wqR2ULmpAUxTe
g9e1EKTOTAGjF+oUpCrDEIN5Txru6Q8hDQ6NuV9b0baeFJare7dlcqrzcjm2Lwin
Sq3N78xdOiA4kMJ1AKDM6cBXbFvZ92XeUFEZPH53wDC+aiNc4urlqew06uwAgHDu
Br60ODWnhw3babNWQaM5nxAIs5nR8DJZmdzrj2c4zYkYKLmcoaJzsSTGn466kqce
96F4503ev2+/iCgSh9h8lFU9JRRsQnbs4IaxemboHU5MY5Fu3h7MZXSejgUbZ2Z7
3rI9T/VQUyJyxcuzHIKeEJNMwxwUBE+3xqffluZXAxPP8GuyWHSn9owErCPg9RhU
xeBl+MYZi2zzSscdVZ6ZxDbsNRYiGlAdqPBWofv+UTej7ch0vggrhjzkONuGTJn/
IiJB4QUAjkiuDCtZR8OVutxrebmPNnRZmiFHx8L7QYw=
-----END RSA PRIVATE KEY-----

NOTA: Cabe destacar que si queremos tener un certificado digital otorgado por una entidad certificante como Verisign, debemos generar un CSR o Certificate Sign Request (con el comando openssl req -new -out cert.csr) que debe ser enviado (el archivo cert.csr) a la autoridad certificante para que, previo pago, nos devuelva un certificado como el que tenemos en el archivo certificado.pem.

Ahora que ya tenemos el certificado y nuestra llave privada, vamos a ver un ejemplo para encriptar datos con la llave pública que luego podrían ser grabados en una base de datos.


<?php

$texto_plano = "Dato supersecreto que pone en riesgo la seguridad nacional";


$llave_publica = "file://<path_donde_esta_el_archivo>certificado.pem";
openssl_public_encrypt($texto_plano, $texto_encriptado, $llave_publica);

// Si imprimimos esto, vemos "basura" que en realidad es el dato ya encriptado.
// Es por esto que probablemente nos convenga por ejemplo codificarlo en base64 con
// $texto_encriptado = base64_encode($texto_encriptado) antes de grabarlo
// en un campo de una base de datos
//echo $texto_encriptado;
?>

Y ahora cuando tengamos que desencriptar los datos tendremos que usar la llave privada que es la única que podrá desencriptarlos.

<?php
$fp=fopen("./privkey.pem","r");
$llave_privada = fread($fp,8192);
fclose($fp);

// El segundo parametro es la clave que ingresamos al crear el certificado
// si es que optamos por hacerlo.
// Si antes codificamos en base64 el texto encriptado, ahora hay que acordarse
// de hacerle un $texto_encriptado = base64_decode($texto_encriptado) antes de
// desencriptarlo.
$res = openssl_get_privatekey($llave_privada,"miclave");
openssl_private_decrypt($texto_encriptado, $texto_desencriptado, $res);

//Esto debe dar como salida el mismo texto que antes estaba en la variable $texto_plano
echo $texto_desencriptado;
?>

¡Y listo!, ya esta, no hay nada más. Ya sabemos lo que tenemos que hacer antes de grabar un dato crítico en la base de datos y lo que tenemos que hacer luego de recuperarlo de la base para poder desencriptarlo.

De esta manera la base de datos será solo basura para cualquiera que no tenga la llave privada y su correspondiente clave.

Aclaración importante: El largo de la cadena de datos a encriptar esta limitado por el tamaño de la clave, por lo cual para una clave de 1024 bits como la del ejemplo OpenSSL permite encriptar hasta 936 bits, o sea 936/8=117 caracteres. En consecuencia para claves de 1024 bits solo podremos encriptar hasta 117 caracteres, pero el límite se incrementa si usamos claves de 2048 o 4096 bits.

Por otro lado se recomienda una clave de al menos 2048 bits, pero teniéndo OpenSSL la posibilidad de generar claves de 4096 bits, yo diría que sea de 4096 bits .

Nota: No intenten capturar el contenido de los archivos certificado.pem y privkey.pem que muestro y usarlos porque son inválidos. Deben generarse los propios. Esto esta hecho a propósito para ¡proteger a los inocentes! para que nadie los copie y los use directamente, ya que el hecho de estar publicados los torna totalmente inútiles desde el punto de vista de seguridad.

Descargar