CS로 알아보는 프로젝트 - HTTP와 HTTPS 차이

 

안녕하세요! 

 

혹시 HTTP와 HTTPS의 차이를 알고 계신가요?? 

알고 계신 만큼 스스로 답변해 보세요!

 

많은 여러분들이 알고 있듯 SSL/TLS 인증서를 발급받고 네트워크 종단 간 암호화를 제공하여 안전한 통신을 지원하는 기술입니다.

 

즉, TCP 프로토콜 기반인 HTTP에 Secure 기능 추가하여 제공하는 것입니다!

 

SSL, TLS 많이 들어보셨죠??  그럼 SSL과 TLS의 차이점에 대해 알고 계신가요? 

 

 

SSL(Secure Socket Layer)과 TLS(Transport Layer Security) 전송은 이름에서 알 수 있듯이 안전한 계층 Layer를 웹 통신에 추가하는 방식입니다. 

 

이를 수행하기 위해 웹 서버에 TLS 혹은 SSL 인증서를 발급받고 추가하여 사용하고 있죠.

 

프로젝트에서 사용하신다면 대부분 certBot이나 ZeroSSL를 활용하시라 생각합니다. 

 

TLS는 SSL의 발전 버전으로 최신의 인증서는 대부분 TLS 방식을 활용하고 있습니다. 다만, 편의를 위해 SSL이라고 부르고 있는 것이죠.

 

인증서에 사용되는 암호화 방식은 크게 대칭키 암호화 방식과 비대칭키 암호화 방식을 사용하고 있습니다. 

 

대칭키 방식은 암호화와 복호화 과정에서 사용되는 키가 동일하기 때문에 중간에 키를 탈취당한다면 굉장히 취약해지는 단점을 가지고 있습니다.

 

다만, 연산의 횟수가 적고 빠르게 사용이 가능하다는 장점이 있죠. 

 

다음으로는 비대칭키 암호화 방식입니다. 

공개키는 각 키페어로만 암, 복호화가 가능하기 때문에 안전하지만 수많은 연산이 필요하다는 단점이 존재합니다

 

 

보안을 유지하며 통신이 가능한 이유는 SSL HandShake 과정이 존재하기 때문입니다.

아래 이미지를 보고 통신하는 과정을 이해해 보시면 좋을 것 같습니다.

 

 

 

그럼 왜 HTTPS 통신이 중요하다고 하는 걸까요?? 

 

HTTP을 사용하게 되면 네트워크를 타고 움직이는 패킷의 데이터가 평문으로 나간다는 단점이 존재하여 중간의 해커가 패킷을 탈취하기라도 한다면 여러분들의 개인정보 및 API Key, 아아디, 비밀번호 등이 노출되게 되는 것입니다.

 

중간에 네트워크 패킷을 탈취하여 해당 패킷의 값을 열어보도록 하겠습니다.

아래와 같이 HTTP의 경우 평문의 데이터가 전송되고 있는 것을 확인할 수 있으며 HTTPS 통신을 사용할 경우 평문의 데이터가 암호화되어 보다 안전한 통신이 가능하다는 장점이 존재합니다.

 

 

이제 왜 HTTPS 통신을 사용하는지 아시겠죠?  

 

앞으로도 여러분들이 사용했던 기술들이 내포하고 있는 CS 지식을 공유하도록 하겠습니다. 감사합니다.

 

 

Nginx에 CertBot을 통한 HTTPS 적용법이 궁금하신 분은 아래 포스팅을 참고해보세요! 

https://security-gom.tistory.com/59

 

2. NGINX 설치 With HTTPS(CertBot)

Nginx 설치 sudo apt update sudo apt install nginx -y Nginx 서비스 관리 sudo systemctl start nginx sudo systemctl enable nginx 방화벽 UFW 포트 설정 sudo ufw allow 80 sudo ufw allow 443 도메인:80 으로 접속하면 Nginx 페이지를 확인

security-gom.tistory.com