PHPでは、パスワード暗号化には陰謀能力がよく使用されます。 「塩」(塩)を介して暗号化強度を増加させるため、同じパスワード暗号化の結果が異なるため、虹のテーブル攻撃が妨げられます。ただし、 Crypt機能を使用すると塩が再利用されると、パスワードのセキュリティを深刻に損ない、ひび割れのリスクが高まります。この記事では、塩の再利用によってもたらされるセキュリティリスクを詳細に調べ、PHPで塩を合理的に生成および使用してパスワード保護のセキュリティレベルを改善する方法を共有します。
塩は、暗号化されたときにパスワードに添付されたランダムデータです。 2人のユーザーが同じパスワードを持っていても、暗号化の結果が異なることが保証されます。塩の主な機能は次のとおりです。
同じパスワードが同じハッシュを生成しないようにします。
レインボーテーブル攻撃は避けてください。
パスワードストレージのセキュリティを改善します。
特に異なるパスワード間で塩が再利用されると、攻撃者はこれを使用してバッチ内のパスワードをクラックできます。これにより、セキュリティが大幅に減少します。
同じパスワードが同じハッシュを生成します
塩が同じ場合、同じパスワードの暗号化結果は同じであり、攻撃者は同じパスワードでアカウントを簡単に識別できます。
パスワードのクラッキングをスピードアップ<BR> 同じ塩パスワードを使用して、攻撃者は複数のパスワードのハッシュを同時にクラックしようとすることができ、亀裂時間を節約できます。
攻撃のしきい値を下げる<br> 塩を再利用すると、攻撃者がパスワードデータベースが漏れた後、塩用の割れたテーブルを簡単に作成できるようになり、パスワードクラッキングの成功率が増加します。
PHPでは、 random_bytesまたはopenssl_random_pseudo_bytesを使用して、塩として高強度の乱数を生成できます。
function generateSalt($length = 22) {
$bytes = random_bytes($length);
// base64エンコード後、適切なものに置き換えますcrypt文字セット
return substr(str_replace(['+', '/', '='], ['.', '.', ''], base64_encode($bytes)), 0, $length);
}
Php 5.5以上にPassword_hash関数を使用することをお勧めします。これにより、ユニークな塩が自動的に生成され、開発者の操作が簡素化され、より安全になります。
$password = 'your_password';
$hash = password_hash($password, PASSWORD_BCRYPT);
一部の開発者は、塩自体を手動で指定することを好みます。
$hash = crypt($password, '$2y$10$fixed_salt_value_here');
これにより、すべてのパスワードが同じ塩を使用します。これは非常に安全ではありません。この慣行は避けるべきです。
動的に生成された塩を使用し、フォーマットはアルゴリズムの要件を満たします。たとえば、BCRyptアルゴリズムでは、塩の長さは22で、特定の文字のみが含まれる必要があります。
$salt = '$2y$10$' . generateSalt(22);
$hash = crypt($password, $salt);
塩を手動で管理する必要がある場合は、パスワードハッシュで塩を保管して、検証するときに正しい塩を使用するようにしてください。
function generateSalt($length = 22) {
$bytes = random_bytes($length);
return substr(str_replace(['+', '/', '='], ['.', '.', ''], base64_encode($bytes)), 0, $length);
}
$password = 'user_password';
// Bcrypt形式Salt,10のためにcost価値
$salt = '$2y$10$' . generateSalt(22);
$hash = crypt($password, $salt);
echo "Hashed password: " . $hash;
塩の再利用を防ぐことは、パスワードのセキュリティを確保するための重要な部分です。 PHPの内蔵パスワード_hash関数を使用して、パスワード暗号化を完了することをお勧めします。これは便利で安全です。 Crypt Functionを使用する場合は、塩の繰り返しの使用により、パスワード暗号化の無効化を避けるために、一意でランダムな塩を生成してください。塩の正しい取り扱いは、システムのセキュリティを大幅に改善し、パスワードの漏れによって引き起こされるリスクを減らすことができます。