일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #Swagger-ui
- docker
- server
- 프로세스
- AWS
- React.js
- 모두의캠퍼스
- Reducer
- javascript
- #Swagger
- 카카오게임즈
- Kubernetes
- 북딜
- SRE
- #Swagger-codegen
- 프로세스 통신
- fluentd
- React
- ecs
- 기술PM
- #Swagger-editor
- IP
- Site Reliability engineering
- action
- Redux
- 쿠버네티스 컨트롤러
- #api 문서화
- #스웨거
- 쿠버네티스
- 모캠
- Today
- Total
탕구리's 블로그
SSL 인증과정과 HTTPS - 인터넷 보안을 위한 과정 본문
SSL (Secure Socket Layer) & HTTPS
SSL은 Secure Socket Layer의 약자이며 데이터를 암호화하거나 통신 상대를 인증함으로써 데이터를 보호합니다. 그렇다면 HTTPS는 무엇일까요? HTTPS는 HTTP over SSL의 약자로 HTTP 통신을 SSL로 암호화하여 이용하는 프로토콜입니다.
일반적으로 서버에서는 SSL을 이용하기 위해 소프트웨어를 이용합니다. 오픈소스 프로그램인 OpenSSL과 Window Server에 기본으로 내장되어 있는 IIS가 있습니다.
SSL은 어떻게 보안을 유지하는 방식
SSL에서는 데이터를 보호하기 위해 세 가지 방법을 이용합니다. "암호화", "메시지 다이제스트", "디지털 증명서"입니다. 암호화 과정은 도청을 방지하고, 메시지 다이제스트는 변조를 방지, 디지털 증명서는 위장을 방지합니다.
1. 암호화 : 정해직 규칙에 근거하여 데이터를 변환하는 기술
2. 메시지 다이제스트 : 데이터로부터 고정 길이 데이터를 꺼내는 계산
3. 디지털 증명서 : 통신을 하는 상태가 원하는 상대인지를 증명하는 파일
SSL에 사용된 암호화 방식
SSL에 사용된 암호화 방식에는 "공통 키 암호화 방식"과 "공개키 암호화 방식"이 있습니다.
공통키 암호화 방식은 통신을 수행하는 두 주체 간에 암호화에 사용되는 공통된 키를 가지고 진행하는 암호화 방식입니다. 클라이언트와 서버에 공통된 키를 소유하고 있고 데이터를 암호화하는 키와 복호화하는 키가 동일하기 때문에 키가 유출된다면 문제가 발생합니다. 서로에게 키를 전달하는 방식에 대해서 고민해볼 필요가 있습니다. 공개키를 이용한 암, 복호화하는 과정이 간단하고 처리 부하가 낮습니다.
공개키 암호화 방식은 공개키와 비밀키를 이용하는 방법입니다. 서버에서 공개키와 비밀키를 발급하여 통신을 하는 클라이언트에게 공개키를 노출시키면 클라이언트는 서버와 통신할 때 공개키를 통해 암호화하고 암호화된 데이터는 비밀키를 가지고 있는 서버에서만 복호화를 진행할 수 있습니다. 공통 키 암호화 방식과는 다르게 공개키를 전송하는 방식에 대해서는 큰 문제점이 없습니다. 대신 공개키 암호화 방식은 데이터를 처리하는 과정이 복잡하기 때문에 처리 부하를 고려해야 합니다.
SSL에서는 두 가지 암호화 방식을 모두 이용하여 효율적인 처리를 진행합니다.
SSL은 어떻게 통신 상대를 증명할까?
SSL은 통신 상대를 판별하기 위해 디지털 인증서를 사용합니다. 그렇기 때문엔 인증 서버에는 디지털 증명서가 설치되어 있어야 합니다.
1. 관리자는 서버 소프트웨어에서 비밀키와 공개키를 작성한 후 공개키를 CSR(Certificate Signing Request)과 인증국(CA국)에 제출합니다.
2. 인증국은 여신을 판단 후 CSR에 디지털 서명을 찍어 디지털 증명서로서 관리자에게 반환합니다.
3. 관리자는 인증 국으로부터 돌아온 디지털 인증서를 서버에 설치합니다.
SSL로 암호화가 진행되는 과정
인증서가 서버에 정상적으로 설치되면 클라이언트의 SSL 서비스 요청을 받을 수 있는 상태가 됩니다.
그렇다면, 서버와 클라이언트는 어떻게 SSL를 진행할까요?
1. 서버는 클라이언트가 연결해 오면 공개키와 디지털 서명을 포함한 디지털 증명서를 반환합니다.
2. 클라이언트는 디지털 서명을 보고 디지털 증명서가 올바른 것인지 체크하고, 올바른 증명서라면 공통 키의 재료를 공개키로 암호화하여 서버에게 전달합니다.
3. 서버로 보내져 온 데이터를 자신의 비밀키로 복호화하고 공통키의 재료를 꺼냅니다. 1 ~ 3에 대한 과정을 SSL handshake라고 부릅니다.
4. 클라이언트와 서버는 공통 키의 재료로부터 공통 키를 만들어 이후에는 그것을 이용하여 암호화 통신을 수행합니다.
* 그림 한 장으로 보는 최신 서버 가이드북 - chapter 5를 기반으로 작성된 자료입니다.
'Conception > Computer Network' 카테고리의 다른 글
DomainName과 HostName (1) | 2020.03.07 |
---|---|
커버로스(Kerberos) 프로토콜 (5) | 2019.11.19 |
TCP 와 UDP - 제 4계층의 프로토콜 (0) | 2019.07.31 |
ARP - 목적지의 MAC 주소를 알기위한 장치 (0) | 2019.07.30 |
라우터와 라우팅 - IP를 바탕으로한 패킷의 전송 (0) | 2019.07.29 |