Web de confianza, Parte 2: Tutorial

Reproducir

El artículo anterior analizó cómo funciona Web of Trust en concepto y cómo se implementa Web of Trust en Fedora. En este artículo, aprenderá a hacerlo usted mismo. 

El poder de este sistema radica en que todos pueden validar las acciones de los demás; si sabe cómo validar el trabajo de alguien, está contribuyendo a la solidez de nuestra seguridad compartida.

Elegir un proyecto

Remmina es un cliente de escritorio remoto escrito en GTK +. Su objetivo es ser útil para los administradores de sistemas y los viajeros que necesitan trabajar con muchas computadoras remotas frente a monitores grandes o netbooks pequeños. 

En la era actual, donde muchas personas deben trabajar de forma remota o al menos administrar servidores remotos, la seguridad de un programa como Remmina es fundamental. Incluso si no lo usa usted mismo, puede contribuir a Web of Trust comprobándolo para otros.

La pregunta es: ¿cómo sabe que una determinada versión de Remmina es buena y que el desarrollador original, o el servidor de distribución, no se ha visto comprometido?

Para este tutorial, usará Flatpak y el repositorio de Flathub . Flatpak es intencionalmente adecuado para realizar reconstrucciones verificables, que es uno de los principios de Web of Trust. 

Es más fácil trabajar con él, ya que no requiere que los usuarios descarguen paquetes de desarrollo independientes. Flatpak también utiliza técnicas para evitar la manipulación durante el vuelo, utilizando hashes para validar su estado de solo lectura. 

En lo que respecta a Web of Trust, Flatpak es el futuro.

Para esta guía, usa Remmina, pero esta guía generalmente se aplica a todas las aplicaciones que usa. 

Tampoco es exclusivo de Flatpak, y los pasos generales también se aplican a los repositorios de Fedora. 

De hecho, si actualmente está leyendo este artículo sobre Debian o Arch, aún puede seguir las instrucciones. 

Si desea seguir el uso de repositorios RPM tradicionales, asegúrese de consultar este artículo .

Instalación y comprobación

Para instalar Remmina, use el Centro de software o ejecute lo siguiente desde una terminal:

flatpak install flathub org.remmina.Remmina -y

Después de la instalación, encontrará los archivos en:

 /var/lib/flatpak/app/org.remmina.Remmina/current/active/files/

Abra una terminal aquí y busque los siguientes directorios usando ls -la :

total 44
drwxr-xr-x.  2 root root  4096 Jan  1  1970 bin
drwxr-xr-x.  3 root root  4096 Jan  1  1970 etc
drwxr-xr-x.  8 root root  4096 Jan  1  1970 lib
drwxr-xr-x.  2 root root  4096 Jan  1  1970 libexec
-rw-r--r--.  2 root root 18644 Aug 25 14:37 manifest.json
drwxr-xr-x.  2 root root  4096 Jan  1  1970 sbin
drwxr-xr-x. 15 root root  4096 Jan  1  1970 share

Obteniendo los hashes

En el directorio bin encontrará los principales binarios de la aplicación, y en lib encontrará todas las dependencias que utiliza Remmina. Ahora calcula un hash para ./bin/remmina :

