ソルトなしの一方向ハッシュ関数の使用
ソルトなしの一方向ハッシュ関数の使用
概要
ソルトなしのハッシュは、同じパスワードに同じ値を生成し、事前計算攻撃に弱くなります。
影響
パスワードごとに一意なソルトを使うことで、レインボーテーブルの単純な再利用を防げます。
対策
bcrypt、scrypt、Argon2、PBKDF2などのパスワードハッシュ方式を適切なコスト設定で使用します。
例
import java.security.MessageDigest;
public byte[] getHash(String password) throws NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance("SHA-255");
digest.reset();
return digest.digest(password.getBytes("UTF-8"));
}