1. Hashing
어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것
해싱 알고리즘 : sha-1 , sha 256 , sha512
- 모든 값에 대해 해시 값을 계산하는데 오래걸리지 않아야 한다
- 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다
- 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다
2. Salt
2-1) 암호화해야 하는 값에 어떤 '별도의 값'을 추가하여 결과를 변형하는 것
- 암호화만 해놓는다면 해시된 결과가 늘 동일
해시된 값과 원래 값을 테이블로 만들어서 decoding 해버리는 경우도 생긴다
- 원본값에 임의로 약속된 '별도의 문자열'을 추가하여 해시를 진행한다면 기존 해시값과 전혀 다른 해시값이 반환되어 알고리즘이 노출되더라도 원본값을 보호할 수 있도록 하는 안전 장치
- 기존 : (암호화 하려는 값) ⇒ (hash 값)
salt 사용 : (암호화 하려는 값) + (Salt 용 값) ⇒ (hash 값)
2-2) Salt 사용시 주의점
- Salt는 유저와 패스워드 별로 유일한 값을 가져야함
- 사용자 계정을 생성할 때와 비밀번호를 변경할 때 마다 새로운 임의의 salt를 사용해서 해싱해야함
- Salt는 절대 재사용하면 안됨
- Salt는 DB의 유저 테이블에 같이 저장되어야 함