HTTPS 특징

백PM ㅣ 2022. 9. 28. 02:06

HTTP(Hyper Text Transfer Protocol)와 HTTPS(Hyper Text Transfer Protocol Secure) 둘 다 WWW(World Wide Web) 상의 통신규약을 말하는 것이지만,

HTTPS의 Secure 가 의미하는 바처럼 HTTPS는 보안이 더 뛰어납니다.

그럼 무엇때문에 HTTPS가 보안이 더 뛰어난지 살펴보겠습니다.

1. 암호화

HTTP는 상대에게 요청을 할때 지난번에 배운 Get방식 또는 Post방식을 사용하여 요청내용을 전달합니다.

그러나 전혀 암호화를 하지않으므로 그 내용을 제 3자에 의해 도청당할 위험이있습니다.

따라서 민감한 내용을 전달할 때는 반드시 암호화가 필요합니다.

HTTPS 프로토콜은 통신을 할때 그 내용을 반드시 암호화하는 것으로 정해져있습니다.

그러면 제 3자가 서버와 클라이언트간 요청패킷을 스니핑하더라도 그 내용이 무엇인지 알기가 어렵습니다.

암호화는 공개키 및 비대칭키 방식으로 됩니다.

서로 다른 한쌍의 공개키와 비밀키가 있어서 공개키로 암호화를 하면 비밀키로 복호화하고, 비밀키로 암호화하면 공개키로 복호화해야 합니다.

암호화에 관한 더 구체적인 방법이 더 알고싶으시다면 아래 링크를 참고바랍니다.

 

 

2. 신뢰성 보증

HTTPS는 신뢰성있는 사이트들을 구분할 수 있습니다.

어떤 사이트가 인증기관의 검증을 거쳐 신뢰성을 인증받으면 CA(Certificate Authority) 목록에 등록됩니

마이크로소프트 edge, 크롬, 파이어폭스 등 웹브라우저에는 내장된 CA 목록이 있어서 그 목록에 등록되어 있지 않은 웹사이트를 방문하게 될때는 "실뢰할 수 없는 사이트"라는 경고문구가 뜨게 됩니다.

더 구체적으로 어떤 과정을 거쳐 클라이언트가 서버의 신뢰성을 확인하는지 알아보겠습니다.

클라이언트가 서버를 처음 접속하면 그 둘은 먼저 서로 "handshake"라는 것을 하게됩니다.

"handshake"는 클라이언트와 서버 양쪽에서 무작위의 데이터를 생성하고 서로에게 전달하는 것을 말합니다.

특히 서버에서 클라이언트에 데이터를 보낼 때는 그 서버의 CA 인증서를 함께 보냅니다.

서버에서 보낸 인증서는 해당 CA의 비밀키로 암호화되어 있습니다.

클라이언트는 웹브라우저에 내장되 CA목록에서 해당 사이트의 공개키를 가져와 인증서를 복호화 합니다.

 

만일 이 사이트가 목록에 처음부터 없으면 인증에 실패할 것이며,

사이트가 가짜라면 인증서가 CA의 비밀키가 아닌 다른 키로 암호화되어 있을 것이므로 또한 인증에 실패합니다.

만일 CA의 공개키로 인증에 성공하면 클라이언트는 인증서 안에 있는 서버의 공개키를 얻게 됩니다.

또한 클라이언트는 처음에 서로 교환한 클라이언트와 서버의 두 무작위 데이터를 조합해서 대칭키를 만들어냅니다.

클라이언트는 그 대칭키를 서버의 공개키로 암호화해 서버에 전달합니다.

이러한 과정이 끝나면 인증이 완료되고 클라이언트와 서버는 공유된 대칭키를 이용해 암호화된 정보를 주고받습니다.

'네트워크' 카테고리의 다른 글

우분투에서 툴 도움없이 서버 구동하기(톰캣, 서블릿)  (0) 2022.09.28
web.xml ?  (0) 2022.09.28
HTTP 상태코드 표  (0) 2022.09.28
쿠키와 세션 +캐시  (0) 2022.09.28
OSI 7계층  (1) 2022.09.28