mercurial клонирует неверные данные

Я клонирую исходный код openJDK в свой локальный репозиторий и хочу быть уверенным, что целостность файла сохраняется при передаче.

hg clone http://hg.openjdk.java.net/jdk8/jdk8/

В FAQ Mercurial говорится, что revlogs проверяются по их хэшам: «Но одного этого недостаточно, чтобы гарантировать, что кто-то не подделал репозиторий. Для этого вам нужна криптографическая подпись». Означает ли это, что мне нужно использовать SSH таким образом?

hg clone ssh://hg.openjdk.java.net/jdk8/jdk8/

И чтобы получить доступ по SSH, нужно ли мне регистрироваться в качестве участника проекта? Если да, то есть ли способ получить проверенный клон, не становясь участником?


person kita kitsune    schedule 04.12.2015    source источник


Ответы (1)


SSH обеспечивает шифрование транспорта. Это гарантирует, что данные не могут быть изменены при передаче из репозитория OpenJDK на ваш компьютер.

В FAQ Mercurial говорится об подписании коммитов, что гарантирует чтобы позже вы могли убедиться, что эти коммиты не были изменены отдельно. Это означает, что злоумышленник не может проникнуть на серверы OpenJDK или сфальсифицировать фиксацию для принятия вверх по течению, добавив в ревизии, что проект не должен там находиться. Вы сможете распознать такие исправления, потому что у них нет правильной подписи или они вообще не подписаны.

SSH не защитит вас от таких проблем, потому что SSH не заботится о передаваемых данных. Вредоносные (измененные или добавленные) коммиты передаются так же безопасно, как и действительные версии.

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

person Martijn Pieters    schedule 04.12.2015
comment
Спасибо, Мартейн, да, меня беспокоит безопасность в пути. Похоже, я неправильно истолковал Mercurial FAQ. Когда я пытаюсь клонировать с помощью SSH, я получаю такой ответ: удаленный доступ: Отказано в доступе (общедоступный ключ). прервать: нет подходящего ответа от удаленного hg!. Учитывая этот ответ, как лучше всего получить безопасный клон openJDK? - person kita kitsune; 08.12.2015
comment
@kitakitsune: SSH требует, чтобы у вас была учетная запись на сервере (GitHub дает вам это, если вы предоставите им свой открытый ключ). Другой вариант — использовать HTTPS, но я вижу, что OpenJDK не предлагает этого для своего сервера Mercurial. Существует зеркало GitHub с параметрами HTTPS и SSH для извлечения клона. Вопрос в том, безопасен ли процесс, который отправляет зеркало на GitHub? - person Martijn Pieters; 09.12.2015