Об этом проекте

git-crypt — это инструмент командной строки, обеспечивающий прозрачное шифрование и дешифрование файлов в git-репозитории. Файлы, предназначенные для защиты, автоматически шифруются при коммите и расшифровываются при checkout, что позволяет командам обмениваться репозиториями, содержащими как открытый, так и закрытый контент, не блокируя весь репозиторий. Основные возможности: - Прозрачное шифрование и дешифрование через git-фильтры, поэтому после начальной настройки пользователи могут работать с git как обычно. - AES-256 в режиме CTR с синтетическим вектором инициализации (IV), получаемым из SHA-1 HMAC файла, что обеспечивает семантическую безопасность при детерминированной атаке с выбранным открытым текстом. - Обмен ключами на основе GPG для совместной работы нескольких пользователей; открытые ключи добавляются через git-crypt add-gpg-user. - Экспорт симметричного ключа для безопасного распространения ключей без необходимости в GPG. - Плавная деградация: разработчики без секретного ключа могут клонировать репозиторий и выполнять коммиты. Настройка выполняется через файл .gitattributes, который определяет, какие файлы или шаблоны должны быть зашифрованы. Формат шаблонов аналогичен .gitignore и поддерживает подстановочные знаки и шаблоны каталогов. Сам файл .gitattributes не должен быть зашифрован, и правила должны быть заданы до добавления конфиденциальных файлов. Вопросы безопасности: git-crypt безопаснее других прозрачных систем шифрования git, которые используют ECB или CBC с фиксированным IV. Однако он не шифрует имена файлов, сообщения коммитов, цели символьных ссылок и другие метаданные. Он не скрывает факт изменения файла, его длину или то, что два файла идентичны. Также он не поддерживает отзыв доступа к зашифрованному репозиторию, который был предоставлен ранее, поскольку это по своей сути сложно в контексте исторических данных. Ограничения включают: не подходит для шифрования большинства или всех файлов в репозитории (лучше подходит для выборочного шифрования нескольких конфиденциальных файлов, таких как закрытые ключи или учётные данные API); зашифрованные файлы не сжимаются, поэтому даже небольшие изменения требуют хранения всего файла; также может ненадёжно работать с некоторыми сторонними git-GUI, такими как Atlassian SourceTree и GitHub для Mac. Файлы, зашифрованные с помощью git-crypt, нельзя пропатчить с помощью git-apply, если сам патч не зашифрован. Последняя версия — 0.8.0, выпущена 23 сентября 2025 года. Проект стремится быть безошибочным и надёжным, но ещё не достиг полной зрелости; до версии 1.0 могут быть внесены обратно несовместимые изменения.