何かを暗号化すると、復号化が必要になり、その結果、すでに抱えている問題、つまり秘密の安全な保管につながります。
パスワードをプレーンテキストではなくハッシュとして保存したい場合は、基本的に次のようにします。
hashpw := hash(salt + password)
次に、ファイルに保存salt
しhashpw
、プレーンテキストのパスワードの代わりにこのデータを使用します。(多くの場合、ソルトとパスワードの連結の順序は重要であり、これはプロセスの視覚化にすぎず、それ以上ではないことに注意してください。ツールを使用してソルトハッシュを生成します)。
攻撃者の可能性がある場合は、ソルトとプレーンテキストのパスワードを推測して、保存されているとの一致を確認する必要がありますhashpw
。これは、使用しているハッシュアルゴリズム(衝突率)と同じくらい安全です。
暗号を使用して何かを暗号化すると、ハッシュ方式では提供されないプレーンテキストを復元できるという利点があります。また、暗号文を復号化するシステムがキーを使用できるようにする必要があります。文字列foo
をいくつかのキーで暗号化するとしますbar
。結果の暗号文を復号化するには
、キーが再度brn
必要になります。bar
このキーはシステム上に安全なストレージを必要とし、キーが攻撃者に公開されると、すべてのセキュリティが失われます。
一般的な経験則として、ハッシュは、ハッシュアルゴリズムの衝突率によってセキュリティが決定されるため、チェックされるテキスト(パスワードなど)を保存するための優れた方法を提供します。一方、暗号化は、残りのデータを安全に保存するために使用している手法です。