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

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

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

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

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

Категории

Все категории
Loading categories
git-remote-pqcrypt — Зашифрованный удалённый помощник Git, реализованный на Rust | Kitploit
Инструменты/GitHubGitHub/torm0r/git-remote-pqcrypt
Инструменты шифрования/дешифрованияКриптографияБезопасность облачных средУтилиты и фреймворки
GitHubtorm0r/git-remote-pqcrypt

git-remote-pqcrypt

Зашифрованный удалённый помощник Git, реализованный на Rust

Репозиторий
31 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

git-remote-pqcrypt


root@kitploit:~
ЭТО ЭКСПЕРИМЕНТАЛЬНЫЙ ПРОЕКТ, формального аудита безопасности не проводилось. НЕ ПОЛАГАЙТЕСЬ на него для критически важных репозиториев.

git-remote-pqcrypt — это зашифрованный удалённый помощник Git, аналогичный gcrypt. Он хранит Git-пакфайлы и метаданные репозитория в зашифрованном виде. Доступ осуществляется с помощью постквантовой обёртки XWing.

Текущая версия крейта: 0.2.0.

Как это работает

  1. git-remote-pqcrypt init создаёт главный ключ репозитория.
  2. Главный ключ обёртывается для каждого пользователя с помощью его открытого ключа.
  3. Git-пакфайлы и манифест шифруются с использованием главного ключа.
  4. Git использует pqcrypt через удалённый помощник git-remote-pqcrypt.
  5. Главный ключ расшифровывается локально помощником, а затем пакфайлы расшифровываются в локальный репозиторий.

Пример файлов удалённого хранилища:

root@kitploit:~
keys.json
manifest.enc
objects/
    pack-.....pack.enc

keys.json содержит метаданные и зашифрованные обёртки главного ключа.

Установка

Быстрая установка с помощью Cargo

Установите стандартную сборку из Git:

root@kitploit:~
cargo install --git https://github.com/Torm0r/git-remote-pqcrypt --locked

Это устанавливает git-remote-pqcrypt в бинарный каталог Cargo, обычно ~/.cargo/bin.

Убедитесь, что бинарный каталог Cargo находится в вашем PATH, затем проверьте, что всё работает:

root@kitploit:~
git-remote-pqcrypt --help

Стандартная сборка включает поддержку локальной файловой системы и хранилища на основе Git.

Для установки с поддержкой SFTP в Unix-подобных системах:

root@kitploit:~
cargo install --git https://github.com/Torm0r/git-remote-pqcrypt --locked --features sftp

Функция sftp в настоящее время не поддерживается в Windows.

Сборка из исходного кода

Сборка с поддержкой бэкендов по умолчанию:

root@kitploit:~
cargo build --release

Это включает поддержку локальной файловой системы и хранилища на основе Git.

Для сборки с поддержкой SFTP в Unix-подобных системах:

root@kitploit:~
cargo build --release --features sftp

Установите бинарный файл в ваш PATH:

root@kitploit:~
sudo cp target/release/git-remote-pqcrypt /usr/local/bin/

Имя бинарного файла должно оставаться git-remote-pqcrypt, так как Git находит удалённые помощники по шаблону git-remote-[имя].

Проверьте, что всё работает:

root@kitploit:~
git-remote-pqcrypt --help

Требования

  • Инструментарий Rust для сборки из исходного кода
  • Должен быть установлен git
  • Для хранилища на основе Git необходимы рабочие учётные данные Git и настроенная идентификация Git
  • Для доступа по SSH/SFTP должна быть настроена существующая SSH-аутентификация
  • Поддержка SFTP требует сборки с --features sftp и в настоящее время доступна только в Unix-подобных системах

Быстрый старт

  1. Перейдите в существующий Git-репозиторий или создайте новый.

  2. Инициализируйте хранилище pqcrypt.

Локальный путь:

root@kitploit:~
git-remote-pqcrypt init pqcrypt:///path/to/encrypted-store

SFTP требует сборки с функцией sftp и в настоящее время поддерживается только в Unix-подобных системах:

root@kitploit:~
git-remote-pqcrypt init pqcrypt::sftp://[email protected]/path/to/store

На основе Git:

root@kitploit:~
git-remote-pqcrypt init pqcrypt::[email protected]:org/store.git

Если закрытый ключ отсутствует, он будет создан в ~/.config/pqcrypt/key, а открытый ключ будет выведен.

Вас попросят указать необязательный комментарий к ключу, например personal или work-laptop.

После инициализации будет добавлен удалённый Git-репозиторий с именем pqcrypt:

root@kitploit:~
git remote -v

Пример:

root@kitploit:~
pqcrypt  pqcrypt::/path/to/encrypted-store (fetch)
pqcrypt  pqcrypt::/path/to/encrypted-store (push)
  1. Отправка:
root@kitploit:~
git push pqcrypt main
  1. Клонирование или получение:
root@kitploit:~
git clone pqcrypt::[email protected]:Torm0r/pqcrypt-test.git my-clone
  1. Добавьте другого пользователя.

Они должны сгенерировать пару ключей с помощью:

root@kitploit:~
git-remote-pqcrypt keygen

Они могут получить свой открытый ключ с помощью:

root@kitploit:~
git-remote-pqcrypt pubgen ~/.config/pqcrypt/key

Или они могут скопировать открытый ключ, выведенный keygen.

Затем существующий авторизованный пользователь добавляет их в репозиторий:

root@kitploit:~
git-remote-pqcrypt add-user <base64-public-key>

Выполните это для дополнительных параметров:

root@kitploit:~
git-remote-pqcrypt add-user -h

