Entonces, alguien revisó mi trabajo y me dijo que siempre debería firmar mis confirmaciones y etiquetas criptográficamente. Cuando se le preguntó por qué, no sabía cómo explicármelo y dijo: "Es algo bueno".
Tratando de evitar un escenario obvio de chimpancés , ¿por qué debería realmente? ¿Existen realmente tantas ventajas distintas y ninguna desventaja?
¿Cuáles son las razones prácticas que me harían querer firmar cada compromiso y etiqueta que hago?
git
cryptography
Madara Uchiha
fuente
fuente
Respuestas:
(Esto se basa en gran medida en A Git Horror Story: Integridad del repositorio con compromisos firmados, una muy buena lectura y más información de la que podría dar en una respuesta).
Hay varias formas en que un repositorio de git puede verse comprometido (esto no es una falla de seguridad, solo es un hecho de la vida; uno no debe evitar usar git debido a esto). Por ejemplo, alguien puede haber empujado a su repositorio afirmando ser usted. O, para el caso, alguien podría haber ingresado en el repositorio de otra persona afirmando ser usted (alguien podría empujar a su propio repositorio afirmando ser usted también). Esto es solo parte de la vida en un DVCS.
Solo como ejemplo:
Allí, he cambiado mi configuración de git para fingir que soy tú. Y ahora puedo comprometerme y dejar que esos compromisos de alguna manera lleguen a la compilación de producción, y parece que lo has hecho.
Con la firma de las confirmaciones (y etiquetas), se puede demostrar que ciertas confirmaciones y etiquetas fueron de usted (y las cosas que no están firmadas no deberían haber llegado a la compilación de producción). Esa es realmente la clave de todo: al firmar los compromisos, usted ha dicho que es su trabajo.
El aspecto "su trabajo" es particularmente importante en el kernel de Linux (y, por lo tanto, en git) que ocasionalmente se ve afectado por demandas de derechos de autor. Al firmar confirmaciones, usted dice que tiene derecho al software: rastrea el origen. Es posible que no tenga acceso a la fuente que se reclama como copyright y el reclamo no tiene fundamento. Puede ser que la compañía olvidó que usted trabajaba para ellos hace unos años y, bajo su dirección, agregó material al núcleo, o lo que sea.
Existe cierto debate sobre si cada compromiso debe firmarse. ¿De GPG firmando para git commit? (en el '09), Linus escribió:
También se puede leer mucho más sobre los pensamientos sobre iniciar sesión en git.
Dicho esto, se abrió paso en git de todos modos.
Parece haber un consenso mayoritario de que firmar confirmaciones es innecesario, pero firmar etiquetas es muy bueno. Esa publicación de blog vinculada en la parte superior sugiere que uno debe firmar todo de todos modos. Como dije, hay un debate sobre si cada commit es necesario o no.
La clave para el debate "firmar cada confirmación" probablemente tenga que ver con el flujo de trabajo que utiliza. La mayoría de las personas hacen un montón de confirmaciones en su repositorio local, y luego empujan ese conjunto. Debería ser suficiente etiquetar la colección final (suponiendo, es decir, asegurarse de que todos los cambios sean correctos). Si está trabajando en un entorno donde se están moviendo muchas confirmaciones individuales, la distinción entre una etiqueta y una confirmación se vuelve menos ... distinta, y la firma de confirmaciones puede ser más útil.
fuente
commit.gpgsign = true
y no puedo determinar desventajas. Si bien puede ser una tontería, no parece ser demasiado costoso.