Por qué importa
Los binarios de wallets se distribuyen estáticamente desde el proyecto (releases de GitHub, sitio oficial, mirrors). Cada uno de esos puntos de distribución es un objetivo. Compromiso de CDN, hijack de DNS y (en ciertas jurisdicciones) firma forzada ya se observaron en la práctica. La defensa es verificar el binario contra una firma que confíes por separado — típicamente una clave GPG controlada por el maintainer del proyecto.
Comprobación mínima (cualquier wallet)
- Descargá el binario junto con el
SHA256SUMSohashes.txtque el proyecto publica al lado. - Calculá el hash local:
sha256sum monero-wallet-cli(Linux/macOS) oGet-FileHash(PowerShell). - Compará tu hash local contra la línea del archivo publicado. Coincidencia = el archivo es bit-idéntico al que publicó el proyecto.
Esto detecta tampering del CDN y corrupción en tránsito. No detecta una clave de proyecto comprometida — para eso, paso 2.
Verificación de firma GPG (la defensa real)
- Importá la clave GPG del maintainer desde una fuente distinta a la descarga — keyserver, sitio personal del maintainer, o un fingerprint publicado en un commit de hace años. No la importes desde el mismo dominio que sirvió el binario.
- Verificá la firma del SHA256SUMS:
gpg --verify SHA256SUMS.sig SHA256SUMS. Buscá "Good signature from <maintainer>" y el fingerprint esperado. - Verificá la cadena de confianza: chequeá que usaste ese fingerprint para releases anteriores. Firmas de web-of-trust de gente que conocés realmente lo fortalecen.
- Ahora hacé el chequeo de hash del paso 1.
Builds reproducibles — el estándar oro
Algunos proyectos del ecosistema Monero (el propio Monero CLI, Feather Wallet) publican instrucciones de build reproducible. Compilás el código en tu máquina y el binario resultante es byte-idéntico al que entregó el proyecto. Si el tuyo no coincide, o tu entorno de build está mal, o la release del proyecto fue manipulada. Es la defensa más rigurosa — ver reproducible-builds.org.
Modos de fallo por wallet
- Wallets mobile: la firma del app-store reemplaza a GPG. Estás confiando en Apple/Google + la cuenta de developer del publisher. Menos riguroso pero significativo. Cross-checkeá que el nombre de la cuenta publisher coincide con lo que el proyecto documenta.
- Wallets web: no se pueden verificar — el código se entrega fresco en cada page-load. No uses wallets web para montos que te dolerían perder.
- Descargas "portátiles" vía Telegram / Discord: nunca. Los binarios se bajan del dominio canónico del proyecto, no de un link de chat.
- Pre-compilados en un repo "de conveniencia": si el dueño del repo no publica firmas él mismo, tratalo como no verificado y re-bajá desde la fuente canónica.
Estado de las wallets que recomendamos
- Monero GUI / CLI: SHA256SUMS + GPG firmado por binaryFate (fingerprint de larga data). Build reproducible documentado.
- Feather Wallet: SHA256SUMS + GPG firmado por tobtoht. Build reproducible documentado.
- Cake Wallet: mobile, depende de la firma del app-store. Builds desktop traen checksums.
- Monerujo: Android, F-Droid + Play Store, los dos firmados. SHA256 del APK publicado.