네트워크/TIL(Today I Learned)

[네트워크_TIL] HTTPS 동작원리에 대해 그림으로 쉽게 이해합시다!

림케이원 2020. 8. 4.

데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭!

👉 https://github.com/DevLimK1/tistory-map 👈 

 


HTTPHypertext Transfer Protocol의 약자
WWW 상에서 정보를 주고받을 수 있는 프로토콜이다. 

간단히, 네트워크 구간에서 HTML문서를 전송하기 위한 통신규약

 

HTTPS Hypertext Transfer Protocol Over Secure Socket Layer 약자

Secure라는 단어가 포함되어 있는 것을 보면 알 수 있듯이 보안이 강화된 HTTP 프로토콜이라고 볼 수 있다.

 

 

네트워크 공부하면서 HTTP는 많이 들어봤는데

HTTPS가 무엇이고, 어떻게 동작되는 것인지 잘 모르는 경우가 많다.

 

이 포스팅을 통해 HTTPS의 동작원리에 대해 조금이나마 이해할 수 있음 좋겠다😊


 

😀 브라우저와 서버가 http로 통신할 때는 해커가 id/password , credit card를 중간에서 해킹할 수 있다.

 

😀  http로 통신할 때와 달리

https로 통신할 때는 브라우저에서 서버에 요청을 보내면 서버에 public key와 private key가 생성된다.

 

😀 다시 서버에서 브라우저로 응답할 때 server public key가 넘어간다.

그러면 브라우저에서 browser private key가 생성된다.

이 때 웹 서버에서 넘어온 server public key browser private key 암호화 해준다.

 

😀 서버로 넘어온 browser private keyserver private key 암호화를 풀어준다.

 

😀 암호화가 풀어지고, 서버쪽에는 세개의 키가 있게 된다.

브라우저에는 자신의 private key와 서버의 public key를 가지고 있게 된다.

 

😀 브라우저에서 browser private key와 server public key를 조합해서 하나의 symmetric key를 만들게된다.

서버 또한 같으며, 두개의 symmetric key는 완벽하게 같은 key가 되는 것이다.

 

😀 서버에서 브라우저로부터 1234가 암호화된 시그널(위 예제에서는 가상의 시그널인 asdfsdfer4lj2j)을 받고

symmetric key를 이용해서 암호를 풀어주면 똑같이 1234를 받는다.

 

여기서 중요한 것은 실제로 http 프로토콜상에서 사용되는 데이터는

symmetric key로 인해서 암호화가 되기 때문에 3자는 어떤 내용이 오고가는지 알 방법이 없다.

그럼 이제 완벽히 안전한거냐? 그건 아니다.

 

😀 모든 내용은 암호화가 되있어서 안전한 건 사실이다.

하지만 예를 들면 쿠팡에서 쇼핑해서 주문하게되면 신용카드 정보를 넣고 한다면 중간자 어택을 생각해야한다.

중간자 어택이란 중간에 침입자(해커)가 가짜 쿠팡을 만든다.

 

😀 그럼 진짜 쿠팡과 가짜 쿠팡의 차이점이 있어야하는데

그 차이점은 무엇이냐?

바로 진짜 쿠팡사이트에는 3rd party certificate(인증서를 주는 제 3자 보안업체에서 제공하는 인증서) 를 준다.

인증서를 보고 진짜 쿠팡사이트구나 라고 알 수 있다.

 

😀 실제 쿠팡사이트에서 확인해보면,

발급자: Sectigo ~~~ Secure Server CA가 제 3자 보안업체라고 생각하면 된다.

 

😀 브라우저에서 웹서버에 요청을하면 3rd party certificate에서 제공하는

인증서(certificate)와 함께 server public key가 브라우저에 넘어가게된다.

그러면 브라우저에서는 인증서(certificate)를 보고 진짜 쿠팡 서버인지 신뢰할 수 있게 되는 것이다.

 

그럼 인증서는 아무나 발급할 수 있냐? 그건 아니다,

웹 서버를 만들 때 인증서를 받기위해서는 신뢰할 수 있는 업체에서 발급해준 인증서만 브라우저는 accept(허가) 해준다.

 

 

😀 쿠팡에서 봤었던 3rd party certificate를 제공하는 sectigo 회사 사이트이다.

우리의 웹사이트를 체크해서 해커가 만든 사이트인지 아니면 신뢰할 수 있는 사이트인지 체크해서

우리에게 인증서를 발급 해준다.

그럼 사이트를 사용하는 유저들에게 인증서를 넘겨주게 되면 secure 체크를 받을 수 있게된다.

 

 

 

마무리✍

  • Https 통신할 때 private-public key pair가 먼저 교환 된 후symmetric(대칭적인) key가 만들어지면서 브라우저와 서버의 커뮤니케이션은 해커가 읽을 수 없다.
  • 보안 인증서를 제공해주는 기업이 만들어준 3rd party ceticificate 를 이용해서 웹사이트가 믿을만한지 알 수가 있다.
  • 브라우저와 서버의 커뮤니케이션을 외부에서 알 수 없고 , 서버 자체도 제 3자가 인증해주기 때문에 더 안전한 인터넷을 사용할 수 있게 된다.

 

 

참고)

HTTPS 어떻게 동작하는걸까요?(코드없는 프로그래밍)


긴 글 끝까지 읽어주셔서 감사합니다 : )

TIL 포스팅은 스스로 습득한 지식과
강의, 블로그, 서적 등을 참고해서이해한 것을 바탕으로 정보를 공유합니다. 

포스팅에 문제가 있거나, 수정이 필요한 부분 , 질문이 있으시면 댓글 남겨주세요.

도움이 되셨다면 공감()버튼, 댓글은 작성자에게 큰 힘이 됩니다.

댓글