Bcrypt

Bcrypt는 레인보우 테이블 공격을 방지하기 위해 솔팅과 키 스트레칭을 적용

구조

$2b$12$76taFAFPE9ydE0ZsuWkIZexWVjLBbTTHWc509/OLI5nM9d5r3fkRG
 \\/ \\/ \\____________________/\\_____________________________/
Alg Cost       Salt                        Hash

검증

Bcrypt는 단방향 해시 알고리즘이다. 따라서 복호화가 불가능하다. Bcrypt의 검증은 암호화된 값이 가지고 있는 알고리즘, Cost Factor, Salt를 이용한다.

  1. 비교하고 싶은 평문을
  2. 암호화된 값이 가지고 있는 알고리즘, Cost Factor, Salt을 이용해 해시를 진행한 후
  3. 암호화된 값과의 비교를 통해 검증을 진행한다.

<aside> 📌 암호화 방법

  1. 양방향 암호화 알고리즘 + 암호화 키를 이용해 비밀번호 암호화 (암호화 ↔ 복호화 양방향으로 가능)

    → 암호화키가 노출되면 알고리즘은 대부분 오픈되어있기 때문에 위험도가 높음

  2. 단반향 암호화 SHA256 등으로 해시로 암호화해서 저장 (복호화 불가능. 단반향 암호화)

    → 해시값끼리 비교. 레인보우 테이블(대부분의 유저들은 비슷한 암호를 사용)을 만들어서 비밀번호 알아냄

    → 보완하기 위해 나온 방법 : 랜덤 데이터(salt) + 원본 비밀번호를 해시로 암호화해서 저장

</aside>

JWT (JSON Web Token)

구조