sha256sum ./bin/*

Esto le dará una lista de números: sumas de comprobación. Cópielos a un archivo temporal, ya que esta es la versión actual de Remmina que Flathub está distribuyendo. 

Estos números tienen algo especial: solo una copia exacta de Remmina puede darte los mismos números. Cualquier cambio en el código, no importa cuán pequeño sea, producirá números diferentes.

Al igual que los servicios de compilación y actualización de Koji y Bodhi de Fedora, Flathub tiene todos sus servidores de compilación a la vista. 

En el caso de Flathub, mire Buildbot para ver quién es responsable de los binarios oficiales de un paquete. Aquí encontrará todos los registros, incluidas todas las compilaciones fallidas y su rastro en papel.

Obteniendo la fuente

El proyecto principal de Flathub está alojado en GitHub, donde las instrucciones de compilación exactas («manifiesto» en términos de Flatpak) son visibles para que todos las vean. 

Abra una nueva terminal en su carpeta de Inicio. Clone las instrucciones y los posibles submódulos, usando un comando:

git clone --recurse-submodules https://github.com/flathub/org.remmina.RemminaHerramientas de desarrollo

Herramientas de desarrollo

Comience instalando Flatpak Builder:

sudo dnf install flatpak-builder

Después de eso, deberá obtener el SDK correcto para reconstruir Remmina. En el manifiesto, encontrará que el SDK actual es.

    "runtime": "org.gnome.Platform",
    "runtime-version": "3.38",
    "sdk": "org.gnome.Sdk",
    "command": "remmina",

Esto indica que necesita el SDK de GNOME, que puede instalar con:

flatpak install org.gnome.Sdk // 3.38

Esto proporciona las últimas versiones de Free Desktop y GNOME SDK. También hay SDK adicionales para opciones adicionales, pero están más allá del alcance de este tutorial.

Generando tus propios hashes

Ahora que todo está configurado, compile su versión de Remmina ejecutando:

flatpak-builder build-dir org.remmina.Remmina.json --force-clean

Después de esto, su terminal imprimirá una gran cantidad de texto, sus fans comenzarán a girar y usted estará compilando Remmina. Si las cosas no van tan bien, consulte la documentación de Flatpak ; la resolución de problemas está más allá del alcance de este tutorial.

Una vez completado, debería tener el directorio. / build-dir / files / , que debe contener el mismo diseño que el anterior. Ahora el momento de la verdad: es el momento de generar los hashes para el proyecto construido:

sha256sum ./bin/*

Debería obtener exactamente los mismos números. Esto demuestra que la versión en Flathub es de hecho la versión que los desarrolladores y mantenedores de Remmina pretendían que ejecutara. Esto es genial, porque muestra que Flathub no se ha visto comprometido. La red de confianza es fuerte y tú la has mejorado un poco.

Profundizando

Pero, ¿qué pasa con el directorio ./lib/ ? ¿Y qué versión de Remmina compilaste realmente? Aquí es donde la Web of Trust comienza a ramificarse. Primero, también puede verificar los hash del directorio ./lib/ . Repita el comando sha256sum usando un directorio diferente.

Pero, ¿qué versión de Remmina compilaste? Bueno, eso está en el Manifiesto. En el archivo de texto encontrará (generalmente en la parte inferior) el repositorio de git y la rama que acaba de usar. En el momento de escribir este artículo, es decir:

    "type": "git",
    "url": "https://gitlab.com/Remmina/Remmina.git",
    "tag": "v1.4.8",
    "commit": "7ebc497062de66881b71bbe7f54dabfda0129ac2"

Aquí, puede decidir mirar el código Remmina en sí:

git clone --recurse-submodules https://gitlab.com/Remmina/Remmina.git 
cd ./Remmina 
git checkout tags/v1.4.8

Los dos últimos comandos son importantes, ya que garantizan que esté viendo la versión correcta de Remmina. Asegúrese de utilizar la etiqueta correspondiente del archivo de manifiesto. puedes ver todo lo que acabas de construir.

Y si…?

La pregunta en algunas mentes es: ¿qué pasa si los hashes no coinciden? Citando una novela famosa: «Don’t Panic». Hay varias razones legítimas por las que los hashes no coinciden.

Puede ser que no esté viendo la misma versión. Si siguió esta guía al pie de la letra, debería dar resultados coincidentes, pero los errores menores causarán resultados muy diferentes. Repita el proceso y pida ayuda si no está seguro de estar cometiendo errores. Quizás Remmina esté en proceso de actualización.

Pero si eso aún no justifica la falta de coincidencia en los hash, diríjase a los mantenedores de Remmina en Flathub y abra un problema. Asume buenas intenciones, pero podrías estar en algo que no es del todo correcto.

El problema ascendente más obvio es que Remmina aún no es compatible con compilaciones reproducibles. El código de Remmina debe escribirse de tal manera que, al repetir la misma acción dos veces, se obtenga el mismo resultado. Para los desarrolladores, hay una guía completa sobre cómo hacerlo. Si este es el caso, debería haber un problema en el rastreador de errores ascendente, y si no está allí, asegúrese de crear uno explicando sus pasos y el impacto.

Si todo lo demás falla, y usted ha informado en sentido ascendente sobre las discrepancias y ellos no saben qué está sucediendo, entonces es hora de enviar un correo electrónico a los administradores de Flathub y al desarrollador en cuestión.

Conclusión

En este punto, ha pasado por todo el proceso de validación de una sola pieza de una imagen más grande. Aquí, puede ramificarse en diferentes direcciones:

  • Pruebe otra aplicación de Flatpak que le guste o use regularmente
  • Prueba la versión RPM de Remmina
  • Sumérgete en el código C de Remmina
  • Relájese por un día sabiendo que Web of Trust es un esfuerzo colectivo

En el gran esquema de las cosas, todos podemos llevar una pequeña parte de responsabilidad en la Red de Confianza. Al tomar conceptos de software de código abierto libre / libre (FLOSS) y aplicarlos en el mundo real, puede protegerse a sí mismo y a los demás. Por último, pero no menos importante, al comprender cómo funciona Web of Trust, puede ver cómo el software FLOSS proporciona protecciones únicas.

error: