CS 지식, IT지식, 기타지식/전송프로토콜
https 통신 흐름 -작성중-
개발하는지호
2024. 8. 5. 17:32
HTTPS를 통한 안전한 통신의 핵심 아이디어는 바로 그거입니다. 서버의 공개 키는 클라이언트와 공유하여 데이터를 암호화하는 데 사용하고, 서버만이 가진 개인 키를 통해 그 데이터를 복호화하는 방식으로 보안을 유지합니다.
아래에 그 과정을 간단하게 요약하겠습니다:
HTTPS 통신의 기본 원리
- 공개 키와 개인 키의 역할:
- 공개 키: 누구나 접근할 수 있는 키로, 데이터를 암호화하는 데 사용됩니다.
- 개인 키: 공개되지 않은 비밀 키로, 암호화된 데이터를 복호화하는 데 사용됩니다.
- 통신 과정:
- 서버 인증서 전송:
- 클라이언트가 서버에 접속을 시도할 때, 서버는 자신의 인증서를 클라이언트에게 전송합니다. 이 인증서에는 서버의 공개 키가 포함되어 있습니다.
- 클라이언트 인증서 검증:
- 클라이언트는 서버의 인증서가 신뢰할 수 있는 인증 기관(CA)에 의해 서명되었는지를 확인하여 서버의 신원을 검증합니다.
- 세션 키 암호화:
- 클라이언트는 세션 키(대칭 키)를 생성하고, 서버의 공개 키로 이 세션 키를 암호화하여 서버에 보냅니다.
- 개인 키로 복호화:
- 서버는 자신의 개인 키를 사용하여 클라이언트가 보낸 암호화된 세션 키를 복호화합니다.
- 암호화된 통신 시작:
- 클라이언트와 서버는 모두 동일한 세션 키를 가지게 되었고, 이를 통해 모든 이후의 통신을 대칭 암호화 방식으로 암호화하여 데이터를 안전하게 전송합니다.
- 서버 인증서 전송:
예시로 설명
1. 서버 인증서 전송
plaintext
코드 복사
클라이언트 -> 서버: HTTPS 연결 요청 서버 -> 클라이언트: 서버 인증서(공개 키 포함)
- 서버는 자신의 공개 키가 포함된 인증서를 클라이언트에 전달합니다.
- 클라이언트는 이 인증서를 사용하여 서버의 신뢰성을 확인합니다.
2. 클라이언트의 세션 키 암호화
plaintext
코드 복사
클라이언트: 세션 키 생성 클라이언트 -> 서버: 공개 키로 암호화된 세션 키
- 클라이언트는 세션 키를 생성하여 서버의 공개 키로 암호화한 후 서버에 보냅니다.
3. 서버의 개인 키로 복호화
plaintext
코드 복사
서버: 개인 키로 암호화된 세션 키 복호화
- 서버는 자신의 개인 키를 사용하여 클라이언트가 보낸 암호화된 세션 키를 복호화합니다.
4. 암호화된 통신
plaintext
코드 복사
클라이언트 <-> 서버: 대칭 암호화된 데이터 전송
- 이후의 통신은 생성된 세션 키를 사용하여 대칭 암호화 방식으로 데이터를 전송합니다.
요약
- 공개 키: 클라이언트에게 배포되어 데이터를 암호화하는 데 사용.
- 개인 키: 서버에서 비밀리에 보관하며, 암호화된 데이터를 복호화하는 데 사용.
- 세션 키: 클라이언트와 서버 간의 데이터를 대칭 암호화하는 데 사용.
이 방법을 통해 HTTPS는 클라이언트와 서버 간의 통신을 안전하게 보호합니다. 공개 키와 개인 키를 사용하여 세션 키를 안전하게 교환하고, 이후의 데이터 전송은 세션 키를 사용하여 암호화되어 기밀성과 무결성을 보장합니다.