Доступен выпуск проекта gittuf 0.4, развивающего иерархическую систему верификации содержимого репозиториев Git, позволяющую минимизировать риски в ситуации компрометации отдельных разработчиков, имеющих доступ к репозиторию. Gittuf предоставляет дополнительный слой безопасности к Git и набор утилит для управления ключами всех разработчиков, имеющих доступ к репозиторию, и расстановки правил доступа к веткам, тегам и отдельным файлам. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0. Проект находится на стадии активного развития и имеет качество альфа-выпуска, подходящего для экспериментов, но пока не готового для рабочих внедрений.
Информация и артефакты, обеспечивающие дополнительную верификацию вносимых изменений, хранятся в хранилище объектов Git в отдельном специфичном для gittuf пространстве имён, что позволяет сохранить обратную совместимость с имеющимися инструментами и сервисами, включая GitHub и GitLab. При использовании инструментов без поддержки gittuf, репозиторий остаётся полностью доступен, но ограничена возможность расширенной верификации его целостности. Архитектура gittuf базируется на проверенных элементах фреймворка TUF (The Update Framework), применяемого для защиты процессов формирования обновлений в таких проектах, как Docker, Fuchsia, AGL (Automotive Grade Linux) и PyPI.
Модель верификации в gittuf основана на применении иерархической системы распространения доверия. Корень доверия (root of trust) принадлежит владельцу репозитория, который может генерировать ключи для участников разработки и определять правила, в соответствии с которыми созданные ключи могут применяться. Gittuf позволяет создавать гибкие гранулированные правила, определяющие полномочия каждого разработчика и область репозитория, в которой он имеет возможность вносить изменения. Например, разработчик может быть авторизован для создания тегов, внесения изменений в определённые ветки или изменения только отдельных файлов в репозитории.
Разработчики и вносимые ими изменения идентифицируются по ключам и цифровым подписям. Gittuf позволяет генерировать новые ключи, безопасно распространять ключи, осуществлять периодическую ротацию ключей, отзывать скомпрометированные ключи, управлять списками доступа (ACL) и пространствами имён в Git-репозиториях. Gittuf также выполняет ведение эталонного лога всех изменений (RSL – Reference State Log), целостность которого и защита от искажения задним числом в котором обеспечивается при помощи древовидной структуры “дерево Меркла” (Merkle Tree), в которой каждая ветка верифицирует все нижележащие ветки и узлы благодаря совместному (древовидному) хешированию (имея конечный хеш, пользователь может удостовериться в корректности всей истории операций, а также в корректности прошлых состояний).
Для верификации цифровых подписей коммитов и тегов владелец репозитория формирует и распространяет открытые ключи, которые напрямую ассоциированы с репозиторием. Для противодействия продвижению злоумышленниками изменений, созданных после получения доступа к ключам для формирования цифровых подписей отдельных разработчиков, применяются механизмы отзыва и замены ключей. Применяемые для верификации ключи имеют ограниченное время жизни и требуют постоянного обновления для защиты от формирования подписи старыми ключами.