[Network] HTTP (4) - HTTPS

먹보·2023년 3월 17일
0

MUK_BO's Network

목록 보기
8/8

사실 HTTPS는 HTTP2/를 다룰 때 같이 다루려고 하였으나 집중적으로 세션을 나눠서 다뤄야 할 것이라고 인지를 하였기에 지금부터 단독으로 다뤄보려고 한다.

HTTPS는 웹을 개발하는 사람이라면 반드시 짚고 넘어가야하는 필수적인 개념 중 하나라고 생각이 된다. 심지어 취준을 앞두고 있는 취준생들 사이에서는 HTTPS로 서비스를 만든 회사가 아니라면 지원을 하지 않는 것이 좋다라는 일종의 뇌피셜 까지 돌고 있는셈이다.

한 번 내가 닿는 곳까지 HTTPS에 대해서 알아보도록 하자.

✍ HTTPS

HTTPS는 Hypertext Transfer Protocol Secure의 약자로 1994년 HTTP 프로토콜의 보안 버전으로 처음 도입되었습니다. HTTPS는 SSL/TLS(Secure Sockets Layer/Transport Layer Security) 프로토콜을 사용함으로서 웹 서버와 클라이언트의 웹 브라우저 간에 전송되는 데이터를 암호화하여 무단 액세스 및 데이터 변조를 방지합니다.

위에서도 언급하였듯이 기술이 발전함에따라 HTTPS의 사용은 점점 더 중요해지고 있고 최근 몇 년 동안 주요 브라우저와 검색 엔진이 HTTPS를 사용하지 않는 사이트에 불이익을 주는 등 모든 웹사이트에서 HTTPS를 사용하도록 장려하는 움직임이 조성되고 있으며 이로 인해 웹에서 HTTPS 채택이 증가하여 HTTPS는 안전한 웹 통신의 표준이 되었습니다.

📝 SSL/TLS

SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security)는 전송 계층에서 인터넷을 통한 보안 통신에 사용되는 암호화 프로토콜입니다. 웹 서버와 클라이언트(예: 웹 브라우저) 간에 안전하고 암호화된 연결을 설정하는 데 사용됩니다.

SSL은 1990년대에 Netscape에서 개발한 최초의 프로토콜이었으며 나중에 보안 통신에 사용되는 표준 프로토콜인 TLS로 대체되었습니다. SSL과 TLS는 모두 공개 키 암호화를 사용하여 보안 연결을 설정하고 대칭 및 비대칭 암호화의 조합을 사용하여 작동합니다.

클라이언트(예: 웹 브라우저)가 HTTPS를 통해 서버에 연결할 때 SSL/TLS 프로토콜을 사용하여 보안 연결을 협상하고 설정합니다. 여기에는 서버와 클라이언트의 신원 확인, 사용할 암호화 알고리즘 협상, 필요한 암호화 키 생성 및 교환 등 일련의 단계가 포함됩니다.

✏️ SSL/TLS가 방어할 수 있는 공격

  1. 중간자 공격: SSL/TLS는 암호화를 사용하여 클라이언트와 서버 사이에 있는 공격자가 데이터를 가로채는 것을 방지합니다.

  2. 도청 공격: SSL/TLS는 클라이언트와 서버 간에 전송되는 모든 데이터를 암호화하여 공격자가 통신을 도청하려는 도청 공격을 방지합니다.

  3. 재생 공격: SSL/TLS에는 공격자가 수신자를 속이기 위해 이전에 보낸 메시지를 가로채서 다시 보내는 재생 공격을 방지하는 메커니즘이 포함되어 있습니다.

  4. 데이터 변조 공격: SSL/TLS는 디지털 서명을 사용하여 전송 중인 데이터의 무결성을 보장하여 공격자가 전송 중인 데이터를 수정하지 못하도록 합니다.

  5. 세션 하이재킹 공격: SSL/TLS는 세션 ID를 사용하여 클라이언트를 식별하고 인증하므로 공격자가 세션을 하이재킹하고 클라이언트를 사칭하는 것을 방지합니다.

✏️ 보안 세션

보안 세션이란 보안이 시작되고 끝나는 동안 유지되는 세션을 말하고, SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보등을 공유합니다.

클라이언트와 서버는 서로 키를 공유하고 이를 기반으로 인증 작업이 진행되며 그 후 데이터를 송수신 합니다.

