Sirviendo información sobre Linux desde 1998

Crtunnel - encriptación/desencriptación

Autor: Alejandro Conty, COALA
Primera publicación: 2001-11-30
Copyright pertenece al autor

Crtunnel es un programa para la encriptación/desencriptación de ficheros, pero su uso va mucho más allá que la simple encriptación/desencriptación de los mismos. Realmente la función para la que fué diseñado crtunnel, es como su nombre indica, para ejercer de tunnel. En un extremo recibe los datos descifrados y los devuelve en el otro extremo cifrados, o viceversa. Imaginate tener tu música, videos, etc .. encriptados y poder pasárselos a la aplicación que uses habitualmente para abrirlos, sin tener que modificar nada para desencriptarlos. Bien, pues esto es posible y sencillo gracias a crtunnel.

Descripción

El uso de crtunnel es realmente sencillo y cómodo. Lo primero que debemos hacer es iniciar el crtunnel en modo Servidor de Claves, para lo cual hay que iniciar el crtunnel con la acción -s, junto con todas las opciones que queramos (Ver Opciones).

Ej:

$ crtunnel -s -q -c 3

Inicia el crtunnel en modo Servidor de Claves, de la manera más silenciosa posible y encriptando los ficheros que se le ordenen con el codec con ID=3 (Usar crtunnel -l, para obtener una lista de los disponibles)

Una vez lanzado el servidor, este nospedirá que le introduzcamos la clave con la que encriptará y desencriptará a partir de ahora (a no ser que se la hayamos suministrado en un fichero (opción -f)).

A partir de este momento ya podemos usar el crtunnel para encriptar y desencriptar de manera normal con las opciones -e y -d, respectivamente.

NOTA:

Date cuenta que si encriptaste un fichero con una clave y ahora le dices una distinta al servidor, cuando intentes usar el crtunnel -d, este te dirá que la clave no es correcta ;-)

Si queremos, podemos terminar el Servidor cuando lo deseemos con:

$ crtunnel -k

tambíen podríamos hacer que el Servidor finalice automáticamente tras varios minutos transcurridos (opción -t) ó tras un número de claves determinadas servidas (opción -n).

Como usar la encriptación:

Ej:

$ crtunnel -e < fichero_sin_encriptar > fichero_encriptado

A este ejemplo le podriamos haber añadido tambien la opcion -q para que mostrase el menor número de mensajes posibles, ó redireccionar el descriptor 2 (stderr) a /dev/null [2> /dev/null].... o cuantas cosas se desee. Otra forma por ejemplo de encriptar digamos un fichero de texto, sería:

$ cat fichero_txt | crtunnel -e -q > fichero_txt_encriptado

Como usar la desencriptación:

Veamos un sencillo ejemplo de como reproducir nuestra cancion fichero_mp3_encriptado:

$ crtunnel -d < fichero_ogg_encriptado | ogg123 -d oss -

Lectura de un fichero de texto encriptado:

$ crtunnel -d < fichero_txt_encriptado 2> /de/null | more

Como ver nuestro divx favorito ....

$ crtunnel -d < fichero_avi_encriptado | mplayer -

Opciones

A continuación se enumeran y describen todas las opciones de las que dispone crtunnel. Tranquilo, no es necesario que las recuerdes todas. Siempre podrás acceder a una breve descripción de las mismas con el comando:

$ crtunnel -?

ó

$ crtunnel -h

Esta sería la salida de dicho comando:

Usage: crtunnel  []
action:
-s Run Key Server in background (Default Action)
-k Stop the Key Server
-e Encrypt
-d Decrypt (Codec Autodetected)

-l List of the Crypt-Codecs installed
-i Install the New Crypt-Codec 'file'
-r Remove the Crypt-Codec 'file'

options:
-h, -? This help
-c Select Codec 'codec_id' (Use lscrypt to see the list)
-f Make a key from 'file' instead of a password
-L Generate a log (Under /home/miliki/.crtunnel.log)
-n Max number of keys to serve
-t Number of minutes active (Default 60)
-q Be as quiet as possible

Recuerda que crtunnel posee internacionalización, esto quiere decir que dependiendo de tus LOCALES estos mensajes aparecerán en otro idioma ;-)

Crtunnel necesita siempre que le indiques una acción de entre todas las posibles, además de cuantas opciones creas necesario.

Acciones

-s	

Inicia el Servidor de Claves. Esta es la primera función que debes de ejecutar antes de poder encriptar ó desencriptar nada. Si no se le indica ninguna acción al crtunnel, está será la que se realice por defecto, tras pedirnos confirmación para ello.

-k

Detiene el Servidor de Claves que se estaba ejecutando (si había alguno).

-e

Devuelve por la salida estandard los datos encriptados, con el Codec seleccionado y la Clave indicada, de los datos suministrados por la entrada estandard.

-d

Devuelve por la salida estandard los datos desencriptados con la Clave indicada, de los datos suministrados por la entrada estandard.

