본문 바로가기
카테고리 없음

[암호학] bcrypt 동작 방식

by Nhahan 2024. 8. 22.

bcrypt의 작동 방식

  • salt가 매번 다르게 생성됨
    bcrypt는 비밀번호를 hashing할 때마다 무작위로 새로운 salt를 생성한다. 그래서 같은 비밀번호라도 hashing할 때마다 다른 결과가 나온다.
  • 해시 값에 솔트 포함
    bcrypt로 만든 hash 값에는 salt도 함께 저장된다. 이 덕분에 salt를 따로 보관할 필요가 없다. 검증할 때는 이 hash 값에서 salt를 추출해 사용한다.

 

비밀번호가 같아도 다른 hash 값

같은 비밀번호라도 salt가 달라지면 완전히 다른 hash 값이 나온다. 예를 들어 "password123"이라는 비밀번호를 두 번 해싱하면,

  • 첫 번째 해시: $2b$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 두 번째 해시: $2b$12$yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

서로 다른 hash 값이 나오기 때문에, 비밀번호가 같은지 hash 값만 보고 알아낼 수 없다.

 

 

salt의 역할

salt는 비밀번호가 같아도 다른 hash 값이 나오게 만들어 준다. 덕분에 레인보우 테이블 같은 공격을 막을 수 있다.

 

 


레인보우 테이블은 미리 계산된 해시 값들을 모아놓은 테이블로, 이를 통해 해시 값을 역추적할 수 있는 공격 기법이다. 하지만 솔트를 사용하면 각 비밀번호에 임의의 값이 추가되므로, 레인보우 테이블로 공격하는 것이 사실상 불가능해진다.

 

 

 

댓글