Какие накладные расходы возникают на стороне сервера при подписании коммитов Git? - PullRequest
1 голос
/ 28 мая 2020

Git позволяет подписывать коммиты с помощью ключей GPG. Какие дополнительные накладные расходы возникают на стороне сервера git (например, GitHub Enterprise , GitLab Self-Managed и c.) По сравнению с тем же коммитом без подписи?

  • Сколько еще хранилища требуется для одной фиксации? Дополнительно хранится только идентификатор ключа GPG? Или еще что-то хранится.
  • Сколько еще обработки требуется для одной фиксации? Нужно ли git выполнить какую-то ресурсоемкую операцию для проверки коммитов? Или проверяется только идентификатор ключа GPG?
  • Сколько еще данных передается по сети при нажатии коммитов? Только идентификатор ключа GPG или что-то еще?

Чтобы быть немного более конкретным, между этими примерами, сколько дополнительных накладных расходов понесено на стороне сервера?

Пример 1 - с подписью

git add example.txt
git commit -S -m 'My Commit'
git push

Пример 2 - без подписи

git add example.txt
git commit -m 'My Commit'
git push

example.txt (Не уверен, имеет ли это значение)

Hello World!

Ответы [ 2 ]

1 голос
/ 29 мая 2020

В фиксации подписи хранятся в виде заголовка в фиксации, а для стандартного ключа RSA OpenPGP дополнительный размер составляет около 890 байт до сжатия, что является минимальным. Подписи Ed25519 меньше, около 275 байт. Данные сжимаются в фактическом объекте фиксации. Эти данные также передаются по сети.

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

Стоимость проверки подписей обычно также довольно минимальна. Я видел, что затраты ЦП на фактическую проверку подписи Ed25519 составляют около 120 мс процессорного времени, а RSA более эффективен, чем проверка. Разница снова довольно незначительна, и Ed25519 - лучший и более безопасный выбор для ключей с учетом всех обстоятельств.

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

Конечно, если у вас есть большое количество подписей, существует некоторое влияние на производительность, но в целом относительно небольшое. В наши дни криптография работает очень быстро, поэтому, если вы хотите подписывать коммиты по какой-либо причине, влияние на производительность будет минимальным, и вы должны быть уверены в этом. Я рекомендую использовать ключи Ed25519, если вы создаете новые и используете достаточно свежую версию GnuPG.

1 голос
/ 28 мая 2020

Я почти уверен, что все, что он делает, - это какая-то проверка c криптологами. Поскольку сам git постоянно делает такие вещи с хешами коммитов, я не могу себе представить, что это намного больше накладных расходов.

Фактически, в GitLab мы работали над потреблением ресурсов, а недавно уменьшил потребление памяти совсем немного . Я не могу представить, чтобы процессы подписания GPG существенно влияли на использование ресурсов, но могу ошибаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...