¿Por qué deberías firmar tus commits?
Git es una parte fundamental para el workflow de un desarrollador. Lo utilizamos para todo tipo de proyectos; pequeños, grandes, en grupo y personales. Pienso que no es una exageración decir que git es una de las tecnologías más importantes para el desarrollo de software en la actualidad.
A todo esto, un día estaba realizando un trabajo universitario y decidí investigar si era posible fingir que ellos hicieron mis commits. No me pareció como que fuera algo imposible, al final de cuentas, no es difícil mentir en la fecha de un commit, ¿por qué no podrías mentir con el autor también? Al final de cuentas, git es únicamente un software para historial de versiones; va más allá de sus objetivos verificar la identidad de cada persona.
Después de una búsqueda de no más de 5 minutos, logré cambiar el nombre y correo de mis commits. No solo fue fácil, fue incómodamente fácil. Únicamente tuve que correr dos comandos, y ya. Si yo pude hacerlo para un proyecto universitario, ¿qué evita que alguien lo haga con fines maliciosos?
Claramente, me pareció que debía haber algún método para garantizar la identidad del autor de un commit. Después de investigar un poco, descubrí que la estrategía más común para esto es una firma electrónica; específicamente, utilizando GPG.
Gnu Privacy Guard
GNU Privacy Guard (GPG) es una herramienta de línea de comando de código abierto para criptografía. En muchas distribuciones de Linux, GPG ya viene instalado en tu sistema operativo. Aunque algunas distribuciones optan por usar GPG2.
En el caso de Windows, vas a tener que descargar Gpg4Win. Siendo totalmente honesto, el sitio se oficial me pareció bastante sospechoso para una de las librerías criptográficas más importantes. Aunque, si de verdad no quieres descargar Gpg4Win, podrías utilizar GPG regular a través de WSL. Pero eso ya es un tema aparte.
Algo importante de mencionar es que GPG utiliza un cifrado asimétrico. Esto quiere decir que por cada llave va a generar una llave pública y una clave privada. Como puedes imaginarte por el nombre, nadie más que tú debe tener acceso a la llave privada. La llave pública solo sirve para verificar si la firma es válida.
Configurar Git y Github
Una vez hayas generado una nueva llave GPG, deberás decirle a git que firme todos los nuevos commits con tu llave. También deberás ir a la página de Github y colocar tu llave pública en la parte de perfil → seguridad.
Ahora, cada vez que hagas un commit, Github va a verificar si tu commit está firmado. Si está firmado, revisará si el correo que acompaña a la firma es el mismo que el que tiene registrado Github.
Como bonus, si tienes un proyecto importante, puedes cambiar la configuración del repositorio para bloquear todos los commits que no tengan una firma válida.
- Oz
No hay comentarios: