Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
git-crypt — Прозрачное шифрование файлов в git | Kitploit
Инструменты/GitHubGitHub/agwa/git-crypt
Аутентификация и авторизацияИнструменты шифрования/дешифрованияЭксфильтрация данныхКриптографияОбнаружение СекретовБезопасность Цепочки Поставок
GitHubagwa/git-crypt

git-crypt

Прозрачное шифрование файлов в git

Репозиторий
9.8k5381111 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

git-crypt — прозрачное шифрование файлов в git

git-crypt обеспечивает прозрачное шифрование и дешифрование файлов в репозитории git. Файлы, которые вы решите защитить, шифруются при коммите и дешифруются при checkout. git-crypt позволяет свободно делиться репозиторием, содержащим как публичный, так и приватный контент. git-crypt корректно деградирует: разработчики без секретного ключа могут по-прежнему клонировать репозиторий и делать коммиты, даже если в нём есть зашифрованные файлы. Это позволяет хранить секретные материалы (например, ключи или пароли) в том же репозитории, что и код, не блокируя весь репозиторий.

git-crypt написан Эндрю Айером ([email protected]).
Дополнительная информация: https://www.agwa.name/projects/git-crypt.

Сборка git-crypt

См. файл INSTALL.md.

Использование git-crypt

Настройте репозиторий для работы с git-crypt:

root@kitploit:~
cd repo
git-crypt init

Укажите файлы для шифрования, создав файл .gitattributes:

root@kitploit:~
secretfile filter=git-crypt diff=git-crypt
*.key filter=git-crypt diff=git-crypt
secretdir/** filter=git-crypt diff=git-crypt

Как и файл .gitignore, он может содержать шаблоны с подстановочными знаками и должен быть добавлен в репозиторий. Подробнее о .gitattributes см. ниже. Убедитесь, что вы случайно не зашифровали сам файл .gitattributes (или другие git-файлы, например .gitignore или .gitmodules). Правила .gitattributes должны быть установлены до добавления чувствительных файлов, иначе они не будут зашифрованы!

Поделитесь репозиторием с другими (или сами с собой) с помощью GPG:

root@kitploit:~
git-crypt add-gpg-user USER_ID

USER_ID может быть идентификатором ключа, полным отпечатком, адресом электронной почты или любым другим значением, однозначно определяющим открытый ключ для GPG (см. «HOW TO SPECIFY A USER ID» в справочной странице gpg). Примечание: git-crypt add-gpg-user добавляет и коммитит GPG-зашифрованный файл ключа в каталог .git-crypt в корне вашего репозитория.

Кроме того, вы можете экспортировать симметричный секретный ключ, который необходимо безопасно передать соавторам (GPG не требуется, и файлы в репозиторий не добавляются):

root@kitploit:~
git-crypt export-key /path/to/key

После клонирования репозитория с зашифрованными файлами разблокируйте его с помощью GPG:

root@kitploit:~
git-crypt unlock

Или с помощью симметричного ключа:

root@kitploit:~
git-crypt unlock /path/to/key

На этом всё — после настройки git-crypt (с помощью git-crypt init или git-crypt unlock) вы можете работать с git как обычно: шифрование и дешифрование происходят прозрачно.

Текущее состояние

Последняя версия git-crypt — 0.8.0, выпущена 2025-09-23. git-crypt стремится быть безошибочным и надёжным, то есть не должен падать, давать сбои или раскрывать ваши конфиденциальные данные. Однако он ещё не достиг зрелости: документация, функциональность и удобство использования оставляют желать лучшего. Кроме того, до версии 1.0 возможны критические изменения.

Безопасность

git-crypt безопаснее других систем прозрачного шифрования git. git-crypt шифрует файлы с помощью AES-256 в режиме CTR с синтетическим вектором инициализации, полученным на основе SHA-1 HMAC файла. Такой режим работы доказуемо семантически безопасен при детерминированной атаке с выбором открытого текста. Это означает, что, хотя шифрование является детерминированным (что необходимо, чтобы git мог определить, изменился файл или нет), оно не раскрывает никакой информации, кроме того, идентичны ли два файла. Другие предложения по прозрачному шифрованию git используют ECB или CBC с фиксированным IV. Эти системы не являются семантически безопасными и раскрывают информацию.

Ограничения

git-crypt полагается на фильтры git, которые не были задуманы для шифрования. Поэтому git-crypt не является наилучшим инструментом для шифрования большинства или всех файлов в репозитории. Настоящая сила git-crypt проявляется, когда большая часть вашего репозитория является публичной, но несколько файлов (например, закрытые ключи с именем *.key или файл с учётными данными API) необходимо зашифровать. Для шифрования целого репозитория рассмотрите такие системы, как git-remote-gcrypt. (Примечание: мы не даём оценку безопасности git-remote-gcrypt.)

git-crypt не шифрует имена файлов, сообщения коммитов, цели символических ссылок, gitlinks и другие метаданные.

git-crypt не скрывает, изменился файл или нет, длину файла или тот факт, что два файла идентичны (см. раздел «Безопасность» выше).

git-crypt не поддерживает отзыв доступа к зашифрованному репозиторию, который был ранее предоставлен. Это относится как к многопользовательскому режиму GPG (нет команды del-gpg-user, дополняющей add-gpg-user), так и к режиму симметричного ключа (нет поддержки ротации ключа). Это связано с тем, что в контексте исторических данных это принципиально сложная проблема. Например, даже если ключ был сменён в какой-то момент истории, пользователь, имеющий предыдущий ключ, всё равно может получить доступ к предыдущей истории репозитория. Эта проблема обсуждается подробнее в https://github.com/AGWA/git-crypt/issues/47.

Файлы, зашифрованные git-crypt, не сжимаются. Даже малейшее изменение зашифрованного файла требует от git хранения всего изменённого файла, а не только дельты.

Хотя git-crypt защищает содержимое отдельных файлов с помощью SHA-1 HMAC, использовать git-crypt безопасно можно только при условии защиты всего репозитория от подделки (злоумышленник, способный изменять репозиторий, может изменить ваш файл .gitattributes, чтобы отключить шифрование). При необходимости используйте такие функции git, как подписанные теги, а не полагайтесь только на git-crypt для обеспечения целостности.

К файлам, зашифрованным git-crypt, нельзя применить патч с помощью git-apply, если сам патч не зашифрован. Чтобы создать зашифрованный патч, используйте git diff --no-textconv --binary. Альтернативно вы можете применить патч в открытом виде вне git с помощью команды patch.

git-crypt нестабильно работает с некоторыми сторонними GUI для git, такими как Atlassian SourceTree и GitHub for Mac. Файлы могут оставаться незашифрованными.

Файл Gitattributes

Файл .gitattributes описан в справочной странице gitattributes(5). Формат шаблонов файлов такой же, как в .gitignore, описанный в справочной странице gitignore(5), за исключением того, что указание только каталога (например, /dir/) не достаточно для шифрования всех файлов внутри него.

Также обратите внимание, что шаблон dir/* не соответствует файлам в подкаталогах dir/. Чтобы зашифровать всё поддерево dir/, используйте dir/**:

root@kitploit:~
dir/** filter=git-crypt diff=git-crypt

Файл .gitattributes не должен быть зашифрован, поэтому убедитесь, что шаблоны не перехватывают его случайно. При необходимости вы можете исключить .gitattributes из шифрования следующим образом:

root@kitploit:~
.gitattributes !filter !diff
Скачать инструмент