salt라는게 원본 문자 + 랜덤값 을 해시 한거자나?
목적은 hash값이 유출되더라도 레인보우 테이블에서 원본 값을 못찾게 하는게 주 목적인거고
결국 브루트 포스에는 아무 의미 없는거지?
아 글고 지금 salt 로긴을 어캐 구현했나 몇가지 좀 찾아봤는데
user db에 salt랑 hash 비번을 같이 넣어 두더라고
로긴을 하면 아마 user db에서 salt 가져와서 사용자가 입력한 비번 + salt로 해시하고 비번이랑 비교하겠지
근데 이러면 만약에 user db가 유출됬어도 결국 salt 까지 같이 유출된건데 이러면 의미가 있는거야?
1) 브루트 포스는 대부분 막도록 하지. 로그인의 패스워드에 주로 쓰이니까 로그인 횟수 실패 제한이나 시간 제한을 걸어둬서 막잖아. 2) 디비가 유출되서 salt 유추되더라도, 비밀번호 자체는 유출 안되잖아? 비밀번호의 hash가 노출된거지. salt가 유출되는게 작은일은 아니긴하지만.... 그 외에 db가 아니라 그냥 서버 메모리 안에서 처리하는 경우도 많음. 이 경우엔 pepper라고 하던가 그럴걸
브루트포스에 장사없음
salt가 없으면 모든 계정에 대해 한번에 무차별대입이 가능한데 소금 있으면 각 계정 비밀번호마다 따로 무차별대입 돌려야 함
Bcrypt는 모든 비번마다 솔트도 다르다
레인보우 테이블 막는거니 salt 자체는 당연히 비밀값이 아니지