[Authentication] 인증 & 인가

소재현·2022년 8월 8일
0

인증 (Authentication)

인증이란?

  • 누군가 또는 시스템이 실제로 그 누구인지 또는 시스템인지를 결정하는 과정
  • 인증 기술은 사용자의 자격 증명 정보가 데이터 인증 서버의 자격 증명 정보와 일치하는지 확인하여 인증 절차를 통과한 시스템에 대해 액세스 제어를 제공한다

인증의 유형

인증 절차

  • 회원가입 절차
    • 서비스 이용을 원하는 사용자는 서비스의 가입 절차를 진행하여 해당 사용자의 아이디와 비밀번호를 데이터 베이스에 저장
    • 사용자의 아이디와 비밀번호를 저장할 때는 사용자가 입력한 문자 그대로 저장하면 안 됩니다. 사용자의 비밀번호는 암호화를 진행 한 후 저장

인가 (Authorization)

인가란?

  • 인가는 사용자에게 특정 리소스 또는 기능에 대한 액세스 권한을 부여하는 프로세스이며, 종종 액세스 제어 또는 클라이언트 권한과 같은 의미로 사용된다

Introduction

  • 웹 환경에서 사용자와 시스템 간에 데이터를 교환하기 위해 HTTP 방식을 사용합니다. HTTP 통신은 요청과 응답에 의해 동작하며, HTTP의 특징 중 가장 중요한 특징은 바로 Stateless 이다
  • 각각의 HTTP 통신(요청/응답)은 독립적 이기 때문에 과거의 통신(요청/응답)에 대한 내용을 전혀 알지 못 한다
  • 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다
  • 이를 위해서 Session과 Cookie 또는 Token 같은 기술을 사용할 수 있다

Session

  • 동일한 클라이언트(사용자)가 브라우저를 통해 웹 서버에 접속한 시점으로부터 브라우저를 종료하여 연결을 끝내는 시점 동안에 들어오는 일련의 Request를 하나의 상태로 보고, 그 상태를 일정하게 유지하여 클라이언트와 웹 서버가 논리적으로 연결된 상태를 뜻한다
  • Cookie는 클라이언트의 컴퓨터에 저장되는 데이터 파일입니다. Cookie에는 이름, 값, 만료 날짜/시간(저장기간), 경로 정보 등으로 구성이 되어있습니다. Cookie는 하나의 도메인 당 20개를 가질 수 있으며, 1개 당 4Kbyte를 넘길 수 없다는 특징을 가지고 있다

Session과 Cookie를 이용한 인증 Flow

Session 기반 인증의 특징

장점

  • Session ID 자체에는 유의미한 개인정보를 담고 있지 않다

  • 서버에서 정보를 관리하기 때문에 데이터의 손상 우려에 대해 상대적으로 안전

  • 서버에서 상태를 유지하고 있으므로, 사용자의 로그인 여부 확인이 쉽고, 경우에 따라서 강제 로그아웃 등의 제재를 가할 수 있다

단점

  • 서버에서 모든 사용자의 상태를 관리해야 되므로 사용자의 수가 증가 할 수록 서버에 가해지는 부하가 증가한다

  • 사용자가 증가하여 서버의 Scale Out을 해야 할 때 Session의 관리가 어려워 진다

  • 모바일 기기와 브라우저에서 공동 사용 할 때 중복 로그인 처리가 되지 않는 문제 등 신경 써줘야 할 부분 들이 증가한다

Token based Authenticatio

Token

  • Token의 사전적 의미를 찾아보면 버스 요금이나 자동판매기 등에 사용하기 위하여 상인, 회사 등에서 발행한 동전 모양의 주조물
  • 웹에서의 토큰도 이와 비슷한 의미를 가지고 있음
  • 웹에서는 Token을 가지고 있으면 해당 서비스를 이용할 수 있는 권리가 있다고 생각 할 수 있다
  • Token은 제한된 리소스에 대해 일정 기간 동안 접급 할 수 있는 권한을 캡슐화 한 것
  • 접근 권한을 캡슐화 할 뿐만 아니라 접근 할 수 있는 리소스의 범위와 접근 가능한 기간을 통제 할 수 있다

Token을 이용한 인증 Flow

Token 기반 인증의 특징

장점

  • Token을 사용자 측에서 저장하므로 서버의 메모리나 DB 등의 부담이 없다

  • 사용자의 상태 정보를 서버에서 관리하지 않기 때문에 서버의 Scale Out에 용이함

  • 모바일과 브라우저의 멀티 환경에서 사용이 용이함

  • Token의 만료 시간을 짧게 설정하여 안정성을 높일 수 있다

  • CORS 방식을 사용하기 용이함

단점

  • 서버에서 사용자의 상태를 저장하고 있지 않기 때문에 사용자의 로그인 여부 확인, 경우에 따른 강제 로그웃 등의 제재를 가하기 어려움
  • 사용자가 임의로 토큰을 수정하거나 구조가 변경되게 되면 서버에서 확인할 수가 없다
  • Payload 부분에 사용자 식별을 위한 여러 정보들이 포함 되어 있어 Session Id의 길이보다 길어져 HTTP request 전송 데이터의 크기가 증가
  • XSS 공격에 취약하여 Payload에 민감한 정보를 포함하는 경우 위험할 수 있다

Token based Authentication의 이점

암호화의 종류

단방향 암호화

단방향 암호화의 한계

  • 해시 알고리즘은 동일한 평문에 대해서 항상 동일 해시값을 갖음
  • 이런 특징을 이용하여 해시 함수의 해시 값들을 대량으로 정리한 테이블이 존재하며, 이를 레인보우 테이블이라고 부른다. 그리고 레이보우 테이블을 이용하여 사용자의 정보를 해킹하는 공격을 레인보우 공격이라고 한다

솔팅(Salting) & 키 스트레칭(Key Stretching)

양방향 암호화 - 대칭키

대칭키 암호화의 한계

  • 대칭키 방식은 하나의 키를 이용하므로 다른 사람과 대칭키 기반으로 암호화 통신을 할 경우 상대방도 사전에 같은 키를 갖고 있어야 한다 이 때, 키를 주고 받는 과정에서 키가 중간에 유출될 우려가 있고, 이로 인해 암호화 통신을 해킹 당할 수 있다. 특히 여러 상대방과 통신할 경우 각각의 키를 관리하는 것은 더욱 어려워 진다는 단점이 있음.

비대칭키

0개의 댓글