http와 https의 차이점

김윤철·2022년 8월 24일
0

HTTP(Hyper Text Transfer Protocol)란?

HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.
즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.
HTTP는 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었으며, WWW(World-Wide-Web) 기반에서 세계적인 정보를 공유하는데 큰 역할을 하였다.

 HTTP의 구조 

HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.
하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이였기 때문에, HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었다. 그리고 이러한 문제를 해결하기 위해 HTTPS가 등장하게 되었다.

포트

*80번 포트

웹 서버나 HTTPD(hypertext transport protocol daemon)에서, 80번 포트는(서버를 설치 할 때 기본 설정을 취했다고 가정하면) 웹 클라이언트로부터의 요구가 들어오기를 기대하는 포트이다. 이 포트는 NCSA 서버에서는 0~65536번의 범위 내에서 설정될 수 있다. 그러나 서버 관리자는 그 서버를 단 하나의 포트 번호만이 인식되도록 설정한다. 기본적으로 웹 서버의 포트 번호는 80번이다. 실험적으로 하는 서비스는 대개 8080번 포트에서 실행될 수 있다.

HTTPS란?

HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다. HTTPS는 HTTP와 다르게 443번 포트를 사용하며,

네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.

*443번 포트

443 : HTTPS(SSL) : HyperText Transfer Protocol over Secure Socket Layer : 월드와이드웹 통신 프로토콜인 HTTP의 보안이 강화된 버전

*그 외 포트

21 : FTP : File Transfer Protocal : 파일 전송 프로토콜 : 서버와 클라이언트 사이의 파일 전송을 하기위한 프로토콜
22 : SSH : Secure Shell : 시큐어 셀 : 다른 사용자가 세션을 엿듣지 못하도록 세션을 감싸 보안 및 안정성을 높임. 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜. Linux 계열에서 사용함.
23 : TELNET : 텔넷 :
25 : SMTP : Simple Mail Transfer Protocol : 전자우편을 보낼 때 이용하는 프로토콜
53 : DNS : Domain Name System : 영문/한글 주소를 네트워크에서 찾아갈 수 있는 IP로 변환해 준다.
Web
61 : SNMP : Simple Network Management Protocol
80 : HTTP : HyperText Transfer Protocao
110 : POP3 : Post Office Protocol version 3
115 : SFTP
143 : IMAP : Internet Messaging Access Protocal
3389 : RDP : 윈도우 PC 원격데스크탑 연결

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

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있다. 각각의 암호화 방식은 다음과 같다.

*대칭키 암호화

클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
키가 노출되면 매우 위험하지만 연산 속도가 빠름

*비대칭키 암호화

1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
키가 노출되어도 비교적 안전하지만 연산 속도가 느림

대칭키는 비교적 쉬운 개념이므로, 비대칭키 암호화에 대해 조금 자세히 살펴보도록 하자.
비대칭키 암호화는 공개키/개인키 암호화 방식을 이용해 데이터를 암호화하고 있다. 공개키와 개인키는 서로를 위한 1쌍의 키이다.

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

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

공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화할 수 있다. -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있다.

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


쉬운버전

지난 2014년 구글에서는 HTTP를 HTTPS로 바꾸라고 권고한다. 그전까지는 전자상거래가 있는 웹 사이트에서만 다소 번거로운 HTTPS를 사용하고 있었다. HTTPS로 전환을 장려하기 위해서 구글에서는 HTTPS를 사용하는 웹 사이트에 대해서 검색 순위 결과에 약간의 가산점을 주겠다고 발표했다. 이는 사실상 HTTP를 사용하는 웹 사이트에게 벌점을 주는 것과 마찬가지였다.

서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다. 웹 서핑을 할 때 서버에서 자신의 브라우저로 데이터를 전송해 주는 용도로 가장 많이 사용된다. 인터넷 초기에 모든 웹 사이트에서 기본적으로 사용되었던 프로토콜이기도 하다.

*프로토콜이란?

컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구한다. 이런 형식을 정의하는 규칙의 집합

HTTP는 정보가 암호화되지 않아서 HTTPS프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했다. SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.

두 프로토콜 사이에서 가장 커다란 차이점은 SSL인증서이다.

SSL인증서

사용자가 사이트에 제공하는 정보를 암호화하는 것. 이렇게 전송된 데이터는 중간에서 누군가 훔쳐 낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없다. 그 외에도 TLS(전송 계층 보안)프로토콜을 통해서도 보안을 유지한다. TSL은 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공하고 있다.

HTTPS의 또 다른 장점

HTTPS의 장점은 보안상 우위에만 있는 것이 아니다. HTTPS로 전환하게 되면 검색엔진 최적화에 있어서도 큰 혜택을 볼 수 있다. 구글이 HTTPS에 가산점을 주는 이유도 있지만, 사용자가 안전하다고 생각하는 사이트를 더 많이 방문하기 때문이기도 하다.

참고 자료

https://velog.io/@bclef25/http%EC%99%80-https%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://stackoverflow.com/questions/188266/how-are-ssl-certificates-verified#:~:text=Your%20web%20browser%20downloads%20the,key%20of%20the%20web%20server.&text=It%20uses%20this%20public%20key,address%20of%20the%20web%20server
https://jeong-pro.tistory.com/89
https://tiptopsecurity.com/how-does-https-work-rsa-encryption-explained/
출처: https://mangkyu.tistory.com/98

profile
코린이(코인아님)

0개의 댓글