-l

Devuelve una lista con los IDs de cada Codec instalado junto con el nombre del mismo.

-i

Instala un Codec nuevo en el directorio de los plugins. (Necesitarás permisos de root para hacer esto)

-r

Desinstala un Codec del directorio de los plugins. (Necesitarás permisos de root para hacer esto)

Opciones

-c  

Selecciona el Codec que tiene como Identificador 'id', para las operaciones de encriptar y desencriptar. Esta opción solo es útil pasarsela junto con la acción -s.

-f  

Proporciona la Clave desde un fichero, llamado 'filename' en vez de desde teclado. Esta opción solo es útil pasarsela junto con la acción -s.

-L

Cada vez que el servidor reciba una petición de Clave, ya sea para encriptar ó desencriptar, se escribe en $HOME/.crtunnel_log la fecha de dicha petición. Esta opción solo es útil pasarsela junto con la acción -s.

-n  

Cuando el Servidor de Claves haya recibido 'num' peticiones de Clave, ya sea para encriptar ó desencriptar, el servidor se detendrá y no servirá más. Esta opción solo es útil pasarsela junto con la acción -s.

-t  

Una vez pasados 'num' minutos desde que se inició el servidor, este se detendrá y no servirá más claves. Esta opción solo es útil pasarsela junto con la acción -s.

-q

Se intentará mostrar por consola el menor número de mensajes posible. Esta opción puede usarse con cualquiera de la acciones del crtunnel.

Diseño

El programa crtunnel está diseñado de forma modular, mediante una arquitectura de plugins. Esto significa que cada Codec para encriptar/desencriptar es un plugin, por lo que es muy sencillo añadir codecs nuevos que no interfieren para nada con el código principal del programa.

Actualmente los codecs que vienen incluidos "de serie" con crtunnel son:

  • AES
  • IDEA
  • DES
  • DAFE
  • Cast-256
  • Twofish

Dado que crtunnel opera sobre la entrada y salida estandard, es muy fácil usarlo con cualquier otro programa para que este pueda trabajar con ficheros encriptados, sin perder nada de su funcionaliad* y sin tener que tocar para nada el código de este programa.

Addons

Como ejemplo sencillo, se adjunta aqui parte de un fichero de configuración del editor VIM (.vimrc) Editor, el cual os animo a aprender y utilizar, por su extrema potencia.

augroup crtunnel
autocmd!
autocmd BufReadPre,FileReadPre *.cr set bin
autocmd BufReadPost,FileReadPost *.cr '[,']!crtunnel -d -q 2> /dev/null
autocmd BufReadPost,FileReadPost *.cr set nobin
autocmd BufReadPost,FileReadPost *.cr execute ":doautocmd BufReadPost " . expand("%:r")

autocmd BufWritePost,FileWritePost *.cr silent !mv :r
autocmd BufWritePost,FileWritePost *.cr silent !crtunnel -e -q < :r 2> /dev/null >
autocmd BufWritePost,FileWritePost *.cr silent !rm :r

autocmd FileAppendPre *.cr silent !mv :r
autocmd FileAppendPre *.cr silent !crtunnel -d -q < :r 2> /dev/null >
autocmd FileAppendPre *.cr silent !rm :r

autocmd FileAppendPost *.cr silent !mv :r
autocmd FileAppendPost *.cr silent !crtunnel -e -q < :r 2> /dev/null >
autocmd FileAppendPost *.cr silent !rm :r
augroup END

Una vez añadido este código a nuestro $HOME/.vimrc ya podemos leer y escribir ficheros encriptados con crtunnel como si de otro fichero se tratase y sin tener que desencriptarlo explicitamente. El único requisito es que nuestro fichero encriptado ha de tener la extensión .cr y por supuesto haber lanzado previamente crtunnel como servidor con la clave para cifrar y descifrar.

Este programa asi como todo lo que puedas encontrar aquí se distribuye bajo la licencia GPL

Problemas comunes

Como la libcr genera números aleatorios, al inicializarse trata de coger la semilla de la máquina local. Por eso es posible que veais al programa pararse en el "random init". Si pasa eso, solo teneis que mover el ratón o pulsar algunas teclas. El programa continuará normalmente. En el futuro lo arreglaremos para que sólo haga esto si es estrictamente necesario.

 

Créditos

Este programa esta basado en un ejemplo que Alejandro Conty hizo para la libreria libcr. Consiste en una ampliación hecha por Pablo Molino en la que ha usado codigo del key server contenido en el paquete refugee.

Enlaces:

Descarga:

NOTA:

Es necesario instalar la licr y la libcr-devel para poder compilar crtunnel-1.0 (Ocupan realmente poco)

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Desencriptacion de archivos .bin

como desencriptar texto de archivos .bin = ÿ©≠#⅔@Eј¥ÿ por texto legible = (hola como estas)
hay alguna manera gracias