본문 바로가기
IT

[HTTP와 HTTPS] 웹 통신의 기초와 보안 강화 방법

by 승븐지 2022. 12. 11.
반응형
반응형

HTTP(Hyper Text Transfer Protocol)란?

[서버와 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.]

 

HTTP는 인터넷에서 Hyper Text를 교환하기 위한 통신 규약이므로 , 80번 포트를 사용하고 있다. 

HTTP 서버가 80번 포트에서 요청을 기달리고 있으며 , 클라이언트는 80번 포트로 요청을 보내게 된다.


HTTP(Hyper Text Transfer Protocol)의 구조

 

HTTP는 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. HTTP는 상태를 가지고 있지 않는

Stateless(무상태 프로토콜)이며 Method , Path , Vesion , Headers , Body 등으로 구성이된다.

 

 

HTTP는 암호화가 지원되지 않는 평문 데이터를 전송하는 프로토콜이기 때문에 , HTTP로 비밀번호 , 주민등록번호

등을 주고 받으면 제3자가 정보를 조회할 수 있다는 치명적인 단점을 가지고있다. 이러한 문제를 해결하기 위해서 

HTTPS가 등장하게 된다.  


HTTPS(Hyper Text Transfer Protocol Secure)란? 

 

[HTTP에 암호화가 추가된 프로토콜이다.!]

 

HTTPSHTTP와 다르게 443번 포트를 사용하며 , 네트워크 상에서 HTTP와 다르게 중간에서 제3자가 볼 수 없도록 암호화를 지원하고 있다..!

 

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

 

HTTPS대칭키 암호화비대칭키 암호화 방식을 둘 다 사용하고 있다. 각각의 암호화 방식을 알아보자.

 

  • 대칭키 암호화 
    • 클라이언트와 서버가 동일한 키를 사용하여 암호화와 복호화를 진행한다.
    • 키가 노출되면 매우 위험하다. 하지만 연산속도가 빠르다는 장점이 있다. 
  • 비대칭키 암호화
    • 1개의 쌍으로 구성되어 있는 공개키와 개인키를 암호화와 복호화를 하는데 사용한다.
    • 키가 노출되더라도 비교적 안전하다. 하지만 연산속도가 대칭키보다 느리다.

대칭키는 비교적 쉬운 개념이다 , 비대칭키에 대해서 조금 더 상세히 알아보자. 

비대칭키 암호화는 공개키와 개인키 암호화 방식을 이용하여 데이터를 암호화 하고있다. 공개키와 개인키는 서로를 위한

1쌍의 키이다.

 

  • 공개키: 모두에게 공개 가능한 키이다.
  • 개인키: 나만 가지고 알고 있어야 하는 키이다.

암호화를 공개키로 하냐 개인키로 하냐 얻는 효과가 다르다. 공개키와 개인키로 암호화 하면 각각 다음과 같은 효과를 얻을 수 있다.

  • 공개키 암호화: 공개키로 암호화 하면은 개인키로만 복호화를 할 수 있다. -> 위에 설명했듯이 개인키나만 알고 있는 키이다. 그러므로 나만 볼 수 있다.
  • 개인키 암호화: 개인키로 암호화 하게 되면은 공개키로 복호화 할 수 있다(공개키 암호화와 반대이다). -> 공개키 모두에게 공개 가능한 키이므로 , 내가 인증한 정보임을 알리며 신뢰성을 보장할 수 있다.

[HTTPS의 동작 과정]

 

HTTPS대칭키 암호화와 비대칭키 암호화를 모두 사용해서 빠른 연산 속도와 안전성을 모두 갖추고 있다

HTTPS 연결 과정(Hand-Shaking)에서는 먼저 클라이언트와 서버간에 세션키를 교환을 한다. 여기에서 세션키란? 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키 이며, 데이터 간의 교환에서는 빠른 연산 속도가 필요하기 떄문에 세션키는 대칭키로 만들어 진다. 

하지만 이 과정에서 세션키를 클라이언트와 서버가 어떻게 교환 할 것인지 인데 , 이 과정속에서 비대칭키가 사용이된다.

처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭 키가 사용이 되는것이고, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해서 대칭키가 사용이 되는것이다. 

 


[HTTP와 HTTPS의 차이]

 

HTTP는 암호화 되지 않으므로 보안에 취약하다. 하지만 HTTPSHTTP와는 달리 암호화가 되기 때문에 안전하게 데이터를 주고 받을 수 있다. 하지만 HTTPS는 암호화와 복호화 과정이 필요하기 때문에 HTTP보다는 속도가 느리다.

또한 HTTPS는 인증서를 발급 그리고 유지하기 위해 비용이 든다.

 

최종적으로 개인정보와 민감한 데이터를 주고 받아야 할 때는 HTTPS를 사용하는 것이 맞으며 , 노출이 되어도 괜찮은 단순정보들 같은 경우만 처리 되어도 됀다면 HTTP를 사용하면 된다 .

 

 

 

 

 

 

좋은 글 공유해주셔서 감사합니다. 더 자세한 내용을 보고 싶으시다면 아래 링크로 가주세요!

[출처]

https://mangkyu.tistory.com/98

반응형