Ясып: насколько безопасен мастер-пароль?

Коллеги, я использовал Jasypt в своем проекте весенней загрузки (автономный jar, работающий на Windows). Мне нужно передать мастер-пароль через командную строку, чтобы запустить JAR. Это выглядит как:

java -jar -Djasypt.encryptor.password=masterpass app-1.0.0-RELEASE.jar

Так что каждый может видеть masterpass через диспетчер задач Windows:

Как обезопасить этот masterpass?

Я нашел пример, где мастер-пароль хранится в переменной среды Windows, но, похоже, не очень хорошая идея.

2 ответа

Обычно очень трудно что-либо скрыть при работе на рабочей станции клиента. В конце - когда пароли / ключи зашифрованы, вам все равно нужно где-то хранить пароль или закрытый ключ:/

Вы можете кодировать / шифровать данные, чтобы сделать их более сложными, но как только двоичные файлы и конфигурация находятся на стороне клиента, вы не сможете легко остановить выделенного противника.

Если вы по крайней мере не хотите показывать пароль снаружи (в среде или в командной строке) - как насчет чтения мастер-пароля из файла и установки системного свойства в main прежде чем запустить что-нибудь еще?

(пожалуйста, дайте мне знать, если это сработало)

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

Вместо этого предоставьте это через отдельный файл конфигурации. Поэтому, если вы используете spring-boot и у вас есть обычные свойства env в config/application.properties, просто добавьте файл config/application.yml, используя только мастер-пароль, и сохраните его только на компьютере с правами только пользователя (chmod go -rxw). Смотрите, например, здесь: https://github.com/oasp/oasp4j/wiki/guide-configuration

Все остальное из установки может исходить из вашего git-репо, где люди, имеющие доступ, видят только зашифрованные пароли, но не могут расшифровать, если у них нет мастер-пароля, которого у них нет, если у них нет физического доступа к производительной машине. Операторы могут предоставлять пароли только в зашифрованном виде команде разработчиков, поэтому они никогда не узнают настоящие пароли. Гуру DevOps это может не понравиться, но сохранение паролей в секрете для минимального количества администраторов, как правило, хорошо для безопасности.

Другие вопросы по тегам