유저의 identification(ID&PW)을 확인하는 절차.
access token
전송access token
을 첨부하여 request를 서버에 전송함으로서 매번 로그인 하지 않아도 됨유저 PW는 절대 그대로 DB에 저장하지 않는다.
PW 암호에는 단방향 해쉬 함수(one-way hash function)가 일반적으로 쓰임.
다이제스트(digest)
를 생성한다.단방향 해쉬는 원본의 비밀번호 메세지보다는 보안성이 올라갔다고 볼 수 있지만 같은 INPUT에는 항상 같은 OUTPUT인 암호화된 값이 나오기 때문에 Rainbow Table에 의한 해킹 위험이 높다고 할 수 있다.
해서 좀 더 보완하고자 salting & key stretching이 탄생하였다.
실제 PW 이외에 추가적으로 랜덤 데이터를 더해서 해쉬값을 계산하는 방법
단방향 해쉬값을 계산한 후 해쉬값을 계속해서 해싱하여, 길이를 늘려주는 방법
salting & key stretching 을 구현한 해쉬 함수 중 가장 널리 사용 되는 라이브러리
bcrypt는 hash 결과값에 salt값과 hashed값 및 반복횟수를 같이 보관하기 때문에
비밀번호 해싱을 적용하는데 있어 DB설계를 복잡하게 할 필요가 없다.
bcrypt를 통해 해싱된 결과의 구조
$2b$12$.XIJKgAepSrI5ghrJUaJa.ogLHJHLyY8ikIC.7gDoUMkaMfzNhGo6' ---/---/--------------------/-------------------------------/ 1 2 3 4
1 - Algorithm
2 - Algorithm options(eg cost)
3 - Salt
4 - Hashed password
끝!