brute force : '무차별 대입 공격' 이라고도 하며, 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다.
bcrypt는 현업에서 많이 사용하고 있는 패스워드 알고리즘이다.
기본적으로 salt를 추가하여 hashing하기 때문에 오래전부터 많이 사용하는 SHA256이나 SHA512보다 보안성이 높다는 평가를 받는다.
물론 다른 알고리즘들도 어떻게 개발자가 salt를 활용하여 커스텀하게 구현하느냐에 따라 보안강도가 달라진다.
하지만 bcrypt를 선택했다는 것만으로도 안정성을 어느 정도 보장 받을 수 있다.
기본 해시 함수인 SHA, MD5등을 이용하는 것은 빠른 처리속도로 인하여 보안에 취약하기 때문에 충분히 사용자의 password를 보호할 수 없다.
key derivation function를 사용하여 암호화를 진행하자.
해시를 강하게 하기 위해서는 무작위 salt와 함께 반복적인 해싱작업이 필요하다.
ISO-27001 보안 규정을 준수해야하는 상황이면 PBKDF2를 사용해야한다.
일반적으로 규정을 준수해야할 상황이 아니면 구현이 쉽고 비교적 강력한 Bcrypt를 사용하자.
하지만 보안 시스템을 구현하는데 많은 비용을 투자할 수 있다면, Scrpyt를 사용하자.