Hashing

katsukichi·2021년 4월 14일
0

CodeStates_IM

목록 보기
43/48

Hashing

해싱? 암호화의 기본

  1. 모든 값에 대해서 해시 값을 계산하는데 오래걸리지 않아야한다.

  2. 최대한 해시 값을 피해야하며, 모든값은 고유한 해시 값을 가진다.

  3. 아주 작은 단위의 변경이라도 완전히 다른 해시값을 가져야한다.

대표적인 해시알고리즘은 SHA1 ,

SH256이 요즘 핫하다.

Salt

암호화 해야하는 값에 어떤 "별도의 값" 을 추가하여 결과를 변형하는것

  1. 암호화만 해놓는다면 해시된 결과가 늘 동일
    해시된 값과 원래값을 테이블(레인보우테이블)로 만들어서 decoding해버리는 경우도 생긴다.
  2. 원본값에 임의로 약속된 "별도의 문자열"을 추가하여 해시를 진행한다면
    기존 해시값과 전혀 다른 해시값이 반환되어 알고리즘이 노출되더라도 원본값을 보호할 수 있도록 하는 안전장치
  3. 기존 : (암호화하려는값) => (hash값)
    Salt 사용 : (암호화하려는값) + (Salt 용 값) => (Hash 값)

Salt 사용시 주의점

  1. Salt는 유저와 패스워드 별로 유일한 값을 가져야한다.

  2. 사용자 계정을 생성할 대와 비밀번호를 변경할 때 마다 새로운 임의의 salt를 사용해서 해싱해야한다.

  3. Salt는 절대 재사용하지 말아야한다.

  4. Salt는 DB의 유저 테이블에 같이 저장되어야 한다.


클라이언트가 이메일,패스워드 보냄

서버가 디비에서 솔트값해시화된 비밀번호를 가지고

db에저장된 비밀번호+salt를 해싱한 값

클라이언트로부터 받은 해시화된 비밀번호와 같은지 비교

확인이되면 데이터를 내려줌

profile
front-back / end developer / Let's be an adaptable person

0개의 댓글