\documentclass[12pt,a4paper]{article} \usepackage[spanish]{babel} \usepackage{hyperref} \usepackage{graphicx} \usepackage{subcaption} \title{Tema XI Ejercicio III: Cifrado De Una Unidad En Linux} \author{Nicolás A. Ortega Froysa} \begin{document} \maketitle \pagebreak \tableofcontents \pagebreak \section{Introducción} El cifrado de dispositivos en GNU/Linux se puede hacer de varias maneras. Es posible hacerlo a nivel de formato de sistema de archivos, que es un sistema bastante común con sistemas como ZFS. Quizá lo más popular ahora mismo es usar el sistema de LUKS. Esto permite formatear una partición de un dispositivo de forma que esté cifrado, y sobre esta partición cifrada se puede tratar como si fuese un dispositivo virtual. \section{Cifrado con LUKS} \noindent Para este documento vamos a asumir que el dispositivo que queremos cifrar se encuentra en {\tt /dev/sdX}. Todas las operaciones se deben de hacer como {\em root}. {\bf Por favor, asegúrese de usar el nombre real de tu dispositivo.} \subsection{Creación del Dispositivo Cifrado} Antes de crear el dispositivo cifrado, es necesario hacer una copia de los datos que se encuentran ya en él. Asegúrese de esto antes de continuar, y de desmontar el dispositivo. A continuación vamos a reescribir todos los bloques de nuestro dispositivo a cero usando el comando {\tt dd}. De este modo no será posible recuperar ningún dato que se encontraba antes en él. Esto lo hacemos corriendo el comando siguiente: \begin{verbatim} $ dd if=/dev/zero of=/dev/sdX bs=1M \end{verbatim} Este proceso puede tardar mucho tiempo dependiendo del tamaño del dispositivo. Para más seguridad, es también aconsejable usar en vez de {\tt /dev/zero} el archivo {\tt /dev/urandom}, ya que éste en vez de reescribir con ceros, reescribirá con caracteres aleatorios. Posteriormente ya podemos cifrar el dispositivo en sí. Primero tenemos que crear la partición que vamos a cifrar. Como el dispositivo entero lo hemos borrado, vamos a crear una partición que ocupe todo el disco. Esto se hace usando el comando {\tt fdisk}: \begin{verbatim} $ fdisk /dev/sdX \end{verbatim} Esto nos abrirá la consola de {\tt fdisk}, donde introducimos los siguientes comandos: \begin{enumerate} \item {\tt n} para crear una partición nueva \item {\tt p} para designarla como partición primaria \item {\tt 1} como número de partición (sale por defecto) \item {\tt Enter} para usar el sector primero que sale por defecto \item {\tt Enter} para usar el sector final que sale por defecto \item {\tt w} para guardar los cambios \end{enumerate} Finalmente, ciframos el disco usando el comando {\tt cryptsetup}. Esto se hace corriendo el comando siguiente: \begin{verbatim} $ cryptsetup luksFormat /dev/sdX \end{verbatim} Este comando nos hará varias preguntas. En primer lugar nos preguntará si estamos seguros de hacer este procedimiento, ya que se perderán datos de manera irrecuperable. Como ya hemos hecho la copia, tenemos que meter {\tt YES} (en mayúsculas). Después, nos pedirá introducir la contraseña que queremos usar, y verificar ésta. Cuando ya se introduce, tardará un rato en cifrar el dispositivo. \begin{figure}[!htb] \centering \includegraphics[width=0.75\linewidth]{imgs/cryptsetup.png} \caption{Uso de {\tt cryptsetup} en un archivo.} \label{fig:cryptsetup} \end{figure} Ya se ha creado el dispositivo cifrado, pero aún tenemos que abrirlo y formatearlo para poder usarlo. \subsection{Abrir el Dispositivo Cifrado y Formatear} Abrir el dispositivo es también un proceso fácil: tan sólo hay que abrirlo especificando el nombre que quiere para el dispositivo virtual (en nuestro caso, {\tt crypt-dev}). \begin{verbatim} $ cryptsetup luksOpen /dev/sdX crypt-dev \end{verbatim} Ya se debería de encontrar nuestro dispositivo virtual en {\tt /dev/mapper/crypt-dev}. Con esto se puede tratar como con cualquier otro dispositivo. En nuestro caso, vamos a formatearlo con formato EXT4 de forma siguiente: \begin{verbatim} $ mkfs.ext4 /dev/mapper/crypt-dev \end{verbatim} Ahora ya sí que podemos acceder a {\tt crypt-dev} como si fuese un dispositivo cualquiera. Cuando queremos cerrarlo para que no se pueda acceder, simplemente corremos el comando siguiente {\bf después de haber desmontado el dispositivo virtual}: \begin{verbatim} $ cryptsetup luksClose crypt-dev \end{verbatim} \section{Conclusión} El cifrado con LUKS en GNU/Linux es bastante fácil. Facilita usar el dispositivo como un dispositivo normal virtual, y también permite cifrar una partición, dejando a otra sin cifrar. La verdad es que ya he tenido experiencia usando esta herramienta.\footnote{https://themusicinnoise.net/blog/2017-02-20-parabola-with-lvm-on-luks.html} \footnote{https://themusicinnoise.net/blog/2017-02-21-encrypted-backup-drive.html} \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}