2011-08-08 9 views
5

私は初心者のプログラマーにとって人生を困難にするための暗号技術について十分に知り、セキュリティ専門家に笑ってもらう。だからそれを念頭に置いて、私は尋ねる:どのように安全ですjavax.crypto.Cipher?私は、意志と方法で誰かがひどいことに気づくことがあることを理解していますが、私はまだ相対的な詳細を知りたいと思います。javax.crypto.Cipherの安全性はどのくらいですか?

私が尋ねる理由は、自分のCryptorクラスを介して送信されるアカウント名とパスワードを保存して、そのジョブを実行するかどうかを知りたいと思うからです。もし誰かが私が読むことができる文献があれば、それは大いにアピールされます。

おかげで〜NullCipher以来アエードーン

+0

[Jasypt](http://www.jasypt.org/)のドキュメントを参照してください。そこには多くの良いリンクが浮かんでいます。 – Jeremy

答えて

4

パスワードを安全に保存する場合、要件は単に「安全に通信する/個人的に通信する」とはまったく異なります。 A Cipherはあなた自身を保護するだけでは不十分です。あなたはそのような状況でこれらの

のいずれかを使用する必要があります。 Hereは、パスワードセキュリティに関するいくつかの引数とリンクです。

パンチラインは、「通常の」暗号化(またはハッシュも)が重大な攻撃者を押しつぶすには速すぎるということです。プロセス全体を人為的に遅くして、アプリケーションを体系的に攻撃している人にとって、できるだけハードなものにしたいと考えています。パスワードを入力すると、1人のユーザーは1〜500ミリ秒の差に気づくことはありませんが、攻撃者にとっては、あなたのスキームを壊すために平均で500倍の時間がかかります。したがって、前に有効なパスワードを見つけるために1ヶ月、今それは500ヶ月かかるでしょう。

+0

詳細な説明をいただきありがとうございます。 – AedonEtLIRA

0

Cipherある - 全く安全ではありません。

6

暗号は、暗号化/復号化アルゴリズムを適用するための汎用クラスです。そのセキュリティは、使用される実際の暗号化アルゴリズム(DES、トリプルDES、AESなど)、キーのサイズ、および選択したブロック連鎖タイプに依存します。

+0

ああ、そうだ。どのようにして鍵のサイズを変更できますか?私は、 'SercretKeySpec'と' IvParameterSpec'に32バイトのキーを使用しようとしたときに、大量の例外フラグを取得していましたか?私はドキュメントを見渡しましたが、明確ではありませんでした。 – AedonEtLIRA

+0

DESには64ビットのキーがあり、実際には56ビットしか使用されません。 AESには128または256ビットのキーがあります。アカウント名とパスワードを暗号化する場合は、CTRモードでAES-128を使用することをお勧めします。そうすることで、データをパディングで拡張することはありません。 CTRモードではCBCモードと同じようにパディングは必要ありません。 – rossum

関連する問題