Crea scripts propios para encriptar y desencriptar

La Criptografía simétrica es un muro.

Extracto:

Tener la posibilidad de encriptar y desencriptar rápidamente en tu sistema aporta un plus de comodidad que hará ejecutes tus propios comandos más a menudo que si lo haces directamente desde el comando nativo del sistema ―al menos para mí―.

Este artículo consta de dos scripts (muy similares), realizados en BASH, uno para encriptar y otro para desencriptar, a los que añadiremos un parámetro para ayuda que nos proporcione la sintaxis en caso de olvidarla.

@pedroruizhidalg― Antes de continuar leyendo asegúrate que sabes cómo preparar tu sistema para ejecutar nuestros comandos.

Existe la creencia que la CS es menos potente que la CA. Es un mito, quizá debido al desconocimiento. Aclaremos, antes de empezar algunos conceptos: La diferencia entre las CS y CA no es más que la desconfianza en el canal de distribución de las claves. En el caso de la CA, existen dos claves, una pública y otra privada, de tal forma que exponiendo tu clave pública en uno de los muchos servidores existentes. Yo uso Rediris, pero realmente no tiene mucha importancia cuál uses, pues los servidores de clave se intercambian información para expandir lo más posible alrededor del mundo el mayor número de claves posible. El programa GPG encripta conociendo la clave privada del emisor y la clave pública del receptor, encripta de distinta forma para cada uno de los destinatarios, aún cuando el mensaje sea el mismo.

En cambio, la criptografía simétrica, asume que el canal de distribución de las claves es absolutamente seguro. Esta afirmación es cierta cuando estás encriptando para ti mismo ¿En qué situación? Pues porque quieres alejar de miradas indiscretas algo que tienes en tu sistema, ya sea, por ser información comprometida o por alguna otra razón que no entraré a describir.

Abreviaturas usadas

  • CS: Criptografía Simétrica.
  • CA: Criptografía Asimétrica.
  • GPG: GnuPG.

Descripción

Preparemos el primero de los comandos, lo llamaremos “symmetric.c” y se encargará de encriptar. Así:

$ touch symmetric.c
$ chmod +x symmetric.c

Con nuestro editor preferido le añadimos el siguiente código:

#!/usr/bin/env bash
echo "+------------------------+"
echo "| por Pedro Ruiz Hidalgo |"
echo "+------------------------+"
echo " "

if [[ $1 == "-h" ]];
then
 echo " "
 echo "symmetric.c ARCHIVO para comprimir"
 echo "symmetric.c ARCHIVO ARCHIVO para comprimir indicando archivo de salida"
 echo " "
 exit 0
fi

if [ $# -lt 1 ];
then
 echo "Necesitas un parámetro como nombre de archivo a encriptar"
 echo " "
 echo "symmetric.c -h para help"
 echo " "
fi

if [ $# = 1 ];
then
 gpg --symmetric --cipher-algo AES256 $1
 exit 0
fi

if [ $# = 2 ];
then
 gpg -a -o $2.gpg --symmetric --cipher-algo AES256 $1
 exit 0
fi

El primero de los if comprueba que el parámetro sea ‘-h”, en tal caso muestra la ayuda. El segudo if, mira si el número de parámetros que nos han pasado. Si viene sin parámetros lo indicamos y sugerimos que se ejecute la ayuda. El tercero, encripta el nombre de archivo que le pasemos como parámetro y genera ese mismo nombre de archivo con la extensión “.gpg” al final. El cuarto if, nos sirve para proporcionar nosotros mismos el nombre del archivo resultante.

A continuación creamos el archivo “symmetric.d” de forma análoga a su compañero. Igualmente le asignamos permisos de ejecución de tal forma como hicimos con su compañero mediante el comando chmod.

#!/usr/bin/env bash
echo "+------------------------+"
echo "| por Pedro Ruiz Hidalgo |"
echo "+------------------------+"
echo " "

if [ $# -lt 1 ];
then
 echo " "
 echo "symmetric.d -h para help"
 echo " "
 exit 0
fi

if [[ $1 == "-h" ]];
then
 echo " "
 echo "symmetric.d ARCHIVO para desencriptar"
 echo "symmetric.d ARCHIVO ARCHIVO para desencriptar indicando archivo de salida"
 echo " "
 exit 0
fi

if [ $# == 1 ];
then
 gpg -d $1
 exit 0
fi

if [ $# == 2 ];
then
 gpg -o $2 -d $1
 exit 0
fi

El primero de los if comprueba que el número de parámetros sea al menos uno. En caso contrario (no hay ningún parámetro) sugiere que pidan ayuda con el parámetro ‘-h’. El segundo if realiza la comprobación de si están pidiendo ayuda, si es así la muestra. El tercero de ellos desencripta y muestra la salida por pantalla. El cuatro if, desencripta de igual forma pero dando nombre al archivo generado.

Ejecución

Probar el script symmetric.c

$ echo "esto es un contenido cualquiera" > qaz.txt
$ symmetric.c qaz.txt qaz.gpg

Probar el script symmetric.d

$ symmetric.d qaz.gpg qaz2.txt

Epílogo

Atenderé cualquier duda que tengáis acerca de los scripts y su funcionamiento. Los he resumido al máximo para su clara comprensión.

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

#aboutpedroruizhidalgo

[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel

Deja un comentario