1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vcs-all-in-one-git-crypt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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

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

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

Авторство: git-crypt был написан Эндрю Айером (Andrew Ayer, agwa@andrewayer.name).

Для получения дополнительной информации см. https://www.agwa.name/projects/git-crypt.

Сборка git-crypt: см. файл INSTALL.md.

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

  1. Настройте репозиторий для использования git-crypt:

    • Перейдите в папку с репозиторием.
    • Выполните команду git-crypt init.
  2. Укажите файлы для шифрования, создав файл .gitattributes:

    • secretfile filter=git-crypt diff=git-crypt
    • *.key filter=git-crit diff=git-crypt
    • secretdir/** filter=git-crypt diff=git-crypt

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

  1. Поделитесь репозиторием с другими (или с собой) с помощью GPG:
  • 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 в корне вашего репозитория.

  1. В качестве альтернативы вы можете экспортировать симметричный секретный ключ, который необходимо безопасно передать соавторам (GPG не требуется, и никакие файлы не добавляются в ваш репозиторий):
  • git-crypt export-key /path/to/key
  1. После клонирования репозитория с зашифрованными файлами разблокируйте с помощью GPG:
  • git-crypt unlock

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

  • git-crypt unlock /path/to/key

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

Текущий статус:

Последняя версия git-crypt — 0.6.0 (NEWS.md), выпущенная 26 ноября 2017 года. git-crypt стремится быть надёжным и свободным от ошибок, то есть он не должен давать сбой, работать неправильно или раскрывать ваши конфиденциальные данные. Однако он ещё не достиг зрелости, то есть пока не так хорошо документирован, функционален или прост в использовании, как должен быть. Кроме того, до версии 1.0 могут быть внесены изменения, несовместимые с предыдущими версиями.

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

git-crypt более безопасен, чем другие системы прозрачного шифрования git. git-crypt шифрует файлы с использованием AES-256 в режиме CTR с синтетическим IV, полученным из HMAC SHA-1 файла. Этот режим работы доказуемо семантически безопасен при детерминированной атаке с выбранным открытым текстом. Это означает, что хотя шифрование является детерминированным (что необходимо, чтобы 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-крипт не поддерживает отзыв доступа к зашифрованному репозиторию, который был предоставлен ранее. Это относится как к многопользовательскому режиму 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 ненадёжно работает с некоторыми сторонними графическими интерфейсами git, такими как Atlassian SourceTree и GitHub для Mac. Файлы могут оставаться незашифрованными.

Файл Gitattributes

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

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

dir/** filter=git-crypt diff=git-crypt

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

.gitattributes !filter !diff

Списки рассылки

Чтобы быть в курсе разработки git-crypt и вносить свой вклад, рассмотрите возможность подписки на один или оба наших списка рассылки:

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Прозрачное шифрование файлов в git. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/vcs-all-in-one-git-crypt.git
git@api.gitlife.ru:oschina-mirror/vcs-all-in-one-git-crypt.git
oschina-mirror
vcs-all-in-one-git-crypt
vcs-all-in-one-git-crypt
master