\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 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 \\ \\ Este documento se distribuye bajo los términos y condiciones de la licencia Creative Commons Attribution No Derivatives 4.0 International. \end{document}