2011-12-02 11 views
16

私は、Webサービスの認証情報を持つjavaプロパティオブジェクトを持っています。 私はそのデータを暗号化する必要がありますが、安全のために暗号化キーをどこに保存する必要があるか分かりません。暗号鍵をjavaに安全に保存するにはどうしたらいいですか?

このデータを暗号化して安全に取得するためのベストプラクティスは何ですか?

キーストアを使用する利点はありますか?

ws_user=username 
ws_password=password 
ws_url=https://www.whatever.com/myservice 
+0

私のアプリケーションでキーにアクセスする必要があるようで、セキュリティを確保する方法はありません。私がキーストアに格納している場合は、もっと不明瞭になりますが、より安全なようには見えません。私は間違っていることを願っています:) – ScArcher2

+0

最終的にはブートストラップ問題のようです。チェーンのある時点では、何かを暗号化解除するための鍵が必要です。キーストアを使用する場合でも、そのキーストアのパスワードが必要です。認証方式を変更する方法はありませんか? また、http://security.stackexchange.com/であなたがそこに尋ねるなら、かなり知識のある回答を得るかもしれません。 – mcfinnigan

+0

@mcfinniganそれは私が思ったものです。私はちょうど問題を回避する方法があるかどうかを見たいと思っていました。 – ScArcher2

答えて

5

あなたの問題は一般的です。 linuxでは、ユーザーパスワードはプレーンテキストファイルに保存されます。パスワードハッシュだけが格納されていますが、攻撃者がそのファイルにアクセスすると、オフラインの辞書攻撃を使用していくつかのパスワードを見つけるのに時間がかかりません。この場合、OSはファイル権限を使用して、権限のないユーザーへのアクセスを拒否します。あなたの場合、それほど違いはありません。パスワードファイルのアクセス許可を正しく構成し、サーバーの物理的なセキュリティを確保する必要があります。

+0

私は、顧客のセキュリティポリシーが設定ファイルのユーザ名/パスワードの暗号化を必要とする状況に遭遇しました。それはばかげているように見えましたが、私は何かが欠けていたかどうかをここで確認すると思いました。 – ScArcher2

4

これは鶏卵問題です。
次に、キーストアのパスワードを格納する場所などを見つける必要があります。

セキュリティ要件とニーズに応じて、対称暗号化を使用してデータを暗号化し、パスワードを取得できますクライアント側の証明書認証を使用してリモートサーバー(サーバー)経由で実行します。

または、対称暗号化を使用してデータを暗号化し、パスワードがハードコードされていることがあります。これは安全ではありませんが、それを見つけるために何らかの努力が必要で、ファイルにアクセスできるユーザーのファイルシステム権限に責任を委任できます。

0

JasyptStringEncrytorを使用して、プロパティファイルの機密情報を暗号化し、塩を生成しパスワードを取得するための社内手順をいくつか成功させました。 Webサービスを使用しているので、JasyptのWeb PBE Configurationを使用して、配備時に手動でパスワードを入力するか、独自の同様のソリューションをロールバックすることもできます。

+0

こんにちはDan、Web PBE設定を使用しましたか?私は鶏卵の問題を解決できると思う(テキストを暗号化するためには常にマスターキーが必要)。どのようにセットアップする必要がありますか?私は少し困惑しています。助けてくれてありがとう! V. – Viktor

4

結論として、暗号化されていない形式の「root-of-the-chain」パスワードが必要な場合があります。 OS保護されたローカルファイル、ソースでハードコードされたOS保護されたリモートファイルなど

唯一の方法は、人間がアプリケーションの起動時に最初のパスワードを入力するように要求することです自動起動が必要なアプリケーションの場合

関連する問題