Комментарий Обсидиана является точечным: имя каждого объекта Git равно хэш-идентификатору содержимого объекта, поэтому все, что использует этот идентификатор для поиска и чтения содержимогоможет и обычно проверяет, совпадает ли хеш извлеченных данных с идентификатором, используемым в качестве ключа для извлечения этих данных.
Дополнительная проверка - проверка того, что подпись GPG в теге или фиксации - выполняется только тогда, когдаВы специально запрашиваете это.Вы можете запросить git log
проверить такие подписи по умолчанию, используя настройку конфигурации log.showSignature
.
Обратите внимание, что целостность любого узла в дереве Меркле зависит от того, доверяете ли вы ранееузлы против второстепенных атак.Если вы используете теги, подписанные GPG, подписи в этих тегах защищают данные каждого тега (в какой степени вы доверяете самой GPG), а затем тег защищает его объект фиксации (в какой бы степени вы не доверяли SHA-1).Объект фиксации, в свою очередь, защищает свое дерево, которое защищает его поддеревья и BLOB-объекты, а хэши BLOB-объектов защищают их содержимое.Поэтому вам следует провести другой анализ, если вас интересуют второстепенные атаки.Если вы просто обеспокоены случайным повреждением данных (как видно на вращающихся носителях и / или не-ECC памяти), вы можете просто использовать хэш SHA-1 напрямую, как это делает Git.