Cómo Verificar la Autenticidad del Software

Descargar software de Internet puede ser muy arriesgado si no tomas precauciones. Archivos modificados o maliciosos pueden comprometer tu seguridad. En este artículo, aprenderás a verificar la autenticidad e integridad de cualquier software usando la línea de comandos en macOS, Windows y Linux.

¿Por Qué Verificar el Software?

Antes de instalar cualquier programa, es esencial confirmar dos cosas:

  1. Integridad: Que el archivo no haya sido alterado durante la descarga.
  2. Autenticidad: Que fue creado por el desarrollador oficial y no por un tercero.

Para esto, se usan:

  • Checksums (Hashes): Como SHA-256 o MD5. Son «huellas digitales» únicas del archivo.
  • Firmas PGP/GPG: Cifrado asimétrico que valida la autoría.
  • Certificados de Código Firmado: En macOS y Windows, algunos programas incluyen firmas digitales integradas.

¿Qué es un Checksum o Hash?

Imagina que tienes un archivo, como un programa o un documento. Un checksum o hash es como una «huella digital» única de ese archivo. Es una cadena de caracteres (números y letras) que se genera a partir del contenido del archivo.

Si el archivo cambia incluso un solo bit (por ejemplo, si alguien lo modifica o si se corrompe durante la descarga), su checksum cambiará por completo.

Si el archivo es idéntico al original, su checksum será exactamente el mismo.

¿Para qué sirve?

El checksum se usa para:

Verificar la integridad: Asegurarte de que el archivo no ha sido alterado o dañado durante la descarga o transferencia.

Confirmar la autenticidad: Comparar el checksum con el valor proporcionado por el desarrollador para asegurarte de que el archivo es legítimo y no ha sido manipulado por terceros.

¿Cómo funciona?

El desarrollador crea el archivo y calcula su checksum usando un algoritmo (como SHA-256 o MD5).

Publica el archivo y su checksum en su sitio web oficial.

Tú descargas el archivo y calculas su checksum usando una herramienta (como sha256sum en Linux o CertUtil en Windows).

Comparas el checksum que calculaste con el que proporcionó el desarrollador.

  • Si coinciden: El archivo es auténtico y no ha sido modificado.
  • Si no coinciden: Algo está mal (el archivo está corrupto o ha sido alterado).

Ejemplo

Supongamos que tienes un archivo llamado foto.jpg. Su checksum (usando SHA-256) podría ser algo como esto:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6  

Si modificas la foto (por ejemplo, le añades un filtro), el checksum cambiará completamente:

z9y8x7w6v5u4t3s2r1q0p9o8n7m6l5k4j3i2h1g0f9e8d7c6b5a4  

Si el archivo es idéntico al original, el checksum será el mismo:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6  

Algoritmos Comunes de Checksum

  • SHA-256: Muy seguro y ampliamente usado. Genera un hash de 64 caracteres.
  • MD5: Menos seguro, pero aún útil para verificaciones rápidas. Genera un hash de 32 caracteres.

Herramientas Necesarias

Terminal o Línea de Comandos: Integrada en todos los sistemas operativos.

Sumas de Verificación (Checksums): Proporcionadas por el desarrollador en su sitio web oficial.

Clave Pública del Desarrollador: Para validar firmas GPG (opcional pero recomendado).

Verificación en macOS

1. Usando Checksums (SHA-256)

Comando:

shasum -a 256 /ruta/al/archivo.dmg

Salida esperada:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 /ruta/al/archivo.dmg 

Compara este valor con el checksum oficial proporcionado por el desarrollador. Si coinciden, el archivo es válido.

2. Verificación con Firma PGP

Instala GnuPG (si no lo tienes):

brew install gnupg

Importa la clave pública del desarrollador:

gpg --import clave_publica.asc

Comando para verificar:

gpg --verify firma.sig archivo.dmg

Salida esperada:

Firmado el [fecha] por [nombre del desarrollador] gpg: 
Firma correcta de [clave pública del desarrollador] 

Si aparece «Good signature», la firma es válida. Si ves «BAD signature», el archivo no es auténtico.

3. Verificación de Código Firmado

Comando:

sign --verify --verbose /ruta/a/la/aplicacion.app

Salida esperada:

/ruta/a/la/aplicacion.app: valid on disk 
/ruta/a/la/aplicacion.app: satisfies its Designated Requirement 

Si aparece «valid on disk», el código está correctamente firmado.


Verificación en Windows

1. Usando Checksums con PowerShell

Comando:

Get-FileHash -Algorithm SHA256 .\archivo.exe

Salida esperada:

SHA256  A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4Y5Z6 .\archivo.exe 

Compara el valor de Hash con el checksum oficial.

2. Verificación de Firma Digital Integrada

Pasos:

Haz clic derecho en el archivo .exe > Propiedades > pestaña Firmas digitales. Selecciona la firma y haz clic en Detalles.

Salida esperada: Debe aparecer un mensaje como «La firma digital es válida». El nombre del firmante debe coincidir con el desarrollador oficial.

3. Usando CertUtil (Alternativa)

Comando:

CertUtil -hashfile archivo.exe SHA256

Salida esperada:

SHA256 hash de archivo.exe: 
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 
CertUtil: -hashfile comando completado correctamente. 

Compara el hash con el valor oficial.


Verificación en Linux

1. Checksum con Terminal

Comando:

sha256sum archivo.tar.gz

Salida esperada:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 archivo.tar.gz 

Compara este valor con el checksum oficial.

2. Validación con GPG

Comando para verificar:

