보안, 해시, 쿠키, 세션, JWT

meek·2023년 3월 17일
0

/*elice*/

목록 보기
9/21
post-thumbnail

1. 보안

🐢 보안

  • 승인되지 않은 액세스나 오용, 오동작, 수정, 파괴, 부적절한 노출 등으로부터 보호하는 프로세스

🐢 인증

  • Authentication
  • 사용자의 신원을 검증하는 프로세스

🐢 대표적인 인증 방식

인증 방식내용
비밀번호사용자가 데이터를 올바르게 입력하면 시스템은 정보가 유효하다고 판단하고 액세스를 허용함
(가장 많이 사용되는 인증 요소)
일회용 핀단일 세션이나 트랙잭션에 한하여 액세스를 허용함
인증 앱액세스를 허용하는 외부 기관을 통해 보안 코드를 생성함
ex.휴대폰 인증서
생체 인식사용자가 시스템에 액세스 하기 위해 지문이나 망막 스캔을 제출함
ex.Face ID, 지문 인식
  • 트랜잭션
    • 쪼갤 수 없는 업무 처리의 최소 단위

🐢 인가

  • Authoriztion
  • 인증된 사용자가 어떠한 자원에 접근할 수 있는지를 확인하는 프로세스

🐢 인증과 인가의 차이

구분인증인가
사용자가 볼 수 있는가?OX
사용자가 변경할 수 있는가?부분적으로 가능불가능
데이터 전송ID 토큰 가능액세스 토큰 사용

2.해시

🐢 해시

  • Hash

    내용
    해시단방향 암호화 기법으로 해시함수를 이용하여 고정된 길이의 암호화된 문자열로 바꿔버리는 것
    해시함수임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
    해시값매핑 후 데이터의 값
    매핑 전 데이터의 값
    해싱매핑하는 과정
  • 매핑
    • 하나의 값을 다른 값으로 대응시키는 것

🐢 해시함수

  • 임의의 긴 입력값을 적절하게 처리하여 짧은 값을 출력하는 함수

🐢 해시함수의 종류

  • 암호화 해시함수
    - 해시값을 가지고 입력값을 알아내기 어렵다는 점을 이용하여 암호학적 원리기반
    • 단방향성, 복호 불가 기능을 이용함
  • 비암호화 해시함수
    - 동일한 해시값을 갖는 서로 다른 입력값은 존재하지 않는다는 해시함수의 성질을 이용하여 입력값에 대한 무결성 검증용
    • ex. Checksum

🐢 SHA

  • Secure Hash Algorithm
  • 서로 관련된 암호학적 해시함수 등의 모임

🐢 암호화 해시함수의 특징

  • 역함수를 구할 수 없어서 다시 A로 복호화할 수 없는 단방향 암호화
  • 같은 해시값을 반환하는 2개의 입력값의 쌍이 찾기 힘든 충돌 저항성
  • 제1 역상 저항성 : 해시값을 통해서 입력값을 찾기 어려움
  • 제2 역상 저항성 : 특정 입력값과 같은 해시값을 반환하는 또 다른 입력값을 찾기 어려움
  • 충돌 저항성제2 역상 저항성은 비슷해보이지만 다르다. 충돌 저항성은 암호값이 주어지지 않은 상태에서 충돌을 일으킬 수 있는 두 개의 입력값을 찾는 것이고, 제2 역상 저항성은 한 개의 입력값을 이미 알고 있는 상태에서 그 입력값과 같은 해시값을 반환하는 또 다른 입력값을 찾는 것이다.

🐢 암호화 해시함수의 효과

  • 압축 효과
    - 해시함수가 반환하는 작은 해시값만으로도 거대한 크기의 데이터 무결성을 보장할 수 있는 효과
  • 눈사태 효과
    - 아주 작은 변화로도 결과값이 전혀 다르게 도출되는 효과
    • 또한 변경되는 부분에 있어 어떠한 규칙성도 찾을 수 없음

3.쿠키

🐢 쿠키

  • 서버에서 사용자 브라우저로 전송하는 작은 데이터

🐢 쿠키의 특징

  • 한 개에 4KB까지 저장 가능하며, 최대 300개까지 저장할 수 있음
  • 클라이언트에 저장됨
  • 이름, 값, 만료날짜, 경로 정보가 들어있음
  • 기본적으로 웹 브라우저가 종료되면 삭제됨

