パスワードの暗号化と復号化

パスワードの暗号化と復号化

パスワードをプレーンテキストとして txt ファイルに保存しました。次に、txt ファイルからプレーンテキストを読み取り、その後それを暗号化して復号化するスクリプトを作成したいと思います。

答え1

パスワードを暗号化しても、暗号化を維持できない場合は意味がありません。パスワードを復号化すると、再び脆弱になります。

暗号がどれほど難しいものであっても、暗号化と復号化の方法は誰でも見ることができ、コピー&ペーストできる状態にあります。それがさらに馬鹿げたことを生んでいます。

chmodは、ルーブ・ゴールドバーグ・マシンよりもずっと優れたスヌーピング防御になりますが、少し作業すれば、保存されたパスワードをまったく使用しないようにできるかもしれません。これは非常に良いことです。理由: 取得可能な状態で保存されたパスワードは、セキュリティ上の問題であり、避けるべきです。それらは非常に悪いアイデアなので、、、、、sudo避けるだけでなく、それらはすべてsu、使用できないように特別に設計されています。sshscpsftp

パスワードの入力を求める予定がある場合 (用途は限られますが、操作の自動化などの可能性を考慮します)、 のようなユーティリティを使用できますopenssl

$ echo foobar | openssl enc -aes-128-cbc -a -salt -pass pass:asdffdsa
U2FsdGVkX1/lXSnI4Uplc6DwDPPUQ/WjHULJoKypTO8=

$ echo U2FsdGVkX1/lXSnI4Uplc6DwDPPUQ/WjHULJoKypTO8= | openssl enc -aes-128-cbc -a -d -salt -pass pass:asdffdsa
foobar

あるいは、次のようにすることもできます。

$ touch pass.txt && echo foobar > pass.txt
$ openssl bf -a -salt -in pass.txt -out secret && rm -f pass.txt
enter bf-cbc encryption password:
Verifying - enter bf-cbc encryption password:

$ openssl bf -d -a -in secret -out pass.txt
enter bf-cbc decryption password:

$ cat pass.txt
foobar

答え2

車輪の再発明をしたいようですね。私の個人的な提案としては、希望するパスワードを、見た目に美しい方法で並べたテキスト ファイルを作成することです (各行に一意のユーザー名、パスワード、およびそれが属するサイトなど)。

「RSA と RSA」を選択して 4096 ビットの RSA キーを生成しますgpg --full-gen-key。または、技術的には 2048 ビットでも安全に使用できます。ただし、2048 ビット未満にはしないでください。

gpg -e passwords.txtパスワードを含むファイルを暗号化します。

受信者の名前(あなた)を入力します。完了したら、それがpassword.txt.gpg存在することを確認します。その後、元の(暗号化されていない)passwords.txt を削除します。

さて、ここからは簡単な部分です。

ファイル内のパスワードの1つが必要な場合は、 gpg -d passwords.txt.gpg

覚えておかなければならないのは、RSA キーを生成するときに選択した 1 つのパスワードだけです。暗号化されていない内容が stdout (使用している端末) にダンプされます。とても簡単です。

RSA の代替として、次のキー生成方法を使用することもできます。

gpg --full-gen-key --expert

次に、オプション 9 - 「ECC と ECC」を選択します。アルゴリズムには、Brainpool P-512 を選択します。RSA よりもはるかに高速なキー生成で、キー サイズが小さくても同様に安全です。これは本当に個人的な好みです。私の回答の残りの部分 (パスワード ファイルの暗号化/復号化) は、依然として適用されます。

あるいは、超最高簡単な方法は、KeePassX などの既成のソフトウェアを使用してパスワードを暗号化して保存するだけです。

関連情報