Cómo verificar el APK de F-Droid utilizando PGP en Windows

F-Droid es un catálogo instalable de software libre para Android, para poder utilizarlo generalmente se hace a través del cliente F-Droid: una aplicación para Android que te permite buscar e instalar aplicaciones disponibles en los repositorios F-Droid. Todas las aplicaciones disponibles en los repositorios F-Droid son compiladas (y firmadas) a partir de su código fuente por los colaboradores de F-Droid.

Para instalar el cliente F-Droid en tu teléfono Android, tienes que descargar el archivo F-Droid.apk disponible en la página principal de F-Droid. Además del archivo F-Droid.apk, también puedes descargar la firma PGP que se puede utilizar para verificar que el archivo F-Droid.apk que descargaste ha sido creado por los administradores de F-Droid y no por alguien que esté intentando hacerse pasar por ellos:

Para la mayoría de personas, basta con descargar el archivo APK del sitio y proceder a instalarlo en sus teléfonos. Si quieres validar el APK que descargaste con la firma provista por los administradores de F-Droid y utilizas una computadora con sistema operativo Windows, sigue leyendo para ver cómo lo puedes hacer utilizando GnuPG.

Paso 1. Descarga F-Droid.apk y F-Droid.apk.asc

Ve al sitio web de https://f-droid.org y descarga el cliente (F-Droid.apk) y su firma PGP (F-Droid.apk.asc).

Paso 2. Instala Gpg4win

GPG (GnuPG) es una implementación libre del estándar OpenPGP (también conocido solo como PGP), y es la más comúnmente utilizada por quienes utilizan PGP para encriptar y firmar su información. GPG está disponible en prácticamente todos los sistemas Linux, ya sea instalada por defecto o instalable desde los repositorios principales de la distribución Linux que corresponda. Para Windows, hay un paquete que contiene GnuPG y algunas otras herramientas muy útiles: Gpg4Win, ve al sitio web gpg4win.org, descarga Gpg4win (al momento de escribir este documento la versión más disponible es 3.1.15) y ejecuta el instalador.
Durante la instalación, se te presentará una ventana en la que puedes elegir los componentes a instalar, así es como se muestra en mi equipo:

Yo decidí dejarla tal cual y continuar, solo asegúrate de que tengas seleccionados Kleopatra y GpgEX, ya que los usaremos en los siguientes pasos (si prefieres realizar el proceso por línea de comandos, no requieres las herramientas extra, ve a la sección Verificación desde línea de comandos para ver cómo).

Paso 3. Primer intento de verificación

Abre el Explorador de archivos y dirígete a la carpeta en donde tienes los archivos del cliente F-Droid y la firma. Haz clic derecho en el archivo F-Droid.apk.asc, si instalaste el componente GpgEX de Gpg4Win encontrarás un nuevo grupo de comandos “Más opciones de GpgEX”, dentro de este busca la opción “Verificar” y haz clic sobre ella:

Espera algunos segundos y deberá aparecer una ventana como esta:

La leyenda en negritas No se ha podido verificar los datos. nos indica que no se ha podido validar que la firma F-Droid.apk.asc corresponda al archivo F-Droid.apk, revisando el resto del texto tenemos la indicación “Con certificado no disponible”, esto es, no se pudo verificar porque en nuestro sistema no contamos con la llave pública de quien firmó el archivo, para poder validar debemos contar con ella. Continuemos.

Paso 4. Importar la llave PGP pública de F-Droid y verificar nuevamente

La llave pública de F-Droid es distribuida a través de servidores de claves, que es la forma estándar de distribuir llaves públicas. En el caso de F-Droid, se publica al servidor de claves de Ubuntu: keyserver.ubuntu.com.

