Network

[Network] HTTP vs HTTPS

JoonYong 2024. 2. 12. 19:50

1. HTTP와 HTTPS란?

HTTP(Hypertext Transfer Protocol)HTTPS(Hypertext Transfer Protocol Secure)는 웹에서 데이터를 전송하기 위해 사용되는 프로토콜입니다. 여기서 프로토콜이란 컴퓨터나 네트워크 장비가 서로 통신하기 위한 규약을 말합니다.

 


2. HTTP의 특징

https://achieve-dev.tistory.com/34

 

[Network] HTTP(Hypertext Transfer Protocol)

1. HTTP의 시작 1990년도 Tim Berners-Lee와 그의 동료들이 웹을 세상에 내놨을때 웹은 크게 4가지 요소였습니다. HTML : 웹페이지를 만드는 컴퓨터 언어 URL, URl : 원하는 웹 페이지에 방문할 수 있게 해주

achieve-dev.tistory.com

HTTP에 대한 자세한 내용은 이전에 작성했던 게시글을 참고하시면 좋겠습니다!

 

HTTP는 웹 서버와 웹 브라우저 사이에서 정보를 주고받는 데 사용됩니다. 클라이언트가 HTTP를 통해 요청을 보내면, 서버는 그 요청에 따른 결과를 응답으로 돌려줍니다.

그러나 HTTP의 문제점은 바로 보안입니다. HTTP를 통해 전송되는 정보는 암호화되지 않아, 중간에서 데이터를 가로채는 것이 가능합니다. 이를 '중간자 공격(Man-In-The-Middle Attack)'이라고 부릅니다.

 


3. HTTPS의 특징

HTTPS는 기본적으로 HTTP의 보안 버전이라고 할 수 있습니다. HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 통신을 암호화합니다.

이로 인해 HTTPS는 중간에서 데이터를 가로채더라도, 암호화되어 있어 원본 데이터를 알아볼 수 없습니다. 따라서 로그인 정보, 신용카드 정보 등과 같은 민감한 정보를 주고받는 웹 사이트에서는 HTTPS를 사용하는 것이 필수적입니다.

 

HTTPS에서 사용되는 암호화 방법은 크게 두 가지, 즉 대칭키 암호화비대칭키 암호화입니다. 이 두 가지 방법은 조합되어 사용되어, 안전하면서도 효율적인 데이터 전송을 가능하게 합니다.

 

3-1) 대칭키 암호화

 대칭키 암호화는 동일한 키를 암호화와 복호화에 모두 사용하는 방법입니다. 이 방법은 비교적 빠르고 효율적이지만, 키를 안전하게 교환하는 것이 어렵다는 단점이 있습니다. 대칭키 암호화는 HTTPS 통신에서 실제 데이터를 암호화하고 복호화하는 데 사용됩니다.

 

3-2) 비대칭키 암호화

 비대칭키 암호화는 두 개의 키, 즉 공개키와 개인키를 사용하는 방법입니다. 한 키로 암호화하면 다른 키로만 복호화할 수 있습니다. 이 방법은 안전하지만 대칭키 암호화에 비해 처리 속도가 느리다는 단점이 있습니다. 비대칭키 암호화는 HTTPS 통신에서 대칭키를 안전하게 교환하는 데 사용됩니다.

 

3-3) 대칭키+비대칭키 암호화

 HTTPS 통신이 이루어질 때, 클라이언트와 서버는 먼저 비대칭키 암호화를 사용하여 안전하게 대칭키를 교환합니다. 이렇게 교환된 대칭키는 이후의 통신에서 데이터를 암호화하고 복호화하는 데 사용되며, 이 과정을 'SSL/TLS 핸드셰이크'라고 부릅니다. 이런 방식으로 HTTPS는 대칭키의 효율성비대칭키의 안전성을 모두 활용하게 됩니다!!

 

 


4. HTTP, HTTPS 이외의 프로토콜

  1. SSH(Secure Shell): 원격 컴퓨터와 안전하게 통신하고 제어하기 위한 프로토콜입니다. 네트워크를 통해 다른 컴퓨터에 로그인하거나, 파일을 안전하게 전송하는 등의 작업에 사용됩니다.
  2. FTP(File Transfer Protocol): 파일 전송을 위한 프로토콜로, 클라이언트와 서버 사이에서 파일을 전송할 때 주로 사용됩니다. FTP는 사용자 이름과 비밀번호를 이용해 인증을 수행하며, 파일 전송은 비암호화 상태로 이루어집니다.
  3. SMTP(Simple Mail Transfer Protocol): 이메일 전송을 위한 프로토콜로, 이메일 서버 사이에서 메일을 전송하거나 사용자가 메일 서버에 메일을 전송하는 데 사용됩니다. 메일 내용과 제목, 수신자 정보 등을 포함한 메시지를 전송하는데 이용됩니다.