인증(Authentication) & 인가(Authorization)

LEE JIYUN·2020년 7월 14일
0

인증 Authentication

회원가입과 로그인
목적 : 사용자 추적이 가능하도록 (누가 쓰는지, 어떻게 사용하는지 등)
매개체는 id, e-mail, password 등

비밀번호 관리?

  • 법규상의 강제 > 개인정보보호법
  • DB 저장 시 암호화 + 개인정보를 주고받을 때 SSL 적용하여 암호화 (HTTPS)

암호화?

  1. 단방향 Hash ( Hash 후 다시 돌아올 수 없음 )
    SHA-1 & MD5 는 보안이 취약하고 최근에는 SHA-256
    하지만 같은 알고리즘으로 해싱하면 같은 결과가 도출됨
    → RainbowTable 등 악용하는 사례 등장
  2. Salting & KeyStretching
    임의 생성한 문자열을 합쳐서 (Salting) Hashing
    Salting-Hashing을 여러번 반복하는 것이 KeyStretching
    bcrypt : salting & key stretching library

→ 로그인할 때는 암호화를 푸는 게 아니라 입력값을 같은 알고리즘으로 암호화해서 저장된 암호와 비교

  • 단방향 암호화 : 비밀번호와 같이 중요한 개인정보에 사용
  • 양방향 암호화 : 개인정보여도 다시 사용이 가능한 경우 (예: 병원 내 개인정보 / 쇼핑몰에 배송지 지정 등)

인가 Authorization

Http 특징?

  • 요청Request과 응답Response
  • stateless (독립적 요청 : 저장하지 않는 성질)
    → 쇼핑몰 로그인과 내 장바구니 보는 요청은 별개의 요청
    header에 메타 데이터를 보내서 확인
    이 메타 정보 = Json Web Token (JWT)

JWT

  1. 헤더header : meta data (암호화 X 인코딩 O)
  2. 내용body : payload (암호화 X 인코딩 O)
    user-id (사용자 번호 등 개인정보 X) / expired 정보 등
    (예: 만료 시간이 지나면 토큰이 삭제되고 다시 로그인을 요구)
  3. 서명signature : server 정보
    header / body를 고유의 key로 암호화

0개의 댓글