🐢 쿠키의 장점과 단점

  • 장점
    - 기존 로그인을 위한 정보를 사용하기 때문에 인증 및 인가를 위한 추가적인 데이터 저장이 필요 없음
    • 서버 대수를 늘리는 Scale-out에도 크게 이슈가 없음
    • 사용자 로컬에 저장되는 만큼 서버와의 통신하는 과정을 없애기에 빠른 속도를 보여줌
  • 단점
    - 사용자의 주요 정보를 매번 요청에 담아야 하기 때문에 보안상의 문제를 가지고 있음
    • 용량 제한이 있어 많은 정보를 담을 수 없음
    • 웹 브라우저마다 쿠키에 대한 지원 형태가 달라 브라우저 간 공유가 불가능함

🐢 IP 서브넷 마스크

  • 로컬 네트워크 내부에서 접속한 호스트의 IP 대역을 외부 네트워크와 명확하게 구분할 수 있는 수단

    • 서브넷
      - 하나의 네트워크가 분할되어 나눠진 작은 네트워크

    • 서브넷팅
      - 네트워크를 분할하는 것


4.세션

🐢 세션

  • 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법

🐢 세션의 특징

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장함
  • 웹 서버에 저장되는 쿠키
  • 서버 용량이 허용하는 한에서 저장 데이터에 제한이 없음
  • 각 클라이언트에 고유 Session ID를 부여

🐢 세션의 장점과 단점

  • 장점
    - 쿠키에 비해 안전
    • 로그인 정보를 유지하여 자동 로그인되는 기능이 있음
  • 단점
    - 쿠키에 비해 조금 느린 편
    • 한계가 존재하는 서버 자원을 사용하므로 속도 저하나 오버헤드 등 서버에 부하를 줄 수 있음
    • 오버헤드
      • 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간이나 메모리 등

5. 토큰

🐢 토큰

  • 서버가 각각의 클라이언트를 누군지 정확히 구별할 수 있도록 유니크한 정보를 담은 암호화 데이터

🐢 토큰의 유형

유형내용
연결형키, 디스크, 드라이브 및 기타 물리적 장치가 시스템에 연결되어 액세스를 허용함
ex) USB 디바이스, 스마트 카드
비접촉형디바이스가 서버와 통신하려면 거리가 충분히 가까워야 하지만 연결을 할 필요는 없음
ex) Microsoft의 매직 링
분리형디바이스가 다른 디바이스와 접촉하지 않고도 먼 거리에서 서버와 통신할 수 있음
ex)이중 요소 인증 프로세스

🐢 토큰 기반 인증

  • 사용자가 자신의 아이덴티티를 확인하고 고유한 액세스 토큰을 받을 수 있는 프로토콜

6. JWT

🐢 JWT

  • JSON Web Token
  • 일반적으로 클라이언트와 서버 사이에 통신할 때 권한을 위해 사용하는 토큰

🐢 JWT 특징

  • JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식
  • JSON 데이터를 Base64 URL safe Encode를 통해 인코딩하여 직렬화한 것이며, 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 들어있음
  • JWT를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게 되며 검증이 완료되면 요청한 응답을 돌려줌

🐢 JWT의 구성요소

🐢 JWT의 장점과 단점

  • 장점
    - JSON 코드 언어로 생선된 토큰은 용량이 매우 작기 때문에 두 엔티티 사이에서 매우 빠르게 전달됨
    • 거의 모든 곳에서 토큰이 생성될 수 있으며, 서버에서 토큰을 확인할 필요가 없음
    • 액세스 가능한 데이터, 권한 지속 시간, 로그인 시 가능한 작업을 지정할 수 있음
  • 단점
    - 단일 키를 이용하기 때문에 키가 유출되면 시스템 전체가 위험에 노출됨
    • 토큰이 복잡하기 때문에 개발자가 암호 서명 알고리즘에 정통하지 않다면 자신도 모르게 시스템을 위험에 빠뜨릴 수 있음
    • 메시지를 모든 클라이언트에게 푸시할 수 없고, 서버 측 클라이언트도 관리할 수 없음
    • 엔티티
      • entity
        • 데이터베이스에 표현하려고 하는 유형, 무형의 객체로서 서로 구별되는 것
profile
hello, world!

1개의 댓글

comment-user-thumbnail
2023년 3월 17일

정말 깔끔하게 정리하시네용! 과연... 띄어쓰기 줄 바꿈 하나하나에 지성이 보입니다...

답글 달기