Я пытаюсь понять функцию шифрования паролей Maven 3. Я обнаружил, что эта функция плохо документирована и запутанна. Например, документация по функциям и запись в блоге автора функция противоречит друг другу о нескольких моментах.
Этот вопрос шире Как работает maven -encrypt-master-password и не покрывается Maven encrypt -master-password хорошая практика для выбора пароля.
В частности, я пытаюсь ответить на следующие вопросы, которые не рассматриваются в документации. Я поставил ту информацию, которую я смог собрать, до сих пор ниже каждого вопроса курсивом.
- Предоставляет ли зашифрованный главный пароль безопасность только существующим в
settings-security.xml
в папке, доступ к которой может получить только один пользователь (~/.m2
)? Если да, зачем беспокоиться об шифровании "главного пароля" (почему бы просто не использовать какое-то случайное значение)? Разве это не "главный пароль", а просто энтропийный ввод криптографической функции? Вызов пароля - запутанный - я ожидал, что Maven предложит мне этот пароль перед дешифрованием любых зашифрованных паролей сервера, но это не так.
Я понимаю, что да, это обеспечивает безопасность только существующим файлом, защищенным операционной системой. Я считаю, что Maven позволяет вам шифровать главный пароль, чтобы, если вы потеряете файл settings-security.xml
, вы можете его сгенерировать. Правильно ли это?
- Используют ли пароль главного и пароли сервера один и тот же процесс шифрования/шифрования? Пароли сервера основаны на главном пароле, поэтому в алгоритме должна быть какая-то разница. Где находится исходный код для этого?
Ответ Марсело Моралеса о том, как работает maven -encrypt-master-password, ссылается на проект plexus-cihper на GitHub. Неясно, является ли это всего лишь шифром или реальным плагином Maven, который предоставляет функциональность пароля.
- Я заметил, что один и тот же пароль главного сервера или сервера, зашифрованный несколько раз, дает разные хэши. Согласно ответ Марсело Моралеса о том, как работает maven -encrypt-master-password, это связано с тем, что 64-разрядная конфигурация (обычно SHA1PRNG), специфичная для JVM-конфигурации случайная соль "добавляется к паролю до шифрования. Maven расшифровывает сохраненные пароли, когда они используются во время компиляции. Разве это не означает, что соли нужно где-то хранить?
Я понятия не имею.
- Я также заметил, что обычный пароль, зашифрованный с использованием одного зашифрованного главного пароля, по-прежнему будет работать, если главный пароль будет заново зашифрован и сохранен в файле
settings-security.xml
, , даже если зашифрованный главный зашифрованный пароль пароля теперь отличается. Может кто-нибудь объяснить, как это работает?
Я понятия не имею. Мне кажется, что Maven делает что-то подозрительное или где-то где-то хранит.
- Я понимаю, что зашифрованные пароли могут использоваться только с тегами
<server />
в файлеsettings.xml
. Это правда? Где можно использовать серверы, определенные вsettings.xml
?
Я понимаю, что определения <server />
могут использоваться в <repositories />
и <distributionManagement />
, но не <scm />
. Кто-нибудь может это подтвердить?
- Для такой важной функции (создания системной безопасности) мне кажется, что существует много путаницы и плохой документации. Может ли кто-нибудь указать, как работает документация на веб-сайте Maven 3? Есть ли ссылка на wiki где-нибудь, что позволит мне вообще попытаться улучшить документацию?
Я понятия не имею
Извините за стену текста и спасибо за любые ответы.