4

私のpythonスクリプト(Debian Linux上のPython 2.6)は、ユーザーにパスワードを要求し、ユーザーのホームディレクトリに保存します。

パスワードをプレーンテキストとして安全にしたくないので、何らかの方法で暗号化したいと考えています。したがって、ユーザーの(プライベート)sshキーを使用して、ファイルに保存されたパスワードを暗号化および復号化できるので、秘密sshキーにアクセスできる人だけが保存されたパスワードを復号化できると思いました。

これにssh秘密鍵を使用するのは良い考えですか? キーを使用してPythonで文字列を暗号化するにはどうすればよいですか?

(ところで、キーリングなどは使いたくない)

編集

さて、そのようなものにユーザーのsshキーを使用するのは悪い考えだと理解しています。代わりに、ここで説明されているように、base64 エンコーディングを使用しています: URL で使用するために Python で文字列をエンコードおよびデコードするにはどうすればよいですか? もちろん、誰かが私のpythonスクリプトを読んだときは保存されません。しかし、パスワードをプレーンテキストとして保存する必要がないので、私には十分です。

4

2 に答える 2

5

確実に実行する価値がある唯一のことは、ユーザーだけが読み取ることができるファイルを保存することです。

sshキーを使用するためのあなたの議論は、次のようなもののようです:

  1. パスワードを保存する必要があるので、暗号化します
  2. ユーザーの ssh キーを使用して暗号化を行うと、ユーザーだけが自分の ssh キーを読み取ることができるため、スクリプトのソースを持っていても、誰かがパスワードを解読するのを防ぐことができます。

暗号化されたパスワードをユーザーのみが読み取ることができるファイルに保存すると、ユーザーの ssh キーをまったく読み取らずに、ssh キーを使用する場合と同じ利点が得られます。

誰かがログインするのを防ぐために、パスワードをプレーンテキストで保存しないことにはいくつかの利点があることに同意しますroot

cat secret-password

パスワードを取得しますが、Python スクリプトで次の行を簡単に見つけることができることを覚えておいてください。

password = decrypt-password(data)

次の行を追加します。

print "The user's password is",password

最初に正しいアクセス許可でファイルを作成するのと同じようos.fchown()に、ファイルを保護するためのトリックを実行します。

パスワードを暗号base64してプレーン テキストにならないようにすることもできますが、攻撃者がスクリプトを読み取って編集できると仮定した場合、ユーザーを保護する唯一の方法は、攻撃者が暗号化されたパスワードを含むファイルを読み取ることができないことです。

これが本当に心配な場合は、ユーザーがスクリプトを実行するたびにパスワードの入力を求めてください。

于 2010-11-12T13:28:11.643 に答える
2

Is it a good idea to use the private ssh key for this?

いいえ:

  • 秘密鍵自体をパスワードで保護することができます。
  • ユーザーの秘密鍵を読みに行くのは悪い形です。
  • スクリプトに関係なく変更できます。

また、用語を混同しているようです。あなたは を使ったencodingことがdecodingあります。hashingencryptingdecrypting

Dave Webb が指摘しているように、秘密鍵ファイルはユーザーに対して読み取り専用であり、それ自体は暗号化されていないという前提があります。「ファイルシステムのユーザー読み取り専用で保護」から「ユーザー読み取り専用の別のファイルで保護」に移行します。

于 2010-11-12T13:35:34.857 に答える