Gibt es eine sicherere Möglichkeit, Passwörter an OpenSSL zu übergeben?

Gibt es eine sicherere Möglichkeit, Passwörter an OpenSSL zu übergeben?

Mit OpenSSL gibt es in Bash zwei Möglichkeiten, eine Umgebungsvariable als Passwort zu verwenden:
pass:"${var}"und env:var.

Ich frage mich, welche Methode die größte Sicherheit bietet, da es auf der Manpage den Anschein erweckt, als pskönne das Passwort gelesen werden, wenn es als übergeben wird pass:"${var}", und dass dies möglicherweise auch mit möglich ist env:var.

Relevanter Abschnitt der OpenSSL-Manpage:

Passphrase-Argumente

Mehrere Befehle akzeptieren Passwortargumente, wobei normalerweise -passin und -passout für Eingabe- bzw. Ausgabepasswörter verwendet werden. Dadurch kann das Passwort aus verschiedenen Quellen bezogen werden. Beide Optionen akzeptieren ein einzelnes Argument, dessen Format unten beschrieben wird. Wenn kein Passwortargument angegeben ist und ein Passwort erforderlich ist, wird der Benutzer aufgefordert, eines einzugeben: Dieses wird normalerweise vom aktuellen Terminal gelesen, wobei das Echo ausgeschaltet ist.

pass:Passwort

Das eigentliche Passwort lautet password. Da das Passwort für Dienstprogramme sichtbar ist (wie „ps“ unter Unix), sollte diese Form nur verwendet werden, wenn Sicherheit keine wichtige Rolle spielt.

Umgebung:var

erhält das Passwort aus der Umgebungsvariable var. Da die Umgebung anderer Prozesse auf bestimmten Plattformen sichtbar ist (z. B. ps unter bestimmten Unix-Betriebssystemen), sollte diese Option mit Vorsicht verwendet werden.

Antwort1

Die Manpage ist diesbezüglich ziemlich eindeutig. Sie sollten denUmgebung:varMethode.

Die Manpage ist korrekt, alle Kommandozeilenparameter sind über ps sichtbar undAlle Nutzerauf dem System.

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

Wenn Sie eine Umgebungsvariable verwenden, kann ein anderer Benutzer (außer Root) nur den Namen dieser Variable sehen, nicht jedoch ihren Inhalt.

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

verwandte Informationen