Blog

[CS]28 http, https 차이점에 대해 설명해주세요

Author
Summary
HTTP,HTTPS의 차이점?
Category
Study
Tags
CS
Favorite
Memory Date
2023/10/25
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties
http, https 차이점에 대해 설명해주세요
HTTP와 HTTPS 모두 하이퍼텍스트 전송을 위한 프로토콜입니다. 웹 브라우저와 웹 서버 간의 통신에 사용됩니다.
두개의 가장 큰 차이점은 보안인증서 SSL의 사용 여부입니다.
HTTP는 보안 인증서가 필요하지 않습니다. [VS] HTTPS는 SSL 인증서를 사용하여 웹사이트의 신뢰성을 확인합니다.
→ 이에따라 HTTP: 데이터가 암호화되지 않아 보안에 취약하게 됩니다. 따라서 주로 정보를 전송하는 데 사용되며, 민감한 정보의 전송에는 적합하지 않습니다.
→ 반면 HTTPS는 SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화하여 보안을 강화합니다. 따라서 보안이 필요한 데이터 전송에 사용되며, 로그인, 결제 등에서 활용되고 있습니다.
→ 그 외 HTTP: 80번 포트를 기본으로 사용, HTTPS는 443번 포트를 사용합니다.
추가질문 : SSL은 무엇인가요?
SSL은 "Secure Sockets Layer"의 약자로, 네트워크 통신에서 보안을 제공하기 위한 프로토콜로 데이터를 암호화하고 안전하게 전송합니다. 간단히 말하면, SSL은 클라이언트와 서버 간의 통신을 암호화하여 중간에 누군가가 데이터를 엿보더라도 그 내용을 이해할 수 없게 만듭니다.
SSL의 주요 기능은 데이터 암호화, 인증으로 클라이언트와 서버 출처 확인, 데이터 변조 방지로 무결성 보완, SSL 핸드셰이크로 연결 세션 성립하게 됩니다.
추가질문 : 데이터 암호화는 어떻게 하나요?
SSL/TLS 프로토콜은 데이터 변조를 방지하기 위해서 주로 두 가지 메커니즘을 사용합니다. 공개키 및 대칭키 암호화 기술을 사용하여 안전한 통신 채널을 만들어내고, 이를 통해 데이터가 안전하게 전송됩니다. 전송된 데이터의 무결성을 확인하기 위해 해시 함수가 사용됩니다. 간단히 말하면, 데이터의 해시값이 계산되어 전송되는데, 수신측에서는 받은 데이터의 해시값을 다시 계산하여 이를 원래의 해시값과 비교합니다. 만약 해시값이 일치하지 않으면 데이터가 변조되었다는 것을 의미하게 됩니다.
추가질문 : 공개키와 대칭키 암호화기술은 간략히 어떤것인가요?
대칭키 암호화 : 같은 키를 사용하여 데이터를 암호화하고 복호화하는 방식으로 암호화된 데이터를 해독하려면 동일한 키가 필요합니다.대칭키 암호화는 암호화 및 복호화 속도가 빠르지만, 키를 안전하게 공유하는 문제가 있을 수 있습니다.
공개키 암호화 : 두 개의 키를 사용하는 방식으로, 공개키와 개인키가 쌍으로 사용합니다. 공개키는 누구나 알 수 있고, 이를 통해 암호화된 데이터를 생성할 수 있습니다. 개인키는 해당 키를 소유한 사람만 가지고 있으며, 이를 사용하여 암호화된 데이터를 해독할 수 있습니다. 아마존 클라우드 컴퓨팅 서비스를 이용하면서 키페어를 만들게 되는데 이것이 공개키 암호화 방식을 사용한 것입니다. 아마존 서비스 내 계정에 귀속되어 보관되기도 하며 일부 서비스에서는 .pem형태의 파일로 보관 할 수도 있습니다 이것이 개인 키이며 인스턴스에 접속 할 때 사용한 기억이 있습니다.
추가질문 : 왜 80번포트 443번포트로 포트번호가 지정되어있나요?
이 부분은 웹의 역사적인 이유가 있으며 기본적으로 특별한 이유보다는 빈 포트번호를 사용하게 된 역사적 배경이 있고, 공식문서화 시키면서 표준화된 흐름을 가지고 있습니다. 요약하면 내용은 다음과 같습니다.
80번 포트
HTTP가 문서화되기 이전부터 보통 사용하지 않는 빈 포트 번호였다.
1991년 HTTP 0.9 버전에서 처음으로 문서화되면서 기본 포트로 지정되었다.
443번 포트
1994년 RFC 1700 이전까지는 빈 포트 번호였다.
Kipp E.B. Hickman의 요청으로 1994년 10월에 RFC 1700 문서에 443이 추가되었다.
443인 이유는 빈 칸에 순서대로 배정하다 보니 그렇게 되었다.
추가 공부 내용 : HTTP,HTTPS 포트번호에 대한 역사적 내용
HTTP는 초기 웹 서버에서 사용된 프로토콜이며, 웹 브라우징의 기본 포트로 사용되었습니다. 이때 사용되는 포트가 80번으로 정해졌습니다.
1990년 3월: RFC 1060에서 정리한 포트번호에 대한 규정에서 79번 이후로 80번 포트가 비어있었습니다.
1991년 : HTTP 0.9 문서에서 80번 포트를 월드와이드웹 브라우징 포트로 사용하기 시작했습니다. If the port number is not specified, 80 is always assumed for HTTP.라하여 포트번호가 비어있으면 80번 포트가 기본임을 정의되었습니다. 공식적으로는 RFC 1340으로 개정되면서 80 포트가 World Wide Web HTTP로 언급되면서 공식화되었습니다.
따라서 http://www.google.com과 같이 http 프로토콜의 특정 도메인으로 구글서버의 실제 외부 IP주소가 DNS Server에 의해 포워딩(맵핑) 되어있다고 가정하면 뒤에 http://www.google.com:80 처럼 접근해도 동일한 페이지가 나타납니다, 하지만 81로 변경하면 잘못된 접근이 나타나게 됩니다.
HTTPS는 HTTP에 보안 기능을 추가한 것으로, 데이터를 암호화하여 안전하게 전송하는 역할을 합니다. SSL(이후 TLS)을 사용한 웹 서버는 기본적으로 443번 포트를 사용하게 되었습니다.
1994년 10월 : RFC 1700
Port Assignments를 보면(Page 33) 443 포트가 https MCom으로 언급되었다.
그 밑의 주석을 보면 # Kipp E.B. Hickman <kipp@mcom.com>라고 나와 있다.
Kipp E.B. Hickman의 요청에 의해 443 포트가 추가된 것으로 보인다.
Hickman의 홈페이지를 보면 Mosaic Communications Corp의 일원이었음을 알 수 있다.
https://www.google.com 도 마찬가지로 뒤에 :443으로 접근하면 https 프로토콜로 연결된 ip로 외부접근이 가능하고, 해당 포트는 SSL인증서가 적용된 443포트입니다.
1999년 6월에 나온 RFC 2616의 80포트에 대한 내용에 따라 생략가능합니다.
If the port is empty or not given, port 80 is assumed.
만약 포트가 비어 있거나 없으면 포트 80으로 간주한다.
3.2.2 http URL The "http" scheme is used to locate network resources via the HTTP protocol. This section defines the scheme-specific syntax and semantics for http URLs. http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] If the port is empty or not given, port 80 is assumed. The semantics are that the identified resource is located at the server listening for TCP connections on that port of that host, and the Request-URI for the resource is abs_path (section 5.1.2). The use of IP addresses in URLs SHOULD be avoided whenever possible (see RFC 1900 [24]). If the abs_path is not present in the URL, it MUST be given as "/" when used as a Request-URI for a resource (section 5.1.2). If a proxy receives a host name which is not a fully qualified domain name, it MAY add its domain to the host name it received. If a proxy receives a fully qualified domain name, the proxy MUST NOT change the host name.
HTML
복사
2015년 5월에 나온 RFC 7540
HTTP/2 shares the same default port numbers: 80 for "http" URIs and 443 for "https" URIs.
HTTP/2는 동일한 기본 포트 넘버를 공유한다: "http" URI는 80, "https" URI는 443.
3. Starting HTTP/2 An HTTP/2 connection is an application-layer protocol running on top of a TCP connection ([TCP]). The client is the TCP connection initiator. HTTP/2 uses the same "http" and "https" URI schemes used by HTTP/1.1. HTTP/2 shares the same default port numbers: 80 for "http" URIs and 443 for "https" URIs. As a result, implementations processing requests for target resource URIs like "http://example.org/foo" or "https://example.com/bar" are required to first discover whether the upstream server (the immediate peer to which the client wishes to establish a connection) supports HTTP/2. The means by which support for HTTP/2 is determined is different for "http" and "https" URIs. Discovery for "http" URIs is described in Section 3.2. Discovery for "https" URIs is described in Section 3.3.
HTML
복사