본문 바로가기

HTTP HTTPS

HTTP와 HTTPS 차이 및 SSL 동작 방법

반응형

HTTP(Hypertext Transfer Protocol) 란?

 - 인터넷 상에서 정보를 주고 받기 위한 프로토콜(양식과 규칙의 체계)

 - 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜

 - 암호화되지 않은 방법으로 데이터를 전송(악의적인 감청, 데이터 변조의 가능성)

 

HTTPS(Hypertext Transfer Protocol Secure) 란?

 - 보안이 강화된 HTTP

 - Hypertext Transfer Protocol Over Secure Socket Layer의 약자

 - 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화

 - HTTPS는 HTTP의 하부에 SSL과 같은 보안 계층을 제공함으로써 동작

HTTP와 HTTPS는 언제 사용하면 될까?

HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있다.

하지만 HTTPS를 이용하면 암호화/복호화 과정이 필요하기 때문에 HTTP 보다 속도가 느리다. (현재 차이를 못느낄 정도)

또한, HTTPS 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.

그렇다면 HTTP와 HTTPS는 언제 쓴느것이 좋을까?

개인정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용하면 된다.

SSL 디지털 인증서

 - 클라이언트와 서버간의 통신을 공인된 제3자(CA) 업체가 보증해주는 전저화된 문서

 

SSL 인증서의 장점 및 역할

 - 통신 내용이 노출, 변경되는 것을 방지

 - 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 확인 가능

 - SSL 통신에 사용할 공개키를 클라이언트에게 제공

 

SSL에서 사용하는 암호화의 종류

 - 암호 : 텍스트를 아무나 읽지 못하도록 인코딩하는 알고리즘

 - 키 : 암호의 동작을 변경하는 매개변수, 키에 따라서 암호화 결과가 달라지기 때문에 키를 모르면 복호화가 불가능

 

대칭키 암호화 방식

 - 인코딩과 디코딩에 같은 키를 사용하는 알고리즘

 - 단점 : 단점은 발송자와 수신자가 서로 대화하려면 둘 다 공유키를 가져야 한다는 것

 - 대칭키를 전달하는 과정에서 키가 유출이 되면 암호의 내용을 복호화할 수 있기 때문에 위험

 - 이를 보완하기 위해서 나온 방법이 공개키 암호화 방식

 

공개키 암호화 방식

 - 인코딩과 디코딩에 다른 키를 사용하는 알고리즘

 - A키로 암호화를 하면 B키로 복호화를 할 수 있고, B키로 암호화 하면 A키로 복호화할 수 있는 방식

 - 인코딩 키(Public key)는 공개되어 있으며(그래서 공개키 암호 방식이라는 이름이 붙음) 보통 디지털 인증서 안에 포함

 - 디코딩 키는(Secret key)는 호스트만이 개인 디코딩 키를 알고 있음

 - 공개키와 비공개키의 분리는 메시지의 인코딩은 누구나 할 수 있도록 해주는 동시에 메시지의 디코딩은 비밀키 소유자

   에게만 부여

 - 클라이언트가 서버로 안전하게 메시지를 발송하는 것을 쉽게 해줌

 - 단점 : 공개키 암호화 방식의 알고리즘은 계산리 느린 경향이 있음

 

디지털 서명

 - 전자 서명을 통해서 누가 메시지를 썼는지 알려주고 메시지가 위조되지 않았음을 증명할 수 있다. 전자서명은 SSL 인증 

   서에서 서비스를 보증하는 방법으로 활용됨

 - 공개키와 비공개키는 안전한 데이터 전달 이외에도, 데이터 제공자의 신원을 보장하는데 사용할 수 있음

 - 비공개키의 소유자가 비공개 키를 이용해서 정보를 암호화 → 공개키와 함께 암호화된 정보를 전송 → 수신자는 공개키

   로 암호화된 정보를 복호화

 - 암호화된 데이터를 공개키를 가지고 복호화 할 수 있다는 것은 그 데이터가 공개키와 쌍을 이루는 비공개 키에 의해서

   암호화 되었다는 것을 의미

 - 즉 공개키가 데이터를 제공한 사람의 신원을 보장해주게 되는 것이다. 이러한 것을 전자 서명이라고 부름

 

CA(Certificate Authority)

 - 디지털 인증서를 제공하는 공인된 기업 (Certificate Authority 혹은 Root Certificate)

SSL 인증서의 서비스 보증방법 및 동작방법

인증서 내용

 - 인증서의 내용은 CA의 비공개 키를 이용해서 암호화 되어 웹 브라우저에게 제공됨

   1. 서비스 정보(인증서 발급자, CA의 디지털 서명, 서비스 도메인)

   2. 서버 측 공개키

 

SSL 인증서의 서비스 보증 방법

 - 웹 브라우저가 서버에 접속하면 서버는 제일 먼저 인증서를 제공

 - 브라우저는 인증서를 발급한 CA가 자신이 갖고 있는 CA 리스트에 있는지 확인

 - 리스트에 있다면 해당 CA의 공개키를 이용해서 인증서를 복호화

 - 인증서를 복호화 할 수 있다는 것은 이 인증서가 CA의 비공개키에 의해서 암호화 된 것을 의미한다. 즉, 데이터를 제공한

   사람의 신원을 보장해주게 되는 것

 

SSL 동작방법

 - 공개키 암호 방식은 알고리즘 계산 방식이 느린 경향이 있음

 - SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키 암호화 방식을 혼합하여 사용

 - 안전한 의사소통 채널을 수립할 때는 공개키 암호화를 사용하고, 이렇게 만들어진 안전한 채널을 통해서 임시의 무작위 

   대칭키를 생성 및 교환한다. 해당 대칭키는 나머지 데이터 암호화에 활용한다.

    1. 실제 데이터 암호화 방식 : 대칭키

    2. 상기 대칭키를 서로 공유하기 위한 암호화 방식 : 공개키

 

SSL 통신과정

 - 컴퓨터와 컴퓨터가 네트워크를 통해서 통신할 때 핸드쉐이크 → 세션 → 세션 종료의 과정을 거침

 - 암호화된 HTTP 메시지를 교환하기 전에 클라이언트와 서버는 SSL 핸드쉐이크를 진행

 - 핸드쉐이크의 목적은 아래와 같음

    1. 프로토콜 버전 번호 교환

    2. 양쪽이 알고 있는 pre master secret 키 생성 및 교환

    3. 양쪽의 신원 인증

    4. 채널을 암호화 하기 위한 임시 세션 키 생성

 - SSL 통신 과정을 간단하게 도식화 하면 아래와 같음

 

 

 

[참고]

 - https://wayhome25.github.io/cs/2018/03/11/ssl-https/

 - https://mangkyu.tistory.com/98

반응형

'HTTP HTTPS' 카테고리의 다른 글

[HTTP] wget/curl 명령어 정리  (1) 2024.03.12
[HTTP] Stateful/Stateless 차이점  (0) 2024.03.06
KeepAlive 정리  (0) 2023.02.02
SSL 인증서 정리  (0) 2022.12.10
[HTTP] HTTP 응답 상태 코드 정리  (0) 2022.01.18