[Hash & Salt]패스워드 인코딩

Junseo Kim·2020년 4월 13일
0

간단한 Tip

목록 보기
5/20

패스워드 같은 보안에 민감한 정보는 절대 그 자체를 DB에 넣으면 안된다.

해싱을 하여 저장하고, 로그인 시 비밀번호를 해싱한 값으로 DB와 비교한다.

해싱이란?

간단히 말해서 12345를 특정한 알고리즘(ex. bcrypt)에 따라 임의의 문자열 asfasjkvnsanksaufbw로 바꿔주는 것이다.

spring security인 경우 기본 알고리즘이 bcrypt이다.

해싱 알고리즘을 쓰는 이유

만약 비밀번호 그 자체를 DB에 넣는다고 하자. "junseo@naver.com / 12345" 를 DB에 그대로 넣었을 때, 만약 해킹을 당하면, 대부분의 사람들은 여러 사이트에 같은 비밀번호를 사용하기 때문에, 이 서비스가 아닌 다른 서비스들도 모두 털릴 수 있다.

솔트(salt)란?

첨가물이다. DB에 비밀번호를 저장할 때, 첨가물을 더해준 후 해싱하여 저장한다.

Ex. 12345 + salt => asfnsavinwlwlwlwcaso

salt 값은 매번 바뀔 수 있다. 매번 달라도 알고리즘에 의해 제대로 로그인 할 수 있다.

솔트(salt)를 쓰는 이유

만약 해커가 여러 문자열들을 해싱해본 상태로 그 결과 값들을 테이블로 가지고 있다고 가정하자.

해커가 DB를 털었을 때 해커가 가지고 있는 DB에 그 값이 있을 경우, 원래 비밀번호를 유추해 낼 수 있다.

1개의 댓글

comment-user-thumbnail
2020년 12월 12일

salt 값이 바뀔 때, 어떻게 알고리즘을 통해서 로그인이 가능한지 궁금합니다. 해싱 알고리즘을 쓰면, 한글자 차이로도 값이 바뀔텐데, salt를 바꾸게 되면 db에 저장된 이전 salt+비밀번호의 값이 다를텐데, 어떤 방법으로 그게 가능한건가요??

답글 달기