Ktoś więc ocenił moją pracę i powiedział mi, że zawsze powinienem podpisywać swoje zobowiązania i tagi kryptograficznie. Zapytany dlaczego nie wiedział, jak mi to wyjaśnić, i powiedział: „To po prostu dobra rzecz”.
Starając się unikać oczywistego scenariusza szympansa , dlaczego tak naprawdę powinienem? Czy naprawdę jest tak wiele wyraźnych zalet i żadnych wad?
Jakie są praktyczne powody, dla których chciałbym podpisywać każde zatwierdzenie i tag, który zrobię?
git
cryptography
Madara Uchiha
źródło
źródło
Odpowiedzi:
(Jest to w dużej mierze oparte na A Git Horror Story: Integrity Repository With Signed Commits - bardzo dobra lektura i więcej informacji niż mogłem udzielić odpowiedzi).
Istnieje wiele sposobów na skompromitowanie repozytorium git (nie jest to usterka bezpieczeństwa, tylko fakt życia - z tego powodu nie należy unikać używania git). Na przykład ktoś mógł przepchnąć Twoje repozytorium podając się za Ciebie. Lub, jeśli o to chodzi, ktoś mógł przepchnąć się do czyjegoś repozytorium, podając się za ciebie (ktoś mógłby naciskać na swoje własne repozytorium, podając się za ciebie). To tylko część życia w DVCS.
Jako przykład:
Tam zmieniłem konfigurację gita, żeby udawać, że jestem tobą. A teraz mogę oddać i pozwolić tym zatwierdzeniom jakoś wkroczyć do kompilacji produkcyjnej, i wygląda na to, że to zrobiłeś.
Dzięki podpisywaniu zatwierdzeń (i znaczników) można udowodnić, że niektóre zatwierdzenia i znaczniki były od ciebie (a rzeczy, które nie są podpisane, nie powinny były zostać wprowadzone do wersji produkcyjnej). To naprawdę klucz do tego wszystkiego - podpisując zobowiązania, które powiedziałeś, że to twoja praca.
Aspekt „twojej pracy” jest szczególnie ważny w jądrze Linuksa (a tym samym git), który czasami trafia w procesy o prawa autorskie. Podpisując zobowiązania, mówisz, że masz prawo do oprogramowania - śledzi ono pochodzenie. Możliwe, że nie masz dostępu do źródła, które jest przedmiotem roszczenia z tytułu praw autorskich, a roszczenie jest bezpodstawne. Być może firma zapomniała, że pracujesz dla nich kilka lat temu i pod ich kierownictwem dodała materiał do jądra, czy cokolwiek innego.
Trwa debata, czy każde zatwierdzenie powinno być podpisane. Od podpisania GPG dla git commit? (jeszcze w '09) Linus napisał:
Tam też można przeczytać o wiele więcej na temat myśli na temat logowania się w git.
To powiedziawszy, i tak trafiło do gita.
Wydaje się, że istnieje większość zgodności co do tego, że podpisywanie zatwierdzeń jest niepotrzebne, ale znaczniki podpisywania są bardzo dobre. Ten post na blogu umieszczony na górze sugeruje, że i tak należy wszystko podpisać. Jak powiedziałem, trwa debata na temat tego, czy każde zatwierdzenie jest konieczne, czy nie.
Klucz do debaty „podpisuj każde zatwierdzenie” prawdopodobnie wiąże się z używanym przepływem pracy. Większość ludzi dokonuje wielu zatwierdzeń w lokalnym repozytorium, a następnie wypycha ten zestaw. Powinno wystarczyć otagowanie końcowej kolekcji (przy założeniu, że upewnisz się, że wszystkie zmiany są prawidłowe). Jeśli pracujesz w środowisku, w którym porusza się wiele pojedynczych zatwierdzeń, rozróżnienie między tagiem a zatwierdzeniem staje się mniej… wyraźne - a zatwierdzanie podpisów może stać się bardziej przydatne.
źródło
commit.gpgsign = true
i nie mogę stwierdzić żadnych wad. Choć może to być głupie, nie wydaje się zbyt drogie.