Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- git
- viewsets
- 오블완
- 자료구조
- 연습
- Doker
- Til
- 장고
- SQL
- github
- 도커
- 코딩테스트
- 아티클 스터디
- 세션(Session)
- docker
- redis
- 쿠키(cookie)
- 티스토리챌린지
- flask
- 파이썬
- 개발공부
- nginx
- Python
- JWT
- ERD
- NoSQL
- CS
- Wil
- web
- django
Archives
- Today
- Total
SteadyDrills
HTTPS와 SSL/TLS 본문
2401104
HTTPS(HyperText Transfer Protocol Secure) 통신
HTTPS는 HTTP(하이퍼텍스트 전송 프로토콜)에 보안 기능을 추가한 프로토콜이다.
기본적으로 HTTP는 클라이언트와 서버 간의 데이터 전송을 담당하지만, 이 과정에서 데이터가 암호화되지 않아 해커나 제삼자가 쉽게 가로챌 수 있어서 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security)라는 암호화 기술을 사용하게 되었다.
HTTPS는 HTTP통신 부분을 직접 TCP와 통신하지 않고 SSL과 통신을 한다.➡️전송 계층과 응용 계층 사이에서 데이터의 보안을 제공하는 프로토콜로, OSI 모델에서 독립적인 계층으로 존재하지 않지만, 두 계층의 기능을 결합하여 안전한 통신을 지원한다.
SSL(Secure Sockets Layer)와 TLS(Transport Layer Security)
SSL은 1990년대 중반 넷스케이프에서 개발되었으며, 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 만들어진 것이다. 현재는 초기 설계에서 생긴 여러 보안 취약점이 때문에 현재는 안전하지 않은 프로토콜로 간주되어 거의 사용하지 않는다.
TLS는 SSL의 후속 프로토콜로, 더 강력한 암호화 알고리즘과 보안 기준을 적용하여 데이터 전송의 안전성을 높였다.
핸드셰이크 과정에서 보안성을 강화하고, 다양한 암호화 방법을 지원합니다.
SSL/TLS의 작동 방식
핸드셰이크( Handshake) 과정
Handshake란 클라이언트와 서버 간의 통신을 시작하기 위해 서로의 정보를 교환하고 연결을 설정하는 과정.
- 클라이언트 헬로(Client Hello)
클라이언트가 서버에 연결 요청을 보내며, 지원하는 프로토콜 버전, 암호화 알고리즘, 랜덤 데이터 등을 포함. - 서버 헬로(Server Hello)
서버는 클라이언트의 요청에 응답하여 사용할 프로토콜 버전과 암호화 알고리즘, 서버의 랜덤 데이터를 전송. - 서버 인증서 전송
서버는 자신의 SSL/TLS 인증서를 클라이언트에 전송하여 신원을 인증. 클라이언트는 이 인증서를 검증하여 서버가 신뢰할 수 있는지 확인. - 프리 마스터 시크릿(Pre-Master Secret)
클라이언트는 서버의 공개 키를 사용하여 프리 마스터 시크릿을 생성하고 이를 서버에 전송. 이 시크릿은 이후의 세션 키를 생성하는 데 사용. - 세션 키 생성
클라이언트와 서버는 프리 마스터 시크릿과 각각의 랜덤 데이터를 기반으로 세션 키를 생성.
암호화된 데이터 전송
핸드셰이크가 완료되면, 클라이언트와 서버는 생성된 세션 키를 사용하여 데이터를 암호화하고 전송한다.
- 데이터 암호화
클라이언트는 전송할 데이터를 세션 키로 암호화하여 서버에 전송. - 데이터 복호화
서버는 수신한 암호화된 데이터를 세션 키로 복호화하여 원본 데이터를 복원. - 양방향 통신
클라이언트와 서버 간의 모든 데이터 전송에 대해 반복되며, 양방향으로 안전한 통신이 가능.
종료
통신이 끝나면 클라이언트와 서버는 연결을 종료. 이 과정에서 세션 키는 더 이상 사용되지 않으며, 새로운 연결을 설정할 경우 새로운 핸드셰이크가 필요하다.
'CS' 카테고리의 다른 글
JWT(JSON Web Token) (0) | 2024.11.18 |
---|---|
소프트웨어 설계 패턴 (0) | 2024.11.13 |
PUT과 PATCH (0) | 2024.09.11 |
인증(Authentication)과 권한(Authorization) (1) | 2024.09.05 |
토큰(Token)과 캐시(Cache) (0) | 2024.09.04 |