본문 바로가기

CS/네트워크

[네트워크]HTTP와 HTTPS란?

HTTP에 대해 설명해 주세요.

네트워크 장치 간에 정보를 전송하도록 설계된 애플리케이션 계층 프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행됩니다.

  • HTTP의 일반적인 흐름
    • 클라이언트 시스템에서 서버에 요청한 다음 서버에서 응답메시지를 보내는 작업

공개키와 대칭키에 대해 설명해주세요.

  1. 대칭키란?
    • 암복호화키가 동일하며 해당 키를 아는 사람만이 문서를 복호화해 볼 수 있게 된다.
    • 장점: 공개키 암호화 방식에 비해 속도가 빠르다
    • 단점: 안전한 키교환 방식이 요구되며, 사람이 증가할수록 키관리가 어려워진다.
      • 키 교환 중 탈취될 수 있는 문제가 있다.
      • 사람이 증가하면 따로따로 키교환을 해야해서 관리해야할 키가 방대해진다.
    • 대표적 알고리즘: DES, 3DES, AES, ARIA
  2. 공개키란?
    • 대칭키의 키교환 문제를 해결하기 위해 등장하였다. 키가 공개되어서 키를 교환할 필요가 없다.
    • 공개키, 개인키 두 개의 키를 한쌍으로 각각 암호화/복호화에 사용합니다.
    • 장점: 키분배가 필요없으며, 기밀성/인증/부인방지 기능을 제공합니다.
    • 단점: 대칭키 암호화 방식에 비해 속도가 느리며, 계산 과정이 복잡하고 연산 도중 컴퓨터 자원이 많이 사용됩니다.
    • 공개키와 개인키가 생성이 되며, 이때 공개키는 모든 사람이 접근 가능한 키이고, 개인키는 각 사용자만이 가지고 있는 키이다.
    • 과정
      1. B 공개키/개인키 쌍 생성
      2. 공개키 공개(등록), 개인키는 본인이 소유
      3. A가 B의 공개키를 받아옴
      4. A가 B의 공개키를 사용해 데이터를 암호화
      5. 암호화된 데이터를 B에게 전송
      6. B는 암호화된 데이터를 B의 개인키로 복호화(개인키는 B만 가지고 있기 때문에 B만 볼 수 있다)
       

대칭키는 왜 공유하는 것이 어려운가요?

  • 키 교환 중 탈취될 수 있는 문제가 있다.
  • 사람이 증가하면 따로따로 키교환을 해야해서 관리해야할 키가 방대해진다.

왜 HTTPS Handshake 과정에서는 인증서를 사용하는 것 일까요?

우선, HTTPS란 무엇일까요?

웹 브라우저와 웹 사이트 간에 데이터를 전송하는 데 사용되는 기본 프로토콜인 HTTP의 보안 버전입니다.

즉, 데이터 전송의 보안을 강화하기 위해 암호화되는데, 이때 은행 계좌, 이메일 서비스, 의료 보험 공급자에 로그인하는 등 중요한 데이터를 전송할 때 중요합니다.

HTTPS의 작동 방식

  • 암호화 프로토콜을 사용하여 통신을 암호화합니다.
  • 이전에는 SSL(보안소켓계층)으로 알려졌지만, 현재는 TLS(전송계층보안)이라고 불립니다.
  • 비대칭 공개 키 인프라를 사용하여 통신을 보호합니다.
    • 비대칭 공개 키 인프라란? 두 개의 서로 다른 키를 사용하여 두 당사자 간의 통신을 암호화합니다.
    • 개인키: 웹 사이트 소유자가 관리하며, 비공재로 유지됩니다. 공개 키로 암호화된 정보를 해독하는 데 사용됩니다.
    • 공개키: 안전한 방식으로 서버에 상호 작용하고자 하는 모든 사람이 사용할 수 있으며, 공개 키로 암호화된 정보는 개인 키로 해독 할 수 있습니다

HTTPS가 중요한 이유는?

  • 일반 HTTP의 경우에는 정보를 전송할 때, 무료 소프트웨어를 사용하여 쉽게 스니핑할 수 있는 데이터패킷으로 나뉩니다. 그래서 공용 Wi-Fi와 같이 안전하지 않은 매체를 통한 통신은 도청에 매우 취약합니다.
  • HTTP의 모든 통신은 일반 텍스트로 이루어지며 누구나 쉽게 접근할 수 있고 경로상 공격에 취약합니다.
  • 결국, HTTPS를 사용하면 트래픽이 암호화되어서 패킷을 스니핑하거나 가로챈다고 해도 무의미한 문자로만 인식됩니다.
  • 예시 

더보기

스니핑이란? 사전적인 의미로 스니핑(Sniffing)이란 ‘코를 킁킁거리다’, ‘냄새를 맡다’ 등의 뜻이 있다. 사전적인 의미와 같이 해킹 기법으로서 스니핑은 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 엿듣는 것을 의미한다. 간단히 말하여 네트워크 트래픽을 도청(eavesdropping)하는 과정을 스니핑이라고 할 수 있다. 

 

암호화란? 일반적인 평문을 알아볼 수 없도록 암호화하여 암호문으로 만드는 과정

복호화란? 만들어진 암호문을 다시 원래의 평문으로 만드는 과정

