Hashing 해싱

hzn·2022년 11월 10일
0

HTTP / 네트워크

목록 보기
5/9
post-thumbnail

해싱

  • 가장 많이 쓰이는 암호화 방식
  • 암호화만 가능 (복호화는 불가능)
  • 해시 함수(Hash Function)를 사용하여 암호화 진행.

해시 함수의 특징

  • 항상 같은 길이의 문자열을 리턴
  • 서로 다른 문자열에 동일한 해시 함수를 사용하면 반드시 다른 결과값이 나옴
  • 동일한 문자열에 동일한 해시 함수를 사용하면 반드시 같은 결과값이 나옴.

Ex) SHA1에 특정 입력값을 넣었을 때 리턴 값

레인보우 테이블과 솔트(Salt)

레인보우 테이블

  • 해시 함수 거치기 이전의 값을 알아낼 수 있도록 기록해놓은 표
  • 동일한 문자열은 항상 같은 결과값이 나온다는 특성을 이용.
  • 레인보우 테이블에 기록된 값의 경우, 유출 되었을 때 해싱 이전의 값을 알아낼 수 있으므로 보안상 위협이 될 수 있다.

솔트(Salt)

  • (소금을 치듯이) 해싱 이전 값에 임의의 값을 더해 데이터가 유출 되더라도 해싱 이전의 값을 알아내기 어렵게 만드는 방법.
  • 솔트를 사용하면 해싱된 값이 유출되더라도 솔트가 함께 유출된 것이 아니라면 해싱 이전의 값을 알아내는 것은 불가능에 가까움.

해싱의 목적

  • 데이터 자체를 사용하는 것이 아니라, 데이터가 동일한 값인지 여부만 확인하는 것이 목적.
  • 따라서 복호화가 불가능해도 상관 X
  • 민감한 데이터를 다뤄야 하는 상황에서 데이터 유출의 위험성은 줄이면서 데이터의 유효성을 검증하기 위해 사용되는 단방향 암호화 방식.

Ex) 사이트 비밀번호

  • 비밀번호를 데이터베이스에 저장할 때, 복호화가 불가능하도록 해싱해서 저장.
  • 사이트 관리자도 정확한 비밀번호를 알 수 없음.
  • 로그인 시 입력한 값을 해싱해서 데이터베이스에 저장된 해싱된 비밀번호와 일치하는지 비교

0개의 댓글