Какой более безопасный способ передачи паролей в OpenSSL?

Какой более безопасный способ передачи паролей в OpenSSL?

При использовании OpenSSL в bash есть два способа использования переменной среды в качестве пароля:
pass:"${var}"и env:var.

Мне интересно, какой метод обеспечивает наибольшую безопасность, поскольку на странице руководства создается впечатление, что psможно прочитать пароль, переданный как pass:"${var}", и что это также возможно с env:var.

Соответствующий раздел страницы руководства OpenSSL:

Аргументы парольной фразы

Несколько команд принимают аргументы пароля, обычно используя -passin и -passout для входных и выходных паролей соответственно. Они позволяют получать пароль из различных источников. Оба эти параметра принимают один аргумент, формат которого описан ниже. Если аргумент пароля не указан и требуется пароль, то пользователю предлагается ввести его: он обычно считывается с текущего терминала с отключенным эхом.

пароль:пароль

фактический пароль — password. Поскольку пароль виден утилитам (например, 'ps' в Unix), эту форму следует использовать только там, где безопасность не важна.

env:var

получить пароль из переменной окружения var. Поскольку окружение других процессов видимо на определенных платформах (например, ps в некоторых ОС Unix), эту опцию следует использовать с осторожностью.

решение1

Страница руководства довольно ясно описывает этот вопрос, вам следует использоватьenv:varметод.

Страница руководства верна, все параметры командной строки видны через ps toвсе пользователив системе.

alice$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass pass:123456
evil$ ps aux|grep openssl                                                                                                                               
alice      17594  115  0.0  17108  4424 pts/6    R+   11:02   0:03 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass pass:123456

Если вы используете переменную среды, другой пользователь (кроме root) сможет увидеть только имя этой переменной, но не ее содержимое.

alice$ OPENSSLPW=123456
alice$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass env:OPENSSLPW
evil$ ps aux|grep openssl                                                                                                                               
alice      17713  115  0.0  17108  4424 pts/6    R+   11:02   0:03 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:16384 -aes-128-cbc -pass env:OPENSSLPW

Связанный контент