티스토리 뷰

IT/Network

HTTPS

K.Nero 2017. 3. 28. 14:00

HTTPS 는 HTTP 에 보안을 추가한 것으로 S는 Over Secure Socket Layer의 약자이다. 말그대로 SSL(Secure Socket Layer) 프로토콜 위에서 HTTP 를 사용하는 것이다. SSL은 네스케이프에서 발명되어 IETF의 관리로 변경되면서 TLS로 이름이 변경되었다.

SSL은 대칭키와 공개키 암호화 방식을 혼용해서 사용한다. 간단히 설명하면 공개키 방식을 통해 대칭키를 주고받고 실제 통신은 대칭키를 사용하게 된다. 이는 공개키 방식은 대칭키에 비해 안전한 반면 암복호화가 느리고 대칭키는 덜 안전한 반면 암복호화가 빠르기 때문이다.

SSL 인증서는 서버가 신뢰있는 서버임을 보장하고 SSL 통신에 사용할 공개키를 클라이언트에게 제공하는 역할을 한다.

CA(Certificate authority)는 인증서를 발급해 주는 회사로 신뢰성이 보장된 회사를 의미한다. 인증 기관으로 부터 발급받지 않은 인증서로 운영되는 웹 서비스를 이용할 경우 브라우저가 이를 식별하여 알려준다.

HTTPS 연결 과정

1. TCP 3 Way Handshake

2. 클라이언트는 서버에게 지원 가능한(암호, 키교환, 서명, 압축)방식을 서버에게 알려준다.(Client Hello)

3. 서버는 클라이언트에게 지원 가능한(암호, 키교환, 서명, 압축)방식을 응답해 준다. (Server Hello)

4. 서버는 공개키(RSA 암호용)가 포함된 서버 인증서를 클라이언트에게 발송한다. 

5. 만약 서버가 클라이언트 인증서를 요구할 때 이에 대한 요청도 함께 발송한다.

6. Server Hello 완료

7. 서버가 클라이언트 인증서를 요구할 경우 인증서를 서버로 전송한다.

8. 클라이언트는 전송받은 서버 인증서에 대해 브라우저에 내장된 신뢰 기관으로부터 발급 여부를 확인한 후 암호화키로 사용될 세션 키(대칭키)를 랜덤으로 생성하여 공개키로 암호화해 서버로 전송한다.

9. 서버는 자신의 개인 키로 클라이언트에게 전송받은 세션키를 복호화한다.

10. 서버는 협상 과정에서 전송된 모든 메시지에 대하여(암호, 키교환, 서명, 압축)방식을 다음부터 적용할 것을 알리는 종결 메시지를 발송한 후 데이터 전송단계로 이동한다.

- 여기까지 모두 정상적으로 완료된다면, 클라이언트와 서버 모두 동일한 세션키(대칭키)를 공유하게 되는 것이다.

11. 클라이언트는 협상 과정에서 전송된 모든 메시지에 대하여(암호, 키교환, 서명, 압축) 방식을 다음부터 적용할 것을 알리는 종결 메시지를 발송한 후 데이터 전송단계로 이동한다.

12. 앞 단계에서 서로 공유된 세션키로 암호화된 전송 과정이 시작된다.

'IT > Network' 카테고리의 다른 글

TCP keepalive  (0) 2017.02.24
RESTful API 만들기  (0) 2016.11.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함