애플리케이션 서비스 03. Cookie & SSL/TLS

2021. 4. 4. 20:50Computer(인강)/네트워크

728x90
반응형

안녕하세요 bannavi입니다^ㅅ^

오늘은 Cookie와 SSL/TLS에 대해서 배워볼거에요

바로 시작하겠습니다

 

 

 

 

 


HTTP 속성

 

1. Stateless

1) HTTP는 통신이 끝나면 상태 정보를 유지하지 않는다

 

2) 서버는 HTTP 요청에 대한 응답을 보내고 접속을 끊어 커넥션 리소스 비용을 줄인다

Client가 서버에 GET을 요청하게 되는데(response로 특정 url을 보여주거나 pdf분석 파일이나 그림파일을 응답을 보낼것)

그럼  그에 대한 Request에 대한 응답을 하고 나서 접속을 끊고 커넥션 리소스 비용을 줄인다. 엥 왜끊어? 굳이 가지고 있을 필요 없다는거죵

우리가 www.naver.com만 접속을 해도 세션session이 50-60개 씩 발생을 하거든요...!

 

3) 단순 페이지 또는 문서 정보 열람은 가능

 

4) 하지만 클라이언트가 새로운 페이지를 접속할 때마다 서버는 신원을 알 수 없다

 

5) 예를 들어, 인터넷 쇼핑몰의 경우 페이지마다 인증이 필요

 

6) 회원 정보 식별, 로그인 여부, 결제 정보 및 장바구니 등

 

7) 해결책 = Cookie & Session

http라는 프로토콜을 이용해서 인터넷 쇼핑을 해야하는데 방법이 없을까 해서 나온 것

 

8) Stateful : 상태 정보 유지(Stateless 이는 Stateful이라는 단어의 반대이다)

 

 


 

HTTP Cookie

 

정의 : 클라이언트 웹 브라우저 로컬에 저장되는 키와 값이 들어 있는 파일

한마디로, 웹서버가 클라이언트의 정보를 습득하기 위한 파일

 

속성 : 이름, 값, 도메인, 만료일, 경로 - 일정 시간 정보 저장 -> 로그인, 장바구니

 

Session의 정의 : 서버는 일정 시간 같은 웹브라우저의 요청이 들어오면 하나의 상태로 유지

 

서버는 클라이언트에 대한 세션ID 발급 및 보유 -> 쿠키로 전달 -> 동일 세션ID로 접속 -> Response

 

웹브라우저가 웹서버에 접속을 하게 됐을 때, 서버는 각각의 클라이언트에 대해서 세션 id를 발급을 해줍니다 해시값 같은건데,

그 발급된 값은 쿠키로 전달이 된다. 웹브라우저는 다음에 접속시 세션 아이디로 접속을 하게된다.

웹서버 입장에서는 동일한 세션 아이디로 접속을 하게 되면, 그 동일한 세션 아이디에 맵핑되어 있는 정보들이 주르륵 있습니다.

그 정보를 확인해서 다양한 상태를 확인하고 서비스를 response하는거죠

 

 

# Cookie 확인

웹브라우저(크롬)에서 웹사이트 접속 후 F12 클릭 - 메뉴 - Application - Cookie

아하, 쿠키는 사용자 로컬에 정보가 저장되는거구나 - 유출 또는 조작 가능

Session은 버서에 정보를 저장(안전) - 인증에 세션을 사용 - 세션 하이재킹? - HTTPS(해결책으로 나온것 끝에 s가 붙으면 암호화) - SSL/TLS(앞의 괄호 내용을 구현해주는 프로토콜)

 

 


 

 

SSL/TLS

 

 

정의 : SSL(Secure Socket Layer) / TLS(Transport Layer Security)

TCP/IP 네트워크 통신간 보안을 제공하는 프로토콜

 

Netscape라는 회사가 만든 SSL 1.0 -> SSL 2.0 -> SSL 3.0(1996)

 

IETF 국제기관에서 1999년 TLS 1.0 -> TLS 1.1 -> TLS 1.2(SHA2) -> TLS 1.3(2018년) - 확장 SNI 암호

 

HTTPS(Hypertext Transfer Protocol Secure) = HTTP over TLS(HTTP라는 프로토콜을 TLS로 한번 휘감아서 암호화시켜 보내겠다)

 

http로 접속하면 자물쇠 표시가 없는데 https로 접속하면 자물쇠가 있음

주요 웹 브라우저 2020년 상반기 TLS 1.0, TLS 1.1 지원 중단 - POODLE(알고리즘이 약함) & BEAST(하이재킹) 취약점

 

기능 : 인증 - Client to Server 통신 간 상대방에 대한 인증 - RSA, DSS

 

무결성 - 메시지 인증 코드로 제공 HMAC - MD5, SHA-2

 

기밀성 - 데이터 암호 - 3DES, RC4

 

프로토콜 구성 :

상위

HandShake : 키 교환 방식, 암호화 방식, HMAC 방식, 압축 방식 등을 협상

Change Cipher Spec : 협상 정보가 적용됨을 알림

Alert : 협상 과정에서 제시한 암호화 방식을 지원 못하는 경우 알림

 

하위

Record : 데이터 교환, 메시지를 전송

 

 

# TLS Stack

TLS 계층은 상위 3개 프로토콜, 하위 Record 프로토콜로 구분

상위 계층에서 협상 후 Record 프로토콜에서 Application 데이터를 분할, 압축, 암호화

 

# 동작 과정

1. 클라이언트는 지원 가능한 cipher suite 전달

2. 서버는 자신이 지원하는 cipher suite 전달

3. Certifivate : 서버 인증서 전달

ServerKeyExchange : DH 키교환 - 키 전달

CertificateRequest : 인증서 요청

ServerHelloDone : 모든 메시지 전달 완료

4. Certificate : 클라이언트 인증서 전달

ClientKeyExchange : DH, 클라이언트 키 교환

CertificateVerify : 인증서 확인

버전, cipher suite 결정, 상대방 신원 확인 완료

5. ChangeCipherSpec Finished

TLSCiphertxt 전송, 협상된 키가

 


 

Wrap up

1. HTTP는 Stateless로 통신이 끝나면 상태 정보를 유지하지 않는다

2. 상태 정보가 필요한 경우를 위해서 Cookie & Session 기술이 있다

3. Cookie는 클라이언트 웹 브라우저 로컬에 저장되는 정보 - 로그인

4. Session은 동일한 웹브라우저의 요청을 하나의 상태로 구분하여 서버에 정보를 저장

5. SSL/TLS(Transport Layer Security)은 TCP/IP 통신간 보안을 제공하는 프로토콜

6. TLS 상위 HandShake, Change Cipher Spec, Alert, 하위 Record 프로토콜로 구성

728x90
반응형