이 떄 클라이언트에서 사이퍼 슈트를 서버에 전달하면 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트의 제공 여부를 판독 후 가능하면 서버에서 클라이언트로 인증서를 보낸 뒤 인증 매커니즘이 시작되고 이후 해싱 알고리즘 등으로 암호화된 데이터의 송수신이 시작됩니다

사이퍼 슈트는 엔드포인트 간 (웹에서는 클라이언트와 서버) 보안 통신을 설정하는 데 사용되는 알고리즘 집합입니다. 여기에는 키 교환 알고리즘, 대량 암호화 알고리즘 및 메시지 인증 코드 알고리즘이 포함됩니다.

키 교환 알고리즘은 세션 중에 데이터를 암호화하고 해독하는 데 사용할 공유 비밀 키를 안전하게 교환하는 데 사용됩니다. 대량 암호화 알고리즘은 두 엔드포인트 간에 전송되는 데이터를 암호화 및 해독하는 데 사용됩니다. 메시지 인증 코드 알고리즘은 두 끝점 간에 교환되는 데이터의 무결성과 신뢰성을 보장하는 데 사용됩니다.

✏️ 인증 매커니즘

인증 매커니즘은 CA (Certificate Authorities)에서 발급한 인증서를 기반으로 이루어지는데 CA에서 발급한 인증서는 안전한 연결을 시작하는 데 있어 필요한 공개키를 클라이언트에 제공하고 사용자가 접속한 서버가 신뢰 할 수 있는 서버임을 보장합니다.

✏️ 암호화 알고리즘

키 교환 알고리즘으로는 대수곡선 기반의 ECDHE (Elliptic Curve Diffie-Hellman Ephermeral) 또는 모듈신 기반의 DHE (Diffie-Hellman Ephermeral)를 사용합니다.

두 개의 알고리즘에 사용된 디피-헬만 키 교환 알고리즘은 추후 알고리즘 시리즈를 다루게 될 때 소개할 예정이기에 여기서는 이러한 것이 있다고만 알아두자.

✏️ 해시 알고리즘

개념 설명에 앞서 간단하게 용어부터 정리하자면,

  1. 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값

  2. 해싱 : 해시로 변환하는 과정

  3. 해시 함수 : 임의의 데이터를 받아 해싱하는 과정을 실행 시키는 함수

보안 관련 이슈에서 항상 등장하는 알고리즘으로 데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘입니다. 특히 SSL/TLS는 해싱 알고리즘에 속하는 SHA-256과 SHA-384를 많이 사용합니다.

📝 SEO와 HTTPS의 관계

우선 SEO에 대해서 간략하게 짚고 넘어가야 할 필요가 있다.

SEO (Search Engine Optimization)는 단어 뜻 그대로 검색 엔진 최적화를 뜻하는데 관련 키워드 및 문구에 대한 검색 엔진 결과 페이지(SERP)의 가시성과 순위를 개선하기 위해 웹 사이트 또는 온라인 콘텐츠를 최적화하는 프로세스를 말합니다. SEO의 궁극적인 목표는 더 많은 유기적(무료) 트래픽을 웹사이트로 유도하여 브랜드 인지도, 리드 생성 및 매출 성장을 높이는 것입니다.

SEO와 관련된 특징 및 자세한 내용은 다음 시간에 주로 다루기로 하자..

실제 구글은 SSL 인증서를 강조해왔고 사이트 내 모든 요소가 동일하다면 https 서비스를 하는 사이트가 그렇지 않은 사이트보다 SEO 순위가 높을 것이라고 공식적으로 밝히기도 했다는 사실을 기반으로 알 수 있는 것은 웹사이트를 구축하는데 있어 HTTPS는 필수불가결이라는 사실이다.

📝 HTTPS 설정 방법

방법은 너무나 다양하고 세세하게 파고들자면 끝이 없기에 아주 간단히 알아보자.

  1. 직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스를 구축

  2. 서버 앞 단의 HTTPS를 제공하는 로드밸러서로 구축

  3. 서버 앞단에 HTTPS를 제공하는 CDN으로 구축

여기까지 HTTPS에 대해 간단히 알아보았고 시간이 된다면 직접 HTTPS를 설정하는 방식까지도 알아볼 예정이다.

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글