Para agregar la llave pública de F-Droid haremos uso de Kleopatra, otro de los componentes instalados con Gpg4win. En la ventana en que obtuvmios el resultado de la verificación, tenemos dos botones: “Importar” y “Buscar”, el botón “Buscar” inicia una búsqueda de la llave pública en el servidor de claves configurado en Kleopatra mediante el id que contiene la firma F-Droid.apk.asc, esta llave está disponible en el servidor que Kleopatra tiene configurado por defecto, así que al realizar la búsqueda este sería el resultado:

En esta ventana encontramos en la parte inferior el botón “Importar”, que nos permite importar la llave pública encontrada en el servidor de claves a nuestra máquina. Al ser la única clave encontrada podemos importarla, pero si queremos realizar una inspección adicional, podemos poner atención al ID de la clave y también revisar más información haciendo clic en el botón “Detalles…”, luego compararla con la información sobre canales de liberación y llaves de firma de F-Droid en https://f-droid.org/en/docs/Release_Channels_and_Signing_Keys/

Una vez que hayamos revisado los detalles, podemos hacer clic en “Importar” para agregar la llave pública a nuestro sistema, al terminar la importación, Kleopatra nos indica que para marcar la llave pública importada (certificado) como válida, necesitamos certificarla, vamos a omitir el proceso de certificación y hacer clic en No.

Paso 5. Segundo intento de verificación

Al cancelar el proceso de certificación, se mostrará nuevamente la ventana “Verificar archivos”, ahora de esta forma::

Hagamos clic en el enlace “Mostrar registro de auditoría” para ver más detalles, y después procedamos a comentar sobre la información que aparece en la ventana de verificación:

El mensaje “Firma correcta de F-Droid <admin@f-droid.org>” nos indica que la firma F-Droid.apk.asc en efecto fue creada con la llave (privada) que corresponde a la que importamos (pública). El contenido de esta ventana “Visor del registro de auditoría de GnuPG” es lo que veríamos si ejecutáramos la misma verificación en línea de comandos con GPG. En la ventana anterior “Verificar archivos” de Kleopatra, la misma indicación se da en el texto “Firma creada en viernes… Con certificado: F-Droid <admin@f-droid.org>(41E7 044E 1DBA 2E89)”.
Pero también, Kleopatra nos muestra en negritas el texto No se han podido verificar los datos. y en la parte inferior la razón “La clave empleada no está certificada por usted o por una persona confiable.”, esto último se debe a que la llave pública que descargamos, es tal cual la creada por los administradores de F-Droid y ninguna otra persona o entidad le ha agregado su firma. Esto no significa que el archivo haya sido alterado, sino que la llave pública no cuenta con la aprobación de alguien más.

En este punto ya podemos estar seguros que el archivo F-Droid.apk que descargamos fue creado por los administradores de F-Droid o al menos por quien subió la llave pública que importamos. Así que podemos proceder a instalar el APK con confianza.

Comentarios extra

En esta sección encontrarás información adicional: cómo realizar la verificación desde una terminal o línea de comandos en lugar de hacerlo vía interfaz gráfica, y cómo firmar la llave pública de F-Droid con una llave creada por ti para facilitar la verificación.

Verificación desde línea de comandos

Al instalar Gpg4win, también tenemos disponible la herramienta gpg de línea de comandos, por lo podemos ejecutar la verificación desde PowerShell mediante los siguientes comandos estando en la carpeta donde descargamos el APK y la firma:

Verificar:
gpg --verify F-Droid.apk.asc

Buscar la llave pública correspondiente a admin@f-droid.org:
gpg --search-keys admin@f-droid.org

También podemos hacer la búsqueda por el ID 802A9799016112346E1FEFF47A029E54DD5DCE7A como lo hicimos con la interfaz gráfica de Kleopatra en los pasos anteriores. Este comando nos mostrará si encontró una o más firmas correspondientes al texto buscado (en este caso el correo de admin@f-droid.org), y nos permitirá importar la que indiquemos.

