본문 바로가기

Computer Network study

HTTPS & DNS

HTTPS ?

Hypertext Transfer Protocol Secure의 약자로, 월드 와이드 웹(WWW)에서 정보를 안전하게 전송하기 위해 사용되는 프로토콜이다. (HTTP 암호화 버전) HTTPS는 웹 브라우저와 웹 서버 간의 데이터 통신을 암호화하고 보안하는 역할을 한다. 이를 통해 사용자들은 개인정보와 민감한 데이터를 더 안전하게 주고받을 수 있다.

주요 특징

1. 데이터 암호화: HTTPS SSL(Secure Sockets Layer) 또는 최신의 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화한다. 이를 통해 데이터를 감청하거나 변조하는 것을 방지할 수 있다.

2. 인증과 신뢰성: HTTPS SSL/TLS 인증서를 사용하여 웹 서버의 신뢰성을 보장한다. 이 인증서는 제3자 인증기관(CA, Certificate Authority)에 의해 발급되며, 웹 사이트가 사용자의 정보를 안전하게 다루는 것을 보장한다. 사용자는 브라우저에서 웹 사이트의 SSL/TLS 인증서를 확인하여 안전한 연결을 확인할 수 있다.

3. 포트 번호: HTTP는 기본적으로 80번 포트를 사용하고, HTTPS 443번 포트를 사용한다. 브라우저가 HTTPS로 연결하려면 443번 포트로 연결해야 한다.

4. 브라우저의 표시: HTTPS로 연결된 웹 페이지의 주소는 "https://"로 시작하며, 일반적으로 주소창에 뒤따라오는 웹 사이트 주소와 함께 잠금 아이콘이 표시된다.

HTTPS는 웹 사용자들의 데이터를 안전하게 암호화하여 보호하는 보안 프로토콜로, 개인정보 보호와 더 높은 신뢰성을 제공한다. 현대의 웹 사이트들은 보안을 강화하기 위해 HTTPS를 적극 도입하고 있다.

 

SSL/TLS ?

SSL(Secure Sockets Layer) TLS(Transport Layer Security)는 둘 다 보안 소켓 계층 프로토콜로, 데이터 통신을 암호화하고 인증하는 역할을 한다. 이러한 프로토콜은 주로 인터넷에서 데이터의 보안 및 안전한 전송을 위해 사용된다.

 

SSL (Secure Sockets Layer)

클라이언트와 서버 간의 데이터 통신을 암호화하여 제3자로부터의 데이터 감청 및 변조를 방지한다. SSL은 웹 브라우저와 웹 서버 사이에서 주로 사용되며, 주로 웹 사이트의 주소가 "https://"로 시작하는 것과 브라우저의 주소창에 표시되는 잠금 아이콘으로 사용자에게 보안 연결임을 표시한다.

그러나 SSL은 취약점이 발견되고 보안 표준에 맞지 않게 개발된 경우가 많아졌다. 그래서 보다 안전하고 강력한 TLS 프로토콜로 대체되었다.

 

TLS (Transport Layer Security)

TLS SSL의 후속 버전으로서, 보안성을 향상시키고 SSL의 취약점을 보완하는 역할을 합니다. TLS는 클라이언트와 서버 간의 핸드셰이크 과정을 통해 서로의 신원을 확인하고, 암호화 알고리즘과 키를 협상하여 데이터를 안전하게 전송한다. TLS는 주로 HTTPS와 함께 사용되며, 암호화 강도와 알고리즘을 지원하는 브라우저와 서버 사이에서 협상되어 보다 안전하고 효율적인 데이터 통신을 가능케 한다.

TLS 연결을 설명하는 데 SSL이라는 용어가 많이 사용된다. 대부분의 경우 SSL SSL/TLS라는 용어 모두 TLS 프로토콜과 TLS 인증서를 나타낸다.

 

HTTPS 암호화 과정(SSL Handshake)

HTTPS 암호화 과정은 주로 SSL/TLS 프로토콜의 핸드셰이크 과정을 통해 이루어진다. 핸드셰이크(Handshake)는 클라이언트(웹 브라우저)와 서버 간에 보안 연결을 설정하는 단계로, 클라이언트와 서버가 서로의 신원을 확인하고, 데이터 암호화에 사용할 암호화 키를 교환하는 과정이다.

1. 클라이언트가 서버에 연결 요청:

클라이언트가 HTTPS로 보호된 웹 사이트에 접속하면, 웹 브라우저는 서버에 연결을 요청한다. 이때 서버는 HTTPS를 지원하고 있음을 알리기 위해 HTTPS 포트인 443번으로 연결을 수신 대기한다.

2. 서버의 인증서 제공:

서버가 클라이언트의 연결 요청을 받으면, 서버는 자신의 디지털 인증서를 클라이언트에게 제공한다. 이 인증서는 제3자 인증기관(CA)에 의해 서명된 서버의 공개키와 서버 정보를 포함한다. 클라이언트는 이 인증서를 검증하여 해당 웹 사이트의 신원을 확인한다.

3. 클라이언트의 세션 키 생성:

웹 브라우저는 서버의 인증서를 검증한 후, 해당 웹 사이트와 안전한 통신을 위해 임시 세션 키를 생성한다. 이 세션 키는 데이터 암호화에 사용될 대칭 암호화 키로, 보안 연결 동안만 유효하다.

