[인증/보안] Hashing

daun·2022년 7월 20일
0

[기술 면접 준비]

목록 보기
32/48

질문

" Hashing에 대해서 설명해주세요."

  • 위 질문에 내가 생각한 질문의 요점 :

답변

" 해싱은 임의의 문자열을 넣었을 때 항상 같은 길이의 문자열을 리턴하는 해시함수를 사용해 암호화하는 것을 뜻합니다.
(길이 10짜리 문자열을 반환하는 해시함수라면, 길이 3 문자열을 넣어도 길이 13 문자열을 넣어도 길이 10짜리 문자열을 리턴합니다.)
보통 비밀번호를 암호화하여 저장할 때 많이 사용하며,
복호화가 불가능한 단방향 암호화이기 때문에 데이터 소유자도 사용자의 비밀번호를 알 수 없습니다.
해싱은 동일한 문자열에 동일한 해시 함수를 사용하면 항상 같은 결과값이 나오고, 서로 다른 문자열에 동일한 해시 함수를 사용하면 반드시 다른 결과값이 나온다는 특성을 가집니다.
"

추가답변이 필요하다면...

  • 그런데 항상 같은 결과값이 나온다는 특성을 이용해 해시 함수를 거치기 이전의 값을 알아낼 수 있도록 기록해놓은 표인 레인보우 테이블이 존재합니다. 레인보우 테이블에 기록된 비밀번호의 경우
    에는 유출이 되었을 때 해싱을 했더라도 해싱 이전의 값을 알아낼 수 있으므로 보안상 위협이 될 수 있습니다.
    이 때 활용할 수 있는 것이 솔트(Salt)입니다. 말 그대로 소금을 치듯 해싱 이전 값에 임의의 값을 더해 데이터가 유출 되더라도 해싱 이전의 값을 알아내기 더욱 어렵게 만드는 방법입니다.
    솔트는 유저와 패스워드별로 유일한 값을 가져야 하며, 절대 재사용 되어서는 안됩니다. 또한 사용자 계정을 생성할 때와 비밀번호를 변경할 때마다 새로운 솔트를 사용해야 하며, 데이터 베이스의
    유저 테이블에 함께 저장되어야 합니다"
profile
Hello world!

0개의 댓글