1

最近、プロジェクトにセキュリティを追加することを検討しています。私は状況について多くの調査を行ってきましたが、明らかにパスワードハッシュが必須であることがわかりました。さらに、最良のオプションはbcrypt、PBKDF2、またはscryptを使用することであると結論付けました。

また、ハッシュと暗号化について多くの議論を見て、ハッシュがより重要であることは明らかであることがわかりました。とは言うものの、Googleの奥深くを何度も検索した後、すでに適切にハッシュ化されたパスワードを暗号化することが有益であるか、害を及ぼすか、比較的中立であるかについての情報はまだ見つかりません。

両方を行うためのCPUコストはそれだけの価値がありますか?落とし穴はありますか?

4

3 に答える 3

2

何かを暗号化すると、復号化が必要になり、その結果、すでに抱えている問題、つまり秘密の安全な保管につながります。

パスワードをプレーンテキストではなくハッシュとして保存したい場合は、基本的に次のようにします。

hashpw := hash(salt + password)

次に、ファイルに保存salthashpw、プレーンテキストのパスワードの代わりにこのデータを使用します。(多くの場合、ソルトとパスワードの連結の順序は重要であり、これはプロセスの視覚化にすぎず、それ以上ではないことに注意してください。ツールを使用してソルトハッシュを生成します)。

攻撃者の可能性がある場合は、ソルトとプレーンテキストのパスワードを推測して、保存されているとの一致を確認する必要がありますhashpw。これは、使用しているハッシュアルゴリズム(衝突率)と同じくらい安全です。

暗号を使用して何かを暗号化すると、ハッシュ方式では提供されないプレーンテキストを復元できるという利点があります。また、暗号文を復号化するシステムがキーを使用できるようにする必要があります。文字列fooをいくつかのキーで暗号化するとしますbar。結果の暗号文を復号化するには 、キーが再度brn必要になります。barこのキーはシステム上に安全なストレージを必要とし、キーが攻撃者に公開されると、すべてのセキュリティが失われます。

一般的な経験則として、ハッシュは、ハッシュアルゴリズムの衝突率によってセキュリティが決定されるため、チェックされるテキスト(パスワードなど)を保存するための優れた方法を提供します。一方、暗号化は、残りのデータを安全に保存するために使用している手法です。

于 2013-03-24T06:14:49.860 に答える
2

あなたは正しい方向に進んでいます。あなたが言及したような鍵導出/パスワードハッシュ関数を使用してください。

ハッシュまたはソルトハッシュのみを使用しないでください。主な問題は、従来のハッシュアルゴリズム(MD5、SHA- *など)が高速であることを目的としていることです。これはパスワードの保存には有利ではなく、ソルトを追加したとしても、多くの実装は壊れやすくなります。

暗号化は常にキー管理関連の問題を引き起こします。パスワードの保存には使用しないでください。

KDFの利点は、作業要素です。それは遅くて計算コストがかかるように設計されているので、彼らはこの状況を考えています。Scryptは、実行するために一定量のメモリを必要とするため、現在見ているオプションの中で最も回復力があります。これにより、GPU攻撃ベクトルが強制終了されます。どちらの方法でもトレードオフがありますが、構成可能な適切な作業要素を使用する限り、すべての選択で問題ありません。

于 2013-06-27T02:11:03.113 に答える
-4

パスワードを暗号化するだけです。ハッシュは高速ですが、パスワードには少し危険です。セキュリティ目的でハッシュを使用する場合、通常はメッセージの署名など​​、メッセージを検証できるようにするためのメッセージ+ハッシュ(メッセージ+パスワード)などが使用されますが、この分野の専門家ではありません。両方を行う意味がわかりません。

于 2013-03-24T05:53:53.987 に答える