4. 세션 키를 서버의 공개키로 암호화하여 전송:

클라이언트는 생성한 세션 키를 서버의 공개키로 암호화하여 서버에 전송한다. 이 과정에서 서버의 공개키를 사용하므로 중간에 제3자가 세션 키를 볼 수 없다.

5. 서버가 세션 키를 비밀키로 해독:

서버는 자신의 비밀키(개인키)를 사용하여 클라이언트가 보낸 암호화된 세션 키를 해독하여 원래의 세션 키를 획득한다.

6. 클라이언트와 서버 간 암호화 통신:

이제 클라이언트와 서버는 양방향으로 암호화된 세션 키를 사용하여 데이터를 암호화하고 복호화한다. 이로 인해 데이터는 네트워크를 통해 전송되는 동안 안전하게 암호화되며, 3자가 데이터를 가로채어도 읽을 수 없다.

위의 핸드셰이크 과정을 통해 클라이언트와 서버는 안전한 연결을 설정하고, 데이터를 암호화하여 보안적으로 안전한 HTTPS 통신을 가능하게 한다. 이로 인해 사용자의 민감한 정보가 안전하게 전송되고 웹 서비스의 신뢰성을 보장한다.

 

DNS?

DNS(Domain Name System)는 인터넷의 핵심 기술 중 하나로, 인터넷에서 도메인 이름을 IP 주소로 변환하는 시스템이며, 인터넷 사용자가 웹 사이트나 서비스에 쉽게 접근할 수 있도록 도메인 이름을 관리하는 기술적 시스템이다. 인터넷은 기본적으로 IP 주소를 사용하여 컴퓨터나 기기들이 서로를 식별하고 통신한다. IP 주소는 숫자와 점으로 구성된 형식이기 때문에 기억하기 어렵고 인간 친화적이지 않다. 따라서 DNS가 등장하게 되었다. DNS의 중요성은 인터넷 사용의 편리성과 확장성을 제공하며, 사용자가 기억하기 쉬운 도메인 이름을 통해 웹 사이트에 접근할 수 있도록 도와준다.

 

DNS 작동 방식

사용자가 도메인 이름을 입력하여 웹 사이트에 접속할 때, 해당 도메인 이름을 IP 주소로 변환하는 과정으로 이루어집니다.

1. 사용자가 도메인 이름 입력:

웹 브라우저나 다른 애플리케이션을 통해 사용자가 웹 사이트의 도메인 이름을 입력한다. 예를 들면, "https://dev-studyingblog.tistory.com"과 같은 도메인 이름을 입력한다.

2. 로컬 DNS 캐시 검색:

로컬 DNS 캐시는 사용자의 디바이스나 라우터에 저장된 최근에 방문한 웹 사이트의 도메인 이름과 해당 IP 주소를 포함한다. 웹 브라우저는 먼저 로컬 DNS 캐시를 검색하여 입력한 도메인 이름에 대한 IP 주소를 찾는다. 캐시에 해당 정보가 있으면, 추가적인 DNS 질의를 수행하지 않고 해당 IP 주소로 바로 접근한다.

3. 루트 DNS 서버 조회:

로컬 DNS 캐시에 해당 정보가 없으면, 웹 브라우저는 DNS 계층 구조에서 가장 상위에 위치한 루트 DNS 서버에 해당 도메인 이름에 대한 질의를 보낸다. 루트 DNS 서버는 인터넷의 모든 DNS 계층 구조를 관리하는 중앙 서버이다.

4. 최상위 도메인(TLD) 서버 조회:

루트 DNS 서버는 해당 도메인 이름의 최상위 도메인(TLD, Top-Level Domain)에 대한 IP 주소를 알려준다. TLD는 도메인 이름의 가장 오른쪽 부분으로, 예를 들어 ".com", ".org", ".net" 등이 있다. 웹 브라우저는 루트 DNS 서버의 응답을 받고, 해당 도메인의 TLD DNS 서버에 대한 질의를 수행한다.

5. 도메인 네임 서버 조회:

TLD DNS 서버는 해당 도메인 이름의 네임 서버 정보를 알려준다. 네임 서버는 해당 도메인 이름과 연결된 IP 주소 정보를 가지고 있는 서버이다.

6. 웹 서버의 IP 주소 획득:

웹 브라우저는 도메인 이름과 연결된 네임 서버에 질의를 보내 웹 서버의 IP 주소를 획득한다. 네임 서버는 해당 도메인 이름에 대한 IP 주소를 웹 브라우저에게 응답한다.

7. 웹 서버 접속:

웹 브라우저는 얻어온 IP 주소를 사용하여 해당 웹 서버에 접속한다. 이제 웹 브라우저와 웹 서버 사이에서 HTTP 요청과 응답이 이루어진다.

위와 같은 과정을 통해 DNS는 사용자가 입력한 도메인 이름을 해당 웹 사이트의 IP 주소로 변환하여 웹 서버에 접속할 수 있도록 한다. 이러한 과정은 매우 빠르게 이루어지며, 사용자들은 DNS의 동작을 의식하지 않고도 웹 사이트에 접근할 수 있다.

728x90