En la siguiente captura se puede apreciar la ejecución en PowerShell de la verificación antes de tener la llave pública, después la búsqueda e importación de la llave pública y nuevamente la verificación ya exitosa (el mismo texto que Kleopatra nos mostró en la ventana “Visor del registro de auditoría de GnuPG”:

Marcar llave pública de F-Droid como certificada

Un paso adicional que nos ofreció Kleopatra después de importar la llave pública de F-Droid: la certificación de la llave, nos permite que Kleopatra muestre la verificación en color verde y sea muy claro que la verificación fue correcta. El hacer este paso no tiene ninguna diferencia contra los anteriores al nivel de verificar que la firma fue creada por la llave pública que importamos, por ello anteriormente no lo hicimos y aún así comentamos que podíamos instalar el APK pues ya tenemos la confianza de que fue creado por los administradores de F-Droid. Sin embargo, a nivel de interfaz para el usuario, es más fácil distinguir de forma visual una indicación más clara de que la firma corresponde, puede ser útil por ejemplo si tenemos que verificar muchos archivos que han sido firmados por la misma persona. Repito, esto no es necesario para confirmar que el archivo F-Droid.apk fue creado por los administradores de F-Droid, es más para una indicación visual más rápida.

Crear un par de llaves

En Kleopatra, haz clic en el menú “Archivo” y luego en “Nuevo par de claves”:

Seleccionamos la opción “Crear un par de claves personales OpenGPG”:

Voy a crear un par de claves con valores de ejemplo con configuración por defecto, no usaré frase de contraseña por ser un ejemplo:

Clic en el botón “Crear”, después de unos segundos aparecerá esta ventana, indicando que ya creamos el par de claves (privada y pública) de forma exitosa, y nos muestra la huella digital:

Firmar llave pública de F-Droid con nuestro par de llaves

De vuelta en Kleopatra, ahora tenemos dos certificados: el de F-Droid y el que acabamos de crear de ejemplo, este último aparece en negritas con la indicación de que está certificado. Lo que haremos será firmar la llave pública de F-Droid con la llave de ejemplo que acabamos de crear. Clic derecho sobre el registro de F-Droid y seleccionamos la opción “Certificar…”:

En la siguiente ventana en la opción “Certificar con” seleccionamos nuestro certificado de ejemplo y nos aseguramos de que la opción F-Droid esté marcada, hacemos clic en “Certificado”:

Al finalizar, el registro F-Droid cambiará a “certificado”:

Verificar F-Droid.apk con la firma F-Droid.apk.asc después de firmar la llave pública de F-Droid

Vayamos de nuevo a nuestro Explorador de archivos, y repitamos el proceso de verificación con el archivo F-Droid.apk.asc, ahora el resultado debería mostrarse de esta forma:

Repito, esto es solo para una ayuda que puede ser útil en caso de que necesitemos realizar verificaciones de varios documentos que hayan sido firmados por una misma persona, el que firmemos su llave pública con nuestra llave nos permite indicar que confiamos en su certificado, esta confianza es algo que ya estamos haciendo al importar la llave a nuestro sistema, el paso de la firma nos permite que sea más claro y, como hemos comentado, puede ser una ayuda visual para identificar muy rápido la verificación. También puede ser útil si ya usamos PGP con alguna otra persona de confianza con quien intercambiamos claves, podemos exportar la llave pública de F-Droid firmada por nosotros y compartírsela, esa otra persona puede hacer el mismo proceso de verificación que describimos al inicio de este artículo, pero en su caso la llave pública de F-Droid también estará firmada por alguien que conoce y en quien confía (nosotros), lo cual también puede validar si cuenta con nuestra llave pública (cadena de confianza o “chain of trust”).
Insisto, hacer este paso no significa una diferencia en cuanto a la validación de si el archivo F-Droid.apk fue creado por los administradores de F-Droid, eso ya lo validamos con anterioridad.

Más información sobre PGP

Algunos sitios en los que puedes encontrar más información sobre PGP:
Manual de GPG: cifra, firma y envía datos de forma segura
Información sobre medios de publicación/liberación y llaves de firmado de F-Droid

1 comentario

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*