TLS 핸드셰이크가 이루어지는 단계

  • TLS핸드 셰이크는 사용자가 HTTPS를 통해 웹 사이트를 탐색하고 브라우저가 처음 해당 웹 사이트의 원본 서버를 쿼리하기 시작할 때마다 발생합니다. (1.3이전 버전에서 RSA 키 교환 알고리즘을 사용했기에 이와 관련해서 단계 별로 설명하겠습니다.)
    1. 클리이언트가 서버로 헬로 메시지를 전송하면서 핸드셰이크를 개시합니다.
    2. 메시지에 대한 응답으로 서버가 서버의 SSL인증서, 서버에서 선택한 암호 제품군, 서버에서 생성한 또 다른 무작위 바이트 문자열인 '서버 무작위'를 포함하는 메시지를 전송합니다.
    3. 클라언트는 서버의 SSL 인증서를 인증서 발행 기관을 통해 검증합니다.
    4. 클라이언트가 예비 마스터 암호라고 하는 무작위 바이트 문자열을 하나 더 전송합니다. 예비 마스터 암호는 공개 키로 암호화되어 있으며, 서버가 개인키로해독할 수 있습니다.
    5. 개인키를 사용하여 서버가 예비 마스터 암호를 해독합니다.
    6. 클라이언트와 서버가 모두 클라이언트 무작위, 서버 무작위, 예비 마스터 암호를 이용해 세션 키를 생성합니다. 이때 모두 같은 결과가 나와야합니다.
    7. 클라이언트가 세션 키로 암호화된 '완료'메시지를 전송합니다.
    8. 서버가 세션 키로 암호화된 '완료'메시지를 전송합니다.
    9. 핸드셰이크가 완료되고, 세션 키를 이용해 통신이 계속 진행됩니다.

그래서 인증서를 왜 사용할까?

클라이언트가 서버의 SSL인증서를 인증서 발행 기관을 통해 검증합니다. 이를 통해 서버가 인증서에 명시된 서버인지, 그리고 클라이언트가 상호작용 중인 서버가 실제 해당 도메인의 소유자인지 확인하기 위해서 인증서를 사용합니다. 또한, 인증서를 통해서 클라이언트가 공개키를 받습니다.

SSL과 TLS의 차이는 무엇인가요?

SSL(보안소켓계층)은 원래 HTTP용으로 개발된 암호화 프로토콜이었습니다. 하지만, SSL은 오래 전에 전송계층 보안(TLS)으로 대체 되었습니다.

SSL은 압호화 기반 인터넷 보안 프로토콜로 인터넷 통신의 개인정보 보호,인증, 데이터 무결성을 보장하기 위해 개발되었습니다. 현재 사용 중인 TLS암호화 전신입니다.

그러면 HTTPS는 완벽하게 보안이 되나요?

HTTPS는 웹에서 보안을 벅용하기 위한 가장 기본적인 단계이며, 모든 보안성이 완벽하게 지켜졌다고 할 수 었습니다.

예를 들어, 웹 서버가 해커의 공격에 의해 루트 권한을 탈취당했다면, 모든 기밀 데이터를 열람할 수 있는 권한이 넘어갈 수 있습니다.

전달 구간 중간에 해커가 중간자 공격을 수행할 수 있는 취약점이 있다면, 전달하는 내용은 고스란히 노출된다.

 

HTTPS 보안이 완벽하지 않다면 어떻게 해야하나요?

HTTPS를 적용하면서도, 종단 간 암호화 기술을 추가로 적용하여 HTTPS가 무력화되어도 노출된 데이터는 암호화를 유지해 외부로 노출되지 않도록 해야합니다.

하이퍼 텍스트란?

  • 일반 텍스트와 달리 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서를 말합니다.
  • 일반 텍스트 문서는 정보를 순차적으로 인식하도록 나열되어 있지만, 하이퍼텍스트 문서는 사용자가 원하는 대로 쉽게 이동할 수 있도록 하이퍼링크가 걸려있습니다.
  • 대표적인 하이퍼텍스는 HTML문서가 있습니다.

참고

 

하이퍼텍스트 - 해시넷

하이퍼텍스트(hypertext)란 일반 텍스트와 달리 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서를 말한다. 1960년대 테오도르 넬슨(Theodore Nelson)이 만든 용어이다. 일반 텍스

wiki.hash.kr

 

안전한 웹을 위해 HTTPS 이해하기: ①HTTPS의 작동 원리 | 요즘IT

웹에서는 내가 원하는 정보를 열람하는 것뿐만 아니라, 내가 입력한 정보를 웹 사이트를 운영하는 회사의 시스템으로 전달하는 경우도 많습니다. 예를 들어, 포털 사이트에 내 계정 정보를 입력

yozm.wishket.com

https://www.cloudflare.com/ko-kr/learning/ssl/what-is-ssl/

https://www.cloudflare.com/ko-kr/learning/ssl/what-is-https/

 

대칭키 vs 공개키(비대칭키) 암호화 차이

개요 큰틀에서의 차이를 보면, 대칭키 암호화 방식은 암복호화에 사용하는 키가 동일한 암호화 방식을 말한다. 그와 달리, 공개키 암호화 방식은 암복호화에 사용하는 키가 서로 다르며 따라서

www.uname.in

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/

 

'CS > 네트워크' 카테고리의 다른 글

DHCP는 무엇일까?  (0) 2024.01.15
[네트워크] 웹 소켓과 소켓 통신의 차이는?  (0) 2023.12.19
[네트워크] TCP와 UDP의 차이란?  (1) 2023.12.18