index.html (4396B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 <title>De la privacidad del machine-id</title> 7 <link rel="icon" type="image/png" href="/favicon.png" /> 8 <link rel="stylesheet" type="text/css" href="../article.css" /> 9 </head> 10 <body> 11 <header> 12 <p class="title">De la privacidad del <i>machine-id</i></p> 13 <p class="date">22 de marzo de 2021 • fjbalon</p> 14 </header> 15 <p>Ya conocemos el <emb>machine-id</emb>, pero, ¿qué tiene que decir dicho identificador en cuanto a la privacidad? En un esfuerzo por asegurar la privacidad, tener un identificador único e inmutable vinculado directamente al dispositivo no parece un enfoque adecuado.</p> 16 <p>Recordamos además que el propio manual indica que el contenido es confidencial y no debe ser compartido. Sin embargo, no existe mecanismo ni inconveniente en que cualquier software tenga acceso a estos ficheros, permitiendo leer y almacenar el <emb>machine-id</emb> para el uso que fuera, sea accidental o malintencionado. Es cierto que también es accesible /sys, que contiene información sobre cada dispositivo conectado al sistema -inclusive las series de dispositivos USB únicas-. Por lo que si se requiere protección de confianza contra aplicaciones locales, se requerirá una solución de espacio aislado. Aún así, mantener o asegurar la no-integridad -de cara a terceros- del identificador parece algo deseable.</p> 17 <p>De nada sirve que nos indiquen que debe guardarse confidencialmente, cuando los permisos son de lectura para todos:</p> 18 <pre><code>ls -hal /etc/machine-id 19 -r--r--r-- 1 root root 33 jul 11 14:28 /etc/machine-id 20 cat /etc/machine-id 21 9f00b9e6f49f45299a05a5ff8fd697df</code></pre> 22 <p>Su exclusión o eliminación en un sistema basado en <emb>systemd</emb> tampoco parece ser una acción conveniente, pues este identificador se utiliza para identificar máquinas en <emb>journalctl</emb>, así como para identificar máquinas en comunicaciones D-Bus. ¿Quizá podamos ponerlo a 0? Tampoco, espera una cadena de 32 caracteres.</p> 23 <p>Sabiendo entonces la facilidad que hay para cambiarlo, ¿por qué no automatizar un <emb>cronjob</emb> para que se cambie cada cierto tiempo? Por poner un modo paranoico, se podría hacer para que cambie cada minuto:</p> 24 <pre><code>sudo crontab -e 25 26 */1 * * * * rm /etc/machine-id && dbus-uuidgen --ensure=/etc/machine-id</code></pre> 27 <p>Dicha automatización presentaría una solución a los problemas de privacidad que surgen de mantener un identificador accesible a todos. Sin embargo, ¿es seguro hacer algo así?. Aparentemente, parece que generar nuevas identificaciones en caliente pueden presentar inconvenientes. Tal y como indica la documentación:</p> 28 <cita> 29 <p>«Si intenta cambiar un id de máquina existente en un sistema en ejecución, es probable que sucedan cosas inconvenientes. No intente cambiar este archivo. Además, no lo haga igual en dos sistemas diferentes; debe ser diferente cada vez que haya dos núcleos diferentes en ejecución.»</p> 30 <p><a href="https://dbus.freedesktop.org/doc/dbus-uuidgen.1.html">dbus-uuidgen</a></p> 31 </cita> 32 <p>No parece entonces, muy conveniente, automatizar la actualización del <emb>machine-id</emb> dentro de la misma ejecución temporal: podría causar problemas. Puede generar, por ejemplo, discrepancias en su identificador por parte de los servidores DHCP, que identifican a la máquina a raíz última del <emb>machine-id</emb>; especialmente en configuraciones de red que utilicen bridges.</p> 33 <p>Por otro lado, es llamativo saber que Whonix OS no genera un nuevo <emb>machine-id</emb> tras cada reinicio, sin embargo, mantiene el mismo para todos los usuarios. Algo que sí hace Tails. Quizá, una mejor opción para garantizar de alguna forma la privacidad es la de generar un nuevo identificador en cada inicio, tal y como hace Tails:</p> 34 <pre><code>sudo crontab -e 35 36 @reboot rm /etc/machine-id && dbus-uuidgen --ensure=/etc/machine-id</code></pre> 37 <p>De tal forma que durante la sesión temporal que dura el uptime el sistema sea identificado de una manera, pero al iniciar de nuevo el sistema sea identificado de otra. Aunque si la privacidad relacionada con el <emb>machine-id</emb> preocupa, quizá, la mejor forma de solventar el riesgo es utilizar un sistema sin <emb>systemd</emb>.</p> 38 </body> 39 </html>