¿Cuál es una forma más segura de pasar contraseñas a OpenSSL?

¿Cuál es una forma más segura de pasar contraseñas a OpenSSL?

Con OpenSSL, hay dos formas en bash de utilizar una variable de entorno como contraseña:
pass:"${var}"y env:var.

Me pregunto qué método proporciona la mayor seguridad, ya que la página de manual hace que parezca que psse puede leer la contraseña cuando se pasa como pass:"${var}", y que también podría ser posible con env:var.

Sección relevante de la página de manual de OpenSSL:

Argumentos de frases de paso

Varios comandos aceptan argumentos de contraseña, normalmente usando -passin y -passout para contraseñas de entrada y salida respectivamente. Estos permiten obtener la contraseña de una variedad de fuentes. Ambas opciones toman un único argumento cuyo formato se describe a continuación. Si no se proporciona ningún argumento de contraseña y se requiere una contraseña, se le solicita al usuario que ingrese una: esto generalmente se leerá desde el terminal actual con el eco desactivado.

pasar:contraseña

la contraseña real es contraseña. Dado que la contraseña es visible para las utilidades (como 'ps' en Unix), este formulario sólo debe usarse cuando la seguridad no sea importante.

entorno:var

obtenga la contraseña de la variable de entorno var. Dado que el entorno de otros procesos es visible en ciertas plataformas (por ejemplo, ps en ciertos sistemas operativos Unix), esta opción debe usarse con precaución.

Respuesta1

La página de manual es bastante explícita al respecto, debes usar elentorno:varmétodo.

La página de manual es correcta, todos los parámetros de la línea de comando son visibles a través de ps paratodos los usuariosen el sistema.

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

Si usa una variable de entorno, otro usuario (excepto root) solo podrá ver el nombre de esa variable pero no su contenido.

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

información relacionada