Los proyectos de Go pueden ser compilados desde cualquier plataforma. Por ello no es raro que algunas aplicaciones se puedan descargar directamente como binarios (compilados). Esta es la forma mas sencilla de distribuir una aplicación, ya que solo requiere que se descargue y ejecute.
Uno de los argumentos en contra de la descarga de aplicaciones binarias, es que puede descargarse y ejecutarse un archivo que en realidad no es el que intentamos realizar, o que la descarga ha sido interceptada y reemplazada por un tercero, lo cual podría tener un efecto muy dañino en nuestro equipo.
Una forma en la cual podemos comprobar que el archivo que hemos descargado no ha sido alterado es verificar su firma (sha1), es decir un string que es único en relación a la estructura del compilado. Si este se altera de alguna forma, la firma sera alterada también.
¿Cómo generar una firma sha1 de un archivo compilado en Go?
Compila un archivo de Go.
$ go build main.go
Genera la firma.
$ sha1sum main
564c7c7750356166a98d0a6ed5d92d290e64f72f
Esto generara un string que corresponde a la firma del programa. En un escenario donde se publique este programa para ser descargado, hay que publicar tanto el programa como el string que corresponde a la firma. De forma que cuando alguien lo descargue pueda verificar dicha firma.
El “checksum” o “fingerprint” o “firma” que acabamos de verificar, es un proceso que se realiza no solo con aplicaciones creadas en Go, sino cualquier tipo de archivo que descarguemos de Internet del cual tengamos dicha firma para realizar la comparación.