По умолчанию add-user ищет локальный удалённый Git-репозиторий, URL которого начинается с pqcrypt, и добавляет туда открытый ключ.

Поведение при отправке

pqcrypt различает обычные отправки и принудительные отправки по Git refspec.

Обычные отправки проверяются на fast-forward и отклоняются, если они перезаписывают удалённую историю.

Поведение удалённого помощника

Git вызывает pqcrypt как удалённого помощника через бинарный файл git-remote-pqcrypt.

При вызове Git помощник ожидает форму аргументов удалённого помощника, используемую Git, например:

root@kitploit:~
git-remote-pqcrypt origin pqcrypt::/path/to/store

Прямые подкоманды CLI, такие как init, add-user, keygen, pubgen и help, обрабатываются как обычные пользовательские команды, а не как вызовы удалённого помощника.

Точка входа бинарного файла делегирует выполнение библиотеке времени выполнения, поэтому логика приложения тестируема как через библиотеку крейта, так и через установленный бинарный файл.

Кэш хранилища на основе Git

Для URL-адресов хранилища на основе Git pqcrypt поддерживает локальный кэш в системном каталоге кэша, например:

root@kitploit:~
~/.cache/pqcrypt/

pqcrypt получает зашифрованное состояние из резервного Git-репозитория перед операциями и отправляет зашифрованное состояние после обновлений.

Если обнаружено повреждение или потеря кэша, pqcrypt пытается автоматически воссоздать кэш, повторно загружая данные из резервного Git-репозитория.

Форматы URL

pqcrypt::, pqcrypt:// и pqcrypt: — все принимаются и внутренне нормализуются до pqcrypt::.

Эти эквивалентны:

root@kitploit:~
git-remote-pqcrypt init pqcrypt:///path/to/store
git-remote-pqcrypt init pqcrypt::/path/to/store
git-remote-pqcrypt init pqcrypt:/path/to/store

Бэкенд определяется путём хранилища:

Примеры:

root@kitploit:~
pqcrypt::/tmp/store
pqcrypt:///tmp/store
pqcrypt:/tmp/store
pqcrypt::[email protected]:org/store.git
pqcrypt::https://github.com/org/store.git
pqcrypt::sftp://[email protected]/path/to/store

Логика поиска закрытого ключа

Во время расшифровки pqcrypt ищет закрытый ключ в следующем порядке:

  1. переменная окружения PQCRYPT_KEY_PATH
  2. git config pqcrypt.keypath
  3. .pqcrypt/key в текущем каталоге
  4. Любой подходящий файл ключа в ~/.config/pqcrypt, где все проверяются

Для многоключевых конфигураций, например рабочих и личных ключей:

root@kitploit:~
git config pqcrypt.keypath ~/.config/pqcrypt/work-key

Ключ должен быть тем, который использовался во время init или был добавлен через add-user.

Разработка

Запустите полный набор тестов:

root@kitploit:~
cargo test

Запуск с включённым SFTP в Unix-подобных системах:

root@kitploit:~
cargo test --features sftp

Некоторые сквозные тесты, зависящие от поведения локального пути в Unix-подобных системах, игнорируются в Windows.

Сборки CI

GitHub Actions собирает проект на Linux, macOS и Windows. Артефакты рабочего процесса могут содержать бинарные файлы из запусков CI, но они не являются официальными релизами.

Информация о безопасности

  • Содержимое репозитория шифруется с использованием XChaCha20Poly1305.
  • Главный ключ репозитория обёртывается для пользователей с помощью HPKE и XWing.
  • Каждый авторизованный открытый ключ получает свою собственную зашифрованную копию главного ключа.
  • Комментарии, прикреплённые к ключам, аутентифицируются как связанные данные HPKE. Это означает, что если метаданные комментария повреждены, главный ключ может больше не расшифроваться для данной обёртки.
  • Git-ссылки и метаданные пакфайлов хранятся внутри зашифрованного манифеста.
  • Файлы закрытых ключей создаются с правами 0600 в Unix-подобных системах.

Ограничения

  • Этот проект является экспериментальным и не прошёл формального аудита безопасности.
  • В настоящее время поддерживаются только локальная файловая система, хранилище на основе Git и опционально SFTP.
  • Поддержка SFTP находится за опциональной функцией sftp и в настоящее время не поддерживается в Windows.
  • Бэкенды SFTP/Git не имеют надёжной распределённой блокировки, поэтому одновременные отправки могут привести к потере данных.
  • Поведение удалённого помощника Git всё ещё относительно минимально и может не поддерживать каждый рабочий процесс Git или операцию CI/CD.
  • Принудительные отправки поддерживаются, но они могут перезаписывать зашифрованную удалённую историю, как и обычные принудительные отправки Git.
  • Крейт HPKE зависит от Git-источника, так как XWing ещё не поддерживается в опубликованных релизах крейтов. Это будет изменено после обновления HPKE.
  • Нет способа отозвать или удалить доступ пользователя. Поскольку пользователи могут восстановить главный ключ из истории Git, лучшим решением будет повторно инициализировать репозиторий с новым главным ключом и очистить удалённое хранилище.
  • Формат хранилища может измениться в будущих версиях.
  • Хранилище на основе Git требует рабочих учётных данных Git и настроенной идентификации Git для коммитов.
  • Для аутентификации Git, SSH или SFTP pqcrypt полагается на существующие учётные данные SSH/Git.
  • ssh и git должны быть установлены.
Скачать инструмент
PatternBackendNotes
/local/pathЛокальная файловая системаПо умолчанию
git@host:, *.git, https://git*На основе GitПо умолчанию
sftp:// или ssh://SFTPТребует --features sftp; только Unix-подобные системы