[네트워크 network] HTTP/HTTPS 란?

resilient

·

2021. 7. 19. 18:02

728x90
반응형

 

먼저 시작하기 전에 지금 도메인을 자세히 보겠습니다. HTTPS인 경우가 대부분일텐데요. HTTP? HTTPS?의 차이를 이번시간에 알아보겠습니다. 

 

HTTP(HYPERTEXT TRANSFER PROTOCOL)

 

HYPERTEXT? 어디서 많이 들어봤는데요. 맞습니다. HTML에서도 HYPERTEXT라는 단어가 들어가죠. 하이퍼텍스트가 뭘까요? 간단하게 정리하면,컴퓨터 디스플레이나 독자가 즉시 액세스 할 수 있는 다른 텍스트에 대한 참조(하이퍼 링크)가 있는 기타 전자 장치에 표시되는 텍스트라고합니다.

 

돌아와서, HTTP는 웹 상에서 클라이언트와 서버가 서로 정보를 주고받을 수 있도록 하는 OSI7계층 중 7계층(애플리케이션 계층)의 프로토콜/규약입니다. 우선 클라이언트는 서버에 정보(데이터) 전송을 요청(Request)할 수 있는 클라이언트 소프트웨어가 설치된 컴퓨터(사용자)를 의미하는데요, 클라이언트는 URL(Uniform Resource Locator)로 된 HTTP를 통해 서버에게 정보 송신을 요청하죠.

 

HTTP는 애플리케이션 레벨의 프로토콜이라고 위에서 언급했는데요, TCP/IP 위에서 작동합니다. 보통 80번 포트를 사용하고 HTTP는 상태를 가지고 있지 않은 Stateless 프로토콜이며 Method, Path, Headers, Version, Body 이렇게 구성되어 있죠.

 

 

HTTPS(HYPERTEXT TRANSFER PROTOCOL  Secure)

HTTPS는 HTTP뒤에 S가 하나가 붙었죠? S는 바로 Secure 즉, 암호화가 추가된 프로토콜입니다.

 

HTTPS는 HTTP를 보완하는 수단이라고 할 수 있죠. 주로 443번 포트를 이용합니다. HTTP는 암호화되지 않았기 때문에 도난이나, 변조, 도청이 가능한 반면 HTTPS는 HTTP의 일반 텍스트(Text)에 SSL 이나 TLS 프로토콜을 씌워 데이터를 암호화하는 기법이고 로그인, 권한, 결제 등의 기능 구현에서 많이 사용하곤 합니다.

 

대칭키 암호화와 비대칭키 암호화

 

대칭키 방식: 클라이언트와 서버가암호화할 때와 복호화할 때 같은 키를 사용하는 방식입니다.

  • 장점 : 단순한 구조로 연산 속도가 빠릅니다.
  • 단점 : 공통 키를 빼앗기면 복호화를 할 수 있으므로 보안에 취약하다는 단점이 있죠.

대칭 키 암호화

 

 

 

비대칭 키 방식: 암호화할 때와 복호화할 때 다른 키를 사용하는 비대칭 방식입니다.

  • 클라이언트는 공통 키를, 서버는 인증서와 공개 키를 제공하며 클라이언트는 서버가 제공한 공개 키를 통해 공통 키를 암호화하여 서버에게 전송한다. 서버는 수신한 HTTPS의 인증서와 공개 키 일치를 바탕으로 공통 키를 복호화해 요청을 파악하죠.
  • 장점: 키 전송과정 중 빼앗겨도(해킹 당해도) 빼앗은 자(해커)가 해독을 할 수 없으니 공통 키 방식보다 보다 안전하다.
  • 단점: 공통 키 방식보다 느리고 리소스 소비가 큽니다.

암호화를 공개키로 하느냐 개인키로 하느냐에 따라 얻는 효과가 다른데, 공개키와 개인키로 암호화하면 각각 다음과 같은 효과를 얻을 수 있습니다.

  • 공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화할 수 있습니다. -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있습니다.
  • 개인키 암호화: 개인키로 암호화하면 공개키로만 복호화할 수 있습니다. -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있습니다.

그럼 HTTPS가  대칭키 암호화와 비대칭키 암호화 모두 쓴다는 것은?

 

HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 모두 얻고 있습니다. 즉, 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되는 것이고, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용되는 것이죠.


HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환하고 여기서 세션키는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어지는 것이죠.
문제는 이 세션키를 클라이언트와 서버가 어떻게 교환할 것이냐 인데, 이 과정에서 비대칭키가 사용됩니다.

 

 

정리

 

HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있습니. 하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느리죠. 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생합니다.

 

그렇다면 언제 HTTP를 쓰고, 언제 HTTPS를 쓰는 것이 좋을까요?

 

개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용하면 될 것 같습니다.




반응형