マスターパスワードで暗号化したパスワードをコマンドの引数に記述する

ALL
スポンサーリンク

Linux のスクリプトなどで、コマンドの引数でパスワードを直接書く代わりに、予めマスターパスワードで暗号化したパスワードを記述しておき、実行時にマスターパスワードを入力してパスワードを復号してコマンド実行する方法です。

例えば、次のように暗号化したパスワードをコマンド中に書けます。
この例では、実行してマスターパスワード test を入力すると、復号されたパスワード 12345 が、コマンドの引数 -P で指定されます。

COMMAND -P `read -s pass;echo 'U2FsdGVkX19TkMDgEXQkXDI/RoIAsVlZsPHzQnsGj4A=' | openssl aes-256-cbc -d -base64 -k $pass;unset pass`

事前にパスワードをマスターパスワードで暗号化

次のコマンドを実行します。

echo '> master password';read -s pass;echo '> password';read -s text;echo $text|openssl aes-256-cbc -e -base64 -k $pass;unset pass;unset text

Using -iter or -pbkdf2 would be better. と出た場合は、-base64 の後に -pbkdf2 も記述してください。

> master password と表示されたら、マスターパスワードを入力します。
> password と表示されたら、パスワードを入力します。
マスターパスワードで暗号化されたパスワードが表示されます。

> master password で test、> password で 12345 と入力すると、12345 をマスターパスワード test で暗号化した文字が表示されます。

例えば、次のような文字列です。
この文字列は、上記のコマンドを実行するたびに、異なるものが表示されます。

U2FsdGVkX1+wpJ9i/Prk+uQFiL4jZivPn27nd6r4/KM=

実行時にマスターパスワードでパスワードを復号

次の書式でコマンドを実行します。
XXXXXXX の箇所は、暗号化時に表示された、暗号化文字列に置き換えてください。

echo '> master password';read -s pass;echo 'XXXXXXX' | openssl aes-256-cbc -d -base64 -k $pass;unset pass

> master password と表示されたら、暗号化時に指定したマスターパスワードを入力します。
すると、
復号したパスワードを表示します。

例えば、次のように実行します。
この例では、マスターパスワード test で暗号化したパスワード 12345 の暗号化文字列を指定しています。

echo '> master password';read -s pass;echo 'U2FsdGVkX1+wpJ9i/Prk+uQFiL4jZivPn27nd6r4/KM=' | openssl aes-256-cbc -d -base64 -k $pass;unset pass

> master password と表示されたら、暗号化時に指定したマスターパスワード test を入力します。
すると、復号化したパスワード 12345 が表示されます。

次のように “でくくって、コマンドの引数に渡すことができます。
実行してマスターパスワード test を入力すると、復号されたパスワード 12345 で「COMMAND -P 12345」として実行されます。

COMMAND -P `read -s pass;echo 'U2FsdGVkX19TkMDgEXQkXDI/RoIAsVlZsPHzQnsGj4A=' | openssl aes-256-cbc -d -base64 -k $pass;unset pass`

コメント