gpg --verify firma.sig archivo.tar.gz

Salida esperada:

gpg: Firmado el [fecha] por [nombre del desarrollador] 
gpg: Firma correcta de [clave pública del desarrollador] 

Si aparece «Good signature», la firma es válida. Si ves «BAD signature», el archivo no es auténtico.


Cómo Saber que el Proceso es Correcto

  1. Checksums: El valor generado debe coincidir exactamente con el proporcionado por el desarrollador.
  2. Firmas PGP/GPG: Debe aparecer «Good signature» y el nombre del firmante debe ser el del desarrollador.
  3. Código Firmado (macOS/Windows): Debe mostrar mensajes como «valid on disk» o «La firma digital es válida».

Diferencias entre verificar con Checksum, con Clave Pública del desarrollador o con Firma Digital Integrada

1. Verificación con Checksum (Hash)

Mira mas arriba para la explicación de lo que es el checksum o hash

Ventaja:

Es rápido y sencillo. Te asegura que el archivo no ha sido modificado o dañado.

Limitación:

No garantiza la autenticidad. Si un atacante modifica el archivo y también altera el checksum en el sitio web, no podrás detectar la manipulación. Dependes de que el sitio web del desarrollador no haya sido comprometido.

Resumen:

El checksum es útil para verificar la integridad, pero no para confirmar la autenticidad.


2. Verificación con Clave Pública del Desarrollador (PGP/GPG)

¿Qué es?

La clave pública del desarrollador es parte de un sistema de cifrado asimétrico (como PGP o GPG). El desarrollador firma el archivo con su clave privada, y tú usas su clave pública para verificar que la firma es auténtica.

¿Cómo funciona?

El desarrollador firma el archivo con su clave privada y publica la firma (archivo .sig o .asc) junto con su clave pública.

Tú importas la clave pública del desarrollador y usas una herramienta (como gpg) para verificar la firma.

Si la firma es válida, significa que el archivo fue creado por el desarrollador y no ha sido alterado.

Nivel de Seguridad

Ventaja:

Garantiza tanto la integridad como la autenticidad. Es mucho más seguro que un checksum, ya que un atacante no puede falsificar la firma sin acceso a la clave privada del desarrollador.

Limitación:

Requiere un poco más de esfuerzo (importar claves públicas, verificar firmas, etc.). Dependes de que la clave pública del desarrollador sea auténtica y no haya sido comprometida.

Resumen:

La verificación con clave pública es más segura porque garantiza que el archivo es auténtico y no ha sido manipulado.


¿Qué es la Verificación de Firma Digital Integrada?

Una firma digital integrada es un sello de seguridad que los desarrolladores agregan directamente a sus archivos ejecutables (como .exe en Windows o .app en macOS). Esta firma se crea usando un certificado digital emitido por una Autoridad de Certificación (CA) confiable.

  • En Windows: Los archivos .exe o .msi suelen incluir una firma digital.
  • En macOS: Las aplicaciones .app pueden estar firmadas con un certificado de desarrollador de Apple.

¿Cómo funciona?

El desarrollador obtiene un certificado digital de una Autoridad de Certificación (CA).

Usa su clave privada para firmar el archivo.

Cuando tú ejecutas o instalas el software, el sistema operativo verifica automáticamente la firma usando la clave pública del certificado.

Si la firma es válida, el sistema confirma que el archivo es auténtico y no ha sido alterado.

Nivel de Seguridad

Ventajas

Autenticidad: La firma digital garantiza que el archivo fue creado por el desarrollador oficial.

Integridad: Si el archivo ha sido modificado después de la firma, la verificación fallará.

Automatización: El sistema operativo verifica la firma automáticamente, sin necesidad de herramientas adicionales.

Confianza: Los certificados son emitidos por Autoridades de Certificación (CA) confiables, lo que añade una capa adicional de seguridad.

Limitaciones

Dependencia de la CA: Si la Autoridad de Certificación es comprometida, un atacante podría falsificar firmas.

No siempre está disponible: No todos los archivos tienen firma digital integrada, especialmente en software de código abierto o desarrollado por individuos.

Comparación de Seguridad

AspectoChecksumClave Pública (PGP/GPG)Firma Digital Integrada
IntegridadSí (verifica que el archivo no ha sido alterado).Sí (verifica que el archivo no ha sido alterado).Sí (verifica que el archivo no ha sido alterado).
AutenticidadNo (no garantiza quién creó el archivo).Sí (garantiza que el archivo fue creado por el desarrollador).Sí (garantiza que el archivo fue creado por el desarrollador).
Facilidad de usoMuy fácil (solo comparar valores).Requiere más pasos (importar claves, verificar firmas).Automático (el sistema operativo lo hace por ti).
Resistencia a ataquesBaja (un atacante puede modificar el archivo y el checksum).Alta (un atacante no puede falsificar la firma sin la clave privada).Alta (depende de la seguridad de la Autoridad de Certificación).
RequerimientosSolo necesitas el checksum oficial.Necesitas la clave pública del desarrollador.Necesitas un certificado digital emitido por una CA.

¿Cuándo usar cada método?

Checksum: Para verificación rápida y sencilla. Cuando no hay firma digital o clave pública disponible.

Clave Pública (PGP/GPG): Cuando necesitas máxima seguridad y el desarrollador proporciona firmas PGP. Para software de código abierto o desarrollado por comunidades.

Firma Digital Integrada: Cuando el software proviene de empresas o desarrolladores que usan certificados digitales. Para software comercial o distribuido en plataformas oficiales (como Microsoft Store o Apple App Store).