Perlスクリプトでパスワードを暗号化または非表示にするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/604634

質問

Expect を使用してTelnet経由でリモートマシンにログインするPerlスクリプトに取り組んでいます(don聞かないで、telnetを使用する必要があります)。また、必要に応じてp4ログイン操作を実行し、expectを使用して正しいパスワードをパイプします。今のところ、クリアテキストの環境変数、つまり export PASSWORD = password からパスワードを読み取るだけです。

複数のシステムで多くのパスワードを必要とするようなスクリプトのパスワードを保存する最良の方法は何ですか?テキストファイルで何らかの形で暗号化されていますか?または他に何か?

既存のシステムを簡単に変更することはできません。たとえば、SSHなどを実際にインストールできないなどです。

役に立ちましたか?

解決

おそらく最良の方法は、パスワードを別のファイルに入れ、そのファイルのセキュリティをロックして、自分だけが読み取りアクセスできるようにすることです。残念ながら、暗号化されたパスワードをスクリプトに保存する場合、復号化メソッドも保存する必要があるため、攻撃者は復号化を実行してパスワードを回復できます。

他のヒント

以前に非常によく似た質問がありました。私の回答をご覧くださいそれに。

要するに、人間は信頼の連鎖を開始しなければなりません。それ以外はすべて難読化です。

Telnetを使用している場合、スクリプトのパスワードを心配するのはなぜですか?推定攻撃者は、リモートマシンからデータを取得する方が、リモートマシンから取得するよりも簡単または簡単であることに気付くでしょう。どのような場合でも、それに対してできることは何もありません。

これは、窓にバーを入れようとし、ドアを開いたままにしておく場合のように聞こえます。

すでにexpectを使用しているため、パスワードを含む暗号化されたファイルでgpg -dをリダイレクトできるようにする必要があります。システム環境変数にパスワードを保存することは、明らかに間違っています。 gpgファイルを復号化するために使用されるパスワードは、起動時に入力され、ファイルからすべてのパスワードをロードして、あなたのものを実行します。これで完了です。パスワードは、アプリケーションの実行中にプレーンテキストでのみ存在します。

編集と同様に、スクリプトにパスワードを入力するのは悪いことです。スクリプトはプレーンテキストファイルであり、パスワードを何でも簡単に確認できることを忘れないでください。同様に、コンパイルしたアプリケーションでさえ、「文字列」で逆にすることができます。コードに含まれる文字列(通常はパスワード)を検索できます。

Mac OS Xを使用しているという偶然に、キーチェーンからユーザー名とパスワードを取得するこの気の利いた方法

更新:2013年7月22日の時点でリンクが壊れているようです。次のbashコードスニペットは、この手法を使用する方法を示しています(iTunesの販売データをダウンロードする):

domain="itunesconnect.apple.com"
user="user@example.com"
pass=$(security find-internet-password -ws $domain -a $user)

パスワードを別のファイルに入れるという、すでに述べた解決策が気に入っています。さらに、/ etc / passwdで行われたのと同じように、実際のパスワードをハッシュできます。ただし、アプリケーションの方法によっては、すべてに同じハッシュキーを使用する場合があります。明らかにこれの欠点は、誰かがあなたのスクリプトを実行するためにハッシュキーを入力しなければならないことであり、それはバッチ環境では動作しません。

ハッシュについての学習を開始する1つの場所は、このstackoverflow 質問

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top