1. HTTP
- Hypertext Transfer Protocol
- 클라이언트와 서버 간 데이터를 전송하기 위한 통신 규약
- 텍스트 기반 프로토콜
- TCP/IP 프로토콜을 기반으로 작동
- Stateless (무상태), 즉 각각 요청이 서로 독립적이며 이전 요청의 상태를 기억하지 않음
- 웹 브라우저가 URL을 입력하여 웹 페이지를 요청하면 웹 서버는 해당 페이지의 HTML 파일과 필요한 이미지, 자바스크립트 파일 등 응답으로 보낸다. 이러한 요청과 응답은 HTTP 메세지 형태로 이뤄진다
2. SSL
- Secure Sockets Layer, 보안 소켓 계층
- 네트워크 통신에서 데이터의 보안 및 안정성을 제공하기 위한 프로토콜
- 즉, 데이터를 암호화하고 안전하게 전송하기 위해 사용됨
3. TSL
- Transport Layer Security, 전송 계층 보안
- SSL 후속 버전
- SSL의 보안 취약점을 보완하고 확장
- TSL 현재 인터넷 통신에서 가장 널리 사용되는 보안 프로토콜 중 하나
- SSL과 TSL은 혼용되어 사용되기도 하지만, TSL가 SSL을 대체하고있는 추세
4. HTTPS
- Hypertext Transfer Protocol Secure
- HTTPS는 웹 브라우저와 웹 서버 간의 통신을 암호화하여 보호하는 데 사용됨
- HTTP 통신은 데이터가 평문으로 전송되기 때문에 중간에 가로채거나 도청당할 수 있는 보안상의 취약점이 있음
- 이에 반해 HTTPS는 SSL/TLS을 사용하여 통신 내용을 암호화 한다
4.1 HTTPS 필요성
- 개인 정보 보호
- 통신 과정에서 전송되는 데이터를 암호화하여 제3자가 데이터를 해킹하는 것을 방지
- ex) 로그인, 신용 카드, 개인 정보 등
- 무결성
- 데이터가 전송되는 동안에는 데이터가 변조되지 않음을 보장
- 식별
- 클라이언트와 서버간의 신원을 인증하는데 사용
4.2 두 가지 유형의 암호화 알고리즘
4.2.1 대칭키 알고리즘
- 하나의 키를 사용하여 데이터를 암호화하고 복호화하는 방식
- 암호화된 데이터를 복호화하려면 동일한 키 필요
- ex) AES
- 단점으로는 키를 관리하기 어렵고, 키를 가진 모든 사용자가 데이터를 암복호화 가능
4.2.2 비대칭키 알고리즘
- 두 개의 키 쌍을 사용하여 데이터를 암호화하고 복호화 함
- 데이터를 암호화할 떄는 공개키를 사용 복호화할 때는 비공개키를 사용
- ex) RSA
- 대칭키 알고리즘에 비해 보안성이 뛰어나지만, 계산 비용이 더 많이 들거나 처리 속도가 느릴 수 있음
5. SSL/TSL 핸드셰이크 과정
- Client Hello
- 클라이언트는 서버에게 SSL/TLS 연결을 시작하겠다는 메세지를 보낸다. 이 메세지에는 클라이언트가 지원하는 SSL/TLS 버전과 암호화 알고리즘 목록 그리고 클라이언트가 생성한 랜덤 값을 포함한다
- Server Hello
- 서버는 클라이언트의 요청을 받으면, 클라이언트에게 SSL/TLS 연결에 필요한 정보를 제공하는 메세지를 보낸다. 이 메세지에는 클라이언트와서버가 사용할 SSL/TLS 버전, 선택된 암호화 알고리즘, 그리고 서버가 생성한 랜덤한 값을 포함한다
- 선택된 암호화 알고리즘은, 클라이언트가 전송한 SSL/TLS 버전과 암호화 알고리즘 목록의 정보에서 서버가 선택한다
- 서버는 클라이언트의 요청을 받으면, 클라이언트에게 SSL/TLS 연결에 필요한 정보를 제공하는 메세지를 보낸다. 이 메세지에는 클라이언트와서버가 사용할 SSL/TLS 버전, 선택된 암호화 알고리즘, 그리고 서버가 생성한 랜덤한 값을 포함한다
- Certificate
- 서버는 클라이언트에게 자신을 인증하기 위한 서버 인증서, 인증기관(CA)으로부터 발급 받은 디지털 서명도 함께 포함해서 전달한다
- 클라이언트는 공개된 Root CA의 퍼블릭 키를 통해 디지털 서명을 복호화 하여 인증서의 유효성을 확인한다
- Server Hello Done
- 서버는 핸드셰이크 과정에서 필요한 모든 정보를 전달했음을 클라이언트에게 알리는 메세지를 전달한다
- Client Key Exchange
- Change Cipher Spec
- 클라이언트는 Pre Master Secret을 생성하여 이를 서버의 공개키로 암호화 하여 서버에게 전송한다
- 서버는 자신의 개인키를 사용하여 Pre Master Secret을 복호화 한다.
- 클라이언트와 서버는 공통의 비밀키를 생성할 수 있게 된다.
- Finish
- 클라이언트와 서버는 핸드셰이크 과정이 완료되었음을 알리기 위해 Finsh 메세지를 전송한다
- Change Cipher Spec
- Encrypted SSL/TLS Connection
- Master Secret 생성
- 클라이언트와 서버는 Pre Master secret, Client random, Server random 값을 가지고 Master Secret 키를 생성한다
- Session 키와 MAC키 생성
- Master Secret 키를 사용하여 클라이언트와 서버는 각각 Session키와 MAC(Message Authentication Code) 키를 생성한다. Session 키는 암호화된 통신에 사용되며, MAC 키는 데이터의 무결성을 확인하는데 사용된다.
- 암호화 통신 시작
- 클라이언트는 패킷을 보낼 때 이전에 생성된 Session 키와 MAC 키를 사용하여 데이터를 암호화 한다. 암호화된 데이터는 서버에게 전송된다
- 데이터 무결성 확인
- 서버는 클라이언트로부터 받은 암호화 데이터를 Session 키를 통해 복호화하고, 복호화된 클라이언트 MAC키와 서버 MAC키를 비교하여 데이터의 무결성을 확인한다. 데이터의 무결성이 확인되면 서버는 해당 데이터를 처리하고 클라이언트에게 응답을 보낸다
- Master Secret 생성
https://brunch.co.kr/@growthminder/79
HTTPS 원리 이해하기
https의 원리를 정확히 알고 계시나요? | 최근 대부분의 웹사이트는 HTTPS를 사용한다. 간단한 이벤트 페이지조차 예외가 아니다. 그만큼 보편적으로 사용되고 있는 것이 바로 HTTPS이다. 하지만 면
brunch.co.kr
How HTTPS Works
🙀 A cat explains how HTTPS works...in a comic! 😻
howhttps.works
'Etc' 카테고리의 다른 글
[WebRTC] Guide (0) | 2023.09.09 |
---|