\documentclass[12pt,a4paper]{article}
\usepackage[spanish]{babel}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{subcaption}

\title{Tema VI: Cifrado de Información}
\author{Nicolás A. Ortega Froysa}

\begin{document}
\maketitle
\pagebreak
\tableofcontents
\pagebreak

\section{Introducción}

A menudo es necesario cifrar información para que sólo aquellas personas
privilegiadas puedan accederla. Para esto, se ha usado históricamente el
cifrado, y en nuestra época digital tecnológica, esto no ha cambiado, sino que
se ha visto potenciado aún más, hasta el punto de que hoy día el cifrado de
información es algo de lo más cotidiano. Simplemente con acceder a una página
con el protocolo HTTPS ya estás usando cifrado.

\section{GNU Privacy Guard (GPG)}

En los sistemas GNU/Linux, la forma más normal de cifrar archivos es usando la
herramienta de {\em GNU Privacy Guard} (GPG). Esto se usa tanto para cifrado
simétrico como asimétrico. Vamos a revisar cómo cifrar un archivo usando esta
herramienta de forma simétrica: es decir, que se usa la misma contraseña para
cifrar y descifrar.

\subsection{Cifrado}

En primer lugar, tendremos que juntar todos los archivos que queremos cifrar en
un solo archivo. Esto se puede hacer usando cualquier herramienta de compresión
o unión de archivos. Para nuestro ejemplo, usaremos la herramienta {\tt tar},
aunque también se podría usar ZIP.

Creamos un directorio con todos los archivos que queremos comprimir, y luego los
juntamos usando el comando de {\tt tar} siguiente:

\begin{verbatim}
$ tar cvf secreto.tar secreto/
\end{verbatim}

Una vez que tengamos todos los archivos dentro de un mismo archivo, podemos
cifrarlo usando el comando {\tt gpg} (o en algunos sistemas de GNU/Linux es {\tt
gnupg}). Usamos el comando siguiente:

\begin{verbatim}
$ gpg --symmetric --cipher-algo <cipher> secreto.tar
\end{verbatim}

En este caso {\tt \textless{}cipher\textgreater{}} se reemplaza con el tipo de
cifrado que se quiere hacer. En nuestro caso queremos usar el cifrado {\tt
AES256}. Pedirá también una contraseña para el cifrado en este paso. Esto
producirá un archivo denominado {\tt secreto.tar.gpg}. A partir de aquí podemos
borrar los archivos originales de {\tt secreto.tar} y el contenido del
directorio {\tt secreto/}. Dicho lo cual, como acabamos de cifrar los archivos
es más seguro borrarlos usando el comando {\tt shred} de GNU/Linux, que no sólo
borrará los archivos, sino que antes de borrarlos reemplazará todo su contenido
con caracteres aleatorios.

\begin{figure}[!htb]
	\centering
	\includegraphics[width=0.75\linewidth]{imgs/cifrado.png}
	\caption{Cifrado de un archivo con GPG.}
	\label{fig:cifrado}
\end{figure}

\subsection{Descifrado}

Para descifrar el mismo archivo, hacemos lo que sería el mismo proceso, pero a
la inversa. Primero, lo desciframos usando GPG, e introduciendo la contraseña
establecido anteriormente:

\begin{verbatim}
$ gpg -o secreto.tar -d secreto.tar.gpg
\end{verbatim}

Esto producirá de nuevo nuestro archivo de {\tt secreto.tar}. Posteriormente
queremos desjuntar los archivos contenidos en ese {\em tarball}. Esto lo hacemos
igualmente con el comando {\tt tar}:

\begin{verbatim}
$ tar xvf secreto.tar
\end{verbatim}

Esto nos extraerá del archivo el directorio original y los archivos contenidos
en él. Con esto, ya habremos descifrado y recuperado los datos.

\begin{figure}[!htb]
	\centering
	\includegraphics[width=0.55\linewidth]{imgs/descifrado.png}
	\caption{Descifrado con GPG.}
	\label{fig:descifrado}
\end{figure}

\section{Conclusión}

El cifrado por línea de comando en GNU/Linux usando la herramienta GPG de GNU es
una tarea bastante sencilla, aunque se tiene que dividir en sub-pasos si se
quiere hacer con varios archivos. Mas esto forma parte de lo que sería la
mentalidad de UNIX -- que cada herramienta haga una sola cosa, y que lo haga
bien.

\pagebreak

\section{Derechos de Autor y Licencia}

\noindent
Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa
<nicolas@ortegas.org> \\
\\
Este documento se distribuye bajo los términos y condiciones de la licencia
Creative Commons Attribution No Derivatives 4.0 International.

\end{document}
