Versión corta
Utilice una tubería con nombre.
openssl aes-256-cbc -a -salt -in twitterpost.txt -out foo.enc -pass file:<(echo -n "someGoodPassword")
Versión larga
Utilice una tubería con nombre. Puede crearlo en bash con
<(*output*)
p.
<(echo -n "content") # without -n echo will add a newline
se abrirá una tubería con nombre, por lo general una cola FIFO, y verá en la lista de procesos algo así como
/dev/fd/63
Será que sólo esté accesible por el usuario actual y será cerrado automáticamente después de haber sido leída, para que no tenga que preocuparse por los permisos y limpiar el disco (el conducto se cerraría si el programa falla, mientras que un archivo creado por usted, como se sugiere en otra respuesta, permanecería en el disco).
De esta manera se cerrará de la manera más rápida posible, justo después de que el comando lo lea y sin esperar a que termine su tarea (Acabo de hacer una prueba: cifrar algunos gigabytes e intentar leer el conducto con nombre (es visible en la lista de procesos): la tubería nombrada se cierra instantáneamente incluso si openssl tarda años en encriptarse).
Sobre sus comentarios
Si el ordenador ha sido comprometido por una segunda aplicación para obtener esta contraseña , entonces el usuario tiene algunos problemas de seguridad graves que preocuparse acerca . En realidad, podría haber algún software diseñado específicamente para ataque de mi propio software
Si su ordenador ha sido hackeado y el atacante tiene sus mismos derechos de usuario, que está hecho para. Por ejemplo, el atacante puede modificar fácilmente su .bashrc a alias openssl para que inicie un "evil-openssl" hipotético que copie su contraseña y datos antes de manipular todo en el openssl real, dejándolo con su falsa sensación de seguridad.
Dicho esto, no soy un experto en seguridad, así que si alguien quiere desvirtuarme en el olvido (y dime por qué), de nada.
Así que si tengo algún software que haga que el usuario escriba una contraseña en alguna IU, y luego escribe esta contraseña en este archivo (con los permisos correctos), y luego llama a estos comandos de terminal, ¿diría usted que ¿es seguro? En este sentido: si la 2da aplicación ha comprometido la computadora para obtener esta contraseña, entonces el usuario tiene algunos problemas graves de seguridad de los que preocuparse. En realidad, podría ser algún software diseñado específicamente para atacar mi propio software :) ¿Qué piensas sobre esto? – Enchilada
Eso haría que las cosas sean relativamente seguras, sin embargo, si hay una aplicación diseñada específicamente para atacar su programa, entonces todas las apuestas están desactivadas. Podemos husmear el teclado mientras se ingresa la contraseña, podemos leer la E/S ya que el archivo es por escrito, podemos leer el archivo, podemos leer su entorno.Prácticamente no hay protección que sea 100% segura: puede usar el archivo abierto, desenlazarlo pero mantener el archivo abierto y pasar el truco para que no haya rastro de la contraseña en el sistema de archivos (use fd: number as el argumento a -pass) la aplicación con la interfaz de usuario utiliza un fd también – Petesh
Si esto es parte de una aplicación de escritorio en GNOME, se puede utilizar el gnome-keyring como un lugar seguro para guardar la contraseña, ya que es encriptada y generalmente inaccesibles cuando el usuario no está conectado (KDE tiene kwallet IIRC). Las aplicaciones de Adobe AIR también tienen un mecanismo de almacenamiento de contraseñas (no conozco el mecanismo de AIR para protegerlo), pero debido a que está utilizando modismos de comandos de shell, espero que estos no sean realmente una opción. – Petesh