2009-08-16 12 views
10

パスワードベースの暗号化を使用しています。私の最初の考えは、AESを使ってパスワードを含むファイルを暗号化することでした。パスワードベースの暗号化はAESをサポートしていません。それはDESを使用します。 AFAIK desは安全ではありません。 PBEWithMD5AndDESは私のデータを推し進めるのに十分な安全性を持っていますか、別の実装を探すべきですか?Java PBEWithMD5AndDES

+1

いくつかの表現を混乱させているようです。 「パスワードベースの暗号化」とは、ファイルをパスワードで派生した鍵で暗号化する方式のことです。 (たとえば、PKCS#5標準はパスワードベースの暗号化方式です)。あなたが望むのは何か違うもの、つまり安全なパスワードの保存/管理体系です。したがって、PBEWithMD5AndDESは、それがどれほど安全か不安かにかかわらず、必要なものではありません。 – Accipitridae

+0

これは徹底的に古くなった質問です.AESは、Java 6以降のパスワードベースの暗号化に対応していますが、完全性保護が欠けているため、暗号化*にのみ使用する必要があります。 –

答えて

16

あなたの意見からは、パスワードベースの暗号化方式を使用して機密情報が含まれているファイルを暗号化し、解読時にユーザーが入力したパスワードを使用しているように見えます。この場合の機密情報はパスワードでもありますが、それは本当に関連性がありません。 (これをもっと明確にするために、おそらく質問を更新するべきです)。

SunJCE Java暗号化プロバイダがパスワードベースの暗号化にAESをサポートしていないという問題があります。たとえば、アルゴリズム"PBEWITHSHA256AND128BITAES-CBC-BC"を使用してBouncy Castleプロバイダを使用できる代替プロバイダを使用する必要があります。 (奇妙な名前にもかかわらず、Bouncy Castleは尊敬されています)。

"自分のデータに十分な安全性があります"と言えば、保護しているデータが攻撃者に約10,000ドル以下の価値があるのであれば、2009年にはそれだけで十分でしょう。 2014年に、データを暗号化する価値がある場合は、答えは「いいえ」です。

+3

GPUを使用しているブルートフォースの最近の進歩を考えれば、おそらく$ 10,000を$ 100に置き換えることができます。 –

-1

saltedhash digests以外の形式でパスワードを保存しないでください。

オペレーティングシステムのパーミッションシステムを使用して、ハッシュされたパスワードファイルがパスワードを検証するユーザーだけが読むことができるようにする必要があります。

+1

パスワードを保存するのは個人的なアプリケーションです。おもちゃのパスワードマネージャー。 –

+1

-1、質問には答えません –

3

Java 6が利用可能な場合は、必要なものはすべて利用できます。このquestionをチェックし、コードサンプルの回答を見てください。ファイルを暗号化したいので、生成されたivは、暗号文を書き込むファイルの先頭に付ける必要があります。そのため、復号中に利用できるようになります。

関連する問題